mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-02-28 06:22:45 -08:00
feat(core): add module scaffolding and provider registries
This commit is contained in:
42
src/token-mergers/index.ts
Normal file
42
src/token-mergers/index.ts
Normal 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();
|
||||
Reference in New Issue
Block a user