@scriptc/compiler 0.1.7 → 0.2.1

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