@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
package/dist/frontend/program.js
CHANGED
|
@@ -44,8 +44,9 @@ import * as ts from "./ts7/adapter.js";
|
|
|
44
44
|
import { commonJsModuleSyntaxDiag, invalidPackageConfigDiag, strictNullChecksFloorDiag, tscPassthroughDiag, unsupportedDiag, } from "../diagnostics/diagnostic.js";
|
|
45
45
|
import { isNodeModulesPath, nearestInvalidPackageJsonPath, nearestPackageType, nearestPkgJsonPath, packageImportTarget, projectDtsRuntimeSibling, resolveBareModule, resolveProjectModule, resolveTypeDirective, setProjectPathMappings, setProjectRealm, } from "./resolve.js";
|
|
46
46
|
import { probeNodeImportRefusal, probeNodeRequireRefusal } from "./npm.js";
|
|
47
|
-
import { isNpmStaticPackage, npmStaticActive, npmStaticFsShadow, programBuiltinAliasSource, clearProgramBuiltinAliasCache, npmStaticLexerVisibleNames, npmStaticLiveExportTable, npmStaticPackageOfPath, reportNpmStaticOffender, setNpmStaticDeclarationOverloads, setNpmStaticPackages, } from "./npm-static.js";
|
|
47
|
+
import { isNpmStaticPackage, npmStaticActive, npmStaticFsShadow, programBuiltinAliasSource, clearProgramBuiltinAliasCache, npmStaticLexerVisibleNames, npmStaticLiveExportTable, npmStaticPackageOfPath, reportNpmStaticOffender, setNpmStaticDeclarationOverloads, setNpmStaticPackages, setNpmStaticTypeExports, } from "./npm-static.js";
|
|
48
48
|
import { isPrunedNpmReexport, planNpmStaticReexports } from "./npm-static-prune.js";
|
|
49
|
+
import { npmStaticTypeExportPlan } from "./npm-static-type-exports-host.js";
|
|
49
50
|
import { isNpmStaticSubclassArgument } from "./npm-static-subtyping.js";
|
|
50
51
|
import { npmStaticDeclarationReexports, npmStaticRuntimeClassTargets, parseNpmStaticDeclarationOverloads, parseNpmStaticDeclarationProperties, } from "./npm-static-declaration-syntax.js";
|
|
51
52
|
import { configurePackageShims, isPackageShimFile, isPackageShimName, isShimmedImport, } from "./package-shims.js";
|
|
@@ -60,7 +61,9 @@ import { forkTargetPaths } from "./fork-target.js";
|
|
|
60
61
|
import { workerTargetPaths } from "./worker-target.js";
|
|
61
62
|
import { erasedTypeOnlyImport, typeOnlyNamedImport, typeOnlyReachedFiles, } from "./type-only-imports.js";
|
|
62
63
|
import { moduleSourceCandidates } from "./module-source-candidates.js";
|
|
64
|
+
import { planDeclProjection } from "./decl-projection.js";
|
|
63
65
|
import { inferredJsDiagnosticSuppressed } from "./inferred-js-diagnostics.js";
|
|
66
|
+
import { containsJsx, firstJsx, jsxEmitName, jsxEmitPlan, jsxPragmas, lowerJsx, } from "./jsx-source.js";
|
|
64
67
|
const BASE_OPTIONS = {
|
|
65
68
|
strict: true,
|
|
66
69
|
};
|
|
@@ -560,9 +563,48 @@ function moduleSpecifierKind7(specifier) {
|
|
|
560
563
|
? "require"
|
|
561
564
|
: "import";
|
|
562
565
|
}
|
|
566
|
+
/** The program's files with JSX, lowered with the project's jsx settings
|
|
567
|
+
* and each file's pragmas, or the refusal of a setting that emits no calls.
|
|
568
|
+
* TypeScript files (.ts, .mts, .cts) cannot hold JSX; without a jsx setting
|
|
569
|
+
* the checker already rejects any JSX (TS17004). */
|
|
570
|
+
function lowerProgramJsx7(program, options) {
|
|
571
|
+
const sources = new Map();
|
|
572
|
+
const mode = jsxEmitName(options.jsx);
|
|
573
|
+
if (mode === undefined)
|
|
574
|
+
return { sources, refusal: null };
|
|
575
|
+
for (const sf of program.getImplementationSourceFiles()) {
|
|
576
|
+
if (sf.isDeclarationFile || /\.[mc]?ts$/.test(sf.fileName) || !containsJsx(sf))
|
|
577
|
+
continue;
|
|
578
|
+
const at = firstJsx(sf);
|
|
579
|
+
const loc = { file: sf.fileName, start: ts.tokenStartOfNode(at), end: at.end };
|
|
580
|
+
if (mode === "preserve" || mode === "react-native") {
|
|
581
|
+
return {
|
|
582
|
+
sources,
|
|
583
|
+
refusal: {
|
|
584
|
+
code: "SC1090",
|
|
585
|
+
message: `JSX with "jsx": "${mode}" is not supported: that setting keeps JSX in the output instead of lowering it to calls`,
|
|
586
|
+
loc,
|
|
587
|
+
hint: 'set "jsx" to "react", "react-jsx" or "react-jsxdev" in the project tsconfig',
|
|
588
|
+
},
|
|
589
|
+
};
|
|
590
|
+
}
|
|
591
|
+
const plan = jsxEmitPlan({
|
|
592
|
+
jsx: mode,
|
|
593
|
+
jsxFactory: options.jsxFactory,
|
|
594
|
+
jsxFragmentFactory: options.jsxFragmentFactory,
|
|
595
|
+
jsxImportSource: options.jsxImportSource,
|
|
596
|
+
reactNamespace: options.reactNamespace,
|
|
597
|
+
}, jsxPragmas(sf.text));
|
|
598
|
+
sources.set(sf.fileName, lowerJsx(sf, plan));
|
|
599
|
+
}
|
|
600
|
+
return { sources, refusal: null };
|
|
601
|
+
}
|
|
563
602
|
function loadProgram7(host, entryPath, externalTypes = new Map(),
|
|
564
603
|
/** The --npm-static lowering world: root opted-in packages' deep edges. */
|
|
565
|
-
rootNpmStaticEdges = false
|
|
604
|
+
rootNpmStaticEdges = false,
|
|
605
|
+
/** The declaration-typed boundary's projection (decl-projection.ts):
|
|
606
|
+
* answers rewritten user files for the lowering world, or null. */
|
|
607
|
+
projector) {
|
|
566
608
|
const config = adoptProjectConfig7(host, entryPath);
|
|
567
609
|
const configuredPaths = config.options["paths"];
|
|
568
610
|
setProjectPathMappings(configuredPaths !== undefined && typeof configuredPaths === "object" && configuredPaths !== null
|
|
@@ -636,6 +678,80 @@ rootNpmStaticEdges = false) {
|
|
|
636
678
|
};
|
|
637
679
|
program = host.createProgram([...programRoots, overridesDtsPath()], options);
|
|
638
680
|
}
|
|
681
|
+
// JSX: the program above checks the files as written; the program the
|
|
682
|
+
// lowering compiles holds them with their JSX lowered.
|
|
683
|
+
const jsx = lowerProgramJsx7(program, options);
|
|
684
|
+
let tscWorld;
|
|
685
|
+
const declBoundaryNotes = [];
|
|
686
|
+
if (jsx.refusal !== null) {
|
|
687
|
+
config.diags.push(jsx.refusal);
|
|
688
|
+
}
|
|
689
|
+
else if (jsx.sources.size > 0) {
|
|
690
|
+
const original = program;
|
|
691
|
+
// The project world must read the original text too, so it is built
|
|
692
|
+
// before the rewritten files are served, and only when it is needed.
|
|
693
|
+
const diagnostics = ts.getPreEmitDiagnostics(original);
|
|
694
|
+
const errors = diagnostics.some((d) => d.category === ts.DiagnosticCategory.Error);
|
|
695
|
+
tscWorld = {
|
|
696
|
+
program: original,
|
|
697
|
+
diagnostics,
|
|
698
|
+
projectWorld: errors ? host.createProgram(programRoots, options) : null,
|
|
699
|
+
};
|
|
700
|
+
for (const [file, lowered] of jsx.sources)
|
|
701
|
+
host.addVirtualFile(file, lowered.text);
|
|
702
|
+
program = host.createProgram([...programRoots, overridesDtsPath()], options);
|
|
703
|
+
}
|
|
704
|
+
else if (projector !== undefined) {
|
|
705
|
+
// The declaration-typed boundary: user files typed from package
|
|
706
|
+
// declarations (decl-projection.ts). The tsc gate reads the original
|
|
707
|
+
// text; the lowering compiles the rewritten files.
|
|
708
|
+
const projection = projector(program);
|
|
709
|
+
if (projection !== null) {
|
|
710
|
+
const original = program;
|
|
711
|
+
const baseline = new Map();
|
|
712
|
+
for (const file of projection.files.keys()) {
|
|
713
|
+
const sf = original.getSourceFile(file);
|
|
714
|
+
if (sf !== undefined)
|
|
715
|
+
baseline.set(file, original.getSemanticDiagnostics(sf).length);
|
|
716
|
+
}
|
|
717
|
+
for (const [file, text] of projection.files)
|
|
718
|
+
host.addVirtualFile(file, text);
|
|
719
|
+
host.addVirtualFile(projection.declFile, projection.declText);
|
|
720
|
+
programRoots.push(projection.declFile);
|
|
721
|
+
program = host.createProgram([...programRoots, overridesDtsPath()], options);
|
|
722
|
+
// A rewrite the lowering world disagrees with (new errors) is
|
|
723
|
+
// dropped for that file: the file lowers as it would without it.
|
|
724
|
+
const dropped = [];
|
|
725
|
+
for (const file of projection.files.keys()) {
|
|
726
|
+
const sf = program.getSourceFile(file);
|
|
727
|
+
if (sf === undefined)
|
|
728
|
+
continue;
|
|
729
|
+
if (program.getSemanticDiagnostics(sf).length > (baseline.get(file) ?? 0)) {
|
|
730
|
+
dropped.push(file);
|
|
731
|
+
host.addVirtualFile(file, original.getSourceFile(file).text);
|
|
732
|
+
}
|
|
733
|
+
}
|
|
734
|
+
if (dropped.length > 0) {
|
|
735
|
+
program.dispose();
|
|
736
|
+
program = host.createProgram([...programRoots, overridesDtsPath()], options);
|
|
737
|
+
for (const file of dropped)
|
|
738
|
+
declBoundaryNotes.push(declBoundaryDroppedDiag(file));
|
|
739
|
+
}
|
|
740
|
+
if (dropped.length === projection.files.size) {
|
|
741
|
+
program.dispose();
|
|
742
|
+
programRoots.pop();
|
|
743
|
+
program = original;
|
|
744
|
+
}
|
|
745
|
+
else {
|
|
746
|
+
tscWorld = {
|
|
747
|
+
program: original,
|
|
748
|
+
diagnostics: ts.getPreEmitDiagnostics(original),
|
|
749
|
+
projectWorld: null,
|
|
750
|
+
declWorldFallback: true,
|
|
751
|
+
};
|
|
752
|
+
}
|
|
753
|
+
}
|
|
754
|
+
}
|
|
639
755
|
const entry = program.getSourceFile(entryPath);
|
|
640
756
|
if (!entry)
|
|
641
757
|
throw new Error(`could not load ${entryPath}`);
|
|
@@ -646,6 +762,7 @@ rootNpmStaticEdges = false) {
|
|
|
646
762
|
entry,
|
|
647
763
|
moduleOrder: [],
|
|
648
764
|
configDiags: config.diags,
|
|
765
|
+
...(declBoundaryNotes.length > 0 ? { declBoundaryNotes } : {}),
|
|
649
766
|
typeWorld: {
|
|
650
767
|
nodeFallback: nodeTypes === null,
|
|
651
768
|
projectLib: config.projectLib ?? null,
|
|
@@ -654,10 +771,14 @@ rootNpmStaticEdges = false) {
|
|
|
654
771
|
},
|
|
655
772
|
externalTypes,
|
|
656
773
|
externalTypeSpecifiersByFile,
|
|
774
|
+
...(tscWorld === undefined ? {} : { jsxSources: jsx.sources }),
|
|
775
|
+
...(tscWorld === undefined ? {} : { tscWorld }),
|
|
657
776
|
projectWorld: () => (projectWorld ??= host.createProgram(programRoots, options)),
|
|
658
777
|
disposeAll: () => {
|
|
659
778
|
try {
|
|
660
779
|
projectWorld?.dispose();
|
|
780
|
+
tscWorld?.projectWorld?.dispose();
|
|
781
|
+
tscWorld?.program.dispose();
|
|
661
782
|
}
|
|
662
783
|
finally {
|
|
663
784
|
program.dispose();
|
|
@@ -779,6 +900,10 @@ export function loadProgram(entryPath, services, opts) {
|
|
|
779
900
|
}
|
|
780
901
|
setNpmStaticPackages(npmStaticPackages);
|
|
781
902
|
setNpmStaticDeclarationOverloads(declarationOverloads, declarationProperties);
|
|
903
|
+
// Types only the packages' .d.ts declares keep their declarations
|
|
904
|
+
// (npm-static-type-exports.ts).
|
|
905
|
+
const typeExports = npmStaticTypeExportPlan(services, entryPath, npmStaticPackages);
|
|
906
|
+
setNpmStaticTypeExports(typeExports.copies, typeExports.typedefs);
|
|
782
907
|
// Workspace-package registrations reset per load (same discipline as the
|
|
783
908
|
// npm-static set), then the opted-in names are probed UP FRONT: a
|
|
784
909
|
// workspace-linked opt-in resolves to files whose realpaths carry no
|
|
@@ -809,25 +934,58 @@ export function loadProgram(entryPath, services, opts) {
|
|
|
809
934
|
hideFile: (path) => (npmShadow?.hideFile(path) ?? false) || projectDtsRuntimeSibling(path) !== null,
|
|
810
935
|
};
|
|
811
936
|
const host = services.createProgramHost({ cwd: dirname(entryPath), fsShadow });
|
|
937
|
+
let authoredHost = null;
|
|
938
|
+
let authoredLoad = null;
|
|
939
|
+
const authored = () => {
|
|
940
|
+
if (!authoredLoad) {
|
|
941
|
+
authoredHost = services.createProgramHost({ cwd: dirname(entryPath) });
|
|
942
|
+
authoredLoad = loadProgram7(authoredHost, entryPath, externalTypes);
|
|
943
|
+
}
|
|
944
|
+
return authoredLoad;
|
|
945
|
+
};
|
|
946
|
+
const declPackages = npmStaticPackages.filter((pkg) => {
|
|
947
|
+
const resolved = resolveBareModule(entryPath, pkg, "types-only");
|
|
948
|
+
return resolved !== null && /\.d\.(?:ts|mts|cts)$/.test(resolved.typesFile);
|
|
949
|
+
});
|
|
950
|
+
const projector = declPackages.length === 0
|
|
951
|
+
? undefined
|
|
952
|
+
: (program) => {
|
|
953
|
+
const userFiles = declBoundaryUserFiles(program, declPackages);
|
|
954
|
+
if (userFiles.length === 0)
|
|
955
|
+
return null;
|
|
956
|
+
let projection;
|
|
957
|
+
try {
|
|
958
|
+
projection = planDeclProjection({
|
|
959
|
+
jsProgram: program,
|
|
960
|
+
declProgram: authored().program,
|
|
961
|
+
userFiles,
|
|
962
|
+
outDir: dirname(entryPath),
|
|
963
|
+
});
|
|
964
|
+
}
|
|
965
|
+
catch (error) {
|
|
966
|
+
if (process.env["SCRIPTC_DEBUG_DECL_BOUNDARY"] === "1")
|
|
967
|
+
throw error;
|
|
968
|
+
return null;
|
|
969
|
+
}
|
|
970
|
+
if (process.env["SCRIPTC_DEBUG_DECL_BOUNDARY"] === "1") {
|
|
971
|
+
process.stderr.write(`[decl-boundary] ${projection === null ? "no projection" : projection.plan.join("\n[decl-boundary] ")}\n`);
|
|
972
|
+
if (projection !== null)
|
|
973
|
+
process.stderr.write(projection.declText);
|
|
974
|
+
}
|
|
975
|
+
return projection;
|
|
976
|
+
};
|
|
812
977
|
try {
|
|
813
|
-
const load = loadProgram7(host, entryPath, externalTypes, npmStaticPackages.length > 0);
|
|
814
|
-
let authoredHost = null;
|
|
815
|
-
let authoredLoad = null;
|
|
978
|
+
const load = loadProgram7(host, entryPath, externalTypes, npmStaticPackages.length > 0, projector);
|
|
816
979
|
return {
|
|
817
980
|
...load,
|
|
818
981
|
services,
|
|
819
982
|
projectWorld: npmStaticPackages.length === 0
|
|
820
983
|
? load.projectWorld
|
|
821
|
-
: () =>
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
authoredHost = services.createProgramHost({ cwd: dirname(entryPath) });
|
|
827
|
-
authoredLoad = loadProgram7(authoredHost, entryPath, externalTypes);
|
|
828
|
-
}
|
|
829
|
-
return authoredLoad.projectWorld();
|
|
830
|
-
},
|
|
984
|
+
: () =>
|
|
985
|
+
// Check authored code against the package's published declarations.
|
|
986
|
+
// Runtime bodies still lower from JavaScript in the original world;
|
|
987
|
+
// inference there must not manufacture errors in valid user code.
|
|
988
|
+
authored().projectWorld(),
|
|
831
989
|
dispose: () => {
|
|
832
990
|
try {
|
|
833
991
|
authoredLoad?.disposeAll();
|
|
@@ -845,10 +1003,39 @@ export function loadProgram(entryPath, services, opts) {
|
|
|
845
1003
|
};
|
|
846
1004
|
}
|
|
847
1005
|
catch (error) {
|
|
1006
|
+
authoredLoad?.disposeAll();
|
|
1007
|
+
authoredHost?.close();
|
|
848
1008
|
host.close();
|
|
849
1009
|
throw error;
|
|
850
1010
|
}
|
|
851
1011
|
}
|
|
1012
|
+
/** User TypeScript files (outside node_modules) that import one of the
|
|
1013
|
+
* packages whose declarations the boundary projects from. */
|
|
1014
|
+
function declBoundaryUserFiles(program, packages) {
|
|
1015
|
+
const out = [];
|
|
1016
|
+
for (const sf of program.getSourceFiles()) {
|
|
1017
|
+
const name = sf.fileName.split("\\").join("/");
|
|
1018
|
+
if (sf.isDeclarationFile || name.includes("/node_modules/") || !/\.[mc]?tsx?$/.test(name))
|
|
1019
|
+
continue;
|
|
1020
|
+
if (name.endsWith(".tsx"))
|
|
1021
|
+
continue; // JSX files: not projected yet
|
|
1022
|
+
const text = sf.text;
|
|
1023
|
+
if (packages.some((pkg) => text.includes(`"${pkg}"`) ||
|
|
1024
|
+
text.includes(`'${pkg}'`) ||
|
|
1025
|
+
text.includes(`"${pkg}/`) ||
|
|
1026
|
+
text.includes(`'${pkg}/`)))
|
|
1027
|
+
out.push(sf.fileName);
|
|
1028
|
+
}
|
|
1029
|
+
return out;
|
|
1030
|
+
}
|
|
1031
|
+
/** SC6102 — a projected file the lowering world disagreed with. */
|
|
1032
|
+
function declBoundaryDroppedDiag(file) {
|
|
1033
|
+
return {
|
|
1034
|
+
code: "SC6102",
|
|
1035
|
+
message: "values from npm packages stay checked-dynamic in this file: the types projected from the packages' declarations do not type-check against their JavaScript",
|
|
1036
|
+
loc: { file, start: 0, end: 0 },
|
|
1037
|
+
};
|
|
1038
|
+
}
|
|
852
1039
|
/** tsc diagnostics (syntax + types), the supported-import fence, and the
|
|
853
1040
|
* module evaluation order: fills load.moduleOrder (the SourceFiles
|
|
854
1041
|
* themselves — the lowering consumes them directly) and returns the
|
|
@@ -955,8 +1142,17 @@ function requiresOf7(stmt) {
|
|
|
955
1142
|
}
|
|
956
1143
|
return out;
|
|
957
1144
|
}
|
|
1145
|
+
/** `true`, or `!0`, its minified spelling. */
|
|
1146
|
+
function isTrueLiteral(expr) {
|
|
1147
|
+
return (expr.kind === ts.SyntaxKind.TrueKeyword ||
|
|
1148
|
+
(ts.isPrefixUnaryExpression(expr) &&
|
|
1149
|
+
expr.operator === ts.SyntaxKind.ExclamationToken &&
|
|
1150
|
+
ts.isNumericLiteral(expr.operand) &&
|
|
1151
|
+
expr.operand.text === "0"));
|
|
1152
|
+
}
|
|
958
1153
|
/** The exact `Object.defineProperty(exports|module.exports, "__esModule",
|
|
959
|
-
* { value: true })` interop stamp (shared by preflight and the no-op lowering)
|
|
1154
|
+
* { value: true })` interop stamp (shared by preflight and the no-op lowering);
|
|
1155
|
+
* `{ value: !0 }` is the same stamp. */
|
|
960
1156
|
export function isEsModuleStamp(expr) {
|
|
961
1157
|
if (!ts.isCallExpression(expr) || expr.questionDotToken !== undefined)
|
|
962
1158
|
return false;
|
|
@@ -987,7 +1183,7 @@ export function isEsModuleStamp(expr) {
|
|
|
987
1183
|
return (ts.isPropertyAssignment(p) &&
|
|
988
1184
|
ts.isIdentifier(p.name) &&
|
|
989
1185
|
p.name.text === "value" &&
|
|
990
|
-
p.initializer
|
|
1186
|
+
isTrueLiteral(p.initializer));
|
|
991
1187
|
}
|
|
992
1188
|
/** Plain CommonJS prologue writes only publish values; in particular,
|
|
993
1189
|
* publishing a hoisted function does not invoke its body. Later runnable
|
|
@@ -3294,6 +3490,7 @@ function computeCycleEarlyBindings7(program, entry, order, singleRoot, exact) {
|
|
|
3294
3490
|
start: ts.tokenStartOfNode(stmt),
|
|
3295
3491
|
end: stmt.end,
|
|
3296
3492
|
reference: null,
|
|
3493
|
+
deferredReference: null,
|
|
3297
3494
|
folded: null,
|
|
3298
3495
|
localNames: new Map(),
|
|
3299
3496
|
});
|
|
@@ -3370,10 +3567,13 @@ function computeCycleEarlyBindings7(program, entry, order, singleRoot, exact) {
|
|
|
3370
3567
|
ts.tokenStartOfNode(ref) >= c.start &&
|
|
3371
3568
|
ref.end <= c.end)
|
|
3372
3569
|
continue;
|
|
3570
|
+
if (inDeferredPosition7(ref)) {
|
|
3571
|
+
if (c.exposed && c.deferredReference === null)
|
|
3572
|
+
c.deferredReference = ref;
|
|
3573
|
+
continue;
|
|
3574
|
+
}
|
|
3373
3575
|
let early;
|
|
3374
|
-
if (
|
|
3375
|
-
early = c.exposed;
|
|
3376
|
-
else if (sf === c.module)
|
|
3576
|
+
if (sf === c.module)
|
|
3377
3577
|
early = ts.tokenStartOfNode(ref) < c.start;
|
|
3378
3578
|
else if (!memberSet.has(sf) || !rankOf.has(sf))
|
|
3379
3579
|
early = false;
|
|
@@ -3383,7 +3583,15 @@ function computeCycleEarlyBindings7(program, entry, order, singleRoot, exact) {
|
|
|
3383
3583
|
c.reference = ref;
|
|
3384
3584
|
}
|
|
3385
3585
|
}
|
|
3586
|
+
// With a static evaluation order, a deferred reference only runs early
|
|
3587
|
+
// when the code that runs before the declaration completes can reach
|
|
3588
|
+
// the function holding it.
|
|
3589
|
+
const reached = known && [...candidates.values()].some((c) => c.reference === null && c.deferredReference)
|
|
3590
|
+
? cycleReachedDeferredReferences7(program, evaluation, candidates)
|
|
3591
|
+
: null;
|
|
3386
3592
|
for (const c of candidates.values()) {
|
|
3593
|
+
if (c.reference === null && c.deferredReference !== null)
|
|
3594
|
+
c.reference = reached === null ? c.deferredReference : (reached.get(c.symbol) ?? null);
|
|
3387
3595
|
if (c.reference === null)
|
|
3388
3596
|
continue;
|
|
3389
3597
|
const settled = new Set(order.filter((sf) => !rankOf.has(sf)));
|
|
@@ -3404,6 +3612,292 @@ function computeCycleEarlyBindings7(program, entry, order, singleRoot, exact) {
|
|
|
3404
3612
|
}
|
|
3405
3613
|
return out;
|
|
3406
3614
|
}
|
|
3615
|
+
/** Collects into `units` the callables an initializer expression stores
|
|
3616
|
+
* (see moduleEarlyBindingsOf7), recording in `immediate` the parts of a
|
|
3617
|
+
* stored node that run where it is evaluated. */
|
|
3618
|
+
function storedCallables7(checker, e, units, immediate) {
|
|
3619
|
+
while (ts.isParenthesizedExpression(e) ||
|
|
3620
|
+
ts.isAsExpression(e) ||
|
|
3621
|
+
ts.isSatisfiesExpression(e) ||
|
|
3622
|
+
ts.isNonNullExpression(e))
|
|
3623
|
+
e = e.expression;
|
|
3624
|
+
if (ts.isArrowFunction(e) || ts.isFunctionExpression(e)) {
|
|
3625
|
+
units.push(e);
|
|
3626
|
+
}
|
|
3627
|
+
else if (ts.isClassExpression(e)) {
|
|
3628
|
+
units.push(e);
|
|
3629
|
+
immediate.set(e, classSyncParts7(e));
|
|
3630
|
+
}
|
|
3631
|
+
else if (ts.isObjectLiteralExpression(e)) {
|
|
3632
|
+
for (const p of e.properties.nodes) {
|
|
3633
|
+
if (ts.isMethodDeclaration(p) ||
|
|
3634
|
+
ts.isGetAccessorDeclaration(p) ||
|
|
3635
|
+
ts.isSetAccessorDeclaration(p)) {
|
|
3636
|
+
// A computed key evaluates where the literal does; a plain
|
|
3637
|
+
// member-chain key (`[Equal.symbol]`) runs no user code.
|
|
3638
|
+
if (!ts.isComputedPropertyName(p.name))
|
|
3639
|
+
units.push(p);
|
|
3640
|
+
else if (memberChainKey7(p.name.expression)) {
|
|
3641
|
+
units.push(p);
|
|
3642
|
+
immediate.set(p, [p.name]);
|
|
3643
|
+
}
|
|
3644
|
+
}
|
|
3645
|
+
else if (ts.isPropertyAssignment(p))
|
|
3646
|
+
storedCallables7(checker, p.initializer, units, immediate);
|
|
3647
|
+
}
|
|
3648
|
+
}
|
|
3649
|
+
else if (ts.isArrayLiteralExpression(e)) {
|
|
3650
|
+
for (const el of e.elements.nodes)
|
|
3651
|
+
if (!ts.isSpreadElement(el))
|
|
3652
|
+
storedCallables7(checker, el, units, immediate);
|
|
3653
|
+
}
|
|
3654
|
+
else if (ts.isCallExpression(e)) {
|
|
3655
|
+
// `const f = wrap(callback)` where wrap only returns closures over
|
|
3656
|
+
// the callback: it runs when the stored result is called.
|
|
3657
|
+
e.arguments.nodes.forEach((arg, index) => {
|
|
3658
|
+
let fn = arg;
|
|
3659
|
+
while (ts.isParenthesizedExpression(fn))
|
|
3660
|
+
fn = fn.expression;
|
|
3661
|
+
if ((ts.isArrowFunction(fn) || ts.isFunctionExpression(fn)) &&
|
|
3662
|
+
returnsOnlyClosuresOver7(checker, e.expression, index))
|
|
3663
|
+
units.push(fn);
|
|
3664
|
+
});
|
|
3665
|
+
}
|
|
3666
|
+
}
|
|
3667
|
+
/** For one import cycle with a static evaluation order: the first deferred
|
|
3668
|
+
* reference to each candidate that code running before the candidate's
|
|
3669
|
+
* declaration completes can reach, or null when the walk cannot be precise
|
|
3670
|
+
* (top-level await, a default-exported function or class declaration).
|
|
3671
|
+
*
|
|
3672
|
+
* The cycle's top-level code runs in evaluation order. A stored callable
|
|
3673
|
+
* (a function or class declaration, or a function, class or object-literal
|
|
3674
|
+
* method stored by a variable initializer) becomes reachable once
|
|
3675
|
+
* reachable code names its binding, through an import alias or a
|
|
3676
|
+
* namespace member too; every other function-like in reachable code counts
|
|
3677
|
+
* as reachable, since it may be handed to a callee. A namespace import of
|
|
3678
|
+
* a cycle member used other than for a member read makes every stored
|
|
3679
|
+
* callable reachable. moduleEarlyBindingsOf7 is the single-module form. */
|
|
3680
|
+
function cycleReachedDeferredReferences7(program, evaluation, candidates) {
|
|
3681
|
+
const checker = program.getTypeChecker();
|
|
3682
|
+
const members = new Set(evaluation);
|
|
3683
|
+
for (const sf of evaluation) {
|
|
3684
|
+
if (hasTopLevelAwait7(sf))
|
|
3685
|
+
return null;
|
|
3686
|
+
for (const stmt of sf.statements.nodes) {
|
|
3687
|
+
if ((ts.isFunctionDeclaration(stmt) || ts.isClassDeclaration(stmt)) &&
|
|
3688
|
+
(ts.getCombinedModifierFlags(stmt) &
|
|
3689
|
+
ts.ModifierFlags.Default) !==
|
|
3690
|
+
0)
|
|
3691
|
+
return null;
|
|
3692
|
+
}
|
|
3693
|
+
}
|
|
3694
|
+
const stored = new Set();
|
|
3695
|
+
const immediate = new Map();
|
|
3696
|
+
const storedNames = [];
|
|
3697
|
+
const unitsOfName = new Map();
|
|
3698
|
+
const store = (name, units) => {
|
|
3699
|
+
if (units.length === 0)
|
|
3700
|
+
return;
|
|
3701
|
+
for (const u of units)
|
|
3702
|
+
stored.add(u);
|
|
3703
|
+
storedNames.push(name);
|
|
3704
|
+
unitsOfName.set(name, units);
|
|
3705
|
+
};
|
|
3706
|
+
for (const sf of evaluation) {
|
|
3707
|
+
for (const stmt of sf.statements.nodes) {
|
|
3708
|
+
if ((ts.getCombinedModifierFlags(stmt) &
|
|
3709
|
+
ts.ModifierFlags.Ambient) !==
|
|
3710
|
+
0)
|
|
3711
|
+
continue;
|
|
3712
|
+
if (ts.isFunctionDeclaration(stmt) && stmt.name !== undefined && stmt.body !== undefined) {
|
|
3713
|
+
store(stmt.name, [stmt]);
|
|
3714
|
+
}
|
|
3715
|
+
else if (ts.isClassDeclaration(stmt) && stmt.name !== undefined) {
|
|
3716
|
+
store(stmt.name, [stmt]);
|
|
3717
|
+
}
|
|
3718
|
+
else if (ts.isVariableStatement(stmt)) {
|
|
3719
|
+
for (const d of stmt.declarationList.declarations.nodes) {
|
|
3720
|
+
if (ts.isIdentifier(d.name) && d.initializer !== undefined) {
|
|
3721
|
+
const units = [];
|
|
3722
|
+
storedCallables7(checker, d.initializer, units, immediate);
|
|
3723
|
+
store(d.name, units);
|
|
3724
|
+
}
|
|
3725
|
+
}
|
|
3726
|
+
}
|
|
3727
|
+
}
|
|
3728
|
+
}
|
|
3729
|
+
const unitsBySymbol = new Map();
|
|
3730
|
+
const allUnits = [];
|
|
3731
|
+
for (const name of storedNames) {
|
|
3732
|
+
const symbol = checker.getSymbolAtLocation(name);
|
|
3733
|
+
if (symbol === undefined)
|
|
3734
|
+
continue;
|
|
3735
|
+
const units = unitsOfName.get(name);
|
|
3736
|
+
unitsBySymbol.set(symbol, [...(unitsBySymbol.get(symbol) ?? []), ...units]);
|
|
3737
|
+
allUnits.push(...units);
|
|
3738
|
+
}
|
|
3739
|
+
// A named class expression's inner name (`class Impl { static x =
|
|
3740
|
+
// Impl.m(); }`) names the class inside its own body, as the binding it
|
|
3741
|
+
// is stored in names it outside.
|
|
3742
|
+
const innerNames = [];
|
|
3743
|
+
for (const unit of allUnits) {
|
|
3744
|
+
if (!ts.isClassExpression(unit) || unit.name === undefined)
|
|
3745
|
+
continue;
|
|
3746
|
+
const symbol = checker.getSymbolAtLocation(unit.name);
|
|
3747
|
+
if (symbol === undefined)
|
|
3748
|
+
continue;
|
|
3749
|
+
innerNames.push(unit.name);
|
|
3750
|
+
unitsBySymbol.set(symbol, [...(unitsBySymbol.get(symbol) ?? []), unit]);
|
|
3751
|
+
}
|
|
3752
|
+
// The identifier texts worth resolving: declared names, and the local
|
|
3753
|
+
// names of imports (named, default and namespace) in cycle members.
|
|
3754
|
+
const names = new Set();
|
|
3755
|
+
for (const c of candidates.values())
|
|
3756
|
+
names.add(c.name.text);
|
|
3757
|
+
for (const name of storedNames)
|
|
3758
|
+
names.add(name.text);
|
|
3759
|
+
for (const name of innerNames)
|
|
3760
|
+
names.add(name.text);
|
|
3761
|
+
for (const sf of evaluation) {
|
|
3762
|
+
for (const stmt of sf.statements.nodes) {
|
|
3763
|
+
if (!ts.isImportDeclaration(stmt) || stmt.importClause === undefined)
|
|
3764
|
+
continue;
|
|
3765
|
+
const clause = stmt.importClause;
|
|
3766
|
+
if (clause.name !== undefined)
|
|
3767
|
+
names.add(clause.name.text);
|
|
3768
|
+
const bindings = clause.namedBindings;
|
|
3769
|
+
if (bindings === undefined)
|
|
3770
|
+
continue;
|
|
3771
|
+
if (ts.isNamedImports(bindings))
|
|
3772
|
+
for (const element of bindings.elements.nodes)
|
|
3773
|
+
names.add(element.name.text);
|
|
3774
|
+
else
|
|
3775
|
+
names.add(bindings.name.text);
|
|
3776
|
+
}
|
|
3777
|
+
}
|
|
3778
|
+
const idents = [];
|
|
3779
|
+
for (const sf of evaluation) {
|
|
3780
|
+
ts.walkPreorder(sf, (node) => {
|
|
3781
|
+
if (ts.isImportDeclaration(node))
|
|
3782
|
+
return "skip";
|
|
3783
|
+
if (ts.isIdentifier(node) && names.has(node.text))
|
|
3784
|
+
idents.push(node);
|
|
3785
|
+
return undefined;
|
|
3786
|
+
});
|
|
3787
|
+
}
|
|
3788
|
+
checker.prefetchSymbolNodesExact(idents);
|
|
3789
|
+
const symbolOf = (id) => {
|
|
3790
|
+
const parent = id.parent;
|
|
3791
|
+
let symbol = checker.getSymbolAtLocation(id);
|
|
3792
|
+
if (parent !== undefined && ts.isShorthandPropertyAssignment(parent) && parent.name === id) {
|
|
3793
|
+
symbol = checker.getShorthandAssignmentValueSymbol(parent) ?? symbol;
|
|
3794
|
+
}
|
|
3795
|
+
if (symbol !== undefined && symbol.flags & ts.SymbolFlags.Alias) {
|
|
3796
|
+
symbol = checker.getAliasedSymbol(symbol);
|
|
3797
|
+
}
|
|
3798
|
+
return symbol;
|
|
3799
|
+
};
|
|
3800
|
+
const isMemberNamespace = (symbol) => (symbol.flags & ts.SymbolFlags.ValueModule) !== 0 &&
|
|
3801
|
+
symbol.declarations.some((d) => ts.isSourceFile(d) && members.has(d));
|
|
3802
|
+
const declared = new Set();
|
|
3803
|
+
const reachedUnits = new Set();
|
|
3804
|
+
const out = new Map();
|
|
3805
|
+
const work = [];
|
|
3806
|
+
const reach = (unit) => {
|
|
3807
|
+
if (reachedUnits.has(unit))
|
|
3808
|
+
return;
|
|
3809
|
+
reachedUnits.add(unit);
|
|
3810
|
+
work.push(unit);
|
|
3811
|
+
};
|
|
3812
|
+
const visit = (root) => {
|
|
3813
|
+
ts.walkPreorder(root, (node) => {
|
|
3814
|
+
if (node !== root && stored.has(node)) {
|
|
3815
|
+
for (const part of immediate.get(node) ?? [])
|
|
3816
|
+
visit(part);
|
|
3817
|
+
return "skip";
|
|
3818
|
+
}
|
|
3819
|
+
if (ts.isImportDeclaration(node))
|
|
3820
|
+
return "skip";
|
|
3821
|
+
if (node.kind === ts.SyntaxKind.ThisKeyword) {
|
|
3822
|
+
// `this` in a static initializer or block names the class, so it
|
|
3823
|
+
// reaches the class's methods as naming the class does.
|
|
3824
|
+
const owner = staticThisClass7(node);
|
|
3825
|
+
if (owner !== undefined && stored.has(owner))
|
|
3826
|
+
reach(owner);
|
|
3827
|
+
return undefined;
|
|
3828
|
+
}
|
|
3829
|
+
if (!ts.isIdentifier(node) || !names.has(node.text))
|
|
3830
|
+
return undefined;
|
|
3831
|
+
if (inTypePosition7(node))
|
|
3832
|
+
return undefined;
|
|
3833
|
+
const parent = node.parent;
|
|
3834
|
+
if (parent !== undefined && ts.isExportSpecifier(parent))
|
|
3835
|
+
return undefined;
|
|
3836
|
+
if (parent !== undefined && declaredName7(parent) === node)
|
|
3837
|
+
return undefined;
|
|
3838
|
+
const symbol = symbolOf(node);
|
|
3839
|
+
if (symbol === undefined)
|
|
3840
|
+
return undefined;
|
|
3841
|
+
if (isMemberNamespace(symbol)) {
|
|
3842
|
+
// `ns.member` resolves through the member's own identifier; any
|
|
3843
|
+
// other use can reach every export.
|
|
3844
|
+
if (!(parent !== undefined &&
|
|
3845
|
+
ts.isPropertyAccessExpression(parent) &&
|
|
3846
|
+
parent.expression === node))
|
|
3847
|
+
for (const unit of allUnits)
|
|
3848
|
+
reach(unit);
|
|
3849
|
+
return undefined;
|
|
3850
|
+
}
|
|
3851
|
+
const c = candidates.get(symbol);
|
|
3852
|
+
if (c !== undefined &&
|
|
3853
|
+
node !== c.name &&
|
|
3854
|
+
!declared.has(symbol) &&
|
|
3855
|
+
!out.has(symbol) &&
|
|
3856
|
+
inDeferredPosition7(node) &&
|
|
3857
|
+
!(c.kind === "class" &&
|
|
3858
|
+
ts.getSourceFileOfNode(node) === c.module &&
|
|
3859
|
+
ts.tokenStartOfNode(node) >= c.start &&
|
|
3860
|
+
node.end <= c.end))
|
|
3861
|
+
out.set(symbol, node);
|
|
3862
|
+
for (const unit of unitsBySymbol.get(symbol) ?? [])
|
|
3863
|
+
reach(unit);
|
|
3864
|
+
return undefined;
|
|
3865
|
+
});
|
|
3866
|
+
};
|
|
3867
|
+
const drain = () => {
|
|
3868
|
+
while (work.length > 0)
|
|
3869
|
+
visit(work.pop());
|
|
3870
|
+
};
|
|
3871
|
+
const declare = (name) => {
|
|
3872
|
+
for (const id of boundNames7(name)) {
|
|
3873
|
+
const symbol = checker.getSymbolAtLocation(id);
|
|
3874
|
+
if (symbol !== undefined)
|
|
3875
|
+
declared.add(symbol);
|
|
3876
|
+
}
|
|
3877
|
+
};
|
|
3878
|
+
for (const sf of evaluation) {
|
|
3879
|
+
for (const stmt of sf.statements.nodes) {
|
|
3880
|
+
if (ts.isClassDeclaration(stmt)) {
|
|
3881
|
+
for (const part of classSyncParts7(stmt))
|
|
3882
|
+
visit(part);
|
|
3883
|
+
drain();
|
|
3884
|
+
if (stmt.name !== undefined)
|
|
3885
|
+
declare(stmt.name);
|
|
3886
|
+
}
|
|
3887
|
+
else if (ts.isVariableStatement(stmt)) {
|
|
3888
|
+
for (const d of stmt.declarationList.declarations.nodes) {
|
|
3889
|
+
visit(d);
|
|
3890
|
+
drain();
|
|
3891
|
+
declare(d.name);
|
|
3892
|
+
}
|
|
3893
|
+
}
|
|
3894
|
+
else if (!ts.isFunctionDeclaration(stmt))
|
|
3895
|
+
visit(stmt);
|
|
3896
|
+
drain();
|
|
3897
|
+
}
|
|
3898
|
+
}
|
|
3899
|
+
return out;
|
|
3900
|
+
}
|
|
3407
3901
|
/** Top-level let/const and class bindings, in modules outside the
|
|
3408
3902
|
* exactly-initialized cycles, that code running before their declaration
|
|
3409
3903
|
* completes can read.
|
|
@@ -3455,55 +3949,7 @@ function moduleEarlyBindingsOf7(program, sf, order) {
|
|
|
3455
3949
|
storedBy.set(name.text, list);
|
|
3456
3950
|
};
|
|
3457
3951
|
const checker = program.getTypeChecker();
|
|
3458
|
-
const storedIn = (e, units) =>
|
|
3459
|
-
while (ts.isParenthesizedExpression(e) ||
|
|
3460
|
-
ts.isAsExpression(e) ||
|
|
3461
|
-
ts.isSatisfiesExpression(e) ||
|
|
3462
|
-
ts.isNonNullExpression(e))
|
|
3463
|
-
e = e.expression;
|
|
3464
|
-
if (ts.isArrowFunction(e) || ts.isFunctionExpression(e)) {
|
|
3465
|
-
units.push(e);
|
|
3466
|
-
}
|
|
3467
|
-
else if (ts.isClassExpression(e)) {
|
|
3468
|
-
units.push(e);
|
|
3469
|
-
immediate.set(e, classSyncParts7(e));
|
|
3470
|
-
}
|
|
3471
|
-
else if (ts.isObjectLiteralExpression(e)) {
|
|
3472
|
-
for (const p of e.properties.nodes) {
|
|
3473
|
-
if (ts.isMethodDeclaration(p) ||
|
|
3474
|
-
ts.isGetAccessorDeclaration(p) ||
|
|
3475
|
-
ts.isSetAccessorDeclaration(p)) {
|
|
3476
|
-
// A computed key evaluates where the literal does; a plain
|
|
3477
|
-
// member-chain key (`[Equal.symbol]`) runs no user code.
|
|
3478
|
-
if (!ts.isComputedPropertyName(p.name))
|
|
3479
|
-
units.push(p);
|
|
3480
|
-
else if (memberChainKey7(p.name.expression)) {
|
|
3481
|
-
units.push(p);
|
|
3482
|
-
immediate.set(p, [p.name]);
|
|
3483
|
-
}
|
|
3484
|
-
}
|
|
3485
|
-
else if (ts.isPropertyAssignment(p))
|
|
3486
|
-
storedIn(p.initializer, units);
|
|
3487
|
-
}
|
|
3488
|
-
}
|
|
3489
|
-
else if (ts.isArrayLiteralExpression(e)) {
|
|
3490
|
-
for (const el of e.elements.nodes)
|
|
3491
|
-
if (!ts.isSpreadElement(el))
|
|
3492
|
-
storedIn(el, units);
|
|
3493
|
-
}
|
|
3494
|
-
else if (ts.isCallExpression(e)) {
|
|
3495
|
-
// `const f = wrap(callback)` where wrap only returns closures over
|
|
3496
|
-
// the callback: it runs when the stored result is called.
|
|
3497
|
-
e.arguments.nodes.forEach((arg, index) => {
|
|
3498
|
-
let fn = arg;
|
|
3499
|
-
while (ts.isParenthesizedExpression(fn))
|
|
3500
|
-
fn = fn.expression;
|
|
3501
|
-
if ((ts.isArrowFunction(fn) || ts.isFunctionExpression(fn)) &&
|
|
3502
|
-
returnsOnlyClosuresOver7(checker, e.expression, index))
|
|
3503
|
-
units.push(fn);
|
|
3504
|
-
});
|
|
3505
|
-
}
|
|
3506
|
-
};
|
|
3952
|
+
const storedIn = (e, units) => storedCallables7(checker, e, units, immediate);
|
|
3507
3953
|
sf.statements.nodes.forEach((stmt, index) => {
|
|
3508
3954
|
if (ambient(stmt))
|
|
3509
3955
|
return;
|
|
@@ -3785,6 +4231,41 @@ function returnsOnlyClosuresOver7(checker, callee, index) {
|
|
|
3785
4231
|
* expressions, decorators, computed member keys, static field
|
|
3786
4232
|
* initializers and static blocks. Methods and instance fields wait for a
|
|
3787
4233
|
* call or a construction. */
|
|
4234
|
+
/** The class whose static field initializer or static block evaluates `this`
|
|
4235
|
+
* (through arrow functions, which keep the enclosing `this`), or undefined
|
|
4236
|
+
* when another function or a class's instance side binds it. */
|
|
4237
|
+
function staticThisClass7(node) {
|
|
4238
|
+
let child = node;
|
|
4239
|
+
for (let n = node.parent; n !== undefined; child = n, n = n.parent) {
|
|
4240
|
+
if (ts.isArrowFunction(n))
|
|
4241
|
+
continue;
|
|
4242
|
+
if (ts.isClassStaticBlockDeclaration(n))
|
|
4243
|
+
return n.parent;
|
|
4244
|
+
if (ts.isPropertyDeclaration(n)) {
|
|
4245
|
+
if (n.initializer !== child)
|
|
4246
|
+
return undefined;
|
|
4247
|
+
return (ts.getCombinedModifierFlags(n) & ts.ModifierFlags.Static) !== 0
|
|
4248
|
+
? n.parent
|
|
4249
|
+
: undefined;
|
|
4250
|
+
}
|
|
4251
|
+
if (ts.isComputedPropertyName(n)) {
|
|
4252
|
+
// A computed key evaluates in the scope around the class.
|
|
4253
|
+
const member = n.parent;
|
|
4254
|
+
const cls = member?.parent;
|
|
4255
|
+
if (cls === undefined)
|
|
4256
|
+
return undefined;
|
|
4257
|
+
child = cls;
|
|
4258
|
+
n = cls;
|
|
4259
|
+
continue;
|
|
4260
|
+
}
|
|
4261
|
+
if (ts.isFunctionLike(n) ||
|
|
4262
|
+
ts.isClassDeclaration(n) ||
|
|
4263
|
+
ts.isClassExpression(n) ||
|
|
4264
|
+
ts.isSourceFile(n))
|
|
4265
|
+
return undefined;
|
|
4266
|
+
}
|
|
4267
|
+
return undefined;
|
|
4268
|
+
}
|
|
3788
4269
|
function classSyncParts7(c) {
|
|
3789
4270
|
const decorators = (n) => (n.modifiers?.nodes ?? []).filter((m) => m.kind === ts.SyntaxKind.Decorator);
|
|
3790
4271
|
const parts = [...decorators(c), ...(c.heritageClauses?.nodes ?? [])];
|
|
@@ -4243,8 +4724,8 @@ function preflight7(load) {
|
|
|
4243
4724
|
const sf = p.getSourceFile(d.fileName);
|
|
4244
4725
|
return sf !== undefined && isCheckedJsSourceFile(sf, projectCheckJs);
|
|
4245
4726
|
};
|
|
4246
|
-
const errorsOf = (p) =>
|
|
4247
|
-
|
|
4727
|
+
const errorsOf = (p) => keptErrors(p, ts.getPreEmitDiagnostics(p));
|
|
4728
|
+
const keptErrors = (p, all) => {
|
|
4248
4729
|
// First pass: every comment-side 2300's (file, name) — the partners
|
|
4249
4730
|
// the second pass forgives.
|
|
4250
4731
|
const commentDup = new Set();
|
|
@@ -4281,10 +4762,41 @@ function preflight7(load) {
|
|
|
4281
4762
|
// instead (the SC1100 checked-cast family). Dirty there → the project-
|
|
4282
4763
|
// world errors are the ones reported: they are reproducible with the
|
|
4283
4764
|
// project's own tsc, which is what "fix type errors first" asks for.
|
|
4284
|
-
|
|
4765
|
+
// With JSX sources, the program over the original text answers the tsc
|
|
4766
|
+
// gate; its positions move into the rewritten text the program holds.
|
|
4767
|
+
// Errors only the rewritten text has come from the calls the JSX lowers
|
|
4768
|
+
// to (a factory whose signature does not accept them).
|
|
4769
|
+
const tscWorld = load.tscWorld;
|
|
4770
|
+
const tscErrors = tscWorld === undefined ? errorsOf(program) : keptErrors(tscWorld.program, tscWorld.diagnostics);
|
|
4285
4771
|
if (tscErrors.length > 0) {
|
|
4286
|
-
|
|
4287
|
-
|
|
4772
|
+
const world = tscWorld === undefined || tscWorld.declWorldFallback === true
|
|
4773
|
+
? load.projectWorld()
|
|
4774
|
+
: (tscWorld.projectWorld ?? tscWorld.program);
|
|
4775
|
+
for (const d of errorsOf(world)) {
|
|
4776
|
+
const diag = toPassthrough(d);
|
|
4777
|
+
const lowered = tscWorld === undefined ? undefined : load.jsxSources?.get(diag.loc.file);
|
|
4778
|
+
if (lowered !== undefined) {
|
|
4779
|
+
diag.loc = {
|
|
4780
|
+
...diag.loc,
|
|
4781
|
+
start: lowered.rewrittenPosition(diag.loc.start, false),
|
|
4782
|
+
end: lowered.rewrittenPosition(diag.loc.end, true),
|
|
4783
|
+
};
|
|
4784
|
+
}
|
|
4785
|
+
diags.push(diag);
|
|
4786
|
+
}
|
|
4787
|
+
}
|
|
4788
|
+
else if (load.jsxSources !== undefined) {
|
|
4789
|
+
for (const file of load.jsxSources.keys()) {
|
|
4790
|
+
const sf = program.getSourceFile(file);
|
|
4791
|
+
if (sf === undefined)
|
|
4792
|
+
continue;
|
|
4793
|
+
const own = [...program.getSyntacticDiagnostics(sf), ...program.getSemanticDiagnostics(sf)];
|
|
4794
|
+
for (const d of keptErrors(program, own)) {
|
|
4795
|
+
const diag = toPassthrough(d);
|
|
4796
|
+
diag.message = `${diag.message} (in the call this JSX lowers to)`;
|
|
4797
|
+
diags.push(diag);
|
|
4798
|
+
}
|
|
4799
|
+
}
|
|
4288
4800
|
}
|
|
4289
4801
|
// Preflight and lowering share this CheckerFacade. Claim executable
|
|
4290
4802
|
// source files after workspace discovery and the tsc gate but before
|