@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.
Files changed (276) hide show
  1. package/README.md +1 -1
  2. package/dist/src/comparison.d.ts.map +1 -1
  3. package/dist/src/comparison.js +4 -5
  4. package/dist/src/comparison.js.map +1 -1
  5. package/dist/src/compile/builtins/array.d.ts +59 -0
  6. package/dist/src/compile/builtins/array.d.ts.map +1 -0
  7. package/dist/src/compile/builtins/array.js +656 -0
  8. package/dist/src/compile/builtins/array.js.map +1 -0
  9. package/dist/src/compile/builtins/blob.d.ts +18 -0
  10. package/dist/src/compile/builtins/blob.d.ts.map +1 -0
  11. package/dist/src/compile/builtins/blob.js +150 -0
  12. package/dist/src/compile/builtins/blob.js.map +1 -0
  13. package/dist/src/compile/builtins/compare.d.ts +18 -0
  14. package/dist/src/compile/builtins/compare.d.ts.map +1 -0
  15. package/dist/src/compile/builtins/compare.js +52 -0
  16. package/dist/src/compile/builtins/compare.js.map +1 -0
  17. package/dist/src/compile/builtins/datetime.d.ts +21 -0
  18. package/dist/src/compile/builtins/datetime.d.ts.map +1 -0
  19. package/dist/src/compile/builtins/datetime.js +46 -0
  20. package/dist/src/compile/builtins/datetime.js.map +1 -0
  21. package/dist/src/compile/builtins/dict.d.ts +46 -0
  22. package/dist/src/compile/builtins/dict.d.ts.map +1 -0
  23. package/dist/src/compile/builtins/dict.js +551 -0
  24. package/dist/src/compile/builtins/dict.js.map +1 -0
  25. package/dist/src/compile/builtins/index.d.ts +9 -0
  26. package/dist/src/compile/builtins/index.d.ts.map +1 -0
  27. package/dist/src/compile/builtins/index.js +28 -0
  28. package/dist/src/compile/builtins/index.js.map +1 -0
  29. package/dist/src/compile/builtins/matrix.d.ts +31 -0
  30. package/dist/src/compile/builtins/matrix.d.ts.map +1 -0
  31. package/dist/src/compile/builtins/matrix.js +310 -0
  32. package/dist/src/compile/builtins/matrix.js.map +1 -0
  33. package/dist/src/compile/builtins/primitives.d.ts +36 -0
  34. package/dist/src/compile/builtins/primitives.d.ts.map +1 -0
  35. package/dist/src/compile/builtins/primitives.js +67 -0
  36. package/dist/src/compile/builtins/primitives.js.map +1 -0
  37. package/dist/src/compile/builtins/ref.d.ts +11 -0
  38. package/dist/src/compile/builtins/ref.d.ts.map +1 -0
  39. package/dist/src/compile/builtins/ref.js +30 -0
  40. package/dist/src/compile/builtins/ref.js.map +1 -0
  41. package/dist/src/compile/builtins/set.d.ts +41 -0
  42. package/dist/src/compile/builtins/set.d.ts.map +1 -0
  43. package/dist/src/compile/builtins/set.js +385 -0
  44. package/dist/src/compile/builtins/set.js.map +1 -0
  45. package/dist/src/compile/builtins/sparse.d.ts +19 -0
  46. package/dist/src/compile/builtins/sparse.d.ts.map +1 -0
  47. package/dist/src/compile/builtins/sparse.js +143 -0
  48. package/dist/src/compile/builtins/sparse.js.map +1 -0
  49. package/dist/src/compile/builtins/string.d.ts +34 -0
  50. package/dist/src/compile/builtins/string.d.ts.map +1 -0
  51. package/dist/src/compile/builtins/string.js +238 -0
  52. package/dist/src/compile/builtins/string.js.map +1 -0
  53. package/dist/src/compile/builtins/vector.d.ts +44 -0
  54. package/dist/src/compile/builtins/vector.d.ts.map +1 -0
  55. package/dist/src/compile/builtins/vector.js +463 -0
  56. package/dist/src/compile/builtins/vector.js.map +1 -0
  57. package/dist/src/compile/constructors.d.ts +13 -0
  58. package/dist/src/compile/constructors.d.ts.map +1 -0
  59. package/dist/src/compile/constructors.js +179 -0
  60. package/dist/src/compile/constructors.js.map +1 -0
  61. package/dist/src/compile/control.d.ts +13 -0
  62. package/dist/src/compile/control.d.ts.map +1 -0
  63. package/dist/src/compile/control.js +513 -0
  64. package/dist/src/compile/control.js.map +1 -0
  65. package/dist/src/compile/functions.d.ts +13 -0
  66. package/dist/src/compile/functions.d.ts.map +1 -0
  67. package/dist/src/compile/functions.js +492 -0
  68. package/dist/src/compile/functions.js.map +1 -0
  69. package/dist/src/compile/ir.d.ts +19 -0
  70. package/dist/src/compile/ir.d.ts.map +1 -0
  71. package/dist/src/compile/ir.js +193 -0
  72. package/dist/src/compile/ir.js.map +1 -0
  73. package/dist/src/compile/runtime.d.ts +78 -0
  74. package/dist/src/compile/runtime.d.ts.map +1 -0
  75. package/dist/src/compile/runtime.js +111 -0
  76. package/dist/src/compile/runtime.js.map +1 -0
  77. package/dist/src/compile/type_parameters.d.ts +4 -0
  78. package/dist/src/compile/type_parameters.d.ts.map +1 -0
  79. package/dist/src/compile/type_parameters.js +55 -0
  80. package/dist/src/compile/type_parameters.js.map +1 -0
  81. package/dist/src/compile/typed_arrays.d.ts +28 -0
  82. package/dist/src/compile/typed_arrays.d.ts.map +1 -0
  83. package/dist/src/compile/typed_arrays.js +77 -0
  84. package/dist/src/compile/typed_arrays.js.map +1 -0
  85. package/dist/src/compile.d.ts +6 -41
  86. package/dist/src/compile.d.ts.map +1 -1
  87. package/dist/src/compile.js +8 -4415
  88. package/dist/src/compile.js.map +1 -1
  89. package/dist/src/compile.open_beast.spec.js +5 -4
  90. package/dist/src/compile.open_beast.spec.js.map +1 -1
  91. package/dist/src/containers/sortedmap.d.ts +2 -1
  92. package/dist/src/containers/sortedmap.d.ts.map +1 -1
  93. package/dist/src/containers/sortedmap.js +4 -2
  94. package/dist/src/containers/sortedmap.js.map +1 -1
  95. package/dist/src/containers/sortedset.d.ts +2 -1
  96. package/dist/src/containers/sortedset.d.ts.map +1 -1
  97. package/dist/src/containers/sortedset.js +4 -2
  98. package/dist/src/containers/sortedset.js.map +1 -1
  99. package/dist/src/error.d.ts +15 -0
  100. package/dist/src/error.d.ts.map +1 -1
  101. package/dist/src/error.js +16 -0
  102. package/dist/src/error.js.map +1 -1
  103. package/dist/src/index.d.ts +1 -0
  104. package/dist/src/index.d.ts.map +1 -1
  105. package/dist/src/index.js +1 -0
  106. package/dist/src/index.js.map +1 -1
  107. package/dist/src/patch/index.d.ts +1 -1
  108. package/dist/src/patch/index.d.ts.map +1 -1
  109. package/dist/src/patch/index.js +1 -1
  110. package/dist/src/patch/index.js.map +1 -1
  111. package/dist/src/patch/type_of_patch.d.ts +25 -1
  112. package/dist/src/patch/type_of_patch.d.ts.map +1 -1
  113. package/dist/src/patch/type_of_patch.js +33 -10
  114. package/dist/src/patch/type_of_patch.js.map +1 -1
  115. package/dist/src/platform.spec.js +19 -1
  116. package/dist/src/platform.spec.js.map +1 -1
  117. package/dist/src/runner_protocol.d.ts +316 -0
  118. package/dist/src/runner_protocol.d.ts.map +1 -0
  119. package/dist/src/runner_protocol.js +135 -0
  120. package/dist/src/runner_protocol.js.map +1 -0
  121. package/dist/src/serialization/beast2/index.d.ts +21 -5
  122. package/dist/src/serialization/beast2/index.d.ts.map +1 -1
  123. package/dist/src/serialization/beast2/index.js +12 -2
  124. package/dist/src/serialization/beast2/index.js.map +1 -1
  125. package/dist/src/serialization/beast2/index.spec.js +84 -3
  126. package/dist/src/serialization/beast2/index.spec.js.map +1 -1
  127. package/dist/src/serialization/beast2/shared.d.ts +32 -3
  128. package/dist/src/serialization/beast2/shared.d.ts.map +1 -1
  129. package/dist/src/serialization/beast2/shared.js +135 -10
  130. package/dist/src/serialization/beast2/shared.js.map +1 -1
  131. package/dist/src/serialization/beast2/v4/container.d.ts.map +1 -1
  132. package/dist/src/serialization/beast2/v4/container.js +5 -3
  133. package/dist/src/serialization/beast2/v4/container.js.map +1 -1
  134. package/dist/src/serialization/beast2/v5/aliasing.spec.d.ts +6 -0
  135. package/dist/src/serialization/beast2/v5/aliasing.spec.d.ts.map +1 -0
  136. package/dist/src/serialization/beast2/v5/aliasing.spec.js +75 -0
  137. package/dist/src/serialization/beast2/v5/aliasing.spec.js.map +1 -0
  138. package/dist/src/serialization/beast2/v5/boundary.d.ts +176 -0
  139. package/dist/src/serialization/beast2/v5/boundary.d.ts.map +1 -0
  140. package/dist/src/serialization/beast2/v5/boundary.js +297 -0
  141. package/dist/src/serialization/beast2/v5/boundary.js.map +1 -0
  142. package/dist/src/serialization/beast2/v5/boundary.spec.d.ts +6 -0
  143. package/dist/src/serialization/beast2/v5/boundary.spec.d.ts.map +1 -0
  144. package/dist/src/serialization/beast2/v5/boundary.spec.js +479 -0
  145. package/dist/src/serialization/beast2/v5/boundary.spec.js.map +1 -0
  146. package/dist/src/serialization/beast2/v5/codec.d.ts +6 -5
  147. package/dist/src/serialization/beast2/v5/codec.d.ts.map +1 -1
  148. package/dist/src/serialization/beast2/v5/codec.js +18 -3
  149. package/dist/src/serialization/beast2/v5/codec.js.map +1 -1
  150. package/dist/src/serialization/beast2/v5/deflate.d.ts +24 -2
  151. package/dist/src/serialization/beast2/v5/deflate.d.ts.map +1 -1
  152. package/dist/src/serialization/beast2/v5/deflate.js +47 -12
  153. package/dist/src/serialization/beast2/v5/deflate.js.map +1 -1
  154. package/dist/src/serialization/beast2/v5/deflate.spec.js +15 -1
  155. package/dist/src/serialization/beast2/v5/deflate.spec.js.map +1 -1
  156. package/dist/src/serialization/beast2/v5/elements.d.ts +64 -0
  157. package/dist/src/serialization/beast2/v5/elements.d.ts.map +1 -0
  158. package/dist/src/serialization/beast2/v5/elements.js +320 -0
  159. package/dist/src/serialization/beast2/v5/elements.js.map +1 -0
  160. package/dist/src/serialization/beast2/v5/elements.spec.d.ts +6 -0
  161. package/dist/src/serialization/beast2/v5/elements.spec.d.ts.map +1 -0
  162. package/dist/src/serialization/beast2/v5/elements.spec.js +161 -0
  163. package/dist/src/serialization/beast2/v5/elements.spec.js.map +1 -0
  164. package/dist/src/serialization/beast2/v5/frame-pool.d.ts +62 -21
  165. package/dist/src/serialization/beast2/v5/frame-pool.d.ts.map +1 -1
  166. package/dist/src/serialization/beast2/v5/frame-pool.js +138 -27
  167. package/dist/src/serialization/beast2/v5/frame-pool.js.map +1 -1
  168. package/dist/src/serialization/beast2/v5/frame-pool.spec.js +198 -71
  169. package/dist/src/serialization/beast2/v5/frame-pool.spec.js.map +1 -1
  170. package/dist/src/serialization/beast2/v5/frame-worker.js +25 -15
  171. package/dist/src/serialization/beast2/v5/frame-worker.js.map +1 -1
  172. package/dist/src/serialization/beast2/v5/frames.d.ts +22 -12
  173. package/dist/src/serialization/beast2/v5/frames.d.ts.map +1 -1
  174. package/dist/src/serialization/beast2/v5/frames.js +52 -27
  175. package/dist/src/serialization/beast2/v5/frames.js.map +1 -1
  176. package/dist/src/serialization/beast2/v5/geometry.d.ts +38 -1
  177. package/dist/src/serialization/beast2/v5/geometry.d.ts.map +1 -1
  178. package/dist/src/serialization/beast2/v5/geometry.js +73 -1
  179. package/dist/src/serialization/beast2/v5/geometry.js.map +1 -1
  180. package/dist/src/serialization/beast2/v5/geometry.spec.js +34 -23
  181. package/dist/src/serialization/beast2/v5/geometry.spec.js.map +1 -1
  182. package/dist/src/serialization/beast2/v5/index.spec.js +32 -28
  183. package/dist/src/serialization/beast2/v5/index.spec.js.map +1 -1
  184. package/dist/src/serialization/beast2/v5/lazy.d.ts +42 -1
  185. package/dist/src/serialization/beast2/v5/lazy.d.ts.map +1 -1
  186. package/dist/src/serialization/beast2/v5/lazy.js +143 -28
  187. package/dist/src/serialization/beast2/v5/lazy.js.map +1 -1
  188. package/dist/src/serialization/beast2/v5/lazy.spec.js +102 -24
  189. package/dist/src/serialization/beast2/v5/lazy.spec.js.map +1 -1
  190. package/dist/src/serialization/beast2/v5/manifest-writer.d.ts +110 -0
  191. package/dist/src/serialization/beast2/v5/manifest-writer.d.ts.map +1 -0
  192. package/dist/src/serialization/beast2/v5/manifest-writer.js +118 -0
  193. package/dist/src/serialization/beast2/v5/manifest-writer.js.map +1 -0
  194. package/dist/src/serialization/beast2/v5/manifest-writer.spec.d.ts +6 -0
  195. package/dist/src/serialization/beast2/v5/manifest-writer.spec.d.ts.map +1 -0
  196. package/dist/src/serialization/beast2/v5/manifest-writer.spec.js +207 -0
  197. package/dist/src/serialization/beast2/v5/manifest-writer.spec.js.map +1 -0
  198. package/dist/src/serialization/beast2/v5/manifest.d.ts +241 -0
  199. package/dist/src/serialization/beast2/v5/manifest.d.ts.map +1 -0
  200. package/dist/src/serialization/beast2/v5/manifest.js +233 -0
  201. package/dist/src/serialization/beast2/v5/manifest.js.map +1 -0
  202. package/dist/src/serialization/beast2/v5/merge.d.ts +93 -0
  203. package/dist/src/serialization/beast2/v5/merge.d.ts.map +1 -0
  204. package/dist/src/serialization/beast2/v5/merge.js +202 -0
  205. package/dist/src/serialization/beast2/v5/merge.js.map +1 -0
  206. package/dist/src/serialization/beast2/v5/merge.spec.d.ts +6 -0
  207. package/dist/src/serialization/beast2/v5/merge.spec.d.ts.map +1 -0
  208. package/dist/src/serialization/beast2/v5/merge.spec.js +118 -0
  209. package/dist/src/serialization/beast2/v5/merge.spec.js.map +1 -0
  210. package/dist/src/serialization/beast2/v5/recut.d.ts +143 -0
  211. package/dist/src/serialization/beast2/v5/recut.d.ts.map +1 -0
  212. package/dist/src/serialization/beast2/v5/recut.js +365 -0
  213. package/dist/src/serialization/beast2/v5/recut.js.map +1 -0
  214. package/dist/src/serialization/beast2/v5/recut.spec.d.ts +6 -0
  215. package/dist/src/serialization/beast2/v5/recut.spec.d.ts.map +1 -0
  216. package/dist/src/serialization/beast2/v5/recut.spec.js +215 -0
  217. package/dist/src/serialization/beast2/v5/recut.spec.js.map +1 -0
  218. package/dist/src/serialization/beast2/v5/runs.d.ts +148 -0
  219. package/dist/src/serialization/beast2/v5/runs.d.ts.map +1 -0
  220. package/dist/src/serialization/beast2/v5/runs.js +260 -0
  221. package/dist/src/serialization/beast2/v5/runs.js.map +1 -0
  222. package/dist/src/serialization/beast2/v5/runs.spec.d.ts +6 -0
  223. package/dist/src/serialization/beast2/v5/runs.spec.d.ts.map +1 -0
  224. package/dist/src/serialization/beast2/v5/runs.spec.js +182 -0
  225. package/dist/src/serialization/beast2/v5/runs.spec.js.map +1 -0
  226. package/dist/src/serialization/beast2/v5/sha256.d.ts +19 -0
  227. package/dist/src/serialization/beast2/v5/sha256.d.ts.map +1 -0
  228. package/dist/src/serialization/beast2/v5/sha256.js +103 -0
  229. package/dist/src/serialization/beast2/v5/sha256.js.map +1 -0
  230. package/dist/src/serialization/beast2/v5/sha256.spec.d.ts +6 -0
  231. package/dist/src/serialization/beast2/v5/sha256.spec.d.ts.map +1 -0
  232. package/dist/src/serialization/beast2/v5/sha256.spec.js +42 -0
  233. package/dist/src/serialization/beast2/v5/sha256.spec.js.map +1 -0
  234. package/dist/src/serialization/beast2/v5/stream.d.ts +273 -86
  235. package/dist/src/serialization/beast2/v5/stream.d.ts.map +1 -1
  236. package/dist/src/serialization/beast2/v5/stream.js +576 -244
  237. package/dist/src/serialization/beast2/v5/stream.js.map +1 -1
  238. package/dist/src/serialization/beast2/v5/sync-reader.spec.js +24 -10
  239. package/dist/src/serialization/beast2/v5/sync-reader.spec.js.map +1 -1
  240. package/dist/src/serialization/index.d.ts +1 -1
  241. package/dist/src/serialization/index.d.ts.map +1 -1
  242. package/dist/src/serialization/index.js +1 -1
  243. package/dist/src/serialization/index.js.map +1 -1
  244. package/dist/src/serialization/json.d.ts +28 -0
  245. package/dist/src/serialization/json.d.ts.map +1 -1
  246. package/dist/src/serialization/json.js +141 -30
  247. package/dist/src/serialization/json.js.map +1 -1
  248. package/dist/src/serialization/json.spec.js +47 -2
  249. package/dist/src/serialization/json.spec.js.map +1 -1
  250. package/dist/src/serialization/json_schema.d.ts +15 -11
  251. package/dist/src/serialization/json_schema.d.ts.map +1 -1
  252. package/dist/src/serialization/json_schema.js +21 -36
  253. package/dist/src/serialization/json_schema.js.map +1 -1
  254. package/dist/src/serialization/json_schema.spec.js +26 -32
  255. package/dist/src/serialization/json_schema.spec.js.map +1 -1
  256. package/dist/src/serialization/json_schema_to_type.d.ts +10 -5
  257. package/dist/src/serialization/json_schema_to_type.d.ts.map +1 -1
  258. package/dist/src/serialization/json_schema_to_type.js +13 -6
  259. package/dist/src/serialization/json_schema_to_type.js.map +1 -1
  260. package/dist/src/serialization/json_schema_to_type.spec.js +19 -0
  261. package/dist/src/serialization/json_schema_to_type.spec.js.map +1 -1
  262. package/dist/src/string_order.d.ts +36 -0
  263. package/dist/src/string_order.d.ts.map +1 -0
  264. package/dist/src/string_order.js +64 -0
  265. package/dist/src/string_order.js.map +1 -0
  266. package/dist/src/string_order.spec.d.ts +6 -0
  267. package/dist/src/string_order.spec.d.ts.map +1 -0
  268. package/dist/src/string_order.spec.js +79 -0
  269. package/dist/src/string_order.spec.js.map +1 -0
  270. package/dist/src/type_of_type.d.ts +17 -0
  271. package/dist/src/type_of_type.d.ts.map +1 -1
  272. package/dist/src/type_of_type.js +66 -0
  273. package/dist/src/type_of_type.js.map +1 -1
  274. package/dist/src/type_of_type.to_etv.spec.js +69 -1
  275. package/dist/src/type_of_type.to_etv.spec.js.map +1 -1
  276. 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"}