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.
- package/README.md +39 -13
- package/dist/ast/nodes.d.ts +4 -3
- package/dist/ast/nodes.d.ts.map +1 -1
- package/dist/ast/nodes.js +1 -0
- package/dist/ast/nodes.js.map +1 -1
- package/dist/ast/type-constants.d.ts +12 -0
- package/dist/ast/type-constants.d.ts.map +1 -0
- package/dist/ast/type-constants.js +16 -0
- package/dist/ast/type-constants.js.map +1 -0
- package/dist/ast/types.d.ts +1 -1
- package/dist/ast/types.d.ts.map +1 -1
- package/dist/builtins/builtin-enums.d.ts +12 -0
- package/dist/builtins/builtin-enums.d.ts.map +1 -0
- package/dist/builtins/builtin-enums.js +45 -0
- package/dist/builtins/builtin-enums.js.map +1 -0
- package/dist/builtins/builtin-types.d.ts +20 -0
- package/dist/builtins/builtin-types.d.ts.map +1 -0
- package/dist/builtins/builtin-types.js +6 -0
- package/dist/builtins/builtin-types.js.map +1 -0
- package/dist/builtins/builtins.d.ts +3 -0
- package/dist/builtins/builtins.d.ts.map +1 -0
- package/dist/builtins/builtins.js +3 -0
- package/dist/builtins/builtins.js.map +1 -0
- package/dist/builtins/domains/array.d.ts +3 -0
- package/dist/builtins/domains/array.d.ts.map +1 -0
- package/dist/builtins/domains/array.js +236 -0
- package/dist/builtins/domains/array.js.map +1 -0
- package/dist/builtins/domains/core.d.ts +3 -0
- package/dist/builtins/domains/core.d.ts.map +1 -0
- package/dist/builtins/domains/core.js +45 -0
- package/dist/builtins/domains/core.js.map +1 -0
- package/dist/builtins/domains/crypto.d.ts +3 -0
- package/dist/builtins/domains/crypto.d.ts.map +1 -0
- package/dist/builtins/domains/crypto.js +49 -0
- package/dist/builtins/domains/crypto.js.map +1 -0
- package/dist/builtins/domains/datetime.d.ts +3 -0
- package/dist/builtins/domains/datetime.d.ts.map +1 -0
- package/dist/builtins/domains/datetime.js +45 -0
- package/dist/builtins/domains/datetime.js.map +1 -0
- package/dist/builtins/domains/http.d.ts +3 -0
- package/dist/builtins/domains/http.d.ts.map +1 -0
- package/dist/builtins/domains/http.js +55 -0
- package/dist/builtins/domains/http.js.map +1 -0
- package/dist/builtins/domains/int64.d.ts +3 -0
- package/dist/builtins/domains/int64.d.ts.map +1 -0
- package/dist/builtins/domains/int64.js +31 -0
- package/dist/builtins/domains/int64.js.map +1 -0
- package/dist/builtins/domains/io.d.ts +3 -0
- package/dist/builtins/domains/io.d.ts.map +1 -0
- package/dist/builtins/domains/io.js +79 -0
- package/dist/builtins/domains/io.js.map +1 -0
- package/dist/builtins/domains/json.d.ts +3 -0
- package/dist/builtins/domains/json.d.ts.map +1 -0
- package/dist/builtins/domains/json.js +47 -0
- package/dist/builtins/domains/json.js.map +1 -0
- package/dist/builtins/domains/math.d.ts +3 -0
- package/dist/builtins/domains/math.d.ts.map +1 -0
- package/dist/builtins/domains/math.js +47 -0
- package/dist/builtins/domains/math.js.map +1 -0
- package/dist/builtins/domains/option.d.ts +3 -0
- package/dist/builtins/domains/option.d.ts.map +1 -0
- package/dist/builtins/domains/option.js +56 -0
- package/dist/builtins/domains/option.js.map +1 -0
- package/dist/builtins/domains/random.d.ts +3 -0
- package/dist/builtins/domains/random.d.ts.map +1 -0
- package/dist/builtins/domains/random.js +50 -0
- package/dist/builtins/domains/random.js.map +1 -0
- package/dist/builtins/domains/regex.d.ts +3 -0
- package/dist/builtins/domains/regex.d.ts.map +1 -0
- package/dist/builtins/domains/regex.js +69 -0
- package/dist/builtins/domains/regex.js.map +1 -0
- package/dist/builtins/domains/result.d.ts +3 -0
- package/dist/builtins/domains/result.d.ts.map +1 -0
- package/dist/builtins/domains/result.js +84 -0
- package/dist/builtins/domains/result.js.map +1 -0
- package/dist/builtins/domains/string.d.ts +3 -0
- package/dist/builtins/domains/string.d.ts.map +1 -0
- package/dist/builtins/domains/string.js +139 -0
- package/dist/builtins/domains/string.js.map +1 -0
- package/dist/builtins/domains/type-conversion.d.ts +3 -0
- package/dist/builtins/domains/type-conversion.d.ts.map +1 -0
- package/dist/builtins/domains/type-conversion.js +42 -0
- package/dist/builtins/domains/type-conversion.js.map +1 -0
- package/dist/builtins/host-helpers.d.ts +66 -0
- package/dist/builtins/host-helpers.d.ts.map +1 -0
- package/dist/builtins/host-helpers.js +127 -0
- package/dist/builtins/host-helpers.js.map +1 -0
- package/dist/builtins/registry.d.ts +48 -0
- package/dist/builtins/registry.d.ts.map +1 -0
- package/dist/builtins/registry.js +118 -0
- package/dist/builtins/registry.js.map +1 -0
- package/dist/check.d.ts +9 -2
- package/dist/check.d.ts.map +1 -1
- package/dist/check.js +30 -9
- package/dist/check.js.map +1 -1
- package/dist/checker/check.d.ts +18 -1
- package/dist/checker/check.d.ts.map +1 -1
- package/dist/checker/check.js +157 -108
- package/dist/checker/check.js.map +1 -1
- package/dist/checker/type-env.d.ts +2 -0
- package/dist/checker/type-env.d.ts.map +1 -1
- package/dist/checker/type-env.js +9 -0
- package/dist/checker/type-env.js.map +1 -1
- package/dist/codegen/browser-host-adapter.d.ts +29 -0
- package/dist/codegen/browser-host-adapter.d.ts.map +1 -0
- package/dist/codegen/browser-host-adapter.js +51 -0
- package/dist/codegen/browser-host-adapter.js.map +1 -0
- package/dist/codegen/builtins.d.ts +2 -26
- package/dist/codegen/builtins.d.ts.map +1 -1
- package/dist/codegen/builtins.js +2 -341
- package/dist/codegen/builtins.js.map +1 -1
- package/dist/codegen/closures.d.ts +17 -0
- package/dist/codegen/closures.d.ts.map +1 -0
- package/dist/codegen/closures.js +140 -0
- package/dist/codegen/closures.js.map +1 -0
- package/dist/codegen/codegen.d.ts +6 -30
- package/dist/codegen/codegen.d.ts.map +1 -1
- package/dist/codegen/codegen.js +154 -1103
- package/dist/codegen/codegen.js.map +1 -1
- package/dist/codegen/collect-strings.d.ts +4 -0
- package/dist/codegen/collect-strings.d.ts.map +1 -0
- package/dist/codegen/collect-strings.js +76 -0
- package/dist/codegen/collect-strings.js.map +1 -0
- package/dist/codegen/compile-calls.d.ts +10 -0
- package/dist/codegen/compile-calls.d.ts.map +1 -0
- package/dist/codegen/compile-calls.js +374 -0
- package/dist/codegen/compile-calls.js.map +1 -0
- package/dist/codegen/compile-data.d.ts +22 -0
- package/dist/codegen/compile-data.d.ts.map +1 -0
- package/dist/codegen/compile-data.js +243 -0
- package/dist/codegen/compile-data.js.map +1 -0
- package/dist/codegen/compile-expr.d.ts +10 -0
- package/dist/codegen/compile-expr.d.ts.map +1 -0
- package/dist/codegen/compile-expr.js +156 -0
- package/dist/codegen/compile-expr.js.map +1 -0
- package/dist/codegen/compile-match.d.ts +7 -0
- package/dist/codegen/compile-match.d.ts.map +1 -0
- package/dist/codegen/compile-match.js +195 -0
- package/dist/codegen/compile-match.js.map +1 -0
- package/dist/codegen/compile-scalars.d.ts +25 -0
- package/dist/codegen/compile-scalars.d.ts.map +1 -0
- package/dist/codegen/compile-scalars.js +211 -0
- package/dist/codegen/compile-scalars.js.map +1 -0
- package/dist/codegen/hof-generators.d.ts +39 -0
- package/dist/codegen/hof-generators.d.ts.map +1 -0
- package/dist/codegen/hof-generators.js +336 -0
- package/dist/codegen/hof-generators.js.map +1 -0
- package/dist/codegen/host-adapter.d.ts +44 -0
- package/dist/codegen/host-adapter.d.ts.map +1 -0
- package/dist/codegen/host-adapter.js +9 -0
- package/dist/codegen/host-adapter.js.map +1 -0
- package/dist/codegen/imports.d.ts +15 -0
- package/dist/codegen/imports.d.ts.map +1 -0
- package/dist/codegen/imports.js +165 -0
- package/dist/codegen/imports.js.map +1 -0
- package/dist/codegen/node-host-adapter.d.ts +35 -0
- package/dist/codegen/node-host-adapter.d.ts.map +1 -0
- package/dist/codegen/node-host-adapter.js +155 -0
- package/dist/codegen/node-host-adapter.js.map +1 -0
- package/dist/codegen/runner.d.ts +36 -2
- package/dist/codegen/runner.d.ts.map +1 -1
- package/dist/codegen/runner.js +147 -271
- package/dist/codegen/runner.js.map +1 -1
- package/dist/codegen/types.d.ts +96 -0
- package/dist/codegen/types.d.ts.map +1 -0
- package/dist/codegen/types.js +63 -0
- package/dist/codegen/types.js.map +1 -0
- package/dist/compact/expand.d.ts +25 -0
- package/dist/compact/expand.d.ts.map +1 -0
- package/dist/compact/expand.js +199 -0
- package/dist/compact/expand.js.map +1 -0
- package/dist/compile.d.ts +2 -1
- package/dist/compile.d.ts.map +1 -1
- package/dist/compile.js +2 -2
- package/dist/compile.js.map +1 -1
- package/dist/contracts/translate.js.map +1 -1
- package/dist/contracts/verify.d.ts +10 -2
- package/dist/contracts/verify.d.ts.map +1 -1
- package/dist/contracts/verify.js +26 -21
- package/dist/contracts/verify.js.map +1 -1
- package/dist/effects/call-graph.d.ts.map +1 -1
- package/dist/effects/call-graph.js +27 -4
- package/dist/effects/call-graph.js.map +1 -1
- package/dist/effects/effect-check.d.ts +10 -2
- package/dist/effects/effect-check.d.ts.map +1 -1
- package/dist/effects/effect-check.js +12 -7
- package/dist/effects/effect-check.js.map +1 -1
- package/dist/errors/error-catalog.d.ts +1 -1
- package/dist/errors/error-catalog.d.ts.map +1 -1
- package/dist/errors/error-catalog.js +119 -0
- package/dist/errors/error-catalog.js.map +1 -1
- package/dist/errors/structured-errors.d.ts +28 -1
- package/dist/errors/structured-errors.d.ts.map +1 -1
- package/dist/errors/structured-errors.js +9 -0
- package/dist/errors/structured-errors.js.map +1 -1
- package/dist/index.d.ts +20 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +26 -10
- package/dist/index.js.map +1 -1
- package/dist/lint/lint.d.ts +9 -0
- package/dist/lint/lint.d.ts.map +1 -0
- package/dist/lint/lint.js +354 -0
- package/dist/lint/lint.js.map +1 -0
- package/dist/lint/warnings.d.ts +54 -0
- package/dist/lint/warnings.d.ts.map +1 -0
- package/dist/lint/warnings.js +39 -0
- package/dist/lint/warnings.js.map +1 -0
- package/dist/mcp/create-server.d.ts.map +1 -1
- package/dist/mcp/create-server.js +66 -5
- package/dist/mcp/create-server.js.map +1 -1
- package/dist/mcp/handlers.d.ts +21 -5
- package/dist/mcp/handlers.d.ts.map +1 -1
- package/dist/mcp/handlers.js +65 -15
- package/dist/mcp/handlers.js.map +1 -1
- package/dist/mcp/prompts.d.ts +17 -0
- package/dist/mcp/prompts.d.ts.map +1 -0
- package/dist/mcp/prompts.js +181 -0
- package/dist/mcp/prompts.js.map +1 -0
- package/dist/mcp/server.js +1 -4
- package/dist/mcp/server.js.map +1 -1
- package/dist/resolver/resolve.d.ts.map +1 -1
- package/dist/resolver/resolve.js +62 -16
- package/dist/resolver/resolve.js.map +1 -1
- package/dist/validator/node-validators.d.ts.map +1 -1
- package/dist/validator/node-validators.js +60 -5
- package/dist/validator/node-validators.js.map +1 -1
- package/package.json +4 -2
|
@@ -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 @@
|
|
|
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":"AAAA,gFAAgF;AAChF,wDAAwD;AACxD,gFAAgF;AAGhF,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAoB,MAAM,oBAAoB,CAAC;AAE1F,MAAM,CAAC,MAAM,eAAe,GAAiB;IACzC;QACI,IAAI,EAAE,QAAQ;QACd,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,OAAO,iBAAiB,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;YAC9E,CAAC;SACJ;KACJ;IACD;QACI,IAAI,EAAE,KAAK;QACX,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,OAAO,iBAAiB,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;YAC3E,CAAC;SACJ;KACJ;IACD;QACI,IAAI,EAAE,MAAM;QACZ,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,OAAe,EAAE,OAAe,EAChC,MAAc,EAAE,MAAc,EAC9B,OAAe,EAAE,OAAe,EAC1B,EAAE;gBACR,MAAM,GAAG,GAAG,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACvC,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;gBACvE,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;gBACpE,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;gBACvE,OAAO,iBAAiB,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;YACxF,CAAC;SACJ;KACJ;CACJ,CAAC"}
|
|
@@ -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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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"}
|