@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,735 @@
1
+ import type { SlotHook } from '../projection/slots.js';
2
+ import type { DeclarationId, SemanticResultId } from '../identity/ids.js';
3
+ import type { FamilyProducer } from '../semantics/normalize/contribution.js';
4
+ import type { ProducerContext } from '../semantics/normalize/producer-context.js';
5
+ import type { SemanticOperand } from '../semantics/model/operands.js';
6
+ import type { SemanticOperation } from '../semantics/model/operations.js';
7
+ import type { LoweringContext } from '../ir/lower-operands.js';
8
+ import type { IrBlockId, IrOperand } from '../ir/model.js';
9
+ import type { HostBaseTable, HostConstructorTable, HostFunctionFileTable, HostFunctionTable, HostInvocationTable, HostIncludeTable, HostMemberTable, HostNameFileTable, HostNamespaceTable } from '../targets/cpp/host/host-members.js';
10
+ import type { AmbientTypeRealization } from '../semantics/ambient-type-realization-transform.js';
11
+ import type { HostMethodBindingTable } from '../semantics/host-methods.js';
12
+ /**
13
+ * The extension seam.
14
+ *
15
+ * This compiler translates TypeScript, and TypeScript alone. That is not
16
+ * modesty about scope, it is what keeps the thing correct: the moment a stage
17
+ * knows what a component is, or what mounting means, or which member of a class
18
+ * a runtime will call later, it has stopped compiling a language and started
19
+ * compiling one library's idea of one -- and every other library then arrives
20
+ * as a special case bolted next to the first.
21
+ *
22
+ * But a library really does add meaning that the language does not state.
23
+ * `<Row/>` is, to TypeScript, a JSX element whose tag resolves a construct
24
+ * signature; whether the result is called once, instantiated and re-entered
25
+ * every frame, or compiled into a static structure with patched positions is
26
+ * something only the library that defined `Row`'s base knows. A compiler with
27
+ * no way to be told that either guesses (which is how a framework ends up
28
+ * hard-coded into a language compiler) or refuses every program that uses one.
29
+ *
30
+ * So a plugin is not a table of data this compiler consults. It is code, and it
31
+ * changes what the compiler does:
32
+ *
33
+ * - `producers` runs during normalization, with the checker, and may replace
34
+ * the core producer for a family outright. A plugin that wants to see an
35
+ * element differently sees it differently -- there is no second, weaker
36
+ * hook that only gets to annotate what the core already decided.
37
+ * - `lower` runs before the core's own lowering for every operation, and a
38
+ * plugin that claims one owns it completely.
39
+ * - `capabilities` are merged into the target manifest, so preflight censuses
40
+ * against what the plugin's runtime actually installs. A plugin that claims
41
+ * a recipe it has not written fails the same way the backend would.
42
+ *
43
+ * The order those hooks run in is the compiler's own publication order, not a
44
+ * negotiation: a plugin producer publishes into the same graph, under the same
45
+ * transactional withholding, and a plugin lowering runs after the same
46
+ * certificate every other body waits on.
47
+ *
48
+ * What a plugin may NOT do is smuggle source shape back in. It sees the checker
49
+ * because normalization does; it does not see file names, offsets, or emitted
50
+ * text, for the same reasons nothing else here does.
51
+ */
52
+ /** One exact declaration a host supplies. */
53
+ export interface HostOwnedDeclaration {
54
+ /** Absolute path of the host-owned declaration file. */
55
+ readonly declarationFileName: string;
56
+ /** The value declaration's spelling in that file. */
57
+ readonly declarationName: string;
58
+ /**
59
+ * Other exact declarations that the host deliberately merges into this
60
+ * checker Symbol.
61
+ *
62
+ * A host sometimes supplies a replacement type while TypeScript's platform
63
+ * declarations still contribute the global cell that names it. The merged
64
+ * Symbol is authentic only when EVERY declaration is one of these explicit
65
+ * rows; this is not a name fallback. `process` is the motivating case:
66
+ * node-compat owns `Process`, while `@types/node/globals.d.ts` contributes
67
+ * the global `var process` declaration that points at that type.
68
+ */
69
+ readonly compatibleDeclarations?: readonly HostOwnedDeclaration[];
70
+ }
71
+ /** One exact declaration a host supplies for a CommonJS wrapper parameter. */
72
+ export interface CommonJsWrapperDeclaration extends HostOwnedDeclaration {
73
+ /** The wrapper parameter this declaration represents. */
74
+ readonly global: 'require' | 'exports' | 'module';
75
+ }
76
+ /** One exact declared type a host carries in its native runtime. */
77
+ export interface HostNativeTypeDeclaration extends HostOwnedDeclaration {
78
+ /** The host runtime's C++ carrier for values of this declaration. */
79
+ readonly native: string;
80
+ }
81
+ /** Capability rows a plugin's own runtime installs, merged into the target manifest. */
82
+ /**
83
+ * A definition a plugin needs in the emitted unit, with what the unit must be
84
+ * for it to belong there.
85
+ *
86
+ * A bare string could not say the second thing, so every definition was emitted
87
+ * into every program -- including the engine's cycle-collection deferral hooks,
88
+ * whose `gea::collectCyclesIfNeeded()` landed in a program that allocates
89
+ * nothing traceable at all and therefore has no cycle to collect. The
90
+ * alternative was for the target to recognize the hooks by matching their C++
91
+ * TEXT, which would make the emitter a second authority on what the plugin
92
+ * wrote, keyed on a string either side could change alone.
93
+ *
94
+ * So the plugin states the condition with the definition. `null` means
95
+ * unconditional, which is what almost every definition is.
96
+ */
97
+ export interface RuntimeDefinition {
98
+ readonly text: string;
99
+ /**
100
+ * `cycle-collectable-program`: emit only where this unit renders something a
101
+ * cycle could run through -- a struct, a recursive container, or a captured
102
+ * environment. `gea::bufferCycleCandidate` no-ops for a `Ref` whose
103
+ * operations carry no `trace`, so for a program with none of those the hook
104
+ * is provably dead, and the engine already treats the pair as optional
105
+ * (`gea_app_entry.cpp`'s `active_ = (defer_begin && defer_end)`).
106
+ */
107
+ readonly requires: 'cycle-collectable-program' | null;
108
+ }
109
+ export interface PluginCapabilities {
110
+ readonly runtimeHelpers: ReadonlySet<string>;
111
+ readonly propertyRecipes: ReadonlySet<string>;
112
+ readonly nativeProtocols: ReadonlySet<string>;
113
+ /**
114
+ * Host-owned interfaces whose checker-declared heritage is allowed to reuse
115
+ * a standard TypedArray carrier.
116
+ *
117
+ * The declaration identity is the capability. The compiler still derives
118
+ * the element domain from the interface's actual `extends` chain; a host
119
+ * cannot state a byte width that the checker did not.
120
+ */
121
+ readonly typedArrayDeclarations?: readonly HostOwnedDeclaration[];
122
+ /**
123
+ * Host-authenticated CommonJS wrapper declarations. The key is only a
124
+ * lookup spelling: admission verifies the resolved Symbol's complete value
125
+ * declaration set against this host-owned declaration identity.
126
+ */
127
+ readonly commonJsGlobals?: ReadonlyMap<string, CommonJsWrapperDeclaration>;
128
+ /**
129
+ * Canonical names for runtime builtins that this host's build resolves to
130
+ * compiled source. Keys are accepted loader spellings (for example both
131
+ * `diagnostics_channel` and `node:diagnostics_channel`); values are the
132
+ * canonical registry names the native runtime uses. This is host build data,
133
+ * not a compiler spelling heuristic.
134
+ */
135
+ readonly commonJsBuiltinModules?: ReadonlyMap<string, string>;
136
+ /**
137
+ * Runtime source files for canonical CommonJS builtin names. Only modules
138
+ * with a real implementation belong here: a declaration-only or throwing
139
+ * facade is deliberately unavailable to the native builtin lookup.
140
+ */
141
+ readonly commonJsBuiltinModuleSources?: ReadonlyMap<string, string>;
142
+ /**
143
+ * Native type rows whose meaning belongs to one exact host declaration.
144
+ *
145
+ * Like `commonJsGlobals`, the key is a lookup spelling only. The frontend
146
+ * admits a row only when every declaration on the resolved Symbol is one
147
+ * of the stated exact host rows. This prevents an application-owned
148
+ * `Process` (or an unapproved merged declaration) from inheriting Node's
149
+ * C++ ABI by name.
150
+ */
151
+ readonly nativeTypesByDeclaration?: ReadonlyMap<string, HostNativeTypeDeclaration>;
152
+ /**
153
+ * The declared type names this plugin's host owns, to the type its own
154
+ * runtime carries their values in.
155
+ *
156
+ * This is the half `nativeProtocols` cannot state. A protocol name says a
157
+ * value of that type may be read at all; this says what it physically *is* --
158
+ * and the two are not one-to-one, because a host routinely carries many
159
+ * declared types in one runtime type. Thirteen of gea's DOM interface names
160
+ * all carry `gea::embedded::ui::NodeHandle`, which is why the claim set is
161
+ * derived from the *values* here rather than the keys, and why a member table
162
+ * keyed by the carrier has one entry where a name-keyed one has thirteen
163
+ * chances to drift.
164
+ *
165
+ * The compiler never reads this file's contents from anywhere but a plugin:
166
+ * a name absent here is not host-owned, and nothing downstream may invent a
167
+ * carrier for it. That is what keeps `frontend.ts`'s binding pass from
168
+ * matching a name by guesswork.
169
+ */
170
+ readonly nativeTypes: ReadonlyMap<string, string>;
171
+ /**
172
+ * Host singleton values authenticated by exact declaration identity.
173
+ *
174
+ * The older file-keyed table remains for existing hosts. New host surfaces
175
+ * with a collision-prone global should use this table so a complete merged
176
+ * Symbol is checked before placement can turn it into a singleton.
177
+ */
178
+ readonly hostSingletonDeclarations?: ReadonlyMap<string, HostOwnedDeclaration>;
179
+ /** Packages/modules this host implements instead of compiling their JavaScript; package/* includes subpaths. */
180
+ readonly declarationModules?: ReadonlySet<string>;
181
+ /**
182
+ * An ambient declared type this plugin's own package REPLACES with a
183
+ * concrete type it ships as ordinary source, keyed by the ambient name.
184
+ *
185
+ * The other half of what `nativeTypes` cannot state. `nativeTypes` says "a
186
+ * value of this declared type is physically a C++ type the host runtime
187
+ * carries" -- a spelling, for a boundary this compiler never compiles a
188
+ * definition for. This says something narrower and different: "the language
189
+ * surface documents this parameter as one ambient type, but every value
190
+ * this program actually supplies is an INSTANCE OF A CLASS THE PACKAGE
191
+ * SHIPS AS TYPESCRIPT" -- three's `WebGLRenderer` states its `_gl` as the
192
+ * browser's `WebGLRenderingContext`, and `@geastack/native-webgl-angle`
193
+ * supplies `NativeWebGL2RenderingContext`, a real class this compiler reads
194
+ * and compiles like any other. No carrier needs inventing for it, no host
195
+ * protocol needs installing -- the ambient name only needs to stop meaning
196
+ * the wrong, structurally unrelated interface and start meaning the class
197
+ * the value already is.
198
+ *
199
+ * A compiler-owned, generic source transform
200
+ * (`semantics/ambient-type-realization-transform.ts`) is what acts on this:
201
+ * it respells a stated ambient name to the realization's own name, in every
202
+ * JSDoc type this program's files (and any declaration overlay already
203
+ * applied) carry, and imports the realization from `importedFrom`. Nothing
204
+ * about the transform names a library; the map is the whole of what a
205
+ * plugin states.
206
+ */
207
+ readonly ambientTypeRealizations: ReadonlyMap<string, AmbientTypeRealization>;
208
+ /**
209
+ * What each of this plugin's host members renders to.
210
+ *
211
+ * A protocol name on its own is only half an answer: `nativeProtocols` says a
212
+ * read of it is allowed, and this says what a call on it becomes. Carrying
213
+ * both here is what stops them drifting -- a plugin that claimed a protocol
214
+ * the backend then had no template for would certify at preflight and refuse
215
+ * at emission, which is the one ordering the manifest exists to prevent.
216
+ */
217
+ readonly hostMembers: HostMemberTable;
218
+ /** Ambient instance methods implemented by this host, resolved by declaration rather than storage carrier. */
219
+ readonly hostMethodBindings?: HostMethodBindingTable;
220
+ /**
221
+ * `<carrier>.<member>` keys, from `hostMembers`' own key space, whose real
222
+ * C++ return is `void` when the checker's declared return for that member is
223
+ * not -- see `HostSpellings.voidResults` for the defect this states the cure
224
+ * for. A plugin with no such divergence between its own declarations and its
225
+ * own runtime states an empty set, and nothing changes for it.
226
+ */
227
+ readonly hostMemberVoidResults: ReadonlySet<string>;
228
+ /**
229
+ * How this plugin's host constructs values of its own types.
230
+ *
231
+ * The half `hostMembers` cannot state. `NSStackView.spacing` is a member of a
232
+ * view and `new NSStackView()` is not a member of anything -- it is the one
233
+ * expression that brings the view into existence -- so a plugin that stated
234
+ * only members would leave every program that builds a host object refused at
235
+ * emission with nothing to render, while preflight certified it.
236
+ */
237
+ readonly hostConstructors: HostConstructorTable;
238
+ /** Checker-authenticated host-handle `[[Call]]` implementations, keyed `${carrier}.call`. */
239
+ readonly hostInvocations?: HostInvocationTable;
240
+ /**
241
+ * The ambient free functions this plugin's host defines, to the C++ each is.
242
+ *
243
+ * The third thing a host owns that is neither a member nor a constructor.
244
+ * `installRootViewController(vc)` is a bare name in the program and a
245
+ * qualified free function in the host's runtime; with no table for it the
246
+ * backend has only one shape left for "a value you call" -- a callable
247
+ * carrier -- so it declares `extern gea::CallableObject<...>` of that name
248
+ * and calls through it. That compiles and never links: the host exports a
249
+ * function, and this declared a global variable.
250
+ *
251
+ * Keyed by the name the program writes, like `nativeConstants` and for the
252
+ * same reason: a function reached as a bare name has no receiver type to be
253
+ * filed under.
254
+ */
255
+ /** C++ free functions that synchronously consume an owned array snapshot as a span. */
256
+ readonly hostArraySnapshotFunctions?: ReadonlySet<string>;
257
+ /** Functions whose host adapter consumes native array carriers without the vector ABI. */
258
+ readonly hostNativeArrayFunctions?: ReadonlySet<string>;
259
+ readonly hostFunctions: HostFunctionTable;
260
+ /**
261
+ * The same functions, for a host that declares one name more than once.
262
+ *
263
+ * Keyed by the declaration file a program's binding resolves to, and consulted
264
+ * before `hostFunctions`. Apple's `installRootView` is declared by UIKit and by
265
+ * AppKit both -- two functions, two thunks, one bare name -- and the flat table
266
+ * above can hold only one of them. A host with no such collision states an
267
+ * empty table and every name is answered exactly as before.
268
+ */
269
+ readonly hostFunctionsByDeclaration: HostFunctionFileTable;
270
+ /**
271
+ * The global names this host owns as NAMESPACES rather than as values.
272
+ *
273
+ * See `HostNamespaceTable`. Stated separately from `hostFunctions` because a
274
+ * namespace is not callable and a function is not traversable: conflating
275
+ * them would let `deviceInfo` be called and `requestAnimationFrame.foo` be
276
+ * read, and both are refusals this compiler should make by construction.
277
+ */
278
+ readonly hostNamespaces: HostNamespaceTable;
279
+ /**
280
+ * The same, for a host that claims one namespace root name under more than
281
+ * one of its own declaration files.
282
+ *
283
+ * Keyed by the declaration file, exactly as `hostFunctionsByDeclaration` is
284
+ * and consulted the same way, before `hostNamespaces.roots`: two of a host's
285
+ * own files declaring one name as a namespace root is the same collision a
286
+ * doubly-declared function is, and only the file the program's binding
287
+ * actually resolved to says which root was meant. A host with no such
288
+ * collision states an empty table and every root is answered exactly as
289
+ * before.
290
+ */
291
+ readonly hostNamespaceRootsByDeclaration: HostNameFileTable;
292
+ /**
293
+ * Namespace roots authenticated by their complete checker declaration set.
294
+ * A configured name masks the legacy name-only root when the resolved symbol
295
+ * is merged with a caller declaration.
296
+ */
297
+ readonly hostNamespaceRootDeclarations?: readonly HostOwnedDeclaration[];
298
+ /**
299
+ * The type this host carries the one object behind each of those namespace
300
+ * roots in, keyed by the root's own name -- `window` ->
301
+ * `gea::host::WindowFacade`.
302
+ *
303
+ * A root is a path and not a cell, which is what `hostNamespaces` says and
304
+ * what the emitter acts on: nothing named `window` is ever materialized,
305
+ * every use of it resolves to a spelling. This states the other half of that
306
+ * fact -- the path is not nothing, it is one object the host holds, and this
307
+ * is its type. The representation layer needs it because a carrier is asked
308
+ * of the ROOT itself (`window`, as a reference and as a binding read), and
309
+ * the only other answer available is the ambient DOM declaration the root's
310
+ * name happens to have, which is a 26-field flattening of `Window & typeof
311
+ * globalThis` that no host implements. See
312
+ * `representation/policies.ts`'s `HostNamespaceRootPolicy`.
313
+ *
314
+ * Separate from `nativeTypes` because it is keyed differently and cannot be
315
+ * folded into it: `nativeTypes` is keyed by a declared TYPE name, and a
316
+ * namespace root's type is routinely anonymous or an intersection with no
317
+ * name to key by. A root the plugin states no type for is simply not
318
+ * answered, and derives exactly as it did before -- nothing here invents a
319
+ * spelling.
320
+ */
321
+ readonly hostNamespaceRootTypes: ReadonlyMap<string, string>;
322
+ /**
323
+ * A host's own `[[HasInstance]]`: the C++ predicate that answers `v
324
+ * instanceof <root>` for the object a namespace root names, keyed by the
325
+ * SAME native type `hostNamespaceRootTypes` maps that root to.
326
+ *
327
+ * `Buffer` is the case. Node's `Buffer` is one object that is both a
328
+ * constructor and a namespace of statics; this compiler answers the namespace
329
+ * half and carries the VALUE as an empty facade struct
330
+ * (`namespaceRootTypes`), which has no prototype chain for 13.10.2 to walk.
331
+ * But `x instanceof Buffer` is live code in `@hono/node-server`, the question
332
+ * is not unanswerable at all, and the host already knows the exact answer:
333
+ * `Buffer.isBuffer` IS `instanceof Buffer` (Node's own docs say so), and it is
334
+ * a host brand read, not a structural guess -- a `Uint8Array` that no Buffer
335
+ * factory produced answers `false`.
336
+ *
337
+ * Stated rather than inferred from the member table for the same reason every
338
+ * other row here is stated: "the member called `isBuffer` must be the instance
339
+ * test" is a naming convention, and a compiler that acts on one is guessing.
340
+ * The spelling is a function of one argument, applied to the left operand.
341
+ */
342
+ readonly hostInstanceTests?: ReadonlyMap<string, string>;
343
+ /**
344
+ * The global names this host owns as SINGLETON OBJECTS: one instance the host
345
+ * itself holds, reached by name and never loaded from a cell.
346
+ *
347
+ * `document` is the case, and it is neither of the two above. It is not a
348
+ * namespace -- its members are members of a host TYPE, resolved through
349
+ * `hostMembers` on that type's carrier like any other host object's. It is
350
+ * not an ordinary value either: the engine's `Document` has a private
351
+ * constructor and one instance, so `extern ... document;` names a cell that
352
+ * does not exist and a local holding a copy does not compile.
353
+ *
354
+ * A plugin states this from what its own package says: a host that ships a
355
+ * receiverless member table for an object is telling you exactly that the
356
+ * object is reached by name.
357
+ */
358
+ readonly hostSingletons: ReadonlySet<string>;
359
+ /**
360
+ * The same, for a host that claims one singleton name under more than one of
361
+ * its own declaration files.
362
+ *
363
+ * Keyed by the declaration file and consulted before `hostSingletons`, on
364
+ * the same precedent as `hostFunctionsByDeclaration`. A host with no such
365
+ * collision states an empty table and every name is answered exactly as
366
+ * before.
367
+ */
368
+ readonly hostSingletonsByDeclaration: HostNameFileTable;
369
+ /**
370
+ * Ambient global names this host declares it does NOT provide.
371
+ *
372
+ * The other half of a host describing its platform, and the half nothing
373
+ * could state before. An ambient declaration is a contract with a host --
374
+ * `declare var VideoFrame: {...}` says "something out there defines this" --
375
+ * and a compiler with no way to be told otherwise believes every one of them.
376
+ * Measured, that belief is a silent miscompile: `typeof VideoFrame !==
377
+ * 'undefined'` folds to `true` while the unit emits an `extern` no object
378
+ * file defines, so a library's own absence guard takes the branch that cannot
379
+ * work and the failure lands in the linker, or at runtime, rather than here.
380
+ *
381
+ * three.js is written to run where these may not exist and says so in its own
382
+ * source -- `typeof VideoFrame !== 'undefined' && image instanceof VideoFrame`.
383
+ * A native ANGLE context is exactly such a place. Stating the absence is what
384
+ * lets that guard mean what it says.
385
+ *
386
+ * A name here is `undefined` at every reference, which is the language's own
387
+ * answer for a global that is not there, so `typeof` yields `'undefined'` and
388
+ * the guarded branch is dead. It is NOT a refusal: refusing would reject a
389
+ * program that is correct precisely because it checked.
390
+ *
391
+ * A host that states nothing changes nothing -- every ambient name keeps the
392
+ * treatment it has today.
393
+ */
394
+ readonly absentGlobals: ReadonlySet<string>;
395
+ /**
396
+ * What a unit must declare before it may name one of this host's spellings,
397
+ * keyed by the spelling.
398
+ *
399
+ * Keyed rather than stated once per plugin, for the reason `nativeIncludes`
400
+ * is: a program that uses no host spelling must carry no host declaration.
401
+ */
402
+ readonly hostPreambles: ReadonlyMap<string, readonly string[]>;
403
+ /**
404
+ * Which of this host's types derive from which, as the host states it.
405
+ *
406
+ * A third fact about the same protocols, and the one TypeScript's structural
407
+ * view cannot supply: two opaque handles are unrelated to the checker no
408
+ * matter what the host's own class hierarchy says, so a program that passes
409
+ * an `NSStackView` where an `NSView` is declared is refused for a conversion
410
+ * that the target performs implicitly and for free.
411
+ */
412
+ readonly nativeBases: HostBaseTable;
413
+ /**
414
+ * The header each of this host's carriers is declared by.
415
+ *
416
+ * A host's spellings name types this compiler never wrote, so a unit that
417
+ * uses them has to include the host's own declarations -- and only when it
418
+ * uses them, which is why this is keyed by carrier rather than stated once
419
+ * per plugin. Without it a program emits perfectly correct text naming types
420
+ * nothing declared, and the failure lands in clang rather than here.
421
+ */
422
+ readonly nativeIncludes: HostIncludeTable;
423
+ /**
424
+ * Ambient names this host defines as constants, to the C++ text each is.
425
+ *
426
+ * Keyed by the name the program writes, because a constant is a VALUE and a
427
+ * value has no type table to be filed under. `NSBoxCustom` is an Objective-C
428
+ * enumerator: there is no C++ global of that name to link against, and
429
+ * declaring one is not merely unlinkable but ill-formed in Objective-C++,
430
+ * where the enumerator is already in scope. What the host states instead is
431
+ * the text -- `4` -- and the read renders it.
432
+ */
433
+ readonly nativeConstants: ReadonlyMap<string, string>;
434
+ /**
435
+ * The same, for a host that declares one constant name under more than one
436
+ * of its own declaration files.
437
+ *
438
+ * Keyed by the declaration file, on the same precedent as
439
+ * `hostFunctionsByDeclaration`: two of a host's own files can declare one
440
+ * name as a different ambient constant, and only the declaration this
441
+ * program actually resolved to says which value was meant. Consulted before
442
+ * `nativeConstants`; a host with no such collision states an empty table and
443
+ * every name is answered exactly as before.
444
+ */
445
+ readonly hostConstantsByDeclaration: HostFunctionFileTable;
446
+ /**
447
+ * C++ definitions this plugin's host requires every generated unit to carry.
448
+ *
449
+ * A host runtime can depend on the compiled program, not only the other way
450
+ * round: the gea engine's frame loop calls `generated::drainMicrotasks()` on
451
+ * every frame and `gea_cpp_clear_microtasks()` when an app starts, because
452
+ * the microtask queue belongs to the compiled program and only the program
453
+ * can drain it. Those are declarations in the engine and definitions
454
+ * nowhere, so a unit that omits them compiles and does not link.
455
+ *
456
+ * Text rather than structure because there is nothing here for this compiler
457
+ * to reason about -- it is the host's own C++, appended verbatim, exactly as
458
+ * a member template is. A plugin whose host asks nothing of a unit states
459
+ * nothing.
460
+ */
461
+ /**
462
+ * Header paths this build's `generated_support.hpp` must state, as bare
463
+ * paths -- the `#include` line is the CLI's spelling, not a plugin's.
464
+ *
465
+ * The support header is a declaration of what a generated unit is compiled
466
+ * against, and a host whose bridge the unit is compiled against is the only
467
+ * authority on whether it is. `cli-emit.ts` used to answer that question by
468
+ * substring-searching the already-rendered C++ for one host's include text,
469
+ * which is a source-shaped authority over generated text -- two invariants at
470
+ * once -- and it held that host's header spelling in a core code path
471
+ * besides. Stated by the plugin, rendered by the CLI, so neither knows the
472
+ * other's half.
473
+ *
474
+ * Gated by the plugin on its OWN activation condition, not on installation:
475
+ * a plugin whose tables are data is installed for builds that never touch it
476
+ * (see `applePlugin`'s `appleBridgeArtifacts` for the same reasoning about
477
+ * the same option), and stating a header for one of those would put a host's
478
+ * declarations into every unrelated program's output.
479
+ */
480
+ readonly generatedSupportIncludes: readonly string[];
481
+ readonly runtimeDefinitions: readonly RuntimeDefinition[];
482
+ /**
483
+ * What a JSX FRAGMENT is, in this host's own C++, or `null` if it has none.
484
+ *
485
+ * `<>...</>` names no tag, so the intrinsic recipe -- which is entirely "call
486
+ * the host's create with this tag string" -- has nothing to pass. What a
487
+ * fragment builds is the host's answer and no one else's: a host with a node
488
+ * tree may have a real fragment node that appends its children into whatever
489
+ * it is appended to, and a host without one has no meaning for the syntax at
490
+ * all. So it is stated here, as one expression, and a plugin that leaves it
491
+ * `null` leaves every fragment refused by name at emission -- the same
492
+ * refusal an unclaimed member gets, rather than an invented node.
493
+ *
494
+ * The plugin reads it from what its own package already ships. gea's is
495
+ * `Document.createDocumentFragment`, which its host-shim table states as a
496
+ * receiverless document method with `NodeHandle` as its return type -- the
497
+ * engine's `Document::createDocumentFragment` (`engine/ui/document.h`),
498
+ * whose `appendChild` moves a fragment's children into the parent rather
499
+ * than nesting the fragment itself.
500
+ */
501
+ readonly elementFragment: string | null;
502
+ /**
503
+ * Intrinsic tags whose SINGLE-TEXT-RUN form this host builds as a text node
504
+ * rather than as a container with a text child.
505
+ *
506
+ * Two authorities, deliberately split. Whether an element's contents ARE one
507
+ * text run -- no element children, exactly one run -- is a fact about the
508
+ * element, and the compiler answers it from the children's own carriers
509
+ * (`ir/lower-element.ts`). WHICH tags then collapse is a fact about the host's
510
+ * node model, and only the host knows it: gea's engine has a real text node
511
+ * whose class and style work exactly as an element's do, so a `<span>` that
512
+ * holds only characters IS that node, while a `<div>` never is. A host that
513
+ * leaves this empty builds every element as a container, which is what every
514
+ * host did before this existed.
515
+ *
516
+ * The rule and the list are both v1's -- `canUseTextNodeForElement` and
517
+ * `isTextNodeTag` in the gea plugin package's `cpp-template-renderer.ts` --
518
+ * and the plugin reads the list from that package rather than restating it.
519
+ */
520
+ readonly elementTextTags: readonly string[];
521
+ /**
522
+ * Class member names this host reaches without the program spelling them.
523
+ *
524
+ * `semantics/normalize/reachability.ts` keeps an instance method only when
525
+ * live code names it, and a name only a lowering synthesizes is one no walk
526
+ * over the source can see: the gea plugin turns `instance.render(root,
527
+ * depth)` into a call to the class's own `template` member
528
+ * (`plugins/gea/render-bridge.ts`), so `template` is reached by this host and
529
+ * spelled by nobody. Stating it here rather than in the reachability walk is
530
+ * what keeps that walk generic -- a member name hard-coded there would be one
531
+ * host's contract living in the compiler.
532
+ */
533
+ readonly reachedMemberKeys: ReadonlySet<string>;
534
+ /**
535
+ * Whether programs holding this host cannot discharge an obligation on
536
+ * `Object.prototype`'s keys, so the proofs that would raise one must refuse
537
+ * up front and leave the read boxed.
538
+ *
539
+ * Two proofs replace a boxed read with a proven `undefined` by resting on
540
+ * "Object.prototype lacks this key": the class-family absence proof
541
+ * (`flow/class-family-member-read.ts`) and the numeric-absence proof
542
+ * (`derived-expression-type.ts`). Each records a DEFERRED obligation the
543
+ * final host mutation census judges long after the read is typed. Under the
544
+ * census's `*` wildcard no such obligation can be judged true, and the
545
+ * program loses its certificate to a diagnostic -- a sound outcome, but a
546
+ * worse one than the boxed read the proof replaced. three.js programs take
547
+ * that wildcard through the ANGLE host (troika's writes through receivers
548
+ * the census cannot prove non-global, `threeWebGLBufferData( ... )`'s
549
+ * arguments), so that host states the fact here instead of every build
550
+ * remembering `GEA_FAMILY_MEMBER_ABSENT_KEYS=0 GEA_NUMERIC_ABSENCE=0`.
551
+ *
552
+ * The statement is about programs that HOLD this host, not every compile:
553
+ * the built-in plugins are installed for every compilation, so a host's word
554
+ * alone would refuse the proofs for programs that never touch it. A program
555
+ * is this host's when reachable code names one of its `hostFunctions` --
556
+ * `nativeWebGL.ts` calls `threeWebGLBufferData` and its kin on every path,
557
+ * and nothing else spells those names.
558
+ *
559
+ * A stopgap by construction: it mirrors those two kill switches and goes
560
+ * away with them when the census stops taking the wildcard. Optional;
561
+ * absent means the proofs run.
562
+ */
563
+ readonly refusesObjectPrototypeAbsenceProofs?: boolean;
564
+ /**
565
+ * Which class fields this library holds in a REACTIVE CELL, keyed by the
566
+ * class that declares them.
567
+ *
568
+ * A cell is storage, not a box: it holds exactly the `T` the field's carrier
569
+ * already says, and adds only the subscriber list a write notifies. So this
570
+ * changes what a struct member's C++ TYPE is and nothing else -- reads and
571
+ * writes keep the spellings they had, and no value anywhere becomes dynamic.
572
+ * The cell's own spelling is `nativeReactiveCell` below.
573
+ *
574
+ * Stated by the plugin because "which classes have reactive state" is a
575
+ * library's question and not TypeScript's: a field of a class is a field of a
576
+ * class, and nothing in the language says that assigning one should re-render
577
+ * anything. gea answers it from its own two bases (`contract.ts`'s
578
+ * `geaReactiveBaseNames`) -- and answers it NARROWLY, because its own
579
+ * documentation promises that a plain `Component` pays nothing for
580
+ * reactivity.
581
+ *
582
+ * Unlike every other table here, this one is filled DURING the compilation
583
+ * rather than stated up front: a class declaration is not known until the
584
+ * program has been read. It is shared by reference with the producer that
585
+ * fills it (`component-classes.ts`), exactly as that plugin's `facts` and
586
+ * `componentClasses` already are, and it is read only after normalization has
587
+ * finished -- so a reader always sees the whole answer for the one program
588
+ * this plugin instance was created for.
589
+ */
590
+ readonly reactiveClassFields: ReadonlyMap<DeclarationId, ReadonlySet<string>>;
591
+ /**
592
+ * The C++ cell a reactive field's storage is wrapped in, as a template whose
593
+ * one argument is the carrier the field would otherwise have had.
594
+ *
595
+ * A spelling rather than a structure, for the same reason `nativeTypes` is
596
+ * one: the type belongs to the library's runtime, and a name minted here
597
+ * would be a second identity for it. gea's is the engine's own
598
+ * `gea::embedded::ui::Signal<T>` (`core/packages/core/include/ui/signal.h`),
599
+ * which was written to be exactly this -- "a drop-in for a `T` everywhere the
600
+ * generated code reads the field", with an `operator=` that assigns and
601
+ * notifies. `null` for a plugin that marks no fields reactive.
602
+ */
603
+ readonly nativeReactiveCell: string | null;
604
+ /**
605
+ * What a unit must carry before it may name `nativeReactiveCell`.
606
+ *
607
+ * Stated beside the spelling because it is the same fact one step on: a
608
+ * plugin that names a type from its library's runtime is the only thing that
609
+ * knows where that type is declared. It was left empty on the claim that
610
+ * `gea_runtime.h` already carries the engine's cell, and that claim was
611
+ * wrong -- the header only FORWARD-declares `gea::embedded::ui::Signal<T>`
612
+ * (deliberately: `ui/signal.h` is on the include path for an engine build
613
+ * only, so naming it unconditionally would break every program that does not
614
+ * link the engine). A reference to an incomplete class template is
615
+ * well-formed, so a JSX program got away with it by including the engine for
616
+ * its own reasons -- and an ordinary program with a reactive field did not,
617
+ * failing at the field DECLARATION with "implicit instantiation of undefined
618
+ * template" and then cascading into every conversion that touches the class.
619
+ *
620
+ * Emitted only where a field is actually celled, which is what keeps the
621
+ * forward declaration's whole purpose intact.
622
+ */
623
+ readonly nativeReactiveCellPreamble: readonly string[];
624
+ }
625
+ export declare const noPluginCapabilities: PluginCapabilities;
626
+ /**
627
+ * One plugin, bound to one compilation.
628
+ *
629
+ * A plugin that learns something during normalization and acts on it during
630
+ * lowering has to remember it in between, and that memory belongs to the
631
+ * program it was learned from. So the registry holds factories, and every
632
+ * compilation instantiates fresh: a fact derived from one program can never be
633
+ * read back while compiling another.
634
+ */
635
+ export interface PluginInstance {
636
+ /**
637
+ * Producers this plugin installs, built from the same context the core's are
638
+ * so every family shares one ordinal authority.
639
+ *
640
+ * A producer whose family the core also installs replaces it. Two producers
641
+ * for one family would publish the same operation twice under the same
642
+ * identity, so precedence is stated rather than merged.
643
+ */
644
+ readonly producers: (context: ProducerContext) => readonly FamilyProducer[];
645
+ /** Lowers `operation` and returns true, or returns false to leave it to the core. */
646
+ readonly lower: (ctx: LoweringContext, block: IrBlockId, operation: SemanticOperation) => boolean;
647
+ /**
648
+ * The slot census's answer for operands of operations this plugin lowers
649
+ * its own way (`projection/slots.ts`); `null` defers to the core census.
650
+ * The same seam as `lower`, asked one stage earlier, so a plugin that
651
+ * builds a frame of its own also states which carriers fill it.
652
+ */
653
+ readonly slotOf?: SlotHook;
654
+ /**
655
+ * Lowers one PROP of an intrinsic element, or returns false to leave it to
656
+ * the core's own `elementProp`.
657
+ *
658
+ * The narrower sibling of `lower`, and it exists because an intrinsic element
659
+ * is the core's to lower while a handful of the names written on one are not.
660
+ * `ref={this.imgEl}` is the case that forced it: JSX's `ref` is not an
661
+ * attribute of the node at all -- it names a place to PUT the node, so its
662
+ * meaning is a store into the referenced slot, not a property write. Nothing
663
+ * about that is TypeScript's, and a library that spells it differently (or
664
+ * not at all) must not have this compiler's answer imposed on it.
665
+ *
666
+ * Offered per prop rather than per element so the plugin claims exactly the
667
+ * names it knows and every other prop keeps the core's own path, unchanged.
668
+ */
669
+ readonly lowerElementProp?: (ctx: LoweringContext, block: IrBlockId, lineage: SemanticResultId, node: IrOperand, key: SemanticOperand, value: SemanticOperand) => boolean;
670
+ readonly capabilities: PluginCapabilities;
671
+ /**
672
+ * Rewrites one file's source before the checker parses it, or `null` to leave
673
+ * it exactly as written.
674
+ *
675
+ * The one hook that runs before everything else, because some libraries state
676
+ * meaning in a form the CHECKER cannot type. `<NSStackView spacing={8}/>` is
677
+ * the case that forced it: TypeScript types every JSX element as
678
+ * `JSX.Element`, never as the tag's own class -- measured, and true even with
679
+ * `jsx: "react-jsx"` and a factory declared to return `InstanceType<T>` --
680
+ * and JSX attribute checking requires a props PARAMETER, which an AppKit
681
+ * class does not have, so `spacing="not-a-number"` raises no diagnostic at
682
+ * all. A producer reading the checker's answer after the fact therefore has
683
+ * nothing better to read; the element has to become construction and property
684
+ * assignment BEFORE the checker sees it, which is exactly what v1 does with a
685
+ * Babel transform in `vite-plugin-apple-native`.
686
+ *
687
+ * Text in, text out, so what the checker types is a real program a person
688
+ * could have written -- not a private AST this compiler alone understands.
689
+ * A plugin that returns `null` costs one substring test.
690
+ */
691
+ readonly transformSource?: (input: PluginSourceFile) => string | null;
692
+ /**
693
+ * Writes the files this plugin's host requires *beside* the emitted unit,
694
+ * into the caller's `--out-dir`.
695
+ *
696
+ * The one hook that runs after everything else, and the only one that touches
697
+ * a filesystem. It exists because a host's contribution to a build is not
698
+ * always text inside the translation unit: Apple's bridge is a header the
699
+ * unit `#include`s and an Objective-C++ source the target links, neither of
700
+ * which can be a C++ string spliced into a generated function. The core
701
+ * already states the same kind of fact for itself -- `cli-emit.ts` copies
702
+ * `gea_runtime.h` into the output directory because which runtime a unit
703
+ * needs is the compiler's own fact -- and this is that sentence with "the
704
+ * compiler's" replaced by "the plugin's".
705
+ *
706
+ * Called only once a unit was actually emitted: an artifact next to a build
707
+ * that produced nothing is a stale file the next build would read as fresh.
708
+ * A plugin that omits it writes nothing, which is every plugin whose host is
709
+ * fully described by `capabilities`.
710
+ */
711
+ readonly writeArtifacts?: (outDir: string) => void;
712
+ }
713
+ /** One file offered to a plugin's source transform. */
714
+ export interface PluginSourceFile {
715
+ readonly fileName: string;
716
+ readonly text: string;
717
+ }
718
+ /**
719
+ * What the build told a plugin, verbatim, keyed by the option name the caller
720
+ * wrote (`gea.cpp-prelude`).
721
+ *
722
+ * The compiler never reads a key of this map. It carries a library's own
723
+ * settings from the command line to the one library they belong to, which is
724
+ * what keeps an option like `gea.cpp-prelude` -- a path to C++ the gea build
725
+ * generated and the unit must carry -- out of the compiler's own vocabulary.
726
+ * Dropping such an option silently is the failure this exists to prevent: the
727
+ * program compiles, links, runs, and renders unstyled.
728
+ */
729
+ export type PluginOptions = ReadonlyMap<string, string>;
730
+ export interface CompilerPlugin {
731
+ readonly name: string;
732
+ readonly instantiate: (options: PluginOptions) => PluginInstance;
733
+ }
734
+ /** A plugin instance that changes nothing, for a compilation with none installed. */
735
+ export declare const inertPluginInstance: PluginInstance;