@scriptc/compiler 0.3.5 → 0.4.0

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 (1243) hide show
  1. package/ambient/scriptc-node-fallback.d.ts +960 -82
  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 +13 -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 +6 -0
  14. package/dist/backend/library-pack.js.map +1 -1
  15. package/dist/backend/llvm/alloc.d.ts +41 -4
  16. package/dist/backend/llvm/alloc.js +138 -7
  17. package/dist/backend/llvm/alloc.js.map +1 -1
  18. package/dist/backend/llvm/alloc.test.js +30 -1
  19. package/dist/backend/llvm/alloc.test.js.map +1 -1
  20. package/dist/backend/llvm/appended-array-literals.test.js +1 -1
  21. package/dist/backend/llvm/array-search.test.js +1 -1
  22. package/dist/backend/llvm/blocks.d.ts +8 -0
  23. package/dist/backend/llvm/blocks.js +43 -1
  24. package/dist/backend/llvm/blocks.js.map +1 -1
  25. package/dist/backend/llvm/blocks.test.js +22 -1
  26. package/dist/backend/llvm/blocks.test.js.map +1 -1
  27. package/dist/backend/llvm/byte-numbers.js +15 -5
  28. package/dist/backend/llvm/byte-numbers.js.map +1 -1
  29. package/dist/backend/llvm/bytes-alias.d.ts +14 -0
  30. package/dist/backend/llvm/bytes-alias.js +20 -0
  31. package/dist/backend/llvm/bytes-alias.js.map +1 -0
  32. package/dist/backend/llvm/bytes-loop-versions.d.ts +86 -0
  33. package/dist/backend/llvm/bytes-loop-versions.js +506 -0
  34. package/dist/backend/llvm/bytes-loop-versions.js.map +1 -0
  35. package/dist/backend/llvm/bytes-loop-versions.test.d.ts +1 -0
  36. package/dist/backend/llvm/bytes-loop-versions.test.js +244 -0
  37. package/dist/backend/llvm/bytes-loop-versions.test.js.map +1 -0
  38. package/dist/backend/llvm/call-lifetimes.js +50 -1
  39. package/dist/backend/llvm/call-lifetimes.js.map +1 -1
  40. package/dist/backend/llvm/call-lifetimes.test.js +34 -0
  41. package/dist/backend/llvm/call-lifetimes.test.js.map +1 -1
  42. package/dist/backend/llvm/checked-narrows.test.js +1 -1
  43. package/dist/backend/llvm/checked-value-lifetimes.js +4 -1
  44. package/dist/backend/llvm/checked-value-lifetimes.js.map +1 -1
  45. package/dist/backend/llvm/classes.d.ts +11 -0
  46. package/dist/backend/llvm/classes.js +71 -14
  47. package/dist/backend/llvm/classes.js.map +1 -1
  48. package/dist/backend/llvm/classes.test.js +58 -8
  49. package/dist/backend/llvm/classes.test.js.map +1 -1
  50. package/dist/backend/llvm/common.js +1 -0
  51. package/dist/backend/llvm/common.js.map +1 -1
  52. package/dist/backend/llvm/constant-callbacks.d.ts +5 -1
  53. package/dist/backend/llvm/constant-callbacks.js +55 -12
  54. package/dist/backend/llvm/constant-callbacks.js.map +1 -1
  55. package/dist/backend/llvm/constant-callbacks.test.js +88 -1
  56. package/dist/backend/llvm/constant-callbacks.test.js.map +1 -1
  57. package/dist/backend/llvm/counted-loops.d.ts +4 -0
  58. package/dist/backend/llvm/counted-loops.js +37 -0
  59. package/dist/backend/llvm/counted-loops.js.map +1 -1
  60. package/dist/backend/llvm/dense-array-access.d.ts +12 -3
  61. package/dist/backend/llvm/dense-array-access.js +72 -14
  62. package/dist/backend/llvm/dense-array-access.js.map +1 -1
  63. package/dist/backend/llvm/dense-array-access.test.js +59 -3
  64. package/dist/backend/llvm/dense-array-access.test.js.map +1 -1
  65. package/dist/backend/llvm/dense-array-loops.d.ts +51 -0
  66. package/dist/backend/llvm/dense-array-loops.js +162 -0
  67. package/dist/backend/llvm/dense-array-loops.js.map +1 -0
  68. package/dist/backend/llvm/dense-array-loops.test.d.ts +1 -0
  69. package/dist/backend/llvm/dense-array-loops.test.js +128 -0
  70. package/dist/backend/llvm/dense-array-loops.test.js.map +1 -0
  71. package/dist/backend/llvm/dyn-handle-tags.test.d.ts +1 -0
  72. package/dist/backend/llvm/dyn-handle-tags.test.js +38 -0
  73. package/dist/backend/llvm/dyn-handle-tags.test.js.map +1 -0
  74. package/dist/backend/llvm/dyn.d.ts +28 -4
  75. package/dist/backend/llvm/dyn.js +324 -179
  76. package/dist/backend/llvm/dyn.js.map +1 -1
  77. package/dist/backend/llvm/emit-function.d.ts +64 -0
  78. package/dist/backend/llvm/emit-function.js +1190 -0
  79. package/dist/backend/llvm/emit-function.js.map +1 -0
  80. package/dist/backend/llvm/emit-module.d.ts +24 -0
  81. package/dist/backend/llvm/emit-module.js +1535 -0
  82. package/dist/backend/llvm/emit-module.js.map +1 -0
  83. package/dist/backend/llvm/emit-statements.d.ts +58 -0
  84. package/dist/backend/llvm/emit-statements.js +1964 -0
  85. package/dist/backend/llvm/emit-statements.js.map +1 -0
  86. package/dist/backend/llvm/emitter.d.ts +576 -268
  87. package/dist/backend/llvm/emitter.js +801 -4447
  88. package/dist/backend/llvm/emitter.js.map +1 -1
  89. package/dist/backend/llvm/emitter.test.js +57 -3
  90. package/dist/backend/llvm/emitter.test.js.map +1 -1
  91. package/dist/backend/llvm/expr-async.js +73 -46
  92. package/dist/backend/llvm/expr-async.js.map +1 -1
  93. package/dist/backend/llvm/expr-async.test.js +1 -1
  94. package/dist/backend/llvm/expr-bytes.d.ts +2 -0
  95. package/dist/backend/llvm/expr-bytes.js +76 -29
  96. package/dist/backend/llvm/expr-bytes.js.map +1 -1
  97. package/dist/backend/llvm/expr-callbacks.d.ts +6 -2
  98. package/dist/backend/llvm/expr-callbacks.js +48 -11
  99. package/dist/backend/llvm/expr-callbacks.js.map +1 -1
  100. package/dist/backend/llvm/expr-calls.d.ts +1 -1
  101. package/dist/backend/llvm/expr-calls.js +71 -53
  102. package/dist/backend/llvm/expr-calls.js.map +1 -1
  103. package/dist/backend/llvm/expr-calls.test.js +1 -1
  104. package/dist/backend/llvm/expr-containers.js +39 -15
  105. package/dist/backend/llvm/expr-containers.js.map +1 -1
  106. package/dist/backend/llvm/expr-control.js +16 -16
  107. package/dist/backend/llvm/expr-control.js.map +1 -1
  108. package/dist/backend/llvm/expr-dispatch.js +1 -0
  109. package/dist/backend/llvm/expr-dispatch.js.map +1 -1
  110. package/dist/backend/llvm/expr-dynamic.d.ts +3 -0
  111. package/dist/backend/llvm/expr-dynamic.js +92 -63
  112. package/dist/backend/llvm/expr-dynamic.js.map +1 -1
  113. package/dist/backend/llvm/expr-primitives.d.ts +1 -1
  114. package/dist/backend/llvm/expr-primitives.js +132 -25
  115. package/dist/backend/llvm/expr-primitives.js.map +1 -1
  116. package/dist/backend/llvm/expr-primitives.test.js +2 -2
  117. package/dist/backend/llvm/expr-records.d.ts +1 -1
  118. package/dist/backend/llvm/expr-records.js +32 -11
  119. package/dist/backend/llvm/expr-records.js.map +1 -1
  120. package/dist/backend/llvm/expr-stream-bridges.js +54 -12
  121. package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
  122. package/dist/backend/llvm/expr-stream-bridges.test.js +2 -2
  123. package/dist/backend/llvm/expr-stream-callbacks.js +22 -1
  124. package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
  125. package/dist/backend/llvm/int32-abi.test.js +2 -2
  126. package/dist/backend/llvm/integer-clones.test.js +3 -3
  127. package/dist/backend/llvm/integer-remainder.d.ts +34 -13
  128. package/dist/backend/llvm/integer-remainder.js +156 -22
  129. package/dist/backend/llvm/integer-remainder.js.map +1 -1
  130. package/dist/backend/llvm/intern-tables.test.js +1 -1
  131. package/dist/backend/llvm/jsval-encoding.d.ts +21 -0
  132. package/dist/backend/llvm/jsval-encoding.js +20 -0
  133. package/dist/backend/llvm/jsval-encoding.js.map +1 -0
  134. package/dist/backend/llvm/jsval.d.ts +12 -0
  135. package/dist/backend/llvm/jsval.js +488 -0
  136. package/dist/backend/llvm/jsval.js.map +1 -0
  137. package/dist/backend/llvm/lazy-captures.d.ts +12 -2
  138. package/dist/backend/llvm/lazy-captures.js +39 -17
  139. package/dist/backend/llvm/lazy-captures.js.map +1 -1
  140. package/dist/backend/llvm/lib-abi.js +1 -1
  141. package/dist/backend/llvm/lib-abi.js.map +1 -1
  142. package/dist/backend/llvm/lib-connect.js +1 -1
  143. package/dist/backend/llvm/lib-connect.js.map +1 -1
  144. package/dist/backend/llvm/lib-datagram.js +14 -8
  145. package/dist/backend/llvm/lib-datagram.js.map +1 -1
  146. package/dist/backend/llvm/lib-dispatch.js +217 -24
  147. package/dist/backend/llvm/lib-dispatch.js.map +1 -1
  148. package/dist/backend/llvm/lib-filesystem.js +102 -13
  149. package/dist/backend/llvm/lib-filesystem.js.map +1 -1
  150. package/dist/backend/llvm/lib-http2.js +3 -3
  151. package/dist/backend/llvm/lib-http2.js.map +1 -1
  152. package/dist/backend/llvm/lib-lookup.js +2 -2
  153. package/dist/backend/llvm/lib-lookup.js.map +1 -1
  154. package/dist/backend/llvm/lib-network.js +77 -25
  155. package/dist/backend/llvm/lib-network.js.map +1 -1
  156. package/dist/backend/llvm/lib-process.js +100 -50
  157. package/dist/backend/llvm/lib-process.js.map +1 -1
  158. package/dist/backend/llvm/lib-shared.d.ts +12 -0
  159. package/dist/backend/llvm/lib-shared.js +229 -5
  160. package/dist/backend/llvm/lib-shared.js.map +1 -1
  161. package/dist/backend/llvm/lib-stream.js +46 -16
  162. package/dist/backend/llvm/lib-stream.js.map +1 -1
  163. package/dist/backend/llvm/lib-test.js +57 -8
  164. package/dist/backend/llvm/lib-test.js.map +1 -1
  165. package/dist/backend/llvm/lib-tls.js +4 -9
  166. package/dist/backend/llvm/lib-tls.js.map +1 -1
  167. package/dist/backend/llvm/local-array-reads.js +2 -2
  168. package/dist/backend/llvm/local-array-reads.test.js +1 -1
  169. package/dist/backend/llvm/local-extents.d.ts +19 -0
  170. package/dist/backend/llvm/local-extents.js +169 -0
  171. package/dist/backend/llvm/local-extents.js.map +1 -0
  172. package/dist/backend/llvm/local-extents.test.d.ts +1 -0
  173. package/dist/backend/llvm/local-extents.test.js +92 -0
  174. package/dist/backend/llvm/local-extents.test.js.map +1 -0
  175. package/dist/backend/llvm/local-union-storage.js +7 -7
  176. package/dist/backend/llvm/local-union-storage.js.map +1 -1
  177. package/dist/backend/llvm/local-union-storage.test.js +2 -2
  178. package/dist/backend/llvm/map-entry-fusion.test.js +1 -1
  179. package/dist/backend/llvm/map-number-lookup.js +2 -2
  180. package/dist/backend/llvm/map-number-lookup.test.js +2 -2
  181. package/dist/backend/llvm/map-read-lifetimes.test.js +2 -2
  182. package/dist/backend/llvm/narrow-guards.d.ts +38 -0
  183. package/dist/backend/llvm/narrow-guards.js +151 -0
  184. package/dist/backend/llvm/narrow-guards.js.map +1 -0
  185. package/dist/backend/llvm/nullable-unions.d.ts +70 -9
  186. package/dist/backend/llvm/nullable-unions.js +105 -6
  187. package/dist/backend/llvm/nullable-unions.js.map +1 -1
  188. package/dist/backend/llvm/nullable-unions.test.d.ts +1 -0
  189. package/dist/backend/llvm/nullable-unions.test.js +65 -0
  190. package/dist/backend/llvm/nullable-unions.test.js.map +1 -0
  191. package/dist/backend/llvm/publish.d.ts +4 -0
  192. package/dist/backend/llvm/publish.js +14 -2
  193. package/dist/backend/llvm/publish.js.map +1 -1
  194. package/dist/backend/llvm/publish.test.js +1 -1
  195. package/dist/backend/llvm/receivers.d.ts +31 -0
  196. package/dist/backend/llvm/receivers.js +395 -0
  197. package/dist/backend/llvm/receivers.js.map +1 -0
  198. package/dist/backend/llvm/record-results.d.ts +13 -2
  199. package/dist/backend/llvm/record-results.js +66 -6
  200. package/dist/backend/llvm/record-results.js.map +1 -1
  201. package/dist/backend/llvm/reference-effects.js +9 -0
  202. package/dist/backend/llvm/reference-effects.js.map +1 -1
  203. package/dist/backend/llvm/reference-writes.d.ts +4 -0
  204. package/dist/backend/llvm/reference-writes.js +143 -6
  205. package/dist/backend/llvm/reference-writes.js.map +1 -1
  206. package/dist/backend/llvm/reference-writes.test.d.ts +1 -0
  207. package/dist/backend/llvm/reference-writes.test.js +88 -0
  208. package/dist/backend/llvm/reference-writes.test.js.map +1 -0
  209. package/dist/backend/llvm/regex-matchers.d.ts +8 -0
  210. package/dist/backend/llvm/regex-matchers.js +33 -0
  211. package/dist/backend/llvm/regex-matchers.js.map +1 -1
  212. package/dist/backend/llvm/regex-matchers.test.js +23 -1
  213. package/dist/backend/llvm/regex-matchers.test.js.map +1 -1
  214. package/dist/backend/llvm/regions.d.ts +1 -1
  215. package/dist/backend/llvm/regions.js +9 -6
  216. package/dist/backend/llvm/regions.js.map +1 -1
  217. package/dist/backend/llvm/regions.test.js +1 -1
  218. package/dist/backend/llvm/shapes.d.ts +69 -43
  219. package/dist/backend/llvm/shapes.js +285 -21
  220. package/dist/backend/llvm/shapes.js.map +1 -1
  221. package/dist/backend/llvm/shapes.test.js +37 -3
  222. package/dist/backend/llvm/shapes.test.js.map +1 -1
  223. package/dist/backend/llvm/speculative-integers.d.ts +74 -0
  224. package/dist/backend/llvm/speculative-integers.js +571 -0
  225. package/dist/backend/llvm/speculative-integers.js.map +1 -0
  226. package/dist/backend/llvm/speculative-integers.test.d.ts +1 -0
  227. package/dist/backend/llvm/speculative-integers.test.js +148 -0
  228. package/dist/backend/llvm/speculative-integers.test.js.map +1 -0
  229. package/dist/backend/llvm/split-loops.js +2 -2
  230. package/dist/backend/llvm/split-loops.js.map +1 -1
  231. package/dist/backend/llvm/stack-objects.d.ts +26 -6
  232. package/dist/backend/llvm/stack-objects.js +133 -10
  233. package/dist/backend/llvm/stack-objects.js.map +1 -1
  234. package/dist/backend/llvm/stack-objects.test.js +55 -1
  235. package/dist/backend/llvm/stack-objects.test.js.map +1 -1
  236. package/dist/backend/llvm/stack-unions.test.js +1 -1
  237. package/dist/backend/llvm/string-construction.test.js +1 -1
  238. package/dist/backend/llvm/string-lifetimes.test.js +15 -14
  239. package/dist/backend/llvm/string-lifetimes.test.js.map +1 -1
  240. package/dist/backend/llvm/string-slices.d.ts +25 -0
  241. package/dist/backend/llvm/string-slices.js +207 -1
  242. package/dist/backend/llvm/string-slices.js.map +1 -1
  243. package/dist/backend/llvm/string-slices.test.js +139 -2
  244. package/dist/backend/llvm/string-slices.test.js.map +1 -1
  245. package/dist/backend/llvm/switch-dispatch.test.js +2 -2
  246. package/dist/backend/llvm/thread-slots.d.ts +5 -0
  247. package/dist/backend/llvm/thread-slots.js +142 -0
  248. package/dist/backend/llvm/thread-slots.js.map +1 -0
  249. package/dist/backend/llvm/thread-slots.test.d.ts +1 -0
  250. package/dist/backend/llvm/thread-slots.test.js +110 -0
  251. package/dist/backend/llvm/thread-slots.test.js.map +1 -0
  252. package/dist/backend/llvm/union-repr.d.ts +7 -7
  253. package/dist/backend/llvm/union-repr.js +18 -2
  254. package/dist/backend/llvm/union-repr.js.map +1 -1
  255. package/dist/backend/llvm/union-retype.test.js +17 -3
  256. package/dist/backend/llvm/union-retype.test.js.map +1 -1
  257. package/dist/backend/llvm/walkers.d.ts +2 -2
  258. package/dist/backend/llvm/walkers.js +51 -26
  259. package/dist/backend/llvm/walkers.js.map +1 -1
  260. package/dist/backend/llvm/wasm-modules.d.ts +16 -0
  261. package/dist/backend/llvm/wasm-modules.js +66 -0
  262. package/dist/backend/llvm/wasm-modules.js.map +1 -0
  263. package/dist/backend/llvm/wrapping-sums.d.ts +7 -0
  264. package/dist/backend/llvm/wrapping-sums.js +11 -3
  265. package/dist/backend/llvm/wrapping-sums.js.map +1 -1
  266. package/dist/backend/mangle.d.ts +7 -0
  267. package/dist/backend/mangle.js +11 -0
  268. package/dist/backend/mangle.js.map +1 -1
  269. package/dist/backend/may-throw.d.ts +3 -0
  270. package/dist/backend/may-throw.js +6 -2
  271. package/dist/backend/may-throw.js.map +1 -1
  272. package/dist/backend/may-throw.test.js +1 -1
  273. package/dist/backend/native/contracts.d.ts +37 -0
  274. package/dist/backend/native/executable.js +192 -134
  275. package/dist/backend/native/executable.js.map +1 -1
  276. package/dist/backend/native/library.js +1 -0
  277. package/dist/backend/native/library.js.map +1 -1
  278. package/dist/backend/native/runtime-inputs.d.ts +1 -1
  279. package/dist/backend/native/runtime-inputs.js +2 -0
  280. package/dist/backend/native/runtime-inputs.js.map +1 -1
  281. package/dist/backend/native-link-info-core.d.ts +30 -0
  282. package/dist/backend/native-link-info-core.js.map +1 -1
  283. package/dist/backend/publication.test.js +1 -1
  284. package/dist/backend/runtime-pack-core.d.ts +9 -1
  285. package/dist/backend/runtime-pack-core.js +10 -1
  286. package/dist/backend/runtime-pack-core.js.map +1 -1
  287. package/dist/backend/runtime-pack-native.js +1 -1
  288. package/dist/backend/runtime-pack-native.js.map +1 -1
  289. package/dist/backend/runtime-pack-native.test.d.ts +1 -0
  290. package/dist/backend/runtime-pack-native.test.js +31 -0
  291. package/dist/backend/runtime-pack-native.test.js.map +1 -0
  292. package/dist/backend/runtime-pack-targets.test.js +5 -0
  293. package/dist/backend/runtime-pack-targets.test.js.map +1 -1
  294. package/dist/backend/runtime-pack.d.ts +7 -3
  295. package/dist/backend/runtime-pack.js +12 -6
  296. package/dist/backend/runtime-pack.js.map +1 -1
  297. package/dist/backend/runtime-pack.test.js +20 -6
  298. package/dist/backend/runtime-pack.test.js.map +1 -1
  299. package/dist/backend/stack-observations.d.ts +22 -0
  300. package/dist/backend/stack-observations.js +382 -0
  301. package/dist/backend/stack-observations.js.map +1 -0
  302. package/dist/backend/stack-observations.test.d.ts +1 -0
  303. package/dist/backend/stack-observations.test.js +233 -0
  304. package/dist/backend/stack-observations.test.js.map +1 -0
  305. package/dist/backend/target-diagnostics.js +8 -0
  306. package/dist/backend/target-diagnostics.js.map +1 -1
  307. package/dist/backend/target-diagnostics.test.js +1 -1
  308. package/dist/backend/warm-cache.js +5 -0
  309. package/dist/backend/warm-cache.js.map +1 -1
  310. package/dist/backend/young-nursery.d.ts +7 -0
  311. package/dist/backend/young-nursery.js +10 -0
  312. package/dist/backend/young-nursery.js.map +1 -0
  313. package/dist/cli/command.js +44 -4
  314. package/dist/cli/command.js.map +1 -1
  315. package/dist/cli/usage.d.ts +11 -1
  316. package/dist/cli/usage.js +20 -1
  317. package/dist/cli/usage.js.map +1 -1
  318. package/dist/compat/fetch-profile.js +10 -1
  319. package/dist/compat/fetch-profile.js.map +1 -1
  320. package/dist/compile-types.d.ts +13 -0
  321. package/dist/contracts/check.js +25 -6
  322. package/dist/contracts/check.js.map +1 -1
  323. package/dist/contracts/int32-elements.d.ts +115 -0
  324. package/dist/contracts/int32-elements.js +1179 -0
  325. package/dist/contracts/int32-elements.js.map +1 -0
  326. package/dist/coverage/report.d.ts +16 -0
  327. package/dist/coverage/report.js +182 -1
  328. package/dist/coverage/report.js.map +1 -1
  329. package/dist/coverage/surface-manifest.js +19 -6
  330. package/dist/coverage/surface-manifest.js.map +1 -1
  331. package/dist/coverage/verdict-cache.d.ts +2 -0
  332. package/dist/coverage/verdict-cache.js +12 -0
  333. package/dist/coverage/verdict-cache.js.map +1 -1
  334. package/dist/coverage/verdict-cache.test.js +2 -1
  335. package/dist/coverage/verdict-cache.test.js.map +1 -1
  336. package/dist/diagnostics/diagnostic.d.ts +11 -7
  337. package/dist/diagnostics/diagnostic.js +35 -23
  338. package/dist/diagnostics/diagnostic.js.map +1 -1
  339. package/dist/diagnostics/envelope.d.ts +39 -2
  340. package/dist/diagnostics/envelope.js.map +1 -1
  341. package/dist/diagnostics/render.d.ts +7 -0
  342. package/dist/diagnostics/render.js +50 -13
  343. package/dist/diagnostics/render.js.map +1 -1
  344. package/dist/diagnostics/render.test.d.ts +1 -0
  345. package/dist/diagnostics/render.test.js +49 -0
  346. package/dist/diagnostics/render.test.js.map +1 -0
  347. package/dist/executable/executable-cache.d.ts +17 -0
  348. package/dist/executable/executable-cache.js +13 -1
  349. package/dist/executable/executable-cache.js.map +1 -1
  350. package/dist/executable/executable-cache.test.js +7 -1
  351. package/dist/executable/executable-cache.test.js.map +1 -1
  352. package/dist/executable/prepare.js +2 -1
  353. package/dist/executable/prepare.js.map +1 -1
  354. package/dist/frontend/analysis.js +6 -1
  355. package/dist/frontend/analysis.js.map +1 -1
  356. package/dist/frontend/builtin-modules.d.ts +16 -2
  357. package/dist/frontend/builtin-modules.js +40 -7
  358. package/dist/frontend/builtin-modules.js.map +1 -1
  359. package/dist/frontend/cjs-syntax.js +52 -51
  360. package/dist/frontend/cjs-syntax.js.map +1 -1
  361. package/dist/frontend/contract-types.d.ts +3 -0
  362. package/dist/frontend/contract-types.js +36 -7
  363. package/dist/frontend/contract-types.js.map +1 -1
  364. package/dist/frontend/experimental-import.d.ts +5 -1
  365. package/dist/frontend/experimental-import.js +26 -7
  366. package/dist/frontend/experimental-import.js.map +1 -1
  367. package/dist/frontend/fork-target.js +20 -22
  368. package/dist/frontend/fork-target.js.map +1 -1
  369. package/dist/frontend/fork-target.test.js +2 -1
  370. package/dist/frontend/fork-target.test.js.map +1 -1
  371. package/dist/frontend/function-completion.js +6 -6
  372. package/dist/frontend/function-completion.js.map +1 -1
  373. package/dist/frontend/helper-tokens.js +15 -3
  374. package/dist/frontend/helper-tokens.js.map +1 -1
  375. package/dist/frontend/helper-tokens.test.js +7 -1
  376. package/dist/frontend/helper-tokens.test.js.map +1 -1
  377. package/dist/frontend/inferred-js-diagnostics.js +14 -17
  378. package/dist/frontend/inferred-js-diagnostics.js.map +1 -1
  379. package/dist/frontend/input-tracker.d.ts +3 -0
  380. package/dist/frontend/input-tracker.js +32 -3
  381. package/dist/frontend/input-tracker.js.map +1 -1
  382. package/dist/frontend/lib-contract.js +36 -32
  383. package/dist/frontend/lib-contract.js.map +1 -1
  384. package/dist/frontend/lib-exports.js +3 -3
  385. package/dist/frontend/lib-exports.js.map +1 -1
  386. package/dist/frontend/lowering/array-values.d.ts +8 -3
  387. package/dist/frontend/lowering/array-values.js +60 -11
  388. package/dist/frontend/lowering/array-values.js.map +1 -1
  389. package/dist/frontend/lowering/assert-instances.js +4 -4
  390. package/dist/frontend/lowering/assert-instances.js.map +1 -1
  391. package/dist/frontend/lowering/assertion-identity.d.ts +12 -0
  392. package/dist/frontend/lowering/assertion-identity.js +70 -0
  393. package/dist/frontend/lowering/assertion-identity.js.map +1 -0
  394. package/dist/frontend/lowering/assertion-members.d.ts +28 -0
  395. package/dist/frontend/lowering/assertion-members.js +185 -0
  396. package/dist/frontend/lowering/assertion-members.js.map +1 -0
  397. package/dist/frontend/lowering/binding-analysis.js +27 -20
  398. package/dist/frontend/lowering/binding-analysis.js.map +1 -1
  399. package/dist/frontend/lowering/builtin-calls.js +72 -4
  400. package/dist/frontend/lowering/builtin-calls.js.map +1 -1
  401. package/dist/frontend/lowering/builtin-function-fences.d.ts +14 -0
  402. package/dist/frontend/lowering/builtin-function-fences.js +42 -0
  403. package/dist/frontend/lowering/builtin-function-fences.js.map +1 -0
  404. package/dist/frontend/lowering/builtins/arguments.js +1 -1
  405. package/dist/frontend/lowering/builtins/arguments.js.map +1 -1
  406. package/dist/frontend/lowering/builtins/async-context.js +53 -52
  407. package/dist/frontend/lowering/builtins/async-context.js.map +1 -1
  408. package/dist/frontend/lowering/builtins/atomics.js +6 -6
  409. package/dist/frontend/lowering/builtins/atomics.js.map +1 -1
  410. package/dist/frontend/lowering/builtins/blob.js +8 -6
  411. package/dist/frontend/lowering/builtins/blob.js.map +1 -1
  412. package/dist/frontend/lowering/builtins/builtin-class-dyn.d.ts +23 -0
  413. package/dist/frontend/lowering/builtins/builtin-class-dyn.js +156 -0
  414. package/dist/frontend/lowering/builtins/builtin-class-dyn.js.map +1 -0
  415. package/dist/frontend/lowering/builtins/callable-aliases.js +45 -6
  416. package/dist/frontend/lowering/builtins/callable-aliases.js.map +1 -1
  417. package/dist/frontend/lowering/builtins/child-process-async.js +7 -7
  418. package/dist/frontend/lowering/builtins/child-process-async.js.map +1 -1
  419. package/dist/frontend/lowering/builtins/child-process-methods.d.ts +6 -4
  420. package/dist/frontend/lowering/builtins/child-process-methods.js +310 -57
  421. package/dist/frontend/lowering/builtins/child-process-methods.js.map +1 -1
  422. package/dist/frontend/lowering/builtins/child-process-sync.js +16 -10
  423. package/dist/frontend/lowering/builtins/child-process-sync.js.map +1 -1
  424. package/dist/frontend/lowering/builtins/child-process.d.ts +6 -4
  425. package/dist/frontend/lowering/builtins/child-process.js +85 -61
  426. package/dist/frontend/lowering/builtins/child-process.js.map +1 -1
  427. package/dist/frontend/lowering/builtins/class-values.d.ts +60 -0
  428. package/dist/frontend/lowering/builtins/class-values.js +226 -0
  429. package/dist/frontend/lowering/builtins/class-values.js.map +1 -0
  430. package/dist/frontend/lowering/builtins/compression.d.ts +18 -0
  431. package/dist/frontend/lowering/builtins/compression.js +230 -52
  432. package/dist/frontend/lowering/builtins/compression.js.map +1 -1
  433. package/dist/frontend/lowering/builtins/constants.d.ts +9 -1
  434. package/dist/frontend/lowering/builtins/constants.js +28 -7
  435. package/dist/frontend/lowering/builtins/constants.js.map +1 -1
  436. package/dist/frontend/lowering/builtins/crypto.d.ts +19 -0
  437. package/dist/frontend/lowering/builtins/crypto.js +223 -38
  438. package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
  439. package/dist/frontend/lowering/builtins/dates.d.ts +7 -1
  440. package/dist/frontend/lowering/builtins/dates.js +92 -16
  441. package/dist/frontend/lowering/builtins/dates.js.map +1 -1
  442. package/dist/frontend/lowering/builtins/disposable-stack.d.ts +18 -0
  443. package/dist/frontend/lowering/builtins/disposable-stack.js +137 -0
  444. package/dist/frontend/lowering/builtins/disposable-stack.js.map +1 -0
  445. package/dist/frontend/lowering/builtins/environment.js +3 -3
  446. package/dist/frontend/lowering/builtins/environment.js.map +1 -1
  447. package/dist/frontend/lowering/builtins/errors.d.ts +14 -10
  448. package/dist/frontend/lowering/builtins/errors.js +174 -6
  449. package/dist/frontend/lowering/builtins/errors.js.map +1 -1
  450. package/dist/frontend/lowering/builtins/filesystem-calls.d.ts +4 -0
  451. package/dist/frontend/lowering/builtins/filesystem-calls.js +136 -113
  452. package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
  453. package/dist/frontend/lowering/builtins/filesystem.d.ts +8 -0
  454. package/dist/frontend/lowering/builtins/filesystem.js +213 -76
  455. package/dist/frontend/lowering/builtins/filesystem.js.map +1 -1
  456. package/dist/frontend/lowering/builtins/fs-glob.js +3 -3
  457. package/dist/frontend/lowering/builtins/fs-glob.js.map +1 -1
  458. package/dist/frontend/lowering/builtins/fs-streams.js +10 -11
  459. package/dist/frontend/lowering/builtins/fs-streams.js.map +1 -1
  460. package/dist/frontend/lowering/builtins/hash-stream.d.ts +12 -0
  461. package/dist/frontend/lowering/builtins/hash-stream.js +80 -0
  462. package/dist/frontend/lowering/builtins/hash-stream.js.map +1 -0
  463. package/dist/frontend/lowering/builtins/ipc.js +45 -8
  464. package/dist/frontend/lowering/builtins/ipc.js.map +1 -1
  465. package/dist/frontend/lowering/builtins/json.js +232 -24
  466. package/dist/frontend/lowering/builtins/json.js.map +1 -1
  467. package/dist/frontend/lowering/builtins/key-object.js +4 -4
  468. package/dist/frontend/lowering/builtins/key-object.js.map +1 -1
  469. package/dist/frontend/lowering/builtins/module-bindings.d.ts +8 -0
  470. package/dist/frontend/lowering/builtins/module-bindings.js +71 -22
  471. package/dist/frontend/lowering/builtins/module-bindings.js.map +1 -1
  472. package/dist/frontend/lowering/builtins/module-calls.js +67 -46
  473. package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
  474. package/dist/frontend/lowering/builtins/module-resolution.d.ts +4 -3
  475. package/dist/frontend/lowering/builtins/module-resolution.js +24 -23
  476. package/dist/frontend/lowering/builtins/module-resolution.js.map +1 -1
  477. package/dist/frontend/lowering/builtins/navigator.d.ts +13 -0
  478. package/dist/frontend/lowering/builtins/navigator.js +40 -0
  479. package/dist/frontend/lowering/builtins/navigator.js.map +1 -0
  480. package/dist/frontend/lowering/builtins/net-address.d.ts +19 -0
  481. package/dist/frontend/lowering/builtins/net-address.js +156 -0
  482. package/dist/frontend/lowering/builtins/net-address.js.map +1 -0
  483. package/dist/frontend/lowering/builtins/numbers.js +25 -9
  484. package/dist/frontend/lowering/builtins/numbers.js.map +1 -1
  485. package/dist/frontend/lowering/builtins/operating-system.d.ts +4 -0
  486. package/dist/frontend/lowering/builtins/operating-system.js +25 -12
  487. package/dist/frontend/lowering/builtins/operating-system.js.map +1 -1
  488. package/dist/frontend/lowering/builtins/performance.d.ts +12 -0
  489. package/dist/frontend/lowering/builtins/performance.js +259 -8
  490. package/dist/frontend/lowering/builtins/performance.js.map +1 -1
  491. package/dist/frontend/lowering/builtins/process.d.ts +32 -1
  492. package/dist/frontend/lowering/builtins/process.js +468 -99
  493. package/dist/frontend/lowering/builtins/process.js.map +1 -1
  494. package/dist/frontend/lowering/builtins/promises.d.ts +5 -1
  495. package/dist/frontend/lowering/builtins/promises.js +326 -43
  496. package/dist/frontend/lowering/builtins/promises.js.map +1 -1
  497. package/dist/frontend/lowering/builtins/promisify-callback.d.ts +37 -0
  498. package/dist/frontend/lowering/builtins/promisify-callback.js +320 -0
  499. package/dist/frontend/lowering/builtins/promisify-callback.js.map +1 -0
  500. package/dist/frontend/lowering/builtins/properties.js +37 -1
  501. package/dist/frontend/lowering/builtins/properties.js.map +1 -1
  502. package/dist/frontend/lowering/builtins/querystring.js +14 -14
  503. package/dist/frontend/lowering/builtins/querystring.js.map +1 -1
  504. package/dist/frontend/lowering/builtins/readline.d.ts +55 -13
  505. package/dist/frontend/lowering/builtins/readline.js +931 -69
  506. package/dist/frontend/lowering/builtins/readline.js.map +1 -1
  507. package/dist/frontend/lowering/builtins/receiver-types.js +3 -5
  508. package/dist/frontend/lowering/builtins/receiver-types.js.map +1 -1
  509. package/dist/frontend/lowering/builtins/reflection.js +16 -14
  510. package/dist/frontend/lowering/builtins/reflection.js.map +1 -1
  511. package/dist/frontend/lowering/builtins/runtime-constructor.d.ts +26 -0
  512. package/dist/frontend/lowering/builtins/runtime-constructor.js +165 -0
  513. package/dist/frontend/lowering/builtins/runtime-constructor.js.map +1 -0
  514. package/dist/frontend/lowering/builtins/strings.js +101 -12
  515. package/dist/frontend/lowering/builtins/strings.js.map +1 -1
  516. package/dist/frontend/lowering/builtins/text-codecs.js +41 -38
  517. package/dist/frontend/lowering/builtins/text-codecs.js.map +1 -1
  518. package/dist/frontend/lowering/builtins/timers.js +75 -30
  519. package/dist/frontend/lowering/builtins/timers.js.map +1 -1
  520. package/dist/frontend/lowering/builtins/url.d.ts +3 -0
  521. package/dist/frontend/lowering/builtins/url.js +120 -17
  522. package/dist/frontend/lowering/builtins/url.js.map +1 -1
  523. package/dist/frontend/lowering/builtins/util-types.js +20 -4
  524. package/dist/frontend/lowering/builtins/util-types.js.map +1 -1
  525. package/dist/frontend/lowering/builtins/v8.d.ts +11 -0
  526. package/dist/frontend/lowering/builtins/v8.js +105 -0
  527. package/dist/frontend/lowering/builtins/v8.js.map +1 -0
  528. package/dist/frontend/lowering/builtins/webassembly.d.ts +33 -0
  529. package/dist/frontend/lowering/builtins/webassembly.js +388 -0
  530. package/dist/frontend/lowering/builtins/webassembly.js.map +1 -0
  531. package/dist/frontend/lowering/builtins/webcrypto.d.ts +20 -0
  532. package/dist/frontend/lowering/builtins/webcrypto.js +112 -0
  533. package/dist/frontend/lowering/builtins/webcrypto.js.map +1 -0
  534. package/dist/frontend/lowering/builtins/workers.d.ts +16 -0
  535. package/dist/frontend/lowering/builtins/workers.js +246 -3
  536. package/dist/frontend/lowering/builtins/workers.js.map +1 -1
  537. package/dist/frontend/lowering/call-arguments.js +69 -14
  538. package/dist/frontend/lowering/call-arguments.js.map +1 -1
  539. package/dist/frontend/lowering/call-signatures.d.ts +19 -1
  540. package/dist/frontend/lowering/call-signatures.js +254 -47
  541. package/dist/frontend/lowering/call-signatures.js.map +1 -1
  542. package/dist/frontend/lowering/checked-promise-all.d.ts +3 -0
  543. package/dist/frontend/lowering/checked-promise-all.js +1 -1
  544. package/dist/frontend/lowering/checked-promise-all.js.map +1 -1
  545. package/dist/frontend/lowering/cjs-exports-object.d.ts +53 -0
  546. package/dist/frontend/lowering/cjs-exports-object.js +528 -0
  547. package/dist/frontend/lowering/cjs-exports-object.js.map +1 -0
  548. package/dist/frontend/lowering/cjs-inline-require.d.ts +86 -0
  549. package/dist/frontend/lowering/cjs-inline-require.js +314 -0
  550. package/dist/frontend/lowering/cjs-inline-require.js.map +1 -0
  551. package/dist/frontend/lowering/cjs-tsc-interop.d.ts +28 -0
  552. package/dist/frontend/lowering/cjs-tsc-interop.js +208 -0
  553. package/dist/frontend/lowering/cjs-tsc-interop.js.map +1 -0
  554. package/dist/frontend/lowering/class-attributes.d.ts +19 -0
  555. package/dist/frontend/lowering/class-attributes.js +378 -0
  556. package/dist/frontend/lowering/class-attributes.js.map +1 -0
  557. package/dist/frontend/lowering/class-callbacks.d.ts +3 -1
  558. package/dist/frontend/lowering/class-callbacks.js +21 -10
  559. package/dist/frontend/lowering/class-callbacks.js.map +1 -1
  560. package/dist/frontend/lowering/class-construction.js +49 -4
  561. package/dist/frontend/lowering/class-construction.js.map +1 -1
  562. package/dist/frontend/lowering/class-descriptors.d.ts +2 -0
  563. package/dist/frontend/lowering/class-descriptors.js +8 -8
  564. package/dist/frontend/lowering/class-descriptors.js.map +1 -1
  565. package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +64 -0
  566. package/dist/frontend/lowering/class-dynamic-dispatch.js +1115 -89
  567. package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
  568. package/dist/frontend/lowering/class-instance-constructor.js +1 -1
  569. package/dist/frontend/lowering/class-instance-constructor.js.map +1 -1
  570. package/dist/frontend/lowering/class-iterables.d.ts +11 -0
  571. package/dist/frontend/lowering/class-iterables.js +31 -0
  572. package/dist/frontend/lowering/class-iterables.js.map +1 -0
  573. package/dist/frontend/lowering/class-method-mutations.js +73 -35
  574. package/dist/frontend/lowering/class-method-mutations.js.map +1 -1
  575. package/dist/frontend/lowering/class-method-values.js +56 -10
  576. package/dist/frontend/lowering/class-method-values.js.map +1 -1
  577. package/dist/frontend/lowering/class-protocol-dispatch.js +24 -22
  578. package/dist/frontend/lowering/class-protocol-dispatch.js.map +1 -1
  579. package/dist/frontend/lowering/class-protocols.d.ts +55 -0
  580. package/dist/frontend/lowering/class-protocols.js +738 -22
  581. package/dist/frontend/lowering/class-protocols.js.map +1 -1
  582. package/dist/frontend/lowering/class-prototypes.d.ts +6 -0
  583. package/dist/frontend/lowering/class-prototypes.js +80 -18
  584. package/dist/frontend/lowering/class-prototypes.js.map +1 -1
  585. package/dist/frontend/lowering/class-runtime-statics.js +1 -1
  586. package/dist/frontend/lowering/class-runtime-statics.js.map +1 -1
  587. package/dist/frontend/lowering/class-static-data.js +2 -2
  588. package/dist/frontend/lowering/class-static-data.js.map +1 -1
  589. package/dist/frontend/lowering/class-to-primitive.d.ts +25 -0
  590. package/dist/frontend/lowering/class-to-primitive.js +261 -0
  591. package/dist/frontend/lowering/class-to-primitive.js.map +1 -0
  592. package/dist/frontend/lowering/class-unions.d.ts +25 -0
  593. package/dist/frontend/lowering/class-unions.js +102 -1
  594. package/dist/frontend/lowering/class-unions.js.map +1 -1
  595. package/dist/frontend/lowering/code-generation.d.ts +14 -0
  596. package/dist/frontend/lowering/code-generation.js +127 -0
  597. package/dist/frontend/lowering/code-generation.js.map +1 -0
  598. package/dist/frontend/lowering/coercions/function-adapters.d.ts +16 -2
  599. package/dist/frontend/lowering/coercions/function-adapters.js +145 -3
  600. package/dist/frontend/lowering/coercions/function-adapters.js.map +1 -1
  601. package/dist/frontend/lowering/coercions/structural-plans.js +25 -3
  602. package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -1
  603. package/dist/frontend/lowering/coercions/structural.js +35 -3
  604. package/dist/frontend/lowering/coercions/structural.js.map +1 -1
  605. package/dist/frontend/lowering/coercions/unions.d.ts +15 -0
  606. package/dist/frontend/lowering/coercions/unions.js +57 -1
  607. package/dist/frontend/lowering/coercions/unions.js.map +1 -1
  608. package/dist/frontend/lowering/collection-ingestion.js +2 -2
  609. package/dist/frontend/lowering/collection-ingestion.js.map +1 -1
  610. package/dist/frontend/lowering/collection-narrowing.js +2 -4
  611. package/dist/frontend/lowering/collection-narrowing.js.map +1 -1
  612. package/dist/frontend/lowering/construction-escapes.js +8 -8
  613. package/dist/frontend/lowering/construction-escapes.js.map +1 -1
  614. package/dist/frontend/lowering/construction-escapes.test.js +4 -4
  615. package/dist/frontend/lowering/construction-escapes.test.js.map +1 -1
  616. package/dist/frontend/lowering/constructor-returns.d.ts +61 -0
  617. package/dist/frontend/lowering/constructor-returns.js +477 -0
  618. package/dist/frontend/lowering/constructor-returns.js.map +1 -0
  619. package/dist/frontend/lowering/containers/array-callback-call.js +1 -1
  620. package/dist/frontend/lowering/containers/array-callback-call.js.map +1 -1
  621. package/dist/frontend/lowering/containers/array-callbacks.d.ts +9 -0
  622. package/dist/frontend/lowering/containers/array-callbacks.js +266 -100
  623. package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
  624. package/dist/frontend/lowering/containers/array-concat.js +1 -1
  625. package/dist/frontend/lowering/containers/array-concat.js.map +1 -1
  626. package/dist/frontend/lowering/containers/array-construction.d.ts +0 -1
  627. package/dist/frontend/lowering/containers/array-construction.js +51 -13
  628. package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
  629. package/dist/frontend/lowering/containers/array-from-async.d.ts +19 -0
  630. package/dist/frontend/lowering/containers/array-from-async.js +427 -0
  631. package/dist/frontend/lowering/containers/array-from-async.js.map +1 -0
  632. package/dist/frontend/lowering/containers/array-methods.js +89 -77
  633. package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
  634. package/dist/frontend/lowering/containers/array-pipelines.js +1 -0
  635. package/dist/frontend/lowering/containers/array-pipelines.js.map +1 -1
  636. package/dist/frontend/lowering/containers/bytes.js +161 -101
  637. package/dist/frontend/lowering/containers/bytes.js.map +1 -1
  638. package/dist/frontend/lowering/containers/callback-arguments.d.ts +9 -1
  639. package/dist/frontend/lowering/containers/callback-arguments.js +55 -5
  640. package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -1
  641. package/dist/frontend/lowering/containers/collection-grouping.d.ts +7 -8
  642. package/dist/frontend/lowering/containers/collection-grouping.js +219 -27
  643. package/dist/frontend/lowering/containers/collection-grouping.js.map +1 -1
  644. package/dist/frontend/lowering/containers/collection-methods.js +81 -48
  645. package/dist/frontend/lowering/containers/collection-methods.js.map +1 -1
  646. package/dist/frontend/lowering/containers/dynamic-receivers.js +1 -1
  647. package/dist/frontend/lowering/containers/dynamic-receivers.js.map +1 -1
  648. package/dist/frontend/lowering/containers/exec-result-uses.js +2 -2
  649. package/dist/frontend/lowering/containers/exec-result-uses.js.map +1 -1
  650. package/dist/frontend/lowering/containers/for-of.d.ts +6 -0
  651. package/dist/frontend/lowering/containers/for-of.js +19 -19
  652. package/dist/frontend/lowering/containers/for-of.js.map +1 -1
  653. package/dist/frontend/lowering/containers/indexed-objects.js +142 -57
  654. package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
  655. package/dist/frontend/lowering/containers/iterator-helpers.d.ts +53 -4
  656. package/dist/frontend/lowering/containers/iterator-helpers.js +1581 -462
  657. package/dist/frontend/lowering/containers/iterator-helpers.js.map +1 -1
  658. package/dist/frontend/lowering/containers/match-row-uses.d.ts +17 -0
  659. package/dist/frontend/lowering/containers/match-row-uses.js +264 -0
  660. package/dist/frontend/lowering/containers/match-row-uses.js.map +1 -0
  661. package/dist/frontend/lowering/containers/string-and-regexp.d.ts +14 -0
  662. package/dist/frontend/lowering/containers/string-and-regexp.js +419 -30
  663. package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
  664. package/dist/frontend/lowering/containers/string-replacement.js +1 -1
  665. package/dist/frontend/lowering/containers/string-replacement.js.map +1 -1
  666. package/dist/frontend/lowering/cycle-initialization.d.ts +4 -0
  667. package/dist/frontend/lowering/cycle-initialization.js +39 -0
  668. package/dist/frontend/lowering/cycle-initialization.js.map +1 -1
  669. package/dist/frontend/lowering/deferred-module-initializers.js +47 -43
  670. package/dist/frontend/lowering/deferred-module-initializers.js.map +1 -1
  671. package/dist/frontend/lowering/devirtualize.d.ts +1 -1
  672. package/dist/frontend/lowering/devirtualize.js +27 -7
  673. package/dist/frontend/lowering/devirtualize.js.map +1 -1
  674. package/dist/frontend/lowering/divergences.d.ts +0 -5
  675. package/dist/frontend/lowering/divergences.js +238 -128
  676. package/dist/frontend/lowering/divergences.js.map +1 -1
  677. package/dist/frontend/lowering/dyn-streams.d.ts +25 -0
  678. package/dist/frontend/lowering/dyn-streams.js +257 -0
  679. package/dist/frontend/lowering/dyn-streams.js.map +1 -0
  680. package/dist/frontend/lowering/error-methods.js +4 -1
  681. package/dist/frontend/lowering/error-methods.js.map +1 -1
  682. package/dist/frontend/lowering/error-name-order.d.ts +19 -0
  683. package/dist/frontend/lowering/error-name-order.js +93 -0
  684. package/dist/frontend/lowering/error-name-order.js.map +1 -0
  685. package/dist/frontend/lowering/expressions/array-literals.d.ts +21 -0
  686. package/dist/frontend/lowering/expressions/array-literals.js +703 -0
  687. package/dist/frontend/lowering/expressions/array-literals.js.map +1 -0
  688. package/dist/frontend/lowering/expressions/binary.d.ts +35 -0
  689. package/dist/frontend/lowering/expressions/binary.js +2483 -0
  690. package/dist/frontend/lowering/expressions/binary.js.map +1 -0
  691. package/dist/frontend/lowering/expressions/element-access.d.ts +31 -0
  692. package/dist/frontend/lowering/expressions/element-access.js +1797 -0
  693. package/dist/frontend/lowering/expressions/element-access.js.map +1 -0
  694. package/dist/frontend/lowering/expressions/evaluation-safety.js +4 -3
  695. package/dist/frontend/lowering/expressions/evaluation-safety.js.map +1 -1
  696. package/dist/frontend/lowering/expressions/hosted-narrowing.d.ts +38 -0
  697. package/dist/frontend/lowering/expressions/hosted-narrowing.js +160 -0
  698. package/dist/frontend/lowering/expressions/hosted-narrowing.js.map +1 -0
  699. package/dist/frontend/lowering/expressions/identifiers.d.ts +4 -0
  700. package/dist/frontend/lowering/expressions/identifiers.js +830 -0
  701. package/dist/frontend/lowering/expressions/identifiers.js.map +1 -0
  702. package/dist/frontend/lowering/expressions/keyed-field-targets.d.ts +40 -0
  703. package/dist/frontend/lowering/expressions/keyed-field-targets.js +226 -0
  704. package/dist/frontend/lowering/expressions/keyed-field-targets.js.map +1 -0
  705. package/dist/frontend/lowering/expressions/narrowing.d.ts +37 -0
  706. package/dist/frontend/lowering/expressions/narrowing.js +1322 -0
  707. package/dist/frontend/lowering/expressions/narrowing.js.map +1 -0
  708. package/dist/frontend/lowering/expressions/native-proxy.js +4 -4
  709. package/dist/frontend/lowering/expressions/native-proxy.js.map +1 -1
  710. package/dist/frontend/lowering/expressions/nullish-assignment.js +45 -0
  711. package/dist/frontend/lowering/expressions/nullish-assignment.js.map +1 -1
  712. package/dist/frontend/lowering/expressions/object-literals.d.ts +10 -0
  713. package/dist/frontend/lowering/expressions/object-literals.js +253 -85
  714. package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
  715. package/dist/frontend/lowering/expressions/optional-chains.d.ts +2 -1
  716. package/dist/frontend/lowering/expressions/optional-chains.js +91 -14
  717. package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
  718. package/dist/frontend/lowering/expressions/property-access.d.ts +110 -0
  719. package/dist/frontend/lowering/expressions/property-access.js +3544 -0
  720. package/dist/frontend/lowering/expressions/property-access.js.map +1 -0
  721. package/dist/frontend/lowering/expressions/relational.d.ts +28 -0
  722. package/dist/frontend/lowering/expressions/relational.js +1679 -0
  723. package/dist/frontend/lowering/expressions/relational.js.map +1 -0
  724. package/dist/frontend/lowering/expressions/typeof.d.ts +22 -0
  725. package/dist/frontend/lowering/expressions/typeof.js +538 -0
  726. package/dist/frontend/lowering/expressions/typeof.js.map +1 -0
  727. package/dist/frontend/lowering/expressions/union-fields.js +1 -1
  728. package/dist/frontend/lowering/expressions/union-fields.js.map +1 -1
  729. package/dist/frontend/lowering/expressions/updates.d.ts +21 -0
  730. package/dist/frontend/lowering/expressions/updates.js +780 -0
  731. package/dist/frontend/lowering/expressions/updates.js.map +1 -0
  732. package/dist/frontend/lowering/function-context.d.ts +10 -0
  733. package/dist/frontend/lowering/function-context.js +11 -1
  734. package/dist/frontend/lowering/function-context.js.map +1 -1
  735. package/dist/frontend/lowering/function-returns.js +52 -28
  736. package/dist/frontend/lowering/function-returns.js.map +1 -1
  737. package/dist/frontend/lowering/general-streams.d.ts +25 -0
  738. package/dist/frontend/lowering/general-streams.js +108 -0
  739. package/dist/frontend/lowering/general-streams.js.map +1 -0
  740. package/dist/frontend/lowering/generator-dynamic-dispatch.d.ts +7 -0
  741. package/dist/frontend/lowering/generator-dynamic-dispatch.js +172 -69
  742. package/dist/frontend/lowering/generator-dynamic-dispatch.js.map +1 -1
  743. package/dist/frontend/lowering/generic-functions.d.ts +39 -0
  744. package/dist/frontend/lowering/generic-functions.js +393 -75
  745. package/dist/frontend/lowering/generic-functions.js.map +1 -1
  746. package/dist/frontend/lowering/import-meta.js +2 -2
  747. package/dist/frontend/lowering/import-meta.js.map +1 -1
  748. package/dist/frontend/lowering/intern-tables.js +10 -9
  749. package/dist/frontend/lowering/intern-tables.js.map +1 -1
  750. package/dist/frontend/lowering/iterator-adapters.d.ts +19 -0
  751. package/dist/frontend/lowering/iterator-adapters.js +331 -3
  752. package/dist/frontend/lowering/iterator-adapters.js.map +1 -1
  753. package/dist/frontend/lowering/js-class-fields.d.ts +28 -0
  754. package/dist/frontend/lowering/js-class-fields.js +170 -0
  755. package/dist/frontend/lowering/js-class-fields.js.map +1 -0
  756. package/dist/frontend/lowering/js-dynamic-objects.d.ts +15 -0
  757. package/dist/frontend/lowering/js-dynamic-objects.js +299 -0
  758. package/dist/frontend/lowering/js-dynamic-objects.js.map +1 -0
  759. package/dist/frontend/lowering/js-dynamic-objects.test.d.ts +1 -0
  760. package/dist/frontend/lowering/js-dynamic-objects.test.js +35 -0
  761. package/dist/frontend/lowering/js-dynamic-objects.test.js.map +1 -0
  762. package/dist/frontend/lowering/json-require.d.ts +22 -0
  763. package/dist/frontend/lowering/json-require.js +131 -0
  764. package/dist/frontend/lowering/json-require.js.map +1 -0
  765. package/dist/frontend/lowering/key-order-witness.d.ts +44 -0
  766. package/dist/frontend/lowering/key-order-witness.js +641 -0
  767. package/dist/frontend/lowering/key-order-witness.js.map +1 -0
  768. package/dist/frontend/lowering/key-order-witness.test.d.ts +1 -0
  769. package/dist/frontend/lowering/key-order-witness.test.js +239 -0
  770. package/dist/frontend/lowering/key-order-witness.test.js.map +1 -0
  771. package/dist/frontend/lowering/lifetime-regions.js +7 -7
  772. package/dist/frontend/lowering/lifetime-regions.js.map +1 -1
  773. package/dist/frontend/lowering/lower-assert.js +61 -60
  774. package/dist/frontend/lowering/lower-assert.js.map +1 -1
  775. package/dist/frontend/lowering/lower-async-iteration.d.ts +10 -1
  776. package/dist/frontend/lowering/lower-async-iteration.js +34 -6
  777. package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
  778. package/dist/frontend/lowering/lower-builtin-values.d.ts +5 -0
  779. package/dist/frontend/lowering/lower-builtin-values.js +32 -3
  780. package/dist/frontend/lowering/lower-builtin-values.js.map +1 -1
  781. package/dist/frontend/lowering/lower-calls.js +1298 -452
  782. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  783. package/dist/frontend/lowering/lower-classes.d.ts +50 -3
  784. package/dist/frontend/lowering/lower-classes.js +1499 -456
  785. package/dist/frontend/lowering/lower-classes.js.map +1 -1
  786. package/dist/frontend/lowering/lower-comptime.d.ts +4 -2
  787. package/dist/frontend/lowering/lower-comptime.js +111 -13
  788. package/dist/frontend/lowering/lower-comptime.js.map +1 -1
  789. package/dist/frontend/lowering/lower-console.js +13 -11
  790. package/dist/frontend/lowering/lower-console.js.map +1 -1
  791. package/dist/frontend/lowering/lower-dgram.d.ts +10 -0
  792. package/dist/frontend/lowering/lower-dgram.js +179 -8
  793. package/dist/frontend/lowering/lower-dgram.js.map +1 -1
  794. package/dist/frontend/lowering/lower-enums.js +113 -14
  795. package/dist/frontend/lowering/lower-enums.js.map +1 -1
  796. package/dist/frontend/lowering/lower-event-emitter.d.ts +16 -7
  797. package/dist/frontend/lowering/lower-event-emitter.js +268 -71
  798. package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
  799. package/dist/frontend/lowering/lower-event-target.js +2 -2
  800. package/dist/frontend/lowering/lower-event-target.js.map +1 -1
  801. package/dist/frontend/lowering/lower-expando.js +17 -13
  802. package/dist/frontend/lowering/lower-expando.js.map +1 -1
  803. package/dist/frontend/lowering/lower-exprs.d.ts +188 -186
  804. package/dist/frontend/lowering/lower-exprs.js +1493 -12407
  805. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  806. package/dist/frontend/lowering/lower-functions.js +68 -22
  807. package/dist/frontend/lowering/lower-functions.js.map +1 -1
  808. package/dist/frontend/lowering/lower-generators.d.ts +6 -0
  809. package/dist/frontend/lowering/lower-generators.js +29 -16
  810. package/dist/frontend/lowering/lower-generators.js.map +1 -1
  811. package/dist/frontend/lowering/lower-global-value.js +5 -1
  812. package/dist/frontend/lowering/lower-global-value.js.map +1 -1
  813. package/dist/frontend/lowering/lower-inspect.js +354 -99
  814. package/dist/frontend/lowering/lower-inspect.js.map +1 -1
  815. package/dist/frontend/lowering/lower-mixins.js +23 -20
  816. package/dist/frontend/lowering/lower-mixins.js.map +1 -1
  817. package/dist/frontend/lowering/lower-mock.d.ts +19 -2
  818. package/dist/frontend/lowering/lower-mock.js +557 -74
  819. package/dist/frontend/lowering/lower-mock.js.map +1 -1
  820. package/dist/frontend/lowering/lower-modules.js +268 -61
  821. package/dist/frontend/lowering/lower-modules.js.map +1 -1
  822. package/dist/frontend/lowering/lower-namespaces.d.ts +6 -0
  823. package/dist/frontend/lowering/lower-namespaces.js +45 -33
  824. package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
  825. package/dist/frontend/lowering/lower-node-module.d.ts +16 -0
  826. package/dist/frontend/lowering/lower-node-module.js +147 -14
  827. package/dist/frontend/lowering/lower-node-module.js.map +1 -1
  828. package/dist/frontend/lowering/lower-server.d.ts +6 -6
  829. package/dist/frontend/lowering/lower-server.js +638 -105
  830. package/dist/frontend/lowering/lower-server.js.map +1 -1
  831. package/dist/frontend/lowering/lower-stdlib.d.ts +4 -0
  832. package/dist/frontend/lowering/lower-stdlib.js +151 -109
  833. package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
  834. package/dist/frontend/lowering/lower-stmts.d.ts +28 -2
  835. package/dist/frontend/lowering/lower-stmts.js +1589 -398
  836. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  837. package/dist/frontend/lowering/lower-stream.d.ts +4 -3
  838. package/dist/frontend/lowering/lower-stream.js +714 -75
  839. package/dist/frontend/lowering/lower-stream.js.map +1 -1
  840. package/dist/frontend/lowering/lower-test.d.ts +3 -0
  841. package/dist/frontend/lowering/lower-test.js +574 -100
  842. package/dist/frontend/lowering/lower-test.js.map +1 -1
  843. package/dist/frontend/lowering/lower-timers.js +80 -32
  844. package/dist/frontend/lowering/lower-timers.js.map +1 -1
  845. package/dist/frontend/lowering/lower-url.js +1 -1
  846. package/dist/frontend/lowering/lower-url.js.map +1 -1
  847. package/dist/frontend/lowering/lowerer.d.ts +409 -26
  848. package/dist/frontend/lowering/lowerer.js +1918 -305
  849. package/dist/frontend/lowering/lowerer.js.map +1 -1
  850. package/dist/frontend/lowering/lowerer.test.js +10 -4
  851. package/dist/frontend/lowering/lowerer.test.js.map +1 -1
  852. package/dist/frontend/lowering/maybe-promise.d.ts +46 -0
  853. package/dist/frontend/lowering/maybe-promise.js +249 -0
  854. package/dist/frontend/lowering/maybe-promise.js.map +1 -0
  855. package/dist/frontend/lowering/module-member-this.d.ts +3 -0
  856. package/dist/frontend/lowering/module-member-this.js +262 -0
  857. package/dist/frontend/lowering/module-member-this.js.map +1 -0
  858. package/dist/frontend/lowering/module-namespace-elements.js +1 -1
  859. package/dist/frontend/lowering/module-namespace-elements.js.map +1 -1
  860. package/dist/frontend/lowering/nan-coded-reads.d.ts +3 -0
  861. package/dist/frontend/lowering/nan-coded-reads.js +45 -32
  862. package/dist/frontend/lowering/nan-coded-reads.js.map +1 -1
  863. package/dist/frontend/lowering/narrowing-stability.d.ts +18 -3
  864. package/dist/frontend/lowering/narrowing-stability.js +104 -32
  865. package/dist/frontend/lowering/narrowing-stability.js.map +1 -1
  866. package/dist/frontend/lowering/native-ffi.js +11 -11
  867. package/dist/frontend/lowering/native-ffi.js.map +1 -1
  868. package/dist/frontend/lowering/null-prototype.d.ts +13 -0
  869. package/dist/frontend/lowering/null-prototype.js +33 -0
  870. package/dist/frontend/lowering/null-prototype.js.map +1 -0
  871. package/dist/frontend/lowering/object-factory-new.js +6 -8
  872. package/dist/frontend/lowering/object-factory-new.js.map +1 -1
  873. package/dist/frontend/lowering/private-brands.d.ts +46 -0
  874. package/dist/frontend/lowering/private-brands.js +265 -0
  875. package/dist/frontend/lowering/private-brands.js.map +1 -0
  876. package/dist/frontend/lowering/promise-executor-adapter.d.ts +11 -0
  877. package/dist/frontend/lowering/promise-executor-adapter.js +87 -0
  878. package/dist/frontend/lowering/promise-executor-adapter.js.map +1 -0
  879. package/dist/frontend/lowering/require-initialization.d.ts +32 -0
  880. package/dist/frontend/lowering/require-initialization.js +246 -0
  881. package/dist/frontend/lowering/require-initialization.js.map +1 -0
  882. package/dist/frontend/lowering/runtime-optional-bounds.js +7 -7
  883. package/dist/frontend/lowering/runtime-optional-bounds.js.map +1 -1
  884. package/dist/frontend/lowering/runtime-optional-elements.js +12 -12
  885. package/dist/frontend/lowering/runtime-optional-elements.js.map +1 -1
  886. package/dist/frontend/lowering/runtime-optional-guards.js +10 -10
  887. package/dist/frontend/lowering/runtime-optional-guards.js.map +1 -1
  888. package/dist/frontend/lowering/runtime-optional-guards.test.js +1 -1
  889. package/dist/frontend/lowering/runtime-optional-guards.test.js.map +1 -1
  890. package/dist/frontend/lowering/runtime-optional-ownership.js +10 -9
  891. package/dist/frontend/lowering/runtime-optional-ownership.js.map +1 -1
  892. package/dist/frontend/lowering/runtime-optional-provenance.js +2 -2
  893. package/dist/frontend/lowering/runtime-optional-provenance.js.map +1 -1
  894. package/dist/frontend/lowering/runtime-optional-records.d.ts +35 -0
  895. package/dist/frontend/lowering/runtime-optional-records.js +205 -32
  896. package/dist/frontend/lowering/runtime-optional-records.js.map +1 -1
  897. package/dist/frontend/lowering/runtime-optional-records.test.js +19 -1
  898. package/dist/frontend/lowering/runtime-optional-records.test.js.map +1 -1
  899. package/dist/frontend/lowering/sanitize-class-types.test.js +2 -2
  900. package/dist/frontend/lowering/split-consumers.js +4 -4
  901. package/dist/frontend/lowering/split-consumers.js.map +1 -1
  902. package/dist/frontend/lowering/static-function-names.d.ts +28 -0
  903. package/dist/frontend/lowering/static-function-names.js +212 -0
  904. package/dist/frontend/lowering/static-function-names.js.map +1 -0
  905. package/dist/frontend/lowering/static-this.js +6 -6
  906. package/dist/frontend/lowering/static-this.js.map +1 -1
  907. package/dist/frontend/lowering/strict-mode.d.ts +5 -0
  908. package/dist/frontend/lowering/strict-mode.js +31 -0
  909. package/dist/frontend/lowering/strict-mode.js.map +1 -0
  910. package/dist/frontend/lowering/string-index-bounds.js +10 -10
  911. package/dist/frontend/lowering/string-index-bounds.js.map +1 -1
  912. package/dist/frontend/lowering/string-index.d.ts +12 -0
  913. package/dist/frontend/lowering/string-index.js +72 -1
  914. package/dist/frontend/lowering/string-index.js.map +1 -1
  915. package/dist/frontend/lowering/surfaces.d.ts +15 -6
  916. package/dist/frontend/lowering/surfaces.js +278 -45
  917. package/dist/frontend/lowering/surfaces.js.map +1 -1
  918. package/dist/frontend/lowering/symbol-fields.d.ts +7 -0
  919. package/dist/frontend/lowering/symbol-fields.js +204 -36
  920. package/dist/frontend/lowering/symbol-fields.js.map +1 -1
  921. package/dist/frontend/lowering/symbol-methods.d.ts +2 -1
  922. package/dist/frontend/lowering/symbol-methods.js +24 -6
  923. package/dist/frontend/lowering/symbol-methods.js.map +1 -1
  924. package/dist/frontend/lowering/thread-slots.d.ts +13 -0
  925. package/dist/frontend/lowering/thread-slots.js +208 -0
  926. package/dist/frontend/lowering/thread-slots.js.map +1 -0
  927. package/dist/frontend/lowering/typed-arguments.d.ts +74 -0
  928. package/dist/frontend/lowering/typed-arguments.js +472 -0
  929. package/dist/frontend/lowering/typed-arguments.js.map +1 -0
  930. package/dist/frontend/lowering/union-retag.d.ts +8 -0
  931. package/dist/frontend/lowering/union-retag.js +27 -0
  932. package/dist/frontend/lowering/union-retag.js.map +1 -1
  933. package/dist/frontend/lowering/union-retag.test.js +24 -1
  934. package/dist/frontend/lowering/union-retag.test.js.map +1 -1
  935. package/dist/frontend/lowering/var-hoisting.js +6 -6
  936. package/dist/frontend/lowering/var-hoisting.js.map +1 -1
  937. package/dist/frontend/lowering/width-lift.d.ts +4 -0
  938. package/dist/frontend/mock-shapes.d.ts +5 -0
  939. package/dist/frontend/mock-shapes.js +39 -7
  940. package/dist/frontend/mock-shapes.js.map +1 -1
  941. package/dist/frontend/module-source-candidates.js +1 -1
  942. package/dist/frontend/module-source-candidates.js.map +1 -1
  943. package/dist/frontend/module-source-candidates.test.js +2 -1
  944. package/dist/frontend/module-source-candidates.test.js.map +1 -1
  945. package/dist/frontend/module-syntax.js +8 -8
  946. package/dist/frontend/module-syntax.js.map +1 -1
  947. package/dist/frontend/npm-static-bundled-chunks.d.ts +51 -0
  948. package/dist/frontend/npm-static-bundled-chunks.js +810 -0
  949. package/dist/frontend/npm-static-bundled-chunks.js.map +1 -0
  950. package/dist/frontend/npm-static-bundled-chunks.test.d.ts +1 -0
  951. package/dist/frontend/npm-static-bundled-chunks.test.js +287 -0
  952. package/dist/frontend/npm-static-bundled-chunks.test.js.map +1 -0
  953. package/dist/frontend/npm-static-bundled-cjs.js +24 -23
  954. package/dist/frontend/npm-static-bundled-cjs.js.map +1 -1
  955. package/dist/frontend/npm-static-bundled-esm.d.ts +9 -0
  956. package/dist/frontend/npm-static-bundled-esm.js +768 -0
  957. package/dist/frontend/npm-static-bundled-esm.js.map +1 -0
  958. package/dist/frontend/npm-static-bundled-esm.test.d.ts +1 -0
  959. package/dist/frontend/npm-static-bundled-esm.test.js +207 -0
  960. package/dist/frontend/npm-static-bundled-esm.test.js.map +1 -0
  961. package/dist/frontend/npm-static-cjs-exports-alias.d.ts +2 -0
  962. package/dist/frontend/npm-static-cjs-exports-alias.js +186 -0
  963. package/dist/frontend/npm-static-cjs-exports-alias.js.map +1 -0
  964. package/dist/frontend/npm-static-cjs-exports-alias.test.d.ts +1 -0
  965. package/dist/frontend/npm-static-cjs-exports-alias.test.js +73 -0
  966. package/dist/frontend/npm-static-cjs-exports-alias.test.js.map +1 -0
  967. package/dist/frontend/npm-static-cjs-exports-var.d.ts +2 -0
  968. package/dist/frontend/npm-static-cjs-exports-var.js +236 -0
  969. package/dist/frontend/npm-static-cjs-exports-var.js.map +1 -0
  970. package/dist/frontend/npm-static-declaration-syntax.js +102 -101
  971. package/dist/frontend/npm-static-declaration-syntax.js.map +1 -1
  972. package/dist/frontend/npm-static-prune.js +36 -24
  973. package/dist/frontend/npm-static-prune.js.map +1 -1
  974. package/dist/frontend/npm-static-rewrite-host.d.ts +4 -1
  975. package/dist/frontend/npm-static-rewrite-host.js +14 -3
  976. package/dist/frontend/npm-static-rewrite-host.js.map +1 -1
  977. package/dist/frontend/npm-static-rewrite-syntax.d.ts +19 -0
  978. package/dist/frontend/npm-static-rewrite-syntax.js +274 -101
  979. package/dist/frontend/npm-static-rewrite-syntax.js.map +1 -1
  980. package/dist/frontend/npm-static-subtyping.js +7 -9
  981. package/dist/frontend/npm-static-subtyping.js.map +1 -1
  982. package/dist/frontend/npm-static.d.ts +17 -1
  983. package/dist/frontend/npm-static.js +167 -16
  984. package/dist/frontend/npm-static.js.map +1 -1
  985. package/dist/frontend/npm-static.test.js +22 -1
  986. package/dist/frontend/npm-static.test.js.map +1 -1
  987. package/dist/frontend/pipeline.js +164 -26
  988. package/dist/frontend/pipeline.js.map +1 -1
  989. package/dist/frontend/pipeline.test.js +22 -1
  990. package/dist/frontend/pipeline.test.js.map +1 -1
  991. package/dist/frontend/program-analysis.d.ts +6 -1
  992. package/dist/frontend/program-analysis.js +7 -0
  993. package/dist/frontend/program-analysis.js.map +1 -1
  994. package/dist/frontend/program.d.ts +92 -2
  995. package/dist/frontend/program.js +1557 -254
  996. package/dist/frontend/program.js.map +1 -1
  997. package/dist/frontend/program.test.js +76 -6
  998. package/dist/frontend/program.test.js.map +1 -1
  999. package/dist/frontend/resolve.js +36 -2
  1000. package/dist/frontend/resolve.js.map +1 -1
  1001. package/dist/frontend/resolve.test.js +49 -0
  1002. package/dist/frontend/resolve.test.js.map +1 -1
  1003. package/dist/frontend/services.d.ts +20 -1
  1004. package/dist/frontend/services.js +40 -3
  1005. package/dist/frontend/services.js.map +1 -1
  1006. package/dist/frontend/services.test.js +2 -1
  1007. package/dist/frontend/services.test.js.map +1 -1
  1008. package/dist/frontend/threads-import.js +1 -1
  1009. package/dist/frontend/threads-import.js.map +1 -1
  1010. package/dist/frontend/tier-analysis.d.ts +71 -0
  1011. package/dist/frontend/tier-analysis.js +522 -0
  1012. package/dist/frontend/tier-analysis.js.map +1 -0
  1013. package/dist/frontend/ts7/api-conformance.d.ts +234 -0
  1014. package/dist/frontend/ts7/api-conformance.js +7 -0
  1015. package/dist/frontend/ts7/api-conformance.js.map +1 -0
  1016. package/dist/frontend/ts7/ast-guards.generated.js +2 -1
  1017. package/dist/frontend/ts7/ast-guards.generated.js.map +1 -1
  1018. package/dist/frontend/ts7/ast-node.d.ts +47 -25
  1019. package/dist/frontend/ts7/ast-node.js +64 -18
  1020. package/dist/frontend/ts7/ast-node.js.map +1 -1
  1021. package/dist/frontend/ts7/ast-node.test.js +36 -12
  1022. package/dist/frontend/ts7/ast-node.test.js.map +1 -1
  1023. package/dist/frontend/ts7/ast-types.d.ts +10 -3
  1024. package/dist/frontend/ts7/ast-types.generated.d.ts +39 -39
  1025. package/dist/frontend/ts7/ast.d.ts +1 -0
  1026. package/dist/frontend/ts7/ast.js +3 -2
  1027. package/dist/frontend/ts7/ast.js.map +1 -1
  1028. package/dist/frontend/ts7/checker-backend.d.ts +23 -0
  1029. package/dist/frontend/ts7/checker-backend.js +88 -0
  1030. package/dist/frontend/ts7/checker-backend.js.map +1 -0
  1031. package/dist/frontend/ts7/checker-backend.test.d.ts +1 -0
  1032. package/dist/frontend/ts7/checker-backend.test.js +63 -0
  1033. package/dist/frontend/ts7/checker-backend.test.js.map +1 -0
  1034. package/dist/frontend/ts7/checker-cache.d.ts +0 -3
  1035. package/dist/frontend/ts7/checker-cache.js +0 -6
  1036. package/dist/frontend/ts7/checker-cache.js.map +1 -1
  1037. package/dist/frontend/ts7/checker.d.ts +18 -11
  1038. package/dist/frontend/ts7/checker.js +42 -55
  1039. package/dist/frontend/ts7/checker.js.map +1 -1
  1040. package/dist/frontend/ts7/checker.test.js +10 -7
  1041. package/dist/frontend/ts7/checker.test.js.map +1 -1
  1042. package/dist/frontend/ts7/diagnostic.d.ts +19 -0
  1043. package/dist/frontend/ts7/diagnostic.js +22 -0
  1044. package/dist/frontend/ts7/diagnostic.js.map +1 -0
  1045. package/dist/frontend/ts7/node-functions.d.ts +8 -0
  1046. package/dist/frontend/ts7/node-functions.js +18 -0
  1047. package/dist/frontend/ts7/node-functions.js.map +1 -0
  1048. package/dist/frontend/ts7/program-host.d.ts +5 -1
  1049. package/dist/frontend/ts7/program-host.js +12 -0
  1050. package/dist/frontend/ts7/program-host.js.map +1 -1
  1051. package/dist/frontend/ts7/rpc-api.d.ts +5 -1
  1052. package/dist/frontend/ts7/rpc-api.js +8 -1
  1053. package/dist/frontend/ts7/rpc-api.js.map +1 -1
  1054. package/dist/frontend/ts7/semantic-checker.d.ts +13 -6
  1055. package/dist/frontend/ts7/semantic-checker.js +26 -8
  1056. package/dist/frontend/ts7/semantic-checker.js.map +1 -1
  1057. package/dist/frontend/ts7/semantic-checker.test.js +12 -9
  1058. package/dist/frontend/ts7/semantic-checker.test.js.map +1 -1
  1059. package/dist/frontend/ts7/semantic-model.d.ts +54 -24
  1060. package/dist/frontend/ts7/semantic-model.js +88 -16
  1061. package/dist/frontend/ts7/semantic-model.js.map +1 -1
  1062. package/dist/frontend/ts7/semantic-model.test.js +4 -4
  1063. package/dist/frontend/ts7/semantic-model.test.js.map +1 -1
  1064. package/dist/frontend/ts7/semantic-types.d.ts +7 -3
  1065. package/dist/frontend/ts7/semantic-types.js +1 -1
  1066. package/dist/frontend/ts7/semantic-types.js.map +1 -1
  1067. package/dist/frontend/ts7/session.d.ts +11 -11
  1068. package/dist/frontend/ts7/session.js +8 -5
  1069. package/dist/frontend/ts7/session.js.map +1 -1
  1070. package/dist/frontend/ts7/session.test.js +9 -5
  1071. package/dist/frontend/ts7/session.test.js.map +1 -1
  1072. package/dist/frontend/ts7/source-parser.d.ts +6 -2
  1073. package/dist/frontend/ts7/source-parser.js +24 -3
  1074. package/dist/frontend/ts7/source-parser.js.map +1 -1
  1075. package/dist/frontend/ts7/source-parser.test.js +38 -17
  1076. package/dist/frontend/ts7/source-parser.test.js.map +1 -1
  1077. package/dist/frontend/type-mapper.d.ts +122 -2
  1078. package/dist/frontend/type-mapper.js +2612 -695
  1079. package/dist/frontend/type-mapper.js.map +1 -1
  1080. package/dist/frontend/type-only-imports.d.ts +28 -0
  1081. package/dist/frontend/type-only-imports.js +122 -0
  1082. package/dist/frontend/type-only-imports.js.map +1 -0
  1083. package/dist/frontend/worker-target.js +8 -8
  1084. package/dist/frontend/worker-target.js.map +1 -1
  1085. package/dist/index.d.ts +3 -1
  1086. package/dist/index.js +47 -10
  1087. package/dist/index.js.map +1 -1
  1088. package/dist/ir/analysis.js +4 -2
  1089. package/dist/ir/analysis.js.map +1 -1
  1090. package/dist/ir/api.d.ts +1 -1
  1091. package/dist/ir/api.js +1 -1
  1092. package/dist/ir/api.js.map +1 -1
  1093. package/dist/ir/array-length-stability.d.ts +30 -0
  1094. package/dist/ir/array-length-stability.js +236 -0
  1095. package/dist/ir/array-length-stability.js.map +1 -0
  1096. package/dist/ir/array-length-stability.test.d.ts +1 -0
  1097. package/dist/ir/array-length-stability.test.js +113 -0
  1098. package/dist/ir/array-length-stability.test.js.map +1 -0
  1099. package/dist/ir/build.d.ts +2 -2
  1100. package/dist/ir/build.js +1 -1
  1101. package/dist/ir/build.js.map +1 -1
  1102. package/dist/ir/builtin-effects.js +139 -0
  1103. package/dist/ir/builtin-effects.js.map +1 -1
  1104. package/dist/ir/builtin-signatures.d.ts +1 -1
  1105. package/dist/ir/builtin-signatures.js +655 -25
  1106. package/dist/ir/builtin-signatures.js.map +1 -1
  1107. package/dist/ir/byte-numbers.js +3 -0
  1108. package/dist/ir/byte-numbers.js.map +1 -1
  1109. package/dist/ir/callback-specialization.d.ts +37 -0
  1110. package/dist/ir/callback-specialization.js +459 -0
  1111. package/dist/ir/callback-specialization.js.map +1 -0
  1112. package/dist/ir/callback-specialization.test.d.ts +1 -0
  1113. package/dist/ir/callback-specialization.test.js +208 -0
  1114. package/dist/ir/callback-specialization.test.js.map +1 -0
  1115. package/dist/ir/capture-values.d.ts +0 -1
  1116. package/dist/ir/capture-values.js +51 -40
  1117. package/dist/ir/capture-values.js.map +1 -1
  1118. package/dist/ir/constant-globals.test.js +1 -1
  1119. package/dist/ir/constant-tables.test.js +1 -1
  1120. package/dist/ir/field-values.test.js +1 -1
  1121. package/dist/ir/final-fields.test.js +1 -1
  1122. package/dist/ir/function-references.test.js +10 -1
  1123. package/dist/ir/function-references.test.js.map +1 -1
  1124. package/dist/ir/init-only-globals.test.js +1 -1
  1125. package/dist/ir/initializer-bindings.test.js +1 -1
  1126. package/dist/ir/int32-slots.d.ts +14 -0
  1127. package/dist/ir/int32-slots.js +119 -14
  1128. package/dist/ir/int32-slots.js.map +1 -1
  1129. package/dist/ir/int32-slots.test.js +29 -1
  1130. package/dist/ir/int32-slots.test.js.map +1 -1
  1131. package/dist/ir/integer-loop-facts.d.ts +16 -6
  1132. package/dist/ir/integer-loop-facts.js +143 -38
  1133. package/dist/ir/integer-loop-facts.js.map +1 -1
  1134. package/dist/ir/integer-loops.d.ts +1 -1
  1135. package/dist/ir/integer-loops.js +39 -9
  1136. package/dist/ir/integer-loops.js.map +1 -1
  1137. package/dist/ir/integer-loops.test.js +104 -0
  1138. package/dist/ir/integer-loops.test.js.map +1 -1
  1139. package/dist/ir/integer-ranges.d.ts +3 -0
  1140. package/dist/ir/integer-ranges.js +4 -6
  1141. package/dist/ir/integer-ranges.js.map +1 -1
  1142. package/dist/ir/integer-ranges.test.js +142 -1
  1143. package/dist/ir/integer-ranges.test.js.map +1 -1
  1144. package/dist/ir/intrinsic-signatures.js +6 -0
  1145. package/dist/ir/intrinsic-signatures.js.map +1 -1
  1146. package/dist/ir/ir.d.ts +234 -58
  1147. package/dist/ir/ir.js +123 -12
  1148. package/dist/ir/ir.js.map +1 -1
  1149. package/dist/ir/ir.test.js +10 -0
  1150. package/dist/ir/ir.test.js.map +1 -1
  1151. package/dist/ir/jsval.d.ts +8 -0
  1152. package/dist/ir/jsval.js +365 -0
  1153. package/dist/ir/jsval.js.map +1 -0
  1154. package/dist/ir/jsval.test.d.ts +1 -0
  1155. package/dist/ir/jsval.test.js +239 -0
  1156. package/dist/ir/jsval.test.js.map +1 -0
  1157. package/dist/ir/runtime-features.d.ts +150 -33
  1158. package/dist/ir/runtime-features.js +672 -339
  1159. package/dist/ir/runtime-features.js.map +1 -1
  1160. package/dist/ir/runtime-features.test.js +62 -0
  1161. package/dist/ir/runtime-features.test.js.map +1 -1
  1162. package/dist/ir/scalar-records.test.js +1 -1
  1163. package/dist/ir/self-captures.d.ts +33 -0
  1164. package/dist/ir/self-captures.js +245 -0
  1165. package/dist/ir/self-captures.js.map +1 -0
  1166. package/dist/ir/self-captures.test.d.ts +1 -0
  1167. package/dist/ir/self-captures.test.js +135 -0
  1168. package/dist/ir/self-captures.test.js.map +1 -0
  1169. package/dist/ir/serialize.d.ts +1 -1
  1170. package/dist/ir/serialize.js +7 -4
  1171. package/dist/ir/serialize.js.map +1 -1
  1172. package/dist/ir/tiers.d.ts +26 -0
  1173. package/dist/ir/tiers.js +101 -0
  1174. package/dist/ir/tiers.js.map +1 -0
  1175. package/dist/ir/tiers.test.d.ts +1 -0
  1176. package/dist/ir/tiers.test.js +140 -0
  1177. package/dist/ir/tiers.test.js.map +1 -0
  1178. package/dist/ir/traverse.js +107 -94
  1179. package/dist/ir/traverse.js.map +1 -1
  1180. package/dist/ir/traverse.test.js +33 -30
  1181. package/dist/ir/traverse.test.js.map +1 -1
  1182. package/dist/ir/unshare.js +65 -3
  1183. package/dist/ir/unshare.js.map +1 -1
  1184. package/dist/ir/unshare.test.js +1 -1
  1185. package/dist/ir/validate.js +220 -71
  1186. package/dist/ir/validate.js.map +1 -1
  1187. package/dist/ir/validate.test.js +64 -9
  1188. package/dist/ir/validate.test.js.map +1 -1
  1189. package/dist/library/fence-eval.test.js +1 -1
  1190. package/dist/library/int-infer.test.js +4 -4
  1191. package/dist/library/ir-policy.js +18 -0
  1192. package/dist/library/ir-policy.js.map +1 -1
  1193. package/dist/library/library-cache.d.ts +1 -0
  1194. package/dist/library/library-cache.js.map +1 -1
  1195. package/dist/library/library-cache.test.js +5 -5
  1196. package/dist/library/library-profile.d.ts +4 -4
  1197. package/dist/library/library-profile.js +35 -7
  1198. package/dist/library/library-profile.js.map +1 -1
  1199. package/dist/library/prepare.js +13 -1
  1200. package/dist/library/prepare.js.map +1 -1
  1201. package/dist/native/cli.js +5 -0
  1202. package/dist/native/cli.js.map +1 -1
  1203. package/dist/native/compiler.js +2 -2
  1204. package/dist/native/compiler.js.map +1 -1
  1205. package/dist/native/compiler.test.js +2 -2
  1206. package/dist/native/prepare.js +7 -0
  1207. package/dist/native/prepare.js.map +1 -1
  1208. package/dist/native/sanitizer.test.js +12 -0
  1209. package/dist/native/sanitizer.test.js.map +1 -1
  1210. package/dist/native/toolchain.d.ts +2 -0
  1211. package/dist/native/toolchain.js +10 -1
  1212. package/dist/native/toolchain.js.map +1 -1
  1213. package/dist/native/toolchain.test.js +39 -1
  1214. package/dist/native/toolchain.test.js.map +1 -1
  1215. package/dist/startup-cache.d.ts +1 -0
  1216. package/dist/startup-cache.js +1 -0
  1217. package/dist/startup-cache.js.map +1 -1
  1218. package/dist/wasm/base64.d.ts +5 -0
  1219. package/dist/wasm/base64.js +62 -0
  1220. package/dist/wasm/base64.js.map +1 -0
  1221. package/dist/wasm/binary.d.ts +36 -0
  1222. package/dist/wasm/binary.js +1976 -0
  1223. package/dist/wasm/binary.js.map +1 -0
  1224. package/dist/wasm/binary.test.d.ts +1 -0
  1225. package/dist/wasm/binary.test.js +190 -0
  1226. package/dist/wasm/binary.test.js.map +1 -0
  1227. package/dist/wasm/discover.d.ts +38 -0
  1228. package/dist/wasm/discover.js +377 -0
  1229. package/dist/wasm/discover.js.map +1 -0
  1230. package/dist/wasm/discover.test.d.ts +1 -0
  1231. package/dist/wasm/discover.test.js +24 -0
  1232. package/dist/wasm/discover.test.js.map +1 -0
  1233. package/dist/wasm/module.d.ts +151 -0
  1234. package/dist/wasm/module.js +575 -0
  1235. package/dist/wasm/module.js.map +1 -0
  1236. package/dist/wasm/translate.d.ts +48 -0
  1237. package/dist/wasm/translate.js +2129 -0
  1238. package/dist/wasm/translate.js.map +1 -0
  1239. package/dist/wasm/translate.test.d.ts +1 -0
  1240. package/dist/wasm/translate.test.js +207 -0
  1241. package/dist/wasm/translate.test.js.map +1 -0
  1242. package/package.json +21 -20
  1243. package/surface-manifest.json +332 -36
@@ -14,18 +14,24 @@ import { packageNameOfPath, probeNodeImportRefusal } from "../npm.js";
14
14
  import { isNpmStaticPackage } from "../npm-static.js";
15
15
  import { isJsSourceFileName } from "../tsc-codes.js";
16
16
  import { isRelativeSpecifier } from "../workspace-registry.js";
17
- import { canonicalBuiltinModule, cjsExportAssignmentOf, cjsExportDiscardReason, entryPackageFilePredicate, isCjsJsFile, isJsSourceFile, isRequireStatement, locOf, makeCycleAdmission, orderedImportsOf, resolveImport, resolveNpmImport, } from "../program.js";
17
+ import { canonicalBuiltinModule, cjsExportAssignmentOf, cjsExportChainOf, cjsVoidInitPreambleReals, cjsExportDiscardReason, cjsExportTargetLiteral, entryPackageFilePredicate, isCjsJsFile, isJsSourceFile, isRequireStatement, locOf, makeCycleAdmission, orderedImportsOf, requireSpecOf, resolveImport, resolveNpmImport, } from "../program.js";
18
18
  import { markCycleEarlyBindings, withClassInitFlag, withCycleInitFlags, } from "./cycle-initialization.js";
19
+ import { markRequireEarlyBindings } from "./require-initialization.js";
20
+ import { cjsTableMethodEntry, inlineProgramRequireOf, nestedCjsExportAssignmentsOf, requireNestedPatternsOf, } from "./cjs-inline-require.js";
21
+ import { isDeadTscHelperDecl, tscInteropBindingOfDecl } from "./cjs-tsc-interop.js";
22
+ import { collectJsonRequires, isJsonRequireDecl } from "./json-require.js";
19
23
  import { invalidJsonModuleDiag, unsupportedPackageImportDiag, } from "../../diagnostics/diagnostic.js";
20
24
  import { BOOL, CAUGHT, DYN, F64, RUNTIME_ERROR_CLASSES, STRING, VOID, arrayOf, canBoxFuncIntoDyn, canConvertToDyn, isUnitType, } from "../../ir/ir.js";
21
25
  import { ENTRY_NAME, PoisonError, boundIdentifiersOf, dynFallbackType, newFnCtx, staticImportNamespaceType, } from "./lowerer.js";
22
26
  import { isNativeFfiRequire, builtinMemberRequireDecl, builtinNamespaceDestructureModuleOf, createRequireBindingDecl, createRequireNamespaceDecl, createRequireProgramModuleDecl, } from "./builtins/module-bindings.js";
23
27
  import { isPromisifyCall, registerBuiltinCallableAlias } from "./builtins/callable-aliases.js";
28
+ import { registerBuiltinClassAlias } from "./builtins/class-values.js";
24
29
  import { stripTypeCasts } from "./builtins/arguments.js";
30
+ import { isWebCryptoMemberType } from "./builtins/webcrypto.js";
25
31
  import { bindingContextualGenericFnNodeOf, bindingGenericFnAliasInfoOf, bindingGenericFnInfoOf, bindingGenericFnNodeOf, implicitLocalFnInfoOf, implicitLocalFnNodeOf, } from "./generic-functions.js";
26
32
  import { bindingNeverReassigned, deadUnmappableBinding, nullishGenericBindingUnitOf, } from "./binding-analysis.js";
27
33
  import { funcTypeFromParamShapes, registerOverloadedCallableAlias } from "./call-signatures.js";
28
- import { jsBindingHasOpenWrites, hasJsTypeAnnotation, isVarDeclared, numericIteratorSourceOf, provenanceElidedConstDecl, } from "./lower-stmts.js";
34
+ import { jsBindingHasOpenWrites, hasJsTypeAnnotation, isVarDeclared, numericIteratorSourceOf, provenanceElidedConstDecl, stdlibBufferVarAlias, } from "./lower-stmts.js";
29
35
  import { objectFactoryGlobalType } from "./object-factory-new.js";
30
36
  import { streamClassAliasDecl } from "./lower-stream.js";
31
37
  import { isAssertClassNew } from "./assert-instances.js";
@@ -42,6 +48,8 @@ import { forkTargetPaths } from "../fork-target.js";
42
48
  import { workerTargetPaths } from "../worker-target.js";
43
49
  import { isNativeProxyInitializer } from "./expressions/native-proxy.js";
44
50
  import { handleEventReaderPrelude } from "./lower-event-target.js";
51
+ import { cjsAccessorSnapshotStores, jsHoldsDynObject } from "./lower-exprs.js";
52
+ import { keptIdentityAssertion } from "./assertion-identity.js";
45
53
  /** Program modules selected by statically resolved child_process.fork()
46
54
  * calls join the compiled graph without becoming startup dependencies of
47
55
  * the parent entry. Their guarded init functions are selected by %main only
@@ -113,7 +121,7 @@ export function splitFiles(lowerer) {
113
121
  const files = lowerer.moduleOrder.length > 0 ? lowerer.moduleOrder : [lowerer.entry];
114
122
  return files.map((sf) => {
115
123
  const fp = { sf, fnDecls: [], classDecls: [], topStmts: [] };
116
- for (const stmt of sf.statements) {
124
+ for (const stmt of sf.statements.nodes) {
117
125
  if (ts.isFunctionDeclaration(stmt))
118
126
  fp.fnDecls.push(stmt);
119
127
  else if (ts.isClassDeclaration(stmt))
@@ -162,9 +170,9 @@ function dynamicProgramImportsOf(program, sf) {
162
170
  ts.walkPreorder(sf, (node) => {
163
171
  if (ts.isCallExpression(node) &&
164
172
  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);
173
+ node.arguments.nodes[0] !== undefined &&
174
+ ts.isStringLiteralLike(node.arguments.nodes[0])) {
175
+ const dep = dynamicImportProgramTargetOf(program, sf, node.arguments.nodes[0].text);
168
176
  if (dep && !seen.has(dep)) {
169
177
  seen.add(dep);
170
178
  out.push(dep);
@@ -233,7 +241,7 @@ export function collectProgram(lowerer, parts) {
233
241
  const computed = new Set();
234
242
  for (const fp of parts)
235
243
  for (const decl of fp.classDecls) {
236
- const heritage = decl.heritageClauses?.find((clause) => clause.token === ts.SyntaxKind.ExtendsKeyword)?.types[0]?.expression;
244
+ const heritage = decl.heritageClauses?.nodes.find((clause) => clause.token === ts.SyntaxKind.ExtendsKeyword)?.types?.nodes[0]?.expression;
237
245
  if (heritage && ts.isCallExpression(heritage))
238
246
  computed.add(decl);
239
247
  }
@@ -249,7 +257,7 @@ export function collectProgram(lowerer, parts) {
249
257
  for (const decl of fp.classDecls) {
250
258
  if (computed.has(decl))
251
259
  continue;
252
- const heritage = decl.heritageClauses?.find((clause) => clause.token === ts.SyntaxKind.ExtendsKeyword)?.types[0]?.expression;
260
+ const heritage = decl.heritageClauses?.nodes.find((clause) => clause.token === ts.SyntaxKind.ExtendsKeyword)?.types?.nodes[0]?.expression;
253
261
  const base = heritage && ts.isIdentifier(heritage) ? lowerer.resolveValueSymbol(heritage) : undefined;
254
262
  if (!base || !computedSymbols.has(base))
255
263
  continue;
@@ -286,6 +294,7 @@ export function collectProgram(lowerer, parts) {
286
294
  lowerer.collectGlobals(fp.sf, fp.topStmts);
287
295
  lowerer.collectNpmImports(parts);
288
296
  lowerer.collectJsonImports(parts);
297
+ collectJsonRequires(lowerer, parts);
289
298
  }
290
299
  finally {
291
300
  lowerer.diagSink = null;
@@ -296,6 +305,7 @@ export function collectProgram(lowerer, parts) {
296
305
  lowerer.collectGlobals(fp.sf, fp.topStmts);
297
306
  lowerer.collectNpmImports(parts);
298
307
  lowerer.collectJsonImports(parts);
308
+ collectJsonRequires(lowerer, parts);
299
309
  }
300
310
  for (const decl of computed) {
301
311
  const symbol = declSymbolOf(lowerer, decl);
@@ -304,7 +314,7 @@ export function collectProgram(lowerer, parts) {
304
314
  const previousSink = lowerer.diagSink;
305
315
  const deferred = [];
306
316
  lowerer.diagSink = deferred;
307
- const expression = decl.heritageClauses.find((clause) => clause.token === ts.SyntaxKind.ExtendsKeyword).types[0].expression;
317
+ const expression = decl.heritageClauses.nodes.find((clause) => clause.token === ts.SyntaxKind.ExtendsKeyword).types.nodes[0].expression;
308
318
  const context = newFnCtx(false, null, null, DYN);
309
319
  lowerer.fnStack.push(context);
310
320
  try {
@@ -376,11 +386,12 @@ export function collectProgram(lowerer, parts) {
376
386
  lowerer.collecting = wasCollecting;
377
387
  }
378
388
  markCycleEarlyBindings(lowerer);
389
+ markRequireEarlyBindings(lowerer);
379
390
  }
380
391
  export function collectNpmImports(lowerer, parts) {
381
392
  const entryPackageFile = entryPackageFilePredicate(lowerer.entry.fileName);
382
393
  for (const fp of parts) {
383
- for (const stmt of fp.sf.statements) {
394
+ for (const stmt of fp.sf.statements.nodes) {
384
395
  // NAMED re-exports from npm packages (`export { isUrl } from
385
396
  // "url-or-path"`): use the same package bindings as direct imports.
386
397
  const reexport = ts.isExportDeclaration(stmt) &&
@@ -389,7 +400,7 @@ export function collectNpmImports(lowerer, parts) {
389
400
  ts.isStringLiteral(stmt.moduleSpecifier) &&
390
401
  stmt.exportClause !== undefined &&
391
402
  ts.isNamedExports(stmt.exportClause) &&
392
- stmt.exportClause.elements.some((e) => !e.isTypeOnly) &&
403
+ stmt.exportClause.elements.nodes.some((e) => !e.isTypeOnly) &&
393
404
  !stmt.moduleSpecifier.text.startsWith("#")
394
405
  ? stmt.exportClause
395
406
  : null;
@@ -407,7 +418,7 @@ export function collectNpmImports(lowerer, parts) {
407
418
  if (clause?.namedBindings &&
408
419
  ts.isNamedImports(clause.namedBindings) &&
409
420
  !clause.name &&
410
- clause.namedBindings.elements.every((e) => e.isTypeOnly)) {
421
+ clause.namedBindings.elements.nodes.every((e) => e.isTypeOnly)) {
411
422
  continue;
412
423
  }
413
424
  const spec = specNode.text;
@@ -492,10 +503,10 @@ function collectDynamicImports(lowerer, sf) {
492
503
  ts.walkPreorder(sf, (node) => {
493
504
  if (ts.isCallExpression(node) &&
494
505
  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;
506
+ node.arguments.nodes.length >= 1 &&
507
+ node.arguments.nodes[0] !== undefined &&
508
+ ts.isStringLiteralLike(node.arguments.nodes[0])) {
509
+ const spec = node.arguments.nodes[0].text;
499
510
  if (lowerer.externalTypes.has(spec)) {
500
511
  return undefined;
501
512
  }
@@ -506,11 +517,9 @@ function collectDynamicImports(lowerer, sf) {
506
517
  // module has no runtime namespace object — the per-site fence
507
518
  // says so. Only non-declaration source files count; a sibling
508
519
  // .d.mts typing shipped JS is the EMBED case, not this one.
509
- const modSym = lowerer.checker.getSymbolAtLocation(node.arguments[0]);
520
+ const modSym = lowerer.checker.getSymbolAtLocation(node.arguments.nodes[0]);
510
521
  const ownModule = modSym !== undefined &&
511
- lowerer.checker
512
- .declarationsOf(modSym)
513
- .some((d) => ts.isSourceFile(d) && !d.isDeclarationFile);
522
+ modSym.declarations.some((d) => ts.isSourceFile(d) && !d.isDeclarationFile);
514
523
  const builtin = canonicalBuiltinModule(spec);
515
524
  const res = ownModule
516
525
  ? { kind: "program-module" }
@@ -540,7 +549,7 @@ function collectDynamicImports(lowerer, sf) {
540
549
  * and kept .json files out of the module order. */
541
550
  export function collectJsonImports(lowerer, parts) {
542
551
  for (const fp of parts) {
543
- for (const stmt of fp.sf.statements) {
552
+ for (const stmt of fp.sf.statements.nodes) {
544
553
  if (!ts.isImportDeclaration(stmt) || !ts.isStringLiteral(stmt.moduleSpecifier))
545
554
  continue;
546
555
  const clause = stmt.importClause;
@@ -550,7 +559,9 @@ export function collectJsonImports(lowerer, parts) {
550
559
  if (!nameSym || !(nameSym.flags & ts.SymbolFlags.Alias))
551
560
  continue;
552
561
  const target = lowerer.checker.getAliasedSymbol(nameSym);
553
- const jsonSf = lowerer.checker.declarationsOf(target)[0]?.getSourceFile();
562
+ const jsonSf = target.declarations.length === 0
563
+ ? undefined
564
+ : ts.getSourceFileOfNode(target.declarations[0]);
554
565
  if (!jsonSf || !jsonSf.fileName.endsWith(".json"))
555
566
  continue;
556
567
  try {
@@ -694,6 +705,7 @@ export function moduleArtifacts(lowerer, functions) {
694
705
  case "recordKeyGet":
695
706
  case "recordOvfKeys":
696
707
  case "recordOvfHas":
708
+ case "recordNullProto":
697
709
  case "recordHas":
698
710
  visitShape(node.shapeId);
699
711
  break;
@@ -727,6 +739,14 @@ export function moduleArtifacts(lowerer, functions) {
727
739
  valueInstanceOfRoots.add(root.def.name);
728
740
  }
729
741
  break;
742
+ case "libCall":
743
+ // The general stream representation's child stdio read bridges
744
+ // through the runtime install that boxes both stream classes.
745
+ if (node.fn === "child.stdioStream") {
746
+ visitClass("%Readable");
747
+ visitClass("%Writable");
748
+ }
749
+ break;
730
750
  case "dynFrom":
731
751
  if (boxedChild(node.value.type)) {
732
752
  // A generic child can expose native stdio without importing stream.
@@ -918,7 +938,7 @@ function checkedGlobalReference(lowerer, expression) {
918
938
  !ts.isIdentifier(expression.expression))
919
939
  return false;
920
940
  const root = lowerer.checker.getSymbolAtLocation(expression.expression);
921
- const namespace = root && lowerer.checker.declarationsOf(root).some(ts.isNamespaceImport);
941
+ const namespace = root && root.declarations.some(ts.isNamespaceImport);
922
942
  return ((namespace || lowerer.cjsLocalModuleBindingOf(expression.expression)) &&
923
943
  lowerer.globalOf(expression.name)?.type.kind === "dyn");
924
944
  }
@@ -936,8 +956,8 @@ function jsDynHoldableInitializer(lowerer, init) {
936
956
  ts.isPropertyAccessExpression(e.expression) &&
937
957
  ["freeze", "seal", "preventExtensions"].includes(e.expression.name.text) &&
938
958
  lowerer.stdlibGlobalMember(e.expression, "Object") !== null &&
939
- e.arguments[0] &&
940
- ts.isArrayLiteralExpression(e.arguments[0]))
959
+ e.arguments.nodes[0] &&
960
+ ts.isArrayLiteralExpression(e.arguments.nodes[0]))
941
961
  return true;
942
962
  // The built-in Array constructor can create an evolving array whose
943
963
  // inferred element type has no native mapping. Its checked reference
@@ -1000,8 +1020,8 @@ function jsDynHoldableInitializer(lowerer, init) {
1000
1020
  return true;
1001
1021
  }
1002
1022
  if ((ts.isFunctionExpression(e) || ts.isArrowFunction(e)) &&
1003
- !e.typeParameters?.length &&
1004
- isJsSourceFile(e.getSourceFile()))
1023
+ !e.typeParameters?.nodes.length &&
1024
+ isJsSourceFile(ts.getSourceFileOfNode(e)))
1005
1025
  return true;
1006
1026
  if (ts.isIdentifier(e) || ts.isArrowFunction(e) || ts.isFunctionExpression(e)) {
1007
1027
  if (ts.isIdentifier(e)) {
@@ -1077,10 +1097,10 @@ export function collectGlobals(lowerer, sf, topStmts) {
1077
1097
  continue;
1078
1098
  if (symbol.flags & ts.SymbolFlags.Alias) {
1079
1099
  const target = lowerer.checker.getAliasedSymbol(symbol);
1080
- const vd = lowerer.checker.valueDeclarationOf(target);
1100
+ const vd = target.valueDeclaration;
1081
1101
  const mutableVar = vd !== undefined &&
1082
1102
  ts.isVariableDeclaration(vd) &&
1083
- !vd.getSourceFile().isDeclarationFile &&
1103
+ !ts.getSourceFileOfNode(vd).isDeclarationFile &&
1084
1104
  (ts.getCombinedNodeFlags(vd) & ts.NodeFlags.Const) === 0;
1085
1105
  // Immutable targets: alias plumbing — importers resolve to the
1086
1106
  // target's storage (the alias-resolved read IS the snapshot when
@@ -1103,7 +1123,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
1103
1123
  !isJsSourceFile(sf) &&
1104
1124
  inner.typeParameters === undefined &&
1105
1125
  (decoratorNodesOf(inner).length > 0 ||
1106
- inner.members.some((m) => decoratorNodesOf(m).length > 0)) &&
1126
+ inner.members.nodes.some((m) => decoratorNodesOf(m).length > 0)) &&
1107
1127
  guaranteedDecorationThrow(lowerer, inner) !== null) {
1108
1128
  continue;
1109
1129
  }
@@ -1190,7 +1210,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
1190
1210
  if (vG) {
1191
1211
  if (!vG.mutable) {
1192
1212
  lowerer.globalsBySymbol.set(symbol, vG);
1193
- for (const d of lowerer.checker.declarationsOf(symbol))
1213
+ for (const d of symbol.declarations)
1194
1214
  lowerer.globalsByDeclNode.set(d, vG);
1195
1215
  return;
1196
1216
  }
@@ -1201,7 +1221,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
1201
1221
  mutable: false,
1202
1222
  };
1203
1223
  lowerer.globalsBySymbol.set(symbol, g);
1204
- for (const d of lowerer.checker.declarationsOf(symbol))
1224
+ for (const d of symbol.declarations)
1205
1225
  lowerer.globalsByDeclNode.set(d, g);
1206
1226
  lowerer.globalsList.push(g);
1207
1227
  return;
@@ -1212,7 +1232,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
1212
1232
  lowerer.globalsBySymbol.set(symbol, g);
1213
1233
  // Importer aliases resolve to a DISTINCT late-bound symbol with
1214
1234
  // the same declaration — key the node too (globalOf's fallback).
1215
- for (const d of lowerer.checker.declarationsOf(symbol))
1235
+ for (const d of symbol.declarations)
1216
1236
  lowerer.globalsByDeclNode.set(d, g);
1217
1237
  lowerer.globalsList.push(g);
1218
1238
  }
@@ -1224,6 +1244,11 @@ export function collectGlobals(lowerer, sf, topStmts) {
1224
1244
  deferJsCollectionDiags(lowerer, sf, diagsBefore);
1225
1245
  }
1226
1246
  };
1247
+ // Export members assigned in VALUE position at the module's top
1248
+ // level (`const src = exports.src = []`) are exports too.
1249
+ for (const nested of nestedCjsExportAssignmentsOf(stmt, cjs?.expr)) {
1250
+ registerExport(nested.name, nested.name.text, nested.value);
1251
+ }
1227
1252
  if (cjs?.kind === "member" && ts.isIdentifier(cjs.name)) {
1228
1253
  // `exports.C = C` naming a CLASS declaration: alias plumbing —
1229
1254
  // no storage (a class VALUE global would fence for
@@ -1232,6 +1257,20 @@ export function collectGlobals(lowerer, sf, topStmts) {
1232
1257
  // applies unchanged.
1233
1258
  if (lowerer.cjsMemberExportClassSymbol(cjs.expr) !== null)
1234
1259
  continue;
1260
+ // A chain `exports.a = exports.b = value`: every member is an
1261
+ // export holding the chain's one value.
1262
+ const chain = cjsExportChainOf(cjs.expr);
1263
+ if (chain !== null) {
1264
+ for (const nameNode of chain.names)
1265
+ registerExport(nameNode, nameNode.text, chain.value);
1266
+ continue;
1267
+ }
1268
+ // A dropped tsc void-init preamble whose real assignment is such a
1269
+ // class alias registers nothing either: storage here would never
1270
+ // be assigned, and importers would read it instead of the class.
1271
+ const real = cjsVoidInitPreambleReals(cjs)?.get(cjs.name.text);
1272
+ if (real && lowerer.cjsMemberExportClassSymbol(real.expr) !== null)
1273
+ continue;
1235
1274
  registerExport(cjs.name, cjs.name.text, cjs.value);
1236
1275
  continue;
1237
1276
  }
@@ -1264,7 +1303,19 @@ export function collectGlobals(lowerer, sf, topStmts) {
1264
1303
  // statement lowering evaluates the call exactly once at its
1265
1304
  // source position and assigns that slot. Unmappable calls retain
1266
1305
  // the existing statement-level fence.
1267
- const factoryValued = ts.isCallExpression(rhs);
1306
+ // Any other computed value (`os.homedir || function () {…}`,
1307
+ // `cond ? a : b`, `new Registry()`, `ns.member`) is the same single
1308
+ // snapshot: Node stores whatever the expression produced. A
1309
+ // require() of a program module is not: the exporter re-exports
1310
+ // that module's exports, which requirers resolve through the
1311
+ // checker's alias (the statement lowers to the dep's %init).
1312
+ const factoryValued = !ts.isIdentifier(rhs) &&
1313
+ !ts.isClassExpression(rhs) &&
1314
+ !ts.isObjectLiteralExpression(rhs) &&
1315
+ !(requireSpecOf(rhs) !== null &&
1316
+ inlineProgramRequireOf(lowerer, rhs) !== null &&
1317
+ !sf.statements.nodes.some((s) => cjsExportAssignmentOf(s)?.kind === "member")) &&
1318
+ cjsExportTargetLiteral(rhs, sf) === null;
1268
1319
  if (cjsScalarLiteral(rhs) || fnValued || factoryValued) {
1269
1320
  const diagsBefore = lowerer.diags.length;
1270
1321
  try {
@@ -1295,7 +1346,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
1295
1346
  continue;
1296
1347
  }
1297
1348
  if (cjs?.kind === "table" && cjs.obj) {
1298
- for (const prop of cjs.obj.properties) {
1349
+ for (const prop of cjs.obj.properties.nodes) {
1299
1350
  if (ts.isShorthandPropertyAssignment(prop))
1300
1351
  continue; // alias plumbing
1301
1352
  if (ts.isPropertyAssignment(prop) && ts.isIdentifier(prop.initializer))
@@ -1303,6 +1354,11 @@ export function collectGlobals(lowerer, sf, topStmts) {
1303
1354
  if (ts.isPropertyAssignment(prop) && ts.isIdentifier(prop.name)) {
1304
1355
  registerExport(prop.name, prop.name.text, prop.initializer);
1305
1356
  }
1357
+ // A METHOD entry (`module.exports = { f(x) { … } }`) is an
1358
+ // expression-valued export whose value is the method's function.
1359
+ const method = cjsTableMethodEntry(prop);
1360
+ if (method !== null)
1361
+ registerExport(method.name, method.name.text, method.name);
1306
1362
  // other property forms fence in the statement lowering
1307
1363
  }
1308
1364
  continue;
@@ -1327,10 +1383,10 @@ export function collectGlobals(lowerer, sf, topStmts) {
1327
1383
  lowerer.globalsBySymbol.has(aliasSym))
1328
1384
  continue;
1329
1385
  const target = lowerer.checker.getAliasedSymbol(aliasSym);
1330
- const vd = lowerer.checker.valueDeclarationOf(target);
1386
+ const vd = target.valueDeclaration;
1331
1387
  const mutableVar = vd !== undefined &&
1332
1388
  ts.isVariableDeclaration(vd) &&
1333
- !vd.getSourceFile().isDeclarationFile &&
1389
+ !ts.getSourceFileOfNode(vd).isDeclarationFile &&
1334
1390
  (ts.getCombinedNodeFlags(vd) & ts.NodeFlags.Const) === 0;
1335
1391
  if (!mutableVar)
1336
1392
  continue;
@@ -1343,7 +1399,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
1343
1399
  if (type.kind === "void")
1344
1400
  lowerer.badType(stmt.name, lowerer.typeOf(stmt.name));
1345
1401
  const g = {
1346
- id: `%g.${tag}${nsPathPrefix(stmt)}%alias.${stmt.name.text}%${stmt.getStart()}`,
1402
+ id: `%g.${tag}${nsPathPrefix(stmt)}%alias.${stmt.name.text}%${ts.tokenStartOfNode(stmt)}`,
1347
1403
  name: stmt.name.text,
1348
1404
  type,
1349
1405
  mutable: false,
@@ -1368,6 +1424,14 @@ export function collectGlobals(lowerer, sf, topStmts) {
1368
1424
  collectNestedVarGlobals(lowerer, sf, stmt, tag);
1369
1425
  continue;
1370
1426
  }
1427
+ // tsc's interop bindings and its then-dead helper declarations own no
1428
+ // storage either (cjs-tsc-interop.ts).
1429
+ if (isJsSourceFile(sf) &&
1430
+ (isDeadTscHelperDecl(lowerer, stmt) ||
1431
+ (stmt.declarationList.declarations.nodes.length === 1 &&
1432
+ tscInteropBindingOfDecl(lowerer, stmt.declarationList.declarations.nodes[0]) !== null))) {
1433
+ continue;
1434
+ }
1371
1435
  // CommonJS require declarations are alias plumbing (preflight owns
1372
1436
  // the module edges; resolveValueSymbol routes reads through to the
1373
1437
  // exporter's declarations): no storage, and the statement lowers to
@@ -1377,12 +1441,45 @@ export function collectGlobals(lowerer, sf, topStmts) {
1377
1441
  // binding lower via the process surface.
1378
1442
  if (isRequireStatement(stmt) &&
1379
1443
  !(ts.isVariableStatement(stmt) &&
1380
- stmt.declarationList.declarations.some((decl) => isNativeFfiRequire(lowerer, decl.initializer)))) {
1444
+ stmt.declarationList.declarations.nodes.some((decl) => isNativeFfiRequire(lowerer, decl.initializer) || isJsonRequireDecl(lowerer, decl)))) {
1381
1445
  if (ts.isVariableStatement(stmt) && (stmt.declarationList.flags & ts.NodeFlags.Const) !== 0) {
1382
- for (const decl of stmt.declarationList.declarations) {
1446
+ for (const decl of stmt.declarationList.declarations.nodes) {
1383
1447
  stdlibGlobalAliasDecl(lowerer, decl.name, decl.initializer);
1384
1448
  }
1385
1449
  }
1450
+ // `const { codes: { ERR_X } } = require("./errors")`: the outer
1451
+ // keys stay alias plumbing, but a nested pattern destructures the
1452
+ // export's value at the require, so its bindings own storage like
1453
+ // any destructured declaration (lowerVarDeclarator assigns them).
1454
+ if (ts.isVariableStatement(stmt)) {
1455
+ const isLetList = (stmt.declarationList.flags & ts.NodeFlags.Let) !== 0 ||
1456
+ (stmt.declarationList.flags & ts.NodeFlags.BlockScoped) === 0;
1457
+ for (const decl of stmt.declarationList.declarations.nodes) {
1458
+ for (const element of requireNestedPatternsOf(decl)) {
1459
+ for (const nameNode of boundIdentifiersOf(element.name)) {
1460
+ const symbol = lowerer.checker.getSymbolAtLocation(nameNode);
1461
+ if (!symbol || lowerer.globalsBySymbol.has(symbol))
1462
+ continue;
1463
+ const mapped = lowerer.mapTypeOf(lowerer.typeOf(nameNode));
1464
+ const type = mapped && mapped.kind !== "void" ? mapped : DYN;
1465
+ const g = {
1466
+ id: `%g.${tag}${nameNode.text}`,
1467
+ name: nameNode.text,
1468
+ type,
1469
+ mutable: isLetList,
1470
+ source: bindingSource(nameNode),
1471
+ ...((type.kind === "func" || type.kind === "dyn") && !isVarDeclared(decl)
1472
+ ? { tdz: true }
1473
+ : {}),
1474
+ };
1475
+ lowerer.globalsBySymbol.set(symbol, g);
1476
+ lowerer.globalsList.push(g);
1477
+ if (isVarDeclared(decl))
1478
+ noteVarGlobalEntryInit(lowerer, sf, g);
1479
+ }
1480
+ }
1481
+ }
1482
+ }
1386
1483
  continue;
1387
1484
  }
1388
1485
  // `declare const __VERSION__: string` — AMBIENT: no storage exists
@@ -1390,7 +1487,8 @@ export function collectGlobals(lowerer, sf, topStmts) {
1390
1487
  // exactly like running the source under Node). Reads lower to
1391
1488
  // Node's ReferenceError at the access (lower-exprs), and the
1392
1489
  // statement itself lowers to nothing.
1393
- if (ts.getCombinedModifierFlags(stmt.declarationList.declarations[0]) & ts.ModifierFlags.Ambient)
1490
+ if (ts.getCombinedModifierFlags(stmt.declarationList.declarations.nodes[0]) &
1491
+ ts.ModifierFlags.Ambient)
1394
1492
  continue;
1395
1493
  const list = stmt.declarationList;
1396
1494
  if ((list.flags & ts.NodeFlags.Using) !== 0)
@@ -1404,8 +1502,8 @@ export function collectGlobals(lowerer, sf, topStmts) {
1404
1502
  // (`%g.e.A%B.x`), so `namespace A { export const x }` and a
1405
1503
  // top-level `const x` never collide; non-exported members add the
1406
1504
  // declaring block's position (block-local bindings).
1407
- const nsPrefix = nsPathPrefix(stmt, list.declarations[0]);
1408
- for (const decl of list.declarations) {
1505
+ const nsPrefix = nsPathPrefix(stmt, list.declarations.nodes[0]);
1506
+ for (const decl of list.declarations.nodes) {
1409
1507
  // --provenance-sources: an elided pure-annotated dead const in a
1410
1508
  // fetched source module registers no global (the statement
1411
1509
  // lowering emits nothing by the same test — see
@@ -1531,6 +1629,8 @@ export function collectGlobals(lowerer, sf, topStmts) {
1531
1629
  continue;
1532
1630
  if (isConst && registerBuiltinCallableAlias(lowerer, decl.name, decl.initializer))
1533
1631
  continue;
1632
+ if (registerBuiltinClassAlias(lowerer, decl.name, decl.initializer))
1633
+ continue;
1534
1634
  // `const f = (x) => ...` at file scope of an npm-static JS file
1535
1635
  // whose params are implicit-any: the implicit-monomorphization
1536
1636
  // twin of the generic binding above — no global exists; calls and
@@ -1643,6 +1743,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
1643
1743
  // stdlibGlobalAliasDecl; the statement lowering skips it by the
1644
1744
  // same test).
1645
1745
  const stableStdlibAlias = isConst ||
1746
+ stdlibBufferVarAlias(lowerer, decl) ||
1646
1747
  ((list.flags & ts.NodeFlags.Let) !== 0 &&
1647
1748
  ts.isIdentifier(decl.name) &&
1648
1749
  stdlibGlobalAliasNameOf(lowerer, decl.initializer) !== null &&
@@ -1666,7 +1767,8 @@ export function collectGlobals(lowerer, sf, topStmts) {
1666
1767
  decl.initializer &&
1667
1768
  !decl.type &&
1668
1769
  !hasJsTypeAnnotation(decl) &&
1669
- !lowerer.mapTypeOf(lowerer.typeOf(nameNode))) {
1770
+ (!lowerer.mapTypeOf(lowerer.typeOf(nameNode)) ||
1771
+ isWebCryptoMemberType(lowerer, lowerer.typeOf(nameNode)))) {
1670
1772
  const symbol = lowerer.checker.getSymbolAtLocation(nameNode);
1671
1773
  if (symbol && !lowerer.globalsBySymbol.has(symbol)) {
1672
1774
  const g = {
@@ -1716,6 +1818,31 @@ export function collectGlobals(lowerer, sf, topStmts) {
1716
1818
  }
1717
1819
  continue;
1718
1820
  }
1821
+ // A file-scope binding of an assertion of the global object
1822
+ // (`const state = globalThis as { [KEY]?: State }`): the binding
1823
+ // holds that object, so writes through it reach the object other
1824
+ // modules read (assertion-identity.ts).
1825
+ const asserted = decl.initializer
1826
+ ? keptIdentityAssertion(lowerer, decl.initializer)
1827
+ : undefined;
1828
+ if (nameNode === decl.name && !decl.type && asserted) {
1829
+ const symbol = lowerer.checker.getSymbolAtLocation(nameNode);
1830
+ if (symbol && !lowerer.globalsBySymbol.has(symbol)) {
1831
+ const g = {
1832
+ id: `%g.${tag}${nsPrefix}${nameNode.text}`,
1833
+ name: nameNode.text,
1834
+ type: DYN,
1835
+ mutable: isLet,
1836
+ source: bindingSource(nameNode),
1837
+ ...(!isVarDeclared(decl) ? { tdz: true } : {}),
1838
+ };
1839
+ lowerer.globalsBySymbol.set(symbol, g);
1840
+ lowerer.globalsList.push(g);
1841
+ if (isVarDeclared(decl))
1842
+ noteVarGlobalEntryInit(lowerer, sf, g);
1843
+ }
1844
+ continue;
1845
+ }
1719
1846
  // A JS file-scope evolving ARRAY (`const mustCallChecks = [];`
1720
1847
  // — test/common's exit-accounting ledger): the strict type
1721
1848
  // (any[]) has no mapping, but the VALUE is the dyn array the
@@ -1754,7 +1881,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
1754
1881
  nameNode === decl.name &&
1755
1882
  decl.initializer &&
1756
1883
  ts.isObjectLiteralExpression(decl.initializer) &&
1757
- decl.initializer.properties.some((p) => !ts.isSpreadAssignment(p) &&
1884
+ decl.initializer.properties.nodes.some((p) => !ts.isSpreadAssignment(p) &&
1758
1885
  (ts.isMethodDeclaration(p) ||
1759
1886
  ts.isAccessor(p) ||
1760
1887
  ts.isComputedPropertyName(p.name) ||
@@ -1797,7 +1924,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
1797
1924
  nameNode === decl.name &&
1798
1925
  decl.initializer !== undefined &&
1799
1926
  ts.isObjectLiteralExpression(decl.initializer) &&
1800
- decl.initializer.properties.every((p) => {
1927
+ decl.initializer.properties.nodes.every((p) => {
1801
1928
  if (ts.isSpreadAssignment(p)) {
1802
1929
  return (ts.isIdentifier(p.expression) &&
1803
1930
  lowerer.globalOf(p.expression)?.type.kind === "dyn");
@@ -1823,6 +1950,35 @@ export function collectGlobals(lowerer, sf, topStmts) {
1823
1950
  }
1824
1951
  continue;
1825
1952
  }
1953
+ // A JS file-scope ARRAY LITERAL holding an existing checked-dynamic
1954
+ // object (a file-scope object literal binding above, directly or
1955
+ // in a nested literal): the literal builds as a checked-dynamic
1956
+ // array (lowerArrayLiteral), and the binding holds it, so the
1957
+ // element keeps its identity.
1958
+ if (isJsSourceFile(sf) &&
1959
+ ts.isIdentifier(decl.name) &&
1960
+ nameNode === decl.name &&
1961
+ !decl.type &&
1962
+ !hasJsTypeAnnotation(decl) &&
1963
+ decl.initializer !== undefined &&
1964
+ ts.isArrayLiteralExpression(decl.initializer) &&
1965
+ jsHoldsDynObject(lowerer, decl.initializer)) {
1966
+ const symbol = lowerer.checker.getSymbolAtLocation(nameNode);
1967
+ if (symbol && !lowerer.globalsBySymbol.has(symbol)) {
1968
+ const g = {
1969
+ id: `%g.${tag}${nsPrefix}${nameNode.text}`,
1970
+ name: nameNode.text,
1971
+ type: DYN,
1972
+ mutable: isLet,
1973
+ source: bindingSource(nameNode),
1974
+ };
1975
+ lowerer.globalsBySymbol.set(symbol, g);
1976
+ lowerer.globalsList.push(g);
1977
+ if (isVarDeclared(decl))
1978
+ noteVarGlobalEntryInit(lowerer, sf, g);
1979
+ }
1980
+ continue;
1981
+ }
1826
1982
  // A JS file-scope ANY-RESIDUE binding whose VALUE provably
1827
1983
  // lives in the checked-dynamic tree: no initializer (`let catchWarning;` —
1828
1984
  // test/common's warning ledger), a unit initializer (`let
@@ -1879,7 +2035,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
1879
2035
  : null;
1880
2036
  const generic = member && lowerer.genericFnOf(member);
1881
2037
  const fallback = (ts.isArrowFunction(initializer) || ts.isFunctionExpression(initializer)) &&
1882
- !initializer.typeParameters?.length
2038
+ !initializer.typeParameters?.nodes.length
1883
2039
  ? lowerer.lambdaSignature(initializer).funcType
1884
2040
  : member && lowerer.globalOf(member)?.type.kind === "dyn"
1885
2041
  ? DYN
@@ -1941,12 +2097,12 @@ export function collectGlobals(lowerer, sf, topStmts) {
1941
2097
  ts.isCallExpression(decl.initializer)
1942
2098
  ? lowerer.checker.getResolvedSignature(decl.initializer)
1943
2099
  : undefined;
1944
- const callDeclaration = callSignature && lowerer.checker.signatureDeclaration(callSignature);
1945
- const callType = callDeclaration && isJsSourceFile(callDeclaration.getSourceFile())
2100
+ const callDeclaration = callSignature && callSignature.declaration;
2101
+ const callType = callDeclaration && isJsSourceFile(ts.getSourceFileOfNode(callDeclaration))
1946
2102
  ? lowerer.mapTypeOf(lowerer.typeOf(nameNode))
1947
2103
  : null;
1948
2104
  const inferredJsCall = callDeclaration &&
1949
- isJsSourceFile(callDeclaration.getSourceFile()) &&
2105
+ isJsSourceFile(ts.getSourceFileOfNode(callDeclaration)) &&
1950
2106
  (!callType ||
1951
2107
  (unannotatedCall &&
1952
2108
  callType.kind === "union" &&
@@ -1962,7 +2118,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
1962
2118
  !hasJsTypeAnnotation(decl) &&
1963
2119
  decl.initializer &&
1964
2120
  (ts.isArrowFunction(decl.initializer) || ts.isFunctionExpression(decl.initializer)) &&
1965
- !decl.initializer.typeParameters?.length) {
2121
+ !decl.initializer.typeParameters?.nodes.length) {
1966
2122
  type = lowerer.lambdaSignature(decl.initializer).funcType;
1967
2123
  }
1968
2124
  // Namespace aliases of inferred helpers carry the helper's
@@ -2022,7 +2178,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
2022
2178
  ts.isCallExpression(decl.initializer) &&
2023
2179
  ts.isPropertyAccessExpression(decl.initializer.expression) &&
2024
2180
  lowerer.stdlibGlobalMember(decl.initializer.expression, "Object") === "assign" &&
2025
- decl.initializer.arguments.some((arg) => ts.isIdentifier(arg) && lowerer.globalOf(arg)?.type.kind === "dyn")) {
2181
+ decl.initializer.arguments.nodes.some((arg) => ts.isIdentifier(arg) && lowerer.globalOf(arg)?.type.kind === "dyn")) {
2026
2182
  type = DYN;
2027
2183
  }
2028
2184
  // Runtime-arity JavaScript callables can be returned by a
@@ -2168,6 +2324,11 @@ export function collectGlobals(lowerer, sf, topStmts) {
2168
2324
  };
2169
2325
  lowerer.globalsBySymbol.set(symbol, g);
2170
2326
  lowerer.globalsList.push(g);
2327
+ // `let f: T;` initializes the binding (to undefined) where the
2328
+ // declaration runs: later writes are ordinary stores, which the
2329
+ // pointer guard alone would refuse (markCycleEarlyBindings).
2330
+ if (g.tdz && !decl.initializer)
2331
+ lowerer.uninitializedLexicalGlobals.set(g.id, { name: nameNode, module: sf, symbol });
2171
2332
  // Mutable checked-dynamic LET globals ride the same entry
2172
2333
  // init: a closure called above the declaration statement
2173
2334
  // reads the dyn undefined instead of faulting on NULL — the
@@ -2247,7 +2408,7 @@ function collectNestedVarGlobals(lowerer, sf, stmt, tag) {
2247
2408
  return undefined;
2248
2409
  });
2249
2410
  for (const list of lists) {
2250
- for (const decl of list.declarations) {
2411
+ for (const decl of list.declarations.nodes) {
2251
2412
  for (const nameNode of boundIdentifiersOf(decl.name)) {
2252
2413
  const diagsBefore = lowerer.diags.length;
2253
2414
  try {
@@ -2319,7 +2480,7 @@ export function declSymbolOf(lowerer, decl) {
2319
2480
  ts.getModifiers(decl)?.some((m) => m.kind === ts.SyntaxKind.DefaultKeyword) === true;
2320
2481
  if (!isDefault)
2321
2482
  return undefined;
2322
- const sym = defaultExportSymbolOf(lowerer, decl.getSourceFile());
2483
+ const sym = defaultExportSymbolOf(lowerer, ts.getSourceFileOfNode(decl));
2323
2484
  return sym ?? undefined;
2324
2485
  }
2325
2486
  /** `export default <expr>` in a module's init body: the first (and only)
@@ -2336,7 +2497,7 @@ export function declSymbolOf(lowerer, decl) {
2336
2497
  * expression so the expression's OWN diagnostic wins when it has one,
2337
2498
  * then poisons. */
2338
2499
  export function lowerDefaultExport(lowerer, stmt) {
2339
- const symbol = defaultExportSymbolOf(lowerer, stmt.getSourceFile());
2500
+ const symbol = defaultExportSymbolOf(lowerer, ts.getSourceFileOfNode(stmt));
2340
2501
  if (symbol && symbol.flags & ts.SymbolFlags.Alias && !lowerer.globalsBySymbol.has(symbol))
2341
2502
  return null;
2342
2503
  const g = symbol ? lowerer.globalsBySymbol.get(symbol) : undefined;
@@ -2349,10 +2510,10 @@ export function lowerDefaultExport(lowerer, stmt) {
2349
2510
  while (ts.isParenthesizedExpression(inner))
2350
2511
  inner = inner.expression;
2351
2512
  if (ts.isClassExpression(inner) &&
2352
- !isJsSourceFile(stmt.getSourceFile()) &&
2513
+ !isJsSourceFile(ts.getSourceFileOfNode(stmt)) &&
2353
2514
  inner.typeParameters === undefined &&
2354
2515
  (decoratorNodesOf(inner).length > 0 ||
2355
- inner.members.some((m) => decoratorNodesOf(m).length > 0)) &&
2516
+ inner.members.nodes.some((m) => decoratorNodesOf(m).length > 0)) &&
2356
2517
  guaranteedDecorationThrow(lowerer, inner) !== null) {
2357
2518
  return { kind: "exprStmt", expr: lowerer.lowerExpr(stmt.expression), loc: locOf(stmt) };
2358
2519
  }
@@ -2391,6 +2552,19 @@ export function lowerFileInit(lowerer, sf, stmts, name) {
2391
2552
  loc: loc0,
2392
2553
  });
2393
2554
  }
2555
+ if (sf === lowerer.entry)
2556
+ header.push(...lowerer.punycodeLinkWarning());
2557
+ // Top-level `this` of a CommonJS module: its object exists before the
2558
+ // module's first statement (lowerCjsTopLevelThis).
2559
+ const exportsThis = lowerer.cjsExportsThis.get(sf);
2560
+ if (exportsThis) {
2561
+ header.push({
2562
+ kind: "assign",
2563
+ localId: exportsThis.id,
2564
+ value: { kind: "dynObjLit", fields: [], type: DYN, loc: loc0 },
2565
+ loc: loc0,
2566
+ });
2567
+ }
2394
2568
  for (const { stmt, dep } of orderedImportsOf(lowerer.program, sf)) {
2395
2569
  const npm = lowerer.npmInitActions.get(sf)?.get(stmt);
2396
2570
  if (npm !== undefined && npm.length > 0) {
@@ -2445,6 +2619,12 @@ export function lowerFileInit(lowerer, sf, stmts, name) {
2445
2619
  }
2446
2620
  else {
2447
2621
  header.push({ kind: "exprStmt", expr: call, loc });
2622
+ // An ES-module importer links a CommonJS dependency: Node
2623
+ // copies its lexer-visible exports here.
2624
+ if ((ts.isImportDeclaration(stmt) || ts.isExportDeclaration(stmt)) &&
2625
+ !isCjsJsFile(sf, lowerer.program) &&
2626
+ isCjsJsFile(dep, lowerer.program))
2627
+ header.push(...cjsAccessorSnapshotStores(lowerer, dep, loc));
2448
2628
  }
2449
2629
  }
2450
2630
  }
@@ -2500,12 +2680,27 @@ export function lowerFileInit(lowerer, sf, stmts, name) {
2500
2680
  // a function called above the declaration reads `undefined`, exactly
2501
2681
  // Node); checked-dynamic var globals hold the dyn undefined the same
2502
2682
  // way. After the guard: a cache-hit revisit must not reset them.
2683
+ // A union slot the body retypes checked-dynamic (lowerVarDecl: a
2684
+ // JavaScript var initialized with an existing checked-dynamic object)
2685
+ // gets the dyn undefined once the body has lowered.
2686
+ const unionEntryInits = [];
2503
2687
  for (const g of lowerer.varGlobalEntryInits.get(sf) ?? []) {
2504
2688
  if (g.type.kind !== "union" && g.type.kind !== "dyn")
2505
2689
  continue;
2506
2690
  const wrapped = g.type.kind === "dyn" ? dynUndefinedExpr(loc0) : lowerer.unassignedSlotInit(g.type, loc0);
2507
2691
  if (wrapped) {
2508
- header.push({ kind: "assign", localId: g.id, value: wrapped, loc: loc0 });
2692
+ if (g.type.kind === "union")
2693
+ unionEntryInits.push({ at: header.length, g });
2694
+ // A let global whose early reads are checked (initFlag) only
2695
+ // gets its storage filled here: this is not the source write, so
2696
+ // it must neither run the TDZ check nor set the flag.
2697
+ header.push({
2698
+ kind: "assign",
2699
+ localId: g.id,
2700
+ value: wrapped,
2701
+ ...(g.initFlag !== undefined ? { initializes: true } : {}),
2702
+ loc: loc0,
2703
+ });
2509
2704
  }
2510
2705
  }
2511
2706
  const prelude = lowerer.jsonInitActions.get(sf) ?? [];
@@ -2525,7 +2720,7 @@ export function lowerFileInit(lowerer, sf, stmts, name) {
2525
2720
  c.decl &&
2526
2721
  ts.isClassDeclaration(c.decl) &&
2527
2722
  !c.mixinInstance &&
2528
- c.decl.getSourceFile() === sf &&
2723
+ ts.getSourceFileOfNode(c.decl) === sf &&
2529
2724
  (lowerer.classInitFlags.has(c.def.name) ||
2530
2725
  c.callableBase !== undefined ||
2531
2726
  c.def.baseValueGlobal !== undefined ||
@@ -2533,7 +2728,7 @@ export function lowerFileInit(lowerer, sf, stmts, name) {
2533
2728
  c.staticFields.length > 0 ||
2534
2729
  (c.staticBlocks?.length ?? 0) > 0 ||
2535
2730
  c.classDecorators !== undefined))
2536
- .map((c) => ({ pos: c.decl.getStart(), info: c }));
2731
+ .map((c) => ({ pos: ts.tokenStartOfNode(c.decl), info: c }));
2537
2732
  // Statics-bearing MIXIN instantiations whose call evaluates in THIS
2538
2733
  // file: their declaration-time code runs when the call does — the
2539
2734
  // top-level statement lower-mixins recorded. Insertion order is
@@ -2554,7 +2749,7 @@ export function lowerFileInit(lowerer, sf, stmts, name) {
2554
2749
  // anything the statement's lowering emits. Hoisted class
2555
2750
  // declarations never share a kept statement's start, so `<=`
2556
2751
  // changes nothing for them.
2557
- while (at < statics.length && statics[at].pos <= stmt.getStart()) {
2752
+ while (at < statics.length && statics[at].pos <= ts.tokenStartOfNode(stmt)) {
2558
2753
  body.push(...withClassInitFlag(lowerer, statics[at].info, lowerer.lowerStaticFieldInits(statics[at].info)));
2559
2754
  at++;
2560
2755
  }
@@ -2573,6 +2768,17 @@ export function lowerFileInit(lowerer, sf, stmts, name) {
2573
2768
  body.push(...withClassInitFlag(lowerer, statics[at].info, lowerer.lowerStaticFieldInits(statics[at].info)));
2574
2769
  at++;
2575
2770
  }
2771
+ for (const { at, g } of unionEntryInits) {
2772
+ if (g.type.kind !== "dyn")
2773
+ continue;
2774
+ body[at] = {
2775
+ kind: "assign",
2776
+ localId: g.id,
2777
+ value: dynUndefinedExpr(loc0),
2778
+ ...(g.initFlag !== undefined ? { initializes: true } : {}),
2779
+ loc: loc0,
2780
+ };
2781
+ }
2576
2782
  const moduleRef = cjsModuleRef(lowerer, sf);
2577
2783
  if (moduleRef !== null) {
2578
2784
  const guardedBody = body.splice(guardId !== undefined ? 2 : 0);
@@ -2725,6 +2931,7 @@ function rememberEvaluationError(lowerer, guardId, body, loc) {
2725
2931
  export function buildMain(lowerer) {
2726
2932
  const loc = { file: lowerer.entry.fileName, start: 0, end: 0 };
2727
2933
  const body = [
2934
+ ...lowerer.mainPrelude,
2728
2935
  ...cjsModuleRegistryPrelude(lowerer, loc),
2729
2936
  ...handleEventReaderPrelude(lowerer, loc),
2730
2937
  ];