@elaraai/east 0.0.1-beta.2 → 0.0.1-beta.20

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.
Files changed (110) hide show
  1. package/LICENSE.md +15 -666
  2. package/README.md +30 -8
  3. package/dist/src/ast_to_ir.d.ts +6 -0
  4. package/dist/src/ast_to_ir.d.ts.map +1 -1
  5. package/dist/src/ast_to_ir.js +33 -1
  6. package/dist/src/ast_to_ir.js.map +1 -1
  7. package/dist/src/builtins.d.ts +1 -1
  8. package/dist/src/builtins.d.ts.map +1 -1
  9. package/dist/src/builtins.js +10 -0
  10. package/dist/src/builtins.js.map +1 -1
  11. package/dist/src/comparison.d.ts.map +1 -1
  12. package/dist/src/comparison.js +12 -4
  13. package/dist/src/comparison.js.map +1 -1
  14. package/dist/src/compile.d.ts +7 -1
  15. package/dist/src/compile.d.ts.map +1 -1
  16. package/dist/src/compile.js +219 -172
  17. package/dist/src/compile.js.map +1 -1
  18. package/dist/src/eastir.d.ts.map +1 -1
  19. package/dist/src/eastir.js +21 -5
  20. package/dist/src/eastir.js.map +1 -1
  21. package/dist/src/error.d.ts +4 -0
  22. package/dist/src/error.d.ts.map +1 -1
  23. package/dist/src/error.js +20 -0
  24. package/dist/src/error.js.map +1 -1
  25. package/dist/src/expr/array.d.ts +101 -1
  26. package/dist/src/expr/array.d.ts.map +1 -1
  27. package/dist/src/expr/array.js +149 -0
  28. package/dist/src/expr/array.js.map +1 -1
  29. package/dist/src/expr/blob.d.ts +65 -1
  30. package/dist/src/expr/blob.d.ts.map +1 -1
  31. package/dist/src/expr/blob.js +80 -1
  32. package/dist/src/expr/blob.js.map +1 -1
  33. package/dist/src/expr/block.d.ts +23 -3
  34. package/dist/src/expr/block.d.ts.map +1 -1
  35. package/dist/src/expr/block.js +28 -3
  36. package/dist/src/expr/block.js.map +1 -1
  37. package/dist/src/expr/boolean.d.ts +36 -0
  38. package/dist/src/expr/boolean.d.ts.map +1 -1
  39. package/dist/src/expr/boolean.js +41 -0
  40. package/dist/src/expr/boolean.js.map +1 -1
  41. package/dist/src/expr/datetime.d.ts +107 -0
  42. package/dist/src/expr/datetime.d.ts.map +1 -1
  43. package/dist/src/expr/datetime.js +119 -0
  44. package/dist/src/expr/datetime.js.map +1 -1
  45. package/dist/src/expr/dict.d.ts +34 -0
  46. package/dist/src/expr/dict.d.ts.map +1 -1
  47. package/dist/src/expr/dict.js +39 -0
  48. package/dist/src/expr/dict.js.map +1 -1
  49. package/dist/src/expr/expr.d.ts.map +1 -1
  50. package/dist/src/expr/expr.js.map +1 -1
  51. package/dist/src/expr/float.d.ts +107 -0
  52. package/dist/src/expr/float.d.ts.map +1 -1
  53. package/dist/src/expr/float.js +122 -0
  54. package/dist/src/expr/float.js.map +1 -1
  55. package/dist/src/expr/function.d.ts +9 -2
  56. package/dist/src/expr/function.d.ts.map +1 -1
  57. package/dist/src/expr/function.js.map +1 -1
  58. package/dist/src/expr/index.d.ts +40 -1
  59. package/dist/src/expr/index.d.ts.map +1 -1
  60. package/dist/src/expr/index.js +39 -1
  61. package/dist/src/expr/index.js.map +1 -1
  62. package/dist/src/expr/integer.d.ts +107 -0
  63. package/dist/src/expr/integer.d.ts.map +1 -1
  64. package/dist/src/expr/integer.js +119 -0
  65. package/dist/src/expr/integer.js.map +1 -1
  66. package/dist/src/expr/libs/integer.d.ts +19 -0
  67. package/dist/src/expr/libs/integer.d.ts.map +1 -1
  68. package/dist/src/expr/libs/integer.js +47 -0
  69. package/dist/src/expr/libs/integer.js.map +1 -1
  70. package/dist/src/expr/set.d.ts +36 -2
  71. package/dist/src/expr/set.d.ts.map +1 -1
  72. package/dist/src/expr/set.js +41 -2
  73. package/dist/src/expr/set.js.map +1 -1
  74. package/dist/src/expr/string.d.ts +106 -0
  75. package/dist/src/expr/string.d.ts.map +1 -1
  76. package/dist/src/expr/string.js +119 -0
  77. package/dist/src/expr/string.js.map +1 -1
  78. package/dist/src/expr/struct.d.ts.map +1 -1
  79. package/dist/src/expr/types.d.ts +6 -6
  80. package/dist/src/expr/types.d.ts.map +1 -1
  81. package/dist/src/expr/variant.d.ts +115 -1
  82. package/dist/src/expr/variant.d.ts.map +1 -1
  83. package/dist/src/expr/variant.js +53 -0
  84. package/dist/src/expr/variant.js.map +1 -1
  85. package/dist/src/internal.d.ts +8 -0
  86. package/dist/src/internal.d.ts.map +1 -1
  87. package/dist/src/internal.js +8 -0
  88. package/dist/src/internal.js.map +1 -1
  89. package/dist/src/serialization/beast.d.ts.map +1 -1
  90. package/dist/src/serialization/beast.js +53 -18
  91. package/dist/src/serialization/beast.js.map +1 -1
  92. package/dist/src/serialization/beast2.d.ts +39 -3
  93. package/dist/src/serialization/beast2.d.ts.map +1 -1
  94. package/dist/src/serialization/beast2.js +132 -18
  95. package/dist/src/serialization/beast2.js.map +1 -1
  96. package/dist/src/serialization/csv.d.ts +139 -0
  97. package/dist/src/serialization/csv.d.ts.map +1 -0
  98. package/dist/src/serialization/csv.js +615 -0
  99. package/dist/src/serialization/csv.js.map +1 -0
  100. package/dist/src/serialization/index.d.ts +2 -1
  101. package/dist/src/serialization/index.d.ts.map +1 -1
  102. package/dist/src/serialization/index.js +2 -1
  103. package/dist/src/serialization/index.js.map +1 -1
  104. package/dist/src/type_of_type.d.ts +11 -0
  105. package/dist/src/type_of_type.d.ts.map +1 -1
  106. package/dist/src/type_of_type.js +61 -0
  107. package/dist/src/type_of_type.js.map +1 -1
  108. package/dist/src/types.js +4 -4
  109. package/dist/src/types.js.map +1 -1
  110. package/package.json +4 -4
@@ -18,23 +18,16 @@ const isTypeValueEqual = equalFor(EastTypeValueType);
18
18
  // Old East supported nullable types with a special flag (bit 7 set in type byte).
19
19
  // New East removed nullable in favor of explicit Option/Variant types.
20
20
  //
21
- // DECODING: We auto-convert nullable types to Variant<{notNull: T, null: Null}>
21
+ // DECODING: We auto-convert nullable types to Option<T> (Variant<{none: Null, some: T}>)
22
22
  // - This allows reading legacy .beast files seamlessly
23
- // - The variant cases are named to sort correctly: "notNull" < "null" alphabetically
24
- // - Tag mapping: tag 0 = notNull (has value), tag 1 = null
25
- // - This matches the old nullable encoding perfectly for values (byte-for-byte identical)
23
+ // - Tag mapping: tag 0 = none (null), tag 1 = some (has value)
24
+ // - This matches the old nullable encoding for values (byte-for-byte identical)
26
25
  //
27
- // ENCODING: We currently do NOT auto-convert Variant<{notNull: T, null: Null}> back to nullable
26
+ // ENCODING: We currently do NOT auto-convert Option<T> back to nullable
28
27
  // - Pro: Simpler, more explicit, no magic behavior
29
28
  // - Con: Type schemas are larger (expanded Variant vs single nullable flag)
30
29
  // - Con: Old ELARACore cannot read files written by new East
31
30
  //
32
- // FUTURE WORK: Consider implementing inverse transform on encode for full interoperability:
33
- // - Detect Variant with exactly 2 cases: "notNull": T and "null": Null
34
- // - Encode as nullable T (type byte with bit 7 set)
35
- // - This would enable bidirectional compatibility and smaller type schemas
36
- // - Trade-off: More magic behavior, but symmetric with decode behavior
37
- //
38
31
  // =============================================================================
39
32
  // Beast v1 uses single-byte type tags (0-13) with nullable flag at bit 7
40
33
  export const BEAST_TYPE_TO_BYTE = {
@@ -60,6 +53,44 @@ export const BEAST_BYTE_TO_TYPE = [
60
53
  undefined, // 12 - Tree (not implemented)
61
54
  "Variant",
62
55
  ];
56
+ /**
57
+ * Normalize a Beast-decoded type to standard East ordering.
58
+ * Sorts variant cases alphabetically by name, matching East's canonical type representation.
59
+ * Only used for type comparison in Beast decoding - the original ordering is preserved
60
+ * for value decoding (to match byte layout).
61
+ */
62
+ function _normalizeBeastType(type) {
63
+ const t = type.type;
64
+ if (t === "Array") {
65
+ return variant("Array", _normalizeBeastType(type.value));
66
+ }
67
+ else if (t === "Set") {
68
+ return variant("Set", _normalizeBeastType(type.value));
69
+ }
70
+ else if (t === "Dict") {
71
+ return variant("Dict", {
72
+ key: _normalizeBeastType(type.value.key),
73
+ value: _normalizeBeastType(type.value.value),
74
+ });
75
+ }
76
+ else if (t === "Struct") {
77
+ // Struct fields preserve declaration order (not sorted), only normalize field types
78
+ return variant("Struct", type.value.map(f => ({
79
+ name: f.name,
80
+ type: _normalizeBeastType(f.type),
81
+ })));
82
+ }
83
+ else if (t === "Variant") {
84
+ // Sort cases by name and normalize their types
85
+ const sortedCases = [...type.value].sort((a, b) => a.name < b.name ? -1 : a.name > b.name ? 1 : 0);
86
+ return variant("Variant", sortedCases.map(c => ({
87
+ name: c.name,
88
+ type: _normalizeBeastType(c.type),
89
+ })));
90
+ }
91
+ // Primitives pass through unchanged
92
+ return type;
93
+ }
63
94
  export function encodeTypeToBeastBuffer(type, writer) {
64
95
  const t = type.type;
65
96
  // NOTE: We don't currently detect Variant<{notNull: T, null: Null}> and convert it
@@ -185,10 +216,11 @@ export function decodeTypeBeast(buffer, offset) {
185
216
  else {
186
217
  throw new Error(`Unhandled type: ${t}`);
187
218
  }
188
- // If nullable, wrap in a Variant with "notNull" (tag 0) and "null" (tag 1)
189
- // This matches the old encoding where tag 0 = has value, tag 1 = null
219
+ // If nullable, wrap in a Variant with "some" (tag 0) and "none" (tag 1)
220
+ // Old nullable: tag 0 = has value, tag 1 = null
221
+ // So we need: index 0 = some, index 1 = none (to match byte encoding)
190
222
  if (nullable) {
191
- return [variant("Variant", [{ name: "notNull", type: baseType }, { name: "null", type: variant("Null", null) }]), offset];
223
+ return [variant("Variant", [{ name: "some", type: baseType }, { name: "none", type: variant("Null", null) }]), offset];
192
224
  }
193
225
  return [baseType, offset];
194
226
  }
@@ -531,7 +563,6 @@ export function decodeBeastFor(type) {
531
563
  if (!isVariant(type)) {
532
564
  type = toEastTypeValue(type);
533
565
  }
534
- const valueDecoder = decodeBeastValueFor(type);
535
566
  return (data) => {
536
567
  // Verify magic bytes
537
568
  if (data.length < MAGIC_BYTES.length) {
@@ -545,11 +576,15 @@ export function decodeBeastFor(type) {
545
576
  // Decode type schema
546
577
  let offset = MAGIC_BYTES.length;
547
578
  const [decodedType, typeEndOffset] = decodeTypeBeast(data, offset);
579
+ // Normalize decoded type for comparison (sorts variant cases)
580
+ // but keep original for value decoding (preserves byte-level tag ordering)
581
+ const normalizedType = _normalizeBeastType(decodedType);
548
582
  // Verify type matches expected type
549
- if (!isTypeValueEqual(decodedType, type)) {
550
- throw new Error(`Type mismatch: expected ${printTypeValue(type)}, got ${printTypeValue(decodedType)}`);
583
+ if (!isTypeValueEqual(normalizedType, type)) {
584
+ throw new Error(`Type mismatch: expected ${printTypeValue(type)}, got ${printTypeValue(normalizedType)}`);
551
585
  }
552
- // Decode value
586
+ // Decode value using original decoded_type (correct tag ordering)
587
+ const valueDecoder = decodeBeastValueFor(decodedType);
553
588
  const [value, valueEndOffset] = valueDecoder(data, typeEndOffset);
554
589
  // Verify we consumed all data
555
590
  if (valueEndOffset !== data.length) {
@@ -1 +1 @@
1
- {"version":3,"file":"beast.js","sourceRoot":"","sources":["../../../src/serialization/beast.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"beast.js","sourceRoot":"","sources":["../../../src/serialization/beast.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,8 @@
5
5
  import { type EastTypeValue } from "../type_of_type.js";
6
6
  import type { EastType, ValueTypeOf } from "../types.js";
7
7
  import { BufferWriter } from "./binary-utils.js";
8
+ import { type FunctionIR, type AsyncFunctionIR } from "../ir.js";
9
+ import type { PlatformFunction } from "../platform.js";
8
10
  /** Stack of encoders for recursive types */
9
11
  export type Beast2EncodeTypeContext = ((value: any, writer: BufferWriter, ctx?: Beast2EncodeContext) => void)[];
10
12
  /**
@@ -25,8 +27,16 @@ export type Beast2DecodeTypeContext = ((buffer: Uint8Array, offset: number, ctx?
25
27
  export type Beast2DecodeContext = {
26
28
  refs: Map<number, any>;
27
29
  };
30
+ /**
31
+ * Options for decoding, allowing function compilation.
32
+ * When platform is provided, decoded functions will be compiled to callables with IR attached.
33
+ * When not provided, raw FunctionIR/AsyncFunctionIR is returned.
34
+ */
35
+ export type Beast2DecodeOptions = {
36
+ platform?: PlatformFunction[];
37
+ };
28
38
  export declare function encodeBeast2ValueToBufferFor(type: EastTypeValue, typeCtx?: Beast2EncodeTypeContext): (value: any, writer: BufferWriter, ctx?: Beast2EncodeContext) => void;
29
- export declare function decodeBeast2ValueFor(type: EastTypeValue | EastType, typeCtx?: Beast2DecodeTypeContext): (buffer: Uint8Array, offset: number, ctx?: Beast2DecodeContext) => [any, number];
39
+ export declare function decodeBeast2ValueFor(type: EastTypeValue | EastType, typeCtx?: Beast2DecodeTypeContext, options?: Beast2DecodeOptions): (buffer: Uint8Array, offset: number, ctx?: Beast2DecodeContext) => [any, number];
30
40
  export declare function encodeBeast2ValueFor(type: EastTypeValue): (value: any) => Uint8Array;
31
41
  export declare function encodeBeast2ValueFor<T extends EastType>(type: T): (value: ValueTypeOf<T>) => Uint8Array;
32
42
  export declare const MAGIC_BYTES: Uint8Array<ArrayBuffer>;
@@ -36,6 +46,32 @@ export declare function decodeBeast2(data: Uint8Array): {
36
46
  type: EastTypeValue;
37
47
  value: any;
38
48
  };
39
- export declare function decodeBeast2For(type: EastTypeValue): (data: Uint8Array) => any;
40
- export declare function decodeBeast2For<T extends EastType>(type: T): (data: Uint8Array) => ValueTypeOf<T>;
49
+ export declare function decodeBeast2For(type: EastTypeValue, options?: Beast2DecodeOptions): (data: Uint8Array) => any;
50
+ export declare function decodeBeast2For<T extends EastType>(type: T, options?: Beast2DecodeOptions): (data: Uint8Array) => ValueTypeOf<T>;
51
+ export { EAST_IR_SYMBOL } from "../compile.js";
52
+ /**
53
+ * Compile a deserialized FunctionIR to an executable function.
54
+ *
55
+ * @param ir - The FunctionIR returned from BEAST2 deserialization
56
+ * @param platform - Platform functions required for execution
57
+ * @returns Compiled JavaScript function
58
+ *
59
+ * @example
60
+ * ```ts
61
+ * const funcType = FunctionType([IntegerType], IntegerType);
62
+ * const data = encodeBeast2For(funcType)(myCompiledFunc);
63
+ * const ir = decodeBeast2For(funcType)(data);
64
+ * const recompiled = compileFunctionIR(ir, []);
65
+ * const result = recompiled(42n);
66
+ * ```
67
+ */
68
+ export declare function compileFunctionIR<I extends any[], O>(ir: FunctionIR, platform: PlatformFunction[]): (...args: I) => O;
69
+ /**
70
+ * Compile a deserialized AsyncFunctionIR to an executable async function.
71
+ *
72
+ * @param ir - The AsyncFunctionIR returned from BEAST2 deserialization
73
+ * @param platform - Platform functions required for execution
74
+ * @returns Compiled JavaScript async function
75
+ */
76
+ export declare function compileAsyncFunctionIR<I extends any[], O>(ir: AsyncFunctionIR, platform: PlatformFunction[]): (...args: I) => Promise<O>;
41
77
  //# sourceMappingURL=beast2.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"beast2.d.ts","sourceRoot":"","sources":["../../../src/serialization/beast2.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAsC,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC5F,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEzD,OAAO,EACL,YAAY,EAKb,MAAM,mBAAmB,CAAC;AAW3B,4CAA4C;AAC5C,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,CAAC,EAAE,mBAAmB,KAAK,IAAI,CAAC,EAAE,CAAC;AAEhH;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;CACxB,CAAC;AAEF,4CAA4C;AAC5C,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,mBAAmB,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;AAE3H;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACxB,CAAC;AAMF,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,aAAa,EAAE,OAAO,GAAE,uBAA4B,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,CAAC,EAAE,mBAAmB,KAAK,IAAI,CAkJ9K;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,aAAa,GAAG,QAAQ,EAAE,OAAO,GAAE,uBAA4B,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,mBAAmB,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAsM5L;AAMD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,aAAa,GAAG,CAAC,KAAK,EAAE,GAAG,KAAK,UAAU,CAAA;AACrF,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,QAAQ,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,UAAU,CAAA;AAyBxG,eAAO,MAAM,WAAW,yBAAmE,CAAC;AAI5F,wBAAgB,eAAe,CAAC,IAAI,EAAE,aAAa,GAAG,CAAC,KAAK,EAAE,GAAG,KAAK,UAAU,CAAA;AAChF,wBAAgB,eAAe,CAAC,CAAC,SAAS,QAAQ,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,UAAU,CAAA;AA0BnG,wBAAgB,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,GAAG,CAAA;CAAE,CA4BlF;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,aAAa,GAAG,CAAC,IAAI,EAAE,UAAU,KAAK,GAAG,CAAA;AAC/E,wBAAgB,eAAe,CAAC,CAAC,SAAS,QAAQ,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,KAAK,WAAW,CAAC,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"beast2.d.ts","sourceRoot":"","sources":["../../../src/serialization/beast2.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,9 @@ import { isVariant, variant } from "../containers/variant.js";
8
8
  import { BufferWriter, readVarint, readZigzag, readFloat64LE, readStringUtf8Varint, } from "./binary-utils.js";
9
9
  import { printFor } from "./east.js";
10
10
  import { ref } from "../containers/ref.js";
11
+ import { EAST_IR_SYMBOL, compile_internal } from "../compile.js";
12
+ import { IRType } from "../ir.js";
13
+ import { analyzeIR } from "../analyze.js";
11
14
  const printTypeValue = printFor(EastTypeValueType);
12
15
  const isTypeValueEqual = equalFor(EastTypeValueType);
13
16
  // =============================================================================
@@ -168,16 +171,44 @@ export function encodeBeast2ValueToBufferFor(type, typeCtx = []) {
168
171
  return ret;
169
172
  }
170
173
  else if (type.type === "Function") {
171
- throw new Error(`Functions cannot be serialized`);
174
+ return (value, writer, ctx = { refs: new Map() }) => {
175
+ // Get IR from function
176
+ const ir = value[EAST_IR_SYMBOL];
177
+ if (!ir) {
178
+ throw new Error(`Cannot serialize function: no IR attached. ` +
179
+ `Functions must be compiled from East IR to be serializable.`);
180
+ }
181
+ if (ir.value.captures.length > 0) {
182
+ throw new Error(`Cannot serialize closure with ${ir.value.captures.length} captured variable(s): ` +
183
+ `${ir.value.captures.map((v) => v.value.name).join(", ")}. ` +
184
+ `Only free functions (no captures) can be serialized.`);
185
+ }
186
+ // Serialize the IR
187
+ irEncoder(ir, writer, ctx);
188
+ };
172
189
  }
173
190
  else if (type.type === "AsyncFunction") {
174
- throw new Error(`AsyncFunctions cannot be serialized`);
191
+ return (value, writer, ctx = { refs: new Map() }) => {
192
+ // Get IR from function
193
+ const ir = value[EAST_IR_SYMBOL];
194
+ if (!ir) {
195
+ throw new Error(`Cannot serialize async function: no IR attached. ` +
196
+ `Functions must be compiled from East IR to be serializable.`);
197
+ }
198
+ if (ir.value.captures.length > 0) {
199
+ throw new Error(`Cannot serialize async closure with ${ir.value.captures.length} captured variable(s): ` +
200
+ `${ir.value.captures.map((v) => v.value.name).join(", ")}. ` +
201
+ `Only free async functions (no captures) can be serialized.`);
202
+ }
203
+ // Serialize the IR
204
+ irEncoder(ir, writer, ctx);
205
+ };
175
206
  }
176
207
  else {
177
208
  throw new Error(`Unhandled type ${type.type}`);
178
209
  }
179
210
  }
180
- export function decodeBeast2ValueFor(type, typeCtx = []) {
211
+ export function decodeBeast2ValueFor(type, typeCtx = [], options) {
181
212
  // Convert EastType to EastTypeValue if necessary
182
213
  if (!isVariant(type)) {
183
214
  type = toEastTypeValue(type);
@@ -239,13 +270,13 @@ export function decodeBeast2ValueFor(type, typeCtx = []) {
239
270
  }
240
271
  // Inline ref
241
272
  const result = ref(undefined);
242
- ctx.refs.set(offset, result);
273
+ ctx.refs.set(newOffset, result);
243
274
  const [value, nextOffset] = valueDecoder(buffer, newOffset, ctx);
244
275
  result.value = value;
245
276
  return [result, nextOffset];
246
277
  };
247
278
  typeCtx.push(ret);
248
- valueDecoder = decodeBeast2ValueFor(type.value, typeCtx);
279
+ valueDecoder = decodeBeast2ValueFor(type.value, typeCtx, options);
249
280
  typeCtx.pop();
250
281
  return ret;
251
282
  }
@@ -263,7 +294,7 @@ export function decodeBeast2ValueFor(type, typeCtx = []) {
263
294
  }
264
295
  // Inline array
265
296
  const result = [];
266
- ctx.refs.set(offset, result);
297
+ ctx.refs.set(newOffset, result);
267
298
  const [length, lengthOffset] = readVarint(buffer, newOffset);
268
299
  let currentOffset = lengthOffset;
269
300
  for (let i = 0; i < length; i++) {
@@ -274,12 +305,12 @@ export function decodeBeast2ValueFor(type, typeCtx = []) {
274
305
  return [result, currentOffset];
275
306
  };
276
307
  typeCtx.push(ret);
277
- valueDecoder = decodeBeast2ValueFor(type.value, typeCtx);
308
+ valueDecoder = decodeBeast2ValueFor(type.value, typeCtx, options);
278
309
  typeCtx.pop();
279
310
  return ret;
280
311
  }
281
312
  else if (type.type === "Set") {
282
- const keyDecoder = decodeBeast2ValueFor(type.value, typeCtx);
313
+ const keyDecoder = decodeBeast2ValueFor(type.value, typeCtx, options);
283
314
  return (buffer, offset, ctx = { refs: new Map() }) => {
284
315
  const [refOrLength, newOffset] = readVarint(buffer, offset);
285
316
  // Check if this is a backreference
@@ -292,7 +323,7 @@ export function decodeBeast2ValueFor(type, typeCtx = []) {
292
323
  }
293
324
  // Inline set
294
325
  const result = new Set();
295
- ctx.refs.set(offset, result);
326
+ ctx.refs.set(newOffset, result);
296
327
  const [length, lengthOffset] = readVarint(buffer, newOffset);
297
328
  let currentOffset = lengthOffset;
298
329
  for (let i = 0; i < length; i++) {
@@ -304,7 +335,7 @@ export function decodeBeast2ValueFor(type, typeCtx = []) {
304
335
  };
305
336
  }
306
337
  else if (type.type === "Dict") {
307
- const keyDecoder = decodeBeast2ValueFor(type.value.key, typeCtx);
338
+ const keyDecoder = decodeBeast2ValueFor(type.value.key, typeCtx, options);
308
339
  let valueDecoder;
309
340
  const ret = (buffer, offset, ctx = { refs: new Map() }) => {
310
341
  const [refOrLength, newOffset] = readVarint(buffer, offset);
@@ -318,7 +349,7 @@ export function decodeBeast2ValueFor(type, typeCtx = []) {
318
349
  }
319
350
  // Inline dict
320
351
  const result = new Map();
321
- ctx.refs.set(offset, result);
352
+ ctx.refs.set(newOffset, result);
322
353
  const [length, lengthOffset] = readVarint(buffer, newOffset);
323
354
  let currentOffset = lengthOffset;
324
355
  for (let i = 0; i < length; i++) {
@@ -330,7 +361,7 @@ export function decodeBeast2ValueFor(type, typeCtx = []) {
330
361
  return [result, currentOffset];
331
362
  };
332
363
  typeCtx.push(ret);
333
- valueDecoder = decodeBeast2ValueFor(type.value.value, typeCtx);
364
+ valueDecoder = decodeBeast2ValueFor(type.value.value, typeCtx, options);
334
365
  typeCtx.pop();
335
366
  return ret;
336
367
  }
@@ -349,7 +380,7 @@ export function decodeBeast2ValueFor(type, typeCtx = []) {
349
380
  };
350
381
  typeCtx.push(ret);
351
382
  for (const { name, type: fieldType } of type.value) {
352
- fieldDecoders.push([name, decodeBeast2ValueFor(fieldType, typeCtx)]);
383
+ fieldDecoders.push([name, decodeBeast2ValueFor(fieldType, typeCtx, options)]);
353
384
  }
354
385
  typeCtx.pop();
355
386
  return ret;
@@ -370,7 +401,7 @@ export function decodeBeast2ValueFor(type, typeCtx = []) {
370
401
  };
371
402
  typeCtx.push(ret);
372
403
  for (const { name, type: caseType } of type.value) {
373
- caseDecoders.push([name, decodeBeast2ValueFor(caseType, typeCtx)]);
404
+ caseDecoders.push([name, decodeBeast2ValueFor(caseType, typeCtx, options)]);
374
405
  }
375
406
  typeCtx.pop();
376
407
  return ret;
@@ -383,10 +414,54 @@ export function decodeBeast2ValueFor(type, typeCtx = []) {
383
414
  return ret;
384
415
  }
385
416
  else if (type.type === "Function") {
386
- throw new Error(`Functions cannot be deserialized`);
417
+ // Convert platform to internal format
418
+ const platform = options?.platform ?? [];
419
+ const platformFns = Object.fromEntries(platform.map(fn => [fn.name, fn.fn]));
420
+ const asyncPlatformFns = new Set(platform.filter(fn => fn.type === 'async').map(fn => fn.name));
421
+ return (buffer, offset, ctx = { refs: new Map() }) => {
422
+ // Decode the IR
423
+ const [ir, newOffset] = irDecoder(buffer, offset, ctx);
424
+ // Validate it's a FunctionIR
425
+ if (ir.type !== "Function") {
426
+ throw new Error(`Expected Function IR, got ${ir.type} at offset ${offset}`);
427
+ }
428
+ // Analyze and compile the function (compile_internal attaches IR automatically)
429
+ let fn;
430
+ try {
431
+ const analyzedIR = analyzeIR(ir, platform, {});
432
+ const compiled = compile_internal(analyzedIR, {}, platformFns, asyncPlatformFns, platform, true, new Set());
433
+ fn = compiled({});
434
+ }
435
+ catch (e) {
436
+ throw new Error(`Failed to compile decoded function: ${e.message}`);
437
+ }
438
+ return [fn, newOffset];
439
+ };
387
440
  }
388
441
  else if (type.type === "AsyncFunction") {
389
- throw new Error(`AsyncFunctions cannot be deserialized`);
442
+ // Convert platform to internal format
443
+ const platform = options?.platform ?? [];
444
+ const platformFns = Object.fromEntries(platform.map(fn => [fn.name, fn.fn]));
445
+ const asyncPlatformFns = new Set(platform.filter(fn => fn.type === 'async').map(fn => fn.name));
446
+ return (buffer, offset, ctx = { refs: new Map() }) => {
447
+ // Decode the IR
448
+ const [ir, newOffset] = irDecoder(buffer, offset, ctx);
449
+ // Validate it's an AsyncFunctionIR
450
+ if (ir.type !== "AsyncFunction") {
451
+ throw new Error(`Expected AsyncFunction IR, got ${ir.type} at offset ${offset}`);
452
+ }
453
+ // Analyze and compile the function (compile_internal attaches IR automatically)
454
+ let fn;
455
+ try {
456
+ const analyzedIR = analyzeIR(ir, platform, {});
457
+ const compiled = compile_internal(analyzedIR, {}, platformFns, asyncPlatformFns, platform, true, new Set());
458
+ fn = compiled({});
459
+ }
460
+ catch (e) {
461
+ throw new Error(`Failed to compile decoded async function: ${e.message}`);
462
+ }
463
+ return [fn, newOffset];
464
+ };
390
465
  }
391
466
  else {
392
467
  throw new Error(`Unhandled type ${type.type}`);
@@ -416,6 +491,10 @@ export function encodeBeast2ValueFor(type) {
416
491
  export const MAGIC_BYTES = new Uint8Array([0x89, 0x45, 0x61, 0x73, 0x74, 0x0D, 0x0A, 0x01]);
417
492
  const typeEncoder = encodeBeast2ValueToBufferFor(EastTypeValueType);
418
493
  const typeDecoder = decodeBeast2ValueFor(EastTypeValueType);
494
+ // IR encoder/decoder for function serialization
495
+ const IRTypeValue = toEastTypeValue(IRType);
496
+ const irEncoder = encodeBeast2ValueToBufferFor(IRTypeValue);
497
+ const irDecoder = decodeBeast2ValueFor(IRTypeValue);
419
498
  export function encodeBeast2For(type) {
420
499
  // Convert EastType to EastTypeValue if necessary
421
500
  if (!isVariant(type)) {
@@ -459,12 +538,12 @@ export function decodeBeast2(data) {
459
538
  }
460
539
  return { type, value };
461
540
  }
462
- export function decodeBeast2For(type) {
541
+ export function decodeBeast2For(type, options) {
463
542
  // Convert EastType to EastTypeValue if necessary
464
543
  if (!isVariant(type)) {
465
544
  type = toEastTypeValue(type);
466
545
  }
467
- const valueDecoder = decodeBeast2ValueFor(type);
546
+ const valueDecoder = decodeBeast2ValueFor(type, [], options);
468
547
  return (data) => {
469
548
  // Verify magic bytes
470
549
  if (data.length < MAGIC_BYTES.length) {
@@ -492,4 +571,39 @@ export function decodeBeast2For(type) {
492
571
  return value;
493
572
  };
494
573
  }
574
+ // =============================================================================
575
+ // Function serialization helpers
576
+ // =============================================================================
577
+ // Re-export for convenience
578
+ export { EAST_IR_SYMBOL } from "../compile.js";
579
+ import { EastIR, AsyncEastIR } from "../eastir.js";
580
+ /**
581
+ * Compile a deserialized FunctionIR to an executable function.
582
+ *
583
+ * @param ir - The FunctionIR returned from BEAST2 deserialization
584
+ * @param platform - Platform functions required for execution
585
+ * @returns Compiled JavaScript function
586
+ *
587
+ * @example
588
+ * ```ts
589
+ * const funcType = FunctionType([IntegerType], IntegerType);
590
+ * const data = encodeBeast2For(funcType)(myCompiledFunc);
591
+ * const ir = decodeBeast2For(funcType)(data);
592
+ * const recompiled = compileFunctionIR(ir, []);
593
+ * const result = recompiled(42n);
594
+ * ```
595
+ */
596
+ export function compileFunctionIR(ir, platform) {
597
+ return new EastIR(ir).compile(platform);
598
+ }
599
+ /**
600
+ * Compile a deserialized AsyncFunctionIR to an executable async function.
601
+ *
602
+ * @param ir - The AsyncFunctionIR returned from BEAST2 deserialization
603
+ * @param platform - Platform functions required for execution
604
+ * @returns Compiled JavaScript async function
605
+ */
606
+ export function compileAsyncFunctionIR(ir, platform) {
607
+ return new AsyncEastIR(ir).compile(platform);
608
+ }
495
609
  //# sourceMappingURL=beast2.js.map