@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,11 @@
1
+ import type ts from 'typescript';
2
+ import type { HostOwnedDeclaration } from '../plugins/model.js';
3
+ /**
4
+ * Authenticate a host claim against the checker's complete declaration set.
5
+ *
6
+ * Compatibility rows may explain declarations merged into the host's symbol,
7
+ * but they can never create that symbol on their own: at least one declaration
8
+ * must have the configured primary provenance. Every remaining declaration
9
+ * must then be an explicitly named compatible partner.
10
+ */
11
+ export declare const hasExactHostDeclaration: (symbol: ts.Symbol, configured: HostOwnedDeclaration) => boolean;
@@ -0,0 +1,18 @@
1
+ import { resolve } from 'node:path';
2
+ const matchesDeclaration = (symbol, declaration, configured) => configured.declarationName === symbol.name && resolve(declaration.getSourceFile().fileName) === resolve(configured.declarationFileName);
3
+ /**
4
+ * Authenticate a host claim against the checker's complete declaration set.
5
+ *
6
+ * Compatibility rows may explain declarations merged into the host's symbol,
7
+ * but they can never create that symbol on their own: at least one declaration
8
+ * must have the configured primary provenance. Every remaining declaration
9
+ * must then be an explicitly named compatible partner.
10
+ */
11
+ export const hasExactHostDeclaration = (symbol, configured) => {
12
+ const declarations = symbol.declarations ?? [];
13
+ if (!declarations.some((declaration) => matchesDeclaration(symbol, declaration, configured)))
14
+ return false;
15
+ const compatible = configured.compatibleDeclarations ?? [];
16
+ return declarations.every((declaration) => matchesDeclaration(symbol, declaration, configured) ||
17
+ compatible.some((candidate) => matchesDeclaration(symbol, declaration, candidate)));
18
+ };
@@ -0,0 +1,24 @@
1
+ import ts from 'typescript';
2
+ /** A host owns the implementation of this checker-resolved method declaration. */
3
+ export interface HostMethodBinding {
4
+ readonly protocol: string;
5
+ readonly member: string;
6
+ /**
7
+ * This method returns a module selected at runtime from the native
8
+ * CommonJS-builtin registry. The compiler retains records only for its
9
+ * literal, host-admitted calls; the C++ method still receives a dynamic
10
+ * string and answers `undefined` when no retained capability matches.
11
+ */
12
+ readonly builtinModuleLookup?: true;
13
+ /** Additional inherited declarations this implementation covers, only when
14
+ * this exact primary host declaration is also present in the member set.
15
+ * This does not register the inherited member for unrelated receivers. */
16
+ readonly inheritedDeclarations?: readonly {
17
+ readonly declarationFileName: string;
18
+ readonly owner: string;
19
+ readonly member: string;
20
+ }[];
21
+ }
22
+ /** Declaration file -> declared owner.member -> host protocol member. */
23
+ export type HostMethodBindingTable = ReadonlyMap<string, ReadonlyMap<string, HostMethodBinding>>;
24
+ export declare const resolveHostMethod: (checker: ts.TypeChecker, bindings: HostMethodBindingTable, node: ts.PropertyAccessExpression | ts.ElementAccessExpression) => HostMethodBinding | null;
@@ -0,0 +1,74 @@
1
+ import ts from 'typescript';
2
+ import { resolve } from 'node:path';
3
+ /** The named declaration that owns a callable member, including a function-valued property in a type alias. */
4
+ const memberOwnerName = (declaration) => {
5
+ let owner = declaration.parent;
6
+ while (owner && (ts.isTypeLiteralNode(owner) || ts.isIntersectionTypeNode(owner) || ts.isParenthesizedTypeNode(owner))) {
7
+ owner = owner.parent;
8
+ }
9
+ return owner && (ts.isInterfaceDeclaration(owner) || ts.isClassDeclaration(owner) || ts.isTypeAliasDeclaration(owner)) && owner.name
10
+ ? owner.name.text
11
+ : null;
12
+ };
13
+ /** Whether an ambient declaration denotes a method-shaped value a host may explicitly bind. */
14
+ const isBindableMethodDeclaration = (checker, declaration) => {
15
+ if (ts.isMethodDeclaration(declaration))
16
+ return declaration.body === undefined;
17
+ if (ts.isMethodSignature(declaration))
18
+ return true;
19
+ return ts.isPropertySignature(declaration) && checker.getTypeAtLocation(declaration).getCallSignatures().length > 0;
20
+ };
21
+ export const resolveHostMethod = (checker, bindings, node) => {
22
+ // This binding names a native invocation, not a bound JS function object.
23
+ // Extracted methods retain JavaScript's unbound-this semantics and must go
24
+ // through a first-class callable implementation before this host can claim them.
25
+ let callee = node;
26
+ while (ts.isParenthesizedExpression(callee.parent))
27
+ callee = callee.parent;
28
+ if (!ts.isCallExpression(callee.parent) || callee.parent.expression !== callee)
29
+ return null;
30
+ const key = ts.isPropertyAccessExpression(node) ? node.name : node.argumentExpression;
31
+ const symbol = checker.getSymbolAtLocation(key) ??
32
+ (ts.isStringLiteralLike(key) ? checker.getPropertyOfType(checker.getTypeAtLocation(node.expression), key.text) : undefined);
33
+ if (!symbol)
34
+ return null;
35
+ const declarations = symbol.getDeclarations() ?? [];
36
+ if (declarations.length === 0)
37
+ return null;
38
+ const claimed = [];
39
+ const inherited = [];
40
+ for (const declaration of declarations) {
41
+ // A concrete implementation always wins over a host claim, even when an
42
+ // intersection also contributes a declaration the plugin recognizes.
43
+ if (ts.isMethodDeclaration(declaration) && declaration.body)
44
+ return null;
45
+ const owner = memberOwnerName(declaration);
46
+ if (owner === null)
47
+ return null;
48
+ // A plugin states its table against paths it built itself, and the
49
+ // checker spells a file name its own way -- forward slashes, whatever
50
+ // the platform's separator is. Resolving on the miss costs one lookup
51
+ // and is the difference between a host method being claimed and the
52
+ // whole binding table being invisible on Windows.
53
+ const declarationFile = declaration.getSourceFile().fileName;
54
+ const table = bindings.get(declarationFile) ?? bindings.get(resolve(declarationFile));
55
+ const binding = table?.get(`${owner}.${symbol.getName()}`);
56
+ if (!isBindableMethodDeclaration(checker, declaration))
57
+ return null;
58
+ if (binding)
59
+ claimed.push(binding);
60
+ else
61
+ inherited.push({ declarationFileName: declaration.getSourceFile().fileName, owner, member: symbol.getName() });
62
+ }
63
+ const selected = claimed[0];
64
+ if (!selected || !claimed.every((claim) => claim.protocol === selected.protocol && claim.member === selected.member))
65
+ return null;
66
+ // Every declaration is still accounted for. Coverage is an explicit host
67
+ // fact anchored to a primary declaration, not permission to ignore another
68
+ // overload. A caller augmentation in any other file remains unclaimed.
69
+ if (!inherited.every((declaration) => claimed.some((claim) => claim.inheritedDeclarations?.some((coverage) => coverage.declarationFileName === declaration.declarationFileName &&
70
+ coverage.owner === declaration.owner &&
71
+ coverage.member === declaration.member))))
72
+ return null;
73
+ return selected;
74
+ };
@@ -0,0 +1,429 @@
1
+ import ts from 'typescript';
2
+ import type { NamespacePathCensus } from './normalize/namespace-paths.js';
3
+ import type { DeclarationId, StructuralTypeId } from '../identity/ids.js';
4
+ import type { TypedArrayElementDomain } from '../representation/model.js';
5
+ import type { KeyedCollectionFamily, RegExpDeclarationKind, StandardBufferKind } from '../representation/policies.js';
6
+ import type { CensusCandidate } from './normalize/census.js';
7
+ import type { IdentityTable } from './normalize/identities.js';
8
+ import type { StructuralMapper } from './normalize/structural.js';
9
+ import type { StructuralTypeTable } from './model/structural-type-table.js';
10
+ import type { CommonJsWrapperDeclaration, HostNativeTypeDeclaration, HostOwnedDeclaration } from '../plugins/model.js';
11
+ /**
12
+ * The ambient host-protocol census: what this program's own declarations say
13
+ * a host owns, split out of `frontend.ts` on its own (the architecture gate's
14
+ * 800-line ceiling) rather than for any conceptual reason -- `runFrontend`
15
+ * calls exactly three things here (`hostProtocolBindings`, `ambientHostBindings`,
16
+ * `promiseDeclarationOf`) and owns the rest of the pipeline itself.
17
+ */
18
+ /**
19
+ * A declared type this program's own language surface binds to a host protocol.
20
+ *
21
+ * `protocol`/`version` name the runtime contract; nothing here names a
22
+ * framework, a package, or a file. See `hostProtocolBindings` for what
23
+ * authenticates one.
24
+ */
25
+ export interface HostProtocolBinding {
26
+ readonly protocol: string;
27
+ readonly version: number;
28
+ /**
29
+ * The type the host's own runtime carries values of this protocol in, when
30
+ * the plugin that installs the protocol stated one; `null` when it did not.
31
+ *
32
+ * This is the host's name for its own type, not a C++ spelling this compiler
33
+ * invented -- which is why it can travel through the target-neutral carrier
34
+ * and be spelled verbatim by the backend. A protocol with no stated carrier
35
+ * keeps the opaque tagged handle, which is the honest physical answer for a
36
+ * boundary nothing has described.
37
+ *
38
+ * It is also the join key everything downstream uses: the preflight claim,
39
+ * and the host member table's lookup. Thirteen declared names carry one
40
+ * `NodeHandle`, so keying on the carrier states the fact once.
41
+ */
42
+ readonly native: string | null;
43
+ /**
44
+ * The protocol's own members, as the checker's lib declaration states them --
45
+ * `null` for a protocol this walk did not classify (every construction site
46
+ * but `bindAmbientValue`'s own, and that one only for a carrier with no
47
+ * stated host type: see `hostIntrinsicMembersOf`'s own comment for why).
48
+ *
49
+ * This is the one static fact ECMA-262's own reflection questions over an
50
+ * intrinsic (`Object.getOwnPropertyDescriptor(Math, k)`, `k in Math`,
51
+ * `Object.getOwnPropertyNames(Math)`, `delete Math.k`) all reduce to: WHICH
52
+ * names are own properties, and for each, whether reading it calls into a
53
+ * signature or hands back a value. Nothing downstream may hand-list `Math`'s
54
+ * members instead of reading them from here -- that would be a second,
55
+ * syntax-free but still HAND-MAINTAINED table the checker's own lib
56
+ * declaration could silently drift out from under.
57
+ */
58
+ readonly members?: readonly HostIntrinsicMember[] | null;
59
+ /**
60
+ * True when the values of this protocol are built by the HOST rather than by
61
+ * the program, so the declared body is not a layout at any size.
62
+ *
63
+ * `derive.ts` otherwise reads a bound declaration with a data-only body as a
64
+ * struct the host returns by value (`GeolocationPosition`, `TouchSample`):
65
+ * the program receives one and reads its fields, and spelling the host's own
66
+ * struct makes clang check every member name. That rule is right for a type
67
+ * a host *hands out* and wrong for one a host *is asked to construct*: a JSX
68
+ * element is produced by an element expression, never by the program writing
69
+ * its members, so its declared body -- `{}` in gea's `JSX.Element`, `{ readonly
70
+ * nodeKind: number }` in a fixture's -- describes nothing physical at all.
71
+ * Reading it as a layout turned every element in such a program into a struct
72
+ * copy and refused emission by name.
73
+ */
74
+ readonly opaque: boolean;
75
+ }
76
+ /**
77
+ * The declared type the language gives a JSX element, bound to the JSX host
78
+ * protocol.
79
+ *
80
+ * A JSX element is the one construction whose result type the *language*
81
+ * defines by lookup rather than the program defining it by declaration: the
82
+ * checker resolves `JSX.Element` through the JSX namespace in scope, and every
83
+ * element expression in the program has that type. So asking the checker for
84
+ * the type of an element -- which the element producer already does -- is what
85
+ * identifies the declaration, and no name, path, or package is consulted to do
86
+ * it.
87
+ *
88
+ * Binding it matters because the answer would otherwise be structurally
89
+ * plausible and physically wrong. `interface Element extends GeaJsxElement {}`
90
+ * where `GeaJsxElement` is `{}` derives a `native-record-ref` to an empty
91
+ * struct: C++ that compiles, holds nothing, and renders nothing. An element is
92
+ * an opaque host handle, and `native-handle` is the carrier that says so.
93
+ *
94
+ * The binding is only a *claim* -- `preflight/run.ts` still censuses the
95
+ * protocol against `manifest.nativeProtocols`, so a target that has not
96
+ * implemented it refuses the program instead of emitting against glue that
97
+ * does not exist.
98
+ *
99
+ * An element the checker types `any` binds nothing: no JSX namespace was in
100
+ * scope, and binding a protocol to `any`'s declaration -- if it even had one --
101
+ * would claim a contract the program never established. The element producer
102
+ * refuses that program by its own route, and this stays silent rather than
103
+ * manufacturing a second, weaker answer to the same question.
104
+ *
105
+ * The carrier is asked of the host by the protocol's own name, exactly as every
106
+ * other host protocol's is (`declaredHostShape` below): a host that states what
107
+ * it holds a JSX element in gets its own type spelled, and one that states
108
+ * nothing gets the tagged handle. Leaving it unconditionally unstated is what
109
+ * made every element in a gea program a `gea::NativeHandle<...jsx_element_v1>`
110
+ * -- a tag type with no tree behind it, so an app compiled, ran, and rendered
111
+ * nothing, while the engine's real `NodeHandle` sat in the same table one
112
+ * lookup away.
113
+ */
114
+ export declare const hostProtocolBindings: (input: HostProtocolInput, census: HostCensus) => void;
115
+ export interface HostProtocolInput {
116
+ readonly checker: ts.TypeChecker;
117
+ readonly identities: IdentityTable;
118
+ readonly files: readonly ts.SourceFile[];
119
+ readonly census: readonly CensusCandidate[];
120
+ readonly types: StructuralMapper;
121
+ readonly table: StructuralTypeTable;
122
+ /** See `FrontendInput.nativeTypes`. Empty means no host states a carrier for anything. */
123
+ readonly nativeTypes: ReadonlyMap<string, string>;
124
+ /** Exact declaration-owned native type rows, which take precedence over name-only rows. */
125
+ readonly nativeTypesByDeclaration: ReadonlyMap<string, HostNativeTypeDeclaration>;
126
+ /** Exact declaration-owned singleton rows. */
127
+ readonly hostSingletonDeclarations: ReadonlyMap<string, HostOwnedDeclaration>;
128
+ /** See `FrontendInput.hostNamespaceRoots`. A name in here is a path, never a value. */
129
+ readonly hostNamespaceRoots: ReadonlySet<string>;
130
+ /** Exact declaration-owned namespace roots; configured names mask the name-only table. */
131
+ readonly hostNamespaceRootDeclarations: readonly HostOwnedDeclaration[];
132
+ /** See `FrontendInput.hostNamespacePaths`. A dotted path with one of these as a prefix is a path segment, never a value. */
133
+ readonly hostNamespacePaths: ReadonlySet<string>;
134
+ /** See `FrontendInput.hostNamespaceRootTypes`. The type a host carries the one object behind a root in. */
135
+ readonly hostNamespaceRootTypes: ReadonlyMap<string, string>;
136
+ readonly commonJsGlobals: ReadonlyMap<string, CommonJsWrapperDeclaration>;
137
+ /** The exact declaration files named by `commonJsGlobals`, as loaded by this Program. */
138
+ readonly commonJsDeclarationFiles: readonly ts.SourceFile[];
139
+ /** The program's own namespace paths (`normalize/namespace-paths.ts`), for the census's `isValueReference` rule. */
140
+ readonly namespacePaths: NamespacePathCensus;
141
+ /** TypeScript's declarationless intrinsic global object, distinguished from a caller-owned binding with the same spelling. */
142
+ readonly isIntrinsicGlobalThis: (node: ts.Node) => boolean;
143
+ }
144
+ /** What one walk of the program's own files learns about the declarations a host owns. */
145
+ export interface HostCensus {
146
+ readonly protocols: Map<DeclarationId, HostProtocolBinding>;
147
+ /** The ABI name a host defines a cell under, for every ambient value this program reads. */
148
+ readonly externals: Map<DeclarationId, string>;
149
+ readonly externalFiles: Map<DeclarationId, string>;
150
+ /**
151
+ * The structural type of every host NAMESPACE ROOT this program names, to
152
+ * the C++ type the host carries that root's one object in.
153
+ *
154
+ * Keyed by structural type rather than by declaration -- the one key in this
155
+ * census that is not a `DeclarationId`, and the difference is forced, not a
156
+ * choice. A namespace root is a VALUE, so what needs an answer is the
157
+ * carrier of the value's own type; and that type routinely has no
158
+ * declaration to key by. `window`'s is `Window & typeof globalThis`, an
159
+ * intersection whose `getSymbol()` is `undefined`, and a host is equally
160
+ * free to declare a root with an anonymous object type
161
+ * (`declare const __gea_Display: { ... }`). `representation/derive.ts` is
162
+ * keyed by structural type throughout, so this is also the key it can
163
+ * actually read; see `HostNamespaceRootPolicy`.
164
+ *
165
+ * Interning is free here: `bindAmbientValue` already asks
166
+ * `types.typeOf(type)` for the shape it looks up, so this records an id that
167
+ * exists either way rather than interning a type nothing else asked about --
168
+ * which is what `bindNativeType`'s own comment warns is order-sensitive.
169
+ */
170
+ readonly namespaceRoots: Map<StructuralTypeId, string>;
171
+ /**
172
+ * Which of those ambient declarations the STANDARD LIBRARY declares, rather
173
+ * than a host, a framework, or the program's own declaration file.
174
+ *
175
+ * `SourceFile.hasNoDefaultLib` is the answer, and it is the checker's own
176
+ * fact rather than a path guess: every `lib.*.d.ts` TypeScript ships opens
177
+ * with `/// <reference no-default-lib="true"/>`, which is precisely the
178
+ * directive that says "this file IS a standard library", and nothing else
179
+ * sets it.
180
+ *
181
+ * Read by `projection/bindings.ts` for exactly one question: whether an
182
+ * ambient name may resolve to one of the ECMAScript/WHATWG globals this
183
+ * backend implements itself (`btoa`, `encodeURIComponent`, ...). Those are
184
+ * language builtins, so the compiler owns their C++ spellings -- but the
185
+ * table is keyed by NAME, and a name match alone would silently redirect a
186
+ * program's own `declare function btoa` to this runtime's base64 codec.
187
+ * Requiring the declaration to be the standard library's is what makes the
188
+ * name safe to key on.
189
+ */
190
+ readonly standardLibrary: Set<DeclarationId>;
191
+ readonly commonJsBindings: Map<DeclarationId, 'require' | 'exports' | 'module'>;
192
+ /** Ambient declarations using a reserved wrapper spelling without the host identity. */
193
+ readonly commonJsProvenanceFailures: Set<DeclarationId>;
194
+ /** Ambient values whose complete Symbol declaration set is owned by a host singleton row. */
195
+ readonly hostSingletonBindings: Set<DeclarationId>;
196
+ /** Ambient namespace roots authenticated by their complete Symbol declaration set. */
197
+ readonly hostNamespaceBindings: Set<DeclarationId>;
198
+ }
199
+ export declare const ambientHostBindings: (input: HostProtocolInput, census: HostCensus, typedArrayElements: Map<DeclarationId, TypedArrayElementDomain>) => void;
200
+ /**
201
+ * The same nine names, for a caller that only needs to ask "is this receiver
202
+ * one of the standard TypedArray instance interfaces" and has no
203
+ * `IdentityTable`/`DeclarationId` machinery available yet to consume
204
+ * `typedArrayDeclarationsOf` below -- `flow/value-flow.ts` is built in
205
+ * `frontend.ts` before `identities` exists (see that file's own doc comment
206
+ * on `isStandardInterfaceType`). Exported so that caller can resolve each
207
+ * name through the checker itself rather than re-typing this list as a
208
+ * second, independently-maintained answer to "which nine names."
209
+ */
210
+ export declare const typedArrayInstanceInterfaceNames: readonly string[];
211
+ /** The nine instance interfaces' declaration identities, resolved by name exactly as `standardBufferDeclarationsOf` resolves `ArrayBuffer`/`DataView` -- see `typedArrayInstanceDomains`. */
212
+ export declare const typedArrayDeclarationsOf: (checker: ts.TypeChecker, identities: IdentityTable, files: readonly ts.SourceFile[], program: ts.Program, hostDeclarations?: readonly HostOwnedDeclaration[]) => Map<DeclarationId, TypedArrayElementDomain>;
213
+ /**
214
+ * The declaration identity of the standard library's own `Promise<T>`
215
+ * interface -- resolved independent of whether the program's own text ever
216
+ * names `Promise`, because an `async` function's return type mentions it
217
+ * without a single textual reference the ambient-value seed walk above could
218
+ * pick up (`typedArrayElementBindings`/`bindHostObjectClosure` both start
219
+ * from identifiers actually written in value position; `async function f()
220
+ * {}` has none).
221
+ *
222
+ * `checker.resolveName` is the public TypeChecker API for exactly this:
223
+ * "what does this name mean here", independent of any use site. Any source
224
+ * file anchors the lookup -- `Promise` is a single ambient global, not
225
+ * scoped per-file, so which file supplies the location does not change the
226
+ * answer.
227
+ *
228
+ * Routed through `identities.symbolDeclarationId` rather than a bespoke
229
+ * declaration walk: it already does alias-following and specialization-path
230
+ * resolution the same way every other declaration identity in this file is
231
+ * computed, so a program that re-exports or augments `Promise` is not a
232
+ * second code path to get wrong.
233
+ */
234
+ export declare const promiseDeclarationOf: (checker: ts.TypeChecker, identities: IdentityTable, files: readonly ts.SourceFile[]) => DeclarationId | null;
235
+ /**
236
+ * The declaration identity of the standard library's own `Date` INTERFACE --
237
+ * `lib.es5.d.ts`'s `interface Date`, the type of a Date instance, never the
238
+ * `DateConstructor` the global `Date` VALUE has.
239
+ *
240
+ * Resolved exactly the way `promiseDeclarationOf` above resolves `Promise`,
241
+ * and for the same reason: a program can receive a Date purely through an
242
+ * imported signature and never name the type itself, so `checker.resolveName`
243
+ * -- which answers "what does this name mean here" with no use site at all --
244
+ * is what makes the policy installable either way.
245
+ *
246
+ * Date is core ECMAScript with a compiler-owned native layout, the category
247
+ * `Promise<T>`, the eight TypedArray views and the four keyed collections are
248
+ * already in -- NOT a host protocol. Nothing installs it; `lib.es5.d.ts`
249
+ * declares it, and `gea::runtime::Date` (runtime/gea_runtime.h) implements
250
+ * it. Its C++ spelling therefore belongs to the backend's own tables
251
+ * (`targets/cpp/prototype/emit-prototype-date.ts`), never to a plugin package.
252
+ *
253
+ * Consulted ahead of `HostBindingPolicy` in `derive.ts` for the reason
254
+ * `PromiseDeclarationPolicy` states for itself: `Date`'s ambient interface
255
+ * body, run through `declaredBodyOf`'s data-only member stripping, is an
256
+ * EMPTY object shape (every member of `interface Date` is a method), so
257
+ * falling through seals a layout of nothing and the emitter then spells
258
+ * `d.getFullYear` as a struct field that does not exist.
259
+ */
260
+ export declare const dateDeclarationOf: (checker: ts.TypeChecker, identities: IdentityTable, files: readonly ts.SourceFile[]) => DeclarationId | null;
261
+ /**
262
+ * The declaration identity of the standard `String` WRAPPER-OBJECT interface
263
+ * (`lib.es5.d.ts`'s `interface String`), resolved exactly the way
264
+ * `dateDeclarationOf` immediately above resolves `Date`, and for the same
265
+ * reasons: `new String(x)` can reach the type through an imported signature's
266
+ * return type and never name it directly, so `checker.resolveName` -- which
267
+ * answers "what does this name mean here" independent of any use site -- is
268
+ * what makes the policy installable either way.
269
+ *
270
+ * `String` (the interface, not the `string` primitive or `StringConstructor`
271
+ * the value `String` resolves to) is core ECMAScript with a compiler-owned
272
+ * native layout, the same category `Date` is in -- see
273
+ * `StringObjectDeclarationPolicy` (representation/policies.ts) for the full
274
+ * reasoning on why this must be resolved and checked ahead of
275
+ * `HostBindingPolicy`.
276
+ */
277
+ export declare const stringObjectDeclarationOf: (checker: ts.TypeChecker, identities: IdentityTable, files: readonly ts.SourceFile[]) => DeclarationId | null;
278
+ /** Resolve intrinsic Error interfaces by declaration identity, never at a property use site. */
279
+ export declare const errorDeclarationsOf: (checker: ts.TypeChecker, identities: IdentityTable, files: readonly ts.SourceFile[]) => ReadonlySet<DeclarationId>;
280
+ /**
281
+ * The declaration identity of the standard `Generator<T, TReturn, TNext>`
282
+ * interface, resolved exactly the way `promiseDeclarationOf` above resolves
283
+ * `Promise` and for the same reasons: independence from whether the program
284
+ * ever writes the name, and one alias-following implementation shared with
285
+ * every other declaration identity in this file.
286
+ *
287
+ * `ts.SymbolFlags.Interface`, because that is what `lib.es2015.generator.d.ts`
288
+ * declares it as. A `lib` that does not install it (an `ES5`-only project)
289
+ * answers `null`, and every `function*` in such a program is then refused
290
+ * rather than mis-carried -- which is correct, since `function*` is not
291
+ * expressible under that `lib` either.
292
+ */
293
+ /**
294
+ * The declaration identity of the bare `Function` interface (`lib.es5.d.ts`'s
295
+ * `interface Function`), resolved exactly the way `stringObjectDeclarationOf`
296
+ * above resolves `String` and for the same reason: a program almost never
297
+ * writes the name, yet reaches the type constantly --
298
+ * `typeof x === 'function'` narrows an `unknown` to it, and
299
+ * `Object.prototype.constructor` is declared as it -- so `checker.resolveName`,
300
+ * which answers "what does this name mean here" independent of any use site,
301
+ * is what makes the policy installable at all.
302
+ *
303
+ * `ts.SymbolFlags.Interface`, because that is what declares it; the value
304
+ * `Function` resolves to `FunctionConstructor`, which is a different symbol
305
+ * and deliberately untouched -- an ambient constructor object really is a host
306
+ * boundary. See `FunctionDeclarationPolicy` (representation/policies.ts).
307
+ */
308
+ export declare const functionDeclarationOf: (checker: ts.TypeChecker, identities: IdentityTable, files: readonly ts.SourceFile[]) => DeclarationId | null;
309
+ /** Standard `SymbolConstructor` unique-symbol declarations, keyed by declaration identity. */
310
+ export declare const wellKnownSymbolDeclarationsOf: (checker: ts.TypeChecker, identities: IdentityTable, files: readonly ts.SourceFile[]) => ReadonlyMap<DeclarationId, string>;
311
+ /**
312
+ * The declaration identity of the standard `AsyncGenerator<T, TReturn, TNext>`
313
+ * interface -- what an `async function*` returns -- resolved exactly the way
314
+ * `generatorDeclarationOf` below resolves `Generator`.
315
+ *
316
+ * It carries the SAME `iterator(T)` cursor, and that is not an approximation:
317
+ * `gea::Promise<V>` is a settled-value box with no job queue, so every `await`
318
+ * this compiler emits is a synchronous read and an async body has run to
319
+ * completion by the time it returns. Under that model an async generator's
320
+ * `next()` hands back an already-settled result, which is exactly what the
321
+ * synchronous cursor already is (see `producers/control.ts`'s yield comment
322
+ * for the full argument, and for what a port with a real job queue would have
323
+ * to revisit alongside it).
324
+ */
325
+ export declare const asyncGeneratorDeclarationOf: (checker: ts.TypeChecker, identities: IdentityTable, files: readonly ts.SourceFile[]) => DeclarationId | null;
326
+ export declare const generatorDeclarationOf: (checker: ts.TypeChecker, identities: IdentityTable, files: readonly ts.SourceFile[]) => DeclarationId | null;
327
+ /** The standard `MapIterator<T>` returned by `Map.prototype.entries()`. */
328
+ export declare const mapIteratorDeclarationOf: (checker: ts.TypeChecker, identities: IdentityTable, files: readonly ts.SourceFile[]) => DeclarationId | null;
329
+ /**
330
+ * The declaration identity of the standard `ArrayBuffer` and `DataView`
331
+ * interfaces, resolved exactly the way `keyedCollectionDeclarationsOf` below
332
+ * resolves `Map`/`Set` and for the same two reasons.
333
+ *
334
+ * Independence from the program's own text is the first: `three.js` writes
335
+ * `function f(b: ArrayBuffer)` in files that never construct one, and a
336
+ * program that only ever receives a `DataView` from a signature names neither
337
+ * as a value. `checker.resolveName` answers "what does this name mean here"
338
+ * with no use site at all.
339
+ *
340
+ * The second is the same collision the `Map` comment describes: the
341
+ * ambient-value census ALREADY reaches `ArrayBuffer` -- through
342
+ * `Uint8ArrayConstructor`'s own modern return type `Uint8Array<ArrayBuffer>`,
343
+ * among others -- and binds it as an opaque host protocol, which is what the
344
+ * corpus's three `native-boundary:ArrayBufferConstructor@1` rows were. Consulted
345
+ * first in `derive.ts`, this policy gives the concrete byte-block carrier
346
+ * instead; the CONSTRUCTOR's own handle stays a host boundary, which is
347
+ * correct, because `ArrayBuffer` the value really is a constructor object.
348
+ */
349
+ export declare const standardBufferDeclarationsOf: (checker: ts.TypeChecker, identities: IdentityTable, files: readonly ts.SourceFile[]) => Map<DeclarationId, StandardBufferKind>;
350
+ /**
351
+ * The standard library's own NATIVE-BACKED CLASSES, bound to the carrier the
352
+ * backend implements them in.
353
+ *
354
+ * `TextEncoder` and `TextDecoder` are the pair this exists for. They are not a
355
+ * host's protocol -- nothing installs them, no plugin declares them -- and they
356
+ * are not `ArrayBuffer`'s shape either: each is a real object with methods, so
357
+ * the honest carrier is the backend's own C++ class, spelled verbatim through
358
+ * `native-handle`, exactly as an installed host's stated `nativeTypes` carrier
359
+ * is. Which names are in the set, and what each is spelled as, is the
360
+ * BACKEND's answer (`targets/cpp/host/core-globals.ts`); this function knows
361
+ * only how to resolve a name to the two declarations that carry it.
362
+ *
363
+ * Only the INSTANCE type is bound here, and the reason the CONSTRUCTOR is not
364
+ * is worth stating, because it is what shapes the rest of the route:
365
+ *
366
+ * interface TextEncoder extends TextEncoderCommon { encode(...): Uint8Array }
367
+ * declare var TextEncoder: { prototype: TextEncoder; new(): TextEncoder }
368
+ *
369
+ * The instance type is a named interface, so it binds the way every other
370
+ * declared type does. The constructor's type is an ANONYMOUS type literal --
371
+ * unlike `Uint8Array`, whose constructor is the named `Uint8ArrayConstructor`
372
+ * -- and an anonymous type reaches `representation/derive.ts` through its
373
+ * structural body, never through the declaration-keyed binding this function
374
+ * writes, so a row for it here would be a claim nothing reads. The class
375
+ * OBJECT is answered one layer down instead, by name:
376
+ * `projection/bindings.ts` gives it `host-class` storage (no cell, no extern)
377
+ * and `targets/cpp/emit-buffers.ts`'s `emitTextCodecConstruct` spells the
378
+ * construction whole. See `coreGlobalClasses`.
379
+ *
380
+ * Run AFTER `ambientHostBindings`, so it overwrites the weaker binding that
381
+ * census may already have made from the same declaration -- the identical
382
+ * precedence `standardBufferDeclarationsOf` states for `ArrayBuffer`.
383
+ */
384
+ export declare const bindStandardClasses: (input: HostProtocolInput, census: HostCensus, names: ReadonlySet<string>) => void;
385
+ export declare const keyedCollectionDeclarationsOf: (checker: ts.TypeChecker, identities: IdentityTable, files: readonly ts.SourceFile[]) => Map<DeclarationId, KeyedCollectionFamily>;
386
+ /**
387
+ * The declaration identity of each standard regular-expression interface this
388
+ * compilation's `lib` installs.
389
+ *
390
+ * Resolved exactly the way `keyedCollectionDeclarationsOf` above resolves
391
+ * `Map`, and for both of the same reasons. Independence from the program's own
392
+ * text first: a regexp LITERAL (`/ab+c/g`) names `RegExp` nowhere, and neither
393
+ * does `s.match(re)`'s `RegExpMatchArray | null` result -- the ambient-VALUE
394
+ * seed walk starts from identifiers written in value position, and a literal
395
+ * writes none. `checker.resolveName` answers "what does this name mean here"
396
+ * with no use site at all.
397
+ *
398
+ * Second, and again the reason this cannot be left to the host census: that
399
+ * census ALREADY reaches `RegExp` and binds it as a host protocol, through
400
+ * `RegExpConstructor`'s `new (pattern: string): RegExp` result. That binding
401
+ * gives every pattern an opaque `native-handle` with no layout -- so
402
+ * `re.source` has nowhere to go, and `re.lastIndex = 0` has nothing to store
403
+ * into. `derive.ts` consults this policy first, so the concrete record carrier
404
+ * wins over the opaque handle; `RegExpConstructor@1` itself is untouched.
405
+ */
406
+ export declare const regexpDeclarationsOf: (checker: ts.TypeChecker, identities: IdentityTable, files: readonly ts.SourceFile[]) => Map<DeclarationId, RegExpDeclarationKind>;
407
+ /** One own member of a reflectable host intrinsic, as `hostIntrinsicMembersOf` classifies it. */
408
+ export interface HostIntrinsicMember {
409
+ readonly name: string;
410
+ /**
411
+ * `'method'` when reading this member calls a signature (`Math.pow`);
412
+ * `'value'` when the member itself IS the thing handed back (`Math.SQRT2`).
413
+ * ECMA-262 gives the two different default attributes (21.3.1's constants
414
+ * are non-writable/non-configurable data properties; a builtin's own
415
+ * methods are writable/configurable, 10.2.4) -- this is the one bit that
416
+ * decides which set of defaults a reflection question answers from, and it
417
+ * comes from the SAME call-signature test `bindHostObjectClosure` above
418
+ * already uses to tell a method from a data member.
419
+ */
420
+ readonly kind: 'value' | 'method';
421
+ /**
422
+ * The signature's own declared arity for a `'method'`, optional and rest
423
+ * parameters excluded (`requiredArityOf`) -- ECMA-262's `length` for a
424
+ * builtin function (10.2.4 `SetFunctionLength`) counts only the leading
425
+ * required parameters. `null` for a `'value'`, which has no signature to
426
+ * measure.
427
+ */
428
+ readonly arity: number | null;
429
+ }