in src/backend/inventory/canary.lambda.ts [189:223]
await metricScope((metrics) => async (language: DocumentationLanguage, data: PerLanguageData) => {
console.log( '');
console.log('##################################################');
console.log(`### Start of data for ${language}`);
metrics.setDimensions({ [LANGUAGE_DIMENSION]: language.toString() });
for (const forStatus of [
PerLanguageStatus.SUPPORTED,
PerLanguageStatus.UNSUPPORTED,
PerLanguageStatus.MISSING,
PerLanguageStatus.CORRUPT_ASSEMBLY,
]) {
for (const [key, statuses] of Object.entries(data)) {
let filtered = Array.from(statuses.entries()).filter(([, status]) => forStatus === status);
let metricName = METRIC_NAME_BY_STATUS_AND_GRAIN[forStatus as PerLanguageStatus][key as keyof PerLanguageData];
if ((forStatus === PerLanguageStatus.MISSING && metricName === MetricName.PER_LANGUAGE_MISSING_VERSIONS)
|| (forStatus === PerLanguageStatus.CORRUPT_ASSEMBLY && metricName === MetricName.PER_LANGUAGE_CORRUPT_ASSEMBLY_VERSIONS)) {
// generate reports for missing/corrupt only for package versions granularity
const reportKey = forStatus === PerLanguageStatus.MISSING ?
constants.missingDocumentationReport(language) :
constants.corruptAssemblyReport(language);
createReport(reportKey, filtered.map(([name]) => name).sort());
}
console.log(`${forStatus} ${key} for ${language}: ${filtered.length} entries`);
metrics.putMetric(metricName, filtered.length, Unit.Count);
}
}
console.log(`### End of data for ${language}`);
console.log('##################################################');
console.log('');
})(...entry);