@scriptc/compiler 0.4.1 → 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 +582 -78
- 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 +4 -1
- 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 +4 -0
- package/dist/backend/library-pack.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 +2 -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 +72 -1
- package/dist/backend/llvm/classes.js +331 -45
- package/dist/backend/llvm/classes.js.map +1 -1
- package/dist/backend/llvm/classes.test.js +223 -16
- package/dist/backend/llvm/classes.test.js.map +1 -1
- package/dist/backend/llvm/common.d.ts +1 -3
- package/dist/backend/llvm/common.js +1 -3
- 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-loops.d.ts +19 -16
- package/dist/backend/llvm/dense-array-loops.js +46 -10
- 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 +25 -1
- package/dist/backend/llvm/dyn.js +331 -8
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emit-function.js +22 -6
- package/dist/backend/llvm/emit-function.js.map +1 -1
- package/dist/backend/llvm/emit-module.js +17 -11
- package/dist/backend/llvm/emit-module.js.map +1 -1
- package/dist/backend/llvm/emit-statements.d.ts +0 -23
- package/dist/backend/llvm/emit-statements.js +325 -25
- package/dist/backend/llvm/emit-statements.js.map +1 -1
- package/dist/backend/llvm/emitter.d.ts +141 -15
- package/dist/backend/llvm/emitter.js +537 -64
- 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 +34 -22
- package/dist/backend/llvm/expr-calls.js.map +1 -1
- package/dist/backend/llvm/expr-containers.js +21 -5
- 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 +54 -6
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.js +26 -8
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.js +38 -6
- 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/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 +65 -14
- package/dist/backend/llvm/lib-process.js.map +1 -1
- package/dist/backend/llvm/lib-shared.js +53 -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 +66 -45
- 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/publish.d.ts +8 -1
- package/dist/backend/llvm/publish.js +64 -25
- package/dist/backend/llvm/publish.js.map +1 -1
- package/dist/backend/llvm/publish.test.js +3 -0
- package/dist/backend/llvm/publish.test.js.map +1 -1
- package/dist/backend/llvm/receivers.js +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/shapes.d.ts +9 -7
- package/dist/backend/llvm/shapes.js +12 -10
- package/dist/backend/llvm/shapes.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 +3 -0
- package/dist/backend/llvm/string-reads.js +84 -0
- package/dist/backend/llvm/string-reads.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 +3 -0
- package/dist/backend/mangle.js +5 -0
- package/dist/backend/mangle.js.map +1 -1
- package/dist/backend/native/contracts.d.ts +22 -4
- package/dist/backend/native/executable.js +24 -8
- package/dist/backend/native/executable.js.map +1 -1
- package/dist/backend/native/library.js +1 -0
- package/dist/backend/native/library.js.map +1 -1
- package/dist/backend/native-codegen.d.ts +11 -6
- package/dist/backend/native-codegen.js +36 -9
- package/dist/backend/native-codegen.js.map +1 -1
- package/dist/backend/native-codegen.test.js +0 -23
- package/dist/backend/native-codegen.test.js.map +1 -1
- package/dist/backend/native-link-info-core.d.ts +14 -4
- package/dist/backend/native-link-info-core.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 +1 -1
- package/dist/backend/runtime-pack-core.js +1 -1
- package/dist/backend/runtime-pack-core.js.map +1 -1
- package/dist/backend/runtime-pack-targets.test.js +4 -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 +9 -69
- package/dist/backend/runtime-pack.test.js.map +1 -1
- package/dist/backend/target-diagnostics.js +31 -1
- package/dist/backend/target-diagnostics.js.map +1 -1
- package/dist/backend/warm-cache.js +3 -0
- package/dist/backend/warm-cache.js.map +1 -1
- package/dist/cli/command.js +26 -6
- package/dist/cli/command.js.map +1 -1
- package/dist/cli/usage.d.ts +5 -1
- package/dist/cli/usage.js +7 -2
- package/dist/cli/usage.js.map +1 -1
- package/dist/contracts/check.js +1 -1
- 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 +23 -1
- package/dist/executable/executable-cache.js +59 -7
- package/dist/executable/executable-cache.js.map +1 -1
- package/dist/executable/executable-cache.test.js +45 -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/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/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/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 +4 -2
- package/dist/frontend/lowering/builtins/crypto.js +59 -3
- package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
- package/dist/frontend/lowering/builtins/date-classes.d.ts +46 -0
- package/dist/frontend/lowering/builtins/date-classes.js +477 -0
- package/dist/frontend/lowering/builtins/date-classes.js.map +1 -0
- package/dist/frontend/lowering/builtins/dates.d.ts +11 -1
- package/dist/frontend/lowering/builtins/dates.js +55 -26
- package/dist/frontend/lowering/builtins/dates.js.map +1 -1
- package/dist/frontend/lowering/builtins/dh.d.ts +15 -0
- package/dist/frontend/lowering/builtins/dh.js +151 -0
- package/dist/frontend/lowering/builtins/dh.js.map +1 -0
- package/dist/frontend/lowering/builtins/disposable-stack.js +2 -1
- package/dist/frontend/lowering/builtins/disposable-stack.js.map +1 -1
- package/dist/frontend/lowering/builtins/ecdh.d.ts +12 -1
- package/dist/frontend/lowering/builtins/ecdh.js +7 -7
- package/dist/frontend/lowering/builtins/ecdh.js.map +1 -1
- package/dist/frontend/lowering/builtins/errors.d.ts +15 -0
- package/dist/frontend/lowering/builtins/errors.js +110 -0
- package/dist/frontend/lowering/builtins/errors.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem-calls.d.ts +1 -1
- package/dist/frontend/lowering/builtins/filesystem-calls.js +23 -17
- package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem.js +6 -4
- package/dist/frontend/lowering/builtins/filesystem.js.map +1 -1
- package/dist/frontend/lowering/builtins/fs-paths.d.ts +15 -0
- package/dist/frontend/lowering/builtins/fs-paths.js +209 -0
- package/dist/frontend/lowering/builtins/fs-paths.js.map +1 -0
- package/dist/frontend/lowering/builtins/hash-stream.d.ts +16 -4
- package/dist/frontend/lowering/builtins/hash-stream.js +86 -23
- package/dist/frontend/lowering/builtins/hash-stream.js.map +1 -1
- package/dist/frontend/lowering/builtins/json.js +2 -1
- package/dist/frontend/lowering/builtins/json.js.map +1 -1
- package/dist/frontend/lowering/builtins/key-object.d.ts +2 -1
- package/dist/frontend/lowering/builtins/key-object.js +20 -7
- package/dist/frontend/lowering/builtins/key-object.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-calls.js +11 -4
- package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/numbers.js +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.js +3 -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.js +2 -1
- 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/strings.js +13 -5
- package/dist/frontend/lowering/builtins/strings.js.map +1 -1
- package/dist/frontend/lowering/builtins/text-codecs.js +2 -1
- package/dist/frontend/lowering/builtins/text-codecs.js.map +1 -1
- package/dist/frontend/lowering/builtins/timers.js +1 -1
- package/dist/frontend/lowering/builtins/timers.js.map +1 -1
- package/dist/frontend/lowering/builtins/url.js +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.js +13 -6
- package/dist/frontend/lowering/call-signatures.js.map +1 -1
- package/dist/frontend/lowering/caught-value-dispatch.d.ts +18 -1
- package/dist/frontend/lowering/caught-value-dispatch.js +201 -32
- package/dist/frontend/lowering/caught-value-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-assertions.js +3 -2
- package/dist/frontend/lowering/class-assertions.js.map +1 -1
- package/dist/frontend/lowering/class-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 +568 -151
- 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 +7 -0
- package/dist/frontend/lowering/class-protocols.js +64 -4
- package/dist/frontend/lowering/class-protocols.js.map +1 -1
- package/dist/frontend/lowering/class-prototypes.d.ts +5 -0
- package/dist/frontend/lowering/class-prototypes.js +36 -3
- package/dist/frontend/lowering/class-prototypes.js.map +1 -1
- package/dist/frontend/lowering/class-to-primitive.js +25 -5
- package/dist/frontend/lowering/class-to-primitive.js.map +1 -1
- package/dist/frontend/lowering/class-unions.js +2 -1
- package/dist/frontend/lowering/class-unions.js.map +1 -1
- package/dist/frontend/lowering/coercions/function-adapters.js +6 -5
- package/dist/frontend/lowering/coercions/function-adapters.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural.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 +7 -0
- package/dist/frontend/lowering/containers/array-callbacks.js +14 -13
- 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 +25 -4
- package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
- package/dist/frontend/lowering/containers/array-methods.js +6 -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 +1 -1
- package/dist/frontend/lowering/containers/bytes.js +129 -28
- 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 +8 -7
- 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 +36 -9
- 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.js +25 -4
- package/dist/frontend/lowering/cycle-initialization.js.map +1 -1
- package/dist/frontend/lowering/deferred-module-initializers.d.ts +18 -1
- package/dist/frontend/lowering/deferred-module-initializers.js +226 -115
- package/dist/frontend/lowering/deferred-module-initializers.js.map +1 -1
- package/dist/frontend/lowering/deferred-module-initializers.test.js +28 -0
- package/dist/frontend/lowering/deferred-module-initializers.test.js.map +1 -1
- package/dist/frontend/lowering/dispatch-sites.d.ts +59 -0
- package/dist/frontend/lowering/dispatch-sites.js +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 +15 -0
- package/dist/frontend/lowering/expressions/array-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/binary.js +45 -3
- package/dist/frontend/lowering/expressions/binary.js.map +1 -1
- package/dist/frontend/lowering/expressions/element-access.js +17 -1
- 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/narrowing.js +35 -5
- 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 +27 -6
- package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/optional-chains.js +5 -5
- package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
- package/dist/frontend/lowering/expressions/property-access.d.ts +0 -4
- package/dist/frontend/lowering/expressions/property-access.js +99 -7
- package/dist/frontend/lowering/expressions/property-access.js.map +1 -1
- package/dist/frontend/lowering/expressions/relational.js +63 -5
- package/dist/frontend/lowering/expressions/relational.js.map +1 -1
- package/dist/frontend/lowering/expressions/updates.js +63 -9
- package/dist/frontend/lowering/expressions/updates.js.map +1 -1
- package/dist/frontend/lowering/generator-dynamic-dispatch.d.ts +6 -1
- package/dist/frontend/lowering/generator-dynamic-dispatch.js +20 -30
- package/dist/frontend/lowering/generator-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/generic-functions.d.ts +42 -1
- package/dist/frontend/lowering/generic-functions.js +448 -18
- package/dist/frontend/lowering/generic-functions.js.map +1 -1
- package/dist/frontend/lowering/intern-tables.js +2 -1
- package/dist/frontend/lowering/intern-tables.js.map +1 -1
- package/dist/frontend/lowering/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-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-calls.d.ts +4 -0
- package/dist/frontend/lowering/lower-calls.js +339 -91
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.d.ts +18 -0
- package/dist/frontend/lowering/lower-classes.js +280 -25
- package/dist/frontend/lowering/lower-classes.js.map +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-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 +116 -11
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-functions.js +304 -72
- package/dist/frontend/lowering/lower-functions.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.js +10 -6
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-mixins.js +2 -1
- package/dist/frontend/lowering/lower-mixins.js.map +1 -1
- package/dist/frontend/lowering/lower-mock.js +2 -1
- package/dist/frontend/lowering/lower-mock.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.js +15 -5
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.test.js +2 -2
- package/dist/frontend/lowering/lower-modules.test.js.map +1 -1
- package/dist/frontend/lowering/lower-namespaces.d.ts +2 -1
- package/dist/frontend/lowering/lower-namespaces.js +4 -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 +237 -59
- package/dist/frontend/lowering/lower-server.js.map +1 -1
- package/dist/frontend/lowering/lower-stdlib.js +12 -10
- package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.js +168 -20
- 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 +4 -3
- package/dist/frontend/lowering/lower-timers.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +125 -28
- package/dist/frontend/lowering/lowerer.js +557 -63
- 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/require-initialization.js +2 -1
- package/dist/frontend/lowering/require-initialization.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-elements.d.ts +5 -0
- package/dist/frontend/lowering/runtime-optional-elements.js +17 -1
- package/dist/frontend/lowering/runtime-optional-elements.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-records.d.ts +2 -0
- package/dist/frontend/lowering/runtime-optional-records.js +18 -5
- package/dist/frontend/lowering/runtime-optional-records.js.map +1 -1
- package/dist/frontend/lowering/site-dependencies.d.ts +35 -0
- package/dist/frontend/lowering/site-dependencies.js +84 -0
- package/dist/frontend/lowering/site-dependencies.js.map +1 -0
- package/dist/frontend/lowering/site-dependencies.test.d.ts +1 -0
- package/dist/frontend/lowering/site-dependencies.test.js +53 -0
- package/dist/frontend/lowering/site-dependencies.test.js.map +1 -0
- package/dist/frontend/lowering/stable-names.d.ts +11 -0
- package/dist/frontend/lowering/stable-names.js +35 -0
- package/dist/frontend/lowering/stable-names.js.map +1 -0
- package/dist/frontend/lowering/static-typeof.d.ts +2 -2
- package/dist/frontend/lowering/static-typeof.js +42 -3
- package/dist/frontend/lowering/static-typeof.js.map +1 -1
- package/dist/frontend/lowering/strict-equality.js +2 -1
- package/dist/frontend/lowering/strict-equality.js.map +1 -1
- package/dist/frontend/lowering/structural-positions.d.ts +32 -0
- package/dist/frontend/lowering/structural-positions.js +108 -0
- package/dist/frontend/lowering/structural-positions.js.map +1 -0
- package/dist/frontend/lowering/surfaces.js +42 -26
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/lowering/var-hoisting.js +37 -3
- package/dist/frontend/lowering/var-hoisting.js.map +1 -1
- package/dist/frontend/npm-static-tsc-helpers.d.ts +5 -0
- package/dist/frontend/npm-static-tsc-helpers.js +106 -0
- package/dist/frontend/npm-static-tsc-helpers.js.map +1 -0
- package/dist/frontend/npm-static-tsc-helpers.test.d.ts +1 -0
- package/dist/frontend/npm-static-tsc-helpers.test.js +58 -0
- package/dist/frontend/npm-static-tsc-helpers.test.js.map +1 -0
- package/dist/frontend/npm-static-type-exports-host.d.ts +8 -0
- package/dist/frontend/npm-static-type-exports-host.js +214 -0
- package/dist/frontend/npm-static-type-exports-host.js.map +1 -0
- package/dist/frontend/npm-static-type-exports-host.test.d.ts +1 -0
- package/dist/frontend/npm-static-type-exports-host.test.js +53 -0
- package/dist/frontend/npm-static-type-exports-host.test.js.map +1 -0
- package/dist/frontend/npm-static-type-exports.d.ts +52 -0
- package/dist/frontend/npm-static-type-exports.js +261 -0
- package/dist/frontend/npm-static-type-exports.js.map +1 -0
- package/dist/frontend/npm-static-type-exports.test.d.ts +1 -0
- package/dist/frontend/npm-static-type-exports.test.js +103 -0
- package/dist/frontend/npm-static-type-exports.test.js.map +1 -0
- package/dist/frontend/npm-static-umd.d.ts +6 -0
- package/dist/frontend/npm-static-umd.js +203 -0
- package/dist/frontend/npm-static-umd.js.map +1 -0
- package/dist/frontend/npm-static-umd.test.d.ts +1 -0
- package/dist/frontend/npm-static-umd.test.js +105 -0
- package/dist/frontend/npm-static-umd.test.js.map +1 -0
- package/dist/frontend/npm-static.d.ts +8 -0
- package/dist/frontend/npm-static.js +47 -2
- package/dist/frontend/npm-static.js.map +1 -1
- package/dist/frontend/program.d.ts +13 -0
- package/dist/frontend/program.js +103 -6
- 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/services.d.ts +6 -0
- package/dist/frontend/services.js +18 -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.js +5 -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 +15 -0
- package/dist/frontend/ts7/semantic-model.js +67 -19
- package/dist/frontend/ts7/semantic-model.js.map +1 -1
- package/dist/frontend/ts7/semantic-model.test.js +3 -2
- package/dist/frontend/ts7/semantic-model.test.js.map +1 -1
- package/dist/frontend/ts7/session.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 +265 -32
- 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 +7 -0
- package/dist/index.js +402 -86
- package/dist/index.js.map +1 -1
- package/dist/ir/array-length-stability.js +7 -0
- package/dist/ir/array-length-stability.js.map +1 -1
- package/dist/ir/array-length-stability.test.js +25 -0
- package/dist/ir/array-length-stability.test.js.map +1 -1
- package/dist/ir/builtin-effects.js +28 -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 +141 -12
- 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 +9 -4
- package/dist/ir/integer-loop-facts.js +93 -18
- package/dist/ir/integer-loop-facts.js.map +1 -1
- package/dist/ir/integer-loops.d.ts +49 -0
- package/dist/ir/integer-loops.js +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.test.js +64 -0
- package/dist/ir/integer-ranges.test.js.map +1 -1
- package/dist/ir/ir.d.ts +17 -2
- package/dist/ir/ir.js +3 -1
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/runtime-features.d.ts +31 -7
- package/dist/ir/runtime-features.js +138 -11
- 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 +14 -2
- package/dist/ir/traverse.js.map +1 -1
- package/dist/ir/validate.js +56 -16
- package/dist/ir/validate.js.map +1 -1
- package/dist/library/ir-policy.js +10 -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 +5 -0
- package/dist/native/cli.js.map +1 -1
- package/dist/native/prepare.js +5 -1
- package/dist/native/prepare.js.map +1 -1
- package/dist/native/sanitizer.test.js +4 -1
- 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 +21 -21
- package/shims/undici/core/client.ts +4 -4
- package/surface-manifest.json +19 -49
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { InternalCompilerError } from "../errors.js";
|
|
2
|
+
import { keyedHelperName } from "./lowering/stable-names.js";
|
|
2
3
|
import { mockCallRecordType, mockContextType } from "./mock-shapes.js";
|
|
3
4
|
import * as ts from "./ts7/adapter.js";
|
|
4
5
|
import { bodyReadsArguments } from "./arguments-usage.js";
|
|
@@ -7,6 +8,7 @@ import { BIGINT_T } from "../ir/ir.js";
|
|
|
7
8
|
import { literalValues } from "./literal-values.js";
|
|
8
9
|
import { remapUnionDiscriminant } from "./union-discriminants.js";
|
|
9
10
|
import { isJsSourceFile, isNodeTypesPath } from "./program.js";
|
|
11
|
+
import { isProvenanceSourceFile } from "./provenance-registry.js";
|
|
10
12
|
import { functionCanReturnUndefined } from "./function-completion.js";
|
|
11
13
|
import { accessorSlotProp, recordTextCodecClass } from "../ir/ir.js";
|
|
12
14
|
// typeKey moved to ir/ir.ts (the backend needs it too, for per-type
|
|
@@ -85,6 +87,46 @@ export const WEBCRYPTO_DYN_TYPES = new Set([
|
|
|
85
87
|
"KeyAlgorithm",
|
|
86
88
|
"HmacImportParams",
|
|
87
89
|
"HmacKeyAlgorithm",
|
|
90
|
+
"CryptoKeyPair",
|
|
91
|
+
"EcKeyAlgorithm",
|
|
92
|
+
"RsaHashedKeyAlgorithm",
|
|
93
|
+
"EcKeyGenParams",
|
|
94
|
+
"EcKeyImportParams",
|
|
95
|
+
"EcdsaParams",
|
|
96
|
+
"RsaHashedKeyGenParams",
|
|
97
|
+
"RsaHashedImportParams",
|
|
98
|
+
"RsaPssParams",
|
|
99
|
+
"HmacKeyGenParams",
|
|
100
|
+
"AesKeyGenParams",
|
|
101
|
+
"AesKeyAlgorithm",
|
|
102
|
+
"JsonWebKey",
|
|
103
|
+
"AesGcmParams",
|
|
104
|
+
"AesCbcParams",
|
|
105
|
+
"AesCtrParams",
|
|
106
|
+
"Pbkdf2Params",
|
|
107
|
+
"HkdfParams",
|
|
108
|
+
"AesDerivedKeyParams",
|
|
109
|
+
]);
|
|
110
|
+
/** node:crypto's key and signature option interfaces: the key functions,
|
|
111
|
+
* KeyObject.export and sign/verify take them as checked-dynamic arguments
|
|
112
|
+
* (scr_lib.c, scr_pki.c). */
|
|
113
|
+
export const CRYPTO_KEY_OPTION_DYN_TYPES = new Set([
|
|
114
|
+
"AsymmetricKeyExportOptions",
|
|
115
|
+
"ECKeyPairKeyObjectOptions",
|
|
116
|
+
"ECKeyPairOptions",
|
|
117
|
+
"ED25519KeyPairOptions",
|
|
118
|
+
"JsonWebKeyInput",
|
|
119
|
+
"JwkKeyExportOptions",
|
|
120
|
+
"KeyExportOptions",
|
|
121
|
+
"PrivateKeyInput",
|
|
122
|
+
"PublicKeyInput",
|
|
123
|
+
"RSAKeyPairKeyObjectOptions",
|
|
124
|
+
"RSAKeyPairOptions",
|
|
125
|
+
"SignKeyObjectInput",
|
|
126
|
+
"SignPrivateKeyInput",
|
|
127
|
+
"SigningOptions",
|
|
128
|
+
"VerifyKeyObjectInput",
|
|
129
|
+
"VerifyPublicKeyInput",
|
|
88
130
|
]);
|
|
89
131
|
export const FETCH_AMBIENT_TYPES = [
|
|
90
132
|
"Response",
|
|
@@ -179,6 +221,8 @@ function comparePriority(left, right) {
|
|
|
179
221
|
export class ShapeRegistry {
|
|
180
222
|
/** Existing layouts change only when a recursive placeholder closes. */
|
|
181
223
|
revision = 0;
|
|
224
|
+
/** Each shape id with a second hash of its key (keyedHelperName). */
|
|
225
|
+
keyedNameKeys = new Map();
|
|
182
226
|
byKey = new Map();
|
|
183
227
|
byId = new Map();
|
|
184
228
|
/** Historical emit-order rank of the declaration-order metadata each
|
|
@@ -194,7 +238,7 @@ export class ShapeRegistry {
|
|
|
194
238
|
* writer after all priority candidates have closed. */
|
|
195
239
|
derivedDeclaredOrderFinalizers = [];
|
|
196
240
|
currentDeclaredOrderPriority = [0, 0];
|
|
197
|
-
/** All interned shapes in first-seen
|
|
241
|
+
/** All interned shapes in first-seen order. */
|
|
198
242
|
shapes = [];
|
|
199
243
|
/** ts.Types currently being mapped — a BACK-REFERENCE to one of these is
|
|
200
244
|
* the recursive knot (`interface TreeNode { children: TreeNode[] }`):
|
|
@@ -299,11 +343,12 @@ export class ShapeRegistry {
|
|
|
299
343
|
}
|
|
300
344
|
/** The shape id a back-reference to an in-progress type resolves to:
|
|
301
345
|
* reuses the type's persistent recursive id or mints a PLACEHOLDER
|
|
302
|
-
* entry (empty fields) the outer frame finalizes.
|
|
303
|
-
|
|
346
|
+
* entry (empty fields) the outer frame finalizes. `describe` names a new
|
|
347
|
+
* placeholder (checkerTypeDescription). */
|
|
348
|
+
recursiveRef(t, describe) {
|
|
304
349
|
let id = this.recIds.get(t);
|
|
305
350
|
if (id === undefined) {
|
|
306
|
-
id =
|
|
351
|
+
id = recursivePlaceholderName(this, "r", describe(), (name) => this.byId.has(name));
|
|
307
352
|
const shape = { id, fields: [] };
|
|
308
353
|
this.byId.set(id, shape);
|
|
309
354
|
this.shapes.push(shape);
|
|
@@ -358,7 +403,7 @@ export class ShapeRegistry {
|
|
|
358
403
|
const key = this.keyOf(fields, tuple, indexValue);
|
|
359
404
|
let id = this.byKey.get(key);
|
|
360
405
|
if (id === undefined) {
|
|
361
|
-
id =
|
|
406
|
+
id = keyedHelperName(this, "r", key, "");
|
|
362
407
|
const shape = {
|
|
363
408
|
id,
|
|
364
409
|
fields,
|
|
@@ -434,6 +479,44 @@ export class ShapeRegistry {
|
|
|
434
479
|
this.byKey.set(key, shapeId);
|
|
435
480
|
}
|
|
436
481
|
}
|
|
482
|
+
/** The id of a recursive placeholder described by `description`. Two
|
|
483
|
+
* different types can still share a description (checkerTypeDescription stops
|
|
484
|
+
* after a few levels of type arguments); the later one takes the first free
|
|
485
|
+
* name with a numbered suffix. */
|
|
486
|
+
function recursivePlaceholderName(owner, prefix, description, taken) {
|
|
487
|
+
let name = keyedHelperName(owner, prefix, `recursive:${description}`, "");
|
|
488
|
+
for (let n = 1; taken(name); n++)
|
|
489
|
+
name = keyedHelperName(owner, prefix, `recursive:${description}#${n}`, "");
|
|
490
|
+
return name;
|
|
491
|
+
}
|
|
492
|
+
/** How many levels of type arguments checkerTypeDescription describes. */
|
|
493
|
+
const RECURSIVE_NAME_DEPTH = 3;
|
|
494
|
+
/** A checker type's description for names that must not depend on checker
|
|
495
|
+
* type ids (a recursive placeholder, a generic class instance keyed by a
|
|
496
|
+
* literal): its printed form, the structural position of its first
|
|
497
|
+
* declaration, and the same for its type arguments (two instantiations
|
|
498
|
+
* print the same when their type arguments are type parameters or classes
|
|
499
|
+
* of the same name from different declarations). */
|
|
500
|
+
export function checkerTypeDescription(t, ctx, depth = 0) {
|
|
501
|
+
const symbol = t.getAliasSymbol() ?? t.getSymbol();
|
|
502
|
+
const declaration = symbol?.declarations[0];
|
|
503
|
+
const where = declaration
|
|
504
|
+
? (ctx.positionOf?.(declaration) ??
|
|
505
|
+
`${ts.getSourceFileOfNode(declaration).fileName}:${declaration.pos}`)
|
|
506
|
+
: "";
|
|
507
|
+
let description = `${ctx.checker.typeToString(t)}@${where}`;
|
|
508
|
+
if (depth < RECURSIVE_NAME_DEPTH) {
|
|
509
|
+
const aliasArguments = t.getAliasSymbol() !== undefined ? (t.getAliasTypeArguments() ?? []) : [];
|
|
510
|
+
const typeArguments = aliasArguments.length > 0
|
|
511
|
+
? aliasArguments
|
|
512
|
+
: t.isTypeReference()
|
|
513
|
+
? ctx.checker.getTypeArguments(t)
|
|
514
|
+
: [];
|
|
515
|
+
if (typeArguments.length > 0)
|
|
516
|
+
description += `<${typeArguments.map((arg) => checkerTypeDescription(arg, ctx, depth + 1)).join(",")}>`;
|
|
517
|
+
}
|
|
518
|
+
return description;
|
|
519
|
+
}
|
|
437
520
|
/** The frontend's union interner — mirrors ShapeRegistry. A union's
|
|
438
521
|
* canonical identity includes its typeKey-sorted arms and literal
|
|
439
522
|
* discriminator contract. An arm's index in that list IS its runtime tag.
|
|
@@ -441,10 +524,12 @@ export class ShapeRegistry {
|
|
|
441
524
|
export class UnionRegistry {
|
|
442
525
|
/** Existing arm/discriminator contracts change when a placeholder closes. */
|
|
443
526
|
revision = 0;
|
|
527
|
+
/** Each union id with a second hash of its key (keyedHelperName). */
|
|
528
|
+
keyedNameKeys = new Map();
|
|
444
529
|
byKey = new Map();
|
|
445
530
|
byId = new Map();
|
|
446
531
|
armTags = new Map();
|
|
447
|
-
/** All interned unions in first-seen
|
|
532
|
+
/** All interned unions in first-seen order. */
|
|
448
533
|
unions = [];
|
|
449
534
|
/** ts.Types currently being mapped — a back-reference to one is the
|
|
450
535
|
* recursive knot passing through a union (`type Tree = Leaf | Branch`
|
|
@@ -459,11 +544,12 @@ export class UnionRegistry {
|
|
|
459
544
|
pendingRec = new Set();
|
|
460
545
|
/** The union id a back-reference to an in-progress union resolves to:
|
|
461
546
|
* reuses the type's persistent recursive id or mints a PLACEHOLDER
|
|
462
|
-
* entry (empty arms) the outer frame finalizes.
|
|
463
|
-
|
|
547
|
+
* entry (empty arms) the outer frame finalizes. `describe` names a new
|
|
548
|
+
* placeholder (checkerTypeDescription). */
|
|
549
|
+
recursiveRef(t, describe) {
|
|
464
550
|
let id = this.recIds.get(t);
|
|
465
551
|
if (id === undefined) {
|
|
466
|
-
id =
|
|
552
|
+
id = recursivePlaceholderName(this, "u", describe(), (name) => this.byId.has(name));
|
|
467
553
|
const def = { id, arms: [] };
|
|
468
554
|
this.byId.set(id, def);
|
|
469
555
|
this.unions.push(def);
|
|
@@ -509,7 +595,7 @@ export class UnionRegistry {
|
|
|
509
595
|
const key = JSON.stringify([arms.map(typeKey), discriminant]);
|
|
510
596
|
let id = this.byKey.get(key);
|
|
511
597
|
if (id === undefined) {
|
|
512
|
-
id =
|
|
598
|
+
id = keyedHelperName(this, "u", key, "");
|
|
513
599
|
const def = { id, arms, ...(discriminant ? { discriminant } : {}) };
|
|
514
600
|
this.byKey.set(key, id);
|
|
515
601
|
this.byId.set(id, def);
|
|
@@ -1325,10 +1411,18 @@ export function mapType(type, ctx) {
|
|
|
1325
1411
|
if (flags & (ts.TypeFlags.Boolean | ts.TypeFlags.BooleanLiteral))
|
|
1326
1412
|
return BOOL;
|
|
1327
1413
|
}
|
|
1414
|
+
const localValue = ctx.localClassValue?.(type);
|
|
1415
|
+
if (localValue) {
|
|
1416
|
+
contextResolutions++;
|
|
1417
|
+
return localValue;
|
|
1418
|
+
}
|
|
1328
1419
|
const topLevel = mapTypeDepth === 0;
|
|
1329
1420
|
const typeId = type.id;
|
|
1330
1421
|
const memoizable = typeId !== undefined && (ctx.canMemoizeType?.() ?? true);
|
|
1331
|
-
|
|
1422
|
+
// An empty literal's type maps to the empty record as an unreduced union's
|
|
1423
|
+
// arm (emptyLiteralArm) and to the checked-dynamic value elsewhere: the two
|
|
1424
|
+
// answers keep separate memo entries.
|
|
1425
|
+
const memoKey = memoizable ? `${ctx.emptyLiteralArm ? 1 : 0}:${typeId}` : null;
|
|
1332
1426
|
if (memoKey !== null) {
|
|
1333
1427
|
const memo = ctx.typeMemo?.get(memoKey);
|
|
1334
1428
|
if (memo !== undefined)
|
|
@@ -2119,6 +2213,25 @@ function mapTypeInner(type, ctx) {
|
|
|
2119
2213
|
return { kind: "classval", className: inst.className };
|
|
2120
2214
|
}
|
|
2121
2215
|
}
|
|
2216
|
+
// A constructable declared in the program whose instances are not one
|
|
2217
|
+
// program class's (`new () => unknown`, `abstract new () => S` over a
|
|
2218
|
+
// record, a type that also names static members such as `{ readonly
|
|
2219
|
+
// schema: unknown; new (): unknown }`, construct overloads): the class
|
|
2220
|
+
// value rides the checked-dynamic tree, as an `unknown` slot already
|
|
2221
|
+
// holds one. `new` through it and static reads dispatch at run time,
|
|
2222
|
+
// and the constructed value checks into the signature's instance type.
|
|
2223
|
+
// Lib and package constructables keep their fences, and so do those of
|
|
2224
|
+
// fetched provenance sources (third-party code under its own policies:
|
|
2225
|
+
// an unused `@__PURE__` const typed `{ new (): any }` elides there).
|
|
2226
|
+
if (ctorSigs.length > 0 &&
|
|
2227
|
+
checker.getCallSignatures(widened).length === 0 &&
|
|
2228
|
+
(widened.getSymbol()?.declarations.length ?? 0) > 0 &&
|
|
2229
|
+
widened.getSymbol().declarations.every((d) => {
|
|
2230
|
+
const sf = ts.getSourceFileOfNode(d);
|
|
2231
|
+
return ctx.isProgramFile(sf) && !isProvenanceSourceFile(sf.fileName);
|
|
2232
|
+
})) {
|
|
2233
|
+
return DYN;
|
|
2234
|
+
}
|
|
2122
2235
|
}
|
|
2123
2236
|
// Map<K, V>: a reference to the standard library's Map interface —
|
|
2124
2237
|
// provenance, not the name (a user's own `interface Map` maps as a record
|
|
@@ -2441,15 +2554,35 @@ function mapTypeInner(type, ctx) {
|
|
|
2441
2554
|
ctx.isStdlibFile(ts.getSourceFileOfNode(d)))) {
|
|
2442
2555
|
return DYN;
|
|
2443
2556
|
}
|
|
2444
|
-
// node:crypto's KeyObject: secret keys
|
|
2445
|
-
//
|
|
2446
|
-
// that export() returns is a
|
|
2557
|
+
// node:crypto's KeyObject: secret keys (scr_lib.c) and private and
|
|
2558
|
+
// public keys (scr_pki.c) are native handles whose getters and methods
|
|
2559
|
+
// dispatch through the handle. The JsonWebKey that export() returns is a
|
|
2560
|
+
// plain checked-dynamic object.
|
|
2447
2561
|
if (((psym !== undefined && ts.symbolName(psym) === "KeyObject") ||
|
|
2448
2562
|
(psym !== undefined && ts.symbolName(psym) === "JsonWebKey")) &&
|
|
2449
2563
|
psym.declarations.some((d) => (ts.isClassDeclaration(d) || ts.isInterfaceDeclaration(d)) &&
|
|
2450
2564
|
ctx.isStdlibFile(ts.getSourceFileOfNode(d)))) {
|
|
2451
2565
|
return DYN;
|
|
2452
2566
|
}
|
|
2567
|
+
// node:crypto's key and signature options are plain checked-dynamic
|
|
2568
|
+
// objects, so a value asserted to one (`opts as
|
|
2569
|
+
// crypto.AsymmetricKeyExportOptions<"pem">`) reaches the call unchanged.
|
|
2570
|
+
if (psym !== undefined &&
|
|
2571
|
+
CRYPTO_KEY_OPTION_DYN_TYPES.has(ts.symbolName(psym)) &&
|
|
2572
|
+
psym.declarations.some((d) => ts.isInterfaceDeclaration(d) &&
|
|
2573
|
+
ctx.isStdlibFile(ts.getSourceFileOfNode(d)) &&
|
|
2574
|
+
isDeclaredInAmbientModule(d, "crypto"))) {
|
|
2575
|
+
return DYN;
|
|
2576
|
+
}
|
|
2577
|
+
// node:crypto's Sign and Verify (createSign/createVerify): native
|
|
2578
|
+
// handles over the digest state (scr_pki.c).
|
|
2579
|
+
if (psym !== undefined &&
|
|
2580
|
+
(ts.symbolName(psym) === "Sign" || ts.symbolName(psym) === "Verify") &&
|
|
2581
|
+
psym.declarations.some((d) => ts.isClassDeclaration(d) &&
|
|
2582
|
+
ctx.isStdlibFile(ts.getSourceFileOfNode(d)) &&
|
|
2583
|
+
isDeclaredInAmbientModule(d, "crypto"))) {
|
|
2584
|
+
return DYN;
|
|
2585
|
+
}
|
|
2453
2586
|
if (psym &&
|
|
2454
2587
|
FETCH_AMBIENT_TYPES.includes(ts.symbolName(psym)) &&
|
|
2455
2588
|
!(ts.symbolName(psym) === "ReadableStream" &&
|
|
@@ -2487,6 +2620,18 @@ function mapTypeInner(type, ctx) {
|
|
|
2487
2620
|
psym.declarations.some((d) => ts.isClassDeclaration(d) && ctx.isStdlibFile(ts.getSourceFileOfNode(d)))) {
|
|
2488
2621
|
return DYN;
|
|
2489
2622
|
}
|
|
2623
|
+
// node:crypto DiffieHellman values, and @types/node's DiffieHellmanGroup
|
|
2624
|
+
// alias over them, are native handles carried by the checked-dynamic
|
|
2625
|
+
// representation; lowerDiffieHellmanCall dispatches their methods.
|
|
2626
|
+
{
|
|
2627
|
+
const dhSym = widened.getAliasSymbol() ?? psym;
|
|
2628
|
+
if (dhSym !== undefined &&
|
|
2629
|
+
(ts.symbolName(dhSym) === "DiffieHellman" || ts.symbolName(dhSym) === "DiffieHellmanGroup") &&
|
|
2630
|
+
dhSym.declarations.some((d) => (ts.isClassDeclaration(d) || ts.isTypeAliasDeclaration(d)) &&
|
|
2631
|
+
ctx.isStdlibFile(ts.getSourceFileOfNode(d)))) {
|
|
2632
|
+
return DYN;
|
|
2633
|
+
}
|
|
2634
|
+
}
|
|
2490
2635
|
// ReadonlyMap/ReadonlySet are the SAME runtime values as Map/Set — the
|
|
2491
2636
|
// readonly-ness is a checker-only view (no mutating members on the
|
|
2492
2637
|
// interface), so both map to the identical IR kinds and the read-side
|
|
@@ -3466,6 +3611,32 @@ function mapTypeInner(type, ctx) {
|
|
|
3466
3611
|
};
|
|
3467
3612
|
}
|
|
3468
3613
|
}
|
|
3614
|
+
// crypto.generateKeyPairSync's results: KeyPairKeyObjectResult and
|
|
3615
|
+
// KeyPairSyncResult<T1, T2> as { publicKey, privateKey } records over the
|
|
3616
|
+
// mapped property types (KeyObjects, PEM strings or DER Buffers), in
|
|
3617
|
+
// Node's key order.
|
|
3618
|
+
if (psym !== undefined &&
|
|
3619
|
+
(ts.symbolName(psym) === "KeyPairKeyObjectResult" ||
|
|
3620
|
+
ts.symbolName(psym) === "KeyPairSyncResult") &&
|
|
3621
|
+
psym.declarations.some((d) => ts.isInterfaceDeclaration(d) &&
|
|
3622
|
+
ctx.isStdlibFile(ts.getSourceFileOfNode(d)) &&
|
|
3623
|
+
isDeclaredInAmbientModule(d, "crypto"))) {
|
|
3624
|
+
const field = (name) => {
|
|
3625
|
+
const prop = ctx.checker.getPropertyOfType(type, name);
|
|
3626
|
+
return prop ? mapType(ctx.checker.getTypeOfSymbol(prop), ctx) : null;
|
|
3627
|
+
};
|
|
3628
|
+
const publicKey = field("publicKey");
|
|
3629
|
+
const privateKey = field("privateKey");
|
|
3630
|
+
if (!publicKey || !privateKey)
|
|
3631
|
+
return null;
|
|
3632
|
+
return {
|
|
3633
|
+
kind: "record",
|
|
3634
|
+
shapeId: ctx.shapes.intern([
|
|
3635
|
+
{ name: "privateKey", type: privateKey },
|
|
3636
|
+
{ name: "publicKey", type: publicKey },
|
|
3637
|
+
], false, undefined, ["publicKey", "privateKey"]),
|
|
3638
|
+
};
|
|
3639
|
+
}
|
|
3469
3640
|
// crypto.X509Certificate — the Dirent-style data record: THREE visible
|
|
3470
3641
|
// fields (fingerprint and the validFrom/validTo validity window, all
|
|
3471
3642
|
// computed at construction by the new-expression lowering). Module-
|
|
@@ -3872,7 +4043,10 @@ function mapTypeInner(type, ctx) {
|
|
|
3872
4043
|
if (knownRecursive !== undefined)
|
|
3873
4044
|
return { kind: "union", unionId: knownRecursive };
|
|
3874
4045
|
if (unions.inProgress.has(widened)) {
|
|
3875
|
-
return {
|
|
4046
|
+
return {
|
|
4047
|
+
kind: "union",
|
|
4048
|
+
unionId: unions.recursiveRef(widened, () => checkerTypeDescription(widened, ctx)),
|
|
4049
|
+
};
|
|
3876
4050
|
}
|
|
3877
4051
|
unions.inProgress.add(widened);
|
|
3878
4052
|
const sensitivityAtEntry = contextResolutions;
|
|
@@ -3896,6 +4070,14 @@ function mapTypeInner(type, ctx) {
|
|
|
3896
4070
|
(part.getSymbol()?.declarations.some((d) => ctx.isStdlibFile(d.getSourceFile())) ?? false));
|
|
3897
4071
|
};
|
|
3898
4072
|
const hasArrayPart = parts.some((part) => checker.isArrayType(part) || matchArray(part));
|
|
4073
|
+
// Subtype reduction removes every arm assignable to `{}`, so a union
|
|
4074
|
+
// that keeps another non-nullish arm beside an empty literal's `{}`
|
|
4075
|
+
// was not reduced: that `{}` arm holds only the literal's objects.
|
|
4076
|
+
const nullish = ts.TypeFlags.Null | ts.TypeFlags.Undefined | ts.TypeFlags.Void;
|
|
4077
|
+
const literalEmptyArms = parts.some((part) => isEmptyObjectLiteralType(part, ctx)) &&
|
|
4078
|
+
parts.some((part) => (part.flags & nullish) === 0 &&
|
|
4079
|
+
!checker.isNeverType(part) &&
|
|
4080
|
+
!isEmptyObjectLiteralType(part, ctx));
|
|
3899
4081
|
for (const part of parts) {
|
|
3900
4082
|
if (hasArrayPart && emptyTuple(part))
|
|
3901
4083
|
continue;
|
|
@@ -3916,7 +4098,19 @@ function mapTypeInner(type, ctx) {
|
|
|
3916
4098
|
byKey.set(typeKey(NULL_T), NULL_T);
|
|
3917
4099
|
continue;
|
|
3918
4100
|
}
|
|
3919
|
-
|
|
4101
|
+
let mapped;
|
|
4102
|
+
if (literalEmptyArms && isEmptyObjectLiteralType(part, ctx)) {
|
|
4103
|
+
ctx.emptyLiteralArm = true;
|
|
4104
|
+
try {
|
|
4105
|
+
mapped = mapType(part, ctx);
|
|
4106
|
+
}
|
|
4107
|
+
finally {
|
|
4108
|
+
ctx.emptyLiteralArm = false;
|
|
4109
|
+
}
|
|
4110
|
+
}
|
|
4111
|
+
else {
|
|
4112
|
+
mapped = mapType(part, ctx);
|
|
4113
|
+
}
|
|
3920
4114
|
if (!mapped) {
|
|
3921
4115
|
return null;
|
|
3922
4116
|
}
|
|
@@ -5050,7 +5244,8 @@ function evalMappedTemplate(type, keys, aliases, ctx) {
|
|
|
5050
5244
|
const checked = evalMappedTemplate(checkType, keys, scope, ctx);
|
|
5051
5245
|
if (!checked)
|
|
5052
5246
|
return null;
|
|
5053
|
-
const inferred =
|
|
5247
|
+
const inferred = primitiveExtendsCheck(checked, extendsType, ctx) ??
|
|
5248
|
+
matchInferReference(checked, extendsType, ctx);
|
|
5054
5249
|
if (inferred === undefined)
|
|
5055
5250
|
return null;
|
|
5056
5251
|
const branch = inferred ? type.getTrueType() : type.getFalseType();
|
|
@@ -5059,6 +5254,24 @@ function evalMappedTemplate(type, keys, aliases, ctx) {
|
|
|
5059
5254
|
}
|
|
5060
5255
|
return mentionsMappedParams(type, keys, aliases) ? null : type;
|
|
5061
5256
|
}
|
|
5257
|
+
/** `checked extends X` where X is a primitive or literal type, or a union of
|
|
5258
|
+
* them (`K extends "required" ? ...`), and `checked` is one such type:
|
|
5259
|
+
* X has no infer positions, so assignability decides the branch (an empty
|
|
5260
|
+
* binding map for the true branch). A union `checked` distributes and stays
|
|
5261
|
+
* undecided here (undefined), as do other shapes. */
|
|
5262
|
+
function primitiveExtendsCheck(checked, extendsType, ctx) {
|
|
5263
|
+
const primitive = ts.TypeFlags.StringLike |
|
|
5264
|
+
ts.TypeFlags.NumberLike |
|
|
5265
|
+
ts.TypeFlags.BooleanLike |
|
|
5266
|
+
ts.TypeFlags.BigIntLike |
|
|
5267
|
+
ts.TypeFlags.Null |
|
|
5268
|
+
ts.TypeFlags.Undefined;
|
|
5269
|
+
const isPrimitive = (t) => !t.isUnionType() && (t.flags & primitive) !== 0 && (t.flags & ts.TypeFlags.TypeParameter) === 0;
|
|
5270
|
+
const extendsParts = extendsType.isUnionType() ? ts.constituentTypes(extendsType) : [extendsType];
|
|
5271
|
+
if (!isPrimitive(checked) || !extendsParts.every(isPrimitive))
|
|
5272
|
+
return undefined;
|
|
5273
|
+
return ctx.checker.isTypeAssignableTo(checked, extendsType) ? new Map() : false;
|
|
5274
|
+
}
|
|
5062
5275
|
/** `checked extends G<..., infer T, ...>`: the infer bindings when
|
|
5063
5276
|
* `checked` is a reference to the same generic `G` (its arguments bind the
|
|
5064
5277
|
* infer positions; other positions must be the same types), false when it
|
|
@@ -6067,7 +6280,10 @@ function mapRecordType(widened, ctx) {
|
|
|
6067
6280
|
// frame completes (finalizeRecursive below). Backends represent records
|
|
6068
6281
|
// as heap references, so the self-reference is an ordinary pointer.
|
|
6069
6282
|
if (shapes.inProgress.has(widened)) {
|
|
6070
|
-
return {
|
|
6283
|
+
return {
|
|
6284
|
+
kind: "record",
|
|
6285
|
+
shapeId: shapes.recursiveRef(widened, () => checkerTypeDescription(widened, ctx)),
|
|
6286
|
+
};
|
|
6071
6287
|
}
|
|
6072
6288
|
shapes.inProgress.add(widened);
|
|
6073
6289
|
const sensitivityAtEntry = contextResolutions;
|
|
@@ -6607,24 +6823,28 @@ function mapRecordTypeInner(widened, ctx) {
|
|
|
6607
6823
|
// has zero declared members — the signature is the shape.
|
|
6608
6824
|
if (computed && props.length === 0 && !indexValue)
|
|
6609
6825
|
return null;
|
|
6610
|
-
//
|
|
6611
|
-
// intrinsic
|
|
6612
|
-
//
|
|
6613
|
-
//
|
|
6614
|
-
//
|
|
6615
|
-
//
|
|
6616
|
-
//
|
|
6617
|
-
//
|
|
6618
|
-
//
|
|
6619
|
-
//
|
|
6620
|
-
//
|
|
6621
|
-
//
|
|
6622
|
-
//
|
|
6826
|
+
// An empty object type — `{}` (spelled, the checker's shared
|
|
6827
|
+
// intrinsic, or inferred from an empty object literal), `interface
|
|
6828
|
+
// Empty {}` — is tsc's TOP type over non-nullish values: every number,
|
|
6829
|
+
// string, record, array, function, or class instance is assignable
|
|
6830
|
+
// into the slot, so the exact-record stance cannot hold it. It lowers
|
|
6831
|
+
// like `unknown` (the dyn), the same rule as `object` and the lib's
|
|
6832
|
+
// `Object`: assignments convert at the site (sources outside the
|
|
6833
|
+
// checked-dynamic tree fence there, exactly as unknown does), reads
|
|
6834
|
+
// narrow back out through the same checked casts. A literal's inferred
|
|
6835
|
+
// `{}` is no exception: union subtype reduction folds primitives into
|
|
6836
|
+
// it (`["12", {}]` is `{}[]`, `flag ? "x" : {}` is `{}`), and `let o =
|
|
6837
|
+
// {}` admits `o = "x"`. As an arm beside another non-nullish arm (the
|
|
6838
|
+
// union was not reduced, `string | {} | DataView`) it holds only the
|
|
6839
|
+
// literal's objects and stays the empty record (emptyLiteralArm).
|
|
6840
|
+
// Computed empties (`Partial<T>` in a generic body) returned null
|
|
6841
|
+
// above. Empty shapes WITH an index signature (`Record<string, T>`) are
|
|
6842
|
+
// not empty: the signature is the shape.
|
|
6623
6843
|
if (props.length === 0 &&
|
|
6624
6844
|
indexValue === undefined &&
|
|
6625
6845
|
checker.getCallSignatures(widened).length === 0 &&
|
|
6626
6846
|
checker.getConstructSignatures(widened).length === 0 &&
|
|
6627
|
-
!(
|
|
6847
|
+
!(ctx.emptyLiteralArm && isEmptyObjectLiteralType(widened, ctx))) {
|
|
6628
6848
|
return DYN;
|
|
6629
6849
|
}
|
|
6630
6850
|
const fields = [];
|
|
@@ -7225,4 +7445,17 @@ function innerBlockedMember(t, ctx, seen) {
|
|
|
7225
7445
|
}
|
|
7226
7446
|
return here;
|
|
7227
7447
|
}
|
|
7448
|
+
/** The type tsc infers from an empty object literal (`{}` written as a
|
|
7449
|
+
* value): no members, index signatures or signatures, declared by an object
|
|
7450
|
+
* literal expression. */
|
|
7451
|
+
function isEmptyObjectLiteralType(type, ctx) {
|
|
7452
|
+
const { checker } = ctx;
|
|
7453
|
+
const symbol = type.getSymbol();
|
|
7454
|
+
return (symbol !== undefined &&
|
|
7455
|
+
symbol.declarations.some((d) => ts.isObjectLiteralExpression(d)) &&
|
|
7456
|
+
checker.getPropertiesOfType(type).length === 0 &&
|
|
7457
|
+
checker.getIndexInfosOfType(type).length === 0 &&
|
|
7458
|
+
checker.getCallSignatures(type).length === 0 &&
|
|
7459
|
+
checker.getConstructSignatures(type).length === 0);
|
|
7460
|
+
}
|
|
7228
7461
|
//# sourceMappingURL=type-mapper.js.map
|