Fetch all versions at once

This commit is contained in:
Nishtha Gupta
2022-12-29 14:43:48 +05:30
parent 7f4037254e
commit e95cd87648
3 changed files with 91 additions and 60 deletions
+68 -54
View File
@@ -17,14 +17,15 @@ module.exports = JSON.parse('{"name":"@octokit/rest","version":"16.43.2","publis
Object.defineProperty(exports, "__esModule", ({ value: true })); Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.deleteVersions = exports.finalIds = exports.getVersionIds = void 0; exports.deleteVersions = exports.finalIds = exports.getVersionIds = void 0;
const rxjs_1 = __nccwpck_require__(5805); const rxjs_1 = __nccwpck_require__(5805);
const version_1 = __nccwpck_require__(4428);
const operators_1 = __nccwpck_require__(7801); const operators_1 = __nccwpck_require__(7801);
const RATE_LIMIT = 99; const version_1 = __nccwpck_require__(4428);
const operators_2 = __nccwpck_require__(7801);
const RATE_LIMIT = 1;
let totalCount = 0; let totalCount = 0;
function getVersionIds(owner, packageName, packageType, numVersions, page, token) { function getVersionIds(owner, packageName, packageType, numVersions, page, token) {
return version_1.getOldestVersions(owner, packageName, packageType, numVersions, page, token).pipe(operators_1.expand(value => value.paginate return version_1.getOldestVersions(owner, packageName, packageType, numVersions, page, token).pipe(operators_2.expand(value => value.paginate
? version_1.getOldestVersions(owner, packageName, packageType, numVersions, value.page, token) ? version_1.getOldestVersions(owner, packageName, packageType, numVersions, value.page, token)
: rxjs_1.EMPTY), operators_1.tap(value => (totalCount = totalCount === 0 ? value.totalCount : totalCount)), operators_1.map(value => value.versions)); : rxjs_1.EMPTY), operators_2.tap(value => (totalCount = totalCount + value.totalCount)), operators_1.reduce((acc, value) => acc.concat(value.versions), []));
} }
exports.getVersionIds = getVersionIds; exports.getVersionIds = getVersionIds;
function finalIds(input) { function finalIds(input) {
@@ -41,9 +42,15 @@ function finalIds(input) {
: RATE_LIMIT; : RATE_LIMIT;
return getVersionIds(input.owner, input.packageName, input.packageType, RATE_LIMIT, 1, input.token).pipe( return getVersionIds(input.owner, input.packageName, input.packageType, RATE_LIMIT, 1, input.token).pipe(
// This code block executes on batches of 100 versions starting from oldest // This code block executes on batches of 100 versions starting from oldest
operators_1.map(value => { operators_2.map(value => {
console.log('If block'); console.log('If block');
console.log(`value: ${JSON.stringify(value)}`); console.log(`value: ${JSON.stringify(value)}`);
// we need to delete oldest versions first
value.sort((a, b) => {
return (new Date(a.created_at).getTime() -
new Date(b.created_at).getTime());
});
console.log(`sorted value: ${JSON.stringify(value)}`);
/* /*
Here first filter out the versions that are to be ignored. Here first filter out the versions that are to be ignored.
Then update input.numOldeVersionsToDelete to the no of versions deleted from the next 100 versions batch. Then update input.numOldeVersionsToDelete to the no of versions deleted from the next 100 versions batch.
@@ -61,9 +68,15 @@ function finalIds(input) {
// This code block is when min-versions-to-keep is specified. // This code block is when min-versions-to-keep is specified.
return getVersionIds(input.owner, input.packageName, input.packageType, RATE_LIMIT, 1, input.token).pipe( return getVersionIds(input.owner, input.packageName, input.packageType, RATE_LIMIT, 1, input.token).pipe(
// This code block executes on batches of 100 versions starting from oldest // This code block executes on batches of 100 versions starting from oldest
operators_1.map(value => { operators_2.map(value => {
console.log('Else block'); console.log('Else block');
console.log(`value: ${JSON.stringify(value)}`); console.log(`value: ${JSON.stringify(value)}`);
// we need to delete oldest versions first
value.sort((a, b) => {
return (new Date(a.created_at).getTime() -
new Date(b.created_at).getTime());
});
console.log(`sorted value: ${JSON.stringify(value)}`);
/* /*
Here totalCount is the total no of versions in the package. Here totalCount is the total no of versions in the package.
First we update totalCount by removing no of ignored versions from it and also filter them out from value. First we update totalCount by removing no of ignored versions from it and also filter them out from value.
@@ -116,7 +129,7 @@ function deleteVersions(input) {
return rxjs_1.of(true); return rxjs_1.of(true);
} }
const result = finalIds(input); const result = finalIds(input);
return result.pipe(operators_1.concatMap(ids => version_1.deletePackageVersions(ids, input.owner, input.packageName, input.packageType, input.token))); return result.pipe(operators_2.concatMap(ids => version_1.deletePackageVersions(ids, input.owner, input.packageName, input.packageType, input.token)));
} }
exports.deleteVersions = deleteVersions; exports.deleteVersions = deleteVersions;
@@ -310,7 +323,8 @@ function getOldestVersions(owner, packageName, packageType, numVersions, page, t
versions: response.data.map((version) => { versions: response.data.map((version) => {
return { return {
id: version.id, id: version.id,
version: version.name version: version.name,
created_at: version.created_at
}; };
}), }),
page: page + 1, page: page + 1,
@@ -24731,51 +24745,6 @@ function noop() {
module.exports = uniq; module.exports = uniq;
/***/ }),
/***/ 7493:
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
"use strict";
const os = __nccwpck_require__(2087);
const nameMap = new Map([
[21, ['Monterey', '12']],
[20, ['Big Sur', '11']],
[19, ['Catalina', '10.15']],
[18, ['Mojave', '10.14']],
[17, ['High Sierra', '10.13']],
[16, ['Sierra', '10.12']],
[15, ['El Capitan', '10.11']],
[14, ['Yosemite', '10.10']],
[13, ['Mavericks', '10.9']],
[12, ['Mountain Lion', '10.8']],
[11, ['Lion', '10.7']],
[10, ['Snow Leopard', '10.6']],
[9, ['Leopard', '10.5']],
[8, ['Tiger', '10.4']],
[7, ['Panther', '10.3']],
[6, ['Jaguar', '10.2']],
[5, ['Puma', '10.1']]
]);
const macosRelease = release => {
release = Number((release || os.release()).split('.')[0]);
const [name, version] = nameMap.get(release);
return {
name,
version
};
};
module.exports = macosRelease;
// TODO: remove this in the next major version
module.exports.default = macosRelease;
/***/ }), /***/ }),
/***/ 8560: /***/ 8560:
@@ -26851,7 +26820,7 @@ function onceStrict (fn) {
"use strict"; "use strict";
const os = __nccwpck_require__(2087); const os = __nccwpck_require__(2087);
const macosRelease = __nccwpck_require__(7493); const macosRelease = __nccwpck_require__(9787);
const winRelease = __nccwpck_require__(3515); const winRelease = __nccwpck_require__(3515);
const osName = (platform, release) => { const osName = (platform, release) => {
@@ -26897,6 +26866,51 @@ const osName = (platform, release) => {
module.exports = osName; module.exports = osName;
/***/ }),
/***/ 9787:
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
"use strict";
const os = __nccwpck_require__(2087);
const nameMap = new Map([
[21, ['Monterey', '12']],
[20, ['Big Sur', '11']],
[19, ['Catalina', '10.15']],
[18, ['Mojave', '10.14']],
[17, ['High Sierra', '10.13']],
[16, ['Sierra', '10.12']],
[15, ['El Capitan', '10.11']],
[14, ['Yosemite', '10.10']],
[13, ['Mavericks', '10.9']],
[12, ['Mountain Lion', '10.8']],
[11, ['Lion', '10.7']],
[10, ['Snow Leopard', '10.6']],
[9, ['Leopard', '10.5']],
[8, ['Tiger', '10.4']],
[7, ['Panther', '10.3']],
[6, ['Jaguar', '10.2']],
[5, ['Puma', '10.1']]
]);
const macosRelease = release => {
release = Number((release || os.release()).split('.')[0]);
const [name, version] = nameMap.get(release);
return {
name,
version
};
};
module.exports = macosRelease;
// TODO: remove this in the next major version
module.exports.default = macosRelease;
/***/ }), /***/ }),
/***/ 1330: /***/ 1330:
+20 -5
View File
@@ -2,6 +2,7 @@
/* eslint-disable @typescript-eslint/no-unused-vars */ /* eslint-disable @typescript-eslint/no-unused-vars */
import {Input} from './input' import {Input} from './input'
import {EMPTY, Observable, of, throwError} from 'rxjs' import {EMPTY, Observable, of, throwError} from 'rxjs'
import {reduce} from 'rxjs/operators'
import { import {
deletePackageVersions, deletePackageVersions,
getOldestVersions, getOldestVersions,
@@ -9,7 +10,7 @@ import {
} from './version' } from './version'
import {concatMap, map, expand, tap} from 'rxjs/operators' import {concatMap, map, expand, tap} from 'rxjs/operators'
const RATE_LIMIT = 99 const RATE_LIMIT = 1
let totalCount = 0 let totalCount = 0
export function getVersionIds( export function getVersionIds(
@@ -40,10 +41,8 @@ export function getVersionIds(
) )
: EMPTY : EMPTY
), ),
tap( tap(value => (totalCount = totalCount + value.totalCount)),
value => (totalCount = totalCount === 0 ? value.totalCount : totalCount) reduce((acc, value) => acc.concat(value.versions), [] as RestVersionInfo[])
),
map(value => value.versions)
) )
} }
@@ -71,6 +70,14 @@ export function finalIds(input: Input): Observable<string[]> {
map(value => { map(value => {
console.log('If block') console.log('If block')
console.log(`value: ${JSON.stringify(value)}`) console.log(`value: ${JSON.stringify(value)}`)
// we need to delete oldest versions first
value.sort((a, b) => {
return (
new Date(a.created_at).getTime() -
new Date(b.created_at).getTime()
)
})
console.log(`sorted value: ${JSON.stringify(value)}`)
/* /*
Here first filter out the versions that are to be ignored. Here first filter out the versions that are to be ignored.
Then update input.numOldeVersionsToDelete to the no of versions deleted from the next 100 versions batch. Then update input.numOldeVersionsToDelete to the no of versions deleted from the next 100 versions batch.
@@ -98,6 +105,14 @@ export function finalIds(input: Input): Observable<string[]> {
map(value => { map(value => {
console.log('Else block') console.log('Else block')
console.log(`value: ${JSON.stringify(value)}`) console.log(`value: ${JSON.stringify(value)}`)
// we need to delete oldest versions first
value.sort((a, b) => {
return (
new Date(a.created_at).getTime() -
new Date(b.created_at).getTime()
)
})
console.log(`sorted value: ${JSON.stringify(value)}`)
/* /*
Here totalCount is the total no of versions in the package. Here totalCount is the total no of versions in the package.
First we update totalCount by removing no of ignored versions from it and also filter them out from value. First we update totalCount by removing no of ignored versions from it and also filter them out from value.
+3 -1
View File
@@ -7,6 +7,7 @@ import {RestEndpointMethodTypes} from '@octokit/plugin-rest-endpoint-methods/dis
export interface RestVersionInfo { export interface RestVersionInfo {
id: number id: number
version: string version: string
created_at: string
} }
export interface RestQueryInfo { export interface RestQueryInfo {
@@ -54,7 +55,8 @@ export function getOldestVersions(
versions: response.data.map((version: GetVersionsResponse[0]) => { versions: response.data.map((version: GetVersionsResponse[0]) => {
return { return {
id: version.id, id: version.id,
version: version.name version: version.name,
created_at: version.created_at
} }
}), }),
page: page + 1, page: page + 1,