@scriptc/compiler 0.3.4 → 0.3.6
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 +409 -42
- package/dist/backend/llvm/array-search.js +1 -1
- package/dist/backend/llvm/array-search.js.map +1 -1
- package/dist/backend/llvm/call-lifetimes.d.ts +6 -0
- package/dist/backend/llvm/call-lifetimes.js +19 -0
- package/dist/backend/llvm/call-lifetimes.js.map +1 -1
- package/dist/backend/llvm/constant-callbacks.d.ts +2 -21
- package/dist/backend/llvm/constant-callbacks.js +36 -219
- package/dist/backend/llvm/constant-callbacks.js.map +1 -1
- package/dist/backend/llvm/constant-callbacks.test.js +22 -0
- package/dist/backend/llvm/constant-callbacks.test.js.map +1 -1
- package/dist/backend/llvm/dense-array-access.d.ts +9 -0
- package/dist/backend/llvm/dense-array-access.js +27 -1
- package/dist/backend/llvm/dense-array-access.js.map +1 -1
- package/dist/backend/llvm/dyn.d.ts +6 -0
- package/dist/backend/llvm/dyn.js +71 -7
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emitter.d.ts +120 -2
- package/dist/backend/llvm/emitter.js +820 -142
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/expr-async.js +17 -7
- package/dist/backend/llvm/expr-async.js.map +1 -1
- package/dist/backend/llvm/expr-bytes.js +1 -1
- package/dist/backend/llvm/expr-callbacks.d.ts +11 -0
- package/dist/backend/llvm/expr-callbacks.js +53 -0
- package/dist/backend/llvm/expr-callbacks.js.map +1 -1
- package/dist/backend/llvm/expr-calls.js +88 -2
- package/dist/backend/llvm/expr-calls.js.map +1 -1
- package/dist/backend/llvm/expr-containers.js +50 -27
- package/dist/backend/llvm/expr-containers.js.map +1 -1
- package/dist/backend/llvm/expr-dispatch.js +1 -0
- package/dist/backend/llvm/expr-dispatch.js.map +1 -1
- package/dist/backend/llvm/expr-dynamic.js +25 -1
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.d.ts +1 -1
- package/dist/backend/llvm/expr-primitives.js +20 -1
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.js +4 -0
- package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
- package/dist/backend/llvm/integer-clones.d.ts +103 -0
- package/dist/backend/llvm/integer-clones.js +1336 -0
- package/dist/backend/llvm/integer-clones.js.map +1 -0
- package/dist/backend/llvm/integer-clones.test.d.ts +1 -0
- package/dist/backend/llvm/integer-clones.test.js +219 -0
- package/dist/backend/llvm/integer-clones.test.js.map +1 -0
- package/dist/backend/llvm/lib-datagram.js +14 -0
- package/dist/backend/llvm/lib-datagram.js.map +1 -1
- package/dist/backend/llvm/lib-dispatch.js +32 -1
- package/dist/backend/llvm/lib-dispatch.js.map +1 -1
- package/dist/backend/llvm/lib-filesystem.js +61 -1
- package/dist/backend/llvm/lib-filesystem.js.map +1 -1
- package/dist/backend/llvm/lib-network.js +21 -3
- package/dist/backend/llvm/lib-network.js.map +1 -1
- package/dist/backend/llvm/lib-process.js +34 -0
- package/dist/backend/llvm/lib-process.js.map +1 -1
- package/dist/backend/llvm/lib-shared.js +77 -2
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/lib-test.js +16 -3
- package/dist/backend/llvm/lib-test.js.map +1 -1
- package/dist/backend/llvm/lib-tls.js +6 -0
- package/dist/backend/llvm/lib-tls.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.js +1 -1
- package/dist/backend/llvm/local-array-reads.js.map +1 -1
- package/dist/backend/llvm/map-entry-fusion.d.ts +28 -0
- package/dist/backend/llvm/map-entry-fusion.js +233 -0
- package/dist/backend/llvm/map-entry-fusion.js.map +1 -0
- package/dist/backend/llvm/map-entry-fusion.test.d.ts +1 -0
- package/dist/backend/llvm/map-entry-fusion.test.js +183 -0
- package/dist/backend/llvm/map-entry-fusion.test.js.map +1 -0
- package/dist/backend/llvm/map-number-lookup.d.ts +2 -0
- package/dist/backend/llvm/map-number-lookup.js +1 -1
- package/dist/backend/llvm/map-number-lookup.js.map +1 -1
- package/dist/backend/llvm/map-number-lookup.test.js +10 -11
- package/dist/backend/llvm/map-number-lookup.test.js.map +1 -1
- package/dist/backend/llvm/map-read-lifetimes.d.ts +2 -0
- package/dist/backend/llvm/map-read-lifetimes.js +3 -0
- package/dist/backend/llvm/map-read-lifetimes.js.map +1 -1
- package/dist/backend/llvm/map-read-lifetimes.test.js +2 -2
- package/dist/backend/llvm/nullable-unions.d.ts +6 -3
- package/dist/backend/llvm/nullable-unions.js +2 -0
- package/dist/backend/llvm/nullable-unions.js.map +1 -1
- package/dist/backend/llvm/publish.d.ts +16 -0
- package/dist/backend/llvm/publish.js +81 -10
- package/dist/backend/llvm/publish.js.map +1 -1
- package/dist/backend/llvm/publish.test.d.ts +1 -0
- package/dist/backend/llvm/publish.test.js +94 -0
- package/dist/backend/llvm/publish.test.js.map +1 -0
- package/dist/backend/llvm/record-results.d.ts +1 -1
- package/dist/backend/llvm/record-results.js +78 -4
- package/dist/backend/llvm/record-results.js.map +1 -1
- package/dist/backend/llvm/record-sources.d.ts +7 -0
- package/dist/backend/llvm/record-sources.js +14 -0
- package/dist/backend/llvm/record-sources.js.map +1 -0
- package/dist/backend/llvm/reference-writes.js +1 -0
- package/dist/backend/llvm/reference-writes.js.map +1 -1
- package/dist/backend/llvm/shapes.d.ts +12 -3
- package/dist/backend/llvm/shapes.js +23 -14
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/llvm/shapes.test.js +5 -3
- package/dist/backend/llvm/shapes.test.js.map +1 -1
- package/dist/backend/llvm/speculative-integers.d.ts +74 -0
- package/dist/backend/llvm/speculative-integers.js +571 -0
- package/dist/backend/llvm/speculative-integers.js.map +1 -0
- package/dist/backend/llvm/speculative-integers.test.d.ts +1 -0
- package/dist/backend/llvm/speculative-integers.test.js +148 -0
- package/dist/backend/llvm/speculative-integers.test.js.map +1 -0
- package/dist/backend/llvm/string-lifetimes.test.js +75 -1
- package/dist/backend/llvm/string-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/walkers.d.ts +17 -0
- package/dist/backend/llvm/walkers.js +123 -0
- package/dist/backend/llvm/walkers.js.map +1 -1
- package/dist/backend/may-throw.js +2 -0
- package/dist/backend/may-throw.js.map +1 -1
- package/dist/backend/native/contracts.d.ts +2 -1
- package/dist/backend/native/executable.js +6 -1
- package/dist/backend/native/executable.js.map +1 -1
- package/dist/backend/native/runtime-inputs.d.ts +1 -1
- package/dist/backend/native/runtime-inputs.js +1 -0
- package/dist/backend/native/runtime-inputs.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-targets.test.js +1 -1
- package/dist/backend/runtime-pack.d.ts +7 -3
- package/dist/backend/runtime-pack.js +12 -6
- package/dist/backend/runtime-pack.js.map +1 -1
- package/dist/backend/runtime-pack.test.js +16 -7
- package/dist/backend/runtime-pack.test.js.map +1 -1
- package/dist/contracts/check.js +1 -0
- package/dist/contracts/check.js.map +1 -1
- package/dist/coverage/surface-manifest.js +3 -3
- package/dist/coverage/surface-manifest.js.map +1 -1
- package/dist/diagnostics/diagnostic.d.ts +1 -1
- package/dist/diagnostics/diagnostic.js +6 -2
- package/dist/diagnostics/diagnostic.js.map +1 -1
- package/dist/frontend/lowering/builtin-calls.js +13 -0
- package/dist/frontend/lowering/builtin-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/callable-aliases.js +82 -8
- package/dist/frontend/lowering/builtins/callable-aliases.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-async.d.ts +8 -6
- package/dist/frontend/lowering/builtins/child-process-async.js +45 -29
- package/dist/frontend/lowering/builtins/child-process-async.js.map +1 -1
- package/dist/frontend/lowering/builtins/compression.d.ts +9 -0
- package/dist/frontend/lowering/builtins/compression.js +145 -30
- package/dist/frontend/lowering/builtins/compression.js.map +1 -1
- package/dist/frontend/lowering/builtins/crypto.js +12 -1
- package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
- package/dist/frontend/lowering/builtins/errors.js +5 -3
- package/dist/frontend/lowering/builtins/errors.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem-calls.d.ts +6 -0
- package/dist/frontend/lowering/builtins/filesystem-calls.js +16 -0
- package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem.d.ts +8 -0
- package/dist/frontend/lowering/builtins/filesystem.js +199 -2
- package/dist/frontend/lowering/builtins/filesystem.js.map +1 -1
- package/dist/frontend/lowering/builtins/fs-streams.d.ts +26 -0
- package/dist/frontend/lowering/builtins/fs-streams.js +131 -0
- package/dist/frontend/lowering/builtins/fs-streams.js.map +1 -0
- package/dist/frontend/lowering/builtins/hash-stream.d.ts +12 -0
- package/dist/frontend/lowering/builtins/hash-stream.js +80 -0
- package/dist/frontend/lowering/builtins/hash-stream.js.map +1 -0
- package/dist/frontend/lowering/builtins/module-calls.js +17 -3
- package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/process.js +9 -2
- package/dist/frontend/lowering/builtins/process.js.map +1 -1
- package/dist/frontend/lowering/builtins/readline.d.ts +45 -13
- package/dist/frontend/lowering/builtins/readline.js +812 -47
- package/dist/frontend/lowering/builtins/readline.js.map +1 -1
- package/dist/frontend/lowering/builtins/workers.d.ts +4 -0
- package/dist/frontend/lowering/builtins/workers.js +58 -0
- package/dist/frontend/lowering/builtins/workers.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.js +150 -8
- package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-protocols.d.ts +55 -0
- package/dist/frontend/lowering/class-protocols.js +735 -0
- package/dist/frontend/lowering/class-protocols.js.map +1 -1
- package/dist/frontend/lowering/containers/array-from-async.d.ts +18 -0
- package/dist/frontend/lowering/containers/array-from-async.js +282 -0
- package/dist/frontend/lowering/containers/array-from-async.js.map +1 -0
- package/dist/frontend/lowering/containers/bytes.js +33 -12
- package/dist/frontend/lowering/containers/bytes.js.map +1 -1
- package/dist/frontend/lowering/containers/collection-grouping.js +2 -1
- package/dist/frontend/lowering/containers/collection-grouping.js.map +1 -1
- package/dist/frontend/lowering/containers/collection-methods.js +27 -23
- package/dist/frontend/lowering/containers/collection-methods.js.map +1 -1
- package/dist/frontend/lowering/devirtualize.js +20 -7
- package/dist/frontend/lowering/devirtualize.js.map +1 -1
- package/dist/frontend/lowering/divergences.js +188 -15
- package/dist/frontend/lowering/divergences.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.js +129 -25
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.js +46 -1
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-dgram.js +55 -15
- package/dist/frontend/lowering/lower-dgram.js.map +1 -1
- package/dist/frontend/lowering/lower-event-emitter.d.ts +9 -1
- package/dist/frontend/lowering/lower-event-emitter.js +88 -1
- package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.d.ts +4 -0
- package/dist/frontend/lowering/lower-exprs.js +239 -71
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.js +49 -3
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-mock.d.ts +11 -1
- package/dist/frontend/lowering/lower-mock.js +377 -61
- package/dist/frontend/lowering/lower-mock.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.js +1 -0
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-server.d.ts +2 -1
- package/dist/frontend/lowering/lower-server.js +234 -21
- package/dist/frontend/lowering/lower-server.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.js +60 -13
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-stream.d.ts +1 -3
- package/dist/frontend/lowering/lower-stream.js +325 -20
- package/dist/frontend/lowering/lower-stream.js.map +1 -1
- package/dist/frontend/lowering/lower-test.js +147 -48
- package/dist/frontend/lowering/lower-test.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +13 -1
- package/dist/frontend/lowering/lowerer.js +10 -2
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/null-prototype.d.ts +13 -0
- package/dist/frontend/lowering/null-prototype.js +33 -0
- package/dist/frontend/lowering/null-prototype.js.map +1 -0
- package/dist/frontend/lowering/record-sources.d.ts +15 -0
- package/dist/frontend/lowering/record-sources.js +46 -0
- package/dist/frontend/lowering/record-sources.js.map +1 -0
- package/dist/frontend/lowering/surfaces.d.ts +3 -3
- package/dist/frontend/lowering/surfaces.js +59 -5
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/mock-shapes.d.ts +5 -0
- package/dist/frontend/mock-shapes.js +27 -2
- package/dist/frontend/mock-shapes.js.map +1 -1
- package/dist/frontend/program.js +5 -4
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/type-mapper.d.ts +3 -0
- package/dist/frontend/type-mapper.js +148 -4
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/index.js +18 -8
- package/dist/index.js.map +1 -1
- package/dist/ir/analysis.d.ts +10 -0
- package/dist/ir/analysis.js +35 -0
- package/dist/ir/analysis.js.map +1 -1
- package/dist/ir/analysis.test.js +69 -1
- package/dist/ir/analysis.test.js.map +1 -1
- package/dist/ir/builtin-effects.js +72 -0
- package/dist/ir/builtin-effects.js.map +1 -1
- package/dist/ir/builtin-signatures.d.ts +1 -1
- package/dist/ir/builtin-signatures.js +258 -13
- package/dist/ir/builtin-signatures.js.map +1 -1
- package/dist/ir/capture-values.d.ts +107 -0
- package/dist/ir/capture-values.js +850 -0
- package/dist/ir/capture-values.js.map +1 -0
- package/dist/ir/capture-values.test.d.ts +1 -0
- package/dist/ir/capture-values.test.js +268 -0
- package/dist/ir/capture-values.test.js.map +1 -0
- package/dist/ir/field-values.d.ts +16 -0
- package/dist/ir/field-values.js +128 -0
- package/dist/ir/field-values.js.map +1 -0
- package/dist/ir/field-values.test.d.ts +1 -0
- package/dist/ir/field-values.test.js +160 -0
- package/dist/ir/field-values.test.js.map +1 -0
- package/dist/ir/final-fields.d.ts +4 -1
- package/dist/ir/final-fields.js +11 -3
- package/dist/ir/final-fields.js.map +1 -1
- package/dist/ir/function-references.test.js +2 -1
- package/dist/ir/function-references.test.js.map +1 -1
- package/dist/ir/init-only-globals.d.ts +16 -0
- package/dist/ir/init-only-globals.js +121 -0
- package/dist/ir/init-only-globals.js.map +1 -0
- package/dist/ir/init-only-globals.test.d.ts +1 -0
- package/dist/ir/init-only-globals.test.js +115 -0
- package/dist/ir/init-only-globals.test.js.map +1 -0
- package/dist/ir/initializer-bindings.d.ts +18 -1
- package/dist/ir/initializer-bindings.js +91 -1
- package/dist/ir/initializer-bindings.js.map +1 -1
- package/dist/ir/initializer-bindings.test.js +57 -2
- package/dist/ir/initializer-bindings.test.js.map +1 -1
- package/dist/ir/int32-slots.d.ts +22 -0
- package/dist/ir/int32-slots.js +398 -13
- package/dist/ir/int32-slots.js.map +1 -1
- package/dist/ir/int32-slots.test.js +119 -8
- package/dist/ir/int32-slots.test.js.map +1 -1
- package/dist/ir/integer-loop-facts.d.ts +27 -1
- package/dist/ir/integer-loop-facts.js +239 -7
- package/dist/ir/integer-loop-facts.js.map +1 -1
- package/dist/ir/integer-ranges.d.ts +8 -5
- package/dist/ir/integer-ranges.js +147 -59
- package/dist/ir/integer-ranges.js.map +1 -1
- package/dist/ir/integer-ranges.test.js +285 -7
- package/dist/ir/integer-ranges.test.js.map +1 -1
- package/dist/ir/ir.d.ts +22 -1
- package/dist/ir/ir.js +4 -0
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/property-bags.d.ts +14 -0
- package/dist/ir/property-bags.js +121 -0
- package/dist/ir/property-bags.js.map +1 -0
- package/dist/ir/receiver-readers.d.ts +21 -0
- package/dist/ir/receiver-readers.js +217 -0
- package/dist/ir/receiver-readers.js.map +1 -0
- package/dist/ir/runtime-features.d.ts +3 -1
- package/dist/ir/runtime-features.js +102 -7
- package/dist/ir/runtime-features.js.map +1 -1
- package/dist/ir/runtime-features.test.js +62 -0
- package/dist/ir/runtime-features.test.js.map +1 -1
- package/dist/ir/traverse.js +4 -0
- package/dist/ir/traverse.js.map +1 -1
- package/dist/ir/validate.js +71 -3
- package/dist/ir/validate.js.map +1 -1
- package/dist/ir/validate.test.js +59 -0
- package/dist/ir/validate.test.js.map +1 -1
- package/dist/library/int-infer.js +3 -0
- package/dist/library/int-infer.js.map +1 -1
- package/dist/library/ir-policy.js +5 -0
- package/dist/library/ir-policy.js.map +1 -1
- package/package.json +20 -20
- package/surface-manifest.json +57 -19
|
@@ -173,6 +173,9 @@ export declare const PERF_ENTRY_FIELDS: string[];
|
|
|
173
173
|
* PerformanceMeasure values (see mapType). The marker is an always-absent
|
|
174
174
|
* optional, so dyn conversions and key walks never see it. */
|
|
175
175
|
export declare function perfEntryShape(shapes: ShapeRegistry, unions: UnionRegistry): string;
|
|
176
|
+
/** The `{ stdout, stderr }` record a promisified exec/execFile call
|
|
177
|
+
* fulfills with (see mapType), in Node's key order. */
|
|
178
|
+
export declare function execResultShape(shapes: ShapeRegistry): string;
|
|
176
179
|
/** toJSON()'s plain object over an entry: the same fields without the
|
|
177
180
|
* marker. */
|
|
178
181
|
export declare function perfEntryJsonShape(shapes: ShapeRegistry): string;
|
|
@@ -760,6 +760,14 @@ export function perfEntryShape(shapes, unions) {
|
|
|
760
760
|
{ name: "startTime", type: F64 },
|
|
761
761
|
], false, undefined, PERF_ENTRY_FIELDS);
|
|
762
762
|
}
|
|
763
|
+
/** The `{ stdout, stderr }` record a promisified exec/execFile call
|
|
764
|
+
* fulfills with (see mapType), in Node's key order. */
|
|
765
|
+
export function execResultShape(shapes) {
|
|
766
|
+
return shapes.intern([
|
|
767
|
+
{ name: "stderr", type: STRING },
|
|
768
|
+
{ name: "stdout", type: STRING },
|
|
769
|
+
], false, undefined, ["stdout", "stderr"]);
|
|
770
|
+
}
|
|
763
771
|
/** toJSON()'s plain object over an entry: the same fields without the
|
|
764
772
|
* marker. */
|
|
765
773
|
export function perfEntryJsonShape(shapes) {
|
|
@@ -973,13 +981,42 @@ export function isOsConstantsSymbol(symbol, ctx, types = false) {
|
|
|
973
981
|
/** worker_threads' Worker and MessagePort: owned runtime handles that keep
|
|
974
982
|
* their live object representation (DYN) wherever they are stored. */
|
|
975
983
|
function isWorkerHandleSymbol(symbol, ctx) {
|
|
976
|
-
return ((symbol?.name === "Worker" ||
|
|
984
|
+
return ((symbol?.name === "Worker" ||
|
|
985
|
+
symbol?.name === "MessagePort" ||
|
|
986
|
+
symbol?.name === "MessageChannel") &&
|
|
977
987
|
ctx.checker
|
|
978
988
|
.declarationsOf(symbol)
|
|
979
989
|
.some((d) => (ts.isClassDeclaration(d) || ts.isInterfaceDeclaration(d)) &&
|
|
980
990
|
ctx.isStdlibFile(d.getSourceFile()) &&
|
|
981
991
|
isDeclaredInAmbientModule(d, "worker_threads")));
|
|
982
992
|
}
|
|
993
|
+
/** The `{ message: any }` object type (or its union with undefined) that
|
|
994
|
+
* worker_threads declares as receiveMessageOnPort's result. */
|
|
995
|
+
function isReceiveMessageResult(type, ctx) {
|
|
996
|
+
const members = type.isUnionType() ? ts.constituentTypes(type) : [type];
|
|
997
|
+
let found = false;
|
|
998
|
+
for (const member of members) {
|
|
999
|
+
if (member.flags & ts.TypeFlags.Undefined)
|
|
1000
|
+
continue;
|
|
1001
|
+
const decl = member.getSymbol()
|
|
1002
|
+
? ctx.checker.declarationsOf(member.getSymbol())[0]
|
|
1003
|
+
: undefined;
|
|
1004
|
+
let fn = decl?.parent;
|
|
1005
|
+
while (fn && ts.isUnionTypeNode(fn))
|
|
1006
|
+
fn = fn.parent;
|
|
1007
|
+
if (!decl ||
|
|
1008
|
+
!ts.isTypeLiteralNode(decl) ||
|
|
1009
|
+
!fn ||
|
|
1010
|
+
!ts.isFunctionDeclaration(fn) ||
|
|
1011
|
+
fn.name?.text !== "receiveMessageOnPort" ||
|
|
1012
|
+
!ctx.isStdlibFile(decl.getSourceFile()) ||
|
|
1013
|
+
!isDeclaredInAmbientModule(fn, "worker_threads")) {
|
|
1014
|
+
return false;
|
|
1015
|
+
}
|
|
1016
|
+
found = true;
|
|
1017
|
+
}
|
|
1018
|
+
return found;
|
|
1019
|
+
}
|
|
983
1020
|
/** True for a type built only from worker handles, null/undefined, and
|
|
984
1021
|
* arrays of those: values that keep the live DYN representation. */
|
|
985
1022
|
export function isWorkerHandleType(type, ctx) {
|
|
@@ -1062,6 +1099,10 @@ function mapTypeInner(type, ctx) {
|
|
|
1062
1099
|
if (moduleId !== null)
|
|
1063
1100
|
return { kind: "moduleNs", moduleId };
|
|
1064
1101
|
}
|
|
1102
|
+
// worker_threads.receiveMessageOnPort's `{ message: any } | undefined`:
|
|
1103
|
+
// the runtime's { message } object, a checked-dynamic value.
|
|
1104
|
+
if (isReceiveMessageResult(type, ctx))
|
|
1105
|
+
return DYN;
|
|
1065
1106
|
// @types/node spells child_process.ExecFileException as an intersection
|
|
1066
1107
|
// type alias over two Error-derived metadata interfaces. The value is
|
|
1067
1108
|
// still one ordinary Error; recognize the owned alias before generic
|
|
@@ -1713,6 +1754,27 @@ function mapTypeInner(type, ctx) {
|
|
|
1713
1754
|
isDeclaredInAmbientModule(d, "readline/promises")))) {
|
|
1714
1755
|
return F64;
|
|
1715
1756
|
}
|
|
1757
|
+
// readline.Key: emitKeys' key object stays a checked-dynamic value, so
|
|
1758
|
+
// it keeps Node's own shape (an undefined name, the escape sequences'
|
|
1759
|
+
// code member).
|
|
1760
|
+
if (psym?.name === "Key" &&
|
|
1761
|
+
checker
|
|
1762
|
+
.declarationsOf(psym)
|
|
1763
|
+
.some((d) => ts.isInterfaceDeclaration(d) &&
|
|
1764
|
+
ctx.isStdlibFile(d.getSourceFile()) &&
|
|
1765
|
+
(isDeclaredInAmbientModule(d, "readline") ||
|
|
1766
|
+
isDeclaredInAmbientModule(d, "readline/promises")))) {
|
|
1767
|
+
return DYN;
|
|
1768
|
+
}
|
|
1769
|
+
// readline/promises.Readline: an f64 handle the same way.
|
|
1770
|
+
if (psym?.name === "Readline" &&
|
|
1771
|
+
checker
|
|
1772
|
+
.declarationsOf(psym)
|
|
1773
|
+
.some((d) => (ts.isInterfaceDeclaration(d) || ts.isClassDeclaration(d)) &&
|
|
1774
|
+
ctx.isStdlibFile(d.getSourceFile()) &&
|
|
1775
|
+
isDeclaredInAmbientModule(d, "readline/promises"))) {
|
|
1776
|
+
return F64;
|
|
1777
|
+
}
|
|
1716
1778
|
// diagnostics_channel.Channel: the channel value is an f64 handle into
|
|
1717
1779
|
// the runtime's channel registry (the readline.Interface precedent —
|
|
1718
1780
|
// Node's channels are process-lived too, its WeakRef machinery aside).
|
|
@@ -1928,9 +1990,10 @@ function mapTypeInner(type, ctx) {
|
|
|
1928
1990
|
// The stdlib Console interface (the global console and node:console
|
|
1929
1991
|
// Console instances) is a native handle carried by the checked-dynamic
|
|
1930
1992
|
// representation and consumed by the console method lowerings. The
|
|
1931
|
-
// stdlib Disposable (events.addAbortListener's result)
|
|
1932
|
-
//
|
|
1933
|
-
|
|
1993
|
+
// stdlib Disposable (events.addAbortListener's result) and
|
|
1994
|
+
// AsyncDisposable are checked objects carrying their Symbol.dispose or
|
|
1995
|
+
// Symbol.asyncDispose method.
|
|
1996
|
+
if ((psym?.name === "Console" || psym?.name === "Disposable" || psym?.name === "AsyncDisposable") &&
|
|
1934
1997
|
checker
|
|
1935
1998
|
.declarationsOf(psym)
|
|
1936
1999
|
.some((d) => ts.isInterfaceDeclaration(d) && ctx.isStdlibFile(d.getSourceFile()))) {
|
|
@@ -2323,6 +2386,18 @@ function mapTypeInner(type, ctx) {
|
|
|
2323
2386
|
isDeclaredInAmbientModule(d, "zlib"))) {
|
|
2324
2387
|
return { kind: "object", className: "%Transform" };
|
|
2325
2388
|
}
|
|
2389
|
+
// fs.ReadStream / fs.WriteStream (the shipped fallback declarations):
|
|
2390
|
+
// their instances are runtime Readable / Writable streams
|
|
2391
|
+
// (scr_fs_stream.c).
|
|
2392
|
+
if ((psym?.name === "ReadStream" || psym?.name === "WriteStream") &&
|
|
2393
|
+
checker
|
|
2394
|
+
.declarationsOf(psym)
|
|
2395
|
+
.some((d) => ts.isClassDeclaration(d) &&
|
|
2396
|
+
ctx.isStdlibFile(d.getSourceFile()) &&
|
|
2397
|
+
!isNodeTypesPath(d.getSourceFile().fileName) &&
|
|
2398
|
+
isDeclaredInAmbientModule(d, "fs"))) {
|
|
2399
|
+
return { kind: "object", className: psym.name === "ReadStream" ? "%Readable" : "%Writable" };
|
|
2400
|
+
}
|
|
2326
2401
|
if ((psym?.name === "Readable" &&
|
|
2327
2402
|
checker
|
|
2328
2403
|
.declarationsOf(psym)
|
|
@@ -2602,6 +2677,17 @@ function mapTypeInner(type, ctx) {
|
|
|
2602
2677
|
], false, undefined, ["address", "family"]),
|
|
2603
2678
|
};
|
|
2604
2679
|
}
|
|
2680
|
+
// tlsSocket.getCipher()'s { name, standardName, version }.
|
|
2681
|
+
if (isStdlibInterface("CipherNameAndProtocol")) {
|
|
2682
|
+
return {
|
|
2683
|
+
kind: "record",
|
|
2684
|
+
shapeId: ctx.shapes.intern([
|
|
2685
|
+
{ name: "name", type: STRING },
|
|
2686
|
+
{ name: "standardName", type: STRING },
|
|
2687
|
+
{ name: "version", type: STRING },
|
|
2688
|
+
], false, undefined, ["name", "standardName", "version"]),
|
|
2689
|
+
};
|
|
2690
|
+
}
|
|
2605
2691
|
// child_process.ExecFileSyncOptionsWithStringEncoding: the exec-options
|
|
2606
2692
|
// interface interned explicitly on the AddressInfo pattern, so a TYPED
|
|
2607
2693
|
// options value (`const commandOptions: ExecFileSyncOptions... = {...}`,
|
|
@@ -2850,6 +2936,28 @@ function mapTypeInner(type, ctx) {
|
|
|
2850
2936
|
], false, undefined, ["uid", "gid", "username", "homedir", "shell"]),
|
|
2851
2937
|
};
|
|
2852
2938
|
}
|
|
2939
|
+
// The promisified exec/execFile result `{ stdout: string; stderr: string }`:
|
|
2940
|
+
// an anonymous type literal (@types/node's __promisify__ overloads in
|
|
2941
|
+
// child_process, the shipped fallback's promisify overloads in util),
|
|
2942
|
+
// so it maps by provenance and exact shape, interned as the
|
|
2943
|
+
// %execFileAsync/%execAsync helpers build it. Node builds the object as
|
|
2944
|
+
// { stdout, stderr }. The Buffer-typed literals do not match and stay
|
|
2945
|
+
// unmapped.
|
|
2946
|
+
if (psym &&
|
|
2947
|
+
checker
|
|
2948
|
+
.declarationsOf(psym)
|
|
2949
|
+
.some((d) => ts.isTypeLiteralNode(d) &&
|
|
2950
|
+
ctx.isStdlibFile(d.getSourceFile()) &&
|
|
2951
|
+
(isDeclaredInAmbientModule(d, "child_process") || isDeclaredInAmbientModule(d, "util")))) {
|
|
2952
|
+
const props = checker.getPropertiesOfType(widened);
|
|
2953
|
+
if (props.length === 2 &&
|
|
2954
|
+
props.every((p) => (p.name === "stdout" || p.name === "stderr") &&
|
|
2955
|
+
(p.flags & ts.SymbolFlags.Optional) === 0 &&
|
|
2956
|
+
(checker.getTypeOfSymbol(p).flags & ts.TypeFlags.String) !== 0) &&
|
|
2957
|
+
props[0].name !== props[1].name) {
|
|
2958
|
+
return { kind: "record", shapeId: execResultShape(ctx.shapes) };
|
|
2959
|
+
}
|
|
2960
|
+
}
|
|
2853
2961
|
// crypto.X509Certificate — the Dirent-style data record: THREE visible
|
|
2854
2962
|
// fields (fingerprint and the validFrom/validTo validity window, all
|
|
2855
2963
|
// computed at construction by the new-expression lowering). Module-
|
|
@@ -2889,6 +2997,16 @@ function mapTypeInner(type, ctx) {
|
|
|
2889
2997
|
ctx.isStdlibFile(d.getSourceFile()))) {
|
|
2890
2998
|
return { kind: "record", shapeId: perfEntryShape(ctx.shapes, ctx.unions) };
|
|
2891
2999
|
}
|
|
3000
|
+
// readline's getCursorPos() record, in Node's key order ({ cols, rows }).
|
|
3001
|
+
if (isStdlibInterface("CursorPos")) {
|
|
3002
|
+
return {
|
|
3003
|
+
kind: "record",
|
|
3004
|
+
shapeId: ctx.shapes.intern([
|
|
3005
|
+
{ name: "cols", type: F64 },
|
|
3006
|
+
{ name: "rows", type: F64 },
|
|
3007
|
+
], false, undefined, ["cols", "rows"]),
|
|
3008
|
+
};
|
|
3009
|
+
}
|
|
2892
3010
|
// process.memoryUsage()'s record, in Node's key order.
|
|
2893
3011
|
if (isStdlibInterface("MemoryUsage")) {
|
|
2894
3012
|
const names = ["rss", "heapTotal", "heapUsed", "external", "arrayBuffers"];
|
|
@@ -3046,6 +3164,14 @@ function mapTypeInner(type, ctx) {
|
|
|
3046
3164
|
checker.getPropertiesOfType(widened).length > 0)
|
|
3047
3165
|
return DYN;
|
|
3048
3166
|
}
|
|
3167
|
+
// A union of such hybrids that all map to ONE record is that record:
|
|
3168
|
+
// node:test's Mock<F | Implementation> distributes to (F & { mock }) |
|
|
3169
|
+
// (Implementation & { mock }), and the two function types can map alike.
|
|
3170
|
+
if (widened.isUnionType()) {
|
|
3171
|
+
const hybrid = mapUniformHybridUnion(widened, ctx);
|
|
3172
|
+
if (hybrid)
|
|
3173
|
+
return hybrid;
|
|
3174
|
+
}
|
|
3049
3175
|
const callSigs = checker.getCallSignatures(widened);
|
|
3050
3176
|
if (callSigs.length === 1) {
|
|
3051
3177
|
const sig = callSigs[0];
|
|
@@ -4156,6 +4282,23 @@ function mapHybridCallableIntersection(widened, ctx) {
|
|
|
4156
4282
|
fields.sort((a, b) => (a.name < b.name ? -1 : a.name > b.name ? 1 : 0));
|
|
4157
4283
|
return { kind: "record", shapeId: shapes.intern(fields, false, undefined, declaredOrder) };
|
|
4158
4284
|
}
|
|
4285
|
+
/** The record every part of a union of function-with-properties
|
|
4286
|
+
* intersections maps to, or null when a part does not map to the same one. */
|
|
4287
|
+
function mapUniformHybridUnion(widened, ctx) {
|
|
4288
|
+
const parts = ts.constituentTypes(widened);
|
|
4289
|
+
if (!parts.every((p) => p.isIntersectionType()))
|
|
4290
|
+
return null;
|
|
4291
|
+
let first = null;
|
|
4292
|
+
for (const part of parts) {
|
|
4293
|
+
if (ctx.checker.getConstructSignatures(part).length > 0)
|
|
4294
|
+
return null;
|
|
4295
|
+
const mapped = mapHybridCallableIntersection(part, ctx);
|
|
4296
|
+
if (!mapped || (first && typeKey(mapped) !== typeKey(first)))
|
|
4297
|
+
return null;
|
|
4298
|
+
first ??= mapped;
|
|
4299
|
+
}
|
|
4300
|
+
return first;
|
|
4301
|
+
}
|
|
4159
4302
|
/** Optional standard error metadata refines an existing Error identity;
|
|
4160
4303
|
* it does not allocate a structural copy or extend its native layout. */
|
|
4161
4304
|
function mapErrorMetadataIntersection(type, ctx) {
|
|
@@ -4174,6 +4317,7 @@ function mapErrorMetadataIntersection(type, ctx) {
|
|
|
4174
4317
|
"TypeError",
|
|
4175
4318
|
"URIError",
|
|
4176
4319
|
"AggregateError",
|
|
4320
|
+
"SuppressedError",
|
|
4177
4321
|
].includes(symbol.name) &&
|
|
4178
4322
|
ctx.checker.declarationsOf(symbol).some((decl) => ctx.isStdlibFile(decl.getSourceFile())));
|
|
4179
4323
|
});
|