@scriptc/compiler 0.2.3 → 0.2.5

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