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,50 @@
|
|
|
1
|
+
// =============================================================================
|
|
2
|
+
// Random domain — randomInt, randomFloat, randomUuid
|
|
3
|
+
// =============================================================================
|
|
4
|
+
import { INT_TYPE, FLOAT_TYPE, STRING_TYPE } from "../../ast/type-constants.js";
|
|
5
|
+
import { writeStringResult } from "../host-helpers.js";
|
|
6
|
+
export const RANDOM_BUILTINS = [
|
|
7
|
+
{
|
|
8
|
+
name: "randomInt",
|
|
9
|
+
type: { kind: "fn_type", params: [INT_TYPE, INT_TYPE], effects: ["reads"], returnType: INT_TYPE },
|
|
10
|
+
impl: {
|
|
11
|
+
kind: "host",
|
|
12
|
+
factory: () => (min, max) => {
|
|
13
|
+
// Inclusive range [min, max] with rejection sampling to avoid modulo bias
|
|
14
|
+
const range = max - min + 1;
|
|
15
|
+
const limit = 0x100000000 - (0x100000000 % range); // largest multiple of range ≤ 2^32
|
|
16
|
+
const array = new Uint32Array(1);
|
|
17
|
+
let val;
|
|
18
|
+
do {
|
|
19
|
+
crypto.getRandomValues(array);
|
|
20
|
+
val = array[0];
|
|
21
|
+
} while (val >= limit);
|
|
22
|
+
return min + (val % range);
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
name: "randomFloat",
|
|
28
|
+
type: { kind: "fn_type", params: [], effects: ["reads"], returnType: FLOAT_TYPE },
|
|
29
|
+
impl: {
|
|
30
|
+
kind: "host",
|
|
31
|
+
factory: () => () => {
|
|
32
|
+
const array = new Uint32Array(1);
|
|
33
|
+
crypto.getRandomValues(array);
|
|
34
|
+
return array[0] / 0x100000000; // [0, 1) — divide by 2^32
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
name: "randomUuid",
|
|
40
|
+
type: { kind: "fn_type", params: [], effects: ["reads"], returnType: STRING_TYPE },
|
|
41
|
+
impl: {
|
|
42
|
+
kind: "host",
|
|
43
|
+
factory: (ctx) => () => {
|
|
44
|
+
const uuid = crypto.randomUUID();
|
|
45
|
+
return writeStringResult(ctx.state, uuid, ctx.encoder);
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
];
|
|
50
|
+
//# sourceMappingURL=random.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"random.js","sourceRoot":"","sources":["../../../src/builtins/domains/random.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,qDAAqD;AACrD,gFAAgF;AAGhF,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAoB,MAAM,oBAAoB,CAAC;AAEzE,MAAM,CAAC,MAAM,eAAe,GAAiB;IACzC;QACI,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE;QACjG,IAAI,EAAE;YACF,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,GAAW,EAAE,GAAW,EAAU,EAAE;gBAChD,0EAA0E;gBAC1E,MAAM,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;gBAC5B,MAAM,KAAK,GAAG,WAAW,GAAG,CAAC,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,mCAAmC;gBACtF,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;gBACjC,IAAI,GAAW,CAAC;gBAChB,GAAG,CAAC;oBACA,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;oBAC9B,GAAG,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;gBACpB,CAAC,QAAQ,GAAG,IAAI,KAAK,EAAE;gBACvB,OAAO,GAAG,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC;YAC/B,CAAC;SACJ;KACJ;IACD;QACI,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE;QACjF,IAAI,EAAE;YACF,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,GAAG,EAAE,CAAC,GAAW,EAAE;gBACxB,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;gBACjC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;gBAC9B,OAAO,KAAK,CAAC,CAAC,CAAE,GAAG,WAAW,CAAC,CAAC,0BAA0B;YAC9D,CAAC;SACJ;KACJ;IACD;QACI,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE;QAClF,IAAI,EAAE;YACF,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,CAAC,GAAgB,EAAE,EAAE,CAAC,GAAW,EAAE;gBACxC,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;gBACjC,OAAO,iBAAiB,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;YAC3D,CAAC;SACJ;KACJ;CACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"regex.d.ts","sourceRoot":"","sources":["../../../src/builtins/domains/regex.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAItD,eAAO,MAAM,cAAc,EAAE,UAAU,EA+DtC,CAAC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
// =============================================================================
|
|
2
|
+
// Regex domain — regexTest, regexMatch, regexReplace
|
|
3
|
+
// =============================================================================
|
|
4
|
+
import { STRING_TYPE, BOOL_TYPE } from "../../ast/type-constants.js";
|
|
5
|
+
import { getMemoryBuffer, writeStringResult } from "../host-helpers.js";
|
|
6
|
+
export const REGEX_BUILTINS = [
|
|
7
|
+
{
|
|
8
|
+
name: "regexTest",
|
|
9
|
+
type: { kind: "fn_type", params: [STRING_TYPE, STRING_TYPE], effects: ["pure"], returnType: BOOL_TYPE },
|
|
10
|
+
impl: {
|
|
11
|
+
kind: "host",
|
|
12
|
+
factory: (ctx) => (patPtr, patLen, inputPtr, inputLen) => {
|
|
13
|
+
const buf = getMemoryBuffer(ctx.state);
|
|
14
|
+
const pattern = ctx.decoder.decode(new Uint8Array(buf, patPtr, patLen));
|
|
15
|
+
const input = ctx.decoder.decode(new Uint8Array(buf, inputPtr, inputLen));
|
|
16
|
+
try {
|
|
17
|
+
return new RegExp(pattern).test(input) ? 1 : 0;
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
return 0; // invalid regex → false
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
name: "regexMatch",
|
|
27
|
+
type: { kind: "fn_type", params: [STRING_TYPE, STRING_TYPE], effects: ["pure"], returnType: STRING_TYPE },
|
|
28
|
+
impl: {
|
|
29
|
+
kind: "host",
|
|
30
|
+
factory: (ctx) => (patPtr, patLen, inputPtr, inputLen) => {
|
|
31
|
+
const buf = getMemoryBuffer(ctx.state);
|
|
32
|
+
const pattern = ctx.decoder.decode(new Uint8Array(buf, patPtr, patLen));
|
|
33
|
+
const input = ctx.decoder.decode(new Uint8Array(buf, inputPtr, inputLen));
|
|
34
|
+
try {
|
|
35
|
+
const m = input.match(new RegExp(pattern));
|
|
36
|
+
return writeStringResult(ctx.state, m ? m[0] : "", ctx.encoder);
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
return writeStringResult(ctx.state, "", ctx.encoder); // invalid regex → empty string
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
name: "regexReplace",
|
|
46
|
+
type: {
|
|
47
|
+
kind: "fn_type",
|
|
48
|
+
params: [STRING_TYPE, STRING_TYPE, STRING_TYPE],
|
|
49
|
+
effects: ["pure"],
|
|
50
|
+
returnType: STRING_TYPE,
|
|
51
|
+
},
|
|
52
|
+
impl: {
|
|
53
|
+
kind: "host",
|
|
54
|
+
factory: (ctx) => (inputPtr, inputLen, patPtr, patLen, replPtr, replLen) => {
|
|
55
|
+
const buf = getMemoryBuffer(ctx.state);
|
|
56
|
+
const input = ctx.decoder.decode(new Uint8Array(buf, inputPtr, inputLen));
|
|
57
|
+
const pattern = ctx.decoder.decode(new Uint8Array(buf, patPtr, patLen));
|
|
58
|
+
const replacement = ctx.decoder.decode(new Uint8Array(buf, replPtr, replLen));
|
|
59
|
+
try {
|
|
60
|
+
return writeStringResult(ctx.state, input.replace(new RegExp(pattern, "g"), replacement), ctx.encoder);
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
return writeStringResult(ctx.state, input, ctx.encoder); // invalid regex → unchanged
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
},
|
|
67
|
+
},
|
|
68
|
+
];
|
|
69
|
+
//# sourceMappingURL=regex.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"regex.js","sourceRoot":"","sources":["../../../src/builtins/domains/regex.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"result.d.ts","sourceRoot":"","sources":["../../../src/builtins/domains/result.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAItD,eAAO,MAAM,eAAe,EAAE,UAAU,EAyEvC,CAAC"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
// =============================================================================
|
|
2
|
+
// Result domain — isOk, isErr, unwrapOk, unwrapErr, unwrapOkOr, unwrapErrOr
|
|
3
|
+
// =============================================================================
|
|
4
|
+
import { INT_TYPE, BOOL_TYPE, RESULT_INT_TYPE } from "../../ast/type-constants.js";
|
|
5
|
+
import { getMemoryBuffer } from "../host-helpers.js";
|
|
6
|
+
export const RESULT_BUILTINS = [
|
|
7
|
+
{
|
|
8
|
+
name: "isOk",
|
|
9
|
+
type: { kind: "fn_type", params: [RESULT_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) === 0 ? 1 : 0;
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
name: "isErr",
|
|
19
|
+
type: { kind: "fn_type", params: [RESULT_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) === 1 ? 1 : 0;
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
name: "unwrapOk",
|
|
29
|
+
type: { kind: "fn_type", params: [RESULT_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 === 0)
|
|
36
|
+
return view.getInt32(ptr + 8, true);
|
|
37
|
+
throw new Error("unwrapOk called on Err");
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
name: "unwrapErr",
|
|
43
|
+
type: { kind: "fn_type", params: [RESULT_INT_TYPE], effects: ["fails"], returnType: INT_TYPE },
|
|
44
|
+
impl: {
|
|
45
|
+
kind: "host",
|
|
46
|
+
factory: (ctx) => (ptr) => {
|
|
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
|
+
throw new Error("unwrapErr called on Ok");
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
name: "unwrapOkOr",
|
|
57
|
+
type: { kind: "fn_type", params: [RESULT_INT_TYPE, INT_TYPE], effects: ["pure"], returnType: INT_TYPE },
|
|
58
|
+
impl: {
|
|
59
|
+
kind: "host",
|
|
60
|
+
factory: (ctx) => (ptr, defaultVal) => {
|
|
61
|
+
const view = new DataView(getMemoryBuffer(ctx.state));
|
|
62
|
+
const tag = view.getInt32(ptr, true);
|
|
63
|
+
if (tag === 0)
|
|
64
|
+
return view.getInt32(ptr + 8, true);
|
|
65
|
+
return defaultVal;
|
|
66
|
+
},
|
|
67
|
+
},
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
name: "unwrapErrOr",
|
|
71
|
+
type: { kind: "fn_type", params: [RESULT_INT_TYPE, INT_TYPE], effects: ["pure"], returnType: INT_TYPE },
|
|
72
|
+
impl: {
|
|
73
|
+
kind: "host",
|
|
74
|
+
factory: (ctx) => (ptr, defaultVal) => {
|
|
75
|
+
const view = new DataView(getMemoryBuffer(ctx.state));
|
|
76
|
+
const tag = view.getInt32(ptr, true);
|
|
77
|
+
if (tag === 1)
|
|
78
|
+
return view.getInt32(ptr + 8, true);
|
|
79
|
+
return defaultVal;
|
|
80
|
+
},
|
|
81
|
+
},
|
|
82
|
+
},
|
|
83
|
+
];
|
|
84
|
+
//# sourceMappingURL=result.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"result.js","sourceRoot":"","sources":["../../../src/builtins/domains/result.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"string.d.ts","sourceRoot":"","sources":["../../../src/builtins/domains/string.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAItD,eAAO,MAAM,eAAe,EAAE,UAAU,EAoIvC,CAAC"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
// =============================================================================
|
|
2
|
+
// String domain — string_length, substring, string_concat, etc.
|
|
3
|
+
// =============================================================================
|
|
4
|
+
import { INT_TYPE, STRING_TYPE, BOOL_TYPE } from "../../ast/type-constants.js";
|
|
5
|
+
import { getMemoryBuffer, writeStringResult } from "../host-helpers.js";
|
|
6
|
+
export const STRING_BUILTINS = [
|
|
7
|
+
{
|
|
8
|
+
name: "string_length",
|
|
9
|
+
type: { kind: "fn_type", params: [STRING_TYPE], effects: ["pure"], returnType: INT_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 str.length;
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
name: "substring",
|
|
20
|
+
type: { kind: "fn_type", params: [STRING_TYPE, INT_TYPE, INT_TYPE], effects: ["pure"], returnType: STRING_TYPE },
|
|
21
|
+
impl: {
|
|
22
|
+
kind: "host",
|
|
23
|
+
factory: (ctx) => (ptr, len, start, end) => {
|
|
24
|
+
const str = ctx.decoder.decode(new Uint8Array(getMemoryBuffer(ctx.state), ptr, len));
|
|
25
|
+
return writeStringResult(ctx.state, str.substring(start, end), ctx.encoder);
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
name: "string_concat",
|
|
31
|
+
type: { kind: "fn_type", params: [STRING_TYPE, STRING_TYPE], effects: ["pure"], returnType: STRING_TYPE },
|
|
32
|
+
impl: {
|
|
33
|
+
kind: "host",
|
|
34
|
+
factory: (ctx) => (aPtr, aLen, bPtr, bLen) => {
|
|
35
|
+
const buf = getMemoryBuffer(ctx.state);
|
|
36
|
+
const a = ctx.decoder.decode(new Uint8Array(buf, aPtr, aLen));
|
|
37
|
+
const b = ctx.decoder.decode(new Uint8Array(buf, bPtr, bLen));
|
|
38
|
+
return writeStringResult(ctx.state, a + b, ctx.encoder);
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
name: "string_indexOf",
|
|
44
|
+
type: { kind: "fn_type", params: [STRING_TYPE, STRING_TYPE], effects: ["pure"], returnType: INT_TYPE },
|
|
45
|
+
impl: {
|
|
46
|
+
kind: "host",
|
|
47
|
+
factory: (ctx) => (hayPtr, hayLen, needlePtr, needleLen) => {
|
|
48
|
+
const buf = getMemoryBuffer(ctx.state);
|
|
49
|
+
const haystack = ctx.decoder.decode(new Uint8Array(buf, hayPtr, hayLen));
|
|
50
|
+
const needle = ctx.decoder.decode(new Uint8Array(buf, needlePtr, needleLen));
|
|
51
|
+
return haystack.indexOf(needle);
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
name: "toUpperCase",
|
|
57
|
+
type: { kind: "fn_type", params: [STRING_TYPE], effects: ["pure"], returnType: STRING_TYPE },
|
|
58
|
+
impl: {
|
|
59
|
+
kind: "host",
|
|
60
|
+
factory: (ctx) => (ptr, len) => {
|
|
61
|
+
const str = ctx.decoder.decode(new Uint8Array(getMemoryBuffer(ctx.state), ptr, len));
|
|
62
|
+
return writeStringResult(ctx.state, str.toUpperCase(), ctx.encoder);
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
name: "toLowerCase",
|
|
68
|
+
type: { kind: "fn_type", params: [STRING_TYPE], effects: ["pure"], returnType: STRING_TYPE },
|
|
69
|
+
impl: {
|
|
70
|
+
kind: "host",
|
|
71
|
+
factory: (ctx) => (ptr, len) => {
|
|
72
|
+
const str = ctx.decoder.decode(new Uint8Array(getMemoryBuffer(ctx.state), ptr, len));
|
|
73
|
+
return writeStringResult(ctx.state, str.toLowerCase(), ctx.encoder);
|
|
74
|
+
},
|
|
75
|
+
},
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
name: "string_trim",
|
|
79
|
+
type: { kind: "fn_type", params: [STRING_TYPE], effects: ["pure"], returnType: STRING_TYPE },
|
|
80
|
+
impl: {
|
|
81
|
+
kind: "host",
|
|
82
|
+
factory: (ctx) => (ptr, len) => {
|
|
83
|
+
const str = ctx.decoder.decode(new Uint8Array(getMemoryBuffer(ctx.state), ptr, len));
|
|
84
|
+
return writeStringResult(ctx.state, str.trim(), ctx.encoder);
|
|
85
|
+
},
|
|
86
|
+
},
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
name: "string_startsWith",
|
|
90
|
+
type: { kind: "fn_type", params: [STRING_TYPE, STRING_TYPE], effects: ["pure"], returnType: BOOL_TYPE },
|
|
91
|
+
impl: {
|
|
92
|
+
kind: "host",
|
|
93
|
+
factory: (ctx) => (strPtr, strLen, prefixPtr, prefixLen) => {
|
|
94
|
+
const buf = getMemoryBuffer(ctx.state);
|
|
95
|
+
const str = ctx.decoder.decode(new Uint8Array(buf, strPtr, strLen));
|
|
96
|
+
const prefix = ctx.decoder.decode(new Uint8Array(buf, prefixPtr, prefixLen));
|
|
97
|
+
return str.startsWith(prefix) ? 1 : 0;
|
|
98
|
+
},
|
|
99
|
+
},
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
name: "string_endsWith",
|
|
103
|
+
type: { kind: "fn_type", params: [STRING_TYPE, STRING_TYPE], effects: ["pure"], returnType: BOOL_TYPE },
|
|
104
|
+
impl: {
|
|
105
|
+
kind: "host",
|
|
106
|
+
factory: (ctx) => (strPtr, strLen, suffixPtr, suffixLen) => {
|
|
107
|
+
const buf = getMemoryBuffer(ctx.state);
|
|
108
|
+
const str = ctx.decoder.decode(new Uint8Array(buf, strPtr, strLen));
|
|
109
|
+
const suffix = ctx.decoder.decode(new Uint8Array(buf, suffixPtr, suffixLen));
|
|
110
|
+
return str.endsWith(suffix) ? 1 : 0;
|
|
111
|
+
},
|
|
112
|
+
},
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
name: "string_contains",
|
|
116
|
+
type: { kind: "fn_type", params: [STRING_TYPE, STRING_TYPE], effects: ["pure"], returnType: BOOL_TYPE },
|
|
117
|
+
impl: {
|
|
118
|
+
kind: "host",
|
|
119
|
+
factory: (ctx) => (hayPtr, hayLen, needlePtr, needleLen) => {
|
|
120
|
+
const buf = getMemoryBuffer(ctx.state);
|
|
121
|
+
const haystack = ctx.decoder.decode(new Uint8Array(buf, hayPtr, hayLen));
|
|
122
|
+
const needle = ctx.decoder.decode(new Uint8Array(buf, needlePtr, needleLen));
|
|
123
|
+
return haystack.includes(needle) ? 1 : 0;
|
|
124
|
+
},
|
|
125
|
+
},
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
name: "string_repeat",
|
|
129
|
+
type: { kind: "fn_type", params: [STRING_TYPE, INT_TYPE], effects: ["pure"], returnType: STRING_TYPE },
|
|
130
|
+
impl: {
|
|
131
|
+
kind: "host",
|
|
132
|
+
factory: (ctx) => (ptr, len, count) => {
|
|
133
|
+
const str = ctx.decoder.decode(new Uint8Array(getMemoryBuffer(ctx.state), ptr, len));
|
|
134
|
+
return writeStringResult(ctx.state, str.repeat(count), ctx.encoder);
|
|
135
|
+
},
|
|
136
|
+
},
|
|
137
|
+
},
|
|
138
|
+
];
|
|
139
|
+
//# sourceMappingURL=string.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"string.js","sourceRoot":"","sources":["../../../src/builtins/domains/string.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type-conversion.d.ts","sourceRoot":"","sources":["../../../src/builtins/domains/type-conversion.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAItD,eAAO,MAAM,wBAAwB,EAAE,UAAU,EAsChD,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
// =============================================================================
|
|
2
|
+
// Type conversion domain — intToString, floatToString, boolToString, etc.
|
|
3
|
+
// =============================================================================
|
|
4
|
+
import { INT_TYPE, FLOAT_TYPE, STRING_TYPE, BOOL_TYPE } from "../../ast/type-constants.js";
|
|
5
|
+
import { writeStringResult } from "../host-helpers.js";
|
|
6
|
+
export const TYPE_CONVERSION_BUILTINS = [
|
|
7
|
+
{
|
|
8
|
+
name: "intToString",
|
|
9
|
+
type: { kind: "fn_type", params: [INT_TYPE], effects: ["pure"], returnType: STRING_TYPE },
|
|
10
|
+
impl: {
|
|
11
|
+
kind: "host",
|
|
12
|
+
factory: (ctx) => (value) => writeStringResult(ctx.state, String(value), ctx.encoder),
|
|
13
|
+
},
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
name: "floatToString",
|
|
17
|
+
type: { kind: "fn_type", params: [FLOAT_TYPE], effects: ["pure"], returnType: STRING_TYPE },
|
|
18
|
+
impl: {
|
|
19
|
+
kind: "host",
|
|
20
|
+
factory: (ctx) => (value) => writeStringResult(ctx.state, String(value), ctx.encoder),
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
name: "boolToString",
|
|
25
|
+
type: { kind: "fn_type", params: [BOOL_TYPE], effects: ["pure"], returnType: STRING_TYPE },
|
|
26
|
+
impl: {
|
|
27
|
+
kind: "host",
|
|
28
|
+
factory: (ctx) => (value) => writeStringResult(ctx.state, value ? "true" : "false", ctx.encoder),
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
name: "floatToInt",
|
|
33
|
+
type: { kind: "fn_type", params: [FLOAT_TYPE], effects: ["pure"], returnType: INT_TYPE },
|
|
34
|
+
impl: { kind: "host", factory: () => (value) => (Math.trunc(value) | 0) },
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
name: "intToFloat",
|
|
38
|
+
type: { kind: "fn_type", params: [INT_TYPE], effects: ["pure"], returnType: FLOAT_TYPE },
|
|
39
|
+
impl: { kind: "host", factory: () => (value) => value },
|
|
40
|
+
},
|
|
41
|
+
];
|
|
42
|
+
//# sourceMappingURL=type-conversion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type-conversion.js","sourceRoot":"","sources":["../../../src/builtins/domains/type-conversion.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,0EAA0E;AAC1E,gFAAgF;AAGhF,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAC3F,OAAO,EAAE,iBAAiB,EAAoB,MAAM,oBAAoB,CAAC;AAEzE,MAAM,CAAC,MAAM,wBAAwB,GAAiB;IAClD;QACI,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE;QACzF,IAAI,EAAE;YACF,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,CAAC,GAAgB,EAAE,EAAE,CAAC,CAAC,KAAa,EAAU,EAAE,CACrD,iBAAiB,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;SAC/D;KACJ;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,KAAa,EAAU,EAAE,CACrD,iBAAiB,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;SAC/D;KACJ;IACD;QACI,IAAI,EAAE,cAAc;QACpB,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE;QAC1F,IAAI,EAAE;YACF,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,CAAC,GAAgB,EAAE,EAAE,CAAC,CAAC,KAAa,EAAU,EAAE,CACrD,iBAAiB,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC;SAC1E;KACJ;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,KAAa,EAAU,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE;KAC5F;IACD;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,KAAa,EAAU,EAAE,CAAC,KAAK,EAAE;KAC1E;CACJ,CAAC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import type { EdictHostAdapter } from "../codegen/host-adapter.js";
|
|
2
|
+
/** Mutable runtime state shared by all host functions during one execution. */
|
|
3
|
+
export interface RuntimeState {
|
|
4
|
+
/** Captured stdout output parts. */
|
|
5
|
+
outputParts: string[];
|
|
6
|
+
/** Late-bound WASM instance — set after instantiation. */
|
|
7
|
+
instance: WasmInstance | null;
|
|
8
|
+
/** Optional sandbox directory for file IO. If unset, readFile/writeFile return Err. */
|
|
9
|
+
sandboxDir?: string;
|
|
10
|
+
}
|
|
11
|
+
interface WasmInstance {
|
|
12
|
+
readonly exports: {
|
|
13
|
+
[key: string]: unknown;
|
|
14
|
+
memory?: {
|
|
15
|
+
readonly buffer: ArrayBuffer;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
/** Typed error thrown when a host-side heap allocation exceeds WASM memory bounds. */
|
|
20
|
+
export declare class EdictOomError extends Error {
|
|
21
|
+
heapUsed: number;
|
|
22
|
+
heapLimit: number;
|
|
23
|
+
constructor(heapUsed: number, heapLimit: number);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Context passed to every host builtin factory function.
|
|
27
|
+
* Bundles state, adapter, and shared encoder/decoder so each domain
|
|
28
|
+
* doesn't need to create its own or take a different arg signature.
|
|
29
|
+
*/
|
|
30
|
+
export interface HostContext {
|
|
31
|
+
state: RuntimeState;
|
|
32
|
+
adapter: EdictHostAdapter;
|
|
33
|
+
encoder: TextEncoder;
|
|
34
|
+
decoder: TextDecoder;
|
|
35
|
+
}
|
|
36
|
+
export declare function getMemoryBuffer(state: RuntimeState): ArrayBuffer;
|
|
37
|
+
/**
|
|
38
|
+
* Centralized heap allocator with bounds checking.
|
|
39
|
+
* Allocates `size` bytes (8-byte aligned) from the bump allocator,
|
|
40
|
+
* throwing EdictOomError if the allocation would exceed WASM memory.
|
|
41
|
+
*/
|
|
42
|
+
export declare function allocateHeap(state: RuntimeState, size: number): number;
|
|
43
|
+
/**
|
|
44
|
+
* Write a string result into WASM memory at __heap_ptr,
|
|
45
|
+
* advance __heap_ptr (8-byte aligned), set __str_ret_len, and return ptr.
|
|
46
|
+
*/
|
|
47
|
+
export declare function writeStringResult(state: RuntimeState, str: string, encoder: TextEncoder): number;
|
|
48
|
+
/**
|
|
49
|
+
* Allocate a new array on the WASM heap: [length: i32][elem0: i32]...
|
|
50
|
+
* Advances __heap_ptr (8-byte aligned) and returns the new array pointer.
|
|
51
|
+
*/
|
|
52
|
+
export declare function writeArrayResult(state: RuntimeState, elements: number[]): number;
|
|
53
|
+
/**
|
|
54
|
+
* Allocate a Result value on the WASM heap: [tag: i32][pad(4)][value: i32][pad(4)]
|
|
55
|
+
* tag=0 means Ok, tag=1 means Err. Total size = 16 bytes (matches enum layout).
|
|
56
|
+
* Returns the pointer to the Result pair.
|
|
57
|
+
*/
|
|
58
|
+
export declare function writeResultValue(state: RuntimeState, tag: number, value: number): number;
|
|
59
|
+
/**
|
|
60
|
+
* Format a Date using strftime-style tokens.
|
|
61
|
+
* Supported: %Y (year), %m (month 01-12), %d (day 01-31),
|
|
62
|
+
* %H (hour 00-23), %M (min 00-59), %S (sec 00-59), %% (literal %)
|
|
63
|
+
*/
|
|
64
|
+
export declare function formatDateString(date: Date, fmt: string): string;
|
|
65
|
+
export {};
|
|
66
|
+
//# sourceMappingURL=host-helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host-helpers.d.ts","sourceRoot":"","sources":["../../src/builtins/host-helpers.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAMnE,+EAA+E;AAC/E,MAAM,WAAW,YAAY;IACzB,oCAAoC;IACpC,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,0DAA0D;IAC1D,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAC;IAC9B,uFAAuF;IACvF,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,UAAU,YAAY;IAClB,QAAQ,CAAC,OAAO,EAAE;QACd,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;QACvB,MAAM,CAAC,EAAE;YAAE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;SAAE,CAAC;KAC7C,CAAC;CACL;AAED,sFAAsF;AACtF,qBAAa,aAAc,SAAQ,KAAK;IACjB,QAAQ,EAAE,MAAM;IAAS,SAAS,EAAE,MAAM;gBAA1C,QAAQ,EAAE,MAAM,EAAS,SAAS,EAAE,MAAM;CAGhE;AAMD;;;;GAIG;AACH,MAAM,WAAW,WAAW;IACxB,KAAK,EAAE,YAAY,CAAC;IACpB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,OAAO,EAAE,WAAW,CAAC;IACrB,OAAO,EAAE,WAAW,CAAC;CACxB;AAMD,wBAAgB,eAAe,CAAC,KAAK,EAAE,YAAY,GAAG,WAAW,CAEhE;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAYtE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,MAAM,CAQhG;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAShF;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAMxF;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAwBhE"}
|