@scriptc/compiler 0.2.4 → 0.2.6

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 (1201) hide show
  1. package/ambient/scriptc-node-fallback.d.ts +972 -245
  2. package/ambient/scriptc-overrides.d.ts +5 -1
  3. package/ambient/scriptc.d.ts +22 -2
  4. package/dist/backend/build-cache.d.ts +4 -0
  5. package/dist/backend/build-cache.js +16 -2
  6. package/dist/backend/build-cache.js.map +1 -1
  7. package/dist/backend/cycle-analysis.js +17 -5
  8. package/dist/backend/cycle-analysis.js.map +1 -1
  9. package/dist/backend/cycle-analysis.test.js +50 -11
  10. package/dist/backend/cycle-analysis.test.js.map +1 -1
  11. package/dist/backend/debug-symbols.js.map +1 -1
  12. package/dist/backend/executable-features.js +3 -1
  13. package/dist/backend/executable-features.js.map +1 -1
  14. package/dist/backend/external-c.d.ts +13 -6
  15. package/dist/backend/external-c.js +15 -3
  16. package/dist/backend/external-c.js.map +1 -1
  17. package/dist/backend/ffi-callbacks.js +6 -9
  18. package/dist/backend/ffi-callbacks.js.map +1 -1
  19. package/dist/backend/library-identity-markers.js.map +1 -1
  20. package/dist/backend/library-pack.d.ts +1 -1
  21. package/dist/backend/library-pack.js +81 -24
  22. package/dist/backend/library-pack.js.map +1 -1
  23. package/dist/backend/link-plan-core.d.ts +2 -0
  24. package/dist/backend/link-plan-core.js +10 -2
  25. package/dist/backend/link-plan-core.js.map +1 -1
  26. package/dist/backend/link-plan.d.ts +2 -1
  27. package/dist/backend/link-plan.js +7 -5
  28. package/dist/backend/link-plan.js.map +1 -1
  29. package/dist/backend/linker.d.ts +1 -1
  30. package/dist/backend/linker.js +42 -23
  31. package/dist/backend/linker.js.map +1 -1
  32. package/dist/backend/literals.js +5 -4
  33. package/dist/backend/literals.js.map +1 -1
  34. package/dist/backend/literals.test.js +30 -5
  35. package/dist/backend/literals.test.js.map +1 -1
  36. package/dist/backend/llvm/blocks.test.js +5 -2
  37. package/dist/backend/llvm/blocks.test.js.map +1 -1
  38. package/dist/backend/llvm/borrowed-inputs.js.map +1 -1
  39. package/dist/backend/llvm/borrowed-receivers.js +43 -19
  40. package/dist/backend/llvm/borrowed-receivers.js.map +1 -1
  41. package/dist/backend/llvm/byte-numbers.js +38 -5
  42. package/dist/backend/llvm/byte-numbers.js.map +1 -1
  43. package/dist/backend/llvm/byte-windows.d.ts +31 -0
  44. package/dist/backend/llvm/byte-windows.js +334 -0
  45. package/dist/backend/llvm/byte-windows.js.map +1 -0
  46. package/dist/backend/llvm/byte-windows.test.d.ts +1 -0
  47. package/dist/backend/llvm/byte-windows.test.js +244 -0
  48. package/dist/backend/llvm/byte-windows.test.js.map +1 -0
  49. package/dist/backend/llvm/bytes-bounds.js +73 -22
  50. package/dist/backend/llvm/bytes-bounds.js.map +1 -1
  51. package/dist/backend/llvm/call-lifetimes.d.ts +5 -2
  52. package/dist/backend/llvm/call-lifetimes.js +72 -19
  53. package/dist/backend/llvm/call-lifetimes.js.map +1 -1
  54. package/dist/backend/llvm/call-lifetimes.test.js +159 -28
  55. package/dist/backend/llvm/call-lifetimes.test.js.map +1 -1
  56. package/dist/backend/llvm/checked-value-lifetimes.d.ts +4 -0
  57. package/dist/backend/llvm/checked-value-lifetimes.js +14 -4
  58. package/dist/backend/llvm/checked-value-lifetimes.js.map +1 -1
  59. package/dist/backend/llvm/classes.d.ts +14 -1
  60. package/dist/backend/llvm/classes.js +94 -19
  61. package/dist/backend/llvm/classes.js.map +1 -1
  62. package/dist/backend/llvm/classes.test.d.ts +1 -0
  63. package/dist/backend/llvm/classes.test.js +99 -0
  64. package/dist/backend/llvm/classes.test.js.map +1 -0
  65. package/dist/backend/llvm/common.js +4 -1
  66. package/dist/backend/llvm/common.js.map +1 -1
  67. package/dist/backend/llvm/constant-callbacks.d.ts +11 -0
  68. package/dist/backend/llvm/constant-callbacks.js +213 -0
  69. package/dist/backend/llvm/constant-callbacks.js.map +1 -0
  70. package/dist/backend/llvm/constant-callbacks.test.d.ts +1 -0
  71. package/dist/backend/llvm/constant-callbacks.test.js +124 -0
  72. package/dist/backend/llvm/constant-callbacks.test.js.map +1 -0
  73. package/dist/backend/llvm/counted-loops.js +10 -3
  74. package/dist/backend/llvm/counted-loops.js.map +1 -1
  75. package/dist/backend/llvm/debug-info.js +33 -13
  76. package/dist/backend/llvm/debug-info.js.map +1 -1
  77. package/dist/backend/llvm/debug-info.test.js +28 -6
  78. package/dist/backend/llvm/debug-info.test.js.map +1 -1
  79. package/dist/backend/llvm/dyn.d.ts +1 -1
  80. package/dist/backend/llvm/dyn.js +75 -56
  81. package/dist/backend/llvm/dyn.js.map +1 -1
  82. package/dist/backend/llvm/emitter.d.ts +28 -3
  83. package/dist/backend/llvm/emitter.js +506 -145
  84. package/dist/backend/llvm/emitter.js.map +1 -1
  85. package/dist/backend/llvm/emitter.test.js +247 -50
  86. package/dist/backend/llvm/emitter.test.js.map +1 -1
  87. package/dist/backend/llvm/expr-async.js +25 -6
  88. package/dist/backend/llvm/expr-async.js.map +1 -1
  89. package/dist/backend/llvm/expr-bytes.js +24 -4
  90. package/dist/backend/llvm/expr-bytes.js.map +1 -1
  91. package/dist/backend/llvm/expr-callbacks.js +10 -4
  92. package/dist/backend/llvm/expr-callbacks.js.map +1 -1
  93. package/dist/backend/llvm/expr-calls.js +110 -31
  94. package/dist/backend/llvm/expr-calls.js.map +1 -1
  95. package/dist/backend/llvm/expr-containers.d.ts +2 -0
  96. package/dist/backend/llvm/expr-containers.js +112 -41
  97. package/dist/backend/llvm/expr-containers.js.map +1 -1
  98. package/dist/backend/llvm/expr-control.js +1 -3
  99. package/dist/backend/llvm/expr-control.js.map +1 -1
  100. package/dist/backend/llvm/expr-dispatch.js +3 -1
  101. package/dist/backend/llvm/expr-dispatch.js.map +1 -1
  102. package/dist/backend/llvm/expr-dynamic.js +55 -7
  103. package/dist/backend/llvm/expr-dynamic.js.map +1 -1
  104. package/dist/backend/llvm/expr-island.js +26 -6
  105. package/dist/backend/llvm/expr-island.js.map +1 -1
  106. package/dist/backend/llvm/expr-primitives.js +95 -19
  107. package/dist/backend/llvm/expr-primitives.js.map +1 -1
  108. package/dist/backend/llvm/expr-primitives.test.js +44 -2
  109. package/dist/backend/llvm/expr-primitives.test.js.map +1 -1
  110. package/dist/backend/llvm/expr-records.js +10 -9
  111. package/dist/backend/llvm/expr-records.js.map +1 -1
  112. package/dist/backend/llvm/expr-stream-bridges.js +44 -26
  113. package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
  114. package/dist/backend/llvm/expr-stream-bridges.test.js +51 -14
  115. package/dist/backend/llvm/expr-stream-bridges.test.js.map +1 -1
  116. package/dist/backend/llvm/expr-stream-callbacks.js +34 -14
  117. package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
  118. package/dist/backend/llvm/integer-remainder.d.ts +7 -0
  119. package/dist/backend/llvm/integer-remainder.js +26 -0
  120. package/dist/backend/llvm/integer-remainder.js.map +1 -0
  121. package/dist/backend/llvm/integer-values.js +15 -4
  122. package/dist/backend/llvm/integer-values.js.map +1 -1
  123. package/dist/backend/llvm/integer-views.js +23 -7
  124. package/dist/backend/llvm/integer-views.js.map +1 -1
  125. package/dist/backend/llvm/integer-views.test.js +42 -7
  126. package/dist/backend/llvm/integer-views.test.js.map +1 -1
  127. package/dist/backend/llvm/layouts.js +1 -1
  128. package/dist/backend/llvm/layouts.js.map +1 -1
  129. package/dist/backend/llvm/lib-abi.js +20 -4
  130. package/dist/backend/llvm/lib-abi.js.map +1 -1
  131. package/dist/backend/llvm/lib-connect.js +7 -1
  132. package/dist/backend/llvm/lib-connect.js.map +1 -1
  133. package/dist/backend/llvm/lib-datagram.js +35 -10
  134. package/dist/backend/llvm/lib-datagram.js.map +1 -1
  135. package/dist/backend/llvm/lib-dispatch.js +42 -38
  136. package/dist/backend/llvm/lib-dispatch.js.map +1 -1
  137. package/dist/backend/llvm/lib-filesystem.js +33 -18
  138. package/dist/backend/llvm/lib-filesystem.js.map +1 -1
  139. package/dist/backend/llvm/lib-http2.js +60 -15
  140. package/dist/backend/llvm/lib-http2.js.map +1 -1
  141. package/dist/backend/llvm/lib-lookup.js +12 -5
  142. package/dist/backend/llvm/lib-lookup.js.map +1 -1
  143. package/dist/backend/llvm/lib-network.js +97 -31
  144. package/dist/backend/llvm/lib-network.js.map +1 -1
  145. package/dist/backend/llvm/lib-process.js +57 -14
  146. package/dist/backend/llvm/lib-process.js.map +1 -1
  147. package/dist/backend/llvm/lib-shared.js +122 -31
  148. package/dist/backend/llvm/lib-shared.js.map +1 -1
  149. package/dist/backend/llvm/lib-stream.js +33 -14
  150. package/dist/backend/llvm/lib-stream.js.map +1 -1
  151. package/dist/backend/llvm/lib-test.js +21 -7
  152. package/dist/backend/llvm/lib-test.js.map +1 -1
  153. package/dist/backend/llvm/lib-tls.js +69 -20
  154. package/dist/backend/llvm/lib-tls.js.map +1 -1
  155. package/dist/backend/llvm/local-array-reads.d.ts +9 -2
  156. package/dist/backend/llvm/local-array-reads.js +176 -89
  157. package/dist/backend/llvm/local-array-reads.js.map +1 -1
  158. package/dist/backend/llvm/local-array-reads.test.js +394 -62
  159. package/dist/backend/llvm/local-array-reads.test.js.map +1 -1
  160. package/dist/backend/llvm/local-union-storage.d.ts +25 -0
  161. package/dist/backend/llvm/local-union-storage.js +109 -0
  162. package/dist/backend/llvm/local-union-storage.js.map +1 -0
  163. package/dist/backend/llvm/local-union-storage.test.d.ts +1 -0
  164. package/dist/backend/llvm/local-union-storage.test.js +210 -0
  165. package/dist/backend/llvm/local-union-storage.test.js.map +1 -0
  166. package/dist/backend/llvm/loop-array-borrows.d.ts +11 -0
  167. package/dist/backend/llvm/loop-array-borrows.js +70 -0
  168. package/dist/backend/llvm/loop-array-borrows.js.map +1 -0
  169. package/dist/backend/llvm/loop-array-borrows.test.d.ts +1 -0
  170. package/dist/backend/llvm/loop-array-borrows.test.js +145 -0
  171. package/dist/backend/llvm/loop-array-borrows.test.js.map +1 -0
  172. package/dist/backend/llvm/map-read-lifetimes.d.ts +11 -2
  173. package/dist/backend/llvm/map-read-lifetimes.js +64 -19
  174. package/dist/backend/llvm/map-read-lifetimes.js.map +1 -1
  175. package/dist/backend/llvm/map-read-lifetimes.test.js +89 -17
  176. package/dist/backend/llvm/map-read-lifetimes.test.js.map +1 -1
  177. package/dist/backend/llvm/reference-effects.d.ts +5 -3
  178. package/dist/backend/llvm/reference-effects.js +74 -36
  179. package/dist/backend/llvm/reference-effects.js.map +1 -1
  180. package/dist/backend/llvm/reference-effects.test.js +92 -9
  181. package/dist/backend/llvm/reference-effects.test.js.map +1 -1
  182. package/dist/backend/llvm/shapes.d.ts +4 -1
  183. package/dist/backend/llvm/shapes.js +82 -24
  184. package/dist/backend/llvm/shapes.js.map +1 -1
  185. package/dist/backend/llvm/shapes.test.js +3 -1
  186. package/dist/backend/llvm/shapes.test.js.map +1 -1
  187. package/dist/backend/llvm/split-loops.d.ts +48 -0
  188. package/dist/backend/llvm/split-loops.js +183 -0
  189. package/dist/backend/llvm/split-loops.js.map +1 -0
  190. package/dist/backend/llvm/split.js +4 -11
  191. package/dist/backend/llvm/split.js.map +1 -1
  192. package/dist/backend/llvm/split.test.js +80 -8
  193. package/dist/backend/llvm/split.test.js.map +1 -1
  194. package/dist/backend/llvm/stack-callbacks.d.ts +14 -0
  195. package/dist/backend/llvm/stack-callbacks.js +73 -0
  196. package/dist/backend/llvm/stack-callbacks.js.map +1 -0
  197. package/dist/backend/llvm/stack-captures.d.ts +25 -0
  198. package/dist/backend/llvm/stack-captures.js +150 -0
  199. package/dist/backend/llvm/stack-captures.js.map +1 -0
  200. package/dist/backend/llvm/stack-unions.js +14 -5
  201. package/dist/backend/llvm/stack-unions.js.map +1 -1
  202. package/dist/backend/llvm/stack-unions.test.js +151 -32
  203. package/dist/backend/llvm/stack-unions.test.js.map +1 -1
  204. package/dist/backend/llvm/string-construction.js.map +1 -1
  205. package/dist/backend/llvm/string-construction.test.js +32 -7
  206. package/dist/backend/llvm/string-construction.test.js.map +1 -1
  207. package/dist/backend/llvm/string-lifetimes.js +14 -8
  208. package/dist/backend/llvm/string-lifetimes.js.map +1 -1
  209. package/dist/backend/llvm/string-lifetimes.test.js +119 -29
  210. package/dist/backend/llvm/string-lifetimes.test.js.map +1 -1
  211. package/dist/backend/llvm/string-slices.d.ts +20 -0
  212. package/dist/backend/llvm/string-slices.js +87 -0
  213. package/dist/backend/llvm/string-slices.js.map +1 -0
  214. package/dist/backend/llvm/string-slices.test.d.ts +1 -0
  215. package/dist/backend/llvm/string-slices.test.js +98 -0
  216. package/dist/backend/llvm/string-slices.test.js.map +1 -0
  217. package/dist/backend/llvm/switch-dispatch.d.ts +9 -0
  218. package/dist/backend/llvm/switch-dispatch.js +114 -0
  219. package/dist/backend/llvm/switch-dispatch.js.map +1 -0
  220. package/dist/backend/llvm/switch-dispatch.test.d.ts +1 -0
  221. package/dist/backend/llvm/switch-dispatch.test.js +83 -0
  222. package/dist/backend/llvm/switch-dispatch.test.js.map +1 -0
  223. package/dist/backend/llvm/unsupported.js.map +1 -1
  224. package/dist/backend/llvm/walkers.d.ts +4 -14
  225. package/dist/backend/llvm/walkers.js +58 -313
  226. package/dist/backend/llvm/walkers.js.map +1 -1
  227. package/dist/backend/mangle.js +9 -3
  228. package/dist/backend/mangle.js.map +1 -1
  229. package/dist/backend/may-throw.js +18 -8
  230. package/dist/backend/may-throw.js.map +1 -1
  231. package/dist/backend/may-throw.test.js +119 -23
  232. package/dist/backend/may-throw.test.js.map +1 -1
  233. package/dist/backend/native/artifact-stamps.d.ts +39 -0
  234. package/dist/backend/native/artifact-stamps.js +371 -0
  235. package/dist/backend/native/artifact-stamps.js.map +1 -0
  236. package/dist/backend/native/cache-warm.d.ts +24 -0
  237. package/dist/backend/native/cache-warm.js +80 -0
  238. package/dist/backend/native/cache-warm.js.map +1 -0
  239. package/dist/backend/native/compiler-fingerprint.d.ts +19 -0
  240. package/dist/backend/native/compiler-fingerprint.js +357 -0
  241. package/dist/backend/native/compiler-fingerprint.js.map +1 -0
  242. package/dist/backend/native/contracts.d.ts +316 -0
  243. package/dist/backend/native/contracts.js +2 -0
  244. package/dist/backend/native/contracts.js.map +1 -0
  245. package/dist/backend/native/dependency-files.d.ts +5 -0
  246. package/dist/backend/native/dependency-files.js +83 -0
  247. package/dist/backend/native/dependency-files.js.map +1 -0
  248. package/dist/backend/native/driver.d.ts +50 -0
  249. package/dist/backend/native/driver.js +294 -0
  250. package/dist/backend/native/driver.js.map +1 -0
  251. package/dist/backend/native/executable.d.ts +18 -0
  252. package/dist/backend/native/executable.js +1275 -0
  253. package/dist/backend/native/executable.js.map +1 -0
  254. package/dist/backend/native/library.d.ts +2 -0
  255. package/dist/backend/native/library.js +614 -0
  256. package/dist/backend/native/library.js.map +1 -0
  257. package/dist/backend/native/linker-fingerprint.d.ts +8 -0
  258. package/dist/backend/native/linker-fingerprint.js +174 -0
  259. package/dist/backend/native/linker-fingerprint.js.map +1 -0
  260. package/dist/backend/native/object-merge.d.ts +2 -0
  261. package/dist/backend/native/object-merge.js +154 -0
  262. package/dist/backend/native/object-merge.js.map +1 -0
  263. package/dist/backend/native/process.d.ts +17 -0
  264. package/dist/backend/native/process.js +42 -0
  265. package/dist/backend/native/process.js.map +1 -0
  266. package/dist/backend/native/program-shards.d.ts +21 -0
  267. package/dist/backend/native/program-shards.js +99 -0
  268. package/dist/backend/native/program-shards.js.map +1 -0
  269. package/dist/backend/native/runtime-inputs.d.ts +12 -0
  270. package/dist/backend/native/runtime-inputs.js +165 -0
  271. package/dist/backend/native/runtime-inputs.js.map +1 -0
  272. package/dist/backend/native/runtime-inputs.test.d.ts +1 -0
  273. package/dist/backend/native/runtime-inputs.test.js +64 -0
  274. package/dist/backend/native/runtime-inputs.test.js.map +1 -0
  275. package/dist/backend/native/runtime-objects.d.ts +16 -0
  276. package/dist/backend/native/runtime-objects.js +122 -0
  277. package/dist/backend/native/runtime-objects.js.map +1 -0
  278. package/dist/backend/native/session.d.ts +12 -0
  279. package/dist/backend/native/session.js +31 -0
  280. package/dist/backend/native/session.js.map +1 -0
  281. package/dist/backend/native/tool-identity.d.ts +37 -0
  282. package/dist/backend/native/tool-identity.js +310 -0
  283. package/dist/backend/native/tool-identity.js.map +1 -0
  284. package/dist/backend/native/trace-paths.d.ts +12 -0
  285. package/dist/backend/native/trace-paths.js +73 -0
  286. package/dist/backend/native/trace-paths.js.map +1 -0
  287. package/dist/backend/native/vendor.d.ts +1 -0
  288. package/dist/backend/native/vendor.js +12 -0
  289. package/dist/backend/native/vendor.js.map +1 -0
  290. package/dist/backend/native-codegen-core.d.ts +6 -0
  291. package/dist/backend/native-codegen-core.js +23 -1
  292. package/dist/backend/native-codegen-core.js.map +1 -1
  293. package/dist/backend/native-codegen.d.ts +5 -1
  294. package/dist/backend/native-codegen.js +52 -25
  295. package/dist/backend/native-codegen.js.map +1 -1
  296. package/dist/backend/native-codegen.test.js +59 -11
  297. package/dist/backend/native-codegen.test.js.map +1 -1
  298. package/dist/backend/native-link-info-core.d.ts +1 -0
  299. package/dist/backend/native-link-info-core.js +9 -5
  300. package/dist/backend/native-link-info-core.js.map +1 -1
  301. package/dist/backend/native-link-info.js +14 -5
  302. package/dist/backend/native-link-info.js.map +1 -1
  303. package/dist/backend/native-link-info.test.js +58 -13
  304. package/dist/backend/native-link-info.test.js.map +1 -1
  305. package/dist/backend/native-toolchain.d.ts +17 -450
  306. package/dist/backend/native-toolchain.js +17 -3971
  307. package/dist/backend/native-toolchain.js.map +1 -1
  308. package/dist/backend/native-toolchain.test.js +103 -72
  309. package/dist/backend/native-toolchain.test.js.map +1 -1
  310. package/dist/backend/native-tools.d.ts +3 -1
  311. package/dist/backend/native-tools.js +30 -9
  312. package/dist/backend/native-tools.js.map +1 -1
  313. package/dist/backend/object-localize.js +17 -14
  314. package/dist/backend/object-localize.js.map +1 -1
  315. package/dist/backend/object-localize.test.js +59 -12
  316. package/dist/backend/object-localize.test.js.map +1 -1
  317. package/dist/backend/runtime-abi.d.ts +2 -2
  318. package/dist/backend/runtime-abi.js +2 -2
  319. package/dist/backend/runtime-pack-core.d.ts +1 -0
  320. package/dist/backend/runtime-pack-core.js +104 -50
  321. package/dist/backend/runtime-pack-core.js.map +1 -1
  322. package/dist/backend/runtime-pack-native.js +5 -3
  323. package/dist/backend/runtime-pack-native.js.map +1 -1
  324. package/dist/backend/runtime-pack-targets.test.js +126 -17
  325. package/dist/backend/runtime-pack-targets.test.js.map +1 -1
  326. package/dist/backend/runtime-pack.d.ts +1 -1
  327. package/dist/backend/runtime-pack.js +11 -12
  328. package/dist/backend/runtime-pack.js.map +1 -1
  329. package/dist/backend/runtime-pack.test.js +51 -25
  330. package/dist/backend/runtime-pack.test.js.map +1 -1
  331. package/dist/backend/source-locations.js.map +1 -1
  332. package/dist/backend/source-locations.test.js +7 -2
  333. package/dist/backend/source-locations.test.js.map +1 -1
  334. package/dist/backend/target-diagnostics.js +44 -14
  335. package/dist/backend/target-diagnostics.js.map +1 -1
  336. package/dist/backend/target-diagnostics.test.js +93 -20
  337. package/dist/backend/target-diagnostics.test.js.map +1 -1
  338. package/dist/backend/targets.js +230 -86
  339. package/dist/backend/targets.js.map +1 -1
  340. package/dist/backend/targets.test.js +32 -18
  341. package/dist/backend/targets.test.js.map +1 -1
  342. package/dist/backend/toolchain-environment.js +5 -1
  343. package/dist/backend/toolchain-environment.js.map +1 -1
  344. package/dist/backend/vendor-archives.d.ts +2 -2
  345. package/dist/backend/vendor-archives.js +84 -35
  346. package/dist/backend/vendor-archives.js.map +1 -1
  347. package/dist/backend/vendor-inputs.js +13 -1
  348. package/dist/backend/vendor-inputs.js.map +1 -1
  349. package/dist/backend/warm-cache.d.ts +1 -1
  350. package/dist/backend/warm-cache.js +33 -9
  351. package/dist/backend/warm-cache.js.map +1 -1
  352. package/dist/cli/command.js +39 -9
  353. package/dist/cli/command.js.map +1 -1
  354. package/dist/cli/output-options.js +14 -4
  355. package/dist/cli/output-options.js.map +1 -1
  356. package/dist/cli/paths.js.map +1 -1
  357. package/dist/cli/wasi-runner.js.map +1 -1
  358. package/dist/compat/fetch-profile.js +36 -35
  359. package/dist/compat/fetch-profile.js.map +1 -1
  360. package/dist/coverage/report.js +16 -17
  361. package/dist/coverage/report.js.map +1 -1
  362. package/dist/coverage/surface-manifest.js +112 -26
  363. package/dist/coverage/surface-manifest.js.map +1 -1
  364. package/dist/diagnostics/diagnostic.js +55 -16
  365. package/dist/diagnostics/diagnostic.js.map +1 -1
  366. package/dist/executable/executable-cache.d.ts +2 -1
  367. package/dist/executable/executable-cache.js +79 -48
  368. package/dist/executable/executable-cache.js.map +1 -1
  369. package/dist/executable/executable-cache.test.js +90 -26
  370. package/dist/executable/executable-cache.test.js.map +1 -1
  371. package/dist/executable/prepare.js +2 -2
  372. package/dist/executable/prepare.js.map +1 -1
  373. package/dist/ffi/ffi-manifest.js +78 -20
  374. package/dist/ffi/ffi-manifest.js.map +1 -1
  375. package/dist/ffi/ffi-manifest.test.js +96 -16
  376. package/dist/ffi/ffi-manifest.test.js.map +1 -1
  377. package/dist/format-integer.js.map +1 -1
  378. package/dist/frontend/analysis.js +12 -2
  379. package/dist/frontend/analysis.js.map +1 -1
  380. package/dist/frontend/arguments-usage.js.map +1 -1
  381. package/dist/frontend/binding-source.js +9 -3
  382. package/dist/frontend/binding-source.js.map +1 -1
  383. package/dist/frontend/builtin-modules.js +46 -2
  384. package/dist/frontend/builtin-modules.js.map +1 -1
  385. package/dist/frontend/cjs-resolve.js +40 -17
  386. package/dist/frontend/cjs-resolve.js.map +1 -1
  387. package/dist/frontend/cjs-syntax.js +31 -10
  388. package/dist/frontend/cjs-syntax.js.map +1 -1
  389. package/dist/frontend/comptime-node.test.js +10 -11
  390. package/dist/frontend/comptime-node.test.js.map +1 -1
  391. package/dist/frontend/dts-paths.js +7 -3
  392. package/dist/frontend/dts-paths.js.map +1 -1
  393. package/dist/frontend/fork-target.d.ts +5 -0
  394. package/dist/frontend/fork-target.js +55 -18
  395. package/dist/frontend/fork-target.js.map +1 -1
  396. package/dist/frontend/fork-target.test.d.ts +1 -0
  397. package/dist/frontend/fork-target.test.js +59 -0
  398. package/dist/frontend/fork-target.test.js.map +1 -0
  399. package/dist/frontend/function-completion.js +11 -6
  400. package/dist/frontend/function-completion.js.map +1 -1
  401. package/dist/frontend/helper-tokens.js +53 -6
  402. package/dist/frontend/helper-tokens.js.map +1 -1
  403. package/dist/frontend/helper-tokens.test.js +18 -2
  404. package/dist/frontend/helper-tokens.test.js.map +1 -1
  405. package/dist/frontend/inferred-js-diagnostics.js +32 -12
  406. package/dist/frontend/inferred-js-diagnostics.js.map +1 -1
  407. package/dist/frontend/inferred-js-diagnostics.test.js +11 -15
  408. package/dist/frontend/inferred-js-diagnostics.test.js.map +1 -1
  409. package/dist/frontend/input-tracker.js +11 -11
  410. package/dist/frontend/input-tracker.js.map +1 -1
  411. package/dist/frontend/input-tracker.test.js +4 -1
  412. package/dist/frontend/input-tracker.test.js.map +1 -1
  413. package/dist/frontend/lib-contract.js +38 -9
  414. package/dist/frontend/lib-contract.js.map +1 -1
  415. package/dist/frontend/literal-values.js.map +1 -1
  416. package/dist/frontend/literal-values.test.js +28 -8
  417. package/dist/frontend/literal-values.test.js.map +1 -1
  418. package/dist/frontend/lowering/abstract-equality.js +53 -10
  419. package/dist/frontend/lowering/abstract-equality.js.map +1 -1
  420. package/dist/frontend/lowering/array-indexed-mutation.d.ts +1 -1
  421. package/dist/frontend/lowering/array-indexed-mutation.js +108 -106
  422. package/dist/frontend/lowering/array-indexed-mutation.js.map +1 -1
  423. package/dist/frontend/lowering/array-values.js +37 -14
  424. package/dist/frontend/lowering/array-values.js.map +1 -1
  425. package/dist/frontend/lowering/binding-analysis.d.ts +50 -0
  426. package/dist/frontend/lowering/binding-analysis.js +376 -0
  427. package/dist/frontend/lowering/binding-analysis.js.map +1 -0
  428. package/dist/frontend/lowering/builtin-calls.d.ts +9 -0
  429. package/dist/frontend/lowering/builtin-calls.js +60 -0
  430. package/dist/frontend/lowering/builtin-calls.js.map +1 -0
  431. package/dist/frontend/lowering/builtins/arguments.d.ts +43 -0
  432. package/dist/frontend/lowering/builtins/arguments.js +247 -0
  433. package/dist/frontend/lowering/builtins/arguments.js.map +1 -0
  434. package/dist/frontend/lowering/builtins/async-context.d.ts +52 -0
  435. package/dist/frontend/lowering/builtins/async-context.js +436 -0
  436. package/dist/frontend/lowering/builtins/async-context.js.map +1 -0
  437. package/dist/frontend/lowering/builtins/atomics.d.ts +6 -0
  438. package/dist/frontend/lowering/builtins/atomics.js +82 -0
  439. package/dist/frontend/lowering/builtins/atomics.js.map +1 -0
  440. package/dist/frontend/lowering/builtins/callable-aliases.d.ts +13 -0
  441. package/dist/frontend/lowering/builtins/callable-aliases.js +87 -0
  442. package/dist/frontend/lowering/builtins/callable-aliases.js.map +1 -0
  443. package/dist/frontend/lowering/builtins/child-process-async.d.ts +18 -0
  444. package/dist/frontend/lowering/builtins/child-process-async.js +245 -0
  445. package/dist/frontend/lowering/builtins/child-process-async.js.map +1 -0
  446. package/dist/frontend/lowering/builtins/child-process-methods.d.ts +21 -0
  447. package/dist/frontend/lowering/builtins/child-process-methods.js +362 -0
  448. package/dist/frontend/lowering/builtins/child-process-methods.js.map +1 -0
  449. package/dist/frontend/lowering/builtins/child-process-sync.d.ts +4 -0
  450. package/dist/frontend/lowering/builtins/child-process-sync.js +639 -0
  451. package/dist/frontend/lowering/builtins/child-process-sync.js.map +1 -0
  452. package/dist/frontend/lowering/builtins/child-process.d.ts +55 -0
  453. package/dist/frontend/lowering/builtins/child-process.js +669 -0
  454. package/dist/frontend/lowering/builtins/child-process.js.map +1 -0
  455. package/dist/frontend/lowering/builtins/compression.d.ts +7 -0
  456. package/dist/frontend/lowering/builtins/compression.js +115 -0
  457. package/dist/frontend/lowering/builtins/compression.js.map +1 -0
  458. package/dist/frontend/lowering/builtins/console.d.ts +10 -0
  459. package/dist/frontend/lowering/builtins/console.js +38 -0
  460. package/dist/frontend/lowering/builtins/console.js.map +1 -0
  461. package/dist/frontend/lowering/builtins/constants.d.ts +24 -0
  462. package/dist/frontend/lowering/builtins/constants.js +141 -0
  463. package/dist/frontend/lowering/builtins/constants.js.map +1 -0
  464. package/dist/frontend/lowering/builtins/crypto.d.ts +22 -0
  465. package/dist/frontend/lowering/builtins/crypto.js +517 -0
  466. package/dist/frontend/lowering/builtins/crypto.js.map +1 -0
  467. package/dist/frontend/lowering/builtins/dates.d.ts +7 -0
  468. package/dist/frontend/lowering/builtins/dates.js +101 -0
  469. package/dist/frontend/lowering/builtins/dates.js.map +1 -0
  470. package/dist/frontend/lowering/builtins/environment.d.ts +34 -0
  471. package/dist/frontend/lowering/builtins/environment.js +95 -0
  472. package/dist/frontend/lowering/builtins/environment.js.map +1 -0
  473. package/dist/frontend/lowering/builtins/errors.d.ts +14 -0
  474. package/dist/frontend/lowering/builtins/errors.js +83 -0
  475. package/dist/frontend/lowering/builtins/errors.js.map +1 -0
  476. package/dist/frontend/lowering/builtins/filesystem-calls.d.ts +35 -0
  477. package/dist/frontend/lowering/builtins/filesystem-calls.js +725 -0
  478. package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -0
  479. package/dist/frontend/lowering/builtins/filesystem.d.ts +108 -0
  480. package/dist/frontend/lowering/builtins/filesystem.js +1061 -0
  481. package/dist/frontend/lowering/builtins/filesystem.js.map +1 -0
  482. package/dist/frontend/lowering/builtins/ipc.d.ts +8 -0
  483. package/dist/frontend/lowering/builtins/ipc.js +76 -0
  484. package/dist/frontend/lowering/builtins/ipc.js.map +1 -0
  485. package/dist/frontend/lowering/builtins/json.d.ts +12 -0
  486. package/dist/frontend/lowering/builtins/json.js +387 -0
  487. package/dist/frontend/lowering/builtins/json.js.map +1 -0
  488. package/dist/frontend/lowering/builtins/module-bindings.d.ts +85 -0
  489. package/dist/frontend/lowering/builtins/module-bindings.js +346 -0
  490. package/dist/frontend/lowering/builtins/module-bindings.js.map +1 -0
  491. package/dist/frontend/lowering/builtins/module-calls.d.ts +8 -0
  492. package/dist/frontend/lowering/builtins/module-calls.js +308 -0
  493. package/dist/frontend/lowering/builtins/module-calls.js.map +1 -0
  494. package/dist/frontend/lowering/builtins/module-resolution.d.ts +38 -0
  495. package/dist/frontend/lowering/builtins/module-resolution.js +344 -0
  496. package/dist/frontend/lowering/builtins/module-resolution.js.map +1 -0
  497. package/dist/frontend/lowering/builtins/numbers.d.ts +15 -0
  498. package/dist/frontend/lowering/builtins/numbers.js +124 -0
  499. package/dist/frontend/lowering/builtins/numbers.js.map +1 -0
  500. package/dist/frontend/lowering/builtins/operating-system.d.ts +13 -0
  501. package/dist/frontend/lowering/builtins/operating-system.js +148 -0
  502. package/dist/frontend/lowering/builtins/operating-system.js.map +1 -0
  503. package/dist/frontend/lowering/builtins/performance.d.ts +13 -0
  504. package/dist/frontend/lowering/builtins/performance.js +100 -0
  505. package/dist/frontend/lowering/builtins/performance.js.map +1 -0
  506. package/dist/frontend/lowering/builtins/process.d.ts +50 -0
  507. package/dist/frontend/lowering/builtins/process.js +1138 -0
  508. package/dist/frontend/lowering/builtins/process.js.map +1 -0
  509. package/dist/frontend/lowering/builtins/promises.d.ts +14 -0
  510. package/dist/frontend/lowering/builtins/promises.js +356 -0
  511. package/dist/frontend/lowering/builtins/promises.js.map +1 -0
  512. package/dist/frontend/lowering/builtins/properties.d.ts +11 -0
  513. package/dist/frontend/lowering/builtins/properties.js +186 -0
  514. package/dist/frontend/lowering/builtins/properties.js.map +1 -0
  515. package/dist/frontend/lowering/builtins/querystring.d.ts +19 -0
  516. package/dist/frontend/lowering/builtins/querystring.js +150 -0
  517. package/dist/frontend/lowering/builtins/querystring.js.map +1 -0
  518. package/dist/frontend/lowering/builtins/readline.d.ts +13 -0
  519. package/dist/frontend/lowering/builtins/readline.js +138 -0
  520. package/dist/frontend/lowering/builtins/readline.js.map +1 -0
  521. package/dist/frontend/lowering/builtins/receiver-types.d.ts +5 -0
  522. package/dist/frontend/lowering/builtins/receiver-types.js +15 -0
  523. package/dist/frontend/lowering/builtins/receiver-types.js.map +1 -0
  524. package/dist/frontend/lowering/builtins/reflection.d.ts +13 -0
  525. package/dist/frontend/lowering/builtins/reflection.js +95 -0
  526. package/dist/frontend/lowering/builtins/reflection.js.map +1 -0
  527. package/dist/frontend/lowering/builtins/strings.d.ts +14 -0
  528. package/dist/frontend/lowering/builtins/strings.js +121 -0
  529. package/dist/frontend/lowering/builtins/strings.js.map +1 -0
  530. package/dist/frontend/lowering/builtins/text-codecs.d.ts +29 -0
  531. package/dist/frontend/lowering/builtins/text-codecs.js +590 -0
  532. package/dist/frontend/lowering/builtins/text-codecs.js.map +1 -0
  533. package/dist/frontend/lowering/builtins/timers.d.ts +22 -0
  534. package/dist/frontend/lowering/builtins/timers.js +180 -0
  535. package/dist/frontend/lowering/builtins/timers.js.map +1 -0
  536. package/dist/frontend/lowering/builtins/url.d.ts +37 -0
  537. package/dist/frontend/lowering/builtins/url.js +596 -0
  538. package/dist/frontend/lowering/builtins/url.js.map +1 -0
  539. package/dist/frontend/lowering/builtins/util-types.d.ts +7 -0
  540. package/dist/frontend/lowering/builtins/util-types.js +31 -0
  541. package/dist/frontend/lowering/builtins/util-types.js.map +1 -0
  542. package/dist/frontend/lowering/builtins/workers.d.ts +5 -0
  543. package/dist/frontend/lowering/builtins/workers.js +65 -0
  544. package/dist/frontend/lowering/builtins/workers.js.map +1 -0
  545. package/dist/frontend/lowering/call-arguments.d.ts +72 -0
  546. package/dist/frontend/lowering/call-arguments.js +618 -0
  547. package/dist/frontend/lowering/call-arguments.js.map +1 -0
  548. package/dist/frontend/lowering/call-signatures.d.ts +115 -0
  549. package/dist/frontend/lowering/call-signatures.js +719 -0
  550. package/dist/frontend/lowering/call-signatures.js.map +1 -0
  551. package/dist/frontend/lowering/callback-arg.js.map +1 -1
  552. package/dist/frontend/lowering/checked-iterable-spread.js +53 -10
  553. package/dist/frontend/lowering/checked-iterable-spread.js.map +1 -1
  554. package/dist/frontend/lowering/checked-promise-all.js +41 -9
  555. package/dist/frontend/lowering/checked-promise-all.js.map +1 -1
  556. package/dist/frontend/lowering/class-assertions.d.ts +7 -0
  557. package/dist/frontend/lowering/class-assertions.js +96 -0
  558. package/dist/frontend/lowering/class-assertions.js.map +1 -0
  559. package/dist/frontend/lowering/class-callbacks.d.ts +1 -1
  560. package/dist/frontend/lowering/class-callbacks.js +130 -27
  561. package/dist/frontend/lowering/class-callbacks.js.map +1 -1
  562. package/dist/frontend/lowering/class-construction.d.ts +1 -1
  563. package/dist/frontend/lowering/class-construction.js +247 -50
  564. package/dist/frontend/lowering/class-construction.js.map +1 -1
  565. package/dist/frontend/lowering/class-descriptors.js +109 -29
  566. package/dist/frontend/lowering/class-descriptors.js.map +1 -1
  567. package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +6 -1
  568. package/dist/frontend/lowering/class-dynamic-dispatch.js +2471 -465
  569. package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
  570. package/dist/frontend/lowering/class-dynamic-dispatch.test.js +284 -44
  571. package/dist/frontend/lowering/class-dynamic-dispatch.test.js.map +1 -1
  572. package/dist/frontend/lowering/class-instance-constructor.js +17 -5
  573. package/dist/frontend/lowering/class-instance-constructor.js.map +1 -1
  574. package/dist/frontend/lowering/class-method-values.js +199 -51
  575. package/dist/frontend/lowering/class-method-values.js.map +1 -1
  576. package/dist/frontend/lowering/class-protocols.d.ts +17 -0
  577. package/dist/frontend/lowering/class-protocols.js +126 -0
  578. package/dist/frontend/lowering/class-protocols.js.map +1 -0
  579. package/dist/frontend/lowering/class-prototypes.js +345 -86
  580. package/dist/frontend/lowering/class-prototypes.js.map +1 -1
  581. package/dist/frontend/lowering/class-runtime-statics.d.ts +1 -1
  582. package/dist/frontend/lowering/class-runtime-statics.js +80 -17
  583. package/dist/frontend/lowering/class-runtime-statics.js.map +1 -1
  584. package/dist/frontend/lowering/class-static-data.js +76 -16
  585. package/dist/frontend/lowering/class-static-data.js.map +1 -1
  586. package/dist/frontend/lowering/coercions/builders.d.ts +13 -0
  587. package/dist/frontend/lowering/coercions/builders.js +77 -0
  588. package/dist/frontend/lowering/coercions/builders.js.map +1 -0
  589. package/dist/frontend/lowering/coercions/function-adapters.d.ts +58 -0
  590. package/dist/frontend/lowering/coercions/function-adapters.js +430 -0
  591. package/dist/frontend/lowering/coercions/function-adapters.js.map +1 -0
  592. package/dist/frontend/lowering/coercions/island.d.ts +37 -0
  593. package/dist/frontend/lowering/coercions/island.js +350 -0
  594. package/dist/frontend/lowering/coercions/island.js.map +1 -0
  595. package/dist/frontend/lowering/coercions/state.d.ts +14 -0
  596. package/dist/frontend/lowering/coercions/state.js +16 -0
  597. package/dist/frontend/lowering/coercions/state.js.map +1 -0
  598. package/dist/frontend/lowering/coercions/structural-plans.d.ts +40 -0
  599. package/dist/frontend/lowering/coercions/structural-plans.js +447 -0
  600. package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -0
  601. package/dist/frontend/lowering/coercions/structural.d.ts +63 -0
  602. package/dist/frontend/lowering/coercions/structural.js +616 -0
  603. package/dist/frontend/lowering/coercions/structural.js.map +1 -0
  604. package/dist/frontend/lowering/coercions/unions.d.ts +65 -0
  605. package/dist/frontend/lowering/coercions/unions.js +318 -0
  606. package/dist/frontend/lowering/coercions/unions.js.map +1 -0
  607. package/dist/frontend/lowering/collection-ingestion.js +355 -72
  608. package/dist/frontend/lowering/collection-ingestion.js.map +1 -1
  609. package/dist/frontend/lowering/containers/array-callbacks.d.ts +88 -0
  610. package/dist/frontend/lowering/containers/array-callbacks.js +1611 -0
  611. package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -0
  612. package/dist/frontend/lowering/containers/array-construction.d.ts +42 -0
  613. package/dist/frontend/lowering/containers/array-construction.js +1044 -0
  614. package/dist/frontend/lowering/containers/array-construction.js.map +1 -0
  615. package/dist/frontend/lowering/containers/array-iteration.d.ts +16 -0
  616. package/dist/frontend/lowering/containers/array-iteration.js +95 -0
  617. package/dist/frontend/lowering/containers/array-iteration.js.map +1 -0
  618. package/dist/frontend/lowering/containers/array-methods.d.ts +27 -0
  619. package/dist/frontend/lowering/containers/array-methods.js +1854 -0
  620. package/dist/frontend/lowering/containers/array-methods.js.map +1 -0
  621. package/dist/frontend/lowering/containers/bytes.d.ts +17 -17
  622. package/dist/frontend/lowering/containers/bytes.js +430 -138
  623. package/dist/frontend/lowering/containers/bytes.js.map +1 -1
  624. package/dist/frontend/lowering/containers/callback-arguments.d.ts +26 -0
  625. package/dist/frontend/lowering/containers/callback-arguments.js +179 -0
  626. package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -0
  627. package/dist/frontend/lowering/containers/collection-grouping.d.ts +19 -0
  628. package/dist/frontend/lowering/containers/collection-grouping.js +297 -0
  629. package/dist/frontend/lowering/containers/collection-grouping.js.map +1 -0
  630. package/dist/frontend/lowering/containers/collection-methods.d.ts +57 -0
  631. package/dist/frontend/lowering/containers/collection-methods.js +1314 -0
  632. package/dist/frontend/lowering/containers/collection-methods.js.map +1 -0
  633. package/dist/frontend/lowering/containers/dynamic-receivers.d.ts +18 -0
  634. package/dist/frontend/lowering/containers/dynamic-receivers.js +114 -0
  635. package/dist/frontend/lowering/containers/dynamic-receivers.js.map +1 -0
  636. package/dist/frontend/lowering/containers/for-of.d.ts +60 -0
  637. package/dist/frontend/lowering/containers/for-of.js +643 -0
  638. package/dist/frontend/lowering/containers/for-of.js.map +1 -0
  639. package/dist/frontend/lowering/containers/indexed-objects.d.ts +132 -0
  640. package/dist/frontend/lowering/containers/indexed-objects.js +1743 -0
  641. package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -0
  642. package/dist/frontend/lowering/containers/iterator-helpers.d.ts +20 -0
  643. package/dist/frontend/lowering/containers/iterator-helpers.js +809 -0
  644. package/dist/frontend/lowering/containers/iterator-helpers.js.map +1 -0
  645. package/dist/frontend/lowering/containers/string-and-regexp.js +601 -160
  646. package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
  647. package/dist/frontend/lowering/containers/string-replacement.js +213 -63
  648. package/dist/frontend/lowering/containers/string-replacement.js.map +1 -1
  649. package/dist/frontend/lowering/crypto-tables.js +263 -64
  650. package/dist/frontend/lowering/crypto-tables.js.map +1 -1
  651. package/dist/frontend/lowering/deferred-module-initializers.js +172 -68
  652. package/dist/frontend/lowering/deferred-module-initializers.js.map +1 -1
  653. package/dist/frontend/lowering/deferred-module-initializers.test.js +41 -8
  654. package/dist/frontend/lowering/deferred-module-initializers.test.js.map +1 -1
  655. package/dist/frontend/lowering/error-methods.js +339 -65
  656. package/dist/frontend/lowering/error-methods.js.map +1 -1
  657. package/dist/frontend/lowering/expressions/evaluation-safety.js +3 -2
  658. package/dist/frontend/lowering/expressions/evaluation-safety.js.map +1 -1
  659. package/dist/frontend/lowering/expressions/global-symbols.js +2 -1
  660. package/dist/frontend/lowering/expressions/global-symbols.js.map +1 -1
  661. package/dist/frontend/lowering/expressions/native-proxy.js +11 -5
  662. package/dist/frontend/lowering/expressions/native-proxy.js.map +1 -1
  663. package/dist/frontend/lowering/expressions/nullish-assignment.js +67 -13
  664. package/dist/frontend/lowering/expressions/nullish-assignment.js.map +1 -1
  665. package/dist/frontend/lowering/expressions/object-literals.js +588 -165
  666. package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
  667. package/dist/frontend/lowering/expressions/optional-chains.d.ts +1 -1
  668. package/dist/frontend/lowering/expressions/optional-chains.js +68 -17
  669. package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
  670. package/dist/frontend/lowering/expressions/union-field-write.js +45 -18
  671. package/dist/frontend/lowering/expressions/union-field-write.js.map +1 -1
  672. package/dist/frontend/lowering/function-context.js +5 -1
  673. package/dist/frontend/lowering/function-context.js.map +1 -1
  674. package/dist/frontend/lowering/function-returns.d.ts +67 -0
  675. package/dist/frontend/lowering/function-returns.js +392 -0
  676. package/dist/frontend/lowering/function-returns.js.map +1 -0
  677. package/dist/frontend/lowering/generator-delegation.d.ts +1 -1
  678. package/dist/frontend/lowering/generator-delegation.js +171 -39
  679. package/dist/frontend/lowering/generator-delegation.js.map +1 -1
  680. package/dist/frontend/lowering/generator-dynamic-dispatch.d.ts +1 -1
  681. package/dist/frontend/lowering/generator-dynamic-dispatch.js +176 -36
  682. package/dist/frontend/lowering/generator-dynamic-dispatch.js.map +1 -1
  683. package/dist/frontend/lowering/generic-functions.d.ts +271 -0
  684. package/dist/frontend/lowering/generic-functions.js +1730 -0
  685. package/dist/frontend/lowering/generic-functions.js.map +1 -0
  686. package/dist/frontend/lowering/import-meta.d.ts +1 -1
  687. package/dist/frontend/lowering/import-meta.js +37 -14
  688. package/dist/frontend/lowering/import-meta.js.map +1 -1
  689. package/dist/frontend/lowering/indexed-comparison.js +6 -2
  690. package/dist/frontend/lowering/indexed-comparison.js.map +1 -1
  691. package/dist/frontend/lowering/instantiation-path.d.ts +8 -0
  692. package/dist/frontend/lowering/instantiation-path.js +10 -0
  693. package/dist/frontend/lowering/instantiation-path.js.map +1 -0
  694. package/dist/frontend/lowering/instantiation-path.test.d.ts +1 -0
  695. package/dist/frontend/lowering/instantiation-path.test.js +23 -0
  696. package/dist/frontend/lowering/instantiation-path.test.js.map +1 -0
  697. package/dist/frontend/lowering/iterator-consumption.d.ts +9 -0
  698. package/dist/frontend/lowering/iterator-consumption.js +91 -0
  699. package/dist/frontend/lowering/iterator-consumption.js.map +1 -0
  700. package/dist/frontend/lowering/lib-boundary.js +40 -17
  701. package/dist/frontend/lowering/lib-boundary.js.map +1 -1
  702. package/dist/frontend/lowering/lib-boundary.test.js +49 -11
  703. package/dist/frontend/lowering/lib-boundary.test.js.map +1 -1
  704. package/dist/frontend/lowering/lower-array-sort.d.ts +0 -19
  705. package/dist/frontend/lowering/lower-array-sort.js +331 -566
  706. package/dist/frontend/lowering/lower-array-sort.js.map +1 -1
  707. package/dist/frontend/lowering/lower-assert.js +248 -43
  708. package/dist/frontend/lowering/lower-assert.js.map +1 -1
  709. package/dist/frontend/lowering/lower-async-iteration.js +71 -16
  710. package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
  711. package/dist/frontend/lowering/lower-builtin-values.js +430 -77
  712. package/dist/frontend/lowering/lower-builtin-values.js.map +1 -1
  713. package/dist/frontend/lowering/lower-calls.d.ts +39 -558
  714. package/dist/frontend/lowering/lower-calls.js +2628 -5669
  715. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  716. package/dist/frontend/lowering/lower-classes.d.ts +248 -242
  717. package/dist/frontend/lowering/lower-classes.js +1820 -775
  718. package/dist/frontend/lowering/lower-classes.js.map +1 -1
  719. package/dist/frontend/lowering/lower-comptime.d.ts +35 -35
  720. package/dist/frontend/lowering/lower-comptime.js +39 -37
  721. package/dist/frontend/lowering/lower-comptime.js.map +1 -1
  722. package/dist/frontend/lowering/lower-dgram.js +59 -31
  723. package/dist/frontend/lowering/lower-dgram.js.map +1 -1
  724. package/dist/frontend/lowering/lower-enums.js +5 -2
  725. package/dist/frontend/lowering/lower-enums.js.map +1 -1
  726. package/dist/frontend/lowering/lower-event-emitter.js +323 -86
  727. package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
  728. package/dist/frontend/lowering/lower-expando.js +19 -7
  729. package/dist/frontend/lowering/lower-expando.js.map +1 -1
  730. package/dist/frontend/lowering/lower-exprs.d.ts +194 -194
  731. package/dist/frontend/lowering/lower-exprs.js +3473 -1160
  732. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  733. package/dist/frontend/lowering/lower-functions.d.ts +23 -0
  734. package/dist/frontend/lowering/lower-functions.js +449 -0
  735. package/dist/frontend/lowering/lower-functions.js.map +1 -0
  736. package/dist/frontend/lowering/lower-generators.js +121 -32
  737. package/dist/frontend/lowering/lower-generators.js.map +1 -1
  738. package/dist/frontend/lowering/lower-global-value.js +15 -4
  739. package/dist/frontend/lowering/lower-global-value.js.map +1 -1
  740. package/dist/frontend/lowering/lower-inspect.js +479 -89
  741. package/dist/frontend/lowering/lower-inspect.js.map +1 -1
  742. package/dist/frontend/lowering/lower-island.d.ts +79 -79
  743. package/dist/frontend/lowering/lower-island.js +366 -274
  744. package/dist/frontend/lowering/lower-island.js.map +1 -1
  745. package/dist/frontend/lowering/lower-island.test.js +7 -2
  746. package/dist/frontend/lowering/lower-island.test.js.map +1 -1
  747. package/dist/frontend/lowering/lower-mixins.js +17 -8
  748. package/dist/frontend/lowering/lower-mixins.js.map +1 -1
  749. package/dist/frontend/lowering/lower-modules.d.ts +95 -94
  750. package/dist/frontend/lowering/lower-modules.js +655 -329
  751. package/dist/frontend/lowering/lower-modules.js.map +1 -1
  752. package/dist/frontend/lowering/lower-modules.test.js +91 -20
  753. package/dist/frontend/lowering/lower-modules.test.js.map +1 -1
  754. package/dist/frontend/lowering/lower-namespaces.js +25 -8
  755. package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
  756. package/dist/frontend/lowering/lower-node-module.js +115 -34
  757. package/dist/frontend/lowering/lower-node-module.js.map +1 -1
  758. package/dist/frontend/lowering/lower-server.js +1210 -290
  759. package/dist/frontend/lowering/lower-server.js.map +1 -1
  760. package/dist/frontend/lowering/lower-stmts.d.ts +148 -148
  761. package/dist/frontend/lowering/lower-stmts.js +2324 -994
  762. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  763. package/dist/frontend/lowering/lower-stmts.test.js +13 -5
  764. package/dist/frontend/lowering/lower-stmts.test.js.map +1 -1
  765. package/dist/frontend/lowering/lower-stream.js +363 -91
  766. package/dist/frontend/lowering/lower-stream.js.map +1 -1
  767. package/dist/frontend/lowering/lower-system-errors.js +30 -8
  768. package/dist/frontend/lowering/lower-system-errors.js.map +1 -1
  769. package/dist/frontend/lowering/lower-test.js +40 -13
  770. package/dist/frontend/lowering/lower-test.js.map +1 -1
  771. package/dist/frontend/lowering/lower-timers.d.ts +31 -0
  772. package/dist/frontend/lowering/lower-timers.js +336 -0
  773. package/dist/frontend/lowering/lower-timers.js.map +1 -0
  774. package/dist/frontend/lowering/lower-url.d.ts +1 -1
  775. package/dist/frontend/lowering/lower-url.js +46 -13
  776. package/dist/frontend/lowering/lower-url.js.map +1 -1
  777. package/dist/frontend/lowering/lowerer.d.ts +34 -352
  778. package/dist/frontend/lowering/lowerer.js +1074 -2712
  779. package/dist/frontend/lowering/lowerer.js.map +1 -1
  780. package/dist/frontend/lowering/lowerer.test.js +85 -17
  781. package/dist/frontend/lowering/lowerer.test.js.map +1 -1
  782. package/dist/frontend/lowering/module-namespace-elements.js +43 -8
  783. package/dist/frontend/lowering/module-namespace-elements.js.map +1 -1
  784. package/dist/frontend/lowering/native-ffi.d.ts +21 -1
  785. package/dist/frontend/lowering/native-ffi.js +487 -18
  786. package/dist/frontend/lowering/native-ffi.js.map +1 -1
  787. package/dist/frontend/lowering/object-enumeration-receiver.js +55 -10
  788. package/dist/frontend/lowering/object-enumeration-receiver.js.map +1 -1
  789. package/dist/frontend/lowering/object-factory-new.d.ts +1 -1
  790. package/dist/frontend/lowering/object-factory-new.js +36 -11
  791. package/dist/frontend/lowering/object-factory-new.js.map +1 -1
  792. package/dist/frontend/lowering/optional-arguments.js +49 -20
  793. package/dist/frontend/lowering/optional-arguments.js.map +1 -1
  794. package/dist/frontend/lowering/pairs-snapshot.js +66 -14
  795. package/dist/frontend/lowering/pairs-snapshot.js.map +1 -1
  796. package/dist/frontend/lowering/runtime-optional-locals.js +3 -1
  797. package/dist/frontend/lowering/runtime-optional-locals.js.map +1 -1
  798. package/dist/frontend/lowering/runtime-optional-locals.test.js.map +1 -1
  799. package/dist/frontend/lowering/sanitize-class-types.js +4 -1
  800. package/dist/frontend/lowering/sanitize-class-types.js.map +1 -1
  801. package/dist/frontend/lowering/sanitize-class-types.test.js +86 -18
  802. package/dist/frontend/lowering/sanitize-class-types.test.js.map +1 -1
  803. package/dist/frontend/lowering/split-consumers.d.ts +7 -0
  804. package/dist/frontend/lowering/split-consumers.js +64 -0
  805. package/dist/frontend/lowering/split-consumers.js.map +1 -0
  806. package/dist/frontend/lowering/static-this.js +13 -6
  807. package/dist/frontend/lowering/static-this.js.map +1 -1
  808. package/dist/frontend/lowering/string-index.js +32 -10
  809. package/dist/frontend/lowering/string-index.js.map +1 -1
  810. package/dist/frontend/lowering/surfaces.d.ts +45 -46
  811. package/dist/frontend/lowering/surfaces.js +1129 -256
  812. package/dist/frontend/lowering/surfaces.js.map +1 -1
  813. package/dist/frontend/lowering/symbol-fields.js +40 -15
  814. package/dist/frontend/lowering/symbol-fields.js.map +1 -1
  815. package/dist/frontend/lowering/symbol-methods.js.map +1 -1
  816. package/dist/frontend/lowering/text-decoder-encoding.js +236 -24
  817. package/dist/frontend/lowering/text-decoder-encoding.js.map +1 -1
  818. package/dist/frontend/lowering/text-decoder-encoding.test.js +84 -12
  819. package/dist/frontend/lowering/text-decoder-encoding.test.js.map +1 -1
  820. package/dist/frontend/lowering/union-narrow.js +59 -16
  821. package/dist/frontend/lowering/union-narrow.js.map +1 -1
  822. package/dist/frontend/lowering/union-narrow.test.js +24 -7
  823. package/dist/frontend/lowering/union-narrow.test.js.map +1 -1
  824. package/dist/frontend/lowering/union-retag.js +155 -40
  825. package/dist/frontend/lowering/union-retag.js.map +1 -1
  826. package/dist/frontend/lowering/union-retag.test.js +131 -33
  827. package/dist/frontend/lowering/union-retag.test.js.map +1 -1
  828. package/dist/frontend/lowering/unregistered-class-types.js.map +1 -1
  829. package/dist/frontend/lowering/unregistered-class-types.test.js +34 -8
  830. package/dist/frontend/lowering/unregistered-class-types.test.js.map +1 -1
  831. package/dist/frontend/module-source-candidates.d.ts +10 -0
  832. package/dist/frontend/module-source-candidates.js +40 -0
  833. package/dist/frontend/module-source-candidates.js.map +1 -0
  834. package/dist/frontend/module-source-candidates.test.d.ts +1 -0
  835. package/dist/frontend/module-source-candidates.test.js +53 -0
  836. package/dist/frontend/module-source-candidates.test.js.map +1 -0
  837. package/dist/frontend/module-syntax.js +21 -8
  838. package/dist/frontend/module-syntax.js.map +1 -1
  839. package/dist/frontend/module-syntax.test.js +37 -13
  840. package/dist/frontend/module-syntax.test.js.map +1 -1
  841. package/dist/frontend/npm-fetch-analysis.js +13 -4
  842. package/dist/frontend/npm-fetch-analysis.js.map +1 -1
  843. package/dist/frontend/npm-fetch-analysis.test.js +33 -10
  844. package/dist/frontend/npm-fetch-analysis.test.js.map +1 -1
  845. package/dist/frontend/npm-fetch-node.js.map +1 -1
  846. package/dist/frontend/npm-fetch-syntax.js +4 -9
  847. package/dist/frontend/npm-fetch-syntax.js.map +1 -1
  848. package/dist/frontend/npm-node.js +3 -1
  849. package/dist/frontend/npm-node.js.map +1 -1
  850. package/dist/frontend/npm-static-bundled-cjs.js +88 -29
  851. package/dist/frontend/npm-static-bundled-cjs.js.map +1 -1
  852. package/dist/frontend/npm-static-bundled-cjs.test.js +29 -10
  853. package/dist/frontend/npm-static-bundled-cjs.test.js.map +1 -1
  854. package/dist/frontend/npm-static-declaration-syntax.js +148 -56
  855. package/dist/frontend/npm-static-declaration-syntax.js.map +1 -1
  856. package/dist/frontend/npm-static-declarations.d.ts +1 -1
  857. package/dist/frontend/npm-static-declarations.js.map +1 -1
  858. package/dist/frontend/npm-static-declarations.test.js +33 -7
  859. package/dist/frontend/npm-static-declarations.test.js.map +1 -1
  860. package/dist/frontend/npm-static-prune.js +26 -12
  861. package/dist/frontend/npm-static-prune.js.map +1 -1
  862. package/dist/frontend/npm-static-prune.test.js +17 -3
  863. package/dist/frontend/npm-static-prune.test.js.map +1 -1
  864. package/dist/frontend/npm-static-rewrite-host.js +2 -3
  865. package/dist/frontend/npm-static-rewrite-host.js.map +1 -1
  866. package/dist/frontend/npm-static-rewrite-syntax.js +64 -21
  867. package/dist/frontend/npm-static-rewrite-syntax.js.map +1 -1
  868. package/dist/frontend/npm-static-rewrite.js.map +1 -1
  869. package/dist/frontend/npm-static-subtyping.js +9 -4
  870. package/dist/frontend/npm-static-subtyping.js.map +1 -1
  871. package/dist/frontend/npm-static-subtyping.test.js +30 -6
  872. package/dist/frontend/npm-static-subtyping.test.js.map +1 -1
  873. package/dist/frontend/npm-static.js +15 -4
  874. package/dist/frontend/npm-static.js.map +1 -1
  875. package/dist/frontend/npm.js +122 -36
  876. package/dist/frontend/npm.js.map +1 -1
  877. package/dist/frontend/npm.test.js +30 -10
  878. package/dist/frontend/npm.test.js.map +1 -1
  879. package/dist/frontend/pipeline-native.js.map +1 -1
  880. package/dist/frontend/pipeline.js +25 -8
  881. package/dist/frontend/pipeline.js.map +1 -1
  882. package/dist/frontend/pipeline.test.js +21 -7
  883. package/dist/frontend/pipeline.test.js.map +1 -1
  884. package/dist/frontend/program-analysis.d.ts +2 -0
  885. package/dist/frontend/program-analysis.js +2 -0
  886. package/dist/frontend/program-analysis.js.map +1 -1
  887. package/dist/frontend/program-node.js +5 -3
  888. package/dist/frontend/program-node.js.map +1 -1
  889. package/dist/frontend/program.d.ts +2 -2
  890. package/dist/frontend/program.js +248 -127
  891. package/dist/frontend/program.js.map +1 -1
  892. package/dist/frontend/program.test.js +27 -27
  893. package/dist/frontend/program.test.js.map +1 -1
  894. package/dist/frontend/provenance-core.js +8 -4
  895. package/dist/frontend/provenance-core.js.map +1 -1
  896. package/dist/frontend/provenance-registry.js +1 -4
  897. package/dist/frontend/provenance-registry.js.map +1 -1
  898. package/dist/frontend/resolve.js +32 -20
  899. package/dist/frontend/resolve.js.map +1 -1
  900. package/dist/frontend/resolve.test.js +1 -1
  901. package/dist/frontend/resolve.test.js.map +1 -1
  902. package/dist/frontend/runtime-resolve.js +13 -4
  903. package/dist/frontend/runtime-resolve.js.map +1 -1
  904. package/dist/frontend/runtime-resolve.test.js +25 -9
  905. package/dist/frontend/runtime-resolve.test.js.map +1 -1
  906. package/dist/frontend/services-node.js +6 -2
  907. package/dist/frontend/services-node.js.map +1 -1
  908. package/dist/frontend/services-node.test.js +18 -6
  909. package/dist/frontend/services-node.test.js.map +1 -1
  910. package/dist/frontend/services.js +8 -4
  911. package/dist/frontend/services.js.map +1 -1
  912. package/dist/frontend/services.test.js +6 -2
  913. package/dist/frontend/services.test.js.map +1 -1
  914. package/dist/frontend/ts7/api.js +12 -4
  915. package/dist/frontend/ts7/api.js.map +1 -1
  916. package/dist/frontend/ts7/ast-bytes.js +10 -3
  917. package/dist/frontend/ts7/ast-bytes.js.map +1 -1
  918. package/dist/frontend/ts7/ast-bytes.test.js +23 -4
  919. package/dist/frontend/ts7/ast-bytes.test.js.map +1 -1
  920. package/dist/frontend/ts7/ast-guards.test.js +14 -5
  921. package/dist/frontend/ts7/ast-guards.test.js.map +1 -1
  922. package/dist/frontend/ts7/ast-node.d.ts +6 -1
  923. package/dist/frontend/ts7/ast-node.js +490 -172
  924. package/dist/frontend/ts7/ast-node.js.map +1 -1
  925. package/dist/frontend/ts7/ast-node.test.js +150 -36
  926. package/dist/frontend/ts7/ast-node.test.js.map +1 -1
  927. package/dist/frontend/ts7/ast-text.js +13 -3
  928. package/dist/frontend/ts7/ast-text.js.map +1 -1
  929. package/dist/frontend/ts7/ast-text.test.js.map +1 -1
  930. package/dist/frontend/ts7/ast-types.js.map +1 -1
  931. package/dist/frontend/ts7/ast-wire.d.ts +5 -1
  932. package/dist/frontend/ts7/ast-wire.js +83 -20
  933. package/dist/frontend/ts7/ast-wire.js.map +1 -1
  934. package/dist/frontend/ts7/ast-wire.test.js +53 -8
  935. package/dist/frontend/ts7/ast-wire.test.js.map +1 -1
  936. package/dist/frontend/ts7/ast.d.ts +2 -1
  937. package/dist/frontend/ts7/ast.js +53 -30
  938. package/dist/frontend/ts7/ast.js.map +1 -1
  939. package/dist/frontend/ts7/census-check.js +1 -1
  940. package/dist/frontend/ts7/census-check.js.map +1 -1
  941. package/dist/frontend/ts7/checker-cache.js.map +1 -1
  942. package/dist/frontend/ts7/checker.d.ts +8 -2
  943. package/dist/frontend/ts7/checker.js +46 -8
  944. package/dist/frontend/ts7/checker.js.map +1 -1
  945. package/dist/frontend/ts7/checker.test.js +96 -17
  946. package/dist/frontend/ts7/checker.test.js.map +1 -1
  947. package/dist/frontend/ts7/enums.test.js +9 -4
  948. package/dist/frontend/ts7/enums.test.js.map +1 -1
  949. package/dist/frontend/ts7/native-api.js.map +1 -1
  950. package/dist/frontend/ts7/native-host.js.map +1 -1
  951. package/dist/frontend/ts7/native-process.js +9 -3
  952. package/dist/frontend/ts7/native-process.js.map +1 -1
  953. package/dist/frontend/ts7/program-adapter.js +1 -1
  954. package/dist/frontend/ts7/program-adapter.js.map +1 -1
  955. package/dist/frontend/ts7/program-host.d.ts +7 -0
  956. package/dist/frontend/ts7/program-host.js +33 -6
  957. package/dist/frontend/ts7/program-host.js.map +1 -1
  958. package/dist/frontend/ts7/program-host.test.js +72 -11
  959. package/dist/frontend/ts7/program-host.test.js.map +1 -1
  960. package/dist/frontend/ts7/rpc-api.js +3 -1
  961. package/dist/frontend/ts7/rpc-api.js.map +1 -1
  962. package/dist/frontend/ts7/rpc-client.js +15 -5
  963. package/dist/frontend/ts7/rpc-client.js.map +1 -1
  964. package/dist/frontend/ts7/rpc-client.test.js +26 -8
  965. package/dist/frontend/ts7/rpc-client.test.js.map +1 -1
  966. package/dist/frontend/ts7/rpc-filesystem.js.map +1 -1
  967. package/dist/frontend/ts7/rpc-filesystem.test.js +43 -10
  968. package/dist/frontend/ts7/rpc-filesystem.test.js.map +1 -1
  969. package/dist/frontend/ts7/rpc-process.js +16 -6
  970. package/dist/frontend/ts7/rpc-process.js.map +1 -1
  971. package/dist/frontend/ts7/rpc-process.test.js.map +1 -1
  972. package/dist/frontend/ts7/rpc-wire.d.ts +1 -0
  973. package/dist/frontend/ts7/rpc-wire.js +41 -14
  974. package/dist/frontend/ts7/rpc-wire.js.map +1 -1
  975. package/dist/frontend/ts7/rpc-wire.test.js +36 -6
  976. package/dist/frontend/ts7/rpc-wire.test.js.map +1 -1
  977. package/dist/frontend/ts7/semantic-checker.js +209 -68
  978. package/dist/frontend/ts7/semantic-checker.js.map +1 -1
  979. package/dist/frontend/ts7/semantic-checker.test.js +29 -14
  980. package/dist/frontend/ts7/semantic-checker.test.js.map +1 -1
  981. package/dist/frontend/ts7/semantic-json.js +7 -1
  982. package/dist/frontend/ts7/semantic-json.js.map +1 -1
  983. package/dist/frontend/ts7/semantic-json.test.js +17 -3
  984. package/dist/frontend/ts7/semantic-json.test.js.map +1 -1
  985. package/dist/frontend/ts7/semantic-model.js +147 -51
  986. package/dist/frontend/ts7/semantic-model.js.map +1 -1
  987. package/dist/frontend/ts7/semantic-model.test.js +72 -19
  988. package/dist/frontend/ts7/semantic-model.test.js.map +1 -1
  989. package/dist/frontend/ts7/semantic-types.d.ts +2 -2
  990. package/dist/frontend/ts7/session-cache.js +10 -3
  991. package/dist/frontend/ts7/session-cache.js.map +1 -1
  992. package/dist/frontend/ts7/session-cache.test.js +13 -4
  993. package/dist/frontend/ts7/session-cache.test.js.map +1 -1
  994. package/dist/frontend/ts7/session-path.js +25 -10
  995. package/dist/frontend/ts7/session-path.js.map +1 -1
  996. package/dist/frontend/ts7/session-path.test.js +47 -4
  997. package/dist/frontend/ts7/session-path.test.js.map +1 -1
  998. package/dist/frontend/ts7/session-timing.js +22 -3
  999. package/dist/frontend/ts7/session-timing.js.map +1 -1
  1000. package/dist/frontend/ts7/session-timing.test.js +12 -3
  1001. package/dist/frontend/ts7/session-timing.test.js.map +1 -1
  1002. package/dist/frontend/ts7/session.d.ts +1 -0
  1003. package/dist/frontend/ts7/session.js +109 -35
  1004. package/dist/frontend/ts7/session.js.map +1 -1
  1005. package/dist/frontend/ts7/session.test.js +69 -15
  1006. package/dist/frontend/ts7/session.test.js.map +1 -1
  1007. package/dist/frontend/ts7/source-parser.js +17 -6
  1008. package/dist/frontend/ts7/source-parser.js.map +1 -1
  1009. package/dist/frontend/ts7/source-parser.test.js +32 -9
  1010. package/dist/frontend/ts7/source-parser.test.js.map +1 -1
  1011. package/dist/frontend/tsc-codes.js +56 -11
  1012. package/dist/frontend/tsc-codes.js.map +1 -1
  1013. package/dist/frontend/tsc-codes.test.d.ts +1 -0
  1014. package/dist/frontend/tsc-codes.test.js +16 -0
  1015. package/dist/frontend/tsc-codes.test.js.map +1 -0
  1016. package/dist/frontend/type-mapper.d.ts +3 -0
  1017. package/dist/frontend/type-mapper.js +589 -206
  1018. package/dist/frontend/type-mapper.js.map +1 -1
  1019. package/dist/frontend/type-mapper.test.js +108 -33
  1020. package/dist/frontend/type-mapper.test.js.map +1 -1
  1021. package/dist/frontend/union-discriminants.js +8 -2
  1022. package/dist/frontend/union-discriminants.js.map +1 -1
  1023. package/dist/frontend/union-discriminants.test.js +77 -20
  1024. package/dist/frontend/union-discriminants.test.js.map +1 -1
  1025. package/dist/frontend/worker-target.d.ts +6 -0
  1026. package/dist/frontend/worker-target.js +108 -0
  1027. package/dist/frontend/worker-target.js.map +1 -0
  1028. package/dist/frontend/worker-target.test.d.ts +1 -0
  1029. package/dist/frontend/worker-target.test.js +71 -0
  1030. package/dist/frontend/worker-target.test.js.map +1 -0
  1031. package/dist/index.d.ts +9 -8
  1032. package/dist/index.js +174 -88
  1033. package/dist/index.js.map +1 -1
  1034. package/dist/ir/analysis.js +95 -38
  1035. package/dist/ir/analysis.js.map +1 -1
  1036. package/dist/ir/analysis.test.js +91 -15
  1037. package/dist/ir/analysis.test.js.map +1 -1
  1038. package/dist/ir/api.d.ts +4 -0
  1039. package/dist/ir/api.js +6 -0
  1040. package/dist/ir/api.js.map +1 -0
  1041. package/dist/ir/build.d.ts +7 -0
  1042. package/dist/ir/build.js +27 -1
  1043. package/dist/ir/build.js.map +1 -1
  1044. package/dist/ir/builtin-effects.d.ts +9 -0
  1045. package/dist/ir/builtin-effects.js +643 -0
  1046. package/dist/ir/builtin-effects.js.map +1 -0
  1047. package/dist/ir/builtin-signatures.d.ts +15 -0
  1048. package/dist/ir/builtin-signatures.js +3397 -0
  1049. package/dist/ir/builtin-signatures.js.map +1 -0
  1050. package/dist/ir/byte-numbers.js +67 -16
  1051. package/dist/ir/byte-numbers.js.map +1 -1
  1052. package/dist/ir/byte-numbers.test.js +17 -4
  1053. package/dist/ir/byte-numbers.test.js.map +1 -1
  1054. package/dist/ir/constant-tables.js +13 -5
  1055. package/dist/ir/constant-tables.js.map +1 -1
  1056. package/dist/ir/constant-tables.test.js +47 -7
  1057. package/dist/ir/constant-tables.test.js.map +1 -1
  1058. package/dist/ir/control-flow.js +2 -1
  1059. package/dist/ir/control-flow.js.map +1 -1
  1060. package/dist/ir/control-flow.test.js +35 -11
  1061. package/dist/ir/control-flow.test.js.map +1 -1
  1062. package/dist/ir/initializer-bindings.d.ts +9 -0
  1063. package/dist/ir/initializer-bindings.js +115 -0
  1064. package/dist/ir/initializer-bindings.js.map +1 -0
  1065. package/dist/ir/initializer-bindings.test.d.ts +1 -0
  1066. package/dist/ir/initializer-bindings.test.js +118 -0
  1067. package/dist/ir/initializer-bindings.test.js.map +1 -0
  1068. package/dist/ir/integer-loop-facts.d.ts +12 -0
  1069. package/dist/ir/integer-loop-facts.js +137 -0
  1070. package/dist/ir/integer-loop-facts.js.map +1 -0
  1071. package/dist/ir/integer-loops.js +85 -30
  1072. package/dist/ir/integer-loops.js.map +1 -1
  1073. package/dist/ir/integer-loops.test.js +76 -13
  1074. package/dist/ir/integer-loops.test.js.map +1 -1
  1075. package/dist/ir/integer-ranges.js +93 -21
  1076. package/dist/ir/integer-ranges.js.map +1 -1
  1077. package/dist/ir/integer-ranges.test.js +199 -21
  1078. package/dist/ir/integer-ranges.test.js.map +1 -1
  1079. package/dist/ir/intrinsic-signatures.d.ts +20 -0
  1080. package/dist/ir/intrinsic-signatures.js +57 -0
  1081. package/dist/ir/intrinsic-signatures.js.map +1 -0
  1082. package/dist/ir/ir.d.ts +15 -2160
  1083. package/dist/ir/ir.js +160 -1396
  1084. package/dist/ir/ir.js.map +1 -1
  1085. package/dist/ir/ir.test.js +98 -77
  1086. package/dist/ir/ir.test.js.map +1 -1
  1087. package/dist/ir/numeric-call-specialization.d.ts +8 -0
  1088. package/dist/ir/numeric-call-specialization.js +198 -0
  1089. package/dist/ir/numeric-call-specialization.js.map +1 -0
  1090. package/dist/ir/runtime-features.d.ts +221 -0
  1091. package/dist/ir/runtime-features.js +552 -0
  1092. package/dist/ir/runtime-features.js.map +1 -0
  1093. package/dist/ir/runtime-features.test.d.ts +1 -0
  1094. package/dist/ir/runtime-features.test.js +98 -0
  1095. package/dist/ir/runtime-features.test.js.map +1 -0
  1096. package/dist/ir/scalar-records.js +130 -40
  1097. package/dist/ir/scalar-records.js.map +1 -1
  1098. package/dist/ir/scalar-records.test.js +146 -27
  1099. package/dist/ir/scalar-records.test.js.map +1 -1
  1100. package/dist/ir/serialize.d.ts +1 -1
  1101. package/dist/ir/serialize.js +7 -5
  1102. package/dist/ir/serialize.js.map +1 -1
  1103. package/dist/ir/serialize.test.js +44 -9
  1104. package/dist/ir/serialize.test.js.map +1 -1
  1105. package/dist/ir/traverse.js +156 -43
  1106. package/dist/ir/traverse.js.map +1 -1
  1107. package/dist/ir/traverse.test.js +99 -24
  1108. package/dist/ir/traverse.test.js.map +1 -1
  1109. package/dist/ir/validate.d.ts +1 -31
  1110. package/dist/ir/validate.js +869 -1910
  1111. package/dist/ir/validate.js.map +1 -1
  1112. package/dist/ir/validate.test.js +697 -114
  1113. package/dist/ir/validate.test.js.map +1 -1
  1114. package/dist/library/cache-primitives.js +9 -10
  1115. package/dist/library/cache-primitives.js.map +1 -1
  1116. package/dist/library/cache-reset.test.js +2 -1
  1117. package/dist/library/cache-reset.test.js.map +1 -1
  1118. package/dist/library/compiler-self-identity.js +11 -5
  1119. package/dist/library/compiler-self-identity.js.map +1 -1
  1120. package/dist/library/compiler-self-identity.test.js +10 -3
  1121. package/dist/library/compiler-self-identity.test.js.map +1 -1
  1122. package/dist/library/fence-eval.js +24 -7
  1123. package/dist/library/fence-eval.js.map +1 -1
  1124. package/dist/library/fence-eval.test.js +31 -7
  1125. package/dist/library/fence-eval.test.js.map +1 -1
  1126. package/dist/library/int-infer.js +199 -59
  1127. package/dist/library/int-infer.js.map +1 -1
  1128. package/dist/library/int-infer.test.js +137 -61
  1129. package/dist/library/int-infer.test.js.map +1 -1
  1130. package/dist/library/ir-policy.d.ts +27 -0
  1131. package/dist/library/ir-policy.js +234 -0
  1132. package/dist/library/ir-policy.js.map +1 -0
  1133. package/dist/library/library-cache.js +40 -17
  1134. package/dist/library/library-cache.js.map +1 -1
  1135. package/dist/library/library-cache.test.js +29 -18
  1136. package/dist/library/library-cache.test.js.map +1 -1
  1137. package/dist/library/library-profile.js +68 -13
  1138. package/dist/library/library-profile.js.map +1 -1
  1139. package/dist/library/prepare.js +48 -20
  1140. package/dist/library/prepare.js.map +1 -1
  1141. package/dist/library/semantic-source.js +16 -14
  1142. package/dist/library/semantic-source.js.map +1 -1
  1143. package/dist/library/semantic-source.test.js +9 -14
  1144. package/dist/library/semantic-source.test.js.map +1 -1
  1145. package/dist/library/sidecar-validate.js +53 -12
  1146. package/dist/library/sidecar-validate.js.map +1 -1
  1147. package/dist/library/sidecar.js +85 -24
  1148. package/dist/library/sidecar.js.map +1 -1
  1149. package/dist/library/trap-teaching.js +11 -2
  1150. package/dist/library/trap-teaching.js.map +1 -1
  1151. package/dist/native/cache.js +10 -4
  1152. package/dist/native/cache.js.map +1 -1
  1153. package/dist/native/cli.js +34 -9
  1154. package/dist/native/cli.js.map +1 -1
  1155. package/dist/native/compiler.js +191 -54
  1156. package/dist/native/compiler.js.map +1 -1
  1157. package/dist/native/compiler.test.js +134 -33
  1158. package/dist/native/compiler.test.js.map +1 -1
  1159. package/dist/native/comptime.js +23 -7
  1160. package/dist/native/comptime.js.map +1 -1
  1161. package/dist/native/comptime.test.js +26 -6
  1162. package/dist/native/comptime.test.js.map +1 -1
  1163. package/dist/native/executable-cache.js +77 -27
  1164. package/dist/native/executable-cache.js.map +1 -1
  1165. package/dist/native/executable-cache.test.js +41 -6
  1166. package/dist/native/executable-cache.test.js.map +1 -1
  1167. package/dist/native/file-identity.js +9 -2
  1168. package/dist/native/file-identity.js.map +1 -1
  1169. package/dist/native/file-identity.test.js.map +1 -1
  1170. package/dist/native/library.js +50 -12
  1171. package/dist/native/library.js.map +1 -1
  1172. package/dist/native/prepare.js +121 -34
  1173. package/dist/native/prepare.js.map +1 -1
  1174. package/dist/native/prepare.test.js +22 -6
  1175. package/dist/native/prepare.test.js.map +1 -1
  1176. package/dist/native/runtime-typescript.js +24 -11
  1177. package/dist/native/runtime-typescript.js.map +1 -1
  1178. package/dist/native/runtime-typescript.test.js.map +1 -1
  1179. package/dist/native/sanitizer.js +71 -18
  1180. package/dist/native/sanitizer.js.map +1 -1
  1181. package/dist/native/sanitizer.test.js +78 -20
  1182. package/dist/native/sanitizer.test.js.map +1 -1
  1183. package/dist/native/task.js.map +1 -1
  1184. package/dist/native/task.test.js +7 -2
  1185. package/dist/native/task.test.js.map +1 -1
  1186. package/dist/native/toolchain.js +68 -26
  1187. package/dist/native/toolchain.js.map +1 -1
  1188. package/dist/native/toolchain.test.js +59 -20
  1189. package/dist/native/toolchain.test.js.map +1 -1
  1190. package/dist/startup-cache.d.ts +1 -1
  1191. package/dist/startup-cache.js +1 -1
  1192. package/dist/startup-cache.js.map +1 -1
  1193. package/dist/timing.js.map +1 -1
  1194. package/package.json +20 -20
  1195. package/surface-manifest.json +30 -2
  1196. package/dist/frontend/lowering/lower-builtins.d.ts +0 -601
  1197. package/dist/frontend/lowering/lower-builtins.js +0 -8986
  1198. package/dist/frontend/lowering/lower-builtins.js.map +0 -1
  1199. package/dist/frontend/lowering/lower-containers.d.ts +0 -382
  1200. package/dist/frontend/lowering/lower-containers.js +0 -7344
  1201. package/dist/frontend/lowering/lower-containers.js.map +0 -1
@@ -1,14 +1,14 @@
1
+ import { dynUndefinedExpr, varRef } from "../../../ir/build.js";
1
2
  import { BUF_NUM_METHODS } from "./buffer-numeric-methods.js";
2
3
  import * as ts from "../../ts7/adapter.js";
3
- import { BYTES_ELEMENT_SIZE, BIGINT_T, BOOL, BYTES_U8, DYN, F64, STRING, UNDEFINED_T, VOID, arrayOf, bytesOf, typeEquals } from "../../../ir/ir.js";
4
+ import { BIGINT_T, BOOL, BYTES_U8, DYN, F64, STRING, UNDEFINED_T, VOID, arrayOf, bytesOf, typeEquals, } from "../../../ir/ir.js";
4
5
  import { isJsSourceFile, locOf } from "../../program.js";
5
- import { dynUndefinedExpr, newFnCtx, own } from "../lowerer.js";
6
+ import { newFnCtx, own } from "../lowerer.js";
6
7
  import { buildBytesSortFn } from "../lower-array-sort.js";
7
8
  import { isSafeToDiscard } from "../expressions/evaluation-safety.js";
8
9
  import { lowerDynObjectLiteral } from "../expressions/object-literals.js";
9
- import { defaultAfterUndefined, lowerOptionalArgument, lowerStaticallyUndefinedArgument } from "../optional-arguments.js";
10
- import { lowerCheckedArrayFrom } from "../lower-containers.js";
11
- import { varRef } from "../../../ir/build.js";
10
+ import { defaultAfterUndefined, lowerOptionalArgument, lowerStaticallyUndefinedArgument, } from "../optional-arguments.js";
11
+ import { lowerCheckedArrayFrom } from "./array-construction.js";
12
12
  /** Uint8Array.prototype.toSorted. The receiver/comparator expressions are
13
13
  * evaluated before entering the helper; the helper snapshots with
14
14
  * TypedArray.prototype.slice before its first comparison, then performs
@@ -102,25 +102,35 @@ const BYTES_CTORS = {
102
102
  Float64Array: "f64",
103
103
  };
104
104
  /** Numeric typed-array constructors
105
- * (stdlib provenance — a user's own class with the name resolves through
106
- * classBySymbol). Lowered argument shapes: none (empty), a length
107
- * (zero-filled; ToIndex at runtime — invalid lengths throw Node's
108
- * RangeError), a numeric typed array or Buffer (an independent COPY —
109
- * the readFile chain's `new Uint8Array(await readFile(p))`), a number[]
110
- * literal (element-coerced; its contextual type is the lib's
111
- * ArrayLike/Iterable union, which cannot map — the Set-seed pattern), or
112
- * a number[]-typed value, or checked native input with runtime length /
113
- * array-like dispatch. ArrayBuffer inputs create shared views.
114
- * Null when this isn't a stdlib
115
- * typed-array construction. */
105
+ * (stdlib provenance — a user's own class with the name resolves through
106
+ * classBySymbol). Lowered argument shapes: none (empty), a length
107
+ * (zero-filled; ToIndex at runtime — invalid lengths throw Node's
108
+ * RangeError), a numeric typed array or Buffer (an independent COPY —
109
+ * the readFile chain's `new Uint8Array(await readFile(p))`), a number[]
110
+ * literal (element-coerced; its contextual type is the lib's
111
+ * ArrayLike/Iterable union, which cannot map — the Set-seed pattern), or
112
+ * a number[]-typed value, or checked native input with runtime length /
113
+ * array-like dispatch. ArrayBuffer inputs create shared views.
114
+ * Null when this isn't a stdlib
115
+ * typed-array construction. */
116
116
  export function lowerBytesNew(lowerer, expr, symbol) {
117
- if (symbol != null && symbol.name === "ArrayBuffer" && lowerer.isStdlibSymbol(symbol)) {
117
+ if (symbol != null &&
118
+ (symbol.name === "ArrayBuffer" || symbol.name === "SharedArrayBuffer") &&
119
+ lowerer.isStdlibSymbol(symbol)) {
118
120
  const args = expr.arguments ?? [];
119
121
  if (args.length > 1 || args.some(ts.isSpreadElement)) {
120
122
  lowerer.noLowering("resizable ArrayBuffer construction", expr, "fixed-length ArrayBuffers accept a byte length; resizable storage is not supported yet");
121
123
  }
122
- const length = args[0] ? lowerer.coerceInto(args[0], lowerer.lowerExpr(args[0]), DYN) : dynUndefinedExpr(locOf(expr));
123
- return { kind: "libCall", fn: "arrayBuffer.new", args: [length], type: DYN, loc: locOf(expr) };
124
+ const length = args[0]
125
+ ? lowerer.coerceInto(args[0], lowerer.lowerExpr(args[0]), DYN)
126
+ : dynUndefinedExpr(locOf(expr));
127
+ return {
128
+ kind: "libCall",
129
+ fn: symbol.name === "SharedArrayBuffer" ? "sharedArrayBuffer.new" : "arrayBuffer.new",
130
+ args: [length],
131
+ type: DYN,
132
+ loc: locOf(expr),
133
+ };
124
134
  }
125
135
  if (symbol && symbol.name === "DataView" && lowerer.isStdlibSymbol(symbol)) {
126
136
  return lowerDataViewNew(lowerer, expr);
@@ -144,41 +154,13 @@ export function lowerBytesNew(lowerer, expr, symbol) {
144
154
  const seed = { kind: "arrayLit", elems, type: arrayOf(F64), loc };
145
155
  return { kind: "bytesNew", source: seed, type, loc };
146
156
  }
147
- // The SYNTACTIC `new T(new SharedArrayBuffer(n))` form — fresh-buffer construction (the
148
- // shared spelling is the Atomics.wait sleep idiom's). The buffer
149
- // never exists as a value: n must be a byte-length LITERAL divisible
150
- // by the element size (tsc would admit any number; a bad one is
151
- // Node's RangeError — rejected at compile time instead of
152
- // half-lowering), and the whole expression is a zero-filled typed
153
- // array of n/elemSize elements. Erasing the buffer is exact: nothing
154
- // else can ever reference it, so neither sharing (scriptc has no
155
- // threads) nor aliasing is observable — SEMANTICS.md documents the
156
- // stance. The RESIZABLE form (a maxByteLength options bag) fences by
157
- // name: this erasure has no shared or growable buffer representation.
158
- if (ts.isNewExpression(argNode) &&
159
- ts.isIdentifier(argNode.expression) &&
160
- argNode.expression.text === "SharedArrayBuffer" &&
161
- lowerer.isStdlibSymbol(lowerer.resolveValueSymbol(argNode.expression) ?? undefined)) {
162
- const bufCtor = argNode.expression.text;
163
- if ((argNode.arguments?.length ?? 0) > 1) {
164
- lowerer.noLowering(`new ${name} over a resizable ${bufCtor}`, argNode, "a maxByteLength options bag needs growable shared storage; the fixed-length " +
165
- "SharedArrayBuffer here erases into the view: drop the options bag");
166
- }
167
- const elemSize = BYTES_ELEMENT_SIZE[elem];
168
- const lenArg = argNode.arguments?.length === 1 ? argNode.arguments[0] : undefined;
169
- const lenT = lenArg ? lowerer.typeOf(lenArg) : null;
170
- const byteLen = lenT?.isNumberLiteralType() ? lenT.value : null;
171
- if (byteLen === null || byteLen % elemSize !== 0 || byteLen < 0) {
172
- lowerer.noLowering(`new ${name} over this ${bufCtor}`, argNode, `the byte length must be a number literal divisible by ${elemSize} — new ${name}(new ${bufCtor}(${elemSize}))`);
173
- }
174
- const count = { kind: "numLit", value: byteLen / elemSize, type: F64, loc };
175
- return { kind: "bytesNew", source: count, type, loc };
176
- }
177
157
  const src = lowerer.lowerExpr(argNode);
178
158
  if (src.type.kind === "union") {
179
159
  const arms = lowerer.unions.get(src.type.unionId)?.arms;
180
- if (arms?.every((arm) => arm.kind === "f64" || arm.kind === "bytes" ||
181
- typeEquals(arm, UNDEFINED_T) || (arm.kind === "array" && arm.elem.kind === "f64"))) {
160
+ if (arms?.every((arm) => arm.kind === "f64" ||
161
+ arm.kind === "bytes" ||
162
+ typeEquals(arm, UNDEFINED_T) ||
163
+ (arm.kind === "array" && arm.elem.kind === "f64"))) {
182
164
  // The checked constructor dispatch preserves each arm's copy or
183
165
  // length semantics, including undefined -> empty, and evaluates
184
166
  // an effectful source expression exactly once.
@@ -186,7 +168,8 @@ export function lowerBytesNew(lowerer, expr, symbol) {
186
168
  }
187
169
  }
188
170
  if (src.type.kind === "f64" ||
189
- src.type.kind === "bytes" || src.type.kind === "dyn" ||
171
+ src.type.kind === "bytes" ||
172
+ src.type.kind === "dyn" ||
190
173
  (src.type.kind === "array" && src.type.elem.kind === "f64")) {
191
174
  return { kind: "bytesNew", source: src, type, loc };
192
175
  }
@@ -204,7 +187,13 @@ export function lowerBytesStaticCall(lowerer, call, access) {
204
187
  if (call.arguments.length !== 1 || call.arguments.some(ts.isSpreadElement))
205
188
  lowerer.noLowering("ArrayBuffer.isView argument count", call);
206
189
  const arg = call.arguments[0];
207
- return { kind: "libCall", fn: "arrayBuffer.isView", args: [lowerer.coerceInto(arg, lowerer.lowerExpr(arg), DYN)], type: BOOL, loc: locOf(call) };
190
+ return {
191
+ kind: "libCall",
192
+ fn: "arrayBuffer.isView",
193
+ args: [lowerer.coerceInto(arg, lowerer.lowerExpr(arg), DYN)],
194
+ type: BOOL,
195
+ loc: locOf(call),
196
+ };
208
197
  }
209
198
  if (access.name.text !== "from" || !ts.isIdentifier(access.expression))
210
199
  return null;
@@ -212,7 +201,9 @@ export function lowerBytesStaticCall(lowerer, call, access) {
212
201
  const elem = symbol ? own(BYTES_CTORS, symbol.name) : undefined;
213
202
  if (!elem || !lowerer.isStdlibSymbol(symbol ?? undefined))
214
203
  return null;
215
- if (call.arguments.length < 1 || call.arguments.length > 3 || call.arguments.some(ts.isSpreadElement)) {
204
+ if (call.arguments.length < 1 ||
205
+ call.arguments.length > 3 ||
206
+ call.arguments.some(ts.isSpreadElement)) {
216
207
  lowerer.noLowering("TypedArray.from with this argument count", call);
217
208
  }
218
209
  const node = call.arguments[0];
@@ -231,24 +222,59 @@ export function lowerBytesStaticCall(lowerer, call, access) {
231
222
  const collected = lowerCheckedArrayFrom(lowerer, input, loc);
232
223
  const mapped = lowerCheckedArrayFrom(lowerer, collected.result, loc, mapper, receiver, true);
233
224
  // Consume the iterable before mapping, but validate the mapper first.
234
- lowerer.liftedFns.push({ name: key, params: locals.map((local) => ({ localId: local.id, name: local.name, type: DYN })),
235
- returnType: bytesOf(elem), locals: context.locals, loc, body: [
236
- mapped.stmts[0], ...collected.stmts, ...mapped.stmts.slice(1),
237
- { kind: "return", value: { kind: "bytesNew", source: mapped.result, from: true, type: bytesOf(elem), loc }, loc },
238
- ] });
225
+ lowerer.liftedFns.push({
226
+ name: key,
227
+ params: locals.map((local) => ({ localId: local.id, name: local.name, type: DYN })),
228
+ returnType: bytesOf(elem),
229
+ locals: context.locals,
230
+ loc,
231
+ body: [
232
+ mapped.stmts[0],
233
+ ...collected.stmts,
234
+ ...mapped.stmts.slice(1),
235
+ {
236
+ kind: "return",
237
+ value: {
238
+ kind: "bytesNew",
239
+ source: mapped.result,
240
+ from: true,
241
+ type: bytesOf(elem),
242
+ loc,
243
+ },
244
+ loc,
245
+ },
246
+ ],
247
+ });
239
248
  }
240
249
  finally {
241
250
  lowerer.fnStack.pop();
242
251
  }
243
252
  }
244
- return { kind: "call", callee: key, args: [lowerer.coerceInto(node, source, DYN),
253
+ return {
254
+ kind: "call",
255
+ callee: key,
256
+ args: [
257
+ lowerer.coerceInto(node, source, DYN),
245
258
  lowerer.lowerExprExpecting(call.arguments[1], DYN),
246
- call.arguments[2] ? lowerer.lowerExprExpecting(call.arguments[2], DYN) : dynUndefinedExpr(loc)], type: bytesOf(elem), loc };
259
+ call.arguments[2]
260
+ ? lowerer.lowerExprExpecting(call.arguments[2], DYN)
261
+ : dynUndefinedExpr(loc),
262
+ ],
263
+ type: bytesOf(elem),
264
+ loc,
265
+ };
247
266
  }
248
- if (source.type.kind === "bytes" || (source.type.kind === "array" && source.type.elem.kind === "f64")) {
267
+ if (source.type.kind === "bytes" ||
268
+ (source.type.kind === "array" && source.type.elem.kind === "f64")) {
249
269
  return { kind: "bytesNew", source, type: bytesOf(elem), loc: locOf(call) };
250
270
  }
251
- return { kind: "bytesNew", source: lowerer.coerceInto(node, source, DYN), from: true, type: bytesOf(elem), loc: locOf(call) };
271
+ return {
272
+ kind: "bytesNew",
273
+ source: lowerer.coerceInto(node, source, DYN),
274
+ from: true,
275
+ type: bytesOf(elem),
276
+ loc: locOf(call),
277
+ };
252
278
  }
253
279
  /** Construct a view over the complete branded backing allocation. */
254
280
  function lowerArrayBufferView(lowerer, args, elem, loc) {
@@ -256,8 +282,25 @@ function lowerArrayBufferView(lowerer, args, elem, loc) {
256
282
  const node = args[index];
257
283
  return node ? lowerer.coerceInto(node, lowerer.lowerExpr(node), DYN) : dynUndefinedExpr(loc);
258
284
  });
259
- const fn = { u8c: "arrayBuffer.viewU8C", i8: "arrayBuffer.viewI8", u16: "arrayBuffer.viewU16", i16: "arrayBuffer.viewI16", u8: "arrayBuffer.viewU8", u32: "arrayBuffer.viewU32", i32: "arrayBuffer.viewI32", f32: "arrayBuffer.viewF32", f64: "arrayBuffer.viewF64", dv: "arrayBuffer.viewDV" };
260
- return { kind: "libCall", fn: fn[elem], args: values, type: elem === "dv" ? BYTES_U8 : bytesOf(elem), loc };
285
+ const fn = {
286
+ u8c: "arrayBuffer.viewU8C",
287
+ i8: "arrayBuffer.viewI8",
288
+ u16: "arrayBuffer.viewU16",
289
+ i16: "arrayBuffer.viewI16",
290
+ u8: "arrayBuffer.viewU8",
291
+ u32: "arrayBuffer.viewU32",
292
+ i32: "arrayBuffer.viewI32",
293
+ f32: "arrayBuffer.viewF32",
294
+ f64: "arrayBuffer.viewF64",
295
+ dv: "arrayBuffer.viewDV",
296
+ };
297
+ return {
298
+ kind: "libCall",
299
+ fn: fn[elem],
300
+ args: values,
301
+ type: elem === "dv" ? BYTES_U8 : bytesOf(elem),
302
+ loc,
303
+ };
261
304
  }
262
305
  function lowerDataViewNew(lowerer, expr) {
263
306
  const args = expr.arguments ?? [];
@@ -266,12 +309,12 @@ function lowerDataViewNew(lowerer, expr) {
266
309
  return lowerArrayBufferView(lowerer, args, "dv", locOf(expr));
267
310
  }
268
311
  /** Method calls on typed-array/Buffer receivers: slice (copy), subarray
269
- * (shared view), copyWithin, set(src,
270
- * offset?), and the u8-only Buffer surface: toString(enc?) plus the
271
- * whole numeric read/write family (fixed widths BE/LE and the
272
- * variable-width read/writeUIntLE quartet — BUF_NUM_METHODS). Everything
273
- * else the lib declares (fill, indexOf, reverse, ...) falls through to
274
- * the SC2020 member fence. Null when this isn't a bytes method call. */
312
+ * (shared view), toReversed, copyWithin, set(src,
313
+ * offset?), and the u8-only Buffer surface: toString(enc?) plus the
314
+ * whole numeric read/write family (fixed widths BE/LE and the
315
+ * variable-width read/writeUIntLE quartet — BUF_NUM_METHODS). Everything
316
+ * else the lib declares (fill, indexOf, reverse, ...) falls through to
317
+ * the SC2020 member fence. Null when this isn't a bytes method call. */
275
318
  export function lowerBytesMethodCall(lowerer, call, access) {
276
319
  if (lowerer.chainBlocked(access, call))
277
320
  return null;
@@ -289,16 +332,26 @@ export function lowerBytesMethodCall(lowerer, call, access) {
289
332
  const lowered = lowerer.lowerExpr(access.expression);
290
333
  const receiver = lowered.kind === "dynCheck" && lowered.value.type.kind === "dyn" ? lowered.value : lowered;
291
334
  if (receiver.type.kind === "dyn")
292
- return { kind: "libCall", fn: "dyn.toString", args: [receiver,
293
- call.arguments[0] ? lowerer.lowerExprExpecting(call.arguments[0], DYN) : dynUndefinedExpr(loc),
294
- { kind: "strLit", value: access.getText(), type: STRING, loc }], type: STRING, loc };
335
+ return {
336
+ kind: "libCall",
337
+ fn: "dyn.toString",
338
+ args: [
339
+ receiver,
340
+ call.arguments[0]
341
+ ? lowerer.lowerExprExpecting(call.arguments[0], DYN)
342
+ : dynUndefinedExpr(loc),
343
+ { kind: "strLit", value: access.getText(), type: STRING, loc },
344
+ ],
345
+ type: STRING,
346
+ loc,
347
+ };
295
348
  }
296
349
  if (receiverIr.elem === "u8" && name === "toSorted") {
297
350
  return lowerBytesToSortedCall(lowerer, call, access, receiverIr);
298
351
  }
299
- if (receiverIr.elem === "u8" && name === "toReversed") {
352
+ if (name === "toReversed") {
300
353
  if (nArgs !== 0) {
301
- lowerer.noLowering(`.toReversed with ${nArgs} arguments on Uint8Array`, call);
354
+ lowerer.noLowering(`.toReversed with ${nArgs} arguments on typed arrays`, call);
302
355
  }
303
356
  return {
304
357
  kind: "bytesIntrinsic",
@@ -360,7 +413,10 @@ export function lowerBytesMethodCall(lowerer, call, access) {
360
413
  const declaredOnBuffer = name === "slice" &&
361
414
  (() => {
362
415
  const nameSym = lowerer.checker.getSymbolAtLocation(access.name);
363
- return nameSym !== undefined && lowerer.checker.declarationsOf(nameSym).some((d) => ts.isInterfaceDeclaration(d.parent) && d.parent.name.text === "Buffer");
416
+ return (nameSym !== undefined &&
417
+ lowerer.checker
418
+ .declarationsOf(nameSym)
419
+ .some((d) => ts.isInterfaceDeclaration(d.parent) && d.parent.name.text === "Buffer"));
364
420
  })();
365
421
  const method = name === "subarray" || declaredOnBuffer ? "subarray" : "slice";
366
422
  return { kind: "bytesIntrinsic", method, receiver, args, type: receiverIr, loc };
@@ -377,10 +433,15 @@ export function lowerBytesMethodCall(lowerer, call, access) {
377
433
  });
378
434
  return { kind: "bytesIntrinsic", method: "copyWithin", receiver, args, type: receiverIr, loc };
379
435
  }
380
- if (name === "fill" && !(() => {
381
- const symbol = lowerer.checker.getSymbolAtLocation(access.name);
382
- return symbol !== undefined && lowerer.checker.declarationsOf(symbol).some((declaration) => ts.isInterfaceDeclaration(declaration.parent) && declaration.parent.name.text === "Buffer");
383
- })()) {
436
+ if (name === "fill" &&
437
+ !(() => {
438
+ const symbol = lowerer.checker.getSymbolAtLocation(access.name);
439
+ return (symbol !== undefined &&
440
+ lowerer.checker
441
+ .declarationsOf(symbol)
442
+ .some((declaration) => ts.isInterfaceDeclaration(declaration.parent) &&
443
+ declaration.parent.name.text === "Buffer"));
444
+ })()) {
384
445
  // Typed arrays use element coercion and relative, clamped indices.
385
446
  // Buffer's same-named method keeps its pattern and offset validation.
386
447
  if (nArgs > 3 || call.arguments.some(ts.isSpreadElement)) {
@@ -388,9 +449,23 @@ export function lowerBytesMethodCall(lowerer, call, access) {
388
449
  }
389
450
  const receiver = lowerer.lowerExprExpecting(access.expression, receiverIr);
390
451
  const zero = { kind: "numLit", value: 0, type: F64, loc };
391
- const v = call.arguments[0] ? lowerOptionalArgument(lowerer, call.arguments[0], F64, zero) : zero;
392
- const idx = call.arguments.slice(1).map((a, i) => lowerOptionalArgument(lowerer, a, F64, { kind: "numLit", value: i === 0 ? 0 : Infinity, type: F64, loc }));
393
- return { kind: "bytesIntrinsic", method: "fillElem", receiver, args: [v, ...idx], type: receiverIr, loc };
452
+ const v = call.arguments[0]
453
+ ? lowerOptionalArgument(lowerer, call.arguments[0], F64, zero)
454
+ : zero;
455
+ const idx = call.arguments.slice(1).map((a, i) => lowerOptionalArgument(lowerer, a, F64, {
456
+ kind: "numLit",
457
+ value: i === 0 ? 0 : Infinity,
458
+ type: F64,
459
+ loc,
460
+ }));
461
+ return {
462
+ kind: "bytesIntrinsic",
463
+ method: "fillElem",
464
+ receiver,
465
+ args: [v, ...idx],
466
+ type: receiverIr,
467
+ loc,
468
+ };
394
469
  }
395
470
  if (name === "set") {
396
471
  if (nArgs < 1 || nArgs > 2) {
@@ -399,9 +474,16 @@ export function lowerBytesMethodCall(lowerer, call, access) {
399
474
  const receiver = lowerer.lowerExprExpecting(access.expression, receiverIr);
400
475
  const src = lowerer.lowerExpr(call.arguments[0]);
401
476
  const method = src.type.kind === "bytes" ? "setFrom" : "setFromDyn";
402
- const args = [src.type.kind === "bytes" ? src : lowerer.coerceInto(call.arguments[0], src, DYN)];
477
+ const args = [
478
+ src.type.kind === "bytes" ? src : lowerer.coerceInto(call.arguments[0], src, DYN),
479
+ ];
403
480
  if (nArgs === 2)
404
- args.push(lowerOptionalArgument(lowerer, call.arguments[1], F64, { kind: "numLit", value: 0, type: F64, loc }));
481
+ args.push(lowerOptionalArgument(lowerer, call.arguments[1], F64, {
482
+ kind: "numLit",
483
+ value: 0,
484
+ type: F64,
485
+ loc,
486
+ }));
405
487
  return { kind: "bytesIntrinsic", method, receiver, args, type: VOID, loc };
406
488
  }
407
489
  if (name === "toString") {
@@ -410,7 +492,10 @@ export function lowerBytesMethodCall(lowerer, call, access) {
410
492
  // Array-toString (comma join), a different operation: fenced.
411
493
  const declaredOnBuffer = (() => {
412
494
  const nameSym = lowerer.checker.getSymbolAtLocation(access.name);
413
- return nameSym !== undefined && lowerer.checker.declarationsOf(nameSym).some((d) => ts.isInterfaceDeclaration(d.parent) && d.parent.name.text === "Buffer");
495
+ return (nameSym !== undefined &&
496
+ lowerer.checker
497
+ .declarationsOf(nameSym)
498
+ .some((d) => ts.isInterfaceDeclaration(d.parent) && d.parent.name.text === "Buffer"));
414
499
  })();
415
500
  if (receiverIr.elem !== "u8" || !declaredOnBuffer) {
416
501
  lowerer.noLowering("typed-array toString", call, 'Buffer.from(x).toString("utf8" | "hex" | "base64") is the lowered string conversion');
@@ -423,12 +508,15 @@ export function lowerBytesMethodCall(lowerer, call, access) {
423
508
  let enc = { kind: "strLit", value: "utf8", type: STRING, loc };
424
509
  if (encNode) {
425
510
  const encType = lowerer.typeOf(encNode);
426
- const encName = encType.isStringLiteralType()
427
- ? knownBufEncoding(encType.value)
428
- : undefined;
511
+ const encName = encType.isStringLiteralType() ? knownBufEncoding(encType.value) : undefined;
429
512
  if (encName !== undefined) {
430
513
  // Keep literals on the canonical, non-throwing fast path.
431
- enc = { kind: "strLit", value: encName, type: STRING, loc };
514
+ enc = defaultAfterUndefined(lowerer.lowerExpr(encNode), {
515
+ kind: "strLit",
516
+ value: encName,
517
+ type: STRING,
518
+ loc,
519
+ });
432
520
  }
433
521
  else {
434
522
  const undefinedArg = lowerStaticallyUndefinedArgument(lowerer, encNode);
@@ -458,7 +546,14 @@ export function lowerBytesMethodCall(lowerer, call, access) {
458
546
  const start = lowerer.lowerExprExpecting(call.arguments[1], F64);
459
547
  if (nArgs === 3) {
460
548
  const end = lowerer.lowerExprExpecting(call.arguments[2], F64);
461
- return { kind: "bytesIntrinsic", method, receiver, args: [enc, start, end], type: STRING, loc };
549
+ return {
550
+ kind: "bytesIntrinsic",
551
+ method,
552
+ receiver,
553
+ args: [enc, start, end],
554
+ type: STRING,
555
+ loc,
556
+ };
462
557
  }
463
558
  return { kind: "bytesIntrinsic", method, receiver, args: [enc, start], type: STRING, loc };
464
559
  }
@@ -472,7 +567,10 @@ export function lowerBytesMethodCall(lowerer, call, access) {
472
567
  // rest).
473
568
  const declOnBuffer = (() => {
474
569
  const nameSym = lowerer.checker.getSymbolAtLocation(access.name);
475
- return nameSym !== undefined && lowerer.checker.declarationsOf(nameSym).some((d) => ts.isInterfaceDeclaration(d.parent) && d.parent.name.text === "Buffer");
570
+ return (nameSym !== undefined &&
571
+ lowerer.checker
572
+ .declarationsOf(nameSym)
573
+ .some((d) => ts.isInterfaceDeclaration(d.parent) && d.parent.name.text === "Buffer"));
476
574
  })();
477
575
  if (declOnBuffer && receiverIr.elem === "u8") {
478
576
  const bufMethod = lowerBufferInstanceMethod(lowerer, call, access, name, loc);
@@ -494,10 +592,22 @@ export function lowerBytesMethodCall(lowerer, call, access) {
494
592
  const sign = { kind: "boolLit", value: bigKind.sign, type: BOOL, loc };
495
593
  const le = { kind: "boolLit", value: bigKind.le, type: BOOL, loc };
496
594
  if (!write) {
497
- return { kind: "libCall", fn: "bigint.bufferRead", args: [receiver, offset, sign, le], type: BIGINT_T, loc };
595
+ return {
596
+ kind: "libCall",
597
+ fn: "bigint.bufferRead",
598
+ args: [receiver, offset, sign, le],
599
+ type: BIGINT_T,
600
+ loc,
601
+ };
498
602
  }
499
603
  const value = lowerer.lowerExprExpecting(call.arguments[0], BIGINT_T);
500
- return { kind: "libCall", fn: "bigint.bufferWrite", args: [receiver, value, offset, sign, le], type: F64, loc };
604
+ return {
605
+ kind: "libCall",
606
+ fn: "bigint.bufferWrite",
607
+ args: [receiver, value, offset, sign, le],
608
+ type: F64,
609
+ loc,
610
+ };
501
611
  }
502
612
  // The Buffer numeric read/write families — every fixed-width kind in
503
613
  // both endiannesses ("Uint" and "UInt" alike: Node aliases both), plus
@@ -519,7 +629,14 @@ export function lowerBytesMethodCall(lowerer, call, access) {
519
629
  if (nArgs === required) {
520
630
  args.push({ kind: "numLit", value: 0, type: F64, loc }); // Node's offset default
521
631
  }
522
- return { kind: "bytesIntrinsic", method: write ? "writeNum" : "readNum", receiver, args, type: F64, loc };
632
+ return {
633
+ kind: "bytesIntrinsic",
634
+ method: write ? "writeNum" : "readNum",
635
+ receiver,
636
+ args,
637
+ type: F64,
638
+ loc,
639
+ };
523
640
  }
524
641
  const varKind = own(BUF_NUM_VAR_METHODS, name);
525
642
  if (varKind !== undefined) {
@@ -534,7 +651,14 @@ export function lowerBytesMethodCall(lowerer, call, access) {
534
651
  const receiver = lowerer.lowerExprExpecting(access.expression, receiverIr);
535
652
  const kind = { kind: "strLit", value: varKind, type: STRING, loc };
536
653
  const args = [kind, ...call.arguments.map((a) => lowerer.lowerExprExpecting(a, F64))];
537
- return { kind: "bytesIntrinsic", method: write ? "writeNumVar" : "readNumVar", receiver, args, type: F64, loc };
654
+ return {
655
+ kind: "bytesIntrinsic",
656
+ method: write ? "writeNumVar" : "readNumVar",
657
+ receiver,
658
+ args,
659
+ type: F64,
660
+ loc,
661
+ };
538
662
  }
539
663
  // DataView getters (DataView maps to bytes<u8>, so the receiver kind
540
664
  // and stdlib provenance land here; the checker keeps these names off
@@ -551,7 +675,13 @@ export function lowerBytesMethodCall(lowerer, call, access) {
551
675
  const le = call.arguments[1]
552
676
  ? lowerer.lowerExprExpecting(call.arguments[1], BOOL)
553
677
  : { kind: "boolLit", value: false, type: BOOL, loc };
554
- return { kind: "libCall", fn: "bigint.dataViewGet", args: [receiver, offset, sign, le], type: BIGINT_T, loc };
678
+ return {
679
+ kind: "libCall",
680
+ fn: "bigint.dataViewGet",
681
+ args: [receiver, offset, sign, le],
682
+ type: BIGINT_T,
683
+ loc,
684
+ };
555
685
  }
556
686
  const dvGetter = own(DV_GETTERS, name);
557
687
  if (dvGetter !== undefined && receiverIr.elem === "u8") {
@@ -581,7 +711,13 @@ export function lowerBytesMethodCall(lowerer, call, access) {
581
711
  const le = call.arguments[2]
582
712
  ? lowerer.lowerExprExpecting(call.arguments[2], BOOL)
583
713
  : { kind: "boolLit", value: false, type: BOOL, loc };
584
- return { kind: "libCall", fn: "bigint.dataViewSet", args: [receiver, offset, value, le], type: VOID, loc };
714
+ return {
715
+ kind: "libCall",
716
+ fn: "bigint.dataViewSet",
717
+ args: [receiver, offset, value, le],
718
+ type: VOID,
719
+ loc,
720
+ };
585
721
  }
586
722
  if (dvSetter !== undefined && receiverIr.elem === "u8") {
587
723
  const maxArgs = dvSetter.le ? 3 : 2;
@@ -723,7 +859,14 @@ function lowerBufferInstanceMethod(lowerer, call, access, name, loc) {
723
859
  const target = u8Arg(0);
724
860
  const idx = call.arguments.slice(1).map((a) => lowerer.lowerExprExpecting(a, F64));
725
861
  const receiver = lowerer.lowerExprExpecting(access.expression, BYTES_U8);
726
- return { kind: "bytesIntrinsic", method: "compareBuf", receiver, args: [target, ...idx], type: F64, loc };
862
+ return {
863
+ kind: "bytesIntrinsic",
864
+ method: "compareBuf",
865
+ receiver,
866
+ args: [target, ...idx],
867
+ type: F64,
868
+ loc,
869
+ };
727
870
  }
728
871
  // An absent/ill-typed target or offset (`a.compare()`, string
729
872
  // offsets, explicit undefined): Node's target/targetStart/targetEnd/
@@ -760,7 +903,11 @@ function lowerBufferInstanceMethod(lowerer, call, access, name, loc) {
760
903
  // encoding is irrelevant, like Node).
761
904
  const v = lowerer.lowerExprExpecting(args[0], F64);
762
905
  const numArgs = [v, ...(offNode ? [lowerer.lowerExprExpecting(offNode, F64)] : [])];
763
- const method = name === "indexOf" ? "indexOfNum" : name === "lastIndexOf" ? "lastIndexOfNum" : "includesNum";
906
+ const method = name === "indexOf"
907
+ ? "indexOfNum"
908
+ : name === "lastIndexOf"
909
+ ? "lastIndexOfNum"
910
+ : "includesNum";
764
911
  return { kind: "bytesIntrinsic", method, receiver, args: numArgs, type: resultT, loc };
765
912
  }
766
913
  let needle;
@@ -779,7 +926,11 @@ function lowerBufferInstanceMethod(lowerer, call, access, name, loc) {
779
926
  lowerer.noLowering(`.${name} of '${lowerer.checker.typeToString(lowerer.typeOf(args[0]))}' values`, args[0], "string, number, and Buffer/Uint8Array needles search (narrow unions first)");
780
927
  }
781
928
  const alignLit = { kind: "numLit", value: align, type: F64, loc };
782
- const searchArgs = [needle, alignLit, ...(offNode ? [lowerer.lowerExprExpecting(offNode, F64)] : [])];
929
+ const searchArgs = [
930
+ needle,
931
+ alignLit,
932
+ ...(offNode ? [lowerer.lowerExprExpecting(offNode, F64)] : []),
933
+ ];
783
934
  return { kind: "bytesIntrinsic", method: name, receiver, args: searchArgs, type: resultT, loc };
784
935
  }
785
936
  if (name === "fill") {
@@ -804,16 +955,37 @@ function lowerBufferInstanceMethod(lowerer, call, access, name, loc) {
804
955
  const encName = encNode ? bufEncoding(lowerer, ".fill", encNode) : "utf8";
805
956
  const s = lowerer.lowerExprExpecting(args[0], STRING);
806
957
  const enc = { kind: "strLit", value: encName, type: STRING, loc };
807
- return { kind: "bytesIntrinsic", method: "fillStr", receiver, args: [s, enc, ...idx], type: BYTES_U8, loc };
958
+ return {
959
+ kind: "bytesIntrinsic",
960
+ method: "fillStr",
961
+ receiver,
962
+ args: [s, enc, ...idx],
963
+ type: BYTES_U8,
964
+ loc,
965
+ };
808
966
  }
809
967
  if (encNode)
810
968
  lowerer.noLowering(".fill with an encoding on a non-string value", encNode);
811
969
  if (vT?.kind === "f64") {
812
970
  const v = lowerer.lowerExprExpecting(args[0], F64);
813
- return { kind: "bytesIntrinsic", method: "fillNum", receiver, args: [v, ...idx], type: BYTES_U8, loc };
971
+ return {
972
+ kind: "bytesIntrinsic",
973
+ method: "fillNum",
974
+ receiver,
975
+ args: [v, ...idx],
976
+ type: BYTES_U8,
977
+ loc,
978
+ };
814
979
  }
815
980
  const pattern = u8Arg(0);
816
- return { kind: "bytesIntrinsic", method: "fill", receiver, args: [pattern, ...idx], type: BYTES_U8, loc };
981
+ return {
982
+ kind: "bytesIntrinsic",
983
+ method: "fill",
984
+ receiver,
985
+ args: [pattern, ...idx],
986
+ type: BYTES_U8,
987
+ loc,
988
+ };
817
989
  }
818
990
  if (name === "copy") {
819
991
  if (nArgs < 1 || nArgs > 4)
@@ -821,7 +993,14 @@ function lowerBufferInstanceMethod(lowerer, call, access, name, loc) {
821
993
  const target = u8Arg(0);
822
994
  const idx = call.arguments.slice(1).map((a) => lowerer.lowerExprExpecting(a, F64));
823
995
  const receiver = lowerer.lowerExprExpecting(access.expression, BYTES_U8);
824
- return { kind: "bytesIntrinsic", method: "copy", receiver, args: [target, ...idx], type: F64, loc };
996
+ return {
997
+ kind: "bytesIntrinsic",
998
+ method: "copy",
999
+ receiver,
1000
+ args: [target, ...idx],
1001
+ type: F64,
1002
+ loc,
1003
+ };
825
1004
  }
826
1005
  if (name === "swap16" || name === "swap32" || name === "swap64") {
827
1006
  if (nArgs !== 0)
@@ -848,9 +1027,21 @@ function lowerBufferInstanceMethod(lowerer, call, access, name, loc) {
848
1027
  const offset = idxNodes[0]
849
1028
  ? lowerer.lowerExprExpecting(idxNodes[0], F64)
850
1029
  : { kind: "numLit", value: 0, type: F64, loc };
851
- const writeArgs = [s, enc, offset, ...(idxNodes[1] ? [lowerer.lowerExprExpecting(idxNodes[1], F64)] : [])];
1030
+ const writeArgs = [
1031
+ s,
1032
+ enc,
1033
+ offset,
1034
+ ...(idxNodes[1] ? [lowerer.lowerExprExpecting(idxNodes[1], F64)] : []),
1035
+ ];
852
1036
  const receiver = lowerer.lowerExprExpecting(access.expression, BYTES_U8);
853
- return { kind: "bytesIntrinsic", method: "writeStr", receiver, args: writeArgs, type: F64, loc };
1037
+ return {
1038
+ kind: "bytesIntrinsic",
1039
+ method: "writeStr",
1040
+ receiver,
1041
+ args: writeArgs,
1042
+ type: F64,
1043
+ loc,
1044
+ };
854
1045
  }
855
1046
  return null;
856
1047
  }
@@ -882,9 +1073,9 @@ const DV_SETTERS = {
882
1073
  setFloat64: { method: "dvSetFloat64", le: true },
883
1074
  };
884
1075
  /** The Buffer statics — `Buffer.from(...)`, `Buffer.alloc(n)`,
885
- * `Buffer.concat(list)`, `Buffer.isBuffer(x)` — on THE stdlib Buffer
886
- * global (name + provenance; fallback and @types/node alike). Null when
887
- * the callee isn't a Buffer-static access. */
1076
+ * `Buffer.concat(list)`, `Buffer.isBuffer(x)` — on THE stdlib Buffer
1077
+ * global (name + provenance; fallback and @types/node alike). Null when
1078
+ * the callee isn't a Buffer-static access. */
888
1079
  function knownBufferProducer(lowerer, source, seen = new Set()) {
889
1080
  let node = source;
890
1081
  while (ts.isParenthesizedExpression(node) || ts.isAsExpression(node) || ts.isTypeAssertion(node))
@@ -894,7 +1085,9 @@ function knownBufferProducer(lowerer, source, seen = new Set()) {
894
1085
  if (!symbol || seen.has(symbol))
895
1086
  return false;
896
1087
  seen.add(symbol);
897
- return lowerer.checker.declarationsOf(symbol).some((decl) => ts.isVariableDeclaration(decl) &&
1088
+ return lowerer.checker
1089
+ .declarationsOf(symbol)
1090
+ .some((decl) => ts.isVariableDeclaration(decl) &&
898
1091
  ts.isVariableDeclarationList(decl.parent) &&
899
1092
  (decl.parent.flags & ts.NodeFlags.Const) !== 0 &&
900
1093
  decl.initializer !== undefined &&
@@ -908,13 +1101,16 @@ function knownBufferProducer(lowerer, source, seen = new Set()) {
908
1101
  : ts.isPropertyAccessExpression(callee)
909
1102
  ? lowerer.builtinMemberOf(callee)
910
1103
  : null;
911
- if (bi?.module === "crypto" && (bi.member === "randomBytes" || bi.member === "pbkdf2Sync" || bi.member === "scryptSync"))
1104
+ if (bi?.module === "crypto" &&
1105
+ (bi.member === "randomBytes" || bi.member === "pbkdf2Sync" || bi.member === "scryptSync"))
912
1106
  return true;
913
1107
  if (bi?.module === "buffer" && bi.member === "transcode")
914
1108
  return true;
915
1109
  if (bi?.module === "url" && bi.member === "fileURLToPathBuffer")
916
1110
  return true;
917
- if (!ts.isPropertyAccessExpression(callee) || callee.name.text !== "digest" || node.arguments.length !== 0)
1111
+ if (!ts.isPropertyAccessExpression(callee) ||
1112
+ callee.name.text !== "digest" ||
1113
+ node.arguments.length !== 0)
918
1114
  return false;
919
1115
  const type = lowerer.mapTypeOf(lowerer.typeOf(callee.expression));
920
1116
  return type?.kind === "cryptoHash" || type?.kind === "cryptoHmac";
@@ -936,8 +1132,10 @@ function lowerBufferStaticValue(lowerer, call, access) {
936
1132
  const loc = locOf(call);
937
1133
  const args = call.arguments;
938
1134
  if (member === "from") {
939
- if (args.length >= 1 && args.length <= 3 && !args.some(ts.isSpreadElement) &&
940
- ((symbol) => symbol != null && symbol.name === "ArrayBuffer")(lowerer.typeOf(args[0]).getSymbol())) {
1135
+ if (args.length >= 1 &&
1136
+ args.length <= 3 &&
1137
+ !args.some(ts.isSpreadElement) &&
1138
+ ((symbol) => symbol != null && (symbol.name === "ArrayBuffer" || symbol.name === "SharedArrayBuffer"))(lowerer.typeOf(args[0]).getSymbol())) {
941
1139
  return lowerArrayBufferView(lowerer, args, "u8", loc);
942
1140
  }
943
1141
  // Buffer.from(x.buffer[, byteOffset[, length]]): a u8 VIEW sharing
@@ -946,14 +1144,24 @@ function lowerBufferStaticValue(lowerer, call, access) {
946
1144
  // array — the DataView peel — and the construction rides the same
947
1145
  // dataViewNew intrinsic (offset/length validation throws Node's
948
1146
  // DataView-shaped RangeErrors; valid indices behave exactly).
949
- if (args.length >= 1 && args.length <= 3 && !args.some(ts.isSpreadElement) &&
950
- ts.isPropertyAccessExpression(args[0]) && args[0].name.text === "buffer") {
1147
+ if (args.length >= 1 &&
1148
+ args.length <= 3 &&
1149
+ !args.some(ts.isSpreadElement) &&
1150
+ ts.isPropertyAccessExpression(args[0]) &&
1151
+ args[0].name.text === "buffer") {
951
1152
  const srcNode = args[0].expression;
952
1153
  const srcIr = lowerer.mapTypeOf(lowerer.typeOf(srcNode));
953
1154
  if (srcIr?.kind === "bytes") {
954
1155
  const receiver = lowerer.lowerExpr(srcNode);
955
1156
  const idxArgs = args.slice(1).map((a) => lowerer.lowerExprExpecting(a, F64));
956
- return { kind: "bytesIntrinsic", method: "dataViewNew", receiver, args: idxArgs, type: BYTES_U8, loc };
1157
+ return {
1158
+ kind: "bytesIntrinsic",
1159
+ method: "dataViewNew",
1160
+ receiver,
1161
+ args: idxArgs,
1162
+ type: BYTES_U8,
1163
+ loc,
1164
+ };
957
1165
  }
958
1166
  }
959
1167
  if (args.length >= 1 && args.length <= 2 && !args.some(ts.isSpreadElement)) {
@@ -978,11 +1186,35 @@ function lowerBufferStaticValue(lowerer, call, access) {
978
1186
  return { kind: "libCall", fn: "buffer.fromDyn", args: [value, enc], type: BYTES_U8, loc };
979
1187
  }
980
1188
  if (srcIr?.kind === "string") {
981
- const encNode = args[1];
982
- const encName = encNode ? bufEncoding(lowerer, "Buffer.from", encNode) : "utf8";
983
1189
  const s = lowerer.coerceInto(argNode, value, STRING);
984
- const enc = { kind: "strLit", value: encName, type: STRING, loc };
985
- return { kind: "libCall", fn: "buffer.fromStr", args: [s, enc], type: BYTES_U8, loc };
1190
+ const encNode = args[1];
1191
+ let enc = { kind: "strLit", value: "utf8", type: STRING, loc };
1192
+ let fn = "buffer.fromStr";
1193
+ if (encNode) {
1194
+ const encType = lowerer.typeOf(encNode);
1195
+ const encName = encType.isStringLiteralType()
1196
+ ? knownBufEncoding(encType.value)
1197
+ : undefined;
1198
+ if (encName !== undefined) {
1199
+ enc = defaultAfterUndefined(lowerer.lowerExpr(encNode), {
1200
+ kind: "strLit",
1201
+ value: encName,
1202
+ type: STRING,
1203
+ loc,
1204
+ });
1205
+ }
1206
+ else {
1207
+ const undefinedArg = lowerStaticallyUndefinedArgument(lowerer, encNode);
1208
+ if (undefinedArg) {
1209
+ enc = defaultAfterUndefined(undefinedArg, enc);
1210
+ }
1211
+ else {
1212
+ enc = lowerOptionalArgument(lowerer, encNode, STRING, enc);
1213
+ fn = "buffer.fromStrChecked";
1214
+ }
1215
+ }
1216
+ }
1217
+ return { kind: "libCall", fn, args: [s, enc], type: BYTES_U8, loc };
986
1218
  }
987
1219
  if (args.length === 1 && srcIr?.kind === "bytes" && srcIr.elem === "u8") {
988
1220
  return { kind: "bytesNew", source: value, type: BYTES_U8, loc };
@@ -992,7 +1224,7 @@ function lowerBufferStaticValue(lowerer, call, access) {
992
1224
  }
993
1225
  }
994
1226
  }
995
- lowerer.noLowering("Buffer.from with this argument shape", call, "supported: Buffer.from(string, encoding?) with a literal encoding, Buffer.from(u8Array) — a copy — " +
1227
+ lowerer.noLowering("Buffer.from with this argument shape", call, "supported: Buffer.from(string, encoding?), Buffer.from(u8Array) — a copy — " +
996
1228
  "Buffer.from(number[]), or Buffer.from(arrayBuffer, byteOffset?, length?) — a view sharing " +
997
1229
  "the buffer's storage; narrow unions first");
998
1230
  }
@@ -1016,18 +1248,39 @@ function lowerBufferStaticValue(lowerer, call, access) {
1016
1248
  const encName = args[2] ? bufEncoding(lowerer, "Buffer.alloc", args[2]) : "utf8";
1017
1249
  const s = lowerer.lowerExprExpecting(args[1], STRING);
1018
1250
  const enc = { kind: "strLit", value: encName, type: STRING, loc };
1019
- return { kind: "bytesIntrinsic", method: "fillStr", receiver: fresh, args: [s, enc], type: BYTES_U8, loc };
1251
+ return {
1252
+ kind: "bytesIntrinsic",
1253
+ method: "fillStr",
1254
+ receiver: fresh,
1255
+ args: [s, enc],
1256
+ type: BYTES_U8,
1257
+ loc,
1258
+ };
1020
1259
  }
1021
1260
  if (args.length > 2) {
1022
1261
  lowerer.noLowering("Buffer.alloc with an encoding on a non-string fill", args[2]);
1023
1262
  }
1024
1263
  if (fillT?.kind === "f64") {
1025
1264
  const v = lowerer.lowerExprExpecting(args[1], F64);
1026
- return { kind: "bytesIntrinsic", method: "fillNum", receiver: fresh, args: [v], type: BYTES_U8, loc };
1265
+ return {
1266
+ kind: "bytesIntrinsic",
1267
+ method: "fillNum",
1268
+ receiver: fresh,
1269
+ args: [v],
1270
+ type: BYTES_U8,
1271
+ loc,
1272
+ };
1027
1273
  }
1028
1274
  if (fillT?.kind === "bytes" && fillT.elem === "u8") {
1029
1275
  const pattern = lowerer.lowerExpr(args[1]);
1030
- return { kind: "bytesIntrinsic", method: "fill", receiver: fresh, args: [pattern], type: BYTES_U8, loc };
1276
+ return {
1277
+ kind: "bytesIntrinsic",
1278
+ method: "fill",
1279
+ receiver: fresh,
1280
+ args: [pattern],
1281
+ type: BYTES_U8,
1282
+ loc,
1283
+ };
1031
1284
  }
1032
1285
  lowerer.noLowering(`Buffer.alloc with a '${lowerer.checker.typeToString(lowerer.typeOf(args[1]))}' fill`, args[1], "number, string, and Buffer/Uint8Array fills are the lowered shapes");
1033
1286
  }
@@ -1062,7 +1315,14 @@ function lowerBufferStaticValue(lowerer, call, access) {
1062
1315
  }
1063
1316
  const sides = args.map((a) => lowerer.lowerExpr(a));
1064
1317
  if (sides.every((v) => v.type.kind === "bytes" && v.type.elem === "u8")) {
1065
- return { kind: "bytesIntrinsic", method: "compareBuf", receiver: sides[0], args: [sides[1]], type: F64, loc };
1318
+ return {
1319
+ kind: "bytesIntrinsic",
1320
+ method: "compareBuf",
1321
+ receiver: sides[0],
1322
+ args: [sides[1]],
1323
+ type: F64,
1324
+ loc,
1325
+ };
1066
1326
  }
1067
1327
  // A side that is not statically bytes (the invalid-input probes,
1068
1328
  // untyped JS helpers): Node's "buf1"/"buf2" argument ladder runs
@@ -1103,26 +1363,44 @@ function lowerBufferStaticValue(lowerer, call, access) {
1103
1363
  // Untyped stream chunks retain the native checked value's Buffer
1104
1364
  // flavor. Plain bytes are Uint8Arrays at this boundary; inspecting
1105
1365
  // only the bytes tag would incorrectly identify them as Buffers.
1106
- const checked = isJsSourceFile(call.getSourceFile()) && v.kind === "dynCheck" && v.value.type.kind === "dyn" ? v.value : v;
1366
+ const checked = isJsSourceFile(call.getSourceFile()) && v.kind === "dynCheck" && v.value.type.kind === "dyn"
1367
+ ? v.value
1368
+ : v;
1107
1369
  if (checked.type.kind === "dyn") {
1108
1370
  return { kind: "dynTest", test: "buffer", value: checked, type: BOOL, loc };
1109
1371
  }
1110
1372
  // Primitive storage cannot carry a Buffer. Keep argument effects
1111
1373
  // even when its representation makes the answer constant.
1112
- if (v.type.kind === "string" || v.type.kind === "f64" || v.type.kind === "bool" ||
1113
- v.type.kind === "symbol" || v.type.kind === "bigint" || v.type.kind === "nullT" || v.type.kind === "undefinedT") {
1374
+ if (v.type.kind === "string" ||
1375
+ v.type.kind === "f64" ||
1376
+ v.type.kind === "bool" ||
1377
+ v.type.kind === "symbol" ||
1378
+ v.type.kind === "bigint" ||
1379
+ v.type.kind === "nullT" ||
1380
+ v.type.kind === "undefinedT") {
1114
1381
  if (isSafeToDiscard(v))
1115
1382
  return { kind: "boolLit", value: false, type: BOOL, loc };
1116
1383
  return {
1117
- kind: "seqExpr", stmts: [{ kind: "exprStmt", expr: v, loc: v.loc }],
1118
- result: { kind: "boolLit", value: false, type: BOOL, loc }, type: BOOL, loc,
1384
+ kind: "seqExpr",
1385
+ stmts: [{ kind: "exprStmt", expr: v, loc: v.loc }],
1386
+ result: { kind: "boolLit", value: false, type: BOOL, loc },
1387
+ type: BOOL,
1388
+ loc,
1119
1389
  };
1120
1390
  }
1121
1391
  if (v.type.kind === "union") {
1122
1392
  const def = lowerer.unions.get(v.type.unionId);
1123
1393
  const tag = def ? def.arms.findIndex((a) => a.kind === "bytes" && a.elem === "u8") : -1;
1124
1394
  if (tag >= 0) {
1125
- return { kind: "unionIsTag", unionId: v.type.unionId, tag, negated: false, value: v, type: BOOL, loc };
1395
+ return {
1396
+ kind: "unionIsTag",
1397
+ unionId: v.type.unionId,
1398
+ tag,
1399
+ negated: false,
1400
+ value: v,
1401
+ type: BOOL,
1402
+ loc,
1403
+ };
1126
1404
  }
1127
1405
  }
1128
1406
  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");
@@ -1141,9 +1419,21 @@ function lowerBufferStaticValue(lowerer, call, access) {
1141
1419
  const enc = { kind: "strLit", value: encName, type: STRING, loc };
1142
1420
  return { kind: "libCall", fn: "buffer.byteLenStr", args: [s, enc], type: F64, loc };
1143
1421
  }
1144
- if ((srcIr === null || srcIr.kind === "dyn") && (!args[1] || ts.isStringLiteralLike(args[1]))) {
1145
- const encoding = { kind: "strLit", value: args[1] ? bufEncoding(lowerer, "Buffer.byteLength", args[1]) : "utf8", type: STRING, loc };
1146
- return { kind: "libCall", fn: "buffer.byteLenDyn", args: [lowerer.lowerExprExpecting(args[0], DYN), encoding], type: F64, loc };
1422
+ if ((srcIr === null || srcIr.kind === "dyn") &&
1423
+ (!args[1] || ts.isStringLiteralLike(args[1]))) {
1424
+ const encoding = {
1425
+ kind: "strLit",
1426
+ value: args[1] ? bufEncoding(lowerer, "Buffer.byteLength", args[1]) : "utf8",
1427
+ type: STRING,
1428
+ loc,
1429
+ };
1430
+ return {
1431
+ kind: "libCall",
1432
+ fn: "buffer.byteLenDyn",
1433
+ args: [lowerer.lowerExprExpecting(args[0], DYN), encoding],
1434
+ type: F64,
1435
+ loc,
1436
+ };
1147
1437
  }
1148
1438
  if (srcIr?.kind === "bytes" && args.length === 1) {
1149
1439
  const receiver = lowerer.lowerExpr(args[0]);
@@ -1155,7 +1445,9 @@ function lowerBufferStaticValue(lowerer, call, access) {
1155
1445
  if (member === "isEncoding") {
1156
1446
  // The runtime alias-set test — a plain bool over any string value
1157
1447
  // (Node's case-insensitive normalizeEncoding check).
1158
- if (args.length === 1 && !ts.isSpreadElement(args[0]) && lowerer.mapTypeOf(lowerer.typeOf(args[0]))?.kind === "string") {
1448
+ if (args.length === 1 &&
1449
+ !ts.isSpreadElement(args[0]) &&
1450
+ lowerer.mapTypeOf(lowerer.typeOf(args[0]))?.kind === "string") {
1159
1451
  const s = lowerer.lowerExprExpecting(args[0], STRING);
1160
1452
  return { kind: "libCall", fn: "buffer.isEncoding", args: [s], type: BOOL, loc };
1161
1453
  }