@scriptc/compiler 0.3.6 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ambient/scriptc-node-fallback.d.ts +682 -50
- package/ambient/scriptc.d.ts +134 -0
- package/dist/backend/cycle-analysis.d.ts +1 -1
- package/dist/backend/cycle-analysis.js +1 -0
- package/dist/backend/cycle-analysis.js.map +1 -1
- package/dist/backend/cycle-analysis.test.js +13 -1
- package/dist/backend/cycle-analysis.test.js.map +1 -1
- package/dist/backend/cycle-mutability.js +16 -5
- package/dist/backend/cycle-mutability.js.map +1 -1
- package/dist/backend/executable-features.js +13 -0
- package/dist/backend/executable-features.js.map +1 -1
- package/dist/backend/immutability.test.js +1 -1
- package/dist/backend/library-pack.js +6 -0
- package/dist/backend/library-pack.js.map +1 -1
- package/dist/backend/llvm/alloc.d.ts +41 -4
- package/dist/backend/llvm/alloc.js +138 -7
- package/dist/backend/llvm/alloc.js.map +1 -1
- package/dist/backend/llvm/alloc.test.js +30 -1
- package/dist/backend/llvm/alloc.test.js.map +1 -1
- package/dist/backend/llvm/appended-array-literals.test.js +1 -1
- package/dist/backend/llvm/array-search.test.js +1 -1
- package/dist/backend/llvm/blocks.d.ts +8 -0
- package/dist/backend/llvm/blocks.js +43 -1
- package/dist/backend/llvm/blocks.js.map +1 -1
- package/dist/backend/llvm/blocks.test.js +22 -1
- package/dist/backend/llvm/blocks.test.js.map +1 -1
- package/dist/backend/llvm/byte-numbers.js +15 -5
- package/dist/backend/llvm/byte-numbers.js.map +1 -1
- package/dist/backend/llvm/bytes-alias.d.ts +14 -0
- package/dist/backend/llvm/bytes-alias.js +20 -0
- package/dist/backend/llvm/bytes-alias.js.map +1 -0
- package/dist/backend/llvm/bytes-loop-versions.d.ts +86 -0
- package/dist/backend/llvm/bytes-loop-versions.js +506 -0
- package/dist/backend/llvm/bytes-loop-versions.js.map +1 -0
- package/dist/backend/llvm/bytes-loop-versions.test.d.ts +1 -0
- package/dist/backend/llvm/bytes-loop-versions.test.js +244 -0
- package/dist/backend/llvm/bytes-loop-versions.test.js.map +1 -0
- package/dist/backend/llvm/call-lifetimes.js +50 -1
- package/dist/backend/llvm/call-lifetimes.js.map +1 -1
- package/dist/backend/llvm/call-lifetimes.test.js +34 -0
- package/dist/backend/llvm/call-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/checked-narrows.test.js +1 -1
- package/dist/backend/llvm/checked-value-lifetimes.js +4 -1
- package/dist/backend/llvm/checked-value-lifetimes.js.map +1 -1
- package/dist/backend/llvm/classes.d.ts +11 -0
- package/dist/backend/llvm/classes.js +71 -14
- package/dist/backend/llvm/classes.js.map +1 -1
- package/dist/backend/llvm/classes.test.js +58 -8
- package/dist/backend/llvm/classes.test.js.map +1 -1
- package/dist/backend/llvm/common.js +1 -0
- package/dist/backend/llvm/common.js.map +1 -1
- package/dist/backend/llvm/constant-callbacks.d.ts +5 -1
- package/dist/backend/llvm/constant-callbacks.js +55 -12
- package/dist/backend/llvm/constant-callbacks.js.map +1 -1
- package/dist/backend/llvm/constant-callbacks.test.js +88 -1
- package/dist/backend/llvm/constant-callbacks.test.js.map +1 -1
- package/dist/backend/llvm/counted-loops.d.ts +4 -0
- package/dist/backend/llvm/counted-loops.js +37 -0
- package/dist/backend/llvm/counted-loops.js.map +1 -1
- package/dist/backend/llvm/dense-array-access.d.ts +12 -3
- package/dist/backend/llvm/dense-array-access.js +72 -14
- package/dist/backend/llvm/dense-array-access.js.map +1 -1
- package/dist/backend/llvm/dense-array-access.test.js +59 -3
- package/dist/backend/llvm/dense-array-access.test.js.map +1 -1
- package/dist/backend/llvm/dense-array-loops.d.ts +51 -0
- package/dist/backend/llvm/dense-array-loops.js +162 -0
- package/dist/backend/llvm/dense-array-loops.js.map +1 -0
- package/dist/backend/llvm/dense-array-loops.test.d.ts +1 -0
- package/dist/backend/llvm/dense-array-loops.test.js +128 -0
- package/dist/backend/llvm/dense-array-loops.test.js.map +1 -0
- package/dist/backend/llvm/dyn-handle-tags.test.d.ts +1 -0
- package/dist/backend/llvm/dyn-handle-tags.test.js +38 -0
- package/dist/backend/llvm/dyn-handle-tags.test.js.map +1 -0
- package/dist/backend/llvm/dyn.d.ts +28 -4
- package/dist/backend/llvm/dyn.js +293 -178
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emit-function.d.ts +64 -0
- package/dist/backend/llvm/emit-function.js +1190 -0
- package/dist/backend/llvm/emit-function.js.map +1 -0
- package/dist/backend/llvm/emit-module.d.ts +24 -0
- package/dist/backend/llvm/emit-module.js +1535 -0
- package/dist/backend/llvm/emit-module.js.map +1 -0
- package/dist/backend/llvm/emit-statements.d.ts +58 -0
- package/dist/backend/llvm/emit-statements.js +1964 -0
- package/dist/backend/llvm/emit-statements.js.map +1 -0
- package/dist/backend/llvm/emitter.d.ts +547 -283
- package/dist/backend/llvm/emitter.js +689 -4643
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/emitter.test.js +57 -3
- package/dist/backend/llvm/emitter.test.js.map +1 -1
- package/dist/backend/llvm/expr-async.js +73 -46
- package/dist/backend/llvm/expr-async.js.map +1 -1
- package/dist/backend/llvm/expr-async.test.js +1 -1
- package/dist/backend/llvm/expr-bytes.d.ts +2 -0
- package/dist/backend/llvm/expr-bytes.js +76 -29
- package/dist/backend/llvm/expr-bytes.js.map +1 -1
- package/dist/backend/llvm/expr-callbacks.d.ts +6 -2
- package/dist/backend/llvm/expr-callbacks.js +48 -11
- package/dist/backend/llvm/expr-callbacks.js.map +1 -1
- package/dist/backend/llvm/expr-calls.d.ts +1 -1
- package/dist/backend/llvm/expr-calls.js +71 -53
- package/dist/backend/llvm/expr-calls.js.map +1 -1
- package/dist/backend/llvm/expr-calls.test.js +1 -1
- package/dist/backend/llvm/expr-containers.js +39 -15
- package/dist/backend/llvm/expr-containers.js.map +1 -1
- package/dist/backend/llvm/expr-control.js +16 -16
- package/dist/backend/llvm/expr-control.js.map +1 -1
- package/dist/backend/llvm/expr-dynamic.d.ts +3 -0
- package/dist/backend/llvm/expr-dynamic.js +67 -62
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.js +121 -25
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.test.js +2 -2
- package/dist/backend/llvm/expr-records.d.ts +1 -1
- package/dist/backend/llvm/expr-records.js +32 -11
- package/dist/backend/llvm/expr-records.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.js +54 -12
- package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.test.js +2 -2
- package/dist/backend/llvm/expr-stream-callbacks.js +22 -1
- package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
- package/dist/backend/llvm/int32-abi.test.js +2 -2
- package/dist/backend/llvm/integer-clones.test.js +3 -3
- package/dist/backend/llvm/integer-remainder.d.ts +34 -13
- package/dist/backend/llvm/integer-remainder.js +156 -22
- package/dist/backend/llvm/integer-remainder.js.map +1 -1
- package/dist/backend/llvm/intern-tables.test.js +1 -1
- package/dist/backend/llvm/jsval-encoding.d.ts +21 -0
- package/dist/backend/llvm/jsval-encoding.js +20 -0
- package/dist/backend/llvm/jsval-encoding.js.map +1 -0
- package/dist/backend/llvm/jsval.d.ts +12 -0
- package/dist/backend/llvm/jsval.js +488 -0
- package/dist/backend/llvm/jsval.js.map +1 -0
- package/dist/backend/llvm/lazy-captures.d.ts +12 -2
- package/dist/backend/llvm/lazy-captures.js +39 -17
- package/dist/backend/llvm/lazy-captures.js.map +1 -1
- package/dist/backend/llvm/lib-abi.js +1 -1
- package/dist/backend/llvm/lib-abi.js.map +1 -1
- package/dist/backend/llvm/lib-connect.js +1 -1
- package/dist/backend/llvm/lib-connect.js.map +1 -1
- package/dist/backend/llvm/lib-datagram.js +14 -8
- package/dist/backend/llvm/lib-datagram.js.map +1 -1
- package/dist/backend/llvm/lib-dispatch.js +189 -23
- package/dist/backend/llvm/lib-dispatch.js.map +1 -1
- package/dist/backend/llvm/lib-filesystem.js +42 -13
- package/dist/backend/llvm/lib-filesystem.js.map +1 -1
- package/dist/backend/llvm/lib-http2.js +3 -3
- package/dist/backend/llvm/lib-http2.js.map +1 -1
- package/dist/backend/llvm/lib-lookup.js +2 -2
- package/dist/backend/llvm/lib-lookup.js.map +1 -1
- package/dist/backend/llvm/lib-network.js +56 -22
- package/dist/backend/llvm/lib-network.js.map +1 -1
- package/dist/backend/llvm/lib-process.js +90 -50
- package/dist/backend/llvm/lib-process.js.map +1 -1
- package/dist/backend/llvm/lib-shared.d.ts +12 -0
- package/dist/backend/llvm/lib-shared.js +187 -6
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/lib-stream.js +46 -16
- package/dist/backend/llvm/lib-stream.js.map +1 -1
- package/dist/backend/llvm/lib-test.js +43 -7
- package/dist/backend/llvm/lib-test.js.map +1 -1
- package/dist/backend/llvm/lib-tls.js +4 -9
- package/dist/backend/llvm/lib-tls.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.js +2 -2
- package/dist/backend/llvm/local-array-reads.test.js +1 -1
- package/dist/backend/llvm/local-extents.d.ts +19 -0
- package/dist/backend/llvm/local-extents.js +169 -0
- package/dist/backend/llvm/local-extents.js.map +1 -0
- package/dist/backend/llvm/local-extents.test.d.ts +1 -0
- package/dist/backend/llvm/local-extents.test.js +92 -0
- package/dist/backend/llvm/local-extents.test.js.map +1 -0
- package/dist/backend/llvm/local-union-storage.js +7 -7
- package/dist/backend/llvm/local-union-storage.js.map +1 -1
- package/dist/backend/llvm/local-union-storage.test.js +2 -2
- package/dist/backend/llvm/map-entry-fusion.test.js +1 -1
- package/dist/backend/llvm/map-number-lookup.js +2 -2
- package/dist/backend/llvm/map-number-lookup.test.js +2 -2
- package/dist/backend/llvm/map-read-lifetimes.test.js +2 -2
- package/dist/backend/llvm/narrow-guards.d.ts +38 -0
- package/dist/backend/llvm/narrow-guards.js +151 -0
- package/dist/backend/llvm/narrow-guards.js.map +1 -0
- package/dist/backend/llvm/nullable-unions.d.ts +64 -6
- package/dist/backend/llvm/nullable-unions.js +103 -6
- package/dist/backend/llvm/nullable-unions.js.map +1 -1
- package/dist/backend/llvm/nullable-unions.test.d.ts +1 -0
- package/dist/backend/llvm/nullable-unions.test.js +65 -0
- package/dist/backend/llvm/nullable-unions.test.js.map +1 -0
- package/dist/backend/llvm/publish.d.ts +4 -0
- package/dist/backend/llvm/publish.js +14 -2
- package/dist/backend/llvm/publish.js.map +1 -1
- package/dist/backend/llvm/publish.test.js +1 -1
- package/dist/backend/llvm/receivers.d.ts +31 -0
- package/dist/backend/llvm/receivers.js +395 -0
- package/dist/backend/llvm/receivers.js.map +1 -0
- package/dist/backend/llvm/record-results.d.ts +12 -1
- package/dist/backend/llvm/record-results.js +64 -4
- package/dist/backend/llvm/record-results.js.map +1 -1
- package/dist/backend/llvm/reference-effects.js +9 -0
- package/dist/backend/llvm/reference-effects.js.map +1 -1
- package/dist/backend/llvm/reference-writes.d.ts +4 -0
- package/dist/backend/llvm/reference-writes.js +142 -6
- package/dist/backend/llvm/reference-writes.js.map +1 -1
- package/dist/backend/llvm/reference-writes.test.d.ts +1 -0
- package/dist/backend/llvm/reference-writes.test.js +88 -0
- package/dist/backend/llvm/reference-writes.test.js.map +1 -0
- package/dist/backend/llvm/regex-matchers.d.ts +8 -0
- package/dist/backend/llvm/regex-matchers.js +33 -0
- package/dist/backend/llvm/regex-matchers.js.map +1 -1
- package/dist/backend/llvm/regex-matchers.test.js +23 -1
- package/dist/backend/llvm/regex-matchers.test.js.map +1 -1
- package/dist/backend/llvm/regions.d.ts +1 -1
- package/dist/backend/llvm/regions.js +9 -6
- package/dist/backend/llvm/regions.js.map +1 -1
- package/dist/backend/llvm/regions.test.js +1 -1
- package/dist/backend/llvm/shapes.d.ts +66 -43
- package/dist/backend/llvm/shapes.js +280 -21
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/llvm/shapes.test.js +37 -3
- package/dist/backend/llvm/shapes.test.js.map +1 -1
- package/dist/backend/llvm/split-loops.js +2 -2
- package/dist/backend/llvm/split-loops.js.map +1 -1
- package/dist/backend/llvm/stack-objects.d.ts +26 -6
- package/dist/backend/llvm/stack-objects.js +133 -10
- package/dist/backend/llvm/stack-objects.js.map +1 -1
- package/dist/backend/llvm/stack-objects.test.js +55 -1
- package/dist/backend/llvm/stack-objects.test.js.map +1 -1
- package/dist/backend/llvm/stack-unions.test.js +1 -1
- package/dist/backend/llvm/string-construction.test.js +1 -1
- package/dist/backend/llvm/string-lifetimes.test.js +15 -14
- package/dist/backend/llvm/string-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/string-slices.d.ts +25 -0
- package/dist/backend/llvm/string-slices.js +207 -1
- package/dist/backend/llvm/string-slices.js.map +1 -1
- package/dist/backend/llvm/string-slices.test.js +139 -2
- package/dist/backend/llvm/string-slices.test.js.map +1 -1
- package/dist/backend/llvm/switch-dispatch.test.js +2 -2
- package/dist/backend/llvm/thread-slots.d.ts +5 -0
- package/dist/backend/llvm/thread-slots.js +142 -0
- package/dist/backend/llvm/thread-slots.js.map +1 -0
- package/dist/backend/llvm/thread-slots.test.d.ts +1 -0
- package/dist/backend/llvm/thread-slots.test.js +110 -0
- package/dist/backend/llvm/thread-slots.test.js.map +1 -0
- package/dist/backend/llvm/union-repr.d.ts +7 -7
- package/dist/backend/llvm/union-repr.js +18 -2
- package/dist/backend/llvm/union-repr.js.map +1 -1
- package/dist/backend/llvm/union-retype.test.js +17 -3
- package/dist/backend/llvm/union-retype.test.js.map +1 -1
- package/dist/backend/llvm/walkers.d.ts +2 -2
- package/dist/backend/llvm/walkers.js +51 -26
- package/dist/backend/llvm/walkers.js.map +1 -1
- package/dist/backend/llvm/wasm-modules.d.ts +16 -0
- package/dist/backend/llvm/wasm-modules.js +66 -0
- package/dist/backend/llvm/wasm-modules.js.map +1 -0
- package/dist/backend/llvm/wrapping-sums.d.ts +7 -0
- package/dist/backend/llvm/wrapping-sums.js +11 -3
- package/dist/backend/llvm/wrapping-sums.js.map +1 -1
- package/dist/backend/mangle.d.ts +7 -0
- package/dist/backend/mangle.js +11 -0
- package/dist/backend/mangle.js.map +1 -1
- package/dist/backend/may-throw.d.ts +3 -0
- package/dist/backend/may-throw.js +4 -2
- package/dist/backend/may-throw.js.map +1 -1
- package/dist/backend/may-throw.test.js +1 -1
- package/dist/backend/native/contracts.d.ts +37 -0
- package/dist/backend/native/executable.js +192 -137
- package/dist/backend/native/executable.js.map +1 -1
- package/dist/backend/native/library.js +1 -0
- package/dist/backend/native/library.js.map +1 -1
- package/dist/backend/native/runtime-inputs.d.ts +1 -1
- package/dist/backend/native/runtime-inputs.js +1 -0
- package/dist/backend/native/runtime-inputs.js.map +1 -1
- package/dist/backend/native-link-info-core.d.ts +30 -0
- package/dist/backend/native-link-info-core.js.map +1 -1
- package/dist/backend/publication.test.js +1 -1
- package/dist/backend/runtime-pack-core.d.ts +9 -1
- package/dist/backend/runtime-pack-core.js +10 -1
- package/dist/backend/runtime-pack-core.js.map +1 -1
- package/dist/backend/runtime-pack-native.js +1 -1
- package/dist/backend/runtime-pack-native.js.map +1 -1
- package/dist/backend/runtime-pack-native.test.d.ts +1 -0
- package/dist/backend/runtime-pack-native.test.js +31 -0
- package/dist/backend/runtime-pack-native.test.js.map +1 -0
- package/dist/backend/runtime-pack-targets.test.js +5 -0
- package/dist/backend/runtime-pack-targets.test.js.map +1 -1
- package/dist/backend/runtime-pack.test.js +5 -0
- package/dist/backend/runtime-pack.test.js.map +1 -1
- package/dist/backend/stack-observations.d.ts +22 -0
- package/dist/backend/stack-observations.js +382 -0
- package/dist/backend/stack-observations.js.map +1 -0
- package/dist/backend/stack-observations.test.d.ts +1 -0
- package/dist/backend/stack-observations.test.js +233 -0
- package/dist/backend/stack-observations.test.js.map +1 -0
- package/dist/backend/target-diagnostics.js +8 -0
- package/dist/backend/target-diagnostics.js.map +1 -1
- package/dist/backend/target-diagnostics.test.js +1 -1
- package/dist/backend/warm-cache.js +5 -0
- package/dist/backend/warm-cache.js.map +1 -1
- package/dist/backend/young-nursery.d.ts +7 -0
- package/dist/backend/young-nursery.js +10 -0
- package/dist/backend/young-nursery.js.map +1 -0
- package/dist/cli/command.js +44 -4
- package/dist/cli/command.js.map +1 -1
- package/dist/cli/usage.d.ts +11 -1
- package/dist/cli/usage.js +20 -1
- package/dist/cli/usage.js.map +1 -1
- package/dist/compat/fetch-profile.js +10 -1
- package/dist/compat/fetch-profile.js.map +1 -1
- package/dist/compile-types.d.ts +13 -0
- package/dist/contracts/check.js +24 -6
- package/dist/contracts/check.js.map +1 -1
- package/dist/contracts/int32-elements.d.ts +115 -0
- package/dist/contracts/int32-elements.js +1179 -0
- package/dist/contracts/int32-elements.js.map +1 -0
- package/dist/coverage/report.d.ts +16 -0
- package/dist/coverage/report.js +182 -1
- package/dist/coverage/report.js.map +1 -1
- package/dist/coverage/surface-manifest.js +16 -3
- package/dist/coverage/surface-manifest.js.map +1 -1
- package/dist/coverage/verdict-cache.d.ts +2 -0
- package/dist/coverage/verdict-cache.js +12 -0
- package/dist/coverage/verdict-cache.js.map +1 -1
- package/dist/coverage/verdict-cache.test.js +2 -1
- package/dist/coverage/verdict-cache.test.js.map +1 -1
- package/dist/diagnostics/diagnostic.d.ts +10 -6
- package/dist/diagnostics/diagnostic.js +29 -21
- package/dist/diagnostics/diagnostic.js.map +1 -1
- package/dist/diagnostics/envelope.d.ts +39 -2
- package/dist/diagnostics/envelope.js.map +1 -1
- package/dist/diagnostics/render.d.ts +7 -0
- package/dist/diagnostics/render.js +50 -13
- package/dist/diagnostics/render.js.map +1 -1
- package/dist/diagnostics/render.test.d.ts +1 -0
- package/dist/diagnostics/render.test.js +49 -0
- package/dist/diagnostics/render.test.js.map +1 -0
- package/dist/executable/executable-cache.d.ts +17 -0
- package/dist/executable/executable-cache.js +13 -1
- package/dist/executable/executable-cache.js.map +1 -1
- package/dist/executable/executable-cache.test.js +7 -1
- package/dist/executable/executable-cache.test.js.map +1 -1
- package/dist/executable/prepare.js +2 -1
- package/dist/executable/prepare.js.map +1 -1
- package/dist/frontend/analysis.js +6 -1
- package/dist/frontend/analysis.js.map +1 -1
- package/dist/frontend/builtin-modules.d.ts +16 -2
- package/dist/frontend/builtin-modules.js +40 -7
- package/dist/frontend/builtin-modules.js.map +1 -1
- package/dist/frontend/cjs-syntax.js +52 -51
- package/dist/frontend/cjs-syntax.js.map +1 -1
- package/dist/frontend/contract-types.d.ts +3 -0
- package/dist/frontend/contract-types.js +36 -7
- package/dist/frontend/contract-types.js.map +1 -1
- package/dist/frontend/experimental-import.d.ts +5 -1
- package/dist/frontend/experimental-import.js +26 -7
- package/dist/frontend/experimental-import.js.map +1 -1
- package/dist/frontend/fork-target.js +20 -22
- package/dist/frontend/fork-target.js.map +1 -1
- package/dist/frontend/fork-target.test.js +2 -1
- package/dist/frontend/fork-target.test.js.map +1 -1
- package/dist/frontend/function-completion.js +6 -6
- package/dist/frontend/function-completion.js.map +1 -1
- package/dist/frontend/helper-tokens.js +15 -3
- package/dist/frontend/helper-tokens.js.map +1 -1
- package/dist/frontend/helper-tokens.test.js +7 -1
- package/dist/frontend/helper-tokens.test.js.map +1 -1
- package/dist/frontend/inferred-js-diagnostics.js +14 -17
- package/dist/frontend/inferred-js-diagnostics.js.map +1 -1
- package/dist/frontend/input-tracker.d.ts +3 -0
- package/dist/frontend/input-tracker.js +32 -3
- package/dist/frontend/input-tracker.js.map +1 -1
- package/dist/frontend/lib-contract.js +36 -32
- package/dist/frontend/lib-contract.js.map +1 -1
- package/dist/frontend/lib-exports.js +3 -3
- package/dist/frontend/lib-exports.js.map +1 -1
- package/dist/frontend/lowering/array-values.d.ts +8 -3
- package/dist/frontend/lowering/array-values.js +60 -11
- package/dist/frontend/lowering/array-values.js.map +1 -1
- package/dist/frontend/lowering/assert-instances.js +4 -4
- package/dist/frontend/lowering/assert-instances.js.map +1 -1
- package/dist/frontend/lowering/assertion-identity.d.ts +12 -0
- package/dist/frontend/lowering/assertion-identity.js +70 -0
- package/dist/frontend/lowering/assertion-identity.js.map +1 -0
- package/dist/frontend/lowering/assertion-members.d.ts +28 -0
- package/dist/frontend/lowering/assertion-members.js +185 -0
- package/dist/frontend/lowering/assertion-members.js.map +1 -0
- package/dist/frontend/lowering/binding-analysis.js +27 -20
- package/dist/frontend/lowering/binding-analysis.js.map +1 -1
- package/dist/frontend/lowering/builtin-calls.js +63 -5
- package/dist/frontend/lowering/builtin-calls.js.map +1 -1
- package/dist/frontend/lowering/builtin-function-fences.d.ts +14 -0
- package/dist/frontend/lowering/builtin-function-fences.js +42 -0
- package/dist/frontend/lowering/builtin-function-fences.js.map +1 -0
- package/dist/frontend/lowering/builtins/arguments.js +1 -1
- package/dist/frontend/lowering/builtins/arguments.js.map +1 -1
- package/dist/frontend/lowering/builtins/async-context.js +53 -52
- package/dist/frontend/lowering/builtins/async-context.js.map +1 -1
- package/dist/frontend/lowering/builtins/atomics.js +6 -6
- package/dist/frontend/lowering/builtins/atomics.js.map +1 -1
- package/dist/frontend/lowering/builtins/blob.js +8 -6
- package/dist/frontend/lowering/builtins/blob.js.map +1 -1
- package/dist/frontend/lowering/builtins/builtin-class-dyn.d.ts +23 -0
- package/dist/frontend/lowering/builtins/builtin-class-dyn.js +156 -0
- package/dist/frontend/lowering/builtins/builtin-class-dyn.js.map +1 -0
- package/dist/frontend/lowering/builtins/callable-aliases.js +16 -5
- package/dist/frontend/lowering/builtins/callable-aliases.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-async.js +7 -7
- package/dist/frontend/lowering/builtins/child-process-async.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-methods.d.ts +6 -4
- package/dist/frontend/lowering/builtins/child-process-methods.js +310 -57
- package/dist/frontend/lowering/builtins/child-process-methods.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-sync.js +16 -10
- package/dist/frontend/lowering/builtins/child-process-sync.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process.d.ts +6 -4
- package/dist/frontend/lowering/builtins/child-process.js +85 -61
- package/dist/frontend/lowering/builtins/child-process.js.map +1 -1
- package/dist/frontend/lowering/builtins/class-values.d.ts +60 -0
- package/dist/frontend/lowering/builtins/class-values.js +226 -0
- package/dist/frontend/lowering/builtins/class-values.js.map +1 -0
- package/dist/frontend/lowering/builtins/compression.d.ts +9 -0
- package/dist/frontend/lowering/builtins/compression.js +107 -44
- package/dist/frontend/lowering/builtins/compression.js.map +1 -1
- package/dist/frontend/lowering/builtins/constants.d.ts +9 -1
- package/dist/frontend/lowering/builtins/constants.js +28 -7
- package/dist/frontend/lowering/builtins/constants.js.map +1 -1
- package/dist/frontend/lowering/builtins/crypto.d.ts +19 -0
- package/dist/frontend/lowering/builtins/crypto.js +211 -37
- package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
- package/dist/frontend/lowering/builtins/dates.d.ts +7 -1
- package/dist/frontend/lowering/builtins/dates.js +92 -16
- package/dist/frontend/lowering/builtins/dates.js.map +1 -1
- package/dist/frontend/lowering/builtins/disposable-stack.d.ts +18 -0
- package/dist/frontend/lowering/builtins/disposable-stack.js +137 -0
- package/dist/frontend/lowering/builtins/disposable-stack.js.map +1 -0
- package/dist/frontend/lowering/builtins/environment.js +3 -3
- package/dist/frontend/lowering/builtins/environment.js.map +1 -1
- package/dist/frontend/lowering/builtins/errors.d.ts +14 -10
- package/dist/frontend/lowering/builtins/errors.js +169 -3
- package/dist/frontend/lowering/builtins/errors.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem-calls.js +128 -116
- package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem.js +77 -77
- package/dist/frontend/lowering/builtins/filesystem.js.map +1 -1
- package/dist/frontend/lowering/builtins/fs-glob.js +3 -3
- package/dist/frontend/lowering/builtins/fs-glob.js.map +1 -1
- package/dist/frontend/lowering/builtins/fs-streams.js +10 -11
- package/dist/frontend/lowering/builtins/fs-streams.js.map +1 -1
- package/dist/frontend/lowering/builtins/ipc.js +45 -8
- package/dist/frontend/lowering/builtins/ipc.js.map +1 -1
- package/dist/frontend/lowering/builtins/json.js +232 -24
- package/dist/frontend/lowering/builtins/json.js.map +1 -1
- package/dist/frontend/lowering/builtins/key-object.js +4 -4
- package/dist/frontend/lowering/builtins/key-object.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-bindings.d.ts +8 -0
- package/dist/frontend/lowering/builtins/module-bindings.js +71 -22
- package/dist/frontend/lowering/builtins/module-bindings.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-calls.js +55 -44
- package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-resolution.d.ts +4 -3
- package/dist/frontend/lowering/builtins/module-resolution.js +24 -23
- package/dist/frontend/lowering/builtins/module-resolution.js.map +1 -1
- package/dist/frontend/lowering/builtins/navigator.d.ts +13 -0
- package/dist/frontend/lowering/builtins/navigator.js +40 -0
- package/dist/frontend/lowering/builtins/navigator.js.map +1 -0
- package/dist/frontend/lowering/builtins/net-address.d.ts +19 -0
- package/dist/frontend/lowering/builtins/net-address.js +156 -0
- package/dist/frontend/lowering/builtins/net-address.js.map +1 -0
- package/dist/frontend/lowering/builtins/numbers.js +25 -9
- package/dist/frontend/lowering/builtins/numbers.js.map +1 -1
- package/dist/frontend/lowering/builtins/operating-system.d.ts +4 -0
- package/dist/frontend/lowering/builtins/operating-system.js +25 -12
- package/dist/frontend/lowering/builtins/operating-system.js.map +1 -1
- package/dist/frontend/lowering/builtins/performance.d.ts +12 -0
- package/dist/frontend/lowering/builtins/performance.js +259 -8
- package/dist/frontend/lowering/builtins/performance.js.map +1 -1
- package/dist/frontend/lowering/builtins/process.d.ts +32 -1
- package/dist/frontend/lowering/builtins/process.js +461 -99
- package/dist/frontend/lowering/builtins/process.js.map +1 -1
- package/dist/frontend/lowering/builtins/promises.d.ts +5 -1
- package/dist/frontend/lowering/builtins/promises.js +326 -43
- package/dist/frontend/lowering/builtins/promises.js.map +1 -1
- package/dist/frontend/lowering/builtins/promisify-callback.d.ts +37 -0
- package/dist/frontend/lowering/builtins/promisify-callback.js +320 -0
- package/dist/frontend/lowering/builtins/promisify-callback.js.map +1 -0
- package/dist/frontend/lowering/builtins/properties.js +37 -1
- package/dist/frontend/lowering/builtins/properties.js.map +1 -1
- package/dist/frontend/lowering/builtins/querystring.js +14 -14
- package/dist/frontend/lowering/builtins/querystring.js.map +1 -1
- package/dist/frontend/lowering/builtins/readline.d.ts +12 -2
- package/dist/frontend/lowering/builtins/readline.js +136 -39
- package/dist/frontend/lowering/builtins/readline.js.map +1 -1
- package/dist/frontend/lowering/builtins/receiver-types.js +3 -5
- package/dist/frontend/lowering/builtins/receiver-types.js.map +1 -1
- package/dist/frontend/lowering/builtins/reflection.js +16 -14
- package/dist/frontend/lowering/builtins/reflection.js.map +1 -1
- package/dist/frontend/lowering/builtins/runtime-constructor.d.ts +26 -0
- package/dist/frontend/lowering/builtins/runtime-constructor.js +165 -0
- package/dist/frontend/lowering/builtins/runtime-constructor.js.map +1 -0
- package/dist/frontend/lowering/builtins/strings.js +101 -12
- package/dist/frontend/lowering/builtins/strings.js.map +1 -1
- package/dist/frontend/lowering/builtins/text-codecs.js +41 -38
- package/dist/frontend/lowering/builtins/text-codecs.js.map +1 -1
- package/dist/frontend/lowering/builtins/timers.js +75 -30
- package/dist/frontend/lowering/builtins/timers.js.map +1 -1
- package/dist/frontend/lowering/builtins/url.d.ts +3 -0
- package/dist/frontend/lowering/builtins/url.js +120 -17
- package/dist/frontend/lowering/builtins/url.js.map +1 -1
- package/dist/frontend/lowering/builtins/util-types.js +20 -4
- package/dist/frontend/lowering/builtins/util-types.js.map +1 -1
- package/dist/frontend/lowering/builtins/v8.d.ts +11 -0
- package/dist/frontend/lowering/builtins/v8.js +105 -0
- package/dist/frontend/lowering/builtins/v8.js.map +1 -0
- package/dist/frontend/lowering/builtins/webassembly.d.ts +33 -0
- package/dist/frontend/lowering/builtins/webassembly.js +388 -0
- package/dist/frontend/lowering/builtins/webassembly.js.map +1 -0
- package/dist/frontend/lowering/builtins/webcrypto.d.ts +20 -0
- package/dist/frontend/lowering/builtins/webcrypto.js +112 -0
- package/dist/frontend/lowering/builtins/webcrypto.js.map +1 -0
- package/dist/frontend/lowering/builtins/workers.d.ts +12 -0
- package/dist/frontend/lowering/builtins/workers.js +193 -8
- package/dist/frontend/lowering/builtins/workers.js.map +1 -1
- package/dist/frontend/lowering/call-arguments.js +69 -14
- package/dist/frontend/lowering/call-arguments.js.map +1 -1
- package/dist/frontend/lowering/call-signatures.d.ts +19 -1
- package/dist/frontend/lowering/call-signatures.js +254 -47
- package/dist/frontend/lowering/call-signatures.js.map +1 -1
- package/dist/frontend/lowering/checked-promise-all.d.ts +3 -0
- package/dist/frontend/lowering/checked-promise-all.js +1 -1
- package/dist/frontend/lowering/checked-promise-all.js.map +1 -1
- package/dist/frontend/lowering/cjs-exports-object.d.ts +53 -0
- package/dist/frontend/lowering/cjs-exports-object.js +528 -0
- package/dist/frontend/lowering/cjs-exports-object.js.map +1 -0
- package/dist/frontend/lowering/cjs-inline-require.d.ts +86 -0
- package/dist/frontend/lowering/cjs-inline-require.js +314 -0
- package/dist/frontend/lowering/cjs-inline-require.js.map +1 -0
- package/dist/frontend/lowering/cjs-tsc-interop.d.ts +28 -0
- package/dist/frontend/lowering/cjs-tsc-interop.js +208 -0
- package/dist/frontend/lowering/cjs-tsc-interop.js.map +1 -0
- package/dist/frontend/lowering/class-attributes.d.ts +19 -0
- package/dist/frontend/lowering/class-attributes.js +378 -0
- package/dist/frontend/lowering/class-attributes.js.map +1 -0
- package/dist/frontend/lowering/class-callbacks.d.ts +3 -1
- package/dist/frontend/lowering/class-callbacks.js +21 -10
- package/dist/frontend/lowering/class-callbacks.js.map +1 -1
- package/dist/frontend/lowering/class-construction.js +49 -4
- package/dist/frontend/lowering/class-construction.js.map +1 -1
- package/dist/frontend/lowering/class-descriptors.d.ts +2 -0
- package/dist/frontend/lowering/class-descriptors.js +8 -8
- package/dist/frontend/lowering/class-descriptors.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +64 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.js +1115 -89
- package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-instance-constructor.js +1 -1
- package/dist/frontend/lowering/class-instance-constructor.js.map +1 -1
- package/dist/frontend/lowering/class-iterables.d.ts +11 -0
- package/dist/frontend/lowering/class-iterables.js +31 -0
- package/dist/frontend/lowering/class-iterables.js.map +1 -0
- package/dist/frontend/lowering/class-method-mutations.js +73 -35
- package/dist/frontend/lowering/class-method-mutations.js.map +1 -1
- package/dist/frontend/lowering/class-method-values.js +56 -10
- package/dist/frontend/lowering/class-method-values.js.map +1 -1
- package/dist/frontend/lowering/class-protocol-dispatch.js +24 -22
- package/dist/frontend/lowering/class-protocol-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-protocols.js +25 -44
- package/dist/frontend/lowering/class-protocols.js.map +1 -1
- package/dist/frontend/lowering/class-prototypes.d.ts +6 -0
- package/dist/frontend/lowering/class-prototypes.js +80 -18
- package/dist/frontend/lowering/class-prototypes.js.map +1 -1
- package/dist/frontend/lowering/class-runtime-statics.js +1 -1
- package/dist/frontend/lowering/class-runtime-statics.js.map +1 -1
- package/dist/frontend/lowering/class-static-data.js +2 -2
- package/dist/frontend/lowering/class-static-data.js.map +1 -1
- package/dist/frontend/lowering/class-to-primitive.d.ts +25 -0
- package/dist/frontend/lowering/class-to-primitive.js +261 -0
- package/dist/frontend/lowering/class-to-primitive.js.map +1 -0
- package/dist/frontend/lowering/class-unions.d.ts +25 -0
- package/dist/frontend/lowering/class-unions.js +102 -1
- package/dist/frontend/lowering/class-unions.js.map +1 -1
- package/dist/frontend/lowering/code-generation.d.ts +14 -0
- package/dist/frontend/lowering/code-generation.js +127 -0
- package/dist/frontend/lowering/code-generation.js.map +1 -0
- package/dist/frontend/lowering/coercions/function-adapters.d.ts +16 -2
- package/dist/frontend/lowering/coercions/function-adapters.js +145 -3
- package/dist/frontend/lowering/coercions/function-adapters.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural-plans.js +25 -3
- package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural.js +35 -3
- package/dist/frontend/lowering/coercions/structural.js.map +1 -1
- package/dist/frontend/lowering/coercions/unions.d.ts +15 -0
- package/dist/frontend/lowering/coercions/unions.js +57 -1
- package/dist/frontend/lowering/coercions/unions.js.map +1 -1
- package/dist/frontend/lowering/collection-ingestion.js +2 -2
- package/dist/frontend/lowering/collection-ingestion.js.map +1 -1
- package/dist/frontend/lowering/collection-narrowing.js +2 -4
- package/dist/frontend/lowering/collection-narrowing.js.map +1 -1
- package/dist/frontend/lowering/construction-escapes.js +8 -8
- package/dist/frontend/lowering/construction-escapes.js.map +1 -1
- package/dist/frontend/lowering/construction-escapes.test.js +4 -4
- package/dist/frontend/lowering/construction-escapes.test.js.map +1 -1
- package/dist/frontend/lowering/constructor-returns.d.ts +61 -0
- package/dist/frontend/lowering/constructor-returns.js +477 -0
- package/dist/frontend/lowering/constructor-returns.js.map +1 -0
- package/dist/frontend/lowering/containers/array-callback-call.js +1 -1
- package/dist/frontend/lowering/containers/array-callback-call.js.map +1 -1
- package/dist/frontend/lowering/containers/array-callbacks.d.ts +9 -0
- package/dist/frontend/lowering/containers/array-callbacks.js +266 -100
- package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
- package/dist/frontend/lowering/containers/array-concat.js +1 -1
- package/dist/frontend/lowering/containers/array-concat.js.map +1 -1
- package/dist/frontend/lowering/containers/array-construction.d.ts +0 -1
- package/dist/frontend/lowering/containers/array-construction.js +51 -13
- package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
- package/dist/frontend/lowering/containers/array-from-async.d.ts +6 -5
- package/dist/frontend/lowering/containers/array-from-async.js +159 -14
- package/dist/frontend/lowering/containers/array-from-async.js.map +1 -1
- package/dist/frontend/lowering/containers/array-methods.js +89 -77
- package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/array-pipelines.js +1 -0
- package/dist/frontend/lowering/containers/array-pipelines.js.map +1 -1
- package/dist/frontend/lowering/containers/bytes.js +161 -101
- package/dist/frontend/lowering/containers/bytes.js.map +1 -1
- package/dist/frontend/lowering/containers/callback-arguments.d.ts +9 -1
- package/dist/frontend/lowering/containers/callback-arguments.js +55 -5
- package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -1
- package/dist/frontend/lowering/containers/collection-grouping.d.ts +7 -8
- package/dist/frontend/lowering/containers/collection-grouping.js +217 -26
- package/dist/frontend/lowering/containers/collection-grouping.js.map +1 -1
- package/dist/frontend/lowering/containers/collection-methods.js +54 -25
- package/dist/frontend/lowering/containers/collection-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/dynamic-receivers.js +1 -1
- package/dist/frontend/lowering/containers/dynamic-receivers.js.map +1 -1
- package/dist/frontend/lowering/containers/exec-result-uses.js +2 -2
- package/dist/frontend/lowering/containers/exec-result-uses.js.map +1 -1
- package/dist/frontend/lowering/containers/for-of.d.ts +6 -0
- package/dist/frontend/lowering/containers/for-of.js +19 -19
- package/dist/frontend/lowering/containers/for-of.js.map +1 -1
- package/dist/frontend/lowering/containers/indexed-objects.js +142 -57
- package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
- package/dist/frontend/lowering/containers/iterator-helpers.d.ts +53 -4
- package/dist/frontend/lowering/containers/iterator-helpers.js +1581 -462
- package/dist/frontend/lowering/containers/iterator-helpers.js.map +1 -1
- package/dist/frontend/lowering/containers/match-row-uses.d.ts +17 -0
- package/dist/frontend/lowering/containers/match-row-uses.js +264 -0
- package/dist/frontend/lowering/containers/match-row-uses.js.map +1 -0
- package/dist/frontend/lowering/containers/string-and-regexp.d.ts +14 -0
- package/dist/frontend/lowering/containers/string-and-regexp.js +419 -30
- package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
- package/dist/frontend/lowering/containers/string-replacement.js +1 -1
- package/dist/frontend/lowering/containers/string-replacement.js.map +1 -1
- package/dist/frontend/lowering/cycle-initialization.d.ts +4 -0
- package/dist/frontend/lowering/cycle-initialization.js +39 -0
- package/dist/frontend/lowering/cycle-initialization.js.map +1 -1
- package/dist/frontend/lowering/deferred-module-initializers.js +47 -43
- package/dist/frontend/lowering/deferred-module-initializers.js.map +1 -1
- package/dist/frontend/lowering/devirtualize.d.ts +1 -1
- package/dist/frontend/lowering/devirtualize.js +27 -7
- package/dist/frontend/lowering/devirtualize.js.map +1 -1
- package/dist/frontend/lowering/divergences.d.ts +0 -5
- package/dist/frontend/lowering/divergences.js +62 -125
- package/dist/frontend/lowering/divergences.js.map +1 -1
- package/dist/frontend/lowering/dyn-streams.d.ts +25 -0
- package/dist/frontend/lowering/dyn-streams.js +257 -0
- package/dist/frontend/lowering/dyn-streams.js.map +1 -0
- package/dist/frontend/lowering/error-methods.js +4 -1
- package/dist/frontend/lowering/error-methods.js.map +1 -1
- package/dist/frontend/lowering/error-name-order.d.ts +19 -0
- package/dist/frontend/lowering/error-name-order.js +93 -0
- package/dist/frontend/lowering/error-name-order.js.map +1 -0
- package/dist/frontend/lowering/expressions/array-literals.d.ts +21 -0
- package/dist/frontend/lowering/expressions/array-literals.js +703 -0
- package/dist/frontend/lowering/expressions/array-literals.js.map +1 -0
- package/dist/frontend/lowering/expressions/binary.d.ts +35 -0
- package/dist/frontend/lowering/expressions/binary.js +2483 -0
- package/dist/frontend/lowering/expressions/binary.js.map +1 -0
- package/dist/frontend/lowering/expressions/element-access.d.ts +31 -0
- package/dist/frontend/lowering/expressions/element-access.js +1797 -0
- package/dist/frontend/lowering/expressions/element-access.js.map +1 -0
- package/dist/frontend/lowering/expressions/evaluation-safety.js +4 -3
- package/dist/frontend/lowering/expressions/evaluation-safety.js.map +1 -1
- package/dist/frontend/lowering/expressions/hosted-narrowing.d.ts +38 -0
- package/dist/frontend/lowering/expressions/hosted-narrowing.js +160 -0
- package/dist/frontend/lowering/expressions/hosted-narrowing.js.map +1 -0
- package/dist/frontend/lowering/expressions/identifiers.d.ts +4 -0
- package/dist/frontend/lowering/expressions/identifiers.js +830 -0
- package/dist/frontend/lowering/expressions/identifiers.js.map +1 -0
- package/dist/frontend/lowering/expressions/keyed-field-targets.d.ts +40 -0
- package/dist/frontend/lowering/expressions/keyed-field-targets.js +226 -0
- package/dist/frontend/lowering/expressions/keyed-field-targets.js.map +1 -0
- package/dist/frontend/lowering/expressions/narrowing.d.ts +37 -0
- package/dist/frontend/lowering/expressions/narrowing.js +1322 -0
- package/dist/frontend/lowering/expressions/narrowing.js.map +1 -0
- package/dist/frontend/lowering/expressions/native-proxy.js +4 -4
- package/dist/frontend/lowering/expressions/native-proxy.js.map +1 -1
- package/dist/frontend/lowering/expressions/nullish-assignment.js +45 -0
- package/dist/frontend/lowering/expressions/nullish-assignment.js.map +1 -1
- package/dist/frontend/lowering/expressions/object-literals.d.ts +10 -0
- package/dist/frontend/lowering/expressions/object-literals.js +253 -85
- package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/optional-chains.d.ts +2 -1
- package/dist/frontend/lowering/expressions/optional-chains.js +91 -14
- package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
- package/dist/frontend/lowering/expressions/property-access.d.ts +110 -0
- package/dist/frontend/lowering/expressions/property-access.js +3544 -0
- package/dist/frontend/lowering/expressions/property-access.js.map +1 -0
- package/dist/frontend/lowering/expressions/relational.d.ts +28 -0
- package/dist/frontend/lowering/expressions/relational.js +1679 -0
- package/dist/frontend/lowering/expressions/relational.js.map +1 -0
- package/dist/frontend/lowering/expressions/typeof.d.ts +22 -0
- package/dist/frontend/lowering/expressions/typeof.js +538 -0
- package/dist/frontend/lowering/expressions/typeof.js.map +1 -0
- package/dist/frontend/lowering/expressions/union-fields.js +1 -1
- package/dist/frontend/lowering/expressions/union-fields.js.map +1 -1
- package/dist/frontend/lowering/expressions/updates.d.ts +21 -0
- package/dist/frontend/lowering/expressions/updates.js +780 -0
- package/dist/frontend/lowering/expressions/updates.js.map +1 -0
- package/dist/frontend/lowering/function-context.d.ts +10 -0
- package/dist/frontend/lowering/function-context.js +11 -1
- package/dist/frontend/lowering/function-context.js.map +1 -1
- package/dist/frontend/lowering/function-returns.js +52 -28
- package/dist/frontend/lowering/function-returns.js.map +1 -1
- package/dist/frontend/lowering/general-streams.d.ts +25 -0
- package/dist/frontend/lowering/general-streams.js +108 -0
- package/dist/frontend/lowering/general-streams.js.map +1 -0
- package/dist/frontend/lowering/generator-dynamic-dispatch.d.ts +7 -0
- package/dist/frontend/lowering/generator-dynamic-dispatch.js +172 -69
- package/dist/frontend/lowering/generator-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/generic-functions.d.ts +39 -0
- package/dist/frontend/lowering/generic-functions.js +393 -75
- package/dist/frontend/lowering/generic-functions.js.map +1 -1
- package/dist/frontend/lowering/import-meta.js +2 -2
- package/dist/frontend/lowering/import-meta.js.map +1 -1
- package/dist/frontend/lowering/intern-tables.js +10 -9
- package/dist/frontend/lowering/intern-tables.js.map +1 -1
- package/dist/frontend/lowering/iterator-adapters.d.ts +19 -0
- package/dist/frontend/lowering/iterator-adapters.js +331 -3
- package/dist/frontend/lowering/iterator-adapters.js.map +1 -1
- package/dist/frontend/lowering/js-class-fields.d.ts +28 -0
- package/dist/frontend/lowering/js-class-fields.js +170 -0
- package/dist/frontend/lowering/js-class-fields.js.map +1 -0
- package/dist/frontend/lowering/js-dynamic-objects.d.ts +15 -0
- package/dist/frontend/lowering/js-dynamic-objects.js +299 -0
- package/dist/frontend/lowering/js-dynamic-objects.js.map +1 -0
- package/dist/frontend/lowering/js-dynamic-objects.test.d.ts +1 -0
- package/dist/frontend/lowering/js-dynamic-objects.test.js +35 -0
- package/dist/frontend/lowering/js-dynamic-objects.test.js.map +1 -0
- package/dist/frontend/lowering/json-require.d.ts +22 -0
- package/dist/frontend/lowering/json-require.js +131 -0
- package/dist/frontend/lowering/json-require.js.map +1 -0
- package/dist/frontend/lowering/key-order-witness.d.ts +44 -0
- package/dist/frontend/lowering/key-order-witness.js +641 -0
- package/dist/frontend/lowering/key-order-witness.js.map +1 -0
- package/dist/frontend/lowering/key-order-witness.test.d.ts +1 -0
- package/dist/frontend/lowering/key-order-witness.test.js +239 -0
- package/dist/frontend/lowering/key-order-witness.test.js.map +1 -0
- package/dist/frontend/lowering/lifetime-regions.js +7 -7
- package/dist/frontend/lowering/lifetime-regions.js.map +1 -1
- package/dist/frontend/lowering/lower-assert.js +61 -60
- package/dist/frontend/lowering/lower-assert.js.map +1 -1
- package/dist/frontend/lowering/lower-async-iteration.d.ts +10 -1
- package/dist/frontend/lowering/lower-async-iteration.js +34 -6
- package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
- package/dist/frontend/lowering/lower-builtin-values.d.ts +5 -0
- package/dist/frontend/lowering/lower-builtin-values.js +32 -3
- package/dist/frontend/lowering/lower-builtin-values.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.js +1239 -442
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.d.ts +50 -3
- package/dist/frontend/lowering/lower-classes.js +1473 -468
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-comptime.d.ts +4 -2
- package/dist/frontend/lowering/lower-comptime.js +111 -13
- package/dist/frontend/lowering/lower-comptime.js.map +1 -1
- package/dist/frontend/lowering/lower-console.js +13 -11
- package/dist/frontend/lowering/lower-console.js.map +1 -1
- package/dist/frontend/lowering/lower-dgram.d.ts +10 -0
- package/dist/frontend/lowering/lower-dgram.js +179 -8
- package/dist/frontend/lowering/lower-dgram.js.map +1 -1
- package/dist/frontend/lowering/lower-enums.js +113 -14
- package/dist/frontend/lowering/lower-enums.js.map +1 -1
- package/dist/frontend/lowering/lower-event-emitter.d.ts +16 -7
- package/dist/frontend/lowering/lower-event-emitter.js +258 -70
- package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
- package/dist/frontend/lowering/lower-event-target.js +2 -2
- package/dist/frontend/lowering/lower-event-target.js.map +1 -1
- package/dist/frontend/lowering/lower-expando.js +17 -13
- package/dist/frontend/lowering/lower-expando.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.d.ts +188 -186
- package/dist/frontend/lowering/lower-exprs.js +1481 -12489
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-functions.js +68 -22
- package/dist/frontend/lowering/lower-functions.js.map +1 -1
- package/dist/frontend/lowering/lower-generators.d.ts +6 -0
- package/dist/frontend/lowering/lower-generators.js +29 -16
- package/dist/frontend/lowering/lower-generators.js.map +1 -1
- package/dist/frontend/lowering/lower-global-value.js +5 -1
- package/dist/frontend/lowering/lower-global-value.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.js +331 -96
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-mixins.js +23 -20
- package/dist/frontend/lowering/lower-mixins.js.map +1 -1
- package/dist/frontend/lowering/lower-mock.d.ts +8 -1
- package/dist/frontend/lowering/lower-mock.js +185 -18
- package/dist/frontend/lowering/lower-mock.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.js +267 -61
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-namespaces.d.ts +6 -0
- package/dist/frontend/lowering/lower-namespaces.js +45 -33
- package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
- package/dist/frontend/lowering/lower-node-module.d.ts +16 -0
- package/dist/frontend/lowering/lower-node-module.js +147 -14
- package/dist/frontend/lowering/lower-node-module.js.map +1 -1
- package/dist/frontend/lowering/lower-server.d.ts +6 -6
- package/dist/frontend/lowering/lower-server.js +488 -100
- package/dist/frontend/lowering/lower-server.js.map +1 -1
- package/dist/frontend/lowering/lower-stdlib.d.ts +4 -0
- package/dist/frontend/lowering/lower-stdlib.js +151 -109
- package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.d.ts +28 -2
- package/dist/frontend/lowering/lower-stmts.js +1541 -391
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-stream.d.ts +3 -0
- package/dist/frontend/lowering/lower-stream.js +398 -56
- package/dist/frontend/lowering/lower-stream.js.map +1 -1
- package/dist/frontend/lowering/lower-test.d.ts +3 -0
- package/dist/frontend/lowering/lower-test.js +437 -62
- package/dist/frontend/lowering/lower-test.js.map +1 -1
- package/dist/frontend/lowering/lower-timers.js +80 -32
- package/dist/frontend/lowering/lower-timers.js.map +1 -1
- package/dist/frontend/lowering/lower-url.js +1 -1
- package/dist/frontend/lowering/lower-url.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +399 -26
- package/dist/frontend/lowering/lowerer.js +1910 -305
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/lowerer.test.js +10 -4
- package/dist/frontend/lowering/lowerer.test.js.map +1 -1
- package/dist/frontend/lowering/maybe-promise.d.ts +46 -0
- package/dist/frontend/lowering/maybe-promise.js +249 -0
- package/dist/frontend/lowering/maybe-promise.js.map +1 -0
- package/dist/frontend/lowering/module-member-this.d.ts +3 -0
- package/dist/frontend/lowering/module-member-this.js +262 -0
- package/dist/frontend/lowering/module-member-this.js.map +1 -0
- package/dist/frontend/lowering/module-namespace-elements.js +1 -1
- package/dist/frontend/lowering/module-namespace-elements.js.map +1 -1
- package/dist/frontend/lowering/nan-coded-reads.d.ts +3 -0
- package/dist/frontend/lowering/nan-coded-reads.js +45 -32
- package/dist/frontend/lowering/nan-coded-reads.js.map +1 -1
- package/dist/frontend/lowering/narrowing-stability.d.ts +18 -3
- package/dist/frontend/lowering/narrowing-stability.js +104 -32
- package/dist/frontend/lowering/narrowing-stability.js.map +1 -1
- package/dist/frontend/lowering/native-ffi.js +11 -11
- package/dist/frontend/lowering/native-ffi.js.map +1 -1
- package/dist/frontend/lowering/object-factory-new.js +6 -8
- package/dist/frontend/lowering/object-factory-new.js.map +1 -1
- package/dist/frontend/lowering/private-brands.d.ts +46 -0
- package/dist/frontend/lowering/private-brands.js +265 -0
- package/dist/frontend/lowering/private-brands.js.map +1 -0
- package/dist/frontend/lowering/promise-executor-adapter.d.ts +11 -0
- package/dist/frontend/lowering/promise-executor-adapter.js +87 -0
- package/dist/frontend/lowering/promise-executor-adapter.js.map +1 -0
- package/dist/frontend/lowering/require-initialization.d.ts +32 -0
- package/dist/frontend/lowering/require-initialization.js +246 -0
- package/dist/frontend/lowering/require-initialization.js.map +1 -0
- package/dist/frontend/lowering/runtime-optional-bounds.js +7 -7
- package/dist/frontend/lowering/runtime-optional-bounds.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-elements.js +12 -12
- package/dist/frontend/lowering/runtime-optional-elements.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-guards.js +10 -10
- package/dist/frontend/lowering/runtime-optional-guards.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-guards.test.js +1 -1
- package/dist/frontend/lowering/runtime-optional-guards.test.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-ownership.js +10 -9
- package/dist/frontend/lowering/runtime-optional-ownership.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-provenance.js +2 -2
- package/dist/frontend/lowering/runtime-optional-provenance.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-records.d.ts +35 -0
- package/dist/frontend/lowering/runtime-optional-records.js +205 -32
- package/dist/frontend/lowering/runtime-optional-records.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-records.test.js +19 -1
- package/dist/frontend/lowering/runtime-optional-records.test.js.map +1 -1
- package/dist/frontend/lowering/sanitize-class-types.test.js +2 -2
- package/dist/frontend/lowering/split-consumers.js +4 -4
- package/dist/frontend/lowering/split-consumers.js.map +1 -1
- package/dist/frontend/lowering/static-function-names.d.ts +28 -0
- package/dist/frontend/lowering/static-function-names.js +212 -0
- package/dist/frontend/lowering/static-function-names.js.map +1 -0
- package/dist/frontend/lowering/static-this.js +6 -6
- package/dist/frontend/lowering/static-this.js.map +1 -1
- package/dist/frontend/lowering/strict-mode.d.ts +5 -0
- package/dist/frontend/lowering/strict-mode.js +31 -0
- package/dist/frontend/lowering/strict-mode.js.map +1 -0
- package/dist/frontend/lowering/string-index-bounds.js +10 -10
- package/dist/frontend/lowering/string-index-bounds.js.map +1 -1
- package/dist/frontend/lowering/string-index.d.ts +12 -0
- package/dist/frontend/lowering/string-index.js +72 -1
- package/dist/frontend/lowering/string-index.js.map +1 -1
- package/dist/frontend/lowering/surfaces.d.ts +12 -3
- package/dist/frontend/lowering/surfaces.js +252 -41
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/lowering/symbol-fields.d.ts +7 -0
- package/dist/frontend/lowering/symbol-fields.js +204 -36
- package/dist/frontend/lowering/symbol-fields.js.map +1 -1
- package/dist/frontend/lowering/symbol-methods.d.ts +2 -1
- package/dist/frontend/lowering/symbol-methods.js +24 -6
- package/dist/frontend/lowering/symbol-methods.js.map +1 -1
- package/dist/frontend/lowering/thread-slots.d.ts +13 -0
- package/dist/frontend/lowering/thread-slots.js +208 -0
- package/dist/frontend/lowering/thread-slots.js.map +1 -0
- package/dist/frontend/lowering/typed-arguments.d.ts +74 -0
- package/dist/frontend/lowering/typed-arguments.js +472 -0
- package/dist/frontend/lowering/typed-arguments.js.map +1 -0
- package/dist/frontend/lowering/union-retag.d.ts +8 -0
- package/dist/frontend/lowering/union-retag.js +27 -0
- package/dist/frontend/lowering/union-retag.js.map +1 -1
- package/dist/frontend/lowering/union-retag.test.js +24 -1
- package/dist/frontend/lowering/union-retag.test.js.map +1 -1
- package/dist/frontend/lowering/var-hoisting.js +6 -6
- package/dist/frontend/lowering/var-hoisting.js.map +1 -1
- package/dist/frontend/lowering/width-lift.d.ts +4 -0
- package/dist/frontend/mock-shapes.js +13 -6
- package/dist/frontend/mock-shapes.js.map +1 -1
- package/dist/frontend/module-source-candidates.js +1 -1
- package/dist/frontend/module-source-candidates.js.map +1 -1
- package/dist/frontend/module-source-candidates.test.js +2 -1
- package/dist/frontend/module-source-candidates.test.js.map +1 -1
- package/dist/frontend/module-syntax.js +8 -8
- package/dist/frontend/module-syntax.js.map +1 -1
- package/dist/frontend/npm-static-bundled-chunks.d.ts +51 -0
- package/dist/frontend/npm-static-bundled-chunks.js +810 -0
- package/dist/frontend/npm-static-bundled-chunks.js.map +1 -0
- package/dist/frontend/npm-static-bundled-chunks.test.d.ts +1 -0
- package/dist/frontend/npm-static-bundled-chunks.test.js +287 -0
- package/dist/frontend/npm-static-bundled-chunks.test.js.map +1 -0
- package/dist/frontend/npm-static-bundled-cjs.js +24 -23
- package/dist/frontend/npm-static-bundled-cjs.js.map +1 -1
- package/dist/frontend/npm-static-bundled-esm.d.ts +9 -0
- package/dist/frontend/npm-static-bundled-esm.js +768 -0
- package/dist/frontend/npm-static-bundled-esm.js.map +1 -0
- package/dist/frontend/npm-static-bundled-esm.test.d.ts +1 -0
- package/dist/frontend/npm-static-bundled-esm.test.js +207 -0
- package/dist/frontend/npm-static-bundled-esm.test.js.map +1 -0
- package/dist/frontend/npm-static-cjs-exports-alias.d.ts +2 -0
- package/dist/frontend/npm-static-cjs-exports-alias.js +186 -0
- package/dist/frontend/npm-static-cjs-exports-alias.js.map +1 -0
- package/dist/frontend/npm-static-cjs-exports-alias.test.d.ts +1 -0
- package/dist/frontend/npm-static-cjs-exports-alias.test.js +73 -0
- package/dist/frontend/npm-static-cjs-exports-alias.test.js.map +1 -0
- package/dist/frontend/npm-static-cjs-exports-var.d.ts +2 -0
- package/dist/frontend/npm-static-cjs-exports-var.js +236 -0
- package/dist/frontend/npm-static-cjs-exports-var.js.map +1 -0
- package/dist/frontend/npm-static-declaration-syntax.js +102 -101
- package/dist/frontend/npm-static-declaration-syntax.js.map +1 -1
- package/dist/frontend/npm-static-prune.js +36 -24
- package/dist/frontend/npm-static-prune.js.map +1 -1
- package/dist/frontend/npm-static-rewrite-host.d.ts +4 -1
- package/dist/frontend/npm-static-rewrite-host.js +14 -3
- package/dist/frontend/npm-static-rewrite-host.js.map +1 -1
- package/dist/frontend/npm-static-rewrite-syntax.d.ts +19 -0
- package/dist/frontend/npm-static-rewrite-syntax.js +274 -101
- package/dist/frontend/npm-static-rewrite-syntax.js.map +1 -1
- package/dist/frontend/npm-static-subtyping.js +7 -9
- package/dist/frontend/npm-static-subtyping.js.map +1 -1
- package/dist/frontend/npm-static.d.ts +17 -1
- package/dist/frontend/npm-static.js +167 -16
- package/dist/frontend/npm-static.js.map +1 -1
- package/dist/frontend/npm-static.test.js +22 -1
- package/dist/frontend/npm-static.test.js.map +1 -1
- package/dist/frontend/pipeline.js +164 -26
- package/dist/frontend/pipeline.js.map +1 -1
- package/dist/frontend/pipeline.test.js +22 -1
- package/dist/frontend/pipeline.test.js.map +1 -1
- package/dist/frontend/program-analysis.d.ts +6 -1
- package/dist/frontend/program-analysis.js +7 -0
- package/dist/frontend/program-analysis.js.map +1 -1
- package/dist/frontend/program.d.ts +92 -2
- package/dist/frontend/program.js +1557 -255
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/program.test.js +76 -6
- package/dist/frontend/program.test.js.map +1 -1
- package/dist/frontend/resolve.js +36 -2
- package/dist/frontend/resolve.js.map +1 -1
- package/dist/frontend/resolve.test.js +49 -0
- package/dist/frontend/resolve.test.js.map +1 -1
- package/dist/frontend/services.d.ts +20 -1
- package/dist/frontend/services.js +40 -3
- package/dist/frontend/services.js.map +1 -1
- package/dist/frontend/services.test.js +2 -1
- package/dist/frontend/services.test.js.map +1 -1
- package/dist/frontend/threads-import.js +1 -1
- package/dist/frontend/threads-import.js.map +1 -1
- package/dist/frontend/tier-analysis.d.ts +71 -0
- package/dist/frontend/tier-analysis.js +522 -0
- package/dist/frontend/tier-analysis.js.map +1 -0
- package/dist/frontend/ts7/api-conformance.d.ts +234 -0
- package/dist/frontend/ts7/api-conformance.js +7 -0
- package/dist/frontend/ts7/api-conformance.js.map +1 -0
- package/dist/frontend/ts7/ast-guards.generated.js +2 -1
- package/dist/frontend/ts7/ast-guards.generated.js.map +1 -1
- package/dist/frontend/ts7/ast-node.d.ts +47 -25
- package/dist/frontend/ts7/ast-node.js +64 -18
- package/dist/frontend/ts7/ast-node.js.map +1 -1
- package/dist/frontend/ts7/ast-node.test.js +36 -12
- package/dist/frontend/ts7/ast-node.test.js.map +1 -1
- package/dist/frontend/ts7/ast-types.d.ts +10 -3
- package/dist/frontend/ts7/ast-types.generated.d.ts +39 -39
- package/dist/frontend/ts7/ast.d.ts +1 -0
- package/dist/frontend/ts7/ast.js +3 -2
- package/dist/frontend/ts7/ast.js.map +1 -1
- package/dist/frontend/ts7/checker-backend.d.ts +23 -0
- package/dist/frontend/ts7/checker-backend.js +88 -0
- package/dist/frontend/ts7/checker-backend.js.map +1 -0
- package/dist/frontend/ts7/checker-backend.test.d.ts +1 -0
- package/dist/frontend/ts7/checker-backend.test.js +63 -0
- package/dist/frontend/ts7/checker-backend.test.js.map +1 -0
- package/dist/frontend/ts7/checker-cache.d.ts +0 -3
- package/dist/frontend/ts7/checker-cache.js +0 -6
- package/dist/frontend/ts7/checker-cache.js.map +1 -1
- package/dist/frontend/ts7/checker.d.ts +18 -11
- package/dist/frontend/ts7/checker.js +42 -55
- package/dist/frontend/ts7/checker.js.map +1 -1
- package/dist/frontend/ts7/checker.test.js +10 -7
- package/dist/frontend/ts7/checker.test.js.map +1 -1
- package/dist/frontend/ts7/diagnostic.d.ts +19 -0
- package/dist/frontend/ts7/diagnostic.js +22 -0
- package/dist/frontend/ts7/diagnostic.js.map +1 -0
- package/dist/frontend/ts7/node-functions.d.ts +8 -0
- package/dist/frontend/ts7/node-functions.js +18 -0
- package/dist/frontend/ts7/node-functions.js.map +1 -0
- package/dist/frontend/ts7/program-host.d.ts +5 -1
- package/dist/frontend/ts7/program-host.js +12 -0
- package/dist/frontend/ts7/program-host.js.map +1 -1
- package/dist/frontend/ts7/rpc-api.d.ts +5 -1
- package/dist/frontend/ts7/rpc-api.js +8 -1
- package/dist/frontend/ts7/rpc-api.js.map +1 -1
- package/dist/frontend/ts7/semantic-checker.d.ts +13 -6
- package/dist/frontend/ts7/semantic-checker.js +26 -8
- package/dist/frontend/ts7/semantic-checker.js.map +1 -1
- package/dist/frontend/ts7/semantic-checker.test.js +12 -9
- package/dist/frontend/ts7/semantic-checker.test.js.map +1 -1
- package/dist/frontend/ts7/semantic-model.d.ts +54 -24
- package/dist/frontend/ts7/semantic-model.js +88 -16
- package/dist/frontend/ts7/semantic-model.js.map +1 -1
- package/dist/frontend/ts7/semantic-model.test.js +4 -4
- package/dist/frontend/ts7/semantic-model.test.js.map +1 -1
- package/dist/frontend/ts7/semantic-types.d.ts +7 -3
- package/dist/frontend/ts7/semantic-types.js +1 -1
- package/dist/frontend/ts7/semantic-types.js.map +1 -1
- package/dist/frontend/ts7/session.d.ts +11 -11
- package/dist/frontend/ts7/session.js +8 -5
- package/dist/frontend/ts7/session.js.map +1 -1
- package/dist/frontend/ts7/session.test.js +9 -5
- package/dist/frontend/ts7/session.test.js.map +1 -1
- package/dist/frontend/ts7/source-parser.d.ts +6 -2
- package/dist/frontend/ts7/source-parser.js +24 -3
- package/dist/frontend/ts7/source-parser.js.map +1 -1
- package/dist/frontend/ts7/source-parser.test.js +38 -17
- package/dist/frontend/ts7/source-parser.test.js.map +1 -1
- package/dist/frontend/type-mapper.d.ts +122 -2
- package/dist/frontend/type-mapper.js +2545 -719
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/frontend/type-only-imports.d.ts +28 -0
- package/dist/frontend/type-only-imports.js +122 -0
- package/dist/frontend/type-only-imports.js.map +1 -0
- package/dist/frontend/worker-target.js +8 -8
- package/dist/frontend/worker-target.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +29 -2
- package/dist/index.js.map +1 -1
- package/dist/ir/analysis.js +4 -2
- package/dist/ir/analysis.js.map +1 -1
- 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/array-length-stability.d.ts +30 -0
- package/dist/ir/array-length-stability.js +236 -0
- package/dist/ir/array-length-stability.js.map +1 -0
- package/dist/ir/array-length-stability.test.d.ts +1 -0
- package/dist/ir/array-length-stability.test.js +113 -0
- package/dist/ir/array-length-stability.test.js.map +1 -0
- package/dist/ir/build.d.ts +2 -2
- package/dist/ir/build.js +1 -1
- package/dist/ir/build.js.map +1 -1
- package/dist/ir/builtin-effects.js +103 -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 +494 -25
- package/dist/ir/builtin-signatures.js.map +1 -1
- package/dist/ir/byte-numbers.js +3 -0
- package/dist/ir/byte-numbers.js.map +1 -1
- package/dist/ir/callback-specialization.d.ts +37 -0
- package/dist/ir/callback-specialization.js +459 -0
- package/dist/ir/callback-specialization.js.map +1 -0
- package/dist/ir/callback-specialization.test.d.ts +1 -0
- package/dist/ir/callback-specialization.test.js +208 -0
- package/dist/ir/callback-specialization.test.js.map +1 -0
- package/dist/ir/capture-values.d.ts +0 -1
- package/dist/ir/capture-values.js +51 -40
- package/dist/ir/capture-values.js.map +1 -1
- package/dist/ir/constant-globals.test.js +1 -1
- package/dist/ir/constant-tables.test.js +1 -1
- package/dist/ir/field-values.test.js +1 -1
- package/dist/ir/final-fields.test.js +1 -1
- package/dist/ir/function-references.test.js +9 -1
- package/dist/ir/function-references.test.js.map +1 -1
- package/dist/ir/init-only-globals.test.js +1 -1
- package/dist/ir/initializer-bindings.test.js +1 -1
- package/dist/ir/int32-slots.d.ts +14 -0
- package/dist/ir/int32-slots.js +97 -14
- package/dist/ir/int32-slots.js.map +1 -1
- package/dist/ir/int32-slots.test.js +1 -1
- package/dist/ir/integer-loop-facts.d.ts +2 -0
- package/dist/ir/integer-loop-facts.js +24 -3
- package/dist/ir/integer-loop-facts.js.map +1 -1
- package/dist/ir/integer-loops.d.ts +1 -1
- package/dist/ir/integer-loops.js +39 -9
- package/dist/ir/integer-loops.js.map +1 -1
- package/dist/ir/integer-loops.test.js +104 -0
- package/dist/ir/integer-loops.test.js.map +1 -1
- package/dist/ir/integer-ranges.d.ts +3 -0
- package/dist/ir/integer-ranges.js +3 -1
- package/dist/ir/integer-ranges.js.map +1 -1
- package/dist/ir/integer-ranges.test.js +82 -1
- package/dist/ir/integer-ranges.test.js.map +1 -1
- package/dist/ir/intrinsic-signatures.js +6 -0
- package/dist/ir/intrinsic-signatures.js.map +1 -1
- package/dist/ir/ir.d.ts +221 -58
- package/dist/ir/ir.js +119 -12
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/ir.test.js +10 -0
- package/dist/ir/ir.test.js.map +1 -1
- package/dist/ir/jsval.d.ts +8 -0
- package/dist/ir/jsval.js +365 -0
- package/dist/ir/jsval.js.map +1 -0
- package/dist/ir/jsval.test.d.ts +1 -0
- package/dist/ir/jsval.test.js +239 -0
- package/dist/ir/jsval.test.js.map +1 -0
- package/dist/ir/runtime-features.d.ts +148 -33
- package/dist/ir/runtime-features.js +629 -386
- package/dist/ir/runtime-features.js.map +1 -1
- package/dist/ir/scalar-records.test.js +1 -1
- package/dist/ir/self-captures.d.ts +33 -0
- package/dist/ir/self-captures.js +245 -0
- package/dist/ir/self-captures.js.map +1 -0
- package/dist/ir/self-captures.test.d.ts +1 -0
- package/dist/ir/self-captures.test.js +135 -0
- package/dist/ir/self-captures.test.js.map +1 -0
- package/dist/ir/serialize.d.ts +1 -1
- package/dist/ir/serialize.js +7 -4
- package/dist/ir/serialize.js.map +1 -1
- package/dist/ir/tiers.d.ts +26 -0
- package/dist/ir/tiers.js +101 -0
- package/dist/ir/tiers.js.map +1 -0
- package/dist/ir/tiers.test.d.ts +1 -0
- package/dist/ir/tiers.test.js +140 -0
- package/dist/ir/tiers.test.js.map +1 -0
- package/dist/ir/traverse.js +103 -94
- package/dist/ir/traverse.js.map +1 -1
- package/dist/ir/traverse.test.js +33 -30
- package/dist/ir/traverse.test.js.map +1 -1
- package/dist/ir/unshare.js +65 -3
- package/dist/ir/unshare.js.map +1 -1
- package/dist/ir/unshare.test.js +1 -1
- package/dist/ir/validate.js +175 -68
- package/dist/ir/validate.js.map +1 -1
- package/dist/ir/validate.test.js +26 -9
- package/dist/ir/validate.test.js.map +1 -1
- package/dist/library/fence-eval.test.js +1 -1
- package/dist/library/int-infer.test.js +4 -4
- package/dist/library/ir-policy.js +13 -0
- package/dist/library/ir-policy.js.map +1 -1
- package/dist/library/library-cache.d.ts +1 -0
- package/dist/library/library-cache.js.map +1 -1
- package/dist/library/library-cache.test.js +5 -5
- package/dist/library/library-profile.d.ts +4 -4
- package/dist/library/library-profile.js +35 -7
- package/dist/library/library-profile.js.map +1 -1
- package/dist/library/prepare.js +13 -1
- package/dist/library/prepare.js.map +1 -1
- package/dist/native/cli.js +5 -0
- package/dist/native/cli.js.map +1 -1
- package/dist/native/compiler.js +2 -2
- package/dist/native/compiler.js.map +1 -1
- package/dist/native/compiler.test.js +2 -2
- package/dist/native/prepare.js +7 -0
- package/dist/native/prepare.js.map +1 -1
- package/dist/native/sanitizer.test.js +12 -0
- package/dist/native/sanitizer.test.js.map +1 -1
- package/dist/native/toolchain.d.ts +2 -0
- package/dist/native/toolchain.js +10 -1
- package/dist/native/toolchain.js.map +1 -1
- package/dist/native/toolchain.test.js +39 -1
- package/dist/native/toolchain.test.js.map +1 -1
- package/dist/startup-cache.d.ts +1 -0
- package/dist/startup-cache.js +1 -0
- package/dist/startup-cache.js.map +1 -1
- package/dist/wasm/base64.d.ts +5 -0
- package/dist/wasm/base64.js +62 -0
- package/dist/wasm/base64.js.map +1 -0
- package/dist/wasm/binary.d.ts +36 -0
- package/dist/wasm/binary.js +1976 -0
- package/dist/wasm/binary.js.map +1 -0
- package/dist/wasm/binary.test.d.ts +1 -0
- package/dist/wasm/binary.test.js +190 -0
- package/dist/wasm/binary.test.js.map +1 -0
- package/dist/wasm/discover.d.ts +38 -0
- package/dist/wasm/discover.js +377 -0
- package/dist/wasm/discover.js.map +1 -0
- package/dist/wasm/discover.test.d.ts +1 -0
- package/dist/wasm/discover.test.js +24 -0
- package/dist/wasm/discover.test.js.map +1 -0
- package/dist/wasm/module.d.ts +151 -0
- package/dist/wasm/module.js +575 -0
- package/dist/wasm/module.js.map +1 -0
- package/dist/wasm/translate.d.ts +48 -0
- package/dist/wasm/translate.js +2129 -0
- package/dist/wasm/translate.js.map +1 -0
- package/dist/wasm/translate.test.d.ts +1 -0
- package/dist/wasm/translate.test.js +207 -0
- package/dist/wasm/translate.test.js.map +1 -0
- package/package.json +21 -20
- package/surface-manifest.json +303 -19
|
@@ -41,6 +41,8 @@ import { sideEffectFreeOptionValue } from "./surfaces.js";
|
|
|
41
41
|
import { lowerDynObjectLiteral } from "./expressions/object-literals.js";
|
|
42
42
|
import { dynUndefinedExpr, varRef } from "../../ir/build.js";
|
|
43
43
|
import { genResultRecord } from "../type-mapper.js";
|
|
44
|
+
import { noteUntypedStreamFlow, requestGeneralStreamSurface } from "./general-streams.js";
|
|
45
|
+
import { dynNativeBranch } from "./dyn-streams.js";
|
|
44
46
|
import { extractIteratorValue, genStep, genValue, stepDrivable } from "./lower-generators.js";
|
|
45
47
|
import { BOOL, DYN, F64, RUNTIME_STREAM_CLASSES, STRING, VOID, arrayOf, BYTES_U8, canBoxFuncIntoDyn, canConvertToDyn, funcOf, typeEquals, typeKey, } from "../../ir/ir.js";
|
|
46
48
|
const BYTES = BYTES_U8;
|
|
@@ -129,6 +131,15 @@ export const UNDERSCORE_METHODS = new Map([
|
|
|
129
131
|
["transform", "_transform"],
|
|
130
132
|
["flush", "_flush"],
|
|
131
133
|
]);
|
|
134
|
+
/** The completion callback's parameter position in each underscore
|
|
135
|
+
* method that takes one (cbTuples' "fn" positions). */
|
|
136
|
+
export const STREAM_COMPLETION_CALLBACK_INDEX = new Map([
|
|
137
|
+
["_write", 2],
|
|
138
|
+
["_final", 0],
|
|
139
|
+
["_destroy", 1],
|
|
140
|
+
["_transform", 2],
|
|
141
|
+
["_flush", 0],
|
|
142
|
+
]);
|
|
132
143
|
/** The accepted option-callback names (canonical flag order) and the
|
|
133
144
|
* duplex-shaped-head answer for one runtime stream class. */
|
|
134
145
|
export function streamCtorShape(cls) {
|
|
@@ -221,7 +232,7 @@ export function streamForcedTuple(lowerer, info, name) {
|
|
|
221
232
|
function lowerStreamCallback(lowerer, which, node, thisType, fullTuple) {
|
|
222
233
|
const loc = locOf(node);
|
|
223
234
|
const { shapes, funcType } = lowerer.lambdaSignature(node);
|
|
224
|
-
if (node.modifiers?.some((m) => m.kind === ts.SyntaxKind.AsyncKeyword)) {
|
|
235
|
+
if (node.modifiers?.nodes.some((m) => m.kind === ts.SyntaxKind.AsyncKeyword)) {
|
|
225
236
|
lowerer.unsupported("SC1090", node, `async stream '${which}' callbacks`);
|
|
226
237
|
}
|
|
227
238
|
if (funcType.params.length > fullTuple.length) {
|
|
@@ -248,10 +259,10 @@ function lowerStreamCallback(lowerer, which, node, thisType, fullTuple) {
|
|
|
248
259
|
const thisLocal = ts.isArrowFunction(node)
|
|
249
260
|
? lowerer.declareHiddenLocal("this", thisType)
|
|
250
261
|
: lowerer.declareThis(thisType);
|
|
251
|
-
const { params, prologue } = lowerer.declareParams(node.parameters, shapes);
|
|
262
|
+
const { params, prologue } = lowerer.declareParams(node.parameters.nodes, shapes);
|
|
252
263
|
let body;
|
|
253
264
|
if (node.body !== undefined && ts.isBlock(node.body)) {
|
|
254
|
-
body = lowerer.lowerStmts(node.body.statements);
|
|
265
|
+
body = lowerer.lowerStmts(node.body.statements.nodes);
|
|
255
266
|
}
|
|
256
267
|
else if (node.body !== undefined) {
|
|
257
268
|
// Bare-expression bodies (`read: () => this.push(null)`): the value
|
|
@@ -402,7 +413,7 @@ function followOptionsArg(lowerer, arg) {
|
|
|
402
413
|
catch {
|
|
403
414
|
return node;
|
|
404
415
|
}
|
|
405
|
-
const decl = sym ?
|
|
416
|
+
const decl = sym ? sym.valueDeclaration : undefined;
|
|
406
417
|
if (!sym || !decl || !ts.isVariableDeclaration(decl) || decl.initializer === undefined)
|
|
407
418
|
return node;
|
|
408
419
|
if ((ts.getCombinedNodeFlags(decl) & ts.NodeFlags.Const) === 0)
|
|
@@ -485,6 +496,28 @@ function dynOptionsValue(lowerer, arg) {
|
|
|
485
496
|
const v = lowerer.lowerExpr(followed);
|
|
486
497
|
return v.type.kind === "dyn" ? v : null;
|
|
487
498
|
}
|
|
499
|
+
/** @types/node declares the transform/flush completion callback as
|
|
500
|
+
* `(error?: Error | null, data?: any) => void`. Outside objectMode Node
|
|
501
|
+
* accepts only a Buffer, a string or nothing as `data`, so the callback
|
|
502
|
+
* parameter is typed with that union while the option callback lowers: a
|
|
503
|
+
* checked-dynamic value passed as `data` converts at the call. Returns the
|
|
504
|
+
* pinned parameter symbol (the caller unpins it), or null when the
|
|
505
|
+
* declared type needs no pin. */
|
|
506
|
+
function pinAnyDataCompletion(lowerer, which, fnNode) {
|
|
507
|
+
const index = which === "transform" ? 2 : which === "flush" ? 0 : -1;
|
|
508
|
+
const param = index < 0 ? undefined : fnNode.parameters.nodes[index];
|
|
509
|
+
if (param === undefined || !ts.isIdentifier(param.name) || param.dotDotDotToken)
|
|
510
|
+
return null;
|
|
511
|
+
const symbol = lowerer.checker.getSymbolAtLocation(param.name);
|
|
512
|
+
if (!symbol || lowerer.stageSourceTypes.has(symbol))
|
|
513
|
+
return null;
|
|
514
|
+
const declared = lowerer.paramShape(param).type;
|
|
515
|
+
if (declared.kind !== "func" || declared.rest || declared.params[1]?.kind !== "dyn")
|
|
516
|
+
return null;
|
|
517
|
+
const data = unionOf(lowerer, [BYTES, STRING, { kind: "undefinedT" }]);
|
|
518
|
+
lowerer.stageSourceTypes.set(symbol, funcOf([declared.params[0], data, ...declared.params.slice(2)], declared.ret));
|
|
519
|
+
return symbol;
|
|
520
|
+
}
|
|
488
521
|
/** Parses the options object literal of a stream constructor. `which`
|
|
489
522
|
* names the callbacks this class accepts, in canonical flag order. */
|
|
490
523
|
function parseStreamOptions(lowerer, ctorName, arg, thisType, accepted, loc,
|
|
@@ -515,7 +548,7 @@ fallbackCb) {
|
|
|
515
548
|
}
|
|
516
549
|
const tuples = cbTuples(lowerer);
|
|
517
550
|
const present = new Map();
|
|
518
|
-
for (const prop of optsLit?.properties ?? []) {
|
|
551
|
+
for (const prop of optsLit?.properties?.nodes ?? []) {
|
|
519
552
|
const propName = ts.isSpreadAssignment(prop) ? undefined : prop.name;
|
|
520
553
|
const name = propName && ts.isIdentifier(propName)
|
|
521
554
|
? propName.text
|
|
@@ -550,20 +583,27 @@ fallbackCb) {
|
|
|
550
583
|
continue;
|
|
551
584
|
}
|
|
552
585
|
const full = tuples[name].map((t) => (t === "fn" ? null : t));
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
586
|
+
const pinned = pinAnyDataCompletion(lowerer, name, fnNode);
|
|
587
|
+
try {
|
|
588
|
+
// The completion-callback tail: typed by the checker contextually;
|
|
589
|
+
// accept the user's declared func type as the tuple's entry so the
|
|
590
|
+
// prefix check compares like with like.
|
|
591
|
+
const { funcType } = lowerer.lambdaSignature(fnNode);
|
|
592
|
+
const tuple = full.map((t, i) => {
|
|
593
|
+
if (t !== null)
|
|
594
|
+
return t;
|
|
595
|
+
const declared = funcType.params[i];
|
|
596
|
+
if (declared !== undefined && declared.kind !== "func" && declared.kind !== "dyn") {
|
|
597
|
+
lowerer.noLowering(`a '${name}' callback whose parameter ${i} is '${lowerer.fmt(declared)}' where Node passes the completion callback`, fnNode);
|
|
598
|
+
}
|
|
599
|
+
return declared ?? funcOf([], VOID);
|
|
600
|
+
});
|
|
601
|
+
present.set(name, lowerStreamCallback(lowerer, name, fnNode, thisType, tuple));
|
|
602
|
+
}
|
|
603
|
+
finally {
|
|
604
|
+
if (pinned)
|
|
605
|
+
lowerer.stageSourceTypes.delete(pinned);
|
|
606
|
+
}
|
|
567
607
|
continue;
|
|
568
608
|
}
|
|
569
609
|
// `{ signal }` shorthand: the binding is the value.
|
|
@@ -758,7 +798,7 @@ export function lowerStreamNew(lowerer, expr, info) {
|
|
|
758
798
|
if (!RUNTIME_STREAM_CLASSES.has(cls))
|
|
759
799
|
lowerer.unsupported("SC1090", expr, `constructing ${cls}`);
|
|
760
800
|
const thisType = { kind: "object", className: cls };
|
|
761
|
-
const args = expr.arguments ?? [];
|
|
801
|
+
const args = expr.arguments?.nodes ?? [];
|
|
762
802
|
if (args.length > 1) {
|
|
763
803
|
lowerer.noLowering(`new ${info.def.name.slice(1)} with ${args.length} arguments`, expr, "the supported form takes one options object");
|
|
764
804
|
}
|
|
@@ -815,6 +855,15 @@ export function lowerStreamNew(lowerer, expr, info) {
|
|
|
815
855
|
loc,
|
|
816
856
|
};
|
|
817
857
|
}
|
|
858
|
+
/** True when a value of Node's argument type `passed` widens implicitly
|
|
859
|
+
* into the declared parameter type `declared` (one of its union arms, or a
|
|
860
|
+
* sub-union of it). */
|
|
861
|
+
function widensInto(lowerer, passed, declared, loc) {
|
|
862
|
+
if (declared.kind !== "union")
|
|
863
|
+
return false;
|
|
864
|
+
const probe = { kind: "varRef", localId: "%probe", type: passed, loc };
|
|
865
|
+
return typeEquals(lowerer.coerceToExpected(probe, declared).type, declared);
|
|
866
|
+
}
|
|
818
867
|
/* ── user subclasses (`extends Readable`, the underscore-override form) ── */
|
|
819
868
|
/** The wrapper closure binding one overridden underscore method as the
|
|
820
869
|
* runtime's option callback: a lifted (this, ...prefix) function whose
|
|
@@ -865,7 +914,14 @@ function streamMethodWrapper(lowerer, info, which, methodName, thisType, loc, bl
|
|
|
865
914
|
}
|
|
866
915
|
}
|
|
867
916
|
else if (!typeEquals(got.type, want)) {
|
|
868
|
-
|
|
917
|
+
// A declared supertype of what Node passes (`chunk: Buffer | string`)
|
|
918
|
+
// is sound: the wrapper takes Node's value and widens it into the
|
|
919
|
+
// declared parameter.
|
|
920
|
+
if (widensInto(lowerer, want, got.type, loc)) {
|
|
921
|
+
paramTypes.push(want);
|
|
922
|
+
continue;
|
|
923
|
+
}
|
|
924
|
+
lowerer.noLowering(`a '${methodName}' method whose parameter ${i} is '${lowerer.fmt(got.type)}' where Node passes '${lowerer.fmt(want)}'`, blame, "annotate the parameter with the Node signature's type or a supertype of it (chunks are Buffers here)");
|
|
869
925
|
}
|
|
870
926
|
paramTypes.push(got.type);
|
|
871
927
|
}
|
|
@@ -880,7 +936,9 @@ function streamMethodWrapper(lowerer, info, which, methodName, thisType, loc, bl
|
|
|
880
936
|
for (let i = 0; i < paramTypes.length; i++) {
|
|
881
937
|
const local = lowerer.declareHiddenLocal(`a${i}`, paramTypes[i]);
|
|
882
938
|
params.push({ localId: local.id, name: local.name, type: paramTypes[i] });
|
|
883
|
-
|
|
939
|
+
const arg = { kind: "varRef", localId: local.id, type: paramTypes[i], loc };
|
|
940
|
+
const declaredType = declared[i].type;
|
|
941
|
+
argRefs.push(typeEquals(arg.type, declaredType) ? arg : lowerer.coerceToExpected(arg, declaredType));
|
|
884
942
|
}
|
|
885
943
|
const thisRef = { kind: "varRef", localId: thisLocal.id, type: thisType, loc };
|
|
886
944
|
let call;
|
|
@@ -1164,14 +1222,14 @@ export function lowerStreamStaticCall(lowerer, call, access) {
|
|
|
1164
1222
|
// exists; valid shapes keep the fence — the web bridge has no lowering.
|
|
1165
1223
|
if (member === "toWeb" &&
|
|
1166
1224
|
cls === "%Readable" &&
|
|
1167
|
-
call.arguments.length === 2 &&
|
|
1168
|
-
isJsSourceFile(
|
|
1169
|
-
ts.isObjectLiteralExpression(call.arguments[1])) {
|
|
1170
|
-
for (const p of call.arguments[1].properties) {
|
|
1225
|
+
call.arguments.nodes.length === 2 &&
|
|
1226
|
+
isJsSourceFile(ts.getSourceFileOfNode(call)) &&
|
|
1227
|
+
ts.isObjectLiteralExpression(call.arguments.nodes[1])) {
|
|
1228
|
+
for (const p of call.arguments.nodes[1].properties.nodes) {
|
|
1171
1229
|
if (ts.isPropertyAssignment(p) && ts.isIdentifier(p.name) && p.name.text === "type") {
|
|
1172
1230
|
const t = lowerer.typeOf(p.initializer);
|
|
1173
1231
|
if (t.isStringLiteralType() && t.value !== "bytes") {
|
|
1174
|
-
lowerer.lowerExpr(call.arguments[0]); // evaluation order (the stream argument)
|
|
1232
|
+
lowerer.lowerExpr(call.arguments.nodes[0]); // evaluation order (the stream argument)
|
|
1175
1233
|
return nodeThrowExpr(1, "ERR_INVALID_ARG_VALUE", `The property 'options.type' must be one of: 'bytes', undefined. Received '${t.value}'`, lowerer.mapTypeOf(lowerer.typeOf(call)) ?? DYN, loc);
|
|
1176
1234
|
}
|
|
1177
1235
|
}
|
|
@@ -1183,12 +1241,12 @@ export function lowerStreamStaticCall(lowerer, call, access) {
|
|
|
1183
1241
|
if (cls !== "%Readable") {
|
|
1184
1242
|
lowerer.noLowering(`${cls.slice(1)}.from`, call, "Readable.from is the lowered form");
|
|
1185
1243
|
}
|
|
1186
|
-
const args = call.arguments;
|
|
1244
|
+
const args = call.arguments.nodes;
|
|
1187
1245
|
if (args.length > 2) {
|
|
1188
1246
|
lowerer.noLowering(`Readable.from with ${args.length} arguments`, call, "Readable.from(iterable, options) is the supported form");
|
|
1189
1247
|
}
|
|
1190
1248
|
const type = { kind: "object", className: "%Readable" };
|
|
1191
|
-
const js = isJsSourceFile(
|
|
1249
|
+
const js = isJsSourceFile(ts.getSourceFileOfNode(call));
|
|
1192
1250
|
const srcNode = args[0];
|
|
1193
1251
|
const optsNode = args[1];
|
|
1194
1252
|
const srcT = srcNode ? lowerer.mapTypeOf(lowerer.typeOf(srcNode)) : null;
|
|
@@ -1626,7 +1684,7 @@ function fromOptions(lowerer, node) {
|
|
|
1626
1684
|
return null;
|
|
1627
1685
|
let flags = 0;
|
|
1628
1686
|
let hwm = null;
|
|
1629
|
-
for (const prop of node.properties) {
|
|
1687
|
+
for (const prop of node.properties.nodes) {
|
|
1630
1688
|
if (!ts.isPropertyAssignment(prop) ||
|
|
1631
1689
|
!(ts.isIdentifier(prop.name) || ts.isStringLiteral(prop.name))) {
|
|
1632
1690
|
return null;
|
|
@@ -1690,6 +1748,24 @@ function lowerStreamArg(lowerer, node, what) {
|
|
|
1690
1748
|
const v = isHashValueType(lowered.type)
|
|
1691
1749
|
? hashStreamOf(lowered, what === "pipeline" || what === "compose")
|
|
1692
1750
|
: lowered;
|
|
1751
|
+
// A checked-dynamic pipeline stage (an untyped source or destination):
|
|
1752
|
+
// a boxed native stream unwraps at run time; other values (iterables,
|
|
1753
|
+
// functions) throw the not-supported Error there.
|
|
1754
|
+
if (v.type.kind === "dyn" && what === "pipeline") {
|
|
1755
|
+
noteUntypedStreamFlow(lowerer, null);
|
|
1756
|
+
return {
|
|
1757
|
+
kind: "libCall",
|
|
1758
|
+
fn: "stream.unboxDyn",
|
|
1759
|
+
args: [
|
|
1760
|
+
v,
|
|
1761
|
+
strLit(lowerer.dynNodeStreams
|
|
1762
|
+
? "pipeline stages other than native streams (JavaScript stream objects, iterables, generators, plain functions, and { readable, writable } pairs) are not supported yet"
|
|
1763
|
+
: "pipeline stages other than native streams (iterables, generators, plain functions, and { readable, writable } pairs) are not supported yet", locOf(node)),
|
|
1764
|
+
],
|
|
1765
|
+
type: { kind: "object", className: "%Duplex" },
|
|
1766
|
+
loc: locOf(node),
|
|
1767
|
+
};
|
|
1768
|
+
}
|
|
1693
1769
|
const info = v.type.kind === "object" ? lowerer.classes.get(v.type.className) : undefined;
|
|
1694
1770
|
if (!streamSidesOf(lowerer, info)) {
|
|
1695
1771
|
// A provably-non-stream value in a JS source (the invalid-input
|
|
@@ -1708,7 +1784,7 @@ function lowerStreamArg(lowerer, node, what) {
|
|
|
1708
1784
|
loc: locOf(node),
|
|
1709
1785
|
});
|
|
1710
1786
|
};
|
|
1711
|
-
if (isJsSourceFile(
|
|
1787
|
+
if (isJsSourceFile(ts.getSourceFileOfNode(node)) && lowerer.dynConvertible(v.type)) {
|
|
1712
1788
|
if (what === "pipeline") {
|
|
1713
1789
|
// Strings and arrays are iterables — VALID pipeline stages in
|
|
1714
1790
|
// Node — and a record carrying a readable/writable member may be
|
|
@@ -1723,7 +1799,7 @@ function lowerStreamArg(lowerer, node, what) {
|
|
|
1723
1799
|
argTypeThrow("body", PIPELINE_STAGE_EXPECTED);
|
|
1724
1800
|
}
|
|
1725
1801
|
}
|
|
1726
|
-
else if ((ts.isObjectLiteralExpression(node) && node.properties.length === 0) ||
|
|
1802
|
+
else if ((ts.isObjectLiteralExpression(node) && node.properties.nodes.length === 0) ||
|
|
1727
1803
|
v.type.kind === "record" ||
|
|
1728
1804
|
v.type.kind === "string" ||
|
|
1729
1805
|
v.type.kind === "f64" ||
|
|
@@ -1829,7 +1905,7 @@ function eosOptions(lowerer, node, promiseForm) {
|
|
|
1829
1905
|
return false;
|
|
1830
1906
|
lowerer.noLowering(`the finished option '${key}' with a non-literal value`, p.initializer, "pass true or false");
|
|
1831
1907
|
};
|
|
1832
|
-
for (const p of node.properties) {
|
|
1908
|
+
for (const p of node.properties.nodes) {
|
|
1833
1909
|
const key = (ts.isPropertyAssignment(p) || ts.isShorthandPropertyAssignment(p)) && ts.isIdentifier(p.name)
|
|
1834
1910
|
? p.name.text
|
|
1835
1911
|
: null;
|
|
@@ -1863,7 +1939,7 @@ function eosOptions(lowerer, node, promiseForm) {
|
|
|
1863
1939
|
* any expression, end as a boolean literal. */
|
|
1864
1940
|
function pipelineOptions(lowerer, node) {
|
|
1865
1941
|
const out = { end: true, signal: null };
|
|
1866
|
-
for (const p of node.properties) {
|
|
1942
|
+
for (const p of node.properties.nodes) {
|
|
1867
1943
|
const key = (ts.isPropertyAssignment(p) || ts.isShorthandPropertyAssignment(p)) && ts.isIdentifier(p.name)
|
|
1868
1944
|
? p.name.text
|
|
1869
1945
|
: null;
|
|
@@ -1892,7 +1968,7 @@ function pipelineOptions(lowerer, node) {
|
|
|
1892
1968
|
* does not own — the caller's module-qualified fence speaks. */
|
|
1893
1969
|
export function lowerStreamModuleCall(lowerer, call, bi, loc) {
|
|
1894
1970
|
if (bi.module === "stream/promises") {
|
|
1895
|
-
const args = call.arguments;
|
|
1971
|
+
const args = call.arguments.nodes;
|
|
1896
1972
|
// finished(stream) → a pending void promise the terminal watcher
|
|
1897
1973
|
// settles (rejected with the stream's error, or
|
|
1898
1974
|
// ERR_STREAM_PREMATURE_CLOSE — the callback form's status, boxed
|
|
@@ -1993,7 +2069,7 @@ export function lowerStreamModuleCall(lowerer, call, bi, loc) {
|
|
|
1993
2069
|
return null;
|
|
1994
2070
|
}
|
|
1995
2071
|
if (bi.module === "stream/consumers") {
|
|
1996
|
-
const args = call.arguments;
|
|
2072
|
+
const args = call.arguments.nodes;
|
|
1997
2073
|
// text/json/buffer/arrayBuffer(stream) → a pending promise the
|
|
1998
2074
|
// accumulate-and-settle machinery resolves at the terminal point (the
|
|
1999
2075
|
// utf8 decode / the parsed JSON dyn tree / the concatenated bytes / an
|
|
@@ -2034,7 +2110,7 @@ export function lowerStreamModuleCall(lowerer, call, bi, loc) {
|
|
|
2034
2110
|
}
|
|
2035
2111
|
if (bi.module !== "stream")
|
|
2036
2112
|
return null;
|
|
2037
|
-
const args = call.arguments;
|
|
2113
|
+
const args = call.arguments.nodes;
|
|
2038
2114
|
if (bi.member === "getDefaultHighWaterMark") {
|
|
2039
2115
|
// Node 24: 65536 bytes / 16 objects — compile-time literals only.
|
|
2040
2116
|
// The byte default is platform-split at Node's source
|
|
@@ -2206,7 +2282,7 @@ function lowerPipelineStages(lowerer, stageArgs, loc) {
|
|
|
2206
2282
|
for (let i = first; i < end; i++) {
|
|
2207
2283
|
const fn = stageArgs[i];
|
|
2208
2284
|
const isLast = destFn && i === end - 1;
|
|
2209
|
-
const isAsync = (fn.modifiers ?? []).some((m) => m.kind === ts.SyntaxKind.AsyncKeyword);
|
|
2285
|
+
const isAsync = (fn.modifiers?.nodes ?? []).some((m) => m.kind === ts.SyntaxKind.AsyncKeyword);
|
|
2210
2286
|
const isGen = ts.isFunctionExpression(fn) && fn.asteriskToken !== undefined;
|
|
2211
2287
|
if (isLast && isGen) {
|
|
2212
2288
|
// pipeline() pumps it into an object-mode PassThrough, whose
|
|
@@ -2221,14 +2297,14 @@ function lowerPipelineStages(lowerer, stageArgs, loc) {
|
|
|
2221
2297
|
: "pipeline stages that are not async generator functions", fn, "write the stage as async function* (source) { for await (const chunk of source) ... }");
|
|
2222
2298
|
}
|
|
2223
2299
|
const optionsAt = srcT === null ? 0 : 1;
|
|
2224
|
-
if (fn.parameters.length > optionsAt + 1) {
|
|
2225
|
-
lowerer.noLowering("pipeline stages with parameters after the options argument", fn.parameters[optionsAt + 1], "a stage takes the source and { signal }");
|
|
2300
|
+
if (fn.parameters.nodes.length > optionsAt + 1) {
|
|
2301
|
+
lowerer.noLowering("pipeline stages with parameters after the options argument", fn.parameters.nodes[optionsAt + 1], "a stage takes the source and { signal }");
|
|
2226
2302
|
}
|
|
2227
2303
|
const lowered = lowerStageFunction(lowerer, fn, srcT);
|
|
2228
2304
|
const params = lowered.closure.type.kind === "func" ? lowered.closure.type.params : [];
|
|
2229
2305
|
if (params.length > optionsAt) {
|
|
2230
2306
|
if (params[optionsAt].kind !== "dyn") {
|
|
2231
|
-
lowerer.noLowering("a pipeline stage's options argument with this type", fn.parameters[optionsAt], "type it as { signal: AbortSignal }");
|
|
2307
|
+
lowerer.noLowering("a pipeline stage's options argument with this type", fn.parameters.nodes[optionsAt], "type it as { signal: AbortSignal }");
|
|
2232
2308
|
}
|
|
2233
2309
|
mask |= 1 << (i - first);
|
|
2234
2310
|
}
|
|
@@ -2411,7 +2487,7 @@ function pipelineAbortHelper(lowerer, ac, loc) {
|
|
|
2411
2487
|
* `for await` loops. Answers the closure and what it returns: an async
|
|
2412
2488
|
* generator, or a promise for a destination async function. */
|
|
2413
2489
|
function lowerStageFunction(lowerer, fn, srcT) {
|
|
2414
|
-
const param = srcT === null ? undefined : fn.parameters[0];
|
|
2490
|
+
const param = srcT === null ? undefined : fn.parameters.nodes[0];
|
|
2415
2491
|
const symbol = param && ts.isIdentifier(param.name)
|
|
2416
2492
|
? lowerer.checker.getSymbolAtLocation(param.name)
|
|
2417
2493
|
: undefined;
|
|
@@ -2456,7 +2532,7 @@ function lowerStageFunction(lowerer, fn, srcT) {
|
|
|
2456
2532
|
* the wrong position, a single Readable or Writable (Duplex.from wraps
|
|
2457
2533
|
* those), and functions, iterables or web streams have no lowering. */
|
|
2458
2534
|
function lowerStreamCompose(lowerer, call, loc) {
|
|
2459
|
-
const args = call.arguments;
|
|
2535
|
+
const args = call.arguments.nodes;
|
|
2460
2536
|
const duplex = { kind: "object", className: "%Duplex" };
|
|
2461
2537
|
if (args.some((a) => ts.isSpreadElement(a))) {
|
|
2462
2538
|
lowerer.noLowering("compose with spread arguments", call, "pass the streams directly");
|
|
@@ -2520,14 +2596,14 @@ function lowerOperatorCallback(lowerer, node, member, maxParams) {
|
|
|
2520
2596
|
const loc = locOf(node);
|
|
2521
2597
|
const optionsParam = (at) => lowerer.noLowering(`${member} callbacks that declare the options argument`, at, "the { signal } argument has no lowering — take only the chunk");
|
|
2522
2598
|
if ((ts.isArrowFunction(node) || ts.isFunctionExpression(node)) &&
|
|
2523
|
-
node.parameters.length > maxParams) {
|
|
2524
|
-
optionsParam(node.parameters[maxParams]);
|
|
2599
|
+
node.parameters.nodes.length > maxParams) {
|
|
2600
|
+
optionsParam(node.parameters.nodes[maxParams]);
|
|
2525
2601
|
}
|
|
2526
2602
|
const v = lowerer.lowerExpr(node);
|
|
2527
2603
|
if (v.type.kind === "dyn")
|
|
2528
2604
|
return v;
|
|
2529
2605
|
if (v.type.kind !== "func" &&
|
|
2530
|
-
isJsSourceFile(
|
|
2606
|
+
isJsSourceFile(ts.getSourceFileOfNode(node)) &&
|
|
2531
2607
|
lowerer.dynConvertible(v.type)) {
|
|
2532
2608
|
// JavaScript passes any value; Node's validateFunction throws.
|
|
2533
2609
|
return { kind: "dynFrom", value: v, type: DYN, loc };
|
|
@@ -2577,7 +2653,7 @@ function lowerOperatorValue(lowerer, node, what, loc, literalObject) {
|
|
|
2577
2653
|
}
|
|
2578
2654
|
function lowerStreamOperator(lowerer, call, access, member) {
|
|
2579
2655
|
const loc = locOf(call);
|
|
2580
|
-
const args = call.arguments;
|
|
2656
|
+
const args = call.arguments.nodes;
|
|
2581
2657
|
const recv = lowerer.lowerExpr(access.expression);
|
|
2582
2658
|
const readable = { kind: "object", className: "%Readable" };
|
|
2583
2659
|
const opts = (i) => lowerOperatorValue(lowerer, args[i], `${member} options`, loc, true);
|
|
@@ -2688,7 +2764,7 @@ function pipeEndOption(lowerer, options, loc) {
|
|
|
2688
2764
|
if (!ts.isObjectLiteralExpression(options)) {
|
|
2689
2765
|
lowerer.noLowering("pipe with a non-literal options argument", options, "{ end: <bool> } inline is the supported form");
|
|
2690
2766
|
}
|
|
2691
|
-
for (const prop of options.properties) {
|
|
2767
|
+
for (const prop of options.properties.nodes) {
|
|
2692
2768
|
if (!ts.isPropertyAssignment(prop) || !ts.isIdentifier(prop.name) || prop.name.text !== "end") {
|
|
2693
2769
|
lowerer.noLowering("a pipe option other than 'end'", prop);
|
|
2694
2770
|
}
|
|
@@ -2696,6 +2772,210 @@ function pipeEndOption(lowerer, options, loc) {
|
|
|
2696
2772
|
}
|
|
2697
2773
|
return end;
|
|
2698
2774
|
}
|
|
2775
|
+
/** `readable.pipe(process.stdout)`: the process stream joins the pipe as
|
|
2776
|
+
* an fd-backed Writable (stream.stdioWritable), and — like Node, which
|
|
2777
|
+
* never ends process.stdout or process.stderr from a pipe — the source's
|
|
2778
|
+
* end does not end it. pipe() answers the process stream itself. */
|
|
2779
|
+
function pipeIntoStdio(lowerer, call, access, target) {
|
|
2780
|
+
const loc = locOf(call);
|
|
2781
|
+
// JS order: the receiver, then the destination, then the options.
|
|
2782
|
+
const receiverValue = lowerer.lowerExpr(access.expression);
|
|
2783
|
+
const source = lowerer.declareHiddenLocal("%pipeSource", receiverValue.type);
|
|
2784
|
+
const stdio = lowerer.declareHiddenLocal("%pipeStdio", target.type);
|
|
2785
|
+
const options = call.arguments.nodes[1];
|
|
2786
|
+
const stmts = [
|
|
2787
|
+
{ kind: "varDecl", localId: source.id, init: receiverValue, loc },
|
|
2788
|
+
{ kind: "varDecl", localId: stdio.id, init: target, loc },
|
|
2789
|
+
];
|
|
2790
|
+
// The options literal still evaluates; its end flag has no effect here.
|
|
2791
|
+
if (options !== undefined) {
|
|
2792
|
+
stmts.push({ kind: "exprStmt", expr: pipeEndOption(lowerer, options, loc), loc });
|
|
2793
|
+
}
|
|
2794
|
+
const receiver = { kind: "varRef", localId: source.id, type: receiverValue.type, loc };
|
|
2795
|
+
const writable = { kind: "object", className: "%Writable" };
|
|
2796
|
+
stmts.push({
|
|
2797
|
+
kind: "exprStmt",
|
|
2798
|
+
expr: {
|
|
2799
|
+
kind: "libCall",
|
|
2800
|
+
fn: "readable.pipe",
|
|
2801
|
+
args: [
|
|
2802
|
+
receiver,
|
|
2803
|
+
{
|
|
2804
|
+
kind: "libCall",
|
|
2805
|
+
fn: "stream.stdioWritable",
|
|
2806
|
+
args: [{ kind: "varRef", localId: stdio.id, type: target.type, loc }],
|
|
2807
|
+
type: writable,
|
|
2808
|
+
loc,
|
|
2809
|
+
},
|
|
2810
|
+
boolLit(false, loc),
|
|
2811
|
+
],
|
|
2812
|
+
type: writable,
|
|
2813
|
+
loc,
|
|
2814
|
+
},
|
|
2815
|
+
loc,
|
|
2816
|
+
});
|
|
2817
|
+
return {
|
|
2818
|
+
kind: "seqExpr",
|
|
2819
|
+
stmts,
|
|
2820
|
+
result: { kind: "varRef", localId: stdio.id, type: target.type, loc },
|
|
2821
|
+
type: target.type,
|
|
2822
|
+
loc,
|
|
2823
|
+
};
|
|
2824
|
+
}
|
|
2825
|
+
/** `readable.unpipe(untyped)`: a native destination (boxed) unpipes as a
|
|
2826
|
+
* typed one does; any other value unpipes the JavaScript destination a
|
|
2827
|
+
* pipe into it registered (scr_stream_dyn.c), or does nothing when there
|
|
2828
|
+
* is none, as Node's unpipe does for a destination it is not piped into.
|
|
2829
|
+
* The call answers the source. */
|
|
2830
|
+
function unpipeDyn(lowerer, receiver, dst, loc) {
|
|
2831
|
+
noteUntypedStreamFlow(lowerer, null);
|
|
2832
|
+
const source = lowerer.declareHiddenLocal("%unpipeSource", receiver.type);
|
|
2833
|
+
const destination = lowerer.declareHiddenLocal("%unpipeDestination", dst.type);
|
|
2834
|
+
const sourceRef = varRef(source.id, receiver.type, loc);
|
|
2835
|
+
const destinationRef = varRef(destination.id, dst.type, loc);
|
|
2836
|
+
const stmts = [
|
|
2837
|
+
{ kind: "varDecl", localId: source.id, init: receiver, loc },
|
|
2838
|
+
{ kind: "varDecl", localId: destination.id, init: dst, loc },
|
|
2839
|
+
];
|
|
2840
|
+
const unpipeNative = (native) => ({
|
|
2841
|
+
kind: "exprStmt",
|
|
2842
|
+
expr: {
|
|
2843
|
+
kind: "libCall",
|
|
2844
|
+
fn: "readable.unpipe",
|
|
2845
|
+
args: [sourceRef, native],
|
|
2846
|
+
type: receiver.type,
|
|
2847
|
+
loc,
|
|
2848
|
+
},
|
|
2849
|
+
loc,
|
|
2850
|
+
});
|
|
2851
|
+
if (lowerer.dynNodeStreams) {
|
|
2852
|
+
stmts.push(dynNativeBranch(lowerer, destinationRef, "w", unpipeNative, {
|
|
2853
|
+
kind: "exprStmt",
|
|
2854
|
+
expr: {
|
|
2855
|
+
kind: "libCall",
|
|
2856
|
+
fn: "stream.unpipeDyn",
|
|
2857
|
+
args: [sourceRef, destinationRef],
|
|
2858
|
+
type: VOID,
|
|
2859
|
+
loc,
|
|
2860
|
+
},
|
|
2861
|
+
loc,
|
|
2862
|
+
}));
|
|
2863
|
+
}
|
|
2864
|
+
else {
|
|
2865
|
+
stmts.push(unpipeNative({
|
|
2866
|
+
kind: "libCall",
|
|
2867
|
+
fn: "stream.unboxDyn",
|
|
2868
|
+
args: [
|
|
2869
|
+
destinationRef,
|
|
2870
|
+
strLit("unpipe destinations other than native streams are not supported yet", loc),
|
|
2871
|
+
],
|
|
2872
|
+
type: { kind: "object", className: "%Duplex" },
|
|
2873
|
+
loc,
|
|
2874
|
+
}));
|
|
2875
|
+
}
|
|
2876
|
+
return { kind: "seqExpr", stmts, result: sourceRef, type: receiver.type, loc };
|
|
2877
|
+
}
|
|
2878
|
+
/** The pipe() libCall for a destination of type `dst`. Under the general
|
|
2879
|
+
* stream representation a Writable slot can hold the converted
|
|
2880
|
+
* process.stdout / process.stderr, which a pipe never ends (as in Node), so
|
|
2881
|
+
* the pipe takes readable.pipeGeneral, which checks for them. */
|
|
2882
|
+
function generalPipe(lowerer, dst) {
|
|
2883
|
+
return lowerer.generalNodeStreams && dst.kind === "object" && dst.className === "%Writable"
|
|
2884
|
+
? "readable.pipeGeneral"
|
|
2885
|
+
: "readable.pipe";
|
|
2886
|
+
}
|
|
2887
|
+
/** `readable.pipe(untyped)`: a checked-dynamic destination unwraps a boxed
|
|
2888
|
+
* native stream at run time (stream.unboxDyn; other values throw the
|
|
2889
|
+
* not-supported Error), and pipe() answers the destination value itself. */
|
|
2890
|
+
function pipeIntoDyn(lowerer, call, access, target) {
|
|
2891
|
+
const loc = locOf(call);
|
|
2892
|
+
noteUntypedStreamFlow(lowerer, null);
|
|
2893
|
+
const receiverValue = lowerer.lowerExpr(access.expression);
|
|
2894
|
+
const source = lowerer.declareHiddenLocal("%pipeSource", receiverValue.type);
|
|
2895
|
+
const destination = lowerer.declareHiddenLocal("%pipeDestination", target.type);
|
|
2896
|
+
const stmts = [
|
|
2897
|
+
{ kind: "varDecl", localId: source.id, init: receiverValue, loc },
|
|
2898
|
+
{ kind: "varDecl", localId: destination.id, init: target, loc },
|
|
2899
|
+
];
|
|
2900
|
+
const end = pipeEndOption(lowerer, call.arguments.nodes[1], loc);
|
|
2901
|
+
const duplex = { kind: "object", className: "%Duplex" };
|
|
2902
|
+
// Checked-dynamic stream slots (dyn-streams.ts): a JavaScript stream
|
|
2903
|
+
// object is a destination too, piped with Node's listener protocol.
|
|
2904
|
+
if (lowerer.dynNodeStreams) {
|
|
2905
|
+
const sourceRef = { kind: "varRef", localId: source.id, type: receiverValue.type, loc };
|
|
2906
|
+
const destinationRef = {
|
|
2907
|
+
kind: "varRef",
|
|
2908
|
+
localId: destination.id,
|
|
2909
|
+
type: target.type,
|
|
2910
|
+
loc,
|
|
2911
|
+
};
|
|
2912
|
+
const ending = lowerer.declareHiddenLocal("%pipeEnd", BOOL);
|
|
2913
|
+
stmts.push({ kind: "varDecl", localId: ending.id, init: end, loc });
|
|
2914
|
+
const endRef = { kind: "varRef", localId: ending.id, type: BOOL, loc };
|
|
2915
|
+
stmts.push(dynNativeBranch(lowerer, destinationRef, "w", (native) => ({
|
|
2916
|
+
kind: "exprStmt",
|
|
2917
|
+
expr: {
|
|
2918
|
+
kind: "libCall",
|
|
2919
|
+
// Checked-dynamic slots come with the general representation,
|
|
2920
|
+
// where a boxed native destination can be the converted
|
|
2921
|
+
// process.stdout (generalPipe).
|
|
2922
|
+
fn: "readable.pipeGeneral",
|
|
2923
|
+
args: [sourceRef, native, endRef],
|
|
2924
|
+
type: native.type,
|
|
2925
|
+
loc,
|
|
2926
|
+
},
|
|
2927
|
+
loc,
|
|
2928
|
+
}), {
|
|
2929
|
+
kind: "exprStmt",
|
|
2930
|
+
expr: {
|
|
2931
|
+
kind: "libCall",
|
|
2932
|
+
fn: "stream.pipeDyn",
|
|
2933
|
+
args: [sourceRef, lowerer.coerceToExpected(sourceRef, DYN), destinationRef, endRef],
|
|
2934
|
+
type: VOID,
|
|
2935
|
+
loc,
|
|
2936
|
+
},
|
|
2937
|
+
loc,
|
|
2938
|
+
}));
|
|
2939
|
+
return {
|
|
2940
|
+
kind: "seqExpr",
|
|
2941
|
+
stmts,
|
|
2942
|
+
result: destinationRef,
|
|
2943
|
+
type: target.type,
|
|
2944
|
+
loc,
|
|
2945
|
+
};
|
|
2946
|
+
}
|
|
2947
|
+
stmts.push({
|
|
2948
|
+
kind: "exprStmt",
|
|
2949
|
+
expr: {
|
|
2950
|
+
kind: "libCall",
|
|
2951
|
+
fn: lowerer.generalNodeStreams ? "readable.pipeGeneral" : "readable.pipe",
|
|
2952
|
+
args: [
|
|
2953
|
+
{ kind: "varRef", localId: source.id, type: receiverValue.type, loc },
|
|
2954
|
+
{
|
|
2955
|
+
kind: "libCall",
|
|
2956
|
+
fn: "stream.unboxDyn",
|
|
2957
|
+
args: [
|
|
2958
|
+
{ kind: "varRef", localId: destination.id, type: target.type, loc },
|
|
2959
|
+
strLit("pipe destinations other than native streams are not supported yet", loc),
|
|
2960
|
+
],
|
|
2961
|
+
type: duplex,
|
|
2962
|
+
loc,
|
|
2963
|
+
},
|
|
2964
|
+
end,
|
|
2965
|
+
],
|
|
2966
|
+
type: duplex,
|
|
2967
|
+
loc,
|
|
2968
|
+
},
|
|
2969
|
+
loc,
|
|
2970
|
+
});
|
|
2971
|
+
return {
|
|
2972
|
+
kind: "seqExpr",
|
|
2973
|
+
stmts,
|
|
2974
|
+
result: { kind: "varRef", localId: destination.id, type: target.type, loc },
|
|
2975
|
+
type: target.type,
|
|
2976
|
+
loc,
|
|
2977
|
+
};
|
|
2978
|
+
}
|
|
2699
2979
|
export function lowerStreamMethodCall(lowerer, call, access, info) {
|
|
2700
2980
|
const member = access.name.text;
|
|
2701
2981
|
if (STREAM_OPERATORS.has(member)) {
|
|
@@ -2709,7 +2989,7 @@ export function lowerStreamMethodCall(lowerer, call, access, info) {
|
|
|
2709
2989
|
if (!sides)
|
|
2710
2990
|
return null;
|
|
2711
2991
|
const loc = locOf(call);
|
|
2712
|
-
const args = call.arguments;
|
|
2992
|
+
const args = call.arguments.nodes;
|
|
2713
2993
|
const readableSide = sides === "r" || sides === "rw";
|
|
2714
2994
|
const writableSide = sides === "w" || sides === "rw";
|
|
2715
2995
|
const cls = info.def.name.slice(1);
|
|
@@ -2914,17 +3194,23 @@ export function lowerStreamMethodCall(lowerer, call, access, info) {
|
|
|
2914
3194
|
loc,
|
|
2915
3195
|
};
|
|
2916
3196
|
}
|
|
2917
|
-
const
|
|
3197
|
+
const target = lowerer.lowerExpr(args[0]);
|
|
3198
|
+
if (target.type.kind === "procStream")
|
|
3199
|
+
return pipeIntoStdio(lowerer, call, access, target);
|
|
3200
|
+
if (target.type.kind === "dyn")
|
|
3201
|
+
return pipeIntoDyn(lowerer, call, access, target);
|
|
3202
|
+
const dst = target;
|
|
2918
3203
|
const dstInfo = dst.type.kind === "object" ? lowerer.classes.get(dst.type.className) : undefined;
|
|
2919
3204
|
const dstSides = streamSidesOf(lowerer, dstInfo);
|
|
2920
3205
|
if (dstSides !== "w" && dstSides !== "rw") {
|
|
2921
|
-
|
|
3206
|
+
requestGeneralStreamSurface(lowerer, args[0]);
|
|
3207
|
+
lowerer.noLowering(`pipe into a '${lowerer.fmt(dst.type)}'`, args[0], "the destination must be a stream Writable/Duplex, process.stdout or process.stderr (sockets are not pipe destinations yet)");
|
|
2922
3208
|
}
|
|
2923
3209
|
const end = pipeEndOption(lowerer, args[1], loc);
|
|
2924
3210
|
const receiver = lowerer.lowerExpr(access.expression);
|
|
2925
3211
|
return {
|
|
2926
3212
|
kind: "libCall",
|
|
2927
|
-
fn:
|
|
3213
|
+
fn: generalPipe(lowerer, dst.type),
|
|
2928
3214
|
args: [receiver, dst, end],
|
|
2929
3215
|
type: dst.type,
|
|
2930
3216
|
loc,
|
|
@@ -2937,6 +3223,8 @@ export function lowerStreamMethodCall(lowerer, call, access, info) {
|
|
|
2937
3223
|
const receiver = lowerer.lowerExpr(access.expression);
|
|
2938
3224
|
if (args[0] !== undefined) {
|
|
2939
3225
|
const dst = lowerer.lowerExpr(args[0]);
|
|
3226
|
+
if (dst.type.kind === "dyn")
|
|
3227
|
+
return unpipeDyn(lowerer, receiver, dst, loc);
|
|
2940
3228
|
const dstInfo = dst.type.kind === "object" ? lowerer.classes.get(dst.type.className) : undefined;
|
|
2941
3229
|
const dstSides = streamSidesOf(lowerer, dstInfo);
|
|
2942
3230
|
if (dstSides !== "w" && dstSides !== "rw") {
|
|
@@ -2950,6 +3238,44 @@ export function lowerStreamMethodCall(lowerer, call, access, info) {
|
|
|
2950
3238
|
loc,
|
|
2951
3239
|
};
|
|
2952
3240
|
}
|
|
3241
|
+
// Checked-dynamic slots: unpipe() also unpipes the JavaScript
|
|
3242
|
+
// destinations stream.pipeDyn registered (stream.unpipeDyn with an
|
|
3243
|
+
// undefined destination), as Node's unpipe() empties every pipe.
|
|
3244
|
+
if (lowerer.dynNodeStreams) {
|
|
3245
|
+
const source = lowerer.declareHiddenLocal("%unpipeSource", receiver.type);
|
|
3246
|
+
const sourceRef = varRef(source.id, receiver.type, loc);
|
|
3247
|
+
return {
|
|
3248
|
+
kind: "seqExpr",
|
|
3249
|
+
stmts: [
|
|
3250
|
+
{ kind: "varDecl", localId: source.id, init: receiver, loc },
|
|
3251
|
+
{
|
|
3252
|
+
kind: "exprStmt",
|
|
3253
|
+
expr: {
|
|
3254
|
+
kind: "libCall",
|
|
3255
|
+
fn: "readable.unpipe",
|
|
3256
|
+
args: [sourceRef],
|
|
3257
|
+
type: receiver.type,
|
|
3258
|
+
loc,
|
|
3259
|
+
},
|
|
3260
|
+
loc,
|
|
3261
|
+
},
|
|
3262
|
+
{
|
|
3263
|
+
kind: "exprStmt",
|
|
3264
|
+
expr: {
|
|
3265
|
+
kind: "libCall",
|
|
3266
|
+
fn: "stream.unpipeDyn",
|
|
3267
|
+
args: [sourceRef, dynUndefinedExpr(loc)],
|
|
3268
|
+
type: VOID,
|
|
3269
|
+
loc,
|
|
3270
|
+
},
|
|
3271
|
+
loc,
|
|
3272
|
+
},
|
|
3273
|
+
],
|
|
3274
|
+
result: sourceRef,
|
|
3275
|
+
type: receiver.type,
|
|
3276
|
+
loc,
|
|
3277
|
+
};
|
|
3278
|
+
}
|
|
2953
3279
|
return { kind: "libCall", fn: "readable.unpipe", args: [receiver], type: receiver.type, loc };
|
|
2954
3280
|
}
|
|
2955
3281
|
if (member === "destroy") {
|
|
@@ -3038,8 +3364,10 @@ export function lowerStreamMethodCall(lowerer, call, access, info) {
|
|
|
3038
3364
|
: lowerer.lowerExprExpecting(args[0], STRING);
|
|
3039
3365
|
const fn = kind === "bytes" ? "writable.write" : "writable.writeStr";
|
|
3040
3366
|
if (cbArg !== undefined) {
|
|
3041
|
-
const cb =
|
|
3042
|
-
|
|
3367
|
+
const cb = callbackDeclaresParameters(cbArg)
|
|
3368
|
+
? null
|
|
3369
|
+
: lowerer.lowerExprExpecting(cbArg, funcOf([], VOID));
|
|
3370
|
+
if (cb === null || cb.type.kind !== "func" || cb.type.params.length > 0) {
|
|
3043
3371
|
lowerer.noLowering("write completion callbacks taking the error argument", cbArg, "() => void callbacks are supported (listen for 'error' to observe failures)");
|
|
3044
3372
|
}
|
|
3045
3373
|
return { kind: "libCall", fn, args: [receiver, chunk, cb], type: BOOL, loc };
|
|
@@ -3099,8 +3427,10 @@ export function lowerStreamMethodCall(lowerer, call, access, info) {
|
|
|
3099
3427
|
: lowerer.lowerExprExpecting(chunkNode, STRING));
|
|
3100
3428
|
}
|
|
3101
3429
|
if (cbArg !== undefined) {
|
|
3102
|
-
const cb =
|
|
3103
|
-
|
|
3430
|
+
const cb = callbackDeclaresParameters(cbArg)
|
|
3431
|
+
? null
|
|
3432
|
+
: lowerer.lowerExprExpecting(cbArg, funcOf([], VOID));
|
|
3433
|
+
if (cb === null || cb.type.kind !== "func" || cb.type.params.length > 0) {
|
|
3104
3434
|
lowerer.noLowering("end callbacks with parameters", cbArg, "() => void callbacks are supported");
|
|
3105
3435
|
}
|
|
3106
3436
|
flags |= 4;
|
|
@@ -3334,4 +3664,16 @@ export function lowerStreamProperty(lowerer, expr, info) {
|
|
|
3334
3664
|
}
|
|
3335
3665
|
return null;
|
|
3336
3666
|
}
|
|
3667
|
+
/** Whether an inline completion callback declares a parameter. Node calls
|
|
3668
|
+
* write and end callbacks with an error argument (null on success), but the
|
|
3669
|
+
* native callback receives none, so the parameter would read undefined
|
|
3670
|
+
* where Node passes null or the error. A function literal with parameters
|
|
3671
|
+
* would otherwise adapt to the zero-parameter slot silently. */
|
|
3672
|
+
function callbackDeclaresParameters(node) {
|
|
3673
|
+
let callback = node;
|
|
3674
|
+
while (ts.isParenthesizedExpression(callback))
|
|
3675
|
+
callback = callback.expression;
|
|
3676
|
+
return ((ts.isArrowFunction(callback) || ts.isFunctionExpression(callback)) &&
|
|
3677
|
+
callback.parameters.nodes.length > 0);
|
|
3678
|
+
}
|
|
3337
3679
|
//# sourceMappingURL=lower-stream.js.map
|