@scriptc/compiler 0.3.6 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1358) hide show
  1. package/ambient/scriptc-node-fallback.d.ts +717 -55
  2. package/ambient/scriptc.d.ts +134 -0
  3. package/dist/backend/cycle-analysis.d.ts +1 -1
  4. package/dist/backend/cycle-analysis.js +1 -0
  5. package/dist/backend/cycle-analysis.js.map +1 -1
  6. package/dist/backend/cycle-analysis.test.js +13 -1
  7. package/dist/backend/cycle-analysis.test.js.map +1 -1
  8. package/dist/backend/cycle-mutability.js +16 -5
  9. package/dist/backend/cycle-mutability.js.map +1 -1
  10. package/dist/backend/executable-features.js +20 -0
  11. package/dist/backend/executable-features.js.map +1 -1
  12. package/dist/backend/immutability.test.js +1 -1
  13. package/dist/backend/library-pack.js +9 -0
  14. package/dist/backend/library-pack.js.map +1 -1
  15. package/dist/backend/link-plan-core.d.ts +2 -0
  16. package/dist/backend/link-plan-core.js +2 -0
  17. package/dist/backend/link-plan-core.js.map +1 -1
  18. package/dist/backend/link-plan.d.ts +1 -0
  19. package/dist/backend/link-plan.js +1 -0
  20. package/dist/backend/link-plan.js.map +1 -1
  21. package/dist/backend/llvm/alloc.d.ts +41 -4
  22. package/dist/backend/llvm/alloc.js +138 -7
  23. package/dist/backend/llvm/alloc.js.map +1 -1
  24. package/dist/backend/llvm/alloc.test.js +30 -1
  25. package/dist/backend/llvm/alloc.test.js.map +1 -1
  26. package/dist/backend/llvm/appended-array-literals.test.js +1 -1
  27. package/dist/backend/llvm/array-search.js +3 -1
  28. package/dist/backend/llvm/array-search.js.map +1 -1
  29. package/dist/backend/llvm/array-search.test.js +1 -1
  30. package/dist/backend/llvm/blocks.d.ts +8 -0
  31. package/dist/backend/llvm/blocks.js +43 -1
  32. package/dist/backend/llvm/blocks.js.map +1 -1
  33. package/dist/backend/llvm/blocks.test.js +22 -1
  34. package/dist/backend/llvm/blocks.test.js.map +1 -1
  35. package/dist/backend/llvm/byte-numbers.js +15 -5
  36. package/dist/backend/llvm/byte-numbers.js.map +1 -1
  37. package/dist/backend/llvm/bytes-alias.d.ts +14 -0
  38. package/dist/backend/llvm/bytes-alias.js +20 -0
  39. package/dist/backend/llvm/bytes-alias.js.map +1 -0
  40. package/dist/backend/llvm/bytes-loop-versions.d.ts +86 -0
  41. package/dist/backend/llvm/bytes-loop-versions.js +506 -0
  42. package/dist/backend/llvm/bytes-loop-versions.js.map +1 -0
  43. package/dist/backend/llvm/bytes-loop-versions.test.d.ts +1 -0
  44. package/dist/backend/llvm/bytes-loop-versions.test.js +244 -0
  45. package/dist/backend/llvm/bytes-loop-versions.test.js.map +1 -0
  46. package/dist/backend/llvm/call-lifetimes.js +50 -1
  47. package/dist/backend/llvm/call-lifetimes.js.map +1 -1
  48. package/dist/backend/llvm/call-lifetimes.test.js +34 -0
  49. package/dist/backend/llvm/call-lifetimes.test.js.map +1 -1
  50. package/dist/backend/llvm/checked-narrows.test.js +1 -1
  51. package/dist/backend/llvm/checked-value-lifetimes.js +4 -1
  52. package/dist/backend/llvm/checked-value-lifetimes.js.map +1 -1
  53. package/dist/backend/llvm/classes.d.ts +38 -1
  54. package/dist/backend/llvm/classes.js +185 -35
  55. package/dist/backend/llvm/classes.js.map +1 -1
  56. package/dist/backend/llvm/classes.test.js +79 -17
  57. package/dist/backend/llvm/classes.test.js.map +1 -1
  58. package/dist/backend/llvm/common.d.ts +21 -3
  59. package/dist/backend/llvm/common.js +51 -3
  60. package/dist/backend/llvm/common.js.map +1 -1
  61. package/dist/backend/llvm/constant-callbacks.d.ts +5 -1
  62. package/dist/backend/llvm/constant-callbacks.js +55 -12
  63. package/dist/backend/llvm/constant-callbacks.js.map +1 -1
  64. package/dist/backend/llvm/constant-callbacks.test.js +88 -1
  65. package/dist/backend/llvm/constant-callbacks.test.js.map +1 -1
  66. package/dist/backend/llvm/counted-loops.d.ts +4 -0
  67. package/dist/backend/llvm/counted-loops.js +37 -0
  68. package/dist/backend/llvm/counted-loops.js.map +1 -1
  69. package/dist/backend/llvm/dense-array-access.d.ts +15 -4
  70. package/dist/backend/llvm/dense-array-access.js +125 -44
  71. package/dist/backend/llvm/dense-array-access.js.map +1 -1
  72. package/dist/backend/llvm/dense-array-access.test.js +63 -3
  73. package/dist/backend/llvm/dense-array-access.test.js.map +1 -1
  74. package/dist/backend/llvm/dense-array-loops.d.ts +51 -0
  75. package/dist/backend/llvm/dense-array-loops.js +162 -0
  76. package/dist/backend/llvm/dense-array-loops.js.map +1 -0
  77. package/dist/backend/llvm/dense-array-loops.test.d.ts +1 -0
  78. package/dist/backend/llvm/dense-array-loops.test.js +128 -0
  79. package/dist/backend/llvm/dense-array-loops.test.js.map +1 -0
  80. package/dist/backend/llvm/dyn-handle-tags.test.d.ts +1 -0
  81. package/dist/backend/llvm/dyn-handle-tags.test.js +38 -0
  82. package/dist/backend/llvm/dyn-handle-tags.test.js.map +1 -0
  83. package/dist/backend/llvm/dyn.d.ts +37 -4
  84. package/dist/backend/llvm/dyn.js +354 -183
  85. package/dist/backend/llvm/dyn.js.map +1 -1
  86. package/dist/backend/llvm/emit-function.d.ts +64 -0
  87. package/dist/backend/llvm/emit-function.js +1193 -0
  88. package/dist/backend/llvm/emit-function.js.map +1 -0
  89. package/dist/backend/llvm/emit-module.d.ts +24 -0
  90. package/dist/backend/llvm/emit-module.js +1557 -0
  91. package/dist/backend/llvm/emit-module.js.map +1 -0
  92. package/dist/backend/llvm/emit-statements.d.ts +59 -0
  93. package/dist/backend/llvm/emit-statements.js +2041 -0
  94. package/dist/backend/llvm/emit-statements.js.map +1 -0
  95. package/dist/backend/llvm/emitter.d.ts +566 -291
  96. package/dist/backend/llvm/emitter.js +728 -4671
  97. package/dist/backend/llvm/emitter.js.map +1 -1
  98. package/dist/backend/llvm/emitter.test.js +57 -3
  99. package/dist/backend/llvm/emitter.test.js.map +1 -1
  100. package/dist/backend/llvm/expr-async.js +73 -46
  101. package/dist/backend/llvm/expr-async.js.map +1 -1
  102. package/dist/backend/llvm/expr-async.test.js +1 -1
  103. package/dist/backend/llvm/expr-bytes.d.ts +2 -0
  104. package/dist/backend/llvm/expr-bytes.js +76 -29
  105. package/dist/backend/llvm/expr-bytes.js.map +1 -1
  106. package/dist/backend/llvm/expr-callbacks.d.ts +6 -2
  107. package/dist/backend/llvm/expr-callbacks.js +48 -11
  108. package/dist/backend/llvm/expr-callbacks.js.map +1 -1
  109. package/dist/backend/llvm/expr-calls.d.ts +1 -1
  110. package/dist/backend/llvm/expr-calls.js +87 -56
  111. package/dist/backend/llvm/expr-calls.js.map +1 -1
  112. package/dist/backend/llvm/expr-calls.test.js +1 -1
  113. package/dist/backend/llvm/expr-containers.js +45 -24
  114. package/dist/backend/llvm/expr-containers.js.map +1 -1
  115. package/dist/backend/llvm/expr-control.js +16 -16
  116. package/dist/backend/llvm/expr-control.js.map +1 -1
  117. package/dist/backend/llvm/expr-dynamic.d.ts +3 -0
  118. package/dist/backend/llvm/expr-dynamic.js +113 -66
  119. package/dist/backend/llvm/expr-dynamic.js.map +1 -1
  120. package/dist/backend/llvm/expr-primitives.js +124 -28
  121. package/dist/backend/llvm/expr-primitives.js.map +1 -1
  122. package/dist/backend/llvm/expr-primitives.test.js +57 -2
  123. package/dist/backend/llvm/expr-primitives.test.js.map +1 -1
  124. package/dist/backend/llvm/expr-records.d.ts +1 -1
  125. package/dist/backend/llvm/expr-records.js +32 -11
  126. package/dist/backend/llvm/expr-records.js.map +1 -1
  127. package/dist/backend/llvm/expr-stream-bridges.js +65 -27
  128. package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
  129. package/dist/backend/llvm/expr-stream-bridges.test.js +2 -2
  130. package/dist/backend/llvm/expr-stream-callbacks.js +22 -1
  131. package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
  132. package/dist/backend/llvm/int32-abi.test.js +2 -2
  133. package/dist/backend/llvm/integer-clones.js +3 -3
  134. package/dist/backend/llvm/integer-clones.js.map +1 -1
  135. package/dist/backend/llvm/integer-clones.test.js +3 -3
  136. package/dist/backend/llvm/integer-remainder.d.ts +34 -13
  137. package/dist/backend/llvm/integer-remainder.js +156 -22
  138. package/dist/backend/llvm/integer-remainder.js.map +1 -1
  139. package/dist/backend/llvm/intern-tables.test.js +1 -1
  140. package/dist/backend/llvm/js-ic.d.ts +18 -0
  141. package/dist/backend/llvm/js-ic.js +712 -0
  142. package/dist/backend/llvm/js-ic.js.map +1 -0
  143. package/dist/backend/llvm/jsval-encoding.d.ts +21 -0
  144. package/dist/backend/llvm/jsval-encoding.js +20 -0
  145. package/dist/backend/llvm/jsval-encoding.js.map +1 -0
  146. package/dist/backend/llvm/jsval.d.ts +12 -0
  147. package/dist/backend/llvm/jsval.js +616 -0
  148. package/dist/backend/llvm/jsval.js.map +1 -0
  149. package/dist/backend/llvm/lazy-captures.d.ts +12 -2
  150. package/dist/backend/llvm/lazy-captures.js +39 -17
  151. package/dist/backend/llvm/lazy-captures.js.map +1 -1
  152. package/dist/backend/llvm/lib-abi.js +1 -1
  153. package/dist/backend/llvm/lib-abi.js.map +1 -1
  154. package/dist/backend/llvm/lib-connect.js +1 -1
  155. package/dist/backend/llvm/lib-connect.js.map +1 -1
  156. package/dist/backend/llvm/lib-datagram.js +14 -8
  157. package/dist/backend/llvm/lib-datagram.js.map +1 -1
  158. package/dist/backend/llvm/lib-dispatch.js +189 -23
  159. package/dist/backend/llvm/lib-dispatch.js.map +1 -1
  160. package/dist/backend/llvm/lib-filesystem.js +42 -13
  161. package/dist/backend/llvm/lib-filesystem.js.map +1 -1
  162. package/dist/backend/llvm/lib-http2.js +3 -3
  163. package/dist/backend/llvm/lib-http2.js.map +1 -1
  164. package/dist/backend/llvm/lib-lookup.js +2 -2
  165. package/dist/backend/llvm/lib-lookup.js.map +1 -1
  166. package/dist/backend/llvm/lib-network.js +56 -22
  167. package/dist/backend/llvm/lib-network.js.map +1 -1
  168. package/dist/backend/llvm/lib-process.js +94 -53
  169. package/dist/backend/llvm/lib-process.js.map +1 -1
  170. package/dist/backend/llvm/lib-shared.d.ts +12 -0
  171. package/dist/backend/llvm/lib-shared.js +209 -6
  172. package/dist/backend/llvm/lib-shared.js.map +1 -1
  173. package/dist/backend/llvm/lib-stream.js +46 -16
  174. package/dist/backend/llvm/lib-stream.js.map +1 -1
  175. package/dist/backend/llvm/lib-test.js +43 -7
  176. package/dist/backend/llvm/lib-test.js.map +1 -1
  177. package/dist/backend/llvm/lib-tls.js +4 -9
  178. package/dist/backend/llvm/lib-tls.js.map +1 -1
  179. package/dist/backend/llvm/local-array-reads.js +42 -33
  180. package/dist/backend/llvm/local-array-reads.js.map +1 -1
  181. package/dist/backend/llvm/local-array-reads.test.js +1 -1
  182. package/dist/backend/llvm/local-extents.d.ts +19 -0
  183. package/dist/backend/llvm/local-extents.js +169 -0
  184. package/dist/backend/llvm/local-extents.js.map +1 -0
  185. package/dist/backend/llvm/local-extents.test.d.ts +1 -0
  186. package/dist/backend/llvm/local-extents.test.js +92 -0
  187. package/dist/backend/llvm/local-extents.test.js.map +1 -0
  188. package/dist/backend/llvm/local-union-storage.js +7 -7
  189. package/dist/backend/llvm/local-union-storage.js.map +1 -1
  190. package/dist/backend/llvm/local-union-storage.test.js +2 -2
  191. package/dist/backend/llvm/map-entry-fusion.test.js +1 -1
  192. package/dist/backend/llvm/map-number-lookup.d.ts +20 -4
  193. package/dist/backend/llvm/map-number-lookup.js +45 -9
  194. package/dist/backend/llvm/map-number-lookup.js.map +1 -1
  195. package/dist/backend/llvm/map-number-lookup.test.js +2 -2
  196. package/dist/backend/llvm/map-read-lifetimes.test.js +2 -2
  197. package/dist/backend/llvm/narrow-guards.d.ts +38 -0
  198. package/dist/backend/llvm/narrow-guards.js +215 -0
  199. package/dist/backend/llvm/narrow-guards.js.map +1 -0
  200. package/dist/backend/llvm/nullable-unions.d.ts +64 -6
  201. package/dist/backend/llvm/nullable-unions.js +103 -6
  202. package/dist/backend/llvm/nullable-unions.js.map +1 -1
  203. package/dist/backend/llvm/nullable-unions.test.d.ts +1 -0
  204. package/dist/backend/llvm/nullable-unions.test.js +65 -0
  205. package/dist/backend/llvm/nullable-unions.test.js.map +1 -0
  206. package/dist/backend/llvm/publish.d.ts +7 -0
  207. package/dist/backend/llvm/publish.js +50 -19
  208. package/dist/backend/llvm/publish.js.map +1 -1
  209. package/dist/backend/llvm/publish.test.js +1 -1
  210. package/dist/backend/llvm/receivers.d.ts +31 -0
  211. package/dist/backend/llvm/receivers.js +395 -0
  212. package/dist/backend/llvm/receivers.js.map +1 -0
  213. package/dist/backend/llvm/record-results.d.ts +12 -1
  214. package/dist/backend/llvm/record-results.js +64 -4
  215. package/dist/backend/llvm/record-results.js.map +1 -1
  216. package/dist/backend/llvm/reference-effects.js +9 -0
  217. package/dist/backend/llvm/reference-effects.js.map +1 -1
  218. package/dist/backend/llvm/reference-writes.d.ts +4 -0
  219. package/dist/backend/llvm/reference-writes.js +142 -6
  220. package/dist/backend/llvm/reference-writes.js.map +1 -1
  221. package/dist/backend/llvm/reference-writes.test.d.ts +1 -0
  222. package/dist/backend/llvm/reference-writes.test.js +88 -0
  223. package/dist/backend/llvm/reference-writes.test.js.map +1 -0
  224. package/dist/backend/llvm/regex-matchers.d.ts +8 -0
  225. package/dist/backend/llvm/regex-matchers.js +33 -0
  226. package/dist/backend/llvm/regex-matchers.js.map +1 -1
  227. package/dist/backend/llvm/regex-matchers.test.js +23 -1
  228. package/dist/backend/llvm/regex-matchers.test.js.map +1 -1
  229. package/dist/backend/llvm/regions.d.ts +1 -1
  230. package/dist/backend/llvm/regions.js +10 -7
  231. package/dist/backend/llvm/regions.js.map +1 -1
  232. package/dist/backend/llvm/regions.test.js +8 -2
  233. package/dist/backend/llvm/regions.test.js.map +1 -1
  234. package/dist/backend/llvm/shapes.d.ts +74 -45
  235. package/dist/backend/llvm/shapes.js +289 -28
  236. package/dist/backend/llvm/shapes.js.map +1 -1
  237. package/dist/backend/llvm/shapes.test.js +37 -3
  238. package/dist/backend/llvm/shapes.test.js.map +1 -1
  239. package/dist/backend/llvm/speculative-integers.d.ts +20 -1
  240. package/dist/backend/llvm/speculative-integers.js +94 -6
  241. package/dist/backend/llvm/speculative-integers.js.map +1 -1
  242. package/dist/backend/llvm/speculative-integers.test.js +55 -1
  243. package/dist/backend/llvm/speculative-integers.test.js.map +1 -1
  244. package/dist/backend/llvm/split-loops.js +2 -2
  245. package/dist/backend/llvm/split-loops.js.map +1 -1
  246. package/dist/backend/llvm/stack-objects.d.ts +26 -6
  247. package/dist/backend/llvm/stack-objects.js +133 -10
  248. package/dist/backend/llvm/stack-objects.js.map +1 -1
  249. package/dist/backend/llvm/stack-objects.test.js +55 -1
  250. package/dist/backend/llvm/stack-objects.test.js.map +1 -1
  251. package/dist/backend/llvm/stack-unions.test.js +1 -1
  252. package/dist/backend/llvm/string-construction.test.js +1 -1
  253. package/dist/backend/llvm/string-lifetimes.test.js +15 -14
  254. package/dist/backend/llvm/string-lifetimes.test.js.map +1 -1
  255. package/dist/backend/llvm/string-reads.d.ts +1 -1
  256. package/dist/backend/llvm/string-reads.js +4 -4
  257. package/dist/backend/llvm/string-reads.js.map +1 -1
  258. package/dist/backend/llvm/string-slices.d.ts +25 -0
  259. package/dist/backend/llvm/string-slices.js +207 -1
  260. package/dist/backend/llvm/string-slices.js.map +1 -1
  261. package/dist/backend/llvm/string-slices.test.js +139 -2
  262. package/dist/backend/llvm/string-slices.test.js.map +1 -1
  263. package/dist/backend/llvm/switch-dispatch.test.js +2 -2
  264. package/dist/backend/llvm/thread-slots.d.ts +5 -0
  265. package/dist/backend/llvm/thread-slots.js +142 -0
  266. package/dist/backend/llvm/thread-slots.js.map +1 -0
  267. package/dist/backend/llvm/thread-slots.test.d.ts +1 -0
  268. package/dist/backend/llvm/thread-slots.test.js +111 -0
  269. package/dist/backend/llvm/thread-slots.test.js.map +1 -0
  270. package/dist/backend/llvm/union-repr.d.ts +7 -7
  271. package/dist/backend/llvm/union-repr.js +18 -2
  272. package/dist/backend/llvm/union-repr.js.map +1 -1
  273. package/dist/backend/llvm/union-retype.test.js +17 -3
  274. package/dist/backend/llvm/union-retype.test.js.map +1 -1
  275. package/dist/backend/llvm/walkers.d.ts +2 -2
  276. package/dist/backend/llvm/walkers.js +51 -26
  277. package/dist/backend/llvm/walkers.js.map +1 -1
  278. package/dist/backend/llvm/wasm-modules.d.ts +16 -0
  279. package/dist/backend/llvm/wasm-modules.js +66 -0
  280. package/dist/backend/llvm/wasm-modules.js.map +1 -0
  281. package/dist/backend/llvm/wrapping-sums.d.ts +7 -0
  282. package/dist/backend/llvm/wrapping-sums.js +11 -3
  283. package/dist/backend/llvm/wrapping-sums.js.map +1 -1
  284. package/dist/backend/mangle.d.ts +12 -0
  285. package/dist/backend/mangle.js +18 -0
  286. package/dist/backend/mangle.js.map +1 -1
  287. package/dist/backend/may-throw.d.ts +3 -0
  288. package/dist/backend/may-throw.js +4 -2
  289. package/dist/backend/may-throw.js.map +1 -1
  290. package/dist/backend/may-throw.test.js +1 -1
  291. package/dist/backend/native/contracts.d.ts +57 -0
  292. package/dist/backend/native/executable.js +211 -139
  293. package/dist/backend/native/executable.js.map +1 -1
  294. package/dist/backend/native/library.js +2 -0
  295. package/dist/backend/native/library.js.map +1 -1
  296. package/dist/backend/native/runtime-inputs.d.ts +1 -1
  297. package/dist/backend/native/runtime-inputs.js +1 -0
  298. package/dist/backend/native/runtime-inputs.js.map +1 -1
  299. package/dist/backend/native-codegen.d.ts +6 -0
  300. package/dist/backend/native-codegen.js +19 -0
  301. package/dist/backend/native-codegen.js.map +1 -1
  302. package/dist/backend/native-codegen.test.js +27 -0
  303. package/dist/backend/native-codegen.test.js.map +1 -1
  304. package/dist/backend/native-link-info-core.d.ts +48 -0
  305. package/dist/backend/native-link-info-core.js.map +1 -1
  306. package/dist/backend/native-profile.d.ts +32 -0
  307. package/dist/backend/native-profile.js +39 -0
  308. package/dist/backend/native-profile.js.map +1 -0
  309. package/dist/backend/native-profile.test.d.ts +1 -0
  310. package/dist/backend/native-profile.test.js +58 -0
  311. package/dist/backend/native-profile.test.js.map +1 -0
  312. package/dist/backend/native-tools.d.ts +14 -0
  313. package/dist/backend/native-tools.js +13 -0
  314. package/dist/backend/native-tools.js.map +1 -1
  315. package/dist/backend/publication.test.js +1 -1
  316. package/dist/backend/runtime-abi.d.ts +2 -2
  317. package/dist/backend/runtime-abi.js +2 -2
  318. package/dist/backend/runtime-pack-core.d.ts +13 -1
  319. package/dist/backend/runtime-pack-core.js +14 -1
  320. package/dist/backend/runtime-pack-core.js.map +1 -1
  321. package/dist/backend/runtime-pack-native.js +1 -1
  322. package/dist/backend/runtime-pack-native.js.map +1 -1
  323. package/dist/backend/runtime-pack-native.test.d.ts +1 -0
  324. package/dist/backend/runtime-pack-native.test.js +31 -0
  325. package/dist/backend/runtime-pack-native.test.js.map +1 -0
  326. package/dist/backend/runtime-pack-targets.test.js +9 -1
  327. package/dist/backend/runtime-pack-targets.test.js.map +1 -1
  328. package/dist/backend/runtime-pack.test.js +9 -1
  329. package/dist/backend/runtime-pack.test.js.map +1 -1
  330. package/dist/backend/stack-observations.d.ts +22 -0
  331. package/dist/backend/stack-observations.js +382 -0
  332. package/dist/backend/stack-observations.js.map +1 -0
  333. package/dist/backend/stack-observations.test.d.ts +1 -0
  334. package/dist/backend/stack-observations.test.js +233 -0
  335. package/dist/backend/stack-observations.test.js.map +1 -0
  336. package/dist/backend/target-diagnostics.js +15 -0
  337. package/dist/backend/target-diagnostics.js.map +1 -1
  338. package/dist/backend/target-diagnostics.test.js +1 -1
  339. package/dist/backend/warm-cache.js +8 -0
  340. package/dist/backend/warm-cache.js.map +1 -1
  341. package/dist/backend/young-nursery.d.ts +7 -0
  342. package/dist/backend/young-nursery.js +10 -0
  343. package/dist/backend/young-nursery.js.map +1 -0
  344. package/dist/cli/command.js +106 -4
  345. package/dist/cli/command.js.map +1 -1
  346. package/dist/cli/host.d.ts +3 -0
  347. package/dist/cli/output-options.d.ts +2 -0
  348. package/dist/cli/output-options.js +9 -0
  349. package/dist/cli/output-options.js.map +1 -1
  350. package/dist/cli/usage.d.ts +21 -1
  351. package/dist/cli/usage.js +43 -1
  352. package/dist/cli/usage.js.map +1 -1
  353. package/dist/compat/fetch-profile.js +10 -1
  354. package/dist/compat/fetch-profile.js.map +1 -1
  355. package/dist/compile-types.d.ts +22 -0
  356. package/dist/contracts/check.js +25 -8
  357. package/dist/contracts/check.js.map +1 -1
  358. package/dist/contracts/int32-elements.d.ts +115 -0
  359. package/dist/contracts/int32-elements.js +1179 -0
  360. package/dist/contracts/int32-elements.js.map +1 -0
  361. package/dist/coverage/report.d.ts +16 -0
  362. package/dist/coverage/report.js +182 -1
  363. package/dist/coverage/report.js.map +1 -1
  364. package/dist/coverage/surface-manifest.js +16 -3
  365. package/dist/coverage/surface-manifest.js.map +1 -1
  366. package/dist/coverage/verdict-cache.d.ts +2 -0
  367. package/dist/coverage/verdict-cache.js +12 -0
  368. package/dist/coverage/verdict-cache.js.map +1 -1
  369. package/dist/coverage/verdict-cache.test.js +2 -1
  370. package/dist/coverage/verdict-cache.test.js.map +1 -1
  371. package/dist/diagnostics/diagnostic.d.ts +10 -6
  372. package/dist/diagnostics/diagnostic.js +29 -21
  373. package/dist/diagnostics/diagnostic.js.map +1 -1
  374. package/dist/diagnostics/envelope.d.ts +39 -2
  375. package/dist/diagnostics/envelope.js.map +1 -1
  376. package/dist/diagnostics/render.d.ts +7 -0
  377. package/dist/diagnostics/render.js +50 -13
  378. package/dist/diagnostics/render.js.map +1 -1
  379. package/dist/diagnostics/render.test.d.ts +1 -0
  380. package/dist/diagnostics/render.test.js +49 -0
  381. package/dist/diagnostics/render.test.js.map +1 -0
  382. package/dist/executable/executable-cache.d.ts +27 -0
  383. package/dist/executable/executable-cache.js +19 -1
  384. package/dist/executable/executable-cache.js.map +1 -1
  385. package/dist/executable/executable-cache.test.js +12 -1
  386. package/dist/executable/executable-cache.test.js.map +1 -1
  387. package/dist/executable/prepare.js +2 -1
  388. package/dist/executable/prepare.js.map +1 -1
  389. package/dist/frontend/analysis.js +6 -1
  390. package/dist/frontend/analysis.js.map +1 -1
  391. package/dist/frontend/arguments-usage.d.ts +8 -0
  392. package/dist/frontend/arguments-usage.js +98 -0
  393. package/dist/frontend/arguments-usage.js.map +1 -1
  394. package/dist/frontend/arguments-usage.test.d.ts +1 -0
  395. package/dist/frontend/arguments-usage.test.js +32 -0
  396. package/dist/frontend/arguments-usage.test.js.map +1 -0
  397. package/dist/frontend/builtin-modules.d.ts +16 -2
  398. package/dist/frontend/builtin-modules.js +40 -7
  399. package/dist/frontend/builtin-modules.js.map +1 -1
  400. package/dist/frontend/builtin-package-aliases.d.ts +24 -0
  401. package/dist/frontend/builtin-package-aliases.js +133 -0
  402. package/dist/frontend/builtin-package-aliases.js.map +1 -0
  403. package/dist/frontend/builtin-package-aliases.test.d.ts +1 -0
  404. package/dist/frontend/builtin-package-aliases.test.js +48 -0
  405. package/dist/frontend/builtin-package-aliases.test.js.map +1 -0
  406. package/dist/frontend/cjs-syntax.js +52 -51
  407. package/dist/frontend/cjs-syntax.js.map +1 -1
  408. package/dist/frontend/contract-types.d.ts +3 -0
  409. package/dist/frontend/contract-types.js +36 -7
  410. package/dist/frontend/contract-types.js.map +1 -1
  411. package/dist/frontend/dts-paths.d.ts +4 -0
  412. package/dist/frontend/dts-paths.js +9 -1
  413. package/dist/frontend/dts-paths.js.map +1 -1
  414. package/dist/frontend/experimental-import.d.ts +5 -1
  415. package/dist/frontend/experimental-import.js +26 -7
  416. package/dist/frontend/experimental-import.js.map +1 -1
  417. package/dist/frontend/fork-target.js +20 -22
  418. package/dist/frontend/fork-target.js.map +1 -1
  419. package/dist/frontend/fork-target.test.js +2 -1
  420. package/dist/frontend/fork-target.test.js.map +1 -1
  421. package/dist/frontend/function-completion.js +6 -6
  422. package/dist/frontend/function-completion.js.map +1 -1
  423. package/dist/frontend/helper-tokens.js +15 -3
  424. package/dist/frontend/helper-tokens.js.map +1 -1
  425. package/dist/frontend/helper-tokens.test.js +7 -1
  426. package/dist/frontend/helper-tokens.test.js.map +1 -1
  427. package/dist/frontend/inferred-js-diagnostics.js +14 -17
  428. package/dist/frontend/inferred-js-diagnostics.js.map +1 -1
  429. package/dist/frontend/input-tracker.d.ts +3 -0
  430. package/dist/frontend/input-tracker.js +32 -3
  431. package/dist/frontend/input-tracker.js.map +1 -1
  432. package/dist/frontend/lib-contract.js +36 -32
  433. package/dist/frontend/lib-contract.js.map +1 -1
  434. package/dist/frontend/lib-exports.js +3 -3
  435. package/dist/frontend/lib-exports.js.map +1 -1
  436. package/dist/frontend/lowering/array-values.d.ts +8 -3
  437. package/dist/frontend/lowering/array-values.js +60 -11
  438. package/dist/frontend/lowering/array-values.js.map +1 -1
  439. package/dist/frontend/lowering/assert-instances.js +4 -4
  440. package/dist/frontend/lowering/assert-instances.js.map +1 -1
  441. package/dist/frontend/lowering/assertion-identity.d.ts +12 -0
  442. package/dist/frontend/lowering/assertion-identity.js +70 -0
  443. package/dist/frontend/lowering/assertion-identity.js.map +1 -0
  444. package/dist/frontend/lowering/assertion-members.d.ts +28 -0
  445. package/dist/frontend/lowering/assertion-members.js +185 -0
  446. package/dist/frontend/lowering/assertion-members.js.map +1 -0
  447. package/dist/frontend/lowering/binding-analysis.js +27 -20
  448. package/dist/frontend/lowering/binding-analysis.js.map +1 -1
  449. package/dist/frontend/lowering/builtin-calls.js +63 -5
  450. package/dist/frontend/lowering/builtin-calls.js.map +1 -1
  451. package/dist/frontend/lowering/builtin-function-fences.d.ts +14 -0
  452. package/dist/frontend/lowering/builtin-function-fences.js +42 -0
  453. package/dist/frontend/lowering/builtin-function-fences.js.map +1 -0
  454. package/dist/frontend/lowering/builtins/arguments.js +1 -1
  455. package/dist/frontend/lowering/builtins/arguments.js.map +1 -1
  456. package/dist/frontend/lowering/builtins/async-context.js +53 -52
  457. package/dist/frontend/lowering/builtins/async-context.js.map +1 -1
  458. package/dist/frontend/lowering/builtins/atomics.js +6 -6
  459. package/dist/frontend/lowering/builtins/atomics.js.map +1 -1
  460. package/dist/frontend/lowering/builtins/blob.js +8 -6
  461. package/dist/frontend/lowering/builtins/blob.js.map +1 -1
  462. package/dist/frontend/lowering/builtins/builtin-class-dyn.d.ts +31 -0
  463. package/dist/frontend/lowering/builtins/builtin-class-dyn.js +205 -0
  464. package/dist/frontend/lowering/builtins/builtin-class-dyn.js.map +1 -0
  465. package/dist/frontend/lowering/builtins/callable-aliases.js +17 -5
  466. package/dist/frontend/lowering/builtins/callable-aliases.js.map +1 -1
  467. package/dist/frontend/lowering/builtins/child-process-async.js +7 -7
  468. package/dist/frontend/lowering/builtins/child-process-async.js.map +1 -1
  469. package/dist/frontend/lowering/builtins/child-process-methods.d.ts +6 -4
  470. package/dist/frontend/lowering/builtins/child-process-methods.js +310 -57
  471. package/dist/frontend/lowering/builtins/child-process-methods.js.map +1 -1
  472. package/dist/frontend/lowering/builtins/child-process-sync.js +16 -10
  473. package/dist/frontend/lowering/builtins/child-process-sync.js.map +1 -1
  474. package/dist/frontend/lowering/builtins/child-process.d.ts +6 -4
  475. package/dist/frontend/lowering/builtins/child-process.js +85 -61
  476. package/dist/frontend/lowering/builtins/child-process.js.map +1 -1
  477. package/dist/frontend/lowering/builtins/class-values.d.ts +60 -0
  478. package/dist/frontend/lowering/builtins/class-values.js +226 -0
  479. package/dist/frontend/lowering/builtins/class-values.js.map +1 -0
  480. package/dist/frontend/lowering/builtins/compression.d.ts +9 -0
  481. package/dist/frontend/lowering/builtins/compression.js +107 -44
  482. package/dist/frontend/lowering/builtins/compression.js.map +1 -1
  483. package/dist/frontend/lowering/builtins/constants.d.ts +9 -1
  484. package/dist/frontend/lowering/builtins/constants.js +28 -7
  485. package/dist/frontend/lowering/builtins/constants.js.map +1 -1
  486. package/dist/frontend/lowering/builtins/crypto.d.ts +22 -0
  487. package/dist/frontend/lowering/builtins/crypto.js +215 -38
  488. package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
  489. package/dist/frontend/lowering/builtins/dates.d.ts +7 -1
  490. package/dist/frontend/lowering/builtins/dates.js +92 -16
  491. package/dist/frontend/lowering/builtins/dates.js.map +1 -1
  492. package/dist/frontend/lowering/builtins/disposable-stack.d.ts +18 -0
  493. package/dist/frontend/lowering/builtins/disposable-stack.js +137 -0
  494. package/dist/frontend/lowering/builtins/disposable-stack.js.map +1 -0
  495. package/dist/frontend/lowering/builtins/ecdh.d.ts +10 -0
  496. package/dist/frontend/lowering/builtins/ecdh.js +208 -0
  497. package/dist/frontend/lowering/builtins/ecdh.js.map +1 -0
  498. package/dist/frontend/lowering/builtins/environment.js +3 -3
  499. package/dist/frontend/lowering/builtins/environment.js.map +1 -1
  500. package/dist/frontend/lowering/builtins/errors.d.ts +14 -10
  501. package/dist/frontend/lowering/builtins/errors.js +169 -3
  502. package/dist/frontend/lowering/builtins/errors.js.map +1 -1
  503. package/dist/frontend/lowering/builtins/filesystem-calls.js +128 -116
  504. package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
  505. package/dist/frontend/lowering/builtins/filesystem.js +77 -77
  506. package/dist/frontend/lowering/builtins/filesystem.js.map +1 -1
  507. package/dist/frontend/lowering/builtins/fs-glob.js +3 -3
  508. package/dist/frontend/lowering/builtins/fs-glob.js.map +1 -1
  509. package/dist/frontend/lowering/builtins/fs-streams.js +10 -11
  510. package/dist/frontend/lowering/builtins/fs-streams.js.map +1 -1
  511. package/dist/frontend/lowering/builtins/ipc.js +45 -8
  512. package/dist/frontend/lowering/builtins/ipc.js.map +1 -1
  513. package/dist/frontend/lowering/builtins/json.js +284 -24
  514. package/dist/frontend/lowering/builtins/json.js.map +1 -1
  515. package/dist/frontend/lowering/builtins/key-object.js +4 -4
  516. package/dist/frontend/lowering/builtins/key-object.js.map +1 -1
  517. package/dist/frontend/lowering/builtins/module-bindings.d.ts +8 -0
  518. package/dist/frontend/lowering/builtins/module-bindings.js +71 -22
  519. package/dist/frontend/lowering/builtins/module-bindings.js.map +1 -1
  520. package/dist/frontend/lowering/builtins/module-calls.js +55 -44
  521. package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
  522. package/dist/frontend/lowering/builtins/module-resolution.d.ts +4 -3
  523. package/dist/frontend/lowering/builtins/module-resolution.js +24 -23
  524. package/dist/frontend/lowering/builtins/module-resolution.js.map +1 -1
  525. package/dist/frontend/lowering/builtins/navigator.d.ts +13 -0
  526. package/dist/frontend/lowering/builtins/navigator.js +40 -0
  527. package/dist/frontend/lowering/builtins/navigator.js.map +1 -0
  528. package/dist/frontend/lowering/builtins/net-address.d.ts +19 -0
  529. package/dist/frontend/lowering/builtins/net-address.js +156 -0
  530. package/dist/frontend/lowering/builtins/net-address.js.map +1 -0
  531. package/dist/frontend/lowering/builtins/numbers.js +25 -9
  532. package/dist/frontend/lowering/builtins/numbers.js.map +1 -1
  533. package/dist/frontend/lowering/builtins/operating-system.d.ts +4 -0
  534. package/dist/frontend/lowering/builtins/operating-system.js +25 -12
  535. package/dist/frontend/lowering/builtins/operating-system.js.map +1 -1
  536. package/dist/frontend/lowering/builtins/performance.d.ts +12 -0
  537. package/dist/frontend/lowering/builtins/performance.js +259 -8
  538. package/dist/frontend/lowering/builtins/performance.js.map +1 -1
  539. package/dist/frontend/lowering/builtins/process.d.ts +41 -1
  540. package/dist/frontend/lowering/builtins/process.js +505 -99
  541. package/dist/frontend/lowering/builtins/process.js.map +1 -1
  542. package/dist/frontend/lowering/builtins/promises.d.ts +5 -1
  543. package/dist/frontend/lowering/builtins/promises.js +326 -43
  544. package/dist/frontend/lowering/builtins/promises.js.map +1 -1
  545. package/dist/frontend/lowering/builtins/promisify-callback.d.ts +40 -0
  546. package/dist/frontend/lowering/builtins/promisify-callback.js +338 -0
  547. package/dist/frontend/lowering/builtins/promisify-callback.js.map +1 -0
  548. package/dist/frontend/lowering/builtins/properties.js +37 -1
  549. package/dist/frontend/lowering/builtins/properties.js.map +1 -1
  550. package/dist/frontend/lowering/builtins/querystring.js +14 -14
  551. package/dist/frontend/lowering/builtins/querystring.js.map +1 -1
  552. package/dist/frontend/lowering/builtins/readline.d.ts +12 -2
  553. package/dist/frontend/lowering/builtins/readline.js +136 -39
  554. package/dist/frontend/lowering/builtins/readline.js.map +1 -1
  555. package/dist/frontend/lowering/builtins/receiver-types.js +3 -5
  556. package/dist/frontend/lowering/builtins/receiver-types.js.map +1 -1
  557. package/dist/frontend/lowering/builtins/reflection.js +42 -14
  558. package/dist/frontend/lowering/builtins/reflection.js.map +1 -1
  559. package/dist/frontend/lowering/builtins/runtime-constructor.d.ts +26 -0
  560. package/dist/frontend/lowering/builtins/runtime-constructor.js +165 -0
  561. package/dist/frontend/lowering/builtins/runtime-constructor.js.map +1 -0
  562. package/dist/frontend/lowering/builtins/strings.js +101 -12
  563. package/dist/frontend/lowering/builtins/strings.js.map +1 -1
  564. package/dist/frontend/lowering/builtins/text-codecs.js +41 -38
  565. package/dist/frontend/lowering/builtins/text-codecs.js.map +1 -1
  566. package/dist/frontend/lowering/builtins/timers.js +79 -30
  567. package/dist/frontend/lowering/builtins/timers.js.map +1 -1
  568. package/dist/frontend/lowering/builtins/typed-array-members.d.ts +7 -0
  569. package/dist/frontend/lowering/builtins/typed-array-members.js +160 -0
  570. package/dist/frontend/lowering/builtins/typed-array-members.js.map +1 -0
  571. package/dist/frontend/lowering/builtins/url.d.ts +3 -0
  572. package/dist/frontend/lowering/builtins/url.js +120 -17
  573. package/dist/frontend/lowering/builtins/url.js.map +1 -1
  574. package/dist/frontend/lowering/builtins/util-types.js +20 -4
  575. package/dist/frontend/lowering/builtins/util-types.js.map +1 -1
  576. package/dist/frontend/lowering/builtins/v8.d.ts +11 -0
  577. package/dist/frontend/lowering/builtins/v8.js +105 -0
  578. package/dist/frontend/lowering/builtins/v8.js.map +1 -0
  579. package/dist/frontend/lowering/builtins/webassembly.d.ts +33 -0
  580. package/dist/frontend/lowering/builtins/webassembly.js +388 -0
  581. package/dist/frontend/lowering/builtins/webassembly.js.map +1 -0
  582. package/dist/frontend/lowering/builtins/webcrypto.d.ts +20 -0
  583. package/dist/frontend/lowering/builtins/webcrypto.js +112 -0
  584. package/dist/frontend/lowering/builtins/webcrypto.js.map +1 -0
  585. package/dist/frontend/lowering/builtins/workers.d.ts +12 -0
  586. package/dist/frontend/lowering/builtins/workers.js +193 -8
  587. package/dist/frontend/lowering/builtins/workers.js.map +1 -1
  588. package/dist/frontend/lowering/call-arguments.js +69 -14
  589. package/dist/frontend/lowering/call-arguments.js.map +1 -1
  590. package/dist/frontend/lowering/call-signatures.d.ts +23 -1
  591. package/dist/frontend/lowering/call-signatures.js +379 -55
  592. package/dist/frontend/lowering/call-signatures.js.map +1 -1
  593. package/dist/frontend/lowering/checked-promise-all.d.ts +3 -0
  594. package/dist/frontend/lowering/checked-promise-all.js +1 -1
  595. package/dist/frontend/lowering/checked-promise-all.js.map +1 -1
  596. package/dist/frontend/lowering/cjs-exports-object.d.ts +53 -0
  597. package/dist/frontend/lowering/cjs-exports-object.js +561 -0
  598. package/dist/frontend/lowering/cjs-exports-object.js.map +1 -0
  599. package/dist/frontend/lowering/cjs-inline-require.d.ts +86 -0
  600. package/dist/frontend/lowering/cjs-inline-require.js +314 -0
  601. package/dist/frontend/lowering/cjs-inline-require.js.map +1 -0
  602. package/dist/frontend/lowering/cjs-tsc-interop.d.ts +28 -0
  603. package/dist/frontend/lowering/cjs-tsc-interop.js +208 -0
  604. package/dist/frontend/lowering/cjs-tsc-interop.js.map +1 -0
  605. package/dist/frontend/lowering/class-attributes.d.ts +19 -0
  606. package/dist/frontend/lowering/class-attributes.js +378 -0
  607. package/dist/frontend/lowering/class-attributes.js.map +1 -0
  608. package/dist/frontend/lowering/class-callbacks.d.ts +3 -1
  609. package/dist/frontend/lowering/class-callbacks.js +21 -10
  610. package/dist/frontend/lowering/class-callbacks.js.map +1 -1
  611. package/dist/frontend/lowering/class-construction.js +49 -4
  612. package/dist/frontend/lowering/class-construction.js.map +1 -1
  613. package/dist/frontend/lowering/class-descriptors.d.ts +2 -0
  614. package/dist/frontend/lowering/class-descriptors.js +8 -8
  615. package/dist/frontend/lowering/class-descriptors.js.map +1 -1
  616. package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +64 -0
  617. package/dist/frontend/lowering/class-dynamic-dispatch.js +1124 -90
  618. package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
  619. package/dist/frontend/lowering/class-instance-constructor.js +1 -1
  620. package/dist/frontend/lowering/class-instance-constructor.js.map +1 -1
  621. package/dist/frontend/lowering/class-iterables.d.ts +11 -0
  622. package/dist/frontend/lowering/class-iterables.js +31 -0
  623. package/dist/frontend/lowering/class-iterables.js.map +1 -0
  624. package/dist/frontend/lowering/class-method-mutations.js +73 -35
  625. package/dist/frontend/lowering/class-method-mutations.js.map +1 -1
  626. package/dist/frontend/lowering/class-method-values.js +56 -10
  627. package/dist/frontend/lowering/class-method-values.js.map +1 -1
  628. package/dist/frontend/lowering/class-protocol-dispatch.js +24 -22
  629. package/dist/frontend/lowering/class-protocol-dispatch.js.map +1 -1
  630. package/dist/frontend/lowering/class-protocols.d.ts +10 -0
  631. package/dist/frontend/lowering/class-protocols.js +76 -45
  632. package/dist/frontend/lowering/class-protocols.js.map +1 -1
  633. package/dist/frontend/lowering/class-prototypes.d.ts +6 -0
  634. package/dist/frontend/lowering/class-prototypes.js +86 -19
  635. package/dist/frontend/lowering/class-prototypes.js.map +1 -1
  636. package/dist/frontend/lowering/class-runtime-statics.js +1 -1
  637. package/dist/frontend/lowering/class-runtime-statics.js.map +1 -1
  638. package/dist/frontend/lowering/class-static-data.js +2 -2
  639. package/dist/frontend/lowering/class-static-data.js.map +1 -1
  640. package/dist/frontend/lowering/class-to-primitive.d.ts +25 -0
  641. package/dist/frontend/lowering/class-to-primitive.js +264 -0
  642. package/dist/frontend/lowering/class-to-primitive.js.map +1 -0
  643. package/dist/frontend/lowering/class-unions.d.ts +25 -0
  644. package/dist/frontend/lowering/class-unions.js +102 -1
  645. package/dist/frontend/lowering/class-unions.js.map +1 -1
  646. package/dist/frontend/lowering/code-generation.d.ts +14 -0
  647. package/dist/frontend/lowering/code-generation.js +127 -0
  648. package/dist/frontend/lowering/code-generation.js.map +1 -0
  649. package/dist/frontend/lowering/coercions/fresh-spread.d.ts +13 -0
  650. package/dist/frontend/lowering/coercions/fresh-spread.js +95 -0
  651. package/dist/frontend/lowering/coercions/fresh-spread.js.map +1 -0
  652. package/dist/frontend/lowering/coercions/function-adapters.d.ts +16 -2
  653. package/dist/frontend/lowering/coercions/function-adapters.js +239 -68
  654. package/dist/frontend/lowering/coercions/function-adapters.js.map +1 -1
  655. package/dist/frontend/lowering/coercions/structural-plans.js +25 -3
  656. package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -1
  657. package/dist/frontend/lowering/coercions/structural.js +35 -3
  658. package/dist/frontend/lowering/coercions/structural.js.map +1 -1
  659. package/dist/frontend/lowering/coercions/unions.d.ts +15 -0
  660. package/dist/frontend/lowering/coercions/unions.js +57 -1
  661. package/dist/frontend/lowering/coercions/unions.js.map +1 -1
  662. package/dist/frontend/lowering/collection-ingestion.js +2 -2
  663. package/dist/frontend/lowering/collection-ingestion.js.map +1 -1
  664. package/dist/frontend/lowering/collection-narrowing.js +2 -4
  665. package/dist/frontend/lowering/collection-narrowing.js.map +1 -1
  666. package/dist/frontend/lowering/construction-escapes.js +8 -8
  667. package/dist/frontend/lowering/construction-escapes.js.map +1 -1
  668. package/dist/frontend/lowering/construction-escapes.test.js +4 -4
  669. package/dist/frontend/lowering/construction-escapes.test.js.map +1 -1
  670. package/dist/frontend/lowering/constructor-returns.d.ts +61 -0
  671. package/dist/frontend/lowering/constructor-returns.js +477 -0
  672. package/dist/frontend/lowering/constructor-returns.js.map +1 -0
  673. package/dist/frontend/lowering/containers/array-callback-call.js +1 -1
  674. package/dist/frontend/lowering/containers/array-callback-call.js.map +1 -1
  675. package/dist/frontend/lowering/containers/array-callbacks.d.ts +17 -0
  676. package/dist/frontend/lowering/containers/array-callbacks.js +287 -118
  677. package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
  678. package/dist/frontend/lowering/containers/array-concat.js +1 -1
  679. package/dist/frontend/lowering/containers/array-concat.js.map +1 -1
  680. package/dist/frontend/lowering/containers/array-construction.d.ts +0 -1
  681. package/dist/frontend/lowering/containers/array-construction.js +58 -13
  682. package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
  683. package/dist/frontend/lowering/containers/array-from-async.d.ts +6 -5
  684. package/dist/frontend/lowering/containers/array-from-async.js +159 -14
  685. package/dist/frontend/lowering/containers/array-from-async.js.map +1 -1
  686. package/dist/frontend/lowering/containers/array-methods.js +94 -77
  687. package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
  688. package/dist/frontend/lowering/containers/array-pipelines.js +1 -0
  689. package/dist/frontend/lowering/containers/array-pipelines.js.map +1 -1
  690. package/dist/frontend/lowering/containers/bytes.d.ts +9 -0
  691. package/dist/frontend/lowering/containers/bytes.js +649 -113
  692. package/dist/frontend/lowering/containers/bytes.js.map +1 -1
  693. package/dist/frontend/lowering/containers/callback-arguments.d.ts +9 -1
  694. package/dist/frontend/lowering/containers/callback-arguments.js +55 -5
  695. package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -1
  696. package/dist/frontend/lowering/containers/collection-grouping.d.ts +7 -8
  697. package/dist/frontend/lowering/containers/collection-grouping.js +217 -26
  698. package/dist/frontend/lowering/containers/collection-grouping.js.map +1 -1
  699. package/dist/frontend/lowering/containers/collection-methods.js +126 -28
  700. package/dist/frontend/lowering/containers/collection-methods.js.map +1 -1
  701. package/dist/frontend/lowering/containers/dynamic-receivers.js +1 -1
  702. package/dist/frontend/lowering/containers/dynamic-receivers.js.map +1 -1
  703. package/dist/frontend/lowering/containers/exec-result-uses.js +2 -2
  704. package/dist/frontend/lowering/containers/exec-result-uses.js.map +1 -1
  705. package/dist/frontend/lowering/containers/for-of.d.ts +6 -0
  706. package/dist/frontend/lowering/containers/for-of.js +19 -19
  707. package/dist/frontend/lowering/containers/for-of.js.map +1 -1
  708. package/dist/frontend/lowering/containers/indexed-objects.js +142 -57
  709. package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
  710. package/dist/frontend/lowering/containers/iterator-helpers.d.ts +53 -4
  711. package/dist/frontend/lowering/containers/iterator-helpers.js +1581 -462
  712. package/dist/frontend/lowering/containers/iterator-helpers.js.map +1 -1
  713. package/dist/frontend/lowering/containers/match-row-uses.d.ts +17 -0
  714. package/dist/frontend/lowering/containers/match-row-uses.js +264 -0
  715. package/dist/frontend/lowering/containers/match-row-uses.js.map +1 -0
  716. package/dist/frontend/lowering/containers/string-and-regexp.d.ts +14 -0
  717. package/dist/frontend/lowering/containers/string-and-regexp.js +455 -30
  718. package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
  719. package/dist/frontend/lowering/containers/string-replacement.js +1 -1
  720. package/dist/frontend/lowering/containers/string-replacement.js.map +1 -1
  721. package/dist/frontend/lowering/cycle-initialization.d.ts +30 -10
  722. package/dist/frontend/lowering/cycle-initialization.js +191 -35
  723. package/dist/frontend/lowering/cycle-initialization.js.map +1 -1
  724. package/dist/frontend/lowering/deferred-module-initializers.js +47 -43
  725. package/dist/frontend/lowering/deferred-module-initializers.js.map +1 -1
  726. package/dist/frontend/lowering/devirtualize.d.ts +1 -1
  727. package/dist/frontend/lowering/devirtualize.js +27 -7
  728. package/dist/frontend/lowering/devirtualize.js.map +1 -1
  729. package/dist/frontend/lowering/divergences.d.ts +0 -5
  730. package/dist/frontend/lowering/divergences.js +62 -125
  731. package/dist/frontend/lowering/divergences.js.map +1 -1
  732. package/dist/frontend/lowering/dyn-streams.d.ts +25 -0
  733. package/dist/frontend/lowering/dyn-streams.js +257 -0
  734. package/dist/frontend/lowering/dyn-streams.js.map +1 -0
  735. package/dist/frontend/lowering/error-methods.js +4 -1
  736. package/dist/frontend/lowering/error-methods.js.map +1 -1
  737. package/dist/frontend/lowering/error-name-order.d.ts +19 -0
  738. package/dist/frontend/lowering/error-name-order.js +93 -0
  739. package/dist/frontend/lowering/error-name-order.js.map +1 -0
  740. package/dist/frontend/lowering/expressions/array-literals.d.ts +21 -0
  741. package/dist/frontend/lowering/expressions/array-literals.js +723 -0
  742. package/dist/frontend/lowering/expressions/array-literals.js.map +1 -0
  743. package/dist/frontend/lowering/expressions/binary.d.ts +35 -0
  744. package/dist/frontend/lowering/expressions/binary.js +2557 -0
  745. package/dist/frontend/lowering/expressions/binary.js.map +1 -0
  746. package/dist/frontend/lowering/expressions/element-access.d.ts +31 -0
  747. package/dist/frontend/lowering/expressions/element-access.js +1804 -0
  748. package/dist/frontend/lowering/expressions/element-access.js.map +1 -0
  749. package/dist/frontend/lowering/expressions/evaluation-safety.js +4 -3
  750. package/dist/frontend/lowering/expressions/evaluation-safety.js.map +1 -1
  751. package/dist/frontend/lowering/expressions/hosted-narrowing.d.ts +38 -0
  752. package/dist/frontend/lowering/expressions/hosted-narrowing.js +160 -0
  753. package/dist/frontend/lowering/expressions/hosted-narrowing.js.map +1 -0
  754. package/dist/frontend/lowering/expressions/identifiers.d.ts +4 -0
  755. package/dist/frontend/lowering/expressions/identifiers.js +830 -0
  756. package/dist/frontend/lowering/expressions/identifiers.js.map +1 -0
  757. package/dist/frontend/lowering/expressions/keyed-field-targets.d.ts +52 -0
  758. package/dist/frontend/lowering/expressions/keyed-field-targets.js +307 -0
  759. package/dist/frontend/lowering/expressions/keyed-field-targets.js.map +1 -0
  760. package/dist/frontend/lowering/expressions/narrowing.d.ts +37 -0
  761. package/dist/frontend/lowering/expressions/narrowing.js +1337 -0
  762. package/dist/frontend/lowering/expressions/narrowing.js.map +1 -0
  763. package/dist/frontend/lowering/expressions/native-proxy.js +4 -4
  764. package/dist/frontend/lowering/expressions/native-proxy.js.map +1 -1
  765. package/dist/frontend/lowering/expressions/nullish-assignment.js +45 -0
  766. package/dist/frontend/lowering/expressions/nullish-assignment.js.map +1 -1
  767. package/dist/frontend/lowering/expressions/object-literals.d.ts +10 -0
  768. package/dist/frontend/lowering/expressions/object-literals.js +301 -86
  769. package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
  770. package/dist/frontend/lowering/expressions/optional-chains.d.ts +3 -2
  771. package/dist/frontend/lowering/expressions/optional-chains.js +103 -17
  772. package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
  773. package/dist/frontend/lowering/expressions/property-access.d.ts +115 -0
  774. package/dist/frontend/lowering/expressions/property-access.js +3787 -0
  775. package/dist/frontend/lowering/expressions/property-access.js.map +1 -0
  776. package/dist/frontend/lowering/expressions/relational.d.ts +28 -0
  777. package/dist/frontend/lowering/expressions/relational.js +1724 -0
  778. package/dist/frontend/lowering/expressions/relational.js.map +1 -0
  779. package/dist/frontend/lowering/expressions/typeof.d.ts +22 -0
  780. package/dist/frontend/lowering/expressions/typeof.js +551 -0
  781. package/dist/frontend/lowering/expressions/typeof.js.map +1 -0
  782. package/dist/frontend/lowering/expressions/union-fields.js +1 -1
  783. package/dist/frontend/lowering/expressions/union-fields.js.map +1 -1
  784. package/dist/frontend/lowering/expressions/updates.d.ts +21 -0
  785. package/dist/frontend/lowering/expressions/updates.js +780 -0
  786. package/dist/frontend/lowering/expressions/updates.js.map +1 -0
  787. package/dist/frontend/lowering/function-context.d.ts +10 -0
  788. package/dist/frontend/lowering/function-context.js +11 -1
  789. package/dist/frontend/lowering/function-context.js.map +1 -1
  790. package/dist/frontend/lowering/function-returns.js +52 -28
  791. package/dist/frontend/lowering/function-returns.js.map +1 -1
  792. package/dist/frontend/lowering/general-streams.d.ts +25 -0
  793. package/dist/frontend/lowering/general-streams.js +108 -0
  794. package/dist/frontend/lowering/general-streams.js.map +1 -0
  795. package/dist/frontend/lowering/generator-delegation.d.ts +8 -0
  796. package/dist/frontend/lowering/generator-delegation.js +191 -1
  797. package/dist/frontend/lowering/generator-delegation.js.map +1 -1
  798. package/dist/frontend/lowering/generator-dynamic-dispatch.d.ts +7 -0
  799. package/dist/frontend/lowering/generator-dynamic-dispatch.js +172 -69
  800. package/dist/frontend/lowering/generator-dynamic-dispatch.js.map +1 -1
  801. package/dist/frontend/lowering/generic-functions.d.ts +43 -0
  802. package/dist/frontend/lowering/generic-functions.js +593 -118
  803. package/dist/frontend/lowering/generic-functions.js.map +1 -1
  804. package/dist/frontend/lowering/handle-properties.d.ts +24 -0
  805. package/dist/frontend/lowering/handle-properties.js +281 -0
  806. package/dist/frontend/lowering/handle-properties.js.map +1 -0
  807. package/dist/frontend/lowering/import-meta.js +2 -2
  808. package/dist/frontend/lowering/import-meta.js.map +1 -1
  809. package/dist/frontend/lowering/intern-tables.js +10 -9
  810. package/dist/frontend/lowering/intern-tables.js.map +1 -1
  811. package/dist/frontend/lowering/iterable-spelling.d.ts +7 -0
  812. package/dist/frontend/lowering/iterable-spelling.js +38 -0
  813. package/dist/frontend/lowering/iterable-spelling.js.map +1 -0
  814. package/dist/frontend/lowering/iterator-adapters.d.ts +19 -0
  815. package/dist/frontend/lowering/iterator-adapters.js +331 -3
  816. package/dist/frontend/lowering/iterator-adapters.js.map +1 -1
  817. package/dist/frontend/lowering/js-class-fields.d.ts +28 -0
  818. package/dist/frontend/lowering/js-class-fields.js +170 -0
  819. package/dist/frontend/lowering/js-class-fields.js.map +1 -0
  820. package/dist/frontend/lowering/js-dynamic-objects.d.ts +15 -0
  821. package/dist/frontend/lowering/js-dynamic-objects.js +299 -0
  822. package/dist/frontend/lowering/js-dynamic-objects.js.map +1 -0
  823. package/dist/frontend/lowering/js-dynamic-objects.test.d.ts +1 -0
  824. package/dist/frontend/lowering/js-dynamic-objects.test.js +35 -0
  825. package/dist/frontend/lowering/js-dynamic-objects.test.js.map +1 -0
  826. package/dist/frontend/lowering/json-require.d.ts +22 -0
  827. package/dist/frontend/lowering/json-require.js +131 -0
  828. package/dist/frontend/lowering/json-require.js.map +1 -0
  829. package/dist/frontend/lowering/key-order-witness.d.ts +44 -0
  830. package/dist/frontend/lowering/key-order-witness.js +641 -0
  831. package/dist/frontend/lowering/key-order-witness.js.map +1 -0
  832. package/dist/frontend/lowering/key-order-witness.test.d.ts +1 -0
  833. package/dist/frontend/lowering/key-order-witness.test.js +239 -0
  834. package/dist/frontend/lowering/key-order-witness.test.js.map +1 -0
  835. package/dist/frontend/lowering/lifetime-regions.js +7 -7
  836. package/dist/frontend/lowering/lifetime-regions.js.map +1 -1
  837. package/dist/frontend/lowering/lower-array-sort.d.ts +33 -15
  838. package/dist/frontend/lowering/lower-array-sort.js +117 -21
  839. package/dist/frontend/lowering/lower-array-sort.js.map +1 -1
  840. package/dist/frontend/lowering/lower-array-sort.test.js +93 -14
  841. package/dist/frontend/lowering/lower-array-sort.test.js.map +1 -1
  842. package/dist/frontend/lowering/lower-assert.js +61 -60
  843. package/dist/frontend/lowering/lower-assert.js.map +1 -1
  844. package/dist/frontend/lowering/lower-async-iteration.d.ts +10 -1
  845. package/dist/frontend/lowering/lower-async-iteration.js +34 -6
  846. package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
  847. package/dist/frontend/lowering/lower-builtin-values.d.ts +5 -0
  848. package/dist/frontend/lowering/lower-builtin-values.js +33 -3
  849. package/dist/frontend/lowering/lower-builtin-values.js.map +1 -1
  850. package/dist/frontend/lowering/lower-calls.js +1404 -448
  851. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  852. package/dist/frontend/lowering/lower-classes.d.ts +54 -3
  853. package/dist/frontend/lowering/lower-classes.js +1529 -472
  854. package/dist/frontend/lowering/lower-classes.js.map +1 -1
  855. package/dist/frontend/lowering/lower-comptime.d.ts +4 -2
  856. package/dist/frontend/lowering/lower-comptime.js +111 -13
  857. package/dist/frontend/lowering/lower-comptime.js.map +1 -1
  858. package/dist/frontend/lowering/lower-console.js +13 -11
  859. package/dist/frontend/lowering/lower-console.js.map +1 -1
  860. package/dist/frontend/lowering/lower-dgram.d.ts +10 -0
  861. package/dist/frontend/lowering/lower-dgram.js +241 -21
  862. package/dist/frontend/lowering/lower-dgram.js.map +1 -1
  863. package/dist/frontend/lowering/lower-enums.js +113 -14
  864. package/dist/frontend/lowering/lower-enums.js.map +1 -1
  865. package/dist/frontend/lowering/lower-event-emitter.d.ts +16 -7
  866. package/dist/frontend/lowering/lower-event-emitter.js +258 -70
  867. package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
  868. package/dist/frontend/lowering/lower-event-target.js +2 -2
  869. package/dist/frontend/lowering/lower-event-target.js.map +1 -1
  870. package/dist/frontend/lowering/lower-expando.js +17 -13
  871. package/dist/frontend/lowering/lower-expando.js.map +1 -1
  872. package/dist/frontend/lowering/lower-exprs.d.ts +188 -186
  873. package/dist/frontend/lowering/lower-exprs.js +1509 -12486
  874. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  875. package/dist/frontend/lowering/lower-functions.js +72 -22
  876. package/dist/frontend/lowering/lower-functions.js.map +1 -1
  877. package/dist/frontend/lowering/lower-generators.d.ts +6 -0
  878. package/dist/frontend/lowering/lower-generators.js +39 -20
  879. package/dist/frontend/lowering/lower-generators.js.map +1 -1
  880. package/dist/frontend/lowering/lower-global-value.js +5 -1
  881. package/dist/frontend/lowering/lower-global-value.js.map +1 -1
  882. package/dist/frontend/lowering/lower-inspect.js +900 -107
  883. package/dist/frontend/lowering/lower-inspect.js.map +1 -1
  884. package/dist/frontend/lowering/lower-mixins.js +23 -20
  885. package/dist/frontend/lowering/lower-mixins.js.map +1 -1
  886. package/dist/frontend/lowering/lower-mock.d.ts +8 -1
  887. package/dist/frontend/lowering/lower-mock.js +185 -18
  888. package/dist/frontend/lowering/lower-mock.js.map +1 -1
  889. package/dist/frontend/lowering/lower-modules.d.ts +11 -3
  890. package/dist/frontend/lowering/lower-modules.js +445 -94
  891. package/dist/frontend/lowering/lower-modules.js.map +1 -1
  892. package/dist/frontend/lowering/lower-namespaces.d.ts +6 -0
  893. package/dist/frontend/lowering/lower-namespaces.js +65 -33
  894. package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
  895. package/dist/frontend/lowering/lower-node-module.d.ts +16 -0
  896. package/dist/frontend/lowering/lower-node-module.js +147 -14
  897. package/dist/frontend/lowering/lower-node-module.js.map +1 -1
  898. package/dist/frontend/lowering/lower-server.d.ts +6 -6
  899. package/dist/frontend/lowering/lower-server.js +514 -101
  900. package/dist/frontend/lowering/lower-server.js.map +1 -1
  901. package/dist/frontend/lowering/lower-stdlib.d.ts +4 -0
  902. package/dist/frontend/lowering/lower-stdlib.js +179 -118
  903. package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
  904. package/dist/frontend/lowering/lower-stmts.d.ts +30 -7
  905. package/dist/frontend/lowering/lower-stmts.js +1950 -433
  906. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  907. package/dist/frontend/lowering/lower-stream.d.ts +3 -0
  908. package/dist/frontend/lowering/lower-stream.js +398 -56
  909. package/dist/frontend/lowering/lower-stream.js.map +1 -1
  910. package/dist/frontend/lowering/lower-test.d.ts +3 -0
  911. package/dist/frontend/lowering/lower-test.js +437 -62
  912. package/dist/frontend/lowering/lower-test.js.map +1 -1
  913. package/dist/frontend/lowering/lower-timers.js +96 -32
  914. package/dist/frontend/lowering/lower-timers.js.map +1 -1
  915. package/dist/frontend/lowering/lower-url.js +1 -1
  916. package/dist/frontend/lowering/lower-url.js.map +1 -1
  917. package/dist/frontend/lowering/lowerer.d.ts +424 -27
  918. package/dist/frontend/lowering/lowerer.js +2062 -310
  919. package/dist/frontend/lowering/lowerer.js.map +1 -1
  920. package/dist/frontend/lowering/lowerer.test.js +10 -4
  921. package/dist/frontend/lowering/lowerer.test.js.map +1 -1
  922. package/dist/frontend/lowering/maybe-promise.d.ts +46 -0
  923. package/dist/frontend/lowering/maybe-promise.js +249 -0
  924. package/dist/frontend/lowering/maybe-promise.js.map +1 -0
  925. package/dist/frontend/lowering/module-member-this.d.ts +3 -0
  926. package/dist/frontend/lowering/module-member-this.js +262 -0
  927. package/dist/frontend/lowering/module-member-this.js.map +1 -0
  928. package/dist/frontend/lowering/module-namespace-elements.js +1 -1
  929. package/dist/frontend/lowering/module-namespace-elements.js.map +1 -1
  930. package/dist/frontend/lowering/nan-coded-reads.d.ts +3 -0
  931. package/dist/frontend/lowering/nan-coded-reads.js +45 -32
  932. package/dist/frontend/lowering/nan-coded-reads.js.map +1 -1
  933. package/dist/frontend/lowering/narrowing-stability.d.ts +18 -3
  934. package/dist/frontend/lowering/narrowing-stability.js +104 -32
  935. package/dist/frontend/lowering/narrowing-stability.js.map +1 -1
  936. package/dist/frontend/lowering/native-ffi.js +11 -11
  937. package/dist/frontend/lowering/native-ffi.js.map +1 -1
  938. package/dist/frontend/lowering/object-factory-new.js +6 -8
  939. package/dist/frontend/lowering/object-factory-new.js.map +1 -1
  940. package/dist/frontend/lowering/private-brands.d.ts +46 -0
  941. package/dist/frontend/lowering/private-brands.js +265 -0
  942. package/dist/frontend/lowering/private-brands.js.map +1 -0
  943. package/dist/frontend/lowering/promise-executor-adapter.d.ts +11 -0
  944. package/dist/frontend/lowering/promise-executor-adapter.js +87 -0
  945. package/dist/frontend/lowering/promise-executor-adapter.js.map +1 -0
  946. package/dist/frontend/lowering/rebindable-functions.d.ts +8 -0
  947. package/dist/frontend/lowering/rebindable-functions.js +54 -0
  948. package/dist/frontend/lowering/rebindable-functions.js.map +1 -0
  949. package/dist/frontend/lowering/require-initialization.d.ts +32 -0
  950. package/dist/frontend/lowering/require-initialization.js +246 -0
  951. package/dist/frontend/lowering/require-initialization.js.map +1 -0
  952. package/dist/frontend/lowering/runtime-optional-bounds.js +7 -7
  953. package/dist/frontend/lowering/runtime-optional-bounds.js.map +1 -1
  954. package/dist/frontend/lowering/runtime-optional-elements.js +12 -12
  955. package/dist/frontend/lowering/runtime-optional-elements.js.map +1 -1
  956. package/dist/frontend/lowering/runtime-optional-guards.js +10 -10
  957. package/dist/frontend/lowering/runtime-optional-guards.js.map +1 -1
  958. package/dist/frontend/lowering/runtime-optional-guards.test.js +1 -1
  959. package/dist/frontend/lowering/runtime-optional-guards.test.js.map +1 -1
  960. package/dist/frontend/lowering/runtime-optional-ownership.js +10 -9
  961. package/dist/frontend/lowering/runtime-optional-ownership.js.map +1 -1
  962. package/dist/frontend/lowering/runtime-optional-provenance.js +2 -2
  963. package/dist/frontend/lowering/runtime-optional-provenance.js.map +1 -1
  964. package/dist/frontend/lowering/runtime-optional-records.d.ts +35 -0
  965. package/dist/frontend/lowering/runtime-optional-records.js +205 -32
  966. package/dist/frontend/lowering/runtime-optional-records.js.map +1 -1
  967. package/dist/frontend/lowering/runtime-optional-records.test.js +19 -1
  968. package/dist/frontend/lowering/runtime-optional-records.test.js.map +1 -1
  969. package/dist/frontend/lowering/sanitize-class-types.test.js +2 -2
  970. package/dist/frontend/lowering/split-consumers.js +4 -4
  971. package/dist/frontend/lowering/split-consumers.js.map +1 -1
  972. package/dist/frontend/lowering/static-function-names.d.ts +28 -0
  973. package/dist/frontend/lowering/static-function-names.js +212 -0
  974. package/dist/frontend/lowering/static-function-names.js.map +1 -0
  975. package/dist/frontend/lowering/static-this.js +6 -6
  976. package/dist/frontend/lowering/static-this.js.map +1 -1
  977. package/dist/frontend/lowering/static-typeof.d.ts +26 -0
  978. package/dist/frontend/lowering/static-typeof.js +133 -0
  979. package/dist/frontend/lowering/static-typeof.js.map +1 -0
  980. package/dist/frontend/lowering/strict-mode.d.ts +5 -0
  981. package/dist/frontend/lowering/strict-mode.js +31 -0
  982. package/dist/frontend/lowering/strict-mode.js.map +1 -0
  983. package/dist/frontend/lowering/string-index-bounds.js +13 -12
  984. package/dist/frontend/lowering/string-index-bounds.js.map +1 -1
  985. package/dist/frontend/lowering/string-index.d.ts +12 -0
  986. package/dist/frontend/lowering/string-index.js +72 -1
  987. package/dist/frontend/lowering/string-index.js.map +1 -1
  988. package/dist/frontend/lowering/surfaces.d.ts +12 -3
  989. package/dist/frontend/lowering/surfaces.js +282 -45
  990. package/dist/frontend/lowering/surfaces.js.map +1 -1
  991. package/dist/frontend/lowering/symbol-fields.d.ts +7 -0
  992. package/dist/frontend/lowering/symbol-fields.js +204 -36
  993. package/dist/frontend/lowering/symbol-fields.js.map +1 -1
  994. package/dist/frontend/lowering/symbol-methods.d.ts +2 -1
  995. package/dist/frontend/lowering/symbol-methods.js +24 -6
  996. package/dist/frontend/lowering/symbol-methods.js.map +1 -1
  997. package/dist/frontend/lowering/thenables.d.ts +16 -0
  998. package/dist/frontend/lowering/thenables.js +124 -0
  999. package/dist/frontend/lowering/thenables.js.map +1 -0
  1000. package/dist/frontend/lowering/thread-slots.d.ts +13 -0
  1001. package/dist/frontend/lowering/thread-slots.js +208 -0
  1002. package/dist/frontend/lowering/thread-slots.js.map +1 -0
  1003. package/dist/frontend/lowering/typed-arguments.d.ts +74 -0
  1004. package/dist/frontend/lowering/typed-arguments.js +472 -0
  1005. package/dist/frontend/lowering/typed-arguments.js.map +1 -0
  1006. package/dist/frontend/lowering/union-retag.d.ts +8 -0
  1007. package/dist/frontend/lowering/union-retag.js +27 -0
  1008. package/dist/frontend/lowering/union-retag.js.map +1 -1
  1009. package/dist/frontend/lowering/union-retag.test.js +24 -1
  1010. package/dist/frontend/lowering/union-retag.test.js.map +1 -1
  1011. package/dist/frontend/lowering/var-hoisting.js +6 -6
  1012. package/dist/frontend/lowering/var-hoisting.js.map +1 -1
  1013. package/dist/frontend/lowering/width-lift.d.ts +4 -0
  1014. package/dist/frontend/mock-shapes.js +13 -6
  1015. package/dist/frontend/mock-shapes.js.map +1 -1
  1016. package/dist/frontend/module-source-candidates.js +1 -1
  1017. package/dist/frontend/module-source-candidates.js.map +1 -1
  1018. package/dist/frontend/module-source-candidates.test.js +2 -1
  1019. package/dist/frontend/module-source-candidates.test.js.map +1 -1
  1020. package/dist/frontend/module-syntax.js +8 -8
  1021. package/dist/frontend/module-syntax.js.map +1 -1
  1022. package/dist/frontend/npm-static-builtin-aliases.d.ts +8 -0
  1023. package/dist/frontend/npm-static-builtin-aliases.js +65 -0
  1024. package/dist/frontend/npm-static-builtin-aliases.js.map +1 -0
  1025. package/dist/frontend/npm-static-bundled-chunks.d.ts +58 -0
  1026. package/dist/frontend/npm-static-bundled-chunks.js +981 -0
  1027. package/dist/frontend/npm-static-bundled-chunks.js.map +1 -0
  1028. package/dist/frontend/npm-static-bundled-chunks.test.d.ts +1 -0
  1029. package/dist/frontend/npm-static-bundled-chunks.test.js +399 -0
  1030. package/dist/frontend/npm-static-bundled-chunks.test.js.map +1 -0
  1031. package/dist/frontend/npm-static-bundled-cjs.js +24 -23
  1032. package/dist/frontend/npm-static-bundled-cjs.js.map +1 -1
  1033. package/dist/frontend/npm-static-bundled-esm.d.ts +9 -0
  1034. package/dist/frontend/npm-static-bundled-esm.js +988 -0
  1035. package/dist/frontend/npm-static-bundled-esm.js.map +1 -0
  1036. package/dist/frontend/npm-static-bundled-esm.test.d.ts +1 -0
  1037. package/dist/frontend/npm-static-bundled-esm.test.js +336 -0
  1038. package/dist/frontend/npm-static-bundled-esm.test.js.map +1 -0
  1039. package/dist/frontend/npm-static-cjs-exports-alias.d.ts +2 -0
  1040. package/dist/frontend/npm-static-cjs-exports-alias.js +186 -0
  1041. package/dist/frontend/npm-static-cjs-exports-alias.js.map +1 -0
  1042. package/dist/frontend/npm-static-cjs-exports-alias.test.d.ts +1 -0
  1043. package/dist/frontend/npm-static-cjs-exports-alias.test.js +73 -0
  1044. package/dist/frontend/npm-static-cjs-exports-alias.test.js.map +1 -0
  1045. package/dist/frontend/npm-static-cjs-exports-var.d.ts +2 -0
  1046. package/dist/frontend/npm-static-cjs-exports-var.js +236 -0
  1047. package/dist/frontend/npm-static-cjs-exports-var.js.map +1 -0
  1048. package/dist/frontend/npm-static-declaration-syntax.js +102 -101
  1049. package/dist/frontend/npm-static-declaration-syntax.js.map +1 -1
  1050. package/dist/frontend/npm-static-enum-iife.d.ts +6 -0
  1051. package/dist/frontend/npm-static-enum-iife.js +280 -0
  1052. package/dist/frontend/npm-static-enum-iife.js.map +1 -0
  1053. package/dist/frontend/npm-static-enum-iife.test.d.ts +1 -0
  1054. package/dist/frontend/npm-static-enum-iife.test.js +116 -0
  1055. package/dist/frontend/npm-static-enum-iife.test.js.map +1 -0
  1056. package/dist/frontend/npm-static-prune.js +36 -24
  1057. package/dist/frontend/npm-static-prune.js.map +1 -1
  1058. package/dist/frontend/npm-static-rewrite-host.d.ts +4 -1
  1059. package/dist/frontend/npm-static-rewrite-host.js +14 -3
  1060. package/dist/frontend/npm-static-rewrite-host.js.map +1 -1
  1061. package/dist/frontend/npm-static-rewrite-syntax.d.ts +19 -0
  1062. package/dist/frontend/npm-static-rewrite-syntax.js +274 -101
  1063. package/dist/frontend/npm-static-rewrite-syntax.js.map +1 -1
  1064. package/dist/frontend/npm-static-subtyping.js +7 -9
  1065. package/dist/frontend/npm-static-subtyping.js.map +1 -1
  1066. package/dist/frontend/npm-static.d.ts +25 -1
  1067. package/dist/frontend/npm-static.js +212 -16
  1068. package/dist/frontend/npm-static.js.map +1 -1
  1069. package/dist/frontend/npm-static.test.js +22 -1
  1070. package/dist/frontend/npm-static.test.js.map +1 -1
  1071. package/dist/frontend/npm.js +13 -0
  1072. package/dist/frontend/npm.js.map +1 -1
  1073. package/dist/frontend/package-shims.d.ts +47 -0
  1074. package/dist/frontend/package-shims.js +300 -0
  1075. package/dist/frontend/package-shims.js.map +1 -0
  1076. package/dist/frontend/pipeline.js +230 -26
  1077. package/dist/frontend/pipeline.js.map +1 -1
  1078. package/dist/frontend/pipeline.test.js +22 -1
  1079. package/dist/frontend/pipeline.test.js.map +1 -1
  1080. package/dist/frontend/program-analysis.d.ts +6 -1
  1081. package/dist/frontend/program-analysis.js +7 -0
  1082. package/dist/frontend/program-analysis.js.map +1 -1
  1083. package/dist/frontend/program.d.ts +100 -2
  1084. package/dist/frontend/program.js +1627 -262
  1085. package/dist/frontend/program.js.map +1 -1
  1086. package/dist/frontend/program.test.js +76 -6
  1087. package/dist/frontend/program.test.js.map +1 -1
  1088. package/dist/frontend/resolve.js +49 -2
  1089. package/dist/frontend/resolve.js.map +1 -1
  1090. package/dist/frontend/resolve.test.js +49 -0
  1091. package/dist/frontend/resolve.test.js.map +1 -1
  1092. package/dist/frontend/services.d.ts +26 -1
  1093. package/dist/frontend/services.js +59 -3
  1094. package/dist/frontend/services.js.map +1 -1
  1095. package/dist/frontend/services.test.js +2 -1
  1096. package/dist/frontend/services.test.js.map +1 -1
  1097. package/dist/frontend/threads-import.js +1 -1
  1098. package/dist/frontend/threads-import.js.map +1 -1
  1099. package/dist/frontend/tier-analysis.d.ts +71 -0
  1100. package/dist/frontend/tier-analysis.js +522 -0
  1101. package/dist/frontend/tier-analysis.js.map +1 -0
  1102. package/dist/frontend/ts7/api-conformance.d.ts +234 -0
  1103. package/dist/frontend/ts7/api-conformance.js +7 -0
  1104. package/dist/frontend/ts7/api-conformance.js.map +1 -0
  1105. package/dist/frontend/ts7/ast-guards.generated.js +2 -1
  1106. package/dist/frontend/ts7/ast-guards.generated.js.map +1 -1
  1107. package/dist/frontend/ts7/ast-node.d.ts +47 -25
  1108. package/dist/frontend/ts7/ast-node.js +64 -18
  1109. package/dist/frontend/ts7/ast-node.js.map +1 -1
  1110. package/dist/frontend/ts7/ast-node.test.js +36 -12
  1111. package/dist/frontend/ts7/ast-node.test.js.map +1 -1
  1112. package/dist/frontend/ts7/ast-types.d.ts +10 -3
  1113. package/dist/frontend/ts7/ast-types.generated.d.ts +39 -39
  1114. package/dist/frontend/ts7/ast.d.ts +1 -0
  1115. package/dist/frontend/ts7/ast.js +3 -2
  1116. package/dist/frontend/ts7/ast.js.map +1 -1
  1117. package/dist/frontend/ts7/checker-backend.d.ts +23 -0
  1118. package/dist/frontend/ts7/checker-backend.js +88 -0
  1119. package/dist/frontend/ts7/checker-backend.js.map +1 -0
  1120. package/dist/frontend/ts7/checker-backend.test.d.ts +1 -0
  1121. package/dist/frontend/ts7/checker-backend.test.js +63 -0
  1122. package/dist/frontend/ts7/checker-backend.test.js.map +1 -0
  1123. package/dist/frontend/ts7/checker-cache.d.ts +0 -3
  1124. package/dist/frontend/ts7/checker-cache.js +0 -6
  1125. package/dist/frontend/ts7/checker-cache.js.map +1 -1
  1126. package/dist/frontend/ts7/checker.d.ts +18 -11
  1127. package/dist/frontend/ts7/checker.js +42 -55
  1128. package/dist/frontend/ts7/checker.js.map +1 -1
  1129. package/dist/frontend/ts7/checker.test.js +10 -7
  1130. package/dist/frontend/ts7/checker.test.js.map +1 -1
  1131. package/dist/frontend/ts7/diagnostic.d.ts +19 -0
  1132. package/dist/frontend/ts7/diagnostic.js +22 -0
  1133. package/dist/frontend/ts7/diagnostic.js.map +1 -0
  1134. package/dist/frontend/ts7/node-functions.d.ts +8 -0
  1135. package/dist/frontend/ts7/node-functions.js +18 -0
  1136. package/dist/frontend/ts7/node-functions.js.map +1 -0
  1137. package/dist/frontend/ts7/program-host.d.ts +10 -5
  1138. package/dist/frontend/ts7/program-host.js +19 -0
  1139. package/dist/frontend/ts7/program-host.js.map +1 -1
  1140. package/dist/frontend/ts7/rpc-api.d.ts +5 -1
  1141. package/dist/frontend/ts7/rpc-api.js +8 -1
  1142. package/dist/frontend/ts7/rpc-api.js.map +1 -1
  1143. package/dist/frontend/ts7/semantic-checker.d.ts +13 -6
  1144. package/dist/frontend/ts7/semantic-checker.js +26 -8
  1145. package/dist/frontend/ts7/semantic-checker.js.map +1 -1
  1146. package/dist/frontend/ts7/semantic-checker.test.js +12 -9
  1147. package/dist/frontend/ts7/semantic-checker.test.js.map +1 -1
  1148. package/dist/frontend/ts7/semantic-model.d.ts +57 -24
  1149. package/dist/frontend/ts7/semantic-model.js +114 -16
  1150. package/dist/frontend/ts7/semantic-model.js.map +1 -1
  1151. package/dist/frontend/ts7/semantic-model.test.js +4 -4
  1152. package/dist/frontend/ts7/semantic-model.test.js.map +1 -1
  1153. package/dist/frontend/ts7/semantic-types.d.ts +7 -3
  1154. package/dist/frontend/ts7/semantic-types.js +1 -1
  1155. package/dist/frontend/ts7/semantic-types.js.map +1 -1
  1156. package/dist/frontend/ts7/session.d.ts +30 -15
  1157. package/dist/frontend/ts7/session.js +8 -5
  1158. package/dist/frontend/ts7/session.js.map +1 -1
  1159. package/dist/frontend/ts7/session.test.js +9 -5
  1160. package/dist/frontend/ts7/session.test.js.map +1 -1
  1161. package/dist/frontend/ts7/source-parser.d.ts +6 -2
  1162. package/dist/frontend/ts7/source-parser.js +24 -3
  1163. package/dist/frontend/ts7/source-parser.js.map +1 -1
  1164. package/dist/frontend/ts7/source-parser.test.js +38 -17
  1165. package/dist/frontend/ts7/source-parser.test.js.map +1 -1
  1166. package/dist/frontend/type-mapper.d.ts +122 -2
  1167. package/dist/frontend/type-mapper.js +2735 -723
  1168. package/dist/frontend/type-mapper.js.map +1 -1
  1169. package/dist/frontend/type-only-imports.d.ts +28 -0
  1170. package/dist/frontend/type-only-imports.js +122 -0
  1171. package/dist/frontend/type-only-imports.js.map +1 -0
  1172. package/dist/frontend/worker-target.js +8 -8
  1173. package/dist/frontend/worker-target.js.map +1 -1
  1174. package/dist/index.d.ts +4 -1
  1175. package/dist/index.js +87 -8
  1176. package/dist/index.js.map +1 -1
  1177. package/dist/ir/analysis.js +4 -2
  1178. package/dist/ir/analysis.js.map +1 -1
  1179. package/dist/ir/api.d.ts +1 -1
  1180. package/dist/ir/api.js +1 -1
  1181. package/dist/ir/api.js.map +1 -1
  1182. package/dist/ir/array-length-stability.d.ts +31 -0
  1183. package/dist/ir/array-length-stability.js +249 -0
  1184. package/dist/ir/array-length-stability.js.map +1 -0
  1185. package/dist/ir/array-length-stability.test.d.ts +1 -0
  1186. package/dist/ir/array-length-stability.test.js +134 -0
  1187. package/dist/ir/array-length-stability.test.js.map +1 -0
  1188. package/dist/ir/build.d.ts +2 -2
  1189. package/dist/ir/build.js +1 -1
  1190. package/dist/ir/build.js.map +1 -1
  1191. package/dist/ir/builtin-effects.js +116 -0
  1192. package/dist/ir/builtin-effects.js.map +1 -1
  1193. package/dist/ir/builtin-signatures.d.ts +1 -1
  1194. package/dist/ir/builtin-signatures.js +540 -29
  1195. package/dist/ir/builtin-signatures.js.map +1 -1
  1196. package/dist/ir/byte-numbers.js +3 -0
  1197. package/dist/ir/byte-numbers.js.map +1 -1
  1198. package/dist/ir/callback-specialization.d.ts +37 -0
  1199. package/dist/ir/callback-specialization.js +459 -0
  1200. package/dist/ir/callback-specialization.js.map +1 -0
  1201. package/dist/ir/callback-specialization.test.d.ts +1 -0
  1202. package/dist/ir/callback-specialization.test.js +208 -0
  1203. package/dist/ir/callback-specialization.test.js.map +1 -0
  1204. package/dist/ir/capture-values.d.ts +0 -1
  1205. package/dist/ir/capture-values.js +51 -40
  1206. package/dist/ir/capture-values.js.map +1 -1
  1207. package/dist/ir/constant-globals.test.js +1 -1
  1208. package/dist/ir/constant-tables.test.js +1 -1
  1209. package/dist/ir/field-values.test.js +1 -1
  1210. package/dist/ir/final-fields.test.js +1 -1
  1211. package/dist/ir/function-references.test.js +9 -1
  1212. package/dist/ir/function-references.test.js.map +1 -1
  1213. package/dist/ir/init-only-globals.test.js +1 -1
  1214. package/dist/ir/initializer-bindings.test.js +1 -1
  1215. package/dist/ir/int32-slots.d.ts +14 -0
  1216. package/dist/ir/int32-slots.js +97 -14
  1217. package/dist/ir/int32-slots.js.map +1 -1
  1218. package/dist/ir/int32-slots.test.js +1 -1
  1219. package/dist/ir/integer-loop-facts.d.ts +7 -0
  1220. package/dist/ir/integer-loop-facts.js +103 -17
  1221. package/dist/ir/integer-loop-facts.js.map +1 -1
  1222. package/dist/ir/integer-loops.d.ts +1 -1
  1223. package/dist/ir/integer-loops.js +39 -9
  1224. package/dist/ir/integer-loops.js.map +1 -1
  1225. package/dist/ir/integer-loops.test.js +104 -0
  1226. package/dist/ir/integer-loops.test.js.map +1 -1
  1227. package/dist/ir/integer-ranges.d.ts +13 -1
  1228. package/dist/ir/integer-ranges.js +125 -26
  1229. package/dist/ir/integer-ranges.js.map +1 -1
  1230. package/dist/ir/integer-ranges.test.js +273 -2
  1231. package/dist/ir/integer-ranges.test.js.map +1 -1
  1232. package/dist/ir/intrinsic-signatures.js +6 -0
  1233. package/dist/ir/intrinsic-signatures.js.map +1 -1
  1234. package/dist/ir/ir.d.ts +221 -58
  1235. package/dist/ir/ir.js +127 -12
  1236. package/dist/ir/ir.js.map +1 -1
  1237. package/dist/ir/ir.test.js +10 -0
  1238. package/dist/ir/ir.test.js.map +1 -1
  1239. package/dist/ir/js-ic.d.ts +52 -0
  1240. package/dist/ir/js-ic.js +199 -0
  1241. package/dist/ir/js-ic.js.map +1 -0
  1242. package/dist/ir/js-ic.test.d.ts +1 -0
  1243. package/dist/ir/js-ic.test.js +148 -0
  1244. package/dist/ir/js-ic.test.js.map +1 -0
  1245. package/dist/ir/jsval.d.ts +8 -0
  1246. package/dist/ir/jsval.js +399 -0
  1247. package/dist/ir/jsval.js.map +1 -0
  1248. package/dist/ir/jsval.test.d.ts +1 -0
  1249. package/dist/ir/jsval.test.js +239 -0
  1250. package/dist/ir/jsval.test.js.map +1 -0
  1251. package/dist/ir/runtime-features.d.ts +183 -33
  1252. package/dist/ir/runtime-features.js +795 -422
  1253. package/dist/ir/runtime-features.js.map +1 -1
  1254. package/dist/ir/scalar-records.test.js +1 -1
  1255. package/dist/ir/self-captures.d.ts +33 -0
  1256. package/dist/ir/self-captures.js +245 -0
  1257. package/dist/ir/self-captures.js.map +1 -0
  1258. package/dist/ir/self-captures.test.d.ts +1 -0
  1259. package/dist/ir/self-captures.test.js +135 -0
  1260. package/dist/ir/self-captures.test.js.map +1 -0
  1261. package/dist/ir/serialize.d.ts +1 -1
  1262. package/dist/ir/serialize.js +7 -4
  1263. package/dist/ir/serialize.js.map +1 -1
  1264. package/dist/ir/tiers.d.ts +26 -0
  1265. package/dist/ir/tiers.js +101 -0
  1266. package/dist/ir/tiers.js.map +1 -0
  1267. package/dist/ir/tiers.test.d.ts +1 -0
  1268. package/dist/ir/tiers.test.js +140 -0
  1269. package/dist/ir/tiers.test.js.map +1 -0
  1270. package/dist/ir/traverse.js +201 -150
  1271. package/dist/ir/traverse.js.map +1 -1
  1272. package/dist/ir/traverse.test.js +33 -30
  1273. package/dist/ir/traverse.test.js.map +1 -1
  1274. package/dist/ir/unshare.js +65 -3
  1275. package/dist/ir/unshare.js.map +1 -1
  1276. package/dist/ir/unshare.test.js +1 -1
  1277. package/dist/ir/validate.js +196 -76
  1278. package/dist/ir/validate.js.map +1 -1
  1279. package/dist/ir/validate.test.js +41 -11
  1280. package/dist/ir/validate.test.js.map +1 -1
  1281. package/dist/library/fence-eval.test.js +1 -1
  1282. package/dist/library/int-infer.test.js +4 -4
  1283. package/dist/library/ir-policy.js +14 -0
  1284. package/dist/library/ir-policy.js.map +1 -1
  1285. package/dist/library/library-cache.d.ts +1 -0
  1286. package/dist/library/library-cache.js.map +1 -1
  1287. package/dist/library/library-cache.test.js +5 -5
  1288. package/dist/library/library-profile.d.ts +4 -4
  1289. package/dist/library/library-profile.js +35 -7
  1290. package/dist/library/library-profile.js.map +1 -1
  1291. package/dist/library/prepare.js +13 -1
  1292. package/dist/library/prepare.js.map +1 -1
  1293. package/dist/native/cli.js +22 -0
  1294. package/dist/native/cli.js.map +1 -1
  1295. package/dist/native/compiler.js +35 -6
  1296. package/dist/native/compiler.js.map +1 -1
  1297. package/dist/native/compiler.test.js +2 -2
  1298. package/dist/native/executable-cache.js +3 -0
  1299. package/dist/native/executable-cache.js.map +1 -1
  1300. package/dist/native/prepare.js +10 -0
  1301. package/dist/native/prepare.js.map +1 -1
  1302. package/dist/native/sanitizer.test.js +19 -0
  1303. package/dist/native/sanitizer.test.js.map +1 -1
  1304. package/dist/native/toolchain.d.ts +2 -0
  1305. package/dist/native/toolchain.js +10 -1
  1306. package/dist/native/toolchain.js.map +1 -1
  1307. package/dist/native/toolchain.test.js +39 -1
  1308. package/dist/native/toolchain.test.js.map +1 -1
  1309. package/dist/startup-cache.d.ts +1 -0
  1310. package/dist/startup-cache.js +1 -0
  1311. package/dist/startup-cache.js.map +1 -1
  1312. package/dist/wasm/base64.d.ts +5 -0
  1313. package/dist/wasm/base64.js +62 -0
  1314. package/dist/wasm/base64.js.map +1 -0
  1315. package/dist/wasm/binary.d.ts +36 -0
  1316. package/dist/wasm/binary.js +1976 -0
  1317. package/dist/wasm/binary.js.map +1 -0
  1318. package/dist/wasm/binary.test.d.ts +1 -0
  1319. package/dist/wasm/binary.test.js +190 -0
  1320. package/dist/wasm/binary.test.js.map +1 -0
  1321. package/dist/wasm/discover.d.ts +38 -0
  1322. package/dist/wasm/discover.js +377 -0
  1323. package/dist/wasm/discover.js.map +1 -0
  1324. package/dist/wasm/discover.test.d.ts +1 -0
  1325. package/dist/wasm/discover.test.js +24 -0
  1326. package/dist/wasm/discover.test.js.map +1 -0
  1327. package/dist/wasm/module.d.ts +151 -0
  1328. package/dist/wasm/module.js +575 -0
  1329. package/dist/wasm/module.js.map +1 -0
  1330. package/dist/wasm/translate.d.ts +48 -0
  1331. package/dist/wasm/translate.js +2129 -0
  1332. package/dist/wasm/translate.js.map +1 -0
  1333. package/dist/wasm/translate.test.d.ts +1 -0
  1334. package/dist/wasm/translate.test.js +207 -0
  1335. package/dist/wasm/translate.test.js.map +1 -0
  1336. package/package.json +22 -20
  1337. package/shims/fs-extra/core/api.ts +1192 -0
  1338. package/shims/fs-extra/index.ts +9 -0
  1339. package/shims/undici/core/agent.ts +163 -0
  1340. package/shims/undici/core/api.ts +93 -0
  1341. package/shims/undici/core/client.ts +1304 -0
  1342. package/shims/undici/core/connector.ts +157 -0
  1343. package/shims/undici/core/diagnostics-types.ts +68 -0
  1344. package/shims/undici/core/diagnostics.ts +16 -0
  1345. package/shims/undici/core/dispatcher.ts +574 -0
  1346. package/shims/undici/core/errors-v5.ts +22 -0
  1347. package/shims/undici/core/errors-v7.ts +25 -0
  1348. package/shims/undici/core/errors.ts +255 -0
  1349. package/shims/undici/core/fetch.ts +635 -0
  1350. package/shims/undici/core/pool.ts +280 -0
  1351. package/shims/undici/core/readable.ts +268 -0
  1352. package/shims/undici/core/request.ts +313 -0
  1353. package/shims/undici/core/timers.ts +80 -0
  1354. package/shims/undici/core/types.ts +167 -0
  1355. package/shims/undici/core/util.ts +67 -0
  1356. package/shims/undici/v5.ts +119 -0
  1357. package/shims/undici/v7.ts +119 -0
  1358. package/surface-manifest.json +304 -22
@@ -2,6 +2,7 @@ import { dynUndefinedExpr, nodeThrowExpr } from "../../ir/build.js";
2
2
  import { InternalCompilerError } from "../../errors.js";
3
3
  import * as ts from "../ts7/adapter.js";
4
4
  import { lowerToNumberArgument } from "./lower-exprs.js";
5
+ import { isDeclaredInAmbientNamespace } from "../type-mapper.js";
5
6
  import { arrayOf, BOOL, BYTES_U8, DYN, F64, STRING, VOID, canConvertToDyn, isUnitType, } from "../../ir/ir.js";
6
7
  import { STDLIB_SURFACE, STATIC_MATH_FNS, STATIC_MATH_PROPS, stdlibGlobalNameOf, } from "./surfaces.js";
7
8
  import { unsupportedNativeApiDiag, unsupportedPackageValueDiag, } from "../../diagnostics/diagnostic.js";
@@ -10,6 +11,8 @@ import { foldedStringKeyOf, lowerDynObjectLiteral } from "./expressions/object-l
10
11
  import { noteEventListeners } from "./lower-event-target.js";
11
12
  import { PoisonError, newFnCtx, own } from "./lowerer.js";
12
13
  import { NODE24_FETCH_COMPAT_PROFILE, STATIC_HEADERS_CALLS, STATIC_READABLE_STREAM_CALLS, STATIC_READABLE_STREAM_READS, STATIC_RESPONSE_CALLS, STATIC_RESPONSE_READS, } from "../../compat/fetch-profile.js";
14
+ import { classGeneratorIterable } from "./class-iterables.js";
15
+ import { generatorDrain } from "./iterator-adapters.js";
13
16
  export function refuseUnsupportedApi(lowerer, feature, node, hint) {
14
17
  lowerer.pushDiag(unsupportedNativeApiDiag(feature, locOf(node), hint));
15
18
  throw new PoisonError();
@@ -132,9 +135,7 @@ function requestInitConstBacked(lowerer, value, seen) {
132
135
  if (requestInitPropMutatedSymbols(lowerer).has(symbol))
133
136
  return false;
134
137
  seen.add(symbol);
135
- const declarations = lowerer.checker
136
- .declarationsOf(symbol)
137
- .filter((declaration) => ts.isVariableDeclaration(declaration) &&
138
+ const declarations = symbol.declarations.filter((declaration) => ts.isVariableDeclaration(declaration) &&
138
139
  declaration.initializer !== undefined &&
139
140
  ts.isVariableDeclarationList(declaration.parent) &&
140
141
  (declaration.parent.flags & ts.NodeFlags.Const) !== 0);
@@ -151,8 +152,8 @@ function visitRequestInitConstSelectedValues(lowerer, value, selector, seen, vis
151
152
  // a statically traced spread) hides earlier values exactly as it does at
152
153
  // runtime; a conditional/missing spread keeps the earlier contributor
153
154
  // in the possible-value set.
154
- for (let i = expr.properties.length - 1; i >= 0; i--) {
155
- const property = expr.properties[i];
155
+ for (let i = expr.properties.nodes.length - 1; i >= 0; i--) {
156
+ const property = expr.properties.nodes[i];
156
157
  if (ts.isSpreadAssignment(property)) {
157
158
  const defines = visitRequestInitConstSelectedValues(lowerer, property.expression, selector, new Set(seen), visit);
158
159
  if (defines)
@@ -172,7 +173,7 @@ function visitRequestInitConstSelectedValues(lowerer, value, selector, seen, vis
172
173
  return false;
173
174
  }
174
175
  if (selector.kind === "index" && ts.isArrayLiteralExpression(expr)) {
175
- const element = expr.elements[selector.index];
176
+ const element = expr.elements.nodes[selector.index];
176
177
  if (element === undefined || ts.isOmittedExpression(element) || ts.isSpreadElement(element)) {
177
178
  return false;
178
179
  }
@@ -214,7 +215,7 @@ function visitRequestInitConstSelectedValues(lowerer, value, selector, seen, vis
214
215
  seen.add(symbol);
215
216
  let sawDeclaration = false;
216
217
  let defines = true;
217
- for (const declaration of lowerer.checker.declarationsOf(symbol)) {
218
+ for (const declaration of symbol.declarations) {
218
219
  if (ts.isVariableDeclaration(declaration) &&
219
220
  declaration.initializer !== undefined &&
220
221
  ts.isVariableDeclarationList(declaration.parent) &&
@@ -243,7 +244,7 @@ function requestInitConstBindingSource(lowerer, declaration) {
243
244
  else if (ts.isArrayBindingPattern(pattern)) {
244
245
  if (current.dotDotDotToken)
245
246
  return null;
246
- const index = pattern.elements.indexOf(current);
247
+ const index = pattern.elements.nodes.indexOf(current);
247
248
  if (index < 0)
248
249
  return null;
249
250
  selectors.unshift({ kind: "index", index });
@@ -295,7 +296,7 @@ function fenceRequestInitProperty(lowerer, access, seen) {
295
296
  if (!symbol || seen.has(symbol))
296
297
  return;
297
298
  seen.add(symbol);
298
- for (const declaration of lowerer.checker.declarationsOf(symbol)) {
299
+ for (const declaration of symbol.declarations) {
299
300
  if (ts.isPropertyAssignment(declaration)) {
300
301
  fenceRequestInitValueInner(lowerer, declaration.initializer, seen);
301
302
  }
@@ -333,8 +334,8 @@ function fenceRequestInitObject(lowerer, init, seen) {
333
334
  // effective contributor for each dictionary member; a definite later
334
335
  // `cache: undefined`, for example, suppresses an earlier unsupported
335
336
  // cache value just as WebIDL observes at runtime.
336
- for (let index = init.properties.length - 1; index >= 0; index--) {
337
- const prop = init.properties[index];
337
+ for (let index = init.properties.nodes.length - 1; index >= 0; index--) {
338
+ const prop = init.properties.nodes[index];
338
339
  if (ts.isSpreadAssignment(prop)) {
339
340
  for (const row of rows) {
340
341
  if (shadowed.has(row.member))
@@ -399,7 +400,7 @@ function fenceRequestInitValueInner(lowerer, value, seen) {
399
400
  if (requestInitPropMutatedSymbols(lowerer).has(symbol))
400
401
  return;
401
402
  seen.add(symbol);
402
- for (const declaration of lowerer.checker.declarationsOf(symbol)) {
403
+ for (const declaration of symbol.declarations) {
403
404
  if (ts.isBindingElement(declaration)) {
404
405
  const source = requestInitConstBindingSource(lowerer, declaration);
405
406
  if (source !== null) {
@@ -428,14 +429,14 @@ export function lowerFetchCall(lowerer, call) {
428
429
  const symbol = lowerer.resolveValueSymbol(callee);
429
430
  if (!symbol || !lowerer.isStdlibSymbol(symbol))
430
431
  return null;
431
- if (call.arguments.length < 1)
432
+ if (call.arguments.nodes.length < 1)
432
433
  return null;
433
434
  const loc = locOf(call);
434
- const initNode = call.arguments[1];
435
+ const initNode = call.arguments.nodes[1];
435
436
  if (initNode !== undefined)
436
437
  fenceRequestInitValue(lowerer, initNode);
437
438
  {
438
- const inputNode = call.arguments[0];
439
+ const inputNode = call.arguments.nodes[0];
439
440
  const input = lowerer.lowerExpr(inputNode);
440
441
  let init;
441
442
  if (initNode === undefined) {
@@ -470,7 +471,7 @@ export function lowerFetchCall(lowerer, call) {
470
471
  { kind: "varDecl", localId: inputLocal.id, init: input, loc },
471
472
  { kind: "varDecl", localId: initLocal.id, init, loc },
472
473
  ];
473
- for (const argument of call.arguments.slice(2)) {
474
+ for (const argument of call.arguments.nodes.slice(2)) {
474
475
  if (ts.isSpreadElement(argument)) {
475
476
  lowerer.noLowering("spread surplus arguments on static fetch()", argument, "pass surplus arguments without spread syntax");
476
477
  }
@@ -479,6 +480,18 @@ export function lowerFetchCall(lowerer, call) {
479
480
  : lowerer.lowerExpr(argument);
480
481
  stmts.push({ kind: "exprStmt", expr: discarded, loc: discarded.loc });
481
482
  }
483
+ // A union input holding a URL arm (`string | URL`) converts through the
484
+ // checked-dynamic input path, which reads the URL's href at the call
485
+ // like the bare-URL arm below; narrowing it to a string would throw on
486
+ // the URL arm.
487
+ const unionWithUrl = input.type.kind === "union" &&
488
+ (lowerer.unions.get(input.type.unionId)?.arms.some((arm) => arm.kind === "url") ?? false) &&
489
+ lowerer.dynConvertible(input.type);
490
+ const dynInput = input.type.kind === "dyn"
491
+ ? inputRef
492
+ : unionWithUrl
493
+ ? { kind: "dynFrom", value: inputRef, type: DYN, loc: locOf(inputNode) }
494
+ : null;
482
495
  const url = input.type.kind === "url"
483
496
  ? {
484
497
  kind: "libCall",
@@ -487,13 +500,13 @@ export function lowerFetchCall(lowerer, call) {
487
500
  type: STRING,
488
501
  loc: locOf(inputNode),
489
502
  }
490
- : input.type.kind === "dyn"
491
- ? inputRef
503
+ : dynInput !== null
504
+ ? dynInput
492
505
  : lowerer.coerceInto(inputNode, inputRef, STRING);
493
506
  const answer = {
494
507
  kind: "libCall",
495
- fn: input.type.kind === "dyn" ? "fetch.input" : "fetch.start",
496
- args: [input.type.kind === "dyn" ? inputRef : url, initRef],
508
+ fn: dynInput !== null ? "fetch.input" : "fetch.start",
509
+ args: [url, initRef],
497
510
  type: { kind: "promise", inner: DYN },
498
511
  loc,
499
512
  };
@@ -513,12 +526,12 @@ export function lowerStaticResponseCall(lowerer, call) {
513
526
  const member = staticResponseMemberName(lowerer, access);
514
527
  if (access.questionDotToken ||
515
528
  (member !== "json" && member !== "text" && member !== "bytes" && member !== "arrayBuffer") ||
516
- call.arguments.length !== 0) {
529
+ call.arguments.nodes.length !== 0) {
517
530
  return null;
518
531
  }
519
532
  const recvType = lowerer.checker.getBaseTypeOfLiteralType(lowerer.typeOf(access.expression));
520
533
  const sym = recvType.getAliasSymbol() ?? recvType.getSymbol();
521
- if (!sym || sym.name !== "Response" || !lowerer.isStdlibSymbol(sym))
534
+ if (!sym || ts.symbolName(sym) !== "Response" || !lowerer.isStdlibSymbol(sym))
522
535
  return null;
523
536
  const recv = lowerer.lowerExpr(access.expression);
524
537
  if (recv.type.kind !== "dyn")
@@ -591,7 +604,7 @@ function lowerStaticFixedFetchMethodCall(lowerer, call, access, member, receiver
591
604
  loc,
592
605
  },
593
606
  then: answer,
594
- else_: nodeThrowExpr(1, "", `${access.getText()} is not a function`, answer.type, loc),
607
+ else_: nodeThrowExpr(1, "", `${ts.getTextOfNode(access)} is not a function`, answer.type, loc),
595
608
  type: answer.type,
596
609
  loc,
597
610
  };
@@ -721,7 +734,7 @@ function fetchMethodArgumentIsLive(owner, members, index) {
721
734
  export function fenceStaticResponseMember(lowerer, access, use) {
722
735
  const recvType = lowerer.checker.getBaseTypeOfLiteralType(lowerer.typeOf(access.expression));
723
736
  const sym = recvType.getAliasSymbol() ?? recvType.getSymbol();
724
- if (!sym || sym.name !== "Response" || !lowerer.isStdlibSymbol(sym))
737
+ if (!sym || ts.symbolName(sym) !== "Response" || !lowerer.isStdlibSymbol(sym))
725
738
  return null;
726
739
  const members = fetchAccessMemberNames(lowerer, access);
727
740
  if (members === null)
@@ -744,7 +757,7 @@ export function fenceStaticResponseMember(lowerer, access, use) {
744
757
  export function fenceStaticHeadersMember(lowerer, access, use) {
745
758
  const recvType = lowerer.checker.getBaseTypeOfLiteralType(lowerer.typeOf(access.expression));
746
759
  const sym = recvType.getAliasSymbol() ?? recvType.getSymbol();
747
- if (!sym || sym.name !== "Headers" || !lowerer.isStdlibSymbol(sym))
760
+ if (!sym || ts.symbolName(sym) !== "Headers" || !lowerer.isStdlibSymbol(sym))
748
761
  return null;
749
762
  const members = fetchAccessMemberNames(lowerer, access);
750
763
  if (members === null)
@@ -775,7 +788,11 @@ export function fenceStaticAbortControllerMemberRead(lowerer, access) {
775
788
  function isStdlibFetchInterface(lowerer, node, owner) {
776
789
  const type = lowerer.checker.getBaseTypeOfLiteralType(lowerer.typeOf(node));
777
790
  for (const symbol of [type.getSymbol(), type.getAliasSymbol()]) {
778
- if (symbol?.name === owner && lowerer.isStdlibSymbol(symbol))
791
+ // NodeJS.ReadableStream shares the WHATWG interface's name.
792
+ if (symbol !== undefined &&
793
+ ts.symbolName(symbol) === owner &&
794
+ lowerer.isStdlibSymbol(symbol) &&
795
+ !symbol.declarations.some((d) => ts.isInterfaceDeclaration(d) && isDeclaredInAmbientNamespace(d, "NodeJS")))
779
796
  return symbol;
780
797
  }
781
798
  return null;
@@ -829,9 +846,9 @@ function fetchObjectAssignmentMemberName(lowerer, property) {
829
846
  function fetchInterfaceInventoryOwner(lowerer, node) {
830
847
  const type = lowerer.checker.getBaseTypeOfLiteralType(lowerer.typeOf(node));
831
848
  const symbol = [type.getSymbol(), type.getAliasSymbol()].find((candidate) => candidate !== undefined &&
832
- NODE24_FETCH_COMPAT_PROFILE.inventory.interfaces.includes(candidate.name) &&
849
+ NODE24_FETCH_COMPAT_PROFILE.inventory.interfaces.includes(ts.symbolName(candidate)) &&
833
850
  lowerer.isStdlibSymbol(candidate));
834
- return symbol ? { owner: symbol.name, symbol } : null;
851
+ return symbol ? { owner: ts.symbolName(symbol), symbol } : null;
835
852
  }
836
853
  function fenceFetchObjectMembers(lowerer, ownerNode, members) {
837
854
  const resolved = fetchInterfaceInventoryOwner(lowerer, ownerNode);
@@ -858,7 +875,7 @@ function fenceFetchObjectMembers(lowerer, ownerNode, members) {
858
875
  }
859
876
  }
860
877
  export function fenceFetchObjectBinding(lowerer, pattern) {
861
- fenceFetchObjectMembers(lowerer, pattern, pattern.elements.flatMap((element) => {
878
+ fenceFetchObjectMembers(lowerer, pattern, pattern.elements.nodes.flatMap((element) => {
862
879
  if (element.dotDotDotToken)
863
880
  return [];
864
881
  const member = fetchObjectBindingMemberName(lowerer, element);
@@ -869,7 +886,7 @@ export function fenceFetchObjectBinding(lowerer, pattern) {
869
886
  * a binding pattern, but its source type lives on the right-hand expression
870
887
  * instead of the target AST. */
871
888
  export function fenceFetchObjectAssignment(lowerer, target, source) {
872
- fenceFetchObjectMembers(lowerer, source, target.properties.flatMap((property) => {
889
+ fenceFetchObjectMembers(lowerer, source, target.properties.nodes.flatMap((property) => {
873
890
  const member = fetchObjectAssignmentMemberName(lowerer, property);
874
891
  return member === null ? [] : [{ member, node: property }];
875
892
  }));
@@ -901,7 +918,7 @@ export function lowerFetchElementMethodCall(lowerer, call) {
901
918
  if (call.questionDotToken ||
902
919
  !ts.isElementAccessExpression(call.expression) ||
903
920
  call.expression.questionDotToken ||
904
- call.arguments.some((argument) => ts.isSpreadElement(argument))) {
921
+ call.arguments.nodes.some((argument) => ts.isSpreadElement(argument))) {
905
922
  return null;
906
923
  }
907
924
  const access = call.expression;
@@ -929,7 +946,7 @@ export function lowerFetchElementMethodCall(lowerer, call) {
929
946
  const loc = locOf(call);
930
947
  const receiverLocal = lowerer.declareHiddenLocal("%fetchReceiver", DYN);
931
948
  const keyLocal = lowerer.declareHiddenLocal("%fetchMember", STRING);
932
- const argumentValues = call.arguments.map((argument, index) => fetchMethodArgumentIsLive(resolved.owner, members, index)
949
+ const argumentValues = call.arguments.nodes.map((argument, index) => fetchMethodArgumentIsLive(resolved.owner, members, index)
933
950
  ? lowerLiveWebValue(lowerer, argument)
934
951
  : lowerer.lowerExprExpecting(argument, DYN));
935
952
  const argumentLocals = argumentValues.map((argument) => lowerer.declareHiddenLocal("%fetchMethodArg", argument.type));
@@ -963,7 +980,7 @@ export function lowerFetchElementMethodCall(lowerer, call) {
963
980
  loc,
964
981
  }));
965
982
  const staticResponsePromise = resolved.owner === "Response" &&
966
- call.arguments.length === 0 &&
983
+ call.arguments.nodes.length === 0 &&
967
984
  members.every((member) => member === "text" || member === "bytes")
968
985
  ? (() => {
969
986
  // The checker spells this call as
@@ -989,7 +1006,7 @@ export function lowerFetchElementMethodCall(lowerer, call) {
989
1006
  kind: "dynInvoke",
990
1007
  recv: receiverRef,
991
1008
  method: member,
992
- calleeName: access.getText(),
1009
+ calleeName: ts.getTextOfNode(access),
993
1010
  args: argumentRefs,
994
1011
  type: DYN,
995
1012
  loc,
@@ -999,7 +1016,7 @@ export function lowerFetchElementMethodCall(lowerer, call) {
999
1016
  // throw "is not a function" rather than dispatching every mismatch to the
1000
1017
  // last member.
1001
1018
  const invocationType = staticResponsePromise ?? DYN;
1002
- let result = nodeThrowExpr(1, "", `${access.getText()} is not a function`, invocationType, loc);
1019
+ let result = nodeThrowExpr(1, "", `${ts.getTextOfNode(access)} is not a function`, invocationType, loc);
1003
1020
  for (let index = members.length - 1; index >= 0; index--) {
1004
1021
  const member = members[index];
1005
1022
  result = {
@@ -1065,7 +1082,7 @@ export function fenceStaticReadableStreamMember(lowerer, access, use) {
1065
1082
  * member-call path tries to lower the receiver as a value. */
1066
1083
  function staticFirstArgWithSurplusArgs(lowerer, call, first) {
1067
1084
  const loc = locOf(call);
1068
- if (call.arguments.length <= 1)
1085
+ if (call.arguments.nodes.length <= 1)
1069
1086
  return first;
1070
1087
  const firstLocal = lowerer.declareHiddenLocal("%fetchArg", first.type);
1071
1088
  const firstRef = {
@@ -1075,7 +1092,7 @@ function staticFirstArgWithSurplusArgs(lowerer, call, first) {
1075
1092
  loc,
1076
1093
  };
1077
1094
  const stmts = [{ kind: "varDecl", localId: firstLocal.id, init: first, loc }];
1078
- for (const argument of call.arguments.slice(1)) {
1095
+ for (const argument of call.arguments.nodes.slice(1)) {
1079
1096
  if (ts.isSpreadElement(argument)) {
1080
1097
  lowerer.noLowering("spread surplus arguments on the static fetch companion APIs", argument, "pass surplus arguments without spread syntax");
1081
1098
  }
@@ -1107,18 +1124,18 @@ export function lowerStaticFetchCompanionCall(lowerer, call) {
1107
1124
  }
1108
1125
  const root = call.expression.expression;
1109
1126
  const symbol = lowerer.resolveValueSymbol(root);
1110
- if (!symbol || !lowerer.isStdlibSymbol(symbol))
1127
+ if ((!symbol || !lowerer.isStdlibSymbol(symbol)) && !isStreamWebReadableStream(lowerer, root))
1111
1128
  return null;
1112
1129
  const loc = locOf(call);
1113
1130
  if (root.text === "AbortSignal") {
1114
1131
  noteEventListeners(lowerer, loc);
1115
1132
  switch (call.expression.name.text) {
1116
1133
  case "timeout":
1117
- if (call.arguments[0] && ts.isSpreadElement(call.arguments[0])) {
1134
+ if (call.arguments.nodes[0] && ts.isSpreadElement(call.arguments.nodes[0])) {
1118
1135
  return null;
1119
1136
  }
1120
- return staticCallWithSurplusArgs(lowerer, call, call.arguments[0]
1121
- ? lowerer.lowerExprExpecting(call.arguments[0], DYN)
1137
+ return staticCallWithSurplusArgs(lowerer, call, call.arguments.nodes[0]
1138
+ ? lowerer.lowerExprExpecting(call.arguments.nodes[0], DYN)
1122
1139
  : dynUndefinedExpr(loc), (first) => ({
1123
1140
  kind: "libCall",
1124
1141
  fn: "fetch.abortTimeout",
@@ -1127,7 +1144,7 @@ export function lowerStaticFetchCompanionCall(lowerer, call) {
1127
1144
  loc,
1128
1145
  }));
1129
1146
  case "abort":
1130
- if (call.arguments.length === 0) {
1147
+ if (call.arguments.nodes.length === 0) {
1131
1148
  return {
1132
1149
  kind: "libCall",
1133
1150
  fn: "fetch.abortNow",
@@ -1136,9 +1153,9 @@ export function lowerStaticFetchCompanionCall(lowerer, call) {
1136
1153
  loc,
1137
1154
  };
1138
1155
  }
1139
- if (ts.isSpreadElement(call.arguments[0]))
1156
+ if (ts.isSpreadElement(call.arguments.nodes[0]))
1140
1157
  return null;
1141
- return staticCallWithSurplusArgs(lowerer, call, lowerLiveWebValue(lowerer, call.arguments[0]), (first) => ({
1158
+ return staticCallWithSurplusArgs(lowerer, call, lowerLiveWebValue(lowerer, call.arguments.nodes[0]), (first) => ({
1142
1159
  kind: "libCall",
1143
1160
  fn: "fetch.abortNow",
1144
1161
  args: [first],
@@ -1146,11 +1163,11 @@ export function lowerStaticFetchCompanionCall(lowerer, call) {
1146
1163
  loc,
1147
1164
  }));
1148
1165
  case "any":
1149
- if (call.arguments[0] && ts.isSpreadElement(call.arguments[0])) {
1166
+ if (call.arguments.nodes[0] && ts.isSpreadElement(call.arguments.nodes[0])) {
1150
1167
  return null;
1151
1168
  }
1152
- return staticCallWithSurplusArgs(lowerer, call, call.arguments[0]
1153
- ? lowerer.lowerExprExpecting(call.arguments[0], DYN)
1169
+ return staticCallWithSurplusArgs(lowerer, call, call.arguments.nodes[0]
1170
+ ? lowerer.lowerExprExpecting(call.arguments.nodes[0], DYN)
1154
1171
  : dynUndefinedExpr(loc), (first) => ({
1155
1172
  kind: "libCall",
1156
1173
  fn: "fetch.abortAny",
@@ -1164,8 +1181,8 @@ export function lowerStaticFetchCompanionCall(lowerer, call) {
1164
1181
  }
1165
1182
  if (root.text === "ReadableStream" &&
1166
1183
  call.expression.name.text === "from" &&
1167
- (!call.arguments[0] || !ts.isSpreadElement(call.arguments[0]))) {
1168
- if (!call.arguments[0]) {
1184
+ (!call.arguments.nodes[0] || !ts.isSpreadElement(call.arguments.nodes[0]))) {
1185
+ if (!call.arguments.nodes[0]) {
1169
1186
  return {
1170
1187
  kind: "libCall",
1171
1188
  fn: "fetch.streamFrom",
@@ -1174,7 +1191,7 @@ export function lowerStaticFetchCompanionCall(lowerer, call) {
1174
1191
  loc,
1175
1192
  };
1176
1193
  }
1177
- let source = lowerer.lowerExpr(call.arguments[0]);
1194
+ let source = lowerer.lowerExpr(call.arguments.nodes[0]);
1178
1195
  // A readonly tuple satisfies the fallback's readonly-array overload,
1179
1196
  // but maps to a monomorphic record in IR. Reuse the ordinary
1180
1197
  // tuple→array width conversion with the resolved generic parameter so
@@ -1196,7 +1213,7 @@ export function lowerStaticFetchCompanionCall(lowerer, call) {
1196
1213
  canConvertToDyn(source.type.elem, (id) => lowerer.shapes.get(id), (id) => lowerer.unions.get(id))) ||
1197
1214
  source.type.kind === "dyn";
1198
1215
  if (!preserve) {
1199
- lowerer.noLowering(`ReadableStream.from() over ${lowerer.checker.typeToString(lowerer.typeOf(call.arguments[0]))} iterables`, call.arguments[0], "arrays, Uint8Array, and strings are supported — spread other synchronous iterables into an array first: [...iterable]");
1216
+ lowerer.noLowering(`ReadableStream.from() over ${lowerer.checker.typeToString(lowerer.typeOf(call.arguments.nodes[0]))} iterables`, call.arguments.nodes[0], "arrays, Uint8Array, and strings are supported — spread other synchronous iterables into an array first: [...iterable]");
1200
1217
  }
1201
1218
  return staticCallWithSurplusArgs(lowerer, call, source, (first) => ({
1202
1219
  kind: "libCall",
@@ -1219,7 +1236,7 @@ export function lowerStaticFetchCompanionCall(lowerer, call) {
1219
1236
  export function lowerStaticAbortControllerCall(lowerer, call) {
1220
1237
  const access = call.expression;
1221
1238
  if (call.questionDotToken ||
1222
- call.arguments.some((argument) => ts.isSpreadElement(argument)) ||
1239
+ call.arguments.nodes.some((argument) => ts.isSpreadElement(argument)) ||
1223
1240
  (!ts.isPropertyAccessExpression(access) && !ts.isElementAccessExpression(access)) ||
1224
1241
  access.questionDotToken ||
1225
1242
  staticResponseMemberName(lowerer, access) !== "abort") {
@@ -1227,25 +1244,24 @@ export function lowerStaticAbortControllerCall(lowerer, call) {
1227
1244
  }
1228
1245
  const receiverTs = lowerer.checker.getBaseTypeOfLiteralType(lowerer.typeOf(access.expression));
1229
1246
  const symbol = receiverTs.getAliasSymbol() ?? receiverTs.getSymbol();
1230
- if (symbol?.name !== "AbortController" ||
1231
- !lowerer.checker
1232
- .declarationsOf(symbol)
1233
- .some((d) => ts.isInterfaceDeclaration(d) && lowerer.isStdlibFile(d.getSourceFile()))) {
1247
+ if (symbol === undefined ||
1248
+ ts.symbolName(symbol) !== "AbortController" ||
1249
+ !symbol.declarations.some((d) => ts.isInterfaceDeclaration(d) && lowerer.isStdlibFile(ts.getSourceFileOfNode(d)))) {
1234
1250
  return null;
1235
1251
  }
1236
1252
  const receiver = lowerer.lowerExpr(access.expression);
1237
1253
  if (receiver.type.kind !== "dyn")
1238
1254
  return null;
1239
1255
  const loc = locOf(call);
1240
- const first = call.arguments[0]
1241
- ? lowerLiveWebValue(lowerer, call.arguments[0])
1256
+ const first = call.arguments.nodes[0]
1257
+ ? lowerLiveWebValue(lowerer, call.arguments.nodes[0])
1242
1258
  : dynUndefinedExpr(loc);
1243
1259
  const args = [staticFirstArgWithSurplusArgs(lowerer, call, first)];
1244
1260
  return lowerStaticFixedFetchMethodCall(lowerer, call, access, "abort", receiver, args, (receiverRef, argumentRefs) => ({
1245
1261
  kind: "dynInvoke",
1246
1262
  recv: receiverRef,
1247
1263
  method: "abort",
1248
- calleeName: access.getText(),
1264
+ calleeName: ts.getTextOfNode(access),
1249
1265
  args: argumentRefs,
1250
1266
  type: DYN,
1251
1267
  loc,
@@ -1257,7 +1273,7 @@ export function lowerStaticAbortControllerCall(lowerer, call) {
1257
1273
  export function lowerStaticReadableStreamControllerCall(lowerer, call) {
1258
1274
  const access = call.expression;
1259
1275
  if (call.questionDotToken ||
1260
- call.arguments.length > 1 ||
1276
+ call.arguments.nodes.length > 1 ||
1261
1277
  (!ts.isPropertyAccessExpression(access) && !ts.isElementAccessExpression(access)) ||
1262
1278
  access.questionDotToken) {
1263
1279
  return null;
@@ -1267,10 +1283,9 @@ export function lowerStaticReadableStreamControllerCall(lowerer, call) {
1267
1283
  return null;
1268
1284
  const receiverTs = lowerer.checker.getBaseTypeOfLiteralType(lowerer.typeOf(access.expression));
1269
1285
  const symbol = receiverTs.getAliasSymbol() ?? receiverTs.getSymbol();
1270
- if (symbol?.name !== "ReadableStreamDefaultController" ||
1271
- !lowerer.checker
1272
- .declarationsOf(symbol)
1273
- .some((d) => ts.isInterfaceDeclaration(d) && lowerer.isStdlibFile(d.getSourceFile()))) {
1286
+ if (symbol === undefined ||
1287
+ ts.symbolName(symbol) !== "ReadableStreamDefaultController" ||
1288
+ !symbol.declarations.some((d) => ts.isInterfaceDeclaration(d) && lowerer.isStdlibFile(ts.getSourceFileOfNode(d)))) {
1274
1289
  return null;
1275
1290
  }
1276
1291
  const recv = lowerer.lowerExpr(access.expression);
@@ -1278,13 +1293,15 @@ export function lowerStaticReadableStreamControllerCall(lowerer, call) {
1278
1293
  return null;
1279
1294
  const loc = locOf(call);
1280
1295
  const args = [
1281
- call.arguments[0] ? lowerLiveWebValue(lowerer, call.arguments[0]) : dynUndefinedExpr(loc),
1296
+ call.arguments.nodes[0]
1297
+ ? lowerLiveWebValue(lowerer, call.arguments.nodes[0])
1298
+ : dynUndefinedExpr(loc),
1282
1299
  ];
1283
1300
  return lowerStaticFixedFetchMethodCall(lowerer, call, access, member, recv, args, (receiver, argumentRefs) => ({
1284
1301
  kind: "dynInvoke",
1285
1302
  recv: receiver,
1286
1303
  method: member,
1287
- calleeName: access.getText(),
1304
+ calleeName: ts.getTextOfNode(access),
1288
1305
  args: argumentRefs,
1289
1306
  type: DYN,
1290
1307
  loc,
@@ -1296,8 +1313,8 @@ export function lowerStaticReadableStreamControllerCall(lowerer, call) {
1296
1313
  export function lowerStaticReadableStreamCancelCall(lowerer, call) {
1297
1314
  const access = call.expression;
1298
1315
  if (call.questionDotToken ||
1299
- call.arguments.length > 1 ||
1300
- call.arguments.some((argument) => ts.isSpreadElement(argument)) ||
1316
+ call.arguments.nodes.length > 1 ||
1317
+ call.arguments.nodes.some((argument) => ts.isSpreadElement(argument)) ||
1301
1318
  (!ts.isPropertyAccessExpression(access) && !ts.isElementAccessExpression(access)) ||
1302
1319
  access.questionDotToken ||
1303
1320
  staticResponseMemberName(lowerer, access) !== "cancel") {
@@ -1312,13 +1329,15 @@ export function lowerStaticReadableStreamCancelCall(lowerer, call) {
1312
1329
  return null;
1313
1330
  const loc = locOf(call);
1314
1331
  const args = [
1315
- call.arguments[0] ? lowerLiveWebValue(lowerer, call.arguments[0]) : dynUndefinedExpr(loc),
1332
+ call.arguments.nodes[0]
1333
+ ? lowerLiveWebValue(lowerer, call.arguments.nodes[0])
1334
+ : dynUndefinedExpr(loc),
1316
1335
  ];
1317
1336
  return lowerStaticFixedFetchMethodCall(lowerer, call, access, "cancel", receiver, args, (receiverRef, argumentRefs) => ({
1318
1337
  kind: "dynInvoke",
1319
1338
  recv: receiverRef,
1320
1339
  method: "cancel",
1321
- calleeName: access.getText(),
1340
+ calleeName: ts.getTextOfNode(access),
1322
1341
  args: argumentRefs,
1323
1342
  type: DYN,
1324
1343
  loc,
@@ -1331,8 +1350,8 @@ export function lowerStaticReadableStreamCancelCall(lowerer, call) {
1331
1350
  export function lowerStaticAbortSignalListenerCall(lowerer, call) {
1332
1351
  const access = call.expression;
1333
1352
  if (call.questionDotToken ||
1334
- call.arguments.length < 2 ||
1335
- call.arguments.some((arg) => ts.isSpreadElement(arg)) ||
1353
+ call.arguments.nodes.length < 2 ||
1354
+ call.arguments.nodes.some((arg) => ts.isSpreadElement(arg)) ||
1336
1355
  (!ts.isPropertyAccessExpression(access) && !ts.isElementAccessExpression(access)) ||
1337
1356
  access.questionDotToken) {
1338
1357
  return null;
@@ -1343,10 +1362,9 @@ export function lowerStaticAbortSignalListenerCall(lowerer, call) {
1343
1362
  }
1344
1363
  const receiverTs = lowerer.checker.getBaseTypeOfLiteralType(lowerer.typeOf(access.expression));
1345
1364
  const symbol = receiverTs.getAliasSymbol() ?? receiverTs.getSymbol();
1346
- if ((symbol?.name !== "AbortSignal" && symbol?.name !== "EventTarget") ||
1347
- !lowerer.checker
1348
- .declarationsOf(symbol)
1349
- .some((d) => ts.isInterfaceDeclaration(d) && lowerer.isStdlibFile(d.getSourceFile()))) {
1365
+ if (((symbol === undefined || ts.symbolName(symbol) !== "AbortSignal") &&
1366
+ (symbol === undefined || ts.symbolName(symbol) !== "EventTarget")) ||
1367
+ !symbol.declarations.some((d) => ts.isInterfaceDeclaration(d) && lowerer.isStdlibFile(ts.getSourceFileOfNode(d)))) {
1350
1368
  return null;
1351
1369
  }
1352
1370
  const recv = lowerer.lowerExpr(access.expression);
@@ -1354,12 +1372,12 @@ export function lowerStaticAbortSignalListenerCall(lowerer, call) {
1354
1372
  return null;
1355
1373
  const loc = locOf(call);
1356
1374
  noteEventListeners(lowerer, loc);
1357
- const args = call.arguments.map((arg, index) => index === 1 ? lowerLiveWebValue(lowerer, arg) : lowerer.lowerExprExpecting(arg, DYN));
1375
+ const args = call.arguments.nodes.map((arg, index) => index === 1 ? lowerLiveWebValue(lowerer, arg) : lowerer.lowerExprExpecting(arg, DYN));
1358
1376
  return lowerStaticFixedFetchMethodCall(lowerer, call, access, member, recv, args, (receiver, argumentRefs) => ({
1359
1377
  kind: "dynInvoke",
1360
1378
  recv: receiver,
1361
1379
  method: member,
1362
- calleeName: access.getText(),
1380
+ calleeName: ts.getTextOfNode(access),
1363
1381
  args: argumentRefs,
1364
1382
  type: DYN,
1365
1383
  loc,
@@ -1372,7 +1390,7 @@ export function lowerEventTargetNew(lowerer, expr) {
1372
1390
  const name = stdlibGlobalNameOf(lowerer, expr.expression);
1373
1391
  if (name !== "EventTarget" && name !== "Event" && name !== "CustomEvent")
1374
1392
  return null;
1375
- const args = expr.arguments ?? [];
1393
+ const args = expr.arguments?.nodes ?? [];
1376
1394
  if (args.some(ts.isSpreadElement))
1377
1395
  return null;
1378
1396
  const loc = locOf(expr);
@@ -1408,7 +1426,7 @@ export function lowerAbortControllerNew(lowerer, expr) {
1408
1426
  const symbol = lowerer.resolveValueSymbol(expr.expression);
1409
1427
  if (!symbol || !lowerer.isStdlibSymbol(symbol))
1410
1428
  return null;
1411
- const args = expr.arguments ?? [];
1429
+ const args = expr.arguments?.nodes ?? [];
1412
1430
  if (args.some((argument) => ts.isSpreadElement(argument)))
1413
1431
  return null;
1414
1432
  const loc = locOf(expr);
@@ -1434,14 +1452,20 @@ export function lowerAbortControllerNew(lowerer, expr) {
1434
1452
  loc,
1435
1453
  };
1436
1454
  }
1455
+ /** An import binding of node:stream/web's ReadableStream, which IS the
1456
+ * global class (`import { ReadableStream } from "node:stream/web"`). */
1457
+ function isStreamWebReadableStream(lowerer, ident) {
1458
+ return ident.text === "ReadableStream" && lowerer.isStdlibGlobal(ident, "ReadableStream");
1459
+ }
1437
1460
  export function lowerStaticReadableStreamNew(lowerer, expr) {
1438
1461
  if (!ts.isIdentifier(expr.expression) || expr.expression.text !== "ReadableStream") {
1439
1462
  return null;
1440
1463
  }
1441
1464
  const symbol = lowerer.resolveValueSymbol(expr.expression);
1442
- if (!symbol || !lowerer.isStdlibSymbol(symbol))
1465
+ if ((!symbol || !lowerer.isStdlibSymbol(symbol)) &&
1466
+ !isStreamWebReadableStream(lowerer, expr.expression))
1443
1467
  return null;
1444
- const args = expr.arguments ?? [];
1468
+ const args = expr.arguments?.nodes ?? [];
1445
1469
  if (args.length > 1)
1446
1470
  return null;
1447
1471
  const loc = locOf(expr);
@@ -1463,7 +1487,7 @@ export function lowerFetchWebNew(lowerer, expr) {
1463
1487
  const name = stdlibGlobalNameOf(lowerer, expr.expression);
1464
1488
  if (name !== "Request" && name !== "Headers")
1465
1489
  return null;
1466
- const args = expr.arguments ?? [];
1490
+ const args = expr.arguments?.nodes ?? [];
1467
1491
  if (args.some(ts.isSpreadElement))
1468
1492
  return null;
1469
1493
  const loc = locOf(expr);
@@ -1485,15 +1509,38 @@ export function lowerFetchWebNew(lowerer, expr) {
1485
1509
  export function lowerResponseNew(lowerer, expr) {
1486
1510
  if (stdlibGlobalNameOf(lowerer, expr.expression) !== "Response")
1487
1511
  return null;
1488
- const args = expr.arguments ?? [];
1512
+ const args = expr.arguments?.nodes ?? [];
1489
1513
  if (args.some(ts.isSpreadElement))
1490
1514
  return null;
1491
- const loc = locOf(expr);
1515
+ return lowerResponseConstruction(lowerer, args, locOf(expr), false);
1516
+ }
1517
+ /** Static `Response.json(data, init?)`: the data crosses into the runtime's
1518
+ * checked-dynamic JSON serializer (toJSON hooks included) after ResponseInit
1519
+ * converts, then the response initializes as the constructor does. */
1520
+ export function lowerResponseStaticJson(lowerer, call) {
1521
+ if (call.questionDotToken || !ts.isPropertyAccessExpression(call.expression))
1522
+ return null;
1523
+ const access = call.expression;
1524
+ if (access.questionDotToken || access.name.text !== "json")
1525
+ return null;
1526
+ if (!lowerer.isStdlibGlobal(access.expression, "Response"))
1527
+ return null;
1528
+ if (call.arguments.nodes.some(ts.isSpreadElement) || call.arguments.nodes.length === 0)
1529
+ return null;
1530
+ return lowerResponseConstruction(lowerer, call.arguments.nodes, locOf(call), true);
1531
+ }
1532
+ function lowerResponseConstruction(lowerer, args, loc, json) {
1492
1533
  const toDyn = (node, value, what) => {
1493
1534
  if (node === undefined)
1494
1535
  return dynUndefinedExpr(loc);
1495
1536
  if (value.type.kind === "dyn")
1496
1537
  return value;
1538
+ if (what === "JSON data") {
1539
+ const boxed = lowerer.coerceToExpected(value, DYN);
1540
+ if (boxed.type.kind === "dyn")
1541
+ return boxed;
1542
+ lowerer.noLowering(`Response.json of '${lowerer.fmt(value.type)}' values`, node, "the data must cross the checked-dynamic boundary (number, string, boolean, null, records, arrays, and 'unknown')");
1543
+ }
1497
1544
  /* A user class can satisfy ResponseInit structurally through plain
1498
1545
  * fields. Project just the declared dictionary members into a record,
1499
1546
  * then use the ordinary checked-dynamic copy. objRecordWidthHelper
@@ -1598,8 +1645,11 @@ export function lowerResponseNew(lowerer, expr) {
1598
1645
  }
1599
1646
  const result = {
1600
1647
  kind: "libCall",
1601
- fn: "fetch.responseNew",
1602
- args: [toDyn(bodyNode, bodyRef, "a body"), toDyn(initNode, initRef, "an init value")],
1648
+ fn: json ? "fetch.responseJsonStatic" : "fetch.responseNew",
1649
+ args: [
1650
+ toDyn(bodyNode, bodyRef, json ? "JSON data" : "a body"),
1651
+ toDyn(initNode, initRef, "an init value"),
1652
+ ],
1603
1653
  type: DYN,
1604
1654
  loc,
1605
1655
  };
@@ -1612,7 +1662,7 @@ export function lowerResponseNew(lowerer, expr) {
1612
1662
  export function lowerStaticReadableStreamReaderCall(lowerer, call) {
1613
1663
  const access = call.expression;
1614
1664
  if (call.questionDotToken ||
1615
- call.arguments.length !== 0 ||
1665
+ call.arguments.nodes.length !== 0 ||
1616
1666
  (!ts.isPropertyAccessExpression(access) && !ts.isElementAccessExpression(access)) ||
1617
1667
  access.questionDotToken) {
1618
1668
  return null;
@@ -1622,10 +1672,9 @@ export function lowerStaticReadableStreamReaderCall(lowerer, call) {
1622
1672
  return null;
1623
1673
  const receiverTs = lowerer.typeOf(access.expression);
1624
1674
  const symbol = receiverTs.getSymbol();
1625
- if (symbol?.name !== "ReadableStreamDefaultReader" ||
1626
- !lowerer.checker
1627
- .declarationsOf(symbol)
1628
- .some((d) => ts.isInterfaceDeclaration(d) && lowerer.isStdlibFile(d.getSourceFile()))) {
1675
+ if (symbol === undefined ||
1676
+ ts.symbolName(symbol) !== "ReadableStreamDefaultReader" ||
1677
+ !symbol.declarations.some((d) => ts.isInterfaceDeclaration(d) && lowerer.isStdlibFile(ts.getSourceFileOfNode(d)))) {
1629
1678
  return null;
1630
1679
  }
1631
1680
  const type = lowerer.mapTypeOf(lowerer.typeOf(call));
@@ -1644,15 +1693,15 @@ export function lowerStaticReadableStreamReaderCall(lowerer, call) {
1644
1693
  export function lowerDynamicImportCall(lowerer, call) {
1645
1694
  if (call.expression.kind !== ts.SyntaxKind.ImportKeyword)
1646
1695
  return null;
1647
- const arg = call.arguments[0];
1696
+ const arg = call.arguments.nodes[0];
1648
1697
  if (arg === undefined || !ts.isStringLiteralLike(arg)) {
1649
1698
  lowerer.unsupported("SC1090", call, "dynamic import() of computed specifiers (the module graph resolves at " +
1650
1699
  "build time — the specifier must be a string literal)");
1651
1700
  }
1652
- if (call.arguments.length !== 1) {
1701
+ if (call.arguments.nodes.length !== 1) {
1653
1702
  lowerer.unsupported("SC1090", call, "dynamic import() with import attributes");
1654
1703
  }
1655
- const res = lowerer.dynImports.get(`${call.getSourceFile().fileName}\u0000${arg.text}`);
1704
+ const res = lowerer.dynImports.get(`${ts.getSourceFileOfNode(call).fileName}\u0000${arg.text}`);
1656
1705
  if (res === undefined)
1657
1706
  lowerer.refuseUnsupportedApi("'import()'", call);
1658
1707
  if (res.kind === "program-module") {
@@ -1666,7 +1715,7 @@ export function lowerDynamicImportCall(lowerer, call) {
1666
1715
  /** The checker-resolved program source behind one literal import(). */
1667
1716
  function programImportTarget(lowerer, arg) {
1668
1717
  const modSym = lowerer.checker.getSymbolAtLocation(arg);
1669
- for (const d of modSym ? lowerer.checker.declarationsOf(modSym) : []) {
1718
+ for (const d of modSym ? modSym.declarations : []) {
1670
1719
  if (ts.isSourceFile(d) && !d.isDeclarationFile)
1671
1720
  return d;
1672
1721
  }
@@ -1816,12 +1865,12 @@ export function lowerStdlibMethodCall(lowerer, call, access) {
1816
1865
  {
1817
1866
  const sigMember = lowerer.stdlibGlobalMember(access, "AbortSignal");
1818
1867
  if ((sigMember === "timeout" || sigMember === "abort" || sigMember === "any") &&
1819
- call.arguments.every((argument) => !ts.isSpreadElement(argument))) {
1868
+ call.arguments.nodes.every((argument) => !ts.isSpreadElement(argument))) {
1820
1869
  lowerer.refuseUnsupportedApi(`'AbortSignal.${sigMember}'`, call);
1821
1870
  }
1822
1871
  }
1823
1872
  if (lowerer.stdlibGlobalMember(access, "ReadableStream") === "from" &&
1824
- call.arguments.every((argument) => !ts.isSpreadElement(argument))) {
1873
+ call.arguments.nodes.every((argument) => !ts.isSpreadElement(argument))) {
1825
1874
  lowerer.refuseUnsupportedApi("'ReadableStream.from'", call);
1826
1875
  }
1827
1876
  const isMath = lowerer.stdlibGlobalMember(access, "Math") !== null;
@@ -1831,9 +1880,16 @@ export function lowerStdlibMethodCall(lowerer, call, access) {
1831
1880
  // missing read, or the read itself) converts to NaN, ToNumber's answer
1832
1881
  // for undefined, instead of trusting the checker's number type.
1833
1882
  const mathArg = (a) => lowerToNumberArgument(lowerer, a);
1834
- if (staticMath && name === "hypot") {
1835
- const elems = call.arguments.map((a) => ts.isSpreadElement(a) ? lowerer.lowerExprExpecting(a.expression, arrayOf(F64)) : mathArg(a));
1836
- const spreads = call.arguments.flatMap((a, i) => (ts.isSpreadElement(a) ? [i] : []));
1883
+ // Math.hypot, and Math.max/Math.min with a spread among other arguments
1884
+ // (`Math.max(...xs, 5)`): the arguments in order, spreads flattened, as
1885
+ // one number[] the runtime folds.
1886
+ if (staticMath &&
1887
+ (name === "hypot" ||
1888
+ ((name === "max" || name === "min") &&
1889
+ call.arguments.nodes.length > 1 &&
1890
+ call.arguments.nodes.some(ts.isSpreadElement)))) {
1891
+ const elems = call.arguments.nodes.map((a) => ts.isSpreadElement(a) ? lowerer.lowerExprExpecting(a.expression, arrayOf(F64)) : mathArg(a));
1892
+ const spreads = call.arguments.nodes.flatMap((a, i) => (ts.isSpreadElement(a) ? [i] : []));
1837
1893
  const packed = {
1838
1894
  kind: "arrayLit",
1839
1895
  elems,
@@ -1841,9 +1897,10 @@ export function lowerStdlibMethodCall(lowerer, call, access) {
1841
1897
  type: arrayOf(F64),
1842
1898
  loc,
1843
1899
  };
1844
- return { kind: "libCall", fn: staticMath.fn, args: [packed], type: F64, loc };
1900
+ const fn = name === "max" ? "math.maxArr" : name === "min" ? "math.minArr" : staticMath.fn;
1901
+ return { kind: "libCall", fn, args: [packed], type: F64, loc };
1845
1902
  }
1846
- if (staticMath && call.arguments.every((a) => !ts.isSpreadElement(a))) {
1903
+ if (staticMath && call.arguments.nodes.every((a) => !ts.isSpreadElement(a))) {
1847
1904
  // Math.max/Math.min at ANY plain arity — Node's are variadic. The
1848
1905
  // spec's reduction is a left fold of the same NaN-poisoning
1849
1906
  // ±0-ordered scalar compare the two-arg form lowers to, so n
@@ -1854,30 +1911,29 @@ export function lowerStdlibMethodCall(lowerer, call, access) {
1854
1911
  // arguments are the fold's seed: -Infinity for max, +Infinity for
1855
1912
  // min, exactly Node.
1856
1913
  if (name === "max" || name === "min") {
1857
- if (call.arguments.length === 0) {
1914
+ if (call.arguments.nodes.length === 0) {
1858
1915
  return { kind: "numLit", value: name === "max" ? -Infinity : Infinity, type: F64, loc };
1859
1916
  }
1860
- const args = call.arguments.map(mathArg);
1917
+ const args = call.arguments.nodes.map(mathArg);
1861
1918
  let acc = args[0];
1862
1919
  for (let i = 1; i < args.length; i++) {
1863
1920
  acc = { kind: "libCall", fn: staticMath.fn, args: [acc, args[i]], type: F64, loc };
1864
1921
  }
1865
1922
  return acc;
1866
1923
  }
1867
- if (call.arguments.length === staticMath.arity) {
1868
- const args = call.arguments.map(mathArg);
1924
+ if (call.arguments.nodes.length === staticMath.arity) {
1925
+ const args = call.arguments.nodes.map(mathArg);
1869
1926
  return { kind: "libCall", fn: staticMath.fn, args, type: F64, loc };
1870
1927
  }
1871
1928
  }
1872
1929
  // `Math.max(...xs)` / `Math.min(...xs)` over a number[]: a STATIC
1873
- // runtime fold (NaN poisons and ±0 follows JS ordering). This
1874
- // one-spread form lowers; mixed spread/positional argument lists keep
1875
- // the nest-calls fence.
1930
+ // runtime fold (NaN poisons and ±0 follows JS ordering). Mixed
1931
+ // spread/positional argument lists pack into one array above.
1876
1932
  if (isMath &&
1877
1933
  (name === "max" || name === "min") &&
1878
- call.arguments.length === 1 &&
1879
- ts.isSpreadElement(call.arguments[0])) {
1880
- const spread = call.arguments[0];
1934
+ call.arguments.nodes.length === 1 &&
1935
+ ts.isSpreadElement(call.arguments.nodes[0])) {
1936
+ const spread = call.arguments.nodes[0];
1881
1937
  let src = lowerer.lowerExpr(spread.expression);
1882
1938
  // JavaScript array call results retain checked storage so aliases stay
1883
1939
  // shared. This read-only fold can extract the inferred numeric array.
@@ -1887,6 +1943,11 @@ export function lowerStdlibMethodCall(lowerer, call, access) {
1887
1943
  src = lowerer.coerceInto(spread.expression, src, inferred);
1888
1944
  }
1889
1945
  }
1946
+ // A generator, or a class whose [Symbol.iterator] is a generator
1947
+ // method, drains into the number[] the fold reads.
1948
+ src = classGeneratorIterable(lowerer, src) ?? src;
1949
+ if (src.type.kind === "generator")
1950
+ src = generatorDrain(lowerer, src, F64, loc) ?? src;
1890
1951
  if (src.type.kind !== "array" || src.type.elem.kind !== "f64") {
1891
1952
  lowerer.unsupported("SC1090", spread, `spreading '${lowerer.fmt(src.type)}' into Math.${name} (only a number[] spreads)`);
1892
1953
  }
@@ -1899,7 +1960,7 @@ export function lowerStdlibMethodCall(lowerer, call, access) {
1899
1960
  };
1900
1961
  }
1901
1962
  const mathFn = isMath ? own(STDLIB_SURFACE.math.fns, name) : undefined;
1902
- if (mathFn && call.arguments.length === mathFn.args.length) {
1963
+ if (mathFn && call.arguments.nodes.length === mathFn.args.length) {
1903
1964
  lowerer.refuseUnsupportedApi(`'Math.${name}'`, call);
1904
1965
  }
1905
1966
  const kind = lowerer.mapTypeOf(lowerer.typeOf(access.expression))?.kind;
@@ -1908,7 +1969,7 @@ export function lowerStdlibMethodCall(lowerer, call, access) {
1908
1969
  : kind === "string"
1909
1970
  ? own(STDLIB_SURFACE.string, name)
1910
1971
  : undefined;
1911
- if (!entry || call.arguments.length !== entry.args.length)
1972
+ if (!entry || call.arguments.nodes.length !== entry.args.length)
1912
1973
  return null;
1913
1974
  if (!lowerer.isStdlibMember(access))
1914
1975
  return null;
@@ -1975,11 +2036,11 @@ export function npmMemberFence(lowerer, access) {
1975
2036
  * npmPackageOf, also asked directly for import-alias bindings (whose
1976
2037
  * aliased symbol is the package's export). */
1977
2038
  export function npmPackageOfSymbol(lowerer, sym) {
1978
- const decls = sym ? lowerer.checker.declarationsOf(sym) : undefined;
2039
+ const decls = sym ? sym.declarations : undefined;
1979
2040
  if (!decls || decls.length === 0)
1980
2041
  return null;
1981
- if (!decls.every((d) => lowerer.isNpmFile(d.getSourceFile())))
2042
+ if (!decls.every((d) => lowerer.isNpmFile(ts.getSourceFileOfNode(d))))
1982
2043
  return null;
1983
- return npmPackageNameOf(decls[0].getSourceFile().fileName);
2044
+ return npmPackageNameOf(ts.getSourceFileOfNode(decls[0]).fileName);
1984
2045
  }
1985
2046
  //# sourceMappingURL=lower-stdlib.js.map