@scriptc/compiler 0.3.6 → 0.4.1

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 (1358) hide show
  1. package/ambient/scriptc-node-fallback.d.ts +717 -55
  2. package/ambient/scriptc.d.ts +134 -0
  3. package/dist/backend/cycle-analysis.d.ts +1 -1
  4. package/dist/backend/cycle-analysis.js +1 -0
  5. package/dist/backend/cycle-analysis.js.map +1 -1
  6. package/dist/backend/cycle-analysis.test.js +13 -1
  7. package/dist/backend/cycle-analysis.test.js.map +1 -1
  8. package/dist/backend/cycle-mutability.js +16 -5
  9. package/dist/backend/cycle-mutability.js.map +1 -1
  10. package/dist/backend/executable-features.js +20 -0
  11. package/dist/backend/executable-features.js.map +1 -1
  12. package/dist/backend/immutability.test.js +1 -1
  13. package/dist/backend/library-pack.js +9 -0
  14. package/dist/backend/library-pack.js.map +1 -1
  15. package/dist/backend/link-plan-core.d.ts +2 -0
  16. package/dist/backend/link-plan-core.js +2 -0
  17. package/dist/backend/link-plan-core.js.map +1 -1
  18. package/dist/backend/link-plan.d.ts +1 -0
  19. package/dist/backend/link-plan.js +1 -0
  20. package/dist/backend/link-plan.js.map +1 -1
  21. package/dist/backend/llvm/alloc.d.ts +41 -4
  22. package/dist/backend/llvm/alloc.js +138 -7
  23. package/dist/backend/llvm/alloc.js.map +1 -1
  24. package/dist/backend/llvm/alloc.test.js +30 -1
  25. package/dist/backend/llvm/alloc.test.js.map +1 -1
  26. package/dist/backend/llvm/appended-array-literals.test.js +1 -1
  27. package/dist/backend/llvm/array-search.js +3 -1
  28. package/dist/backend/llvm/array-search.js.map +1 -1
  29. package/dist/backend/llvm/array-search.test.js +1 -1
  30. package/dist/backend/llvm/blocks.d.ts +8 -0
  31. package/dist/backend/llvm/blocks.js +43 -1
  32. package/dist/backend/llvm/blocks.js.map +1 -1
  33. package/dist/backend/llvm/blocks.test.js +22 -1
  34. package/dist/backend/llvm/blocks.test.js.map +1 -1
  35. package/dist/backend/llvm/byte-numbers.js +15 -5
  36. package/dist/backend/llvm/byte-numbers.js.map +1 -1
  37. package/dist/backend/llvm/bytes-alias.d.ts +14 -0
  38. package/dist/backend/llvm/bytes-alias.js +20 -0
  39. package/dist/backend/llvm/bytes-alias.js.map +1 -0
  40. package/dist/backend/llvm/bytes-loop-versions.d.ts +86 -0
  41. package/dist/backend/llvm/bytes-loop-versions.js +506 -0
  42. package/dist/backend/llvm/bytes-loop-versions.js.map +1 -0
  43. package/dist/backend/llvm/bytes-loop-versions.test.d.ts +1 -0
  44. package/dist/backend/llvm/bytes-loop-versions.test.js +244 -0
  45. package/dist/backend/llvm/bytes-loop-versions.test.js.map +1 -0
  46. package/dist/backend/llvm/call-lifetimes.js +50 -1
  47. package/dist/backend/llvm/call-lifetimes.js.map +1 -1
  48. package/dist/backend/llvm/call-lifetimes.test.js +34 -0
  49. package/dist/backend/llvm/call-lifetimes.test.js.map +1 -1
  50. package/dist/backend/llvm/checked-narrows.test.js +1 -1
  51. package/dist/backend/llvm/checked-value-lifetimes.js +4 -1
  52. package/dist/backend/llvm/checked-value-lifetimes.js.map +1 -1
  53. package/dist/backend/llvm/classes.d.ts +38 -1
  54. package/dist/backend/llvm/classes.js +185 -35
  55. package/dist/backend/llvm/classes.js.map +1 -1
  56. package/dist/backend/llvm/classes.test.js +79 -17
  57. package/dist/backend/llvm/classes.test.js.map +1 -1
  58. package/dist/backend/llvm/common.d.ts +21 -3
  59. package/dist/backend/llvm/common.js +51 -3
  60. package/dist/backend/llvm/common.js.map +1 -1
  61. package/dist/backend/llvm/constant-callbacks.d.ts +5 -1
  62. package/dist/backend/llvm/constant-callbacks.js +55 -12
  63. package/dist/backend/llvm/constant-callbacks.js.map +1 -1
  64. package/dist/backend/llvm/constant-callbacks.test.js +88 -1
  65. package/dist/backend/llvm/constant-callbacks.test.js.map +1 -1
  66. package/dist/backend/llvm/counted-loops.d.ts +4 -0
  67. package/dist/backend/llvm/counted-loops.js +37 -0
  68. package/dist/backend/llvm/counted-loops.js.map +1 -1
  69. package/dist/backend/llvm/dense-array-access.d.ts +15 -4
  70. package/dist/backend/llvm/dense-array-access.js +125 -44
  71. package/dist/backend/llvm/dense-array-access.js.map +1 -1
  72. package/dist/backend/llvm/dense-array-access.test.js +63 -3
  73. package/dist/backend/llvm/dense-array-access.test.js.map +1 -1
  74. package/dist/backend/llvm/dense-array-loops.d.ts +51 -0
  75. package/dist/backend/llvm/dense-array-loops.js +162 -0
  76. package/dist/backend/llvm/dense-array-loops.js.map +1 -0
  77. package/dist/backend/llvm/dense-array-loops.test.d.ts +1 -0
  78. package/dist/backend/llvm/dense-array-loops.test.js +128 -0
  79. package/dist/backend/llvm/dense-array-loops.test.js.map +1 -0
  80. package/dist/backend/llvm/dyn-handle-tags.test.d.ts +1 -0
  81. package/dist/backend/llvm/dyn-handle-tags.test.js +38 -0
  82. package/dist/backend/llvm/dyn-handle-tags.test.js.map +1 -0
  83. package/dist/backend/llvm/dyn.d.ts +37 -4
  84. package/dist/backend/llvm/dyn.js +354 -183
  85. package/dist/backend/llvm/dyn.js.map +1 -1
  86. package/dist/backend/llvm/emit-function.d.ts +64 -0
  87. package/dist/backend/llvm/emit-function.js +1193 -0
  88. package/dist/backend/llvm/emit-function.js.map +1 -0
  89. package/dist/backend/llvm/emit-module.d.ts +24 -0
  90. package/dist/backend/llvm/emit-module.js +1557 -0
  91. package/dist/backend/llvm/emit-module.js.map +1 -0
  92. package/dist/backend/llvm/emit-statements.d.ts +59 -0
  93. package/dist/backend/llvm/emit-statements.js +2041 -0
  94. package/dist/backend/llvm/emit-statements.js.map +1 -0
  95. package/dist/backend/llvm/emitter.d.ts +566 -291
  96. package/dist/backend/llvm/emitter.js +728 -4671
  97. package/dist/backend/llvm/emitter.js.map +1 -1
  98. package/dist/backend/llvm/emitter.test.js +57 -3
  99. package/dist/backend/llvm/emitter.test.js.map +1 -1
  100. package/dist/backend/llvm/expr-async.js +73 -46
  101. package/dist/backend/llvm/expr-async.js.map +1 -1
  102. package/dist/backend/llvm/expr-async.test.js +1 -1
  103. package/dist/backend/llvm/expr-bytes.d.ts +2 -0
  104. package/dist/backend/llvm/expr-bytes.js +76 -29
  105. package/dist/backend/llvm/expr-bytes.js.map +1 -1
  106. package/dist/backend/llvm/expr-callbacks.d.ts +6 -2
  107. package/dist/backend/llvm/expr-callbacks.js +48 -11
  108. package/dist/backend/llvm/expr-callbacks.js.map +1 -1
  109. package/dist/backend/llvm/expr-calls.d.ts +1 -1
  110. package/dist/backend/llvm/expr-calls.js +87 -56
  111. package/dist/backend/llvm/expr-calls.js.map +1 -1
  112. package/dist/backend/llvm/expr-calls.test.js +1 -1
  113. package/dist/backend/llvm/expr-containers.js +45 -24
  114. package/dist/backend/llvm/expr-containers.js.map +1 -1
  115. package/dist/backend/llvm/expr-control.js +16 -16
  116. package/dist/backend/llvm/expr-control.js.map +1 -1
  117. package/dist/backend/llvm/expr-dynamic.d.ts +3 -0
  118. package/dist/backend/llvm/expr-dynamic.js +113 -66
  119. package/dist/backend/llvm/expr-dynamic.js.map +1 -1
  120. package/dist/backend/llvm/expr-primitives.js +124 -28
  121. package/dist/backend/llvm/expr-primitives.js.map +1 -1
  122. package/dist/backend/llvm/expr-primitives.test.js +57 -2
  123. package/dist/backend/llvm/expr-primitives.test.js.map +1 -1
  124. package/dist/backend/llvm/expr-records.d.ts +1 -1
  125. package/dist/backend/llvm/expr-records.js +32 -11
  126. package/dist/backend/llvm/expr-records.js.map +1 -1
  127. package/dist/backend/llvm/expr-stream-bridges.js +65 -27
  128. package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
  129. package/dist/backend/llvm/expr-stream-bridges.test.js +2 -2
  130. package/dist/backend/llvm/expr-stream-callbacks.js +22 -1
  131. package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
  132. package/dist/backend/llvm/int32-abi.test.js +2 -2
  133. package/dist/backend/llvm/integer-clones.js +3 -3
  134. package/dist/backend/llvm/integer-clones.js.map +1 -1
  135. package/dist/backend/llvm/integer-clones.test.js +3 -3
  136. package/dist/backend/llvm/integer-remainder.d.ts +34 -13
  137. package/dist/backend/llvm/integer-remainder.js +156 -22
  138. package/dist/backend/llvm/integer-remainder.js.map +1 -1
  139. package/dist/backend/llvm/intern-tables.test.js +1 -1
  140. package/dist/backend/llvm/js-ic.d.ts +18 -0
  141. package/dist/backend/llvm/js-ic.js +712 -0
  142. package/dist/backend/llvm/js-ic.js.map +1 -0
  143. package/dist/backend/llvm/jsval-encoding.d.ts +21 -0
  144. package/dist/backend/llvm/jsval-encoding.js +20 -0
  145. package/dist/backend/llvm/jsval-encoding.js.map +1 -0
  146. package/dist/backend/llvm/jsval.d.ts +12 -0
  147. package/dist/backend/llvm/jsval.js +616 -0
  148. package/dist/backend/llvm/jsval.js.map +1 -0
  149. package/dist/backend/llvm/lazy-captures.d.ts +12 -2
  150. package/dist/backend/llvm/lazy-captures.js +39 -17
  151. package/dist/backend/llvm/lazy-captures.js.map +1 -1
  152. package/dist/backend/llvm/lib-abi.js +1 -1
  153. package/dist/backend/llvm/lib-abi.js.map +1 -1
  154. package/dist/backend/llvm/lib-connect.js +1 -1
  155. package/dist/backend/llvm/lib-connect.js.map +1 -1
  156. package/dist/backend/llvm/lib-datagram.js +14 -8
  157. package/dist/backend/llvm/lib-datagram.js.map +1 -1
  158. package/dist/backend/llvm/lib-dispatch.js +189 -23
  159. package/dist/backend/llvm/lib-dispatch.js.map +1 -1
  160. package/dist/backend/llvm/lib-filesystem.js +42 -13
  161. package/dist/backend/llvm/lib-filesystem.js.map +1 -1
  162. package/dist/backend/llvm/lib-http2.js +3 -3
  163. package/dist/backend/llvm/lib-http2.js.map +1 -1
  164. package/dist/backend/llvm/lib-lookup.js +2 -2
  165. package/dist/backend/llvm/lib-lookup.js.map +1 -1
  166. package/dist/backend/llvm/lib-network.js +56 -22
  167. package/dist/backend/llvm/lib-network.js.map +1 -1
  168. package/dist/backend/llvm/lib-process.js +94 -53
  169. package/dist/backend/llvm/lib-process.js.map +1 -1
  170. package/dist/backend/llvm/lib-shared.d.ts +12 -0
  171. package/dist/backend/llvm/lib-shared.js +209 -6
  172. package/dist/backend/llvm/lib-shared.js.map +1 -1
  173. package/dist/backend/llvm/lib-stream.js +46 -16
  174. package/dist/backend/llvm/lib-stream.js.map +1 -1
  175. package/dist/backend/llvm/lib-test.js +43 -7
  176. package/dist/backend/llvm/lib-test.js.map +1 -1
  177. package/dist/backend/llvm/lib-tls.js +4 -9
  178. package/dist/backend/llvm/lib-tls.js.map +1 -1
  179. package/dist/backend/llvm/local-array-reads.js +42 -33
  180. package/dist/backend/llvm/local-array-reads.js.map +1 -1
  181. package/dist/backend/llvm/local-array-reads.test.js +1 -1
  182. package/dist/backend/llvm/local-extents.d.ts +19 -0
  183. package/dist/backend/llvm/local-extents.js +169 -0
  184. package/dist/backend/llvm/local-extents.js.map +1 -0
  185. package/dist/backend/llvm/local-extents.test.d.ts +1 -0
  186. package/dist/backend/llvm/local-extents.test.js +92 -0
  187. package/dist/backend/llvm/local-extents.test.js.map +1 -0
  188. package/dist/backend/llvm/local-union-storage.js +7 -7
  189. package/dist/backend/llvm/local-union-storage.js.map +1 -1
  190. package/dist/backend/llvm/local-union-storage.test.js +2 -2
  191. package/dist/backend/llvm/map-entry-fusion.test.js +1 -1
  192. package/dist/backend/llvm/map-number-lookup.d.ts +20 -4
  193. package/dist/backend/llvm/map-number-lookup.js +45 -9
  194. package/dist/backend/llvm/map-number-lookup.js.map +1 -1
  195. package/dist/backend/llvm/map-number-lookup.test.js +2 -2
  196. package/dist/backend/llvm/map-read-lifetimes.test.js +2 -2
  197. package/dist/backend/llvm/narrow-guards.d.ts +38 -0
  198. package/dist/backend/llvm/narrow-guards.js +215 -0
  199. package/dist/backend/llvm/narrow-guards.js.map +1 -0
  200. package/dist/backend/llvm/nullable-unions.d.ts +64 -6
  201. package/dist/backend/llvm/nullable-unions.js +103 -6
  202. package/dist/backend/llvm/nullable-unions.js.map +1 -1
  203. package/dist/backend/llvm/nullable-unions.test.d.ts +1 -0
  204. package/dist/backend/llvm/nullable-unions.test.js +65 -0
  205. package/dist/backend/llvm/nullable-unions.test.js.map +1 -0
  206. package/dist/backend/llvm/publish.d.ts +7 -0
  207. package/dist/backend/llvm/publish.js +50 -19
  208. package/dist/backend/llvm/publish.js.map +1 -1
  209. package/dist/backend/llvm/publish.test.js +1 -1
  210. package/dist/backend/llvm/receivers.d.ts +31 -0
  211. package/dist/backend/llvm/receivers.js +395 -0
  212. package/dist/backend/llvm/receivers.js.map +1 -0
  213. package/dist/backend/llvm/record-results.d.ts +12 -1
  214. package/dist/backend/llvm/record-results.js +64 -4
  215. package/dist/backend/llvm/record-results.js.map +1 -1
  216. package/dist/backend/llvm/reference-effects.js +9 -0
  217. package/dist/backend/llvm/reference-effects.js.map +1 -1
  218. package/dist/backend/llvm/reference-writes.d.ts +4 -0
  219. package/dist/backend/llvm/reference-writes.js +142 -6
  220. package/dist/backend/llvm/reference-writes.js.map +1 -1
  221. package/dist/backend/llvm/reference-writes.test.d.ts +1 -0
  222. package/dist/backend/llvm/reference-writes.test.js +88 -0
  223. package/dist/backend/llvm/reference-writes.test.js.map +1 -0
  224. package/dist/backend/llvm/regex-matchers.d.ts +8 -0
  225. package/dist/backend/llvm/regex-matchers.js +33 -0
  226. package/dist/backend/llvm/regex-matchers.js.map +1 -1
  227. package/dist/backend/llvm/regex-matchers.test.js +23 -1
  228. package/dist/backend/llvm/regex-matchers.test.js.map +1 -1
  229. package/dist/backend/llvm/regions.d.ts +1 -1
  230. package/dist/backend/llvm/regions.js +10 -7
  231. package/dist/backend/llvm/regions.js.map +1 -1
  232. package/dist/backend/llvm/regions.test.js +8 -2
  233. package/dist/backend/llvm/regions.test.js.map +1 -1
  234. package/dist/backend/llvm/shapes.d.ts +74 -45
  235. package/dist/backend/llvm/shapes.js +289 -28
  236. package/dist/backend/llvm/shapes.js.map +1 -1
  237. package/dist/backend/llvm/shapes.test.js +37 -3
  238. package/dist/backend/llvm/shapes.test.js.map +1 -1
  239. package/dist/backend/llvm/speculative-integers.d.ts +20 -1
  240. package/dist/backend/llvm/speculative-integers.js +94 -6
  241. package/dist/backend/llvm/speculative-integers.js.map +1 -1
  242. package/dist/backend/llvm/speculative-integers.test.js +55 -1
  243. package/dist/backend/llvm/speculative-integers.test.js.map +1 -1
  244. package/dist/backend/llvm/split-loops.js +2 -2
  245. package/dist/backend/llvm/split-loops.js.map +1 -1
  246. package/dist/backend/llvm/stack-objects.d.ts +26 -6
  247. package/dist/backend/llvm/stack-objects.js +133 -10
  248. package/dist/backend/llvm/stack-objects.js.map +1 -1
  249. package/dist/backend/llvm/stack-objects.test.js +55 -1
  250. package/dist/backend/llvm/stack-objects.test.js.map +1 -1
  251. package/dist/backend/llvm/stack-unions.test.js +1 -1
  252. package/dist/backend/llvm/string-construction.test.js +1 -1
  253. package/dist/backend/llvm/string-lifetimes.test.js +15 -14
  254. package/dist/backend/llvm/string-lifetimes.test.js.map +1 -1
  255. package/dist/backend/llvm/string-reads.d.ts +1 -1
  256. package/dist/backend/llvm/string-reads.js +4 -4
  257. package/dist/backend/llvm/string-reads.js.map +1 -1
  258. package/dist/backend/llvm/string-slices.d.ts +25 -0
  259. package/dist/backend/llvm/string-slices.js +207 -1
  260. package/dist/backend/llvm/string-slices.js.map +1 -1
  261. package/dist/backend/llvm/string-slices.test.js +139 -2
  262. package/dist/backend/llvm/string-slices.test.js.map +1 -1
  263. package/dist/backend/llvm/switch-dispatch.test.js +2 -2
  264. package/dist/backend/llvm/thread-slots.d.ts +5 -0
  265. package/dist/backend/llvm/thread-slots.js +142 -0
  266. package/dist/backend/llvm/thread-slots.js.map +1 -0
  267. package/dist/backend/llvm/thread-slots.test.d.ts +1 -0
  268. package/dist/backend/llvm/thread-slots.test.js +111 -0
  269. package/dist/backend/llvm/thread-slots.test.js.map +1 -0
  270. package/dist/backend/llvm/union-repr.d.ts +7 -7
  271. package/dist/backend/llvm/union-repr.js +18 -2
  272. package/dist/backend/llvm/union-repr.js.map +1 -1
  273. package/dist/backend/llvm/union-retype.test.js +17 -3
  274. package/dist/backend/llvm/union-retype.test.js.map +1 -1
  275. package/dist/backend/llvm/walkers.d.ts +2 -2
  276. package/dist/backend/llvm/walkers.js +51 -26
  277. package/dist/backend/llvm/walkers.js.map +1 -1
  278. package/dist/backend/llvm/wasm-modules.d.ts +16 -0
  279. package/dist/backend/llvm/wasm-modules.js +66 -0
  280. package/dist/backend/llvm/wasm-modules.js.map +1 -0
  281. package/dist/backend/llvm/wrapping-sums.d.ts +7 -0
  282. package/dist/backend/llvm/wrapping-sums.js +11 -3
  283. package/dist/backend/llvm/wrapping-sums.js.map +1 -1
  284. package/dist/backend/mangle.d.ts +12 -0
  285. package/dist/backend/mangle.js +18 -0
  286. package/dist/backend/mangle.js.map +1 -1
  287. package/dist/backend/may-throw.d.ts +3 -0
  288. package/dist/backend/may-throw.js +4 -2
  289. package/dist/backend/may-throw.js.map +1 -1
  290. package/dist/backend/may-throw.test.js +1 -1
  291. package/dist/backend/native/contracts.d.ts +57 -0
  292. package/dist/backend/native/executable.js +211 -139
  293. package/dist/backend/native/executable.js.map +1 -1
  294. package/dist/backend/native/library.js +2 -0
  295. package/dist/backend/native/library.js.map +1 -1
  296. package/dist/backend/native/runtime-inputs.d.ts +1 -1
  297. package/dist/backend/native/runtime-inputs.js +1 -0
  298. package/dist/backend/native/runtime-inputs.js.map +1 -1
  299. package/dist/backend/native-codegen.d.ts +6 -0
  300. package/dist/backend/native-codegen.js +19 -0
  301. package/dist/backend/native-codegen.js.map +1 -1
  302. package/dist/backend/native-codegen.test.js +27 -0
  303. package/dist/backend/native-codegen.test.js.map +1 -1
  304. package/dist/backend/native-link-info-core.d.ts +48 -0
  305. package/dist/backend/native-link-info-core.js.map +1 -1
  306. package/dist/backend/native-profile.d.ts +32 -0
  307. package/dist/backend/native-profile.js +39 -0
  308. package/dist/backend/native-profile.js.map +1 -0
  309. package/dist/backend/native-profile.test.d.ts +1 -0
  310. package/dist/backend/native-profile.test.js +58 -0
  311. package/dist/backend/native-profile.test.js.map +1 -0
  312. package/dist/backend/native-tools.d.ts +14 -0
  313. package/dist/backend/native-tools.js +13 -0
  314. package/dist/backend/native-tools.js.map +1 -1
  315. package/dist/backend/publication.test.js +1 -1
  316. package/dist/backend/runtime-abi.d.ts +2 -2
  317. package/dist/backend/runtime-abi.js +2 -2
  318. package/dist/backend/runtime-pack-core.d.ts +13 -1
  319. package/dist/backend/runtime-pack-core.js +14 -1
  320. package/dist/backend/runtime-pack-core.js.map +1 -1
  321. package/dist/backend/runtime-pack-native.js +1 -1
  322. package/dist/backend/runtime-pack-native.js.map +1 -1
  323. package/dist/backend/runtime-pack-native.test.d.ts +1 -0
  324. package/dist/backend/runtime-pack-native.test.js +31 -0
  325. package/dist/backend/runtime-pack-native.test.js.map +1 -0
  326. package/dist/backend/runtime-pack-targets.test.js +9 -1
  327. package/dist/backend/runtime-pack-targets.test.js.map +1 -1
  328. package/dist/backend/runtime-pack.test.js +9 -1
  329. package/dist/backend/runtime-pack.test.js.map +1 -1
  330. package/dist/backend/stack-observations.d.ts +22 -0
  331. package/dist/backend/stack-observations.js +382 -0
  332. package/dist/backend/stack-observations.js.map +1 -0
  333. package/dist/backend/stack-observations.test.d.ts +1 -0
  334. package/dist/backend/stack-observations.test.js +233 -0
  335. package/dist/backend/stack-observations.test.js.map +1 -0
  336. package/dist/backend/target-diagnostics.js +15 -0
  337. package/dist/backend/target-diagnostics.js.map +1 -1
  338. package/dist/backend/target-diagnostics.test.js +1 -1
  339. package/dist/backend/warm-cache.js +8 -0
  340. package/dist/backend/warm-cache.js.map +1 -1
  341. package/dist/backend/young-nursery.d.ts +7 -0
  342. package/dist/backend/young-nursery.js +10 -0
  343. package/dist/backend/young-nursery.js.map +1 -0
  344. package/dist/cli/command.js +106 -4
  345. package/dist/cli/command.js.map +1 -1
  346. package/dist/cli/host.d.ts +3 -0
  347. package/dist/cli/output-options.d.ts +2 -0
  348. package/dist/cli/output-options.js +9 -0
  349. package/dist/cli/output-options.js.map +1 -1
  350. package/dist/cli/usage.d.ts +21 -1
  351. package/dist/cli/usage.js +43 -1
  352. package/dist/cli/usage.js.map +1 -1
  353. package/dist/compat/fetch-profile.js +10 -1
  354. package/dist/compat/fetch-profile.js.map +1 -1
  355. package/dist/compile-types.d.ts +22 -0
  356. package/dist/contracts/check.js +25 -8
  357. package/dist/contracts/check.js.map +1 -1
  358. package/dist/contracts/int32-elements.d.ts +115 -0
  359. package/dist/contracts/int32-elements.js +1179 -0
  360. package/dist/contracts/int32-elements.js.map +1 -0
  361. package/dist/coverage/report.d.ts +16 -0
  362. package/dist/coverage/report.js +182 -1
  363. package/dist/coverage/report.js.map +1 -1
  364. package/dist/coverage/surface-manifest.js +16 -3
  365. package/dist/coverage/surface-manifest.js.map +1 -1
  366. package/dist/coverage/verdict-cache.d.ts +2 -0
  367. package/dist/coverage/verdict-cache.js +12 -0
  368. package/dist/coverage/verdict-cache.js.map +1 -1
  369. package/dist/coverage/verdict-cache.test.js +2 -1
  370. package/dist/coverage/verdict-cache.test.js.map +1 -1
  371. package/dist/diagnostics/diagnostic.d.ts +10 -6
  372. package/dist/diagnostics/diagnostic.js +29 -21
  373. package/dist/diagnostics/diagnostic.js.map +1 -1
  374. package/dist/diagnostics/envelope.d.ts +39 -2
  375. package/dist/diagnostics/envelope.js.map +1 -1
  376. package/dist/diagnostics/render.d.ts +7 -0
  377. package/dist/diagnostics/render.js +50 -13
  378. package/dist/diagnostics/render.js.map +1 -1
  379. package/dist/diagnostics/render.test.d.ts +1 -0
  380. package/dist/diagnostics/render.test.js +49 -0
  381. package/dist/diagnostics/render.test.js.map +1 -0
  382. package/dist/executable/executable-cache.d.ts +27 -0
  383. package/dist/executable/executable-cache.js +19 -1
  384. package/dist/executable/executable-cache.js.map +1 -1
  385. package/dist/executable/executable-cache.test.js +12 -1
  386. package/dist/executable/executable-cache.test.js.map +1 -1
  387. package/dist/executable/prepare.js +2 -1
  388. package/dist/executable/prepare.js.map +1 -1
  389. package/dist/frontend/analysis.js +6 -1
  390. package/dist/frontend/analysis.js.map +1 -1
  391. package/dist/frontend/arguments-usage.d.ts +8 -0
  392. package/dist/frontend/arguments-usage.js +98 -0
  393. package/dist/frontend/arguments-usage.js.map +1 -1
  394. package/dist/frontend/arguments-usage.test.d.ts +1 -0
  395. package/dist/frontend/arguments-usage.test.js +32 -0
  396. package/dist/frontend/arguments-usage.test.js.map +1 -0
  397. package/dist/frontend/builtin-modules.d.ts +16 -2
  398. package/dist/frontend/builtin-modules.js +40 -7
  399. package/dist/frontend/builtin-modules.js.map +1 -1
  400. package/dist/frontend/builtin-package-aliases.d.ts +24 -0
  401. package/dist/frontend/builtin-package-aliases.js +133 -0
  402. package/dist/frontend/builtin-package-aliases.js.map +1 -0
  403. package/dist/frontend/builtin-package-aliases.test.d.ts +1 -0
  404. package/dist/frontend/builtin-package-aliases.test.js +48 -0
  405. package/dist/frontend/builtin-package-aliases.test.js.map +1 -0
  406. package/dist/frontend/cjs-syntax.js +52 -51
  407. package/dist/frontend/cjs-syntax.js.map +1 -1
  408. package/dist/frontend/contract-types.d.ts +3 -0
  409. package/dist/frontend/contract-types.js +36 -7
  410. package/dist/frontend/contract-types.js.map +1 -1
  411. package/dist/frontend/dts-paths.d.ts +4 -0
  412. package/dist/frontend/dts-paths.js +9 -1
  413. package/dist/frontend/dts-paths.js.map +1 -1
  414. package/dist/frontend/experimental-import.d.ts +5 -1
  415. package/dist/frontend/experimental-import.js +26 -7
  416. package/dist/frontend/experimental-import.js.map +1 -1
  417. package/dist/frontend/fork-target.js +20 -22
  418. package/dist/frontend/fork-target.js.map +1 -1
  419. package/dist/frontend/fork-target.test.js +2 -1
  420. package/dist/frontend/fork-target.test.js.map +1 -1
  421. package/dist/frontend/function-completion.js +6 -6
  422. package/dist/frontend/function-completion.js.map +1 -1
  423. package/dist/frontend/helper-tokens.js +15 -3
  424. package/dist/frontend/helper-tokens.js.map +1 -1
  425. package/dist/frontend/helper-tokens.test.js +7 -1
  426. package/dist/frontend/helper-tokens.test.js.map +1 -1
  427. package/dist/frontend/inferred-js-diagnostics.js +14 -17
  428. package/dist/frontend/inferred-js-diagnostics.js.map +1 -1
  429. package/dist/frontend/input-tracker.d.ts +3 -0
  430. package/dist/frontend/input-tracker.js +32 -3
  431. package/dist/frontend/input-tracker.js.map +1 -1
  432. package/dist/frontend/lib-contract.js +36 -32
  433. package/dist/frontend/lib-contract.js.map +1 -1
  434. package/dist/frontend/lib-exports.js +3 -3
  435. package/dist/frontend/lib-exports.js.map +1 -1
  436. package/dist/frontend/lowering/array-values.d.ts +8 -3
  437. package/dist/frontend/lowering/array-values.js +60 -11
  438. package/dist/frontend/lowering/array-values.js.map +1 -1
  439. package/dist/frontend/lowering/assert-instances.js +4 -4
  440. package/dist/frontend/lowering/assert-instances.js.map +1 -1
  441. package/dist/frontend/lowering/assertion-identity.d.ts +12 -0
  442. package/dist/frontend/lowering/assertion-identity.js +70 -0
  443. package/dist/frontend/lowering/assertion-identity.js.map +1 -0
  444. package/dist/frontend/lowering/assertion-members.d.ts +28 -0
  445. package/dist/frontend/lowering/assertion-members.js +185 -0
  446. package/dist/frontend/lowering/assertion-members.js.map +1 -0
  447. package/dist/frontend/lowering/binding-analysis.js +27 -20
  448. package/dist/frontend/lowering/binding-analysis.js.map +1 -1
  449. package/dist/frontend/lowering/builtin-calls.js +63 -5
  450. package/dist/frontend/lowering/builtin-calls.js.map +1 -1
  451. package/dist/frontend/lowering/builtin-function-fences.d.ts +14 -0
  452. package/dist/frontend/lowering/builtin-function-fences.js +42 -0
  453. package/dist/frontend/lowering/builtin-function-fences.js.map +1 -0
  454. package/dist/frontend/lowering/builtins/arguments.js +1 -1
  455. package/dist/frontend/lowering/builtins/arguments.js.map +1 -1
  456. package/dist/frontend/lowering/builtins/async-context.js +53 -52
  457. package/dist/frontend/lowering/builtins/async-context.js.map +1 -1
  458. package/dist/frontend/lowering/builtins/atomics.js +6 -6
  459. package/dist/frontend/lowering/builtins/atomics.js.map +1 -1
  460. package/dist/frontend/lowering/builtins/blob.js +8 -6
  461. package/dist/frontend/lowering/builtins/blob.js.map +1 -1
  462. package/dist/frontend/lowering/builtins/builtin-class-dyn.d.ts +31 -0
  463. package/dist/frontend/lowering/builtins/builtin-class-dyn.js +205 -0
  464. package/dist/frontend/lowering/builtins/builtin-class-dyn.js.map +1 -0
  465. package/dist/frontend/lowering/builtins/callable-aliases.js +17 -5
  466. package/dist/frontend/lowering/builtins/callable-aliases.js.map +1 -1
  467. package/dist/frontend/lowering/builtins/child-process-async.js +7 -7
  468. package/dist/frontend/lowering/builtins/child-process-async.js.map +1 -1
  469. package/dist/frontend/lowering/builtins/child-process-methods.d.ts +6 -4
  470. package/dist/frontend/lowering/builtins/child-process-methods.js +310 -57
  471. package/dist/frontend/lowering/builtins/child-process-methods.js.map +1 -1
  472. package/dist/frontend/lowering/builtins/child-process-sync.js +16 -10
  473. package/dist/frontend/lowering/builtins/child-process-sync.js.map +1 -1
  474. package/dist/frontend/lowering/builtins/child-process.d.ts +6 -4
  475. package/dist/frontend/lowering/builtins/child-process.js +85 -61
  476. package/dist/frontend/lowering/builtins/child-process.js.map +1 -1
  477. package/dist/frontend/lowering/builtins/class-values.d.ts +60 -0
  478. package/dist/frontend/lowering/builtins/class-values.js +226 -0
  479. package/dist/frontend/lowering/builtins/class-values.js.map +1 -0
  480. package/dist/frontend/lowering/builtins/compression.d.ts +9 -0
  481. package/dist/frontend/lowering/builtins/compression.js +107 -44
  482. package/dist/frontend/lowering/builtins/compression.js.map +1 -1
  483. package/dist/frontend/lowering/builtins/constants.d.ts +9 -1
  484. package/dist/frontend/lowering/builtins/constants.js +28 -7
  485. package/dist/frontend/lowering/builtins/constants.js.map +1 -1
  486. package/dist/frontend/lowering/builtins/crypto.d.ts +22 -0
  487. package/dist/frontend/lowering/builtins/crypto.js +215 -38
  488. package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
  489. package/dist/frontend/lowering/builtins/dates.d.ts +7 -1
  490. package/dist/frontend/lowering/builtins/dates.js +92 -16
  491. package/dist/frontend/lowering/builtins/dates.js.map +1 -1
  492. package/dist/frontend/lowering/builtins/disposable-stack.d.ts +18 -0
  493. package/dist/frontend/lowering/builtins/disposable-stack.js +137 -0
  494. package/dist/frontend/lowering/builtins/disposable-stack.js.map +1 -0
  495. package/dist/frontend/lowering/builtins/ecdh.d.ts +10 -0
  496. package/dist/frontend/lowering/builtins/ecdh.js +208 -0
  497. package/dist/frontend/lowering/builtins/ecdh.js.map +1 -0
  498. package/dist/frontend/lowering/builtins/environment.js +3 -3
  499. package/dist/frontend/lowering/builtins/environment.js.map +1 -1
  500. package/dist/frontend/lowering/builtins/errors.d.ts +14 -10
  501. package/dist/frontend/lowering/builtins/errors.js +169 -3
  502. package/dist/frontend/lowering/builtins/errors.js.map +1 -1
  503. package/dist/frontend/lowering/builtins/filesystem-calls.js +128 -116
  504. package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
  505. package/dist/frontend/lowering/builtins/filesystem.js +77 -77
  506. package/dist/frontend/lowering/builtins/filesystem.js.map +1 -1
  507. package/dist/frontend/lowering/builtins/fs-glob.js +3 -3
  508. package/dist/frontend/lowering/builtins/fs-glob.js.map +1 -1
  509. package/dist/frontend/lowering/builtins/fs-streams.js +10 -11
  510. package/dist/frontend/lowering/builtins/fs-streams.js.map +1 -1
  511. package/dist/frontend/lowering/builtins/ipc.js +45 -8
  512. package/dist/frontend/lowering/builtins/ipc.js.map +1 -1
  513. package/dist/frontend/lowering/builtins/json.js +284 -24
  514. package/dist/frontend/lowering/builtins/json.js.map +1 -1
  515. package/dist/frontend/lowering/builtins/key-object.js +4 -4
  516. package/dist/frontend/lowering/builtins/key-object.js.map +1 -1
  517. package/dist/frontend/lowering/builtins/module-bindings.d.ts +8 -0
  518. package/dist/frontend/lowering/builtins/module-bindings.js +71 -22
  519. package/dist/frontend/lowering/builtins/module-bindings.js.map +1 -1
  520. package/dist/frontend/lowering/builtins/module-calls.js +55 -44
  521. package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
  522. package/dist/frontend/lowering/builtins/module-resolution.d.ts +4 -3
  523. package/dist/frontend/lowering/builtins/module-resolution.js +24 -23
  524. package/dist/frontend/lowering/builtins/module-resolution.js.map +1 -1
  525. package/dist/frontend/lowering/builtins/navigator.d.ts +13 -0
  526. package/dist/frontend/lowering/builtins/navigator.js +40 -0
  527. package/dist/frontend/lowering/builtins/navigator.js.map +1 -0
  528. package/dist/frontend/lowering/builtins/net-address.d.ts +19 -0
  529. package/dist/frontend/lowering/builtins/net-address.js +156 -0
  530. package/dist/frontend/lowering/builtins/net-address.js.map +1 -0
  531. package/dist/frontend/lowering/builtins/numbers.js +25 -9
  532. package/dist/frontend/lowering/builtins/numbers.js.map +1 -1
  533. package/dist/frontend/lowering/builtins/operating-system.d.ts +4 -0
  534. package/dist/frontend/lowering/builtins/operating-system.js +25 -12
  535. package/dist/frontend/lowering/builtins/operating-system.js.map +1 -1
  536. package/dist/frontend/lowering/builtins/performance.d.ts +12 -0
  537. package/dist/frontend/lowering/builtins/performance.js +259 -8
  538. package/dist/frontend/lowering/builtins/performance.js.map +1 -1
  539. package/dist/frontend/lowering/builtins/process.d.ts +41 -1
  540. package/dist/frontend/lowering/builtins/process.js +505 -99
  541. package/dist/frontend/lowering/builtins/process.js.map +1 -1
  542. package/dist/frontend/lowering/builtins/promises.d.ts +5 -1
  543. package/dist/frontend/lowering/builtins/promises.js +326 -43
  544. package/dist/frontend/lowering/builtins/promises.js.map +1 -1
  545. package/dist/frontend/lowering/builtins/promisify-callback.d.ts +40 -0
  546. package/dist/frontend/lowering/builtins/promisify-callback.js +338 -0
  547. package/dist/frontend/lowering/builtins/promisify-callback.js.map +1 -0
  548. package/dist/frontend/lowering/builtins/properties.js +37 -1
  549. package/dist/frontend/lowering/builtins/properties.js.map +1 -1
  550. package/dist/frontend/lowering/builtins/querystring.js +14 -14
  551. package/dist/frontend/lowering/builtins/querystring.js.map +1 -1
  552. package/dist/frontend/lowering/builtins/readline.d.ts +12 -2
  553. package/dist/frontend/lowering/builtins/readline.js +136 -39
  554. package/dist/frontend/lowering/builtins/readline.js.map +1 -1
  555. package/dist/frontend/lowering/builtins/receiver-types.js +3 -5
  556. package/dist/frontend/lowering/builtins/receiver-types.js.map +1 -1
  557. package/dist/frontend/lowering/builtins/reflection.js +42 -14
  558. package/dist/frontend/lowering/builtins/reflection.js.map +1 -1
  559. package/dist/frontend/lowering/builtins/runtime-constructor.d.ts +26 -0
  560. package/dist/frontend/lowering/builtins/runtime-constructor.js +165 -0
  561. package/dist/frontend/lowering/builtins/runtime-constructor.js.map +1 -0
  562. package/dist/frontend/lowering/builtins/strings.js +101 -12
  563. package/dist/frontend/lowering/builtins/strings.js.map +1 -1
  564. package/dist/frontend/lowering/builtins/text-codecs.js +41 -38
  565. package/dist/frontend/lowering/builtins/text-codecs.js.map +1 -1
  566. package/dist/frontend/lowering/builtins/timers.js +79 -30
  567. package/dist/frontend/lowering/builtins/timers.js.map +1 -1
  568. package/dist/frontend/lowering/builtins/typed-array-members.d.ts +7 -0
  569. package/dist/frontend/lowering/builtins/typed-array-members.js +160 -0
  570. package/dist/frontend/lowering/builtins/typed-array-members.js.map +1 -0
  571. package/dist/frontend/lowering/builtins/url.d.ts +3 -0
  572. package/dist/frontend/lowering/builtins/url.js +120 -17
  573. package/dist/frontend/lowering/builtins/url.js.map +1 -1
  574. package/dist/frontend/lowering/builtins/util-types.js +20 -4
  575. package/dist/frontend/lowering/builtins/util-types.js.map +1 -1
  576. package/dist/frontend/lowering/builtins/v8.d.ts +11 -0
  577. package/dist/frontend/lowering/builtins/v8.js +105 -0
  578. package/dist/frontend/lowering/builtins/v8.js.map +1 -0
  579. package/dist/frontend/lowering/builtins/webassembly.d.ts +33 -0
  580. package/dist/frontend/lowering/builtins/webassembly.js +388 -0
  581. package/dist/frontend/lowering/builtins/webassembly.js.map +1 -0
  582. package/dist/frontend/lowering/builtins/webcrypto.d.ts +20 -0
  583. package/dist/frontend/lowering/builtins/webcrypto.js +112 -0
  584. package/dist/frontend/lowering/builtins/webcrypto.js.map +1 -0
  585. package/dist/frontend/lowering/builtins/workers.d.ts +12 -0
  586. package/dist/frontend/lowering/builtins/workers.js +193 -8
  587. package/dist/frontend/lowering/builtins/workers.js.map +1 -1
  588. package/dist/frontend/lowering/call-arguments.js +69 -14
  589. package/dist/frontend/lowering/call-arguments.js.map +1 -1
  590. package/dist/frontend/lowering/call-signatures.d.ts +23 -1
  591. package/dist/frontend/lowering/call-signatures.js +379 -55
  592. package/dist/frontend/lowering/call-signatures.js.map +1 -1
  593. package/dist/frontend/lowering/checked-promise-all.d.ts +3 -0
  594. package/dist/frontend/lowering/checked-promise-all.js +1 -1
  595. package/dist/frontend/lowering/checked-promise-all.js.map +1 -1
  596. package/dist/frontend/lowering/cjs-exports-object.d.ts +53 -0
  597. package/dist/frontend/lowering/cjs-exports-object.js +561 -0
  598. package/dist/frontend/lowering/cjs-exports-object.js.map +1 -0
  599. package/dist/frontend/lowering/cjs-inline-require.d.ts +86 -0
  600. package/dist/frontend/lowering/cjs-inline-require.js +314 -0
  601. package/dist/frontend/lowering/cjs-inline-require.js.map +1 -0
  602. package/dist/frontend/lowering/cjs-tsc-interop.d.ts +28 -0
  603. package/dist/frontend/lowering/cjs-tsc-interop.js +208 -0
  604. package/dist/frontend/lowering/cjs-tsc-interop.js.map +1 -0
  605. package/dist/frontend/lowering/class-attributes.d.ts +19 -0
  606. package/dist/frontend/lowering/class-attributes.js +378 -0
  607. package/dist/frontend/lowering/class-attributes.js.map +1 -0
  608. package/dist/frontend/lowering/class-callbacks.d.ts +3 -1
  609. package/dist/frontend/lowering/class-callbacks.js +21 -10
  610. package/dist/frontend/lowering/class-callbacks.js.map +1 -1
  611. package/dist/frontend/lowering/class-construction.js +49 -4
  612. package/dist/frontend/lowering/class-construction.js.map +1 -1
  613. package/dist/frontend/lowering/class-descriptors.d.ts +2 -0
  614. package/dist/frontend/lowering/class-descriptors.js +8 -8
  615. package/dist/frontend/lowering/class-descriptors.js.map +1 -1
  616. package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +64 -0
  617. package/dist/frontend/lowering/class-dynamic-dispatch.js +1124 -90
  618. package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
  619. package/dist/frontend/lowering/class-instance-constructor.js +1 -1
  620. package/dist/frontend/lowering/class-instance-constructor.js.map +1 -1
  621. package/dist/frontend/lowering/class-iterables.d.ts +11 -0
  622. package/dist/frontend/lowering/class-iterables.js +31 -0
  623. package/dist/frontend/lowering/class-iterables.js.map +1 -0
  624. package/dist/frontend/lowering/class-method-mutations.js +73 -35
  625. package/dist/frontend/lowering/class-method-mutations.js.map +1 -1
  626. package/dist/frontend/lowering/class-method-values.js +56 -10
  627. package/dist/frontend/lowering/class-method-values.js.map +1 -1
  628. package/dist/frontend/lowering/class-protocol-dispatch.js +24 -22
  629. package/dist/frontend/lowering/class-protocol-dispatch.js.map +1 -1
  630. package/dist/frontend/lowering/class-protocols.d.ts +10 -0
  631. package/dist/frontend/lowering/class-protocols.js +76 -45
  632. package/dist/frontend/lowering/class-protocols.js.map +1 -1
  633. package/dist/frontend/lowering/class-prototypes.d.ts +6 -0
  634. package/dist/frontend/lowering/class-prototypes.js +86 -19
  635. package/dist/frontend/lowering/class-prototypes.js.map +1 -1
  636. package/dist/frontend/lowering/class-runtime-statics.js +1 -1
  637. package/dist/frontend/lowering/class-runtime-statics.js.map +1 -1
  638. package/dist/frontend/lowering/class-static-data.js +2 -2
  639. package/dist/frontend/lowering/class-static-data.js.map +1 -1
  640. package/dist/frontend/lowering/class-to-primitive.d.ts +25 -0
  641. package/dist/frontend/lowering/class-to-primitive.js +264 -0
  642. package/dist/frontend/lowering/class-to-primitive.js.map +1 -0
  643. package/dist/frontend/lowering/class-unions.d.ts +25 -0
  644. package/dist/frontend/lowering/class-unions.js +102 -1
  645. package/dist/frontend/lowering/class-unions.js.map +1 -1
  646. package/dist/frontend/lowering/code-generation.d.ts +14 -0
  647. package/dist/frontend/lowering/code-generation.js +127 -0
  648. package/dist/frontend/lowering/code-generation.js.map +1 -0
  649. package/dist/frontend/lowering/coercions/fresh-spread.d.ts +13 -0
  650. package/dist/frontend/lowering/coercions/fresh-spread.js +95 -0
  651. package/dist/frontend/lowering/coercions/fresh-spread.js.map +1 -0
  652. package/dist/frontend/lowering/coercions/function-adapters.d.ts +16 -2
  653. package/dist/frontend/lowering/coercions/function-adapters.js +239 -68
  654. package/dist/frontend/lowering/coercions/function-adapters.js.map +1 -1
  655. package/dist/frontend/lowering/coercions/structural-plans.js +25 -3
  656. package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -1
  657. package/dist/frontend/lowering/coercions/structural.js +35 -3
  658. package/dist/frontend/lowering/coercions/structural.js.map +1 -1
  659. package/dist/frontend/lowering/coercions/unions.d.ts +15 -0
  660. package/dist/frontend/lowering/coercions/unions.js +57 -1
  661. package/dist/frontend/lowering/coercions/unions.js.map +1 -1
  662. package/dist/frontend/lowering/collection-ingestion.js +2 -2
  663. package/dist/frontend/lowering/collection-ingestion.js.map +1 -1
  664. package/dist/frontend/lowering/collection-narrowing.js +2 -4
  665. package/dist/frontend/lowering/collection-narrowing.js.map +1 -1
  666. package/dist/frontend/lowering/construction-escapes.js +8 -8
  667. package/dist/frontend/lowering/construction-escapes.js.map +1 -1
  668. package/dist/frontend/lowering/construction-escapes.test.js +4 -4
  669. package/dist/frontend/lowering/construction-escapes.test.js.map +1 -1
  670. package/dist/frontend/lowering/constructor-returns.d.ts +61 -0
  671. package/dist/frontend/lowering/constructor-returns.js +477 -0
  672. package/dist/frontend/lowering/constructor-returns.js.map +1 -0
  673. package/dist/frontend/lowering/containers/array-callback-call.js +1 -1
  674. package/dist/frontend/lowering/containers/array-callback-call.js.map +1 -1
  675. package/dist/frontend/lowering/containers/array-callbacks.d.ts +17 -0
  676. package/dist/frontend/lowering/containers/array-callbacks.js +287 -118
  677. package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
  678. package/dist/frontend/lowering/containers/array-concat.js +1 -1
  679. package/dist/frontend/lowering/containers/array-concat.js.map +1 -1
  680. package/dist/frontend/lowering/containers/array-construction.d.ts +0 -1
  681. package/dist/frontend/lowering/containers/array-construction.js +58 -13
  682. package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
  683. package/dist/frontend/lowering/containers/array-from-async.d.ts +6 -5
  684. package/dist/frontend/lowering/containers/array-from-async.js +159 -14
  685. package/dist/frontend/lowering/containers/array-from-async.js.map +1 -1
  686. package/dist/frontend/lowering/containers/array-methods.js +94 -77
  687. package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
  688. package/dist/frontend/lowering/containers/array-pipelines.js +1 -0
  689. package/dist/frontend/lowering/containers/array-pipelines.js.map +1 -1
  690. package/dist/frontend/lowering/containers/bytes.d.ts +9 -0
  691. package/dist/frontend/lowering/containers/bytes.js +649 -113
  692. package/dist/frontend/lowering/containers/bytes.js.map +1 -1
  693. package/dist/frontend/lowering/containers/callback-arguments.d.ts +9 -1
  694. package/dist/frontend/lowering/containers/callback-arguments.js +55 -5
  695. package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -1
  696. package/dist/frontend/lowering/containers/collection-grouping.d.ts +7 -8
  697. package/dist/frontend/lowering/containers/collection-grouping.js +217 -26
  698. package/dist/frontend/lowering/containers/collection-grouping.js.map +1 -1
  699. package/dist/frontend/lowering/containers/collection-methods.js +126 -28
  700. package/dist/frontend/lowering/containers/collection-methods.js.map +1 -1
  701. package/dist/frontend/lowering/containers/dynamic-receivers.js +1 -1
  702. package/dist/frontend/lowering/containers/dynamic-receivers.js.map +1 -1
  703. package/dist/frontend/lowering/containers/exec-result-uses.js +2 -2
  704. package/dist/frontend/lowering/containers/exec-result-uses.js.map +1 -1
  705. package/dist/frontend/lowering/containers/for-of.d.ts +6 -0
  706. package/dist/frontend/lowering/containers/for-of.js +19 -19
  707. package/dist/frontend/lowering/containers/for-of.js.map +1 -1
  708. package/dist/frontend/lowering/containers/indexed-objects.js +142 -57
  709. package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
  710. package/dist/frontend/lowering/containers/iterator-helpers.d.ts +53 -4
  711. package/dist/frontend/lowering/containers/iterator-helpers.js +1581 -462
  712. package/dist/frontend/lowering/containers/iterator-helpers.js.map +1 -1
  713. package/dist/frontend/lowering/containers/match-row-uses.d.ts +17 -0
  714. package/dist/frontend/lowering/containers/match-row-uses.js +264 -0
  715. package/dist/frontend/lowering/containers/match-row-uses.js.map +1 -0
  716. package/dist/frontend/lowering/containers/string-and-regexp.d.ts +14 -0
  717. package/dist/frontend/lowering/containers/string-and-regexp.js +455 -30
  718. package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
  719. package/dist/frontend/lowering/containers/string-replacement.js +1 -1
  720. package/dist/frontend/lowering/containers/string-replacement.js.map +1 -1
  721. package/dist/frontend/lowering/cycle-initialization.d.ts +30 -10
  722. package/dist/frontend/lowering/cycle-initialization.js +191 -35
  723. package/dist/frontend/lowering/cycle-initialization.js.map +1 -1
  724. package/dist/frontend/lowering/deferred-module-initializers.js +47 -43
  725. package/dist/frontend/lowering/deferred-module-initializers.js.map +1 -1
  726. package/dist/frontend/lowering/devirtualize.d.ts +1 -1
  727. package/dist/frontend/lowering/devirtualize.js +27 -7
  728. package/dist/frontend/lowering/devirtualize.js.map +1 -1
  729. package/dist/frontend/lowering/divergences.d.ts +0 -5
  730. package/dist/frontend/lowering/divergences.js +62 -125
  731. package/dist/frontend/lowering/divergences.js.map +1 -1
  732. package/dist/frontend/lowering/dyn-streams.d.ts +25 -0
  733. package/dist/frontend/lowering/dyn-streams.js +257 -0
  734. package/dist/frontend/lowering/dyn-streams.js.map +1 -0
  735. package/dist/frontend/lowering/error-methods.js +4 -1
  736. package/dist/frontend/lowering/error-methods.js.map +1 -1
  737. package/dist/frontend/lowering/error-name-order.d.ts +19 -0
  738. package/dist/frontend/lowering/error-name-order.js +93 -0
  739. package/dist/frontend/lowering/error-name-order.js.map +1 -0
  740. package/dist/frontend/lowering/expressions/array-literals.d.ts +21 -0
  741. package/dist/frontend/lowering/expressions/array-literals.js +723 -0
  742. package/dist/frontend/lowering/expressions/array-literals.js.map +1 -0
  743. package/dist/frontend/lowering/expressions/binary.d.ts +35 -0
  744. package/dist/frontend/lowering/expressions/binary.js +2557 -0
  745. package/dist/frontend/lowering/expressions/binary.js.map +1 -0
  746. package/dist/frontend/lowering/expressions/element-access.d.ts +31 -0
  747. package/dist/frontend/lowering/expressions/element-access.js +1804 -0
  748. package/dist/frontend/lowering/expressions/element-access.js.map +1 -0
  749. package/dist/frontend/lowering/expressions/evaluation-safety.js +4 -3
  750. package/dist/frontend/lowering/expressions/evaluation-safety.js.map +1 -1
  751. package/dist/frontend/lowering/expressions/hosted-narrowing.d.ts +38 -0
  752. package/dist/frontend/lowering/expressions/hosted-narrowing.js +160 -0
  753. package/dist/frontend/lowering/expressions/hosted-narrowing.js.map +1 -0
  754. package/dist/frontend/lowering/expressions/identifiers.d.ts +4 -0
  755. package/dist/frontend/lowering/expressions/identifiers.js +830 -0
  756. package/dist/frontend/lowering/expressions/identifiers.js.map +1 -0
  757. package/dist/frontend/lowering/expressions/keyed-field-targets.d.ts +52 -0
  758. package/dist/frontend/lowering/expressions/keyed-field-targets.js +307 -0
  759. package/dist/frontend/lowering/expressions/keyed-field-targets.js.map +1 -0
  760. package/dist/frontend/lowering/expressions/narrowing.d.ts +37 -0
  761. package/dist/frontend/lowering/expressions/narrowing.js +1337 -0
  762. package/dist/frontend/lowering/expressions/narrowing.js.map +1 -0
  763. package/dist/frontend/lowering/expressions/native-proxy.js +4 -4
  764. package/dist/frontend/lowering/expressions/native-proxy.js.map +1 -1
  765. package/dist/frontend/lowering/expressions/nullish-assignment.js +45 -0
  766. package/dist/frontend/lowering/expressions/nullish-assignment.js.map +1 -1
  767. package/dist/frontend/lowering/expressions/object-literals.d.ts +10 -0
  768. package/dist/frontend/lowering/expressions/object-literals.js +301 -86
  769. package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
  770. package/dist/frontend/lowering/expressions/optional-chains.d.ts +3 -2
  771. package/dist/frontend/lowering/expressions/optional-chains.js +103 -17
  772. package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
  773. package/dist/frontend/lowering/expressions/property-access.d.ts +115 -0
  774. package/dist/frontend/lowering/expressions/property-access.js +3787 -0
  775. package/dist/frontend/lowering/expressions/property-access.js.map +1 -0
  776. package/dist/frontend/lowering/expressions/relational.d.ts +28 -0
  777. package/dist/frontend/lowering/expressions/relational.js +1724 -0
  778. package/dist/frontend/lowering/expressions/relational.js.map +1 -0
  779. package/dist/frontend/lowering/expressions/typeof.d.ts +22 -0
  780. package/dist/frontend/lowering/expressions/typeof.js +551 -0
  781. package/dist/frontend/lowering/expressions/typeof.js.map +1 -0
  782. package/dist/frontend/lowering/expressions/union-fields.js +1 -1
  783. package/dist/frontend/lowering/expressions/union-fields.js.map +1 -1
  784. package/dist/frontend/lowering/expressions/updates.d.ts +21 -0
  785. package/dist/frontend/lowering/expressions/updates.js +780 -0
  786. package/dist/frontend/lowering/expressions/updates.js.map +1 -0
  787. package/dist/frontend/lowering/function-context.d.ts +10 -0
  788. package/dist/frontend/lowering/function-context.js +11 -1
  789. package/dist/frontend/lowering/function-context.js.map +1 -1
  790. package/dist/frontend/lowering/function-returns.js +52 -28
  791. package/dist/frontend/lowering/function-returns.js.map +1 -1
  792. package/dist/frontend/lowering/general-streams.d.ts +25 -0
  793. package/dist/frontend/lowering/general-streams.js +108 -0
  794. package/dist/frontend/lowering/general-streams.js.map +1 -0
  795. package/dist/frontend/lowering/generator-delegation.d.ts +8 -0
  796. package/dist/frontend/lowering/generator-delegation.js +191 -1
  797. package/dist/frontend/lowering/generator-delegation.js.map +1 -1
  798. package/dist/frontend/lowering/generator-dynamic-dispatch.d.ts +7 -0
  799. package/dist/frontend/lowering/generator-dynamic-dispatch.js +172 -69
  800. package/dist/frontend/lowering/generator-dynamic-dispatch.js.map +1 -1
  801. package/dist/frontend/lowering/generic-functions.d.ts +43 -0
  802. package/dist/frontend/lowering/generic-functions.js +593 -118
  803. package/dist/frontend/lowering/generic-functions.js.map +1 -1
  804. package/dist/frontend/lowering/handle-properties.d.ts +24 -0
  805. package/dist/frontend/lowering/handle-properties.js +281 -0
  806. package/dist/frontend/lowering/handle-properties.js.map +1 -0
  807. package/dist/frontend/lowering/import-meta.js +2 -2
  808. package/dist/frontend/lowering/import-meta.js.map +1 -1
  809. package/dist/frontend/lowering/intern-tables.js +10 -9
  810. package/dist/frontend/lowering/intern-tables.js.map +1 -1
  811. package/dist/frontend/lowering/iterable-spelling.d.ts +7 -0
  812. package/dist/frontend/lowering/iterable-spelling.js +38 -0
  813. package/dist/frontend/lowering/iterable-spelling.js.map +1 -0
  814. package/dist/frontend/lowering/iterator-adapters.d.ts +19 -0
  815. package/dist/frontend/lowering/iterator-adapters.js +331 -3
  816. package/dist/frontend/lowering/iterator-adapters.js.map +1 -1
  817. package/dist/frontend/lowering/js-class-fields.d.ts +28 -0
  818. package/dist/frontend/lowering/js-class-fields.js +170 -0
  819. package/dist/frontend/lowering/js-class-fields.js.map +1 -0
  820. package/dist/frontend/lowering/js-dynamic-objects.d.ts +15 -0
  821. package/dist/frontend/lowering/js-dynamic-objects.js +299 -0
  822. package/dist/frontend/lowering/js-dynamic-objects.js.map +1 -0
  823. package/dist/frontend/lowering/js-dynamic-objects.test.d.ts +1 -0
  824. package/dist/frontend/lowering/js-dynamic-objects.test.js +35 -0
  825. package/dist/frontend/lowering/js-dynamic-objects.test.js.map +1 -0
  826. package/dist/frontend/lowering/json-require.d.ts +22 -0
  827. package/dist/frontend/lowering/json-require.js +131 -0
  828. package/dist/frontend/lowering/json-require.js.map +1 -0
  829. package/dist/frontend/lowering/key-order-witness.d.ts +44 -0
  830. package/dist/frontend/lowering/key-order-witness.js +641 -0
  831. package/dist/frontend/lowering/key-order-witness.js.map +1 -0
  832. package/dist/frontend/lowering/key-order-witness.test.d.ts +1 -0
  833. package/dist/frontend/lowering/key-order-witness.test.js +239 -0
  834. package/dist/frontend/lowering/key-order-witness.test.js.map +1 -0
  835. package/dist/frontend/lowering/lifetime-regions.js +7 -7
  836. package/dist/frontend/lowering/lifetime-regions.js.map +1 -1
  837. package/dist/frontend/lowering/lower-array-sort.d.ts +33 -15
  838. package/dist/frontend/lowering/lower-array-sort.js +117 -21
  839. package/dist/frontend/lowering/lower-array-sort.js.map +1 -1
  840. package/dist/frontend/lowering/lower-array-sort.test.js +93 -14
  841. package/dist/frontend/lowering/lower-array-sort.test.js.map +1 -1
  842. package/dist/frontend/lowering/lower-assert.js +61 -60
  843. package/dist/frontend/lowering/lower-assert.js.map +1 -1
  844. package/dist/frontend/lowering/lower-async-iteration.d.ts +10 -1
  845. package/dist/frontend/lowering/lower-async-iteration.js +34 -6
  846. package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
  847. package/dist/frontend/lowering/lower-builtin-values.d.ts +5 -0
  848. package/dist/frontend/lowering/lower-builtin-values.js +33 -3
  849. package/dist/frontend/lowering/lower-builtin-values.js.map +1 -1
  850. package/dist/frontend/lowering/lower-calls.js +1404 -448
  851. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  852. package/dist/frontend/lowering/lower-classes.d.ts +54 -3
  853. package/dist/frontend/lowering/lower-classes.js +1529 -472
  854. package/dist/frontend/lowering/lower-classes.js.map +1 -1
  855. package/dist/frontend/lowering/lower-comptime.d.ts +4 -2
  856. package/dist/frontend/lowering/lower-comptime.js +111 -13
  857. package/dist/frontend/lowering/lower-comptime.js.map +1 -1
  858. package/dist/frontend/lowering/lower-console.js +13 -11
  859. package/dist/frontend/lowering/lower-console.js.map +1 -1
  860. package/dist/frontend/lowering/lower-dgram.d.ts +10 -0
  861. package/dist/frontend/lowering/lower-dgram.js +241 -21
  862. package/dist/frontend/lowering/lower-dgram.js.map +1 -1
  863. package/dist/frontend/lowering/lower-enums.js +113 -14
  864. package/dist/frontend/lowering/lower-enums.js.map +1 -1
  865. package/dist/frontend/lowering/lower-event-emitter.d.ts +16 -7
  866. package/dist/frontend/lowering/lower-event-emitter.js +258 -70
  867. package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
  868. package/dist/frontend/lowering/lower-event-target.js +2 -2
  869. package/dist/frontend/lowering/lower-event-target.js.map +1 -1
  870. package/dist/frontend/lowering/lower-expando.js +17 -13
  871. package/dist/frontend/lowering/lower-expando.js.map +1 -1
  872. package/dist/frontend/lowering/lower-exprs.d.ts +188 -186
  873. package/dist/frontend/lowering/lower-exprs.js +1509 -12486
  874. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  875. package/dist/frontend/lowering/lower-functions.js +72 -22
  876. package/dist/frontend/lowering/lower-functions.js.map +1 -1
  877. package/dist/frontend/lowering/lower-generators.d.ts +6 -0
  878. package/dist/frontend/lowering/lower-generators.js +39 -20
  879. package/dist/frontend/lowering/lower-generators.js.map +1 -1
  880. package/dist/frontend/lowering/lower-global-value.js +5 -1
  881. package/dist/frontend/lowering/lower-global-value.js.map +1 -1
  882. package/dist/frontend/lowering/lower-inspect.js +900 -107
  883. package/dist/frontend/lowering/lower-inspect.js.map +1 -1
  884. package/dist/frontend/lowering/lower-mixins.js +23 -20
  885. package/dist/frontend/lowering/lower-mixins.js.map +1 -1
  886. package/dist/frontend/lowering/lower-mock.d.ts +8 -1
  887. package/dist/frontend/lowering/lower-mock.js +185 -18
  888. package/dist/frontend/lowering/lower-mock.js.map +1 -1
  889. package/dist/frontend/lowering/lower-modules.d.ts +11 -3
  890. package/dist/frontend/lowering/lower-modules.js +445 -94
  891. package/dist/frontend/lowering/lower-modules.js.map +1 -1
  892. package/dist/frontend/lowering/lower-namespaces.d.ts +6 -0
  893. package/dist/frontend/lowering/lower-namespaces.js +65 -33
  894. package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
  895. package/dist/frontend/lowering/lower-node-module.d.ts +16 -0
  896. package/dist/frontend/lowering/lower-node-module.js +147 -14
  897. package/dist/frontend/lowering/lower-node-module.js.map +1 -1
  898. package/dist/frontend/lowering/lower-server.d.ts +6 -6
  899. package/dist/frontend/lowering/lower-server.js +514 -101
  900. package/dist/frontend/lowering/lower-server.js.map +1 -1
  901. package/dist/frontend/lowering/lower-stdlib.d.ts +4 -0
  902. package/dist/frontend/lowering/lower-stdlib.js +179 -118
  903. package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
  904. package/dist/frontend/lowering/lower-stmts.d.ts +30 -7
  905. package/dist/frontend/lowering/lower-stmts.js +1950 -433
  906. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  907. package/dist/frontend/lowering/lower-stream.d.ts +3 -0
  908. package/dist/frontend/lowering/lower-stream.js +398 -56
  909. package/dist/frontend/lowering/lower-stream.js.map +1 -1
  910. package/dist/frontend/lowering/lower-test.d.ts +3 -0
  911. package/dist/frontend/lowering/lower-test.js +437 -62
  912. package/dist/frontend/lowering/lower-test.js.map +1 -1
  913. package/dist/frontend/lowering/lower-timers.js +96 -32
  914. package/dist/frontend/lowering/lower-timers.js.map +1 -1
  915. package/dist/frontend/lowering/lower-url.js +1 -1
  916. package/dist/frontend/lowering/lower-url.js.map +1 -1
  917. package/dist/frontend/lowering/lowerer.d.ts +424 -27
  918. package/dist/frontend/lowering/lowerer.js +2062 -310
  919. package/dist/frontend/lowering/lowerer.js.map +1 -1
  920. package/dist/frontend/lowering/lowerer.test.js +10 -4
  921. package/dist/frontend/lowering/lowerer.test.js.map +1 -1
  922. package/dist/frontend/lowering/maybe-promise.d.ts +46 -0
  923. package/dist/frontend/lowering/maybe-promise.js +249 -0
  924. package/dist/frontend/lowering/maybe-promise.js.map +1 -0
  925. package/dist/frontend/lowering/module-member-this.d.ts +3 -0
  926. package/dist/frontend/lowering/module-member-this.js +262 -0
  927. package/dist/frontend/lowering/module-member-this.js.map +1 -0
  928. package/dist/frontend/lowering/module-namespace-elements.js +1 -1
  929. package/dist/frontend/lowering/module-namespace-elements.js.map +1 -1
  930. package/dist/frontend/lowering/nan-coded-reads.d.ts +3 -0
  931. package/dist/frontend/lowering/nan-coded-reads.js +45 -32
  932. package/dist/frontend/lowering/nan-coded-reads.js.map +1 -1
  933. package/dist/frontend/lowering/narrowing-stability.d.ts +18 -3
  934. package/dist/frontend/lowering/narrowing-stability.js +104 -32
  935. package/dist/frontend/lowering/narrowing-stability.js.map +1 -1
  936. package/dist/frontend/lowering/native-ffi.js +11 -11
  937. package/dist/frontend/lowering/native-ffi.js.map +1 -1
  938. package/dist/frontend/lowering/object-factory-new.js +6 -8
  939. package/dist/frontend/lowering/object-factory-new.js.map +1 -1
  940. package/dist/frontend/lowering/private-brands.d.ts +46 -0
  941. package/dist/frontend/lowering/private-brands.js +265 -0
  942. package/dist/frontend/lowering/private-brands.js.map +1 -0
  943. package/dist/frontend/lowering/promise-executor-adapter.d.ts +11 -0
  944. package/dist/frontend/lowering/promise-executor-adapter.js +87 -0
  945. package/dist/frontend/lowering/promise-executor-adapter.js.map +1 -0
  946. package/dist/frontend/lowering/rebindable-functions.d.ts +8 -0
  947. package/dist/frontend/lowering/rebindable-functions.js +54 -0
  948. package/dist/frontend/lowering/rebindable-functions.js.map +1 -0
  949. package/dist/frontend/lowering/require-initialization.d.ts +32 -0
  950. package/dist/frontend/lowering/require-initialization.js +246 -0
  951. package/dist/frontend/lowering/require-initialization.js.map +1 -0
  952. package/dist/frontend/lowering/runtime-optional-bounds.js +7 -7
  953. package/dist/frontend/lowering/runtime-optional-bounds.js.map +1 -1
  954. package/dist/frontend/lowering/runtime-optional-elements.js +12 -12
  955. package/dist/frontend/lowering/runtime-optional-elements.js.map +1 -1
  956. package/dist/frontend/lowering/runtime-optional-guards.js +10 -10
  957. package/dist/frontend/lowering/runtime-optional-guards.js.map +1 -1
  958. package/dist/frontend/lowering/runtime-optional-guards.test.js +1 -1
  959. package/dist/frontend/lowering/runtime-optional-guards.test.js.map +1 -1
  960. package/dist/frontend/lowering/runtime-optional-ownership.js +10 -9
  961. package/dist/frontend/lowering/runtime-optional-ownership.js.map +1 -1
  962. package/dist/frontend/lowering/runtime-optional-provenance.js +2 -2
  963. package/dist/frontend/lowering/runtime-optional-provenance.js.map +1 -1
  964. package/dist/frontend/lowering/runtime-optional-records.d.ts +35 -0
  965. package/dist/frontend/lowering/runtime-optional-records.js +205 -32
  966. package/dist/frontend/lowering/runtime-optional-records.js.map +1 -1
  967. package/dist/frontend/lowering/runtime-optional-records.test.js +19 -1
  968. package/dist/frontend/lowering/runtime-optional-records.test.js.map +1 -1
  969. package/dist/frontend/lowering/sanitize-class-types.test.js +2 -2
  970. package/dist/frontend/lowering/split-consumers.js +4 -4
  971. package/dist/frontend/lowering/split-consumers.js.map +1 -1
  972. package/dist/frontend/lowering/static-function-names.d.ts +28 -0
  973. package/dist/frontend/lowering/static-function-names.js +212 -0
  974. package/dist/frontend/lowering/static-function-names.js.map +1 -0
  975. package/dist/frontend/lowering/static-this.js +6 -6
  976. package/dist/frontend/lowering/static-this.js.map +1 -1
  977. package/dist/frontend/lowering/static-typeof.d.ts +26 -0
  978. package/dist/frontend/lowering/static-typeof.js +133 -0
  979. package/dist/frontend/lowering/static-typeof.js.map +1 -0
  980. package/dist/frontend/lowering/strict-mode.d.ts +5 -0
  981. package/dist/frontend/lowering/strict-mode.js +31 -0
  982. package/dist/frontend/lowering/strict-mode.js.map +1 -0
  983. package/dist/frontend/lowering/string-index-bounds.js +13 -12
  984. package/dist/frontend/lowering/string-index-bounds.js.map +1 -1
  985. package/dist/frontend/lowering/string-index.d.ts +12 -0
  986. package/dist/frontend/lowering/string-index.js +72 -1
  987. package/dist/frontend/lowering/string-index.js.map +1 -1
  988. package/dist/frontend/lowering/surfaces.d.ts +12 -3
  989. package/dist/frontend/lowering/surfaces.js +282 -45
  990. package/dist/frontend/lowering/surfaces.js.map +1 -1
  991. package/dist/frontend/lowering/symbol-fields.d.ts +7 -0
  992. package/dist/frontend/lowering/symbol-fields.js +204 -36
  993. package/dist/frontend/lowering/symbol-fields.js.map +1 -1
  994. package/dist/frontend/lowering/symbol-methods.d.ts +2 -1
  995. package/dist/frontend/lowering/symbol-methods.js +24 -6
  996. package/dist/frontend/lowering/symbol-methods.js.map +1 -1
  997. package/dist/frontend/lowering/thenables.d.ts +16 -0
  998. package/dist/frontend/lowering/thenables.js +124 -0
  999. package/dist/frontend/lowering/thenables.js.map +1 -0
  1000. package/dist/frontend/lowering/thread-slots.d.ts +13 -0
  1001. package/dist/frontend/lowering/thread-slots.js +208 -0
  1002. package/dist/frontend/lowering/thread-slots.js.map +1 -0
  1003. package/dist/frontend/lowering/typed-arguments.d.ts +74 -0
  1004. package/dist/frontend/lowering/typed-arguments.js +472 -0
  1005. package/dist/frontend/lowering/typed-arguments.js.map +1 -0
  1006. package/dist/frontend/lowering/union-retag.d.ts +8 -0
  1007. package/dist/frontend/lowering/union-retag.js +27 -0
  1008. package/dist/frontend/lowering/union-retag.js.map +1 -1
  1009. package/dist/frontend/lowering/union-retag.test.js +24 -1
  1010. package/dist/frontend/lowering/union-retag.test.js.map +1 -1
  1011. package/dist/frontend/lowering/var-hoisting.js +6 -6
  1012. package/dist/frontend/lowering/var-hoisting.js.map +1 -1
  1013. package/dist/frontend/lowering/width-lift.d.ts +4 -0
  1014. package/dist/frontend/mock-shapes.js +13 -6
  1015. package/dist/frontend/mock-shapes.js.map +1 -1
  1016. package/dist/frontend/module-source-candidates.js +1 -1
  1017. package/dist/frontend/module-source-candidates.js.map +1 -1
  1018. package/dist/frontend/module-source-candidates.test.js +2 -1
  1019. package/dist/frontend/module-source-candidates.test.js.map +1 -1
  1020. package/dist/frontend/module-syntax.js +8 -8
  1021. package/dist/frontend/module-syntax.js.map +1 -1
  1022. package/dist/frontend/npm-static-builtin-aliases.d.ts +8 -0
  1023. package/dist/frontend/npm-static-builtin-aliases.js +65 -0
  1024. package/dist/frontend/npm-static-builtin-aliases.js.map +1 -0
  1025. package/dist/frontend/npm-static-bundled-chunks.d.ts +58 -0
  1026. package/dist/frontend/npm-static-bundled-chunks.js +981 -0
  1027. package/dist/frontend/npm-static-bundled-chunks.js.map +1 -0
  1028. package/dist/frontend/npm-static-bundled-chunks.test.d.ts +1 -0
  1029. package/dist/frontend/npm-static-bundled-chunks.test.js +399 -0
  1030. package/dist/frontend/npm-static-bundled-chunks.test.js.map +1 -0
  1031. package/dist/frontend/npm-static-bundled-cjs.js +24 -23
  1032. package/dist/frontend/npm-static-bundled-cjs.js.map +1 -1
  1033. package/dist/frontend/npm-static-bundled-esm.d.ts +9 -0
  1034. package/dist/frontend/npm-static-bundled-esm.js +988 -0
  1035. package/dist/frontend/npm-static-bundled-esm.js.map +1 -0
  1036. package/dist/frontend/npm-static-bundled-esm.test.d.ts +1 -0
  1037. package/dist/frontend/npm-static-bundled-esm.test.js +336 -0
  1038. package/dist/frontend/npm-static-bundled-esm.test.js.map +1 -0
  1039. package/dist/frontend/npm-static-cjs-exports-alias.d.ts +2 -0
  1040. package/dist/frontend/npm-static-cjs-exports-alias.js +186 -0
  1041. package/dist/frontend/npm-static-cjs-exports-alias.js.map +1 -0
  1042. package/dist/frontend/npm-static-cjs-exports-alias.test.d.ts +1 -0
  1043. package/dist/frontend/npm-static-cjs-exports-alias.test.js +73 -0
  1044. package/dist/frontend/npm-static-cjs-exports-alias.test.js.map +1 -0
  1045. package/dist/frontend/npm-static-cjs-exports-var.d.ts +2 -0
  1046. package/dist/frontend/npm-static-cjs-exports-var.js +236 -0
  1047. package/dist/frontend/npm-static-cjs-exports-var.js.map +1 -0
  1048. package/dist/frontend/npm-static-declaration-syntax.js +102 -101
  1049. package/dist/frontend/npm-static-declaration-syntax.js.map +1 -1
  1050. package/dist/frontend/npm-static-enum-iife.d.ts +6 -0
  1051. package/dist/frontend/npm-static-enum-iife.js +280 -0
  1052. package/dist/frontend/npm-static-enum-iife.js.map +1 -0
  1053. package/dist/frontend/npm-static-enum-iife.test.d.ts +1 -0
  1054. package/dist/frontend/npm-static-enum-iife.test.js +116 -0
  1055. package/dist/frontend/npm-static-enum-iife.test.js.map +1 -0
  1056. package/dist/frontend/npm-static-prune.js +36 -24
  1057. package/dist/frontend/npm-static-prune.js.map +1 -1
  1058. package/dist/frontend/npm-static-rewrite-host.d.ts +4 -1
  1059. package/dist/frontend/npm-static-rewrite-host.js +14 -3
  1060. package/dist/frontend/npm-static-rewrite-host.js.map +1 -1
  1061. package/dist/frontend/npm-static-rewrite-syntax.d.ts +19 -0
  1062. package/dist/frontend/npm-static-rewrite-syntax.js +274 -101
  1063. package/dist/frontend/npm-static-rewrite-syntax.js.map +1 -1
  1064. package/dist/frontend/npm-static-subtyping.js +7 -9
  1065. package/dist/frontend/npm-static-subtyping.js.map +1 -1
  1066. package/dist/frontend/npm-static.d.ts +25 -1
  1067. package/dist/frontend/npm-static.js +212 -16
  1068. package/dist/frontend/npm-static.js.map +1 -1
  1069. package/dist/frontend/npm-static.test.js +22 -1
  1070. package/dist/frontend/npm-static.test.js.map +1 -1
  1071. package/dist/frontend/npm.js +13 -0
  1072. package/dist/frontend/npm.js.map +1 -1
  1073. package/dist/frontend/package-shims.d.ts +47 -0
  1074. package/dist/frontend/package-shims.js +300 -0
  1075. package/dist/frontend/package-shims.js.map +1 -0
  1076. package/dist/frontend/pipeline.js +230 -26
  1077. package/dist/frontend/pipeline.js.map +1 -1
  1078. package/dist/frontend/pipeline.test.js +22 -1
  1079. package/dist/frontend/pipeline.test.js.map +1 -1
  1080. package/dist/frontend/program-analysis.d.ts +6 -1
  1081. package/dist/frontend/program-analysis.js +7 -0
  1082. package/dist/frontend/program-analysis.js.map +1 -1
  1083. package/dist/frontend/program.d.ts +100 -2
  1084. package/dist/frontend/program.js +1627 -262
  1085. package/dist/frontend/program.js.map +1 -1
  1086. package/dist/frontend/program.test.js +76 -6
  1087. package/dist/frontend/program.test.js.map +1 -1
  1088. package/dist/frontend/resolve.js +49 -2
  1089. package/dist/frontend/resolve.js.map +1 -1
  1090. package/dist/frontend/resolve.test.js +49 -0
  1091. package/dist/frontend/resolve.test.js.map +1 -1
  1092. package/dist/frontend/services.d.ts +26 -1
  1093. package/dist/frontend/services.js +59 -3
  1094. package/dist/frontend/services.js.map +1 -1
  1095. package/dist/frontend/services.test.js +2 -1
  1096. package/dist/frontend/services.test.js.map +1 -1
  1097. package/dist/frontend/threads-import.js +1 -1
  1098. package/dist/frontend/threads-import.js.map +1 -1
  1099. package/dist/frontend/tier-analysis.d.ts +71 -0
  1100. package/dist/frontend/tier-analysis.js +522 -0
  1101. package/dist/frontend/tier-analysis.js.map +1 -0
  1102. package/dist/frontend/ts7/api-conformance.d.ts +234 -0
  1103. package/dist/frontend/ts7/api-conformance.js +7 -0
  1104. package/dist/frontend/ts7/api-conformance.js.map +1 -0
  1105. package/dist/frontend/ts7/ast-guards.generated.js +2 -1
  1106. package/dist/frontend/ts7/ast-guards.generated.js.map +1 -1
  1107. package/dist/frontend/ts7/ast-node.d.ts +47 -25
  1108. package/dist/frontend/ts7/ast-node.js +64 -18
  1109. package/dist/frontend/ts7/ast-node.js.map +1 -1
  1110. package/dist/frontend/ts7/ast-node.test.js +36 -12
  1111. package/dist/frontend/ts7/ast-node.test.js.map +1 -1
  1112. package/dist/frontend/ts7/ast-types.d.ts +10 -3
  1113. package/dist/frontend/ts7/ast-types.generated.d.ts +39 -39
  1114. package/dist/frontend/ts7/ast.d.ts +1 -0
  1115. package/dist/frontend/ts7/ast.js +3 -2
  1116. package/dist/frontend/ts7/ast.js.map +1 -1
  1117. package/dist/frontend/ts7/checker-backend.d.ts +23 -0
  1118. package/dist/frontend/ts7/checker-backend.js +88 -0
  1119. package/dist/frontend/ts7/checker-backend.js.map +1 -0
  1120. package/dist/frontend/ts7/checker-backend.test.d.ts +1 -0
  1121. package/dist/frontend/ts7/checker-backend.test.js +63 -0
  1122. package/dist/frontend/ts7/checker-backend.test.js.map +1 -0
  1123. package/dist/frontend/ts7/checker-cache.d.ts +0 -3
  1124. package/dist/frontend/ts7/checker-cache.js +0 -6
  1125. package/dist/frontend/ts7/checker-cache.js.map +1 -1
  1126. package/dist/frontend/ts7/checker.d.ts +18 -11
  1127. package/dist/frontend/ts7/checker.js +42 -55
  1128. package/dist/frontend/ts7/checker.js.map +1 -1
  1129. package/dist/frontend/ts7/checker.test.js +10 -7
  1130. package/dist/frontend/ts7/checker.test.js.map +1 -1
  1131. package/dist/frontend/ts7/diagnostic.d.ts +19 -0
  1132. package/dist/frontend/ts7/diagnostic.js +22 -0
  1133. package/dist/frontend/ts7/diagnostic.js.map +1 -0
  1134. package/dist/frontend/ts7/node-functions.d.ts +8 -0
  1135. package/dist/frontend/ts7/node-functions.js +18 -0
  1136. package/dist/frontend/ts7/node-functions.js.map +1 -0
  1137. package/dist/frontend/ts7/program-host.d.ts +10 -5
  1138. package/dist/frontend/ts7/program-host.js +19 -0
  1139. package/dist/frontend/ts7/program-host.js.map +1 -1
  1140. package/dist/frontend/ts7/rpc-api.d.ts +5 -1
  1141. package/dist/frontend/ts7/rpc-api.js +8 -1
  1142. package/dist/frontend/ts7/rpc-api.js.map +1 -1
  1143. package/dist/frontend/ts7/semantic-checker.d.ts +13 -6
  1144. package/dist/frontend/ts7/semantic-checker.js +26 -8
  1145. package/dist/frontend/ts7/semantic-checker.js.map +1 -1
  1146. package/dist/frontend/ts7/semantic-checker.test.js +12 -9
  1147. package/dist/frontend/ts7/semantic-checker.test.js.map +1 -1
  1148. package/dist/frontend/ts7/semantic-model.d.ts +57 -24
  1149. package/dist/frontend/ts7/semantic-model.js +114 -16
  1150. package/dist/frontend/ts7/semantic-model.js.map +1 -1
  1151. package/dist/frontend/ts7/semantic-model.test.js +4 -4
  1152. package/dist/frontend/ts7/semantic-model.test.js.map +1 -1
  1153. package/dist/frontend/ts7/semantic-types.d.ts +7 -3
  1154. package/dist/frontend/ts7/semantic-types.js +1 -1
  1155. package/dist/frontend/ts7/semantic-types.js.map +1 -1
  1156. package/dist/frontend/ts7/session.d.ts +30 -15
  1157. package/dist/frontend/ts7/session.js +8 -5
  1158. package/dist/frontend/ts7/session.js.map +1 -1
  1159. package/dist/frontend/ts7/session.test.js +9 -5
  1160. package/dist/frontend/ts7/session.test.js.map +1 -1
  1161. package/dist/frontend/ts7/source-parser.d.ts +6 -2
  1162. package/dist/frontend/ts7/source-parser.js +24 -3
  1163. package/dist/frontend/ts7/source-parser.js.map +1 -1
  1164. package/dist/frontend/ts7/source-parser.test.js +38 -17
  1165. package/dist/frontend/ts7/source-parser.test.js.map +1 -1
  1166. package/dist/frontend/type-mapper.d.ts +122 -2
  1167. package/dist/frontend/type-mapper.js +2735 -723
  1168. package/dist/frontend/type-mapper.js.map +1 -1
  1169. package/dist/frontend/type-only-imports.d.ts +28 -0
  1170. package/dist/frontend/type-only-imports.js +122 -0
  1171. package/dist/frontend/type-only-imports.js.map +1 -0
  1172. package/dist/frontend/worker-target.js +8 -8
  1173. package/dist/frontend/worker-target.js.map +1 -1
  1174. package/dist/index.d.ts +4 -1
  1175. package/dist/index.js +87 -8
  1176. package/dist/index.js.map +1 -1
  1177. package/dist/ir/analysis.js +4 -2
  1178. package/dist/ir/analysis.js.map +1 -1
  1179. package/dist/ir/api.d.ts +1 -1
  1180. package/dist/ir/api.js +1 -1
  1181. package/dist/ir/api.js.map +1 -1
  1182. package/dist/ir/array-length-stability.d.ts +31 -0
  1183. package/dist/ir/array-length-stability.js +249 -0
  1184. package/dist/ir/array-length-stability.js.map +1 -0
  1185. package/dist/ir/array-length-stability.test.d.ts +1 -0
  1186. package/dist/ir/array-length-stability.test.js +134 -0
  1187. package/dist/ir/array-length-stability.test.js.map +1 -0
  1188. package/dist/ir/build.d.ts +2 -2
  1189. package/dist/ir/build.js +1 -1
  1190. package/dist/ir/build.js.map +1 -1
  1191. package/dist/ir/builtin-effects.js +116 -0
  1192. package/dist/ir/builtin-effects.js.map +1 -1
  1193. package/dist/ir/builtin-signatures.d.ts +1 -1
  1194. package/dist/ir/builtin-signatures.js +540 -29
  1195. package/dist/ir/builtin-signatures.js.map +1 -1
  1196. package/dist/ir/byte-numbers.js +3 -0
  1197. package/dist/ir/byte-numbers.js.map +1 -1
  1198. package/dist/ir/callback-specialization.d.ts +37 -0
  1199. package/dist/ir/callback-specialization.js +459 -0
  1200. package/dist/ir/callback-specialization.js.map +1 -0
  1201. package/dist/ir/callback-specialization.test.d.ts +1 -0
  1202. package/dist/ir/callback-specialization.test.js +208 -0
  1203. package/dist/ir/callback-specialization.test.js.map +1 -0
  1204. package/dist/ir/capture-values.d.ts +0 -1
  1205. package/dist/ir/capture-values.js +51 -40
  1206. package/dist/ir/capture-values.js.map +1 -1
  1207. package/dist/ir/constant-globals.test.js +1 -1
  1208. package/dist/ir/constant-tables.test.js +1 -1
  1209. package/dist/ir/field-values.test.js +1 -1
  1210. package/dist/ir/final-fields.test.js +1 -1
  1211. package/dist/ir/function-references.test.js +9 -1
  1212. package/dist/ir/function-references.test.js.map +1 -1
  1213. package/dist/ir/init-only-globals.test.js +1 -1
  1214. package/dist/ir/initializer-bindings.test.js +1 -1
  1215. package/dist/ir/int32-slots.d.ts +14 -0
  1216. package/dist/ir/int32-slots.js +97 -14
  1217. package/dist/ir/int32-slots.js.map +1 -1
  1218. package/dist/ir/int32-slots.test.js +1 -1
  1219. package/dist/ir/integer-loop-facts.d.ts +7 -0
  1220. package/dist/ir/integer-loop-facts.js +103 -17
  1221. package/dist/ir/integer-loop-facts.js.map +1 -1
  1222. package/dist/ir/integer-loops.d.ts +1 -1
  1223. package/dist/ir/integer-loops.js +39 -9
  1224. package/dist/ir/integer-loops.js.map +1 -1
  1225. package/dist/ir/integer-loops.test.js +104 -0
  1226. package/dist/ir/integer-loops.test.js.map +1 -1
  1227. package/dist/ir/integer-ranges.d.ts +13 -1
  1228. package/dist/ir/integer-ranges.js +125 -26
  1229. package/dist/ir/integer-ranges.js.map +1 -1
  1230. package/dist/ir/integer-ranges.test.js +273 -2
  1231. package/dist/ir/integer-ranges.test.js.map +1 -1
  1232. package/dist/ir/intrinsic-signatures.js +6 -0
  1233. package/dist/ir/intrinsic-signatures.js.map +1 -1
  1234. package/dist/ir/ir.d.ts +221 -58
  1235. package/dist/ir/ir.js +127 -12
  1236. package/dist/ir/ir.js.map +1 -1
  1237. package/dist/ir/ir.test.js +10 -0
  1238. package/dist/ir/ir.test.js.map +1 -1
  1239. package/dist/ir/js-ic.d.ts +52 -0
  1240. package/dist/ir/js-ic.js +199 -0
  1241. package/dist/ir/js-ic.js.map +1 -0
  1242. package/dist/ir/js-ic.test.d.ts +1 -0
  1243. package/dist/ir/js-ic.test.js +148 -0
  1244. package/dist/ir/js-ic.test.js.map +1 -0
  1245. package/dist/ir/jsval.d.ts +8 -0
  1246. package/dist/ir/jsval.js +399 -0
  1247. package/dist/ir/jsval.js.map +1 -0
  1248. package/dist/ir/jsval.test.d.ts +1 -0
  1249. package/dist/ir/jsval.test.js +239 -0
  1250. package/dist/ir/jsval.test.js.map +1 -0
  1251. package/dist/ir/runtime-features.d.ts +183 -33
  1252. package/dist/ir/runtime-features.js +795 -422
  1253. package/dist/ir/runtime-features.js.map +1 -1
  1254. package/dist/ir/scalar-records.test.js +1 -1
  1255. package/dist/ir/self-captures.d.ts +33 -0
  1256. package/dist/ir/self-captures.js +245 -0
  1257. package/dist/ir/self-captures.js.map +1 -0
  1258. package/dist/ir/self-captures.test.d.ts +1 -0
  1259. package/dist/ir/self-captures.test.js +135 -0
  1260. package/dist/ir/self-captures.test.js.map +1 -0
  1261. package/dist/ir/serialize.d.ts +1 -1
  1262. package/dist/ir/serialize.js +7 -4
  1263. package/dist/ir/serialize.js.map +1 -1
  1264. package/dist/ir/tiers.d.ts +26 -0
  1265. package/dist/ir/tiers.js +101 -0
  1266. package/dist/ir/tiers.js.map +1 -0
  1267. package/dist/ir/tiers.test.d.ts +1 -0
  1268. package/dist/ir/tiers.test.js +140 -0
  1269. package/dist/ir/tiers.test.js.map +1 -0
  1270. package/dist/ir/traverse.js +201 -150
  1271. package/dist/ir/traverse.js.map +1 -1
  1272. package/dist/ir/traverse.test.js +33 -30
  1273. package/dist/ir/traverse.test.js.map +1 -1
  1274. package/dist/ir/unshare.js +65 -3
  1275. package/dist/ir/unshare.js.map +1 -1
  1276. package/dist/ir/unshare.test.js +1 -1
  1277. package/dist/ir/validate.js +196 -76
  1278. package/dist/ir/validate.js.map +1 -1
  1279. package/dist/ir/validate.test.js +41 -11
  1280. package/dist/ir/validate.test.js.map +1 -1
  1281. package/dist/library/fence-eval.test.js +1 -1
  1282. package/dist/library/int-infer.test.js +4 -4
  1283. package/dist/library/ir-policy.js +14 -0
  1284. package/dist/library/ir-policy.js.map +1 -1
  1285. package/dist/library/library-cache.d.ts +1 -0
  1286. package/dist/library/library-cache.js.map +1 -1
  1287. package/dist/library/library-cache.test.js +5 -5
  1288. package/dist/library/library-profile.d.ts +4 -4
  1289. package/dist/library/library-profile.js +35 -7
  1290. package/dist/library/library-profile.js.map +1 -1
  1291. package/dist/library/prepare.js +13 -1
  1292. package/dist/library/prepare.js.map +1 -1
  1293. package/dist/native/cli.js +22 -0
  1294. package/dist/native/cli.js.map +1 -1
  1295. package/dist/native/compiler.js +35 -6
  1296. package/dist/native/compiler.js.map +1 -1
  1297. package/dist/native/compiler.test.js +2 -2
  1298. package/dist/native/executable-cache.js +3 -0
  1299. package/dist/native/executable-cache.js.map +1 -1
  1300. package/dist/native/prepare.js +10 -0
  1301. package/dist/native/prepare.js.map +1 -1
  1302. package/dist/native/sanitizer.test.js +19 -0
  1303. package/dist/native/sanitizer.test.js.map +1 -1
  1304. package/dist/native/toolchain.d.ts +2 -0
  1305. package/dist/native/toolchain.js +10 -1
  1306. package/dist/native/toolchain.js.map +1 -1
  1307. package/dist/native/toolchain.test.js +39 -1
  1308. package/dist/native/toolchain.test.js.map +1 -1
  1309. package/dist/startup-cache.d.ts +1 -0
  1310. package/dist/startup-cache.js +1 -0
  1311. package/dist/startup-cache.js.map +1 -1
  1312. package/dist/wasm/base64.d.ts +5 -0
  1313. package/dist/wasm/base64.js +62 -0
  1314. package/dist/wasm/base64.js.map +1 -0
  1315. package/dist/wasm/binary.d.ts +36 -0
  1316. package/dist/wasm/binary.js +1976 -0
  1317. package/dist/wasm/binary.js.map +1 -0
  1318. package/dist/wasm/binary.test.d.ts +1 -0
  1319. package/dist/wasm/binary.test.js +190 -0
  1320. package/dist/wasm/binary.test.js.map +1 -0
  1321. package/dist/wasm/discover.d.ts +38 -0
  1322. package/dist/wasm/discover.js +377 -0
  1323. package/dist/wasm/discover.js.map +1 -0
  1324. package/dist/wasm/discover.test.d.ts +1 -0
  1325. package/dist/wasm/discover.test.js +24 -0
  1326. package/dist/wasm/discover.test.js.map +1 -0
  1327. package/dist/wasm/module.d.ts +151 -0
  1328. package/dist/wasm/module.js +575 -0
  1329. package/dist/wasm/module.js.map +1 -0
  1330. package/dist/wasm/translate.d.ts +48 -0
  1331. package/dist/wasm/translate.js +2129 -0
  1332. package/dist/wasm/translate.js.map +1 -0
  1333. package/dist/wasm/translate.test.d.ts +1 -0
  1334. package/dist/wasm/translate.test.js +207 -0
  1335. package/dist/wasm/translate.test.js.map +1 -0
  1336. package/package.json +22 -20
  1337. package/shims/fs-extra/core/api.ts +1192 -0
  1338. package/shims/fs-extra/index.ts +9 -0
  1339. package/shims/undici/core/agent.ts +163 -0
  1340. package/shims/undici/core/api.ts +93 -0
  1341. package/shims/undici/core/client.ts +1304 -0
  1342. package/shims/undici/core/connector.ts +157 -0
  1343. package/shims/undici/core/diagnostics-types.ts +68 -0
  1344. package/shims/undici/core/diagnostics.ts +16 -0
  1345. package/shims/undici/core/dispatcher.ts +574 -0
  1346. package/shims/undici/core/errors-v5.ts +22 -0
  1347. package/shims/undici/core/errors-v7.ts +25 -0
  1348. package/shims/undici/core/errors.ts +255 -0
  1349. package/shims/undici/core/fetch.ts +635 -0
  1350. package/shims/undici/core/pool.ts +280 -0
  1351. package/shims/undici/core/readable.ts +268 -0
  1352. package/shims/undici/core/request.ts +313 -0
  1353. package/shims/undici/core/timers.ts +80 -0
  1354. package/shims/undici/core/types.ts +167 -0
  1355. package/shims/undici/core/util.ts +67 -0
  1356. package/shims/undici/v5.ts +119 -0
  1357. package/shims/undici/v7.ts +119 -0
  1358. package/surface-manifest.json +304 -22
@@ -8,52 +8,89 @@ import { InternalCompilerError } from "../../errors.js";
8
8
  * seeds), npm/JSON import collection, per-file %init functions, %main, and
9
9
  * the module artifacts (globals, embedded npm tables) the IR module carries. */
10
10
  import * as ts from "../ts7/adapter.js";
11
+ import { collectRebindableFunctions, isRebindableFunction } from "./rebindable-functions.js";
11
12
  import { bindingSource } from "../binding-source.js";
12
13
  import { dirname as dirnamePath, resolve as resolvePath } from "node:path";
13
14
  import { packageNameOfPath, probeNodeImportRefusal } from "../npm.js";
14
15
  import { isNpmStaticPackage } from "../npm-static.js";
15
16
  import { isJsSourceFileName } from "../tsc-codes.js";
16
17
  import { isRelativeSpecifier } from "../workspace-registry.js";
17
- import { canonicalBuiltinModule, cjsExportAssignmentOf, cjsExportDiscardReason, entryPackageFilePredicate, isCjsJsFile, isJsSourceFile, isRequireStatement, locOf, makeCycleAdmission, orderedImportsOf, resolveImport, resolveNpmImport, } from "../program.js";
18
+ import { canonicalBuiltinModule, cjsExportAssignmentOf, cjsExportChainOf, cjsVoidInitPreambleReals, cjsExportDiscardReason, cjsExportTargetLiteral, entryPackageFilePredicate, isCjsJsFile, isJsSourceFile, isRequireStatement, locOf, makeCycleAdmission, orderedImportsOf, requireSpecOf, resolveImport, resolveNpmImport, } from "../program.js";
18
19
  import { markCycleEarlyBindings, withClassInitFlag, withCycleInitFlags, } from "./cycle-initialization.js";
20
+ import { markRequireEarlyBindings } from "./require-initialization.js";
21
+ import { cjsTableMethodEntry, inlineProgramRequireOf, nestedCjsExportAssignmentsOf, requireNestedPatternsOf, } from "./cjs-inline-require.js";
22
+ import { isDeadTscHelperDecl, tscInteropBindingOfDecl } from "./cjs-tsc-interop.js";
23
+ import { collectJsonRequires, isJsonRequireDecl } from "./json-require.js";
19
24
  import { invalidJsonModuleDiag, unsupportedPackageImportDiag, } from "../../diagnostics/diagnostic.js";
20
25
  import { BOOL, CAUGHT, DYN, F64, RUNTIME_ERROR_CLASSES, STRING, VOID, arrayOf, canBoxFuncIntoDyn, canConvertToDyn, isUnitType, } from "../../ir/ir.js";
21
26
  import { ENTRY_NAME, PoisonError, boundIdentifiersOf, dynFallbackType, newFnCtx, staticImportNamespaceType, } from "./lowerer.js";
22
27
  import { isNativeFfiRequire, builtinMemberRequireDecl, builtinNamespaceDestructureModuleOf, createRequireBindingDecl, createRequireNamespaceDecl, createRequireProgramModuleDecl, } from "./builtins/module-bindings.js";
23
28
  import { isPromisifyCall, registerBuiltinCallableAlias } from "./builtins/callable-aliases.js";
29
+ import { registerBuiltinClassAlias } from "./builtins/class-values.js";
24
30
  import { stripTypeCasts } from "./builtins/arguments.js";
31
+ import { isWebCryptoMemberType } from "./builtins/webcrypto.js";
25
32
  import { bindingContextualGenericFnNodeOf, bindingGenericFnAliasInfoOf, bindingGenericFnInfoOf, bindingGenericFnNodeOf, implicitLocalFnInfoOf, implicitLocalFnNodeOf, } from "./generic-functions.js";
26
33
  import { bindingNeverReassigned, deadUnmappableBinding, nullishGenericBindingUnitOf, } from "./binding-analysis.js";
27
34
  import { funcTypeFromParamShapes, registerOverloadedCallableAlias } from "./call-signatures.js";
28
- import { jsBindingHasOpenWrites, hasJsTypeAnnotation, isVarDeclared, numericIteratorSourceOf, provenanceElidedConstDecl, } from "./lower-stmts.js";
35
+ import { jsBindingHasOpenWrites, hasJsTypeAnnotation, isVarDeclared, numericIteratorSourceOf, provenanceElidedConstDecl, stdlibBufferVarAlias, } from "./lower-stmts.js";
29
36
  import { objectFactoryGlobalType } from "./object-factory-new.js";
30
37
  import { streamClassAliasDecl } from "./lower-stream.js";
31
38
  import { isAssertClassNew } from "./assert-instances.js";
32
39
  import { stdlibGlobalAliasDecl, stdlibGlobalAliasNameOf, stdlibGlobalNameOf } from "./surfaces.js";
33
40
  import { isNativeBuiltinValueInitializer } from "./lower-builtin-values.js";
41
+ import { isPromisePrototypeRead } from "./expressions/property-access.js";
34
42
  import { collectNamespaceStmt, nsMemberIdentOf, nsPathPrefix, trapDeclRootOf, } from "./lower-namespaces.js";
35
43
  import { collectExpandoMembers } from "./lower-expando.js";
36
44
  import { recordTextCodecClass } from "../../ir/ir.js";
37
45
  import { isUnitOnlyTsType, unitOnlyUnion } from "../type-mapper.js";
38
- import { collectInheritedJsFieldWrites, collectVirtualJsMethods, decoratorNodesOf, genericIfaceBindingKeepsClass, guaranteedDecorationThrow, storedClassValueType, } from "./lower-classes.js";
46
+ import { builtinRequireBaseOf, collectInheritedJsFieldWrites, collectVirtualJsMethods, decoratorNodesOf, genericIfaceBindingKeepsClass, guaranteedDecorationThrow, storedClassValueType, } from "./lower-classes.js";
39
47
  import { isMixinFnBinding, mixinResultBindingClassOf } from "./lower-mixins.js";
40
48
  import { cjsModuleRef, cjsModuleRegistryPrelude } from "./lower-node-module.js";
41
49
  import { forkTargetPaths } from "../fork-target.js";
42
50
  import { workerTargetPaths } from "../worker-target.js";
43
51
  import { isNativeProxyInitializer } from "./expressions/native-proxy.js";
44
52
  import { handleEventReaderPrelude } from "./lower-event-target.js";
53
+ import { cjsAccessorSnapshotStores, jsHoldsDynObject } from "./lower-exprs.js";
54
+ import { keptIdentityAssertion } from "./assertion-identity.js";
55
+ /** An appended module's edges: its import and export declarations, then
56
+ * the require() edges preflight resolved — a CommonJS file's only edges
57
+ * (the compiled CommonJS package a workspace module loaded on demand
58
+ * imports, and the sibling packages and files IT requires). */
59
+ function appendedEdgesOf(program, graph) {
60
+ const cache = new Map();
61
+ return (sf) => {
62
+ let out = cache.get(sf);
63
+ if (out !== undefined)
64
+ return out;
65
+ out = orderedImportsOf(program, sf).flatMap(({ stmt, dep }) => dep !== null && dep !== sf
66
+ ? [{ dep, stmt: stmt }]
67
+ : []);
68
+ for (const e of graph?.edges?.get(sf) ?? [])
69
+ if (e.stmt === undefined && e.dep !== sf)
70
+ out.push(e);
71
+ cache.set(sf, out);
72
+ return out;
73
+ };
74
+ }
75
+ /** Lazy inline requires run after their module's top level: their modules
76
+ * join the order afterwards, as in preflight's walk. */
77
+ function visitLazyEdges(sf, edgesOf, state, visit) {
78
+ for (const e of edgesOf(sf))
79
+ if (e.lazy === true && state.get(e.dep) === undefined)
80
+ visit(e.dep);
81
+ }
45
82
  /** Program modules selected by statically resolved child_process.fork()
46
83
  * calls join the compiled graph without becoming startup dependencies of
47
84
  * the parent entry. Their guarded init functions are selected by %main only
48
85
  * in a re-executed fork child. `targets` is append-only so ids stay stable
49
86
  * across the dynamic-import/fork discovery fixpoint. */
50
- export function appendForkModules(program, order, targets, onCycle) {
51
- appendEntryModules(program, order, targets, forkTargetPaths(program, order), onCycle);
87
+ export function appendForkModules(program, order, targets, onCycle, graph) {
88
+ appendEntryModules(program, order, targets, forkTargetPaths(program, order), onCycle, graph);
52
89
  }
53
- export function appendWorkerModules(program, order, targets, onCycle) {
54
- appendEntryModules(program, order, targets, workerTargetPaths(program, order), onCycle);
90
+ export function appendWorkerModules(program, order, targets, onCycle, graph) {
91
+ appendEntryModules(program, order, targets, workerTargetPaths(program, order), onCycle, graph);
55
92
  }
56
- function appendEntryModules(program, order, targets, paths, onCycle) {
93
+ function appendEntryModules(program, order, targets, paths, onCycle, graph) {
57
94
  if (order.length === 0)
58
95
  return;
59
96
  const byPath = new Map(program.getImplementationSourceFiles().map((sf) => [resolvePath(sf.fileName), sf]));
@@ -62,10 +99,8 @@ function appendEntryModules(program, order, targets, paths, onCycle) {
62
99
  state.set(sf, "done");
63
100
  const added = [];
64
101
  const stack = [];
65
- const staticEdgesOf = (sf) => orderedImportsOf(program, sf).flatMap(({ stmt, dep }) => dep !== null && dep !== sf
66
- ? [{ dep, stmt: stmt }]
67
- : []);
68
- const cycleAdmissionReason = makeCycleAdmission(program, staticEdgesOf);
102
+ const staticEdgesOf = appendedEdgesOf(program, graph);
103
+ const cycleAdmissionReason = makeCycleAdmission(program, (sf) => staticEdgesOf(sf).filter((e) => e.call === undefined));
69
104
  const visit = (sf) => {
70
105
  const prior = state.get(sf);
71
106
  if (prior === "done")
@@ -73,10 +108,16 @@ function appendEntryModules(program, order, targets, paths, onCycle) {
73
108
  state.set(sf, "visiting");
74
109
  stack.push(sf.fileName);
75
110
  for (const edge of staticEdgesOf(sf)) {
111
+ if (edge.lazy === true)
112
+ continue; // visited after this module completes
76
113
  const edgeState = state.get(edge.dep);
77
114
  if (edgeState === "done")
78
115
  continue;
79
116
  if (edgeState === "visiting") {
117
+ if (edge.call !== undefined) {
118
+ graph?.inlineCycleCalls?.add(edge.call);
119
+ continue;
120
+ }
80
121
  const reason = cycleAdmissionReason(sf, edge);
81
122
  if (reason !== null) {
82
123
  const cycleStart = stack.indexOf(edge.dep.fileName);
@@ -89,6 +130,7 @@ function appendEntryModules(program, order, targets, paths, onCycle) {
89
130
  stack.pop();
90
131
  state.set(sf, "done");
91
132
  added.push(sf);
133
+ visitLazyEdges(sf, staticEdgesOf, state, visit);
92
134
  };
93
135
  const knownTargets = new Set(targets);
94
136
  for (const path of paths) {
@@ -113,8 +155,13 @@ export function splitFiles(lowerer) {
113
155
  const files = lowerer.moduleOrder.length > 0 ? lowerer.moduleOrder : [lowerer.entry];
114
156
  return files.map((sf) => {
115
157
  const fp = { sf, fnDecls: [], classDecls: [], topStmts: [] };
116
- for (const stmt of sf.statements) {
117
- if (ts.isFunctionDeclaration(stmt))
158
+ const rebindable = collectRebindableFunctions(lowerer, sf);
159
+ for (const stmt of sf.statements.nodes) {
160
+ // A reassigned JavaScript declaration lives in a module global that
161
+ // the init body assigns first (rebindable-functions.ts).
162
+ if (ts.isFunctionDeclaration(stmt) && rebindable.has(stmt))
163
+ fp.topStmts.push(stmt);
164
+ else if (ts.isFunctionDeclaration(stmt))
118
165
  fp.fnDecls.push(stmt);
119
166
  else if (ts.isClassDeclaration(stmt))
120
167
  fp.classDecls.push(stmt);
@@ -162,9 +209,9 @@ function dynamicProgramImportsOf(program, sf) {
162
209
  ts.walkPreorder(sf, (node) => {
163
210
  if (ts.isCallExpression(node) &&
164
211
  node.expression.kind === ts.SyntaxKind.ImportKeyword &&
165
- node.arguments[0] !== undefined &&
166
- ts.isStringLiteralLike(node.arguments[0])) {
167
- const dep = dynamicImportProgramTargetOf(program, sf, node.arguments[0].text);
212
+ node.arguments.nodes[0] !== undefined &&
213
+ ts.isStringLiteralLike(node.arguments.nodes[0])) {
214
+ const dep = dynamicImportProgramTargetOf(program, sf, node.arguments.nodes[0].text);
168
215
  if (dep && !seen.has(dep)) {
169
216
  seen.add(dep);
170
217
  out.push(dep);
@@ -173,7 +220,7 @@ function dynamicProgramImportsOf(program, sf) {
173
220
  });
174
221
  return out;
175
222
  }
176
- export function appendDynamicImportModules(program, order, onCycle) {
223
+ export function appendDynamicImportModules(program, order, onCycle, graph) {
177
224
  if (order.length === 0)
178
225
  return; // no preflight order — sites keep their fences
179
226
  const state = new Map();
@@ -181,20 +228,24 @@ export function appendDynamicImportModules(program, order, onCycle) {
181
228
  state.set(sf, "done");
182
229
  const added = [];
183
230
  const stack = [];
184
- const staticEdgesOf = (sf) => orderedImportsOf(program, sf).flatMap(({ stmt, dep }) => dep !== null && dep !== sf
185
- ? [{ dep, stmt: stmt }]
186
- : []);
187
- const cycleAdmissionReason = makeCycleAdmission(program, staticEdgesOf);
231
+ const staticEdgesOf = appendedEdgesOf(program, graph);
232
+ const cycleAdmissionReason = makeCycleAdmission(program, (sf) => staticEdgesOf(sf).filter((e) => e.call === undefined));
188
233
  const visit = (sf) => {
189
234
  if (state.get(sf) !== undefined)
190
235
  return;
191
236
  state.set(sf, "visiting");
192
237
  stack.push(sf.fileName);
193
238
  for (const e of staticEdgesOf(sf)) {
239
+ if (e.lazy === true)
240
+ continue; // visited after this module completes
194
241
  const s = state.get(e.dep);
195
242
  if (s === "done")
196
243
  continue;
197
244
  if (s === "visiting") {
245
+ if (e.call !== undefined) {
246
+ graph?.inlineCycleCalls?.add(e.call);
247
+ continue;
248
+ }
198
249
  // A back edge: Node answers it from the cache. Same admission
199
250
  // question as preflight's static walk, same fence when refused.
200
251
  const reason = cycleAdmissionReason(sf, e);
@@ -209,6 +260,7 @@ export function appendDynamicImportModules(program, order, onCycle) {
209
260
  stack.pop();
210
261
  state.set(sf, "done");
211
262
  added.push(sf);
263
+ visitLazyEdges(sf, staticEdgesOf, state, visit);
212
264
  };
213
265
  const scanned = new Set();
214
266
  for (;;) {
@@ -233,8 +285,8 @@ export function collectProgram(lowerer, parts) {
233
285
  const computed = new Set();
234
286
  for (const fp of parts)
235
287
  for (const decl of fp.classDecls) {
236
- const heritage = decl.heritageClauses?.find((clause) => clause.token === ts.SyntaxKind.ExtendsKeyword)?.types[0]?.expression;
237
- if (heritage && ts.isCallExpression(heritage))
288
+ const heritage = decl.heritageClauses?.nodes.find((clause) => clause.token === ts.SyntaxKind.ExtendsKeyword)?.types?.nodes[0]?.expression;
289
+ if (heritage && ts.isCallExpression(heritage) && !builtinRequireBaseOf(lowerer, heritage))
238
290
  computed.add(decl);
239
291
  }
240
292
  // Descendants need the computed ancestor's completed layout before
@@ -249,7 +301,7 @@ export function collectProgram(lowerer, parts) {
249
301
  for (const decl of fp.classDecls) {
250
302
  if (computed.has(decl))
251
303
  continue;
252
- const heritage = decl.heritageClauses?.find((clause) => clause.token === ts.SyntaxKind.ExtendsKeyword)?.types[0]?.expression;
304
+ const heritage = decl.heritageClauses?.nodes.find((clause) => clause.token === ts.SyntaxKind.ExtendsKeyword)?.types?.nodes[0]?.expression;
253
305
  const base = heritage && ts.isIdentifier(heritage) ? lowerer.resolveValueSymbol(heritage) : undefined;
254
306
  if (!base || !computedSymbols.has(base))
255
307
  continue;
@@ -286,6 +338,7 @@ export function collectProgram(lowerer, parts) {
286
338
  lowerer.collectGlobals(fp.sf, fp.topStmts);
287
339
  lowerer.collectNpmImports(parts);
288
340
  lowerer.collectJsonImports(parts);
341
+ collectJsonRequires(lowerer, parts);
289
342
  }
290
343
  finally {
291
344
  lowerer.diagSink = null;
@@ -296,6 +349,7 @@ export function collectProgram(lowerer, parts) {
296
349
  lowerer.collectGlobals(fp.sf, fp.topStmts);
297
350
  lowerer.collectNpmImports(parts);
298
351
  lowerer.collectJsonImports(parts);
352
+ collectJsonRequires(lowerer, parts);
299
353
  }
300
354
  for (const decl of computed) {
301
355
  const symbol = declSymbolOf(lowerer, decl);
@@ -304,7 +358,7 @@ export function collectProgram(lowerer, parts) {
304
358
  const previousSink = lowerer.diagSink;
305
359
  const deferred = [];
306
360
  lowerer.diagSink = deferred;
307
- const expression = decl.heritageClauses.find((clause) => clause.token === ts.SyntaxKind.ExtendsKeyword).types[0].expression;
361
+ const expression = decl.heritageClauses.nodes.find((clause) => clause.token === ts.SyntaxKind.ExtendsKeyword).types.nodes[0].expression;
308
362
  const context = newFnCtx(false, null, null, DYN);
309
363
  lowerer.fnStack.push(context);
310
364
  try {
@@ -376,11 +430,12 @@ export function collectProgram(lowerer, parts) {
376
430
  lowerer.collecting = wasCollecting;
377
431
  }
378
432
  markCycleEarlyBindings(lowerer);
433
+ markRequireEarlyBindings(lowerer);
379
434
  }
380
435
  export function collectNpmImports(lowerer, parts) {
381
436
  const entryPackageFile = entryPackageFilePredicate(lowerer.entry.fileName);
382
437
  for (const fp of parts) {
383
- for (const stmt of fp.sf.statements) {
438
+ for (const stmt of fp.sf.statements.nodes) {
384
439
  // NAMED re-exports from npm packages (`export { isUrl } from
385
440
  // "url-or-path"`): use the same package bindings as direct imports.
386
441
  const reexport = ts.isExportDeclaration(stmt) &&
@@ -389,7 +444,7 @@ export function collectNpmImports(lowerer, parts) {
389
444
  ts.isStringLiteral(stmt.moduleSpecifier) &&
390
445
  stmt.exportClause !== undefined &&
391
446
  ts.isNamedExports(stmt.exportClause) &&
392
- stmt.exportClause.elements.some((e) => !e.isTypeOnly) &&
447
+ stmt.exportClause.elements.nodes.some((e) => !e.isTypeOnly) &&
393
448
  !stmt.moduleSpecifier.text.startsWith("#")
394
449
  ? stmt.exportClause
395
450
  : null;
@@ -407,7 +462,7 @@ export function collectNpmImports(lowerer, parts) {
407
462
  if (clause?.namedBindings &&
408
463
  ts.isNamedImports(clause.namedBindings) &&
409
464
  !clause.name &&
410
- clause.namedBindings.elements.every((e) => e.isTypeOnly)) {
465
+ clause.namedBindings.elements.nodes.every((e) => e.isTypeOnly)) {
411
466
  continue;
412
467
  }
413
468
  const spec = specNode.text;
@@ -492,10 +547,10 @@ function collectDynamicImports(lowerer, sf) {
492
547
  ts.walkPreorder(sf, (node) => {
493
548
  if (ts.isCallExpression(node) &&
494
549
  node.expression.kind === ts.SyntaxKind.ImportKeyword &&
495
- node.arguments.length >= 1 &&
496
- node.arguments[0] !== undefined &&
497
- ts.isStringLiteralLike(node.arguments[0])) {
498
- const spec = node.arguments[0].text;
550
+ node.arguments.nodes.length >= 1 &&
551
+ node.arguments.nodes[0] !== undefined &&
552
+ ts.isStringLiteralLike(node.arguments.nodes[0])) {
553
+ const spec = node.arguments.nodes[0].text;
499
554
  if (lowerer.externalTypes.has(spec)) {
500
555
  return undefined;
501
556
  }
@@ -506,11 +561,9 @@ function collectDynamicImports(lowerer, sf) {
506
561
  // module has no runtime namespace object — the per-site fence
507
562
  // says so. Only non-declaration source files count; a sibling
508
563
  // .d.mts typing shipped JS is the EMBED case, not this one.
509
- const modSym = lowerer.checker.getSymbolAtLocation(node.arguments[0]);
564
+ const modSym = lowerer.checker.getSymbolAtLocation(node.arguments.nodes[0]);
510
565
  const ownModule = modSym !== undefined &&
511
- lowerer.checker
512
- .declarationsOf(modSym)
513
- .some((d) => ts.isSourceFile(d) && !d.isDeclarationFile);
566
+ modSym.declarations.some((d) => ts.isSourceFile(d) && !d.isDeclarationFile);
514
567
  const builtin = canonicalBuiltinModule(spec);
515
568
  const res = ownModule
516
569
  ? { kind: "program-module" }
@@ -540,7 +593,7 @@ function collectDynamicImports(lowerer, sf) {
540
593
  * and kept .json files out of the module order. */
541
594
  export function collectJsonImports(lowerer, parts) {
542
595
  for (const fp of parts) {
543
- for (const stmt of fp.sf.statements) {
596
+ for (const stmt of fp.sf.statements.nodes) {
544
597
  if (!ts.isImportDeclaration(stmt) || !ts.isStringLiteral(stmt.moduleSpecifier))
545
598
  continue;
546
599
  const clause = stmt.importClause;
@@ -550,7 +603,9 @@ export function collectJsonImports(lowerer, parts) {
550
603
  if (!nameSym || !(nameSym.flags & ts.SymbolFlags.Alias))
551
604
  continue;
552
605
  const target = lowerer.checker.getAliasedSymbol(nameSym);
553
- const jsonSf = lowerer.checker.declarationsOf(target)[0]?.getSourceFile();
606
+ const jsonSf = target.declarations.length === 0
607
+ ? undefined
608
+ : ts.getSourceFileOfNode(target.declarations[0]);
554
609
  if (!jsonSf || !jsonSf.fileName.endsWith(".json"))
555
610
  continue;
556
611
  try {
@@ -728,6 +783,14 @@ export function moduleArtifacts(lowerer, functions) {
728
783
  valueInstanceOfRoots.add(root.def.name);
729
784
  }
730
785
  break;
786
+ case "libCall":
787
+ // The general stream representation's child stdio read bridges
788
+ // through the runtime install that boxes both stream classes.
789
+ if (node.fn === "child.stdioStream") {
790
+ visitClass("%Readable");
791
+ visitClass("%Writable");
792
+ }
793
+ break;
731
794
  case "dynFrom":
732
795
  if (boxedChild(node.value.type)) {
733
796
  // A generic child can expose native stdio without importing stream.
@@ -919,7 +982,7 @@ function checkedGlobalReference(lowerer, expression) {
919
982
  !ts.isIdentifier(expression.expression))
920
983
  return false;
921
984
  const root = lowerer.checker.getSymbolAtLocation(expression.expression);
922
- const namespace = root && lowerer.checker.declarationsOf(root).some(ts.isNamespaceImport);
985
+ const namespace = root && root.declarations.some(ts.isNamespaceImport);
923
986
  return ((namespace || lowerer.cjsLocalModuleBindingOf(expression.expression)) &&
924
987
  lowerer.globalOf(expression.name)?.type.kind === "dyn");
925
988
  }
@@ -937,8 +1000,8 @@ function jsDynHoldableInitializer(lowerer, init) {
937
1000
  ts.isPropertyAccessExpression(e.expression) &&
938
1001
  ["freeze", "seal", "preventExtensions"].includes(e.expression.name.text) &&
939
1002
  lowerer.stdlibGlobalMember(e.expression, "Object") !== null &&
940
- e.arguments[0] &&
941
- ts.isArrayLiteralExpression(e.arguments[0]))
1003
+ e.arguments.nodes[0] &&
1004
+ ts.isArrayLiteralExpression(e.arguments.nodes[0]))
942
1005
  return true;
943
1006
  // The built-in Array constructor can create an evolving array whose
944
1007
  // inferred element type has no native mapping. Its checked reference
@@ -1001,8 +1064,8 @@ function jsDynHoldableInitializer(lowerer, init) {
1001
1064
  return true;
1002
1065
  }
1003
1066
  if ((ts.isFunctionExpression(e) || ts.isArrowFunction(e)) &&
1004
- !e.typeParameters?.length &&
1005
- isJsSourceFile(e.getSourceFile()))
1067
+ !e.typeParameters?.nodes.length &&
1068
+ isJsSourceFile(ts.getSourceFileOfNode(e)))
1006
1069
  return true;
1007
1070
  if (ts.isIdentifier(e) || ts.isArrowFunction(e) || ts.isFunctionExpression(e)) {
1008
1071
  if (ts.isIdentifier(e)) {
@@ -1037,6 +1100,30 @@ function jsDynHoldableInitializer(lowerer, init) {
1037
1100
  }
1038
1101
  return false;
1039
1102
  }
1103
+ /** A JavaScript default-export object literal holding a class the program
1104
+ * could not lower (`export default { parse, TomlDate }` where TomlDate
1105
+ * extends an unsupported base): the literal narrows that member away, its
1106
+ * diagnostics deferred to the reads that reach it, so the binding's type
1107
+ * drops it too. Otherwise the module's own initialization would fail the
1108
+ * width check against members no build can supply. */
1109
+ function withoutRejectedClassMembers(lowerer, expression, type) {
1110
+ let literal = expression;
1111
+ while (ts.isParenthesizedExpression(literal))
1112
+ literal = literal.expression;
1113
+ if (!ts.isObjectLiteralExpression(literal) || type.kind !== "record")
1114
+ return type;
1115
+ const shape = lowerer.shapes.get(type.shapeId);
1116
+ if (!shape || shape.tuple)
1117
+ return type;
1118
+ const rejected = (t) => t.kind === "classval" &&
1119
+ !lowerer.classes.has(t.className) &&
1120
+ lowerer.deferredClassByName.has(t.className);
1121
+ if (!shape.fields.some((f) => rejected(f.type)))
1122
+ return type;
1123
+ const kept = shape.fields.filter((f) => !rejected(f.type));
1124
+ const shapeId = lowerer.shapes.intern(kept.map((f) => ({ name: f.name, type: f.type })), false, shape.indexValue);
1125
+ return { kind: "record", shapeId };
1126
+ }
1040
1127
  export function collectGlobals(lowerer, sf, topStmts) {
1041
1128
  // Segment-tagged so mangled names can't collide across files (user
1042
1129
  // identifiers cannot contain '.'): entry globals "e.<name>", others
@@ -1048,6 +1135,21 @@ export function collectGlobals(lowerer, sf, topStmts) {
1048
1135
  // collected earlier in this pass must resolve them (lower-expando.ts).
1049
1136
  collectExpandoMembers(lowerer, sf);
1050
1137
  for (const stmt of topStmts) {
1138
+ if (ts.isFunctionDeclaration(stmt) && stmt.name && isRebindableFunction(lowerer, stmt)) {
1139
+ const symbol = lowerer.checker.getSymbolAtLocation(stmt.name);
1140
+ if (symbol && !lowerer.globalsBySymbol.has(symbol)) {
1141
+ const g = {
1142
+ id: `%g.${tag}${stmt.name.text}`,
1143
+ name: stmt.name.text,
1144
+ type: DYN,
1145
+ mutable: true,
1146
+ };
1147
+ lowerer.globalsBySymbol.set(symbol, g);
1148
+ lowerer.globalsByDeclNode.set(stmt, g);
1149
+ lowerer.globalsList.push(g);
1150
+ }
1151
+ continue;
1152
+ }
1051
1153
  // `export default <expr>`: the module's `default` binding is a const
1052
1154
  // module global (registered under the checker's default-export
1053
1155
  // symbol — the symbol a default IMPORT's alias chain terminates at,
@@ -1078,10 +1180,10 @@ export function collectGlobals(lowerer, sf, topStmts) {
1078
1180
  continue;
1079
1181
  if (symbol.flags & ts.SymbolFlags.Alias) {
1080
1182
  const target = lowerer.checker.getAliasedSymbol(symbol);
1081
- const vd = lowerer.checker.valueDeclarationOf(target);
1183
+ const vd = target.valueDeclaration;
1082
1184
  const mutableVar = vd !== undefined &&
1083
1185
  ts.isVariableDeclaration(vd) &&
1084
- !vd.getSourceFile().isDeclarationFile &&
1186
+ !ts.getSourceFileOfNode(vd).isDeclarationFile &&
1085
1187
  (ts.getCombinedNodeFlags(vd) & ts.NodeFlags.Const) === 0;
1086
1188
  // Immutable targets: alias plumbing — importers resolve to the
1087
1189
  // target's storage (the alias-resolved read IS the snapshot when
@@ -1104,7 +1206,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
1104
1206
  !isJsSourceFile(sf) &&
1105
1207
  inner.typeParameters === undefined &&
1106
1208
  (decoratorNodesOf(inner).length > 0 ||
1107
- inner.members.some((m) => decoratorNodesOf(m).length > 0)) &&
1209
+ inner.members.nodes.some((m) => decoratorNodesOf(m).length > 0)) &&
1108
1210
  guaranteedDecorationThrow(lowerer, inner) !== null) {
1109
1211
  continue;
1110
1212
  }
@@ -1136,6 +1238,8 @@ export function collectGlobals(lowerer, sf, topStmts) {
1136
1238
  }
1137
1239
  if (type.kind === "void")
1138
1240
  lowerer.badType(stmt.expression, tsType);
1241
+ if (isJsSourceFile(sf))
1242
+ type = withoutRejectedClassMembers(lowerer, stmt.expression, type);
1139
1243
  const g = { id: `%g.${tag}default`, name: "default", type, mutable: false };
1140
1244
  lowerer.globalsBySymbol.set(symbol, g);
1141
1245
  lowerer.globalsList.push(g);
@@ -1175,9 +1279,19 @@ export function collectGlobals(lowerer, sf, topStmts) {
1175
1279
  // common/tls's `exports.check = function (certs) {...}` —
1176
1280
  // keep func-ness with dyn pieces; everything else is dyn).
1177
1281
  const strict = lowerer.checker.getTypeOfSymbol(symbol);
1178
- const t = lowerer.mapTypeOf(strict) ?? dynFallbackType(lowerer, nameNode, strict);
1282
+ let t = lowerer.mapTypeOf(strict) ?? dynFallbackType(lowerer, nameNode, strict);
1179
1283
  if (!t || t.kind === "void")
1180
1284
  lowerer.badType(typeNode, strict);
1285
+ // An export typed as the empty object literal (tsc's enum output
1286
+ // `exports.E || (exports.E = {})` after its `exports.E = void 0`
1287
+ // preamble): TS's `{}` admits any later non-nullish value and the
1288
+ // export is undefined until then, so it rides checked-dynamic
1289
+ // storage like the same-shaped var binding (varBindingType).
1290
+ if (t.kind === "record" && isJsSourceFile(sf)) {
1291
+ const shape = lowerer.shapes.get(t.shapeId);
1292
+ if (shape && shape.fields.length === 0 && !shape.indexValue && !shape.tuple)
1293
+ t = DYN;
1294
+ }
1181
1295
  // An immutable export source shares its live storage and native
1182
1296
  // callable ABI. Mutable sources need a separate snapshot slot:
1183
1297
  // later writes to the binding do not change the exported value.
@@ -1191,7 +1305,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
1191
1305
  if (vG) {
1192
1306
  if (!vG.mutable) {
1193
1307
  lowerer.globalsBySymbol.set(symbol, vG);
1194
- for (const d of lowerer.checker.declarationsOf(symbol))
1308
+ for (const d of symbol.declarations)
1195
1309
  lowerer.globalsByDeclNode.set(d, vG);
1196
1310
  return;
1197
1311
  }
@@ -1202,7 +1316,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
1202
1316
  mutable: false,
1203
1317
  };
1204
1318
  lowerer.globalsBySymbol.set(symbol, g);
1205
- for (const d of lowerer.checker.declarationsOf(symbol))
1319
+ for (const d of symbol.declarations)
1206
1320
  lowerer.globalsByDeclNode.set(d, g);
1207
1321
  lowerer.globalsList.push(g);
1208
1322
  return;
@@ -1213,7 +1327,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
1213
1327
  lowerer.globalsBySymbol.set(symbol, g);
1214
1328
  // Importer aliases resolve to a DISTINCT late-bound symbol with
1215
1329
  // the same declaration — key the node too (globalOf's fallback).
1216
- for (const d of lowerer.checker.declarationsOf(symbol))
1330
+ for (const d of symbol.declarations)
1217
1331
  lowerer.globalsByDeclNode.set(d, g);
1218
1332
  lowerer.globalsList.push(g);
1219
1333
  }
@@ -1225,6 +1339,11 @@ export function collectGlobals(lowerer, sf, topStmts) {
1225
1339
  deferJsCollectionDiags(lowerer, sf, diagsBefore);
1226
1340
  }
1227
1341
  };
1342
+ // Export members assigned in VALUE position at the module's top
1343
+ // level (`const src = exports.src = []`) are exports too.
1344
+ for (const nested of nestedCjsExportAssignmentsOf(stmt, cjs?.expr)) {
1345
+ registerExport(nested.name, nested.name.text, nested.value);
1346
+ }
1228
1347
  if (cjs?.kind === "member" && ts.isIdentifier(cjs.name)) {
1229
1348
  // `exports.C = C` naming a CLASS declaration: alias plumbing —
1230
1349
  // no storage (a class VALUE global would fence for
@@ -1233,6 +1352,20 @@ export function collectGlobals(lowerer, sf, topStmts) {
1233
1352
  // applies unchanged.
1234
1353
  if (lowerer.cjsMemberExportClassSymbol(cjs.expr) !== null)
1235
1354
  continue;
1355
+ // A chain `exports.a = exports.b = value`: every member is an
1356
+ // export holding the chain's one value.
1357
+ const chain = cjsExportChainOf(cjs.expr);
1358
+ if (chain !== null) {
1359
+ for (const nameNode of chain.names)
1360
+ registerExport(nameNode, nameNode.text, chain.value);
1361
+ continue;
1362
+ }
1363
+ // A dropped tsc void-init preamble whose real assignment is such a
1364
+ // class alias registers nothing either: storage here would never
1365
+ // be assigned, and importers would read it instead of the class.
1366
+ const real = cjsVoidInitPreambleReals(cjs)?.get(cjs.name.text);
1367
+ if (real && lowerer.cjsMemberExportClassSymbol(real.expr) !== null)
1368
+ continue;
1236
1369
  registerExport(cjs.name, cjs.name.text, cjs.value);
1237
1370
  continue;
1238
1371
  }
@@ -1265,7 +1398,19 @@ export function collectGlobals(lowerer, sf, topStmts) {
1265
1398
  // statement lowering evaluates the call exactly once at its
1266
1399
  // source position and assigns that slot. Unmappable calls retain
1267
1400
  // the existing statement-level fence.
1268
- const factoryValued = ts.isCallExpression(rhs);
1401
+ // Any other computed value (`os.homedir || function () {…}`,
1402
+ // `cond ? a : b`, `new Registry()`, `ns.member`) is the same single
1403
+ // snapshot: Node stores whatever the expression produced. A
1404
+ // require() of a program module is not: the exporter re-exports
1405
+ // that module's exports, which requirers resolve through the
1406
+ // checker's alias (the statement lowers to the dep's %init).
1407
+ const factoryValued = !ts.isIdentifier(rhs) &&
1408
+ !ts.isClassExpression(rhs) &&
1409
+ !ts.isObjectLiteralExpression(rhs) &&
1410
+ !(requireSpecOf(rhs) !== null &&
1411
+ inlineProgramRequireOf(lowerer, rhs) !== null &&
1412
+ !sf.statements.nodes.some((s) => cjsExportAssignmentOf(s)?.kind === "member")) &&
1413
+ cjsExportTargetLiteral(rhs, sf) === null;
1269
1414
  if (cjsScalarLiteral(rhs) || fnValued || factoryValued) {
1270
1415
  const diagsBefore = lowerer.diags.length;
1271
1416
  try {
@@ -1296,7 +1441,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
1296
1441
  continue;
1297
1442
  }
1298
1443
  if (cjs?.kind === "table" && cjs.obj) {
1299
- for (const prop of cjs.obj.properties) {
1444
+ for (const prop of cjs.obj.properties.nodes) {
1300
1445
  if (ts.isShorthandPropertyAssignment(prop))
1301
1446
  continue; // alias plumbing
1302
1447
  if (ts.isPropertyAssignment(prop) && ts.isIdentifier(prop.initializer))
@@ -1304,6 +1449,11 @@ export function collectGlobals(lowerer, sf, topStmts) {
1304
1449
  if (ts.isPropertyAssignment(prop) && ts.isIdentifier(prop.name)) {
1305
1450
  registerExport(prop.name, prop.name.text, prop.initializer);
1306
1451
  }
1452
+ // A METHOD entry (`module.exports = { f(x) { … } }`) is an
1453
+ // expression-valued export whose value is the method's function.
1454
+ const method = cjsTableMethodEntry(prop);
1455
+ if (method !== null)
1456
+ registerExport(method.name, method.name.text, method.name);
1307
1457
  // other property forms fence in the statement lowering
1308
1458
  }
1309
1459
  continue;
@@ -1328,10 +1478,10 @@ export function collectGlobals(lowerer, sf, topStmts) {
1328
1478
  lowerer.globalsBySymbol.has(aliasSym))
1329
1479
  continue;
1330
1480
  const target = lowerer.checker.getAliasedSymbol(aliasSym);
1331
- const vd = lowerer.checker.valueDeclarationOf(target);
1481
+ const vd = target.valueDeclaration;
1332
1482
  const mutableVar = vd !== undefined &&
1333
1483
  ts.isVariableDeclaration(vd) &&
1334
- !vd.getSourceFile().isDeclarationFile &&
1484
+ !ts.getSourceFileOfNode(vd).isDeclarationFile &&
1335
1485
  (ts.getCombinedNodeFlags(vd) & ts.NodeFlags.Const) === 0;
1336
1486
  if (!mutableVar)
1337
1487
  continue;
@@ -1344,7 +1494,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
1344
1494
  if (type.kind === "void")
1345
1495
  lowerer.badType(stmt.name, lowerer.typeOf(stmt.name));
1346
1496
  const g = {
1347
- id: `%g.${tag}${nsPathPrefix(stmt)}%alias.${stmt.name.text}%${stmt.getStart()}`,
1497
+ id: `%g.${tag}${nsPathPrefix(stmt)}%alias.${stmt.name.text}%${ts.tokenStartOfNode(stmt)}`,
1348
1498
  name: stmt.name.text,
1349
1499
  type,
1350
1500
  mutable: false,
@@ -1369,6 +1519,14 @@ export function collectGlobals(lowerer, sf, topStmts) {
1369
1519
  collectNestedVarGlobals(lowerer, sf, stmt, tag);
1370
1520
  continue;
1371
1521
  }
1522
+ // tsc's interop bindings and its then-dead helper declarations own no
1523
+ // storage either (cjs-tsc-interop.ts).
1524
+ if (isJsSourceFile(sf) &&
1525
+ (isDeadTscHelperDecl(lowerer, stmt) ||
1526
+ (stmt.declarationList.declarations.nodes.length === 1 &&
1527
+ tscInteropBindingOfDecl(lowerer, stmt.declarationList.declarations.nodes[0]) !== null))) {
1528
+ continue;
1529
+ }
1372
1530
  // CommonJS require declarations are alias plumbing (preflight owns
1373
1531
  // the module edges; resolveValueSymbol routes reads through to the
1374
1532
  // exporter's declarations): no storage, and the statement lowers to
@@ -1378,12 +1536,10 @@ export function collectGlobals(lowerer, sf, topStmts) {
1378
1536
  // binding lower via the process surface.
1379
1537
  if (isRequireStatement(stmt) &&
1380
1538
  !(ts.isVariableStatement(stmt) &&
1381
- stmt.declarationList.declarations.some((decl) => isNativeFfiRequire(lowerer, decl.initializer)))) {
1382
- if (ts.isVariableStatement(stmt) && (stmt.declarationList.flags & ts.NodeFlags.Const) !== 0) {
1383
- for (const decl of stmt.declarationList.declarations) {
1384
- stdlibGlobalAliasDecl(lowerer, decl.name, decl.initializer);
1385
- }
1386
- }
1539
+ stmt.declarationList.declarations.nodes.some((decl) => isNativeFfiRequire(lowerer, decl.initializer) || isJsonRequireDecl(lowerer, decl)))) {
1540
+ if (ts.isVariableStatement(stmt))
1541
+ for (const decl of stmt.declarationList.declarations.nodes)
1542
+ registerRequireDeclBindings(lowerer, sf, stmt.declarationList, decl, tag);
1387
1543
  continue;
1388
1544
  }
1389
1545
  // `declare const __VERSION__: string` — AMBIENT: no storage exists
@@ -1391,7 +1547,8 @@ export function collectGlobals(lowerer, sf, topStmts) {
1391
1547
  // exactly like running the source under Node). Reads lower to
1392
1548
  // Node's ReferenceError at the access (lower-exprs), and the
1393
1549
  // statement itself lowers to nothing.
1394
- if (ts.getCombinedModifierFlags(stmt.declarationList.declarations[0]) & ts.ModifierFlags.Ambient)
1550
+ if (ts.getCombinedModifierFlags(stmt.declarationList.declarations.nodes[0]) &
1551
+ ts.ModifierFlags.Ambient)
1395
1552
  continue;
1396
1553
  const list = stmt.declarationList;
1397
1554
  if ((list.flags & ts.NodeFlags.Using) !== 0)
@@ -1405,8 +1562,8 @@ export function collectGlobals(lowerer, sf, topStmts) {
1405
1562
  // (`%g.e.A%B.x`), so `namespace A { export const x }` and a
1406
1563
  // top-level `const x` never collide; non-exported members add the
1407
1564
  // declaring block's position (block-local bindings).
1408
- const nsPrefix = nsPathPrefix(stmt, list.declarations[0]);
1409
- for (const decl of list.declarations) {
1565
+ const nsPrefix = nsPathPrefix(stmt, list.declarations.nodes[0]);
1566
+ for (const decl of list.declarations.nodes) {
1410
1567
  // --provenance-sources: an elided pure-annotated dead const in a
1411
1568
  // fetched source module registers no global (the statement
1412
1569
  // lowering emits nothing by the same test — see
@@ -1415,6 +1572,16 @@ export function collectGlobals(lowerer, sf, topStmts) {
1415
1572
  // and put its fences on the build.
1416
1573
  if (provenanceElidedConstDecl(lowerer, decl))
1417
1574
  continue;
1575
+ // A require declarator beside other declarators (`var EventEmitter =
1576
+ // require("events"), R = class extends EventEmitter {}`): the
1577
+ // statement lowering treats it as the alias plumbing of a whole
1578
+ // require statement (lowerVarDeclarator), so it owns no storage
1579
+ // either. A global here would never be assigned, and a read through
1580
+ // it would see null.
1581
+ if (requireAliasDecl(lowerer, decl)) {
1582
+ registerRequireDeclBindings(lowerer, sf, list, decl, tag);
1583
+ continue;
1584
+ }
1418
1585
  // A stored built-in numeric value iterator has no first-class
1419
1586
  // global representation. Its same-%init for-of uses are backed by
1420
1587
  // hidden source/cursor/done locals registered when the declaration
@@ -1532,6 +1699,8 @@ export function collectGlobals(lowerer, sf, topStmts) {
1532
1699
  continue;
1533
1700
  if (isConst && registerBuiltinCallableAlias(lowerer, decl.name, decl.initializer))
1534
1701
  continue;
1702
+ if (registerBuiltinClassAlias(lowerer, decl.name, decl.initializer))
1703
+ continue;
1535
1704
  // `const f = (x) => ...` at file scope of an npm-static JS file
1536
1705
  // whose params are implicit-any: the implicit-monomorphization
1537
1706
  // twin of the generic binding above — no global exists; calls and
@@ -1644,6 +1813,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
1644
1813
  // stdlibGlobalAliasDecl; the statement lowering skips it by the
1645
1814
  // same test).
1646
1815
  const stableStdlibAlias = isConst ||
1816
+ stdlibBufferVarAlias(lowerer, decl) ||
1647
1817
  ((list.flags & ts.NodeFlags.Let) !== 0 &&
1648
1818
  ts.isIdentifier(decl.name) &&
1649
1819
  stdlibGlobalAliasNameOf(lowerer, decl.initializer) !== null &&
@@ -1667,7 +1837,8 @@ export function collectGlobals(lowerer, sf, topStmts) {
1667
1837
  decl.initializer &&
1668
1838
  !decl.type &&
1669
1839
  !hasJsTypeAnnotation(decl) &&
1670
- !lowerer.mapTypeOf(lowerer.typeOf(nameNode))) {
1840
+ (!lowerer.mapTypeOf(lowerer.typeOf(nameNode)) ||
1841
+ isWebCryptoMemberType(lowerer, lowerer.typeOf(nameNode)))) {
1671
1842
  const symbol = lowerer.checker.getSymbolAtLocation(nameNode);
1672
1843
  if (symbol && !lowerer.globalsBySymbol.has(symbol)) {
1673
1844
  const g = {
@@ -1688,18 +1859,48 @@ export function collectGlobals(lowerer, sf, topStmts) {
1688
1859
  // Builtin declarations do not always describe the concrete native
1689
1860
  // callable ABI. Preserve checked-native values in shared storage;
1690
1861
  // adapting the loader to (string) would replace its validation.
1862
+ // An inferred Promise.prototype binding holds an ordinary object
1863
+ // (isPromisePrototypeRead), in TypeScript as well.
1691
1864
  const initializer = decl.initializer ? stripTypeCasts(decl.initializer) : undefined;
1692
- if (isJsSourceFile(sf) &&
1693
- nameNode === decl.name &&
1694
- initializer &&
1695
- (isNativeBuiltinValueInitializer(lowerer, initializer) ||
1696
- (!decl.type &&
1697
- !hasJsTypeAnnotation(decl) &&
1698
- lowerer.mapTypeOf(lowerer.typeOf(nameNode))?.kind === "date") ||
1699
- (!decl.type &&
1700
- !hasJsTypeAnnotation(decl) &&
1701
- checkedGlobalReference(lowerer, initializer)) ||
1702
- stdlibGlobalNameOf(lowerer, initializer) === "globalThis")) {
1865
+ if ((nameNode === decl.name &&
1866
+ !decl.type &&
1867
+ isPromisePrototypeRead(lowerer, decl.initializer)) ||
1868
+ (isJsSourceFile(sf) &&
1869
+ nameNode === decl.name &&
1870
+ initializer &&
1871
+ (isNativeBuiltinValueInitializer(lowerer, initializer) ||
1872
+ (!decl.type &&
1873
+ !hasJsTypeAnnotation(decl) &&
1874
+ lowerer.mapTypeOf(lowerer.typeOf(nameNode))?.kind === "date") ||
1875
+ (!decl.type &&
1876
+ !hasJsTypeAnnotation(decl) &&
1877
+ checkedGlobalReference(lowerer, initializer)) ||
1878
+ stdlibGlobalNameOf(lowerer, initializer) === "globalThis"))) {
1879
+ const symbol = lowerer.checker.getSymbolAtLocation(nameNode);
1880
+ if (symbol && !lowerer.globalsBySymbol.has(symbol)) {
1881
+ const g = {
1882
+ id: `%g.${tag}${nsPrefix}${nameNode.text}`,
1883
+ name: nameNode.text,
1884
+ type: DYN,
1885
+ mutable: isLet,
1886
+ source: bindingSource(nameNode),
1887
+ ...(!isVarDeclared(decl) ? { tdz: true } : {}),
1888
+ };
1889
+ lowerer.globalsBySymbol.set(symbol, g);
1890
+ lowerer.globalsList.push(g);
1891
+ if (isVarDeclared(decl))
1892
+ noteVarGlobalEntryInit(lowerer, sf, g);
1893
+ }
1894
+ continue;
1895
+ }
1896
+ // A file-scope binding of an assertion of the global object
1897
+ // (`const state = globalThis as { [KEY]?: State }`): the binding
1898
+ // holds that object, so writes through it reach the object other
1899
+ // modules read (assertion-identity.ts).
1900
+ const asserted = decl.initializer
1901
+ ? keptIdentityAssertion(lowerer, decl.initializer)
1902
+ : undefined;
1903
+ if (nameNode === decl.name && !decl.type && asserted) {
1703
1904
  const symbol = lowerer.checker.getSymbolAtLocation(nameNode);
1704
1905
  if (symbol && !lowerer.globalsBySymbol.has(symbol)) {
1705
1906
  const g = {
@@ -1755,7 +1956,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
1755
1956
  nameNode === decl.name &&
1756
1957
  decl.initializer &&
1757
1958
  ts.isObjectLiteralExpression(decl.initializer) &&
1758
- decl.initializer.properties.some((p) => !ts.isSpreadAssignment(p) &&
1959
+ decl.initializer.properties.nodes.some((p) => !ts.isSpreadAssignment(p) &&
1759
1960
  (ts.isMethodDeclaration(p) ||
1760
1961
  ts.isAccessor(p) ||
1761
1962
  ts.isComputedPropertyName(p.name) ||
@@ -1798,7 +1999,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
1798
1999
  nameNode === decl.name &&
1799
2000
  decl.initializer !== undefined &&
1800
2001
  ts.isObjectLiteralExpression(decl.initializer) &&
1801
- decl.initializer.properties.every((p) => {
2002
+ decl.initializer.properties.nodes.every((p) => {
1802
2003
  if (ts.isSpreadAssignment(p)) {
1803
2004
  return (ts.isIdentifier(p.expression) &&
1804
2005
  lowerer.globalOf(p.expression)?.type.kind === "dyn");
@@ -1824,6 +2025,35 @@ export function collectGlobals(lowerer, sf, topStmts) {
1824
2025
  }
1825
2026
  continue;
1826
2027
  }
2028
+ // A JS file-scope ARRAY LITERAL holding an existing checked-dynamic
2029
+ // object (a file-scope object literal binding above, directly or
2030
+ // in a nested literal): the literal builds as a checked-dynamic
2031
+ // array (lowerArrayLiteral), and the binding holds it, so the
2032
+ // element keeps its identity.
2033
+ if (isJsSourceFile(sf) &&
2034
+ ts.isIdentifier(decl.name) &&
2035
+ nameNode === decl.name &&
2036
+ !decl.type &&
2037
+ !hasJsTypeAnnotation(decl) &&
2038
+ decl.initializer !== undefined &&
2039
+ ts.isArrayLiteralExpression(decl.initializer) &&
2040
+ jsHoldsDynObject(lowerer, decl.initializer)) {
2041
+ const symbol = lowerer.checker.getSymbolAtLocation(nameNode);
2042
+ if (symbol && !lowerer.globalsBySymbol.has(symbol)) {
2043
+ const g = {
2044
+ id: `%g.${tag}${nsPrefix}${nameNode.text}`,
2045
+ name: nameNode.text,
2046
+ type: DYN,
2047
+ mutable: isLet,
2048
+ source: bindingSource(nameNode),
2049
+ };
2050
+ lowerer.globalsBySymbol.set(symbol, g);
2051
+ lowerer.globalsList.push(g);
2052
+ if (isVarDeclared(decl))
2053
+ noteVarGlobalEntryInit(lowerer, sf, g);
2054
+ }
2055
+ continue;
2056
+ }
1827
2057
  // A JS file-scope ANY-RESIDUE binding whose VALUE provably
1828
2058
  // lives in the checked-dynamic tree: no initializer (`let catchWarning;` —
1829
2059
  // test/common's warning ledger), a unit initializer (`let
@@ -1880,7 +2110,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
1880
2110
  : null;
1881
2111
  const generic = member && lowerer.genericFnOf(member);
1882
2112
  const fallback = (ts.isArrowFunction(initializer) || ts.isFunctionExpression(initializer)) &&
1883
- !initializer.typeParameters?.length
2113
+ !initializer.typeParameters?.nodes.length
1884
2114
  ? lowerer.lambdaSignature(initializer).funcType
1885
2115
  : member && lowerer.globalOf(member)?.type.kind === "dyn"
1886
2116
  ? DYN
@@ -1942,12 +2172,12 @@ export function collectGlobals(lowerer, sf, topStmts) {
1942
2172
  ts.isCallExpression(decl.initializer)
1943
2173
  ? lowerer.checker.getResolvedSignature(decl.initializer)
1944
2174
  : undefined;
1945
- const callDeclaration = callSignature && lowerer.checker.signatureDeclaration(callSignature);
1946
- const callType = callDeclaration && isJsSourceFile(callDeclaration.getSourceFile())
2175
+ const callDeclaration = callSignature && callSignature.declaration;
2176
+ const callType = callDeclaration && isJsSourceFile(ts.getSourceFileOfNode(callDeclaration))
1947
2177
  ? lowerer.mapTypeOf(lowerer.typeOf(nameNode))
1948
2178
  : null;
1949
2179
  const inferredJsCall = callDeclaration &&
1950
- isJsSourceFile(callDeclaration.getSourceFile()) &&
2180
+ isJsSourceFile(ts.getSourceFileOfNode(callDeclaration)) &&
1951
2181
  (!callType ||
1952
2182
  (unannotatedCall &&
1953
2183
  callType.kind === "union" &&
@@ -1963,7 +2193,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
1963
2193
  !hasJsTypeAnnotation(decl) &&
1964
2194
  decl.initializer &&
1965
2195
  (ts.isArrowFunction(decl.initializer) || ts.isFunctionExpression(decl.initializer)) &&
1966
- !decl.initializer.typeParameters?.length) {
2196
+ !decl.initializer.typeParameters?.nodes.length) {
1967
2197
  type = lowerer.lambdaSignature(decl.initializer).funcType;
1968
2198
  }
1969
2199
  // Namespace aliases of inferred helpers carry the helper's
@@ -2023,7 +2253,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
2023
2253
  ts.isCallExpression(decl.initializer) &&
2024
2254
  ts.isPropertyAccessExpression(decl.initializer.expression) &&
2025
2255
  lowerer.stdlibGlobalMember(decl.initializer.expression, "Object") === "assign" &&
2026
- decl.initializer.arguments.some((arg) => ts.isIdentifier(arg) && lowerer.globalOf(arg)?.type.kind === "dyn")) {
2256
+ decl.initializer.arguments.nodes.some((arg) => ts.isIdentifier(arg) && lowerer.globalOf(arg)?.type.kind === "dyn")) {
2027
2257
  type = DYN;
2028
2258
  }
2029
2259
  // Runtime-arity JavaScript callables can be returned by a
@@ -2169,6 +2399,11 @@ export function collectGlobals(lowerer, sf, topStmts) {
2169
2399
  };
2170
2400
  lowerer.globalsBySymbol.set(symbol, g);
2171
2401
  lowerer.globalsList.push(g);
2402
+ // `let f: T;` initializes the binding (to undefined) where the
2403
+ // declaration runs: later writes are ordinary stores, which the
2404
+ // pointer guard alone would refuse (markCycleEarlyBindings).
2405
+ if (g.tdz && !decl.initializer)
2406
+ lowerer.uninitializedLexicalGlobals.set(g.id, { name: nameNode, module: sf, symbol });
2172
2407
  // Mutable checked-dynamic LET globals ride the same entry
2173
2408
  // init: a closure called above the declaration statement
2174
2409
  // reads the dyn undefined instead of faulting on NULL — the
@@ -2212,6 +2447,52 @@ function noteVarGlobalEntryInit(lowerer, sf, g) {
2212
2447
  inits.push(g);
2213
2448
  lowerer.varGlobalEntryInits.set(sf, inits);
2214
2449
  }
2450
+ /** A JavaScript require declaration the statement lowering treats as alias
2451
+ * plumbing (lowerVarDeclarator): no storage, the reads resolve through to
2452
+ * the module. JSON documents and native FFI requires keep their storage. */
2453
+ function requireAliasDecl(lowerer, decl) {
2454
+ return (decl.initializer !== undefined &&
2455
+ requireSpecOf(decl.initializer) !== null &&
2456
+ !isNativeFfiRequire(lowerer, decl.initializer) &&
2457
+ !isJsonRequireDecl(lowerer, decl) &&
2458
+ isJsSourceFile(decl.getSourceFile()));
2459
+ }
2460
+ /** The registrations a top-level require declaration does make. `const
2461
+ * process = require('node:process')` aliases the global process
2462
+ * (stdlibGlobalAliasDecl's require form) so reads through the binding
2463
+ * lower via the process surface. In `const { codes: { ERR_X } } =
2464
+ * require("./errors")` the outer keys stay alias plumbing, but a nested
2465
+ * pattern destructures the export's value at the require, so its bindings
2466
+ * own storage like any destructured declaration (lowerVarDeclarator
2467
+ * assigns them). */
2468
+ function registerRequireDeclBindings(lowerer, sf, list, decl, tag) {
2469
+ if ((list.flags & ts.NodeFlags.Const) !== 0)
2470
+ stdlibGlobalAliasDecl(lowerer, decl.name, decl.initializer);
2471
+ const isLetList = (list.flags & ts.NodeFlags.Let) !== 0 || (list.flags & ts.NodeFlags.BlockScoped) === 0;
2472
+ for (const element of requireNestedPatternsOf(decl)) {
2473
+ for (const nameNode of boundIdentifiersOf(element.name)) {
2474
+ const symbol = lowerer.checker.getSymbolAtLocation(nameNode);
2475
+ if (!symbol || lowerer.globalsBySymbol.has(symbol))
2476
+ continue;
2477
+ const mapped = lowerer.mapTypeOf(lowerer.typeOf(nameNode));
2478
+ const type = mapped && mapped.kind !== "void" ? mapped : DYN;
2479
+ const g = {
2480
+ id: `%g.${tag}${nameNode.text}`,
2481
+ name: nameNode.text,
2482
+ type,
2483
+ mutable: isLetList,
2484
+ source: bindingSource(nameNode),
2485
+ ...((type.kind === "func" || type.kind === "dyn") && !isVarDeclared(decl)
2486
+ ? { tdz: true }
2487
+ : {}),
2488
+ };
2489
+ lowerer.globalsBySymbol.set(symbol, g);
2490
+ lowerer.globalsList.push(g);
2491
+ if (isVarDeclared(decl))
2492
+ noteVarGlobalEntryInit(lowerer, sf, g);
2493
+ }
2494
+ }
2495
+ }
2215
2496
  /** The nested half of module-scope `var` hoisting: a `var` inside a
2216
2497
  * top-level BLOCK (an if arm, a loop body, a try) is module-scoped in
2217
2498
  * JS — other functions in the file read the same binding — so it must
@@ -2248,7 +2529,13 @@ function collectNestedVarGlobals(lowerer, sf, stmt, tag) {
2248
2529
  return undefined;
2249
2530
  });
2250
2531
  for (const list of lists) {
2251
- for (const decl of list.declarations) {
2532
+ for (const decl of list.declarations.nodes) {
2533
+ // A nested builtin require (`if (c) { var fs = require("fs"); }`)
2534
+ // lowers to nothing: its bindings are alias plumbing wherever the
2535
+ // statement sits (lowerVarDeclarator), so they own no storage.
2536
+ if (requireAliasDecl(lowerer, decl) &&
2537
+ canonicalBuiltinModule(requireSpecOf(decl.initializer)) !== null)
2538
+ continue;
2252
2539
  for (const nameNode of boundIdentifiersOf(decl.name)) {
2253
2540
  const diagsBefore = lowerer.diags.length;
2254
2541
  try {
@@ -2320,7 +2607,7 @@ export function declSymbolOf(lowerer, decl) {
2320
2607
  ts.getModifiers(decl)?.some((m) => m.kind === ts.SyntaxKind.DefaultKeyword) === true;
2321
2608
  if (!isDefault)
2322
2609
  return undefined;
2323
- const sym = defaultExportSymbolOf(lowerer, decl.getSourceFile());
2610
+ const sym = defaultExportSymbolOf(lowerer, ts.getSourceFileOfNode(decl));
2324
2611
  return sym ?? undefined;
2325
2612
  }
2326
2613
  /** `export default <expr>` in a module's init body: the first (and only)
@@ -2337,7 +2624,7 @@ export function declSymbolOf(lowerer, decl) {
2337
2624
  * expression so the expression's OWN diagnostic wins when it has one,
2338
2625
  * then poisons. */
2339
2626
  export function lowerDefaultExport(lowerer, stmt) {
2340
- const symbol = defaultExportSymbolOf(lowerer, stmt.getSourceFile());
2627
+ const symbol = defaultExportSymbolOf(lowerer, ts.getSourceFileOfNode(stmt));
2341
2628
  if (symbol && symbol.flags & ts.SymbolFlags.Alias && !lowerer.globalsBySymbol.has(symbol))
2342
2629
  return null;
2343
2630
  const g = symbol ? lowerer.globalsBySymbol.get(symbol) : undefined;
@@ -2350,10 +2637,10 @@ export function lowerDefaultExport(lowerer, stmt) {
2350
2637
  while (ts.isParenthesizedExpression(inner))
2351
2638
  inner = inner.expression;
2352
2639
  if (ts.isClassExpression(inner) &&
2353
- !isJsSourceFile(stmt.getSourceFile()) &&
2640
+ !isJsSourceFile(ts.getSourceFileOfNode(stmt)) &&
2354
2641
  inner.typeParameters === undefined &&
2355
2642
  (decoratorNodesOf(inner).length > 0 ||
2356
- inner.members.some((m) => decoratorNodesOf(m).length > 0)) &&
2643
+ inner.members.nodes.some((m) => decoratorNodesOf(m).length > 0)) &&
2357
2644
  guaranteedDecorationThrow(lowerer, inner) !== null) {
2358
2645
  return { kind: "exprStmt", expr: lowerer.lowerExpr(stmt.expression), loc: locOf(stmt) };
2359
2646
  }
@@ -2392,6 +2679,37 @@ export function lowerFileInit(lowerer, sf, stmts, name) {
2392
2679
  loc: loc0,
2393
2680
  });
2394
2681
  }
2682
+ if (sf === lowerer.entry)
2683
+ header.push(...lowerer.punycodeLinkWarning());
2684
+ // Top-level `this` of a CommonJS module: its object exists before the
2685
+ // module's first statement (lowerCjsTopLevelThis).
2686
+ const exportsThis = lowerer.cjsExportsThis.get(sf);
2687
+ if (exportsThis) {
2688
+ header.push({
2689
+ kind: "assign",
2690
+ localId: exportsThis.id,
2691
+ value: { kind: "dynObjLit", fields: [], type: DYN, loc: loc0 },
2692
+ loc: loc0,
2693
+ });
2694
+ }
2695
+ // Reassigned function declarations are initialized when the module
2696
+ // starts, as declarations are hoisted: before its dependencies run, so
2697
+ // a module of an import cycle can call one while it initializes. Their
2698
+ // statements then lower to nothing (rebindable-functions.ts).
2699
+ for (const stmt of stmts) {
2700
+ if (!ts.isFunctionDeclaration(stmt) || !stmt.name || !isRebindableFunction(lowerer, stmt))
2701
+ continue;
2702
+ const g = lowerer.globalsByDeclNode.get(stmt);
2703
+ if (!g)
2704
+ continue;
2705
+ header.push({
2706
+ kind: "assign",
2707
+ localId: g.id,
2708
+ value: lowerer.coerceToExpected(lowerer.lowerLambda(stmt), DYN),
2709
+ loc: locOf(stmt),
2710
+ });
2711
+ ctx.hoistedFnDecls.add(stmt);
2712
+ }
2395
2713
  for (const { stmt, dep } of orderedImportsOf(lowerer.program, sf)) {
2396
2714
  const npm = lowerer.npmInitActions.get(sf)?.get(stmt);
2397
2715
  if (npm !== undefined && npm.length > 0) {
@@ -2446,6 +2764,12 @@ export function lowerFileInit(lowerer, sf, stmts, name) {
2446
2764
  }
2447
2765
  else {
2448
2766
  header.push({ kind: "exprStmt", expr: call, loc });
2767
+ // An ES-module importer links a CommonJS dependency: Node
2768
+ // copies its lexer-visible exports here.
2769
+ if ((ts.isImportDeclaration(stmt) || ts.isExportDeclaration(stmt)) &&
2770
+ !isCjsJsFile(sf, lowerer.program) &&
2771
+ isCjsJsFile(dep, lowerer.program))
2772
+ header.push(...cjsAccessorSnapshotStores(lowerer, dep, loc));
2449
2773
  }
2450
2774
  }
2451
2775
  }
@@ -2501,12 +2825,27 @@ export function lowerFileInit(lowerer, sf, stmts, name) {
2501
2825
  // a function called above the declaration reads `undefined`, exactly
2502
2826
  // Node); checked-dynamic var globals hold the dyn undefined the same
2503
2827
  // way. After the guard: a cache-hit revisit must not reset them.
2828
+ // A union slot the body retypes checked-dynamic (lowerVarDecl: a
2829
+ // JavaScript var initialized with an existing checked-dynamic object)
2830
+ // gets the dyn undefined once the body has lowered.
2831
+ const unionEntryInits = [];
2504
2832
  for (const g of lowerer.varGlobalEntryInits.get(sf) ?? []) {
2505
2833
  if (g.type.kind !== "union" && g.type.kind !== "dyn")
2506
2834
  continue;
2507
2835
  const wrapped = g.type.kind === "dyn" ? dynUndefinedExpr(loc0) : lowerer.unassignedSlotInit(g.type, loc0);
2508
2836
  if (wrapped) {
2509
- header.push({ kind: "assign", localId: g.id, value: wrapped, loc: loc0 });
2837
+ if (g.type.kind === "union")
2838
+ unionEntryInits.push({ at: header.length, g });
2839
+ // A let global whose early reads are checked (initFlag) only
2840
+ // gets its storage filled here: this is not the source write, so
2841
+ // it must neither run the TDZ check nor set the flag.
2842
+ header.push({
2843
+ kind: "assign",
2844
+ localId: g.id,
2845
+ value: wrapped,
2846
+ ...(g.initFlag !== undefined ? { initializes: true } : {}),
2847
+ loc: loc0,
2848
+ });
2510
2849
  }
2511
2850
  }
2512
2851
  const prelude = lowerer.jsonInitActions.get(sf) ?? [];
@@ -2526,7 +2865,7 @@ export function lowerFileInit(lowerer, sf, stmts, name) {
2526
2865
  c.decl &&
2527
2866
  ts.isClassDeclaration(c.decl) &&
2528
2867
  !c.mixinInstance &&
2529
- c.decl.getSourceFile() === sf &&
2868
+ ts.getSourceFileOfNode(c.decl) === sf &&
2530
2869
  (lowerer.classInitFlags.has(c.def.name) ||
2531
2870
  c.callableBase !== undefined ||
2532
2871
  c.def.baseValueGlobal !== undefined ||
@@ -2534,7 +2873,7 @@ export function lowerFileInit(lowerer, sf, stmts, name) {
2534
2873
  c.staticFields.length > 0 ||
2535
2874
  (c.staticBlocks?.length ?? 0) > 0 ||
2536
2875
  c.classDecorators !== undefined))
2537
- .map((c) => ({ pos: c.decl.getStart(), info: c }));
2876
+ .map((c) => ({ pos: ts.tokenStartOfNode(c.decl), info: c }));
2538
2877
  // Statics-bearing MIXIN instantiations whose call evaluates in THIS
2539
2878
  // file: their declaration-time code runs when the call does — the
2540
2879
  // top-level statement lower-mixins recorded. Insertion order is
@@ -2555,7 +2894,7 @@ export function lowerFileInit(lowerer, sf, stmts, name) {
2555
2894
  // anything the statement's lowering emits. Hoisted class
2556
2895
  // declarations never share a kept statement's start, so `<=`
2557
2896
  // changes nothing for them.
2558
- while (at < statics.length && statics[at].pos <= stmt.getStart()) {
2897
+ while (at < statics.length && statics[at].pos <= ts.tokenStartOfNode(stmt)) {
2559
2898
  body.push(...withClassInitFlag(lowerer, statics[at].info, lowerer.lowerStaticFieldInits(statics[at].info)));
2560
2899
  at++;
2561
2900
  }
@@ -2574,6 +2913,17 @@ export function lowerFileInit(lowerer, sf, stmts, name) {
2574
2913
  body.push(...withClassInitFlag(lowerer, statics[at].info, lowerer.lowerStaticFieldInits(statics[at].info)));
2575
2914
  at++;
2576
2915
  }
2916
+ for (const { at, g } of unionEntryInits) {
2917
+ if (g.type.kind !== "dyn")
2918
+ continue;
2919
+ body[at] = {
2920
+ kind: "assign",
2921
+ localId: g.id,
2922
+ value: dynUndefinedExpr(loc0),
2923
+ ...(g.initFlag !== undefined ? { initializes: true } : {}),
2924
+ loc: loc0,
2925
+ };
2926
+ }
2577
2927
  const moduleRef = cjsModuleRef(lowerer, sf);
2578
2928
  if (moduleRef !== null) {
2579
2929
  const guardedBody = body.splice(guardId !== undefined ? 2 : 0);
@@ -2726,6 +3076,7 @@ function rememberEvaluationError(lowerer, guardId, body, loc) {
2726
3076
  export function buildMain(lowerer) {
2727
3077
  const loc = { file: lowerer.entry.fileName, start: 0, end: 0 };
2728
3078
  const body = [
3079
+ ...lowerer.mainPrelude,
2729
3080
  ...cjsModuleRegistryPrelude(lowerer, loc),
2730
3081
  ...handleEventReaderPrelude(lowerer, loc),
2731
3082
  ];