@scriptc/compiler 0.2.0 → 0.2.2
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/ambient/scriptc-node-fallback.d.ts +84 -19
- package/dist/backend/cycle-analysis.js +1 -0
- package/dist/backend/cycle-analysis.js.map +1 -1
- package/dist/backend/llvm/classes.js +21 -5
- package/dist/backend/llvm/classes.js.map +1 -1
- package/dist/backend/llvm/dyn.d.ts +8 -0
- package/dist/backend/llvm/dyn.js +247 -108
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emitter.d.ts +6 -3
- package/dist/backend/llvm/emitter.js +99 -25
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/emitter.test.js +9 -1
- package/dist/backend/llvm/emitter.test.js.map +1 -1
- package/dist/backend/llvm/expr-bytes.d.ts +1 -1
- package/dist/backend/llvm/expr-bytes.js +28 -17
- package/dist/backend/llvm/expr-bytes.js.map +1 -1
- package/dist/backend/llvm/expr-containers.js +5 -0
- package/dist/backend/llvm/expr-containers.js.map +1 -1
- package/dist/backend/llvm/expr-control.js +1 -1
- package/dist/backend/llvm/expr-control.js.map +1 -1
- package/dist/backend/llvm/expr-dynamic.js +47 -13
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.js +11 -1
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-records.js +11 -3
- package/dist/backend/llvm/expr-records.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.js +187 -18
- package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
- package/dist/backend/llvm/expr-stream-callbacks.d.ts +2 -2
- package/dist/backend/llvm/expr-stream-callbacks.js +7 -57
- package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
- package/dist/backend/llvm/lib-dispatch.js +41 -3
- package/dist/backend/llvm/lib-dispatch.js.map +1 -1
- package/dist/backend/llvm/lib-filesystem.js +12 -9
- package/dist/backend/llvm/lib-filesystem.js.map +1 -1
- package/dist/backend/llvm/lib-process.js +23 -3
- package/dist/backend/llvm/lib-process.js.map +1 -1
- package/dist/backend/llvm/lib-shared.js +80 -3
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/shapes.js +8 -2
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/may-throw.js +4 -0
- package/dist/backend/may-throw.js.map +1 -1
- package/dist/backend/native-codegen.d.ts +1 -1
- package/dist/backend/native-codegen.js +4 -3
- package/dist/backend/native-codegen.js.map +1 -1
- package/dist/backend/native-codegen.test.js +11 -0
- package/dist/backend/native-codegen.test.js.map +1 -1
- package/dist/backend/native-toolchain.d.ts +3 -6
- package/dist/backend/native-toolchain.js +53 -23
- package/dist/backend/native-toolchain.js.map +1 -1
- package/dist/backend/native-toolchain.test.js +72 -0
- package/dist/backend/native-toolchain.test.js.map +1 -1
- package/dist/backend/runtime-abi.d.ts +2 -2
- package/dist/backend/runtime-abi.js +2 -2
- package/dist/backend/runtime-pack-native.js +4 -1
- package/dist/backend/runtime-pack-native.js.map +1 -1
- package/dist/backend/runtime-pack-targets.test.js +1 -1
- package/dist/backend/runtime-pack.test.js +1 -1
- package/dist/backend/target-diagnostics.d.ts +5 -0
- package/dist/backend/target-diagnostics.js +72 -1
- package/dist/backend/target-diagnostics.js.map +1 -1
- package/dist/backend/target-diagnostics.test.d.ts +1 -0
- package/dist/backend/target-diagnostics.test.js +68 -0
- package/dist/backend/target-diagnostics.test.js.map +1 -0
- package/dist/backend/targets.js +10 -6
- package/dist/backend/targets.js.map +1 -1
- package/dist/backend/targets.test.js +7 -0
- package/dist/backend/targets.test.js.map +1 -1
- package/dist/compat/fetch-profile.js +34 -4
- package/dist/compat/fetch-profile.js.map +1 -1
- package/dist/coverage/surface-manifest.js +5 -3
- package/dist/coverage/surface-manifest.js.map +1 -1
- package/dist/diagnostics/diagnostic.js +2 -7
- package/dist/diagnostics/diagnostic.js.map +1 -1
- package/dist/executable/executable-cache.d.ts +7 -3
- package/dist/executable/executable-cache.js +47 -11
- package/dist/executable/executable-cache.js.map +1 -1
- package/dist/executable/executable-cache.test.js +109 -2
- package/dist/executable/executable-cache.test.js.map +1 -1
- package/dist/executable/prepare.js +2 -1
- package/dist/executable/prepare.js.map +1 -1
- package/dist/frontend/builtin-modules.d.ts +1 -1
- package/dist/frontend/builtin-modules.js +1 -1
- package/dist/frontend/builtin-modules.js.map +1 -1
- package/dist/frontend/function-completion.d.ts +6 -0
- package/dist/frontend/function-completion.js +50 -0
- package/dist/frontend/function-completion.js.map +1 -0
- package/dist/frontend/lowering/abstract-equality.js +5 -1
- package/dist/frontend/lowering/abstract-equality.js.map +1 -1
- package/dist/frontend/lowering/checked-iterable-spread.d.ts +4 -0
- package/dist/frontend/lowering/checked-iterable-spread.js +30 -0
- package/dist/frontend/lowering/checked-iterable-spread.js.map +1 -0
- package/dist/frontend/lowering/checked-promise-all.d.ts +5 -0
- package/dist/frontend/lowering/checked-promise-all.js +31 -0
- package/dist/frontend/lowering/checked-promise-all.js.map +1 -0
- package/dist/frontend/lowering/class-callbacks.d.ts +4 -4
- package/dist/frontend/lowering/class-callbacks.js +29 -17
- package/dist/frontend/lowering/class-callbacks.js.map +1 -1
- package/dist/frontend/lowering/class-construction.d.ts +14 -0
- package/dist/frontend/lowering/class-construction.js +185 -0
- package/dist/frontend/lowering/class-construction.js.map +1 -0
- package/dist/frontend/lowering/class-descriptors.d.ts +2 -1
- package/dist/frontend/lowering/class-descriptors.js +58 -10
- package/dist/frontend/lowering/class-descriptors.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +36 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.js +965 -91
- package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.test.js +66 -3
- package/dist/frontend/lowering/class-dynamic-dispatch.test.js.map +1 -1
- package/dist/frontend/lowering/class-instance-constructor.d.ts +1 -1
- package/dist/frontend/lowering/class-instance-constructor.js +15 -42
- package/dist/frontend/lowering/class-instance-constructor.js.map +1 -1
- package/dist/frontend/lowering/class-method-values.d.ts +20 -1
- package/dist/frontend/lowering/class-method-values.js +120 -24
- package/dist/frontend/lowering/class-method-values.js.map +1 -1
- package/dist/frontend/lowering/class-prototypes.d.ts +10 -3
- package/dist/frontend/lowering/class-prototypes.js +188 -21
- package/dist/frontend/lowering/class-prototypes.js.map +1 -1
- package/dist/frontend/lowering/class-runtime-statics.d.ts +8 -0
- package/dist/frontend/lowering/class-runtime-statics.js +84 -0
- package/dist/frontend/lowering/class-runtime-statics.js.map +1 -0
- package/dist/frontend/lowering/class-static-data.d.ts +1 -0
- package/dist/frontend/lowering/class-static-data.js +6 -4
- package/dist/frontend/lowering/class-static-data.js.map +1 -1
- package/dist/frontend/lowering/containers/bytes.js +66 -17
- package/dist/frontend/lowering/containers/bytes.js.map +1 -1
- package/dist/frontend/lowering/containers/string-and-regexp.js +24 -47
- package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
- package/dist/frontend/lowering/deferred-module-initializers.d.ts +13 -0
- package/dist/frontend/lowering/deferred-module-initializers.js +410 -0
- package/dist/frontend/lowering/deferred-module-initializers.js.map +1 -0
- package/dist/frontend/lowering/deferred-module-initializers.test.d.ts +1 -0
- package/dist/frontend/lowering/deferred-module-initializers.test.js +92 -0
- package/dist/frontend/lowering/deferred-module-initializers.test.js.map +1 -0
- package/dist/frontend/lowering/error-methods.d.ts +4 -1
- package/dist/frontend/lowering/error-methods.js +100 -1
- package/dist/frontend/lowering/error-methods.js.map +1 -1
- package/dist/frontend/lowering/expressions/native-proxy.js +3 -1
- package/dist/frontend/lowering/expressions/native-proxy.js.map +1 -1
- package/dist/frontend/lowering/expressions/nullish-assignment.js +19 -11
- package/dist/frontend/lowering/expressions/nullish-assignment.js.map +1 -1
- package/dist/frontend/lowering/expressions/object-literals.js +68 -7
- package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/optional-chains.d.ts +3 -4
- package/dist/frontend/lowering/expressions/optional-chains.js +72 -20
- package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
- package/dist/frontend/lowering/function-context.d.ts +11 -3
- package/dist/frontend/lowering/function-context.js +11 -5
- package/dist/frontend/lowering/function-context.js.map +1 -1
- package/dist/frontend/lowering/generator-dynamic-dispatch.d.ts +1 -0
- package/dist/frontend/lowering/generator-dynamic-dispatch.js +39 -1
- package/dist/frontend/lowering/generator-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/lib-boundary.d.ts +2 -0
- package/dist/frontend/lowering/lib-boundary.js +54 -1
- package/dist/frontend/lowering/lib-boundary.js.map +1 -1
- package/dist/frontend/lowering/lower-builtin-values.d.ts +7 -1
- package/dist/frontend/lowering/lower-builtin-values.js +113 -3
- package/dist/frontend/lowering/lower-builtin-values.js.map +1 -1
- package/dist/frontend/lowering/lower-builtins.d.ts +10 -14
- package/dist/frontend/lowering/lower-builtins.js +443 -88
- package/dist/frontend/lowering/lower-builtins.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.d.ts +8 -5
- package/dist/frontend/lowering/lower-calls.js +717 -142
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.d.ts +18 -13
- package/dist/frontend/lowering/lower-classes.js +1076 -188
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-containers.d.ts +9 -0
- package/dist/frontend/lowering/lower-containers.js +172 -51
- package/dist/frontend/lowering/lower-containers.js.map +1 -1
- package/dist/frontend/lowering/lower-dgram.js +3 -2
- package/dist/frontend/lowering/lower-dgram.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.d.ts +12 -8
- package/dist/frontend/lowering/lower-exprs.js +802 -232
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-generators.js +17 -2
- package/dist/frontend/lowering/lower-generators.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.js +15 -1
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-island.d.ts +2 -0
- package/dist/frontend/lowering/lower-island.js +36 -10
- package/dist/frontend/lowering/lower-island.js.map +1 -1
- package/dist/frontend/lowering/lower-island.test.d.ts +1 -0
- package/dist/frontend/lowering/lower-island.test.js +51 -0
- package/dist/frontend/lowering/lower-island.test.js.map +1 -0
- package/dist/frontend/lowering/lower-modules.d.ts +1 -3
- package/dist/frontend/lowering/lower-modules.js +380 -73
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.test.d.ts +1 -0
- package/dist/frontend/lowering/lower-modules.test.js +107 -0
- package/dist/frontend/lowering/lower-modules.test.js.map +1 -0
- package/dist/frontend/lowering/lower-stmts.d.ts +7 -3
- package/dist/frontend/lowering/lower-stmts.js +221 -47
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.test.d.ts +1 -0
- package/dist/frontend/lowering/lower-stmts.test.js +77 -0
- package/dist/frontend/lowering/lower-stmts.test.js.map +1 -0
- package/dist/frontend/lowering/lower-stream.js +3 -1
- package/dist/frontend/lowering/lower-stream.js.map +1 -1
- package/dist/frontend/lowering/lower-url.d.ts +2 -1
- package/dist/frontend/lowering/lower-url.js +32 -9
- package/dist/frontend/lowering/lower-url.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +53 -10
- package/dist/frontend/lowering/lowerer.js +390 -77
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/lowerer.test.js +187 -3
- package/dist/frontend/lowering/lowerer.test.js.map +1 -1
- package/dist/frontend/lowering/module-namespace-elements.d.ts +7 -0
- package/dist/frontend/lowering/module-namespace-elements.js +54 -0
- package/dist/frontend/lowering/module-namespace-elements.js.map +1 -0
- package/dist/frontend/lowering/object-factory-new.d.ts +4 -3
- package/dist/frontend/lowering/object-factory-new.js +27 -14
- package/dist/frontend/lowering/object-factory-new.js.map +1 -1
- package/dist/frontend/lowering/surfaces.d.ts +3 -0
- package/dist/frontend/lowering/surfaces.js +48 -19
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/lowering/text-decoder-encoding.d.ts +2 -0
- package/dist/frontend/lowering/text-decoder-encoding.js +8 -0
- package/dist/frontend/lowering/text-decoder-encoding.js.map +1 -1
- package/dist/frontend/lowering/text-decoder-encoding.test.js +2 -1
- package/dist/frontend/lowering/text-decoder-encoding.test.js.map +1 -1
- package/dist/frontend/lowering/unregistered-class-types.test.js +3 -3
- package/dist/frontend/lowering/unregistered-class-types.test.js.map +1 -1
- package/dist/frontend/npm-static-prune.js +116 -34
- package/dist/frontend/npm-static-prune.js.map +1 -1
- package/dist/frontend/npm-static-prune.test.js +8 -0
- package/dist/frontend/npm-static-prune.test.js.map +1 -1
- package/dist/frontend/program.d.ts +1 -1
- package/dist/frontend/program.js +57 -26
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/program.test.js +18 -0
- package/dist/frontend/program.test.js.map +1 -1
- package/dist/frontend/ts7/ast.js +4 -3
- package/dist/frontend/ts7/ast.js.map +1 -1
- package/dist/frontend/ts7/semantic-json.js +5 -10
- package/dist/frontend/ts7/semantic-json.js.map +1 -1
- package/dist/frontend/type-mapper.d.ts +9 -1
- package/dist/frontend/type-mapper.js +169 -23
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/frontend/type-mapper.test.js +23 -0
- package/dist/frontend/type-mapper.test.js.map +1 -1
- package/dist/frontend/union-discriminants.d.ts +1 -1
- package/dist/frontend/union-discriminants.js +24 -9
- package/dist/frontend/union-discriminants.js.map +1 -1
- package/dist/index.js +16 -10
- package/dist/index.js.map +1 -1
- package/dist/ir/analysis.js +2 -0
- package/dist/ir/analysis.js.map +1 -1
- package/dist/ir/ir.d.ts +74 -41
- package/dist/ir/ir.js +167 -43
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/ir.test.js +35 -0
- package/dist/ir/ir.test.js.map +1 -1
- package/dist/ir/serialize.js +35 -3
- package/dist/ir/serialize.js.map +1 -1
- package/dist/ir/serialize.test.js +26 -1
- package/dist/ir/serialize.test.js.map +1 -1
- package/dist/ir/traverse.d.ts +0 -3
- package/dist/ir/traverse.js +33 -20
- package/dist/ir/traverse.js.map +1 -1
- package/dist/ir/validate.js +136 -16
- package/dist/ir/validate.js.map +1 -1
- package/dist/ir/validate.test.js +77 -1
- package/dist/ir/validate.test.js.map +1 -1
- package/dist/library/compiler-self-identity.js +1 -1
- package/dist/library/compiler-self-identity.test.js +2 -2
- package/dist/library/compiler-self-identity.test.js.map +1 -1
- package/dist/library/int-infer.d.ts +2 -2
- package/dist/library/int-infer.js +10 -7
- package/dist/library/int-infer.js.map +1 -1
- package/dist/library/int-infer.test.js +44 -0
- package/dist/library/int-infer.test.js.map +1 -1
- package/dist/library/prepare.js +2 -1
- package/dist/library/prepare.js.map +1 -1
- package/dist/native/sanitizer.js +3 -1
- package/dist/native/sanitizer.js.map +1 -1
- package/dist/native/toolchain.d.ts +1 -1
- package/dist/native/toolchain.js +26 -6
- package/dist/native/toolchain.js.map +1 -1
- package/dist/native/toolchain.test.js +53 -1
- package/dist/native/toolchain.test.js.map +1 -1
- package/package.json +20 -20
- package/surface-manifest.json +170 -93
package/dist/ir/validate.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { arrayOf, BYTES_ELEMENT_NAME, BOOL, BYTES_U8, bytesOf, canAdaptDynFuncTo, canDynCheckTo, canConvertToDyn, canExitIslandToType, canMarshalIntoIsland, canMarshalTypedFuncIntoIsland, CHILD_T, CHILDSTREAM_T, CHILDWRITER_T, CRYPTOHASH_T, CRYPTOHMAC_T, DATE_T, DGRAMSOCK_T, DYN, DYN_HANDLE_KINDS, F64, ffiClassType, ffiSourceParamTypes, FILEHANDLE_T, FSWATCHER_T, HTTP2SESSION_T, HTTP2STREAM_T, HTTPCLIENTREQ_T, HTTPREQ_T, HTTPRES_T, islandPromisePayloadTag, isDynTypedRefType, isFfiCallbackParam, isFfiContextParam, isFfiReleaseParam, isJsonSafeType, isJsonStringifySafeType, isRefCounted, isSupportedArrayElem, isSupportedIndexValue, isSupportedMapKey, isSupportedMapValue, isSupportedSetElem, isUnitType, jsOpResultKind, JSVAL, NETSERVER_T, NETSOCKET_T, PROCSTREAM_T, REF_TRUTHY_KINDS, REGEX, RUNTIME_EMITTER_CLASS, RUNTIME_ERROR_CLASSES, RUNTIME_STREAM_CLASSES, SEARCH_PARAMS_T, SECURECTX_T, shapeHasAccessorSlots, SPAWNRES_T, STATS_T, STRING, SYMBOL_T, TESTCTX_T, typeEquals, typeKey, unionContainerArmsOk, URL_T, VOID } from "./ir.js";
|
|
2
|
-
import { BIGINT_T } from "./ir.js";
|
|
2
|
+
import { BIGINT_T, DYN_CLASS_PROPERTIES } from "./ir.js";
|
|
3
3
|
import { unionWideningTags } from "./analysis.js";
|
|
4
4
|
import { alwaysReturns } from "./control-flow.js";
|
|
5
5
|
/** Per-method signature for strIntrinsic: `argTypes` lists every argument
|
|
@@ -26,6 +26,7 @@ export const STR_INTRINSIC_SIGS = {
|
|
|
26
26
|
padEnd: { argTypes: [F64, STRING], minArgs: 2, result: STRING },
|
|
27
27
|
toLowerCase: { argTypes: [], minArgs: 0, result: STRING },
|
|
28
28
|
toUpperCase: { argTypes: [], minArgs: 0, result: STRING },
|
|
29
|
+
normalize: { argTypes: [STRING], minArgs: 1, result: STRING },
|
|
29
30
|
isWellFormed: { argTypes: [], minArgs: 0, result: BOOL },
|
|
30
31
|
toWellFormed: { argTypes: [], minArgs: 0, result: STRING },
|
|
31
32
|
cpAt: { argTypes: [F64], minArgs: 1, result: STRING },
|
|
@@ -40,6 +41,8 @@ export const REGEX_INTRINSIC_SIGS = {
|
|
|
40
41
|
// VOID here is the process.envGet sentinel; the regexIntrinsic case
|
|
41
42
|
// checks the union's arms.
|
|
42
43
|
match: { receiver: STRING, argTypes: [REGEX], result: VOID },
|
|
44
|
+
exec: { receiver: STRING, argTypes: [REGEX], result: VOID },
|
|
45
|
+
lastIndex: { receiver: REGEX, argTypes: [], result: F64 },
|
|
43
46
|
matchAll: { receiver: STRING, argTypes: [REGEX], result: arrayOf(arrayOf(STRING)) },
|
|
44
47
|
matchAllInto: { receiver: STRING, argTypes: [REGEX, arrayOf(F64)], result: arrayOf(arrayOf(STRING)) },
|
|
45
48
|
search: { receiver: STRING, argTypes: [REGEX], result: F64 },
|
|
@@ -60,6 +63,14 @@ export const REGEX_INTRINSIC_SIGS = {
|
|
|
60
63
|
export const LIB_FN_SIGS = {
|
|
61
64
|
"fetch.start": { argTypes: [STRING, DYN], result: { kind: "promise", inner: DYN } },
|
|
62
65
|
"fetch.responseNew": { argTypes: [DYN, DYN], result: DYN },
|
|
66
|
+
"fetch.input": { argTypes: [DYN, DYN], result: { kind: "promise", inner: DYN } },
|
|
67
|
+
"abort.controllerNew": { argTypes: [], result: DYN },
|
|
68
|
+
"abort.timeout": { argTypes: [DYN], result: DYN },
|
|
69
|
+
"abort.now": { argTypes: [DYN], result: DYN },
|
|
70
|
+
"abort.any": { argTypes: [DYN], result: DYN },
|
|
71
|
+
"fetch.function": { argTypes: [], result: DYN },
|
|
72
|
+
"fetch.requestNew": { argTypes: [DYN, DYN], result: DYN },
|
|
73
|
+
"fetch.headersNew": { argTypes: [DYN], result: DYN },
|
|
63
74
|
"fetch.responseArrayBuffer": { argTypes: [DYN], result: { kind: "promise", inner: DYN } },
|
|
64
75
|
"fetch.responseJson": { argTypes: [DYN], result: { kind: "promise", inner: DYN } },
|
|
65
76
|
"fetch.responseText": { argTypes: [DYN], result: { kind: "promise", inner: STRING } },
|
|
@@ -72,6 +83,8 @@ export const LIB_FN_SIGS = {
|
|
|
72
83
|
// Program-dependent iterable: typed arrays/bytes/string stay intact so
|
|
73
84
|
// the native stream can pull lazily; checked-dynamic values are the
|
|
74
85
|
// fallback. The libCall validator below checks the closed set.
|
|
86
|
+
"fetch.webIs": { argTypes: [DYN, STRING], result: BOOL },
|
|
87
|
+
"fetch.streamIs": { argTypes: [DYN], result: BOOL },
|
|
75
88
|
"fetch.streamFrom": { argTypes: [null], result: DYN },
|
|
76
89
|
// The chunk/result record depends on ReadableStream<T>; validated below.
|
|
77
90
|
"fetch.readerRead": { argTypes: [DYN], result: VOID },
|
|
@@ -97,6 +110,7 @@ export const LIB_FN_SIGS = {
|
|
|
97
110
|
"dyn.globalSymbolHas": { argTypes: [SYMBOL_T], result: BOOL },
|
|
98
111
|
"dyn.globalSymbolDelete": { argTypes: [SYMBOL_T], result: VOID },
|
|
99
112
|
"dyn.typedRefIs": { argTypes: [DYN, STRING], result: BOOL },
|
|
113
|
+
"dyn.classIs": { argTypes: [DYN, STRING], result: BOOL },
|
|
100
114
|
"dyn.iterPack": { argTypes: [DYN, STRING], result: DYN },
|
|
101
115
|
"dyn.arrayFromIterator": { argTypes: [DYN], result: DYN },
|
|
102
116
|
"dyn.iterator": { argTypes: [DYN, STRING], result: DYN },
|
|
@@ -121,6 +135,7 @@ export const LIB_FN_SIGS = {
|
|
|
121
135
|
"dyn.defineProperty": { argTypes: [DYN, DYN, DYN], result: DYN },
|
|
122
136
|
"dyn.getOwnPropertyDescriptor": { argTypes: [DYN, DYN], result: DYN },
|
|
123
137
|
"dyn.arrayProtoCall": { argTypes: [DYN, STRING, DYN], result: DYN },
|
|
138
|
+
"dyn.promiseAll": { argTypes: [DYN], result: { kind: "promise", inner: DYN } },
|
|
124
139
|
"dyn.typeof": { argTypes: [DYN], result: STRING },
|
|
125
140
|
"dyn.objectTag": { argTypes: [DYN], result: STRING },
|
|
126
141
|
"module.registryInit": { argTypes: [F64], result: VOID },
|
|
@@ -220,6 +235,7 @@ export const LIB_FN_SIGS = {
|
|
|
220
235
|
"os.totalmem": { argTypes: [], result: F64 },
|
|
221
236
|
"process.umask": { argTypes: [F64], result: F64 },
|
|
222
237
|
"process.chdir": { argTypes: [STRING], result: VOID },
|
|
238
|
+
"process.loadEnvFile": { argTypes: [DYN], result: VOID },
|
|
223
239
|
"process.exiting": { argTypes: [], result: BOOL },
|
|
224
240
|
"net.getAutoSelTimeout": { argTypes: [], result: F64 },
|
|
225
241
|
"net.setAutoSelTimeout": { argTypes: [F64], result: VOID },
|
|
@@ -280,11 +296,13 @@ export const LIB_FN_SIGS = {
|
|
|
280
296
|
"str.btoa": { argTypes: [DYN], result: STRING },
|
|
281
297
|
"str.b64Missing": { argTypes: [], result: STRING },
|
|
282
298
|
"str.decodeUriComponent": { argTypes: [STRING], result: STRING },
|
|
299
|
+
"str.decodeUri": { argTypes: [STRING], result: STRING },
|
|
283
300
|
"str.encodeUri": { argTypes: [STRING], result: STRING },
|
|
284
301
|
"regexp.escape": { argTypes: [STRING], result: STRING },
|
|
285
302
|
"num.toExponential": { argTypes: [F64], result: STRING },
|
|
286
303
|
"num.toFixed0": { argTypes: [F64], result: STRING },
|
|
287
304
|
"num.toFixed": { argTypes: [F64, F64], result: STRING },
|
|
305
|
+
"num.toStringRadix": { argTypes: [F64, DYN], result: STRING },
|
|
288
306
|
"num.sameValue": { argTypes: [F64, F64], result: BOOL },
|
|
289
307
|
"intl.numFormatEnUs": { argTypes: [F64], result: STRING },
|
|
290
308
|
"sym.new": { argTypes: [STRING], result: SYMBOL_T },
|
|
@@ -327,6 +345,10 @@ export const LIB_FN_SIGS = {
|
|
|
327
345
|
"bigint.dataViewSet": { argTypes: [BYTES_U8, F64, BIGINT_T, BOOL], result: VOID },
|
|
328
346
|
"url.new": { argTypes: [STRING], result: URL_T },
|
|
329
347
|
"url.newBase": { argTypes: [STRING, STRING], result: URL_T },
|
|
348
|
+
"url.canParse": { argTypes: [STRING], result: BOOL },
|
|
349
|
+
"url.canParseBase": { argTypes: [STRING, STRING], result: BOOL },
|
|
350
|
+
"url.parse": { argTypes: [STRING], result: DYN },
|
|
351
|
+
"url.parseBase": { argTypes: [STRING, STRING], result: DYN },
|
|
330
352
|
"url.protocol": { argTypes: [URL_T], result: STRING },
|
|
331
353
|
"url.origin": { argTypes: [URL_T], result: STRING },
|
|
332
354
|
"url.username": { argTypes: [URL_T], result: STRING },
|
|
@@ -343,6 +365,7 @@ export const LIB_FN_SIGS = {
|
|
|
343
365
|
"url.pathToFileURLPlatform": { argTypes: [STRING, BOOL], result: URL_T },
|
|
344
366
|
"url.pathToFileURLWin32": { argTypes: [STRING], result: URL_T },
|
|
345
367
|
"sp.new": { argTypes: [], result: SEARCH_PARAMS_T },
|
|
368
|
+
"sp.newChecked": { argTypes: [DYN], result: SEARCH_PARAMS_T },
|
|
346
369
|
"sp.parse": { argTypes: [STRING], result: SEARCH_PARAMS_T },
|
|
347
370
|
"sp.copy": { argTypes: [SEARCH_PARAMS_T], result: SEARCH_PARAMS_T },
|
|
348
371
|
// The pairs argument is string[][] — checked structurally below (the
|
|
@@ -376,11 +399,16 @@ export const LIB_FN_SIGS = {
|
|
|
376
399
|
"qs.escape": { argTypes: [STRING], result: STRING },
|
|
377
400
|
"qs.unescape": { argTypes: [STRING], result: STRING },
|
|
378
401
|
"util.parseArgs": { argTypes: [DYN], result: DYN },
|
|
402
|
+
"util.parseEnv": { argTypes: [DYN], result: DYN },
|
|
379
403
|
"fs.statSync": { argTypes: [STRING], result: STATS_T },
|
|
380
404
|
"fs.lstatSync": { argTypes: [STRING], result: STATS_T },
|
|
381
405
|
"fs.fstatSync": { argTypes: [F64], result: STATS_T },
|
|
382
406
|
"fs.fchmodSync": { argTypes: [F64, F64], result: VOID },
|
|
383
407
|
"fs.fsyncSync": { argTypes: [F64], result: VOID },
|
|
408
|
+
"fs.fdatasyncSync": { argTypes: [F64], result: VOID },
|
|
409
|
+
"fs.ftruncateSync": { argTypes: [F64, F64], result: VOID },
|
|
410
|
+
"fs.readvSync": { argTypes: [F64, arrayOf(BYTES_U8), F64], result: F64 },
|
|
411
|
+
"fs.writevSync": { argTypes: [F64, arrayOf(BYTES_U8), F64], result: F64 },
|
|
384
412
|
"fs.linkSync": { argTypes: [STRING, STRING], result: VOID },
|
|
385
413
|
"fs.openSync": { argTypes: [STRING, STRING], result: F64 },
|
|
386
414
|
"fs.openNumericSync": { argTypes: [STRING, F64, F64], result: F64 },
|
|
@@ -856,6 +884,8 @@ export const LIB_FN_SIGS = {
|
|
|
856
884
|
"child.disconnect": { argTypes: [CHILD_T], result: VOID },
|
|
857
885
|
"child.onMessage": { argTypes: [CHILD_T, null, BOOL], result: VOID },
|
|
858
886
|
"child.onDisconnect": { argTypes: [CHILD_T, null, BOOL], result: VOID },
|
|
887
|
+
"child.onSpawn": { argTypes: [CHILD_T, null], result: VOID },
|
|
888
|
+
"child.onDyn": { argTypes: [CHILD_T, STRING, DYN], result: VOID },
|
|
859
889
|
"process.connected": { argTypes: [], result: BOOL },
|
|
860
890
|
"process.send": { argTypes: [STRING], result: BOOL },
|
|
861
891
|
"process.sendCb": { argTypes: [STRING, null], result: BOOL },
|
|
@@ -870,6 +900,7 @@ export const LIB_FN_SIGS = {
|
|
|
870
900
|
argTypes: [STRING, arrayOf(STRING), F64, F64, F64, F64, F64, BOOL, BOOL, BOOL, arrayOf(STRING), STRING],
|
|
871
901
|
result: CHILD_T,
|
|
872
902
|
},
|
|
903
|
+
"cp.spawnDynamic": { argTypes: [STRING, arrayOf(STRING), DYN], result: CHILD_T },
|
|
873
904
|
// The callback's func type is program-dependent (zero params, or the
|
|
874
905
|
// `number | null` union / the %Error class) — the libCall case checks
|
|
875
906
|
// the shape; the slot here only pins arity and the child receiver.
|
|
@@ -921,6 +952,7 @@ export const LIB_FN_SIGS = {
|
|
|
921
952
|
"child.kill": { argTypes: [CHILD_T, STRING], result: BOOL },
|
|
922
953
|
"child.killNum": { argTypes: [CHILD_T, F64], result: BOOL },
|
|
923
954
|
"child.unref": { argTypes: [CHILD_T], result: VOID },
|
|
955
|
+
"child.ref": { argTypes: [CHILD_T], result: VOID },
|
|
924
956
|
"spawnRes.stdout": { argTypes: [SPAWNRES_T], result: STRING },
|
|
925
957
|
"spawnRes.stderr": { argTypes: [SPAWNRES_T], result: STRING },
|
|
926
958
|
"crypto.randomUUID": { argTypes: [], result: STRING },
|
|
@@ -928,6 +960,7 @@ export const LIB_FN_SIGS = {
|
|
|
928
960
|
"crypto.randomBytes": { argTypes: [F64], result: BYTES_U8 },
|
|
929
961
|
"crypto.hashDigestStr": { argTypes: [STRING, STRING, STRING], result: STRING },
|
|
930
962
|
"crypto.hashDigestBytes": { argTypes: [STRING, BYTES_U8, STRING], result: STRING },
|
|
963
|
+
"crypto.native": { argTypes: [], result: DYN },
|
|
931
964
|
"crypto.hashNew": { argTypes: [STRING], result: CRYPTOHASH_T },
|
|
932
965
|
"crypto.hmacNewStr": { argTypes: [STRING, STRING], result: CRYPTOHMAC_T },
|
|
933
966
|
"crypto.hmacNewBytes": { argTypes: [STRING, BYTES_U8], result: CRYPTOHMAC_T },
|
|
@@ -947,12 +980,17 @@ export const LIB_FN_SIGS = {
|
|
|
947
980
|
"crypto.pbkdf2": { argTypes: [BYTES_U8, BYTES_U8, F64, F64, STRING], result: BYTES_U8 },
|
|
948
981
|
"crypto.randomBytesCb": { argTypes: [F64, null], result: VOID },
|
|
949
982
|
"crypto.pbkdf2Cb": { argTypes: [BYTES_U8, BYTES_U8, F64, F64, STRING, null], result: VOID },
|
|
983
|
+
"crypto.hkdf": { argTypes: [STRING, BYTES_U8, BYTES_U8, BYTES_U8, F64], result: DYN },
|
|
984
|
+
"crypto.hkdfCb": { argTypes: [STRING, BYTES_U8, BYTES_U8, BYTES_U8, F64, null], result: VOID },
|
|
985
|
+
"crypto.scrypt": { argTypes: [BYTES_U8, BYTES_U8, F64, DYN], result: BYTES_U8 },
|
|
986
|
+
"crypto.scryptCb": { argTypes: [BYTES_U8, BYTES_U8, F64, DYN, null], result: VOID },
|
|
950
987
|
// The Buffer statics and the fs/zlib Buffer forms: fixed always-u8
|
|
951
988
|
// signatures (Buffer IS a Uint8Array — one bytes kind).
|
|
952
989
|
"buffer.fromStr": { argTypes: [STRING, STRING], result: BYTES_U8 },
|
|
953
990
|
"buffer.brand": { argTypes: [BYTES_U8], result: BYTES_U8 },
|
|
954
991
|
"buffer.fromDyn": { argTypes: [DYN, STRING], result: BYTES_U8 },
|
|
955
992
|
"buffer.concat": { argTypes: [arrayOf(BYTES_U8)], result: BYTES_U8 },
|
|
993
|
+
"buffer.byteLenDyn": { argTypes: [DYN, STRING], result: F64 },
|
|
956
994
|
"buffer.byteLenStr": { argTypes: [STRING, STRING], result: F64 },
|
|
957
995
|
"buffer.isEncoding": { argTypes: [STRING], result: BOOL },
|
|
958
996
|
"buffer.concatLen": { argTypes: [arrayOf(BYTES_U8), F64], result: BYTES_U8 },
|
|
@@ -1025,6 +1063,12 @@ export const LIB_FN_SIGS = {
|
|
|
1025
1063
|
"fsp.open": { argTypes: [STRING, STRING, F64], result: { kind: "promise", inner: FILEHANDLE_T } },
|
|
1026
1064
|
"fileHandle.fd": { argTypes: [FILEHANDLE_T], result: F64 },
|
|
1027
1065
|
"fileHandle.close": { argTypes: [FILEHANDLE_T], result: { kind: "promise", inner: VOID } },
|
|
1066
|
+
"fileHandle.sync": { argTypes: [FILEHANDLE_T], result: { kind: "promise", inner: VOID } },
|
|
1067
|
+
"fileHandle.datasync": { argTypes: [FILEHANDLE_T], result: { kind: "promise", inner: VOID } },
|
|
1068
|
+
"fileHandle.truncate": { argTypes: [FILEHANDLE_T, F64], result: { kind: "promise", inner: VOID } },
|
|
1069
|
+
"fileHandle.chmod": { argTypes: [FILEHANDLE_T, F64], result: { kind: "promise", inner: VOID } },
|
|
1070
|
+
"fileHandle.readv": { argTypes: [FILEHANDLE_T, arrayOf(BYTES_U8), F64], result: { kind: "promise", inner: VOID } },
|
|
1071
|
+
"fileHandle.writev": { argTypes: [FILEHANDLE_T, arrayOf(BYTES_U8), F64], result: { kind: "promise", inner: VOID } },
|
|
1028
1072
|
// read/write carry call-site result record shapes; the validator checks
|
|
1029
1073
|
// those below, so promise<void> is only a table sentinel.
|
|
1030
1074
|
"fileHandle.read": { argTypes: [FILEHANDLE_T, BYTES_U8, F64, F64, F64, BOOL], result: { kind: "promise", inner: VOID } },
|
|
@@ -1051,6 +1095,7 @@ export const LIB_FN_SIGS = {
|
|
|
1051
1095
|
"process.cwd": { argTypes: [], result: STRING },
|
|
1052
1096
|
"process.pid": { argTypes: [], result: F64 },
|
|
1053
1097
|
"dyn.this": { argTypes: [], result: DYN },
|
|
1098
|
+
"dyn.generatorThis": { argTypes: [], result: DYN },
|
|
1054
1099
|
"process.getuid": { argTypes: [], result: F64 },
|
|
1055
1100
|
"process.getgid": { argTypes: [], result: F64 },
|
|
1056
1101
|
"process.execPath": { argTypes: [], result: STRING },
|
|
@@ -1059,6 +1104,8 @@ export const LIB_FN_SIGS = {
|
|
|
1059
1104
|
"process.builtinId": { argTypes: [DYN, arrayOf(STRING)], result: STRING },
|
|
1060
1105
|
"process.builtinModule": { argTypes: [STRING, DYN], result: DYN },
|
|
1061
1106
|
"process.builtinUnsupported": { argTypes: [STRING, STRING], result: DYN },
|
|
1107
|
+
"fs.callbackValue": { argTypes: [STRING], result: DYN },
|
|
1108
|
+
"fs.callbackCall": { argTypes: [STRING, DYN], result: DYN },
|
|
1062
1109
|
"process.hrtimeValue": { argTypes: [], result: DYN },
|
|
1063
1110
|
"process.versionsNode": { argTypes: [], result: STRING },
|
|
1064
1111
|
"process.versionsOpenssl": { argTypes: [], result: STRING },
|
|
@@ -1075,6 +1122,7 @@ export const LIB_FN_SIGS = {
|
|
|
1075
1122
|
"error.cause": { argTypes: [null], result: DYN },
|
|
1076
1123
|
"error.hasCause": { argTypes: [null], result: BOOL },
|
|
1077
1124
|
"error.setCause": { argTypes: [null, DYN], result: VOID },
|
|
1125
|
+
"error.defineCause": { argTypes: [null, DYN], result: VOID },
|
|
1078
1126
|
"error.deleteCause": { argTypes: [null], result: VOID },
|
|
1079
1127
|
"error.nodeThrow": { argTypes: [F64, STRING, STRING], result: VOID },
|
|
1080
1128
|
"dyn.toStringCoerce": { argTypes: [DYN], result: STRING },
|
|
@@ -1083,9 +1131,11 @@ export const LIB_FN_SIGS = {
|
|
|
1083
1131
|
"dyn.toNumeric": { argTypes: [DYN], result: DYN },
|
|
1084
1132
|
"dyn.increment": { argTypes: [DYN, BOOL], result: DYN },
|
|
1085
1133
|
"dyn.numberConstructor": { argTypes: [DYN], result: F64 },
|
|
1134
|
+
"dyn.bigintConstructor": { argTypes: [DYN], result: BIGINT_T },
|
|
1086
1135
|
"dyn.toNumberCoerce": { argTypes: [DYN], result: F64 },
|
|
1087
1136
|
"dyn.add": { argTypes: [DYN, DYN], result: DYN },
|
|
1088
1137
|
"dyn.arithmetic": { argTypes: [DYN, DYN, STRING], result: DYN },
|
|
1138
|
+
"dyn.compare": { argTypes: [DYN, DYN, STRING], result: BOOL },
|
|
1089
1139
|
"dyn.bitwise": { argTypes: [DYN, DYN, STRING], result: DYN },
|
|
1090
1140
|
"dyn.proxyNew": { argTypes: [DYN, DYN], result: DYN },
|
|
1091
1141
|
// Always throws; the result is the READ's declared type (a typed dummy
|
|
@@ -1098,6 +1148,7 @@ export const LIB_FN_SIGS = {
|
|
|
1098
1148
|
"class.name": { argTypes: [null], result: STRING },
|
|
1099
1149
|
"error.ctor": { argTypes: [null, STRING], result: VOID },
|
|
1100
1150
|
"error.toString": { argTypes: [null], result: STRING },
|
|
1151
|
+
"dyn.sameValue": { argTypes: [DYN, DYN], result: BOOL },
|
|
1101
1152
|
"error.stack": { argTypes: [null], result: STRING },
|
|
1102
1153
|
"error.stackLimitGet": { argTypes: [], result: F64 },
|
|
1103
1154
|
"error.stackLimitSet": { argTypes: [F64], result: VOID },
|
|
@@ -1120,6 +1171,12 @@ export const LIB_FN_SIGS = {
|
|
|
1120
1171
|
"weakMap.new": { argTypes: [DYN], result: DYN },
|
|
1121
1172
|
"weakSet.new": { argTypes: [DYN], result: DYN },
|
|
1122
1173
|
"dyn.fromEntries": { argTypes: [DYN], result: DYN },
|
|
1174
|
+
"bytes.constructor": { argTypes: [STRING], result: DYN },
|
|
1175
|
+
"bytes.instanceOf": { argTypes: [DYN, DYN], result: BOOL },
|
|
1176
|
+
"bytes.construct": { argTypes: [DYN, DYN, STRING], result: DYN },
|
|
1177
|
+
"dyn.dataViewIs": { argTypes: [DYN], result: BOOL },
|
|
1178
|
+
"dyn.construct": { argTypes: [DYN, DYN, STRING], result: DYN },
|
|
1179
|
+
"arrayBuffer.constructor": { argTypes: [], result: DYN },
|
|
1123
1180
|
"arrayBuffer.new": { argTypes: [DYN], result: DYN },
|
|
1124
1181
|
"ffi.argument": { argTypes: [DYN, STRING], result: DYN },
|
|
1125
1182
|
"ffi.memoryModule": { argTypes: [DYN], result: DYN },
|
|
@@ -1144,21 +1201,36 @@ export const LIB_FN_SIGS = {
|
|
|
1144
1201
|
"dyn.propertyIsEnumerable": { argTypes: [DYN, STRING], result: BOOL },
|
|
1145
1202
|
"dyn.assign": { argTypes: [DYN, DYN], result: DYN },
|
|
1146
1203
|
"dyn.copyDataProperties": { argTypes: [DYN, DYN], result: DYN },
|
|
1204
|
+
"dyn.objectRest": { argTypes: [DYN, DYN], result: DYN },
|
|
1147
1205
|
"dyn.packPush": { argTypes: [DYN, DYN], result: VOID },
|
|
1148
1206
|
"dyn.packPushSpread": { argTypes: [DYN, DYN, STRING], result: VOID },
|
|
1149
1207
|
"dyn.packPushSpreadIter": { argTypes: [DYN, DYN], result: VOID },
|
|
1208
|
+
"dyn.reflectApply": { argTypes: [DYN, DYN, DYN], result: DYN },
|
|
1209
|
+
"dyn.reflectGet": { argTypes: [DYN, DYN, DYN], result: DYN },
|
|
1210
|
+
"dyn.reflectSet": { argTypes: [DYN, DYN, DYN, DYN], result: BOOL },
|
|
1211
|
+
"dyn.reflectDefine": { argTypes: [DYN, DYN, DYN], result: BOOL },
|
|
1212
|
+
"dyn.abstractEq": { argTypes: [DYN, DYN], result: BOOL },
|
|
1150
1213
|
"dyn.assignAll": { argTypes: [DYN, DYN], result: DYN },
|
|
1151
1214
|
"dyn.objCreateNullProto": { argTypes: [], result: DYN },
|
|
1152
1215
|
"dyn.arrayPrototype": { argTypes: [], result: DYN },
|
|
1216
|
+
"dyn.arrayConstructor": { argTypes: [], result: DYN },
|
|
1217
|
+
"dyn.objectPrototype": { argTypes: [], result: DYN },
|
|
1218
|
+
"dyn.functionApply": { argTypes: [], result: DYN },
|
|
1219
|
+
"dyn.builtinMethod": { argTypes: [STRING, STRING], result: DYN },
|
|
1153
1220
|
"dyn.classPrototype": { argTypes: [DYN, DYN], result: DYN },
|
|
1154
1221
|
"dyn.classBasePrototype": { argTypes: [DYN], result: DYN },
|
|
1222
|
+
"dyn.classInherit": { argTypes: [DYN, DYN], result: DYN },
|
|
1155
1223
|
"dyn.classSuper": { argTypes: [DYN, DYN, DYN], result: VOID },
|
|
1156
1224
|
"dyn.assignPrototype": { argTypes: [DYN, DYN, DYN], result: DYN },
|
|
1225
|
+
"dyn.definePrototypeProps": { argTypes: [DYN, DYN, DYN], result: DYN },
|
|
1226
|
+
"dyn.bagGet": { argTypes: [DYN, STRING, DYN], result: DYN },
|
|
1227
|
+
"dyn.bagSet": { argTypes: [DYN, STRING, DYN, DYN], result: VOID },
|
|
1157
1228
|
"dyn.objCreate": { argTypes: [DYN], result: DYN },
|
|
1158
1229
|
"dyn.objCreateWithProperties": { argTypes: [DYN, DYN], result: DYN },
|
|
1159
1230
|
"dyn.getPrototype": { argTypes: [DYN], result: DYN },
|
|
1160
1231
|
"dyn.setPrototype": { argTypes: [DYN, DYN], result: DYN },
|
|
1161
1232
|
"dyn.getOwnPropertyNames": { argTypes: [DYN], result: DYN },
|
|
1233
|
+
"dyn.ownKeys": { argTypes: [DYN], result: DYN },
|
|
1162
1234
|
"dyn.getOwnPropertySymbols": { argTypes: [DYN], result: DYN },
|
|
1163
1235
|
"dyn.getOwnPropertyDescriptors": { argTypes: [DYN], result: DYN },
|
|
1164
1236
|
"dyn.preventExtensions": { argTypes: [DYN], result: DYN },
|
|
@@ -1171,6 +1243,7 @@ export const LIB_FN_SIGS = {
|
|
|
1171
1243
|
"dyn.cloneMissing": { argTypes: [], result: DYN },
|
|
1172
1244
|
"dyn.cloneTransferFail": { argTypes: [], result: DYN },
|
|
1173
1245
|
"regex.new": { argTypes: [STRING, STRING], result: REGEX },
|
|
1246
|
+
"regex.resetLastIndex": { argTypes: [REGEX, F64], result: VOID },
|
|
1174
1247
|
"regex.newChecked": { argTypes: [DYN, DYN], result: REGEX },
|
|
1175
1248
|
// node:events EventEmitter: receivers are emitter-hierarchy objects and
|
|
1176
1249
|
// the chaining forms (on/off/removeAll/setMax) return the receiver's
|
|
@@ -1258,6 +1331,8 @@ export const LIB_FN_SIGS = {
|
|
|
1258
1331
|
"readable.pushDyn": { argTypes: [null, DYN], result: BOOL },
|
|
1259
1332
|
"readable.unshift": { argTypes: [null, BYTES_U8], result: VOID },
|
|
1260
1333
|
"readable.unshiftStr": { argTypes: [null, STRING], result: VOID },
|
|
1334
|
+
"stream.onDyn": { argTypes: [null, STRING, DYN, BOOL, BOOL], result: VOID },
|
|
1335
|
+
"readable.readDyn": { argTypes: [null, DYN], result: DYN },
|
|
1261
1336
|
"readable.read": { argTypes: [null, F64], result: VOID },
|
|
1262
1337
|
"readable.pause": { argTypes: [null], result: VOID },
|
|
1263
1338
|
"readable.setEncoding": { argTypes: [null, STRING], result: VOID },
|
|
@@ -1437,7 +1512,18 @@ export const LIB_FN_SIGS = {
|
|
|
1437
1512
|
"date.parseGetTime": { argTypes: [STRING], result: F64 },
|
|
1438
1513
|
"date.utc": { argTypes: [F64, F64, F64, F64, F64, F64, F64], result: F64 },
|
|
1439
1514
|
"text.decode": { argTypes: [BYTES_U8], result: STRING },
|
|
1515
|
+
"bytes.bufferSource": { argTypes: [DYN], result: BYTES_U8 },
|
|
1516
|
+
"text.decodeBufferSource": { argTypes: [DYN], result: STRING },
|
|
1517
|
+
"text.decodeOptions": { argTypes: [BYTES_U8, BOOL, BOOL], result: STRING },
|
|
1518
|
+
"text.decodeStream": { argTypes: [DYN, BYTES_U8, F64, BOOL, BOOL, BOOL], result: STRING },
|
|
1519
|
+
"text.decodeLegacyOptions": { argTypes: [BYTES_U8, F64, BOOL, BOOL], result: STRING },
|
|
1440
1520
|
"text.decodeLegacy": { argTypes: [BYTES_U8, F64], result: STRING },
|
|
1521
|
+
"text.decoderEncoding": { argTypes: [DYN], result: F64 },
|
|
1522
|
+
"text.decoderName": { argTypes: [F64], result: STRING },
|
|
1523
|
+
"text.encodeInto": { argTypes: [DYN, DYN], result: DYN },
|
|
1524
|
+
"buffer.isAscii": { argTypes: [DYN], result: BOOL },
|
|
1525
|
+
"buffer.isUtf8": { argTypes: [DYN], result: BOOL },
|
|
1526
|
+
"buffer.transcode": { argTypes: [DYN, DYN, DYN], result: BYTES_U8 },
|
|
1441
1527
|
"fs.mkdirRecursiveSync": { argTypes: [STRING], result: VOID },
|
|
1442
1528
|
"fs.rmOptsSync": { argTypes: [STRING, BOOL, BOOL], result: VOID },
|
|
1443
1529
|
"fs.rmRetrySync": { argTypes: [STRING, BOOL, BOOL, F64, F64], result: VOID },
|
|
@@ -1695,15 +1781,38 @@ export function validateModule(mod) {
|
|
|
1695
1781
|
errors.push({ message: `class ${cls.name}: invalid local base capture`, loc: cls.loc });
|
|
1696
1782
|
}
|
|
1697
1783
|
}
|
|
1784
|
+
if (cls.baseValueGlobal !== undefined) {
|
|
1785
|
+
const global = mod.globals?.find((global) => global.id === cls.baseValueGlobal);
|
|
1786
|
+
if (cls.localBaseCapture !== undefined || !cls.base || global?.type.kind !== "classval" || global.type.className !== cls.base) {
|
|
1787
|
+
errors.push({ message: `class ${cls.name}: invalid computed base global`, loc: cls.loc });
|
|
1788
|
+
}
|
|
1789
|
+
}
|
|
1698
1790
|
if (cls.jsLength !== undefined && (!Number.isSafeInteger(cls.jsLength) || cls.jsLength < 0)) {
|
|
1699
1791
|
errors.push({ message: `class ${cls.name}: invalid constructor length`, loc: cls.loc });
|
|
1700
1792
|
}
|
|
1793
|
+
if (cls.tracksOwnFields && (cls.runtime || cls.fields.find((field) => field.name === DYN_CLASS_PROPERTIES)?.type.kind !== "dyn")) {
|
|
1794
|
+
errors.push({ message: `class ${cls.name}: field presence tracking requires a native dyn property bag`, loc: cls.loc });
|
|
1795
|
+
}
|
|
1701
1796
|
if (cls.prototypeDataHelper !== undefined) {
|
|
1702
1797
|
const helper = functionsByName.get(cls.prototypeDataHelper);
|
|
1703
1798
|
if (!helper || helper.params.length !== 0 || helper.returnType.kind !== "dyn" || helper.captures !== undefined || helper.classCaptures !== undefined) {
|
|
1704
1799
|
errors.push({ message: `class ${cls.name}: prototype data helper must be a noncapturing () => dyn function`, loc: cls.loc });
|
|
1705
1800
|
}
|
|
1706
1801
|
}
|
|
1802
|
+
if (cls.instancePrototypeHelper !== undefined) {
|
|
1803
|
+
const helper = functionsByName.get(cls.instancePrototypeHelper);
|
|
1804
|
+
const receiver = helper?.params[0]?.type;
|
|
1805
|
+
if (!helper || helper.params.length !== 1 || receiver?.kind !== "object" || receiver.className !== cls.name ||
|
|
1806
|
+
helper.returnType.kind !== "dyn" || helper.captures !== undefined || helper.classCaptures !== undefined) {
|
|
1807
|
+
errors.push({ message: `class ${cls.name}: instance prototype helper must be a noncapturing (instance) => dyn function`, loc: cls.loc });
|
|
1808
|
+
}
|
|
1809
|
+
}
|
|
1810
|
+
for (const symbol of cls.symbolFields ?? []) {
|
|
1811
|
+
const global = mod.globals?.find((global) => global.id === symbol.globalId);
|
|
1812
|
+
if (global?.type.kind !== "symbol" || !cls.fields.some((field) => field.name === symbol.field)) {
|
|
1813
|
+
errors.push({ message: `class ${cls.name}: invalid symbol field metadata`, loc: cls.loc });
|
|
1814
|
+
}
|
|
1815
|
+
}
|
|
1707
1816
|
const seen = new Set();
|
|
1708
1817
|
for (const f of cls.fields) {
|
|
1709
1818
|
if (seen.has(f.name)) {
|
|
@@ -1746,7 +1855,7 @@ export function validateModule(mod) {
|
|
|
1746
1855
|
errors.push({ message: `class ${cls.name}: undeclared base "${cls.base}"`, loc: cls.loc });
|
|
1747
1856
|
continue;
|
|
1748
1857
|
}
|
|
1749
|
-
if (base.localCaptures !== undefined && cls.localBaseCapture === undefined) {
|
|
1858
|
+
if (base.localCaptures !== undefined && cls.localBaseCapture === undefined && cls.baseValueGlobal === undefined) {
|
|
1750
1859
|
errors.push({ message: `class ${cls.name}: local base requires a captured constructor`, loc: cls.loc });
|
|
1751
1860
|
}
|
|
1752
1861
|
const seen = new Set([cls.name]);
|
|
@@ -2113,9 +2222,8 @@ function validateFunction(fn, functions, ffiByName, classes, records, unions, gl
|
|
|
2113
2222
|
if (isUnitType(fn.returnType)) {
|
|
2114
2223
|
err(`return type is bare unit type ${fn.returnType.kind}`, fn.loc);
|
|
2115
2224
|
}
|
|
2116
|
-
//
|
|
2117
|
-
//
|
|
2118
|
-
// escape; a caught anywhere else is frontend breakage).
|
|
2225
|
+
// Exception snapshots may be captured, but are never public parameters
|
|
2226
|
+
// or return values. Their payload crosses those boundaries explicitly.
|
|
2119
2227
|
if (fn.returnType.kind === "caught")
|
|
2120
2228
|
err("return type is caught", fn.loc);
|
|
2121
2229
|
for (const p of fn.params) {
|
|
@@ -2133,8 +2241,6 @@ function validateFunction(fn, functions, ffiByName, classes, records, unions, gl
|
|
|
2133
2241
|
err(`capture local "${c.localId}" is not boxed`, fn.loc);
|
|
2134
2242
|
else if (!typeEquals(local.type, c.type))
|
|
2135
2243
|
err(`capture local "${c.localId}" has the wrong type`, fn.loc);
|
|
2136
|
-
if (c.type.kind === "caught")
|
|
2137
|
-
err(`capture "${c.name}" is caught-typed`, fn.loc);
|
|
2138
2244
|
}
|
|
2139
2245
|
if (fn.classCaptures !== undefined) {
|
|
2140
2246
|
const self = fn.params[0];
|
|
@@ -2838,7 +2944,7 @@ function validateFunction(fn, functions, ffiByName, classes, records, unions, gl
|
|
|
2838
2944
|
err(`toString of unknown union ${e.operand.type.unionId}`, e.loc);
|
|
2839
2945
|
}
|
|
2840
2946
|
else if (!def.arms.every((a) => a.kind === "undefinedT" || a.kind === "nullT" ||
|
|
2841
|
-
a.kind === "string" || a.kind === "f64" || a.kind === "bool" ||
|
|
2947
|
+
a.kind === "string" || a.kind === "f64" || a.kind === "bigint" || a.kind === "bool" ||
|
|
2842
2948
|
(a.kind === "bytes" && a.elem === "u8"))) {
|
|
2843
2949
|
err("toString union operand has a non-stringable arm (frontend must fence)", e.loc);
|
|
2844
2950
|
}
|
|
@@ -2908,7 +3014,7 @@ function validateFunction(fn, functions, ffiByName, classes, records, unions, gl
|
|
|
2908
3014
|
if (want)
|
|
2909
3015
|
expectType(a, want, `regexIntrinsic ${e.method} arg ${i}`);
|
|
2910
3016
|
});
|
|
2911
|
-
if (e.method === "match") {
|
|
3017
|
+
if (e.method === "match" || e.method === "exec") {
|
|
2912
3018
|
// The `string[] | null` union (program-dependent id) — checked
|
|
2913
3019
|
// by arms, like the libCall case checks process.envGet.
|
|
2914
3020
|
const def = e.type.kind === "union" ? unions.get(e.type.unionId) : undefined;
|
|
@@ -4010,6 +4116,10 @@ function validateFunction(fn, functions, ffiByName, classes, records, unions, gl
|
|
|
4010
4116
|
}
|
|
4011
4117
|
case "dynCall": {
|
|
4012
4118
|
checkExpr(e.callee);
|
|
4119
|
+
if (e.calleeNameValue !== undefined) {
|
|
4120
|
+
checkExpr(e.calleeNameValue);
|
|
4121
|
+
expectType(e.calleeNameValue, STRING, "dynCall callee name");
|
|
4122
|
+
}
|
|
4013
4123
|
if (e.receiver !== undefined) {
|
|
4014
4124
|
checkExpr(e.receiver);
|
|
4015
4125
|
expectType(e.receiver, DYN, "dynCall receiver");
|
|
@@ -4041,6 +4151,10 @@ function validateFunction(fn, functions, ffiByName, classes, records, unions, gl
|
|
|
4041
4151
|
}
|
|
4042
4152
|
case "dynInvoke": {
|
|
4043
4153
|
checkExpr(e.recv);
|
|
4154
|
+
if (e.calleeNameValue !== undefined) {
|
|
4155
|
+
checkExpr(e.calleeNameValue);
|
|
4156
|
+
expectType(e.calleeNameValue, STRING, "dynInvoke callee name");
|
|
4157
|
+
}
|
|
4044
4158
|
expectType(e.recv, DYN, "dynInvoke receiver");
|
|
4045
4159
|
if (e.type.kind !== "dyn")
|
|
4046
4160
|
err(`dynInvoke must be dyn-typed, got ${e.type.kind}`, e.loc);
|
|
@@ -4508,7 +4622,7 @@ function validateFunction(fn, functions, ffiByName, classes, records, unions, gl
|
|
|
4508
4622
|
return;
|
|
4509
4623
|
if (checkLibEmitterCall(e, sig.result))
|
|
4510
4624
|
return;
|
|
4511
|
-
if (e.fn === "error.stack" || e.fn === "error.cause" || e.fn === "error.hasCause" || e.fn === "error.setCause" || e.fn === "error.deleteCause") {
|
|
4625
|
+
if (e.fn === "error.stack" || e.fn === "error.cause" || e.fn === "error.hasCause" || e.fn === "error.setCause" || e.fn === "error.defineCause" || e.fn === "error.deleteCause") {
|
|
4512
4626
|
const recv = e.args[0];
|
|
4513
4627
|
let cls = recv?.type.kind === "object" ? classes.get(recv.type.className) : undefined;
|
|
4514
4628
|
while (cls?.base)
|
|
@@ -4531,18 +4645,19 @@ function validateFunction(fn, functions, ffiByName, classes, records, unions, gl
|
|
|
4531
4645
|
}
|
|
4532
4646
|
}
|
|
4533
4647
|
function checkLibValueCall(e) {
|
|
4534
|
-
if (e.fn === "fileHandle.read" || e.fn === "fileHandle.writeBytes" || e.fn === "fileHandle.writeStr") {
|
|
4648
|
+
if (e.fn === "fileHandle.read" || e.fn === "fileHandle.writeBytes" || e.fn === "fileHandle.writeStr" || e.fn === "fileHandle.readv" || e.fn === "fileHandle.writev") {
|
|
4535
4649
|
const inner = e.type.kind === "promise" ? e.type.inner : undefined;
|
|
4536
4650
|
const shape = inner?.kind === "record" ? records.get(inner.shapeId) : undefined;
|
|
4537
|
-
const countName = e.fn === "fileHandle.read" ? "bytesRead" : "bytesWritten";
|
|
4651
|
+
const countName = e.fn === "fileHandle.read" || e.fn === "fileHandle.readv" ? "bytesRead" : "bytesWritten";
|
|
4652
|
+
const payloadName = e.fn === "fileHandle.readv" || e.fn === "fileHandle.writev" ? "buffers" : "buffer";
|
|
4538
4653
|
const payload = e.args[1]?.type;
|
|
4539
4654
|
const count = shape?.fields.find((f) => f.name === countName);
|
|
4540
|
-
const buffer = shape?.fields.find((f) => f.name ===
|
|
4655
|
+
const buffer = shape?.fields.find((f) => f.name === payloadName);
|
|
4541
4656
|
const ok = shape !== undefined && !shape.tuple && shape.indexValue === undefined && shape.fields.length === 2 &&
|
|
4542
4657
|
count?.type.kind === "f64" && payload !== undefined && buffer !== undefined &&
|
|
4543
4658
|
typeEquals(buffer.type, payload);
|
|
4544
4659
|
if (!ok) {
|
|
4545
|
-
err(`libCall ${e.fn} must return a promise of { ${countName}: number,
|
|
4660
|
+
err(`libCall ${e.fn} must return a promise of { ${countName}: number, ${payloadName} }`, e.loc);
|
|
4546
4661
|
}
|
|
4547
4662
|
return true;
|
|
4548
4663
|
}
|
|
@@ -5162,6 +5277,11 @@ function validateFunction(fn, functions, ffiByName, classes, records, unions, gl
|
|
|
5162
5277
|
}
|
|
5163
5278
|
}
|
|
5164
5279
|
}
|
|
5280
|
+
if (e.fn === "child.onSpawn") {
|
|
5281
|
+
const cb = e.args[1];
|
|
5282
|
+
if (!cb || cb.type.kind !== "func" || cb.type.params.length !== 0 || cb.type.ret.kind !== "void")
|
|
5283
|
+
err("child.onSpawn callback must be () => void", e.loc);
|
|
5284
|
+
}
|
|
5165
5285
|
if (e.fn === "child.onExit" || e.fn === "child.onClose" || e.fn === "child.onError") {
|
|
5166
5286
|
// The listener: a closure with no params, or exactly the
|
|
5167
5287
|
// supported parameter shapes per event — exit takes (code:
|
|
@@ -5590,7 +5710,7 @@ function validateFunction(fn, functions, ffiByName, classes, records, unions, gl
|
|
|
5590
5710
|
return false;
|
|
5591
5711
|
}
|
|
5592
5712
|
function checkLibEmitterCall(e, result) {
|
|
5593
|
-
if (e.fn.startsWith("emitter.") && e.fn !== "emitter.setDefaultMax" &&
|
|
5713
|
+
if ((e.fn.startsWith("emitter.") || e.fn === "stream.onDyn") && e.fn !== "emitter.setDefaultMax" &&
|
|
5594
5714
|
e.fn !== "emitter.setDefaultMaxChk" &&
|
|
5595
5715
|
e.fn !== "emitter.getDefaultMax" && e.fn !== "emitter.checkListener") {
|
|
5596
5716
|
// Receiver: an emitter-hierarchy object (the %EventEmitter class
|
|
@@ -5619,7 +5739,7 @@ function validateFunction(fn, functions, ffiByName, classes, records, unions, gl
|
|
|
5619
5739
|
}
|
|
5620
5740
|
// The chaining forms return the receiver's own static class.
|
|
5621
5741
|
if (e.fn === "emitter.on" || e.fn === "emitter.off" ||
|
|
5622
|
-
e.fn === "emitter.onDyn" || e.fn === "emitter.onFlex" || e.fn === "emitter.offDyn" ||
|
|
5742
|
+
e.fn === "emitter.onDyn" || (e.fn === "emitter.onFlex" || e.fn === "stream.onDyn") || e.fn === "emitter.offDyn" ||
|
|
5623
5743
|
e.fn === "emitter.onData" || e.fn === "emitter.onDataDyn" ||
|
|
5624
5744
|
e.fn === "emitter.removeAll" || e.fn === "emitter.setMax" ||
|
|
5625
5745
|
e.fn === "emitter.setMaxChk") {
|