@scriptc/compiler 0.4.1 → 0.4.3
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 +977 -113
- package/dist/backend/cycle-analysis.d.ts +5 -1
- package/dist/backend/cycle-analysis.js +6 -4
- package/dist/backend/cycle-analysis.js.map +1 -1
- package/dist/backend/cycle-analysis.test.js +55 -0
- package/dist/backend/cycle-analysis.test.js.map +1 -1
- package/dist/backend/cycle-mutability.d.ts +9 -1
- package/dist/backend/cycle-mutability.js +21 -3
- package/dist/backend/cycle-mutability.js.map +1 -1
- package/dist/backend/executable-features.js +6 -1
- package/dist/backend/executable-features.js.map +1 -1
- package/dist/backend/immutability.d.ts +7 -3
- package/dist/backend/immutability.js +33 -29
- package/dist/backend/immutability.js.map +1 -1
- package/dist/backend/library-pack.js +5 -0
- package/dist/backend/library-pack.js.map +1 -1
- package/dist/backend/llvm/alloc.d.ts +23 -4
- package/dist/backend/llvm/alloc.js +61 -8
- package/dist/backend/llvm/alloc.js.map +1 -1
- package/dist/backend/llvm/appended-array-literals.d.ts +2 -1
- package/dist/backend/llvm/appended-array-literals.js +44 -36
- package/dist/backend/llvm/appended-array-literals.js.map +1 -1
- package/dist/backend/llvm/appended-array-literals.test.js +4 -3
- package/dist/backend/llvm/appended-array-literals.test.js.map +1 -1
- package/dist/backend/llvm/array-search.d.ts +4 -3
- package/dist/backend/llvm/array-search.js +23 -10
- package/dist/backend/llvm/array-search.js.map +1 -1
- package/dist/backend/llvm/blocks.d.ts +1 -1
- package/dist/backend/llvm/blocks.js +2 -2
- package/dist/backend/llvm/blocks.js.map +1 -1
- package/dist/backend/llvm/byte-windows.js +2 -0
- package/dist/backend/llvm/byte-windows.js.map +1 -1
- package/dist/backend/llvm/bytes-alias.d.ts +6 -1
- package/dist/backend/llvm/bytes-alias.js +8 -2
- package/dist/backend/llvm/bytes-alias.js.map +1 -1
- package/dist/backend/llvm/bytes-loop-versions.d.ts +70 -7
- package/dist/backend/llvm/bytes-loop-versions.js +567 -30
- package/dist/backend/llvm/bytes-loop-versions.js.map +1 -1
- package/dist/backend/llvm/bytes-loop-versions.test.js +389 -2
- package/dist/backend/llvm/bytes-loop-versions.test.js.map +1 -1
- package/dist/backend/llvm/checked-value-lifetimes.js +2 -0
- package/dist/backend/llvm/checked-value-lifetimes.js.map +1 -1
- package/dist/backend/llvm/classes.d.ts +74 -1
- package/dist/backend/llvm/classes.js +364 -54
- package/dist/backend/llvm/classes.js.map +1 -1
- package/dist/backend/llvm/classes.test.js +384 -17
- package/dist/backend/llvm/classes.test.js.map +1 -1
- package/dist/backend/llvm/common.d.ts +10 -6
- package/dist/backend/llvm/common.js +10 -6
- package/dist/backend/llvm/common.js.map +1 -1
- package/dist/backend/llvm/constant-callbacks.d.ts +2 -1
- package/dist/backend/llvm/constant-callbacks.js +91 -56
- package/dist/backend/llvm/constant-callbacks.js.map +1 -1
- package/dist/backend/llvm/constant-callbacks.test.js +4 -4
- package/dist/backend/llvm/constant-callbacks.test.js.map +1 -1
- package/dist/backend/llvm/counted-loops.d.ts +11 -1
- package/dist/backend/llvm/counted-loops.js +80 -23
- package/dist/backend/llvm/counted-loops.js.map +1 -1
- package/dist/backend/llvm/dense-array-access.d.ts +39 -8
- package/dist/backend/llvm/dense-array-access.js +222 -52
- package/dist/backend/llvm/dense-array-access.js.map +1 -1
- package/dist/backend/llvm/dense-array-access.test.js +36 -0
- package/dist/backend/llvm/dense-array-access.test.js.map +1 -1
- package/dist/backend/llvm/dense-array-loops.d.ts +35 -16
- package/dist/backend/llvm/dense-array-loops.js +237 -12
- package/dist/backend/llvm/dense-array-loops.js.map +1 -1
- package/dist/backend/llvm/dense-array-loops.test.js +140 -15
- package/dist/backend/llvm/dense-array-loops.test.js.map +1 -1
- package/dist/backend/llvm/dyn-handle-tags.test.js +6 -1
- package/dist/backend/llvm/dyn-handle-tags.test.js.map +1 -1
- package/dist/backend/llvm/dyn.d.ts +51 -1
- package/dist/backend/llvm/dyn.js +683 -69
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emit-function.js +33 -26
- package/dist/backend/llvm/emit-function.js.map +1 -1
- package/dist/backend/llvm/emit-journal.d.ts +93 -0
- package/dist/backend/llvm/emit-journal.js +170 -0
- package/dist/backend/llvm/emit-journal.js.map +1 -0
- package/dist/backend/llvm/emit-module.js +208 -34
- package/dist/backend/llvm/emit-module.js.map +1 -1
- package/dist/backend/llvm/emit-statements.d.ts +0 -27
- package/dist/backend/llvm/emit-statements.js +577 -93
- package/dist/backend/llvm/emit-statements.js.map +1 -1
- package/dist/backend/llvm/emitter-state.d.ts +7 -0
- package/dist/backend/llvm/emitter-state.js +14 -0
- package/dist/backend/llvm/emitter-state.js.map +1 -0
- package/dist/backend/llvm/emitter.d.ts +314 -49
- package/dist/backend/llvm/emitter.js +1241 -129
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/emitter.test.js +54 -5
- package/dist/backend/llvm/emitter.test.js.map +1 -1
- package/dist/backend/llvm/expr-async.js +19 -0
- package/dist/backend/llvm/expr-async.js.map +1 -1
- package/dist/backend/llvm/expr-bytes.d.ts +5 -2
- package/dist/backend/llvm/expr-bytes.js +144 -52
- package/dist/backend/llvm/expr-bytes.js.map +1 -1
- package/dist/backend/llvm/expr-callbacks.js +47 -0
- 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 +62 -36
- package/dist/backend/llvm/expr-calls.js.map +1 -1
- package/dist/backend/llvm/expr-containers.d.ts +14 -2
- package/dist/backend/llvm/expr-containers.js +148 -40
- package/dist/backend/llvm/expr-containers.js.map +1 -1
- package/dist/backend/llvm/expr-context.d.ts +14 -0
- package/dist/backend/llvm/expr-control.js +2 -3
- package/dist/backend/llvm/expr-control.js.map +1 -1
- package/dist/backend/llvm/expr-dynamic.js +71 -16
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.js +126 -36
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.test.js +11 -6
- package/dist/backend/llvm/expr-primitives.test.js.map +1 -1
- package/dist/backend/llvm/expr-records.d.ts +12 -0
- package/dist/backend/llvm/expr-records.js +106 -0
- package/dist/backend/llvm/expr-records.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.d.ts +2 -2
- package/dist/backend/llvm/expr-stream-bridges.js +225 -64
- package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.test.js +1 -1
- package/dist/backend/llvm/expr-stream-bridges.test.js.map +1 -1
- package/dist/backend/llvm/expr-stream-callbacks.d.ts +2 -2
- package/dist/backend/llvm/expr-stream-callbacks.js +200 -50
- package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
- package/dist/backend/llvm/int32-kind-loops.d.ts +39 -0
- package/dist/backend/llvm/int32-kind-loops.js +106 -0
- package/dist/backend/llvm/int32-kind-loops.js.map +1 -0
- package/dist/backend/llvm/integer-or-nan-indexes.test.d.ts +1 -0
- package/dist/backend/llvm/integer-or-nan-indexes.test.js +118 -0
- package/dist/backend/llvm/integer-or-nan-indexes.test.js.map +1 -0
- package/dist/backend/llvm/integer-values.d.ts +20 -1
- package/dist/backend/llvm/integer-values.js +71 -0
- package/dist/backend/llvm/integer-values.js.map +1 -1
- package/dist/backend/llvm/js-ic.d.ts +1 -1
- package/dist/backend/llvm/js-ic.js +1 -1
- package/dist/backend/llvm/js-ic.js.map +1 -1
- package/dist/backend/llvm/key-orders.d.ts +7 -0
- package/dist/backend/llvm/key-orders.js +33 -0
- package/dist/backend/llvm/key-orders.js.map +1 -0
- package/dist/backend/llvm/lib-connect.js +4 -0
- package/dist/backend/llvm/lib-connect.js.map +1 -1
- package/dist/backend/llvm/lib-datagram.js +11 -0
- package/dist/backend/llvm/lib-datagram.js.map +1 -1
- package/dist/backend/llvm/lib-dispatch.js +90 -2
- package/dist/backend/llvm/lib-dispatch.js.map +1 -1
- package/dist/backend/llvm/lib-filesystem.js +65 -4
- package/dist/backend/llvm/lib-filesystem.js.map +1 -1
- package/dist/backend/llvm/lib-http2.d.ts +4 -0
- package/dist/backend/llvm/lib-http2.js +24 -17
- package/dist/backend/llvm/lib-http2.js.map +1 -1
- package/dist/backend/llvm/lib-lookup.js +16 -6
- package/dist/backend/llvm/lib-lookup.js.map +1 -1
- package/dist/backend/llvm/lib-process.js +65 -14
- package/dist/backend/llvm/lib-process.js.map +1 -1
- package/dist/backend/llvm/lib-shared.js +126 -3
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/lib-stream.js +97 -30
- package/dist/backend/llvm/lib-stream.js.map +1 -1
- package/dist/backend/llvm/lib-tls.js +23 -0
- package/dist/backend/llvm/lib-tls.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.js +181 -64
- package/dist/backend/llvm/local-array-reads.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.test.js +28 -0
- package/dist/backend/llvm/local-array-reads.test.js.map +1 -1
- package/dist/backend/llvm/loop-state.d.ts +33 -0
- package/dist/backend/llvm/loop-state.js +42 -0
- package/dist/backend/llvm/loop-state.js.map +1 -0
- package/dist/backend/llvm/map-number-lookup.d.ts +26 -8
- package/dist/backend/llvm/map-number-lookup.js +91 -31
- package/dist/backend/llvm/map-number-lookup.js.map +1 -1
- package/dist/backend/llvm/map-number-lookup.test.js +55 -0
- package/dist/backend/llvm/map-number-lookup.test.js.map +1 -1
- package/dist/backend/llvm/map-read-lifetimes.js +4 -2
- package/dist/backend/llvm/map-read-lifetimes.js.map +1 -1
- package/dist/backend/llvm/nullable-unions.d.ts +2 -1
- package/dist/backend/llvm/nullable-unions.js +15 -3
- package/dist/backend/llvm/nullable-unions.js.map +1 -1
- package/dist/backend/llvm/publish.d.ts +18 -1
- package/dist/backend/llvm/publish.js +76 -25
- package/dist/backend/llvm/publish.js.map +1 -1
- package/dist/backend/llvm/publish.test.js +3 -0
- package/dist/backend/llvm/publish.test.js.map +1 -1
- package/dist/backend/llvm/receivers.js +7 -2
- package/dist/backend/llvm/receivers.js.map +1 -1
- package/dist/backend/llvm/record-results.d.ts +1 -9
- package/dist/backend/llvm/record-results.js +2 -11
- package/dist/backend/llvm/record-results.js.map +1 -1
- package/dist/backend/llvm/reference-writes.d.ts +7 -2
- package/dist/backend/llvm/reference-writes.js +91 -72
- package/dist/backend/llvm/reference-writes.js.map +1 -1
- package/dist/backend/llvm/regex-matchers.js +161 -14
- package/dist/backend/llvm/regex-matchers.js.map +1 -1
- package/dist/backend/llvm/regex-matchers.test.js +18 -0
- package/dist/backend/llvm/regex-matchers.test.js.map +1 -1
- package/dist/backend/llvm/running-extrema.d.ts +11 -0
- package/dist/backend/llvm/running-extrema.js +115 -0
- package/dist/backend/llvm/running-extrema.js.map +1 -0
- package/dist/backend/llvm/running-extrema.test.d.ts +1 -0
- package/dist/backend/llvm/running-extrema.test.js +89 -0
- package/dist/backend/llvm/running-extrema.test.js.map +1 -0
- package/dist/backend/llvm/shapes.d.ts +79 -21
- package/dist/backend/llvm/shapes.js +233 -42
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/llvm/shapes.test.js +53 -7
- package/dist/backend/llvm/shapes.test.js.map +1 -1
- package/dist/backend/llvm/speculative-integers.d.ts +6 -0
- package/dist/backend/llvm/speculative-integers.js +2 -2
- package/dist/backend/llvm/speculative-integers.js.map +1 -1
- package/dist/backend/llvm/stack-objects.d.ts +3 -2
- package/dist/backend/llvm/stack-objects.js +5 -2
- package/dist/backend/llvm/stack-objects.js.map +1 -1
- package/dist/backend/llvm/string-lifetimes.test.js +2 -1
- package/dist/backend/llvm/string-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/string-reads.d.ts +15 -0
- package/dist/backend/llvm/string-reads.js +128 -0
- package/dist/backend/llvm/string-reads.js.map +1 -1
- package/dist/backend/llvm/walk-borrows.d.ts +3 -0
- package/dist/backend/llvm/walk-borrows.js +46 -41
- package/dist/backend/llvm/walk-borrows.js.map +1 -1
- package/dist/backend/llvm/walkers.d.ts +3 -0
- package/dist/backend/llvm/walkers.js +88 -65
- package/dist/backend/llvm/walkers.js.map +1 -1
- package/dist/backend/llvm/wasm-modules.d.ts +6 -5
- package/dist/backend/llvm/wasm-modules.js +32 -9
- package/dist/backend/llvm/wasm-modules.js.map +1 -1
- package/dist/backend/llvm/wrapping-sums.d.ts +16 -1
- package/dist/backend/llvm/wrapping-sums.js +126 -0
- package/dist/backend/llvm/wrapping-sums.js.map +1 -1
- package/dist/backend/mangle.d.ts +3 -0
- package/dist/backend/mangle.js +5 -0
- package/dist/backend/mangle.js.map +1 -1
- package/dist/backend/may-throw.d.ts +8 -10
- package/dist/backend/may-throw.js +14 -10
- package/dist/backend/may-throw.js.map +1 -1
- package/dist/backend/native/contracts.d.ts +27 -4
- package/dist/backend/native/executable.js +31 -8
- 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-codegen.d.ts +11 -6
- package/dist/backend/native-codegen.js +36 -9
- package/dist/backend/native-codegen.js.map +1 -1
- package/dist/backend/native-codegen.test.js +0 -23
- package/dist/backend/native-codegen.test.js.map +1 -1
- package/dist/backend/native-link-info-core.d.ts +18 -4
- package/dist/backend/native-link-info-core.js.map +1 -1
- package/dist/backend/optimization.d.ts +2 -2
- package/dist/backend/publication.d.ts +12 -1
- package/dist/backend/publication.js +37 -14
- package/dist/backend/publication.js.map +1 -1
- package/dist/backend/publication.test.js +30 -0
- package/dist/backend/publication.test.js.map +1 -1
- package/dist/backend/result-slots.d.ts +16 -0
- package/dist/backend/result-slots.js +23 -0
- package/dist/backend/result-slots.js.map +1 -0
- package/dist/backend/runtime-abi.d.ts +2 -2
- package/dist/backend/runtime-abi.js +2 -2
- package/dist/backend/runtime-pack-core.d.ts +2 -1
- package/dist/backend/runtime-pack-core.js +2 -1
- package/dist/backend/runtime-pack-core.js.map +1 -1
- package/dist/backend/runtime-pack-targets.test.js +5 -1
- package/dist/backend/runtime-pack-targets.test.js.map +1 -1
- package/dist/backend/runtime-pack.d.ts +0 -21
- package/dist/backend/runtime-pack.js +0 -29
- package/dist/backend/runtime-pack.js.map +1 -1
- package/dist/backend/runtime-pack.test.js +10 -69
- package/dist/backend/runtime-pack.test.js.map +1 -1
- package/dist/backend/stack-observations.d.ts +2 -1
- package/dist/backend/stack-observations.js +67 -42
- package/dist/backend/stack-observations.js.map +1 -1
- package/dist/backend/target-diagnostics.js +33 -1
- package/dist/backend/target-diagnostics.js.map +1 -1
- package/dist/backend/warm-cache.js +4 -0
- package/dist/backend/warm-cache.js.map +1 -1
- package/dist/cli/command.js +26 -6
- package/dist/cli/command.js.map +1 -1
- package/dist/cli/usage.d.ts +5 -1
- package/dist/cli/usage.js +10 -5
- package/dist/cli/usage.js.map +1 -1
- package/dist/compat/fetch-profile.js +1 -1
- package/dist/compat/fetch-profile.js.map +1 -1
- package/dist/contracts/check.js +5 -4
- package/dist/contracts/check.js.map +1 -1
- package/dist/contracts/int32-elements.js +10 -2
- package/dist/contracts/int32-elements.js.map +1 -1
- package/dist/coverage/report.d.ts +7 -2
- package/dist/coverage/report.js +30 -3
- package/dist/coverage/report.js.map +1 -1
- package/dist/coverage/verdict-cache.d.ts +1 -0
- package/dist/coverage/verdict-cache.js +4 -0
- package/dist/coverage/verdict-cache.js.map +1 -1
- package/dist/coverage/verdict-semantic.js +4 -0
- package/dist/coverage/verdict-semantic.js.map +1 -1
- package/dist/diagnostics/diagnostic.d.ts +4 -0
- package/dist/diagnostics/diagnostic.js.map +1 -1
- package/dist/diagnostics/dynamic-tier.d.ts +40 -0
- package/dist/diagnostics/dynamic-tier.js +57 -0
- package/dist/diagnostics/dynamic-tier.js.map +1 -0
- package/dist/diagnostics/envelope.d.ts +5 -1
- package/dist/diagnostics/envelope.js +6 -2
- package/dist/diagnostics/envelope.js.map +1 -1
- package/dist/executable/executable-cache.d.ts +25 -1
- package/dist/executable/executable-cache.js +60 -7
- package/dist/executable/executable-cache.js.map +1 -1
- package/dist/executable/executable-cache.test.js +46 -3
- package/dist/executable/executable-cache.test.js.map +1 -1
- package/dist/executable/prepare.js +3 -1
- package/dist/executable/prepare.js.map +1 -1
- package/dist/frontend/analysis.js +1 -0
- package/dist/frontend/analysis.js.map +1 -1
- package/dist/frontend/decl-projection.d.ts +41 -0
- package/dist/frontend/decl-projection.js +854 -0
- package/dist/frontend/decl-projection.js.map +1 -0
- package/dist/frontend/decl-projection.test.d.ts +1 -0
- package/dist/frontend/decl-projection.test.js +30 -0
- package/dist/frontend/decl-projection.test.js.map +1 -0
- package/dist/frontend/dispose-hook.d.ts +2 -0
- package/dist/frontend/dispose-hook.js +14 -0
- package/dist/frontend/dispose-hook.js.map +1 -0
- package/dist/frontend/dts-paths.d.ts +15 -0
- package/dist/frontend/dts-paths.js +25 -0
- package/dist/frontend/dts-paths.js.map +1 -1
- package/dist/frontend/input-tracker.d.ts +6 -0
- package/dist/frontend/input-tracker.js +51 -28
- package/dist/frontend/input-tracker.js.map +1 -1
- package/dist/frontend/input-tracker.test.js +19 -0
- package/dist/frontend/input-tracker.test.js.map +1 -1
- package/dist/frontend/jsx-entities.d.ts +4 -0
- package/dist/frontend/jsx-entities.js +259 -0
- package/dist/frontend/jsx-entities.js.map +1 -0
- package/dist/frontend/jsx-source.d.ts +71 -0
- package/dist/frontend/jsx-source.js +781 -0
- package/dist/frontend/jsx-source.js.map +1 -0
- package/dist/frontend/jsx-source.test.d.ts +1 -0
- package/dist/frontend/jsx-source.test.js +200 -0
- package/dist/frontend/jsx-source.test.js.map +1 -0
- package/dist/frontend/literal-values.test.js +8 -9
- package/dist/frontend/literal-values.test.js.map +1 -1
- package/dist/frontend/lowering/array-indexed-mutation.js +2 -1
- package/dist/frontend/lowering/array-indexed-mutation.js.map +1 -1
- package/dist/frontend/lowering/array-values.js +103 -4
- package/dist/frontend/lowering/array-values.js.map +1 -1
- package/dist/frontend/lowering/binding-analysis.d.ts +1 -1
- package/dist/frontend/lowering/binding-analysis.js +2 -2
- package/dist/frontend/lowering/binding-analysis.js.map +1 -1
- package/dist/frontend/lowering/builtins/arguments.d.ts +3 -0
- package/dist/frontend/lowering/builtins/arguments.js +30 -15
- package/dist/frontend/lowering/builtins/arguments.js.map +1 -1
- package/dist/frontend/lowering/builtins/atomics.js +10 -6
- package/dist/frontend/lowering/builtins/atomics.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-async.js +2 -1
- package/dist/frontend/lowering/builtins/child-process-async.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-methods.js +46 -15
- package/dist/frontend/lowering/builtins/child-process-methods.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-sync.js +2 -1
- package/dist/frontend/lowering/builtins/child-process-sync.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process.js +13 -2
- package/dist/frontend/lowering/builtins/child-process.js.map +1 -1
- package/dist/frontend/lowering/builtins/crypto.d.ts +4 -2
- package/dist/frontend/lowering/builtins/crypto.js +136 -5
- package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
- package/dist/frontend/lowering/builtins/date-classes.d.ts +46 -0
- package/dist/frontend/lowering/builtins/date-classes.js +477 -0
- package/dist/frontend/lowering/builtins/date-classes.js.map +1 -0
- package/dist/frontend/lowering/builtins/dates.d.ts +11 -1
- package/dist/frontend/lowering/builtins/dates.js +55 -26
- package/dist/frontend/lowering/builtins/dates.js.map +1 -1
- package/dist/frontend/lowering/builtins/dh.d.ts +15 -0
- package/dist/frontend/lowering/builtins/dh.js +151 -0
- package/dist/frontend/lowering/builtins/dh.js.map +1 -0
- package/dist/frontend/lowering/builtins/disposable-stack.js +2 -1
- package/dist/frontend/lowering/builtins/disposable-stack.js.map +1 -1
- package/dist/frontend/lowering/builtins/ecdh.d.ts +12 -1
- package/dist/frontend/lowering/builtins/ecdh.js +7 -7
- package/dist/frontend/lowering/builtins/ecdh.js.map +1 -1
- package/dist/frontend/lowering/builtins/errors.d.ts +15 -0
- package/dist/frontend/lowering/builtins/errors.js +110 -0
- package/dist/frontend/lowering/builtins/errors.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem-calls.d.ts +1 -1
- package/dist/frontend/lowering/builtins/filesystem-calls.js +23 -17
- package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem.js +6 -4
- package/dist/frontend/lowering/builtins/filesystem.js.map +1 -1
- package/dist/frontend/lowering/builtins/fs-paths.d.ts +15 -0
- package/dist/frontend/lowering/builtins/fs-paths.js +209 -0
- package/dist/frontend/lowering/builtins/fs-paths.js.map +1 -0
- package/dist/frontend/lowering/builtins/global-namespace-keys.d.ts +3 -0
- package/dist/frontend/lowering/builtins/global-namespace-keys.js +122 -0
- package/dist/frontend/lowering/builtins/global-namespace-keys.js.map +1 -0
- package/dist/frontend/lowering/builtins/hash-stream.d.ts +16 -4
- package/dist/frontend/lowering/builtins/hash-stream.js +86 -23
- package/dist/frontend/lowering/builtins/hash-stream.js.map +1 -1
- package/dist/frontend/lowering/builtins/json.js +2 -1
- package/dist/frontend/lowering/builtins/json.js.map +1 -1
- package/dist/frontend/lowering/builtins/key-object.d.ts +2 -1
- package/dist/frontend/lowering/builtins/key-object.js +20 -7
- package/dist/frontend/lowering/builtins/key-object.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-calls.js +11 -4
- package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/numbers.js +18 -6
- package/dist/frontend/lowering/builtins/numbers.js.map +1 -1
- package/dist/frontend/lowering/builtins/operating-system.js +4 -3
- package/dist/frontend/lowering/builtins/operating-system.js.map +1 -1
- package/dist/frontend/lowering/builtins/performance.js +3 -2
- package/dist/frontend/lowering/builtins/performance.js.map +1 -1
- package/dist/frontend/lowering/builtins/process.js +3 -2
- package/dist/frontend/lowering/builtins/process.js.map +1 -1
- package/dist/frontend/lowering/builtins/promises.d.ts +6 -0
- package/dist/frontend/lowering/builtins/promises.js +91 -4
- package/dist/frontend/lowering/builtins/promises.js.map +1 -1
- package/dist/frontend/lowering/builtins/promisify-callback.js +2 -1
- package/dist/frontend/lowering/builtins/promisify-callback.js.map +1 -1
- package/dist/frontend/lowering/builtins/readline.d.ts +7 -2
- package/dist/frontend/lowering/builtins/readline.js +58 -9
- package/dist/frontend/lowering/builtins/readline.js.map +1 -1
- package/dist/frontend/lowering/builtins/strings.js +13 -5
- package/dist/frontend/lowering/builtins/strings.js.map +1 -1
- package/dist/frontend/lowering/builtins/text-codecs.js +2 -1
- package/dist/frontend/lowering/builtins/text-codecs.js.map +1 -1
- package/dist/frontend/lowering/builtins/timers.js +1 -1
- package/dist/frontend/lowering/builtins/timers.js.map +1 -1
- package/dist/frontend/lowering/builtins/url.js +28 -4
- package/dist/frontend/lowering/builtins/url.js.map +1 -1
- package/dist/frontend/lowering/builtins/v8.js +2 -1
- package/dist/frontend/lowering/builtins/v8.js.map +1 -1
- package/dist/frontend/lowering/builtins/webassembly.js +6 -3
- package/dist/frontend/lowering/builtins/webassembly.js.map +1 -1
- package/dist/frontend/lowering/builtins/webcrypto.js +39 -20
- package/dist/frontend/lowering/builtins/webcrypto.js.map +1 -1
- package/dist/frontend/lowering/call-arguments.js +2 -1
- package/dist/frontend/lowering/call-arguments.js.map +1 -1
- package/dist/frontend/lowering/call-signatures.js +13 -6
- package/dist/frontend/lowering/call-signatures.js.map +1 -1
- package/dist/frontend/lowering/caught-value-dispatch.d.ts +18 -1
- package/dist/frontend/lowering/caught-value-dispatch.js +201 -32
- package/dist/frontend/lowering/caught-value-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-assertions.js +3 -2
- package/dist/frontend/lowering/class-assertions.js.map +1 -1
- package/dist/frontend/lowering/class-callbacks.d.ts +5 -2
- package/dist/frontend/lowering/class-callbacks.js +82 -12
- package/dist/frontend/lowering/class-callbacks.js.map +1 -1
- package/dist/frontend/lowering/class-construction.d.ts +6 -2
- package/dist/frontend/lowering/class-construction.js +25 -16
- package/dist/frontend/lowering/class-construction.js.map +1 -1
- package/dist/frontend/lowering/class-descriptors.js +1 -1
- package/dist/frontend/lowering/class-descriptors.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +73 -2
- package/dist/frontend/lowering/class-dynamic-dispatch.js +1334 -259
- package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.test.js +124 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.test.js.map +1 -1
- package/dist/frontend/lowering/class-iterables.d.ts +2 -1
- package/dist/frontend/lowering/class-iterables.js +9 -1
- package/dist/frontend/lowering/class-iterables.js.map +1 -1
- package/dist/frontend/lowering/class-method-mutations.js +35 -9
- package/dist/frontend/lowering/class-method-mutations.js.map +1 -1
- package/dist/frontend/lowering/class-method-values.js +1 -1
- package/dist/frontend/lowering/class-method-values.js.map +1 -1
- package/dist/frontend/lowering/class-protocols.d.ts +7 -0
- package/dist/frontend/lowering/class-protocols.js +64 -4
- package/dist/frontend/lowering/class-protocols.js.map +1 -1
- package/dist/frontend/lowering/class-prototypes.d.ts +5 -0
- package/dist/frontend/lowering/class-prototypes.js +67 -5
- package/dist/frontend/lowering/class-prototypes.js.map +1 -1
- package/dist/frontend/lowering/class-runtime-statics.d.ts +9 -3
- package/dist/frontend/lowering/class-runtime-statics.js +29 -4
- package/dist/frontend/lowering/class-runtime-statics.js.map +1 -1
- package/dist/frontend/lowering/class-to-primitive.js +25 -5
- package/dist/frontend/lowering/class-to-primitive.js.map +1 -1
- package/dist/frontend/lowering/class-unions.js +2 -1
- package/dist/frontend/lowering/class-unions.js.map +1 -1
- package/dist/frontend/lowering/coercions/function-adapters.js +6 -5
- package/dist/frontend/lowering/coercions/function-adapters.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural-plans.js +48 -1
- package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural.js +99 -8
- package/dist/frontend/lowering/coercions/structural.js.map +1 -1
- package/dist/frontend/lowering/coercions/unions.js +8 -7
- package/dist/frontend/lowering/coercions/unions.js.map +1 -1
- package/dist/frontend/lowering/collection-ingestion.js +2 -1
- package/dist/frontend/lowering/collection-ingestion.js.map +1 -1
- package/dist/frontend/lowering/containers/array-callback-call.js +2 -2
- package/dist/frontend/lowering/containers/array-callback-call.js.map +1 -1
- package/dist/frontend/lowering/containers/array-callbacks.d.ts +7 -0
- package/dist/frontend/lowering/containers/array-callbacks.js +352 -31
- package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
- package/dist/frontend/lowering/containers/array-concat.js +12 -1
- package/dist/frontend/lowering/containers/array-concat.js.map +1 -1
- package/dist/frontend/lowering/containers/array-construction.js +25 -4
- package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
- package/dist/frontend/lowering/containers/array-methods.js +21 -5
- package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/array-pipelines.js +21 -9
- package/dist/frontend/lowering/containers/array-pipelines.js.map +1 -1
- package/dist/frontend/lowering/containers/bytes.d.ts +1 -1
- package/dist/frontend/lowering/containers/bytes.js +131 -29
- package/dist/frontend/lowering/containers/bytes.js.map +1 -1
- package/dist/frontend/lowering/containers/callback-arguments.js +55 -2
- package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -1
- package/dist/frontend/lowering/containers/collection-grouping.js +3 -2
- package/dist/frontend/lowering/containers/collection-grouping.js.map +1 -1
- package/dist/frontend/lowering/containers/collection-methods.js +15 -9
- package/dist/frontend/lowering/containers/collection-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/filter-predicates.d.ts +6 -0
- package/dist/frontend/lowering/containers/filter-predicates.js +205 -0
- package/dist/frontend/lowering/containers/filter-predicates.js.map +1 -0
- package/dist/frontend/lowering/containers/indexed-objects.d.ts +0 -12
- package/dist/frontend/lowering/containers/indexed-objects.js +54 -14
- package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
- package/dist/frontend/lowering/containers/iterator-helpers.d.ts +32 -1
- package/dist/frontend/lowering/containers/iterator-helpers.js +6 -5
- package/dist/frontend/lowering/containers/iterator-helpers.js.map +1 -1
- package/dist/frontend/lowering/containers/string-and-regexp.js +87 -14
- package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
- package/dist/frontend/lowering/containers/string-replacement.js +45 -20
- package/dist/frontend/lowering/containers/string-replacement.js.map +1 -1
- package/dist/frontend/lowering/cycle-initialization.js +25 -4
- package/dist/frontend/lowering/cycle-initialization.js.map +1 -1
- package/dist/frontend/lowering/deferred-module-initializers.d.ts +18 -1
- package/dist/frontend/lowering/deferred-module-initializers.js +226 -115
- package/dist/frontend/lowering/deferred-module-initializers.js.map +1 -1
- package/dist/frontend/lowering/deferred-module-initializers.test.js +28 -0
- package/dist/frontend/lowering/deferred-module-initializers.test.js.map +1 -1
- package/dist/frontend/lowering/dispatch-sites.d.ts +59 -0
- package/dist/frontend/lowering/dispatch-sites.js +218 -0
- package/dist/frontend/lowering/dispatch-sites.js.map +1 -0
- package/dist/frontend/lowering/dispatch-sites.test.d.ts +1 -0
- package/dist/frontend/lowering/dispatch-sites.test.js +59 -0
- package/dist/frontend/lowering/dispatch-sites.test.js.map +1 -0
- package/dist/frontend/lowering/divergences.js +9 -1
- package/dist/frontend/lowering/divergences.js.map +1 -1
- package/dist/frontend/lowering/dyn-streams.d.ts +3 -0
- package/dist/frontend/lowering/dyn-streams.js +1 -1
- package/dist/frontend/lowering/dyn-streams.js.map +1 -1
- package/dist/frontend/lowering/dynamic-tier.d.ts +25 -0
- package/dist/frontend/lowering/dynamic-tier.js +327 -0
- package/dist/frontend/lowering/dynamic-tier.js.map +1 -0
- package/dist/frontend/lowering/error-methods.js +51 -2
- package/dist/frontend/lowering/error-methods.js.map +1 -1
- package/dist/frontend/lowering/expressions/array-literals.js +62 -0
- package/dist/frontend/lowering/expressions/array-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/binary.js +81 -5
- package/dist/frontend/lowering/expressions/binary.js.map +1 -1
- package/dist/frontend/lowering/expressions/element-access.js +107 -14
- package/dist/frontend/lowering/expressions/element-access.js.map +1 -1
- package/dist/frontend/lowering/expressions/identifiers.js +79 -11
- package/dist/frontend/lowering/expressions/identifiers.js.map +1 -1
- package/dist/frontend/lowering/expressions/narrowing.js +130 -6
- package/dist/frontend/lowering/expressions/narrowing.js.map +1 -1
- package/dist/frontend/lowering/expressions/nullish-assignment.js +3 -1
- package/dist/frontend/lowering/expressions/nullish-assignment.js.map +1 -1
- package/dist/frontend/lowering/expressions/object-literals.d.ts +10 -3
- package/dist/frontend/lowering/expressions/object-literals.js +164 -56
- package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/optional-chains.js +17 -5
- package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
- package/dist/frontend/lowering/expressions/property-access.d.ts +0 -4
- package/dist/frontend/lowering/expressions/property-access.js +211 -17
- package/dist/frontend/lowering/expressions/property-access.js.map +1 -1
- package/dist/frontend/lowering/expressions/relational.js +267 -30
- package/dist/frontend/lowering/expressions/relational.js.map +1 -1
- package/dist/frontend/lowering/expressions/union-fields.js +4 -0
- package/dist/frontend/lowering/expressions/union-fields.js.map +1 -1
- package/dist/frontend/lowering/expressions/updates.js +85 -12
- package/dist/frontend/lowering/expressions/updates.js.map +1 -1
- package/dist/frontend/lowering/frozen-records.d.ts +28 -0
- package/dist/frontend/lowering/frozen-records.js +322 -0
- package/dist/frontend/lowering/frozen-records.js.map +1 -0
- package/dist/frontend/lowering/function-returns.js +49 -0
- package/dist/frontend/lowering/function-returns.js.map +1 -1
- package/dist/frontend/lowering/generator-dynamic-dispatch.d.ts +6 -1
- package/dist/frontend/lowering/generator-dynamic-dispatch.js +20 -30
- package/dist/frontend/lowering/generator-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/generic-functions.d.ts +42 -1
- package/dist/frontend/lowering/generic-functions.js +455 -20
- package/dist/frontend/lowering/generic-functions.js.map +1 -1
- package/dist/frontend/lowering/intern-tables.js +2 -1
- package/dist/frontend/lowering/intern-tables.js.map +1 -1
- package/dist/frontend/lowering/iterable-values.d.ts +49 -0
- package/dist/frontend/lowering/iterable-values.js +297 -0
- package/dist/frontend/lowering/iterable-values.js.map +1 -0
- package/dist/frontend/lowering/iterator-adapters.js +195 -9
- package/dist/frontend/lowering/iterator-adapters.js.map +1 -1
- package/dist/frontend/lowering/js-class-fields.d.ts +8 -0
- package/dist/frontend/lowering/js-class-fields.js +45 -10
- package/dist/frontend/lowering/js-class-fields.js.map +1 -1
- package/dist/frontend/lowering/js-dynamic-objects.js +3 -2
- package/dist/frontend/lowering/js-dynamic-objects.js.map +1 -1
- package/dist/frontend/lowering/json-require.js +2 -1
- package/dist/frontend/lowering/json-require.js.map +1 -1
- package/dist/frontend/lowering/key-order-witness.d.ts +24 -4
- package/dist/frontend/lowering/key-order-witness.js +790 -25
- package/dist/frontend/lowering/key-order-witness.js.map +1 -1
- package/dist/frontend/lowering/key-order-witness.test.js +466 -10
- package/dist/frontend/lowering/key-order-witness.test.js.map +1 -1
- package/dist/frontend/lowering/lifetime-regions.js +2 -1
- package/dist/frontend/lowering/lifetime-regions.js.map +1 -1
- package/dist/frontend/lowering/lower-assert.js +6 -5
- package/dist/frontend/lowering/lower-assert.js.map +1 -1
- package/dist/frontend/lowering/lower-async-iteration.js +7 -2
- package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.d.ts +11 -0
- package/dist/frontend/lowering/lower-calls.js +776 -126
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.d.ts +29 -2
- package/dist/frontend/lowering/lower-classes.js +581 -46
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-dgram.js +6 -3
- package/dist/frontend/lowering/lower-dgram.js.map +1 -1
- package/dist/frontend/lowering/lower-event-emitter.d.ts +14 -0
- package/dist/frontend/lowering/lower-event-emitter.js +267 -20
- package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.d.ts +19 -2
- package/dist/frontend/lowering/lower-exprs.js +126 -13
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-functions.d.ts +11 -0
- package/dist/frontend/lowering/lower-functions.js +387 -72
- package/dist/frontend/lowering/lower-functions.js.map +1 -1
- package/dist/frontend/lowering/lower-generators.js +41 -31
- package/dist/frontend/lowering/lower-generators.js.map +1 -1
- package/dist/frontend/lowering/lower-global-value.js +6 -3
- package/dist/frontend/lowering/lower-global-value.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.js +28 -12
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-mixins.js +2 -1
- package/dist/frontend/lowering/lower-mixins.js.map +1 -1
- package/dist/frontend/lowering/lower-mock.js +2 -1
- package/dist/frontend/lowering/lower-mock.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.js +47 -5
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.test.js +2 -2
- package/dist/frontend/lowering/lower-modules.test.js.map +1 -1
- package/dist/frontend/lowering/lower-namespaces.d.ts +2 -1
- package/dist/frontend/lowering/lower-namespaces.js +9 -4
- package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
- package/dist/frontend/lowering/lower-server.d.ts +10 -0
- package/dist/frontend/lowering/lower-server.js +239 -61
- package/dist/frontend/lowering/lower-server.js.map +1 -1
- package/dist/frontend/lowering/lower-stdlib.d.ts +5 -0
- package/dist/frontend/lowering/lower-stdlib.js +42 -10
- package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.d.ts +23 -0
- package/dist/frontend/lowering/lower-stmts.js +622 -68
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.test.js +1 -1
- package/dist/frontend/lowering/lower-stmts.test.js.map +1 -1
- package/dist/frontend/lowering/lower-stream.d.ts +20 -2
- package/dist/frontend/lowering/lower-stream.js +2055 -318
- package/dist/frontend/lowering/lower-stream.js.map +1 -1
- package/dist/frontend/lowering/lower-timers.js +4 -3
- package/dist/frontend/lowering/lower-timers.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +197 -29
- package/dist/frontend/lowering/lowerer.js +862 -84
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/lowerer.test.js +21 -9
- package/dist/frontend/lowering/lowerer.test.js.map +1 -1
- package/dist/frontend/lowering/module-namespace-elements.d.ts +11 -1
- package/dist/frontend/lowering/module-namespace-elements.js +82 -5
- package/dist/frontend/lowering/module-namespace-elements.js.map +1 -1
- package/dist/frontend/lowering/narrowing-stability.js +5 -0
- package/dist/frontend/lowering/narrowing-stability.js.map +1 -1
- package/dist/frontend/lowering/native-ffi.js +1 -1
- package/dist/frontend/lowering/native-ffi.js.map +1 -1
- package/dist/frontend/lowering/new-target.d.ts +12 -0
- package/dist/frontend/lowering/new-target.js +280 -0
- package/dist/frontend/lowering/new-target.js.map +1 -0
- package/dist/frontend/lowering/object-enumeration-receiver.js +2 -1
- package/dist/frontend/lowering/object-enumeration-receiver.js.map +1 -1
- package/dist/frontend/lowering/pairs-snapshot.js +2 -1
- package/dist/frontend/lowering/pairs-snapshot.js.map +1 -1
- package/dist/frontend/lowering/private-brands.d.ts +9 -0
- package/dist/frontend/lowering/private-brands.js +66 -15
- package/dist/frontend/lowering/private-brands.js.map +1 -1
- package/dist/frontend/lowering/promise-executor-adapter.js +2 -1
- package/dist/frontend/lowering/promise-executor-adapter.js.map +1 -1
- package/dist/frontend/lowering/require-initialization.js +2 -1
- package/dist/frontend/lowering/require-initialization.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-elements.d.ts +5 -0
- package/dist/frontend/lowering/runtime-optional-elements.js +17 -1
- package/dist/frontend/lowering/runtime-optional-elements.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-records.d.ts +2 -0
- package/dist/frontend/lowering/runtime-optional-records.js +18 -5
- package/dist/frontend/lowering/runtime-optional-records.js.map +1 -1
- package/dist/frontend/lowering/site-dependencies.d.ts +35 -0
- package/dist/frontend/lowering/site-dependencies.js +84 -0
- package/dist/frontend/lowering/site-dependencies.js.map +1 -0
- package/dist/frontend/lowering/site-dependencies.test.d.ts +1 -0
- package/dist/frontend/lowering/site-dependencies.test.js +53 -0
- package/dist/frontend/lowering/site-dependencies.test.js.map +1 -0
- package/dist/frontend/lowering/stable-names.d.ts +11 -0
- package/dist/frontend/lowering/stable-names.js +35 -0
- package/dist/frontend/lowering/stable-names.js.map +1 -0
- package/dist/frontend/lowering/static-typeof.d.ts +2 -2
- package/dist/frontend/lowering/static-typeof.js +42 -3
- package/dist/frontend/lowering/static-typeof.js.map +1 -1
- package/dist/frontend/lowering/strict-equality.js +2 -1
- package/dist/frontend/lowering/strict-equality.js.map +1 -1
- package/dist/frontend/lowering/structural-positions.d.ts +32 -0
- package/dist/frontend/lowering/structural-positions.js +108 -0
- package/dist/frontend/lowering/structural-positions.js.map +1 -0
- package/dist/frontend/lowering/surfaces.d.ts +3 -0
- package/dist/frontend/lowering/surfaces.js +60 -32
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/lowering/undefined-index.d.ts +27 -0
- package/dist/frontend/lowering/undefined-index.js +82 -0
- package/dist/frontend/lowering/undefined-index.js.map +1 -0
- package/dist/frontend/lowering/var-hoisting.js +66 -16
- package/dist/frontend/lowering/var-hoisting.js.map +1 -1
- package/dist/frontend/lowering/width-lift.d.ts +18 -0
- package/dist/frontend/npm-static-bundled-chunks.js +9 -11
- package/dist/frontend/npm-static-bundled-chunks.js.map +1 -1
- package/dist/frontend/npm-static-bundled-chunks.test.js +6 -5
- package/dist/frontend/npm-static-bundled-chunks.test.js.map +1 -1
- package/dist/frontend/npm-static-rewrite-syntax.js +9 -1
- package/dist/frontend/npm-static-rewrite-syntax.js.map +1 -1
- package/dist/frontend/npm-static-tsc-helpers.d.ts +5 -0
- package/dist/frontend/npm-static-tsc-helpers.js +106 -0
- package/dist/frontend/npm-static-tsc-helpers.js.map +1 -0
- package/dist/frontend/npm-static-tsc-helpers.test.d.ts +1 -0
- package/dist/frontend/npm-static-tsc-helpers.test.js +58 -0
- package/dist/frontend/npm-static-tsc-helpers.test.js.map +1 -0
- package/dist/frontend/npm-static-type-exports-host.d.ts +8 -0
- package/dist/frontend/npm-static-type-exports-host.js +214 -0
- package/dist/frontend/npm-static-type-exports-host.js.map +1 -0
- package/dist/frontend/npm-static-type-exports-host.test.d.ts +1 -0
- package/dist/frontend/npm-static-type-exports-host.test.js +53 -0
- package/dist/frontend/npm-static-type-exports-host.test.js.map +1 -0
- package/dist/frontend/npm-static-type-exports.d.ts +52 -0
- package/dist/frontend/npm-static-type-exports.js +261 -0
- package/dist/frontend/npm-static-type-exports.js.map +1 -0
- package/dist/frontend/npm-static-type-exports.test.d.ts +1 -0
- package/dist/frontend/npm-static-type-exports.test.js +103 -0
- package/dist/frontend/npm-static-type-exports.test.js.map +1 -0
- package/dist/frontend/npm-static-umd.d.ts +6 -0
- package/dist/frontend/npm-static-umd.js +203 -0
- package/dist/frontend/npm-static-umd.js.map +1 -0
- package/dist/frontend/npm-static-umd.test.d.ts +1 -0
- package/dist/frontend/npm-static-umd.test.js +105 -0
- package/dist/frontend/npm-static-umd.test.js.map +1 -0
- package/dist/frontend/npm-static.d.ts +8 -0
- package/dist/frontend/npm-static.js +51 -22
- package/dist/frontend/npm-static.js.map +1 -1
- package/dist/frontend/package-shims.d.ts +3 -0
- package/dist/frontend/package-shims.js +71 -8
- package/dist/frontend/package-shims.js.map +1 -1
- package/dist/frontend/pipeline.js +18 -10
- package/dist/frontend/pipeline.js.map +1 -1
- package/dist/frontend/process-fork.d.ts +25 -0
- package/dist/frontend/process-fork.js +2 -0
- package/dist/frontend/process-fork.js.map +1 -0
- package/dist/frontend/program.d.ts +21 -1
- package/dist/frontend/program.js +586 -74
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/program.test.js +44 -4
- package/dist/frontend/program.test.js.map +1 -1
- package/dist/frontend/services.d.ts +6 -0
- package/dist/frontend/services.js +18 -0
- package/dist/frontend/services.js.map +1 -1
- package/dist/frontend/token-equivalence.d.ts +3 -0
- package/dist/frontend/token-equivalence.js +409 -0
- package/dist/frontend/token-equivalence.js.map +1 -0
- package/dist/frontend/token-equivalence.test.d.ts +1 -0
- package/dist/frontend/token-equivalence.test.js +67 -0
- package/dist/frontend/token-equivalence.test.js.map +1 -0
- package/dist/frontend/ts7/ast-node.d.ts +43 -7
- package/dist/frontend/ts7/ast-node.js +1176 -129
- package/dist/frontend/ts7/ast-node.js.map +1 -1
- package/dist/frontend/ts7/ast-node.test.js +84 -0
- package/dist/frontend/ts7/ast-node.test.js.map +1 -1
- package/dist/frontend/ts7/ast-wire.d.ts +29 -3
- package/dist/frontend/ts7/ast-wire.js +144 -31
- package/dist/frontend/ts7/ast-wire.js.map +1 -1
- package/dist/frontend/ts7/ast-wire.test.js +23 -0
- package/dist/frontend/ts7/ast-wire.test.js.map +1 -1
- package/dist/frontend/ts7/ast.d.ts +23 -2
- package/dist/frontend/ts7/ast.js +143 -2
- package/dist/frontend/ts7/ast.js.map +1 -1
- package/dist/frontend/ts7/checker-backend.d.ts +3 -4
- package/dist/frontend/ts7/checker-backend.js +2 -2
- package/dist/frontend/ts7/checker-backend.js.map +1 -1
- package/dist/frontend/ts7/checker-backend.test.js +5 -9
- package/dist/frontend/ts7/checker-backend.test.js.map +1 -1
- package/dist/frontend/ts7/checker.d.ts +17 -1
- package/dist/frontend/ts7/checker.js +82 -1
- package/dist/frontend/ts7/checker.js.map +1 -1
- package/dist/frontend/ts7/checker.test.js +9 -6
- package/dist/frontend/ts7/checker.test.js.map +1 -1
- package/dist/frontend/ts7/enums.d.ts +3 -3
- package/dist/frontend/ts7/enums.generated.d.ts +10 -0
- package/dist/frontend/ts7/enums.generated.js +21 -0
- package/dist/frontend/ts7/enums.generated.js.map +1 -1
- package/dist/frontend/ts7/enums.js +19 -0
- package/dist/frontend/ts7/enums.js.map +1 -1
- package/dist/frontend/ts7/lib-diagnostics.d.ts +24 -0
- package/dist/frontend/ts7/lib-diagnostics.js +307 -0
- package/dist/frontend/ts7/lib-diagnostics.js.map +1 -0
- package/dist/frontend/ts7/lib-diagnostics.test.d.ts +1 -0
- package/dist/frontend/ts7/lib-diagnostics.test.js +199 -0
- package/dist/frontend/ts7/lib-diagnostics.test.js.map +1 -0
- package/dist/frontend/ts7/program-host.d.ts +7 -0
- package/dist/frontend/ts7/program-host.js +30 -4
- package/dist/frontend/ts7/program-host.js.map +1 -1
- package/dist/frontend/ts7/semantic-checker.d.ts +10 -0
- package/dist/frontend/ts7/semantic-checker.js +25 -20
- package/dist/frontend/ts7/semantic-checker.js.map +1 -1
- package/dist/frontend/ts7/semantic-json.d.ts +13 -0
- package/dist/frontend/ts7/semantic-json.js +146 -0
- package/dist/frontend/ts7/semantic-json.js.map +1 -1
- package/dist/frontend/ts7/semantic-json.test.js +57 -1
- package/dist/frontend/ts7/semantic-json.test.js.map +1 -1
- package/dist/frontend/ts7/semantic-model.d.ts +15 -0
- package/dist/frontend/ts7/semantic-model.js +67 -19
- package/dist/frontend/ts7/semantic-model.js.map +1 -1
- package/dist/frontend/ts7/semantic-model.test.js +3 -2
- package/dist/frontend/ts7/semantic-model.test.js.map +1 -1
- package/dist/frontend/ts7/session.d.ts +14 -1
- package/dist/frontend/ts7/session.js +23 -1
- package/dist/frontend/ts7/session.js.map +1 -1
- package/dist/frontend/tsc-codes.d.ts +1 -1
- package/dist/frontend/tsc-codes.js +7 -0
- package/dist/frontend/tsc-codes.js.map +1 -1
- package/dist/frontend/type-mapper.d.ts +51 -7
- package/dist/frontend/type-mapper.js +456 -43
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/frontend/type-mapper.test.js +1 -1
- package/dist/frontend/type-mapper.test.js.map +1 -1
- package/dist/frontend-process-args.d.ts +4 -0
- package/dist/frontend-process-args.js +52 -0
- package/dist/frontend-process-args.js.map +1 -0
- package/dist/frontend-process-args.test.d.ts +1 -0
- package/dist/frontend-process-args.test.js +47 -0
- package/dist/frontend-process-args.test.js.map +1 -0
- package/dist/frontend-process.d.ts +1 -0
- package/dist/frontend-process.js +23 -0
- package/dist/frontend-process.js.map +1 -0
- package/dist/heap-collection.d.ts +16 -0
- package/dist/heap-collection.js +42 -0
- package/dist/heap-collection.js.map +1 -0
- package/dist/heap-collection.test.d.ts +1 -0
- package/dist/heap-collection.test.js +59 -0
- package/dist/heap-collection.test.js.map +1 -0
- package/dist/heap-pressure.d.ts +2 -0
- package/dist/heap-pressure.js +12 -0
- package/dist/heap-pressure.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +435 -89
- package/dist/index.js.map +1 -1
- package/dist/ir/analysis.js +5 -3
- package/dist/ir/analysis.js.map +1 -1
- package/dist/ir/array-length-stability.d.ts +4 -0
- package/dist/ir/array-length-stability.js +26 -6
- package/dist/ir/array-length-stability.js.map +1 -1
- package/dist/ir/array-length-stability.test.js +49 -0
- package/dist/ir/array-length-stability.test.js.map +1 -1
- package/dist/ir/builtin-effects.d.ts +7 -0
- package/dist/ir/builtin-effects.js +80 -0
- package/dist/ir/builtin-effects.js.map +1 -1
- package/dist/ir/builtin-signatures.d.ts +7 -1
- package/dist/ir/builtin-signatures.js +303 -21
- package/dist/ir/builtin-signatures.js.map +1 -1
- package/dist/ir/callback-specialization.d.ts +2 -1
- package/dist/ir/callback-specialization.js +23 -18
- package/dist/ir/callback-specialization.js.map +1 -1
- package/dist/ir/char-unit-locals.d.ts +19 -0
- package/dist/ir/char-unit-locals.js +185 -0
- package/dist/ir/char-unit-locals.js.map +1 -0
- package/dist/ir/char-unit-locals.test.d.ts +1 -0
- package/dist/ir/char-unit-locals.test.js +94 -0
- package/dist/ir/char-unit-locals.test.js.map +1 -0
- package/dist/ir/final-fields.d.ts +3 -1
- package/dist/ir/final-fields.js +15 -17
- package/dist/ir/final-fields.js.map +1 -1
- package/dist/ir/function-references.d.ts +2 -0
- package/dist/ir/function-references.js +2 -0
- package/dist/ir/function-references.js.map +1 -1
- package/dist/ir/function-references.test.js +5 -0
- package/dist/ir/function-references.test.js.map +1 -1
- package/dist/ir/initializer-bindings.d.ts +2 -1
- package/dist/ir/initializer-bindings.js +27 -20
- package/dist/ir/initializer-bindings.js.map +1 -1
- package/dist/ir/int32-arrays.d.ts +108 -0
- package/dist/ir/int32-arrays.js +831 -0
- package/dist/ir/int32-arrays.js.map +1 -0
- package/dist/ir/int32-slots.d.ts +36 -6
- package/dist/ir/int32-slots.js +370 -171
- package/dist/ir/int32-slots.js.map +1 -1
- package/dist/ir/int32-slots.test.js +3 -1
- package/dist/ir/int32-slots.test.js.map +1 -1
- package/dist/ir/integer-loop-facts.d.ts +9 -4
- package/dist/ir/integer-loop-facts.js +93 -18
- package/dist/ir/integer-loop-facts.js.map +1 -1
- package/dist/ir/integer-loops.d.ts +49 -0
- package/dist/ir/integer-loops.js +202 -40
- package/dist/ir/integer-loops.js.map +1 -1
- package/dist/ir/integer-loops.test.js +211 -1
- package/dist/ir/integer-loops.test.js.map +1 -1
- package/dist/ir/integer-ranges.d.ts +5 -0
- package/dist/ir/integer-ranges.js +125 -12
- package/dist/ir/integer-ranges.js.map +1 -1
- package/dist/ir/integer-ranges.test.js +94 -0
- package/dist/ir/integer-ranges.test.js.map +1 -1
- package/dist/ir/ir.d.ts +87 -9
- package/dist/ir/ir.js +61 -2
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/ir.test.js +21 -1
- package/dist/ir/ir.test.js.map +1 -1
- package/dist/ir/js-ic.d.ts +19 -2
- package/dist/ir/js-ic.js +95 -11
- package/dist/ir/js-ic.js.map +1 -1
- package/dist/ir/js-ic.test.js +188 -0
- package/dist/ir/js-ic.test.js.map +1 -1
- package/dist/ir/node-index.d.ts +57 -0
- package/dist/ir/node-index.js +215 -0
- package/dist/ir/node-index.js.map +1 -0
- package/dist/ir/paired-while-loops.d.ts +25 -0
- package/dist/ir/paired-while-loops.js +335 -0
- package/dist/ir/paired-while-loops.js.map +1 -0
- package/dist/ir/paired-while-loops.test.d.ts +1 -0
- package/dist/ir/paired-while-loops.test.js +163 -0
- package/dist/ir/paired-while-loops.test.js.map +1 -0
- package/dist/ir/parameter-versions.d.ts +25 -0
- package/dist/ir/parameter-versions.js +300 -0
- package/dist/ir/parameter-versions.js.map +1 -0
- package/dist/ir/runtime-features.d.ts +60 -15
- package/dist/ir/runtime-features.js +276 -35
- package/dist/ir/runtime-features.js.map +1 -1
- package/dist/ir/serialize.d.ts +12 -2
- package/dist/ir/serialize.js +16 -3
- package/dist/ir/serialize.js.map +1 -1
- package/dist/ir/serialize.test.js +17 -0
- package/dist/ir/serialize.test.js.map +1 -1
- package/dist/ir/tiers.js +1 -0
- package/dist/ir/tiers.js.map +1 -1
- package/dist/ir/traverse.d.ts +2 -0
- package/dist/ir/traverse.js +29 -5
- package/dist/ir/traverse.js.map +1 -1
- package/dist/ir/validate.js +171 -45
- package/dist/ir/validate.js.map +1 -1
- package/dist/library/ir-policy.js +12 -0
- package/dist/library/ir-policy.js.map +1 -1
- package/dist/library/library-cache.d.ts +2 -0
- package/dist/library/library-cache.js.map +1 -1
- package/dist/library/prepare.js +2 -0
- package/dist/library/prepare.js.map +1 -1
- package/dist/native/cache.d.ts +6 -1
- package/dist/native/cache.js +28 -5
- package/dist/native/cache.js.map +1 -1
- package/dist/native/cache.test.js +16 -2
- package/dist/native/cache.test.js.map +1 -1
- package/dist/native/cli.js +26 -1
- package/dist/native/cli.js.map +1 -1
- package/dist/native/compiler.js +8 -6
- package/dist/native/compiler.js.map +1 -1
- package/dist/native/executable-cache.d.ts +1 -1
- package/dist/native/executable-cache.js +2 -2
- package/dist/native/executable-cache.js.map +1 -1
- package/dist/native/prepare.d.ts +3 -1
- package/dist/native/prepare.js +123 -31
- package/dist/native/prepare.js.map +1 -1
- package/dist/native/prepare.test.js +78 -18
- package/dist/native/prepare.test.js.map +1 -1
- package/dist/native/sanitizer.test.js +6 -1
- package/dist/native/sanitizer.test.js.map +1 -1
- package/dist/native/text-file.d.ts +13 -3
- package/dist/native/text-file.js +63 -9
- package/dist/native/text-file.js.map +1 -1
- package/dist/native/text-file.test.d.ts +1 -0
- package/dist/native/text-file.test.js +49 -0
- package/dist/native/text-file.test.js.map +1 -0
- package/dist/native/toolchain.js +4 -4
- package/dist/native/toolchain.js.map +1 -1
- package/dist/native/toolchain.test.js +3 -3
- 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/text-parts.d.ts +7 -0
- package/dist/text-parts.js +44 -0
- package/dist/text-parts.js.map +1 -1
- package/dist/text-parts.test.d.ts +1 -0
- package/dist/text-parts.test.js +46 -0
- package/dist/text-parts.test.js.map +1 -0
- package/dist/timing.d.ts +9 -2
- package/dist/timing.js +7 -4
- package/dist/timing.js.map +1 -1
- package/dist/wasm/translate.d.ts +4 -0
- package/dist/wasm/translate.js +2 -2
- package/dist/wasm/translate.js.map +1 -1
- package/package.json +21 -21
- package/shims/chalk/v5.ts +688 -0
- package/shims/hono-node-server/v2.ts +645 -0
- package/shims/hot-shots/client.ts +1126 -0
- package/shims/hot-shots/v8-unix-dgram.ts +8 -0
- package/shims/hot-shots/v8.ts +8 -0
- package/shims/undici/core/client.ts +4 -4
- package/surface-manifest.json +44 -52
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import { InternalCompilerError } from "../errors.js";
|
|
2
|
+
import { keyedHelperName } from "./lowering/stable-names.js";
|
|
2
3
|
import { mockCallRecordType, mockContextType } from "./mock-shapes.js";
|
|
3
4
|
import * as ts from "./ts7/adapter.js";
|
|
4
5
|
import { bodyReadsArguments } from "./arguments-usage.js";
|
|
5
|
-
import { BYTES_ELEMENT_NAME, arrayOf, isDynTypedRefType, BOOL, bytesOf, canConvertToDyn, canDynCheckTo, CHILD_T, CRYPTOHASH_T, CRYPTOHMAC_T, DATE_T, DYN, F64, funcOf, isSupportedArrayElem, isSupportedIndexValue, isSupportedMapKey, isSupportedMapValue, isSupportedSetElem, isUnitType, mapOf, NULL_T, PROCSTREAM_T, RUNTIME_EMITTER_CLASS, RUNTIME_ERROR_CLASSES, RUNTIME_STREAM_CLASSES, ZLIB_STREAM_MODES, setOf, STRING, SYMBOL_T, typeEquals, typeKey, maybePromiseUnionArmsOk, unionContainerArmsOk, UNDEFINED_T, VOID, } from "../ir/ir.js";
|
|
6
|
-
import { BIGINT_T } from "../ir/ir.js";
|
|
6
|
+
import { BYTES_ELEMENT_NAME, arrayOf, isDynTypedRefType, BOOL, bytesOf, canConvertToDyn, canDynCheckTo, CHILD_T, CRYPTOHASH_T, CRYPTOHMAC_T, DATE_T, DYN, F64, funcOf, isSupportedArrayElem, isSupportedIndexValue, isSupportedMapKey, isSupportedMapValue, isSupportedSetElem, iterableArmsElem, isUnitType, mapOf, NULL_T, PROCSTREAM_T, RUNTIME_EMITTER_CLASS, RUNTIME_ERROR_CLASSES, RUNTIME_STREAM_CLASSES, ZLIB_STREAM_MODES, setOf, STRING, SYMBOL_T, typeEquals, typeKey, maybePromiseUnionArmsOk, unionContainerArmsOk, UNDEFINED_T, VOID, } from "../ir/ir.js";
|
|
7
|
+
import { BIGINT_T, KEY_ORDER_FIELD } from "../ir/ir.js";
|
|
7
8
|
import { literalValues } from "./literal-values.js";
|
|
8
9
|
import { remapUnionDiscriminant } from "./union-discriminants.js";
|
|
9
10
|
import { isJsSourceFile, isNodeTypesPath } from "./program.js";
|
|
11
|
+
import { isProvenanceSourceFile } from "./provenance-registry.js";
|
|
10
12
|
import { functionCanReturnUndefined } from "./function-completion.js";
|
|
11
13
|
import { accessorSlotProp, recordTextCodecClass } from "../ir/ir.js";
|
|
12
14
|
// typeKey moved to ir/ir.ts (the backend needs it too, for per-type
|
|
@@ -85,6 +87,46 @@ export const WEBCRYPTO_DYN_TYPES = new Set([
|
|
|
85
87
|
"KeyAlgorithm",
|
|
86
88
|
"HmacImportParams",
|
|
87
89
|
"HmacKeyAlgorithm",
|
|
90
|
+
"CryptoKeyPair",
|
|
91
|
+
"EcKeyAlgorithm",
|
|
92
|
+
"RsaHashedKeyAlgorithm",
|
|
93
|
+
"EcKeyGenParams",
|
|
94
|
+
"EcKeyImportParams",
|
|
95
|
+
"EcdsaParams",
|
|
96
|
+
"RsaHashedKeyGenParams",
|
|
97
|
+
"RsaHashedImportParams",
|
|
98
|
+
"RsaPssParams",
|
|
99
|
+
"HmacKeyGenParams",
|
|
100
|
+
"AesKeyGenParams",
|
|
101
|
+
"AesKeyAlgorithm",
|
|
102
|
+
"JsonWebKey",
|
|
103
|
+
"AesGcmParams",
|
|
104
|
+
"AesCbcParams",
|
|
105
|
+
"AesCtrParams",
|
|
106
|
+
"Pbkdf2Params",
|
|
107
|
+
"HkdfParams",
|
|
108
|
+
"AesDerivedKeyParams",
|
|
109
|
+
]);
|
|
110
|
+
/** node:crypto's key and signature option interfaces: the key functions,
|
|
111
|
+
* KeyObject.export and sign/verify take them as checked-dynamic arguments
|
|
112
|
+
* (scr_lib.c, scr_pki.c). */
|
|
113
|
+
export const CRYPTO_KEY_OPTION_DYN_TYPES = new Set([
|
|
114
|
+
"AsymmetricKeyExportOptions",
|
|
115
|
+
"ECKeyPairKeyObjectOptions",
|
|
116
|
+
"ECKeyPairOptions",
|
|
117
|
+
"ED25519KeyPairOptions",
|
|
118
|
+
"JsonWebKeyInput",
|
|
119
|
+
"JwkKeyExportOptions",
|
|
120
|
+
"KeyExportOptions",
|
|
121
|
+
"PrivateKeyInput",
|
|
122
|
+
"PublicKeyInput",
|
|
123
|
+
"RSAKeyPairKeyObjectOptions",
|
|
124
|
+
"RSAKeyPairOptions",
|
|
125
|
+
"SignKeyObjectInput",
|
|
126
|
+
"SignPrivateKeyInput",
|
|
127
|
+
"SigningOptions",
|
|
128
|
+
"VerifyKeyObjectInput",
|
|
129
|
+
"VerifyPublicKeyInput",
|
|
88
130
|
]);
|
|
89
131
|
export const FETCH_AMBIENT_TYPES = [
|
|
90
132
|
"Response",
|
|
@@ -108,6 +150,9 @@ export const FETCH_AMBIENT_TYPES = [
|
|
|
108
150
|
"ReadableStreamReadResult",
|
|
109
151
|
"ReadableStreamReadValueResult",
|
|
110
152
|
"ReadableStreamReadDoneResult",
|
|
153
|
+
"TransformStream",
|
|
154
|
+
"WritableStream",
|
|
155
|
+
"WritableStreamDefaultWriter",
|
|
111
156
|
"Blob",
|
|
112
157
|
"File",
|
|
113
158
|
"BlobPropertyBag",
|
|
@@ -179,6 +224,8 @@ function comparePriority(left, right) {
|
|
|
179
224
|
export class ShapeRegistry {
|
|
180
225
|
/** Existing layouts change only when a recursive placeholder closes. */
|
|
181
226
|
revision = 0;
|
|
227
|
+
/** Each shape id with a second hash of its key (keyedHelperName). */
|
|
228
|
+
keyedNameKeys = new Map();
|
|
182
229
|
byKey = new Map();
|
|
183
230
|
byId = new Map();
|
|
184
231
|
/** Historical emit-order rank of the declaration-order metadata each
|
|
@@ -194,7 +241,7 @@ export class ShapeRegistry {
|
|
|
194
241
|
* writer after all priority candidates have closed. */
|
|
195
242
|
derivedDeclaredOrderFinalizers = [];
|
|
196
243
|
currentDeclaredOrderPriority = [0, 0];
|
|
197
|
-
/** All interned shapes in first-seen
|
|
244
|
+
/** All interned shapes in first-seen order. */
|
|
198
245
|
shapes = [];
|
|
199
246
|
/** ts.Types currently being mapped — a BACK-REFERENCE to one of these is
|
|
200
247
|
* the recursive knot (`interface TreeNode { children: TreeNode[] }`):
|
|
@@ -299,11 +346,12 @@ export class ShapeRegistry {
|
|
|
299
346
|
}
|
|
300
347
|
/** The shape id a back-reference to an in-progress type resolves to:
|
|
301
348
|
* reuses the type's persistent recursive id or mints a PLACEHOLDER
|
|
302
|
-
* entry (empty fields) the outer frame finalizes.
|
|
303
|
-
|
|
349
|
+
* entry (empty fields) the outer frame finalizes. `describe` names a new
|
|
350
|
+
* placeholder (checkerTypeDescription). */
|
|
351
|
+
recursiveRef(t, describe) {
|
|
304
352
|
let id = this.recIds.get(t);
|
|
305
353
|
if (id === undefined) {
|
|
306
|
-
id =
|
|
354
|
+
id = recursivePlaceholderName(this, "r", describe(), (name) => this.byId.has(name));
|
|
307
355
|
const shape = { id, fields: [] };
|
|
308
356
|
this.byId.set(id, shape);
|
|
309
357
|
this.shapes.push(shape);
|
|
@@ -358,7 +406,7 @@ export class ShapeRegistry {
|
|
|
358
406
|
const key = this.keyOf(fields, tuple, indexValue);
|
|
359
407
|
let id = this.byKey.get(key);
|
|
360
408
|
if (id === undefined) {
|
|
361
|
-
id =
|
|
409
|
+
id = keyedHelperName(this, "r", key, "");
|
|
362
410
|
const shape = {
|
|
363
411
|
id,
|
|
364
412
|
fields,
|
|
@@ -401,6 +449,20 @@ export class ShapeRegistry {
|
|
|
401
449
|
const missing = extra.filter((name) => !order.includes(name));
|
|
402
450
|
return missing.length === 0 ? order : [...order, ...missing];
|
|
403
451
|
}
|
|
452
|
+
/** Gives a shape with orderVariants its KEY_ORDER_FIELD, in place,
|
|
453
|
+
* after the bodies lowered (key-order-witness.ts adds the field to each
|
|
454
|
+
* of the shape's literals). Allocation zeroes it, which every other
|
|
455
|
+
* construction keeps. */
|
|
456
|
+
addKeyOrderField(shapeId) {
|
|
457
|
+
const shape = this.byId.get(shapeId);
|
|
458
|
+
if (!shape || shape.fields.some((f) => f.name === KEY_ORDER_FIELD))
|
|
459
|
+
return;
|
|
460
|
+
shape.fields = [...shape.fields, { name: KEY_ORDER_FIELD, type: F64 }].sort((a, b) => a.name < b.name ? -1 : a.name > b.name ? 1 : 0);
|
|
461
|
+
this.revision++;
|
|
462
|
+
const key = this.keyOf(shape.fields, false, shape.indexValue);
|
|
463
|
+
if (!this.byKey.has(key))
|
|
464
|
+
this.byKey.set(key, shapeId);
|
|
465
|
+
}
|
|
404
466
|
/** Adds optional fields to an interned shape in place: members a type
|
|
405
467
|
* assertion attaches to the shape's values (`r as R & { tag: string }`
|
|
406
468
|
* followed by `view.tag = ...`; see assertion-members.ts). Every value
|
|
@@ -434,6 +496,44 @@ export class ShapeRegistry {
|
|
|
434
496
|
this.byKey.set(key, shapeId);
|
|
435
497
|
}
|
|
436
498
|
}
|
|
499
|
+
/** The id of a recursive placeholder described by `description`. Two
|
|
500
|
+
* different types can still share a description (checkerTypeDescription stops
|
|
501
|
+
* after a few levels of type arguments); the later one takes the first free
|
|
502
|
+
* name with a numbered suffix. */
|
|
503
|
+
function recursivePlaceholderName(owner, prefix, description, taken) {
|
|
504
|
+
let name = keyedHelperName(owner, prefix, `recursive:${description}`, "");
|
|
505
|
+
for (let n = 1; taken(name); n++)
|
|
506
|
+
name = keyedHelperName(owner, prefix, `recursive:${description}#${n}`, "");
|
|
507
|
+
return name;
|
|
508
|
+
}
|
|
509
|
+
/** How many levels of type arguments checkerTypeDescription describes. */
|
|
510
|
+
const RECURSIVE_NAME_DEPTH = 3;
|
|
511
|
+
/** A checker type's description for names that must not depend on checker
|
|
512
|
+
* type ids (a recursive placeholder, a generic class instance keyed by a
|
|
513
|
+
* literal): its printed form, the structural position of its first
|
|
514
|
+
* declaration, and the same for its type arguments (two instantiations
|
|
515
|
+
* print the same when their type arguments are type parameters or classes
|
|
516
|
+
* of the same name from different declarations). */
|
|
517
|
+
export function checkerTypeDescription(t, ctx, depth = 0) {
|
|
518
|
+
const symbol = t.getAliasSymbol() ?? t.getSymbol();
|
|
519
|
+
const declaration = symbol?.declarations[0];
|
|
520
|
+
const where = declaration
|
|
521
|
+
? (ctx.positionOf?.(declaration) ??
|
|
522
|
+
`${ts.getSourceFileOfNode(declaration).fileName}:${declaration.pos}`)
|
|
523
|
+
: "";
|
|
524
|
+
let description = `${ctx.checker.typeToString(t)}@${where}`;
|
|
525
|
+
if (depth < RECURSIVE_NAME_DEPTH) {
|
|
526
|
+
const aliasArguments = t.getAliasSymbol() !== undefined ? (t.getAliasTypeArguments() ?? []) : [];
|
|
527
|
+
const typeArguments = aliasArguments.length > 0
|
|
528
|
+
? aliasArguments
|
|
529
|
+
: t.isTypeReference()
|
|
530
|
+
? ctx.checker.getTypeArguments(t)
|
|
531
|
+
: [];
|
|
532
|
+
if (typeArguments.length > 0)
|
|
533
|
+
description += `<${typeArguments.map((arg) => checkerTypeDescription(arg, ctx, depth + 1)).join(",")}>`;
|
|
534
|
+
}
|
|
535
|
+
return description;
|
|
536
|
+
}
|
|
437
537
|
/** The frontend's union interner — mirrors ShapeRegistry. A union's
|
|
438
538
|
* canonical identity includes its typeKey-sorted arms and literal
|
|
439
539
|
* discriminator contract. An arm's index in that list IS its runtime tag.
|
|
@@ -441,10 +541,12 @@ export class ShapeRegistry {
|
|
|
441
541
|
export class UnionRegistry {
|
|
442
542
|
/** Existing arm/discriminator contracts change when a placeholder closes. */
|
|
443
543
|
revision = 0;
|
|
544
|
+
/** Each union id with a second hash of its key (keyedHelperName). */
|
|
545
|
+
keyedNameKeys = new Map();
|
|
444
546
|
byKey = new Map();
|
|
445
547
|
byId = new Map();
|
|
446
548
|
armTags = new Map();
|
|
447
|
-
/** All interned unions in first-seen
|
|
549
|
+
/** All interned unions in first-seen order. */
|
|
448
550
|
unions = [];
|
|
449
551
|
/** ts.Types currently being mapped — a back-reference to one is the
|
|
450
552
|
* recursive knot passing through a union (`type Tree = Leaf | Branch`
|
|
@@ -459,11 +561,12 @@ export class UnionRegistry {
|
|
|
459
561
|
pendingRec = new Set();
|
|
460
562
|
/** The union id a back-reference to an in-progress union resolves to:
|
|
461
563
|
* reuses the type's persistent recursive id or mints a PLACEHOLDER
|
|
462
|
-
* entry (empty arms) the outer frame finalizes.
|
|
463
|
-
|
|
564
|
+
* entry (empty arms) the outer frame finalizes. `describe` names a new
|
|
565
|
+
* placeholder (checkerTypeDescription). */
|
|
566
|
+
recursiveRef(t, describe) {
|
|
464
567
|
let id = this.recIds.get(t);
|
|
465
568
|
if (id === undefined) {
|
|
466
|
-
id =
|
|
569
|
+
id = recursivePlaceholderName(this, "u", describe(), (name) => this.byId.has(name));
|
|
467
570
|
const def = { id, arms: [] };
|
|
468
571
|
this.byId.set(id, def);
|
|
469
572
|
this.unions.push(def);
|
|
@@ -509,7 +612,7 @@ export class UnionRegistry {
|
|
|
509
612
|
const key = JSON.stringify([arms.map(typeKey), discriminant]);
|
|
510
613
|
let id = this.byKey.get(key);
|
|
511
614
|
if (id === undefined) {
|
|
512
|
-
id =
|
|
615
|
+
id = keyedHelperName(this, "u", key, "");
|
|
513
616
|
const def = { id, arms, ...(discriminant ? { discriminant } : {}) };
|
|
514
617
|
this.byKey.set(key, id);
|
|
515
618
|
this.byId.set(id, def);
|
|
@@ -980,7 +1083,7 @@ function genChannels(yieldTs, retTs, nextTs, ctx) {
|
|
|
980
1083
|
: mapType(nextTs, ctx);
|
|
981
1084
|
if (!nextT || nextT.kind === "void" || nextT.kind === "nullT")
|
|
982
1085
|
return null;
|
|
983
|
-
const ownChannel = (t) => t.kind === "f64" || t.kind === "bool" || t.kind === "string";
|
|
1086
|
+
const ownChannel = (t) => t.kind === "f64" || t.kind === "bool" || t.kind === "string" || t.kind === "record";
|
|
984
1087
|
const dynMix = (yieldT.kind === "dyn" && retT.kind !== "dyn" && retT.kind !== "void" && !ownChannel(retT)) ||
|
|
985
1088
|
(retT.kind === "dyn" && yieldT.kind !== "dyn" && yieldT.kind !== "void" && !ownChannel(yieldT));
|
|
986
1089
|
if (dynMix)
|
|
@@ -1325,10 +1428,18 @@ export function mapType(type, ctx) {
|
|
|
1325
1428
|
if (flags & (ts.TypeFlags.Boolean | ts.TypeFlags.BooleanLiteral))
|
|
1326
1429
|
return BOOL;
|
|
1327
1430
|
}
|
|
1431
|
+
const localValue = ctx.localClassValue?.(type);
|
|
1432
|
+
if (localValue) {
|
|
1433
|
+
contextResolutions++;
|
|
1434
|
+
return localValue;
|
|
1435
|
+
}
|
|
1328
1436
|
const topLevel = mapTypeDepth === 0;
|
|
1329
1437
|
const typeId = type.id;
|
|
1330
1438
|
const memoizable = typeId !== undefined && (ctx.canMemoizeType?.() ?? true);
|
|
1331
|
-
|
|
1439
|
+
// An empty literal's type maps to the empty record as an unreduced union's
|
|
1440
|
+
// arm (emptyLiteralArm) and to the checked-dynamic value elsewhere: the two
|
|
1441
|
+
// answers keep separate memo entries.
|
|
1442
|
+
const memoKey = memoizable ? `${ctx.emptyLiteralArm ? 1 : 0}:${typeId}` : null;
|
|
1332
1443
|
if (memoKey !== null) {
|
|
1333
1444
|
const memo = ctx.typeMemo?.get(memoKey);
|
|
1334
1445
|
if (memo !== undefined)
|
|
@@ -1395,9 +1506,15 @@ function mapTypeInner(type, ctx) {
|
|
|
1395
1506
|
// TypeScript's intrinsic globalThis symbol has no declaration. A stored
|
|
1396
1507
|
// reference needs native object identity, including var's undefined state.
|
|
1397
1508
|
const intrinsic = type.getSymbol();
|
|
1398
|
-
|
|
1399
|
-
ts.symbolName(
|
|
1400
|
-
|
|
1509
|
+
const isIntrinsicGlobal = (symbol) => symbol !== undefined &&
|
|
1510
|
+
ts.symbolName(symbol) === "globalThis" &&
|
|
1511
|
+
symbol.declarations.length === 0;
|
|
1512
|
+
if (isIntrinsicGlobal(intrinsic))
|
|
1513
|
+
return DYN;
|
|
1514
|
+
// `typeof globalThis & { key?: T }` (the global-singleton spelling) is the
|
|
1515
|
+
// same global object with declared extra members.
|
|
1516
|
+
if (type.isIntersectionType() &&
|
|
1517
|
+
ts.constituentTypes(type).some((part) => isIntrinsicGlobal(part.getSymbol())))
|
|
1401
1518
|
return DYN;
|
|
1402
1519
|
if (ctx.jsDynamicDeclaration !== undefined && intrinsic !== undefined) {
|
|
1403
1520
|
const objectLiteral = (intrinsic.flags & ts.SymbolFlags.ObjectLiteral) !== 0;
|
|
@@ -1900,6 +2017,23 @@ function mapTypeInner(type, ctx) {
|
|
|
1900
2017
|
return arrayOf(unitOnlyUnion(unions));
|
|
1901
2018
|
if (tupleShape?.elementFlags === undefined)
|
|
1902
2019
|
return null;
|
|
2020
|
+
// A leading-required tuple ending in a rest element whose positions
|
|
2021
|
+
// all share one type (`[string, ...string[]]`, the non-empty list)
|
|
2022
|
+
// is an array of that type: every read, write and method behaves as
|
|
2023
|
+
// the array's, and tsc already proves the required positions exist.
|
|
2024
|
+
const flags = tupleShape.elementFlags;
|
|
2025
|
+
if (flags.length >= 2 &&
|
|
2026
|
+
(flags[flags.length - 1] & ts.ElementFlags.Rest) !== 0 &&
|
|
2027
|
+
flags.slice(0, -1).every((f) => (f & ts.ElementFlags.Required) !== 0)) {
|
|
2028
|
+
const elems = args.map((a) => mapType(a, ctx));
|
|
2029
|
+
const first = elems[0];
|
|
2030
|
+
if (first &&
|
|
2031
|
+
first.kind !== "void" &&
|
|
2032
|
+
isSupportedArrayElem(first) &&
|
|
2033
|
+
elems.every((e) => e !== null && typeEquals(e, first)))
|
|
2034
|
+
return arrayOf(first);
|
|
2035
|
+
return null;
|
|
2036
|
+
}
|
|
1903
2037
|
// Optional/rest elements have no fixed native tuple layout.
|
|
1904
2038
|
if (tupleShape.elementFlags.some((f) => !(f & ts.ElementFlags.Required))) {
|
|
1905
2039
|
return null;
|
|
@@ -2119,6 +2253,25 @@ function mapTypeInner(type, ctx) {
|
|
|
2119
2253
|
return { kind: "classval", className: inst.className };
|
|
2120
2254
|
}
|
|
2121
2255
|
}
|
|
2256
|
+
// A constructable declared in the program whose instances are not one
|
|
2257
|
+
// program class's (`new () => unknown`, `abstract new () => S` over a
|
|
2258
|
+
// record, a type that also names static members such as `{ readonly
|
|
2259
|
+
// schema: unknown; new (): unknown }`, construct overloads): the class
|
|
2260
|
+
// value rides the checked-dynamic tree, as an `unknown` slot already
|
|
2261
|
+
// holds one. `new` through it and static reads dispatch at run time,
|
|
2262
|
+
// and the constructed value checks into the signature's instance type.
|
|
2263
|
+
// Lib and package constructables keep their fences, and so do those of
|
|
2264
|
+
// fetched provenance sources (third-party code under its own policies:
|
|
2265
|
+
// an unused `@__PURE__` const typed `{ new (): any }` elides there).
|
|
2266
|
+
if (ctorSigs.length > 0 &&
|
|
2267
|
+
checker.getCallSignatures(widened).length === 0 &&
|
|
2268
|
+
(widened.getSymbol()?.declarations.length ?? 0) > 0 &&
|
|
2269
|
+
widened.getSymbol().declarations.every((d) => {
|
|
2270
|
+
const sf = ts.getSourceFileOfNode(d);
|
|
2271
|
+
return ctx.isProgramFile(sf) && !isProvenanceSourceFile(sf.fileName);
|
|
2272
|
+
})) {
|
|
2273
|
+
return DYN;
|
|
2274
|
+
}
|
|
2122
2275
|
}
|
|
2123
2276
|
// Map<K, V>: a reference to the standard library's Map interface —
|
|
2124
2277
|
// provenance, not the name (a user's own `interface Map` maps as a record
|
|
@@ -2441,18 +2594,38 @@ function mapTypeInner(type, ctx) {
|
|
|
2441
2594
|
ctx.isStdlibFile(ts.getSourceFileOfNode(d)))) {
|
|
2442
2595
|
return DYN;
|
|
2443
2596
|
}
|
|
2444
|
-
// node:crypto's KeyObject: secret keys
|
|
2445
|
-
//
|
|
2446
|
-
// that export() returns is a
|
|
2597
|
+
// node:crypto's KeyObject: secret keys (scr_lib.c) and private and
|
|
2598
|
+
// public keys (scr_pki.c) are native handles whose getters and methods
|
|
2599
|
+
// dispatch through the handle. The JsonWebKey that export() returns is a
|
|
2600
|
+
// plain checked-dynamic object.
|
|
2447
2601
|
if (((psym !== undefined && ts.symbolName(psym) === "KeyObject") ||
|
|
2448
2602
|
(psym !== undefined && ts.symbolName(psym) === "JsonWebKey")) &&
|
|
2449
2603
|
psym.declarations.some((d) => (ts.isClassDeclaration(d) || ts.isInterfaceDeclaration(d)) &&
|
|
2450
2604
|
ctx.isStdlibFile(ts.getSourceFileOfNode(d)))) {
|
|
2451
2605
|
return DYN;
|
|
2452
2606
|
}
|
|
2607
|
+
// node:crypto's key and signature options are plain checked-dynamic
|
|
2608
|
+
// objects, so a value asserted to one (`opts as
|
|
2609
|
+
// crypto.AsymmetricKeyExportOptions<"pem">`) reaches the call unchanged.
|
|
2610
|
+
if (psym !== undefined &&
|
|
2611
|
+
CRYPTO_KEY_OPTION_DYN_TYPES.has(ts.symbolName(psym)) &&
|
|
2612
|
+
psym.declarations.some((d) => ts.isInterfaceDeclaration(d) &&
|
|
2613
|
+
ctx.isStdlibFile(ts.getSourceFileOfNode(d)) &&
|
|
2614
|
+
isDeclaredInAmbientModule(d, "crypto"))) {
|
|
2615
|
+
return DYN;
|
|
2616
|
+
}
|
|
2617
|
+
// node:crypto's Sign and Verify (createSign/createVerify): native
|
|
2618
|
+
// handles over the digest state (scr_pki.c).
|
|
2619
|
+
if (psym !== undefined &&
|
|
2620
|
+
(ts.symbolName(psym) === "Sign" || ts.symbolName(psym) === "Verify") &&
|
|
2621
|
+
psym.declarations.some((d) => ts.isClassDeclaration(d) &&
|
|
2622
|
+
ctx.isStdlibFile(ts.getSourceFileOfNode(d)) &&
|
|
2623
|
+
isDeclaredInAmbientModule(d, "crypto"))) {
|
|
2624
|
+
return DYN;
|
|
2625
|
+
}
|
|
2453
2626
|
if (psym &&
|
|
2454
2627
|
FETCH_AMBIENT_TYPES.includes(ts.symbolName(psym)) &&
|
|
2455
|
-
!(ts.symbolName(psym) === "ReadableStream" &&
|
|
2628
|
+
!((ts.symbolName(psym) === "ReadableStream" || ts.symbolName(psym) === "WritableStream") &&
|
|
2456
2629
|
psym.declarations.some((d) => ts.isInterfaceDeclaration(d) && isDeclaredInAmbientNamespace(d, "NodeJS"))) &&
|
|
2457
2630
|
psym.declarations.some((d) => (ts.isInterfaceDeclaration(d) || ts.isClassDeclaration(d)) &&
|
|
2458
2631
|
ctx.isStdlibFile(ts.getSourceFileOfNode(d)))) {
|
|
@@ -2487,6 +2660,18 @@ function mapTypeInner(type, ctx) {
|
|
|
2487
2660
|
psym.declarations.some((d) => ts.isClassDeclaration(d) && ctx.isStdlibFile(ts.getSourceFileOfNode(d)))) {
|
|
2488
2661
|
return DYN;
|
|
2489
2662
|
}
|
|
2663
|
+
// node:crypto DiffieHellman values, and @types/node's DiffieHellmanGroup
|
|
2664
|
+
// alias over them, are native handles carried by the checked-dynamic
|
|
2665
|
+
// representation; lowerDiffieHellmanCall dispatches their methods.
|
|
2666
|
+
{
|
|
2667
|
+
const dhSym = widened.getAliasSymbol() ?? psym;
|
|
2668
|
+
if (dhSym !== undefined &&
|
|
2669
|
+
(ts.symbolName(dhSym) === "DiffieHellman" || ts.symbolName(dhSym) === "DiffieHellmanGroup") &&
|
|
2670
|
+
dhSym.declarations.some((d) => (ts.isClassDeclaration(d) || ts.isTypeAliasDeclaration(d)) &&
|
|
2671
|
+
ctx.isStdlibFile(ts.getSourceFileOfNode(d)))) {
|
|
2672
|
+
return DYN;
|
|
2673
|
+
}
|
|
2674
|
+
}
|
|
2490
2675
|
// ReadonlyMap/ReadonlySet are the SAME runtime values as Map/Set — the
|
|
2491
2676
|
// readonly-ness is a checker-only view (no mutating members on the
|
|
2492
2677
|
// interface), so both map to the identical IR kinds and the read-side
|
|
@@ -2508,6 +2693,9 @@ function mapTypeInner(type, ctx) {
|
|
|
2508
2693
|
// The runtime rejects reference kinds without a weak lifetime contract.
|
|
2509
2694
|
if (isStdlibInterface("WeakMap") || isStdlibInterface("WeakSet"))
|
|
2510
2695
|
return DYN;
|
|
2696
|
+
// FinalizationRegistry is a native handle with register and unregister.
|
|
2697
|
+
if (isStdlibInterface("FinalizationRegistry"))
|
|
2698
|
+
return DYN;
|
|
2511
2699
|
// Set<T>: Map's sibling — same provenance rule and key domain.
|
|
2512
2700
|
// Anything else stays unmapped;
|
|
2513
2701
|
// the `new Set` lowering names the offending element type specifically.
|
|
@@ -3114,9 +3302,10 @@ function mapTypeInner(type, ctx) {
|
|
|
3114
3302
|
// argument — fenced at the call).
|
|
3115
3303
|
// Mixed dyn/concrete value channels share checked storage, so either
|
|
3116
3304
|
// branch of the result record has the same representation. A number,
|
|
3117
|
-
// boolean or
|
|
3118
|
-
// `Generator<number>` defaults): its
|
|
3119
|
-
// when the result record is built
|
|
3305
|
+
// boolean, string or record channel keeps its own type beside a dyn one
|
|
3306
|
+
// (the `Generator<number>` and `IterableIterator<Row>` defaults): its
|
|
3307
|
+
// values ride OUT typed and box only when the result record is built, so
|
|
3308
|
+
// for-of and spread read them back unchecked.
|
|
3120
3309
|
if (isStdlibInterface("Generator") ||
|
|
3121
3310
|
isStdlibInterface("AsyncGenerator") ||
|
|
3122
3311
|
isStdlibInterface("IterableIterator") ||
|
|
@@ -3140,6 +3329,14 @@ function mapTypeInner(type, ctx) {
|
|
|
3140
3329
|
...channels,
|
|
3141
3330
|
};
|
|
3142
3331
|
}
|
|
3332
|
+
// Iterable<T>: the iterable union (iterableUnionType) — the source value
|
|
3333
|
+
// itself in its own arm, so an array stays the same multi-pass object and
|
|
3334
|
+
// a generator stays single-pass.
|
|
3335
|
+
if (isStdlibInterface("Iterable")) {
|
|
3336
|
+
const arg = checker.getTypeArguments(widened)[0];
|
|
3337
|
+
const elem = arg ? mapType(arg, ctx) : null;
|
|
3338
|
+
return elem ? iterableUnionType(elem, ctx.shapes, unions) : null;
|
|
3339
|
+
}
|
|
3143
3340
|
// IteratorResult<T, TReturn> — the checker's type of `g.next()` (an
|
|
3144
3341
|
// alias for IteratorYieldResult<T> | IteratorReturnResult<TReturn>):
|
|
3145
3342
|
// maps to the SAME interned record genResume answers, so `const r =
|
|
@@ -3257,6 +3454,13 @@ function mapTypeInner(type, ctx) {
|
|
|
3257
3454
|
fields.sort((a, b) => (a.name < b.name ? -1 : a.name > b.name ? 1 : 0));
|
|
3258
3455
|
return { kind: "record", shapeId: ctx.shapes.intern(fields, false, undefined, order) };
|
|
3259
3456
|
}
|
|
3457
|
+
// crypto.getCipherInfo's result is Node's info object itself, read as a
|
|
3458
|
+
// checked-dynamic value: Node leaves out the fields a cipher lacks,
|
|
3459
|
+
// including the nid the declaration requires, so a record cannot hold
|
|
3460
|
+
// every result.
|
|
3461
|
+
if (isStdlibInterface("CipherInfo") &&
|
|
3462
|
+
psym.declarations.some((d) => ts.isInterfaceDeclaration(d) && isDeclaredInAmbientModule(d, "crypto")))
|
|
3463
|
+
return DYN;
|
|
3260
3464
|
// Filesystem options are data records. Keep their declared optional fields
|
|
3261
3465
|
// instead of allowing arbitrary standard-library interfaces into records.
|
|
3262
3466
|
if (((psym !== undefined && ts.symbolName(psym) === "FileReadOptions") ||
|
|
@@ -3466,6 +3670,32 @@ function mapTypeInner(type, ctx) {
|
|
|
3466
3670
|
};
|
|
3467
3671
|
}
|
|
3468
3672
|
}
|
|
3673
|
+
// crypto.generateKeyPairSync's results: KeyPairKeyObjectResult and
|
|
3674
|
+
// KeyPairSyncResult<T1, T2> as { publicKey, privateKey } records over the
|
|
3675
|
+
// mapped property types (KeyObjects, PEM strings or DER Buffers), in
|
|
3676
|
+
// Node's key order.
|
|
3677
|
+
if (psym !== undefined &&
|
|
3678
|
+
(ts.symbolName(psym) === "KeyPairKeyObjectResult" ||
|
|
3679
|
+
ts.symbolName(psym) === "KeyPairSyncResult") &&
|
|
3680
|
+
psym.declarations.some((d) => ts.isInterfaceDeclaration(d) &&
|
|
3681
|
+
ctx.isStdlibFile(ts.getSourceFileOfNode(d)) &&
|
|
3682
|
+
isDeclaredInAmbientModule(d, "crypto"))) {
|
|
3683
|
+
const field = (name) => {
|
|
3684
|
+
const prop = ctx.checker.getPropertyOfType(type, name);
|
|
3685
|
+
return prop ? mapType(ctx.checker.getTypeOfSymbol(prop), ctx) : null;
|
|
3686
|
+
};
|
|
3687
|
+
const publicKey = field("publicKey");
|
|
3688
|
+
const privateKey = field("privateKey");
|
|
3689
|
+
if (!publicKey || !privateKey)
|
|
3690
|
+
return null;
|
|
3691
|
+
return {
|
|
3692
|
+
kind: "record",
|
|
3693
|
+
shapeId: ctx.shapes.intern([
|
|
3694
|
+
{ name: "privateKey", type: privateKey },
|
|
3695
|
+
{ name: "publicKey", type: publicKey },
|
|
3696
|
+
], false, undefined, ["publicKey", "privateKey"]),
|
|
3697
|
+
};
|
|
3698
|
+
}
|
|
3469
3699
|
// crypto.X509Certificate — the Dirent-style data record: THREE visible
|
|
3470
3700
|
// fields (fingerprint and the validFrom/validTo validity window, all
|
|
3471
3701
|
// computed at construction by the new-expression lowering). Module-
|
|
@@ -3872,7 +4102,10 @@ function mapTypeInner(type, ctx) {
|
|
|
3872
4102
|
if (knownRecursive !== undefined)
|
|
3873
4103
|
return { kind: "union", unionId: knownRecursive };
|
|
3874
4104
|
if (unions.inProgress.has(widened)) {
|
|
3875
|
-
return {
|
|
4105
|
+
return {
|
|
4106
|
+
kind: "union",
|
|
4107
|
+
unionId: unions.recursiveRef(widened, () => checkerTypeDescription(widened, ctx)),
|
|
4108
|
+
};
|
|
3876
4109
|
}
|
|
3877
4110
|
unions.inProgress.add(widened);
|
|
3878
4111
|
const sensitivityAtEntry = contextResolutions;
|
|
@@ -3896,6 +4129,14 @@ function mapTypeInner(type, ctx) {
|
|
|
3896
4129
|
(part.getSymbol()?.declarations.some((d) => ctx.isStdlibFile(d.getSourceFile())) ?? false));
|
|
3897
4130
|
};
|
|
3898
4131
|
const hasArrayPart = parts.some((part) => checker.isArrayType(part) || matchArray(part));
|
|
4132
|
+
// Subtype reduction removes every arm assignable to `{}`, so a union
|
|
4133
|
+
// that keeps another non-nullish arm beside an empty literal's `{}`
|
|
4134
|
+
// was not reduced: that `{}` arm holds only the literal's objects.
|
|
4135
|
+
const nullish = ts.TypeFlags.Null | ts.TypeFlags.Undefined | ts.TypeFlags.Void;
|
|
4136
|
+
const literalEmptyArms = parts.some((part) => isEmptyObjectLiteralType(part, ctx)) &&
|
|
4137
|
+
parts.some((part) => (part.flags & nullish) === 0 &&
|
|
4138
|
+
!checker.isNeverType(part) &&
|
|
4139
|
+
!isEmptyObjectLiteralType(part, ctx));
|
|
3899
4140
|
for (const part of parts) {
|
|
3900
4141
|
if (hasArrayPart && emptyTuple(part))
|
|
3901
4142
|
continue;
|
|
@@ -3916,7 +4157,19 @@ function mapTypeInner(type, ctx) {
|
|
|
3916
4157
|
byKey.set(typeKey(NULL_T), NULL_T);
|
|
3917
4158
|
continue;
|
|
3918
4159
|
}
|
|
3919
|
-
|
|
4160
|
+
let mapped;
|
|
4161
|
+
if (literalEmptyArms && isEmptyObjectLiteralType(part, ctx)) {
|
|
4162
|
+
ctx.emptyLiteralArm = true;
|
|
4163
|
+
try {
|
|
4164
|
+
mapped = mapType(part, ctx);
|
|
4165
|
+
}
|
|
4166
|
+
finally {
|
|
4167
|
+
ctx.emptyLiteralArm = false;
|
|
4168
|
+
}
|
|
4169
|
+
}
|
|
4170
|
+
else {
|
|
4171
|
+
mapped = mapType(part, ctx);
|
|
4172
|
+
}
|
|
3920
4173
|
if (!mapped) {
|
|
3921
4174
|
return null;
|
|
3922
4175
|
}
|
|
@@ -3986,7 +4239,9 @@ function mapTypeInner(type, ctx) {
|
|
|
3986
4239
|
a.kind === "union" ||
|
|
3987
4240
|
a.kind === "date" ||
|
|
3988
4241
|
a.kind === "dyn" ||
|
|
3989
|
-
|
|
4242
|
+
// A generator arm only comes from an Iterable<T> (an optional
|
|
4243
|
+
// one keeps its unit arms beside the iterable union's).
|
|
4244
|
+
(a.kind === "generator" && iterableArmsElem(arms) === null)) ||
|
|
3990
4245
|
!maybePromiseUnionOk(parts, arms, ctx)) {
|
|
3991
4246
|
return null;
|
|
3992
4247
|
}
|
|
@@ -4789,6 +5044,53 @@ function constAssertedEmptyArrayProp(p) {
|
|
|
4789
5044
|
return false;
|
|
4790
5045
|
return underConstAssertion(d);
|
|
4791
5046
|
}
|
|
5047
|
+
/** A TypeScript property assignment `name: []` whose type is `never[]`. */
|
|
5048
|
+
function emptyNeverArrayProp(p, fieldTs, checker) {
|
|
5049
|
+
const d = p.valueDeclaration;
|
|
5050
|
+
if (d === undefined || !ts.isPropertyAssignment(d))
|
|
5051
|
+
return false;
|
|
5052
|
+
if (isJsSourceFile(ts.getSourceFileOfNode(d)))
|
|
5053
|
+
return false;
|
|
5054
|
+
if (!ts.isArrayLiteralExpression(d.initializer) || d.initializer.elements.nodes.length > 0)
|
|
5055
|
+
return false;
|
|
5056
|
+
return (checker.isArrayType(fieldTs) &&
|
|
5057
|
+
(checker.getTypeArguments(fieldTs)[0].flags & ts.TypeFlags.Never) !== 0);
|
|
5058
|
+
}
|
|
5059
|
+
/** A JavaScript object literal's property typed `never[]` (`{ issues: [] }`).
|
|
5060
|
+
* Nothing checks a JavaScript file's later writes, which can push any value
|
|
5061
|
+
* onto it (`ctx.common.issues.push(issue)`), so it holds the checked-dynamic
|
|
5062
|
+
* array rather than never's f64 element array. */
|
|
5063
|
+
function jsNeverArrayProp(p, fieldTs, checker) {
|
|
5064
|
+
return (jsObjectLiteralProperty(p) &&
|
|
5065
|
+
checker.isArrayType(fieldTs) &&
|
|
5066
|
+
(checker.getTypeArguments(fieldTs)[0].flags & ts.TypeFlags.Never) !== 0);
|
|
5067
|
+
}
|
|
5068
|
+
/** A JavaScript object literal's property (`{ lastComponent: undefined }`,
|
|
5069
|
+
* `{ user: null }`). Nothing checks a JavaScript file's later writes, which
|
|
5070
|
+
* can store any value in it (`path.lastComponent = { ... }`), so a
|
|
5071
|
+
* property whose only initializer is a unit holds the checked-dynamic value
|
|
5072
|
+
* rather than the unit-only union. */
|
|
5073
|
+
function isUnitOnlyIr(t, ctx) {
|
|
5074
|
+
if (t.kind !== "union")
|
|
5075
|
+
return false;
|
|
5076
|
+
const def = ctx.unions.get(t.unionId);
|
|
5077
|
+
return def !== undefined && def.arms.every((arm) => isUnitType(arm));
|
|
5078
|
+
}
|
|
5079
|
+
/** A property a JavaScript object literal declares. The checker also adds
|
|
5080
|
+
* each missing property, optional and `undefined`, to every literal of a
|
|
5081
|
+
* union of literals (`{ _tag, value } | { _tag, error }` gains
|
|
5082
|
+
* `error?: undefined` and `value?: undefined`); those keep their unit-only
|
|
5083
|
+
* type, so a literal still converts to the one arm whose properties it
|
|
5084
|
+
* has. */
|
|
5085
|
+
function jsObjectLiteralProperty(p) {
|
|
5086
|
+
const d = p.valueDeclaration;
|
|
5087
|
+
// `__proto__: null` sets the literal's prototype; it declares no property.
|
|
5088
|
+
return (d !== undefined &&
|
|
5089
|
+
(ts.isPropertyAssignment(d) || ts.isShorthandPropertyAssignment(d)) &&
|
|
5090
|
+
ts.symbolName(p) !== "__proto__" &&
|
|
5091
|
+
(p.flags & ts.SymbolFlags.Optional) === 0 &&
|
|
5092
|
+
isJsSourceFile(ts.getSourceFileOfNode(d)));
|
|
5093
|
+
}
|
|
4792
5094
|
function mapGenericAwaitedAlias(type, ctx) {
|
|
4793
5095
|
const { resolveTypeParam } = ctx;
|
|
4794
5096
|
if (!resolveTypeParam)
|
|
@@ -5050,7 +5352,8 @@ function evalMappedTemplate(type, keys, aliases, ctx) {
|
|
|
5050
5352
|
const checked = evalMappedTemplate(checkType, keys, scope, ctx);
|
|
5051
5353
|
if (!checked)
|
|
5052
5354
|
return null;
|
|
5053
|
-
const inferred =
|
|
5355
|
+
const inferred = primitiveExtendsCheck(checked, extendsType, ctx) ??
|
|
5356
|
+
matchInferReference(checked, extendsType, ctx);
|
|
5054
5357
|
if (inferred === undefined)
|
|
5055
5358
|
return null;
|
|
5056
5359
|
const branch = inferred ? type.getTrueType() : type.getFalseType();
|
|
@@ -5059,6 +5362,24 @@ function evalMappedTemplate(type, keys, aliases, ctx) {
|
|
|
5059
5362
|
}
|
|
5060
5363
|
return mentionsMappedParams(type, keys, aliases) ? null : type;
|
|
5061
5364
|
}
|
|
5365
|
+
/** `checked extends X` where X is a primitive or literal type, or a union of
|
|
5366
|
+
* them (`K extends "required" ? ...`), and `checked` is one such type:
|
|
5367
|
+
* X has no infer positions, so assignability decides the branch (an empty
|
|
5368
|
+
* binding map for the true branch). A union `checked` distributes and stays
|
|
5369
|
+
* undecided here (undefined), as do other shapes. */
|
|
5370
|
+
function primitiveExtendsCheck(checked, extendsType, ctx) {
|
|
5371
|
+
const primitive = ts.TypeFlags.StringLike |
|
|
5372
|
+
ts.TypeFlags.NumberLike |
|
|
5373
|
+
ts.TypeFlags.BooleanLike |
|
|
5374
|
+
ts.TypeFlags.BigIntLike |
|
|
5375
|
+
ts.TypeFlags.Null |
|
|
5376
|
+
ts.TypeFlags.Undefined;
|
|
5377
|
+
const isPrimitive = (t) => !t.isUnionType() && (t.flags & primitive) !== 0 && (t.flags & ts.TypeFlags.TypeParameter) === 0;
|
|
5378
|
+
const extendsParts = extendsType.isUnionType() ? ts.constituentTypes(extendsType) : [extendsType];
|
|
5379
|
+
if (!isPrimitive(checked) || !extendsParts.every(isPrimitive))
|
|
5380
|
+
return undefined;
|
|
5381
|
+
return ctx.checker.isTypeAssignableTo(checked, extendsType) ? new Map() : false;
|
|
5382
|
+
}
|
|
5062
5383
|
/** `checked extends G<..., infer T, ...>`: the infer bindings when
|
|
5063
5384
|
* `checked` is a reference to the same generic `G` (its arguments bind the
|
|
5064
5385
|
* infer positions; other positions must be the same types), false when it
|
|
@@ -5332,6 +5653,40 @@ export function unitOnlyUnion(unions) {
|
|
|
5332
5653
|
arms.sort((a, b) => (typeKey(a) < typeKey(b) ? -1 : 1));
|
|
5333
5654
|
return { kind: "union", unionId: unions.intern(arms) };
|
|
5334
5655
|
}
|
|
5656
|
+
/** `Iterable<T>`: a union whose arms are the sources that keep their own
|
|
5657
|
+
* representation — `T[]`, a `Set<T>`, a `Map<K, V>` (T the `[K, V]`
|
|
5658
|
+
* tuple), a string (T string) — and a generator over T, which also holds
|
|
5659
|
+
* every other iterator (Map/Set and array iterators adapt into one). The
|
|
5660
|
+
* generator arm marks the union as iterable (iterableArmsElem): no other
|
|
5661
|
+
* union has one. Null when T has no array or generator form. */
|
|
5662
|
+
export function iterableUnionType(elem, shapes, unions) {
|
|
5663
|
+
if (elem.kind === "void" || elem.kind === "generator" || !isSupportedArrayElem(elem))
|
|
5664
|
+
return null;
|
|
5665
|
+
if (!genResultRecord(elem, VOID, shapes, unions))
|
|
5666
|
+
return null;
|
|
5667
|
+
const arms = [
|
|
5668
|
+
{ kind: "array", elem },
|
|
5669
|
+
{ kind: "generator", yieldT: elem, retT: VOID, nextT: UNDEFINED_T },
|
|
5670
|
+
];
|
|
5671
|
+
const elemArms = elem.kind === "union" ? unions.get(elem.unionId)?.arms : undefined;
|
|
5672
|
+
if (isSupportedSetElem(elem, elemArms))
|
|
5673
|
+
arms.push({ kind: "set", elem });
|
|
5674
|
+
if (elem.kind === "string")
|
|
5675
|
+
arms.push(STRING);
|
|
5676
|
+
if (elem.kind === "record") {
|
|
5677
|
+
const shape = shapes.get(elem.shapeId);
|
|
5678
|
+
const [k, v] = shape?.fields ?? [];
|
|
5679
|
+
if (shape?.tuple &&
|
|
5680
|
+
shape.fields.length === 2 &&
|
|
5681
|
+
k?.name === "0" &&
|
|
5682
|
+
v?.name === "1" &&
|
|
5683
|
+
isSupportedMapKey(k.type, k.type.kind === "union" ? unions.get(k.type.unionId)?.arms : undefined) &&
|
|
5684
|
+
isSupportedMapValue(v.type))
|
|
5685
|
+
arms.push({ kind: "map", key: k.type, value: v.type });
|
|
5686
|
+
}
|
|
5687
|
+
arms.sort((a, b) => (typeKey(a) < typeKey(b) ? -1 : 1));
|
|
5688
|
+
return { kind: "union", unionId: unions.intern(arms) };
|
|
5689
|
+
}
|
|
5335
5690
|
/** The IteratorResult record of a generator's value channels: `{ done:
|
|
5336
5691
|
* boolean, value: V }` where V is dyn (an any/unknown channel) or the
|
|
5337
5692
|
* canonical union of the yield arms, the return arms (when the return
|
|
@@ -6067,7 +6422,10 @@ function mapRecordType(widened, ctx) {
|
|
|
6067
6422
|
// frame completes (finalizeRecursive below). Backends represent records
|
|
6068
6423
|
// as heap references, so the self-reference is an ordinary pointer.
|
|
6069
6424
|
if (shapes.inProgress.has(widened)) {
|
|
6070
|
-
return {
|
|
6425
|
+
return {
|
|
6426
|
+
kind: "record",
|
|
6427
|
+
shapeId: shapes.recursiveRef(widened, () => checkerTypeDescription(widened, ctx)),
|
|
6428
|
+
};
|
|
6071
6429
|
}
|
|
6072
6430
|
shapes.inProgress.add(widened);
|
|
6073
6431
|
const sensitivityAtEntry = contextResolutions;
|
|
@@ -6451,6 +6809,24 @@ function wideningAddedProperties(type, props, ctx) {
|
|
|
6451
6809
|
}
|
|
6452
6810
|
return added;
|
|
6453
6811
|
}
|
|
6812
|
+
/** Whether `type` is an interface one of whose `extends` clauses names a
|
|
6813
|
+
* type the checker answers `any` (or an error type) for. */
|
|
6814
|
+
function interfaceExtendsAny(type, checker) {
|
|
6815
|
+
const symbol = type.getSymbol();
|
|
6816
|
+
if (symbol === undefined || (symbol.flags & ts.SymbolFlags.Interface) === 0)
|
|
6817
|
+
return false;
|
|
6818
|
+
for (const decl of symbol.declarations) {
|
|
6819
|
+
if (!ts.isInterfaceDeclaration(decl))
|
|
6820
|
+
continue;
|
|
6821
|
+
for (const clause of decl.heritageClauses?.nodes ?? []) {
|
|
6822
|
+
for (const base of clause.types.nodes) {
|
|
6823
|
+
if ((checker.getTypeAtLocation(base).flags & ts.TypeFlags.Any) !== 0)
|
|
6824
|
+
return true;
|
|
6825
|
+
}
|
|
6826
|
+
}
|
|
6827
|
+
}
|
|
6828
|
+
return false;
|
|
6829
|
+
}
|
|
6454
6830
|
function mapRecordTypeInner(widened, ctx) {
|
|
6455
6831
|
const { checker, shapes } = ctx;
|
|
6456
6832
|
if (checker.getConstructSignatures(widened).length > 0)
|
|
@@ -6466,6 +6842,14 @@ function mapRecordTypeInner(widened, ctx) {
|
|
|
6466
6842
|
const widenedSym = widened.getSymbol();
|
|
6467
6843
|
if (widenedSym !== undefined && (widenedSym.flags & ts.SymbolFlags.Enum) !== 0)
|
|
6468
6844
|
return null;
|
|
6845
|
+
// An interface extending a type the checker answers `any` for (in the
|
|
6846
|
+
// compiled world, a package type computed from members only its .d.ts
|
|
6847
|
+
// declares, such as `interface P extends z.infer<typeof S>`) has members
|
|
6848
|
+
// the checker cannot list: its own declared fields are not the whole
|
|
6849
|
+
// object. The value is checked-dynamic, never a record of the declared
|
|
6850
|
+
// fields alone.
|
|
6851
|
+
if (interfaceExtendsAny(widened, checker))
|
|
6852
|
+
return DYN;
|
|
6469
6853
|
// An index signature maps to a hybrid shape: declared fields keep
|
|
6470
6854
|
// struct slots, undeclared keys ride the shape's overflow map, valued
|
|
6471
6855
|
// uniformly by the signature's value type (`unknown` → dyn — a model-pricing table's
|
|
@@ -6607,24 +6991,28 @@ function mapRecordTypeInner(widened, ctx) {
|
|
|
6607
6991
|
// has zero declared members — the signature is the shape.
|
|
6608
6992
|
if (computed && props.length === 0 && !indexValue)
|
|
6609
6993
|
return null;
|
|
6610
|
-
//
|
|
6611
|
-
// intrinsic
|
|
6612
|
-
//
|
|
6613
|
-
//
|
|
6614
|
-
//
|
|
6615
|
-
//
|
|
6616
|
-
//
|
|
6617
|
-
//
|
|
6618
|
-
//
|
|
6619
|
-
//
|
|
6620
|
-
//
|
|
6621
|
-
//
|
|
6622
|
-
//
|
|
6994
|
+
// An empty object type — `{}` (spelled, the checker's shared
|
|
6995
|
+
// intrinsic, or inferred from an empty object literal), `interface
|
|
6996
|
+
// Empty {}` — is tsc's TOP type over non-nullish values: every number,
|
|
6997
|
+
// string, record, array, function, or class instance is assignable
|
|
6998
|
+
// into the slot, so the exact-record stance cannot hold it. It lowers
|
|
6999
|
+
// like `unknown` (the dyn), the same rule as `object` and the lib's
|
|
7000
|
+
// `Object`: assignments convert at the site (sources outside the
|
|
7001
|
+
// checked-dynamic tree fence there, exactly as unknown does), reads
|
|
7002
|
+
// narrow back out through the same checked casts. A literal's inferred
|
|
7003
|
+
// `{}` is no exception: union subtype reduction folds primitives into
|
|
7004
|
+
// it (`["12", {}]` is `{}[]`, `flag ? "x" : {}` is `{}`), and `let o =
|
|
7005
|
+
// {}` admits `o = "x"`. As an arm beside another non-nullish arm (the
|
|
7006
|
+
// union was not reduced, `string | {} | DataView`) it holds only the
|
|
7007
|
+
// literal's objects and stays the empty record (emptyLiteralArm).
|
|
7008
|
+
// Computed empties (`Partial<T>` in a generic body) returned null
|
|
7009
|
+
// above. Empty shapes WITH an index signature (`Record<string, T>`) are
|
|
7010
|
+
// not empty: the signature is the shape.
|
|
6623
7011
|
if (props.length === 0 &&
|
|
6624
7012
|
indexValue === undefined &&
|
|
6625
7013
|
checker.getCallSignatures(widened).length === 0 &&
|
|
6626
7014
|
checker.getConstructSignatures(widened).length === 0 &&
|
|
6627
|
-
!(
|
|
7015
|
+
!(ctx.emptyLiteralArm && isEmptyObjectLiteralType(widened, ctx))) {
|
|
6628
7016
|
return DYN;
|
|
6629
7017
|
}
|
|
6630
7018
|
const fields = [];
|
|
@@ -6731,6 +7119,14 @@ function mapRecordTypeInner(widened, ctx) {
|
|
|
6731
7119
|
constAssertedEmptyArrayProp(p)) {
|
|
6732
7120
|
pt = arrayOf(unitOnlyUnion(ctx.unions));
|
|
6733
7121
|
}
|
|
7122
|
+
// A TypeScript property initialized with an empty literal and typed
|
|
7123
|
+
// `never[]` (`const out = { files: [] }`) holds no element, so it maps
|
|
7124
|
+
// like the empty tuple: the unit-only element array, which a
|
|
7125
|
+
// destination's typed array field (`files: string[]`) receives through
|
|
7126
|
+
// the checked empty-array lift. never's f64 element would make it a
|
|
7127
|
+
// `number[]` field.
|
|
7128
|
+
if (pt?.kind === "array" && emptyNeverArrayProp(p, fieldTs, checker))
|
|
7129
|
+
pt = arrayOf(unitOnlyUnion(ctx.unions));
|
|
6734
7130
|
if (pt === null && (fieldTs.flags & ts.TypeFlags.Any) !== 0)
|
|
6735
7131
|
pt = DYN;
|
|
6736
7132
|
// An `any[]` field (`list: any[]` in an SDK's message type, also
|
|
@@ -6750,6 +7146,10 @@ function mapRecordTypeInner(widened, ctx) {
|
|
|
6750
7146
|
// omits the undefined arm exactly like an omitted optional.
|
|
6751
7147
|
if (pt?.kind === "void" && isUnitOnlyTsType(fieldTs, ctx.resolveTypeParam))
|
|
6752
7148
|
pt = unitOnlyUnion(ctx.unions);
|
|
7149
|
+
if (pt !== null && isUnitOnlyIr(pt, ctx) && jsObjectLiteralProperty(p))
|
|
7150
|
+
pt = DYN;
|
|
7151
|
+
if (pt?.kind === "array" && jsNeverArrayProp(p, fieldTs, checker))
|
|
7152
|
+
pt = DYN;
|
|
6753
7153
|
// dyn FIELDS map now (`{ v: unknown }`, `[string, unknown]` tuples):
|
|
6754
7154
|
// the slot carries a dyn value exactly like an `unknown`-valued
|
|
6755
7155
|
// overflow entry — same RC adapters, same dynFrom conversion on the
|
|
@@ -7225,4 +7625,17 @@ function innerBlockedMember(t, ctx, seen) {
|
|
|
7225
7625
|
}
|
|
7226
7626
|
return here;
|
|
7227
7627
|
}
|
|
7628
|
+
/** The type tsc infers from an empty object literal (`{}` written as a
|
|
7629
|
+
* value): no members, index signatures or signatures, declared by an object
|
|
7630
|
+
* literal expression. */
|
|
7631
|
+
function isEmptyObjectLiteralType(type, ctx) {
|
|
7632
|
+
const { checker } = ctx;
|
|
7633
|
+
const symbol = type.getSymbol();
|
|
7634
|
+
return (symbol !== undefined &&
|
|
7635
|
+
symbol.declarations.some((d) => ts.isObjectLiteralExpression(d)) &&
|
|
7636
|
+
checker.getPropertiesOfType(type).length === 0 &&
|
|
7637
|
+
checker.getIndexInfosOfType(type).length === 0 &&
|
|
7638
|
+
checker.getCallSignatures(type).length === 0 &&
|
|
7639
|
+
checker.getConstructSignatures(type).length === 0);
|
|
7640
|
+
}
|
|
7228
7641
|
//# sourceMappingURL=type-mapper.js.map
|