@scriptc/compiler 0.1.7 → 0.2.1
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 +98 -39
- package/ambient/scriptc-overrides.d.ts +10 -6
- package/ambient/scriptc.d.ts +15 -0
- package/dist/backend/build-cache.d.ts +1 -3
- package/dist/backend/build-cache.js +3 -22
- package/dist/backend/build-cache.js.map +1 -1
- package/dist/backend/cache-root.d.ts +3 -0
- package/dist/backend/cache-root.js +23 -0
- package/dist/backend/cache-root.js.map +1 -0
- package/dist/backend/cycle-analysis.d.ts +15 -0
- package/dist/backend/cycle-analysis.js +108 -0
- package/dist/backend/cycle-analysis.js.map +1 -0
- package/dist/backend/cycle-analysis.test.js +124 -0
- package/dist/backend/cycle-analysis.test.js.map +1 -0
- package/dist/backend/executable-features.d.ts +4 -0
- package/dist/backend/executable-features.js +42 -0
- package/dist/backend/executable-features.js.map +1 -0
- package/dist/backend/external-c.d.ts +5 -27
- package/dist/backend/external-c.js +5 -40
- package/dist/backend/external-c.js.map +1 -1
- package/dist/backend/ffi-callbacks.d.ts +2 -3
- package/dist/backend/ffi-callbacks.js +2 -3
- package/dist/backend/ffi-callbacks.js.map +1 -1
- package/dist/backend/library-identity-markers.d.ts +4 -9
- package/dist/backend/library-identity-markers.js +11 -49
- package/dist/backend/library-identity-markers.js.map +1 -1
- package/dist/backend/library-pack.d.ts +5 -0
- package/dist/backend/library-pack.js +123 -0
- package/dist/backend/library-pack.js.map +1 -0
- package/dist/backend/link-plan-core.d.ts +20 -0
- package/dist/backend/link-plan-core.js +18 -0
- package/dist/backend/link-plan-core.js.map +1 -0
- package/dist/backend/link-plan.d.ts +1 -1
- package/dist/backend/link-plan.js +16 -17
- package/dist/backend/link-plan.js.map +1 -1
- package/dist/backend/link-trace.d.ts +2 -0
- package/dist/backend/link-trace.js +24 -0
- package/dist/backend/link-trace.js.map +1 -0
- package/dist/backend/linker.js +1 -1
- package/dist/backend/linker.js.map +1 -1
- package/dist/backend/literals.d.ts +9 -0
- package/dist/backend/literals.js +35 -0
- package/dist/backend/literals.js.map +1 -0
- package/dist/backend/literals.test.d.ts +1 -0
- package/dist/backend/literals.test.js +53 -0
- package/dist/backend/literals.test.js.map +1 -0
- package/dist/backend/llvm/blocks.d.ts +2 -0
- package/dist/backend/llvm/blocks.js +9 -4
- package/dist/backend/llvm/blocks.js.map +1 -1
- package/dist/backend/llvm/blocks.test.d.ts +1 -0
- package/dist/backend/llvm/blocks.test.js +91 -0
- package/dist/backend/llvm/blocks.test.js.map +1 -0
- package/dist/backend/llvm/classes.d.ts +14 -8
- package/dist/backend/llvm/classes.js +88 -30
- package/dist/backend/llvm/classes.js.map +1 -1
- package/dist/backend/llvm/common.d.ts +5 -1
- package/dist/backend/llvm/common.js +45 -4
- package/dist/backend/llvm/common.js.map +1 -1
- package/dist/backend/llvm/debug-info.js +2 -7
- package/dist/backend/llvm/debug-info.js.map +1 -1
- package/dist/backend/llvm/debug-info.test.d.ts +1 -0
- package/dist/backend/llvm/debug-info.test.js +110 -0
- package/dist/backend/llvm/debug-info.test.js.map +1 -0
- package/dist/backend/llvm/dyn.d.ts +21 -2
- package/dist/backend/llvm/dyn.js +647 -251
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emitter.d.ts +596 -1
- package/dist/backend/llvm/emitter.js +769 -425
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/emitter.test.d.ts +1 -0
- package/dist/backend/llvm/emitter.test.js +179 -0
- package/dist/backend/llvm/emitter.test.js.map +1 -0
- package/dist/backend/llvm/expr-async.js +23 -14
- package/dist/backend/llvm/expr-async.js.map +1 -1
- package/dist/backend/llvm/expr-bytes.d.ts +2 -2
- package/dist/backend/llvm/expr-bytes.js +60 -31
- package/dist/backend/llvm/expr-bytes.js.map +1 -1
- package/dist/backend/llvm/expr-callbacks.d.ts +1 -1
- package/dist/backend/llvm/expr-callbacks.js +25 -22
- package/dist/backend/llvm/expr-callbacks.js.map +1 -1
- package/dist/backend/llvm/expr-calls.js +136 -35
- package/dist/backend/llvm/expr-calls.js.map +1 -1
- package/dist/backend/llvm/expr-containers.d.ts +1 -1
- package/dist/backend/llvm/expr-containers.js +43 -14
- package/dist/backend/llvm/expr-containers.js.map +1 -1
- package/dist/backend/llvm/expr-context.d.ts +5 -260
- package/dist/backend/llvm/expr-control.js +10 -6
- package/dist/backend/llvm/expr-control.js.map +1 -1
- package/dist/backend/llvm/expr-dispatch.d.ts +1 -1
- package/dist/backend/llvm/expr-dispatch.js +2 -0
- package/dist/backend/llvm/expr-dispatch.js.map +1 -1
- package/dist/backend/llvm/expr-dynamic.js +78 -81
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-island.d.ts +1 -1
- package/dist/backend/llvm/expr-island.js +11 -7
- package/dist/backend/llvm/expr-island.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.d.ts +1 -1
- package/dist/backend/llvm/expr-primitives.js +62 -31
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.test.js +1 -1
- package/dist/backend/llvm/expr-records.d.ts +5 -1
- package/dist/backend/llvm/expr-records.js +54 -7
- package/dist/backend/llvm/expr-records.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.d.ts +4 -4
- package/dist/backend/llvm/expr-stream-bridges.js +220 -131
- package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.test.d.ts +1 -0
- package/dist/backend/llvm/expr-stream-bridges.test.js +55 -0
- package/dist/backend/llvm/expr-stream-bridges.test.js.map +1 -0
- package/dist/backend/llvm/expr-stream-callbacks.d.ts +1 -1
- package/dist/backend/llvm/expr-stream-callbacks.js +12 -12
- package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
- package/dist/backend/llvm/layouts.d.ts +19 -0
- package/dist/backend/llvm/layouts.js +12 -0
- package/dist/backend/llvm/layouts.js.map +1 -0
- package/dist/backend/llvm/lib-abi.d.ts +19 -0
- package/dist/backend/llvm/lib-abi.js +82 -0
- package/dist/backend/llvm/lib-abi.js.map +1 -0
- package/dist/backend/llvm/lib-connect.d.ts +2 -0
- package/dist/backend/llvm/lib-connect.js +51 -0
- package/dist/backend/llvm/lib-connect.js.map +1 -0
- package/dist/backend/llvm/lib-datagram.d.ts +2 -0
- package/dist/backend/llvm/lib-datagram.js +135 -0
- package/dist/backend/llvm/lib-datagram.js.map +1 -0
- package/dist/backend/llvm/lib-dispatch.js +50 -6
- package/dist/backend/llvm/lib-dispatch.js.map +1 -1
- package/dist/backend/llvm/lib-filesystem.js +30 -18
- package/dist/backend/llvm/lib-filesystem.js.map +1 -1
- package/dist/backend/llvm/lib-http2.d.ts +2 -0
- package/dist/backend/llvm/lib-http2.js +215 -0
- package/dist/backend/llvm/lib-http2.js.map +1 -0
- package/dist/backend/llvm/lib-lookup.d.ts +2 -0
- package/dist/backend/llvm/lib-lookup.js +39 -0
- package/dist/backend/llvm/lib-lookup.js.map +1 -0
- package/dist/backend/llvm/lib-network.js +25 -2
- package/dist/backend/llvm/lib-network.js.map +1 -1
- package/dist/backend/llvm/lib-process.js +44 -19
- package/dist/backend/llvm/lib-process.js.map +1 -1
- package/dist/backend/llvm/lib-shared.js +162 -3
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/lib-stream.js +3 -2
- package/dist/backend/llvm/lib-stream.js.map +1 -1
- package/dist/backend/llvm/lib-test.d.ts +2 -0
- package/dist/backend/llvm/lib-test.js +34 -0
- package/dist/backend/llvm/lib-test.js.map +1 -0
- package/dist/backend/llvm/lib-tls.d.ts +2 -0
- package/dist/backend/llvm/lib-tls.js +82 -0
- package/dist/backend/llvm/lib-tls.js.map +1 -0
- package/dist/backend/llvm/shapes.d.ts +10 -9
- package/dist/backend/llvm/shapes.js +42 -131
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/llvm/unsupported.d.ts +1 -0
- package/dist/backend/llvm/unsupported.js +1 -2
- package/dist/backend/llvm/unsupported.js.map +1 -1
- package/dist/backend/llvm/walkers.js +1 -7
- package/dist/backend/llvm/walkers.js.map +1 -1
- package/dist/backend/mangle.d.ts +2 -2
- package/dist/backend/mangle.js +16 -5
- package/dist/backend/mangle.js.map +1 -1
- package/dist/backend/{c/may-throw.d.ts → may-throw.d.ts} +1 -1
- package/dist/backend/{c/may-throw.js → may-throw.js} +51 -46
- package/dist/backend/may-throw.js.map +1 -0
- package/dist/backend/may-throw.test.d.ts +1 -0
- package/dist/backend/may-throw.test.js +58 -0
- package/dist/backend/may-throw.test.js.map +1 -0
- package/dist/backend/native-codegen-core.d.ts +22 -0
- package/dist/backend/native-codegen-core.js +44 -0
- package/dist/backend/native-codegen-core.js.map +1 -0
- package/dist/backend/native-codegen.d.ts +3 -19
- package/dist/backend/native-codegen.js +5 -44
- package/dist/backend/native-codegen.js.map +1 -1
- package/dist/backend/native-codegen.test.js +2 -2
- package/dist/backend/native-codegen.test.js.map +1 -1
- package/dist/backend/native-link-info-core.d.ts +94 -0
- package/dist/backend/native-link-info-core.js +62 -0
- package/dist/backend/native-link-info-core.js.map +1 -0
- package/dist/backend/native-link-info.d.ts +3 -88
- package/dist/backend/native-link-info.js +12 -243
- package/dist/backend/native-link-info.js.map +1 -1
- package/dist/backend/native-link-info.test.js +41 -146
- package/dist/backend/native-link-info.test.js.map +1 -1
- package/dist/backend/native-toolchain.d.ts +12 -30
- package/dist/backend/native-toolchain.js +83 -233
- package/dist/backend/native-toolchain.js.map +1 -1
- package/dist/backend/native-toolchain.test.js +77 -5
- package/dist/backend/native-toolchain.test.js.map +1 -1
- package/dist/backend/native-tools.d.ts +24 -0
- package/dist/backend/native-tools.js +33 -0
- package/dist/backend/native-tools.js.map +1 -0
- package/dist/backend/object-localize.js +19 -8
- package/dist/backend/object-localize.js.map +1 -1
- package/dist/backend/object-localize.test.js +22 -0
- package/dist/backend/object-localize.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 +101 -0
- package/dist/backend/runtime-pack-core.js +172 -0
- package/dist/backend/runtime-pack-core.js.map +1 -0
- package/dist/backend/runtime-pack-native.d.ts +21 -0
- package/dist/backend/runtime-pack-native.js +73 -0
- package/dist/backend/runtime-pack-native.js.map +1 -0
- package/dist/backend/runtime-pack-targets.test.js +1 -1
- package/dist/backend/runtime-pack.d.ts +3 -83
- package/dist/backend/runtime-pack.js +8 -151
- package/dist/backend/runtime-pack.js.map +1 -1
- package/dist/backend/runtime-pack.test.js +24 -1
- package/dist/backend/runtime-pack.test.js.map +1 -1
- package/dist/backend/target-diagnostics.d.ts +22 -0
- package/dist/backend/target-diagnostics.js +108 -0
- package/dist/backend/target-diagnostics.js.map +1 -0
- package/dist/backend/target-platform.d.ts +15 -0
- package/dist/backend/target-platform.js +72 -0
- package/dist/backend/target-platform.js.map +1 -0
- package/dist/backend/targets.d.ts +13 -4
- package/dist/backend/targets.js +103 -34
- package/dist/backend/targets.js.map +1 -1
- package/dist/backend/targets.test.js +72 -4
- package/dist/backend/targets.test.js.map +1 -1
- package/dist/backend/toolchain-environment.d.ts +6 -0
- package/dist/backend/toolchain-environment.js +99 -0
- package/dist/backend/toolchain-environment.js.map +1 -0
- package/dist/backend/vendor-archives.d.ts +1 -9
- package/dist/backend/vendor-archives.js +2 -9
- package/dist/backend/vendor-archives.js.map +1 -1
- package/dist/backend/vendor-inputs.d.ts +9 -0
- package/dist/backend/vendor-inputs.js +10 -0
- package/dist/backend/vendor-inputs.js.map +1 -0
- package/dist/backend/warm-cache.d.ts +3 -0
- package/dist/backend/warm-cache.js +41 -0
- package/dist/backend/warm-cache.js.map +1 -0
- package/dist/cli/command.d.ts +3 -0
- package/dist/cli/command.js +328 -0
- package/dist/cli/command.js.map +1 -0
- package/dist/cli/host.d.ts +24 -0
- package/dist/cli/host.js +2 -0
- package/dist/cli/host.js.map +1 -0
- package/dist/cli/output-options.d.ts +26 -0
- package/dist/cli/output-options.js +60 -0
- package/dist/cli/output-options.js.map +1 -0
- package/dist/cli/paths.d.ts +12 -0
- package/dist/cli/paths.js +42 -0
- package/dist/cli/paths.js.map +1 -0
- package/dist/cli/usage.d.ts +74 -0
- package/dist/cli/usage.js +86 -0
- package/dist/cli/usage.js.map +1 -0
- package/dist/cli/wasi-paths.d.ts +8 -0
- package/dist/cli/wasi-paths.js +41 -0
- package/dist/cli/wasi-paths.js.map +1 -0
- package/dist/cli/wasi-runner.d.ts +2 -0
- package/dist/cli/wasi-runner.js +28 -0
- package/dist/cli/wasi-runner.js.map +1 -0
- package/dist/compat/fetch-profile.js +37 -7
- package/dist/compat/fetch-profile.js.map +1 -1
- package/dist/compile-types.d.ts +162 -0
- package/dist/compile-types.js +2 -0
- package/dist/compile-types.js.map +1 -0
- package/dist/coverage/report.js +11 -5
- package/dist/coverage/report.js.map +1 -1
- package/dist/coverage/surface-manifest.js +5 -2
- package/dist/coverage/surface-manifest.js.map +1 -1
- package/dist/diagnostics/diagnostic.js +5 -10
- package/dist/diagnostics/diagnostic.js.map +1 -1
- package/dist/executable/executable-cache.d.ts +3 -4
- package/dist/executable/executable-cache.js +5 -6
- package/dist/executable/executable-cache.js.map +1 -1
- package/dist/executable/executable-cache.test.js +16 -17
- package/dist/executable/executable-cache.test.js.map +1 -1
- package/dist/executable/prepare.d.ts +14 -0
- package/dist/executable/prepare.js +66 -0
- package/dist/executable/prepare.js.map +1 -0
- package/dist/ffi/ffi-manifest.d.ts +11 -4
- package/dist/ffi/ffi-manifest.js +170 -58
- package/dist/ffi/ffi-manifest.js.map +1 -1
- package/dist/ffi/ffi-manifest.test.d.ts +1 -0
- package/dist/ffi/ffi-manifest.test.js +111 -0
- package/dist/ffi/ffi-manifest.test.js.map +1 -0
- package/dist/format-integer.d.ts +3 -0
- package/dist/format-integer.js +14 -0
- package/dist/format-integer.js.map +1 -0
- package/dist/frontend/analysis.d.ts +5 -0
- package/dist/frontend/analysis.js +88 -0
- package/dist/frontend/analysis.js.map +1 -0
- package/dist/frontend/arguments-usage.d.ts +1 -3
- package/dist/frontend/arguments-usage.js.map +1 -1
- package/dist/frontend/builtin-modules.d.ts +1 -1
- package/dist/frontend/builtin-modules.js +1 -1
- package/dist/frontend/builtin-modules.js.map +1 -1
- package/dist/frontend/cjs-lexer.d.ts +4 -25
- package/dist/frontend/cjs-lexer.js +6 -806
- package/dist/frontend/cjs-lexer.js.map +1 -1
- package/dist/frontend/cjs-resolve.d.ts +5 -0
- package/dist/frontend/cjs-resolve.js +429 -0
- package/dist/frontend/cjs-resolve.js.map +1 -0
- package/dist/frontend/cjs-syntax.d.ts +26 -0
- package/dist/frontend/cjs-syntax.js +806 -0
- package/dist/frontend/cjs-syntax.js.map +1 -0
- package/dist/frontend/comptime-node.d.ts +4 -0
- package/dist/frontend/comptime-node.js +16 -0
- package/dist/frontend/comptime-node.js.map +1 -0
- package/dist/frontend/comptime-node.test.d.ts +1 -0
- package/dist/frontend/comptime-node.test.js +37 -0
- package/dist/frontend/comptime-node.test.js.map +1 -0
- package/dist/frontend/dts-paths.d.ts +3 -4
- package/dist/frontend/dts-paths.js +15 -8
- package/dist/frontend/dts-paths.js.map +1 -1
- package/dist/frontend/fork-target.js +2 -2
- package/dist/frontend/fork-target.js.map +1 -1
- package/dist/frontend/helper-tokens.d.ts +1 -0
- package/dist/frontend/helper-tokens.js +147 -0
- package/dist/frontend/helper-tokens.js.map +1 -0
- package/dist/frontend/helper-tokens.test.d.ts +1 -0
- package/dist/frontend/helper-tokens.test.js +35 -0
- package/dist/frontend/helper-tokens.test.js.map +1 -0
- package/dist/frontend/inferred-js-diagnostics.d.ts +5 -0
- package/dist/frontend/inferred-js-diagnostics.js +69 -0
- package/dist/frontend/inferred-js-diagnostics.js.map +1 -0
- package/dist/frontend/inferred-js-diagnostics.test.d.ts +1 -0
- package/dist/frontend/inferred-js-diagnostics.test.js +58 -0
- package/dist/frontend/inferred-js-diagnostics.test.js.map +1 -0
- package/dist/frontend/input-tracker.d.ts +5 -2
- package/dist/frontend/input-tracker.js +24 -3
- package/dist/frontend/input-tracker.js.map +1 -1
- package/dist/frontend/input-tracker.test.js +23 -0
- package/dist/frontend/input-tracker.test.js.map +1 -1
- package/dist/frontend/lib-contract.js +32 -24
- package/dist/frontend/lib-contract.js.map +1 -1
- package/dist/frontend/literal-values.d.ts +4 -0
- package/dist/frontend/literal-values.js +21 -0
- package/dist/frontend/literal-values.js.map +1 -0
- package/dist/frontend/literal-values.test.d.ts +1 -0
- package/dist/frontend/literal-values.test.js +91 -0
- package/dist/frontend/literal-values.test.js.map +1 -0
- package/dist/frontend/lowering/abstract-equality.d.ts +1 -1
- package/dist/frontend/lowering/abstract-equality.js +3 -0
- package/dist/frontend/lowering/abstract-equality.js.map +1 -1
- package/dist/frontend/lowering/array-indexed-mutation.js +11 -6
- package/dist/frontend/lowering/array-indexed-mutation.js.map +1 -1
- package/dist/frontend/lowering/array-values.d.ts +4 -1
- package/dist/frontend/lowering/array-values.js +43 -1
- package/dist/frontend/lowering/array-values.js.map +1 -1
- package/dist/frontend/lowering/callback-arg.js +1 -0
- package/dist/frontend/lowering/callback-arg.js.map +1 -1
- package/dist/frontend/lowering/class-callbacks.d.ts +12 -0
- package/dist/frontend/lowering/class-callbacks.js +74 -0
- package/dist/frontend/lowering/class-callbacks.js.map +1 -0
- package/dist/frontend/lowering/class-construction.d.ts +12 -0
- package/dist/frontend/lowering/class-construction.js +156 -0
- package/dist/frontend/lowering/class-construction.js.map +1 -0
- package/dist/frontend/lowering/class-descriptors.d.ts +10 -0
- package/dist/frontend/lowering/class-descriptors.js +114 -0
- package/dist/frontend/lowering/class-descriptors.js.map +1 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +51 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.js +1158 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.test.d.ts +1 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.test.js +93 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.test.js.map +1 -0
- package/dist/frontend/lowering/class-instance-constructor.d.ts +7 -0
- package/dist/frontend/lowering/class-instance-constructor.js +67 -0
- package/dist/frontend/lowering/class-instance-constructor.js.map +1 -0
- package/dist/frontend/lowering/class-method-values.d.ts +13 -0
- package/dist/frontend/lowering/class-method-values.js +235 -0
- package/dist/frontend/lowering/class-method-values.js.map +1 -0
- package/dist/frontend/lowering/class-prototypes.d.ts +19 -0
- package/dist/frontend/lowering/class-prototypes.js +242 -0
- package/dist/frontend/lowering/class-prototypes.js.map +1 -0
- package/dist/frontend/lowering/class-runtime-statics.d.ts +8 -0
- package/dist/frontend/lowering/class-runtime-statics.js +66 -0
- package/dist/frontend/lowering/class-runtime-statics.js.map +1 -0
- package/dist/frontend/lowering/class-static-data.d.ts +6 -0
- package/dist/frontend/lowering/class-static-data.js +56 -0
- package/dist/frontend/lowering/class-static-data.js.map +1 -0
- package/dist/frontend/lowering/containers/buffer-numeric-methods.d.ts +4 -0
- package/dist/frontend/lowering/containers/buffer-numeric-methods.js +26 -0
- package/dist/frontend/lowering/containers/buffer-numeric-methods.js.map +1 -0
- package/dist/frontend/lowering/containers/bytes.d.ts +11 -7
- package/dist/frontend/lowering/containers/bytes.js +208 -163
- package/dist/frontend/lowering/containers/bytes.js.map +1 -1
- package/dist/frontend/lowering/containers/string-and-regexp.d.ts +2 -2
- package/dist/frontend/lowering/containers/string-and-regexp.js +58 -63
- package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
- package/dist/frontend/lowering/containers/string-replacement.d.ts +7 -0
- package/dist/frontend/lowering/containers/string-replacement.js +217 -0
- package/dist/frontend/lowering/containers/string-replacement.js.map +1 -0
- package/dist/frontend/lowering/error-methods.d.ts +14 -0
- package/dist/frontend/lowering/error-methods.js +177 -0
- package/dist/frontend/lowering/error-methods.js.map +1 -0
- package/dist/frontend/lowering/expressions/global-symbols.d.ts +6 -0
- package/dist/frontend/lowering/expressions/global-symbols.js +11 -0
- package/dist/frontend/lowering/expressions/global-symbols.js.map +1 -0
- package/dist/frontend/lowering/expressions/native-proxy.d.ts +7 -0
- package/dist/frontend/lowering/expressions/native-proxy.js +51 -0
- package/dist/frontend/lowering/expressions/native-proxy.js.map +1 -0
- package/dist/frontend/lowering/expressions/nullish-assignment.d.ts +6 -0
- package/dist/frontend/lowering/expressions/nullish-assignment.js +132 -0
- package/dist/frontend/lowering/expressions/nullish-assignment.js.map +1 -0
- package/dist/frontend/lowering/expressions/object-literals.d.ts +8 -8
- package/dist/frontend/lowering/expressions/object-literals.js +509 -183
- package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/optional-chains.d.ts +3 -4
- package/dist/frontend/lowering/expressions/optional-chains.js +88 -24
- package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
- package/dist/frontend/lowering/expressions/try-lower-expression.js +1 -0
- package/dist/frontend/lowering/expressions/try-lower-expression.js.map +1 -1
- package/dist/frontend/lowering/expressions/union-field-write.d.ts +8 -0
- package/dist/frontend/lowering/expressions/union-field-write.js +71 -0
- package/dist/frontend/lowering/expressions/union-field-write.js.map +1 -0
- package/dist/frontend/lowering/function-context.d.ts +101 -0
- package/dist/frontend/lowering/function-context.js +109 -0
- package/dist/frontend/lowering/function-context.js.map +1 -0
- package/dist/frontend/lowering/generator-delegation.d.ts +7 -0
- package/dist/frontend/lowering/generator-delegation.js +85 -0
- package/dist/frontend/lowering/generator-delegation.js.map +1 -0
- package/dist/frontend/lowering/generator-dynamic-dispatch.d.ts +11 -0
- package/dist/frontend/lowering/generator-dynamic-dispatch.js +143 -0
- package/dist/frontend/lowering/generator-dynamic-dispatch.js.map +1 -0
- package/dist/frontend/lowering/lib-boundary.d.ts +4 -1
- package/dist/frontend/lowering/lib-boundary.js +112 -20
- package/dist/frontend/lowering/lib-boundary.js.map +1 -1
- package/dist/frontend/lowering/lib-boundary.test.d.ts +1 -0
- package/dist/frontend/lowering/lib-boundary.test.js +45 -0
- package/dist/frontend/lowering/lib-boundary.test.js.map +1 -0
- package/dist/frontend/lowering/lower-array-sort.d.ts +1 -1
- package/dist/frontend/lowering/lower-assert.d.ts +1 -1
- package/dist/frontend/lowering/lower-assert.js.map +1 -1
- package/dist/frontend/lowering/lower-async-iteration.d.ts +1 -1
- package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
- package/dist/frontend/lowering/lower-builtin-values.d.ts +18 -0
- package/dist/frontend/lowering/lower-builtin-values.js +249 -0
- package/dist/frontend/lowering/lower-builtin-values.js.map +1 -0
- package/dist/frontend/lowering/lower-builtins.d.ts +33 -46
- package/dist/frontend/lowering/lower-builtins.js +676 -365
- package/dist/frontend/lowering/lower-builtins.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.d.ts +28 -22
- package/dist/frontend/lowering/lower-calls.js +1660 -412
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.d.ts +95 -57
- package/dist/frontend/lowering/lower-classes.js +1491 -404
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-comptime.d.ts +1 -1
- package/dist/frontend/lowering/lower-comptime.js +23 -32
- package/dist/frontend/lowering/lower-comptime.js.map +1 -1
- package/dist/frontend/lowering/lower-containers.d.ts +36 -32
- package/dist/frontend/lowering/lower-containers.js +925 -181
- package/dist/frontend/lowering/lower-containers.js.map +1 -1
- package/dist/frontend/lowering/lower-dgram.d.ts +1 -1
- package/dist/frontend/lowering/lower-dgram.js +3 -2
- package/dist/frontend/lowering/lower-dgram.js.map +1 -1
- package/dist/frontend/lowering/lower-enums.d.ts +1 -1
- package/dist/frontend/lowering/lower-enums.js.map +1 -1
- package/dist/frontend/lowering/lower-event-emitter.d.ts +30 -1
- package/dist/frontend/lowering/lower-event-emitter.js +58 -26
- package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
- package/dist/frontend/lowering/lower-expando.d.ts +7 -1
- package/dist/frontend/lowering/lower-expando.js +14 -6
- package/dist/frontend/lowering/lower-expando.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.d.ts +37 -13
- package/dist/frontend/lowering/lower-exprs.js +2163 -863
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-generators.d.ts +2 -5
- package/dist/frontend/lowering/lower-generators.js +88 -46
- package/dist/frontend/lowering/lower-generators.js.map +1 -1
- package/dist/frontend/lowering/lower-global-value.d.ts +7 -0
- package/dist/frontend/lowering/lower-global-value.js +17 -0
- package/dist/frontend/lowering/lower-global-value.js.map +1 -0
- package/dist/frontend/lowering/lower-inspect.d.ts +1 -1
- package/dist/frontend/lowering/lower-inspect.js +17 -8
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-island.d.ts +7 -8
- package/dist/frontend/lowering/lower-island.js +66 -33
- package/dist/frontend/lowering/lower-island.js.map +1 -1
- package/dist/frontend/lowering/lower-mixins.d.ts +2 -2
- package/dist/frontend/lowering/lower-mixins.js +5 -3
- package/dist/frontend/lowering/lower-mixins.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.d.ts +1 -1
- package/dist/frontend/lowering/lower-modules.js +445 -39
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.test.d.ts +1 -0
- package/dist/frontend/lowering/lower-modules.test.js +39 -0
- package/dist/frontend/lowering/lower-modules.test.js.map +1 -0
- package/dist/frontend/lowering/lower-namespaces.d.ts +1 -1
- package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
- package/dist/frontend/lowering/lower-node-module.d.ts +1 -1
- package/dist/frontend/lowering/lower-node-module.js +13 -10
- package/dist/frontend/lowering/lower-node-module.js.map +1 -1
- package/dist/frontend/lowering/lower-server.d.ts +1 -1
- package/dist/frontend/lowering/lower-server.js +6 -10
- package/dist/frontend/lowering/lower-server.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.d.ts +17 -17
- package/dist/frontend/lowering/lower-stmts.js +855 -514
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-stream.d.ts +1 -1
- package/dist/frontend/lowering/lower-stream.js +20 -11
- package/dist/frontend/lowering/lower-stream.js.map +1 -1
- package/dist/frontend/lowering/lower-test.d.ts +1 -1
- package/dist/frontend/lowering/lower-test.js.map +1 -1
- package/dist/frontend/lowering/lower-url.d.ts +6 -0
- package/dist/frontend/lowering/lower-url.js +77 -0
- package/dist/frontend/lowering/lower-url.js.map +1 -0
- package/dist/frontend/lowering/lowerer.d.ts +140 -190
- package/dist/frontend/lowering/lowerer.js +1193 -712
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/lowerer.test.d.ts +1 -0
- package/dist/frontend/lowering/lowerer.test.js +172 -0
- package/dist/frontend/lowering/lowerer.test.js.map +1 -0
- package/dist/frontend/lowering/native-ffi.d.ts +5 -0
- package/dist/frontend/lowering/native-ffi.js +40 -0
- package/dist/frontend/lowering/native-ffi.js.map +1 -0
- package/dist/frontend/lowering/object-enumeration-receiver.d.ts +7 -0
- package/dist/frontend/lowering/object-enumeration-receiver.js +33 -0
- package/dist/frontend/lowering/object-enumeration-receiver.js.map +1 -0
- package/dist/frontend/lowering/object-factory-new.d.ts +8 -0
- package/dist/frontend/lowering/object-factory-new.js +68 -0
- package/dist/frontend/lowering/object-factory-new.js.map +1 -0
- package/dist/frontend/lowering/optional-arguments.js +6 -1
- package/dist/frontend/lowering/optional-arguments.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/runtime-optional-locals.d.ts +14 -0
- package/dist/frontend/lowering/runtime-optional-locals.js +41 -0
- package/dist/frontend/lowering/runtime-optional-locals.js.map +1 -0
- package/dist/frontend/lowering/runtime-optional-locals.test.d.ts +1 -0
- package/dist/frontend/lowering/runtime-optional-locals.test.js +85 -0
- package/dist/frontend/lowering/runtime-optional-locals.test.js.map +1 -0
- package/dist/frontend/lowering/sanitize-class-types.d.ts +8 -0
- package/dist/frontend/lowering/sanitize-class-types.js +79 -0
- package/dist/frontend/lowering/sanitize-class-types.js.map +1 -0
- package/dist/frontend/lowering/sanitize-class-types.test.d.ts +1 -0
- package/dist/frontend/lowering/sanitize-class-types.test.js +60 -0
- package/dist/frontend/lowering/sanitize-class-types.test.js.map +1 -0
- package/dist/frontend/lowering/static-this.d.ts +5 -1
- package/dist/frontend/lowering/static-this.js +28 -2
- package/dist/frontend/lowering/static-this.js.map +1 -1
- package/dist/frontend/lowering/string-index.d.ts +7 -0
- package/dist/frontend/lowering/string-index.js +39 -0
- package/dist/frontend/lowering/string-index.js.map +1 -0
- package/dist/frontend/lowering/surfaces.d.ts +10 -3
- package/dist/frontend/lowering/surfaces.js +86 -37
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/lowering/symbol-fields.d.ts +22 -0
- package/dist/frontend/lowering/symbol-fields.js +183 -0
- package/dist/frontend/lowering/symbol-fields.js.map +1 -0
- package/dist/frontend/lowering/symbol-methods.d.ts +7 -0
- package/dist/frontend/lowering/symbol-methods.js +30 -0
- package/dist/frontend/lowering/symbol-methods.js.map +1 -0
- package/dist/frontend/lowering/text-decoder-encoding.d.ts +12 -0
- package/dist/frontend/lowering/text-decoder-encoding.js +82 -0
- package/dist/frontend/lowering/text-decoder-encoding.js.map +1 -0
- package/dist/frontend/lowering/text-decoder-encoding.test.d.ts +1 -0
- package/dist/frontend/lowering/text-decoder-encoding.test.js +38 -0
- package/dist/frontend/lowering/text-decoder-encoding.test.js.map +1 -0
- package/dist/frontend/lowering/union-narrow.d.ts +9 -0
- package/dist/frontend/lowering/union-narrow.js +59 -0
- package/dist/frontend/lowering/union-narrow.js.map +1 -0
- package/dist/frontend/lowering/union-narrow.test.d.ts +1 -0
- package/dist/frontend/lowering/union-narrow.test.js +72 -0
- package/dist/frontend/lowering/union-narrow.test.js.map +1 -0
- package/dist/frontend/lowering/union-retag.d.ts +43 -0
- package/dist/frontend/lowering/union-retag.js +259 -0
- package/dist/frontend/lowering/union-retag.js.map +1 -0
- package/dist/frontend/lowering/union-retag.test.d.ts +1 -0
- package/dist/frontend/lowering/union-retag.test.js +405 -0
- package/dist/frontend/lowering/union-retag.test.js.map +1 -0
- package/dist/frontend/lowering/unregistered-class-types.d.ts +14 -0
- package/dist/frontend/lowering/unregistered-class-types.js +94 -0
- package/dist/frontend/lowering/unregistered-class-types.js.map +1 -0
- package/dist/frontend/lowering/unregistered-class-types.test.d.ts +1 -0
- package/dist/frontend/lowering/unregistered-class-types.test.js +65 -0
- package/dist/frontend/lowering/unregistered-class-types.test.js.map +1 -0
- package/dist/frontend/lowering/width-lift.d.ts +40 -0
- package/dist/frontend/lowering/width-lift.js +2 -0
- package/dist/frontend/lowering/width-lift.js.map +1 -0
- package/dist/frontend/module-syntax.d.ts +58 -0
- package/dist/frontend/module-syntax.js +123 -0
- package/dist/frontend/module-syntax.js.map +1 -0
- package/dist/frontend/module-syntax.test.d.ts +1 -0
- package/dist/frontend/module-syntax.test.js +78 -0
- package/dist/frontend/module-syntax.test.js.map +1 -0
- package/dist/frontend/npm-fetch-analysis.d.ts +17 -0
- package/dist/frontend/npm-fetch-analysis.js +100 -0
- package/dist/frontend/npm-fetch-analysis.js.map +1 -0
- package/dist/frontend/npm-fetch-analysis.test.d.ts +1 -0
- package/dist/frontend/npm-fetch-analysis.test.js +107 -0
- package/dist/frontend/npm-fetch-analysis.test.js.map +1 -0
- package/dist/frontend/npm-fetch-node.d.ts +2 -0
- package/dist/frontend/npm-fetch-node.js +12 -0
- package/dist/frontend/npm-fetch-node.js.map +1 -0
- package/dist/frontend/npm-fetch-syntax.d.ts +6 -0
- package/dist/frontend/npm-fetch-syntax.js +207 -0
- package/dist/frontend/npm-fetch-syntax.js.map +1 -0
- package/dist/frontend/npm-node.d.ts +10 -0
- package/dist/frontend/npm-node.js +14 -0
- package/dist/frontend/npm-node.js.map +1 -0
- package/dist/frontend/npm-static-bundled-cjs.d.ts +8 -0
- package/dist/frontend/npm-static-bundled-cjs.js +236 -0
- package/dist/frontend/npm-static-bundled-cjs.js.map +1 -0
- package/dist/frontend/npm-static-bundled-cjs.test.d.ts +1 -0
- package/dist/frontend/npm-static-bundled-cjs.test.js +69 -0
- package/dist/frontend/npm-static-bundled-cjs.test.js.map +1 -0
- package/dist/frontend/npm-static-declaration-syntax.d.ts +57 -0
- package/dist/frontend/npm-static-declaration-syntax.js +944 -0
- package/dist/frontend/npm-static-declaration-syntax.js.map +1 -0
- package/dist/frontend/npm-static-declarations.d.ts +11 -39
- package/dist/frontend/npm-static-declarations.js +22 -561
- package/dist/frontend/npm-static-declarations.js.map +1 -1
- package/dist/frontend/npm-static-declarations.test.js +245 -6
- package/dist/frontend/npm-static-declarations.test.js.map +1 -1
- package/dist/frontend/npm-static-prune.d.ts +1 -1
- package/dist/frontend/npm-static-prune.js +121 -38
- package/dist/frontend/npm-static-prune.js.map +1 -1
- package/dist/frontend/npm-static-prune.test.js +9 -1
- package/dist/frontend/npm-static-prune.test.js.map +1 -1
- package/dist/frontend/npm-static-rewrite-host.d.ts +4 -0
- package/dist/frontend/npm-static-rewrite-host.js +179 -0
- package/dist/frontend/npm-static-rewrite-host.js.map +1 -0
- package/dist/frontend/npm-static-rewrite-syntax.d.ts +16 -0
- package/dist/frontend/npm-static-rewrite-syntax.js +905 -0
- package/dist/frontend/npm-static-rewrite-syntax.js.map +1 -0
- package/dist/frontend/npm-static-rewrite.d.ts +0 -5
- package/dist/frontend/npm-static-rewrite.js +2 -1079
- package/dist/frontend/npm-static-rewrite.js.map +1 -1
- package/dist/frontend/npm-static-subtyping.d.ts +5 -0
- package/dist/frontend/npm-static-subtyping.js +55 -0
- package/dist/frontend/npm-static-subtyping.js.map +1 -0
- package/dist/frontend/npm-static-subtyping.test.d.ts +1 -0
- package/dist/frontend/npm-static-subtyping.test.js +58 -0
- package/dist/frontend/npm-static-subtyping.test.js.map +1 -0
- package/dist/frontend/npm-static.d.ts +7 -15
- package/dist/frontend/npm-static.js +19 -28
- package/dist/frontend/npm-static.js.map +1 -1
- package/dist/frontend/npm.d.ts +8 -69
- package/dist/frontend/npm.js +21 -361
- package/dist/frontend/npm.js.map +1 -1
- package/dist/frontend/npm.test.js +2 -2
- package/dist/frontend/npm.test.js.map +1 -1
- package/dist/frontend/pipeline-native.d.ts +6 -0
- package/dist/frontend/pipeline-native.js +32 -0
- package/dist/frontend/pipeline-native.js.map +1 -0
- package/dist/frontend/pipeline.d.ts +54 -0
- package/dist/frontend/pipeline.js +382 -0
- package/dist/frontend/pipeline.js.map +1 -0
- package/dist/frontend/pipeline.test.d.ts +1 -0
- package/dist/frontend/pipeline.test.js +77 -0
- package/dist/frontend/pipeline.test.js.map +1 -0
- package/dist/frontend/program-analysis.d.ts +10 -0
- package/dist/frontend/program-analysis.js +14 -0
- package/dist/frontend/program-analysis.js.map +1 -0
- package/dist/frontend/program-node.d.ts +9 -0
- package/dist/frontend/program-node.js +48 -0
- package/dist/frontend/program-node.js.map +1 -0
- package/dist/frontend/program.d.ts +39 -20
- package/dist/frontend/program.js +393 -189
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/program.test.js +105 -2
- package/dist/frontend/program.test.js.map +1 -1
- package/dist/frontend/provenance-core.d.ts +9 -0
- package/dist/frontend/provenance-core.js +435 -0
- package/dist/frontend/provenance-core.js.map +1 -0
- package/dist/frontend/provenance.d.ts +0 -4
- package/dist/frontend/provenance.js +4 -459
- package/dist/frontend/provenance.js.map +1 -1
- package/dist/frontend/resolve.d.ts +3 -1
- package/dist/frontend/resolve.js +6 -3
- package/dist/frontend/resolve.js.map +1 -1
- package/dist/frontend/runtime-resolve.d.ts +4 -3
- package/dist/frontend/runtime-resolve.js +22 -18
- package/dist/frontend/runtime-resolve.js.map +1 -1
- package/dist/frontend/runtime-resolve.test.js +53 -0
- package/dist/frontend/runtime-resolve.test.js.map +1 -1
- package/dist/frontend/services-node.d.ts +5 -0
- package/dist/frontend/services-node.js +19 -0
- package/dist/frontend/services-node.js.map +1 -0
- package/dist/frontend/services-node.test.d.ts +1 -0
- package/dist/frontend/services-node.test.js +70 -0
- package/dist/frontend/services-node.test.js.map +1 -0
- package/dist/frontend/services.d.ts +44 -0
- package/dist/frontend/services.js +90 -0
- package/dist/frontend/services.js.map +1 -0
- package/dist/frontend/services.test.d.ts +1 -0
- package/dist/frontend/services.test.js +174 -0
- package/dist/frontend/services.test.js.map +1 -0
- package/dist/frontend/ts7/adapter.d.ts +3 -3
- package/dist/frontend/ts7/adapter.js +14 -31
- package/dist/frontend/ts7/adapter.js.map +1 -1
- package/dist/frontend/ts7/api.d.ts +16 -0
- package/dist/frontend/ts7/api.js +24 -0
- package/dist/frontend/ts7/api.js.map +1 -0
- package/dist/frontend/ts7/ast-bytes.d.ts +31 -0
- package/dist/frontend/ts7/ast-bytes.js +137 -0
- package/dist/frontend/ts7/ast-bytes.js.map +1 -0
- package/dist/frontend/ts7/ast-bytes.test.d.ts +1 -0
- package/dist/frontend/ts7/ast-bytes.test.js +73 -0
- package/dist/frontend/ts7/ast-bytes.test.js.map +1 -0
- package/dist/frontend/ts7/ast-guards.generated.d.ts +353 -0
- package/dist/frontend/ts7/ast-guards.generated.js +1951 -0
- package/dist/frontend/ts7/ast-guards.generated.js.map +1 -0
- package/dist/frontend/ts7/ast-guards.test.d.ts +1 -0
- package/dist/frontend/ts7/ast-guards.test.js +43 -0
- package/dist/frontend/ts7/ast-guards.test.js.map +1 -0
- package/dist/frontend/ts7/ast-node.d.ts +194 -0
- package/dist/frontend/ts7/ast-node.js +448 -0
- package/dist/frontend/ts7/ast-node.js.map +1 -0
- package/dist/frontend/ts7/ast-node.test.d.ts +1 -0
- package/dist/frontend/ts7/ast-node.test.js +266 -0
- package/dist/frontend/ts7/ast-node.test.js.map +1 -0
- package/dist/frontend/ts7/ast-schema.generated.d.ts +503 -0
- package/dist/frontend/ts7/ast-schema.generated.js +1446 -0
- package/dist/frontend/ts7/ast-schema.generated.js.map +1 -0
- package/dist/frontend/ts7/ast-text.d.ts +6 -0
- package/dist/frontend/ts7/ast-text.js +124 -0
- package/dist/frontend/ts7/ast-text.js.map +1 -0
- package/dist/frontend/ts7/ast-text.test.d.ts +1 -0
- package/dist/frontend/ts7/ast-text.test.js +38 -0
- package/dist/frontend/ts7/ast-text.test.js.map +1 -0
- package/dist/frontend/ts7/ast-tokens.generated.d.ts +2 -0
- package/dist/frontend/ts7/ast-tokens.generated.js +155 -0
- package/dist/frontend/ts7/ast-tokens.generated.js.map +1 -0
- package/dist/frontend/ts7/ast-types.d.ts +42 -0
- package/dist/frontend/ts7/ast-types.generated.d.ts +1615 -0
- package/dist/frontend/ts7/ast-types.generated.js +5 -0
- package/dist/frontend/ts7/ast-types.generated.js.map +1 -0
- package/dist/frontend/ts7/ast-types.js +3 -0
- package/dist/frontend/ts7/ast-types.js.map +1 -0
- package/dist/frontend/ts7/ast-wire.d.ts +58 -0
- package/dist/frontend/ts7/ast-wire.js +267 -0
- package/dist/frontend/ts7/ast-wire.js.map +1 -0
- package/dist/frontend/ts7/ast-wire.test.d.ts +1 -0
- package/dist/frontend/ts7/ast-wire.test.js +151 -0
- package/dist/frontend/ts7/ast-wire.test.js.map +1 -0
- package/dist/frontend/ts7/ast.d.ts +14 -14
- package/dist/frontend/ts7/ast.js +25 -18
- package/dist/frontend/ts7/ast.js.map +1 -1
- package/dist/frontend/ts7/census-check.js +1 -0
- package/dist/frontend/ts7/census-check.js.map +1 -1
- package/dist/frontend/ts7/checker-cache.d.ts +48 -0
- package/dist/frontend/ts7/checker-cache.js +92 -0
- package/dist/frontend/ts7/checker-cache.js.map +1 -0
- package/dist/frontend/ts7/checker.d.ts +19 -46
- package/dist/frontend/ts7/checker.js +231 -161
- package/dist/frontend/ts7/checker.js.map +1 -1
- package/dist/frontend/ts7/checker.test.d.ts +1 -0
- package/dist/frontend/ts7/checker.test.js +335 -0
- package/dist/frontend/ts7/checker.test.js.map +1 -0
- package/dist/frontend/ts7/enums.d.ts +4 -27
- package/dist/frontend/ts7/enums.generated.d.ts +878 -0
- package/dist/frontend/ts7/enums.generated.js +1313 -0
- package/dist/frontend/ts7/enums.generated.js.map +1 -0
- package/dist/frontend/ts7/enums.js +4 -45
- package/dist/frontend/ts7/enums.js.map +1 -1
- package/dist/frontend/ts7/enums.test.d.ts +1 -0
- package/dist/frontend/ts7/enums.test.js +48 -0
- package/dist/frontend/ts7/enums.test.js.map +1 -0
- package/dist/frontend/ts7/native-api.d.ts +10 -0
- package/dist/frontend/ts7/native-api.js +10 -0
- package/dist/frontend/ts7/native-api.js.map +1 -0
- package/dist/frontend/ts7/native-host.d.ts +2 -0
- package/dist/frontend/ts7/native-host.js +11 -0
- package/dist/frontend/ts7/native-host.js.map +1 -0
- package/dist/frontend/ts7/native-process.d.ts +14 -0
- package/dist/frontend/ts7/native-process.js +62 -0
- package/dist/frontend/ts7/native-process.js.map +1 -0
- package/dist/frontend/ts7/program-adapter.d.ts +10 -98
- package/dist/frontend/ts7/program-adapter.js +16 -310
- package/dist/frontend/ts7/program-adapter.js.map +1 -1
- package/dist/frontend/ts7/program-host.d.ts +115 -0
- package/dist/frontend/ts7/program-host.js +347 -0
- package/dist/frontend/ts7/program-host.js.map +1 -0
- package/dist/frontend/ts7/program-host.test.d.ts +1 -0
- package/dist/frontend/ts7/program-host.test.js +207 -0
- package/dist/frontend/ts7/program-host.test.js.map +1 -0
- package/dist/frontend/ts7/rpc-api.d.ts +12 -0
- package/dist/frontend/ts7/rpc-api.js +23 -0
- package/dist/frontend/ts7/rpc-api.js.map +1 -0
- package/dist/frontend/ts7/rpc-client.d.ts +27 -0
- package/dist/frontend/ts7/rpc-client.js +102 -0
- package/dist/frontend/ts7/rpc-client.js.map +1 -0
- package/dist/frontend/ts7/rpc-client.test.d.ts +1 -0
- package/dist/frontend/ts7/rpc-client.test.js +133 -0
- package/dist/frontend/ts7/rpc-client.test.js.map +1 -0
- package/dist/frontend/ts7/rpc-filesystem.d.ts +16 -0
- package/dist/frontend/ts7/rpc-filesystem.js +42 -0
- package/dist/frontend/ts7/rpc-filesystem.js.map +1 -0
- package/dist/frontend/ts7/rpc-filesystem.test.d.ts +1 -0
- package/dist/frontend/ts7/rpc-filesystem.test.js +89 -0
- package/dist/frontend/ts7/rpc-filesystem.test.js.map +1 -0
- package/dist/frontend/ts7/rpc-process.d.ts +2 -0
- package/dist/frontend/ts7/rpc-process.js +148 -0
- package/dist/frontend/ts7/rpc-process.js.map +1 -0
- package/dist/frontend/ts7/rpc-process.test.d.ts +1 -0
- package/dist/frontend/ts7/rpc-process.test.js +29 -0
- package/dist/frontend/ts7/rpc-process.test.js.map +1 -0
- package/dist/frontend/ts7/rpc-wire.d.ts +46 -0
- package/dist/frontend/ts7/rpc-wire.js +195 -0
- package/dist/frontend/ts7/rpc-wire.js.map +1 -0
- package/dist/frontend/ts7/rpc-wire.test.d.ts +1 -0
- package/dist/frontend/ts7/rpc-wire.test.js +168 -0
- package/dist/frontend/ts7/rpc-wire.test.js.map +1 -0
- package/dist/frontend/ts7/semantic-checker.d.ts +137 -0
- package/dist/frontend/ts7/semantic-checker.js +221 -0
- package/dist/frontend/ts7/semantic-checker.js.map +1 -0
- package/dist/frontend/ts7/semantic-checker.test.d.ts +1 -0
- package/dist/frontend/ts7/semantic-checker.test.js +119 -0
- package/dist/frontend/ts7/semantic-checker.test.js.map +1 -0
- package/dist/frontend/ts7/semantic-json.d.ts +5 -0
- package/dist/frontend/ts7/semantic-json.js +47 -0
- package/dist/frontend/ts7/semantic-json.js.map +1 -0
- package/dist/frontend/ts7/semantic-json.test.d.ts +1 -0
- package/dist/frontend/ts7/semantic-json.test.js +42 -0
- package/dist/frontend/ts7/semantic-json.test.js.map +1 -0
- package/dist/frontend/ts7/semantic-model.d.ts +222 -0
- package/dist/frontend/ts7/semantic-model.js +423 -0
- package/dist/frontend/ts7/semantic-model.js.map +1 -0
- package/dist/frontend/ts7/semantic-model.test.d.ts +1 -0
- package/dist/frontend/ts7/semantic-model.test.js +322 -0
- package/dist/frontend/ts7/semantic-model.test.js.map +1 -0
- package/dist/frontend/ts7/semantic-schema.generated.d.ts +283 -0
- package/dist/frontend/ts7/semantic-schema.generated.js +222 -0
- package/dist/frontend/ts7/semantic-schema.generated.js.map +1 -0
- package/dist/frontend/ts7/semantic-types.d.ts +5 -0
- package/dist/frontend/ts7/semantic-types.js +2 -0
- package/dist/frontend/ts7/semantic-types.js.map +1 -0
- package/dist/frontend/ts7/session-cache.d.ts +17 -0
- package/dist/frontend/ts7/session-cache.js +97 -0
- package/dist/frontend/ts7/session-cache.js.map +1 -0
- package/dist/frontend/ts7/session-cache.test.d.ts +1 -0
- package/dist/frontend/ts7/session-cache.test.js +87 -0
- package/dist/frontend/ts7/session-cache.test.js.map +1 -0
- package/dist/frontend/ts7/session-path.d.ts +18 -0
- package/dist/frontend/ts7/session-path.js +203 -0
- package/dist/frontend/ts7/session-path.js.map +1 -0
- package/dist/frontend/ts7/session-path.test.d.ts +1 -0
- package/dist/frontend/ts7/session-path.test.js +34 -0
- package/dist/frontend/ts7/session-path.test.js.map +1 -0
- package/dist/frontend/ts7/session-schema.generated.d.ts +167 -0
- package/dist/frontend/ts7/session-schema.generated.js +5 -0
- package/dist/frontend/ts7/session-schema.generated.js.map +1 -0
- package/dist/frontend/ts7/session-timing.d.ts +50 -0
- package/dist/frontend/ts7/session-timing.js +61 -0
- package/dist/frontend/ts7/session-timing.js.map +1 -0
- package/dist/frontend/ts7/session-timing.test.d.ts +1 -0
- package/dist/frontend/ts7/session-timing.test.js +52 -0
- package/dist/frontend/ts7/session-timing.test.js.map +1 -0
- package/dist/frontend/ts7/session.d.ts +105 -0
- package/dist/frontend/ts7/session.js +233 -0
- package/dist/frontend/ts7/session.js.map +1 -0
- package/dist/frontend/ts7/session.test.d.ts +1 -0
- package/dist/frontend/ts7/session.test.js +215 -0
- package/dist/frontend/ts7/session.test.js.map +1 -0
- package/dist/frontend/ts7/source-parser-node.d.ts +6 -0
- package/dist/frontend/ts7/source-parser-node.js +15 -0
- package/dist/frontend/ts7/source-parser-node.js.map +1 -0
- package/dist/frontend/ts7/source-parser.d.ts +25 -0
- package/dist/frontend/ts7/source-parser.js +96 -0
- package/dist/frontend/ts7/source-parser.js.map +1 -0
- package/dist/frontend/ts7/source-parser.test.d.ts +1 -0
- package/dist/frontend/ts7/source-parser.test.js +151 -0
- package/dist/frontend/ts7/source-parser.test.js.map +1 -0
- package/dist/frontend/ts7/syntax.d.ts +3 -0
- package/dist/frontend/ts7/syntax.js +4 -0
- package/dist/frontend/ts7/syntax.js.map +1 -0
- package/dist/frontend/tsc-codes.js +3 -0
- package/dist/frontend/tsc-codes.js.map +1 -1
- package/dist/frontend/type-mapper.d.ts +34 -18
- package/dist/frontend/type-mapper.js +552 -131
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/frontend/type-mapper.test.js +146 -2
- package/dist/frontend/type-mapper.test.js.map +1 -1
- package/dist/frontend/union-discriminants.d.ts +16 -0
- package/dist/frontend/union-discriminants.js +98 -0
- package/dist/frontend/union-discriminants.js.map +1 -0
- package/dist/frontend/union-discriminants.test.d.ts +1 -0
- package/dist/frontend/union-discriminants.test.js +182 -0
- package/dist/frontend/union-discriminants.test.js.map +1 -0
- package/dist/index.d.ts +7 -198
- package/dist/index.js +369 -1572
- package/dist/index.js.map +1 -1
- package/dist/ir/analysis.d.ts +16 -4
- package/dist/ir/analysis.js +23 -4
- package/dist/ir/analysis.js.map +1 -1
- package/dist/ir/analysis.test.js +15 -2
- package/dist/ir/analysis.test.js.map +1 -1
- package/dist/ir/constant-tables.js +67 -49
- package/dist/ir/constant-tables.js.map +1 -1
- package/dist/ir/constant-tables.test.js +1 -1
- package/dist/ir/control-flow.d.ts +6 -0
- package/dist/ir/control-flow.js +142 -0
- package/dist/ir/control-flow.js.map +1 -0
- package/dist/ir/control-flow.test.d.ts +1 -0
- package/dist/ir/control-flow.test.js +113 -0
- package/dist/ir/control-flow.test.js.map +1 -0
- package/dist/ir/integer-loops.js +7 -18
- package/dist/ir/integer-loops.js.map +1 -1
- package/dist/ir/integer-ranges.js +53 -27
- package/dist/ir/integer-ranges.js.map +1 -1
- package/dist/ir/ir.d.ts +334 -176
- package/dist/ir/ir.js +710 -903
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/ir.test.js +162 -1
- package/dist/ir/ir.test.js.map +1 -1
- package/dist/ir/scalar-records.js +165 -134
- package/dist/ir/scalar-records.js.map +1 -1
- package/dist/ir/scalar-records.test.js +1 -1
- package/dist/ir/serialize.d.ts +4 -2
- package/dist/ir/serialize.js +33 -14
- package/dist/ir/serialize.js.map +1 -1
- package/dist/ir/serialize.test.d.ts +1 -0
- package/dist/ir/serialize.test.js +57 -0
- package/dist/ir/serialize.test.js.map +1 -0
- package/dist/ir/traverse.d.ts +41 -0
- package/dist/ir/traverse.js +660 -0
- package/dist/ir/traverse.js.map +1 -0
- package/dist/ir/traverse.test.d.ts +1 -0
- package/dist/ir/traverse.test.js +242 -0
- package/dist/ir/traverse.test.js.map +1 -0
- package/dist/ir/validate.js +2018 -1498
- package/dist/ir/validate.js.map +1 -1
- package/dist/ir/validate.test.js +536 -2
- package/dist/ir/validate.test.js.map +1 -1
- package/dist/library/cache-primitives.d.ts +2 -3
- package/dist/library/cache-primitives.js +4 -6
- package/dist/library/cache-primitives.js.map +1 -1
- package/dist/library/fence-eval.js +2 -2
- package/dist/library/fence-eval.js.map +1 -1
- package/dist/library/int-infer.js +7 -6
- package/dist/library/int-infer.js.map +1 -1
- package/dist/library/int-infer.test.js +4 -4
- package/dist/library/library-cache.d.ts +3 -2
- package/dist/library/library-cache.js +5 -17
- package/dist/library/library-cache.js.map +1 -1
- package/dist/library/library-cache.test.js +54 -41
- package/dist/library/library-cache.test.js.map +1 -1
- package/dist/library/library-profile.d.ts +3 -1
- package/dist/library/library-profile.js +15 -6
- package/dist/library/library-profile.js.map +1 -1
- package/dist/library/prepare.d.ts +15 -0
- package/dist/library/prepare.js +584 -0
- package/dist/library/prepare.js.map +1 -0
- package/dist/library/semantic-source.d.ts +1 -1
- package/dist/library/semantic-source.js +8 -6
- package/dist/library/semantic-source.js.map +1 -1
- package/dist/library/sidecar-validate.js +4 -4
- package/dist/library/sidecar-validate.js.map +1 -1
- package/dist/library/sidecar.d.ts +2 -0
- package/dist/library/sidecar.js +10 -3
- package/dist/library/sidecar.js.map +1 -1
- package/dist/native/cache.d.ts +11 -0
- package/dist/native/cache.js +113 -0
- package/dist/native/cache.js.map +1 -0
- package/dist/native/cache.test.d.ts +1 -0
- package/dist/native/cache.test.js +66 -0
- package/dist/native/cache.test.js.map +1 -0
- package/dist/native/cli.d.ts +1 -0
- package/dist/native/cli.js +112 -0
- package/dist/native/cli.js.map +1 -0
- package/dist/native/compiler.d.ts +15 -0
- package/dist/native/compiler.js +336 -0
- package/dist/native/compiler.js.map +1 -0
- package/dist/native/compiler.test.d.ts +1 -0
- package/dist/native/compiler.test.js +174 -0
- package/dist/native/compiler.test.js.map +1 -0
- package/dist/native/comptime.d.ts +5 -0
- package/dist/native/comptime.js +73 -0
- package/dist/native/comptime.js.map +1 -0
- package/dist/native/comptime.test.d.ts +1 -0
- package/dist/native/comptime.test.js +65 -0
- package/dist/native/comptime.test.js.map +1 -0
- package/dist/native/executable-cache.d.ts +26 -0
- package/dist/native/executable-cache.js +228 -0
- package/dist/native/executable-cache.js.map +1 -0
- package/dist/native/executable-cache.test.d.ts +1 -0
- package/dist/native/executable-cache.test.js +151 -0
- package/dist/native/executable-cache.test.js.map +1 -0
- package/dist/native/file-identity.d.ts +4 -0
- package/dist/native/file-identity.js +14 -0
- package/dist/native/file-identity.js.map +1 -0
- package/dist/native/file-identity.test.d.ts +1 -0
- package/dist/native/file-identity.test.js +43 -0
- package/dist/native/file-identity.test.js.map +1 -0
- package/dist/native/library.d.ts +22 -0
- package/dist/native/library.js +83 -0
- package/dist/native/library.js.map +1 -0
- package/dist/native/prepare.d.ts +21 -0
- package/dist/native/prepare.js +174 -0
- package/dist/native/prepare.js.map +1 -0
- package/dist/native/prepare.test.d.ts +1 -0
- package/dist/native/prepare.test.js +70 -0
- package/dist/native/prepare.test.js.map +1 -0
- package/dist/native/sanitizer.d.ts +11 -0
- package/dist/native/sanitizer.js +137 -0
- package/dist/native/sanitizer.js.map +1 -0
- package/dist/native/sanitizer.test.d.ts +1 -0
- package/dist/native/sanitizer.test.js +58 -0
- package/dist/native/sanitizer.test.js.map +1 -0
- package/dist/native/task.d.ts +4 -0
- package/dist/native/task.js +16 -0
- package/dist/native/task.js.map +1 -0
- package/dist/native/task.test.d.ts +1 -0
- package/dist/native/task.test.js +17 -0
- package/dist/native/task.test.js.map +1 -0
- package/dist/native/toolchain.d.ts +45 -0
- package/dist/native/toolchain.js +94 -0
- package/dist/native/toolchain.js.map +1 -0
- package/dist/native/toolchain.test.d.ts +1 -0
- package/dist/native/toolchain.test.js +85 -0
- package/dist/native/toolchain.test.js.map +1 -0
- package/dist/startup-cache.d.ts +1 -1
- package/dist/startup-cache.js +2 -5
- package/dist/startup-cache.js.map +1 -1
- package/dist/timing.d.ts +4 -0
- package/dist/timing.js +19 -0
- package/dist/timing.js.map +1 -0
- package/dist/wasi-paths.js +10 -7
- package/dist/wasi-paths.js.map +1 -1
- package/package.json +28 -19
- package/surface-manifest.json +107 -98
- package/dist/backend/c/async.d.ts +0 -171
- package/dist/backend/c/async.js +0 -1317
- package/dist/backend/c/async.js.map +0 -1
- package/dist/backend/c/c-emitter.d.ts +0 -536
- package/dist/backend/c/c-emitter.js +0 -1932
- package/dist/backend/c/c-emitter.js.map +0 -1
- package/dist/backend/c/exprs.d.ts +0 -15
- package/dist/backend/c/exprs.js +0 -8847
- package/dist/backend/c/exprs.js.map +0 -1
- package/dist/backend/c/island.d.ts +0 -45
- package/dist/backend/c/island.js +0 -281
- package/dist/backend/c/island.js.map +0 -1
- package/dist/backend/c/may-throw.js.map +0 -1
- package/dist/backend/c/shapes.d.ts +0 -142
- package/dist/backend/c/shapes.js +0 -603
- package/dist/backend/c/shapes.js.map +0 -1
- package/dist/backend/c/stmts.d.ts +0 -76
- package/dist/backend/c/stmts.js +0 -1108
- package/dist/backend/c/stmts.js.map +0 -1
- package/dist/backend/c/types.d.ts +0 -71
- package/dist/backend/c/types.js +0 -459
- package/dist/backend/c/types.js.map +0 -1
- package/dist/backend/c/types.test.js +0 -32
- package/dist/backend/c/types.test.js.map +0 -1
- package/dist/backend/c/walkers.d.ts +0 -134
- package/dist/backend/c/walkers.js +0 -1772
- package/dist/backend/c/walkers.js.map +0 -1
- /package/dist/backend/{c/types.test.d.ts → cycle-analysis.test.d.ts} +0 -0
|
@@ -0,0 +1,806 @@
|
|
|
1
|
+
/* Node's CommonJS named-export DETECTABILITY test — the compile-time
|
|
2
|
+
* answer to "which names can `import { x } from './cjs.js'` actually
|
|
3
|
+
* link?". Node never executes a CJS module to build its ESM facade: it
|
|
4
|
+
* lexes the source with its vendored CJS lexer (Node v24.15.0 vendors
|
|
5
|
+
* deps/merve, the native `cjs_lexer` binding that replaced the
|
|
6
|
+
* cjs-module-lexer wasm build; the detection patterns are FROZEN by
|
|
7
|
+
* upstream policy) and only the names that lexer detects become named
|
|
8
|
+
* exports. The checker sees the real export table, so it happily binds
|
|
9
|
+
* names the lexer cannot see — `module.exports = { a: 7 }` type-checks a
|
|
10
|
+
* named import of `a` that Node refuses at link time with a SyntaxError.
|
|
11
|
+
* This module mirrors merve's detection so the compiler can answer
|
|
12
|
+
* exactly what Node answers — for the program's own CJS files (program.ts
|
|
13
|
+
* gates the ESM instantiate graph) AND for the --dynamic island's embedded
|
|
14
|
+
* npm modules (npm.ts synthesizes each CJS facade from this lexer, so an
|
|
15
|
+
* embedded named import fails exactly where Node's would).
|
|
16
|
+
*
|
|
17
|
+
* The syntax pass consumes an owned native TypeScript AST. Detection still
|
|
18
|
+
* reads raw source wherever merve's byte quirks demand it; parser semantics
|
|
19
|
+
* never replace Node's export-detectability rules.
|
|
20
|
+
*
|
|
21
|
+
* The port is deliberately quirk-faithful — these all match probed Node
|
|
22
|
+
* v24.15.0 behavior, not what a clean reimplementation would choose:
|
|
23
|
+
* - `module.exports = { ... }` props scan LEFT TO RIGHT and the scan
|
|
24
|
+
* STOPS at the first prop it cannot shape — names added before the
|
|
25
|
+
* stop are kept, everything after is invisible. `{ vis: v, lit: 7 }`
|
|
26
|
+
* exports `vis` only; `{ lit: 7, vis: v }` exports nothing.
|
|
27
|
+
* - A prop VALUE must start with an identifier-ish token (an identifier,
|
|
28
|
+
* keyword, `require(...)` call — anything whose first character is
|
|
29
|
+
* [A-Za-z_$] or non-ASCII). Literals (`7`, `"s"`, backticks, arrows'
|
|
30
|
+
* `(`) stop the scan WITHOUT adding the key.
|
|
31
|
+
* - After an accepted value the lexer consumes ONE identifier run and
|
|
32
|
+
* requires the very next CHARACTER to be `,` or `}` — `a: b, c: d`
|
|
33
|
+
* keeps both, `a: b , c: d` keeps only `a` (the space stops the scan),
|
|
34
|
+
* `a: o.x` / `a: f()` keep `a` and stop.
|
|
35
|
+
* - A `require('spec')` VALUE adds the key, records the spec as a
|
|
36
|
+
* REEXPORT, and stops the scan unconditionally — `{ a: require('x'),
|
|
37
|
+
* b: v }` exports `a` plus x's names, never `b`. Trailing tokens on the
|
|
38
|
+
* require (`.foo`, `()`, `|| y`) change nothing.
|
|
39
|
+
* - `get name() {...}` stops the scan cold (no add); `set name(v) {}`
|
|
40
|
+
* adds the literal name "set" and stops; `async name() {}` adds
|
|
41
|
+
* "async" and stops; a plain method `name() {}` adds `name` and stops.
|
|
42
|
+
* - `exports.NAME = ` / `module.exports.NAME = ` / the ['string'] forms
|
|
43
|
+
* match ANYWHERE in the file — nested functions, dead branches — with
|
|
44
|
+
* no scope analysis, and nothing ever removes a detected name.
|
|
45
|
+
* - `module.exports = require('./x')` records a REEXPORT whenever the
|
|
46
|
+
* require call is the LEADING token of the right-hand side — trailers
|
|
47
|
+
* (`.foo`, `()`, `|| {}`, `? a : b`) are ignored, but a leading `(`
|
|
48
|
+
* breaks the match (`(require('x'))` records nothing). Node resolves
|
|
49
|
+
* each reexport and unions the target's detected names when the target
|
|
50
|
+
* is itself CommonJS. Every `module.exports =` assignment CLEARS the
|
|
51
|
+
* pending reexport list first — including star-pattern reexports
|
|
52
|
+
* recorded earlier — so only reexports at or after the last assignment
|
|
53
|
+
* count, while detected export NAMES accumulate across everything.
|
|
54
|
+
* - `Object.defineProperty(exports, 'n', {...})` adds `n` for the exact
|
|
55
|
+
* descriptor shapes merve accepts: optional leading `enumerable: true`
|
|
56
|
+
* then `value:` (anything), or a getter whose whole body is `return
|
|
57
|
+
* IDENT` / `return IDENT.IDENT` / `return IDENT['str']` and which is
|
|
58
|
+
* the descriptor's last property. Unlike cjs-module-lexer 2.2.0, a
|
|
59
|
+
* NON-matching defineProperty of the same name elsewhere does NOT
|
|
60
|
+
* poison the valid one (probed: Node keeps the export).
|
|
61
|
+
* - The transpiler star-reexport patterns ARE detected (tsc/babel output
|
|
62
|
+
* all over npm depends on them):
|
|
63
|
+
* · `__export(require('x'))` / `__exportStar(require('x'), exports)`
|
|
64
|
+
* — callee is the bare identifier or any member chain ending in
|
|
65
|
+
* one of those two exact names, at TOP LEVEL (brace depth 0 — an
|
|
66
|
+
* unbraced `if (c) __exportStar(...)` still counts, a braced block
|
|
67
|
+
* does not), and the source bytes must read `NAME(require` with NO
|
|
68
|
+
* whitespace or comment between the name, the `(`, and `require`
|
|
69
|
+
* (probed: one space kills the match; spaces anywhere inside the
|
|
70
|
+
* require call are fine).
|
|
71
|
+
* · The Babel copy loop: a top-level `var/const/let ID =
|
|
72
|
+
* [_interopRequireWildcard(]require('x')[)]` (ID the FIRST
|
|
73
|
+
* declarator; `_interopRequireWildcard` bare and byte-adjacent to
|
|
74
|
+
* `(require` like the star form) linked by ID to a top-level
|
|
75
|
+
* `Object.keys(ID).forEach(function (KEY) {...})` whose body is
|
|
76
|
+
* byte-for-byte one of merve's copy shapes: the `if (KEY ===
|
|
77
|
+
* 'default' || KEY === '__esModule') return;` filter (exact order,
|
|
78
|
+
* unbraced return) with optional hasOwnProperty / in-exports
|
|
79
|
+
* guards, or the single `if (KEY !== 'default' [&& !hasOwn]) copy`
|
|
80
|
+
* form; the copy either `EXPORTS[KEY] = ID[KEY]` or the
|
|
81
|
+
* enumerable-getter defineProperty. Named callbacks, arrow
|
|
82
|
+
* callbacks, braced returns, and reordered filters all miss.
|
|
83
|
+
* The reexport's clearing position is the LOOP's, not the var's.
|
|
84
|
+
* NOT modeled: cjs-module-lexer 2.2.0's phantom "get" export for an
|
|
85
|
+
* identifier-named getter in the table (`{ get a() {} }` exports nothing
|
|
86
|
+
* in Node — but `get [k]() {}` / `get "a"() {}` DO export the word "get",
|
|
87
|
+
* because the name token stops the lexer after it took `get` as a
|
|
88
|
+
* shorthand key). */
|
|
89
|
+
import * as ts from "./ts7/syntax.js";
|
|
90
|
+
/** merve's byte classification: [A-Za-z_$] plus every non-ASCII byte. */
|
|
91
|
+
function isIdentStartChar(ch) {
|
|
92
|
+
return /[A-Za-z_$]/.test(ch) || ch.charCodeAt(0) > 127;
|
|
93
|
+
}
|
|
94
|
+
function isIdentChar(ch) {
|
|
95
|
+
return /[A-Za-z0-9_$]/.test(ch) || ch.charCodeAt(0) > 127;
|
|
96
|
+
}
|
|
97
|
+
/** End of the identifier run starting at `pos` (merve consumes maximal
|
|
98
|
+
* identifier characters and nothing else — no member chains, no calls). */
|
|
99
|
+
function identRunEnd(text, pos) {
|
|
100
|
+
let i = pos;
|
|
101
|
+
while (i < text.length && isIdentChar(text[i]))
|
|
102
|
+
i++;
|
|
103
|
+
return i;
|
|
104
|
+
}
|
|
105
|
+
/** True when the node's SOURCE spelling starts like a lexer identifier —
|
|
106
|
+
* a `a`-escaped name parses to the same AST as its plain spelling,
|
|
107
|
+
* but merve reads bytes and stops at the backslash. */
|
|
108
|
+
function sourceSpellsIdentifier(node, sf) {
|
|
109
|
+
const ch = sf.text[node.getStart(sf)];
|
|
110
|
+
return ch !== undefined && isIdentStartChar(ch);
|
|
111
|
+
}
|
|
112
|
+
/** True when the node's WHOLE source span is one identifier run — what
|
|
113
|
+
* merve takes for IDENT. Keywords count (`return this.x` satisfies the
|
|
114
|
+
* defineProperty getter's `return IDENT.IDENT` because `this` lexes as an
|
|
115
|
+
* identifier run — probed), escapes and private names do not. */
|
|
116
|
+
function isIdentTokenNode(node, sf) {
|
|
117
|
+
const start = node.getStart(sf);
|
|
118
|
+
const ch = sf.text[start];
|
|
119
|
+
return ch !== undefined && isIdentStartChar(ch) && identRunEnd(sf.text, start) === node.getEnd();
|
|
120
|
+
}
|
|
121
|
+
/** The identifier run at the node's START — the whole name when its
|
|
122
|
+
* spelling is plain, the byte prefix merve consumed when a unicode escape
|
|
123
|
+
* interrupts the run mid-name. */
|
|
124
|
+
function identPrefixOf(node, sf) {
|
|
125
|
+
const start = node.getStart(sf);
|
|
126
|
+
return sf.text.slice(start, identRunEnd(sf.text, start));
|
|
127
|
+
}
|
|
128
|
+
/** The bare `require('spec')` call merve recognizes. */
|
|
129
|
+
export function bareRequireSpecOf(e) {
|
|
130
|
+
if (!ts.isCallExpression(e) || e.questionDotToken !== undefined)
|
|
131
|
+
return null;
|
|
132
|
+
if (!ts.isIdentifier(e.expression) || e.expression.text !== "require")
|
|
133
|
+
return null;
|
|
134
|
+
if (e.arguments.length !== 1)
|
|
135
|
+
return null;
|
|
136
|
+
const arg = e.arguments[0];
|
|
137
|
+
return ts.isStringLiteral(arg) ? arg.text : null;
|
|
138
|
+
}
|
|
139
|
+
/** True when `e` is exactly the `exports` identifier. */
|
|
140
|
+
export function isExportsIdent(e) {
|
|
141
|
+
return ts.isIdentifier(e) && e.text === "exports";
|
|
142
|
+
}
|
|
143
|
+
/** True when `e` is exactly `module.exports`. */
|
|
144
|
+
export function isModuleExports(e) {
|
|
145
|
+
return (ts.isPropertyAccessExpression(e) &&
|
|
146
|
+
e.questionDotToken === undefined &&
|
|
147
|
+
ts.isIdentifier(e.expression) &&
|
|
148
|
+
e.expression.text === "module" &&
|
|
149
|
+
ts.isIdentifier(e.name) &&
|
|
150
|
+
e.name.text === "exports");
|
|
151
|
+
}
|
|
152
|
+
/** The `require(...)` call at the very START of `e`'s source span, if any:
|
|
153
|
+
* merve records the reexport as soon as it lexes `require('spec')` and any
|
|
154
|
+
* TRAILER (`.foo`, `()`, `|| y`, `? a : b`) merely stops whatever scan
|
|
155
|
+
* follows — so the recognizer descends the leftmost-child chain while it
|
|
156
|
+
* still starts where `e` starts. A ParenthesizedExpression breaks the
|
|
157
|
+
* chain naturally (its child starts after the `(`), matching merve. */
|
|
158
|
+
function leadingRequireOf(e, sf) {
|
|
159
|
+
const start = e.getStart(sf);
|
|
160
|
+
let cur = e;
|
|
161
|
+
for (;;) {
|
|
162
|
+
const spec = bareRequireSpecOf(cur);
|
|
163
|
+
if (spec !== null && cur.getStart(sf) === start)
|
|
164
|
+
return { spec, end: cur.getEnd() };
|
|
165
|
+
let first;
|
|
166
|
+
ts.forEachChild(cur, (c) => {
|
|
167
|
+
first ??= c;
|
|
168
|
+
});
|
|
169
|
+
if (first === undefined || first.getStart(sf) !== start)
|
|
170
|
+
return null;
|
|
171
|
+
cur = first;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
/** Skips ECMA whitespace and comments forward from `pos` (merve's
|
|
175
|
+
* commentWhitespace) and answers the next meaningful character (or ""). */
|
|
176
|
+
function nextMeaningfulChar(text, pos) {
|
|
177
|
+
let i = pos;
|
|
178
|
+
while (i < text.length) {
|
|
179
|
+
const ch = text[i];
|
|
180
|
+
if (ch === " " || (ch.charCodeAt(0) > 8 && ch.charCodeAt(0) < 14)) {
|
|
181
|
+
i++;
|
|
182
|
+
}
|
|
183
|
+
else if (ch === "/" && text[i + 1] === "/") {
|
|
184
|
+
const nl = text.indexOf("\n", i + 2);
|
|
185
|
+
if (nl < 0)
|
|
186
|
+
return "";
|
|
187
|
+
i = nl;
|
|
188
|
+
}
|
|
189
|
+
else if (ch === "/" && text[i + 1] === "*") {
|
|
190
|
+
const close = text.indexOf("*/", i + 2);
|
|
191
|
+
if (close < 0)
|
|
192
|
+
return "";
|
|
193
|
+
i = close + 2;
|
|
194
|
+
}
|
|
195
|
+
else {
|
|
196
|
+
return ch;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
return "";
|
|
200
|
+
}
|
|
201
|
+
/** The `module.exports = { ... }` table scan — merve's tryParseLiteralExports
|
|
202
|
+
* over the AST. Adds detected names to `out`, appends reexports (spread /
|
|
203
|
+
* value requires) to `reexports`, stops at the first unshapeable prop. */
|
|
204
|
+
function scanTableLiteral(obj, sf, out, reexports) {
|
|
205
|
+
const text = sf.text;
|
|
206
|
+
for (const prop of obj.properties) {
|
|
207
|
+
if (ts.isGetAccessor(prop)) {
|
|
208
|
+
// `get name() {...}` — merve's explicit early termination... unless
|
|
209
|
+
// the accessor's NAME is not a plain identifier, where the lexer
|
|
210
|
+
// already added the word "get" as a shorthand key before the odd
|
|
211
|
+
// token stops it (`get [k]() {}` exports "get").
|
|
212
|
+
if (!ts.isIdentifier(prop.name) || !sourceSpellsIdentifier(prop.name, sf))
|
|
213
|
+
out.add("get");
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
if (ts.isSetAccessor(prop)) {
|
|
217
|
+
// The word `set` lexes as a shorthand key, then the accessor name
|
|
218
|
+
// stops the scan — Node really does export "set" (value undefined).
|
|
219
|
+
out.add("set");
|
|
220
|
+
return;
|
|
221
|
+
}
|
|
222
|
+
if (ts.isMethodDeclaration(prop)) {
|
|
223
|
+
// `name() {}` adds the name, then `(` stops the scan. The modifier /
|
|
224
|
+
// asterisk spellings shift which token the lexer takes as the key:
|
|
225
|
+
// `async name()` exports "async", `*name()` exports nothing. A
|
|
226
|
+
// unicode escape mid-name adds only the byte prefix before it (the
|
|
227
|
+
// key adds BEFORE the separator check fails — see the key path).
|
|
228
|
+
if (prop.asteriskToken !== undefined)
|
|
229
|
+
return;
|
|
230
|
+
const mods = ts.getModifiers(prop) ?? [];
|
|
231
|
+
if (mods.some((m) => m.kind === ts.SyntaxKind.AsyncKeyword)) {
|
|
232
|
+
out.add("async");
|
|
233
|
+
return;
|
|
234
|
+
}
|
|
235
|
+
if (ts.isIdentifier(prop.name) && sourceSpellsIdentifier(prop.name, sf))
|
|
236
|
+
out.add(identPrefixOf(prop.name, sf));
|
|
237
|
+
return;
|
|
238
|
+
}
|
|
239
|
+
if (ts.isShorthandPropertyAssignment(prop)) {
|
|
240
|
+
if (prop.objectAssignmentInitializer !== undefined)
|
|
241
|
+
return; // `{ a = 1 }` — cover pattern, not a table
|
|
242
|
+
if (!ts.isIdentifier(prop.name) || !sourceSpellsIdentifier(prop.name, sf))
|
|
243
|
+
return;
|
|
244
|
+
if (!isIdentTokenNode(prop.name, sf)) {
|
|
245
|
+
// an escape mid-name: the byte prefix adds, then the backslash
|
|
246
|
+
// fails the separator check and stops the scan
|
|
247
|
+
out.add(identPrefixOf(prop.name, sf));
|
|
248
|
+
return;
|
|
249
|
+
}
|
|
250
|
+
out.add(prop.name.text);
|
|
251
|
+
continue; // whitespace before `,` is skipped on the shorthand path
|
|
252
|
+
}
|
|
253
|
+
if (ts.isSpreadAssignment(prop)) {
|
|
254
|
+
const req = leadingRequireOf(prop.expression, sf);
|
|
255
|
+
let consumedEnd;
|
|
256
|
+
if (req !== null) {
|
|
257
|
+
reexports.push(req.spec);
|
|
258
|
+
consumedEnd = req.end;
|
|
259
|
+
}
|
|
260
|
+
else if (sourceSpellsIdentifier(prop.expression, sf)) {
|
|
261
|
+
consumedEnd = identRunEnd(text, prop.expression.getStart(sf));
|
|
262
|
+
}
|
|
263
|
+
else {
|
|
264
|
+
return; // `...{}` and friends stop the scan
|
|
265
|
+
}
|
|
266
|
+
// The spread path DOES skip whitespace/comments before the `,` check
|
|
267
|
+
// — `...o , a: b` continues where `a: b , c` would stop.
|
|
268
|
+
const ch = nextMeaningfulChar(text, consumedEnd);
|
|
269
|
+
if (ch === ",")
|
|
270
|
+
continue;
|
|
271
|
+
return; // `...o.p`, `...f()` — the leftover token stops the scan
|
|
272
|
+
// (a `}` here means the spread was last; stopping is the same)
|
|
273
|
+
}
|
|
274
|
+
if (ts.isPropertyAssignment(prop)) {
|
|
275
|
+
const name = prop.name;
|
|
276
|
+
let key = null;
|
|
277
|
+
if (ts.isIdentifier(name) && sourceSpellsIdentifier(name, sf)) {
|
|
278
|
+
if (!isIdentTokenNode(name, sf)) {
|
|
279
|
+
// merve adds the key BEFORE validating the `:` — an escape
|
|
280
|
+
// mid-name adds the byte prefix, then the backslash stops the
|
|
281
|
+
// scan (probed: the key's prefix exports, nothing after does)
|
|
282
|
+
out.add(identPrefixOf(name, sf));
|
|
283
|
+
return;
|
|
284
|
+
}
|
|
285
|
+
key = name.text;
|
|
286
|
+
}
|
|
287
|
+
else if (ts.isStringLiteral(name)) {
|
|
288
|
+
key = name.text;
|
|
289
|
+
}
|
|
290
|
+
if (key === null)
|
|
291
|
+
return; // numeric / computed / template keys stop the scan
|
|
292
|
+
const value = prop.initializer;
|
|
293
|
+
const req = leadingRequireOf(value, sf);
|
|
294
|
+
if (req !== null) {
|
|
295
|
+
// A require VALUE adds the key, records the reexport, and stops
|
|
296
|
+
// the scan UNCONDITIONALLY — probed: `{ a: require('x'), b: v }`
|
|
297
|
+
// exports `a` plus x's names and never `b` (the spread path above
|
|
298
|
+
// genuinely continues past a `,`; the value path does not).
|
|
299
|
+
out.add(key);
|
|
300
|
+
reexports.push(req.spec);
|
|
301
|
+
return;
|
|
302
|
+
}
|
|
303
|
+
const start = value.getStart(sf);
|
|
304
|
+
const ch0 = text[start];
|
|
305
|
+
if (ch0 === undefined || !isIdentStartChar(ch0))
|
|
306
|
+
return; // literal values stop WITHOUT adding the key
|
|
307
|
+
const consumedEnd = identRunEnd(text, start);
|
|
308
|
+
out.add(key);
|
|
309
|
+
// NO whitespace skip here — merve requires `,` or `}` as the very
|
|
310
|
+
// next character after the consumed value token. `a: b , c` and
|
|
311
|
+
// `a: b.c, d` both keep `a` and stop.
|
|
312
|
+
const ch = text[consumedEnd];
|
|
313
|
+
if (ch === ",")
|
|
314
|
+
continue;
|
|
315
|
+
return; // `}` ends the props anyway; anything else stops the scan
|
|
316
|
+
}
|
|
317
|
+
return; // any other prop kind stops the scan
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
/** `Object.defineProperty(exports|module.exports, 'name', {...})` — adds
|
|
321
|
+
* the name for merve's exact descriptor shapes (see the header). */
|
|
322
|
+
function scanDefineProperty(call, sf, out) {
|
|
323
|
+
const callee = call.expression;
|
|
324
|
+
if (!ts.isPropertyAccessExpression(callee) ||
|
|
325
|
+
callee.questionDotToken !== undefined ||
|
|
326
|
+
!ts.isIdentifier(callee.expression) ||
|
|
327
|
+
callee.expression.text !== "Object" ||
|
|
328
|
+
!ts.isIdentifier(callee.name) ||
|
|
329
|
+
callee.name.text !== "defineProperty") {
|
|
330
|
+
return;
|
|
331
|
+
}
|
|
332
|
+
if (call.arguments.length !== 3)
|
|
333
|
+
return;
|
|
334
|
+
const [recv, nameArg, desc] = call.arguments;
|
|
335
|
+
if (!isExportsIdent(recv) && !isModuleExports(recv))
|
|
336
|
+
return;
|
|
337
|
+
if (!ts.isStringLiteral(nameArg))
|
|
338
|
+
return;
|
|
339
|
+
if (!ts.isObjectLiteralExpression(desc))
|
|
340
|
+
return;
|
|
341
|
+
let i = 0;
|
|
342
|
+
const props = desc.properties;
|
|
343
|
+
const first = props[0];
|
|
344
|
+
if (first !== undefined &&
|
|
345
|
+
ts.isPropertyAssignment(first) &&
|
|
346
|
+
ts.isIdentifier(first.name) &&
|
|
347
|
+
first.name.text === "enumerable") {
|
|
348
|
+
// Only the exact `enumerable: true` prefix is consumed; anything else
|
|
349
|
+
// in the slot fails the whole match.
|
|
350
|
+
if (first.initializer.kind !== ts.SyntaxKind.TrueKeyword)
|
|
351
|
+
return;
|
|
352
|
+
i = 1;
|
|
353
|
+
}
|
|
354
|
+
const p = props[i];
|
|
355
|
+
if (p === undefined)
|
|
356
|
+
return;
|
|
357
|
+
if (ts.isPropertyAssignment(p) && ts.isIdentifier(p.name) && p.name.text === "value") {
|
|
358
|
+
out.add(nameArg.text); // merve stops right at `value:` — the value and the rest of the descriptor are unchecked
|
|
359
|
+
return;
|
|
360
|
+
}
|
|
361
|
+
// The getter forms: `get() {...}` method, or `get: function [name]() {...}`
|
|
362
|
+
// (never an arrow), body EXACTLY `return IDENT` / IDENT.IDENT / IDENT['s'],
|
|
363
|
+
// and the getter must be the descriptor's LAST property.
|
|
364
|
+
const body = getterBodyOf(p);
|
|
365
|
+
if (body === undefined || i !== props.length - 1)
|
|
366
|
+
return;
|
|
367
|
+
if (body.statements.length !== 1)
|
|
368
|
+
return;
|
|
369
|
+
const ret = body.statements[0];
|
|
370
|
+
if (!ts.isReturnStatement(ret) || ret.expression === undefined)
|
|
371
|
+
return;
|
|
372
|
+
const r = ret.expression;
|
|
373
|
+
const returnsIdentish = isIdentTokenNode(r, sf) ||
|
|
374
|
+
(ts.isPropertyAccessExpression(r) && r.questionDotToken === undefined && isIdentTokenNode(r.expression, sf) && isIdentTokenNode(r.name, sf)) ||
|
|
375
|
+
(ts.isElementAccessExpression(r) && r.questionDotToken === undefined && isIdentTokenNode(r.expression, sf) && ts.isStringLiteral(r.argumentExpression));
|
|
376
|
+
if (returnsIdentish)
|
|
377
|
+
out.add(nameArg.text);
|
|
378
|
+
}
|
|
379
|
+
/** The body of a `get() {...}` method / `get: function [name]() {...}`
|
|
380
|
+
* descriptor prop (merve's two getter spellings — arrows never match). */
|
|
381
|
+
function getterBodyOf(p) {
|
|
382
|
+
if (ts.isMethodDeclaration(p) &&
|
|
383
|
+
ts.isIdentifier(p.name) &&
|
|
384
|
+
p.name.text === "get" &&
|
|
385
|
+
p.asteriskToken === undefined &&
|
|
386
|
+
(ts.getModifiers(p) ?? []).length === 0 &&
|
|
387
|
+
p.parameters.length === 0) {
|
|
388
|
+
return p.body;
|
|
389
|
+
}
|
|
390
|
+
if (ts.isPropertyAssignment(p) &&
|
|
391
|
+
ts.isIdentifier(p.name) &&
|
|
392
|
+
p.name.text === "get" &&
|
|
393
|
+
ts.isFunctionExpression(p.initializer) &&
|
|
394
|
+
p.initializer.parameters.length === 0 &&
|
|
395
|
+
p.initializer.asteriskToken === undefined &&
|
|
396
|
+
(ts.getModifiers(p.initializer) ?? []).length === 0) {
|
|
397
|
+
return p.initializer.body;
|
|
398
|
+
}
|
|
399
|
+
return undefined;
|
|
400
|
+
}
|
|
401
|
+
/* ── the transpiler star-reexport patterns ─────────────────────────────── */
|
|
402
|
+
/** The star-export call: callee is `__export` or `__exportStar` (bare, or
|
|
403
|
+
* the NAME of any member chain — `tslib_1.__exportStar`, `a.b.__exportStar`)
|
|
404
|
+
* and the first argument leads with `require('spec')`. Byte quirk: the
|
|
405
|
+
* source must read `NAME(require` with no trivia between the name, the
|
|
406
|
+
* `(`, and `require` — one space anywhere in that seam kills the match
|
|
407
|
+
* (probed; spaces INSIDE the require call are fine). */
|
|
408
|
+
function starExportSpecOf(call, sf) {
|
|
409
|
+
if (call.questionDotToken !== undefined)
|
|
410
|
+
return null;
|
|
411
|
+
const callee = call.expression;
|
|
412
|
+
let nameNode;
|
|
413
|
+
if (ts.isIdentifier(callee))
|
|
414
|
+
nameNode = callee;
|
|
415
|
+
else if (ts.isPropertyAccessExpression(callee) && ts.isIdentifier(callee.name))
|
|
416
|
+
nameNode = callee.name;
|
|
417
|
+
if (nameNode === undefined)
|
|
418
|
+
return null;
|
|
419
|
+
if (nameNode.text !== "__export" && nameNode.text !== "__exportStar")
|
|
420
|
+
return null;
|
|
421
|
+
if (!sourceSpellsIdentifier(nameNode, sf))
|
|
422
|
+
return null;
|
|
423
|
+
const arg0 = call.arguments[0];
|
|
424
|
+
if (arg0 === undefined)
|
|
425
|
+
return null;
|
|
426
|
+
if (!byteAdjacentParen(sf, nameNode.getEnd(), arg0.getStart(sf)))
|
|
427
|
+
return null;
|
|
428
|
+
return leadingRequireOf(arg0, sf)?.spec ?? null;
|
|
429
|
+
}
|
|
430
|
+
/** True when the bytes between a callee name ending at `nameEnd` and its
|
|
431
|
+
* first argument starting at `argStart` are exactly `(` — merve's anchored
|
|
432
|
+
* `NAME(require` seam. */
|
|
433
|
+
function byteAdjacentParen(sf, nameEnd, argStart) {
|
|
434
|
+
return argStart === nameEnd + 1 && sf.text[nameEnd] === "(";
|
|
435
|
+
}
|
|
436
|
+
/** The Babel star-copy assignment: a variable statement whose FIRST
|
|
437
|
+
* declarator is `ID = require('spec')` or
|
|
438
|
+
* `ID = _interopRequireWildcard(require('spec'))` (the wildcard helper a
|
|
439
|
+
* bare identifier, byte-adjacent to `(require` like the star form —
|
|
440
|
+
* probed: a member-qualified helper or one space after its paren misses).
|
|
441
|
+
* Answers [ID, spec]. */
|
|
442
|
+
function starAssignOf(stmt, sf) {
|
|
443
|
+
const decl = stmt.declarationList.declarations[0];
|
|
444
|
+
if (decl === undefined || !ts.isIdentifier(decl.name) || !sourceSpellsIdentifier(decl.name, sf))
|
|
445
|
+
return null;
|
|
446
|
+
const init = decl.initializer;
|
|
447
|
+
if (init === undefined)
|
|
448
|
+
return null;
|
|
449
|
+
const direct = bareRequireSpecOf(init);
|
|
450
|
+
if (direct !== null)
|
|
451
|
+
return [decl.name.text, direct];
|
|
452
|
+
if (ts.isCallExpression(init) &&
|
|
453
|
+
init.questionDotToken === undefined &&
|
|
454
|
+
ts.isIdentifier(init.expression) &&
|
|
455
|
+
init.expression.text === "_interopRequireWildcard" &&
|
|
456
|
+
init.arguments.length >= 1) {
|
|
457
|
+
const arg0 = init.arguments[0];
|
|
458
|
+
if (!byteAdjacentParen(sf, init.expression.getEnd(), arg0.getStart(sf)))
|
|
459
|
+
return null;
|
|
460
|
+
const spec = bareRequireSpecOf(arg0);
|
|
461
|
+
if (spec !== null)
|
|
462
|
+
return [decl.name.text, spec];
|
|
463
|
+
}
|
|
464
|
+
return null;
|
|
465
|
+
}
|
|
466
|
+
/** `exports` / `module.exports` — the copy loop accepts either spelling. */
|
|
467
|
+
function isExportsTarget(e) {
|
|
468
|
+
return isExportsIdent(e) || isModuleExports(e);
|
|
469
|
+
}
|
|
470
|
+
/** `X === 'str'` / `X !== 'str'` with X the loop key identifier. */
|
|
471
|
+
function keyStringCompare(e, key, op, str) {
|
|
472
|
+
return (ts.isBinaryExpression(e) &&
|
|
473
|
+
e.operatorToken.kind === op &&
|
|
474
|
+
ts.isIdentifier(e.left) &&
|
|
475
|
+
e.left.text === key &&
|
|
476
|
+
ts.isStringLiteral(e.right) &&
|
|
477
|
+
e.right.text === str);
|
|
478
|
+
}
|
|
479
|
+
/** `Object[.prototype].hasOwnProperty.call(ANY_ID, KEY)` — the guard merve
|
|
480
|
+
* accepts in both loop filter forms. */
|
|
481
|
+
function isHasOwnCall(e, key) {
|
|
482
|
+
if (!ts.isCallExpression(e) || e.questionDotToken !== undefined)
|
|
483
|
+
return false;
|
|
484
|
+
const callee = e.expression;
|
|
485
|
+
if (!ts.isPropertyAccessExpression(callee) || !ts.isIdentifier(callee.name) || callee.name.text !== "call")
|
|
486
|
+
return false;
|
|
487
|
+
let cur = callee.expression;
|
|
488
|
+
if (!ts.isPropertyAccessExpression(cur) || !ts.isIdentifier(cur.name) || cur.name.text !== "hasOwnProperty")
|
|
489
|
+
return false;
|
|
490
|
+
cur = cur.expression;
|
|
491
|
+
if (ts.isPropertyAccessExpression(cur) && ts.isIdentifier(cur.name) && cur.name.text === "prototype")
|
|
492
|
+
cur = cur.expression;
|
|
493
|
+
if (!ts.isIdentifier(cur) || cur.text !== "Object")
|
|
494
|
+
return false;
|
|
495
|
+
if (e.arguments.length !== 2)
|
|
496
|
+
return false;
|
|
497
|
+
const [recv, k] = e.arguments;
|
|
498
|
+
return ts.isIdentifier(recv) && ts.isIdentifier(k) && k.text === key;
|
|
499
|
+
}
|
|
500
|
+
/** `ID.hasOwnProperty(KEY)` — form B's alternative hasOwn spelling. */
|
|
501
|
+
function isDirectHasOwnCall(e, key) {
|
|
502
|
+
return (ts.isCallExpression(e) &&
|
|
503
|
+
e.questionDotToken === undefined &&
|
|
504
|
+
ts.isPropertyAccessExpression(e.expression) &&
|
|
505
|
+
ts.isIdentifier(e.expression.name) &&
|
|
506
|
+
e.expression.name.text === "hasOwnProperty" &&
|
|
507
|
+
ts.isIdentifier(e.expression.expression) &&
|
|
508
|
+
e.arguments.length === 1 &&
|
|
509
|
+
ts.isIdentifier(e.arguments[0]) &&
|
|
510
|
+
e.arguments[0].text === key);
|
|
511
|
+
}
|
|
512
|
+
/** The loop-body COPY statement: `EXPORTS[KEY] = ID[KEY];` or the
|
|
513
|
+
* enumerable-getter defineProperty (`Object.defineProperty(EXPORTS, KEY,
|
|
514
|
+
* { enumerable: true, get[: function[name]] () { return ID[KEY]; } })`). */
|
|
515
|
+
function isCopyStatement(stmt, id1, key) {
|
|
516
|
+
if (!ts.isExpressionStatement(stmt))
|
|
517
|
+
return false;
|
|
518
|
+
const e = stmt.expression;
|
|
519
|
+
if (ts.isBinaryExpression(e) && e.operatorToken.kind === ts.SyntaxKind.EqualsToken) {
|
|
520
|
+
return isKeyedAccess(e.left, isExportsTarget, key) && isKeyedAccess(e.right, (x) => ts.isIdentifier(x) && x.text === id1, key);
|
|
521
|
+
}
|
|
522
|
+
if (!ts.isCallExpression(e) || e.questionDotToken !== undefined)
|
|
523
|
+
return false;
|
|
524
|
+
const callee = e.expression;
|
|
525
|
+
if (!ts.isPropertyAccessExpression(callee) ||
|
|
526
|
+
!ts.isIdentifier(callee.expression) ||
|
|
527
|
+
callee.expression.text !== "Object" ||
|
|
528
|
+
!ts.isIdentifier(callee.name) ||
|
|
529
|
+
callee.name.text !== "defineProperty") {
|
|
530
|
+
return false;
|
|
531
|
+
}
|
|
532
|
+
if (e.arguments.length !== 3)
|
|
533
|
+
return false;
|
|
534
|
+
const [recv, nameArg, desc] = e.arguments;
|
|
535
|
+
if (!isExportsTarget(recv))
|
|
536
|
+
return false;
|
|
537
|
+
if (!ts.isIdentifier(nameArg) || nameArg.text !== key)
|
|
538
|
+
return false;
|
|
539
|
+
if (!ts.isObjectLiteralExpression(desc) || desc.properties.length !== 2)
|
|
540
|
+
return false;
|
|
541
|
+
const [en, get] = desc.properties;
|
|
542
|
+
if (!ts.isPropertyAssignment(en) || !ts.isIdentifier(en.name) || en.name.text !== "enumerable")
|
|
543
|
+
return false;
|
|
544
|
+
if (en.initializer.kind !== ts.SyntaxKind.TrueKeyword)
|
|
545
|
+
return false;
|
|
546
|
+
const body = getterBodyOf(get);
|
|
547
|
+
if (body === undefined || body.statements.length !== 1)
|
|
548
|
+
return false;
|
|
549
|
+
const ret = body.statements[0];
|
|
550
|
+
if (!ts.isReturnStatement(ret) || ret.expression === undefined)
|
|
551
|
+
return false;
|
|
552
|
+
return isKeyedAccess(ret.expression, (x) => ts.isIdentifier(x) && x.text === id1, key);
|
|
553
|
+
}
|
|
554
|
+
/** `RECV[KEY]` where `recvOk` approves the receiver. */
|
|
555
|
+
function isKeyedAccess(e, recvOk, key) {
|
|
556
|
+
return (ts.isElementAccessExpression(e) &&
|
|
557
|
+
e.questionDotToken === undefined &&
|
|
558
|
+
recvOk(e.expression) &&
|
|
559
|
+
ts.isIdentifier(e.argumentExpression) &&
|
|
560
|
+
e.argumentExpression.text === key);
|
|
561
|
+
}
|
|
562
|
+
/** An UNBRACED bare `return;` — merve reads the literal `return` token
|
|
563
|
+
* right after the filter's `)`; a `{ return; }` block misses (probed). */
|
|
564
|
+
function isBareReturn(stmt) {
|
|
565
|
+
return ts.isReturnStatement(stmt) && stmt.expression === undefined;
|
|
566
|
+
}
|
|
567
|
+
/** The Babel copy loop `Object.keys(ID1).forEach(function (KEY) {...})` —
|
|
568
|
+
* answers ID1 when the whole shape matches merve's EXPORT_STAR_LIB
|
|
569
|
+
* grammar; the caller links ID1 to a star assignment for the spec. */
|
|
570
|
+
function starLoopIdOf(call, sf) {
|
|
571
|
+
if (call.questionDotToken !== undefined)
|
|
572
|
+
return null;
|
|
573
|
+
const callee = call.expression;
|
|
574
|
+
if (!ts.isPropertyAccessExpression(callee) || callee.questionDotToken !== undefined)
|
|
575
|
+
return null;
|
|
576
|
+
if (!ts.isIdentifier(callee.name) || callee.name.text !== "forEach")
|
|
577
|
+
return null;
|
|
578
|
+
const keysCall = callee.expression;
|
|
579
|
+
if (!ts.isCallExpression(keysCall) || keysCall.questionDotToken !== undefined)
|
|
580
|
+
return null;
|
|
581
|
+
const keysCallee = keysCall.expression;
|
|
582
|
+
if (!ts.isPropertyAccessExpression(keysCallee) ||
|
|
583
|
+
!ts.isIdentifier(keysCallee.expression) ||
|
|
584
|
+
keysCallee.expression.text !== "Object" ||
|
|
585
|
+
!ts.isIdentifier(keysCallee.name) ||
|
|
586
|
+
keysCallee.name.text !== "keys") {
|
|
587
|
+
return null;
|
|
588
|
+
}
|
|
589
|
+
if (keysCall.arguments.length !== 1)
|
|
590
|
+
return null;
|
|
591
|
+
const id1Node = keysCall.arguments[0];
|
|
592
|
+
if (!ts.isIdentifier(id1Node) || !sourceSpellsIdentifier(id1Node, sf))
|
|
593
|
+
return null;
|
|
594
|
+
const id1 = id1Node.text;
|
|
595
|
+
const fn = call.arguments[0];
|
|
596
|
+
if (fn === undefined || !ts.isFunctionExpression(fn))
|
|
597
|
+
return null; // arrows never match (probed)
|
|
598
|
+
if (fn.name !== undefined)
|
|
599
|
+
return null; // a NAMED callback misses (probed)
|
|
600
|
+
if (fn.asteriskToken !== undefined || (ts.getModifiers(fn) ?? []).length > 0)
|
|
601
|
+
return null;
|
|
602
|
+
if (fn.parameters.length !== 1)
|
|
603
|
+
return null;
|
|
604
|
+
const keyParam = fn.parameters[0];
|
|
605
|
+
if (!ts.isIdentifier(keyParam.name) || keyParam.initializer !== undefined || keyParam.dotDotDotToken !== undefined)
|
|
606
|
+
return null;
|
|
607
|
+
const key = keyParam.name.text;
|
|
608
|
+
const stmts = fn.body.statements;
|
|
609
|
+
// Form B: the single `if (KEY !== 'default' [&& !hasOwn]) COPY` statement.
|
|
610
|
+
if (stmts.length === 1 && ts.isIfStatement(stmts[0]) && stmts[0].elseStatement === undefined) {
|
|
611
|
+
const ifStmt = stmts[0];
|
|
612
|
+
let cond = ifStmt.expression;
|
|
613
|
+
if (ts.isBinaryExpression(cond) && cond.operatorToken.kind === ts.SyntaxKind.AmpersandAmpersandToken) {
|
|
614
|
+
const right = cond.right;
|
|
615
|
+
if (!ts.isPrefixUnaryExpression(right) ||
|
|
616
|
+
right.operator !== ts.SyntaxKind.ExclamationToken ||
|
|
617
|
+
!(isHasOwnCall(right.operand, key) || isDirectHasOwnCall(right.operand, key))) {
|
|
618
|
+
return null;
|
|
619
|
+
}
|
|
620
|
+
cond = cond.left;
|
|
621
|
+
}
|
|
622
|
+
if (!keyStringCompare(cond, key, ts.SyntaxKind.ExclamationEqualsEqualsToken, "default"))
|
|
623
|
+
return null;
|
|
624
|
+
return isCopyStatement(ifStmt.thenStatement, id1, key) ? id1 : null;
|
|
625
|
+
}
|
|
626
|
+
// Form A: `if (KEY === 'default' || KEY === '__esModule') return;` (exact
|
|
627
|
+
// order), then optional hasOwn / in-exports guards, then the copy.
|
|
628
|
+
if (stmts.length < 2 || stmts.length > 4)
|
|
629
|
+
return null;
|
|
630
|
+
const head = stmts[0];
|
|
631
|
+
if (!ts.isIfStatement(head) || head.elseStatement !== undefined || !isBareReturn(head.thenStatement))
|
|
632
|
+
return null;
|
|
633
|
+
const headCond = head.expression;
|
|
634
|
+
if (!ts.isBinaryExpression(headCond) ||
|
|
635
|
+
headCond.operatorToken.kind !== ts.SyntaxKind.BarBarToken ||
|
|
636
|
+
!keyStringCompare(headCond.left, key, ts.SyntaxKind.EqualsEqualsEqualsToken, "default") ||
|
|
637
|
+
!keyStringCompare(headCond.right, key, ts.SyntaxKind.EqualsEqualsEqualsToken, "__esModule")) {
|
|
638
|
+
return null;
|
|
639
|
+
}
|
|
640
|
+
let i = 1;
|
|
641
|
+
if (i < stmts.length - 1) {
|
|
642
|
+
const s = stmts[i];
|
|
643
|
+
if (ts.isIfStatement(s) && s.elseStatement === undefined && isBareReturn(s.thenStatement) && isHasOwnCall(s.expression, key))
|
|
644
|
+
i++;
|
|
645
|
+
}
|
|
646
|
+
if (i < stmts.length - 1) {
|
|
647
|
+
// `if (KEY in EXPORTS && EXPORTS[KEY] === ID1[KEY]) return;`
|
|
648
|
+
const s = stmts[i];
|
|
649
|
+
if (ts.isIfStatement(s) && s.elseStatement === undefined && isBareReturn(s.thenStatement)) {
|
|
650
|
+
const c = s.expression;
|
|
651
|
+
const inOk = ts.isBinaryExpression(c) &&
|
|
652
|
+
c.operatorToken.kind === ts.SyntaxKind.AmpersandAmpersandToken &&
|
|
653
|
+
ts.isBinaryExpression(c.left) &&
|
|
654
|
+
c.left.operatorToken.kind === ts.SyntaxKind.InKeyword &&
|
|
655
|
+
ts.isIdentifier(c.left.left) &&
|
|
656
|
+
c.left.left.text === key &&
|
|
657
|
+
isExportsTarget(c.left.right) &&
|
|
658
|
+
ts.isBinaryExpression(c.right) &&
|
|
659
|
+
c.right.operatorToken.kind === ts.SyntaxKind.EqualsEqualsEqualsToken &&
|
|
660
|
+
isKeyedAccess(c.right.left, isExportsTarget, key) &&
|
|
661
|
+
isKeyedAccess(c.right.right, (x) => ts.isIdentifier(x) && x.text === id1, key);
|
|
662
|
+
if (inOk)
|
|
663
|
+
i++;
|
|
664
|
+
}
|
|
665
|
+
}
|
|
666
|
+
if (i !== stmts.length - 1)
|
|
667
|
+
return null;
|
|
668
|
+
return isCopyStatement(stmts[i], id1, key) ? id1 : null;
|
|
669
|
+
}
|
|
670
|
+
/* ── the walk ──────────────────────────────────────────────────────────── */
|
|
671
|
+
/** Node kinds whose CHILDREN sit behind a `{` (or `${`) — merve's
|
|
672
|
+
* "top-level" for the star patterns is brace depth 0, so an unbraced
|
|
673
|
+
* `if (c) __exportStar(...)` still counts while any block hides it. */
|
|
674
|
+
function opensBraces(n) {
|
|
675
|
+
switch (n.kind) {
|
|
676
|
+
case ts.SyntaxKind.Block:
|
|
677
|
+
case ts.SyntaxKind.ModuleBlock:
|
|
678
|
+
case ts.SyntaxKind.CaseBlock:
|
|
679
|
+
case ts.SyntaxKind.ObjectLiteralExpression:
|
|
680
|
+
case ts.SyntaxKind.ObjectBindingPattern:
|
|
681
|
+
case ts.SyntaxKind.ClassDeclaration:
|
|
682
|
+
case ts.SyntaxKind.ClassExpression:
|
|
683
|
+
case ts.SyntaxKind.EnumDeclaration:
|
|
684
|
+
case ts.SyntaxKind.TemplateSpan:
|
|
685
|
+
return true;
|
|
686
|
+
default:
|
|
687
|
+
return false;
|
|
688
|
+
}
|
|
689
|
+
}
|
|
690
|
+
/** Preorder walk with an EXPLICIT stack (minified npm bundles nest deeply
|
|
691
|
+
* enough to overflow recursive visits) carrying each node's brace depth. */
|
|
692
|
+
function walkWithBraceDepth(sf, cb) {
|
|
693
|
+
const stack = [[sf, 0]];
|
|
694
|
+
const children = [];
|
|
695
|
+
while (stack.length > 0) {
|
|
696
|
+
const [n, depth] = stack.pop();
|
|
697
|
+
cb(n, depth);
|
|
698
|
+
const childDepth = depth + (opensBraces(n) ? 1 : 0);
|
|
699
|
+
children.length = 0;
|
|
700
|
+
ts.forEachChild(n, (c) => {
|
|
701
|
+
children.push(c);
|
|
702
|
+
});
|
|
703
|
+
for (let i = children.length - 1; i >= 0; i--)
|
|
704
|
+
stack.push([children[i], childDepth]);
|
|
705
|
+
}
|
|
706
|
+
}
|
|
707
|
+
/** The single-file lex over SOURCE TEXT: every detection site, position-
|
|
708
|
+
* blind like the real lexer for the assignment forms (nested functions and
|
|
709
|
+
* dead branches count), brace-depth-0 for the star patterns. */
|
|
710
|
+
export function cjsLexedExportsOfFile(sf) {
|
|
711
|
+
const exports = new Set();
|
|
712
|
+
const events = [];
|
|
713
|
+
/** Star-assignment declarators by identifier — the Babel loop's linkage. */
|
|
714
|
+
const starAssigns = new Map();
|
|
715
|
+
walkWithBraceDepth(sf, (n, braceDepth) => {
|
|
716
|
+
if (ts.isBinaryExpression(n) && n.operatorToken.kind === ts.SyntaxKind.EqualsToken) {
|
|
717
|
+
const lhs = n.left;
|
|
718
|
+
if (ts.isPropertyAccessExpression(lhs) &&
|
|
719
|
+
lhs.questionDotToken === undefined &&
|
|
720
|
+
ts.isIdentifier(lhs.name) &&
|
|
721
|
+
(isExportsIdent(lhs.expression) || isModuleExports(lhs.expression)) &&
|
|
722
|
+
// the whole NAME must be one identifier run — a unicode escape
|
|
723
|
+
// mid-name breaks merve's run before the `=`, so the pattern
|
|
724
|
+
// never matches (probed: Node detects nothing)
|
|
725
|
+
isIdentTokenNode(lhs.name, sf)) {
|
|
726
|
+
exports.add(lhs.name.text);
|
|
727
|
+
}
|
|
728
|
+
else if (ts.isElementAccessExpression(lhs) &&
|
|
729
|
+
lhs.questionDotToken === undefined &&
|
|
730
|
+
ts.isStringLiteral(lhs.argumentExpression) &&
|
|
731
|
+
(isExportsIdent(lhs.expression) || isModuleExports(lhs.expression))) {
|
|
732
|
+
exports.add(lhs.argumentExpression.text);
|
|
733
|
+
}
|
|
734
|
+
else if (isModuleExports(lhs)) {
|
|
735
|
+
events.push({ pos: n.getStart(sf), kind: "assign", rhs: n.right });
|
|
736
|
+
}
|
|
737
|
+
}
|
|
738
|
+
else if (ts.isCallExpression(n)) {
|
|
739
|
+
scanDefineProperty(n, sf, exports);
|
|
740
|
+
if (braceDepth === 0) {
|
|
741
|
+
const starSpec = starExportSpecOf(n, sf);
|
|
742
|
+
if (starSpec !== null)
|
|
743
|
+
events.push({ pos: n.getStart(sf), kind: "spec", spec: starSpec });
|
|
744
|
+
const loopId = starLoopIdOf(n, sf);
|
|
745
|
+
if (loopId !== null)
|
|
746
|
+
events.push({ pos: n.getStart(sf), kind: "loop", id1: loopId });
|
|
747
|
+
}
|
|
748
|
+
}
|
|
749
|
+
else if (ts.isVariableStatement(n) && braceDepth === 0) {
|
|
750
|
+
const assign = starAssignOf(n, sf);
|
|
751
|
+
if (assign !== null) {
|
|
752
|
+
const specs = starAssigns.get(assign[0]);
|
|
753
|
+
if (specs === undefined)
|
|
754
|
+
starAssigns.set(assign[0], [assign[1]]);
|
|
755
|
+
else
|
|
756
|
+
specs.push(assign[1]);
|
|
757
|
+
}
|
|
758
|
+
}
|
|
759
|
+
});
|
|
760
|
+
events.sort((a, b) => a.pos - b.pos);
|
|
761
|
+
let reexports = [];
|
|
762
|
+
for (const ev of events) {
|
|
763
|
+
if (ev.kind === "spec") {
|
|
764
|
+
reexports.push(ev.spec);
|
|
765
|
+
}
|
|
766
|
+
else if (ev.kind === "loop") {
|
|
767
|
+
for (const spec of starAssigns.get(ev.id1) ?? [])
|
|
768
|
+
reexports.push(spec);
|
|
769
|
+
}
|
|
770
|
+
else {
|
|
771
|
+
reexports = []; // every `module.exports =` clears — stars included (probed)
|
|
772
|
+
const req = leadingRequireOf(ev.rhs, sf);
|
|
773
|
+
if (req !== null) {
|
|
774
|
+
reexports.push(req.spec);
|
|
775
|
+
}
|
|
776
|
+
else if (ts.isObjectLiteralExpression(ev.rhs)) {
|
|
777
|
+
// A PARENTHESIZED literal never matches — merve needs the `{` right
|
|
778
|
+
// after the `=` — so no unwrapping here (unlike the checker's view).
|
|
779
|
+
scanTableLiteral(ev.rhs, sf, exports, reexports);
|
|
780
|
+
}
|
|
781
|
+
}
|
|
782
|
+
}
|
|
783
|
+
return { exports, reexports };
|
|
784
|
+
}
|
|
785
|
+
/** The full Node-visible named-export set of a CommonJS module: its own
|
|
786
|
+
* lexed names plus, recursively, the names of every reexport target that
|
|
787
|
+
* itself resolves to a CommonJS module (Node's cjsPreparseModuleExports —
|
|
788
|
+
* ESM / JSON / builtin / unresolved targets contribute nothing). Generic
|
|
789
|
+
* over the caller's module handle and parser service.
|
|
790
|
+
* Cycle-safe. */
|
|
791
|
+
export function cjsVisibleNames(mod, lex, resolveCjsDep, memo = new Map()) {
|
|
792
|
+
const hit = memo.get(mod);
|
|
793
|
+
if (hit !== undefined)
|
|
794
|
+
return hit;
|
|
795
|
+
const { exports, reexports } = lex(mod);
|
|
796
|
+
memo.set(mod, exports); // set BEFORE recursing, like Node — cycles converge
|
|
797
|
+
for (const spec of reexports) {
|
|
798
|
+
const dep = resolveCjsDep(mod, spec);
|
|
799
|
+
if (dep === null)
|
|
800
|
+
continue;
|
|
801
|
+
for (const name of cjsVisibleNames(dep, lex, resolveCjsDep, memo))
|
|
802
|
+
exports.add(name);
|
|
803
|
+
}
|
|
804
|
+
return exports;
|
|
805
|
+
}
|
|
806
|
+
//# sourceMappingURL=cjs-syntax.js.map
|