@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,346 @@
|
|
|
1
|
+
import { operandOf } from '../../semantics/model/operands.js';
|
|
2
|
+
/**
|
|
3
|
+
* Split a component's template root into static structure and dynamic slots.
|
|
4
|
+
*
|
|
5
|
+
* `root` must be the `ElementOperation` a `template()` body's JSX evaluates to
|
|
6
|
+
* -- the caller is the one that knows which operation that is (it resolved the
|
|
7
|
+
* component's render member and found the operation its body publishes); this
|
|
8
|
+
* function only knows how to walk one, given the graph it belongs to.
|
|
9
|
+
*/
|
|
10
|
+
export const analyzeTemplate = (root, graph) => {
|
|
11
|
+
// A fragment has no single element to anchor a childNodes-index walk on --
|
|
12
|
+
// gea handles this by wrapping the whole thing in a synthetic
|
|
13
|
+
// `<span style="display:contents">`, which is a real DOM decision (an extra
|
|
14
|
+
// node, a real style) that belongs to whoever builds DOM, not to an
|
|
15
|
+
// analysis that only describes what the program wrote. A bare component
|
|
16
|
+
// root (`template() { return <Other/> }`) has the identical problem for the
|
|
17
|
+
// identical reason: there is no host element in the program's own JSX for
|
|
18
|
+
// this analysis to describe as the root, only a mount. Both are refused
|
|
19
|
+
// rather than silently fabricating the wrapper gea would insert.
|
|
20
|
+
if (root.form !== 'intrinsic') {
|
|
21
|
+
return {
|
|
22
|
+
kind: 'blocked',
|
|
23
|
+
reason: `the template root is a "${root.form}" element, not an intrinsic one; this analysis anchors every slot's walk on a ` +
|
|
24
|
+
"single host element in the program's own JSX and refuses to fabricate a wrapper for a root that has none"
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
const slots = [];
|
|
28
|
+
const built = buildStaticElement(root, graph, slots, [], []);
|
|
29
|
+
if (built.kind === 'blocked')
|
|
30
|
+
return built;
|
|
31
|
+
return { kind: 'ok', root: built.element, slots };
|
|
32
|
+
};
|
|
33
|
+
/** The operation that published `resultId`, or `null` when the graph has no producer for it (an upstream census block). */
|
|
34
|
+
const producingOperation = (graph, resultId) => {
|
|
35
|
+
const owner = graph.results.get(resultId);
|
|
36
|
+
if (owner === undefined)
|
|
37
|
+
return null;
|
|
38
|
+
return graph.operations.get(owner) ?? null;
|
|
39
|
+
};
|
|
40
|
+
/** The operation an operand's value comes from, or `null` when the operand is not a `result` citation. */
|
|
41
|
+
const operandProducer = (graph, operand) => operand.source.kind === 'result' ? producingOperation(graph, operand.source.result) : null;
|
|
42
|
+
/**
|
|
43
|
+
* Whether `operand` is JSX-shaped or an absent literal -- the same test
|
|
44
|
+
* gea's `isJsxOrNullish` applies to a ternary/logical branch to decide
|
|
45
|
+
* whether the whole expression is a *conditional element slot* rather than an
|
|
46
|
+
* ordinary reactive value. An element-family operand is a real JSX
|
|
47
|
+
* construction (an intrinsic, a component mount, or even a fragment -- any of
|
|
48
|
+
* which needs a branch-specific sub-template this analysis does not build);
|
|
49
|
+
* `null` and `undefined` are the other branches a program commonly writes for
|
|
50
|
+
* "render nothing."
|
|
51
|
+
* Both absent values are read from the operand's own literal form rather than
|
|
52
|
+
* from its text, because the string `'null'` spells itself exactly the way the
|
|
53
|
+
* language's `null` does.
|
|
54
|
+
*/
|
|
55
|
+
const isJsxOrNullish = (graph, operand) => {
|
|
56
|
+
if (operand.source.kind === 'constant')
|
|
57
|
+
return operand.source.literal === 'null' || operand.source.literal === 'undefined';
|
|
58
|
+
const producer = operandProducer(graph, operand);
|
|
59
|
+
return producer !== null && producer.family === 'element';
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* Whether `operand`'s own checked type is an array.
|
|
63
|
+
*
|
|
64
|
+
* This is how a list child is recognized -- not by looking for a `.map()`
|
|
65
|
+
* call, which is a syntax shape this compiler's architecture deliberately
|
|
66
|
+
* does not carry as identity (an `InvocationOperation` records *that* a call
|
|
67
|
+
* happened and what its target proof is, never a method name to pattern-match
|
|
68
|
+
* against). An array-typed value cannot occupy a single reactive DOM
|
|
69
|
+
* position no matter how it was produced -- `.map()`, `.filter()`, a plain
|
|
70
|
+
* array literal, a getter -- so reading the operand's own structural type is
|
|
71
|
+
* both simpler and more complete than trying to special-case one spelling of
|
|
72
|
+
* "produces an array."
|
|
73
|
+
*/
|
|
74
|
+
const isArrayTyped = (graph, operand) => {
|
|
75
|
+
const structuralType = graph.structuralTypes.get(operand.type);
|
|
76
|
+
return structuralType !== undefined && structuralType.shape.kind === 'array';
|
|
77
|
+
};
|
|
78
|
+
/**
|
|
79
|
+
* Classify one child position. A dynamic position is any operand whose source
|
|
80
|
+
* is not `constant` -- constant text is static, everything else needs a
|
|
81
|
+
* closer look at what actually produces it before this analysis can say
|
|
82
|
+
* whether it is describable at all.
|
|
83
|
+
*/
|
|
84
|
+
const classifyChild = (graph, operand) => {
|
|
85
|
+
if (operand.source.kind === 'constant')
|
|
86
|
+
return { kind: 'static-text', text: operand.source.text };
|
|
87
|
+
if (operand.source.kind !== 'result') {
|
|
88
|
+
return {
|
|
89
|
+
kind: 'refuse',
|
|
90
|
+
reason: `a child operand of source kind "${operand.source.kind}" names no value this analysis can place in the tree`
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
const producer = producingOperation(graph, operand.source.result);
|
|
94
|
+
if (producer === null) {
|
|
95
|
+
return {
|
|
96
|
+
kind: 'refuse',
|
|
97
|
+
reason: 'the child result has no producing operation in the graph, which means an upstream producer blocked it'
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
if (producer.family === 'element') {
|
|
101
|
+
// A spread child (`{...children}`) is already refused at the census level
|
|
102
|
+
// -- `childrenOf` in semantics/normalize/producers/jsx.ts blocks it before
|
|
103
|
+
// an operation ever publishes -- so it never reaches here as a citable
|
|
104
|
+
// result; only a fragment child needs handling of its own.
|
|
105
|
+
if (producer.form === 'fragment') {
|
|
106
|
+
return {
|
|
107
|
+
kind: 'refuse',
|
|
108
|
+
reason: "a fragment child splices its own children into the parent's walk at the same depth, which needs renumbering every " +
|
|
109
|
+
'sibling walk after it; this analysis does not perform that renumbering'
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
return producer.form === 'intrinsic' ? { kind: 'static-element', operation: producer } : { kind: 'mount', operation: producer };
|
|
113
|
+
}
|
|
114
|
+
if (isArrayTyped(graph, operand)) {
|
|
115
|
+
return { kind: 'refuse', reason: 'an array-typed child needs per-item keyed reconciliation, which this analysis does not build' };
|
|
116
|
+
}
|
|
117
|
+
// A ternary in child position is only a *conditional element* -- the shape
|
|
118
|
+
// this analysis refuses -- when at least one branch is itself JSX (or the
|
|
119
|
+
// `null` a program writes for "nothing"). `cond ? 'a' : 'b'` is an ordinary
|
|
120
|
+
// computed string and is left as a ordinary reactive text slot below,
|
|
121
|
+
// exactly as gea's own `isJsxOrNullish` gate distinguishes the two.
|
|
122
|
+
if (producer.family === 'computation' && producer.form === 'conditional') {
|
|
123
|
+
const consequent = operandOf(producer, 'consequent');
|
|
124
|
+
const alternate = operandOf(producer, 'alternate');
|
|
125
|
+
const branchIsElement = (consequent !== undefined && isJsxOrNullish(graph, consequent)) || (alternate !== undefined && isJsxOrNullish(graph, alternate));
|
|
126
|
+
if (branchIsElement) {
|
|
127
|
+
return {
|
|
128
|
+
kind: 'refuse',
|
|
129
|
+
reason: 'a conditional child with an element branch needs branch-specific sub-templates this analysis does not build'
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
// Same distinction for `cond && <X/>` / `cond && items.map(...)`: only the
|
|
134
|
+
// right-hand branch matters (the left is the guard, never itself rendered),
|
|
135
|
+
// and it is refused only when that branch is an element or a list.
|
|
136
|
+
if (producer.family === 'computation' && producer.form === 'logical') {
|
|
137
|
+
const right = operandOf(producer, 'right');
|
|
138
|
+
const guardsElementOrList = right !== undefined && (isJsxOrNullish(graph, right) || isArrayTyped(graph, right));
|
|
139
|
+
if (guardsElementOrList) {
|
|
140
|
+
return {
|
|
141
|
+
kind: 'refuse',
|
|
142
|
+
reason: 'a short-circuit child guarding an element or list branch needs a conditional/list sub-template this analysis does not build'
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
return { kind: 'dynamic-text' };
|
|
147
|
+
};
|
|
148
|
+
/**
|
|
149
|
+
* Build one static element node, recording every dynamic slot it or its
|
|
150
|
+
* static-element descendants own into `slots` (mutated in place -- this is
|
|
151
|
+
* the function's own scratch accumulator, not anything the caller handed in,
|
|
152
|
+
* so it stays consistent with "no mutation of anything given").
|
|
153
|
+
*
|
|
154
|
+
* Called only with `operation.form === 'intrinsic'`: `analyzeTemplate` checks
|
|
155
|
+
* the root before the first call, and `classifyChild` only ever routes a
|
|
156
|
+
* *recursive* call here for a child it classified `'static-element'`, which
|
|
157
|
+
* by construction is the `form === 'intrinsic'` branch.
|
|
158
|
+
*
|
|
159
|
+
* Attributes are recorded before children, and children are walked in source
|
|
160
|
+
* order with a nested static element's own attributes and children recorded
|
|
161
|
+
* immediately on recursion -- so slot `index` assignment is a plain pre-order
|
|
162
|
+
* walk of the tree, exactly matching the order gea's `emitElement` visits an
|
|
163
|
+
* element's attributes then its children.
|
|
164
|
+
*/
|
|
165
|
+
const buildStaticElement = (operation, graph, slots, walk, walkKinds) => {
|
|
166
|
+
const tagOperand = operandOf(operation, 'tag', 0);
|
|
167
|
+
if (tagOperand === undefined || tagOperand.source.kind !== 'constant') {
|
|
168
|
+
return { kind: 'blocked', reason: 'an intrinsic element with no constant tag operand is not one this analysis can name statically' };
|
|
169
|
+
}
|
|
170
|
+
const attributes = [];
|
|
171
|
+
const propKeys = operation.operands.filter((candidate) => candidate.role === 'prop-key').sort((a, b) => a.ordinal - b.ordinal);
|
|
172
|
+
for (const keyOperand of propKeys) {
|
|
173
|
+
if (keyOperand.source.kind !== 'constant') {
|
|
174
|
+
return { kind: 'blocked', reason: 'a computed attribute key is not one this analysis can name statically' };
|
|
175
|
+
}
|
|
176
|
+
const valueOperand = operandOf(operation, 'prop-value', keyOperand.ordinal);
|
|
177
|
+
if (valueOperand === undefined) {
|
|
178
|
+
return { kind: 'blocked', reason: `attribute "${keyOperand.source.text}" has no paired value operand` };
|
|
179
|
+
}
|
|
180
|
+
if (valueOperand.source.kind === 'constant') {
|
|
181
|
+
attributes.push({ name: keyOperand.source.text, value: valueOperand.source.text });
|
|
182
|
+
continue;
|
|
183
|
+
}
|
|
184
|
+
if (valueOperand.source.kind !== 'result') {
|
|
185
|
+
return {
|
|
186
|
+
kind: 'blocked',
|
|
187
|
+
reason: `attribute "${keyOperand.source.text}" has a value of source kind "${valueOperand.source.kind}", which this analysis does not describe`
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
slots.push({
|
|
191
|
+
index: slots.length,
|
|
192
|
+
kind: classifyAttrKind(keyOperand.source.text),
|
|
193
|
+
walk: [...walk],
|
|
194
|
+
walkKinds: [...walkKinds],
|
|
195
|
+
attributeName: keyOperand.source.text,
|
|
196
|
+
operand: valueOperand
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
const children = [];
|
|
200
|
+
const childOperands = operation.operands.filter((candidate) => candidate.role === 'child').sort((a, b) => a.ordinal - b.ordinal);
|
|
201
|
+
let childIndex = 0;
|
|
202
|
+
let elementIndex = 0;
|
|
203
|
+
for (const childOperand of childOperands) {
|
|
204
|
+
const classification = classifyChild(graph, childOperand);
|
|
205
|
+
if (classification.kind === 'refuse')
|
|
206
|
+
return { kind: 'blocked', reason: classification.reason };
|
|
207
|
+
if (classification.kind === 'static-text') {
|
|
208
|
+
// A text node is a real childNodes entry but never an element, so it
|
|
209
|
+
// advances childIndex for any slot that follows it without advancing
|
|
210
|
+
// elementIndex.
|
|
211
|
+
children.push({ kind: 'text', text: classification.text });
|
|
212
|
+
childIndex += 1;
|
|
213
|
+
continue;
|
|
214
|
+
}
|
|
215
|
+
const childWalk = [...walk, childIndex];
|
|
216
|
+
if (classification.kind === 'static-element') {
|
|
217
|
+
const nested = buildStaticElement(classification.operation, graph, slots, childWalk, [...walkKinds, { elem: elementIndex }]);
|
|
218
|
+
if (nested.kind === 'blocked')
|
|
219
|
+
return nested;
|
|
220
|
+
children.push(nested.element);
|
|
221
|
+
elementIndex += 1;
|
|
222
|
+
childIndex += 1;
|
|
223
|
+
continue;
|
|
224
|
+
}
|
|
225
|
+
// 'mount' and 'dynamic-text' both occupy a non-element childNodes
|
|
226
|
+
// position (a mounted component has no element of its own in *this*
|
|
227
|
+
// template -- its own template is a separate analysis the caller runs on
|
|
228
|
+
// its own root), so both advance childIndex but not elementIndex, and
|
|
229
|
+
// both record `{child: childIndex}` as their final walkKinds step.
|
|
230
|
+
slots.push({
|
|
231
|
+
index: slots.length,
|
|
232
|
+
kind: classification.kind === 'mount' ? 'mount' : 'text',
|
|
233
|
+
walk: childWalk,
|
|
234
|
+
walkKinds: [...walkKinds, { child: childIndex }],
|
|
235
|
+
attributeName: null,
|
|
236
|
+
operand: childOperand
|
|
237
|
+
});
|
|
238
|
+
children.push({ kind: 'anchor', slotIndex: slots.length - 1 });
|
|
239
|
+
childIndex += 1;
|
|
240
|
+
}
|
|
241
|
+
return { kind: 'ok', element: { kind: 'element', tag: tagOperand.source.text, attributes, children } };
|
|
242
|
+
};
|
|
243
|
+
/**
|
|
244
|
+
* gea's own DOM event vocabulary (`packages/vite-plugin-gea/src/utils/events.ts`,
|
|
245
|
+
* `EVENT_NAMES`): bare event names a program may write directly (`click`,
|
|
246
|
+
* `input`, ...) as well as the conventional `on*` prefix form. This table,
|
|
247
|
+
* like `classifyAttrKind` itself, is library policy -- a fact about what gea
|
|
248
|
+
* chose to call its events, not a fact this compiler's semantic graph states.
|
|
249
|
+
*/
|
|
250
|
+
const EVENT_ATTRIBUTE_NAMES = new Set([
|
|
251
|
+
'click',
|
|
252
|
+
'dblclick',
|
|
253
|
+
'mousedown',
|
|
254
|
+
'mouseup',
|
|
255
|
+
'mouseover',
|
|
256
|
+
'mouseout',
|
|
257
|
+
'mousemove',
|
|
258
|
+
'mouseenter',
|
|
259
|
+
'mouseleave',
|
|
260
|
+
'contextmenu',
|
|
261
|
+
'keydown',
|
|
262
|
+
'keyup',
|
|
263
|
+
'keypress',
|
|
264
|
+
'focus',
|
|
265
|
+
'blur',
|
|
266
|
+
'input',
|
|
267
|
+
'change',
|
|
268
|
+
'submit',
|
|
269
|
+
'scroll',
|
|
270
|
+
'touchstart',
|
|
271
|
+
'touchmove',
|
|
272
|
+
'touchend',
|
|
273
|
+
'tap',
|
|
274
|
+
'longTap',
|
|
275
|
+
'swipeRight',
|
|
276
|
+
'swipeUp',
|
|
277
|
+
'swipeLeft',
|
|
278
|
+
'swipeDown',
|
|
279
|
+
'drag',
|
|
280
|
+
'dragstart',
|
|
281
|
+
'dragend',
|
|
282
|
+
'dragover',
|
|
283
|
+
'dragleave',
|
|
284
|
+
'drop',
|
|
285
|
+
'pointerdown',
|
|
286
|
+
'pointerup',
|
|
287
|
+
'pointermove',
|
|
288
|
+
'pointerenter',
|
|
289
|
+
'pointerleave',
|
|
290
|
+
'pointerover',
|
|
291
|
+
'pointerout',
|
|
292
|
+
'pointercancel',
|
|
293
|
+
'resize',
|
|
294
|
+
'reset',
|
|
295
|
+
'wheel',
|
|
296
|
+
'animationstart',
|
|
297
|
+
'animationend',
|
|
298
|
+
'animationiteration',
|
|
299
|
+
'transitionstart',
|
|
300
|
+
'transitionend',
|
|
301
|
+
'transitionrun',
|
|
302
|
+
'transitioncancel'
|
|
303
|
+
]);
|
|
304
|
+
/** Attribute names gea reflects as an IDL boolean property rather than a string attribute. */
|
|
305
|
+
const BOOLEAN_ATTRIBUTE_NAMES = new Set([
|
|
306
|
+
'disabled',
|
|
307
|
+
'checked',
|
|
308
|
+
'readonly',
|
|
309
|
+
'readOnly',
|
|
310
|
+
'hidden',
|
|
311
|
+
'required',
|
|
312
|
+
'autofocus',
|
|
313
|
+
'multiple',
|
|
314
|
+
'selected',
|
|
315
|
+
'open',
|
|
316
|
+
'indeterminate',
|
|
317
|
+
'contenteditable',
|
|
318
|
+
'contentEditable'
|
|
319
|
+
]);
|
|
320
|
+
/**
|
|
321
|
+
* gea's attribute-name -> slot-kind table (mirrors `classifyAttrKind` in
|
|
322
|
+
* `packages/vite-plugin-gea/src/closure-codegen/generator/generator-attrs.ts`).
|
|
323
|
+
* See the `AttributeSlotKind` doc comment above for why this policy belongs
|
|
324
|
+
* in this file rather than in the core.
|
|
325
|
+
*/
|
|
326
|
+
const classifyAttrKind = (name) => {
|
|
327
|
+
if (EVENT_ATTRIBUTE_NAMES.has(name))
|
|
328
|
+
return 'event';
|
|
329
|
+
if (name.startsWith('on') && name.length > 2)
|
|
330
|
+
return 'event';
|
|
331
|
+
if (name === 'class' || name === 'className')
|
|
332
|
+
return 'class';
|
|
333
|
+
if (name === 'style')
|
|
334
|
+
return 'style';
|
|
335
|
+
if (name === 'value')
|
|
336
|
+
return 'value';
|
|
337
|
+
if (name === 'visible')
|
|
338
|
+
return 'bool';
|
|
339
|
+
if (name === 'ref')
|
|
340
|
+
return 'ref';
|
|
341
|
+
if (name === 'dangerouslySetInnerHTML')
|
|
342
|
+
return 'html';
|
|
343
|
+
if (BOOLEAN_ATTRIBUTE_NAMES.has(name))
|
|
344
|
+
return 'bool';
|
|
345
|
+
return 'attr';
|
|
346
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The registration block, as one C++ statement block.
|
|
3
|
+
*
|
|
4
|
+
* A block rather than a free function so it can be dropped into either prelude
|
|
5
|
+
* form -- the static-initialization object a single-app binary gets, or the
|
|
6
|
+
* named `<prefix>_register_styles()` a resident build calls when its app
|
|
7
|
+
* starts -- without either form having to know what is in it.
|
|
8
|
+
*/
|
|
9
|
+
export declare const geaUserAgentStyleSheet: string;
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* gea's user-agent stylesheet.
|
|
3
|
+
*
|
|
4
|
+
* The engine has no default stylesheet. `Document::createElement(tag)`
|
|
5
|
+
* (`core/packages/engine/ui/document.cpp`) maps a handful of tags to typed
|
|
6
|
+
* creators, stamps the tag name, and stops -- so a `<p>` and a `<div>` reach
|
|
7
|
+
* layout with byte-identical style state. Everything a browser's UA sheet would
|
|
8
|
+
* say about a tag has to be said by somebody else, and in v1 that somebody is
|
|
9
|
+
* the compiler: `intrinsicStyleLines` in the gea plugin's
|
|
10
|
+
* `cpp-template-renderer.ts` emits `Tree::setDefaultStyle` calls next to the
|
|
11
|
+
* node it just built.
|
|
12
|
+
*
|
|
13
|
+
* v2 emitted none of them, and the visible result was the `typography` app's
|
|
14
|
+
* intro paragraph: `<p>` + three `<span>`s rendered as narrow columns of one
|
|
15
|
+
* character each instead of a line of prose. The stylesheet was NOT the
|
|
16
|
+
* difference -- `gea-style-registration.cppfrag` is produced by the shared
|
|
17
|
+
* build pipeline and is byte-identical between the two compilers -- and neither
|
|
18
|
+
* were the tags: v2 spells `gea::jsx::create<NodeHandle>("span")` and the
|
|
19
|
+
* engine's `isInlineLevelTag` recognises it. What was missing was one bit.
|
|
20
|
+
*
|
|
21
|
+
* `LayoutNodePass::resolveRowDirection` (`ui/layout.cpp`) already builds the
|
|
22
|
+
* inline formatting context: a plain block whose in-flow children are all
|
|
23
|
+
* inline-level flows them on a ROW, the way CSS says. But the row it hands to
|
|
24
|
+
* `FlexLayoutPass` is only allowed to break into lines when
|
|
25
|
+
* `node.style.flex_wrap` is set, and nothing sets it -- so every inline run
|
|
26
|
+
* landed on one unbreakable line, each item shrunk to a sliver. v1 never sees
|
|
27
|
+
* this because it writes `display:flex / flex-direction:row / flex-wrap:wrap`
|
|
28
|
+
* onto exactly those containers. `flex-wrap` is the whole of the fix; the other
|
|
29
|
+
* two only restate what `resolveRowDirection` already worked out, and stating
|
|
30
|
+
* `display:flex` here would be actively wrong -- it would make a `<span>`
|
|
31
|
+
* non-inline-level (`isInlineLevelNode` rejects a flex node), which is the one
|
|
32
|
+
* thing that would stop its parent forming an inline row at all.
|
|
33
|
+
*
|
|
34
|
+
* Expressed as CSS rather than as per-node default styles because that is what
|
|
35
|
+
* it is -- and because the cascade already ranks it correctly. The engine
|
|
36
|
+
* implements real specificity (`computeRuleSpecificity`, `ui/style.cpp`: id
|
|
37
|
+
* 10000 / class 100 / element 1, ties by source order), so an element-selector
|
|
38
|
+
* rule registered before the app's own tape loses to every class rule the app
|
|
39
|
+
* writes and to the app's own element rules. That is the same "lowest priority,
|
|
40
|
+
* overridable by anything the author says" tier `setDefaultStyle` occupies in
|
|
41
|
+
* v1, without the compiler having to reach into a node it did not build.
|
|
42
|
+
*
|
|
43
|
+
* The tag set and the heading sizes are v1's, verbatim (`isTextNodeTag` and
|
|
44
|
+
* `headingDefaultFontSize`), because the two compilers have to put the same
|
|
45
|
+
* pixels on the same panel.
|
|
46
|
+
*/
|
|
47
|
+
const inlineContainerTags = ['p', 'span', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6'];
|
|
48
|
+
/** v1's `headingDefaultFontSize`, in px. */
|
|
49
|
+
const headingFontSizes = [
|
|
50
|
+
['h1', 34],
|
|
51
|
+
['h2', 28],
|
|
52
|
+
['h3', 24],
|
|
53
|
+
['h4', 20],
|
|
54
|
+
['h5', 18],
|
|
55
|
+
['h6', 16]
|
|
56
|
+
];
|
|
57
|
+
const cppTagList = (tags) => tags.map((tag) => `"${tag}"`).join(', ');
|
|
58
|
+
const cppHeadingList = (sizes) => sizes.map(([tag, size]) => `{"${tag}", ${size}}`).join(', ');
|
|
59
|
+
/**
|
|
60
|
+
* The registration block, as one C++ statement block.
|
|
61
|
+
*
|
|
62
|
+
* A block rather than a free function so it can be dropped into either prelude
|
|
63
|
+
* form -- the static-initialization object a single-app binary gets, or the
|
|
64
|
+
* named `<prefix>_register_styles()` a resident build calls when its app
|
|
65
|
+
* starts -- without either form having to know what is in it.
|
|
66
|
+
*/
|
|
67
|
+
export const geaUserAgentStyleSheet = [
|
|
68
|
+
'// gea user-agent defaults: the tag-driven styles the engine has no sheet for.',
|
|
69
|
+
"// Registered BEFORE the app's own rules so equal-specificity ties go to the app.",
|
|
70
|
+
'{',
|
|
71
|
+
' namespace __gea_ua_ns = gea::embedded::ui;',
|
|
72
|
+
' auto &__gea_ua_sheet = __gea_ua_ns::StyleSheet::instance();',
|
|
73
|
+
' __gea_ua_sheet.beginRuleRegistrationBatch();',
|
|
74
|
+
' // An inline formatting context wraps. `resolveRowDirection` (ui/layout.cpp)',
|
|
75
|
+
' // already flows an all-inline block on a row; without this the row cannot',
|
|
76
|
+
' // break, and a paragraph of text and spans renders as slivered columns.',
|
|
77
|
+
` static const char *const __gea_ua_inline_tags[] = {${cppTagList(inlineContainerTags)}};`,
|
|
78
|
+
' for (const char *const __gea_ua_tag : __gea_ua_inline_tags) {',
|
|
79
|
+
' __gea_ua_sheet.registerStaticPropertyRule(',
|
|
80
|
+
' __gea_ua_ns::StaticStyleSelectorKind::Element, __gea_ua_tag, __gea_ua_ns::Property::FlexWrap, 1);',
|
|
81
|
+
' }',
|
|
82
|
+
" // Heading sizes, v1's `headingDefaultFontSize` verbatim.",
|
|
83
|
+
' static const struct { const char *tag; float size; } __gea_ua_headings[] = {',
|
|
84
|
+
` ${cppHeadingList(headingFontSizes)}`,
|
|
85
|
+
' };',
|
|
86
|
+
' for (const auto &__gea_ua_heading : __gea_ua_headings) {',
|
|
87
|
+
' __gea_ua_sheet.registerStaticLengthRule(',
|
|
88
|
+
' __gea_ua_ns::StaticStyleSelectorKind::Element, __gea_ua_heading.tag,',
|
|
89
|
+
' __gea_ua_ns::StaticStyleLengthProperty::FontSize, __gea_ua_ns::StaticStyleLengthUnit::Px,',
|
|
90
|
+
' __gea_ua_heading.size);',
|
|
91
|
+
' }',
|
|
92
|
+
' __gea_ua_sheet.endRuleRegistrationBatch();',
|
|
93
|
+
'}'
|
|
94
|
+
].join('\n');
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { CompilerPlugin } from './model.js';
|
|
2
|
+
/**
|
|
3
|
+
* The plugins this build installs.
|
|
4
|
+
*
|
|
5
|
+
* Empty would be a real answer, and the one a compiler with no library in front
|
|
6
|
+
* of it should give: a program whose JSX names a value is then refused by name,
|
|
7
|
+
* at preflight, instead of being lowered by a guess about what that value
|
|
8
|
+
* meant. gea is installed here because gea is what this build compiles for,
|
|
9
|
+
* and apple-native beside it because the same corpus contains programs written
|
|
10
|
+
* against AppKit rather than against gea's own element tree. Two hosts, not one
|
|
11
|
+
* host with a second mode: each states its own type table, and a program that
|
|
12
|
+
* names neither is unaffected by both.
|
|
13
|
+
*
|
|
14
|
+
* native-webgl-angle is the third, and the one that shows how little a host has
|
|
15
|
+
* to state when the compiler can read the library itself: it names 127 free
|
|
16
|
+
* functions and no types at all, because the WebGL context a three.js program
|
|
17
|
+
* holds is a TypeScript class this compiler compiles. See `webgl/plugin.ts`.
|
|
18
|
+
*/
|
|
19
|
+
export declare const installedPlugins: readonly CompilerPlugin[];
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { applePlugin } from './apple/plugin.js';
|
|
2
|
+
import { geaPlugin } from './gea/plugin.js';
|
|
3
|
+
import { webglPlugin } from './webgl/plugin.js';
|
|
4
|
+
/**
|
|
5
|
+
* The plugins this build installs.
|
|
6
|
+
*
|
|
7
|
+
* Empty would be a real answer, and the one a compiler with no library in front
|
|
8
|
+
* of it should give: a program whose JSX names a value is then refused by name,
|
|
9
|
+
* at preflight, instead of being lowered by a guess about what that value
|
|
10
|
+
* meant. gea is installed here because gea is what this build compiles for,
|
|
11
|
+
* and apple-native beside it because the same corpus contains programs written
|
|
12
|
+
* against AppKit rather than against gea's own element tree. Two hosts, not one
|
|
13
|
+
* host with a second mode: each states its own type table, and a program that
|
|
14
|
+
* names neither is unaffected by both.
|
|
15
|
+
*
|
|
16
|
+
* native-webgl-angle is the third, and the one that shows how little a host has
|
|
17
|
+
* to state when the compiler can read the library itself: it names 127 free
|
|
18
|
+
* functions and no types at all, because the WebGL context a three.js program
|
|
19
|
+
* holds is a TypeScript class this compiler compiles. See `webgl/plugin.ts`.
|
|
20
|
+
*/
|
|
21
|
+
export const installedPlugins = [geaPlugin, applePlugin, webglPlugin];
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type CompilerPlugin } from './model.js';
|
|
2
|
+
/**
|
|
3
|
+
* Built-ins retain their order; explicit plugins follow in flag order. The
|
|
4
|
+
* compiler API owns capability and hook precedence. Duplicate module paths
|
|
5
|
+
* (including symlinks) load once; distinct definitions of one name fail.
|
|
6
|
+
*/
|
|
7
|
+
export declare const loadCliPlugins: (specifiers: readonly string[]) => Promise<readonly CompilerPlugin[]>;
|