@geastack/compiler 1.0.15
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/LICENSE +202 -0
- package/README.md +149 -0
- package/dist/cli-analyze.d.ts +1 -0
- package/dist/cli-analyze.js +61 -0
- package/dist/cli-coverage.d.ts +1 -0
- package/dist/cli-coverage.js +329 -0
- package/dist/cli-emit.d.ts +10 -0
- package/dist/cli-emit.js +398 -0
- package/dist/cli-module-graph.d.ts +18 -0
- package/dist/cli-module-graph.js +123 -0
- package/dist/cli-package-source.d.ts +5 -0
- package/dist/cli-package-source.js +116 -0
- package/dist/cli-project.d.ts +2 -0
- package/dist/cli-project.js +60 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +199 -0
- package/dist/compiler.d.ts +228 -0
- package/dist/compiler.js +1029 -0
- package/dist/conversion/algebra.d.ts +218 -0
- package/dist/conversion/algebra.js +155 -0
- package/dist/conversion/build.d.ts +67 -0
- package/dist/conversion/build.js +1378 -0
- package/dist/conversion/derive.d.ts +37 -0
- package/dist/conversion/derive.js +260 -0
- package/dist/conversion/graph-validation.d.ts +8 -0
- package/dist/conversion/graph-validation.js +97 -0
- package/dist/conversion/native-callable-adapter.d.ts +13 -0
- package/dist/conversion/native-callable-adapter.js +53 -0
- package/dist/conversion/native-class-reference.d.ts +12 -0
- package/dist/conversion/native-class-reference.js +39 -0
- package/dist/conversion/native-payload-transport.d.ts +25 -0
- package/dist/conversion/native-payload-transport.js +33 -0
- package/dist/conversion/native-selection.d.ts +49 -0
- package/dist/conversion/native-selection.js +135 -0
- package/dist/conversion/native-sum.d.ts +42 -0
- package/dist/conversion/native-sum.js +115 -0
- package/dist/conversion/nodes.d.ts +55 -0
- package/dist/conversion/nodes.js +91 -0
- package/dist/conversion/operand-view.d.ts +14 -0
- package/dist/conversion/operand-view.js +20 -0
- package/dist/conversion/record-view.d.ts +157 -0
- package/dist/conversion/record-view.js +273 -0
- package/dist/conversion/registry.d.ts +217 -0
- package/dist/conversion/registry.js +1 -0
- package/dist/diagnostics/model.d.ts +76 -0
- package/dist/diagnostics/model.js +60 -0
- package/dist/diagnostics/sweep.d.ts +31 -0
- package/dist/diagnostics/sweep.js +112 -0
- package/dist/identity/ids.d.ts +179 -0
- package/dist/identity/ids.js +212 -0
- package/dist/ir/absent-class-arm.d.ts +48 -0
- package/dist/ir/absent-class-arm.js +157 -0
- package/dist/ir/borrow-effects.d.ts +23 -0
- package/dist/ir/borrow-effects.js +151 -0
- package/dist/ir/borrowed-call-arguments.d.ts +40 -0
- package/dist/ir/borrowed-call-arguments.js +117 -0
- package/dist/ir/build.d.ts +168 -0
- package/dist/ir/build.js +459 -0
- package/dist/ir/call-dispatch.d.ts +38 -0
- package/dist/ir/call-dispatch.js +502 -0
- package/dist/ir/call-entry.d.ts +142 -0
- package/dist/ir/call-entry.js +386 -0
- package/dist/ir/callable-class-flow.d.ts +27 -0
- package/dist/ir/callable-class-flow.js +1386 -0
- package/dist/ir/callable-field-slots.d.ts +22 -0
- package/dist/ir/callable-field-slots.js +166 -0
- package/dist/ir/callable-identity-demand.d.ts +52 -0
- package/dist/ir/callable-identity-demand.js +460 -0
- package/dist/ir/callable-member-candidates.d.ts +9 -0
- package/dist/ir/callable-member-candidates.js +39 -0
- package/dist/ir/callable-records.d.ts +21 -0
- package/dist/ir/callable-records.js +411 -0
- package/dist/ir/captures.d.ts +26 -0
- package/dist/ir/captures.js +335 -0
- package/dist/ir/certificate.d.ts +45 -0
- package/dist/ir/certificate.js +47 -0
- package/dist/ir/certify/carrier-keys.d.ts +73 -0
- package/dist/ir/certify/carrier-keys.js +221 -0
- package/dist/ir/certify/function-source.d.ts +4 -0
- package/dist/ir/certify/function-source.js +28 -0
- package/dist/ir/certify/has-property-key.d.ts +88 -0
- package/dist/ir/certify/has-property-key.js +116 -0
- package/dist/ir/certify/instanceof-key.d.ts +24 -0
- package/dist/ir/certify/instanceof-key.js +35 -0
- package/dist/ir/certify/property-access-keys.d.ts +172 -0
- package/dist/ir/certify/property-access-keys.js +291 -0
- package/dist/ir/certify/property-access.d.ts +3 -0
- package/dist/ir/certify/property-access.js +597 -0
- package/dist/ir/certify/runtime-helper.d.ts +3 -0
- package/dist/ir/certify/runtime-helper.js +326 -0
- package/dist/ir/certify/typeof-operand.d.ts +14 -0
- package/dist/ir/certify/typeof-operand.js +16 -0
- package/dist/ir/certify.d.ts +123 -0
- package/dist/ir/certify.js +481 -0
- package/dist/ir/class-evaluation.d.ts +26 -0
- package/dist/ir/class-evaluation.js +50 -0
- package/dist/ir/class-static-fields.d.ts +60 -0
- package/dist/ir/class-static-fields.js +108 -0
- package/dist/ir/construct-entry.d.ts +26 -0
- package/dist/ir/construct-entry.js +117 -0
- package/dist/ir/dead-values.d.ts +90 -0
- package/dist/ir/dead-values.js +184 -0
- package/dist/ir/deferral.d.ts +99 -0
- package/dist/ir/deferral.js +409 -0
- package/dist/ir/dense-loops.d.ts +230 -0
- package/dist/ir/dense-loops.js +697 -0
- package/dist/ir/dominance.d.ts +82 -0
- package/dist/ir/dominance.js +268 -0
- package/dist/ir/emission-representations.d.ts +71 -0
- package/dist/ir/emission-representations.js +350 -0
- package/dist/ir/facts.d.ts +218 -0
- package/dist/ir/facts.js +181 -0
- package/dist/ir/fixed-data-definition.d.ts +19 -0
- package/dist/ir/fixed-data-definition.js +49 -0
- package/dist/ir/generator-split.d.ts +38 -0
- package/dist/ir/generator-split.js +329 -0
- package/dist/ir/hoist.d.ts +55 -0
- package/dist/ir/hoist.js +375 -0
- package/dist/ir/instantiation.d.ts +61 -0
- package/dist/ir/instantiation.js +137 -0
- package/dist/ir/integer-storage.d.ts +170 -0
- package/dist/ir/integer-storage.js +822 -0
- package/dist/ir/integers.d.ts +161 -0
- package/dist/ir/integers.js +539 -0
- package/dist/ir/integrity-restrictions.d.ts +50 -0
- package/dist/ir/integrity-restrictions.js +118 -0
- package/dist/ir/local-iterators.d.ts +4 -0
- package/dist/ir/local-iterators.js +27 -0
- package/dist/ir/lower-allocation.d.ts +4 -0
- package/dist/ir/lower-allocation.js +325 -0
- package/dist/ir/lower-completion.d.ts +15 -0
- package/dist/ir/lower-completion.js +25 -0
- package/dist/ir/lower-destructuring.d.ts +5 -0
- package/dist/ir/lower-destructuring.js +693 -0
- package/dist/ir/lower-element.d.ts +29 -0
- package/dist/ir/lower-element.js +111 -0
- package/dist/ir/lower-exceptions.d.ts +47 -0
- package/dist/ir/lower-exceptions.js +92 -0
- package/dist/ir/lower-flow.d.ts +137 -0
- package/dist/ir/lower-flow.js +600 -0
- package/dist/ir/lower-graph.d.ts +218 -0
- package/dist/ir/lower-graph.js +687 -0
- package/dist/ir/lower-invocation.d.ts +4 -0
- package/dist/ir/lower-invocation.js +514 -0
- package/dist/ir/lower-narrow.d.ts +53 -0
- package/dist/ir/lower-narrow.js +320 -0
- package/dist/ir/lower-operands.d.ts +272 -0
- package/dist/ir/lower-operands.js +461 -0
- package/dist/ir/lower-property.d.ts +21 -0
- package/dist/ir/lower-property.js +132 -0
- package/dist/ir/lower-protocol.d.ts +11 -0
- package/dist/ir/lower-protocol.js +118 -0
- package/dist/ir/lower-short-circuit.d.ts +41 -0
- package/dist/ir/lower-short-circuit.js +63 -0
- package/dist/ir/lower.d.ts +82 -0
- package/dist/ir/lower.js +1346 -0
- package/dist/ir/model.d.ts +1474 -0
- package/dist/ir/model.js +6 -0
- package/dist/ir/native-absent-property.d.ts +3 -0
- package/dist/ir/native-absent-property.js +13 -0
- package/dist/ir/native-array-transport.d.ts +7 -0
- package/dist/ir/native-array-transport.js +46 -0
- package/dist/ir/native-callable-bind.d.ts +9 -0
- package/dist/ir/native-callable-bind.js +30 -0
- package/dist/ir/native-carrier-predicate.d.ts +34 -0
- package/dist/ir/native-carrier-predicate.js +49 -0
- package/dist/ir/native-class-accessor.d.ts +18 -0
- package/dist/ir/native-class-accessor.js +52 -0
- package/dist/ir/native-class-construction.d.ts +16 -0
- package/dist/ir/native-class-construction.js +71 -0
- package/dist/ir/native-class-initialization.d.ts +15 -0
- package/dist/ir/native-class-initialization.js +56 -0
- package/dist/ir/native-class-origins.d.ts +13 -0
- package/dist/ir/native-class-origins.js +237 -0
- package/dist/ir/native-dictionary-transport.d.ts +6 -0
- package/dist/ir/native-dictionary-transport.js +37 -0
- package/dist/ir/native-enumeration.d.ts +14 -0
- package/dist/ir/native-enumeration.js +26 -0
- package/dist/ir/native-equality.d.ts +10 -0
- package/dist/ir/native-equality.js +18 -0
- package/dist/ir/native-field-owner.d.ts +37 -0
- package/dist/ir/native-field-owner.js +183 -0
- package/dist/ir/native-fixed-layout.d.ts +41 -0
- package/dist/ir/native-fixed-layout.js +232 -0
- package/dist/ir/native-host-construction.d.ts +53 -0
- package/dist/ir/native-host-construction.js +62 -0
- package/dist/ir/native-key-query.d.ts +4 -0
- package/dist/ir/native-key-query.js +38 -0
- package/dist/ir/native-merge-transport.d.ts +25 -0
- package/dist/ir/native-merge-transport.js +71 -0
- package/dist/ir/native-record-index-transport.d.ts +11 -0
- package/dist/ir/native-record-index-transport.js +34 -0
- package/dist/ir/native-record-index.d.ts +12 -0
- package/dist/ir/native-record-index.js +27 -0
- package/dist/ir/native-reflect-field.d.ts +5 -0
- package/dist/ir/native-reflect-field.js +33 -0
- package/dist/ir/native-sequence-transport.d.ts +7 -0
- package/dist/ir/native-sequence-transport.js +53 -0
- package/dist/ir/numeric-intrinsics.d.ts +13 -0
- package/dist/ir/numeric-intrinsics.js +57 -0
- package/dist/ir/object-value-conversions.d.ts +20 -0
- package/dist/ir/object-value-conversions.js +50 -0
- package/dist/ir/physical-class-reflection.d.ts +9 -0
- package/dist/ir/physical-class-reflection.js +57 -0
- package/dist/ir/presence-proof.d.ts +42 -0
- package/dist/ir/presence-proof.js +490 -0
- package/dist/ir/program-facts.d.ts +106 -0
- package/dist/ir/program-facts.js +319 -0
- package/dist/ir/proven-branches.d.ts +16 -0
- package/dist/ir/proven-branches.js +219 -0
- package/dist/ir/queries.d.ts +41 -0
- package/dist/ir/queries.js +213 -0
- package/dist/ir/reflection-demand.d.ts +64 -0
- package/dist/ir/reflection-demand.js +1394 -0
- package/dist/ir/refusal.d.ts +43 -0
- package/dist/ir/refusal.js +28 -0
- package/dist/ir/shake.d.ts +37 -0
- package/dist/ir/shake.js +1078 -0
- package/dist/ir/static-callables.d.ts +11 -0
- package/dist/ir/static-callables.js +163 -0
- package/dist/ir/string-layout-reuse.d.ts +13 -0
- package/dist/ir/string-layout-reuse.js +39 -0
- package/dist/ir/string-length-reuse.d.ts +8 -0
- package/dist/ir/string-length-reuse.js +47 -0
- package/dist/ir/transfer.d.ts +78 -0
- package/dist/ir/transfer.js +270 -0
- package/dist/ir/type-query-results.d.ts +25 -0
- package/dist/ir/type-query-results.js +96 -0
- package/dist/ir/typed-property-access.d.ts +100 -0
- package/dist/ir/typed-property-access.js +161 -0
- package/dist/ir/verify.d.ts +19 -0
- package/dist/ir/verify.js +355 -0
- package/dist/plugins/apple/constructors.d.ts +112 -0
- package/dist/plugins/apple/constructors.js +217 -0
- package/dist/plugins/apple/host.d.ts +181 -0
- package/dist/plugins/apple/host.js +262 -0
- package/dist/plugins/apple/jsx.d.ts +2 -0
- package/dist/plugins/apple/jsx.js +293 -0
- package/dist/plugins/apple/members.d.ts +16 -0
- package/dist/plugins/apple/members.js +190 -0
- package/dist/plugins/apple/plugin.d.ts +2 -0
- package/dist/plugins/apple/plugin.js +156 -0
- package/dist/plugins/gea/component-classes.d.ts +25 -0
- package/dist/plugins/gea/component-classes.js +162 -0
- package/dist/plugins/gea/component-inline.d.ts +13 -0
- package/dist/plugins/gea/component-inline.js +532 -0
- package/dist/plugins/gea/constructors.d.ts +23 -0
- package/dist/plugins/gea/constructors.js +100 -0
- package/dist/plugins/gea/contract.d.ts +150 -0
- package/dist/plugins/gea/contract.js +195 -0
- package/dist/plugins/gea/element-ref.d.ts +31 -0
- package/dist/plugins/gea/element-ref.js +45 -0
- package/dist/plugins/gea/host.d.ts +520 -0
- package/dist/plugins/gea/host.js +762 -0
- package/dist/plugins/gea/lower.d.ts +6 -0
- package/dist/plugins/gea/lower.js +195 -0
- package/dist/plugins/gea/members.d.ts +22 -0
- package/dist/plugins/gea/members.js +221 -0
- package/dist/plugins/gea/plugin.d.ts +22 -0
- package/dist/plugins/gea/plugin.js +307 -0
- package/dist/plugins/gea/prelude.d.ts +78 -0
- package/dist/plugins/gea/prelude.js +153 -0
- package/dist/plugins/gea/producer.d.ts +5 -0
- package/dist/plugins/gea/producer.js +52 -0
- package/dist/plugins/gea/reactive-slots.d.ts +49 -0
- package/dist/plugins/gea/reactive-slots.js +578 -0
- package/dist/plugins/gea/render-bridge.d.ts +6 -0
- package/dist/plugins/gea/render-bridge.js +281 -0
- package/dist/plugins/gea/slots.d.ts +15 -0
- package/dist/plugins/gea/slots.js +36 -0
- package/dist/plugins/gea/template-analysis.d.ts +151 -0
- package/dist/plugins/gea/template-analysis.js +346 -0
- package/dist/plugins/gea/user-agent-styles.d.ts +9 -0
- package/dist/plugins/gea/user-agent-styles.js +94 -0
- package/dist/plugins/installed.d.ts +19 -0
- package/dist/plugins/installed.js +21 -0
- package/dist/plugins/load.d.ts +7 -0
- package/dist/plugins/load.js +207 -0
- package/dist/plugins/model.d.ts +735 -0
- package/dist/plugins/model.js +47 -0
- package/dist/plugins/webgl/host.d.ts +77 -0
- package/dist/plugins/webgl/host.js +162 -0
- package/dist/plugins/webgl/plugin.d.ts +40 -0
- package/dist/plugins/webgl/plugin.js +99 -0
- package/dist/preflight/obligations.d.ts +206 -0
- package/dist/preflight/obligations.js +36 -0
- package/dist/preflight/report.d.ts +20 -0
- package/dist/preflight/report.js +61 -0
- package/dist/preflight/run.d.ts +39 -0
- package/dist/preflight/run.js +403 -0
- package/dist/project-preparation.d.ts +33 -0
- package/dist/project-preparation.js +314 -0
- package/dist/projection/abi.d.ts +82 -0
- package/dist/projection/abi.js +349 -0
- package/dist/projection/apply-arguments.d.ts +12 -0
- package/dist/projection/apply-arguments.js +20 -0
- package/dist/projection/bindings.d.ts +250 -0
- package/dist/projection/bindings.js +340 -0
- package/dist/projection/callee.d.ts +196 -0
- package/dist/projection/callee.js +444 -0
- package/dist/projection/class-property-presence.d.ts +28 -0
- package/dist/projection/class-property-presence.js +58 -0
- package/dist/projection/class-prototype.d.ts +5 -0
- package/dist/projection/class-prototype.js +23 -0
- package/dist/projection/class-storage.d.ts +26 -0
- package/dist/projection/class-storage.js +236 -0
- package/dist/projection/classes.d.ts +283 -0
- package/dist/projection/classes.js +944 -0
- package/dist/projection/coercions.d.ts +20 -0
- package/dist/projection/coercions.js +33 -0
- package/dist/projection/dispatch.d.ts +167 -0
- package/dist/projection/dispatch.js +379 -0
- package/dist/projection/fields.d.ts +123 -0
- package/dist/projection/fields.js +383 -0
- package/dist/projection/instance-test.d.ts +78 -0
- package/dist/projection/instance-test.js +156 -0
- package/dist/projection/slots.d.ts +146 -0
- package/dist/projection/slots.js +663 -0
- package/dist/projection/synthesized-abi.d.ts +61 -0
- package/dist/projection/synthesized-abi.js +94 -0
- package/dist/representation/array-index.d.ts +14 -0
- package/dist/representation/array-index.js +17 -0
- package/dist/representation/callable-object.d.ts +3 -0
- package/dist/representation/callable-object.js +6 -0
- package/dist/representation/collections.d.ts +84 -0
- package/dist/representation/collections.js +139 -0
- package/dist/representation/derive.d.ts +159 -0
- package/dist/representation/derive.js +2546 -0
- package/dist/representation/difference.d.ts +30 -0
- package/dist/representation/difference.js +240 -0
- package/dist/representation/field-descriptor-policy.d.ts +19 -0
- package/dist/representation/field-descriptor-policy.js +39 -0
- package/dist/representation/function-constructor.d.ts +13 -0
- package/dist/representation/function-constructor.js +9 -0
- package/dist/representation/host-abi.d.ts +32 -0
- package/dist/representation/host-abi.js +97 -0
- package/dist/representation/host-templates.d.ts +67 -0
- package/dist/representation/host-templates.js +94 -0
- package/dist/representation/intersection.d.ts +84 -0
- package/dist/representation/intersection.js +149 -0
- package/dist/representation/literal-destination.d.ts +43 -0
- package/dist/representation/literal-destination.js +133 -0
- package/dist/representation/merge.d.ts +18 -0
- package/dist/representation/merge.js +83 -0
- package/dist/representation/model.d.ts +1160 -0
- package/dist/representation/model.js +1019 -0
- package/dist/representation/numeric-index.d.ts +13 -0
- package/dist/representation/numeric-index.js +29 -0
- package/dist/representation/object-shape.d.ts +109 -0
- package/dist/representation/object-shape.js +123 -0
- package/dist/representation/optional.d.ts +12 -0
- package/dist/representation/optional.js +87 -0
- package/dist/representation/plan.d.ts +60 -0
- package/dist/representation/plan.js +78 -0
- package/dist/representation/policies.d.ts +589 -0
- package/dist/representation/policies.js +107 -0
- package/dist/representation/primitive-domain.d.ts +1 -0
- package/dist/representation/primitive-domain.js +1 -0
- package/dist/representation/primitives.d.ts +44 -0
- package/dist/representation/primitives.js +78 -0
- package/dist/representation/publish.d.ts +49 -0
- package/dist/representation/publish.js +648 -0
- package/dist/representation/record-fields.d.ts +96 -0
- package/dist/representation/record-fields.js +116 -0
- package/dist/representation/template-object.d.ts +11 -0
- package/dist/representation/template-object.js +26 -0
- package/dist/representation/union.d.ts +30 -0
- package/dist/representation/union.js +324 -0
- package/dist/representation/value-records.d.ts +3 -0
- package/dist/representation/value-records.js +307 -0
- package/dist/representation/verify.d.ts +17 -0
- package/dist/representation/verify.js +221 -0
- package/dist/semantics/alias-this-field-declaration-transform.d.ts +4 -0
- package/dist/semantics/alias-this-field-declaration-transform.js +207 -0
- package/dist/semantics/ambient-type-realization-transform.d.ts +62 -0
- package/dist/semantics/ambient-type-realization-transform.js +168 -0
- package/dist/semantics/ambient.d.ts +24 -0
- package/dist/semantics/ambient.js +119 -0
- package/dist/semantics/borrowed-builtin-call-bind-source-transform.d.ts +4 -0
- package/dist/semantics/borrowed-builtin-call-bind-source-transform.js +341 -0
- package/dist/semantics/callable-origins.d.ts +46 -0
- package/dist/semantics/callable-origins.js +354 -0
- package/dist/semantics/class-alias.d.ts +7 -0
- package/dist/semantics/class-alias.js +37 -0
- package/dist/semantics/class-heritage.d.ts +34 -0
- package/dist/semantics/class-heritage.js +104 -0
- package/dist/semantics/commonjs-wrapper.d.ts +69 -0
- package/dist/semantics/commonjs-wrapper.js +231 -0
- package/dist/semantics/constructor-slot-subclasses.d.ts +28 -0
- package/dist/semantics/constructor-slot-subclasses.js +112 -0
- package/dist/semantics/declaration-overlay-transform.d.ts +35 -0
- package/dist/semantics/declaration-overlay-transform.js +2157 -0
- package/dist/semantics/define-property-source-transform.d.ts +4 -0
- package/dist/semantics/define-property-source-transform.js +437 -0
- package/dist/semantics/diagnostic-source-preparation.d.ts +24 -0
- package/dist/semantics/diagnostic-source-preparation.js +82 -0
- package/dist/semantics/documentation-ranges.d.ts +22 -0
- package/dist/semantics/documentation-ranges.js +36 -0
- package/dist/semantics/dynamic-fallback.d.ts +86 -0
- package/dist/semantics/dynamic-fallback.js +249 -0
- package/dist/semantics/frontend-timing.d.ts +6 -0
- package/dist/semantics/frontend-timing.js +35 -0
- package/dist/semantics/frontend.d.ts +504 -0
- package/dist/semantics/frontend.js +1157 -0
- package/dist/semantics/host-declaration-provenance.d.ts +11 -0
- package/dist/semantics/host-declaration-provenance.js +18 -0
- package/dist/semantics/host-methods.d.ts +24 -0
- package/dist/semantics/host-methods.js +74 -0
- package/dist/semantics/host-protocols.d.ts +429 -0
- package/dist/semantics/host-protocols.js +1501 -0
- package/dist/semantics/inherited-accessor.d.ts +7 -0
- package/dist/semantics/inherited-accessor.js +48 -0
- package/dist/semantics/interface-families.d.ts +70 -0
- package/dist/semantics/interface-families.js +180 -0
- package/dist/semantics/interface-implementors.d.ts +53 -0
- package/dist/semantics/interface-implementors.js +87 -0
- package/dist/semantics/jsdoc-namepath-transform.d.ts +4 -0
- package/dist/semantics/jsdoc-namepath-transform.js +85 -0
- package/dist/semantics/model/coverage.d.ts +68 -0
- package/dist/semantics/model/coverage.js +73 -0
- package/dist/semantics/model/edges.d.ts +103 -0
- package/dist/semantics/model/edges.js +20 -0
- package/dist/semantics/model/graph.d.ts +55 -0
- package/dist/semantics/model/graph.js +129 -0
- package/dist/semantics/model/operands.d.ts +159 -0
- package/dist/semantics/model/operands.js +26 -0
- package/dist/semantics/model/operations.d.ts +496 -0
- package/dist/semantics/model/operations.js +2 -0
- package/dist/semantics/model/primitive-domain.d.ts +26 -0
- package/dist/semantics/model/primitive-domain.js +38 -0
- package/dist/semantics/model/selected-signature.d.ts +261 -0
- package/dist/semantics/model/selected-signature.js +55 -0
- package/dist/semantics/model/structural-type-table.d.ts +93 -0
- package/dist/semantics/model/structural-type-table.js +237 -0
- package/dist/semantics/model/structural-types.d.ts +367 -0
- package/dist/semantics/model/structural-types.js +200 -0
- package/dist/semantics/module-resolution.d.ts +23 -0
- package/dist/semantics/module-resolution.js +227 -0
- package/dist/semantics/new-callee-class-tag-source-transform.d.ts +4 -0
- package/dist/semantics/new-callee-class-tag-source-transform.js +64 -0
- package/dist/semantics/node-project.d.ts +13 -0
- package/dist/semantics/node-project.js +107 -0
- package/dist/semantics/node-source-hooks.d.ts +1 -0
- package/dist/semantics/node-source-hooks.js +63 -0
- package/dist/semantics/normalize/absent-globals.d.ts +143 -0
- package/dist/semantics/normalize/absent-globals.js +191 -0
- package/dist/semantics/normalize/arguments-objects.d.ts +43 -0
- package/dist/semantics/normalize/arguments-objects.js +60 -0
- package/dist/semantics/normalize/asserted-arm-absence.d.ts +28 -0
- package/dist/semantics/normalize/asserted-arm-absence.js +61 -0
- package/dist/semantics/normalize/assignment-patterns.d.ts +70 -0
- package/dist/semantics/normalize/assignment-patterns.js +147 -0
- package/dist/semantics/normalize/bag-absence.d.ts +8 -0
- package/dist/semantics/normalize/bag-absence.js +42 -0
- package/dist/semantics/normalize/binding-fixpoint.d.ts +36 -0
- package/dist/semantics/normalize/binding-fixpoint.js +140 -0
- package/dist/semantics/normalize/callback-parameter-contracts.d.ts +16 -0
- package/dist/semantics/normalize/callback-parameter-contracts.js +91 -0
- package/dist/semantics/normalize/cells/agreement.d.ts +46 -0
- package/dist/semantics/normalize/cells/agreement.js +34 -0
- package/dist/semantics/normalize/cells/candidates.d.ts +17 -0
- package/dist/semantics/normalize/cells/candidates.js +35 -0
- package/dist/semantics/normalize/cells/facts.d.ts +19 -0
- package/dist/semantics/normalize/cells/facts.js +90 -0
- package/dist/semantics/normalize/cells/index.d.ts +10 -0
- package/dist/semantics/normalize/cells/index.js +6 -0
- package/dist/semantics/normalize/cells/model.d.ts +98 -0
- package/dist/semantics/normalize/cells/model.js +2 -0
- package/dist/semantics/normalize/cells/policies/bag.d.ts +44 -0
- package/dist/semantics/normalize/cells/policies/bag.js +114 -0
- package/dist/semantics/normalize/cells/policies/collection.d.ts +42 -0
- package/dist/semantics/normalize/cells/policies/collection.js +218 -0
- package/dist/semantics/normalize/cells/policies/field.d.ts +28 -0
- package/dist/semantics/normalize/cells/policies/field.js +40 -0
- package/dist/semantics/normalize/cells/policies/index.d.ts +49 -0
- package/dist/semantics/normalize/cells/policies/index.js +58 -0
- package/dist/semantics/normalize/cells/policies/local.d.ts +18 -0
- package/dist/semantics/normalize/cells/policies/local.js +37 -0
- package/dist/semantics/normalize/cells/policies/parameter.d.ts +28 -0
- package/dist/semantics/normalize/cells/policies/parameter.js +39 -0
- package/dist/semantics/normalize/cells/policies/return.d.ts +26 -0
- package/dist/semantics/normalize/cells/policies/return.js +45 -0
- package/dist/semantics/normalize/cells/policies/shared.d.ts +33 -0
- package/dist/semantics/normalize/cells/policies/shared.js +45 -0
- package/dist/semantics/normalize/cells/policy.d.ts +72 -0
- package/dist/semantics/normalize/cells/policy.js +18 -0
- package/dist/semantics/normalize/cells/registry.d.ts +14 -0
- package/dist/semantics/normalize/cells/registry.js +17 -0
- package/dist/semantics/normalize/census-refusal.d.ts +62 -0
- package/dist/semantics/normalize/census-refusal.js +27 -0
- package/dist/semantics/normalize/census.d.ts +109 -0
- package/dist/semantics/normalize/census.js +667 -0
- package/dist/semantics/normalize/collection-bindings.d.ts +278 -0
- package/dist/semantics/normalize/collection-bindings.js +677 -0
- package/dist/semantics/normalize/commonjs-module-record.d.ts +21 -0
- package/dist/semantics/normalize/commonjs-module-record.js +289 -0
- package/dist/semantics/normalize/commonjs-require.d.ts +13 -0
- package/dist/semantics/normalize/commonjs-require.js +1527 -0
- package/dist/semantics/normalize/contribution.d.ts +63 -0
- package/dist/semantics/normalize/contribution.js +172 -0
- package/dist/semantics/normalize/dead-typeof-guards.d.ts +64 -0
- package/dist/semantics/normalize/dead-typeof-guards.js +152 -0
- package/dist/semantics/normalize/deferred-intrinsic-protocols.d.ts +57 -0
- package/dist/semantics/normalize/deferred-intrinsic-protocols.js +109 -0
- package/dist/semantics/normalize/derived-expression-type.d.ts +1070 -0
- package/dist/semantics/normalize/derived-expression-type.js +3463 -0
- package/dist/semantics/normalize/evaluation-order.d.ts +16 -0
- package/dist/semantics/normalize/evaluation-order.js +37 -0
- package/dist/semantics/normalize/field-bindings.d.ts +167 -0
- package/dist/semantics/normalize/field-bindings.js +1125 -0
- package/dist/semantics/normalize/flow/array-element-continuation.d.ts +27 -0
- package/dist/semantics/normalize/flow/array-element-continuation.js +1452 -0
- package/dist/semantics/normalize/flow/callable-array-origins.d.ts +42 -0
- package/dist/semantics/normalize/flow/callable-array-origins.js +318 -0
- package/dist/semantics/normalize/flow/callable-completions.d.ts +45 -0
- package/dist/semantics/normalize/flow/callable-completions.js +82 -0
- package/dist/semantics/normalize/flow/callable-reach.d.ts +237 -0
- package/dist/semantics/normalize/flow/callable-reach.js +7174 -0
- package/dist/semantics/normalize/flow/class-family-member-read.d.ts +16 -0
- package/dist/semantics/normalize/flow/class-family-member-read.js +992 -0
- package/dist/semantics/normalize/flow/collection-value-continuation.d.ts +21 -0
- package/dist/semantics/normalize/flow/collection-value-continuation.js +192 -0
- package/dist/semantics/normalize/flow/component-solver.d.ts +199 -0
- package/dist/semantics/normalize/flow/component-solver.js +587 -0
- package/dist/semantics/normalize/flow/computed-key-set.d.ts +84 -0
- package/dist/semantics/normalize/flow/computed-key-set.js +660 -0
- package/dist/semantics/normalize/flow/export-importers.d.ts +24 -0
- package/dist/semantics/normalize/flow/export-importers.js +269 -0
- package/dist/semantics/normalize/flow/host-text-sink.d.ts +25 -0
- package/dist/semantics/normalize/flow/host-text-sink.js +87 -0
- package/dist/semantics/normalize/flow/intrinsic-array-callback-frames.d.ts +84 -0
- package/dist/semantics/normalize/flow/intrinsic-array-callback-frames.js +180 -0
- package/dist/semantics/normalize/flow/intrinsic-data-definition.d.ts +35 -0
- package/dist/semantics/normalize/flow/intrinsic-data-definition.js +140 -0
- package/dist/semantics/normalize/flow/invocation-facts.d.ts +98 -0
- package/dist/semantics/normalize/flow/invocation-facts.js +257 -0
- package/dist/semantics/normalize/flow/member-call-forwarding.d.ts +122 -0
- package/dist/semantics/normalize/flow/member-call-forwarding.js +835 -0
- package/dist/semantics/normalize/flow/model.d.ts +357 -0
- package/dist/semantics/normalize/flow/model.js +177 -0
- package/dist/semantics/normalize/flow/native-collection-protocol.d.ts +24 -0
- package/dist/semantics/normalize/flow/native-collection-protocol.js +252 -0
- package/dist/semantics/normalize/flow/node-path-token.d.ts +3 -0
- package/dist/semantics/normalize/flow/node-path-token.js +53 -0
- package/dist/semantics/normalize/flow/object-binding-continuation.d.ts +11 -0
- package/dist/semantics/normalize/flow/object-binding-continuation.js +42 -0
- package/dist/semantics/normalize/flow/origin-authority.d.ts +56 -0
- package/dist/semantics/normalize/flow/origin-authority.js +2 -0
- package/dist/semantics/normalize/flow/owned-class-receivers.d.ts +35 -0
- package/dist/semantics/normalize/flow/owned-class-receivers.js +191 -0
- package/dist/semantics/normalize/flow/parameter-values.d.ts +27 -0
- package/dist/semantics/normalize/flow/parameter-values.js +251 -0
- package/dist/semantics/normalize/flow/proof-hypotheses.d.ts +66 -0
- package/dist/semantics/normalize/flow/proof-hypotheses.js +162 -0
- package/dist/semantics/normalize/flow/record-alias-closure.d.ts +27 -0
- package/dist/semantics/normalize/flow/record-alias-closure.js +298 -0
- package/dist/semantics/normalize/flow/seeded-origins.d.ts +43 -0
- package/dist/semantics/normalize/flow/seeded-origins.js +54 -0
- package/dist/semantics/normalize/flow/source-class-data.d.ts +132 -0
- package/dist/semantics/normalize/flow/source-class-data.js +838 -0
- package/dist/semantics/normalize/flow/source-class-instanceof.d.ts +13 -0
- package/dist/semantics/normalize/flow/source-class-instanceof.js +37 -0
- package/dist/semantics/normalize/flow/source-class-static-data.d.ts +16 -0
- package/dist/semantics/normalize/flow/source-class-static-data.js +47 -0
- package/dist/semantics/normalize/flow/source-construction-frames.d.ts +12 -0
- package/dist/semantics/normalize/flow/source-construction-frames.js +118 -0
- package/dist/semantics/normalize/flow/source-invocation-frame-layout.d.ts +34 -0
- package/dist/semantics/normalize/flow/source-invocation-frame-layout.js +78 -0
- package/dist/semantics/normalize/flow/source-invocation-receiver.d.ts +37 -0
- package/dist/semantics/normalize/flow/source-invocation-receiver.js +95 -0
- package/dist/semantics/normalize/flow/source-prototype-method-identity.d.ts +23 -0
- package/dist/semantics/normalize/flow/source-prototype-method-identity.js +81 -0
- package/dist/semantics/normalize/flow/source-record-data.d.ts +29 -0
- package/dist/semantics/normalize/flow/source-record-data.js +626 -0
- package/dist/semantics/normalize/flow/source-value-session.d.ts +77 -0
- package/dist/semantics/normalize/flow/source-value-session.js +3089 -0
- package/dist/semantics/normalize/flow/targets.d.ts +118 -0
- package/dist/semantics/normalize/flow/targets.js +405 -0
- package/dist/semantics/normalize/flow/value-flow.d.ts +36 -0
- package/dist/semantics/normalize/flow/value-flow.js +823 -0
- package/dist/semantics/normalize/flow/value-provenance.d.ts +31 -0
- package/dist/semantics/normalize/flow/value-provenance.js +112 -0
- package/dist/semantics/normalize/gating.d.ts +51 -0
- package/dist/semantics/normalize/gating.js +560 -0
- package/dist/semantics/normalize/generic-function-choice.d.ts +31 -0
- package/dist/semantics/normalize/generic-function-choice.js +115 -0
- package/dist/semantics/normalize/global-host-mutations.d.ts +51 -0
- package/dist/semantics/normalize/global-host-mutations.js +5989 -0
- package/dist/semantics/normalize/host-effect-contracts.d.ts +77 -0
- package/dist/semantics/normalize/host-effect-contracts.js +143 -0
- package/dist/semantics/normalize/host-mutation-computed-keys.d.ts +38 -0
- package/dist/semantics/normalize/host-mutation-computed-keys.js +26 -0
- package/dist/semantics/normalize/host-mutation-key-reader.d.ts +66 -0
- package/dist/semantics/normalize/host-mutation-key-reader.js +192 -0
- package/dist/semantics/normalize/host-mutation-keys.d.ts +114 -0
- package/dist/semantics/normalize/host-mutation-keys.js +183 -0
- package/dist/semantics/normalize/identities.d.ts +172 -0
- package/dist/semantics/normalize/identities.js +426 -0
- package/dist/semantics/normalize/implicit-arguments-tuple.d.ts +97 -0
- package/dist/semantics/normalize/implicit-arguments-tuple.js +197 -0
- package/dist/semantics/normalize/implicit-arguments.d.ts +11 -0
- package/dist/semantics/normalize/implicit-arguments.js +39 -0
- package/dist/semantics/normalize/instantiation.d.ts +73 -0
- package/dist/semantics/normalize/instantiation.js +399 -0
- package/dist/semantics/normalize/intrinsic-property-call.d.ts +18 -0
- package/dist/semantics/normalize/intrinsic-property-call.js +69 -0
- package/dist/semantics/normalize/intrinsic-prototype.d.ts +41 -0
- package/dist/semantics/normalize/intrinsic-prototype.js +87 -0
- package/dist/semantics/normalize/intrinsic-static-member.d.ts +14 -0
- package/dist/semantics/normalize/intrinsic-static-member.js +23 -0
- package/dist/semantics/normalize/jsdoc-type-names.d.ts +32 -0
- package/dist/semantics/normalize/jsdoc-type-names.js +512 -0
- package/dist/semantics/normalize/keyof.d.ts +32 -0
- package/dist/semantics/normalize/keyof.js +110 -0
- package/dist/semantics/normalize/local-bindings.d.ts +176 -0
- package/dist/semantics/normalize/local-bindings.js +1826 -0
- package/dist/semantics/normalize/logical-result-type.d.ts +16 -0
- package/dist/semantics/normalize/logical-result-type.js +102 -0
- package/dist/semantics/normalize/namespace-paths.d.ts +57 -0
- package/dist/semantics/normalize/namespace-paths.js +108 -0
- package/dist/semantics/normalize/normalize.d.ts +57 -0
- package/dist/semantics/normalize/normalize.js +68 -0
- package/dist/semantics/normalize/object-bag-bindings.d.ts +305 -0
- package/dist/semantics/normalize/object-bag-bindings.js +1290 -0
- package/dist/semantics/normalize/omitted-stated-parameter.d.ts +53 -0
- package/dist/semantics/normalize/omitted-stated-parameter.js +59 -0
- package/dist/semantics/normalize/open-type-form.d.ts +10 -0
- package/dist/semantics/normalize/open-type-form.js +32 -0
- package/dist/semantics/normalize/parameter-bindings.d.ts +361 -0
- package/dist/semantics/normalize/parameter-bindings.js +3339 -0
- package/dist/semantics/normalize/parameter-slot.d.ts +264 -0
- package/dist/semantics/normalize/parameter-slot.js +491 -0
- package/dist/semantics/normalize/physical-overload-result.d.ts +77 -0
- package/dist/semantics/normalize/physical-overload-result.js +99 -0
- package/dist/semantics/normalize/primitive-property-absence.d.ts +12 -0
- package/dist/semantics/normalize/primitive-property-absence.js +60 -0
- package/dist/semantics/normalize/producer-context.d.ts +376 -0
- package/dist/semantics/normalize/producer-context.js +1 -0
- package/dist/semantics/normalize/producers/allocations.d.ts +3 -0
- package/dist/semantics/normalize/producers/allocations.js +863 -0
- package/dist/semantics/normalize/producers/binding-kind.d.ts +37 -0
- package/dist/semantics/normalize/producers/binding-kind.js +36 -0
- package/dist/semantics/normalize/producers/bindings.d.ts +85 -0
- package/dist/semantics/normalize/producers/bindings.js +710 -0
- package/dist/semantics/normalize/producers/boundary.d.ts +34 -0
- package/dist/semantics/normalize/producers/boundary.js +123 -0
- package/dist/semantics/normalize/producers/class-lifecycle.d.ts +3 -0
- package/dist/semantics/normalize/producers/class-lifecycle.js +902 -0
- package/dist/semantics/normalize/producers/computations.d.ts +3 -0
- package/dist/semantics/normalize/producers/computations.js +613 -0
- package/dist/semantics/normalize/producers/control-loops.d.ts +30 -0
- package/dist/semantics/normalize/producers/control-loops.js +91 -0
- package/dist/semantics/normalize/producers/control.d.ts +30 -0
- package/dist/semantics/normalize/producers/control.js +923 -0
- package/dist/semantics/normalize/producers/declaration-lifecycle.d.ts +3 -0
- package/dist/semantics/normalize/producers/declaration-lifecycle.js +390 -0
- package/dist/semantics/normalize/producers/destructuring.d.ts +45 -0
- package/dist/semantics/normalize/producers/destructuring.js +1180 -0
- package/dist/semantics/normalize/producers/dynamic-language.d.ts +3 -0
- package/dist/semantics/normalize/producers/dynamic-language.js +70 -0
- package/dist/semantics/normalize/producers/erasure.d.ts +51 -0
- package/dist/semantics/normalize/producers/erasure.js +90 -0
- package/dist/semantics/normalize/producers/installed.d.ts +3 -0
- package/dist/semantics/normalize/producers/installed.js +55 -0
- package/dist/semantics/normalize/producers/invocations.d.ts +35 -0
- package/dist/semantics/normalize/producers/invocations.js +1796 -0
- package/dist/semantics/normalize/producers/iteration-yield.d.ts +59 -0
- package/dist/semantics/normalize/producers/iteration-yield.js +235 -0
- package/dist/semantics/normalize/producers/jsx.d.ts +3 -0
- package/dist/semantics/normalize/producers/jsx.js +360 -0
- package/dist/semantics/normalize/producers/mint.d.ts +39 -0
- package/dist/semantics/normalize/producers/mint.js +44 -0
- package/dist/semantics/normalize/producers/nullish.d.ts +16 -0
- package/dist/semantics/normalize/producers/nullish.js +27 -0
- package/dist/semantics/normalize/producers/object-assignment.d.ts +8 -0
- package/dist/semantics/normalize/producers/object-assignment.js +204 -0
- package/dist/semantics/normalize/producers/object-tag.d.ts +9 -0
- package/dist/semantics/normalize/producers/object-tag.js +119 -0
- package/dist/semantics/normalize/producers/optional-chain.d.ts +44 -0
- package/dist/semantics/normalize/producers/optional-chain.js +75 -0
- package/dist/semantics/normalize/producers/properties.d.ts +21 -0
- package/dist/semantics/normalize/producers/properties.js +1053 -0
- package/dist/semantics/normalize/producers/protocol.d.ts +67 -0
- package/dist/semantics/normalize/producers/protocol.js +695 -0
- package/dist/semantics/normalize/producers/references.d.ts +53 -0
- package/dist/semantics/normalize/producers/references.js +1027 -0
- package/dist/semantics/normalize/producers/shared.d.ts +561 -0
- package/dist/semantics/normalize/producers/shared.js +1683 -0
- package/dist/semantics/normalize/producers/spread-arguments.d.ts +72 -0
- package/dist/semantics/normalize/producers/spread-arguments.js +375 -0
- package/dist/semantics/normalize/producers/tagged-template.d.ts +5 -0
- package/dist/semantics/normalize/producers/tagged-template.js +307 -0
- package/dist/semantics/normalize/producers/tuple-spread.d.ts +189 -0
- package/dist/semantics/normalize/producers/tuple-spread.js +279 -0
- package/dist/semantics/normalize/property-key-domain.d.ts +36 -0
- package/dist/semantics/normalize/property-key-domain.js +150 -0
- package/dist/semantics/normalize/reachability.d.ts +189 -0
- package/dist/semantics/normalize/reachability.js +1057 -0
- package/dist/semantics/normalize/reassigned-bindings.d.ts +13 -0
- package/dist/semantics/normalize/reassigned-bindings.js +41 -0
- package/dist/semantics/normalize/record-storage-families.d.ts +11 -0
- package/dist/semantics/normalize/record-storage-families.js +109 -0
- package/dist/semantics/normalize/return-bindings.d.ts +260 -0
- package/dist/semantics/normalize/return-bindings.js +1311 -0
- package/dist/semantics/normalize/return-paths.d.ts +2 -0
- package/dist/semantics/normalize/return-paths.js +28 -0
- package/dist/semantics/normalize/script-global-redefinition.d.ts +44 -0
- package/dist/semantics/normalize/script-global-redefinition.js +75 -0
- package/dist/semantics/normalize/specialization.d.ts +201 -0
- package/dist/semantics/normalize/specialization.js +1824 -0
- package/dist/semantics/normalize/structural-array-element.d.ts +176 -0
- package/dist/semantics/normalize/structural-array-element.js +700 -0
- package/dist/semantics/normalize/structural-array-read.d.ts +13 -0
- package/dist/semantics/normalize/structural-array-read.js +124 -0
- package/dist/semantics/normalize/structural-callable.d.ts +12 -0
- package/dist/semantics/normalize/structural-callable.js +82 -0
- package/dist/semantics/normalize/structural-creation-order.d.ts +32 -0
- package/dist/semantics/normalize/structural-creation-order.js +111 -0
- package/dist/semantics/normalize/structural-declarations.d.ts +395 -0
- package/dist/semantics/normalize/structural-declarations.js +968 -0
- package/dist/semantics/normalize/structural-declared-body.d.ts +25 -0
- package/dist/semantics/normalize/structural-declared-body.js +147 -0
- package/dist/semantics/normalize/structural-generics.d.ts +56 -0
- package/dist/semantics/normalize/structural-generics.js +120 -0
- package/dist/semantics/normalize/structural-indexed-access.d.ts +11 -0
- package/dist/semantics/normalize/structural-indexed-access.js +126 -0
- package/dist/semantics/normalize/structural-instantiated-member.d.ts +64 -0
- package/dist/semantics/normalize/structural-instantiated-member.js +407 -0
- package/dist/semantics/normalize/structural-joins.d.ts +44 -0
- package/dist/semantics/normalize/structural-joins.js +143 -0
- package/dist/semantics/normalize/structural-layout-relevance.d.ts +29 -0
- package/dist/semantics/normalize/structural-layout-relevance.js +391 -0
- package/dist/semantics/normalize/structural-layout-type.d.ts +11 -0
- package/dist/semantics/normalize/structural-layout-type.js +1468 -0
- package/dist/semantics/normalize/structural-leaves.d.ts +49 -0
- package/dist/semantics/normalize/structural-leaves.js +125 -0
- package/dist/semantics/normalize/structural-local-union.d.ts +13 -0
- package/dist/semantics/normalize/structural-local-union.js +133 -0
- package/dist/semantics/normalize/structural-members.d.ts +26 -0
- package/dist/semantics/normalize/structural-members.js +84 -0
- package/dist/semantics/normalize/structural-mutable-method.d.ts +15 -0
- package/dist/semantics/normalize/structural-mutable-method.js +109 -0
- package/dist/semantics/normalize/structural-parts.d.ts +131 -0
- package/dist/semantics/normalize/structural-parts.js +737 -0
- package/dist/semantics/normalize/structural-receiver.d.ts +66 -0
- package/dist/semantics/normalize/structural-receiver.js +551 -0
- package/dist/semantics/normalize/structural-rules.d.ts +112 -0
- package/dist/semantics/normalize/structural-rules.js +93 -0
- package/dist/semantics/normalize/structural-self-reference.d.ts +150 -0
- package/dist/semantics/normalize/structural-self-reference.js +494 -0
- package/dist/semantics/normalize/structural.d.ts +202 -0
- package/dist/semantics/normalize/structural.js +4218 -0
- package/dist/semantics/normalize/unreduced-type-form.d.ts +41 -0
- package/dist/semantics/normalize/unreduced-type-form.js +53 -0
- package/dist/semantics/normalize/unresolvable-names.d.ts +56 -0
- package/dist/semantics/normalize/unresolvable-names.js +140 -0
- package/dist/semantics/package-sources.d.ts +16 -0
- package/dist/semantics/package-sources.js +365 -0
- package/dist/semantics/program.d.ts +151 -0
- package/dist/semantics/program.js +667 -0
- package/dist/semantics/prototype-install-source-transform.d.ts +4 -0
- package/dist/semantics/prototype-install-source-transform.js +341 -0
- package/dist/semantics/prototype-object-class-source-transform.d.ts +4 -0
- package/dist/semantics/prototype-object-class-source-transform.js +525 -0
- package/dist/semantics/prototype-reparenting.d.ts +50 -0
- package/dist/semantics/prototype-reparenting.js +317 -0
- package/dist/semantics/stable-checker.d.ts +10 -0
- package/dist/semantics/stable-checker.js +148 -0
- package/dist/semantics/subclass-member-overlay-transform.d.ts +35 -0
- package/dist/semantics/subclass-member-overlay-transform.js +1418 -0
- package/dist/semantics/symbol-keyed-expando-source-transform.d.ts +4 -0
- package/dist/semantics/symbol-keyed-expando-source-transform.js +66 -0
- package/dist/semantics/this-constructor-source-transform.d.ts +4 -0
- package/dist/semantics/this-constructor-source-transform.js +122 -0
- package/dist/semantics/uninstantiable-classes.d.ts +22 -0
- package/dist/semantics/uninstantiable-classes.js +75 -0
- package/dist/targets/cpp/balanced-units.d.ts +3 -0
- package/dist/targets/cpp/balanced-units.js +58 -0
- package/dist/targets/cpp/borrowed-call-entry.d.ts +30 -0
- package/dist/targets/cpp/borrowed-call-entry.js +68 -0
- package/dist/targets/cpp/captures.d.ts +68 -0
- package/dist/targets/cpp/captures.js +269 -0
- package/dist/targets/cpp/class-layout.d.ts +313 -0
- package/dist/targets/cpp/class-layout.js +483 -0
- package/dist/targets/cpp/class-properties/computed-method-value.d.ts +25 -0
- package/dist/targets/cpp/class-properties/computed-method-value.js +22 -0
- package/dist/targets/cpp/class-properties/emit-class-properties.d.ts +216 -0
- package/dist/targets/cpp/class-properties/emit-class-properties.js +917 -0
- package/dist/targets/cpp/class-properties/native-prototype.d.ts +11 -0
- package/dist/targets/cpp/class-properties/native-prototype.js +101 -0
- package/dist/targets/cpp/class-ref-transport.d.ts +12 -0
- package/dist/targets/cpp/class-ref-transport.js +32 -0
- package/dist/targets/cpp/conversions.d.ts +3 -0
- package/dist/targets/cpp/conversions.js +2027 -0
- package/dist/targets/cpp/deferral-safety.d.ts +82 -0
- package/dist/targets/cpp/deferral-safety.js +86 -0
- package/dist/targets/cpp/direct-call-receivers.d.ts +37 -0
- package/dist/targets/cpp/direct-call-receivers.js +79 -0
- package/dist/targets/cpp/document.d.ts +74 -0
- package/dist/targets/cpp/document.js +106 -0
- package/dist/targets/cpp/emit-allocation.d.ts +60 -0
- package/dist/targets/cpp/emit-allocation.js +573 -0
- package/dist/targets/cpp/emit-arrays.d.ts +119 -0
- package/dist/targets/cpp/emit-arrays.js +1047 -0
- package/dist/targets/cpp/emit-binding-reference.d.ts +17 -0
- package/dist/targets/cpp/emit-binding-reference.js +120 -0
- package/dist/targets/cpp/emit-bindings.d.ts +158 -0
- package/dist/targets/cpp/emit-bindings.js +769 -0
- package/dist/targets/cpp/emit-buffers.d.ts +156 -0
- package/dist/targets/cpp/emit-buffers.js +573 -0
- package/dist/targets/cpp/emit-callable.d.ts +230 -0
- package/dist/targets/cpp/emit-callable.js +2154 -0
- package/dist/targets/cpp/emit-carrier-members.d.ts +406 -0
- package/dist/targets/cpp/emit-carrier-members.js +1224 -0
- package/dist/targets/cpp/emit-coercion.d.ts +26 -0
- package/dist/targets/cpp/emit-coercion.js +39 -0
- package/dist/targets/cpp/emit-context.d.ts +1882 -0
- package/dist/targets/cpp/emit-context.js +904 -0
- package/dist/targets/cpp/emit-dynamic-properties.d.ts +174 -0
- package/dist/targets/cpp/emit-dynamic-properties.js +1249 -0
- package/dist/targets/cpp/emit-equality.d.ts +39 -0
- package/dist/targets/cpp/emit-equality.js +472 -0
- package/dist/targets/cpp/emit-exceptions.d.ts +104 -0
- package/dist/targets/cpp/emit-exceptions.js +513 -0
- package/dist/targets/cpp/emit-field-owner.d.ts +4 -0
- package/dist/targets/cpp/emit-field-owner.js +27 -0
- package/dist/targets/cpp/emit-in.d.ts +31 -0
- package/dist/targets/cpp/emit-in.js +426 -0
- package/dist/targets/cpp/emit-instanceof.d.ts +19 -0
- package/dist/targets/cpp/emit-instanceof.js +601 -0
- package/dist/targets/cpp/emit-integers.d.ts +68 -0
- package/dist/targets/cpp/emit-integers.js +184 -0
- package/dist/targets/cpp/emit-iterator.d.ts +100 -0
- package/dist/targets/cpp/emit-iterator.js +1137 -0
- package/dist/targets/cpp/emit-json.d.ts +73 -0
- package/dist/targets/cpp/emit-json.js +823 -0
- package/dist/targets/cpp/emit-jsx.d.ts +74 -0
- package/dist/targets/cpp/emit-jsx.js +806 -0
- package/dist/targets/cpp/emit-mixed-binary.d.ts +51 -0
- package/dist/targets/cpp/emit-mixed-binary.js +60 -0
- package/dist/targets/cpp/emit-namespaces.d.ts +101 -0
- package/dist/targets/cpp/emit-namespaces.js +133 -0
- package/dist/targets/cpp/emit-narrowing.d.ts +738 -0
- package/dist/targets/cpp/emit-narrowing.js +3967 -0
- package/dist/targets/cpp/emit-native-equality.d.ts +3 -0
- package/dist/targets/cpp/emit-native-equality.js +14 -0
- package/dist/targets/cpp/emit-native-selection.d.ts +5 -0
- package/dist/targets/cpp/emit-native-selection.js +37 -0
- package/dist/targets/cpp/emit-object-tag.d.ts +4 -0
- package/dist/targets/cpp/emit-object-tag.js +108 -0
- package/dist/targets/cpp/emit-owned-record.d.ts +2 -0
- package/dist/targets/cpp/emit-owned-record.js +15 -0
- package/dist/targets/cpp/emit-presence.d.ts +78 -0
- package/dist/targets/cpp/emit-presence.js +376 -0
- package/dist/targets/cpp/emit-properties.d.ts +105 -0
- package/dist/targets/cpp/emit-properties.js +1640 -0
- package/dist/targets/cpp/emit-record-view.d.ts +20 -0
- package/dist/targets/cpp/emit-record-view.js +354 -0
- package/dist/targets/cpp/emit-return.d.ts +5 -0
- package/dist/targets/cpp/emit-return.js +237 -0
- package/dist/targets/cpp/emit-sum-widening.d.ts +10 -0
- package/dist/targets/cpp/emit-sum-widening.js +69 -0
- package/dist/targets/cpp/emit-tonumber.d.ts +38 -0
- package/dist/targets/cpp/emit-tonumber.js +177 -0
- package/dist/targets/cpp/emit-tostring.d.ts +92 -0
- package/dist/targets/cpp/emit-tostring.js +556 -0
- package/dist/targets/cpp/emit-typeof.d.ts +49 -0
- package/dist/targets/cpp/emit-typeof.js +317 -0
- package/dist/targets/cpp/emit-union-properties.d.ts +181 -0
- package/dist/targets/cpp/emit-union-properties.js +1281 -0
- package/dist/targets/cpp/emit.d.ts +45 -0
- package/dist/targets/cpp/emit.js +2225 -0
- package/dist/targets/cpp/error-types.d.ts +4 -0
- package/dist/targets/cpp/error-types.js +11 -0
- package/dist/targets/cpp/function-source-reads.d.ts +72 -0
- package/dist/targets/cpp/function-source-reads.js +148 -0
- package/dist/targets/cpp/host/atomics.d.ts +25 -0
- package/dist/targets/cpp/host/atomics.js +63 -0
- package/dist/targets/cpp/host/core-globals.d.ts +108 -0
- package/dist/targets/cpp/host/core-globals.js +158 -0
- package/dist/targets/cpp/host/dynamic-argument-members.d.ts +42 -0
- package/dist/targets/cpp/host/dynamic-argument-members.js +61 -0
- package/dist/targets/cpp/host/emit-host-arity.d.ts +139 -0
- package/dist/targets/cpp/host/emit-host-arity.js +232 -0
- package/dist/targets/cpp/host/emit-host-invoke.d.ts +91 -0
- package/dist/targets/cpp/host/emit-host-invoke.js +1105 -0
- package/dist/targets/cpp/host/emit-host-object.d.ts +55 -0
- package/dist/targets/cpp/host/emit-host-object.js +2206 -0
- package/dist/targets/cpp/host/emit-host-properties.d.ts +69 -0
- package/dist/targets/cpp/host/emit-host-properties.js +533 -0
- package/dist/targets/cpp/host/emit-host-reflect.d.ts +4 -0
- package/dist/targets/cpp/host/emit-host-reflect.js +180 -0
- package/dist/targets/cpp/host/emit-host-value.d.ts +120 -0
- package/dist/targets/cpp/host/emit-host-value.js +392 -0
- package/dist/targets/cpp/host/host-members.d.ts +505 -0
- package/dist/targets/cpp/host/host-members.js +819 -0
- package/dist/targets/cpp/host/host-method-aliases.d.ts +30 -0
- package/dist/targets/cpp/host/host-method-aliases.js +76 -0
- package/dist/targets/cpp/host/native-protocols.d.ts +47 -0
- package/dist/targets/cpp/host/native-protocols.js +183 -0
- package/dist/targets/cpp/host/object-protocol.d.ts +351 -0
- package/dist/targets/cpp/host/object-protocol.js +671 -0
- package/dist/targets/cpp/host-namespace-reads.d.ts +83 -0
- package/dist/targets/cpp/host-namespace-reads.js +113 -0
- package/dist/targets/cpp/manifest/capabilities.d.ts +39 -0
- package/dist/targets/cpp/manifest/capabilities.js +1484 -0
- package/dist/targets/cpp/manifest.d.ts +23 -0
- package/dist/targets/cpp/manifest.js +113 -0
- package/dist/targets/cpp/native-error-base.d.ts +38 -0
- package/dist/targets/cpp/native-error-base.js +74 -0
- package/dist/targets/cpp/native-narrowing-transport.d.ts +12 -0
- package/dist/targets/cpp/native-narrowing-transport.js +151 -0
- package/dist/targets/cpp/native-selection-helpers.d.ts +11 -0
- package/dist/targets/cpp/native-selection-helpers.js +46 -0
- package/dist/targets/cpp/native-symbol-keys.d.ts +8 -0
- package/dist/targets/cpp/native-symbol-keys.js +34 -0
- package/dist/targets/cpp/ownership.d.ts +43 -0
- package/dist/targets/cpp/ownership.js +38 -0
- package/dist/targets/cpp/owning-conversion-input.d.ts +14 -0
- package/dist/targets/cpp/owning-conversion-input.js +12 -0
- package/dist/targets/cpp/property-read-claims.d.ts +62 -0
- package/dist/targets/cpp/property-read-claims.js +23 -0
- package/dist/targets/cpp/property-store-claims.d.ts +62 -0
- package/dist/targets/cpp/property-store-claims.js +26 -0
- package/dist/targets/cpp/prototype/emit-prototype-array.d.ts +111 -0
- package/dist/targets/cpp/prototype/emit-prototype-array.js +602 -0
- package/dist/targets/cpp/prototype/emit-prototype-date.d.ts +133 -0
- package/dist/targets/cpp/prototype/emit-prototype-date.js +515 -0
- package/dist/targets/cpp/prototype/emit-prototype-error.d.ts +13 -0
- package/dist/targets/cpp/prototype/emit-prototype-error.js +54 -0
- package/dist/targets/cpp/prototype/emit-prototype-invoke.d.ts +34 -0
- package/dist/targets/cpp/prototype/emit-prototype-invoke.js +1003 -0
- package/dist/targets/cpp/prototype/emit-prototype-iterator.d.ts +47 -0
- package/dist/targets/cpp/prototype/emit-prototype-iterator.js +250 -0
- package/dist/targets/cpp/prototype/emit-prototype-promise.d.ts +46 -0
- package/dist/targets/cpp/prototype/emit-prototype-promise.js +143 -0
- package/dist/targets/cpp/prototype/emit-prototype-regexp.d.ts +335 -0
- package/dist/targets/cpp/prototype/emit-prototype-regexp.js +853 -0
- package/dist/targets/cpp/prototype/emit-prototype-string.d.ts +42 -0
- package/dist/targets/cpp/prototype/emit-prototype-string.js +252 -0
- package/dist/targets/cpp/prototype/prototype-method-reads.d.ts +25 -0
- package/dist/targets/cpp/prototype/prototype-method-reads.js +182 -0
- package/dist/targets/cpp/reactive-dependencies.d.ts +140 -0
- package/dist/targets/cpp/reactive-dependencies.js +432 -0
- package/dist/targets/cpp/reactive-origins.d.ts +44 -0
- package/dist/targets/cpp/reactive-origins.js +82 -0
- package/dist/targets/cpp/records.d.ts +277 -0
- package/dist/targets/cpp/records.js +2427 -0
- package/dist/targets/cpp/recursive-containers.d.ts +43 -0
- package/dist/targets/cpp/recursive-containers.js +144 -0
- package/dist/targets/cpp/regexp-types.d.ts +56 -0
- package/dist/targets/cpp/regexp-types.js +59 -0
- package/dist/targets/cpp/substrate.d.ts +125 -0
- package/dist/targets/cpp/substrate.js +12 -0
- package/dist/targets/cpp/translation-unit.d.ts +219 -0
- package/dist/targets/cpp/translation-unit.js +2063 -0
- package/dist/targets/cpp/types.d.ts +280 -0
- package/dist/targets/cpp/types.js +1135 -0
- package/dist/targets/cpp/virtual-methods.d.ts +95 -0
- package/dist/targets/cpp/virtual-methods.js +264 -0
- package/package.json +95 -0
- package/src/targets/cpp/runtime/gea_dynamic_proxy.h +824 -0
- package/src/targets/cpp/runtime/gea_eval.h +1376 -0
- package/src/targets/cpp/runtime/gea_native_class_prototype.h +44 -0
- package/src/targets/cpp/runtime/gea_runtime.h +29222 -0
- package/src/targets/cpp/runtime/gea_runtime_builtins.cpp +55 -0
|
@@ -0,0 +1,365 @@
|
|
|
1
|
+
import ts from 'typescript';
|
|
2
|
+
import { dirname, resolve, relative } from 'node:path';
|
|
3
|
+
const recordOf = (value) => value !== null && typeof value === 'object' && !Array.isArray(value) ? value : undefined;
|
|
4
|
+
// TypeScript reports paths with forward slashes on every platform, while
|
|
5
|
+
// node:path joins with a backslash on Windows. Appending `sep` therefore made
|
|
6
|
+
// every containment test fail there: the `sourceRoot` walk in readRecord climbed
|
|
7
|
+
// to the drive root, where `dirname('C:/')` stops changing, and the loop spun
|
|
8
|
+
// forever — a Windows build never finished, it only looked slow. Compare the two
|
|
9
|
+
// paths on a single separator instead.
|
|
10
|
+
const separators = /[\\/]+/g;
|
|
11
|
+
const sameShape = (value) => value.replace(separators, '/').replace(/\/$/, '');
|
|
12
|
+
const inside = (file, directory) => {
|
|
13
|
+
const target = sameShape(file);
|
|
14
|
+
const root = sameShape(directory);
|
|
15
|
+
return target === root || target.startsWith(`${root}/`);
|
|
16
|
+
};
|
|
17
|
+
const typedFile = (file) => /\.(?:ts|tsx|mts|cts)$/.test(file) && !/\.d\.(?:ts|mts|cts)$/.test(file);
|
|
18
|
+
/**
|
|
19
|
+
* Source discovery is a filesystem view shared by installed packages and source
|
|
20
|
+
* checkouts. Only package/build metadata supplies an output-to-input mapping;
|
|
21
|
+
* exports still decide whether the requested subpath is public.
|
|
22
|
+
*/
|
|
23
|
+
export const createPackageSourceHost = (host, packages = []) => {
|
|
24
|
+
const parseHost = host;
|
|
25
|
+
const readDirectory = parseHost.readDirectory?.bind(host) ?? ts.sys.readDirectory;
|
|
26
|
+
const records = new Map();
|
|
27
|
+
const packageOf = (file) => {
|
|
28
|
+
let directory = dirname(resolve(file));
|
|
29
|
+
for (;;) {
|
|
30
|
+
if (host.fileExists(`${directory}/package.json`))
|
|
31
|
+
return directory;
|
|
32
|
+
const parent = dirname(directory);
|
|
33
|
+
if (parent === directory)
|
|
34
|
+
return undefined;
|
|
35
|
+
directory = parent;
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
const readRecord = (root) => {
|
|
39
|
+
if (records.has(root))
|
|
40
|
+
return records.get(root);
|
|
41
|
+
// Install the sentinel before parsing configs, whose extends can re-enter lookup.
|
|
42
|
+
records.set(root, undefined);
|
|
43
|
+
const text = host.readFile(`${root}/package.json`);
|
|
44
|
+
if (text === undefined)
|
|
45
|
+
return undefined;
|
|
46
|
+
let manifest;
|
|
47
|
+
try {
|
|
48
|
+
manifest = recordOf(JSON.parse(text));
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
return undefined;
|
|
52
|
+
}
|
|
53
|
+
if (!manifest)
|
|
54
|
+
return undefined;
|
|
55
|
+
const mappings = new Map();
|
|
56
|
+
const roots = [];
|
|
57
|
+
const patterns = [];
|
|
58
|
+
const inputs = [];
|
|
59
|
+
const add = (output, source) => {
|
|
60
|
+
const from = resolve(root, output);
|
|
61
|
+
const to = resolve(root, source);
|
|
62
|
+
if (!inside(from, root) || !inside(to, root) || !typedFile(to))
|
|
63
|
+
return;
|
|
64
|
+
if (from.includes('*') && to.includes('*'))
|
|
65
|
+
patterns.push([from, to]);
|
|
66
|
+
else if (host.fileExists(to))
|
|
67
|
+
mappings.set(from, to);
|
|
68
|
+
};
|
|
69
|
+
const sourceConditions = (value) => {
|
|
70
|
+
if (Array.isArray(value)) {
|
|
71
|
+
value.forEach(sourceConditions);
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
const object = recordOf(value);
|
|
75
|
+
if (!object)
|
|
76
|
+
return;
|
|
77
|
+
const sources = Object.entries(object).filter(([key, entry]) => (key === 'source' || key.endsWith('/source')) && typeof entry === 'string');
|
|
78
|
+
if (sources.length === 1) {
|
|
79
|
+
const source = sources[0]?.[1];
|
|
80
|
+
if (typeof source === 'string')
|
|
81
|
+
for (const [key, output] of Object.entries(object)) {
|
|
82
|
+
if (key !== 'types' && typeof output === 'string')
|
|
83
|
+
add(output, source);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
Object.values(object).forEach(sourceConditions);
|
|
87
|
+
};
|
|
88
|
+
sourceConditions(manifest.exports);
|
|
89
|
+
if (typeof manifest.source === 'string') {
|
|
90
|
+
for (const field of ['main', 'module'])
|
|
91
|
+
if (typeof manifest[field] === 'string')
|
|
92
|
+
add(manifest[field], manifest.source);
|
|
93
|
+
}
|
|
94
|
+
for (const name of ['tsconfig.json', 'tsconfig.build.json']) {
|
|
95
|
+
const file = resolve(root, name);
|
|
96
|
+
if (!host.fileExists(file))
|
|
97
|
+
continue;
|
|
98
|
+
const config = ts.readConfigFile(file, host.readFile);
|
|
99
|
+
if (config.error)
|
|
100
|
+
continue;
|
|
101
|
+
const parsed = ts.parseJsonConfigFileContent(config.config, {
|
|
102
|
+
useCaseSensitiveFileNames: ts.sys.useCaseSensitiveFileNames,
|
|
103
|
+
fileExists: host.fileExists,
|
|
104
|
+
readFile: host.readFile,
|
|
105
|
+
readDirectory
|
|
106
|
+
}, root);
|
|
107
|
+
let sourceRoot = parsed.options.rootDir;
|
|
108
|
+
const configInputs = parsed.fileNames.filter(typedFile);
|
|
109
|
+
inputs.push(...configInputs);
|
|
110
|
+
if (!sourceRoot && configInputs.length > 0) {
|
|
111
|
+
sourceRoot = dirname(configInputs[0]);
|
|
112
|
+
// Stop at the filesystem root even when an input is genuinely outside it:
|
|
113
|
+
// dirname() is idempotent there, so without this the walk cannot end.
|
|
114
|
+
for (const input of configInputs)
|
|
115
|
+
while (!inside(input, sourceRoot)) {
|
|
116
|
+
const parent = dirname(sourceRoot);
|
|
117
|
+
if (parent === sourceRoot)
|
|
118
|
+
break;
|
|
119
|
+
sourceRoot = parent;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
if (sourceRoot && parsed.options.outDir)
|
|
123
|
+
roots.push([parsed.options.outDir, sourceRoot]);
|
|
124
|
+
}
|
|
125
|
+
// Packages commonly emit declarations and JavaScript into sibling trees:
|
|
126
|
+
// `src/index.ts` -> `dist/types/index.d.ts` and `dist/index.js`. The
|
|
127
|
+
// tsconfig proves the first relationship, while the exports entry proves
|
|
128
|
+
// that both outputs implement the same public subpath. Carry that proof
|
|
129
|
+
// across to the runtime target so a source checkout does not need to keep
|
|
130
|
+
// generated JavaScript or add geatsc-specific metadata.
|
|
131
|
+
const sourceFromDeclaredOutput = (output) => {
|
|
132
|
+
const absolute = resolve(root, output);
|
|
133
|
+
for (const [outDir, sourceDir] of roots) {
|
|
134
|
+
if (!inside(absolute, outDir))
|
|
135
|
+
continue;
|
|
136
|
+
const base = resolve(sourceDir, relative(outDir, absolute)).replace(/\.d\.(?:ts|mts|cts)$/, '');
|
|
137
|
+
if (base.includes('*'))
|
|
138
|
+
return `${base}.ts`;
|
|
139
|
+
const candidates = ['.ts', '.tsx', '.mts', '.cts'].map((extension) => `${base}${extension}`).filter(host.fileExists);
|
|
140
|
+
if (candidates.length === 1)
|
|
141
|
+
return candidates[0];
|
|
142
|
+
const suffix = relative(outDir, absolute).replace(/\.d\.(?:ts|mts|cts)$/, '');
|
|
143
|
+
const suffixCandidates = inputs.filter((input) => {
|
|
144
|
+
const source = relative(root, input).replace(/\.(?:ts|tsx|mts|cts)$/, '');
|
|
145
|
+
return source === suffix || source.endsWith(`/${suffix}`);
|
|
146
|
+
});
|
|
147
|
+
if (suffixCandidates.length === 1)
|
|
148
|
+
return suffixCandidates[0];
|
|
149
|
+
}
|
|
150
|
+
return undefined;
|
|
151
|
+
};
|
|
152
|
+
const inferRuntimeSources = (value) => {
|
|
153
|
+
if (Array.isArray(value)) {
|
|
154
|
+
value.forEach(inferRuntimeSources);
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
const object = recordOf(value);
|
|
158
|
+
if (!object)
|
|
159
|
+
return;
|
|
160
|
+
const declared = typeof object.types === 'string' ? sourceFromDeclaredOutput(object.types) : undefined;
|
|
161
|
+
if (declared)
|
|
162
|
+
for (const [condition, output] of Object.entries(object))
|
|
163
|
+
if (condition !== 'types' && typeof output === 'string' && !/\.d\.(?:ts|mts|cts)$/.test(output))
|
|
164
|
+
add(output, declared);
|
|
165
|
+
Object.values(object).forEach(inferRuntimeSources);
|
|
166
|
+
};
|
|
167
|
+
inferRuntimeSources(manifest.exports);
|
|
168
|
+
// Static Rollup input/output declarations are data. Never execute build configs
|
|
169
|
+
// or plugins to discover a file; dynamic configs retain normal resolution.
|
|
170
|
+
for (const extension of ['js', 'mjs', 'cjs', 'ts']) {
|
|
171
|
+
const file = resolve(root, `rollup.config.${extension}`);
|
|
172
|
+
const code = host.readFile(file);
|
|
173
|
+
if (code === undefined)
|
|
174
|
+
continue;
|
|
175
|
+
const ast = ts.createSourceFile(file, code, ts.ScriptTarget.Latest, true);
|
|
176
|
+
const constants = new Map();
|
|
177
|
+
for (const statement of ast.statements)
|
|
178
|
+
if (ts.isVariableStatement(statement)) {
|
|
179
|
+
if ((statement.declarationList.flags & ts.NodeFlags.Const) === 0)
|
|
180
|
+
continue;
|
|
181
|
+
for (const declaration of statement.declarationList.declarations) {
|
|
182
|
+
if (ts.isIdentifier(declaration.name) && declaration.initializer)
|
|
183
|
+
constants.set(declaration.name.text, declaration.initializer);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
const valueOf = (node, seen = new Set()) => {
|
|
187
|
+
if (!ts.isIdentifier(node) || seen.has(node.text))
|
|
188
|
+
return node;
|
|
189
|
+
const value = constants.get(node.text);
|
|
190
|
+
if (!value)
|
|
191
|
+
return node;
|
|
192
|
+
seen.add(node.text);
|
|
193
|
+
return valueOf(value, seen);
|
|
194
|
+
};
|
|
195
|
+
const property = (node, name) => {
|
|
196
|
+
for (const item of node.properties) {
|
|
197
|
+
if (!item.name || (!ts.isIdentifier(item.name) && !ts.isStringLiteral(item.name)) || item.name.text !== name)
|
|
198
|
+
continue;
|
|
199
|
+
if (ts.isPropertyAssignment(item))
|
|
200
|
+
return valueOf(item.initializer);
|
|
201
|
+
if (ts.isShorthandPropertyAssignment(item))
|
|
202
|
+
return valueOf(item.name);
|
|
203
|
+
}
|
|
204
|
+
return undefined;
|
|
205
|
+
};
|
|
206
|
+
const visit = (expression) => {
|
|
207
|
+
const node = valueOf(expression);
|
|
208
|
+
if (ts.isArrayLiteralExpression(node)) {
|
|
209
|
+
node.elements.forEach(visit);
|
|
210
|
+
return;
|
|
211
|
+
}
|
|
212
|
+
if (!ts.isObjectLiteralExpression(node))
|
|
213
|
+
return;
|
|
214
|
+
const input = property(node, 'input');
|
|
215
|
+
const output = property(node, 'output');
|
|
216
|
+
if (!input || !ts.isStringLiteralLike(input) || !output)
|
|
217
|
+
return;
|
|
218
|
+
const outputs = ts.isArrayLiteralExpression(output) ? output.elements : [output];
|
|
219
|
+
for (const item of outputs) {
|
|
220
|
+
const target = valueOf(item);
|
|
221
|
+
if (!ts.isObjectLiteralExpression(target))
|
|
222
|
+
continue;
|
|
223
|
+
const destination = property(target, 'file');
|
|
224
|
+
if (destination && ts.isStringLiteralLike(destination))
|
|
225
|
+
add(destination.text, input.text);
|
|
226
|
+
}
|
|
227
|
+
};
|
|
228
|
+
for (const statement of ast.statements)
|
|
229
|
+
if (ts.isExportAssignment(statement))
|
|
230
|
+
visit(statement.expression);
|
|
231
|
+
}
|
|
232
|
+
// esbuild's explicit outbase/outdir pair identifies preserved module paths.
|
|
233
|
+
// Inspect only scripts named by package metadata, never execute their code.
|
|
234
|
+
const buildFiles = new Set();
|
|
235
|
+
for (const [name, script] of Object.entries(recordOf(manifest.scripts) ?? {})) {
|
|
236
|
+
if (!/^(?:build|compile)(?::|$)/.test(name) || typeof script !== 'string')
|
|
237
|
+
continue;
|
|
238
|
+
for (const token of script.matchAll(/(?:^|\s)([\w./-]+\.(?:mjs|cjs|js|ts))(?=\s|$)/g))
|
|
239
|
+
buildFiles.add(resolve(root, token[1]));
|
|
240
|
+
}
|
|
241
|
+
for (const file of buildFiles) {
|
|
242
|
+
if (!inside(file, root))
|
|
243
|
+
continue;
|
|
244
|
+
const code = host.readFile(file);
|
|
245
|
+
if (code === undefined)
|
|
246
|
+
continue;
|
|
247
|
+
const ast = ts.createSourceFile(file, code, ts.ScriptTarget.Latest, true);
|
|
248
|
+
const visit = (node) => {
|
|
249
|
+
if (ts.isObjectLiteralExpression(node)) {
|
|
250
|
+
const fields = new Map();
|
|
251
|
+
for (const property of node.properties) {
|
|
252
|
+
if (ts.isPropertyAssignment(property) &&
|
|
253
|
+
(ts.isIdentifier(property.name) || ts.isStringLiteral(property.name)) &&
|
|
254
|
+
ts.isStringLiteralLike(property.initializer)) {
|
|
255
|
+
fields.set(property.name.text, property.initializer.text);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
const source = fields.get('outbase'), output = fields.get('outdir');
|
|
259
|
+
if (source && output && inside(resolve(root, source), root) && inside(resolve(root, output), root))
|
|
260
|
+
roots.push([resolve(root, output), resolve(root, source)]);
|
|
261
|
+
}
|
|
262
|
+
ts.forEachChild(node, visit);
|
|
263
|
+
};
|
|
264
|
+
visit(ast);
|
|
265
|
+
}
|
|
266
|
+
// A literal build-script move relocates already identified outputs without
|
|
267
|
+
// evaluating the script. It cannot create a new source association.
|
|
268
|
+
for (const script of Object.values(recordOf(manifest.scripts) ?? {})) {
|
|
269
|
+
if (typeof script !== 'string')
|
|
270
|
+
continue;
|
|
271
|
+
for (const match of script.matchAll(/(?:^|&&|;)\s*mv\s+([\w./-]+)\/\*\.js\s+([\w./-]+)(?=\s*(?:&&|;|$))/g)) {
|
|
272
|
+
const from = resolve(root, match[1]);
|
|
273
|
+
const to = resolve(root, match[2]);
|
|
274
|
+
for (const [output, input] of [...mappings])
|
|
275
|
+
if (dirname(output) === from)
|
|
276
|
+
add(resolve(to, relative(from, output)), input);
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
const result = { manifest, mappings, patterns, roots, inputs };
|
|
280
|
+
records.set(root, result);
|
|
281
|
+
return result;
|
|
282
|
+
};
|
|
283
|
+
const entries = packages.map((entry) => ({ ...entry, root: resolve(entry.root), name: readRecord(resolve(entry.root))?.manifest.name }));
|
|
284
|
+
const aliases = entries
|
|
285
|
+
.filter((entry) => typeof entry.name === 'string')
|
|
286
|
+
.map((entry) => ({
|
|
287
|
+
...entry,
|
|
288
|
+
prefix: resolve(entry.root, 'node_modules', String(entry.name))
|
|
289
|
+
}));
|
|
290
|
+
const unalias = (file) => {
|
|
291
|
+
const absolute = resolve(file);
|
|
292
|
+
const alias = aliases.find((entry) => inside(absolute, entry.prefix));
|
|
293
|
+
if (alias)
|
|
294
|
+
return resolve(alias.root, relative(alias.prefix, absolute));
|
|
295
|
+
const origin = entries
|
|
296
|
+
.filter((entry) => entry.origin && inside(absolute, resolve(entry.origin)))
|
|
297
|
+
.sort((left, right) => right.origin.length - left.origin.length)[0];
|
|
298
|
+
return origin?.origin ? resolve(origin.root, relative(resolve(origin.origin), absolute)) : absolute;
|
|
299
|
+
};
|
|
300
|
+
const sourceOf = (file) => {
|
|
301
|
+
const absolute = unalias(file);
|
|
302
|
+
const root = packageOf(absolute);
|
|
303
|
+
const record = root ? readRecord(root) : undefined;
|
|
304
|
+
const stated = record?.mappings.get(absolute);
|
|
305
|
+
if (stated)
|
|
306
|
+
return stated;
|
|
307
|
+
for (const [output, input] of record?.patterns ?? []) {
|
|
308
|
+
const [prefix, suffix] = output.split('*');
|
|
309
|
+
if (!prefix || suffix === undefined || !absolute.startsWith(prefix) || !absolute.endsWith(suffix))
|
|
310
|
+
continue;
|
|
311
|
+
const candidate = input.replace('*', absolute.slice(prefix.length, absolute.length - suffix.length));
|
|
312
|
+
if (inside(candidate, root) && host.fileExists(candidate))
|
|
313
|
+
return candidate;
|
|
314
|
+
}
|
|
315
|
+
for (const [output, source] of record?.roots ?? []) {
|
|
316
|
+
if (!inside(absolute, output))
|
|
317
|
+
continue;
|
|
318
|
+
const base = resolve(source, relative(output, absolute)).replace(/(?:\.d)?\.(?:js|jsx|mjs|cjs|ts|mts|cts)$/, '');
|
|
319
|
+
const candidates = ['.ts', '.tsx', '.mts', '.cts'].map((extension) => `${base}${extension}`).filter(host.fileExists);
|
|
320
|
+
if (candidates.length === 1 && candidates[0])
|
|
321
|
+
return candidates[0];
|
|
322
|
+
}
|
|
323
|
+
return host.fileExists(absolute) ? absolute : resolve(file);
|
|
324
|
+
};
|
|
325
|
+
const view = {
|
|
326
|
+
...host,
|
|
327
|
+
fileExists: (file) => host.fileExists(sourceOf(file)),
|
|
328
|
+
readFile: (file) => host.readFile(sourceOf(file)),
|
|
329
|
+
directoryExists: (directory) => {
|
|
330
|
+
if (aliases.some((entry) => inside(entry.prefix, resolve(directory))))
|
|
331
|
+
return true;
|
|
332
|
+
const dir = unalias(directory);
|
|
333
|
+
if (host.directoryExists?.(dir))
|
|
334
|
+
return true;
|
|
335
|
+
const root = packageOf(`${dir}/__module__.ts`);
|
|
336
|
+
const record = root ? readRecord(root) : undefined;
|
|
337
|
+
if ([...(record?.mappings.keys() ?? [])].some((file) => inside(file, dir)))
|
|
338
|
+
return true;
|
|
339
|
+
if (record?.patterns.some(([pattern]) => inside(pattern, dir) || dir.startsWith(pattern.split('*')[0])))
|
|
340
|
+
return true;
|
|
341
|
+
return (record?.roots ?? []).some(([output, source]) => inside(dir, output) && host.directoryExists?.(resolve(source, relative(output, dir))));
|
|
342
|
+
},
|
|
343
|
+
realpath: (file) => {
|
|
344
|
+
const source = sourceOf(file);
|
|
345
|
+
return host.realpath?.(source) ?? source;
|
|
346
|
+
}
|
|
347
|
+
};
|
|
348
|
+
return {
|
|
349
|
+
host: view,
|
|
350
|
+
sourceOf,
|
|
351
|
+
containingFile: (specifier, containingFile) => {
|
|
352
|
+
const own = entries.find((entry) => !entry.origin && typeof entry.name === 'string' && (specifier === entry.name || specifier.startsWith(`${entry.name}/`)));
|
|
353
|
+
if (own)
|
|
354
|
+
return resolve(own.root, '__geatsc_entry__.ts');
|
|
355
|
+
if (!specifier.startsWith('.') && !specifier.startsWith('/')) {
|
|
356
|
+
const source = entries
|
|
357
|
+
.filter((entry) => entry.origin && inside(resolve(containingFile), entry.root))
|
|
358
|
+
.sort((left, right) => right.root.length - left.root.length)[0];
|
|
359
|
+
if (source?.origin)
|
|
360
|
+
return resolve(source.origin, relative(source.root, containingFile));
|
|
361
|
+
}
|
|
362
|
+
return containingFile;
|
|
363
|
+
}
|
|
364
|
+
};
|
|
365
|
+
};
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import type { PackageSource } from './package-sources.js';
|
|
2
|
+
import ts from 'typescript';
|
|
3
|
+
import type { CommonJsWrapperDeclaration } from '../plugins/model.js';
|
|
4
|
+
import { type HostMethodBindingTable } from './host-methods.js';
|
|
5
|
+
import { type DiagnosticSourcePreparationAudit } from './diagnostic-source-preparation.js';
|
|
6
|
+
/**
|
|
7
|
+
* The TypeScript program host.
|
|
8
|
+
*
|
|
9
|
+
* This is the only place the compiler opens a file. Everything downstream reads
|
|
10
|
+
* the sealed semantic graph, so a later layer physically cannot reach back to
|
|
11
|
+
* the AST to answer a question the frontend already answered differently.
|
|
12
|
+
*/
|
|
13
|
+
export interface ProgramInput {
|
|
14
|
+
/** Package checkouts prepared by the project loader; the compiler discovers their implementation entries. */
|
|
15
|
+
readonly packageSources?: readonly PackageSource[];
|
|
16
|
+
readonly dynamicFallback?: boolean;
|
|
17
|
+
/** Module specifiers implemented by an installed native host, including explicit package/* claims. */
|
|
18
|
+
readonly declarationModules?: ReadonlySet<string>;
|
|
19
|
+
readonly rootFileNames: readonly string[];
|
|
20
|
+
readonly options: ts.CompilerOptions;
|
|
21
|
+
/**
|
|
22
|
+
* File text this program uses in place of what is on disk, by absolute path.
|
|
23
|
+
*
|
|
24
|
+
* A build pipeline does not always hand a compiler the files a user wrote.
|
|
25
|
+
* The gea vite pipeline captures each module at a chosen point in its own
|
|
26
|
+
* transform chain and compiles THOSE, so the text for a path can differ from
|
|
27
|
+
* the file at that path -- and one module (`@gea-virtual/...`) has no file at
|
|
28
|
+
* all. Both are the same fact: the caller, not the filesystem, is the
|
|
29
|
+
* authority on a module's text. The paths stay the real ones because import
|
|
30
|
+
* resolution is done against them.
|
|
31
|
+
*/
|
|
32
|
+
readonly sourceOverlay?: ReadonlyMap<string, string>;
|
|
33
|
+
/**
|
|
34
|
+
* How an importing file's own specifiers resolve, when the caller knows and
|
|
35
|
+
* ordinary resolution cannot. A bundler's virtual module (`virtual:...`) and
|
|
36
|
+
* an alias it invented have no on-disk meaning; the build that created them
|
|
37
|
+
* is the only authority on where they point.
|
|
38
|
+
*/
|
|
39
|
+
readonly moduleResolution?: ReadonlyMap<string, ReadonlyMap<string, string>>;
|
|
40
|
+
/** Exact host-owned declarations whose static calls are CommonJS loaders. */
|
|
41
|
+
readonly commonJsGlobals?: ReadonlyMap<string, CommonJsWrapperDeclaration>;
|
|
42
|
+
/** Host-owned method declarations used to authenticate builtin record lookups. */
|
|
43
|
+
readonly hostMethodBindings?: HostMethodBindingTable;
|
|
44
|
+
/** Accepted runtime lookup spellings, mapped to canonical builtin names. */
|
|
45
|
+
readonly commonJsBuiltinModules?: ReadonlyMap<string, string>;
|
|
46
|
+
/** Real implementation sources keyed by canonical builtin registry name. */
|
|
47
|
+
readonly commonJsBuiltinModuleSources?: ReadonlyMap<string, string>;
|
|
48
|
+
/**
|
|
49
|
+
* The project file whose options and file set define this program, or `null`
|
|
50
|
+
* to compile the root files under `options` alone.
|
|
51
|
+
*
|
|
52
|
+
* A program is not just its entry points. A project's `include` pulls in the
|
|
53
|
+
* ambient declarations that give a wildcard import (`import './App.css'`) a
|
|
54
|
+
* module to resolve to, and its `paths` decide what a specifier means at all.
|
|
55
|
+
* Compiling the entry points under this compiler's own defaults compiles a
|
|
56
|
+
* *different program* than the one the application declares, and every
|
|
57
|
+
* difference surfaces as a phantom defect in the application.
|
|
58
|
+
*/
|
|
59
|
+
/**
|
|
60
|
+
* Whether the CALLER has stated the module set (it compiled a module graph),
|
|
61
|
+
* so the project must not add modules of its own.
|
|
62
|
+
*
|
|
63
|
+
* A project's `include` and a module graph answer two different questions. A
|
|
64
|
+
* glob says what a typechecker should be willing to look at; a graph says
|
|
65
|
+
* what this application actually is. On the module-graph path the staged
|
|
66
|
+
* project is written beside the entry and its `include` is a wildcard, so it
|
|
67
|
+
* sweeps up every sibling left in the staging directory -- files the bundler
|
|
68
|
+
* shook out, and untransformed originals whose specifiers only ever meant
|
|
69
|
+
* something to the bundler. Compiled as roots, their unresolved imports are
|
|
70
|
+
* reported as defects of an application that does not contain them.
|
|
71
|
+
*
|
|
72
|
+
* The project still contributes everything it is the authority on: its
|
|
73
|
+
* options, its `paths`, and its ambient DECLARATIONS -- which is what the
|
|
74
|
+
* comment above is about, and what a wildcard import still needs. Only its
|
|
75
|
+
* implementation files are dropped, because the graph already named those.
|
|
76
|
+
*/
|
|
77
|
+
readonly statedModuleSet?: boolean;
|
|
78
|
+
/**
|
|
79
|
+
* The caller guarantees that this program contains every classic script
|
|
80
|
+
* that can execute in its lexical realm, including any evaluated source.
|
|
81
|
+
* Absent, another script may read or write top-level lexical bindings.
|
|
82
|
+
* This does not close global-object properties, host effects, or objects
|
|
83
|
+
* held by lexical bindings. It is independent of ESM module completeness
|
|
84
|
+
* and C++ symbol isolation, neither of which supplies this guarantee.
|
|
85
|
+
*/
|
|
86
|
+
readonly closedScriptScope?: boolean;
|
|
87
|
+
readonly projectFileName?: string | null;
|
|
88
|
+
/**
|
|
89
|
+
* Rewrites a plugin performs on a file's text before this program parses it
|
|
90
|
+
* (`PluginInstance.transformSource`), applied in installation order.
|
|
91
|
+
*
|
|
92
|
+
* The only place a transform can run and still change what the CHECKER sees,
|
|
93
|
+
* which is the whole reason the hook exists: a library whose meaning the type
|
|
94
|
+
* system cannot express -- AppKit's JSX, whose elements the language types as
|
|
95
|
+
* `JSX.Element` and whose attributes it does not check at all -- has to
|
|
96
|
+
* become ordinary TypeScript before checking, not after. Empty is the normal
|
|
97
|
+
* case and costs nothing.
|
|
98
|
+
*/
|
|
99
|
+
readonly sourceTransforms?: readonly ((input: {
|
|
100
|
+
readonly fileName: string;
|
|
101
|
+
readonly text: string;
|
|
102
|
+
readonly declarationFileName?: string;
|
|
103
|
+
}) => string | null)[];
|
|
104
|
+
}
|
|
105
|
+
export interface CompiledProgram {
|
|
106
|
+
readonly program: ts.Program;
|
|
107
|
+
readonly checker: ts.TypeChecker;
|
|
108
|
+
/**
|
|
109
|
+
* The program host's runtime-module answer for a literal specifier.
|
|
110
|
+
*
|
|
111
|
+
* CommonJS `require("...")` is not a TypeScript module-specifier node, so
|
|
112
|
+
* its argument has no checker module symbol. This keeps resolution on the
|
|
113
|
+
* configured program host, including overlays, package-source rewrites, and
|
|
114
|
+
* caller-stated module graphs, instead of letting a producer re-resolve it.
|
|
115
|
+
*/
|
|
116
|
+
readonly runtimeModuleTargetOf: (specifier: string, containingFile: string, mode: 'import' | 'require') => string | null;
|
|
117
|
+
/** The Program's canonical source-file object for a resolved path. */
|
|
118
|
+
readonly sourceFileOf: (fileName: string) => ts.SourceFile | null;
|
|
119
|
+
/** Source files reached only through authenticated static CommonJS require edges. */
|
|
120
|
+
readonly commonJsSourceFiles: readonly ts.SourceFile[];
|
|
121
|
+
/** The files the compiler is responsible for, excluding ambient declarations. */
|
|
122
|
+
readonly sourceFiles: readonly ts.SourceFile[];
|
|
123
|
+
/**
|
|
124
|
+
* The files the caller asked to compile, as this program's own source files.
|
|
125
|
+
*
|
|
126
|
+
* A program is not just its entry points -- `ProgramInput.projectFileName`
|
|
127
|
+
* says why -- but the difference between the two is exactly what
|
|
128
|
+
* `censusReachability` (normalize/reachability.ts) needs, and only this file
|
|
129
|
+
* can state it: a root arrives as whatever path the caller wrote, and
|
|
130
|
+
* turning one into a `ts.SourceFile` is module resolution, which is this
|
|
131
|
+
* file's job and no later layer's. Empty means the roots could not be
|
|
132
|
+
* resolved, and reachability then prunes nothing.
|
|
133
|
+
*/
|
|
134
|
+
readonly entryFiles: readonly ts.SourceFile[];
|
|
135
|
+
/** Syntactic and semantic errors TypeScript itself reports. */
|
|
136
|
+
readonly diagnostics: readonly ts.Diagnostic[];
|
|
137
|
+
/** Exact stale package-source directives blanked before the final checker pass. */
|
|
138
|
+
readonly sourcePreparations: readonly DiagnosticSourcePreparationAudit[];
|
|
139
|
+
}
|
|
140
|
+
export declare const defaultCompilerOptions: ts.CompilerOptions;
|
|
141
|
+
/**
|
|
142
|
+
* The nearest project file at or above a directory, or `null`.
|
|
143
|
+
*
|
|
144
|
+
* This walks the filesystem, which looks like the source-shaped authority the
|
|
145
|
+
* architecture forbids -- it is not. The forbidden thing is deciding a value's
|
|
146
|
+
* *semantics* from a path. Finding the project that declares a program is how
|
|
147
|
+
* every TypeScript toolchain establishes what the program even is, and the
|
|
148
|
+
* answer feeds `ts.parseJsonConfigFileContent`, never a semantic decision.
|
|
149
|
+
*/
|
|
150
|
+
export declare const findProjectFile: (fromDirectory: string) => string | null;
|
|
151
|
+
export declare const createProgram: (input: ProgramInput) => CompiledProgram;
|