@scriptc/compiler 0.3.5 → 0.4.0

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