@scriptc/compiler 0.2.3 → 0.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1124) hide show
  1. package/ambient/scriptc-node-fallback.d.ts +915 -215
  2. package/ambient/scriptc-overrides.d.ts +5 -1
  3. package/ambient/scriptc.d.ts +22 -2
  4. package/dist/backend/build-cache.d.ts +4 -0
  5. package/dist/backend/build-cache.js +16 -2
  6. package/dist/backend/build-cache.js.map +1 -1
  7. package/dist/backend/cycle-analysis.js +17 -5
  8. package/dist/backend/cycle-analysis.js.map +1 -1
  9. package/dist/backend/cycle-analysis.test.js +50 -11
  10. package/dist/backend/cycle-analysis.test.js.map +1 -1
  11. package/dist/backend/debug-symbols.js.map +1 -1
  12. package/dist/backend/executable-features.js +2 -1
  13. package/dist/backend/executable-features.js.map +1 -1
  14. package/dist/backend/external-c.d.ts +13 -6
  15. package/dist/backend/external-c.js +15 -3
  16. package/dist/backend/external-c.js.map +1 -1
  17. package/dist/backend/ffi-callbacks.js +6 -9
  18. package/dist/backend/ffi-callbacks.js.map +1 -1
  19. package/dist/backend/library-identity-markers.js.map +1 -1
  20. package/dist/backend/library-pack.d.ts +1 -1
  21. package/dist/backend/library-pack.js +81 -24
  22. package/dist/backend/library-pack.js.map +1 -1
  23. package/dist/backend/link-plan-core.js +9 -2
  24. package/dist/backend/link-plan-core.js.map +1 -1
  25. package/dist/backend/link-plan.d.ts +1 -1
  26. package/dist/backend/link-plan.js +4 -5
  27. package/dist/backend/link-plan.js.map +1 -1
  28. package/dist/backend/linker.d.ts +1 -1
  29. package/dist/backend/linker.js +42 -23
  30. package/dist/backend/linker.js.map +1 -1
  31. package/dist/backend/literals.js +5 -4
  32. package/dist/backend/literals.js.map +1 -1
  33. package/dist/backend/literals.test.js +30 -5
  34. package/dist/backend/literals.test.js.map +1 -1
  35. package/dist/backend/llvm/blocks.test.js +5 -2
  36. package/dist/backend/llvm/blocks.test.js.map +1 -1
  37. package/dist/backend/llvm/borrowed-inputs.d.ts +15 -0
  38. package/dist/backend/llvm/borrowed-inputs.js +28 -0
  39. package/dist/backend/llvm/borrowed-inputs.js.map +1 -0
  40. package/dist/backend/llvm/borrowed-receivers.js +43 -19
  41. package/dist/backend/llvm/borrowed-receivers.js.map +1 -1
  42. package/dist/backend/llvm/byte-numbers.d.ts +10 -0
  43. package/dist/backend/llvm/byte-numbers.js +240 -0
  44. package/dist/backend/llvm/byte-numbers.js.map +1 -0
  45. package/dist/backend/llvm/bytes-bounds.d.ts +9 -0
  46. package/dist/backend/llvm/bytes-bounds.js +240 -0
  47. package/dist/backend/llvm/bytes-bounds.js.map +1 -0
  48. package/dist/backend/llvm/call-lifetimes.d.ts +10 -0
  49. package/dist/backend/llvm/call-lifetimes.js +83 -20
  50. package/dist/backend/llvm/call-lifetimes.js.map +1 -1
  51. package/dist/backend/llvm/call-lifetimes.test.js +203 -18
  52. package/dist/backend/llvm/call-lifetimes.test.js.map +1 -1
  53. package/dist/backend/llvm/checked-value-lifetimes.d.ts +13 -0
  54. package/dist/backend/llvm/checked-value-lifetimes.js +45 -0
  55. package/dist/backend/llvm/checked-value-lifetimes.js.map +1 -0
  56. package/dist/backend/llvm/classes.js +16 -12
  57. package/dist/backend/llvm/classes.js.map +1 -1
  58. package/dist/backend/llvm/common.js +4 -1
  59. package/dist/backend/llvm/common.js.map +1 -1
  60. package/dist/backend/llvm/counted-loops.d.ts +6 -0
  61. package/dist/backend/llvm/counted-loops.js +35 -0
  62. package/dist/backend/llvm/counted-loops.js.map +1 -0
  63. package/dist/backend/llvm/debug-info.js +33 -13
  64. package/dist/backend/llvm/debug-info.js.map +1 -1
  65. package/dist/backend/llvm/debug-info.test.js +28 -6
  66. package/dist/backend/llvm/debug-info.test.js.map +1 -1
  67. package/dist/backend/llvm/dyn.js +68 -22
  68. package/dist/backend/llvm/dyn.js.map +1 -1
  69. package/dist/backend/llvm/emitter.d.ts +34 -12
  70. package/dist/backend/llvm/emitter.js +357 -124
  71. package/dist/backend/llvm/emitter.js.map +1 -1
  72. package/dist/backend/llvm/emitter.test.js +237 -46
  73. package/dist/backend/llvm/emitter.test.js.map +1 -1
  74. package/dist/backend/llvm/expr-async.js +28 -8
  75. package/dist/backend/llvm/expr-async.js.map +1 -1
  76. package/dist/backend/llvm/expr-bytes.d.ts +4 -4
  77. package/dist/backend/llvm/expr-bytes.js +78 -36
  78. package/dist/backend/llvm/expr-bytes.js.map +1 -1
  79. package/dist/backend/llvm/expr-callbacks.js +10 -4
  80. package/dist/backend/llvm/expr-callbacks.js.map +1 -1
  81. package/dist/backend/llvm/expr-calls.js +40 -21
  82. package/dist/backend/llvm/expr-calls.js.map +1 -1
  83. package/dist/backend/llvm/expr-containers.d.ts +4 -1
  84. package/dist/backend/llvm/expr-containers.js +157 -76
  85. package/dist/backend/llvm/expr-containers.js.map +1 -1
  86. package/dist/backend/llvm/expr-context.d.ts +11 -0
  87. package/dist/backend/llvm/expr-control.js +27 -8
  88. package/dist/backend/llvm/expr-control.js.map +1 -1
  89. package/dist/backend/llvm/expr-dispatch.js +3 -1
  90. package/dist/backend/llvm/expr-dispatch.js.map +1 -1
  91. package/dist/backend/llvm/expr-dynamic.js +50 -33
  92. package/dist/backend/llvm/expr-dynamic.js.map +1 -1
  93. package/dist/backend/llvm/expr-island.js +26 -6
  94. package/dist/backend/llvm/expr-island.js.map +1 -1
  95. package/dist/backend/llvm/expr-primitives.js +139 -37
  96. package/dist/backend/llvm/expr-primitives.js.map +1 -1
  97. package/dist/backend/llvm/expr-primitives.test.js +43 -1
  98. package/dist/backend/llvm/expr-primitives.test.js.map +1 -1
  99. package/dist/backend/llvm/expr-records.js +16 -9
  100. package/dist/backend/llvm/expr-records.js.map +1 -1
  101. package/dist/backend/llvm/expr-stream-bridges.js +44 -26
  102. package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
  103. package/dist/backend/llvm/expr-stream-bridges.test.js +51 -14
  104. package/dist/backend/llvm/expr-stream-bridges.test.js.map +1 -1
  105. package/dist/backend/llvm/expr-stream-callbacks.js +34 -14
  106. package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
  107. package/dist/backend/llvm/integer-values.d.ts +10 -0
  108. package/dist/backend/llvm/integer-values.js +52 -0
  109. package/dist/backend/llvm/integer-values.js.map +1 -0
  110. package/dist/backend/llvm/integer-views.d.ts +7 -0
  111. package/dist/backend/llvm/integer-views.js +83 -0
  112. package/dist/backend/llvm/integer-views.js.map +1 -0
  113. package/dist/backend/llvm/integer-views.test.d.ts +1 -0
  114. package/dist/backend/llvm/integer-views.test.js +69 -0
  115. package/dist/backend/llvm/integer-views.test.js.map +1 -0
  116. package/dist/backend/llvm/lib-abi.js +13 -4
  117. package/dist/backend/llvm/lib-abi.js.map +1 -1
  118. package/dist/backend/llvm/lib-connect.js +7 -1
  119. package/dist/backend/llvm/lib-connect.js.map +1 -1
  120. package/dist/backend/llvm/lib-datagram.js +35 -10
  121. package/dist/backend/llvm/lib-datagram.js.map +1 -1
  122. package/dist/backend/llvm/lib-dispatch.js +36 -15
  123. package/dist/backend/llvm/lib-dispatch.js.map +1 -1
  124. package/dist/backend/llvm/lib-filesystem.js +38 -23
  125. package/dist/backend/llvm/lib-filesystem.js.map +1 -1
  126. package/dist/backend/llvm/lib-http2.js +60 -15
  127. package/dist/backend/llvm/lib-http2.js.map +1 -1
  128. package/dist/backend/llvm/lib-lookup.js +12 -5
  129. package/dist/backend/llvm/lib-lookup.js.map +1 -1
  130. package/dist/backend/llvm/lib-network.js +97 -31
  131. package/dist/backend/llvm/lib-network.js.map +1 -1
  132. package/dist/backend/llvm/lib-process.js +57 -14
  133. package/dist/backend/llvm/lib-process.js.map +1 -1
  134. package/dist/backend/llvm/lib-shared.js +107 -31
  135. package/dist/backend/llvm/lib-shared.js.map +1 -1
  136. package/dist/backend/llvm/lib-stream.js +33 -14
  137. package/dist/backend/llvm/lib-stream.js.map +1 -1
  138. package/dist/backend/llvm/lib-test.js +21 -7
  139. package/dist/backend/llvm/lib-test.js.map +1 -1
  140. package/dist/backend/llvm/lib-tls.js +69 -20
  141. package/dist/backend/llvm/lib-tls.js.map +1 -1
  142. package/dist/backend/llvm/local-array-reads.d.ts +3 -4
  143. package/dist/backend/llvm/local-array-reads.js +100 -121
  144. package/dist/backend/llvm/local-array-reads.js.map +1 -1
  145. package/dist/backend/llvm/local-array-reads.test.js +379 -71
  146. package/dist/backend/llvm/local-array-reads.test.js.map +1 -1
  147. package/dist/backend/llvm/local-union-storage.d.ts +25 -0
  148. package/dist/backend/llvm/local-union-storage.js +109 -0
  149. package/dist/backend/llvm/local-union-storage.js.map +1 -0
  150. package/dist/backend/llvm/local-union-storage.test.d.ts +1 -0
  151. package/dist/backend/llvm/local-union-storage.test.js +210 -0
  152. package/dist/backend/llvm/local-union-storage.test.js.map +1 -0
  153. package/dist/backend/llvm/map-read-lifetimes.d.ts +6 -2
  154. package/dist/backend/llvm/map-read-lifetimes.js +46 -16
  155. package/dist/backend/llvm/map-read-lifetimes.js.map +1 -1
  156. package/dist/backend/llvm/map-read-lifetimes.test.js +93 -17
  157. package/dist/backend/llvm/map-read-lifetimes.test.js.map +1 -1
  158. package/dist/backend/llvm/reference-effects.d.ts +23 -0
  159. package/dist/backend/llvm/reference-effects.js +179 -0
  160. package/dist/backend/llvm/reference-effects.js.map +1 -0
  161. package/dist/backend/llvm/reference-effects.test.d.ts +1 -0
  162. package/dist/backend/llvm/reference-effects.test.js +157 -0
  163. package/dist/backend/llvm/reference-effects.test.js.map +1 -0
  164. package/dist/backend/llvm/shapes.d.ts +7 -4
  165. package/dist/backend/llvm/shapes.js +82 -22
  166. package/dist/backend/llvm/shapes.js.map +1 -1
  167. package/dist/backend/llvm/shapes.test.js +3 -1
  168. package/dist/backend/llvm/shapes.test.js.map +1 -1
  169. package/dist/backend/llvm/split.js +4 -4
  170. package/dist/backend/llvm/split.js.map +1 -1
  171. package/dist/backend/llvm/split.test.js +14 -6
  172. package/dist/backend/llvm/split.test.js.map +1 -1
  173. package/dist/backend/llvm/stack-unions.js +14 -5
  174. package/dist/backend/llvm/stack-unions.js.map +1 -1
  175. package/dist/backend/llvm/stack-unions.test.js +172 -32
  176. package/dist/backend/llvm/stack-unions.test.js.map +1 -1
  177. package/dist/backend/llvm/string-construction.d.ts +10 -0
  178. package/dist/backend/llvm/string-construction.js +38 -0
  179. package/dist/backend/llvm/string-construction.js.map +1 -0
  180. package/dist/backend/llvm/string-construction.test.d.ts +1 -0
  181. package/dist/backend/llvm/string-construction.test.js +90 -0
  182. package/dist/backend/llvm/string-construction.test.js.map +1 -0
  183. package/dist/backend/llvm/string-lifetimes.d.ts +2 -2
  184. package/dist/backend/llvm/string-lifetimes.js +19 -11
  185. package/dist/backend/llvm/string-lifetimes.js.map +1 -1
  186. package/dist/backend/llvm/string-lifetimes.test.js +127 -32
  187. package/dist/backend/llvm/string-lifetimes.test.js.map +1 -1
  188. package/dist/backend/llvm/switch-dispatch.d.ts +9 -0
  189. package/dist/backend/llvm/switch-dispatch.js +114 -0
  190. package/dist/backend/llvm/switch-dispatch.js.map +1 -0
  191. package/dist/backend/llvm/switch-dispatch.test.d.ts +1 -0
  192. package/dist/backend/llvm/switch-dispatch.test.js +83 -0
  193. package/dist/backend/llvm/switch-dispatch.test.js.map +1 -0
  194. package/dist/backend/llvm/unsupported.js.map +1 -1
  195. package/dist/backend/llvm/walkers.js +6 -3
  196. package/dist/backend/llvm/walkers.js.map +1 -1
  197. package/dist/backend/mangle.js +9 -3
  198. package/dist/backend/mangle.js.map +1 -1
  199. package/dist/backend/may-throw.js +18 -8
  200. package/dist/backend/may-throw.js.map +1 -1
  201. package/dist/backend/may-throw.test.js +118 -22
  202. package/dist/backend/may-throw.test.js.map +1 -1
  203. package/dist/backend/native/artifact-stamps.d.ts +39 -0
  204. package/dist/backend/native/artifact-stamps.js +371 -0
  205. package/dist/backend/native/artifact-stamps.js.map +1 -0
  206. package/dist/backend/native/cache-warm.d.ts +24 -0
  207. package/dist/backend/native/cache-warm.js +80 -0
  208. package/dist/backend/native/cache-warm.js.map +1 -0
  209. package/dist/backend/native/compiler-fingerprint.d.ts +19 -0
  210. package/dist/backend/native/compiler-fingerprint.js +357 -0
  211. package/dist/backend/native/compiler-fingerprint.js.map +1 -0
  212. package/dist/backend/native/contracts.d.ts +314 -0
  213. package/dist/backend/native/contracts.js +2 -0
  214. package/dist/backend/native/contracts.js.map +1 -0
  215. package/dist/backend/native/dependency-files.d.ts +5 -0
  216. package/dist/backend/native/dependency-files.js +83 -0
  217. package/dist/backend/native/dependency-files.js.map +1 -0
  218. package/dist/backend/native/driver.d.ts +50 -0
  219. package/dist/backend/native/driver.js +294 -0
  220. package/dist/backend/native/driver.js.map +1 -0
  221. package/dist/backend/native/executable.d.ts +18 -0
  222. package/dist/backend/native/executable.js +1267 -0
  223. package/dist/backend/native/executable.js.map +1 -0
  224. package/dist/backend/native/library.d.ts +2 -0
  225. package/dist/backend/native/library.js +614 -0
  226. package/dist/backend/native/library.js.map +1 -0
  227. package/dist/backend/native/linker-fingerprint.d.ts +8 -0
  228. package/dist/backend/native/linker-fingerprint.js +174 -0
  229. package/dist/backend/native/linker-fingerprint.js.map +1 -0
  230. package/dist/backend/native/object-merge.d.ts +2 -0
  231. package/dist/backend/native/object-merge.js +154 -0
  232. package/dist/backend/native/object-merge.js.map +1 -0
  233. package/dist/backend/native/process.d.ts +17 -0
  234. package/dist/backend/native/process.js +42 -0
  235. package/dist/backend/native/process.js.map +1 -0
  236. package/dist/backend/native/program-shards.d.ts +21 -0
  237. package/dist/backend/native/program-shards.js +99 -0
  238. package/dist/backend/native/program-shards.js.map +1 -0
  239. package/dist/backend/native/runtime-inputs.d.ts +12 -0
  240. package/dist/backend/native/runtime-inputs.js +163 -0
  241. package/dist/backend/native/runtime-inputs.js.map +1 -0
  242. package/dist/backend/native/runtime-inputs.test.d.ts +1 -0
  243. package/dist/backend/native/runtime-inputs.test.js +64 -0
  244. package/dist/backend/native/runtime-inputs.test.js.map +1 -0
  245. package/dist/backend/native/runtime-objects.d.ts +16 -0
  246. package/dist/backend/native/runtime-objects.js +122 -0
  247. package/dist/backend/native/runtime-objects.js.map +1 -0
  248. package/dist/backend/native/session.d.ts +12 -0
  249. package/dist/backend/native/session.js +31 -0
  250. package/dist/backend/native/session.js.map +1 -0
  251. package/dist/backend/native/tool-identity.d.ts +37 -0
  252. package/dist/backend/native/tool-identity.js +310 -0
  253. package/dist/backend/native/tool-identity.js.map +1 -0
  254. package/dist/backend/native/trace-paths.d.ts +12 -0
  255. package/dist/backend/native/trace-paths.js +73 -0
  256. package/dist/backend/native/trace-paths.js.map +1 -0
  257. package/dist/backend/native/vendor.d.ts +1 -0
  258. package/dist/backend/native/vendor.js +12 -0
  259. package/dist/backend/native/vendor.js.map +1 -0
  260. package/dist/backend/native-codegen-core.js +2 -1
  261. package/dist/backend/native-codegen-core.js.map +1 -1
  262. package/dist/backend/native-codegen.d.ts +1 -1
  263. package/dist/backend/native-codegen.js +24 -13
  264. package/dist/backend/native-codegen.js.map +1 -1
  265. package/dist/backend/native-codegen.test.js +12 -9
  266. package/dist/backend/native-codegen.test.js.map +1 -1
  267. package/dist/backend/native-link-info-core.js +9 -5
  268. package/dist/backend/native-link-info-core.js.map +1 -1
  269. package/dist/backend/native-link-info.js +14 -5
  270. package/dist/backend/native-link-info.js.map +1 -1
  271. package/dist/backend/native-link-info.test.js +58 -13
  272. package/dist/backend/native-link-info.test.js.map +1 -1
  273. package/dist/backend/native-toolchain.d.ts +17 -450
  274. package/dist/backend/native-toolchain.js +17 -3971
  275. package/dist/backend/native-toolchain.js.map +1 -1
  276. package/dist/backend/native-toolchain.test.js +103 -72
  277. package/dist/backend/native-toolchain.test.js.map +1 -1
  278. package/dist/backend/native-tools.js +27 -8
  279. package/dist/backend/native-tools.js.map +1 -1
  280. package/dist/backend/object-localize.js +17 -14
  281. package/dist/backend/object-localize.js.map +1 -1
  282. package/dist/backend/object-localize.test.js +59 -12
  283. package/dist/backend/object-localize.test.js.map +1 -1
  284. package/dist/backend/runtime-pack-core.js +96 -49
  285. package/dist/backend/runtime-pack-core.js.map +1 -1
  286. package/dist/backend/runtime-pack-native.js +5 -3
  287. package/dist/backend/runtime-pack-native.js.map +1 -1
  288. package/dist/backend/runtime-pack-targets.test.js +87 -15
  289. package/dist/backend/runtime-pack-targets.test.js.map +1 -1
  290. package/dist/backend/runtime-pack.d.ts +1 -1
  291. package/dist/backend/runtime-pack.js +11 -12
  292. package/dist/backend/runtime-pack.js.map +1 -1
  293. package/dist/backend/runtime-pack.test.js +40 -24
  294. package/dist/backend/runtime-pack.test.js.map +1 -1
  295. package/dist/backend/source-locations.js.map +1 -1
  296. package/dist/backend/source-locations.test.js +7 -2
  297. package/dist/backend/source-locations.test.js.map +1 -1
  298. package/dist/backend/target-diagnostics.js +44 -14
  299. package/dist/backend/target-diagnostics.js.map +1 -1
  300. package/dist/backend/target-diagnostics.test.js +93 -20
  301. package/dist/backend/target-diagnostics.test.js.map +1 -1
  302. package/dist/backend/targets.js +230 -86
  303. package/dist/backend/targets.js.map +1 -1
  304. package/dist/backend/targets.test.js +32 -18
  305. package/dist/backend/targets.test.js.map +1 -1
  306. package/dist/backend/toolchain-environment.js +5 -1
  307. package/dist/backend/toolchain-environment.js.map +1 -1
  308. package/dist/backend/vendor-archives.d.ts +2 -2
  309. package/dist/backend/vendor-archives.js +84 -35
  310. package/dist/backend/vendor-archives.js.map +1 -1
  311. package/dist/backend/vendor-inputs.js +13 -1
  312. package/dist/backend/vendor-inputs.js.map +1 -1
  313. package/dist/backend/warm-cache.d.ts +1 -1
  314. package/dist/backend/warm-cache.js +33 -9
  315. package/dist/backend/warm-cache.js.map +1 -1
  316. package/dist/cli/command.js +39 -9
  317. package/dist/cli/command.js.map +1 -1
  318. package/dist/cli/output-options.js +14 -4
  319. package/dist/cli/output-options.js.map +1 -1
  320. package/dist/cli/paths.js.map +1 -1
  321. package/dist/cli/wasi-runner.js.map +1 -1
  322. package/dist/compat/fetch-profile.js +36 -35
  323. package/dist/compat/fetch-profile.js.map +1 -1
  324. package/dist/coverage/report.js +16 -17
  325. package/dist/coverage/report.js.map +1 -1
  326. package/dist/coverage/surface-manifest.js +112 -26
  327. package/dist/coverage/surface-manifest.js.map +1 -1
  328. package/dist/diagnostics/diagnostic.js +55 -16
  329. package/dist/diagnostics/diagnostic.js.map +1 -1
  330. package/dist/executable/executable-cache.d.ts +1 -1
  331. package/dist/executable/executable-cache.js +78 -48
  332. package/dist/executable/executable-cache.js.map +1 -1
  333. package/dist/executable/executable-cache.test.js +75 -26
  334. package/dist/executable/executable-cache.test.js.map +1 -1
  335. package/dist/executable/prepare.js +2 -2
  336. package/dist/executable/prepare.js.map +1 -1
  337. package/dist/ffi/ffi-manifest.js +78 -20
  338. package/dist/ffi/ffi-manifest.js.map +1 -1
  339. package/dist/ffi/ffi-manifest.test.js +96 -16
  340. package/dist/ffi/ffi-manifest.test.js.map +1 -1
  341. package/dist/format-integer.js.map +1 -1
  342. package/dist/frontend/analysis.js +12 -2
  343. package/dist/frontend/analysis.js.map +1 -1
  344. package/dist/frontend/arguments-usage.js.map +1 -1
  345. package/dist/frontend/binding-source.js +9 -3
  346. package/dist/frontend/binding-source.js.map +1 -1
  347. package/dist/frontend/builtin-modules.js +46 -2
  348. package/dist/frontend/builtin-modules.js.map +1 -1
  349. package/dist/frontend/cjs-resolve.js +40 -17
  350. package/dist/frontend/cjs-resolve.js.map +1 -1
  351. package/dist/frontend/cjs-syntax.js +31 -10
  352. package/dist/frontend/cjs-syntax.js.map +1 -1
  353. package/dist/frontend/comptime-node.test.js +10 -11
  354. package/dist/frontend/comptime-node.test.js.map +1 -1
  355. package/dist/frontend/dts-paths.js +7 -3
  356. package/dist/frontend/dts-paths.js.map +1 -1
  357. package/dist/frontend/fork-target.js +17 -12
  358. package/dist/frontend/fork-target.js.map +1 -1
  359. package/dist/frontend/function-completion.js +11 -6
  360. package/dist/frontend/function-completion.js.map +1 -1
  361. package/dist/frontend/helper-tokens.js +53 -6
  362. package/dist/frontend/helper-tokens.js.map +1 -1
  363. package/dist/frontend/helper-tokens.test.js +18 -2
  364. package/dist/frontend/helper-tokens.test.js.map +1 -1
  365. package/dist/frontend/inferred-js-diagnostics.js +32 -12
  366. package/dist/frontend/inferred-js-diagnostics.js.map +1 -1
  367. package/dist/frontend/inferred-js-diagnostics.test.js +11 -15
  368. package/dist/frontend/inferred-js-diagnostics.test.js.map +1 -1
  369. package/dist/frontend/input-tracker.js +11 -11
  370. package/dist/frontend/input-tracker.js.map +1 -1
  371. package/dist/frontend/input-tracker.test.js +4 -1
  372. package/dist/frontend/input-tracker.test.js.map +1 -1
  373. package/dist/frontend/lib-contract.js +38 -9
  374. package/dist/frontend/lib-contract.js.map +1 -1
  375. package/dist/frontend/literal-values.js.map +1 -1
  376. package/dist/frontend/literal-values.test.js +28 -8
  377. package/dist/frontend/literal-values.test.js.map +1 -1
  378. package/dist/frontend/lowering/abstract-equality.js +53 -10
  379. package/dist/frontend/lowering/abstract-equality.js.map +1 -1
  380. package/dist/frontend/lowering/array-indexed-mutation.d.ts +1 -1
  381. package/dist/frontend/lowering/array-indexed-mutation.js +108 -106
  382. package/dist/frontend/lowering/array-indexed-mutation.js.map +1 -1
  383. package/dist/frontend/lowering/array-values.js +37 -14
  384. package/dist/frontend/lowering/array-values.js.map +1 -1
  385. package/dist/frontend/lowering/binding-analysis.d.ts +50 -0
  386. package/dist/frontend/lowering/binding-analysis.js +376 -0
  387. package/dist/frontend/lowering/binding-analysis.js.map +1 -0
  388. package/dist/frontend/lowering/builtin-calls.d.ts +9 -0
  389. package/dist/frontend/lowering/builtin-calls.js +60 -0
  390. package/dist/frontend/lowering/builtin-calls.js.map +1 -0
  391. package/dist/frontend/lowering/builtins/arguments.d.ts +43 -0
  392. package/dist/frontend/lowering/builtins/arguments.js +247 -0
  393. package/dist/frontend/lowering/builtins/arguments.js.map +1 -0
  394. package/dist/frontend/lowering/builtins/async-context.d.ts +52 -0
  395. package/dist/frontend/lowering/builtins/async-context.js +436 -0
  396. package/dist/frontend/lowering/builtins/async-context.js.map +1 -0
  397. package/dist/frontend/lowering/builtins/atomics.d.ts +15 -0
  398. package/dist/frontend/lowering/builtins/atomics.js +46 -0
  399. package/dist/frontend/lowering/builtins/atomics.js.map +1 -0
  400. package/dist/frontend/lowering/builtins/callable-aliases.d.ts +13 -0
  401. package/dist/frontend/lowering/builtins/callable-aliases.js +87 -0
  402. package/dist/frontend/lowering/builtins/callable-aliases.js.map +1 -0
  403. package/dist/frontend/lowering/builtins/child-process-async.d.ts +18 -0
  404. package/dist/frontend/lowering/builtins/child-process-async.js +245 -0
  405. package/dist/frontend/lowering/builtins/child-process-async.js.map +1 -0
  406. package/dist/frontend/lowering/builtins/child-process-methods.d.ts +21 -0
  407. package/dist/frontend/lowering/builtins/child-process-methods.js +362 -0
  408. package/dist/frontend/lowering/builtins/child-process-methods.js.map +1 -0
  409. package/dist/frontend/lowering/builtins/child-process-sync.d.ts +4 -0
  410. package/dist/frontend/lowering/builtins/child-process-sync.js +639 -0
  411. package/dist/frontend/lowering/builtins/child-process-sync.js.map +1 -0
  412. package/dist/frontend/lowering/builtins/child-process.d.ts +55 -0
  413. package/dist/frontend/lowering/builtins/child-process.js +669 -0
  414. package/dist/frontend/lowering/builtins/child-process.js.map +1 -0
  415. package/dist/frontend/lowering/builtins/compression.d.ts +7 -0
  416. package/dist/frontend/lowering/builtins/compression.js +115 -0
  417. package/dist/frontend/lowering/builtins/compression.js.map +1 -0
  418. package/dist/frontend/lowering/builtins/console.d.ts +10 -0
  419. package/dist/frontend/lowering/builtins/console.js +38 -0
  420. package/dist/frontend/lowering/builtins/console.js.map +1 -0
  421. package/dist/frontend/lowering/builtins/constants.d.ts +24 -0
  422. package/dist/frontend/lowering/builtins/constants.js +141 -0
  423. package/dist/frontend/lowering/builtins/constants.js.map +1 -0
  424. package/dist/frontend/lowering/builtins/crypto.d.ts +22 -0
  425. package/dist/frontend/lowering/builtins/crypto.js +517 -0
  426. package/dist/frontend/lowering/builtins/crypto.js.map +1 -0
  427. package/dist/frontend/lowering/builtins/dates.d.ts +7 -0
  428. package/dist/frontend/lowering/builtins/dates.js +101 -0
  429. package/dist/frontend/lowering/builtins/dates.js.map +1 -0
  430. package/dist/frontend/lowering/builtins/environment.d.ts +34 -0
  431. package/dist/frontend/lowering/builtins/environment.js +95 -0
  432. package/dist/frontend/lowering/builtins/environment.js.map +1 -0
  433. package/dist/frontend/lowering/builtins/errors.d.ts +14 -0
  434. package/dist/frontend/lowering/builtins/errors.js +83 -0
  435. package/dist/frontend/lowering/builtins/errors.js.map +1 -0
  436. package/dist/frontend/lowering/builtins/filesystem-calls.d.ts +32 -0
  437. package/dist/frontend/lowering/builtins/filesystem-calls.js +678 -0
  438. package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -0
  439. package/dist/frontend/lowering/builtins/filesystem.d.ts +108 -0
  440. package/dist/frontend/lowering/builtins/filesystem.js +1061 -0
  441. package/dist/frontend/lowering/builtins/filesystem.js.map +1 -0
  442. package/dist/frontend/lowering/builtins/ipc.d.ts +8 -0
  443. package/dist/frontend/lowering/builtins/ipc.js +76 -0
  444. package/dist/frontend/lowering/builtins/ipc.js.map +1 -0
  445. package/dist/frontend/lowering/builtins/json.d.ts +12 -0
  446. package/dist/frontend/lowering/builtins/json.js +387 -0
  447. package/dist/frontend/lowering/builtins/json.js.map +1 -0
  448. package/dist/frontend/lowering/builtins/module-bindings.d.ts +85 -0
  449. package/dist/frontend/lowering/builtins/module-bindings.js +346 -0
  450. package/dist/frontend/lowering/builtins/module-bindings.js.map +1 -0
  451. package/dist/frontend/lowering/builtins/module-calls.d.ts +8 -0
  452. package/dist/frontend/lowering/builtins/module-calls.js +303 -0
  453. package/dist/frontend/lowering/builtins/module-calls.js.map +1 -0
  454. package/dist/frontend/lowering/builtins/module-resolution.d.ts +38 -0
  455. package/dist/frontend/lowering/builtins/module-resolution.js +344 -0
  456. package/dist/frontend/lowering/builtins/module-resolution.js.map +1 -0
  457. package/dist/frontend/lowering/builtins/numbers.d.ts +15 -0
  458. package/dist/frontend/lowering/builtins/numbers.js +124 -0
  459. package/dist/frontend/lowering/builtins/numbers.js.map +1 -0
  460. package/dist/frontend/lowering/builtins/operating-system.d.ts +13 -0
  461. package/dist/frontend/lowering/builtins/operating-system.js +148 -0
  462. package/dist/frontend/lowering/builtins/operating-system.js.map +1 -0
  463. package/dist/frontend/lowering/builtins/performance.d.ts +13 -0
  464. package/dist/frontend/lowering/builtins/performance.js +100 -0
  465. package/dist/frontend/lowering/builtins/performance.js.map +1 -0
  466. package/dist/frontend/lowering/builtins/process.d.ts +50 -0
  467. package/dist/frontend/lowering/builtins/process.js +1138 -0
  468. package/dist/frontend/lowering/builtins/process.js.map +1 -0
  469. package/dist/frontend/lowering/builtins/promises.d.ts +14 -0
  470. package/dist/frontend/lowering/builtins/promises.js +356 -0
  471. package/dist/frontend/lowering/builtins/promises.js.map +1 -0
  472. package/dist/frontend/lowering/builtins/properties.d.ts +11 -0
  473. package/dist/frontend/lowering/builtins/properties.js +186 -0
  474. package/dist/frontend/lowering/builtins/properties.js.map +1 -0
  475. package/dist/frontend/lowering/builtins/querystring.d.ts +19 -0
  476. package/dist/frontend/lowering/builtins/querystring.js +150 -0
  477. package/dist/frontend/lowering/builtins/querystring.js.map +1 -0
  478. package/dist/frontend/lowering/builtins/readline.d.ts +13 -0
  479. package/dist/frontend/lowering/builtins/readline.js +138 -0
  480. package/dist/frontend/lowering/builtins/readline.js.map +1 -0
  481. package/dist/frontend/lowering/builtins/receiver-types.d.ts +5 -0
  482. package/dist/frontend/lowering/builtins/receiver-types.js +15 -0
  483. package/dist/frontend/lowering/builtins/receiver-types.js.map +1 -0
  484. package/dist/frontend/lowering/builtins/reflection.d.ts +13 -0
  485. package/dist/frontend/lowering/builtins/reflection.js +95 -0
  486. package/dist/frontend/lowering/builtins/reflection.js.map +1 -0
  487. package/dist/frontend/lowering/builtins/strings.d.ts +14 -0
  488. package/dist/frontend/lowering/builtins/strings.js +121 -0
  489. package/dist/frontend/lowering/builtins/strings.js.map +1 -0
  490. package/dist/frontend/lowering/builtins/text-codecs.d.ts +29 -0
  491. package/dist/frontend/lowering/builtins/text-codecs.js +590 -0
  492. package/dist/frontend/lowering/builtins/text-codecs.js.map +1 -0
  493. package/dist/frontend/lowering/builtins/timers.d.ts +22 -0
  494. package/dist/frontend/lowering/builtins/timers.js +180 -0
  495. package/dist/frontend/lowering/builtins/timers.js.map +1 -0
  496. package/dist/frontend/lowering/builtins/url.d.ts +37 -0
  497. package/dist/frontend/lowering/builtins/url.js +596 -0
  498. package/dist/frontend/lowering/builtins/url.js.map +1 -0
  499. package/dist/frontend/lowering/builtins/util-types.d.ts +7 -0
  500. package/dist/frontend/lowering/builtins/util-types.js +31 -0
  501. package/dist/frontend/lowering/builtins/util-types.js.map +1 -0
  502. package/dist/frontend/lowering/call-arguments.d.ts +72 -0
  503. package/dist/frontend/lowering/call-arguments.js +618 -0
  504. package/dist/frontend/lowering/call-arguments.js.map +1 -0
  505. package/dist/frontend/lowering/call-signatures.d.ts +115 -0
  506. package/dist/frontend/lowering/call-signatures.js +719 -0
  507. package/dist/frontend/lowering/call-signatures.js.map +1 -0
  508. package/dist/frontend/lowering/callback-arg.js.map +1 -1
  509. package/dist/frontend/lowering/checked-iterable-spread.js +53 -10
  510. package/dist/frontend/lowering/checked-iterable-spread.js.map +1 -1
  511. package/dist/frontend/lowering/checked-promise-all.js +41 -9
  512. package/dist/frontend/lowering/checked-promise-all.js.map +1 -1
  513. package/dist/frontend/lowering/class-callbacks.d.ts +1 -1
  514. package/dist/frontend/lowering/class-callbacks.js +130 -27
  515. package/dist/frontend/lowering/class-callbacks.js.map +1 -1
  516. package/dist/frontend/lowering/class-construction.d.ts +1 -1
  517. package/dist/frontend/lowering/class-construction.js +247 -50
  518. package/dist/frontend/lowering/class-construction.js.map +1 -1
  519. package/dist/frontend/lowering/class-descriptors.js +109 -29
  520. package/dist/frontend/lowering/class-descriptors.js.map +1 -1
  521. package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +6 -1
  522. package/dist/frontend/lowering/class-dynamic-dispatch.js +2471 -465
  523. package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
  524. package/dist/frontend/lowering/class-dynamic-dispatch.test.js +284 -44
  525. package/dist/frontend/lowering/class-dynamic-dispatch.test.js.map +1 -1
  526. package/dist/frontend/lowering/class-instance-constructor.js +17 -5
  527. package/dist/frontend/lowering/class-instance-constructor.js.map +1 -1
  528. package/dist/frontend/lowering/class-method-values.js +199 -51
  529. package/dist/frontend/lowering/class-method-values.js.map +1 -1
  530. package/dist/frontend/lowering/class-prototypes.js +345 -86
  531. package/dist/frontend/lowering/class-prototypes.js.map +1 -1
  532. package/dist/frontend/lowering/class-runtime-statics.d.ts +1 -1
  533. package/dist/frontend/lowering/class-runtime-statics.js +80 -17
  534. package/dist/frontend/lowering/class-runtime-statics.js.map +1 -1
  535. package/dist/frontend/lowering/class-static-data.js +76 -16
  536. package/dist/frontend/lowering/class-static-data.js.map +1 -1
  537. package/dist/frontend/lowering/coercions/builders.d.ts +13 -0
  538. package/dist/frontend/lowering/coercions/builders.js +77 -0
  539. package/dist/frontend/lowering/coercions/builders.js.map +1 -0
  540. package/dist/frontend/lowering/coercions/function-adapters.d.ts +58 -0
  541. package/dist/frontend/lowering/coercions/function-adapters.js +430 -0
  542. package/dist/frontend/lowering/coercions/function-adapters.js.map +1 -0
  543. package/dist/frontend/lowering/coercions/island.d.ts +37 -0
  544. package/dist/frontend/lowering/coercions/island.js +350 -0
  545. package/dist/frontend/lowering/coercions/island.js.map +1 -0
  546. package/dist/frontend/lowering/coercions/state.d.ts +14 -0
  547. package/dist/frontend/lowering/coercions/state.js +16 -0
  548. package/dist/frontend/lowering/coercions/state.js.map +1 -0
  549. package/dist/frontend/lowering/coercions/structural-plans.d.ts +40 -0
  550. package/dist/frontend/lowering/coercions/structural-plans.js +447 -0
  551. package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -0
  552. package/dist/frontend/lowering/coercions/structural.d.ts +63 -0
  553. package/dist/frontend/lowering/coercions/structural.js +616 -0
  554. package/dist/frontend/lowering/coercions/structural.js.map +1 -0
  555. package/dist/frontend/lowering/coercions/unions.d.ts +65 -0
  556. package/dist/frontend/lowering/coercions/unions.js +318 -0
  557. package/dist/frontend/lowering/coercions/unions.js.map +1 -0
  558. package/dist/frontend/lowering/collection-ingestion.js +359 -67
  559. package/dist/frontend/lowering/collection-ingestion.js.map +1 -1
  560. package/dist/frontend/lowering/containers/array-callbacks.d.ts +92 -0
  561. package/dist/frontend/lowering/containers/array-callbacks.js +1646 -0
  562. package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -0
  563. package/dist/frontend/lowering/containers/array-construction.d.ts +42 -0
  564. package/dist/frontend/lowering/containers/array-construction.js +1044 -0
  565. package/dist/frontend/lowering/containers/array-construction.js.map +1 -0
  566. package/dist/frontend/lowering/containers/array-iteration.d.ts +16 -0
  567. package/dist/frontend/lowering/containers/array-iteration.js +95 -0
  568. package/dist/frontend/lowering/containers/array-iteration.js.map +1 -0
  569. package/dist/frontend/lowering/containers/array-methods.d.ts +27 -0
  570. package/dist/frontend/lowering/containers/array-methods.js +1854 -0
  571. package/dist/frontend/lowering/containers/array-methods.js.map +1 -0
  572. package/dist/frontend/lowering/containers/bytes.d.ts +17 -17
  573. package/dist/frontend/lowering/containers/bytes.js +419 -105
  574. package/dist/frontend/lowering/containers/bytes.js.map +1 -1
  575. package/dist/frontend/lowering/containers/callback-arguments.d.ts +26 -0
  576. package/dist/frontend/lowering/containers/callback-arguments.js +179 -0
  577. package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -0
  578. package/dist/frontend/lowering/containers/collection-grouping.d.ts +19 -0
  579. package/dist/frontend/lowering/containers/collection-grouping.js +297 -0
  580. package/dist/frontend/lowering/containers/collection-grouping.js.map +1 -0
  581. package/dist/frontend/lowering/containers/collection-methods.d.ts +57 -0
  582. package/dist/frontend/lowering/containers/collection-methods.js +1314 -0
  583. package/dist/frontend/lowering/containers/collection-methods.js.map +1 -0
  584. package/dist/frontend/lowering/containers/dynamic-receivers.d.ts +18 -0
  585. package/dist/frontend/lowering/containers/dynamic-receivers.js +114 -0
  586. package/dist/frontend/lowering/containers/dynamic-receivers.js.map +1 -0
  587. package/dist/frontend/lowering/containers/for-of.d.ts +60 -0
  588. package/dist/frontend/lowering/containers/for-of.js +643 -0
  589. package/dist/frontend/lowering/containers/for-of.js.map +1 -0
  590. package/dist/frontend/lowering/containers/indexed-objects.d.ts +132 -0
  591. package/dist/frontend/lowering/containers/indexed-objects.js +1743 -0
  592. package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -0
  593. package/dist/frontend/lowering/containers/iterator-helpers.d.ts +20 -0
  594. package/dist/frontend/lowering/containers/iterator-helpers.js +809 -0
  595. package/dist/frontend/lowering/containers/iterator-helpers.js.map +1 -0
  596. package/dist/frontend/lowering/containers/string-and-regexp.js +585 -157
  597. package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
  598. package/dist/frontend/lowering/containers/string-replacement.js +213 -63
  599. package/dist/frontend/lowering/containers/string-replacement.js.map +1 -1
  600. package/dist/frontend/lowering/crypto-tables.js +263 -64
  601. package/dist/frontend/lowering/crypto-tables.js.map +1 -1
  602. package/dist/frontend/lowering/deferred-module-initializers.js +172 -68
  603. package/dist/frontend/lowering/deferred-module-initializers.js.map +1 -1
  604. package/dist/frontend/lowering/deferred-module-initializers.test.js +41 -8
  605. package/dist/frontend/lowering/deferred-module-initializers.test.js.map +1 -1
  606. package/dist/frontend/lowering/error-methods.js +339 -65
  607. package/dist/frontend/lowering/error-methods.js.map +1 -1
  608. package/dist/frontend/lowering/expressions/evaluation-safety.js +3 -2
  609. package/dist/frontend/lowering/expressions/evaluation-safety.js.map +1 -1
  610. package/dist/frontend/lowering/expressions/global-symbols.js +2 -1
  611. package/dist/frontend/lowering/expressions/global-symbols.js.map +1 -1
  612. package/dist/frontend/lowering/expressions/native-proxy.js +11 -5
  613. package/dist/frontend/lowering/expressions/native-proxy.js.map +1 -1
  614. package/dist/frontend/lowering/expressions/nullish-assignment.js +67 -13
  615. package/dist/frontend/lowering/expressions/nullish-assignment.js.map +1 -1
  616. package/dist/frontend/lowering/expressions/object-literals.js +589 -162
  617. package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
  618. package/dist/frontend/lowering/expressions/optional-chains.d.ts +1 -1
  619. package/dist/frontend/lowering/expressions/optional-chains.js +68 -17
  620. package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
  621. package/dist/frontend/lowering/expressions/union-field-write.js +45 -18
  622. package/dist/frontend/lowering/expressions/union-field-write.js.map +1 -1
  623. package/dist/frontend/lowering/function-context.js +5 -1
  624. package/dist/frontend/lowering/function-context.js.map +1 -1
  625. package/dist/frontend/lowering/function-returns.d.ts +67 -0
  626. package/dist/frontend/lowering/function-returns.js +392 -0
  627. package/dist/frontend/lowering/function-returns.js.map +1 -0
  628. package/dist/frontend/lowering/generator-delegation.d.ts +1 -1
  629. package/dist/frontend/lowering/generator-delegation.js +171 -39
  630. package/dist/frontend/lowering/generator-delegation.js.map +1 -1
  631. package/dist/frontend/lowering/generator-dynamic-dispatch.d.ts +1 -1
  632. package/dist/frontend/lowering/generator-dynamic-dispatch.js +176 -36
  633. package/dist/frontend/lowering/generator-dynamic-dispatch.js.map +1 -1
  634. package/dist/frontend/lowering/generic-functions.d.ts +274 -0
  635. package/dist/frontend/lowering/generic-functions.js +1727 -0
  636. package/dist/frontend/lowering/generic-functions.js.map +1 -0
  637. package/dist/frontend/lowering/import-meta.d.ts +1 -1
  638. package/dist/frontend/lowering/import-meta.js +37 -14
  639. package/dist/frontend/lowering/import-meta.js.map +1 -1
  640. package/dist/frontend/lowering/indexed-comparison.js +6 -2
  641. package/dist/frontend/lowering/indexed-comparison.js.map +1 -1
  642. package/dist/frontend/lowering/iterator-consumption.d.ts +9 -0
  643. package/dist/frontend/lowering/iterator-consumption.js +91 -0
  644. package/dist/frontend/lowering/iterator-consumption.js.map +1 -0
  645. package/dist/frontend/lowering/lib-boundary.js +40 -17
  646. package/dist/frontend/lowering/lib-boundary.js.map +1 -1
  647. package/dist/frontend/lowering/lib-boundary.test.js +49 -11
  648. package/dist/frontend/lowering/lib-boundary.test.js.map +1 -1
  649. package/dist/frontend/lowering/lower-array-sort.d.ts +0 -19
  650. package/dist/frontend/lowering/lower-array-sort.js +331 -566
  651. package/dist/frontend/lowering/lower-array-sort.js.map +1 -1
  652. package/dist/frontend/lowering/lower-assert.js +248 -43
  653. package/dist/frontend/lowering/lower-assert.js.map +1 -1
  654. package/dist/frontend/lowering/lower-async-iteration.js +71 -16
  655. package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
  656. package/dist/frontend/lowering/lower-builtin-values.js +420 -71
  657. package/dist/frontend/lowering/lower-builtin-values.js.map +1 -1
  658. package/dist/frontend/lowering/lower-calls.d.ts +39 -558
  659. package/dist/frontend/lowering/lower-calls.js +2593 -5667
  660. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  661. package/dist/frontend/lowering/lower-classes.d.ts +243 -242
  662. package/dist/frontend/lowering/lower-classes.js +1704 -727
  663. package/dist/frontend/lowering/lower-classes.js.map +1 -1
  664. package/dist/frontend/lowering/lower-comptime.d.ts +35 -35
  665. package/dist/frontend/lowering/lower-comptime.js +39 -37
  666. package/dist/frontend/lowering/lower-comptime.js.map +1 -1
  667. package/dist/frontend/lowering/lower-dgram.js +59 -31
  668. package/dist/frontend/lowering/lower-dgram.js.map +1 -1
  669. package/dist/frontend/lowering/lower-enums.js +5 -2
  670. package/dist/frontend/lowering/lower-enums.js.map +1 -1
  671. package/dist/frontend/lowering/lower-event-emitter.js +322 -85
  672. package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
  673. package/dist/frontend/lowering/lower-expando.js +19 -7
  674. package/dist/frontend/lowering/lower-expando.js.map +1 -1
  675. package/dist/frontend/lowering/lower-exprs.d.ts +194 -194
  676. package/dist/frontend/lowering/lower-exprs.js +3455 -1153
  677. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  678. package/dist/frontend/lowering/lower-functions.d.ts +23 -0
  679. package/dist/frontend/lowering/lower-functions.js +449 -0
  680. package/dist/frontend/lowering/lower-functions.js.map +1 -0
  681. package/dist/frontend/lowering/lower-generators.js +121 -32
  682. package/dist/frontend/lowering/lower-generators.js.map +1 -1
  683. package/dist/frontend/lowering/lower-global-value.js +15 -4
  684. package/dist/frontend/lowering/lower-global-value.js.map +1 -1
  685. package/dist/frontend/lowering/lower-inspect.js +479 -89
  686. package/dist/frontend/lowering/lower-inspect.js.map +1 -1
  687. package/dist/frontend/lowering/lower-island.d.ts +79 -79
  688. package/dist/frontend/lowering/lower-island.js +365 -273
  689. package/dist/frontend/lowering/lower-island.js.map +1 -1
  690. package/dist/frontend/lowering/lower-island.test.js +7 -2
  691. package/dist/frontend/lowering/lower-island.test.js.map +1 -1
  692. package/dist/frontend/lowering/lower-mixins.js +17 -8
  693. package/dist/frontend/lowering/lower-mixins.js.map +1 -1
  694. package/dist/frontend/lowering/lower-modules.d.ts +94 -94
  695. package/dist/frontend/lowering/lower-modules.js +612 -321
  696. package/dist/frontend/lowering/lower-modules.js.map +1 -1
  697. package/dist/frontend/lowering/lower-modules.test.js +91 -20
  698. package/dist/frontend/lowering/lower-modules.test.js.map +1 -1
  699. package/dist/frontend/lowering/lower-namespaces.js +25 -8
  700. package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
  701. package/dist/frontend/lowering/lower-node-module.js +115 -34
  702. package/dist/frontend/lowering/lower-node-module.js.map +1 -1
  703. package/dist/frontend/lowering/lower-server.js +1210 -290
  704. package/dist/frontend/lowering/lower-server.js.map +1 -1
  705. package/dist/frontend/lowering/lower-stmts.d.ts +148 -148
  706. package/dist/frontend/lowering/lower-stmts.js +2312 -984
  707. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  708. package/dist/frontend/lowering/lower-stmts.test.js +13 -5
  709. package/dist/frontend/lowering/lower-stmts.test.js.map +1 -1
  710. package/dist/frontend/lowering/lower-stream.js +362 -90
  711. package/dist/frontend/lowering/lower-stream.js.map +1 -1
  712. package/dist/frontend/lowering/lower-system-errors.js +30 -8
  713. package/dist/frontend/lowering/lower-system-errors.js.map +1 -1
  714. package/dist/frontend/lowering/lower-test.js +40 -13
  715. package/dist/frontend/lowering/lower-test.js.map +1 -1
  716. package/dist/frontend/lowering/lower-timers.d.ts +31 -0
  717. package/dist/frontend/lowering/lower-timers.js +336 -0
  718. package/dist/frontend/lowering/lower-timers.js.map +1 -0
  719. package/dist/frontend/lowering/lower-url.d.ts +1 -1
  720. package/dist/frontend/lowering/lower-url.js +46 -13
  721. package/dist/frontend/lowering/lower-url.js.map +1 -1
  722. package/dist/frontend/lowering/lowerer.d.ts +21 -351
  723. package/dist/frontend/lowering/lowerer.js +1031 -2704
  724. package/dist/frontend/lowering/lowerer.js.map +1 -1
  725. package/dist/frontend/lowering/lowerer.test.js +85 -17
  726. package/dist/frontend/lowering/lowerer.test.js.map +1 -1
  727. package/dist/frontend/lowering/module-namespace-elements.js +43 -8
  728. package/dist/frontend/lowering/module-namespace-elements.js.map +1 -1
  729. package/dist/frontend/lowering/native-ffi.d.ts +21 -1
  730. package/dist/frontend/lowering/native-ffi.js +487 -18
  731. package/dist/frontend/lowering/native-ffi.js.map +1 -1
  732. package/dist/frontend/lowering/object-enumeration-receiver.js +55 -10
  733. package/dist/frontend/lowering/object-enumeration-receiver.js.map +1 -1
  734. package/dist/frontend/lowering/object-factory-new.d.ts +1 -1
  735. package/dist/frontend/lowering/object-factory-new.js +36 -11
  736. package/dist/frontend/lowering/object-factory-new.js.map +1 -1
  737. package/dist/frontend/lowering/optional-arguments.js +49 -20
  738. package/dist/frontend/lowering/optional-arguments.js.map +1 -1
  739. package/dist/frontend/lowering/pairs-snapshot.js +66 -14
  740. package/dist/frontend/lowering/pairs-snapshot.js.map +1 -1
  741. package/dist/frontend/lowering/runtime-optional-locals.js +3 -1
  742. package/dist/frontend/lowering/runtime-optional-locals.js.map +1 -1
  743. package/dist/frontend/lowering/runtime-optional-locals.test.js.map +1 -1
  744. package/dist/frontend/lowering/sanitize-class-types.js +4 -1
  745. package/dist/frontend/lowering/sanitize-class-types.js.map +1 -1
  746. package/dist/frontend/lowering/sanitize-class-types.test.js +86 -18
  747. package/dist/frontend/lowering/sanitize-class-types.test.js.map +1 -1
  748. package/dist/frontend/lowering/static-this.js +13 -6
  749. package/dist/frontend/lowering/static-this.js.map +1 -1
  750. package/dist/frontend/lowering/string-index.js +32 -10
  751. package/dist/frontend/lowering/string-index.js.map +1 -1
  752. package/dist/frontend/lowering/surfaces.d.ts +42 -42
  753. package/dist/frontend/lowering/surfaces.js +1094 -249
  754. package/dist/frontend/lowering/surfaces.js.map +1 -1
  755. package/dist/frontend/lowering/symbol-fields.js +40 -15
  756. package/dist/frontend/lowering/symbol-fields.js.map +1 -1
  757. package/dist/frontend/lowering/symbol-methods.js.map +1 -1
  758. package/dist/frontend/lowering/text-decoder-encoding.js +236 -24
  759. package/dist/frontend/lowering/text-decoder-encoding.js.map +1 -1
  760. package/dist/frontend/lowering/text-decoder-encoding.test.js +84 -12
  761. package/dist/frontend/lowering/text-decoder-encoding.test.js.map +1 -1
  762. package/dist/frontend/lowering/union-narrow.js +59 -16
  763. package/dist/frontend/lowering/union-narrow.js.map +1 -1
  764. package/dist/frontend/lowering/union-narrow.test.js +24 -7
  765. package/dist/frontend/lowering/union-narrow.test.js.map +1 -1
  766. package/dist/frontend/lowering/union-retag.js +155 -40
  767. package/dist/frontend/lowering/union-retag.js.map +1 -1
  768. package/dist/frontend/lowering/union-retag.test.js +131 -33
  769. package/dist/frontend/lowering/union-retag.test.js.map +1 -1
  770. package/dist/frontend/lowering/unregistered-class-types.js.map +1 -1
  771. package/dist/frontend/lowering/unregistered-class-types.test.js +34 -8
  772. package/dist/frontend/lowering/unregistered-class-types.test.js.map +1 -1
  773. package/dist/frontend/module-syntax.js +21 -8
  774. package/dist/frontend/module-syntax.js.map +1 -1
  775. package/dist/frontend/module-syntax.test.js +37 -13
  776. package/dist/frontend/module-syntax.test.js.map +1 -1
  777. package/dist/frontend/npm-fetch-analysis.js +13 -4
  778. package/dist/frontend/npm-fetch-analysis.js.map +1 -1
  779. package/dist/frontend/npm-fetch-analysis.test.js +33 -10
  780. package/dist/frontend/npm-fetch-analysis.test.js.map +1 -1
  781. package/dist/frontend/npm-fetch-node.js.map +1 -1
  782. package/dist/frontend/npm-fetch-syntax.js +4 -9
  783. package/dist/frontend/npm-fetch-syntax.js.map +1 -1
  784. package/dist/frontend/npm-node.js +3 -1
  785. package/dist/frontend/npm-node.js.map +1 -1
  786. package/dist/frontend/npm-static-bundled-cjs.js +88 -29
  787. package/dist/frontend/npm-static-bundled-cjs.js.map +1 -1
  788. package/dist/frontend/npm-static-bundled-cjs.test.js +29 -10
  789. package/dist/frontend/npm-static-bundled-cjs.test.js.map +1 -1
  790. package/dist/frontend/npm-static-declaration-syntax.js +148 -56
  791. package/dist/frontend/npm-static-declaration-syntax.js.map +1 -1
  792. package/dist/frontend/npm-static-declarations.d.ts +1 -1
  793. package/dist/frontend/npm-static-declarations.js.map +1 -1
  794. package/dist/frontend/npm-static-declarations.test.js +33 -7
  795. package/dist/frontend/npm-static-declarations.test.js.map +1 -1
  796. package/dist/frontend/npm-static-prune.js +26 -12
  797. package/dist/frontend/npm-static-prune.js.map +1 -1
  798. package/dist/frontend/npm-static-prune.test.js +17 -3
  799. package/dist/frontend/npm-static-prune.test.js.map +1 -1
  800. package/dist/frontend/npm-static-rewrite-host.js +2 -3
  801. package/dist/frontend/npm-static-rewrite-host.js.map +1 -1
  802. package/dist/frontend/npm-static-rewrite-syntax.js +64 -21
  803. package/dist/frontend/npm-static-rewrite-syntax.js.map +1 -1
  804. package/dist/frontend/npm-static-rewrite.js.map +1 -1
  805. package/dist/frontend/npm-static-subtyping.js +9 -4
  806. package/dist/frontend/npm-static-subtyping.js.map +1 -1
  807. package/dist/frontend/npm-static-subtyping.test.js +30 -6
  808. package/dist/frontend/npm-static-subtyping.test.js.map +1 -1
  809. package/dist/frontend/npm-static.js +15 -4
  810. package/dist/frontend/npm-static.js.map +1 -1
  811. package/dist/frontend/npm.js +122 -36
  812. package/dist/frontend/npm.js.map +1 -1
  813. package/dist/frontend/npm.test.js +30 -10
  814. package/dist/frontend/npm.test.js.map +1 -1
  815. package/dist/frontend/pipeline-native.js.map +1 -1
  816. package/dist/frontend/pipeline.js +25 -8
  817. package/dist/frontend/pipeline.js.map +1 -1
  818. package/dist/frontend/pipeline.test.js +21 -7
  819. package/dist/frontend/pipeline.test.js.map +1 -1
  820. package/dist/frontend/program-node.js +5 -3
  821. package/dist/frontend/program-node.js.map +1 -1
  822. package/dist/frontend/program.d.ts +2 -2
  823. package/dist/frontend/program.js +234 -101
  824. package/dist/frontend/program.js.map +1 -1
  825. package/dist/frontend/program.test.js +27 -27
  826. package/dist/frontend/program.test.js.map +1 -1
  827. package/dist/frontend/provenance-core.js +8 -4
  828. package/dist/frontend/provenance-core.js.map +1 -1
  829. package/dist/frontend/provenance-registry.js +1 -4
  830. package/dist/frontend/provenance-registry.js.map +1 -1
  831. package/dist/frontend/resolve.js +32 -20
  832. package/dist/frontend/resolve.js.map +1 -1
  833. package/dist/frontend/resolve.test.js +1 -1
  834. package/dist/frontend/resolve.test.js.map +1 -1
  835. package/dist/frontend/runtime-resolve.js +13 -4
  836. package/dist/frontend/runtime-resolve.js.map +1 -1
  837. package/dist/frontend/runtime-resolve.test.js +25 -9
  838. package/dist/frontend/runtime-resolve.test.js.map +1 -1
  839. package/dist/frontend/services-node.js +6 -2
  840. package/dist/frontend/services-node.js.map +1 -1
  841. package/dist/frontend/services-node.test.js +18 -6
  842. package/dist/frontend/services-node.test.js.map +1 -1
  843. package/dist/frontend/services.js +8 -4
  844. package/dist/frontend/services.js.map +1 -1
  845. package/dist/frontend/services.test.js +6 -2
  846. package/dist/frontend/services.test.js.map +1 -1
  847. package/dist/frontend/ts7/api.js +12 -4
  848. package/dist/frontend/ts7/api.js.map +1 -1
  849. package/dist/frontend/ts7/ast-bytes.js +10 -3
  850. package/dist/frontend/ts7/ast-bytes.js.map +1 -1
  851. package/dist/frontend/ts7/ast-bytes.test.js +23 -4
  852. package/dist/frontend/ts7/ast-bytes.test.js.map +1 -1
  853. package/dist/frontend/ts7/ast-guards.test.js +14 -5
  854. package/dist/frontend/ts7/ast-guards.test.js.map +1 -1
  855. package/dist/frontend/ts7/ast-node.d.ts +6 -1
  856. package/dist/frontend/ts7/ast-node.js +484 -164
  857. package/dist/frontend/ts7/ast-node.js.map +1 -1
  858. package/dist/frontend/ts7/ast-node.test.js +109 -36
  859. package/dist/frontend/ts7/ast-node.test.js.map +1 -1
  860. package/dist/frontend/ts7/ast-text.js +13 -3
  861. package/dist/frontend/ts7/ast-text.js.map +1 -1
  862. package/dist/frontend/ts7/ast-text.test.js.map +1 -1
  863. package/dist/frontend/ts7/ast-types.js.map +1 -1
  864. package/dist/frontend/ts7/ast-wire.d.ts +1 -1
  865. package/dist/frontend/ts7/ast-wire.js +55 -20
  866. package/dist/frontend/ts7/ast-wire.js.map +1 -1
  867. package/dist/frontend/ts7/ast-wire.test.js +53 -8
  868. package/dist/frontend/ts7/ast-wire.test.js.map +1 -1
  869. package/dist/frontend/ts7/ast.js +47 -28
  870. package/dist/frontend/ts7/ast.js.map +1 -1
  871. package/dist/frontend/ts7/census-check.js +1 -1
  872. package/dist/frontend/ts7/census-check.js.map +1 -1
  873. package/dist/frontend/ts7/checker-cache.js.map +1 -1
  874. package/dist/frontend/ts7/checker.js +5 -3
  875. package/dist/frontend/ts7/checker.js.map +1 -1
  876. package/dist/frontend/ts7/checker.test.js +54 -17
  877. package/dist/frontend/ts7/checker.test.js.map +1 -1
  878. package/dist/frontend/ts7/enums.test.js +9 -4
  879. package/dist/frontend/ts7/enums.test.js.map +1 -1
  880. package/dist/frontend/ts7/native-api.js.map +1 -1
  881. package/dist/frontend/ts7/native-host.js.map +1 -1
  882. package/dist/frontend/ts7/native-process.js +9 -3
  883. package/dist/frontend/ts7/native-process.js.map +1 -1
  884. package/dist/frontend/ts7/program-adapter.js +1 -1
  885. package/dist/frontend/ts7/program-adapter.js.map +1 -1
  886. package/dist/frontend/ts7/program-host.js +7 -4
  887. package/dist/frontend/ts7/program-host.js.map +1 -1
  888. package/dist/frontend/ts7/program-host.test.js +43 -11
  889. package/dist/frontend/ts7/program-host.test.js.map +1 -1
  890. package/dist/frontend/ts7/rpc-api.js +3 -1
  891. package/dist/frontend/ts7/rpc-api.js.map +1 -1
  892. package/dist/frontend/ts7/rpc-client.js +15 -5
  893. package/dist/frontend/ts7/rpc-client.js.map +1 -1
  894. package/dist/frontend/ts7/rpc-client.test.js +26 -8
  895. package/dist/frontend/ts7/rpc-client.test.js.map +1 -1
  896. package/dist/frontend/ts7/rpc-filesystem.js.map +1 -1
  897. package/dist/frontend/ts7/rpc-filesystem.test.js +43 -10
  898. package/dist/frontend/ts7/rpc-filesystem.test.js.map +1 -1
  899. package/dist/frontend/ts7/rpc-process.js +16 -6
  900. package/dist/frontend/ts7/rpc-process.js.map +1 -1
  901. package/dist/frontend/ts7/rpc-process.test.js.map +1 -1
  902. package/dist/frontend/ts7/rpc-wire.d.ts +1 -0
  903. package/dist/frontend/ts7/rpc-wire.js +41 -14
  904. package/dist/frontend/ts7/rpc-wire.js.map +1 -1
  905. package/dist/frontend/ts7/rpc-wire.test.js +36 -6
  906. package/dist/frontend/ts7/rpc-wire.test.js.map +1 -1
  907. package/dist/frontend/ts7/semantic-checker.js +209 -68
  908. package/dist/frontend/ts7/semantic-checker.js.map +1 -1
  909. package/dist/frontend/ts7/semantic-checker.test.js +29 -14
  910. package/dist/frontend/ts7/semantic-checker.test.js.map +1 -1
  911. package/dist/frontend/ts7/semantic-json.js +7 -1
  912. package/dist/frontend/ts7/semantic-json.js.map +1 -1
  913. package/dist/frontend/ts7/semantic-json.test.js +17 -3
  914. package/dist/frontend/ts7/semantic-json.test.js.map +1 -1
  915. package/dist/frontend/ts7/semantic-model.js +147 -51
  916. package/dist/frontend/ts7/semantic-model.js.map +1 -1
  917. package/dist/frontend/ts7/semantic-model.test.js +72 -19
  918. package/dist/frontend/ts7/semantic-model.test.js.map +1 -1
  919. package/dist/frontend/ts7/semantic-types.d.ts +2 -2
  920. package/dist/frontend/ts7/session-cache.js +10 -3
  921. package/dist/frontend/ts7/session-cache.js.map +1 -1
  922. package/dist/frontend/ts7/session-cache.test.js +13 -4
  923. package/dist/frontend/ts7/session-cache.test.js.map +1 -1
  924. package/dist/frontend/ts7/session-path.js +25 -10
  925. package/dist/frontend/ts7/session-path.js.map +1 -1
  926. package/dist/frontend/ts7/session-path.test.js +47 -4
  927. package/dist/frontend/ts7/session-path.test.js.map +1 -1
  928. package/dist/frontend/ts7/session-timing.js +22 -3
  929. package/dist/frontend/ts7/session-timing.js.map +1 -1
  930. package/dist/frontend/ts7/session-timing.test.js +12 -3
  931. package/dist/frontend/ts7/session-timing.test.js.map +1 -1
  932. package/dist/frontend/ts7/session.d.ts +1 -0
  933. package/dist/frontend/ts7/session.js +109 -35
  934. package/dist/frontend/ts7/session.js.map +1 -1
  935. package/dist/frontend/ts7/session.test.js +69 -15
  936. package/dist/frontend/ts7/session.test.js.map +1 -1
  937. package/dist/frontend/ts7/source-parser.js +17 -6
  938. package/dist/frontend/ts7/source-parser.js.map +1 -1
  939. package/dist/frontend/ts7/source-parser.test.js +32 -9
  940. package/dist/frontend/ts7/source-parser.test.js.map +1 -1
  941. package/dist/frontend/tsc-codes.js +56 -11
  942. package/dist/frontend/tsc-codes.js.map +1 -1
  943. package/dist/frontend/tsc-codes.test.d.ts +1 -0
  944. package/dist/frontend/tsc-codes.test.js +16 -0
  945. package/dist/frontend/tsc-codes.test.js.map +1 -0
  946. package/dist/frontend/type-mapper.js +547 -206
  947. package/dist/frontend/type-mapper.js.map +1 -1
  948. package/dist/frontend/type-mapper.test.js +108 -33
  949. package/dist/frontend/type-mapper.test.js.map +1 -1
  950. package/dist/frontend/union-discriminants.js +8 -2
  951. package/dist/frontend/union-discriminants.js.map +1 -1
  952. package/dist/frontend/union-discriminants.test.js +77 -20
  953. package/dist/frontend/union-discriminants.test.js.map +1 -1
  954. package/dist/index.d.ts +9 -8
  955. package/dist/index.js +150 -81
  956. package/dist/index.js.map +1 -1
  957. package/dist/ir/analysis.js +97 -38
  958. package/dist/ir/analysis.js.map +1 -1
  959. package/dist/ir/analysis.test.js +91 -15
  960. package/dist/ir/analysis.test.js.map +1 -1
  961. package/dist/ir/api.d.ts +4 -0
  962. package/dist/ir/api.js +6 -0
  963. package/dist/ir/api.js.map +1 -0
  964. package/dist/ir/build.d.ts +7 -0
  965. package/dist/ir/build.js +27 -1
  966. package/dist/ir/build.js.map +1 -1
  967. package/dist/ir/builtin-effects.d.ts +9 -0
  968. package/dist/ir/builtin-effects.js +631 -0
  969. package/dist/ir/builtin-effects.js.map +1 -0
  970. package/dist/ir/builtin-signatures.d.ts +15 -0
  971. package/dist/ir/builtin-signatures.js +3396 -0
  972. package/dist/ir/builtin-signatures.js.map +1 -0
  973. package/dist/ir/byte-numbers.d.ts +20 -0
  974. package/dist/ir/byte-numbers.js +116 -0
  975. package/dist/ir/byte-numbers.js.map +1 -0
  976. package/dist/ir/byte-numbers.test.d.ts +1 -0
  977. package/dist/ir/byte-numbers.test.js +55 -0
  978. package/dist/ir/byte-numbers.test.js.map +1 -0
  979. package/dist/ir/constant-tables.js +13 -5
  980. package/dist/ir/constant-tables.js.map +1 -1
  981. package/dist/ir/constant-tables.test.js +47 -7
  982. package/dist/ir/constant-tables.test.js.map +1 -1
  983. package/dist/ir/control-flow.js +2 -1
  984. package/dist/ir/control-flow.js.map +1 -1
  985. package/dist/ir/control-flow.test.js +35 -11
  986. package/dist/ir/control-flow.test.js.map +1 -1
  987. package/dist/ir/initializer-bindings.d.ts +9 -0
  988. package/dist/ir/initializer-bindings.js +115 -0
  989. package/dist/ir/initializer-bindings.js.map +1 -0
  990. package/dist/ir/initializer-bindings.test.d.ts +1 -0
  991. package/dist/ir/initializer-bindings.test.js +118 -0
  992. package/dist/ir/initializer-bindings.test.js.map +1 -0
  993. package/dist/ir/integer-loop-facts.d.ts +12 -0
  994. package/dist/ir/integer-loop-facts.js +137 -0
  995. package/dist/ir/integer-loop-facts.js.map +1 -0
  996. package/dist/ir/integer-loops.d.ts +19 -0
  997. package/dist/ir/integer-loops.js +172 -11
  998. package/dist/ir/integer-loops.js.map +1 -1
  999. package/dist/ir/integer-loops.test.js +122 -9
  1000. package/dist/ir/integer-loops.test.js.map +1 -1
  1001. package/dist/ir/integer-ranges.d.ts +8 -6
  1002. package/dist/ir/integer-ranges.js +416 -90
  1003. package/dist/ir/integer-ranges.js.map +1 -1
  1004. package/dist/ir/integer-ranges.test.js +239 -10
  1005. package/dist/ir/integer-ranges.test.js.map +1 -1
  1006. package/dist/ir/intrinsic-signatures.d.ts +20 -0
  1007. package/dist/ir/intrinsic-signatures.js +57 -0
  1008. package/dist/ir/intrinsic-signatures.js.map +1 -0
  1009. package/dist/ir/ir.d.ts +14 -2155
  1010. package/dist/ir/ir.js +169 -1394
  1011. package/dist/ir/ir.js.map +1 -1
  1012. package/dist/ir/ir.test.js +98 -77
  1013. package/dist/ir/ir.test.js.map +1 -1
  1014. package/dist/ir/runtime-features.d.ts +221 -0
  1015. package/dist/ir/runtime-features.js +551 -0
  1016. package/dist/ir/runtime-features.js.map +1 -0
  1017. package/dist/ir/runtime-features.test.d.ts +1 -0
  1018. package/dist/ir/runtime-features.test.js +98 -0
  1019. package/dist/ir/runtime-features.test.js.map +1 -0
  1020. package/dist/ir/scalar-records.js +130 -40
  1021. package/dist/ir/scalar-records.js.map +1 -1
  1022. package/dist/ir/scalar-records.test.js +146 -27
  1023. package/dist/ir/scalar-records.test.js.map +1 -1
  1024. package/dist/ir/serialize.js +4 -2
  1025. package/dist/ir/serialize.js.map +1 -1
  1026. package/dist/ir/serialize.test.js +44 -9
  1027. package/dist/ir/serialize.test.js.map +1 -1
  1028. package/dist/ir/traverse.js +156 -43
  1029. package/dist/ir/traverse.js.map +1 -1
  1030. package/dist/ir/traverse.test.js +99 -24
  1031. package/dist/ir/traverse.test.js.map +1 -1
  1032. package/dist/ir/validate.d.ts +1 -31
  1033. package/dist/ir/validate.js +826 -1915
  1034. package/dist/ir/validate.js.map +1 -1
  1035. package/dist/ir/validate.test.js +627 -111
  1036. package/dist/ir/validate.test.js.map +1 -1
  1037. package/dist/library/cache-primitives.js +9 -10
  1038. package/dist/library/cache-primitives.js.map +1 -1
  1039. package/dist/library/cache-reset.test.js +2 -1
  1040. package/dist/library/cache-reset.test.js.map +1 -1
  1041. package/dist/library/compiler-self-identity.js +11 -5
  1042. package/dist/library/compiler-self-identity.js.map +1 -1
  1043. package/dist/library/compiler-self-identity.test.js +10 -3
  1044. package/dist/library/compiler-self-identity.test.js.map +1 -1
  1045. package/dist/library/fence-eval.js +24 -7
  1046. package/dist/library/fence-eval.js.map +1 -1
  1047. package/dist/library/fence-eval.test.js +31 -7
  1048. package/dist/library/fence-eval.test.js.map +1 -1
  1049. package/dist/library/int-infer.js +199 -59
  1050. package/dist/library/int-infer.js.map +1 -1
  1051. package/dist/library/int-infer.test.js +133 -57
  1052. package/dist/library/int-infer.test.js.map +1 -1
  1053. package/dist/library/ir-policy.d.ts +27 -0
  1054. package/dist/library/ir-policy.js +232 -0
  1055. package/dist/library/ir-policy.js.map +1 -0
  1056. package/dist/library/library-cache.js +40 -17
  1057. package/dist/library/library-cache.js.map +1 -1
  1058. package/dist/library/library-cache.test.js +24 -13
  1059. package/dist/library/library-cache.test.js.map +1 -1
  1060. package/dist/library/library-profile.js +68 -13
  1061. package/dist/library/library-profile.js.map +1 -1
  1062. package/dist/library/prepare.js +48 -20
  1063. package/dist/library/prepare.js.map +1 -1
  1064. package/dist/library/semantic-source.js +16 -14
  1065. package/dist/library/semantic-source.js.map +1 -1
  1066. package/dist/library/semantic-source.test.js +9 -14
  1067. package/dist/library/semantic-source.test.js.map +1 -1
  1068. package/dist/library/sidecar-validate.js +53 -12
  1069. package/dist/library/sidecar-validate.js.map +1 -1
  1070. package/dist/library/sidecar.js +85 -24
  1071. package/dist/library/sidecar.js.map +1 -1
  1072. package/dist/library/trap-teaching.js +11 -2
  1073. package/dist/library/trap-teaching.js.map +1 -1
  1074. package/dist/native/cache.js +10 -4
  1075. package/dist/native/cache.js.map +1 -1
  1076. package/dist/native/cli.js +34 -9
  1077. package/dist/native/cli.js.map +1 -1
  1078. package/dist/native/compiler.js +167 -43
  1079. package/dist/native/compiler.js.map +1 -1
  1080. package/dist/native/compiler.test.js +129 -32
  1081. package/dist/native/compiler.test.js.map +1 -1
  1082. package/dist/native/comptime.js +23 -7
  1083. package/dist/native/comptime.js.map +1 -1
  1084. package/dist/native/comptime.test.js +26 -6
  1085. package/dist/native/comptime.test.js.map +1 -1
  1086. package/dist/native/executable-cache.js +77 -27
  1087. package/dist/native/executable-cache.js.map +1 -1
  1088. package/dist/native/executable-cache.test.js +41 -6
  1089. package/dist/native/executable-cache.test.js.map +1 -1
  1090. package/dist/native/file-identity.js +9 -2
  1091. package/dist/native/file-identity.js.map +1 -1
  1092. package/dist/native/file-identity.test.js.map +1 -1
  1093. package/dist/native/library.js +50 -12
  1094. package/dist/native/library.js.map +1 -1
  1095. package/dist/native/prepare.js +119 -34
  1096. package/dist/native/prepare.js.map +1 -1
  1097. package/dist/native/prepare.test.js +22 -6
  1098. package/dist/native/prepare.test.js.map +1 -1
  1099. package/dist/native/runtime-typescript.js +24 -11
  1100. package/dist/native/runtime-typescript.js.map +1 -1
  1101. package/dist/native/runtime-typescript.test.js.map +1 -1
  1102. package/dist/native/sanitizer.js +71 -18
  1103. package/dist/native/sanitizer.js.map +1 -1
  1104. package/dist/native/sanitizer.test.js +77 -20
  1105. package/dist/native/sanitizer.test.js.map +1 -1
  1106. package/dist/native/task.js.map +1 -1
  1107. package/dist/native/task.test.js +7 -2
  1108. package/dist/native/task.test.js.map +1 -1
  1109. package/dist/native/toolchain.js +74 -29
  1110. package/dist/native/toolchain.js.map +1 -1
  1111. package/dist/native/toolchain.test.js +95 -18
  1112. package/dist/native/toolchain.test.js.map +1 -1
  1113. package/dist/startup-cache.d.ts +1 -1
  1114. package/dist/startup-cache.js +1 -1
  1115. package/dist/startup-cache.js.map +1 -1
  1116. package/dist/timing.js.map +1 -1
  1117. package/package.json +20 -20
  1118. package/surface-manifest.json +1 -1
  1119. package/dist/frontend/lowering/lower-builtins.d.ts +0 -601
  1120. package/dist/frontend/lowering/lower-builtins.js +0 -8984
  1121. package/dist/frontend/lowering/lower-builtins.js.map +0 -1
  1122. package/dist/frontend/lowering/lower-containers.d.ts +0 -382
  1123. package/dist/frontend/lowering/lower-containers.js +0 -7366
  1124. package/dist/frontend/lowering/lower-containers.js.map +0 -1
@@ -1,27 +1,28 @@
1
+ import { dynUndefinedExpr, nodeThrowExpr } from "../../ir/build.js";
1
2
  import { InternalCompilerError } from "../../errors.js";
2
3
  /* Island-boundary lowering: jsval marshaling into the island (jsvalIn and
3
4
  * its boundary fences), island-expression detection, the island method-call
4
5
  * surface (Math and number/string methods under --dynamic), and the npm
5
6
  * package boundary fences for node_modules-declared symbols. */
6
7
  import * as ts from "../ts7/adapter.js";
7
- import { arrayOf, BOOL, BYTES_U8, DYN, F64, JSVAL, MAX_ISLAND_CALLBACK_ARITY, STRING, VOID, canConvertToDyn, canMarshalTypedFuncIntoIsland, islandPromisePayloadTag, isUnitType } from "../../ir/ir.js";
8
- import { ISLAND_SURFACE, STATIC_MATH_FNS, STATIC_MATH_PROPS, boundaryIntoIslandMsg, stdlibGlobalNameOf } from "./surfaces.js";
9
- import { requiresDynamicApiDiag, requiresDynamicPackageDiag } from "../../diagnostics/diagnostic.js";
10
- import { esmNamedImportLinkCrash, isCjsJsFile, isJsSourceFile, locOf, npmPackageNameOf } from "../program.js";
8
+ import { arrayOf, BOOL, BYTES_U8, DYN, F64, JSVAL, MAX_ISLAND_CALLBACK_ARITY, STRING, VOID, canConvertToDyn, canMarshalTypedFuncIntoIsland, islandPromisePayloadTag, isUnitType, } from "../../ir/ir.js";
9
+ import { ISLAND_SURFACE, STATIC_MATH_FNS, STATIC_MATH_PROPS, boundaryIntoIslandMsg, stdlibGlobalNameOf, } from "./surfaces.js";
10
+ import { requiresDynamicApiDiag, requiresDynamicPackageDiag, } from "../../diagnostics/diagnostic.js";
11
+ import { esmNamedImportLinkCrash, isCjsJsFile, isJsSourceFile, locOf, npmPackageNameOf, } from "../program.js";
11
12
  import { foldedStringKeyOf, lowerDynObjectLiteral } from "./expressions/object-literals.js";
12
13
  import { isSafeToRepeat } from "./expressions/evaluation-safety.js";
13
- import { PoisonError, dynUndefinedExpr, newFnCtx, nodeThrowExpr, own } from "./lowerer.js";
14
+ import { PoisonError, newFnCtx, own } from "./lowerer.js";
14
15
  import { NODE24_FETCH_COMPAT_PROFILE, STATIC_HEADERS_CALLS, STATIC_READABLE_STREAM_CALLS, STATIC_READABLE_STREAM_READS, STATIC_RESPONSE_CALLS, STATIC_RESPONSE_READS, } from "../../compat/fetch-profile.js";
15
16
  /** True iff the checker's type for this node maps to jsval ('any') —
16
- * the island test in front of every engine-op lowering (receivers,
17
- * callees, assignment targets). ALSO true for an identifier bound to an
18
- * island-HANDLE local whose declared type says otherwise (`const {
19
- * readFileSync } = await import("fs")` — the binding's declared
20
- * function/Buffer type never held the value; the handle is the value's
21
- * only story), so its uses dispatch to engine ops instead of
22
- * re-reporting the declared type. The one exclusion is promise-mapped
23
- * declared types: a package promise held as a handle keeps its existing
24
- * checker-driven dispatch (the await/.catch bridge lowerings own it). */
17
+ * the island test in front of every engine-op lowering (receivers,
18
+ * callees, assignment targets). ALSO true for an identifier bound to an
19
+ * island-HANDLE local whose declared type says otherwise (`const {
20
+ * readFileSync } = await import("fs")` — the binding's declared
21
+ * function/Buffer type never held the value; the handle is the value's
22
+ * only story), so its uses dispatch to engine ops instead of
23
+ * re-reporting the declared type. The one exclusion is promise-mapped
24
+ * declared types: a package promise held as a handle keeps its existing
25
+ * checker-driven dispatch (the await/.catch bridge lowerings own it). */
25
26
  export function isIslandExpr(lowerer, node) {
26
27
  // Static builds cannot contain island handles. Avoid mapping entire
27
28
  // receiver/callee types (and their checker RPCs) just to prove that.
@@ -43,10 +44,10 @@ export function isIslandExpr(lowerer, node) {
43
44
  return false;
44
45
  }
45
46
  /** Marshal a static value into the island (--dynamic): primitives by
46
- * value, JSON-safe composites as a deep copy (the documented aliasing
47
- * divergence). Values with no island representation — closures, class
48
- * instances, promises, un-validated 'unknown' — are rejected with the
49
- * boundary message. */
47
+ * value, JSON-safe composites as a deep copy (the documented aliasing
48
+ * divergence). Values with no island representation — closures, class
49
+ * instances, promises, un-validated 'unknown' — are rejected with the
50
+ * boundary message. */
50
51
  /** The call-time deferral of a FUNC-value island crossing in a JS
51
52
  * source: captures the just-recorded diagnostic into the runtime-fence
52
53
  * ledger and answers a marshaled host closure that THROWS it when
@@ -78,7 +79,13 @@ export function jsvalIn(lowerer, e, node) {
78
79
  // engine's own units — unit-typed expressions are literals (units have
79
80
  // no other producers), so dropping the operand loses nothing.
80
81
  if (isUnitType(e.type)) {
81
- return { kind: "jsOp", op: e.type.kind === "undefinedT" ? "undefLit" : "nullLit", args: [], type: JSVAL, loc: e.loc };
82
+ return {
83
+ kind: "jsOp",
84
+ op: e.type.kind === "undefinedT" ? "undefLit" : "nullLit",
85
+ args: [],
86
+ type: JSVAL,
87
+ loc: e.loc,
88
+ };
82
89
  }
83
90
  if (e.type.kind === "dyn") {
84
91
  // A CHECKED-DYNAMIC value entering the island: the dyn tree
@@ -154,11 +161,11 @@ export function jsvalIn(lowerer, e, node) {
154
161
  return { kind: "jsMarshal", value: e, type: JSVAL, loc: e.loc };
155
162
  }
156
163
  /** A static RegExp value as a fresh ENGINE RegExp — `new RegExp(source,
157
- * flags)` in the island, the pattern TEXT crossing (both worlds compile
158
- * the ES-spec grammar). Literals rebuild from their own pattern/flags;
159
- * pure reads (a regex-typed binding) read the source/flags intrinsics —
160
- * the rebuild emits the operand twice, so effectful producers return
161
- * null into the caller's boundary fence. */
164
+ * flags)` in the island, the pattern TEXT crossing (both worlds compile
165
+ * the ES-spec grammar). Literals rebuild from their own pattern/flags;
166
+ * pure reads (a regex-typed binding) read the source/flags intrinsics —
167
+ * the rebuild emits the operand twice, so effectful producers return
168
+ * null into the caller's boundary fence. */
162
169
  export function islandRegexpOf(e) {
163
170
  if (e.type.kind !== "regex")
164
171
  return null;
@@ -176,7 +183,14 @@ export function islandRegexpOf(e) {
176
183
  else {
177
184
  return null;
178
185
  }
179
- const ctor = { kind: "jsOp", op: "globalGet", name: "RegExp", args: [], type: JSVAL, loc };
186
+ const ctor = {
187
+ kind: "jsOp",
188
+ op: "globalGet",
189
+ name: "RegExp",
190
+ args: [],
191
+ type: JSVAL,
192
+ loc,
193
+ };
180
194
  return {
181
195
  kind: "jsOp",
182
196
  op: "construct",
@@ -190,9 +204,9 @@ export function islandRegexpOf(e) {
190
204
  };
191
205
  }
192
206
  /** The gate on every ISLAND_SURFACE lowering: under --dynamic the caller
193
- * proceeds to engine ops; without it the use site is a per-site SC2012
194
- * (poison-recovered, so every site in the program reports — and the
195
- * coverage report groups them under "runs with --dynamic"). */
207
+ * proceeds to engine ops; without it the use site is a per-site SC2012
208
+ * (poison-recovered, so every site in the program reports — and the
209
+ * coverage report groups them under "runs with --dynamic"). */
196
210
  export function requireDynamicApi(lowerer, feature, node) {
197
211
  if (lowerer.dynamic)
198
212
  return;
@@ -200,9 +214,9 @@ export function requireDynamicApi(lowerer, feature, node) {
200
214
  throw new PoisonError();
201
215
  }
202
216
  /** Resolves an identifier to an island-backed ambient GLOBAL function
203
- * (parseFloat, isFinite). Provenance, not name: the
204
- * symbol's declaration must live in the ambient file, so a user function
205
- * named `parseFloat` never matches. */
217
+ * (parseFloat, isFinite). Provenance, not name: the
218
+ * symbol's declaration must live in the ambient file, so a user function
219
+ * named `parseFloat` never matches. */
206
220
  export function islandGlobalFnOf(lowerer, ident) {
207
221
  const entry = own(ISLAND_SURFACE.globals, ident.text);
208
222
  if (!entry)
@@ -262,8 +276,7 @@ function requestInitPropMutatedSymbols(lowerer) {
262
276
  const symbols = new Set();
263
277
  const noteBase = (target) => {
264
278
  let base = requestInitValueExpr(target);
265
- while (ts.isPropertyAccessExpression(base) ||
266
- ts.isElementAccessExpression(base)) {
279
+ while (ts.isPropertyAccessExpression(base) || ts.isElementAccessExpression(base)) {
267
280
  base = requestInitValueExpr(base.expression);
268
281
  }
269
282
  if (!ts.isIdentifier(base))
@@ -284,16 +297,13 @@ function requestInitPropMutatedSymbols(lowerer) {
284
297
  if (ts.isBinaryExpression(node) &&
285
298
  node.operatorToken.kind >= ts.SyntaxKind.FirstAssignment &&
286
299
  node.operatorToken.kind <= ts.SyntaxKind.LastAssignment &&
287
- (ts.isPropertyAccessExpression(node.left) ||
288
- ts.isElementAccessExpression(node.left))) {
300
+ (ts.isPropertyAccessExpression(node.left) || ts.isElementAccessExpression(node.left))) {
289
301
  noteBase(node.left);
290
302
  }
291
- else if ((ts.isPrefixUnaryExpression(node) ||
292
- ts.isPostfixUnaryExpression(node)) &&
303
+ else if ((ts.isPrefixUnaryExpression(node) || ts.isPostfixUnaryExpression(node)) &&
293
304
  (node.operator === ts.SyntaxKind.PlusPlusToken ||
294
305
  node.operator === ts.SyntaxKind.MinusMinusToken) &&
295
- (ts.isPropertyAccessExpression(node.operand) ||
296
- ts.isElementAccessExpression(node.operand))) {
306
+ (ts.isPropertyAccessExpression(node.operand) || ts.isElementAccessExpression(node.operand))) {
297
307
  noteBase(node.operand);
298
308
  }
299
309
  else if (ts.isDeleteExpression(node)) {
@@ -315,8 +325,8 @@ function requestInitConstBacked(lowerer, value, seen) {
315
325
  if (selected !== null) {
316
326
  return requestInitConstBacked(lowerer, selected ? expr.whenTrue : expr.whenFalse, new Set(seen));
317
327
  }
318
- return requestInitConstBacked(lowerer, expr.whenTrue, new Set(seen)) &&
319
- requestInitConstBacked(lowerer, expr.whenFalse, new Set(seen));
328
+ return (requestInitConstBacked(lowerer, expr.whenTrue, new Set(seen)) &&
329
+ requestInitConstBacked(lowerer, expr.whenFalse, new Set(seen)));
320
330
  }
321
331
  if (!ts.isIdentifier(expr))
322
332
  return false;
@@ -326,11 +336,14 @@ function requestInitConstBacked(lowerer, value, seen) {
326
336
  if (requestInitPropMutatedSymbols(lowerer).has(symbol))
327
337
  return false;
328
338
  seen.add(symbol);
329
- const declarations = lowerer.checker.declarationsOf(symbol).filter((declaration) => ts.isVariableDeclaration(declaration) &&
339
+ const declarations = lowerer.checker
340
+ .declarationsOf(symbol)
341
+ .filter((declaration) => ts.isVariableDeclaration(declaration) &&
330
342
  declaration.initializer !== undefined &&
331
343
  ts.isVariableDeclarationList(declaration.parent) &&
332
344
  (declaration.parent.flags & ts.NodeFlags.Const) !== 0);
333
- return declarations.length > 0 && declarations.every((declaration) => requestInitConstBacked(lowerer, declaration.initializer, new Set(seen)));
345
+ return (declarations.length > 0 &&
346
+ declarations.every((declaration) => requestInitConstBacked(lowerer, declaration.initializer, new Set(seen))));
334
347
  }
335
348
  /** Visit the values selected by one key or index on a const-backed object or
336
349
  * array. Property symbols can come from annotations rather than the literal
@@ -355,8 +368,7 @@ function visitRequestInitConstSelectedValues(lowerer, value, selector, seen, vis
355
368
  if (ts.isPropertyAssignment(property)) {
356
369
  visit(property.initializer);
357
370
  }
358
- else if (ts.isShorthandPropertyAssignment(property) &&
359
- ts.isIdentifier(property.name)) {
371
+ else if (ts.isShorthandPropertyAssignment(property) && ts.isIdentifier(property.name)) {
360
372
  visit(property.name);
361
373
  }
362
374
  return true;
@@ -365,9 +377,7 @@ function visitRequestInitConstSelectedValues(lowerer, value, selector, seen, vis
365
377
  }
366
378
  if (selector.kind === "index" && ts.isArrayLiteralExpression(expr)) {
367
379
  const element = expr.elements[selector.index];
368
- if (element === undefined ||
369
- ts.isOmittedExpression(element) ||
370
- ts.isSpreadElement(element)) {
380
+ if (element === undefined || ts.isOmittedExpression(element) || ts.isSpreadElement(element)) {
371
381
  return false;
372
382
  }
373
383
  visit(element);
@@ -493,15 +503,18 @@ function fenceRequestInitProperty(lowerer, access, seen) {
493
503
  if (ts.isPropertyAssignment(declaration)) {
494
504
  fenceRequestInitValueInner(lowerer, declaration.initializer, seen);
495
505
  }
496
- else if (ts.isShorthandPropertyAssignment(declaration) &&
497
- ts.isIdentifier(declaration.name)) {
506
+ else if (ts.isShorthandPropertyAssignment(declaration) && ts.isIdentifier(declaration.name)) {
498
507
  fenceRequestInitValueInner(lowerer, declaration.name, seen);
499
508
  }
500
509
  }
501
510
  }
502
511
  function fenceRequestInitObject(lowerer, init, seen) {
503
512
  const contextual = lowerer.checker.getContextualType(init);
504
- const contextualArms = contextual?.isUnionType() ? ts.constituentTypes(contextual) : contextual ? [contextual] : [];
513
+ const contextualArms = contextual?.isUnionType()
514
+ ? ts.constituentTypes(contextual)
515
+ : contextual
516
+ ? [contextual]
517
+ : [];
505
518
  const rows = NODE24_FETCH_COMPAT_PROFILE.inventory.entries.filter((entry) => entry.owner === "RequestInit" && entry.placement === "dictionary");
506
519
  const shadowed = new Set();
507
520
  const fence = (row, value, blame) => {
@@ -611,27 +624,27 @@ function fenceRequestInitValue(lowerer, value) {
611
624
  fenceRequestInitValueInner(lowerer, value, new Set());
612
625
  }
613
626
  /** USER-code `fetch(url)` / `fetch(url, init)` — the ambient global
614
- * (provenance, not the name: a user's own `fetch` never matches).
615
- *
616
- * The static tier owns URL requests directly: scr_fetch_static runs
617
- * over the native net/http/tls stack, consumes a checked-dynamic
618
- * RequestInit object, and returns a promise of an opaque native
619
- * Response handle. AbortSignal and readable Web Streams are native
620
- * checked-dynamic handles too, so cancellation and streaming bodies
621
- * stay engine-free.
622
- *
623
- * The engine's own fetch executes (the same one embedded npm code calls —
624
- * scr_fetch.c over the native net/tls stack): the url marshals in (strings; template
625
- * results), an init OBJECT LITERAL builds natively in the island through
626
- * the existing 'any'-contextual literal path (RequestInit maps to jsval,
627
- * so field values marshal individually and an AbortSignal handle passes
628
- * straight through), and the engine's promise bridges to a static
629
- * `promise of jsval` (jsBridgePromise) — `await fetch(...)` parks the
630
- * fiber like any await and resumes with the Response HANDLE. Member
631
- * reads/calls on the handle are engine ops; typed extraction happens at
632
- * the user's narrowing sites through the validated-exit machinery.
633
- * Null for anything that isn't THE ambient fetch, so lowerCall keeps
634
- * trying. */
627
+ * (provenance, not the name: a user's own `fetch` never matches).
628
+ *
629
+ * The static tier owns URL requests directly: scr_fetch_static runs
630
+ * over the native net/http/tls stack, consumes a checked-dynamic
631
+ * RequestInit object, and returns a promise of an opaque native
632
+ * Response handle. AbortSignal and readable Web Streams are native
633
+ * checked-dynamic handles too, so cancellation and streaming bodies
634
+ * stay engine-free.
635
+ *
636
+ * The engine's own fetch executes (the same one embedded npm code calls —
637
+ * scr_fetch.c over the native net/tls stack): the url marshals in (strings; template
638
+ * results), an init OBJECT LITERAL builds natively in the island through
639
+ * the existing 'any'-contextual literal path (RequestInit maps to jsval,
640
+ * so field values marshal individually and an AbortSignal handle passes
641
+ * straight through), and the engine's promise bridges to a static
642
+ * `promise of jsval` (jsBridgePromise) — `await fetch(...)` parks the
643
+ * fiber like any await and resumes with the Response HANDLE. Member
644
+ * reads/calls on the handle are engine ops; typed extraction happens at
645
+ * the user's narrowing sites through the validated-exit machinery.
646
+ * Null for anything that isn't THE ambient fetch, so lowerCall keeps
647
+ * trying. */
635
648
  export function lowerFetchCall(lowerer, call) {
636
649
  const callee = call.expression;
637
650
  if (!ts.isIdentifier(callee) || callee.text !== "fetch")
@@ -700,7 +713,9 @@ export function lowerFetchCall(lowerer, call) {
700
713
  type: STRING,
701
714
  loc: locOf(inputNode),
702
715
  }
703
- : input.type.kind === "dyn" ? inputRef : lowerer.coerceInto(inputNode, inputRef, STRING);
716
+ : input.type.kind === "dyn"
717
+ ? inputRef
718
+ : lowerer.coerceInto(inputNode, inputRef, STRING);
704
719
  const answer = {
705
720
  kind: "libCall",
706
721
  fn: input.type.kind === "dyn" ? "fetch.input" : "fetch.start",
@@ -710,7 +725,14 @@ export function lowerFetchCall(lowerer, call) {
710
725
  };
711
726
  return { kind: "seqExpr", stmts, result: answer, type: answer.type, loc };
712
727
  }
713
- const fetchFn = { kind: "jsOp", op: "globalGet", name: "fetch", args: [], type: JSVAL, loc };
728
+ const fetchFn = {
729
+ kind: "jsOp",
730
+ op: "globalGet",
731
+ name: "fetch",
732
+ args: [],
733
+ type: JSVAL,
734
+ loc,
735
+ };
714
736
  // Init OBJECT LITERALS build natively in the island (the general
715
737
  // 'any'-contextual literal path can't claim them: the optional param's
716
738
  // contextual type is `RequestInit | undefined`, a union) — field
@@ -718,7 +740,9 @@ export function lowerFetchCall(lowerer, call) {
718
740
  // through and dashed header keys ("content-type") are plain engine
719
741
  // property names. Non-literal inits marshal as a whole (JSON-safe
720
742
  // records; a signal field inside one fences with the boundary rule).
721
- const args = call.arguments.map((a) => ts.isObjectLiteralExpression(a) ? lowerIslandObjectLiteral(lowerer, a) : lowerer.jsvalIn(lowerer.lowerExpr(a), a));
743
+ const args = call.arguments.map((a) => ts.isObjectLiteralExpression(a)
744
+ ? lowerIslandObjectLiteral(lowerer, a)
745
+ : lowerer.jsvalIn(lowerer.lowerExpr(a), a));
722
746
  const raw = { kind: "jsOp", op: "callFn", args: [fetchFn, ...args], type: JSVAL, loc };
723
747
  return { kind: "jsBridgePromise", value: raw, type: { kind: "promise", inner: JSVAL }, loc };
724
748
  }
@@ -735,10 +759,7 @@ export function lowerStaticResponseCall(lowerer, call) {
735
759
  const access = call.expression;
736
760
  const member = staticResponseMemberName(lowerer, access);
737
761
  if (access.questionDotToken ||
738
- (member !== "json" &&
739
- member !== "text" &&
740
- member !== "bytes" &&
741
- member !== "arrayBuffer") ||
762
+ (member !== "json" && member !== "text" && member !== "bytes" && member !== "arrayBuffer") ||
742
763
  call.arguments.length !== 0) {
743
764
  return null;
744
765
  }
@@ -881,14 +902,10 @@ function fetchAccessMemberNames(lowerer, access) {
881
902
  : fetchElementMemberNames(lowerer, access.argumentExpression);
882
903
  }
883
904
  function fetchInventoryStatus(owner, member, placement) {
884
- return NODE24_FETCH_COMPAT_PROFILE.inventory.entries.find((entry) => entry.owner === owner &&
885
- entry.member === member &&
886
- entry.placement === placement)?.status ?? null;
905
+ return (NODE24_FETCH_COMPAT_PROFILE.inventory.entries.find((entry) => entry.owner === owner && entry.member === member && entry.placement === placement)?.status ?? null);
887
906
  }
888
907
  function fetchInventoryReason(owner, member, placement) {
889
- return NODE24_FETCH_COMPAT_PROFILE.inventory.entries.find((entry) => entry.owner === owner &&
890
- entry.member === member &&
891
- entry.placement === placement)?.reason;
908
+ return NODE24_FETCH_COMPAT_PROFILE.inventory.entries.find((entry) => entry.owner === owner && entry.member === member && entry.placement === placement)?.reason;
892
909
  }
893
910
  /** Constructor-object operations are distinct from Response instance
894
911
  * methods. The inventory marks the former unsupported in both tiers; fence
@@ -906,14 +923,13 @@ export function fenceUnsupportedFetchConstructorMember(lowerer, access) {
906
923
  lowerer.noLowering(`Response.${member}`, access, "Response static constructor-object operations have no compiler lowering in either tier");
907
924
  }
908
925
  function hasLiveWebMutableArm(lowerer, type) {
909
- if (type.kind === "record" ||
910
- type.kind === "array" ||
911
- type.kind === "bytes") {
926
+ if (type.kind === "record" || type.kind === "array" || type.kind === "bytes") {
912
927
  return true;
913
928
  }
914
929
  if (type.kind !== "union")
915
930
  return false;
916
- return lowerer.unions.get(type.unionId)?.arms.some((arm) => hasLiveWebMutableArm(lowerer, arm)) ?? false;
931
+ return (lowerer.unions.get(type.unionId)?.arms.some((arm) => hasLiveWebMutableArm(lowerer, arm)) ??
932
+ false);
917
933
  }
918
934
  /** Box mutable data for Web API slots that expose the exact JavaScript
919
935
  * value again. Ordinary dynFrom remains the documented copy boundary;
@@ -938,8 +954,7 @@ function fetchMethodArgumentIsLive(owner, members, index) {
938
954
  return ((index === 0 &&
939
955
  ((owner === "ReadableStreamDefaultController" &&
940
956
  members.some((member) => member === "enqueue" || member === "error")) ||
941
- ((owner === "ReadableStream" ||
942
- owner === "ReadableStreamDefaultReader") &&
957
+ ((owner === "ReadableStream" || owner === "ReadableStreamDefaultReader") &&
943
958
  members.includes("cancel")) ||
944
959
  (owner === "AbortController" && members.includes("abort")))) ||
945
960
  (index === 1 &&
@@ -962,9 +977,7 @@ export function fenceStaticResponseMember(lowerer, access, use) {
962
977
  if (lowerer.dynamic && members.every((member) => status(member) !== "unsupported")) {
963
978
  return null;
964
979
  }
965
- const supported = (member) => use === "call"
966
- ? STATIC_RESPONSE_CALLS.has(member)
967
- : STATIC_RESPONSE_READS.has(member);
980
+ const supported = (member) => use === "call" ? STATIC_RESPONSE_CALLS.has(member) : STATIC_RESPONSE_READS.has(member);
968
981
  if (!lowerer.dynamic && members.every(supported))
969
982
  return null;
970
983
  const member = members.find((candidate) => lowerer.dynamic ? status(candidate) === "unsupported" : !supported(candidate));
@@ -990,7 +1003,9 @@ export function fenceStaticHeadersMember(lowerer, access, use) {
990
1003
  if (lowerer.dynamic && members.every((member) => status(member) !== "unsupported")) {
991
1004
  return null;
992
1005
  }
993
- if (!lowerer.dynamic && use === "call" && members.every((member) => STATIC_HEADERS_CALLS.has(member))) {
1006
+ if (!lowerer.dynamic &&
1007
+ use === "call" &&
1008
+ members.every((member) => STATIC_HEADERS_CALLS.has(member))) {
994
1009
  return null;
995
1010
  }
996
1011
  const member = members.find((candidate) => lowerer.dynamic
@@ -1136,7 +1151,9 @@ export function fenceStaticHeadersIteration(lowerer, node) {
1136
1151
  return;
1137
1152
  // The initializer is the value being iterated. Asking for the binding
1138
1153
  // pattern's synthesized tuple type can panic in TypeScript serialization.
1139
- const source = ts.isArrayBindingPattern(node) && ts.isVariableDeclaration(node.parent) && node.parent.initializer
1154
+ const source = ts.isArrayBindingPattern(node) &&
1155
+ ts.isVariableDeclaration(node.parent) &&
1156
+ node.parent.initializer
1140
1157
  ? node.parent.initializer
1141
1158
  : node;
1142
1159
  const value = ts.isExpression(source) ? requestInitValueExpr(source) : source;
@@ -1264,8 +1281,7 @@ export function lowerFetchElementMethodCall(lowerer, call) {
1264
1281
  }
1265
1282
  const rows = members.map((member) => NODE24_FETCH_COMPAT_PROFILE.inventory.entries.find((entry) => entry.owner === resolved.owner &&
1266
1283
  entry.member === member &&
1267
- (entry.placement === "prototype" ||
1268
- entry.placement === "prototype-inherited")));
1284
+ (entry.placement === "prototype" || entry.placement === "prototype-inherited")));
1269
1285
  if (rows.some((row) => row === undefined ||
1270
1286
  row.status === "out-of-scope" ||
1271
1287
  (lowerer.dynamic ? row.status === "unsupported" : row.status !== "static"))) {
@@ -1280,9 +1296,7 @@ export function lowerFetchElementMethodCall(lowerer, call) {
1280
1296
  const loc = locOf(call);
1281
1297
  const receiverLocal = lowerer.declareHiddenLocal("%fetchReceiver", lowerer.dynamic ? JSVAL : DYN);
1282
1298
  const keyLocal = lowerer.declareHiddenLocal("%fetchMember", STRING);
1283
- const calleeLocal = lowerer.dynamic
1284
- ? lowerer.declareHiddenLocal("%fetchMethod", JSVAL)
1285
- : null;
1299
+ const calleeLocal = lowerer.dynamic ? lowerer.declareHiddenLocal("%fetchMethod", JSVAL) : null;
1286
1300
  const argumentValues = call.arguments.map((argument, index) => lowerer.dynamic
1287
1301
  ? lowerer.jsvalIn(lowerer.lowerExpr(argument), argument)
1288
1302
  : fetchMethodArgumentIsLive(resolved.owner, members, index)
@@ -1327,10 +1341,7 @@ export function lowerFetchElementMethodCall(lowerer, call) {
1327
1341
  init: {
1328
1342
  kind: "jsOp",
1329
1343
  op: "getIdx",
1330
- args: [
1331
- receiverRef,
1332
- { kind: "jsMarshal", value: keyRef, type: JSVAL, loc },
1333
- ],
1344
+ args: [receiverRef, { kind: "jsMarshal", value: keyRef, type: JSVAL, loc }],
1334
1345
  type: JSVAL,
1335
1346
  loc,
1336
1347
  },
@@ -1408,9 +1419,7 @@ export function lowerFetchElementMethodCall(lowerer, call) {
1408
1419
  }
1409
1420
  const declared = lowerer.dynamic ? lowerer.mapTypeOf(lowerer.typeOf(call)) : null;
1410
1421
  if (declared &&
1411
- (declared.kind === "f64" ||
1412
- declared.kind === "bool" ||
1413
- declared.kind === "string")) {
1422
+ (declared.kind === "f64" || declared.kind === "bool" || declared.kind === "string")) {
1414
1423
  result = { kind: "jsExit", value: result, type: declared, loc };
1415
1424
  }
1416
1425
  return {
@@ -1502,9 +1511,7 @@ function staticFirstArgWithSurplusArgs(lowerer, call, first) {
1502
1511
  type: first.type,
1503
1512
  loc,
1504
1513
  };
1505
- const stmts = [
1506
- { kind: "varDecl", localId: firstLocal.id, init: first, loc },
1507
- ];
1514
+ const stmts = [{ kind: "varDecl", localId: firstLocal.id, init: first, loc }];
1508
1515
  for (const argument of call.arguments.slice(1)) {
1509
1516
  if (ts.isSpreadElement(argument)) {
1510
1517
  lowerer.noLowering("spread surplus arguments on the static fetch companion APIs", argument, "pass surplus arguments without spread syntax");
@@ -1651,8 +1658,7 @@ export function lowerStaticAbortControllerCall(lowerer, call) {
1651
1658
  if (lowerer.dynamic ||
1652
1659
  call.questionDotToken ||
1653
1660
  call.arguments.some((argument) => ts.isSpreadElement(argument)) ||
1654
- (!ts.isPropertyAccessExpression(access) &&
1655
- !ts.isElementAccessExpression(access)) ||
1661
+ (!ts.isPropertyAccessExpression(access) && !ts.isElementAccessExpression(access)) ||
1656
1662
  access.questionDotToken ||
1657
1663
  staticResponseMemberName(lowerer, access) !== "abort") {
1658
1664
  return null;
@@ -1660,8 +1666,9 @@ export function lowerStaticAbortControllerCall(lowerer, call) {
1660
1666
  const receiverTs = lowerer.checker.getBaseTypeOfLiteralType(lowerer.typeOf(access.expression));
1661
1667
  const symbol = receiverTs.getAliasSymbol() ?? receiverTs.getSymbol();
1662
1668
  if (symbol?.name !== "AbortController" ||
1663
- !lowerer.checker.declarationsOf(symbol).some((d) => ts.isInterfaceDeclaration(d) &&
1664
- lowerer.isStdlibFile(d.getSourceFile()))) {
1669
+ !lowerer.checker
1670
+ .declarationsOf(symbol)
1671
+ .some((d) => ts.isInterfaceDeclaration(d) && lowerer.isStdlibFile(d.getSourceFile()))) {
1665
1672
  return null;
1666
1673
  }
1667
1674
  const receiver = lowerer.lowerExpr(access.expression);
@@ -1690,8 +1697,7 @@ export function lowerStaticReadableStreamControllerCall(lowerer, call) {
1690
1697
  if (lowerer.dynamic ||
1691
1698
  call.questionDotToken ||
1692
1699
  call.arguments.length > 1 ||
1693
- (!ts.isPropertyAccessExpression(access) &&
1694
- !ts.isElementAccessExpression(access)) ||
1700
+ (!ts.isPropertyAccessExpression(access) && !ts.isElementAccessExpression(access)) ||
1695
1701
  access.questionDotToken) {
1696
1702
  return null;
1697
1703
  }
@@ -1701,8 +1707,9 @@ export function lowerStaticReadableStreamControllerCall(lowerer, call) {
1701
1707
  const receiverTs = lowerer.checker.getBaseTypeOfLiteralType(lowerer.typeOf(access.expression));
1702
1708
  const symbol = receiverTs.getAliasSymbol() ?? receiverTs.getSymbol();
1703
1709
  if (symbol?.name !== "ReadableStreamDefaultController" ||
1704
- !lowerer.checker.declarationsOf(symbol).some((d) => ts.isInterfaceDeclaration(d) &&
1705
- lowerer.isStdlibFile(d.getSourceFile()))) {
1710
+ !lowerer.checker
1711
+ .declarationsOf(symbol)
1712
+ .some((d) => ts.isInterfaceDeclaration(d) && lowerer.isStdlibFile(d.getSourceFile()))) {
1706
1713
  return null;
1707
1714
  }
1708
1715
  const recv = lowerer.lowerExpr(access.expression);
@@ -1710,9 +1717,7 @@ export function lowerStaticReadableStreamControllerCall(lowerer, call) {
1710
1717
  return null;
1711
1718
  const loc = locOf(call);
1712
1719
  const args = [
1713
- call.arguments[0]
1714
- ? lowerLiveWebValue(lowerer, call.arguments[0])
1715
- : dynUndefinedExpr(loc),
1720
+ call.arguments[0] ? lowerLiveWebValue(lowerer, call.arguments[0]) : dynUndefinedExpr(loc),
1716
1721
  ];
1717
1722
  return lowerStaticFixedFetchMethodCall(lowerer, call, access, member, recv, args, (receiver, argumentRefs) => ({
1718
1723
  kind: "dynInvoke",
@@ -1733,15 +1738,13 @@ export function lowerStaticReadableStreamCancelCall(lowerer, call) {
1733
1738
  call.questionDotToken ||
1734
1739
  call.arguments.length > 1 ||
1735
1740
  call.arguments.some((argument) => ts.isSpreadElement(argument)) ||
1736
- (!ts.isPropertyAccessExpression(access) &&
1737
- !ts.isElementAccessExpression(access)) ||
1741
+ (!ts.isPropertyAccessExpression(access) && !ts.isElementAccessExpression(access)) ||
1738
1742
  access.questionDotToken ||
1739
1743
  staticResponseMemberName(lowerer, access) !== "cancel") {
1740
1744
  return null;
1741
1745
  }
1742
1746
  const resolved = fetchInterfaceInventoryOwner(lowerer, access.expression);
1743
- if (resolved?.owner !== "ReadableStream" &&
1744
- resolved?.owner !== "ReadableStreamDefaultReader") {
1747
+ if (resolved?.owner !== "ReadableStream" && resolved?.owner !== "ReadableStreamDefaultReader") {
1745
1748
  return null;
1746
1749
  }
1747
1750
  const receiver = lowerer.lowerExpr(access.expression);
@@ -1749,9 +1752,7 @@ export function lowerStaticReadableStreamCancelCall(lowerer, call) {
1749
1752
  return null;
1750
1753
  const loc = locOf(call);
1751
1754
  const args = [
1752
- call.arguments[0]
1753
- ? lowerLiveWebValue(lowerer, call.arguments[0])
1754
- : dynUndefinedExpr(loc),
1755
+ call.arguments[0] ? lowerLiveWebValue(lowerer, call.arguments[0]) : dynUndefinedExpr(loc),
1755
1756
  ];
1756
1757
  return lowerStaticFixedFetchMethodCall(lowerer, call, access, "cancel", receiver, args, (receiverRef, argumentRefs) => ({
1757
1758
  kind: "dynInvoke",
@@ -1773,8 +1774,7 @@ export function lowerStaticAbortSignalListenerCall(lowerer, call) {
1773
1774
  call.questionDotToken ||
1774
1775
  call.arguments.length < 2 ||
1775
1776
  call.arguments.some((arg) => ts.isSpreadElement(arg)) ||
1776
- (!ts.isPropertyAccessExpression(access) &&
1777
- !ts.isElementAccessExpression(access)) ||
1777
+ (!ts.isPropertyAccessExpression(access) && !ts.isElementAccessExpression(access)) ||
1778
1778
  access.questionDotToken) {
1779
1779
  return null;
1780
1780
  }
@@ -1785,17 +1785,16 @@ export function lowerStaticAbortSignalListenerCall(lowerer, call) {
1785
1785
  const receiverTs = lowerer.checker.getBaseTypeOfLiteralType(lowerer.typeOf(access.expression));
1786
1786
  const symbol = receiverTs.getAliasSymbol() ?? receiverTs.getSymbol();
1787
1787
  if (symbol?.name !== "AbortSignal" ||
1788
- !lowerer.checker.declarationsOf(symbol).some((d) => ts.isInterfaceDeclaration(d) &&
1789
- lowerer.isStdlibFile(d.getSourceFile()))) {
1788
+ !lowerer.checker
1789
+ .declarationsOf(symbol)
1790
+ .some((d) => ts.isInterfaceDeclaration(d) && lowerer.isStdlibFile(d.getSourceFile()))) {
1790
1791
  return null;
1791
1792
  }
1792
1793
  const recv = lowerer.lowerExpr(access.expression);
1793
1794
  if (recv.type.kind !== "dyn")
1794
1795
  return null;
1795
1796
  const loc = locOf(call);
1796
- const args = call.arguments.map((arg, index) => index === 1
1797
- ? lowerLiveWebValue(lowerer, arg)
1798
- : lowerer.lowerExprExpecting(arg, DYN));
1797
+ const args = call.arguments.map((arg, index) => index === 1 ? lowerLiveWebValue(lowerer, arg) : lowerer.lowerExprExpecting(arg, DYN));
1799
1798
  return lowerStaticFixedFetchMethodCall(lowerer, call, access, member, recv, args, (receiver, argumentRefs) => ({
1800
1799
  kind: "dynInvoke",
1801
1800
  recv: receiver,
@@ -1811,8 +1810,7 @@ export function lowerStaticAbortSignalListenerCall(lowerer, call) {
1811
1810
  * island Web object. JavaScript accepts surplus constructor arguments, so
1812
1811
  * both tiers evaluate them even though AbortController ignores their values. */
1813
1812
  export function lowerAbortControllerNew(lowerer, expr) {
1814
- if (!ts.isIdentifier(expr.expression) ||
1815
- expr.expression.text !== "AbortController") {
1813
+ if (!ts.isIdentifier(expr.expression) || expr.expression.text !== "AbortController") {
1816
1814
  return null;
1817
1815
  }
1818
1816
  const symbol = lowerer.resolveValueSymbol(expr.expression);
@@ -1834,7 +1832,10 @@ export function lowerAbortControllerNew(lowerer, expr) {
1834
1832
  return {
1835
1833
  kind: "jsOp",
1836
1834
  op: "construct",
1837
- args: [ctor, ...args.map((argument) => lowerer.jsvalIn(lowerer.lowerExpr(argument), argument))],
1835
+ args: [
1836
+ ctor,
1837
+ ...args.map((argument) => lowerer.jsvalIn(lowerer.lowerExpr(argument), argument)),
1838
+ ],
1838
1839
  type: JSVAL,
1839
1840
  loc,
1840
1841
  };
@@ -1864,8 +1865,7 @@ export function lowerAbortControllerNew(lowerer, expr) {
1864
1865
  * the checked-dynamic tree; dynamic builds construct the island's Web
1865
1866
  * stream directly so the returned handle composes with dynamic fetch. */
1866
1867
  export function lowerStaticReadableStreamNew(lowerer, expr) {
1867
- if (!ts.isIdentifier(expr.expression) ||
1868
- expr.expression.text !== "ReadableStream") {
1868
+ if (!ts.isIdentifier(expr.expression) || expr.expression.text !== "ReadableStream") {
1869
1869
  return null;
1870
1870
  }
1871
1871
  const symbol = lowerer.resolveValueSymbol(expr.expression);
@@ -1920,17 +1920,30 @@ export function lowerFetchWebNew(lowerer, expr) {
1920
1920
  return null;
1921
1921
  const loc = locOf(expr);
1922
1922
  if (lowerer.dynamic)
1923
- return { kind: "jsOp", op: "construct", args: [
1923
+ return {
1924
+ kind: "jsOp",
1925
+ op: "construct",
1926
+ args: [
1924
1927
  { kind: "jsOp", op: "globalGet", name, args: [], type: JSVAL, loc },
1925
1928
  ...args.map((arg) => lowerer.jsvalIn(lowerer.lowerExpr(arg), arg)),
1926
- ], type: JSVAL, loc };
1929
+ ],
1930
+ type: JSVAL,
1931
+ loc,
1932
+ };
1927
1933
  if (name === "Request" && args[1])
1928
1934
  fenceRequestInitValue(lowerer, args[1]);
1929
1935
  const lowered = args.map((arg) => ts.isObjectLiteralExpression(arg)
1930
- ? lowerDynObjectLiteral(lowerer, arg) : lowerLiveWebValue(lowerer, arg));
1931
- return { kind: "libCall", fn: name === "Request" ? "fetch.requestNew" : "fetch.headersNew",
1932
- args: name === "Request" ? [lowered[0] ?? dynUndefinedExpr(loc), lowered[1] ?? dynUndefinedExpr(loc)]
1933
- : [lowered[0] ?? dynUndefinedExpr(loc)], type: DYN, loc };
1936
+ ? lowerDynObjectLiteral(lowerer, arg)
1937
+ : lowerLiveWebValue(lowerer, arg));
1938
+ return {
1939
+ kind: "libCall",
1940
+ fn: name === "Request" ? "fetch.requestNew" : "fetch.headersNew",
1941
+ args: name === "Request"
1942
+ ? [lowered[0] ?? dynUndefinedExpr(loc), lowered[1] ?? dynUndefinedExpr(loc)]
1943
+ : [lowered[0] ?? dynUndefinedExpr(loc)],
1944
+ type: DYN,
1945
+ loc,
1946
+ };
1934
1947
  }
1935
1948
  /** `new Response(body?, init?)`. Dynamic builds construct the island's
1936
1949
  * Web Response directly. Static builds hand a checked-dynamic BodyInit and
@@ -2003,8 +2016,7 @@ export function lowerResponseNew(lowerer, expr) {
2003
2016
  }
2004
2017
  }
2005
2018
  if (value.kind === "unitLit" || lowerer.dynConvertible(value.type)) {
2006
- if (what === "an init value" &&
2007
- hasLiveWebMutableArm(lowerer, value.type)) {
2019
+ if (what === "an init value" && hasLiveWebMutableArm(lowerer, value.type)) {
2008
2020
  return {
2009
2021
  kind: "dynFrom",
2010
2022
  value,
@@ -2074,10 +2086,7 @@ export function lowerResponseNew(lowerer, expr) {
2074
2086
  const result = {
2075
2087
  kind: "libCall",
2076
2088
  fn: "fetch.responseNew",
2077
- args: [
2078
- toDyn(bodyNode, bodyRef, "a body"),
2079
- toDyn(initNode, initRef, "an init value"),
2080
- ],
2089
+ args: [toDyn(bodyNode, bodyRef, "a body"), toDyn(initNode, initRef, "an init value")],
2081
2090
  type: DYN,
2082
2091
  loc,
2083
2092
  };
@@ -2092,8 +2101,7 @@ export function lowerStaticReadableStreamReaderCall(lowerer, call) {
2092
2101
  if (lowerer.dynamic ||
2093
2102
  call.questionDotToken ||
2094
2103
  call.arguments.length !== 0 ||
2095
- (!ts.isPropertyAccessExpression(access) &&
2096
- !ts.isElementAccessExpression(access)) ||
2104
+ (!ts.isPropertyAccessExpression(access) && !ts.isElementAccessExpression(access)) ||
2097
2105
  access.questionDotToken) {
2098
2106
  return null;
2099
2107
  }
@@ -2103,13 +2111,13 @@ export function lowerStaticReadableStreamReaderCall(lowerer, call) {
2103
2111
  const receiverTs = lowerer.typeOf(access.expression);
2104
2112
  const symbol = receiverTs.getSymbol();
2105
2113
  if (symbol?.name !== "ReadableStreamDefaultReader" ||
2106
- !lowerer.checker.declarationsOf(symbol).some((d) => ts.isInterfaceDeclaration(d) &&
2107
- lowerer.isStdlibFile(d.getSourceFile()))) {
2114
+ !lowerer.checker
2115
+ .declarationsOf(symbol)
2116
+ .some((d) => ts.isInterfaceDeclaration(d) && lowerer.isStdlibFile(d.getSourceFile()))) {
2108
2117
  return null;
2109
2118
  }
2110
2119
  const type = lowerer.mapTypeOf(lowerer.typeOf(call));
2111
- if (type?.kind !== "promise" ||
2112
- type.inner.kind !== "record") {
2120
+ if (type?.kind !== "promise" || type.inner.kind !== "record") {
2113
2121
  return null;
2114
2122
  }
2115
2123
  const receiver = lowerer.lowerExprExpecting(access.expression, DYN);
@@ -2122,21 +2130,21 @@ export function lowerStaticReadableStreamReaderCall(lowerer, call) {
2122
2130
  }));
2123
2131
  }
2124
2132
  /** Literal `import(spec)` at a user site. Static builds compile program
2125
- * modules and supported Node builtins to a native Promise<moduleNs>;
2126
- * dynamic builds retain the island-backed package/module path below.
2127
- * Under --dynamic the call lowers to island.importDyn(key): the engine
2128
- * loads the module (embedded npm graph, a shipped local .js/.mjs the
2129
- * build embedded, or a builtin shim — collectDynamicImports resolved and
2130
- * embedded the specifier at collection time) and answers an ENGINE
2131
- * promise of the namespace object, bridged to a static
2132
- * `Promise<jsval>` (jsBridgePromise, the fetch precedent) — so `await
2133
- * import(x)` parks the fiber and resumes with the namespace HANDLE, and
2134
- * a load/evaluation failure crosses as a catchable rejection, exactly
2135
- * where Node puts it. Specifiers must be string literals: the module
2136
- * graph is a BUILD-time artifact — a runtime-computed name has nothing
2137
- * to embed, and the fence says so. Static builds accept compiled program
2138
- * modules and supported builtins; other execution homes report SC2012.
2139
- * Null for anything that isn't `import(...)`. */
2133
+ * modules and supported Node builtins to a native Promise<moduleNs>;
2134
+ * dynamic builds retain the island-backed package/module path below.
2135
+ * Under --dynamic the call lowers to island.importDyn(key): the engine
2136
+ * loads the module (embedded npm graph, a shipped local .js/.mjs the
2137
+ * build embedded, or a builtin shim — collectDynamicImports resolved and
2138
+ * embedded the specifier at collection time) and answers an ENGINE
2139
+ * promise of the namespace object, bridged to a static
2140
+ * `Promise<jsval>` (jsBridgePromise, the fetch precedent) — so `await
2141
+ * import(x)` parks the fiber and resumes with the namespace HANDLE, and
2142
+ * a load/evaluation failure crosses as a catchable rejection, exactly
2143
+ * where Node puts it. Specifiers must be string literals: the module
2144
+ * graph is a BUILD-time artifact — a runtime-computed name has nothing
2145
+ * to embed, and the fence says so. Static builds accept compiled program
2146
+ * modules and supported builtins; other execution homes report SC2012.
2147
+ * Null for anything that isn't `import(...)`. */
2140
2148
  export function lowerDynamicImportCall(lowerer, call) {
2141
2149
  if (call.expression.kind !== ts.SyntaxKind.ImportKeyword)
2142
2150
  return null;
@@ -2185,26 +2193,26 @@ export function lowerDynamicImportCall(lowerer, call) {
2185
2193
  return { kind: "jsBridgePromise", value: raw, type: { kind: "promise", inner: JSVAL }, loc };
2186
2194
  }
2187
2195
  /** Dynamic `import()` of one of the program's OWN modules: the compiled
2188
- * module's exports, marshaled into the engine as a namespace object.
2189
- * The site lowers to `Promise.resolve().then(<builder>)` in the engine —
2190
- * the builder is a synthesized compiled function (dynNsBuilderOf) that
2191
- * runs on the engine MICROTASK, calls the target module's run-once %init
2192
- * (Node's evaluation point for a module first reached through import():
2193
- * after the importer's synchronous code, before the .then handlers), and
2194
- * returns the exports object. Node differences (numbered divergences,
2195
- * pinned in island.test.ts): the namespace is a SNAPSHOT taken when the
2196
- * import resolves (Node's is live), a plain engine object (no Module
2197
- * toStringTag, keys still sorted like Node's, each import minting a
2198
- * fresh object where Node caches one), and exports with no island
2199
- * representation (classes, generic functions, un-marshalable
2200
- * signatures) cross as trap functions that throw a pointed TypeError
2201
- * when USED — the namespace still builds, exactly like Node still
2202
- * resolves it. */
2196
+ * module's exports, marshaled into the engine as a namespace object.
2197
+ * The site lowers to `Promise.resolve().then(<builder>)` in the engine —
2198
+ * the builder is a synthesized compiled function (dynNsBuilderOf) that
2199
+ * runs on the engine MICROTASK, calls the target module's run-once %init
2200
+ * (Node's evaluation point for a module first reached through import():
2201
+ * after the importer's synchronous code, before the .then handlers), and
2202
+ * returns the exports object. Node differences (numbered divergences,
2203
+ * pinned in island.test.ts): the namespace is a SNAPSHOT taken when the
2204
+ * import resolves (Node's is live), a plain engine object (no Module
2205
+ * toStringTag, keys still sorted like Node's, each import minting a
2206
+ * fresh object where Node caches one), and exports with no island
2207
+ * representation (classes, generic functions, un-marshalable
2208
+ * signatures) cross as trap functions that throw a pointed TypeError
2209
+ * when USED — the namespace still builds, exactly like Node still
2210
+ * resolves it. */
2203
2211
  function lowerOwnDynamicModuleImport(lowerer, call, arg) {
2204
2212
  const loc = locOf(call);
2205
2213
  let dep = null;
2206
2214
  const modSym = lowerer.checker.getSymbolAtLocation(arg);
2207
- for (const d of (modSym ? lowerer.checker.declarationsOf(modSym) : [])) {
2215
+ for (const d of modSym ? lowerer.checker.declarationsOf(modSym) : []) {
2208
2216
  if (ts.isSourceFile(d) && !d.isDeclarationFile) {
2209
2217
  dep = d;
2210
2218
  break;
@@ -2220,8 +2228,22 @@ function lowerOwnDynamicModuleImport(lowerer, call, arg) {
2220
2228
  lowerer.unsupported("SC1090", call, `dynamic import of the program's own module '${arg.text}' ` +
2221
2229
  "(this module is not part of the compiled module graph — import it statically)");
2222
2230
  }
2223
- const promiseCtor = { kind: "jsOp", op: "globalGet", name: "Promise", args: [], type: JSVAL, loc };
2224
- const resolved = { kind: "jsOp", op: "callMethod", name: "resolve", args: [promiseCtor], type: JSVAL, loc };
2231
+ const promiseCtor = {
2232
+ kind: "jsOp",
2233
+ op: "globalGet",
2234
+ name: "Promise",
2235
+ args: [],
2236
+ type: JSVAL,
2237
+ loc,
2238
+ };
2239
+ const resolved = {
2240
+ kind: "jsOp",
2241
+ op: "callMethod",
2242
+ name: "resolve",
2243
+ args: [promiseCtor],
2244
+ type: JSVAL,
2245
+ loc,
2246
+ };
2225
2247
  const builderAsync = dep !== null && lowerer.asyncInitFiles.has(dep);
2226
2248
  const builderFn = {
2227
2249
  kind: "func",
@@ -2234,23 +2256,30 @@ function lowerOwnDynamicModuleImport(lowerer, call, arg) {
2234
2256
  type: JSVAL,
2235
2257
  loc,
2236
2258
  };
2237
- const chained = { kind: "jsOp", op: "callMethod", name: "then", args: [resolved, marshaled], type: JSVAL, loc };
2259
+ const chained = {
2260
+ kind: "jsOp",
2261
+ op: "callMethod",
2262
+ name: "then",
2263
+ args: [resolved, marshaled],
2264
+ type: JSVAL,
2265
+ loc,
2266
+ };
2238
2267
  return { kind: "jsBridgePromise", value: chained, type: { kind: "promise", inner: JSVAL }, loc };
2239
2268
  }
2240
2269
  /** The checker-resolved program source behind one literal import(). */
2241
2270
  function programImportTarget(lowerer, arg) {
2242
2271
  const modSym = lowerer.checker.getSymbolAtLocation(arg);
2243
- for (const d of (modSym ? lowerer.checker.declarationsOf(modSym) : [])) {
2272
+ for (const d of modSym ? lowerer.checker.declarationsOf(modSym) : []) {
2244
2273
  if (ts.isSourceFile(d) && !d.isDeclarationFile)
2245
2274
  return d;
2246
2275
  }
2247
2276
  return null;
2248
2277
  }
2249
2278
  /** Static literal import of one compiled ESM module. The async helper's
2250
- * first operation is an await of an already-settled promise: evaluation
2251
- * therefore starts on a microtask, after the importer's synchronous
2252
- * tail, matching import(). Its result is the module's singleton nominal
2253
- * namespace token; member reads resolve separately to live exports. */
2279
+ * first operation is an await of an already-settled promise: evaluation
2280
+ * therefore starts on a microtask, after the importer's synchronous
2281
+ * tail, matching import(). Its result is the module's singleton nominal
2282
+ * namespace token; member reads resolve separately to live exports. */
2254
2283
  function lowerOwnStaticModuleImport(lowerer, call, arg) {
2255
2284
  const dep = programImportTarget(lowerer, arg);
2256
2285
  if (dep !== null && (dep.fileName.endsWith(".cts") || isCjsJsFile(dep, lowerer.program))) {
@@ -2264,7 +2293,7 @@ function lowerOwnStaticModuleImport(lowerer, call, arg) {
2264
2293
  }
2265
2294
  const ns = {
2266
2295
  kind: "moduleNs",
2267
- moduleId: `file:${dep === null ? "" : lowerer.moduleNamespaceIdOfType(lowerer.typeOf(call))?.replace(/^file:/, "") ?? dep.fileName}`,
2296
+ moduleId: `file:${dep === null ? "" : (lowerer.moduleNamespaceIdOfType(lowerer.typeOf(call))?.replace(/^file:/, "") ?? dep.fileName)}`,
2268
2297
  };
2269
2298
  // The call's type is Promise<typeof import(...)>; prefer the mapper's
2270
2299
  // canonical normalized id when available.
@@ -2273,8 +2302,8 @@ function lowerOwnStaticModuleImport(lowerer, call, arg) {
2273
2302
  return lowerStaticNamespaceImport(lowerer, call, inner, dep);
2274
2303
  }
2275
2304
  /** Builds a fresh native promise for a static module namespace. Source
2276
- * modules run/await their guarded initializer after the mandatory hop;
2277
- * builtins only take the hop and resolve their immortal token. */
2305
+ * modules run/await their guarded initializer after the mandatory hop;
2306
+ * builtins only take the hop and resolve their immortal token. */
2278
2307
  function lowerStaticNamespaceImport(lowerer, call, ns, dep = null) {
2279
2308
  const loc = locOf(call);
2280
2309
  const resultT = { kind: "promise", inner: ns };
@@ -2328,7 +2357,7 @@ function lowerStaticNamespaceImport(lowerer, call, ns, dep = null) {
2328
2357
  };
2329
2358
  }
2330
2359
  /** Appends Node's lazy source-module link/evaluation work to a static
2331
- * import helper. This is the native twin of dynNsBuilderOf's prelude. */
2360
+ * import helper. This is the native twin of dynNsBuilderOf's prelude. */
2332
2361
  function appendStaticModuleInit(lowerer, dep, body, loc) {
2333
2362
  const linkCrash = esmNamedImportLinkCrash(lowerer.program, dep);
2334
2363
  if (linkCrash !== null) {
@@ -2381,12 +2410,12 @@ function appendStaticModuleInit(lowerer, dep, body, loc) {
2381
2410
  });
2382
2411
  }
2383
2412
  /** The namespace-BUILDER function for one program module, synthesized on
2384
- * first demand and shared by every import() of that module (deterministic
2385
- * name per file tag, so the discovery and emit passes agree). Body: the
2386
- * module's guarded %init (skipped for the entry — it is running or ran),
2387
- * then `return { <sorted exports> }` as an engine object. Null when the
2388
- * module never joined the compiled graph (no %init exists — an empty
2389
- * preflight order or a cycle the extension refused). */
2413
+ * first demand and shared by every import() of that module (deterministic
2414
+ * name per file tag, so the discovery and emit passes agree). Body: the
2415
+ * module's guarded %init (skipped for the entry — it is running or ran),
2416
+ * then `return { <sorted exports> }` as an engine object. Null when the
2417
+ * module never joined the compiled graph (no %init exists — an empty
2418
+ * preflight order or a cycle the extension refused). */
2390
2419
  function dynNsBuilderOf(lowerer, dep, loc) {
2391
2420
  const cached = lowerer.dynNsBuilders.get(dep);
2392
2421
  if (cached !== undefined)
@@ -2460,9 +2489,7 @@ function dynNsBuilderOf(lowerer, dep, loc) {
2460
2489
  else {
2461
2490
  body.push({
2462
2491
  kind: "exprStmt",
2463
- expr: isAsync
2464
- ? { kind: "awaitExpr", value: call, type: VOID, loc }
2465
- : call,
2492
+ expr: isAsync ? { kind: "awaitExpr", value: call, type: VOID, loc } : call,
2466
2493
  loc,
2467
2494
  });
2468
2495
  }
@@ -2482,9 +2509,18 @@ function dynNsBuilderOf(lowerer, dep, loc) {
2482
2509
  const value = exportJsvalValue(lowerer, exportName, sym, loc);
2483
2510
  if (value === null)
2484
2511
  continue;
2485
- args.push({ kind: "jsMarshal", value: { kind: "strLit", value: exportName, type: STRING, loc }, type: JSVAL, loc }, value);
2512
+ args.push({
2513
+ kind: "jsMarshal",
2514
+ value: { kind: "strLit", value: exportName, type: STRING, loc },
2515
+ type: JSVAL,
2516
+ loc,
2517
+ }, value);
2486
2518
  }
2487
- body.push({ kind: "return", value: { kind: "jsOp", op: "objLit", args, type: JSVAL, loc }, loc });
2519
+ body.push({
2520
+ kind: "return",
2521
+ value: { kind: "jsOp", op: "objLit", args, type: JSVAL, loc },
2522
+ loc,
2523
+ });
2488
2524
  const ctx = lowerer.ctx;
2489
2525
  lowerer.liftedFns.push({
2490
2526
  name,
@@ -2503,13 +2539,13 @@ function dynNsBuilderOf(lowerer, dep, loc) {
2503
2539
  return name;
2504
2540
  }
2505
2541
  /** One export's island value for the namespace object — the jsvalIn
2506
- * marshal set (primitives and JSON-safe composites by deep copy, units as
2507
- * the engine's own, marshalable closures as host functions, jsval-bearing
2508
- * composites through the per-field lift), with every UN-marshalable
2509
- * export crossing as a trap function that throws a pointed TypeError when
2510
- * called or constructed — the namespace still builds (Node resolves it;
2511
- * only the USE has no compiled story). Null for exports that do not exist
2512
- * at runtime (type-only). */
2542
+ * marshal set (primitives and JSON-safe composites by deep copy, units as
2543
+ * the engine's own, marshalable closures as host functions, jsval-bearing
2544
+ * composites through the per-field lift), with every UN-marshalable
2545
+ * export crossing as a trap function that throws a pointed TypeError when
2546
+ * called or constructed — the namespace still builds (Node resolves it;
2547
+ * only the USE has no compiled story). Null for exports that do not exist
2548
+ * at runtime (type-only). */
2513
2549
  function exportJsvalValue(lowerer, name, sym, loc) {
2514
2550
  const trap = (what) => islandTrapFnValue(lowerer, `the '${name}' export is ${what} of the compiled program, which cannot cross into dynamically-executed code yet`, loc);
2515
2551
  let resolved = sym;
@@ -2523,7 +2559,8 @@ function exportJsvalValue(lowerer, name, sym, loc) {
2523
2559
  }
2524
2560
  if (ts.isImportSpecifier(d)) {
2525
2561
  const clause = d.parent?.parent;
2526
- if (d.isTypeOnly || (ts.isImportClause(clause) && clause.phaseModifier === ts.SyntaxKind.TypeKeyword))
2562
+ if (d.isTypeOnly ||
2563
+ (ts.isImportClause(clause) && clause.phaseModifier === ts.SyntaxKind.TypeKeyword))
2527
2564
  return null;
2528
2565
  }
2529
2566
  }
@@ -2537,7 +2574,13 @@ function exportJsvalValue(lowerer, name, sym, loc) {
2537
2574
  if (ref.type.kind === "jsval")
2538
2575
  return ref;
2539
2576
  if (isUnitType(ref.type)) {
2540
- return { kind: "jsOp", op: ref.type.kind === "undefinedT" ? "undefLit" : "nullLit", args: [], type: JSVAL, loc };
2577
+ return {
2578
+ kind: "jsOp",
2579
+ op: ref.type.kind === "undefinedT" ? "undefLit" : "nullLit",
2580
+ args: [],
2581
+ type: JSVAL,
2582
+ loc,
2583
+ };
2541
2584
  }
2542
2585
  if (ref.type.kind === "func") {
2543
2586
  return canMarshalTypedFuncIntoIsland(ref.type, (id) => lowerer.shapes.get(id), (id) => lowerer.unions.get(id))
@@ -2551,7 +2594,11 @@ function exportJsvalValue(lowerer, name, sym, loc) {
2551
2594
  return trap(`a value of type '${lowerer.fmt(ref.type)}'`);
2552
2595
  }
2553
2596
  const sig = lowerer.fnSigsBySymbol.get(resolved);
2554
- const decl0 = lowerer.checker.declarationsOf(resolved).find((d) => ts.isFunctionDeclaration(d) && (ts.isSourceFile(d.parent) || (d.parent !== undefined && lowerer.nsBlocks.get(d.parent) === "flattened")));
2597
+ const decl0 = lowerer.checker
2598
+ .declarationsOf(resolved)
2599
+ .find((d) => ts.isFunctionDeclaration(d) &&
2600
+ (ts.isSourceFile(d.parent) ||
2601
+ (d.parent !== undefined && lowerer.nsBlocks.get(d.parent) === "flattened")));
2555
2602
  if (sig && decl0) {
2556
2603
  if (!sig.params.every((p) => p.mode === "required")) {
2557
2604
  return trap("a function with optional, default, or rest parameters");
@@ -2585,10 +2632,10 @@ function exportJsvalValue(lowerer, name, sym, loc) {
2585
2632
  return trap("a binding");
2586
2633
  }
2587
2634
  /** An engine value whose any USE throws: `new Function("<throw>")` — a
2588
- * real engine function, so the namespace member reads back fine (Node's
2589
- * namespace holds the value too), property probes answer like a
2590
- * function's, and calling or `new`-ing it runs the body, which throws
2591
- * the pointed TypeError. */
2635
+ * real engine function, so the namespace member reads back fine (Node's
2636
+ * namespace holds the value too), property probes answer like a
2637
+ * function's, and calling or `new`-ing it runs the body, which throws
2638
+ * the pointed TypeError. */
2592
2639
  function islandTrapFnValue(lowerer, message, loc) {
2593
2640
  void lowerer;
2594
2641
  const code = `throw new TypeError(${JSON.stringify(message)})`;
@@ -2597,22 +2644,27 @@ function islandTrapFnValue(lowerer, message, loc) {
2597
2644
  op: "construct",
2598
2645
  args: [
2599
2646
  { kind: "jsOp", op: "globalGet", name: "Function", args: [], type: JSVAL, loc },
2600
- { kind: "jsMarshal", value: { kind: "strLit", value: code, type: STRING, loc }, type: JSVAL, loc },
2647
+ {
2648
+ kind: "jsMarshal",
2649
+ value: { kind: "strLit", value: code, type: STRING, loc },
2650
+ type: JSVAL,
2651
+ loc,
2652
+ },
2601
2653
  ],
2602
2654
  type: JSVAL,
2603
2655
  loc,
2604
2656
  };
2605
2657
  }
2606
2658
  /** An object literal built NATIVELY in the island — one engine object,
2607
- * each field marshaled individually (nested object/array literals
2608
- * recurse, island handles pass straight through, everything else takes
2609
- * the JSON-safe copy-marshal). The same jsOp the 'any'-contextual
2610
- * literal path emits, callable from lowerings that KNOW the literal is
2611
- * island-bound (fetch's init) even when the contextual type is a union
2612
- * the generic path declines. Spelled and pure const-folded computed keys
2613
- * are admitted; engine property names have no identifier restriction. Plain
2614
- * spreads copy through the engine's CopyDataProperties operation in
2615
- * source order, including nested RequestInit/header dictionaries. */
2659
+ * each field marshaled individually (nested object/array literals
2660
+ * recurse, island handles pass straight through, everything else takes
2661
+ * the JSON-safe copy-marshal). The same jsOp the 'any'-contextual
2662
+ * literal path emits, callable from lowerings that KNOW the literal is
2663
+ * island-bound (fetch's init) even when the contextual type is a union
2664
+ * the generic path declines. Spelled and pure const-folded computed keys
2665
+ * are admitted; engine property names have no identifier restriction. Plain
2666
+ * spreads copy through the engine's CopyDataProperties operation in
2667
+ * source order, including nested RequestInit/header dictionaries. */
2616
2668
  function lowerIslandObjectLiteral(lowerer, expr) {
2617
2669
  const loc = locOf(expr);
2618
2670
  let args = [];
@@ -2621,9 +2673,10 @@ function lowerIslandObjectLiteral(lowerer, expr) {
2621
2673
  if (args.length === 0)
2622
2674
  return;
2623
2675
  const chunk = { kind: "jsOp", op: "objLit", args, type: JSVAL, loc };
2624
- acc = acc === null
2625
- ? chunk
2626
- : { kind: "jsOp", op: "objSpread", args: [acc, chunk], type: JSVAL, loc };
2676
+ acc =
2677
+ acc === null
2678
+ ? chunk
2679
+ : { kind: "jsOp", op: "objSpread", args: [acc, chunk], type: JSVAL, loc };
2627
2680
  args = [];
2628
2681
  };
2629
2682
  for (const prop of expr.properties) {
@@ -2649,7 +2702,8 @@ function lowerIslandObjectLiteral(lowerer, expr) {
2649
2702
  args.push({
2650
2703
  kind: "jsMarshal",
2651
2704
  value: { kind: "strLit", value: propertyName, type: STRING, loc: nameLoc },
2652
- type: JSVAL, loc: nameLoc,
2705
+ type: JSVAL,
2706
+ loc: nameLoc,
2653
2707
  });
2654
2708
  const valueNode = ts.isPropertyAssignment(prop)
2655
2709
  ? prop.initializer
@@ -2666,7 +2720,8 @@ function lowerIslandObjectLiteral(lowerer, expr) {
2666
2720
  }
2667
2721
  else {
2668
2722
  const value = ts.isMethodDeclaration(valueNode)
2669
- ? (lowerer.rejectThisInObjectMethod(valueNode.body ?? valueNode), lowerer.lowerLambda(valueNode))
2723
+ ? (lowerer.rejectThisInObjectMethod(valueNode.body ?? valueNode),
2724
+ lowerer.lowerLambda(valueNode))
2670
2725
  : lowerer.lowerExpr(valueNode);
2671
2726
  args.push(lowerer.jsvalIn(value, valueNode));
2672
2727
  }
@@ -2675,15 +2730,15 @@ function lowerIslandObjectLiteral(lowerer, expr) {
2675
2730
  return acc ?? { kind: "jsOp", op: "objLit", args: [], type: JSVAL, loc };
2676
2731
  }
2677
2732
  /** Method calls on the island-backed ambient surface: `Math.<fn>(...)`
2678
- * (the engine's own Math object executes) and the number/string methods
2679
- * the static runtime doesn't implement (`x.toPrecision(2)`,
2680
- * `s.replace("a", "b")`, ...). Each site is self-contained — the receiver
2681
- * and arguments marshal in, the engine executes with JS-exact semantics,
2682
- * and the result exits (validated) to the DECLARED static return type,
2683
- * so no jsval leaks into the program's types. tsc has already checked
2684
- * receiver, arity, and argument types against ambient/scriptc.d.ts; an
2685
- * ambient member missing from ISLAND_SURFACE returns null into the
2686
- * existing generic rejections. */
2733
+ * (the engine's own Math object executes) and the number/string methods
2734
+ * the static runtime doesn't implement (`x.toPrecision(2)`,
2735
+ * `s.replace("a", "b")`, ...). Each site is self-contained — the receiver
2736
+ * and arguments marshal in, the engine executes with JS-exact semantics,
2737
+ * and the result exits (validated) to the DECLARED static return type,
2738
+ * so no jsval leaks into the program's types. tsc has already checked
2739
+ * receiver, arity, and argument types against ambient/scriptc.d.ts; an
2740
+ * ambient member missing from ISLAND_SURFACE returns null into the
2741
+ * existing generic rejections. */
2687
2742
  export function lowerIslandMethodCall(lowerer, call, access) {
2688
2743
  if (lowerer.chainBlocked(access, call))
2689
2744
  return null;
@@ -2692,7 +2747,12 @@ export function lowerIslandMethodCall(lowerer, call, access) {
2692
2747
  const finish = (receiver, entry) => {
2693
2748
  const args = call.arguments.map((a) => lowerer.jsvalIn(lowerer.lowerExpr(a), a));
2694
2749
  const result = {
2695
- kind: "jsOp", op: "callMethod", name, args: [receiver, ...args], type: JSVAL, loc,
2750
+ kind: "jsOp",
2751
+ op: "callMethod",
2752
+ name,
2753
+ args: [receiver, ...args],
2754
+ type: JSVAL,
2755
+ loc,
2696
2756
  };
2697
2757
  return { kind: "jsExit", value: result, type: entry.ret, loc };
2698
2758
  };
@@ -2709,11 +2769,20 @@ export function lowerIslandMethodCall(lowerer, call, access) {
2709
2769
  lowerer.requireDynamicApi(`'AbortSignal.${sigMember}'`, call);
2710
2770
  const args = call.arguments.map((a) => lowerer.jsvalIn(lowerer.lowerExpr(a), a));
2711
2771
  const signalGlobal = {
2712
- kind: "jsOp", op: "globalGet", name: "AbortSignal", args: [], type: JSVAL, loc,
2772
+ kind: "jsOp",
2773
+ op: "globalGet",
2774
+ name: "AbortSignal",
2775
+ args: [],
2776
+ type: JSVAL,
2777
+ loc,
2713
2778
  };
2714
2779
  return {
2715
- kind: "jsOp", op: "callMethod", name: sigMember,
2716
- args: [signalGlobal, ...args], type: JSVAL, loc,
2780
+ kind: "jsOp",
2781
+ op: "callMethod",
2782
+ name: sigMember,
2783
+ args: [signalGlobal, ...args],
2784
+ type: JSVAL,
2785
+ loc,
2717
2786
  };
2718
2787
  }
2719
2788
  }
@@ -2748,12 +2817,17 @@ export function lowerIslandMethodCall(lowerer, call, access) {
2748
2817
  const elems = call.arguments.map((a) => ts.isSpreadElement(a)
2749
2818
  ? lowerer.lowerExprExpecting(a.expression, arrayOf(F64))
2750
2819
  : lowerer.lowerExprExpecting(a, F64));
2751
- const spreads = call.arguments.flatMap((a, i) => ts.isSpreadElement(a) ? [i] : []);
2752
- const packed = { kind: "arrayLit", elems, ...(spreads.length > 0 ? { spreads } : {}), type: arrayOf(F64), loc };
2820
+ const spreads = call.arguments.flatMap((a, i) => (ts.isSpreadElement(a) ? [i] : []));
2821
+ const packed = {
2822
+ kind: "arrayLit",
2823
+ elems,
2824
+ ...(spreads.length > 0 ? { spreads } : {}),
2825
+ type: arrayOf(F64),
2826
+ loc,
2827
+ };
2753
2828
  return { kind: "libCall", fn: staticMath.fn, args: [packed], type: F64, loc };
2754
2829
  }
2755
- if (staticMath &&
2756
- call.arguments.every((a) => !ts.isSpreadElement(a))) {
2830
+ if (staticMath && call.arguments.every((a) => !ts.isSpreadElement(a))) {
2757
2831
  // Math.max/Math.min at ANY plain arity — Node's are variadic. The
2758
2832
  // spec's reduction is a left fold of the same NaN-poisoning
2759
2833
  // ±0-ordered scalar compare the two-arg form lowers to, so n
@@ -2843,20 +2917,38 @@ export function lowerMathProperty(lowerer, expr) {
2843
2917
  if (native && (member === "min" || member === "max" || member === "hypot"))
2844
2918
  return lowerer.lowerNativeCallableValue({
2845
2919
  fn: member === "min" ? "math.minArr" : member === "max" ? "math.maxArr" : "math.hypotArr",
2846
- params: [arrayOf(F64)], result: F64, valueParams: [{ mode: "rest", type: F64 }],
2920
+ params: [arrayOf(F64)],
2921
+ result: F64,
2922
+ valueParams: [{ mode: "rest", type: F64 }],
2847
2923
  }, `Math.${member}`, loc);
2848
2924
  if (native && member !== "min" && member !== "max" && member !== "hypot") {
2849
2925
  const params = Array.from({ length: native.arity }, () => F64);
2850
2926
  return lowerer.lowerNativeCallableValue({
2851
- fn: native.fn, params, result: F64,
2927
+ fn: native.fn,
2928
+ params,
2929
+ result: F64,
2852
2930
  valueParams: params.map((type) => ({ mode: "required", type })),
2853
2931
  }, `Math.${member}`, loc);
2854
2932
  }
2855
2933
  const propType = own(ISLAND_SURFACE.math.props, member);
2856
2934
  if (propType !== undefined) {
2857
2935
  lowerer.requireDynamicApi(`'Math.${member}'`, expr);
2858
- const math = { kind: "jsOp", op: "globalGet", name: "Math", args: [], type: JSVAL, loc };
2859
- const read = { kind: "jsOp", op: "getProp", name: member, args: [math], type: JSVAL, loc };
2936
+ const math = {
2937
+ kind: "jsOp",
2938
+ op: "globalGet",
2939
+ name: "Math",
2940
+ args: [],
2941
+ type: JSVAL,
2942
+ loc,
2943
+ };
2944
+ const read = {
2945
+ kind: "jsOp",
2946
+ op: "getProp",
2947
+ name: member,
2948
+ args: [math],
2949
+ type: JSVAL,
2950
+ loc,
2951
+ };
2860
2952
  return { kind: "jsExit", value: read, type: propType, loc };
2861
2953
  }
2862
2954
  if (own(ISLAND_SURFACE.math.fns, member) !== undefined ||
@@ -2866,9 +2958,9 @@ export function lowerMathProperty(lowerer, expr) {
2866
2958
  return null; // declared-but-untabled members fall through generically
2867
2959
  }
2868
2960
  /** The npm package a type is declared by ("commander", "@scope/pkg"),
2869
- * or null when the type isn't package-declared. Union parts are searched
2870
- * too: `string | Command` fails mapping as a whole, but the blame (and
2871
- * the --dynamic attribution) belongs to the package-declared part. */
2961
+ * or null when the type isn't package-declared. Union parts are searched
2962
+ * too: `string | Command` fails mapping as a whole, but the blame (and
2963
+ * the --dynamic attribution) belongs to the package-declared part. */
2872
2964
  export function npmPackageOf(lowerer, type) {
2873
2965
  const pkg = lowerer.npmPackageOfSymbol(type.getAliasSymbol() ?? type.getSymbol());
2874
2966
  if (pkg)
@@ -2883,11 +2975,11 @@ export function npmPackageOf(lowerer, type) {
2883
2975
  return null;
2884
2976
  }
2885
2977
  /** The npm chokepoint for member reads and method calls in a STATIC
2886
- * build: a receiver whose type (or member whose symbol) a package's
2887
- * .d.ts declares means the operation runs in the embedded engine —
2888
- * attribute the site to the package instead of the generic property/
2889
- * method rejection. No-op under --dynamic (the island paths claimed
2890
- * these) and for non-package receivers, so callers' fallbacks apply. */
2978
+ * build: a receiver whose type (or member whose symbol) a package's
2979
+ * .d.ts declares means the operation runs in the embedded engine —
2980
+ * attribute the site to the package instead of the generic property/
2981
+ * method rejection. No-op under --dynamic (the island paths claimed
2982
+ * these) and for non-package receivers, so callers' fallbacks apply. */
2891
2983
  export function npmMemberFence(lowerer, access) {
2892
2984
  if (lowerer.dynamic)
2893
2985
  return;
@@ -2899,8 +2991,8 @@ export function npmMemberFence(lowerer, access) {
2899
2991
  throw new PoisonError();
2900
2992
  }
2901
2993
  /** The npm package a SYMBOL is declared by, or null. The symbol half of
2902
- * npmPackageOf, also asked directly for import-alias bindings (whose
2903
- * aliased symbol is the package's export). */
2994
+ * npmPackageOf, also asked directly for import-alias bindings (whose
2995
+ * aliased symbol is the package's export). */
2904
2996
  export function npmPackageOfSymbol(lowerer, sym) {
2905
2997
  const decls = sym ? lowerer.checker.declarationsOf(sym) : undefined;
2906
2998
  if (!decls || decls.length === 0)