First commit with delete version API

This commit is contained in:
Nishtha Gupta
2022-12-28 16:33:42 +05:30
parent 280935cb1a
commit 92bd8a3cd0
6 changed files with 11671 additions and 132 deletions
+11582 -110
View File
File diff suppressed because it is too large Load Diff
+1
View File
@@ -27,6 +27,7 @@
"dependencies": { "dependencies": {
"@actions/core": "^1.9.1", "@actions/core": "^1.9.1",
"@actions/github": "^2.1.1", "@actions/github": "^2.1.1",
"@octokit/rest": "^19.0.5",
"rxjs": "^6.5.4" "rxjs": "^6.5.4"
}, },
"devDependencies": { "devDependencies": {
+1 -1
View File
@@ -146,5 +146,5 @@ export function deleteVersions(input: Input): Observable<boolean> {
const result = finalIds(input) const result = finalIds(input)
return result.pipe(concatMap(ids => deletePackageVersions(ids, input.token))) return result.pipe(concatMap(ids => deletePackageVersions(ids, input.owner, input.packageName, input.packageType, input.token)))
} }
+1 -1
View File
@@ -71,7 +71,7 @@ export class Input {
return false return false
} }
if (this.packageType === '') { if (this.packageType === '' || this.packageName === '') {
return false return false
} }
+22
View File
@@ -0,0 +1,22 @@
import * as github from '@actions/github'
import {Octokit} from '@octokit/rest'
// Centralize all Octokit references by re-exporting
export {Octokit} from '@octokit/rest'
export type OctokitOptions = {
baseUrl?: string
userAgent?: string
}
export function getOctokit(authToken: string, opts: OctokitOptions) {
const options: Octokit.Options = {
baseUrl: "https://api.github.com"
}
if (opts.userAgent) {
options.userAgent = opts.userAgent
}
return new github.GitHub(authToken, options)
}
+64 -20
View File
@@ -2,49 +2,93 @@
import {from, Observable, merge, throwError, of} from 'rxjs' import {from, Observable, merge, throwError, of} from 'rxjs'
import {catchError, map, tap} from 'rxjs/operators' import {catchError, map, tap} from 'rxjs/operators'
import {graphql} from './graphql' import {graphql} from './graphql'
import {Octokit} from '@octokit/rest'
let deleted = 0 let deleted = 0
export interface DeletePackageVersionMutationResponse { // export interface DeletePackageVersionAPIResponse {
deletePackageVersion: { // deletePackageVersion: {
success: boolean // success: boolean
} // }
} // }
const mutation = ` // const mutation = `
mutation deletePackageVersion($packageVersionId: ID!) { // mutation deletePackageVersion($packageVersionId: ID!) {
deletePackageVersion(input: {packageVersionId: $packageVersionId}) { // deletePackageVersion(input: {packageVersionId: $packageVersionId}) {
success // success
} // }
}` // }`
export function deletePackageVersion( export function deletePackageVersion(
packageVersionId: string, packageVersionId: string,
owner: string,
packageName: string,
packageType: string,
token: string token: string
): Observable<boolean> { ): Observable<boolean> {
const octokit = new Octokit({
auth: token,
});
let package_version_id = +packageVersionId
// const response = octokit.rest.packages.deletePackageVersionForUser({
// packageType,
// packageName,
// owner,
// packageVersionId,
// });
// if (response.status != 200) {
// throw new Error(
// `Unexpected response from GitHub API. Status: ${response.status}, Data: ${response.data}`
// )
// }
deleted += 1 deleted += 1
// return from(
// graphql(token, mutation, {
// packageVersionId,
// headers: {
// Accept: 'application/vnd.github.package-deletes-preview+json'
// }
// }) as Promise<DeletePackageVersionMutationResponse>
// ).pipe(
// catchError(err => {
// const msg = 'delete version mutation failed.'
// return throwError(
// err.errors && err.errors.length > 0
// ? `${msg} ${err.errors[0].message}`
// : `${msg} ${err.message} \n${deleted - 1} versions deleted till now.`
// )
// }),
// map(response => response.deletePackageVersion.success)
// )
return from( return from(
graphql(token, mutation, { octokit.rest.packages.deletePackageVersionForUser({
packageVersionId, package_type: "npm",
headers: { package_name: packageName,
Accept: 'application/vnd.github.package-deletes-preview+json' username: owner,
} package_version_id: package_version_id,
}) as Promise<DeletePackageVersionMutationResponse> })
).pipe( ).pipe(
catchError(err => { catchError(err => {
const msg = 'delete version mutation failed.' const msg = 'delete version API failed.'
return throwError( return throwError(
err.errors && err.errors.length > 0 err.errors && err.errors.length > 0
? `${msg} ${err.errors[0].message}` ? `${msg} ${err.errors[0].message}`
: `${msg} ${err.message} \n${deleted - 1} versions deleted till now.` : `${msg} ${err.message} \n${deleted - 1} versions deleted till now.`
) )
}), }),
map(response => response.deletePackageVersion.success) map(response => response.status === 204)
) )
} }
export function deletePackageVersions( export function deletePackageVersions(
packageVersionIds: string[], packageVersionIds: string[],
owner: string,
packageName: string,
packageType: string,
token: string token: string
): Observable<boolean> { ): Observable<boolean> {
if (packageVersionIds.length === 0) { if (packageVersionIds.length === 0) {
@@ -52,7 +96,7 @@ export function deletePackageVersions(
} }
const deletes = packageVersionIds.map(id => const deletes = packageVersionIds.map(id =>
deletePackageVersion(id, token).pipe( deletePackageVersion(id, owner, packageName, packageType, token).pipe(
tap(result => { tap(result => {
if (!result) { if (!result) {
console.log(`version with id: ${id}, not deleted`) console.log(`version with id: ${id}, not deleted`)