export default async function addEmptyDataPoints()

in eng/scripts/inventory-dashboard/src/addEmptyDataPoints.ts [25:74]


export default async function addEmptyDataPoints(packages: PackageList, apiSpecsDirPath: string): Promise<PackageList> {
  // Add missing sdks when sdks for other languages are found
  const additionalPackages: PackageList = {};
  for (let key in packages) {
    // Skip if packages doesn't have a track 2 version
    if (JSON.stringify(packages[key].Track2) === JSON.stringify(TrackSpecificsDefault)) {
      continue;
    }
    // Skip is package is a core package
    if (packages[key].Service === "Core") continue;
    // Don't create missing empty packages if package is from a non-tier 1 language.
    if (!Tier1Languages.includes(packages[key].Language) || packages[key].Language === "Go") continue;
    // Don't create missing empty packages if package is still in beta
    if (packages[key].Track2.ColorCode === 3) continue;
    // Don't create missing empty packages if track 2 object is just for a package reference
    if (packages[key].Track2.ColorCode === 4) continue;
    // Don't create missing empty packages if package is a RLC JS package. ex: @azure-rest/...
    if (packages[key].Track2.Package.startsWith('@azure-rest/')) continue;
    // Loop through languages adding empty packages
    for (let language of Tier1Languages) {
      const { Service, SDK, Plane, ServiceId } = packages[key];
      const testKey = ((Service || " - ") +
        (SDK || " -- ") +
        (Plane || " --- ") +
        (language || " ---- ")).toLowerCase();
      // Add empty package if ones doesn't already exist for selected language
      //log.atn(`Result of Key: ${testKey} - check on packages: ${JSON.stringify(packages[testKey])}`);
      if (packages[testKey] === undefined && additionalPackages[testKey] === undefined) {
        additionalPackages[testKey] = {
          Service,
          ServiceId,
          SDK,
          Plane,
          Language: language,
          Track1: TrackSpecificsDefault,
          Track2: { ...TrackSpecificsDefault, Package: `Missing: Created from existing package: ${packages[key].Track2.Package}` },
          PercentComplete: undefined,
          LatestRelease: ""
        };
        log.info(`Adding Empty Package from Existing Library.\n\tEmpty Package: ${JSON.stringify(additionalPackages[testKey])}\n\tExisting Package: ${JSON.stringify(packages[key])}`);
      }
    }
  }
  // add new empty packages to package list and return
  packages = { ...packages, ...additionalPackages };
  // add empty packages to package list if service API exists
  packages = { ...packages, ...(await getServicesFromSpecRepo(packages, apiSpecsDirPath)) };

  return packages;
}