core/factories/seed.factory.ts
core/factories/seed.factory.ts is a file in GovLab Docs. 21 lines of code and 5 definitions.
import type { EntrySeed, PackageJsonLike } from "#types/code.types";
import { MODULE_ID } from "#configuration/constants/graph.constants";
import { barrelExports } from "#core/parsers/export.parser";
import { basename } from "node:path";
import { resolveSourceBarrels } from "#core/resolvers/barrel.resolver";
const seedKey = function seedKey(seed: EntrySeed): string {
return `${seed.axis} ${seed.label}`;
};
const seedsForBarrel = function seedsForBarrel(axis: string, barrel: string, appLabel: string): EntrySeed[] {
const exported = barrelExports(barrel);
if (exported.length === 0) {
return [{ axis, barrel, label: appLabel, name: MODULE_ID }];
}
return exported.map(({ name, label }) => ({ axis, barrel, label, name }));
};
export const entrySeeds = function entrySeeds(moduleDir: string, pkg: PackageJsonLike): EntrySeed[] {
const appLabel = basename(moduleDir);
return resolveSourceBarrels(moduleDir, pkg)
.flatMap(({ axis, barrel }) => seedsForBarrel(axis, barrel, appLabel))
.toSorted((left, right) => seedKey(left).localeCompare(seedKey(right)));
};