@scriptc/compiler 0.4.4 → 0.4.5
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 +198 -44
- package/ambient/scriptc-overrides.d.ts +21 -0
- package/dist/backend/executable-features.js +3 -0
- package/dist/backend/executable-features.js.map +1 -1
- package/dist/backend/library-pack.js +2 -1
- package/dist/backend/library-pack.js.map +1 -1
- package/dist/backend/linker.js +11 -1
- package/dist/backend/linker.js.map +1 -1
- package/dist/backend/lld.d.ts +9 -0
- package/dist/backend/lld.js +48 -0
- package/dist/backend/lld.js.map +1 -0
- package/dist/backend/lld.test.d.ts +1 -0
- package/dist/backend/lld.test.js +53 -0
- package/dist/backend/lld.test.js.map +1 -0
- package/dist/backend/llvm/appended-array-literals.d.ts +11 -1
- package/dist/backend/llvm/appended-array-literals.js +29 -0
- package/dist/backend/llvm/appended-array-literals.js.map +1 -1
- package/dist/backend/llvm/blocks.js +10 -1
- package/dist/backend/llvm/blocks.js.map +1 -1
- package/dist/backend/llvm/bytes-alias.d.ts +13 -4
- package/dist/backend/llvm/bytes-alias.js +16 -5
- package/dist/backend/llvm/bytes-alias.js.map +1 -1
- package/dist/backend/llvm/bytes-bounds.d.ts +5 -1
- package/dist/backend/llvm/bytes-bounds.js +199 -2
- package/dist/backend/llvm/bytes-bounds.js.map +1 -1
- package/dist/backend/llvm/bytes-loop-versions.d.ts +45 -3
- package/dist/backend/llvm/bytes-loop-versions.js +238 -20
- package/dist/backend/llvm/bytes-loop-versions.js.map +1 -1
- package/dist/backend/llvm/bytes-loop-versions.test.js +11 -4
- package/dist/backend/llvm/bytes-loop-versions.test.js.map +1 -1
- package/dist/backend/llvm/call-lifetimes.d.ts +8 -2
- package/dist/backend/llvm/call-lifetimes.js +87 -18
- package/dist/backend/llvm/call-lifetimes.js.map +1 -1
- package/dist/backend/llvm/call-lifetimes.test.js +132 -0
- package/dist/backend/llvm/call-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/classes.d.ts +3 -2
- package/dist/backend/llvm/classes.js +4 -4
- package/dist/backend/llvm/classes.js.map +1 -1
- package/dist/backend/llvm/counted-loops.d.ts +14 -2
- package/dist/backend/llvm/counted-loops.js +54 -5
- package/dist/backend/llvm/counted-loops.js.map +1 -1
- package/dist/backend/llvm/debug-info.d.ts +42 -1
- package/dist/backend/llvm/debug-info.js +70 -1
- package/dist/backend/llvm/debug-info.js.map +1 -1
- package/dist/backend/llvm/dense-array-loops.js +2 -2
- package/dist/backend/llvm/dense-array-loops.js.map +1 -1
- package/dist/backend/llvm/dense-array-loops.test.js +1 -0
- package/dist/backend/llvm/dense-array-loops.test.js.map +1 -1
- package/dist/backend/llvm/dyn.d.ts +65 -8
- package/dist/backend/llvm/dyn.js +375 -40
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emit-function.js +28 -8
- package/dist/backend/llvm/emit-function.js.map +1 -1
- package/dist/backend/llvm/emit-journal.d.ts +8 -4
- package/dist/backend/llvm/emit-journal.js +75 -5
- package/dist/backend/llvm/emit-journal.js.map +1 -1
- package/dist/backend/llvm/emit-module.d.ts +4 -0
- package/dist/backend/llvm/emit-module.js +58 -23
- package/dist/backend/llvm/emit-module.js.map +1 -1
- package/dist/backend/llvm/emit-statements.js +297 -28
- package/dist/backend/llvm/emit-statements.js.map +1 -1
- package/dist/backend/llvm/emitter.d.ts +134 -13
- package/dist/backend/llvm/emitter.js +514 -87
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/expr-bytes.d.ts +6 -4
- package/dist/backend/llvm/expr-bytes.js +31 -8
- package/dist/backend/llvm/expr-bytes.js.map +1 -1
- package/dist/backend/llvm/expr-calls.js +13 -11
- package/dist/backend/llvm/expr-calls.js.map +1 -1
- package/dist/backend/llvm/expr-containers.d.ts +11 -0
- package/dist/backend/llvm/expr-containers.js +87 -9
- package/dist/backend/llvm/expr-containers.js.map +1 -1
- package/dist/backend/llvm/expr-context.d.ts +3 -0
- package/dist/backend/llvm/expr-control.js +83 -0
- package/dist/backend/llvm/expr-control.js.map +1 -1
- package/dist/backend/llvm/expr-dynamic.d.ts +1 -1
- package/dist/backend/llvm/expr-dynamic.js +22 -4
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.js +107 -9
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.js +95 -22
- package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
- package/dist/backend/llvm/forked-analysis.d.ts +8 -0
- package/dist/backend/llvm/forked-analysis.js +43 -0
- package/dist/backend/llvm/forked-analysis.js.map +1 -0
- package/dist/backend/llvm/integer-values.d.ts +7 -0
- package/dist/backend/llvm/integer-values.js +42 -2
- package/dist/backend/llvm/integer-values.js.map +1 -1
- package/dist/backend/llvm/integer-views.d.ts +2 -1
- package/dist/backend/llvm/integer-views.js +12 -1
- package/dist/backend/llvm/integer-views.js.map +1 -1
- package/dist/backend/llvm/js-ic.d.ts +4 -0
- package/dist/backend/llvm/js-ic.js +133 -15
- package/dist/backend/llvm/js-ic.js.map +1 -1
- package/dist/backend/llvm/layouts.d.ts +1 -0
- package/dist/backend/llvm/layouts.js.map +1 -1
- package/dist/backend/llvm/lazy-captures.d.ts +6 -1
- package/dist/backend/llvm/lazy-captures.js +10 -5
- package/dist/backend/llvm/lazy-captures.js.map +1 -1
- package/dist/backend/llvm/lib-abi.d.ts +5 -0
- package/dist/backend/llvm/lib-abi.js +19 -0
- package/dist/backend/llvm/lib-abi.js.map +1 -1
- package/dist/backend/llvm/lib-dispatch.js +128 -42
- package/dist/backend/llvm/lib-dispatch.js.map +1 -1
- package/dist/backend/llvm/lib-filesystem.d.ts +10 -0
- package/dist/backend/llvm/lib-filesystem.js +32 -0
- package/dist/backend/llvm/lib-filesystem.js.map +1 -1
- package/dist/backend/llvm/lib-http2.js +2 -2
- package/dist/backend/llvm/lib-http2.js.map +1 -1
- package/dist/backend/llvm/lib-network.js +2 -0
- package/dist/backend/llvm/lib-network.js.map +1 -1
- package/dist/backend/llvm/lib-process.js +11 -0
- package/dist/backend/llvm/lib-process.js.map +1 -1
- package/dist/backend/llvm/lib-shared.js +43 -0
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/lib-tls.js +28 -3
- package/dist/backend/llvm/lib-tls.js.map +1 -1
- package/dist/backend/llvm/local-union-storage.test.js +2 -1
- package/dist/backend/llvm/local-union-storage.test.js.map +1 -1
- package/dist/backend/llvm/loop-array-borrows.d.ts +4 -1
- package/dist/backend/llvm/loop-array-borrows.js +11 -5
- package/dist/backend/llvm/loop-array-borrows.js.map +1 -1
- package/dist/backend/llvm/map-entry-fusion.d.ts +5 -3
- package/dist/backend/llvm/map-entry-fusion.js +20 -11
- package/dist/backend/llvm/map-entry-fusion.js.map +1 -1
- package/dist/backend/llvm/map-entry-fusion.test.js +14 -6
- package/dist/backend/llvm/map-entry-fusion.test.js.map +1 -1
- package/dist/backend/llvm/map-number-lookup.d.ts +16 -6
- package/dist/backend/llvm/map-number-lookup.js +41 -9
- package/dist/backend/llvm/map-number-lookup.js.map +1 -1
- package/dist/backend/llvm/map-number-lookup.test.js +70 -2
- package/dist/backend/llvm/map-number-lookup.test.js.map +1 -1
- package/dist/backend/llvm/map-read-lifetimes.d.ts +25 -2
- package/dist/backend/llvm/map-read-lifetimes.js +136 -6
- package/dist/backend/llvm/map-read-lifetimes.js.map +1 -1
- package/dist/backend/llvm/map-read-lifetimes.test.js +8 -3
- package/dist/backend/llvm/map-read-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/nullable-unions.d.ts +5 -0
- package/dist/backend/llvm/nullable-unions.js +29 -2
- package/dist/backend/llvm/nullable-unions.js.map +1 -1
- package/dist/backend/llvm/nullable-unions.test.js +25 -1
- package/dist/backend/llvm/nullable-unions.test.js.map +1 -1
- package/dist/backend/llvm/record-union-keys.test.d.ts +1 -0
- package/dist/backend/llvm/record-union-keys.test.js +161 -0
- package/dist/backend/llvm/record-union-keys.test.js.map +1 -0
- package/dist/backend/llvm/serialized-ir-emission.test.js +2 -0
- package/dist/backend/llvm/serialized-ir-emission.test.js.map +1 -1
- package/dist/backend/llvm/shapes.d.ts +4 -5
- package/dist/backend/llvm/shapes.js +104 -51
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/llvm/shapes.test.js +14 -2
- package/dist/backend/llvm/shapes.test.js.map +1 -1
- package/dist/backend/llvm/speculative-integers.d.ts +50 -3
- package/dist/backend/llvm/speculative-integers.js +411 -24
- package/dist/backend/llvm/speculative-integers.js.map +1 -1
- package/dist/backend/llvm/speculative-integers.test.js +103 -1
- package/dist/backend/llvm/speculative-integers.test.js.map +1 -1
- package/dist/backend/llvm/split.d.ts +10 -1
- package/dist/backend/llvm/split.js +243 -59
- package/dist/backend/llvm/split.js.map +1 -1
- package/dist/backend/llvm/split.test.js +92 -13
- package/dist/backend/llvm/split.test.js.map +1 -1
- package/dist/backend/llvm/stack-objects.test.js +3 -2
- package/dist/backend/llvm/stack-objects.test.js.map +1 -1
- package/dist/backend/llvm/string-lifetimes.test.js +1 -1
- package/dist/backend/llvm/string-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/string-reads.d.ts +13 -0
- package/dist/backend/llvm/string-reads.js +22 -0
- package/dist/backend/llvm/string-reads.js.map +1 -1
- package/dist/backend/llvm/string-slices.d.ts +36 -2
- package/dist/backend/llvm/string-slices.js +308 -12
- package/dist/backend/llvm/string-slices.js.map +1 -1
- package/dist/backend/llvm/string-slices.test.js +182 -3
- package/dist/backend/llvm/string-slices.test.js.map +1 -1
- package/dist/backend/llvm/string-unit-versions.d.ts +11 -0
- package/dist/backend/llvm/string-unit-versions.js +191 -0
- package/dist/backend/llvm/string-unit-versions.js.map +1 -0
- package/dist/backend/llvm/string-unit-versions.test.d.ts +1 -0
- package/dist/backend/llvm/string-unit-versions.test.js +117 -0
- package/dist/backend/llvm/string-unit-versions.test.js.map +1 -0
- package/dist/backend/llvm/test-boxed-unions.d.ts +5 -2
- package/dist/backend/llvm/test-boxed-unions.js +24 -8
- package/dist/backend/llvm/test-boxed-unions.js.map +1 -1
- package/dist/backend/llvm/unwind-abi.d.ts +52 -0
- package/dist/backend/llvm/unwind-abi.js +498 -0
- package/dist/backend/llvm/unwind-abi.js.map +1 -0
- package/dist/backend/llvm/unwind-abi.test.d.ts +1 -0
- package/dist/backend/llvm/unwind-abi.test.js +255 -0
- package/dist/backend/llvm/unwind-abi.test.js.map +1 -0
- package/dist/backend/llvm/wrapping-sums.d.ts +14 -10
- package/dist/backend/llvm/wrapping-sums.js +31 -14
- package/dist/backend/llvm/wrapping-sums.js.map +1 -1
- package/dist/backend/loop-polls.d.ts +6 -0
- package/dist/backend/loop-polls.js +24 -0
- package/dist/backend/loop-polls.js.map +1 -1
- package/dist/backend/may-throw.js +8 -8
- package/dist/backend/may-throw.js.map +1 -1
- package/dist/backend/native/contracts.d.ts +12 -2
- package/dist/backend/native/executable.js +48 -6
- package/dist/backend/native/executable.js.map +1 -1
- package/dist/backend/native/library.js +4 -3
- package/dist/backend/native/library.js.map +1 -1
- package/dist/backend/native/program-shards.d.ts +2 -2
- package/dist/backend/native/program-shards.js +2 -2
- package/dist/backend/native/program-shards.js.map +1 -1
- package/dist/backend/native/runtime-inputs.d.ts +1 -1
- package/dist/backend/native/runtime-inputs.js +4 -1
- package/dist/backend/native/runtime-inputs.js.map +1 -1
- package/dist/backend/native/vendor.d.ts +1 -1
- package/dist/backend/native/vendor.js +1 -1
- package/dist/backend/native/vendor.js.map +1 -1
- package/dist/backend/native-codegen.d.ts +3 -1
- package/dist/backend/native-codegen.js +4 -3
- package/dist/backend/native-codegen.js.map +1 -1
- package/dist/backend/native-link-info-core.d.ts +8 -0
- package/dist/backend/native-link-info-core.js.map +1 -1
- package/dist/backend/native-profile.d.ts +14 -0
- package/dist/backend/native-profile.js +28 -0
- package/dist/backend/native-profile.js.map +1 -1
- package/dist/backend/native-profile.test.js +8 -1
- package/dist/backend/native-profile.test.js.map +1 -1
- package/dist/backend/native-toolchain.test.js +11 -11
- package/dist/backend/native-toolchain.test.js.map +1 -1
- package/dist/backend/runtime-abi.d.ts +2 -2
- package/dist/backend/runtime-abi.js +2 -2
- package/dist/backend/runtime-pack-core.d.ts +3 -1
- package/dist/backend/runtime-pack-core.js +2 -0
- package/dist/backend/runtime-pack-core.js.map +1 -1
- package/dist/backend/runtime-pack-native.d.ts +17 -5
- package/dist/backend/runtime-pack-native.js +186 -14
- package/dist/backend/runtime-pack-native.js.map +1 -1
- package/dist/backend/runtime-pack-native.test.js +160 -3
- package/dist/backend/runtime-pack-native.test.js.map +1 -1
- package/dist/backend/runtime-pack-targets.test.js +2 -1
- package/dist/backend/runtime-pack-targets.test.js.map +1 -1
- package/dist/backend/runtime-pack.test.js +2 -1
- package/dist/backend/runtime-pack.test.js.map +1 -1
- package/dist/backend/vendor-archives.d.ts +4 -1
- package/dist/backend/vendor-archives.js +78 -4
- package/dist/backend/vendor-archives.js.map +1 -1
- package/dist/backend/vendor-inputs.d.ts +3 -1
- package/dist/backend/vendor-inputs.js +3 -1
- package/dist/backend/vendor-inputs.js.map +1 -1
- package/dist/backend/warm-cache.js +1 -0
- package/dist/backend/warm-cache.js.map +1 -1
- package/dist/cli/command.js +78 -11
- package/dist/cli/command.js.map +1 -1
- package/dist/cli/usage.d.ts +22 -1
- package/dist/cli/usage.js +33 -3
- package/dist/cli/usage.js.map +1 -1
- package/dist/compat/fetch-profile.d.ts +15 -6
- package/dist/compat/fetch-profile.js +519 -498
- package/dist/compat/fetch-profile.js.map +1 -1
- package/dist/compile-types.d.ts +7 -0
- package/dist/contracts/int32-elements.js +2 -1
- package/dist/contracts/int32-elements.js.map +1 -1
- package/dist/coverage/report.d.ts +14 -3
- package/dist/coverage/report.js +216 -0
- package/dist/coverage/report.js.map +1 -1
- package/dist/coverage/surface-manifest.js +25 -25
- package/dist/coverage/surface-manifest.js.map +1 -1
- package/dist/coverage/verdict-cache.d.ts +2 -0
- package/dist/coverage/verdict-cache.js +10 -1
- package/dist/coverage/verdict-cache.js.map +1 -1
- package/dist/diagnostics/diagnostic.d.ts +19 -0
- package/dist/diagnostics/diagnostic.js +52 -1
- package/dist/diagnostics/diagnostic.js.map +1 -1
- package/dist/diagnostics/envelope.d.ts +54 -0
- package/dist/diagnostics/envelope.js +7 -1
- package/dist/diagnostics/envelope.js.map +1 -1
- package/dist/diagnostics/render.d.ts +7 -0
- package/dist/diagnostics/render.js +15 -4
- package/dist/diagnostics/render.js.map +1 -1
- package/dist/executable/executable-cache.d.ts +3 -0
- package/dist/executable/executable-cache.js +1 -0
- package/dist/executable/executable-cache.js.map +1 -1
- package/dist/executable/executable-cache.test.js +1 -0
- package/dist/executable/executable-cache.test.js.map +1 -1
- package/dist/executable/prepare.js +5 -1
- package/dist/executable/prepare.js.map +1 -1
- package/dist/frontend/analysis.js +26 -2
- package/dist/frontend/analysis.js.map +1 -1
- package/dist/frontend/fork-target.js +67 -1
- package/dist/frontend/fork-target.js.map +1 -1
- package/dist/frontend/fork-target.test.js +43 -0
- package/dist/frontend/fork-target.test.js.map +1 -1
- package/dist/frontend/input-tracker.d.ts +4 -1
- package/dist/frontend/input-tracker.js +42 -4
- package/dist/frontend/input-tracker.js.map +1 -1
- package/dist/frontend/input-tracker.test.js +45 -0
- package/dist/frontend/input-tracker.test.js.map +1 -1
- package/dist/frontend/lowering/abstract-equality.js +38 -1
- package/dist/frontend/lowering/abstract-equality.js.map +1 -1
- package/dist/frontend/lowering/argument-counts.d.ts +36 -0
- package/dist/frontend/lowering/argument-counts.js +201 -0
- package/dist/frontend/lowering/argument-counts.js.map +1 -0
- package/dist/frontend/lowering/array-values.d.ts +27 -0
- package/dist/frontend/lowering/array-values.js +112 -0
- package/dist/frontend/lowering/array-values.js.map +1 -1
- package/dist/frontend/lowering/binding-analysis.d.ts +3 -0
- package/dist/frontend/lowering/binding-analysis.js +9 -3
- package/dist/frontend/lowering/binding-analysis.js.map +1 -1
- package/dist/frontend/lowering/builtin-namespaces.d.ts +13 -0
- package/dist/frontend/lowering/builtin-namespaces.js +238 -0
- package/dist/frontend/lowering/builtin-namespaces.js.map +1 -0
- package/dist/frontend/lowering/builtins/compression.d.ts +4 -3
- package/dist/frontend/lowering/builtins/compression.js +86 -5
- package/dist/frontend/lowering/builtins/compression.js.map +1 -1
- package/dist/frontend/lowering/builtins/date-classes.js +17 -1
- package/dist/frontend/lowering/builtins/date-classes.js.map +1 -1
- package/dist/frontend/lowering/builtins/dates.d.ts +19 -5
- package/dist/frontend/lowering/builtins/dates.js +159 -8
- package/dist/frontend/lowering/builtins/dates.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem-calls.js +26 -1
- package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/fs-streams.d.ts +4 -0
- package/dist/frontend/lowering/builtins/fs-streams.js +24 -1
- package/dist/frontend/lowering/builtins/fs-streams.js.map +1 -1
- package/dist/frontend/lowering/builtins/json.d.ts +4 -1
- package/dist/frontend/lowering/builtins/json.js +9 -3
- package/dist/frontend/lowering/builtins/json.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-bindings.d.ts +6 -0
- package/dist/frontend/lowering/builtins/module-bindings.js +23 -1
- package/dist/frontend/lowering/builtins/module-bindings.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-resolution.d.ts +5 -0
- package/dist/frontend/lowering/builtins/module-resolution.js +95 -4
- package/dist/frontend/lowering/builtins/module-resolution.js.map +1 -1
- package/dist/frontend/lowering/builtins/promises.js +144 -1
- package/dist/frontend/lowering/builtins/promises.js.map +1 -1
- package/dist/frontend/lowering/builtins/readline.d.ts +5 -1
- package/dist/frontend/lowering/builtins/readline.js +22 -11
- package/dist/frontend/lowering/builtins/readline.js.map +1 -1
- package/dist/frontend/lowering/builtins/reflection.d.ts +4 -1
- package/dist/frontend/lowering/builtins/reflection.js +41 -1
- package/dist/frontend/lowering/builtins/reflection.js.map +1 -1
- package/dist/frontend/lowering/builtins/text-codecs.js +31 -2
- package/dist/frontend/lowering/builtins/text-codecs.js.map +1 -1
- package/dist/frontend/lowering/builtins/webassembly.js +4 -1
- package/dist/frontend/lowering/builtins/webassembly.js.map +1 -1
- package/dist/frontend/lowering/builtins/x509.d.ts +33 -0
- package/dist/frontend/lowering/builtins/x509.js +431 -0
- package/dist/frontend/lowering/builtins/x509.js.map +1 -0
- package/dist/frontend/lowering/call-arguments.js +44 -0
- package/dist/frontend/lowering/call-arguments.js.map +1 -1
- package/dist/frontend/lowering/call-signatures.js +1 -1
- package/dist/frontend/lowering/call-signatures.js.map +1 -1
- package/dist/frontend/lowering/cjs-inline-require.js +1 -1
- package/dist/frontend/lowering/cjs-inline-require.js.map +1 -1
- package/dist/frontend/lowering/class-attributes.d.ts +7 -0
- package/dist/frontend/lowering/class-attributes.js +52 -10
- package/dist/frontend/lowering/class-attributes.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +13 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.js +174 -9
- package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-method-mutations.js +43 -8
- package/dist/frontend/lowering/class-method-mutations.js.map +1 -1
- package/dist/frontend/lowering/class-method-values.js +71 -1
- package/dist/frontend/lowering/class-method-values.js.map +1 -1
- package/dist/frontend/lowering/class-prototypes.d.ts +8 -0
- package/dist/frontend/lowering/class-prototypes.js +83 -2
- package/dist/frontend/lowering/class-prototypes.js.map +1 -1
- package/dist/frontend/lowering/class-to-primitive.d.ts +5 -0
- package/dist/frontend/lowering/class-to-primitive.js +79 -7
- package/dist/frontend/lowering/class-to-primitive.js.map +1 -1
- package/dist/frontend/lowering/coercions/state.d.ts +1 -0
- package/dist/frontend/lowering/coercions/state.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural.js +89 -10
- package/dist/frontend/lowering/coercions/structural.js.map +1 -1
- package/dist/frontend/lowering/coercions/unions.d.ts +4 -2
- package/dist/frontend/lowering/coercions/unions.js +13 -6
- package/dist/frontend/lowering/coercions/unions.js.map +1 -1
- package/dist/frontend/lowering/containers/array-callbacks.js +51 -15
- package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
- package/dist/frontend/lowering/containers/array-construction.d.ts +4 -1
- package/dist/frontend/lowering/containers/array-construction.js +102 -9
- package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
- package/dist/frontend/lowering/containers/array-methods.js +85 -5
- package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/array-pipelines.js +346 -77
- package/dist/frontend/lowering/containers/array-pipelines.js.map +1 -1
- package/dist/frontend/lowering/containers/callback-arguments.js +11 -1
- package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -1
- package/dist/frontend/lowering/containers/collection-methods.js +12 -0
- package/dist/frontend/lowering/containers/collection-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/indexed-objects.js +73 -25
- package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
- package/dist/frontend/lowering/containers/iterator-helpers.d.ts +4 -4
- package/dist/frontend/lowering/containers/iterator-helpers.js +8 -2
- package/dist/frontend/lowering/containers/iterator-helpers.js.map +1 -1
- package/dist/frontend/lowering/containers/replacer-params.d.ts +37 -0
- package/dist/frontend/lowering/containers/replacer-params.js +294 -0
- package/dist/frontend/lowering/containers/replacer-params.js.map +1 -0
- package/dist/frontend/lowering/containers/replacer-params.test.d.ts +1 -0
- package/dist/frontend/lowering/containers/replacer-params.test.js +61 -0
- package/dist/frontend/lowering/containers/replacer-params.test.js.map +1 -0
- package/dist/frontend/lowering/containers/string-and-regexp.js +2 -1
- package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
- package/dist/frontend/lowering/containers/string-replacement.js +7 -3
- package/dist/frontend/lowering/containers/string-replacement.js.map +1 -1
- package/dist/frontend/lowering/cycle-initialization.d.ts +4 -2
- package/dist/frontend/lowering/cycle-initialization.js +4 -1
- package/dist/frontend/lowering/cycle-initialization.js.map +1 -1
- package/dist/frontend/lowering/date-values.d.ts +9 -6
- package/dist/frontend/lowering/date-values.js +63 -16
- package/dist/frontend/lowering/date-values.js.map +1 -1
- package/dist/frontend/lowering/deferred-module-initializers.js +16 -8
- package/dist/frontend/lowering/deferred-module-initializers.js.map +1 -1
- package/dist/frontend/lowering/deferred-module-initializers.test.js +22 -6
- package/dist/frontend/lowering/deferred-module-initializers.test.js.map +1 -1
- package/dist/frontend/lowering/dispatch-sites.js +1 -0
- package/dist/frontend/lowering/dispatch-sites.js.map +1 -1
- package/dist/frontend/lowering/expressions/array-literals.d.ts +0 -8
- package/dist/frontend/lowering/expressions/array-literals.js +119 -26
- package/dist/frontend/lowering/expressions/array-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/binary.js +38 -0
- package/dist/frontend/lowering/expressions/binary.js.map +1 -1
- package/dist/frontend/lowering/expressions/element-access.js +50 -6
- package/dist/frontend/lowering/expressions/element-access.js.map +1 -1
- package/dist/frontend/lowering/expressions/identifiers.js +35 -3
- package/dist/frontend/lowering/expressions/identifiers.js.map +1 -1
- package/dist/frontend/lowering/expressions/narrowing.d.ts +2 -1
- package/dist/frontend/lowering/expressions/narrowing.js +8 -1
- package/dist/frontend/lowering/expressions/narrowing.js.map +1 -1
- package/dist/frontend/lowering/expressions/object-literals.js +8 -2
- package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/property-access.js +65 -34
- package/dist/frontend/lowering/expressions/property-access.js.map +1 -1
- package/dist/frontend/lowering/expressions/relational.js +76 -11
- package/dist/frontend/lowering/expressions/relational.js.map +1 -1
- package/dist/frontend/lowering/expressions/typeof.js +6 -1
- package/dist/frontend/lowering/expressions/typeof.js.map +1 -1
- package/dist/frontend/lowering/expressions/updates.js +20 -11
- package/dist/frontend/lowering/expressions/updates.js.map +1 -1
- package/dist/frontend/lowering/f64-handles.d.ts +8 -0
- package/dist/frontend/lowering/f64-handles.js +16 -0
- package/dist/frontend/lowering/f64-handles.js.map +1 -0
- package/dist/frontend/lowering/frozen-records.d.ts +5 -0
- package/dist/frontend/lowering/frozen-records.js +12 -4
- package/dist/frontend/lowering/frozen-records.js.map +1 -1
- package/dist/frontend/lowering/function-context.d.ts +3 -0
- package/dist/frontend/lowering/function-context.js.map +1 -1
- package/dist/frontend/lowering/function-returns.js +15 -0
- package/dist/frontend/lowering/function-returns.js.map +1 -1
- package/dist/frontend/lowering/generic-functions.js +17 -6
- package/dist/frontend/lowering/generic-functions.js.map +1 -1
- package/dist/frontend/lowering/instantiation-path.d.ts +3 -2
- package/dist/frontend/lowering/instantiation-path.js.map +1 -1
- package/dist/frontend/lowering/instantiation-path.test.js +6 -4
- package/dist/frontend/lowering/instantiation-path.test.js.map +1 -1
- package/dist/frontend/lowering/iterator-adapters.d.ts +4 -2
- package/dist/frontend/lowering/iterator-adapters.js +26 -33
- package/dist/frontend/lowering/iterator-adapters.js.map +1 -1
- package/dist/frontend/lowering/js-collection-types.d.ts +11 -0
- package/dist/frontend/lowering/js-collection-types.js +490 -0
- package/dist/frontend/lowering/js-collection-types.js.map +1 -0
- package/dist/frontend/lowering/lib-boundary.js +2 -2
- package/dist/frontend/lowering/lib-boundary.js.map +1 -1
- package/dist/frontend/lowering/lower-assert.d.ts +14 -0
- package/dist/frontend/lowering/lower-assert.js +283 -26
- package/dist/frontend/lowering/lower-assert.js.map +1 -1
- package/dist/frontend/lowering/lower-builtin-values.js +3 -3
- package/dist/frontend/lowering/lower-builtin-values.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.js +97 -7
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.d.ts +59 -7
- package/dist/frontend/lowering/lower-classes.js +647 -176
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-console.js +2 -1
- package/dist/frontend/lowering/lower-console.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.d.ts +5 -0
- package/dist/frontend/lowering/lower-exprs.js +52 -5
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-functions.js +7 -0
- package/dist/frontend/lowering/lower-functions.js.map +1 -1
- package/dist/frontend/lowering/lower-generators.js +4 -3
- package/dist/frontend/lowering/lower-generators.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.js +264 -46
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.js +28 -17
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-namespaces.d.ts +3 -0
- package/dist/frontend/lowering/lower-namespaces.js +44 -1
- package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
- package/dist/frontend/lowering/lower-node-module.js +1 -1
- package/dist/frontend/lowering/lower-node-module.js.map +1 -1
- package/dist/frontend/lowering/lower-server.js +126 -32
- package/dist/frontend/lowering/lower-server.js.map +1 -1
- package/dist/frontend/lowering/lower-stdlib.d.ts +4 -1
- package/dist/frontend/lowering/lower-stdlib.js +51 -37
- package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.js +294 -46
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-stream.js +515 -121
- package/dist/frontend/lowering/lower-stream.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +52 -10
- package/dist/frontend/lowering/lowerer.js +249 -37
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/lowerer.test.js +1 -1
- package/dist/frontend/lowering/lowerer.test.js.map +1 -1
- package/dist/frontend/lowering/module-namespace-elements.d.ts +13 -0
- package/dist/frontend/lowering/module-namespace-elements.js +118 -1
- package/dist/frontend/lowering/module-namespace-elements.js.map +1 -1
- package/dist/frontend/lowering/private-brands.d.ts +5 -0
- package/dist/frontend/lowering/private-brands.js +39 -0
- package/dist/frontend/lowering/private-brands.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-elements.d.ts +6 -0
- package/dist/frontend/lowering/runtime-optional-elements.js +14 -3
- package/dist/frontend/lowering/runtime-optional-elements.js.map +1 -1
- package/dist/frontend/lowering/sanitize-class-types.js +2 -0
- package/dist/frontend/lowering/sanitize-class-types.js.map +1 -1
- package/dist/frontend/lowering/site-dependencies.d.ts +7 -2
- package/dist/frontend/lowering/site-dependencies.js +0 -15
- package/dist/frontend/lowering/site-dependencies.js.map +1 -1
- package/dist/frontend/lowering/site-dependencies.test.js +7 -5
- package/dist/frontend/lowering/site-dependencies.test.js.map +1 -1
- package/dist/frontend/lowering/string-index-bounds.d.ts +7 -4
- package/dist/frontend/lowering/string-index-bounds.js +21 -7
- package/dist/frontend/lowering/string-index-bounds.js.map +1 -1
- package/dist/frontend/lowering/surfaces.d.ts +12 -3
- package/dist/frontend/lowering/surfaces.js +1576 -1539
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/lowering/symbol-fields.d.ts +7 -0
- package/dist/frontend/lowering/symbol-fields.js +45 -2
- package/dist/frontend/lowering/symbol-fields.js.map +1 -1
- package/dist/frontend/lowering/union-narrow.d.ts +5 -2
- package/dist/frontend/lowering/union-narrow.js +6 -3
- package/dist/frontend/lowering/union-narrow.js.map +1 -1
- package/dist/frontend/lowering/union-narrow.test.js +10 -0
- package/dist/frontend/lowering/union-narrow.test.js.map +1 -1
- package/dist/frontend/npm-static-namespace-defaults.d.ts +6 -0
- package/dist/frontend/npm-static-namespace-defaults.js +163 -0
- package/dist/frontend/npm-static-namespace-defaults.js.map +1 -0
- package/dist/frontend/npm-static-namespace-defaults.test.d.ts +1 -0
- package/dist/frontend/npm-static-namespace-defaults.test.js +72 -0
- package/dist/frontend/npm-static-namespace-defaults.test.js.map +1 -0
- package/dist/frontend/npm-static-prune.js +152 -111
- package/dist/frontend/npm-static-prune.js.map +1 -1
- package/dist/frontend/npm-static.js +35 -32
- package/dist/frontend/npm-static.js.map +1 -1
- package/dist/frontend/package-shims.d.ts +7 -4
- package/dist/frontend/package-shims.js +39 -40
- package/dist/frontend/package-shims.js.map +1 -1
- package/dist/frontend/pipeline-native.d.ts +2 -2
- package/dist/frontend/pipeline-native.js +2 -2
- package/dist/frontend/pipeline-native.js.map +1 -1
- package/dist/frontend/pipeline.d.ts +19 -2
- package/dist/frontend/pipeline.js +102 -11
- package/dist/frontend/pipeline.js.map +1 -1
- package/dist/frontend/program-analysis.d.ts +2 -0
- package/dist/frontend/program-analysis.js +3 -0
- package/dist/frontend/program-analysis.js.map +1 -1
- package/dist/frontend/program.d.ts +15 -0
- package/dist/frontend/program.js +227 -64
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/resolve.d.ts +2 -0
- package/dist/frontend/resolve.js +5 -0
- package/dist/frontend/resolve.js.map +1 -1
- package/dist/frontend/services.d.ts +3 -0
- package/dist/frontend/services.js +31 -4
- package/dist/frontend/services.js.map +1 -1
- package/dist/frontend/shape-inference/analyze.d.ts +93 -0
- package/dist/frontend/shape-inference/analyze.js +3138 -0
- package/dist/frontend/shape-inference/analyze.js.map +1 -0
- package/dist/frontend/shape-inference/constant-graphs.d.ts +54 -0
- package/dist/frontend/shape-inference/constant-graphs.js +357 -0
- package/dist/frontend/shape-inference/constant-graphs.js.map +1 -0
- package/dist/frontend/shape-inference/domain.d.ts +32 -0
- package/dist/frontend/shape-inference/domain.js +104 -0
- package/dist/frontend/shape-inference/domain.js.map +1 -0
- package/dist/frontend/shape-inference/index.d.ts +7 -0
- package/dist/frontend/shape-inference/index.js +19 -0
- package/dist/frontend/shape-inference/index.js.map +1 -0
- package/dist/frontend/shape-inference/report.d.ts +21 -0
- package/dist/frontend/shape-inference/report.js +348 -0
- package/dist/frontend/shape-inference/report.js.map +1 -0
- package/dist/frontend/token-equivalence.d.ts +6 -0
- package/dist/frontend/token-equivalence.js +66 -9
- package/dist/frontend/token-equivalence.js.map +1 -1
- package/dist/frontend/token-equivalence.test.js +33 -1
- package/dist/frontend/token-equivalence.test.js.map +1 -1
- package/dist/frontend/ts7/checker-features.d.ts +15 -0
- package/dist/frontend/ts7/checker-features.js +45 -0
- package/dist/frontend/ts7/checker-features.js.map +1 -0
- package/dist/frontend/ts7/checker-features.test.d.ts +1 -0
- package/dist/frontend/ts7/checker-features.test.js +40 -0
- package/dist/frontend/ts7/checker-features.test.js.map +1 -0
- package/dist/frontend/ts7/checker-server.d.ts +19 -0
- package/dist/frontend/ts7/checker-server.js +46 -0
- package/dist/frontend/ts7/checker-server.js.map +1 -0
- package/dist/frontend/ts7/checker-server.test.d.ts +1 -0
- package/dist/frontend/ts7/checker-server.test.js +38 -0
- package/dist/frontend/ts7/checker-server.test.js.map +1 -0
- package/dist/frontend/ts7/lib-diagnostics.js +39 -13
- package/dist/frontend/ts7/lib-diagnostics.js.map +1 -1
- package/dist/frontend/ts7/lib-diagnostics.test.js +40 -0
- package/dist/frontend/ts7/lib-diagnostics.test.js.map +1 -1
- package/dist/frontend/ts7/native-api.d.ts +1 -0
- package/dist/frontend/ts7/native-api.js +25 -2
- package/dist/frontend/ts7/native-api.js.map +1 -1
- package/dist/frontend/ts7/native-process.d.ts +9 -2
- package/dist/frontend/ts7/native-process.js +22 -4
- package/dist/frontend/ts7/native-process.js.map +1 -1
- package/dist/frontend/ts7/program-host.d.ts +11 -0
- package/dist/frontend/ts7/program-host.js +36 -22
- package/dist/frontend/ts7/program-host.js.map +1 -1
- package/dist/frontend/ts7/semantic-json.d.ts +9 -0
- package/dist/frontend/ts7/semantic-json.js +25 -5
- package/dist/frontend/ts7/semantic-json.js.map +1 -1
- package/dist/frontend/ts7/semantic-model.js +3 -1
- package/dist/frontend/ts7/semantic-model.js.map +1 -1
- package/dist/frontend/ts7/source-parser.js +3 -1
- package/dist/frontend/ts7/source-parser.js.map +1 -1
- package/dist/frontend/tsc-codes.js +10 -0
- package/dist/frontend/tsc-codes.js.map +1 -1
- package/dist/frontend/type-mapper.d.ts +18 -6
- package/dist/frontend/type-mapper.js +160 -28
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/index.d.ts +44 -3
- package/dist/index.js +27 -8
- package/dist/index.js.map +1 -1
- package/dist/ir/builtin-effects.js +29 -0
- package/dist/ir/builtin-effects.js.map +1 -1
- package/dist/ir/builtin-signatures.d.ts +7 -2
- package/dist/ir/builtin-signatures.js +5104 -4950
- package/dist/ir/builtin-signatures.js.map +1 -1
- package/dist/ir/callback-specialization.d.ts +4 -2
- package/dist/ir/callback-specialization.js +24 -9
- package/dist/ir/callback-specialization.js.map +1 -1
- package/dist/ir/capture-values.js +4 -2
- package/dist/ir/capture-values.js.map +1 -1
- package/dist/ir/char-unit-locals.d.ts +12 -2
- package/dist/ir/char-unit-locals.js +400 -58
- package/dist/ir/char-unit-locals.js.map +1 -1
- package/dist/ir/char-unit-locals.test.js +111 -0
- package/dist/ir/char-unit-locals.test.js.map +1 -1
- package/dist/ir/constant-globals.js +18 -4
- package/dist/ir/constant-globals.js.map +1 -1
- package/dist/ir/expression-inlining.d.ts +15 -0
- package/dist/ir/expression-inlining.js +166 -0
- package/dist/ir/expression-inlining.js.map +1 -0
- package/dist/ir/expression-inlining.test.d.ts +1 -0
- package/dist/ir/expression-inlining.test.js +123 -0
- package/dist/ir/expression-inlining.test.js.map +1 -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 +6 -0
- package/dist/ir/function-references.test.js.map +1 -1
- package/dist/ir/int32-arrays.d.ts +27 -6
- package/dist/ir/int32-arrays.js +106 -18
- package/dist/ir/int32-arrays.js.map +1 -1
- package/dist/ir/int32-slots.d.ts +26 -1
- package/dist/ir/int32-slots.js +284 -5
- package/dist/ir/int32-slots.js.map +1 -1
- package/dist/ir/int32-slots.test.js +5 -0
- package/dist/ir/int32-slots.test.js.map +1 -1
- package/dist/ir/integer-loop-facts.d.ts +5 -0
- package/dist/ir/integer-loop-facts.js +90 -1
- package/dist/ir/integer-loop-facts.js.map +1 -1
- package/dist/ir/integer-loops.d.ts +14 -1
- package/dist/ir/integer-loops.js +93 -7
- package/dist/ir/integer-loops.js.map +1 -1
- package/dist/ir/integer-loops.test.js +70 -0
- package/dist/ir/integer-loops.test.js.map +1 -1
- package/dist/ir/integer-ranges.js +18 -2
- package/dist/ir/integer-ranges.js.map +1 -1
- package/dist/ir/integer-ranges.test.js +64 -4
- package/dist/ir/integer-ranges.test.js.map +1 -1
- package/dist/ir/ir.d.ts +50 -8
- package/dist/ir/ir.js +38 -12
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/js-ic.d.ts +25 -5
- package/dist/ir/js-ic.js +93 -13
- package/dist/ir/js-ic.js.map +1 -1
- package/dist/ir/js-ic.test.js +153 -0
- package/dist/ir/js-ic.test.js.map +1 -1
- package/dist/ir/node-index.d.ts +7 -0
- package/dist/ir/node-index.js +32 -0
- package/dist/ir/node-index.js.map +1 -1
- package/dist/ir/receiver-readers.d.ts +6 -1
- package/dist/ir/receiver-readers.js +53 -28
- package/dist/ir/receiver-readers.js.map +1 -1
- package/dist/ir/row-pairs.d.ts +15 -0
- package/dist/ir/row-pairs.js +373 -0
- package/dist/ir/row-pairs.js.map +1 -0
- package/dist/ir/row-pairs.test.d.ts +1 -0
- package/dist/ir/row-pairs.test.js +129 -0
- package/dist/ir/row-pairs.test.js.map +1 -0
- package/dist/ir/runtime-features.d.ts +17 -4
- package/dist/ir/runtime-features.js +69 -12
- package/dist/ir/runtime-features.js.map +1 -1
- package/dist/ir/scalar-records.d.ts +15 -0
- package/dist/ir/scalar-records.js +301 -1
- package/dist/ir/scalar-records.js.map +1 -1
- package/dist/ir/scalar-records.test.js +181 -1
- package/dist/ir/scalar-records.test.js.map +1 -1
- package/dist/ir/self-captures.js +8 -0
- package/dist/ir/self-captures.js.map +1 -1
- package/dist/ir/validate.js +37 -28
- package/dist/ir/validate.js.map +1 -1
- package/dist/library/fence-eval.js +4 -4
- package/dist/library/fence-eval.js.map +1 -1
- package/dist/library/ir-policy.js +4 -0
- package/dist/library/ir-policy.js.map +1 -1
- package/dist/library/library-cache.d.ts +1 -0
- package/dist/library/library-cache.js +1 -0
- package/dist/library/library-cache.js.map +1 -1
- package/dist/library/library-cache.test.js +13 -0
- package/dist/library/library-cache.test.js.map +1 -1
- package/dist/native/cache.d.ts +5 -1
- package/dist/native/cache.js +15 -3
- package/dist/native/cache.js.map +1 -1
- package/dist/native/cli.js +6 -0
- package/dist/native/cli.js.map +1 -1
- package/dist/native/compiler.d.ts +3 -0
- package/dist/native/compiler.js +72 -26
- package/dist/native/compiler.js.map +1 -1
- package/dist/native/compiler.test.js +87 -2
- package/dist/native/compiler.test.js.map +1 -1
- package/dist/native/executable-cache-open.test.d.ts +1 -0
- package/dist/native/executable-cache-open.test.js +80 -0
- package/dist/native/executable-cache-open.test.js.map +1 -0
- package/dist/native/executable-cache.d.ts +43 -3
- package/dist/native/executable-cache.js +177 -36
- package/dist/native/executable-cache.js.map +1 -1
- package/dist/native/executable-cache.test.js +103 -0
- package/dist/native/executable-cache.test.js.map +1 -1
- package/dist/native/prepare.js +38 -16
- package/dist/native/prepare.js.map +1 -1
- package/dist/native/prepare.test.js +51 -1
- package/dist/native/prepare.test.js.map +1 -1
- package/dist/native/sanitizer.d.ts +1 -1
- package/dist/native/sanitizer.js +17 -3
- package/dist/native/sanitizer.js.map +1 -1
- package/dist/native/sanitizer.test.js +4 -0
- package/dist/native/sanitizer.test.js.map +1 -1
- package/dist/node-islands/classify.d.ts +14 -0
- package/dist/node-islands/classify.js +114 -0
- package/dist/node-islands/classify.js.map +1 -0
- package/dist/node-islands/detect.d.ts +13 -0
- package/dist/node-islands/detect.js +805 -0
- package/dist/node-islands/detect.js.map +1 -0
- package/dist/node-islands/detect.test.d.ts +1 -0
- package/dist/node-islands/detect.test.js +136 -0
- package/dist/node-islands/detect.test.js.map +1 -0
- package/dist/node-islands/origin.d.ts +21 -0
- package/dist/node-islands/origin.js +60 -0
- package/dist/node-islands/origin.js.map +1 -0
- package/dist/node-islands/policy.d.ts +49 -0
- package/dist/node-islands/policy.js +130 -0
- package/dist/node-islands/policy.js.map +1 -0
- package/dist/node-islands/report.d.ts +22 -0
- package/dist/node-islands/report.js +326 -0
- package/dist/node-islands/report.js.map +1 -0
- package/dist/node-islands/report.test.d.ts +1 -0
- package/dist/node-islands/report.test.js +228 -0
- package/dist/node-islands/report.test.js.map +1 -0
- package/dist/node-islands/rules.d.ts +20 -0
- package/dist/node-islands/rules.js +91 -0
- package/dist/node-islands/rules.js.map +1 -0
- package/dist/node-islands/scan.d.ts +53 -0
- package/dist/node-islands/scan.js +104 -0
- package/dist/node-islands/scan.js.map +1 -0
- package/dist/node-islands/summary.d.ts +78 -0
- package/dist/node-islands/summary.js +26 -0
- package/dist/node-islands/summary.js.map +1 -0
- package/dist/project-config.d.ts +50 -0
- package/dist/project-config.js +372 -0
- package/dist/project-config.js.map +1 -0
- package/dist/project-config.test.d.ts +1 -0
- package/dist/project-config.test.js +154 -0
- package/dist/project-config.test.js.map +1 -0
- package/dist/wasm/discover.js +6 -31
- package/dist/wasm/discover.js.map +1 -1
- package/package.json +20 -20
- package/surface-manifest.json +20 -35
|
@@ -305,6 +305,21 @@ export declare function checkPreflightTs7(entryPath: string, host: ts.Ts7Host):
|
|
|
305
305
|
diags: ScrDiagnostic[];
|
|
306
306
|
moduleOrder: string[];
|
|
307
307
|
};
|
|
308
|
+
/** The property names of Node's namespace object for the CommonJS module
|
|
309
|
+
* `dep`: the names its lexer detects, CommonJS re-exports included (the
|
|
310
|
+
* rule of the named-import link check), plus `default` and
|
|
311
|
+
* `module.exports`. */
|
|
312
|
+
/** `dep` and every CommonJS module it re-exports, transitively (the modules
|
|
313
|
+
* whose exports its namespace object shows). */
|
|
314
|
+
export declare function cjsReexportedModules(program: ts.Program, dep: ts.SourceFile): ts.SourceFile[];
|
|
315
|
+
export declare function cjsNamespaceExportNames(program: ts.Program, dep: ts.SourceFile): Set<string>;
|
|
316
|
+
/** The export names a CommonJS module assigns inside functions
|
|
317
|
+
* (`exports.current = value` in a function body), or "all" when such code
|
|
318
|
+
* writes a computed name, replaces module.exports or redefines exports
|
|
319
|
+
* through Object.defineProperty. Node's namespace object of the module
|
|
320
|
+
* holds the values the exports had when the module finished evaluating,
|
|
321
|
+
* so it does not see those writes. */
|
|
322
|
+
export declare function cjsExportsAssignedInFunctions(sf: ts.SourceFile): ReadonlySet<string> | "all";
|
|
308
323
|
export declare function esmNamedImportLinkCrash(program: ts.Program, entry: ts.SourceFile): StartupCrash | null;
|
|
309
324
|
export { ambientDtsPath, fallbackDtsPath, isNodeTypesPath, overridesDtsPath } from "./dts-paths.js";
|
|
310
325
|
export { builtinDefaultImportModule, canonicalBuiltinModule, npmBuiltinAliasOf, SUPPORTED_BUILTIN_MODULES, } from "./builtin-modules.js";
|
package/dist/frontend/program.js
CHANGED
|
@@ -49,7 +49,7 @@ import { isPrunedNpmReexport, planNpmStaticReexports } from "./npm-static-prune.
|
|
|
49
49
|
import { npmStaticTypeExportPlan } from "./npm-static-type-exports-host.js";
|
|
50
50
|
import { isNpmStaticSubclassArgument } from "./npm-static-subtyping.js";
|
|
51
51
|
import { npmStaticDeclarationReexports, npmStaticRuntimeClassTargets, parseNpmStaticDeclarationOverloads, parseNpmStaticDeclarationProperties, } from "./npm-static-declaration-syntax.js";
|
|
52
|
-
import { configurePackageShims, isPackageShimFile,
|
|
52
|
+
import { configurePackageShims, isPackageShimFile, isShimmedImport, npmStaticOmitsPackage, } from "./package-shims.js";
|
|
53
53
|
import { provenanceEntryFor, provenancePaths } from "./provenance-registry.js";
|
|
54
54
|
import { cjsLexedExportsOfFile, cjsVisibleNames } from "./cjs-syntax.js";
|
|
55
55
|
import { ambientDtsPath, fallbackDtsPath, isNodeTypesPath, overridesDtsPath, tsgoPath, } from "./dts-paths.js";
|
|
@@ -62,6 +62,7 @@ import { workerTargetPaths } from "./worker-target.js";
|
|
|
62
62
|
import { erasedTypeOnlyImport, typeOnlyNamedImport, typeOnlyReachedFiles, } from "./type-only-imports.js";
|
|
63
63
|
import { moduleSourceCandidates } from "./module-source-candidates.js";
|
|
64
64
|
import { planDeclProjection } from "./decl-projection.js";
|
|
65
|
+
import { reportShapes } from "./shape-inference/index.js";
|
|
65
66
|
import { inferredJsDiagnosticSuppressed } from "./inferred-js-diagnostics.js";
|
|
66
67
|
import { containsJsx, firstJsx, jsxEmitName, jsxEmitPlan, jsxPragmas, lowerJsx, } from "./jsx-source.js";
|
|
67
68
|
const BASE_OPTIONS = {
|
|
@@ -303,33 +304,31 @@ function visitNpmStaticDeclarationClosure(services, entryPath, onSource) {
|
|
|
303
304
|
};
|
|
304
305
|
visit(entryPath);
|
|
305
306
|
}
|
|
306
|
-
|
|
307
|
-
|
|
307
|
+
/** The overloads and properties of the classes a package's declaration
|
|
308
|
+
* closure declares, read from one parse of each declaration file. */
|
|
309
|
+
function npmStaticDeclarationMetadataOf(services, entryPath) {
|
|
310
|
+
const overloads = new Map();
|
|
311
|
+
const properties = new Map();
|
|
308
312
|
visitNpmStaticDeclarationClosure(services, entryPath, (path, source) => {
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
313
|
+
const sourceFile = services.parse(path, source, "ts");
|
|
314
|
+
for (const [className, methods] of parseNpmStaticDeclarationOverloads(sourceFile)) {
|
|
315
|
+
const target = overloads.get(className) ?? new Map();
|
|
316
|
+
overloads.set(className, target);
|
|
312
317
|
for (const [methodName, signatures] of methods) {
|
|
313
318
|
if (!target.has(methodName))
|
|
314
319
|
target.set(methodName, signatures);
|
|
315
320
|
}
|
|
316
321
|
}
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
const classes = new Map();
|
|
322
|
-
visitNpmStaticDeclarationClosure(services, entryPath, (path, source) => {
|
|
323
|
-
for (const [className, properties] of parseNpmStaticDeclarationProperties(services.parse(path, source, "ts"))) {
|
|
324
|
-
const target = classes.get(className) ?? new Map();
|
|
325
|
-
classes.set(className, target);
|
|
326
|
-
for (const [propertyName, type] of properties) {
|
|
322
|
+
for (const [className, fields] of parseNpmStaticDeclarationProperties(sourceFile)) {
|
|
323
|
+
const target = properties.get(className) ?? new Map();
|
|
324
|
+
properties.set(className, target);
|
|
325
|
+
for (const [propertyName, type] of fields) {
|
|
327
326
|
if (!target.has(propertyName))
|
|
328
327
|
target.set(propertyName, type);
|
|
329
328
|
}
|
|
330
329
|
}
|
|
331
330
|
});
|
|
332
|
-
return
|
|
331
|
+
return { overloads, properties };
|
|
333
332
|
}
|
|
334
333
|
/** True when a coverage mapping names one exact bare host module. TypeScript
|
|
335
334
|
* gives `paths` keys containing `*` pattern semantics, so accepting one here
|
|
@@ -808,11 +807,12 @@ export function loadProgram(entryPath, services, opts) {
|
|
|
808
807
|
}
|
|
809
808
|
externalTypes.set(specifier, declarationPath);
|
|
810
809
|
}
|
|
811
|
-
// Packages scriptc implements itself
|
|
812
|
-
// (package-shims.ts) never compile their published
|
|
813
|
-
// named.
|
|
810
|
+
// Packages scriptc implements itself, and packages the project marks
|
|
811
|
+
// never loaded (package-shims.ts), never compile their published
|
|
812
|
+
// JavaScript, even when named. A registry entry's `sourceVersions`
|
|
813
|
+
// (chalk 6) compile from their own source.
|
|
814
814
|
configurePackageShims(entryPath);
|
|
815
|
-
const npmStaticPackages = [...new Set(opts?.npmStatic ?? [])].filter((name) => !
|
|
815
|
+
const npmStaticPackages = [...new Set(opts?.npmStatic ?? [])].filter((name) => !npmStaticOmitsPackage(entryPath, name));
|
|
816
816
|
// Resolve authored declaration entries before enabling the JS-only
|
|
817
817
|
// package resolver. Safe overload metadata binds through the runtime
|
|
818
818
|
// entry to one exact implementation file; it never contributes values
|
|
@@ -827,8 +827,7 @@ export function loadProgram(entryPath, services, opts) {
|
|
|
827
827
|
!/\.d\.(?:ts|mts|cts)$/.test(resolved.typesFile)) {
|
|
828
828
|
continue;
|
|
829
829
|
}
|
|
830
|
-
const overloads =
|
|
831
|
-
const properties = npmStaticDeclarationPropertiesOf(services, resolved.typesFile);
|
|
830
|
+
const { overloads, properties } = npmStaticDeclarationMetadataOf(services, resolved.typesFile);
|
|
832
831
|
const classNames = new Set([...overloads.keys(), ...properties.keys()]);
|
|
833
832
|
if (classNames.size === 0)
|
|
834
833
|
continue;
|
|
@@ -976,6 +975,10 @@ export function loadProgram(entryPath, services, opts) {
|
|
|
976
975
|
};
|
|
977
976
|
try {
|
|
978
977
|
const load = loadProgram7(host, entryPath, externalTypes, npmStaticPackages.length > 0, projector);
|
|
978
|
+
// Shape inference, stage S1: a report only (SCRIPTC_DEBUG_SHAPES).
|
|
979
|
+
const shapes = process.env["SCRIPTC_DEBUG_SHAPES"];
|
|
980
|
+
if (shapes !== undefined && shapes !== "" && shapes !== "0" && npmStaticPackages.length > 0)
|
|
981
|
+
reportShapes(load.program, shapes);
|
|
979
982
|
return {
|
|
980
983
|
...load,
|
|
981
984
|
services,
|
|
@@ -1013,9 +1016,9 @@ export function loadProgram(entryPath, services, opts) {
|
|
|
1013
1016
|
* packages whose declarations the boundary projects from. */
|
|
1014
1017
|
function declBoundaryUserFiles(program, packages) {
|
|
1015
1018
|
const out = [];
|
|
1016
|
-
for (const sf of program.
|
|
1019
|
+
for (const sf of program.getImplementationSourceFiles()) {
|
|
1017
1020
|
const name = sf.fileName.split("\\").join("/");
|
|
1018
|
-
if (
|
|
1021
|
+
if (name.includes("/node_modules/") || !/\.[mc]?tsx?$/.test(name))
|
|
1019
1022
|
continue;
|
|
1020
1023
|
if (name.endsWith(".tsx"))
|
|
1021
1024
|
continue; // JSX files: not projected yet
|
|
@@ -1088,9 +1091,14 @@ function suppressedJsStrictness7(d) {
|
|
|
1088
1091
|
return ts.flattenDiagnosticMessageText(d, "\n").includes("'any'");
|
|
1089
1092
|
}
|
|
1090
1093
|
// The deprecated Buffer(...) call without `new`, which Node's Buffer
|
|
1091
|
-
// function accepts (containers/bytes.ts lowers it).
|
|
1094
|
+
// function accepts (containers/bytes.ts lowers it), and fs.ReadStream(...)
|
|
1095
|
+
// and fs.WriteStream(...), which construct their stream
|
|
1096
|
+
// (builtins/fs-streams.ts).
|
|
1092
1097
|
if (d.code === 2348) {
|
|
1093
|
-
|
|
1098
|
+
const text = ts.flattenDiagnosticMessageText(d, "\n");
|
|
1099
|
+
return (text.includes("'BufferConstructor'") ||
|
|
1100
|
+
text.includes("'typeof ReadStream'") ||
|
|
1101
|
+
text.includes("'typeof WriteStream'"));
|
|
1094
1102
|
}
|
|
1095
1103
|
return false;
|
|
1096
1104
|
}
|
|
@@ -2198,18 +2206,30 @@ export function isCreateRequireBinding7(program, callee) {
|
|
|
2198
2206
|
((decl.parent.flags & ts.NodeFlags.Const) !== 0 ||
|
|
2199
2207
|
stableCreateRequireBindingReason7(program, decl) === null));
|
|
2200
2208
|
}
|
|
2201
|
-
/**
|
|
2202
|
-
*
|
|
2203
|
-
*
|
|
2204
|
-
|
|
2209
|
+
/** How a use of a createRequire loader lowers:
|
|
2210
|
+
* - "static": a literal call or a literal resolution query, which erases
|
|
2211
|
+
* the loader value.
|
|
2212
|
+
* - "deferred": a call with a computed specifier or another argument shape,
|
|
2213
|
+
* or `resolve` / `resolve.paths` read as a value, inside the try block
|
|
2214
|
+
* of a try statement in the same function. The call throws a runtime
|
|
2215
|
+
* fence, and the resolve value is a function that throws one when called
|
|
2216
|
+
* (module-resolution.ts), so the statement's catch clause handles them
|
|
2217
|
+
* (packages that look for optional native addons).
|
|
2218
|
+
* - "computed": the same shapes outside a try block.
|
|
2219
|
+
* - "escaping": the loader itself as a value, writes, optional calls, and
|
|
2220
|
+
* other members. */
|
|
2221
|
+
const COMPUTED_CREATE_REQUIRE_REASON = "its createRequire result is used with a computed specifier, or its resolve as a value, outside a try block (static requires need literal specifiers)";
|
|
2222
|
+
function createRequireUse7(expr) {
|
|
2205
2223
|
let use = expr;
|
|
2206
2224
|
while (ts.isParenthesizedExpression(use.parent))
|
|
2207
2225
|
use = use.parent;
|
|
2226
|
+
let member = false;
|
|
2208
2227
|
if (ts.isPropertyAccessExpression(use.parent) &&
|
|
2209
2228
|
use.parent.expression === use &&
|
|
2210
2229
|
use.parent.name.text === "resolve" &&
|
|
2211
2230
|
!use.parent.questionDotToken) {
|
|
2212
2231
|
use = use.parent;
|
|
2232
|
+
member = true;
|
|
2213
2233
|
if (ts.isPropertyAccessExpression(use.parent) &&
|
|
2214
2234
|
use.parent.expression === use &&
|
|
2215
2235
|
use.parent.name.text === "paths" &&
|
|
@@ -2217,11 +2237,37 @@ function staticCreateRequireUse7(expr) {
|
|
|
2217
2237
|
use = use.parent;
|
|
2218
2238
|
}
|
|
2219
2239
|
const call = use.parent;
|
|
2220
|
-
|
|
2221
|
-
call.
|
|
2222
|
-
|
|
2223
|
-
call.arguments.nodes.length === 1 &&
|
|
2224
|
-
|
|
2240
|
+
if (ts.isCallExpression(call) && call.expression === use) {
|
|
2241
|
+
if (call.questionDotToken)
|
|
2242
|
+
return "escaping";
|
|
2243
|
+
if (call.arguments.nodes.length === 1 && ts.isStringLiteralLike(call.arguments.nodes[0]))
|
|
2244
|
+
return "static";
|
|
2245
|
+
}
|
|
2246
|
+
else if (!member || isAssignmentTarget7(use)) {
|
|
2247
|
+
return "escaping";
|
|
2248
|
+
}
|
|
2249
|
+
return insideTryBlock7(use) ? "deferred" : "computed";
|
|
2250
|
+
}
|
|
2251
|
+
function isAssignmentTarget7(node) {
|
|
2252
|
+
const parent = node.parent;
|
|
2253
|
+
return (ts.isBinaryExpression(parent) &&
|
|
2254
|
+
parent.left === node &&
|
|
2255
|
+
parent.operatorToken.kind >= ts.SyntaxKind.FirstAssignment &&
|
|
2256
|
+
parent.operatorToken.kind <= ts.SyntaxKind.LastAssignment);
|
|
2257
|
+
}
|
|
2258
|
+
/** True when `node` is inside the try block of a try statement in the same
|
|
2259
|
+
* function (a catch clause or finally block does not count). A class field
|
|
2260
|
+
* initializer runs when the class is instantiated, so it is a boundary too. */
|
|
2261
|
+
function insideTryBlock7(node) {
|
|
2262
|
+
for (let child = node, parent = node.parent; parent; child = parent, parent = parent.parent) {
|
|
2263
|
+
if (ts.isTryStatement(parent) && parent.tryBlock === child)
|
|
2264
|
+
return true;
|
|
2265
|
+
if (ts.isFunctionLike(parent) ||
|
|
2266
|
+
ts.isClassStaticBlockDeclaration(parent) ||
|
|
2267
|
+
ts.isPropertyDeclaration(parent))
|
|
2268
|
+
return false;
|
|
2269
|
+
}
|
|
2270
|
+
return false;
|
|
2225
2271
|
}
|
|
2226
2272
|
function stableCreateRequireBindingReason7(program, decl) {
|
|
2227
2273
|
const cache = program.analysis.createRequireReasons;
|
|
@@ -2252,9 +2298,13 @@ function stableCreateRequireBindingReason7(program, decl) {
|
|
|
2252
2298
|
: checker.getSymbolAtLocation(ref);
|
|
2253
2299
|
if (target && (target.flags & ts.SymbolFlags.Alias) !== 0)
|
|
2254
2300
|
target = checker.getAliasedSymbol(target);
|
|
2255
|
-
if (target
|
|
2256
|
-
|
|
2257
|
-
|
|
2301
|
+
if (target !== symbol)
|
|
2302
|
+
continue;
|
|
2303
|
+
const use = createRequireUse7(ref);
|
|
2304
|
+
if (use === "computed")
|
|
2305
|
+
return COMPUTED_CREATE_REQUIRE_REASON;
|
|
2306
|
+
if (use === "escaping")
|
|
2307
|
+
return "its createRequire binding is reassigned or escapes";
|
|
2258
2308
|
}
|
|
2259
2309
|
const preceding = stmt.declarationList.declarations.nodes.slice(0, stmt.declarationList.declarations.nodes.indexOf(decl));
|
|
2260
2310
|
if (bindingEarlyUse7(program, sf, sf.statements.nodes.indexOf(stmt), decl, preceding) !== null) {
|
|
@@ -2308,10 +2358,11 @@ function npmStaticModuleImportReason7(program, stmt) {
|
|
|
2308
2358
|
checker.prefetchSymbolNodesExact(identifierOccurrences7(sf, specifier.name.text));
|
|
2309
2359
|
let reason = null;
|
|
2310
2360
|
const checkUse = (expr) => {
|
|
2311
|
-
|
|
2312
|
-
|
|
2313
|
-
|
|
2314
|
-
|
|
2361
|
+
const use = createRequireUse7(expr);
|
|
2362
|
+
if (use === "computed")
|
|
2363
|
+
reason = COMPUTED_CREATE_REQUIRE_REASON;
|
|
2364
|
+
else if (use === "escaping")
|
|
2365
|
+
reason = "its createRequire result escapes (static requires need literal specifiers)";
|
|
2315
2366
|
};
|
|
2316
2367
|
ts.walkPreorder(sf, (node) => {
|
|
2317
2368
|
if (reason ||
|
|
@@ -3489,9 +3540,13 @@ function exactCycleRefusal7(program, comp, lineOf) {
|
|
|
3489
3540
|
if (ts.isExportAssignment(stmt) && !stmt.isExportEquals) {
|
|
3490
3541
|
return `the default export expression at ${lineOf(stmt)} has no initialization state inside the cycle`;
|
|
3491
3542
|
}
|
|
3543
|
+
// `export * from` binds each name to the declaring member's own
|
|
3544
|
+
// binding, like a named re-export, so only `export * as ns` (a
|
|
3545
|
+
// namespace object of a member) has state of its own.
|
|
3492
3546
|
if (ts.isExportDeclaration(stmt) &&
|
|
3493
3547
|
!stmt.isTypeOnly &&
|
|
3494
|
-
|
|
3548
|
+
stmt.exportClause !== undefined &&
|
|
3549
|
+
ts.isNamespaceExport(stmt.exportClause)) {
|
|
3495
3550
|
const dep = targetOf(stmt);
|
|
3496
3551
|
if (dep !== null && members.has(dep)) {
|
|
3497
3552
|
return `the namespace re-export at ${lineOf(stmt)} names a module of the cycle`;
|
|
@@ -4876,6 +4931,15 @@ function preflight7(load) {
|
|
|
4876
4931
|
return false;
|
|
4877
4932
|
return new RegExp(`\\btypeof\\s*\\(?\\s*${name.replace(/\$/g, "\\$")}(?![\\w$])`).test(sf.text);
|
|
4878
4933
|
};
|
|
4934
|
+
// A `return` at the top level of a CommonJS module (TS1108): Node runs
|
|
4935
|
+
// the module as a function body, so the return ends the module's
|
|
4936
|
+
// evaluation. ES modules and TypeScript keep the error.
|
|
4937
|
+
const cjsTopLevelReturnSuppressed = (p, d) => {
|
|
4938
|
+
if (d.code !== 1108 || d.fileName === undefined || !isJsSourceFileName(d.fileName))
|
|
4939
|
+
return false;
|
|
4940
|
+
const sf = p.getSourceFile(d.fileName);
|
|
4941
|
+
return sf !== undefined && isCjsJsFile7(sf, p);
|
|
4942
|
+
};
|
|
4879
4943
|
const workspaceImplicitAnySuppressed = (p, d) => {
|
|
4880
4944
|
if (d.code !== 7016 || d.fileName === undefined || d.pos === undefined || d.end === undefined)
|
|
4881
4945
|
return false;
|
|
@@ -4923,6 +4987,7 @@ function preflight7(load) {
|
|
|
4923
4987
|
!isNpmStaticSubclassArgument(p, d) &&
|
|
4924
4988
|
!workspaceImplicitAnySuppressed(p, d) &&
|
|
4925
4989
|
!typeofTestedNameSuppressed(p, d) &&
|
|
4990
|
+
!cjsTopLevelReturnSuppressed(p, d) &&
|
|
4926
4991
|
!jsdocTypeSuppressed(p, d, commentDup));
|
|
4927
4992
|
};
|
|
4928
4993
|
// The tsc gate, with a second chance: the LOWERING world's checker
|
|
@@ -5366,9 +5431,13 @@ function preflight7(load) {
|
|
|
5366
5431
|
// to Node's no-op, the module still evaluates through its
|
|
5367
5432
|
// ordinary init edge, and no member is ever read through the
|
|
5368
5433
|
// lexer facade (self-imports of a CJS module included — the
|
|
5369
|
-
// partially-built exports are never observed).
|
|
5370
|
-
//
|
|
5371
|
-
|
|
5434
|
+
// partially-built exports are never observed). In JavaScript
|
|
5435
|
+
// sources every use passes here: member reads lower through the
|
|
5436
|
+
// names Node's lexer detects, and the other reads refuse at
|
|
5437
|
+
// their site (lower-namespaces.ts, cjsNamespaceImportDep). Any
|
|
5438
|
+
// OTHER use in TypeScript keeps the fence.
|
|
5439
|
+
if (!isJsSourceFileName(sf.fileName) &&
|
|
5440
|
+
!nsBindingUsesAreBareStatements7(program, sf, clause.namedBindings.name)) {
|
|
5372
5441
|
diags.push(unsupportedDiag("SC1013", locOf7(clause.namedBindings), "namespace imports of CommonJS modules"));
|
|
5373
5442
|
}
|
|
5374
5443
|
}
|
|
@@ -5759,6 +5828,111 @@ function preflight7(load) {
|
|
|
5759
5828
|
moduleEdges: edges,
|
|
5760
5829
|
};
|
|
5761
5830
|
}
|
|
5831
|
+
/* ── the CJS named-import link check ─────────────────────────────────────
|
|
5832
|
+
* Node builds a CommonJS module's ESM facade from its LEXER (cjs-lexer.ts
|
|
5833
|
+
* mirrors it), never from execution — so a named import the checker binds
|
|
5834
|
+
* happily can still fail Node's instantiate phase with a SyntaxError,
|
|
5835
|
+
* thrown before ANY module in the graph evaluates. The checker's word is
|
|
5836
|
+
* NOT Node's word exactly here, and shipping the checker's answer would
|
|
5837
|
+
* diverge from Node without a diagnostic (`module.exports = { a: 7 }` served `a` where
|
|
5838
|
+
* Node refuses the program). This walk asks Node's question at compile
|
|
5839
|
+
* time, in Node's exact ORDER, and answers with Node's exact message. */
|
|
5840
|
+
/** The CommonJS program file a re-export (`module.exports = require(spec)`)
|
|
5841
|
+
* of `from` resolves to, or null: reexport targets union in only when they
|
|
5842
|
+
* resolve to CommonJS program files (Node's cjsPreparseModuleExports rule). */
|
|
5843
|
+
function cjsReexportDep7(program) {
|
|
5844
|
+
return (from, spec) => {
|
|
5845
|
+
const dep = resolveImport7(program, from, spec, "require") ??
|
|
5846
|
+
npmStaticDepSf7(program, from, spec, "require");
|
|
5847
|
+
return dep !== null && isCjsJsFile7(dep, program) ? dep : null;
|
|
5848
|
+
};
|
|
5849
|
+
}
|
|
5850
|
+
/** Node's lexer analysis of a CommonJS file. A bundler rewrite spells some
|
|
5851
|
+
* lexer-visible names as accessors. */
|
|
5852
|
+
function lexWithAccessorNames(sf) {
|
|
5853
|
+
const lexed = cjsLexedExportsOfFile(sf);
|
|
5854
|
+
for (const name of npmStaticLexerVisibleNames(sf.fileName))
|
|
5855
|
+
lexed.exports.add(name);
|
|
5856
|
+
return lexed;
|
|
5857
|
+
}
|
|
5858
|
+
/** The property names of Node's namespace object for the CommonJS module
|
|
5859
|
+
* `dep`: the names its lexer detects, CommonJS re-exports included (the
|
|
5860
|
+
* rule of the named-import link check), plus `default` and
|
|
5861
|
+
* `module.exports`. */
|
|
5862
|
+
/** `dep` and every CommonJS module it re-exports, transitively (the modules
|
|
5863
|
+
* whose exports its namespace object shows). */
|
|
5864
|
+
export function cjsReexportedModules(program, dep) {
|
|
5865
|
+
const resolveDep = cjsReexportDep7(program);
|
|
5866
|
+
const seen = new Set([dep]);
|
|
5867
|
+
const order = [dep];
|
|
5868
|
+
for (let i = 0; i < order.length; i++) {
|
|
5869
|
+
const mod = order[i];
|
|
5870
|
+
for (const spec of lexWithAccessorNames(mod).reexports) {
|
|
5871
|
+
const next = resolveDep(mod, spec);
|
|
5872
|
+
if (next !== null && !seen.has(next)) {
|
|
5873
|
+
seen.add(next);
|
|
5874
|
+
order.push(next);
|
|
5875
|
+
}
|
|
5876
|
+
}
|
|
5877
|
+
}
|
|
5878
|
+
return order;
|
|
5879
|
+
}
|
|
5880
|
+
export function cjsNamespaceExportNames(program, dep) {
|
|
5881
|
+
const names = cjsVisibleNames(dep, lexWithAccessorNames, cjsReexportDep7(program), new Map());
|
|
5882
|
+
return new Set([...names, "default", "module.exports"]);
|
|
5883
|
+
}
|
|
5884
|
+
/** The export names a CommonJS module assigns inside functions
|
|
5885
|
+
* (`exports.current = value` in a function body), or "all" when such code
|
|
5886
|
+
* writes a computed name, replaces module.exports or redefines exports
|
|
5887
|
+
* through Object.defineProperty. Node's namespace object of the module
|
|
5888
|
+
* holds the values the exports had when the module finished evaluating,
|
|
5889
|
+
* so it does not see those writes. */
|
|
5890
|
+
export function cjsExportsAssignedInFunctions(sf) {
|
|
5891
|
+
const names = new Set();
|
|
5892
|
+
let all = false;
|
|
5893
|
+
const exportsObject = (e) => (ts.isIdentifier(e) && e.text === "exports") || isModuleExportsAccess(e);
|
|
5894
|
+
const target = (e) => {
|
|
5895
|
+
while (ts.isParenthesizedExpression(e))
|
|
5896
|
+
e = e.expression;
|
|
5897
|
+
if (isModuleExportsAccess(e))
|
|
5898
|
+
all = true;
|
|
5899
|
+
else if (ts.isPropertyAccessExpression(e) && exportsObject(e.expression))
|
|
5900
|
+
names.add(e.name.text);
|
|
5901
|
+
else if (ts.isElementAccessExpression(e) && exportsObject(e.expression)) {
|
|
5902
|
+
if (ts.isStringLiteralLike(e.argumentExpression))
|
|
5903
|
+
names.add(e.argumentExpression.text);
|
|
5904
|
+
else
|
|
5905
|
+
all = true;
|
|
5906
|
+
}
|
|
5907
|
+
};
|
|
5908
|
+
const visit = (node, inFunction) => {
|
|
5909
|
+
if (all)
|
|
5910
|
+
return;
|
|
5911
|
+
const nested = inFunction || ts.isFunctionLike(node);
|
|
5912
|
+
if (nested) {
|
|
5913
|
+
if (ts.isBinaryExpression(node) &&
|
|
5914
|
+
node.operatorToken.kind >= ts.SyntaxKind.FirstAssignment &&
|
|
5915
|
+
node.operatorToken.kind <= ts.SyntaxKind.LastAssignment)
|
|
5916
|
+
target(node.left);
|
|
5917
|
+
else if ((ts.isPrefixUnaryExpression(node) || ts.isPostfixUnaryExpression(node)) &&
|
|
5918
|
+
(node.operator === ts.SyntaxKind.PlusPlusToken ||
|
|
5919
|
+
node.operator === ts.SyntaxKind.MinusMinusToken))
|
|
5920
|
+
target(node.operand);
|
|
5921
|
+
else if (ts.isDeleteExpression(node))
|
|
5922
|
+
target(node.expression);
|
|
5923
|
+
else if (ts.isCallExpression(node) &&
|
|
5924
|
+
ts.isPropertyAccessExpression(node.expression) &&
|
|
5925
|
+
ts.isIdentifier(node.expression.expression) &&
|
|
5926
|
+
node.expression.expression.text === "Object" &&
|
|
5927
|
+
node.arguments.nodes[0] !== undefined &&
|
|
5928
|
+
exportsObject(node.arguments.nodes[0]))
|
|
5929
|
+
all = true;
|
|
5930
|
+
}
|
|
5931
|
+
ts.forEachChild(node, (child) => visit(child, nested));
|
|
5932
|
+
};
|
|
5933
|
+
visit(sf, false);
|
|
5934
|
+
return all ? "all" : names;
|
|
5935
|
+
}
|
|
5762
5936
|
/** Walks the entry's ESM instantiate graph exactly as V8 does — children
|
|
5763
5937
|
* in request order, each module's own imports checked AFTER its children
|
|
5764
5938
|
* (postorder), regular imports sorted by LOCAL name (code units), then
|
|
@@ -5784,25 +5958,14 @@ function cjsNamedImportLinkCheck(program, entry, moduleOrder, diags) {
|
|
|
5784
5958
|
const npmStatic = npmStaticDepSf7(program, from, spec);
|
|
5785
5959
|
return npmStatic;
|
|
5786
5960
|
};
|
|
5787
|
-
|
|
5788
|
-
// files (Node's cjsPreparseModuleExports rule).
|
|
5789
|
-
const resolveCjsDep = (from, spec) => {
|
|
5790
|
-
const dep = resolveImport7(program, from, spec, "require") ??
|
|
5791
|
-
npmStaticDepSf7(program, from, spec, "require");
|
|
5792
|
-
return dep !== null && isCjsJsFile7(dep, program) ? dep : null;
|
|
5793
|
-
};
|
|
5794
|
-
// A bundler rewrite spells some lexer-visible names as accessors.
|
|
5795
|
-
const lexWithAccessorNames = (sf) => {
|
|
5796
|
-
const lexed = cjsLexedExportsOfFile(sf);
|
|
5797
|
-
for (const name of npmStaticLexerVisibleNames(sf.fileName))
|
|
5798
|
-
lexed.exports.add(name);
|
|
5799
|
-
return lexed;
|
|
5800
|
-
};
|
|
5961
|
+
const resolveCjsDep = cjsReexportDep7(program);
|
|
5801
5962
|
const visible = (dep, name) =>
|
|
5802
|
-
// `default`
|
|
5803
|
-
// The program already owns native source ASTs;
|
|
5804
|
-
// starting another syntax session or reparsing
|
|
5963
|
+
// `default` and `module.exports` are the module.exports binding itself
|
|
5964
|
+
// — always provided. The program already owns native source ASTs;
|
|
5965
|
+
// reuse them without starting another syntax session or reparsing
|
|
5966
|
+
// their source text.
|
|
5805
5967
|
name === "default" ||
|
|
5968
|
+
name === "module.exports" ||
|
|
5806
5969
|
cjsVisibleNames(dep, lexWithAccessorNames, resolveCjsDep, lexMemo).has(name);
|
|
5807
5970
|
/** The statement's resolved LOCAL CommonJS dependency, when it is an
|
|
5808
5971
|
* import/re-export from one. */
|