in src/commands/repair-package-data.ts [65:106]
for await (const prefix of packageVersionPrefixes) {
const status = await this.processPackageVersion(S3, bucketName, prefix);
if (!status.assemblyKey || !status.metadataKey || !status.tarballKey) {
console.error(
`${chalk.blue.bold(status.name)}@${chalk.blue.bold(status.version)}`,
chalk.red('has missing base objects'),
' - ',
[
`assembly: ${status.assemblyKey ? chalk.bgGreen('PRESENT') : chalk.bgRed('MISSING')}`,
`metadata: ${status.metadataKey ? chalk.bgGreen('PRESENT') : chalk.bgRed('MISSING')}`,
`tarball: ${status.tarballKey ? chalk.bgGreen('PRESENT') : chalk.bgRed('MISSING')}`,
].join(', '),
);
continue;
}
const missingLanguages = new Set<string>();
for (const language of languages) {
if (status.docs.get(language) == null) {
missingLanguages.add(language);
}
for (const subStatus of status.submodules.values()) {
if (subStatus.get(language) == null) {
missingLanguages.add(language);
}
}
}
if (missingLanguages.size > 0) {
console.log(`${chalk.blue.bold(status.name)}@${chalk.blue.bold(status.version)} is missing documents for ${Array.from(missingLanguages).map((l) => chalk.green(l)).join(', ')}`);
broken.push([status, Array.from(missingLanguages)]);
}
if (stateMachine && broken.length >= fixBatchSize) {
if (runningMachines.size >= highWaterMark) {
await this.waitForSettlements(runningMachines, lowWaterMark);
}
const { executionArns } = await this.repairPackageVersions(SFN, bucketName, stateMachine, broken, ns);
for (const arn of executionArns.values()) {
runningMachines.set(arn, this.awaitStateMachineEnd(SFN, arn));
}
broken.splice(0, broken.length);
}
}