import generatedArtifact from '../../runtime/override-artifacts.json'; import generatedRuntimeMap from '../../runtime/token-to-css-var.json'; import type { DisplayFontCatalog, Platform } from '../types'; import type { InputDefinition, ManagedTargetDefinition, OverrideArtifactRevision, OverrideCatalogQueries, OverrideRuntimeData, PrimitiveValueArtifact, RecipeDefinition, RuleDefinition, RuntimeMap, SelectionDefinition, SourceSetDefinition, TargetMetadataCatalog, TokenExpressionData, TokenPath, } from './contracts'; interface GeneratedCatalogData { readonly inputs: readonly InputDefinition[]; readonly sourceSets: readonly SourceSetDefinition[]; readonly selections: readonly SelectionDefinition[]; readonly recipes: readonly RecipeDefinition[]; readonly managedTargets: readonly ManagedTargetDefinition[]; } export interface RuntimeFontFamily { readonly faces: Readonly>; readonly byPlatform: Readonly>>>; } export interface RuntimeFontCatalog { readonly families: Readonly>; } interface GeneratedOverrideArtifact { readonly expressions: TokenExpressionData; readonly primitives: PrimitiveValueArtifact; readonly targets: TargetMetadataCatalog; readonly catalogs: GeneratedCatalogData; readonly rules: readonly RuleDefinition[]; readonly fonts: RuntimeFontCatalog; readonly displayFontCatalog: DisplayFontCatalog; readonly expansionAlgorithmVersion: '1.0.0'; readonly revision: OverrideArtifactRevision; } const artifact = generatedArtifact as unknown as GeneratedOverrideArtifact; function byId(entries: readonly T[]): ReadonlyMap { return new Map(entries.map((entry) => [entry.id, entry])); } const inputs = byId(artifact.catalogs.inputs); const sourceSets = byId(artifact.catalogs.sourceSets); const selections = byId(artifact.catalogs.selections); const recipes = byId(artifact.catalogs.recipes); export const overrideCatalogs: OverrideCatalogQueries = { getInput: (id) => inputs.get(id), getSourceSet: (id) => sourceSets.get(id), getSelection: (id) => selections.get(id), getRecipe: (id) => recipes.get(id), listInputs: () => artifact.catalogs.inputs, listSelections: () => artifact.catalogs.selections, listManagedTargets: () => artifact.catalogs.managedTargets, }; export const overrideFontCatalog: RuntimeFontCatalog = artifact.fonts; export const displayFontCatalog: DisplayFontCatalog = artifact.displayFontCatalog; export const overrideRuntimeMap: RuntimeMap = generatedRuntimeMap; export const overrideRuntimeData: OverrideRuntimeData = { expressions: artifact.expressions, primitives: artifact.primitives, targets: artifact.targets, catalogs: overrideCatalogs, rules: artifact.rules, revision: artifact.revision, };