@scriptc/compiler 0.4.0 → 0.4.2
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 +617 -83
- package/dist/backend/cycle-analysis.d.ts +2 -1
- package/dist/backend/cycle-analysis.js +4 -4
- package/dist/backend/cycle-analysis.js.map +1 -1
- package/dist/backend/cycle-mutability.d.ts +2 -1
- package/dist/backend/cycle-mutability.js +2 -2
- package/dist/backend/cycle-mutability.js.map +1 -1
- package/dist/backend/executable-features.js +10 -0
- package/dist/backend/executable-features.js.map +1 -1
- package/dist/backend/immutability.d.ts +2 -1
- package/dist/backend/immutability.js +2 -2
- package/dist/backend/immutability.js.map +1 -1
- package/dist/backend/library-pack.js +7 -0
- package/dist/backend/library-pack.js.map +1 -1
- package/dist/backend/link-plan-core.d.ts +2 -0
- package/dist/backend/link-plan-core.js +2 -0
- package/dist/backend/link-plan-core.js.map +1 -1
- package/dist/backend/link-plan.d.ts +1 -0
- package/dist/backend/link-plan.js +1 -0
- package/dist/backend/link-plan.js.map +1 -1
- package/dist/backend/llvm/alloc.d.ts +7 -3
- package/dist/backend/llvm/alloc.js +7 -4
- package/dist/backend/llvm/alloc.js.map +1 -1
- package/dist/backend/llvm/array-search.js +4 -1
- package/dist/backend/llvm/array-search.js.map +1 -1
- package/dist/backend/llvm/bytes-loop-versions.d.ts +23 -2
- package/dist/backend/llvm/bytes-loop-versions.js +115 -19
- package/dist/backend/llvm/bytes-loop-versions.js.map +1 -1
- package/dist/backend/llvm/bytes-loop-versions.test.js +131 -0
- package/dist/backend/llvm/bytes-loop-versions.test.js.map +1 -1
- package/dist/backend/llvm/classes.d.ts +99 -2
- package/dist/backend/llvm/classes.js +436 -57
- package/dist/backend/llvm/classes.js.map +1 -1
- package/dist/backend/llvm/classes.test.js +235 -16
- package/dist/backend/llvm/classes.test.js.map +1 -1
- package/dist/backend/llvm/common.d.ts +21 -5
- package/dist/backend/llvm/common.js +50 -5
- package/dist/backend/llvm/common.js.map +1 -1
- package/dist/backend/llvm/constant-callbacks.js +8 -4
- package/dist/backend/llvm/constant-callbacks.js.map +1 -1
- package/dist/backend/llvm/constant-callbacks.test.js +4 -4
- package/dist/backend/llvm/constant-callbacks.test.js.map +1 -1
- package/dist/backend/llvm/counted-loops.d.ts +4 -1
- package/dist/backend/llvm/counted-loops.js +62 -23
- package/dist/backend/llvm/counted-loops.js.map +1 -1
- package/dist/backend/llvm/dense-array-access.d.ts +3 -1
- package/dist/backend/llvm/dense-array-access.js +61 -38
- package/dist/backend/llvm/dense-array-access.js.map +1 -1
- package/dist/backend/llvm/dense-array-access.test.js +4 -0
- package/dist/backend/llvm/dense-array-access.test.js.map +1 -1
- package/dist/backend/llvm/dense-array-loops.d.ts +19 -16
- package/dist/backend/llvm/dense-array-loops.js +49 -13
- package/dist/backend/llvm/dense-array-loops.js.map +1 -1
- package/dist/backend/llvm/dense-array-loops.test.js +50 -14
- package/dist/backend/llvm/dense-array-loops.test.js.map +1 -1
- package/dist/backend/llvm/dyn.d.ts +34 -1
- package/dist/backend/llvm/dyn.js +393 -14
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emit-function.js +27 -8
- package/dist/backend/llvm/emit-function.js.map +1 -1
- package/dist/backend/llvm/emit-module.js +67 -39
- package/dist/backend/llvm/emit-module.js.map +1 -1
- package/dist/backend/llvm/emit-statements.d.ts +3 -25
- package/dist/backend/llvm/emit-statements.js +414 -37
- package/dist/backend/llvm/emit-statements.js.map +1 -1
- package/dist/backend/llvm/emitter.d.ts +159 -22
- package/dist/backend/llvm/emitter.js +573 -89
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/expr-async.js +19 -0
- package/dist/backend/llvm/expr-async.js.map +1 -1
- package/dist/backend/llvm/expr-bytes.d.ts +5 -2
- package/dist/backend/llvm/expr-bytes.js +110 -40
- package/dist/backend/llvm/expr-bytes.js.map +1 -1
- package/dist/backend/llvm/expr-calls.d.ts +1 -1
- package/dist/backend/llvm/expr-calls.js +51 -26
- package/dist/backend/llvm/expr-calls.js.map +1 -1
- package/dist/backend/llvm/expr-containers.js +27 -14
- package/dist/backend/llvm/expr-containers.js.map +1 -1
- package/dist/backend/llvm/expr-control.js +2 -3
- package/dist/backend/llvm/expr-control.js.map +1 -1
- package/dist/backend/llvm/expr-dynamic.js +95 -5
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.js +29 -11
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.test.js +55 -0
- package/dist/backend/llvm/expr-primitives.test.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.js +48 -20
- package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
- package/dist/backend/llvm/expr-stream-callbacks.js +131 -35
- package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
- package/dist/backend/llvm/integer-clones.js +3 -3
- package/dist/backend/llvm/integer-clones.js.map +1 -1
- package/dist/backend/llvm/js-ic.d.ts +18 -0
- package/dist/backend/llvm/js-ic.js +712 -0
- package/dist/backend/llvm/js-ic.js.map +1 -0
- package/dist/backend/llvm/jsval.js +139 -11
- package/dist/backend/llvm/jsval.js.map +1 -1
- package/dist/backend/llvm/lib-dispatch.js +10 -0
- package/dist/backend/llvm/lib-dispatch.js.map +1 -1
- package/dist/backend/llvm/lib-filesystem.js +61 -0
- package/dist/backend/llvm/lib-filesystem.js.map +1 -1
- package/dist/backend/llvm/lib-http2.d.ts +4 -0
- package/dist/backend/llvm/lib-http2.js +20 -17
- package/dist/backend/llvm/lib-http2.js.map +1 -1
- package/dist/backend/llvm/lib-process.js +69 -17
- package/dist/backend/llvm/lib-process.js.map +1 -1
- package/dist/backend/llvm/lib-shared.js +75 -1
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/lib-stream.js +65 -28
- package/dist/backend/llvm/lib-stream.js.map +1 -1
- package/dist/backend/llvm/lib-tls.js +23 -0
- package/dist/backend/llvm/lib-tls.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.js +91 -61
- package/dist/backend/llvm/local-array-reads.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.test.js +14 -0
- package/dist/backend/llvm/local-array-reads.test.js.map +1 -1
- package/dist/backend/llvm/map-number-lookup.d.ts +20 -4
- package/dist/backend/llvm/map-number-lookup.js +43 -7
- package/dist/backend/llvm/map-number-lookup.js.map +1 -1
- package/dist/backend/llvm/narrow-guards.js +64 -0
- package/dist/backend/llvm/narrow-guards.js.map +1 -1
- package/dist/backend/llvm/publish.d.ts +11 -1
- package/dist/backend/llvm/publish.js +80 -22
- package/dist/backend/llvm/publish.js.map +1 -1
- package/dist/backend/llvm/publish.test.js +3 -0
- package/dist/backend/llvm/publish.test.js.map +1 -1
- package/dist/backend/llvm/receivers.js +1 -1
- package/dist/backend/llvm/receivers.js.map +1 -1
- package/dist/backend/llvm/reference-writes.js +2 -0
- package/dist/backend/llvm/reference-writes.js.map +1 -1
- package/dist/backend/llvm/regex-matchers.js +161 -14
- package/dist/backend/llvm/regex-matchers.js.map +1 -1
- package/dist/backend/llvm/regex-matchers.test.js +18 -0
- package/dist/backend/llvm/regex-matchers.test.js.map +1 -1
- package/dist/backend/llvm/regions.js +2 -2
- package/dist/backend/llvm/regions.js.map +1 -1
- package/dist/backend/llvm/regions.test.js +7 -1
- package/dist/backend/llvm/regions.test.js.map +1 -1
- package/dist/backend/llvm/shapes.d.ts +17 -9
- package/dist/backend/llvm/shapes.js +21 -17
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/llvm/speculative-integers.d.ts +20 -1
- package/dist/backend/llvm/speculative-integers.js +94 -6
- package/dist/backend/llvm/speculative-integers.js.map +1 -1
- package/dist/backend/llvm/speculative-integers.test.js +55 -1
- package/dist/backend/llvm/speculative-integers.test.js.map +1 -1
- package/dist/backend/llvm/string-lifetimes.test.js +2 -1
- package/dist/backend/llvm/string-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/string-reads.d.ts +4 -1
- package/dist/backend/llvm/string-reads.js +88 -4
- package/dist/backend/llvm/string-reads.js.map +1 -1
- package/dist/backend/llvm/thread-slots.test.js +5 -4
- package/dist/backend/llvm/thread-slots.test.js.map +1 -1
- package/dist/backend/llvm/wasm-modules.d.ts +6 -5
- package/dist/backend/llvm/wasm-modules.js +32 -9
- package/dist/backend/llvm/wasm-modules.js.map +1 -1
- package/dist/backend/mangle.d.ts +8 -0
- package/dist/backend/mangle.js +12 -0
- package/dist/backend/mangle.js.map +1 -1
- package/dist/backend/native/contracts.d.ts +40 -2
- package/dist/backend/native/executable.js +40 -7
- package/dist/backend/native/executable.js.map +1 -1
- package/dist/backend/native/library.js +3 -1
- package/dist/backend/native/library.js.map +1 -1
- package/dist/backend/native-codegen.d.ts +17 -6
- package/dist/backend/native-codegen.js +55 -9
- package/dist/backend/native-codegen.js.map +1 -1
- package/dist/backend/native-codegen.test.js +18 -14
- package/dist/backend/native-codegen.test.js.map +1 -1
- package/dist/backend/native-link-info-core.d.ts +30 -2
- package/dist/backend/native-link-info-core.js.map +1 -1
- package/dist/backend/native-profile.d.ts +32 -0
- package/dist/backend/native-profile.js +39 -0
- package/dist/backend/native-profile.js.map +1 -0
- package/dist/backend/native-profile.test.d.ts +1 -0
- package/dist/backend/native-profile.test.js +58 -0
- package/dist/backend/native-profile.test.js.map +1 -0
- package/dist/backend/native-tools.d.ts +14 -0
- package/dist/backend/native-tools.js +13 -0
- package/dist/backend/native-tools.js.map +1 -1
- package/dist/backend/optimization.d.ts +2 -2
- 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 +4 -0
- package/dist/backend/runtime-pack-core.js +4 -0
- package/dist/backend/runtime-pack-core.js.map +1 -1
- package/dist/backend/runtime-pack-targets.test.js +7 -1
- package/dist/backend/runtime-pack-targets.test.js.map +1 -1
- package/dist/backend/runtime-pack.d.ts +0 -21
- package/dist/backend/runtime-pack.js +0 -29
- package/dist/backend/runtime-pack.js.map +1 -1
- package/dist/backend/runtime-pack.test.js +12 -69
- package/dist/backend/runtime-pack.test.js.map +1 -1
- package/dist/backend/target-diagnostics.js +38 -1
- package/dist/backend/target-diagnostics.js.map +1 -1
- package/dist/backend/warm-cache.js +6 -0
- package/dist/backend/warm-cache.js.map +1 -1
- package/dist/cli/command.js +89 -7
- package/dist/cli/command.js.map +1 -1
- package/dist/cli/host.d.ts +3 -0
- package/dist/cli/output-options.d.ts +2 -0
- package/dist/cli/output-options.js +9 -0
- package/dist/cli/output-options.js.map +1 -1
- package/dist/cli/usage.d.ts +15 -1
- package/dist/cli/usage.js +30 -2
- package/dist/cli/usage.js.map +1 -1
- package/dist/compile-types.d.ts +9 -0
- package/dist/contracts/check.js +2 -3
- package/dist/contracts/check.js.map +1 -1
- package/dist/coverage/report.d.ts +7 -2
- package/dist/coverage/report.js +18 -0
- package/dist/coverage/report.js.map +1 -1
- package/dist/coverage/verdict-cache.d.ts +1 -0
- package/dist/coverage/verdict-cache.js +4 -0
- package/dist/coverage/verdict-cache.js.map +1 -1
- package/dist/coverage/verdict-semantic.js +4 -0
- package/dist/coverage/verdict-semantic.js.map +1 -1
- package/dist/diagnostics/diagnostic.js.map +1 -1
- package/dist/diagnostics/dynamic-tier.d.ts +40 -0
- package/dist/diagnostics/dynamic-tier.js +57 -0
- package/dist/diagnostics/dynamic-tier.js.map +1 -0
- package/dist/diagnostics/envelope.d.ts +2 -1
- package/dist/diagnostics/envelope.js +5 -2
- package/dist/diagnostics/envelope.js.map +1 -1
- package/dist/executable/executable-cache.d.ts +32 -0
- package/dist/executable/executable-cache.js +65 -7
- package/dist/executable/executable-cache.js.map +1 -1
- package/dist/executable/executable-cache.test.js +50 -3
- package/dist/executable/executable-cache.test.js.map +1 -1
- package/dist/executable/prepare.js +3 -1
- package/dist/executable/prepare.js.map +1 -1
- package/dist/frontend/analysis.js +1 -0
- package/dist/frontend/analysis.js.map +1 -1
- package/dist/frontend/arguments-usage.d.ts +8 -0
- package/dist/frontend/arguments-usage.js +98 -0
- package/dist/frontend/arguments-usage.js.map +1 -1
- package/dist/frontend/arguments-usage.test.d.ts +1 -0
- package/dist/frontend/arguments-usage.test.js +32 -0
- package/dist/frontend/arguments-usage.test.js.map +1 -0
- package/dist/frontend/builtin-package-aliases.d.ts +24 -0
- package/dist/frontend/builtin-package-aliases.js +133 -0
- package/dist/frontend/builtin-package-aliases.js.map +1 -0
- package/dist/frontend/builtin-package-aliases.test.d.ts +1 -0
- package/dist/frontend/builtin-package-aliases.test.js +48 -0
- package/dist/frontend/builtin-package-aliases.test.js.map +1 -0
- package/dist/frontend/dispose-hook.d.ts +2 -0
- package/dist/frontend/dispose-hook.js +14 -0
- package/dist/frontend/dispose-hook.js.map +1 -0
- package/dist/frontend/dts-paths.d.ts +4 -0
- package/dist/frontend/dts-paths.js +9 -1
- package/dist/frontend/dts-paths.js.map +1 -1
- package/dist/frontend/jsx-entities.d.ts +4 -0
- package/dist/frontend/jsx-entities.js +259 -0
- package/dist/frontend/jsx-entities.js.map +1 -0
- package/dist/frontend/jsx-source.d.ts +71 -0
- package/dist/frontend/jsx-source.js +781 -0
- package/dist/frontend/jsx-source.js.map +1 -0
- package/dist/frontend/jsx-source.test.d.ts +1 -0
- package/dist/frontend/jsx-source.test.js +200 -0
- package/dist/frontend/jsx-source.test.js.map +1 -0
- package/dist/frontend/literal-values.test.js +8 -9
- package/dist/frontend/literal-values.test.js.map +1 -1
- package/dist/frontend/lowering/array-indexed-mutation.js +2 -1
- package/dist/frontend/lowering/array-indexed-mutation.js.map +1 -1
- package/dist/frontend/lowering/array-values.js +3 -2
- package/dist/frontend/lowering/array-values.js.map +1 -1
- package/dist/frontend/lowering/binding-analysis.d.ts +1 -1
- package/dist/frontend/lowering/binding-analysis.js +2 -2
- package/dist/frontend/lowering/binding-analysis.js.map +1 -1
- package/dist/frontend/lowering/builtins/arguments.d.ts +3 -0
- package/dist/frontend/lowering/builtins/arguments.js +30 -15
- package/dist/frontend/lowering/builtins/arguments.js.map +1 -1
- package/dist/frontend/lowering/builtins/atomics.js +10 -6
- package/dist/frontend/lowering/builtins/atomics.js.map +1 -1
- package/dist/frontend/lowering/builtins/builtin-class-dyn.d.ts +8 -0
- package/dist/frontend/lowering/builtins/builtin-class-dyn.js +50 -1
- package/dist/frontend/lowering/builtins/builtin-class-dyn.js.map +1 -1
- package/dist/frontend/lowering/builtins/callable-aliases.js +3 -2
- package/dist/frontend/lowering/builtins/callable-aliases.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-async.js +2 -1
- package/dist/frontend/lowering/builtins/child-process-async.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-sync.js +2 -1
- package/dist/frontend/lowering/builtins/child-process-sync.js.map +1 -1
- package/dist/frontend/lowering/builtins/crypto.d.ts +7 -2
- package/dist/frontend/lowering/builtins/crypto.js +63 -4
- package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
- package/dist/frontend/lowering/builtins/date-classes.d.ts +46 -0
- package/dist/frontend/lowering/builtins/date-classes.js +477 -0
- package/dist/frontend/lowering/builtins/date-classes.js.map +1 -0
- package/dist/frontend/lowering/builtins/dates.d.ts +11 -1
- package/dist/frontend/lowering/builtins/dates.js +55 -26
- package/dist/frontend/lowering/builtins/dates.js.map +1 -1
- package/dist/frontend/lowering/builtins/dh.d.ts +15 -0
- package/dist/frontend/lowering/builtins/dh.js +151 -0
- package/dist/frontend/lowering/builtins/dh.js.map +1 -0
- package/dist/frontend/lowering/builtins/disposable-stack.js +2 -1
- package/dist/frontend/lowering/builtins/disposable-stack.js.map +1 -1
- package/dist/frontend/lowering/builtins/ecdh.d.ts +21 -0
- package/dist/frontend/lowering/builtins/ecdh.js +208 -0
- package/dist/frontend/lowering/builtins/ecdh.js.map +1 -0
- package/dist/frontend/lowering/builtins/errors.d.ts +15 -0
- package/dist/frontend/lowering/builtins/errors.js +110 -0
- package/dist/frontend/lowering/builtins/errors.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem-calls.d.ts +1 -1
- package/dist/frontend/lowering/builtins/filesystem-calls.js +23 -17
- package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem.js +6 -4
- package/dist/frontend/lowering/builtins/filesystem.js.map +1 -1
- package/dist/frontend/lowering/builtins/fs-paths.d.ts +15 -0
- package/dist/frontend/lowering/builtins/fs-paths.js +209 -0
- package/dist/frontend/lowering/builtins/fs-paths.js.map +1 -0
- package/dist/frontend/lowering/builtins/hash-stream.d.ts +16 -4
- package/dist/frontend/lowering/builtins/hash-stream.js +86 -23
- package/dist/frontend/lowering/builtins/hash-stream.js.map +1 -1
- package/dist/frontend/lowering/builtins/json.js +54 -1
- package/dist/frontend/lowering/builtins/json.js.map +1 -1
- package/dist/frontend/lowering/builtins/key-object.d.ts +2 -1
- package/dist/frontend/lowering/builtins/key-object.js +20 -7
- package/dist/frontend/lowering/builtins/key-object.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-calls.js +11 -4
- package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/numbers.js +9 -5
- package/dist/frontend/lowering/builtins/numbers.js.map +1 -1
- package/dist/frontend/lowering/builtins/operating-system.js +4 -3
- package/dist/frontend/lowering/builtins/operating-system.js.map +1 -1
- package/dist/frontend/lowering/builtins/performance.js +3 -2
- package/dist/frontend/lowering/builtins/performance.js.map +1 -1
- package/dist/frontend/lowering/builtins/process.d.ts +9 -0
- package/dist/frontend/lowering/builtins/process.js +47 -2
- package/dist/frontend/lowering/builtins/process.js.map +1 -1
- package/dist/frontend/lowering/builtins/promises.js +3 -2
- package/dist/frontend/lowering/builtins/promises.js.map +1 -1
- package/dist/frontend/lowering/builtins/promisify-callback.d.ts +3 -0
- package/dist/frontend/lowering/builtins/promisify-callback.js +23 -4
- package/dist/frontend/lowering/builtins/promisify-callback.js.map +1 -1
- package/dist/frontend/lowering/builtins/readline.d.ts +2 -1
- package/dist/frontend/lowering/builtins/readline.js +23 -6
- package/dist/frontend/lowering/builtins/readline.js.map +1 -1
- package/dist/frontend/lowering/builtins/reflection.js +26 -0
- package/dist/frontend/lowering/builtins/reflection.js.map +1 -1
- package/dist/frontend/lowering/builtins/strings.js +13 -5
- package/dist/frontend/lowering/builtins/strings.js.map +1 -1
- package/dist/frontend/lowering/builtins/text-codecs.js +2 -1
- package/dist/frontend/lowering/builtins/text-codecs.js.map +1 -1
- package/dist/frontend/lowering/builtins/timers.js +6 -2
- package/dist/frontend/lowering/builtins/timers.js.map +1 -1
- package/dist/frontend/lowering/builtins/typed-array-members.d.ts +7 -0
- package/dist/frontend/lowering/builtins/typed-array-members.js +160 -0
- package/dist/frontend/lowering/builtins/typed-array-members.js.map +1 -0
- package/dist/frontend/lowering/builtins/url.js +4 -3
- package/dist/frontend/lowering/builtins/url.js.map +1 -1
- package/dist/frontend/lowering/builtins/v8.js +2 -1
- package/dist/frontend/lowering/builtins/v8.js.map +1 -1
- package/dist/frontend/lowering/builtins/webcrypto.js +39 -20
- package/dist/frontend/lowering/builtins/webcrypto.js.map +1 -1
- package/dist/frontend/lowering/call-arguments.js +2 -1
- package/dist/frontend/lowering/call-arguments.js.map +1 -1
- package/dist/frontend/lowering/call-signatures.d.ts +4 -0
- package/dist/frontend/lowering/call-signatures.js +137 -13
- package/dist/frontend/lowering/call-signatures.js.map +1 -1
- package/dist/frontend/lowering/caught-value-dispatch.d.ts +18 -1
- package/dist/frontend/lowering/caught-value-dispatch.js +201 -32
- package/dist/frontend/lowering/caught-value-dispatch.js.map +1 -1
- package/dist/frontend/lowering/cjs-exports-object.js +34 -1
- package/dist/frontend/lowering/cjs-exports-object.js.map +1 -1
- package/dist/frontend/lowering/class-assertions.js +3 -2
- package/dist/frontend/lowering/class-assertions.js.map +1 -1
- package/dist/frontend/lowering/class-construction.d.ts +2 -1
- package/dist/frontend/lowering/class-construction.js +8 -13
- package/dist/frontend/lowering/class-construction.js.map +1 -1
- package/dist/frontend/lowering/class-descriptors.js +1 -1
- package/dist/frontend/lowering/class-descriptors.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +34 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.js +577 -152
- package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.test.js +77 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.test.js.map +1 -1
- package/dist/frontend/lowering/class-method-mutations.js +3 -0
- package/dist/frontend/lowering/class-method-mutations.js.map +1 -1
- package/dist/frontend/lowering/class-method-values.js +1 -1
- package/dist/frontend/lowering/class-method-values.js.map +1 -1
- package/dist/frontend/lowering/class-protocols.d.ts +17 -0
- package/dist/frontend/lowering/class-protocols.js +117 -7
- package/dist/frontend/lowering/class-protocols.js.map +1 -1
- package/dist/frontend/lowering/class-prototypes.d.ts +5 -0
- package/dist/frontend/lowering/class-prototypes.js +42 -4
- package/dist/frontend/lowering/class-prototypes.js.map +1 -1
- package/dist/frontend/lowering/class-to-primitive.d.ts +2 -2
- package/dist/frontend/lowering/class-to-primitive.js +31 -8
- package/dist/frontend/lowering/class-to-primitive.js.map +1 -1
- package/dist/frontend/lowering/class-unions.js +2 -1
- package/dist/frontend/lowering/class-unions.js.map +1 -1
- package/dist/frontend/lowering/coercions/fresh-spread.d.ts +13 -0
- package/dist/frontend/lowering/coercions/fresh-spread.js +95 -0
- package/dist/frontend/lowering/coercions/fresh-spread.js.map +1 -0
- package/dist/frontend/lowering/coercions/function-adapters.js +105 -75
- package/dist/frontend/lowering/coercions/function-adapters.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural.js +8 -7
- package/dist/frontend/lowering/coercions/structural.js.map +1 -1
- package/dist/frontend/lowering/coercions/unions.js +8 -7
- package/dist/frontend/lowering/coercions/unions.js.map +1 -1
- package/dist/frontend/lowering/collection-ingestion.js +2 -1
- package/dist/frontend/lowering/collection-ingestion.js.map +1 -1
- package/dist/frontend/lowering/containers/array-callbacks.d.ts +15 -0
- package/dist/frontend/lowering/containers/array-callbacks.js +36 -32
- package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
- package/dist/frontend/lowering/containers/array-concat.js +2 -1
- package/dist/frontend/lowering/containers/array-concat.js.map +1 -1
- package/dist/frontend/lowering/containers/array-construction.js +32 -4
- package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
- package/dist/frontend/lowering/containers/array-methods.js +11 -5
- package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/array-pipelines.js +2 -1
- package/dist/frontend/lowering/containers/array-pipelines.js.map +1 -1
- package/dist/frontend/lowering/containers/bytes.d.ts +10 -1
- package/dist/frontend/lowering/containers/bytes.js +601 -24
- package/dist/frontend/lowering/containers/bytes.js.map +1 -1
- package/dist/frontend/lowering/containers/callback-arguments.js +52 -2
- package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -1
- package/dist/frontend/lowering/containers/collection-grouping.js +3 -2
- package/dist/frontend/lowering/containers/collection-grouping.js.map +1 -1
- package/dist/frontend/lowering/containers/collection-methods.js +80 -10
- package/dist/frontend/lowering/containers/collection-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/indexed-objects.js +8 -7
- package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
- package/dist/frontend/lowering/containers/iterator-helpers.d.ts +32 -1
- package/dist/frontend/lowering/containers/iterator-helpers.js +6 -5
- package/dist/frontend/lowering/containers/iterator-helpers.js.map +1 -1
- package/dist/frontend/lowering/containers/string-and-regexp.js +85 -22
- package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
- package/dist/frontend/lowering/containers/string-replacement.js +2 -1
- package/dist/frontend/lowering/containers/string-replacement.js.map +1 -1
- package/dist/frontend/lowering/cycle-initialization.d.ts +26 -10
- package/dist/frontend/lowering/cycle-initialization.js +177 -39
- package/dist/frontend/lowering/cycle-initialization.js.map +1 -1
- package/dist/frontend/lowering/deferred-module-initializers.d.ts +18 -1
- package/dist/frontend/lowering/deferred-module-initializers.js +226 -115
- package/dist/frontend/lowering/deferred-module-initializers.js.map +1 -1
- package/dist/frontend/lowering/deferred-module-initializers.test.js +28 -0
- package/dist/frontend/lowering/deferred-module-initializers.test.js.map +1 -1
- package/dist/frontend/lowering/dispatch-sites.d.ts +59 -0
- package/dist/frontend/lowering/dispatch-sites.js +204 -0
- package/dist/frontend/lowering/dispatch-sites.js.map +1 -0
- package/dist/frontend/lowering/dispatch-sites.test.d.ts +1 -0
- package/dist/frontend/lowering/dispatch-sites.test.js +59 -0
- package/dist/frontend/lowering/dispatch-sites.test.js.map +1 -0
- package/dist/frontend/lowering/dyn-streams.d.ts +3 -0
- package/dist/frontend/lowering/dyn-streams.js +1 -1
- package/dist/frontend/lowering/dyn-streams.js.map +1 -1
- package/dist/frontend/lowering/dynamic-tier.d.ts +25 -0
- package/dist/frontend/lowering/dynamic-tier.js +327 -0
- package/dist/frontend/lowering/dynamic-tier.js.map +1 -0
- package/dist/frontend/lowering/error-methods.js +4 -0
- package/dist/frontend/lowering/error-methods.js.map +1 -1
- package/dist/frontend/lowering/expressions/array-literals.js +48 -13
- package/dist/frontend/lowering/expressions/array-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/binary.js +124 -8
- package/dist/frontend/lowering/expressions/binary.js.map +1 -1
- package/dist/frontend/lowering/expressions/element-access.js +30 -7
- package/dist/frontend/lowering/expressions/element-access.js.map +1 -1
- package/dist/frontend/lowering/expressions/identifiers.js +46 -7
- package/dist/frontend/lowering/expressions/identifiers.js.map +1 -1
- package/dist/frontend/lowering/expressions/keyed-field-targets.d.ts +14 -2
- package/dist/frontend/lowering/expressions/keyed-field-targets.js +91 -10
- package/dist/frontend/lowering/expressions/keyed-field-targets.js.map +1 -1
- package/dist/frontend/lowering/expressions/narrowing.js +52 -7
- package/dist/frontend/lowering/expressions/narrowing.js.map +1 -1
- package/dist/frontend/lowering/expressions/object-literals.d.ts +0 -3
- package/dist/frontend/lowering/expressions/object-literals.js +75 -7
- package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/optional-chains.d.ts +1 -1
- package/dist/frontend/lowering/expressions/optional-chains.js +17 -8
- package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
- package/dist/frontend/lowering/expressions/property-access.d.ts +5 -4
- package/dist/frontend/lowering/expressions/property-access.js +351 -16
- package/dist/frontend/lowering/expressions/property-access.js.map +1 -1
- package/dist/frontend/lowering/expressions/relational.js +112 -9
- package/dist/frontend/lowering/expressions/relational.js.map +1 -1
- package/dist/frontend/lowering/expressions/typeof.js +13 -0
- package/dist/frontend/lowering/expressions/typeof.js.map +1 -1
- package/dist/frontend/lowering/expressions/updates.js +64 -10
- package/dist/frontend/lowering/expressions/updates.js.map +1 -1
- package/dist/frontend/lowering/generator-delegation.d.ts +8 -0
- package/dist/frontend/lowering/generator-delegation.js +191 -1
- package/dist/frontend/lowering/generator-delegation.js.map +1 -1
- package/dist/frontend/lowering/generator-dynamic-dispatch.d.ts +6 -1
- package/dist/frontend/lowering/generator-dynamic-dispatch.js +20 -30
- package/dist/frontend/lowering/generator-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/generic-functions.d.ts +46 -1
- package/dist/frontend/lowering/generic-functions.js +660 -73
- package/dist/frontend/lowering/generic-functions.js.map +1 -1
- package/dist/frontend/lowering/handle-properties.d.ts +24 -0
- package/dist/frontend/lowering/handle-properties.js +281 -0
- package/dist/frontend/lowering/handle-properties.js.map +1 -0
- package/dist/frontend/lowering/intern-tables.js +2 -1
- package/dist/frontend/lowering/intern-tables.js.map +1 -1
- package/dist/frontend/lowering/iterable-spelling.d.ts +7 -0
- package/dist/frontend/lowering/iterable-spelling.js +38 -0
- package/dist/frontend/lowering/iterable-spelling.js.map +1 -0
- package/dist/frontend/lowering/iterator-adapters.js +9 -8
- package/dist/frontend/lowering/iterator-adapters.js.map +1 -1
- package/dist/frontend/lowering/js-dynamic-objects.js +3 -2
- package/dist/frontend/lowering/js-dynamic-objects.js.map +1 -1
- package/dist/frontend/lowering/json-require.js +2 -1
- package/dist/frontend/lowering/json-require.js.map +1 -1
- package/dist/frontend/lowering/key-order-witness.d.ts +7 -2
- package/dist/frontend/lowering/key-order-witness.js +21 -4
- package/dist/frontend/lowering/key-order-witness.js.map +1 -1
- package/dist/frontend/lowering/key-order-witness.test.js +38 -2
- package/dist/frontend/lowering/key-order-witness.test.js.map +1 -1
- package/dist/frontend/lowering/lifetime-regions.js +2 -1
- package/dist/frontend/lowering/lifetime-regions.js.map +1 -1
- package/dist/frontend/lowering/lower-array-sort.d.ts +33 -15
- package/dist/frontend/lowering/lower-array-sort.js +117 -21
- package/dist/frontend/lowering/lower-array-sort.js.map +1 -1
- package/dist/frontend/lowering/lower-array-sort.test.js +93 -14
- package/dist/frontend/lowering/lower-array-sort.test.js.map +1 -1
- package/dist/frontend/lowering/lower-assert.js +6 -5
- package/dist/frontend/lowering/lower-assert.js.map +1 -1
- package/dist/frontend/lowering/lower-async-iteration.js +3 -1
- package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
- package/dist/frontend/lowering/lower-builtin-values.js +1 -0
- package/dist/frontend/lowering/lower-builtin-values.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.d.ts +4 -0
- package/dist/frontend/lowering/lower-calls.js +504 -97
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.d.ts +22 -0
- package/dist/frontend/lowering/lower-classes.js +339 -32
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-dgram.js +65 -15
- package/dist/frontend/lowering/lower-dgram.js.map +1 -1
- package/dist/frontend/lowering/lower-event-emitter.d.ts +14 -0
- package/dist/frontend/lowering/lower-event-emitter.js +267 -20
- package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.d.ts +19 -2
- package/dist/frontend/lowering/lower-exprs.js +148 -12
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-functions.js +308 -72
- package/dist/frontend/lowering/lower-functions.js.map +1 -1
- package/dist/frontend/lowering/lower-generators.js +10 -4
- package/dist/frontend/lowering/lower-generators.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.js +578 -16
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-mixins.js +2 -1
- package/dist/frontend/lowering/lower-mixins.js.map +1 -1
- package/dist/frontend/lowering/lower-mock.js +2 -1
- package/dist/frontend/lowering/lower-mock.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.d.ts +11 -3
- package/dist/frontend/lowering/lower-modules.js +227 -72
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.test.js +2 -2
- package/dist/frontend/lowering/lower-modules.test.js.map +1 -1
- package/dist/frontend/lowering/lower-namespaces.d.ts +2 -1
- package/dist/frontend/lowering/lower-namespaces.js +24 -3
- package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
- package/dist/frontend/lowering/lower-server.d.ts +10 -0
- package/dist/frontend/lowering/lower-server.js +263 -60
- package/dist/frontend/lowering/lower-server.js.map +1 -1
- package/dist/frontend/lowering/lower-stdlib.js +39 -18
- package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.d.ts +7 -10
- package/dist/frontend/lowering/lower-stmts.js +584 -69
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.test.js +1 -1
- package/dist/frontend/lowering/lower-stmts.test.js.map +1 -1
- package/dist/frontend/lowering/lower-stream.js +575 -165
- package/dist/frontend/lowering/lower-stream.js.map +1 -1
- package/dist/frontend/lowering/lower-timers.js +21 -4
- package/dist/frontend/lowering/lower-timers.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +151 -30
- package/dist/frontend/lowering/lowerer.js +725 -84
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/lowerer.test.js +21 -9
- package/dist/frontend/lowering/lowerer.test.js.map +1 -1
- package/dist/frontend/lowering/narrowing-stability.js +5 -0
- package/dist/frontend/lowering/narrowing-stability.js.map +1 -1
- package/dist/frontend/lowering/native-ffi.js +1 -1
- package/dist/frontend/lowering/native-ffi.js.map +1 -1
- package/dist/frontend/lowering/object-enumeration-receiver.js +2 -1
- package/dist/frontend/lowering/object-enumeration-receiver.js.map +1 -1
- package/dist/frontend/lowering/pairs-snapshot.js +2 -1
- package/dist/frontend/lowering/pairs-snapshot.js.map +1 -1
- package/dist/frontend/lowering/private-brands.d.ts +9 -0
- package/dist/frontend/lowering/private-brands.js +66 -15
- package/dist/frontend/lowering/private-brands.js.map +1 -1
- package/dist/frontend/lowering/promise-executor-adapter.js +2 -1
- package/dist/frontend/lowering/promise-executor-adapter.js.map +1 -1
- package/dist/frontend/lowering/rebindable-functions.d.ts +8 -0
- package/dist/frontend/lowering/rebindable-functions.js +54 -0
- package/dist/frontend/lowering/rebindable-functions.js.map +1 -0
- package/dist/frontend/lowering/require-initialization.js +2 -1
- package/dist/frontend/lowering/require-initialization.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-elements.d.ts +5 -0
- package/dist/frontend/lowering/runtime-optional-elements.js +17 -1
- package/dist/frontend/lowering/runtime-optional-elements.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-records.d.ts +2 -0
- package/dist/frontend/lowering/runtime-optional-records.js +18 -5
- package/dist/frontend/lowering/runtime-optional-records.js.map +1 -1
- package/dist/frontend/lowering/site-dependencies.d.ts +35 -0
- package/dist/frontend/lowering/site-dependencies.js +84 -0
- package/dist/frontend/lowering/site-dependencies.js.map +1 -0
- package/dist/frontend/lowering/site-dependencies.test.d.ts +1 -0
- package/dist/frontend/lowering/site-dependencies.test.js +53 -0
- package/dist/frontend/lowering/site-dependencies.test.js.map +1 -0
- package/dist/frontend/lowering/stable-names.d.ts +11 -0
- package/dist/frontend/lowering/stable-names.js +35 -0
- package/dist/frontend/lowering/stable-names.js.map +1 -0
- package/dist/frontend/lowering/static-typeof.d.ts +26 -0
- package/dist/frontend/lowering/static-typeof.js +172 -0
- package/dist/frontend/lowering/static-typeof.js.map +1 -0
- package/dist/frontend/lowering/strict-equality.js +2 -1
- package/dist/frontend/lowering/strict-equality.js.map +1 -1
- package/dist/frontend/lowering/string-index-bounds.js +3 -2
- package/dist/frontend/lowering/string-index-bounds.js.map +1 -1
- package/dist/frontend/lowering/structural-positions.d.ts +32 -0
- package/dist/frontend/lowering/structural-positions.js +108 -0
- package/dist/frontend/lowering/structural-positions.js.map +1 -0
- package/dist/frontend/lowering/surfaces.js +72 -30
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/lowering/thenables.d.ts +16 -0
- package/dist/frontend/lowering/thenables.js +124 -0
- package/dist/frontend/lowering/thenables.js.map +1 -0
- package/dist/frontend/lowering/var-hoisting.js +37 -3
- package/dist/frontend/lowering/var-hoisting.js.map +1 -1
- package/dist/frontend/npm-static-builtin-aliases.d.ts +8 -0
- package/dist/frontend/npm-static-builtin-aliases.js +65 -0
- package/dist/frontend/npm-static-builtin-aliases.js.map +1 -0
- package/dist/frontend/npm-static-bundled-chunks.d.ts +8 -1
- package/dist/frontend/npm-static-bundled-chunks.js +173 -2
- package/dist/frontend/npm-static-bundled-chunks.js.map +1 -1
- package/dist/frontend/npm-static-bundled-chunks.test.js +112 -0
- package/dist/frontend/npm-static-bundled-chunks.test.js.map +1 -1
- package/dist/frontend/npm-static-bundled-esm.js +224 -4
- package/dist/frontend/npm-static-bundled-esm.js.map +1 -1
- package/dist/frontend/npm-static-bundled-esm.test.js +129 -0
- package/dist/frontend/npm-static-bundled-esm.test.js.map +1 -1
- package/dist/frontend/npm-static-enum-iife.d.ts +6 -0
- package/dist/frontend/npm-static-enum-iife.js +280 -0
- package/dist/frontend/npm-static-enum-iife.js.map +1 -0
- package/dist/frontend/npm-static-enum-iife.test.d.ts +1 -0
- package/dist/frontend/npm-static-enum-iife.test.js +116 -0
- package/dist/frontend/npm-static-enum-iife.test.js.map +1 -0
- package/dist/frontend/npm-static-tsc-helpers.d.ts +5 -0
- package/dist/frontend/npm-static-tsc-helpers.js +106 -0
- package/dist/frontend/npm-static-tsc-helpers.js.map +1 -0
- package/dist/frontend/npm-static-tsc-helpers.test.d.ts +1 -0
- package/dist/frontend/npm-static-tsc-helpers.test.js +58 -0
- package/dist/frontend/npm-static-tsc-helpers.test.js.map +1 -0
- package/dist/frontend/npm-static-type-exports-host.d.ts +8 -0
- package/dist/frontend/npm-static-type-exports-host.js +214 -0
- package/dist/frontend/npm-static-type-exports-host.js.map +1 -0
- package/dist/frontend/npm-static-type-exports-host.test.d.ts +1 -0
- package/dist/frontend/npm-static-type-exports-host.test.js +53 -0
- package/dist/frontend/npm-static-type-exports-host.test.js.map +1 -0
- package/dist/frontend/npm-static-type-exports.d.ts +52 -0
- package/dist/frontend/npm-static-type-exports.js +261 -0
- package/dist/frontend/npm-static-type-exports.js.map +1 -0
- package/dist/frontend/npm-static-type-exports.test.d.ts +1 -0
- package/dist/frontend/npm-static-type-exports.test.js +103 -0
- package/dist/frontend/npm-static-type-exports.test.js.map +1 -0
- package/dist/frontend/npm-static-umd.d.ts +6 -0
- package/dist/frontend/npm-static-umd.js +203 -0
- package/dist/frontend/npm-static-umd.js.map +1 -0
- package/dist/frontend/npm-static-umd.test.d.ts +1 -0
- package/dist/frontend/npm-static-umd.test.js +105 -0
- package/dist/frontend/npm-static-umd.test.js.map +1 -0
- package/dist/frontend/npm-static.d.ts +16 -0
- package/dist/frontend/npm-static.js +93 -3
- package/dist/frontend/npm-static.js.map +1 -1
- package/dist/frontend/npm.js +13 -0
- package/dist/frontend/npm.js.map +1 -1
- package/dist/frontend/package-shims.d.ts +47 -0
- package/dist/frontend/package-shims.js +300 -0
- package/dist/frontend/package-shims.js.map +1 -0
- package/dist/frontend/pipeline.js +67 -1
- package/dist/frontend/pipeline.js.map +1 -1
- package/dist/frontend/program.d.ts +21 -0
- package/dist/frontend/program.js +174 -14
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/program.test.js +1 -1
- package/dist/frontend/program.test.js.map +1 -1
- package/dist/frontend/resolve.js +13 -0
- package/dist/frontend/resolve.js.map +1 -1
- package/dist/frontend/services.d.ts +12 -0
- package/dist/frontend/services.js +37 -0
- package/dist/frontend/services.js.map +1 -1
- package/dist/frontend/ts7/ast-node.d.ts +21 -7
- package/dist/frontend/ts7/ast-node.js +131 -29
- package/dist/frontend/ts7/ast-node.js.map +1 -1
- package/dist/frontend/ts7/ast-node.test.js +60 -0
- package/dist/frontend/ts7/ast-node.test.js.map +1 -1
- package/dist/frontend/ts7/ast-wire.d.ts +27 -2
- package/dist/frontend/ts7/ast-wire.js +124 -21
- package/dist/frontend/ts7/ast-wire.js.map +1 -1
- package/dist/frontend/ts7/ast.d.ts +23 -2
- package/dist/frontend/ts7/ast.js +143 -2
- package/dist/frontend/ts7/ast.js.map +1 -1
- package/dist/frontend/ts7/checker.d.ts +13 -1
- package/dist/frontend/ts7/checker.js +75 -1
- package/dist/frontend/ts7/checker.js.map +1 -1
- package/dist/frontend/ts7/checker.test.js +9 -6
- package/dist/frontend/ts7/checker.test.js.map +1 -1
- package/dist/frontend/ts7/enums.d.ts +3 -3
- package/dist/frontend/ts7/enums.generated.d.ts +10 -0
- package/dist/frontend/ts7/enums.generated.js +21 -0
- package/dist/frontend/ts7/enums.generated.js.map +1 -1
- package/dist/frontend/ts7/enums.js +19 -0
- package/dist/frontend/ts7/enums.js.map +1 -1
- package/dist/frontend/ts7/program-host.d.ts +6 -5
- package/dist/frontend/ts7/program-host.js +12 -2
- package/dist/frontend/ts7/program-host.js.map +1 -1
- package/dist/frontend/ts7/semantic-checker.d.ts +10 -0
- package/dist/frontend/ts7/semantic-checker.js +25 -20
- package/dist/frontend/ts7/semantic-checker.js.map +1 -1
- package/dist/frontend/ts7/semantic-json.d.ts +13 -0
- package/dist/frontend/ts7/semantic-json.js +146 -0
- package/dist/frontend/ts7/semantic-json.js.map +1 -1
- package/dist/frontend/ts7/semantic-json.test.js +57 -1
- package/dist/frontend/ts7/semantic-json.test.js.map +1 -1
- package/dist/frontend/ts7/semantic-model.d.ts +18 -0
- package/dist/frontend/ts7/semantic-model.js +90 -16
- package/dist/frontend/ts7/semantic-model.js.map +1 -1
- package/dist/frontend/ts7/semantic-model.test.js +3 -2
- package/dist/frontend/ts7/semantic-model.test.js.map +1 -1
- package/dist/frontend/ts7/session.d.ts +19 -4
- package/dist/frontend/ts7/session.js +1 -1
- package/dist/frontend/ts7/session.js.map +1 -1
- package/dist/frontend/tsc-codes.d.ts +1 -1
- package/dist/frontend/tsc-codes.js +7 -0
- package/dist/frontend/tsc-codes.js.map +1 -1
- package/dist/frontend/type-mapper.d.ts +38 -6
- package/dist/frontend/type-mapper.js +466 -47
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/frontend/type-mapper.test.js +1 -1
- package/dist/frontend/type-mapper.test.js.map +1 -1
- package/dist/frontend-process-args.d.ts +4 -0
- package/dist/frontend-process-args.js +52 -0
- package/dist/frontend-process-args.js.map +1 -0
- package/dist/frontend-process-args.test.d.ts +1 -0
- package/dist/frontend-process-args.test.js +47 -0
- package/dist/frontend-process-args.test.js.map +1 -0
- package/dist/frontend-process.d.ts +1 -0
- package/dist/frontend-process.js +23 -0
- package/dist/frontend-process.js.map +1 -0
- package/dist/heap-collection.d.ts +16 -0
- package/dist/heap-collection.js +42 -0
- package/dist/heap-collection.js.map +1 -0
- package/dist/heap-collection.test.d.ts +1 -0
- package/dist/heap-collection.test.js +59 -0
- package/dist/heap-collection.test.js.map +1 -0
- package/dist/heap-pressure.d.ts +2 -0
- package/dist/heap-pressure.js +12 -0
- package/dist/heap-pressure.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.js +453 -85
- package/dist/index.js.map +1 -1
- package/dist/ir/array-length-stability.d.ts +3 -2
- package/dist/ir/array-length-stability.js +22 -2
- package/dist/ir/array-length-stability.js.map +1 -1
- package/dist/ir/array-length-stability.test.js +47 -1
- package/dist/ir/array-length-stability.test.js.map +1 -1
- package/dist/ir/builtin-effects.js +41 -0
- package/dist/ir/builtin-effects.js.map +1 -1
- package/dist/ir/builtin-signatures.d.ts +5 -1
- package/dist/ir/builtin-signatures.js +187 -16
- package/dist/ir/builtin-signatures.js.map +1 -1
- package/dist/ir/final-fields.d.ts +2 -1
- package/dist/ir/final-fields.js +2 -2
- package/dist/ir/final-fields.js.map +1 -1
- package/dist/ir/function-references.test.js +2 -0
- package/dist/ir/function-references.test.js.map +1 -1
- package/dist/ir/int32-slots.d.ts +13 -5
- package/dist/ir/int32-slots.js +112 -115
- package/dist/ir/int32-slots.js.map +1 -1
- package/dist/ir/int32-slots.test.js +3 -1
- package/dist/ir/int32-slots.test.js.map +1 -1
- package/dist/ir/integer-loop-facts.d.ts +14 -4
- package/dist/ir/integer-loop-facts.js +172 -32
- package/dist/ir/integer-loop-facts.js.map +1 -1
- package/dist/ir/integer-loops.d.ts +49 -0
- package/dist/ir/integer-loops.js +193 -39
- package/dist/ir/integer-loops.js.map +1 -1
- package/dist/ir/integer-loops.test.js +201 -1
- package/dist/ir/integer-loops.test.js.map +1 -1
- package/dist/ir/integer-ranges.d.ts +10 -1
- package/dist/ir/integer-ranges.js +122 -25
- package/dist/ir/integer-ranges.js.map +1 -1
- package/dist/ir/integer-ranges.test.js +255 -1
- package/dist/ir/integer-ranges.test.js.map +1 -1
- package/dist/ir/ir.d.ts +17 -2
- package/dist/ir/ir.js +11 -1
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/js-ic.d.ts +52 -0
- package/dist/ir/js-ic.js +199 -0
- package/dist/ir/js-ic.js.map +1 -0
- package/dist/ir/js-ic.test.d.ts +1 -0
- package/dist/ir/js-ic.test.js +148 -0
- package/dist/ir/js-ic.test.js.map +1 -0
- package/dist/ir/jsval.js +38 -4
- package/dist/ir/jsval.js.map +1 -1
- package/dist/ir/runtime-features.d.ts +64 -5
- package/dist/ir/runtime-features.js +358 -101
- package/dist/ir/runtime-features.js.map +1 -1
- package/dist/ir/tiers.js +1 -0
- package/dist/ir/tiers.js.map +1 -1
- package/dist/ir/traverse.d.ts +2 -0
- package/dist/ir/traverse.js +124 -70
- package/dist/ir/traverse.js.map +1 -1
- package/dist/ir/validate.js +77 -24
- package/dist/ir/validate.js.map +1 -1
- package/dist/ir/validate.test.js +15 -2
- package/dist/ir/validate.test.js.map +1 -1
- package/dist/library/ir-policy.js +11 -0
- package/dist/library/ir-policy.js.map +1 -1
- package/dist/library/library-cache.d.ts +2 -0
- package/dist/library/library-cache.js.map +1 -1
- package/dist/library/prepare.js +2 -0
- package/dist/library/prepare.js.map +1 -1
- package/dist/native/cli.js +22 -0
- package/dist/native/cli.js.map +1 -1
- package/dist/native/compiler.js +33 -4
- package/dist/native/compiler.js.map +1 -1
- package/dist/native/executable-cache.js +3 -0
- package/dist/native/executable-cache.js.map +1 -1
- package/dist/native/prepare.js +8 -1
- package/dist/native/prepare.js.map +1 -1
- package/dist/native/sanitizer.test.js +10 -0
- package/dist/native/sanitizer.test.js.map +1 -1
- package/dist/startup-cache.d.ts +1 -0
- package/dist/startup-cache.js +1 -0
- package/dist/startup-cache.js.map +1 -1
- package/dist/text-parts.d.ts +7 -0
- package/dist/text-parts.js +44 -0
- package/dist/text-parts.js.map +1 -1
- package/dist/text-parts.test.d.ts +1 -0
- package/dist/text-parts.test.js +46 -0
- package/dist/text-parts.test.js.map +1 -0
- package/dist/timing.d.ts +9 -2
- package/dist/timing.js +7 -4
- package/dist/timing.js.map +1 -1
- package/dist/wasm/translate.d.ts +4 -0
- package/dist/wasm/translate.js +2 -2
- package/dist/wasm/translate.js.map +1 -1
- package/package.json +22 -21
- package/shims/fs-extra/core/api.ts +1192 -0
- package/shims/fs-extra/index.ts +9 -0
- package/shims/undici/core/agent.ts +163 -0
- package/shims/undici/core/api.ts +93 -0
- package/shims/undici/core/client.ts +1304 -0
- package/shims/undici/core/connector.ts +157 -0
- package/shims/undici/core/diagnostics-types.ts +68 -0
- package/shims/undici/core/diagnostics.ts +16 -0
- package/shims/undici/core/dispatcher.ts +574 -0
- package/shims/undici/core/errors-v5.ts +22 -0
- package/shims/undici/core/errors-v7.ts +25 -0
- package/shims/undici/core/errors.ts +255 -0
- package/shims/undici/core/fetch.ts +635 -0
- package/shims/undici/core/pool.ts +280 -0
- package/shims/undici/core/readable.ts +268 -0
- package/shims/undici/core/request.ts +313 -0
- package/shims/undici/core/timers.ts +80 -0
- package/shims/undici/core/types.ts +167 -0
- package/shims/undici/core/util.ts +67 -0
- package/shims/undici/v5.ts +119 -0
- package/shims/undici/v7.ts +119 -0
- package/surface-manifest.json +20 -52
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { THREADS_MODULE } from "../threads-import.js";
|
|
2
|
+
import { positionTag } from "./structural-positions.js";
|
|
2
3
|
import { EXPERIMENTAL_MODULE } from "../experimental-import.js";
|
|
3
4
|
import { dynUndefinedExpr } from "../../ir/build.js";
|
|
4
5
|
import { everyStmtList, everyTypeChild } from "../../ir/traverse.js";
|
|
@@ -8,6 +9,7 @@ import { InternalCompilerError } from "../../errors.js";
|
|
|
8
9
|
* seeds), npm/JSON import collection, per-file %init functions, %main, and
|
|
9
10
|
* the module artifacts (globals, embedded npm tables) the IR module carries. */
|
|
10
11
|
import * as ts from "../ts7/adapter.js";
|
|
12
|
+
import { collectRebindableFunctions, isRebindableFunction } from "./rebindable-functions.js";
|
|
11
13
|
import { bindingSource } from "../binding-source.js";
|
|
12
14
|
import { dirname as dirnamePath, resolve as resolvePath } from "node:path";
|
|
13
15
|
import { packageNameOfPath, probeNodeImportRefusal } from "../npm.js";
|
|
@@ -37,31 +39,60 @@ import { streamClassAliasDecl } from "./lower-stream.js";
|
|
|
37
39
|
import { isAssertClassNew } from "./assert-instances.js";
|
|
38
40
|
import { stdlibGlobalAliasDecl, stdlibGlobalAliasNameOf, stdlibGlobalNameOf } from "./surfaces.js";
|
|
39
41
|
import { isNativeBuiltinValueInitializer } from "./lower-builtin-values.js";
|
|
42
|
+
import { isPromisePrototypeRead } from "./expressions/property-access.js";
|
|
40
43
|
import { collectNamespaceStmt, nsMemberIdentOf, nsPathPrefix, trapDeclRootOf, } from "./lower-namespaces.js";
|
|
41
44
|
import { collectExpandoMembers } from "./lower-expando.js";
|
|
42
45
|
import { recordTextCodecClass } from "../../ir/ir.js";
|
|
43
46
|
import { isUnitOnlyTsType, unitOnlyUnion } from "../type-mapper.js";
|
|
44
|
-
import { collectInheritedJsFieldWrites, collectVirtualJsMethods, decoratorNodesOf, genericIfaceBindingKeepsClass, guaranteedDecorationThrow, storedClassValueType, } from "./lower-classes.js";
|
|
47
|
+
import { builtinRequireBaseOf, collectInheritedJsFieldWrites, collectVirtualJsMethods, decoratorNodesOf, genericIfaceBindingKeepsClass, guaranteedDecorationThrow, storedClassValueType, } from "./lower-classes.js";
|
|
45
48
|
import { isMixinFnBinding, mixinResultBindingClassOf } from "./lower-mixins.js";
|
|
46
49
|
import { cjsModuleRef, cjsModuleRegistryPrelude } from "./lower-node-module.js";
|
|
47
50
|
import { forkTargetPaths } from "../fork-target.js";
|
|
48
51
|
import { workerTargetPaths } from "../worker-target.js";
|
|
49
52
|
import { isNativeProxyInitializer } from "./expressions/native-proxy.js";
|
|
50
53
|
import { handleEventReaderPrelude } from "./lower-event-target.js";
|
|
54
|
+
import { dateClassOperationPrelude } from "./builtins/date-classes.js";
|
|
51
55
|
import { cjsAccessorSnapshotStores, jsHoldsDynObject } from "./lower-exprs.js";
|
|
52
56
|
import { keptIdentityAssertion } from "./assertion-identity.js";
|
|
57
|
+
/** An appended module's edges: its import and export declarations, then
|
|
58
|
+
* the require() edges preflight resolved — a CommonJS file's only edges
|
|
59
|
+
* (the compiled CommonJS package a workspace module loaded on demand
|
|
60
|
+
* imports, and the sibling packages and files IT requires). */
|
|
61
|
+
function appendedEdgesOf(program, graph) {
|
|
62
|
+
const cache = new Map();
|
|
63
|
+
return (sf) => {
|
|
64
|
+
let out = cache.get(sf);
|
|
65
|
+
if (out !== undefined)
|
|
66
|
+
return out;
|
|
67
|
+
out = orderedImportsOf(program, sf).flatMap(({ stmt, dep }) => dep !== null && dep !== sf
|
|
68
|
+
? [{ dep, stmt: stmt }]
|
|
69
|
+
: []);
|
|
70
|
+
for (const e of graph?.edges?.get(sf) ?? [])
|
|
71
|
+
if (e.stmt === undefined && e.dep !== sf)
|
|
72
|
+
out.push(e);
|
|
73
|
+
cache.set(sf, out);
|
|
74
|
+
return out;
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
/** Lazy inline requires run after their module's top level: their modules
|
|
78
|
+
* join the order afterwards, as in preflight's walk. */
|
|
79
|
+
function visitLazyEdges(sf, edgesOf, state, visit) {
|
|
80
|
+
for (const e of edgesOf(sf))
|
|
81
|
+
if (e.lazy === true && state.get(e.dep) === undefined)
|
|
82
|
+
visit(e.dep);
|
|
83
|
+
}
|
|
53
84
|
/** Program modules selected by statically resolved child_process.fork()
|
|
54
85
|
* calls join the compiled graph without becoming startup dependencies of
|
|
55
86
|
* the parent entry. Their guarded init functions are selected by %main only
|
|
56
87
|
* in a re-executed fork child. `targets` is append-only so ids stay stable
|
|
57
88
|
* across the dynamic-import/fork discovery fixpoint. */
|
|
58
|
-
export function appendForkModules(program, order, targets, onCycle) {
|
|
59
|
-
appendEntryModules(program, order, targets, forkTargetPaths(program, order), onCycle);
|
|
89
|
+
export function appendForkModules(program, order, targets, onCycle, graph) {
|
|
90
|
+
appendEntryModules(program, order, targets, forkTargetPaths(program, order), onCycle, graph);
|
|
60
91
|
}
|
|
61
|
-
export function appendWorkerModules(program, order, targets, onCycle) {
|
|
62
|
-
appendEntryModules(program, order, targets, workerTargetPaths(program, order), onCycle);
|
|
92
|
+
export function appendWorkerModules(program, order, targets, onCycle, graph) {
|
|
93
|
+
appendEntryModules(program, order, targets, workerTargetPaths(program, order), onCycle, graph);
|
|
63
94
|
}
|
|
64
|
-
function appendEntryModules(program, order, targets, paths, onCycle) {
|
|
95
|
+
function appendEntryModules(program, order, targets, paths, onCycle, graph) {
|
|
65
96
|
if (order.length === 0)
|
|
66
97
|
return;
|
|
67
98
|
const byPath = new Map(program.getImplementationSourceFiles().map((sf) => [resolvePath(sf.fileName), sf]));
|
|
@@ -70,10 +101,8 @@ function appendEntryModules(program, order, targets, paths, onCycle) {
|
|
|
70
101
|
state.set(sf, "done");
|
|
71
102
|
const added = [];
|
|
72
103
|
const stack = [];
|
|
73
|
-
const staticEdgesOf = (
|
|
74
|
-
|
|
75
|
-
: []);
|
|
76
|
-
const cycleAdmissionReason = makeCycleAdmission(program, staticEdgesOf);
|
|
104
|
+
const staticEdgesOf = appendedEdgesOf(program, graph);
|
|
105
|
+
const cycleAdmissionReason = makeCycleAdmission(program, (sf) => staticEdgesOf(sf).filter((e) => e.call === undefined));
|
|
77
106
|
const visit = (sf) => {
|
|
78
107
|
const prior = state.get(sf);
|
|
79
108
|
if (prior === "done")
|
|
@@ -81,10 +110,16 @@ function appendEntryModules(program, order, targets, paths, onCycle) {
|
|
|
81
110
|
state.set(sf, "visiting");
|
|
82
111
|
stack.push(sf.fileName);
|
|
83
112
|
for (const edge of staticEdgesOf(sf)) {
|
|
113
|
+
if (edge.lazy === true)
|
|
114
|
+
continue; // visited after this module completes
|
|
84
115
|
const edgeState = state.get(edge.dep);
|
|
85
116
|
if (edgeState === "done")
|
|
86
117
|
continue;
|
|
87
118
|
if (edgeState === "visiting") {
|
|
119
|
+
if (edge.call !== undefined) {
|
|
120
|
+
graph?.inlineCycleCalls?.add(edge.call);
|
|
121
|
+
continue;
|
|
122
|
+
}
|
|
88
123
|
const reason = cycleAdmissionReason(sf, edge);
|
|
89
124
|
if (reason !== null) {
|
|
90
125
|
const cycleStart = stack.indexOf(edge.dep.fileName);
|
|
@@ -97,6 +132,7 @@ function appendEntryModules(program, order, targets, paths, onCycle) {
|
|
|
97
132
|
stack.pop();
|
|
98
133
|
state.set(sf, "done");
|
|
99
134
|
added.push(sf);
|
|
135
|
+
visitLazyEdges(sf, staticEdgesOf, state, visit);
|
|
100
136
|
};
|
|
101
137
|
const knownTargets = new Set(targets);
|
|
102
138
|
for (const path of paths) {
|
|
@@ -121,8 +157,13 @@ export function splitFiles(lowerer) {
|
|
|
121
157
|
const files = lowerer.moduleOrder.length > 0 ? lowerer.moduleOrder : [lowerer.entry];
|
|
122
158
|
return files.map((sf) => {
|
|
123
159
|
const fp = { sf, fnDecls: [], classDecls: [], topStmts: [] };
|
|
160
|
+
const rebindable = collectRebindableFunctions(lowerer, sf);
|
|
124
161
|
for (const stmt of sf.statements.nodes) {
|
|
125
|
-
|
|
162
|
+
// A reassigned JavaScript declaration lives in a module global that
|
|
163
|
+
// the init body assigns first (rebindable-functions.ts).
|
|
164
|
+
if (ts.isFunctionDeclaration(stmt) && rebindable.has(stmt))
|
|
165
|
+
fp.topStmts.push(stmt);
|
|
166
|
+
else if (ts.isFunctionDeclaration(stmt))
|
|
126
167
|
fp.fnDecls.push(stmt);
|
|
127
168
|
else if (ts.isClassDeclaration(stmt))
|
|
128
169
|
fp.classDecls.push(stmt);
|
|
@@ -181,7 +222,7 @@ function dynamicProgramImportsOf(program, sf) {
|
|
|
181
222
|
});
|
|
182
223
|
return out;
|
|
183
224
|
}
|
|
184
|
-
export function appendDynamicImportModules(program, order, onCycle) {
|
|
225
|
+
export function appendDynamicImportModules(program, order, onCycle, graph) {
|
|
185
226
|
if (order.length === 0)
|
|
186
227
|
return; // no preflight order — sites keep their fences
|
|
187
228
|
const state = new Map();
|
|
@@ -189,20 +230,24 @@ export function appendDynamicImportModules(program, order, onCycle) {
|
|
|
189
230
|
state.set(sf, "done");
|
|
190
231
|
const added = [];
|
|
191
232
|
const stack = [];
|
|
192
|
-
const staticEdgesOf = (
|
|
193
|
-
|
|
194
|
-
: []);
|
|
195
|
-
const cycleAdmissionReason = makeCycleAdmission(program, staticEdgesOf);
|
|
233
|
+
const staticEdgesOf = appendedEdgesOf(program, graph);
|
|
234
|
+
const cycleAdmissionReason = makeCycleAdmission(program, (sf) => staticEdgesOf(sf).filter((e) => e.call === undefined));
|
|
196
235
|
const visit = (sf) => {
|
|
197
236
|
if (state.get(sf) !== undefined)
|
|
198
237
|
return;
|
|
199
238
|
state.set(sf, "visiting");
|
|
200
239
|
stack.push(sf.fileName);
|
|
201
240
|
for (const e of staticEdgesOf(sf)) {
|
|
241
|
+
if (e.lazy === true)
|
|
242
|
+
continue; // visited after this module completes
|
|
202
243
|
const s = state.get(e.dep);
|
|
203
244
|
if (s === "done")
|
|
204
245
|
continue;
|
|
205
246
|
if (s === "visiting") {
|
|
247
|
+
if (e.call !== undefined) {
|
|
248
|
+
graph?.inlineCycleCalls?.add(e.call);
|
|
249
|
+
continue;
|
|
250
|
+
}
|
|
206
251
|
// A back edge: Node answers it from the cache. Same admission
|
|
207
252
|
// question as preflight's static walk, same fence when refused.
|
|
208
253
|
const reason = cycleAdmissionReason(sf, e);
|
|
@@ -217,6 +262,7 @@ export function appendDynamicImportModules(program, order, onCycle) {
|
|
|
217
262
|
stack.pop();
|
|
218
263
|
state.set(sf, "done");
|
|
219
264
|
added.push(sf);
|
|
265
|
+
visitLazyEdges(sf, staticEdgesOf, state, visit);
|
|
220
266
|
};
|
|
221
267
|
const scanned = new Set();
|
|
222
268
|
for (;;) {
|
|
@@ -242,7 +288,7 @@ export function collectProgram(lowerer, parts) {
|
|
|
242
288
|
for (const fp of parts)
|
|
243
289
|
for (const decl of fp.classDecls) {
|
|
244
290
|
const heritage = decl.heritageClauses?.nodes.find((clause) => clause.token === ts.SyntaxKind.ExtendsKeyword)?.types?.nodes[0]?.expression;
|
|
245
|
-
if (heritage && ts.isCallExpression(heritage))
|
|
291
|
+
if (heritage && ts.isCallExpression(heritage) && !builtinRequireBaseOf(lowerer, heritage))
|
|
246
292
|
computed.add(decl);
|
|
247
293
|
}
|
|
248
294
|
// Descendants need the computed ancestor's completed layout before
|
|
@@ -859,7 +905,8 @@ export function moduleArtifacts(lowerer, functions) {
|
|
|
859
905
|
}
|
|
860
906
|
const reachable = lowerer.reachableForArtifacts ?? lowerer.reachable;
|
|
861
907
|
return {
|
|
862
|
-
classes:
|
|
908
|
+
classes: lowerer
|
|
909
|
+
.classesInTableOrder()
|
|
863
910
|
.map((c) => c.def)
|
|
864
911
|
.filter((def) => classNames.has(def.name))
|
|
865
912
|
.map((def) => {
|
|
@@ -888,8 +935,14 @@ export function moduleArtifacts(lowerer, functions) {
|
|
|
888
935
|
delete rest.abstractMethods;
|
|
889
936
|
return rest;
|
|
890
937
|
}),
|
|
891
|
-
|
|
892
|
-
|
|
938
|
+
// Ids come from what each shape and union is (keyedHelperName), so
|
|
939
|
+
// ordering by id gives every lowering order the same module.
|
|
940
|
+
records: lowerer.shapes.shapes
|
|
941
|
+
.filter((r) => shapeIds.has(r.id))
|
|
942
|
+
.sort((a, b) => (a.id < b.id ? -1 : a.id > b.id ? 1 : 0)),
|
|
943
|
+
unions: lowerer.unions.unions
|
|
944
|
+
.filter((u) => unionIds.has(u.id))
|
|
945
|
+
.sort((a, b) => (a.id < b.id ? -1 : a.id > b.id ? 1 : 0)),
|
|
893
946
|
};
|
|
894
947
|
}
|
|
895
948
|
/** Registers every DIRECT top-level `const`/`let` of a file as a module
|
|
@@ -1056,6 +1109,30 @@ function jsDynHoldableInitializer(lowerer, init) {
|
|
|
1056
1109
|
}
|
|
1057
1110
|
return false;
|
|
1058
1111
|
}
|
|
1112
|
+
/** A JavaScript default-export object literal holding a class the program
|
|
1113
|
+
* could not lower (`export default { parse, TomlDate }` where TomlDate
|
|
1114
|
+
* extends an unsupported base): the literal narrows that member away, its
|
|
1115
|
+
* diagnostics deferred to the reads that reach it, so the binding's type
|
|
1116
|
+
* drops it too. Otherwise the module's own initialization would fail the
|
|
1117
|
+
* width check against members no build can supply. */
|
|
1118
|
+
function withoutRejectedClassMembers(lowerer, expression, type) {
|
|
1119
|
+
let literal = expression;
|
|
1120
|
+
while (ts.isParenthesizedExpression(literal))
|
|
1121
|
+
literal = literal.expression;
|
|
1122
|
+
if (!ts.isObjectLiteralExpression(literal) || type.kind !== "record")
|
|
1123
|
+
return type;
|
|
1124
|
+
const shape = lowerer.shapes.get(type.shapeId);
|
|
1125
|
+
if (!shape || shape.tuple)
|
|
1126
|
+
return type;
|
|
1127
|
+
const rejected = (t) => t.kind === "classval" &&
|
|
1128
|
+
!lowerer.classes.has(t.className) &&
|
|
1129
|
+
lowerer.deferredClassByName.has(t.className);
|
|
1130
|
+
if (!shape.fields.some((f) => rejected(f.type)))
|
|
1131
|
+
return type;
|
|
1132
|
+
const kept = shape.fields.filter((f) => !rejected(f.type));
|
|
1133
|
+
const shapeId = lowerer.shapes.intern(kept.map((f) => ({ name: f.name, type: f.type })), false, shape.indexValue);
|
|
1134
|
+
return { kind: "record", shapeId };
|
|
1135
|
+
}
|
|
1059
1136
|
export function collectGlobals(lowerer, sf, topStmts) {
|
|
1060
1137
|
// Segment-tagged so mangled names can't collide across files (user
|
|
1061
1138
|
// identifiers cannot contain '.'): entry globals "e.<name>", others
|
|
@@ -1067,6 +1144,21 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1067
1144
|
// collected earlier in this pass must resolve them (lower-expando.ts).
|
|
1068
1145
|
collectExpandoMembers(lowerer, sf);
|
|
1069
1146
|
for (const stmt of topStmts) {
|
|
1147
|
+
if (ts.isFunctionDeclaration(stmt) && stmt.name && isRebindableFunction(lowerer, stmt)) {
|
|
1148
|
+
const symbol = lowerer.checker.getSymbolAtLocation(stmt.name);
|
|
1149
|
+
if (symbol && !lowerer.globalsBySymbol.has(symbol)) {
|
|
1150
|
+
const g = {
|
|
1151
|
+
id: `%g.${tag}${stmt.name.text}`,
|
|
1152
|
+
name: stmt.name.text,
|
|
1153
|
+
type: DYN,
|
|
1154
|
+
mutable: true,
|
|
1155
|
+
};
|
|
1156
|
+
lowerer.globalsBySymbol.set(symbol, g);
|
|
1157
|
+
lowerer.globalsByDeclNode.set(stmt, g);
|
|
1158
|
+
lowerer.globalsList.push(g);
|
|
1159
|
+
}
|
|
1160
|
+
continue;
|
|
1161
|
+
}
|
|
1070
1162
|
// `export default <expr>`: the module's `default` binding is a const
|
|
1071
1163
|
// module global (registered under the checker's default-export
|
|
1072
1164
|
// symbol — the symbol a default IMPORT's alias chain terminates at,
|
|
@@ -1155,6 +1247,8 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1155
1247
|
}
|
|
1156
1248
|
if (type.kind === "void")
|
|
1157
1249
|
lowerer.badType(stmt.expression, tsType);
|
|
1250
|
+
if (isJsSourceFile(sf))
|
|
1251
|
+
type = withoutRejectedClassMembers(lowerer, stmt.expression, type);
|
|
1158
1252
|
const g = { id: `%g.${tag}default`, name: "default", type, mutable: false };
|
|
1159
1253
|
lowerer.globalsBySymbol.set(symbol, g);
|
|
1160
1254
|
lowerer.globalsList.push(g);
|
|
@@ -1194,9 +1288,19 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1194
1288
|
// common/tls's `exports.check = function (certs) {...}` —
|
|
1195
1289
|
// keep func-ness with dyn pieces; everything else is dyn).
|
|
1196
1290
|
const strict = lowerer.checker.getTypeOfSymbol(symbol);
|
|
1197
|
-
|
|
1291
|
+
let t = lowerer.mapTypeOf(strict) ?? dynFallbackType(lowerer, nameNode, strict);
|
|
1198
1292
|
if (!t || t.kind === "void")
|
|
1199
1293
|
lowerer.badType(typeNode, strict);
|
|
1294
|
+
// An export typed as the empty object literal (tsc's enum output
|
|
1295
|
+
// `exports.E || (exports.E = {})` after its `exports.E = void 0`
|
|
1296
|
+
// preamble): TS's `{}` admits any later non-nullish value and the
|
|
1297
|
+
// export is undefined until then, so it rides checked-dynamic
|
|
1298
|
+
// storage like the same-shaped var binding (varBindingType).
|
|
1299
|
+
if (t.kind === "record" && isJsSourceFile(sf)) {
|
|
1300
|
+
const shape = lowerer.shapes.get(t.shapeId);
|
|
1301
|
+
if (shape && shape.fields.length === 0 && !shape.indexValue && !shape.tuple)
|
|
1302
|
+
t = DYN;
|
|
1303
|
+
}
|
|
1200
1304
|
// An immutable export source shares its live storage and native
|
|
1201
1305
|
// callable ABI. Mutable sources need a separate snapshot slot:
|
|
1202
1306
|
// later writes to the binding do not change the exported value.
|
|
@@ -1399,7 +1503,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1399
1503
|
if (type.kind === "void")
|
|
1400
1504
|
lowerer.badType(stmt.name, lowerer.typeOf(stmt.name));
|
|
1401
1505
|
const g = {
|
|
1402
|
-
id: `%g.${tag}${nsPathPrefix(stmt)}%alias.${stmt.name.text}%${
|
|
1506
|
+
id: `%g.${tag}${nsPathPrefix(lowerer, stmt)}%alias.${stmt.name.text}%${positionTag(lowerer, stmt)}`,
|
|
1403
1507
|
name: stmt.name.text,
|
|
1404
1508
|
type,
|
|
1405
1509
|
mutable: false,
|
|
@@ -1442,44 +1546,9 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1442
1546
|
if (isRequireStatement(stmt) &&
|
|
1443
1547
|
!(ts.isVariableStatement(stmt) &&
|
|
1444
1548
|
stmt.declarationList.declarations.nodes.some((decl) => isNativeFfiRequire(lowerer, decl.initializer) || isJsonRequireDecl(lowerer, decl)))) {
|
|
1445
|
-
if (ts.isVariableStatement(stmt)
|
|
1446
|
-
for (const decl of stmt.declarationList.declarations.nodes)
|
|
1447
|
-
|
|
1448
|
-
}
|
|
1449
|
-
}
|
|
1450
|
-
// `const { codes: { ERR_X } } = require("./errors")`: the outer
|
|
1451
|
-
// keys stay alias plumbing, but a nested pattern destructures the
|
|
1452
|
-
// export's value at the require, so its bindings own storage like
|
|
1453
|
-
// any destructured declaration (lowerVarDeclarator assigns them).
|
|
1454
|
-
if (ts.isVariableStatement(stmt)) {
|
|
1455
|
-
const isLetList = (stmt.declarationList.flags & ts.NodeFlags.Let) !== 0 ||
|
|
1456
|
-
(stmt.declarationList.flags & ts.NodeFlags.BlockScoped) === 0;
|
|
1457
|
-
for (const decl of stmt.declarationList.declarations.nodes) {
|
|
1458
|
-
for (const element of requireNestedPatternsOf(decl)) {
|
|
1459
|
-
for (const nameNode of boundIdentifiersOf(element.name)) {
|
|
1460
|
-
const symbol = lowerer.checker.getSymbolAtLocation(nameNode);
|
|
1461
|
-
if (!symbol || lowerer.globalsBySymbol.has(symbol))
|
|
1462
|
-
continue;
|
|
1463
|
-
const mapped = lowerer.mapTypeOf(lowerer.typeOf(nameNode));
|
|
1464
|
-
const type = mapped && mapped.kind !== "void" ? mapped : DYN;
|
|
1465
|
-
const g = {
|
|
1466
|
-
id: `%g.${tag}${nameNode.text}`,
|
|
1467
|
-
name: nameNode.text,
|
|
1468
|
-
type,
|
|
1469
|
-
mutable: isLetList,
|
|
1470
|
-
source: bindingSource(nameNode),
|
|
1471
|
-
...((type.kind === "func" || type.kind === "dyn") && !isVarDeclared(decl)
|
|
1472
|
-
? { tdz: true }
|
|
1473
|
-
: {}),
|
|
1474
|
-
};
|
|
1475
|
-
lowerer.globalsBySymbol.set(symbol, g);
|
|
1476
|
-
lowerer.globalsList.push(g);
|
|
1477
|
-
if (isVarDeclared(decl))
|
|
1478
|
-
noteVarGlobalEntryInit(lowerer, sf, g);
|
|
1479
|
-
}
|
|
1480
|
-
}
|
|
1481
|
-
}
|
|
1482
|
-
}
|
|
1549
|
+
if (ts.isVariableStatement(stmt))
|
|
1550
|
+
for (const decl of stmt.declarationList.declarations.nodes)
|
|
1551
|
+
registerRequireDeclBindings(lowerer, sf, stmt.declarationList, decl, tag);
|
|
1483
1552
|
continue;
|
|
1484
1553
|
}
|
|
1485
1554
|
// `declare const __VERSION__: string` — AMBIENT: no storage exists
|
|
@@ -1502,7 +1571,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1502
1571
|
// (`%g.e.A%B.x`), so `namespace A { export const x }` and a
|
|
1503
1572
|
// top-level `const x` never collide; non-exported members add the
|
|
1504
1573
|
// declaring block's position (block-local bindings).
|
|
1505
|
-
const nsPrefix = nsPathPrefix(stmt, list.declarations.nodes[0]);
|
|
1574
|
+
const nsPrefix = nsPathPrefix(lowerer, stmt, list.declarations.nodes[0]);
|
|
1506
1575
|
for (const decl of list.declarations.nodes) {
|
|
1507
1576
|
// --provenance-sources: an elided pure-annotated dead const in a
|
|
1508
1577
|
// fetched source module registers no global (the statement
|
|
@@ -1512,6 +1581,16 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1512
1581
|
// and put its fences on the build.
|
|
1513
1582
|
if (provenanceElidedConstDecl(lowerer, decl))
|
|
1514
1583
|
continue;
|
|
1584
|
+
// A require declarator beside other declarators (`var EventEmitter =
|
|
1585
|
+
// require("events"), R = class extends EventEmitter {}`): the
|
|
1586
|
+
// statement lowering treats it as the alias plumbing of a whole
|
|
1587
|
+
// require statement (lowerVarDeclarator), so it owns no storage
|
|
1588
|
+
// either. A global here would never be assigned, and a read through
|
|
1589
|
+
// it would see null.
|
|
1590
|
+
if (requireAliasDecl(lowerer, decl)) {
|
|
1591
|
+
registerRequireDeclBindings(lowerer, sf, list, decl, tag);
|
|
1592
|
+
continue;
|
|
1593
|
+
}
|
|
1515
1594
|
// A stored built-in numeric value iterator has no first-class
|
|
1516
1595
|
// global representation. Its same-%init for-of uses are backed by
|
|
1517
1596
|
// hidden source/cursor/done locals registered when the declaration
|
|
@@ -1789,18 +1868,23 @@ export function collectGlobals(lowerer, sf, topStmts) {
|
|
|
1789
1868
|
// Builtin declarations do not always describe the concrete native
|
|
1790
1869
|
// callable ABI. Preserve checked-native values in shared storage;
|
|
1791
1870
|
// adapting the loader to (string) would replace its validation.
|
|
1871
|
+
// An inferred Promise.prototype binding holds an ordinary object
|
|
1872
|
+
// (isPromisePrototypeRead), in TypeScript as well.
|
|
1792
1873
|
const initializer = decl.initializer ? stripTypeCasts(decl.initializer) : undefined;
|
|
1793
|
-
if (
|
|
1794
|
-
|
|
1795
|
-
initializer
|
|
1796
|
-
(
|
|
1797
|
-
|
|
1798
|
-
|
|
1799
|
-
|
|
1800
|
-
|
|
1801
|
-
|
|
1802
|
-
|
|
1803
|
-
|
|
1874
|
+
if ((nameNode === decl.name &&
|
|
1875
|
+
!decl.type &&
|
|
1876
|
+
isPromisePrototypeRead(lowerer, decl.initializer)) ||
|
|
1877
|
+
(isJsSourceFile(sf) &&
|
|
1878
|
+
nameNode === decl.name &&
|
|
1879
|
+
initializer &&
|
|
1880
|
+
(isNativeBuiltinValueInitializer(lowerer, initializer) ||
|
|
1881
|
+
(!decl.type &&
|
|
1882
|
+
!hasJsTypeAnnotation(decl) &&
|
|
1883
|
+
lowerer.mapTypeOf(lowerer.typeOf(nameNode))?.kind === "date") ||
|
|
1884
|
+
(!decl.type &&
|
|
1885
|
+
!hasJsTypeAnnotation(decl) &&
|
|
1886
|
+
checkedGlobalReference(lowerer, initializer)) ||
|
|
1887
|
+
stdlibGlobalNameOf(lowerer, initializer) === "globalThis"))) {
|
|
1804
1888
|
const symbol = lowerer.checker.getSymbolAtLocation(nameNode);
|
|
1805
1889
|
if (symbol && !lowerer.globalsBySymbol.has(symbol)) {
|
|
1806
1890
|
const g = {
|
|
@@ -2372,6 +2456,52 @@ function noteVarGlobalEntryInit(lowerer, sf, g) {
|
|
|
2372
2456
|
inits.push(g);
|
|
2373
2457
|
lowerer.varGlobalEntryInits.set(sf, inits);
|
|
2374
2458
|
}
|
|
2459
|
+
/** A JavaScript require declaration the statement lowering treats as alias
|
|
2460
|
+
* plumbing (lowerVarDeclarator): no storage, the reads resolve through to
|
|
2461
|
+
* the module. JSON documents and native FFI requires keep their storage. */
|
|
2462
|
+
function requireAliasDecl(lowerer, decl) {
|
|
2463
|
+
return (decl.initializer !== undefined &&
|
|
2464
|
+
requireSpecOf(decl.initializer) !== null &&
|
|
2465
|
+
!isNativeFfiRequire(lowerer, decl.initializer) &&
|
|
2466
|
+
!isJsonRequireDecl(lowerer, decl) &&
|
|
2467
|
+
isJsSourceFile(decl.getSourceFile()));
|
|
2468
|
+
}
|
|
2469
|
+
/** The registrations a top-level require declaration does make. `const
|
|
2470
|
+
* process = require('node:process')` aliases the global process
|
|
2471
|
+
* (stdlibGlobalAliasDecl's require form) so reads through the binding
|
|
2472
|
+
* lower via the process surface. In `const { codes: { ERR_X } } =
|
|
2473
|
+
* require("./errors")` the outer keys stay alias plumbing, but a nested
|
|
2474
|
+
* pattern destructures the export's value at the require, so its bindings
|
|
2475
|
+
* own storage like any destructured declaration (lowerVarDeclarator
|
|
2476
|
+
* assigns them). */
|
|
2477
|
+
function registerRequireDeclBindings(lowerer, sf, list, decl, tag) {
|
|
2478
|
+
if ((list.flags & ts.NodeFlags.Const) !== 0)
|
|
2479
|
+
stdlibGlobalAliasDecl(lowerer, decl.name, decl.initializer);
|
|
2480
|
+
const isLetList = (list.flags & ts.NodeFlags.Let) !== 0 || (list.flags & ts.NodeFlags.BlockScoped) === 0;
|
|
2481
|
+
for (const element of requireNestedPatternsOf(decl)) {
|
|
2482
|
+
for (const nameNode of boundIdentifiersOf(element.name)) {
|
|
2483
|
+
const symbol = lowerer.checker.getSymbolAtLocation(nameNode);
|
|
2484
|
+
if (!symbol || lowerer.globalsBySymbol.has(symbol))
|
|
2485
|
+
continue;
|
|
2486
|
+
const mapped = lowerer.mapTypeOf(lowerer.typeOf(nameNode));
|
|
2487
|
+
const type = mapped && mapped.kind !== "void" ? mapped : DYN;
|
|
2488
|
+
const g = {
|
|
2489
|
+
id: `%g.${tag}${nameNode.text}`,
|
|
2490
|
+
name: nameNode.text,
|
|
2491
|
+
type,
|
|
2492
|
+
mutable: isLetList,
|
|
2493
|
+
source: bindingSource(nameNode),
|
|
2494
|
+
...((type.kind === "func" || type.kind === "dyn") && !isVarDeclared(decl)
|
|
2495
|
+
? { tdz: true }
|
|
2496
|
+
: {}),
|
|
2497
|
+
};
|
|
2498
|
+
lowerer.globalsBySymbol.set(symbol, g);
|
|
2499
|
+
lowerer.globalsList.push(g);
|
|
2500
|
+
if (isVarDeclared(decl))
|
|
2501
|
+
noteVarGlobalEntryInit(lowerer, sf, g);
|
|
2502
|
+
}
|
|
2503
|
+
}
|
|
2504
|
+
}
|
|
2375
2505
|
/** The nested half of module-scope `var` hoisting: a `var` inside a
|
|
2376
2506
|
* top-level BLOCK (an if arm, a loop body, a try) is module-scoped in
|
|
2377
2507
|
* JS — other functions in the file read the same binding — so it must
|
|
@@ -2409,6 +2539,12 @@ function collectNestedVarGlobals(lowerer, sf, stmt, tag) {
|
|
|
2409
2539
|
});
|
|
2410
2540
|
for (const list of lists) {
|
|
2411
2541
|
for (const decl of list.declarations.nodes) {
|
|
2542
|
+
// A nested builtin require (`if (c) { var fs = require("fs"); }`)
|
|
2543
|
+
// lowers to nothing: its bindings are alias plumbing wherever the
|
|
2544
|
+
// statement sits (lowerVarDeclarator), so they own no storage.
|
|
2545
|
+
if (requireAliasDecl(lowerer, decl) &&
|
|
2546
|
+
canonicalBuiltinModule(requireSpecOf(decl.initializer)) !== null)
|
|
2547
|
+
continue;
|
|
2412
2548
|
for (const nameNode of boundIdentifiersOf(decl.name)) {
|
|
2413
2549
|
const diagsBefore = lowerer.diags.length;
|
|
2414
2550
|
try {
|
|
@@ -2565,6 +2701,24 @@ export function lowerFileInit(lowerer, sf, stmts, name) {
|
|
|
2565
2701
|
loc: loc0,
|
|
2566
2702
|
});
|
|
2567
2703
|
}
|
|
2704
|
+
// Reassigned function declarations are initialized when the module
|
|
2705
|
+
// starts, as declarations are hoisted: before its dependencies run, so
|
|
2706
|
+
// a module of an import cycle can call one while it initializes. Their
|
|
2707
|
+
// statements then lower to nothing (rebindable-functions.ts).
|
|
2708
|
+
for (const stmt of stmts) {
|
|
2709
|
+
if (!ts.isFunctionDeclaration(stmt) || !stmt.name || !isRebindableFunction(lowerer, stmt))
|
|
2710
|
+
continue;
|
|
2711
|
+
const g = lowerer.globalsByDeclNode.get(stmt);
|
|
2712
|
+
if (!g)
|
|
2713
|
+
continue;
|
|
2714
|
+
header.push({
|
|
2715
|
+
kind: "assign",
|
|
2716
|
+
localId: g.id,
|
|
2717
|
+
value: lowerer.coerceToExpected(lowerer.lowerLambda(stmt), DYN),
|
|
2718
|
+
loc: locOf(stmt),
|
|
2719
|
+
});
|
|
2720
|
+
ctx.hoistedFnDecls.add(stmt);
|
|
2721
|
+
}
|
|
2568
2722
|
for (const { stmt, dep } of orderedImportsOf(lowerer.program, sf)) {
|
|
2569
2723
|
const npm = lowerer.npmInitActions.get(sf)?.get(stmt);
|
|
2570
2724
|
if (npm !== undefined && npm.length > 0) {
|
|
@@ -2934,6 +3088,7 @@ export function buildMain(lowerer) {
|
|
|
2934
3088
|
...lowerer.mainPrelude,
|
|
2935
3089
|
...cjsModuleRegistryPrelude(lowerer, loc),
|
|
2936
3090
|
...handleEventReaderPrelude(lowerer, loc),
|
|
3091
|
+
...dateClassOperationPrelude(lowerer, loc),
|
|
2937
3092
|
];
|
|
2938
3093
|
const roots = [lowerer.entry, ...lowerer.forkTargets, ...lowerer.workerTargets];
|
|
2939
3094
|
const isAsync = roots.some((root) => lowerer.asyncInitFiles.has(root));
|