@kalada/core 0.3.0 → 0.4.0
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.
- package/README.md +62 -3
- package/dist/kalada-v1/canonical-input.cjs.map +1 -1
- package/dist/kalada-v1/canonical-input.d.cts +3 -2
- package/dist/kalada-v1/canonical-input.d.ts +3 -2
- package/dist/kalada-v1/canonical-input.js.map +1 -1
- package/dist/kalada-v1/canonicalize.cjs +16 -1
- package/dist/kalada-v1/canonicalize.cjs.map +1 -1
- package/dist/kalada-v1/canonicalize.js +16 -1
- package/dist/kalada-v1/canonicalize.js.map +1 -1
- package/dist/kalada-v1/compile.cjs +13 -4
- package/dist/kalada-v1/compile.cjs.map +1 -1
- package/dist/kalada-v1/compile.js +14 -5
- package/dist/kalada-v1/compile.js.map +1 -1
- package/dist/kalada-v1/dependencies.cjs +49 -2
- package/dist/kalada-v1/dependencies.cjs.map +1 -1
- package/dist/kalada-v1/dependencies.js +49 -2
- package/dist/kalada-v1/dependencies.js.map +1 -1
- package/dist/kalada-v1/diagnostics.cjs +24 -4
- package/dist/kalada-v1/diagnostics.cjs.map +1 -1
- package/dist/kalada-v1/diagnostics.d.cts +4 -3
- package/dist/kalada-v1/diagnostics.d.ts +4 -3
- package/dist/kalada-v1/diagnostics.js +24 -4
- package/dist/kalada-v1/diagnostics.js.map +1 -1
- package/dist/kalada-v1/evaluate.cjs +10 -139
- package/dist/kalada-v1/evaluate.cjs.map +1 -1
- package/dist/kalada-v1/evaluate.d.cts +3 -2
- package/dist/kalada-v1/evaluate.d.ts +3 -2
- package/dist/kalada-v1/evaluate.js +12 -141
- package/dist/kalada-v1/evaluate.js.map +1 -1
- package/dist/kalada-v1/evaluation-delivery.cjs +286 -0
- package/dist/kalada-v1/evaluation-delivery.cjs.map +1 -0
- package/dist/kalada-v1/evaluation-delivery.d.cts +13 -0
- package/dist/kalada-v1/evaluation-delivery.d.ts +13 -0
- package/dist/kalada-v1/evaluation-delivery.js +284 -0
- package/dist/kalada-v1/evaluation-delivery.js.map +1 -0
- package/dist/kalada-v1/evaluation-frames.cjs +16 -0
- package/dist/kalada-v1/evaluation-frames.cjs.map +1 -0
- package/dist/kalada-v1/evaluation-frames.d.cts +83 -0
- package/dist/kalada-v1/evaluation-frames.d.ts +83 -0
- package/dist/kalada-v1/evaluation-frames.js +14 -0
- package/dist/kalada-v1/evaluation-frames.js.map +1 -0
- package/dist/kalada-v1/evaluation-machine.cjs +226 -0
- package/dist/kalada-v1/evaluation-machine.cjs.map +1 -0
- package/dist/kalada-v1/evaluation-machine.d.cts +9 -0
- package/dist/kalada-v1/evaluation-machine.d.ts +9 -0
- package/dist/kalada-v1/evaluation-machine.js +224 -0
- package/dist/kalada-v1/evaluation-machine.js.map +1 -0
- package/dist/kalada-v1/evaluation-resolution.cjs +80 -0
- package/dist/kalada-v1/evaluation-resolution.cjs.map +1 -0
- package/dist/kalada-v1/evaluation-resolution.d.cts +11 -0
- package/dist/kalada-v1/evaluation-resolution.d.ts +11 -0
- package/dist/kalada-v1/evaluation-resolution.js +78 -0
- package/dist/kalada-v1/evaluation-resolution.js.map +1 -0
- package/dist/kalada-v1/evaluation-state.cjs +94 -0
- package/dist/kalada-v1/evaluation-state.cjs.map +1 -0
- package/dist/kalada-v1/evaluation-state.d.cts +38 -0
- package/dist/kalada-v1/evaluation-state.d.ts +38 -0
- package/dist/kalada-v1/evaluation-state.js +81 -0
- package/dist/kalada-v1/evaluation-state.js.map +1 -0
- package/dist/kalada-v1/factories.cjs +28 -0
- package/dist/kalada-v1/factories.cjs.map +1 -1
- package/dist/kalada-v1/factories.d.cts +16 -1
- package/dist/kalada-v1/factories.d.ts +16 -1
- package/dist/kalada-v1/factories.js +28 -0
- package/dist/kalada-v1/factories.js.map +1 -1
- package/dist/kalada-v1/function-contracts.cjs +150 -0
- package/dist/kalada-v1/function-contracts.cjs.map +1 -0
- package/dist/kalada-v1/function-contracts.d.cts +15 -0
- package/dist/kalada-v1/function-contracts.d.ts +15 -0
- package/dist/kalada-v1/function-contracts.js +144 -0
- package/dist/kalada-v1/function-contracts.js.map +1 -0
- package/dist/kalada-v1/index.cjs +13 -0
- package/dist/kalada-v1/index.d.cts +4 -3
- package/dist/kalada-v1/index.d.ts +4 -3
- package/dist/kalada-v1/index.js +3 -2
- package/dist/kalada-v1/limits.cjs +23 -2
- package/dist/kalada-v1/limits.cjs.map +1 -1
- package/dist/kalada-v1/limits.d.cts +5 -3
- package/dist/kalada-v1/limits.d.ts +5 -3
- package/dist/kalada-v1/limits.js +23 -3
- package/dist/kalada-v1/limits.js.map +1 -1
- package/dist/kalada-v1/runtime-values.cjs +112 -0
- package/dist/kalada-v1/runtime-values.cjs.map +1 -0
- package/dist/kalada-v1/runtime-values.d.cts +35 -0
- package/dist/kalada-v1/runtime-values.d.ts +35 -0
- package/dist/kalada-v1/runtime-values.js +105 -0
- package/dist/kalada-v1/runtime-values.js.map +1 -0
- package/dist/kalada-v1/schemas.cjs +107 -2
- package/dist/kalada-v1/schemas.cjs.map +1 -1
- package/dist/kalada-v1/schemas.d.cts +2 -1
- package/dist/kalada-v1/schemas.d.ts +2 -1
- package/dist/kalada-v1/schemas.js +108 -4
- package/dist/kalada-v1/schemas.js.map +1 -1
- package/dist/kalada-v1/static-analysis.cjs +177 -0
- package/dist/kalada-v1/static-analysis.cjs.map +1 -0
- package/dist/kalada-v1/static-analysis.d.cts +9 -0
- package/dist/kalada-v1/static-analysis.d.ts +9 -0
- package/dist/kalada-v1/static-analysis.js +175 -0
- package/dist/kalada-v1/static-analysis.js.map +1 -0
- package/dist/kalada-v1/static-types.cjs +229 -0
- package/dist/kalada-v1/static-types.cjs.map +1 -0
- package/dist/kalada-v1/static-types.d.cts +8 -0
- package/dist/kalada-v1/static-types.d.ts +8 -0
- package/dist/kalada-v1/static-types.js +227 -0
- package/dist/kalada-v1/static-types.js.map +1 -0
- package/dist/kalada-v1/temporal-evaluation.cjs +21 -0
- package/dist/kalada-v1/temporal-evaluation.cjs.map +1 -1
- package/dist/kalada-v1/temporal-evaluation.d.cts +7 -2
- package/dist/kalada-v1/temporal-evaluation.d.ts +7 -2
- package/dist/kalada-v1/temporal-evaluation.js +20 -1
- package/dist/kalada-v1/temporal-evaluation.js.map +1 -1
- package/dist/kalada-v1/types.d.cts +78 -4
- package/dist/kalada-v1/types.d.ts +78 -4
- package/package.json +1 -1
|
@@ -8,7 +8,58 @@ type KaladaV1Expression<R extends JsonValue = string> = {
|
|
|
8
8
|
} | {
|
|
9
9
|
readonly kind: "ref";
|
|
10
10
|
readonly ref: R;
|
|
11
|
-
} | BindingExpression<R> | OptionExpression<R> | ResultExpression<R> | MatchExpression<R> | InstantExpression | DurationExpression | CurrentInstantExpression | TemporalArithmeticExpression<R> | TemporalComparisonExpression<R
|
|
11
|
+
} | BindingExpression<R> | OptionExpression<R> | ResultExpression<R> | MatchExpression<R> | InstantExpression | DurationExpression | CurrentInstantExpression | TemporalArithmeticExpression<R> | TemporalComparisonExpression<R> | FunctionExpression<R> | CallExpression<R> | FunctionGroupExpression<R> | CoreFunctionExpression;
|
|
12
|
+
type KaladaPrimitiveTypeName = "null" | "boolean" | "number" | "string" | "json" | "Instant" | "Duration";
|
|
13
|
+
type KaladaType = {
|
|
14
|
+
readonly kind: "primitive-type";
|
|
15
|
+
readonly name: KaladaPrimitiveTypeName;
|
|
16
|
+
} | {
|
|
17
|
+
readonly kind: "option-type";
|
|
18
|
+
readonly value: KaladaType;
|
|
19
|
+
} | {
|
|
20
|
+
readonly kind: "result-type";
|
|
21
|
+
readonly ok: KaladaType;
|
|
22
|
+
readonly error: KaladaType;
|
|
23
|
+
} | {
|
|
24
|
+
readonly kind: "array-type";
|
|
25
|
+
readonly element: KaladaType;
|
|
26
|
+
} | KaladaFunctionType;
|
|
27
|
+
interface KaladaFunctionType {
|
|
28
|
+
readonly kind: "function-type";
|
|
29
|
+
readonly parameters: readonly KaladaType[];
|
|
30
|
+
readonly returns: KaladaType;
|
|
31
|
+
}
|
|
32
|
+
interface KaladaFunctionParameter {
|
|
33
|
+
readonly name: string;
|
|
34
|
+
readonly type: KaladaType;
|
|
35
|
+
}
|
|
36
|
+
interface FunctionExpression<R extends JsonValue> {
|
|
37
|
+
readonly kind: "function";
|
|
38
|
+
readonly parameters: readonly KaladaFunctionParameter[];
|
|
39
|
+
readonly returns: KaladaType;
|
|
40
|
+
readonly body: KaladaV1Expression<R>;
|
|
41
|
+
}
|
|
42
|
+
interface CallExpression<R extends JsonValue> {
|
|
43
|
+
readonly kind: "call";
|
|
44
|
+
readonly callee: KaladaV1Expression<R>;
|
|
45
|
+
readonly arguments: readonly KaladaV1Expression<R>[];
|
|
46
|
+
}
|
|
47
|
+
interface NamedFunction<R extends JsonValue> {
|
|
48
|
+
readonly name: string;
|
|
49
|
+
readonly parameters: readonly KaladaFunctionParameter[];
|
|
50
|
+
readonly returns: KaladaType;
|
|
51
|
+
readonly body: KaladaV1Expression<R>;
|
|
52
|
+
}
|
|
53
|
+
interface FunctionGroupExpression<R extends JsonValue> {
|
|
54
|
+
readonly kind: "function-group";
|
|
55
|
+
readonly functions: readonly NamedFunction<R>[];
|
|
56
|
+
readonly body: KaladaV1Expression<R>;
|
|
57
|
+
}
|
|
58
|
+
type KaladaCoreFunctionName = "map" | "filter" | "some" | "every";
|
|
59
|
+
interface CoreFunctionExpression {
|
|
60
|
+
readonly kind: "core-function";
|
|
61
|
+
readonly name: KaladaCoreFunctionName;
|
|
62
|
+
}
|
|
12
63
|
interface InstantExpression {
|
|
13
64
|
readonly kind: "instant";
|
|
14
65
|
readonly milliseconds: number;
|
|
@@ -68,11 +119,17 @@ interface KaladaV1Program<R extends JsonValue = string> {
|
|
|
68
119
|
readonly profile: "kalada-v1";
|
|
69
120
|
readonly expression: KaladaV1Expression<R>;
|
|
70
121
|
}
|
|
71
|
-
type KaladaV1DiagnosticCode = "KALADA_INVALID_INPUT" | "KALADA_LIMIT_EXCEEDED" | "KALADA_INVALID_REFERENCE" | "KALADA_MATCH_MISSING_ARM" | "KALADA_MATCH_DUPLICATE_ARM" | "KALADA_MATCH_UNKNOWN_ARM" | "KALADA_MATCH_UNREACHABLE_ARM" | "KALADA_MATCH_TYPE_MISMATCH" | "KALADA_REFERENCE_ERROR" | "KALADA_REFERENCE_MISSING" | "KALADA_REFERENCE_DENIED" | "KALADA_ASYNC_UNSUPPORTED" | "KALADA_INVALID_RESULT" | "KALADA_EVALUATION_LIMIT" | "KALADA_INSTANT_REQUIRED" | "KALADA_TEMPORAL_TYPE_MISMATCH" | "KALADA_TEMPORAL_OVERFLOW" | "KALADA_CLOCK_ERROR" | "KALADA_INVALID_CLOCK";
|
|
122
|
+
type KaladaV1DiagnosticCode = "KALADA_INVALID_INPUT" | "KALADA_LIMIT_EXCEEDED" | "KALADA_INVALID_REFERENCE" | "KALADA_MATCH_MISSING_ARM" | "KALADA_MATCH_DUPLICATE_ARM" | "KALADA_MATCH_UNKNOWN_ARM" | "KALADA_MATCH_UNREACHABLE_ARM" | "KALADA_MATCH_TYPE_MISMATCH" | "KALADA_REFERENCE_ERROR" | "KALADA_REFERENCE_MISSING" | "KALADA_REFERENCE_DENIED" | "KALADA_ASYNC_UNSUPPORTED" | "KALADA_INVALID_RESULT" | "KALADA_EVALUATION_LIMIT" | "KALADA_INSTANT_REQUIRED" | "KALADA_TEMPORAL_TYPE_MISMATCH" | "KALADA_TEMPORAL_OVERFLOW" | "KALADA_CLOCK_ERROR" | "KALADA_INVALID_CLOCK" | "KALADA_DUPLICATE_BINDING" | "KALADA_INVALID_FUNCTION_TYPE" | "KALADA_CAPTURE_LIMIT" | "KALADA_NOT_CALLABLE" | "KALADA_FUNCTION_ARITY" | "KALADA_FUNCTION_TYPE_MISMATCH" | "KALADA_CLOSURE_LIMIT" | "KALADA_CALL_DEPTH_LIMIT" | "KALADA_CONTINUATION_LIMIT" | "KALADA_COLLECTION_TYPE_MISMATCH" | "KALADA_COLLECTION_LIMIT" | "KALADA_FUNCTION_ESCAPE";
|
|
123
|
+
interface KaladaV1DiagnosticContextFrame {
|
|
124
|
+
readonly kind: "function-call" | "core-call";
|
|
125
|
+
readonly name: string | null;
|
|
126
|
+
readonly path: readonly (string | number)[];
|
|
127
|
+
}
|
|
72
128
|
interface KaladaV1Diagnostic {
|
|
73
129
|
readonly code: KaladaV1DiagnosticCode;
|
|
74
130
|
readonly path: readonly (string | number)[];
|
|
75
131
|
readonly message: string;
|
|
132
|
+
readonly context?: readonly KaladaV1DiagnosticContextFrame[];
|
|
76
133
|
}
|
|
77
134
|
type KaladaV1Outcome<T> = {
|
|
78
135
|
readonly ok: true;
|
|
@@ -90,13 +147,29 @@ interface KaladaV1Limits {
|
|
|
90
147
|
readonly maxReferenceLength: number;
|
|
91
148
|
readonly maxEvaluationSteps: number;
|
|
92
149
|
}
|
|
150
|
+
interface KaladaV1FunctionLimits {
|
|
151
|
+
readonly maxFunctionParameters: number;
|
|
152
|
+
readonly maxFunctionGroupSize: number;
|
|
153
|
+
readonly maxCapturesPerClosure: number;
|
|
154
|
+
readonly maxCapturedBindings: number;
|
|
155
|
+
readonly maxClosures: number;
|
|
156
|
+
readonly maxCallDepth: number;
|
|
157
|
+
readonly maxContinuationFrames: number;
|
|
158
|
+
readonly maxCollectionLength: number;
|
|
159
|
+
readonly maxCollectionIterations: number;
|
|
160
|
+
}
|
|
161
|
+
interface KaladaV1FunctionCapture {
|
|
162
|
+
readonly path: readonly (string | number)[];
|
|
163
|
+
readonly name: string | null;
|
|
164
|
+
readonly captures: readonly string[];
|
|
165
|
+
}
|
|
93
166
|
interface KaladaV1ReferenceCodec<R extends JsonValue> {
|
|
94
167
|
readonly validate: (input: unknown) => input is R;
|
|
95
168
|
readonly canonicalize?: (reference: R) => R;
|
|
96
169
|
}
|
|
97
170
|
interface KaladaV1Options<R extends JsonValue> {
|
|
98
171
|
readonly reference?: KaladaV1ReferenceCodec<R>;
|
|
99
|
-
readonly limits?: Partial<KaladaV1Limits>;
|
|
172
|
+
readonly limits?: Partial<KaladaV1Limits & KaladaV1FunctionLimits>;
|
|
100
173
|
}
|
|
101
174
|
type KaladaV1Resolution = {
|
|
102
175
|
readonly found: true;
|
|
@@ -113,8 +186,9 @@ type KaladaV1Clock = () => InstantValue;
|
|
|
113
186
|
interface CompiledKaladaV1Program<R extends JsonValue> {
|
|
114
187
|
readonly program: KaladaV1Program<R>;
|
|
115
188
|
readonly dependencies: readonly R[];
|
|
189
|
+
readonly functions: readonly KaladaV1FunctionCapture[];
|
|
116
190
|
evaluate(resolve: KaladaV1Resolver<R>, inputs?: KaladaV1EvaluationInputs): KaladaV1Outcome<KaladaValue>;
|
|
117
191
|
evaluateWithClock(resolve: KaladaV1Resolver<R>, clock: KaladaV1Clock): KaladaV1Outcome<KaladaValue>;
|
|
118
192
|
}
|
|
119
193
|
|
|
120
|
-
export type { BindingExpression, CompiledKaladaV1Program, CurrentInstantExpression, DurationExpression, InstantExpression, KaladaV1Clock, KaladaV1Diagnostic, KaladaV1DiagnosticCode, KaladaV1EvaluationInputs, KaladaV1Expression, KaladaV1Limits, KaladaV1Options, KaladaV1Outcome, KaladaV1Program, KaladaV1ReferenceCodec, KaladaV1Resolution, KaladaV1Resolver, MatchArm, MatchExpression, OptionExpression, ResultExpression, TemporalArithmeticExpression, TemporalComparisonExpression };
|
|
194
|
+
export type { BindingExpression, CallExpression, CompiledKaladaV1Program, CoreFunctionExpression, CurrentInstantExpression, DurationExpression, FunctionExpression, FunctionGroupExpression, InstantExpression, KaladaCoreFunctionName, KaladaFunctionParameter, KaladaFunctionType, KaladaPrimitiveTypeName, KaladaType, KaladaV1Clock, KaladaV1Diagnostic, KaladaV1DiagnosticCode, KaladaV1DiagnosticContextFrame, KaladaV1EvaluationInputs, KaladaV1Expression, KaladaV1FunctionCapture, KaladaV1FunctionLimits, KaladaV1Limits, KaladaV1Options, KaladaV1Outcome, KaladaV1Program, KaladaV1ReferenceCodec, KaladaV1Resolution, KaladaV1Resolver, MatchArm, MatchExpression, NamedFunction, OptionExpression, ResultExpression, TemporalArithmeticExpression, TemporalComparisonExpression };
|
|
@@ -8,7 +8,58 @@ type KaladaV1Expression<R extends JsonValue = string> = {
|
|
|
8
8
|
} | {
|
|
9
9
|
readonly kind: "ref";
|
|
10
10
|
readonly ref: R;
|
|
11
|
-
} | BindingExpression<R> | OptionExpression<R> | ResultExpression<R> | MatchExpression<R> | InstantExpression | DurationExpression | CurrentInstantExpression | TemporalArithmeticExpression<R> | TemporalComparisonExpression<R
|
|
11
|
+
} | BindingExpression<R> | OptionExpression<R> | ResultExpression<R> | MatchExpression<R> | InstantExpression | DurationExpression | CurrentInstantExpression | TemporalArithmeticExpression<R> | TemporalComparisonExpression<R> | FunctionExpression<R> | CallExpression<R> | FunctionGroupExpression<R> | CoreFunctionExpression;
|
|
12
|
+
type KaladaPrimitiveTypeName = "null" | "boolean" | "number" | "string" | "json" | "Instant" | "Duration";
|
|
13
|
+
type KaladaType = {
|
|
14
|
+
readonly kind: "primitive-type";
|
|
15
|
+
readonly name: KaladaPrimitiveTypeName;
|
|
16
|
+
} | {
|
|
17
|
+
readonly kind: "option-type";
|
|
18
|
+
readonly value: KaladaType;
|
|
19
|
+
} | {
|
|
20
|
+
readonly kind: "result-type";
|
|
21
|
+
readonly ok: KaladaType;
|
|
22
|
+
readonly error: KaladaType;
|
|
23
|
+
} | {
|
|
24
|
+
readonly kind: "array-type";
|
|
25
|
+
readonly element: KaladaType;
|
|
26
|
+
} | KaladaFunctionType;
|
|
27
|
+
interface KaladaFunctionType {
|
|
28
|
+
readonly kind: "function-type";
|
|
29
|
+
readonly parameters: readonly KaladaType[];
|
|
30
|
+
readonly returns: KaladaType;
|
|
31
|
+
}
|
|
32
|
+
interface KaladaFunctionParameter {
|
|
33
|
+
readonly name: string;
|
|
34
|
+
readonly type: KaladaType;
|
|
35
|
+
}
|
|
36
|
+
interface FunctionExpression<R extends JsonValue> {
|
|
37
|
+
readonly kind: "function";
|
|
38
|
+
readonly parameters: readonly KaladaFunctionParameter[];
|
|
39
|
+
readonly returns: KaladaType;
|
|
40
|
+
readonly body: KaladaV1Expression<R>;
|
|
41
|
+
}
|
|
42
|
+
interface CallExpression<R extends JsonValue> {
|
|
43
|
+
readonly kind: "call";
|
|
44
|
+
readonly callee: KaladaV1Expression<R>;
|
|
45
|
+
readonly arguments: readonly KaladaV1Expression<R>[];
|
|
46
|
+
}
|
|
47
|
+
interface NamedFunction<R extends JsonValue> {
|
|
48
|
+
readonly name: string;
|
|
49
|
+
readonly parameters: readonly KaladaFunctionParameter[];
|
|
50
|
+
readonly returns: KaladaType;
|
|
51
|
+
readonly body: KaladaV1Expression<R>;
|
|
52
|
+
}
|
|
53
|
+
interface FunctionGroupExpression<R extends JsonValue> {
|
|
54
|
+
readonly kind: "function-group";
|
|
55
|
+
readonly functions: readonly NamedFunction<R>[];
|
|
56
|
+
readonly body: KaladaV1Expression<R>;
|
|
57
|
+
}
|
|
58
|
+
type KaladaCoreFunctionName = "map" | "filter" | "some" | "every";
|
|
59
|
+
interface CoreFunctionExpression {
|
|
60
|
+
readonly kind: "core-function";
|
|
61
|
+
readonly name: KaladaCoreFunctionName;
|
|
62
|
+
}
|
|
12
63
|
interface InstantExpression {
|
|
13
64
|
readonly kind: "instant";
|
|
14
65
|
readonly milliseconds: number;
|
|
@@ -68,11 +119,17 @@ interface KaladaV1Program<R extends JsonValue = string> {
|
|
|
68
119
|
readonly profile: "kalada-v1";
|
|
69
120
|
readonly expression: KaladaV1Expression<R>;
|
|
70
121
|
}
|
|
71
|
-
type KaladaV1DiagnosticCode = "KALADA_INVALID_INPUT" | "KALADA_LIMIT_EXCEEDED" | "KALADA_INVALID_REFERENCE" | "KALADA_MATCH_MISSING_ARM" | "KALADA_MATCH_DUPLICATE_ARM" | "KALADA_MATCH_UNKNOWN_ARM" | "KALADA_MATCH_UNREACHABLE_ARM" | "KALADA_MATCH_TYPE_MISMATCH" | "KALADA_REFERENCE_ERROR" | "KALADA_REFERENCE_MISSING" | "KALADA_REFERENCE_DENIED" | "KALADA_ASYNC_UNSUPPORTED" | "KALADA_INVALID_RESULT" | "KALADA_EVALUATION_LIMIT" | "KALADA_INSTANT_REQUIRED" | "KALADA_TEMPORAL_TYPE_MISMATCH" | "KALADA_TEMPORAL_OVERFLOW" | "KALADA_CLOCK_ERROR" | "KALADA_INVALID_CLOCK";
|
|
122
|
+
type KaladaV1DiagnosticCode = "KALADA_INVALID_INPUT" | "KALADA_LIMIT_EXCEEDED" | "KALADA_INVALID_REFERENCE" | "KALADA_MATCH_MISSING_ARM" | "KALADA_MATCH_DUPLICATE_ARM" | "KALADA_MATCH_UNKNOWN_ARM" | "KALADA_MATCH_UNREACHABLE_ARM" | "KALADA_MATCH_TYPE_MISMATCH" | "KALADA_REFERENCE_ERROR" | "KALADA_REFERENCE_MISSING" | "KALADA_REFERENCE_DENIED" | "KALADA_ASYNC_UNSUPPORTED" | "KALADA_INVALID_RESULT" | "KALADA_EVALUATION_LIMIT" | "KALADA_INSTANT_REQUIRED" | "KALADA_TEMPORAL_TYPE_MISMATCH" | "KALADA_TEMPORAL_OVERFLOW" | "KALADA_CLOCK_ERROR" | "KALADA_INVALID_CLOCK" | "KALADA_DUPLICATE_BINDING" | "KALADA_INVALID_FUNCTION_TYPE" | "KALADA_CAPTURE_LIMIT" | "KALADA_NOT_CALLABLE" | "KALADA_FUNCTION_ARITY" | "KALADA_FUNCTION_TYPE_MISMATCH" | "KALADA_CLOSURE_LIMIT" | "KALADA_CALL_DEPTH_LIMIT" | "KALADA_CONTINUATION_LIMIT" | "KALADA_COLLECTION_TYPE_MISMATCH" | "KALADA_COLLECTION_LIMIT" | "KALADA_FUNCTION_ESCAPE";
|
|
123
|
+
interface KaladaV1DiagnosticContextFrame {
|
|
124
|
+
readonly kind: "function-call" | "core-call";
|
|
125
|
+
readonly name: string | null;
|
|
126
|
+
readonly path: readonly (string | number)[];
|
|
127
|
+
}
|
|
72
128
|
interface KaladaV1Diagnostic {
|
|
73
129
|
readonly code: KaladaV1DiagnosticCode;
|
|
74
130
|
readonly path: readonly (string | number)[];
|
|
75
131
|
readonly message: string;
|
|
132
|
+
readonly context?: readonly KaladaV1DiagnosticContextFrame[];
|
|
76
133
|
}
|
|
77
134
|
type KaladaV1Outcome<T> = {
|
|
78
135
|
readonly ok: true;
|
|
@@ -90,13 +147,29 @@ interface KaladaV1Limits {
|
|
|
90
147
|
readonly maxReferenceLength: number;
|
|
91
148
|
readonly maxEvaluationSteps: number;
|
|
92
149
|
}
|
|
150
|
+
interface KaladaV1FunctionLimits {
|
|
151
|
+
readonly maxFunctionParameters: number;
|
|
152
|
+
readonly maxFunctionGroupSize: number;
|
|
153
|
+
readonly maxCapturesPerClosure: number;
|
|
154
|
+
readonly maxCapturedBindings: number;
|
|
155
|
+
readonly maxClosures: number;
|
|
156
|
+
readonly maxCallDepth: number;
|
|
157
|
+
readonly maxContinuationFrames: number;
|
|
158
|
+
readonly maxCollectionLength: number;
|
|
159
|
+
readonly maxCollectionIterations: number;
|
|
160
|
+
}
|
|
161
|
+
interface KaladaV1FunctionCapture {
|
|
162
|
+
readonly path: readonly (string | number)[];
|
|
163
|
+
readonly name: string | null;
|
|
164
|
+
readonly captures: readonly string[];
|
|
165
|
+
}
|
|
93
166
|
interface KaladaV1ReferenceCodec<R extends JsonValue> {
|
|
94
167
|
readonly validate: (input: unknown) => input is R;
|
|
95
168
|
readonly canonicalize?: (reference: R) => R;
|
|
96
169
|
}
|
|
97
170
|
interface KaladaV1Options<R extends JsonValue> {
|
|
98
171
|
readonly reference?: KaladaV1ReferenceCodec<R>;
|
|
99
|
-
readonly limits?: Partial<KaladaV1Limits>;
|
|
172
|
+
readonly limits?: Partial<KaladaV1Limits & KaladaV1FunctionLimits>;
|
|
100
173
|
}
|
|
101
174
|
type KaladaV1Resolution = {
|
|
102
175
|
readonly found: true;
|
|
@@ -113,8 +186,9 @@ type KaladaV1Clock = () => InstantValue;
|
|
|
113
186
|
interface CompiledKaladaV1Program<R extends JsonValue> {
|
|
114
187
|
readonly program: KaladaV1Program<R>;
|
|
115
188
|
readonly dependencies: readonly R[];
|
|
189
|
+
readonly functions: readonly KaladaV1FunctionCapture[];
|
|
116
190
|
evaluate(resolve: KaladaV1Resolver<R>, inputs?: KaladaV1EvaluationInputs): KaladaV1Outcome<KaladaValue>;
|
|
117
191
|
evaluateWithClock(resolve: KaladaV1Resolver<R>, clock: KaladaV1Clock): KaladaV1Outcome<KaladaValue>;
|
|
118
192
|
}
|
|
119
193
|
|
|
120
|
-
export type { BindingExpression, CompiledKaladaV1Program, CurrentInstantExpression, DurationExpression, InstantExpression, KaladaV1Clock, KaladaV1Diagnostic, KaladaV1DiagnosticCode, KaladaV1EvaluationInputs, KaladaV1Expression, KaladaV1Limits, KaladaV1Options, KaladaV1Outcome, KaladaV1Program, KaladaV1ReferenceCodec, KaladaV1Resolution, KaladaV1Resolver, MatchArm, MatchExpression, OptionExpression, ResultExpression, TemporalArithmeticExpression, TemporalComparisonExpression };
|
|
194
|
+
export type { BindingExpression, CallExpression, CompiledKaladaV1Program, CoreFunctionExpression, CurrentInstantExpression, DurationExpression, FunctionExpression, FunctionGroupExpression, InstantExpression, KaladaCoreFunctionName, KaladaFunctionParameter, KaladaFunctionType, KaladaPrimitiveTypeName, KaladaType, KaladaV1Clock, KaladaV1Diagnostic, KaladaV1DiagnosticCode, KaladaV1DiagnosticContextFrame, KaladaV1EvaluationInputs, KaladaV1Expression, KaladaV1FunctionCapture, KaladaV1FunctionLimits, KaladaV1Limits, KaladaV1Options, KaladaV1Outcome, KaladaV1Program, KaladaV1ReferenceCodec, KaladaV1Resolution, KaladaV1Resolver, MatchArm, MatchExpression, NamedFunction, OptionExpression, ResultExpression, TemporalArithmeticExpression, TemporalComparisonExpression };
|