41 lines
950 B
TypeScript
41 lines
950 B
TypeScript
import type { ParamDefinition, ParamValues } from "@/lib/params";
|
|
|
|
export function buildDefaultParamValues(
|
|
params: ParamDefinition[],
|
|
): ParamValues {
|
|
const values: ParamValues = {};
|
|
for (const param of params) {
|
|
values[param.key] = param.default;
|
|
}
|
|
return values;
|
|
}
|
|
|
|
export class DefinitionRegistry<TKey extends string, TDefinition> {
|
|
private definitions = new Map<TKey, TDefinition>();
|
|
private entityName: string;
|
|
|
|
constructor(entityName: string) {
|
|
this.entityName = entityName;
|
|
}
|
|
|
|
register(key: TKey, definition: TDefinition): void {
|
|
this.definitions.set(key, definition);
|
|
}
|
|
|
|
has(key: TKey): boolean {
|
|
return this.definitions.has(key);
|
|
}
|
|
|
|
get(key: TKey): TDefinition {
|
|
const def = this.definitions.get(key);
|
|
if (!def) {
|
|
throw new Error(`Unknown ${this.entityName}: ${key}`);
|
|
}
|
|
return def;
|
|
}
|
|
|
|
getAll(): TDefinition[] {
|
|
return Array.from(this.definitions.values());
|
|
}
|
|
}
|