feat(core): add module scaffolding and provider registries

This commit is contained in:
kyasuda
2026-02-10 13:16:01 -08:00
committed by sudacode
parent 531f8027bd
commit 09e142279a
19 changed files with 822 additions and 0 deletions

View File

@@ -0,0 +1,42 @@
import { mergeTokens as defaultMergeTokens } from "../token-merger";
import { MergedToken, Token } from "../types";
export interface TokenMergerProvider {
id: string;
merge: (tokens: Token[]) => MergedToken[];
}
type TokenMergerProviderFactory = () => TokenMergerProvider;
const tokenMergerProviderFactories = new Map<string, TokenMergerProviderFactory>();
export function registerTokenMergerProvider(
id: string,
factory: TokenMergerProviderFactory,
): void {
if (tokenMergerProviderFactories.has(id)) {
return;
}
tokenMergerProviderFactories.set(id, factory);
}
export function getRegisteredTokenMergerProviderIds(): string[] {
return Array.from(tokenMergerProviderFactories.keys());
}
export function createTokenMergerProvider(
id = "default",
): TokenMergerProvider | null {
const factory = tokenMergerProviderFactories.get(id);
if (!factory) return null;
return factory();
}
function registerDefaultTokenMergerProviders(): void {
registerTokenMergerProvider("default", () => ({
id: "default",
merge: (tokens: Token[]) => defaultMergeTokens(tokens),
}));
}
registerDefaultTokenMergerProviders();