@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,77 @@
1
+ import ts from 'typescript';
2
+ /**
3
+ * The host effect contract: what a BODILESS host declaration states about the
4
+ * native implementation behind it.
5
+ *
6
+ * A `declare function` has no body for the host-mutation census to read, so
7
+ * a call to one was an unknown callee, and handing it any value the census
8
+ * could not prove non-global wildcarded every host binding and every
9
+ * intrinsic prototype. The native WebGL upload functions only read the bytes
10
+ * of the typed array they are given; nothing in the program could say so.
11
+ *
12
+ * `@gea-host-inert` on the declaration says so. It states, for the native
13
+ * implementation, all of:
14
+ *
15
+ * - it does not retain any argument, or anything reachable from one, past
16
+ * the call;
17
+ * - it does not write, define, delete or re-prototype a property of any
18
+ * JavaScript object -- the global object, an intrinsic, or an argument;
19
+ * - it does not invoke program code (no callbacks, no accessors).
20
+ *
21
+ * Only the declaration can carry it, and only a declaration with no body:
22
+ * a body is censused like any other code, and a contract beside one would be
23
+ * a second, unverifiable authority. It is trusted the way every native
24
+ * declaration's signature is trusted -- which is exactly why it is narrow,
25
+ * explicit per declaration, and never inferred.
26
+ */
27
+ export declare const hostInertTagName = "gea-host-inert";
28
+ /** This one declaration states the inert host contract. */
29
+ export declare const declarationStatesHostInert: (declaration: ts.Declaration) => boolean;
30
+ /**
31
+ * Every declaration of the symbol states the contract. An overload or merged
32
+ * declaration without it is a callee the contract does not cover, and a
33
+ * single uncovered declaration refuses the whole symbol.
34
+ */
35
+ export declare const symbolStatesHostInert: (symbol: ts.Symbol | undefined) => boolean;
36
+ /**
37
+ * The SECOND, narrower host effect contract: `@gea-host-no-property-writes`.
38
+ *
39
+ * `@gea-host-inert` states three things at once, and a native that breaks any
40
+ * one of them can carry none of it. Measured on `hono-hello`: of the natives
41
+ * whose calls hold the global host-mutation census open, every single one
42
+ * breaks a clause the census was not asking about --
43
+ * `__gea_node_timer_start_timeout` and `__gea_http_serve` retain a callback
44
+ * and later run it, `__gea_node_net_read` returns a fresh Buffer -- while none
45
+ * of them writes a property on anything.
46
+ *
47
+ * So this states ONLY the middle clause: the native does not write, define,
48
+ * delete or re-prototype a property of any JavaScript object -- the global
49
+ * object, an intrinsic, an argument, or anything reachable from one. It says
50
+ * nothing about retention, and nothing about invoking program code: a native
51
+ * MAY store an argument and MAY call back into the program, because the
52
+ * writes that callback performs are censused where that callback is WRITTEN,
53
+ * which is the whole argument the argument stamp rests on.
54
+ *
55
+ * Building and returning a NEW object is not a write under this contract: the
56
+ * object did not exist for the program to observe, and installing its own
57
+ * initial keys changes nothing the program already held. `__gea_node_net_read`
58
+ * returning a Buffer and `__gea_node_process_env` returning a fresh record
59
+ * both qualify.
60
+ *
61
+ * Consumed at exactly one place -- the census's unknown-callee ARGUMENT stamp,
62
+ * whose only question is which keys a callee can put on the intrinsics its
63
+ * arguments reach. Every other consumer of a host contract keeps asking for
64
+ * the full `@gea-host-inert`, because retention and re-entry matter to them.
65
+ */
66
+ export declare const hostNoPropertyWritesTagName = "gea-host-no-property-writes";
67
+ /** This one declaration states the no-property-writes contract. */
68
+ export declare const declarationStatesNoPropertyWrites: (declaration: ts.Declaration) => boolean;
69
+ /**
70
+ * Every declaration states one of the two contracts. `@gea-host-inert` is
71
+ * strictly stronger, so a symbol whose declarations mix the two still writes
72
+ * no property; one declaration carrying neither refuses the whole symbol, for
73
+ * the same reason it does above.
74
+ */
75
+ export declare const symbolWritesNoHostProperty: (symbol: ts.Symbol | undefined) => boolean;
76
+ /** Does this symbol name one of those? Asked of every declaration: one match is enough. */
77
+ export declare const symbolIsStandardLibraryMutator: (symbol: ts.Symbol | undefined) => boolean;
@@ -0,0 +1,143 @@
1
+ import ts from 'typescript';
2
+ import { isAmbientDeclaration } from '../ambient.js';
3
+ /**
4
+ * The host effect contract: what a BODILESS host declaration states about the
5
+ * native implementation behind it.
6
+ *
7
+ * A `declare function` has no body for the host-mutation census to read, so
8
+ * a call to one was an unknown callee, and handing it any value the census
9
+ * could not prove non-global wildcarded every host binding and every
10
+ * intrinsic prototype. The native WebGL upload functions only read the bytes
11
+ * of the typed array they are given; nothing in the program could say so.
12
+ *
13
+ * `@gea-host-inert` on the declaration says so. It states, for the native
14
+ * implementation, all of:
15
+ *
16
+ * - it does not retain any argument, or anything reachable from one, past
17
+ * the call;
18
+ * - it does not write, define, delete or re-prototype a property of any
19
+ * JavaScript object -- the global object, an intrinsic, or an argument;
20
+ * - it does not invoke program code (no callbacks, no accessors).
21
+ *
22
+ * Only the declaration can carry it, and only a declaration with no body:
23
+ * a body is censused like any other code, and a contract beside one would be
24
+ * a second, unverifiable authority. It is trusted the way every native
25
+ * declaration's signature is trusted -- which is exactly why it is narrow,
26
+ * explicit per declaration, and never inferred.
27
+ */
28
+ export const hostInertTagName = 'gea-host-inert';
29
+ const isBodilessCallableDeclaration = (declaration) => ((ts.isFunctionDeclaration(declaration) || ts.isMethodDeclaration(declaration)) && declaration.body === undefined) ||
30
+ ts.isMethodSignature(declaration) ||
31
+ (ts.isSetAccessorDeclaration(declaration) && declaration.body === undefined);
32
+ /** This one declaration states the inert host contract. */
33
+ export const declarationStatesHostInert = (declaration) => isBodilessCallableDeclaration(declaration) &&
34
+ isAmbientDeclaration(declaration) &&
35
+ ts.getJSDocTags(declaration).some((tag) => tag.tagName.text === hostInertTagName);
36
+ /**
37
+ * Every declaration of the symbol states the contract. An overload or merged
38
+ * declaration without it is a callee the contract does not cover, and a
39
+ * single uncovered declaration refuses the whole symbol.
40
+ */
41
+ export const symbolStatesHostInert = (symbol) => {
42
+ const declarations = symbol?.declarations ?? [];
43
+ return declarations.length > 0 && declarations.every(declarationStatesHostInert);
44
+ };
45
+ /**
46
+ * The SECOND, narrower host effect contract: `@gea-host-no-property-writes`.
47
+ *
48
+ * `@gea-host-inert` states three things at once, and a native that breaks any
49
+ * one of them can carry none of it. Measured on `hono-hello`: of the natives
50
+ * whose calls hold the global host-mutation census open, every single one
51
+ * breaks a clause the census was not asking about --
52
+ * `__gea_node_timer_start_timeout` and `__gea_http_serve` retain a callback
53
+ * and later run it, `__gea_node_net_read` returns a fresh Buffer -- while none
54
+ * of them writes a property on anything.
55
+ *
56
+ * So this states ONLY the middle clause: the native does not write, define,
57
+ * delete or re-prototype a property of any JavaScript object -- the global
58
+ * object, an intrinsic, an argument, or anything reachable from one. It says
59
+ * nothing about retention, and nothing about invoking program code: a native
60
+ * MAY store an argument and MAY call back into the program, because the
61
+ * writes that callback performs are censused where that callback is WRITTEN,
62
+ * which is the whole argument the argument stamp rests on.
63
+ *
64
+ * Building and returning a NEW object is not a write under this contract: the
65
+ * object did not exist for the program to observe, and installing its own
66
+ * initial keys changes nothing the program already held. `__gea_node_net_read`
67
+ * returning a Buffer and `__gea_node_process_env` returning a fresh record
68
+ * both qualify.
69
+ *
70
+ * Consumed at exactly one place -- the census's unknown-callee ARGUMENT stamp,
71
+ * whose only question is which keys a callee can put on the intrinsics its
72
+ * arguments reach. Every other consumer of a host contract keeps asking for
73
+ * the full `@gea-host-inert`, because retention and re-entry matter to them.
74
+ */
75
+ export const hostNoPropertyWritesTagName = 'gea-host-no-property-writes';
76
+ /** This one declaration states the no-property-writes contract. */
77
+ export const declarationStatesNoPropertyWrites = (declaration) => isBodilessCallableDeclaration(declaration) &&
78
+ isAmbientDeclaration(declaration) &&
79
+ ts.getJSDocTags(declaration).some((tag) => tag.tagName.text === hostNoPropertyWritesTagName);
80
+ /**
81
+ * Every declaration states one of the two contracts. `@gea-host-inert` is
82
+ * strictly stronger, so a symbol whose declarations mix the two still writes
83
+ * no property; one declaration carrying neither refuses the whole symbol, for
84
+ * the same reason it does above.
85
+ */
86
+ export const symbolWritesNoHostProperty = (symbol) => {
87
+ const declarations = symbol?.declarations ?? [];
88
+ return (declarations.length > 0 &&
89
+ declarations.every((declaration) => declarationStatesHostInert(declaration) || declarationStatesNoPropertyWrites(declaration)));
90
+ };
91
+ /**
92
+ * The standard-library callables ECMA-262 specifies to create, delete or
93
+ * redefine a property on an object reachable from their arguments or `this`.
94
+ *
95
+ * A library callable that escapes as a VALUE -- `.filter( Boolean )`,
96
+ * `const decoder = decodeURIComponent`, `emitter.on( 'x', console.error )` --
97
+ * is not a reason to distrust an intrinsic. These are spec-defined functions
98
+ * whose behaviour this compiler already relies on everywhere it says
99
+ * "intrinsic", and outside this list none of them writes a program-visible
100
+ * key: the most any of them does is RUN program code (a callback, an
101
+ * accessor, a `toJSON`), which is censused where that code is written. Only
102
+ * the ones below can install a key themselves, and the census's own
103
+ * reflection-mutator list is this table's seed.
104
+ *
105
+ * Keyed by DECLARING INTERFACE and member so that `Console.error` can never
106
+ * be confused with a mutator of the same spelling, with `''` for the global
107
+ * function declarations that have no interface. This is a statement about the
108
+ * standard library, which is one fixed, versioned text; it is NOT the host
109
+ * contract. `@gea-host-inert` stays per declaration and never inferred,
110
+ * because a host native's behaviour is stated by whoever wrote the native.
111
+ */
112
+ const LIBRARY_MUTATOR_MEMBERS = new Map([
113
+ ['ObjectConstructor', new Set(['assign', 'defineProperty', 'defineProperties', 'setPrototypeOf', 'freeze', 'seal', 'preventExtensions'])],
114
+ ['Reflect', new Set(['set', 'defineProperty', 'deleteProperty', 'setPrototypeOf', 'preventExtensions', 'apply', 'construct'])],
115
+ ['Array', new Set(['push', 'pop', 'shift', 'unshift', 'splice', 'sort', 'reverse', 'fill', 'copyWithin'])],
116
+ ['Function', new Set(['call', 'apply', 'bind'])],
117
+ ['CallableFunction', new Set(['call', 'apply', 'bind'])],
118
+ ['NewableFunction', new Set(['call', 'apply', 'bind'])],
119
+ ['', new Set(['eval', 'Function'])]
120
+ ]);
121
+ const TYPED_ARRAY_MUTATORS = new Set(['set', 'sort', 'reverse', 'fill', 'copyWithin']);
122
+ const TYPED_ARRAY_INTERFACE = /^(Int8|Uint8|Uint8Clamped|Int16|Uint16|Int32|Uint32|Float16|Float32|Float64|BigInt64|BigUint64)Array$/;
123
+ const declaringInterfaceName = (declaration) => {
124
+ const owner = declaration.parent;
125
+ if (owner && (ts.isInterfaceDeclaration(owner) || ts.isClassDeclaration(owner)))
126
+ return owner.name?.text ?? '';
127
+ if (owner && ts.isModuleBlock(owner) && ts.isModuleDeclaration(owner.parent))
128
+ return owner.parent.name.getText();
129
+ if (owner && ts.isModuleDeclaration(owner))
130
+ return owner.name.getText();
131
+ return '';
132
+ };
133
+ /** Does this symbol name one of those? Asked of every declaration: one match is enough. */
134
+ export const symbolIsStandardLibraryMutator = (symbol) => (symbol?.declarations ?? []).some((declaration) => {
135
+ const member = declaration.name;
136
+ const name = member && (ts.isIdentifier(member) || ts.isStringLiteralLike(member)) ? member.text : symbol?.getName();
137
+ if (name === undefined)
138
+ return false;
139
+ const owner = declaringInterfaceName(declaration);
140
+ if (TYPED_ARRAY_INTERFACE.test(owner))
141
+ return TYPED_ARRAY_MUTATORS.has(name);
142
+ return LIBRARY_MUTATOR_MEMBERS.get(owner)?.has(name) === true;
143
+ });
@@ -0,0 +1,38 @@
1
+ import type ts from 'typescript';
2
+ import type { ValueFlowIndex } from './flow/model.js';
3
+ import { type ComputedKeySetAuthority } from './flow/computed-key-set.js';
4
+ import { type IntrinsicProtocolRequirement } from './deferred-intrinsic-protocols.js';
5
+ /**
6
+ * A computed write key the host-mutation census may narrow from `every` to a
7
+ * finite set -- three's `this[ key ] = newValue` under `for ( const key in
8
+ * values )` in `Material.setValues` and `Texture.setValues`.
9
+ *
10
+ * `computedKeySetOf` proves the set under intrinsic assumptions. The census
11
+ * cannot publish those as ledger obligations (a failed one would be a
12
+ * certification diagnostic, where a refused key set only costs precision),
13
+ * so it takes them as data and checks them against its own final result:
14
+ *
15
+ * - "Object.prototype has no enumerable key" (the `for-in` arm) is an
16
+ * INDUCTIVE invariant the census proves itself. The only enumerable keys
17
+ * Object.prototype can have are keys this program wrote on it -- through a
18
+ * receiver that may be any intrinsic, or on Object.prototype itself -- so
19
+ * the census adds every such key to the set, re-running until that set of
20
+ * keys stops growing. Nothing here assumes the receiver of the write is
21
+ * anything in particular: the census proves that side independently.
22
+ * - `Object.keys` and the Array iteration protocol are per-key requirements
23
+ * the census discharges against its own taint; a failed one re-runs the
24
+ * census with every computed key unknown.
25
+ * - Anything the key-set proof registers on the flow's ledger by itself is
26
+ * captured here, never published, and checked the same way.
27
+ * @semanticCategory generic-primitive
28
+ */
29
+ export interface CensusComputedKeys {
30
+ /** Every key the expression can evaluate to, apart from Object.prototype's inherited enumerable keys. */
31
+ readonly keys: ReadonlySet<string>;
32
+ /** The set also holds every enumerable key Object.prototype may carry (a `for-in` binding). */
33
+ readonly inheritsObjectPrototypeKeys: boolean;
34
+ /** Intrinsic obligations the proof assumed; the census checks them against its own result. */
35
+ readonly requirements: readonly IntrinsicProtocolRequirement[];
36
+ }
37
+ export type CensusComputedKeysOf = (key: ts.Expression) => CensusComputedKeys | null;
38
+ export declare const createCensusComputedKeysOf: (checker: ts.TypeChecker, flow: ValueFlowIndex, authority: Omit<ComputedKeySetAuthority, "intrinsicIntact">) => CensusComputedKeysOf;
@@ -0,0 +1,26 @@
1
+ import { arrayIterationKeys, computedKeySetOf } from './flow/computed-key-set.js';
2
+ import { deferredIntrinsicProtocolLedgerOf } from './deferred-intrinsic-protocols.js';
3
+ export const createCensusComputedKeysOf = (checker, flow, authority) => {
4
+ const ledger = deferredIntrinsicProtocolLedgerOf(flow);
5
+ return (key) => {
6
+ let inherits = false;
7
+ const assumed = [];
8
+ const work = () => computedKeySetOf(checker, flow, key, {
9
+ ...authority,
10
+ checker,
11
+ intrinsicIntact: (intrinsic, member, location) => {
12
+ if (intrinsic === 'Object' && member === undefined)
13
+ inherits = true;
14
+ else if (intrinsic === 'Object')
15
+ assumed.push({ intrinsic, member: member, location });
16
+ else
17
+ assumed.push({ intrinsic, prototypeKeys: arrayIterationKeys, location });
18
+ return true;
19
+ }
20
+ });
21
+ const run = ledger ? ledger.capture(work) : { value: work(), requirements: [] };
22
+ if (run.value === null)
23
+ return null;
24
+ return { keys: run.value, inheritsObjectPrototypeKeys: inherits, requirements: [...assumed, ...run.requirements] };
25
+ };
26
+ };
@@ -0,0 +1,66 @@
1
+ import ts from 'typescript';
2
+ import { type MutationKey } from './host-mutation-keys.js';
3
+ /** `__proto__` is never an ordinary key: a [[Set]] of it runs the accessor that replaces a prototype. */
4
+ export declare const keyOfName: (name: string) => MutationKey;
5
+ /**
6
+ * Whether a key expression is a PROGRAM-DECLARED unique symbol -- one this
7
+ * program made with `Symbol()`, not one the standard library declares on
8
+ * `SymbolConstructor`.
9
+ *
10
+ * Such a key names NOTHING this census models. A symbol is not a string and
11
+ * never converts to one implicitly, so it can touch no string-named
12
+ * obligation; and symbol-keyed obligations are spelled `@@iterator` after the
13
+ * WELL-KNOWN symbols, which a program-declared one can never be. So the write
14
+ * is invisible to every question the census asks -- which is why
15
+ * `keysOfKeyExpression` answers it with no keys at all rather than `every`.
16
+ *
17
+ * ⛔ Standard-library-declared is the whole guard, in both directions.
18
+ * `X.prototype[Symbol.iterator] = f` genuinely redefines intrinsic behavior
19
+ * under a non-string key, so it must stay `every`. A bare `symbol`-typed key
20
+ * (not `unique`) names an unknown symbol and fails closed the same way.
21
+ *
22
+ * The unique-symbol TYPE is sound to trust here in a way a string-literal type
23
+ * is not (see `createMutationKeyReader`'s own note): a `unique symbol` type is
24
+ * inhabited by exactly one value by construction, and there is no widening
25
+ * conversion into it the way an `any` widens into a `'a' | 'b'` slot.
26
+ */
27
+ export declare const isProgramDeclaredSymbolKey: (type: ts.Type) => boolean;
28
+ /**
29
+ * Which keys a write names, for the host-mutation census.
30
+ *
31
+ * Every answer here is a SUPERSET of the keys the write can reach at run
32
+ * time; `every` is the answer whenever this reader cannot prove less. Three
33
+ * sources are trusted and nothing else:
34
+ *
35
+ * - the syntax: a property name, a string literal, a numeric literal (whose
36
+ * key is its canonical `ToString`, so `o[1.50]` is "1.5");
37
+ * - the number representation: an expression the checker types as `number`
38
+ * (or a number literal type, or a numeric enum) is carried as a native
39
+ * double, so its key is some `ToString(Number)` -- the NUMERIC domain, not
40
+ * an array index, since `-1`, `1.5` and `NaN` are numbers too.
41
+ * - the boolean representation: an expression the checker types as `boolean`
42
+ * is carried as a native two-state scalar, so its key is exactly "true" or
43
+ * "false" (`ToPropertyKey` of a boolean is `ToString(Boolean)`).
44
+ *
45
+ * A string-literal TYPE is deliberately not trusted: nothing in the compiled
46
+ * representation stops an `any` from carrying "zzz" into a cell typed `'a'`.
47
+ * A caller-supplied `computedKeysOf` authority may prove a finite key set;
48
+ * that is its claim to justify, and `null` from it keeps the key unknown.
49
+ * (The census's own authority is `host-mutation-computed-keys.ts`.)
50
+ */
51
+ export declare const createMutationKeyReader: (checker: ts.TypeChecker, computedKeysOf: (key: ts.Expression) => readonly MutationKey[] | null, publishedTypeAt?: (key: ts.Expression) => ts.Type) => {
52
+ readonly keysOfKeyExpression: (expression: ts.Expression | undefined) => readonly MutationKey[];
53
+ readonly keysOfAccess: (access: ts.PropertyAccessExpression | ts.ElementAccessExpression) => readonly MutationKey[];
54
+ readonly keysOfPropertyName: (name: ts.PropertyName) => readonly MutationKey[];
55
+ };
56
+ /**
57
+ * Keys a host or library ACCESSOR owns. A write of such a key through an
58
+ * unknown receiver may run that accessor, whose effect no body states, so
59
+ * the census treats the key as unknown. `__proto__` is always one: it is
60
+ * `Object.prototype`'s accessor, which the standard library does not
61
+ * declare, and running it replaces a prototype.
62
+ *
63
+ * A setter covered by `@gea-host-inert` states its effect and is not listed;
64
+ * a key is listed when ANY declaration of a setter by that name is uncovered.
65
+ */
66
+ export declare const hostAccessorNamesOf: (declarationFiles: readonly ts.SourceFile[], files: readonly ts.SourceFile[]) => ReadonlySet<string>;
@@ -0,0 +1,192 @@
1
+ import ts from 'typescript';
2
+ import { isAmbientDeclaration } from '../ambient.js';
3
+ import { unwrapErasedExpression } from './producers/erasure.js';
4
+ import { declarationStatesHostInert } from './host-effect-contracts.js';
5
+ import { everyKey, namedKey, numericKeys, numericLiteralKey } from './host-mutation-keys.js';
6
+ /** `__proto__` is never an ordinary key: a [[Set]] of it runs the accessor that replaces a prototype. */
7
+ export const keyOfName = (name) => (name === '__proto__' ? everyKey : namedKey(name));
8
+ /**
9
+ * Whether a key expression is a PROGRAM-DECLARED unique symbol -- one this
10
+ * program made with `Symbol()`, not one the standard library declares on
11
+ * `SymbolConstructor`.
12
+ *
13
+ * Such a key names NOTHING this census models. A symbol is not a string and
14
+ * never converts to one implicitly, so it can touch no string-named
15
+ * obligation; and symbol-keyed obligations are spelled `@@iterator` after the
16
+ * WELL-KNOWN symbols, which a program-declared one can never be. So the write
17
+ * is invisible to every question the census asks -- which is why
18
+ * `keysOfKeyExpression` answers it with no keys at all rather than `every`.
19
+ *
20
+ * ⛔ Standard-library-declared is the whole guard, in both directions.
21
+ * `X.prototype[Symbol.iterator] = f` genuinely redefines intrinsic behavior
22
+ * under a non-string key, so it must stay `every`. A bare `symbol`-typed key
23
+ * (not `unique`) names an unknown symbol and fails closed the same way.
24
+ *
25
+ * The unique-symbol TYPE is sound to trust here in a way a string-literal type
26
+ * is not (see `createMutationKeyReader`'s own note): a `unique symbol` type is
27
+ * inhabited by exactly one value by construction, and there is no widening
28
+ * conversion into it the way an `any` widens into a `'a' | 'b'` slot.
29
+ */
30
+ export const isProgramDeclaredSymbolKey = (type) => {
31
+ const members = type.isUnion() ? type.types : [type];
32
+ return (members.length > 0 &&
33
+ members.every((member) => (member.flags & ts.TypeFlags.UniqueESSymbol) !== 0 &&
34
+ (member.symbol.declarations ?? []).length > 0 &&
35
+ !(member.symbol.declarations ?? []).some((declaration) => declaration.getSourceFile().hasNoDefaultLib)));
36
+ };
37
+ /**
38
+ * Which keys a write names, for the host-mutation census.
39
+ *
40
+ * Every answer here is a SUPERSET of the keys the write can reach at run
41
+ * time; `every` is the answer whenever this reader cannot prove less. Three
42
+ * sources are trusted and nothing else:
43
+ *
44
+ * - the syntax: a property name, a string literal, a numeric literal (whose
45
+ * key is its canonical `ToString`, so `o[1.50]` is "1.5");
46
+ * - the number representation: an expression the checker types as `number`
47
+ * (or a number literal type, or a numeric enum) is carried as a native
48
+ * double, so its key is some `ToString(Number)` -- the NUMERIC domain, not
49
+ * an array index, since `-1`, `1.5` and `NaN` are numbers too.
50
+ * - the boolean representation: an expression the checker types as `boolean`
51
+ * is carried as a native two-state scalar, so its key is exactly "true" or
52
+ * "false" (`ToPropertyKey` of a boolean is `ToString(Boolean)`).
53
+ *
54
+ * A string-literal TYPE is deliberately not trusted: nothing in the compiled
55
+ * representation stops an `any` from carrying "zzz" into a cell typed `'a'`.
56
+ * A caller-supplied `computedKeysOf` authority may prove a finite key set;
57
+ * that is its claim to justify, and `null` from it keeps the key unknown.
58
+ * (The census's own authority is `host-mutation-computed-keys.ts`.)
59
+ */
60
+ export const createMutationKeyReader = (checker, computedKeysOf, publishedTypeAt = (key) => checker.getTypeAtLocation(key)) => {
61
+ const numericType = (type) => type.isUnion()
62
+ ? type.types.every(numericType)
63
+ : (type.flags & ts.TypeFlags.NumberLike) !== 0 && (type.flags & ~ts.TypeFlags.NumberLike) === 0;
64
+ /**
65
+ * Named keys for a checker type this reader trusts completely: the
66
+ * boolean domain, and nothing wider. `ToPropertyKey` of `true`/`false` is
67
+ * exactly the string "true"/"false" (ECMA-262 7.1.14 via
68
+ * ToString(Boolean)), so a `boolean`-typed key names exactly those two
69
+ * strings -- not an approximation, the complete set. This is trustworthy
70
+ * for the same reason the numeric domain above is: `primitiveCarrier`
71
+ * (`src/representation/primitives.ts`) gives `boolean` its own native
72
+ * scalar domain, so the COMPILED storage for a boolean-typed cell can only
73
+ * ever hold one of two bit patterns, independent of whatever TypeScript's
74
+ * structural assignability allowed elsewhere.
75
+ *
76
+ * A string-literal TYPE is deliberately NOT extended the same trust, even
77
+ * though it looks like the same shape of fact. `primitiveCarrier` gives
78
+ * `string` -- literal or not -- the one generic `{ kind: 'string' }`
79
+ * carrier with no narrower storage, and TypeScript lets an `any` flow into
80
+ * a `'a' | 'b'`-typed slot (a parameter, a field) with zero diagnostic.
81
+ * Trusting the checker's literal-union TYPE there would let a value the
82
+ * compiled representation cannot distinguish from "any string" certify as
83
+ * bounded to `{'a','b'}` -- the exact hole the class doc above already
84
+ * calls out ("nothing in the compiled representation stops an `any` from
85
+ * carrying 'zzz' into a cell typed `'a'`"). A `const` bound once to a
86
+ * literal initializer is a DIFFERENT, sound fact (no other write exists to
87
+ * contaminate), and it is already covered -- by construction, not by
88
+ * naming it here -- through the `computedKeysOf` value-flow authority.
89
+ */
90
+ const namedKeysOfLiteralType = (type) => {
91
+ if (type.isUnion()) {
92
+ const keys = [];
93
+ for (const member of type.types) {
94
+ const memberKeys = namedKeysOfLiteralType(member);
95
+ if (memberKeys === null)
96
+ return null;
97
+ keys.push(...memberKeys);
98
+ }
99
+ return keys.some((key) => key.kind === 'every') ? null : keys;
100
+ }
101
+ if (type.flags & ts.TypeFlags.BooleanLiteral)
102
+ return [namedKey(checker.typeToString(type) === 'true' ? 'true' : 'false')];
103
+ if (type.flags & ts.TypeFlags.Boolean)
104
+ return [namedKey('true'), namedKey('false')];
105
+ return null;
106
+ };
107
+ const keysOfKeyExpression = (expression) => {
108
+ if (!expression)
109
+ return [everyKey];
110
+ const current = unwrapErasedExpression(expression);
111
+ if (ts.isStringLiteralLike(current))
112
+ return [keyOfName(current.text)];
113
+ if (ts.isNumericLiteral(current)) {
114
+ const key = numericLiteralKey(current.text);
115
+ return [key === null ? numericKeys : namedKey(key)];
116
+ }
117
+ if (ts.isPrefixUnaryExpression(current) &&
118
+ current.operator === ts.SyntaxKind.MinusToken &&
119
+ ts.isNumericLiteral(unwrapErasedExpression(current.operand))) {
120
+ const key = numericLiteralKey(`-${unwrapErasedExpression(current.operand).text}`);
121
+ return [key === null ? numericKeys : namedKey(key)];
122
+ }
123
+ if (ts.isConditionalExpression(current)) {
124
+ const keys = [...keysOfKeyExpression(current.whenTrue), ...keysOfKeyExpression(current.whenFalse)];
125
+ return keys.some((key) => key.kind === 'every') ? [everyKey] : keys;
126
+ }
127
+ const type = publishedTypeAt(current);
128
+ if (numericType(type))
129
+ return [numericKeys];
130
+ // NO KEYS, not `every`. A program-declared symbol key names nothing this
131
+ // census models, so the honest answer is the empty set -- see
132
+ // `isProgramDeclaredSymbolKey` for why that is sound rather than merely
133
+ // convenient. `[]` reaches every consumer as "taint nothing", which is the
134
+ // behaviour: `taintSurfaceKey` is never called, so no wildcard is stamped.
135
+ //
136
+ // Measured on hono. `@hono/node-server`'s `request.ts` attaches its private
137
+ // state with module-level `Symbol()` keys through a `Record<string |
138
+ // symbol, any>` parameter (`request[bodyConsumedDirectlyKey] = true`), and
139
+ // hono's routers do the same ~36 times. Each one stamped `*` on the whole
140
+ // host surface, which poisoned every read of every authenticated host
141
+ // global -- including all 39 `Buffer.*` reads in node-compat's own
142
+ // `globals.ts`, whose `Buffer.from(...)` calls then cited results no
143
+ // producer published. None of that has anything to do with `request.ts`.
144
+ if (isProgramDeclaredSymbolKey(type))
145
+ return [];
146
+ const literalKeys = namedKeysOfLiteralType(type);
147
+ if (literalKeys)
148
+ return literalKeys;
149
+ const computed = computedKeysOf(current);
150
+ return !computed || computed.some((key) => key.kind === 'every') ? [everyKey] : computed;
151
+ };
152
+ const keysOfAccess = (access) => ts.isPropertyAccessExpression(access) ? [keyOfName(access.name.text)] : keysOfKeyExpression(access.argumentExpression);
153
+ const keysOfPropertyName = (name) => {
154
+ if (ts.isIdentifier(name) || ts.isStringLiteralLike(name) || ts.isPrivateIdentifier(name))
155
+ return [keyOfName(name.text)];
156
+ if (ts.isNumericLiteral(name)) {
157
+ const key = numericLiteralKey(name.text);
158
+ return [key === null ? numericKeys : namedKey(key)];
159
+ }
160
+ if (ts.isComputedPropertyName(name))
161
+ return keysOfKeyExpression(name.expression);
162
+ return [everyKey];
163
+ };
164
+ return { keysOfKeyExpression, keysOfAccess, keysOfPropertyName };
165
+ };
166
+ /**
167
+ * Keys a host or library ACCESSOR owns. A write of such a key through an
168
+ * unknown receiver may run that accessor, whose effect no body states, so
169
+ * the census treats the key as unknown. `__proto__` is always one: it is
170
+ * `Object.prototype`'s accessor, which the standard library does not
171
+ * declare, and running it replaces a prototype.
172
+ *
173
+ * A setter covered by `@gea-host-inert` states its effect and is not listed;
174
+ * a key is listed when ANY declaration of a setter by that name is uncovered.
175
+ */
176
+ export const hostAccessorNamesOf = (declarationFiles, files) => {
177
+ const names = new Set(['__proto__']);
178
+ const visit = (node, ambientOnly) => {
179
+ if (ts.isSetAccessorDeclaration(node) && (!ambientOnly || isAmbientDeclaration(node)) && !declarationStatesHostInert(node)) {
180
+ const name = node.name;
181
+ if (ts.isIdentifier(name) || ts.isStringLiteralLike(name) || ts.isNumericLiteral(name))
182
+ names.add(name.text);
183
+ }
184
+ ts.forEachChild(node, (child) => visit(child, ambientOnly));
185
+ };
186
+ for (const file of declarationFiles)
187
+ visit(file, false);
188
+ for (const file of files)
189
+ if (!file.isDeclarationFile)
190
+ visit(file, true);
191
+ return names;
192
+ };