@scriptc/compiler 0.3.6 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1358) hide show
  1. package/ambient/scriptc-node-fallback.d.ts +717 -55
  2. package/ambient/scriptc.d.ts +134 -0
  3. package/dist/backend/cycle-analysis.d.ts +1 -1
  4. package/dist/backend/cycle-analysis.js +1 -0
  5. package/dist/backend/cycle-analysis.js.map +1 -1
  6. package/dist/backend/cycle-analysis.test.js +13 -1
  7. package/dist/backend/cycle-analysis.test.js.map +1 -1
  8. package/dist/backend/cycle-mutability.js +16 -5
  9. package/dist/backend/cycle-mutability.js.map +1 -1
  10. package/dist/backend/executable-features.js +20 -0
  11. package/dist/backend/executable-features.js.map +1 -1
  12. package/dist/backend/immutability.test.js +1 -1
  13. package/dist/backend/library-pack.js +9 -0
  14. package/dist/backend/library-pack.js.map +1 -1
  15. package/dist/backend/link-plan-core.d.ts +2 -0
  16. package/dist/backend/link-plan-core.js +2 -0
  17. package/dist/backend/link-plan-core.js.map +1 -1
  18. package/dist/backend/link-plan.d.ts +1 -0
  19. package/dist/backend/link-plan.js +1 -0
  20. package/dist/backend/link-plan.js.map +1 -1
  21. package/dist/backend/llvm/alloc.d.ts +41 -4
  22. package/dist/backend/llvm/alloc.js +138 -7
  23. package/dist/backend/llvm/alloc.js.map +1 -1
  24. package/dist/backend/llvm/alloc.test.js +30 -1
  25. package/dist/backend/llvm/alloc.test.js.map +1 -1
  26. package/dist/backend/llvm/appended-array-literals.test.js +1 -1
  27. package/dist/backend/llvm/array-search.js +3 -1
  28. package/dist/backend/llvm/array-search.js.map +1 -1
  29. package/dist/backend/llvm/array-search.test.js +1 -1
  30. package/dist/backend/llvm/blocks.d.ts +8 -0
  31. package/dist/backend/llvm/blocks.js +43 -1
  32. package/dist/backend/llvm/blocks.js.map +1 -1
  33. package/dist/backend/llvm/blocks.test.js +22 -1
  34. package/dist/backend/llvm/blocks.test.js.map +1 -1
  35. package/dist/backend/llvm/byte-numbers.js +15 -5
  36. package/dist/backend/llvm/byte-numbers.js.map +1 -1
  37. package/dist/backend/llvm/bytes-alias.d.ts +14 -0
  38. package/dist/backend/llvm/bytes-alias.js +20 -0
  39. package/dist/backend/llvm/bytes-alias.js.map +1 -0
  40. package/dist/backend/llvm/bytes-loop-versions.d.ts +86 -0
  41. package/dist/backend/llvm/bytes-loop-versions.js +506 -0
  42. package/dist/backend/llvm/bytes-loop-versions.js.map +1 -0
  43. package/dist/backend/llvm/bytes-loop-versions.test.d.ts +1 -0
  44. package/dist/backend/llvm/bytes-loop-versions.test.js +244 -0
  45. package/dist/backend/llvm/bytes-loop-versions.test.js.map +1 -0
  46. package/dist/backend/llvm/call-lifetimes.js +50 -1
  47. package/dist/backend/llvm/call-lifetimes.js.map +1 -1
  48. package/dist/backend/llvm/call-lifetimes.test.js +34 -0
  49. package/dist/backend/llvm/call-lifetimes.test.js.map +1 -1
  50. package/dist/backend/llvm/checked-narrows.test.js +1 -1
  51. package/dist/backend/llvm/checked-value-lifetimes.js +4 -1
  52. package/dist/backend/llvm/checked-value-lifetimes.js.map +1 -1
  53. package/dist/backend/llvm/classes.d.ts +38 -1
  54. package/dist/backend/llvm/classes.js +185 -35
  55. package/dist/backend/llvm/classes.js.map +1 -1
  56. package/dist/backend/llvm/classes.test.js +79 -17
  57. package/dist/backend/llvm/classes.test.js.map +1 -1
  58. package/dist/backend/llvm/common.d.ts +21 -3
  59. package/dist/backend/llvm/common.js +51 -3
  60. package/dist/backend/llvm/common.js.map +1 -1
  61. package/dist/backend/llvm/constant-callbacks.d.ts +5 -1
  62. package/dist/backend/llvm/constant-callbacks.js +55 -12
  63. package/dist/backend/llvm/constant-callbacks.js.map +1 -1
  64. package/dist/backend/llvm/constant-callbacks.test.js +88 -1
  65. package/dist/backend/llvm/constant-callbacks.test.js.map +1 -1
  66. package/dist/backend/llvm/counted-loops.d.ts +4 -0
  67. package/dist/backend/llvm/counted-loops.js +37 -0
  68. package/dist/backend/llvm/counted-loops.js.map +1 -1
  69. package/dist/backend/llvm/dense-array-access.d.ts +15 -4
  70. package/dist/backend/llvm/dense-array-access.js +125 -44
  71. package/dist/backend/llvm/dense-array-access.js.map +1 -1
  72. package/dist/backend/llvm/dense-array-access.test.js +63 -3
  73. package/dist/backend/llvm/dense-array-access.test.js.map +1 -1
  74. package/dist/backend/llvm/dense-array-loops.d.ts +51 -0
  75. package/dist/backend/llvm/dense-array-loops.js +162 -0
  76. package/dist/backend/llvm/dense-array-loops.js.map +1 -0
  77. package/dist/backend/llvm/dense-array-loops.test.d.ts +1 -0
  78. package/dist/backend/llvm/dense-array-loops.test.js +128 -0
  79. package/dist/backend/llvm/dense-array-loops.test.js.map +1 -0
  80. package/dist/backend/llvm/dyn-handle-tags.test.d.ts +1 -0
  81. package/dist/backend/llvm/dyn-handle-tags.test.js +38 -0
  82. package/dist/backend/llvm/dyn-handle-tags.test.js.map +1 -0
  83. package/dist/backend/llvm/dyn.d.ts +37 -4
  84. package/dist/backend/llvm/dyn.js +354 -183
  85. package/dist/backend/llvm/dyn.js.map +1 -1
  86. package/dist/backend/llvm/emit-function.d.ts +64 -0
  87. package/dist/backend/llvm/emit-function.js +1193 -0
  88. package/dist/backend/llvm/emit-function.js.map +1 -0
  89. package/dist/backend/llvm/emit-module.d.ts +24 -0
  90. package/dist/backend/llvm/emit-module.js +1557 -0
  91. package/dist/backend/llvm/emit-module.js.map +1 -0
  92. package/dist/backend/llvm/emit-statements.d.ts +59 -0
  93. package/dist/backend/llvm/emit-statements.js +2041 -0
  94. package/dist/backend/llvm/emit-statements.js.map +1 -0
  95. package/dist/backend/llvm/emitter.d.ts +566 -291
  96. package/dist/backend/llvm/emitter.js +728 -4671
  97. package/dist/backend/llvm/emitter.js.map +1 -1
  98. package/dist/backend/llvm/emitter.test.js +57 -3
  99. package/dist/backend/llvm/emitter.test.js.map +1 -1
  100. package/dist/backend/llvm/expr-async.js +73 -46
  101. package/dist/backend/llvm/expr-async.js.map +1 -1
  102. package/dist/backend/llvm/expr-async.test.js +1 -1
  103. package/dist/backend/llvm/expr-bytes.d.ts +2 -0
  104. package/dist/backend/llvm/expr-bytes.js +76 -29
  105. package/dist/backend/llvm/expr-bytes.js.map +1 -1
  106. package/dist/backend/llvm/expr-callbacks.d.ts +6 -2
  107. package/dist/backend/llvm/expr-callbacks.js +48 -11
  108. package/dist/backend/llvm/expr-callbacks.js.map +1 -1
  109. package/dist/backend/llvm/expr-calls.d.ts +1 -1
  110. package/dist/backend/llvm/expr-calls.js +87 -56
  111. package/dist/backend/llvm/expr-calls.js.map +1 -1
  112. package/dist/backend/llvm/expr-calls.test.js +1 -1
  113. package/dist/backend/llvm/expr-containers.js +45 -24
  114. package/dist/backend/llvm/expr-containers.js.map +1 -1
  115. package/dist/backend/llvm/expr-control.js +16 -16
  116. package/dist/backend/llvm/expr-control.js.map +1 -1
  117. package/dist/backend/llvm/expr-dynamic.d.ts +3 -0
  118. package/dist/backend/llvm/expr-dynamic.js +113 -66
  119. package/dist/backend/llvm/expr-dynamic.js.map +1 -1
  120. package/dist/backend/llvm/expr-primitives.js +124 -28
  121. package/dist/backend/llvm/expr-primitives.js.map +1 -1
  122. package/dist/backend/llvm/expr-primitives.test.js +57 -2
  123. package/dist/backend/llvm/expr-primitives.test.js.map +1 -1
  124. package/dist/backend/llvm/expr-records.d.ts +1 -1
  125. package/dist/backend/llvm/expr-records.js +32 -11
  126. package/dist/backend/llvm/expr-records.js.map +1 -1
  127. package/dist/backend/llvm/expr-stream-bridges.js +65 -27
  128. package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
  129. package/dist/backend/llvm/expr-stream-bridges.test.js +2 -2
  130. package/dist/backend/llvm/expr-stream-callbacks.js +22 -1
  131. package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
  132. package/dist/backend/llvm/int32-abi.test.js +2 -2
  133. package/dist/backend/llvm/integer-clones.js +3 -3
  134. package/dist/backend/llvm/integer-clones.js.map +1 -1
  135. package/dist/backend/llvm/integer-clones.test.js +3 -3
  136. package/dist/backend/llvm/integer-remainder.d.ts +34 -13
  137. package/dist/backend/llvm/integer-remainder.js +156 -22
  138. package/dist/backend/llvm/integer-remainder.js.map +1 -1
  139. package/dist/backend/llvm/intern-tables.test.js +1 -1
  140. package/dist/backend/llvm/js-ic.d.ts +18 -0
  141. package/dist/backend/llvm/js-ic.js +712 -0
  142. package/dist/backend/llvm/js-ic.js.map +1 -0
  143. package/dist/backend/llvm/jsval-encoding.d.ts +21 -0
  144. package/dist/backend/llvm/jsval-encoding.js +20 -0
  145. package/dist/backend/llvm/jsval-encoding.js.map +1 -0
  146. package/dist/backend/llvm/jsval.d.ts +12 -0
  147. package/dist/backend/llvm/jsval.js +616 -0
  148. package/dist/backend/llvm/jsval.js.map +1 -0
  149. package/dist/backend/llvm/lazy-captures.d.ts +12 -2
  150. package/dist/backend/llvm/lazy-captures.js +39 -17
  151. package/dist/backend/llvm/lazy-captures.js.map +1 -1
  152. package/dist/backend/llvm/lib-abi.js +1 -1
  153. package/dist/backend/llvm/lib-abi.js.map +1 -1
  154. package/dist/backend/llvm/lib-connect.js +1 -1
  155. package/dist/backend/llvm/lib-connect.js.map +1 -1
  156. package/dist/backend/llvm/lib-datagram.js +14 -8
  157. package/dist/backend/llvm/lib-datagram.js.map +1 -1
  158. package/dist/backend/llvm/lib-dispatch.js +189 -23
  159. package/dist/backend/llvm/lib-dispatch.js.map +1 -1
  160. package/dist/backend/llvm/lib-filesystem.js +42 -13
  161. package/dist/backend/llvm/lib-filesystem.js.map +1 -1
  162. package/dist/backend/llvm/lib-http2.js +3 -3
  163. package/dist/backend/llvm/lib-http2.js.map +1 -1
  164. package/dist/backend/llvm/lib-lookup.js +2 -2
  165. package/dist/backend/llvm/lib-lookup.js.map +1 -1
  166. package/dist/backend/llvm/lib-network.js +56 -22
  167. package/dist/backend/llvm/lib-network.js.map +1 -1
  168. package/dist/backend/llvm/lib-process.js +94 -53
  169. package/dist/backend/llvm/lib-process.js.map +1 -1
  170. package/dist/backend/llvm/lib-shared.d.ts +12 -0
  171. package/dist/backend/llvm/lib-shared.js +209 -6
  172. package/dist/backend/llvm/lib-shared.js.map +1 -1
  173. package/dist/backend/llvm/lib-stream.js +46 -16
  174. package/dist/backend/llvm/lib-stream.js.map +1 -1
  175. package/dist/backend/llvm/lib-test.js +43 -7
  176. package/dist/backend/llvm/lib-test.js.map +1 -1
  177. package/dist/backend/llvm/lib-tls.js +4 -9
  178. package/dist/backend/llvm/lib-tls.js.map +1 -1
  179. package/dist/backend/llvm/local-array-reads.js +42 -33
  180. package/dist/backend/llvm/local-array-reads.js.map +1 -1
  181. package/dist/backend/llvm/local-array-reads.test.js +1 -1
  182. package/dist/backend/llvm/local-extents.d.ts +19 -0
  183. package/dist/backend/llvm/local-extents.js +169 -0
  184. package/dist/backend/llvm/local-extents.js.map +1 -0
  185. package/dist/backend/llvm/local-extents.test.d.ts +1 -0
  186. package/dist/backend/llvm/local-extents.test.js +92 -0
  187. package/dist/backend/llvm/local-extents.test.js.map +1 -0
  188. package/dist/backend/llvm/local-union-storage.js +7 -7
  189. package/dist/backend/llvm/local-union-storage.js.map +1 -1
  190. package/dist/backend/llvm/local-union-storage.test.js +2 -2
  191. package/dist/backend/llvm/map-entry-fusion.test.js +1 -1
  192. package/dist/backend/llvm/map-number-lookup.d.ts +20 -4
  193. package/dist/backend/llvm/map-number-lookup.js +45 -9
  194. package/dist/backend/llvm/map-number-lookup.js.map +1 -1
  195. package/dist/backend/llvm/map-number-lookup.test.js +2 -2
  196. package/dist/backend/llvm/map-read-lifetimes.test.js +2 -2
  197. package/dist/backend/llvm/narrow-guards.d.ts +38 -0
  198. package/dist/backend/llvm/narrow-guards.js +215 -0
  199. package/dist/backend/llvm/narrow-guards.js.map +1 -0
  200. package/dist/backend/llvm/nullable-unions.d.ts +64 -6
  201. package/dist/backend/llvm/nullable-unions.js +103 -6
  202. package/dist/backend/llvm/nullable-unions.js.map +1 -1
  203. package/dist/backend/llvm/nullable-unions.test.d.ts +1 -0
  204. package/dist/backend/llvm/nullable-unions.test.js +65 -0
  205. package/dist/backend/llvm/nullable-unions.test.js.map +1 -0
  206. package/dist/backend/llvm/publish.d.ts +7 -0
  207. package/dist/backend/llvm/publish.js +50 -19
  208. package/dist/backend/llvm/publish.js.map +1 -1
  209. package/dist/backend/llvm/publish.test.js +1 -1
  210. package/dist/backend/llvm/receivers.d.ts +31 -0
  211. package/dist/backend/llvm/receivers.js +395 -0
  212. package/dist/backend/llvm/receivers.js.map +1 -0
  213. package/dist/backend/llvm/record-results.d.ts +12 -1
  214. package/dist/backend/llvm/record-results.js +64 -4
  215. package/dist/backend/llvm/record-results.js.map +1 -1
  216. package/dist/backend/llvm/reference-effects.js +9 -0
  217. package/dist/backend/llvm/reference-effects.js.map +1 -1
  218. package/dist/backend/llvm/reference-writes.d.ts +4 -0
  219. package/dist/backend/llvm/reference-writes.js +142 -6
  220. package/dist/backend/llvm/reference-writes.js.map +1 -1
  221. package/dist/backend/llvm/reference-writes.test.d.ts +1 -0
  222. package/dist/backend/llvm/reference-writes.test.js +88 -0
  223. package/dist/backend/llvm/reference-writes.test.js.map +1 -0
  224. package/dist/backend/llvm/regex-matchers.d.ts +8 -0
  225. package/dist/backend/llvm/regex-matchers.js +33 -0
  226. package/dist/backend/llvm/regex-matchers.js.map +1 -1
  227. package/dist/backend/llvm/regex-matchers.test.js +23 -1
  228. package/dist/backend/llvm/regex-matchers.test.js.map +1 -1
  229. package/dist/backend/llvm/regions.d.ts +1 -1
  230. package/dist/backend/llvm/regions.js +10 -7
  231. package/dist/backend/llvm/regions.js.map +1 -1
  232. package/dist/backend/llvm/regions.test.js +8 -2
  233. package/dist/backend/llvm/regions.test.js.map +1 -1
  234. package/dist/backend/llvm/shapes.d.ts +74 -45
  235. package/dist/backend/llvm/shapes.js +289 -28
  236. package/dist/backend/llvm/shapes.js.map +1 -1
  237. package/dist/backend/llvm/shapes.test.js +37 -3
  238. package/dist/backend/llvm/shapes.test.js.map +1 -1
  239. package/dist/backend/llvm/speculative-integers.d.ts +20 -1
  240. package/dist/backend/llvm/speculative-integers.js +94 -6
  241. package/dist/backend/llvm/speculative-integers.js.map +1 -1
  242. package/dist/backend/llvm/speculative-integers.test.js +55 -1
  243. package/dist/backend/llvm/speculative-integers.test.js.map +1 -1
  244. package/dist/backend/llvm/split-loops.js +2 -2
  245. package/dist/backend/llvm/split-loops.js.map +1 -1
  246. package/dist/backend/llvm/stack-objects.d.ts +26 -6
  247. package/dist/backend/llvm/stack-objects.js +133 -10
  248. package/dist/backend/llvm/stack-objects.js.map +1 -1
  249. package/dist/backend/llvm/stack-objects.test.js +55 -1
  250. package/dist/backend/llvm/stack-objects.test.js.map +1 -1
  251. package/dist/backend/llvm/stack-unions.test.js +1 -1
  252. package/dist/backend/llvm/string-construction.test.js +1 -1
  253. package/dist/backend/llvm/string-lifetimes.test.js +15 -14
  254. package/dist/backend/llvm/string-lifetimes.test.js.map +1 -1
  255. package/dist/backend/llvm/string-reads.d.ts +1 -1
  256. package/dist/backend/llvm/string-reads.js +4 -4
  257. package/dist/backend/llvm/string-reads.js.map +1 -1
  258. package/dist/backend/llvm/string-slices.d.ts +25 -0
  259. package/dist/backend/llvm/string-slices.js +207 -1
  260. package/dist/backend/llvm/string-slices.js.map +1 -1
  261. package/dist/backend/llvm/string-slices.test.js +139 -2
  262. package/dist/backend/llvm/string-slices.test.js.map +1 -1
  263. package/dist/backend/llvm/switch-dispatch.test.js +2 -2
  264. package/dist/backend/llvm/thread-slots.d.ts +5 -0
  265. package/dist/backend/llvm/thread-slots.js +142 -0
  266. package/dist/backend/llvm/thread-slots.js.map +1 -0
  267. package/dist/backend/llvm/thread-slots.test.d.ts +1 -0
  268. package/dist/backend/llvm/thread-slots.test.js +111 -0
  269. package/dist/backend/llvm/thread-slots.test.js.map +1 -0
  270. package/dist/backend/llvm/union-repr.d.ts +7 -7
  271. package/dist/backend/llvm/union-repr.js +18 -2
  272. package/dist/backend/llvm/union-repr.js.map +1 -1
  273. package/dist/backend/llvm/union-retype.test.js +17 -3
  274. package/dist/backend/llvm/union-retype.test.js.map +1 -1
  275. package/dist/backend/llvm/walkers.d.ts +2 -2
  276. package/dist/backend/llvm/walkers.js +51 -26
  277. package/dist/backend/llvm/walkers.js.map +1 -1
  278. package/dist/backend/llvm/wasm-modules.d.ts +16 -0
  279. package/dist/backend/llvm/wasm-modules.js +66 -0
  280. package/dist/backend/llvm/wasm-modules.js.map +1 -0
  281. package/dist/backend/llvm/wrapping-sums.d.ts +7 -0
  282. package/dist/backend/llvm/wrapping-sums.js +11 -3
  283. package/dist/backend/llvm/wrapping-sums.js.map +1 -1
  284. package/dist/backend/mangle.d.ts +12 -0
  285. package/dist/backend/mangle.js +18 -0
  286. package/dist/backend/mangle.js.map +1 -1
  287. package/dist/backend/may-throw.d.ts +3 -0
  288. package/dist/backend/may-throw.js +4 -2
  289. package/dist/backend/may-throw.js.map +1 -1
  290. package/dist/backend/may-throw.test.js +1 -1
  291. package/dist/backend/native/contracts.d.ts +57 -0
  292. package/dist/backend/native/executable.js +211 -139
  293. package/dist/backend/native/executable.js.map +1 -1
  294. package/dist/backend/native/library.js +2 -0
  295. package/dist/backend/native/library.js.map +1 -1
  296. package/dist/backend/native/runtime-inputs.d.ts +1 -1
  297. package/dist/backend/native/runtime-inputs.js +1 -0
  298. package/dist/backend/native/runtime-inputs.js.map +1 -1
  299. package/dist/backend/native-codegen.d.ts +6 -0
  300. package/dist/backend/native-codegen.js +19 -0
  301. package/dist/backend/native-codegen.js.map +1 -1
  302. package/dist/backend/native-codegen.test.js +27 -0
  303. package/dist/backend/native-codegen.test.js.map +1 -1
  304. package/dist/backend/native-link-info-core.d.ts +48 -0
  305. package/dist/backend/native-link-info-core.js.map +1 -1
  306. package/dist/backend/native-profile.d.ts +32 -0
  307. package/dist/backend/native-profile.js +39 -0
  308. package/dist/backend/native-profile.js.map +1 -0
  309. package/dist/backend/native-profile.test.d.ts +1 -0
  310. package/dist/backend/native-profile.test.js +58 -0
  311. package/dist/backend/native-profile.test.js.map +1 -0
  312. package/dist/backend/native-tools.d.ts +14 -0
  313. package/dist/backend/native-tools.js +13 -0
  314. package/dist/backend/native-tools.js.map +1 -1
  315. package/dist/backend/publication.test.js +1 -1
  316. package/dist/backend/runtime-abi.d.ts +2 -2
  317. package/dist/backend/runtime-abi.js +2 -2
  318. package/dist/backend/runtime-pack-core.d.ts +13 -1
  319. package/dist/backend/runtime-pack-core.js +14 -1
  320. package/dist/backend/runtime-pack-core.js.map +1 -1
  321. package/dist/backend/runtime-pack-native.js +1 -1
  322. package/dist/backend/runtime-pack-native.js.map +1 -1
  323. package/dist/backend/runtime-pack-native.test.d.ts +1 -0
  324. package/dist/backend/runtime-pack-native.test.js +31 -0
  325. package/dist/backend/runtime-pack-native.test.js.map +1 -0
  326. package/dist/backend/runtime-pack-targets.test.js +9 -1
  327. package/dist/backend/runtime-pack-targets.test.js.map +1 -1
  328. package/dist/backend/runtime-pack.test.js +9 -1
  329. package/dist/backend/runtime-pack.test.js.map +1 -1
  330. package/dist/backend/stack-observations.d.ts +22 -0
  331. package/dist/backend/stack-observations.js +382 -0
  332. package/dist/backend/stack-observations.js.map +1 -0
  333. package/dist/backend/stack-observations.test.d.ts +1 -0
  334. package/dist/backend/stack-observations.test.js +233 -0
  335. package/dist/backend/stack-observations.test.js.map +1 -0
  336. package/dist/backend/target-diagnostics.js +15 -0
  337. package/dist/backend/target-diagnostics.js.map +1 -1
  338. package/dist/backend/target-diagnostics.test.js +1 -1
  339. package/dist/backend/warm-cache.js +8 -0
  340. package/dist/backend/warm-cache.js.map +1 -1
  341. package/dist/backend/young-nursery.d.ts +7 -0
  342. package/dist/backend/young-nursery.js +10 -0
  343. package/dist/backend/young-nursery.js.map +1 -0
  344. package/dist/cli/command.js +106 -4
  345. package/dist/cli/command.js.map +1 -1
  346. package/dist/cli/host.d.ts +3 -0
  347. package/dist/cli/output-options.d.ts +2 -0
  348. package/dist/cli/output-options.js +9 -0
  349. package/dist/cli/output-options.js.map +1 -1
  350. package/dist/cli/usage.d.ts +21 -1
  351. package/dist/cli/usage.js +43 -1
  352. package/dist/cli/usage.js.map +1 -1
  353. package/dist/compat/fetch-profile.js +10 -1
  354. package/dist/compat/fetch-profile.js.map +1 -1
  355. package/dist/compile-types.d.ts +22 -0
  356. package/dist/contracts/check.js +25 -8
  357. package/dist/contracts/check.js.map +1 -1
  358. package/dist/contracts/int32-elements.d.ts +115 -0
  359. package/dist/contracts/int32-elements.js +1179 -0
  360. package/dist/contracts/int32-elements.js.map +1 -0
  361. package/dist/coverage/report.d.ts +16 -0
  362. package/dist/coverage/report.js +182 -1
  363. package/dist/coverage/report.js.map +1 -1
  364. package/dist/coverage/surface-manifest.js +16 -3
  365. package/dist/coverage/surface-manifest.js.map +1 -1
  366. package/dist/coverage/verdict-cache.d.ts +2 -0
  367. package/dist/coverage/verdict-cache.js +12 -0
  368. package/dist/coverage/verdict-cache.js.map +1 -1
  369. package/dist/coverage/verdict-cache.test.js +2 -1
  370. package/dist/coverage/verdict-cache.test.js.map +1 -1
  371. package/dist/diagnostics/diagnostic.d.ts +10 -6
  372. package/dist/diagnostics/diagnostic.js +29 -21
  373. package/dist/diagnostics/diagnostic.js.map +1 -1
  374. package/dist/diagnostics/envelope.d.ts +39 -2
  375. package/dist/diagnostics/envelope.js.map +1 -1
  376. package/dist/diagnostics/render.d.ts +7 -0
  377. package/dist/diagnostics/render.js +50 -13
  378. package/dist/diagnostics/render.js.map +1 -1
  379. package/dist/diagnostics/render.test.d.ts +1 -0
  380. package/dist/diagnostics/render.test.js +49 -0
  381. package/dist/diagnostics/render.test.js.map +1 -0
  382. package/dist/executable/executable-cache.d.ts +27 -0
  383. package/dist/executable/executable-cache.js +19 -1
  384. package/dist/executable/executable-cache.js.map +1 -1
  385. package/dist/executable/executable-cache.test.js +12 -1
  386. package/dist/executable/executable-cache.test.js.map +1 -1
  387. package/dist/executable/prepare.js +2 -1
  388. package/dist/executable/prepare.js.map +1 -1
  389. package/dist/frontend/analysis.js +6 -1
  390. package/dist/frontend/analysis.js.map +1 -1
  391. package/dist/frontend/arguments-usage.d.ts +8 -0
  392. package/dist/frontend/arguments-usage.js +98 -0
  393. package/dist/frontend/arguments-usage.js.map +1 -1
  394. package/dist/frontend/arguments-usage.test.d.ts +1 -0
  395. package/dist/frontend/arguments-usage.test.js +32 -0
  396. package/dist/frontend/arguments-usage.test.js.map +1 -0
  397. package/dist/frontend/builtin-modules.d.ts +16 -2
  398. package/dist/frontend/builtin-modules.js +40 -7
  399. package/dist/frontend/builtin-modules.js.map +1 -1
  400. package/dist/frontend/builtin-package-aliases.d.ts +24 -0
  401. package/dist/frontend/builtin-package-aliases.js +133 -0
  402. package/dist/frontend/builtin-package-aliases.js.map +1 -0
  403. package/dist/frontend/builtin-package-aliases.test.d.ts +1 -0
  404. package/dist/frontend/builtin-package-aliases.test.js +48 -0
  405. package/dist/frontend/builtin-package-aliases.test.js.map +1 -0
  406. package/dist/frontend/cjs-syntax.js +52 -51
  407. package/dist/frontend/cjs-syntax.js.map +1 -1
  408. package/dist/frontend/contract-types.d.ts +3 -0
  409. package/dist/frontend/contract-types.js +36 -7
  410. package/dist/frontend/contract-types.js.map +1 -1
  411. package/dist/frontend/dts-paths.d.ts +4 -0
  412. package/dist/frontend/dts-paths.js +9 -1
  413. package/dist/frontend/dts-paths.js.map +1 -1
  414. package/dist/frontend/experimental-import.d.ts +5 -1
  415. package/dist/frontend/experimental-import.js +26 -7
  416. package/dist/frontend/experimental-import.js.map +1 -1
  417. package/dist/frontend/fork-target.js +20 -22
  418. package/dist/frontend/fork-target.js.map +1 -1
  419. package/dist/frontend/fork-target.test.js +2 -1
  420. package/dist/frontend/fork-target.test.js.map +1 -1
  421. package/dist/frontend/function-completion.js +6 -6
  422. package/dist/frontend/function-completion.js.map +1 -1
  423. package/dist/frontend/helper-tokens.js +15 -3
  424. package/dist/frontend/helper-tokens.js.map +1 -1
  425. package/dist/frontend/helper-tokens.test.js +7 -1
  426. package/dist/frontend/helper-tokens.test.js.map +1 -1
  427. package/dist/frontend/inferred-js-diagnostics.js +14 -17
  428. package/dist/frontend/inferred-js-diagnostics.js.map +1 -1
  429. package/dist/frontend/input-tracker.d.ts +3 -0
  430. package/dist/frontend/input-tracker.js +32 -3
  431. package/dist/frontend/input-tracker.js.map +1 -1
  432. package/dist/frontend/lib-contract.js +36 -32
  433. package/dist/frontend/lib-contract.js.map +1 -1
  434. package/dist/frontend/lib-exports.js +3 -3
  435. package/dist/frontend/lib-exports.js.map +1 -1
  436. package/dist/frontend/lowering/array-values.d.ts +8 -3
  437. package/dist/frontend/lowering/array-values.js +60 -11
  438. package/dist/frontend/lowering/array-values.js.map +1 -1
  439. package/dist/frontend/lowering/assert-instances.js +4 -4
  440. package/dist/frontend/lowering/assert-instances.js.map +1 -1
  441. package/dist/frontend/lowering/assertion-identity.d.ts +12 -0
  442. package/dist/frontend/lowering/assertion-identity.js +70 -0
  443. package/dist/frontend/lowering/assertion-identity.js.map +1 -0
  444. package/dist/frontend/lowering/assertion-members.d.ts +28 -0
  445. package/dist/frontend/lowering/assertion-members.js +185 -0
  446. package/dist/frontend/lowering/assertion-members.js.map +1 -0
  447. package/dist/frontend/lowering/binding-analysis.js +27 -20
  448. package/dist/frontend/lowering/binding-analysis.js.map +1 -1
  449. package/dist/frontend/lowering/builtin-calls.js +63 -5
  450. package/dist/frontend/lowering/builtin-calls.js.map +1 -1
  451. package/dist/frontend/lowering/builtin-function-fences.d.ts +14 -0
  452. package/dist/frontend/lowering/builtin-function-fences.js +42 -0
  453. package/dist/frontend/lowering/builtin-function-fences.js.map +1 -0
  454. package/dist/frontend/lowering/builtins/arguments.js +1 -1
  455. package/dist/frontend/lowering/builtins/arguments.js.map +1 -1
  456. package/dist/frontend/lowering/builtins/async-context.js +53 -52
  457. package/dist/frontend/lowering/builtins/async-context.js.map +1 -1
  458. package/dist/frontend/lowering/builtins/atomics.js +6 -6
  459. package/dist/frontend/lowering/builtins/atomics.js.map +1 -1
  460. package/dist/frontend/lowering/builtins/blob.js +8 -6
  461. package/dist/frontend/lowering/builtins/blob.js.map +1 -1
  462. package/dist/frontend/lowering/builtins/builtin-class-dyn.d.ts +31 -0
  463. package/dist/frontend/lowering/builtins/builtin-class-dyn.js +205 -0
  464. package/dist/frontend/lowering/builtins/builtin-class-dyn.js.map +1 -0
  465. package/dist/frontend/lowering/builtins/callable-aliases.js +17 -5
  466. package/dist/frontend/lowering/builtins/callable-aliases.js.map +1 -1
  467. package/dist/frontend/lowering/builtins/child-process-async.js +7 -7
  468. package/dist/frontend/lowering/builtins/child-process-async.js.map +1 -1
  469. package/dist/frontend/lowering/builtins/child-process-methods.d.ts +6 -4
  470. package/dist/frontend/lowering/builtins/child-process-methods.js +310 -57
  471. package/dist/frontend/lowering/builtins/child-process-methods.js.map +1 -1
  472. package/dist/frontend/lowering/builtins/child-process-sync.js +16 -10
  473. package/dist/frontend/lowering/builtins/child-process-sync.js.map +1 -1
  474. package/dist/frontend/lowering/builtins/child-process.d.ts +6 -4
  475. package/dist/frontend/lowering/builtins/child-process.js +85 -61
  476. package/dist/frontend/lowering/builtins/child-process.js.map +1 -1
  477. package/dist/frontend/lowering/builtins/class-values.d.ts +60 -0
  478. package/dist/frontend/lowering/builtins/class-values.js +226 -0
  479. package/dist/frontend/lowering/builtins/class-values.js.map +1 -0
  480. package/dist/frontend/lowering/builtins/compression.d.ts +9 -0
  481. package/dist/frontend/lowering/builtins/compression.js +107 -44
  482. package/dist/frontend/lowering/builtins/compression.js.map +1 -1
  483. package/dist/frontend/lowering/builtins/constants.d.ts +9 -1
  484. package/dist/frontend/lowering/builtins/constants.js +28 -7
  485. package/dist/frontend/lowering/builtins/constants.js.map +1 -1
  486. package/dist/frontend/lowering/builtins/crypto.d.ts +22 -0
  487. package/dist/frontend/lowering/builtins/crypto.js +215 -38
  488. package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
  489. package/dist/frontend/lowering/builtins/dates.d.ts +7 -1
  490. package/dist/frontend/lowering/builtins/dates.js +92 -16
  491. package/dist/frontend/lowering/builtins/dates.js.map +1 -1
  492. package/dist/frontend/lowering/builtins/disposable-stack.d.ts +18 -0
  493. package/dist/frontend/lowering/builtins/disposable-stack.js +137 -0
  494. package/dist/frontend/lowering/builtins/disposable-stack.js.map +1 -0
  495. package/dist/frontend/lowering/builtins/ecdh.d.ts +10 -0
  496. package/dist/frontend/lowering/builtins/ecdh.js +208 -0
  497. package/dist/frontend/lowering/builtins/ecdh.js.map +1 -0
  498. package/dist/frontend/lowering/builtins/environment.js +3 -3
  499. package/dist/frontend/lowering/builtins/environment.js.map +1 -1
  500. package/dist/frontend/lowering/builtins/errors.d.ts +14 -10
  501. package/dist/frontend/lowering/builtins/errors.js +169 -3
  502. package/dist/frontend/lowering/builtins/errors.js.map +1 -1
  503. package/dist/frontend/lowering/builtins/filesystem-calls.js +128 -116
  504. package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
  505. package/dist/frontend/lowering/builtins/filesystem.js +77 -77
  506. package/dist/frontend/lowering/builtins/filesystem.js.map +1 -1
  507. package/dist/frontend/lowering/builtins/fs-glob.js +3 -3
  508. package/dist/frontend/lowering/builtins/fs-glob.js.map +1 -1
  509. package/dist/frontend/lowering/builtins/fs-streams.js +10 -11
  510. package/dist/frontend/lowering/builtins/fs-streams.js.map +1 -1
  511. package/dist/frontend/lowering/builtins/ipc.js +45 -8
  512. package/dist/frontend/lowering/builtins/ipc.js.map +1 -1
  513. package/dist/frontend/lowering/builtins/json.js +284 -24
  514. package/dist/frontend/lowering/builtins/json.js.map +1 -1
  515. package/dist/frontend/lowering/builtins/key-object.js +4 -4
  516. package/dist/frontend/lowering/builtins/key-object.js.map +1 -1
  517. package/dist/frontend/lowering/builtins/module-bindings.d.ts +8 -0
  518. package/dist/frontend/lowering/builtins/module-bindings.js +71 -22
  519. package/dist/frontend/lowering/builtins/module-bindings.js.map +1 -1
  520. package/dist/frontend/lowering/builtins/module-calls.js +55 -44
  521. package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
  522. package/dist/frontend/lowering/builtins/module-resolution.d.ts +4 -3
  523. package/dist/frontend/lowering/builtins/module-resolution.js +24 -23
  524. package/dist/frontend/lowering/builtins/module-resolution.js.map +1 -1
  525. package/dist/frontend/lowering/builtins/navigator.d.ts +13 -0
  526. package/dist/frontend/lowering/builtins/navigator.js +40 -0
  527. package/dist/frontend/lowering/builtins/navigator.js.map +1 -0
  528. package/dist/frontend/lowering/builtins/net-address.d.ts +19 -0
  529. package/dist/frontend/lowering/builtins/net-address.js +156 -0
  530. package/dist/frontend/lowering/builtins/net-address.js.map +1 -0
  531. package/dist/frontend/lowering/builtins/numbers.js +25 -9
  532. package/dist/frontend/lowering/builtins/numbers.js.map +1 -1
  533. package/dist/frontend/lowering/builtins/operating-system.d.ts +4 -0
  534. package/dist/frontend/lowering/builtins/operating-system.js +25 -12
  535. package/dist/frontend/lowering/builtins/operating-system.js.map +1 -1
  536. package/dist/frontend/lowering/builtins/performance.d.ts +12 -0
  537. package/dist/frontend/lowering/builtins/performance.js +259 -8
  538. package/dist/frontend/lowering/builtins/performance.js.map +1 -1
  539. package/dist/frontend/lowering/builtins/process.d.ts +41 -1
  540. package/dist/frontend/lowering/builtins/process.js +505 -99
  541. package/dist/frontend/lowering/builtins/process.js.map +1 -1
  542. package/dist/frontend/lowering/builtins/promises.d.ts +5 -1
  543. package/dist/frontend/lowering/builtins/promises.js +326 -43
  544. package/dist/frontend/lowering/builtins/promises.js.map +1 -1
  545. package/dist/frontend/lowering/builtins/promisify-callback.d.ts +40 -0
  546. package/dist/frontend/lowering/builtins/promisify-callback.js +338 -0
  547. package/dist/frontend/lowering/builtins/promisify-callback.js.map +1 -0
  548. package/dist/frontend/lowering/builtins/properties.js +37 -1
  549. package/dist/frontend/lowering/builtins/properties.js.map +1 -1
  550. package/dist/frontend/lowering/builtins/querystring.js +14 -14
  551. package/dist/frontend/lowering/builtins/querystring.js.map +1 -1
  552. package/dist/frontend/lowering/builtins/readline.d.ts +12 -2
  553. package/dist/frontend/lowering/builtins/readline.js +136 -39
  554. package/dist/frontend/lowering/builtins/readline.js.map +1 -1
  555. package/dist/frontend/lowering/builtins/receiver-types.js +3 -5
  556. package/dist/frontend/lowering/builtins/receiver-types.js.map +1 -1
  557. package/dist/frontend/lowering/builtins/reflection.js +42 -14
  558. package/dist/frontend/lowering/builtins/reflection.js.map +1 -1
  559. package/dist/frontend/lowering/builtins/runtime-constructor.d.ts +26 -0
  560. package/dist/frontend/lowering/builtins/runtime-constructor.js +165 -0
  561. package/dist/frontend/lowering/builtins/runtime-constructor.js.map +1 -0
  562. package/dist/frontend/lowering/builtins/strings.js +101 -12
  563. package/dist/frontend/lowering/builtins/strings.js.map +1 -1
  564. package/dist/frontend/lowering/builtins/text-codecs.js +41 -38
  565. package/dist/frontend/lowering/builtins/text-codecs.js.map +1 -1
  566. package/dist/frontend/lowering/builtins/timers.js +79 -30
  567. package/dist/frontend/lowering/builtins/timers.js.map +1 -1
  568. package/dist/frontend/lowering/builtins/typed-array-members.d.ts +7 -0
  569. package/dist/frontend/lowering/builtins/typed-array-members.js +160 -0
  570. package/dist/frontend/lowering/builtins/typed-array-members.js.map +1 -0
  571. package/dist/frontend/lowering/builtins/url.d.ts +3 -0
  572. package/dist/frontend/lowering/builtins/url.js +120 -17
  573. package/dist/frontend/lowering/builtins/url.js.map +1 -1
  574. package/dist/frontend/lowering/builtins/util-types.js +20 -4
  575. package/dist/frontend/lowering/builtins/util-types.js.map +1 -1
  576. package/dist/frontend/lowering/builtins/v8.d.ts +11 -0
  577. package/dist/frontend/lowering/builtins/v8.js +105 -0
  578. package/dist/frontend/lowering/builtins/v8.js.map +1 -0
  579. package/dist/frontend/lowering/builtins/webassembly.d.ts +33 -0
  580. package/dist/frontend/lowering/builtins/webassembly.js +388 -0
  581. package/dist/frontend/lowering/builtins/webassembly.js.map +1 -0
  582. package/dist/frontend/lowering/builtins/webcrypto.d.ts +20 -0
  583. package/dist/frontend/lowering/builtins/webcrypto.js +112 -0
  584. package/dist/frontend/lowering/builtins/webcrypto.js.map +1 -0
  585. package/dist/frontend/lowering/builtins/workers.d.ts +12 -0
  586. package/dist/frontend/lowering/builtins/workers.js +193 -8
  587. package/dist/frontend/lowering/builtins/workers.js.map +1 -1
  588. package/dist/frontend/lowering/call-arguments.js +69 -14
  589. package/dist/frontend/lowering/call-arguments.js.map +1 -1
  590. package/dist/frontend/lowering/call-signatures.d.ts +23 -1
  591. package/dist/frontend/lowering/call-signatures.js +379 -55
  592. package/dist/frontend/lowering/call-signatures.js.map +1 -1
  593. package/dist/frontend/lowering/checked-promise-all.d.ts +3 -0
  594. package/dist/frontend/lowering/checked-promise-all.js +1 -1
  595. package/dist/frontend/lowering/checked-promise-all.js.map +1 -1
  596. package/dist/frontend/lowering/cjs-exports-object.d.ts +53 -0
  597. package/dist/frontend/lowering/cjs-exports-object.js +561 -0
  598. package/dist/frontend/lowering/cjs-exports-object.js.map +1 -0
  599. package/dist/frontend/lowering/cjs-inline-require.d.ts +86 -0
  600. package/dist/frontend/lowering/cjs-inline-require.js +314 -0
  601. package/dist/frontend/lowering/cjs-inline-require.js.map +1 -0
  602. package/dist/frontend/lowering/cjs-tsc-interop.d.ts +28 -0
  603. package/dist/frontend/lowering/cjs-tsc-interop.js +208 -0
  604. package/dist/frontend/lowering/cjs-tsc-interop.js.map +1 -0
  605. package/dist/frontend/lowering/class-attributes.d.ts +19 -0
  606. package/dist/frontend/lowering/class-attributes.js +378 -0
  607. package/dist/frontend/lowering/class-attributes.js.map +1 -0
  608. package/dist/frontend/lowering/class-callbacks.d.ts +3 -1
  609. package/dist/frontend/lowering/class-callbacks.js +21 -10
  610. package/dist/frontend/lowering/class-callbacks.js.map +1 -1
  611. package/dist/frontend/lowering/class-construction.js +49 -4
  612. package/dist/frontend/lowering/class-construction.js.map +1 -1
  613. package/dist/frontend/lowering/class-descriptors.d.ts +2 -0
  614. package/dist/frontend/lowering/class-descriptors.js +8 -8
  615. package/dist/frontend/lowering/class-descriptors.js.map +1 -1
  616. package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +64 -0
  617. package/dist/frontend/lowering/class-dynamic-dispatch.js +1124 -90
  618. package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
  619. package/dist/frontend/lowering/class-instance-constructor.js +1 -1
  620. package/dist/frontend/lowering/class-instance-constructor.js.map +1 -1
  621. package/dist/frontend/lowering/class-iterables.d.ts +11 -0
  622. package/dist/frontend/lowering/class-iterables.js +31 -0
  623. package/dist/frontend/lowering/class-iterables.js.map +1 -0
  624. package/dist/frontend/lowering/class-method-mutations.js +73 -35
  625. package/dist/frontend/lowering/class-method-mutations.js.map +1 -1
  626. package/dist/frontend/lowering/class-method-values.js +56 -10
  627. package/dist/frontend/lowering/class-method-values.js.map +1 -1
  628. package/dist/frontend/lowering/class-protocol-dispatch.js +24 -22
  629. package/dist/frontend/lowering/class-protocol-dispatch.js.map +1 -1
  630. package/dist/frontend/lowering/class-protocols.d.ts +10 -0
  631. package/dist/frontend/lowering/class-protocols.js +76 -45
  632. package/dist/frontend/lowering/class-protocols.js.map +1 -1
  633. package/dist/frontend/lowering/class-prototypes.d.ts +6 -0
  634. package/dist/frontend/lowering/class-prototypes.js +86 -19
  635. package/dist/frontend/lowering/class-prototypes.js.map +1 -1
  636. package/dist/frontend/lowering/class-runtime-statics.js +1 -1
  637. package/dist/frontend/lowering/class-runtime-statics.js.map +1 -1
  638. package/dist/frontend/lowering/class-static-data.js +2 -2
  639. package/dist/frontend/lowering/class-static-data.js.map +1 -1
  640. package/dist/frontend/lowering/class-to-primitive.d.ts +25 -0
  641. package/dist/frontend/lowering/class-to-primitive.js +264 -0
  642. package/dist/frontend/lowering/class-to-primitive.js.map +1 -0
  643. package/dist/frontend/lowering/class-unions.d.ts +25 -0
  644. package/dist/frontend/lowering/class-unions.js +102 -1
  645. package/dist/frontend/lowering/class-unions.js.map +1 -1
  646. package/dist/frontend/lowering/code-generation.d.ts +14 -0
  647. package/dist/frontend/lowering/code-generation.js +127 -0
  648. package/dist/frontend/lowering/code-generation.js.map +1 -0
  649. package/dist/frontend/lowering/coercions/fresh-spread.d.ts +13 -0
  650. package/dist/frontend/lowering/coercions/fresh-spread.js +95 -0
  651. package/dist/frontend/lowering/coercions/fresh-spread.js.map +1 -0
  652. package/dist/frontend/lowering/coercions/function-adapters.d.ts +16 -2
  653. package/dist/frontend/lowering/coercions/function-adapters.js +239 -68
  654. package/dist/frontend/lowering/coercions/function-adapters.js.map +1 -1
  655. package/dist/frontend/lowering/coercions/structural-plans.js +25 -3
  656. package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -1
  657. package/dist/frontend/lowering/coercions/structural.js +35 -3
  658. package/dist/frontend/lowering/coercions/structural.js.map +1 -1
  659. package/dist/frontend/lowering/coercions/unions.d.ts +15 -0
  660. package/dist/frontend/lowering/coercions/unions.js +57 -1
  661. package/dist/frontend/lowering/coercions/unions.js.map +1 -1
  662. package/dist/frontend/lowering/collection-ingestion.js +2 -2
  663. package/dist/frontend/lowering/collection-ingestion.js.map +1 -1
  664. package/dist/frontend/lowering/collection-narrowing.js +2 -4
  665. package/dist/frontend/lowering/collection-narrowing.js.map +1 -1
  666. package/dist/frontend/lowering/construction-escapes.js +8 -8
  667. package/dist/frontend/lowering/construction-escapes.js.map +1 -1
  668. package/dist/frontend/lowering/construction-escapes.test.js +4 -4
  669. package/dist/frontend/lowering/construction-escapes.test.js.map +1 -1
  670. package/dist/frontend/lowering/constructor-returns.d.ts +61 -0
  671. package/dist/frontend/lowering/constructor-returns.js +477 -0
  672. package/dist/frontend/lowering/constructor-returns.js.map +1 -0
  673. package/dist/frontend/lowering/containers/array-callback-call.js +1 -1
  674. package/dist/frontend/lowering/containers/array-callback-call.js.map +1 -1
  675. package/dist/frontend/lowering/containers/array-callbacks.d.ts +17 -0
  676. package/dist/frontend/lowering/containers/array-callbacks.js +287 -118
  677. package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
  678. package/dist/frontend/lowering/containers/array-concat.js +1 -1
  679. package/dist/frontend/lowering/containers/array-concat.js.map +1 -1
  680. package/dist/frontend/lowering/containers/array-construction.d.ts +0 -1
  681. package/dist/frontend/lowering/containers/array-construction.js +58 -13
  682. package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
  683. package/dist/frontend/lowering/containers/array-from-async.d.ts +6 -5
  684. package/dist/frontend/lowering/containers/array-from-async.js +159 -14
  685. package/dist/frontend/lowering/containers/array-from-async.js.map +1 -1
  686. package/dist/frontend/lowering/containers/array-methods.js +94 -77
  687. package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
  688. package/dist/frontend/lowering/containers/array-pipelines.js +1 -0
  689. package/dist/frontend/lowering/containers/array-pipelines.js.map +1 -1
  690. package/dist/frontend/lowering/containers/bytes.d.ts +9 -0
  691. package/dist/frontend/lowering/containers/bytes.js +649 -113
  692. package/dist/frontend/lowering/containers/bytes.js.map +1 -1
  693. package/dist/frontend/lowering/containers/callback-arguments.d.ts +9 -1
  694. package/dist/frontend/lowering/containers/callback-arguments.js +55 -5
  695. package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -1
  696. package/dist/frontend/lowering/containers/collection-grouping.d.ts +7 -8
  697. package/dist/frontend/lowering/containers/collection-grouping.js +217 -26
  698. package/dist/frontend/lowering/containers/collection-grouping.js.map +1 -1
  699. package/dist/frontend/lowering/containers/collection-methods.js +126 -28
  700. package/dist/frontend/lowering/containers/collection-methods.js.map +1 -1
  701. package/dist/frontend/lowering/containers/dynamic-receivers.js +1 -1
  702. package/dist/frontend/lowering/containers/dynamic-receivers.js.map +1 -1
  703. package/dist/frontend/lowering/containers/exec-result-uses.js +2 -2
  704. package/dist/frontend/lowering/containers/exec-result-uses.js.map +1 -1
  705. package/dist/frontend/lowering/containers/for-of.d.ts +6 -0
  706. package/dist/frontend/lowering/containers/for-of.js +19 -19
  707. package/dist/frontend/lowering/containers/for-of.js.map +1 -1
  708. package/dist/frontend/lowering/containers/indexed-objects.js +142 -57
  709. package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
  710. package/dist/frontend/lowering/containers/iterator-helpers.d.ts +53 -4
  711. package/dist/frontend/lowering/containers/iterator-helpers.js +1581 -462
  712. package/dist/frontend/lowering/containers/iterator-helpers.js.map +1 -1
  713. package/dist/frontend/lowering/containers/match-row-uses.d.ts +17 -0
  714. package/dist/frontend/lowering/containers/match-row-uses.js +264 -0
  715. package/dist/frontend/lowering/containers/match-row-uses.js.map +1 -0
  716. package/dist/frontend/lowering/containers/string-and-regexp.d.ts +14 -0
  717. package/dist/frontend/lowering/containers/string-and-regexp.js +455 -30
  718. package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
  719. package/dist/frontend/lowering/containers/string-replacement.js +1 -1
  720. package/dist/frontend/lowering/containers/string-replacement.js.map +1 -1
  721. package/dist/frontend/lowering/cycle-initialization.d.ts +30 -10
  722. package/dist/frontend/lowering/cycle-initialization.js +191 -35
  723. package/dist/frontend/lowering/cycle-initialization.js.map +1 -1
  724. package/dist/frontend/lowering/deferred-module-initializers.js +47 -43
  725. package/dist/frontend/lowering/deferred-module-initializers.js.map +1 -1
  726. package/dist/frontend/lowering/devirtualize.d.ts +1 -1
  727. package/dist/frontend/lowering/devirtualize.js +27 -7
  728. package/dist/frontend/lowering/devirtualize.js.map +1 -1
  729. package/dist/frontend/lowering/divergences.d.ts +0 -5
  730. package/dist/frontend/lowering/divergences.js +62 -125
  731. package/dist/frontend/lowering/divergences.js.map +1 -1
  732. package/dist/frontend/lowering/dyn-streams.d.ts +25 -0
  733. package/dist/frontend/lowering/dyn-streams.js +257 -0
  734. package/dist/frontend/lowering/dyn-streams.js.map +1 -0
  735. package/dist/frontend/lowering/error-methods.js +4 -1
  736. package/dist/frontend/lowering/error-methods.js.map +1 -1
  737. package/dist/frontend/lowering/error-name-order.d.ts +19 -0
  738. package/dist/frontend/lowering/error-name-order.js +93 -0
  739. package/dist/frontend/lowering/error-name-order.js.map +1 -0
  740. package/dist/frontend/lowering/expressions/array-literals.d.ts +21 -0
  741. package/dist/frontend/lowering/expressions/array-literals.js +723 -0
  742. package/dist/frontend/lowering/expressions/array-literals.js.map +1 -0
  743. package/dist/frontend/lowering/expressions/binary.d.ts +35 -0
  744. package/dist/frontend/lowering/expressions/binary.js +2557 -0
  745. package/dist/frontend/lowering/expressions/binary.js.map +1 -0
  746. package/dist/frontend/lowering/expressions/element-access.d.ts +31 -0
  747. package/dist/frontend/lowering/expressions/element-access.js +1804 -0
  748. package/dist/frontend/lowering/expressions/element-access.js.map +1 -0
  749. package/dist/frontend/lowering/expressions/evaluation-safety.js +4 -3
  750. package/dist/frontend/lowering/expressions/evaluation-safety.js.map +1 -1
  751. package/dist/frontend/lowering/expressions/hosted-narrowing.d.ts +38 -0
  752. package/dist/frontend/lowering/expressions/hosted-narrowing.js +160 -0
  753. package/dist/frontend/lowering/expressions/hosted-narrowing.js.map +1 -0
  754. package/dist/frontend/lowering/expressions/identifiers.d.ts +4 -0
  755. package/dist/frontend/lowering/expressions/identifiers.js +830 -0
  756. package/dist/frontend/lowering/expressions/identifiers.js.map +1 -0
  757. package/dist/frontend/lowering/expressions/keyed-field-targets.d.ts +52 -0
  758. package/dist/frontend/lowering/expressions/keyed-field-targets.js +307 -0
  759. package/dist/frontend/lowering/expressions/keyed-field-targets.js.map +1 -0
  760. package/dist/frontend/lowering/expressions/narrowing.d.ts +37 -0
  761. package/dist/frontend/lowering/expressions/narrowing.js +1337 -0
  762. package/dist/frontend/lowering/expressions/narrowing.js.map +1 -0
  763. package/dist/frontend/lowering/expressions/native-proxy.js +4 -4
  764. package/dist/frontend/lowering/expressions/native-proxy.js.map +1 -1
  765. package/dist/frontend/lowering/expressions/nullish-assignment.js +45 -0
  766. package/dist/frontend/lowering/expressions/nullish-assignment.js.map +1 -1
  767. package/dist/frontend/lowering/expressions/object-literals.d.ts +10 -0
  768. package/dist/frontend/lowering/expressions/object-literals.js +301 -86
  769. package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
  770. package/dist/frontend/lowering/expressions/optional-chains.d.ts +3 -2
  771. package/dist/frontend/lowering/expressions/optional-chains.js +103 -17
  772. package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
  773. package/dist/frontend/lowering/expressions/property-access.d.ts +115 -0
  774. package/dist/frontend/lowering/expressions/property-access.js +3787 -0
  775. package/dist/frontend/lowering/expressions/property-access.js.map +1 -0
  776. package/dist/frontend/lowering/expressions/relational.d.ts +28 -0
  777. package/dist/frontend/lowering/expressions/relational.js +1724 -0
  778. package/dist/frontend/lowering/expressions/relational.js.map +1 -0
  779. package/dist/frontend/lowering/expressions/typeof.d.ts +22 -0
  780. package/dist/frontend/lowering/expressions/typeof.js +551 -0
  781. package/dist/frontend/lowering/expressions/typeof.js.map +1 -0
  782. package/dist/frontend/lowering/expressions/union-fields.js +1 -1
  783. package/dist/frontend/lowering/expressions/union-fields.js.map +1 -1
  784. package/dist/frontend/lowering/expressions/updates.d.ts +21 -0
  785. package/dist/frontend/lowering/expressions/updates.js +780 -0
  786. package/dist/frontend/lowering/expressions/updates.js.map +1 -0
  787. package/dist/frontend/lowering/function-context.d.ts +10 -0
  788. package/dist/frontend/lowering/function-context.js +11 -1
  789. package/dist/frontend/lowering/function-context.js.map +1 -1
  790. package/dist/frontend/lowering/function-returns.js +52 -28
  791. package/dist/frontend/lowering/function-returns.js.map +1 -1
  792. package/dist/frontend/lowering/general-streams.d.ts +25 -0
  793. package/dist/frontend/lowering/general-streams.js +108 -0
  794. package/dist/frontend/lowering/general-streams.js.map +1 -0
  795. package/dist/frontend/lowering/generator-delegation.d.ts +8 -0
  796. package/dist/frontend/lowering/generator-delegation.js +191 -1
  797. package/dist/frontend/lowering/generator-delegation.js.map +1 -1
  798. package/dist/frontend/lowering/generator-dynamic-dispatch.d.ts +7 -0
  799. package/dist/frontend/lowering/generator-dynamic-dispatch.js +172 -69
  800. package/dist/frontend/lowering/generator-dynamic-dispatch.js.map +1 -1
  801. package/dist/frontend/lowering/generic-functions.d.ts +43 -0
  802. package/dist/frontend/lowering/generic-functions.js +593 -118
  803. package/dist/frontend/lowering/generic-functions.js.map +1 -1
  804. package/dist/frontend/lowering/handle-properties.d.ts +24 -0
  805. package/dist/frontend/lowering/handle-properties.js +281 -0
  806. package/dist/frontend/lowering/handle-properties.js.map +1 -0
  807. package/dist/frontend/lowering/import-meta.js +2 -2
  808. package/dist/frontend/lowering/import-meta.js.map +1 -1
  809. package/dist/frontend/lowering/intern-tables.js +10 -9
  810. package/dist/frontend/lowering/intern-tables.js.map +1 -1
  811. package/dist/frontend/lowering/iterable-spelling.d.ts +7 -0
  812. package/dist/frontend/lowering/iterable-spelling.js +38 -0
  813. package/dist/frontend/lowering/iterable-spelling.js.map +1 -0
  814. package/dist/frontend/lowering/iterator-adapters.d.ts +19 -0
  815. package/dist/frontend/lowering/iterator-adapters.js +331 -3
  816. package/dist/frontend/lowering/iterator-adapters.js.map +1 -1
  817. package/dist/frontend/lowering/js-class-fields.d.ts +28 -0
  818. package/dist/frontend/lowering/js-class-fields.js +170 -0
  819. package/dist/frontend/lowering/js-class-fields.js.map +1 -0
  820. package/dist/frontend/lowering/js-dynamic-objects.d.ts +15 -0
  821. package/dist/frontend/lowering/js-dynamic-objects.js +299 -0
  822. package/dist/frontend/lowering/js-dynamic-objects.js.map +1 -0
  823. package/dist/frontend/lowering/js-dynamic-objects.test.d.ts +1 -0
  824. package/dist/frontend/lowering/js-dynamic-objects.test.js +35 -0
  825. package/dist/frontend/lowering/js-dynamic-objects.test.js.map +1 -0
  826. package/dist/frontend/lowering/json-require.d.ts +22 -0
  827. package/dist/frontend/lowering/json-require.js +131 -0
  828. package/dist/frontend/lowering/json-require.js.map +1 -0
  829. package/dist/frontend/lowering/key-order-witness.d.ts +44 -0
  830. package/dist/frontend/lowering/key-order-witness.js +641 -0
  831. package/dist/frontend/lowering/key-order-witness.js.map +1 -0
  832. package/dist/frontend/lowering/key-order-witness.test.d.ts +1 -0
  833. package/dist/frontend/lowering/key-order-witness.test.js +239 -0
  834. package/dist/frontend/lowering/key-order-witness.test.js.map +1 -0
  835. package/dist/frontend/lowering/lifetime-regions.js +7 -7
  836. package/dist/frontend/lowering/lifetime-regions.js.map +1 -1
  837. package/dist/frontend/lowering/lower-array-sort.d.ts +33 -15
  838. package/dist/frontend/lowering/lower-array-sort.js +117 -21
  839. package/dist/frontend/lowering/lower-array-sort.js.map +1 -1
  840. package/dist/frontend/lowering/lower-array-sort.test.js +93 -14
  841. package/dist/frontend/lowering/lower-array-sort.test.js.map +1 -1
  842. package/dist/frontend/lowering/lower-assert.js +61 -60
  843. package/dist/frontend/lowering/lower-assert.js.map +1 -1
  844. package/dist/frontend/lowering/lower-async-iteration.d.ts +10 -1
  845. package/dist/frontend/lowering/lower-async-iteration.js +34 -6
  846. package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
  847. package/dist/frontend/lowering/lower-builtin-values.d.ts +5 -0
  848. package/dist/frontend/lowering/lower-builtin-values.js +33 -3
  849. package/dist/frontend/lowering/lower-builtin-values.js.map +1 -1
  850. package/dist/frontend/lowering/lower-calls.js +1404 -448
  851. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  852. package/dist/frontend/lowering/lower-classes.d.ts +54 -3
  853. package/dist/frontend/lowering/lower-classes.js +1529 -472
  854. package/dist/frontend/lowering/lower-classes.js.map +1 -1
  855. package/dist/frontend/lowering/lower-comptime.d.ts +4 -2
  856. package/dist/frontend/lowering/lower-comptime.js +111 -13
  857. package/dist/frontend/lowering/lower-comptime.js.map +1 -1
  858. package/dist/frontend/lowering/lower-console.js +13 -11
  859. package/dist/frontend/lowering/lower-console.js.map +1 -1
  860. package/dist/frontend/lowering/lower-dgram.d.ts +10 -0
  861. package/dist/frontend/lowering/lower-dgram.js +241 -21
  862. package/dist/frontend/lowering/lower-dgram.js.map +1 -1
  863. package/dist/frontend/lowering/lower-enums.js +113 -14
  864. package/dist/frontend/lowering/lower-enums.js.map +1 -1
  865. package/dist/frontend/lowering/lower-event-emitter.d.ts +16 -7
  866. package/dist/frontend/lowering/lower-event-emitter.js +258 -70
  867. package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
  868. package/dist/frontend/lowering/lower-event-target.js +2 -2
  869. package/dist/frontend/lowering/lower-event-target.js.map +1 -1
  870. package/dist/frontend/lowering/lower-expando.js +17 -13
  871. package/dist/frontend/lowering/lower-expando.js.map +1 -1
  872. package/dist/frontend/lowering/lower-exprs.d.ts +188 -186
  873. package/dist/frontend/lowering/lower-exprs.js +1509 -12486
  874. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  875. package/dist/frontend/lowering/lower-functions.js +72 -22
  876. package/dist/frontend/lowering/lower-functions.js.map +1 -1
  877. package/dist/frontend/lowering/lower-generators.d.ts +6 -0
  878. package/dist/frontend/lowering/lower-generators.js +39 -20
  879. package/dist/frontend/lowering/lower-generators.js.map +1 -1
  880. package/dist/frontend/lowering/lower-global-value.js +5 -1
  881. package/dist/frontend/lowering/lower-global-value.js.map +1 -1
  882. package/dist/frontend/lowering/lower-inspect.js +900 -107
  883. package/dist/frontend/lowering/lower-inspect.js.map +1 -1
  884. package/dist/frontend/lowering/lower-mixins.js +23 -20
  885. package/dist/frontend/lowering/lower-mixins.js.map +1 -1
  886. package/dist/frontend/lowering/lower-mock.d.ts +8 -1
  887. package/dist/frontend/lowering/lower-mock.js +185 -18
  888. package/dist/frontend/lowering/lower-mock.js.map +1 -1
  889. package/dist/frontend/lowering/lower-modules.d.ts +11 -3
  890. package/dist/frontend/lowering/lower-modules.js +445 -94
  891. package/dist/frontend/lowering/lower-modules.js.map +1 -1
  892. package/dist/frontend/lowering/lower-namespaces.d.ts +6 -0
  893. package/dist/frontend/lowering/lower-namespaces.js +65 -33
  894. package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
  895. package/dist/frontend/lowering/lower-node-module.d.ts +16 -0
  896. package/dist/frontend/lowering/lower-node-module.js +147 -14
  897. package/dist/frontend/lowering/lower-node-module.js.map +1 -1
  898. package/dist/frontend/lowering/lower-server.d.ts +6 -6
  899. package/dist/frontend/lowering/lower-server.js +514 -101
  900. package/dist/frontend/lowering/lower-server.js.map +1 -1
  901. package/dist/frontend/lowering/lower-stdlib.d.ts +4 -0
  902. package/dist/frontend/lowering/lower-stdlib.js +179 -118
  903. package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
  904. package/dist/frontend/lowering/lower-stmts.d.ts +30 -7
  905. package/dist/frontend/lowering/lower-stmts.js +1950 -433
  906. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  907. package/dist/frontend/lowering/lower-stream.d.ts +3 -0
  908. package/dist/frontend/lowering/lower-stream.js +398 -56
  909. package/dist/frontend/lowering/lower-stream.js.map +1 -1
  910. package/dist/frontend/lowering/lower-test.d.ts +3 -0
  911. package/dist/frontend/lowering/lower-test.js +437 -62
  912. package/dist/frontend/lowering/lower-test.js.map +1 -1
  913. package/dist/frontend/lowering/lower-timers.js +96 -32
  914. package/dist/frontend/lowering/lower-timers.js.map +1 -1
  915. package/dist/frontend/lowering/lower-url.js +1 -1
  916. package/dist/frontend/lowering/lower-url.js.map +1 -1
  917. package/dist/frontend/lowering/lowerer.d.ts +424 -27
  918. package/dist/frontend/lowering/lowerer.js +2062 -310
  919. package/dist/frontend/lowering/lowerer.js.map +1 -1
  920. package/dist/frontend/lowering/lowerer.test.js +10 -4
  921. package/dist/frontend/lowering/lowerer.test.js.map +1 -1
  922. package/dist/frontend/lowering/maybe-promise.d.ts +46 -0
  923. package/dist/frontend/lowering/maybe-promise.js +249 -0
  924. package/dist/frontend/lowering/maybe-promise.js.map +1 -0
  925. package/dist/frontend/lowering/module-member-this.d.ts +3 -0
  926. package/dist/frontend/lowering/module-member-this.js +262 -0
  927. package/dist/frontend/lowering/module-member-this.js.map +1 -0
  928. package/dist/frontend/lowering/module-namespace-elements.js +1 -1
  929. package/dist/frontend/lowering/module-namespace-elements.js.map +1 -1
  930. package/dist/frontend/lowering/nan-coded-reads.d.ts +3 -0
  931. package/dist/frontend/lowering/nan-coded-reads.js +45 -32
  932. package/dist/frontend/lowering/nan-coded-reads.js.map +1 -1
  933. package/dist/frontend/lowering/narrowing-stability.d.ts +18 -3
  934. package/dist/frontend/lowering/narrowing-stability.js +104 -32
  935. package/dist/frontend/lowering/narrowing-stability.js.map +1 -1
  936. package/dist/frontend/lowering/native-ffi.js +11 -11
  937. package/dist/frontend/lowering/native-ffi.js.map +1 -1
  938. package/dist/frontend/lowering/object-factory-new.js +6 -8
  939. package/dist/frontend/lowering/object-factory-new.js.map +1 -1
  940. package/dist/frontend/lowering/private-brands.d.ts +46 -0
  941. package/dist/frontend/lowering/private-brands.js +265 -0
  942. package/dist/frontend/lowering/private-brands.js.map +1 -0
  943. package/dist/frontend/lowering/promise-executor-adapter.d.ts +11 -0
  944. package/dist/frontend/lowering/promise-executor-adapter.js +87 -0
  945. package/dist/frontend/lowering/promise-executor-adapter.js.map +1 -0
  946. package/dist/frontend/lowering/rebindable-functions.d.ts +8 -0
  947. package/dist/frontend/lowering/rebindable-functions.js +54 -0
  948. package/dist/frontend/lowering/rebindable-functions.js.map +1 -0
  949. package/dist/frontend/lowering/require-initialization.d.ts +32 -0
  950. package/dist/frontend/lowering/require-initialization.js +246 -0
  951. package/dist/frontend/lowering/require-initialization.js.map +1 -0
  952. package/dist/frontend/lowering/runtime-optional-bounds.js +7 -7
  953. package/dist/frontend/lowering/runtime-optional-bounds.js.map +1 -1
  954. package/dist/frontend/lowering/runtime-optional-elements.js +12 -12
  955. package/dist/frontend/lowering/runtime-optional-elements.js.map +1 -1
  956. package/dist/frontend/lowering/runtime-optional-guards.js +10 -10
  957. package/dist/frontend/lowering/runtime-optional-guards.js.map +1 -1
  958. package/dist/frontend/lowering/runtime-optional-guards.test.js +1 -1
  959. package/dist/frontend/lowering/runtime-optional-guards.test.js.map +1 -1
  960. package/dist/frontend/lowering/runtime-optional-ownership.js +10 -9
  961. package/dist/frontend/lowering/runtime-optional-ownership.js.map +1 -1
  962. package/dist/frontend/lowering/runtime-optional-provenance.js +2 -2
  963. package/dist/frontend/lowering/runtime-optional-provenance.js.map +1 -1
  964. package/dist/frontend/lowering/runtime-optional-records.d.ts +35 -0
  965. package/dist/frontend/lowering/runtime-optional-records.js +205 -32
  966. package/dist/frontend/lowering/runtime-optional-records.js.map +1 -1
  967. package/dist/frontend/lowering/runtime-optional-records.test.js +19 -1
  968. package/dist/frontend/lowering/runtime-optional-records.test.js.map +1 -1
  969. package/dist/frontend/lowering/sanitize-class-types.test.js +2 -2
  970. package/dist/frontend/lowering/split-consumers.js +4 -4
  971. package/dist/frontend/lowering/split-consumers.js.map +1 -1
  972. package/dist/frontend/lowering/static-function-names.d.ts +28 -0
  973. package/dist/frontend/lowering/static-function-names.js +212 -0
  974. package/dist/frontend/lowering/static-function-names.js.map +1 -0
  975. package/dist/frontend/lowering/static-this.js +6 -6
  976. package/dist/frontend/lowering/static-this.js.map +1 -1
  977. package/dist/frontend/lowering/static-typeof.d.ts +26 -0
  978. package/dist/frontend/lowering/static-typeof.js +133 -0
  979. package/dist/frontend/lowering/static-typeof.js.map +1 -0
  980. package/dist/frontend/lowering/strict-mode.d.ts +5 -0
  981. package/dist/frontend/lowering/strict-mode.js +31 -0
  982. package/dist/frontend/lowering/strict-mode.js.map +1 -0
  983. package/dist/frontend/lowering/string-index-bounds.js +13 -12
  984. package/dist/frontend/lowering/string-index-bounds.js.map +1 -1
  985. package/dist/frontend/lowering/string-index.d.ts +12 -0
  986. package/dist/frontend/lowering/string-index.js +72 -1
  987. package/dist/frontend/lowering/string-index.js.map +1 -1
  988. package/dist/frontend/lowering/surfaces.d.ts +12 -3
  989. package/dist/frontend/lowering/surfaces.js +282 -45
  990. package/dist/frontend/lowering/surfaces.js.map +1 -1
  991. package/dist/frontend/lowering/symbol-fields.d.ts +7 -0
  992. package/dist/frontend/lowering/symbol-fields.js +204 -36
  993. package/dist/frontend/lowering/symbol-fields.js.map +1 -1
  994. package/dist/frontend/lowering/symbol-methods.d.ts +2 -1
  995. package/dist/frontend/lowering/symbol-methods.js +24 -6
  996. package/dist/frontend/lowering/symbol-methods.js.map +1 -1
  997. package/dist/frontend/lowering/thenables.d.ts +16 -0
  998. package/dist/frontend/lowering/thenables.js +124 -0
  999. package/dist/frontend/lowering/thenables.js.map +1 -0
  1000. package/dist/frontend/lowering/thread-slots.d.ts +13 -0
  1001. package/dist/frontend/lowering/thread-slots.js +208 -0
  1002. package/dist/frontend/lowering/thread-slots.js.map +1 -0
  1003. package/dist/frontend/lowering/typed-arguments.d.ts +74 -0
  1004. package/dist/frontend/lowering/typed-arguments.js +472 -0
  1005. package/dist/frontend/lowering/typed-arguments.js.map +1 -0
  1006. package/dist/frontend/lowering/union-retag.d.ts +8 -0
  1007. package/dist/frontend/lowering/union-retag.js +27 -0
  1008. package/dist/frontend/lowering/union-retag.js.map +1 -1
  1009. package/dist/frontend/lowering/union-retag.test.js +24 -1
  1010. package/dist/frontend/lowering/union-retag.test.js.map +1 -1
  1011. package/dist/frontend/lowering/var-hoisting.js +6 -6
  1012. package/dist/frontend/lowering/var-hoisting.js.map +1 -1
  1013. package/dist/frontend/lowering/width-lift.d.ts +4 -0
  1014. package/dist/frontend/mock-shapes.js +13 -6
  1015. package/dist/frontend/mock-shapes.js.map +1 -1
  1016. package/dist/frontend/module-source-candidates.js +1 -1
  1017. package/dist/frontend/module-source-candidates.js.map +1 -1
  1018. package/dist/frontend/module-source-candidates.test.js +2 -1
  1019. package/dist/frontend/module-source-candidates.test.js.map +1 -1
  1020. package/dist/frontend/module-syntax.js +8 -8
  1021. package/dist/frontend/module-syntax.js.map +1 -1
  1022. package/dist/frontend/npm-static-builtin-aliases.d.ts +8 -0
  1023. package/dist/frontend/npm-static-builtin-aliases.js +65 -0
  1024. package/dist/frontend/npm-static-builtin-aliases.js.map +1 -0
  1025. package/dist/frontend/npm-static-bundled-chunks.d.ts +58 -0
  1026. package/dist/frontend/npm-static-bundled-chunks.js +981 -0
  1027. package/dist/frontend/npm-static-bundled-chunks.js.map +1 -0
  1028. package/dist/frontend/npm-static-bundled-chunks.test.d.ts +1 -0
  1029. package/dist/frontend/npm-static-bundled-chunks.test.js +399 -0
  1030. package/dist/frontend/npm-static-bundled-chunks.test.js.map +1 -0
  1031. package/dist/frontend/npm-static-bundled-cjs.js +24 -23
  1032. package/dist/frontend/npm-static-bundled-cjs.js.map +1 -1
  1033. package/dist/frontend/npm-static-bundled-esm.d.ts +9 -0
  1034. package/dist/frontend/npm-static-bundled-esm.js +988 -0
  1035. package/dist/frontend/npm-static-bundled-esm.js.map +1 -0
  1036. package/dist/frontend/npm-static-bundled-esm.test.d.ts +1 -0
  1037. package/dist/frontend/npm-static-bundled-esm.test.js +336 -0
  1038. package/dist/frontend/npm-static-bundled-esm.test.js.map +1 -0
  1039. package/dist/frontend/npm-static-cjs-exports-alias.d.ts +2 -0
  1040. package/dist/frontend/npm-static-cjs-exports-alias.js +186 -0
  1041. package/dist/frontend/npm-static-cjs-exports-alias.js.map +1 -0
  1042. package/dist/frontend/npm-static-cjs-exports-alias.test.d.ts +1 -0
  1043. package/dist/frontend/npm-static-cjs-exports-alias.test.js +73 -0
  1044. package/dist/frontend/npm-static-cjs-exports-alias.test.js.map +1 -0
  1045. package/dist/frontend/npm-static-cjs-exports-var.d.ts +2 -0
  1046. package/dist/frontend/npm-static-cjs-exports-var.js +236 -0
  1047. package/dist/frontend/npm-static-cjs-exports-var.js.map +1 -0
  1048. package/dist/frontend/npm-static-declaration-syntax.js +102 -101
  1049. package/dist/frontend/npm-static-declaration-syntax.js.map +1 -1
  1050. package/dist/frontend/npm-static-enum-iife.d.ts +6 -0
  1051. package/dist/frontend/npm-static-enum-iife.js +280 -0
  1052. package/dist/frontend/npm-static-enum-iife.js.map +1 -0
  1053. package/dist/frontend/npm-static-enum-iife.test.d.ts +1 -0
  1054. package/dist/frontend/npm-static-enum-iife.test.js +116 -0
  1055. package/dist/frontend/npm-static-enum-iife.test.js.map +1 -0
  1056. package/dist/frontend/npm-static-prune.js +36 -24
  1057. package/dist/frontend/npm-static-prune.js.map +1 -1
  1058. package/dist/frontend/npm-static-rewrite-host.d.ts +4 -1
  1059. package/dist/frontend/npm-static-rewrite-host.js +14 -3
  1060. package/dist/frontend/npm-static-rewrite-host.js.map +1 -1
  1061. package/dist/frontend/npm-static-rewrite-syntax.d.ts +19 -0
  1062. package/dist/frontend/npm-static-rewrite-syntax.js +274 -101
  1063. package/dist/frontend/npm-static-rewrite-syntax.js.map +1 -1
  1064. package/dist/frontend/npm-static-subtyping.js +7 -9
  1065. package/dist/frontend/npm-static-subtyping.js.map +1 -1
  1066. package/dist/frontend/npm-static.d.ts +25 -1
  1067. package/dist/frontend/npm-static.js +212 -16
  1068. package/dist/frontend/npm-static.js.map +1 -1
  1069. package/dist/frontend/npm-static.test.js +22 -1
  1070. package/dist/frontend/npm-static.test.js.map +1 -1
  1071. package/dist/frontend/npm.js +13 -0
  1072. package/dist/frontend/npm.js.map +1 -1
  1073. package/dist/frontend/package-shims.d.ts +47 -0
  1074. package/dist/frontend/package-shims.js +300 -0
  1075. package/dist/frontend/package-shims.js.map +1 -0
  1076. package/dist/frontend/pipeline.js +230 -26
  1077. package/dist/frontend/pipeline.js.map +1 -1
  1078. package/dist/frontend/pipeline.test.js +22 -1
  1079. package/dist/frontend/pipeline.test.js.map +1 -1
  1080. package/dist/frontend/program-analysis.d.ts +6 -1
  1081. package/dist/frontend/program-analysis.js +7 -0
  1082. package/dist/frontend/program-analysis.js.map +1 -1
  1083. package/dist/frontend/program.d.ts +100 -2
  1084. package/dist/frontend/program.js +1627 -262
  1085. package/dist/frontend/program.js.map +1 -1
  1086. package/dist/frontend/program.test.js +76 -6
  1087. package/dist/frontend/program.test.js.map +1 -1
  1088. package/dist/frontend/resolve.js +49 -2
  1089. package/dist/frontend/resolve.js.map +1 -1
  1090. package/dist/frontend/resolve.test.js +49 -0
  1091. package/dist/frontend/resolve.test.js.map +1 -1
  1092. package/dist/frontend/services.d.ts +26 -1
  1093. package/dist/frontend/services.js +59 -3
  1094. package/dist/frontend/services.js.map +1 -1
  1095. package/dist/frontend/services.test.js +2 -1
  1096. package/dist/frontend/services.test.js.map +1 -1
  1097. package/dist/frontend/threads-import.js +1 -1
  1098. package/dist/frontend/threads-import.js.map +1 -1
  1099. package/dist/frontend/tier-analysis.d.ts +71 -0
  1100. package/dist/frontend/tier-analysis.js +522 -0
  1101. package/dist/frontend/tier-analysis.js.map +1 -0
  1102. package/dist/frontend/ts7/api-conformance.d.ts +234 -0
  1103. package/dist/frontend/ts7/api-conformance.js +7 -0
  1104. package/dist/frontend/ts7/api-conformance.js.map +1 -0
  1105. package/dist/frontend/ts7/ast-guards.generated.js +2 -1
  1106. package/dist/frontend/ts7/ast-guards.generated.js.map +1 -1
  1107. package/dist/frontend/ts7/ast-node.d.ts +47 -25
  1108. package/dist/frontend/ts7/ast-node.js +64 -18
  1109. package/dist/frontend/ts7/ast-node.js.map +1 -1
  1110. package/dist/frontend/ts7/ast-node.test.js +36 -12
  1111. package/dist/frontend/ts7/ast-node.test.js.map +1 -1
  1112. package/dist/frontend/ts7/ast-types.d.ts +10 -3
  1113. package/dist/frontend/ts7/ast-types.generated.d.ts +39 -39
  1114. package/dist/frontend/ts7/ast.d.ts +1 -0
  1115. package/dist/frontend/ts7/ast.js +3 -2
  1116. package/dist/frontend/ts7/ast.js.map +1 -1
  1117. package/dist/frontend/ts7/checker-backend.d.ts +23 -0
  1118. package/dist/frontend/ts7/checker-backend.js +88 -0
  1119. package/dist/frontend/ts7/checker-backend.js.map +1 -0
  1120. package/dist/frontend/ts7/checker-backend.test.d.ts +1 -0
  1121. package/dist/frontend/ts7/checker-backend.test.js +63 -0
  1122. package/dist/frontend/ts7/checker-backend.test.js.map +1 -0
  1123. package/dist/frontend/ts7/checker-cache.d.ts +0 -3
  1124. package/dist/frontend/ts7/checker-cache.js +0 -6
  1125. package/dist/frontend/ts7/checker-cache.js.map +1 -1
  1126. package/dist/frontend/ts7/checker.d.ts +18 -11
  1127. package/dist/frontend/ts7/checker.js +42 -55
  1128. package/dist/frontend/ts7/checker.js.map +1 -1
  1129. package/dist/frontend/ts7/checker.test.js +10 -7
  1130. package/dist/frontend/ts7/checker.test.js.map +1 -1
  1131. package/dist/frontend/ts7/diagnostic.d.ts +19 -0
  1132. package/dist/frontend/ts7/diagnostic.js +22 -0
  1133. package/dist/frontend/ts7/diagnostic.js.map +1 -0
  1134. package/dist/frontend/ts7/node-functions.d.ts +8 -0
  1135. package/dist/frontend/ts7/node-functions.js +18 -0
  1136. package/dist/frontend/ts7/node-functions.js.map +1 -0
  1137. package/dist/frontend/ts7/program-host.d.ts +10 -5
  1138. package/dist/frontend/ts7/program-host.js +19 -0
  1139. package/dist/frontend/ts7/program-host.js.map +1 -1
  1140. package/dist/frontend/ts7/rpc-api.d.ts +5 -1
  1141. package/dist/frontend/ts7/rpc-api.js +8 -1
  1142. package/dist/frontend/ts7/rpc-api.js.map +1 -1
  1143. package/dist/frontend/ts7/semantic-checker.d.ts +13 -6
  1144. package/dist/frontend/ts7/semantic-checker.js +26 -8
  1145. package/dist/frontend/ts7/semantic-checker.js.map +1 -1
  1146. package/dist/frontend/ts7/semantic-checker.test.js +12 -9
  1147. package/dist/frontend/ts7/semantic-checker.test.js.map +1 -1
  1148. package/dist/frontend/ts7/semantic-model.d.ts +57 -24
  1149. package/dist/frontend/ts7/semantic-model.js +114 -16
  1150. package/dist/frontend/ts7/semantic-model.js.map +1 -1
  1151. package/dist/frontend/ts7/semantic-model.test.js +4 -4
  1152. package/dist/frontend/ts7/semantic-model.test.js.map +1 -1
  1153. package/dist/frontend/ts7/semantic-types.d.ts +7 -3
  1154. package/dist/frontend/ts7/semantic-types.js +1 -1
  1155. package/dist/frontend/ts7/semantic-types.js.map +1 -1
  1156. package/dist/frontend/ts7/session.d.ts +30 -15
  1157. package/dist/frontend/ts7/session.js +8 -5
  1158. package/dist/frontend/ts7/session.js.map +1 -1
  1159. package/dist/frontend/ts7/session.test.js +9 -5
  1160. package/dist/frontend/ts7/session.test.js.map +1 -1
  1161. package/dist/frontend/ts7/source-parser.d.ts +6 -2
  1162. package/dist/frontend/ts7/source-parser.js +24 -3
  1163. package/dist/frontend/ts7/source-parser.js.map +1 -1
  1164. package/dist/frontend/ts7/source-parser.test.js +38 -17
  1165. package/dist/frontend/ts7/source-parser.test.js.map +1 -1
  1166. package/dist/frontend/type-mapper.d.ts +122 -2
  1167. package/dist/frontend/type-mapper.js +2735 -723
  1168. package/dist/frontend/type-mapper.js.map +1 -1
  1169. package/dist/frontend/type-only-imports.d.ts +28 -0
  1170. package/dist/frontend/type-only-imports.js +122 -0
  1171. package/dist/frontend/type-only-imports.js.map +1 -0
  1172. package/dist/frontend/worker-target.js +8 -8
  1173. package/dist/frontend/worker-target.js.map +1 -1
  1174. package/dist/index.d.ts +4 -1
  1175. package/dist/index.js +87 -8
  1176. package/dist/index.js.map +1 -1
  1177. package/dist/ir/analysis.js +4 -2
  1178. package/dist/ir/analysis.js.map +1 -1
  1179. package/dist/ir/api.d.ts +1 -1
  1180. package/dist/ir/api.js +1 -1
  1181. package/dist/ir/api.js.map +1 -1
  1182. package/dist/ir/array-length-stability.d.ts +31 -0
  1183. package/dist/ir/array-length-stability.js +249 -0
  1184. package/dist/ir/array-length-stability.js.map +1 -0
  1185. package/dist/ir/array-length-stability.test.d.ts +1 -0
  1186. package/dist/ir/array-length-stability.test.js +134 -0
  1187. package/dist/ir/array-length-stability.test.js.map +1 -0
  1188. package/dist/ir/build.d.ts +2 -2
  1189. package/dist/ir/build.js +1 -1
  1190. package/dist/ir/build.js.map +1 -1
  1191. package/dist/ir/builtin-effects.js +116 -0
  1192. package/dist/ir/builtin-effects.js.map +1 -1
  1193. package/dist/ir/builtin-signatures.d.ts +1 -1
  1194. package/dist/ir/builtin-signatures.js +540 -29
  1195. package/dist/ir/builtin-signatures.js.map +1 -1
  1196. package/dist/ir/byte-numbers.js +3 -0
  1197. package/dist/ir/byte-numbers.js.map +1 -1
  1198. package/dist/ir/callback-specialization.d.ts +37 -0
  1199. package/dist/ir/callback-specialization.js +459 -0
  1200. package/dist/ir/callback-specialization.js.map +1 -0
  1201. package/dist/ir/callback-specialization.test.d.ts +1 -0
  1202. package/dist/ir/callback-specialization.test.js +208 -0
  1203. package/dist/ir/callback-specialization.test.js.map +1 -0
  1204. package/dist/ir/capture-values.d.ts +0 -1
  1205. package/dist/ir/capture-values.js +51 -40
  1206. package/dist/ir/capture-values.js.map +1 -1
  1207. package/dist/ir/constant-globals.test.js +1 -1
  1208. package/dist/ir/constant-tables.test.js +1 -1
  1209. package/dist/ir/field-values.test.js +1 -1
  1210. package/dist/ir/final-fields.test.js +1 -1
  1211. package/dist/ir/function-references.test.js +9 -1
  1212. package/dist/ir/function-references.test.js.map +1 -1
  1213. package/dist/ir/init-only-globals.test.js +1 -1
  1214. package/dist/ir/initializer-bindings.test.js +1 -1
  1215. package/dist/ir/int32-slots.d.ts +14 -0
  1216. package/dist/ir/int32-slots.js +97 -14
  1217. package/dist/ir/int32-slots.js.map +1 -1
  1218. package/dist/ir/int32-slots.test.js +1 -1
  1219. package/dist/ir/integer-loop-facts.d.ts +7 -0
  1220. package/dist/ir/integer-loop-facts.js +103 -17
  1221. package/dist/ir/integer-loop-facts.js.map +1 -1
  1222. package/dist/ir/integer-loops.d.ts +1 -1
  1223. package/dist/ir/integer-loops.js +39 -9
  1224. package/dist/ir/integer-loops.js.map +1 -1
  1225. package/dist/ir/integer-loops.test.js +104 -0
  1226. package/dist/ir/integer-loops.test.js.map +1 -1
  1227. package/dist/ir/integer-ranges.d.ts +13 -1
  1228. package/dist/ir/integer-ranges.js +125 -26
  1229. package/dist/ir/integer-ranges.js.map +1 -1
  1230. package/dist/ir/integer-ranges.test.js +273 -2
  1231. package/dist/ir/integer-ranges.test.js.map +1 -1
  1232. package/dist/ir/intrinsic-signatures.js +6 -0
  1233. package/dist/ir/intrinsic-signatures.js.map +1 -1
  1234. package/dist/ir/ir.d.ts +221 -58
  1235. package/dist/ir/ir.js +127 -12
  1236. package/dist/ir/ir.js.map +1 -1
  1237. package/dist/ir/ir.test.js +10 -0
  1238. package/dist/ir/ir.test.js.map +1 -1
  1239. package/dist/ir/js-ic.d.ts +52 -0
  1240. package/dist/ir/js-ic.js +199 -0
  1241. package/dist/ir/js-ic.js.map +1 -0
  1242. package/dist/ir/js-ic.test.d.ts +1 -0
  1243. package/dist/ir/js-ic.test.js +148 -0
  1244. package/dist/ir/js-ic.test.js.map +1 -0
  1245. package/dist/ir/jsval.d.ts +8 -0
  1246. package/dist/ir/jsval.js +399 -0
  1247. package/dist/ir/jsval.js.map +1 -0
  1248. package/dist/ir/jsval.test.d.ts +1 -0
  1249. package/dist/ir/jsval.test.js +239 -0
  1250. package/dist/ir/jsval.test.js.map +1 -0
  1251. package/dist/ir/runtime-features.d.ts +183 -33
  1252. package/dist/ir/runtime-features.js +795 -422
  1253. package/dist/ir/runtime-features.js.map +1 -1
  1254. package/dist/ir/scalar-records.test.js +1 -1
  1255. package/dist/ir/self-captures.d.ts +33 -0
  1256. package/dist/ir/self-captures.js +245 -0
  1257. package/dist/ir/self-captures.js.map +1 -0
  1258. package/dist/ir/self-captures.test.d.ts +1 -0
  1259. package/dist/ir/self-captures.test.js +135 -0
  1260. package/dist/ir/self-captures.test.js.map +1 -0
  1261. package/dist/ir/serialize.d.ts +1 -1
  1262. package/dist/ir/serialize.js +7 -4
  1263. package/dist/ir/serialize.js.map +1 -1
  1264. package/dist/ir/tiers.d.ts +26 -0
  1265. package/dist/ir/tiers.js +101 -0
  1266. package/dist/ir/tiers.js.map +1 -0
  1267. package/dist/ir/tiers.test.d.ts +1 -0
  1268. package/dist/ir/tiers.test.js +140 -0
  1269. package/dist/ir/tiers.test.js.map +1 -0
  1270. package/dist/ir/traverse.js +201 -150
  1271. package/dist/ir/traverse.js.map +1 -1
  1272. package/dist/ir/traverse.test.js +33 -30
  1273. package/dist/ir/traverse.test.js.map +1 -1
  1274. package/dist/ir/unshare.js +65 -3
  1275. package/dist/ir/unshare.js.map +1 -1
  1276. package/dist/ir/unshare.test.js +1 -1
  1277. package/dist/ir/validate.js +196 -76
  1278. package/dist/ir/validate.js.map +1 -1
  1279. package/dist/ir/validate.test.js +41 -11
  1280. package/dist/ir/validate.test.js.map +1 -1
  1281. package/dist/library/fence-eval.test.js +1 -1
  1282. package/dist/library/int-infer.test.js +4 -4
  1283. package/dist/library/ir-policy.js +14 -0
  1284. package/dist/library/ir-policy.js.map +1 -1
  1285. package/dist/library/library-cache.d.ts +1 -0
  1286. package/dist/library/library-cache.js.map +1 -1
  1287. package/dist/library/library-cache.test.js +5 -5
  1288. package/dist/library/library-profile.d.ts +4 -4
  1289. package/dist/library/library-profile.js +35 -7
  1290. package/dist/library/library-profile.js.map +1 -1
  1291. package/dist/library/prepare.js +13 -1
  1292. package/dist/library/prepare.js.map +1 -1
  1293. package/dist/native/cli.js +22 -0
  1294. package/dist/native/cli.js.map +1 -1
  1295. package/dist/native/compiler.js +35 -6
  1296. package/dist/native/compiler.js.map +1 -1
  1297. package/dist/native/compiler.test.js +2 -2
  1298. package/dist/native/executable-cache.js +3 -0
  1299. package/dist/native/executable-cache.js.map +1 -1
  1300. package/dist/native/prepare.js +10 -0
  1301. package/dist/native/prepare.js.map +1 -1
  1302. package/dist/native/sanitizer.test.js +19 -0
  1303. package/dist/native/sanitizer.test.js.map +1 -1
  1304. package/dist/native/toolchain.d.ts +2 -0
  1305. package/dist/native/toolchain.js +10 -1
  1306. package/dist/native/toolchain.js.map +1 -1
  1307. package/dist/native/toolchain.test.js +39 -1
  1308. package/dist/native/toolchain.test.js.map +1 -1
  1309. package/dist/startup-cache.d.ts +1 -0
  1310. package/dist/startup-cache.js +1 -0
  1311. package/dist/startup-cache.js.map +1 -1
  1312. package/dist/wasm/base64.d.ts +5 -0
  1313. package/dist/wasm/base64.js +62 -0
  1314. package/dist/wasm/base64.js.map +1 -0
  1315. package/dist/wasm/binary.d.ts +36 -0
  1316. package/dist/wasm/binary.js +1976 -0
  1317. package/dist/wasm/binary.js.map +1 -0
  1318. package/dist/wasm/binary.test.d.ts +1 -0
  1319. package/dist/wasm/binary.test.js +190 -0
  1320. package/dist/wasm/binary.test.js.map +1 -0
  1321. package/dist/wasm/discover.d.ts +38 -0
  1322. package/dist/wasm/discover.js +377 -0
  1323. package/dist/wasm/discover.js.map +1 -0
  1324. package/dist/wasm/discover.test.d.ts +1 -0
  1325. package/dist/wasm/discover.test.js +24 -0
  1326. package/dist/wasm/discover.test.js.map +1 -0
  1327. package/dist/wasm/module.d.ts +151 -0
  1328. package/dist/wasm/module.js +575 -0
  1329. package/dist/wasm/module.js.map +1 -0
  1330. package/dist/wasm/translate.d.ts +48 -0
  1331. package/dist/wasm/translate.js +2129 -0
  1332. package/dist/wasm/translate.js.map +1 -0
  1333. package/dist/wasm/translate.test.d.ts +1 -0
  1334. package/dist/wasm/translate.test.js +207 -0
  1335. package/dist/wasm/translate.test.js.map +1 -0
  1336. package/package.json +22 -20
  1337. package/shims/fs-extra/core/api.ts +1192 -0
  1338. package/shims/fs-extra/index.ts +9 -0
  1339. package/shims/undici/core/agent.ts +163 -0
  1340. package/shims/undici/core/api.ts +93 -0
  1341. package/shims/undici/core/client.ts +1304 -0
  1342. package/shims/undici/core/connector.ts +157 -0
  1343. package/shims/undici/core/diagnostics-types.ts +68 -0
  1344. package/shims/undici/core/diagnostics.ts +16 -0
  1345. package/shims/undici/core/dispatcher.ts +574 -0
  1346. package/shims/undici/core/errors-v5.ts +22 -0
  1347. package/shims/undici/core/errors-v7.ts +25 -0
  1348. package/shims/undici/core/errors.ts +255 -0
  1349. package/shims/undici/core/fetch.ts +635 -0
  1350. package/shims/undici/core/pool.ts +280 -0
  1351. package/shims/undici/core/readable.ts +268 -0
  1352. package/shims/undici/core/request.ts +313 -0
  1353. package/shims/undici/core/timers.ts +80 -0
  1354. package/shims/undici/core/types.ts +167 -0
  1355. package/shims/undici/core/util.ts +67 -0
  1356. package/shims/undici/v5.ts +119 -0
  1357. package/shims/undici/v7.ts +119 -0
  1358. package/surface-manifest.json +304 -22
@@ -1,8 +1,9 @@
1
- import { dynUndefinedExpr, varRef } from "../../../ir/build.js";
1
+ import { boolLit, dynUndefinedExpr, numLit, varRef } from "../../../ir/build.js";
2
2
  import { BUF_NUM_METHODS } from "./buffer-numeric-methods.js";
3
3
  import * as ts from "../../ts7/adapter.js";
4
- import { BIGINT_T, BOOL, BYTES_ELEMENT_NAME, BYTES_U8, DYN, F64, STRING, UNDEFINED_T, VOID, arrayOf, bytesOf, funcOf, typeEquals, } from "../../../ir/ir.js";
4
+ import { BIGINT_T, BOOL, BYTES_ELEMENT_NAME, BYTES_U8, DYN, F64, STRING, UNDEFINED_T, VOID, arrayOf, bytesOf, funcOf, isUnitType, typeEquals, } from "../../../ir/ir.js";
5
5
  import { isJsSourceFile, locOf } from "../../program.js";
6
+ import { stdlibGlobalNameOf } from "../surfaces.js";
6
7
  import { newFnCtx, own } from "../lowerer.js";
7
8
  import { buildBytesSortFn, closureKeyOrder } from "../lower-array-sort.js";
8
9
  import { isSafeToDiscard } from "../expressions/evaluation-safety.js";
@@ -10,6 +11,10 @@ import { lowerDynObjectLiteral } from "../expressions/object-literals.js";
10
11
  import { defaultAfterUndefined, lowerOptionalArgument, lowerStaticallyUndefinedArgument, } from "../optional-arguments.js";
11
12
  import { lowerCheckedArrayFrom } from "./array-construction.js";
12
13
  import { lowerToNumberArgument } from "../lower-exprs.js";
14
+ import { lowerBytesIteratorValue } from "../iterator-adapters.js";
15
+ import { lowerArrayCallback } from "./callback-arguments.js";
16
+ import { findPredicateOk, predicateToBoolean } from "./array-callbacks.js";
17
+ import { typeKey } from "../../type-mapper.js";
13
18
  /** TypedArray.prototype.sort and toSorted. The receiver and comparator
14
19
  * expressions are evaluated before entering the helper (buildBytesSortFn).
15
20
  * The default order is numeric, so the comparator-less form sorts by value
@@ -18,12 +23,12 @@ function lowerBytesSortCall(lowerer, call, access, bytesT) {
18
23
  const loc = locOf(call);
19
24
  const method = access.name.text;
20
25
  const copyFirst = method === "toSorted";
21
- if (call.arguments.length > 1 || call.arguments.some(ts.isSpreadElement)) {
22
- lowerer.noLowering(`.${method} with ${call.arguments.length} arguments on ${BYTES_ELEMENT_NAME[bytesT.elem]}`, call);
26
+ if (call.arguments.nodes.length > 1 || call.arguments.nodes.some(ts.isSpreadElement)) {
27
+ lowerer.noLowering(`.${method} with ${call.arguments.nodes.length} arguments on ${BYTES_ELEMENT_NAME[bytesT.elem]}`, call);
23
28
  }
24
29
  const receiver = lowerer.lowerExprExpecting(access.expression, bytesT);
25
- const undefinedArg = call.arguments[0]
26
- ? lowerStaticallyUndefinedArgument(lowerer, call.arguments[0])
30
+ const undefinedArg = call.arguments.nodes[0]
31
+ ? lowerStaticallyUndefinedArgument(lowerer, call.arguments.nodes[0])
27
32
  : null;
28
33
  const helperFor = (key, arity, hasComparator, order) => {
29
34
  const cacheKey = `bytes.${method}:${bytesT.elem}:${key}`;
@@ -35,7 +40,7 @@ function lowerBytesSortCall(lowerer, call, access, bytesT) {
35
40
  }
36
41
  return helper;
37
42
  };
38
- if (call.arguments.length === 0 || undefinedArg) {
43
+ if (call.arguments.nodes.length === 0 || undefinedArg) {
39
44
  const helper = helperFor("default", 0, false, null);
40
45
  if (!undefinedArg || isSafeToDiscard(undefinedArg)) {
41
46
  return { kind: "call", callee: helper, args: [receiver], type: bytesT, loc };
@@ -67,14 +72,14 @@ function lowerBytesSortCall(lowerer, call, access, bytesT) {
67
72
  loc,
68
73
  };
69
74
  }
70
- const argNode = call.arguments[0];
75
+ const argNode = call.arguments.nodes[0];
71
76
  let fnArg = lowerer.lowerExpr(argNode);
72
77
  // As for Array sort: adapt a comparator over checked values to the
73
78
  // element ABI; arithmetic on inferred JS values still yields a number.
74
79
  if (fnArg.type.kind === "func" &&
75
80
  fnArg.type.params.length <= 2 &&
76
81
  fnArg.type.params.every((param) => lowerer.coercibleValue(F64, param))) {
77
- const result = fnArg.type.ret.kind === "dyn" && isJsSourceFile(argNode.getSourceFile())
82
+ const result = fnArg.type.ret.kind === "dyn" && isJsSourceFile(ts.getSourceFileOfNode(argNode))
78
83
  ? F64
79
84
  : fnArg.type.ret;
80
85
  const expected = funcOf(fnArg.type.params.map(() => F64), result);
@@ -89,7 +94,7 @@ function lowerBytesSortCall(lowerer, call, access, bytesT) {
89
94
  }
90
95
  const arity = fnArg.type.params.length;
91
96
  const keyed = closureKeyOrder(lowerer.liftedFns, fnArg);
92
- const order = keyed !== null && keyed.read === null ? keyed.order : null;
97
+ const order = keyed?.length === 1 && keyed[0].read === null ? keyed[0].order : null;
93
98
  const helper = helperFor(`${arity}${order === null ? "" : `:keyed${order}`}`, arity, true, order);
94
99
  return {
95
100
  kind: "call",
@@ -99,9 +104,320 @@ function lowerBytesSortCall(lowerer, call, access, bytesT) {
99
104
  loc,
100
105
  };
101
106
  }
107
+ const BYTES_CALLBACK_METHODS = new Set([
108
+ "forEach",
109
+ "map",
110
+ "filter",
111
+ "some",
112
+ "every",
113
+ "find",
114
+ "findIndex",
115
+ "findLast",
116
+ "findLastIndex",
117
+ "reduce",
118
+ "reduceRight",
119
+ ]);
120
+ /** The typed-array callback methods (forEach, map, filter, some, every,
121
+ * find, findIndex, findLast, findLastIndex, reduce, reduceRight). The
122
+ * receiver, the callback and reduce's initial value evaluate in order
123
+ * before the helper runs. The helper reads the length once (typed arrays
124
+ * have no holes) and each element when it visits it, so the callback's
125
+ * writes show in later elements. The callback receives the element, its
126
+ * index and the typed array (reduce's receive the accumulator first). map
127
+ * and filter return a new typed array of the receiver's kind; map stores
128
+ * each result with the element conversion of that kind. A thisArg keeps
129
+ * the fence, as for arrays. */
130
+ function lowerBytesCallbackCall(lowerer, call, access, method, bytesT) {
131
+ const loc = locOf(call);
132
+ const nArgs = call.arguments.nodes.length;
133
+ const reduce = method === "reduce" || method === "reduceRight";
134
+ if (nArgs < 1 || nArgs > (reduce ? 2 : 1) || call.arguments.nodes.some(ts.isSpreadElement)) {
135
+ lowerer.noLowering(`.${method} with ${nArgs} arguments on ${BYTES_ELEMENT_NAME[bytesT.elem]}`, call, reduce ? undefined : "the thisArg parameter has no lowering — use an arrow function");
136
+ }
137
+ const argNode = call.arguments.nodes[0];
138
+ const hasInit = reduce && nArgs === 2;
139
+ const accT = reduce ? (hasInit ? lowerer.irTypeOf(call) : F64) : null;
140
+ if (accT !== null && (accT.kind === "void" || accT.kind === "func"))
141
+ lowerer.badType(call, lowerer.typeOf(call));
142
+ const receiver = lowerer.lowerExprExpecting(access.expression, bytesT);
143
+ const { fnArg, arity } = lowerArrayCallback(lowerer, argNode, accT !== null ? [accT, F64] : [F64], bytesT, false, accT ?? undefined);
144
+ const fnRet = fnArg.type.ret;
145
+ const predicate = method === "filter" ||
146
+ method === "some" ||
147
+ method === "every" ||
148
+ method === "find" ||
149
+ method === "findIndex" ||
150
+ method === "findLast" ||
151
+ method === "findLastIndex";
152
+ if (predicate && !findPredicateOk(lowerer, fnRet))
153
+ lowerer.badType(argNode, lowerer.typeOf(argNode));
154
+ if (method === "map" && !lowerer.coercibleValue(F64, fnRet))
155
+ lowerer.badType(argNode, lowerer.typeOf(argNode));
156
+ const resultT = accT ??
157
+ (method === "forEach"
158
+ ? VOID
159
+ : method === "map" || method === "filter"
160
+ ? bytesT
161
+ : method === "some" || method === "every"
162
+ ? BOOL
163
+ : method === "findIndex" || method === "findLastIndex"
164
+ ? F64
165
+ : lowerer.irTypeOf(call));
166
+ const helper = bytesCallbackHelper(lowerer, method, bytesT, resultT, fnRet, arity, hasInit, loc);
167
+ const args = [receiver, fnArg];
168
+ if (hasInit)
169
+ args.push(lowerer.lowerExprExpecting(call.arguments.nodes[1], resultT));
170
+ return { kind: "call", callee: helper, args, type: resultT, loc };
171
+ }
172
+ /** The interned helper of one typed-array callback method shape. */
173
+ function bytesCallbackHelper(lowerer, method, bytesT, resultT, fnRet, arity, hasInit, loc) {
174
+ const key = `bytes.${method}:${bytesT.elem}:${typeKey(resultT)}:${typeKey(fnRet)}:${arity}:${hasInit ? "init" : ""}`;
175
+ const existing = lowerer.arrHofHelpers.get(key);
176
+ if (existing)
177
+ return existing;
178
+ const name = `%bytes.${method}.${lowerer.arrHofHelpers.size}`;
179
+ lowerer.arrHofHelpers.set(key, name);
180
+ const reduce = method === "reduce" || method === "reduceRight";
181
+ const backward = method === "reduceRight" || method === "findLast" || method === "findLastIndex";
182
+ const fnT = funcOf((reduce ? [resultT, F64, F64, bytesT] : [F64, F64, bytesT]).slice(0, arity), fnRet);
183
+ const keptT = arrayOf(F64);
184
+ const a = () => varRef("a.0", bytesT, loc);
185
+ const i = () => varRef("i.0", F64, loc);
186
+ const n = () => varRef("n.0", F64, loc);
187
+ const acc = () => varRef("acc.0", resultT, loc);
188
+ const element = () => varRef("v.0", F64, loc);
189
+ const at = (index) => ({
190
+ kind: "bytesIntrinsic",
191
+ method: "get",
192
+ receiver: a(),
193
+ args: [index],
194
+ type: F64,
195
+ loc,
196
+ });
197
+ const callback = () => ({
198
+ kind: "callValue",
199
+ callee: varRef("f.0", fnT, loc),
200
+ args: (reduce ? [acc(), element(), i(), a()] : [element(), i(), a()]).slice(0, arity),
201
+ type: fnRet,
202
+ loc,
203
+ });
204
+ const inRange = () => backward
205
+ ? { kind: "bin", op: ">=", left: i(), right: numLit(0, loc), type: BOOL, loc }
206
+ : { kind: "bin", op: "<", left: i(), right: n(), type: BOOL, loc };
207
+ const advance = () => ({
208
+ kind: "assign",
209
+ localId: "i.0",
210
+ value: {
211
+ kind: "bin",
212
+ op: backward ? "-" : "+",
213
+ left: i(),
214
+ right: numLit(1, loc),
215
+ type: F64,
216
+ loc,
217
+ },
218
+ loc,
219
+ });
220
+ const ret = (value) => ({ kind: "return", value, loc });
221
+ // map and filter of a Buffer return a Buffer (Node's species).
222
+ const copyBrand = (out) => ({
223
+ kind: "exprStmt",
224
+ expr: { kind: "libCall", fn: "bytes.copyBrand", args: [out, a()], type: VOID, loc },
225
+ loc,
226
+ });
227
+ const locals = [
228
+ { id: "a.0", name: "a", type: bytesT, mutable: true },
229
+ { id: "f.0", name: "f", type: fnT, mutable: true },
230
+ ...(hasInit ? [{ id: "z.0", name: "z", type: resultT, mutable: true }] : []),
231
+ ...(reduce || method === "map" || method === "filter"
232
+ ? [{ id: "acc.0", name: "acc", type: resultT, mutable: true }]
233
+ : []),
234
+ ...(method === "filter"
235
+ ? [{ id: "kept.0", name: "kept", type: keptT, mutable: true }]
236
+ : []),
237
+ { id: "n.0", name: "n", type: F64, mutable: false },
238
+ { id: "i.0", name: "i", type: F64, mutable: true },
239
+ { id: "v.0", name: "v", type: F64, mutable: true },
240
+ ];
241
+ const params = [
242
+ { localId: "a.0", name: "a", type: bytesT },
243
+ { localId: "f.0", name: "f", type: fnT },
244
+ ...(hasInit ? [{ localId: "z.0", name: "z", type: resultT }] : []),
245
+ ];
246
+ const visit = [{ kind: "assign", localId: "v.0", value: at(i()), loc }];
247
+ const prologue = [];
248
+ let epilogue;
249
+ switch (method) {
250
+ case "forEach":
251
+ visit.push({ kind: "exprStmt", expr: callback(), loc });
252
+ epilogue = [ret(null)];
253
+ break;
254
+ case "map":
255
+ prologue.push({
256
+ kind: "varDecl",
257
+ localId: "acc.0",
258
+ init: { kind: "bytesNew", source: n(), type: bytesT, loc },
259
+ loc,
260
+ });
261
+ visit.push({
262
+ kind: "bytesSet",
263
+ arr: acc(),
264
+ index: i(),
265
+ value: lowerer.coerceToExpected(callback(), F64),
266
+ loc,
267
+ });
268
+ if (bytesT.elem === "u8")
269
+ prologue.push(copyBrand(acc()));
270
+ epilogue = [ret(acc())];
271
+ break;
272
+ case "filter":
273
+ prologue.push({
274
+ kind: "varDecl",
275
+ localId: "kept.0",
276
+ init: { kind: "arrayLit", elems: [], type: keptT, loc },
277
+ loc,
278
+ });
279
+ visit.push({
280
+ kind: "if",
281
+ cond: predicateToBoolean(callback()),
282
+ then: [
283
+ {
284
+ kind: "exprStmt",
285
+ expr: {
286
+ kind: "arrIntrinsic",
287
+ method: "push",
288
+ receiver: varRef("kept.0", keptT, loc),
289
+ args: [element()],
290
+ type: F64,
291
+ loc,
292
+ },
293
+ loc,
294
+ },
295
+ ],
296
+ else_: null,
297
+ loc,
298
+ });
299
+ epilogue = [
300
+ {
301
+ kind: "varDecl",
302
+ localId: "acc.0",
303
+ init: { kind: "bytesNew", source: varRef("kept.0", keptT, loc), type: bytesT, loc },
304
+ loc,
305
+ },
306
+ ...(bytesT.elem === "u8" ? [copyBrand(acc())] : []),
307
+ ret(acc()),
308
+ ];
309
+ break;
310
+ case "some":
311
+ case "every": {
312
+ const found = method === "some";
313
+ const test = predicateToBoolean(callback());
314
+ visit.push({
315
+ kind: "if",
316
+ cond: found ? test : { kind: "unary", op: "!", operand: test, type: BOOL, loc },
317
+ then: [ret(boolLit(found, loc))],
318
+ else_: null,
319
+ loc,
320
+ });
321
+ epilogue = [ret(boolLit(!found, loc))];
322
+ break;
323
+ }
324
+ case "find":
325
+ case "findLast":
326
+ visit.push({
327
+ kind: "if",
328
+ cond: predicateToBoolean(callback()),
329
+ then: [ret(lowerer.coerceToExpected(element(), resultT))],
330
+ else_: null,
331
+ loc,
332
+ });
333
+ epilogue = [
334
+ ret(lowerer.coerceToExpected({ kind: "unitLit", unit: "undefined", type: UNDEFINED_T, loc }, resultT)),
335
+ ];
336
+ break;
337
+ case "findIndex":
338
+ case "findLastIndex":
339
+ visit.push({
340
+ kind: "if",
341
+ cond: predicateToBoolean(callback()),
342
+ then: [ret(i())],
343
+ else_: null,
344
+ loc,
345
+ });
346
+ epilogue = [ret(numLit(-1, loc))];
347
+ break;
348
+ case "reduce":
349
+ case "reduceRight":
350
+ if (hasInit) {
351
+ prologue.push({
352
+ kind: "varDecl",
353
+ localId: "acc.0",
354
+ init: varRef("z.0", resultT, loc),
355
+ loc,
356
+ });
357
+ }
358
+ else {
359
+ prologue.push({
360
+ kind: "if",
361
+ cond: { kind: "unary", op: "!", operand: inRange(), type: BOOL, loc },
362
+ then: [
363
+ {
364
+ kind: "throw",
365
+ value: {
366
+ kind: "libCall",
367
+ fn: "error.new",
368
+ args: [
369
+ {
370
+ kind: "strLit",
371
+ value: "Reduce of empty array with no initial value",
372
+ type: STRING,
373
+ loc,
374
+ },
375
+ ],
376
+ type: { kind: "object", className: "%TypeError" },
377
+ loc,
378
+ },
379
+ loc,
380
+ },
381
+ ],
382
+ else_: null,
383
+ loc,
384
+ }, { kind: "varDecl", localId: "acc.0", init: at(i()), loc }, advance());
385
+ }
386
+ visit.push({
387
+ kind: "assign",
388
+ localId: "acc.0",
389
+ value: lowerer.coerceToExpected(callback(), resultT),
390
+ loc,
391
+ });
392
+ epilogue = [ret(acc())];
393
+ break;
394
+ }
395
+ const body = [
396
+ {
397
+ kind: "varDecl",
398
+ localId: "n.0",
399
+ init: { kind: "bytesIntrinsic", method: "length", receiver: a(), args: [], type: F64, loc },
400
+ loc,
401
+ },
402
+ {
403
+ kind: "varDecl",
404
+ localId: "i.0",
405
+ init: backward
406
+ ? { kind: "bin", op: "-", left: n(), right: numLit(1, loc), type: F64, loc }
407
+ : numLit(0, loc),
408
+ loc,
409
+ },
410
+ { kind: "varDecl", localId: "v.0", init: numLit(0, loc), loc },
411
+ ...prologue,
412
+ { kind: "for", init: null, cond: inRange(), update: advance(), body: visit, loc },
413
+ ...epilogue,
414
+ ];
415
+ lowerer.liftedFns.push({ name, params, returnType: resultT, locals, body, loc });
416
+ return name;
417
+ }
102
418
  /* ── typed arrays / Buffer ─────────────────────────────────────────────── */
103
419
  /** The typed-array constructors with a runtime representation, by lib
104
- * interface name. Other flavors (Float16Array, BigInt64Array, ...) fall through
420
+ * interface name. Other flavors (BigInt64Array, BigUint64Array) fall through
105
421
  * to the generic stdlib-constructor fence. DataView is handled separately. */
106
422
  const BYTES_CTORS = {
107
423
  Uint8Array: "u8",
@@ -111,6 +427,7 @@ const BYTES_CTORS = {
111
427
  Int16Array: "i16",
112
428
  Uint32Array: "u32",
113
429
  Int32Array: "i32",
430
+ Float16Array: "f16",
114
431
  Float32Array: "f32",
115
432
  Float64Array: "f64",
116
433
  };
@@ -128,9 +445,9 @@ const BYTES_CTORS = {
128
445
  * typed-array construction. */
129
446
  export function lowerBytesNew(lowerer, expr, symbol) {
130
447
  if (symbol != null &&
131
- (symbol.name === "ArrayBuffer" || symbol.name === "SharedArrayBuffer") &&
448
+ (ts.symbolName(symbol) === "ArrayBuffer" || ts.symbolName(symbol) === "SharedArrayBuffer") &&
132
449
  lowerer.isStdlibSymbol(symbol)) {
133
- const args = expr.arguments ?? [];
450
+ const args = expr.arguments?.nodes ?? [];
134
451
  if (args.length > 1 || args.some(ts.isSpreadElement)) {
135
452
  lowerer.noLowering("resizable ArrayBuffer construction", expr, "fixed-length ArrayBuffers accept a byte length; resizable storage is not supported yet");
136
453
  }
@@ -139,22 +456,22 @@ export function lowerBytesNew(lowerer, expr, symbol) {
139
456
  : dynUndefinedExpr(locOf(expr));
140
457
  return {
141
458
  kind: "libCall",
142
- fn: symbol.name === "SharedArrayBuffer" ? "sharedArrayBuffer.new" : "arrayBuffer.new",
459
+ fn: ts.symbolName(symbol) === "SharedArrayBuffer" ? "sharedArrayBuffer.new" : "arrayBuffer.new",
143
460
  args: [length],
144
461
  type: DYN,
145
462
  loc: locOf(expr),
146
463
  };
147
464
  }
148
- if (symbol && symbol.name === "DataView" && lowerer.isStdlibSymbol(symbol)) {
465
+ if (symbol && ts.symbolName(symbol) === "DataView" && lowerer.isStdlibSymbol(symbol)) {
149
466
  return lowerDataViewNew(lowerer, expr);
150
467
  }
151
- const elem = symbol ? own(BYTES_CTORS, symbol.name) : undefined;
468
+ const elem = symbol ? own(BYTES_CTORS, ts.symbolName(symbol)) : undefined;
152
469
  if (!elem || !symbol || !lowerer.isStdlibSymbol(symbol))
153
470
  return null;
154
- const name = symbol.name;
471
+ const name = ts.symbolName(symbol);
155
472
  const type = bytesOf(elem);
156
473
  const loc = locOf(expr);
157
- const args = expr.arguments ?? [];
474
+ const args = expr.arguments?.nodes ?? [];
158
475
  if (args.length === 0)
159
476
  return { kind: "bytesNew", source: null, type, loc };
160
477
  if (args.length >= 2 && args.length <= 3 && !args.some(ts.isSpreadElement)) {
@@ -162,8 +479,8 @@ export function lowerBytesNew(lowerer, expr, symbol) {
162
479
  }
163
480
  if (args.length === 1 && !ts.isSpreadElement(args[0])) {
164
481
  const argNode = args[0];
165
- if (ts.isArrayLiteralExpression(argNode) && !argNode.elements.some(ts.isSpreadElement)) {
166
- const elems = argNode.elements.map((el) => lowerer.lowerExprExpecting(el, F64));
482
+ if (ts.isArrayLiteralExpression(argNode) && !argNode.elements.nodes.some(ts.isSpreadElement)) {
483
+ const elems = argNode.elements.nodes.map((el) => lowerer.lowerExprExpecting(el, F64));
167
484
  const seed = { kind: "arrayLit", elems, type: arrayOf(F64), loc };
168
485
  return { kind: "bytesNew", source: seed, type, loc };
169
486
  }
@@ -197,9 +514,9 @@ export function lowerBytesStaticCall(lowerer, call, access) {
197
514
  if (lowerer.chainBlocked(call, access))
198
515
  return null;
199
516
  if (lowerer.isStdlibGlobal(access.expression, "ArrayBuffer") && access.name.text === "isView") {
200
- if (call.arguments.length !== 1 || call.arguments.some(ts.isSpreadElement))
517
+ if (call.arguments.nodes.length !== 1 || call.arguments.nodes.some(ts.isSpreadElement))
201
518
  lowerer.noLowering("ArrayBuffer.isView argument count", call);
202
- const arg = call.arguments[0];
519
+ const arg = call.arguments.nodes[0];
203
520
  return {
204
521
  kind: "libCall",
205
522
  fn: "arrayBuffer.isView",
@@ -211,17 +528,17 @@ export function lowerBytesStaticCall(lowerer, call, access) {
211
528
  if (access.name.text !== "from" || !ts.isIdentifier(access.expression))
212
529
  return null;
213
530
  const symbol = lowerer.resolveValueSymbol(access.expression);
214
- const elem = symbol ? own(BYTES_CTORS, symbol.name) : undefined;
531
+ const elem = symbol ? own(BYTES_CTORS, ts.symbolName(symbol)) : undefined;
215
532
  if (!elem || !lowerer.isStdlibSymbol(symbol ?? undefined))
216
533
  return null;
217
- if (call.arguments.length < 1 ||
218
- call.arguments.length > 3 ||
219
- call.arguments.some(ts.isSpreadElement)) {
534
+ if (call.arguments.nodes.length < 1 ||
535
+ call.arguments.nodes.length > 3 ||
536
+ call.arguments.nodes.some(ts.isSpreadElement)) {
220
537
  lowerer.noLowering("TypedArray.from with this argument count", call);
221
538
  }
222
- const node = call.arguments[0];
539
+ const node = call.arguments.nodes[0];
223
540
  const source = lowerer.lowerExpr(node);
224
- if (call.arguments.length > 1) {
541
+ if (call.arguments.nodes.length > 1) {
225
542
  if (!["string", "array", "bytes"].includes(source.type.kind))
226
543
  lowerer.noLowering("TypedArray.from mapper over this source representation", call);
227
544
  const loc = locOf(call);
@@ -268,9 +585,9 @@ export function lowerBytesStaticCall(lowerer, call, access) {
268
585
  callee: key,
269
586
  args: [
270
587
  lowerer.coerceInto(node, source, DYN),
271
- lowerer.lowerExprExpecting(call.arguments[1], DYN),
272
- call.arguments[2]
273
- ? lowerer.lowerExprExpecting(call.arguments[2], DYN)
588
+ lowerer.lowerExprExpecting(call.arguments.nodes[1], DYN),
589
+ call.arguments.nodes[2]
590
+ ? lowerer.lowerExprExpecting(call.arguments.nodes[2], DYN)
274
591
  : dynUndefinedExpr(loc),
275
592
  ],
276
593
  type: bytesOf(elem),
@@ -303,6 +620,7 @@ function lowerArrayBufferView(lowerer, args, elem, loc) {
303
620
  u8: "arrayBuffer.viewU8",
304
621
  u32: "arrayBuffer.viewU32",
305
622
  i32: "arrayBuffer.viewI32",
623
+ f16: "arrayBuffer.viewF16",
306
624
  f32: "arrayBuffer.viewF32",
307
625
  f64: "arrayBuffer.viewF64",
308
626
  dv: "arrayBuffer.viewDV",
@@ -316,7 +634,7 @@ function lowerArrayBufferView(lowerer, args, elem, loc) {
316
634
  };
317
635
  }
318
636
  function lowerDataViewNew(lowerer, expr) {
319
- const args = expr.arguments ?? [];
637
+ const args = expr.arguments?.nodes ?? [];
320
638
  if (!args.length || args.length > 3 || args.some(ts.isSpreadElement))
321
639
  lowerer.noLowering("DataView constructor argument count", expr);
322
640
  return lowerArrayBufferView(lowerer, args, "dv", locOf(expr));
@@ -338,10 +656,10 @@ export function lowerBytesMethodCall(lowerer, call, access) {
338
656
  if (!lowerer.isStdlibMember(access))
339
657
  return null;
340
658
  const loc = locOf(call);
341
- const nArgs = call.arguments.length;
659
+ const nArgs = call.arguments.nodes.length;
342
660
  // Encoded stream callbacks can receive strings even when JavaScript's
343
661
  // contextual inference still describes their parameter as a Buffer.
344
- if (name === "toString" && nArgs <= 1 && isJsSourceFile(call.getSourceFile())) {
662
+ if (name === "toString" && nArgs <= 1 && isJsSourceFile(ts.getSourceFileOfNode(call))) {
345
663
  const lowered = lowerer.lowerExpr(access.expression);
346
664
  const receiver = lowered.kind === "dynCheck" && lowered.value.type.kind === "dyn" ? lowered.value : lowered;
347
665
  if (receiver.type.kind === "dyn")
@@ -350,10 +668,10 @@ export function lowerBytesMethodCall(lowerer, call, access) {
350
668
  fn: "dyn.toString",
351
669
  args: [
352
670
  receiver,
353
- call.arguments[0]
354
- ? lowerer.lowerExprExpecting(call.arguments[0], DYN)
671
+ call.arguments.nodes[0]
672
+ ? lowerer.lowerExprExpecting(call.arguments.nodes[0], DYN)
355
673
  : dynUndefinedExpr(loc),
356
- { kind: "strLit", value: access.getText(), type: STRING, loc },
674
+ { kind: "strLit", value: ts.getTextOfNode(access), type: STRING, loc },
357
675
  ],
358
676
  type: STRING,
359
677
  loc,
@@ -362,6 +680,19 @@ export function lowerBytesMethodCall(lowerer, call, access) {
362
680
  if (name === "sort" || name === "toSorted") {
363
681
  return lowerBytesSortCall(lowerer, call, access, receiverIr);
364
682
  }
683
+ if (BYTES_CALLBACK_METHODS.has(name)) {
684
+ return lowerBytesCallbackCall(lowerer, call, access, name, receiverIr);
685
+ }
686
+ // values()/keys()/entries() as iterator objects (for...of heads and
687
+ // stored numeric iterators lower before this).
688
+ if ((name === "values" || name === "keys" || name === "entries") && nArgs === 0) {
689
+ const type = lowerer.mapTypeOf(lowerer.typeOf(call));
690
+ if (type?.kind === "generator") {
691
+ const value = lowerBytesIteratorValue(lowerer, lowerer.lowerExpr(access.expression), name, type, loc);
692
+ if (value)
693
+ return value;
694
+ }
695
+ }
365
696
  if (name === "toReversed") {
366
697
  if (nArgs !== 0) {
367
698
  lowerer.noLowering(`.toReversed with ${nArgs} arguments on typed arrays`, call);
@@ -376,7 +707,7 @@ export function lowerBytesMethodCall(lowerer, call, access) {
376
707
  };
377
708
  }
378
709
  if (receiverIr.elem === "u8" && name === "with") {
379
- if (nArgs !== 2 || call.arguments.some(ts.isSpreadElement)) {
710
+ if (nArgs !== 2 || call.arguments.nodes.some(ts.isSpreadElement)) {
380
711
  lowerer.noLowering(`.with with ${nArgs} arguments on Uint8Array`, call);
381
712
  }
382
713
  return {
@@ -384,15 +715,15 @@ export function lowerBytesMethodCall(lowerer, call, access) {
384
715
  method: "with",
385
716
  receiver: lowerer.lowerExprExpecting(access.expression, receiverIr),
386
717
  args: [
387
- lowerer.lowerExprExpecting(call.arguments[0], F64),
388
- lowerer.lowerExprExpecting(call.arguments[1], F64),
718
+ lowerer.lowerExprExpecting(call.arguments.nodes[0], F64),
719
+ lowerer.lowerExprExpecting(call.arguments.nodes[1], F64),
389
720
  ],
390
721
  type: receiverIr,
391
722
  loc,
392
723
  };
393
724
  }
394
725
  if (name === "join") {
395
- if (nArgs > 1 || call.arguments.some(ts.isSpreadElement)) {
726
+ if (nArgs > 1 || call.arguments.nodes.some(ts.isSpreadElement)) {
396
727
  lowerer.noLowering(`.join with ${nArgs} arguments on typed arrays`, call);
397
728
  }
398
729
  const separatorDefault = {
@@ -401,8 +732,8 @@ export function lowerBytesMethodCall(lowerer, call, access) {
401
732
  type: STRING,
402
733
  loc,
403
734
  };
404
- const separator = call.arguments[0]
405
- ? lowerOptionalArgument(lowerer, call.arguments[0], STRING, separatorDefault)
735
+ const separator = call.arguments.nodes[0]
736
+ ? lowerOptionalArgument(lowerer, call.arguments.nodes[0], STRING, separatorDefault)
406
737
  : separatorDefault;
407
738
  return {
408
739
  kind: "bytesIntrinsic",
@@ -420,7 +751,7 @@ export function lowerBytesMethodCall(lowerer, call, access) {
420
751
  const receiver = lowerer.lowerExprExpecting(access.expression, receiverIr);
421
752
  // A missing start is 0 and a missing end is the length (+Infinity
422
753
  // clamps to it), as for omitted arguments.
423
- const args = call.arguments.map((a, i) => lowerOptionalArgument(lowerer, a, F64, {
754
+ const args = call.arguments.nodes.map((a, i) => lowerOptionalArgument(lowerer, a, F64, {
424
755
  kind: "numLit",
425
756
  value: i === 0 ? 0 : Infinity,
426
757
  type: F64,
@@ -434,21 +765,19 @@ export function lowerBytesMethodCall(lowerer, call, access) {
434
765
  (() => {
435
766
  const nameSym = lowerer.checker.getSymbolAtLocation(access.name);
436
767
  return (nameSym !== undefined &&
437
- lowerer.checker
438
- .declarationsOf(nameSym)
439
- .some((d) => ts.isInterfaceDeclaration(d.parent) && d.parent.name.text === "Buffer"));
768
+ nameSym.declarations.some((d) => ts.isInterfaceDeclaration(d.parent) && d.parent.name.text === "Buffer"));
440
769
  })();
441
770
  const method = name === "subarray" || declaredOnBuffer ? "subarray" : "slice";
442
771
  return { kind: "bytesIntrinsic", method, receiver, args, type: receiverIr, loc };
443
772
  }
444
773
  if (name === "copyWithin") {
445
- if (nArgs > 3 || call.arguments.some(ts.isSpreadElement)) {
774
+ if (nArgs > 3 || call.arguments.nodes.some(ts.isSpreadElement)) {
446
775
  lowerer.noLowering(`.copyWithin with ${nArgs} arguments on typed arrays`, call);
447
776
  }
448
777
  const receiver = lowerer.lowerExprExpecting(access.expression, receiverIr);
449
778
  const args = [0, 0, Infinity].map((value, i) => {
450
779
  const fallback = { kind: "numLit", value, type: F64, loc };
451
- const node = call.arguments[i];
780
+ const node = call.arguments.nodes[i];
452
781
  return node ? lowerOptionalArgument(lowerer, node, F64, fallback) : fallback;
453
782
  });
454
783
  return { kind: "bytesIntrinsic", method: "copyWithin", receiver, args, type: receiverIr, loc };
@@ -457,22 +786,20 @@ export function lowerBytesMethodCall(lowerer, call, access) {
457
786
  !(() => {
458
787
  const symbol = lowerer.checker.getSymbolAtLocation(access.name);
459
788
  return (symbol !== undefined &&
460
- lowerer.checker
461
- .declarationsOf(symbol)
462
- .some((declaration) => ts.isInterfaceDeclaration(declaration.parent) &&
789
+ symbol.declarations.some((declaration) => ts.isInterfaceDeclaration(declaration.parent) &&
463
790
  declaration.parent.name.text === "Buffer"));
464
791
  })()) {
465
792
  // Typed arrays use element coercion and relative, clamped indices.
466
793
  // Buffer's same-named method keeps its pattern and offset validation.
467
- if (nArgs > 3 || call.arguments.some(ts.isSpreadElement)) {
794
+ if (nArgs > 3 || call.arguments.nodes.some(ts.isSpreadElement)) {
468
795
  lowerer.noLowering(`.fill with ${nArgs} arguments on typed arrays`, call);
469
796
  }
470
797
  const receiver = lowerer.lowerExprExpecting(access.expression, receiverIr);
471
798
  const zero = { kind: "numLit", value: 0, type: F64, loc };
472
- const v = call.arguments[0]
473
- ? lowerOptionalArgument(lowerer, call.arguments[0], F64, zero)
799
+ const v = call.arguments.nodes[0]
800
+ ? lowerOptionalArgument(lowerer, call.arguments.nodes[0], F64, zero)
474
801
  : zero;
475
- const idx = call.arguments.slice(1).map((a, i) => lowerOptionalArgument(lowerer, a, F64, {
802
+ const idx = call.arguments.nodes.slice(1).map((a, i) => lowerOptionalArgument(lowerer, a, F64, {
476
803
  kind: "numLit",
477
804
  value: i === 0 ? 0 : Infinity,
478
805
  type: F64,
@@ -492,13 +819,13 @@ export function lowerBytesMethodCall(lowerer, call, access) {
492
819
  lowerer.noLowering(`.set with ${nArgs} arguments on typed arrays`, call);
493
820
  }
494
821
  const receiver = lowerer.lowerExprExpecting(access.expression, receiverIr);
495
- const src = lowerer.lowerExpr(call.arguments[0]);
822
+ const src = lowerer.lowerExpr(call.arguments.nodes[0]);
496
823
  const method = src.type.kind === "bytes" ? "setFrom" : "setFromDyn";
497
824
  const args = [
498
- src.type.kind === "bytes" ? src : lowerer.coerceInto(call.arguments[0], src, DYN),
825
+ src.type.kind === "bytes" ? src : lowerer.coerceInto(call.arguments.nodes[0], src, DYN),
499
826
  ];
500
827
  if (nArgs === 2)
501
- args.push(lowerOptionalArgument(lowerer, call.arguments[1], F64, {
828
+ args.push(lowerOptionalArgument(lowerer, call.arguments.nodes[1], F64, {
502
829
  kind: "numLit",
503
830
  value: 0,
504
831
  type: F64,
@@ -513,9 +840,7 @@ export function lowerBytesMethodCall(lowerer, call, access) {
513
840
  const declaredOnBuffer = (() => {
514
841
  const nameSym = lowerer.checker.getSymbolAtLocation(access.name);
515
842
  return (nameSym !== undefined &&
516
- lowerer.checker
517
- .declarationsOf(nameSym)
518
- .some((d) => ts.isInterfaceDeclaration(d.parent) && d.parent.name.text === "Buffer"));
843
+ nameSym.declarations.some((d) => ts.isInterfaceDeclaration(d.parent) && d.parent.name.text === "Buffer"));
519
844
  })();
520
845
  if (receiverIr.elem !== "u8" || !declaredOnBuffer) {
521
846
  lowerer.noLowering("typed-array toString", call, 'Buffer.from(x).toString("utf8" | "hex" | "base64") is the lowered string conversion');
@@ -523,7 +848,7 @@ export function lowerBytesMethodCall(lowerer, call, access) {
523
848
  if (nArgs > 3)
524
849
  lowerer.noLowering(`.toString with ${nArgs} arguments on Buffers`, call);
525
850
  const receiver = lowerer.lowerExprExpecting(access.expression, receiverIr);
526
- const encNode = call.arguments[0];
851
+ const encNode = call.arguments.nodes[0];
527
852
  let method = "toString";
528
853
  let enc = { kind: "strLit", value: "utf8", type: STRING, loc };
529
854
  if (encNode) {
@@ -563,9 +888,9 @@ export function lowerBytesMethodCall(lowerer, call, access) {
563
888
  // receiver's length, because EXPLICIT negative ends clamp to empty
564
889
  // in Node and no in-band sentinel can represent "omitted" safely.
565
890
  if (nArgs > 1) {
566
- const start = lowerer.lowerExprExpecting(call.arguments[1], F64);
891
+ const start = lowerer.lowerExprExpecting(call.arguments.nodes[1], F64);
567
892
  if (nArgs === 3) {
568
- const end = lowerer.lowerExprExpecting(call.arguments[2], F64);
893
+ const end = lowerer.lowerExprExpecting(call.arguments.nodes[2], F64);
569
894
  return {
570
895
  kind: "bytesIntrinsic",
571
896
  method,
@@ -588,9 +913,7 @@ export function lowerBytesMethodCall(lowerer, call, access) {
588
913
  const declOnBuffer = (() => {
589
914
  const nameSym = lowerer.checker.getSymbolAtLocation(access.name);
590
915
  return (nameSym !== undefined &&
591
- lowerer.checker
592
- .declarationsOf(nameSym)
593
- .some((d) => ts.isInterfaceDeclaration(d.parent) && d.parent.name.text === "Buffer"));
916
+ nameSym.declarations.some((d) => ts.isInterfaceDeclaration(d.parent) && d.parent.name.text === "Buffer"));
594
917
  })();
595
918
  if (declOnBuffer && receiverIr.elem === "u8") {
596
919
  const bufMethod = lowerBufferInstanceMethod(lowerer, call, access, name, loc);
@@ -605,7 +928,7 @@ export function lowerBytesMethodCall(lowerer, call, access) {
605
928
  lowerer.noLowering(`.${name} with ${nArgs} arguments`, call);
606
929
  }
607
930
  const receiver = lowerer.lowerExprExpecting(access.expression, receiverIr);
608
- const offsetNode = call.arguments[required];
931
+ const offsetNode = call.arguments.nodes[required];
609
932
  const offset = offsetNode
610
933
  ? lowerer.lowerExprExpecting(offsetNode, F64)
611
934
  : { kind: "numLit", value: 0, type: F64, loc };
@@ -620,7 +943,7 @@ export function lowerBytesMethodCall(lowerer, call, access) {
620
943
  loc,
621
944
  };
622
945
  }
623
- const value = lowerer.lowerExprExpecting(call.arguments[0], BIGINT_T);
946
+ const value = lowerer.lowerExprExpecting(call.arguments.nodes[0], BIGINT_T);
624
947
  return {
625
948
  kind: "libCall",
626
949
  fn: "bigint.bufferWrite",
@@ -645,7 +968,7 @@ export function lowerBytesMethodCall(lowerer, call, access) {
645
968
  }
646
969
  const receiver = lowerer.lowerExprExpecting(access.expression, receiverIr);
647
970
  const kind = { kind: "strLit", value: numKind, type: STRING, loc };
648
- const args = [kind, ...call.arguments.map((a) => lowerer.lowerExprExpecting(a, F64))];
971
+ const args = [kind, ...call.arguments.nodes.map((a) => lowerer.lowerExprExpecting(a, F64))];
649
972
  if (nArgs === required) {
650
973
  args.push({ kind: "numLit", value: 0, type: F64, loc }); // Node's offset default
651
974
  }
@@ -670,7 +993,7 @@ export function lowerBytesMethodCall(lowerer, call, access) {
670
993
  }
671
994
  const receiver = lowerer.lowerExprExpecting(access.expression, receiverIr);
672
995
  const kind = { kind: "strLit", value: varKind, type: STRING, loc };
673
- const args = [kind, ...call.arguments.map((a) => lowerer.lowerExprExpecting(a, F64))];
996
+ const args = [kind, ...call.arguments.nodes.map((a) => lowerer.lowerExprExpecting(a, F64))];
674
997
  return {
675
998
  kind: "bytesIntrinsic",
676
999
  method: write ? "writeNumVar" : "readNumVar",
@@ -690,10 +1013,10 @@ export function lowerBytesMethodCall(lowerer, call, access) {
690
1013
  if (nArgs < 1 || nArgs > 2)
691
1014
  lowerer.noLowering(`.${name} with ${nArgs} arguments`, call);
692
1015
  const receiver = lowerer.lowerExprExpecting(access.expression, receiverIr);
693
- const offset = lowerer.lowerExprExpecting(call.arguments[0], F64);
1016
+ const offset = lowerer.lowerExprExpecting(call.arguments.nodes[0], F64);
694
1017
  const sign = { kind: "boolLit", value: dvBigGetter.sign, type: BOOL, loc };
695
- const le = call.arguments[1]
696
- ? lowerer.lowerExprExpecting(call.arguments[1], BOOL)
1018
+ const le = call.arguments.nodes[1]
1019
+ ? lowerer.lowerExprExpecting(call.arguments.nodes[1], BOOL)
697
1020
  : { kind: "boolLit", value: false, type: BOOL, loc };
698
1021
  return {
699
1022
  kind: "libCall",
@@ -711,9 +1034,9 @@ export function lowerBytesMethodCall(lowerer, call, access) {
711
1034
  }
712
1035
  const receiver = lowerer.lowerExprExpecting(access.expression, receiverIr);
713
1036
  // ToIndex(undefined) is ToIndex(NaN): a missing offset reads offset 0.
714
- const args = [lowerToNumberArgument(lowerer, call.arguments[0])];
1037
+ const args = [lowerToNumberArgument(lowerer, call.arguments.nodes[0])];
715
1038
  if (nArgs === 2)
716
- args.push(lowerer.lowerExprExpecting(call.arguments[1], BOOL));
1039
+ args.push(lowerer.lowerExprExpecting(call.arguments.nodes[1], BOOL));
717
1040
  return { kind: "bytesIntrinsic", method: dvGetter.method, receiver, args, type: F64, loc };
718
1041
  }
719
1042
  // DataView setters — the getters' mirror: (byteOffset, value) plus the
@@ -727,10 +1050,10 @@ export function lowerBytesMethodCall(lowerer, call, access) {
727
1050
  if (nArgs < 2 || nArgs > 3)
728
1051
  lowerer.noLowering(`.${name} with ${nArgs} arguments`, call);
729
1052
  const receiver = lowerer.lowerExprExpecting(access.expression, receiverIr);
730
- const offset = lowerer.lowerExprExpecting(call.arguments[0], F64);
731
- const value = lowerer.lowerExprExpecting(call.arguments[1], BIGINT_T);
732
- const le = call.arguments[2]
733
- ? lowerer.lowerExprExpecting(call.arguments[2], BOOL)
1053
+ const offset = lowerer.lowerExprExpecting(call.arguments.nodes[0], F64);
1054
+ const value = lowerer.lowerExprExpecting(call.arguments.nodes[1], BIGINT_T);
1055
+ const le = call.arguments.nodes[2]
1056
+ ? lowerer.lowerExprExpecting(call.arguments.nodes[2], BOOL)
734
1057
  : { kind: "boolLit", value: false, type: BOOL, loc };
735
1058
  return {
736
1059
  kind: "libCall",
@@ -749,11 +1072,11 @@ export function lowerBytesMethodCall(lowerer, call, access) {
749
1072
  // The offset (ToIndex) and the value (ToNumber) treat a missing value
750
1073
  // as NaN.
751
1074
  const args = [
752
- lowerToNumberArgument(lowerer, call.arguments[0]),
753
- lowerToNumberArgument(lowerer, call.arguments[1]),
1075
+ lowerToNumberArgument(lowerer, call.arguments.nodes[0]),
1076
+ lowerToNumberArgument(lowerer, call.arguments.nodes[1]),
754
1077
  ];
755
1078
  if (nArgs === 3)
756
- args.push(lowerer.lowerExprExpecting(call.arguments[2], BOOL));
1079
+ args.push(lowerer.lowerExprExpecting(call.arguments.nodes[2], BOOL));
757
1080
  return { kind: "bytesIntrinsic", method: dvSetter.method, receiver, args, type: VOID, loc };
758
1081
  }
759
1082
  return null;
@@ -828,7 +1151,7 @@ const BUF_NUM_VAR_METHODS = {
828
1151
  * (bufEncoding's fence); a trailing string-typed argument is the
829
1152
  * encoding, exactly Node's overloads. */
830
1153
  function lowerBufferInstanceMethod(lowerer, call, access, name, loc) {
831
- const args = call.arguments;
1154
+ const args = call.arguments.nodes;
832
1155
  const nArgs = args.length;
833
1156
  if (args.some(ts.isSpreadElement))
834
1157
  return null;
@@ -876,10 +1199,12 @@ function lowerBufferInstanceMethod(lowerer, call, access, name, loc) {
876
1199
  lowerer.noLowering(`.compare with ${nArgs} arguments`, call);
877
1200
  const fast = nArgs >= 1 &&
878
1201
  argIrKind(0)?.kind === "bytes" &&
879
- call.arguments.slice(1).every((a) => lowerer.mapTypeOf(lowerer.typeOf(a))?.kind === "f64");
1202
+ call.arguments.nodes
1203
+ .slice(1)
1204
+ .every((a) => lowerer.mapTypeOf(lowerer.typeOf(a))?.kind === "f64");
880
1205
  if (fast) {
881
1206
  const target = u8Arg(0);
882
- const idx = call.arguments.slice(1).map((a) => lowerer.lowerExprExpecting(a, F64));
1207
+ const idx = call.arguments.nodes.slice(1).map((a) => lowerer.lowerExprExpecting(a, F64));
883
1208
  const receiver = lowerer.lowerExprExpecting(access.expression, BYTES_U8);
884
1209
  return {
885
1210
  kind: "bytesIntrinsic",
@@ -960,7 +1285,7 @@ function lowerBufferInstanceMethod(lowerer, call, access, name, loc) {
960
1285
  lowerer.noLowering(`.fill with ${nArgs} arguments`, call);
961
1286
  // A trailing string-typed arg past the value is the encoding.
962
1287
  let encNode;
963
- let idxNodes = call.arguments.slice(1);
1288
+ let idxNodes = call.arguments.nodes.slice(1);
964
1289
  if (idxNodes.length > 0 && isStringArg(nArgs - 1)) {
965
1290
  encNode = idxNodes[idxNodes.length - 1];
966
1291
  idxNodes = idxNodes.slice(0, -1);
@@ -1013,7 +1338,7 @@ function lowerBufferInstanceMethod(lowerer, call, access, name, loc) {
1013
1338
  if (nArgs < 1 || nArgs > 4)
1014
1339
  lowerer.noLowering(`.copy with ${nArgs} arguments`, call);
1015
1340
  const target = u8Arg(0);
1016
- const idx = call.arguments.slice(1).map((a) => lowerer.lowerExprExpecting(a, F64));
1341
+ const idx = call.arguments.nodes.slice(1).map((a) => lowerer.lowerExprExpecting(a, F64));
1017
1342
  const receiver = lowerer.lowerExprExpecting(access.expression, BYTES_U8);
1018
1343
  return {
1019
1344
  kind: "bytesIntrinsic",
@@ -1036,7 +1361,7 @@ function lowerBufferInstanceMethod(lowerer, call, access, name, loc) {
1036
1361
  // (str), (str, enc), (str, offset), (str, offset, enc),
1037
1362
  // (str, offset, length), (str, offset, length, enc).
1038
1363
  let encNode;
1039
- let idxNodes = call.arguments.slice(1);
1364
+ let idxNodes = call.arguments.nodes.slice(1);
1040
1365
  if (idxNodes.length > 0 && isStringArg(nArgs - 1)) {
1041
1366
  encNode = idxNodes[idxNodes.length - 1];
1042
1367
  idxNodes = idxNodes.slice(0, -1);
@@ -1081,6 +1406,7 @@ const DV_GETTERS = {
1081
1406
  getInt16: { method: "dvGetInt16", le: true },
1082
1407
  getUint32: { method: "dvGetUint32", le: true },
1083
1408
  getInt32: { method: "dvGetInt32", le: true },
1409
+ getFloat16: { method: "dvGetFloat16", le: true },
1084
1410
  getFloat32: { method: "dvGetFloat32", le: true },
1085
1411
  getFloat64: { method: "dvGetFloat64", le: true },
1086
1412
  };
@@ -1091,6 +1417,7 @@ const DV_SETTERS = {
1091
1417
  setInt16: { method: "dvSetInt16", le: true },
1092
1418
  setUint32: { method: "dvSetUint32", le: true },
1093
1419
  setInt32: { method: "dvSetInt32", le: true },
1420
+ setFloat16: { method: "dvSetFloat16", le: true },
1094
1421
  setFloat32: { method: "dvSetFloat32", le: true },
1095
1422
  setFloat64: { method: "dvSetFloat64", le: true },
1096
1423
  };
@@ -1107,9 +1434,7 @@ function knownBufferProducer(lowerer, source, seen = new Set()) {
1107
1434
  if (!symbol || seen.has(symbol))
1108
1435
  return false;
1109
1436
  seen.add(symbol);
1110
- return lowerer.checker
1111
- .declarationsOf(symbol)
1112
- .some((decl) => ts.isVariableDeclaration(decl) &&
1437
+ return symbol.declarations.some((decl) => ts.isVariableDeclaration(decl) &&
1113
1438
  ts.isVariableDeclarationList(decl.parent) &&
1114
1439
  (decl.parent.flags & ts.NodeFlags.Const) !== 0 &&
1115
1440
  decl.initializer !== undefined &&
@@ -1132,11 +1457,163 @@ function knownBufferProducer(lowerer, source, seen = new Set()) {
1132
1457
  return true;
1133
1458
  if (!ts.isPropertyAccessExpression(callee) ||
1134
1459
  callee.name.text !== "digest" ||
1135
- node.arguments.length !== 0)
1460
+ node.arguments.nodes.length !== 0)
1136
1461
  return false;
1137
1462
  const type = lowerer.mapTypeOf(lowerer.typeOf(callee.expression));
1138
1463
  return type?.kind === "cryptoHash" || type?.kind === "cryptoHmac";
1139
1464
  }
1465
+ /** Buffer.from over a checked-dynamic source and encoding, both already in
1466
+ * repeatable locals: Node's fromString takes utf8 for an absent, non-string
1467
+ * or empty encoding and throws ERR_UNKNOWN_ENCODING for an unknown name;
1468
+ * other sources ignore the encoding. */
1469
+ function dynBufferFromParts(source, encoding, loc) {
1470
+ const utf8 = { kind: "strLit", value: "utf8", type: STRING, loc };
1471
+ const isString = (x) => ({
1472
+ kind: "dynTest",
1473
+ test: "string",
1474
+ value: x,
1475
+ type: BOOL,
1476
+ loc,
1477
+ });
1478
+ const name = {
1479
+ kind: "ternary",
1480
+ cond: {
1481
+ kind: "logical",
1482
+ op: "&&",
1483
+ left: isString(encoding),
1484
+ right: {
1485
+ kind: "strEq",
1486
+ negated: true,
1487
+ left: { kind: "dynCheck", value: encoding, type: STRING, loc },
1488
+ right: { kind: "strLit", value: "", type: STRING, loc },
1489
+ type: BOOL,
1490
+ loc,
1491
+ },
1492
+ type: BOOL,
1493
+ loc,
1494
+ },
1495
+ then: { kind: "dynCheck", value: encoding, type: STRING, loc },
1496
+ else_: utf8,
1497
+ type: STRING,
1498
+ loc,
1499
+ };
1500
+ return {
1501
+ kind: "ternary",
1502
+ cond: isString(source),
1503
+ then: {
1504
+ kind: "libCall",
1505
+ fn: "buffer.poolFromStrChecked",
1506
+ args: [{ kind: "dynCheck", value: source, type: STRING, loc }, name],
1507
+ type: BYTES_U8,
1508
+ loc,
1509
+ },
1510
+ else_: {
1511
+ kind: "libCall",
1512
+ fn: "buffer.poolFromDynRef",
1513
+ args: [source, utf8],
1514
+ type: BYTES_U8,
1515
+ loc,
1516
+ },
1517
+ type: BYTES_U8,
1518
+ loc,
1519
+ };
1520
+ }
1521
+ /** Lowers `source` and `encNode` (or undefined) into hidden dyn locals, in
1522
+ * source order, and builds the result from their references. */
1523
+ function withDynBufferArguments(lowerer, source, encNode, loc, build) {
1524
+ const v = lowerer.declareHiddenLocal("%bufferValue", DYN);
1525
+ const e = lowerer.declareHiddenLocal("%bufferEncoding", DYN);
1526
+ const result = build(varRef(v.id, DYN, loc), varRef(e.id, DYN, loc));
1527
+ return {
1528
+ kind: "seqExpr",
1529
+ stmts: [
1530
+ { kind: "varDecl", localId: v.id, init: lowerer.coerceToExpected(source, DYN), loc },
1531
+ {
1532
+ kind: "varDecl",
1533
+ localId: e.id,
1534
+ init: encNode === undefined
1535
+ ? dynUndefinedExpr(loc)
1536
+ : lowerer.coerceToExpected(lowerer.lowerExpr(encNode), DYN),
1537
+ loc,
1538
+ },
1539
+ ],
1540
+ result,
1541
+ type: result.type,
1542
+ loc,
1543
+ };
1544
+ }
1545
+ /** Buffer.from(value, encoding) over a checked-dynamic value whose encoding
1546
+ * is not a literal: yazl forwards its `encoding` parameter, often undefined.
1547
+ * Null when the encoding is absent or a literal. */
1548
+ function dynBufferFromRuntimeEncoding(lowerer, value, encNode, loc) {
1549
+ if (encNode === undefined || lowerer.typeOf(encNode).isStringLiteralType())
1550
+ return null;
1551
+ return withDynBufferArguments(lowerer, value, encNode, loc, (source, encoding) => dynBufferFromParts(source, encoding, loc));
1552
+ }
1553
+ /** The deprecated `new Buffer(arg[, encoding])` in a dependency's
1554
+ * JavaScript, through the global or an alias of it (buffer-crc32 and yazl
1555
+ * keep it as the fallback for runtimes without Buffer.alloc/Buffer.from).
1556
+ * Node never emits DEP0005 for calls from node_modules, so the construction
1557
+ * is exactly Node's: a number allocates zero-filled bytes (and throws
1558
+ * ERR_INVALID_ARG_TYPE beside a string second argument), anything else
1559
+ * converts as Buffer.from does. Null elsewhere: other callers owe the
1560
+ * deprecation warning. */
1561
+ export function lowerNodeModulesBufferConstruct(lowerer, expr) {
1562
+ const sf = expr.getSourceFile();
1563
+ if (!isJsSourceFile(sf) || !/[\\/]node_modules[\\/]/.test(sf.fileName))
1564
+ return null;
1565
+ const args = expr.arguments?.nodes ?? [];
1566
+ if (args.length < 1 || args.length > 2 || args.some(ts.isSpreadElement))
1567
+ return null;
1568
+ if (stdlibGlobalNameOf(lowerer, expr.expression) !== "Buffer")
1569
+ return null;
1570
+ const loc = locOf(expr);
1571
+ const value = withDynBufferArguments(lowerer, lowerer.lowerExpr(args[0]), args[1], loc, (source, encoding) => ({
1572
+ kind: "ternary",
1573
+ cond: { kind: "dynTest", test: "number", value: source, type: BOOL, loc },
1574
+ then: {
1575
+ kind: "ternary",
1576
+ cond: { kind: "dynTest", test: "string", value: encoding, type: BOOL, loc },
1577
+ then: { kind: "libCall", fn: "buffer.newStringFail", args: [source], type: BYTES_U8, loc },
1578
+ else_: {
1579
+ kind: "libCall",
1580
+ fn: "buffer.alloc",
1581
+ args: [{ kind: "dynCheck", value: source, type: F64, loc }],
1582
+ type: BYTES_U8,
1583
+ loc,
1584
+ },
1585
+ type: BYTES_U8,
1586
+ loc,
1587
+ },
1588
+ else_: dynBufferFromParts(source, encoding, loc),
1589
+ type: BYTES_U8,
1590
+ loc,
1591
+ }));
1592
+ return { kind: "libCall", fn: "buffer.brand", args: [value], type: BYTES_U8, loc };
1593
+ }
1594
+ /** Buffer.from(array or bytes, extra): Node copies an array-like source and
1595
+ * ignores the encoding/offset argument (yazl passes its `encoding` through
1596
+ * unchanged), but JavaScript still evaluates it after the source. */
1597
+ function withIgnoredBufferArgument(lowerer, extraNode, source, build) {
1598
+ if (extraNode === undefined)
1599
+ return build(source);
1600
+ const extra = lowerer.lowerExpr(extraNode);
1601
+ if (isSafeToDiscard(extra))
1602
+ return build(source);
1603
+ const loc = source.loc;
1604
+ const tmp = lowerer.declareHiddenLocal("%bufferSource", source.type);
1605
+ const result = build(varRef(tmp.id, source.type, loc));
1606
+ return {
1607
+ kind: "seqExpr",
1608
+ stmts: [
1609
+ { kind: "varDecl", localId: tmp.id, init: source, loc },
1610
+ { kind: "exprStmt", expr: extra, loc },
1611
+ ],
1612
+ result,
1613
+ type: result.type,
1614
+ loc,
1615
+ };
1616
+ }
1140
1617
  export function lowerBufferStaticCall(lowerer, call, access) {
1141
1618
  const value = lowerBufferStaticValue(lowerer, call, access);
1142
1619
  // Every byte-valued Buffer factory creates a distinct view. Preserve its
@@ -1152,12 +1629,13 @@ function lowerBufferStaticValue(lowerer, call, access) {
1152
1629
  return null;
1153
1630
  const member = access.name.text;
1154
1631
  const loc = locOf(call);
1155
- const args = call.arguments;
1632
+ const args = call.arguments.nodes;
1156
1633
  if (member === "from") {
1157
1634
  if (args.length >= 1 &&
1158
1635
  args.length <= 3 &&
1159
1636
  !args.some(ts.isSpreadElement) &&
1160
- ((symbol) => symbol != null && (symbol.name === "ArrayBuffer" || symbol.name === "SharedArrayBuffer"))(lowerer.typeOf(args[0]).getSymbol())) {
1637
+ ((symbol) => symbol != null &&
1638
+ (ts.symbolName(symbol) === "ArrayBuffer" || ts.symbolName(symbol) === "SharedArrayBuffer"))(lowerer.typeOf(args[0]).getSymbol())) {
1161
1639
  return lowerArrayBufferView(lowerer, args, "u8", loc);
1162
1640
  }
1163
1641
  // Buffer.from(x.buffer[, byteOffset[, length]]): a u8 VIEW sharing
@@ -1188,14 +1666,19 @@ function lowerBufferStaticValue(lowerer, call, access) {
1188
1666
  }
1189
1667
  if (args.length >= 1 && args.length <= 2 && !args.some(ts.isSpreadElement)) {
1190
1668
  const argNode = args[0];
1191
- if (ts.isArrayLiteralExpression(argNode) && !argNode.elements.some(ts.isSpreadElement)) {
1669
+ if (ts.isArrayLiteralExpression(argNode) &&
1670
+ !argNode.elements.nodes.some(ts.isSpreadElement)) {
1192
1671
  // A number[] literal (contextually typed by the lib's readonly
1193
1672
  // number[] slot — build it element-wise, the Set-seed pattern).
1194
- if (args.length === 1) {
1195
- const elems = argNode.elements.map((el) => lowerer.lowerExprExpecting(el, F64));
1196
- const seed = { kind: "arrayLit", elems, type: arrayOf(F64), loc };
1197
- return { kind: "libCall", fn: "buffer.poolFromArray", args: [seed], type: BYTES_U8, loc };
1198
- }
1673
+ const elems = argNode.elements.nodes.map((el) => lowerer.lowerExprExpecting(el, F64));
1674
+ const seed = { kind: "arrayLit", elems, type: arrayOf(F64), loc };
1675
+ return withIgnoredBufferArgument(lowerer, args[1], seed, (array) => ({
1676
+ kind: "libCall",
1677
+ fn: "buffer.poolFromArray",
1678
+ args: [array],
1679
+ type: BYTES_U8,
1680
+ loc,
1681
+ }));
1199
1682
  }
1200
1683
  else {
1201
1684
  const srcIr = lowerer.mapTypeOf(lowerer.typeOf(argNode));
@@ -1203,6 +1686,9 @@ function lowerBufferStaticValue(lowerer, call, access) {
1203
1686
  // JS callback storage can be native DYN even when the checker
1204
1687
  // reports any (or a narrowed Buffer). Dispatch on its actual ABI.
1205
1688
  if (value.type.kind === "dyn") {
1689
+ const runtimeEncoding = dynBufferFromRuntimeEncoding(lowerer, value, args[1], loc);
1690
+ if (runtimeEncoding)
1691
+ return runtimeEncoding;
1206
1692
  const encName = args[1] ? bufEncoding(lowerer, "Buffer.from", args[1]) : "utf8";
1207
1693
  const enc = { kind: "strLit", value: encName, type: STRING, loc };
1208
1694
  return {
@@ -1244,20 +1730,47 @@ function lowerBufferStaticValue(lowerer, call, access) {
1244
1730
  }
1245
1731
  return { kind: "libCall", fn, args: [s, enc], type: BYTES_U8, loc };
1246
1732
  }
1247
- if (args.length === 1 && srcIr?.kind === "bytes" && srcIr.elem === "u8") {
1248
- return {
1733
+ // A checker type with no mapping (pako's conditional `O extends
1734
+ // { toText: true } ? string : Uint8Array` result) whose lowered
1735
+ // value is a u8 view copies like the typed form.
1736
+ if ((srcIr?.kind === "bytes" && srcIr.elem === "u8") ||
1737
+ (srcIr === null && value.type.kind === "bytes" && value.type.elem === "u8")) {
1738
+ return withIgnoredBufferArgument(lowerer, args[1], value, (bytes) => ({
1249
1739
  kind: "libCall",
1250
1740
  fn: "buffer.poolFromBytes",
1251
- args: [value],
1741
+ args: [bytes],
1252
1742
  type: BYTES_U8,
1253
1743
  loc,
1254
- };
1744
+ }));
1255
1745
  }
1256
- if (args.length === 1 && srcIr?.kind === "array" && srcIr.elem.kind === "f64") {
1257
- return {
1746
+ if (srcIr?.kind === "array" && srcIr.elem.kind === "f64") {
1747
+ return withIgnoredBufferArgument(lowerer, args[1], value, (array) => ({
1258
1748
  kind: "libCall",
1259
1749
  fn: "buffer.poolFromArray",
1260
- args: [value],
1750
+ args: [array],
1751
+ type: BYTES_U8,
1752
+ loc,
1753
+ }));
1754
+ }
1755
+ // A union of strings, u8 views and undefined/null (a JS-inferred
1756
+ // npm result such as pako's deflate): the checked form dispatches
1757
+ // on the runtime kind exactly as for an untyped JS value, Node's
1758
+ // TypeError for the unit arms included.
1759
+ if (args.length === 1 &&
1760
+ value.type.kind === "union" &&
1761
+ lowerer.dynConvertible(value.type) &&
1762
+ lowerer.unions
1763
+ .get(value.type.unionId)
1764
+ ?.arms.every((arm) => arm.kind === "string" ||
1765
+ (arm.kind === "bytes" && arm.elem === "u8") ||
1766
+ isUnitType(arm)) === true) {
1767
+ return {
1768
+ kind: "libCall",
1769
+ fn: "buffer.poolFromDyn",
1770
+ args: [
1771
+ lowerer.coerceToExpected(value, DYN),
1772
+ { kind: "strLit", value: "utf8", type: STRING, loc },
1773
+ ],
1261
1774
  type: BYTES_U8,
1262
1775
  loc,
1263
1776
  };
@@ -1333,14 +1846,29 @@ function lowerBufferStaticValue(lowerer, call, access) {
1333
1846
  }
1334
1847
  const argNode = args[0];
1335
1848
  let list;
1336
- if (ts.isArrayLiteralExpression(argNode) && !argNode.elements.some(ts.isSpreadElement)) {
1337
- const elems = argNode.elements.map((el) => lowerer.lowerExprExpecting(el, BYTES_U8));
1849
+ if (ts.isArrayLiteralExpression(argNode) && !argNode.elements.nodes.some(ts.isSpreadElement)) {
1850
+ const elems = argNode.elements.nodes.map((el) => lowerer.lowerExprExpecting(el, BYTES_U8));
1338
1851
  list = { kind: "arrayLit", elems, type: arrayOf(BYTES_U8), loc };
1339
1852
  }
1340
1853
  else {
1341
1854
  list = lowerer.lowerExpr(argNode);
1342
1855
  if (!typeEquals(list.type, arrayOf(BYTES_U8))) {
1343
- lowerer.noLowering(`Buffer.concat of '${lowerer.fmt(list.type)}' values`, argNode, "one Uint8Array[]/Buffer[] value (or literal) is the lowered list shape");
1856
+ // Any other list (JavaScript's untyped `const chunks = []`, or a
1857
+ // union of arrays): the runtime checks it as Node does (an Array of
1858
+ // Uint8Arrays, the ERR_INVALID_ARG_TYPE errors otherwise) before
1859
+ // concatenating.
1860
+ const value = list.type.kind === "dyn" ? list : { kind: "dynFrom", value: list, type: DYN, loc };
1861
+ if (args.length === 2) {
1862
+ const total = lowerer.lowerExprExpecting(args[1], F64);
1863
+ return {
1864
+ kind: "libCall",
1865
+ fn: "buffer.concatLenDyn",
1866
+ args: [value, total],
1867
+ type: BYTES_U8,
1868
+ loc,
1869
+ };
1870
+ }
1871
+ return { kind: "libCall", fn: "buffer.concatDyn", args: [value], type: BYTES_U8, loc };
1344
1872
  }
1345
1873
  }
1346
1874
  if (args.length === 2) {
@@ -1406,7 +1934,9 @@ function lowerBufferStaticValue(lowerer, call, access) {
1406
1934
  // Untyped stream chunks retain the native checked value's Buffer
1407
1935
  // flavor. Plain bytes are Uint8Arrays at this boundary; inspecting
1408
1936
  // only the bytes tag would incorrectly identify them as Buffers.
1409
- const checked = isJsSourceFile(call.getSourceFile()) && v.kind === "dynCheck" && v.value.type.kind === "dyn"
1937
+ const checked = isJsSourceFile(ts.getSourceFileOfNode(call)) &&
1938
+ v.kind === "dynCheck" &&
1939
+ v.value.type.kind === "dyn"
1410
1940
  ? v.value
1411
1941
  : v;
1412
1942
  if (checked.type.kind === "dyn") {
@@ -1446,6 +1976,12 @@ function lowerBufferStaticValue(lowerer, call, access) {
1446
1976
  };
1447
1977
  }
1448
1978
  }
1979
+ // A typed view of unknown provenance (a Uint8Array parameter,
1980
+ // safe-buffer's Buffer.from result): Buffer is a brand of the view,
1981
+ // which the runtime keeps, so the test reads it.
1982
+ if (v.type.kind === "bytes") {
1983
+ return { kind: "libCall", fn: "buffer.isBranded", args: [v], type: BOOL, loc };
1984
+ }
1449
1985
  lowerer.noLowering(`Buffer.isBuffer of '${lowerer.fmt(v.type)}' values`, args[0], "the check lowers as a runtime tag test on unions with a Buffer arm — here the answer is static");
1450
1986
  }
1451
1987
  lowerer.noLowering("Buffer.isBuffer with this argument shape", call);