diff --git a/packages/base-formula/src/functions/registry.ts b/packages/base-formula/src/functions/registry.ts index c4e18248d..16adc63b6 100644 --- a/packages/base-formula/src/functions/registry.ts +++ b/packages/base-formula/src/functions/registry.ts @@ -12,3 +12,10 @@ export type FormulaFn = { }; export const registry: Map = new Map(); + +export function register(fn: FormulaFn): void { + if (registry.has(fn.name)) { + throw new Error(`Duplicate formula function: ${fn.name}`); + } + registry.set(fn.name, fn); +} diff --git a/packages/base-formula/src/index.server.ts b/packages/base-formula/src/index.server.ts index 4e5037118..4dcc81e51 100644 --- a/packages/base-formula/src/index.server.ts +++ b/packages/base-formula/src/index.server.ts @@ -7,6 +7,6 @@ export * from "./parser"; export * from "./resolver"; export * from "./typecheck"; export * from "./format"; -export { registry } from "./functions/registry"; +export { registry, register } from "./functions/registry"; export type { FormulaFn } from "./functions/registry"; export * from "./graph";