@scriptc/compiler 0.1.7 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1032) hide show
  1. package/ambient/scriptc-node-fallback.d.ts +73 -24
  2. package/ambient/scriptc-overrides.d.ts +10 -6
  3. package/ambient/scriptc.d.ts +15 -0
  4. package/dist/backend/build-cache.d.ts +1 -3
  5. package/dist/backend/build-cache.js +3 -22
  6. package/dist/backend/build-cache.js.map +1 -1
  7. package/dist/backend/cache-root.d.ts +3 -0
  8. package/dist/backend/cache-root.js +23 -0
  9. package/dist/backend/cache-root.js.map +1 -0
  10. package/dist/backend/cycle-analysis.d.ts +15 -0
  11. package/dist/backend/cycle-analysis.js +107 -0
  12. package/dist/backend/cycle-analysis.js.map +1 -0
  13. package/dist/backend/cycle-analysis.test.js +124 -0
  14. package/dist/backend/cycle-analysis.test.js.map +1 -0
  15. package/dist/backend/executable-features.d.ts +4 -0
  16. package/dist/backend/executable-features.js +42 -0
  17. package/dist/backend/executable-features.js.map +1 -0
  18. package/dist/backend/external-c.d.ts +5 -27
  19. package/dist/backend/external-c.js +5 -40
  20. package/dist/backend/external-c.js.map +1 -1
  21. package/dist/backend/ffi-callbacks.d.ts +2 -3
  22. package/dist/backend/ffi-callbacks.js +2 -3
  23. package/dist/backend/ffi-callbacks.js.map +1 -1
  24. package/dist/backend/library-identity-markers.d.ts +4 -9
  25. package/dist/backend/library-identity-markers.js +11 -49
  26. package/dist/backend/library-identity-markers.js.map +1 -1
  27. package/dist/backend/library-pack.d.ts +5 -0
  28. package/dist/backend/library-pack.js +123 -0
  29. package/dist/backend/library-pack.js.map +1 -0
  30. package/dist/backend/link-plan-core.d.ts +20 -0
  31. package/dist/backend/link-plan-core.js +18 -0
  32. package/dist/backend/link-plan-core.js.map +1 -0
  33. package/dist/backend/link-plan.d.ts +1 -1
  34. package/dist/backend/link-plan.js +16 -17
  35. package/dist/backend/link-plan.js.map +1 -1
  36. package/dist/backend/link-trace.d.ts +2 -0
  37. package/dist/backend/link-trace.js +24 -0
  38. package/dist/backend/link-trace.js.map +1 -0
  39. package/dist/backend/linker.js +1 -1
  40. package/dist/backend/linker.js.map +1 -1
  41. package/dist/backend/literals.d.ts +9 -0
  42. package/dist/backend/literals.js +35 -0
  43. package/dist/backend/literals.js.map +1 -0
  44. package/dist/backend/literals.test.d.ts +1 -0
  45. package/dist/backend/literals.test.js +53 -0
  46. package/dist/backend/literals.test.js.map +1 -0
  47. package/dist/backend/llvm/blocks.d.ts +2 -0
  48. package/dist/backend/llvm/blocks.js +9 -4
  49. package/dist/backend/llvm/blocks.js.map +1 -1
  50. package/dist/backend/llvm/blocks.test.d.ts +1 -0
  51. package/dist/backend/llvm/blocks.test.js +91 -0
  52. package/dist/backend/llvm/blocks.test.js.map +1 -0
  53. package/dist/backend/llvm/classes.d.ts +14 -8
  54. package/dist/backend/llvm/classes.js +70 -28
  55. package/dist/backend/llvm/classes.js.map +1 -1
  56. package/dist/backend/llvm/common.d.ts +5 -1
  57. package/dist/backend/llvm/common.js +45 -4
  58. package/dist/backend/llvm/common.js.map +1 -1
  59. package/dist/backend/llvm/debug-info.js +2 -7
  60. package/dist/backend/llvm/debug-info.js.map +1 -1
  61. package/dist/backend/llvm/debug-info.test.d.ts +1 -0
  62. package/dist/backend/llvm/debug-info.test.js +110 -0
  63. package/dist/backend/llvm/debug-info.test.js.map +1 -0
  64. package/dist/backend/llvm/dyn.d.ts +16 -2
  65. package/dist/backend/llvm/dyn.js +494 -165
  66. package/dist/backend/llvm/dyn.js.map +1 -1
  67. package/dist/backend/llvm/emitter.d.ts +596 -1
  68. package/dist/backend/llvm/emitter.js +695 -410
  69. package/dist/backend/llvm/emitter.js.map +1 -1
  70. package/dist/backend/llvm/emitter.test.d.ts +1 -0
  71. package/dist/backend/llvm/emitter.test.js +179 -0
  72. package/dist/backend/llvm/emitter.test.js.map +1 -0
  73. package/dist/backend/llvm/expr-async.js +23 -14
  74. package/dist/backend/llvm/expr-async.js.map +1 -1
  75. package/dist/backend/llvm/expr-bytes.d.ts +1 -1
  76. package/dist/backend/llvm/expr-bytes.js +32 -14
  77. package/dist/backend/llvm/expr-bytes.js.map +1 -1
  78. package/dist/backend/llvm/expr-callbacks.d.ts +1 -1
  79. package/dist/backend/llvm/expr-callbacks.js +25 -22
  80. package/dist/backend/llvm/expr-callbacks.js.map +1 -1
  81. package/dist/backend/llvm/expr-calls.js +136 -35
  82. package/dist/backend/llvm/expr-calls.js.map +1 -1
  83. package/dist/backend/llvm/expr-containers.d.ts +1 -1
  84. package/dist/backend/llvm/expr-containers.js +43 -14
  85. package/dist/backend/llvm/expr-containers.js.map +1 -1
  86. package/dist/backend/llvm/expr-context.d.ts +5 -260
  87. package/dist/backend/llvm/expr-control.js +9 -5
  88. package/dist/backend/llvm/expr-control.js.map +1 -1
  89. package/dist/backend/llvm/expr-dispatch.d.ts +1 -1
  90. package/dist/backend/llvm/expr-dispatch.js +2 -0
  91. package/dist/backend/llvm/expr-dispatch.js.map +1 -1
  92. package/dist/backend/llvm/expr-dynamic.js +62 -74
  93. package/dist/backend/llvm/expr-dynamic.js.map +1 -1
  94. package/dist/backend/llvm/expr-island.d.ts +1 -1
  95. package/dist/backend/llvm/expr-island.js +11 -7
  96. package/dist/backend/llvm/expr-island.js.map +1 -1
  97. package/dist/backend/llvm/expr-primitives.d.ts +1 -1
  98. package/dist/backend/llvm/expr-primitives.js +51 -30
  99. package/dist/backend/llvm/expr-primitives.js.map +1 -1
  100. package/dist/backend/llvm/expr-primitives.test.js +1 -1
  101. package/dist/backend/llvm/expr-records.d.ts +5 -1
  102. package/dist/backend/llvm/expr-records.js +43 -4
  103. package/dist/backend/llvm/expr-records.js.map +1 -1
  104. package/dist/backend/llvm/expr-stream-bridges.d.ts +4 -4
  105. package/dist/backend/llvm/expr-stream-bridges.js +102 -121
  106. package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
  107. package/dist/backend/llvm/expr-stream-bridges.test.d.ts +1 -0
  108. package/dist/backend/llvm/expr-stream-bridges.test.js +55 -0
  109. package/dist/backend/llvm/expr-stream-bridges.test.js.map +1 -0
  110. package/dist/backend/llvm/expr-stream-callbacks.d.ts +1 -1
  111. package/dist/backend/llvm/expr-stream-callbacks.js +12 -12
  112. package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
  113. package/dist/backend/llvm/layouts.d.ts +19 -0
  114. package/dist/backend/llvm/layouts.js +12 -0
  115. package/dist/backend/llvm/layouts.js.map +1 -0
  116. package/dist/backend/llvm/lib-abi.d.ts +19 -0
  117. package/dist/backend/llvm/lib-abi.js +82 -0
  118. package/dist/backend/llvm/lib-abi.js.map +1 -0
  119. package/dist/backend/llvm/lib-connect.d.ts +2 -0
  120. package/dist/backend/llvm/lib-connect.js +51 -0
  121. package/dist/backend/llvm/lib-connect.js.map +1 -0
  122. package/dist/backend/llvm/lib-datagram.d.ts +2 -0
  123. package/dist/backend/llvm/lib-datagram.js +135 -0
  124. package/dist/backend/llvm/lib-datagram.js.map +1 -0
  125. package/dist/backend/llvm/lib-dispatch.js +50 -6
  126. package/dist/backend/llvm/lib-dispatch.js.map +1 -1
  127. package/dist/backend/llvm/lib-filesystem.js +30 -18
  128. package/dist/backend/llvm/lib-filesystem.js.map +1 -1
  129. package/dist/backend/llvm/lib-http2.d.ts +2 -0
  130. package/dist/backend/llvm/lib-http2.js +215 -0
  131. package/dist/backend/llvm/lib-http2.js.map +1 -0
  132. package/dist/backend/llvm/lib-lookup.d.ts +2 -0
  133. package/dist/backend/llvm/lib-lookup.js +39 -0
  134. package/dist/backend/llvm/lib-lookup.js.map +1 -0
  135. package/dist/backend/llvm/lib-network.js +25 -2
  136. package/dist/backend/llvm/lib-network.js.map +1 -1
  137. package/dist/backend/llvm/lib-process.js +21 -16
  138. package/dist/backend/llvm/lib-process.js.map +1 -1
  139. package/dist/backend/llvm/lib-shared.js +117 -1
  140. package/dist/backend/llvm/lib-shared.js.map +1 -1
  141. package/dist/backend/llvm/lib-stream.js +3 -2
  142. package/dist/backend/llvm/lib-stream.js.map +1 -1
  143. package/dist/backend/llvm/lib-test.d.ts +2 -0
  144. package/dist/backend/llvm/lib-test.js +34 -0
  145. package/dist/backend/llvm/lib-test.js.map +1 -0
  146. package/dist/backend/llvm/lib-tls.d.ts +2 -0
  147. package/dist/backend/llvm/lib-tls.js +82 -0
  148. package/dist/backend/llvm/lib-tls.js.map +1 -0
  149. package/dist/backend/llvm/shapes.d.ts +10 -9
  150. package/dist/backend/llvm/shapes.js +35 -130
  151. package/dist/backend/llvm/shapes.js.map +1 -1
  152. package/dist/backend/llvm/unsupported.d.ts +1 -0
  153. package/dist/backend/llvm/unsupported.js +1 -2
  154. package/dist/backend/llvm/unsupported.js.map +1 -1
  155. package/dist/backend/llvm/walkers.js +1 -7
  156. package/dist/backend/llvm/walkers.js.map +1 -1
  157. package/dist/backend/mangle.d.ts +2 -2
  158. package/dist/backend/mangle.js +16 -5
  159. package/dist/backend/mangle.js.map +1 -1
  160. package/dist/backend/{c/may-throw.d.ts → may-throw.d.ts} +1 -1
  161. package/dist/backend/{c/may-throw.js → may-throw.js} +51 -46
  162. package/dist/backend/may-throw.js.map +1 -0
  163. package/dist/backend/may-throw.test.d.ts +1 -0
  164. package/dist/backend/may-throw.test.js +58 -0
  165. package/dist/backend/may-throw.test.js.map +1 -0
  166. package/dist/backend/native-codegen-core.d.ts +22 -0
  167. package/dist/backend/native-codegen-core.js +44 -0
  168. package/dist/backend/native-codegen-core.js.map +1 -0
  169. package/dist/backend/native-codegen.d.ts +3 -19
  170. package/dist/backend/native-codegen.js +5 -44
  171. package/dist/backend/native-codegen.js.map +1 -1
  172. package/dist/backend/native-codegen.test.js +2 -2
  173. package/dist/backend/native-codegen.test.js.map +1 -1
  174. package/dist/backend/native-link-info-core.d.ts +94 -0
  175. package/dist/backend/native-link-info-core.js +62 -0
  176. package/dist/backend/native-link-info-core.js.map +1 -0
  177. package/dist/backend/native-link-info.d.ts +3 -88
  178. package/dist/backend/native-link-info.js +12 -243
  179. package/dist/backend/native-link-info.js.map +1 -1
  180. package/dist/backend/native-link-info.test.js +41 -146
  181. package/dist/backend/native-link-info.test.js.map +1 -1
  182. package/dist/backend/native-toolchain.d.ts +10 -25
  183. package/dist/backend/native-toolchain.js +31 -211
  184. package/dist/backend/native-toolchain.js.map +1 -1
  185. package/dist/backend/native-toolchain.test.js +5 -5
  186. package/dist/backend/native-toolchain.test.js.map +1 -1
  187. package/dist/backend/native-tools.d.ts +24 -0
  188. package/dist/backend/native-tools.js +33 -0
  189. package/dist/backend/native-tools.js.map +1 -0
  190. package/dist/backend/object-localize.js +19 -8
  191. package/dist/backend/object-localize.js.map +1 -1
  192. package/dist/backend/object-localize.test.js +22 -0
  193. package/dist/backend/object-localize.test.js.map +1 -1
  194. package/dist/backend/runtime-abi.d.ts +2 -2
  195. package/dist/backend/runtime-abi.js +2 -2
  196. package/dist/backend/runtime-pack-core.d.ts +101 -0
  197. package/dist/backend/runtime-pack-core.js +172 -0
  198. package/dist/backend/runtime-pack-core.js.map +1 -0
  199. package/dist/backend/runtime-pack-native.d.ts +21 -0
  200. package/dist/backend/runtime-pack-native.js +70 -0
  201. package/dist/backend/runtime-pack-native.js.map +1 -0
  202. package/dist/backend/runtime-pack-targets.test.js +1 -1
  203. package/dist/backend/runtime-pack.d.ts +3 -83
  204. package/dist/backend/runtime-pack.js +8 -151
  205. package/dist/backend/runtime-pack.js.map +1 -1
  206. package/dist/backend/runtime-pack.test.js +24 -1
  207. package/dist/backend/runtime-pack.test.js.map +1 -1
  208. package/dist/backend/target-diagnostics.d.ts +22 -0
  209. package/dist/backend/target-diagnostics.js +108 -0
  210. package/dist/backend/target-diagnostics.js.map +1 -0
  211. package/dist/backend/target-platform.d.ts +15 -0
  212. package/dist/backend/target-platform.js +72 -0
  213. package/dist/backend/target-platform.js.map +1 -0
  214. package/dist/backend/targets.d.ts +13 -4
  215. package/dist/backend/targets.js +95 -30
  216. package/dist/backend/targets.js.map +1 -1
  217. package/dist/backend/targets.test.js +65 -4
  218. package/dist/backend/targets.test.js.map +1 -1
  219. package/dist/backend/toolchain-environment.d.ts +6 -0
  220. package/dist/backend/toolchain-environment.js +99 -0
  221. package/dist/backend/toolchain-environment.js.map +1 -0
  222. package/dist/backend/vendor-archives.d.ts +1 -9
  223. package/dist/backend/vendor-archives.js +2 -9
  224. package/dist/backend/vendor-archives.js.map +1 -1
  225. package/dist/backend/vendor-inputs.d.ts +9 -0
  226. package/dist/backend/vendor-inputs.js +10 -0
  227. package/dist/backend/vendor-inputs.js.map +1 -0
  228. package/dist/backend/warm-cache.d.ts +3 -0
  229. package/dist/backend/warm-cache.js +41 -0
  230. package/dist/backend/warm-cache.js.map +1 -0
  231. package/dist/cli/command.d.ts +3 -0
  232. package/dist/cli/command.js +328 -0
  233. package/dist/cli/command.js.map +1 -0
  234. package/dist/cli/host.d.ts +24 -0
  235. package/dist/cli/host.js +2 -0
  236. package/dist/cli/host.js.map +1 -0
  237. package/dist/cli/output-options.d.ts +26 -0
  238. package/dist/cli/output-options.js +60 -0
  239. package/dist/cli/output-options.js.map +1 -0
  240. package/dist/cli/paths.d.ts +12 -0
  241. package/dist/cli/paths.js +42 -0
  242. package/dist/cli/paths.js.map +1 -0
  243. package/dist/cli/usage.d.ts +74 -0
  244. package/dist/cli/usage.js +86 -0
  245. package/dist/cli/usage.js.map +1 -0
  246. package/dist/cli/wasi-paths.d.ts +8 -0
  247. package/dist/cli/wasi-paths.js +41 -0
  248. package/dist/cli/wasi-paths.js.map +1 -0
  249. package/dist/cli/wasi-runner.d.ts +2 -0
  250. package/dist/cli/wasi-runner.js +28 -0
  251. package/dist/cli/wasi-runner.js.map +1 -0
  252. package/dist/compat/fetch-profile.js +3 -3
  253. package/dist/compat/fetch-profile.js.map +1 -1
  254. package/dist/compile-types.d.ts +162 -0
  255. package/dist/compile-types.js +2 -0
  256. package/dist/compile-types.js.map +1 -0
  257. package/dist/coverage/report.js +11 -5
  258. package/dist/coverage/report.js.map +1 -1
  259. package/dist/coverage/surface-manifest.js +5 -2
  260. package/dist/coverage/surface-manifest.js.map +1 -1
  261. package/dist/diagnostics/diagnostic.js +3 -3
  262. package/dist/diagnostics/diagnostic.js.map +1 -1
  263. package/dist/executable/executable-cache.d.ts +3 -4
  264. package/dist/executable/executable-cache.js +5 -6
  265. package/dist/executable/executable-cache.js.map +1 -1
  266. package/dist/executable/executable-cache.test.js +16 -17
  267. package/dist/executable/executable-cache.test.js.map +1 -1
  268. package/dist/executable/prepare.d.ts +14 -0
  269. package/dist/executable/prepare.js +66 -0
  270. package/dist/executable/prepare.js.map +1 -0
  271. package/dist/ffi/ffi-manifest.d.ts +11 -4
  272. package/dist/ffi/ffi-manifest.js +170 -58
  273. package/dist/ffi/ffi-manifest.js.map +1 -1
  274. package/dist/ffi/ffi-manifest.test.d.ts +1 -0
  275. package/dist/ffi/ffi-manifest.test.js +111 -0
  276. package/dist/ffi/ffi-manifest.test.js.map +1 -0
  277. package/dist/format-integer.d.ts +3 -0
  278. package/dist/format-integer.js +14 -0
  279. package/dist/format-integer.js.map +1 -0
  280. package/dist/frontend/analysis.d.ts +5 -0
  281. package/dist/frontend/analysis.js +88 -0
  282. package/dist/frontend/analysis.js.map +1 -0
  283. package/dist/frontend/arguments-usage.d.ts +1 -3
  284. package/dist/frontend/arguments-usage.js.map +1 -1
  285. package/dist/frontend/builtin-modules.d.ts +1 -1
  286. package/dist/frontend/builtin-modules.js +1 -1
  287. package/dist/frontend/builtin-modules.js.map +1 -1
  288. package/dist/frontend/cjs-lexer.d.ts +4 -25
  289. package/dist/frontend/cjs-lexer.js +6 -806
  290. package/dist/frontend/cjs-lexer.js.map +1 -1
  291. package/dist/frontend/cjs-resolve.d.ts +5 -0
  292. package/dist/frontend/cjs-resolve.js +429 -0
  293. package/dist/frontend/cjs-resolve.js.map +1 -0
  294. package/dist/frontend/cjs-syntax.d.ts +26 -0
  295. package/dist/frontend/cjs-syntax.js +806 -0
  296. package/dist/frontend/cjs-syntax.js.map +1 -0
  297. package/dist/frontend/comptime-node.d.ts +4 -0
  298. package/dist/frontend/comptime-node.js +16 -0
  299. package/dist/frontend/comptime-node.js.map +1 -0
  300. package/dist/frontend/comptime-node.test.d.ts +1 -0
  301. package/dist/frontend/comptime-node.test.js +37 -0
  302. package/dist/frontend/comptime-node.test.js.map +1 -0
  303. package/dist/frontend/dts-paths.d.ts +3 -4
  304. package/dist/frontend/dts-paths.js +15 -8
  305. package/dist/frontend/dts-paths.js.map +1 -1
  306. package/dist/frontend/fork-target.js +2 -2
  307. package/dist/frontend/fork-target.js.map +1 -1
  308. package/dist/frontend/helper-tokens.d.ts +1 -0
  309. package/dist/frontend/helper-tokens.js +147 -0
  310. package/dist/frontend/helper-tokens.js.map +1 -0
  311. package/dist/frontend/helper-tokens.test.d.ts +1 -0
  312. package/dist/frontend/helper-tokens.test.js +35 -0
  313. package/dist/frontend/helper-tokens.test.js.map +1 -0
  314. package/dist/frontend/inferred-js-diagnostics.d.ts +5 -0
  315. package/dist/frontend/inferred-js-diagnostics.js +69 -0
  316. package/dist/frontend/inferred-js-diagnostics.js.map +1 -0
  317. package/dist/frontend/inferred-js-diagnostics.test.d.ts +1 -0
  318. package/dist/frontend/inferred-js-diagnostics.test.js +58 -0
  319. package/dist/frontend/inferred-js-diagnostics.test.js.map +1 -0
  320. package/dist/frontend/input-tracker.d.ts +5 -2
  321. package/dist/frontend/input-tracker.js +24 -3
  322. package/dist/frontend/input-tracker.js.map +1 -1
  323. package/dist/frontend/input-tracker.test.js +23 -0
  324. package/dist/frontend/input-tracker.test.js.map +1 -1
  325. package/dist/frontend/lib-contract.js +32 -24
  326. package/dist/frontend/lib-contract.js.map +1 -1
  327. package/dist/frontend/literal-values.d.ts +4 -0
  328. package/dist/frontend/literal-values.js +21 -0
  329. package/dist/frontend/literal-values.js.map +1 -0
  330. package/dist/frontend/literal-values.test.d.ts +1 -0
  331. package/dist/frontend/literal-values.test.js +91 -0
  332. package/dist/frontend/literal-values.test.js.map +1 -0
  333. package/dist/frontend/lowering/abstract-equality.d.ts +1 -1
  334. package/dist/frontend/lowering/abstract-equality.js +3 -0
  335. package/dist/frontend/lowering/abstract-equality.js.map +1 -1
  336. package/dist/frontend/lowering/array-indexed-mutation.js +11 -6
  337. package/dist/frontend/lowering/array-indexed-mutation.js.map +1 -1
  338. package/dist/frontend/lowering/array-values.d.ts +4 -1
  339. package/dist/frontend/lowering/array-values.js +43 -1
  340. package/dist/frontend/lowering/array-values.js.map +1 -1
  341. package/dist/frontend/lowering/callback-arg.js +1 -0
  342. package/dist/frontend/lowering/callback-arg.js.map +1 -1
  343. package/dist/frontend/lowering/class-callbacks.d.ts +12 -0
  344. package/dist/frontend/lowering/class-callbacks.js +63 -0
  345. package/dist/frontend/lowering/class-callbacks.js.map +1 -0
  346. package/dist/frontend/lowering/class-descriptors.d.ts +9 -0
  347. package/dist/frontend/lowering/class-descriptors.js +73 -0
  348. package/dist/frontend/lowering/class-descriptors.js.map +1 -0
  349. package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +41 -0
  350. package/dist/frontend/lowering/class-dynamic-dispatch.js +803 -0
  351. package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -0
  352. package/dist/frontend/lowering/class-dynamic-dispatch.test.d.ts +1 -0
  353. package/dist/frontend/lowering/class-dynamic-dispatch.test.js +92 -0
  354. package/dist/frontend/lowering/class-dynamic-dispatch.test.js.map +1 -0
  355. package/dist/frontend/lowering/class-instance-constructor.d.ts +7 -0
  356. package/dist/frontend/lowering/class-instance-constructor.js +64 -0
  357. package/dist/frontend/lowering/class-instance-constructor.js.map +1 -0
  358. package/dist/frontend/lowering/class-method-values.d.ts +10 -0
  359. package/dist/frontend/lowering/class-method-values.js +170 -0
  360. package/dist/frontend/lowering/class-method-values.js.map +1 -0
  361. package/dist/frontend/lowering/class-prototypes.d.ts +16 -0
  362. package/dist/frontend/lowering/class-prototypes.js +134 -0
  363. package/dist/frontend/lowering/class-prototypes.js.map +1 -0
  364. package/dist/frontend/lowering/class-static-data.d.ts +6 -0
  365. package/dist/frontend/lowering/class-static-data.js +56 -0
  366. package/dist/frontend/lowering/class-static-data.js.map +1 -0
  367. package/dist/frontend/lowering/containers/buffer-numeric-methods.d.ts +4 -0
  368. package/dist/frontend/lowering/containers/buffer-numeric-methods.js +26 -0
  369. package/dist/frontend/lowering/containers/buffer-numeric-methods.js.map +1 -0
  370. package/dist/frontend/lowering/containers/bytes.d.ts +11 -7
  371. package/dist/frontend/lowering/containers/bytes.js +164 -155
  372. package/dist/frontend/lowering/containers/bytes.js.map +1 -1
  373. package/dist/frontend/lowering/containers/string-and-regexp.d.ts +2 -2
  374. package/dist/frontend/lowering/containers/string-and-regexp.js +39 -16
  375. package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
  376. package/dist/frontend/lowering/containers/string-replacement.d.ts +7 -0
  377. package/dist/frontend/lowering/containers/string-replacement.js +217 -0
  378. package/dist/frontend/lowering/containers/string-replacement.js.map +1 -0
  379. package/dist/frontend/lowering/error-methods.d.ts +11 -0
  380. package/dist/frontend/lowering/error-methods.js +78 -0
  381. package/dist/frontend/lowering/error-methods.js.map +1 -0
  382. package/dist/frontend/lowering/expressions/global-symbols.d.ts +6 -0
  383. package/dist/frontend/lowering/expressions/global-symbols.js +11 -0
  384. package/dist/frontend/lowering/expressions/global-symbols.js.map +1 -0
  385. package/dist/frontend/lowering/expressions/native-proxy.d.ts +7 -0
  386. package/dist/frontend/lowering/expressions/native-proxy.js +49 -0
  387. package/dist/frontend/lowering/expressions/native-proxy.js.map +1 -0
  388. package/dist/frontend/lowering/expressions/nullish-assignment.d.ts +6 -0
  389. package/dist/frontend/lowering/expressions/nullish-assignment.js +124 -0
  390. package/dist/frontend/lowering/expressions/nullish-assignment.js.map +1 -0
  391. package/dist/frontend/lowering/expressions/object-literals.d.ts +8 -8
  392. package/dist/frontend/lowering/expressions/object-literals.js +473 -178
  393. package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
  394. package/dist/frontend/lowering/expressions/optional-chains.js +20 -8
  395. package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
  396. package/dist/frontend/lowering/expressions/try-lower-expression.js +1 -0
  397. package/dist/frontend/lowering/expressions/try-lower-expression.js.map +1 -1
  398. package/dist/frontend/lowering/expressions/union-field-write.d.ts +8 -0
  399. package/dist/frontend/lowering/expressions/union-field-write.js +71 -0
  400. package/dist/frontend/lowering/expressions/union-field-write.js.map +1 -0
  401. package/dist/frontend/lowering/function-context.d.ts +93 -0
  402. package/dist/frontend/lowering/function-context.js +103 -0
  403. package/dist/frontend/lowering/function-context.js.map +1 -0
  404. package/dist/frontend/lowering/generator-delegation.d.ts +7 -0
  405. package/dist/frontend/lowering/generator-delegation.js +85 -0
  406. package/dist/frontend/lowering/generator-delegation.js.map +1 -0
  407. package/dist/frontend/lowering/generator-dynamic-dispatch.d.ts +10 -0
  408. package/dist/frontend/lowering/generator-dynamic-dispatch.js +105 -0
  409. package/dist/frontend/lowering/generator-dynamic-dispatch.js.map +1 -0
  410. package/dist/frontend/lowering/lib-boundary.d.ts +2 -1
  411. package/dist/frontend/lowering/lib-boundary.js +59 -20
  412. package/dist/frontend/lowering/lib-boundary.js.map +1 -1
  413. package/dist/frontend/lowering/lib-boundary.test.d.ts +1 -0
  414. package/dist/frontend/lowering/lib-boundary.test.js +45 -0
  415. package/dist/frontend/lowering/lib-boundary.test.js.map +1 -0
  416. package/dist/frontend/lowering/lower-array-sort.d.ts +1 -1
  417. package/dist/frontend/lowering/lower-assert.d.ts +1 -1
  418. package/dist/frontend/lowering/lower-assert.js.map +1 -1
  419. package/dist/frontend/lowering/lower-async-iteration.d.ts +1 -1
  420. package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
  421. package/dist/frontend/lowering/lower-builtin-values.d.ts +12 -0
  422. package/dist/frontend/lowering/lower-builtin-values.js +139 -0
  423. package/dist/frontend/lowering/lower-builtin-values.js.map +1 -0
  424. package/dist/frontend/lowering/lower-builtins.d.ts +27 -41
  425. package/dist/frontend/lowering/lower-builtins.js +539 -343
  426. package/dist/frontend/lowering/lower-builtins.js.map +1 -1
  427. package/dist/frontend/lowering/lower-calls.d.ts +20 -17
  428. package/dist/frontend/lowering/lower-calls.js +1236 -353
  429. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  430. package/dist/frontend/lowering/lower-classes.d.ts +83 -45
  431. package/dist/frontend/lowering/lower-classes.js +952 -339
  432. package/dist/frontend/lowering/lower-classes.js.map +1 -1
  433. package/dist/frontend/lowering/lower-comptime.d.ts +1 -1
  434. package/dist/frontend/lowering/lower-comptime.js +23 -32
  435. package/dist/frontend/lowering/lower-comptime.js.map +1 -1
  436. package/dist/frontend/lowering/lower-containers.d.ts +27 -32
  437. package/dist/frontend/lowering/lower-containers.js +796 -151
  438. package/dist/frontend/lowering/lower-containers.js.map +1 -1
  439. package/dist/frontend/lowering/lower-dgram.d.ts +1 -1
  440. package/dist/frontend/lowering/lower-dgram.js.map +1 -1
  441. package/dist/frontend/lowering/lower-enums.d.ts +1 -1
  442. package/dist/frontend/lowering/lower-enums.js.map +1 -1
  443. package/dist/frontend/lowering/lower-event-emitter.d.ts +30 -1
  444. package/dist/frontend/lowering/lower-event-emitter.js +58 -26
  445. package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
  446. package/dist/frontend/lowering/lower-expando.d.ts +7 -1
  447. package/dist/frontend/lowering/lower-expando.js +14 -6
  448. package/dist/frontend/lowering/lower-expando.js.map +1 -1
  449. package/dist/frontend/lowering/lower-exprs.d.ts +35 -11
  450. package/dist/frontend/lowering/lower-exprs.js +1674 -779
  451. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  452. package/dist/frontend/lowering/lower-generators.d.ts +2 -5
  453. package/dist/frontend/lowering/lower-generators.js +77 -46
  454. package/dist/frontend/lowering/lower-generators.js.map +1 -1
  455. package/dist/frontend/lowering/lower-global-value.d.ts +7 -0
  456. package/dist/frontend/lowering/lower-global-value.js +17 -0
  457. package/dist/frontend/lowering/lower-global-value.js.map +1 -0
  458. package/dist/frontend/lowering/lower-inspect.d.ts +1 -1
  459. package/dist/frontend/lowering/lower-inspect.js +17 -8
  460. package/dist/frontend/lowering/lower-inspect.js.map +1 -1
  461. package/dist/frontend/lowering/lower-island.d.ts +5 -8
  462. package/dist/frontend/lowering/lower-island.js +34 -23
  463. package/dist/frontend/lowering/lower-island.js.map +1 -1
  464. package/dist/frontend/lowering/lower-mixins.d.ts +2 -2
  465. package/dist/frontend/lowering/lower-mixins.js +5 -3
  466. package/dist/frontend/lowering/lower-mixins.js.map +1 -1
  467. package/dist/frontend/lowering/lower-modules.d.ts +1 -1
  468. package/dist/frontend/lowering/lower-modules.js +233 -30
  469. package/dist/frontend/lowering/lower-modules.js.map +1 -1
  470. package/dist/frontend/lowering/lower-namespaces.d.ts +1 -1
  471. package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
  472. package/dist/frontend/lowering/lower-node-module.d.ts +1 -1
  473. package/dist/frontend/lowering/lower-node-module.js +13 -10
  474. package/dist/frontend/lowering/lower-node-module.js.map +1 -1
  475. package/dist/frontend/lowering/lower-server.d.ts +1 -1
  476. package/dist/frontend/lowering/lower-server.js +6 -10
  477. package/dist/frontend/lowering/lower-server.js.map +1 -1
  478. package/dist/frontend/lowering/lower-stmts.d.ts +10 -14
  479. package/dist/frontend/lowering/lower-stmts.js +728 -496
  480. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  481. package/dist/frontend/lowering/lower-stream.d.ts +1 -1
  482. package/dist/frontend/lowering/lower-stream.js +19 -10
  483. package/dist/frontend/lowering/lower-stream.js.map +1 -1
  484. package/dist/frontend/lowering/lower-test.d.ts +1 -1
  485. package/dist/frontend/lowering/lower-test.js.map +1 -1
  486. package/dist/frontend/lowering/lower-url.d.ts +6 -0
  487. package/dist/frontend/lowering/lower-url.js +77 -0
  488. package/dist/frontend/lowering/lower-url.js.map +1 -0
  489. package/dist/frontend/lowering/lowerer.d.ts +113 -189
  490. package/dist/frontend/lowering/lowerer.js +1031 -672
  491. package/dist/frontend/lowering/lowerer.js.map +1 -1
  492. package/dist/frontend/lowering/lowerer.test.d.ts +1 -0
  493. package/dist/frontend/lowering/lowerer.test.js +26 -0
  494. package/dist/frontend/lowering/lowerer.test.js.map +1 -0
  495. package/dist/frontend/lowering/native-ffi.d.ts +5 -0
  496. package/dist/frontend/lowering/native-ffi.js +40 -0
  497. package/dist/frontend/lowering/native-ffi.js.map +1 -0
  498. package/dist/frontend/lowering/object-enumeration-receiver.d.ts +7 -0
  499. package/dist/frontend/lowering/object-enumeration-receiver.js +33 -0
  500. package/dist/frontend/lowering/object-enumeration-receiver.js.map +1 -0
  501. package/dist/frontend/lowering/object-factory-new.d.ts +8 -0
  502. package/dist/frontend/lowering/object-factory-new.js +68 -0
  503. package/dist/frontend/lowering/object-factory-new.js.map +1 -0
  504. package/dist/frontend/lowering/optional-arguments.js +6 -1
  505. package/dist/frontend/lowering/optional-arguments.js.map +1 -1
  506. package/dist/frontend/lowering/pairs-snapshot.js +2 -1
  507. package/dist/frontend/lowering/pairs-snapshot.js.map +1 -1
  508. package/dist/frontend/lowering/runtime-optional-locals.d.ts +14 -0
  509. package/dist/frontend/lowering/runtime-optional-locals.js +41 -0
  510. package/dist/frontend/lowering/runtime-optional-locals.js.map +1 -0
  511. package/dist/frontend/lowering/runtime-optional-locals.test.d.ts +1 -0
  512. package/dist/frontend/lowering/runtime-optional-locals.test.js +85 -0
  513. package/dist/frontend/lowering/runtime-optional-locals.test.js.map +1 -0
  514. package/dist/frontend/lowering/sanitize-class-types.d.ts +8 -0
  515. package/dist/frontend/lowering/sanitize-class-types.js +79 -0
  516. package/dist/frontend/lowering/sanitize-class-types.js.map +1 -0
  517. package/dist/frontend/lowering/sanitize-class-types.test.d.ts +1 -0
  518. package/dist/frontend/lowering/sanitize-class-types.test.js +60 -0
  519. package/dist/frontend/lowering/sanitize-class-types.test.js.map +1 -0
  520. package/dist/frontend/lowering/static-this.d.ts +5 -1
  521. package/dist/frontend/lowering/static-this.js +28 -2
  522. package/dist/frontend/lowering/static-this.js.map +1 -1
  523. package/dist/frontend/lowering/string-index.d.ts +7 -0
  524. package/dist/frontend/lowering/string-index.js +39 -0
  525. package/dist/frontend/lowering/string-index.js.map +1 -0
  526. package/dist/frontend/lowering/surfaces.d.ts +8 -3
  527. package/dist/frontend/lowering/surfaces.js +61 -29
  528. package/dist/frontend/lowering/surfaces.js.map +1 -1
  529. package/dist/frontend/lowering/symbol-fields.d.ts +22 -0
  530. package/dist/frontend/lowering/symbol-fields.js +183 -0
  531. package/dist/frontend/lowering/symbol-fields.js.map +1 -0
  532. package/dist/frontend/lowering/symbol-methods.d.ts +7 -0
  533. package/dist/frontend/lowering/symbol-methods.js +30 -0
  534. package/dist/frontend/lowering/symbol-methods.js.map +1 -0
  535. package/dist/frontend/lowering/text-decoder-encoding.d.ts +10 -0
  536. package/dist/frontend/lowering/text-decoder-encoding.js +77 -0
  537. package/dist/frontend/lowering/text-decoder-encoding.js.map +1 -0
  538. package/dist/frontend/lowering/text-decoder-encoding.test.d.ts +1 -0
  539. package/dist/frontend/lowering/text-decoder-encoding.test.js +38 -0
  540. package/dist/frontend/lowering/text-decoder-encoding.test.js.map +1 -0
  541. package/dist/frontend/lowering/union-narrow.d.ts +9 -0
  542. package/dist/frontend/lowering/union-narrow.js +59 -0
  543. package/dist/frontend/lowering/union-narrow.js.map +1 -0
  544. package/dist/frontend/lowering/union-narrow.test.d.ts +1 -0
  545. package/dist/frontend/lowering/union-narrow.test.js +72 -0
  546. package/dist/frontend/lowering/union-narrow.test.js.map +1 -0
  547. package/dist/frontend/lowering/union-retag.d.ts +43 -0
  548. package/dist/frontend/lowering/union-retag.js +259 -0
  549. package/dist/frontend/lowering/union-retag.js.map +1 -0
  550. package/dist/frontend/lowering/union-retag.test.d.ts +1 -0
  551. package/dist/frontend/lowering/union-retag.test.js +405 -0
  552. package/dist/frontend/lowering/union-retag.test.js.map +1 -0
  553. package/dist/frontend/lowering/unregistered-class-types.d.ts +14 -0
  554. package/dist/frontend/lowering/unregistered-class-types.js +94 -0
  555. package/dist/frontend/lowering/unregistered-class-types.js.map +1 -0
  556. package/dist/frontend/lowering/unregistered-class-types.test.d.ts +1 -0
  557. package/dist/frontend/lowering/unregistered-class-types.test.js +65 -0
  558. package/dist/frontend/lowering/unregistered-class-types.test.js.map +1 -0
  559. package/dist/frontend/lowering/width-lift.d.ts +40 -0
  560. package/dist/frontend/lowering/width-lift.js +2 -0
  561. package/dist/frontend/lowering/width-lift.js.map +1 -0
  562. package/dist/frontend/module-syntax.d.ts +58 -0
  563. package/dist/frontend/module-syntax.js +123 -0
  564. package/dist/frontend/module-syntax.js.map +1 -0
  565. package/dist/frontend/module-syntax.test.d.ts +1 -0
  566. package/dist/frontend/module-syntax.test.js +78 -0
  567. package/dist/frontend/module-syntax.test.js.map +1 -0
  568. package/dist/frontend/npm-fetch-analysis.d.ts +17 -0
  569. package/dist/frontend/npm-fetch-analysis.js +100 -0
  570. package/dist/frontend/npm-fetch-analysis.js.map +1 -0
  571. package/dist/frontend/npm-fetch-analysis.test.d.ts +1 -0
  572. package/dist/frontend/npm-fetch-analysis.test.js +107 -0
  573. package/dist/frontend/npm-fetch-analysis.test.js.map +1 -0
  574. package/dist/frontend/npm-fetch-node.d.ts +2 -0
  575. package/dist/frontend/npm-fetch-node.js +12 -0
  576. package/dist/frontend/npm-fetch-node.js.map +1 -0
  577. package/dist/frontend/npm-fetch-syntax.d.ts +6 -0
  578. package/dist/frontend/npm-fetch-syntax.js +207 -0
  579. package/dist/frontend/npm-fetch-syntax.js.map +1 -0
  580. package/dist/frontend/npm-node.d.ts +10 -0
  581. package/dist/frontend/npm-node.js +14 -0
  582. package/dist/frontend/npm-node.js.map +1 -0
  583. package/dist/frontend/npm-static-bundled-cjs.d.ts +8 -0
  584. package/dist/frontend/npm-static-bundled-cjs.js +236 -0
  585. package/dist/frontend/npm-static-bundled-cjs.js.map +1 -0
  586. package/dist/frontend/npm-static-bundled-cjs.test.d.ts +1 -0
  587. package/dist/frontend/npm-static-bundled-cjs.test.js +69 -0
  588. package/dist/frontend/npm-static-bundled-cjs.test.js.map +1 -0
  589. package/dist/frontend/npm-static-declaration-syntax.d.ts +57 -0
  590. package/dist/frontend/npm-static-declaration-syntax.js +944 -0
  591. package/dist/frontend/npm-static-declaration-syntax.js.map +1 -0
  592. package/dist/frontend/npm-static-declarations.d.ts +11 -39
  593. package/dist/frontend/npm-static-declarations.js +22 -561
  594. package/dist/frontend/npm-static-declarations.js.map +1 -1
  595. package/dist/frontend/npm-static-declarations.test.js +245 -6
  596. package/dist/frontend/npm-static-declarations.test.js.map +1 -1
  597. package/dist/frontend/npm-static-prune.d.ts +1 -1
  598. package/dist/frontend/npm-static-prune.js +5 -4
  599. package/dist/frontend/npm-static-prune.js.map +1 -1
  600. package/dist/frontend/npm-static-prune.test.js +1 -1
  601. package/dist/frontend/npm-static-prune.test.js.map +1 -1
  602. package/dist/frontend/npm-static-rewrite-host.d.ts +4 -0
  603. package/dist/frontend/npm-static-rewrite-host.js +179 -0
  604. package/dist/frontend/npm-static-rewrite-host.js.map +1 -0
  605. package/dist/frontend/npm-static-rewrite-syntax.d.ts +16 -0
  606. package/dist/frontend/npm-static-rewrite-syntax.js +905 -0
  607. package/dist/frontend/npm-static-rewrite-syntax.js.map +1 -0
  608. package/dist/frontend/npm-static-rewrite.d.ts +0 -5
  609. package/dist/frontend/npm-static-rewrite.js +2 -1079
  610. package/dist/frontend/npm-static-rewrite.js.map +1 -1
  611. package/dist/frontend/npm-static-subtyping.d.ts +5 -0
  612. package/dist/frontend/npm-static-subtyping.js +55 -0
  613. package/dist/frontend/npm-static-subtyping.js.map +1 -0
  614. package/dist/frontend/npm-static-subtyping.test.d.ts +1 -0
  615. package/dist/frontend/npm-static-subtyping.test.js +58 -0
  616. package/dist/frontend/npm-static-subtyping.test.js.map +1 -0
  617. package/dist/frontend/npm-static.d.ts +7 -15
  618. package/dist/frontend/npm-static.js +19 -28
  619. package/dist/frontend/npm-static.js.map +1 -1
  620. package/dist/frontend/npm.d.ts +8 -69
  621. package/dist/frontend/npm.js +21 -361
  622. package/dist/frontend/npm.js.map +1 -1
  623. package/dist/frontend/npm.test.js +2 -2
  624. package/dist/frontend/npm.test.js.map +1 -1
  625. package/dist/frontend/pipeline-native.d.ts +6 -0
  626. package/dist/frontend/pipeline-native.js +32 -0
  627. package/dist/frontend/pipeline-native.js.map +1 -0
  628. package/dist/frontend/pipeline.d.ts +54 -0
  629. package/dist/frontend/pipeline.js +382 -0
  630. package/dist/frontend/pipeline.js.map +1 -0
  631. package/dist/frontend/pipeline.test.d.ts +1 -0
  632. package/dist/frontend/pipeline.test.js +77 -0
  633. package/dist/frontend/pipeline.test.js.map +1 -0
  634. package/dist/frontend/program-analysis.d.ts +10 -0
  635. package/dist/frontend/program-analysis.js +14 -0
  636. package/dist/frontend/program-analysis.js.map +1 -0
  637. package/dist/frontend/program-node.d.ts +9 -0
  638. package/dist/frontend/program-node.js +48 -0
  639. package/dist/frontend/program-node.js.map +1 -0
  640. package/dist/frontend/program.d.ts +38 -19
  641. package/dist/frontend/program.js +344 -169
  642. package/dist/frontend/program.js.map +1 -1
  643. package/dist/frontend/program.test.js +87 -2
  644. package/dist/frontend/program.test.js.map +1 -1
  645. package/dist/frontend/provenance-core.d.ts +9 -0
  646. package/dist/frontend/provenance-core.js +435 -0
  647. package/dist/frontend/provenance-core.js.map +1 -0
  648. package/dist/frontend/provenance.d.ts +0 -4
  649. package/dist/frontend/provenance.js +4 -459
  650. package/dist/frontend/provenance.js.map +1 -1
  651. package/dist/frontend/resolve.d.ts +3 -1
  652. package/dist/frontend/resolve.js +6 -3
  653. package/dist/frontend/resolve.js.map +1 -1
  654. package/dist/frontend/runtime-resolve.d.ts +4 -3
  655. package/dist/frontend/runtime-resolve.js +22 -18
  656. package/dist/frontend/runtime-resolve.js.map +1 -1
  657. package/dist/frontend/runtime-resolve.test.js +53 -0
  658. package/dist/frontend/runtime-resolve.test.js.map +1 -1
  659. package/dist/frontend/services-node.d.ts +5 -0
  660. package/dist/frontend/services-node.js +19 -0
  661. package/dist/frontend/services-node.js.map +1 -0
  662. package/dist/frontend/services-node.test.d.ts +1 -0
  663. package/dist/frontend/services-node.test.js +70 -0
  664. package/dist/frontend/services-node.test.js.map +1 -0
  665. package/dist/frontend/services.d.ts +44 -0
  666. package/dist/frontend/services.js +90 -0
  667. package/dist/frontend/services.js.map +1 -0
  668. package/dist/frontend/services.test.d.ts +1 -0
  669. package/dist/frontend/services.test.js +174 -0
  670. package/dist/frontend/services.test.js.map +1 -0
  671. package/dist/frontend/ts7/adapter.d.ts +3 -3
  672. package/dist/frontend/ts7/adapter.js +14 -31
  673. package/dist/frontend/ts7/adapter.js.map +1 -1
  674. package/dist/frontend/ts7/api.d.ts +16 -0
  675. package/dist/frontend/ts7/api.js +24 -0
  676. package/dist/frontend/ts7/api.js.map +1 -0
  677. package/dist/frontend/ts7/ast-bytes.d.ts +31 -0
  678. package/dist/frontend/ts7/ast-bytes.js +137 -0
  679. package/dist/frontend/ts7/ast-bytes.js.map +1 -0
  680. package/dist/frontend/ts7/ast-bytes.test.d.ts +1 -0
  681. package/dist/frontend/ts7/ast-bytes.test.js +73 -0
  682. package/dist/frontend/ts7/ast-bytes.test.js.map +1 -0
  683. package/dist/frontend/ts7/ast-guards.generated.d.ts +353 -0
  684. package/dist/frontend/ts7/ast-guards.generated.js +1951 -0
  685. package/dist/frontend/ts7/ast-guards.generated.js.map +1 -0
  686. package/dist/frontend/ts7/ast-guards.test.d.ts +1 -0
  687. package/dist/frontend/ts7/ast-guards.test.js +43 -0
  688. package/dist/frontend/ts7/ast-guards.test.js.map +1 -0
  689. package/dist/frontend/ts7/ast-node.d.ts +194 -0
  690. package/dist/frontend/ts7/ast-node.js +448 -0
  691. package/dist/frontend/ts7/ast-node.js.map +1 -0
  692. package/dist/frontend/ts7/ast-node.test.d.ts +1 -0
  693. package/dist/frontend/ts7/ast-node.test.js +266 -0
  694. package/dist/frontend/ts7/ast-node.test.js.map +1 -0
  695. package/dist/frontend/ts7/ast-schema.generated.d.ts +503 -0
  696. package/dist/frontend/ts7/ast-schema.generated.js +1446 -0
  697. package/dist/frontend/ts7/ast-schema.generated.js.map +1 -0
  698. package/dist/frontend/ts7/ast-text.d.ts +6 -0
  699. package/dist/frontend/ts7/ast-text.js +124 -0
  700. package/dist/frontend/ts7/ast-text.js.map +1 -0
  701. package/dist/frontend/ts7/ast-text.test.d.ts +1 -0
  702. package/dist/frontend/ts7/ast-text.test.js +38 -0
  703. package/dist/frontend/ts7/ast-text.test.js.map +1 -0
  704. package/dist/frontend/ts7/ast-tokens.generated.d.ts +2 -0
  705. package/dist/frontend/ts7/ast-tokens.generated.js +155 -0
  706. package/dist/frontend/ts7/ast-tokens.generated.js.map +1 -0
  707. package/dist/frontend/ts7/ast-types.d.ts +42 -0
  708. package/dist/frontend/ts7/ast-types.generated.d.ts +1615 -0
  709. package/dist/frontend/ts7/ast-types.generated.js +5 -0
  710. package/dist/frontend/ts7/ast-types.generated.js.map +1 -0
  711. package/dist/frontend/ts7/ast-types.js +3 -0
  712. package/dist/frontend/ts7/ast-types.js.map +1 -0
  713. package/dist/frontend/ts7/ast-wire.d.ts +58 -0
  714. package/dist/frontend/ts7/ast-wire.js +267 -0
  715. package/dist/frontend/ts7/ast-wire.js.map +1 -0
  716. package/dist/frontend/ts7/ast-wire.test.d.ts +1 -0
  717. package/dist/frontend/ts7/ast-wire.test.js +151 -0
  718. package/dist/frontend/ts7/ast-wire.test.js.map +1 -0
  719. package/dist/frontend/ts7/ast.d.ts +14 -14
  720. package/dist/frontend/ts7/ast.js +21 -15
  721. package/dist/frontend/ts7/ast.js.map +1 -1
  722. package/dist/frontend/ts7/census-check.js +1 -0
  723. package/dist/frontend/ts7/census-check.js.map +1 -1
  724. package/dist/frontend/ts7/checker-cache.d.ts +48 -0
  725. package/dist/frontend/ts7/checker-cache.js +92 -0
  726. package/dist/frontend/ts7/checker-cache.js.map +1 -0
  727. package/dist/frontend/ts7/checker.d.ts +19 -46
  728. package/dist/frontend/ts7/checker.js +231 -161
  729. package/dist/frontend/ts7/checker.js.map +1 -1
  730. package/dist/frontend/ts7/checker.test.d.ts +1 -0
  731. package/dist/frontend/ts7/checker.test.js +335 -0
  732. package/dist/frontend/ts7/checker.test.js.map +1 -0
  733. package/dist/frontend/ts7/enums.d.ts +4 -27
  734. package/dist/frontend/ts7/enums.generated.d.ts +878 -0
  735. package/dist/frontend/ts7/enums.generated.js +1313 -0
  736. package/dist/frontend/ts7/enums.generated.js.map +1 -0
  737. package/dist/frontend/ts7/enums.js +4 -45
  738. package/dist/frontend/ts7/enums.js.map +1 -1
  739. package/dist/frontend/ts7/enums.test.d.ts +1 -0
  740. package/dist/frontend/ts7/enums.test.js +48 -0
  741. package/dist/frontend/ts7/enums.test.js.map +1 -0
  742. package/dist/frontend/ts7/native-api.d.ts +10 -0
  743. package/dist/frontend/ts7/native-api.js +10 -0
  744. package/dist/frontend/ts7/native-api.js.map +1 -0
  745. package/dist/frontend/ts7/native-host.d.ts +2 -0
  746. package/dist/frontend/ts7/native-host.js +11 -0
  747. package/dist/frontend/ts7/native-host.js.map +1 -0
  748. package/dist/frontend/ts7/native-process.d.ts +14 -0
  749. package/dist/frontend/ts7/native-process.js +62 -0
  750. package/dist/frontend/ts7/native-process.js.map +1 -0
  751. package/dist/frontend/ts7/program-adapter.d.ts +10 -98
  752. package/dist/frontend/ts7/program-adapter.js +16 -310
  753. package/dist/frontend/ts7/program-adapter.js.map +1 -1
  754. package/dist/frontend/ts7/program-host.d.ts +115 -0
  755. package/dist/frontend/ts7/program-host.js +347 -0
  756. package/dist/frontend/ts7/program-host.js.map +1 -0
  757. package/dist/frontend/ts7/program-host.test.d.ts +1 -0
  758. package/dist/frontend/ts7/program-host.test.js +207 -0
  759. package/dist/frontend/ts7/program-host.test.js.map +1 -0
  760. package/dist/frontend/ts7/rpc-api.d.ts +12 -0
  761. package/dist/frontend/ts7/rpc-api.js +23 -0
  762. package/dist/frontend/ts7/rpc-api.js.map +1 -0
  763. package/dist/frontend/ts7/rpc-client.d.ts +27 -0
  764. package/dist/frontend/ts7/rpc-client.js +102 -0
  765. package/dist/frontend/ts7/rpc-client.js.map +1 -0
  766. package/dist/frontend/ts7/rpc-client.test.d.ts +1 -0
  767. package/dist/frontend/ts7/rpc-client.test.js +133 -0
  768. package/dist/frontend/ts7/rpc-client.test.js.map +1 -0
  769. package/dist/frontend/ts7/rpc-filesystem.d.ts +16 -0
  770. package/dist/frontend/ts7/rpc-filesystem.js +42 -0
  771. package/dist/frontend/ts7/rpc-filesystem.js.map +1 -0
  772. package/dist/frontend/ts7/rpc-filesystem.test.d.ts +1 -0
  773. package/dist/frontend/ts7/rpc-filesystem.test.js +89 -0
  774. package/dist/frontend/ts7/rpc-filesystem.test.js.map +1 -0
  775. package/dist/frontend/ts7/rpc-process.d.ts +2 -0
  776. package/dist/frontend/ts7/rpc-process.js +148 -0
  777. package/dist/frontend/ts7/rpc-process.js.map +1 -0
  778. package/dist/frontend/ts7/rpc-process.test.d.ts +1 -0
  779. package/dist/frontend/ts7/rpc-process.test.js +29 -0
  780. package/dist/frontend/ts7/rpc-process.test.js.map +1 -0
  781. package/dist/frontend/ts7/rpc-wire.d.ts +46 -0
  782. package/dist/frontend/ts7/rpc-wire.js +195 -0
  783. package/dist/frontend/ts7/rpc-wire.js.map +1 -0
  784. package/dist/frontend/ts7/rpc-wire.test.d.ts +1 -0
  785. package/dist/frontend/ts7/rpc-wire.test.js +168 -0
  786. package/dist/frontend/ts7/rpc-wire.test.js.map +1 -0
  787. package/dist/frontend/ts7/semantic-checker.d.ts +137 -0
  788. package/dist/frontend/ts7/semantic-checker.js +221 -0
  789. package/dist/frontend/ts7/semantic-checker.js.map +1 -0
  790. package/dist/frontend/ts7/semantic-checker.test.d.ts +1 -0
  791. package/dist/frontend/ts7/semantic-checker.test.js +119 -0
  792. package/dist/frontend/ts7/semantic-checker.test.js.map +1 -0
  793. package/dist/frontend/ts7/semantic-json.d.ts +5 -0
  794. package/dist/frontend/ts7/semantic-json.js +52 -0
  795. package/dist/frontend/ts7/semantic-json.js.map +1 -0
  796. package/dist/frontend/ts7/semantic-json.test.d.ts +1 -0
  797. package/dist/frontend/ts7/semantic-json.test.js +42 -0
  798. package/dist/frontend/ts7/semantic-json.test.js.map +1 -0
  799. package/dist/frontend/ts7/semantic-model.d.ts +222 -0
  800. package/dist/frontend/ts7/semantic-model.js +423 -0
  801. package/dist/frontend/ts7/semantic-model.js.map +1 -0
  802. package/dist/frontend/ts7/semantic-model.test.d.ts +1 -0
  803. package/dist/frontend/ts7/semantic-model.test.js +322 -0
  804. package/dist/frontend/ts7/semantic-model.test.js.map +1 -0
  805. package/dist/frontend/ts7/semantic-schema.generated.d.ts +283 -0
  806. package/dist/frontend/ts7/semantic-schema.generated.js +222 -0
  807. package/dist/frontend/ts7/semantic-schema.generated.js.map +1 -0
  808. package/dist/frontend/ts7/semantic-types.d.ts +5 -0
  809. package/dist/frontend/ts7/semantic-types.js +2 -0
  810. package/dist/frontend/ts7/semantic-types.js.map +1 -0
  811. package/dist/frontend/ts7/session-cache.d.ts +17 -0
  812. package/dist/frontend/ts7/session-cache.js +97 -0
  813. package/dist/frontend/ts7/session-cache.js.map +1 -0
  814. package/dist/frontend/ts7/session-cache.test.d.ts +1 -0
  815. package/dist/frontend/ts7/session-cache.test.js +87 -0
  816. package/dist/frontend/ts7/session-cache.test.js.map +1 -0
  817. package/dist/frontend/ts7/session-path.d.ts +18 -0
  818. package/dist/frontend/ts7/session-path.js +203 -0
  819. package/dist/frontend/ts7/session-path.js.map +1 -0
  820. package/dist/frontend/ts7/session-path.test.d.ts +1 -0
  821. package/dist/frontend/ts7/session-path.test.js +34 -0
  822. package/dist/frontend/ts7/session-path.test.js.map +1 -0
  823. package/dist/frontend/ts7/session-schema.generated.d.ts +167 -0
  824. package/dist/frontend/ts7/session-schema.generated.js +5 -0
  825. package/dist/frontend/ts7/session-schema.generated.js.map +1 -0
  826. package/dist/frontend/ts7/session-timing.d.ts +50 -0
  827. package/dist/frontend/ts7/session-timing.js +61 -0
  828. package/dist/frontend/ts7/session-timing.js.map +1 -0
  829. package/dist/frontend/ts7/session-timing.test.d.ts +1 -0
  830. package/dist/frontend/ts7/session-timing.test.js +52 -0
  831. package/dist/frontend/ts7/session-timing.test.js.map +1 -0
  832. package/dist/frontend/ts7/session.d.ts +105 -0
  833. package/dist/frontend/ts7/session.js +233 -0
  834. package/dist/frontend/ts7/session.js.map +1 -0
  835. package/dist/frontend/ts7/session.test.d.ts +1 -0
  836. package/dist/frontend/ts7/session.test.js +215 -0
  837. package/dist/frontend/ts7/session.test.js.map +1 -0
  838. package/dist/frontend/ts7/source-parser-node.d.ts +6 -0
  839. package/dist/frontend/ts7/source-parser-node.js +15 -0
  840. package/dist/frontend/ts7/source-parser-node.js.map +1 -0
  841. package/dist/frontend/ts7/source-parser.d.ts +25 -0
  842. package/dist/frontend/ts7/source-parser.js +96 -0
  843. package/dist/frontend/ts7/source-parser.js.map +1 -0
  844. package/dist/frontend/ts7/source-parser.test.d.ts +1 -0
  845. package/dist/frontend/ts7/source-parser.test.js +151 -0
  846. package/dist/frontend/ts7/source-parser.test.js.map +1 -0
  847. package/dist/frontend/ts7/syntax.d.ts +3 -0
  848. package/dist/frontend/ts7/syntax.js +4 -0
  849. package/dist/frontend/ts7/syntax.js.map +1 -0
  850. package/dist/frontend/tsc-codes.js +3 -0
  851. package/dist/frontend/tsc-codes.js.map +1 -1
  852. package/dist/frontend/type-mapper.d.ts +25 -17
  853. package/dist/frontend/type-mapper.js +465 -121
  854. package/dist/frontend/type-mapper.js.map +1 -1
  855. package/dist/frontend/type-mapper.test.js +123 -2
  856. package/dist/frontend/type-mapper.test.js.map +1 -1
  857. package/dist/frontend/union-discriminants.d.ts +16 -0
  858. package/dist/frontend/union-discriminants.js +98 -0
  859. package/dist/frontend/union-discriminants.js.map +1 -0
  860. package/dist/frontend/union-discriminants.test.d.ts +1 -0
  861. package/dist/frontend/union-discriminants.test.js +182 -0
  862. package/dist/frontend/union-discriminants.test.js.map +1 -0
  863. package/dist/index.d.ts +7 -198
  864. package/dist/index.js +369 -1572
  865. package/dist/index.js.map +1 -1
  866. package/dist/ir/analysis.d.ts +16 -4
  867. package/dist/ir/analysis.js +21 -4
  868. package/dist/ir/analysis.js.map +1 -1
  869. package/dist/ir/analysis.test.js +15 -2
  870. package/dist/ir/analysis.test.js.map +1 -1
  871. package/dist/ir/constant-tables.js +67 -49
  872. package/dist/ir/constant-tables.js.map +1 -1
  873. package/dist/ir/constant-tables.test.js +1 -1
  874. package/dist/ir/control-flow.d.ts +6 -0
  875. package/dist/ir/control-flow.js +142 -0
  876. package/dist/ir/control-flow.js.map +1 -0
  877. package/dist/ir/control-flow.test.d.ts +1 -0
  878. package/dist/ir/control-flow.test.js +113 -0
  879. package/dist/ir/control-flow.test.js.map +1 -0
  880. package/dist/ir/integer-loops.js +7 -18
  881. package/dist/ir/integer-loops.js.map +1 -1
  882. package/dist/ir/integer-ranges.js +53 -27
  883. package/dist/ir/integer-ranges.js.map +1 -1
  884. package/dist/ir/ir.d.ts +291 -152
  885. package/dist/ir/ir.js +588 -881
  886. package/dist/ir/ir.js.map +1 -1
  887. package/dist/ir/ir.test.js +127 -1
  888. package/dist/ir/ir.test.js.map +1 -1
  889. package/dist/ir/scalar-records.js +165 -134
  890. package/dist/ir/scalar-records.js.map +1 -1
  891. package/dist/ir/scalar-records.test.js +1 -1
  892. package/dist/ir/serialize.d.ts +4 -2
  893. package/dist/ir/serialize.js +19 -12
  894. package/dist/ir/serialize.js.map +1 -1
  895. package/dist/ir/serialize.test.d.ts +1 -0
  896. package/dist/ir/serialize.test.js +53 -0
  897. package/dist/ir/serialize.test.js.map +1 -0
  898. package/dist/ir/traverse.d.ts +41 -0
  899. package/dist/ir/traverse.js +660 -0
  900. package/dist/ir/traverse.js.map +1 -0
  901. package/dist/ir/traverse.test.d.ts +1 -0
  902. package/dist/ir/traverse.test.js +242 -0
  903. package/dist/ir/traverse.test.js.map +1 -0
  904. package/dist/ir/validate.js +1942 -1491
  905. package/dist/ir/validate.js.map +1 -1
  906. package/dist/ir/validate.test.js +476 -2
  907. package/dist/ir/validate.test.js.map +1 -1
  908. package/dist/library/cache-primitives.d.ts +2 -3
  909. package/dist/library/cache-primitives.js +4 -6
  910. package/dist/library/cache-primitives.js.map +1 -1
  911. package/dist/library/fence-eval.js +2 -2
  912. package/dist/library/fence-eval.js.map +1 -1
  913. package/dist/library/int-infer.js +7 -6
  914. package/dist/library/int-infer.js.map +1 -1
  915. package/dist/library/int-infer.test.js +4 -4
  916. package/dist/library/library-cache.d.ts +3 -2
  917. package/dist/library/library-cache.js +5 -17
  918. package/dist/library/library-cache.js.map +1 -1
  919. package/dist/library/library-cache.test.js +54 -41
  920. package/dist/library/library-cache.test.js.map +1 -1
  921. package/dist/library/library-profile.d.ts +3 -1
  922. package/dist/library/library-profile.js +15 -6
  923. package/dist/library/library-profile.js.map +1 -1
  924. package/dist/library/prepare.d.ts +15 -0
  925. package/dist/library/prepare.js +584 -0
  926. package/dist/library/prepare.js.map +1 -0
  927. package/dist/library/semantic-source.d.ts +1 -1
  928. package/dist/library/semantic-source.js +8 -6
  929. package/dist/library/semantic-source.js.map +1 -1
  930. package/dist/library/sidecar-validate.js +4 -4
  931. package/dist/library/sidecar-validate.js.map +1 -1
  932. package/dist/library/sidecar.d.ts +2 -0
  933. package/dist/library/sidecar.js +10 -3
  934. package/dist/library/sidecar.js.map +1 -1
  935. package/dist/native/cache.d.ts +11 -0
  936. package/dist/native/cache.js +113 -0
  937. package/dist/native/cache.js.map +1 -0
  938. package/dist/native/cache.test.d.ts +1 -0
  939. package/dist/native/cache.test.js +66 -0
  940. package/dist/native/cache.test.js.map +1 -0
  941. package/dist/native/cli.d.ts +1 -0
  942. package/dist/native/cli.js +112 -0
  943. package/dist/native/cli.js.map +1 -0
  944. package/dist/native/compiler.d.ts +15 -0
  945. package/dist/native/compiler.js +336 -0
  946. package/dist/native/compiler.js.map +1 -0
  947. package/dist/native/compiler.test.d.ts +1 -0
  948. package/dist/native/compiler.test.js +174 -0
  949. package/dist/native/compiler.test.js.map +1 -0
  950. package/dist/native/comptime.d.ts +5 -0
  951. package/dist/native/comptime.js +73 -0
  952. package/dist/native/comptime.js.map +1 -0
  953. package/dist/native/comptime.test.d.ts +1 -0
  954. package/dist/native/comptime.test.js +65 -0
  955. package/dist/native/comptime.test.js.map +1 -0
  956. package/dist/native/executable-cache.d.ts +26 -0
  957. package/dist/native/executable-cache.js +228 -0
  958. package/dist/native/executable-cache.js.map +1 -0
  959. package/dist/native/executable-cache.test.d.ts +1 -0
  960. package/dist/native/executable-cache.test.js +151 -0
  961. package/dist/native/executable-cache.test.js.map +1 -0
  962. package/dist/native/file-identity.d.ts +4 -0
  963. package/dist/native/file-identity.js +14 -0
  964. package/dist/native/file-identity.js.map +1 -0
  965. package/dist/native/file-identity.test.d.ts +1 -0
  966. package/dist/native/file-identity.test.js +43 -0
  967. package/dist/native/file-identity.test.js.map +1 -0
  968. package/dist/native/library.d.ts +22 -0
  969. package/dist/native/library.js +83 -0
  970. package/dist/native/library.js.map +1 -0
  971. package/dist/native/prepare.d.ts +21 -0
  972. package/dist/native/prepare.js +174 -0
  973. package/dist/native/prepare.js.map +1 -0
  974. package/dist/native/prepare.test.d.ts +1 -0
  975. package/dist/native/prepare.test.js +70 -0
  976. package/dist/native/prepare.test.js.map +1 -0
  977. package/dist/native/sanitizer.d.ts +11 -0
  978. package/dist/native/sanitizer.js +135 -0
  979. package/dist/native/sanitizer.js.map +1 -0
  980. package/dist/native/sanitizer.test.d.ts +1 -0
  981. package/dist/native/sanitizer.test.js +58 -0
  982. package/dist/native/sanitizer.test.js.map +1 -0
  983. package/dist/native/task.d.ts +4 -0
  984. package/dist/native/task.js +16 -0
  985. package/dist/native/task.js.map +1 -0
  986. package/dist/native/task.test.d.ts +1 -0
  987. package/dist/native/task.test.js +17 -0
  988. package/dist/native/task.test.js.map +1 -0
  989. package/dist/native/toolchain.d.ts +45 -0
  990. package/dist/native/toolchain.js +74 -0
  991. package/dist/native/toolchain.js.map +1 -0
  992. package/dist/native/toolchain.test.d.ts +1 -0
  993. package/dist/native/toolchain.test.js +33 -0
  994. package/dist/native/toolchain.test.js.map +1 -0
  995. package/dist/startup-cache.d.ts +1 -1
  996. package/dist/startup-cache.js +2 -5
  997. package/dist/startup-cache.js.map +1 -1
  998. package/dist/timing.d.ts +4 -0
  999. package/dist/timing.js +19 -0
  1000. package/dist/timing.js.map +1 -0
  1001. package/dist/wasi-paths.js +10 -7
  1002. package/dist/wasi-paths.js.map +1 -1
  1003. package/package.json +28 -19
  1004. package/surface-manifest.json +52 -18
  1005. package/dist/backend/c/async.d.ts +0 -171
  1006. package/dist/backend/c/async.js +0 -1317
  1007. package/dist/backend/c/async.js.map +0 -1
  1008. package/dist/backend/c/c-emitter.d.ts +0 -536
  1009. package/dist/backend/c/c-emitter.js +0 -1932
  1010. package/dist/backend/c/c-emitter.js.map +0 -1
  1011. package/dist/backend/c/exprs.d.ts +0 -15
  1012. package/dist/backend/c/exprs.js +0 -8847
  1013. package/dist/backend/c/exprs.js.map +0 -1
  1014. package/dist/backend/c/island.d.ts +0 -45
  1015. package/dist/backend/c/island.js +0 -281
  1016. package/dist/backend/c/island.js.map +0 -1
  1017. package/dist/backend/c/may-throw.js.map +0 -1
  1018. package/dist/backend/c/shapes.d.ts +0 -142
  1019. package/dist/backend/c/shapes.js +0 -603
  1020. package/dist/backend/c/shapes.js.map +0 -1
  1021. package/dist/backend/c/stmts.d.ts +0 -76
  1022. package/dist/backend/c/stmts.js +0 -1108
  1023. package/dist/backend/c/stmts.js.map +0 -1
  1024. package/dist/backend/c/types.d.ts +0 -71
  1025. package/dist/backend/c/types.js +0 -459
  1026. package/dist/backend/c/types.js.map +0 -1
  1027. package/dist/backend/c/types.test.js +0 -32
  1028. package/dist/backend/c/types.test.js.map +0 -1
  1029. package/dist/backend/c/walkers.d.ts +0 -134
  1030. package/dist/backend/c/walkers.js +0 -1772
  1031. package/dist/backend/c/walkers.js.map +0 -1
  1032. /package/dist/backend/{c/types.test.d.ts → cycle-analysis.test.d.ts} +0 -0
@@ -1,5 +1,6 @@
1
+ import { BUF_NUM_METHODS } from "./buffer-numeric-methods.js";
1
2
  import * as ts from "../../ts7/adapter.js";
2
- import { BIGINT_T, BOOL, BYTES_U8, DYN, F64, STRING, UNDEFINED_T, VOID, arrayOf, bytesOf, typeEquals } from "../../../ir/ir.js";
3
+ import { BYTES_ELEMENT_SIZE, BIGINT_T, BOOL, BYTES_U8, DYN, F64, STRING, UNDEFINED_T, VOID, arrayOf, bytesOf, typeEquals } from "../../../ir/ir.js";
3
4
  import { locOf } from "../../program.js";
4
5
  import { dynUndefinedExpr, own } from "../lowerer.js";
5
6
  import { buildBytesSortFn } from "../lower-array-sort.js";
@@ -17,7 +18,7 @@ function lowerBytesToSortedCall(lowerer, call, access, bytesT) {
17
18
  if (call.arguments.length > 1 || call.arguments.some(ts.isSpreadElement)) {
18
19
  lowerer.noLowering(`.toSorted with ${call.arguments.length} arguments on Uint8Array`, call);
19
20
  }
20
- const receiver = lowerer.lowerExpr(access.expression);
21
+ const receiver = lowerer.lowerExprExpecting(access.expression, bytesT);
21
22
  const undefinedArg = call.arguments[0]
22
23
  ? lowerStaticallyUndefinedArgument(lowerer, call.arguments[0])
23
24
  : null;
@@ -85,27 +86,40 @@ function lowerBytesToSortedCall(lowerer, call, access, bytesT) {
85
86
  }
86
87
  /* ── typed arrays / Buffer ─────────────────────────────────────────────── */
87
88
  /** The typed-array constructors with a runtime representation, by lib
88
- * interface name. Other flavors (Int8Array, Float16Array, ...) fall through
89
+ * interface name. Other flavors (Float16Array, BigInt64Array, ...) fall through
89
90
  * to the generic stdlib-constructor fence. DataView is handled separately. */
90
91
  const BYTES_CTORS = {
91
92
  Uint8Array: "u8",
93
+ Uint8ClampedArray: "u8c",
94
+ Int8Array: "i8",
95
+ Uint16Array: "u16",
96
+ Int16Array: "i16",
92
97
  Uint32Array: "u32",
93
98
  Int32Array: "i32",
94
99
  Float32Array: "f32",
95
100
  Float64Array: "f64",
96
101
  };
97
- /** `new Uint8Array(...)` / `new Uint32Array(...)` / `new Float32Array(...)` / `new Float64Array(...)`
102
+ /** Numeric typed-array constructors
98
103
  * (stdlib provenance — a user's own class with the name resolves through
99
104
  * classBySymbol). Lowered argument shapes: none (empty), a length
100
105
  * (zero-filled; ToIndex at runtime — invalid lengths throw Node's
101
- * RangeError), a same-kind typed array or Buffer (an independent COPY —
106
+ * RangeError), a numeric typed array or Buffer (an independent COPY —
102
107
  * the readFile chain's `new Uint8Array(await readFile(p))`), a number[]
103
108
  * literal (element-coerced; its contextual type is the lib's
104
109
  * ArrayLike/Iterable union, which cannot map — the Set-seed pattern), or
105
- * a number[]-typed value. ArrayBuffer/view forms are fenced: scriptc
106
- * typed arrays own their storage. Null when this isn't a stdlib
110
+ * a number[]-typed value, or checked native input with runtime length /
111
+ * array-like dispatch. ArrayBuffer inputs create shared views.
112
+ * Null when this isn't a stdlib
107
113
  * typed-array construction. */
108
114
  export function lowerBytesNew(lowerer, expr, symbol) {
115
+ if (symbol?.name === "ArrayBuffer" && lowerer.isStdlibSymbol(symbol)) {
116
+ const args = expr.arguments ?? [];
117
+ if (args.length > 1 || args.some(ts.isSpreadElement)) {
118
+ lowerer.noLowering("resizable ArrayBuffer construction", expr, "fixed-length ArrayBuffers accept a byte length; resizable storage is not supported yet");
119
+ }
120
+ const length = args[0] ? lowerer.coerceInto(args[0], lowerer.lowerExpr(args[0]), DYN) : dynUndefinedExpr(locOf(expr));
121
+ return { kind: "libCall", fn: "arrayBuffer.new", args: [length], type: DYN, loc: locOf(expr) };
122
+ }
109
123
  if (symbol && symbol.name === "DataView" && lowerer.isStdlibSymbol(symbol)) {
110
124
  return lowerDataViewNew(lowerer, expr);
111
125
  }
@@ -118,6 +132,9 @@ export function lowerBytesNew(lowerer, expr, symbol) {
118
132
  const args = expr.arguments ?? [];
119
133
  if (args.length === 0)
120
134
  return { kind: "bytesNew", source: null, type, loc };
135
+ if (args.length >= 2 && args.length <= 3 && !args.some(ts.isSpreadElement)) {
136
+ return lowerArrayBufferView(lowerer, args, elem, loc);
137
+ }
121
138
  if (args.length === 1 && !ts.isSpreadElement(args[0])) {
122
139
  const argNode = args[0];
123
140
  if (ts.isArrayLiteralExpression(argNode) && !argNode.elements.some(ts.isSpreadElement)) {
@@ -125,8 +142,7 @@ export function lowerBytesNew(lowerer, expr, symbol) {
125
142
  const seed = { kind: "arrayLit", elems, type: arrayOf(F64), loc };
126
143
  return { kind: "bytesNew", source: seed, type, loc };
127
144
  }
128
- // The SYNTACTIC `new T(new ArrayBuffer(n))` and `new T(new
129
- // SharedArrayBuffer(n))` forms — fresh-buffer construction (the
145
+ // The SYNTACTIC `new T(new SharedArrayBuffer(n))` form — fresh-buffer construction (the
130
146
  // shared spelling is the Atomics.wait sleep idiom's). The buffer
131
147
  // never exists as a value: n must be a byte-length LITERAL divisible
132
148
  // by the element size (tsc would admit any number; a bad one is
@@ -136,19 +152,17 @@ export function lowerBytesNew(lowerer, expr, symbol) {
136
152
  // else can ever reference it, so neither sharing (scriptc has no
137
153
  // threads) nor aliasing is observable — SEMANTICS.md documents the
138
154
  // stance. The RESIZABLE form (a maxByteLength options bag) fences by
139
- // name: resize needs the buffer to exist as a value, and none does.
155
+ // name: this erasure has no shared or growable buffer representation.
140
156
  if (ts.isNewExpression(argNode) &&
141
157
  ts.isIdentifier(argNode.expression) &&
142
- (argNode.expression.text === "ArrayBuffer" ||
143
- argNode.expression.text === "SharedArrayBuffer") &&
158
+ argNode.expression.text === "SharedArrayBuffer" &&
144
159
  lowerer.isStdlibSymbol(lowerer.resolveValueSymbol(argNode.expression) ?? undefined)) {
145
160
  const bufCtor = argNode.expression.text;
146
161
  if ((argNode.arguments?.length ?? 0) > 1) {
147
- lowerer.noLowering(`new ${name} over a resizable ${bufCtor}`, argNode, "a maxByteLength options bag makes the buffer resizable, and resizing needs the buffer " +
148
- "to exist as a runtime value — no free-standing ArrayBuffer value exists (the buffer here " +
149
- "erases into the view): drop the options bag");
162
+ lowerer.noLowering(`new ${name} over a resizable ${bufCtor}`, argNode, "a maxByteLength options bag needs growable shared storage; the fixed-length " +
163
+ "SharedArrayBuffer here erases into the view: drop the options bag");
150
164
  }
151
- const elemSize = elem === "u8" ? 1 : elem === "f64" ? 8 : 4;
165
+ const elemSize = BYTES_ELEMENT_SIZE[elem];
152
166
  const lenArg = argNode.arguments?.length === 1 ? argNode.arguments[0] : undefined;
153
167
  const lenT = lenArg ? lowerer.typeOf(lenArg) : null;
154
168
  const byteLen = lenT?.isNumberLiteralType() ? lenT.value : null;
@@ -159,97 +173,70 @@ export function lowerBytesNew(lowerer, expr, symbol) {
159
173
  return { kind: "bytesNew", source: count, type, loc };
160
174
  }
161
175
  const src = lowerer.lowerExpr(argNode);
162
- if (src.type.kind === "union" && lowerer.armTag(src.type.unionId, UNDEFINED_T) >= 0) {
163
- const present = lowerer.stripUndefinedArm(src.type);
164
- if (present.kind === "array" && present.elem.kind === "f64") {
165
- const undefTag = lowerer.armTag(src.type.unionId, UNDEFINED_T);
166
- const presentTag = lowerer.armTag(src.type.unionId, present);
167
- if (undefTag >= 0 && presentTag >= 0) {
168
- const empty = { kind: "arrayLit", elems: [], type: present, loc };
169
- const source = {
170
- kind: "ternary",
171
- cond: { kind: "unionIsTag", unionId: src.type.unionId, tag: undefTag, negated: false, value: src, type: BOOL, loc },
172
- then: empty,
173
- else_: { kind: "unionNarrow", unionId: src.type.unionId, tag: presentTag, value: src, type: present, loc },
174
- type: present,
175
- loc,
176
- };
177
- return { kind: "bytesNew", source, type, loc };
178
- }
176
+ if (src.type.kind === "union") {
177
+ const arms = lowerer.unions.get(src.type.unionId)?.arms;
178
+ if (arms?.every((arm) => arm.kind === "f64" || arm.kind === "bytes" ||
179
+ typeEquals(arm, UNDEFINED_T) || (arm.kind === "array" && arm.elem.kind === "f64"))) {
180
+ // The checked constructor dispatch preserves each arm's copy or
181
+ // length semantics, including undefined -> empty, and evaluates
182
+ // an effectful source expression exactly once.
183
+ return { kind: "bytesNew", source: lowerer.coerceInto(argNode, src, DYN), type, loc };
179
184
  }
180
185
  }
181
186
  if (src.type.kind === "f64" ||
182
- typeEquals(src.type, type) ||
187
+ src.type.kind === "bytes" || src.type.kind === "dyn" ||
183
188
  (src.type.kind === "array" && src.type.elem.kind === "f64")) {
184
189
  return { kind: "bytesNew", source: src, type, loc };
185
190
  }
186
- if (src.type.kind === "bytes") {
187
- lowerer.noLowering(`new ${name} over a '${lowerer.fmt(src.type)}'`, argNode, "cross-kind typed-array conversion has no lowering — copy element by element");
188
- }
189
191
  lowerer.noLowering(`new ${name} over '${lowerer.fmt(src.type)}' values`, argNode, `supported: new ${name}(), (length), (typedArray) — always a copy — or (number[]); ` +
190
- "ArrayBuffers and views do not exist here (narrow unions first)");
192
+ "or (ArrayBuffer, byteOffset?, length?) for shared storage (narrow unions first)");
191
193
  }
192
194
  lowerer.noLowering(`new ${name} with ${args.length} arguments`, expr, `supported: new ${name}(), (length), (typedArray), or (number[])`);
193
195
  }
194
- /** `new DataView(x.buffer, byteOffset?, byteLength?)` (stdlib provenance).
195
- * The first argument must be the SYNTACTIC `.buffer` of a typed-array/
196
- * Buffer value — `x.buffer` names x's own storage (scriptc typed arrays
197
- * always own it whole, byteOffset 0), so the view construction takes x
198
- * itself as the receiver and no ArrayBuffer value ever exists.
199
- * byteOffset/byteLength are optional f64s (omitted args OMITTED, like
200
- * slice); bad indices THROW Node's RangeErrors catchably. The result is
201
- * a true borrowed view: reads and writes through it alias x. */
202
- function lowerDataViewNew(lowerer, expr) {
203
- const loc = locOf(expr);
204
- const args = expr.arguments ?? [];
205
- const bufNode = args[0];
206
- if (!bufNode || args.length > 3 || args.some(ts.isSpreadElement)) {
207
- lowerer.noLowering(`new DataView with ${args.length} arguments`, expr, "supported: new DataView(x.buffer), (x.buffer, byteOffset), or (x.buffer, byteOffset, byteLength)");
208
- }
209
- // The FRESH-BUFFER form: `new DataView(new ArrayBuffer(n), ...)` — the
210
- // buffer erases into the view (nothing else can ever reference it, so
211
- // the aliasing a shared buffer would exhibit is unobservable): the
212
- // view's storage is a fresh zero-filled n-byte allocation. n must be a
213
- // non-negative integer LITERAL (tsc admits any number; a fractional
214
- // one is ToIndex truncation nothing here implements). byteOffset and
215
- // byteLength keep their runtime Node-RangeError story. The RESIZABLE
216
- // form (a maxByteLength options bag) fences by name.
217
- if (ts.isNewExpression(bufNode) &&
218
- ts.isIdentifier(bufNode.expression) &&
219
- bufNode.expression.text === "ArrayBuffer" &&
220
- lowerer.isStdlibSymbol(lowerer.resolveValueSymbol(bufNode.expression) ?? undefined)) {
221
- if ((bufNode.arguments?.length ?? 0) > 1) {
222
- lowerer.noLowering("new DataView over a resizable ArrayBuffer", bufNode, "a maxByteLength options bag makes the buffer resizable, and resizing needs the buffer " +
223
- "to exist as a runtime value — no free-standing ArrayBuffer value exists (the buffer here " +
224
- "erases into the view): drop the options bag");
225
- }
226
- const lenArg = bufNode.arguments?.length === 1 ? bufNode.arguments[0] : undefined;
227
- const lenT = lenArg ? lowerer.typeOf(lenArg) : null;
228
- const byteLen = lenT?.isNumberLiteralType() ? lenT.value : null;
229
- if (byteLen === null || !Number.isInteger(byteLen) || byteLen < 0) {
230
- lowerer.noLowering("new DataView over this ArrayBuffer", bufNode, "the byte length must be a non-negative integer literal — new DataView(new ArrayBuffer(8))");
231
- }
232
- const count = { kind: "numLit", value: byteLen, type: F64, loc };
233
- const receiver = { kind: "bytesNew", source: count, type: BYTES_U8, loc };
234
- const idxArgs = args.slice(1).map((a) => lowerer.lowerExprExpecting(a, F64));
235
- return { kind: "bytesIntrinsic", method: "dataViewNew", receiver, args: idxArgs, type: BYTES_U8, loc };
196
+ /** TypedArray.from without a mapping callback. Preserve its iterable /
197
+ * array-like semantics separately from constructor length coercion. */
198
+ export function lowerBytesStaticCall(lowerer, call, access) {
199
+ if (lowerer.chainBlocked(call, access))
200
+ return null;
201
+ if (lowerer.isStdlibGlobal(access.expression, "ArrayBuffer") && access.name.text === "isView") {
202
+ if (call.arguments.length !== 1 || call.arguments.some(ts.isSpreadElement))
203
+ lowerer.noLowering("ArrayBuffer.isView argument count", call);
204
+ const arg = call.arguments[0];
205
+ return { kind: "libCall", fn: "arrayBuffer.isView", args: [lowerer.coerceInto(arg, lowerer.lowerExpr(arg), DYN)], type: BOOL, loc: locOf(call) };
236
206
  }
237
- const hint = "views compile over a typed array's own storage — new DataView(x.buffer, byteOffset?, byteLength?) " +
238
- "where x is a Uint8Array/Uint32Array/Float32Array/Float64Array/Buffer value — or a fresh buffer erased into " +
239
- "the view: new DataView(new ArrayBuffer(n), ...); free-standing ArrayBuffers have no representation";
240
- if (!ts.isPropertyAccessExpression(bufNode) || bufNode.name.text !== "buffer" || bufNode.questionDotToken) {
241
- lowerer.noLowering("new DataView over this buffer expression", bufNode, hint);
207
+ if (access.name.text !== "from" || !ts.isIdentifier(access.expression))
208
+ return null;
209
+ const symbol = lowerer.resolveValueSymbol(access.expression);
210
+ const elem = symbol ? own(BYTES_CTORS, symbol.name) : undefined;
211
+ if (!elem || !lowerer.isStdlibSymbol(symbol ?? undefined))
212
+ return null;
213
+ if (call.arguments.length !== 1 || call.arguments.some(ts.isSpreadElement)) {
214
+ lowerer.noLowering("TypedArray.from with a mapping callback or this argument count", call);
242
215
  }
243
- const srcIr = lowerer.mapTypeOf(lowerer.typeOf(bufNode.expression));
244
- if (srcIr?.kind !== "bytes" || !lowerer.isStdlibMember(bufNode)) {
245
- lowerer.noLowering(`new DataView over '.buffer' of a '${lowerer.checker.typeToString(lowerer.typeOf(bufNode.expression))}'`, bufNode, hint);
216
+ const node = call.arguments[0];
217
+ const source = lowerer.lowerExpr(node);
218
+ if (source.type.kind === "bytes" || (source.type.kind === "array" && source.type.elem.kind === "f64")) {
219
+ return { kind: "bytesNew", source, type: bytesOf(elem), loc: locOf(call) };
246
220
  }
247
- const receiver = lowerer.lowerExpr(bufNode.expression);
248
- const idxArgs = args.slice(1).map((a) => lowerer.lowerExprExpecting(a, F64));
249
- return { kind: "bytesIntrinsic", method: "dataViewNew", receiver, args: idxArgs, type: BYTES_U8, loc };
221
+ return { kind: "bytesNew", source: lowerer.coerceInto(node, source, DYN), from: true, type: bytesOf(elem), loc: locOf(call) };
222
+ }
223
+ /** Construct a view over the complete branded backing allocation. */
224
+ function lowerArrayBufferView(lowerer, args, elem, loc) {
225
+ const values = [0, 1, 2].map((index) => {
226
+ const node = args[index];
227
+ return node ? lowerer.coerceInto(node, lowerer.lowerExpr(node), DYN) : dynUndefinedExpr(loc);
228
+ });
229
+ 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" };
230
+ return { kind: "libCall", fn: fn[elem], args: values, type: elem === "dv" ? BYTES_U8 : bytesOf(elem), loc };
250
231
  }
251
- /** Method calls on typed-array/Buffer receivers: slice and subarray (BOTH
252
- * copy — subarray's sharing is the documented divergence), set(src,
232
+ function lowerDataViewNew(lowerer, expr) {
233
+ const args = expr.arguments ?? [];
234
+ if (!args.length || args.length > 3 || args.some(ts.isSpreadElement))
235
+ lowerer.noLowering("DataView constructor argument count", expr);
236
+ return lowerArrayBufferView(lowerer, args, "dv", locOf(expr));
237
+ }
238
+ /** Method calls on typed-array/Buffer receivers: slice (copy), subarray
239
+ * (shared view), copyWithin, set(src,
253
240
  * offset?), and the u8-only Buffer surface: toString(enc?) plus the
254
241
  * whole numeric read/write family (fixed widths BE/LE and the
255
242
  * variable-width read/writeUIntLE quartet — BUF_NUM_METHODS). Everything
@@ -276,7 +263,7 @@ export function lowerBytesMethodCall(lowerer, call, access) {
276
263
  return {
277
264
  kind: "bytesIntrinsic",
278
265
  method: "toReversed",
279
- receiver: lowerer.lowerExpr(access.expression),
266
+ receiver: lowerer.lowerExprExpecting(access.expression, receiverIr),
280
267
  args: [],
281
268
  type: receiverIr,
282
269
  loc,
@@ -289,7 +276,7 @@ export function lowerBytesMethodCall(lowerer, call, access) {
289
276
  return {
290
277
  kind: "bytesIntrinsic",
291
278
  method: "with",
292
- receiver: lowerer.lowerExpr(access.expression),
279
+ receiver: lowerer.lowerExprExpecting(access.expression, receiverIr),
293
280
  args: [
294
281
  lowerer.lowerExprExpecting(call.arguments[0], F64),
295
282
  lowerer.lowerExprExpecting(call.arguments[1], F64),
@@ -298,9 +285,9 @@ export function lowerBytesMethodCall(lowerer, call, access) {
298
285
  loc,
299
286
  };
300
287
  }
301
- if (receiverIr.elem === "u8" && name === "join") {
288
+ if (name === "join") {
302
289
  if (nArgs > 1 || call.arguments.some(ts.isSpreadElement)) {
303
- lowerer.noLowering(`.join with ${nArgs} arguments on Uint8Array`, call);
290
+ lowerer.noLowering(`.join with ${nArgs} arguments on typed arrays`, call);
304
291
  }
305
292
  const separatorDefault = {
306
293
  kind: "strLit",
@@ -314,7 +301,7 @@ export function lowerBytesMethodCall(lowerer, call, access) {
314
301
  return {
315
302
  kind: "bytesIntrinsic",
316
303
  method: "join",
317
- receiver: lowerer.lowerExpr(access.expression),
304
+ receiver: lowerer.lowerExprExpecting(access.expression, receiverIr),
318
305
  args: [separator],
319
306
  type: STRING,
320
307
  loc,
@@ -324,7 +311,7 @@ export function lowerBytesMethodCall(lowerer, call, access) {
324
311
  if (nArgs > 2) {
325
312
  lowerer.noLowering(`.${name} with ${nArgs} arguments on typed arrays`, call);
326
313
  }
327
- const receiver = lowerer.lowerExpr(access.expression);
314
+ const receiver = lowerer.lowerExprExpecting(access.expression, receiverIr);
328
315
  const args = call.arguments.map((a) => lowerer.lowerExprExpecting(a, F64));
329
316
  // subarray is a VIEW (TypedArray.prototype.subarray aliases), and
330
317
  // Buffer's slice() is subarray's deprecated Node alias — resolved by
@@ -338,6 +325,18 @@ export function lowerBytesMethodCall(lowerer, call, access) {
338
325
  const method = name === "subarray" || declaredOnBuffer ? "subarray" : "slice";
339
326
  return { kind: "bytesIntrinsic", method, receiver, args, type: receiverIr, loc };
340
327
  }
328
+ if (name === "copyWithin") {
329
+ if (nArgs > 3 || call.arguments.some(ts.isSpreadElement)) {
330
+ lowerer.noLowering(`.copyWithin with ${nArgs} arguments on typed arrays`, call);
331
+ }
332
+ const receiver = lowerer.lowerExprExpecting(access.expression, receiverIr);
333
+ const args = [0, 0, Infinity].map((value, i) => {
334
+ const fallback = { kind: "numLit", value, type: F64, loc };
335
+ const node = call.arguments[i];
336
+ return node ? lowerOptionalArgument(lowerer, node, F64, fallback) : fallback;
337
+ });
338
+ return { kind: "bytesIntrinsic", method: "copyWithin", receiver, args, type: receiverIr, loc };
339
+ }
341
340
  if (name === "fill" && receiverIr.elem !== "u8") {
342
341
  // TypedArray.prototype.fill on the non-u8 kinds: per-element value
343
342
  // coercion, slice-clamped relative indices, never throws. u8
@@ -346,7 +345,7 @@ export function lowerBytesMethodCall(lowerer, call, access) {
346
345
  if (nArgs < 1 || nArgs > 3) {
347
346
  lowerer.noLowering(`.fill with ${nArgs} arguments on typed arrays`, call);
348
347
  }
349
- const receiver = lowerer.lowerExpr(access.expression);
348
+ const receiver = lowerer.lowerExprExpecting(access.expression, receiverIr);
350
349
  const v = lowerer.lowerExprExpecting(call.arguments[0], F64);
351
350
  const idx = call.arguments.slice(1).map((a) => lowerer.lowerExprExpecting(a, F64));
352
351
  return { kind: "bytesIntrinsic", method: "fillElem", receiver, args: [v, ...idx], type: receiverIr, loc };
@@ -355,15 +354,13 @@ export function lowerBytesMethodCall(lowerer, call, access) {
355
354
  if (nArgs < 1 || nArgs > 2) {
356
355
  lowerer.noLowering(`.set with ${nArgs} arguments on typed arrays`, call);
357
356
  }
358
- const receiver = lowerer.lowerExpr(access.expression);
357
+ const receiver = lowerer.lowerExprExpecting(access.expression, receiverIr);
359
358
  const src = lowerer.lowerExpr(call.arguments[0]);
360
- if (!typeEquals(src.type, receiverIr)) {
361
- lowerer.noLowering(`.set from '${lowerer.fmt(src.type)}' values`, call.arguments[0], "only a same-kind typed array copies in (number[] sources have no lowering — narrow unions first)");
362
- }
363
- const args = [src];
359
+ const method = src.type.kind === "bytes" ? "setFrom" : "setFromDyn";
360
+ const args = [src.type.kind === "bytes" ? src : lowerer.coerceInto(call.arguments[0], src, DYN)];
364
361
  if (nArgs === 2)
365
- args.push(lowerer.lowerExprExpecting(call.arguments[1], F64));
366
- return { kind: "bytesIntrinsic", method: "setFrom", receiver, args, type: VOID, loc };
362
+ args.push(lowerOptionalArgument(lowerer, call.arguments[1], F64, { kind: "numLit", value: 0, type: F64, loc }));
363
+ return { kind: "bytesIntrinsic", method, receiver, args, type: VOID, loc };
367
364
  }
368
365
  if (name === "toString") {
369
366
  // Buffer's toString(encoding?) — utf8 by default. A 0-arg toString
@@ -378,7 +375,7 @@ export function lowerBytesMethodCall(lowerer, call, access) {
378
375
  }
379
376
  if (nArgs > 3)
380
377
  lowerer.noLowering(`.toString with ${nArgs} arguments on Buffers`, call);
381
- const receiver = lowerer.lowerExpr(access.expression);
378
+ const receiver = lowerer.lowerExprExpecting(access.expression, receiverIr);
382
379
  const encNode = call.arguments[0];
383
380
  let method = "toString";
384
381
  let enc = { kind: "strLit", value: "utf8", type: STRING, loc };
@@ -447,7 +444,7 @@ export function lowerBytesMethodCall(lowerer, call, access) {
447
444
  if (nArgs < required || nArgs > required + 1) {
448
445
  lowerer.noLowering(`.${name} with ${nArgs} arguments`, call);
449
446
  }
450
- const receiver = lowerer.lowerExpr(access.expression);
447
+ const receiver = lowerer.lowerExprExpecting(access.expression, receiverIr);
451
448
  const offsetNode = call.arguments[required];
452
449
  const offset = offsetNode
453
450
  ? lowerer.lowerExprExpecting(offsetNode, F64)
@@ -474,7 +471,7 @@ export function lowerBytesMethodCall(lowerer, call, access) {
474
471
  if (nArgs < required || nArgs > required + 1) {
475
472
  lowerer.noLowering(`.${name} with ${nArgs} arguments`, call);
476
473
  }
477
- const receiver = lowerer.lowerExpr(access.expression);
474
+ const receiver = lowerer.lowerExprExpecting(access.expression, receiverIr);
478
475
  const kind = { kind: "strLit", value: numKind, type: STRING, loc };
479
476
  const args = [kind, ...call.arguments.map((a) => lowerer.lowerExprExpecting(a, F64))];
480
477
  if (nArgs === required) {
@@ -492,7 +489,7 @@ export function lowerBytesMethodCall(lowerer, call, access) {
492
489
  if (nArgs !== required) {
493
490
  lowerer.noLowering(`.${name} with ${nArgs} arguments`, call);
494
491
  }
495
- const receiver = lowerer.lowerExpr(access.expression);
492
+ const receiver = lowerer.lowerExprExpecting(access.expression, receiverIr);
496
493
  const kind = { kind: "strLit", value: varKind, type: STRING, loc };
497
494
  const args = [kind, ...call.arguments.map((a) => lowerer.lowerExprExpecting(a, F64))];
498
495
  return { kind: "bytesIntrinsic", method: write ? "writeNumVar" : "readNumVar", receiver, args, type: F64, loc };
@@ -506,7 +503,7 @@ export function lowerBytesMethodCall(lowerer, call, access) {
506
503
  if (dvBigGetter !== undefined && receiverIr.elem === "u8") {
507
504
  if (nArgs < 1 || nArgs > 2)
508
505
  lowerer.noLowering(`.${name} with ${nArgs} arguments`, call);
509
- const receiver = lowerer.lowerExpr(access.expression);
506
+ const receiver = lowerer.lowerExprExpecting(access.expression, receiverIr);
510
507
  const offset = lowerer.lowerExprExpecting(call.arguments[0], F64);
511
508
  const sign = { kind: "boolLit", value: dvBigGetter.sign, type: BOOL, loc };
512
509
  const le = call.arguments[1]
@@ -520,7 +517,7 @@ export function lowerBytesMethodCall(lowerer, call, access) {
520
517
  if (nArgs < 1 || nArgs > maxArgs) {
521
518
  lowerer.noLowering(`.${name} with ${nArgs} arguments`, call);
522
519
  }
523
- const receiver = lowerer.lowerExpr(access.expression);
520
+ const receiver = lowerer.lowerExprExpecting(access.expression, receiverIr);
524
521
  const args = [lowerer.lowerExprExpecting(call.arguments[0], F64)];
525
522
  if (nArgs === 2)
526
523
  args.push(lowerer.lowerExprExpecting(call.arguments[1], BOOL));
@@ -536,7 +533,7 @@ export function lowerBytesMethodCall(lowerer, call, access) {
536
533
  if ((name === "setBigUint64" || name === "setBigInt64") && receiverIr.elem === "u8") {
537
534
  if (nArgs < 2 || nArgs > 3)
538
535
  lowerer.noLowering(`.${name} with ${nArgs} arguments`, call);
539
- const receiver = lowerer.lowerExpr(access.expression);
536
+ const receiver = lowerer.lowerExprExpecting(access.expression, receiverIr);
540
537
  const offset = lowerer.lowerExprExpecting(call.arguments[0], F64);
541
538
  const value = lowerer.lowerExprExpecting(call.arguments[1], BIGINT_T);
542
539
  const le = call.arguments[2]
@@ -549,7 +546,7 @@ export function lowerBytesMethodCall(lowerer, call, access) {
549
546
  if (nArgs < 2 || nArgs > maxArgs) {
550
547
  lowerer.noLowering(`.${name} with ${nArgs} arguments`, call);
551
548
  }
552
- const receiver = lowerer.lowerExpr(access.expression);
549
+ const receiver = lowerer.lowerExprExpecting(access.expression, receiverIr);
553
550
  const args = [
554
551
  lowerer.lowerExprExpecting(call.arguments[0], F64),
555
552
  lowerer.lowerExprExpecting(call.arguments[1], F64),
@@ -593,31 +590,6 @@ export function bufEncoding(lowerer, what, encNode) {
593
590
  }
594
591
  return v;
595
592
  }
596
- /** The fixed-width Buffer numeric methods by source name → the readNum/
597
- * writeNum kind token. Node declares BOTH capitalizations ("UInt" is the
598
- * original, "Uint" the aliased spelling) — the tables carry both. */
599
- const BUF_NUM_METHODS = (() => {
600
- const out = {};
601
- for (const rw of ["read", "write"]) {
602
- for (const u of ["UInt", "Uint"]) {
603
- out[`${rw}${u}8`] = "u8";
604
- out[`${rw}${u}16BE`] = "u16be";
605
- out[`${rw}${u}16LE`] = "u16le";
606
- out[`${rw}${u}32BE`] = "u32be";
607
- out[`${rw}${u}32LE`] = "u32le";
608
- }
609
- out[`${rw}Int8`] = "i8";
610
- out[`${rw}Int16BE`] = "i16be";
611
- out[`${rw}Int16LE`] = "i16le";
612
- out[`${rw}Int32BE`] = "i32be";
613
- out[`${rw}Int32LE`] = "i32le";
614
- out[`${rw}FloatBE`] = "f32be";
615
- out[`${rw}FloatLE`] = "f32le";
616
- out[`${rw}DoubleBE`] = "f64be";
617
- out[`${rw}DoubleLE`] = "f64le";
618
- }
619
- return out;
620
- })();
621
593
  const BUF_BIGINT_METHODS = {
622
594
  readBigInt64BE: { sign: true, le: false },
623
595
  readBigInt64LE: { sign: true, le: true },
@@ -691,12 +663,12 @@ function lowerBufferInstanceMethod(lowerer, call, access, name, loc) {
691
663
  lowerer.noLowering(`.equals with ${nArgs} arguments`, call);
692
664
  if (argIrKind(0)?.kind === "bytes") {
693
665
  const other = u8Arg(0);
694
- const receiver = lowerer.lowerExpr(access.expression);
666
+ const receiver = lowerer.lowerExprExpecting(access.expression, BYTES_U8);
695
667
  return { kind: "bytesIntrinsic", method: "equals", receiver, args: [other], type: BOOL, loc };
696
668
  }
697
669
  // Not statically bytes (the invalid-input probes, untyped JS
698
670
  // helpers): Node's "otherBuffer" argument ladder runs at runtime.
699
- const receiver = lowerer.lowerExpr(access.expression);
671
+ const receiver = lowerer.lowerExprExpecting(access.expression, BYTES_U8);
700
672
  return { kind: "libCall", fn: "bytes.equalsChk", args: [receiver, chkArg(0)], type: BOOL, loc };
701
673
  }
702
674
  if (name === "compare") {
@@ -708,14 +680,14 @@ function lowerBufferInstanceMethod(lowerer, call, access, name, loc) {
708
680
  if (fast) {
709
681
  const target = u8Arg(0);
710
682
  const idx = call.arguments.slice(1).map((a) => lowerer.lowerExprExpecting(a, F64));
711
- const receiver = lowerer.lowerExpr(access.expression);
683
+ const receiver = lowerer.lowerExprExpecting(access.expression, BYTES_U8);
712
684
  return { kind: "bytesIntrinsic", method: "compareBuf", receiver, args: [target, ...idx], type: F64, loc };
713
685
  }
714
686
  // An absent/ill-typed target or offset (`a.compare()`, string
715
687
  // offsets, explicit undefined): Node's target/targetStart/targetEnd/
716
688
  // sourceStart/sourceEnd ladder runs at runtime; absent slots pass
717
689
  // the undefined dyn (Node defaults apply there).
718
- const receiver = lowerer.lowerExpr(access.expression);
690
+ const receiver = lowerer.lowerExprExpecting(access.expression, BYTES_U8);
719
691
  const slots = [];
720
692
  for (let i = 0; i < 5; i++)
721
693
  slots.push(i < nArgs ? chkArg(i) : dynUndefinedExpr(loc));
@@ -740,7 +712,7 @@ function lowerBufferInstanceMethod(lowerer, call, access, name, loc) {
740
712
  }
741
713
  const resultT = name === "includes" ? BOOL : F64;
742
714
  const vT = lowerer.mapTypeOf(lowerer.typeOf(args[0]));
743
- const receiver = lowerer.lowerExpr(access.expression);
715
+ const receiver = lowerer.lowerExprExpecting(access.expression, BYTES_U8);
744
716
  if (vT?.kind === "f64") {
745
717
  // A number needle wraps & 0xFF at runtime (Buffer semantics; the
746
718
  // encoding is irrelevant, like Node).
@@ -785,7 +757,7 @@ function lowerBufferInstanceMethod(lowerer, call, access, name, loc) {
785
757
  if (receiverT?.kind !== "bytes")
786
758
  lowerer.badType(access.expression, lowerer.typeOf(access.expression));
787
759
  const vT = lowerer.mapTypeOf(lowerer.typeOf(args[0]));
788
- const receiver = lowerer.lowerExpr(access.expression);
760
+ const receiver = lowerer.lowerExprExpecting(access.expression, BYTES_U8);
789
761
  if (vT?.kind === "string") {
790
762
  const encName = encNode ? bufEncoding(lowerer, ".fill", encNode) : "utf8";
791
763
  const s = lowerer.lowerExprExpecting(args[0], STRING);
@@ -806,13 +778,13 @@ function lowerBufferInstanceMethod(lowerer, call, access, name, loc) {
806
778
  lowerer.noLowering(`.copy with ${nArgs} arguments`, call);
807
779
  const target = u8Arg(0);
808
780
  const idx = call.arguments.slice(1).map((a) => lowerer.lowerExprExpecting(a, F64));
809
- const receiver = lowerer.lowerExpr(access.expression);
781
+ const receiver = lowerer.lowerExprExpecting(access.expression, BYTES_U8);
810
782
  return { kind: "bytesIntrinsic", method: "copy", receiver, args: [target, ...idx], type: F64, loc };
811
783
  }
812
784
  if (name === "swap16" || name === "swap32" || name === "swap64") {
813
785
  if (nArgs !== 0)
814
786
  lowerer.noLowering(`.${name} with ${nArgs} arguments`, call);
815
- const receiver = lowerer.lowerExpr(access.expression);
787
+ const receiver = lowerer.lowerExprExpecting(access.expression, BYTES_U8);
816
788
  return { kind: "bytesIntrinsic", method: name, receiver, args: [], type: BYTES_U8, loc };
817
789
  }
818
790
  if (name === "write") {
@@ -835,7 +807,7 @@ function lowerBufferInstanceMethod(lowerer, call, access, name, loc) {
835
807
  ? lowerer.lowerExprExpecting(idxNodes[0], F64)
836
808
  : { kind: "numLit", value: 0, type: F64, loc };
837
809
  const writeArgs = [s, enc, offset, ...(idxNodes[1] ? [lowerer.lowerExprExpecting(idxNodes[1], F64)] : [])];
838
- const receiver = lowerer.lowerExpr(access.expression);
810
+ const receiver = lowerer.lowerExprExpecting(access.expression, BYTES_U8);
839
811
  return { kind: "bytesIntrinsic", method: "writeStr", receiver, args: writeArgs, type: F64, loc };
840
812
  }
841
813
  return null;
@@ -902,6 +874,14 @@ function knownBufferProducer(lowerer, source, seen = new Set()) {
902
874
  return type?.kind === "cryptoHash" || type?.kind === "cryptoHmac";
903
875
  }
904
876
  export function lowerBufferStaticCall(lowerer, call, access) {
877
+ const value = lowerBufferStaticValue(lowerer, call, access);
878
+ // Every byte-valued Buffer factory creates a distinct view. Preserve its
879
+ // brand even when stored as Uint8Array or passed through checked values.
880
+ return value?.type.kind === "bytes"
881
+ ? { kind: "libCall", fn: "buffer.brand", args: [value], type: value.type, loc: value.loc }
882
+ : value;
883
+ }
884
+ function lowerBufferStaticValue(lowerer, call, access) {
905
885
  if (call.questionDotToken || access.questionDotToken)
906
886
  return null;
907
887
  if (!lowerer.isStdlibGlobal(access.expression, "Buffer"))
@@ -910,6 +890,10 @@ export function lowerBufferStaticCall(lowerer, call, access) {
910
890
  const loc = locOf(call);
911
891
  const args = call.arguments;
912
892
  if (member === "from") {
893
+ if (args.length >= 1 && args.length <= 3 && !args.some(ts.isSpreadElement) &&
894
+ lowerer.typeOf(args[0]).getSymbol()?.name === "ArrayBuffer") {
895
+ return lowerArrayBufferView(lowerer, args, "u8", loc);
896
+ }
913
897
  // Buffer.from(x.buffer[, byteOffset[, length]]): a u8 VIEW sharing
914
898
  // x's storage (Node shares the ArrayBuffer; length is in BYTES).
915
899
  // The first argument must be the SYNTACTIC `.buffer` of a typed
@@ -926,7 +910,7 @@ export function lowerBufferStaticCall(lowerer, call, access) {
926
910
  return { kind: "bytesIntrinsic", method: "dataViewNew", receiver, args: idxArgs, type: BYTES_U8, loc };
927
911
  }
928
912
  }
929
- if (args.length >= 1 && args.length <= 2 && !ts.isSpreadElement(args[0])) {
913
+ if (args.length >= 1 && args.length <= 2 && !args.some(ts.isSpreadElement)) {
930
914
  const argNode = args[0];
931
915
  if (ts.isArrayLiteralExpression(argNode) && !argNode.elements.some(ts.isSpreadElement)) {
932
916
  // A number[] literal (contextually typed by the lib's readonly
@@ -939,24 +923,32 @@ export function lowerBufferStaticCall(lowerer, call, access) {
939
923
  }
940
924
  else {
941
925
  const srcIr = lowerer.mapTypeOf(lowerer.typeOf(argNode));
926
+ const value = lowerer.lowerExpr(argNode);
927
+ // JS callback storage can be native DYN even when the checker
928
+ // reports any (or a narrowed Buffer). Dispatch on its actual ABI.
929
+ if (value.type.kind === "dyn") {
930
+ const encName = args[1] ? bufEncoding(lowerer, "Buffer.from", args[1]) : "utf8";
931
+ const enc = { kind: "strLit", value: encName, type: STRING, loc };
932
+ return { kind: "libCall", fn: "buffer.fromDyn", args: [value, enc], type: BYTES_U8, loc };
933
+ }
942
934
  if (srcIr?.kind === "string") {
943
935
  const encNode = args[1];
944
936
  const encName = encNode ? bufEncoding(lowerer, "Buffer.from", encNode) : "utf8";
945
- const s = lowerer.lowerExprExpecting(argNode, STRING);
937
+ const s = lowerer.coerceInto(argNode, value, STRING);
946
938
  const enc = { kind: "strLit", value: encName, type: STRING, loc };
947
939
  return { kind: "libCall", fn: "buffer.fromStr", args: [s, enc], type: BYTES_U8, loc };
948
940
  }
949
941
  if (args.length === 1 && srcIr?.kind === "bytes" && srcIr.elem === "u8") {
950
- return { kind: "bytesNew", source: lowerer.lowerExpr(argNode), type: BYTES_U8, loc };
942
+ return { kind: "bytesNew", source: value, type: BYTES_U8, loc };
951
943
  }
952
944
  if (args.length === 1 && srcIr?.kind === "array" && srcIr.elem.kind === "f64") {
953
- return { kind: "bytesNew", source: lowerer.lowerExpr(argNode), type: BYTES_U8, loc };
945
+ return { kind: "bytesNew", source: value, type: BYTES_U8, loc };
954
946
  }
955
947
  }
956
948
  }
957
949
  lowerer.noLowering("Buffer.from with this argument shape", call, "supported: Buffer.from(string, encoding?) with a literal encoding, Buffer.from(u8Array) — a copy — " +
958
- "Buffer.from(number[]), or Buffer.from(x.buffer, byteOffset?, length?) — a view sharing x's " +
959
- "storage (no free-standing ArrayBuffer value exists; narrow unions first)");
950
+ "Buffer.from(number[]), or Buffer.from(arrayBuffer, byteOffset?, length?) — a view sharing " +
951
+ "the buffer's storage; narrow unions first");
960
952
  }
961
953
  if (member === "alloc" || member === "allocUnsafe") {
962
954
  const maxArgs = member === "alloc" ? 3 : 1;
@@ -1062,6 +1054,23 @@ export function lowerBufferStaticCall(lowerer, call, access) {
1062
1054
  loc,
1063
1055
  };
1064
1056
  }
1057
+ // Untyped stream chunks retain the native checked value's Buffer
1058
+ // flavor. Plain bytes are Uint8Arrays at this boundary; inspecting
1059
+ // only the bytes tag would incorrectly identify them as Buffers.
1060
+ if (v.type.kind === "dyn") {
1061
+ return { kind: "dynTest", test: "buffer", value: v, type: BOOL, loc };
1062
+ }
1063
+ // Primitive storage cannot carry a Buffer. Keep argument effects
1064
+ // even when its representation makes the answer constant.
1065
+ if (v.type.kind === "string" || v.type.kind === "f64" || v.type.kind === "bool" ||
1066
+ v.type.kind === "symbol" || v.type.kind === "bigint" || v.type.kind === "nullT" || v.type.kind === "undefinedT") {
1067
+ if (isSafeToDiscard(v))
1068
+ return { kind: "boolLit", value: false, type: BOOL, loc };
1069
+ return {
1070
+ kind: "seqExpr", stmts: [{ kind: "exprStmt", expr: v, loc: v.loc }],
1071
+ result: { kind: "boolLit", value: false, type: BOOL, loc }, type: BOOL, loc,
1072
+ };
1073
+ }
1065
1074
  if (v.type.kind === "union") {
1066
1075
  const def = lowerer.unions.get(v.type.unionId);
1067
1076
  const tag = def ? def.arms.findIndex((a) => a.kind === "bytes" && a.elem === "u8") : -1;