@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.
Files changed (966) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +149 -0
  3. package/dist/cli-analyze.d.ts +1 -0
  4. package/dist/cli-analyze.js +61 -0
  5. package/dist/cli-coverage.d.ts +1 -0
  6. package/dist/cli-coverage.js +329 -0
  7. package/dist/cli-emit.d.ts +10 -0
  8. package/dist/cli-emit.js +398 -0
  9. package/dist/cli-module-graph.d.ts +18 -0
  10. package/dist/cli-module-graph.js +123 -0
  11. package/dist/cli-package-source.d.ts +5 -0
  12. package/dist/cli-package-source.js +116 -0
  13. package/dist/cli-project.d.ts +2 -0
  14. package/dist/cli-project.js +60 -0
  15. package/dist/cli.d.ts +2 -0
  16. package/dist/cli.js +199 -0
  17. package/dist/compiler.d.ts +228 -0
  18. package/dist/compiler.js +1029 -0
  19. package/dist/conversion/algebra.d.ts +218 -0
  20. package/dist/conversion/algebra.js +155 -0
  21. package/dist/conversion/build.d.ts +67 -0
  22. package/dist/conversion/build.js +1378 -0
  23. package/dist/conversion/derive.d.ts +37 -0
  24. package/dist/conversion/derive.js +260 -0
  25. package/dist/conversion/graph-validation.d.ts +8 -0
  26. package/dist/conversion/graph-validation.js +97 -0
  27. package/dist/conversion/native-callable-adapter.d.ts +13 -0
  28. package/dist/conversion/native-callable-adapter.js +53 -0
  29. package/dist/conversion/native-class-reference.d.ts +12 -0
  30. package/dist/conversion/native-class-reference.js +39 -0
  31. package/dist/conversion/native-payload-transport.d.ts +25 -0
  32. package/dist/conversion/native-payload-transport.js +33 -0
  33. package/dist/conversion/native-selection.d.ts +49 -0
  34. package/dist/conversion/native-selection.js +135 -0
  35. package/dist/conversion/native-sum.d.ts +42 -0
  36. package/dist/conversion/native-sum.js +115 -0
  37. package/dist/conversion/nodes.d.ts +55 -0
  38. package/dist/conversion/nodes.js +91 -0
  39. package/dist/conversion/operand-view.d.ts +14 -0
  40. package/dist/conversion/operand-view.js +20 -0
  41. package/dist/conversion/record-view.d.ts +157 -0
  42. package/dist/conversion/record-view.js +273 -0
  43. package/dist/conversion/registry.d.ts +217 -0
  44. package/dist/conversion/registry.js +1 -0
  45. package/dist/diagnostics/model.d.ts +76 -0
  46. package/dist/diagnostics/model.js +60 -0
  47. package/dist/diagnostics/sweep.d.ts +31 -0
  48. package/dist/diagnostics/sweep.js +112 -0
  49. package/dist/identity/ids.d.ts +179 -0
  50. package/dist/identity/ids.js +212 -0
  51. package/dist/ir/absent-class-arm.d.ts +48 -0
  52. package/dist/ir/absent-class-arm.js +157 -0
  53. package/dist/ir/borrow-effects.d.ts +23 -0
  54. package/dist/ir/borrow-effects.js +151 -0
  55. package/dist/ir/borrowed-call-arguments.d.ts +40 -0
  56. package/dist/ir/borrowed-call-arguments.js +117 -0
  57. package/dist/ir/build.d.ts +168 -0
  58. package/dist/ir/build.js +459 -0
  59. package/dist/ir/call-dispatch.d.ts +38 -0
  60. package/dist/ir/call-dispatch.js +502 -0
  61. package/dist/ir/call-entry.d.ts +142 -0
  62. package/dist/ir/call-entry.js +386 -0
  63. package/dist/ir/callable-class-flow.d.ts +27 -0
  64. package/dist/ir/callable-class-flow.js +1386 -0
  65. package/dist/ir/callable-field-slots.d.ts +22 -0
  66. package/dist/ir/callable-field-slots.js +166 -0
  67. package/dist/ir/callable-identity-demand.d.ts +52 -0
  68. package/dist/ir/callable-identity-demand.js +460 -0
  69. package/dist/ir/callable-member-candidates.d.ts +9 -0
  70. package/dist/ir/callable-member-candidates.js +39 -0
  71. package/dist/ir/callable-records.d.ts +21 -0
  72. package/dist/ir/callable-records.js +411 -0
  73. package/dist/ir/captures.d.ts +26 -0
  74. package/dist/ir/captures.js +335 -0
  75. package/dist/ir/certificate.d.ts +45 -0
  76. package/dist/ir/certificate.js +47 -0
  77. package/dist/ir/certify/carrier-keys.d.ts +73 -0
  78. package/dist/ir/certify/carrier-keys.js +221 -0
  79. package/dist/ir/certify/function-source.d.ts +4 -0
  80. package/dist/ir/certify/function-source.js +28 -0
  81. package/dist/ir/certify/has-property-key.d.ts +88 -0
  82. package/dist/ir/certify/has-property-key.js +116 -0
  83. package/dist/ir/certify/instanceof-key.d.ts +24 -0
  84. package/dist/ir/certify/instanceof-key.js +35 -0
  85. package/dist/ir/certify/property-access-keys.d.ts +172 -0
  86. package/dist/ir/certify/property-access-keys.js +291 -0
  87. package/dist/ir/certify/property-access.d.ts +3 -0
  88. package/dist/ir/certify/property-access.js +597 -0
  89. package/dist/ir/certify/runtime-helper.d.ts +3 -0
  90. package/dist/ir/certify/runtime-helper.js +326 -0
  91. package/dist/ir/certify/typeof-operand.d.ts +14 -0
  92. package/dist/ir/certify/typeof-operand.js +16 -0
  93. package/dist/ir/certify.d.ts +123 -0
  94. package/dist/ir/certify.js +481 -0
  95. package/dist/ir/class-evaluation.d.ts +26 -0
  96. package/dist/ir/class-evaluation.js +50 -0
  97. package/dist/ir/class-static-fields.d.ts +60 -0
  98. package/dist/ir/class-static-fields.js +108 -0
  99. package/dist/ir/construct-entry.d.ts +26 -0
  100. package/dist/ir/construct-entry.js +117 -0
  101. package/dist/ir/dead-values.d.ts +90 -0
  102. package/dist/ir/dead-values.js +184 -0
  103. package/dist/ir/deferral.d.ts +99 -0
  104. package/dist/ir/deferral.js +409 -0
  105. package/dist/ir/dense-loops.d.ts +230 -0
  106. package/dist/ir/dense-loops.js +697 -0
  107. package/dist/ir/dominance.d.ts +82 -0
  108. package/dist/ir/dominance.js +268 -0
  109. package/dist/ir/emission-representations.d.ts +71 -0
  110. package/dist/ir/emission-representations.js +350 -0
  111. package/dist/ir/facts.d.ts +218 -0
  112. package/dist/ir/facts.js +181 -0
  113. package/dist/ir/fixed-data-definition.d.ts +19 -0
  114. package/dist/ir/fixed-data-definition.js +49 -0
  115. package/dist/ir/generator-split.d.ts +38 -0
  116. package/dist/ir/generator-split.js +329 -0
  117. package/dist/ir/hoist.d.ts +55 -0
  118. package/dist/ir/hoist.js +375 -0
  119. package/dist/ir/instantiation.d.ts +61 -0
  120. package/dist/ir/instantiation.js +137 -0
  121. package/dist/ir/integer-storage.d.ts +170 -0
  122. package/dist/ir/integer-storage.js +822 -0
  123. package/dist/ir/integers.d.ts +161 -0
  124. package/dist/ir/integers.js +539 -0
  125. package/dist/ir/integrity-restrictions.d.ts +50 -0
  126. package/dist/ir/integrity-restrictions.js +118 -0
  127. package/dist/ir/local-iterators.d.ts +4 -0
  128. package/dist/ir/local-iterators.js +27 -0
  129. package/dist/ir/lower-allocation.d.ts +4 -0
  130. package/dist/ir/lower-allocation.js +325 -0
  131. package/dist/ir/lower-completion.d.ts +15 -0
  132. package/dist/ir/lower-completion.js +25 -0
  133. package/dist/ir/lower-destructuring.d.ts +5 -0
  134. package/dist/ir/lower-destructuring.js +693 -0
  135. package/dist/ir/lower-element.d.ts +29 -0
  136. package/dist/ir/lower-element.js +111 -0
  137. package/dist/ir/lower-exceptions.d.ts +47 -0
  138. package/dist/ir/lower-exceptions.js +92 -0
  139. package/dist/ir/lower-flow.d.ts +137 -0
  140. package/dist/ir/lower-flow.js +600 -0
  141. package/dist/ir/lower-graph.d.ts +218 -0
  142. package/dist/ir/lower-graph.js +687 -0
  143. package/dist/ir/lower-invocation.d.ts +4 -0
  144. package/dist/ir/lower-invocation.js +514 -0
  145. package/dist/ir/lower-narrow.d.ts +53 -0
  146. package/dist/ir/lower-narrow.js +320 -0
  147. package/dist/ir/lower-operands.d.ts +272 -0
  148. package/dist/ir/lower-operands.js +461 -0
  149. package/dist/ir/lower-property.d.ts +21 -0
  150. package/dist/ir/lower-property.js +132 -0
  151. package/dist/ir/lower-protocol.d.ts +11 -0
  152. package/dist/ir/lower-protocol.js +118 -0
  153. package/dist/ir/lower-short-circuit.d.ts +41 -0
  154. package/dist/ir/lower-short-circuit.js +63 -0
  155. package/dist/ir/lower.d.ts +82 -0
  156. package/dist/ir/lower.js +1346 -0
  157. package/dist/ir/model.d.ts +1474 -0
  158. package/dist/ir/model.js +6 -0
  159. package/dist/ir/native-absent-property.d.ts +3 -0
  160. package/dist/ir/native-absent-property.js +13 -0
  161. package/dist/ir/native-array-transport.d.ts +7 -0
  162. package/dist/ir/native-array-transport.js +46 -0
  163. package/dist/ir/native-callable-bind.d.ts +9 -0
  164. package/dist/ir/native-callable-bind.js +30 -0
  165. package/dist/ir/native-carrier-predicate.d.ts +34 -0
  166. package/dist/ir/native-carrier-predicate.js +49 -0
  167. package/dist/ir/native-class-accessor.d.ts +18 -0
  168. package/dist/ir/native-class-accessor.js +52 -0
  169. package/dist/ir/native-class-construction.d.ts +16 -0
  170. package/dist/ir/native-class-construction.js +71 -0
  171. package/dist/ir/native-class-initialization.d.ts +15 -0
  172. package/dist/ir/native-class-initialization.js +56 -0
  173. package/dist/ir/native-class-origins.d.ts +13 -0
  174. package/dist/ir/native-class-origins.js +237 -0
  175. package/dist/ir/native-dictionary-transport.d.ts +6 -0
  176. package/dist/ir/native-dictionary-transport.js +37 -0
  177. package/dist/ir/native-enumeration.d.ts +14 -0
  178. package/dist/ir/native-enumeration.js +26 -0
  179. package/dist/ir/native-equality.d.ts +10 -0
  180. package/dist/ir/native-equality.js +18 -0
  181. package/dist/ir/native-field-owner.d.ts +37 -0
  182. package/dist/ir/native-field-owner.js +183 -0
  183. package/dist/ir/native-fixed-layout.d.ts +41 -0
  184. package/dist/ir/native-fixed-layout.js +232 -0
  185. package/dist/ir/native-host-construction.d.ts +53 -0
  186. package/dist/ir/native-host-construction.js +62 -0
  187. package/dist/ir/native-key-query.d.ts +4 -0
  188. package/dist/ir/native-key-query.js +38 -0
  189. package/dist/ir/native-merge-transport.d.ts +25 -0
  190. package/dist/ir/native-merge-transport.js +71 -0
  191. package/dist/ir/native-record-index-transport.d.ts +11 -0
  192. package/dist/ir/native-record-index-transport.js +34 -0
  193. package/dist/ir/native-record-index.d.ts +12 -0
  194. package/dist/ir/native-record-index.js +27 -0
  195. package/dist/ir/native-reflect-field.d.ts +5 -0
  196. package/dist/ir/native-reflect-field.js +33 -0
  197. package/dist/ir/native-sequence-transport.d.ts +7 -0
  198. package/dist/ir/native-sequence-transport.js +53 -0
  199. package/dist/ir/numeric-intrinsics.d.ts +13 -0
  200. package/dist/ir/numeric-intrinsics.js +57 -0
  201. package/dist/ir/object-value-conversions.d.ts +20 -0
  202. package/dist/ir/object-value-conversions.js +50 -0
  203. package/dist/ir/physical-class-reflection.d.ts +9 -0
  204. package/dist/ir/physical-class-reflection.js +57 -0
  205. package/dist/ir/presence-proof.d.ts +42 -0
  206. package/dist/ir/presence-proof.js +490 -0
  207. package/dist/ir/program-facts.d.ts +106 -0
  208. package/dist/ir/program-facts.js +319 -0
  209. package/dist/ir/proven-branches.d.ts +16 -0
  210. package/dist/ir/proven-branches.js +219 -0
  211. package/dist/ir/queries.d.ts +41 -0
  212. package/dist/ir/queries.js +213 -0
  213. package/dist/ir/reflection-demand.d.ts +64 -0
  214. package/dist/ir/reflection-demand.js +1394 -0
  215. package/dist/ir/refusal.d.ts +43 -0
  216. package/dist/ir/refusal.js +28 -0
  217. package/dist/ir/shake.d.ts +37 -0
  218. package/dist/ir/shake.js +1078 -0
  219. package/dist/ir/static-callables.d.ts +11 -0
  220. package/dist/ir/static-callables.js +163 -0
  221. package/dist/ir/string-layout-reuse.d.ts +13 -0
  222. package/dist/ir/string-layout-reuse.js +39 -0
  223. package/dist/ir/string-length-reuse.d.ts +8 -0
  224. package/dist/ir/string-length-reuse.js +47 -0
  225. package/dist/ir/transfer.d.ts +78 -0
  226. package/dist/ir/transfer.js +270 -0
  227. package/dist/ir/type-query-results.d.ts +25 -0
  228. package/dist/ir/type-query-results.js +96 -0
  229. package/dist/ir/typed-property-access.d.ts +100 -0
  230. package/dist/ir/typed-property-access.js +161 -0
  231. package/dist/ir/verify.d.ts +19 -0
  232. package/dist/ir/verify.js +355 -0
  233. package/dist/plugins/apple/constructors.d.ts +112 -0
  234. package/dist/plugins/apple/constructors.js +217 -0
  235. package/dist/plugins/apple/host.d.ts +181 -0
  236. package/dist/plugins/apple/host.js +262 -0
  237. package/dist/plugins/apple/jsx.d.ts +2 -0
  238. package/dist/plugins/apple/jsx.js +293 -0
  239. package/dist/plugins/apple/members.d.ts +16 -0
  240. package/dist/plugins/apple/members.js +190 -0
  241. package/dist/plugins/apple/plugin.d.ts +2 -0
  242. package/dist/plugins/apple/plugin.js +156 -0
  243. package/dist/plugins/gea/component-classes.d.ts +25 -0
  244. package/dist/plugins/gea/component-classes.js +162 -0
  245. package/dist/plugins/gea/component-inline.d.ts +13 -0
  246. package/dist/plugins/gea/component-inline.js +532 -0
  247. package/dist/plugins/gea/constructors.d.ts +23 -0
  248. package/dist/plugins/gea/constructors.js +100 -0
  249. package/dist/plugins/gea/contract.d.ts +150 -0
  250. package/dist/plugins/gea/contract.js +195 -0
  251. package/dist/plugins/gea/element-ref.d.ts +31 -0
  252. package/dist/plugins/gea/element-ref.js +45 -0
  253. package/dist/plugins/gea/host.d.ts +520 -0
  254. package/dist/plugins/gea/host.js +762 -0
  255. package/dist/plugins/gea/lower.d.ts +6 -0
  256. package/dist/plugins/gea/lower.js +195 -0
  257. package/dist/plugins/gea/members.d.ts +22 -0
  258. package/dist/plugins/gea/members.js +221 -0
  259. package/dist/plugins/gea/plugin.d.ts +22 -0
  260. package/dist/plugins/gea/plugin.js +307 -0
  261. package/dist/plugins/gea/prelude.d.ts +78 -0
  262. package/dist/plugins/gea/prelude.js +153 -0
  263. package/dist/plugins/gea/producer.d.ts +5 -0
  264. package/dist/plugins/gea/producer.js +52 -0
  265. package/dist/plugins/gea/reactive-slots.d.ts +49 -0
  266. package/dist/plugins/gea/reactive-slots.js +578 -0
  267. package/dist/plugins/gea/render-bridge.d.ts +6 -0
  268. package/dist/plugins/gea/render-bridge.js +281 -0
  269. package/dist/plugins/gea/slots.d.ts +15 -0
  270. package/dist/plugins/gea/slots.js +36 -0
  271. package/dist/plugins/gea/template-analysis.d.ts +151 -0
  272. package/dist/plugins/gea/template-analysis.js +346 -0
  273. package/dist/plugins/gea/user-agent-styles.d.ts +9 -0
  274. package/dist/plugins/gea/user-agent-styles.js +94 -0
  275. package/dist/plugins/installed.d.ts +19 -0
  276. package/dist/plugins/installed.js +21 -0
  277. package/dist/plugins/load.d.ts +7 -0
  278. package/dist/plugins/load.js +207 -0
  279. package/dist/plugins/model.d.ts +735 -0
  280. package/dist/plugins/model.js +47 -0
  281. package/dist/plugins/webgl/host.d.ts +77 -0
  282. package/dist/plugins/webgl/host.js +162 -0
  283. package/dist/plugins/webgl/plugin.d.ts +40 -0
  284. package/dist/plugins/webgl/plugin.js +99 -0
  285. package/dist/preflight/obligations.d.ts +206 -0
  286. package/dist/preflight/obligations.js +36 -0
  287. package/dist/preflight/report.d.ts +20 -0
  288. package/dist/preflight/report.js +61 -0
  289. package/dist/preflight/run.d.ts +39 -0
  290. package/dist/preflight/run.js +403 -0
  291. package/dist/project-preparation.d.ts +33 -0
  292. package/dist/project-preparation.js +314 -0
  293. package/dist/projection/abi.d.ts +82 -0
  294. package/dist/projection/abi.js +349 -0
  295. package/dist/projection/apply-arguments.d.ts +12 -0
  296. package/dist/projection/apply-arguments.js +20 -0
  297. package/dist/projection/bindings.d.ts +250 -0
  298. package/dist/projection/bindings.js +340 -0
  299. package/dist/projection/callee.d.ts +196 -0
  300. package/dist/projection/callee.js +444 -0
  301. package/dist/projection/class-property-presence.d.ts +28 -0
  302. package/dist/projection/class-property-presence.js +58 -0
  303. package/dist/projection/class-prototype.d.ts +5 -0
  304. package/dist/projection/class-prototype.js +23 -0
  305. package/dist/projection/class-storage.d.ts +26 -0
  306. package/dist/projection/class-storage.js +236 -0
  307. package/dist/projection/classes.d.ts +283 -0
  308. package/dist/projection/classes.js +944 -0
  309. package/dist/projection/coercions.d.ts +20 -0
  310. package/dist/projection/coercions.js +33 -0
  311. package/dist/projection/dispatch.d.ts +167 -0
  312. package/dist/projection/dispatch.js +379 -0
  313. package/dist/projection/fields.d.ts +123 -0
  314. package/dist/projection/fields.js +383 -0
  315. package/dist/projection/instance-test.d.ts +78 -0
  316. package/dist/projection/instance-test.js +156 -0
  317. package/dist/projection/slots.d.ts +146 -0
  318. package/dist/projection/slots.js +663 -0
  319. package/dist/projection/synthesized-abi.d.ts +61 -0
  320. package/dist/projection/synthesized-abi.js +94 -0
  321. package/dist/representation/array-index.d.ts +14 -0
  322. package/dist/representation/array-index.js +17 -0
  323. package/dist/representation/callable-object.d.ts +3 -0
  324. package/dist/representation/callable-object.js +6 -0
  325. package/dist/representation/collections.d.ts +84 -0
  326. package/dist/representation/collections.js +139 -0
  327. package/dist/representation/derive.d.ts +159 -0
  328. package/dist/representation/derive.js +2546 -0
  329. package/dist/representation/difference.d.ts +30 -0
  330. package/dist/representation/difference.js +240 -0
  331. package/dist/representation/field-descriptor-policy.d.ts +19 -0
  332. package/dist/representation/field-descriptor-policy.js +39 -0
  333. package/dist/representation/function-constructor.d.ts +13 -0
  334. package/dist/representation/function-constructor.js +9 -0
  335. package/dist/representation/host-abi.d.ts +32 -0
  336. package/dist/representation/host-abi.js +97 -0
  337. package/dist/representation/host-templates.d.ts +67 -0
  338. package/dist/representation/host-templates.js +94 -0
  339. package/dist/representation/intersection.d.ts +84 -0
  340. package/dist/representation/intersection.js +149 -0
  341. package/dist/representation/literal-destination.d.ts +43 -0
  342. package/dist/representation/literal-destination.js +133 -0
  343. package/dist/representation/merge.d.ts +18 -0
  344. package/dist/representation/merge.js +83 -0
  345. package/dist/representation/model.d.ts +1160 -0
  346. package/dist/representation/model.js +1019 -0
  347. package/dist/representation/numeric-index.d.ts +13 -0
  348. package/dist/representation/numeric-index.js +29 -0
  349. package/dist/representation/object-shape.d.ts +109 -0
  350. package/dist/representation/object-shape.js +123 -0
  351. package/dist/representation/optional.d.ts +12 -0
  352. package/dist/representation/optional.js +87 -0
  353. package/dist/representation/plan.d.ts +60 -0
  354. package/dist/representation/plan.js +78 -0
  355. package/dist/representation/policies.d.ts +589 -0
  356. package/dist/representation/policies.js +107 -0
  357. package/dist/representation/primitive-domain.d.ts +1 -0
  358. package/dist/representation/primitive-domain.js +1 -0
  359. package/dist/representation/primitives.d.ts +44 -0
  360. package/dist/representation/primitives.js +78 -0
  361. package/dist/representation/publish.d.ts +49 -0
  362. package/dist/representation/publish.js +648 -0
  363. package/dist/representation/record-fields.d.ts +96 -0
  364. package/dist/representation/record-fields.js +116 -0
  365. package/dist/representation/template-object.d.ts +11 -0
  366. package/dist/representation/template-object.js +26 -0
  367. package/dist/representation/union.d.ts +30 -0
  368. package/dist/representation/union.js +324 -0
  369. package/dist/representation/value-records.d.ts +3 -0
  370. package/dist/representation/value-records.js +307 -0
  371. package/dist/representation/verify.d.ts +17 -0
  372. package/dist/representation/verify.js +221 -0
  373. package/dist/semantics/alias-this-field-declaration-transform.d.ts +4 -0
  374. package/dist/semantics/alias-this-field-declaration-transform.js +207 -0
  375. package/dist/semantics/ambient-type-realization-transform.d.ts +62 -0
  376. package/dist/semantics/ambient-type-realization-transform.js +168 -0
  377. package/dist/semantics/ambient.d.ts +24 -0
  378. package/dist/semantics/ambient.js +119 -0
  379. package/dist/semantics/borrowed-builtin-call-bind-source-transform.d.ts +4 -0
  380. package/dist/semantics/borrowed-builtin-call-bind-source-transform.js +341 -0
  381. package/dist/semantics/callable-origins.d.ts +46 -0
  382. package/dist/semantics/callable-origins.js +354 -0
  383. package/dist/semantics/class-alias.d.ts +7 -0
  384. package/dist/semantics/class-alias.js +37 -0
  385. package/dist/semantics/class-heritage.d.ts +34 -0
  386. package/dist/semantics/class-heritage.js +104 -0
  387. package/dist/semantics/commonjs-wrapper.d.ts +69 -0
  388. package/dist/semantics/commonjs-wrapper.js +231 -0
  389. package/dist/semantics/constructor-slot-subclasses.d.ts +28 -0
  390. package/dist/semantics/constructor-slot-subclasses.js +112 -0
  391. package/dist/semantics/declaration-overlay-transform.d.ts +35 -0
  392. package/dist/semantics/declaration-overlay-transform.js +2157 -0
  393. package/dist/semantics/define-property-source-transform.d.ts +4 -0
  394. package/dist/semantics/define-property-source-transform.js +437 -0
  395. package/dist/semantics/diagnostic-source-preparation.d.ts +24 -0
  396. package/dist/semantics/diagnostic-source-preparation.js +82 -0
  397. package/dist/semantics/documentation-ranges.d.ts +22 -0
  398. package/dist/semantics/documentation-ranges.js +36 -0
  399. package/dist/semantics/dynamic-fallback.d.ts +86 -0
  400. package/dist/semantics/dynamic-fallback.js +249 -0
  401. package/dist/semantics/frontend-timing.d.ts +6 -0
  402. package/dist/semantics/frontend-timing.js +35 -0
  403. package/dist/semantics/frontend.d.ts +504 -0
  404. package/dist/semantics/frontend.js +1157 -0
  405. package/dist/semantics/host-declaration-provenance.d.ts +11 -0
  406. package/dist/semantics/host-declaration-provenance.js +18 -0
  407. package/dist/semantics/host-methods.d.ts +24 -0
  408. package/dist/semantics/host-methods.js +74 -0
  409. package/dist/semantics/host-protocols.d.ts +429 -0
  410. package/dist/semantics/host-protocols.js +1501 -0
  411. package/dist/semantics/inherited-accessor.d.ts +7 -0
  412. package/dist/semantics/inherited-accessor.js +48 -0
  413. package/dist/semantics/interface-families.d.ts +70 -0
  414. package/dist/semantics/interface-families.js +180 -0
  415. package/dist/semantics/interface-implementors.d.ts +53 -0
  416. package/dist/semantics/interface-implementors.js +87 -0
  417. package/dist/semantics/jsdoc-namepath-transform.d.ts +4 -0
  418. package/dist/semantics/jsdoc-namepath-transform.js +85 -0
  419. package/dist/semantics/model/coverage.d.ts +68 -0
  420. package/dist/semantics/model/coverage.js +73 -0
  421. package/dist/semantics/model/edges.d.ts +103 -0
  422. package/dist/semantics/model/edges.js +20 -0
  423. package/dist/semantics/model/graph.d.ts +55 -0
  424. package/dist/semantics/model/graph.js +129 -0
  425. package/dist/semantics/model/operands.d.ts +159 -0
  426. package/dist/semantics/model/operands.js +26 -0
  427. package/dist/semantics/model/operations.d.ts +496 -0
  428. package/dist/semantics/model/operations.js +2 -0
  429. package/dist/semantics/model/primitive-domain.d.ts +26 -0
  430. package/dist/semantics/model/primitive-domain.js +38 -0
  431. package/dist/semantics/model/selected-signature.d.ts +261 -0
  432. package/dist/semantics/model/selected-signature.js +55 -0
  433. package/dist/semantics/model/structural-type-table.d.ts +93 -0
  434. package/dist/semantics/model/structural-type-table.js +237 -0
  435. package/dist/semantics/model/structural-types.d.ts +367 -0
  436. package/dist/semantics/model/structural-types.js +200 -0
  437. package/dist/semantics/module-resolution.d.ts +23 -0
  438. package/dist/semantics/module-resolution.js +227 -0
  439. package/dist/semantics/new-callee-class-tag-source-transform.d.ts +4 -0
  440. package/dist/semantics/new-callee-class-tag-source-transform.js +64 -0
  441. package/dist/semantics/node-project.d.ts +13 -0
  442. package/dist/semantics/node-project.js +107 -0
  443. package/dist/semantics/node-source-hooks.d.ts +1 -0
  444. package/dist/semantics/node-source-hooks.js +63 -0
  445. package/dist/semantics/normalize/absent-globals.d.ts +143 -0
  446. package/dist/semantics/normalize/absent-globals.js +191 -0
  447. package/dist/semantics/normalize/arguments-objects.d.ts +43 -0
  448. package/dist/semantics/normalize/arguments-objects.js +60 -0
  449. package/dist/semantics/normalize/asserted-arm-absence.d.ts +28 -0
  450. package/dist/semantics/normalize/asserted-arm-absence.js +61 -0
  451. package/dist/semantics/normalize/assignment-patterns.d.ts +70 -0
  452. package/dist/semantics/normalize/assignment-patterns.js +147 -0
  453. package/dist/semantics/normalize/bag-absence.d.ts +8 -0
  454. package/dist/semantics/normalize/bag-absence.js +42 -0
  455. package/dist/semantics/normalize/binding-fixpoint.d.ts +36 -0
  456. package/dist/semantics/normalize/binding-fixpoint.js +140 -0
  457. package/dist/semantics/normalize/callback-parameter-contracts.d.ts +16 -0
  458. package/dist/semantics/normalize/callback-parameter-contracts.js +91 -0
  459. package/dist/semantics/normalize/cells/agreement.d.ts +46 -0
  460. package/dist/semantics/normalize/cells/agreement.js +34 -0
  461. package/dist/semantics/normalize/cells/candidates.d.ts +17 -0
  462. package/dist/semantics/normalize/cells/candidates.js +35 -0
  463. package/dist/semantics/normalize/cells/facts.d.ts +19 -0
  464. package/dist/semantics/normalize/cells/facts.js +90 -0
  465. package/dist/semantics/normalize/cells/index.d.ts +10 -0
  466. package/dist/semantics/normalize/cells/index.js +6 -0
  467. package/dist/semantics/normalize/cells/model.d.ts +98 -0
  468. package/dist/semantics/normalize/cells/model.js +2 -0
  469. package/dist/semantics/normalize/cells/policies/bag.d.ts +44 -0
  470. package/dist/semantics/normalize/cells/policies/bag.js +114 -0
  471. package/dist/semantics/normalize/cells/policies/collection.d.ts +42 -0
  472. package/dist/semantics/normalize/cells/policies/collection.js +218 -0
  473. package/dist/semantics/normalize/cells/policies/field.d.ts +28 -0
  474. package/dist/semantics/normalize/cells/policies/field.js +40 -0
  475. package/dist/semantics/normalize/cells/policies/index.d.ts +49 -0
  476. package/dist/semantics/normalize/cells/policies/index.js +58 -0
  477. package/dist/semantics/normalize/cells/policies/local.d.ts +18 -0
  478. package/dist/semantics/normalize/cells/policies/local.js +37 -0
  479. package/dist/semantics/normalize/cells/policies/parameter.d.ts +28 -0
  480. package/dist/semantics/normalize/cells/policies/parameter.js +39 -0
  481. package/dist/semantics/normalize/cells/policies/return.d.ts +26 -0
  482. package/dist/semantics/normalize/cells/policies/return.js +45 -0
  483. package/dist/semantics/normalize/cells/policies/shared.d.ts +33 -0
  484. package/dist/semantics/normalize/cells/policies/shared.js +45 -0
  485. package/dist/semantics/normalize/cells/policy.d.ts +72 -0
  486. package/dist/semantics/normalize/cells/policy.js +18 -0
  487. package/dist/semantics/normalize/cells/registry.d.ts +14 -0
  488. package/dist/semantics/normalize/cells/registry.js +17 -0
  489. package/dist/semantics/normalize/census-refusal.d.ts +62 -0
  490. package/dist/semantics/normalize/census-refusal.js +27 -0
  491. package/dist/semantics/normalize/census.d.ts +109 -0
  492. package/dist/semantics/normalize/census.js +667 -0
  493. package/dist/semantics/normalize/collection-bindings.d.ts +278 -0
  494. package/dist/semantics/normalize/collection-bindings.js +677 -0
  495. package/dist/semantics/normalize/commonjs-module-record.d.ts +21 -0
  496. package/dist/semantics/normalize/commonjs-module-record.js +289 -0
  497. package/dist/semantics/normalize/commonjs-require.d.ts +13 -0
  498. package/dist/semantics/normalize/commonjs-require.js +1527 -0
  499. package/dist/semantics/normalize/contribution.d.ts +63 -0
  500. package/dist/semantics/normalize/contribution.js +172 -0
  501. package/dist/semantics/normalize/dead-typeof-guards.d.ts +64 -0
  502. package/dist/semantics/normalize/dead-typeof-guards.js +152 -0
  503. package/dist/semantics/normalize/deferred-intrinsic-protocols.d.ts +57 -0
  504. package/dist/semantics/normalize/deferred-intrinsic-protocols.js +109 -0
  505. package/dist/semantics/normalize/derived-expression-type.d.ts +1070 -0
  506. package/dist/semantics/normalize/derived-expression-type.js +3463 -0
  507. package/dist/semantics/normalize/evaluation-order.d.ts +16 -0
  508. package/dist/semantics/normalize/evaluation-order.js +37 -0
  509. package/dist/semantics/normalize/field-bindings.d.ts +167 -0
  510. package/dist/semantics/normalize/field-bindings.js +1125 -0
  511. package/dist/semantics/normalize/flow/array-element-continuation.d.ts +27 -0
  512. package/dist/semantics/normalize/flow/array-element-continuation.js +1452 -0
  513. package/dist/semantics/normalize/flow/callable-array-origins.d.ts +42 -0
  514. package/dist/semantics/normalize/flow/callable-array-origins.js +318 -0
  515. package/dist/semantics/normalize/flow/callable-completions.d.ts +45 -0
  516. package/dist/semantics/normalize/flow/callable-completions.js +82 -0
  517. package/dist/semantics/normalize/flow/callable-reach.d.ts +237 -0
  518. package/dist/semantics/normalize/flow/callable-reach.js +7174 -0
  519. package/dist/semantics/normalize/flow/class-family-member-read.d.ts +16 -0
  520. package/dist/semantics/normalize/flow/class-family-member-read.js +992 -0
  521. package/dist/semantics/normalize/flow/collection-value-continuation.d.ts +21 -0
  522. package/dist/semantics/normalize/flow/collection-value-continuation.js +192 -0
  523. package/dist/semantics/normalize/flow/component-solver.d.ts +199 -0
  524. package/dist/semantics/normalize/flow/component-solver.js +587 -0
  525. package/dist/semantics/normalize/flow/computed-key-set.d.ts +84 -0
  526. package/dist/semantics/normalize/flow/computed-key-set.js +660 -0
  527. package/dist/semantics/normalize/flow/export-importers.d.ts +24 -0
  528. package/dist/semantics/normalize/flow/export-importers.js +269 -0
  529. package/dist/semantics/normalize/flow/host-text-sink.d.ts +25 -0
  530. package/dist/semantics/normalize/flow/host-text-sink.js +87 -0
  531. package/dist/semantics/normalize/flow/intrinsic-array-callback-frames.d.ts +84 -0
  532. package/dist/semantics/normalize/flow/intrinsic-array-callback-frames.js +180 -0
  533. package/dist/semantics/normalize/flow/intrinsic-data-definition.d.ts +35 -0
  534. package/dist/semantics/normalize/flow/intrinsic-data-definition.js +140 -0
  535. package/dist/semantics/normalize/flow/invocation-facts.d.ts +98 -0
  536. package/dist/semantics/normalize/flow/invocation-facts.js +257 -0
  537. package/dist/semantics/normalize/flow/member-call-forwarding.d.ts +122 -0
  538. package/dist/semantics/normalize/flow/member-call-forwarding.js +835 -0
  539. package/dist/semantics/normalize/flow/model.d.ts +357 -0
  540. package/dist/semantics/normalize/flow/model.js +177 -0
  541. package/dist/semantics/normalize/flow/native-collection-protocol.d.ts +24 -0
  542. package/dist/semantics/normalize/flow/native-collection-protocol.js +252 -0
  543. package/dist/semantics/normalize/flow/node-path-token.d.ts +3 -0
  544. package/dist/semantics/normalize/flow/node-path-token.js +53 -0
  545. package/dist/semantics/normalize/flow/object-binding-continuation.d.ts +11 -0
  546. package/dist/semantics/normalize/flow/object-binding-continuation.js +42 -0
  547. package/dist/semantics/normalize/flow/origin-authority.d.ts +56 -0
  548. package/dist/semantics/normalize/flow/origin-authority.js +2 -0
  549. package/dist/semantics/normalize/flow/owned-class-receivers.d.ts +35 -0
  550. package/dist/semantics/normalize/flow/owned-class-receivers.js +191 -0
  551. package/dist/semantics/normalize/flow/parameter-values.d.ts +27 -0
  552. package/dist/semantics/normalize/flow/parameter-values.js +251 -0
  553. package/dist/semantics/normalize/flow/proof-hypotheses.d.ts +66 -0
  554. package/dist/semantics/normalize/flow/proof-hypotheses.js +162 -0
  555. package/dist/semantics/normalize/flow/record-alias-closure.d.ts +27 -0
  556. package/dist/semantics/normalize/flow/record-alias-closure.js +298 -0
  557. package/dist/semantics/normalize/flow/seeded-origins.d.ts +43 -0
  558. package/dist/semantics/normalize/flow/seeded-origins.js +54 -0
  559. package/dist/semantics/normalize/flow/source-class-data.d.ts +132 -0
  560. package/dist/semantics/normalize/flow/source-class-data.js +838 -0
  561. package/dist/semantics/normalize/flow/source-class-instanceof.d.ts +13 -0
  562. package/dist/semantics/normalize/flow/source-class-instanceof.js +37 -0
  563. package/dist/semantics/normalize/flow/source-class-static-data.d.ts +16 -0
  564. package/dist/semantics/normalize/flow/source-class-static-data.js +47 -0
  565. package/dist/semantics/normalize/flow/source-construction-frames.d.ts +12 -0
  566. package/dist/semantics/normalize/flow/source-construction-frames.js +118 -0
  567. package/dist/semantics/normalize/flow/source-invocation-frame-layout.d.ts +34 -0
  568. package/dist/semantics/normalize/flow/source-invocation-frame-layout.js +78 -0
  569. package/dist/semantics/normalize/flow/source-invocation-receiver.d.ts +37 -0
  570. package/dist/semantics/normalize/flow/source-invocation-receiver.js +95 -0
  571. package/dist/semantics/normalize/flow/source-prototype-method-identity.d.ts +23 -0
  572. package/dist/semantics/normalize/flow/source-prototype-method-identity.js +81 -0
  573. package/dist/semantics/normalize/flow/source-record-data.d.ts +29 -0
  574. package/dist/semantics/normalize/flow/source-record-data.js +626 -0
  575. package/dist/semantics/normalize/flow/source-value-session.d.ts +77 -0
  576. package/dist/semantics/normalize/flow/source-value-session.js +3089 -0
  577. package/dist/semantics/normalize/flow/targets.d.ts +118 -0
  578. package/dist/semantics/normalize/flow/targets.js +405 -0
  579. package/dist/semantics/normalize/flow/value-flow.d.ts +36 -0
  580. package/dist/semantics/normalize/flow/value-flow.js +823 -0
  581. package/dist/semantics/normalize/flow/value-provenance.d.ts +31 -0
  582. package/dist/semantics/normalize/flow/value-provenance.js +112 -0
  583. package/dist/semantics/normalize/gating.d.ts +51 -0
  584. package/dist/semantics/normalize/gating.js +560 -0
  585. package/dist/semantics/normalize/generic-function-choice.d.ts +31 -0
  586. package/dist/semantics/normalize/generic-function-choice.js +115 -0
  587. package/dist/semantics/normalize/global-host-mutations.d.ts +51 -0
  588. package/dist/semantics/normalize/global-host-mutations.js +5989 -0
  589. package/dist/semantics/normalize/host-effect-contracts.d.ts +77 -0
  590. package/dist/semantics/normalize/host-effect-contracts.js +143 -0
  591. package/dist/semantics/normalize/host-mutation-computed-keys.d.ts +38 -0
  592. package/dist/semantics/normalize/host-mutation-computed-keys.js +26 -0
  593. package/dist/semantics/normalize/host-mutation-key-reader.d.ts +66 -0
  594. package/dist/semantics/normalize/host-mutation-key-reader.js +192 -0
  595. package/dist/semantics/normalize/host-mutation-keys.d.ts +114 -0
  596. package/dist/semantics/normalize/host-mutation-keys.js +183 -0
  597. package/dist/semantics/normalize/identities.d.ts +172 -0
  598. package/dist/semantics/normalize/identities.js +426 -0
  599. package/dist/semantics/normalize/implicit-arguments-tuple.d.ts +97 -0
  600. package/dist/semantics/normalize/implicit-arguments-tuple.js +197 -0
  601. package/dist/semantics/normalize/implicit-arguments.d.ts +11 -0
  602. package/dist/semantics/normalize/implicit-arguments.js +39 -0
  603. package/dist/semantics/normalize/instantiation.d.ts +73 -0
  604. package/dist/semantics/normalize/instantiation.js +399 -0
  605. package/dist/semantics/normalize/intrinsic-property-call.d.ts +18 -0
  606. package/dist/semantics/normalize/intrinsic-property-call.js +69 -0
  607. package/dist/semantics/normalize/intrinsic-prototype.d.ts +41 -0
  608. package/dist/semantics/normalize/intrinsic-prototype.js +87 -0
  609. package/dist/semantics/normalize/intrinsic-static-member.d.ts +14 -0
  610. package/dist/semantics/normalize/intrinsic-static-member.js +23 -0
  611. package/dist/semantics/normalize/jsdoc-type-names.d.ts +32 -0
  612. package/dist/semantics/normalize/jsdoc-type-names.js +512 -0
  613. package/dist/semantics/normalize/keyof.d.ts +32 -0
  614. package/dist/semantics/normalize/keyof.js +110 -0
  615. package/dist/semantics/normalize/local-bindings.d.ts +176 -0
  616. package/dist/semantics/normalize/local-bindings.js +1826 -0
  617. package/dist/semantics/normalize/logical-result-type.d.ts +16 -0
  618. package/dist/semantics/normalize/logical-result-type.js +102 -0
  619. package/dist/semantics/normalize/namespace-paths.d.ts +57 -0
  620. package/dist/semantics/normalize/namespace-paths.js +108 -0
  621. package/dist/semantics/normalize/normalize.d.ts +57 -0
  622. package/dist/semantics/normalize/normalize.js +68 -0
  623. package/dist/semantics/normalize/object-bag-bindings.d.ts +305 -0
  624. package/dist/semantics/normalize/object-bag-bindings.js +1290 -0
  625. package/dist/semantics/normalize/omitted-stated-parameter.d.ts +53 -0
  626. package/dist/semantics/normalize/omitted-stated-parameter.js +59 -0
  627. package/dist/semantics/normalize/open-type-form.d.ts +10 -0
  628. package/dist/semantics/normalize/open-type-form.js +32 -0
  629. package/dist/semantics/normalize/parameter-bindings.d.ts +361 -0
  630. package/dist/semantics/normalize/parameter-bindings.js +3339 -0
  631. package/dist/semantics/normalize/parameter-slot.d.ts +264 -0
  632. package/dist/semantics/normalize/parameter-slot.js +491 -0
  633. package/dist/semantics/normalize/physical-overload-result.d.ts +77 -0
  634. package/dist/semantics/normalize/physical-overload-result.js +99 -0
  635. package/dist/semantics/normalize/primitive-property-absence.d.ts +12 -0
  636. package/dist/semantics/normalize/primitive-property-absence.js +60 -0
  637. package/dist/semantics/normalize/producer-context.d.ts +376 -0
  638. package/dist/semantics/normalize/producer-context.js +1 -0
  639. package/dist/semantics/normalize/producers/allocations.d.ts +3 -0
  640. package/dist/semantics/normalize/producers/allocations.js +863 -0
  641. package/dist/semantics/normalize/producers/binding-kind.d.ts +37 -0
  642. package/dist/semantics/normalize/producers/binding-kind.js +36 -0
  643. package/dist/semantics/normalize/producers/bindings.d.ts +85 -0
  644. package/dist/semantics/normalize/producers/bindings.js +710 -0
  645. package/dist/semantics/normalize/producers/boundary.d.ts +34 -0
  646. package/dist/semantics/normalize/producers/boundary.js +123 -0
  647. package/dist/semantics/normalize/producers/class-lifecycle.d.ts +3 -0
  648. package/dist/semantics/normalize/producers/class-lifecycle.js +902 -0
  649. package/dist/semantics/normalize/producers/computations.d.ts +3 -0
  650. package/dist/semantics/normalize/producers/computations.js +613 -0
  651. package/dist/semantics/normalize/producers/control-loops.d.ts +30 -0
  652. package/dist/semantics/normalize/producers/control-loops.js +91 -0
  653. package/dist/semantics/normalize/producers/control.d.ts +30 -0
  654. package/dist/semantics/normalize/producers/control.js +923 -0
  655. package/dist/semantics/normalize/producers/declaration-lifecycle.d.ts +3 -0
  656. package/dist/semantics/normalize/producers/declaration-lifecycle.js +390 -0
  657. package/dist/semantics/normalize/producers/destructuring.d.ts +45 -0
  658. package/dist/semantics/normalize/producers/destructuring.js +1180 -0
  659. package/dist/semantics/normalize/producers/dynamic-language.d.ts +3 -0
  660. package/dist/semantics/normalize/producers/dynamic-language.js +70 -0
  661. package/dist/semantics/normalize/producers/erasure.d.ts +51 -0
  662. package/dist/semantics/normalize/producers/erasure.js +90 -0
  663. package/dist/semantics/normalize/producers/installed.d.ts +3 -0
  664. package/dist/semantics/normalize/producers/installed.js +55 -0
  665. package/dist/semantics/normalize/producers/invocations.d.ts +35 -0
  666. package/dist/semantics/normalize/producers/invocations.js +1796 -0
  667. package/dist/semantics/normalize/producers/iteration-yield.d.ts +59 -0
  668. package/dist/semantics/normalize/producers/iteration-yield.js +235 -0
  669. package/dist/semantics/normalize/producers/jsx.d.ts +3 -0
  670. package/dist/semantics/normalize/producers/jsx.js +360 -0
  671. package/dist/semantics/normalize/producers/mint.d.ts +39 -0
  672. package/dist/semantics/normalize/producers/mint.js +44 -0
  673. package/dist/semantics/normalize/producers/nullish.d.ts +16 -0
  674. package/dist/semantics/normalize/producers/nullish.js +27 -0
  675. package/dist/semantics/normalize/producers/object-assignment.d.ts +8 -0
  676. package/dist/semantics/normalize/producers/object-assignment.js +204 -0
  677. package/dist/semantics/normalize/producers/object-tag.d.ts +9 -0
  678. package/dist/semantics/normalize/producers/object-tag.js +119 -0
  679. package/dist/semantics/normalize/producers/optional-chain.d.ts +44 -0
  680. package/dist/semantics/normalize/producers/optional-chain.js +75 -0
  681. package/dist/semantics/normalize/producers/properties.d.ts +21 -0
  682. package/dist/semantics/normalize/producers/properties.js +1053 -0
  683. package/dist/semantics/normalize/producers/protocol.d.ts +67 -0
  684. package/dist/semantics/normalize/producers/protocol.js +695 -0
  685. package/dist/semantics/normalize/producers/references.d.ts +53 -0
  686. package/dist/semantics/normalize/producers/references.js +1027 -0
  687. package/dist/semantics/normalize/producers/shared.d.ts +561 -0
  688. package/dist/semantics/normalize/producers/shared.js +1683 -0
  689. package/dist/semantics/normalize/producers/spread-arguments.d.ts +72 -0
  690. package/dist/semantics/normalize/producers/spread-arguments.js +375 -0
  691. package/dist/semantics/normalize/producers/tagged-template.d.ts +5 -0
  692. package/dist/semantics/normalize/producers/tagged-template.js +307 -0
  693. package/dist/semantics/normalize/producers/tuple-spread.d.ts +189 -0
  694. package/dist/semantics/normalize/producers/tuple-spread.js +279 -0
  695. package/dist/semantics/normalize/property-key-domain.d.ts +36 -0
  696. package/dist/semantics/normalize/property-key-domain.js +150 -0
  697. package/dist/semantics/normalize/reachability.d.ts +189 -0
  698. package/dist/semantics/normalize/reachability.js +1057 -0
  699. package/dist/semantics/normalize/reassigned-bindings.d.ts +13 -0
  700. package/dist/semantics/normalize/reassigned-bindings.js +41 -0
  701. package/dist/semantics/normalize/record-storage-families.d.ts +11 -0
  702. package/dist/semantics/normalize/record-storage-families.js +109 -0
  703. package/dist/semantics/normalize/return-bindings.d.ts +260 -0
  704. package/dist/semantics/normalize/return-bindings.js +1311 -0
  705. package/dist/semantics/normalize/return-paths.d.ts +2 -0
  706. package/dist/semantics/normalize/return-paths.js +28 -0
  707. package/dist/semantics/normalize/script-global-redefinition.d.ts +44 -0
  708. package/dist/semantics/normalize/script-global-redefinition.js +75 -0
  709. package/dist/semantics/normalize/specialization.d.ts +201 -0
  710. package/dist/semantics/normalize/specialization.js +1824 -0
  711. package/dist/semantics/normalize/structural-array-element.d.ts +176 -0
  712. package/dist/semantics/normalize/structural-array-element.js +700 -0
  713. package/dist/semantics/normalize/structural-array-read.d.ts +13 -0
  714. package/dist/semantics/normalize/structural-array-read.js +124 -0
  715. package/dist/semantics/normalize/structural-callable.d.ts +12 -0
  716. package/dist/semantics/normalize/structural-callable.js +82 -0
  717. package/dist/semantics/normalize/structural-creation-order.d.ts +32 -0
  718. package/dist/semantics/normalize/structural-creation-order.js +111 -0
  719. package/dist/semantics/normalize/structural-declarations.d.ts +395 -0
  720. package/dist/semantics/normalize/structural-declarations.js +968 -0
  721. package/dist/semantics/normalize/structural-declared-body.d.ts +25 -0
  722. package/dist/semantics/normalize/structural-declared-body.js +147 -0
  723. package/dist/semantics/normalize/structural-generics.d.ts +56 -0
  724. package/dist/semantics/normalize/structural-generics.js +120 -0
  725. package/dist/semantics/normalize/structural-indexed-access.d.ts +11 -0
  726. package/dist/semantics/normalize/structural-indexed-access.js +126 -0
  727. package/dist/semantics/normalize/structural-instantiated-member.d.ts +64 -0
  728. package/dist/semantics/normalize/structural-instantiated-member.js +407 -0
  729. package/dist/semantics/normalize/structural-joins.d.ts +44 -0
  730. package/dist/semantics/normalize/structural-joins.js +143 -0
  731. package/dist/semantics/normalize/structural-layout-relevance.d.ts +29 -0
  732. package/dist/semantics/normalize/structural-layout-relevance.js +391 -0
  733. package/dist/semantics/normalize/structural-layout-type.d.ts +11 -0
  734. package/dist/semantics/normalize/structural-layout-type.js +1468 -0
  735. package/dist/semantics/normalize/structural-leaves.d.ts +49 -0
  736. package/dist/semantics/normalize/structural-leaves.js +125 -0
  737. package/dist/semantics/normalize/structural-local-union.d.ts +13 -0
  738. package/dist/semantics/normalize/structural-local-union.js +133 -0
  739. package/dist/semantics/normalize/structural-members.d.ts +26 -0
  740. package/dist/semantics/normalize/structural-members.js +84 -0
  741. package/dist/semantics/normalize/structural-mutable-method.d.ts +15 -0
  742. package/dist/semantics/normalize/structural-mutable-method.js +109 -0
  743. package/dist/semantics/normalize/structural-parts.d.ts +131 -0
  744. package/dist/semantics/normalize/structural-parts.js +737 -0
  745. package/dist/semantics/normalize/structural-receiver.d.ts +66 -0
  746. package/dist/semantics/normalize/structural-receiver.js +551 -0
  747. package/dist/semantics/normalize/structural-rules.d.ts +112 -0
  748. package/dist/semantics/normalize/structural-rules.js +93 -0
  749. package/dist/semantics/normalize/structural-self-reference.d.ts +150 -0
  750. package/dist/semantics/normalize/structural-self-reference.js +494 -0
  751. package/dist/semantics/normalize/structural.d.ts +202 -0
  752. package/dist/semantics/normalize/structural.js +4218 -0
  753. package/dist/semantics/normalize/unreduced-type-form.d.ts +41 -0
  754. package/dist/semantics/normalize/unreduced-type-form.js +53 -0
  755. package/dist/semantics/normalize/unresolvable-names.d.ts +56 -0
  756. package/dist/semantics/normalize/unresolvable-names.js +140 -0
  757. package/dist/semantics/package-sources.d.ts +16 -0
  758. package/dist/semantics/package-sources.js +365 -0
  759. package/dist/semantics/program.d.ts +151 -0
  760. package/dist/semantics/program.js +667 -0
  761. package/dist/semantics/prototype-install-source-transform.d.ts +4 -0
  762. package/dist/semantics/prototype-install-source-transform.js +341 -0
  763. package/dist/semantics/prototype-object-class-source-transform.d.ts +4 -0
  764. package/dist/semantics/prototype-object-class-source-transform.js +525 -0
  765. package/dist/semantics/prototype-reparenting.d.ts +50 -0
  766. package/dist/semantics/prototype-reparenting.js +317 -0
  767. package/dist/semantics/stable-checker.d.ts +10 -0
  768. package/dist/semantics/stable-checker.js +148 -0
  769. package/dist/semantics/subclass-member-overlay-transform.d.ts +35 -0
  770. package/dist/semantics/subclass-member-overlay-transform.js +1418 -0
  771. package/dist/semantics/symbol-keyed-expando-source-transform.d.ts +4 -0
  772. package/dist/semantics/symbol-keyed-expando-source-transform.js +66 -0
  773. package/dist/semantics/this-constructor-source-transform.d.ts +4 -0
  774. package/dist/semantics/this-constructor-source-transform.js +122 -0
  775. package/dist/semantics/uninstantiable-classes.d.ts +22 -0
  776. package/dist/semantics/uninstantiable-classes.js +75 -0
  777. package/dist/targets/cpp/balanced-units.d.ts +3 -0
  778. package/dist/targets/cpp/balanced-units.js +58 -0
  779. package/dist/targets/cpp/borrowed-call-entry.d.ts +30 -0
  780. package/dist/targets/cpp/borrowed-call-entry.js +68 -0
  781. package/dist/targets/cpp/captures.d.ts +68 -0
  782. package/dist/targets/cpp/captures.js +269 -0
  783. package/dist/targets/cpp/class-layout.d.ts +313 -0
  784. package/dist/targets/cpp/class-layout.js +483 -0
  785. package/dist/targets/cpp/class-properties/computed-method-value.d.ts +25 -0
  786. package/dist/targets/cpp/class-properties/computed-method-value.js +22 -0
  787. package/dist/targets/cpp/class-properties/emit-class-properties.d.ts +216 -0
  788. package/dist/targets/cpp/class-properties/emit-class-properties.js +917 -0
  789. package/dist/targets/cpp/class-properties/native-prototype.d.ts +11 -0
  790. package/dist/targets/cpp/class-properties/native-prototype.js +101 -0
  791. package/dist/targets/cpp/class-ref-transport.d.ts +12 -0
  792. package/dist/targets/cpp/class-ref-transport.js +32 -0
  793. package/dist/targets/cpp/conversions.d.ts +3 -0
  794. package/dist/targets/cpp/conversions.js +2027 -0
  795. package/dist/targets/cpp/deferral-safety.d.ts +82 -0
  796. package/dist/targets/cpp/deferral-safety.js +86 -0
  797. package/dist/targets/cpp/direct-call-receivers.d.ts +37 -0
  798. package/dist/targets/cpp/direct-call-receivers.js +79 -0
  799. package/dist/targets/cpp/document.d.ts +74 -0
  800. package/dist/targets/cpp/document.js +106 -0
  801. package/dist/targets/cpp/emit-allocation.d.ts +60 -0
  802. package/dist/targets/cpp/emit-allocation.js +573 -0
  803. package/dist/targets/cpp/emit-arrays.d.ts +119 -0
  804. package/dist/targets/cpp/emit-arrays.js +1047 -0
  805. package/dist/targets/cpp/emit-binding-reference.d.ts +17 -0
  806. package/dist/targets/cpp/emit-binding-reference.js +120 -0
  807. package/dist/targets/cpp/emit-bindings.d.ts +158 -0
  808. package/dist/targets/cpp/emit-bindings.js +769 -0
  809. package/dist/targets/cpp/emit-buffers.d.ts +156 -0
  810. package/dist/targets/cpp/emit-buffers.js +573 -0
  811. package/dist/targets/cpp/emit-callable.d.ts +230 -0
  812. package/dist/targets/cpp/emit-callable.js +2154 -0
  813. package/dist/targets/cpp/emit-carrier-members.d.ts +406 -0
  814. package/dist/targets/cpp/emit-carrier-members.js +1224 -0
  815. package/dist/targets/cpp/emit-coercion.d.ts +26 -0
  816. package/dist/targets/cpp/emit-coercion.js +39 -0
  817. package/dist/targets/cpp/emit-context.d.ts +1882 -0
  818. package/dist/targets/cpp/emit-context.js +904 -0
  819. package/dist/targets/cpp/emit-dynamic-properties.d.ts +174 -0
  820. package/dist/targets/cpp/emit-dynamic-properties.js +1249 -0
  821. package/dist/targets/cpp/emit-equality.d.ts +39 -0
  822. package/dist/targets/cpp/emit-equality.js +472 -0
  823. package/dist/targets/cpp/emit-exceptions.d.ts +104 -0
  824. package/dist/targets/cpp/emit-exceptions.js +513 -0
  825. package/dist/targets/cpp/emit-field-owner.d.ts +4 -0
  826. package/dist/targets/cpp/emit-field-owner.js +27 -0
  827. package/dist/targets/cpp/emit-in.d.ts +31 -0
  828. package/dist/targets/cpp/emit-in.js +426 -0
  829. package/dist/targets/cpp/emit-instanceof.d.ts +19 -0
  830. package/dist/targets/cpp/emit-instanceof.js +601 -0
  831. package/dist/targets/cpp/emit-integers.d.ts +68 -0
  832. package/dist/targets/cpp/emit-integers.js +184 -0
  833. package/dist/targets/cpp/emit-iterator.d.ts +100 -0
  834. package/dist/targets/cpp/emit-iterator.js +1137 -0
  835. package/dist/targets/cpp/emit-json.d.ts +73 -0
  836. package/dist/targets/cpp/emit-json.js +823 -0
  837. package/dist/targets/cpp/emit-jsx.d.ts +74 -0
  838. package/dist/targets/cpp/emit-jsx.js +806 -0
  839. package/dist/targets/cpp/emit-mixed-binary.d.ts +51 -0
  840. package/dist/targets/cpp/emit-mixed-binary.js +60 -0
  841. package/dist/targets/cpp/emit-namespaces.d.ts +101 -0
  842. package/dist/targets/cpp/emit-namespaces.js +133 -0
  843. package/dist/targets/cpp/emit-narrowing.d.ts +738 -0
  844. package/dist/targets/cpp/emit-narrowing.js +3967 -0
  845. package/dist/targets/cpp/emit-native-equality.d.ts +3 -0
  846. package/dist/targets/cpp/emit-native-equality.js +14 -0
  847. package/dist/targets/cpp/emit-native-selection.d.ts +5 -0
  848. package/dist/targets/cpp/emit-native-selection.js +37 -0
  849. package/dist/targets/cpp/emit-object-tag.d.ts +4 -0
  850. package/dist/targets/cpp/emit-object-tag.js +108 -0
  851. package/dist/targets/cpp/emit-owned-record.d.ts +2 -0
  852. package/dist/targets/cpp/emit-owned-record.js +15 -0
  853. package/dist/targets/cpp/emit-presence.d.ts +78 -0
  854. package/dist/targets/cpp/emit-presence.js +376 -0
  855. package/dist/targets/cpp/emit-properties.d.ts +105 -0
  856. package/dist/targets/cpp/emit-properties.js +1640 -0
  857. package/dist/targets/cpp/emit-record-view.d.ts +20 -0
  858. package/dist/targets/cpp/emit-record-view.js +354 -0
  859. package/dist/targets/cpp/emit-return.d.ts +5 -0
  860. package/dist/targets/cpp/emit-return.js +237 -0
  861. package/dist/targets/cpp/emit-sum-widening.d.ts +10 -0
  862. package/dist/targets/cpp/emit-sum-widening.js +69 -0
  863. package/dist/targets/cpp/emit-tonumber.d.ts +38 -0
  864. package/dist/targets/cpp/emit-tonumber.js +177 -0
  865. package/dist/targets/cpp/emit-tostring.d.ts +92 -0
  866. package/dist/targets/cpp/emit-tostring.js +556 -0
  867. package/dist/targets/cpp/emit-typeof.d.ts +49 -0
  868. package/dist/targets/cpp/emit-typeof.js +317 -0
  869. package/dist/targets/cpp/emit-union-properties.d.ts +181 -0
  870. package/dist/targets/cpp/emit-union-properties.js +1281 -0
  871. package/dist/targets/cpp/emit.d.ts +45 -0
  872. package/dist/targets/cpp/emit.js +2225 -0
  873. package/dist/targets/cpp/error-types.d.ts +4 -0
  874. package/dist/targets/cpp/error-types.js +11 -0
  875. package/dist/targets/cpp/function-source-reads.d.ts +72 -0
  876. package/dist/targets/cpp/function-source-reads.js +148 -0
  877. package/dist/targets/cpp/host/atomics.d.ts +25 -0
  878. package/dist/targets/cpp/host/atomics.js +63 -0
  879. package/dist/targets/cpp/host/core-globals.d.ts +108 -0
  880. package/dist/targets/cpp/host/core-globals.js +158 -0
  881. package/dist/targets/cpp/host/dynamic-argument-members.d.ts +42 -0
  882. package/dist/targets/cpp/host/dynamic-argument-members.js +61 -0
  883. package/dist/targets/cpp/host/emit-host-arity.d.ts +139 -0
  884. package/dist/targets/cpp/host/emit-host-arity.js +232 -0
  885. package/dist/targets/cpp/host/emit-host-invoke.d.ts +91 -0
  886. package/dist/targets/cpp/host/emit-host-invoke.js +1105 -0
  887. package/dist/targets/cpp/host/emit-host-object.d.ts +55 -0
  888. package/dist/targets/cpp/host/emit-host-object.js +2206 -0
  889. package/dist/targets/cpp/host/emit-host-properties.d.ts +69 -0
  890. package/dist/targets/cpp/host/emit-host-properties.js +533 -0
  891. package/dist/targets/cpp/host/emit-host-reflect.d.ts +4 -0
  892. package/dist/targets/cpp/host/emit-host-reflect.js +180 -0
  893. package/dist/targets/cpp/host/emit-host-value.d.ts +120 -0
  894. package/dist/targets/cpp/host/emit-host-value.js +392 -0
  895. package/dist/targets/cpp/host/host-members.d.ts +505 -0
  896. package/dist/targets/cpp/host/host-members.js +819 -0
  897. package/dist/targets/cpp/host/host-method-aliases.d.ts +30 -0
  898. package/dist/targets/cpp/host/host-method-aliases.js +76 -0
  899. package/dist/targets/cpp/host/native-protocols.d.ts +47 -0
  900. package/dist/targets/cpp/host/native-protocols.js +183 -0
  901. package/dist/targets/cpp/host/object-protocol.d.ts +351 -0
  902. package/dist/targets/cpp/host/object-protocol.js +671 -0
  903. package/dist/targets/cpp/host-namespace-reads.d.ts +83 -0
  904. package/dist/targets/cpp/host-namespace-reads.js +113 -0
  905. package/dist/targets/cpp/manifest/capabilities.d.ts +39 -0
  906. package/dist/targets/cpp/manifest/capabilities.js +1484 -0
  907. package/dist/targets/cpp/manifest.d.ts +23 -0
  908. package/dist/targets/cpp/manifest.js +113 -0
  909. package/dist/targets/cpp/native-error-base.d.ts +38 -0
  910. package/dist/targets/cpp/native-error-base.js +74 -0
  911. package/dist/targets/cpp/native-narrowing-transport.d.ts +12 -0
  912. package/dist/targets/cpp/native-narrowing-transport.js +151 -0
  913. package/dist/targets/cpp/native-selection-helpers.d.ts +11 -0
  914. package/dist/targets/cpp/native-selection-helpers.js +46 -0
  915. package/dist/targets/cpp/native-symbol-keys.d.ts +8 -0
  916. package/dist/targets/cpp/native-symbol-keys.js +34 -0
  917. package/dist/targets/cpp/ownership.d.ts +43 -0
  918. package/dist/targets/cpp/ownership.js +38 -0
  919. package/dist/targets/cpp/owning-conversion-input.d.ts +14 -0
  920. package/dist/targets/cpp/owning-conversion-input.js +12 -0
  921. package/dist/targets/cpp/property-read-claims.d.ts +62 -0
  922. package/dist/targets/cpp/property-read-claims.js +23 -0
  923. package/dist/targets/cpp/property-store-claims.d.ts +62 -0
  924. package/dist/targets/cpp/property-store-claims.js +26 -0
  925. package/dist/targets/cpp/prototype/emit-prototype-array.d.ts +111 -0
  926. package/dist/targets/cpp/prototype/emit-prototype-array.js +602 -0
  927. package/dist/targets/cpp/prototype/emit-prototype-date.d.ts +133 -0
  928. package/dist/targets/cpp/prototype/emit-prototype-date.js +515 -0
  929. package/dist/targets/cpp/prototype/emit-prototype-error.d.ts +13 -0
  930. package/dist/targets/cpp/prototype/emit-prototype-error.js +54 -0
  931. package/dist/targets/cpp/prototype/emit-prototype-invoke.d.ts +34 -0
  932. package/dist/targets/cpp/prototype/emit-prototype-invoke.js +1003 -0
  933. package/dist/targets/cpp/prototype/emit-prototype-iterator.d.ts +47 -0
  934. package/dist/targets/cpp/prototype/emit-prototype-iterator.js +250 -0
  935. package/dist/targets/cpp/prototype/emit-prototype-promise.d.ts +46 -0
  936. package/dist/targets/cpp/prototype/emit-prototype-promise.js +143 -0
  937. package/dist/targets/cpp/prototype/emit-prototype-regexp.d.ts +335 -0
  938. package/dist/targets/cpp/prototype/emit-prototype-regexp.js +853 -0
  939. package/dist/targets/cpp/prototype/emit-prototype-string.d.ts +42 -0
  940. package/dist/targets/cpp/prototype/emit-prototype-string.js +252 -0
  941. package/dist/targets/cpp/prototype/prototype-method-reads.d.ts +25 -0
  942. package/dist/targets/cpp/prototype/prototype-method-reads.js +182 -0
  943. package/dist/targets/cpp/reactive-dependencies.d.ts +140 -0
  944. package/dist/targets/cpp/reactive-dependencies.js +432 -0
  945. package/dist/targets/cpp/reactive-origins.d.ts +44 -0
  946. package/dist/targets/cpp/reactive-origins.js +82 -0
  947. package/dist/targets/cpp/records.d.ts +277 -0
  948. package/dist/targets/cpp/records.js +2427 -0
  949. package/dist/targets/cpp/recursive-containers.d.ts +43 -0
  950. package/dist/targets/cpp/recursive-containers.js +144 -0
  951. package/dist/targets/cpp/regexp-types.d.ts +56 -0
  952. package/dist/targets/cpp/regexp-types.js +59 -0
  953. package/dist/targets/cpp/substrate.d.ts +125 -0
  954. package/dist/targets/cpp/substrate.js +12 -0
  955. package/dist/targets/cpp/translation-unit.d.ts +219 -0
  956. package/dist/targets/cpp/translation-unit.js +2063 -0
  957. package/dist/targets/cpp/types.d.ts +280 -0
  958. package/dist/targets/cpp/types.js +1135 -0
  959. package/dist/targets/cpp/virtual-methods.d.ts +95 -0
  960. package/dist/targets/cpp/virtual-methods.js +264 -0
  961. package/package.json +95 -0
  962. package/src/targets/cpp/runtime/gea_dynamic_proxy.h +824 -0
  963. package/src/targets/cpp/runtime/gea_eval.h +1376 -0
  964. package/src/targets/cpp/runtime/gea_native_class_prototype.h +44 -0
  965. package/src/targets/cpp/runtime/gea_runtime.h +29222 -0
  966. package/src/targets/cpp/runtime/gea_runtime_builtins.cpp +55 -0
@@ -0,0 +1,307 @@
1
+ import { geaAfterRenderMemberName, geaRenderBridgeMemberName, geaRenderMemberName } from './contract.js';
2
+ import { createGeaComponentClassProducer } from './component-classes.js';
3
+ import { geaHostConstructors } from './constructors.js';
4
+ import { geaElementFragment, geaElementTextLeafTags, geaHostConstants, geaHostFunctions, geaHostNamespaceMethods, geaHostNamespaceProperties, geaHostNamespacePropertySetters, geaHostNamespaceRoots, geaHostNamespaceRootTypes, geaHostPreambles, geaNativeProtocols, geaHostSingletons, geaEmbeddedIncludeGuard, geaProtocolCarriers } from './host.js';
5
+ import { geaHostMemberVoidResults, geaHostMembers } from './members.js';
6
+ import { lowerGeaElement } from './lower.js';
7
+ import { createGeaSlotHook } from './slots.js';
8
+ import { lowerGeaElementRef } from './element-ref.js';
9
+ import { createGeaElementProducer } from './producer.js';
10
+ import { geaCppPrelude, microtasksNamespace } from './prelude.js';
11
+ import { lowerGeaRenderBridge } from './render-bridge.js';
12
+ import { geaComponentInlineTransform } from './component-inline.js';
13
+ import { geaReactiveSlotTransform } from './reactive-slots.js';
14
+ /**
15
+ * gea, as a plugin.
16
+ *
17
+ * Everything this library adds to TypeScript lives behind this one object: what
18
+ * an element whose tag names a value means, which member of a constructed
19
+ * component produces its tree, and the runtime rows that make those claims
20
+ * checkable. Nothing in `src/` outside this directory knows any of it.
21
+ *
22
+ * The facts map is the whole of the state, and it is per-compilation by
23
+ * construction: `instantiate` creates it, the producer fills it while
24
+ * normalizing one program, and the lowering reads it while lowering that same
25
+ * program. A registry of long-lived instances would let a fact derived from one
26
+ * program be read back while compiling another -- a defect that reproduces only
27
+ * in whatever order the programs happened to be compiled in.
28
+ *
29
+ * `componentClasses` is the same shape of state for a different question:
30
+ * which class *declarations*, not which JSX elements, are gea's own. Both are
31
+ * filled while normalizing and read only while lowering, for the identical
32
+ * reason -- see `component-classes.ts` and `render-bridge.ts`.
33
+ */
34
+ export const geaPlugin = {
35
+ name: 'gea',
36
+ instantiate: (options) => {
37
+ const facts = new Map();
38
+ const componentClasses = new Set();
39
+ const reactiveFields = new Map();
40
+ return {
41
+ producers: (context) => [
42
+ createGeaElementProducer(context, facts),
43
+ createGeaComponentClassProducer(context, componentClasses, reactiveFields)
44
+ ],
45
+ // Two rewrites, in this order, and the order is the point.
46
+ //
47
+ // A component invocation whose props only ever write PROPERTIES becomes
48
+ // the element it builds (`component-inline.ts`), so what follows sees an
49
+ // intrinsic element and binds each attribute at its own granularity
50
+ // rather than making the whole subtree re-runnable. An invocation it
51
+ // cannot prove that of is left exactly as written, and the second rewrite
52
+ // claims it whole as before.
53
+ //
54
+ // Then a JSX slot whose value is COMPUTED gets an immediately-invoked
55
+ // arrow around it, before the checker, so the expression exists as a
56
+ // thunk this compiler can re-run. See `reactive-slots.ts`.
57
+ transformSource: (input) => {
58
+ const inlined = geaComponentInlineTransform(input);
59
+ const source = inlined === null ? input : { fileName: input.fileName, text: inlined };
60
+ return geaReactiveSlotTransform(source) ?? inlined;
61
+ },
62
+ lower: (ctx, block, operation) => lowerGeaElement(ctx, block, operation, facts) || lowerGeaRenderBridge(ctx, block, operation, componentClasses),
63
+ // `ref` is the one attribute of an intrinsic element whose meaning runs
64
+ // the other way -- it names where the node goes. See `element-ref.ts`.
65
+ lowerElementProp: lowerGeaElementRef,
66
+ slotOf: createGeaSlotHook(facts),
67
+ capabilities: {
68
+ // `element:value` is this plugin's recipe, and it is claimed here
69
+ // because this plugin is what implements it: the lowering above turns
70
+ // such an element into a record allocation plus a call, or into a
71
+ // construction plus a call of the render member. Both are built from
72
+ // primitives the backend already claims -- nothing new is emitted, so
73
+ // nothing new is asserted about the backend.
74
+ // `element:fragment` joins it whenever the package still ships the
75
+ // document's own fragment row -- see `geaElementFragment`. Claimed
76
+ // from the same statement that renders it, so a package that drops
77
+ // the row drops the claim in the same step.
78
+ runtimeHelpers: new Set(geaElementFragment() === null ? ['element:value'] : ['element:value', 'element:fragment']),
79
+ propertyRecipes: new Set(),
80
+ // The host object model gea installs -- the document, the element tree,
81
+ // JSX. None of it is TypeScript, so none of it is the backend's to
82
+ // know; `host.ts` states each protocol together with the spelling that
83
+ // renders it.
84
+ nativeProtocols: geaNativeProtocols,
85
+ // The host types themselves, from the package that implements them,
86
+ // plus the one carrier that is derived rather than stated:
87
+ // `jsx-element@1` has no TypeScript declaration behind it (JSX is a
88
+ // language form whose meaning the host decides, not a type a host
89
+ // declares), so its row is read off the package's own `Element`
90
+ // spelling -- see `geaProtocolCarriers`.
91
+ nativeTypes: geaProtocolCarriers(),
92
+ // gea's own host types are, like Apple's, ambient declarations with
93
+ // no OTHER, structurally-unrelated ambient name standing in for them
94
+ // -- see `plugins/model.ts`'s `ambientTypeRealizations` and
95
+ // `webgl/plugin.ts` for the host this closes a gap for.
96
+ ambientTypeRealizations: new Map(),
97
+ hostMembers: geaHostMembers(),
98
+ hostMemberVoidResults: geaHostMemberVoidResults(),
99
+ // gea's document/element tree is reached, never constructed -- a
100
+ // program gets its nodes from the runtime rather than by `new`-ing one.
101
+ // But a handful of gea's OTHER host classes really are built with
102
+ // `new` (`WebSocket`, `RTCPeerConnection`, `MediaStream`,
103
+ // `MediaRecorder`, `AudioContext`, `Audio`), each backed by a real
104
+ // `gea::host` C++ class -- see `geaHostConstructors` (constructors.ts)
105
+ // for the package data this reads and why the tree/class split is not
106
+ // a contradiction.
107
+ hostConstructors: geaHostConstructors(),
108
+ // The host's free functions and the globals that are paths rather than
109
+ // values, from the same package statement as the types above.
110
+ // `requestAnimationFrame` is a function the engine exports;
111
+ // `deviceInfo`, `Display` and `navigator` are namespaces. Neither is
112
+ // an object, and reading either as one is what produced eight
113
+ // `extern` declarations nothing in the engine defines.
114
+ hostFunctions: geaHostFunctions(),
115
+ // This host declares each of its free functions once, so there is no
116
+ // name two of its declarations disagree about and nothing to key by
117
+ // file -- see `PluginCapabilities.hostFunctionsByDeclaration`.
118
+ hostFunctionsByDeclaration: new Map(),
119
+ // The one global this host holds an instance of and reaches by name;
120
+ // derived from the package's own receiverless document table.
121
+ hostSingletons: geaHostSingletons(),
122
+ // Same one-declaration-file reasoning as `hostFunctionsByDeclaration`
123
+ // above: this host's ambient globals are declared once, in one place,
124
+ // so there is no second file for a singleton name to disagree with.
125
+ hostSingletonsByDeclaration: new Map(),
126
+ // gea's engine is the browser's stand-in, not a subset of it: the names
127
+ // it does not implement are simply not declared for a gea program, so
128
+ // there is no ambient contract here to contradict.
129
+ absentGlobals: new Set(),
130
+ hostNamespaces: {
131
+ roots: geaHostNamespaceRoots(),
132
+ typeofs: new Map(),
133
+ methods: geaHostNamespaceMethods(),
134
+ properties: geaHostNamespaceProperties(),
135
+ propertySetters: geaHostNamespacePropertySetters()
136
+ },
137
+ // Same reasoning again: one declaration file, so no namespace root
138
+ // name this host claims can disagree with itself.
139
+ hostNamespaceRootsByDeclaration: new Map(),
140
+ // The type behind each of those roots, from the package's own
141
+ // `hostGlobalObjectTypes` table -- see
142
+ // `PluginCapabilities.hostNamespaceRootTypes`.
143
+ hostNamespaceRootTypes: geaHostNamespaceRootTypes(),
144
+ // What a unit must declare before it may name one of those spellings.
145
+ hostPreambles: geaHostPreambles(),
146
+ // gea's host types are one runtime type wearing thirteen declared
147
+ // names (`NodeHandle`), not a hierarchy, so there is no derivation to
148
+ // state and every handle is exactly as related to every other as the
149
+ // shared carrier already makes it.
150
+ nativeBases: new Map(),
151
+ // gea's carriers are declared by `gea_runtime.h`, which every emitted
152
+ // unit already includes, so this library adds no header of its own.
153
+ nativeIncludes: new Map(),
154
+ // The host's own constants: `audioContext` is a global the engine
155
+ // defines and the program only ever reads.
156
+ nativeConstants: geaHostConstants(),
157
+ // Same one-declaration-file reasoning as `hostFunctionsByDeclaration`:
158
+ // nothing here for a second file to disagree with.
159
+ hostConstantsByDeclaration: new Map(),
160
+ // What the gea engine requires back from a compiled program.
161
+ //
162
+ // `core/packages/core/gea_app_entry.cpp` declares both and defines
163
+ // neither: `Application::frame` calls `generated::drainMicrotasks()`
164
+ // once per frame and `Application::init` calls
165
+ // `gea_cpp_clear_microtasks()` when an app starts. The queue they act
166
+ // on belongs to the program, not the engine, which is why the engine
167
+ // asks rather than implements -- and why a unit that omits them
168
+ // compiles cleanly and then fails at `ld`.
169
+ //
170
+ // The queue is the REACTIVE one. Promises settle synchronously here
171
+ // (`gea::Promise` defers nothing), but the coalescing applies do defer:
172
+ // a list or component rebuild is scheduled once per turn and has to
173
+ // land after the callback that wrote and before layout reads the tree.
174
+ // `Application::frame` calls `drainMicrotasks()` at exactly that point,
175
+ // so that is where the queue drains -- see `detail::microtaskQueue` in
176
+ // `gea_runtime.h`, and the frame-late rows an earlier zero-delay timer
177
+ // produced. `gea_cpp_clear_microtasks()` drops the same queue when an
178
+ // app starts, so a resident switch cannot rebuild the outgoing app's
179
+ // list against the incoming app's tree.
180
+ // What `<>...</>` is on this host, from the package's own document
181
+ // table -- see `PluginCapabilities.elementFragment`.
182
+ elementFragment: geaElementFragment(),
183
+ // The tag list is the package's (`isTextNodeTag`); whether an element's
184
+ // contents are one text run is the compiler's -- see `elementTextTags`.
185
+ elementTextTags: geaElementTextLeafTags(),
186
+ // The members this host's own lowering calls without the program
187
+ // naming them, so `reachability.ts` never drops one: the render bridge
188
+ // rebuilds `instance.render(root, depth)` as a call to the class's own
189
+ // `template` (`render-bridge.ts`), and attaches the mounted tree by
190
+ // calling `onAfterRender` when the class declares it. `render` itself
191
+ // is spelled by every app that mounts a component, but a component
192
+ // whose `render` is reached only through the framework's own mount
193
+ // path is not, so it is stated rather than assumed.
194
+ reachedMemberKeys: new Set([geaRenderMemberName, geaRenderBridgeMemberName, geaAfterRenderMemberName]),
195
+ // Filled by the producer above while this program is normalized, and
196
+ // read by the target after it -- the same shared-by-reference state as
197
+ // `facts` and `componentClasses`, and per-compilation for the same
198
+ // reason. See `PluginCapabilities.reactiveClassFields`.
199
+ reactiveClassFields: reactiveFields,
200
+ // The engine's own reactive cell, named here rather than derived: it
201
+ // is gea's runtime type, so this package is the only thing that knows
202
+ // its name.
203
+ nativeReactiveCell: 'gea::embedded::ui::Signal',
204
+ // ...and the only thing that knows where it is DECLARED. This used to
205
+ // be empty, on the claim that `gea_runtime.h` already carries the cell.
206
+ // It does not: that header forward-declares `gea::embedded::ui::Signal`
207
+ // and says so at the declaration, because `ui/signal.h` is on the
208
+ // include path for an engine build only. A JSX program includes the
209
+ // engine for its own reasons and so never noticed; an ordinary program
210
+ // with a reactive field failed at the field declaration with "implicit
211
+ // instantiation of undefined template", which then cascaded into every
212
+ // conversion touching the class and read as an unrelated inheritance
213
+ // defect.
214
+ //
215
+ // The same guarded block the package states ahead of each of its 331
216
+ // host spellings, taken from `geaHostPreambles` rather than restated,
217
+ // so this compilation has one spelling of the engine include and a unit
218
+ // that carries both gets it once.
219
+ nativeReactiveCellPreamble: geaEmbeddedIncludeGuard(),
220
+ // gea's runtime reaches a unit as `gea_runtime.h`, which the support
221
+ // header states unconditionally for every build because every emitted
222
+ // unit is compiled against it -- it is the CLI's own line, not this
223
+ // plugin's contribution, so there is nothing to add here.
224
+ generatedSupportIncludes: [],
225
+ runtimeDefinitions: [
226
+ // The namespace is the BUILD's to state, not this file's. A resident
227
+ // build links several apps into one binary and gives each its own
228
+ // `gea::framework::app::generated::gea_resident_<id>`, which the
229
+ // generated entry shim forward-declares by exactly that name
230
+ // (`targets/web/generate-resident-entry.mjs`); the pipeline passes it
231
+ // as `gea.microtasks-namespace`, derived from the entry symbol.
232
+ // Hardcoding the unsuffixed namespace defined a symbol no shim ever
233
+ // declares AND defined it four times over -- one undefined reference
234
+ // and one duplicate-symbol error from the same line.
235
+ // Guarded on the same condition that decides whether the queue
236
+ // EXISTS. `gea::jsx::detail`'s coalescing half lives inside
237
+ // `#ifdef GEA_HOST_DECLARED` in `gea_runtime.h` -- it is reached only
238
+ // through `reactiveListApply`/`reactiveNodeApply`, which name the
239
+ // engine's `Signal` in their own signatures and so cannot be declared
240
+ // in a unit that links no engine. A program that names no host
241
+ // spelling emits no host preamble, hence no guard, hence no queue;
242
+ // its body stays empty, which is also the right answer, since a unit
243
+ // with no engine has no list to rebuild.
244
+ {
245
+ text: `namespace ${microtasksNamespace(options)} {\nvoid drainMicrotasks() {\n#ifdef GEA_HOST_DECLARED\n ::gea::jsx::detail::drainMicrotasks();\n#endif\n}\n}`,
246
+ requires: null
247
+ },
248
+ // Weak, and at global scope, for the reason
249
+ // `core/packages/core/test/test_gea_resident_app_switch_main.cpp`
250
+ // states beside its own declaration: every resident's unit defines
251
+ // this, the engine calls it by the unsuffixed name, and the linker
252
+ // has to collapse the definitions rather than reject them. v1 emits
253
+ // it with the same attribute.
254
+ {
255
+ text: 'void __attribute__((weak)) gea_cpp_clear_microtasks() {\n#ifdef GEA_HOST_DECLARED\n ::gea::jsx::detail::clearMicrotasks();\n#endif\n}',
256
+ requires: null
257
+ },
258
+ // The engine's other pair of program-side entry points, declared the
259
+ // same way and for the same reason: `core/packages/core/gea_app_entry.cpp`
260
+ // wraps `Application::init` and `Application::frame` in a
261
+ // `FrameCycleCollectionDeferral`, whose whole job is to keep the
262
+ // collector off the stack while a host callback still owns transient
263
+ // references. The queue is the PROGRAM's, so the engine asks and the
264
+ // generated unit answers.
265
+ //
266
+ // `_end` collects rather than only decrementing: the deferral exists
267
+ // to move the safepoint to where the host stack has unwound, and a
268
+ // decrement alone leaves the drained candidates until the next
269
+ // allocation happens to cross the threshold -- one frame of garbage
270
+ // retained per frame. `bad_alloc` is swallowed because the collector
271
+ // runs at scope exit of a host callback that has already returned;
272
+ // propagating there unwinds through the engine's own frame, and the
273
+ // candidates it could not trace are still queued for the next
274
+ // safepoint.
275
+ //
276
+ // Weak, at global scope, exactly as `gea_cpp_clear_microtasks` above:
277
+ // a resident build links several apps into one binary and the linker
278
+ // has to collapse the definitions rather than reject them.
279
+ {
280
+ text: 'extern "C" void __attribute__((weak)) gea_cycle_collection_defer_begin() {\n ++gea::detail::cycleState().deferDepth;\n}',
281
+ requires: 'cycle-collectable-program'
282
+ },
283
+ {
284
+ text: 'extern "C" void __attribute__((weak)) gea_cycle_collection_defer_end() {\n' +
285
+ ' auto& gea_state = gea::detail::cycleState();\n' +
286
+ ' if (gea_state.deferDepth == 0) {\n' +
287
+ ' std::fprintf(stderr, "gea: cycle collection deferral underflow\\n");\n' +
288
+ ' std::abort();\n' +
289
+ ' }\n' +
290
+ ' --gea_state.deferDepth;\n' +
291
+ ' try {\n' +
292
+ ' gea::collectCyclesIfNeeded();\n' +
293
+ ' } catch (const std::bad_alloc&) {\n' +
294
+ ' std::fprintf(stderr, "gea: cycle collection deferred after allocation failure\\n");\n' +
295
+ ' }\n' +
296
+ '}',
297
+ requires: 'cycle-collectable-program'
298
+ },
299
+ // The stylesheet the build compiled for this program -- see
300
+ // `prelude.ts`. Empty for a program the build passed no prelude for,
301
+ // which is every program outside the gea pipeline.
302
+ ...geaCppPrelude(options).map((text) => ({ text, requires: null }))
303
+ ]
304
+ }
305
+ };
306
+ }
307
+ };
@@ -0,0 +1,78 @@
1
+ import type { PluginOptions } from '../model.js';
2
+ /**
3
+ * The C++ the gea build generated for this program, carried into the unit.
4
+ *
5
+ * A gea app's stylesheet is not data the compiler reads. The shipping pipeline
6
+ * (`build-gea-vite-geatsc.mjs`) compiles every `.css` the program imports into
7
+ * a static tape of engine calls and hands the compiler the path to it, because
8
+ * the engine's `StyleSheet` is the only thing that can interpret it. A unit
9
+ * that omits it links and runs and draws every element at its default size --
10
+ * which for gea's `<div class="ball"/>` is nothing at all. There is no
11
+ * diagnostic for that anywhere: the program is correct, the styles simply were
12
+ * never registered.
13
+ *
14
+ * Two forms, both the gea plugin's own and both matching what v1's
15
+ * `geatsc-plugin-gea` emits for the same options, because the same engine has
16
+ * to link against the result. The object form registers on static
17
+ * initialization and is what a single-app firmware or a wasm module uses; the
18
+ * named-function form exists for resident builds, where several apps share one
19
+ * binary and each must register its own styles when it starts rather than all
20
+ * of them at load. `gea.cpp-prelude-symbol` is what asks for the second.
21
+ *
22
+ * `inline` on the registration object is load-bearing and is v1's own comment:
23
+ * an anonymous-namespace object gets one copy per translation unit, so a
24
+ * split-TU build re-registers the whole tape once per module.
25
+ *
26
+ * The app's tape is not the whole sheet. gea's engine ships no user-agent
27
+ * defaults at all, so the tag-driven styles a browser would apply are the
28
+ * compiler's to state -- see `user-agent-styles.ts` for what they are and for
29
+ * the inline-layout defect their absence produced. They go in ahead of the
30
+ * app's own rules, in the same body, because both prelude forms have exactly
31
+ * one place a resident build will call, and they are emitted for every app the
32
+ * pipeline builds rather than only for the ones that imported a `.css`: nine
33
+ * of the shipped examples have inline tags and no stylesheet at all, and under
34
+ * the narrower gate every one of them lost its heading sizes.
35
+ */
36
+ export declare const geaCppPrelude: (options: PluginOptions) => readonly string[];
37
+ /**
38
+ * Whether the unit this compilation emits talks to AppKit rather than to gea's
39
+ * own element tree.
40
+ *
41
+ * `gea.ir` says "the gea pipeline asked for this build"; it does not say the
42
+ * result links gea's UI engine, and for one target it does not. An
43
+ * apple-native app's emitted unit includes `gea/apple/native_bridge.h` and
44
+ * nothing else -- `gea/embedded.h` and `ui/internal.h` are absent, because the
45
+ * views really are `NSView`s -- so C++ naming `gea::embedded::ui::StyleSheet`
46
+ * does not compile there ("no member named 'StyleSheet' in namespace
47
+ * 'gea::embedded::ui'", six times, on `notes-native`). There are also no `<p>`
48
+ * or `<h1>` nodes in such a program for a user-agent rule to match, so the
49
+ * sheet has nothing to say about it either way.
50
+ *
51
+ * Read off `apple.metadata`, which the apple target's pipeline passes for
52
+ * exactly the builds that load the apple-native plugin -- the same kind of
53
+ * fact, from the same pipeline, as `gea.ir` above.
54
+ *
55
+ * Exported so `cli-emit.ts` can thread this same pipeline fact into
56
+ * `generated_support.hpp`'s Apple-ownership line, rather than re-deriving it
57
+ * by searching the rendered C++ for the include text this fact already
58
+ * decided to write.
59
+ */
60
+ export declare const isAppleNativeBuild: (options: PluginOptions) => boolean;
61
+ /** Whether this is a bare C++ identifier, so a name the build passed can be emitted as one. */
62
+ /**
63
+ * The namespace this program's `drainMicrotasks()` is defined in.
64
+ *
65
+ * `core/packages/core/gea_app_entry.cpp` calls `generated::drainMicrotasks()`,
66
+ * and a resident build gives each app its own nested namespace so four units
67
+ * can each define one -- `gea::framework::app::generated::gea_resident_<id>`,
68
+ * which `targets/web/generate-resident-entry.mjs` forward-declares by name.
69
+ * The pipeline derives it from the entry symbol and states it here
70
+ * (`build-gea-vite-geatsc.mjs`, `microtasksNamespaceForEntry`), so this reads
71
+ * it rather than restating it: the package that owns the contract is the
72
+ * authority, and a namespace invented on this side is a symbol nothing
73
+ * declares.
74
+ *
75
+ * The fallback is the plain namespace a single-app build uses, which is what
76
+ * the pipeline itself passes when the entry symbol is not a resident's.
77
+ */
78
+ export declare const microtasksNamespace: (options: PluginOptions) => string;
@@ -0,0 +1,153 @@
1
+ import { existsSync, readFileSync } from 'node:fs';
2
+ import { resolve } from 'node:path';
3
+ import { geaUserAgentStyleSheet } from './user-agent-styles.js';
4
+ /**
5
+ * The C++ the gea build generated for this program, carried into the unit.
6
+ *
7
+ * A gea app's stylesheet is not data the compiler reads. The shipping pipeline
8
+ * (`build-gea-vite-geatsc.mjs`) compiles every `.css` the program imports into
9
+ * a static tape of engine calls and hands the compiler the path to it, because
10
+ * the engine's `StyleSheet` is the only thing that can interpret it. A unit
11
+ * that omits it links and runs and draws every element at its default size --
12
+ * which for gea's `<div class="ball"/>` is nothing at all. There is no
13
+ * diagnostic for that anywhere: the program is correct, the styles simply were
14
+ * never registered.
15
+ *
16
+ * Two forms, both the gea plugin's own and both matching what v1's
17
+ * `geatsc-plugin-gea` emits for the same options, because the same engine has
18
+ * to link against the result. The object form registers on static
19
+ * initialization and is what a single-app firmware or a wasm module uses; the
20
+ * named-function form exists for resident builds, where several apps share one
21
+ * binary and each must register its own styles when it starts rather than all
22
+ * of them at load. `gea.cpp-prelude-symbol` is what asks for the second.
23
+ *
24
+ * `inline` on the registration object is load-bearing and is v1's own comment:
25
+ * an anonymous-namespace object gets one copy per translation unit, so a
26
+ * split-TU build re-registers the whole tape once per module.
27
+ *
28
+ * The app's tape is not the whole sheet. gea's engine ships no user-agent
29
+ * defaults at all, so the tag-driven styles a browser would apply are the
30
+ * compiler's to state -- see `user-agent-styles.ts` for what they are and for
31
+ * the inline-layout defect their absence produced. They go in ahead of the
32
+ * app's own rules, in the same body, because both prelude forms have exactly
33
+ * one place a resident build will call, and they are emitted for every app the
34
+ * pipeline builds rather than only for the ones that imported a `.css`: nine
35
+ * of the shipped examples have inline tags and no stylesheet at all, and under
36
+ * the narrower gate every one of them lost its heading sizes.
37
+ */
38
+ export const geaCppPrelude = (options) => {
39
+ const file = options.get('gea.cpp-prelude');
40
+ const tapePath = file === undefined || file.length === 0 ? null : resolve(file);
41
+ // Two separate questions, and they were one gate until an app with no
42
+ // stylesheet turned up rendering its headings at body size. The tape is this
43
+ // program's own CSS, and only a program that imported some has one. The
44
+ // user-agent sheet belongs to every program the gea build compiles -- a
45
+ // `<h1>` is still a heading in an app that ships no `.css` -- so it is gated
46
+ // on `gea.ir`, which the pipeline passes for every app it builds and which
47
+ // nothing outside the pipeline passes. That second gate is load-bearing: a
48
+ // program compiled outside it (the corpus harness calls `compile()` with no
49
+ // plugin options at all) would otherwise be handed C++ naming
50
+ // `gea::embedded::ui::StyleSheet` in a unit that never declared it.
51
+ if (tapePath === null && !isPipelineBuild(options))
52
+ return [];
53
+ const symbol = options.get('gea.cpp-prelude-symbol');
54
+ const named = symbol !== undefined && isPlainIdentifier(symbol);
55
+ // A path the build named but never wrote is not an error here: the pipeline
56
+ // passes this option whenever the app COULD have styles, and an app with
57
+ // none leaves the file absent. What it must not do is fail closed on a
58
+ // program that simply has no CSS.
59
+ const tape = tapePath !== null && existsSync(tapePath) ? readFileSync(tapePath, 'utf8').trim() : '';
60
+ // The user-agent sheet goes FIRST: a program with no CSS of its own still
61
+ // has `<p>`s and `<h1>`s, and the cascade breaks equal-specificity ties by
62
+ // source order, so anything the app states about the same tag has to be
63
+ // registered after this to win.
64
+ const body = tape.length === 0 ? geaUserAgentStyleSheet : `${geaUserAgentStyleSheet}\n${tape}`;
65
+ const provenance = `// @geastack/compiler gea C++ prelude\n// prelude=${tapePath ?? '<none: user-agent defaults only>'}`;
66
+ if (named)
67
+ return [`${provenance}\nvoid ${symbol}() {\n${indent(body, ' ')}\n}`];
68
+ return [
69
+ `${provenance}\nstruct GeaPluginCppPreludeRegistration {\n GeaPluginCppPreludeRegistration() {\n${indent(body, ' ')}\n }\n};\ninline GeaPluginCppPreludeRegistration gea_plugin_cpp_prelude_registration;`
70
+ ];
71
+ };
72
+ /**
73
+ * Whether the gea build pipeline is what asked for this compilation.
74
+ *
75
+ * `build-gea-vite-geatsc.mjs` passes `gea.ir` for every app it compiles, ahead
76
+ * of knowing whether that app has any CSS, and it is the one option that says
77
+ * "this unit is a gea app and links the engine". The user-agent sheet needs
78
+ * that to be true before it may name `gea::embedded::ui`, and a program
79
+ * compiled through the plain API states nothing of the kind.
80
+ */
81
+ const isPipelineBuild = (options) => {
82
+ const ir = options.get('gea.ir');
83
+ return ir !== undefined && ir.length > 0 && !isAppleNativeBuild(options);
84
+ };
85
+ /**
86
+ * Whether the unit this compilation emits talks to AppKit rather than to gea's
87
+ * own element tree.
88
+ *
89
+ * `gea.ir` says "the gea pipeline asked for this build"; it does not say the
90
+ * result links gea's UI engine, and for one target it does not. An
91
+ * apple-native app's emitted unit includes `gea/apple/native_bridge.h` and
92
+ * nothing else -- `gea/embedded.h` and `ui/internal.h` are absent, because the
93
+ * views really are `NSView`s -- so C++ naming `gea::embedded::ui::StyleSheet`
94
+ * does not compile there ("no member named 'StyleSheet' in namespace
95
+ * 'gea::embedded::ui'", six times, on `notes-native`). There are also no `<p>`
96
+ * or `<h1>` nodes in such a program for a user-agent rule to match, so the
97
+ * sheet has nothing to say about it either way.
98
+ *
99
+ * Read off `apple.metadata`, which the apple target's pipeline passes for
100
+ * exactly the builds that load the apple-native plugin -- the same kind of
101
+ * fact, from the same pipeline, as `gea.ir` above.
102
+ *
103
+ * Exported so `cli-emit.ts` can thread this same pipeline fact into
104
+ * `generated_support.hpp`'s Apple-ownership line, rather than re-deriving it
105
+ * by searching the rendered C++ for the include text this fact already
106
+ * decided to write.
107
+ */
108
+ export const isAppleNativeBuild = (options) => {
109
+ const metadata = options.get('apple.metadata');
110
+ return metadata !== undefined && metadata.length > 0;
111
+ };
112
+ /** Whether this is a bare C++ identifier, so a name the build passed can be emitted as one. */
113
+ /**
114
+ * The namespace this program's `drainMicrotasks()` is defined in.
115
+ *
116
+ * `core/packages/core/gea_app_entry.cpp` calls `generated::drainMicrotasks()`,
117
+ * and a resident build gives each app its own nested namespace so four units
118
+ * can each define one -- `gea::framework::app::generated::gea_resident_<id>`,
119
+ * which `targets/web/generate-resident-entry.mjs` forward-declares by name.
120
+ * The pipeline derives it from the entry symbol and states it here
121
+ * (`build-gea-vite-geatsc.mjs`, `microtasksNamespaceForEntry`), so this reads
122
+ * it rather than restating it: the package that owns the contract is the
123
+ * authority, and a namespace invented on this side is a symbol nothing
124
+ * declares.
125
+ *
126
+ * The fallback is the plain namespace a single-app build uses, which is what
127
+ * the pipeline itself passes when the entry symbol is not a resident's.
128
+ */
129
+ export const microtasksNamespace = (options) => {
130
+ const stated = options.get('gea.microtasks-namespace');
131
+ return stated !== undefined && isNamespacePath(stated) ? stated : 'gea::framework::app::generated';
132
+ };
133
+ /** A `::`-separated path of plain identifiers, and nothing else -- this text is spliced into C++. */
134
+ const isNamespacePath = (value) => {
135
+ const parts = value.split('::');
136
+ return parts.length > 0 && parts.every((part) => isPlainIdentifier(part));
137
+ };
138
+ const isPlainIdentifier = (value) => {
139
+ if (value.length === 0)
140
+ return false;
141
+ for (let index = 0; index < value.length; index += 1) {
142
+ const code = value.charCodeAt(index);
143
+ const letter = (code >= 65 && code <= 90) || (code >= 97 && code <= 122) || code === 95;
144
+ const digit = code >= 48 && code <= 57;
145
+ if (!letter && !(digit && index > 0))
146
+ return false;
147
+ }
148
+ return true;
149
+ };
150
+ const indent = (source, prefix) => source
151
+ .split('\n')
152
+ .map((line) => (line.length === 0 ? line : `${prefix}${line}`))
153
+ .join('\n');
@@ -0,0 +1,5 @@
1
+ import type { OperationId } from '../../identity/ids.js';
2
+ import type { FamilyProducer } from '../../semantics/normalize/contribution.js';
3
+ import type { ProducerContext } from '../../semantics/normalize/producer-context.js';
4
+ import { type GeaElementFacts } from './contract.js';
5
+ export declare const createGeaElementProducer: (context: ProducerContext, facts: Map<OperationId, GeaElementFacts>) => FamilyProducer;
@@ -0,0 +1,52 @@
1
+ import ts from 'typescript';
2
+ import { createElementProducer } from '../../semantics/normalize/producers/jsx.js';
3
+ import { elementFactsOf } from './contract.js';
4
+ /**
5
+ * gea's element producer.
6
+ *
7
+ * It publishes exactly what the core's does -- the same operations, the same
8
+ * identities, the same operand pairing -- and additionally records, for every
9
+ * element whose tag names a value, what gea says that element means. The two
10
+ * halves are deliberately not merged: the operations belong to the graph, which
11
+ * every stage reads, while the meaning belongs to gea and is read only by gea's
12
+ * own lowering. Putting the second on the operation would put a library's
13
+ * vocabulary into a model that other libraries also publish into.
14
+ *
15
+ * Delegating rather than reimplementing is a choice about drift, not effort.
16
+ * An element's identity is minted from its node and its family, and a second
17
+ * producer that minted its own would have to stay in agreement with the first
18
+ * forever; there is nothing about the *language* half of an element that gea
19
+ * disagrees with, so it does not restate it.
20
+ */
21
+ /** The tag of an element node, or `null` for a fragment, which names none. */
22
+ const tagNameOf = (node) => {
23
+ if (ts.isJsxSelfClosingElement(node))
24
+ return node.tagName;
25
+ if (ts.isJsxElement(node))
26
+ return node.openingElement.tagName;
27
+ if (ts.isJsxOpeningElement(node))
28
+ return node.tagName;
29
+ return null;
30
+ };
31
+ export const createGeaElementProducer = (context, facts) => {
32
+ const core = createElementProducer(context);
33
+ return {
34
+ family: core.family,
35
+ contribute: (candidate) => {
36
+ const contribution = core.contribute(candidate);
37
+ if (contribution.kind !== 'operations')
38
+ return contribution;
39
+ const tagName = tagNameOf(candidate.node);
40
+ if (!tagName)
41
+ return contribution;
42
+ for (const operation of contribution.operations) {
43
+ if (operation.family !== 'element' || operation.form !== 'value')
44
+ continue;
45
+ const resolved = elementFactsOf(context.checker, tagName);
46
+ if (resolved)
47
+ facts.set(operation.id, resolved);
48
+ }
49
+ return contribution;
50
+ }
51
+ };
52
+ };
@@ -0,0 +1,49 @@
1
+ import ts from 'typescript';
2
+ import type { PluginSourceFile } from '../model.js';
3
+ /**
4
+ * Whether this tag names a VALUE rather than an intrinsic name.
5
+ *
6
+ * JSX's own rule, and the same one `producers/jsx.ts`'s `intrinsicTagOf` reads:
7
+ * a lowercase-initial plain identifier is an intrinsic name, anything else --
8
+ * `ClockHand`, `ui.Row` -- resolves as a value. A namespaced name is never a
9
+ * component.
10
+ */
11
+ export declare const namesAComponent: (tag: ts.JsxTagNameExpression) => boolean;
12
+ export declare const openingOf: (element: ts.JsxElement | ts.JsxSelfClosingElement) => ts.JsxOpeningLikeElement;
13
+ /**
14
+ * A COMPONENT element in a child position, whose props are computed from
15
+ * something read out of an object.
16
+ *
17
+ * This is the one JSX position whose reactivity nothing else can reach.
18
+ * `plugins/gea/lower.ts` lowers `<ClockHand angle={clock.second}/>` to what the
19
+ * checker checked -- a props record built from the attributes, and a call --
20
+ * so the reactive field is read ONCE, into a plain field of that record, and
21
+ * the callee's body then sees an ordinary parameter. Every reactive binding
22
+ * this backend has is attached at an INTRINSIC element's own prop or child
23
+ * (`targets/cpp/emit-jsx.ts`), and there is no intrinsic element here: the
24
+ * emitter cannot bind a member pointer through a call it cannot see inside.
25
+ *
26
+ * So the re-runnable unit is the whole invocation -- props record and call
27
+ * together -- which is exactly what wrapping the element in an IIFE makes it.
28
+ * Re-running the call alone would not do: it would hand the callee the SAME
29
+ * record, still holding the value the first render read.
30
+ *
31
+ * Claimed only in a child position. A component element that is a function's
32
+ * return value (`return <AnalogClockView/>`) is not a slot of anything -- there
33
+ * is no parent node to re-attach a rebuilt subtree to -- and the rewrite would
34
+ * only add a call.
35
+ *
36
+ * And only under an INTRINSIC parent. The re-attach point this rewrite is for
37
+ * is an `element-child` operation on a real host node -- the only place
38
+ * `targets/cpp/emit-jsx.ts` can write `reactiveNodeApply` -- and only an
39
+ * intrinsic element lowers to one. A component nested directly inside another
40
+ * COMPONENT element (`<UILabel/>` under `<UIView>`, as every apple-native app
41
+ * writes its tree) is not a child slot of a node at all: it is an attribute of
42
+ * the props record the outer component's own invocation builds, attached by
43
+ * that call rather than by this compiler. Wrapping it offers a re-run nothing
44
+ * can attach -- and measurably costs: it moves the element out of the position
45
+ * whose type the checker had, so `producers/jsx.ts` sees `any` and blocks the
46
+ * census (four `ios-*` apps lost their certificate on exactly this).
47
+ */
48
+ export declare const isReactiveComponentChild: (node: ts.Node) => node is ts.JsxElement | ts.JsxSelfClosingElement;
49
+ export declare const geaReactiveSlotTransform: ({ fileName, text }: PluginSourceFile) => string | null;