@scriptc/compiler 0.4.6 → 0.4.8
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/node-fallback/child_process.d.ts +71 -22
- package/ambient/node-fallback/crypto.d.ts +15 -7
- package/ambient/node-fallback/events.d.ts +29 -6
- package/ambient/node-fallback/fs-promises.d.ts +1 -1
- package/ambient/node-fallback/fs.d.ts +57 -12
- package/ambient/node-fallback/http.d.ts +26 -18
- package/ambient/node-fallback/https.d.ts +5 -2
- package/ambient/node-fallback/net.d.ts +25 -0
- package/ambient/node-fallback/os.d.ts +11 -1
- package/ambient/node-fallback/path-posix.d.ts +6 -0
- package/ambient/node-fallback/path-win32.d.ts +5 -0
- package/ambient/node-fallback/path.d.ts +2 -0
- package/ambient/node-fallback/querystring.d.ts +3 -3
- package/ambient/node-fallback/zlib.d.ts +31 -2
- package/ambient/scriptc-node-fallback.d.ts +95 -20
- package/ambient/scriptc.d.ts +7 -2
- package/dist/backend/executable-features.js +22 -1
- package/dist/backend/executable-features.js.map +1 -1
- package/dist/backend/immutability.d.ts +12 -1
- package/dist/backend/immutability.js +50 -4
- package/dist/backend/immutability.js.map +1 -1
- package/dist/backend/immutability.test.js +95 -1
- package/dist/backend/immutability.test.js.map +1 -1
- package/dist/backend/library-pack.d.ts +6 -0
- package/dist/backend/library-pack.js +18 -5
- package/dist/backend/library-pack.js.map +1 -1
- package/dist/backend/library-pack.test.d.ts +1 -0
- package/dist/backend/library-pack.test.js +28 -0
- package/dist/backend/library-pack.test.js.map +1 -0
- package/dist/backend/linker.d.ts +20 -2
- package/dist/backend/linker.js +221 -35
- package/dist/backend/linker.js.map +1 -1
- package/dist/backend/lld.d.ts +15 -6
- package/dist/backend/lld.js +24 -16
- package/dist/backend/lld.js.map +1 -1
- package/dist/backend/lld.test.js +13 -5
- package/dist/backend/lld.test.js.map +1 -1
- package/dist/backend/llvm/alloc.d.ts +15 -2
- package/dist/backend/llvm/alloc.js +172 -36
- package/dist/backend/llvm/alloc.js.map +1 -1
- package/dist/backend/llvm/alloc.test.js +69 -1
- package/dist/backend/llvm/alloc.test.js.map +1 -1
- package/dist/backend/llvm/arenas.d.ts +17 -4
- package/dist/backend/llvm/arenas.js +105 -10
- package/dist/backend/llvm/arenas.js.map +1 -1
- package/dist/backend/llvm/arenas.test.js +229 -0
- package/dist/backend/llvm/arenas.test.js.map +1 -1
- package/dist/backend/llvm/bytes-alias.js +10 -1
- package/dist/backend/llvm/bytes-alias.js.map +1 -1
- package/dist/backend/llvm/bytes-headers.js +6 -0
- package/dist/backend/llvm/bytes-headers.js.map +1 -1
- package/dist/backend/llvm/bytes-loop-versions.test.js +25 -0
- package/dist/backend/llvm/bytes-loop-versions.test.js.map +1 -1
- package/dist/backend/llvm/call-lifetimes.js +10 -0
- package/dist/backend/llvm/call-lifetimes.js.map +1 -1
- package/dist/backend/llvm/classes.d.ts +16 -9
- package/dist/backend/llvm/classes.js +142 -37
- package/dist/backend/llvm/classes.js.map +1 -1
- package/dist/backend/llvm/classes.test.js +42 -0
- package/dist/backend/llvm/classes.test.js.map +1 -1
- package/dist/backend/llvm/constant-callbacks.test.js +50 -1
- package/dist/backend/llvm/constant-callbacks.test.js.map +1 -1
- package/dist/backend/llvm/cpu-dispatch.d.ts +15 -5
- package/dist/backend/llvm/cpu-dispatch.js +34 -9
- package/dist/backend/llvm/cpu-dispatch.js.map +1 -1
- package/dist/backend/llvm/dyn.d.ts +64 -3
- package/dist/backend/llvm/dyn.js +251 -15
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emit-function.js +68 -5
- package/dist/backend/llvm/emit-function.js.map +1 -1
- package/dist/backend/llvm/emit-module.js +226 -77
- package/dist/backend/llvm/emit-module.js.map +1 -1
- package/dist/backend/llvm/emit-module.test.d.ts +1 -0
- package/dist/backend/llvm/emit-module.test.js +52 -0
- package/dist/backend/llvm/emit-module.test.js.map +1 -0
- package/dist/backend/llvm/emit-statements.js +138 -34
- package/dist/backend/llvm/emit-statements.js.map +1 -1
- package/dist/backend/llvm/emitter.d.ts +142 -10
- package/dist/backend/llvm/emitter.js +523 -73
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/emitter.test.js +31 -3
- package/dist/backend/llvm/emitter.test.js.map +1 -1
- package/dist/backend/llvm/expr-async.js +19 -1
- package/dist/backend/llvm/expr-async.js.map +1 -1
- package/dist/backend/llvm/expr-bytes.js +16 -1
- package/dist/backend/llvm/expr-bytes.js.map +1 -1
- package/dist/backend/llvm/expr-calls.d.ts +4 -1
- package/dist/backend/llvm/expr-calls.js +38 -6
- package/dist/backend/llvm/expr-calls.js.map +1 -1
- package/dist/backend/llvm/expr-dynamic.js +237 -23
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.js +123 -12
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-records.d.ts +1 -1
- package/dist/backend/llvm/expr-records.js +124 -56
- package/dist/backend/llvm/expr-records.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.d.ts +8 -0
- package/dist/backend/llvm/expr-stream-bridges.js +59 -2
- package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
- package/dist/backend/llvm/expr-stream-callbacks.d.ts +16 -0
- package/dist/backend/llvm/expr-stream-callbacks.js +206 -20
- package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
- package/dist/backend/llvm/integer-values.d.ts +2 -0
- package/dist/backend/llvm/integer-values.js +6 -0
- package/dist/backend/llvm/integer-values.js.map +1 -1
- package/dist/backend/llvm/js-groups.d.ts +21 -0
- package/dist/backend/llvm/js-groups.js +277 -0
- package/dist/backend/llvm/js-groups.js.map +1 -0
- package/dist/backend/llvm/js-ic.d.ts +57 -1
- package/dist/backend/llvm/js-ic.js +389 -22
- package/dist/backend/llvm/js-ic.js.map +1 -1
- package/dist/backend/llvm/lib-dispatch.js +152 -1
- package/dist/backend/llvm/lib-dispatch.js.map +1 -1
- package/dist/backend/llvm/lib-filesystem.js +116 -11
- package/dist/backend/llvm/lib-filesystem.js.map +1 -1
- package/dist/backend/llvm/lib-network.js +33 -6
- package/dist/backend/llvm/lib-network.js.map +1 -1
- package/dist/backend/llvm/lib-process.js +180 -27
- package/dist/backend/llvm/lib-process.js.map +1 -1
- package/dist/backend/llvm/lib-shared.js +139 -2
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/lib-stream.js +67 -0
- package/dist/backend/llvm/lib-stream.js.map +1 -1
- package/dist/backend/llvm/local-union-storage.test.js +32 -0
- package/dist/backend/llvm/local-union-storage.test.js.map +1 -1
- package/dist/backend/llvm/loop-entry-versions.d.ts +2 -2
- package/dist/backend/llvm/loop-entry-versions.js +43 -21
- package/dist/backend/llvm/loop-entry-versions.js.map +1 -1
- package/dist/backend/llvm/loop-state.d.ts +7 -1
- package/dist/backend/llvm/loop-state.js +26 -3
- package/dist/backend/llvm/loop-state.js.map +1 -1
- package/dist/backend/llvm/map-entry-fusion.d.ts +8 -0
- package/dist/backend/llvm/map-entry-fusion.js +3 -3
- package/dist/backend/llvm/map-entry-fusion.js.map +1 -1
- package/dist/backend/llvm/map-number-lookup.d.ts +3 -1
- package/dist/backend/llvm/map-number-lookup.js +7 -3
- package/dist/backend/llvm/map-number-lookup.js.map +1 -1
- package/dist/backend/llvm/map-number-lookup.test.js +58 -17
- package/dist/backend/llvm/map-number-lookup.test.js.map +1 -1
- package/dist/backend/llvm/nullable-unions.js +7 -6
- package/dist/backend/llvm/nullable-unions.js.map +1 -1
- package/dist/backend/llvm/nullable-unions.test.js +4 -1
- package/dist/backend/llvm/nullable-unions.test.js.map +1 -1
- package/dist/backend/llvm/receiver-brackets.test.d.ts +1 -0
- package/dist/backend/llvm/receiver-brackets.test.js +68 -0
- package/dist/backend/llvm/receiver-brackets.test.js.map +1 -0
- package/dist/backend/llvm/receivers.js +3 -0
- package/dist/backend/llvm/receivers.js.map +1 -1
- package/dist/backend/llvm/record-entry-fusion.d.ts +32 -0
- package/dist/backend/llvm/record-entry-fusion.js +217 -0
- package/dist/backend/llvm/record-entry-fusion.js.map +1 -0
- package/dist/backend/llvm/record-results.d.ts +5 -2
- package/dist/backend/llvm/record-results.js +13 -12
- package/dist/backend/llvm/record-results.js.map +1 -1
- package/dist/backend/llvm/record-views.d.ts +22 -2
- package/dist/backend/llvm/record-views.js +147 -12
- package/dist/backend/llvm/record-views.js.map +1 -1
- package/dist/backend/llvm/record-views.test.js +76 -0
- package/dist/backend/llvm/record-views.test.js.map +1 -1
- package/dist/backend/llvm/reference-effects.js +1 -0
- package/dist/backend/llvm/reference-effects.js.map +1 -1
- package/dist/backend/llvm/reference-writes.js +4 -0
- package/dist/backend/llvm/reference-writes.js.map +1 -1
- package/dist/backend/llvm/region-ir.js +1 -0
- package/dist/backend/llvm/region-ir.js.map +1 -1
- package/dist/backend/llvm/region-sites.d.ts +18 -0
- package/dist/backend/llvm/region-sites.js +79 -1
- package/dist/backend/llvm/region-sites.js.map +1 -1
- package/dist/backend/llvm/runtime-registries.test.js +53 -6
- package/dist/backend/llvm/runtime-registries.test.js.map +1 -1
- package/dist/backend/llvm/serialized-ir-emission.test.js +3 -1
- package/dist/backend/llvm/serialized-ir-emission.test.js.map +1 -1
- package/dist/backend/llvm/shapes.d.ts +36 -3
- package/dist/backend/llvm/shapes.js +201 -16
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/llvm/shapes.test.js +4 -0
- package/dist/backend/llvm/shapes.test.js.map +1 -1
- package/dist/backend/llvm/speculative-integers.d.ts +10 -1
- package/dist/backend/llvm/speculative-integers.js +59 -8
- package/dist/backend/llvm/speculative-integers.js.map +1 -1
- package/dist/backend/llvm/stack-objects.d.ts +1 -2
- package/dist/backend/llvm/stack-objects.js +8 -5
- package/dist/backend/llvm/stack-objects.js.map +1 -1
- package/dist/backend/llvm/unwind-abi.d.ts +3 -3
- package/dist/backend/llvm/unwind-abi.js +8 -3
- package/dist/backend/llvm/unwind-abi.js.map +1 -1
- package/dist/backend/llvm/walkers.d.ts +12 -0
- package/dist/backend/llvm/walkers.js +47 -3
- package/dist/backend/llvm/walkers.js.map +1 -1
- package/dist/backend/may-throw.js +12 -2
- package/dist/backend/may-throw.js.map +1 -1
- package/dist/backend/may-throw.test.js +13 -0
- package/dist/backend/may-throw.test.js.map +1 -1
- package/dist/backend/native/contracts.d.ts +94 -0
- package/dist/backend/native/executable.js +134 -10
- package/dist/backend/native/executable.js.map +1 -1
- package/dist/backend/native/helper-identity-record.d.ts +11 -0
- package/dist/backend/native/helper-identity-record.js +76 -0
- package/dist/backend/native/helper-identity-record.js.map +1 -0
- package/dist/backend/native/helper-identity-record.test.d.ts +1 -0
- package/dist/backend/native/helper-identity-record.test.js +101 -0
- package/dist/backend/native/helper-identity-record.test.js.map +1 -0
- package/dist/backend/native/library.js +10 -2
- package/dist/backend/native/library.js.map +1 -1
- package/dist/backend/native/runtime-inputs.js +8 -1
- package/dist/backend/native/runtime-inputs.js.map +1 -1
- package/dist/backend/native/vendor.d.ts +1 -1
- package/dist/backend/native/vendor.js +1 -1
- package/dist/backend/native/vendor.js.map +1 -1
- package/dist/backend/native-codegen-core.d.ts +13 -10
- package/dist/backend/native-codegen-core.js +26 -13
- package/dist/backend/native-codegen-core.js.map +1 -1
- package/dist/backend/native-codegen.js +30 -8
- package/dist/backend/native-codegen.js.map +1 -1
- package/dist/backend/native-codegen.test.js +110 -14
- package/dist/backend/native-codegen.test.js.map +1 -1
- package/dist/backend/native-link-info-core.d.ts +72 -0
- package/dist/backend/native-link-info-core.js.map +1 -1
- package/dist/backend/native-link-info.js +1 -0
- package/dist/backend/native-link-info.js.map +1 -1
- package/dist/backend/native-profile.d.ts +4 -1
- package/dist/backend/native-profile.js +12 -1
- package/dist/backend/native-profile.js.map +1 -1
- package/dist/backend/native-profile.test.js +10 -0
- package/dist/backend/native-profile.test.js.map +1 -1
- package/dist/backend/publication.d.ts +4 -1
- package/dist/backend/publication.js +4 -2
- package/dist/backend/publication.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-core.d.ts +46 -7
- package/dist/backend/runtime-pack-core.js +37 -2
- package/dist/backend/runtime-pack-core.js.map +1 -1
- package/dist/backend/runtime-pack-native.d.ts +18 -1
- package/dist/backend/runtime-pack-native.js +138 -29
- package/dist/backend/runtime-pack-native.js.map +1 -1
- package/dist/backend/runtime-pack-native.test.js +166 -4
- package/dist/backend/runtime-pack-native.test.js.map +1 -1
- package/dist/backend/runtime-pack-targets.test.js +3 -1
- package/dist/backend/runtime-pack-targets.test.js.map +1 -1
- package/dist/backend/runtime-pack.d.ts +7 -0
- package/dist/backend/runtime-pack.js +25 -3
- package/dist/backend/runtime-pack.js.map +1 -1
- package/dist/backend/runtime-pack.test.js +213 -12
- package/dist/backend/runtime-pack.test.js.map +1 -1
- package/dist/backend/tree-classes.d.ts +42 -0
- package/dist/backend/tree-classes.js +723 -0
- package/dist/backend/tree-classes.js.map +1 -0
- package/dist/backend/tree-classes.test.d.ts +1 -0
- package/dist/backend/tree-classes.test.js +338 -0
- package/dist/backend/tree-classes.test.js.map +1 -0
- package/dist/backend/vendor-archives.d.ts +8 -1
- package/dist/backend/vendor-archives.js +313 -8
- package/dist/backend/vendor-archives.js.map +1 -1
- package/dist/backend/vendor-inputs.d.ts +60 -3
- package/dist/backend/vendor-inputs.js +109 -3
- package/dist/backend/vendor-inputs.js.map +1 -1
- package/dist/backend/vendor-inputs.test.js +62 -1
- package/dist/backend/vendor-inputs.test.js.map +1 -1
- package/dist/backend/warm-cache.js +2 -0
- package/dist/backend/warm-cache.js.map +1 -1
- package/dist/compat/fetch-profile.d.ts +7 -1
- package/dist/compat/fetch-profile.js +25 -12
- package/dist/compat/fetch-profile.js.map +1 -1
- package/dist/compile-types.d.ts +7 -0
- package/dist/contracts/check.d.ts +3 -0
- package/dist/contracts/check.js +18 -5
- package/dist/contracts/check.js.map +1 -1
- package/dist/coverage/report.js +47 -0
- package/dist/coverage/report.js.map +1 -1
- package/dist/coverage/surface-manifest.js +1 -1
- package/dist/coverage/surface-manifest.js.map +1 -1
- package/dist/diagnostics/codes.d.ts +14 -0
- package/dist/diagnostics/codes.js +14 -0
- package/dist/diagnostics/codes.js.map +1 -1
- package/dist/diagnostics/diagnostic.d.ts +68 -0
- package/dist/diagnostics/diagnostic.js +186 -6
- package/dist/diagnostics/diagnostic.js.map +1 -1
- package/dist/diagnostics/dynamic-tier.js +3 -1
- package/dist/diagnostics/dynamic-tier.js.map +1 -1
- package/dist/diagnostics/envelope.d.ts +18 -0
- package/dist/diagnostics/envelope.js.map +1 -1
- package/dist/executable/executable-cache.d.ts +48 -0
- package/dist/executable/executable-cache.js +38 -0
- package/dist/executable/executable-cache.js.map +1 -1
- package/dist/executable/executable-cache.test.js +127 -1
- package/dist/executable/executable-cache.test.js.map +1 -1
- package/dist/executable/prepare.d.ts +13 -3
- package/dist/executable/prepare.js +438 -234
- package/dist/executable/prepare.js.map +1 -1
- package/dist/frontend/analysis.js +200 -18
- package/dist/frontend/analysis.js.map +1 -1
- package/dist/frontend/builtin-modules.d.ts +4 -0
- package/dist/frontend/builtin-modules.js +10 -0
- package/dist/frontend/builtin-modules.js.map +1 -1
- package/dist/frontend/early-errors.d.ts +24 -0
- package/dist/frontend/early-errors.js +836 -0
- package/dist/frontend/early-errors.js.map +1 -0
- package/dist/frontend/early-errors.test.d.ts +1 -0
- package/dist/frontend/early-errors.test.js +207 -0
- package/dist/frontend/early-errors.test.js.map +1 -0
- package/dist/frontend/inferred-js-diagnostics.test.js +88 -0
- package/dist/frontend/inferred-js-diagnostics.test.js.map +1 -1
- package/dist/frontend/input-tracker.d.ts +47 -0
- package/dist/frontend/input-tracker.js +173 -36
- package/dist/frontend/input-tracker.js.map +1 -1
- package/dist/frontend/input-tracker.test.js +86 -2
- package/dist/frontend/input-tracker.test.js.map +1 -1
- package/dist/frontend/js-inference.d.ts +2 -0
- package/dist/frontend/js-inference.js +18 -0
- package/dist/frontend/js-inference.js.map +1 -0
- package/dist/frontend/jsx-opinion-sites.test.d.ts +1 -0
- package/dist/frontend/jsx-opinion-sites.test.js +86 -0
- package/dist/frontend/jsx-opinion-sites.test.js.map +1 -0
- package/dist/frontend/lib-exports.d.ts +23 -4
- package/dist/frontend/lib-exports.js +98 -26
- package/dist/frontend/lib-exports.js.map +1 -1
- package/dist/frontend/lowering/binding-analysis.d.ts +2 -1
- package/dist/frontend/lowering/binding-analysis.js +86 -4
- package/dist/frontend/lowering/binding-analysis.js.map +1 -1
- package/dist/frontend/lowering/buffers.d.ts +8 -0
- package/dist/frontend/lowering/buffers.js +43 -0
- package/dist/frontend/lowering/buffers.js.map +1 -0
- package/dist/frontend/lowering/builtin-calls.js +13 -0
- package/dist/frontend/lowering/builtin-calls.js.map +1 -1
- package/dist/frontend/lowering/builtin-namespaces.d.ts +3 -2
- package/dist/frontend/lowering/builtin-namespaces.js +41 -3
- package/dist/frontend/lowering/builtin-namespaces.js.map +1 -1
- package/dist/frontend/lowering/builtin-statics.d.ts +24 -0
- package/dist/frontend/lowering/builtin-statics.js +407 -0
- package/dist/frontend/lowering/builtin-statics.js.map +1 -0
- package/dist/frontend/lowering/builtins/arguments.d.ts +4 -0
- package/dist/frontend/lowering/builtins/arguments.js +12 -0
- package/dist/frontend/lowering/builtins/arguments.js.map +1 -1
- package/dist/frontend/lowering/builtins/atomics.d.ts +6 -1
- package/dist/frontend/lowering/builtins/atomics.js +87 -1
- package/dist/frontend/lowering/builtins/atomics.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-methods.d.ts +7 -0
- package/dist/frontend/lowering/builtins/child-process-methods.js +52 -12
- package/dist/frontend/lowering/builtins/child-process-methods.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-sync.d.ts +13 -0
- package/dist/frontend/lowering/builtins/child-process-sync.js +1 -13
- package/dist/frontend/lowering/builtins/child-process-sync.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process.d.ts +10 -4
- package/dist/frontend/lowering/builtins/child-process.js +565 -28
- package/dist/frontend/lowering/builtins/child-process.js.map +1 -1
- package/dist/frontend/lowering/builtins/compression.d.ts +2 -2
- package/dist/frontend/lowering/builtins/compression.js +41 -21
- package/dist/frontend/lowering/builtins/compression.js.map +1 -1
- package/dist/frontend/lowering/builtins/constants.js +7 -2
- package/dist/frontend/lowering/builtins/constants.js.map +1 -1
- package/dist/frontend/lowering/builtins/dates.d.ts +1 -1
- package/dist/frontend/lowering/builtins/dates.js +23 -1
- package/dist/frontend/lowering/builtins/dates.js.map +1 -1
- package/dist/frontend/lowering/builtins/environment.d.ts +55 -0
- package/dist/frontend/lowering/builtins/environment.js +213 -2
- package/dist/frontend/lowering/builtins/environment.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem-calls.d.ts +1 -0
- package/dist/frontend/lowering/builtins/filesystem-calls.js +75 -18
- package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem.d.ts +25 -7
- package/dist/frontend/lowering/builtins/filesystem.js +185 -16
- package/dist/frontend/lowering/builtins/filesystem.js.map +1 -1
- package/dist/frontend/lowering/builtins/json.js +4 -0
- package/dist/frontend/lowering/builtins/json.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-calls.js +42 -3
- package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-resolution.d.ts +8 -0
- package/dist/frontend/lowering/builtins/module-resolution.js +31 -5
- package/dist/frontend/lowering/builtins/module-resolution.js.map +1 -1
- package/dist/frontend/lowering/builtins/numbers.d.ts +4 -1
- package/dist/frontend/lowering/builtins/numbers.js +10 -2
- package/dist/frontend/lowering/builtins/numbers.js.map +1 -1
- package/dist/frontend/lowering/builtins/operating-system.d.ts +9 -5
- package/dist/frontend/lowering/builtins/operating-system.js +101 -20
- package/dist/frontend/lowering/builtins/operating-system.js.map +1 -1
- package/dist/frontend/lowering/builtins/process.d.ts +18 -2
- package/dist/frontend/lowering/builtins/process.js +386 -25
- package/dist/frontend/lowering/builtins/process.js.map +1 -1
- package/dist/frontend/lowering/builtins/promises.js +169 -8
- package/dist/frontend/lowering/builtins/promises.js.map +1 -1
- package/dist/frontend/lowering/builtins/properties.js +6 -2
- package/dist/frontend/lowering/builtins/properties.js.map +1 -1
- package/dist/frontend/lowering/builtins/querystring.d.ts +8 -0
- package/dist/frontend/lowering/builtins/querystring.js +202 -18
- package/dist/frontend/lowering/builtins/querystring.js.map +1 -1
- package/dist/frontend/lowering/builtins/readline.d.ts +6 -4
- package/dist/frontend/lowering/builtins/readline.js +200 -38
- package/dist/frontend/lowering/builtins/readline.js.map +1 -1
- package/dist/frontend/lowering/builtins/reflection.js +60 -1
- package/dist/frontend/lowering/builtins/reflection.js.map +1 -1
- package/dist/frontend/lowering/builtins/text-codecs.js +208 -59
- package/dist/frontend/lowering/builtins/text-codecs.js.map +1 -1
- package/dist/frontend/lowering/builtins/url.js +55 -13
- package/dist/frontend/lowering/builtins/url.js.map +1 -1
- package/dist/frontend/lowering/builtins/v8.d.ts +5 -5
- package/dist/frontend/lowering/builtins/v8.js +7 -5
- package/dist/frontend/lowering/builtins/v8.js.map +1 -1
- package/dist/frontend/lowering/builtins/web-streams-dyn.d.ts +17 -2
- package/dist/frontend/lowering/builtins/web-streams-dyn.js +97 -9
- package/dist/frontend/lowering/builtins/web-streams-dyn.js.map +1 -1
- package/dist/frontend/lowering/builtins/webassembly.js +2 -0
- package/dist/frontend/lowering/builtins/webassembly.js.map +1 -1
- package/dist/frontend/lowering/call-arguments.d.ts +10 -0
- package/dist/frontend/lowering/call-arguments.js +37 -2
- package/dist/frontend/lowering/call-arguments.js.map +1 -1
- package/dist/frontend/lowering/call-signatures.d.ts +10 -0
- package/dist/frontend/lowering/call-signatures.js +180 -0
- package/dist/frontend/lowering/call-signatures.js.map +1 -1
- package/dist/frontend/lowering/cjs-exports-object.d.ts +3 -0
- package/dist/frontend/lowering/cjs-exports-object.js +1 -1
- package/dist/frontend/lowering/cjs-exports-object.js.map +1 -1
- package/dist/frontend/lowering/cjs-inline-require.js +5 -0
- package/dist/frontend/lowering/cjs-inline-require.js.map +1 -1
- package/dist/frontend/lowering/class-construction.d.ts +14 -2
- package/dist/frontend/lowering/class-construction.js +99 -5
- package/dist/frontend/lowering/class-construction.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +14 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.js +1376 -1009
- package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.test.js +158 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.test.js.map +1 -1
- package/dist/frontend/lowering/class-protocols.js +59 -10
- package/dist/frontend/lowering/class-protocols.js.map +1 -1
- package/dist/frontend/lowering/class-prototypes.js +20 -15
- 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 +35 -1
- package/dist/frontend/lowering/class-runtime-statics.js.map +1 -1
- package/dist/frontend/lowering/class-unions.js +21 -4
- package/dist/frontend/lowering/class-unions.js.map +1 -1
- package/dist/frontend/lowering/class-views.d.ts +13 -0
- package/dist/frontend/lowering/class-views.js +51 -0
- package/dist/frontend/lowering/class-views.js.map +1 -0
- package/dist/frontend/lowering/coercions/function-adapters.d.ts +15 -1
- package/dist/frontend/lowering/coercions/function-adapters.js +63 -10
- package/dist/frontend/lowering/coercions/function-adapters.js.map +1 -1
- package/dist/frontend/lowering/coercions/state.d.ts +15 -0
- package/dist/frontend/lowering/coercions/state.js +24 -0
- package/dist/frontend/lowering/coercions/state.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural-plans.js +75 -3
- package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural.js +39 -2
- package/dist/frontend/lowering/coercions/structural.js.map +1 -1
- package/dist/frontend/lowering/coercions/unions.d.ts +2 -1
- package/dist/frontend/lowering/coercions/unions.js +54 -10
- package/dist/frontend/lowering/coercions/unions.js.map +1 -1
- package/dist/frontend/lowering/constructor-returns.d.ts +23 -2
- package/dist/frontend/lowering/constructor-returns.js +284 -58
- package/dist/frontend/lowering/constructor-returns.js.map +1 -1
- package/dist/frontend/lowering/containers/array-callbacks.d.ts +8 -1
- package/dist/frontend/lowering/containers/array-callbacks.js +288 -90
- package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
- package/dist/frontend/lowering/containers/array-construction.js +37 -8
- package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
- package/dist/frontend/lowering/containers/array-from-async.js +139 -3
- package/dist/frontend/lowering/containers/array-from-async.js.map +1 -1
- package/dist/frontend/lowering/containers/array-iteration.d.ts +14 -4
- package/dist/frontend/lowering/containers/array-iteration.js +24 -7
- package/dist/frontend/lowering/containers/array-iteration.js.map +1 -1
- package/dist/frontend/lowering/containers/array-methods.js +30 -11
- package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/bytes.d.ts +6 -0
- package/dist/frontend/lowering/containers/bytes.js +450 -86
- package/dist/frontend/lowering/containers/bytes.js.map +1 -1
- package/dist/frontend/lowering/containers/callback-arguments.d.ts +16 -0
- package/dist/frontend/lowering/containers/callback-arguments.js +74 -12
- package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -1
- package/dist/frontend/lowering/containers/collection-grouping.js +421 -2
- package/dist/frontend/lowering/containers/collection-grouping.js.map +1 -1
- package/dist/frontend/lowering/containers/collection-methods.js +52 -17
- package/dist/frontend/lowering/containers/collection-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/filter-predicates.d.ts +10 -0
- package/dist/frontend/lowering/containers/filter-predicates.js +69 -3
- package/dist/frontend/lowering/containers/filter-predicates.js.map +1 -1
- package/dist/frontend/lowering/containers/indexed-objects.js +46 -2
- package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
- package/dist/frontend/lowering/containers/iterator-helpers.d.ts +23 -0
- package/dist/frontend/lowering/containers/iterator-helpers.js +176 -10
- package/dist/frontend/lowering/containers/iterator-helpers.js.map +1 -1
- package/dist/frontend/lowering/containers/string-and-regexp.d.ts +5 -2
- package/dist/frontend/lowering/containers/string-and-regexp.js +45 -11
- package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
- package/dist/frontend/lowering/crypto-tables.d.ts +3 -3
- package/dist/frontend/lowering/crypto-tables.js +5 -5
- package/dist/frontend/lowering/dispatch-sites.js +3 -0
- package/dist/frontend/lowering/dispatch-sites.js.map +1 -1
- package/dist/frontend/lowering/divergences.d.ts +40 -0
- package/dist/frontend/lowering/divergences.js +239 -20
- package/dist/frontend/lowering/divergences.js.map +1 -1
- package/dist/frontend/lowering/effect-free.d.ts +12 -0
- package/dist/frontend/lowering/effect-free.js +44 -0
- package/dist/frontend/lowering/effect-free.js.map +1 -0
- package/dist/frontend/lowering/expressions/array-literals.d.ts +24 -0
- package/dist/frontend/lowering/expressions/array-literals.js +88 -10
- package/dist/frontend/lowering/expressions/array-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/binary.js +216 -14
- package/dist/frontend/lowering/expressions/binary.js.map +1 -1
- package/dist/frontend/lowering/expressions/element-access.js +272 -11
- package/dist/frontend/lowering/expressions/element-access.js.map +1 -1
- package/dist/frontend/lowering/expressions/hosted-narrowing.d.ts +15 -0
- package/dist/frontend/lowering/expressions/hosted-narrowing.js +54 -1
- package/dist/frontend/lowering/expressions/hosted-narrowing.js.map +1 -1
- package/dist/frontend/lowering/expressions/identifiers.js +173 -4
- package/dist/frontend/lowering/expressions/identifiers.js.map +1 -1
- package/dist/frontend/lowering/expressions/keyed-field-targets.d.ts +11 -1
- package/dist/frontend/lowering/expressions/keyed-field-targets.js +22 -1
- package/dist/frontend/lowering/expressions/keyed-field-targets.js.map +1 -1
- package/dist/frontend/lowering/expressions/narrowing.d.ts +3 -0
- package/dist/frontend/lowering/expressions/narrowing.js +195 -18
- package/dist/frontend/lowering/expressions/narrowing.js.map +1 -1
- package/dist/frontend/lowering/expressions/object-literals.d.ts +5 -1
- package/dist/frontend/lowering/expressions/object-literals.js +951 -240
- package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/optional-chains.js +71 -21
- package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
- package/dist/frontend/lowering/expressions/property-access.d.ts +39 -0
- package/dist/frontend/lowering/expressions/property-access.js +1141 -87
- package/dist/frontend/lowering/expressions/property-access.js.map +1 -1
- package/dist/frontend/lowering/expressions/relational.js +262 -4
- package/dist/frontend/lowering/expressions/relational.js.map +1 -1
- package/dist/frontend/lowering/expressions/typeof.js +25 -0
- package/dist/frontend/lowering/expressions/typeof.js.map +1 -1
- package/dist/frontend/lowering/expressions/union-fields.d.ts +20 -1
- package/dist/frontend/lowering/expressions/union-fields.js +103 -13
- package/dist/frontend/lowering/expressions/union-fields.js.map +1 -1
- package/dist/frontend/lowering/expressions/updates.js +156 -22
- package/dist/frontend/lowering/expressions/updates.js.map +1 -1
- package/dist/frontend/lowering/frozen-records.d.ts +6 -0
- package/dist/frontend/lowering/frozen-records.js +10 -4
- package/dist/frontend/lowering/frozen-records.js.map +1 -1
- package/dist/frontend/lowering/frozen-records.test.d.ts +1 -0
- package/dist/frontend/lowering/frozen-records.test.js +44 -0
- package/dist/frontend/lowering/frozen-records.test.js.map +1 -0
- package/dist/frontend/lowering/function-names.d.ts +9 -0
- package/dist/frontend/lowering/function-names.js +95 -0
- package/dist/frontend/lowering/function-names.js.map +1 -0
- package/dist/frontend/lowering/function-returns.js +42 -13
- package/dist/frontend/lowering/function-returns.js.map +1 -1
- package/dist/frontend/lowering/general-streams.js +5 -0
- package/dist/frontend/lowering/general-streams.js.map +1 -1
- package/dist/frontend/lowering/generator-delegation.d.ts +15 -7
- package/dist/frontend/lowering/generator-delegation.js +301 -118
- package/dist/frontend/lowering/generator-delegation.js.map +1 -1
- package/dist/frontend/lowering/generic-functions.d.ts +75 -0
- package/dist/frontend/lowering/generic-functions.js +790 -18
- package/dist/frontend/lowering/generic-functions.js.map +1 -1
- package/dist/frontend/lowering/global-function-values.d.ts +25 -0
- package/dist/frontend/lowering/global-function-values.js +193 -0
- package/dist/frontend/lowering/global-function-values.js.map +1 -0
- package/dist/frontend/lowering/global-values.d.ts +15 -4
- package/dist/frontend/lowering/global-values.js +67 -9
- package/dist/frontend/lowering/global-values.js.map +1 -1
- package/dist/frontend/lowering/handle-properties.js +34 -1
- package/dist/frontend/lowering/handle-properties.js.map +1 -1
- package/dist/frontend/lowering/host-global-values.d.ts +31 -0
- package/dist/frontend/lowering/host-global-values.js +121 -0
- package/dist/frontend/lowering/host-global-values.js.map +1 -0
- package/dist/frontend/lowering/host-globals.d.ts +74 -0
- package/dist/frontend/lowering/host-globals.js +344 -0
- package/dist/frontend/lowering/host-globals.js.map +1 -0
- package/dist/frontend/lowering/http2-constants.js +1 -1
- package/dist/frontend/lowering/iterator-adapters.js +46 -17
- package/dist/frontend/lowering/iterator-adapters.js.map +1 -1
- package/dist/frontend/lowering/iterator-prototype.d.ts +30 -0
- package/dist/frontend/lowering/iterator-prototype.js +160 -0
- package/dist/frontend/lowering/iterator-prototype.js.map +1 -0
- package/dist/frontend/lowering/key-order-witness.d.ts +54 -0
- package/dist/frontend/lowering/key-order-witness.js +571 -9
- package/dist/frontend/lowering/key-order-witness.js.map +1 -1
- package/dist/frontend/lowering/key-order-witness.test.js +1 -0
- package/dist/frontend/lowering/key-order-witness.test.js.map +1 -1
- package/dist/frontend/lowering/lib-boundary.js +25 -3
- package/dist/frontend/lowering/lib-boundary.js.map +1 -1
- package/dist/frontend/lowering/lower-assert.js +140 -16
- package/dist/frontend/lowering/lower-assert.js.map +1 -1
- package/dist/frontend/lowering/lower-async-iteration.d.ts +11 -0
- package/dist/frontend/lowering/lower-async-iteration.js +15 -0
- package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
- package/dist/frontend/lowering/lower-builtin-values.d.ts +36 -6
- package/dist/frontend/lowering/lower-builtin-values.js +342 -58
- package/dist/frontend/lowering/lower-builtin-values.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.d.ts +47 -1
- package/dist/frontend/lowering/lower-calls.js +1354 -273
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.test.d.ts +1 -0
- package/dist/frontend/lowering/lower-calls.test.js +121 -0
- package/dist/frontend/lowering/lower-calls.test.js.map +1 -0
- package/dist/frontend/lowering/lower-classes.d.ts +36 -5
- package/dist/frontend/lowering/lower-classes.js +630 -89
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-event-emitter.d.ts +15 -2
- package/dist/frontend/lowering/lower-event-emitter.js +610 -98
- package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.d.ts +15 -1
- package/dist/frontend/lowering/lower-exprs.js +96 -20
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-functions.js +27 -6
- package/dist/frontend/lowering/lower-functions.js.map +1 -1
- package/dist/frontend/lowering/lower-generators.js +57 -10
- package/dist/frontend/lowering/lower-generators.js.map +1 -1
- package/dist/frontend/lowering/lower-global-value.d.ts +6 -0
- package/dist/frontend/lowering/lower-global-value.js +14 -5
- package/dist/frontend/lowering/lower-global-value.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.d.ts +4 -0
- package/dist/frontend/lowering/lower-inspect.js +713 -92
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.js +135 -27
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-namespaces.js +18 -0
- package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
- package/dist/frontend/lowering/lower-node-island.d.ts +35 -4
- package/dist/frontend/lowering/lower-node-island.js +472 -67
- package/dist/frontend/lowering/lower-node-island.js.map +1 -1
- package/dist/frontend/lowering/lower-server.js +463 -96
- package/dist/frontend/lowering/lower-server.js.map +1 -1
- package/dist/frontend/lowering/lower-shared-modules.js +13 -1
- package/dist/frontend/lowering/lower-shared-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-stdlib.d.ts +3 -2
- package/dist/frontend/lowering/lower-stdlib.js +77 -18
- package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.d.ts +24 -4
- package/dist/frontend/lowering/lower-stmts.js +831 -136
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-stream.js +126 -8
- package/dist/frontend/lowering/lower-stream.js.map +1 -1
- package/dist/frontend/lowering/lower-timers.js +243 -48
- package/dist/frontend/lowering/lower-timers.js.map +1 -1
- package/dist/frontend/lowering/lower-url.js +6 -3
- package/dist/frontend/lowering/lower-url.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +363 -21
- package/dist/frontend/lowering/lowerer.js +1224 -129
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/lowerer.test.js +19 -1
- package/dist/frontend/lowering/lowerer.test.js.map +1 -1
- package/dist/frontend/lowering/lowering-facts.d.ts +110 -0
- package/dist/frontend/lowering/lowering-facts.js +323 -0
- package/dist/frontend/lowering/lowering-facts.js.map +1 -0
- package/dist/frontend/lowering/lowering-facts.test.d.ts +1 -0
- package/dist/frontend/lowering/lowering-facts.test.js +100 -0
- package/dist/frontend/lowering/lowering-facts.test.js.map +1 -0
- package/dist/frontend/lowering/module-namespace-elements.js +15 -0
- package/dist/frontend/lowering/module-namespace-elements.js.map +1 -1
- package/dist/frontend/lowering/nan-coded-reads.d.ts +27 -4
- package/dist/frontend/lowering/nan-coded-reads.js +112 -9
- package/dist/frontend/lowering/nan-coded-reads.js.map +1 -1
- package/dist/frontend/lowering/new-target.js +2 -2
- package/dist/frontend/lowering/nullish-empty-pattern.d.ts +17 -0
- package/dist/frontend/lowering/nullish-empty-pattern.js +118 -0
- package/dist/frontend/lowering/nullish-empty-pattern.js.map +1 -0
- package/dist/frontend/lowering/optional-arguments.d.ts +4 -0
- package/dist/frontend/lowering/optional-arguments.js +26 -2
- package/dist/frontend/lowering/optional-arguments.js.map +1 -1
- package/dist/frontend/lowering/partial-assertions.d.ts +36 -0
- package/dist/frontend/lowering/partial-assertions.js +189 -0
- package/dist/frontend/lowering/partial-assertions.js.map +1 -0
- package/dist/frontend/lowering/primitive-throws.d.ts +100 -0
- package/dist/frontend/lowering/primitive-throws.js +241 -0
- package/dist/frontend/lowering/primitive-throws.js.map +1 -0
- package/dist/frontend/lowering/primitive-wrappers.d.ts +34 -0
- package/dist/frontend/lowering/primitive-wrappers.js +221 -0
- package/dist/frontend/lowering/primitive-wrappers.js.map +1 -0
- package/dist/frontend/lowering/private-statics.d.ts +46 -0
- package/dist/frontend/lowering/private-statics.js +322 -0
- package/dist/frontend/lowering/private-statics.js.map +1 -0
- package/dist/frontend/lowering/record-inherited.d.ts +17 -1
- package/dist/frontend/lowering/record-inherited.js +16 -2
- package/dist/frontend/lowering/record-inherited.js.map +1 -1
- package/dist/frontend/lowering/record-links.d.ts +73 -0
- package/dist/frontend/lowering/record-links.js +797 -0
- package/dist/frontend/lowering/record-links.js.map +1 -0
- package/dist/frontend/lowering/record-sources.d.ts +12 -1
- package/dist/frontend/lowering/record-sources.js +60 -0
- package/dist/frontend/lowering/record-sources.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-provenance.d.ts +27 -7
- package/dist/frontend/lowering/runtime-optional-provenance.js +25 -11
- package/dist/frontend/lowering/runtime-optional-provenance.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-report.d.ts +40 -0
- package/dist/frontend/lowering/runtime-optional-report.js +300 -0
- package/dist/frontend/lowering/runtime-optional-report.js.map +1 -0
- package/dist/frontend/lowering/scoped-type-memo.test.d.ts +1 -0
- package/dist/frontend/lowering/scoped-type-memo.test.js +86 -0
- package/dist/frontend/lowering/scoped-type-memo.test.js.map +1 -0
- package/dist/frontend/lowering/static-typeof.d.ts +3 -1
- package/dist/frontend/lowering/static-typeof.js +6 -1
- package/dist/frontend/lowering/static-typeof.js.map +1 -1
- package/dist/frontend/lowering/strict-equality.d.ts +4 -0
- package/dist/frontend/lowering/strict-equality.js +14 -0
- package/dist/frontend/lowering/strict-equality.js.map +1 -1
- package/dist/frontend/lowering/strict-mode.d.ts +1 -5
- package/dist/frontend/lowering/strict-mode.js +4 -30
- package/dist/frontend/lowering/strict-mode.js.map +1 -1
- package/dist/frontend/lowering/structural-instances.d.ts +7 -0
- package/dist/frontend/lowering/structural-instances.js +23 -0
- package/dist/frontend/lowering/structural-instances.js.map +1 -1
- package/dist/frontend/lowering/surfaces.d.ts +42 -1
- package/dist/frontend/lowering/surfaces.js +212 -71
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/lowering/union-retag.d.ts +13 -1
- package/dist/frontend/lowering/union-retag.js +55 -1
- package/dist/frontend/lowering/union-retag.js.map +1 -1
- package/dist/frontend/lowering/union-retag.test.js +51 -0
- package/dist/frontend/lowering/union-retag.test.js.map +1 -1
- package/dist/frontend/lowering/unit-journal.d.ts +136 -17
- package/dist/frontend/lowering/unit-journal.js +324 -53
- package/dist/frontend/lowering/unit-journal.js.map +1 -1
- package/dist/frontend/lowering/unit-journal.test.js +126 -3
- package/dist/frontend/lowering/unit-journal.test.js.map +1 -1
- package/dist/frontend/lowering/unit-reuse.d.ts +92 -0
- package/dist/frontend/lowering/unit-reuse.js +1008 -0
- package/dist/frontend/lowering/unit-reuse.js.map +1 -0
- package/dist/frontend/lowering/width-lift.d.ts +12 -0
- package/dist/frontend/lowering/zlib-constants.js +3 -2
- package/dist/frontend/lowering/zlib-constants.js.map +1 -1
- package/dist/frontend/npm-file-import.test.d.ts +1 -0
- package/dist/frontend/npm-file-import.test.js +76 -0
- package/dist/frontend/npm-file-import.test.js.map +1 -0
- package/dist/frontend/npm-static.js +95 -11
- package/dist/frontend/npm-static.js.map +1 -1
- package/dist/frontend/npm-static.test.js +95 -2
- package/dist/frontend/npm-static.test.js.map +1 -1
- package/dist/frontend/npm.d.ts +9 -0
- package/dist/frontend/npm.js +82 -0
- package/dist/frontend/npm.js.map +1 -1
- package/dist/frontend/pipeline-native.js +2 -1
- package/dist/frontend/pipeline-native.js.map +1 -1
- package/dist/frontend/pipeline.d.ts +9 -4
- package/dist/frontend/pipeline.js +162 -38
- package/dist/frontend/pipeline.js.map +1 -1
- package/dist/frontend/pipeline.test.js +68 -11
- package/dist/frontend/pipeline.test.js.map +1 -1
- package/dist/frontend/program-node.d.ts +3 -0
- package/dist/frontend/program-node.js +13 -6
- package/dist/frontend/program-node.js.map +1 -1
- package/dist/frontend/program.d.ts +71 -2
- package/dist/frontend/program.js +836 -411
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/program.test.js +37 -1
- package/dist/frontend/program.test.js.map +1 -1
- package/dist/frontend/provenance-core.js +4 -0
- package/dist/frontend/provenance-core.js.map +1 -1
- package/dist/frontend/services-node.d.ts +7 -0
- package/dist/frontend/services-node.js +32 -1
- package/dist/frontend/services-node.js.map +1 -1
- package/dist/frontend/services-node.test.js +51 -0
- package/dist/frontend/services-node.test.js.map +1 -1
- package/dist/frontend/services.d.ts +14 -0
- package/dist/frontend/services.js +52 -2
- package/dist/frontend/services.js.map +1 -1
- package/dist/frontend/services.test.js +61 -1
- package/dist/frontend/services.test.js.map +1 -1
- package/dist/frontend/shape-inference/analyze.d.ts +5 -0
- package/dist/frontend/shape-inference/analyze.js +104 -4
- package/dist/frontend/shape-inference/analyze.js.map +1 -1
- package/dist/frontend/shape-inference/domain.js +0 -1
- package/dist/frontend/shape-inference/domain.js.map +1 -1
- package/dist/frontend/shape-inference/index.js +5 -1
- package/dist/frontend/shape-inference/index.js.map +1 -1
- package/dist/frontend/shape-inference/memo.d.ts +2 -1
- package/dist/frontend/shape-inference/memo.js +6 -2
- package/dist/frontend/shape-inference/memo.js.map +1 -1
- package/dist/frontend/shape-inference/overlay.d.ts +1 -1
- package/dist/frontend/shape-inference/overlay.js +184 -4
- package/dist/frontend/shape-inference/overlay.js.map +1 -1
- package/dist/frontend/shape-inference/static-objects.js +11 -6
- package/dist/frontend/shape-inference/static-objects.js.map +1 -1
- package/dist/frontend/source-phase-imports.test.d.ts +1 -0
- package/dist/frontend/source-phase-imports.test.js +37 -0
- package/dist/frontend/source-phase-imports.test.js.map +1 -0
- package/dist/frontend/tier-analysis.d.ts +9 -0
- package/dist/frontend/tier-analysis.js +1 -0
- package/dist/frontend/tier-analysis.js.map +1 -1
- package/dist/frontend/ts7/ast-node.d.ts +6 -1
- package/dist/frontend/ts7/ast-node.js +12 -0
- package/dist/frontend/ts7/ast-node.js.map +1 -1
- package/dist/frontend/ts7/ast-wire-protocols.test.js +11 -3
- package/dist/frontend/ts7/ast-wire-protocols.test.js.map +1 -1
- package/dist/frontend/ts7/ast-wire.js +3 -5
- package/dist/frontend/ts7/ast-wire.js.map +1 -1
- package/dist/frontend/ts7/checker-backend.d.ts +13 -0
- package/dist/frontend/ts7/checker-backend.js +84 -2
- package/dist/frontend/ts7/checker-backend.js.map +1 -1
- package/dist/frontend/ts7/checker-backend.test.js +126 -2
- package/dist/frontend/ts7/checker-backend.test.js.map +1 -1
- package/dist/frontend/ts7/program-host.d.ts +22 -1
- package/dist/frontend/ts7/program-host.js +49 -4
- package/dist/frontend/ts7/program-host.js.map +1 -1
- package/dist/frontend/ts7/program-host.test.js +83 -0
- package/dist/frontend/ts7/program-host.test.js.map +1 -1
- package/dist/frontend/ts7/rpc-process.d.ts +16 -1
- package/dist/frontend/ts7/rpc-process.js +170 -92
- package/dist/frontend/ts7/rpc-process.js.map +1 -1
- package/dist/frontend/ts7/rpc-process.test.js +49 -21
- package/dist/frontend/ts7/rpc-process.test.js.map +1 -1
- package/dist/frontend/tsc-codes.d.ts +57 -3
- package/dist/frontend/tsc-codes.js +956 -101
- package/dist/frontend/tsc-codes.js.map +1 -1
- package/dist/frontend/tsc-codes.test.js +221 -12
- package/dist/frontend/tsc-codes.test.js.map +1 -1
- package/dist/frontend/type-mapper.d.ts +98 -11
- package/dist/frontend/type-mapper.js +770 -182
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +224 -15
- package/dist/index.js.map +1 -1
- package/dist/index.test.d.ts +1 -0
- package/dist/index.test.js +60 -0
- package/dist/index.test.js.map +1 -0
- package/dist/ir/api.d.ts +1 -1
- package/dist/ir/api.js +1 -1
- package/dist/ir/api.js.map +1 -1
- package/dist/ir/build.d.ts +3 -2
- package/dist/ir/build.js +4 -2
- package/dist/ir/build.js.map +1 -1
- package/dist/ir/builtin-effects.js +96 -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 +453 -26
- package/dist/ir/builtin-signatures.js.map +1 -1
- package/dist/ir/callback-specialization.d.ts +3 -2
- package/dist/ir/callback-specialization.js +35 -25
- package/dist/ir/callback-specialization.js.map +1 -1
- package/dist/ir/capture-values.d.ts +8 -4
- package/dist/ir/capture-values.js +9 -6
- package/dist/ir/capture-values.js.map +1 -1
- package/dist/ir/char-unit-locals.d.ts +6 -2
- package/dist/ir/char-unit-locals.js +11 -2
- package/dist/ir/char-unit-locals.js.map +1 -1
- package/dist/ir/class-key-index.d.ts +18 -0
- package/dist/ir/class-key-index.js +29 -0
- package/dist/ir/class-key-index.js.map +1 -0
- package/dist/ir/class-key-index.test.d.ts +1 -0
- package/dist/ir/class-key-index.test.js +25 -0
- package/dist/ir/class-key-index.test.js.map +1 -0
- package/dist/ir/codec.d.ts +82 -0
- package/dist/ir/codec.generated.d.ts +13 -0
- package/dist/ir/codec.generated.js +5350 -0
- package/dist/ir/codec.generated.js.map +1 -0
- package/dist/ir/codec.js +325 -0
- package/dist/ir/codec.js.map +1 -0
- package/dist/ir/codec.test.d.ts +1 -0
- package/dist/ir/codec.test.js +225 -0
- package/dist/ir/codec.test.js.map +1 -0
- package/dist/ir/constant-globals.d.ts +5 -2
- package/dist/ir/constant-globals.js +25 -27
- package/dist/ir/constant-globals.js.map +1 -1
- package/dist/ir/expression-inlining.d.ts +4 -2
- package/dist/ir/expression-inlining.js +8 -2
- package/dist/ir/expression-inlining.js.map +1 -1
- package/dist/ir/field-values.d.ts +5 -2
- package/dist/ir/field-values.js +32 -21
- package/dist/ir/field-values.js.map +1 -1
- package/dist/ir/fields.generated.d.ts +29 -10
- package/dist/ir/fields.generated.js +1039 -11
- package/dist/ir/fields.generated.js.map +1 -1
- package/dist/ir/fields.test.js +46 -2
- package/dist/ir/fields.test.js.map +1 -1
- package/dist/ir/final-fields.js +1 -1
- package/dist/ir/final-fields.js.map +1 -1
- package/dist/ir/function-references.d.ts +6 -4
- package/dist/ir/function-references.js +11 -4
- package/dist/ir/function-references.js.map +1 -1
- package/dist/ir/function-references.test.js +14 -0
- package/dist/ir/function-references.test.js.map +1 -1
- package/dist/ir/init-only-globals.d.ts +4 -2
- package/dist/ir/init-only-globals.js +17 -18
- package/dist/ir/init-only-globals.js.map +1 -1
- package/dist/ir/inline-array-sources.js +4 -1
- package/dist/ir/inline-array-sources.js.map +1 -1
- package/dist/ir/inline-array-views.d.ts +13 -0
- package/dist/ir/inline-array-views.js +945 -0
- package/dist/ir/inline-array-views.js.map +1 -0
- package/dist/ir/inline-arrays.d.ts +7 -0
- package/dist/ir/inline-arrays.js +190 -55
- package/dist/ir/inline-arrays.js.map +1 -1
- package/dist/ir/inline-arrays.test.js +140 -2
- package/dist/ir/inline-arrays.test.js.map +1 -1
- package/dist/ir/int32-slots.js +7 -0
- package/dist/ir/int32-slots.js.map +1 -1
- package/dist/ir/integer-ranges.js +16 -6
- package/dist/ir/integer-ranges.js.map +1 -1
- package/dist/ir/ir.d.ts +130 -44
- package/dist/ir/ir.js +7 -0
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/js-groups.d.ts +51 -0
- package/dist/ir/js-groups.js +394 -0
- package/dist/ir/js-groups.js.map +1 -0
- package/dist/ir/js-groups.test.d.ts +1 -0
- package/dist/ir/js-groups.test.js +555 -0
- package/dist/ir/js-groups.test.js.map +1 -0
- package/dist/ir/js-ic.d.ts +10 -9
- package/dist/ir/js-ic.js +58 -25
- package/dist/ir/js-ic.js.map +1 -1
- package/dist/ir/js-ic.test.js +37 -3
- package/dist/ir/js-ic.test.js.map +1 -1
- package/dist/ir/jsval.js +374 -63
- package/dist/ir/jsval.js.map +1 -1
- package/dist/ir/jsval.test.js +96 -2
- package/dist/ir/jsval.test.js.map +1 -1
- package/dist/ir/loop-entry-ranges.js +112 -9
- package/dist/ir/loop-entry-ranges.js.map +1 -1
- package/dist/ir/loop-entry-ranges.test.js +40 -0
- package/dist/ir/loop-entry-ranges.test.js.map +1 -1
- package/dist/ir/node-index.d.ts +23 -6
- package/dist/ir/node-index.js +126 -49
- package/dist/ir/node-index.js.map +1 -1
- package/dist/ir/numeric-call-specialization.d.ts +4 -2
- package/dist/ir/numeric-call-specialization.js +40 -26
- package/dist/ir/numeric-call-specialization.js.map +1 -1
- package/dist/ir/paired-while-loops.d.ts +4 -2
- package/dist/ir/paired-while-loops.js +8 -2
- package/dist/ir/paired-while-loops.js.map +1 -1
- package/dist/ir/parameter-versions.d.ts +13 -3
- package/dist/ir/parameter-versions.js +63 -40
- package/dist/ir/parameter-versions.js.map +1 -1
- package/dist/ir/property-bags.d.ts +4 -2
- package/dist/ir/property-bags.js +22 -17
- package/dist/ir/property-bags.js.map +1 -1
- package/dist/ir/receiver-readers.js +58 -2
- package/dist/ir/receiver-readers.js.map +1 -1
- package/dist/ir/row-pairs.d.ts +4 -2
- package/dist/ir/row-pairs.js +12 -11
- package/dist/ir/row-pairs.js.map +1 -1
- package/dist/ir/runtime-features.d.ts +139 -5
- package/dist/ir/runtime-features.js +397 -19
- package/dist/ir/runtime-features.js.map +1 -1
- package/dist/ir/runtime-features.test.js +135 -1
- package/dist/ir/runtime-features.test.js.map +1 -1
- package/dist/ir/runtime-jam-loops.d.ts +35 -0
- package/dist/ir/runtime-jam-loops.js +604 -0
- package/dist/ir/runtime-jam-loops.js.map +1 -0
- package/dist/ir/runtime-jam-loops.test.d.ts +1 -0
- package/dist/ir/runtime-jam-loops.test.js +565 -0
- package/dist/ir/runtime-jam-loops.test.js.map +1 -0
- package/dist/ir/saturating-loop-jams.d.ts +11 -2
- package/dist/ir/saturating-loop-jams.js +56 -16
- package/dist/ir/saturating-loop-jams.js.map +1 -1
- package/dist/ir/saturating-loop-jams.test.js +39 -1
- package/dist/ir/saturating-loop-jams.test.js.map +1 -1
- package/dist/ir/scalar-records.d.ts +5 -2
- package/dist/ir/scalar-records.js +12 -2
- package/dist/ir/scalar-records.js.map +1 -1
- package/dist/ir/self-captures.d.ts +4 -2
- package/dist/ir/self-captures.js +40 -28
- package/dist/ir/self-captures.js.map +1 -1
- package/dist/ir/self-captures.test.js +15 -0
- package/dist/ir/self-captures.test.js.map +1 -1
- package/dist/ir/serialize.d.ts +8 -2
- package/dist/ir/serialize.js +92 -24
- package/dist/ir/serialize.js.map +1 -1
- package/dist/ir/serialize.test.js +26 -0
- package/dist/ir/serialize.test.js.map +1 -1
- package/dist/ir/tiers.js +1 -0
- package/dist/ir/tiers.js.map +1 -1
- package/dist/ir/traverse.js +4 -0
- package/dist/ir/traverse.js.map +1 -1
- package/dist/ir/typed-argument-clones.d.ts +30 -0
- package/dist/ir/typed-argument-clones.js +789 -0
- package/dist/ir/typed-argument-clones.js.map +1 -0
- package/dist/ir/union-arm-loops.d.ts +3 -0
- package/dist/ir/union-arm-loops.js +373 -0
- package/dist/ir/union-arm-loops.js.map +1 -0
- package/dist/ir/union-arm-loops.test.d.ts +1 -0
- package/dist/ir/union-arm-loops.test.js +230 -0
- package/dist/ir/union-arm-loops.test.js.map +1 -0
- package/dist/ir/validate.js +170 -22
- package/dist/ir/validate.js.map +1 -1
- package/dist/ir/validate.test.js +46 -0
- package/dist/ir/validate.test.js.map +1 -1
- package/dist/library/compiler-self-identity.d.ts +8 -2
- package/dist/library/compiler-self-identity.js +92 -18
- package/dist/library/compiler-self-identity.js.map +1 -1
- package/dist/library/compiler-self-identity.test.js +150 -3
- package/dist/library/compiler-self-identity.test.js.map +1 -1
- package/dist/library/int-infer.d.ts +5 -0
- package/dist/library/int-infer.js +15 -3
- package/dist/library/int-infer.js.map +1 -1
- package/dist/library/ir-policy.js +4 -0
- package/dist/library/ir-policy.js.map +1 -1
- package/dist/library/library-cache.d.ts +4 -0
- package/dist/library/library-cache.js +2 -0
- package/dist/library/library-cache.js.map +1 -1
- package/dist/library/library-cache.test.js +26 -0
- package/dist/library/library-cache.test.js.map +1 -1
- package/dist/library/prepare.js +99 -31
- package/dist/library/prepare.js.map +1 -1
- package/dist/native/cache.d.ts +7 -0
- package/dist/native/cache.js +49 -0
- package/dist/native/cache.js.map +1 -1
- package/dist/native/cache.test.js +13 -1
- package/dist/native/cache.test.js.map +1 -1
- package/dist/native/cli.js +2 -0
- package/dist/native/cli.js.map +1 -1
- package/dist/native/compiler.js +26 -5
- package/dist/native/compiler.js.map +1 -1
- package/dist/native/executable-cache-open.test.js +31 -5
- package/dist/native/executable-cache-open.test.js.map +1 -1
- package/dist/native/executable-cache.d.ts +6 -1
- package/dist/native/executable-cache.js +7 -1
- package/dist/native/executable-cache.js.map +1 -1
- package/dist/native/prepare.d.ts +3 -0
- package/dist/native/prepare.js +74 -28
- package/dist/native/prepare.js.map +1 -1
- package/dist/native/prepare.test.js +25 -3
- package/dist/native/prepare.test.js.map +1 -1
- package/dist/native/sanitizer.js +63 -4
- package/dist/native/sanitizer.js.map +1 -1
- package/dist/native/sanitizer.test.js +93 -2
- package/dist/native/sanitizer.test.js.map +1 -1
- package/dist/native/toolchain.js +9 -2
- package/dist/native/toolchain.js.map +1 -1
- package/dist/node-islands/boundary.d.ts +37 -1
- package/dist/node-islands/boundary.js +65 -7
- package/dist/node-islands/boundary.js.map +1 -1
- package/dist/node-islands/boundary.test.d.ts +1 -0
- package/dist/node-islands/boundary.test.js +76 -0
- package/dist/node-islands/boundary.test.js.map +1 -0
- package/dist/node-islands/detect.d.ts +27 -1
- package/dist/node-islands/detect.js +475 -40
- package/dist/node-islands/detect.js.map +1 -1
- package/dist/node-islands/detect.test.js +175 -4
- package/dist/node-islands/detect.test.js.map +1 -1
- package/dist/node-islands/effect-gate.js +30 -20
- package/dist/node-islands/effect-gate.js.map +1 -1
- package/dist/node-islands/effect-gate.test.js +4 -1
- package/dist/node-islands/effect-gate.test.js.map +1 -1
- package/dist/node-islands/graph-islands.d.ts +40 -0
- package/dist/node-islands/graph-islands.js +128 -0
- package/dist/node-islands/graph-islands.js.map +1 -0
- package/dist/node-islands/growth.d.ts +57 -0
- package/dist/node-islands/growth.js +205 -0
- package/dist/node-islands/growth.js.map +1 -0
- package/dist/node-islands/libnode.d.ts +1 -1
- package/dist/node-islands/libnode.js +1 -1
- package/dist/node-islands/libnode.js.map +1 -1
- package/dist/node-islands/modules.d.ts +28 -0
- package/dist/node-islands/modules.js +156 -0
- package/dist/node-islands/modules.js.map +1 -1
- package/dist/node-islands/modules.test.js +105 -1
- package/dist/node-islands/modules.test.js.map +1 -1
- package/dist/node-islands/policy.js +2 -3
- package/dist/node-islands/policy.js.map +1 -1
- package/dist/node-islands/probe-recorder.d.ts +1 -0
- package/dist/node-islands/probe-recorder.js +596 -0
- package/dist/node-islands/probe-recorder.js.map +1 -0
- package/dist/node-islands/probe-recorder.test.d.ts +1 -0
- package/dist/node-islands/probe-recorder.test.js +80 -0
- package/dist/node-islands/probe-recorder.test.js.map +1 -0
- package/dist/node-islands/report.d.ts +12 -0
- package/dist/node-islands/report.js +28 -0
- package/dist/node-islands/report.js.map +1 -1
- package/dist/node-islands/report.test.js +4 -0
- package/dist/node-islands/report.test.js.map +1 -1
- package/dist/node-islands/rules.js +9 -0
- package/dist/node-islands/rules.js.map +1 -1
- package/dist/node-islands/scan.d.ts +16 -1
- package/dist/node-islands/scan.js +110 -9
- package/dist/node-islands/scan.js.map +1 -1
- package/dist/node-islands/snapshot.d.ts +38 -1
- package/dist/node-islands/snapshot.js +165 -161
- package/dist/node-islands/snapshot.js.map +1 -1
- package/dist/node-islands/snapshot.test.js +63 -2
- package/dist/node-islands/snapshot.test.js.map +1 -1
- package/dist/node-islands/summary.js +8 -0
- package/dist/node-islands/summary.js.map +1 -1
- package/dist/node-islands/type-strip.d.ts +11 -0
- package/dist/node-islands/type-strip.js +157 -0
- package/dist/node-islands/type-strip.js.map +1 -0
- package/dist/node-islands/type-strip.test.d.ts +1 -0
- package/dist/node-islands/type-strip.test.js +31 -0
- package/dist/node-islands/type-strip.test.js.map +1 -0
- package/dist/project-config.d.ts +4 -0
- package/dist/project-config.js +19 -0
- package/dist/project-config.js.map +1 -1
- package/dist/project-config.test.js +10 -0
- package/dist/project-config.test.js.map +1 -1
- package/dist/wasm/translate.js +11 -5
- package/dist/wasm/translate.js.map +1 -1
- package/dist/wasm/translate.test.js +35 -0
- package/dist/wasm/translate.test.js.map +1 -1
- package/package.json +20 -20
- package/surface-manifest.json +221 -122
|
@@ -11,12 +11,13 @@ import { isSafeToDiscard } from "../expressions/evaluation-safety.js";
|
|
|
11
11
|
import { resultIsDiscarded } from "../call-position.js";
|
|
12
12
|
import { defaultAfterUndefined, lowerStaticallyUndefinedArgument } from "../optional-arguments.js";
|
|
13
13
|
import { voidizedCallback } from "../lower-server.js";
|
|
14
|
-
import { BOOL, BYTES_U8, DYN, F64, PROCSTREAM_T, STRING, UNDEFINED_T, VOID, arrayOf, canBoxFuncIntoDyn, funcOf, } from "../../../ir/ir.js";
|
|
14
|
+
import { BOOL, BYTES_U8, DYN, F64, PROCSTREAM_T, STRING, UNDEFINED_T, VOID, arrayOf, canBoxFuncIntoDyn, funcOf, isUnitType, typeKey, } from "../../../ir/ir.js";
|
|
15
15
|
import { lowerBuiltinLoaderValue } from "../lower-builtin-values.js";
|
|
16
16
|
import { builtinFunctionValue } from "../lower-exprs.js";
|
|
17
17
|
import { canonicalBuiltinModule } from "../../builtin-modules.js";
|
|
18
18
|
import { lowerProcessIpcSend, ipcMessageListener, ipcDisconnectListener } from "./ipc.js";
|
|
19
19
|
import { lowerDiagnosticsSubscriber, lowerTracingArguments } from "./async-context.js";
|
|
20
|
+
import { isCheckerPanic } from "../../../diagnostics/diagnostic.js";
|
|
20
21
|
/** Whether the process has an IPC channel, Node's test for defining
|
|
21
22
|
* process.send and process.disconnect: a channel this fork child opened
|
|
22
23
|
* (programs with fork targets only), or a non-empty NODE_CHANNEL_FD from a
|
|
@@ -157,10 +158,70 @@ export function programReadsExitCode(lowerer) {
|
|
|
157
158
|
lowerer.readsExitCode = found;
|
|
158
159
|
return found;
|
|
159
160
|
}
|
|
161
|
+
/** Whether any program file replaces a process output stream's write
|
|
162
|
+
* method: `process.stdout.write = …` / `process.stderr.write = …`, or the
|
|
163
|
+
* same assignment through a first-class alias of the stream (a value whose
|
|
164
|
+
* type maps to the process stream). Such a program routes its typed
|
|
165
|
+
* stdout/stderr writes through the stream object, so the replacement sees
|
|
166
|
+
* them with their arguments, as in Node. Cached per program; the first
|
|
167
|
+
* site found is recorded for the executable planner's SC8006 refusal. */
|
|
168
|
+
export function programPatchesStdio(lowerer) {
|
|
169
|
+
if (lowerer.patchesStdio !== null)
|
|
170
|
+
return lowerer.patchesStdio;
|
|
171
|
+
let found = false;
|
|
172
|
+
// undefined: not an output stream; null: a first-class alias of one.
|
|
173
|
+
const streamOf = (recv) => {
|
|
174
|
+
if (ts.isPropertyAccessExpression(recv)) {
|
|
175
|
+
const direct = lowerer.stdlibGlobalMember(recv, "process");
|
|
176
|
+
if (direct === "stdout" || direct === "stderr")
|
|
177
|
+
return direct;
|
|
178
|
+
}
|
|
179
|
+
// An arbitrary receiver's mapping is a query, never a commit: a checker
|
|
180
|
+
// panic (the type has no readable form) is not a patch site. The type
|
|
181
|
+
// cannot say WHICH output stream an alias holds.
|
|
182
|
+
try {
|
|
183
|
+
return lowerer.mapTypeOf(lowerer.typeOf(recv))?.kind === "procStream" ? null : undefined;
|
|
184
|
+
}
|
|
185
|
+
catch (e) {
|
|
186
|
+
if (!isCheckerPanic(e))
|
|
187
|
+
throw e;
|
|
188
|
+
return undefined;
|
|
189
|
+
}
|
|
190
|
+
};
|
|
191
|
+
const walk = (node) => {
|
|
192
|
+
if (found)
|
|
193
|
+
return;
|
|
194
|
+
if (ts.isBinaryExpression(node) &&
|
|
195
|
+
node.operatorToken.kind === ts.SyntaxKind.EqualsToken &&
|
|
196
|
+
ts.isPropertyAccessExpression(node.left) &&
|
|
197
|
+
node.left.name.text === "write") {
|
|
198
|
+
const recv = node.left.expression;
|
|
199
|
+
const direct = ts.isPropertyAccessExpression(recv)
|
|
200
|
+
? lowerer.stdlibGlobalMember(recv, "process")
|
|
201
|
+
: null;
|
|
202
|
+
const stream = direct === "stdout" || direct === "stderr" ? direct : streamOf(recv);
|
|
203
|
+
if (stream !== undefined) {
|
|
204
|
+
found = true;
|
|
205
|
+
lowerer.stdioPatchSites.push({ stream, loc: locOf(node) });
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
ts.forEachChild(node, walk);
|
|
210
|
+
};
|
|
211
|
+
for (const sf of lowerer.program.getImplementationSourceFiles()) {
|
|
212
|
+
if (sf.isDeclarationFile)
|
|
213
|
+
continue;
|
|
214
|
+
walk(sf);
|
|
215
|
+
if (found)
|
|
216
|
+
break;
|
|
217
|
+
}
|
|
218
|
+
lowerer.patchesStdio = found;
|
|
219
|
+
return found;
|
|
220
|
+
}
|
|
160
221
|
/** The pinned Node release the runtime reports as process.versions.node
|
|
161
222
|
* (packages/runtime/src/scr_lib.c SCR_NODE_COMPAT_VERSION, kept equal to
|
|
162
223
|
* internal/compatibility/node-v24.json by test/node-pin.test.ts). */
|
|
163
|
-
export const NODE_COMPAT_VERSION = "24.22.
|
|
224
|
+
export const NODE_COMPAT_VERSION = "24.22.1";
|
|
164
225
|
/** Method calls on first-class process-stream receivers (procStream —
|
|
165
226
|
* a WritableStream-typed value like prefixStream's `output` param):
|
|
166
227
|
* write(data) with one string and terminal geometry, dispatched onto
|
|
@@ -215,9 +276,10 @@ export function lowerProcStreamMethodCall(lowerer, call, access) {
|
|
|
215
276
|
lowerer.noLowering(`WritableStream.${name}`, call, "write(data) with one string and getWindowSize() are the supported stream-value methods", lowerer.checker.getSymbolAtLocation(access.name));
|
|
216
277
|
}
|
|
217
278
|
/** Standard streams expose optional terminal properties: pipes have no
|
|
218
|
-
* isTTY, columns, or rows
|
|
279
|
+
* isTTY, columns, or rows, and only a TTY stdin has a raw-mode flag. The
|
|
280
|
+
* declarations do not prove their presence. */
|
|
219
281
|
export function isOptionalProcessStreamProperty(lowerer, expr) {
|
|
220
|
-
if (!["isTTY", "columns", "rows"].includes(expr.name.text))
|
|
282
|
+
if (!["isTTY", "columns", "rows", "isRaw"].includes(expr.name.text))
|
|
221
283
|
return false;
|
|
222
284
|
let recv = expr.expression;
|
|
223
285
|
while (ts.isParenthesizedExpression(recv) || ts.isAsExpression(recv) || ts.isTypeAssertion(recv))
|
|
@@ -226,7 +288,7 @@ export function isOptionalProcessStreamProperty(lowerer, expr) {
|
|
|
226
288
|
const stream = lowerer.stdlibGlobalMember(recv, "process");
|
|
227
289
|
if (stream === "stdout" ||
|
|
228
290
|
stream === "stderr" ||
|
|
229
|
-
(stream === "stdin" && expr.name.text === "isTTY"))
|
|
291
|
+
(stream === "stdin" && (expr.name.text === "isTTY" || expr.name.text === "isRaw")))
|
|
230
292
|
return true;
|
|
231
293
|
}
|
|
232
294
|
return lowerer.mapTypeOf(lowerer.typeOf(expr.expression))?.kind === "procStream";
|
|
@@ -297,6 +359,26 @@ export function lowerProcessStreamProperty(lowerer, expr) {
|
|
|
297
359
|
loc: locOf(expr),
|
|
298
360
|
};
|
|
299
361
|
}
|
|
362
|
+
// The write method as a VALUE in TypeScript (`const original =
|
|
363
|
+
// process.stdout.write`, `process.stdout.write.bind(process.stdout)`):
|
|
364
|
+
// the stream object's current write slot, a checked-dynamic function
|
|
365
|
+
// (the native method until a program replaces it).
|
|
366
|
+
if (member === "write" && (direct === "stdout" || direct === "stderr")) {
|
|
367
|
+
const loc = locOf(expr);
|
|
368
|
+
return {
|
|
369
|
+
kind: "dynKeyGet",
|
|
370
|
+
value: {
|
|
371
|
+
kind: "libCall",
|
|
372
|
+
fn: "process.stdioSlot",
|
|
373
|
+
args: [numLit(direct === "stdout" ? 1 : 2, loc)],
|
|
374
|
+
type: DYN,
|
|
375
|
+
loc,
|
|
376
|
+
},
|
|
377
|
+
key: strLit("write", locOf(expr.name)),
|
|
378
|
+
type: DYN,
|
|
379
|
+
loc,
|
|
380
|
+
};
|
|
381
|
+
}
|
|
300
382
|
// `if (process.stdin.setRawMode)`: Node's stdin has the method only
|
|
301
383
|
// when it is a TTY. The runtime's stream object answers the same
|
|
302
384
|
// presence (the method or undefined); calls keep their direct lowering.
|
|
@@ -309,10 +391,20 @@ export function lowerProcessStreamProperty(lowerer, expr) {
|
|
|
309
391
|
loc: locOf(expr),
|
|
310
392
|
};
|
|
311
393
|
}
|
|
394
|
+
// process.stdin.readableLength: the bytes waiting in the read buffer
|
|
395
|
+
// (Node's Readable#readableLength). Only stdin has the readable side;
|
|
396
|
+
// its held input is the runtime's buffer.
|
|
397
|
+
if (direct === "stdin" && member === "readableLength") {
|
|
398
|
+
return { kind: "libCall", fn: "stdin.readableLength", args: [], type: F64, loc: locOf(expr) };
|
|
399
|
+
}
|
|
312
400
|
if (member !== "isTTY" &&
|
|
313
401
|
member !== "columns" &&
|
|
314
402
|
member !== "rows" &&
|
|
315
|
-
member !== "writableLength"
|
|
403
|
+
member !== "writableLength" &&
|
|
404
|
+
member !== "fd" &&
|
|
405
|
+
member !== "isRaw" &&
|
|
406
|
+
member !== "writableHighWaterMark" &&
|
|
407
|
+
member !== "writableNeedDrain")
|
|
316
408
|
return null;
|
|
317
409
|
let recv = expr.expression;
|
|
318
410
|
while (ts.isParenthesizedExpression(recv) || ts.isAsExpression(recv) || ts.isTypeAssertion(recv))
|
|
@@ -340,12 +432,21 @@ export function lowerProcessStreamProperty(lowerer, expr) {
|
|
|
340
432
|
// nothing is ever queued and Node's number is always 0. The other
|
|
341
433
|
// members stay keyed reads — the runtime stream answers their live
|
|
342
434
|
// values (isatty columns/rows, stdin readableLength).
|
|
343
|
-
if (member === "writableLength"
|
|
435
|
+
if (member === "writableLength" ||
|
|
436
|
+
member === "writableHighWaterMark" ||
|
|
437
|
+
member === "writableNeedDrain") {
|
|
344
438
|
// The receiver still EVALUATES: a call or property read that hands
|
|
345
439
|
// back the stream runs its own side effects — and throws where Node
|
|
346
440
|
// throws — before the constant answers, exactly as the read of the
|
|
347
441
|
// member would. A pure receiver (the alias above) folds away.
|
|
348
|
-
const answer =
|
|
442
|
+
const answer = member === "writableNeedDrain"
|
|
443
|
+
? { kind: "boolLit", value: false, type: BOOL, loc: locOf(expr) }
|
|
444
|
+
: {
|
|
445
|
+
kind: "numLit",
|
|
446
|
+
value: member === "writableLength" ? 0 : 65536,
|
|
447
|
+
type: F64,
|
|
448
|
+
loc: locOf(expr),
|
|
449
|
+
};
|
|
349
450
|
const effect = lowerer.lowerExpr(expr.expression);
|
|
350
451
|
if (isSafeToDiscard(effect))
|
|
351
452
|
return answer;
|
|
@@ -353,7 +454,7 @@ export function lowerProcessStreamProperty(lowerer, expr) {
|
|
|
353
454
|
kind: "seqExpr",
|
|
354
455
|
stmts: [{ kind: "exprStmt", expr: effect, loc: locOf(expr.expression) }],
|
|
355
456
|
result: answer,
|
|
356
|
-
type:
|
|
457
|
+
type: answer.type,
|
|
357
458
|
loc: locOf(expr),
|
|
358
459
|
};
|
|
359
460
|
}
|
|
@@ -385,6 +486,18 @@ export function lowerProcessStreamProperty(lowerer, expr) {
|
|
|
385
486
|
// correct; the write itself never defers.
|
|
386
487
|
if (member === "writableLength")
|
|
387
488
|
return { kind: "numLit", value: 0, type: F64, loc };
|
|
489
|
+
// Node's default high-water mark for the process streams, and the
|
|
490
|
+
// drain flag a synchronous write never sets.
|
|
491
|
+
if (member === "writableHighWaterMark") {
|
|
492
|
+
if (stream === "stdin")
|
|
493
|
+
return null;
|
|
494
|
+
return { kind: "numLit", value: 65536, type: F64, loc };
|
|
495
|
+
}
|
|
496
|
+
if (member === "writableNeedDrain") {
|
|
497
|
+
if (stream === "stdin")
|
|
498
|
+
return null;
|
|
499
|
+
return { kind: "boolLit", value: false, type: BOOL, loc };
|
|
500
|
+
}
|
|
388
501
|
if (member === "isTTY") {
|
|
389
502
|
const type = lowerer.withUndefinedArm(BOOL);
|
|
390
503
|
return {
|
|
@@ -396,8 +509,30 @@ export function lowerProcessStreamProperty(lowerer, expr) {
|
|
|
396
509
|
loc,
|
|
397
510
|
};
|
|
398
511
|
}
|
|
399
|
-
if (
|
|
400
|
-
|
|
512
|
+
if (member === "fd") {
|
|
513
|
+
// The process streams are built over fd 0/1/2 (Node answers those on
|
|
514
|
+
// a TTY, a pipe, and a redirected file alike).
|
|
515
|
+
return {
|
|
516
|
+
kind: "numLit",
|
|
517
|
+
value: stream === "stdin" ? 0 : stream === "stdout" ? 1 : 2,
|
|
518
|
+
type: F64,
|
|
519
|
+
loc,
|
|
520
|
+
};
|
|
521
|
+
}
|
|
522
|
+
if (stream === "stdin") {
|
|
523
|
+
if (member !== "isRaw")
|
|
524
|
+
return null;
|
|
525
|
+
// Node answers the raw-mode flag of a TTY stdin and undefined on
|
|
526
|
+
// anything else (a pipe-backed stdin); the runtime sentinel carries
|
|
527
|
+
// both (scr_process_stdin_is_raw).
|
|
528
|
+
return {
|
|
529
|
+
kind: "libCall",
|
|
530
|
+
fn: "process.stdinIsRaw",
|
|
531
|
+
args: [],
|
|
532
|
+
type: lowerer.withUndefinedArm(BOOL),
|
|
533
|
+
loc,
|
|
534
|
+
};
|
|
535
|
+
}
|
|
401
536
|
const want = lowerer.withUndefinedArm(F64);
|
|
402
537
|
return {
|
|
403
538
|
kind: "libCall",
|
|
@@ -499,9 +634,10 @@ export function lowerProcessProperty(lowerer, expr) {
|
|
|
499
634
|
// The capability-probe members that honestly DON'T EXIST in a
|
|
500
635
|
// compiled binary — each reads undefined (their declared types carry
|
|
501
636
|
// the undefined arm), so feature probes take their documented
|
|
502
|
-
// fallbacks: no gyp build config (process.config.variables.* — no
|
|
503
|
-
//
|
|
504
|
-
//
|
|
637
|
+
// fallbacks: no gyp build config (process.config.variables.* — no QUIC
|
|
638
|
+
// — and process.config.target_defaults; v8_enable_i18n_support is the
|
|
639
|
+
// exception below, answered from the binary's linked ICU), no feature
|
|
640
|
+
// flags (process.features.* — no inspector, not a debug build).
|
|
505
641
|
if (!expr.questionDotToken && ts.isPropertyAccessExpression(expr.expression)) {
|
|
506
642
|
const container = lowerer.stdlibGlobalMember(expr.expression, "process");
|
|
507
643
|
if (container === "features") {
|
|
@@ -520,6 +656,13 @@ export function lowerProcessProperty(lowerer, expr) {
|
|
|
520
656
|
if (ts.isPropertyAccessExpression(expr.expression.expression) &&
|
|
521
657
|
expr.expression.name.text === "variables" &&
|
|
522
658
|
lowerer.stdlibGlobalMember(expr.expression.expression, "process") === "config") {
|
|
659
|
+
// The one variable a compiled binary can answer truthfully:
|
|
660
|
+
// v8_enable_i18n_support. Node bundles ICU and answers the number 1;
|
|
661
|
+
// this read selects the `icu` runtime feature (scr_intl.c), so a
|
|
662
|
+
// binary that reports ICU is a binary that carries it.
|
|
663
|
+
if (expr.name.text === "v8_enable_i18n_support") {
|
|
664
|
+
return { kind: "libCall", fn: "icu.i18nSupport", args: [], type: F64, loc: locOf(expr) };
|
|
665
|
+
}
|
|
523
666
|
return { kind: "unitLit", unit: "undefined", type: UNDEFINED_T, loc: locOf(expr) };
|
|
524
667
|
}
|
|
525
668
|
}
|
|
@@ -650,7 +793,16 @@ export function lowerProcessProperty(lowerer, expr) {
|
|
|
650
793
|
return { kind: "libCall", fn: "process.execPath", args: [], type: STRING, loc };
|
|
651
794
|
}
|
|
652
795
|
if (member === "env") {
|
|
653
|
-
|
|
796
|
+
let mapped = lowerer.mapTypeOf(lowerer.typeOf(expr));
|
|
797
|
+
// `(globalThis as { process?: { env?: E } }).process?.env`: the cast
|
|
798
|
+
// types env as optional, but Node always defines it. Snapshot into the
|
|
799
|
+
// record arm; the caller's coercion wraps it into the optional type.
|
|
800
|
+
if (mapped?.kind === "union") {
|
|
801
|
+
const arms = lowerer.unions.get(mapped.unionId)?.arms ?? [];
|
|
802
|
+
const records = arms.filter((arm) => arm.kind === "record");
|
|
803
|
+
if (records.length === 1 && arms.every((arm) => arm.kind === "record" || isUnitType(arm)))
|
|
804
|
+
mapped = records[0];
|
|
805
|
+
}
|
|
654
806
|
if (mapped?.kind === "record") {
|
|
655
807
|
const helper = envSnapshotHelper(lowerer, mapped.shapeId, loc);
|
|
656
808
|
if (helper !== null) {
|
|
@@ -814,6 +966,129 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
814
966
|
}
|
|
815
967
|
return { kind: "libCall", fn: "process.stdinSetRawMode", args: [mode], type: VOID, loc };
|
|
816
968
|
}
|
|
969
|
+
// process.stdin.pause() / resume() / isPaused() / read([size]): the
|
|
970
|
+
// readable side of the stream, Node's paused-mode surface. pause() and
|
|
971
|
+
// resume() set the flowing flag (input arrives buffered for read() and
|
|
972
|
+
// the 'readable' event while paused, and reaches 'data' listeners
|
|
973
|
+
// again on resume); Node answers `this`, and that composition has no
|
|
974
|
+
// lowering, so statement position is required. isPaused() answers the
|
|
975
|
+
// flag — true while a 'readable' listener pins paused mode. read()
|
|
976
|
+
// takes held input with Node's size coercion (truncation, "read all"
|
|
977
|
+
// for NaN, nothing for a non-positive size, ERR_OUT_OF_RANGE above
|
|
978
|
+
// 1 GiB) and answers `Uint8Array | null`. A JavaScript file the checker
|
|
979
|
+
// does not type keeps the stream object's untyped members: its dyn read()
|
|
980
|
+
// answers a value whose own methods (Buffer#toString(encoding)) still
|
|
981
|
+
// lower, which a `Uint8Array | null` union cannot.
|
|
982
|
+
if (!isJsSourceFile(ts.getSourceFileOfNode(call)) &&
|
|
983
|
+
ts.isPropertyAccessExpression(access.expression) &&
|
|
984
|
+
lowerer.stdlibGlobalMember(access.expression, "process") === "stdin") {
|
|
985
|
+
const loc = locOf(call);
|
|
986
|
+
const member = access.name.text;
|
|
987
|
+
const args = call.arguments.nodes;
|
|
988
|
+
if (member === "pause" || member === "resume") {
|
|
989
|
+
if (args.length !== 0) {
|
|
990
|
+
lowerer.noLowering(`stdin.${member} with ${args.length} arguments`, call);
|
|
991
|
+
}
|
|
992
|
+
if (!ts.isExpressionStatement(call.parent) && !ts.isArrowFunction(call.parent)) {
|
|
993
|
+
lowerer.unsupported("SC1090", call, `using the result of stdin.${member}() (the ReadStream chain — call it as its own statement)`);
|
|
994
|
+
}
|
|
995
|
+
return {
|
|
996
|
+
kind: "libCall",
|
|
997
|
+
fn: member === "pause" ? "stdin.pause" : "stdin.resume",
|
|
998
|
+
args: [],
|
|
999
|
+
type: VOID,
|
|
1000
|
+
loc,
|
|
1001
|
+
};
|
|
1002
|
+
}
|
|
1003
|
+
if (member === "isPaused") {
|
|
1004
|
+
if (args.length !== 0) {
|
|
1005
|
+
lowerer.noLowering(`stdin.isPaused with ${args.length} arguments`, call);
|
|
1006
|
+
}
|
|
1007
|
+
return { kind: "libCall", fn: "stdin.isPaused", args: [], type: BOOL, loc };
|
|
1008
|
+
}
|
|
1009
|
+
if (member === "read") {
|
|
1010
|
+
if (args.length > 1) {
|
|
1011
|
+
lowerer.noLowering(`stdin.read with ${args.length} arguments`, call, "the supported form is read([size])");
|
|
1012
|
+
}
|
|
1013
|
+
if (args.some(ts.isSpreadElement)) {
|
|
1014
|
+
lowerer.noLowering("stdin.read with a spread argument", call);
|
|
1015
|
+
}
|
|
1016
|
+
const sizeNode = args[0];
|
|
1017
|
+
// read(undefined) is read(), as in Node: the undefined size reads
|
|
1018
|
+
// everything held rather than coercing through a number. A size
|
|
1019
|
+
// argument written out still evaluates — Node evaluates every
|
|
1020
|
+
// argument before the call, so its side effects and throws are the
|
|
1021
|
+
// read's — it just contributes 0.
|
|
1022
|
+
const all = sizeNode === undefined || (lowerer.typeOf(sizeNode).flags & ts.TypeFlags.Undefined) !== 0;
|
|
1023
|
+
const size = !all
|
|
1024
|
+
? lowerer.lowerExprExpecting(sizeNode, F64)
|
|
1025
|
+
: sizeNode === undefined
|
|
1026
|
+
? numLit(0, loc)
|
|
1027
|
+
: {
|
|
1028
|
+
kind: "seqExpr",
|
|
1029
|
+
stmts: [{ kind: "exprStmt", expr: lowerer.lowerExpr(sizeNode), loc }],
|
|
1030
|
+
result: numLit(0, loc),
|
|
1031
|
+
type: F64,
|
|
1032
|
+
loc,
|
|
1033
|
+
};
|
|
1034
|
+
// The interner's identity is the typeKey-SORTED arm list.
|
|
1035
|
+
const arms = [BYTES_U8, { kind: "nullT" }];
|
|
1036
|
+
arms.sort((a, b) => (typeKey(a) < typeKey(b) ? -1 : 1));
|
|
1037
|
+
const type = { kind: "union", unionId: lowerer.unions.intern(arms) };
|
|
1038
|
+
const read = {
|
|
1039
|
+
kind: "libCall",
|
|
1040
|
+
fn: "stdin.read",
|
|
1041
|
+
args: [boolLit(all, loc), size],
|
|
1042
|
+
type,
|
|
1043
|
+
loc,
|
|
1044
|
+
};
|
|
1045
|
+
return lowerer.maybeNarrow(read, call);
|
|
1046
|
+
}
|
|
1047
|
+
}
|
|
1048
|
+
// process.stdout/stderr.on("drain", fn) and its spellings: Node emits
|
|
1049
|
+
// 'drain' only after a write() returned false, and these writes are
|
|
1050
|
+
// synchronous (they never return false), so the listener can never run.
|
|
1051
|
+
// Registering it is therefore observably a no-op: the receiver and the
|
|
1052
|
+
// listener are evaluated for their effects and nothing is retained.
|
|
1053
|
+
// listenerCount/listeners/eventNames on the process streams stay
|
|
1054
|
+
// refused, so the missing registration cannot be observed.
|
|
1055
|
+
if ([
|
|
1056
|
+
"on",
|
|
1057
|
+
"once",
|
|
1058
|
+
"off",
|
|
1059
|
+
"addListener",
|
|
1060
|
+
"removeListener",
|
|
1061
|
+
"prependListener",
|
|
1062
|
+
"prependOnceListener",
|
|
1063
|
+
].includes(access.name.text) &&
|
|
1064
|
+
ts.isPropertyAccessExpression(access.expression) &&
|
|
1065
|
+
call.arguments.nodes.length === 2 &&
|
|
1066
|
+
!call.arguments.nodes.some(ts.isSpreadElement)) {
|
|
1067
|
+
const stream = lowerer.stdlibGlobalMember(access.expression, "process");
|
|
1068
|
+
const evT = lowerer.typeOf(call.arguments.nodes[0]);
|
|
1069
|
+
if ((stream === "stdout" || stream === "stderr") &&
|
|
1070
|
+
evT.isStringLiteralType() &&
|
|
1071
|
+
evT.value === "drain") {
|
|
1072
|
+
const loc = locOf(call);
|
|
1073
|
+
const parent = call.parent;
|
|
1074
|
+
const discarded = ts.isExpressionStatement(parent) || (ts.isArrowFunction(parent) && parent.body === call);
|
|
1075
|
+
if (!discarded) {
|
|
1076
|
+
lowerer.unsupported("SC1090", call, `using the result of process.${stream}.${access.name.text}("drain", ...) (register it as its own statement)`);
|
|
1077
|
+
}
|
|
1078
|
+
const stmts = [];
|
|
1079
|
+
for (const arg of call.arguments.nodes) {
|
|
1080
|
+
const value = lowerer.lowerExprExpecting(arg, DYN);
|
|
1081
|
+
if (!isSafeToDiscard(value))
|
|
1082
|
+
stmts.push({ kind: "exprStmt", expr: value, loc: value.loc });
|
|
1083
|
+
}
|
|
1084
|
+
// The call's value is discarded (statement position or a void arrow
|
|
1085
|
+
// body), so the lowering is the evaluated arguments alone; a bare
|
|
1086
|
+
// unitLit has no standalone IR value, so the no-op result is the
|
|
1087
|
+
// dynamic undefined a discarded call leaves.
|
|
1088
|
+
const result = dynUndefinedExpr(loc);
|
|
1089
|
+
return stmts.length === 0 ? result : { kind: "seqExpr", stmts, result, type: DYN, loc };
|
|
1090
|
+
}
|
|
1091
|
+
}
|
|
817
1092
|
// process.stdout.on("resize", cb) (and once/off/removeListener/
|
|
818
1093
|
// addListener, stderr too): the terminal resize event, registered on the
|
|
819
1094
|
// runtime's process stream object (a SIGWINCH listener that emits when a
|
|
@@ -891,8 +1166,12 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
891
1166
|
}
|
|
892
1167
|
const evT = lowerer.typeOf(call.arguments.nodes[0]);
|
|
893
1168
|
const event = evT.isStringLiteralType() ? evT.value : null;
|
|
894
|
-
if (event !== "data" &&
|
|
895
|
-
|
|
1169
|
+
if (event !== "data" &&
|
|
1170
|
+
event !== "end" &&
|
|
1171
|
+
event !== "error" &&
|
|
1172
|
+
event !== "readable" &&
|
|
1173
|
+
event !== "keypress") {
|
|
1174
|
+
lowerer.noLowering(`stdin.${access.name.text}(${event === null ? "non-literal event" : `"${event}"`}, ...)`, call.arguments.nodes[0], '"data", "end", "error", "readable", and "keypress" are the supported stdin events (as literals)');
|
|
896
1175
|
}
|
|
897
1176
|
if (!resultIsDiscarded(call)) {
|
|
898
1177
|
lowerer.unsupported("SC1090", call, "chaining stdin listener registration (the result is void here — register each listener as its own statement)");
|
|
@@ -920,11 +1199,17 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
920
1199
|
}
|
|
921
1200
|
return { kind: "libCall", fn: "stdin.onData", args: [cb, onceArg], type: VOID, loc };
|
|
922
1201
|
}
|
|
923
|
-
if (event === "end") {
|
|
1202
|
+
if (event === "end" || event === "readable") {
|
|
924
1203
|
if (param !== undefined) {
|
|
925
|
-
lowerer.unsupported("SC1090", call.arguments.nodes[1],
|
|
1204
|
+
lowerer.unsupported("SC1090", call.arguments.nodes[1], `${event} listeners with parameters (use ())`);
|
|
926
1205
|
}
|
|
927
|
-
return {
|
|
1206
|
+
return {
|
|
1207
|
+
kind: "libCall",
|
|
1208
|
+
fn: event === "end" ? "stdin.onEnd" : "stdin.onReadable",
|
|
1209
|
+
args: [cb, onceArg],
|
|
1210
|
+
type: VOID,
|
|
1211
|
+
loc,
|
|
1212
|
+
};
|
|
928
1213
|
}
|
|
929
1214
|
if (param !== undefined && !(param.kind === "object" && param.className === "%Error")) {
|
|
930
1215
|
lowerer.unsupported("SC1090", call.arguments.nodes[1], `error listeners whose parameter is not 'Error' (got '${lowerer.fmt(param)}')`);
|
|
@@ -936,6 +1221,33 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
936
1221
|
if (stream === "stdout" || stream === "stderr") {
|
|
937
1222
|
const loc = locOf(call);
|
|
938
1223
|
const args = call.arguments.nodes;
|
|
1224
|
+
// In a program that replaces a process stream's write, a write call is
|
|
1225
|
+
// what Node makes it: a call of the stream's CURRENT write property,
|
|
1226
|
+
// with the arguments as passed (the replacement sees byte chunks,
|
|
1227
|
+
// encodings and callbacks). The native method behind the slot is the
|
|
1228
|
+
// same synchronous write, so an unpatched stream behaves as before.
|
|
1229
|
+
if (programPatchesStdio(lowerer) && !args.some(ts.isSpreadElement)) {
|
|
1230
|
+
const handle = {
|
|
1231
|
+
kind: "libCall",
|
|
1232
|
+
fn: "process.stdioSlot",
|
|
1233
|
+
args: [numLit(stream === "stdout" ? 1 : 2, loc)],
|
|
1234
|
+
type: DYN,
|
|
1235
|
+
loc,
|
|
1236
|
+
};
|
|
1237
|
+
const invoke = {
|
|
1238
|
+
kind: "dynInvoke",
|
|
1239
|
+
recv: handle,
|
|
1240
|
+
method: "write",
|
|
1241
|
+
calleeName: ts.getTextOfNode(access),
|
|
1242
|
+
args: args.map((arg) => lowerer.lowerExprExpecting(arg, DYN)),
|
|
1243
|
+
type: DYN,
|
|
1244
|
+
loc,
|
|
1245
|
+
};
|
|
1246
|
+
// The declared boolean: a replacement returning something else
|
|
1247
|
+
// throws at a use that needs the boolean (types do not lie); a
|
|
1248
|
+
// discarded result is not converted.
|
|
1249
|
+
return resultIsDiscarded(call) ? invoke : lowerer.coerceToExpected(invoke, BOOL);
|
|
1250
|
+
}
|
|
939
1251
|
if (args.length < 1 || args.length > 3 || args.some(ts.isSpreadElement)) {
|
|
940
1252
|
lowerer.noLowering(`process.${stream}.write with ${args.length} arguments`, call, "the supported forms are write(data[, encoding][, callback]) with a static BufferEncoding and completion callback");
|
|
941
1253
|
}
|
|
@@ -1020,6 +1332,22 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
1020
1332
|
if (data.type.kind === "dyn" && isJsSourceFile(ts.getSourceFileOfNode(call))) {
|
|
1021
1333
|
data = { kind: "dynCheck", value: data, type: STRING, loc };
|
|
1022
1334
|
}
|
|
1335
|
+
// A chunk known only at run time (`any`, or a string | Uint8Array
|
|
1336
|
+
// union): the runtime dispatches on the value — a string or a
|
|
1337
|
+
// Uint8Array/Buffer writes, null throws ERR_STREAM_NULL_VALUES, any
|
|
1338
|
+
// other value throws ERR_INVALID_ARG_TYPE, as Node's Writable.write
|
|
1339
|
+
// does before writing anything. Only the one-argument form.
|
|
1340
|
+
if (args.length === 1 &&
|
|
1341
|
+
(data.type.kind === "dyn" || data.type.kind === "union") &&
|
|
1342
|
+
(data.type.kind === "dyn" || lowerer.dynConvertible(data.type))) {
|
|
1343
|
+
return {
|
|
1344
|
+
kind: "libCall",
|
|
1345
|
+
fn: "process.stdioWriteDyn",
|
|
1346
|
+
args: [numLit(stream === "stdout" ? 1 : 2, loc), lowerer.coerceToExpected(data, DYN)],
|
|
1347
|
+
type: BOOL,
|
|
1348
|
+
loc,
|
|
1349
|
+
};
|
|
1350
|
+
}
|
|
1023
1351
|
const isBytes = data.type.kind === "bytes" && data.type.elem === "u8";
|
|
1024
1352
|
if (!isBytes && data.type.kind !== "string") {
|
|
1025
1353
|
lowerer.noLowering(`process.${stream}.write of non-string data`, args[0], "strings and Buffer/Uint8Array values write; narrow unions first");
|
|
@@ -1141,13 +1469,25 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
1141
1469
|
// the listener to a const so both sites see the same value), and
|
|
1142
1470
|
// `removeListener` IS `off` — Node aliases them.
|
|
1143
1471
|
const isOff = member === "off" || member === "removeListener";
|
|
1144
|
-
|
|
1472
|
+
// process.prependListener(event, cb): Node's front-of-list registration.
|
|
1473
|
+
// The signal, 'exit', and 'uncaughtException'/'uncaughtExceptionMonitor'
|
|
1474
|
+
// registries have a prepend entry; every other family registers by
|
|
1475
|
+
// appending only, so it refuses rather than reordering silently.
|
|
1476
|
+
// prependOnceListener has no runtime entry at all.
|
|
1477
|
+
const isPrepend = member === "prependListener";
|
|
1478
|
+
if (member === "prependOnceListener") {
|
|
1479
|
+
lowerer.noLowering("process.prependOnceListener", access, "use prependListener or once (prependOnceListener has no lowering)");
|
|
1480
|
+
}
|
|
1481
|
+
if (member === "on" || member === "once" || isOff || isPrepend) {
|
|
1145
1482
|
if (call.arguments.nodes.length !== 2) {
|
|
1146
1483
|
lowerer.noLowering(`process.${member} with ${call.arguments.nodes.length} arguments`, call);
|
|
1147
1484
|
}
|
|
1148
1485
|
const evT = lowerer.typeOf(call.arguments.nodes[0]);
|
|
1149
1486
|
const event = evT.isStringLiteralType() ? evT.value : null;
|
|
1150
1487
|
if ((event === "message" || event === "disconnect") && !isOff) {
|
|
1488
|
+
if (isPrepend) {
|
|
1489
|
+
lowerer.noLowering(`process.prependListener("${event}", ...)`, call, "prependListener is supported for signals, 'exit', and 'uncaughtException' (register these families with on/once)");
|
|
1490
|
+
}
|
|
1151
1491
|
if (!resultIsDiscarded(call)) {
|
|
1152
1492
|
lowerer.unsupported("SC1090", call, "chaining process IPC listener registration (register each listener as its own statement)");
|
|
1153
1493
|
}
|
|
@@ -1170,8 +1510,16 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
1170
1510
|
const monitor = boolLit(event === "uncaughtExceptionMonitor", loc);
|
|
1171
1511
|
return {
|
|
1172
1512
|
kind: "libCall",
|
|
1173
|
-
fn: isOff
|
|
1174
|
-
|
|
1513
|
+
fn: isOff
|
|
1514
|
+
? "process.offUncaughtException"
|
|
1515
|
+
: isPrepend
|
|
1516
|
+
? "process.prependUncaughtException"
|
|
1517
|
+
: "process.onUncaughtException",
|
|
1518
|
+
args: isOff
|
|
1519
|
+
? [cb, monitor]
|
|
1520
|
+
: isPrepend
|
|
1521
|
+
? [cb, monitor]
|
|
1522
|
+
: [cb, boolLit(member === "once", loc), monitor],
|
|
1175
1523
|
type: VOID,
|
|
1176
1524
|
loc,
|
|
1177
1525
|
};
|
|
@@ -1185,6 +1533,9 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
1185
1533
|
// a handler attached after delivery fires it once, synchronously
|
|
1186
1534
|
// with the promise.
|
|
1187
1535
|
if (event === "unhandledRejection" || event === "rejectionHandled") {
|
|
1536
|
+
if (isPrepend) {
|
|
1537
|
+
lowerer.noLowering(`process.prependListener("${event}", ...)`, call, "prependListener is supported for signals, 'exit', and 'uncaughtException' (register these families with on/once)");
|
|
1538
|
+
}
|
|
1188
1539
|
if (!resultIsDiscarded(call)) {
|
|
1189
1540
|
lowerer.unsupported("SC1090", call, "chaining process listener registration (the result is void here — register each listener as its own statement)");
|
|
1190
1541
|
}
|
|
@@ -1203,6 +1554,9 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
1203
1554
|
// util.deprecate dispatch on the next tick. off/removeListener remove
|
|
1204
1555
|
// by closure identity.
|
|
1205
1556
|
if (event === "warning" && (member === "on" || isOff)) {
|
|
1557
|
+
if (isPrepend) {
|
|
1558
|
+
lowerer.noLowering('process.prependListener("warning", ...)', call, "prependListener is supported for signals, 'exit', and 'uncaughtException' (register this family with on)");
|
|
1559
|
+
}
|
|
1206
1560
|
if (!resultIsDiscarded(call)) {
|
|
1207
1561
|
lowerer.unsupported("SC1090", call, "chaining process listener registration (the result is void here — register each listener as its own statement)");
|
|
1208
1562
|
}
|
|
@@ -1229,8 +1583,12 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
1229
1583
|
const cb = lowerDiagnosticsSubscriber(lowerer, call.arguments.nodes[1]);
|
|
1230
1584
|
return {
|
|
1231
1585
|
kind: "libCall",
|
|
1232
|
-
fn: isOff ? "process.offSignal" : "process.onSignal",
|
|
1233
|
-
args: isOff
|
|
1586
|
+
fn: isOff ? "process.offSignal" : isPrepend ? "process.prependSignal" : "process.onSignal",
|
|
1587
|
+
args: isOff
|
|
1588
|
+
? [signal, cb]
|
|
1589
|
+
: isPrepend
|
|
1590
|
+
? [signal, cb]
|
|
1591
|
+
: [signal, cb, boolLit(member === "once", loc)],
|
|
1234
1592
|
type: VOID,
|
|
1235
1593
|
loc,
|
|
1236
1594
|
};
|
|
@@ -1282,6 +1640,9 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
1282
1640
|
if (isOff) {
|
|
1283
1641
|
return { kind: "libCall", fn: "process.offExit", args: [cb], type: VOID, loc };
|
|
1284
1642
|
}
|
|
1643
|
+
if (isPrepend) {
|
|
1644
|
+
return { kind: "libCall", fn: "process.prependExit", args: [cb], type: VOID, loc };
|
|
1645
|
+
}
|
|
1285
1646
|
return { kind: "libCall", fn: "process.onExit", args: [cb, onceArg], type: VOID, loc };
|
|
1286
1647
|
}
|
|
1287
1648
|
// process.emitWarning(...): the argument vector crosses as ONE dyn
|