@elaraai/east 1.0.78 → 1.0.80
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 +1 -1
- package/dist/src/comparison.d.ts.map +1 -1
- package/dist/src/comparison.js +4 -5
- package/dist/src/comparison.js.map +1 -1
- package/dist/src/compile/builtins/array.d.ts +59 -0
- package/dist/src/compile/builtins/array.d.ts.map +1 -0
- package/dist/src/compile/builtins/array.js +656 -0
- package/dist/src/compile/builtins/array.js.map +1 -0
- package/dist/src/compile/builtins/blob.d.ts +18 -0
- package/dist/src/compile/builtins/blob.d.ts.map +1 -0
- package/dist/src/compile/builtins/blob.js +150 -0
- package/dist/src/compile/builtins/blob.js.map +1 -0
- package/dist/src/compile/builtins/compare.d.ts +18 -0
- package/dist/src/compile/builtins/compare.d.ts.map +1 -0
- package/dist/src/compile/builtins/compare.js +52 -0
- package/dist/src/compile/builtins/compare.js.map +1 -0
- package/dist/src/compile/builtins/datetime.d.ts +21 -0
- package/dist/src/compile/builtins/datetime.d.ts.map +1 -0
- package/dist/src/compile/builtins/datetime.js +46 -0
- package/dist/src/compile/builtins/datetime.js.map +1 -0
- package/dist/src/compile/builtins/dict.d.ts +46 -0
- package/dist/src/compile/builtins/dict.d.ts.map +1 -0
- package/dist/src/compile/builtins/dict.js +551 -0
- package/dist/src/compile/builtins/dict.js.map +1 -0
- package/dist/src/compile/builtins/index.d.ts +9 -0
- package/dist/src/compile/builtins/index.d.ts.map +1 -0
- package/dist/src/compile/builtins/index.js +28 -0
- package/dist/src/compile/builtins/index.js.map +1 -0
- package/dist/src/compile/builtins/matrix.d.ts +31 -0
- package/dist/src/compile/builtins/matrix.d.ts.map +1 -0
- package/dist/src/compile/builtins/matrix.js +310 -0
- package/dist/src/compile/builtins/matrix.js.map +1 -0
- package/dist/src/compile/builtins/primitives.d.ts +36 -0
- package/dist/src/compile/builtins/primitives.d.ts.map +1 -0
- package/dist/src/compile/builtins/primitives.js +67 -0
- package/dist/src/compile/builtins/primitives.js.map +1 -0
- package/dist/src/compile/builtins/ref.d.ts +11 -0
- package/dist/src/compile/builtins/ref.d.ts.map +1 -0
- package/dist/src/compile/builtins/ref.js +30 -0
- package/dist/src/compile/builtins/ref.js.map +1 -0
- package/dist/src/compile/builtins/set.d.ts +41 -0
- package/dist/src/compile/builtins/set.d.ts.map +1 -0
- package/dist/src/compile/builtins/set.js +385 -0
- package/dist/src/compile/builtins/set.js.map +1 -0
- package/dist/src/compile/builtins/sparse.d.ts +19 -0
- package/dist/src/compile/builtins/sparse.d.ts.map +1 -0
- package/dist/src/compile/builtins/sparse.js +143 -0
- package/dist/src/compile/builtins/sparse.js.map +1 -0
- package/dist/src/compile/builtins/string.d.ts +34 -0
- package/dist/src/compile/builtins/string.d.ts.map +1 -0
- package/dist/src/compile/builtins/string.js +238 -0
- package/dist/src/compile/builtins/string.js.map +1 -0
- package/dist/src/compile/builtins/vector.d.ts +44 -0
- package/dist/src/compile/builtins/vector.d.ts.map +1 -0
- package/dist/src/compile/builtins/vector.js +463 -0
- package/dist/src/compile/builtins/vector.js.map +1 -0
- package/dist/src/compile/constructors.d.ts +13 -0
- package/dist/src/compile/constructors.d.ts.map +1 -0
- package/dist/src/compile/constructors.js +179 -0
- package/dist/src/compile/constructors.js.map +1 -0
- package/dist/src/compile/control.d.ts +13 -0
- package/dist/src/compile/control.d.ts.map +1 -0
- package/dist/src/compile/control.js +513 -0
- package/dist/src/compile/control.js.map +1 -0
- package/dist/src/compile/functions.d.ts +13 -0
- package/dist/src/compile/functions.d.ts.map +1 -0
- package/dist/src/compile/functions.js +492 -0
- package/dist/src/compile/functions.js.map +1 -0
- package/dist/src/compile/ir.d.ts +19 -0
- package/dist/src/compile/ir.d.ts.map +1 -0
- package/dist/src/compile/ir.js +193 -0
- package/dist/src/compile/ir.js.map +1 -0
- package/dist/src/compile/runtime.d.ts +78 -0
- package/dist/src/compile/runtime.d.ts.map +1 -0
- package/dist/src/compile/runtime.js +111 -0
- package/dist/src/compile/runtime.js.map +1 -0
- package/dist/src/compile/type_parameters.d.ts +4 -0
- package/dist/src/compile/type_parameters.d.ts.map +1 -0
- package/dist/src/compile/type_parameters.js +55 -0
- package/dist/src/compile/type_parameters.js.map +1 -0
- package/dist/src/compile/typed_arrays.d.ts +28 -0
- package/dist/src/compile/typed_arrays.d.ts.map +1 -0
- package/dist/src/compile/typed_arrays.js +77 -0
- package/dist/src/compile/typed_arrays.js.map +1 -0
- package/dist/src/compile.d.ts +6 -41
- package/dist/src/compile.d.ts.map +1 -1
- package/dist/src/compile.js +8 -4415
- package/dist/src/compile.js.map +1 -1
- package/dist/src/compile.open_beast.spec.js +5 -4
- package/dist/src/compile.open_beast.spec.js.map +1 -1
- package/dist/src/containers/sortedmap.d.ts +2 -1
- package/dist/src/containers/sortedmap.d.ts.map +1 -1
- package/dist/src/containers/sortedmap.js +4 -2
- package/dist/src/containers/sortedmap.js.map +1 -1
- package/dist/src/containers/sortedset.d.ts +2 -1
- package/dist/src/containers/sortedset.d.ts.map +1 -1
- package/dist/src/containers/sortedset.js +4 -2
- package/dist/src/containers/sortedset.js.map +1 -1
- package/dist/src/error.d.ts +15 -0
- package/dist/src/error.d.ts.map +1 -1
- package/dist/src/error.js +16 -0
- package/dist/src/error.js.map +1 -1
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/patch/index.d.ts +1 -1
- package/dist/src/patch/index.d.ts.map +1 -1
- package/dist/src/patch/index.js +1 -1
- package/dist/src/patch/index.js.map +1 -1
- package/dist/src/patch/type_of_patch.d.ts +25 -1
- package/dist/src/patch/type_of_patch.d.ts.map +1 -1
- package/dist/src/patch/type_of_patch.js +33 -10
- package/dist/src/patch/type_of_patch.js.map +1 -1
- package/dist/src/platform.spec.js +19 -1
- package/dist/src/platform.spec.js.map +1 -1
- package/dist/src/runner_protocol.d.ts +316 -0
- package/dist/src/runner_protocol.d.ts.map +1 -0
- package/dist/src/runner_protocol.js +135 -0
- package/dist/src/runner_protocol.js.map +1 -0
- package/dist/src/serialization/beast2/index.d.ts +21 -5
- package/dist/src/serialization/beast2/index.d.ts.map +1 -1
- package/dist/src/serialization/beast2/index.js +12 -2
- package/dist/src/serialization/beast2/index.js.map +1 -1
- package/dist/src/serialization/beast2/index.spec.js +84 -3
- package/dist/src/serialization/beast2/index.spec.js.map +1 -1
- package/dist/src/serialization/beast2/shared.d.ts +32 -3
- package/dist/src/serialization/beast2/shared.d.ts.map +1 -1
- package/dist/src/serialization/beast2/shared.js +135 -10
- package/dist/src/serialization/beast2/shared.js.map +1 -1
- package/dist/src/serialization/beast2/v4/container.d.ts.map +1 -1
- package/dist/src/serialization/beast2/v4/container.js +5 -3
- package/dist/src/serialization/beast2/v4/container.js.map +1 -1
- package/dist/src/serialization/beast2/v5/aliasing.spec.d.ts +6 -0
- package/dist/src/serialization/beast2/v5/aliasing.spec.d.ts.map +1 -0
- package/dist/src/serialization/beast2/v5/aliasing.spec.js +75 -0
- package/dist/src/serialization/beast2/v5/aliasing.spec.js.map +1 -0
- package/dist/src/serialization/beast2/v5/boundary.d.ts +176 -0
- package/dist/src/serialization/beast2/v5/boundary.d.ts.map +1 -0
- package/dist/src/serialization/beast2/v5/boundary.js +297 -0
- package/dist/src/serialization/beast2/v5/boundary.js.map +1 -0
- package/dist/src/serialization/beast2/v5/boundary.spec.d.ts +6 -0
- package/dist/src/serialization/beast2/v5/boundary.spec.d.ts.map +1 -0
- package/dist/src/serialization/beast2/v5/boundary.spec.js +479 -0
- package/dist/src/serialization/beast2/v5/boundary.spec.js.map +1 -0
- package/dist/src/serialization/beast2/v5/codec.d.ts +6 -5
- package/dist/src/serialization/beast2/v5/codec.d.ts.map +1 -1
- package/dist/src/serialization/beast2/v5/codec.js +18 -3
- package/dist/src/serialization/beast2/v5/codec.js.map +1 -1
- package/dist/src/serialization/beast2/v5/deflate.d.ts +24 -2
- package/dist/src/serialization/beast2/v5/deflate.d.ts.map +1 -1
- package/dist/src/serialization/beast2/v5/deflate.js +47 -12
- package/dist/src/serialization/beast2/v5/deflate.js.map +1 -1
- package/dist/src/serialization/beast2/v5/deflate.spec.js +15 -1
- package/dist/src/serialization/beast2/v5/deflate.spec.js.map +1 -1
- package/dist/src/serialization/beast2/v5/elements.d.ts +64 -0
- package/dist/src/serialization/beast2/v5/elements.d.ts.map +1 -0
- package/dist/src/serialization/beast2/v5/elements.js +320 -0
- package/dist/src/serialization/beast2/v5/elements.js.map +1 -0
- package/dist/src/serialization/beast2/v5/elements.spec.d.ts +6 -0
- package/dist/src/serialization/beast2/v5/elements.spec.d.ts.map +1 -0
- package/dist/src/serialization/beast2/v5/elements.spec.js +161 -0
- package/dist/src/serialization/beast2/v5/elements.spec.js.map +1 -0
- package/dist/src/serialization/beast2/v5/frame-pool.d.ts +62 -21
- package/dist/src/serialization/beast2/v5/frame-pool.d.ts.map +1 -1
- package/dist/src/serialization/beast2/v5/frame-pool.js +138 -27
- package/dist/src/serialization/beast2/v5/frame-pool.js.map +1 -1
- package/dist/src/serialization/beast2/v5/frame-pool.spec.js +198 -71
- package/dist/src/serialization/beast2/v5/frame-pool.spec.js.map +1 -1
- package/dist/src/serialization/beast2/v5/frame-worker.js +25 -15
- package/dist/src/serialization/beast2/v5/frame-worker.js.map +1 -1
- package/dist/src/serialization/beast2/v5/frames.d.ts +22 -12
- package/dist/src/serialization/beast2/v5/frames.d.ts.map +1 -1
- package/dist/src/serialization/beast2/v5/frames.js +52 -27
- package/dist/src/serialization/beast2/v5/frames.js.map +1 -1
- package/dist/src/serialization/beast2/v5/geometry.d.ts +38 -1
- package/dist/src/serialization/beast2/v5/geometry.d.ts.map +1 -1
- package/dist/src/serialization/beast2/v5/geometry.js +73 -1
- package/dist/src/serialization/beast2/v5/geometry.js.map +1 -1
- package/dist/src/serialization/beast2/v5/geometry.spec.js +34 -23
- package/dist/src/serialization/beast2/v5/geometry.spec.js.map +1 -1
- package/dist/src/serialization/beast2/v5/index.spec.js +32 -28
- package/dist/src/serialization/beast2/v5/index.spec.js.map +1 -1
- package/dist/src/serialization/beast2/v5/lazy.d.ts +42 -1
- package/dist/src/serialization/beast2/v5/lazy.d.ts.map +1 -1
- package/dist/src/serialization/beast2/v5/lazy.js +143 -28
- package/dist/src/serialization/beast2/v5/lazy.js.map +1 -1
- package/dist/src/serialization/beast2/v5/lazy.spec.js +102 -24
- package/dist/src/serialization/beast2/v5/lazy.spec.js.map +1 -1
- package/dist/src/serialization/beast2/v5/manifest-writer.d.ts +110 -0
- package/dist/src/serialization/beast2/v5/manifest-writer.d.ts.map +1 -0
- package/dist/src/serialization/beast2/v5/manifest-writer.js +118 -0
- package/dist/src/serialization/beast2/v5/manifest-writer.js.map +1 -0
- package/dist/src/serialization/beast2/v5/manifest-writer.spec.d.ts +6 -0
- package/dist/src/serialization/beast2/v5/manifest-writer.spec.d.ts.map +1 -0
- package/dist/src/serialization/beast2/v5/manifest-writer.spec.js +207 -0
- package/dist/src/serialization/beast2/v5/manifest-writer.spec.js.map +1 -0
- package/dist/src/serialization/beast2/v5/manifest.d.ts +241 -0
- package/dist/src/serialization/beast2/v5/manifest.d.ts.map +1 -0
- package/dist/src/serialization/beast2/v5/manifest.js +233 -0
- package/dist/src/serialization/beast2/v5/manifest.js.map +1 -0
- package/dist/src/serialization/beast2/v5/merge.d.ts +93 -0
- package/dist/src/serialization/beast2/v5/merge.d.ts.map +1 -0
- package/dist/src/serialization/beast2/v5/merge.js +202 -0
- package/dist/src/serialization/beast2/v5/merge.js.map +1 -0
- package/dist/src/serialization/beast2/v5/merge.spec.d.ts +6 -0
- package/dist/src/serialization/beast2/v5/merge.spec.d.ts.map +1 -0
- package/dist/src/serialization/beast2/v5/merge.spec.js +118 -0
- package/dist/src/serialization/beast2/v5/merge.spec.js.map +1 -0
- package/dist/src/serialization/beast2/v5/recut.d.ts +143 -0
- package/dist/src/serialization/beast2/v5/recut.d.ts.map +1 -0
- package/dist/src/serialization/beast2/v5/recut.js +365 -0
- package/dist/src/serialization/beast2/v5/recut.js.map +1 -0
- package/dist/src/serialization/beast2/v5/recut.spec.d.ts +6 -0
- package/dist/src/serialization/beast2/v5/recut.spec.d.ts.map +1 -0
- package/dist/src/serialization/beast2/v5/recut.spec.js +215 -0
- package/dist/src/serialization/beast2/v5/recut.spec.js.map +1 -0
- package/dist/src/serialization/beast2/v5/runs.d.ts +148 -0
- package/dist/src/serialization/beast2/v5/runs.d.ts.map +1 -0
- package/dist/src/serialization/beast2/v5/runs.js +260 -0
- package/dist/src/serialization/beast2/v5/runs.js.map +1 -0
- package/dist/src/serialization/beast2/v5/runs.spec.d.ts +6 -0
- package/dist/src/serialization/beast2/v5/runs.spec.d.ts.map +1 -0
- package/dist/src/serialization/beast2/v5/runs.spec.js +182 -0
- package/dist/src/serialization/beast2/v5/runs.spec.js.map +1 -0
- package/dist/src/serialization/beast2/v5/sha256.d.ts +19 -0
- package/dist/src/serialization/beast2/v5/sha256.d.ts.map +1 -0
- package/dist/src/serialization/beast2/v5/sha256.js +103 -0
- package/dist/src/serialization/beast2/v5/sha256.js.map +1 -0
- package/dist/src/serialization/beast2/v5/sha256.spec.d.ts +6 -0
- package/dist/src/serialization/beast2/v5/sha256.spec.d.ts.map +1 -0
- package/dist/src/serialization/beast2/v5/sha256.spec.js +42 -0
- package/dist/src/serialization/beast2/v5/sha256.spec.js.map +1 -0
- package/dist/src/serialization/beast2/v5/stream.d.ts +273 -86
- package/dist/src/serialization/beast2/v5/stream.d.ts.map +1 -1
- package/dist/src/serialization/beast2/v5/stream.js +576 -244
- package/dist/src/serialization/beast2/v5/stream.js.map +1 -1
- package/dist/src/serialization/beast2/v5/sync-reader.spec.js +24 -10
- package/dist/src/serialization/beast2/v5/sync-reader.spec.js.map +1 -1
- package/dist/src/serialization/index.d.ts +1 -1
- package/dist/src/serialization/index.d.ts.map +1 -1
- package/dist/src/serialization/index.js +1 -1
- package/dist/src/serialization/index.js.map +1 -1
- package/dist/src/serialization/json.d.ts +28 -0
- package/dist/src/serialization/json.d.ts.map +1 -1
- package/dist/src/serialization/json.js +141 -30
- package/dist/src/serialization/json.js.map +1 -1
- package/dist/src/serialization/json.spec.js +47 -2
- package/dist/src/serialization/json.spec.js.map +1 -1
- package/dist/src/serialization/json_schema.d.ts +15 -11
- package/dist/src/serialization/json_schema.d.ts.map +1 -1
- package/dist/src/serialization/json_schema.js +21 -36
- package/dist/src/serialization/json_schema.js.map +1 -1
- package/dist/src/serialization/json_schema.spec.js +26 -32
- package/dist/src/serialization/json_schema.spec.js.map +1 -1
- package/dist/src/serialization/json_schema_to_type.d.ts +10 -5
- package/dist/src/serialization/json_schema_to_type.d.ts.map +1 -1
- package/dist/src/serialization/json_schema_to_type.js +13 -6
- package/dist/src/serialization/json_schema_to_type.js.map +1 -1
- package/dist/src/serialization/json_schema_to_type.spec.js +19 -0
- package/dist/src/serialization/json_schema_to_type.spec.js.map +1 -1
- package/dist/src/string_order.d.ts +36 -0
- package/dist/src/string_order.d.ts.map +1 -0
- package/dist/src/string_order.js +64 -0
- package/dist/src/string_order.js.map +1 -0
- package/dist/src/string_order.spec.d.ts +6 -0
- package/dist/src/string_order.spec.d.ts.map +1 -0
- package/dist/src/string_order.spec.js +79 -0
- package/dist/src/string_order.spec.js.map +1 -0
- package/dist/src/type_of_type.d.ts +17 -0
- package/dist/src/type_of_type.d.ts.map +1 -1
- package/dist/src/type_of_type.js +66 -0
- package/dist/src/type_of_type.js.map +1 -1
- package/dist/src/type_of_type.to_etv.spec.js +69 -1
- package/dist/src/type_of_type.to_etv.spec.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,492 @@
|
|
|
1
|
+
import { builtin_evaluators } from "./builtins/index.js";
|
|
2
|
+
import { compile_internal } from "./ir.js";
|
|
3
|
+
import { BreakException, ContinueException, EAST_CAPTURES_SYMBOL, EAST_IR_SYMBOL, EAST_SOURCE_MAP_SYMBOL, getContextValue, lazyReadErrorAt, ReturnException } from "./runtime.js";
|
|
4
|
+
import { variant } from "../containers/variant.js";
|
|
5
|
+
import { EastError } from "../error.js";
|
|
6
|
+
/** Compiles the function definitions, calls, and builtin and platform calls. */
|
|
7
|
+
export function compile_functions(ir, ctx, platform, asyncPlatformFns, platformDef, compilingNodes, source_map) {
|
|
8
|
+
if (ir.type === "Function") {
|
|
9
|
+
// Compile-time type context for body compilation
|
|
10
|
+
const typeCtx = {};
|
|
11
|
+
for (const variable of ir.value.captures) {
|
|
12
|
+
typeCtx[variable.value.name] = variable.value.type;
|
|
13
|
+
}
|
|
14
|
+
for (const parameter of ir.value.parameters) {
|
|
15
|
+
typeCtx[parameter.value.name] = parameter.value.type;
|
|
16
|
+
}
|
|
17
|
+
const compiled_body = compile_internal(ir.value.body, typeCtx, platform, asyncPlatformFns, platformDef, true, compilingNodes);
|
|
18
|
+
const capture_names = ir.value.captures.map(v => v.value.name);
|
|
19
|
+
const parameter_names = ir.value.parameters.map(v => v.value.name);
|
|
20
|
+
// Store original IR for potential serialization
|
|
21
|
+
const originalIR = ir;
|
|
22
|
+
return (ctx) => {
|
|
23
|
+
// Runtime context for captured values
|
|
24
|
+
const captureCtx = {};
|
|
25
|
+
for (const name of capture_names) {
|
|
26
|
+
captureCtx[name] = getContextValue(ctx, name);
|
|
27
|
+
}
|
|
28
|
+
const fn = (...args) => {
|
|
29
|
+
const fnCtx = { ...captureCtx };
|
|
30
|
+
parameter_names.forEach((name, i) => fnCtx[name] = variant("value", args[i]));
|
|
31
|
+
return compiled_body(fnCtx);
|
|
32
|
+
};
|
|
33
|
+
// Attach IR to function for serialization support
|
|
34
|
+
Object.defineProperty(fn, EAST_IR_SYMBOL, {
|
|
35
|
+
value: originalIR,
|
|
36
|
+
writable: false,
|
|
37
|
+
enumerable: false,
|
|
38
|
+
configurable: false
|
|
39
|
+
});
|
|
40
|
+
// Attach capture values for serialization support
|
|
41
|
+
Object.defineProperty(fn, EAST_CAPTURES_SYMBOL, {
|
|
42
|
+
value: captureCtx,
|
|
43
|
+
writable: false,
|
|
44
|
+
enumerable: false,
|
|
45
|
+
configurable: false
|
|
46
|
+
});
|
|
47
|
+
// Propagate source map from enclosing compilation scope
|
|
48
|
+
if (source_map) {
|
|
49
|
+
Object.defineProperty(fn, EAST_SOURCE_MAP_SYMBOL, {
|
|
50
|
+
value: source_map,
|
|
51
|
+
writable: false,
|
|
52
|
+
enumerable: false,
|
|
53
|
+
configurable: false
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
return fn;
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
else if (ir.type === "AsyncFunction") {
|
|
60
|
+
// Compile-time type context for body compilation
|
|
61
|
+
const typeCtx = {};
|
|
62
|
+
for (const variable of ir.value.captures) {
|
|
63
|
+
typeCtx[variable.value.name] = variable.value.type;
|
|
64
|
+
}
|
|
65
|
+
for (const parameter of ir.value.parameters) {
|
|
66
|
+
typeCtx[parameter.value.name] = parameter.value.type;
|
|
67
|
+
}
|
|
68
|
+
const compiled_body = compile_internal(ir.value.body, typeCtx, platform, asyncPlatformFns, platformDef, true, compilingNodes);
|
|
69
|
+
const capture_names = ir.value.captures.map(v => v.value.name);
|
|
70
|
+
const parameter_names = ir.value.parameters.map(v => v.value.name);
|
|
71
|
+
// Store original IR for potential serialization
|
|
72
|
+
const originalIR = ir;
|
|
73
|
+
return (ctx) => {
|
|
74
|
+
// Runtime context for captured values
|
|
75
|
+
const captureCtx = {};
|
|
76
|
+
for (const name of capture_names) {
|
|
77
|
+
captureCtx[name] = getContextValue(ctx, name);
|
|
78
|
+
}
|
|
79
|
+
const fn = (...args) => {
|
|
80
|
+
const fnCtx = { ...captureCtx };
|
|
81
|
+
parameter_names.forEach((name, i) => fnCtx[name] = variant("value", args[i]));
|
|
82
|
+
return compiled_body(fnCtx); // Promise can pass through in tail position
|
|
83
|
+
};
|
|
84
|
+
// Attach IR to function for serialization support
|
|
85
|
+
Object.defineProperty(fn, EAST_IR_SYMBOL, {
|
|
86
|
+
value: originalIR,
|
|
87
|
+
writable: false,
|
|
88
|
+
enumerable: false,
|
|
89
|
+
configurable: false
|
|
90
|
+
});
|
|
91
|
+
// Attach capture values for serialization support
|
|
92
|
+
Object.defineProperty(fn, EAST_CAPTURES_SYMBOL, {
|
|
93
|
+
value: captureCtx,
|
|
94
|
+
writable: false,
|
|
95
|
+
enumerable: false,
|
|
96
|
+
configurable: false
|
|
97
|
+
});
|
|
98
|
+
// Propagate source map from enclosing compilation scope
|
|
99
|
+
if (source_map) {
|
|
100
|
+
Object.defineProperty(fn, EAST_SOURCE_MAP_SYMBOL, {
|
|
101
|
+
value: source_map,
|
|
102
|
+
writable: false,
|
|
103
|
+
enumerable: false,
|
|
104
|
+
configurable: false
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
return fn;
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
else if (ir.type === "Call") {
|
|
111
|
+
const compiled_f = compile_internal(ir.value.function, ctx, platform, asyncPlatformFns, platformDef, false, compilingNodes);
|
|
112
|
+
const compiled_args = ir.value.arguments.map(argument => compile_internal(argument, ctx, platform, asyncPlatformFns, platformDef, false, compilingNodes));
|
|
113
|
+
const loc_id = ir.value.loc_id;
|
|
114
|
+
if (ir.value.isAsync) {
|
|
115
|
+
// need to await the arguments
|
|
116
|
+
return async (ctx) => {
|
|
117
|
+
try {
|
|
118
|
+
const args = [];
|
|
119
|
+
for (const compiled_arg of compiled_args) {
|
|
120
|
+
args.push(await compiled_arg(ctx));
|
|
121
|
+
}
|
|
122
|
+
return compiled_f(ctx)(...args);
|
|
123
|
+
}
|
|
124
|
+
catch (e) {
|
|
125
|
+
if (e instanceof ReturnException) {
|
|
126
|
+
return e.value;
|
|
127
|
+
}
|
|
128
|
+
else if (e instanceof EastError) {
|
|
129
|
+
// TODO: push loc_id to EastError once SourceMap resolution is wired up
|
|
130
|
+
throw (e);
|
|
131
|
+
}
|
|
132
|
+
else if (e instanceof ContinueException) {
|
|
133
|
+
throw new Error(`continue failed to find label ${e.label} at loc_id ${loc_id}`);
|
|
134
|
+
}
|
|
135
|
+
else if (e instanceof BreakException) {
|
|
136
|
+
throw new Error(`break failed to find label ${e.label} at loc_id ${loc_id}`);
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
throw (e);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
return (ctx) => {
|
|
146
|
+
try {
|
|
147
|
+
return compiled_f(ctx)(...compiled_args.map(arg => arg(ctx)));
|
|
148
|
+
}
|
|
149
|
+
catch (e) {
|
|
150
|
+
if (e instanceof ReturnException) {
|
|
151
|
+
return e.value;
|
|
152
|
+
}
|
|
153
|
+
else if (e instanceof EastError) {
|
|
154
|
+
// TODO: push loc_id to EastError once SourceMap resolution is wired up
|
|
155
|
+
throw (e);
|
|
156
|
+
}
|
|
157
|
+
else if (e instanceof ContinueException) {
|
|
158
|
+
throw new Error(`continue failed to find label ${e.label} at loc_id ${loc_id}`);
|
|
159
|
+
}
|
|
160
|
+
else if (e instanceof BreakException) {
|
|
161
|
+
throw new Error(`break failed to find label ${e.label} at loc_id ${loc_id}`);
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
throw (e);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
else if (ir.type === "CallAsync") {
|
|
171
|
+
const compiled_f = compile_internal(ir.value.function, ctx, platform, asyncPlatformFns, platformDef, false, compilingNodes);
|
|
172
|
+
const compiled_args = ir.value.arguments.map(argument => compile_internal(argument, ctx, platform, asyncPlatformFns, platformDef, false, compilingNodes));
|
|
173
|
+
const loc_id = ir.value.loc_id;
|
|
174
|
+
return async (ctx) => {
|
|
175
|
+
try {
|
|
176
|
+
const args = [];
|
|
177
|
+
for (const compiled_arg of compiled_args) {
|
|
178
|
+
args.push(await compiled_arg(ctx));
|
|
179
|
+
}
|
|
180
|
+
return await compiled_f(ctx)(...args);
|
|
181
|
+
}
|
|
182
|
+
catch (e) {
|
|
183
|
+
if (e instanceof ReturnException) {
|
|
184
|
+
return e.value;
|
|
185
|
+
}
|
|
186
|
+
else if (e instanceof EastError) {
|
|
187
|
+
// TODO: push loc_id to EastError once SourceMap resolution is wired up
|
|
188
|
+
throw (e);
|
|
189
|
+
}
|
|
190
|
+
else if (e instanceof ContinueException) {
|
|
191
|
+
throw new Error(`continue failed to find label ${e.label} at loc_id ${loc_id}`);
|
|
192
|
+
}
|
|
193
|
+
else if (e instanceof BreakException) {
|
|
194
|
+
throw new Error(`break failed to find label ${e.label} at loc_id ${loc_id}`);
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
throw (e);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
else if (ir.type === "Builtin") {
|
|
203
|
+
let argsAsync = false;
|
|
204
|
+
const args = ir.value.arguments.map((a, _i) => {
|
|
205
|
+
if (a.value.isAsync) {
|
|
206
|
+
argsAsync = true;
|
|
207
|
+
}
|
|
208
|
+
return compile_internal(a, ctx, platform, asyncPlatformFns, platformDef, false, compilingNodes);
|
|
209
|
+
});
|
|
210
|
+
// Special optimization for regex builtins with literal pattern/flags
|
|
211
|
+
const loc_id = ir.value.loc_id;
|
|
212
|
+
if ((ir.value.builtin === "RegexContains" || ir.value.builtin === "RegexIndexOf" || ir.value.builtin === "RegexReplace") &&
|
|
213
|
+
ir.value.arguments[1]?.type === "Value" &&
|
|
214
|
+
ir.value.arguments[2]?.type === "Value") {
|
|
215
|
+
if (ir.value.arguments[1].value.value.type !== "String") {
|
|
216
|
+
throw new Error(`Regex builtin pattern argument must be String literal at loc_id ${ir.value.arguments[1].value.loc_id}`);
|
|
217
|
+
}
|
|
218
|
+
if (ir.value.arguments[2].value.value.type !== "String") {
|
|
219
|
+
throw new Error(`Regex builtin flags argument must be String literal at loc_id ${ir.value.arguments[2].value.loc_id}`);
|
|
220
|
+
}
|
|
221
|
+
// Compile regex once at closure compilation time
|
|
222
|
+
const pattern = ir.value.arguments[1].value.value.value;
|
|
223
|
+
const flags = ir.value.arguments[2].value.value.value;
|
|
224
|
+
const textArg = args[0]; // Already compiled text argument
|
|
225
|
+
if (ir.value.builtin === "RegexContains") {
|
|
226
|
+
const compiledRegex = new RegExp(pattern, flags);
|
|
227
|
+
return (ctx) => compiledRegex.test(textArg(ctx));
|
|
228
|
+
}
|
|
229
|
+
else if (ir.value.builtin === "RegexIndexOf") {
|
|
230
|
+
const compiledRegex = new RegExp(pattern, flags);
|
|
231
|
+
return (ctx) => {
|
|
232
|
+
const text = textArg(ctx);
|
|
233
|
+
const codeUnitIndex = text.search(compiledRegex);
|
|
234
|
+
if (codeUnitIndex === -1)
|
|
235
|
+
return -1n;
|
|
236
|
+
// Convert code unit index to codepoint index
|
|
237
|
+
let codepointIndex = 0;
|
|
238
|
+
let codeUnitPos = 0;
|
|
239
|
+
for (const char of text) {
|
|
240
|
+
if (codeUnitPos === codeUnitIndex) {
|
|
241
|
+
return BigInt(codepointIndex);
|
|
242
|
+
}
|
|
243
|
+
codeUnitPos += char.length;
|
|
244
|
+
codepointIndex++;
|
|
245
|
+
}
|
|
246
|
+
return -1n;
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
else { // RegexReplace
|
|
250
|
+
// Precompile regex with global flag for replaceAll semantics
|
|
251
|
+
const globalFlags = flags.includes('g') ? flags : flags + 'g';
|
|
252
|
+
const compiledRegex = new RegExp(pattern, globalFlags);
|
|
253
|
+
// Check if replacement is also constant for full optimization
|
|
254
|
+
if (ir.value.arguments[3]?.type === "Value") {
|
|
255
|
+
if (ir.value.arguments[3].value.value.type !== "String") {
|
|
256
|
+
throw new Error(`RegexReplace builtin replacement argument must be String literal at loc_id ${ir.value.arguments[3].value.loc_id}`);
|
|
257
|
+
}
|
|
258
|
+
// FULL OPTIMIZATION: Pattern, flags, and replacement are all constant
|
|
259
|
+
const replacement = ir.value.arguments[3].value.value.value;
|
|
260
|
+
// Validate replacement string: only allow $$, $1-$9, and $<
|
|
261
|
+
// This is stricter than JavaScript's native behavior but provides clear, consistent semantics
|
|
262
|
+
// and avoids backend-specific features like $&, $`, $'
|
|
263
|
+
let i = 0;
|
|
264
|
+
while (i < replacement.length) {
|
|
265
|
+
const char = replacement[i];
|
|
266
|
+
if (char === '$') {
|
|
267
|
+
i += char.length;
|
|
268
|
+
let char2 = replacement[i];
|
|
269
|
+
if (char2 === undefined) {
|
|
270
|
+
return (_ctx) => { throw new EastError(`invalid regex replacement string: unescaped $ at end of string`, { location: (source_map?.resolve(loc_id) ?? []) }); };
|
|
271
|
+
}
|
|
272
|
+
else if (char2 === '$') {
|
|
273
|
+
i += 1;
|
|
274
|
+
}
|
|
275
|
+
else if (char2 >= '1' && char2 <= '9') {
|
|
276
|
+
i += 1;
|
|
277
|
+
char2 = replacement[i];
|
|
278
|
+
while (char2 !== undefined && char2 >= '0' && char2 <= '9') {
|
|
279
|
+
i += 1;
|
|
280
|
+
char2 = replacement[i];
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
else if (char2 === '<') {
|
|
284
|
+
// Scan until closing >
|
|
285
|
+
i += 1;
|
|
286
|
+
const init_i = i;
|
|
287
|
+
char2 = replacement[i];
|
|
288
|
+
while (true) {
|
|
289
|
+
if (char2 === undefined) {
|
|
290
|
+
return (_ctx) => { throw new EastError(`invalid regex replacement string: unterminated group name in $<...>`, { location: (source_map?.resolve(loc_id) ?? []) }); };
|
|
291
|
+
}
|
|
292
|
+
if (char2 === '>') {
|
|
293
|
+
break;
|
|
294
|
+
}
|
|
295
|
+
if (!((char2 >= '0' && char2 <= '9') || (char2 >= 'a' && char2 <= 'z') || (char2 >= 'A' && char2 <= 'Z') || char2 === '_')) {
|
|
296
|
+
return (_ctx) => { throw new EastError(`invalid regex replacement string: invalid character ${JSON.stringify(char2)} in group name in $<...>`, { location: (source_map?.resolve(loc_id) ?? []) }); };
|
|
297
|
+
}
|
|
298
|
+
i += 1;
|
|
299
|
+
char2 = replacement[i];
|
|
300
|
+
}
|
|
301
|
+
if (i === init_i) {
|
|
302
|
+
return (_ctx) => { throw new EastError(`invalid regex replacement string: empty group name in $<>`, { location: (source_map?.resolve(loc_id) ?? []) }); };
|
|
303
|
+
}
|
|
304
|
+
i += 1; // for closing >
|
|
305
|
+
}
|
|
306
|
+
else {
|
|
307
|
+
return (_ctx) => { throw new EastError(`invalid regex replacement string: unescaped $ at $${char2}`, { location: (source_map?.resolve(loc_id) ?? []) }); };
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
else {
|
|
311
|
+
i += char.length;
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
return (ctx) => {
|
|
315
|
+
const text = textArg(ctx);
|
|
316
|
+
return text.replaceAll(compiledRegex, replacement);
|
|
317
|
+
};
|
|
318
|
+
}
|
|
319
|
+
else {
|
|
320
|
+
// PARTIAL OPTIMIZATION: Pattern and flags constant, replacement dynamic
|
|
321
|
+
const replacementArg = args[3];
|
|
322
|
+
return (ctx) => {
|
|
323
|
+
const text = textArg(ctx);
|
|
324
|
+
const replacement = replacementArg(ctx);
|
|
325
|
+
// Validate replacement string: only allow $$, $1-$9, and $<
|
|
326
|
+
// This is stricter than JavaScript's native behavior but provides clear, consistent semantics
|
|
327
|
+
// and avoids backend-specific features like $&, $`, $'
|
|
328
|
+
let i = 0;
|
|
329
|
+
while (i < replacement.length) {
|
|
330
|
+
const char = replacement[i];
|
|
331
|
+
if (char === '$') {
|
|
332
|
+
i += char.length;
|
|
333
|
+
let char2 = replacement[i];
|
|
334
|
+
if (char2 === undefined) {
|
|
335
|
+
throw new EastError(`invalid regex replacement string: unescaped $ at end of string`, { location: (source_map?.resolve(loc_id) ?? []) });
|
|
336
|
+
}
|
|
337
|
+
else if (char2 === '$') {
|
|
338
|
+
i += 1;
|
|
339
|
+
}
|
|
340
|
+
else if (char2 >= '1' && char2 <= '9') {
|
|
341
|
+
i += 1;
|
|
342
|
+
char2 = replacement[i];
|
|
343
|
+
while (char2 !== undefined && char2 >= '0' && char2 <= '9') {
|
|
344
|
+
i += 1;
|
|
345
|
+
char2 = replacement[i];
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
else if (char2 === '<') {
|
|
349
|
+
// Scan until closing >
|
|
350
|
+
i += 1;
|
|
351
|
+
const init_i = i;
|
|
352
|
+
char2 = replacement[i];
|
|
353
|
+
while (true) {
|
|
354
|
+
if (char2 === undefined) {
|
|
355
|
+
throw new EastError(`invalid regex replacement string: unterminated group name in $<...>`, { location: (source_map?.resolve(loc_id) ?? []) });
|
|
356
|
+
}
|
|
357
|
+
if (char2 === '>') {
|
|
358
|
+
break;
|
|
359
|
+
}
|
|
360
|
+
if (!((char2 >= '0' && char2 <= '9') || (char2 >= 'a' && char2 <= 'z') || (char2 >= 'A' && char2 <= 'Z') || char2 === '_')) {
|
|
361
|
+
throw new EastError(`invalid regex replacement string: invalid character ${JSON.stringify(char2)} in group name in $<...>`, { location: (source_map?.resolve(loc_id) ?? []) });
|
|
362
|
+
}
|
|
363
|
+
i += 1;
|
|
364
|
+
char2 = replacement[i];
|
|
365
|
+
}
|
|
366
|
+
if (i === init_i) {
|
|
367
|
+
throw new EastError(`invalid regex replacement string: empty group name in $<>`, { location: (source_map?.resolve(loc_id) ?? []) });
|
|
368
|
+
}
|
|
369
|
+
i += 1; // for closing >
|
|
370
|
+
}
|
|
371
|
+
else {
|
|
372
|
+
throw new EastError(`invalid regex replacement string: unescaped $ at $${char2}`, { location: (source_map?.resolve(loc_id) ?? []) });
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
else {
|
|
376
|
+
i += char.length;
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
return text.replaceAll(compiledRegex, replacement);
|
|
380
|
+
};
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
// Builtins are synchronous, so a failed read of a lazy input is thrown
|
|
385
|
+
// here in either form.
|
|
386
|
+
const evaluator = builtin_evaluators[ir.value.builtin](ir.value.loc_id, source_map, platformDef, ...ir.value.type_parameters);
|
|
387
|
+
if (argsAsync) {
|
|
388
|
+
return async (ctx) => {
|
|
389
|
+
const args_resolved = [];
|
|
390
|
+
for (const a of args) {
|
|
391
|
+
args_resolved.push(await a(ctx));
|
|
392
|
+
}
|
|
393
|
+
try {
|
|
394
|
+
return evaluator(...args_resolved);
|
|
395
|
+
}
|
|
396
|
+
catch (e) {
|
|
397
|
+
throw lazyReadErrorAt(e, loc_id, source_map);
|
|
398
|
+
}
|
|
399
|
+
};
|
|
400
|
+
}
|
|
401
|
+
else {
|
|
402
|
+
return (ctx) => {
|
|
403
|
+
const args_resolved = args.map(a => a(ctx));
|
|
404
|
+
try {
|
|
405
|
+
return evaluator(...args_resolved);
|
|
406
|
+
}
|
|
407
|
+
catch (e) {
|
|
408
|
+
throw lazyReadErrorAt(e, loc_id, source_map);
|
|
409
|
+
}
|
|
410
|
+
};
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
else if (ir.type === "Platform") {
|
|
414
|
+
const loc_id = ir.value.loc_id;
|
|
415
|
+
let argsAsync = false;
|
|
416
|
+
const args = ir.value.arguments.map(a => {
|
|
417
|
+
if (a.value.isAsync) {
|
|
418
|
+
argsAsync = true;
|
|
419
|
+
}
|
|
420
|
+
return compile_internal(a, ctx, platform, asyncPlatformFns, platformDef, false, compilingNodes);
|
|
421
|
+
});
|
|
422
|
+
// Look up platform function definition to check if generic
|
|
423
|
+
const platformFn = platformDef.find(p => p.name === ir.value.name);
|
|
424
|
+
const typeParams = ir.value.type_parameters ?? [];
|
|
425
|
+
// Get evaluator - for generic functions, call factory with type params
|
|
426
|
+
let evaluator;
|
|
427
|
+
if (typeParams.length > 0 && platformFn?.type_parameters && platformFn.type_parameters.length > 0) {
|
|
428
|
+
// Generic platform function - fn is a factory that takes type params
|
|
429
|
+
if (!platformFn.fn) {
|
|
430
|
+
// Missing generic platform function - create stub that throws at runtime
|
|
431
|
+
const name = ir.value.name;
|
|
432
|
+
evaluator = () => {
|
|
433
|
+
throw new EastError(`Platform function '${name}' is not available`, { location: (source_map?.resolve(loc_id) ?? []) });
|
|
434
|
+
};
|
|
435
|
+
}
|
|
436
|
+
else {
|
|
437
|
+
evaluator = platformFn.fn(...typeParams);
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
else {
|
|
441
|
+
// Non-generic - use platform map for backwards compatibility
|
|
442
|
+
const platformEvaluator = platform[ir.value.name];
|
|
443
|
+
if (platformEvaluator === undefined) {
|
|
444
|
+
// Missing platform function - create stub that throws at runtime
|
|
445
|
+
const name = ir.value.name;
|
|
446
|
+
evaluator = () => {
|
|
447
|
+
throw new EastError(`Platform function '${name}' is not available`, { location: (source_map?.resolve(loc_id) ?? []) });
|
|
448
|
+
};
|
|
449
|
+
}
|
|
450
|
+
else {
|
|
451
|
+
evaluator = platformEvaluator;
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
// A platform function that reads a lazy input can fail the read by
|
|
455
|
+
// throwing or, when it is async, by rejecting its promise; both are
|
|
456
|
+
// raised at this call.
|
|
457
|
+
if (argsAsync) {
|
|
458
|
+
return async (ctx) => {
|
|
459
|
+
const args_resolved = [];
|
|
460
|
+
for (const a of args) {
|
|
461
|
+
args_resolved.push(await a(ctx));
|
|
462
|
+
}
|
|
463
|
+
try {
|
|
464
|
+
return await evaluator(...args_resolved);
|
|
465
|
+
}
|
|
466
|
+
catch (e) {
|
|
467
|
+
throw lazyReadErrorAt(e, loc_id, source_map);
|
|
468
|
+
}
|
|
469
|
+
};
|
|
470
|
+
}
|
|
471
|
+
else {
|
|
472
|
+
return (ctx) => {
|
|
473
|
+
const args_resolved = args.map(a => a(ctx));
|
|
474
|
+
let result;
|
|
475
|
+
try {
|
|
476
|
+
result = evaluator(...args_resolved);
|
|
477
|
+
}
|
|
478
|
+
catch (e) {
|
|
479
|
+
throw lazyReadErrorAt(e, loc_id, source_map);
|
|
480
|
+
}
|
|
481
|
+
// An async platform function's promise is returned, as the caller awaits it.
|
|
482
|
+
return result instanceof Promise
|
|
483
|
+
? result.catch((e) => { throw lazyReadErrorAt(e, loc_id, source_map); })
|
|
484
|
+
: result;
|
|
485
|
+
};
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
else {
|
|
489
|
+
throw new Error(`Unhandled IR type ${ir.type} at loc_id ${ir.value.loc_id}`); // The `satisfies never` here ensures that this branch is unreachable if all IR types are handled
|
|
490
|
+
}
|
|
491
|
+
}
|
|
492
|
+
//# sourceMappingURL=functions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"functions.js","sourceRoot":"","sources":["../../../src/compile/functions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
3
|
+
* Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
|
|
4
|
+
*/
|
|
5
|
+
import type { AnalyzedIR } from "../analyze.js";
|
|
6
|
+
import { type RuntimeContext } from "./runtime.js";
|
|
7
|
+
import type { IR } from "../ir.js";
|
|
8
|
+
import type { PlatformFunction } from "../platform.js";
|
|
9
|
+
import type { EastTypeValue } from "../type_of_type.js";
|
|
10
|
+
/** Compile `IR` into a JavaScript function using a closure-compiler technique.
|
|
11
|
+
* This should execute faster than a simple tree-walking interpreter, but slower than hand-written Javascript.
|
|
12
|
+
*
|
|
13
|
+
* A "context" of the current variables in scope is given. For toplevel function IR, provide `{}`.
|
|
14
|
+
* A "platform" is provided with JavaScript functions to perform effects, like logging. If no effects are needed, simply provide `{}`.
|
|
15
|
+
*
|
|
16
|
+
* @internal
|
|
17
|
+
*/
|
|
18
|
+
export declare function compile_internal(ir: AnalyzedIR, ctx: Record<string, EastTypeValue>, platform: Record<string, (...args: any[]) => any>, asyncPlatformFns: Set<string>, platformDef: PlatformFunction[], fresh_ctx?: boolean, compilingNodes?: Set<IR>): (ctx: RuntimeContext) => any;
|
|
19
|
+
//# sourceMappingURL=ir.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ir.d.ts","sourceRoot":"","sources":["../../../src/compile/ir.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAIhD,OAAO,EAAmC,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAEpF,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAEnC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAKxD;;;;;;;EAOE;AACF,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,EAAE,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,gBAAgB,EAAE,EAAE,SAAS,GAAE,OAAc,EAAE,cAAc,GAAE,GAAG,CAAC,EAAE,CAAa,GAAG,CAAC,GAAG,EAAE,cAAc,KAAK,GAAG,CA0JpS"}
|