edict-lang 1.2.0 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (227) hide show
  1. package/README.md +39 -13
  2. package/dist/ast/nodes.d.ts +4 -3
  3. package/dist/ast/nodes.d.ts.map +1 -1
  4. package/dist/ast/nodes.js +1 -0
  5. package/dist/ast/nodes.js.map +1 -1
  6. package/dist/ast/type-constants.d.ts +12 -0
  7. package/dist/ast/type-constants.d.ts.map +1 -0
  8. package/dist/ast/type-constants.js +16 -0
  9. package/dist/ast/type-constants.js.map +1 -0
  10. package/dist/ast/types.d.ts +1 -1
  11. package/dist/ast/types.d.ts.map +1 -1
  12. package/dist/builtins/builtin-enums.d.ts +12 -0
  13. package/dist/builtins/builtin-enums.d.ts.map +1 -0
  14. package/dist/builtins/builtin-enums.js +45 -0
  15. package/dist/builtins/builtin-enums.js.map +1 -0
  16. package/dist/builtins/builtin-types.d.ts +20 -0
  17. package/dist/builtins/builtin-types.d.ts.map +1 -0
  18. package/dist/builtins/builtin-types.js +6 -0
  19. package/dist/builtins/builtin-types.js.map +1 -0
  20. package/dist/builtins/builtins.d.ts +3 -0
  21. package/dist/builtins/builtins.d.ts.map +1 -0
  22. package/dist/builtins/builtins.js +3 -0
  23. package/dist/builtins/builtins.js.map +1 -0
  24. package/dist/builtins/domains/array.d.ts +3 -0
  25. package/dist/builtins/domains/array.d.ts.map +1 -0
  26. package/dist/builtins/domains/array.js +236 -0
  27. package/dist/builtins/domains/array.js.map +1 -0
  28. package/dist/builtins/domains/core.d.ts +3 -0
  29. package/dist/builtins/domains/core.d.ts.map +1 -0
  30. package/dist/builtins/domains/core.js +45 -0
  31. package/dist/builtins/domains/core.js.map +1 -0
  32. package/dist/builtins/domains/crypto.d.ts +3 -0
  33. package/dist/builtins/domains/crypto.d.ts.map +1 -0
  34. package/dist/builtins/domains/crypto.js +49 -0
  35. package/dist/builtins/domains/crypto.js.map +1 -0
  36. package/dist/builtins/domains/datetime.d.ts +3 -0
  37. package/dist/builtins/domains/datetime.d.ts.map +1 -0
  38. package/dist/builtins/domains/datetime.js +45 -0
  39. package/dist/builtins/domains/datetime.js.map +1 -0
  40. package/dist/builtins/domains/http.d.ts +3 -0
  41. package/dist/builtins/domains/http.d.ts.map +1 -0
  42. package/dist/builtins/domains/http.js +55 -0
  43. package/dist/builtins/domains/http.js.map +1 -0
  44. package/dist/builtins/domains/int64.d.ts +3 -0
  45. package/dist/builtins/domains/int64.d.ts.map +1 -0
  46. package/dist/builtins/domains/int64.js +31 -0
  47. package/dist/builtins/domains/int64.js.map +1 -0
  48. package/dist/builtins/domains/io.d.ts +3 -0
  49. package/dist/builtins/domains/io.d.ts.map +1 -0
  50. package/dist/builtins/domains/io.js +79 -0
  51. package/dist/builtins/domains/io.js.map +1 -0
  52. package/dist/builtins/domains/json.d.ts +3 -0
  53. package/dist/builtins/domains/json.d.ts.map +1 -0
  54. package/dist/builtins/domains/json.js +47 -0
  55. package/dist/builtins/domains/json.js.map +1 -0
  56. package/dist/builtins/domains/math.d.ts +3 -0
  57. package/dist/builtins/domains/math.d.ts.map +1 -0
  58. package/dist/builtins/domains/math.js +47 -0
  59. package/dist/builtins/domains/math.js.map +1 -0
  60. package/dist/builtins/domains/option.d.ts +3 -0
  61. package/dist/builtins/domains/option.d.ts.map +1 -0
  62. package/dist/builtins/domains/option.js +56 -0
  63. package/dist/builtins/domains/option.js.map +1 -0
  64. package/dist/builtins/domains/random.d.ts +3 -0
  65. package/dist/builtins/domains/random.d.ts.map +1 -0
  66. package/dist/builtins/domains/random.js +50 -0
  67. package/dist/builtins/domains/random.js.map +1 -0
  68. package/dist/builtins/domains/regex.d.ts +3 -0
  69. package/dist/builtins/domains/regex.d.ts.map +1 -0
  70. package/dist/builtins/domains/regex.js +69 -0
  71. package/dist/builtins/domains/regex.js.map +1 -0
  72. package/dist/builtins/domains/result.d.ts +3 -0
  73. package/dist/builtins/domains/result.d.ts.map +1 -0
  74. package/dist/builtins/domains/result.js +84 -0
  75. package/dist/builtins/domains/result.js.map +1 -0
  76. package/dist/builtins/domains/string.d.ts +3 -0
  77. package/dist/builtins/domains/string.d.ts.map +1 -0
  78. package/dist/builtins/domains/string.js +139 -0
  79. package/dist/builtins/domains/string.js.map +1 -0
  80. package/dist/builtins/domains/type-conversion.d.ts +3 -0
  81. package/dist/builtins/domains/type-conversion.d.ts.map +1 -0
  82. package/dist/builtins/domains/type-conversion.js +42 -0
  83. package/dist/builtins/domains/type-conversion.js.map +1 -0
  84. package/dist/builtins/host-helpers.d.ts +66 -0
  85. package/dist/builtins/host-helpers.d.ts.map +1 -0
  86. package/dist/builtins/host-helpers.js +127 -0
  87. package/dist/builtins/host-helpers.js.map +1 -0
  88. package/dist/builtins/registry.d.ts +48 -0
  89. package/dist/builtins/registry.d.ts.map +1 -0
  90. package/dist/builtins/registry.js +118 -0
  91. package/dist/builtins/registry.js.map +1 -0
  92. package/dist/check.d.ts +9 -2
  93. package/dist/check.d.ts.map +1 -1
  94. package/dist/check.js +30 -9
  95. package/dist/check.js.map +1 -1
  96. package/dist/checker/check.d.ts +18 -1
  97. package/dist/checker/check.d.ts.map +1 -1
  98. package/dist/checker/check.js +157 -108
  99. package/dist/checker/check.js.map +1 -1
  100. package/dist/checker/type-env.d.ts +2 -0
  101. package/dist/checker/type-env.d.ts.map +1 -1
  102. package/dist/checker/type-env.js +9 -0
  103. package/dist/checker/type-env.js.map +1 -1
  104. package/dist/codegen/browser-host-adapter.d.ts +29 -0
  105. package/dist/codegen/browser-host-adapter.d.ts.map +1 -0
  106. package/dist/codegen/browser-host-adapter.js +51 -0
  107. package/dist/codegen/browser-host-adapter.js.map +1 -0
  108. package/dist/codegen/builtins.d.ts +2 -26
  109. package/dist/codegen/builtins.d.ts.map +1 -1
  110. package/dist/codegen/builtins.js +2 -341
  111. package/dist/codegen/builtins.js.map +1 -1
  112. package/dist/codegen/closures.d.ts +17 -0
  113. package/dist/codegen/closures.d.ts.map +1 -0
  114. package/dist/codegen/closures.js +140 -0
  115. package/dist/codegen/closures.js.map +1 -0
  116. package/dist/codegen/codegen.d.ts +6 -30
  117. package/dist/codegen/codegen.d.ts.map +1 -1
  118. package/dist/codegen/codegen.js +154 -1103
  119. package/dist/codegen/codegen.js.map +1 -1
  120. package/dist/codegen/collect-strings.d.ts +4 -0
  121. package/dist/codegen/collect-strings.d.ts.map +1 -0
  122. package/dist/codegen/collect-strings.js +76 -0
  123. package/dist/codegen/collect-strings.js.map +1 -0
  124. package/dist/codegen/compile-calls.d.ts +10 -0
  125. package/dist/codegen/compile-calls.d.ts.map +1 -0
  126. package/dist/codegen/compile-calls.js +374 -0
  127. package/dist/codegen/compile-calls.js.map +1 -0
  128. package/dist/codegen/compile-data.d.ts +22 -0
  129. package/dist/codegen/compile-data.d.ts.map +1 -0
  130. package/dist/codegen/compile-data.js +243 -0
  131. package/dist/codegen/compile-data.js.map +1 -0
  132. package/dist/codegen/compile-expr.d.ts +10 -0
  133. package/dist/codegen/compile-expr.d.ts.map +1 -0
  134. package/dist/codegen/compile-expr.js +156 -0
  135. package/dist/codegen/compile-expr.js.map +1 -0
  136. package/dist/codegen/compile-match.d.ts +7 -0
  137. package/dist/codegen/compile-match.d.ts.map +1 -0
  138. package/dist/codegen/compile-match.js +195 -0
  139. package/dist/codegen/compile-match.js.map +1 -0
  140. package/dist/codegen/compile-scalars.d.ts +25 -0
  141. package/dist/codegen/compile-scalars.d.ts.map +1 -0
  142. package/dist/codegen/compile-scalars.js +211 -0
  143. package/dist/codegen/compile-scalars.js.map +1 -0
  144. package/dist/codegen/hof-generators.d.ts +39 -0
  145. package/dist/codegen/hof-generators.d.ts.map +1 -0
  146. package/dist/codegen/hof-generators.js +336 -0
  147. package/dist/codegen/hof-generators.js.map +1 -0
  148. package/dist/codegen/host-adapter.d.ts +44 -0
  149. package/dist/codegen/host-adapter.d.ts.map +1 -0
  150. package/dist/codegen/host-adapter.js +9 -0
  151. package/dist/codegen/host-adapter.js.map +1 -0
  152. package/dist/codegen/imports.d.ts +15 -0
  153. package/dist/codegen/imports.d.ts.map +1 -0
  154. package/dist/codegen/imports.js +165 -0
  155. package/dist/codegen/imports.js.map +1 -0
  156. package/dist/codegen/node-host-adapter.d.ts +35 -0
  157. package/dist/codegen/node-host-adapter.d.ts.map +1 -0
  158. package/dist/codegen/node-host-adapter.js +155 -0
  159. package/dist/codegen/node-host-adapter.js.map +1 -0
  160. package/dist/codegen/runner.d.ts +36 -2
  161. package/dist/codegen/runner.d.ts.map +1 -1
  162. package/dist/codegen/runner.js +147 -271
  163. package/dist/codegen/runner.js.map +1 -1
  164. package/dist/codegen/types.d.ts +96 -0
  165. package/dist/codegen/types.d.ts.map +1 -0
  166. package/dist/codegen/types.js +63 -0
  167. package/dist/codegen/types.js.map +1 -0
  168. package/dist/compact/expand.d.ts +25 -0
  169. package/dist/compact/expand.d.ts.map +1 -0
  170. package/dist/compact/expand.js +199 -0
  171. package/dist/compact/expand.js.map +1 -0
  172. package/dist/compile.d.ts +2 -1
  173. package/dist/compile.d.ts.map +1 -1
  174. package/dist/compile.js +2 -2
  175. package/dist/compile.js.map +1 -1
  176. package/dist/contracts/translate.js.map +1 -1
  177. package/dist/contracts/verify.d.ts +10 -2
  178. package/dist/contracts/verify.d.ts.map +1 -1
  179. package/dist/contracts/verify.js +26 -21
  180. package/dist/contracts/verify.js.map +1 -1
  181. package/dist/effects/call-graph.d.ts.map +1 -1
  182. package/dist/effects/call-graph.js +27 -4
  183. package/dist/effects/call-graph.js.map +1 -1
  184. package/dist/effects/effect-check.d.ts +10 -2
  185. package/dist/effects/effect-check.d.ts.map +1 -1
  186. package/dist/effects/effect-check.js +12 -7
  187. package/dist/effects/effect-check.js.map +1 -1
  188. package/dist/errors/error-catalog.d.ts +1 -1
  189. package/dist/errors/error-catalog.d.ts.map +1 -1
  190. package/dist/errors/error-catalog.js +119 -0
  191. package/dist/errors/error-catalog.js.map +1 -1
  192. package/dist/errors/structured-errors.d.ts +28 -1
  193. package/dist/errors/structured-errors.d.ts.map +1 -1
  194. package/dist/errors/structured-errors.js +9 -0
  195. package/dist/errors/structured-errors.js.map +1 -1
  196. package/dist/index.d.ts +20 -9
  197. package/dist/index.d.ts.map +1 -1
  198. package/dist/index.js +26 -10
  199. package/dist/index.js.map +1 -1
  200. package/dist/lint/lint.d.ts +9 -0
  201. package/dist/lint/lint.d.ts.map +1 -0
  202. package/dist/lint/lint.js +354 -0
  203. package/dist/lint/lint.js.map +1 -0
  204. package/dist/lint/warnings.d.ts +54 -0
  205. package/dist/lint/warnings.d.ts.map +1 -0
  206. package/dist/lint/warnings.js +39 -0
  207. package/dist/lint/warnings.js.map +1 -0
  208. package/dist/mcp/create-server.d.ts.map +1 -1
  209. package/dist/mcp/create-server.js +66 -5
  210. package/dist/mcp/create-server.js.map +1 -1
  211. package/dist/mcp/handlers.d.ts +21 -5
  212. package/dist/mcp/handlers.d.ts.map +1 -1
  213. package/dist/mcp/handlers.js +65 -15
  214. package/dist/mcp/handlers.js.map +1 -1
  215. package/dist/mcp/prompts.d.ts +17 -0
  216. package/dist/mcp/prompts.d.ts.map +1 -0
  217. package/dist/mcp/prompts.js +181 -0
  218. package/dist/mcp/prompts.js.map +1 -0
  219. package/dist/mcp/server.js +1 -4
  220. package/dist/mcp/server.js.map +1 -1
  221. package/dist/resolver/resolve.d.ts.map +1 -1
  222. package/dist/resolver/resolve.js +62 -16
  223. package/dist/resolver/resolve.js.map +1 -1
  224. package/dist/validator/node-validators.d.ts.map +1 -1
  225. package/dist/validator/node-validators.js +60 -5
  226. package/dist/validator/node-validators.js.map +1 -1
  227. package/package.json +4 -2
@@ -0,0 +1,3 @@
1
+ import type { BuiltinDef } from "../builtin-types.js";
2
+ export declare const CORE_BUILTINS: BuiltinDef[];
3
+ //# sourceMappingURL=core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../src/builtins/domains/core.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAItD,eAAO,MAAM,aAAa,EAAE,UAAU,EA0CrC,CAAC"}
@@ -0,0 +1,45 @@
1
+ // =============================================================================
2
+ // Core domain — print, string_replace
3
+ // =============================================================================
4
+ import { STRING_TYPE } from "../../ast/type-constants.js";
5
+ import { getMemoryBuffer, writeStringResult } from "../host-helpers.js";
6
+ export const CORE_BUILTINS = [
7
+ {
8
+ name: "print",
9
+ type: {
10
+ kind: "fn_type",
11
+ params: [STRING_TYPE],
12
+ effects: ["io"],
13
+ returnType: STRING_TYPE,
14
+ },
15
+ impl: {
16
+ kind: "host",
17
+ factory: (ctx) => (ptr, len) => {
18
+ const bytes = new Uint8Array(getMemoryBuffer(ctx.state), ptr, len);
19
+ const text = ctx.decoder.decode(bytes);
20
+ ctx.state.outputParts.push(text);
21
+ return ptr;
22
+ },
23
+ },
24
+ },
25
+ {
26
+ name: "string_replace",
27
+ type: {
28
+ kind: "fn_type",
29
+ params: [STRING_TYPE, STRING_TYPE, STRING_TYPE],
30
+ effects: ["pure"],
31
+ returnType: STRING_TYPE,
32
+ },
33
+ impl: {
34
+ kind: "host",
35
+ factory: (ctx) => (hayPtr, hayLen, needlePtr, needleLen, replPtr, replLen) => {
36
+ const memoryBuffer = getMemoryBuffer(ctx.state);
37
+ const haystack = ctx.decoder.decode(new Uint8Array(memoryBuffer, hayPtr, hayLen));
38
+ const needle = ctx.decoder.decode(new Uint8Array(memoryBuffer, needlePtr, needleLen));
39
+ const replacement = ctx.decoder.decode(new Uint8Array(memoryBuffer, replPtr, replLen));
40
+ return writeStringResult(ctx.state, haystack.replaceAll(needle, replacement), ctx.encoder);
41
+ },
42
+ },
43
+ },
44
+ ];
45
+ //# sourceMappingURL=core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/builtins/domains/core.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,sCAAsC;AACtC,gFAAgF;AAGhF,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAoB,MAAM,oBAAoB,CAAC;AAE1F,MAAM,CAAC,MAAM,aAAa,GAAiB;IACvC;QACI,IAAI,EAAE,OAAO;QACb,IAAI,EAAE;YACF,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,CAAC,WAAW,CAAC;YACrB,OAAO,EAAE,CAAC,IAAI,CAAC;YACf,UAAU,EAAE,WAAW;SAC1B;QACD,IAAI,EAAE;YACF,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,CAAC,GAAgB,EAAE,EAAE,CAAC,CAAC,GAAW,EAAE,GAAW,EAAU,EAAE;gBAChE,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;gBACnE,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACvC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACjC,OAAO,GAAG,CAAC;YACf,CAAC;SACJ;KACJ;IACD;QACI,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE;YACF,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,CAAC;YAC/C,OAAO,EAAE,CAAC,MAAM,CAAC;YACjB,UAAU,EAAE,WAAW;SAC1B;QACD,IAAI,EAAE;YACF,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,CAAC,GAAgB,EAAE,EAAE,CAAC,CAC3B,MAAc,EAAE,MAAc,EAC9B,SAAiB,EAAE,SAAiB,EACpC,OAAe,EAAE,OAAe,EAC1B,EAAE;gBACR,MAAM,YAAY,GAAG,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAChD,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;gBAClF,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,YAAY,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;gBACtF,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,YAAY,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;gBACvF,OAAO,iBAAiB,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;YAC/F,CAAC;SACJ;KACJ;CACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { BuiltinDef } from "../builtin-types.js";
2
+ export declare const CRYPTO_BUILTINS: BuiltinDef[];
3
+ //# sourceMappingURL=crypto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../../../src/builtins/domains/crypto.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAItD,eAAO,MAAM,eAAe,EAAE,UAAU,EA8CvC,CAAC"}
@@ -0,0 +1,49 @@
1
+ // =============================================================================
2
+ // Crypto domain — sha256, md5, hmac (adapter-delegated)
3
+ // =============================================================================
4
+ import { STRING_TYPE } from "../../ast/type-constants.js";
5
+ import { getMemoryBuffer, writeStringResult } from "../host-helpers.js";
6
+ export const CRYPTO_BUILTINS = [
7
+ {
8
+ name: "sha256",
9
+ type: { kind: "fn_type", params: [STRING_TYPE], effects: ["pure"], returnType: STRING_TYPE },
10
+ impl: {
11
+ kind: "host",
12
+ factory: (ctx) => (ptr, len) => {
13
+ const str = ctx.decoder.decode(new Uint8Array(getMemoryBuffer(ctx.state), ptr, len));
14
+ return writeStringResult(ctx.state, ctx.adapter.sha256(str), ctx.encoder);
15
+ },
16
+ },
17
+ },
18
+ {
19
+ name: "md5",
20
+ type: { kind: "fn_type", params: [STRING_TYPE], effects: ["pure"], returnType: STRING_TYPE },
21
+ impl: {
22
+ kind: "host",
23
+ factory: (ctx) => (ptr, len) => {
24
+ const str = ctx.decoder.decode(new Uint8Array(getMemoryBuffer(ctx.state), ptr, len));
25
+ return writeStringResult(ctx.state, ctx.adapter.md5(str), ctx.encoder);
26
+ },
27
+ },
28
+ },
29
+ {
30
+ name: "hmac",
31
+ type: {
32
+ kind: "fn_type",
33
+ params: [STRING_TYPE, STRING_TYPE, STRING_TYPE],
34
+ effects: ["pure"],
35
+ returnType: STRING_TYPE,
36
+ },
37
+ impl: {
38
+ kind: "host",
39
+ factory: (ctx) => (algoPtr, algoLen, keyPtr, keyLen, dataPtr, dataLen) => {
40
+ const buf = getMemoryBuffer(ctx.state);
41
+ const algo = ctx.decoder.decode(new Uint8Array(buf, algoPtr, algoLen));
42
+ const key = ctx.decoder.decode(new Uint8Array(buf, keyPtr, keyLen));
43
+ const data = ctx.decoder.decode(new Uint8Array(buf, dataPtr, dataLen));
44
+ return writeStringResult(ctx.state, ctx.adapter.hmac(algo, key, data), ctx.encoder);
45
+ },
46
+ },
47
+ },
48
+ ];
49
+ //# sourceMappingURL=crypto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto.js","sourceRoot":"","sources":["../../../src/builtins/domains/crypto.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { BuiltinDef } from "../builtin-types.js";
2
+ export declare const DATETIME_BUILTINS: BuiltinDef[];
3
+ //# sourceMappingURL=datetime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"datetime.d.ts","sourceRoot":"","sources":["../../../src/builtins/domains/datetime.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAItD,eAAO,MAAM,iBAAiB,EAAE,UAAU,EAsCzC,CAAC"}
@@ -0,0 +1,45 @@
1
+ // =============================================================================
2
+ // DateTime domain — now, formatDate, parseDate, diffMs
3
+ // =============================================================================
4
+ import { INT64_TYPE, STRING_TYPE } from "../../ast/type-constants.js";
5
+ import { getMemoryBuffer, writeStringResult, formatDateString } from "../host-helpers.js";
6
+ export const DATETIME_BUILTINS = [
7
+ {
8
+ name: "now",
9
+ type: { kind: "fn_type", params: [], effects: ["reads"], returnType: INT64_TYPE },
10
+ impl: { kind: "host", factory: () => () => BigInt(Date.now()) },
11
+ },
12
+ {
13
+ name: "formatDate",
14
+ type: { kind: "fn_type", params: [INT64_TYPE, STRING_TYPE], effects: ["pure"], returnType: STRING_TYPE },
15
+ impl: {
16
+ kind: "host",
17
+ factory: (ctx) => (timestamp, fmtPtr, fmtLen) => {
18
+ const fmt = ctx.decoder.decode(new Uint8Array(getMemoryBuffer(ctx.state), fmtPtr, fmtLen));
19
+ const date = new Date(Number(timestamp));
20
+ return writeStringResult(ctx.state, formatDateString(date, fmt), ctx.encoder);
21
+ },
22
+ },
23
+ },
24
+ {
25
+ name: "parseDate",
26
+ type: { kind: "fn_type", params: [STRING_TYPE, STRING_TYPE], effects: ["fails"], returnType: INT64_TYPE },
27
+ impl: {
28
+ kind: "host",
29
+ factory: (ctx) => (strPtr, strLen, _fmtPtr, _fmtLen) => {
30
+ const str = ctx.decoder.decode(new Uint8Array(getMemoryBuffer(ctx.state), strPtr, strLen));
31
+ const ms = Date.parse(str);
32
+ if (isNaN(ms)) {
33
+ throw new Error(`parseDate: invalid date string "${str}"`);
34
+ }
35
+ return BigInt(ms);
36
+ },
37
+ },
38
+ },
39
+ {
40
+ name: "diffMs",
41
+ type: { kind: "fn_type", params: [INT64_TYPE, INT64_TYPE], effects: ["pure"], returnType: INT64_TYPE },
42
+ impl: { kind: "host", factory: () => (a, b) => a - b },
43
+ },
44
+ ];
45
+ //# sourceMappingURL=datetime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"datetime.js","sourceRoot":"","sources":["../../../src/builtins/domains/datetime.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,uDAAuD;AACvD,gFAAgF;AAGhF,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,gBAAgB,EAAoB,MAAM,oBAAoB,CAAC;AAE5G,MAAM,CAAC,MAAM,iBAAiB,GAAiB;IAC3C;QACI,IAAI,EAAE,KAAK;QACX,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE;QACjF,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,GAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE;KAC1E;IACD;QACI,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE;QACxG,IAAI,EAAE;YACF,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,CAAC,GAAgB,EAAE,EAAE,CAAC,CAAC,SAAiB,EAAE,MAAc,EAAE,MAAc,EAAU,EAAE;gBACzF,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;gBAC3F,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;gBACzC,OAAO,iBAAiB,CAAC,GAAG,CAAC,KAAK,EAAE,gBAAgB,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;YAClF,CAAC;SACJ;KACJ;IACD;QACI,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE;QACzG,IAAI,EAAE;YACF,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,CAAC,GAAgB,EAAE,EAAE,CAAC,CAAC,MAAc,EAAE,MAAc,EAAE,OAAe,EAAE,OAAe,EAAU,EAAE;gBACxG,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;gBAC3F,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC3B,IAAI,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;oBACZ,MAAM,IAAI,KAAK,CAAC,mCAAmC,GAAG,GAAG,CAAC,CAAC;gBAC/D,CAAC;gBACD,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC;YACtB,CAAC;SACJ;KACJ;IACD;QACI,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE;QACtG,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAS,EAAE,CAAS,EAAU,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE;KACjF;CACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { BuiltinDef } from "../builtin-types.js";
2
+ export declare const HTTP_BUILTINS: BuiltinDef[];
3
+ //# sourceMappingURL=http.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../src/builtins/domains/http.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAatD,eAAO,MAAM,aAAa,EAAE,UAAU,EAyCrC,CAAC"}
@@ -0,0 +1,55 @@
1
+ // =============================================================================
2
+ // HTTP domain — httpGet, httpPost, httpPut, httpDelete (adapter-delegated)
3
+ // =============================================================================
4
+ import { STRING_TYPE, RESULT_STRING_TYPE } from "../../ast/type-constants.js";
5
+ import { getMemoryBuffer, writeStringResult, writeResultValue } from "../host-helpers.js";
6
+ function readStr(ctx, ptr, len) {
7
+ return ctx.decoder.decode(new Uint8Array(getMemoryBuffer(ctx.state), ptr, len));
8
+ }
9
+ function makeResult(ctx, fetchResult) {
10
+ const strPtr = writeStringResult(ctx.state, fetchResult.data, ctx.encoder);
11
+ return writeResultValue(ctx.state, fetchResult.ok ? 0 : 1, strPtr);
12
+ }
13
+ export const HTTP_BUILTINS = [
14
+ {
15
+ name: "httpGet",
16
+ type: { kind: "fn_type", params: [STRING_TYPE], effects: ["io"], returnType: RESULT_STRING_TYPE },
17
+ impl: {
18
+ kind: "host",
19
+ factory: (ctx) => (urlPtr, urlLen) => {
20
+ return makeResult(ctx, ctx.adapter.fetch(readStr(ctx, urlPtr, urlLen), "GET"));
21
+ },
22
+ },
23
+ },
24
+ {
25
+ name: "httpPost",
26
+ type: { kind: "fn_type", params: [STRING_TYPE, STRING_TYPE], effects: ["io"], returnType: RESULT_STRING_TYPE },
27
+ impl: {
28
+ kind: "host",
29
+ factory: (ctx) => (urlPtr, urlLen, bodyPtr, bodyLen) => {
30
+ return makeResult(ctx, ctx.adapter.fetch(readStr(ctx, urlPtr, urlLen), "POST", readStr(ctx, bodyPtr, bodyLen)));
31
+ },
32
+ },
33
+ },
34
+ {
35
+ name: "httpPut",
36
+ type: { kind: "fn_type", params: [STRING_TYPE, STRING_TYPE], effects: ["io"], returnType: RESULT_STRING_TYPE },
37
+ impl: {
38
+ kind: "host",
39
+ factory: (ctx) => (urlPtr, urlLen, bodyPtr, bodyLen) => {
40
+ return makeResult(ctx, ctx.adapter.fetch(readStr(ctx, urlPtr, urlLen), "PUT", readStr(ctx, bodyPtr, bodyLen)));
41
+ },
42
+ },
43
+ },
44
+ {
45
+ name: "httpDelete",
46
+ type: { kind: "fn_type", params: [STRING_TYPE], effects: ["io"], returnType: RESULT_STRING_TYPE },
47
+ impl: {
48
+ kind: "host",
49
+ factory: (ctx) => (urlPtr, urlLen) => {
50
+ return makeResult(ctx, ctx.adapter.fetch(readStr(ctx, urlPtr, urlLen), "DELETE"));
51
+ },
52
+ },
53
+ },
54
+ ];
55
+ //# sourceMappingURL=http.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../../../src/builtins/domains/http.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { BuiltinDef } from "../builtin-types.js";
2
+ export declare const INT64_BUILTINS: BuiltinDef[];
3
+ //# sourceMappingURL=int64.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"int64.d.ts","sourceRoot":"","sources":["../../../src/builtins/domains/int64.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAItD,eAAO,MAAM,cAAc,EAAE,UAAU,EAyBtC,CAAC"}
@@ -0,0 +1,31 @@
1
+ // =============================================================================
2
+ // Int64 domain — intToInt64, int64ToInt, int64ToFloat, int64ToString
3
+ // =============================================================================
4
+ import { INT_TYPE, INT64_TYPE, FLOAT_TYPE, STRING_TYPE } from "../../ast/type-constants.js";
5
+ import { writeStringResult } from "../host-helpers.js";
6
+ export const INT64_BUILTINS = [
7
+ {
8
+ name: "intToInt64",
9
+ type: { kind: "fn_type", params: [INT_TYPE], effects: ["pure"], returnType: INT64_TYPE },
10
+ impl: { kind: "host", factory: () => (x) => BigInt(x) },
11
+ },
12
+ {
13
+ name: "int64ToInt",
14
+ type: { kind: "fn_type", params: [INT64_TYPE], effects: ["pure"], returnType: INT_TYPE },
15
+ impl: { kind: "host", factory: () => (x) => Number(BigInt.asIntN(32, x)) },
16
+ },
17
+ {
18
+ name: "int64ToFloat",
19
+ type: { kind: "fn_type", params: [INT64_TYPE], effects: ["pure"], returnType: FLOAT_TYPE },
20
+ impl: { kind: "host", factory: () => (x) => Number(x) },
21
+ },
22
+ {
23
+ name: "int64ToString",
24
+ type: { kind: "fn_type", params: [INT64_TYPE], effects: ["pure"], returnType: STRING_TYPE },
25
+ impl: {
26
+ kind: "host",
27
+ factory: (ctx) => (x) => writeStringResult(ctx.state, x.toString(), ctx.encoder),
28
+ },
29
+ },
30
+ ];
31
+ //# sourceMappingURL=int64.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"int64.js","sourceRoot":"","sources":["../../../src/builtins/domains/int64.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,qEAAqE;AACrE,gFAAgF;AAGhF,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC5F,OAAO,EAAE,iBAAiB,EAAoB,MAAM,oBAAoB,CAAC;AAEzE,MAAM,CAAC,MAAM,cAAc,GAAiB;IACxC;QACI,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE;QACxF,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAS,EAAU,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;KAC1E;IACD;QACI,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE;QACxF,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAS,EAAU,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE;KAC7F;IACD;QACI,IAAI,EAAE,cAAc;QACpB,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE;QAC1F,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAS,EAAU,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;KAC1E;IACD;QACI,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE;QAC3F,IAAI,EAAE;YACF,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,CAAC,GAAgB,EAAE,EAAE,CAAC,CAAC,CAAS,EAAU,EAAE,CACjD,iBAAiB,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC,OAAO,CAAC;SAC9D;KACJ;CACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { BuiltinDef } from "../builtin-types.js";
2
+ export declare const IO_BUILTINS: BuiltinDef[];
3
+ //# sourceMappingURL=io.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"io.d.ts","sourceRoot":"","sources":["../../../src/builtins/domains/io.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAQtD,eAAO,MAAM,WAAW,EAAE,UAAU,EAmEnC,CAAC"}
@@ -0,0 +1,79 @@
1
+ // =============================================================================
2
+ // IO domain — readFile, writeFile, env, args, exit (adapter-delegated)
3
+ // =============================================================================
4
+ import { INT_TYPE, STRING_TYPE, RESULT_STRING_TYPE } from "../../ast/type-constants.js";
5
+ import { getMemoryBuffer, writeStringResult, writeResultValue } from "../host-helpers.js";
6
+ function readStr(ctx, ptr, len) {
7
+ return ctx.decoder.decode(new Uint8Array(getMemoryBuffer(ctx.state), ptr, len));
8
+ }
9
+ export const IO_BUILTINS = [
10
+ {
11
+ name: "readFile",
12
+ type: { kind: "fn_type", params: [STRING_TYPE], effects: ["io"], returnType: RESULT_STRING_TYPE },
13
+ impl: {
14
+ kind: "host",
15
+ factory: (ctx) => (pathPtr, pathLen) => {
16
+ const result = ctx.adapter.readFile(readStr(ctx, pathPtr, pathLen));
17
+ if (result.ok) {
18
+ const strPtr = writeStringResult(ctx.state, result.data, ctx.encoder);
19
+ return writeResultValue(ctx.state, 0, strPtr);
20
+ }
21
+ else {
22
+ const errPtr = writeStringResult(ctx.state, result.error, ctx.encoder);
23
+ return writeResultValue(ctx.state, 1, errPtr);
24
+ }
25
+ },
26
+ },
27
+ },
28
+ {
29
+ name: "writeFile",
30
+ type: { kind: "fn_type", params: [STRING_TYPE, STRING_TYPE], effects: ["io"], returnType: RESULT_STRING_TYPE },
31
+ impl: {
32
+ kind: "host",
33
+ factory: (ctx) => (pathPtr, pathLen, contentPtr, contentLen) => {
34
+ const result = ctx.adapter.writeFile(readStr(ctx, pathPtr, pathLen), readStr(ctx, contentPtr, contentLen));
35
+ if (result.ok) {
36
+ const okPtr = writeStringResult(ctx.state, "ok", ctx.encoder);
37
+ return writeResultValue(ctx.state, 0, okPtr);
38
+ }
39
+ else {
40
+ const errPtr = writeStringResult(ctx.state, result.error, ctx.encoder);
41
+ return writeResultValue(ctx.state, 1, errPtr);
42
+ }
43
+ },
44
+ },
45
+ },
46
+ {
47
+ name: "env",
48
+ type: { kind: "fn_type", params: [STRING_TYPE], effects: ["reads"], returnType: STRING_TYPE },
49
+ impl: {
50
+ kind: "host",
51
+ factory: (ctx) => (namePtr, nameLen) => {
52
+ const name = readStr(ctx, namePtr, nameLen);
53
+ return writeStringResult(ctx.state, ctx.adapter.env(name), ctx.encoder);
54
+ },
55
+ },
56
+ },
57
+ {
58
+ name: "args",
59
+ type: { kind: "fn_type", params: [], effects: ["reads"], returnType: STRING_TYPE },
60
+ impl: {
61
+ kind: "host",
62
+ factory: (ctx) => () => {
63
+ const argsJson = JSON.stringify(ctx.adapter.args());
64
+ return writeStringResult(ctx.state, argsJson, ctx.encoder);
65
+ },
66
+ },
67
+ },
68
+ {
69
+ name: "exit",
70
+ type: { kind: "fn_type", params: [INT_TYPE], effects: ["io"], returnType: INT_TYPE },
71
+ impl: {
72
+ kind: "host",
73
+ factory: (ctx) => (code) => {
74
+ ctx.adapter.exit(code);
75
+ },
76
+ },
77
+ },
78
+ ];
79
+ //# sourceMappingURL=io.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"io.js","sourceRoot":"","sources":["../../../src/builtins/domains/io.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { BuiltinDef } from "../builtin-types.js";
2
+ export declare const JSON_BUILTINS: BuiltinDef[];
3
+ //# sourceMappingURL=json.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../../src/builtins/domains/json.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAItD,eAAO,MAAM,aAAa,EAAE,UAAU,EAsCrC,CAAC"}
@@ -0,0 +1,47 @@
1
+ // =============================================================================
2
+ // JSON domain — jsonParse, jsonStringify
3
+ // =============================================================================
4
+ import { STRING_TYPE, RESULT_STRING_TYPE } from "../../ast/type-constants.js";
5
+ import { getMemoryBuffer, writeStringResult, writeResultValue } from "../host-helpers.js";
6
+ export const JSON_BUILTINS = [
7
+ {
8
+ name: "jsonParse",
9
+ type: { kind: "fn_type", params: [STRING_TYPE], effects: ["pure"], returnType: RESULT_STRING_TYPE },
10
+ impl: {
11
+ kind: "host",
12
+ factory: (ctx) => (ptr, len) => {
13
+ const str = ctx.decoder.decode(new Uint8Array(getMemoryBuffer(ctx.state), ptr, len));
14
+ try {
15
+ JSON.parse(str);
16
+ // Valid JSON — return Ok(strPtr) with original string
17
+ const strPtr = writeStringResult(ctx.state, str, ctx.encoder);
18
+ return writeResultValue(ctx.state, 0, strPtr); // Ok
19
+ }
20
+ catch (e) {
21
+ const msg = e instanceof Error ? e.message : "Invalid JSON";
22
+ const errPtr = writeStringResult(ctx.state, msg, ctx.encoder);
23
+ return writeResultValue(ctx.state, 1, errPtr); // Err
24
+ }
25
+ },
26
+ },
27
+ },
28
+ {
29
+ name: "jsonStringify",
30
+ type: { kind: "fn_type", params: [STRING_TYPE], effects: ["pure"], returnType: STRING_TYPE },
31
+ impl: {
32
+ kind: "host",
33
+ factory: (ctx) => (ptr, len) => {
34
+ const str = ctx.decoder.decode(new Uint8Array(getMemoryBuffer(ctx.state), ptr, len));
35
+ try {
36
+ const parsed = JSON.parse(str);
37
+ return writeStringResult(ctx.state, JSON.stringify(parsed), ctx.encoder);
38
+ }
39
+ catch {
40
+ // If input is not valid JSON, return it unchanged
41
+ return writeStringResult(ctx.state, str, ctx.encoder);
42
+ }
43
+ },
44
+ },
45
+ },
46
+ ];
47
+ //# sourceMappingURL=json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.js","sourceRoot":"","sources":["../../../src/builtins/domains/json.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,yCAAyC;AACzC,gFAAgF;AAGhF,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,gBAAgB,EAAoB,MAAM,oBAAoB,CAAC;AAE5G,MAAM,CAAC,MAAM,aAAa,GAAiB;IACvC;QACI,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,kBAAkB,EAAE;QACnG,IAAI,EAAE;YACF,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,CAAC,GAAgB,EAAE,EAAE,CAAC,CAAC,GAAW,EAAE,GAAW,EAAU,EAAE;gBAChE,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;gBACrF,IAAI,CAAC;oBACD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBAChB,sDAAsD;oBACtD,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;oBAC9D,OAAO,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK;gBACxD,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACT,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC;oBAC5D,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;oBAC9D,OAAO,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM;gBACzD,CAAC;YACL,CAAC;SACJ;KACJ;IACD;QACI,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE;QAC5F,IAAI,EAAE;YACF,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,CAAC,GAAgB,EAAE,EAAE,CAAC,CAAC,GAAW,EAAE,GAAW,EAAU,EAAE;gBAChE,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;gBACrF,IAAI,CAAC;oBACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBAC/B,OAAO,iBAAiB,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC7E,CAAC;gBAAC,MAAM,CAAC;oBACL,kDAAkD;oBAClD,OAAO,iBAAiB,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC1D,CAAC;YACL,CAAC;SACJ;KACJ;CACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { BuiltinDef } from "../builtin-types.js";
2
+ export declare const MATH_BUILTINS: BuiltinDef[];
3
+ //# sourceMappingURL=math.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"math.d.ts","sourceRoot":"","sources":["../../../src/builtins/domains/math.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAGtD,eAAO,MAAM,aAAa,EAAE,UAAU,EAyCrC,CAAC"}
@@ -0,0 +1,47 @@
1
+ // =============================================================================
2
+ // Math domain — abs, min, max, pow, sqrt, floor, ceil, round
3
+ // =============================================================================
4
+ import { INT_TYPE, FLOAT_TYPE } from "../../ast/type-constants.js";
5
+ export const MATH_BUILTINS = [
6
+ {
7
+ name: "abs",
8
+ type: { kind: "fn_type", params: [INT_TYPE], effects: ["pure"], returnType: INT_TYPE },
9
+ impl: { kind: "host", factory: () => (x) => Math.abs(x) },
10
+ },
11
+ {
12
+ name: "min",
13
+ type: { kind: "fn_type", params: [INT_TYPE, INT_TYPE], effects: ["pure"], returnType: INT_TYPE },
14
+ impl: { kind: "host", factory: () => (a, b) => Math.min(a, b) },
15
+ },
16
+ {
17
+ name: "max",
18
+ type: { kind: "fn_type", params: [INT_TYPE, INT_TYPE], effects: ["pure"], returnType: INT_TYPE },
19
+ impl: { kind: "host", factory: () => (a, b) => Math.max(a, b) },
20
+ },
21
+ {
22
+ name: "pow",
23
+ type: { kind: "fn_type", params: [INT_TYPE, INT_TYPE], effects: ["pure"], returnType: INT_TYPE },
24
+ impl: { kind: "host", factory: () => (base, exp) => (Math.pow(base, exp) | 0) },
25
+ },
26
+ {
27
+ name: "sqrt",
28
+ type: { kind: "fn_type", params: [FLOAT_TYPE], effects: ["pure"], returnType: FLOAT_TYPE },
29
+ impl: { kind: "host", factory: () => (x) => Math.sqrt(x) },
30
+ },
31
+ {
32
+ name: "floor",
33
+ type: { kind: "fn_type", params: [FLOAT_TYPE], effects: ["pure"], returnType: INT_TYPE },
34
+ impl: { kind: "host", factory: () => (x) => (Math.floor(x) | 0) },
35
+ },
36
+ {
37
+ name: "ceil",
38
+ type: { kind: "fn_type", params: [FLOAT_TYPE], effects: ["pure"], returnType: INT_TYPE },
39
+ impl: { kind: "host", factory: () => (x) => (Math.ceil(x) | 0) },
40
+ },
41
+ {
42
+ name: "round",
43
+ type: { kind: "fn_type", params: [FLOAT_TYPE], effects: ["pure"], returnType: INT_TYPE },
44
+ impl: { kind: "host", factory: () => (x) => (Math.round(x) | 0) },
45
+ },
46
+ ];
47
+ //# sourceMappingURL=math.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"math.js","sourceRoot":"","sources":["../../../src/builtins/domains/math.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { BuiltinDef } from "../builtin-types.js";
2
+ export declare const OPTION_BUILTINS: BuiltinDef[];
3
+ //# sourceMappingURL=option.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"option.d.ts","sourceRoot":"","sources":["../../../src/builtins/domains/option.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAItD,eAAO,MAAM,eAAe,EAAE,UAAU,EA+CvC,CAAC"}
@@ -0,0 +1,56 @@
1
+ // =============================================================================
2
+ // Option domain — isSome, isNone, unwrap, unwrapOr
3
+ // =============================================================================
4
+ import { INT_TYPE, BOOL_TYPE, OPTION_INT_TYPE } from "../../ast/type-constants.js";
5
+ import { getMemoryBuffer } from "../host-helpers.js";
6
+ export const OPTION_BUILTINS = [
7
+ {
8
+ name: "isSome",
9
+ type: { kind: "fn_type", params: [OPTION_INT_TYPE], effects: ["pure"], returnType: BOOL_TYPE },
10
+ impl: {
11
+ kind: "host",
12
+ factory: (ctx) => (ptr) => {
13
+ return new DataView(getMemoryBuffer(ctx.state)).getInt32(ptr, true) === 1 ? 1 : 0;
14
+ },
15
+ },
16
+ },
17
+ {
18
+ name: "isNone",
19
+ type: { kind: "fn_type", params: [OPTION_INT_TYPE], effects: ["pure"], returnType: BOOL_TYPE },
20
+ impl: {
21
+ kind: "host",
22
+ factory: (ctx) => (ptr) => {
23
+ return new DataView(getMemoryBuffer(ctx.state)).getInt32(ptr, true) === 0 ? 1 : 0;
24
+ },
25
+ },
26
+ },
27
+ {
28
+ name: "unwrap",
29
+ type: { kind: "fn_type", params: [OPTION_INT_TYPE], effects: ["fails"], returnType: INT_TYPE },
30
+ impl: {
31
+ kind: "host",
32
+ factory: (ctx) => (ptr) => {
33
+ const view = new DataView(getMemoryBuffer(ctx.state));
34
+ const tag = view.getInt32(ptr, true);
35
+ if (tag === 1)
36
+ return view.getInt32(ptr + 8, true);
37
+ throw new Error("unwrap called on None");
38
+ },
39
+ },
40
+ },
41
+ {
42
+ name: "unwrapOr",
43
+ type: { kind: "fn_type", params: [OPTION_INT_TYPE, INT_TYPE], effects: ["pure"], returnType: INT_TYPE },
44
+ impl: {
45
+ kind: "host",
46
+ factory: (ctx) => (ptr, defaultVal) => {
47
+ const view = new DataView(getMemoryBuffer(ctx.state));
48
+ const tag = view.getInt32(ptr, true);
49
+ if (tag === 1)
50
+ return view.getInt32(ptr + 8, true);
51
+ return defaultVal;
52
+ },
53
+ },
54
+ },
55
+ ];
56
+ //# sourceMappingURL=option.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"option.js","sourceRoot":"","sources":["../../../src/builtins/domains/option.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { BuiltinDef } from "../builtin-types.js";
2
+ export declare const RANDOM_BUILTINS: BuiltinDef[];
3
+ //# sourceMappingURL=random.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"random.d.ts","sourceRoot":"","sources":["../../../src/builtins/domains/random.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAItD,eAAO,MAAM,eAAe,EAAE,UAAU,EA2CvC,CAAC"}