fix: Run updateNpm.js and updatePublint.js in chunked pages (#536)

* fix: Run `updateNpm` and `updatePublint` in chunked pages

* Object shorthand
This commit is contained in:
Lachlan Collins
2023-12-21 10:42:31 +11:00
committed by GitHub
parent 9d6c7c55dc
commit 615adbaea6
5 changed files with 103 additions and 74 deletions

View File

@@ -10,8 +10,7 @@ import npm from '../src/lib/data/npm.json' assert { type: 'json' };
import { publint } from 'publint';
import { untar } from './untar.js';
import { createTarballVfs } from './tarball.js';
const dataWithoutVersions = packagesSchema.parse(packages);
import { chunk } from './chunk.js';
/** @param {import('zod').infer<typeof packagesSchema>} input */
const injectVersions = (input) => {
@@ -26,16 +25,27 @@ const injectVersions = (input) => {
return output;
};
const dataWithVersions = injectVersions(dataWithoutVersions);
const data = injectVersions(packagesSchema.parse(packages));
const output = await Promise.all(
dataWithVersions.map((pkg) => processPackage(pkg).catch((error) => console.log(error.message)))
).then((values) => {
return values.reduce(
(result, value) => Object.assign(result, value),
/** @type {Record<string, any>} */ ({})
);
});
console.log('Found ' + data.length + ' packages');
const pagedData = chunk(data, 100);
const lines = [];
for (let index = 0; index < pagedData.length; index++) {
const page = pagedData[index];
console.log('Running for page ' + (index + 1) + '/' + pagedData.length);
await Promise.all(
page.map((pkg) => processPackage(pkg).catch((error) => console.log(error.message)))
).then((values) => {
lines.push(...values);
});
}
const output = lines.reduce(
(result, value) => Object.assign(result, value),
/** @type {Record<string, any>} */ ({})
);
writeFileSync('src/lib/data/publint.json', JSON.stringify(output));