bypass rate limit
This commit is contained in:
+18
-10
@@ -3,7 +3,7 @@ import {EMPTY, Observable, of, throwError} from 'rxjs'
|
||||
import {deletePackageVersions, getOldestVersions, VersionInfo} from './version'
|
||||
import {concatMap, map, expand, tap} from 'rxjs/operators'
|
||||
|
||||
const RATE_LIMIT = 99
|
||||
//const RATE_LIMIT = 99
|
||||
let totalCount: number
|
||||
|
||||
export function getVersionIds(
|
||||
@@ -45,10 +45,14 @@ export function finalIds(input: Input): Observable<string[]> {
|
||||
}
|
||||
if (input.hasOldestVersionQueryInfo()) {
|
||||
if (input.minVersionsToKeep < 0) {
|
||||
/*
|
||||
input.numOldVersionsToDelete =
|
||||
input.numOldVersionsToDelete < RATE_LIMIT
|
||||
? input.numOldVersionsToDelete
|
||||
: RATE_LIMIT
|
||||
: RATE_LIMIT*/
|
||||
console.log(
|
||||
`input.numOldVersionsToDelete: ${input.numOldVersionsToDelete}`
|
||||
)
|
||||
return getVersionIds(
|
||||
input.owner,
|
||||
input.repo,
|
||||
@@ -58,18 +62,16 @@ export function finalIds(input: Input): Observable<string[]> {
|
||||
input.token
|
||||
).pipe(
|
||||
map(value => {
|
||||
value = value.filter(info => !input.ignoreVersions.test(info.version))
|
||||
const temp = input.numOldVersionsToDelete
|
||||
input.numOldVersionsToDelete =
|
||||
input.numOldVersionsToDelete - value.length <= 0
|
||||
? 0
|
||||
: input.numOldVersionsToDelete - value.length
|
||||
input.numDeleted += value.filter(
|
||||
info => !input.ignoreVersions.test(info.version)
|
||||
).length
|
||||
return value
|
||||
.filter(info => !input.ignoreVersions.test(info.version))
|
||||
.map(info => info.id)
|
||||
.slice(0, temp)
|
||||
console.log(
|
||||
`temp: ${temp}, numOldeVersions: ${input.numOldVersionsToDelete}`
|
||||
)
|
||||
return value.map(info => info.id).slice(0, temp)
|
||||
})
|
||||
)
|
||||
} else {
|
||||
@@ -77,7 +79,7 @@ export function finalIds(input: Input): Observable<string[]> {
|
||||
input.owner,
|
||||
input.repo,
|
||||
input.packageName,
|
||||
RATE_LIMIT,
|
||||
100,
|
||||
'',
|
||||
input.token
|
||||
).pipe(
|
||||
@@ -88,6 +90,7 @@ export function finalIds(input: Input): Observable<string[]> {
|
||||
value = value.filter(info => !input.ignoreVersions.test(info.version))
|
||||
let toDelete = totalCount - input.minVersionsToKeep - input.numDeleted
|
||||
toDelete = toDelete > value.length ? value.length : toDelete
|
||||
/*
|
||||
if (toDelete > 0 && input.numDeleted < RATE_LIMIT) {
|
||||
// using input.numDeleted to keep track of deleted and remaining packages
|
||||
if (input.numDeleted + toDelete > 99) {
|
||||
@@ -97,6 +100,11 @@ export function finalIds(input: Input): Observable<string[]> {
|
||||
input.numDeleted = input.numDeleted + toDelete
|
||||
}
|
||||
return value.map(info => info.id).slice(0, toDelete)
|
||||
} else return []*/
|
||||
|
||||
if (toDelete > 0) {
|
||||
input.numDeleted += toDelete
|
||||
return value.map(info => info.id).slice(0, toDelete)
|
||||
} else return []
|
||||
})
|
||||
)
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
import {from, Observable, merge, throwError, of} from 'rxjs'
|
||||
import {catchError, map, tap} from 'rxjs/operators'
|
||||
import {catchError, delay, map, tap} from 'rxjs/operators'
|
||||
import {GraphQlQueryResponse} from '@octokit/graphql/dist-types/types'
|
||||
import {graphql} from './graphql'
|
||||
|
||||
let deleted = 0
|
||||
|
||||
export interface DeletePackageVersionMutationResponse {
|
||||
deletePackageVersion: {
|
||||
success: boolean
|
||||
@@ -20,6 +22,11 @@ export function deletePackageVersion(
|
||||
packageVersionId: string,
|
||||
token: string
|
||||
): Observable<boolean> {
|
||||
if (deleted === 99) {
|
||||
console.log(`reaching rate limit`)
|
||||
delay(5000)
|
||||
}
|
||||
deleted += 1
|
||||
return from(
|
||||
graphql(token, mutation, {
|
||||
packageVersionId,
|
||||
@@ -51,6 +58,7 @@ export function deletePackageVersions(
|
||||
const deletes = packageVersionIds.map(id =>
|
||||
deletePackageVersion(id, token).pipe(
|
||||
tap(result => {
|
||||
console.log(`versions Deleted 0 : ${deleted}`)
|
||||
if (result) {
|
||||
console.log(`version with id: ${id}, deleted`)
|
||||
} else {
|
||||
|
||||
@@ -101,7 +101,7 @@ export function queryForOldestVersions(
|
||||
owner,
|
||||
repo,
|
||||
package: packageName,
|
||||
last: numVersions,
|
||||
last: numVersions > 100 ? 100 : numVersions,
|
||||
headers: {
|
||||
Accept: 'application/vnd.github.packages-preview+json'
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user