@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,227 @@
1
+ import ts from 'typescript';
2
+ import { dirname, resolve } from 'node:path';
3
+ import { createPackageSourceHost } from './package-sources.js';
4
+ export const isDeclarationPath = (file) => /\.d\.(?:ts|mts|cts)$/.test(file);
5
+ export const moduleExtension = (file) => {
6
+ if (file.endsWith('.d.mts'))
7
+ return ts.Extension.Dmts;
8
+ if (file.endsWith('.d.cts'))
9
+ return ts.Extension.Dcts;
10
+ if (file.endsWith('.d.ts'))
11
+ return ts.Extension.Dts;
12
+ if (file.endsWith('.tsx'))
13
+ return ts.Extension.Tsx;
14
+ if (file.endsWith('.mts'))
15
+ return ts.Extension.Mts;
16
+ if (file.endsWith('.cts'))
17
+ return ts.Extension.Cts;
18
+ if (file.endsWith('.mjs'))
19
+ return ts.Extension.Mjs;
20
+ if (file.endsWith('.cjs'))
21
+ return ts.Extension.Cjs;
22
+ if (file.endsWith('.jsx'))
23
+ return ts.Extension.Jsx;
24
+ if (file.endsWith('.js'))
25
+ return ts.Extension.Js;
26
+ if (file.endsWith('.json'))
27
+ return ts.Extension.Json;
28
+ return ts.Extension.Ts;
29
+ };
30
+ /** The package that owns a resolved file, using the program host's own view. */
31
+ const packageRootOf = (file, host) => {
32
+ let directory = dirname(resolve(file));
33
+ for (;;) {
34
+ if (host.fileExists(`${directory}/package.json`))
35
+ return directory;
36
+ const parent = dirname(directory);
37
+ if (parent === directory)
38
+ return undefined;
39
+ directory = parent;
40
+ }
41
+ };
42
+ /**
43
+ * A declaration may describe an implementation only when the same package
44
+ * ships both. In particular, `@types/three` is a third party package and must
45
+ * not replace Three's real JavaScript source, including for type-only imports.
46
+ */
47
+ const ownedDeclaration = (declaration, implementation, host) => {
48
+ if (!declaration || !implementation)
49
+ return declaration;
50
+ const declaredPackage = packageRootOf(declaration.resolvedFileName, host);
51
+ const implementedPackage = packageRootOf(implementation.resolvedFileName, host);
52
+ return declaredPackage !== undefined && declaredPackage === implementedPackage ? declaration : undefined;
53
+ };
54
+ /** Remove type-only lookup metadata, preserving runtime condition order and null exclusions. */
55
+ const runtimeConditions = (value) => {
56
+ if (Array.isArray(value))
57
+ return value.map(runtimeConditions);
58
+ if (value === null || typeof value !== 'object')
59
+ return value;
60
+ return Object.fromEntries(Object.entries(value)
61
+ .filter(([key]) => key !== 'types' && !key.startsWith('types@'))
62
+ .map(([key, entry]) => [key, runtimeConditions(entry)]));
63
+ };
64
+ /**
65
+ * Ask the same resolver two questions, through separate caches. Hiding declarations
66
+ * only on the implementation view keeps TypeScript's exports/imports, conditions,
67
+ * paths, package self references, and nested dependency search authoritative.
68
+ * No package names, source-directory guesses, or package code execution belong here.
69
+ */
70
+ export const createModuleResolver = (host, options, declarationModules = new Set(), packageSources = []) => {
71
+ const currentDirectory = host.getCurrentDirectory?.() ?? ts.sys.getCurrentDirectory();
72
+ const canonical = ts.sys.useCaseSensitiveFileNames ? (file) => file : (file) => file.toLowerCase();
73
+ const typesCache = ts.createModuleResolutionCache(currentDirectory, canonical, options);
74
+ const runtimeCache = ts.createModuleResolutionCache(currentDirectory, canonical, options);
75
+ const sources = createPackageSourceHost(host, packageSources);
76
+ const manifests = new Map();
77
+ const runtimeHost = {
78
+ ...sources.host,
79
+ fileExists: (file) => !isDeclarationPath(file) && sources.host.fileExists(file),
80
+ readFile: (file) => {
81
+ if (!file.endsWith('/package.json'))
82
+ return sources.host.readFile(file);
83
+ if (manifests.has(file))
84
+ return manifests.get(file);
85
+ const text = sources.host.readFile(file);
86
+ if (text === undefined)
87
+ return undefined;
88
+ let result = text;
89
+ try {
90
+ const manifest = JSON.parse(text);
91
+ if (manifest !== null && typeof manifest === 'object' && !Array.isArray(manifest)) {
92
+ const fields = Object.fromEntries(Object.entries(manifest).filter(([key]) => !['types', 'typings', 'typesVersions'].includes(key)));
93
+ if ('exports' in fields)
94
+ fields.exports = runtimeConditions(fields.exports);
95
+ if ('imports' in fields)
96
+ fields.imports = runtimeConditions(fields.imports);
97
+ result = JSON.stringify(fields);
98
+ }
99
+ }
100
+ catch {
101
+ // Preserve malformed metadata for the resolver's own diagnostic behaviour.
102
+ }
103
+ manifests.set(file, result);
104
+ return result;
105
+ }
106
+ };
107
+ const nativeModule = (specifier) => declarationModules.has(specifier) ||
108
+ [...declarationModules].some((pattern) => pattern.endsWith('/*') && specifier.startsWith(pattern.slice(0, -1)));
109
+ return {
110
+ resolve: (specifier, containingFile, mode, statedTarget) => {
111
+ const typed = ts.resolveModuleName(specifier, containingFile, options, host, typesCache, undefined, mode).resolvedModule;
112
+ const native = nativeModule(specifier);
113
+ let declaration = typed && isDeclarationPath(typed.resolvedFileName) ? typed : undefined;
114
+ // A plugin that declares a module native owns its declarations, and the
115
+ // importing file is not always able to reach them: a package inside the
116
+ // module graph may import a peer the bundler resolved through the *app's*
117
+ // node_modules rather than its own, leaving `node_modules/@scope` empty
118
+ // next to the importer. The file the graph itself resolved to always lives
119
+ // inside the owning package, so ask again from there before concluding the
120
+ // declarations are missing -- otherwise the native package's runtime
121
+ // JavaScript is compiled as ordinary source and its classes collide with
122
+ // the host-bound ambient ones they shadow.
123
+ if (native && declaration === undefined && statedTarget !== undefined && !isDeclarationPath(statedTarget)) {
124
+ const owned = ts.resolveModuleName(specifier, statedTarget, options, host, typesCache, undefined, mode).resolvedModule;
125
+ if (owned && isDeclarationPath(owned.resolvedFileName))
126
+ declaration = owned;
127
+ }
128
+ if (native && declaration)
129
+ return { typeDeclaration: declaration, declaration, implementation: undefined, native };
130
+ if (statedTarget !== undefined) {
131
+ const target = { resolvedFileName: statedTarget, extension: moduleExtension(statedTarget), isExternalLibraryImport: false };
132
+ if (isDeclarationPath(statedTarget))
133
+ return { typeDeclaration: target, declaration: target, implementation: undefined, native: true };
134
+ // Fail closed rather than substituting source for a module a plugin
135
+ // declared native: no declarations is a broken installation, and the
136
+ // resulting "cannot find module" names it, where a source overlay would
137
+ // silently duplicate every host-bound type.
138
+ if (native)
139
+ return { typeDeclaration: undefined, declaration: undefined, implementation: undefined, native };
140
+ return {
141
+ typeDeclaration: declaration,
142
+ declaration: ownedDeclaration(declaration, target, host),
143
+ implementation: target,
144
+ native: false
145
+ };
146
+ }
147
+ // Relative imports inside declaration trees must continue to describe types.
148
+ // They never cause executable files to be substituted into those trees.
149
+ if (isDeclarationPath(containingFile)) {
150
+ return {
151
+ typeDeclaration: declaration,
152
+ declaration,
153
+ implementation: typed && !isDeclarationPath(typed.resolvedFileName) ? typed : undefined,
154
+ native
155
+ };
156
+ }
157
+ const resolved = ts.resolveModuleName(specifier, sources.containingFile(specifier, containingFile), options, runtimeHost, runtimeCache, undefined, mode).resolvedModule;
158
+ const source = resolved ? sources.sourceOf(resolved.resolvedFileName) : undefined;
159
+ const implementation = resolved && source ? { ...resolved, resolvedFileName: source, extension: moduleExtension(source) } : resolved;
160
+ return { typeDeclaration: declaration, declaration: ownedDeclaration(declaration, implementation, host), implementation, native };
161
+ }
162
+ };
163
+ };
164
+ export const typeOnlyModuleUse = (literal, checker, verbatim = false) => {
165
+ const erasedBinding = (name) => {
166
+ if (!checker || verbatim)
167
+ return false;
168
+ let symbol = checker.getSymbolAtLocation(name);
169
+ if (symbol && (symbol.flags & ts.SymbolFlags.Alias) !== 0)
170
+ symbol = checker.getAliasedSymbol(symbol);
171
+ return symbol !== undefined && (symbol.flags & ts.SymbolFlags.Value) === 0;
172
+ };
173
+ let node = literal.parent;
174
+ while (node) {
175
+ if (ts.isImportTypeNode(node) || ts.isJSDocImportTag(node))
176
+ return true;
177
+ if (ts.isImportDeclaration(node)) {
178
+ const clause = node.importClause;
179
+ if (clause?.isTypeOnly)
180
+ return true;
181
+ const bindings = clause?.namedBindings;
182
+ return ((!clause?.name || erasedBinding(clause.name)) &&
183
+ bindings !== undefined &&
184
+ ts.isNamedImports(bindings) &&
185
+ bindings.elements.length > 0 &&
186
+ bindings.elements.every((item) => item.isTypeOnly || erasedBinding(item.name)));
187
+ }
188
+ if (ts.isExportDeclaration(node)) {
189
+ return (node.isTypeOnly ||
190
+ (node.exportClause !== undefined &&
191
+ ts.isNamedExports(node.exportClause) &&
192
+ node.exportClause.elements.length > 0 &&
193
+ node.exportClause.elements.every((item) => item.isTypeOnly || erasedBinding(item.name))));
194
+ }
195
+ if (ts.isImportEqualsDeclaration(node))
196
+ return node.isTypeOnly;
197
+ node = node.parent;
198
+ }
199
+ return false;
200
+ };
201
+ /** A single-file source map is explicit provenance; a directory name is not. */
202
+ export const mappedTypeScriptSource = (file, host) => {
203
+ if (!/\.(?:js|mjs|cjs|jsx)$/.test(file))
204
+ return undefined;
205
+ const text = host.readFile(`${file}.map`);
206
+ if (text === undefined)
207
+ return undefined;
208
+ try {
209
+ const map = JSON.parse(text);
210
+ if (map === null || typeof map !== 'object')
211
+ return undefined;
212
+ const fields = map;
213
+ if (!Array.isArray(fields.sources) || fields.sources.length !== 1 || typeof fields.sources[0] !== 'string')
214
+ return undefined;
215
+ if (fields.sourceRoot !== undefined && typeof fields.sourceRoot !== 'string')
216
+ return undefined;
217
+ const source = fields.sources[0];
218
+ const root = fields.sourceRoot ?? '';
219
+ if (/^[a-z]+:/i.test(source) || /^[a-z]+:/i.test(root))
220
+ return undefined;
221
+ const target = resolve(dirname(file), root, source);
222
+ return /\.(?:ts|mts|cts|tsx)$/.test(target) && !isDeclarationPath(target) && host.fileExists(target) ? target : undefined;
223
+ }
224
+ catch {
225
+ return undefined;
226
+ }
227
+ };
@@ -0,0 +1,4 @@
1
+ export declare const newCalleeClassTagSourceTransform: (input: {
2
+ readonly fileName: string;
3
+ readonly text: string;
4
+ }) => string | null;
@@ -0,0 +1,64 @@
1
+ import ts from 'typescript';
2
+ const isJavaScriptFile = (fileName) => fileName.endsWith('.js') || fileName.endsWith('.mjs') || fileName.endsWith('.cjs');
3
+ const returnsAValue = (body) => body.statements.some((statement) => ts.isReturnStatement(statement) && statement.expression !== undefined);
4
+ const alreadyTagged = (node) => ts.getJSDocTags(node).some((tag) => tag.tagName.text === 'class' || tag.tagName.text === 'constructor');
5
+ /** The functions `new F()` can name in this file, by name: declarations, and `var F = function () {}` initializers. */
6
+ const constructibleFunctionsIn = (file) => {
7
+ const found = new Map();
8
+ const visit = (node) => {
9
+ if (ts.isFunctionDeclaration(node) && node.name && node.body)
10
+ found.set(node.name.text, node);
11
+ if (ts.isVariableDeclaration(node) &&
12
+ ts.isIdentifier(node.name) &&
13
+ node.initializer &&
14
+ ts.isFunctionExpression(node.initializer) &&
15
+ node.initializer.body) {
16
+ found.set(node.name.text, node.initializer);
17
+ }
18
+ ts.forEachChild(node, visit);
19
+ };
20
+ visit(file);
21
+ return found;
22
+ };
23
+ const candidatesIn = (file) => {
24
+ const functions = constructibleFunctionsIn(file);
25
+ if (functions.size === 0)
26
+ return [];
27
+ const constructed = new Set();
28
+ const called = new Set();
29
+ const visit = (node) => {
30
+ if (ts.isNewExpression(node) && ts.isIdentifier(node.expression))
31
+ constructed.add(node.expression.text);
32
+ if (ts.isCallExpression(node) && ts.isIdentifier(node.expression))
33
+ called.add(node.expression.text);
34
+ ts.forEachChild(node, visit);
35
+ };
36
+ visit(file);
37
+ const found = [];
38
+ for (const [name, fn] of functions) {
39
+ if (!constructed.has(name) || called.has(name))
40
+ continue;
41
+ if (!fn.body || returnsAValue(fn.body) || alreadyTagged(fn))
42
+ continue;
43
+ // Into an existing JSDoc block, never beside it: a second block placed
44
+ // between a `@param` block and its function detached the first one's
45
+ // parameter types (the checker read the parameters as implicit `any`).
46
+ const docs = ts.getJSDocCommentsAndTags(fn).filter(ts.isJSDoc);
47
+ const last = docs[docs.length - 1];
48
+ found.push(last ? { at: last.end - 2, text: ' @class ' } : { at: fn.getStart(file), text: '/** @class */ ' });
49
+ }
50
+ return found.sort((a, b) => a.at - b.at);
51
+ };
52
+ export const newCalleeClassTagSourceTransform = (input) => {
53
+ if (!isJavaScriptFile(input.fileName) || !input.text.includes('new '))
54
+ return null;
55
+ const file = ts.createSourceFile(input.fileName, input.text, ts.ScriptTarget.Latest, true, ts.ScriptKind.JS);
56
+ const candidates = candidatesIn(file);
57
+ if (candidates.length === 0)
58
+ return null;
59
+ let rewritten = input.text;
60
+ for (const candidate of [...candidates].reverse()) {
61
+ rewritten = `${rewritten.slice(0, candidate.at)}${candidate.text}${rewritten.slice(candidate.at)}`;
62
+ }
63
+ return rewritten;
64
+ };
@@ -0,0 +1,13 @@
1
+ import ts from 'typescript';
2
+ export interface NodeProject {
3
+ readonly root: string;
4
+ readonly manifest: Record<string, unknown>;
5
+ readonly projectFile: string | undefined;
6
+ readonly entries: readonly {
7
+ name: string;
8
+ file: string;
9
+ }[];
10
+ }
11
+ /** Parse literal launch commands, never run a project's application or shell code. */
12
+ export declare const startEntry: (script: string, scripts: Record<string, unknown>, seen?: Set<string>) => string | undefined;
13
+ export declare const discoverNodeProject: (directory: string, host?: ts.System) => NodeProject;
@@ -0,0 +1,107 @@
1
+ import ts from 'typescript';
2
+ import { dirname, resolve, basename, extname } from 'node:path';
3
+ import { createPackageSourceHost } from './package-sources.js';
4
+ const object = (value) => value !== null && typeof value === 'object' && !Array.isArray(value) ? value : {};
5
+ /** Parse literal launch commands, never run a project's application or shell code. */
6
+ export const startEntry = (script, scripts, seen = new Set()) => {
7
+ if (/[;&|`$<>\n]/.test(script))
8
+ return undefined;
9
+ const words = script.match(/"[^"\n]*"|'[^'\n]*'|[^\s]+/g)?.map((word) => word.replace(/^(['"])(.*)\1$/, '$2')) ?? [];
10
+ while (words[0] && /^[\w]+=[^\s]*$/.test(words[0]))
11
+ words.shift();
12
+ if (words[0] === 'cross-env')
13
+ words.shift();
14
+ while (words[0] && /^[\w]+=[^\s]*$/.test(words[0]))
15
+ words.shift();
16
+ const launcher = words.shift();
17
+ if (['npm', 'pnpm', 'yarn'].includes(launcher ?? '')) {
18
+ if (words[0] === 'run')
19
+ words.shift();
20
+ const name = words[0];
21
+ if (!name || seen.has(name) || typeof scripts[name] !== 'string')
22
+ return undefined;
23
+ seen.add(name);
24
+ return startEntry(scripts[name], scripts, seen);
25
+ }
26
+ if (!['node', 'tsx', 'ts-node', 'ts-node-esm'].includes(launcher ?? ''))
27
+ return undefined;
28
+ const takesValue = new Set(['--require', '-r', '--import', '--loader', '--experimental-loader', '--conditions', '-C', '--project', '-P']);
29
+ while (words[0]?.startsWith('-')) {
30
+ const flag = words.shift();
31
+ if (['-e', '--eval', '-p', '--print', '--test'].includes(flag))
32
+ return undefined;
33
+ if (takesValue.has(flag))
34
+ words.shift();
35
+ }
36
+ return words[0];
37
+ };
38
+ export const discoverNodeProject = (directory, host = ts.sys) => {
39
+ let root = resolve(directory);
40
+ while (!host.fileExists(resolve(root, 'package.json'))) {
41
+ const parent = dirname(root);
42
+ if (parent === root)
43
+ throw new Error(`No package.json found from ${directory}`);
44
+ root = parent;
45
+ }
46
+ const manifest = object(JSON.parse(host.readFile(resolve(root, 'package.json'))));
47
+ const projectFile = ts.findConfigFile(root, host.fileExists);
48
+ const sources = createPackageSourceHost(host);
49
+ const entryFile = (value) => {
50
+ if (typeof value !== 'string' || value.includes('*'))
51
+ return undefined;
52
+ const file = sources.sourceOf(resolve(root, value));
53
+ if (host.fileExists(file) && !/\.d\.[cm]?ts$/.test(file))
54
+ return file;
55
+ if (!extname(file)) {
56
+ const candidates = ['.ts', '.mts', '.cts', '.js', '.mjs', '.cjs'].map((extension) => file + extension).filter(host.fileExists);
57
+ if (candidates.length === 1)
58
+ return candidates[0];
59
+ }
60
+ return undefined;
61
+ };
62
+ const name = typeof manifest.name === 'string' ? manifest.name.split('/').pop() : basename(root);
63
+ const scripts = object(manifest.scripts);
64
+ const launch = typeof scripts.start === 'string' ? startEntry(scripts.start, scripts) : undefined;
65
+ const launched = entryFile(launch);
66
+ if (launched)
67
+ return { root, manifest, projectFile, entries: [{ name, file: launched }] };
68
+ if (launch)
69
+ throw new Error(`The start script names ${launch}, but neither it nor its declared source exists.`);
70
+ const bins = typeof manifest.bin === 'string' ? { [name]: manifest.bin } : object(manifest.bin);
71
+ if (Object.keys(bins).length > 0) {
72
+ const entries = Object.entries(bins).map(([name, value]) => {
73
+ const file = entryFile(value);
74
+ if (!file)
75
+ throw new Error(`Cannot find the source for package bin ${name}: ${String(value)}`);
76
+ return { name, file };
77
+ });
78
+ return { root, manifest, projectFile, entries };
79
+ }
80
+ const publicEntry = (value) => {
81
+ const direct = entryFile(value);
82
+ if (direct)
83
+ return direct;
84
+ const fields = object(value);
85
+ if ('.' in fields)
86
+ return publicEntry(fields['.']);
87
+ for (const [key, target] of Object.entries(fields)) {
88
+ if (!['node', 'import', 'require', 'default'].includes(key))
89
+ continue;
90
+ const file = publicEntry(target);
91
+ if (file)
92
+ return file;
93
+ }
94
+ return undefined;
95
+ };
96
+ const main = publicEntry(manifest.exports) ?? entryFile(manifest.main) ?? entryFile(manifest.source);
97
+ if (main)
98
+ return { root, manifest, projectFile, entries: [{ name, file: main }] };
99
+ const conventional = ['src/index', 'src/main', 'src/server', 'index', 'main', 'server']
100
+ .flatMap((stem) => ['.ts', '.mts', '.cts', '.js', '.mjs', '.cjs'].map((extension) => resolve(root, stem + extension)))
101
+ .filter(host.fileExists);
102
+ if (conventional.length === 1)
103
+ return { root, manifest, projectFile, entries: [{ name, file: conventional[0] }] };
104
+ throw new Error(conventional.length > 1
105
+ ? `Ambiguous application entry: ${conventional.join(', ')}. Declare scripts.start or bin in package.json.`
106
+ : 'No executable entry was found. Declare scripts.start, bin, or main in package.json.');
107
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,63 @@
1
+ // The corpus oracle asks the compiler's resolver which source implements an
2
+ // import, then lets Node/tsx execute it. It never borrows the native host shims.
3
+ import { registerHooks, isBuiltin } from 'node:module';
4
+ import { fileURLToPath, pathToFileURL } from 'node:url';
5
+ import { resolve, dirname, sep } from 'node:path';
6
+ import ts from 'typescript';
7
+ import { createModuleResolver } from './module-resolution.js';
8
+ import { defaultCompilerOptions } from './program.js';
9
+ const serialized = process.env.GEATSC_SOURCE_CONTEXT;
10
+ if (serialized) {
11
+ const context = JSON.parse(serialized);
12
+ let options = { ...defaultCompilerOptions, types: [] };
13
+ if (context.projectFile) {
14
+ const config = ts.readConfigFile(context.projectFile, ts.sys.readFile);
15
+ if (config.error)
16
+ throw new Error(ts.flattenDiagnosticMessageText(config.error.messageText, '\n'));
17
+ options = { ...options, ...ts.parseJsonConfigFileContent(config.config, ts.sys, dirname(context.projectFile)).options };
18
+ }
19
+ const resolver = createModuleResolver(ts.sys, options, new Set(), context.packageSources);
20
+ const selected = new Set();
21
+ const roots = [resolve(context.root), ...context.packageSources.map((source) => resolve(source.root))];
22
+ const inSource = (url) => {
23
+ if (!url?.startsWith('file:'))
24
+ return false;
25
+ const file = fileURLToPath(url);
26
+ return selected.has(url) || roots.some((root) => file === root || file.startsWith(`${root}${sep}`));
27
+ };
28
+ registerHooks({
29
+ resolve(specifier, hookContext, nextResolve) {
30
+ if (isBuiltin(specifier) || (!inSource(hookContext.parentURL) && !inSource(specifier)))
31
+ return nextResolve(specifier, hookContext);
32
+ if (specifier.startsWith('file:') && (specifier.includes('?') || specifier.includes('#')))
33
+ return nextResolve(specifier, hookContext);
34
+ const from = hookContext.parentURL?.startsWith('file:') ? fileURLToPath(hookContext.parentURL) : resolve(context.root, '__entry__.ts');
35
+ const name = specifier.startsWith('file:') ? fileURLToPath(specifier) : specifier;
36
+ const mode = hookContext.conditions.includes('require') ? ts.ModuleKind.CommonJS : ts.ModuleKind.ESNext;
37
+ const result = resolver.resolve(name, from, mode).implementation;
38
+ if (!result)
39
+ return nextResolve(specifier, hookContext);
40
+ const url = pathToFileURL(result.resolvedFileName).href;
41
+ selected.add(url);
42
+ return nextResolve(url, hookContext);
43
+ },
44
+ load(url, hookContext, nextLoad) {
45
+ if (!selected.has(url) || !/\.[cm]?tsx?$/.test(fileURLToPath(url)))
46
+ return nextLoad(url, hookContext);
47
+ const file = fileURLToPath(url);
48
+ const source = ts.sys.readFile(file);
49
+ if (source === undefined)
50
+ throw new Error(`Source disappeared: ${file}`);
51
+ const ast = ts.createSourceFile(file, source, ts.ScriptTarget.Latest, true);
52
+ const commonJS = file.endsWith('.cts') || ast.statements.some((statement) => ts.isExportAssignment(statement) && statement.isExportEquals);
53
+ // A source checkout may have type:commonjs while its published import
54
+ // branch is ESM. Transpile the source module itself; package-scope format
55
+ // inference would add a spurious second default export around it.
56
+ const transformed = ts.transpileModule(source, {
57
+ fileName: file,
58
+ compilerOptions: { ...options, module: commonJS ? ts.ModuleKind.CommonJS : ts.ModuleKind.ESNext, noEmit: false, declaration: false }
59
+ });
60
+ return { format: commonJS ? 'commonjs' : 'module', source: transformed.outputText, shortCircuit: true };
61
+ }
62
+ });
63
+ }
@@ -0,0 +1,143 @@
1
+ import ts from 'typescript';
2
+ import type { NamespacePathCensus } from './namespace-paths.js';
3
+ /**
4
+ * The ambient globals an installed host declares it does NOT provide.
5
+ *
6
+ * An ambient declaration is a contract with a host: `declare var VideoFrame:
7
+ * {...}` says something out there defines this. TypeScript has no way to say
8
+ * the opposite, so a compiler with no other source of truth believes every one
9
+ * of them -- and that belief is a measured silent miscompile. `typeof
10
+ * VideoFrame !== 'undefined'` folds to `true` because the value's carrier is a
11
+ * constructor, while the same unit emits `extern gea::ConstructorObject<...>
12
+ * VideoFrame;` for a symbol no object file defines. The program is told a value
13
+ * exists, takes the branch that reads `image.displayWidth` off something that
14
+ * is not a `VideoFrame`, and the failure lands in the linker or at runtime
15
+ * rather than here.
16
+ *
17
+ * three.js is written to run where these may not exist and says so in its own
18
+ * source, guarding every one with `typeof X !== 'undefined'`. A native ANGLE
19
+ * context is exactly such a place. `PluginCapabilities.absentGlobals` is where
20
+ * a host states it; this turns that statement into the one thing the rest of
21
+ * the compiler already knows how to reason about -- the type `undefined`.
22
+ *
23
+ * ## Why the type, and not a refusal or a carrier
24
+ *
25
+ * `undefined` is the language's OWN answer for a global that is not there, and
26
+ * every stage downstream already handles it: `typeof` yields `'undefined'`, the
27
+ * guard's other branch is dead, the binding is not external so no `extern` is
28
+ * emitted, and a program that reads the value anyway is refused by the ordinary
29
+ * rules for reading `undefined` rather than by a special case invented here.
30
+ *
31
+ * Refusing instead would reject a program that is correct precisely because it
32
+ * checked, which is the opposite of what the guard is for.
33
+ *
34
+ * ## One authority
35
+ *
36
+ * Answering the DECLARATION and every REFERENCE from the same table is the
37
+ * whole of it. A binding whose declaration said `undefined` while its
38
+ * references said `VideoFrameConstructor` would be two carriers for one cell --
39
+ * the defect shape this compiler has paid for repeatedly. Both routes go
40
+ * through `typeAt` below.
41
+ *
42
+ * A host that states nothing gets `emptyAbsentGlobalCensus`, whose `typeAt` is
43
+ * `() => null`, and nothing about such a program changes.
44
+ */
45
+ export interface AbsentGlobalCensus {
46
+ /**
47
+ * `undefined` when this node reads a global a host declared absent, or `null`
48
+ * when nothing here improves on the checker's answer.
49
+ *
50
+ * `null` is the normal case: the census answers only for names an installed
51
+ * host actually listed.
52
+ */
53
+ readonly typeAt: (node: ts.Node) => ts.Type | null;
54
+ /**
55
+ * `type`, unless it names an ambient TYPE a host declared absent -- in which
56
+ * case `never`.
57
+ *
58
+ * `absentGlobals` is a fact about a VALUE (`typeAt` above): a host saying
59
+ * `HTMLImageElement` is absent says the *constructor* is not there. It says
60
+ * nothing yet about the TYPE `HTMLImageElement` -- the interface a program's
61
+ * own ambient declarations (three.js's JSDoc `@param
62
+ * {(HTMLImageElement|HTMLCanvasElement)} image`, straight off lib.dom) can
63
+ * still name in a position this compiler never asked the value for. This is
64
+ * that missing type-level counterpart, built the same way and for the same
65
+ * reason: no ambient VALUE means no way for a program running on this host to
66
+ * ever hold a value of that ambient TYPE either, so a position typed
67
+ * (in part) that way can be told the arm is `never` -- the language's own
68
+ * empty type, which every existing consumer of a structural union already
69
+ * drops before building an arm (`representation/union.ts`'s `isNever`).
70
+ *
71
+ * Deliberately a `ts.Type -> ts.Type` function and not an attempt to hand
72
+ * back a narrowed union: `ts.TypeChecker.getUnionType` is not on the public
73
+ * surface (`producers/bindings.ts`'s `withoutUndefinedMember` hit the same
74
+ * wall and solved it the same way -- filter the STRUCTURAL union instead of
75
+ * reconstructing a `ts.Type`). Applying this to each member of a union
76
+ * *before* it is interned needs no such reconstruction at all: every member
77
+ * is already its own independent `ts.Type`, `getNeverType()` is public, and
78
+ * a member that becomes `never` is dropped by the existing structural rule
79
+ * with no new plumbing. See `structural.ts`'s union case for where this
80
+ * wants to be called -- `type.types.map(typeOf)` becomes
81
+ * `type.types.map((member) => typeOf(absent.substituteAbsentType(member)))`.
82
+ *
83
+ * Resolution is by SYMBOL, exactly as `typeAt` resolves by symbol rather
84
+ * than by spelling: only a type whose OWN declaration is the standard
85
+ * library's ambient one is answered, so a program's own same-named type is
86
+ * untouched. Idempotent and total on every `ts.Type` -- it is safe to call
87
+ * on anything, including a type that is not an object type at all, and it
88
+ * always returns a real type rather than `null`, because unlike `typeAt`
89
+ * there is no "no answer" case: the type is either named-absent or it is
90
+ * simply itself.
91
+ */
92
+ readonly substituteAbsentType: (type: ts.Type) => ts.Type;
93
+ /** Declared or undeclared host-absent globals answered, for measurement. */
94
+ readonly absentCount: number;
95
+ /**
96
+ * The ambient declarations this census denied.
97
+ *
98
+ * Exposed because a cell's STORAGE CLASS is decided in two places -- the
99
+ * binding producer, and the frontend's own ambient-value census that the
100
+ * projection reads (`FrontendResult.externalBindings`) -- and both have to
101
+ * reach the same answer. A declaration that stayed external in one of them
102
+ * emits `extern gea::Undefined VideoFrame;`: a symbol nothing defines, for a
103
+ * value this compiler has just concluded is not there.
104
+ */
105
+ readonly declarations: ReadonlySet<ts.Declaration>;
106
+ }
107
+ /** A census that answers for nothing, for a compilation whose hosts state no absent name. */
108
+ export declare const emptyAbsentGlobalCensus: AbsentGlobalCensus;
109
+ /** Whether a declaration is the PLATFORM's rather than the program's -- see `platformDeclarationTest`. */
110
+ type PlatformTest = (node: ts.Declaration) => boolean;
111
+ /**
112
+ * The test for "this declaration is the platform's, not the program's".
113
+ *
114
+ * `hasNoDefaultLib` alone is too narrow. `@types/webxr` is a DefinitelyTyped
115
+ * package describing a browser API; it stands in exactly the relation to the
116
+ * program that `lib.dom.d.ts` does -- the program installed it, did not write
117
+ * it, and holds no opinion about whether the platform implements it. Restricted
118
+ * to `hasNoDefaultLib`, a host could deny `HTMLImageElement` and not
119
+ * `XRWebGLLayer`, which is an accident of which file TypeScript happens to ship
120
+ * rather than a distinction about authority. It cost the three.js app 81 unmet
121
+ * obligations for `XRWebGLLayer@1`/`XRWebGLBinding@1` -- names three.js itself
122
+ * guards with `typeof XRWebGLBinding !== 'undefined'`.
123
+ *
124
+ * What the original narrowness protected is still protected: a PROGRAM's own
125
+ * `declare var VideoFrame` is an assertion about its own environment, and
126
+ * denying that would be a larger claim than a host may make. That is why the
127
+ * widening is `isDeclarationFile` AND `isSourceFileFromExternalLibrary` -- the
128
+ * program's own sources, including its own `.d.ts` files, are untouched, and
129
+ * `isSourceFileFromExternalLibrary` is the program's own answer rather than a
130
+ * path guess.
131
+ */
132
+ export declare const platformDeclarationTest: (program: ts.Program) => PlatformTest;
133
+ /**
134
+ * The census for one program.
135
+ *
136
+ * Resolve the name's symbol before applying a host fact. A program's own
137
+ * `const ImageData = ...`, or an import bound to that name, stays untouched.
138
+ * Platform declarations and references with no declaration can both receive
139
+ * the host's explicit absence fact. Missing declarations alone never establish
140
+ * absence: the installed host must have listed the name independently.
141
+ */
142
+ export declare const censusAbsentGlobals: (checker: ts.TypeChecker, files: readonly ts.SourceFile[], absent: ReadonlySet<string>, platform: PlatformTest, namespacePaths: NamespacePathCensus) => AbsentGlobalCensus;
143
+ export {};