@scriptc/compiler 0.3.6 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1218) hide show
  1. package/ambient/scriptc-node-fallback.d.ts +682 -50
  2. package/ambient/scriptc.d.ts +134 -0
  3. package/dist/backend/cycle-analysis.d.ts +1 -1
  4. package/dist/backend/cycle-analysis.js +1 -0
  5. package/dist/backend/cycle-analysis.js.map +1 -1
  6. package/dist/backend/cycle-analysis.test.js +13 -1
  7. package/dist/backend/cycle-analysis.test.js.map +1 -1
  8. package/dist/backend/cycle-mutability.js +16 -5
  9. package/dist/backend/cycle-mutability.js.map +1 -1
  10. package/dist/backend/executable-features.js +13 -0
  11. package/dist/backend/executable-features.js.map +1 -1
  12. package/dist/backend/immutability.test.js +1 -1
  13. package/dist/backend/library-pack.js +6 -0
  14. package/dist/backend/library-pack.js.map +1 -1
  15. package/dist/backend/llvm/alloc.d.ts +41 -4
  16. package/dist/backend/llvm/alloc.js +138 -7
  17. package/dist/backend/llvm/alloc.js.map +1 -1
  18. package/dist/backend/llvm/alloc.test.js +30 -1
  19. package/dist/backend/llvm/alloc.test.js.map +1 -1
  20. package/dist/backend/llvm/appended-array-literals.test.js +1 -1
  21. package/dist/backend/llvm/array-search.test.js +1 -1
  22. package/dist/backend/llvm/blocks.d.ts +8 -0
  23. package/dist/backend/llvm/blocks.js +43 -1
  24. package/dist/backend/llvm/blocks.js.map +1 -1
  25. package/dist/backend/llvm/blocks.test.js +22 -1
  26. package/dist/backend/llvm/blocks.test.js.map +1 -1
  27. package/dist/backend/llvm/byte-numbers.js +15 -5
  28. package/dist/backend/llvm/byte-numbers.js.map +1 -1
  29. package/dist/backend/llvm/bytes-alias.d.ts +14 -0
  30. package/dist/backend/llvm/bytes-alias.js +20 -0
  31. package/dist/backend/llvm/bytes-alias.js.map +1 -0
  32. package/dist/backend/llvm/bytes-loop-versions.d.ts +86 -0
  33. package/dist/backend/llvm/bytes-loop-versions.js +506 -0
  34. package/dist/backend/llvm/bytes-loop-versions.js.map +1 -0
  35. package/dist/backend/llvm/bytes-loop-versions.test.d.ts +1 -0
  36. package/dist/backend/llvm/bytes-loop-versions.test.js +244 -0
  37. package/dist/backend/llvm/bytes-loop-versions.test.js.map +1 -0
  38. package/dist/backend/llvm/call-lifetimes.js +50 -1
  39. package/dist/backend/llvm/call-lifetimes.js.map +1 -1
  40. package/dist/backend/llvm/call-lifetimes.test.js +34 -0
  41. package/dist/backend/llvm/call-lifetimes.test.js.map +1 -1
  42. package/dist/backend/llvm/checked-narrows.test.js +1 -1
  43. package/dist/backend/llvm/checked-value-lifetimes.js +4 -1
  44. package/dist/backend/llvm/checked-value-lifetimes.js.map +1 -1
  45. package/dist/backend/llvm/classes.d.ts +11 -0
  46. package/dist/backend/llvm/classes.js +71 -14
  47. package/dist/backend/llvm/classes.js.map +1 -1
  48. package/dist/backend/llvm/classes.test.js +58 -8
  49. package/dist/backend/llvm/classes.test.js.map +1 -1
  50. package/dist/backend/llvm/common.js +1 -0
  51. package/dist/backend/llvm/common.js.map +1 -1
  52. package/dist/backend/llvm/constant-callbacks.d.ts +5 -1
  53. package/dist/backend/llvm/constant-callbacks.js +55 -12
  54. package/dist/backend/llvm/constant-callbacks.js.map +1 -1
  55. package/dist/backend/llvm/constant-callbacks.test.js +88 -1
  56. package/dist/backend/llvm/constant-callbacks.test.js.map +1 -1
  57. package/dist/backend/llvm/counted-loops.d.ts +4 -0
  58. package/dist/backend/llvm/counted-loops.js +37 -0
  59. package/dist/backend/llvm/counted-loops.js.map +1 -1
  60. package/dist/backend/llvm/dense-array-access.d.ts +12 -3
  61. package/dist/backend/llvm/dense-array-access.js +72 -14
  62. package/dist/backend/llvm/dense-array-access.js.map +1 -1
  63. package/dist/backend/llvm/dense-array-access.test.js +59 -3
  64. package/dist/backend/llvm/dense-array-access.test.js.map +1 -1
  65. package/dist/backend/llvm/dense-array-loops.d.ts +51 -0
  66. package/dist/backend/llvm/dense-array-loops.js +162 -0
  67. package/dist/backend/llvm/dense-array-loops.js.map +1 -0
  68. package/dist/backend/llvm/dense-array-loops.test.d.ts +1 -0
  69. package/dist/backend/llvm/dense-array-loops.test.js +128 -0
  70. package/dist/backend/llvm/dense-array-loops.test.js.map +1 -0
  71. package/dist/backend/llvm/dyn-handle-tags.test.d.ts +1 -0
  72. package/dist/backend/llvm/dyn-handle-tags.test.js +38 -0
  73. package/dist/backend/llvm/dyn-handle-tags.test.js.map +1 -0
  74. package/dist/backend/llvm/dyn.d.ts +28 -4
  75. package/dist/backend/llvm/dyn.js +293 -178
  76. package/dist/backend/llvm/dyn.js.map +1 -1
  77. package/dist/backend/llvm/emit-function.d.ts +64 -0
  78. package/dist/backend/llvm/emit-function.js +1190 -0
  79. package/dist/backend/llvm/emit-function.js.map +1 -0
  80. package/dist/backend/llvm/emit-module.d.ts +24 -0
  81. package/dist/backend/llvm/emit-module.js +1535 -0
  82. package/dist/backend/llvm/emit-module.js.map +1 -0
  83. package/dist/backend/llvm/emit-statements.d.ts +58 -0
  84. package/dist/backend/llvm/emit-statements.js +1964 -0
  85. package/dist/backend/llvm/emit-statements.js.map +1 -0
  86. package/dist/backend/llvm/emitter.d.ts +547 -283
  87. package/dist/backend/llvm/emitter.js +689 -4643
  88. package/dist/backend/llvm/emitter.js.map +1 -1
  89. package/dist/backend/llvm/emitter.test.js +57 -3
  90. package/dist/backend/llvm/emitter.test.js.map +1 -1
  91. package/dist/backend/llvm/expr-async.js +73 -46
  92. package/dist/backend/llvm/expr-async.js.map +1 -1
  93. package/dist/backend/llvm/expr-async.test.js +1 -1
  94. package/dist/backend/llvm/expr-bytes.d.ts +2 -0
  95. package/dist/backend/llvm/expr-bytes.js +76 -29
  96. package/dist/backend/llvm/expr-bytes.js.map +1 -1
  97. package/dist/backend/llvm/expr-callbacks.d.ts +6 -2
  98. package/dist/backend/llvm/expr-callbacks.js +48 -11
  99. package/dist/backend/llvm/expr-callbacks.js.map +1 -1
  100. package/dist/backend/llvm/expr-calls.d.ts +1 -1
  101. package/dist/backend/llvm/expr-calls.js +71 -53
  102. package/dist/backend/llvm/expr-calls.js.map +1 -1
  103. package/dist/backend/llvm/expr-calls.test.js +1 -1
  104. package/dist/backend/llvm/expr-containers.js +39 -15
  105. package/dist/backend/llvm/expr-containers.js.map +1 -1
  106. package/dist/backend/llvm/expr-control.js +16 -16
  107. package/dist/backend/llvm/expr-control.js.map +1 -1
  108. package/dist/backend/llvm/expr-dynamic.d.ts +3 -0
  109. package/dist/backend/llvm/expr-dynamic.js +67 -62
  110. package/dist/backend/llvm/expr-dynamic.js.map +1 -1
  111. package/dist/backend/llvm/expr-primitives.js +121 -25
  112. package/dist/backend/llvm/expr-primitives.js.map +1 -1
  113. package/dist/backend/llvm/expr-primitives.test.js +2 -2
  114. package/dist/backend/llvm/expr-records.d.ts +1 -1
  115. package/dist/backend/llvm/expr-records.js +32 -11
  116. package/dist/backend/llvm/expr-records.js.map +1 -1
  117. package/dist/backend/llvm/expr-stream-bridges.js +54 -12
  118. package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
  119. package/dist/backend/llvm/expr-stream-bridges.test.js +2 -2
  120. package/dist/backend/llvm/expr-stream-callbacks.js +22 -1
  121. package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
  122. package/dist/backend/llvm/int32-abi.test.js +2 -2
  123. package/dist/backend/llvm/integer-clones.test.js +3 -3
  124. package/dist/backend/llvm/integer-remainder.d.ts +34 -13
  125. package/dist/backend/llvm/integer-remainder.js +156 -22
  126. package/dist/backend/llvm/integer-remainder.js.map +1 -1
  127. package/dist/backend/llvm/intern-tables.test.js +1 -1
  128. package/dist/backend/llvm/jsval-encoding.d.ts +21 -0
  129. package/dist/backend/llvm/jsval-encoding.js +20 -0
  130. package/dist/backend/llvm/jsval-encoding.js.map +1 -0
  131. package/dist/backend/llvm/jsval.d.ts +12 -0
  132. package/dist/backend/llvm/jsval.js +488 -0
  133. package/dist/backend/llvm/jsval.js.map +1 -0
  134. package/dist/backend/llvm/lazy-captures.d.ts +12 -2
  135. package/dist/backend/llvm/lazy-captures.js +39 -17
  136. package/dist/backend/llvm/lazy-captures.js.map +1 -1
  137. package/dist/backend/llvm/lib-abi.js +1 -1
  138. package/dist/backend/llvm/lib-abi.js.map +1 -1
  139. package/dist/backend/llvm/lib-connect.js +1 -1
  140. package/dist/backend/llvm/lib-connect.js.map +1 -1
  141. package/dist/backend/llvm/lib-datagram.js +14 -8
  142. package/dist/backend/llvm/lib-datagram.js.map +1 -1
  143. package/dist/backend/llvm/lib-dispatch.js +189 -23
  144. package/dist/backend/llvm/lib-dispatch.js.map +1 -1
  145. package/dist/backend/llvm/lib-filesystem.js +42 -13
  146. package/dist/backend/llvm/lib-filesystem.js.map +1 -1
  147. package/dist/backend/llvm/lib-http2.js +3 -3
  148. package/dist/backend/llvm/lib-http2.js.map +1 -1
  149. package/dist/backend/llvm/lib-lookup.js +2 -2
  150. package/dist/backend/llvm/lib-lookup.js.map +1 -1
  151. package/dist/backend/llvm/lib-network.js +56 -22
  152. package/dist/backend/llvm/lib-network.js.map +1 -1
  153. package/dist/backend/llvm/lib-process.js +90 -50
  154. package/dist/backend/llvm/lib-process.js.map +1 -1
  155. package/dist/backend/llvm/lib-shared.d.ts +12 -0
  156. package/dist/backend/llvm/lib-shared.js +187 -6
  157. package/dist/backend/llvm/lib-shared.js.map +1 -1
  158. package/dist/backend/llvm/lib-stream.js +46 -16
  159. package/dist/backend/llvm/lib-stream.js.map +1 -1
  160. package/dist/backend/llvm/lib-test.js +43 -7
  161. package/dist/backend/llvm/lib-test.js.map +1 -1
  162. package/dist/backend/llvm/lib-tls.js +4 -9
  163. package/dist/backend/llvm/lib-tls.js.map +1 -1
  164. package/dist/backend/llvm/local-array-reads.js +2 -2
  165. package/dist/backend/llvm/local-array-reads.test.js +1 -1
  166. package/dist/backend/llvm/local-extents.d.ts +19 -0
  167. package/dist/backend/llvm/local-extents.js +169 -0
  168. package/dist/backend/llvm/local-extents.js.map +1 -0
  169. package/dist/backend/llvm/local-extents.test.d.ts +1 -0
  170. package/dist/backend/llvm/local-extents.test.js +92 -0
  171. package/dist/backend/llvm/local-extents.test.js.map +1 -0
  172. package/dist/backend/llvm/local-union-storage.js +7 -7
  173. package/dist/backend/llvm/local-union-storage.js.map +1 -1
  174. package/dist/backend/llvm/local-union-storage.test.js +2 -2
  175. package/dist/backend/llvm/map-entry-fusion.test.js +1 -1
  176. package/dist/backend/llvm/map-number-lookup.js +2 -2
  177. package/dist/backend/llvm/map-number-lookup.test.js +2 -2
  178. package/dist/backend/llvm/map-read-lifetimes.test.js +2 -2
  179. package/dist/backend/llvm/narrow-guards.d.ts +38 -0
  180. package/dist/backend/llvm/narrow-guards.js +151 -0
  181. package/dist/backend/llvm/narrow-guards.js.map +1 -0
  182. package/dist/backend/llvm/nullable-unions.d.ts +64 -6
  183. package/dist/backend/llvm/nullable-unions.js +103 -6
  184. package/dist/backend/llvm/nullable-unions.js.map +1 -1
  185. package/dist/backend/llvm/nullable-unions.test.d.ts +1 -0
  186. package/dist/backend/llvm/nullable-unions.test.js +65 -0
  187. package/dist/backend/llvm/nullable-unions.test.js.map +1 -0
  188. package/dist/backend/llvm/publish.d.ts +4 -0
  189. package/dist/backend/llvm/publish.js +14 -2
  190. package/dist/backend/llvm/publish.js.map +1 -1
  191. package/dist/backend/llvm/publish.test.js +1 -1
  192. package/dist/backend/llvm/receivers.d.ts +31 -0
  193. package/dist/backend/llvm/receivers.js +395 -0
  194. package/dist/backend/llvm/receivers.js.map +1 -0
  195. package/dist/backend/llvm/record-results.d.ts +12 -1
  196. package/dist/backend/llvm/record-results.js +64 -4
  197. package/dist/backend/llvm/record-results.js.map +1 -1
  198. package/dist/backend/llvm/reference-effects.js +9 -0
  199. package/dist/backend/llvm/reference-effects.js.map +1 -1
  200. package/dist/backend/llvm/reference-writes.d.ts +4 -0
  201. package/dist/backend/llvm/reference-writes.js +142 -6
  202. package/dist/backend/llvm/reference-writes.js.map +1 -1
  203. package/dist/backend/llvm/reference-writes.test.d.ts +1 -0
  204. package/dist/backend/llvm/reference-writes.test.js +88 -0
  205. package/dist/backend/llvm/reference-writes.test.js.map +1 -0
  206. package/dist/backend/llvm/regex-matchers.d.ts +8 -0
  207. package/dist/backend/llvm/regex-matchers.js +33 -0
  208. package/dist/backend/llvm/regex-matchers.js.map +1 -1
  209. package/dist/backend/llvm/regex-matchers.test.js +23 -1
  210. package/dist/backend/llvm/regex-matchers.test.js.map +1 -1
  211. package/dist/backend/llvm/regions.d.ts +1 -1
  212. package/dist/backend/llvm/regions.js +9 -6
  213. package/dist/backend/llvm/regions.js.map +1 -1
  214. package/dist/backend/llvm/regions.test.js +1 -1
  215. package/dist/backend/llvm/shapes.d.ts +66 -43
  216. package/dist/backend/llvm/shapes.js +280 -21
  217. package/dist/backend/llvm/shapes.js.map +1 -1
  218. package/dist/backend/llvm/shapes.test.js +37 -3
  219. package/dist/backend/llvm/shapes.test.js.map +1 -1
  220. package/dist/backend/llvm/split-loops.js +2 -2
  221. package/dist/backend/llvm/split-loops.js.map +1 -1
  222. package/dist/backend/llvm/stack-objects.d.ts +26 -6
  223. package/dist/backend/llvm/stack-objects.js +133 -10
  224. package/dist/backend/llvm/stack-objects.js.map +1 -1
  225. package/dist/backend/llvm/stack-objects.test.js +55 -1
  226. package/dist/backend/llvm/stack-objects.test.js.map +1 -1
  227. package/dist/backend/llvm/stack-unions.test.js +1 -1
  228. package/dist/backend/llvm/string-construction.test.js +1 -1
  229. package/dist/backend/llvm/string-lifetimes.test.js +15 -14
  230. package/dist/backend/llvm/string-lifetimes.test.js.map +1 -1
  231. package/dist/backend/llvm/string-slices.d.ts +25 -0
  232. package/dist/backend/llvm/string-slices.js +207 -1
  233. package/dist/backend/llvm/string-slices.js.map +1 -1
  234. package/dist/backend/llvm/string-slices.test.js +139 -2
  235. package/dist/backend/llvm/string-slices.test.js.map +1 -1
  236. package/dist/backend/llvm/switch-dispatch.test.js +2 -2
  237. package/dist/backend/llvm/thread-slots.d.ts +5 -0
  238. package/dist/backend/llvm/thread-slots.js +142 -0
  239. package/dist/backend/llvm/thread-slots.js.map +1 -0
  240. package/dist/backend/llvm/thread-slots.test.d.ts +1 -0
  241. package/dist/backend/llvm/thread-slots.test.js +110 -0
  242. package/dist/backend/llvm/thread-slots.test.js.map +1 -0
  243. package/dist/backend/llvm/union-repr.d.ts +7 -7
  244. package/dist/backend/llvm/union-repr.js +18 -2
  245. package/dist/backend/llvm/union-repr.js.map +1 -1
  246. package/dist/backend/llvm/union-retype.test.js +17 -3
  247. package/dist/backend/llvm/union-retype.test.js.map +1 -1
  248. package/dist/backend/llvm/walkers.d.ts +2 -2
  249. package/dist/backend/llvm/walkers.js +51 -26
  250. package/dist/backend/llvm/walkers.js.map +1 -1
  251. package/dist/backend/llvm/wasm-modules.d.ts +16 -0
  252. package/dist/backend/llvm/wasm-modules.js +66 -0
  253. package/dist/backend/llvm/wasm-modules.js.map +1 -0
  254. package/dist/backend/llvm/wrapping-sums.d.ts +7 -0
  255. package/dist/backend/llvm/wrapping-sums.js +11 -3
  256. package/dist/backend/llvm/wrapping-sums.js.map +1 -1
  257. package/dist/backend/mangle.d.ts +7 -0
  258. package/dist/backend/mangle.js +11 -0
  259. package/dist/backend/mangle.js.map +1 -1
  260. package/dist/backend/may-throw.d.ts +3 -0
  261. package/dist/backend/may-throw.js +4 -2
  262. package/dist/backend/may-throw.js.map +1 -1
  263. package/dist/backend/may-throw.test.js +1 -1
  264. package/dist/backend/native/contracts.d.ts +37 -0
  265. package/dist/backend/native/executable.js +192 -137
  266. package/dist/backend/native/executable.js.map +1 -1
  267. package/dist/backend/native/library.js +1 -0
  268. package/dist/backend/native/library.js.map +1 -1
  269. package/dist/backend/native/runtime-inputs.d.ts +1 -1
  270. package/dist/backend/native/runtime-inputs.js +1 -0
  271. package/dist/backend/native/runtime-inputs.js.map +1 -1
  272. package/dist/backend/native-link-info-core.d.ts +30 -0
  273. package/dist/backend/native-link-info-core.js.map +1 -1
  274. package/dist/backend/publication.test.js +1 -1
  275. package/dist/backend/runtime-pack-core.d.ts +9 -1
  276. package/dist/backend/runtime-pack-core.js +10 -1
  277. package/dist/backend/runtime-pack-core.js.map +1 -1
  278. package/dist/backend/runtime-pack-native.js +1 -1
  279. package/dist/backend/runtime-pack-native.js.map +1 -1
  280. package/dist/backend/runtime-pack-native.test.d.ts +1 -0
  281. package/dist/backend/runtime-pack-native.test.js +31 -0
  282. package/dist/backend/runtime-pack-native.test.js.map +1 -0
  283. package/dist/backend/runtime-pack-targets.test.js +5 -0
  284. package/dist/backend/runtime-pack-targets.test.js.map +1 -1
  285. package/dist/backend/runtime-pack.test.js +5 -0
  286. package/dist/backend/runtime-pack.test.js.map +1 -1
  287. package/dist/backend/stack-observations.d.ts +22 -0
  288. package/dist/backend/stack-observations.js +382 -0
  289. package/dist/backend/stack-observations.js.map +1 -0
  290. package/dist/backend/stack-observations.test.d.ts +1 -0
  291. package/dist/backend/stack-observations.test.js +233 -0
  292. package/dist/backend/stack-observations.test.js.map +1 -0
  293. package/dist/backend/target-diagnostics.js +8 -0
  294. package/dist/backend/target-diagnostics.js.map +1 -1
  295. package/dist/backend/target-diagnostics.test.js +1 -1
  296. package/dist/backend/warm-cache.js +5 -0
  297. package/dist/backend/warm-cache.js.map +1 -1
  298. package/dist/backend/young-nursery.d.ts +7 -0
  299. package/dist/backend/young-nursery.js +10 -0
  300. package/dist/backend/young-nursery.js.map +1 -0
  301. package/dist/cli/command.js +44 -4
  302. package/dist/cli/command.js.map +1 -1
  303. package/dist/cli/usage.d.ts +11 -1
  304. package/dist/cli/usage.js +20 -1
  305. package/dist/cli/usage.js.map +1 -1
  306. package/dist/compat/fetch-profile.js +10 -1
  307. package/dist/compat/fetch-profile.js.map +1 -1
  308. package/dist/compile-types.d.ts +13 -0
  309. package/dist/contracts/check.js +24 -6
  310. package/dist/contracts/check.js.map +1 -1
  311. package/dist/contracts/int32-elements.d.ts +115 -0
  312. package/dist/contracts/int32-elements.js +1179 -0
  313. package/dist/contracts/int32-elements.js.map +1 -0
  314. package/dist/coverage/report.d.ts +16 -0
  315. package/dist/coverage/report.js +182 -1
  316. package/dist/coverage/report.js.map +1 -1
  317. package/dist/coverage/surface-manifest.js +16 -3
  318. package/dist/coverage/surface-manifest.js.map +1 -1
  319. package/dist/coverage/verdict-cache.d.ts +2 -0
  320. package/dist/coverage/verdict-cache.js +12 -0
  321. package/dist/coverage/verdict-cache.js.map +1 -1
  322. package/dist/coverage/verdict-cache.test.js +2 -1
  323. package/dist/coverage/verdict-cache.test.js.map +1 -1
  324. package/dist/diagnostics/diagnostic.d.ts +10 -6
  325. package/dist/diagnostics/diagnostic.js +29 -21
  326. package/dist/diagnostics/diagnostic.js.map +1 -1
  327. package/dist/diagnostics/envelope.d.ts +39 -2
  328. package/dist/diagnostics/envelope.js.map +1 -1
  329. package/dist/diagnostics/render.d.ts +7 -0
  330. package/dist/diagnostics/render.js +50 -13
  331. package/dist/diagnostics/render.js.map +1 -1
  332. package/dist/diagnostics/render.test.d.ts +1 -0
  333. package/dist/diagnostics/render.test.js +49 -0
  334. package/dist/diagnostics/render.test.js.map +1 -0
  335. package/dist/executable/executable-cache.d.ts +17 -0
  336. package/dist/executable/executable-cache.js +13 -1
  337. package/dist/executable/executable-cache.js.map +1 -1
  338. package/dist/executable/executable-cache.test.js +7 -1
  339. package/dist/executable/executable-cache.test.js.map +1 -1
  340. package/dist/executable/prepare.js +2 -1
  341. package/dist/executable/prepare.js.map +1 -1
  342. package/dist/frontend/analysis.js +6 -1
  343. package/dist/frontend/analysis.js.map +1 -1
  344. package/dist/frontend/builtin-modules.d.ts +16 -2
  345. package/dist/frontend/builtin-modules.js +40 -7
  346. package/dist/frontend/builtin-modules.js.map +1 -1
  347. package/dist/frontend/cjs-syntax.js +52 -51
  348. package/dist/frontend/cjs-syntax.js.map +1 -1
  349. package/dist/frontend/contract-types.d.ts +3 -0
  350. package/dist/frontend/contract-types.js +36 -7
  351. package/dist/frontend/contract-types.js.map +1 -1
  352. package/dist/frontend/experimental-import.d.ts +5 -1
  353. package/dist/frontend/experimental-import.js +26 -7
  354. package/dist/frontend/experimental-import.js.map +1 -1
  355. package/dist/frontend/fork-target.js +20 -22
  356. package/dist/frontend/fork-target.js.map +1 -1
  357. package/dist/frontend/fork-target.test.js +2 -1
  358. package/dist/frontend/fork-target.test.js.map +1 -1
  359. package/dist/frontend/function-completion.js +6 -6
  360. package/dist/frontend/function-completion.js.map +1 -1
  361. package/dist/frontend/helper-tokens.js +15 -3
  362. package/dist/frontend/helper-tokens.js.map +1 -1
  363. package/dist/frontend/helper-tokens.test.js +7 -1
  364. package/dist/frontend/helper-tokens.test.js.map +1 -1
  365. package/dist/frontend/inferred-js-diagnostics.js +14 -17
  366. package/dist/frontend/inferred-js-diagnostics.js.map +1 -1
  367. package/dist/frontend/input-tracker.d.ts +3 -0
  368. package/dist/frontend/input-tracker.js +32 -3
  369. package/dist/frontend/input-tracker.js.map +1 -1
  370. package/dist/frontend/lib-contract.js +36 -32
  371. package/dist/frontend/lib-contract.js.map +1 -1
  372. package/dist/frontend/lib-exports.js +3 -3
  373. package/dist/frontend/lib-exports.js.map +1 -1
  374. package/dist/frontend/lowering/array-values.d.ts +8 -3
  375. package/dist/frontend/lowering/array-values.js +60 -11
  376. package/dist/frontend/lowering/array-values.js.map +1 -1
  377. package/dist/frontend/lowering/assert-instances.js +4 -4
  378. package/dist/frontend/lowering/assert-instances.js.map +1 -1
  379. package/dist/frontend/lowering/assertion-identity.d.ts +12 -0
  380. package/dist/frontend/lowering/assertion-identity.js +70 -0
  381. package/dist/frontend/lowering/assertion-identity.js.map +1 -0
  382. package/dist/frontend/lowering/assertion-members.d.ts +28 -0
  383. package/dist/frontend/lowering/assertion-members.js +185 -0
  384. package/dist/frontend/lowering/assertion-members.js.map +1 -0
  385. package/dist/frontend/lowering/binding-analysis.js +27 -20
  386. package/dist/frontend/lowering/binding-analysis.js.map +1 -1
  387. package/dist/frontend/lowering/builtin-calls.js +63 -5
  388. package/dist/frontend/lowering/builtin-calls.js.map +1 -1
  389. package/dist/frontend/lowering/builtin-function-fences.d.ts +14 -0
  390. package/dist/frontend/lowering/builtin-function-fences.js +42 -0
  391. package/dist/frontend/lowering/builtin-function-fences.js.map +1 -0
  392. package/dist/frontend/lowering/builtins/arguments.js +1 -1
  393. package/dist/frontend/lowering/builtins/arguments.js.map +1 -1
  394. package/dist/frontend/lowering/builtins/async-context.js +53 -52
  395. package/dist/frontend/lowering/builtins/async-context.js.map +1 -1
  396. package/dist/frontend/lowering/builtins/atomics.js +6 -6
  397. package/dist/frontend/lowering/builtins/atomics.js.map +1 -1
  398. package/dist/frontend/lowering/builtins/blob.js +8 -6
  399. package/dist/frontend/lowering/builtins/blob.js.map +1 -1
  400. package/dist/frontend/lowering/builtins/builtin-class-dyn.d.ts +23 -0
  401. package/dist/frontend/lowering/builtins/builtin-class-dyn.js +156 -0
  402. package/dist/frontend/lowering/builtins/builtin-class-dyn.js.map +1 -0
  403. package/dist/frontend/lowering/builtins/callable-aliases.js +16 -5
  404. package/dist/frontend/lowering/builtins/callable-aliases.js.map +1 -1
  405. package/dist/frontend/lowering/builtins/child-process-async.js +7 -7
  406. package/dist/frontend/lowering/builtins/child-process-async.js.map +1 -1
  407. package/dist/frontend/lowering/builtins/child-process-methods.d.ts +6 -4
  408. package/dist/frontend/lowering/builtins/child-process-methods.js +310 -57
  409. package/dist/frontend/lowering/builtins/child-process-methods.js.map +1 -1
  410. package/dist/frontend/lowering/builtins/child-process-sync.js +16 -10
  411. package/dist/frontend/lowering/builtins/child-process-sync.js.map +1 -1
  412. package/dist/frontend/lowering/builtins/child-process.d.ts +6 -4
  413. package/dist/frontend/lowering/builtins/child-process.js +85 -61
  414. package/dist/frontend/lowering/builtins/child-process.js.map +1 -1
  415. package/dist/frontend/lowering/builtins/class-values.d.ts +60 -0
  416. package/dist/frontend/lowering/builtins/class-values.js +226 -0
  417. package/dist/frontend/lowering/builtins/class-values.js.map +1 -0
  418. package/dist/frontend/lowering/builtins/compression.d.ts +9 -0
  419. package/dist/frontend/lowering/builtins/compression.js +107 -44
  420. package/dist/frontend/lowering/builtins/compression.js.map +1 -1
  421. package/dist/frontend/lowering/builtins/constants.d.ts +9 -1
  422. package/dist/frontend/lowering/builtins/constants.js +28 -7
  423. package/dist/frontend/lowering/builtins/constants.js.map +1 -1
  424. package/dist/frontend/lowering/builtins/crypto.d.ts +19 -0
  425. package/dist/frontend/lowering/builtins/crypto.js +211 -37
  426. package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
  427. package/dist/frontend/lowering/builtins/dates.d.ts +7 -1
  428. package/dist/frontend/lowering/builtins/dates.js +92 -16
  429. package/dist/frontend/lowering/builtins/dates.js.map +1 -1
  430. package/dist/frontend/lowering/builtins/disposable-stack.d.ts +18 -0
  431. package/dist/frontend/lowering/builtins/disposable-stack.js +137 -0
  432. package/dist/frontend/lowering/builtins/disposable-stack.js.map +1 -0
  433. package/dist/frontend/lowering/builtins/environment.js +3 -3
  434. package/dist/frontend/lowering/builtins/environment.js.map +1 -1
  435. package/dist/frontend/lowering/builtins/errors.d.ts +14 -10
  436. package/dist/frontend/lowering/builtins/errors.js +169 -3
  437. package/dist/frontend/lowering/builtins/errors.js.map +1 -1
  438. package/dist/frontend/lowering/builtins/filesystem-calls.js +128 -116
  439. package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
  440. package/dist/frontend/lowering/builtins/filesystem.js +77 -77
  441. package/dist/frontend/lowering/builtins/filesystem.js.map +1 -1
  442. package/dist/frontend/lowering/builtins/fs-glob.js +3 -3
  443. package/dist/frontend/lowering/builtins/fs-glob.js.map +1 -1
  444. package/dist/frontend/lowering/builtins/fs-streams.js +10 -11
  445. package/dist/frontend/lowering/builtins/fs-streams.js.map +1 -1
  446. package/dist/frontend/lowering/builtins/ipc.js +45 -8
  447. package/dist/frontend/lowering/builtins/ipc.js.map +1 -1
  448. package/dist/frontend/lowering/builtins/json.js +232 -24
  449. package/dist/frontend/lowering/builtins/json.js.map +1 -1
  450. package/dist/frontend/lowering/builtins/key-object.js +4 -4
  451. package/dist/frontend/lowering/builtins/key-object.js.map +1 -1
  452. package/dist/frontend/lowering/builtins/module-bindings.d.ts +8 -0
  453. package/dist/frontend/lowering/builtins/module-bindings.js +71 -22
  454. package/dist/frontend/lowering/builtins/module-bindings.js.map +1 -1
  455. package/dist/frontend/lowering/builtins/module-calls.js +55 -44
  456. package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
  457. package/dist/frontend/lowering/builtins/module-resolution.d.ts +4 -3
  458. package/dist/frontend/lowering/builtins/module-resolution.js +24 -23
  459. package/dist/frontend/lowering/builtins/module-resolution.js.map +1 -1
  460. package/dist/frontend/lowering/builtins/navigator.d.ts +13 -0
  461. package/dist/frontend/lowering/builtins/navigator.js +40 -0
  462. package/dist/frontend/lowering/builtins/navigator.js.map +1 -0
  463. package/dist/frontend/lowering/builtins/net-address.d.ts +19 -0
  464. package/dist/frontend/lowering/builtins/net-address.js +156 -0
  465. package/dist/frontend/lowering/builtins/net-address.js.map +1 -0
  466. package/dist/frontend/lowering/builtins/numbers.js +25 -9
  467. package/dist/frontend/lowering/builtins/numbers.js.map +1 -1
  468. package/dist/frontend/lowering/builtins/operating-system.d.ts +4 -0
  469. package/dist/frontend/lowering/builtins/operating-system.js +25 -12
  470. package/dist/frontend/lowering/builtins/operating-system.js.map +1 -1
  471. package/dist/frontend/lowering/builtins/performance.d.ts +12 -0
  472. package/dist/frontend/lowering/builtins/performance.js +259 -8
  473. package/dist/frontend/lowering/builtins/performance.js.map +1 -1
  474. package/dist/frontend/lowering/builtins/process.d.ts +32 -1
  475. package/dist/frontend/lowering/builtins/process.js +461 -99
  476. package/dist/frontend/lowering/builtins/process.js.map +1 -1
  477. package/dist/frontend/lowering/builtins/promises.d.ts +5 -1
  478. package/dist/frontend/lowering/builtins/promises.js +326 -43
  479. package/dist/frontend/lowering/builtins/promises.js.map +1 -1
  480. package/dist/frontend/lowering/builtins/promisify-callback.d.ts +37 -0
  481. package/dist/frontend/lowering/builtins/promisify-callback.js +320 -0
  482. package/dist/frontend/lowering/builtins/promisify-callback.js.map +1 -0
  483. package/dist/frontend/lowering/builtins/properties.js +37 -1
  484. package/dist/frontend/lowering/builtins/properties.js.map +1 -1
  485. package/dist/frontend/lowering/builtins/querystring.js +14 -14
  486. package/dist/frontend/lowering/builtins/querystring.js.map +1 -1
  487. package/dist/frontend/lowering/builtins/readline.d.ts +12 -2
  488. package/dist/frontend/lowering/builtins/readline.js +136 -39
  489. package/dist/frontend/lowering/builtins/readline.js.map +1 -1
  490. package/dist/frontend/lowering/builtins/receiver-types.js +3 -5
  491. package/dist/frontend/lowering/builtins/receiver-types.js.map +1 -1
  492. package/dist/frontend/lowering/builtins/reflection.js +16 -14
  493. package/dist/frontend/lowering/builtins/reflection.js.map +1 -1
  494. package/dist/frontend/lowering/builtins/runtime-constructor.d.ts +26 -0
  495. package/dist/frontend/lowering/builtins/runtime-constructor.js +165 -0
  496. package/dist/frontend/lowering/builtins/runtime-constructor.js.map +1 -0
  497. package/dist/frontend/lowering/builtins/strings.js +101 -12
  498. package/dist/frontend/lowering/builtins/strings.js.map +1 -1
  499. package/dist/frontend/lowering/builtins/text-codecs.js +41 -38
  500. package/dist/frontend/lowering/builtins/text-codecs.js.map +1 -1
  501. package/dist/frontend/lowering/builtins/timers.js +75 -30
  502. package/dist/frontend/lowering/builtins/timers.js.map +1 -1
  503. package/dist/frontend/lowering/builtins/url.d.ts +3 -0
  504. package/dist/frontend/lowering/builtins/url.js +120 -17
  505. package/dist/frontend/lowering/builtins/url.js.map +1 -1
  506. package/dist/frontend/lowering/builtins/util-types.js +20 -4
  507. package/dist/frontend/lowering/builtins/util-types.js.map +1 -1
  508. package/dist/frontend/lowering/builtins/v8.d.ts +11 -0
  509. package/dist/frontend/lowering/builtins/v8.js +105 -0
  510. package/dist/frontend/lowering/builtins/v8.js.map +1 -0
  511. package/dist/frontend/lowering/builtins/webassembly.d.ts +33 -0
  512. package/dist/frontend/lowering/builtins/webassembly.js +388 -0
  513. package/dist/frontend/lowering/builtins/webassembly.js.map +1 -0
  514. package/dist/frontend/lowering/builtins/webcrypto.d.ts +20 -0
  515. package/dist/frontend/lowering/builtins/webcrypto.js +112 -0
  516. package/dist/frontend/lowering/builtins/webcrypto.js.map +1 -0
  517. package/dist/frontend/lowering/builtins/workers.d.ts +12 -0
  518. package/dist/frontend/lowering/builtins/workers.js +193 -8
  519. package/dist/frontend/lowering/builtins/workers.js.map +1 -1
  520. package/dist/frontend/lowering/call-arguments.js +69 -14
  521. package/dist/frontend/lowering/call-arguments.js.map +1 -1
  522. package/dist/frontend/lowering/call-signatures.d.ts +19 -1
  523. package/dist/frontend/lowering/call-signatures.js +254 -47
  524. package/dist/frontend/lowering/call-signatures.js.map +1 -1
  525. package/dist/frontend/lowering/checked-promise-all.d.ts +3 -0
  526. package/dist/frontend/lowering/checked-promise-all.js +1 -1
  527. package/dist/frontend/lowering/checked-promise-all.js.map +1 -1
  528. package/dist/frontend/lowering/cjs-exports-object.d.ts +53 -0
  529. package/dist/frontend/lowering/cjs-exports-object.js +528 -0
  530. package/dist/frontend/lowering/cjs-exports-object.js.map +1 -0
  531. package/dist/frontend/lowering/cjs-inline-require.d.ts +86 -0
  532. package/dist/frontend/lowering/cjs-inline-require.js +314 -0
  533. package/dist/frontend/lowering/cjs-inline-require.js.map +1 -0
  534. package/dist/frontend/lowering/cjs-tsc-interop.d.ts +28 -0
  535. package/dist/frontend/lowering/cjs-tsc-interop.js +208 -0
  536. package/dist/frontend/lowering/cjs-tsc-interop.js.map +1 -0
  537. package/dist/frontend/lowering/class-attributes.d.ts +19 -0
  538. package/dist/frontend/lowering/class-attributes.js +378 -0
  539. package/dist/frontend/lowering/class-attributes.js.map +1 -0
  540. package/dist/frontend/lowering/class-callbacks.d.ts +3 -1
  541. package/dist/frontend/lowering/class-callbacks.js +21 -10
  542. package/dist/frontend/lowering/class-callbacks.js.map +1 -1
  543. package/dist/frontend/lowering/class-construction.js +49 -4
  544. package/dist/frontend/lowering/class-construction.js.map +1 -1
  545. package/dist/frontend/lowering/class-descriptors.d.ts +2 -0
  546. package/dist/frontend/lowering/class-descriptors.js +8 -8
  547. package/dist/frontend/lowering/class-descriptors.js.map +1 -1
  548. package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +64 -0
  549. package/dist/frontend/lowering/class-dynamic-dispatch.js +1115 -89
  550. package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
  551. package/dist/frontend/lowering/class-instance-constructor.js +1 -1
  552. package/dist/frontend/lowering/class-instance-constructor.js.map +1 -1
  553. package/dist/frontend/lowering/class-iterables.d.ts +11 -0
  554. package/dist/frontend/lowering/class-iterables.js +31 -0
  555. package/dist/frontend/lowering/class-iterables.js.map +1 -0
  556. package/dist/frontend/lowering/class-method-mutations.js +73 -35
  557. package/dist/frontend/lowering/class-method-mutations.js.map +1 -1
  558. package/dist/frontend/lowering/class-method-values.js +56 -10
  559. package/dist/frontend/lowering/class-method-values.js.map +1 -1
  560. package/dist/frontend/lowering/class-protocol-dispatch.js +24 -22
  561. package/dist/frontend/lowering/class-protocol-dispatch.js.map +1 -1
  562. package/dist/frontend/lowering/class-protocols.js +25 -44
  563. package/dist/frontend/lowering/class-protocols.js.map +1 -1
  564. package/dist/frontend/lowering/class-prototypes.d.ts +6 -0
  565. package/dist/frontend/lowering/class-prototypes.js +80 -18
  566. package/dist/frontend/lowering/class-prototypes.js.map +1 -1
  567. package/dist/frontend/lowering/class-runtime-statics.js +1 -1
  568. package/dist/frontend/lowering/class-runtime-statics.js.map +1 -1
  569. package/dist/frontend/lowering/class-static-data.js +2 -2
  570. package/dist/frontend/lowering/class-static-data.js.map +1 -1
  571. package/dist/frontend/lowering/class-to-primitive.d.ts +25 -0
  572. package/dist/frontend/lowering/class-to-primitive.js +261 -0
  573. package/dist/frontend/lowering/class-to-primitive.js.map +1 -0
  574. package/dist/frontend/lowering/class-unions.d.ts +25 -0
  575. package/dist/frontend/lowering/class-unions.js +102 -1
  576. package/dist/frontend/lowering/class-unions.js.map +1 -1
  577. package/dist/frontend/lowering/code-generation.d.ts +14 -0
  578. package/dist/frontend/lowering/code-generation.js +127 -0
  579. package/dist/frontend/lowering/code-generation.js.map +1 -0
  580. package/dist/frontend/lowering/coercions/function-adapters.d.ts +16 -2
  581. package/dist/frontend/lowering/coercions/function-adapters.js +145 -3
  582. package/dist/frontend/lowering/coercions/function-adapters.js.map +1 -1
  583. package/dist/frontend/lowering/coercions/structural-plans.js +25 -3
  584. package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -1
  585. package/dist/frontend/lowering/coercions/structural.js +35 -3
  586. package/dist/frontend/lowering/coercions/structural.js.map +1 -1
  587. package/dist/frontend/lowering/coercions/unions.d.ts +15 -0
  588. package/dist/frontend/lowering/coercions/unions.js +57 -1
  589. package/dist/frontend/lowering/coercions/unions.js.map +1 -1
  590. package/dist/frontend/lowering/collection-ingestion.js +2 -2
  591. package/dist/frontend/lowering/collection-ingestion.js.map +1 -1
  592. package/dist/frontend/lowering/collection-narrowing.js +2 -4
  593. package/dist/frontend/lowering/collection-narrowing.js.map +1 -1
  594. package/dist/frontend/lowering/construction-escapes.js +8 -8
  595. package/dist/frontend/lowering/construction-escapes.js.map +1 -1
  596. package/dist/frontend/lowering/construction-escapes.test.js +4 -4
  597. package/dist/frontend/lowering/construction-escapes.test.js.map +1 -1
  598. package/dist/frontend/lowering/constructor-returns.d.ts +61 -0
  599. package/dist/frontend/lowering/constructor-returns.js +477 -0
  600. package/dist/frontend/lowering/constructor-returns.js.map +1 -0
  601. package/dist/frontend/lowering/containers/array-callback-call.js +1 -1
  602. package/dist/frontend/lowering/containers/array-callback-call.js.map +1 -1
  603. package/dist/frontend/lowering/containers/array-callbacks.d.ts +9 -0
  604. package/dist/frontend/lowering/containers/array-callbacks.js +266 -100
  605. package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
  606. package/dist/frontend/lowering/containers/array-concat.js +1 -1
  607. package/dist/frontend/lowering/containers/array-concat.js.map +1 -1
  608. package/dist/frontend/lowering/containers/array-construction.d.ts +0 -1
  609. package/dist/frontend/lowering/containers/array-construction.js +51 -13
  610. package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
  611. package/dist/frontend/lowering/containers/array-from-async.d.ts +6 -5
  612. package/dist/frontend/lowering/containers/array-from-async.js +159 -14
  613. package/dist/frontend/lowering/containers/array-from-async.js.map +1 -1
  614. package/dist/frontend/lowering/containers/array-methods.js +89 -77
  615. package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
  616. package/dist/frontend/lowering/containers/array-pipelines.js +1 -0
  617. package/dist/frontend/lowering/containers/array-pipelines.js.map +1 -1
  618. package/dist/frontend/lowering/containers/bytes.js +161 -101
  619. package/dist/frontend/lowering/containers/bytes.js.map +1 -1
  620. package/dist/frontend/lowering/containers/callback-arguments.d.ts +9 -1
  621. package/dist/frontend/lowering/containers/callback-arguments.js +55 -5
  622. package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -1
  623. package/dist/frontend/lowering/containers/collection-grouping.d.ts +7 -8
  624. package/dist/frontend/lowering/containers/collection-grouping.js +217 -26
  625. package/dist/frontend/lowering/containers/collection-grouping.js.map +1 -1
  626. package/dist/frontend/lowering/containers/collection-methods.js +54 -25
  627. package/dist/frontend/lowering/containers/collection-methods.js.map +1 -1
  628. package/dist/frontend/lowering/containers/dynamic-receivers.js +1 -1
  629. package/dist/frontend/lowering/containers/dynamic-receivers.js.map +1 -1
  630. package/dist/frontend/lowering/containers/exec-result-uses.js +2 -2
  631. package/dist/frontend/lowering/containers/exec-result-uses.js.map +1 -1
  632. package/dist/frontend/lowering/containers/for-of.d.ts +6 -0
  633. package/dist/frontend/lowering/containers/for-of.js +19 -19
  634. package/dist/frontend/lowering/containers/for-of.js.map +1 -1
  635. package/dist/frontend/lowering/containers/indexed-objects.js +142 -57
  636. package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
  637. package/dist/frontend/lowering/containers/iterator-helpers.d.ts +53 -4
  638. package/dist/frontend/lowering/containers/iterator-helpers.js +1581 -462
  639. package/dist/frontend/lowering/containers/iterator-helpers.js.map +1 -1
  640. package/dist/frontend/lowering/containers/match-row-uses.d.ts +17 -0
  641. package/dist/frontend/lowering/containers/match-row-uses.js +264 -0
  642. package/dist/frontend/lowering/containers/match-row-uses.js.map +1 -0
  643. package/dist/frontend/lowering/containers/string-and-regexp.d.ts +14 -0
  644. package/dist/frontend/lowering/containers/string-and-regexp.js +419 -30
  645. package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
  646. package/dist/frontend/lowering/containers/string-replacement.js +1 -1
  647. package/dist/frontend/lowering/containers/string-replacement.js.map +1 -1
  648. package/dist/frontend/lowering/cycle-initialization.d.ts +4 -0
  649. package/dist/frontend/lowering/cycle-initialization.js +39 -0
  650. package/dist/frontend/lowering/cycle-initialization.js.map +1 -1
  651. package/dist/frontend/lowering/deferred-module-initializers.js +47 -43
  652. package/dist/frontend/lowering/deferred-module-initializers.js.map +1 -1
  653. package/dist/frontend/lowering/devirtualize.d.ts +1 -1
  654. package/dist/frontend/lowering/devirtualize.js +27 -7
  655. package/dist/frontend/lowering/devirtualize.js.map +1 -1
  656. package/dist/frontend/lowering/divergences.d.ts +0 -5
  657. package/dist/frontend/lowering/divergences.js +62 -125
  658. package/dist/frontend/lowering/divergences.js.map +1 -1
  659. package/dist/frontend/lowering/dyn-streams.d.ts +25 -0
  660. package/dist/frontend/lowering/dyn-streams.js +257 -0
  661. package/dist/frontend/lowering/dyn-streams.js.map +1 -0
  662. package/dist/frontend/lowering/error-methods.js +4 -1
  663. package/dist/frontend/lowering/error-methods.js.map +1 -1
  664. package/dist/frontend/lowering/error-name-order.d.ts +19 -0
  665. package/dist/frontend/lowering/error-name-order.js +93 -0
  666. package/dist/frontend/lowering/error-name-order.js.map +1 -0
  667. package/dist/frontend/lowering/expressions/array-literals.d.ts +21 -0
  668. package/dist/frontend/lowering/expressions/array-literals.js +703 -0
  669. package/dist/frontend/lowering/expressions/array-literals.js.map +1 -0
  670. package/dist/frontend/lowering/expressions/binary.d.ts +35 -0
  671. package/dist/frontend/lowering/expressions/binary.js +2483 -0
  672. package/dist/frontend/lowering/expressions/binary.js.map +1 -0
  673. package/dist/frontend/lowering/expressions/element-access.d.ts +31 -0
  674. package/dist/frontend/lowering/expressions/element-access.js +1797 -0
  675. package/dist/frontend/lowering/expressions/element-access.js.map +1 -0
  676. package/dist/frontend/lowering/expressions/evaluation-safety.js +4 -3
  677. package/dist/frontend/lowering/expressions/evaluation-safety.js.map +1 -1
  678. package/dist/frontend/lowering/expressions/hosted-narrowing.d.ts +38 -0
  679. package/dist/frontend/lowering/expressions/hosted-narrowing.js +160 -0
  680. package/dist/frontend/lowering/expressions/hosted-narrowing.js.map +1 -0
  681. package/dist/frontend/lowering/expressions/identifiers.d.ts +4 -0
  682. package/dist/frontend/lowering/expressions/identifiers.js +830 -0
  683. package/dist/frontend/lowering/expressions/identifiers.js.map +1 -0
  684. package/dist/frontend/lowering/expressions/keyed-field-targets.d.ts +40 -0
  685. package/dist/frontend/lowering/expressions/keyed-field-targets.js +226 -0
  686. package/dist/frontend/lowering/expressions/keyed-field-targets.js.map +1 -0
  687. package/dist/frontend/lowering/expressions/narrowing.d.ts +37 -0
  688. package/dist/frontend/lowering/expressions/narrowing.js +1322 -0
  689. package/dist/frontend/lowering/expressions/narrowing.js.map +1 -0
  690. package/dist/frontend/lowering/expressions/native-proxy.js +4 -4
  691. package/dist/frontend/lowering/expressions/native-proxy.js.map +1 -1
  692. package/dist/frontend/lowering/expressions/nullish-assignment.js +45 -0
  693. package/dist/frontend/lowering/expressions/nullish-assignment.js.map +1 -1
  694. package/dist/frontend/lowering/expressions/object-literals.d.ts +10 -0
  695. package/dist/frontend/lowering/expressions/object-literals.js +253 -85
  696. package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
  697. package/dist/frontend/lowering/expressions/optional-chains.d.ts +2 -1
  698. package/dist/frontend/lowering/expressions/optional-chains.js +91 -14
  699. package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
  700. package/dist/frontend/lowering/expressions/property-access.d.ts +110 -0
  701. package/dist/frontend/lowering/expressions/property-access.js +3544 -0
  702. package/dist/frontend/lowering/expressions/property-access.js.map +1 -0
  703. package/dist/frontend/lowering/expressions/relational.d.ts +28 -0
  704. package/dist/frontend/lowering/expressions/relational.js +1679 -0
  705. package/dist/frontend/lowering/expressions/relational.js.map +1 -0
  706. package/dist/frontend/lowering/expressions/typeof.d.ts +22 -0
  707. package/dist/frontend/lowering/expressions/typeof.js +538 -0
  708. package/dist/frontend/lowering/expressions/typeof.js.map +1 -0
  709. package/dist/frontend/lowering/expressions/union-fields.js +1 -1
  710. package/dist/frontend/lowering/expressions/union-fields.js.map +1 -1
  711. package/dist/frontend/lowering/expressions/updates.d.ts +21 -0
  712. package/dist/frontend/lowering/expressions/updates.js +780 -0
  713. package/dist/frontend/lowering/expressions/updates.js.map +1 -0
  714. package/dist/frontend/lowering/function-context.d.ts +10 -0
  715. package/dist/frontend/lowering/function-context.js +11 -1
  716. package/dist/frontend/lowering/function-context.js.map +1 -1
  717. package/dist/frontend/lowering/function-returns.js +52 -28
  718. package/dist/frontend/lowering/function-returns.js.map +1 -1
  719. package/dist/frontend/lowering/general-streams.d.ts +25 -0
  720. package/dist/frontend/lowering/general-streams.js +108 -0
  721. package/dist/frontend/lowering/general-streams.js.map +1 -0
  722. package/dist/frontend/lowering/generator-dynamic-dispatch.d.ts +7 -0
  723. package/dist/frontend/lowering/generator-dynamic-dispatch.js +172 -69
  724. package/dist/frontend/lowering/generator-dynamic-dispatch.js.map +1 -1
  725. package/dist/frontend/lowering/generic-functions.d.ts +39 -0
  726. package/dist/frontend/lowering/generic-functions.js +393 -75
  727. package/dist/frontend/lowering/generic-functions.js.map +1 -1
  728. package/dist/frontend/lowering/import-meta.js +2 -2
  729. package/dist/frontend/lowering/import-meta.js.map +1 -1
  730. package/dist/frontend/lowering/intern-tables.js +10 -9
  731. package/dist/frontend/lowering/intern-tables.js.map +1 -1
  732. package/dist/frontend/lowering/iterator-adapters.d.ts +19 -0
  733. package/dist/frontend/lowering/iterator-adapters.js +331 -3
  734. package/dist/frontend/lowering/iterator-adapters.js.map +1 -1
  735. package/dist/frontend/lowering/js-class-fields.d.ts +28 -0
  736. package/dist/frontend/lowering/js-class-fields.js +170 -0
  737. package/dist/frontend/lowering/js-class-fields.js.map +1 -0
  738. package/dist/frontend/lowering/js-dynamic-objects.d.ts +15 -0
  739. package/dist/frontend/lowering/js-dynamic-objects.js +299 -0
  740. package/dist/frontend/lowering/js-dynamic-objects.js.map +1 -0
  741. package/dist/frontend/lowering/js-dynamic-objects.test.d.ts +1 -0
  742. package/dist/frontend/lowering/js-dynamic-objects.test.js +35 -0
  743. package/dist/frontend/lowering/js-dynamic-objects.test.js.map +1 -0
  744. package/dist/frontend/lowering/json-require.d.ts +22 -0
  745. package/dist/frontend/lowering/json-require.js +131 -0
  746. package/dist/frontend/lowering/json-require.js.map +1 -0
  747. package/dist/frontend/lowering/key-order-witness.d.ts +44 -0
  748. package/dist/frontend/lowering/key-order-witness.js +641 -0
  749. package/dist/frontend/lowering/key-order-witness.js.map +1 -0
  750. package/dist/frontend/lowering/key-order-witness.test.d.ts +1 -0
  751. package/dist/frontend/lowering/key-order-witness.test.js +239 -0
  752. package/dist/frontend/lowering/key-order-witness.test.js.map +1 -0
  753. package/dist/frontend/lowering/lifetime-regions.js +7 -7
  754. package/dist/frontend/lowering/lifetime-regions.js.map +1 -1
  755. package/dist/frontend/lowering/lower-assert.js +61 -60
  756. package/dist/frontend/lowering/lower-assert.js.map +1 -1
  757. package/dist/frontend/lowering/lower-async-iteration.d.ts +10 -1
  758. package/dist/frontend/lowering/lower-async-iteration.js +34 -6
  759. package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
  760. package/dist/frontend/lowering/lower-builtin-values.d.ts +5 -0
  761. package/dist/frontend/lowering/lower-builtin-values.js +32 -3
  762. package/dist/frontend/lowering/lower-builtin-values.js.map +1 -1
  763. package/dist/frontend/lowering/lower-calls.js +1239 -442
  764. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  765. package/dist/frontend/lowering/lower-classes.d.ts +50 -3
  766. package/dist/frontend/lowering/lower-classes.js +1473 -468
  767. package/dist/frontend/lowering/lower-classes.js.map +1 -1
  768. package/dist/frontend/lowering/lower-comptime.d.ts +4 -2
  769. package/dist/frontend/lowering/lower-comptime.js +111 -13
  770. package/dist/frontend/lowering/lower-comptime.js.map +1 -1
  771. package/dist/frontend/lowering/lower-console.js +13 -11
  772. package/dist/frontend/lowering/lower-console.js.map +1 -1
  773. package/dist/frontend/lowering/lower-dgram.d.ts +10 -0
  774. package/dist/frontend/lowering/lower-dgram.js +179 -8
  775. package/dist/frontend/lowering/lower-dgram.js.map +1 -1
  776. package/dist/frontend/lowering/lower-enums.js +113 -14
  777. package/dist/frontend/lowering/lower-enums.js.map +1 -1
  778. package/dist/frontend/lowering/lower-event-emitter.d.ts +16 -7
  779. package/dist/frontend/lowering/lower-event-emitter.js +258 -70
  780. package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
  781. package/dist/frontend/lowering/lower-event-target.js +2 -2
  782. package/dist/frontend/lowering/lower-event-target.js.map +1 -1
  783. package/dist/frontend/lowering/lower-expando.js +17 -13
  784. package/dist/frontend/lowering/lower-expando.js.map +1 -1
  785. package/dist/frontend/lowering/lower-exprs.d.ts +188 -186
  786. package/dist/frontend/lowering/lower-exprs.js +1481 -12489
  787. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  788. package/dist/frontend/lowering/lower-functions.js +68 -22
  789. package/dist/frontend/lowering/lower-functions.js.map +1 -1
  790. package/dist/frontend/lowering/lower-generators.d.ts +6 -0
  791. package/dist/frontend/lowering/lower-generators.js +29 -16
  792. package/dist/frontend/lowering/lower-generators.js.map +1 -1
  793. package/dist/frontend/lowering/lower-global-value.js +5 -1
  794. package/dist/frontend/lowering/lower-global-value.js.map +1 -1
  795. package/dist/frontend/lowering/lower-inspect.js +331 -96
  796. package/dist/frontend/lowering/lower-inspect.js.map +1 -1
  797. package/dist/frontend/lowering/lower-mixins.js +23 -20
  798. package/dist/frontend/lowering/lower-mixins.js.map +1 -1
  799. package/dist/frontend/lowering/lower-mock.d.ts +8 -1
  800. package/dist/frontend/lowering/lower-mock.js +185 -18
  801. package/dist/frontend/lowering/lower-mock.js.map +1 -1
  802. package/dist/frontend/lowering/lower-modules.js +267 -61
  803. package/dist/frontend/lowering/lower-modules.js.map +1 -1
  804. package/dist/frontend/lowering/lower-namespaces.d.ts +6 -0
  805. package/dist/frontend/lowering/lower-namespaces.js +45 -33
  806. package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
  807. package/dist/frontend/lowering/lower-node-module.d.ts +16 -0
  808. package/dist/frontend/lowering/lower-node-module.js +147 -14
  809. package/dist/frontend/lowering/lower-node-module.js.map +1 -1
  810. package/dist/frontend/lowering/lower-server.d.ts +6 -6
  811. package/dist/frontend/lowering/lower-server.js +488 -100
  812. package/dist/frontend/lowering/lower-server.js.map +1 -1
  813. package/dist/frontend/lowering/lower-stdlib.d.ts +4 -0
  814. package/dist/frontend/lowering/lower-stdlib.js +151 -109
  815. package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
  816. package/dist/frontend/lowering/lower-stmts.d.ts +28 -2
  817. package/dist/frontend/lowering/lower-stmts.js +1541 -391
  818. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  819. package/dist/frontend/lowering/lower-stream.d.ts +3 -0
  820. package/dist/frontend/lowering/lower-stream.js +398 -56
  821. package/dist/frontend/lowering/lower-stream.js.map +1 -1
  822. package/dist/frontend/lowering/lower-test.d.ts +3 -0
  823. package/dist/frontend/lowering/lower-test.js +437 -62
  824. package/dist/frontend/lowering/lower-test.js.map +1 -1
  825. package/dist/frontend/lowering/lower-timers.js +80 -32
  826. package/dist/frontend/lowering/lower-timers.js.map +1 -1
  827. package/dist/frontend/lowering/lower-url.js +1 -1
  828. package/dist/frontend/lowering/lower-url.js.map +1 -1
  829. package/dist/frontend/lowering/lowerer.d.ts +399 -26
  830. package/dist/frontend/lowering/lowerer.js +1910 -305
  831. package/dist/frontend/lowering/lowerer.js.map +1 -1
  832. package/dist/frontend/lowering/lowerer.test.js +10 -4
  833. package/dist/frontend/lowering/lowerer.test.js.map +1 -1
  834. package/dist/frontend/lowering/maybe-promise.d.ts +46 -0
  835. package/dist/frontend/lowering/maybe-promise.js +249 -0
  836. package/dist/frontend/lowering/maybe-promise.js.map +1 -0
  837. package/dist/frontend/lowering/module-member-this.d.ts +3 -0
  838. package/dist/frontend/lowering/module-member-this.js +262 -0
  839. package/dist/frontend/lowering/module-member-this.js.map +1 -0
  840. package/dist/frontend/lowering/module-namespace-elements.js +1 -1
  841. package/dist/frontend/lowering/module-namespace-elements.js.map +1 -1
  842. package/dist/frontend/lowering/nan-coded-reads.d.ts +3 -0
  843. package/dist/frontend/lowering/nan-coded-reads.js +45 -32
  844. package/dist/frontend/lowering/nan-coded-reads.js.map +1 -1
  845. package/dist/frontend/lowering/narrowing-stability.d.ts +18 -3
  846. package/dist/frontend/lowering/narrowing-stability.js +104 -32
  847. package/dist/frontend/lowering/narrowing-stability.js.map +1 -1
  848. package/dist/frontend/lowering/native-ffi.js +11 -11
  849. package/dist/frontend/lowering/native-ffi.js.map +1 -1
  850. package/dist/frontend/lowering/object-factory-new.js +6 -8
  851. package/dist/frontend/lowering/object-factory-new.js.map +1 -1
  852. package/dist/frontend/lowering/private-brands.d.ts +46 -0
  853. package/dist/frontend/lowering/private-brands.js +265 -0
  854. package/dist/frontend/lowering/private-brands.js.map +1 -0
  855. package/dist/frontend/lowering/promise-executor-adapter.d.ts +11 -0
  856. package/dist/frontend/lowering/promise-executor-adapter.js +87 -0
  857. package/dist/frontend/lowering/promise-executor-adapter.js.map +1 -0
  858. package/dist/frontend/lowering/require-initialization.d.ts +32 -0
  859. package/dist/frontend/lowering/require-initialization.js +246 -0
  860. package/dist/frontend/lowering/require-initialization.js.map +1 -0
  861. package/dist/frontend/lowering/runtime-optional-bounds.js +7 -7
  862. package/dist/frontend/lowering/runtime-optional-bounds.js.map +1 -1
  863. package/dist/frontend/lowering/runtime-optional-elements.js +12 -12
  864. package/dist/frontend/lowering/runtime-optional-elements.js.map +1 -1
  865. package/dist/frontend/lowering/runtime-optional-guards.js +10 -10
  866. package/dist/frontend/lowering/runtime-optional-guards.js.map +1 -1
  867. package/dist/frontend/lowering/runtime-optional-guards.test.js +1 -1
  868. package/dist/frontend/lowering/runtime-optional-guards.test.js.map +1 -1
  869. package/dist/frontend/lowering/runtime-optional-ownership.js +10 -9
  870. package/dist/frontend/lowering/runtime-optional-ownership.js.map +1 -1
  871. package/dist/frontend/lowering/runtime-optional-provenance.js +2 -2
  872. package/dist/frontend/lowering/runtime-optional-provenance.js.map +1 -1
  873. package/dist/frontend/lowering/runtime-optional-records.d.ts +35 -0
  874. package/dist/frontend/lowering/runtime-optional-records.js +205 -32
  875. package/dist/frontend/lowering/runtime-optional-records.js.map +1 -1
  876. package/dist/frontend/lowering/runtime-optional-records.test.js +19 -1
  877. package/dist/frontend/lowering/runtime-optional-records.test.js.map +1 -1
  878. package/dist/frontend/lowering/sanitize-class-types.test.js +2 -2
  879. package/dist/frontend/lowering/split-consumers.js +4 -4
  880. package/dist/frontend/lowering/split-consumers.js.map +1 -1
  881. package/dist/frontend/lowering/static-function-names.d.ts +28 -0
  882. package/dist/frontend/lowering/static-function-names.js +212 -0
  883. package/dist/frontend/lowering/static-function-names.js.map +1 -0
  884. package/dist/frontend/lowering/static-this.js +6 -6
  885. package/dist/frontend/lowering/static-this.js.map +1 -1
  886. package/dist/frontend/lowering/strict-mode.d.ts +5 -0
  887. package/dist/frontend/lowering/strict-mode.js +31 -0
  888. package/dist/frontend/lowering/strict-mode.js.map +1 -0
  889. package/dist/frontend/lowering/string-index-bounds.js +10 -10
  890. package/dist/frontend/lowering/string-index-bounds.js.map +1 -1
  891. package/dist/frontend/lowering/string-index.d.ts +12 -0
  892. package/dist/frontend/lowering/string-index.js +72 -1
  893. package/dist/frontend/lowering/string-index.js.map +1 -1
  894. package/dist/frontend/lowering/surfaces.d.ts +12 -3
  895. package/dist/frontend/lowering/surfaces.js +252 -41
  896. package/dist/frontend/lowering/surfaces.js.map +1 -1
  897. package/dist/frontend/lowering/symbol-fields.d.ts +7 -0
  898. package/dist/frontend/lowering/symbol-fields.js +204 -36
  899. package/dist/frontend/lowering/symbol-fields.js.map +1 -1
  900. package/dist/frontend/lowering/symbol-methods.d.ts +2 -1
  901. package/dist/frontend/lowering/symbol-methods.js +24 -6
  902. package/dist/frontend/lowering/symbol-methods.js.map +1 -1
  903. package/dist/frontend/lowering/thread-slots.d.ts +13 -0
  904. package/dist/frontend/lowering/thread-slots.js +208 -0
  905. package/dist/frontend/lowering/thread-slots.js.map +1 -0
  906. package/dist/frontend/lowering/typed-arguments.d.ts +74 -0
  907. package/dist/frontend/lowering/typed-arguments.js +472 -0
  908. package/dist/frontend/lowering/typed-arguments.js.map +1 -0
  909. package/dist/frontend/lowering/union-retag.d.ts +8 -0
  910. package/dist/frontend/lowering/union-retag.js +27 -0
  911. package/dist/frontend/lowering/union-retag.js.map +1 -1
  912. package/dist/frontend/lowering/union-retag.test.js +24 -1
  913. package/dist/frontend/lowering/union-retag.test.js.map +1 -1
  914. package/dist/frontend/lowering/var-hoisting.js +6 -6
  915. package/dist/frontend/lowering/var-hoisting.js.map +1 -1
  916. package/dist/frontend/lowering/width-lift.d.ts +4 -0
  917. package/dist/frontend/mock-shapes.js +13 -6
  918. package/dist/frontend/mock-shapes.js.map +1 -1
  919. package/dist/frontend/module-source-candidates.js +1 -1
  920. package/dist/frontend/module-source-candidates.js.map +1 -1
  921. package/dist/frontend/module-source-candidates.test.js +2 -1
  922. package/dist/frontend/module-source-candidates.test.js.map +1 -1
  923. package/dist/frontend/module-syntax.js +8 -8
  924. package/dist/frontend/module-syntax.js.map +1 -1
  925. package/dist/frontend/npm-static-bundled-chunks.d.ts +51 -0
  926. package/dist/frontend/npm-static-bundled-chunks.js +810 -0
  927. package/dist/frontend/npm-static-bundled-chunks.js.map +1 -0
  928. package/dist/frontend/npm-static-bundled-chunks.test.d.ts +1 -0
  929. package/dist/frontend/npm-static-bundled-chunks.test.js +287 -0
  930. package/dist/frontend/npm-static-bundled-chunks.test.js.map +1 -0
  931. package/dist/frontend/npm-static-bundled-cjs.js +24 -23
  932. package/dist/frontend/npm-static-bundled-cjs.js.map +1 -1
  933. package/dist/frontend/npm-static-bundled-esm.d.ts +9 -0
  934. package/dist/frontend/npm-static-bundled-esm.js +768 -0
  935. package/dist/frontend/npm-static-bundled-esm.js.map +1 -0
  936. package/dist/frontend/npm-static-bundled-esm.test.d.ts +1 -0
  937. package/dist/frontend/npm-static-bundled-esm.test.js +207 -0
  938. package/dist/frontend/npm-static-bundled-esm.test.js.map +1 -0
  939. package/dist/frontend/npm-static-cjs-exports-alias.d.ts +2 -0
  940. package/dist/frontend/npm-static-cjs-exports-alias.js +186 -0
  941. package/dist/frontend/npm-static-cjs-exports-alias.js.map +1 -0
  942. package/dist/frontend/npm-static-cjs-exports-alias.test.d.ts +1 -0
  943. package/dist/frontend/npm-static-cjs-exports-alias.test.js +73 -0
  944. package/dist/frontend/npm-static-cjs-exports-alias.test.js.map +1 -0
  945. package/dist/frontend/npm-static-cjs-exports-var.d.ts +2 -0
  946. package/dist/frontend/npm-static-cjs-exports-var.js +236 -0
  947. package/dist/frontend/npm-static-cjs-exports-var.js.map +1 -0
  948. package/dist/frontend/npm-static-declaration-syntax.js +102 -101
  949. package/dist/frontend/npm-static-declaration-syntax.js.map +1 -1
  950. package/dist/frontend/npm-static-prune.js +36 -24
  951. package/dist/frontend/npm-static-prune.js.map +1 -1
  952. package/dist/frontend/npm-static-rewrite-host.d.ts +4 -1
  953. package/dist/frontend/npm-static-rewrite-host.js +14 -3
  954. package/dist/frontend/npm-static-rewrite-host.js.map +1 -1
  955. package/dist/frontend/npm-static-rewrite-syntax.d.ts +19 -0
  956. package/dist/frontend/npm-static-rewrite-syntax.js +274 -101
  957. package/dist/frontend/npm-static-rewrite-syntax.js.map +1 -1
  958. package/dist/frontend/npm-static-subtyping.js +7 -9
  959. package/dist/frontend/npm-static-subtyping.js.map +1 -1
  960. package/dist/frontend/npm-static.d.ts +17 -1
  961. package/dist/frontend/npm-static.js +167 -16
  962. package/dist/frontend/npm-static.js.map +1 -1
  963. package/dist/frontend/npm-static.test.js +22 -1
  964. package/dist/frontend/npm-static.test.js.map +1 -1
  965. package/dist/frontend/pipeline.js +164 -26
  966. package/dist/frontend/pipeline.js.map +1 -1
  967. package/dist/frontend/pipeline.test.js +22 -1
  968. package/dist/frontend/pipeline.test.js.map +1 -1
  969. package/dist/frontend/program-analysis.d.ts +6 -1
  970. package/dist/frontend/program-analysis.js +7 -0
  971. package/dist/frontend/program-analysis.js.map +1 -1
  972. package/dist/frontend/program.d.ts +92 -2
  973. package/dist/frontend/program.js +1557 -255
  974. package/dist/frontend/program.js.map +1 -1
  975. package/dist/frontend/program.test.js +76 -6
  976. package/dist/frontend/program.test.js.map +1 -1
  977. package/dist/frontend/resolve.js +36 -2
  978. package/dist/frontend/resolve.js.map +1 -1
  979. package/dist/frontend/resolve.test.js +49 -0
  980. package/dist/frontend/resolve.test.js.map +1 -1
  981. package/dist/frontend/services.d.ts +20 -1
  982. package/dist/frontend/services.js +40 -3
  983. package/dist/frontend/services.js.map +1 -1
  984. package/dist/frontend/services.test.js +2 -1
  985. package/dist/frontend/services.test.js.map +1 -1
  986. package/dist/frontend/threads-import.js +1 -1
  987. package/dist/frontend/threads-import.js.map +1 -1
  988. package/dist/frontend/tier-analysis.d.ts +71 -0
  989. package/dist/frontend/tier-analysis.js +522 -0
  990. package/dist/frontend/tier-analysis.js.map +1 -0
  991. package/dist/frontend/ts7/api-conformance.d.ts +234 -0
  992. package/dist/frontend/ts7/api-conformance.js +7 -0
  993. package/dist/frontend/ts7/api-conformance.js.map +1 -0
  994. package/dist/frontend/ts7/ast-guards.generated.js +2 -1
  995. package/dist/frontend/ts7/ast-guards.generated.js.map +1 -1
  996. package/dist/frontend/ts7/ast-node.d.ts +47 -25
  997. package/dist/frontend/ts7/ast-node.js +64 -18
  998. package/dist/frontend/ts7/ast-node.js.map +1 -1
  999. package/dist/frontend/ts7/ast-node.test.js +36 -12
  1000. package/dist/frontend/ts7/ast-node.test.js.map +1 -1
  1001. package/dist/frontend/ts7/ast-types.d.ts +10 -3
  1002. package/dist/frontend/ts7/ast-types.generated.d.ts +39 -39
  1003. package/dist/frontend/ts7/ast.d.ts +1 -0
  1004. package/dist/frontend/ts7/ast.js +3 -2
  1005. package/dist/frontend/ts7/ast.js.map +1 -1
  1006. package/dist/frontend/ts7/checker-backend.d.ts +23 -0
  1007. package/dist/frontend/ts7/checker-backend.js +88 -0
  1008. package/dist/frontend/ts7/checker-backend.js.map +1 -0
  1009. package/dist/frontend/ts7/checker-backend.test.d.ts +1 -0
  1010. package/dist/frontend/ts7/checker-backend.test.js +63 -0
  1011. package/dist/frontend/ts7/checker-backend.test.js.map +1 -0
  1012. package/dist/frontend/ts7/checker-cache.d.ts +0 -3
  1013. package/dist/frontend/ts7/checker-cache.js +0 -6
  1014. package/dist/frontend/ts7/checker-cache.js.map +1 -1
  1015. package/dist/frontend/ts7/checker.d.ts +18 -11
  1016. package/dist/frontend/ts7/checker.js +42 -55
  1017. package/dist/frontend/ts7/checker.js.map +1 -1
  1018. package/dist/frontend/ts7/checker.test.js +10 -7
  1019. package/dist/frontend/ts7/checker.test.js.map +1 -1
  1020. package/dist/frontend/ts7/diagnostic.d.ts +19 -0
  1021. package/dist/frontend/ts7/diagnostic.js +22 -0
  1022. package/dist/frontend/ts7/diagnostic.js.map +1 -0
  1023. package/dist/frontend/ts7/node-functions.d.ts +8 -0
  1024. package/dist/frontend/ts7/node-functions.js +18 -0
  1025. package/dist/frontend/ts7/node-functions.js.map +1 -0
  1026. package/dist/frontend/ts7/program-host.d.ts +5 -1
  1027. package/dist/frontend/ts7/program-host.js +12 -0
  1028. package/dist/frontend/ts7/program-host.js.map +1 -1
  1029. package/dist/frontend/ts7/rpc-api.d.ts +5 -1
  1030. package/dist/frontend/ts7/rpc-api.js +8 -1
  1031. package/dist/frontend/ts7/rpc-api.js.map +1 -1
  1032. package/dist/frontend/ts7/semantic-checker.d.ts +13 -6
  1033. package/dist/frontend/ts7/semantic-checker.js +26 -8
  1034. package/dist/frontend/ts7/semantic-checker.js.map +1 -1
  1035. package/dist/frontend/ts7/semantic-checker.test.js +12 -9
  1036. package/dist/frontend/ts7/semantic-checker.test.js.map +1 -1
  1037. package/dist/frontend/ts7/semantic-model.d.ts +54 -24
  1038. package/dist/frontend/ts7/semantic-model.js +88 -16
  1039. package/dist/frontend/ts7/semantic-model.js.map +1 -1
  1040. package/dist/frontend/ts7/semantic-model.test.js +4 -4
  1041. package/dist/frontend/ts7/semantic-model.test.js.map +1 -1
  1042. package/dist/frontend/ts7/semantic-types.d.ts +7 -3
  1043. package/dist/frontend/ts7/semantic-types.js +1 -1
  1044. package/dist/frontend/ts7/semantic-types.js.map +1 -1
  1045. package/dist/frontend/ts7/session.d.ts +11 -11
  1046. package/dist/frontend/ts7/session.js +8 -5
  1047. package/dist/frontend/ts7/session.js.map +1 -1
  1048. package/dist/frontend/ts7/session.test.js +9 -5
  1049. package/dist/frontend/ts7/session.test.js.map +1 -1
  1050. package/dist/frontend/ts7/source-parser.d.ts +6 -2
  1051. package/dist/frontend/ts7/source-parser.js +24 -3
  1052. package/dist/frontend/ts7/source-parser.js.map +1 -1
  1053. package/dist/frontend/ts7/source-parser.test.js +38 -17
  1054. package/dist/frontend/ts7/source-parser.test.js.map +1 -1
  1055. package/dist/frontend/type-mapper.d.ts +122 -2
  1056. package/dist/frontend/type-mapper.js +2545 -719
  1057. package/dist/frontend/type-mapper.js.map +1 -1
  1058. package/dist/frontend/type-only-imports.d.ts +28 -0
  1059. package/dist/frontend/type-only-imports.js +122 -0
  1060. package/dist/frontend/type-only-imports.js.map +1 -0
  1061. package/dist/frontend/worker-target.js +8 -8
  1062. package/dist/frontend/worker-target.js.map +1 -1
  1063. package/dist/index.d.ts +3 -1
  1064. package/dist/index.js +29 -2
  1065. package/dist/index.js.map +1 -1
  1066. package/dist/ir/analysis.js +4 -2
  1067. package/dist/ir/analysis.js.map +1 -1
  1068. package/dist/ir/api.d.ts +1 -1
  1069. package/dist/ir/api.js +1 -1
  1070. package/dist/ir/api.js.map +1 -1
  1071. package/dist/ir/array-length-stability.d.ts +30 -0
  1072. package/dist/ir/array-length-stability.js +236 -0
  1073. package/dist/ir/array-length-stability.js.map +1 -0
  1074. package/dist/ir/array-length-stability.test.d.ts +1 -0
  1075. package/dist/ir/array-length-stability.test.js +113 -0
  1076. package/dist/ir/array-length-stability.test.js.map +1 -0
  1077. package/dist/ir/build.d.ts +2 -2
  1078. package/dist/ir/build.js +1 -1
  1079. package/dist/ir/build.js.map +1 -1
  1080. package/dist/ir/builtin-effects.js +103 -0
  1081. package/dist/ir/builtin-effects.js.map +1 -1
  1082. package/dist/ir/builtin-signatures.d.ts +1 -1
  1083. package/dist/ir/builtin-signatures.js +494 -25
  1084. package/dist/ir/builtin-signatures.js.map +1 -1
  1085. package/dist/ir/byte-numbers.js +3 -0
  1086. package/dist/ir/byte-numbers.js.map +1 -1
  1087. package/dist/ir/callback-specialization.d.ts +37 -0
  1088. package/dist/ir/callback-specialization.js +459 -0
  1089. package/dist/ir/callback-specialization.js.map +1 -0
  1090. package/dist/ir/callback-specialization.test.d.ts +1 -0
  1091. package/dist/ir/callback-specialization.test.js +208 -0
  1092. package/dist/ir/callback-specialization.test.js.map +1 -0
  1093. package/dist/ir/capture-values.d.ts +0 -1
  1094. package/dist/ir/capture-values.js +51 -40
  1095. package/dist/ir/capture-values.js.map +1 -1
  1096. package/dist/ir/constant-globals.test.js +1 -1
  1097. package/dist/ir/constant-tables.test.js +1 -1
  1098. package/dist/ir/field-values.test.js +1 -1
  1099. package/dist/ir/final-fields.test.js +1 -1
  1100. package/dist/ir/function-references.test.js +9 -1
  1101. package/dist/ir/function-references.test.js.map +1 -1
  1102. package/dist/ir/init-only-globals.test.js +1 -1
  1103. package/dist/ir/initializer-bindings.test.js +1 -1
  1104. package/dist/ir/int32-slots.d.ts +14 -0
  1105. package/dist/ir/int32-slots.js +97 -14
  1106. package/dist/ir/int32-slots.js.map +1 -1
  1107. package/dist/ir/int32-slots.test.js +1 -1
  1108. package/dist/ir/integer-loop-facts.d.ts +2 -0
  1109. package/dist/ir/integer-loop-facts.js +24 -3
  1110. package/dist/ir/integer-loop-facts.js.map +1 -1
  1111. package/dist/ir/integer-loops.d.ts +1 -1
  1112. package/dist/ir/integer-loops.js +39 -9
  1113. package/dist/ir/integer-loops.js.map +1 -1
  1114. package/dist/ir/integer-loops.test.js +104 -0
  1115. package/dist/ir/integer-loops.test.js.map +1 -1
  1116. package/dist/ir/integer-ranges.d.ts +3 -0
  1117. package/dist/ir/integer-ranges.js +3 -1
  1118. package/dist/ir/integer-ranges.js.map +1 -1
  1119. package/dist/ir/integer-ranges.test.js +82 -1
  1120. package/dist/ir/integer-ranges.test.js.map +1 -1
  1121. package/dist/ir/intrinsic-signatures.js +6 -0
  1122. package/dist/ir/intrinsic-signatures.js.map +1 -1
  1123. package/dist/ir/ir.d.ts +221 -58
  1124. package/dist/ir/ir.js +119 -12
  1125. package/dist/ir/ir.js.map +1 -1
  1126. package/dist/ir/ir.test.js +10 -0
  1127. package/dist/ir/ir.test.js.map +1 -1
  1128. package/dist/ir/jsval.d.ts +8 -0
  1129. package/dist/ir/jsval.js +365 -0
  1130. package/dist/ir/jsval.js.map +1 -0
  1131. package/dist/ir/jsval.test.d.ts +1 -0
  1132. package/dist/ir/jsval.test.js +239 -0
  1133. package/dist/ir/jsval.test.js.map +1 -0
  1134. package/dist/ir/runtime-features.d.ts +148 -33
  1135. package/dist/ir/runtime-features.js +629 -386
  1136. package/dist/ir/runtime-features.js.map +1 -1
  1137. package/dist/ir/scalar-records.test.js +1 -1
  1138. package/dist/ir/self-captures.d.ts +33 -0
  1139. package/dist/ir/self-captures.js +245 -0
  1140. package/dist/ir/self-captures.js.map +1 -0
  1141. package/dist/ir/self-captures.test.d.ts +1 -0
  1142. package/dist/ir/self-captures.test.js +135 -0
  1143. package/dist/ir/self-captures.test.js.map +1 -0
  1144. package/dist/ir/serialize.d.ts +1 -1
  1145. package/dist/ir/serialize.js +7 -4
  1146. package/dist/ir/serialize.js.map +1 -1
  1147. package/dist/ir/tiers.d.ts +26 -0
  1148. package/dist/ir/tiers.js +101 -0
  1149. package/dist/ir/tiers.js.map +1 -0
  1150. package/dist/ir/tiers.test.d.ts +1 -0
  1151. package/dist/ir/tiers.test.js +140 -0
  1152. package/dist/ir/tiers.test.js.map +1 -0
  1153. package/dist/ir/traverse.js +103 -94
  1154. package/dist/ir/traverse.js.map +1 -1
  1155. package/dist/ir/traverse.test.js +33 -30
  1156. package/dist/ir/traverse.test.js.map +1 -1
  1157. package/dist/ir/unshare.js +65 -3
  1158. package/dist/ir/unshare.js.map +1 -1
  1159. package/dist/ir/unshare.test.js +1 -1
  1160. package/dist/ir/validate.js +175 -68
  1161. package/dist/ir/validate.js.map +1 -1
  1162. package/dist/ir/validate.test.js +26 -9
  1163. package/dist/ir/validate.test.js.map +1 -1
  1164. package/dist/library/fence-eval.test.js +1 -1
  1165. package/dist/library/int-infer.test.js +4 -4
  1166. package/dist/library/ir-policy.js +13 -0
  1167. package/dist/library/ir-policy.js.map +1 -1
  1168. package/dist/library/library-cache.d.ts +1 -0
  1169. package/dist/library/library-cache.js.map +1 -1
  1170. package/dist/library/library-cache.test.js +5 -5
  1171. package/dist/library/library-profile.d.ts +4 -4
  1172. package/dist/library/library-profile.js +35 -7
  1173. package/dist/library/library-profile.js.map +1 -1
  1174. package/dist/library/prepare.js +13 -1
  1175. package/dist/library/prepare.js.map +1 -1
  1176. package/dist/native/cli.js +5 -0
  1177. package/dist/native/cli.js.map +1 -1
  1178. package/dist/native/compiler.js +2 -2
  1179. package/dist/native/compiler.js.map +1 -1
  1180. package/dist/native/compiler.test.js +2 -2
  1181. package/dist/native/prepare.js +7 -0
  1182. package/dist/native/prepare.js.map +1 -1
  1183. package/dist/native/sanitizer.test.js +12 -0
  1184. package/dist/native/sanitizer.test.js.map +1 -1
  1185. package/dist/native/toolchain.d.ts +2 -0
  1186. package/dist/native/toolchain.js +10 -1
  1187. package/dist/native/toolchain.js.map +1 -1
  1188. package/dist/native/toolchain.test.js +39 -1
  1189. package/dist/native/toolchain.test.js.map +1 -1
  1190. package/dist/startup-cache.d.ts +1 -0
  1191. package/dist/startup-cache.js +1 -0
  1192. package/dist/startup-cache.js.map +1 -1
  1193. package/dist/wasm/base64.d.ts +5 -0
  1194. package/dist/wasm/base64.js +62 -0
  1195. package/dist/wasm/base64.js.map +1 -0
  1196. package/dist/wasm/binary.d.ts +36 -0
  1197. package/dist/wasm/binary.js +1976 -0
  1198. package/dist/wasm/binary.js.map +1 -0
  1199. package/dist/wasm/binary.test.d.ts +1 -0
  1200. package/dist/wasm/binary.test.js +190 -0
  1201. package/dist/wasm/binary.test.js.map +1 -0
  1202. package/dist/wasm/discover.d.ts +38 -0
  1203. package/dist/wasm/discover.js +377 -0
  1204. package/dist/wasm/discover.js.map +1 -0
  1205. package/dist/wasm/discover.test.d.ts +1 -0
  1206. package/dist/wasm/discover.test.js +24 -0
  1207. package/dist/wasm/discover.test.js.map +1 -0
  1208. package/dist/wasm/module.d.ts +151 -0
  1209. package/dist/wasm/module.js +575 -0
  1210. package/dist/wasm/module.js.map +1 -0
  1211. package/dist/wasm/translate.d.ts +48 -0
  1212. package/dist/wasm/translate.js +2129 -0
  1213. package/dist/wasm/translate.js.map +1 -0
  1214. package/dist/wasm/translate.test.d.ts +1 -0
  1215. package/dist/wasm/translate.test.js +207 -0
  1216. package/dist/wasm/translate.test.js.map +1 -0
  1217. package/package.json +21 -20
  1218. package/surface-manifest.json +303 -19
@@ -1,7 +1,7 @@
1
1
  import { dynUndefinedExpr, 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
6
  import { newFnCtx, own } from "../lowerer.js";
7
7
  import { buildBytesSortFn, closureKeyOrder } from "../lower-array-sort.js";
@@ -10,6 +10,7 @@ import { lowerDynObjectLiteral } from "../expressions/object-literals.js";
10
10
  import { defaultAfterUndefined, lowerOptionalArgument, lowerStaticallyUndefinedArgument, } from "../optional-arguments.js";
11
11
  import { lowerCheckedArrayFrom } from "./array-construction.js";
12
12
  import { lowerToNumberArgument } from "../lower-exprs.js";
13
+ import { lowerBytesIteratorValue } from "../iterator-adapters.js";
13
14
  /** TypedArray.prototype.sort and toSorted. The receiver and comparator
14
15
  * expressions are evaluated before entering the helper (buildBytesSortFn).
15
16
  * The default order is numeric, so the comparator-less form sorts by value
@@ -18,12 +19,12 @@ function lowerBytesSortCall(lowerer, call, access, bytesT) {
18
19
  const loc = locOf(call);
19
20
  const method = access.name.text;
20
21
  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);
22
+ if (call.arguments.nodes.length > 1 || call.arguments.nodes.some(ts.isSpreadElement)) {
23
+ lowerer.noLowering(`.${method} with ${call.arguments.nodes.length} arguments on ${BYTES_ELEMENT_NAME[bytesT.elem]}`, call);
23
24
  }
24
25
  const receiver = lowerer.lowerExprExpecting(access.expression, bytesT);
25
- const undefinedArg = call.arguments[0]
26
- ? lowerStaticallyUndefinedArgument(lowerer, call.arguments[0])
26
+ const undefinedArg = call.arguments.nodes[0]
27
+ ? lowerStaticallyUndefinedArgument(lowerer, call.arguments.nodes[0])
27
28
  : null;
28
29
  const helperFor = (key, arity, hasComparator, order) => {
29
30
  const cacheKey = `bytes.${method}:${bytesT.elem}:${key}`;
@@ -35,7 +36,7 @@ function lowerBytesSortCall(lowerer, call, access, bytesT) {
35
36
  }
36
37
  return helper;
37
38
  };
38
- if (call.arguments.length === 0 || undefinedArg) {
39
+ if (call.arguments.nodes.length === 0 || undefinedArg) {
39
40
  const helper = helperFor("default", 0, false, null);
40
41
  if (!undefinedArg || isSafeToDiscard(undefinedArg)) {
41
42
  return { kind: "call", callee: helper, args: [receiver], type: bytesT, loc };
@@ -67,14 +68,14 @@ function lowerBytesSortCall(lowerer, call, access, bytesT) {
67
68
  loc,
68
69
  };
69
70
  }
70
- const argNode = call.arguments[0];
71
+ const argNode = call.arguments.nodes[0];
71
72
  let fnArg = lowerer.lowerExpr(argNode);
72
73
  // As for Array sort: adapt a comparator over checked values to the
73
74
  // element ABI; arithmetic on inferred JS values still yields a number.
74
75
  if (fnArg.type.kind === "func" &&
75
76
  fnArg.type.params.length <= 2 &&
76
77
  fnArg.type.params.every((param) => lowerer.coercibleValue(F64, param))) {
77
- const result = fnArg.type.ret.kind === "dyn" && isJsSourceFile(argNode.getSourceFile())
78
+ const result = fnArg.type.ret.kind === "dyn" && isJsSourceFile(ts.getSourceFileOfNode(argNode))
78
79
  ? F64
79
80
  : fnArg.type.ret;
80
81
  const expected = funcOf(fnArg.type.params.map(() => F64), result);
@@ -101,7 +102,7 @@ function lowerBytesSortCall(lowerer, call, access, bytesT) {
101
102
  }
102
103
  /* ── typed arrays / Buffer ─────────────────────────────────────────────── */
103
104
  /** The typed-array constructors with a runtime representation, by lib
104
- * interface name. Other flavors (Float16Array, BigInt64Array, ...) fall through
105
+ * interface name. Other flavors (BigInt64Array, BigUint64Array) fall through
105
106
  * to the generic stdlib-constructor fence. DataView is handled separately. */
106
107
  const BYTES_CTORS = {
107
108
  Uint8Array: "u8",
@@ -111,6 +112,7 @@ const BYTES_CTORS = {
111
112
  Int16Array: "i16",
112
113
  Uint32Array: "u32",
113
114
  Int32Array: "i32",
115
+ Float16Array: "f16",
114
116
  Float32Array: "f32",
115
117
  Float64Array: "f64",
116
118
  };
@@ -128,9 +130,9 @@ const BYTES_CTORS = {
128
130
  * typed-array construction. */
129
131
  export function lowerBytesNew(lowerer, expr, symbol) {
130
132
  if (symbol != null &&
131
- (symbol.name === "ArrayBuffer" || symbol.name === "SharedArrayBuffer") &&
133
+ (ts.symbolName(symbol) === "ArrayBuffer" || ts.symbolName(symbol) === "SharedArrayBuffer") &&
132
134
  lowerer.isStdlibSymbol(symbol)) {
133
- const args = expr.arguments ?? [];
135
+ const args = expr.arguments?.nodes ?? [];
134
136
  if (args.length > 1 || args.some(ts.isSpreadElement)) {
135
137
  lowerer.noLowering("resizable ArrayBuffer construction", expr, "fixed-length ArrayBuffers accept a byte length; resizable storage is not supported yet");
136
138
  }
@@ -139,22 +141,22 @@ export function lowerBytesNew(lowerer, expr, symbol) {
139
141
  : dynUndefinedExpr(locOf(expr));
140
142
  return {
141
143
  kind: "libCall",
142
- fn: symbol.name === "SharedArrayBuffer" ? "sharedArrayBuffer.new" : "arrayBuffer.new",
144
+ fn: ts.symbolName(symbol) === "SharedArrayBuffer" ? "sharedArrayBuffer.new" : "arrayBuffer.new",
143
145
  args: [length],
144
146
  type: DYN,
145
147
  loc: locOf(expr),
146
148
  };
147
149
  }
148
- if (symbol && symbol.name === "DataView" && lowerer.isStdlibSymbol(symbol)) {
150
+ if (symbol && ts.symbolName(symbol) === "DataView" && lowerer.isStdlibSymbol(symbol)) {
149
151
  return lowerDataViewNew(lowerer, expr);
150
152
  }
151
- const elem = symbol ? own(BYTES_CTORS, symbol.name) : undefined;
153
+ const elem = symbol ? own(BYTES_CTORS, ts.symbolName(symbol)) : undefined;
152
154
  if (!elem || !symbol || !lowerer.isStdlibSymbol(symbol))
153
155
  return null;
154
- const name = symbol.name;
156
+ const name = ts.symbolName(symbol);
155
157
  const type = bytesOf(elem);
156
158
  const loc = locOf(expr);
157
- const args = expr.arguments ?? [];
159
+ const args = expr.arguments?.nodes ?? [];
158
160
  if (args.length === 0)
159
161
  return { kind: "bytesNew", source: null, type, loc };
160
162
  if (args.length >= 2 && args.length <= 3 && !args.some(ts.isSpreadElement)) {
@@ -162,8 +164,8 @@ export function lowerBytesNew(lowerer, expr, symbol) {
162
164
  }
163
165
  if (args.length === 1 && !ts.isSpreadElement(args[0])) {
164
166
  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));
167
+ if (ts.isArrayLiteralExpression(argNode) && !argNode.elements.nodes.some(ts.isSpreadElement)) {
168
+ const elems = argNode.elements.nodes.map((el) => lowerer.lowerExprExpecting(el, F64));
167
169
  const seed = { kind: "arrayLit", elems, type: arrayOf(F64), loc };
168
170
  return { kind: "bytesNew", source: seed, type, loc };
169
171
  }
@@ -197,9 +199,9 @@ export function lowerBytesStaticCall(lowerer, call, access) {
197
199
  if (lowerer.chainBlocked(call, access))
198
200
  return null;
199
201
  if (lowerer.isStdlibGlobal(access.expression, "ArrayBuffer") && access.name.text === "isView") {
200
- if (call.arguments.length !== 1 || call.arguments.some(ts.isSpreadElement))
202
+ if (call.arguments.nodes.length !== 1 || call.arguments.nodes.some(ts.isSpreadElement))
201
203
  lowerer.noLowering("ArrayBuffer.isView argument count", call);
202
- const arg = call.arguments[0];
204
+ const arg = call.arguments.nodes[0];
203
205
  return {
204
206
  kind: "libCall",
205
207
  fn: "arrayBuffer.isView",
@@ -211,17 +213,17 @@ export function lowerBytesStaticCall(lowerer, call, access) {
211
213
  if (access.name.text !== "from" || !ts.isIdentifier(access.expression))
212
214
  return null;
213
215
  const symbol = lowerer.resolveValueSymbol(access.expression);
214
- const elem = symbol ? own(BYTES_CTORS, symbol.name) : undefined;
216
+ const elem = symbol ? own(BYTES_CTORS, ts.symbolName(symbol)) : undefined;
215
217
  if (!elem || !lowerer.isStdlibSymbol(symbol ?? undefined))
216
218
  return null;
217
- if (call.arguments.length < 1 ||
218
- call.arguments.length > 3 ||
219
- call.arguments.some(ts.isSpreadElement)) {
219
+ if (call.arguments.nodes.length < 1 ||
220
+ call.arguments.nodes.length > 3 ||
221
+ call.arguments.nodes.some(ts.isSpreadElement)) {
220
222
  lowerer.noLowering("TypedArray.from with this argument count", call);
221
223
  }
222
- const node = call.arguments[0];
224
+ const node = call.arguments.nodes[0];
223
225
  const source = lowerer.lowerExpr(node);
224
- if (call.arguments.length > 1) {
226
+ if (call.arguments.nodes.length > 1) {
225
227
  if (!["string", "array", "bytes"].includes(source.type.kind))
226
228
  lowerer.noLowering("TypedArray.from mapper over this source representation", call);
227
229
  const loc = locOf(call);
@@ -268,9 +270,9 @@ export function lowerBytesStaticCall(lowerer, call, access) {
268
270
  callee: key,
269
271
  args: [
270
272
  lowerer.coerceInto(node, source, DYN),
271
- lowerer.lowerExprExpecting(call.arguments[1], DYN),
272
- call.arguments[2]
273
- ? lowerer.lowerExprExpecting(call.arguments[2], DYN)
273
+ lowerer.lowerExprExpecting(call.arguments.nodes[1], DYN),
274
+ call.arguments.nodes[2]
275
+ ? lowerer.lowerExprExpecting(call.arguments.nodes[2], DYN)
274
276
  : dynUndefinedExpr(loc),
275
277
  ],
276
278
  type: bytesOf(elem),
@@ -303,6 +305,7 @@ function lowerArrayBufferView(lowerer, args, elem, loc) {
303
305
  u8: "arrayBuffer.viewU8",
304
306
  u32: "arrayBuffer.viewU32",
305
307
  i32: "arrayBuffer.viewI32",
308
+ f16: "arrayBuffer.viewF16",
306
309
  f32: "arrayBuffer.viewF32",
307
310
  f64: "arrayBuffer.viewF64",
308
311
  dv: "arrayBuffer.viewDV",
@@ -316,7 +319,7 @@ function lowerArrayBufferView(lowerer, args, elem, loc) {
316
319
  };
317
320
  }
318
321
  function lowerDataViewNew(lowerer, expr) {
319
- const args = expr.arguments ?? [];
322
+ const args = expr.arguments?.nodes ?? [];
320
323
  if (!args.length || args.length > 3 || args.some(ts.isSpreadElement))
321
324
  lowerer.noLowering("DataView constructor argument count", expr);
322
325
  return lowerArrayBufferView(lowerer, args, "dv", locOf(expr));
@@ -338,10 +341,10 @@ export function lowerBytesMethodCall(lowerer, call, access) {
338
341
  if (!lowerer.isStdlibMember(access))
339
342
  return null;
340
343
  const loc = locOf(call);
341
- const nArgs = call.arguments.length;
344
+ const nArgs = call.arguments.nodes.length;
342
345
  // Encoded stream callbacks can receive strings even when JavaScript's
343
346
  // contextual inference still describes their parameter as a Buffer.
344
- if (name === "toString" && nArgs <= 1 && isJsSourceFile(call.getSourceFile())) {
347
+ if (name === "toString" && nArgs <= 1 && isJsSourceFile(ts.getSourceFileOfNode(call))) {
345
348
  const lowered = lowerer.lowerExpr(access.expression);
346
349
  const receiver = lowered.kind === "dynCheck" && lowered.value.type.kind === "dyn" ? lowered.value : lowered;
347
350
  if (receiver.type.kind === "dyn")
@@ -350,10 +353,10 @@ export function lowerBytesMethodCall(lowerer, call, access) {
350
353
  fn: "dyn.toString",
351
354
  args: [
352
355
  receiver,
353
- call.arguments[0]
354
- ? lowerer.lowerExprExpecting(call.arguments[0], DYN)
356
+ call.arguments.nodes[0]
357
+ ? lowerer.lowerExprExpecting(call.arguments.nodes[0], DYN)
355
358
  : dynUndefinedExpr(loc),
356
- { kind: "strLit", value: access.getText(), type: STRING, loc },
359
+ { kind: "strLit", value: ts.getTextOfNode(access), type: STRING, loc },
357
360
  ],
358
361
  type: STRING,
359
362
  loc,
@@ -362,6 +365,16 @@ export function lowerBytesMethodCall(lowerer, call, access) {
362
365
  if (name === "sort" || name === "toSorted") {
363
366
  return lowerBytesSortCall(lowerer, call, access, receiverIr);
364
367
  }
368
+ // values()/keys()/entries() as iterator objects (for...of heads and
369
+ // stored numeric iterators lower before this).
370
+ if ((name === "values" || name === "keys" || name === "entries") && nArgs === 0) {
371
+ const type = lowerer.mapTypeOf(lowerer.typeOf(call));
372
+ if (type?.kind === "generator") {
373
+ const value = lowerBytesIteratorValue(lowerer, lowerer.lowerExpr(access.expression), name, type, loc);
374
+ if (value)
375
+ return value;
376
+ }
377
+ }
365
378
  if (name === "toReversed") {
366
379
  if (nArgs !== 0) {
367
380
  lowerer.noLowering(`.toReversed with ${nArgs} arguments on typed arrays`, call);
@@ -376,7 +389,7 @@ export function lowerBytesMethodCall(lowerer, call, access) {
376
389
  };
377
390
  }
378
391
  if (receiverIr.elem === "u8" && name === "with") {
379
- if (nArgs !== 2 || call.arguments.some(ts.isSpreadElement)) {
392
+ if (nArgs !== 2 || call.arguments.nodes.some(ts.isSpreadElement)) {
380
393
  lowerer.noLowering(`.with with ${nArgs} arguments on Uint8Array`, call);
381
394
  }
382
395
  return {
@@ -384,15 +397,15 @@ export function lowerBytesMethodCall(lowerer, call, access) {
384
397
  method: "with",
385
398
  receiver: lowerer.lowerExprExpecting(access.expression, receiverIr),
386
399
  args: [
387
- lowerer.lowerExprExpecting(call.arguments[0], F64),
388
- lowerer.lowerExprExpecting(call.arguments[1], F64),
400
+ lowerer.lowerExprExpecting(call.arguments.nodes[0], F64),
401
+ lowerer.lowerExprExpecting(call.arguments.nodes[1], F64),
389
402
  ],
390
403
  type: receiverIr,
391
404
  loc,
392
405
  };
393
406
  }
394
407
  if (name === "join") {
395
- if (nArgs > 1 || call.arguments.some(ts.isSpreadElement)) {
408
+ if (nArgs > 1 || call.arguments.nodes.some(ts.isSpreadElement)) {
396
409
  lowerer.noLowering(`.join with ${nArgs} arguments on typed arrays`, call);
397
410
  }
398
411
  const separatorDefault = {
@@ -401,8 +414,8 @@ export function lowerBytesMethodCall(lowerer, call, access) {
401
414
  type: STRING,
402
415
  loc,
403
416
  };
404
- const separator = call.arguments[0]
405
- ? lowerOptionalArgument(lowerer, call.arguments[0], STRING, separatorDefault)
417
+ const separator = call.arguments.nodes[0]
418
+ ? lowerOptionalArgument(lowerer, call.arguments.nodes[0], STRING, separatorDefault)
406
419
  : separatorDefault;
407
420
  return {
408
421
  kind: "bytesIntrinsic",
@@ -420,7 +433,7 @@ export function lowerBytesMethodCall(lowerer, call, access) {
420
433
  const receiver = lowerer.lowerExprExpecting(access.expression, receiverIr);
421
434
  // A missing start is 0 and a missing end is the length (+Infinity
422
435
  // clamps to it), as for omitted arguments.
423
- const args = call.arguments.map((a, i) => lowerOptionalArgument(lowerer, a, F64, {
436
+ const args = call.arguments.nodes.map((a, i) => lowerOptionalArgument(lowerer, a, F64, {
424
437
  kind: "numLit",
425
438
  value: i === 0 ? 0 : Infinity,
426
439
  type: F64,
@@ -434,21 +447,19 @@ export function lowerBytesMethodCall(lowerer, call, access) {
434
447
  (() => {
435
448
  const nameSym = lowerer.checker.getSymbolAtLocation(access.name);
436
449
  return (nameSym !== undefined &&
437
- lowerer.checker
438
- .declarationsOf(nameSym)
439
- .some((d) => ts.isInterfaceDeclaration(d.parent) && d.parent.name.text === "Buffer"));
450
+ nameSym.declarations.some((d) => ts.isInterfaceDeclaration(d.parent) && d.parent.name.text === "Buffer"));
440
451
  })();
441
452
  const method = name === "subarray" || declaredOnBuffer ? "subarray" : "slice";
442
453
  return { kind: "bytesIntrinsic", method, receiver, args, type: receiverIr, loc };
443
454
  }
444
455
  if (name === "copyWithin") {
445
- if (nArgs > 3 || call.arguments.some(ts.isSpreadElement)) {
456
+ if (nArgs > 3 || call.arguments.nodes.some(ts.isSpreadElement)) {
446
457
  lowerer.noLowering(`.copyWithin with ${nArgs} arguments on typed arrays`, call);
447
458
  }
448
459
  const receiver = lowerer.lowerExprExpecting(access.expression, receiverIr);
449
460
  const args = [0, 0, Infinity].map((value, i) => {
450
461
  const fallback = { kind: "numLit", value, type: F64, loc };
451
- const node = call.arguments[i];
462
+ const node = call.arguments.nodes[i];
452
463
  return node ? lowerOptionalArgument(lowerer, node, F64, fallback) : fallback;
453
464
  });
454
465
  return { kind: "bytesIntrinsic", method: "copyWithin", receiver, args, type: receiverIr, loc };
@@ -457,22 +468,20 @@ export function lowerBytesMethodCall(lowerer, call, access) {
457
468
  !(() => {
458
469
  const symbol = lowerer.checker.getSymbolAtLocation(access.name);
459
470
  return (symbol !== undefined &&
460
- lowerer.checker
461
- .declarationsOf(symbol)
462
- .some((declaration) => ts.isInterfaceDeclaration(declaration.parent) &&
471
+ symbol.declarations.some((declaration) => ts.isInterfaceDeclaration(declaration.parent) &&
463
472
  declaration.parent.name.text === "Buffer"));
464
473
  })()) {
465
474
  // Typed arrays use element coercion and relative, clamped indices.
466
475
  // Buffer's same-named method keeps its pattern and offset validation.
467
- if (nArgs > 3 || call.arguments.some(ts.isSpreadElement)) {
476
+ if (nArgs > 3 || call.arguments.nodes.some(ts.isSpreadElement)) {
468
477
  lowerer.noLowering(`.fill with ${nArgs} arguments on typed arrays`, call);
469
478
  }
470
479
  const receiver = lowerer.lowerExprExpecting(access.expression, receiverIr);
471
480
  const zero = { kind: "numLit", value: 0, type: F64, loc };
472
- const v = call.arguments[0]
473
- ? lowerOptionalArgument(lowerer, call.arguments[0], F64, zero)
481
+ const v = call.arguments.nodes[0]
482
+ ? lowerOptionalArgument(lowerer, call.arguments.nodes[0], F64, zero)
474
483
  : zero;
475
- const idx = call.arguments.slice(1).map((a, i) => lowerOptionalArgument(lowerer, a, F64, {
484
+ const idx = call.arguments.nodes.slice(1).map((a, i) => lowerOptionalArgument(lowerer, a, F64, {
476
485
  kind: "numLit",
477
486
  value: i === 0 ? 0 : Infinity,
478
487
  type: F64,
@@ -492,13 +501,13 @@ export function lowerBytesMethodCall(lowerer, call, access) {
492
501
  lowerer.noLowering(`.set with ${nArgs} arguments on typed arrays`, call);
493
502
  }
494
503
  const receiver = lowerer.lowerExprExpecting(access.expression, receiverIr);
495
- const src = lowerer.lowerExpr(call.arguments[0]);
504
+ const src = lowerer.lowerExpr(call.arguments.nodes[0]);
496
505
  const method = src.type.kind === "bytes" ? "setFrom" : "setFromDyn";
497
506
  const args = [
498
- src.type.kind === "bytes" ? src : lowerer.coerceInto(call.arguments[0], src, DYN),
507
+ src.type.kind === "bytes" ? src : lowerer.coerceInto(call.arguments.nodes[0], src, DYN),
499
508
  ];
500
509
  if (nArgs === 2)
501
- args.push(lowerOptionalArgument(lowerer, call.arguments[1], F64, {
510
+ args.push(lowerOptionalArgument(lowerer, call.arguments.nodes[1], F64, {
502
511
  kind: "numLit",
503
512
  value: 0,
504
513
  type: F64,
@@ -513,9 +522,7 @@ export function lowerBytesMethodCall(lowerer, call, access) {
513
522
  const declaredOnBuffer = (() => {
514
523
  const nameSym = lowerer.checker.getSymbolAtLocation(access.name);
515
524
  return (nameSym !== undefined &&
516
- lowerer.checker
517
- .declarationsOf(nameSym)
518
- .some((d) => ts.isInterfaceDeclaration(d.parent) && d.parent.name.text === "Buffer"));
525
+ nameSym.declarations.some((d) => ts.isInterfaceDeclaration(d.parent) && d.parent.name.text === "Buffer"));
519
526
  })();
520
527
  if (receiverIr.elem !== "u8" || !declaredOnBuffer) {
521
528
  lowerer.noLowering("typed-array toString", call, 'Buffer.from(x).toString("utf8" | "hex" | "base64") is the lowered string conversion');
@@ -523,7 +530,7 @@ export function lowerBytesMethodCall(lowerer, call, access) {
523
530
  if (nArgs > 3)
524
531
  lowerer.noLowering(`.toString with ${nArgs} arguments on Buffers`, call);
525
532
  const receiver = lowerer.lowerExprExpecting(access.expression, receiverIr);
526
- const encNode = call.arguments[0];
533
+ const encNode = call.arguments.nodes[0];
527
534
  let method = "toString";
528
535
  let enc = { kind: "strLit", value: "utf8", type: STRING, loc };
529
536
  if (encNode) {
@@ -563,9 +570,9 @@ export function lowerBytesMethodCall(lowerer, call, access) {
563
570
  // receiver's length, because EXPLICIT negative ends clamp to empty
564
571
  // in Node and no in-band sentinel can represent "omitted" safely.
565
572
  if (nArgs > 1) {
566
- const start = lowerer.lowerExprExpecting(call.arguments[1], F64);
573
+ const start = lowerer.lowerExprExpecting(call.arguments.nodes[1], F64);
567
574
  if (nArgs === 3) {
568
- const end = lowerer.lowerExprExpecting(call.arguments[2], F64);
575
+ const end = lowerer.lowerExprExpecting(call.arguments.nodes[2], F64);
569
576
  return {
570
577
  kind: "bytesIntrinsic",
571
578
  method,
@@ -588,9 +595,7 @@ export function lowerBytesMethodCall(lowerer, call, access) {
588
595
  const declOnBuffer = (() => {
589
596
  const nameSym = lowerer.checker.getSymbolAtLocation(access.name);
590
597
  return (nameSym !== undefined &&
591
- lowerer.checker
592
- .declarationsOf(nameSym)
593
- .some((d) => ts.isInterfaceDeclaration(d.parent) && d.parent.name.text === "Buffer"));
598
+ nameSym.declarations.some((d) => ts.isInterfaceDeclaration(d.parent) && d.parent.name.text === "Buffer"));
594
599
  })();
595
600
  if (declOnBuffer && receiverIr.elem === "u8") {
596
601
  const bufMethod = lowerBufferInstanceMethod(lowerer, call, access, name, loc);
@@ -605,7 +610,7 @@ export function lowerBytesMethodCall(lowerer, call, access) {
605
610
  lowerer.noLowering(`.${name} with ${nArgs} arguments`, call);
606
611
  }
607
612
  const receiver = lowerer.lowerExprExpecting(access.expression, receiverIr);
608
- const offsetNode = call.arguments[required];
613
+ const offsetNode = call.arguments.nodes[required];
609
614
  const offset = offsetNode
610
615
  ? lowerer.lowerExprExpecting(offsetNode, F64)
611
616
  : { kind: "numLit", value: 0, type: F64, loc };
@@ -620,7 +625,7 @@ export function lowerBytesMethodCall(lowerer, call, access) {
620
625
  loc,
621
626
  };
622
627
  }
623
- const value = lowerer.lowerExprExpecting(call.arguments[0], BIGINT_T);
628
+ const value = lowerer.lowerExprExpecting(call.arguments.nodes[0], BIGINT_T);
624
629
  return {
625
630
  kind: "libCall",
626
631
  fn: "bigint.bufferWrite",
@@ -645,7 +650,7 @@ export function lowerBytesMethodCall(lowerer, call, access) {
645
650
  }
646
651
  const receiver = lowerer.lowerExprExpecting(access.expression, receiverIr);
647
652
  const kind = { kind: "strLit", value: numKind, type: STRING, loc };
648
- const args = [kind, ...call.arguments.map((a) => lowerer.lowerExprExpecting(a, F64))];
653
+ const args = [kind, ...call.arguments.nodes.map((a) => lowerer.lowerExprExpecting(a, F64))];
649
654
  if (nArgs === required) {
650
655
  args.push({ kind: "numLit", value: 0, type: F64, loc }); // Node's offset default
651
656
  }
@@ -670,7 +675,7 @@ export function lowerBytesMethodCall(lowerer, call, access) {
670
675
  }
671
676
  const receiver = lowerer.lowerExprExpecting(access.expression, receiverIr);
672
677
  const kind = { kind: "strLit", value: varKind, type: STRING, loc };
673
- const args = [kind, ...call.arguments.map((a) => lowerer.lowerExprExpecting(a, F64))];
678
+ const args = [kind, ...call.arguments.nodes.map((a) => lowerer.lowerExprExpecting(a, F64))];
674
679
  return {
675
680
  kind: "bytesIntrinsic",
676
681
  method: write ? "writeNumVar" : "readNumVar",
@@ -690,10 +695,10 @@ export function lowerBytesMethodCall(lowerer, call, access) {
690
695
  if (nArgs < 1 || nArgs > 2)
691
696
  lowerer.noLowering(`.${name} with ${nArgs} arguments`, call);
692
697
  const receiver = lowerer.lowerExprExpecting(access.expression, receiverIr);
693
- const offset = lowerer.lowerExprExpecting(call.arguments[0], F64);
698
+ const offset = lowerer.lowerExprExpecting(call.arguments.nodes[0], F64);
694
699
  const sign = { kind: "boolLit", value: dvBigGetter.sign, type: BOOL, loc };
695
- const le = call.arguments[1]
696
- ? lowerer.lowerExprExpecting(call.arguments[1], BOOL)
700
+ const le = call.arguments.nodes[1]
701
+ ? lowerer.lowerExprExpecting(call.arguments.nodes[1], BOOL)
697
702
  : { kind: "boolLit", value: false, type: BOOL, loc };
698
703
  return {
699
704
  kind: "libCall",
@@ -711,9 +716,9 @@ export function lowerBytesMethodCall(lowerer, call, access) {
711
716
  }
712
717
  const receiver = lowerer.lowerExprExpecting(access.expression, receiverIr);
713
718
  // ToIndex(undefined) is ToIndex(NaN): a missing offset reads offset 0.
714
- const args = [lowerToNumberArgument(lowerer, call.arguments[0])];
719
+ const args = [lowerToNumberArgument(lowerer, call.arguments.nodes[0])];
715
720
  if (nArgs === 2)
716
- args.push(lowerer.lowerExprExpecting(call.arguments[1], BOOL));
721
+ args.push(lowerer.lowerExprExpecting(call.arguments.nodes[1], BOOL));
717
722
  return { kind: "bytesIntrinsic", method: dvGetter.method, receiver, args, type: F64, loc };
718
723
  }
719
724
  // DataView setters — the getters' mirror: (byteOffset, value) plus the
@@ -727,10 +732,10 @@ export function lowerBytesMethodCall(lowerer, call, access) {
727
732
  if (nArgs < 2 || nArgs > 3)
728
733
  lowerer.noLowering(`.${name} with ${nArgs} arguments`, call);
729
734
  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)
735
+ const offset = lowerer.lowerExprExpecting(call.arguments.nodes[0], F64);
736
+ const value = lowerer.lowerExprExpecting(call.arguments.nodes[1], BIGINT_T);
737
+ const le = call.arguments.nodes[2]
738
+ ? lowerer.lowerExprExpecting(call.arguments.nodes[2], BOOL)
734
739
  : { kind: "boolLit", value: false, type: BOOL, loc };
735
740
  return {
736
741
  kind: "libCall",
@@ -749,11 +754,11 @@ export function lowerBytesMethodCall(lowerer, call, access) {
749
754
  // The offset (ToIndex) and the value (ToNumber) treat a missing value
750
755
  // as NaN.
751
756
  const args = [
752
- lowerToNumberArgument(lowerer, call.arguments[0]),
753
- lowerToNumberArgument(lowerer, call.arguments[1]),
757
+ lowerToNumberArgument(lowerer, call.arguments.nodes[0]),
758
+ lowerToNumberArgument(lowerer, call.arguments.nodes[1]),
754
759
  ];
755
760
  if (nArgs === 3)
756
- args.push(lowerer.lowerExprExpecting(call.arguments[2], BOOL));
761
+ args.push(lowerer.lowerExprExpecting(call.arguments.nodes[2], BOOL));
757
762
  return { kind: "bytesIntrinsic", method: dvSetter.method, receiver, args, type: VOID, loc };
758
763
  }
759
764
  return null;
@@ -828,7 +833,7 @@ const BUF_NUM_VAR_METHODS = {
828
833
  * (bufEncoding's fence); a trailing string-typed argument is the
829
834
  * encoding, exactly Node's overloads. */
830
835
  function lowerBufferInstanceMethod(lowerer, call, access, name, loc) {
831
- const args = call.arguments;
836
+ const args = call.arguments.nodes;
832
837
  const nArgs = args.length;
833
838
  if (args.some(ts.isSpreadElement))
834
839
  return null;
@@ -876,10 +881,12 @@ function lowerBufferInstanceMethod(lowerer, call, access, name, loc) {
876
881
  lowerer.noLowering(`.compare with ${nArgs} arguments`, call);
877
882
  const fast = nArgs >= 1 &&
878
883
  argIrKind(0)?.kind === "bytes" &&
879
- call.arguments.slice(1).every((a) => lowerer.mapTypeOf(lowerer.typeOf(a))?.kind === "f64");
884
+ call.arguments.nodes
885
+ .slice(1)
886
+ .every((a) => lowerer.mapTypeOf(lowerer.typeOf(a))?.kind === "f64");
880
887
  if (fast) {
881
888
  const target = u8Arg(0);
882
- const idx = call.arguments.slice(1).map((a) => lowerer.lowerExprExpecting(a, F64));
889
+ const idx = call.arguments.nodes.slice(1).map((a) => lowerer.lowerExprExpecting(a, F64));
883
890
  const receiver = lowerer.lowerExprExpecting(access.expression, BYTES_U8);
884
891
  return {
885
892
  kind: "bytesIntrinsic",
@@ -960,7 +967,7 @@ function lowerBufferInstanceMethod(lowerer, call, access, name, loc) {
960
967
  lowerer.noLowering(`.fill with ${nArgs} arguments`, call);
961
968
  // A trailing string-typed arg past the value is the encoding.
962
969
  let encNode;
963
- let idxNodes = call.arguments.slice(1);
970
+ let idxNodes = call.arguments.nodes.slice(1);
964
971
  if (idxNodes.length > 0 && isStringArg(nArgs - 1)) {
965
972
  encNode = idxNodes[idxNodes.length - 1];
966
973
  idxNodes = idxNodes.slice(0, -1);
@@ -1013,7 +1020,7 @@ function lowerBufferInstanceMethod(lowerer, call, access, name, loc) {
1013
1020
  if (nArgs < 1 || nArgs > 4)
1014
1021
  lowerer.noLowering(`.copy with ${nArgs} arguments`, call);
1015
1022
  const target = u8Arg(0);
1016
- const idx = call.arguments.slice(1).map((a) => lowerer.lowerExprExpecting(a, F64));
1023
+ const idx = call.arguments.nodes.slice(1).map((a) => lowerer.lowerExprExpecting(a, F64));
1017
1024
  const receiver = lowerer.lowerExprExpecting(access.expression, BYTES_U8);
1018
1025
  return {
1019
1026
  kind: "bytesIntrinsic",
@@ -1036,7 +1043,7 @@ function lowerBufferInstanceMethod(lowerer, call, access, name, loc) {
1036
1043
  // (str), (str, enc), (str, offset), (str, offset, enc),
1037
1044
  // (str, offset, length), (str, offset, length, enc).
1038
1045
  let encNode;
1039
- let idxNodes = call.arguments.slice(1);
1046
+ let idxNodes = call.arguments.nodes.slice(1);
1040
1047
  if (idxNodes.length > 0 && isStringArg(nArgs - 1)) {
1041
1048
  encNode = idxNodes[idxNodes.length - 1];
1042
1049
  idxNodes = idxNodes.slice(0, -1);
@@ -1081,6 +1088,7 @@ const DV_GETTERS = {
1081
1088
  getInt16: { method: "dvGetInt16", le: true },
1082
1089
  getUint32: { method: "dvGetUint32", le: true },
1083
1090
  getInt32: { method: "dvGetInt32", le: true },
1091
+ getFloat16: { method: "dvGetFloat16", le: true },
1084
1092
  getFloat32: { method: "dvGetFloat32", le: true },
1085
1093
  getFloat64: { method: "dvGetFloat64", le: true },
1086
1094
  };
@@ -1091,6 +1099,7 @@ const DV_SETTERS = {
1091
1099
  setInt16: { method: "dvSetInt16", le: true },
1092
1100
  setUint32: { method: "dvSetUint32", le: true },
1093
1101
  setInt32: { method: "dvSetInt32", le: true },
1102
+ setFloat16: { method: "dvSetFloat16", le: true },
1094
1103
  setFloat32: { method: "dvSetFloat32", le: true },
1095
1104
  setFloat64: { method: "dvSetFloat64", le: true },
1096
1105
  };
@@ -1107,9 +1116,7 @@ function knownBufferProducer(lowerer, source, seen = new Set()) {
1107
1116
  if (!symbol || seen.has(symbol))
1108
1117
  return false;
1109
1118
  seen.add(symbol);
1110
- return lowerer.checker
1111
- .declarationsOf(symbol)
1112
- .some((decl) => ts.isVariableDeclaration(decl) &&
1119
+ return symbol.declarations.some((decl) => ts.isVariableDeclaration(decl) &&
1113
1120
  ts.isVariableDeclarationList(decl.parent) &&
1114
1121
  (decl.parent.flags & ts.NodeFlags.Const) !== 0 &&
1115
1122
  decl.initializer !== undefined &&
@@ -1132,7 +1139,7 @@ function knownBufferProducer(lowerer, source, seen = new Set()) {
1132
1139
  return true;
1133
1140
  if (!ts.isPropertyAccessExpression(callee) ||
1134
1141
  callee.name.text !== "digest" ||
1135
- node.arguments.length !== 0)
1142
+ node.arguments.nodes.length !== 0)
1136
1143
  return false;
1137
1144
  const type = lowerer.mapTypeOf(lowerer.typeOf(callee.expression));
1138
1145
  return type?.kind === "cryptoHash" || type?.kind === "cryptoHmac";
@@ -1152,12 +1159,13 @@ function lowerBufferStaticValue(lowerer, call, access) {
1152
1159
  return null;
1153
1160
  const member = access.name.text;
1154
1161
  const loc = locOf(call);
1155
- const args = call.arguments;
1162
+ const args = call.arguments.nodes;
1156
1163
  if (member === "from") {
1157
1164
  if (args.length >= 1 &&
1158
1165
  args.length <= 3 &&
1159
1166
  !args.some(ts.isSpreadElement) &&
1160
- ((symbol) => symbol != null && (symbol.name === "ArrayBuffer" || symbol.name === "SharedArrayBuffer"))(lowerer.typeOf(args[0]).getSymbol())) {
1167
+ ((symbol) => symbol != null &&
1168
+ (ts.symbolName(symbol) === "ArrayBuffer" || ts.symbolName(symbol) === "SharedArrayBuffer"))(lowerer.typeOf(args[0]).getSymbol())) {
1161
1169
  return lowerArrayBufferView(lowerer, args, "u8", loc);
1162
1170
  }
1163
1171
  // Buffer.from(x.buffer[, byteOffset[, length]]): a u8 VIEW sharing
@@ -1188,11 +1196,12 @@ function lowerBufferStaticValue(lowerer, call, access) {
1188
1196
  }
1189
1197
  if (args.length >= 1 && args.length <= 2 && !args.some(ts.isSpreadElement)) {
1190
1198
  const argNode = args[0];
1191
- if (ts.isArrayLiteralExpression(argNode) && !argNode.elements.some(ts.isSpreadElement)) {
1199
+ if (ts.isArrayLiteralExpression(argNode) &&
1200
+ !argNode.elements.nodes.some(ts.isSpreadElement)) {
1192
1201
  // A number[] literal (contextually typed by the lib's readonly
1193
1202
  // number[] slot — build it element-wise, the Set-seed pattern).
1194
1203
  if (args.length === 1) {
1195
- const elems = argNode.elements.map((el) => lowerer.lowerExprExpecting(el, F64));
1204
+ const elems = argNode.elements.nodes.map((el) => lowerer.lowerExprExpecting(el, F64));
1196
1205
  const seed = { kind: "arrayLit", elems, type: arrayOf(F64), loc };
1197
1206
  return { kind: "libCall", fn: "buffer.poolFromArray", args: [seed], type: BYTES_U8, loc };
1198
1207
  }
@@ -1244,7 +1253,12 @@ function lowerBufferStaticValue(lowerer, call, access) {
1244
1253
  }
1245
1254
  return { kind: "libCall", fn, args: [s, enc], type: BYTES_U8, loc };
1246
1255
  }
1247
- if (args.length === 1 && srcIr?.kind === "bytes" && srcIr.elem === "u8") {
1256
+ // A checker type with no mapping (pako's conditional `O extends
1257
+ // { toText: true } ? string : Uint8Array` result) whose lowered
1258
+ // value is a u8 view copies like the typed form.
1259
+ if (args.length === 1 &&
1260
+ ((srcIr?.kind === "bytes" && srcIr.elem === "u8") ||
1261
+ (srcIr === null && value.type.kind === "bytes" && value.type.elem === "u8"))) {
1248
1262
  return {
1249
1263
  kind: "libCall",
1250
1264
  fn: "buffer.poolFromBytes",
@@ -1262,6 +1276,29 @@ function lowerBufferStaticValue(lowerer, call, access) {
1262
1276
  loc,
1263
1277
  };
1264
1278
  }
1279
+ // A union of strings, u8 views and undefined/null (a JS-inferred
1280
+ // npm result such as pako's deflate): the checked form dispatches
1281
+ // on the runtime kind exactly as for an untyped JS value, Node's
1282
+ // TypeError for the unit arms included.
1283
+ if (args.length === 1 &&
1284
+ value.type.kind === "union" &&
1285
+ lowerer.dynConvertible(value.type) &&
1286
+ lowerer.unions
1287
+ .get(value.type.unionId)
1288
+ ?.arms.every((arm) => arm.kind === "string" ||
1289
+ (arm.kind === "bytes" && arm.elem === "u8") ||
1290
+ isUnitType(arm)) === true) {
1291
+ return {
1292
+ kind: "libCall",
1293
+ fn: "buffer.poolFromDyn",
1294
+ args: [
1295
+ lowerer.coerceToExpected(value, DYN),
1296
+ { kind: "strLit", value: "utf8", type: STRING, loc },
1297
+ ],
1298
+ type: BYTES_U8,
1299
+ loc,
1300
+ };
1301
+ }
1265
1302
  }
1266
1303
  }
1267
1304
  lowerer.noLowering("Buffer.from with this argument shape", call, "supported: Buffer.from(string, encoding?), Buffer.from(u8Array) — a copy — " +
@@ -1333,14 +1370,29 @@ function lowerBufferStaticValue(lowerer, call, access) {
1333
1370
  }
1334
1371
  const argNode = args[0];
1335
1372
  let list;
1336
- if (ts.isArrayLiteralExpression(argNode) && !argNode.elements.some(ts.isSpreadElement)) {
1337
- const elems = argNode.elements.map((el) => lowerer.lowerExprExpecting(el, BYTES_U8));
1373
+ if (ts.isArrayLiteralExpression(argNode) && !argNode.elements.nodes.some(ts.isSpreadElement)) {
1374
+ const elems = argNode.elements.nodes.map((el) => lowerer.lowerExprExpecting(el, BYTES_U8));
1338
1375
  list = { kind: "arrayLit", elems, type: arrayOf(BYTES_U8), loc };
1339
1376
  }
1340
1377
  else {
1341
1378
  list = lowerer.lowerExpr(argNode);
1342
1379
  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");
1380
+ // Any other list (JavaScript's untyped `const chunks = []`, or a
1381
+ // union of arrays): the runtime checks it as Node does (an Array of
1382
+ // Uint8Arrays, the ERR_INVALID_ARG_TYPE errors otherwise) before
1383
+ // concatenating.
1384
+ const value = list.type.kind === "dyn" ? list : { kind: "dynFrom", value: list, type: DYN, loc };
1385
+ if (args.length === 2) {
1386
+ const total = lowerer.lowerExprExpecting(args[1], F64);
1387
+ return {
1388
+ kind: "libCall",
1389
+ fn: "buffer.concatLenDyn",
1390
+ args: [value, total],
1391
+ type: BYTES_U8,
1392
+ loc,
1393
+ };
1394
+ }
1395
+ return { kind: "libCall", fn: "buffer.concatDyn", args: [value], type: BYTES_U8, loc };
1344
1396
  }
1345
1397
  }
1346
1398
  if (args.length === 2) {
@@ -1406,7 +1458,9 @@ function lowerBufferStaticValue(lowerer, call, access) {
1406
1458
  // Untyped stream chunks retain the native checked value's Buffer
1407
1459
  // flavor. Plain bytes are Uint8Arrays at this boundary; inspecting
1408
1460
  // only the bytes tag would incorrectly identify them as Buffers.
1409
- const checked = isJsSourceFile(call.getSourceFile()) && v.kind === "dynCheck" && v.value.type.kind === "dyn"
1461
+ const checked = isJsSourceFile(ts.getSourceFileOfNode(call)) &&
1462
+ v.kind === "dynCheck" &&
1463
+ v.value.type.kind === "dyn"
1410
1464
  ? v.value
1411
1465
  : v;
1412
1466
  if (checked.type.kind === "dyn") {
@@ -1446,6 +1500,12 @@ function lowerBufferStaticValue(lowerer, call, access) {
1446
1500
  };
1447
1501
  }
1448
1502
  }
1503
+ // A typed view of unknown provenance (a Uint8Array parameter,
1504
+ // safe-buffer's Buffer.from result): Buffer is a brand of the view,
1505
+ // which the runtime keeps, so the test reads it.
1506
+ if (v.type.kind === "bytes") {
1507
+ return { kind: "libCall", fn: "buffer.isBranded", args: [v], type: BOOL, loc };
1508
+ }
1449
1509
  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
1510
  }
1451
1511
  lowerer.noLowering("Buffer.isBuffer with this argument shape", call);