@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,150 @@
|
|
|
1
|
+
import ts from 'typescript';
|
|
2
|
+
/**
|
|
3
|
+
* What gea says a JSX element means.
|
|
4
|
+
*
|
|
5
|
+
* TypeScript answers half the question and stops. `<Row id={x}/>` resolves a
|
|
6
|
+
* construct signature of `Row`, and `<Header/>` resolves a call signature of
|
|
7
|
+
* `Header` -- the checker validates the attributes against the corresponding
|
|
8
|
+
* parameter, and that is the end of what the *language* states. Whether the
|
|
9
|
+
* resolved thing is invoked once and its result inserted, or instantiated and
|
|
10
|
+
* re-entered on a later frame, is gea's answer, not TypeScript's.
|
|
11
|
+
*
|
|
12
|
+
* gea's answer, in gea's own words: a component class derives from the base its
|
|
13
|
+
* runtime exports, and the member named here is the one that produces its tree.
|
|
14
|
+
* Both spellings below are this library's linkage names -- the same kind of fact
|
|
15
|
+
* as a module specifier -- and they are stated once, here, rather than being
|
|
16
|
+
* matched for in five places.
|
|
17
|
+
*/
|
|
18
|
+
export declare const geaComponentBaseName = "Component";
|
|
19
|
+
export declare const geaRenderMemberName = "template";
|
|
20
|
+
/**
|
|
21
|
+
* The two bases whose subclasses hold REACTIVE state, in gea's own words.
|
|
22
|
+
*
|
|
23
|
+
* `index.d.ts` states the split and the reason for it: `ReactiveComponent` is
|
|
24
|
+
* the "opt-in base for a component that holds its OWN reactive state", and its
|
|
25
|
+
* comment is explicit that "plain `Component` subclasses keep zero reactive
|
|
26
|
+
* overhead". `Store` is the same fact for the singleton half -- a store exists
|
|
27
|
+
* to be observed. So reactivity is not a property of being a component; it is a
|
|
28
|
+
* property of extending one of exactly these two, and a compiler that made
|
|
29
|
+
* every component's fields reactive would be adding overhead the library
|
|
30
|
+
* promises it does not add.
|
|
31
|
+
*
|
|
32
|
+
* Two names rather than one because neither derives from the other: a `Store`
|
|
33
|
+
* is not a `Component`. They are listed here, once, for the same reason
|
|
34
|
+
* `geaComponentBaseName` is -- a linkage name is this library's, and matching
|
|
35
|
+
* for it in five places is how the five drift.
|
|
36
|
+
*/
|
|
37
|
+
export declare const geaReactiveBaseNames: readonly string[];
|
|
38
|
+
/**
|
|
39
|
+
* The member `primitives.ts`'s `mount()` reaches every root component through:
|
|
40
|
+
* `(instance as unknown as { render(root, depth): void }).render(root, 1)`.
|
|
41
|
+
*
|
|
42
|
+
* A different linkage name from `geaRenderMemberName` on purpose. `template`
|
|
43
|
+
* is what a component *writes* -- the method whose body a `<Tag/>` element
|
|
44
|
+
* enters once constructed (`elementFactsOf` below). `render` is not written by
|
|
45
|
+
* any component: it is the one name `mount()`'s own structural cast spells,
|
|
46
|
+
* naming the mount-time bridge from a real host node to a component's tree.
|
|
47
|
+
* Nothing publishes a class member of this name -- `unwrapErased`
|
|
48
|
+
* (`semantics/normalize/producers/erasure.ts`) sees straight through the cast
|
|
49
|
+
* to the real class, which has no such method -- so `render-bridge.ts` is the
|
|
50
|
+
* one place that recognizes this exact property name and rebuilds what it
|
|
51
|
+
* means, the same way `geaRenderMemberName` is the one name `elementFactsOf`
|
|
52
|
+
* recognizes for the opposite direction.
|
|
53
|
+
*/
|
|
54
|
+
export declare const geaRenderBridgeMemberName = "render";
|
|
55
|
+
/**
|
|
56
|
+
* The member a mounted component holds its own root node in.
|
|
57
|
+
*
|
|
58
|
+
* `Component` declares it -- `readonly el: RootElement | null`
|
|
59
|
+
* (`core/packages/core/index.d.ts:611`) -- and the framework's own JS component
|
|
60
|
+
* runtime writes it at exactly the point this compiler's mount bridge attaches
|
|
61
|
+
* a tree (`CompiledReactiveComponent.render`: install the node, then call
|
|
62
|
+
* `onAfterRender`). It is stated here for the same reason the two names above
|
|
63
|
+
* are: it is this library's linkage name, spelled once.
|
|
64
|
+
*/
|
|
65
|
+
export declare const geaMountedElementMemberName = "el";
|
|
66
|
+
/**
|
|
67
|
+
* The hook a component's own code runs once its tree is attached.
|
|
68
|
+
*
|
|
69
|
+
* Not a compiler invention: the framework's JS runtime calls `this.onAfterRender()`
|
|
70
|
+
* as the last step of its own `render`, right after installing the root element,
|
|
71
|
+
* and v1 keeps that runtime whole for any component that declares one of the
|
|
72
|
+
* lifecycle members (`geatsc-plugin-gea/src/index.ts`'s
|
|
73
|
+
* `componentHasRuntimeLifecycle`). The native bridge here has no JS runtime to
|
|
74
|
+
* defer to, so it performs the same two steps itself -- which is what makes the
|
|
75
|
+
* hook run at all rather than being emitted as unreachable code.
|
|
76
|
+
*/
|
|
77
|
+
export declare const geaAfterRenderMemberName = "onAfterRender";
|
|
78
|
+
/**
|
|
79
|
+
* The one attribute name that is the framework's and never the component's.
|
|
80
|
+
*
|
|
81
|
+
* `key` is declared on gea's own `NativeViewProps` (`index.d.ts:420`) so an
|
|
82
|
+
* author may write it on any element, but nothing receives it as a prop: it
|
|
83
|
+
* identifies a child across re-renders for the list reconciler, and v1 says so
|
|
84
|
+
* in as many words where it drops it -- "`key` belongs to the list reconciler,
|
|
85
|
+
* not to the child component" (`cpp-template-renderer.ts:1671`, and again at
|
|
86
|
+
* :1593 where a `key` slot is excluded from a mount's attribute set).
|
|
87
|
+
*
|
|
88
|
+
* Named here, rather than skipped at the one site that noticed, because it is a
|
|
89
|
+
* fact about gea's props vocabulary -- the same kind of fact as the member
|
|
90
|
+
* names above -- and because the guard it exempts (`lower.ts`'s
|
|
91
|
+
* `requireEveryAttributeConsumed`) is otherwise right to refuse every attribute
|
|
92
|
+
* no carrier field receives.
|
|
93
|
+
*/
|
|
94
|
+
export declare const geaReconcilerAttributeName = "key";
|
|
95
|
+
/**
|
|
96
|
+
* The attribute that names where to PUT a node rather than what to set on it.
|
|
97
|
+
*
|
|
98
|
+
* `ref` is declared on gea's props vocabulary the same way `key` is
|
|
99
|
+
* (`NativeViewProps.ref?: GeaElement | null`, `index.d.ts:424`), and its
|
|
100
|
+
* declared type is the ELEMENT -- so the value written there is not data the
|
|
101
|
+
* node receives, it is the slot the node is stored into. v1 reads it exactly
|
|
102
|
+
* that way where it collects a component's `refFields`: a `ref` slot on the
|
|
103
|
+
* root, whose expression is `this.<field>`, recorded by field name
|
|
104
|
+
* (`geatsc-plugin-gea/src/cpp-replacements.ts:113`).
|
|
105
|
+
*
|
|
106
|
+
* v1 then *declines* to compile such a component -- a non-empty `refFields`
|
|
107
|
+
* makes `index.ts:151` keep the whole JS component runtime for that class -- so
|
|
108
|
+
* there is no native emission to copy here, only the meaning. Naming it in this
|
|
109
|
+
* file, beside `key`, is the same statement for the same reason: it is a fact
|
|
110
|
+
* about gea's props vocabulary, and the one guard that would otherwise refuse
|
|
111
|
+
* it (`lower.ts`'s `requireEveryAttributeConsumed`) is right about every other
|
|
112
|
+
* name it refuses.
|
|
113
|
+
*/
|
|
114
|
+
export declare const geaRefAttributeName = "ref";
|
|
115
|
+
/** How the language reaches a value-tagged element's body, as the checker resolved it. */
|
|
116
|
+
export type GeaInvocation = 'call' | 'construct';
|
|
117
|
+
export interface GeaElementFacts {
|
|
118
|
+
readonly invocation: GeaInvocation;
|
|
119
|
+
/**
|
|
120
|
+
* The member gea renders a constructed component through, or `null` when
|
|
121
|
+
* nothing authenticated this class as one of gea's.
|
|
122
|
+
*
|
|
123
|
+
* A class the library does not claim is not a component just because an
|
|
124
|
+
* element constructed it: the program may well be building an ordinary object
|
|
125
|
+
* whose type happens to satisfy `JSX.ElementClass`. Recording the absence
|
|
126
|
+
* rather than guessing a member name is what lets lowering refuse by name
|
|
127
|
+
* instead of calling something that was never a render.
|
|
128
|
+
*/
|
|
129
|
+
readonly renderMember: string | null;
|
|
130
|
+
}
|
|
131
|
+
/** Whether this class is one of gea's components -- `derivesFromGeaBase` asked about gea's component base. */
|
|
132
|
+
export declare const derivesFromGeaComponent: (checker: ts.TypeChecker, instance: ts.Type) => boolean;
|
|
133
|
+
/**
|
|
134
|
+
* Whether this class holds reactive state -- the same walk, asked about either
|
|
135
|
+
* reactive base.
|
|
136
|
+
*
|
|
137
|
+
* `some` rather than a merged lookup: each base is resolved from the scopes of
|
|
138
|
+
* the chain that actually reaches it, and a class extends one of them, never
|
|
139
|
+
* both. Asking twice is what keeps a `Store` recognised in a program that never
|
|
140
|
+
* imports `ReactiveComponent` at all, and vice versa.
|
|
141
|
+
*/
|
|
142
|
+
export declare const derivesFromGeaReactiveBase: (checker: ts.TypeChecker, instance: ts.Type) => boolean;
|
|
143
|
+
/**
|
|
144
|
+
* What this element's tag resolves to, or `null` when it resolves neither.
|
|
145
|
+
*
|
|
146
|
+
* The order is the language's: a type carrying construct signatures is newed by
|
|
147
|
+
* JSX before it is called, and a type carrying both is a class expression whose
|
|
148
|
+
* call half JSX never selects.
|
|
149
|
+
*/
|
|
150
|
+
export declare const elementFactsOf: (checker: ts.TypeChecker, tagName: ts.JsxTagNameExpression) => GeaElementFacts | null;
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
import ts from 'typescript';
|
|
2
|
+
import { declaredBaseTypesOf } from '../../semantics/ambient.js';
|
|
3
|
+
/**
|
|
4
|
+
* What gea says a JSX element means.
|
|
5
|
+
*
|
|
6
|
+
* TypeScript answers half the question and stops. `<Row id={x}/>` resolves a
|
|
7
|
+
* construct signature of `Row`, and `<Header/>` resolves a call signature of
|
|
8
|
+
* `Header` -- the checker validates the attributes against the corresponding
|
|
9
|
+
* parameter, and that is the end of what the *language* states. Whether the
|
|
10
|
+
* resolved thing is invoked once and its result inserted, or instantiated and
|
|
11
|
+
* re-entered on a later frame, is gea's answer, not TypeScript's.
|
|
12
|
+
*
|
|
13
|
+
* gea's answer, in gea's own words: a component class derives from the base its
|
|
14
|
+
* runtime exports, and the member named here is the one that produces its tree.
|
|
15
|
+
* Both spellings below are this library's linkage names -- the same kind of fact
|
|
16
|
+
* as a module specifier -- and they are stated once, here, rather than being
|
|
17
|
+
* matched for in five places.
|
|
18
|
+
*/
|
|
19
|
+
export const geaComponentBaseName = 'Component';
|
|
20
|
+
export const geaRenderMemberName = 'template';
|
|
21
|
+
/**
|
|
22
|
+
* The two bases whose subclasses hold REACTIVE state, in gea's own words.
|
|
23
|
+
*
|
|
24
|
+
* `index.d.ts` states the split and the reason for it: `ReactiveComponent` is
|
|
25
|
+
* the "opt-in base for a component that holds its OWN reactive state", and its
|
|
26
|
+
* comment is explicit that "plain `Component` subclasses keep zero reactive
|
|
27
|
+
* overhead". `Store` is the same fact for the singleton half -- a store exists
|
|
28
|
+
* to be observed. So reactivity is not a property of being a component; it is a
|
|
29
|
+
* property of extending one of exactly these two, and a compiler that made
|
|
30
|
+
* every component's fields reactive would be adding overhead the library
|
|
31
|
+
* promises it does not add.
|
|
32
|
+
*
|
|
33
|
+
* Two names rather than one because neither derives from the other: a `Store`
|
|
34
|
+
* is not a `Component`. They are listed here, once, for the same reason
|
|
35
|
+
* `geaComponentBaseName` is -- a linkage name is this library's, and matching
|
|
36
|
+
* for it in five places is how the five drift.
|
|
37
|
+
*/
|
|
38
|
+
export const geaReactiveBaseNames = ['ReactiveComponent', 'Store'];
|
|
39
|
+
/**
|
|
40
|
+
* The member `primitives.ts`'s `mount()` reaches every root component through:
|
|
41
|
+
* `(instance as unknown as { render(root, depth): void }).render(root, 1)`.
|
|
42
|
+
*
|
|
43
|
+
* A different linkage name from `geaRenderMemberName` on purpose. `template`
|
|
44
|
+
* is what a component *writes* -- the method whose body a `<Tag/>` element
|
|
45
|
+
* enters once constructed (`elementFactsOf` below). `render` is not written by
|
|
46
|
+
* any component: it is the one name `mount()`'s own structural cast spells,
|
|
47
|
+
* naming the mount-time bridge from a real host node to a component's tree.
|
|
48
|
+
* Nothing publishes a class member of this name -- `unwrapErased`
|
|
49
|
+
* (`semantics/normalize/producers/erasure.ts`) sees straight through the cast
|
|
50
|
+
* to the real class, which has no such method -- so `render-bridge.ts` is the
|
|
51
|
+
* one place that recognizes this exact property name and rebuilds what it
|
|
52
|
+
* means, the same way `geaRenderMemberName` is the one name `elementFactsOf`
|
|
53
|
+
* recognizes for the opposite direction.
|
|
54
|
+
*/
|
|
55
|
+
export const geaRenderBridgeMemberName = 'render';
|
|
56
|
+
/**
|
|
57
|
+
* The member a mounted component holds its own root node in.
|
|
58
|
+
*
|
|
59
|
+
* `Component` declares it -- `readonly el: RootElement | null`
|
|
60
|
+
* (`core/packages/core/index.d.ts:611`) -- and the framework's own JS component
|
|
61
|
+
* runtime writes it at exactly the point this compiler's mount bridge attaches
|
|
62
|
+
* a tree (`CompiledReactiveComponent.render`: install the node, then call
|
|
63
|
+
* `onAfterRender`). It is stated here for the same reason the two names above
|
|
64
|
+
* are: it is this library's linkage name, spelled once.
|
|
65
|
+
*/
|
|
66
|
+
export const geaMountedElementMemberName = 'el';
|
|
67
|
+
/**
|
|
68
|
+
* The hook a component's own code runs once its tree is attached.
|
|
69
|
+
*
|
|
70
|
+
* Not a compiler invention: the framework's JS runtime calls `this.onAfterRender()`
|
|
71
|
+
* as the last step of its own `render`, right after installing the root element,
|
|
72
|
+
* and v1 keeps that runtime whole for any component that declares one of the
|
|
73
|
+
* lifecycle members (`geatsc-plugin-gea/src/index.ts`'s
|
|
74
|
+
* `componentHasRuntimeLifecycle`). The native bridge here has no JS runtime to
|
|
75
|
+
* defer to, so it performs the same two steps itself -- which is what makes the
|
|
76
|
+
* hook run at all rather than being emitted as unreachable code.
|
|
77
|
+
*/
|
|
78
|
+
export const geaAfterRenderMemberName = 'onAfterRender';
|
|
79
|
+
/**
|
|
80
|
+
* The one attribute name that is the framework's and never the component's.
|
|
81
|
+
*
|
|
82
|
+
* `key` is declared on gea's own `NativeViewProps` (`index.d.ts:420`) so an
|
|
83
|
+
* author may write it on any element, but nothing receives it as a prop: it
|
|
84
|
+
* identifies a child across re-renders for the list reconciler, and v1 says so
|
|
85
|
+
* in as many words where it drops it -- "`key` belongs to the list reconciler,
|
|
86
|
+
* not to the child component" (`cpp-template-renderer.ts:1671`, and again at
|
|
87
|
+
* :1593 where a `key` slot is excluded from a mount's attribute set).
|
|
88
|
+
*
|
|
89
|
+
* Named here, rather than skipped at the one site that noticed, because it is a
|
|
90
|
+
* fact about gea's props vocabulary -- the same kind of fact as the member
|
|
91
|
+
* names above -- and because the guard it exempts (`lower.ts`'s
|
|
92
|
+
* `requireEveryAttributeConsumed`) is otherwise right to refuse every attribute
|
|
93
|
+
* no carrier field receives.
|
|
94
|
+
*/
|
|
95
|
+
export const geaReconcilerAttributeName = 'key';
|
|
96
|
+
/**
|
|
97
|
+
* The attribute that names where to PUT a node rather than what to set on it.
|
|
98
|
+
*
|
|
99
|
+
* `ref` is declared on gea's props vocabulary the same way `key` is
|
|
100
|
+
* (`NativeViewProps.ref?: GeaElement | null`, `index.d.ts:424`), and its
|
|
101
|
+
* declared type is the ELEMENT -- so the value written there is not data the
|
|
102
|
+
* node receives, it is the slot the node is stored into. v1 reads it exactly
|
|
103
|
+
* that way where it collects a component's `refFields`: a `ref` slot on the
|
|
104
|
+
* root, whose expression is `this.<field>`, recorded by field name
|
|
105
|
+
* (`geatsc-plugin-gea/src/cpp-replacements.ts:113`).
|
|
106
|
+
*
|
|
107
|
+
* v1 then *declines* to compile such a component -- a non-empty `refFields`
|
|
108
|
+
* makes `index.ts:151` keep the whole JS component runtime for that class -- so
|
|
109
|
+
* there is no native emission to copy here, only the meaning. Naming it in this
|
|
110
|
+
* file, beside `key`, is the same statement for the same reason: it is a fact
|
|
111
|
+
* about gea's props vocabulary, and the one guard that would otherwise refuse
|
|
112
|
+
* it (`lower.ts`'s `requireEveryAttributeConsumed`) is right about every other
|
|
113
|
+
* name it refuses.
|
|
114
|
+
*/
|
|
115
|
+
export const geaRefAttributeName = 'ref';
|
|
116
|
+
/**
|
|
117
|
+
* Whether this class is one of gea's, decided by symbol identity.
|
|
118
|
+
*
|
|
119
|
+
* The base may be reached through intermediates the program wrote -- `class
|
|
120
|
+
* View extends Component`, then `class Home extends View` -- so the whole chain
|
|
121
|
+
* is walked. What is compared is the *symbol* the library exported, resolved
|
|
122
|
+
* from the scope the class was declared in: a class extending gea's base must
|
|
123
|
+
* have imported it there, and comparing the resolved symbol rather than the
|
|
124
|
+
* spelling means a program that renames the import on the way in
|
|
125
|
+
* (`import { Component as Base }`) is recognized, while a program that declares
|
|
126
|
+
* its own unrelated `Component` is not.
|
|
127
|
+
*/
|
|
128
|
+
const derivesFromGeaBase = (checker, instance, baseName) => {
|
|
129
|
+
const chain = declaredBaseTypesOf(checker, instance);
|
|
130
|
+
const targetOf = (symbol) => (symbol.flags & ts.SymbolFlags.Alias) !== 0 ? checker.getAliasedSymbol(symbol) : symbol;
|
|
131
|
+
// The base is resolved from every scope in the chain, not only the leaf's.
|
|
132
|
+
//
|
|
133
|
+
// Resolving it once, where the *derived* class is declared, silently assumed
|
|
134
|
+
// that a gea component names gea's base in its own file. That holds for
|
|
135
|
+
// `class App extends Component`, and fails for every class that reaches the
|
|
136
|
+
// base through another one: the library exports `ReactiveComponent extends
|
|
137
|
+
// Component`, and an app writing `import { ReactiveComponent }` never has
|
|
138
|
+
// `Component` in scope at all -- so the lookup returned nothing and the whole
|
|
139
|
+
// claim was abandoned before the chain that plainly contains gea's base was
|
|
140
|
+
// ever compared. The class went unclaimed, and the element refused to lower.
|
|
141
|
+
//
|
|
142
|
+
// Each link's own declaration site is a scope where the name it extends *is*
|
|
143
|
+
// visible, which is what makes walking them the right question rather than a
|
|
144
|
+
// wider one: this still compares the resolved *symbol* the library exported,
|
|
145
|
+
// never the spelling, so a renamed import is recognized and an unrelated
|
|
146
|
+
// class merely spelled `Component` in some other file is not. What it does
|
|
147
|
+
// not distinguish -- and did not before either -- is a program that declares
|
|
148
|
+
// its own `Component` and genuinely extends it; such a class has gea's
|
|
149
|
+
// linkage name as its real base, and telling the two apart needs a module
|
|
150
|
+
// identity this library does not state anywhere.
|
|
151
|
+
const bases = new Set();
|
|
152
|
+
for (const type of [instance, ...chain]) {
|
|
153
|
+
const declaration = type.getSymbol()?.declarations?.[0];
|
|
154
|
+
if (!declaration)
|
|
155
|
+
continue;
|
|
156
|
+
const inScope = checker.resolveName(baseName, declaration, ts.SymbolFlags.Value, false);
|
|
157
|
+
if (inScope)
|
|
158
|
+
bases.add(targetOf(inScope));
|
|
159
|
+
}
|
|
160
|
+
if (bases.size === 0)
|
|
161
|
+
return false;
|
|
162
|
+
return chain.some((candidate) => {
|
|
163
|
+
const symbol = candidate.getSymbol();
|
|
164
|
+
return symbol !== undefined && bases.has(targetOf(symbol));
|
|
165
|
+
});
|
|
166
|
+
};
|
|
167
|
+
/** Whether this class is one of gea's components -- `derivesFromGeaBase` asked about gea's component base. */
|
|
168
|
+
export const derivesFromGeaComponent = (checker, instance) => derivesFromGeaBase(checker, instance, geaComponentBaseName);
|
|
169
|
+
/**
|
|
170
|
+
* Whether this class holds reactive state -- the same walk, asked about either
|
|
171
|
+
* reactive base.
|
|
172
|
+
*
|
|
173
|
+
* `some` rather than a merged lookup: each base is resolved from the scopes of
|
|
174
|
+
* the chain that actually reaches it, and a class extends one of them, never
|
|
175
|
+
* both. Asking twice is what keeps a `Store` recognised in a program that never
|
|
176
|
+
* imports `ReactiveComponent` at all, and vice versa.
|
|
177
|
+
*/
|
|
178
|
+
export const derivesFromGeaReactiveBase = (checker, instance) => geaReactiveBaseNames.some((baseName) => derivesFromGeaBase(checker, instance, baseName));
|
|
179
|
+
/**
|
|
180
|
+
* What this element's tag resolves to, or `null` when it resolves neither.
|
|
181
|
+
*
|
|
182
|
+
* The order is the language's: a type carrying construct signatures is newed by
|
|
183
|
+
* JSX before it is called, and a type carrying both is a class expression whose
|
|
184
|
+
* call half JSX never selects.
|
|
185
|
+
*/
|
|
186
|
+
export const elementFactsOf = (checker, tagName) => {
|
|
187
|
+
const type = checker.getTypeAtLocation(tagName);
|
|
188
|
+
const constructs = type.getConstructSignatures();
|
|
189
|
+
if (constructs.length > 0) {
|
|
190
|
+
const instance = constructs[0]?.getReturnType();
|
|
191
|
+
const claimed = instance !== undefined && derivesFromGeaComponent(checker, instance);
|
|
192
|
+
return { invocation: 'construct', renderMember: claimed ? geaRenderMemberName : null };
|
|
193
|
+
}
|
|
194
|
+
return type.getCallSignatures().length > 0 ? { invocation: 'call', renderMember: null } : null;
|
|
195
|
+
};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { type SemanticResultId } from '../../identity/ids.js';
|
|
2
|
+
import { type LoweringContext } from '../../ir/lower-operands.js';
|
|
3
|
+
import type { IrBlockId, IrOperand } from '../../ir/model.js';
|
|
4
|
+
import type { SemanticOperand } from '../../semantics/model/operands.js';
|
|
5
|
+
/**
|
|
6
|
+
* `ref={this.canvasEl}`, lowered as the store it actually is.
|
|
7
|
+
*
|
|
8
|
+
* Every other attribute on an intrinsic element is data the node receives, and
|
|
9
|
+
* the core lowers all of them the one way: evaluate the value, write it on the
|
|
10
|
+
* node. `ref` reverses the direction. Its declared type is the element itself
|
|
11
|
+
* (`NativeViewProps.ref?: GeaElement | null`), so what the author wrote is not
|
|
12
|
+
* a value for the node but a designator for where the node goes -- and lowering
|
|
13
|
+
* it as a property write puts the *old* contents of that slot onto the node and
|
|
14
|
+
* leaves the slot untouched, which is a silently wrong program rather than a
|
|
15
|
+
* refused one.
|
|
16
|
+
*
|
|
17
|
+
* The designator arrives here already lowered, because JSX evaluates its
|
|
18
|
+
* attribute expressions: `this.canvasEl` is an ordinary `[[Get]]` that ran
|
|
19
|
+
* before the element was created, and its result is what this prop's value
|
|
20
|
+
* operand names. So the receiver and key of the store are not re-derived from
|
|
21
|
+
* syntax -- they are that same get's own operands, resolved through the one
|
|
22
|
+
* function every other lowering resolves operands with. Reading them back this
|
|
23
|
+
* way is what makes `ref={this.a.b}` work for free and what makes
|
|
24
|
+
* `ref={someExpression}` refuse by name instead of compiling into a write
|
|
25
|
+
* nobody can find.
|
|
26
|
+
*
|
|
27
|
+
* The get itself stays lowered. It is a real evaluation the source performed,
|
|
28
|
+
* its value is dead afterwards, and suppressing it from here would mean this
|
|
29
|
+
* plugin reaching into an operation the core owns.
|
|
30
|
+
*/
|
|
31
|
+
export declare const lowerGeaElementRef: (ctx: LoweringContext, block: IrBlockId, lineage: SemanticResultId, node: IrOperand, key: SemanticOperand, value: SemanticOperand) => boolean;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { operationOfResult } from '../../identity/ids.js';
|
|
2
|
+
import { IrLoweringBlockedError } from '../../ir/lower-graph.js';
|
|
3
|
+
import { namedOperand, resolveRequiredOperand } from '../../ir/lower-operands.js';
|
|
4
|
+
import { geaRefAttributeName } from './contract.js';
|
|
5
|
+
/**
|
|
6
|
+
* `ref={this.canvasEl}`, lowered as the store it actually is.
|
|
7
|
+
*
|
|
8
|
+
* Every other attribute on an intrinsic element is data the node receives, and
|
|
9
|
+
* the core lowers all of them the one way: evaluate the value, write it on the
|
|
10
|
+
* node. `ref` reverses the direction. Its declared type is the element itself
|
|
11
|
+
* (`NativeViewProps.ref?: GeaElement | null`), so what the author wrote is not
|
|
12
|
+
* a value for the node but a designator for where the node goes -- and lowering
|
|
13
|
+
* it as a property write puts the *old* contents of that slot onto the node and
|
|
14
|
+
* leaves the slot untouched, which is a silently wrong program rather than a
|
|
15
|
+
* refused one.
|
|
16
|
+
*
|
|
17
|
+
* The designator arrives here already lowered, because JSX evaluates its
|
|
18
|
+
* attribute expressions: `this.canvasEl` is an ordinary `[[Get]]` that ran
|
|
19
|
+
* before the element was created, and its result is what this prop's value
|
|
20
|
+
* operand names. So the receiver and key of the store are not re-derived from
|
|
21
|
+
* syntax -- they are that same get's own operands, resolved through the one
|
|
22
|
+
* function every other lowering resolves operands with. Reading them back this
|
|
23
|
+
* way is what makes `ref={this.a.b}` work for free and what makes
|
|
24
|
+
* `ref={someExpression}` refuse by name instead of compiling into a write
|
|
25
|
+
* nobody can find.
|
|
26
|
+
*
|
|
27
|
+
* The get itself stays lowered. It is a real evaluation the source performed,
|
|
28
|
+
* its value is dead afterwards, and suppressing it from here would mean this
|
|
29
|
+
* plugin reaching into an operation the core owns.
|
|
30
|
+
*/
|
|
31
|
+
export const lowerGeaElementRef = (ctx, block, lineage, node, key, value) => {
|
|
32
|
+
if (key.source.kind !== 'constant' || key.source.text !== geaRefAttributeName)
|
|
33
|
+
return false;
|
|
34
|
+
if (value.source.kind !== 'result') {
|
|
35
|
+
throw new IrLoweringBlockedError(`a "${geaRefAttributeName}" attribute must name a property to store the node in; this one names ` +
|
|
36
|
+
`a ${value.source.kind} operand, which designates no slot`);
|
|
37
|
+
}
|
|
38
|
+
const designator = ctx.graph.operations.get(operationOfResult(value.source.result));
|
|
39
|
+
if (!designator || designator.family !== 'property' || designator.internalMethod !== 'get') {
|
|
40
|
+
throw new IrLoweringBlockedError(`a "${geaRefAttributeName}" attribute must name a property to store the node in; this one names ` +
|
|
41
|
+
`the result of ${designator ? `a ${designator.family} operation` : 'an operation this body did not lower'}`);
|
|
42
|
+
}
|
|
43
|
+
ctx.builder.set(block, lineage, resolveRequiredOperand(ctx, block, lineage, namedOperand(designator, 'receiver')), resolveRequiredOperand(ctx, block, lineage, namedOperand(designator, 'key')), node, true, null);
|
|
44
|
+
return true;
|
|
45
|
+
};
|