@scriptc/compiler 0.2.10 → 0.3.0
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 +2 -36
- package/ambient/scriptc-overrides.d.ts +1 -25
- package/ambient/scriptc.d.ts +1 -9
- package/dist/backend/cycle-analysis.test.js +1 -1
- package/dist/backend/cycle-mutability.d.ts +1 -1
- package/dist/backend/cycle-mutability.js +1 -18
- package/dist/backend/cycle-mutability.js.map +1 -1
- package/dist/backend/executable-features.d.ts +1 -1
- package/dist/backend/executable-features.js +3 -8
- package/dist/backend/executable-features.js.map +1 -1
- package/dist/backend/immutability.d.ts +1 -1
- package/dist/backend/immutability.js +1 -1
- package/dist/backend/immutability.test.js +1 -1
- package/dist/backend/library-pack.js +0 -2
- package/dist/backend/library-pack.js.map +1 -1
- package/dist/backend/linker.js +1 -1
- package/dist/backend/linker.js.map +1 -1
- package/dist/backend/llvm/checked-narrows.test.js +1 -1
- package/dist/backend/llvm/classes.js +3 -9
- package/dist/backend/llvm/classes.js.map +1 -1
- package/dist/backend/llvm/classes.test.js +7 -7
- package/dist/backend/llvm/constant-callbacks.d.ts +1 -1
- package/dist/backend/llvm/constant-callbacks.js +3 -3
- package/dist/backend/llvm/constant-callbacks.js.map +1 -1
- package/dist/backend/llvm/constant-callbacks.test.js +1 -1
- package/dist/backend/llvm/dense-array-access.test.js +1 -1
- package/dist/backend/llvm/dyn.d.ts +0 -1
- package/dist/backend/llvm/dyn.js +0 -73
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emitter.d.ts +3 -17
- package/dist/backend/llvm/emitter.js +53 -181
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/emitter.test.js +3 -3
- package/dist/backend/llvm/expr-async.test.js +1 -1
- package/dist/backend/llvm/expr-containers.js +12 -8
- package/dist/backend/llvm/expr-containers.js.map +1 -1
- package/dist/backend/llvm/expr-control.js +4 -107
- package/dist/backend/llvm/expr-control.js.map +1 -1
- package/dist/backend/llvm/expr-dispatch.d.ts +1 -2
- package/dist/backend/llvm/expr-dispatch.js +0 -41
- package/dist/backend/llvm/expr-dispatch.js.map +1 -1
- package/dist/backend/llvm/expr-dynamic.d.ts +1 -1
- package/dist/backend/llvm/expr-dynamic.js +13 -27
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.test.js +2 -2
- package/dist/backend/llvm/expr-stream-bridges.test.js +1 -1
- package/dist/backend/llvm/lib-dispatch.js +0 -1
- package/dist/backend/llvm/lib-dispatch.js.map +1 -1
- package/dist/backend/llvm/lib-filesystem.js +0 -13
- package/dist/backend/llvm/lib-filesystem.js.map +1 -1
- package/dist/backend/llvm/lib-shared.js +0 -8
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.test.js +1 -1
- package/dist/backend/llvm/local-union-storage.test.js +1 -1
- package/dist/backend/llvm/map-number-lookup.d.ts +7 -0
- package/dist/backend/llvm/map-number-lookup.js +16 -2
- package/dist/backend/llvm/map-number-lookup.js.map +1 -1
- package/dist/backend/llvm/map-read-lifetimes.js +7 -1
- package/dist/backend/llvm/map-read-lifetimes.js.map +1 -1
- package/dist/backend/llvm/map-read-lifetimes.test.js +24 -7
- package/dist/backend/llvm/map-read-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/shapes.js +1 -2
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/llvm/shapes.test.js +3 -3
- package/dist/backend/llvm/stack-unions.test.js +1 -1
- package/dist/backend/llvm/string-construction.test.js +1 -1
- package/dist/backend/llvm/string-lifetimes.test.js +1 -1
- package/dist/backend/llvm/switch-dispatch.test.js +1 -1
- package/dist/backend/may-throw.js +0 -9
- package/dist/backend/may-throw.js.map +1 -1
- package/dist/backend/may-throw.test.js +1 -1
- package/dist/backend/native/artifact-stamps.js +0 -2
- package/dist/backend/native/artifact-stamps.js.map +1 -1
- package/dist/backend/native/cache-warm.d.ts +1 -1
- package/dist/backend/native/cache-warm.js +2 -3
- package/dist/backend/native/cache-warm.js.map +1 -1
- package/dist/backend/native/compiler-fingerprint.d.ts +1 -1
- package/dist/backend/native/compiler-fingerprint.js +4 -7
- package/dist/backend/native/compiler-fingerprint.js.map +1 -1
- package/dist/backend/native/contracts.d.ts +3 -28
- package/dist/backend/native/driver.js +1 -3
- package/dist/backend/native/driver.js.map +1 -1
- package/dist/backend/native/executable.d.ts +0 -15
- package/dist/backend/native/executable.js +17 -172
- package/dist/backend/native/executable.js.map +1 -1
- package/dist/backend/native/tool-identity.js +0 -1
- package/dist/backend/native/tool-identity.js.map +1 -1
- package/dist/backend/native/vendor.d.ts +1 -1
- package/dist/backend/native/vendor.js +1 -1
- package/dist/backend/native/vendor.js.map +1 -1
- package/dist/backend/native-link-info-core.d.ts +0 -2
- package/dist/backend/native-link-info-core.js.map +1 -1
- package/dist/backend/native-toolchain.test.js +23 -33
- package/dist/backend/native-toolchain.test.js.map +1 -1
- package/dist/backend/publication.test.js +1 -1
- package/dist/backend/runtime-abi.d.ts +2 -2
- package/dist/backend/runtime-abi.js +2 -2
- package/dist/backend/runtime-pack-core.d.ts +1 -2
- package/dist/backend/runtime-pack-core.js +5 -14
- package/dist/backend/runtime-pack-core.js.map +1 -1
- package/dist/backend/runtime-pack-targets.test.js +3 -8
- package/dist/backend/runtime-pack-targets.test.js.map +1 -1
- package/dist/backend/runtime-pack.test.js +22 -19
- package/dist/backend/runtime-pack.test.js.map +1 -1
- package/dist/backend/target-diagnostics.d.ts +0 -5
- package/dist/backend/target-diagnostics.js +1 -11
- package/dist/backend/target-diagnostics.js.map +1 -1
- package/dist/backend/target-diagnostics.test.js +1 -1
- package/dist/backend/vendor-archives.d.ts +1 -7
- package/dist/backend/vendor-archives.js +9 -189
- package/dist/backend/vendor-archives.js.map +1 -1
- package/dist/backend/vendor-inputs.d.ts +0 -1
- package/dist/backend/vendor-inputs.js +0 -1
- package/dist/backend/vendor-inputs.js.map +1 -1
- package/dist/backend/warm-cache.js +3 -5
- package/dist/backend/warm-cache.js.map +1 -1
- package/dist/cli/command.js +4 -8
- package/dist/cli/command.js.map +1 -1
- package/dist/cli/host.d.ts +1 -1
- package/dist/cli/usage.d.ts +1 -5
- package/dist/cli/usage.js +4 -9
- package/dist/cli/usage.js.map +1 -1
- package/dist/compat/fetch-profile.d.ts +2 -2
- package/dist/compat/fetch-profile.js +16 -25
- package/dist/compat/fetch-profile.js.map +1 -1
- package/dist/compile-types.d.ts +2 -17
- package/dist/contracts/check.js +2 -6
- package/dist/contracts/check.js.map +1 -1
- package/dist/coverage/report.d.ts +5 -22
- package/dist/coverage/report.js +12 -76
- package/dist/coverage/report.js.map +1 -1
- package/dist/coverage/surface-manifest.d.ts +3 -3
- package/dist/coverage/surface-manifest.js +22 -27
- package/dist/coverage/surface-manifest.js.map +1 -1
- package/dist/coverage/verdict-cache.d.ts +1 -3
- package/dist/coverage/verdict-cache.js +2 -7
- package/dist/coverage/verdict-cache.js.map +1 -1
- package/dist/diagnostics/diagnostic.d.ts +11 -60
- package/dist/diagnostics/diagnostic.js +39 -118
- package/dist/diagnostics/diagnostic.js.map +1 -1
- package/dist/diagnostics/envelope.d.ts +3 -4
- package/dist/diagnostics/envelope.js +0 -9
- package/dist/diagnostics/envelope.js.map +1 -1
- package/dist/diagnostics/envelope.test.js +1 -1
- package/dist/diagnostics/envelope.test.js.map +1 -1
- package/dist/executable/executable-cache.d.ts +0 -3
- package/dist/executable/executable-cache.js +2 -4
- package/dist/executable/executable-cache.js.map +1 -1
- package/dist/executable/executable-cache.test.js +0 -4
- package/dist/executable/executable-cache.test.js.map +1 -1
- package/dist/executable/prepare.js +5 -2
- package/dist/executable/prepare.js.map +1 -1
- package/dist/frontend/analysis.js +10 -10
- package/dist/frontend/analysis.js.map +1 -1
- package/dist/frontend/cjs-syntax.js +0 -88
- package/dist/frontend/cjs-syntax.js.map +1 -1
- package/dist/frontend/dts-paths.d.ts +1 -1
- package/dist/frontend/dts-paths.js +1 -1
- package/dist/frontend/lowering/abstract-equality.js +1 -4
- package/dist/frontend/lowering/abstract-equality.js.map +1 -1
- package/dist/frontend/lowering/array-values.js +4 -11
- package/dist/frontend/lowering/array-values.js.map +1 -1
- package/dist/frontend/lowering/builtins/arguments.js +0 -13
- package/dist/frontend/lowering/builtins/arguments.js.map +1 -1
- package/dist/frontend/lowering/builtins/crypto.d.ts +0 -4
- package/dist/frontend/lowering/builtins/crypto.js +0 -4
- package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
- package/dist/frontend/lowering/builtins/json.js +1 -39
- package/dist/frontend/lowering/builtins/json.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-resolution.d.ts +0 -15
- package/dist/frontend/lowering/builtins/module-resolution.js +5 -44
- package/dist/frontend/lowering/builtins/module-resolution.js.map +1 -1
- package/dist/frontend/lowering/builtins/numbers.d.ts +0 -6
- package/dist/frontend/lowering/builtins/numbers.js +6 -57
- package/dist/frontend/lowering/builtins/numbers.js.map +1 -1
- package/dist/frontend/lowering/builtins/promises.js +4 -67
- package/dist/frontend/lowering/builtins/promises.js.map +1 -1
- package/dist/frontend/lowering/builtins/workers.js +1 -1
- package/dist/frontend/lowering/builtins/workers.js.map +1 -1
- package/dist/frontend/lowering/call-arguments.d.ts +1 -37
- package/dist/frontend/lowering/call-arguments.js +11 -94
- package/dist/frontend/lowering/call-arguments.js.map +1 -1
- package/dist/frontend/lowering/call-signatures.d.ts +1 -6
- package/dist/frontend/lowering/call-signatures.js +16 -68
- package/dist/frontend/lowering/call-signatures.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +19 -4
- package/dist/frontend/lowering/class-dynamic-dispatch.js +168 -98
- package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.test.js +44 -4
- package/dist/frontend/lowering/class-dynamic-dispatch.test.js.map +1 -1
- package/dist/frontend/lowering/class-method-mutations.js +0 -2
- package/dist/frontend/lowering/class-method-mutations.js.map +1 -1
- package/dist/frontend/lowering/class-protocols.js +1 -1
- package/dist/frontend/lowering/class-protocols.js.map +1 -1
- package/dist/frontend/lowering/coercions/function-adapters.js +5 -35
- package/dist/frontend/lowering/coercions/function-adapters.js.map +1 -1
- package/dist/frontend/lowering/coercions/state.d.ts +0 -1
- package/dist/frontend/lowering/coercions/state.js +0 -1
- package/dist/frontend/lowering/coercions/state.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural-plans.js +2 -4
- package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural.js +2 -12
- package/dist/frontend/lowering/coercions/structural.js.map +1 -1
- package/dist/frontend/lowering/coercions/unions.js +0 -1
- package/dist/frontend/lowering/coercions/unions.js.map +1 -1
- package/dist/frontend/lowering/containers/array-callbacks.js +9 -28
- package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
- package/dist/frontend/lowering/containers/array-construction.js +2 -3
- package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
- package/dist/frontend/lowering/containers/array-methods.js +10 -54
- package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/bytes.js +0 -1
- package/dist/frontend/lowering/containers/bytes.js.map +1 -1
- package/dist/frontend/lowering/containers/callback-arguments.js +2 -10
- package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -1
- package/dist/frontend/lowering/containers/collection-methods.js +1 -6
- package/dist/frontend/lowering/containers/collection-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/indexed-objects.js +0 -2
- package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
- package/dist/frontend/lowering/containers/string-and-regexp.d.ts +0 -6
- package/dist/frontend/lowering/containers/string-and-regexp.js +2 -10
- package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
- package/dist/frontend/lowering/expressions/evaluation-safety.js +0 -3
- package/dist/frontend/lowering/expressions/evaluation-safety.js.map +1 -1
- package/dist/frontend/lowering/expressions/native-proxy.js +1 -1
- package/dist/frontend/lowering/expressions/native-proxy.js.map +1 -1
- package/dist/frontend/lowering/expressions/nullish-assignment.js +0 -1
- package/dist/frontend/lowering/expressions/nullish-assignment.js.map +1 -1
- package/dist/frontend/lowering/expressions/object-literals.d.ts +0 -8
- package/dist/frontend/lowering/expressions/object-literals.js +8 -35
- package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/optional-chains.d.ts +0 -4
- package/dist/frontend/lowering/expressions/optional-chains.js +3 -66
- package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
- package/dist/frontend/lowering/function-context.js +0 -1
- package/dist/frontend/lowering/function-context.js.map +1 -1
- package/dist/frontend/lowering/generic-functions.js +0 -1
- package/dist/frontend/lowering/generic-functions.js.map +1 -1
- package/dist/frontend/lowering/lib-boundary.js +10 -77
- package/dist/frontend/lowering/lib-boundary.js.map +1 -1
- package/dist/frontend/lowering/lower-array-sort.js +1 -10
- package/dist/frontend/lowering/lower-array-sort.js.map +1 -1
- package/dist/frontend/lowering/lower-array-sort.test.js +2 -2
- package/dist/frontend/lowering/lower-array-sort.test.js.map +1 -1
- package/dist/frontend/lowering/lower-assert.js +2 -3
- package/dist/frontend/lowering/lower-assert.js.map +1 -1
- package/dist/frontend/lowering/lower-async-iteration.js +1 -1
- package/dist/frontend/lowering/lower-calls.d.ts +2 -27
- package/dist/frontend/lowering/lower-calls.js +47 -463
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.js +11 -49
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-comptime.js +2 -3
- package/dist/frontend/lowering/lower-comptime.js.map +1 -1
- package/dist/frontend/lowering/lower-enums.js +5 -8
- package/dist/frontend/lowering/lower-enums.js.map +1 -1
- package/dist/frontend/lowering/lower-event-emitter.js +3 -4
- package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
- package/dist/frontend/lowering/lower-expando.js +3 -5
- package/dist/frontend/lowering/lower-expando.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.d.ts +0 -8
- package/dist/frontend/lowering/lower-exprs.js +50 -907
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-functions.js +2 -5
- package/dist/frontend/lowering/lower-functions.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.js +1 -50
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.d.ts +0 -43
- package/dist/frontend/lowering/lower-modules.js +25 -329
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.test.js +5 -5
- package/dist/frontend/lowering/lower-modules.test.js.map +1 -1
- package/dist/frontend/lowering/lower-server.js +0 -30
- package/dist/frontend/lowering/lower-server.js.map +1 -1
- package/dist/frontend/lowering/lower-stdlib.d.ts +98 -0
- package/dist/frontend/lowering/{lower-island.js → lower-stdlib.js} +97 -1160
- package/dist/frontend/lowering/lower-stdlib.js.map +1 -0
- package/dist/frontend/lowering/lower-stmts.d.ts +0 -16
- package/dist/frontend/lowering/lower-stmts.js +58 -1016
- 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 +1 -3
- package/dist/frontend/lowering/lower-stream.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +17 -151
- package/dist/frontend/lowering/lowerer.js +73 -770
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/lowerer.test.js +4 -51
- package/dist/frontend/lowering/lowerer.test.js.map +1 -1
- package/dist/frontend/lowering/narrowing-stability.js +1 -1
- package/dist/frontend/lowering/narrowing-stability.js.map +1 -1
- package/dist/frontend/lowering/optional-arguments.js +0 -2
- package/dist/frontend/lowering/optional-arguments.js.map +1 -1
- package/dist/frontend/lowering/sanitize-class-types.test.js +2 -2
- package/dist/frontend/lowering/strict-equality.js +1 -1
- package/dist/frontend/lowering/strict-equality.js.map +1 -1
- package/dist/frontend/lowering/surfaces.d.ts +6 -45
- package/dist/frontend/lowering/surfaces.js +5 -65
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/module-syntax.d.ts +0 -3
- package/dist/frontend/module-syntax.js.map +1 -1
- package/dist/frontend/npm-node.d.ts +0 -7
- package/dist/frontend/npm-node.js +0 -7
- package/dist/frontend/npm-node.js.map +1 -1
- package/dist/frontend/npm-static-rewrite-syntax.d.ts +1 -1
- package/dist/frontend/npm-static-rewrite-syntax.js +6 -82
- package/dist/frontend/npm-static-rewrite-syntax.js.map +1 -1
- package/dist/frontend/npm-static.d.ts +1 -1
- package/dist/frontend/npm-static.js +6 -71
- package/dist/frontend/npm-static.js.map +1 -1
- package/dist/frontend/npm.d.ts +3 -319
- package/dist/frontend/npm.js +6 -1007
- package/dist/frontend/npm.js.map +1 -1
- package/dist/frontend/npm.test.js +2 -197
- package/dist/frontend/npm.test.js.map +1 -1
- package/dist/frontend/pipeline-native.js +1 -2
- package/dist/frontend/pipeline-native.js.map +1 -1
- package/dist/frontend/pipeline.d.ts +3 -11
- package/dist/frontend/pipeline.js +37 -56
- package/dist/frontend/pipeline.js.map +1 -1
- package/dist/frontend/pipeline.test.js +12 -6
- package/dist/frontend/pipeline.test.js.map +1 -1
- package/dist/frontend/program.d.ts +0 -34
- package/dist/frontend/program.js +12 -97
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/provenance-core.d.ts +0 -4
- package/dist/frontend/provenance-core.js +4 -37
- package/dist/frontend/provenance-core.js.map +1 -1
- package/dist/frontend/provenance-registry.d.ts +0 -4
- package/dist/frontend/provenance-registry.js +0 -20
- package/dist/frontend/provenance-registry.js.map +1 -1
- package/dist/frontend/resolve.d.ts +0 -12
- package/dist/frontend/resolve.js +0 -34
- package/dist/frontend/resolve.js.map +1 -1
- package/dist/frontend/runtime-resolve.js +2 -2
- package/dist/frontend/runtime-resolve.js.map +1 -1
- package/dist/frontend/services-node.js +2 -3
- package/dist/frontend/services-node.js.map +1 -1
- package/dist/frontend/services.d.ts +1 -8
- package/dist/frontend/services.js +2 -22
- package/dist/frontend/services.js.map +1 -1
- package/dist/frontend/services.test.js +0 -38
- package/dist/frontend/services.test.js.map +1 -1
- package/dist/frontend/tsc-codes.js +0 -11
- package/dist/frontend/tsc-codes.js.map +1 -1
- package/dist/frontend/type-mapper.d.ts +2 -27
- package/dist/frontend/type-mapper.js +42 -153
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +7 -10
- package/dist/index.js.map +1 -1
- package/dist/ir/api.d.ts +1 -1
- package/dist/ir/api.js +1 -1
- package/dist/ir/api.js.map +1 -1
- package/dist/ir/builtin-effects.js +0 -5
- package/dist/ir/builtin-effects.js.map +1 -1
- package/dist/ir/builtin-signatures.d.ts +1 -1
- package/dist/ir/builtin-signatures.js +1 -55
- package/dist/ir/builtin-signatures.js.map +1 -1
- package/dist/ir/constant-globals.test.js +1 -1
- package/dist/ir/constant-tables.test.js +1 -1
- package/dist/ir/final-fields.test.js +1 -1
- package/dist/ir/initializer-bindings.test.js +1 -1
- package/dist/ir/int32-slots.d.ts +3 -3
- package/dist/ir/int32-slots.js +5 -19
- package/dist/ir/int32-slots.js.map +1 -1
- package/dist/ir/int32-slots.test.js +1 -1
- package/dist/ir/ir.d.ts +12 -284
- package/dist/ir/ir.js +10 -259
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/ir.test.js +2 -7
- package/dist/ir/ir.test.js.map +1 -1
- package/dist/ir/runtime-features.d.ts +3 -30
- package/dist/ir/runtime-features.js +5 -41
- package/dist/ir/runtime-features.js.map +1 -1
- package/dist/ir/scalar-records.test.js +1 -1
- package/dist/ir/serialize.d.ts +1 -1
- package/dist/ir/serialize.js +3 -3
- package/dist/ir/serialize.js.map +1 -1
- package/dist/ir/traverse.js +0 -21
- package/dist/ir/traverse.js.map +1 -1
- package/dist/ir/unshare.test.js +1 -1
- package/dist/ir/validate.js +9 -207
- package/dist/ir/validate.js.map +1 -1
- package/dist/ir/validate.test.js +6 -6
- package/dist/library/fence-eval.test.js +1 -1
- package/dist/library/int-infer.test.js +4 -4
- package/dist/library/library-cache.test.js +5 -5
- package/dist/library/prepare.js +5 -20
- package/dist/library/prepare.js.map +1 -1
- package/dist/native/cli.js +0 -2
- package/dist/native/cli.js.map +1 -1
- package/dist/native/compiler.test.js +2 -4
- package/dist/native/compiler.test.js.map +1 -1
- package/dist/native/prepare.js +2 -4
- package/dist/native/prepare.js.map +1 -1
- package/dist/native/sanitizer.js +2 -16
- package/dist/native/sanitizer.js.map +1 -1
- package/dist/native/sanitizer.test.js +0 -3
- package/dist/native/sanitizer.test.js.map +1 -1
- package/dist/startup-cache.js +0 -2
- package/dist/startup-cache.js.map +1 -1
- package/package.json +20 -20
- package/surface-manifest.json +80 -88
- package/dist/backend/llvm/expr-island.d.ts +0 -15
- package/dist/backend/llvm/expr-island.js +0 -709
- package/dist/backend/llvm/expr-island.js.map +0 -1
- package/dist/frontend/lowering/coercions/island.d.ts +0 -37
- package/dist/frontend/lowering/coercions/island.js +0 -350
- package/dist/frontend/lowering/coercions/island.js.map +0 -1
- package/dist/frontend/lowering/lower-island.d.ts +0 -229
- package/dist/frontend/lowering/lower-island.js.map +0 -1
- package/dist/frontend/lowering/lower-island.test.d.ts +0 -1
- package/dist/frontend/lowering/lower-island.test.js +0 -56
- package/dist/frontend/lowering/lower-island.test.js.map +0 -1
- package/dist/frontend/npm-fetch-analysis.d.ts +0 -17
- package/dist/frontend/npm-fetch-analysis.js +0 -109
- package/dist/frontend/npm-fetch-analysis.js.map +0 -1
- package/dist/frontend/npm-fetch-analysis.test.d.ts +0 -1
- package/dist/frontend/npm-fetch-analysis.test.js +0 -130
- package/dist/frontend/npm-fetch-analysis.test.js.map +0 -1
- package/dist/frontend/npm-fetch-node.d.ts +0 -2
- package/dist/frontend/npm-fetch-node.js +0 -12
- package/dist/frontend/npm-fetch-node.js.map +0 -1
- package/dist/frontend/npm-fetch-syntax.d.ts +0 -6
- package/dist/frontend/npm-fetch-syntax.js +0 -202
- package/dist/frontend/npm-fetch-syntax.js.map +0 -1
- package/dist/native/runtime-typescript.d.ts +0 -4
- package/dist/native/runtime-typescript.js +0 -74
- package/dist/native/runtime-typescript.js.map +0 -1
- package/dist/native/runtime-typescript.test.d.ts +0 -1
- package/dist/native/runtime-typescript.test.js +0 -41
- package/dist/native/runtime-typescript.test.js.map +0 -1
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
import { resolve } from "node:path";
|
|
2
|
-
import { Ts7Api } from "./ts7/api.js";
|
|
3
|
-
import { Ts7Paths, tsgoPath } from "./ts7/session-path.js";
|
|
4
|
-
import { sourceFilesUsingGlobalFetch } from "./npm-fetch-syntax.js";
|
|
5
|
-
/** A closed semantic project over the source strings already owned by an
|
|
6
|
-
* embedded module graph. Every call binds a fresh graph: no AST, symbol or
|
|
7
|
-
* filesystem overlay survives disposal, including after a failed query. */
|
|
8
|
-
export class NpmFetchAnalyzer {
|
|
9
|
-
createApi;
|
|
10
|
-
cwd;
|
|
11
|
-
closed = false;
|
|
12
|
-
constructor(createApi, cwd = process.cwd()) {
|
|
13
|
-
this.createApi = createApi;
|
|
14
|
-
this.cwd = cwd;
|
|
15
|
-
}
|
|
16
|
-
analyze(modules) {
|
|
17
|
-
if (this.closed)
|
|
18
|
-
throw new Error("npm fetch analyzer is closed");
|
|
19
|
-
const paths = new Ts7Paths(tsgoPath(resolve(this.cwd)), process.platform !== "win32");
|
|
20
|
-
const files = new Map();
|
|
21
|
-
const keys = new Map();
|
|
22
|
-
for (const mod of modules) {
|
|
23
|
-
if (mod.format === "json")
|
|
24
|
-
continue;
|
|
25
|
-
// Embedded modules may have virtual loader keys without a JS suffix.
|
|
26
|
-
// Their source is JavaScript regardless of the loader's key spelling.
|
|
27
|
-
const path = paths.canonical(/\.[cm]?js$/.test(mod.key) ? mod.key : mod.key + ".js");
|
|
28
|
-
const existing = keys.get(path);
|
|
29
|
-
if (existing !== undefined && existing !== mod.key)
|
|
30
|
-
throw new Error(`npm module keys share a TypeScript path: ${existing}, ${mod.key}`);
|
|
31
|
-
files.set(path, mod.source);
|
|
32
|
-
keys.set(path, mod.key);
|
|
33
|
-
}
|
|
34
|
-
if (files.size === 0)
|
|
35
|
-
return new Set();
|
|
36
|
-
const roots = [...files.keys()];
|
|
37
|
-
let config = paths.canonical("__scriptc-fetch.tsconfig.json");
|
|
38
|
-
while (files.has(config))
|
|
39
|
-
config += ".json";
|
|
40
|
-
files.set(config, JSON.stringify({
|
|
41
|
-
compilerOptions: {
|
|
42
|
-
allowJs: true,
|
|
43
|
-
checkJs: false,
|
|
44
|
-
noLib: true,
|
|
45
|
-
types: [],
|
|
46
|
-
noEmit: true,
|
|
47
|
-
target: "esnext",
|
|
48
|
-
module: "esnext",
|
|
49
|
-
moduleDetection: "force",
|
|
50
|
-
},
|
|
51
|
-
files: roots,
|
|
52
|
-
include: [],
|
|
53
|
-
}));
|
|
54
|
-
let api;
|
|
55
|
-
try {
|
|
56
|
-
api = this.createApi({
|
|
57
|
-
cwd: resolve(this.cwd),
|
|
58
|
-
fs: {
|
|
59
|
-
readFile: (path) => files.get(paths.canonical(path)) ?? null,
|
|
60
|
-
fileExists: (path) => files.has(paths.canonical(path)),
|
|
61
|
-
directoryExists: (path) => {
|
|
62
|
-
const dir = paths.canonical(path);
|
|
63
|
-
const prefix = dir.endsWith("/") ? dir : dir + "/";
|
|
64
|
-
for (const file of files.keys())
|
|
65
|
-
if (file.startsWith(prefix))
|
|
66
|
-
return true;
|
|
67
|
-
return false;
|
|
68
|
-
},
|
|
69
|
-
realpath: (path) => path,
|
|
70
|
-
getAccessibleEntries: () => ({ files: [], directories: [] }),
|
|
71
|
-
},
|
|
72
|
-
});
|
|
73
|
-
const snapshot = api.updateSnapshot({ openProjects: [config] });
|
|
74
|
-
try {
|
|
75
|
-
const project = snapshot.getProject(config);
|
|
76
|
-
if (project === undefined)
|
|
77
|
-
throw new Error("could not bind embedded npm module graph");
|
|
78
|
-
const sources = roots.map((path) => {
|
|
79
|
-
const file = project.program.getSourceFile(path);
|
|
80
|
-
if (file === undefined)
|
|
81
|
-
throw new Error(`could not bind npm module ${keys.get(path)}`);
|
|
82
|
-
return file;
|
|
83
|
-
});
|
|
84
|
-
const found = new Set();
|
|
85
|
-
for (const file of sourceFilesUsingGlobalFetch(sources, project.checker)) {
|
|
86
|
-
const key = keys.get(paths.canonical(file));
|
|
87
|
-
if (key !== undefined)
|
|
88
|
-
found.add(key);
|
|
89
|
-
}
|
|
90
|
-
return found;
|
|
91
|
-
}
|
|
92
|
-
finally {
|
|
93
|
-
snapshot.dispose();
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
finally {
|
|
97
|
-
try {
|
|
98
|
-
api?.close();
|
|
99
|
-
}
|
|
100
|
-
finally {
|
|
101
|
-
files.clear();
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
close() {
|
|
106
|
-
this.closed = true;
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
//# sourceMappingURL=npm-fetch-analysis.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"npm-fetch-analysis.js","sourceRoot":"","sources":["../../src/frontend/npm-fetch-analysis.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
import { mkdtempSync, rmSync, writeFileSync } from "node:fs";
|
|
2
|
-
import { join } from "node:path";
|
|
3
|
-
import { tmpdir } from "node:os";
|
|
4
|
-
import { afterEach, expect, test, vi } from "vitest";
|
|
5
|
-
import { NpmFetchAnalyzer } from "./npm-fetch-analysis.js";
|
|
6
|
-
import { Ts7Api } from "./ts7/rpc-api.js";
|
|
7
|
-
const directories = [];
|
|
8
|
-
afterEach(() => {
|
|
9
|
-
for (const dir of directories.splice(0))
|
|
10
|
-
rmSync(dir, { recursive: true, force: true });
|
|
11
|
-
});
|
|
12
|
-
function directory() {
|
|
13
|
-
const dir = mkdtempSync(join(process.platform === "win32" ? tmpdir() : "/tmp", "scriptc-fetch-analysis-"));
|
|
14
|
-
directories.push(dir);
|
|
15
|
-
return dir;
|
|
16
|
-
}
|
|
17
|
-
function module(key, source) {
|
|
18
|
-
return { key, source, format: "cjs" };
|
|
19
|
-
}
|
|
20
|
-
test("preserves original loader keys, ignores JSON, and isolates each module's bindings", () => {
|
|
21
|
-
const analyzer = new NpmFetchAnalyzer((options) => new Ts7Api(options), directory());
|
|
22
|
-
try {
|
|
23
|
-
const files = [
|
|
24
|
-
module("local", "const fetch = () => 1; fetch();"),
|
|
25
|
-
module("bare", "fetch();"),
|
|
26
|
-
module("C:\\包\\main.js", "globalThis.fetch();"),
|
|
27
|
-
module("工作.mjs", "global.fetch();"),
|
|
28
|
-
module("typed.ts", "module.exports = fetch;"),
|
|
29
|
-
module("scr:import-trap:0", "globalThis.fetch;"),
|
|
30
|
-
{ key: "data.json", source: "fetch()", format: "json" },
|
|
31
|
-
];
|
|
32
|
-
expect([...analyzer.analyze(files)]).toEqual([
|
|
33
|
-
"bare",
|
|
34
|
-
"C:\\包\\main.js",
|
|
35
|
-
"工作.mjs",
|
|
36
|
-
"typed.ts",
|
|
37
|
-
"scr:import-trap:0",
|
|
38
|
-
]);
|
|
39
|
-
}
|
|
40
|
-
finally {
|
|
41
|
-
analyzer.close();
|
|
42
|
-
}
|
|
43
|
-
});
|
|
44
|
-
test("repeated analysis sees edits, removals, and reused names without retaining symbols", () => {
|
|
45
|
-
const analyzer = new NpmFetchAnalyzer((options) => new Ts7Api(options), directory());
|
|
46
|
-
try {
|
|
47
|
-
expect([...analyzer.analyze([module("same.js", "fetch();")])]).toEqual(["same.js"]);
|
|
48
|
-
expect([...analyzer.analyze([module("same.js", "const fetch = () => 1; fetch();")])]).toEqual([]);
|
|
49
|
-
expect([...analyzer.analyze([])]).toEqual([]);
|
|
50
|
-
expect([...analyzer.analyze([module("same.js", "globalThis.fetch();")])]).toEqual(["same.js"]);
|
|
51
|
-
}
|
|
52
|
-
finally {
|
|
53
|
-
analyzer.close();
|
|
54
|
-
}
|
|
55
|
-
analyzer.close();
|
|
56
|
-
expect(() => analyzer.analyze([])).toThrow("closed");
|
|
57
|
-
});
|
|
58
|
-
test("a closed filesystem never reads ambient declarations or packages from disk", () => {
|
|
59
|
-
const dir = directory();
|
|
60
|
-
writeFileSync(join(dir, "ambient.d.ts"), "declare const fetch: () => void;");
|
|
61
|
-
writeFileSync(join(dir, "tsconfig.json"), JSON.stringify({ compilerOptions: { types: ["node"] } }));
|
|
62
|
-
let fs;
|
|
63
|
-
const analyzer = new NpmFetchAnalyzer((options) => {
|
|
64
|
-
fs = options.fs;
|
|
65
|
-
return new Ts7Api(options);
|
|
66
|
-
}, dir);
|
|
67
|
-
try {
|
|
68
|
-
expect([
|
|
69
|
-
...analyzer.analyze([module("main.js", "/// <reference path='./ambient.d.ts' />\nfetch();")]),
|
|
70
|
-
]).toEqual(["main.js"]);
|
|
71
|
-
expect(fs.readFile(join(dir, "ambient.d.ts"))).toBeNull();
|
|
72
|
-
expect(fs.fileExists(join(dir, "ambient.d.ts"))).toBe(false);
|
|
73
|
-
expect(fs.getAccessibleEntries(dir)).toEqual({ files: [], directories: [] });
|
|
74
|
-
expect(fs.readFile(join(dir, "main.js"))).toBeNull();
|
|
75
|
-
}
|
|
76
|
-
finally {
|
|
77
|
-
analyzer.close();
|
|
78
|
-
}
|
|
79
|
-
});
|
|
80
|
-
test("rejects path aliases instead of attributing a capability to a different loader key", () => {
|
|
81
|
-
const factory = vi.fn((options) => new Ts7Api(options));
|
|
82
|
-
const analyzer = new NpmFetchAnalyzer(factory, directory());
|
|
83
|
-
expect(() => analyzer.analyze([module("same", "fetch();"), module("same.js", "const fetch = 1;")])).toThrow("share a TypeScript path");
|
|
84
|
-
expect(factory).not.toHaveBeenCalled();
|
|
85
|
-
});
|
|
86
|
-
test("closes an opened API after failure and allows a fresh subsequent analysis", () => {
|
|
87
|
-
const dir = directory();
|
|
88
|
-
let fail = true;
|
|
89
|
-
const closes = [];
|
|
90
|
-
const analyzer = new NpmFetchAnalyzer((options) => {
|
|
91
|
-
const api = new Ts7Api(options);
|
|
92
|
-
closes.push(vi.spyOn(api, "close"));
|
|
93
|
-
if (fail)
|
|
94
|
-
vi.spyOn(api, "updateSnapshot").mockImplementation(() => {
|
|
95
|
-
throw new Error("snapshot failed");
|
|
96
|
-
});
|
|
97
|
-
return api;
|
|
98
|
-
}, dir);
|
|
99
|
-
try {
|
|
100
|
-
expect(() => analyzer.analyze([module("main.js", "fetch();")])).toThrow("snapshot failed");
|
|
101
|
-
expect(closes[0]).toHaveBeenCalledTimes(1);
|
|
102
|
-
fail = false;
|
|
103
|
-
expect([...analyzer.analyze([module("main.js", "fetch();")])]).toEqual(["main.js"]);
|
|
104
|
-
expect(closes[1]).toHaveBeenCalledTimes(1);
|
|
105
|
-
}
|
|
106
|
-
finally {
|
|
107
|
-
analyzer.close();
|
|
108
|
-
}
|
|
109
|
-
});
|
|
110
|
-
test("relative imports bind local names in mixed ESM and CommonJS graphs", () => {
|
|
111
|
-
const analyzer = new NpmFetchAnalyzer((options) => new Ts7Api(options), directory());
|
|
112
|
-
try {
|
|
113
|
-
expect([
|
|
114
|
-
...analyzer.analyze([
|
|
115
|
-
{ key: "dep.js", source: "export const fetch = () => 1;", format: "esm" },
|
|
116
|
-
{
|
|
117
|
-
key: "importer.mjs",
|
|
118
|
-
source: "import { fetch } from './dep.js'; export const result = fetch();",
|
|
119
|
-
format: "esm",
|
|
120
|
-
},
|
|
121
|
-
module("cjs.cjs", "const {fetch} = require('./dep.js'); fetch();"),
|
|
122
|
-
module("global.js", "fetch();"),
|
|
123
|
-
]),
|
|
124
|
-
]).toEqual(["global.js"]);
|
|
125
|
-
}
|
|
126
|
-
finally {
|
|
127
|
-
analyzer.close();
|
|
128
|
-
}
|
|
129
|
-
});
|
|
130
|
-
//# sourceMappingURL=npm-fetch-analysis.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"npm-fetch-analysis.test.js","sourceRoot":"","sources":["../../src/frontend/npm-fetch-analysis.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { NpmFetchAnalyzer } from "./npm-fetch-analysis.js";
|
|
2
|
-
import { Ts7Api } from "./ts7/rpc-api.js";
|
|
3
|
-
export function embeddedModulesUsingGlobalFetch(modules) {
|
|
4
|
-
const analyzer = new NpmFetchAnalyzer((options) => new Ts7Api(options));
|
|
5
|
-
try {
|
|
6
|
-
return analyzer.analyze(modules);
|
|
7
|
-
}
|
|
8
|
-
finally {
|
|
9
|
-
analyzer.close();
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
//# sourceMappingURL=npm-fetch-node.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"npm-fetch-node.js","sourceRoot":"","sources":["../../src/frontend/npm-fetch-node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAA4B,MAAM,yBAAyB,CAAC;AACrF,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,MAAM,UAAU,+BAA+B,CAC7C,OAAuC;IAEvC,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IACxE,IAAI,CAAC;QACH,OAAO,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;YAAS,CAAC;QACT,QAAQ,CAAC,KAAK,EAAE,CAAC;IACnB,CAAC;AACH,CAAC"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
/** Read global-fetch capabilities from a bound, no-library module graph.
|
|
2
|
-
* Symbol identity keeps parameters, imports and same-named locals distinct
|
|
3
|
-
* from global reads and from aliases captured in another scope. */
|
|
4
|
-
import * as ts from "./ts7/syntax.js";
|
|
5
|
-
import { SemanticChecker } from "./ts7/semantic-checker.js";
|
|
6
|
-
export declare function sourceFilesUsingGlobalFetch(files: readonly ts.SourceFile[], checker: SemanticChecker): Set<string>;
|
|
@@ -1,202 +0,0 @@
|
|
|
1
|
-
/** Read global-fetch capabilities from a bound, no-library module graph.
|
|
2
|
-
* Symbol identity keeps parameters, imports and same-named locals distinct
|
|
3
|
-
* from global reads and from aliases captured in another scope. */
|
|
4
|
-
import * as ts from "./ts7/syntax.js";
|
|
5
|
-
import { SemanticChecker } from "./ts7/semantic-checker.js";
|
|
6
|
-
import { SemanticSymbol } from "./ts7/semantic-model.js";
|
|
7
|
-
export function sourceFilesUsingGlobalFetch(files, checker) {
|
|
8
|
-
const found = new Set();
|
|
9
|
-
const unwrapParentheses = (node) => {
|
|
10
|
-
let current = node;
|
|
11
|
-
while (ts.isParenthesizedExpression(current))
|
|
12
|
-
current = current.expression;
|
|
13
|
-
return current;
|
|
14
|
-
};
|
|
15
|
-
const unboundGlobalObject = (candidate) => {
|
|
16
|
-
const node = unwrapParentheses(candidate);
|
|
17
|
-
if (!ts.isIdentifier(node) || (node.text !== "globalThis" && node.text !== "global")) {
|
|
18
|
-
return false;
|
|
19
|
-
}
|
|
20
|
-
const symbol = checker.getSymbolAtLocation(node);
|
|
21
|
-
// TypeScript synthesizes a declaration-less globalThis symbol even in a
|
|
22
|
-
// no-lib program. A source shadow (parameter/local/import) always carries
|
|
23
|
-
// at least one declaration; the Node `global` alias remains unresolved.
|
|
24
|
-
return (symbol === undefined || symbol.declarations === undefined || symbol.declarations.length === 0);
|
|
25
|
-
};
|
|
26
|
-
const globalObjectExpression = (candidate, aliases) => {
|
|
27
|
-
const node = unwrapParentheses(candidate);
|
|
28
|
-
if (unboundGlobalObject(node))
|
|
29
|
-
return true;
|
|
30
|
-
if (ts.isIdentifier(node)) {
|
|
31
|
-
const symbol = checker.getSymbolAtLocation(node);
|
|
32
|
-
if (symbol === undefined)
|
|
33
|
-
return false;
|
|
34
|
-
if (aliases.has(symbol))
|
|
35
|
-
return true;
|
|
36
|
-
return ((symbol.flags & ts.SymbolFlags.Alias) !== 0 && aliases.has(checker.getAliasedSymbol(symbol)));
|
|
37
|
-
}
|
|
38
|
-
if (ts.isConditionalExpression(node)) {
|
|
39
|
-
return (globalObjectExpression(node.whenTrue, aliases) ||
|
|
40
|
-
globalObjectExpression(node.whenFalse, aliases));
|
|
41
|
-
}
|
|
42
|
-
if (ts.isBinaryExpression(node)) {
|
|
43
|
-
switch (node.operatorToken.kind) {
|
|
44
|
-
case ts.SyntaxKind.BarBarToken:
|
|
45
|
-
case ts.SyntaxKind.QuestionQuestionToken:
|
|
46
|
-
case ts.SyntaxKind.AmpersandAmpersandToken:
|
|
47
|
-
// A platform selector can yield either operand. Treat either
|
|
48
|
-
// global-object arm as capability provenance; over-linking a
|
|
49
|
-
// dead arm is safer than silently omitting fetch at runtime.
|
|
50
|
-
return (globalObjectExpression(node.left, aliases) ||
|
|
51
|
-
globalObjectExpression(node.right, aliases));
|
|
52
|
-
case ts.SyntaxKind.CommaToken:
|
|
53
|
-
return globalObjectExpression(node.right, aliases);
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
return false;
|
|
57
|
-
};
|
|
58
|
-
const staticPropertyName = (name) => {
|
|
59
|
-
if (ts.isIdentifier(name) || ts.isStringLiteralLike(name))
|
|
60
|
-
return name.text;
|
|
61
|
-
if (ts.isComputedPropertyName(name) && ts.isStringLiteralLike(name.expression)) {
|
|
62
|
-
return name.expression.text;
|
|
63
|
-
}
|
|
64
|
-
return null;
|
|
65
|
-
};
|
|
66
|
-
/** `const { fetch } = globalThis` binds a local identifier, so the
|
|
67
|
-
* checker quite correctly resolves every later `fetch` read to that local.
|
|
68
|
-
* The capability read happens at the binding pattern itself. The same is
|
|
69
|
-
* true for aliases, computed literal keys, and defaulted parameters. */
|
|
70
|
-
const bindingReadsGlobalFetch = (node, aliases) => {
|
|
71
|
-
const pattern = node.parent;
|
|
72
|
-
if (!ts.isObjectBindingPattern(pattern))
|
|
73
|
-
return false;
|
|
74
|
-
const key = node.propertyName ?? (ts.isIdentifier(node.name) ? node.name : null);
|
|
75
|
-
if (key === null || staticPropertyName(key) !== "fetch")
|
|
76
|
-
return false;
|
|
77
|
-
const owner = pattern.parent;
|
|
78
|
-
if ((ts.isVariableDeclaration(owner) || ts.isParameter(owner) || ts.isBindingElement(owner)) &&
|
|
79
|
-
owner.name === pattern &&
|
|
80
|
-
owner.initializer !== undefined) {
|
|
81
|
-
return globalObjectExpression(owner.initializer, aliases);
|
|
82
|
-
}
|
|
83
|
-
return false;
|
|
84
|
-
};
|
|
85
|
-
/** Assignment destructuring is represented as an object-literal-shaped
|
|
86
|
-
* assignment target rather than an ObjectBindingPattern. */
|
|
87
|
-
const assignmentReadsGlobalFetch = (node, aliases) => {
|
|
88
|
-
if (node.operatorToken.kind !== ts.SyntaxKind.EqualsToken ||
|
|
89
|
-
!globalObjectExpression(node.right, aliases)) {
|
|
90
|
-
return false;
|
|
91
|
-
}
|
|
92
|
-
const target = unwrapParentheses(node.left);
|
|
93
|
-
if (!ts.isObjectLiteralExpression(target))
|
|
94
|
-
return false;
|
|
95
|
-
return target.properties.some((property) => {
|
|
96
|
-
if (ts.isShorthandPropertyAssignment(property))
|
|
97
|
-
return property.name.text === "fetch";
|
|
98
|
-
return ts.isPropertyAssignment(property) && staticPropertyName(property.name) === "fetch";
|
|
99
|
-
});
|
|
100
|
-
};
|
|
101
|
-
const bareIdentifierRead = (node) => {
|
|
102
|
-
const parent = node.parent;
|
|
103
|
-
// Binding-element names and aliases are declarations/property keys; the
|
|
104
|
-
// global-object destructuring case is handled explicitly above.
|
|
105
|
-
if (ts.isBindingElement(parent) && (parent.name === node || parent.propertyName === node))
|
|
106
|
-
return false;
|
|
107
|
-
if ((ts.isLabeledStatement(parent) ||
|
|
108
|
-
ts.isBreakStatement(parent) ||
|
|
109
|
-
ts.isContinueStatement(parent)) &&
|
|
110
|
-
parent.label === node) {
|
|
111
|
-
return false;
|
|
112
|
-
}
|
|
113
|
-
if (ts.isQualifiedName(parent) && parent.right === node)
|
|
114
|
-
return false;
|
|
115
|
-
// Imported/exported names are module member names or declarations,
|
|
116
|
-
// never reads of Node's global binding. This matters when the custom
|
|
117
|
-
// no-lib program cannot resolve the referenced package and therefore
|
|
118
|
-
// has no checker symbol for an ImportSpecifier.propertyName.
|
|
119
|
-
if (ts.isImportSpecifier(parent) || ts.isExportSpecifier(parent))
|
|
120
|
-
return false;
|
|
121
|
-
// Named declarations and object/class property names are not reads.
|
|
122
|
-
// A shorthand property is the exception: `{ fetch }` evaluates the
|
|
123
|
-
// identifier and therefore needs the global when it is unbound.
|
|
124
|
-
if (parent?.name === node && !ts.isShorthandPropertyAssignment(parent))
|
|
125
|
-
return false;
|
|
126
|
-
return true;
|
|
127
|
-
};
|
|
128
|
-
const bareIdentifierIsUnbound = (node) => {
|
|
129
|
-
const parent = node.parent;
|
|
130
|
-
// The binder gives `{ fetch }` a symbol for the PROPERTY it creates;
|
|
131
|
-
// the value-side symbol is the one that answers whether the shorthand
|
|
132
|
-
// reads a local binding or Node's global.
|
|
133
|
-
if (ts.isShorthandPropertyAssignment(parent) && parent.name === node) {
|
|
134
|
-
return checker.getShorthandAssignmentValueSymbol(parent) === undefined;
|
|
135
|
-
}
|
|
136
|
-
return checker.getSymbolAtLocation(node) === undefined;
|
|
137
|
-
};
|
|
138
|
-
for (const sourceFile of files) {
|
|
139
|
-
// Package bootstraps commonly snapshot or select the global object before
|
|
140
|
-
// reading capabilities (`const root = globalThis || global; root.fetch`).
|
|
141
|
-
// Resolve alias chains by symbol, so a same-named parameter/local in
|
|
142
|
-
// another scope cannot inherit the classification. Mutable declarations
|
|
143
|
-
// are conservative: a global initializer means some executable path can
|
|
144
|
-
// retain that value. Iterate to a fixed point so declaration order does
|
|
145
|
-
// not matter.
|
|
146
|
-
const globalObjectAliases = new Set();
|
|
147
|
-
let addedAlias = true;
|
|
148
|
-
while (addedAlias) {
|
|
149
|
-
addedAlias = false;
|
|
150
|
-
const collectAliases = (node) => {
|
|
151
|
-
if (ts.isVariableDeclaration(node) &&
|
|
152
|
-
ts.isIdentifier(node.name) &&
|
|
153
|
-
node.initializer !== undefined &&
|
|
154
|
-
globalObjectExpression(node.initializer, globalObjectAliases)) {
|
|
155
|
-
const symbol = checker.getSymbolAtLocation(node.name);
|
|
156
|
-
if (symbol !== undefined && !globalObjectAliases.has(symbol)) {
|
|
157
|
-
globalObjectAliases.add(symbol);
|
|
158
|
-
addedAlias = true;
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
};
|
|
162
|
-
ts.walkPreorder(sourceFile, collectAliases);
|
|
163
|
-
}
|
|
164
|
-
let usesFetch = false;
|
|
165
|
-
const visit = (node) => {
|
|
166
|
-
if (usesFetch)
|
|
167
|
-
return;
|
|
168
|
-
if ((ts.isBindingElement(node) && bindingReadsGlobalFetch(node, globalObjectAliases)) ||
|
|
169
|
-
(ts.isBinaryExpression(node) && assignmentReadsGlobalFetch(node, globalObjectAliases))) {
|
|
170
|
-
usesFetch = true;
|
|
171
|
-
return;
|
|
172
|
-
}
|
|
173
|
-
if (ts.isPropertyAccessExpression(node) &&
|
|
174
|
-
node.name.text === "fetch" &&
|
|
175
|
-
globalObjectExpression(node.expression, globalObjectAliases)) {
|
|
176
|
-
usesFetch = true;
|
|
177
|
-
return;
|
|
178
|
-
}
|
|
179
|
-
if (ts.isElementAccessExpression(node) &&
|
|
180
|
-
ts.isStringLiteralLike(node.argumentExpression) &&
|
|
181
|
-
node.argumentExpression.text === "fetch" &&
|
|
182
|
-
globalObjectExpression(node.expression, globalObjectAliases)) {
|
|
183
|
-
usesFetch = true;
|
|
184
|
-
return;
|
|
185
|
-
}
|
|
186
|
-
if (ts.isIdentifier(node) && node.text === "fetch") {
|
|
187
|
-
// Every real bare read has no symbol in this no-lib program unless
|
|
188
|
-
// source syntax binds it. Syntactic names without symbols (labels,
|
|
189
|
-
// destructuring keys) are filtered separately.
|
|
190
|
-
if (bareIdentifierRead(node) && bareIdentifierIsUnbound(node)) {
|
|
191
|
-
usesFetch = true;
|
|
192
|
-
return;
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
};
|
|
196
|
-
ts.walkPreorder(sourceFile, visit);
|
|
197
|
-
if (usesFetch)
|
|
198
|
-
found.add(sourceFile.fileName);
|
|
199
|
-
}
|
|
200
|
-
return found;
|
|
201
|
-
}
|
|
202
|
-
//# sourceMappingURL=npm-fetch-syntax.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"npm-fetch-syntax.js","sourceRoot":"","sources":["../../src/frontend/npm-fetch-syntax.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
/** Both compiler hosts use the pinned native TypeScript emitter. Package
|
|
2
|
-
* configuration, dependency resolution and execution remain outside this
|
|
3
|
-
* isolated emit; the runtime graph resolves the emitted literal imports. */
|
|
4
|
-
export declare function emitRuntimeTypeScript(executable: string, path: string, source: string, format: "esm" | "cjs"): string;
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import { spawnSync } from "node:child_process";
|
|
2
|
-
import { mkdirSync, mkdtempSync, readFileSync, rmSync, writeFileSync } from "node:fs";
|
|
3
|
-
import { tmpdir } from "node:os";
|
|
4
|
-
import { join } from "node:path";
|
|
5
|
-
/** Both compiler hosts use the pinned native TypeScript emitter. Package
|
|
6
|
-
* configuration, dependency resolution and execution remain outside this
|
|
7
|
-
* isolated emit; the runtime graph resolves the emitted literal imports. */
|
|
8
|
-
export function emitRuntimeTypeScript(executable, path, source, format) {
|
|
9
|
-
if (/\.d\.[cm]?ts$/.test(path))
|
|
10
|
-
throw new Error("declaration files cannot be embedded as runtime modules");
|
|
11
|
-
if (path.endsWith(".tsx"))
|
|
12
|
-
throw new Error("TSX runtime modules are not supported");
|
|
13
|
-
const stage = mkdtempSync(join(tmpdir(), "scriptc-typescript-"));
|
|
14
|
-
// Explicit suffixes retain the graph's module format independently of
|
|
15
|
-
// the temporary directory's package scope. NodeNext also preserves
|
|
16
|
-
// dynamic import() in CommonJS instead of changing its export condition.
|
|
17
|
-
const input = format === "esm" ? "module.mts" : "module.cts";
|
|
18
|
-
const output = join(stage, "output");
|
|
19
|
-
try {
|
|
20
|
-
mkdirSync(output);
|
|
21
|
-
writeFileSync(join(stage, input), source);
|
|
22
|
-
const config = join(stage, "tsconfig.json");
|
|
23
|
-
writeFileSync(config, JSON.stringify({
|
|
24
|
-
compilerOptions: {
|
|
25
|
-
target: "esnext",
|
|
26
|
-
module: "nodenext",
|
|
27
|
-
moduleDetection: "legacy",
|
|
28
|
-
noCheck: true,
|
|
29
|
-
noResolve: true,
|
|
30
|
-
types: [],
|
|
31
|
-
isolatedModules: true,
|
|
32
|
-
verbatimModuleSyntax: format === "esm",
|
|
33
|
-
noEmitOnError: true,
|
|
34
|
-
outDir: output,
|
|
35
|
-
},
|
|
36
|
-
files: [input],
|
|
37
|
-
include: [],
|
|
38
|
-
}));
|
|
39
|
-
// Read the result directly: native subprocess exceptions intentionally
|
|
40
|
-
// do not carry stdout, while spawnSync provides it in both hosts.
|
|
41
|
-
const result = spawnSync(executable, ["--project", config, "--pretty", "false"], {
|
|
42
|
-
encoding: "utf8",
|
|
43
|
-
stdio: "pipe",
|
|
44
|
-
});
|
|
45
|
-
if (result.error || result.status !== 0 || result.signal !== null) {
|
|
46
|
-
const diagnostic = (result.stdout ?? "").trim();
|
|
47
|
-
// Diagnostic paths may be absolute or relative to the caller's cwd.
|
|
48
|
-
// Replace each source-location prefix without interpreting the path
|
|
49
|
-
// as a replacement template (package names can contain '$').
|
|
50
|
-
const attributed = diagnostic
|
|
51
|
-
.split(/\r?\n/)
|
|
52
|
-
.map((line) => {
|
|
53
|
-
const at = line.indexOf(input + "(");
|
|
54
|
-
return at < 0 ? line : path + line.slice(at + input.length);
|
|
55
|
-
})
|
|
56
|
-
.join("\n");
|
|
57
|
-
throw new Error(diagnostic === ""
|
|
58
|
-
? "TypeScript emission failed"
|
|
59
|
-
: attributed
|
|
60
|
-
.replaceAll(stage, "<emit>")
|
|
61
|
-
.replaceAll(stage.replaceAll("\\", "/"), "<emit>"));
|
|
62
|
-
}
|
|
63
|
-
try {
|
|
64
|
-
return readFileSync(join(output, format === "esm" ? "module.mjs" : "module.cjs"), "utf8");
|
|
65
|
-
}
|
|
66
|
-
catch {
|
|
67
|
-
throw new Error("TypeScript emitter produced no JavaScript");
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
finally {
|
|
71
|
-
rmSync(stage, { recursive: true, force: true });
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
//# sourceMappingURL=runtime-typescript.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-typescript.js","sourceRoot":"","sources":["../../src/native/runtime-typescript.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { execFileSync } from "node:child_process";
|
|
2
|
-
import { expect, test } from "vitest";
|
|
3
|
-
import { ts7Executable } from "../frontend/ts7/rpc-api.js";
|
|
4
|
-
import { emitRuntimeTypeScript } from "./runtime-typescript.js";
|
|
5
|
-
test("package emission handles enums, parameter properties, assertions and generic functions", () => {
|
|
6
|
-
const emitted = emitRuntimeTypeScript(ts7Executable(), "/package/index.ts", `
|
|
7
|
-
enum Kind { First = 7 }
|
|
8
|
-
class Box { constructor(public value: number) {} }
|
|
9
|
-
function identity<T>(value: T): T { return value; }
|
|
10
|
-
export const result: number = identity(new Box(Kind.First).value as number);
|
|
11
|
-
`, "cjs");
|
|
12
|
-
const exports = {};
|
|
13
|
-
new Function("exports", emitted)(exports);
|
|
14
|
-
expect(exports["result"]).toBe(7);
|
|
15
|
-
});
|
|
16
|
-
test("CommonJS emission retains dynamic import conditions and emits import-equals requires", () => {
|
|
17
|
-
const emitted = emitRuntimeTypeScript(ts7Executable(), "/package/index.cts", `
|
|
18
|
-
import value = require("./value.cts");
|
|
19
|
-
export const later = () => import("dual");
|
|
20
|
-
export const result: number = value.result;
|
|
21
|
-
`, "cjs");
|
|
22
|
-
expect(emitted).toContain('require("./value.cts")');
|
|
23
|
-
expect(emitted).toContain('import("dual")');
|
|
24
|
-
expect(emitted).not.toContain('require("dual")');
|
|
25
|
-
});
|
|
26
|
-
test("ESM emission preserves unused value imports and removes explicitly type-only dependencies", () => {
|
|
27
|
-
const emitted = emitRuntimeTypeScript(ts7Executable(), "/package/index.mts", `
|
|
28
|
-
import type { Missing } from "missing-types";
|
|
29
|
-
import { type Other, unused } from "./value.ts";
|
|
30
|
-
export type { Missing } from "missing-types";
|
|
31
|
-
export const result: number = 42;
|
|
32
|
-
`, "esm");
|
|
33
|
-
expect(emitted).toContain("unused");
|
|
34
|
-
expect(emitted).toContain("./value.ts");
|
|
35
|
-
expect(emitted).not.toContain("missing-types");
|
|
36
|
-
execFileSync(process.execPath, ["--check", "--input-type=module"], { input: emitted });
|
|
37
|
-
});
|
|
38
|
-
test("syntax diagnostics retain the original module path, including dollar signs", () => {
|
|
39
|
-
expect(() => emitRuntimeTypeScript(ts7Executable(), "/package/$module.mts", "export function broken(: number) {}", "esm")).toThrow("/package/$module.mts(");
|
|
40
|
-
});
|
|
41
|
-
//# sourceMappingURL=runtime-typescript.test.js.map
|