@kaskad/eval-tree 0.0.6 → 0.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -526,7 +526,7 @@ class FunctionRegistry {
|
|
|
526
526
|
getFunction(functionType) {
|
|
527
527
|
const definition = this.reactiveFunctions[functionType];
|
|
528
528
|
if (!definition) {
|
|
529
|
-
throw new Error(`Function "${functionType}" not found
|
|
529
|
+
throw new Error(`Function "${functionType}" not found`);
|
|
530
530
|
}
|
|
531
531
|
return definition;
|
|
532
532
|
}
|
|
@@ -730,7 +730,7 @@ const delegates = {
|
|
|
730
730
|
function evaluateNode(evalNode, context) {
|
|
731
731
|
const delegate = delegates[evalNode.type];
|
|
732
732
|
if (!delegate) {
|
|
733
|
-
throw new Error(`
|
|
733
|
+
throw new Error(`Unknown eval node type: "${evalNode.type}"`);
|
|
734
734
|
}
|
|
735
735
|
return delegate(evalNode, context);
|
|
736
736
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kaskad-eval-tree.mjs","sources":["../../../../libs/eval-tree/src/lib/constants.ts","../../../../libs/eval-tree/src/lib/evaluate-array.ts","../../../../libs/eval-tree/src/lib/parse-signature.ts","../../../../libs/eval-tree/src/lib/evaluate-function/normalize-value.ts","../../../../libs/eval-tree/src/lib/evaluate-function/evaluate-arguments.ts","../../../../libs/eval-tree/src/lib/evaluate-function/to-observable.ts","../../../../libs/eval-tree/src/lib/evaluate-function/wrap-imperative-function.ts","../../../../libs/eval-tree/src/lib/evaluate-function/ensure-reactive.ts","../../../../libs/eval-tree/src/lib/validate-function-signature.ts","../../../../libs/eval-tree/src/lib/function-registry.ts","../../../../libs/eval-tree/src/lib/evaluate-function/async-value.ts","../../../../libs/eval-tree/src/lib/evaluate-function/execute-function.ts","../../../../libs/eval-tree/src/lib/util/is-observable-value.ts","../../../../libs/eval-tree/src/lib/evaluate-function/get-return-value-state.ts","../../../../libs/eval-tree/src/lib/evaluate-function/index.ts","../../../../libs/eval-tree/src/lib/evaluate-object.ts","../../../../libs/eval-tree/src/lib/evaluate-value.ts","../../../../libs/eval-tree/src/lib/evaluate-node.ts","../../../../libs/eval-tree/src/lib/evaluate-function/function-execution-state-builder.ts","../../../../libs/eval-tree/src/index.ts","../../../../libs/eval-tree/src/kaskad-eval-tree.ts"],"sourcesContent":["import { EvalContext } from './function';\n\nexport const debugName = (context: EvalContext, thing: string) => {\n return [context.componentId, thing].join('|');\n};\n","import { computed } from 'mobx';\n\nimport { debugName } from './constants';\nimport { EvalState } from './eval-state';\nimport { evaluateNode } from './evaluate-node';\nimport { EvaluationResult } from './evaluation-result';\nimport { EvalContext } from './function';\nimport { ArrayEvalNode } from './types';\n\nexport function evaluateArray(evalNode: ArrayEvalNode, context: EvalContext): EvaluationResult<EvalState> {\n const itemResults = evalNode.items.map((item) => evaluateNode(item, context));\n const itemComputeds = itemResults.map((result) => result.computed);\n const disposers = itemResults.flatMap((result) => result.disposers);\n\n return {\n computed: computed(\n () => {\n const evaluating = itemComputeds.some((ro) => ro.get().evaluating);\n const failed = itemComputeds.some((ro) => ro.get().failed);\n\n return itemComputeds.reduce<EvalState<unknown[]>>(\n (acc, ro) => {\n acc.value.push(ro.get().value);\n return acc;\n },\n { value: [], evaluating, settled: !evaluating, failed },\n );\n },\n {\n name: debugName(context, 'array-literal'),\n },\n ),\n disposers,\n };\n}\n","import { parseValueType } from '@kaskad/schema';\nimport { ValueType } from '@kaskad/types';\n\nexport interface SignatureParseResult {\n params: ValueType[];\n variadic: boolean;\n returns: ValueType;\n}\n\n/**\n * Parses a function signature string into structured parameter and return types.\n *\n * Format: (param1Type, param2Type, ...) => returnType\n * Variadic: (...type) => returnType\n *\n * Examples:\n * - '() => void'\n * - '(string, number) => boolean'\n * - '(unknown[], number) => unknown'\n * - '(...unknown) => boolean'\n * - '({name: string}, number[]) => void'\n */\nexport function parseSignature(signature: string): SignatureParseResult {\n const trimmed = signature.trim();\n\n // Split by => to get params and return parts\n const arrowIndex = trimmed.indexOf('=>');\n if (arrowIndex === -1) {\n throw new Error(`Invalid signature: missing '=>'. Expected format: '(params) => returnType'`);\n }\n\n const paramsStr = trimmed.slice(0, arrowIndex).trim();\n const returnStr = trimmed.slice(arrowIndex + 2).trim();\n\n if (!returnStr) {\n throw new Error(`Invalid signature: missing return type after '=>'`);\n }\n\n // Parse return type\n const returns = parseValueType(returnStr);\n\n // Parse params\n if (!paramsStr.startsWith('(') || !paramsStr.endsWith(')')) {\n throw new Error(`Invalid signature: params must be wrapped in parentheses. Got: ${paramsStr}`);\n }\n\n const paramsContent = paramsStr.slice(1, -1).trim();\n\n // Empty params\n if (!paramsContent) {\n return {\n params: [],\n variadic: false,\n returns,\n };\n }\n\n // Check for variadic\n if (paramsContent.startsWith('...')) {\n const variadicType = paramsContent.slice(3).trim();\n if (!variadicType) {\n throw new Error(`Invalid signature: variadic parameter must have a type. Got: '...${variadicType}'`);\n }\n\n return {\n params: [parseValueType(variadicType)],\n variadic: true,\n returns,\n };\n }\n\n // Split by comma, respecting nesting\n const paramTypes = splitByComma(paramsContent);\n\n return {\n params: paramTypes.map((typeStr) => parseValueType(typeStr.trim())),\n variadic: false,\n returns,\n };\n}\n\n/**\n * Splits a string by commas while respecting nested braces and brackets.\n * Used to split parameter lists that may contain complex types like {a: string, b: number}.\n */\nfunction splitByComma(str: string): string[] {\n const parts: string[] = [];\n let current = '';\n let depth = 0;\n\n for (let i = 0; i < str.length; i++) {\n const char = str[i];\n\n if (char === '{' || char === '[' || char === '(') {\n depth++;\n current += char;\n } else if (char === '}' || char === ']' || char === ')') {\n depth--;\n current += char;\n } else if (char === ',' && depth === 0) {\n parts.push(current.trim());\n current = '';\n } else {\n current += char;\n }\n }\n\n if (current.trim()) {\n parts.push(current.trim());\n }\n\n return parts;\n}\n","import { isUnfoldedNodeSchema, unfoldNodeSchema } from '@kaskad/schema';\nimport { ValueType } from '@kaskad/types';\n\n/**\n * Recursively extracts primitive values from nested NodeSchema structures.\n *\n * Traverses the value tree and unwraps NodeSchema objects to their primitive values.\n * Preserves collection types (Array, Set, Map) and component inline values.\n *\n * @param value - Value that may contain nested NodeSchema objects\n * @returns Primitive value with all NodeSchema wrappers removed\n */\nfunction extractPrimitiveValue(value: unknown): unknown {\n if (value === null || value === undefined) {\n return value;\n }\n\n if (isUnfoldedNodeSchema(value)) {\n return extractPrimitiveValue(value.value);\n }\n\n if (Array.isArray(value)) {\n return value.map(extractPrimitiveValue);\n }\n\n if (value instanceof Set) {\n const extracted = new Set();\n value.forEach((item) => extracted.add(extractPrimitiveValue(item)));\n return extracted;\n }\n\n if (value instanceof Map) {\n const extracted = new Map();\n value.forEach((val, key) => extracted.set(key, extractPrimitiveValue(val)));\n return extracted;\n }\n\n // ComponentNodeInlineValue has Maps that must be preserved\n if (typeof value === 'object' && 'componentType' in value && value.componentType) {\n return value;\n }\n\n if (typeof value === 'object') {\n const extracted: Record<string, unknown> = {};\n for (const [key, val] of Object.entries(value)) {\n extracted[key] = extractPrimitiveValue(val);\n }\n return extracted;\n }\n\n return value;\n}\n\n/**\n * Normalizes raw values by detecting formulas and extracting primitives.\n *\n * Performs schema unfolding to handle formula detection (e.g., \"={{...}}\" or \"=...\"),\n * then extracts primitive values from the resulting NodeSchema structure.\n *\n * @param rawValue - Raw value that may be a formula string or contain nested schemas\n * @param valueType - Expected type of the value after normalization\n * @returns ComputationSchema if value is a formula, otherwise primitive value\n */\nexport function normalizeValue(rawValue: unknown, valueType: ValueType): unknown {\n // Handle runtime Set values directly - they don't need unfolding.\n // This occurs when Set-typed variables are passed to functions expecting arrays.\n // The function implementations (e.g., filterIn) handle both arrays and Sets.\n if (rawValue instanceof Set) {\n return rawValue;\n }\n\n const schema = unfoldNodeSchema(rawValue, valueType);\n\n if (schema.computation) {\n return schema.computation;\n }\n\n return extractPrimitiveValue(schema.value);\n}\n","import { IComputedValue } from 'mobx';\n\nimport { EvalState } from '../eval-state';\nimport { ArgType } from '../function';\nimport { normalizeValue } from './normalize-value';\n\n/**\n * Sentinel value for arguments that have not yet been evaluated.\n * Distinguishes unevaluated arguments from arguments that evaluated to null.\n */\nexport const NOT_EVALUATED = Symbol('NOT_EVALUATED');\n\ntype EvalArgumentsResult = {\n values: unknown[];\n allEvaluated: boolean;\n anyEvaluating: boolean;\n anyFailed: boolean;\n};\n\nexport type EvalArgumentsCtx = {\n computedArgs: IComputedValue<EvalState>[];\n argsTypes: Array<ArgType>;\n};\n\n/**\n * Evaluates function arguments and aggregates evaluation states.\n * Returns values array with NOT_EVALUATED symbol for unevaluated arguments.\n */\nexport function evaluateArguments(ctx: EvalArgumentsCtx): EvalArgumentsResult {\n const { computedArgs, argsTypes } = ctx;\n const values: unknown[] = [];\n\n let allEvaluated = true;\n let anyEvaluating = false;\n let anyFailed = false;\n\n for (let i = 0; i < computedArgs.length; i++) {\n const { value: rawValue, settled, evaluating, failed } = computedArgs[i].get();\n\n if (evaluating) {\n anyEvaluating = true;\n }\n if (failed) {\n anyFailed = true;\n }\n\n if (!settled) {\n allEvaluated = false;\n values.push(NOT_EVALUATED);\n } else {\n if (!argsTypes[i]) {\n throw new Error(\n `Argument type definition missing for argument ${i}. ` +\n `Expected ${argsTypes.length} arguments but got ${computedArgs.length}.`,\n );\n }\n values.push(normalizeValue(rawValue, argsTypes[i].valueType));\n }\n }\n\n return { values, allEvaluated, anyEvaluating, anyFailed };\n}\n","import { observable, runInAction, untracked } from 'mobx';\nimport { isObservable, Observable as RxObservable } from 'rxjs';\n\nimport { ObservableValue, PromiseValue } from './async-value';\n\n/**\n * Wraps async values (Promises, RxJS Observables) in MobX-tracked structures.\n *\n * Returns PromiseValue for Promises, ObservableValue for Observables, or the value unchanged.\n */\nexport function toObservable(result: unknown): PromiseValue | ObservableValue | unknown {\n if (result instanceof Promise) {\n return untracked(() => {\n const asyncValue = observable.object<PromiseValue>({\n kind: 'promise',\n current: null,\n error: null,\n pending: true,\n });\n\n result.then(\n (value) => {\n runInAction(() => {\n asyncValue.current = value;\n asyncValue.pending = false;\n asyncValue.error = null;\n });\n },\n (err) => {\n runInAction(() => {\n asyncValue.error = err;\n asyncValue.pending = false;\n asyncValue.current = null;\n });\n },\n );\n\n return asyncValue;\n });\n }\n\n if (isObservable(result)) {\n return untracked(() => {\n const asyncValue = observable.object({\n kind: 'observable' as const,\n current: null as unknown,\n error: null as unknown,\n pending: true,\n subscription: undefined as unknown as ObservableValue['subscription'],\n });\n\n try {\n const subscription = (result as RxObservable<unknown>).subscribe({\n next: (value) => {\n runInAction(() => {\n asyncValue.current = value;\n asyncValue.pending = false;\n asyncValue.error = null;\n });\n },\n error: (err) => {\n runInAction(() => {\n asyncValue.error = err;\n asyncValue.pending = false;\n });\n },\n complete: () => {\n runInAction(() => {\n asyncValue.pending = false;\n });\n },\n });\n\n runInAction(() => {\n asyncValue.subscription = subscription;\n });\n } catch (error) {\n runInAction(() => {\n asyncValue.error = error;\n asyncValue.pending = false;\n asyncValue.current = null;\n });\n }\n\n return asyncValue as ObservableValue;\n });\n }\n\n return result;\n}\n","import { computed, IComputedValue } from 'mobx';\n\nimport { EvalState } from '../eval-state';\nimport { EvalContext, ImperativeFunctionDefinition, ReactiveFunctionDefinition } from '../function';\nimport { parseSignature } from '../parse-signature';\nimport { evaluateArguments } from './evaluate-arguments';\nimport { toObservable } from './to-observable';\n\n/**\n * Wraps an imperative function to work in the reactive pipeline.\n * Unwraps computed arguments to plain values and propagates argument states.\n */\nexport function wrapImperativeAsReactive(imperativeDef: ImperativeFunctionDefinition): ReactiveFunctionDefinition {\n const { params } = parseSignature(imperativeDef.signature);\n const argsTypes = params.map((p) => ({ valueType: p }));\n\n if (imperativeDef.contextual) {\n // Contextual imperative -> contextual reactive\n return {\n kind: 'reactive',\n contextual: true,\n execute: (ctx: EvalContext, computedArgs: IComputedValue<EvalState>[]) => {\n return computed(() => {\n const { values, allEvaluated, anyEvaluating, anyFailed } = evaluateArguments({\n computedArgs,\n argsTypes,\n });\n\n if (!allEvaluated || anyFailed) {\n return {\n returnValue: null,\n argsEvaluated: false,\n argsEvaluating: anyEvaluating,\n argsFailed: anyFailed,\n };\n }\n\n try {\n const result = imperativeDef.execute(ctx, ...values);\n return {\n returnValue: toObservable(result),\n argsEvaluated: true,\n argsEvaluating: false,\n argsFailed: false,\n };\n } catch (error) {\n return {\n returnValue: toObservable(Promise.reject(error)),\n argsEvaluated: true,\n argsEvaluating: false,\n argsFailed: false,\n };\n }\n });\n },\n signature: imperativeDef.signature,\n };\n } else {\n // Pure imperative -> pure reactive\n return {\n kind: 'reactive',\n execute: (computedArgs: IComputedValue<EvalState>[]) => {\n return computed(() => {\n const { values, allEvaluated, anyEvaluating, anyFailed } = evaluateArguments({\n computedArgs,\n argsTypes,\n });\n\n if (!allEvaluated || anyFailed) {\n return {\n returnValue: null,\n argsEvaluated: false,\n argsEvaluating: anyEvaluating,\n argsFailed: anyFailed,\n };\n }\n\n try {\n const result = imperativeDef.execute(...values);\n return {\n returnValue: toObservable(result),\n argsEvaluated: true,\n argsEvaluating: false,\n argsFailed: false,\n };\n } catch (error) {\n return {\n returnValue: toObservable(Promise.reject(error)),\n argsEvaluated: true,\n argsEvaluating: false,\n argsFailed: false,\n };\n }\n });\n },\n signature: imperativeDef.signature,\n };\n }\n}\n","import { FunctionDefinition, ReactiveFunctionDefinition } from '../function';\nimport { wrapImperativeAsReactive } from './wrap-imperative-function';\n\n/**\n * Ensures a function definition is reactive.\n *\n * This utility function provides a consistent way to convert any function definition\n * into a reactive version that works with MobX computed values. Reactive functions\n * are required for the evaluation pipeline to support lazy evaluation and proper\n * dependency tracking.\n *\n * @param definition - Either an imperative or reactive function definition\n * @returns A reactive function definition. If the input was already reactive,\n * returns it unchanged. If imperative, wraps it using wrapImperativeAsReactive.\n *\n * @example\n * ```typescript\n * // Register a function, ensuring it's reactive\n * const reactiveFn = ensureReactive(myImperativeFunction);\n * defStore.setFunction('myFn', reactiveFn);\n * ```\n */\nexport function ensureReactive(definition: FunctionDefinition): ReactiveFunctionDefinition {\n if (definition.kind === 'reactive') {\n return definition;\n } else {\n return wrapImperativeAsReactive(definition);\n }\n}\n","import { log } from '@kaskad/config';\n\nimport { FunctionDefinition } from './function';\nimport { parseSignature } from './parse-signature';\n\n/**\n * Validates that a function definition's signature string matches its execute function.\n *\n * Performs basic parameter count validation to catch common mistakes.\n * Runs at function registration time (once per function), not on every invocation.\n *\n * @param name - Function identifier for error messages\n * @param definition - Function definition to validate\n * @throws {Error} When signature is malformed or parameter count exceeds declaration\n */\nexport function validateFunctionSignature(name: string, definition: FunctionDefinition): void {\n try {\n const { params, variadic } = parseSignature(definition.signature);\n\n if (definition.kind === 'imperative') {\n const ctxOffset = definition.contextual ? 1 : 0; // +1 for ctx parameter if contextual\n const expectedLength = params.length + ctxOffset;\n const actualLength = definition.execute.length;\n\n // Validate only when execute has MORE parameters than declared in signature.\n // We allow fewer because function.length excludes default parameters.\n // Example: execute(ctx, a, b = 5) has length 2, even with signature '(a, b) => result'\n if (actualLength > 0 && actualLength > expectedLength && !variadic) {\n throw new Error(\n `Function \"${name}\": execute function has more parameters (${actualLength - ctxOffset}) than signature declares (${params.length}). ` +\n `Signature: ${definition.signature}`,\n );\n }\n } else {\n // Reactive functions: contextual receives (ctx, args), pure receives just (args)\n const actualLength = definition.execute.length;\n const expectedLength = definition.contextual ? 2 : 1;\n if (actualLength !== expectedLength) {\n log.warn(\n `Function \"${name}\": reactive execute should take exactly ${expectedLength} parameter(s) ${definition.contextual ? '(ctx, args)' : '(args)'}. Got ${actualLength}. ` +\n `This is unusual but may be intentional.`,\n );\n }\n }\n } catch (error) {\n if (error instanceof Error) {\n throw new Error(`Function \"${name}\": Invalid signature - ${error.message}`);\n }\n throw error;\n }\n}\n\n/**\n * Validates all functions in a registry.\n *\n * Useful for bulk validation in test setup or during application initialization.\n * Throws on the first invalid function encountered.\n *\n * @param functions - Map of function names to their definitions\n * @throws {Error} When any function has an invalid signature\n */\nexport function validateFunctionRegistry(functions: Record<string, FunctionDefinition>): void {\n for (const [name, definition] of Object.entries(functions)) {\n validateFunctionSignature(name, definition);\n }\n}\n","import { ensureReactive } from './evaluate-function/ensure-reactive';\nimport { FunctionDefinition, ReactiveFunctionDefinition } from './function';\nimport { validateFunctionSignature } from './validate-function-signature';\n\n/**\n * Registry for formula functions.\n * Singleton pattern for global access throughout the application.\n */\nexport class FunctionRegistry {\n private static instance: FunctionRegistry;\n\n // All functions are stored as reactive (imperative ones are wrapped automatically)\n private reactiveFunctions: { [functionType: string]: ReactiveFunctionDefinition } = {};\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private constructor() {}\n\n static getInstance(): FunctionRegistry {\n if (!FunctionRegistry.instance) {\n FunctionRegistry.instance = new FunctionRegistry();\n }\n return FunctionRegistry.instance;\n }\n\n static reset(): FunctionRegistry {\n FunctionRegistry.instance = new FunctionRegistry();\n return FunctionRegistry.instance;\n }\n\n /**\n * Register multiple formula functions at once.\n * Automatically wraps imperative functions as reactive.\n */\n setFunctions(definitions: Record<string, FunctionDefinition>): void {\n for (const [functionType, definition] of Object.entries(definitions)) {\n this.setFunction(functionType, definition);\n }\n }\n\n /**\n * Register a formula function.\n *\n * Accepts both reactive and imperative definitions. Imperative definitions are\n * automatically wrapped as reactive. The registry stores all functions as ReactiveFunctionDefinition.\n *\n * In development mode, validates that the signature matches the execute function.\n *\n * @param functionType - Unique identifier for the function\n * @param definition - Function definition (imperative or reactive)\n */\n setFunction(functionType: string, definition: FunctionDefinition): void {\n // Validate signature in development\n validateFunctionSignature(functionType, definition);\n\n this.reactiveFunctions[functionType] = ensureReactive(definition);\n }\n\n /**\n * Get a registered formula function.\n * @throws Error if function is not found\n */\n getFunction(functionType: string): ReactiveFunctionDefinition {\n const definition = this.reactiveFunctions[functionType];\n if (!definition) {\n throw new Error(`Function \"${functionType}\" not found.`);\n }\n return definition;\n }\n\n /**\n * Get all registered function names.\n */\n getFunctionNames(): string[] {\n return Object.keys(this.reactiveFunctions);\n }\n\n /**\n * Check if a function is registered.\n */\n hasFunction(functionType: string): boolean {\n return !!this.reactiveFunctions[functionType];\n }\n}\n","import { Subscription } from 'rxjs';\n\n/**\n * Wrapper for Promise values tracked by MobX.\n * Current value is cleared on rejection; pending becomes false after resolution or rejection.\n */\nexport interface PromiseValue {\n kind: 'promise';\n current: unknown;\n error: unknown;\n pending: boolean;\n}\n\n/**\n * Wrapper for RxJS Observable values tracked by MobX.\n * Current value is preserved on error; pending becomes false after first emission or completion.\n */\nexport interface ObservableValue {\n kind: 'observable';\n current: unknown;\n error: unknown;\n pending: boolean;\n subscription: Subscription;\n}\n\n/**\n * Discriminated union for async values.\n * Use the `kind` field to distinguish between Promise and Observable.\n */\nexport type AsyncValue = PromiseValue | ObservableValue;\n\n/** Type guard for AsyncValue. */\nexport function isAsyncValue(obj: unknown): obj is AsyncValue {\n return (\n typeof obj === 'object' &&\n obj !== null &&\n 'kind' in obj &&\n (obj.kind === 'promise' || obj.kind === 'observable') &&\n 'current' in obj &&\n 'error' in obj &&\n 'pending' in obj\n );\n}\n\n/** Type guard for PromiseValue. */\nexport function isPromiseValue(obj: unknown): obj is PromiseValue {\n return isAsyncValue(obj) && obj.kind === 'promise';\n}\n\n/** Type guard for ObservableValue. */\nexport function isObservableValue(obj: unknown): obj is ObservableValue {\n return isAsyncValue(obj) && obj.kind === 'observable';\n}\n","import { computed, IComputedValue, IReactionDisposer } from 'mobx';\nimport { Subscription } from 'rxjs';\n\nimport { debugName } from '../constants';\nimport { FunctionExecutionState } from '../eval-state';\nimport { evaluateNode } from '../evaluate-node';\nimport { EvalContext } from '../function';\nimport { FunctionRegistry } from '../function-registry';\nimport { FunctionEvalNode } from '../types';\nimport { isObservableValue } from './async-value';\n\n/**\n * Manages RxJS subscription lifecycle across function re-evaluations.\n */\nconst createSubscriptionTracker = (): [\n updateFn: (result: FunctionExecutionState) => void,\n cleanupFn: IReactionDisposer,\n] => {\n let currentSubscription: Subscription | null = null;\n\n const updateSubscription = (result: FunctionExecutionState) => {\n const newSubscription = isObservableValue(result.returnValue) ? result.returnValue.subscription : null;\n\n if (currentSubscription !== null && currentSubscription !== newSubscription) {\n if (typeof currentSubscription.unsubscribe === 'function') {\n currentSubscription.unsubscribe();\n }\n }\n\n currentSubscription = newSubscription;\n };\n\n const cleanupDisposer = (() => {\n if (currentSubscription && typeof currentSubscription.unsubscribe === 'function') {\n currentSubscription.unsubscribe();\n }\n currentSubscription = null;\n }) as IReactionDisposer;\n\n return [updateSubscription, cleanupDisposer];\n};\n\n/**\n * Executes a function and returns its reactive state with cleanup handlers.\n */\nexport const executeFunction = (\n evalNode: FunctionEvalNode,\n context: EvalContext,\n): [\n computed: IComputedValue<FunctionExecutionState>,\n disposer: IReactionDisposer,\n argDisposers: IReactionDisposer[],\n] => {\n const fnRegistry = FunctionRegistry.getInstance();\n\n const argResults = evalNode.args.map((arg) => evaluateNode(arg, context));\n const computedArgs = argResults.map((result) => result.computed);\n const argDisposers = argResults.flatMap((result) => result.disposers);\n\n const fnDefinition = fnRegistry.getFunction(evalNode.name);\n\n try {\n const resultComputed = fnDefinition.contextual\n ? fnDefinition.execute(context, computedArgs)\n : fnDefinition.execute(computedArgs);\n\n const [updateSubscription, cleanupDisposer] = createSubscriptionTracker();\n\n const executionResultComputed = computed(\n () => {\n const result = resultComputed.get();\n updateSubscription(result);\n return result;\n },\n {\n name: debugName(context, evalNode.name),\n },\n );\n\n return [executionResultComputed, cleanupDisposer, argDisposers];\n } catch (error) {\n const src = context.sourceUrl ? `[${context.sourceUrl}] ` : '';\n if (error instanceof Error) {\n const message = [\n `${src}Function \"${evalNode.name}\" failed`,\n error.message,\n `\\nContext:\\n Component: ${context.componentId}`,\n ].join('\\n');\n\n throw new Error(message, { cause: error });\n } else {\n throw new Error(`${src}Function \"${evalNode.name}\" failed: ${String(error)}`, { cause: error });\n }\n }\n};\n","import { IComputedValue, isComputed } from 'mobx';\n\nexport function isComputedValue(value: unknown): value is IComputedValue<unknown> {\n return isComputed(value);\n}\n","import { toJS } from 'mobx';\n\nimport { isComputedValue } from '../util/is-observable-value';\nimport { isAsyncValue } from './async-value';\n\n/**\n * Extracts evaluation state from return values, unwrapping AsyncValue wrappers.\n */\nexport function getReturnValueState(source: unknown): {\n value: unknown;\n evaluating: boolean;\n failed: boolean;\n} {\n let rawValue: unknown;\n let evaluating = false;\n let failed = false;\n\n if (isAsyncValue(source)) {\n rawValue = toJS(source.current);\n evaluating = source.pending;\n failed = !!source.error;\n } else {\n try {\n rawValue = isComputedValue(source) ? source.get() : source;\n } catch {\n rawValue = null;\n failed = true;\n }\n }\n\n return {\n value: rawValue,\n evaluating,\n failed,\n };\n}\n","import { comparer, computed } from 'mobx';\n\nimport { debugName } from '../constants';\nimport { EvalState } from '../eval-state';\nimport { EvaluationResult } from '../evaluation-result';\nimport { EvalContext } from '../function';\nimport { FunctionEvalNode } from '../types';\nimport { executeFunction } from './execute-function';\nimport { getReturnValueState } from './get-return-value-state';\n\n/**\n * Evaluates a function call with reactive state tracking.\n * Supports synchronous values, Promises, and RxJS Observables.\n */\nexport function evaluateFunction(evalNode: FunctionEvalNode, context: EvalContext): EvaluationResult<EvalState> {\n const [executionResult, functionDisposer, argDisposers] = executeFunction(evalNode, context);\n\n return {\n computed: computed(\n () => {\n const { returnValue, argsEvaluated, argsEvaluating, argsFailed } = executionResult.get();\n const returnValueState = getReturnValueState(returnValue);\n\n return {\n value: returnValueState.value,\n settled: argsEvaluated && !returnValueState.evaluating,\n evaluating: argsEvaluating || returnValueState.evaluating,\n failed: argsFailed || returnValueState.failed,\n };\n },\n {\n equals: comparer.structural,\n name: debugName(context, evalNode.name),\n },\n ),\n disposers: [functionDisposer, ...argDisposers],\n };\n}\n","import { comparer, computed, IComputedValue } from 'mobx';\n\nimport { debugName } from './constants';\nimport { EvalState } from './eval-state';\nimport { evaluateNode } from './evaluate-node';\nimport { EvaluationResult } from './evaluation-result';\nimport { EvalContext } from './function';\nimport { ObjectEvalNode } from './types';\n\nexport function evaluateObject(evalNode: ObjectEvalNode, context: EvalContext): EvaluationResult<EvalState> {\n const propertyResults = evalNode.properties.map((property) => {\n const keyResult = evaluateNode(property.key, context);\n const valueResult = evaluateNode(property.value, context);\n\n return { keyResult, valueResult };\n });\n\n const entriesComputeds: Array<[IComputedValue<EvalState>, IComputedValue<EvalState>]> = propertyResults.map(\n ({ keyResult, valueResult }) => [keyResult.computed, valueResult.computed],\n );\n\n const disposers = propertyResults.flatMap(({ keyResult, valueResult }) => [\n ...keyResult.disposers,\n ...valueResult.disposers,\n ]);\n\n return {\n computed: computed(\n () => {\n const evaluating = entriesComputeds.some(\n ([keyComputed, valueComputed]) => keyComputed.get().evaluating || valueComputed.get().evaluating,\n );\n const failed = entriesComputeds.some(\n ([keyComputed, valueComputed]) => keyComputed.get().failed || valueComputed.get().failed,\n );\n\n const entries = entriesComputeds.map(([keyComputed, valueComputed]) => [\n keyComputed.get().value,\n valueComputed.get().value,\n ]);\n const value = Object.fromEntries(entries);\n\n return { value, evaluating, settled: !evaluating, failed };\n },\n {\n equals: comparer.structural,\n name: debugName(context, 'object-literal'),\n },\n ),\n disposers,\n };\n}\n","import { computed } from 'mobx';\n\nimport { EvalState } from './eval-state';\nimport { EvaluationResult } from './evaluation-result';\nimport { ValueEvalNode } from './types';\n\nexport function evaluateValue(node: ValueEvalNode): EvaluationResult<EvalState> {\n return {\n computed: computed(() => ({\n value: node.value,\n evaluating: false,\n settled: true,\n failed: false,\n })),\n disposers: [],\n };\n}\n","import { EvalState } from './eval-state';\nimport { evaluateArray } from './evaluate-array';\nimport { evaluateFunction } from './evaluate-function';\nimport { evaluateObject } from './evaluate-object';\nimport { evaluateValue } from './evaluate-value';\nimport { EvaluationResult } from './evaluation-result';\nimport { EvalContext } from './function';\nimport { ArrayEvalNode, EvalNode, FunctionEvalNode, ObjectEvalNode, ValueEvalNode } from './types';\n\nconst delegates: Record<string, (evalNode: EvalNode, context: EvalContext) => EvaluationResult<EvalState>> = {\n function: (evalNode, context) => evaluateFunction(evalNode as FunctionEvalNode, context),\n value: (evalNode) => evaluateValue(evalNode as ValueEvalNode),\n array: (evalNode, context) => evaluateArray(evalNode as ArrayEvalNode, context),\n object: (evalNode, context) => evaluateObject(evalNode as ObjectEvalNode, context),\n};\n\nexport function evaluateNode<S extends EvalState = EvalState>(\n evalNode: EvalNode,\n context: EvalContext,\n): EvaluationResult<S> {\n const delegate = delegates[evalNode.type];\n if (!delegate) {\n throw new Error(`Cannot found computer. Node: ${JSON.stringify(evalNode)}`);\n }\n\n return delegate(evalNode, context) as EvaluationResult<S>;\n}\n","import { EvalState, FunctionExecutionState } from '../eval-state';\n\n/**\n * Helper for building FunctionExecutionState in reactive functions.\n * Tracks argument evaluation states and provides early-return helpers.\n */\nexport class FunctionExecutionStateBuilder {\n private argsEvaluating = false;\n private argsFailed = false;\n\n /** Track state from an argument. */\n trackArg(argState: EvalState): void {\n if (argState.evaluating) this.argsEvaluating = true;\n if (argState.failed) this.argsFailed = true;\n }\n\n /** Check if argument is ready. Returns state to return early if not ready, null otherwise. */\n checkReady(argState: EvalState): FunctionExecutionState | null {\n this.trackArg(argState);\n\n if (!argState.settled) {\n return this.notReady();\n }\n\n return null;\n }\n\n /** Return state when arguments are not ready. */\n notReady(): FunctionExecutionState {\n return {\n returnValue: null,\n argsEvaluated: false,\n argsEvaluating: this.argsEvaluating,\n argsFailed: this.argsFailed,\n };\n }\n\n /** Return successful state with a value. */\n success(value: unknown): FunctionExecutionState {\n return {\n returnValue: value,\n argsEvaluated: true,\n argsEvaluating: this.argsEvaluating,\n argsFailed: this.argsFailed,\n };\n }\n}\n","// Main evaluation function\nexport { evaluateNode } from './lib/evaluate-node';\n\n// Eval node types (input to evaluateNode)\nexport type {\n EvalNode,\n ValueEvalNode,\n ArrayEvalNode,\n ObjectEvalNode,\n ObjectEvalNodeField,\n FunctionEvalNode,\n} from './lib/types';\n\nexport type { EvalState, FunctionExecutionState } from './lib/eval-state';\nexport type {\n EvalContext,\n FunctionDefinition,\n ImperativeFunctionDefinition,\n ReactiveFunctionDefinition,\n} from './lib/function';\n\n// Function registry for managing custom functions\nexport { FunctionRegistry } from './lib/function-registry';\n\n// Utilities for building advanced reactive functions\nexport { FunctionExecutionStateBuilder } from './lib/evaluate-function/function-execution-state-builder';\nexport type { PromiseValue } from './lib/evaluate-function/async-value';\nexport { wrapImperativeAsReactive } from './lib/evaluate-function/wrap-imperative-function';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"kaskad-eval-tree.mjs","sources":["../../../../libs/eval-tree/src/lib/constants.ts","../../../../libs/eval-tree/src/lib/evaluate-array.ts","../../../../libs/eval-tree/src/lib/parse-signature.ts","../../../../libs/eval-tree/src/lib/evaluate-function/normalize-value.ts","../../../../libs/eval-tree/src/lib/evaluate-function/evaluate-arguments.ts","../../../../libs/eval-tree/src/lib/evaluate-function/to-observable.ts","../../../../libs/eval-tree/src/lib/evaluate-function/wrap-imperative-function.ts","../../../../libs/eval-tree/src/lib/evaluate-function/ensure-reactive.ts","../../../../libs/eval-tree/src/lib/validate-function-signature.ts","../../../../libs/eval-tree/src/lib/function-registry.ts","../../../../libs/eval-tree/src/lib/evaluate-function/async-value.ts","../../../../libs/eval-tree/src/lib/evaluate-function/execute-function.ts","../../../../libs/eval-tree/src/lib/util/is-observable-value.ts","../../../../libs/eval-tree/src/lib/evaluate-function/get-return-value-state.ts","../../../../libs/eval-tree/src/lib/evaluate-function/index.ts","../../../../libs/eval-tree/src/lib/evaluate-object.ts","../../../../libs/eval-tree/src/lib/evaluate-value.ts","../../../../libs/eval-tree/src/lib/evaluate-node.ts","../../../../libs/eval-tree/src/lib/evaluate-function/function-execution-state-builder.ts","../../../../libs/eval-tree/src/index.ts","../../../../libs/eval-tree/src/kaskad-eval-tree.ts"],"sourcesContent":["import { EvalContext } from './function';\n\nexport const debugName = (context: EvalContext, thing: string) => {\n return [context.componentId, thing].join('|');\n};\n","import { computed } from 'mobx';\n\nimport { debugName } from './constants';\nimport { EvalState } from './eval-state';\nimport { evaluateNode } from './evaluate-node';\nimport { EvaluationResult } from './evaluation-result';\nimport { EvalContext } from './function';\nimport { ArrayEvalNode } from './types';\n\nexport function evaluateArray(evalNode: ArrayEvalNode, context: EvalContext): EvaluationResult<EvalState> {\n const itemResults = evalNode.items.map((item) => evaluateNode(item, context));\n const itemComputeds = itemResults.map((result) => result.computed);\n const disposers = itemResults.flatMap((result) => result.disposers);\n\n return {\n computed: computed(\n () => {\n const evaluating = itemComputeds.some((ro) => ro.get().evaluating);\n const failed = itemComputeds.some((ro) => ro.get().failed);\n\n return itemComputeds.reduce<EvalState<unknown[]>>(\n (acc, ro) => {\n acc.value.push(ro.get().value);\n return acc;\n },\n { value: [], evaluating, settled: !evaluating, failed },\n );\n },\n {\n name: debugName(context, 'array-literal'),\n },\n ),\n disposers,\n };\n}\n","import { parseValueType } from '@kaskad/schema';\nimport { ValueType } from '@kaskad/types';\n\nexport interface SignatureParseResult {\n params: ValueType[];\n variadic: boolean;\n returns: ValueType;\n}\n\n/**\n * Parses a function signature string into structured parameter and return types.\n *\n * Format: (param1Type, param2Type, ...) => returnType\n * Variadic: (...type) => returnType\n *\n * Examples:\n * - '() => void'\n * - '(string, number) => boolean'\n * - '(unknown[], number) => unknown'\n * - '(...unknown) => boolean'\n * - '({name: string}, number[]) => void'\n */\nexport function parseSignature(signature: string): SignatureParseResult {\n const trimmed = signature.trim();\n\n // Split by => to get params and return parts\n const arrowIndex = trimmed.indexOf('=>');\n if (arrowIndex === -1) {\n throw new Error(`Invalid signature: missing '=>'. Expected format: '(params) => returnType'`);\n }\n\n const paramsStr = trimmed.slice(0, arrowIndex).trim();\n const returnStr = trimmed.slice(arrowIndex + 2).trim();\n\n if (!returnStr) {\n throw new Error(`Invalid signature: missing return type after '=>'`);\n }\n\n // Parse return type\n const returns = parseValueType(returnStr);\n\n // Parse params\n if (!paramsStr.startsWith('(') || !paramsStr.endsWith(')')) {\n throw new Error(`Invalid signature: params must be wrapped in parentheses. Got: ${paramsStr}`);\n }\n\n const paramsContent = paramsStr.slice(1, -1).trim();\n\n // Empty params\n if (!paramsContent) {\n return {\n params: [],\n variadic: false,\n returns,\n };\n }\n\n // Check for variadic\n if (paramsContent.startsWith('...')) {\n const variadicType = paramsContent.slice(3).trim();\n if (!variadicType) {\n throw new Error(`Invalid signature: variadic parameter must have a type. Got: '...${variadicType}'`);\n }\n\n return {\n params: [parseValueType(variadicType)],\n variadic: true,\n returns,\n };\n }\n\n // Split by comma, respecting nesting\n const paramTypes = splitByComma(paramsContent);\n\n return {\n params: paramTypes.map((typeStr) => parseValueType(typeStr.trim())),\n variadic: false,\n returns,\n };\n}\n\n/**\n * Splits a string by commas while respecting nested braces and brackets.\n * Used to split parameter lists that may contain complex types like {a: string, b: number}.\n */\nfunction splitByComma(str: string): string[] {\n const parts: string[] = [];\n let current = '';\n let depth = 0;\n\n for (let i = 0; i < str.length; i++) {\n const char = str[i];\n\n if (char === '{' || char === '[' || char === '(') {\n depth++;\n current += char;\n } else if (char === '}' || char === ']' || char === ')') {\n depth--;\n current += char;\n } else if (char === ',' && depth === 0) {\n parts.push(current.trim());\n current = '';\n } else {\n current += char;\n }\n }\n\n if (current.trim()) {\n parts.push(current.trim());\n }\n\n return parts;\n}\n","import { isUnfoldedNodeSchema, unfoldNodeSchema } from '@kaskad/schema';\nimport { ValueType } from '@kaskad/types';\n\n/**\n * Recursively extracts primitive values from nested NodeSchema structures.\n *\n * Traverses the value tree and unwraps NodeSchema objects to their primitive values.\n * Preserves collection types (Array, Set, Map) and component inline values.\n *\n * @param value - Value that may contain nested NodeSchema objects\n * @returns Primitive value with all NodeSchema wrappers removed\n */\nfunction extractPrimitiveValue(value: unknown): unknown {\n if (value === null || value === undefined) {\n return value;\n }\n\n if (isUnfoldedNodeSchema(value)) {\n return extractPrimitiveValue(value.value);\n }\n\n if (Array.isArray(value)) {\n return value.map(extractPrimitiveValue);\n }\n\n if (value instanceof Set) {\n const extracted = new Set();\n value.forEach((item) => extracted.add(extractPrimitiveValue(item)));\n return extracted;\n }\n\n if (value instanceof Map) {\n const extracted = new Map();\n value.forEach((val, key) => extracted.set(key, extractPrimitiveValue(val)));\n return extracted;\n }\n\n // ComponentNodeInlineValue has Maps that must be preserved\n if (typeof value === 'object' && 'componentType' in value && value.componentType) {\n return value;\n }\n\n if (typeof value === 'object') {\n const extracted: Record<string, unknown> = {};\n for (const [key, val] of Object.entries(value)) {\n extracted[key] = extractPrimitiveValue(val);\n }\n return extracted;\n }\n\n return value;\n}\n\n/**\n * Normalizes raw values by detecting formulas and extracting primitives.\n *\n * Performs schema unfolding to handle formula detection (e.g., \"={{...}}\" or \"=...\"),\n * then extracts primitive values from the resulting NodeSchema structure.\n *\n * @param rawValue - Raw value that may be a formula string or contain nested schemas\n * @param valueType - Expected type of the value after normalization\n * @returns ComputationSchema if value is a formula, otherwise primitive value\n */\nexport function normalizeValue(rawValue: unknown, valueType: ValueType): unknown {\n // Handle runtime Set values directly - they don't need unfolding.\n // This occurs when Set-typed variables are passed to functions expecting arrays.\n // The function implementations (e.g., filterIn) handle both arrays and Sets.\n if (rawValue instanceof Set) {\n return rawValue;\n }\n\n const schema = unfoldNodeSchema(rawValue, valueType);\n\n if (schema.computation) {\n return schema.computation;\n }\n\n return extractPrimitiveValue(schema.value);\n}\n","import { IComputedValue } from 'mobx';\n\nimport { EvalState } from '../eval-state';\nimport { ArgType } from '../function';\nimport { normalizeValue } from './normalize-value';\n\n/**\n * Sentinel value for arguments that have not yet been evaluated.\n * Distinguishes unevaluated arguments from arguments that evaluated to null.\n */\nexport const NOT_EVALUATED = Symbol('NOT_EVALUATED');\n\ntype EvalArgumentsResult = {\n values: unknown[];\n allEvaluated: boolean;\n anyEvaluating: boolean;\n anyFailed: boolean;\n};\n\nexport type EvalArgumentsCtx = {\n computedArgs: IComputedValue<EvalState>[];\n argsTypes: Array<ArgType>;\n};\n\n/**\n * Evaluates function arguments and aggregates evaluation states.\n * Returns values array with NOT_EVALUATED symbol for unevaluated arguments.\n */\nexport function evaluateArguments(ctx: EvalArgumentsCtx): EvalArgumentsResult {\n const { computedArgs, argsTypes } = ctx;\n const values: unknown[] = [];\n\n let allEvaluated = true;\n let anyEvaluating = false;\n let anyFailed = false;\n\n for (let i = 0; i < computedArgs.length; i++) {\n const { value: rawValue, settled, evaluating, failed } = computedArgs[i].get();\n\n if (evaluating) {\n anyEvaluating = true;\n }\n if (failed) {\n anyFailed = true;\n }\n\n if (!settled) {\n allEvaluated = false;\n values.push(NOT_EVALUATED);\n } else {\n if (!argsTypes[i]) {\n throw new Error(\n `Argument type definition missing for argument ${i}. ` +\n `Expected ${argsTypes.length} arguments but got ${computedArgs.length}.`,\n );\n }\n values.push(normalizeValue(rawValue, argsTypes[i].valueType));\n }\n }\n\n return { values, allEvaluated, anyEvaluating, anyFailed };\n}\n","import { observable, runInAction, untracked } from 'mobx';\nimport { isObservable, Observable as RxObservable } from 'rxjs';\n\nimport { ObservableValue, PromiseValue } from './async-value';\n\n/**\n * Wraps async values (Promises, RxJS Observables) in MobX-tracked structures.\n *\n * Returns PromiseValue for Promises, ObservableValue for Observables, or the value unchanged.\n */\nexport function toObservable(result: unknown): PromiseValue | ObservableValue | unknown {\n if (result instanceof Promise) {\n return untracked(() => {\n const asyncValue = observable.object<PromiseValue>({\n kind: 'promise',\n current: null,\n error: null,\n pending: true,\n });\n\n result.then(\n (value) => {\n runInAction(() => {\n asyncValue.current = value;\n asyncValue.pending = false;\n asyncValue.error = null;\n });\n },\n (err) => {\n runInAction(() => {\n asyncValue.error = err;\n asyncValue.pending = false;\n asyncValue.current = null;\n });\n },\n );\n\n return asyncValue;\n });\n }\n\n if (isObservable(result)) {\n return untracked(() => {\n const asyncValue = observable.object({\n kind: 'observable' as const,\n current: null as unknown,\n error: null as unknown,\n pending: true,\n subscription: undefined as unknown as ObservableValue['subscription'],\n });\n\n try {\n const subscription = (result as RxObservable<unknown>).subscribe({\n next: (value) => {\n runInAction(() => {\n asyncValue.current = value;\n asyncValue.pending = false;\n asyncValue.error = null;\n });\n },\n error: (err) => {\n runInAction(() => {\n asyncValue.error = err;\n asyncValue.pending = false;\n });\n },\n complete: () => {\n runInAction(() => {\n asyncValue.pending = false;\n });\n },\n });\n\n runInAction(() => {\n asyncValue.subscription = subscription;\n });\n } catch (error) {\n runInAction(() => {\n asyncValue.error = error;\n asyncValue.pending = false;\n asyncValue.current = null;\n });\n }\n\n return asyncValue as ObservableValue;\n });\n }\n\n return result;\n}\n","import { computed, IComputedValue } from 'mobx';\n\nimport { EvalState } from '../eval-state';\nimport { EvalContext, ImperativeFunctionDefinition, ReactiveFunctionDefinition } from '../function';\nimport { parseSignature } from '../parse-signature';\nimport { evaluateArguments } from './evaluate-arguments';\nimport { toObservable } from './to-observable';\n\n/**\n * Wraps an imperative function to work in the reactive pipeline.\n * Unwraps computed arguments to plain values and propagates argument states.\n */\nexport function wrapImperativeAsReactive(imperativeDef: ImperativeFunctionDefinition): ReactiveFunctionDefinition {\n const { params } = parseSignature(imperativeDef.signature);\n const argsTypes = params.map((p) => ({ valueType: p }));\n\n if (imperativeDef.contextual) {\n // Contextual imperative -> contextual reactive\n return {\n kind: 'reactive',\n contextual: true,\n execute: (ctx: EvalContext, computedArgs: IComputedValue<EvalState>[]) => {\n return computed(() => {\n const { values, allEvaluated, anyEvaluating, anyFailed } = evaluateArguments({\n computedArgs,\n argsTypes,\n });\n\n if (!allEvaluated || anyFailed) {\n return {\n returnValue: null,\n argsEvaluated: false,\n argsEvaluating: anyEvaluating,\n argsFailed: anyFailed,\n };\n }\n\n try {\n const result = imperativeDef.execute(ctx, ...values);\n return {\n returnValue: toObservable(result),\n argsEvaluated: true,\n argsEvaluating: false,\n argsFailed: false,\n };\n } catch (error) {\n return {\n returnValue: toObservable(Promise.reject(error)),\n argsEvaluated: true,\n argsEvaluating: false,\n argsFailed: false,\n };\n }\n });\n },\n signature: imperativeDef.signature,\n };\n } else {\n // Pure imperative -> pure reactive\n return {\n kind: 'reactive',\n execute: (computedArgs: IComputedValue<EvalState>[]) => {\n return computed(() => {\n const { values, allEvaluated, anyEvaluating, anyFailed } = evaluateArguments({\n computedArgs,\n argsTypes,\n });\n\n if (!allEvaluated || anyFailed) {\n return {\n returnValue: null,\n argsEvaluated: false,\n argsEvaluating: anyEvaluating,\n argsFailed: anyFailed,\n };\n }\n\n try {\n const result = imperativeDef.execute(...values);\n return {\n returnValue: toObservable(result),\n argsEvaluated: true,\n argsEvaluating: false,\n argsFailed: false,\n };\n } catch (error) {\n return {\n returnValue: toObservable(Promise.reject(error)),\n argsEvaluated: true,\n argsEvaluating: false,\n argsFailed: false,\n };\n }\n });\n },\n signature: imperativeDef.signature,\n };\n }\n}\n","import { FunctionDefinition, ReactiveFunctionDefinition } from '../function';\nimport { wrapImperativeAsReactive } from './wrap-imperative-function';\n\n/**\n * Ensures a function definition is reactive.\n *\n * This utility function provides a consistent way to convert any function definition\n * into a reactive version that works with MobX computed values. Reactive functions\n * are required for the evaluation pipeline to support lazy evaluation and proper\n * dependency tracking.\n *\n * @param definition - Either an imperative or reactive function definition\n * @returns A reactive function definition. If the input was already reactive,\n * returns it unchanged. If imperative, wraps it using wrapImperativeAsReactive.\n *\n * @example\n * ```typescript\n * // Register a function, ensuring it's reactive\n * const reactiveFn = ensureReactive(myImperativeFunction);\n * defStore.setFunction('myFn', reactiveFn);\n * ```\n */\nexport function ensureReactive(definition: FunctionDefinition): ReactiveFunctionDefinition {\n if (definition.kind === 'reactive') {\n return definition;\n } else {\n return wrapImperativeAsReactive(definition);\n }\n}\n","import { log } from '@kaskad/config';\n\nimport { FunctionDefinition } from './function';\nimport { parseSignature } from './parse-signature';\n\n/**\n * Validates that a function definition's signature string matches its execute function.\n *\n * Performs basic parameter count validation to catch common mistakes.\n * Runs at function registration time (once per function), not on every invocation.\n *\n * @param name - Function identifier for error messages\n * @param definition - Function definition to validate\n * @throws {Error} When signature is malformed or parameter count exceeds declaration\n */\nexport function validateFunctionSignature(name: string, definition: FunctionDefinition): void {\n try {\n const { params, variadic } = parseSignature(definition.signature);\n\n if (definition.kind === 'imperative') {\n const ctxOffset = definition.contextual ? 1 : 0; // +1 for ctx parameter if contextual\n const expectedLength = params.length + ctxOffset;\n const actualLength = definition.execute.length;\n\n // Validate only when execute has MORE parameters than declared in signature.\n // We allow fewer because function.length excludes default parameters.\n // Example: execute(ctx, a, b = 5) has length 2, even with signature '(a, b) => result'\n if (actualLength > 0 && actualLength > expectedLength && !variadic) {\n throw new Error(\n `Function \"${name}\": execute function has more parameters (${actualLength - ctxOffset}) than signature declares (${params.length}). ` +\n `Signature: ${definition.signature}`,\n );\n }\n } else {\n // Reactive functions: contextual receives (ctx, args), pure receives just (args)\n const actualLength = definition.execute.length;\n const expectedLength = definition.contextual ? 2 : 1;\n if (actualLength !== expectedLength) {\n log.warn(\n `Function \"${name}\": reactive execute should take exactly ${expectedLength} parameter(s) ${definition.contextual ? '(ctx, args)' : '(args)'}. Got ${actualLength}. ` +\n `This is unusual but may be intentional.`,\n );\n }\n }\n } catch (error) {\n if (error instanceof Error) {\n throw new Error(`Function \"${name}\": Invalid signature - ${error.message}`);\n }\n throw error;\n }\n}\n\n/**\n * Validates all functions in a registry.\n *\n * Useful for bulk validation in test setup or during application initialization.\n * Throws on the first invalid function encountered.\n *\n * @param functions - Map of function names to their definitions\n * @throws {Error} When any function has an invalid signature\n */\nexport function validateFunctionRegistry(functions: Record<string, FunctionDefinition>): void {\n for (const [name, definition] of Object.entries(functions)) {\n validateFunctionSignature(name, definition);\n }\n}\n","import { ensureReactive } from './evaluate-function/ensure-reactive';\nimport { FunctionDefinition, ReactiveFunctionDefinition } from './function';\nimport { validateFunctionSignature } from './validate-function-signature';\n\n/**\n * Registry for formula functions.\n * Singleton pattern for global access throughout the application.\n */\nexport class FunctionRegistry {\n private static instance: FunctionRegistry;\n\n // All functions are stored as reactive (imperative ones are wrapped automatically)\n private reactiveFunctions: { [functionType: string]: ReactiveFunctionDefinition } = {};\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private constructor() {}\n\n static getInstance(): FunctionRegistry {\n if (!FunctionRegistry.instance) {\n FunctionRegistry.instance = new FunctionRegistry();\n }\n return FunctionRegistry.instance;\n }\n\n static reset(): FunctionRegistry {\n FunctionRegistry.instance = new FunctionRegistry();\n return FunctionRegistry.instance;\n }\n\n /**\n * Register multiple formula functions at once.\n * Automatically wraps imperative functions as reactive.\n */\n setFunctions(definitions: Record<string, FunctionDefinition>): void {\n for (const [functionType, definition] of Object.entries(definitions)) {\n this.setFunction(functionType, definition);\n }\n }\n\n /**\n * Register a formula function.\n *\n * Accepts both reactive and imperative definitions. Imperative definitions are\n * automatically wrapped as reactive. The registry stores all functions as ReactiveFunctionDefinition.\n *\n * In development mode, validates that the signature matches the execute function.\n *\n * @param functionType - Unique identifier for the function\n * @param definition - Function definition (imperative or reactive)\n */\n setFunction(functionType: string, definition: FunctionDefinition): void {\n // Validate signature in development\n validateFunctionSignature(functionType, definition);\n\n this.reactiveFunctions[functionType] = ensureReactive(definition);\n }\n\n /**\n * Get a registered formula function.\n * @throws Error if function is not found\n */\n getFunction(functionType: string): ReactiveFunctionDefinition {\n const definition = this.reactiveFunctions[functionType];\n if (!definition) {\n throw new Error(`Function \"${functionType}\" not found`);\n }\n return definition;\n }\n\n /**\n * Get all registered function names.\n */\n getFunctionNames(): string[] {\n return Object.keys(this.reactiveFunctions);\n }\n\n /**\n * Check if a function is registered.\n */\n hasFunction(functionType: string): boolean {\n return !!this.reactiveFunctions[functionType];\n }\n}\n","import { Subscription } from 'rxjs';\n\n/**\n * Wrapper for Promise values tracked by MobX.\n * Current value is cleared on rejection; pending becomes false after resolution or rejection.\n */\nexport interface PromiseValue {\n kind: 'promise';\n current: unknown;\n error: unknown;\n pending: boolean;\n}\n\n/**\n * Wrapper for RxJS Observable values tracked by MobX.\n * Current value is preserved on error; pending becomes false after first emission or completion.\n */\nexport interface ObservableValue {\n kind: 'observable';\n current: unknown;\n error: unknown;\n pending: boolean;\n subscription: Subscription;\n}\n\n/**\n * Discriminated union for async values.\n * Use the `kind` field to distinguish between Promise and Observable.\n */\nexport type AsyncValue = PromiseValue | ObservableValue;\n\n/** Type guard for AsyncValue. */\nexport function isAsyncValue(obj: unknown): obj is AsyncValue {\n return (\n typeof obj === 'object' &&\n obj !== null &&\n 'kind' in obj &&\n (obj.kind === 'promise' || obj.kind === 'observable') &&\n 'current' in obj &&\n 'error' in obj &&\n 'pending' in obj\n );\n}\n\n/** Type guard for PromiseValue. */\nexport function isPromiseValue(obj: unknown): obj is PromiseValue {\n return isAsyncValue(obj) && obj.kind === 'promise';\n}\n\n/** Type guard for ObservableValue. */\nexport function isObservableValue(obj: unknown): obj is ObservableValue {\n return isAsyncValue(obj) && obj.kind === 'observable';\n}\n","import { computed, IComputedValue, IReactionDisposer } from 'mobx';\nimport { Subscription } from 'rxjs';\n\nimport { debugName } from '../constants';\nimport { FunctionExecutionState } from '../eval-state';\nimport { evaluateNode } from '../evaluate-node';\nimport { EvalContext } from '../function';\nimport { FunctionRegistry } from '../function-registry';\nimport { FunctionEvalNode } from '../types';\nimport { isObservableValue } from './async-value';\n\n/**\n * Manages RxJS subscription lifecycle across function re-evaluations.\n */\nconst createSubscriptionTracker = (): [\n updateFn: (result: FunctionExecutionState) => void,\n cleanupFn: IReactionDisposer,\n] => {\n let currentSubscription: Subscription | null = null;\n\n const updateSubscription = (result: FunctionExecutionState) => {\n const newSubscription = isObservableValue(result.returnValue) ? result.returnValue.subscription : null;\n\n if (currentSubscription !== null && currentSubscription !== newSubscription) {\n if (typeof currentSubscription.unsubscribe === 'function') {\n currentSubscription.unsubscribe();\n }\n }\n\n currentSubscription = newSubscription;\n };\n\n const cleanupDisposer = (() => {\n if (currentSubscription && typeof currentSubscription.unsubscribe === 'function') {\n currentSubscription.unsubscribe();\n }\n currentSubscription = null;\n }) as IReactionDisposer;\n\n return [updateSubscription, cleanupDisposer];\n};\n\n/**\n * Executes a function and returns its reactive state with cleanup handlers.\n */\nexport const executeFunction = (\n evalNode: FunctionEvalNode,\n context: EvalContext,\n): [\n computed: IComputedValue<FunctionExecutionState>,\n disposer: IReactionDisposer,\n argDisposers: IReactionDisposer[],\n] => {\n const fnRegistry = FunctionRegistry.getInstance();\n\n const argResults = evalNode.args.map((arg) => evaluateNode(arg, context));\n const computedArgs = argResults.map((result) => result.computed);\n const argDisposers = argResults.flatMap((result) => result.disposers);\n\n const fnDefinition = fnRegistry.getFunction(evalNode.name);\n\n try {\n const resultComputed = fnDefinition.contextual\n ? fnDefinition.execute(context, computedArgs)\n : fnDefinition.execute(computedArgs);\n\n const [updateSubscription, cleanupDisposer] = createSubscriptionTracker();\n\n const executionResultComputed = computed(\n () => {\n const result = resultComputed.get();\n updateSubscription(result);\n return result;\n },\n {\n name: debugName(context, evalNode.name),\n },\n );\n\n return [executionResultComputed, cleanupDisposer, argDisposers];\n } catch (error) {\n const src = context.sourceUrl ? `[${context.sourceUrl}] ` : '';\n if (error instanceof Error) {\n const message = [\n `${src}Function \"${evalNode.name}\" failed`,\n error.message,\n `\\nContext:\\n Component: ${context.componentId}`,\n ].join('\\n');\n\n throw new Error(message, { cause: error });\n } else {\n throw new Error(`${src}Function \"${evalNode.name}\" failed: ${String(error)}`, { cause: error });\n }\n }\n};\n","import { IComputedValue, isComputed } from 'mobx';\n\nexport function isComputedValue(value: unknown): value is IComputedValue<unknown> {\n return isComputed(value);\n}\n","import { toJS } from 'mobx';\n\nimport { isComputedValue } from '../util/is-observable-value';\nimport { isAsyncValue } from './async-value';\n\n/**\n * Extracts evaluation state from return values, unwrapping AsyncValue wrappers.\n */\nexport function getReturnValueState(source: unknown): {\n value: unknown;\n evaluating: boolean;\n failed: boolean;\n} {\n let rawValue: unknown;\n let evaluating = false;\n let failed = false;\n\n if (isAsyncValue(source)) {\n rawValue = toJS(source.current);\n evaluating = source.pending;\n failed = !!source.error;\n } else {\n try {\n rawValue = isComputedValue(source) ? source.get() : source;\n } catch {\n rawValue = null;\n failed = true;\n }\n }\n\n return {\n value: rawValue,\n evaluating,\n failed,\n };\n}\n","import { comparer, computed } from 'mobx';\n\nimport { debugName } from '../constants';\nimport { EvalState } from '../eval-state';\nimport { EvaluationResult } from '../evaluation-result';\nimport { EvalContext } from '../function';\nimport { FunctionEvalNode } from '../types';\nimport { executeFunction } from './execute-function';\nimport { getReturnValueState } from './get-return-value-state';\n\n/**\n * Evaluates a function call with reactive state tracking.\n * Supports synchronous values, Promises, and RxJS Observables.\n */\nexport function evaluateFunction(evalNode: FunctionEvalNode, context: EvalContext): EvaluationResult<EvalState> {\n const [executionResult, functionDisposer, argDisposers] = executeFunction(evalNode, context);\n\n return {\n computed: computed(\n () => {\n const { returnValue, argsEvaluated, argsEvaluating, argsFailed } = executionResult.get();\n const returnValueState = getReturnValueState(returnValue);\n\n return {\n value: returnValueState.value,\n settled: argsEvaluated && !returnValueState.evaluating,\n evaluating: argsEvaluating || returnValueState.evaluating,\n failed: argsFailed || returnValueState.failed,\n };\n },\n {\n equals: comparer.structural,\n name: debugName(context, evalNode.name),\n },\n ),\n disposers: [functionDisposer, ...argDisposers],\n };\n}\n","import { comparer, computed, IComputedValue } from 'mobx';\n\nimport { debugName } from './constants';\nimport { EvalState } from './eval-state';\nimport { evaluateNode } from './evaluate-node';\nimport { EvaluationResult } from './evaluation-result';\nimport { EvalContext } from './function';\nimport { ObjectEvalNode } from './types';\n\nexport function evaluateObject(evalNode: ObjectEvalNode, context: EvalContext): EvaluationResult<EvalState> {\n const propertyResults = evalNode.properties.map((property) => {\n const keyResult = evaluateNode(property.key, context);\n const valueResult = evaluateNode(property.value, context);\n\n return { keyResult, valueResult };\n });\n\n const entriesComputeds: Array<[IComputedValue<EvalState>, IComputedValue<EvalState>]> = propertyResults.map(\n ({ keyResult, valueResult }) => [keyResult.computed, valueResult.computed],\n );\n\n const disposers = propertyResults.flatMap(({ keyResult, valueResult }) => [\n ...keyResult.disposers,\n ...valueResult.disposers,\n ]);\n\n return {\n computed: computed(\n () => {\n const evaluating = entriesComputeds.some(\n ([keyComputed, valueComputed]) => keyComputed.get().evaluating || valueComputed.get().evaluating,\n );\n const failed = entriesComputeds.some(\n ([keyComputed, valueComputed]) => keyComputed.get().failed || valueComputed.get().failed,\n );\n\n const entries = entriesComputeds.map(([keyComputed, valueComputed]) => [\n keyComputed.get().value,\n valueComputed.get().value,\n ]);\n const value = Object.fromEntries(entries);\n\n return { value, evaluating, settled: !evaluating, failed };\n },\n {\n equals: comparer.structural,\n name: debugName(context, 'object-literal'),\n },\n ),\n disposers,\n };\n}\n","import { computed } from 'mobx';\n\nimport { EvalState } from './eval-state';\nimport { EvaluationResult } from './evaluation-result';\nimport { ValueEvalNode } from './types';\n\nexport function evaluateValue(node: ValueEvalNode): EvaluationResult<EvalState> {\n return {\n computed: computed(() => ({\n value: node.value,\n evaluating: false,\n settled: true,\n failed: false,\n })),\n disposers: [],\n };\n}\n","import { EvalState } from './eval-state';\nimport { evaluateArray } from './evaluate-array';\nimport { evaluateFunction } from './evaluate-function';\nimport { evaluateObject } from './evaluate-object';\nimport { evaluateValue } from './evaluate-value';\nimport { EvaluationResult } from './evaluation-result';\nimport { EvalContext } from './function';\nimport { ArrayEvalNode, EvalNode, FunctionEvalNode, ObjectEvalNode, ValueEvalNode } from './types';\n\nconst delegates: Record<string, (evalNode: EvalNode, context: EvalContext) => EvaluationResult<EvalState>> = {\n function: (evalNode, context) => evaluateFunction(evalNode as FunctionEvalNode, context),\n value: (evalNode) => evaluateValue(evalNode as ValueEvalNode),\n array: (evalNode, context) => evaluateArray(evalNode as ArrayEvalNode, context),\n object: (evalNode, context) => evaluateObject(evalNode as ObjectEvalNode, context),\n};\n\nexport function evaluateNode<S extends EvalState = EvalState>(\n evalNode: EvalNode,\n context: EvalContext,\n): EvaluationResult<S> {\n const delegate = delegates[evalNode.type];\n if (!delegate) {\n throw new Error(`Unknown eval node type: \"${evalNode.type}\"`);\n }\n\n return delegate(evalNode, context) as EvaluationResult<S>;\n}\n","import { EvalState, FunctionExecutionState } from '../eval-state';\n\n/**\n * Helper for building FunctionExecutionState in reactive functions.\n * Tracks argument evaluation states and provides early-return helpers.\n */\nexport class FunctionExecutionStateBuilder {\n private argsEvaluating = false;\n private argsFailed = false;\n\n /** Track state from an argument. */\n trackArg(argState: EvalState): void {\n if (argState.evaluating) this.argsEvaluating = true;\n if (argState.failed) this.argsFailed = true;\n }\n\n /** Check if argument is ready. Returns state to return early if not ready, null otherwise. */\n checkReady(argState: EvalState): FunctionExecutionState | null {\n this.trackArg(argState);\n\n if (!argState.settled) {\n return this.notReady();\n }\n\n return null;\n }\n\n /** Return state when arguments are not ready. */\n notReady(): FunctionExecutionState {\n return {\n returnValue: null,\n argsEvaluated: false,\n argsEvaluating: this.argsEvaluating,\n argsFailed: this.argsFailed,\n };\n }\n\n /** Return successful state with a value. */\n success(value: unknown): FunctionExecutionState {\n return {\n returnValue: value,\n argsEvaluated: true,\n argsEvaluating: this.argsEvaluating,\n argsFailed: this.argsFailed,\n };\n }\n}\n","// Main evaluation function\nexport { evaluateNode } from './lib/evaluate-node';\n\n// Eval node types (input to evaluateNode)\nexport type {\n EvalNode,\n ValueEvalNode,\n ArrayEvalNode,\n ObjectEvalNode,\n ObjectEvalNodeField,\n FunctionEvalNode,\n} from './lib/types';\n\nexport type { EvalState, FunctionExecutionState } from './lib/eval-state';\nexport type {\n EvalContext,\n FunctionDefinition,\n ImperativeFunctionDefinition,\n ReactiveFunctionDefinition,\n} from './lib/function';\n\n// Function registry for managing custom functions\nexport { FunctionRegistry } from './lib/function-registry';\n\n// Utilities for building advanced reactive functions\nexport { FunctionExecutionStateBuilder } from './lib/evaluate-function/function-execution-state-builder';\nexport type { PromiseValue } from './lib/evaluate-function/async-value';\nexport { wrapImperativeAsReactive } from './lib/evaluate-function/wrap-imperative-function';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kaskad/eval-tree",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.7",
|
|
4
4
|
"peerDependencies": {
|
|
5
|
-
"@kaskad/config": "0.0.
|
|
6
|
-
"@kaskad/types": "0.0.
|
|
7
|
-
"@kaskad/schema": "0.0.
|
|
5
|
+
"@kaskad/config": "0.0.7",
|
|
6
|
+
"@kaskad/types": "0.0.7",
|
|
7
|
+
"@kaskad/schema": "0.0.7",
|
|
8
8
|
"mobx": "^6.13.7",
|
|
9
9
|
"rxjs": "~7.8.0"
|
|
10
10
|
},
|