@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,407 @@
1
+ import ts from 'typescript';
2
+ export const emptyInstantiatedMembers = { through: () => null };
3
+ /** How deep the pairing walk goes before it stops. A member type nested past this is not worth a table entry. */
4
+ const pairingDepth = 6;
5
+ const memberNameOf = (member) => {
6
+ const name = member.name;
7
+ if (!name)
8
+ return null;
9
+ if (ts.isIdentifier(name) || ts.isStringLiteral(name) || ts.isNumericLiteral(name))
10
+ return name.text;
11
+ return null;
12
+ };
13
+ const isStatic = (member) => ts.canHaveModifiers(member) && (ts.getModifiers(member)?.some((modifier) => modifier.kind === ts.SyntaxKind.StaticKeyword) ?? false);
14
+ /**
15
+ * The declarations whose types this table pairs: the members a generic
16
+ * class or interface declares.
17
+ *
18
+ * A STATIC is excluded. The instantiated spelling of a class reference is the
19
+ * INSTANCE type, so its property table holds instance members; a static read
20
+ * off it is simply absent, and asking would either answer nothing or -- worse,
21
+ * for a name a class declares both ways -- answer with the wrong one.
22
+ */
23
+ const membersOf = (declaration) => {
24
+ if (ts.isClassLike(declaration))
25
+ return declaration.members.filter((member) => !isStatic(member));
26
+ if (ts.isInterfaceDeclaration(declaration))
27
+ return declaration.members;
28
+ return [];
29
+ };
30
+ export const createInstantiatedMembers = (checker, specializations) => {
31
+ // Keyed by declaration and ordinal, not by the asking view: a copy's member
32
+ // types are a property of the copy, and every path that passes through it
33
+ // asks the same question. `null` marks a copy with no instantiated spelling,
34
+ // so the miss is paid once.
35
+ const tables = new Map();
36
+ /**
37
+ * Whether `type` has a hole in it at all -- a type parameter, or one of the
38
+ * deferred forms that only a parameter keeps open.
39
+ *
40
+ * This is the admission test for a table entry, and without it the walk
41
+ * records an answer for CLOSED types too. That is not a harmless extra row:
42
+ * `through` is asked before every other question in `structural.ts`'s
43
+ * `translate`, so one wrong row redefines that type for the whole copy.
44
+ * hono's `PatternRouter<T>` produced exactly that -- `string` paired against
45
+ * `[T, ParamIndexMap]` through a positional walk whose two sides did not
46
+ * correspond -- and every `string` in the copy then translated as that
47
+ * tuple, which surfaced four functions away as `parts.join('')` refusing to
48
+ * ToString its elements.
49
+ *
50
+ * A closed type needs no image: it already IS its own instantiation, and the
51
+ * table exists only to answer for the ones that are not.
52
+ */
53
+ const isOpen = (type, depth, seen, owner) => {
54
+ // `Instantiable` is the checker's own name for exactly this: a type
55
+ // parameter, a conditional, an indexed access, a `keyof`, a substitution
56
+ // or a template-literal mapping -- every form that is unresolved only
57
+ // while something it names is open. Open in THIS copy's parameters,
58
+ // though, not in any parameter at all: see `isCopyHole`.
59
+ if (type.flags & ts.TypeFlags.Instantiable)
60
+ return isCopyHole(type, owner, depth);
61
+ // A primitive, a literal or an enum member has no structure to hold a
62
+ // hole and no image other than itself. Its apparent members are the
63
+ // global interface's (`Number`, `String`), which is where the walk below
64
+ // used to wander -- `number.toString(): string`, `string.concat(...:
65
+ // string[])`, `string[].map<U>` -- and come back "open" on `map`'s own
66
+ // `U`, so that `number` itself was recorded as a key.
67
+ if ((type.flags & (ts.TypeFlags.Object | ts.TypeFlags.UnionOrIntersection)) === 0)
68
+ return false;
69
+ if (depth > pairingDepth || seen.has(type))
70
+ return false;
71
+ seen.add(type);
72
+ if (type.isUnionOrIntersection())
73
+ return type.types.some((one) => isOpen(one, depth + 1, seen, owner));
74
+ for (const argument of type.aliasTypeArguments ?? [])
75
+ if (isOpen(argument, depth + 1, seen, owner))
76
+ return true;
77
+ const reference = type;
78
+ if (reference.target !== undefined) {
79
+ for (const argument of checker.getTypeArguments(reference))
80
+ if (isOpen(argument, depth + 1, seen, owner))
81
+ return true;
82
+ }
83
+ for (const property of type.getProperties()) {
84
+ const at = property.valueDeclaration ?? property.declarations?.[0];
85
+ if (at && isOpen(checker.getTypeOfSymbolAtLocation(property, at), depth + 1, seen, owner))
86
+ return true;
87
+ }
88
+ for (const signature of [...type.getCallSignatures(), ...type.getConstructSignatures()]) {
89
+ if (isOpen(signature.getReturnType(), depth + 1, seen, owner))
90
+ return true;
91
+ for (const parameter of signature.parameters) {
92
+ const at = parameter.valueDeclaration ?? parameter.declarations?.[0];
93
+ if (at && isOpen(checker.getTypeOfSymbolAtLocation(parameter, at), depth + 1, seen, owner))
94
+ return true;
95
+ }
96
+ }
97
+ return false;
98
+ };
99
+ /**
100
+ * Whether an instantiable type is gated on a parameter THIS copy fills.
101
+ *
102
+ * A type parameter is a hole of the copy when the copy's own declaration,
103
+ * or one enclosing it, writes it -- and when a class, interface or alias
104
+ * does, since those are filled by the reference the copy was minted from.
105
+ * A parameter some OTHER signature writes is not: `Array<string>.map<U>`,
106
+ * reached through a closed member's apparent type, is instantiated by the
107
+ * checker at each call and never by this copy. Counting it recorded
108
+ * `number => T["pos"]` for `setTextRange`'s copy inside `update<T>` -- the
109
+ * copy's own `T` image read through a closed key -- and every `number` in
110
+ * that copy then translated as the indexed access, whose walk re-entered
111
+ * `number` and refused it as self-referential: tsc's `Node.pos`, `id` and
112
+ * the whole `Mutable<Node>` family.
113
+ *
114
+ * The composite forms are walked through the checker's own public fields
115
+ * to the parameters they are gated on; a form this does not know stays
116
+ * open, which is the old answer and the safe one.
117
+ */
118
+ const isCopyHole = (type, owner, depth) => {
119
+ if (depth > pairingDepth)
120
+ return true;
121
+ const flags = type.flags;
122
+ if (flags & ts.TypeFlags.TypeParameter)
123
+ return parameterBelongsToCopy(type, owner);
124
+ if (flags & ts.TypeFlags.IndexedAccess) {
125
+ const access = type;
126
+ return isCopyHole(access.objectType, owner, depth + 1) || isCopyHole(access.indexType, owner, depth + 1);
127
+ }
128
+ if (flags & ts.TypeFlags.Conditional) {
129
+ const conditional = type;
130
+ return isCopyHole(conditional.checkType, owner, depth + 1) || isCopyHole(conditional.extendsType, owner, depth + 1);
131
+ }
132
+ if (flags & ts.TypeFlags.Index)
133
+ return isCopyHole(type.type, owner, depth + 1);
134
+ if (flags & ts.TypeFlags.StringMapping)
135
+ return isCopyHole(type.type, owner, depth + 1);
136
+ if (flags & ts.TypeFlags.Substitution)
137
+ return isCopyHole(type.baseType, owner, depth + 1);
138
+ if (flags & ts.TypeFlags.TemplateLiteral)
139
+ return type.types.some((one) => isCopyHole(one, owner, depth + 1));
140
+ if (type.isUnionOrIntersection())
141
+ return type.types.some((one) => isCopyHole(one, owner, depth + 1));
142
+ return (flags & ts.TypeFlags.Instantiable) !== 0;
143
+ };
144
+ /**
145
+ * `isOpen` as `pair` asks it: depth 0, a fresh `seen`. With those two fixed
146
+ * the answer is a function of the type and the owner alone, and the walk
147
+ * behind it is the expensive part of building a table -- every property and
148
+ * every signature parameter of the type, each through the checker, six
149
+ * levels down. hono asked it for the same closed member types (`Response`,
150
+ * `Promise<...>`, `Headers`) once per signature position that mentioned
151
+ * them, and paid the whole walk every time; on `hono-hello` that was the
152
+ * single largest checker cost in the frontend. Remembered per owner because
153
+ * `isCopyHole` reads the owner.
154
+ */
155
+ const openness = new Map();
156
+ const isOpenFor = (type, owner) => {
157
+ let known = openness.get(owner);
158
+ if (!known)
159
+ openness.set(owner, (known = new Map()));
160
+ const remembered = known.get(type);
161
+ if (remembered !== undefined)
162
+ return remembered;
163
+ const answer = isOpen(type, 0, new Set(), owner);
164
+ known.set(type, answer);
165
+ return answer;
166
+ };
167
+ /**
168
+ * Whether `pair` would record anything for `open` at this depth: the three
169
+ * tests `pair` itself makes before it touches the closed side, lifted out so
170
+ * a caller can make them BEFORE it reads the closed side at all.
171
+ *
172
+ * Reading the closed side is what costs. A closed member's type on the
173
+ * instantiated parent is minted by instantiating the member's declared type
174
+ * under the copy's arguments, and for hono's overload sets that is the
175
+ * conditional-and-intersection machinery of `HandlerInterface` evaluated per
176
+ * overload, per verb -- only for `pair` to look at the open side first and
177
+ * return, because the open side had no hole. The open side is read off the
178
+ * generic parent and is cheap; asking it first skips the instantiation for
179
+ * every member that was never going to be paired.
180
+ */
181
+ const admits = (open, into, depth, owner) => depth <= pairingDepth && !into.has(open) && isOpenFor(open, owner);
182
+ const parameterBelongsToCopy = (parameter, owner) => {
183
+ const declared = parameter.getSymbol()?.declarations?.[0];
184
+ if (!declared || !ts.isTypeParameterDeclaration(declared))
185
+ return true;
186
+ const holder = declared.parent;
187
+ if (!ts.isFunctionLike(holder))
188
+ return true;
189
+ for (let ancestor = owner; ancestor !== undefined; ancestor = ancestor.parent)
190
+ if (ancestor === holder)
191
+ return true;
192
+ return false;
193
+ };
194
+ const pair = (open, closed, into, depth, seen, owner) => {
195
+ if (open === closed || !admits(open, into, depth, owner))
196
+ return;
197
+ // The open side is admitted because it has a genuine hole (`admits` already
198
+ // proved that), so a closed image of `any`/`unknown` here is never the
199
+ // checker reporting a real instantiation -- it is either the checker's own
200
+ // internal error-recovery type surfacing through the public API with no
201
+ // way to tell it apart from a real `any` (observed on
202
+ // `ReadableStreamDefaultController.enqueue`: the class carries an implicit
203
+ // polymorphic `this` type argument alongside `R`, and asking for a member's
204
+ // type at the open declaration's location while only `R` is closed makes
205
+ // `getTypeOfSymbolAtLocation` fail internally and hand back `errorType`,
206
+ // which prints and flag-tests identically to `any`), or a genuine `any`/
207
+ // `unknown` binding that ordinary substitution already resolves the same
208
+ // way `through` would have. Recording it here is strictly worse than not
209
+ // recording it: `through` is asked before every other question in
210
+ // `translate`, so one wrong row collapses every occurrence of the open
211
+ // type in this copy to `any` -- exactly this method's ABI blocker. Refusing
212
+ // the entry falls back to substitution, which is the same answer when the
213
+ // image genuinely is any/unknown, and the correct signature otherwise.
214
+ if ((closed.flags & (ts.TypeFlags.Any | ts.TypeFlags.Unknown)) !== 0)
215
+ return;
216
+ into.set(open, closed);
217
+ // Deliberately NOT cut short at `depth === pairingDepth`, although every
218
+ // child below is refused at `depth + 1` and the cut would be exact. On hono
219
+ // 83% of the signatures this walk touches are those leaves, and skipping
220
+ // them saved two seconds here -- then cost ten downstream: the types the
221
+ // leaves resolve are the ones `translate`, representation and lowering go
222
+ // on to ask the checker for, and resolving them on this walk, top-down
223
+ // through the instantiation, is several times cheaper than resolving them
224
+ // from the queries those phases make. Measured 2026-09-16: normalization
225
+ // 3.9s -> 10.7s, lowering 0.9s -> 3.5s, same graph to the operation.
226
+ // A union is its ARMS and nothing else. Its properties and its call
227
+ // signatures are synthesized by the checker from every arm at once, so
228
+ // they are not the "one declared list, mapped" correspondence the walk
229
+ // below relies on: the synthesized `push` of `[[T, Params][]] | [[T,
230
+ // ParamIndexMap][], ParamStash]` carries a parameter built out of both
231
+ // arms, and pairing it positionally against the instantiated union's
232
+ // synthesized `push` recorded `[T, Params][] => [[H, RouterRoute],
233
+ // ParamIndexMap][]` -- hono's `PatternRouter.match`, whose `[handlers]`
234
+ // then had the wrong tuple element and matched neither arm of its own
235
+ // declared result. The arms themselves are matched safely, so nothing is
236
+ // lost by stopping here.
237
+ if (open.isUnion() || closed.isUnion()) {
238
+ if (open.isUnion() && closed.isUnion())
239
+ pairArms(open.types, closed.types, into, depth, seen, owner);
240
+ return;
241
+ }
242
+ if (open.isIntersection() && closed.isIntersection())
243
+ pairArms(open.types, closed.types, into, depth, seen, owner);
244
+ // The ARGUMENTS of a reference, so `Promise<WithId<TSchema>>` records an
245
+ // entry for `WithId<TSchema>` too. The target is checked, not just the
246
+ // count: two references of the same arity to different generics have
247
+ // nothing to do with each other, and a positional pairing across them
248
+ // would record an answer for an unrelated type.
249
+ const openReference = open;
250
+ const closedReference = closed;
251
+ if (openReference.target && openReference.target === closedReference.target) {
252
+ const openArguments = checker.getTypeArguments(openReference);
253
+ const closedArguments = checker.getTypeArguments(closedReference);
254
+ if (openArguments.length === closedArguments.length) {
255
+ for (let index = 0; index < openArguments.length; index += 1) {
256
+ const one = openArguments[index];
257
+ const other = closedArguments[index];
258
+ if (one && other)
259
+ pair(one, other, into, depth + 1, seen, owner);
260
+ }
261
+ }
262
+ }
263
+ // Members BY NAME. A record's own fields are where the remaining holes sit
264
+ // once the signature positions are paired -- mongodb's `Filter<TSchema>` is
265
+ // a mapped type whose every property is a `Condition<WithId<TSchema>[P]>` --
266
+ // and a name is an exact correspondence rather than a position, so nothing
267
+ // has to be assumed about ordering or about a collapse.
268
+ for (const property of open.getProperties()) {
269
+ const at = property.valueDeclaration ?? property.declarations?.[0];
270
+ if (!at)
271
+ continue;
272
+ const openMember = checker.getTypeOfSymbolAtLocation(property, at);
273
+ if (!admits(openMember, into, depth + 1, owner))
274
+ continue;
275
+ const counterpart = checker.getPropertyOfType(closed, property.getName());
276
+ if (!counterpart)
277
+ continue;
278
+ pair(openMember, checker.getTypeOfSymbolAtLocation(counterpart, at), into, depth + 1, seen, owner);
279
+ }
280
+ pairSignatures(open.getCallSignatures(), closed.getCallSignatures(), into, depth, seen, owner);
281
+ pairSignatures(open.getConstructSignatures(), closed.getConstructSignatures(), into, depth, seen, owner);
282
+ };
283
+ /**
284
+ * A union's arms, matched by IDENTITY and then by elimination -- never by
285
+ * position.
286
+ *
287
+ * The checker orders a union's members by internal type id, and an
288
+ * instantiated arm is a freshly interned type whose id bears no relation to
289
+ * the one it replaced, so the two lists are routinely in different orders.
290
+ * hono's `PatternRouter<T>` produced exactly that: an open
291
+ * `ArrayIterator<[T, ParamIndexMap]> | ArrayIterator<string> |
292
+ * ArrayIterator<[T, Params]>` against a closed list whose `Params` arm had
293
+ * moved to the front. Pairing those by position records an answer relating
294
+ * two types that are not each other's image, and because `through` is asked
295
+ * before every other question in `translate`, one such row redefines that
296
+ * type for the whole copy -- surfacing four functions away as
297
+ * `parts.join('')` refusing to ToString its elements.
298
+ *
299
+ * A CLOSED arm identifies itself: it has no hole, so instantiation left it
300
+ * alone and the same `ts.Type` object appears on both sides. Striking those
301
+ * off leaves the open arms and their images. Only a one-to-one leftover is
302
+ * unambiguous, so that is the only case that records anything; anything else
303
+ * is a collapse or a genuine ambiguity, and the honest answer is no entry.
304
+ */
305
+ const pairArms = (open, closed, into, depth, seen, owner) => {
306
+ const remaining = [...closed];
307
+ const unmatched = [];
308
+ for (const arm of open) {
309
+ const at = remaining.indexOf(arm);
310
+ if (at >= 0)
311
+ remaining.splice(at, 1);
312
+ else
313
+ unmatched.push(arm);
314
+ }
315
+ const sole = unmatched.length === 1 ? unmatched[0] : undefined;
316
+ const image = remaining.length === 1 ? remaining[0] : undefined;
317
+ if (sole && image)
318
+ pair(sole, image, into, depth + 1, seen, owner);
319
+ };
320
+ const pairSignatures = (open, closed, into, depth, seen, owner) => {
321
+ if (open.length !== closed.length)
322
+ return;
323
+ for (let index = 0; index < open.length; index += 1) {
324
+ const left = open[index];
325
+ const right = closed[index];
326
+ if (!left || !right)
327
+ continue;
328
+ const openReturn = left.getReturnType();
329
+ if (admits(openReturn, into, depth + 1, owner))
330
+ pair(openReturn, right.getReturnType(), into, depth + 1, seen, owner);
331
+ if (left.parameters.length !== right.parameters.length)
332
+ continue;
333
+ for (let position = 0; position < left.parameters.length; position += 1) {
334
+ const leftParameter = left.parameters[position];
335
+ const rightParameter = right.parameters[position];
336
+ const at = leftParameter?.valueDeclaration ?? leftParameter?.declarations?.[0];
337
+ if (!leftParameter || !rightParameter || !at)
338
+ continue;
339
+ const openParameter = checker.getTypeOfSymbolAtLocation(leftParameter, at);
340
+ if (!admits(openParameter, into, depth + 1, owner))
341
+ continue;
342
+ pair(openParameter, checker.getTypeOfSymbolAtLocation(rightParameter, at), into, depth + 1, seen, owner);
343
+ }
344
+ }
345
+ };
346
+ const build = (declaration, ordinal) => {
347
+ const copy = specializations.specializationsOf(declaration)[ordinal];
348
+ if (!copy)
349
+ return null;
350
+ const closedParent = copy.instantiated;
351
+ const signatures = copy.instantiatedSignature;
352
+ if (!closedParent && !signatures)
353
+ return null;
354
+ const table = new Map();
355
+ if (signatures)
356
+ pairSignatures([signatures[0]], [signatures[1]], table, 0, new Set(), declaration);
357
+ if (!closedParent)
358
+ return table;
359
+ for (const member of membersOf(declaration)) {
360
+ const name = memberNameOf(member);
361
+ if (name === null)
362
+ continue;
363
+ const openSymbol = checker.getSymbolAtLocation(member.name);
364
+ if (!openSymbol)
365
+ continue;
366
+ const openMember = checker.getTypeOfSymbolAtLocation(openSymbol, member);
367
+ if (!admits(openMember, table, 0, declaration))
368
+ continue;
369
+ const closedSymbol = checker.getPropertyOfType(closedParent, name);
370
+ if (!closedSymbol)
371
+ continue;
372
+ pair(openMember, checker.getTypeOfSymbolAtLocation(closedSymbol, member), table, 0, new Set(), declaration);
373
+ }
374
+ return table;
375
+ };
376
+ const tableFor = (declaration, ordinal) => {
377
+ const known = tables.get(declaration) ?? [];
378
+ const remembered = known[ordinal];
379
+ if (remembered !== undefined)
380
+ return remembered;
381
+ const built = build(declaration, ordinal);
382
+ known[ordinal] = built;
383
+ tables.set(declaration, known);
384
+ return built;
385
+ };
386
+ /**
387
+ * Innermost copy first, for the reason `createPathBinding` searches that way:
388
+ * the nearest enclosing instantiation is the one in scope.
389
+ */
390
+ return (path) => {
391
+ if (path.length === 0)
392
+ return emptyInstantiatedMembers;
393
+ return {
394
+ through: (type) => {
395
+ for (let index = path.length - 1; index >= 0; index -= 1) {
396
+ const step = path[index];
397
+ if (!step)
398
+ continue;
399
+ const answer = tableFor(step.owner, step.ordinal)?.get(type);
400
+ if (answer)
401
+ return answer;
402
+ }
403
+ return null;
404
+ }
405
+ };
406
+ };
407
+ };
@@ -0,0 +1,44 @@
1
+ import ts from 'typescript';
2
+ import type { StructuralTypeId } from '../../identity/ids.js';
3
+ import type { StructuralTypeTable } from '../model/structural-type-table.js';
4
+ /**
5
+ * One physical signature for an INTERSECTION of function types whose frames
6
+ * differ only at parameter positions.
7
+ *
8
+ * An intersection of callables is one value that must satisfy every member,
9
+ * and `derive.ts`'s `deriveIntersection` pools their signatures and hands
10
+ * them to `sharedAbiOf` as an overload set -- which refuses, correctly for an
11
+ * overload set: a caller reaching one overload through another's frame passes
12
+ * the wrong arguments. But this is not an overload set. A value of `((a: A)
13
+ * => R) & ((b: B) => R)` is a SINGLE function that has to accept an `A` and
14
+ * a `B`, so the frame it physically has takes `A | B` -- and a caller with an
15
+ * `A` in hand reaches it by the ordinary widening into that union, which is
16
+ * a conversion this compiler already renders.
17
+ *
18
+ * TypeScript builds exactly this shape by contravariance and hono hits it:
19
+ * `this.#matchResult[0].map(([[, route]]) => route)` (`request.ts:421`) has a
20
+ * receiver that is a union of two array types, so `map`'s callback parameter
21
+ * is the INTERSECTION of the two arms' callbacks. Fourteen mandatory
22
+ * obligations on two lines, and the arrow written there has one parameter
23
+ * list, which is the whole point.
24
+ *
25
+ * Congruence is required, not assumed: same arity, same minimum arity, same
26
+ * optional/rest/initializer state at every position, same receiver, same
27
+ * result. Anything else really is a set of different frames and stays an
28
+ * intersection, refused by name downstream. A member that is not a pure
29
+ * function type -- one carrying properties, or a construct signature -- is
30
+ * not this shape either; the callable-and-record intersection is what the
31
+ * ordinary intersection merge exists for.
32
+ */
33
+ export declare const joinedCallableOf: (table: StructuralTypeTable, type: ts.IntersectionType, members: readonly StructuralTypeId[]) => StructuralTypeId | null;
34
+ /**
35
+ * Join compatible index-signature arms even inside a mixed union. A table
36
+ * must keep the same storage when it enters `Table | string`: leaving its
37
+ * component table types separate there would require splitting one mutable
38
+ * object into several homogeneous dictionaries and lose aliasing.
39
+ *
40
+ * Each group requires exactly one index signature, the same key type and
41
+ * readonly state, no named members, and no call or construct signatures.
42
+ * Non-table arms and incompatible tables remain separate union members.
43
+ */
44
+ export declare const joinedIndexUnionOf: (checker: ts.TypeChecker, table: StructuralTypeTable, typeOf: (type: ts.Type) => StructuralTypeId, members: readonly ts.Type[]) => StructuralTypeId | null;
@@ -0,0 +1,143 @@
1
+ import ts from 'typescript';
2
+ /**
3
+ * One physical signature for an INTERSECTION of function types whose frames
4
+ * differ only at parameter positions.
5
+ *
6
+ * An intersection of callables is one value that must satisfy every member,
7
+ * and `derive.ts`'s `deriveIntersection` pools their signatures and hands
8
+ * them to `sharedAbiOf` as an overload set -- which refuses, correctly for an
9
+ * overload set: a caller reaching one overload through another's frame passes
10
+ * the wrong arguments. But this is not an overload set. A value of `((a: A)
11
+ * => R) & ((b: B) => R)` is a SINGLE function that has to accept an `A` and
12
+ * a `B`, so the frame it physically has takes `A | B` -- and a caller with an
13
+ * `A` in hand reaches it by the ordinary widening into that union, which is
14
+ * a conversion this compiler already renders.
15
+ *
16
+ * TypeScript builds exactly this shape by contravariance and hono hits it:
17
+ * `this.#matchResult[0].map(([[, route]]) => route)` (`request.ts:421`) has a
18
+ * receiver that is a union of two array types, so `map`'s callback parameter
19
+ * is the INTERSECTION of the two arms' callbacks. Fourteen mandatory
20
+ * obligations on two lines, and the arrow written there has one parameter
21
+ * list, which is the whole point.
22
+ *
23
+ * Congruence is required, not assumed: same arity, same minimum arity, same
24
+ * optional/rest/initializer state at every position, same receiver, same
25
+ * result. Anything else really is a set of different frames and stays an
26
+ * intersection, refused by name downstream. A member that is not a pure
27
+ * function type -- one carrying properties, or a construct signature -- is
28
+ * not this shape either; the callable-and-record intersection is what the
29
+ * ordinary intersection merge exists for.
30
+ */
31
+ export const joinedCallableOf = (table, type, members) => {
32
+ if (members.length < 2 || members.length !== type.types.length)
33
+ return null;
34
+ const pure = type.types.every((member) => member.getCallSignatures().length === 1 && member.getConstructSignatures().length === 0 && member.getProperties().length === 0);
35
+ if (!pure)
36
+ return null;
37
+ const calls = [];
38
+ for (const member of members) {
39
+ const shape = table.get(member).shape;
40
+ const call = shape.kind === 'signature' && shape.construct.length === 0 ? shape.call[0] : undefined;
41
+ if (!call || shape.kind !== 'signature' || shape.call.length !== 1)
42
+ return null;
43
+ calls.push(call);
44
+ }
45
+ const first = calls[0];
46
+ if (!first)
47
+ return null;
48
+ const congruent = calls.every((call) => call.parameters.length === first.parameters.length &&
49
+ call.minimumArity === first.minimumArity &&
50
+ call.thisParameter === first.thisParameter &&
51
+ call.result === first.result &&
52
+ call.parameters.every((parameter, index) => parameter.optional === first.parameters[index]?.optional &&
53
+ parameter.rest === first.parameters[index]?.rest &&
54
+ parameter.hasInitializer === first.parameters[index]?.hasInitializer));
55
+ if (!congruent)
56
+ return null;
57
+ const widen = (at, read) => {
58
+ const seen = [];
59
+ for (const call of calls) {
60
+ const parameter = call.parameters[at];
61
+ const id = parameter ? read(parameter) : null;
62
+ if (id !== null && !seen.includes(id))
63
+ seen.push(id);
64
+ }
65
+ const only = seen.length === 1 ? seen[0] : undefined;
66
+ return only ?? table.intern({ kind: 'union', members: seen });
67
+ };
68
+ return table.intern({
69
+ kind: 'signature',
70
+ construct: [],
71
+ call: [
72
+ {
73
+ minimumArity: first.minimumArity,
74
+ thisParameter: first.thisParameter,
75
+ result: first.result,
76
+ parameters: first.parameters.map((parameter, index) => ({
77
+ ...parameter,
78
+ type: widen(index, (one) => one.type),
79
+ slot: widen(index, (one) => one.slot)
80
+ }))
81
+ }
82
+ ]
83
+ });
84
+ };
85
+ /**
86
+ * Join compatible index-signature arms even inside a mixed union. A table
87
+ * must keep the same storage when it enters `Table | string`: leaving its
88
+ * component table types separate there would require splitting one mutable
89
+ * object into several homogeneous dictionaries and lose aliasing.
90
+ *
91
+ * Each group requires exactly one index signature, the same key type and
92
+ * readonly state, no named members, and no call or construct signatures.
93
+ * Non-table arms and incompatible tables remain separate union members.
94
+ */
95
+ export const joinedIndexUnionOf = (checker, table, typeOf, members) => {
96
+ const groups = [];
97
+ for (const member of members) {
98
+ const indexes = checker.getIndexInfosOfType(member);
99
+ const index = indexes.length === 1 ? indexes[0] : undefined;
100
+ const key = index ? keyDomainOf(index.keyType) : null;
101
+ if (!index ||
102
+ key === null ||
103
+ member.getProperties().length !== 0 ||
104
+ member.getCallSignatures().length !== 0 ||
105
+ member.getConstructSignatures().length !== 0)
106
+ continue;
107
+ const group = groups.find((candidate) => candidate.index.keyType === index.keyType && candidate.index.isReadonly === index.isReadonly);
108
+ if (group) {
109
+ group.members.push(member);
110
+ group.values.push(index.type);
111
+ }
112
+ else
113
+ groups.push({ key, index, members: [member], values: [index.type] });
114
+ }
115
+ const joined = groups.filter((group) => group.members.length > 1);
116
+ if (joined.length === 0)
117
+ return null;
118
+ const replacements = new Map();
119
+ for (const group of joined) {
120
+ const values = [...new Set(group.values.map(typeOf))];
121
+ const value = values.length === 1 ? values[0] : undefined;
122
+ const id = table.intern({
123
+ kind: 'object',
124
+ members: [],
125
+ membersDropped: false,
126
+ index: [{ key: group.key, value: value ?? table.intern({ kind: 'union', members: values }), readonly: group.index.isReadonly }]
127
+ });
128
+ for (const member of group.members)
129
+ replacements.set(member, id);
130
+ }
131
+ const result = [...new Set(members.map((member) => replacements.get(member) ?? typeOf(member)))];
132
+ return result.length === 1 ? (result[0] ?? null) : table.intern({ kind: 'union', members: result });
133
+ };
134
+ /** The key domain an index signature's key type names, or `null` for one this layer does not model. */
135
+ const keyDomainOf = (keyType) => {
136
+ if ((keyType.flags & ts.TypeFlags.String) !== 0)
137
+ return 'string';
138
+ if ((keyType.flags & ts.TypeFlags.Number) !== 0)
139
+ return 'number';
140
+ if ((keyType.flags & ts.TypeFlags.ESSymbol) !== 0)
141
+ return 'symbol';
142
+ return null;
143
+ };
@@ -0,0 +1,29 @@
1
+ import ts from 'typescript';
2
+ export declare const layoutRelevantParameterIndices: (checker: ts.TypeChecker, declaration: ts.ClassLikeDeclaration | ts.InterfaceDeclaration) => ReadonlySet<number>;
3
+ /**
4
+ * The parameter positions this class keeps in MUTABLE storage of its own.
5
+ *
6
+ * Folding two copies of a class onto one layout is only sound where the
7
+ * folded-away filling cannot be stored. `class Queue<R> { private items: R[] }`
8
+ * held at `unknown` and at `Uint8Array` is one struct storing `Uint8Array[]`
9
+ * the moment the copies fold, and the `unknown` copy then pushes a string into
10
+ * it -- measured, and it aborts at runtime reading the value back out
11
+ * ("an assertion out of a dynamic value ... is not of the declared type").
12
+ * A position listed here must never be folded; those copies are genuinely two
13
+ * layouts and split.
14
+ *
15
+ * `readonly` is NOT an exclusion, though it reads like one. A readonly field
16
+ * is still WRITTEN, by the constructor, with whatever that copy was handed:
17
+ * `class Handle<T> { constructor(readonly bag: Bag<T>) {} }` folded onto its
18
+ * `Uint8Array` copy declares the field `Bag<Uint8Array>` and the `unknown`
19
+ * copy's own constructor then stores a `Bag<unknown>` in it. Only `static`
20
+ * is excluded -- that is class state, shaped by no instantiation.
21
+ *
22
+ * A BASE's storage is this class's storage. `class ReadableStreamBYOBReader<R>
23
+ * extends ReadableStreamDefaultReader<R>` declares no member at all: the
24
+ * `stream_` field that actually carries `R` is the base's. Reading only this
25
+ * declaration's own members answered "stores nothing", so its copies folded
26
+ * onto the byte one and `getReader` on an `unknown` stream constructed a
27
+ * reader whose inherited field was typed at the other stream class.
28
+ */
29
+ export declare const parametersInInstanceStorage: (checker: ts.TypeChecker, declaration: ts.ClassLikeDeclaration | ts.InterfaceDeclaration) => ReadonlySet<number>;