function doRecordPerLanguage()

in src/backend/inventory/canary.lambda.ts [332:383]


function doRecordPerLanguage(
  perLanguage: Map<DocumentationLanguage, PerLanguageData>,
  language: DocumentationLanguage,
  status: PerLanguageStatus,
  pkgName: string,
  pkgMajor: string,
  pkgVersion: string,
  submodule?: string,
) {
  if (!perLanguage.has(language)) {
    perLanguage.set(language, {
      [Grain.PACKAGE_MAJOR_VERSIONS]: new Map(),
      [Grain.PACKAGES]: new Map(),
      [Grain.PACKAGE_VERSION_SUBMODULES]: new Map(),
      [Grain.PACKAGE_VERSIONS]: new Map(),
    });
  }
  const data = perLanguage.get(language)!;

  // If there is a submodule, only update the submodule domain.
  const outputDomains: readonly [Map<string, PerLanguageStatus>, string][] =
    submodule
      ? [
        [data[Grain.PACKAGE_VERSION_SUBMODULES], `${pkgVersion}.${submodule}`],
      ]
      : [
        [data[Grain.PACKAGE_MAJOR_VERSIONS], pkgMajor],
        [data[Grain.PACKAGE_VERSIONS], pkgVersion],
        [data[Grain.PACKAGES], pkgName],
      ];
  for (const [map, name] of outputDomains) {
    switch (status) {
      case PerLanguageStatus.MISSING:
        // If we already have a status, don't override it with "MISSING".
        if (!map.has(name)) {
          map.set(name, status);
        }
        break;
      case PerLanguageStatus.SUPPORTED:
        // If thr package is "supported", this always "wins"
        map.set(name, status);
        break;
      case PerLanguageStatus.UNSUPPORTED:
      case PerLanguageStatus.CORRUPT_ASSEMBLY:
        // If we already have a status, only override with if it was "MISSING".
        if (!map.has(name) || map.get(name) === PerLanguageStatus.MISSING) {
          map.set(name, status);
        }
        break;
    }
  }
}