@scriptc/compiler 0.2.4 → 0.2.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1201) hide show
  1. package/ambient/scriptc-node-fallback.d.ts +972 -245
  2. package/ambient/scriptc-overrides.d.ts +5 -1
  3. package/ambient/scriptc.d.ts +22 -2
  4. package/dist/backend/build-cache.d.ts +4 -0
  5. package/dist/backend/build-cache.js +16 -2
  6. package/dist/backend/build-cache.js.map +1 -1
  7. package/dist/backend/cycle-analysis.js +17 -5
  8. package/dist/backend/cycle-analysis.js.map +1 -1
  9. package/dist/backend/cycle-analysis.test.js +50 -11
  10. package/dist/backend/cycle-analysis.test.js.map +1 -1
  11. package/dist/backend/debug-symbols.js.map +1 -1
  12. package/dist/backend/executable-features.js +3 -1
  13. package/dist/backend/executable-features.js.map +1 -1
  14. package/dist/backend/external-c.d.ts +13 -6
  15. package/dist/backend/external-c.js +15 -3
  16. package/dist/backend/external-c.js.map +1 -1
  17. package/dist/backend/ffi-callbacks.js +6 -9
  18. package/dist/backend/ffi-callbacks.js.map +1 -1
  19. package/dist/backend/library-identity-markers.js.map +1 -1
  20. package/dist/backend/library-pack.d.ts +1 -1
  21. package/dist/backend/library-pack.js +81 -24
  22. package/dist/backend/library-pack.js.map +1 -1
  23. package/dist/backend/link-plan-core.d.ts +2 -0
  24. package/dist/backend/link-plan-core.js +10 -2
  25. package/dist/backend/link-plan-core.js.map +1 -1
  26. package/dist/backend/link-plan.d.ts +2 -1
  27. package/dist/backend/link-plan.js +7 -5
  28. package/dist/backend/link-plan.js.map +1 -1
  29. package/dist/backend/linker.d.ts +1 -1
  30. package/dist/backend/linker.js +42 -23
  31. package/dist/backend/linker.js.map +1 -1
  32. package/dist/backend/literals.js +5 -4
  33. package/dist/backend/literals.js.map +1 -1
  34. package/dist/backend/literals.test.js +30 -5
  35. package/dist/backend/literals.test.js.map +1 -1
  36. package/dist/backend/llvm/blocks.test.js +5 -2
  37. package/dist/backend/llvm/blocks.test.js.map +1 -1
  38. package/dist/backend/llvm/borrowed-inputs.js.map +1 -1
  39. package/dist/backend/llvm/borrowed-receivers.js +43 -19
  40. package/dist/backend/llvm/borrowed-receivers.js.map +1 -1
  41. package/dist/backend/llvm/byte-numbers.js +38 -5
  42. package/dist/backend/llvm/byte-numbers.js.map +1 -1
  43. package/dist/backend/llvm/byte-windows.d.ts +31 -0
  44. package/dist/backend/llvm/byte-windows.js +334 -0
  45. package/dist/backend/llvm/byte-windows.js.map +1 -0
  46. package/dist/backend/llvm/byte-windows.test.d.ts +1 -0
  47. package/dist/backend/llvm/byte-windows.test.js +244 -0
  48. package/dist/backend/llvm/byte-windows.test.js.map +1 -0
  49. package/dist/backend/llvm/bytes-bounds.js +73 -22
  50. package/dist/backend/llvm/bytes-bounds.js.map +1 -1
  51. package/dist/backend/llvm/call-lifetimes.d.ts +5 -2
  52. package/dist/backend/llvm/call-lifetimes.js +72 -19
  53. package/dist/backend/llvm/call-lifetimes.js.map +1 -1
  54. package/dist/backend/llvm/call-lifetimes.test.js +159 -28
  55. package/dist/backend/llvm/call-lifetimes.test.js.map +1 -1
  56. package/dist/backend/llvm/checked-value-lifetimes.d.ts +4 -0
  57. package/dist/backend/llvm/checked-value-lifetimes.js +14 -4
  58. package/dist/backend/llvm/checked-value-lifetimes.js.map +1 -1
  59. package/dist/backend/llvm/classes.d.ts +14 -1
  60. package/dist/backend/llvm/classes.js +94 -19
  61. package/dist/backend/llvm/classes.js.map +1 -1
  62. package/dist/backend/llvm/classes.test.d.ts +1 -0
  63. package/dist/backend/llvm/classes.test.js +99 -0
  64. package/dist/backend/llvm/classes.test.js.map +1 -0
  65. package/dist/backend/llvm/common.js +4 -1
  66. package/dist/backend/llvm/common.js.map +1 -1
  67. package/dist/backend/llvm/constant-callbacks.d.ts +11 -0
  68. package/dist/backend/llvm/constant-callbacks.js +213 -0
  69. package/dist/backend/llvm/constant-callbacks.js.map +1 -0
  70. package/dist/backend/llvm/constant-callbacks.test.d.ts +1 -0
  71. package/dist/backend/llvm/constant-callbacks.test.js +124 -0
  72. package/dist/backend/llvm/constant-callbacks.test.js.map +1 -0
  73. package/dist/backend/llvm/counted-loops.js +10 -3
  74. package/dist/backend/llvm/counted-loops.js.map +1 -1
  75. package/dist/backend/llvm/debug-info.js +33 -13
  76. package/dist/backend/llvm/debug-info.js.map +1 -1
  77. package/dist/backend/llvm/debug-info.test.js +28 -6
  78. package/dist/backend/llvm/debug-info.test.js.map +1 -1
  79. package/dist/backend/llvm/dyn.d.ts +1 -1
  80. package/dist/backend/llvm/dyn.js +75 -56
  81. package/dist/backend/llvm/dyn.js.map +1 -1
  82. package/dist/backend/llvm/emitter.d.ts +28 -3
  83. package/dist/backend/llvm/emitter.js +506 -145
  84. package/dist/backend/llvm/emitter.js.map +1 -1
  85. package/dist/backend/llvm/emitter.test.js +247 -50
  86. package/dist/backend/llvm/emitter.test.js.map +1 -1
  87. package/dist/backend/llvm/expr-async.js +25 -6
  88. package/dist/backend/llvm/expr-async.js.map +1 -1
  89. package/dist/backend/llvm/expr-bytes.js +24 -4
  90. package/dist/backend/llvm/expr-bytes.js.map +1 -1
  91. package/dist/backend/llvm/expr-callbacks.js +10 -4
  92. package/dist/backend/llvm/expr-callbacks.js.map +1 -1
  93. package/dist/backend/llvm/expr-calls.js +110 -31
  94. package/dist/backend/llvm/expr-calls.js.map +1 -1
  95. package/dist/backend/llvm/expr-containers.d.ts +2 -0
  96. package/dist/backend/llvm/expr-containers.js +112 -41
  97. package/dist/backend/llvm/expr-containers.js.map +1 -1
  98. package/dist/backend/llvm/expr-control.js +1 -3
  99. package/dist/backend/llvm/expr-control.js.map +1 -1
  100. package/dist/backend/llvm/expr-dispatch.js +3 -1
  101. package/dist/backend/llvm/expr-dispatch.js.map +1 -1
  102. package/dist/backend/llvm/expr-dynamic.js +55 -7
  103. package/dist/backend/llvm/expr-dynamic.js.map +1 -1
  104. package/dist/backend/llvm/expr-island.js +26 -6
  105. package/dist/backend/llvm/expr-island.js.map +1 -1
  106. package/dist/backend/llvm/expr-primitives.js +95 -19
  107. package/dist/backend/llvm/expr-primitives.js.map +1 -1
  108. package/dist/backend/llvm/expr-primitives.test.js +44 -2
  109. package/dist/backend/llvm/expr-primitives.test.js.map +1 -1
  110. package/dist/backend/llvm/expr-records.js +10 -9
  111. package/dist/backend/llvm/expr-records.js.map +1 -1
  112. package/dist/backend/llvm/expr-stream-bridges.js +44 -26
  113. package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
  114. package/dist/backend/llvm/expr-stream-bridges.test.js +51 -14
  115. package/dist/backend/llvm/expr-stream-bridges.test.js.map +1 -1
  116. package/dist/backend/llvm/expr-stream-callbacks.js +34 -14
  117. package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
  118. package/dist/backend/llvm/integer-remainder.d.ts +7 -0
  119. package/dist/backend/llvm/integer-remainder.js +26 -0
  120. package/dist/backend/llvm/integer-remainder.js.map +1 -0
  121. package/dist/backend/llvm/integer-values.js +15 -4
  122. package/dist/backend/llvm/integer-values.js.map +1 -1
  123. package/dist/backend/llvm/integer-views.js +23 -7
  124. package/dist/backend/llvm/integer-views.js.map +1 -1
  125. package/dist/backend/llvm/integer-views.test.js +42 -7
  126. package/dist/backend/llvm/integer-views.test.js.map +1 -1
  127. package/dist/backend/llvm/layouts.js +1 -1
  128. package/dist/backend/llvm/layouts.js.map +1 -1
  129. package/dist/backend/llvm/lib-abi.js +20 -4
  130. package/dist/backend/llvm/lib-abi.js.map +1 -1
  131. package/dist/backend/llvm/lib-connect.js +7 -1
  132. package/dist/backend/llvm/lib-connect.js.map +1 -1
  133. package/dist/backend/llvm/lib-datagram.js +35 -10
  134. package/dist/backend/llvm/lib-datagram.js.map +1 -1
  135. package/dist/backend/llvm/lib-dispatch.js +42 -38
  136. package/dist/backend/llvm/lib-dispatch.js.map +1 -1
  137. package/dist/backend/llvm/lib-filesystem.js +33 -18
  138. package/dist/backend/llvm/lib-filesystem.js.map +1 -1
  139. package/dist/backend/llvm/lib-http2.js +60 -15
  140. package/dist/backend/llvm/lib-http2.js.map +1 -1
  141. package/dist/backend/llvm/lib-lookup.js +12 -5
  142. package/dist/backend/llvm/lib-lookup.js.map +1 -1
  143. package/dist/backend/llvm/lib-network.js +97 -31
  144. package/dist/backend/llvm/lib-network.js.map +1 -1
  145. package/dist/backend/llvm/lib-process.js +57 -14
  146. package/dist/backend/llvm/lib-process.js.map +1 -1
  147. package/dist/backend/llvm/lib-shared.js +122 -31
  148. package/dist/backend/llvm/lib-shared.js.map +1 -1
  149. package/dist/backend/llvm/lib-stream.js +33 -14
  150. package/dist/backend/llvm/lib-stream.js.map +1 -1
  151. package/dist/backend/llvm/lib-test.js +21 -7
  152. package/dist/backend/llvm/lib-test.js.map +1 -1
  153. package/dist/backend/llvm/lib-tls.js +69 -20
  154. package/dist/backend/llvm/lib-tls.js.map +1 -1
  155. package/dist/backend/llvm/local-array-reads.d.ts +9 -2
  156. package/dist/backend/llvm/local-array-reads.js +176 -89
  157. package/dist/backend/llvm/local-array-reads.js.map +1 -1
  158. package/dist/backend/llvm/local-array-reads.test.js +394 -62
  159. package/dist/backend/llvm/local-array-reads.test.js.map +1 -1
  160. package/dist/backend/llvm/local-union-storage.d.ts +25 -0
  161. package/dist/backend/llvm/local-union-storage.js +109 -0
  162. package/dist/backend/llvm/local-union-storage.js.map +1 -0
  163. package/dist/backend/llvm/local-union-storage.test.d.ts +1 -0
  164. package/dist/backend/llvm/local-union-storage.test.js +210 -0
  165. package/dist/backend/llvm/local-union-storage.test.js.map +1 -0
  166. package/dist/backend/llvm/loop-array-borrows.d.ts +11 -0
  167. package/dist/backend/llvm/loop-array-borrows.js +70 -0
  168. package/dist/backend/llvm/loop-array-borrows.js.map +1 -0
  169. package/dist/backend/llvm/loop-array-borrows.test.d.ts +1 -0
  170. package/dist/backend/llvm/loop-array-borrows.test.js +145 -0
  171. package/dist/backend/llvm/loop-array-borrows.test.js.map +1 -0
  172. package/dist/backend/llvm/map-read-lifetimes.d.ts +11 -2
  173. package/dist/backend/llvm/map-read-lifetimes.js +64 -19
  174. package/dist/backend/llvm/map-read-lifetimes.js.map +1 -1
  175. package/dist/backend/llvm/map-read-lifetimes.test.js +89 -17
  176. package/dist/backend/llvm/map-read-lifetimes.test.js.map +1 -1
  177. package/dist/backend/llvm/reference-effects.d.ts +5 -3
  178. package/dist/backend/llvm/reference-effects.js +74 -36
  179. package/dist/backend/llvm/reference-effects.js.map +1 -1
  180. package/dist/backend/llvm/reference-effects.test.js +92 -9
  181. package/dist/backend/llvm/reference-effects.test.js.map +1 -1
  182. package/dist/backend/llvm/shapes.d.ts +4 -1
  183. package/dist/backend/llvm/shapes.js +82 -24
  184. package/dist/backend/llvm/shapes.js.map +1 -1
  185. package/dist/backend/llvm/shapes.test.js +3 -1
  186. package/dist/backend/llvm/shapes.test.js.map +1 -1
  187. package/dist/backend/llvm/split-loops.d.ts +48 -0
  188. package/dist/backend/llvm/split-loops.js +183 -0
  189. package/dist/backend/llvm/split-loops.js.map +1 -0
  190. package/dist/backend/llvm/split.js +4 -11
  191. package/dist/backend/llvm/split.js.map +1 -1
  192. package/dist/backend/llvm/split.test.js +80 -8
  193. package/dist/backend/llvm/split.test.js.map +1 -1
  194. package/dist/backend/llvm/stack-callbacks.d.ts +14 -0
  195. package/dist/backend/llvm/stack-callbacks.js +73 -0
  196. package/dist/backend/llvm/stack-callbacks.js.map +1 -0
  197. package/dist/backend/llvm/stack-captures.d.ts +25 -0
  198. package/dist/backend/llvm/stack-captures.js +150 -0
  199. package/dist/backend/llvm/stack-captures.js.map +1 -0
  200. package/dist/backend/llvm/stack-unions.js +14 -5
  201. package/dist/backend/llvm/stack-unions.js.map +1 -1
  202. package/dist/backend/llvm/stack-unions.test.js +151 -32
  203. package/dist/backend/llvm/stack-unions.test.js.map +1 -1
  204. package/dist/backend/llvm/string-construction.js.map +1 -1
  205. package/dist/backend/llvm/string-construction.test.js +32 -7
  206. package/dist/backend/llvm/string-construction.test.js.map +1 -1
  207. package/dist/backend/llvm/string-lifetimes.js +14 -8
  208. package/dist/backend/llvm/string-lifetimes.js.map +1 -1
  209. package/dist/backend/llvm/string-lifetimes.test.js +119 -29
  210. package/dist/backend/llvm/string-lifetimes.test.js.map +1 -1
  211. package/dist/backend/llvm/string-slices.d.ts +20 -0
  212. package/dist/backend/llvm/string-slices.js +87 -0
  213. package/dist/backend/llvm/string-slices.js.map +1 -0
  214. package/dist/backend/llvm/string-slices.test.d.ts +1 -0
  215. package/dist/backend/llvm/string-slices.test.js +98 -0
  216. package/dist/backend/llvm/string-slices.test.js.map +1 -0
  217. package/dist/backend/llvm/switch-dispatch.d.ts +9 -0
  218. package/dist/backend/llvm/switch-dispatch.js +114 -0
  219. package/dist/backend/llvm/switch-dispatch.js.map +1 -0
  220. package/dist/backend/llvm/switch-dispatch.test.d.ts +1 -0
  221. package/dist/backend/llvm/switch-dispatch.test.js +83 -0
  222. package/dist/backend/llvm/switch-dispatch.test.js.map +1 -0
  223. package/dist/backend/llvm/unsupported.js.map +1 -1
  224. package/dist/backend/llvm/walkers.d.ts +4 -14
  225. package/dist/backend/llvm/walkers.js +58 -313
  226. package/dist/backend/llvm/walkers.js.map +1 -1
  227. package/dist/backend/mangle.js +9 -3
  228. package/dist/backend/mangle.js.map +1 -1
  229. package/dist/backend/may-throw.js +18 -8
  230. package/dist/backend/may-throw.js.map +1 -1
  231. package/dist/backend/may-throw.test.js +119 -23
  232. package/dist/backend/may-throw.test.js.map +1 -1
  233. package/dist/backend/native/artifact-stamps.d.ts +39 -0
  234. package/dist/backend/native/artifact-stamps.js +371 -0
  235. package/dist/backend/native/artifact-stamps.js.map +1 -0
  236. package/dist/backend/native/cache-warm.d.ts +24 -0
  237. package/dist/backend/native/cache-warm.js +80 -0
  238. package/dist/backend/native/cache-warm.js.map +1 -0
  239. package/dist/backend/native/compiler-fingerprint.d.ts +19 -0
  240. package/dist/backend/native/compiler-fingerprint.js +357 -0
  241. package/dist/backend/native/compiler-fingerprint.js.map +1 -0
  242. package/dist/backend/native/contracts.d.ts +316 -0
  243. package/dist/backend/native/contracts.js +2 -0
  244. package/dist/backend/native/contracts.js.map +1 -0
  245. package/dist/backend/native/dependency-files.d.ts +5 -0
  246. package/dist/backend/native/dependency-files.js +83 -0
  247. package/dist/backend/native/dependency-files.js.map +1 -0
  248. package/dist/backend/native/driver.d.ts +50 -0
  249. package/dist/backend/native/driver.js +294 -0
  250. package/dist/backend/native/driver.js.map +1 -0
  251. package/dist/backend/native/executable.d.ts +18 -0
  252. package/dist/backend/native/executable.js +1275 -0
  253. package/dist/backend/native/executable.js.map +1 -0
  254. package/dist/backend/native/library.d.ts +2 -0
  255. package/dist/backend/native/library.js +614 -0
  256. package/dist/backend/native/library.js.map +1 -0
  257. package/dist/backend/native/linker-fingerprint.d.ts +8 -0
  258. package/dist/backend/native/linker-fingerprint.js +174 -0
  259. package/dist/backend/native/linker-fingerprint.js.map +1 -0
  260. package/dist/backend/native/object-merge.d.ts +2 -0
  261. package/dist/backend/native/object-merge.js +154 -0
  262. package/dist/backend/native/object-merge.js.map +1 -0
  263. package/dist/backend/native/process.d.ts +17 -0
  264. package/dist/backend/native/process.js +42 -0
  265. package/dist/backend/native/process.js.map +1 -0
  266. package/dist/backend/native/program-shards.d.ts +21 -0
  267. package/dist/backend/native/program-shards.js +99 -0
  268. package/dist/backend/native/program-shards.js.map +1 -0
  269. package/dist/backend/native/runtime-inputs.d.ts +12 -0
  270. package/dist/backend/native/runtime-inputs.js +165 -0
  271. package/dist/backend/native/runtime-inputs.js.map +1 -0
  272. package/dist/backend/native/runtime-inputs.test.d.ts +1 -0
  273. package/dist/backend/native/runtime-inputs.test.js +64 -0
  274. package/dist/backend/native/runtime-inputs.test.js.map +1 -0
  275. package/dist/backend/native/runtime-objects.d.ts +16 -0
  276. package/dist/backend/native/runtime-objects.js +122 -0
  277. package/dist/backend/native/runtime-objects.js.map +1 -0
  278. package/dist/backend/native/session.d.ts +12 -0
  279. package/dist/backend/native/session.js +31 -0
  280. package/dist/backend/native/session.js.map +1 -0
  281. package/dist/backend/native/tool-identity.d.ts +37 -0
  282. package/dist/backend/native/tool-identity.js +310 -0
  283. package/dist/backend/native/tool-identity.js.map +1 -0
  284. package/dist/backend/native/trace-paths.d.ts +12 -0
  285. package/dist/backend/native/trace-paths.js +73 -0
  286. package/dist/backend/native/trace-paths.js.map +1 -0
  287. package/dist/backend/native/vendor.d.ts +1 -0
  288. package/dist/backend/native/vendor.js +12 -0
  289. package/dist/backend/native/vendor.js.map +1 -0
  290. package/dist/backend/native-codegen-core.d.ts +6 -0
  291. package/dist/backend/native-codegen-core.js +23 -1
  292. package/dist/backend/native-codegen-core.js.map +1 -1
  293. package/dist/backend/native-codegen.d.ts +5 -1
  294. package/dist/backend/native-codegen.js +52 -25
  295. package/dist/backend/native-codegen.js.map +1 -1
  296. package/dist/backend/native-codegen.test.js +59 -11
  297. package/dist/backend/native-codegen.test.js.map +1 -1
  298. package/dist/backend/native-link-info-core.d.ts +1 -0
  299. package/dist/backend/native-link-info-core.js +9 -5
  300. package/dist/backend/native-link-info-core.js.map +1 -1
  301. package/dist/backend/native-link-info.js +14 -5
  302. package/dist/backend/native-link-info.js.map +1 -1
  303. package/dist/backend/native-link-info.test.js +58 -13
  304. package/dist/backend/native-link-info.test.js.map +1 -1
  305. package/dist/backend/native-toolchain.d.ts +17 -450
  306. package/dist/backend/native-toolchain.js +17 -3971
  307. package/dist/backend/native-toolchain.js.map +1 -1
  308. package/dist/backend/native-toolchain.test.js +103 -72
  309. package/dist/backend/native-toolchain.test.js.map +1 -1
  310. package/dist/backend/native-tools.d.ts +3 -1
  311. package/dist/backend/native-tools.js +30 -9
  312. package/dist/backend/native-tools.js.map +1 -1
  313. package/dist/backend/object-localize.js +17 -14
  314. package/dist/backend/object-localize.js.map +1 -1
  315. package/dist/backend/object-localize.test.js +59 -12
  316. package/dist/backend/object-localize.test.js.map +1 -1
  317. package/dist/backend/runtime-abi.d.ts +2 -2
  318. package/dist/backend/runtime-abi.js +2 -2
  319. package/dist/backend/runtime-pack-core.d.ts +1 -0
  320. package/dist/backend/runtime-pack-core.js +104 -50
  321. package/dist/backend/runtime-pack-core.js.map +1 -1
  322. package/dist/backend/runtime-pack-native.js +5 -3
  323. package/dist/backend/runtime-pack-native.js.map +1 -1
  324. package/dist/backend/runtime-pack-targets.test.js +126 -17
  325. package/dist/backend/runtime-pack-targets.test.js.map +1 -1
  326. package/dist/backend/runtime-pack.d.ts +1 -1
  327. package/dist/backend/runtime-pack.js +11 -12
  328. package/dist/backend/runtime-pack.js.map +1 -1
  329. package/dist/backend/runtime-pack.test.js +51 -25
  330. package/dist/backend/runtime-pack.test.js.map +1 -1
  331. package/dist/backend/source-locations.js.map +1 -1
  332. package/dist/backend/source-locations.test.js +7 -2
  333. package/dist/backend/source-locations.test.js.map +1 -1
  334. package/dist/backend/target-diagnostics.js +44 -14
  335. package/dist/backend/target-diagnostics.js.map +1 -1
  336. package/dist/backend/target-diagnostics.test.js +93 -20
  337. package/dist/backend/target-diagnostics.test.js.map +1 -1
  338. package/dist/backend/targets.js +230 -86
  339. package/dist/backend/targets.js.map +1 -1
  340. package/dist/backend/targets.test.js +32 -18
  341. package/dist/backend/targets.test.js.map +1 -1
  342. package/dist/backend/toolchain-environment.js +5 -1
  343. package/dist/backend/toolchain-environment.js.map +1 -1
  344. package/dist/backend/vendor-archives.d.ts +2 -2
  345. package/dist/backend/vendor-archives.js +84 -35
  346. package/dist/backend/vendor-archives.js.map +1 -1
  347. package/dist/backend/vendor-inputs.js +13 -1
  348. package/dist/backend/vendor-inputs.js.map +1 -1
  349. package/dist/backend/warm-cache.d.ts +1 -1
  350. package/dist/backend/warm-cache.js +33 -9
  351. package/dist/backend/warm-cache.js.map +1 -1
  352. package/dist/cli/command.js +39 -9
  353. package/dist/cli/command.js.map +1 -1
  354. package/dist/cli/output-options.js +14 -4
  355. package/dist/cli/output-options.js.map +1 -1
  356. package/dist/cli/paths.js.map +1 -1
  357. package/dist/cli/wasi-runner.js.map +1 -1
  358. package/dist/compat/fetch-profile.js +36 -35
  359. package/dist/compat/fetch-profile.js.map +1 -1
  360. package/dist/coverage/report.js +16 -17
  361. package/dist/coverage/report.js.map +1 -1
  362. package/dist/coverage/surface-manifest.js +112 -26
  363. package/dist/coverage/surface-manifest.js.map +1 -1
  364. package/dist/diagnostics/diagnostic.js +55 -16
  365. package/dist/diagnostics/diagnostic.js.map +1 -1
  366. package/dist/executable/executable-cache.d.ts +2 -1
  367. package/dist/executable/executable-cache.js +79 -48
  368. package/dist/executable/executable-cache.js.map +1 -1
  369. package/dist/executable/executable-cache.test.js +90 -26
  370. package/dist/executable/executable-cache.test.js.map +1 -1
  371. package/dist/executable/prepare.js +2 -2
  372. package/dist/executable/prepare.js.map +1 -1
  373. package/dist/ffi/ffi-manifest.js +78 -20
  374. package/dist/ffi/ffi-manifest.js.map +1 -1
  375. package/dist/ffi/ffi-manifest.test.js +96 -16
  376. package/dist/ffi/ffi-manifest.test.js.map +1 -1
  377. package/dist/format-integer.js.map +1 -1
  378. package/dist/frontend/analysis.js +12 -2
  379. package/dist/frontend/analysis.js.map +1 -1
  380. package/dist/frontend/arguments-usage.js.map +1 -1
  381. package/dist/frontend/binding-source.js +9 -3
  382. package/dist/frontend/binding-source.js.map +1 -1
  383. package/dist/frontend/builtin-modules.js +46 -2
  384. package/dist/frontend/builtin-modules.js.map +1 -1
  385. package/dist/frontend/cjs-resolve.js +40 -17
  386. package/dist/frontend/cjs-resolve.js.map +1 -1
  387. package/dist/frontend/cjs-syntax.js +31 -10
  388. package/dist/frontend/cjs-syntax.js.map +1 -1
  389. package/dist/frontend/comptime-node.test.js +10 -11
  390. package/dist/frontend/comptime-node.test.js.map +1 -1
  391. package/dist/frontend/dts-paths.js +7 -3
  392. package/dist/frontend/dts-paths.js.map +1 -1
  393. package/dist/frontend/fork-target.d.ts +5 -0
  394. package/dist/frontend/fork-target.js +55 -18
  395. package/dist/frontend/fork-target.js.map +1 -1
  396. package/dist/frontend/fork-target.test.d.ts +1 -0
  397. package/dist/frontend/fork-target.test.js +59 -0
  398. package/dist/frontend/fork-target.test.js.map +1 -0
  399. package/dist/frontend/function-completion.js +11 -6
  400. package/dist/frontend/function-completion.js.map +1 -1
  401. package/dist/frontend/helper-tokens.js +53 -6
  402. package/dist/frontend/helper-tokens.js.map +1 -1
  403. package/dist/frontend/helper-tokens.test.js +18 -2
  404. package/dist/frontend/helper-tokens.test.js.map +1 -1
  405. package/dist/frontend/inferred-js-diagnostics.js +32 -12
  406. package/dist/frontend/inferred-js-diagnostics.js.map +1 -1
  407. package/dist/frontend/inferred-js-diagnostics.test.js +11 -15
  408. package/dist/frontend/inferred-js-diagnostics.test.js.map +1 -1
  409. package/dist/frontend/input-tracker.js +11 -11
  410. package/dist/frontend/input-tracker.js.map +1 -1
  411. package/dist/frontend/input-tracker.test.js +4 -1
  412. package/dist/frontend/input-tracker.test.js.map +1 -1
  413. package/dist/frontend/lib-contract.js +38 -9
  414. package/dist/frontend/lib-contract.js.map +1 -1
  415. package/dist/frontend/literal-values.js.map +1 -1
  416. package/dist/frontend/literal-values.test.js +28 -8
  417. package/dist/frontend/literal-values.test.js.map +1 -1
  418. package/dist/frontend/lowering/abstract-equality.js +53 -10
  419. package/dist/frontend/lowering/abstract-equality.js.map +1 -1
  420. package/dist/frontend/lowering/array-indexed-mutation.d.ts +1 -1
  421. package/dist/frontend/lowering/array-indexed-mutation.js +108 -106
  422. package/dist/frontend/lowering/array-indexed-mutation.js.map +1 -1
  423. package/dist/frontend/lowering/array-values.js +37 -14
  424. package/dist/frontend/lowering/array-values.js.map +1 -1
  425. package/dist/frontend/lowering/binding-analysis.d.ts +50 -0
  426. package/dist/frontend/lowering/binding-analysis.js +376 -0
  427. package/dist/frontend/lowering/binding-analysis.js.map +1 -0
  428. package/dist/frontend/lowering/builtin-calls.d.ts +9 -0
  429. package/dist/frontend/lowering/builtin-calls.js +60 -0
  430. package/dist/frontend/lowering/builtin-calls.js.map +1 -0
  431. package/dist/frontend/lowering/builtins/arguments.d.ts +43 -0
  432. package/dist/frontend/lowering/builtins/arguments.js +247 -0
  433. package/dist/frontend/lowering/builtins/arguments.js.map +1 -0
  434. package/dist/frontend/lowering/builtins/async-context.d.ts +52 -0
  435. package/dist/frontend/lowering/builtins/async-context.js +436 -0
  436. package/dist/frontend/lowering/builtins/async-context.js.map +1 -0
  437. package/dist/frontend/lowering/builtins/atomics.d.ts +6 -0
  438. package/dist/frontend/lowering/builtins/atomics.js +82 -0
  439. package/dist/frontend/lowering/builtins/atomics.js.map +1 -0
  440. package/dist/frontend/lowering/builtins/callable-aliases.d.ts +13 -0
  441. package/dist/frontend/lowering/builtins/callable-aliases.js +87 -0
  442. package/dist/frontend/lowering/builtins/callable-aliases.js.map +1 -0
  443. package/dist/frontend/lowering/builtins/child-process-async.d.ts +18 -0
  444. package/dist/frontend/lowering/builtins/child-process-async.js +245 -0
  445. package/dist/frontend/lowering/builtins/child-process-async.js.map +1 -0
  446. package/dist/frontend/lowering/builtins/child-process-methods.d.ts +21 -0
  447. package/dist/frontend/lowering/builtins/child-process-methods.js +362 -0
  448. package/dist/frontend/lowering/builtins/child-process-methods.js.map +1 -0
  449. package/dist/frontend/lowering/builtins/child-process-sync.d.ts +4 -0
  450. package/dist/frontend/lowering/builtins/child-process-sync.js +639 -0
  451. package/dist/frontend/lowering/builtins/child-process-sync.js.map +1 -0
  452. package/dist/frontend/lowering/builtins/child-process.d.ts +55 -0
  453. package/dist/frontend/lowering/builtins/child-process.js +669 -0
  454. package/dist/frontend/lowering/builtins/child-process.js.map +1 -0
  455. package/dist/frontend/lowering/builtins/compression.d.ts +7 -0
  456. package/dist/frontend/lowering/builtins/compression.js +115 -0
  457. package/dist/frontend/lowering/builtins/compression.js.map +1 -0
  458. package/dist/frontend/lowering/builtins/console.d.ts +10 -0
  459. package/dist/frontend/lowering/builtins/console.js +38 -0
  460. package/dist/frontend/lowering/builtins/console.js.map +1 -0
  461. package/dist/frontend/lowering/builtins/constants.d.ts +24 -0
  462. package/dist/frontend/lowering/builtins/constants.js +141 -0
  463. package/dist/frontend/lowering/builtins/constants.js.map +1 -0
  464. package/dist/frontend/lowering/builtins/crypto.d.ts +22 -0
  465. package/dist/frontend/lowering/builtins/crypto.js +517 -0
  466. package/dist/frontend/lowering/builtins/crypto.js.map +1 -0
  467. package/dist/frontend/lowering/builtins/dates.d.ts +7 -0
  468. package/dist/frontend/lowering/builtins/dates.js +101 -0
  469. package/dist/frontend/lowering/builtins/dates.js.map +1 -0
  470. package/dist/frontend/lowering/builtins/environment.d.ts +34 -0
  471. package/dist/frontend/lowering/builtins/environment.js +95 -0
  472. package/dist/frontend/lowering/builtins/environment.js.map +1 -0
  473. package/dist/frontend/lowering/builtins/errors.d.ts +14 -0
  474. package/dist/frontend/lowering/builtins/errors.js +83 -0
  475. package/dist/frontend/lowering/builtins/errors.js.map +1 -0
  476. package/dist/frontend/lowering/builtins/filesystem-calls.d.ts +35 -0
  477. package/dist/frontend/lowering/builtins/filesystem-calls.js +725 -0
  478. package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -0
  479. package/dist/frontend/lowering/builtins/filesystem.d.ts +108 -0
  480. package/dist/frontend/lowering/builtins/filesystem.js +1061 -0
  481. package/dist/frontend/lowering/builtins/filesystem.js.map +1 -0
  482. package/dist/frontend/lowering/builtins/ipc.d.ts +8 -0
  483. package/dist/frontend/lowering/builtins/ipc.js +76 -0
  484. package/dist/frontend/lowering/builtins/ipc.js.map +1 -0
  485. package/dist/frontend/lowering/builtins/json.d.ts +12 -0
  486. package/dist/frontend/lowering/builtins/json.js +387 -0
  487. package/dist/frontend/lowering/builtins/json.js.map +1 -0
  488. package/dist/frontend/lowering/builtins/module-bindings.d.ts +85 -0
  489. package/dist/frontend/lowering/builtins/module-bindings.js +346 -0
  490. package/dist/frontend/lowering/builtins/module-bindings.js.map +1 -0
  491. package/dist/frontend/lowering/builtins/module-calls.d.ts +8 -0
  492. package/dist/frontend/lowering/builtins/module-calls.js +308 -0
  493. package/dist/frontend/lowering/builtins/module-calls.js.map +1 -0
  494. package/dist/frontend/lowering/builtins/module-resolution.d.ts +38 -0
  495. package/dist/frontend/lowering/builtins/module-resolution.js +344 -0
  496. package/dist/frontend/lowering/builtins/module-resolution.js.map +1 -0
  497. package/dist/frontend/lowering/builtins/numbers.d.ts +15 -0
  498. package/dist/frontend/lowering/builtins/numbers.js +124 -0
  499. package/dist/frontend/lowering/builtins/numbers.js.map +1 -0
  500. package/dist/frontend/lowering/builtins/operating-system.d.ts +13 -0
  501. package/dist/frontend/lowering/builtins/operating-system.js +148 -0
  502. package/dist/frontend/lowering/builtins/operating-system.js.map +1 -0
  503. package/dist/frontend/lowering/builtins/performance.d.ts +13 -0
  504. package/dist/frontend/lowering/builtins/performance.js +100 -0
  505. package/dist/frontend/lowering/builtins/performance.js.map +1 -0
  506. package/dist/frontend/lowering/builtins/process.d.ts +50 -0
  507. package/dist/frontend/lowering/builtins/process.js +1138 -0
  508. package/dist/frontend/lowering/builtins/process.js.map +1 -0
  509. package/dist/frontend/lowering/builtins/promises.d.ts +14 -0
  510. package/dist/frontend/lowering/builtins/promises.js +356 -0
  511. package/dist/frontend/lowering/builtins/promises.js.map +1 -0
  512. package/dist/frontend/lowering/builtins/properties.d.ts +11 -0
  513. package/dist/frontend/lowering/builtins/properties.js +186 -0
  514. package/dist/frontend/lowering/builtins/properties.js.map +1 -0
  515. package/dist/frontend/lowering/builtins/querystring.d.ts +19 -0
  516. package/dist/frontend/lowering/builtins/querystring.js +150 -0
  517. package/dist/frontend/lowering/builtins/querystring.js.map +1 -0
  518. package/dist/frontend/lowering/builtins/readline.d.ts +13 -0
  519. package/dist/frontend/lowering/builtins/readline.js +138 -0
  520. package/dist/frontend/lowering/builtins/readline.js.map +1 -0
  521. package/dist/frontend/lowering/builtins/receiver-types.d.ts +5 -0
  522. package/dist/frontend/lowering/builtins/receiver-types.js +15 -0
  523. package/dist/frontend/lowering/builtins/receiver-types.js.map +1 -0
  524. package/dist/frontend/lowering/builtins/reflection.d.ts +13 -0
  525. package/dist/frontend/lowering/builtins/reflection.js +95 -0
  526. package/dist/frontend/lowering/builtins/reflection.js.map +1 -0
  527. package/dist/frontend/lowering/builtins/strings.d.ts +14 -0
  528. package/dist/frontend/lowering/builtins/strings.js +121 -0
  529. package/dist/frontend/lowering/builtins/strings.js.map +1 -0
  530. package/dist/frontend/lowering/builtins/text-codecs.d.ts +29 -0
  531. package/dist/frontend/lowering/builtins/text-codecs.js +590 -0
  532. package/dist/frontend/lowering/builtins/text-codecs.js.map +1 -0
  533. package/dist/frontend/lowering/builtins/timers.d.ts +22 -0
  534. package/dist/frontend/lowering/builtins/timers.js +180 -0
  535. package/dist/frontend/lowering/builtins/timers.js.map +1 -0
  536. package/dist/frontend/lowering/builtins/url.d.ts +37 -0
  537. package/dist/frontend/lowering/builtins/url.js +596 -0
  538. package/dist/frontend/lowering/builtins/url.js.map +1 -0
  539. package/dist/frontend/lowering/builtins/util-types.d.ts +7 -0
  540. package/dist/frontend/lowering/builtins/util-types.js +31 -0
  541. package/dist/frontend/lowering/builtins/util-types.js.map +1 -0
  542. package/dist/frontend/lowering/builtins/workers.d.ts +5 -0
  543. package/dist/frontend/lowering/builtins/workers.js +65 -0
  544. package/dist/frontend/lowering/builtins/workers.js.map +1 -0
  545. package/dist/frontend/lowering/call-arguments.d.ts +72 -0
  546. package/dist/frontend/lowering/call-arguments.js +618 -0
  547. package/dist/frontend/lowering/call-arguments.js.map +1 -0
  548. package/dist/frontend/lowering/call-signatures.d.ts +115 -0
  549. package/dist/frontend/lowering/call-signatures.js +719 -0
  550. package/dist/frontend/lowering/call-signatures.js.map +1 -0
  551. package/dist/frontend/lowering/callback-arg.js.map +1 -1
  552. package/dist/frontend/lowering/checked-iterable-spread.js +53 -10
  553. package/dist/frontend/lowering/checked-iterable-spread.js.map +1 -1
  554. package/dist/frontend/lowering/checked-promise-all.js +41 -9
  555. package/dist/frontend/lowering/checked-promise-all.js.map +1 -1
  556. package/dist/frontend/lowering/class-assertions.d.ts +7 -0
  557. package/dist/frontend/lowering/class-assertions.js +96 -0
  558. package/dist/frontend/lowering/class-assertions.js.map +1 -0
  559. package/dist/frontend/lowering/class-callbacks.d.ts +1 -1
  560. package/dist/frontend/lowering/class-callbacks.js +130 -27
  561. package/dist/frontend/lowering/class-callbacks.js.map +1 -1
  562. package/dist/frontend/lowering/class-construction.d.ts +1 -1
  563. package/dist/frontend/lowering/class-construction.js +247 -50
  564. package/dist/frontend/lowering/class-construction.js.map +1 -1
  565. package/dist/frontend/lowering/class-descriptors.js +109 -29
  566. package/dist/frontend/lowering/class-descriptors.js.map +1 -1
  567. package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +6 -1
  568. package/dist/frontend/lowering/class-dynamic-dispatch.js +2471 -465
  569. package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
  570. package/dist/frontend/lowering/class-dynamic-dispatch.test.js +284 -44
  571. package/dist/frontend/lowering/class-dynamic-dispatch.test.js.map +1 -1
  572. package/dist/frontend/lowering/class-instance-constructor.js +17 -5
  573. package/dist/frontend/lowering/class-instance-constructor.js.map +1 -1
  574. package/dist/frontend/lowering/class-method-values.js +199 -51
  575. package/dist/frontend/lowering/class-method-values.js.map +1 -1
  576. package/dist/frontend/lowering/class-protocols.d.ts +17 -0
  577. package/dist/frontend/lowering/class-protocols.js +126 -0
  578. package/dist/frontend/lowering/class-protocols.js.map +1 -0
  579. package/dist/frontend/lowering/class-prototypes.js +345 -86
  580. package/dist/frontend/lowering/class-prototypes.js.map +1 -1
  581. package/dist/frontend/lowering/class-runtime-statics.d.ts +1 -1
  582. package/dist/frontend/lowering/class-runtime-statics.js +80 -17
  583. package/dist/frontend/lowering/class-runtime-statics.js.map +1 -1
  584. package/dist/frontend/lowering/class-static-data.js +76 -16
  585. package/dist/frontend/lowering/class-static-data.js.map +1 -1
  586. package/dist/frontend/lowering/coercions/builders.d.ts +13 -0
  587. package/dist/frontend/lowering/coercions/builders.js +77 -0
  588. package/dist/frontend/lowering/coercions/builders.js.map +1 -0
  589. package/dist/frontend/lowering/coercions/function-adapters.d.ts +58 -0
  590. package/dist/frontend/lowering/coercions/function-adapters.js +430 -0
  591. package/dist/frontend/lowering/coercions/function-adapters.js.map +1 -0
  592. package/dist/frontend/lowering/coercions/island.d.ts +37 -0
  593. package/dist/frontend/lowering/coercions/island.js +350 -0
  594. package/dist/frontend/lowering/coercions/island.js.map +1 -0
  595. package/dist/frontend/lowering/coercions/state.d.ts +14 -0
  596. package/dist/frontend/lowering/coercions/state.js +16 -0
  597. package/dist/frontend/lowering/coercions/state.js.map +1 -0
  598. package/dist/frontend/lowering/coercions/structural-plans.d.ts +40 -0
  599. package/dist/frontend/lowering/coercions/structural-plans.js +447 -0
  600. package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -0
  601. package/dist/frontend/lowering/coercions/structural.d.ts +63 -0
  602. package/dist/frontend/lowering/coercions/structural.js +616 -0
  603. package/dist/frontend/lowering/coercions/structural.js.map +1 -0
  604. package/dist/frontend/lowering/coercions/unions.d.ts +65 -0
  605. package/dist/frontend/lowering/coercions/unions.js +318 -0
  606. package/dist/frontend/lowering/coercions/unions.js.map +1 -0
  607. package/dist/frontend/lowering/collection-ingestion.js +355 -72
  608. package/dist/frontend/lowering/collection-ingestion.js.map +1 -1
  609. package/dist/frontend/lowering/containers/array-callbacks.d.ts +88 -0
  610. package/dist/frontend/lowering/containers/array-callbacks.js +1611 -0
  611. package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -0
  612. package/dist/frontend/lowering/containers/array-construction.d.ts +42 -0
  613. package/dist/frontend/lowering/containers/array-construction.js +1044 -0
  614. package/dist/frontend/lowering/containers/array-construction.js.map +1 -0
  615. package/dist/frontend/lowering/containers/array-iteration.d.ts +16 -0
  616. package/dist/frontend/lowering/containers/array-iteration.js +95 -0
  617. package/dist/frontend/lowering/containers/array-iteration.js.map +1 -0
  618. package/dist/frontend/lowering/containers/array-methods.d.ts +27 -0
  619. package/dist/frontend/lowering/containers/array-methods.js +1854 -0
  620. package/dist/frontend/lowering/containers/array-methods.js.map +1 -0
  621. package/dist/frontend/lowering/containers/bytes.d.ts +17 -17
  622. package/dist/frontend/lowering/containers/bytes.js +430 -138
  623. package/dist/frontend/lowering/containers/bytes.js.map +1 -1
  624. package/dist/frontend/lowering/containers/callback-arguments.d.ts +26 -0
  625. package/dist/frontend/lowering/containers/callback-arguments.js +179 -0
  626. package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -0
  627. package/dist/frontend/lowering/containers/collection-grouping.d.ts +19 -0
  628. package/dist/frontend/lowering/containers/collection-grouping.js +297 -0
  629. package/dist/frontend/lowering/containers/collection-grouping.js.map +1 -0
  630. package/dist/frontend/lowering/containers/collection-methods.d.ts +57 -0
  631. package/dist/frontend/lowering/containers/collection-methods.js +1314 -0
  632. package/dist/frontend/lowering/containers/collection-methods.js.map +1 -0
  633. package/dist/frontend/lowering/containers/dynamic-receivers.d.ts +18 -0
  634. package/dist/frontend/lowering/containers/dynamic-receivers.js +114 -0
  635. package/dist/frontend/lowering/containers/dynamic-receivers.js.map +1 -0
  636. package/dist/frontend/lowering/containers/for-of.d.ts +60 -0
  637. package/dist/frontend/lowering/containers/for-of.js +643 -0
  638. package/dist/frontend/lowering/containers/for-of.js.map +1 -0
  639. package/dist/frontend/lowering/containers/indexed-objects.d.ts +132 -0
  640. package/dist/frontend/lowering/containers/indexed-objects.js +1743 -0
  641. package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -0
  642. package/dist/frontend/lowering/containers/iterator-helpers.d.ts +20 -0
  643. package/dist/frontend/lowering/containers/iterator-helpers.js +809 -0
  644. package/dist/frontend/lowering/containers/iterator-helpers.js.map +1 -0
  645. package/dist/frontend/lowering/containers/string-and-regexp.js +601 -160
  646. package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
  647. package/dist/frontend/lowering/containers/string-replacement.js +213 -63
  648. package/dist/frontend/lowering/containers/string-replacement.js.map +1 -1
  649. package/dist/frontend/lowering/crypto-tables.js +263 -64
  650. package/dist/frontend/lowering/crypto-tables.js.map +1 -1
  651. package/dist/frontend/lowering/deferred-module-initializers.js +172 -68
  652. package/dist/frontend/lowering/deferred-module-initializers.js.map +1 -1
  653. package/dist/frontend/lowering/deferred-module-initializers.test.js +41 -8
  654. package/dist/frontend/lowering/deferred-module-initializers.test.js.map +1 -1
  655. package/dist/frontend/lowering/error-methods.js +339 -65
  656. package/dist/frontend/lowering/error-methods.js.map +1 -1
  657. package/dist/frontend/lowering/expressions/evaluation-safety.js +3 -2
  658. package/dist/frontend/lowering/expressions/evaluation-safety.js.map +1 -1
  659. package/dist/frontend/lowering/expressions/global-symbols.js +2 -1
  660. package/dist/frontend/lowering/expressions/global-symbols.js.map +1 -1
  661. package/dist/frontend/lowering/expressions/native-proxy.js +11 -5
  662. package/dist/frontend/lowering/expressions/native-proxy.js.map +1 -1
  663. package/dist/frontend/lowering/expressions/nullish-assignment.js +67 -13
  664. package/dist/frontend/lowering/expressions/nullish-assignment.js.map +1 -1
  665. package/dist/frontend/lowering/expressions/object-literals.js +588 -165
  666. package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
  667. package/dist/frontend/lowering/expressions/optional-chains.d.ts +1 -1
  668. package/dist/frontend/lowering/expressions/optional-chains.js +68 -17
  669. package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
  670. package/dist/frontend/lowering/expressions/union-field-write.js +45 -18
  671. package/dist/frontend/lowering/expressions/union-field-write.js.map +1 -1
  672. package/dist/frontend/lowering/function-context.js +5 -1
  673. package/dist/frontend/lowering/function-context.js.map +1 -1
  674. package/dist/frontend/lowering/function-returns.d.ts +67 -0
  675. package/dist/frontend/lowering/function-returns.js +392 -0
  676. package/dist/frontend/lowering/function-returns.js.map +1 -0
  677. package/dist/frontend/lowering/generator-delegation.d.ts +1 -1
  678. package/dist/frontend/lowering/generator-delegation.js +171 -39
  679. package/dist/frontend/lowering/generator-delegation.js.map +1 -1
  680. package/dist/frontend/lowering/generator-dynamic-dispatch.d.ts +1 -1
  681. package/dist/frontend/lowering/generator-dynamic-dispatch.js +176 -36
  682. package/dist/frontend/lowering/generator-dynamic-dispatch.js.map +1 -1
  683. package/dist/frontend/lowering/generic-functions.d.ts +271 -0
  684. package/dist/frontend/lowering/generic-functions.js +1730 -0
  685. package/dist/frontend/lowering/generic-functions.js.map +1 -0
  686. package/dist/frontend/lowering/import-meta.d.ts +1 -1
  687. package/dist/frontend/lowering/import-meta.js +37 -14
  688. package/dist/frontend/lowering/import-meta.js.map +1 -1
  689. package/dist/frontend/lowering/indexed-comparison.js +6 -2
  690. package/dist/frontend/lowering/indexed-comparison.js.map +1 -1
  691. package/dist/frontend/lowering/instantiation-path.d.ts +8 -0
  692. package/dist/frontend/lowering/instantiation-path.js +10 -0
  693. package/dist/frontend/lowering/instantiation-path.js.map +1 -0
  694. package/dist/frontend/lowering/instantiation-path.test.d.ts +1 -0
  695. package/dist/frontend/lowering/instantiation-path.test.js +23 -0
  696. package/dist/frontend/lowering/instantiation-path.test.js.map +1 -0
  697. package/dist/frontend/lowering/iterator-consumption.d.ts +9 -0
  698. package/dist/frontend/lowering/iterator-consumption.js +91 -0
  699. package/dist/frontend/lowering/iterator-consumption.js.map +1 -0
  700. package/dist/frontend/lowering/lib-boundary.js +40 -17
  701. package/dist/frontend/lowering/lib-boundary.js.map +1 -1
  702. package/dist/frontend/lowering/lib-boundary.test.js +49 -11
  703. package/dist/frontend/lowering/lib-boundary.test.js.map +1 -1
  704. package/dist/frontend/lowering/lower-array-sort.d.ts +0 -19
  705. package/dist/frontend/lowering/lower-array-sort.js +331 -566
  706. package/dist/frontend/lowering/lower-array-sort.js.map +1 -1
  707. package/dist/frontend/lowering/lower-assert.js +248 -43
  708. package/dist/frontend/lowering/lower-assert.js.map +1 -1
  709. package/dist/frontend/lowering/lower-async-iteration.js +71 -16
  710. package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
  711. package/dist/frontend/lowering/lower-builtin-values.js +430 -77
  712. package/dist/frontend/lowering/lower-builtin-values.js.map +1 -1
  713. package/dist/frontend/lowering/lower-calls.d.ts +39 -558
  714. package/dist/frontend/lowering/lower-calls.js +2628 -5669
  715. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  716. package/dist/frontend/lowering/lower-classes.d.ts +248 -242
  717. package/dist/frontend/lowering/lower-classes.js +1820 -775
  718. package/dist/frontend/lowering/lower-classes.js.map +1 -1
  719. package/dist/frontend/lowering/lower-comptime.d.ts +35 -35
  720. package/dist/frontend/lowering/lower-comptime.js +39 -37
  721. package/dist/frontend/lowering/lower-comptime.js.map +1 -1
  722. package/dist/frontend/lowering/lower-dgram.js +59 -31
  723. package/dist/frontend/lowering/lower-dgram.js.map +1 -1
  724. package/dist/frontend/lowering/lower-enums.js +5 -2
  725. package/dist/frontend/lowering/lower-enums.js.map +1 -1
  726. package/dist/frontend/lowering/lower-event-emitter.js +323 -86
  727. package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
  728. package/dist/frontend/lowering/lower-expando.js +19 -7
  729. package/dist/frontend/lowering/lower-expando.js.map +1 -1
  730. package/dist/frontend/lowering/lower-exprs.d.ts +194 -194
  731. package/dist/frontend/lowering/lower-exprs.js +3473 -1160
  732. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  733. package/dist/frontend/lowering/lower-functions.d.ts +23 -0
  734. package/dist/frontend/lowering/lower-functions.js +449 -0
  735. package/dist/frontend/lowering/lower-functions.js.map +1 -0
  736. package/dist/frontend/lowering/lower-generators.js +121 -32
  737. package/dist/frontend/lowering/lower-generators.js.map +1 -1
  738. package/dist/frontend/lowering/lower-global-value.js +15 -4
  739. package/dist/frontend/lowering/lower-global-value.js.map +1 -1
  740. package/dist/frontend/lowering/lower-inspect.js +479 -89
  741. package/dist/frontend/lowering/lower-inspect.js.map +1 -1
  742. package/dist/frontend/lowering/lower-island.d.ts +79 -79
  743. package/dist/frontend/lowering/lower-island.js +366 -274
  744. package/dist/frontend/lowering/lower-island.js.map +1 -1
  745. package/dist/frontend/lowering/lower-island.test.js +7 -2
  746. package/dist/frontend/lowering/lower-island.test.js.map +1 -1
  747. package/dist/frontend/lowering/lower-mixins.js +17 -8
  748. package/dist/frontend/lowering/lower-mixins.js.map +1 -1
  749. package/dist/frontend/lowering/lower-modules.d.ts +95 -94
  750. package/dist/frontend/lowering/lower-modules.js +655 -329
  751. package/dist/frontend/lowering/lower-modules.js.map +1 -1
  752. package/dist/frontend/lowering/lower-modules.test.js +91 -20
  753. package/dist/frontend/lowering/lower-modules.test.js.map +1 -1
  754. package/dist/frontend/lowering/lower-namespaces.js +25 -8
  755. package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
  756. package/dist/frontend/lowering/lower-node-module.js +115 -34
  757. package/dist/frontend/lowering/lower-node-module.js.map +1 -1
  758. package/dist/frontend/lowering/lower-server.js +1210 -290
  759. package/dist/frontend/lowering/lower-server.js.map +1 -1
  760. package/dist/frontend/lowering/lower-stmts.d.ts +148 -148
  761. package/dist/frontend/lowering/lower-stmts.js +2324 -994
  762. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  763. package/dist/frontend/lowering/lower-stmts.test.js +13 -5
  764. package/dist/frontend/lowering/lower-stmts.test.js.map +1 -1
  765. package/dist/frontend/lowering/lower-stream.js +363 -91
  766. package/dist/frontend/lowering/lower-stream.js.map +1 -1
  767. package/dist/frontend/lowering/lower-system-errors.js +30 -8
  768. package/dist/frontend/lowering/lower-system-errors.js.map +1 -1
  769. package/dist/frontend/lowering/lower-test.js +40 -13
  770. package/dist/frontend/lowering/lower-test.js.map +1 -1
  771. package/dist/frontend/lowering/lower-timers.d.ts +31 -0
  772. package/dist/frontend/lowering/lower-timers.js +336 -0
  773. package/dist/frontend/lowering/lower-timers.js.map +1 -0
  774. package/dist/frontend/lowering/lower-url.d.ts +1 -1
  775. package/dist/frontend/lowering/lower-url.js +46 -13
  776. package/dist/frontend/lowering/lower-url.js.map +1 -1
  777. package/dist/frontend/lowering/lowerer.d.ts +34 -352
  778. package/dist/frontend/lowering/lowerer.js +1074 -2712
  779. package/dist/frontend/lowering/lowerer.js.map +1 -1
  780. package/dist/frontend/lowering/lowerer.test.js +85 -17
  781. package/dist/frontend/lowering/lowerer.test.js.map +1 -1
  782. package/dist/frontend/lowering/module-namespace-elements.js +43 -8
  783. package/dist/frontend/lowering/module-namespace-elements.js.map +1 -1
  784. package/dist/frontend/lowering/native-ffi.d.ts +21 -1
  785. package/dist/frontend/lowering/native-ffi.js +487 -18
  786. package/dist/frontend/lowering/native-ffi.js.map +1 -1
  787. package/dist/frontend/lowering/object-enumeration-receiver.js +55 -10
  788. package/dist/frontend/lowering/object-enumeration-receiver.js.map +1 -1
  789. package/dist/frontend/lowering/object-factory-new.d.ts +1 -1
  790. package/dist/frontend/lowering/object-factory-new.js +36 -11
  791. package/dist/frontend/lowering/object-factory-new.js.map +1 -1
  792. package/dist/frontend/lowering/optional-arguments.js +49 -20
  793. package/dist/frontend/lowering/optional-arguments.js.map +1 -1
  794. package/dist/frontend/lowering/pairs-snapshot.js +66 -14
  795. package/dist/frontend/lowering/pairs-snapshot.js.map +1 -1
  796. package/dist/frontend/lowering/runtime-optional-locals.js +3 -1
  797. package/dist/frontend/lowering/runtime-optional-locals.js.map +1 -1
  798. package/dist/frontend/lowering/runtime-optional-locals.test.js.map +1 -1
  799. package/dist/frontend/lowering/sanitize-class-types.js +4 -1
  800. package/dist/frontend/lowering/sanitize-class-types.js.map +1 -1
  801. package/dist/frontend/lowering/sanitize-class-types.test.js +86 -18
  802. package/dist/frontend/lowering/sanitize-class-types.test.js.map +1 -1
  803. package/dist/frontend/lowering/split-consumers.d.ts +7 -0
  804. package/dist/frontend/lowering/split-consumers.js +64 -0
  805. package/dist/frontend/lowering/split-consumers.js.map +1 -0
  806. package/dist/frontend/lowering/static-this.js +13 -6
  807. package/dist/frontend/lowering/static-this.js.map +1 -1
  808. package/dist/frontend/lowering/string-index.js +32 -10
  809. package/dist/frontend/lowering/string-index.js.map +1 -1
  810. package/dist/frontend/lowering/surfaces.d.ts +45 -46
  811. package/dist/frontend/lowering/surfaces.js +1129 -256
  812. package/dist/frontend/lowering/surfaces.js.map +1 -1
  813. package/dist/frontend/lowering/symbol-fields.js +40 -15
  814. package/dist/frontend/lowering/symbol-fields.js.map +1 -1
  815. package/dist/frontend/lowering/symbol-methods.js.map +1 -1
  816. package/dist/frontend/lowering/text-decoder-encoding.js +236 -24
  817. package/dist/frontend/lowering/text-decoder-encoding.js.map +1 -1
  818. package/dist/frontend/lowering/text-decoder-encoding.test.js +84 -12
  819. package/dist/frontend/lowering/text-decoder-encoding.test.js.map +1 -1
  820. package/dist/frontend/lowering/union-narrow.js +59 -16
  821. package/dist/frontend/lowering/union-narrow.js.map +1 -1
  822. package/dist/frontend/lowering/union-narrow.test.js +24 -7
  823. package/dist/frontend/lowering/union-narrow.test.js.map +1 -1
  824. package/dist/frontend/lowering/union-retag.js +155 -40
  825. package/dist/frontend/lowering/union-retag.js.map +1 -1
  826. package/dist/frontend/lowering/union-retag.test.js +131 -33
  827. package/dist/frontend/lowering/union-retag.test.js.map +1 -1
  828. package/dist/frontend/lowering/unregistered-class-types.js.map +1 -1
  829. package/dist/frontend/lowering/unregistered-class-types.test.js +34 -8
  830. package/dist/frontend/lowering/unregistered-class-types.test.js.map +1 -1
  831. package/dist/frontend/module-source-candidates.d.ts +10 -0
  832. package/dist/frontend/module-source-candidates.js +40 -0
  833. package/dist/frontend/module-source-candidates.js.map +1 -0
  834. package/dist/frontend/module-source-candidates.test.d.ts +1 -0
  835. package/dist/frontend/module-source-candidates.test.js +53 -0
  836. package/dist/frontend/module-source-candidates.test.js.map +1 -0
  837. package/dist/frontend/module-syntax.js +21 -8
  838. package/dist/frontend/module-syntax.js.map +1 -1
  839. package/dist/frontend/module-syntax.test.js +37 -13
  840. package/dist/frontend/module-syntax.test.js.map +1 -1
  841. package/dist/frontend/npm-fetch-analysis.js +13 -4
  842. package/dist/frontend/npm-fetch-analysis.js.map +1 -1
  843. package/dist/frontend/npm-fetch-analysis.test.js +33 -10
  844. package/dist/frontend/npm-fetch-analysis.test.js.map +1 -1
  845. package/dist/frontend/npm-fetch-node.js.map +1 -1
  846. package/dist/frontend/npm-fetch-syntax.js +4 -9
  847. package/dist/frontend/npm-fetch-syntax.js.map +1 -1
  848. package/dist/frontend/npm-node.js +3 -1
  849. package/dist/frontend/npm-node.js.map +1 -1
  850. package/dist/frontend/npm-static-bundled-cjs.js +88 -29
  851. package/dist/frontend/npm-static-bundled-cjs.js.map +1 -1
  852. package/dist/frontend/npm-static-bundled-cjs.test.js +29 -10
  853. package/dist/frontend/npm-static-bundled-cjs.test.js.map +1 -1
  854. package/dist/frontend/npm-static-declaration-syntax.js +148 -56
  855. package/dist/frontend/npm-static-declaration-syntax.js.map +1 -1
  856. package/dist/frontend/npm-static-declarations.d.ts +1 -1
  857. package/dist/frontend/npm-static-declarations.js.map +1 -1
  858. package/dist/frontend/npm-static-declarations.test.js +33 -7
  859. package/dist/frontend/npm-static-declarations.test.js.map +1 -1
  860. package/dist/frontend/npm-static-prune.js +26 -12
  861. package/dist/frontend/npm-static-prune.js.map +1 -1
  862. package/dist/frontend/npm-static-prune.test.js +17 -3
  863. package/dist/frontend/npm-static-prune.test.js.map +1 -1
  864. package/dist/frontend/npm-static-rewrite-host.js +2 -3
  865. package/dist/frontend/npm-static-rewrite-host.js.map +1 -1
  866. package/dist/frontend/npm-static-rewrite-syntax.js +64 -21
  867. package/dist/frontend/npm-static-rewrite-syntax.js.map +1 -1
  868. package/dist/frontend/npm-static-rewrite.js.map +1 -1
  869. package/dist/frontend/npm-static-subtyping.js +9 -4
  870. package/dist/frontend/npm-static-subtyping.js.map +1 -1
  871. package/dist/frontend/npm-static-subtyping.test.js +30 -6
  872. package/dist/frontend/npm-static-subtyping.test.js.map +1 -1
  873. package/dist/frontend/npm-static.js +15 -4
  874. package/dist/frontend/npm-static.js.map +1 -1
  875. package/dist/frontend/npm.js +122 -36
  876. package/dist/frontend/npm.js.map +1 -1
  877. package/dist/frontend/npm.test.js +30 -10
  878. package/dist/frontend/npm.test.js.map +1 -1
  879. package/dist/frontend/pipeline-native.js.map +1 -1
  880. package/dist/frontend/pipeline.js +25 -8
  881. package/dist/frontend/pipeline.js.map +1 -1
  882. package/dist/frontend/pipeline.test.js +21 -7
  883. package/dist/frontend/pipeline.test.js.map +1 -1
  884. package/dist/frontend/program-analysis.d.ts +2 -0
  885. package/dist/frontend/program-analysis.js +2 -0
  886. package/dist/frontend/program-analysis.js.map +1 -1
  887. package/dist/frontend/program-node.js +5 -3
  888. package/dist/frontend/program-node.js.map +1 -1
  889. package/dist/frontend/program.d.ts +2 -2
  890. package/dist/frontend/program.js +248 -127
  891. package/dist/frontend/program.js.map +1 -1
  892. package/dist/frontend/program.test.js +27 -27
  893. package/dist/frontend/program.test.js.map +1 -1
  894. package/dist/frontend/provenance-core.js +8 -4
  895. package/dist/frontend/provenance-core.js.map +1 -1
  896. package/dist/frontend/provenance-registry.js +1 -4
  897. package/dist/frontend/provenance-registry.js.map +1 -1
  898. package/dist/frontend/resolve.js +32 -20
  899. package/dist/frontend/resolve.js.map +1 -1
  900. package/dist/frontend/resolve.test.js +1 -1
  901. package/dist/frontend/resolve.test.js.map +1 -1
  902. package/dist/frontend/runtime-resolve.js +13 -4
  903. package/dist/frontend/runtime-resolve.js.map +1 -1
  904. package/dist/frontend/runtime-resolve.test.js +25 -9
  905. package/dist/frontend/runtime-resolve.test.js.map +1 -1
  906. package/dist/frontend/services-node.js +6 -2
  907. package/dist/frontend/services-node.js.map +1 -1
  908. package/dist/frontend/services-node.test.js +18 -6
  909. package/dist/frontend/services-node.test.js.map +1 -1
  910. package/dist/frontend/services.js +8 -4
  911. package/dist/frontend/services.js.map +1 -1
  912. package/dist/frontend/services.test.js +6 -2
  913. package/dist/frontend/services.test.js.map +1 -1
  914. package/dist/frontend/ts7/api.js +12 -4
  915. package/dist/frontend/ts7/api.js.map +1 -1
  916. package/dist/frontend/ts7/ast-bytes.js +10 -3
  917. package/dist/frontend/ts7/ast-bytes.js.map +1 -1
  918. package/dist/frontend/ts7/ast-bytes.test.js +23 -4
  919. package/dist/frontend/ts7/ast-bytes.test.js.map +1 -1
  920. package/dist/frontend/ts7/ast-guards.test.js +14 -5
  921. package/dist/frontend/ts7/ast-guards.test.js.map +1 -1
  922. package/dist/frontend/ts7/ast-node.d.ts +6 -1
  923. package/dist/frontend/ts7/ast-node.js +490 -172
  924. package/dist/frontend/ts7/ast-node.js.map +1 -1
  925. package/dist/frontend/ts7/ast-node.test.js +150 -36
  926. package/dist/frontend/ts7/ast-node.test.js.map +1 -1
  927. package/dist/frontend/ts7/ast-text.js +13 -3
  928. package/dist/frontend/ts7/ast-text.js.map +1 -1
  929. package/dist/frontend/ts7/ast-text.test.js.map +1 -1
  930. package/dist/frontend/ts7/ast-types.js.map +1 -1
  931. package/dist/frontend/ts7/ast-wire.d.ts +5 -1
  932. package/dist/frontend/ts7/ast-wire.js +83 -20
  933. package/dist/frontend/ts7/ast-wire.js.map +1 -1
  934. package/dist/frontend/ts7/ast-wire.test.js +53 -8
  935. package/dist/frontend/ts7/ast-wire.test.js.map +1 -1
  936. package/dist/frontend/ts7/ast.d.ts +2 -1
  937. package/dist/frontend/ts7/ast.js +53 -30
  938. package/dist/frontend/ts7/ast.js.map +1 -1
  939. package/dist/frontend/ts7/census-check.js +1 -1
  940. package/dist/frontend/ts7/census-check.js.map +1 -1
  941. package/dist/frontend/ts7/checker-cache.js.map +1 -1
  942. package/dist/frontend/ts7/checker.d.ts +8 -2
  943. package/dist/frontend/ts7/checker.js +46 -8
  944. package/dist/frontend/ts7/checker.js.map +1 -1
  945. package/dist/frontend/ts7/checker.test.js +96 -17
  946. package/dist/frontend/ts7/checker.test.js.map +1 -1
  947. package/dist/frontend/ts7/enums.test.js +9 -4
  948. package/dist/frontend/ts7/enums.test.js.map +1 -1
  949. package/dist/frontend/ts7/native-api.js.map +1 -1
  950. package/dist/frontend/ts7/native-host.js.map +1 -1
  951. package/dist/frontend/ts7/native-process.js +9 -3
  952. package/dist/frontend/ts7/native-process.js.map +1 -1
  953. package/dist/frontend/ts7/program-adapter.js +1 -1
  954. package/dist/frontend/ts7/program-adapter.js.map +1 -1
  955. package/dist/frontend/ts7/program-host.d.ts +7 -0
  956. package/dist/frontend/ts7/program-host.js +33 -6
  957. package/dist/frontend/ts7/program-host.js.map +1 -1
  958. package/dist/frontend/ts7/program-host.test.js +72 -11
  959. package/dist/frontend/ts7/program-host.test.js.map +1 -1
  960. package/dist/frontend/ts7/rpc-api.js +3 -1
  961. package/dist/frontend/ts7/rpc-api.js.map +1 -1
  962. package/dist/frontend/ts7/rpc-client.js +15 -5
  963. package/dist/frontend/ts7/rpc-client.js.map +1 -1
  964. package/dist/frontend/ts7/rpc-client.test.js +26 -8
  965. package/dist/frontend/ts7/rpc-client.test.js.map +1 -1
  966. package/dist/frontend/ts7/rpc-filesystem.js.map +1 -1
  967. package/dist/frontend/ts7/rpc-filesystem.test.js +43 -10
  968. package/dist/frontend/ts7/rpc-filesystem.test.js.map +1 -1
  969. package/dist/frontend/ts7/rpc-process.js +16 -6
  970. package/dist/frontend/ts7/rpc-process.js.map +1 -1
  971. package/dist/frontend/ts7/rpc-process.test.js.map +1 -1
  972. package/dist/frontend/ts7/rpc-wire.d.ts +1 -0
  973. package/dist/frontend/ts7/rpc-wire.js +41 -14
  974. package/dist/frontend/ts7/rpc-wire.js.map +1 -1
  975. package/dist/frontend/ts7/rpc-wire.test.js +36 -6
  976. package/dist/frontend/ts7/rpc-wire.test.js.map +1 -1
  977. package/dist/frontend/ts7/semantic-checker.js +209 -68
  978. package/dist/frontend/ts7/semantic-checker.js.map +1 -1
  979. package/dist/frontend/ts7/semantic-checker.test.js +29 -14
  980. package/dist/frontend/ts7/semantic-checker.test.js.map +1 -1
  981. package/dist/frontend/ts7/semantic-json.js +7 -1
  982. package/dist/frontend/ts7/semantic-json.js.map +1 -1
  983. package/dist/frontend/ts7/semantic-json.test.js +17 -3
  984. package/dist/frontend/ts7/semantic-json.test.js.map +1 -1
  985. package/dist/frontend/ts7/semantic-model.js +147 -51
  986. package/dist/frontend/ts7/semantic-model.js.map +1 -1
  987. package/dist/frontend/ts7/semantic-model.test.js +72 -19
  988. package/dist/frontend/ts7/semantic-model.test.js.map +1 -1
  989. package/dist/frontend/ts7/semantic-types.d.ts +2 -2
  990. package/dist/frontend/ts7/session-cache.js +10 -3
  991. package/dist/frontend/ts7/session-cache.js.map +1 -1
  992. package/dist/frontend/ts7/session-cache.test.js +13 -4
  993. package/dist/frontend/ts7/session-cache.test.js.map +1 -1
  994. package/dist/frontend/ts7/session-path.js +25 -10
  995. package/dist/frontend/ts7/session-path.js.map +1 -1
  996. package/dist/frontend/ts7/session-path.test.js +47 -4
  997. package/dist/frontend/ts7/session-path.test.js.map +1 -1
  998. package/dist/frontend/ts7/session-timing.js +22 -3
  999. package/dist/frontend/ts7/session-timing.js.map +1 -1
  1000. package/dist/frontend/ts7/session-timing.test.js +12 -3
  1001. package/dist/frontend/ts7/session-timing.test.js.map +1 -1
  1002. package/dist/frontend/ts7/session.d.ts +1 -0
  1003. package/dist/frontend/ts7/session.js +109 -35
  1004. package/dist/frontend/ts7/session.js.map +1 -1
  1005. package/dist/frontend/ts7/session.test.js +69 -15
  1006. package/dist/frontend/ts7/session.test.js.map +1 -1
  1007. package/dist/frontend/ts7/source-parser.js +17 -6
  1008. package/dist/frontend/ts7/source-parser.js.map +1 -1
  1009. package/dist/frontend/ts7/source-parser.test.js +32 -9
  1010. package/dist/frontend/ts7/source-parser.test.js.map +1 -1
  1011. package/dist/frontend/tsc-codes.js +56 -11
  1012. package/dist/frontend/tsc-codes.js.map +1 -1
  1013. package/dist/frontend/tsc-codes.test.d.ts +1 -0
  1014. package/dist/frontend/tsc-codes.test.js +16 -0
  1015. package/dist/frontend/tsc-codes.test.js.map +1 -0
  1016. package/dist/frontend/type-mapper.d.ts +3 -0
  1017. package/dist/frontend/type-mapper.js +589 -206
  1018. package/dist/frontend/type-mapper.js.map +1 -1
  1019. package/dist/frontend/type-mapper.test.js +108 -33
  1020. package/dist/frontend/type-mapper.test.js.map +1 -1
  1021. package/dist/frontend/union-discriminants.js +8 -2
  1022. package/dist/frontend/union-discriminants.js.map +1 -1
  1023. package/dist/frontend/union-discriminants.test.js +77 -20
  1024. package/dist/frontend/union-discriminants.test.js.map +1 -1
  1025. package/dist/frontend/worker-target.d.ts +6 -0
  1026. package/dist/frontend/worker-target.js +108 -0
  1027. package/dist/frontend/worker-target.js.map +1 -0
  1028. package/dist/frontend/worker-target.test.d.ts +1 -0
  1029. package/dist/frontend/worker-target.test.js +71 -0
  1030. package/dist/frontend/worker-target.test.js.map +1 -0
  1031. package/dist/index.d.ts +9 -8
  1032. package/dist/index.js +174 -88
  1033. package/dist/index.js.map +1 -1
  1034. package/dist/ir/analysis.js +95 -38
  1035. package/dist/ir/analysis.js.map +1 -1
  1036. package/dist/ir/analysis.test.js +91 -15
  1037. package/dist/ir/analysis.test.js.map +1 -1
  1038. package/dist/ir/api.d.ts +4 -0
  1039. package/dist/ir/api.js +6 -0
  1040. package/dist/ir/api.js.map +1 -0
  1041. package/dist/ir/build.d.ts +7 -0
  1042. package/dist/ir/build.js +27 -1
  1043. package/dist/ir/build.js.map +1 -1
  1044. package/dist/ir/builtin-effects.d.ts +9 -0
  1045. package/dist/ir/builtin-effects.js +643 -0
  1046. package/dist/ir/builtin-effects.js.map +1 -0
  1047. package/dist/ir/builtin-signatures.d.ts +15 -0
  1048. package/dist/ir/builtin-signatures.js +3397 -0
  1049. package/dist/ir/builtin-signatures.js.map +1 -0
  1050. package/dist/ir/byte-numbers.js +67 -16
  1051. package/dist/ir/byte-numbers.js.map +1 -1
  1052. package/dist/ir/byte-numbers.test.js +17 -4
  1053. package/dist/ir/byte-numbers.test.js.map +1 -1
  1054. package/dist/ir/constant-tables.js +13 -5
  1055. package/dist/ir/constant-tables.js.map +1 -1
  1056. package/dist/ir/constant-tables.test.js +47 -7
  1057. package/dist/ir/constant-tables.test.js.map +1 -1
  1058. package/dist/ir/control-flow.js +2 -1
  1059. package/dist/ir/control-flow.js.map +1 -1
  1060. package/dist/ir/control-flow.test.js +35 -11
  1061. package/dist/ir/control-flow.test.js.map +1 -1
  1062. package/dist/ir/initializer-bindings.d.ts +9 -0
  1063. package/dist/ir/initializer-bindings.js +115 -0
  1064. package/dist/ir/initializer-bindings.js.map +1 -0
  1065. package/dist/ir/initializer-bindings.test.d.ts +1 -0
  1066. package/dist/ir/initializer-bindings.test.js +118 -0
  1067. package/dist/ir/initializer-bindings.test.js.map +1 -0
  1068. package/dist/ir/integer-loop-facts.d.ts +12 -0
  1069. package/dist/ir/integer-loop-facts.js +137 -0
  1070. package/dist/ir/integer-loop-facts.js.map +1 -0
  1071. package/dist/ir/integer-loops.js +85 -30
  1072. package/dist/ir/integer-loops.js.map +1 -1
  1073. package/dist/ir/integer-loops.test.js +76 -13
  1074. package/dist/ir/integer-loops.test.js.map +1 -1
  1075. package/dist/ir/integer-ranges.js +93 -21
  1076. package/dist/ir/integer-ranges.js.map +1 -1
  1077. package/dist/ir/integer-ranges.test.js +199 -21
  1078. package/dist/ir/integer-ranges.test.js.map +1 -1
  1079. package/dist/ir/intrinsic-signatures.d.ts +20 -0
  1080. package/dist/ir/intrinsic-signatures.js +57 -0
  1081. package/dist/ir/intrinsic-signatures.js.map +1 -0
  1082. package/dist/ir/ir.d.ts +15 -2160
  1083. package/dist/ir/ir.js +160 -1396
  1084. package/dist/ir/ir.js.map +1 -1
  1085. package/dist/ir/ir.test.js +98 -77
  1086. package/dist/ir/ir.test.js.map +1 -1
  1087. package/dist/ir/numeric-call-specialization.d.ts +8 -0
  1088. package/dist/ir/numeric-call-specialization.js +198 -0
  1089. package/dist/ir/numeric-call-specialization.js.map +1 -0
  1090. package/dist/ir/runtime-features.d.ts +221 -0
  1091. package/dist/ir/runtime-features.js +552 -0
  1092. package/dist/ir/runtime-features.js.map +1 -0
  1093. package/dist/ir/runtime-features.test.d.ts +1 -0
  1094. package/dist/ir/runtime-features.test.js +98 -0
  1095. package/dist/ir/runtime-features.test.js.map +1 -0
  1096. package/dist/ir/scalar-records.js +130 -40
  1097. package/dist/ir/scalar-records.js.map +1 -1
  1098. package/dist/ir/scalar-records.test.js +146 -27
  1099. package/dist/ir/scalar-records.test.js.map +1 -1
  1100. package/dist/ir/serialize.d.ts +1 -1
  1101. package/dist/ir/serialize.js +7 -5
  1102. package/dist/ir/serialize.js.map +1 -1
  1103. package/dist/ir/serialize.test.js +44 -9
  1104. package/dist/ir/serialize.test.js.map +1 -1
  1105. package/dist/ir/traverse.js +156 -43
  1106. package/dist/ir/traverse.js.map +1 -1
  1107. package/dist/ir/traverse.test.js +99 -24
  1108. package/dist/ir/traverse.test.js.map +1 -1
  1109. package/dist/ir/validate.d.ts +1 -31
  1110. package/dist/ir/validate.js +869 -1910
  1111. package/dist/ir/validate.js.map +1 -1
  1112. package/dist/ir/validate.test.js +697 -114
  1113. package/dist/ir/validate.test.js.map +1 -1
  1114. package/dist/library/cache-primitives.js +9 -10
  1115. package/dist/library/cache-primitives.js.map +1 -1
  1116. package/dist/library/cache-reset.test.js +2 -1
  1117. package/dist/library/cache-reset.test.js.map +1 -1
  1118. package/dist/library/compiler-self-identity.js +11 -5
  1119. package/dist/library/compiler-self-identity.js.map +1 -1
  1120. package/dist/library/compiler-self-identity.test.js +10 -3
  1121. package/dist/library/compiler-self-identity.test.js.map +1 -1
  1122. package/dist/library/fence-eval.js +24 -7
  1123. package/dist/library/fence-eval.js.map +1 -1
  1124. package/dist/library/fence-eval.test.js +31 -7
  1125. package/dist/library/fence-eval.test.js.map +1 -1
  1126. package/dist/library/int-infer.js +199 -59
  1127. package/dist/library/int-infer.js.map +1 -1
  1128. package/dist/library/int-infer.test.js +137 -61
  1129. package/dist/library/int-infer.test.js.map +1 -1
  1130. package/dist/library/ir-policy.d.ts +27 -0
  1131. package/dist/library/ir-policy.js +234 -0
  1132. package/dist/library/ir-policy.js.map +1 -0
  1133. package/dist/library/library-cache.js +40 -17
  1134. package/dist/library/library-cache.js.map +1 -1
  1135. package/dist/library/library-cache.test.js +29 -18
  1136. package/dist/library/library-cache.test.js.map +1 -1
  1137. package/dist/library/library-profile.js +68 -13
  1138. package/dist/library/library-profile.js.map +1 -1
  1139. package/dist/library/prepare.js +48 -20
  1140. package/dist/library/prepare.js.map +1 -1
  1141. package/dist/library/semantic-source.js +16 -14
  1142. package/dist/library/semantic-source.js.map +1 -1
  1143. package/dist/library/semantic-source.test.js +9 -14
  1144. package/dist/library/semantic-source.test.js.map +1 -1
  1145. package/dist/library/sidecar-validate.js +53 -12
  1146. package/dist/library/sidecar-validate.js.map +1 -1
  1147. package/dist/library/sidecar.js +85 -24
  1148. package/dist/library/sidecar.js.map +1 -1
  1149. package/dist/library/trap-teaching.js +11 -2
  1150. package/dist/library/trap-teaching.js.map +1 -1
  1151. package/dist/native/cache.js +10 -4
  1152. package/dist/native/cache.js.map +1 -1
  1153. package/dist/native/cli.js +34 -9
  1154. package/dist/native/cli.js.map +1 -1
  1155. package/dist/native/compiler.js +191 -54
  1156. package/dist/native/compiler.js.map +1 -1
  1157. package/dist/native/compiler.test.js +134 -33
  1158. package/dist/native/compiler.test.js.map +1 -1
  1159. package/dist/native/comptime.js +23 -7
  1160. package/dist/native/comptime.js.map +1 -1
  1161. package/dist/native/comptime.test.js +26 -6
  1162. package/dist/native/comptime.test.js.map +1 -1
  1163. package/dist/native/executable-cache.js +77 -27
  1164. package/dist/native/executable-cache.js.map +1 -1
  1165. package/dist/native/executable-cache.test.js +41 -6
  1166. package/dist/native/executable-cache.test.js.map +1 -1
  1167. package/dist/native/file-identity.js +9 -2
  1168. package/dist/native/file-identity.js.map +1 -1
  1169. package/dist/native/file-identity.test.js.map +1 -1
  1170. package/dist/native/library.js +50 -12
  1171. package/dist/native/library.js.map +1 -1
  1172. package/dist/native/prepare.js +121 -34
  1173. package/dist/native/prepare.js.map +1 -1
  1174. package/dist/native/prepare.test.js +22 -6
  1175. package/dist/native/prepare.test.js.map +1 -1
  1176. package/dist/native/runtime-typescript.js +24 -11
  1177. package/dist/native/runtime-typescript.js.map +1 -1
  1178. package/dist/native/runtime-typescript.test.js.map +1 -1
  1179. package/dist/native/sanitizer.js +71 -18
  1180. package/dist/native/sanitizer.js.map +1 -1
  1181. package/dist/native/sanitizer.test.js +78 -20
  1182. package/dist/native/sanitizer.test.js.map +1 -1
  1183. package/dist/native/task.js.map +1 -1
  1184. package/dist/native/task.test.js +7 -2
  1185. package/dist/native/task.test.js.map +1 -1
  1186. package/dist/native/toolchain.js +68 -26
  1187. package/dist/native/toolchain.js.map +1 -1
  1188. package/dist/native/toolchain.test.js +59 -20
  1189. package/dist/native/toolchain.test.js.map +1 -1
  1190. package/dist/startup-cache.d.ts +1 -1
  1191. package/dist/startup-cache.js +1 -1
  1192. package/dist/startup-cache.js.map +1 -1
  1193. package/dist/timing.js.map +1 -1
  1194. package/package.json +20 -20
  1195. package/surface-manifest.json +30 -2
  1196. package/dist/frontend/lowering/lower-builtins.d.ts +0 -601
  1197. package/dist/frontend/lowering/lower-builtins.js +0 -8986
  1198. package/dist/frontend/lowering/lower-builtins.js.map +0 -1
  1199. package/dist/frontend/lowering/lower-containers.d.ts +0 -382
  1200. package/dist/frontend/lowering/lower-containers.js +0 -7344
  1201. package/dist/frontend/lowering/lower-containers.js.map +0 -1
@@ -6,7 +6,7 @@
6
6
  * (ambient scriptc.d.ts / standard lib / @types/node provenance). */
7
7
  import * as ts from "../ts7/adapter.js";
8
8
  import { UNSUPPORTED } from "../../diagnostics/diagnostic.js";
9
- import { BOOL, BYTES_U8, CHILD_T, CRYPTOHASH_T, CRYPTOHMAC_T, DYN, F64, FILEHANDLE_T, SPAWNRES_T, STATS_T, STRING, URL_T, VOID, arrayOf } from "../../ir/ir.js";
9
+ import { BOOL, BYTES_U8, CHILD_T, CRYPTOHASH_T, CRYPTOHMAC_T, DYN, F64, FILEHANDLE_T, SPAWNRES_T, STATS_T, STRING, URL_T, VOID, arrayOf, } from "../../ir/ir.js";
10
10
  import { isJsSourceFile, isNodeTypesPath, requireSpecOf } from "../program.js";
11
11
  /** Statement-level constructs rejected wholesale, keyed by syntax kind. */
12
12
  export const UNSUPPORTED_STMT = {
@@ -96,19 +96,22 @@ export function sideEffectFreeOptionValue(node) {
96
96
  return true; // includes `undefined`
97
97
  if (ts.isStringLiteralLike(e) || ts.isNumericLiteral(e) || ts.isBigIntLiteral(e))
98
98
  return true;
99
- if (e.kind === ts.SyntaxKind.TrueKeyword || e.kind === ts.SyntaxKind.FalseKeyword ||
99
+ if (e.kind === ts.SyntaxKind.TrueKeyword ||
100
+ e.kind === ts.SyntaxKind.FalseKeyword ||
100
101
  e.kind === ts.SyntaxKind.NullKeyword)
101
102
  return true;
102
103
  if (ts.isArrowFunction(e) || ts.isFunctionExpression(e))
103
104
  return true;
104
105
  if (ts.isPrefixUnaryExpression(e) &&
105
- (e.operator === ts.SyntaxKind.MinusToken || e.operator === ts.SyntaxKind.PlusToken ||
106
+ (e.operator === ts.SyntaxKind.MinusToken ||
107
+ e.operator === ts.SyntaxKind.PlusToken ||
106
108
  e.operator === ts.SyntaxKind.ExclamationToken)) {
107
109
  return sideEffectFreeOptionValue(e.operand);
108
110
  }
109
111
  if (ts.isObjectLiteralExpression(e)) {
110
112
  return e.properties.every((p) => ts.isShorthandPropertyAssignment(p) ||
111
- (ts.isPropertyAssignment(p) && !ts.isComputedPropertyName(p.name) &&
113
+ (ts.isPropertyAssignment(p) &&
114
+ !ts.isComputedPropertyName(p.name) &&
112
115
  sideEffectFreeOptionValue(p.initializer)));
113
116
  }
114
117
  if (ts.isArrayLiteralExpression(e)) {
@@ -158,11 +161,31 @@ export function fenceOrDropOptionKey(lowerer, prop, key, api, documented, suppor
158
161
  * `http.request(options)` and `net.socket.connect` tables); everything
159
162
  * else on a client options literal is undocumented and drops. */
160
163
  export const HTTP_CLIENT_DOCUMENTED_OPTIONS = new Set([
161
- "agent", "auth", "createConnection", "defaultPort", "family", "headers",
162
- "hints", "host", "hostname", "insecureHTTPParser", "joinDuplicateHeaders",
163
- "localAddress", "localPort", "lookup", "maxHeaderSize", "method", "path",
164
- "port", "protocol", "setDefaultHeaders", "setHost", "signal", "socketPath",
165
- "timeout", "uniqueHeaders",
164
+ "agent",
165
+ "auth",
166
+ "createConnection",
167
+ "defaultPort",
168
+ "family",
169
+ "headers",
170
+ "hints",
171
+ "host",
172
+ "hostname",
173
+ "insecureHTTPParser",
174
+ "joinDuplicateHeaders",
175
+ "localAddress",
176
+ "localPort",
177
+ "lookup",
178
+ "maxHeaderSize",
179
+ "method",
180
+ "path",
181
+ "port",
182
+ "protocol",
183
+ "setDefaultHeaders",
184
+ "setHost",
185
+ "signal",
186
+ "socketPath",
187
+ "timeout",
188
+ "uniqueHeaders",
166
189
  ]);
167
190
  /** http.createServer / http.Server's documented option keys (Node v24 —
168
191
  * http.createServer options + the net.Server knobs it forwards). The
@@ -170,11 +193,25 @@ export const HTTP_CLIENT_DOCUMENTED_OPTIONS = new Set([
170
193
  * keepAliveTimeoutBuffer storage; the rest fence by name here, and
171
194
  * unknown keys drop like Node drops them. */
172
195
  export const HTTP_SERVER_DOCUMENTED_OPTIONS = new Set([
173
- "IncomingMessage", "ServerResponse", "allowHalfOpen", "connectionsCheckingInterval",
174
- "headersTimeout", "highWaterMark", "insecureHTTPParser", "joinDuplicateHeaders",
175
- "keepAlive", "keepAliveInitialDelay", "keepAliveTimeout", "keepAliveTimeoutBuffer", "maxHeaderSize",
176
- "noDelay", "pauseOnConnect", "rejectNonStandardBodyWrites", "requestTimeout",
177
- "requireHostHeader", "uniqueHeaders",
196
+ "IncomingMessage",
197
+ "ServerResponse",
198
+ "allowHalfOpen",
199
+ "connectionsCheckingInterval",
200
+ "headersTimeout",
201
+ "highWaterMark",
202
+ "insecureHTTPParser",
203
+ "joinDuplicateHeaders",
204
+ "keepAlive",
205
+ "keepAliveInitialDelay",
206
+ "keepAliveTimeout",
207
+ "keepAliveTimeoutBuffer",
208
+ "maxHeaderSize",
209
+ "noDelay",
210
+ "pauseOnConnect",
211
+ "rejectNonStandardBodyWrites",
212
+ "requestTimeout",
213
+ "requireHostHeader",
214
+ "uniqueHeaders",
178
215
  ]);
179
216
  /** new http.Agent(options)'s documented keys (Node v24 — the Agent
180
217
  * constructor table plus the socket.connect() options it forwards into
@@ -182,73 +219,161 @@ export const HTTP_SERVER_DOCUMENTED_OPTIONS = new Set([
182
219
  * maxFreeSockets/timeout/port (+ scheduling, dropped: no free pool
183
220
  * exists); the rest fence by name and unknown keys drop like Node. */
184
221
  export const AGENT_DOCUMENTED_OPTIONS = new Set([
185
- "family", "hints", "host", "keepAliveInitialDelay", "localAddress",
186
- "localPort", "lookup", "maxTotalSockets", "noDelay", "path",
222
+ "family",
223
+ "hints",
224
+ "host",
225
+ "keepAliveInitialDelay",
226
+ "localAddress",
227
+ "localPort",
228
+ "lookup",
229
+ "maxTotalSockets",
230
+ "noDelay",
231
+ "path",
187
232
  ]);
188
233
  /** https.request adds tls.connect's client-side TLS knobs. */
189
234
  export const HTTPS_CLIENT_DOCUMENTED_OPTIONS = new Set([
190
235
  ...HTTP_CLIENT_DOCUMENTED_OPTIONS,
191
- "ca", "cert", "checkServerIdentity", "ciphers", "clientCertEngine", "crl",
192
- "dhparam", "ecdhCurve", "highWaterMark", "honorCipherOrder", "key",
193
- "maxVersion", "minVersion", "passphrase", "pfx", "privateKeyEngine",
194
- "privateKeyIdentifier", "rejectUnauthorized", "secureOptions",
195
- "secureProtocol", "servername", "session", "sessionIdContext",
196
- "sessionTimeout", "sigalgs", "ticketKeys",
236
+ "ca",
237
+ "cert",
238
+ "checkServerIdentity",
239
+ "ciphers",
240
+ "clientCertEngine",
241
+ "crl",
242
+ "dhparam",
243
+ "ecdhCurve",
244
+ "highWaterMark",
245
+ "honorCipherOrder",
246
+ "key",
247
+ "maxVersion",
248
+ "minVersion",
249
+ "passphrase",
250
+ "pfx",
251
+ "privateKeyEngine",
252
+ "privateKeyIdentifier",
253
+ "rejectUnauthorized",
254
+ "secureOptions",
255
+ "secureProtocol",
256
+ "servername",
257
+ "session",
258
+ "sessionIdContext",
259
+ "sessionTimeout",
260
+ "sigalgs",
261
+ "ticketKeys",
197
262
  ]);
198
263
  /** tls.createServer / tls.createSecureContext / https.createServer /
199
264
  * http2.createSecureServer's documented TLS-side option keys (Node v24 —
200
265
  * tls.createSecureContext + tls.createServer + net.createServer). */
201
266
  export const TLS_SERVER_DOCUMENTED_OPTIONS = new Set([
202
- "ALPNProtocols", "ALPNCallback", "SNICallback", "allowHalfOpen", "ca",
203
- "cert", "ciphers", "clientCertEngine", "crl", "dhparam", "ecdhCurve",
204
- "enableTrace", "handshakeTimeout", "highWaterMark", "honorCipherOrder",
205
- "keepAlive", "keepAliveInitialDelay", "key", "maxVersion", "minVersion",
206
- "noDelay", "passphrase", "pauseOnConnect", "pfx", "privateKeyEngine",
207
- "privateKeyIdentifier", "pskCallback", "pskIdentityHint",
208
- "rejectUnauthorized", "requestCert", "requestOCSP", "secureContext",
209
- "secureOptions", "secureProtocol", "sessionIdContext", "sessionTimeout",
210
- "sigalgs", "ticketKeys",
267
+ "ALPNProtocols",
268
+ "ALPNCallback",
269
+ "SNICallback",
270
+ "allowHalfOpen",
271
+ "ca",
272
+ "cert",
273
+ "ciphers",
274
+ "clientCertEngine",
275
+ "crl",
276
+ "dhparam",
277
+ "ecdhCurve",
278
+ "enableTrace",
279
+ "handshakeTimeout",
280
+ "highWaterMark",
281
+ "honorCipherOrder",
282
+ "keepAlive",
283
+ "keepAliveInitialDelay",
284
+ "key",
285
+ "maxVersion",
286
+ "minVersion",
287
+ "noDelay",
288
+ "passphrase",
289
+ "pauseOnConnect",
290
+ "pfx",
291
+ "privateKeyEngine",
292
+ "privateKeyIdentifier",
293
+ "pskCallback",
294
+ "pskIdentityHint",
295
+ "rejectUnauthorized",
296
+ "requestCert",
297
+ "requestOCSP",
298
+ "secureContext",
299
+ "secureOptions",
300
+ "secureProtocol",
301
+ "sessionIdContext",
302
+ "sessionTimeout",
303
+ "sigalgs",
304
+ "ticketKeys",
211
305
  ]);
212
306
  /** http2.createSecureServer's documented keys: the h2 knobs on top of the
213
307
  * TLS server set. */
214
308
  export const HTTP2_SECURE_SERVER_DOCUMENTED_OPTIONS = new Set([
215
309
  ...TLS_SERVER_DOCUMENTED_OPTIONS,
216
- "allowHTTP1", "maxDeflateDynamicTableSize", "maxSettings",
217
- "maxSessionMemory", "maxHeaderListPairs", "maxOutstandingPings",
218
- "maxSendHeaderBlockLength", "origins", "paddingStrategy",
219
- "peerMaxConcurrentStreams", "remoteCustomSettings", "selectPadding",
220
- "settings", "streamResetBurst", "streamResetRate",
310
+ "allowHTTP1",
311
+ "maxDeflateDynamicTableSize",
312
+ "maxSettings",
313
+ "maxSessionMemory",
314
+ "maxHeaderListPairs",
315
+ "maxOutstandingPings",
316
+ "maxSendHeaderBlockLength",
317
+ "origins",
318
+ "paddingStrategy",
319
+ "peerMaxConcurrentStreams",
320
+ "remoteCustomSettings",
321
+ "selectPadding",
322
+ "settings",
323
+ "streamResetBurst",
324
+ "streamResetRate",
221
325
  "unknownProtocolTimeout",
222
326
  ]);
223
327
  /** fs.watch's documented option keys. */
224
328
  export const FS_WATCH_DOCUMENTED_OPTIONS = new Set([
225
- "persistent", "recursive", "encoding", "signal",
329
+ "persistent",
330
+ "recursive",
331
+ "encoding",
332
+ "signal",
226
333
  ]);
227
334
  /** fs.readdirSync's documented option keys. */
228
335
  export const FS_READDIR_DOCUMENTED_OPTIONS = new Set([
229
- "encoding", "withFileTypes", "recursive",
336
+ "encoding",
337
+ "withFileTypes",
338
+ "recursive",
230
339
  ]);
231
340
  /** fs.writeFileSync's documented option keys. */
232
341
  export const FS_WRITE_FILE_DOCUMENTED_OPTIONS = new Set([
233
- "encoding", "mode", "flag", "flush", "signal",
342
+ "encoding",
343
+ "mode",
344
+ "flag",
345
+ "flush",
346
+ "signal",
234
347
  ]);
235
348
  /** dns.lookup's documented option keys. */
236
349
  export const DNS_LOOKUP_DOCUMENTED_OPTIONS = new Set([
237
- "family", "hints", "all", "order", "verbatim",
350
+ "family",
351
+ "hints",
352
+ "all",
353
+ "order",
354
+ "verbatim",
238
355
  ]);
239
356
  /** querystring.parse's documented option keys (Node v24). */
240
357
  export const QS_PARSE_DOCUMENTED_OPTIONS = new Set([
241
- "maxKeys", "decodeURIComponent",
358
+ "maxKeys",
359
+ "decodeURIComponent",
242
360
  ]);
243
361
  /** querystring.stringify's documented option keys (Node v24). */
244
- export const QS_STRINGIFY_DOCUMENTED_OPTIONS = new Set([
245
- "encodeURIComponent",
246
- ]);
362
+ export const QS_STRINGIFY_DOCUMENTED_OPTIONS = new Set(["encodeURIComponent"]);
247
363
  /** readline.createInterface's documented option keys. */
248
364
  export const READLINE_DOCUMENTED_OPTIONS = new Set([
249
- "input", "output", "completer", "terminal", "history", "historySize",
250
- "removeHistoryDuplicates", "prompt", "crlfDelay", "escapeCodeTimeout",
251
- "tabSize", "signal",
365
+ "input",
366
+ "output",
367
+ "completer",
368
+ "terminal",
369
+ "history",
370
+ "historySize",
371
+ "removeHistoryDuplicates",
372
+ "prompt",
373
+ "crlfDelay",
374
+ "escapeCodeTimeout",
375
+ "tabSize",
376
+ "signal",
252
377
  ]);
253
378
  /** The lowered Array<T> method surface. Like STR_METHODS, membership is
254
379
  * only half the check — the resolved symbol must be declared by the
@@ -291,10 +416,25 @@ export const ARRAY_METHODS = new Set([
291
416
  * standard library (isStdlibMember). `size` is a property, handled in
292
417
  * property-access position. */
293
418
  export const COLLECTION_ITERATOR_METHODS = new Set(["keys", "values", "entries"]);
294
- export const MAP_METHODS = new Set(["get", "set", "has", "delete", "clear", "forEach", ...COLLECTION_ITERATOR_METHODS]);
419
+ export const MAP_METHODS = new Set([
420
+ "get",
421
+ "set",
422
+ "has",
423
+ "delete",
424
+ "clear",
425
+ "forEach",
426
+ ...COLLECTION_ITERATOR_METHODS,
427
+ ]);
295
428
  /** The lowered Set<T> method surface — Map's minus get/set plus add.
296
429
  * `size` is a property, handled in property-access position. */
297
- export const SET_METHODS = new Set(["add", "has", "delete", "clear", "forEach", ...COLLECTION_ITERATOR_METHODS]);
430
+ export const SET_METHODS = new Set([
431
+ "add",
432
+ "has",
433
+ "delete",
434
+ "clear",
435
+ "forEach",
436
+ ...COLLECTION_ITERATOR_METHODS,
437
+ ]);
298
438
  /** The ES2025 Set composition surface (union/intersection/…): desugared
299
439
  * to interned helper loops over the set iteration primitives — no user
300
440
  * code runs mid-loop, so the walks need no enter/exit bracketing. The
@@ -413,13 +553,37 @@ export const ISLAND_SURFACE = {
413
553
  math: {
414
554
  // The static table below handles these methods at its admitted arities.
415
555
  fns: {
416
- abs: ISL_N1, acos: ISL_N1, asin: ISL_N1, atan: ISL_N1, atan2: ISL_N2,
417
- acosh: ISL_N1, asinh: ISL_N1, atanh: ISL_N1,
418
- cbrt: ISL_N1, ceil: ISL_N1, clz32: ISL_N1, cos: ISL_N1, cosh: ISL_N1,
419
- exp: ISL_N1, expm1: ISL_N1, fround: ISL_N1,
420
- hypot: ISL_N2, imul: ISL_N2, log: ISL_N1, log1p: ISL_N1, log2: ISL_N1, log10: ISL_N1, pow: ISL_N2,
556
+ abs: ISL_N1,
557
+ acos: ISL_N1,
558
+ asin: ISL_N1,
559
+ atan: ISL_N1,
560
+ atan2: ISL_N2,
561
+ acosh: ISL_N1,
562
+ asinh: ISL_N1,
563
+ atanh: ISL_N1,
564
+ cbrt: ISL_N1,
565
+ ceil: ISL_N1,
566
+ clz32: ISL_N1,
567
+ cos: ISL_N1,
568
+ cosh: ISL_N1,
569
+ exp: ISL_N1,
570
+ expm1: ISL_N1,
571
+ fround: ISL_N1,
572
+ hypot: ISL_N2,
573
+ imul: ISL_N2,
574
+ log: ISL_N1,
575
+ log1p: ISL_N1,
576
+ log2: ISL_N1,
577
+ log10: ISL_N1,
578
+ pow: ISL_N2,
421
579
  round: ISL_N1,
422
- sign: ISL_N1, sin: ISL_N1, sinh: ISL_N1, sqrt: ISL_N1, tan: ISL_N1, tanh: ISL_N1, trunc: ISL_N1,
580
+ sign: ISL_N1,
581
+ sin: ISL_N1,
582
+ sinh: ISL_N1,
583
+ sqrt: ISL_N1,
584
+ tan: ISL_N1,
585
+ tanh: ISL_N1,
586
+ trunc: ISL_N1,
423
587
  },
424
588
  // Math constants are compile-time literals, not island properties.
425
589
  props: {},
@@ -530,19 +694,69 @@ function exactValueParams(...types) {
530
694
  /** Object helpers whose checked-native ABI is also their stored value ABI.
531
695
  * These adapters operate on the live checked object/property table. */
532
696
  export const OBJECT_CALLABLE_VALUES = {
533
- is: { fn: "dyn.sameValue", params: [DYN, DYN], result: BOOL, valueParams: exactValueParams(DYN, DYN) },
534
- create: { fn: "dyn.objCreateWithProperties", params: [DYN, DYN], result: DYN, valueParams: exactValueParams(DYN, DYN) },
535
- defineProperty: { fn: "dyn.defineProperty", params: [DYN, DYN, DYN], result: DYN, valueParams: exactValueParams(DYN, DYN, DYN) },
536
- getOwnPropertyDescriptor: { fn: "dyn.getOwnPropertyDescriptor", params: [DYN, DYN], result: DYN, valueParams: exactValueParams(DYN, DYN) },
537
- getOwnPropertyDescriptors: { fn: "dyn.getOwnPropertyDescriptors", params: [DYN], result: DYN, valueParams: exactValueParams(DYN) },
538
- defineProperties: { fn: "dyn.defineProps", params: [DYN, DYN], result: DYN, valueParams: exactValueParams(DYN, DYN) },
697
+ is: {
698
+ fn: "dyn.sameValue",
699
+ params: [DYN, DYN],
700
+ result: BOOL,
701
+ valueParams: exactValueParams(DYN, DYN),
702
+ },
703
+ create: {
704
+ fn: "dyn.objCreateWithProperties",
705
+ params: [DYN, DYN],
706
+ result: DYN,
707
+ valueParams: exactValueParams(DYN, DYN),
708
+ },
709
+ defineProperty: {
710
+ fn: "dyn.defineProperty",
711
+ params: [DYN, DYN, DYN],
712
+ result: DYN,
713
+ valueParams: exactValueParams(DYN, DYN, DYN),
714
+ },
715
+ getOwnPropertyDescriptor: {
716
+ fn: "dyn.getOwnPropertyDescriptor",
717
+ params: [DYN, DYN],
718
+ result: DYN,
719
+ valueParams: exactValueParams(DYN, DYN),
720
+ },
721
+ getOwnPropertyDescriptors: {
722
+ fn: "dyn.getOwnPropertyDescriptors",
723
+ params: [DYN],
724
+ result: DYN,
725
+ valueParams: exactValueParams(DYN),
726
+ },
727
+ defineProperties: {
728
+ fn: "dyn.defineProps",
729
+ params: [DYN, DYN],
730
+ result: DYN,
731
+ valueParams: exactValueParams(DYN, DYN),
732
+ },
539
733
  keys: { fn: "dyn.objKeys", params: [DYN], result: DYN, valueParams: exactValueParams(DYN) },
540
734
  values: { fn: "dyn.objValues", params: [DYN], result: DYN, valueParams: exactValueParams(DYN) },
541
735
  entries: { fn: "dyn.objEntries", params: [DYN], result: DYN, valueParams: exactValueParams(DYN) },
542
- fromEntries: { fn: "dyn.fromEntries", params: [DYN], result: DYN, valueParams: exactValueParams(DYN) },
543
- getOwnPropertySymbols: { fn: "dyn.getOwnPropertySymbols", params: [DYN], result: DYN, valueParams: exactValueParams(DYN) },
544
- getOwnPropertyNames: { fn: "dyn.getOwnPropertyNames", params: [DYN], result: DYN, valueParams: exactValueParams(DYN) },
545
- getPrototypeOf: { fn: "dyn.getPrototype", params: [DYN], result: DYN, valueParams: exactValueParams(DYN) },
736
+ fromEntries: {
737
+ fn: "dyn.fromEntries",
738
+ params: [DYN],
739
+ result: DYN,
740
+ valueParams: exactValueParams(DYN),
741
+ },
742
+ getOwnPropertySymbols: {
743
+ fn: "dyn.getOwnPropertySymbols",
744
+ params: [DYN],
745
+ result: DYN,
746
+ valueParams: exactValueParams(DYN),
747
+ },
748
+ getOwnPropertyNames: {
749
+ fn: "dyn.getOwnPropertyNames",
750
+ params: [DYN],
751
+ result: DYN,
752
+ valueParams: exactValueParams(DYN),
753
+ },
754
+ getPrototypeOf: {
755
+ fn: "dyn.getPrototype",
756
+ params: [DYN],
757
+ result: DYN,
758
+ valueParams: exactValueParams(DYN),
759
+ },
546
760
  };
547
761
  /** The lowerable surface of the supported node builtin modules, keyed by
548
762
  * CANONICAL module name (both "fs" and "node:fs" land on "fs" — see
@@ -557,29 +771,137 @@ export const OBJECT_CALLABLE_VALUES = {
557
771
  * platform's rules on any host). toNamespacedPath is the posix identity
558
772
  * (Node: a non-op on posix systems). */
559
773
  const PATH_MODULE_FNS = {
560
- join: { fn: "path.join", params: [STRING], result: STRING, variadicPack: true, valueParams: [{ mode: "rest", type: STRING }] },
561
- resolve: { fn: "path.resolve", params: [STRING], result: STRING, variadicPack: true, valueParams: [{ mode: "rest", type: STRING }] },
562
- normalize: { fn: "path.normalize", params: [STRING], result: STRING, valueParams: [{ mode: "required", type: STRING }] },
563
- dirname: { fn: "path.dirname", params: [STRING], result: STRING, valueParams: [{ mode: "required", type: STRING }] },
564
- basename: { fn: "path.basename", params: [STRING, STRING], result: STRING, defaults: [""], valueParams: [{ mode: "required", type: STRING }, { mode: "optional", type: STRING, defaultValue: "" }] },
565
- extname: { fn: "path.extname", params: [STRING], result: STRING, valueParams: [{ mode: "required", type: STRING }] },
566
- isAbsolute: { fn: "path.isAbsolute", params: [STRING], result: BOOL, valueParams: [{ mode: "required", type: STRING }] },
567
- relative: { fn: "path.relative", params: [STRING, STRING], result: STRING, valueParams: [{ mode: "required", type: STRING }, { mode: "required", type: STRING }] },
568
- toNamespacedPath: { fn: "path.toNamespacedPath", params: [STRING], result: STRING, valueParams: [{ mode: "required", type: STRING }] },
774
+ join: {
775
+ fn: "path.join",
776
+ params: [STRING],
777
+ result: STRING,
778
+ variadicPack: true,
779
+ valueParams: [{ mode: "rest", type: STRING }],
780
+ },
781
+ resolve: {
782
+ fn: "path.resolve",
783
+ params: [STRING],
784
+ result: STRING,
785
+ variadicPack: true,
786
+ valueParams: [{ mode: "rest", type: STRING }],
787
+ },
788
+ normalize: {
789
+ fn: "path.normalize",
790
+ params: [STRING],
791
+ result: STRING,
792
+ valueParams: [{ mode: "required", type: STRING }],
793
+ },
794
+ dirname: {
795
+ fn: "path.dirname",
796
+ params: [STRING],
797
+ result: STRING,
798
+ valueParams: [{ mode: "required", type: STRING }],
799
+ },
800
+ basename: {
801
+ fn: "path.basename",
802
+ params: [STRING, STRING],
803
+ result: STRING,
804
+ defaults: [""],
805
+ valueParams: [
806
+ { mode: "required", type: STRING },
807
+ { mode: "optional", type: STRING, defaultValue: "" },
808
+ ],
809
+ },
810
+ extname: {
811
+ fn: "path.extname",
812
+ params: [STRING],
813
+ result: STRING,
814
+ valueParams: [{ mode: "required", type: STRING }],
815
+ },
816
+ isAbsolute: {
817
+ fn: "path.isAbsolute",
818
+ params: [STRING],
819
+ result: BOOL,
820
+ valueParams: [{ mode: "required", type: STRING }],
821
+ },
822
+ relative: {
823
+ fn: "path.relative",
824
+ params: [STRING, STRING],
825
+ result: STRING,
826
+ valueParams: [
827
+ { mode: "required", type: STRING },
828
+ { mode: "required", type: STRING },
829
+ ],
830
+ },
831
+ toNamespacedPath: {
832
+ fn: "path.toNamespacedPath",
833
+ params: [STRING],
834
+ result: STRING,
835
+ valueParams: [{ mode: "required", type: STRING }],
836
+ },
569
837
  };
570
838
  /** The win32 twins (scr_path.c's Node-v24 path.win32 port, byte-for-byte):
571
839
  * "path/win32" everywhere, and the bare-module table when the build
572
840
  * TARGETS win32 — Node on Windows is path.win32. */
573
841
  const PATH_WIN32_MODULE_FNS = {
574
- join: { fn: "path.win32Join", params: [STRING], result: STRING, variadicPack: true, valueParams: [{ mode: "rest", type: STRING }] },
575
- resolve: { fn: "path.win32Resolve", params: [STRING], result: STRING, variadicPack: true, valueParams: [{ mode: "rest", type: STRING }] },
576
- normalize: { fn: "path.win32Normalize", params: [STRING], result: STRING, valueParams: [{ mode: "required", type: STRING }] },
577
- dirname: { fn: "path.win32Dirname", params: [STRING], result: STRING, valueParams: [{ mode: "required", type: STRING }] },
578
- basename: { fn: "path.win32Basename", params: [STRING, STRING], result: STRING, defaults: [""], valueParams: [{ mode: "required", type: STRING }, { mode: "optional", type: STRING, defaultValue: "" }] },
579
- extname: { fn: "path.win32Extname", params: [STRING], result: STRING, valueParams: [{ mode: "required", type: STRING }] },
580
- isAbsolute: { fn: "path.win32IsAbsolute", params: [STRING], result: BOOL, valueParams: [{ mode: "required", type: STRING }] },
581
- relative: { fn: "path.win32Relative", params: [STRING, STRING], result: STRING, valueParams: [{ mode: "required", type: STRING }, { mode: "required", type: STRING }] },
582
- toNamespacedPath: { fn: "path.win32ToNamespacedPath", params: [STRING], result: STRING, valueParams: [{ mode: "required", type: STRING }] },
842
+ join: {
843
+ fn: "path.win32Join",
844
+ params: [STRING],
845
+ result: STRING,
846
+ variadicPack: true,
847
+ valueParams: [{ mode: "rest", type: STRING }],
848
+ },
849
+ resolve: {
850
+ fn: "path.win32Resolve",
851
+ params: [STRING],
852
+ result: STRING,
853
+ variadicPack: true,
854
+ valueParams: [{ mode: "rest", type: STRING }],
855
+ },
856
+ normalize: {
857
+ fn: "path.win32Normalize",
858
+ params: [STRING],
859
+ result: STRING,
860
+ valueParams: [{ mode: "required", type: STRING }],
861
+ },
862
+ dirname: {
863
+ fn: "path.win32Dirname",
864
+ params: [STRING],
865
+ result: STRING,
866
+ valueParams: [{ mode: "required", type: STRING }],
867
+ },
868
+ basename: {
869
+ fn: "path.win32Basename",
870
+ params: [STRING, STRING],
871
+ result: STRING,
872
+ defaults: [""],
873
+ valueParams: [
874
+ { mode: "required", type: STRING },
875
+ { mode: "optional", type: STRING, defaultValue: "" },
876
+ ],
877
+ },
878
+ extname: {
879
+ fn: "path.win32Extname",
880
+ params: [STRING],
881
+ result: STRING,
882
+ valueParams: [{ mode: "required", type: STRING }],
883
+ },
884
+ isAbsolute: {
885
+ fn: "path.win32IsAbsolute",
886
+ params: [STRING],
887
+ result: BOOL,
888
+ valueParams: [{ mode: "required", type: STRING }],
889
+ },
890
+ relative: {
891
+ fn: "path.win32Relative",
892
+ params: [STRING, STRING],
893
+ result: STRING,
894
+ valueParams: [
895
+ { mode: "required", type: STRING },
896
+ { mode: "required", type: STRING },
897
+ ],
898
+ },
899
+ toNamespacedPath: {
900
+ fn: "path.win32ToNamespacedPath",
901
+ params: [STRING],
902
+ result: STRING,
903
+ valueParams: [{ mode: "required", type: STRING }],
904
+ },
583
905
  };
584
906
  export const BUILTIN_MODULE_FNS = {
585
907
  fs: {
@@ -590,7 +912,12 @@ export const BUILTIN_MODULE_FNS = {
590
912
  // options before entering the fixed runtime call.
591
913
  writeFileSync: { fn: "fs.writeFileSync", params: [STRING, STRING], result: VOID },
592
914
  appendFileSync: { fn: "fs.appendFileSync", params: [STRING, STRING], result: VOID },
593
- existsSync: { fn: "fs.existsSync", params: [STRING], result: BOOL, valueParams: exactValueParams(STRING) },
915
+ existsSync: {
916
+ fn: "fs.existsSync",
917
+ params: [STRING],
918
+ result: BOOL,
919
+ valueParams: exactValueParams(STRING),
920
+ },
594
921
  mkdirSync: { fn: "fs.mkdirSync", params: [STRING], result: VOID },
595
922
  rmSync: { fn: "fs.rmSync", params: [STRING], result: VOID },
596
923
  rmdirSync: { fn: "fs.rmdirSync", params: [STRING], result: VOID },
@@ -600,9 +927,24 @@ export const BUILTIN_MODULE_FNS = {
600
927
  // accessSync's omitted mode completes to 0 (F_OK) in the special case
601
928
  // in lowerBuiltinModuleCall — string `defaults` can't spell a number.
602
929
  accessSync: { fn: "fs.accessSync", params: [STRING, F64], result: VOID },
603
- unlinkSync: { fn: "fs.unlinkSync", params: [STRING], result: VOID, valueParams: exactValueParams(STRING) },
604
- chmodSync: { fn: "fs.chmodSync", params: [STRING, F64], result: VOID, valueParams: exactValueParams(STRING, F64) },
605
- chownSync: { fn: "fs.chownSync", params: [STRING, F64, F64], result: VOID, valueParams: exactValueParams(STRING, F64, F64) },
930
+ unlinkSync: {
931
+ fn: "fs.unlinkSync",
932
+ params: [STRING],
933
+ result: VOID,
934
+ valueParams: exactValueParams(STRING),
935
+ },
936
+ chmodSync: {
937
+ fn: "fs.chmodSync",
938
+ params: [STRING, F64],
939
+ result: VOID,
940
+ valueParams: exactValueParams(STRING, F64),
941
+ },
942
+ chownSync: {
943
+ fn: "fs.chownSync",
944
+ params: [STRING, F64, F64],
945
+ result: VOID,
946
+ valueParams: exactValueParams(STRING, F64, F64),
947
+ },
606
948
  // The 2-argument form only: Node's mode flags (COPYFILE_EXCL, ...)
607
949
  // land on the arity fence.
608
950
  copyFileSync: { fn: "fs.copyFileSync", params: [STRING, STRING], result: VOID },
@@ -611,30 +953,78 @@ export const BUILTIN_MODULE_FNS = {
611
953
  // adapter. The row still projects the static surface and routes the
612
954
  // dispatch.
613
955
  rename: { fn: "fs.renameCb", params: [], result: VOID },
614
- renameSync: { fn: "fs.renameSync", params: [STRING, STRING], result: VOID, valueParams: exactValueParams(STRING, STRING) },
956
+ renameSync: {
957
+ fn: "fs.renameSync",
958
+ params: [STRING, STRING],
959
+ result: VOID,
960
+ valueParams: exactValueParams(STRING, STRING),
961
+ },
615
962
  // statSync's no-follow sibling; stats.isSymbolicLink answers what the
616
963
  // follow-free snapshot saw.
617
964
  lstatSync: { fn: "fs.lstatSync", params: [STRING], result: STATS_T },
618
- fstatSync: { fn: "fs.fstatSync", params: [F64], result: STATS_T, valueParams: exactValueParams(F64) },
619
- fchmodSync: { fn: "fs.fchmodSync", params: [F64, F64], result: VOID, valueParams: exactValueParams(F64, F64) },
620
- fsyncSync: { fn: "fs.fsyncSync", params: [F64], result: VOID, valueParams: exactValueParams(F64) },
621
- fdatasyncSync: { fn: "fs.fdatasyncSync", params: [F64], result: VOID, valueParams: exactValueParams(F64) },
965
+ fstatSync: {
966
+ fn: "fs.fstatSync",
967
+ params: [F64],
968
+ result: STATS_T,
969
+ valueParams: exactValueParams(F64),
970
+ },
971
+ fchmodSync: {
972
+ fn: "fs.fchmodSync",
973
+ params: [F64, F64],
974
+ result: VOID,
975
+ valueParams: exactValueParams(F64, F64),
976
+ },
977
+ fsyncSync: {
978
+ fn: "fs.fsyncSync",
979
+ params: [F64],
980
+ result: VOID,
981
+ valueParams: exactValueParams(F64),
982
+ },
983
+ fdatasyncSync: {
984
+ fn: "fs.fdatasyncSync",
985
+ params: [F64],
986
+ result: VOID,
987
+ valueParams: exactValueParams(F64),
988
+ },
622
989
  ftruncateSync: { fn: "fs.ftruncateSync", params: [F64, F64], result: VOID },
623
990
  utimesSync: { fn: "fs.utimesSync", params: [DYN, DYN, DYN], result: VOID },
624
991
  futimesSync: { fn: "fs.futimesSync", params: [DYN, DYN, DYN], result: VOID },
625
992
  lutimesSync: { fn: "fs.lutimesSync", params: [DYN, DYN, DYN], result: VOID },
626
993
  readvSync: { fn: "fs.readvSync", params: [F64, arrayOf(BYTES_U8), F64], result: F64 },
627
994
  writevSync: { fn: "fs.writevSync", params: [F64, arrayOf(BYTES_U8), F64], result: F64 },
628
- linkSync: { fn: "fs.linkSync", params: [DYN, DYN], result: VOID, valueParams: exactValueParams(DYN, DYN) },
629
- symlinkSync: { fn: "fs.symlinkSync", params: [DYN, DYN, DYN], result: VOID, valueParams: [
630
- ...exactValueParams(DYN, DYN), { mode: "optional", type: DYN, defaultValue: undefined },
631
- ] },
632
- readlinkSync: { fn: "fs.readlinkSync", params: [DYN, DYN], result: DYN, valueParams: [
633
- ...exactValueParams(DYN), { mode: "optional", type: DYN, defaultValue: undefined },
634
- ] },
635
- statfsSync: { fn: "fs.statfsSync", params: [DYN, DYN], result: DYN, valueParams: [
636
- ...exactValueParams(DYN), { mode: "optional", type: DYN, defaultValue: undefined },
637
- ] },
995
+ linkSync: {
996
+ fn: "fs.linkSync",
997
+ params: [DYN, DYN],
998
+ result: VOID,
999
+ valueParams: exactValueParams(DYN, DYN),
1000
+ },
1001
+ symlinkSync: {
1002
+ fn: "fs.symlinkSync",
1003
+ params: [DYN, DYN, DYN],
1004
+ result: VOID,
1005
+ valueParams: [
1006
+ ...exactValueParams(DYN, DYN),
1007
+ { mode: "optional", type: DYN, defaultValue: undefined },
1008
+ ],
1009
+ },
1010
+ readlinkSync: {
1011
+ fn: "fs.readlinkSync",
1012
+ params: [DYN, DYN],
1013
+ result: DYN,
1014
+ valueParams: [
1015
+ ...exactValueParams(DYN),
1016
+ { mode: "optional", type: DYN, defaultValue: undefined },
1017
+ ],
1018
+ },
1019
+ statfsSync: {
1020
+ fn: "fs.statfsSync",
1021
+ params: [DYN, DYN],
1022
+ result: DYN,
1023
+ valueParams: [
1024
+ ...exactValueParams(DYN),
1025
+ { mode: "optional", type: DYN, defaultValue: undefined },
1026
+ ],
1027
+ },
638
1028
  // realpath(3) — Node's realpathSync (failures spell syscall "lstat",
639
1029
  // Node's own message shape).
640
1030
  realpathSync: { fn: "fs.realpathSync", params: [STRING], result: STRING },
@@ -654,7 +1044,12 @@ export const BUILTIN_MODULE_FNS = {
654
1044
  // overloads lower to separate fixed-width runtime ABIs. As with
655
1045
  // readSync, -1 is the current-offset sentinel.
656
1046
  writeSync: { fn: "fs.writeSync", params: [F64, BYTES_U8, F64, F64, F64], result: F64 },
657
- closeSync: { fn: "fs.closeSync", params: [F64], result: VOID, valueParams: exactValueParams(F64) },
1047
+ closeSync: {
1048
+ fn: "fs.closeSync",
1049
+ params: [F64],
1050
+ result: VOID,
1051
+ valueParams: exactValueParams(F64),
1052
+ },
658
1053
  // Entirely special-cased (lowerFsWatchCall — the callback needs an
659
1054
  // adapter per listener shape); this entry only routes the dispatch.
660
1055
  watch: { fn: "fs.watch", params: [], result: VOID },
@@ -663,37 +1058,96 @@ export const BUILTIN_MODULE_FNS = {
663
1058
  // The sync operations behind already-settled promises: failures
664
1059
  // REJECT (catchable at the await) instead of throwing. readFile is
665
1060
  // utf8-fenced exactly like readFileSync (same special case below).
666
- readFile: { fn: "fsp.readFile", params: [STRING, STRING], result: { kind: "promise", inner: STRING } },
667
- writeFile: { fn: "fsp.writeFile", params: [STRING, STRING], result: { kind: "promise", inner: VOID } },
1061
+ readFile: {
1062
+ fn: "fsp.readFile",
1063
+ params: [STRING, STRING],
1064
+ result: { kind: "promise", inner: STRING },
1065
+ },
1066
+ writeFile: {
1067
+ fn: "fsp.writeFile",
1068
+ params: [STRING, STRING],
1069
+ result: { kind: "promise", inner: VOID },
1070
+ },
668
1071
  mkdir: { fn: "fsp.mkdir", params: [STRING], result: { kind: "promise", inner: VOID } },
669
- readdir: { fn: "fsp.readdir", params: [STRING], result: { kind: "promise", inner: arrayOf(STRING) } },
1072
+ readdir: {
1073
+ fn: "fsp.readdir",
1074
+ params: [STRING],
1075
+ result: { kind: "promise", inner: arrayOf(STRING) },
1076
+ },
670
1077
  rm: { fn: "fsp.rm", params: [STRING], result: { kind: "promise", inner: VOID } },
671
1078
  stat: { fn: "fsp.stat", params: [STRING], result: { kind: "promise", inner: STATS_T } },
672
1079
  realpath: { fn: "fsp.realpath", params: [STRING], result: { kind: "promise", inner: STRING } },
673
1080
  lstat: { fn: "fsp.lstat", params: [STRING], result: { kind: "promise", inner: STATS_T } },
674
- unlink: { fn: "fsp.unlink", params: [STRING], result: { kind: "promise", inner: VOID }, valueParams: exactValueParams(STRING) },
675
- chmod: { fn: "fsp.chmod", params: [STRING, F64], result: { kind: "promise", inner: VOID }, valueParams: exactValueParams(STRING, F64) },
676
- link: { fn: "fsp.link", params: [DYN, DYN], result: { kind: "promise", inner: VOID }, valueParams: exactValueParams(DYN, DYN) },
677
- symlink: { fn: "fsp.symlink", params: [DYN, DYN, DYN], result: { kind: "promise", inner: VOID }, valueParams: [
678
- ...exactValueParams(DYN, DYN), { mode: "optional", type: DYN, defaultValue: undefined },
679
- ] },
680
- readlink: { fn: "fsp.readlink", params: [DYN, DYN], result: { kind: "promise", inner: DYN }, valueParams: [
681
- ...exactValueParams(DYN), { mode: "optional", type: DYN, defaultValue: undefined },
682
- ] },
683
- statfs: { fn: "fsp.statfs", params: [DYN, DYN], result: { kind: "promise", inner: DYN }, valueParams: [
684
- ...exactValueParams(DYN), { mode: "optional", type: DYN, defaultValue: undefined },
685
- ] },
1081
+ unlink: {
1082
+ fn: "fsp.unlink",
1083
+ params: [STRING],
1084
+ result: { kind: "promise", inner: VOID },
1085
+ valueParams: exactValueParams(STRING),
1086
+ },
1087
+ chmod: {
1088
+ fn: "fsp.chmod",
1089
+ params: [STRING, F64],
1090
+ result: { kind: "promise", inner: VOID },
1091
+ valueParams: exactValueParams(STRING, F64),
1092
+ },
1093
+ link: {
1094
+ fn: "fsp.link",
1095
+ params: [DYN, DYN],
1096
+ result: { kind: "promise", inner: VOID },
1097
+ valueParams: exactValueParams(DYN, DYN),
1098
+ },
1099
+ symlink: {
1100
+ fn: "fsp.symlink",
1101
+ params: [DYN, DYN, DYN],
1102
+ result: { kind: "promise", inner: VOID },
1103
+ valueParams: [
1104
+ ...exactValueParams(DYN, DYN),
1105
+ { mode: "optional", type: DYN, defaultValue: undefined },
1106
+ ],
1107
+ },
1108
+ readlink: {
1109
+ fn: "fsp.readlink",
1110
+ params: [DYN, DYN],
1111
+ result: { kind: "promise", inner: DYN },
1112
+ valueParams: [
1113
+ ...exactValueParams(DYN),
1114
+ { mode: "optional", type: DYN, defaultValue: undefined },
1115
+ ],
1116
+ },
1117
+ statfs: {
1118
+ fn: "fsp.statfs",
1119
+ params: [DYN, DYN],
1120
+ result: { kind: "promise", inner: DYN },
1121
+ valueParams: [
1122
+ ...exactValueParams(DYN),
1123
+ { mode: "optional", type: DYN, defaultValue: undefined },
1124
+ ],
1125
+ },
686
1126
  utimes: { fn: "fsp.utimes", params: [DYN, DYN, DYN], result: { kind: "promise", inner: VOID } },
687
- lutimes: { fn: "fsp.lutimes", params: [DYN, DYN, DYN], result: { kind: "promise", inner: VOID } },
688
- rename: { fn: "fsp.rename", params: [STRING, STRING], result: { kind: "promise", inner: VOID }, valueParams: exactValueParams(STRING, STRING) },
1127
+ lutimes: {
1128
+ fn: "fsp.lutimes",
1129
+ params: [DYN, DYN, DYN],
1130
+ result: { kind: "promise", inner: VOID },
1131
+ },
1132
+ rename: {
1133
+ fn: "fsp.rename",
1134
+ params: [STRING, STRING],
1135
+ result: { kind: "promise", inner: VOID },
1136
+ valueParams: exactValueParams(STRING, STRING),
1137
+ },
689
1138
  // open's optional flags/mode completion is special-cased in
690
1139
  // lowerBuiltinModuleCall; this row routes all import spellings and
691
1140
  // gives coverage the static member.
692
- open: { fn: "fsp.open", params: [STRING, STRING, F64], result: { kind: "promise", inner: FILEHANDLE_T }, valueParams: [
1141
+ open: {
1142
+ fn: "fsp.open",
1143
+ params: [STRING, STRING, F64],
1144
+ result: { kind: "promise", inner: FILEHANDLE_T },
1145
+ valueParams: [
693
1146
  { mode: "required", type: STRING },
694
1147
  { mode: "optional", type: STRING, defaultValue: "r" },
695
1148
  { mode: "optional", type: F64, defaultValue: 0o666 },
696
- ] },
1149
+ ],
1150
+ },
697
1151
  },
698
1152
  // The bare module's POSIX-target binding; a win32 target rebinds it to
699
1153
  // the win32 table (builtinModuleFnsOf — Node on Windows IS path.win32).
@@ -733,7 +1187,12 @@ export const BUILTIN_MODULE_FNS = {
733
1187
  // form KEEPS its one-libCall lowering (lowerCryptoComposedCall runs
734
1188
  // first and the Buffer never materializes there); this entry covers
735
1189
  // the bare calls and non-composed uses.
736
- randomBytes: { fn: "crypto.randomBytes", params: [F64], result: BYTES_U8, valueParams: exactValueParams(F64) },
1190
+ randomBytes: {
1191
+ fn: "crypto.randomBytes",
1192
+ params: [F64],
1193
+ result: BYTES_U8,
1194
+ valueParams: exactValueParams(F64),
1195
+ },
737
1196
  // The crypto utility surface is special-cased for overloads and
738
1197
  // string/Buffer splits in lowerCryptoModuleCall. These rows carry the
739
1198
  // canonical signatures for manifest projection and fallback dispatch.
@@ -743,9 +1202,17 @@ export const BUILTIN_MODULE_FNS = {
743
1202
  timingSafeEqual: { fn: "crypto.timingSafeEqual", params: [BYTES_U8, BYTES_U8], result: BOOL },
744
1203
  randomFillSync: { fn: "crypto.randomFill", params: [BYTES_U8, F64, F64], result: BYTES_U8 },
745
1204
  randomInt: { fn: "crypto.randomInt", params: [F64, F64], result: F64 },
746
- pbkdf2Sync: { fn: "crypto.pbkdf2", params: [BYTES_U8, BYTES_U8, F64, F64, STRING], result: BYTES_U8 },
1205
+ pbkdf2Sync: {
1206
+ fn: "crypto.pbkdf2",
1207
+ params: [BYTES_U8, BYTES_U8, F64, F64, STRING],
1208
+ result: BYTES_U8,
1209
+ },
747
1210
  pbkdf2: { fn: "crypto.pbkdf2Cb", params: [], result: VOID },
748
- hkdfSync: { fn: "crypto.hkdf", params: [STRING, BYTES_U8, BYTES_U8, BYTES_U8, F64], result: DYN },
1211
+ hkdfSync: {
1212
+ fn: "crypto.hkdf",
1213
+ params: [STRING, BYTES_U8, BYTES_U8, BYTES_U8, F64],
1214
+ result: DYN,
1215
+ },
749
1216
  hkdf: { fn: "crypto.hkdfCb", params: [], result: VOID },
750
1217
  scryptSync: { fn: "crypto.scrypt", params: [BYTES_U8, BYTES_U8, F64, DYN], result: BYTES_U8 },
751
1218
  scrypt: { fn: "crypto.scryptCb", params: [], result: VOID },
@@ -772,9 +1239,33 @@ export const BUILTIN_MODULE_FNS = {
772
1239
  crc32: { fn: "zlib.crc32", params: [], result: F64 },
773
1240
  },
774
1241
  url: {
775
- fileURLToPath: { fn: "url.fileURLToPathOptions", params: [DYN, DYN], result: STRING, valueParams: [{ mode: "required", type: DYN }, { mode: "optional", type: DYN, defaultValue: undefined }] },
776
- fileURLToPathBuffer: { fn: "url.fileURLToPathBuffer", params: [DYN, DYN], result: BYTES_U8, valueParams: [{ mode: "required", type: DYN }, { mode: "optional", type: DYN, defaultValue: undefined }] },
777
- pathToFileURL: { fn: "url.pathToFileURLChecked", params: [DYN, DYN], result: URL_T, valueParams: [{ mode: "required", type: DYN }, { mode: "optional", type: DYN, defaultValue: undefined }] },
1242
+ fileURLToPath: {
1243
+ fn: "url.fileURLToPathOptions",
1244
+ params: [DYN, DYN],
1245
+ result: STRING,
1246
+ valueParams: [
1247
+ { mode: "required", type: DYN },
1248
+ { mode: "optional", type: DYN, defaultValue: undefined },
1249
+ ],
1250
+ },
1251
+ fileURLToPathBuffer: {
1252
+ fn: "url.fileURLToPathBuffer",
1253
+ params: [DYN, DYN],
1254
+ result: BYTES_U8,
1255
+ valueParams: [
1256
+ { mode: "required", type: DYN },
1257
+ { mode: "optional", type: DYN, defaultValue: undefined },
1258
+ ],
1259
+ },
1260
+ pathToFileURL: {
1261
+ fn: "url.pathToFileURLChecked",
1262
+ params: [DYN, DYN],
1263
+ result: URL_T,
1264
+ valueParams: [
1265
+ { mode: "required", type: DYN },
1266
+ { mode: "optional", type: DYN, defaultValue: undefined },
1267
+ ],
1268
+ },
778
1269
  },
779
1270
  child_process: {
780
1271
  // spawnSync's and spawn's call completions are entirely special-cased
@@ -804,15 +1295,53 @@ export const BUILTIN_MODULE_FNS = {
804
1295
  // the dedicated static member; the spoke owns its optional arity and
805
1296
  // call-site-specific result type before this canonical signature is used.
806
1297
  util: {
807
- styleText: { fn: "util.styleText", params: [DYN, DYN, DYN], result: STRING, valueParams: [{ mode: "required", type: DYN }, { mode: "required", type: DYN }, { mode: "optional", type: DYN, defaultValue: undefined }] },
808
- isDeepStrictEqual: { fn: "util.isDeepStrictEqual", params: [DYN, DYN, DYN], result: BOOL, valueParams: [{ mode: "required", type: DYN }, { mode: "required", type: DYN }, { mode: "optional", type: DYN, defaultValue: undefined }] },
1298
+ styleText: {
1299
+ fn: "util.styleText",
1300
+ params: [DYN, DYN, DYN],
1301
+ result: STRING,
1302
+ valueParams: [
1303
+ { mode: "required", type: DYN },
1304
+ { mode: "required", type: DYN },
1305
+ { mode: "optional", type: DYN, defaultValue: undefined },
1306
+ ],
1307
+ },
1308
+ isDeepStrictEqual: {
1309
+ fn: "util.isDeepStrictEqual",
1310
+ params: [DYN, DYN, DYN],
1311
+ result: BOOL,
1312
+ valueParams: [
1313
+ { mode: "required", type: DYN },
1314
+ { mode: "required", type: DYN },
1315
+ { mode: "optional", type: DYN, defaultValue: undefined },
1316
+ ],
1317
+ },
809
1318
  parseArgs: { fn: "util.parseArgs", params: [DYN], result: DYN },
810
1319
  parseEnv: { fn: "util.parseEnv", params: [DYN], result: DYN },
811
- getSystemErrorName: { fn: "util.getSystemErrorName", params: [DYN], result: STRING, valueParams: exactValueParams(DYN) },
812
- getSystemErrorMessage: { fn: "util.getSystemErrorMessage", params: [DYN], result: STRING, valueParams: exactValueParams(DYN) },
1320
+ getSystemErrorName: {
1321
+ fn: "util.getSystemErrorName",
1322
+ params: [DYN],
1323
+ result: STRING,
1324
+ valueParams: exactValueParams(DYN),
1325
+ },
1326
+ getSystemErrorMessage: {
1327
+ fn: "util.getSystemErrorMessage",
1328
+ params: [DYN],
1329
+ result: STRING,
1330
+ valueParams: exactValueParams(DYN),
1331
+ },
813
1332
  getSystemErrorMap: { fn: "util.systemErrorEntries", params: [], result: DYN },
814
- stripVTControlCharacters: { fn: "util.stripVTControlCharacters", params: [DYN], result: STRING, valueParams: exactValueParams(DYN) },
815
- toUSVString: { fn: "util.toUSVString", params: [DYN], result: STRING, valueParams: exactValueParams(DYN) },
1333
+ stripVTControlCharacters: {
1334
+ fn: "util.stripVTControlCharacters",
1335
+ params: [DYN],
1336
+ result: STRING,
1337
+ valueParams: exactValueParams(DYN),
1338
+ },
1339
+ toUSVString: {
1340
+ fn: "util.toUSVString",
1341
+ params: [DYN],
1342
+ result: STRING,
1343
+ valueParams: exactValueParams(DYN),
1344
+ },
816
1345
  },
817
1346
  // The util/types spoke supplies the probe name to the shared brand check.
818
1347
  "util/types": {
@@ -868,8 +1397,18 @@ export const BUILTIN_MODULE_FNS = {
868
1397
  decode: { fn: "qs.parse", params: [STRING], result: VOID },
869
1398
  stringify: { fn: "qs.stringify", params: [DYN], result: STRING },
870
1399
  encode: { fn: "qs.stringify", params: [DYN], result: STRING },
871
- escape: { fn: "qs.escape", params: [STRING], result: STRING, valueParams: [{ mode: "required", type: STRING }] },
872
- unescape: { fn: "qs.unescape", params: [STRING], result: STRING, valueParams: [{ mode: "required", type: STRING }] },
1400
+ escape: {
1401
+ fn: "qs.escape",
1402
+ params: [STRING],
1403
+ result: STRING,
1404
+ valueParams: [{ mode: "required", type: STRING }],
1405
+ },
1406
+ unescape: {
1407
+ fn: "qs.unescape",
1408
+ params: [STRING],
1409
+ result: STRING,
1410
+ valueParams: [{ mode: "required", type: STRING }],
1411
+ },
873
1412
  },
874
1413
  // node:readline: createInterface's options are entirely special-cased
875
1414
  // (exactly { input: process.stdin, output?: process.stdout } — see
@@ -889,8 +1428,16 @@ export const BUILTIN_MODULE_FNS = {
889
1428
  // The process-wide happy-eyeballs attempt budget: one runtime double
890
1429
  // in the core unit (never links scr_net.c by itself), default 250ms
891
1430
  // like Node's.
892
- getDefaultAutoSelectFamilyAttemptTimeout: { fn: "net.getAutoSelTimeout", params: [], result: F64 },
893
- setDefaultAutoSelectFamilyAttemptTimeout: { fn: "net.setAutoSelTimeout", params: [F64], result: VOID },
1431
+ getDefaultAutoSelectFamilyAttemptTimeout: {
1432
+ fn: "net.getAutoSelTimeout",
1433
+ params: [],
1434
+ result: F64,
1435
+ },
1436
+ setDefaultAutoSelectFamilyAttemptTimeout: {
1437
+ fn: "net.setAutoSelTimeout",
1438
+ params: [F64],
1439
+ result: VOID,
1440
+ },
894
1441
  },
895
1442
  http: {},
896
1443
  // node:tls and node:https ride the same spoke (tls.createServer's
@@ -939,7 +1486,7 @@ export const BUILTIN_MODULE_FNS = {
939
1486
  // handle (type-mapper.ts maps Channel to F64); the subscriber arguments box
940
1487
  // into the checked-dynamic tree (special-cased in lowerBuiltinModuleCall — the entries
941
1488
  // carry canonical shapes and route the dispatch). The Channel method
942
- // surface lowers through lowerDcChannelMethodCall/lowerDcChannelProperty.
1489
+ // surface lowers through lowerDiagnosticsChannelMethodCall/lowerDiagnosticsChannelProperty.
943
1490
  diagnostics_channel: {
944
1491
  channel: { fn: "dc.channel", params: [STRING], result: F64 },
945
1492
  subscribe: { fn: "dc.subscribe", params: [STRING, DYN], result: VOID },
@@ -954,10 +1501,9 @@ export const BUILTIN_MODULE_FNS = {
954
1501
  * a literal of its value's kind. The bare-module values are the TARGET
955
1502
  * platform's (builtinModuleConstOf swaps the win32 values in under a win32
956
1503
  * triple — Node's own platform conditionals); the named namespaces answer
957
- * THEIR platform's constants everywhere. worker_threads/cluster carry the
958
- * main-thread truths: a compiled binary IS the main thread (no JS-engine
959
- * thread machinery) and never runs as a cluster worker (cluster forks the
960
- * node binary itself) — Node's own answers for a directly-run script. */
1504
+ * THEIR platform's constants everywhere. Worker metadata uses these names
1505
+ * for inventory but reads the current runtime context in its dedicated
1506
+ * lowering. Cluster metadata describes a directly-run native executable. */
961
1507
  export const BUILTIN_MODULE_CONSTS = {
962
1508
  http: { maxHeaderSize: 16384 },
963
1509
  path: { sep: "/", delimiter: ":" },
@@ -985,7 +1531,15 @@ export const BUILTIN_MODULE_FN_ALIASES = {
985
1531
  openSync: ["fs.openNumericSync"],
986
1532
  // The Buffer form (no encoding), the fd forms (readFileSync(fd[,
987
1533
  // "utf8"])), and the checked-dynamic encoding form.
988
- readFileSync: ["fs.readFileSyncBuf", "fs.readFileSyncBytes", "fs.readFileSyncDyn", "fs.readFdSync", "fs.readFdSyncBytes"],
1534
+ readFileSync: [
1535
+ "fs.readFileSyncBuf",
1536
+ "fs.readFileSyncBytes",
1537
+ "fs.readFileSyncDyn",
1538
+ "fs.readFileEncoded",
1539
+ "fs.readFdEncoded",
1540
+ "fs.readFdSync",
1541
+ "fs.readFdSyncBytes",
1542
+ ],
989
1543
  readlinkSync: ["fs.readlinkSyncStr", "fs.readlinkSyncBuffer"],
990
1544
  // The bytes-data form and the { mode } options form.
991
1545
  writeFileSync: ["fs.writeFileSyncBytes", "fs.writeFileModeSync"],
@@ -1033,6 +1587,34 @@ export const BUILTIN_MODULE_FN_ALIASES = {
1033
1587
  },
1034
1588
  };
1035
1589
  export const AMBIENT_SURFACE_FNS = [
1590
+ {
1591
+ id: "node-builtin.worker_threads.Worker",
1592
+ kind: "node-builtin",
1593
+ name: "worker_threads.Worker",
1594
+ fns: ["worker.new"],
1595
+ note: "native threads with statically compiled entry points, workerData, argv and message events",
1596
+ },
1597
+ {
1598
+ id: "node-builtin.worker_threads.metadata",
1599
+ kind: "node-builtin",
1600
+ name: "worker_threads metadata",
1601
+ fns: ["worker.isMainThread", "worker.threadId", "worker.data", "worker.parentPort"],
1602
+ note: "current-thread metadata and the worker's parent message port",
1603
+ },
1604
+ {
1605
+ id: "stdlib.sharedArrayBuffer",
1606
+ kind: "stdlib",
1607
+ name: "SharedArrayBuffer",
1608
+ fns: ["sharedArrayBuffer.new"],
1609
+ note: "fixed shared storage with context-local typed-array and DataView wrappers",
1610
+ },
1611
+ {
1612
+ id: "stdlib.atomics",
1613
+ kind: "stdlib",
1614
+ name: "Atomics",
1615
+ fns: ["atomics.op", "atomics.wait", "atomics.notify"],
1616
+ note: "8-, 16- and 32-bit integer operations, plus Int32Array wait and notify",
1617
+ },
1036
1618
  {
1037
1619
  id: "node-builtin.fs.callbacks",
1038
1620
  kind: "node-builtin",
@@ -1091,23 +1673,103 @@ export const AMBIENT_SURFACE_FNS = [
1091
1673
  fns: ["date.toISOString", "date.toISOStringValue"],
1092
1674
  note: "UTC ISO formatting over constructed and stored Date values",
1093
1675
  },
1094
- { id: "stdlib.date.getFullYear", kind: "stdlib", name: "Date.prototype.getFullYear", fns: ["date.getFullYear"] },
1095
- { id: "stdlib.date.getUTCFullYear", kind: "stdlib", name: "Date.prototype.getUTCFullYear", fns: ["date.getUTCFullYear"] },
1096
- { id: "stdlib.date.getMonth", kind: "stdlib", name: "Date.prototype.getMonth", fns: ["date.getMonth"] },
1097
- { id: "stdlib.date.getUTCMonth", kind: "stdlib", name: "Date.prototype.getUTCMonth", fns: ["date.getUTCMonth"] },
1098
- { id: "stdlib.date.getDate", kind: "stdlib", name: "Date.prototype.getDate", fns: ["date.getDate"] },
1099
- { id: "stdlib.date.getUTCDate", kind: "stdlib", name: "Date.prototype.getUTCDate", fns: ["date.getUTCDate"] },
1676
+ {
1677
+ id: "stdlib.date.getFullYear",
1678
+ kind: "stdlib",
1679
+ name: "Date.prototype.getFullYear",
1680
+ fns: ["date.getFullYear"],
1681
+ },
1682
+ {
1683
+ id: "stdlib.date.getUTCFullYear",
1684
+ kind: "stdlib",
1685
+ name: "Date.prototype.getUTCFullYear",
1686
+ fns: ["date.getUTCFullYear"],
1687
+ },
1688
+ {
1689
+ id: "stdlib.date.getMonth",
1690
+ kind: "stdlib",
1691
+ name: "Date.prototype.getMonth",
1692
+ fns: ["date.getMonth"],
1693
+ },
1694
+ {
1695
+ id: "stdlib.date.getUTCMonth",
1696
+ kind: "stdlib",
1697
+ name: "Date.prototype.getUTCMonth",
1698
+ fns: ["date.getUTCMonth"],
1699
+ },
1700
+ {
1701
+ id: "stdlib.date.getDate",
1702
+ kind: "stdlib",
1703
+ name: "Date.prototype.getDate",
1704
+ fns: ["date.getDate"],
1705
+ },
1706
+ {
1707
+ id: "stdlib.date.getUTCDate",
1708
+ kind: "stdlib",
1709
+ name: "Date.prototype.getUTCDate",
1710
+ fns: ["date.getUTCDate"],
1711
+ },
1100
1712
  { id: "stdlib.date.getDay", kind: "stdlib", name: "Date.prototype.getDay", fns: ["date.getDay"] },
1101
- { id: "stdlib.date.getUTCDay", kind: "stdlib", name: "Date.prototype.getUTCDay", fns: ["date.getUTCDay"] },
1102
- { id: "stdlib.date.getHours", kind: "stdlib", name: "Date.prototype.getHours", fns: ["date.getHours"] },
1103
- { id: "stdlib.date.getUTCHours", kind: "stdlib", name: "Date.prototype.getUTCHours", fns: ["date.getUTCHours"] },
1104
- { id: "stdlib.date.getMinutes", kind: "stdlib", name: "Date.prototype.getMinutes", fns: ["date.getMinutes"] },
1105
- { id: "stdlib.date.getUTCMinutes", kind: "stdlib", name: "Date.prototype.getUTCMinutes", fns: ["date.getUTCMinutes"] },
1106
- { id: "stdlib.date.getSeconds", kind: "stdlib", name: "Date.prototype.getSeconds", fns: ["date.getSeconds"] },
1107
- { id: "stdlib.date.getUTCSeconds", kind: "stdlib", name: "Date.prototype.getUTCSeconds", fns: ["date.getUTCSeconds"] },
1108
- { id: "stdlib.date.getMilliseconds", kind: "stdlib", name: "Date.prototype.getMilliseconds", fns: ["date.getMilliseconds"] },
1109
- { id: "stdlib.date.getUTCMilliseconds", kind: "stdlib", name: "Date.prototype.getUTCMilliseconds", fns: ["date.getUTCMilliseconds"] },
1110
- { id: "stdlib.date.getTimezoneOffset", kind: "stdlib", name: "Date.prototype.getTimezoneOffset", fns: ["date.getTimezoneOffset"] },
1713
+ {
1714
+ id: "stdlib.date.getUTCDay",
1715
+ kind: "stdlib",
1716
+ name: "Date.prototype.getUTCDay",
1717
+ fns: ["date.getUTCDay"],
1718
+ },
1719
+ {
1720
+ id: "stdlib.date.getHours",
1721
+ kind: "stdlib",
1722
+ name: "Date.prototype.getHours",
1723
+ fns: ["date.getHours"],
1724
+ },
1725
+ {
1726
+ id: "stdlib.date.getUTCHours",
1727
+ kind: "stdlib",
1728
+ name: "Date.prototype.getUTCHours",
1729
+ fns: ["date.getUTCHours"],
1730
+ },
1731
+ {
1732
+ id: "stdlib.date.getMinutes",
1733
+ kind: "stdlib",
1734
+ name: "Date.prototype.getMinutes",
1735
+ fns: ["date.getMinutes"],
1736
+ },
1737
+ {
1738
+ id: "stdlib.date.getUTCMinutes",
1739
+ kind: "stdlib",
1740
+ name: "Date.prototype.getUTCMinutes",
1741
+ fns: ["date.getUTCMinutes"],
1742
+ },
1743
+ {
1744
+ id: "stdlib.date.getSeconds",
1745
+ kind: "stdlib",
1746
+ name: "Date.prototype.getSeconds",
1747
+ fns: ["date.getSeconds"],
1748
+ },
1749
+ {
1750
+ id: "stdlib.date.getUTCSeconds",
1751
+ kind: "stdlib",
1752
+ name: "Date.prototype.getUTCSeconds",
1753
+ fns: ["date.getUTCSeconds"],
1754
+ },
1755
+ {
1756
+ id: "stdlib.date.getMilliseconds",
1757
+ kind: "stdlib",
1758
+ name: "Date.prototype.getMilliseconds",
1759
+ fns: ["date.getMilliseconds"],
1760
+ },
1761
+ {
1762
+ id: "stdlib.date.getUTCMilliseconds",
1763
+ kind: "stdlib",
1764
+ name: "Date.prototype.getUTCMilliseconds",
1765
+ fns: ["date.getUTCMilliseconds"],
1766
+ },
1767
+ {
1768
+ id: "stdlib.date.getTimezoneOffset",
1769
+ kind: "stdlib",
1770
+ name: "Date.prototype.getTimezoneOffset",
1771
+ fns: ["date.getTimezoneOffset"],
1772
+ },
1111
1773
  // ── perf_hooks (lowerPerfHooksCall): the monotonic clock.
1112
1774
  {
1113
1775
  id: "node-builtin.perf_hooks.performance.now",
@@ -1126,25 +1788,75 @@ export const AMBIENT_SURFACE_FNS = [
1126
1788
  fns: ["process.envGet", "process.envSet", "process.envUnset", "process.envPairs"],
1127
1789
  note: "reads, writes, deletes, and enumeration of the process environment (the process global)",
1128
1790
  },
1129
- { id: "node-builtin.process.argv", kind: "node-builtin", name: "process.argv", fns: ["process.argv"] },
1130
- { id: "node-builtin.process.hrtime", kind: "node-builtin", name: "process.hrtime", fns: ["process.hrtimeValue"], note: "native monotonic tuple clock and bigint member; direct calls and stored JavaScript callable values" },
1131
1791
  {
1132
- id: "node-builtin.process.getBuiltinModule", kind: "node-builtin", name: "process.getBuiltinModule",
1792
+ id: "node-builtin.process.argv",
1793
+ kind: "node-builtin",
1794
+ name: "process.argv",
1795
+ fns: ["process.argv"],
1796
+ },
1797
+ {
1798
+ id: "node-builtin.process.hrtime",
1799
+ kind: "node-builtin",
1800
+ name: "process.hrtime",
1801
+ fns: ["process.hrtimeValue"],
1802
+ note: "native monotonic tuple clock and bigint member; direct calls and stored JavaScript callable values",
1803
+ },
1804
+ {
1805
+ id: "node-builtin.process.getBuiltinModule",
1806
+ kind: "node-builtin",
1807
+ name: "process.getBuiltinModule",
1133
1808
  fns: ["process.builtinId", "process.builtinModule", "process.builtinUnsupported"],
1134
- note: "native path and os export subsets plus main-thread worker_threads metadata; other modules and exports throw SC2020",
1809
+ note: "native path and os export subsets plus current-thread worker_threads metadata; other modules and exports throw SC2020",
1135
1810
  },
1136
1811
  {
1137
- id: "node-builtin.process.versions", kind: "node-builtin", name: "process.versions",
1812
+ id: "node-builtin.process.versions",
1813
+ kind: "node-builtin",
1814
+ name: "process.versions",
1138
1815
  fns: ["process.versions"],
1139
1816
  note: "shared version dictionary containing node and openssl; other components are absent unless defined by the program",
1140
1817
  },
1141
- { id: "node-builtin.process.cwd", kind: "node-builtin", name: "process.cwd", fns: ["process.cwd"] },
1142
- { id: "node-builtin.process.chdir", kind: "node-builtin", name: "process.chdir", fns: ["process.chdir"] },
1143
- { id: "node-builtin.process.pid", kind: "node-builtin", name: "process.pid", fns: ["process.pid"] },
1144
- { id: "node-builtin.process.getuid", kind: "node-builtin", name: "process.getuid", fns: ["process.getuid"] },
1145
- { id: "node-builtin.process.getgid", kind: "node-builtin", name: "process.getgid", fns: ["process.getgid"] },
1146
- { id: "node-builtin.process.execPath", kind: "node-builtin", name: "process.execPath", fns: ["process.execPath"] },
1147
- { id: "node-builtin.process.uptime", kind: "node-builtin", name: "process.uptime", fns: ["process.uptime"] },
1818
+ {
1819
+ id: "node-builtin.process.cwd",
1820
+ kind: "node-builtin",
1821
+ name: "process.cwd",
1822
+ fns: ["process.cwd"],
1823
+ },
1824
+ {
1825
+ id: "node-builtin.process.chdir",
1826
+ kind: "node-builtin",
1827
+ name: "process.chdir",
1828
+ fns: ["process.chdir"],
1829
+ },
1830
+ {
1831
+ id: "node-builtin.process.pid",
1832
+ kind: "node-builtin",
1833
+ name: "process.pid",
1834
+ fns: ["process.pid"],
1835
+ },
1836
+ {
1837
+ id: "node-builtin.process.getuid",
1838
+ kind: "node-builtin",
1839
+ name: "process.getuid",
1840
+ fns: ["process.getuid"],
1841
+ },
1842
+ {
1843
+ id: "node-builtin.process.getgid",
1844
+ kind: "node-builtin",
1845
+ name: "process.getgid",
1846
+ fns: ["process.getgid"],
1847
+ },
1848
+ {
1849
+ id: "node-builtin.process.execPath",
1850
+ kind: "node-builtin",
1851
+ name: "process.execPath",
1852
+ fns: ["process.execPath"],
1853
+ },
1854
+ {
1855
+ id: "node-builtin.process.uptime",
1856
+ kind: "node-builtin",
1857
+ name: "process.uptime",
1858
+ fns: ["process.uptime"],
1859
+ },
1148
1860
  {
1149
1861
  id: "node-builtin.process.availableMemory",
1150
1862
  kind: "node-builtin",
@@ -1168,14 +1880,25 @@ export const AMBIENT_SURFACE_FNS = [
1168
1880
  id: "node-builtin.process.cpuUsage",
1169
1881
  kind: "node-builtin",
1170
1882
  name: "process.cpuUsage",
1171
- fns: ["process.cpuUser", "process.cpuSystem", "process.cpuUserDiff", "process.cpuSystemDiff", "process.cpuPrevValidate"],
1883
+ fns: [
1884
+ "process.cpuUser",
1885
+ "process.cpuSystem",
1886
+ "process.cpuUserDiff",
1887
+ "process.cpuSystemDiff",
1888
+ "process.cpuPrevValidate",
1889
+ ],
1172
1890
  note: "the plain-sample and previous-value diff forms are one surface",
1173
1891
  },
1174
1892
  {
1175
1893
  id: "node-builtin.process.threadCpuUsage",
1176
1894
  kind: "node-builtin",
1177
1895
  name: "process.threadCpuUsage",
1178
- fns: ["process.threadCpuUser", "process.threadCpuSystem", "process.threadCpuUserDiff", "process.threadCpuSystemDiff"],
1896
+ fns: [
1897
+ "process.threadCpuUser",
1898
+ "process.threadCpuSystem",
1899
+ "process.threadCpuUserDiff",
1900
+ "process.threadCpuSystemDiff",
1901
+ ],
1179
1902
  note: "the plain-sample and previous-value diff forms are one surface",
1180
1903
  },
1181
1904
  {
@@ -1206,7 +1929,12 @@ export const AMBIENT_SURFACE_FNS = [
1206
1929
  fns: ["process.kill", "process.killNum"],
1207
1930
  note: "the signal-name and signal-number forms are one surface",
1208
1931
  },
1209
- { id: "node-builtin.process.umask", kind: "node-builtin", name: "process.umask", fns: ["process.umask"] },
1932
+ {
1933
+ id: "node-builtin.process.umask",
1934
+ kind: "node-builtin",
1935
+ name: "process.umask",
1936
+ fns: ["process.umask"],
1937
+ },
1210
1938
  {
1211
1939
  id: "node-builtin.process.exit",
1212
1940
  kind: "node-builtin",
@@ -1287,9 +2015,44 @@ export function builtinModuleFnOf(lowerer, module, member) {
1287
2015
  }
1288
2016
  /** Native error-first function values used by platform service adapters. */
1289
2017
  export const FS_CALLBACK_MEMBERS = new Set([
1290
- "access", "cp", "copyFile", "chmod", "chown", "glob", "link", "mkdir", "mkdtemp", "rm", "rmdir", "unlink",
1291
- "open", "close", "fstat", "ftruncate", "fsync", "fdatasync", "fchmod", "read", "write", "readv", "writev", "readlink", "realpath", "rename", "stat", "lstat",
1292
- "symlink", "statfs", "truncate", "utimes", "futimes", "lutimes", "readFile", "writeFile", "appendFile", "readdir",
2018
+ "access",
2019
+ "cp",
2020
+ "copyFile",
2021
+ "chmod",
2022
+ "chown",
2023
+ "glob",
2024
+ "link",
2025
+ "mkdir",
2026
+ "mkdtemp",
2027
+ "rm",
2028
+ "rmdir",
2029
+ "unlink",
2030
+ "open",
2031
+ "close",
2032
+ "fstat",
2033
+ "ftruncate",
2034
+ "fsync",
2035
+ "fdatasync",
2036
+ "fchmod",
2037
+ "read",
2038
+ "write",
2039
+ "readv",
2040
+ "writev",
2041
+ "readlink",
2042
+ "realpath",
2043
+ "rename",
2044
+ "stat",
2045
+ "lstat",
2046
+ "symlink",
2047
+ "statfs",
2048
+ "truncate",
2049
+ "utimes",
2050
+ "futimes",
2051
+ "lutimes",
2052
+ "readFile",
2053
+ "writeFile",
2054
+ "appendFile",
2055
+ "readdir",
1293
2056
  ]);
1294
2057
  /** One member's fence hint, own-property-safe (a collision would print an
1295
2058
  * inherited function into the diagnostic text). */
@@ -1327,20 +2090,78 @@ export function builtinConstLit(value, loc) {
1327
2090
  * array — a divergence only mutation could observe, and mutating Node's
1328
2091
  * frozen array throws anyway. */
1329
2092
  export const NODE_BUILTIN_MODULES_V24 = [
1330
- "_http_agent", "_http_client", "_http_common", "_http_incoming",
1331
- "_http_outgoing", "_http_server", "_stream_duplex", "_stream_passthrough",
1332
- "_stream_readable", "_stream_transform", "_stream_wrap", "_stream_writable",
1333
- "_tls_common", "_tls_wrap", "assert", "assert/strict", "async_hooks",
1334
- "buffer", "child_process", "cluster", "console", "constants", "crypto",
1335
- "dgram", "diagnostics_channel", "dns", "dns/promises", "domain", "events",
1336
- "fs", "fs/promises", "http", "http2", "https", "inspector",
1337
- "inspector/promises", "module", "net", "os", "path", "path/posix",
1338
- "path/win32", "perf_hooks", "process", "punycode", "querystring",
1339
- "readline", "readline/promises", "repl", "stream", "stream/consumers",
1340
- "stream/promises", "stream/web", "string_decoder", "sys", "timers",
1341
- "timers/promises", "tls", "trace_events", "tty", "url", "util",
1342
- "util/types", "v8", "vm", "wasi", "worker_threads", "zlib",
1343
- "node:sea", "node:sqlite", "node:test", "node:test/reporters",
2093
+ "_http_agent",
2094
+ "_http_client",
2095
+ "_http_common",
2096
+ "_http_incoming",
2097
+ "_http_outgoing",
2098
+ "_http_server",
2099
+ "_stream_duplex",
2100
+ "_stream_passthrough",
2101
+ "_stream_readable",
2102
+ "_stream_transform",
2103
+ "_stream_wrap",
2104
+ "_stream_writable",
2105
+ "_tls_common",
2106
+ "_tls_wrap",
2107
+ "assert",
2108
+ "assert/strict",
2109
+ "async_hooks",
2110
+ "buffer",
2111
+ "child_process",
2112
+ "cluster",
2113
+ "console",
2114
+ "constants",
2115
+ "crypto",
2116
+ "dgram",
2117
+ "diagnostics_channel",
2118
+ "dns",
2119
+ "dns/promises",
2120
+ "domain",
2121
+ "events",
2122
+ "fs",
2123
+ "fs/promises",
2124
+ "http",
2125
+ "http2",
2126
+ "https",
2127
+ "inspector",
2128
+ "inspector/promises",
2129
+ "module",
2130
+ "net",
2131
+ "os",
2132
+ "path",
2133
+ "path/posix",
2134
+ "path/win32",
2135
+ "perf_hooks",
2136
+ "process",
2137
+ "punycode",
2138
+ "querystring",
2139
+ "readline",
2140
+ "readline/promises",
2141
+ "repl",
2142
+ "stream",
2143
+ "stream/consumers",
2144
+ "stream/promises",
2145
+ "stream/web",
2146
+ "string_decoder",
2147
+ "sys",
2148
+ "timers",
2149
+ "timers/promises",
2150
+ "tls",
2151
+ "trace_events",
2152
+ "tty",
2153
+ "url",
2154
+ "util",
2155
+ "util/types",
2156
+ "v8",
2157
+ "vm",
2158
+ "wasi",
2159
+ "worker_threads",
2160
+ "zlib",
2161
+ "node:sea",
2162
+ "node:sqlite",
2163
+ "node:test",
2164
+ "node:test/reporters",
1344
2165
  ];
1345
2166
  /** The array-literal read of module.builtinModules — both value paths
1346
2167
  * (the named-import binding and the namespace member read) mint the
@@ -1348,7 +2169,12 @@ export const NODE_BUILTIN_MODULES_V24 = [
1348
2169
  export function builtinModulesArrayLit(loc) {
1349
2170
  return {
1350
2171
  kind: "arrayLit",
1351
- elems: NODE_BUILTIN_MODULES_V24.map((m) => ({ kind: "strLit", value: m, type: STRING, loc })),
2172
+ elems: NODE_BUILTIN_MODULES_V24.map((m) => ({
2173
+ kind: "strLit",
2174
+ value: m,
2175
+ type: STRING,
2176
+ loc,
2177
+ })),
1352
2178
  type: arrayOf(STRING),
1353
2179
  loc,
1354
2180
  };
@@ -1367,7 +2193,7 @@ const ASSERT_MODULE_HINTS = {
1367
2193
  ifError: "test explicitly instead: assert.strictEqual(err, null) / " +
1368
2194
  "assert.strictEqual(err, undefined)",
1369
2195
  rejects: "await the promise inside assert.throws's callback story instead: " +
1370
- "try { await p; assert.fail(\"expected rejection\") } catch { ... }",
2196
+ 'try { await p; assert.fail("expected rejection") } catch { ... }',
1371
2197
  doesNotReject: "await the promise directly — an unexpected rejection already fails the test",
1372
2198
  AssertionError: "the class itself has no lowering — catch and test err.name === " +
1373
2199
  '"AssertionError" or err.code === "ERR_ASSERTION"',
@@ -1409,12 +2235,26 @@ export const BUILTIN_MODULE_FENCE_HINTS = {
1409
2235
  },
1410
2236
  crypto: {
1411
2237
  ...Object.fromEntries([
1412
- "generateKeyPair", "generateKeyPairSync", "generateKey", "generateKeySync",
1413
- "createPrivateKey", "createPublicKey", "createSecretKey",
1414
- "createSign", "createVerify", "sign", "verify",
1415
- "createDiffieHellman", "createDiffieHellmanGroup", "getDiffieHellman",
1416
- "createECDH", "diffieHellman",
1417
- "publicEncrypt", "publicDecrypt", "privateEncrypt", "privateDecrypt",
2238
+ "generateKeyPair",
2239
+ "generateKeyPairSync",
2240
+ "generateKey",
2241
+ "generateKeySync",
2242
+ "createPrivateKey",
2243
+ "createPublicKey",
2244
+ "createSecretKey",
2245
+ "createSign",
2246
+ "createVerify",
2247
+ "sign",
2248
+ "verify",
2249
+ "createDiffieHellman",
2250
+ "createDiffieHellmanGroup",
2251
+ "getDiffieHellman",
2252
+ "createECDH",
2253
+ "diffieHellman",
2254
+ "publicEncrypt",
2255
+ "publicDecrypt",
2256
+ "privateEncrypt",
2257
+ "privateDecrypt",
1418
2258
  ].map((m) => [
1419
2259
  m,
1420
2260
  "asymmetric-key operations need a public-key stack (bignum, RSA/EC/EdDSA math) and a " +
@@ -1451,12 +2291,12 @@ export const BUILTIN_MODULE_FENCE_HINTS = {
1451
2291
  },
1452
2292
  };
1453
2293
  /** The MEMBER chokepoint of the lib fence: called from the property-read
1454
- * and method-call fallbacks after every lowering has passed. When the
1455
- * accessed member is stdlib-declared, the use is standard-library surface
1456
- * with no lowering — report SC2020 naming `<container>.<member>` (the
1457
- * receiver's global name when it IS a stdlib global like Math or Promise,
1458
- * its widened type text otherwise). Returns silently for non-stdlib
1459
- * members so the caller's generic rejection applies. */
2294
+ * and method-call fallbacks after every lowering has passed. When the
2295
+ * accessed member is stdlib-declared, the use is standard-library surface
2296
+ * with no lowering — report SC2020 naming `<container>.<member>` (the
2297
+ * receiver's global name when it IS a stdlib global like Math or Promise,
2298
+ * its widened type text otherwise). Returns silently for non-stdlib
2299
+ * members so the caller's generic rejection applies. */
1460
2300
  export function stdlibMemberFence(lowerer, access) {
1461
2301
  const sym = lowerer.checker.getSymbolAtLocation(access.name);
1462
2302
  if (!sym || !lowerer.isStdlibSymbol(sym))
@@ -1490,13 +2330,15 @@ export function stdlibMemberFence(lowerer, access) {
1490
2330
  lowerer.checker.typeToString(lowerer.checker.getBaseTypeOfLiteralType(lowerer.typeOf(recv)));
1491
2331
  let hint;
1492
2332
  const recvIr = lowerer.mapTypeOf(lowerer.typeOf(recv));
1493
- if (recvIr?.kind === "promise" && (member === "then" || member === "catch" || member === "finally")) {
2333
+ if (recvIr?.kind === "promise" &&
2334
+ (member === "then" || member === "catch" || member === "finally")) {
1494
2335
  hint =
1495
2336
  "'await' is the supported way to chain (p.then(f) with one fulfillment handler, p.catch " +
1496
2337
  "with an INLINE handler, and p.finally(cb) compile) — try { await p } catch (e) is the general form";
1497
2338
  }
1498
2339
  else if (recvIr?.kind === "f64" && member === "toString") {
1499
- hint = "radix-free conversion is a template literal away: `${x}`; toString(radix) runs under --dynamic";
2340
+ hint =
2341
+ "radix-free conversion is a template literal away: `${x}`; toString(radix) runs under --dynamic";
1500
2342
  }
1501
2343
  else if (container === "Math" && (member === "min" || member === "max")) {
1502
2344
  hint =
@@ -1578,14 +2420,26 @@ export function stdlibMemberFence(lowerer, access) {
1578
2420
  }
1579
2421
  else if (container === "SharedArrayBuffer" || container.startsWith("SharedArrayBuffer<")) {
1580
2422
  hint =
1581
- "no shared-memory threads exist in a compiled program — Uint8Array is the byte storage " +
1582
- "(a fixed-length allocation: grow has nothing to share it with)";
2423
+ "native SharedArrayBuffer storage is fixed-length; growable shared buffers are unsupported";
1583
2424
  }
1584
- else if (container === "Intl" || container.startsWith("Intl.") ||
1585
- ["NumberFormat", "DateTimeFormat", "DurationFormat", "PluralRules", "Collator", "Locale",
1586
- "RelativeTimeFormat", "ListFormat", "Segmenter", "DisplayNames"].includes(container) ||
1587
- member === "toLocaleString" || member === "toLocaleDateString" ||
1588
- member === "toLocaleTimeString" || member === "toLocaleLowerCase" ||
2425
+ else if (container === "Intl" ||
2426
+ container.startsWith("Intl.") ||
2427
+ [
2428
+ "NumberFormat",
2429
+ "DateTimeFormat",
2430
+ "DurationFormat",
2431
+ "PluralRules",
2432
+ "Collator",
2433
+ "Locale",
2434
+ "RelativeTimeFormat",
2435
+ "ListFormat",
2436
+ "Segmenter",
2437
+ "DisplayNames",
2438
+ ].includes(container) ||
2439
+ member === "toLocaleString" ||
2440
+ member === "toLocaleDateString" ||
2441
+ member === "toLocaleTimeString" ||
2442
+ member === "toLocaleLowerCase" ||
1589
2443
  member === "toLocaleUpperCase") {
1590
2444
  hint =
1591
2445
  "locale- and ICU-backed behavior lives outside the static runtime (the localeCompare " +
@@ -1605,7 +2459,7 @@ export function stdlibMemberFence(lowerer, access) {
1605
2459
  lowerer.noLowering(`${container}.${member}`, access, hint, sym);
1606
2460
  }
1607
2461
  /** True iff the accessed member is declared by the standard library —
1608
- * the same technique as isConsoleLog: trust declarations, not names. */
2462
+ * the same technique as isConsoleLog: trust declarations, not names. */
1609
2463
  export function isStdlibMember(lowerer, access) {
1610
2464
  const direct = lowerer.checker.getSymbolAtLocation(access.name);
1611
2465
  if (direct)
@@ -1624,11 +2478,11 @@ export function isStdlibMember(lowerer, access) {
1624
2478
  return false;
1625
2479
  }
1626
2480
  /** The provenance check the CHILD receiver lowerings use: a stdlib
1627
- * member, OR a member the user's own child-shaped interface declares
1628
- * (the NgrokChildProcess idiom — mapType's duck rule admits an
1629
- * interface only when EVERY member names the lowered ChildProcess
1630
- * surface, so accepting its members here cannot widen the surface;
1631
- * the receiver-kind gate already proved the type maps to child). */
2481
+ * member, OR a member the user's own child-shaped interface declares
2482
+ * (the NgrokChildProcess idiom — mapType's duck rule admits an
2483
+ * interface only when EVERY member names the lowered ChildProcess
2484
+ * surface, so accepting its members here cannot widen the surface;
2485
+ * the receiver-kind gate already proved the type maps to child). */
1632
2486
  export function isChildSurfaceMember(lowerer, access) {
1633
2487
  if (isStdlibMember(lowerer, access))
1634
2488
  return true;
@@ -1642,12 +2496,13 @@ export function isChildSurfaceMember(lowerer, access) {
1642
2496
  return lowerer.mapTypeOf(lowerer.checker.getTypeAtLocation(iface.name))?.kind === "child";
1643
2497
  }
1644
2498
  /** True iff some declaration of the symbol lives in the standard library
1645
- * (shipped ambient or default lib — the provenance half of every
1646
- * supported-surface check). `some`, not `[0]`: divergence overrides merge
1647
- * with lib interfaces, so a member can carry declarations from both. A
1648
- * user's own declaration is in neither, so shadowing never matches. */
2499
+ * (shipped ambient or default lib — the provenance half of every
2500
+ * supported-surface check). `some`, not `[0]`: divergence overrides merge
2501
+ * with lib interfaces, so a member can carry declarations from both. A
2502
+ * user's own declaration is in neither, so shadowing never matches. */
1649
2503
  export function isStdlibSymbol(lowerer, symbol) {
1650
- return !!symbol && lowerer.checker.declarationsOf(symbol).some((d) => lowerer.isStdlibFile(d.getSourceFile()));
2504
+ return (!!symbol &&
2505
+ lowerer.checker.declarationsOf(symbol).some((d) => lowerer.isStdlibFile(d.getSourceFile())));
1651
2506
  }
1652
2507
  /** The canonical stdlib-global name `expr` denotes, or null. Three
1653
2508
  * spellings reach the same global (Node's own aliasing):
@@ -1655,12 +2510,12 @@ export function isStdlibSymbol(lowerer, symbol) {
1655
2510
  * - the default import from `process`/`node:process`, whose value is
1656
2511
  * exactly the global process object;
1657
2512
  * - the `global` identifier — Node's alias of globalThis — and
1658
- * `globalThis` itself both canonicalize to "globalThis";
1659
- * - a property read off globalThis (`globalThis.process`,
1660
- * `global.process`) — `declare var` globals ARE properties of
1661
- * `typeof globalThis`, same symbol either way;
1662
- * - a local alias binding (`const process = globalThis.process`, the
1663
- * tamper-guard prologue) registered in stdlibGlobalAliases. */
2513
+ * `globalThis` itself both canonicalize to "globalThis";
2514
+ * - a property read off globalThis (`globalThis.process`,
2515
+ * `global.process`) — `declare var` globals ARE properties of
2516
+ * `typeof globalThis`, same symbol either way;
2517
+ * - a local alias binding (`const process = globalThis.process`, the
2518
+ * tamper-guard prologue) registered in stdlibGlobalAliases. */
1664
2519
  export function stdlibGlobalNameOf(lowerer, expr) {
1665
2520
  if (ts.isParenthesizedExpression(expr))
1666
2521
  return stdlibGlobalNameOf(lowerer, expr.expression);
@@ -1669,7 +2524,10 @@ export function stdlibGlobalNameOf(lowerer, expr) {
1669
2524
  // `globalThis` itself: a reserved intrinsic — tsc rejects user
1670
2525
  // global bindings, but local parameters can shadow it. Its special
1671
2526
  // symbol has no ordinary declarations for the provenance check.
1672
- if (expr.text === "globalThis" && (!symbol || lowerer.checker.declarationsOf(symbol).length === 0 || lowerer.isStdlibSymbol(symbol)))
2527
+ if (expr.text === "globalThis" &&
2528
+ (!symbol ||
2529
+ lowerer.checker.declarationsOf(symbol).length === 0 ||
2530
+ lowerer.isStdlibSymbol(symbol)))
1673
2531
  return "globalThis";
1674
2532
  if (!symbol)
1675
2533
  return null;
@@ -1707,32 +2565,32 @@ export function stdlibGlobalNameOf(lowerer, expr) {
1707
2565
  return null;
1708
2566
  }
1709
2567
  /** True iff `expr` denotes THE standard-library global `name` — name AND
1710
- * provenance, because neither alone suffices: several globals share
1711
- * member names (Math.log must never lower as console.log), and a user
1712
- * binding shadowing a global's name has a different, non-stdlib symbol.
1713
- * All of stdlibGlobalNameOf's spellings answer (globalThis.process is
1714
- * process; `const process = globalThis.process` aliases through). */
2568
+ * provenance, because neither alone suffices: several globals share
2569
+ * member names (Math.log must never lower as console.log), and a user
2570
+ * binding shadowing a global's name has a different, non-stdlib symbol.
2571
+ * All of stdlibGlobalNameOf's spellings answer (globalThis.process is
2572
+ * process; `const process = globalThis.process` aliases through). */
1715
2573
  export function isStdlibGlobal(lowerer, expr, name) {
1716
2574
  return stdlibGlobalNameOf(lowerer, expr) === name;
1717
2575
  }
1718
2576
  /** The member name of a `<global>.<member>` access whose receiver is THE
1719
- * standard-library global `name` (console, JSON, process, Math). Null for
1720
- * anything else, so property-lowering chains keep trying other
1721
- * receivers. */
2577
+ * standard-library global `name` (console, JSON, process, Math). Null for
2578
+ * anything else, so property-lowering chains keep trying other
2579
+ * receivers. */
1722
2580
  export function stdlibGlobalMember(lowerer, access, name) {
1723
2581
  if (lowerer.chainBlocked(access))
1724
2582
  return null;
1725
2583
  return lowerer.isStdlibGlobal(access.expression, name) ? access.name.text : null;
1726
2584
  }
1727
2585
  /** `const process = globalThis.process` (and any `const x = <stdlib
1728
- * global>` snapshot — the suite harness's tamper-guard prologue): the
1729
- * binding is pure alias plumbing. Nothing in a compiled program can
1730
- * reassign a stdlib global, so the snapshot IS the global: the symbol
1731
- * registers in stdlibGlobalAliases (every receiver check resolves
1732
- * through it — see stdlibGlobalNameOf) and the declaration emits
1733
- * nothing. Only the globals with lowered member surfaces alias this
1734
- * way; aliasing, say, `Math` would change nothing (its members lower
1735
- * by receiver too). Returns true when recognized. */
2586
+ * global>` snapshot — the suite harness's tamper-guard prologue): the
2587
+ * binding is pure alias plumbing. Nothing in a compiled program can
2588
+ * reassign a stdlib global, so the snapshot IS the global: the symbol
2589
+ * registers in stdlibGlobalAliases (every receiver check resolves
2590
+ * through it — see stdlibGlobalNameOf) and the declaration emits
2591
+ * nothing. Only the globals with lowered member surfaces alias this
2592
+ * way; aliasing, say, `Math` would change nothing (its members lower
2593
+ * by receiver too). Returns true when recognized. */
1736
2594
  export function stdlibGlobalAliasNameOf(lowerer, init) {
1737
2595
  if (!init)
1738
2596
  return null;
@@ -1770,15 +2628,29 @@ export function stdlibGlobalAliasNameOf(lowerer, init) {
1770
2628
  let directInit = init;
1771
2629
  while (ts.isParenthesizedExpression(directInit))
1772
2630
  directInit = directInit.expression;
1773
- if (name === "globalThis" && lowerer.dynamic && !isJsSourceFile(init.getSourceFile()) &&
1774
- ts.isIdentifier(directInit) && directInit.text === "globalThis" &&
2631
+ if (name === "globalThis" &&
2632
+ lowerer.dynamic &&
2633
+ !isJsSourceFile(init.getSourceFile()) &&
2634
+ ts.isIdentifier(directInit) &&
2635
+ directInit.text === "globalThis" &&
1775
2636
  ts.isVariableDeclaration(init.parent) &&
1776
2637
  (lowerer.typeOf(init.parent.name).flags & ts.TypeFlags.Any) !== 0)
1777
2638
  return null;
1778
2639
  // These globals have provenance-aware call or member lowering, so a
1779
2640
  // stable snapshot keeps the same dispatch as the original global.
1780
2641
  // Other callable globals still use their ordinary value paths.
1781
- return ["process", "console", "globalThis", "performance", "Array", "Buffer", "BigInt", "Number", "String", "Boolean"].includes(name)
2642
+ return [
2643
+ "process",
2644
+ "console",
2645
+ "globalThis",
2646
+ "performance",
2647
+ "Array",
2648
+ "Buffer",
2649
+ "BigInt",
2650
+ "Number",
2651
+ "String",
2652
+ "Boolean",
2653
+ ].includes(name)
1782
2654
  ? name
1783
2655
  : null;
1784
2656
  }
@@ -1790,7 +2662,8 @@ export function stdlibGlobalAliasDecl(lowerer, nameNode, init) {
1790
2662
  return false;
1791
2663
  // Mutable global-object bindings keep real storage, even when never
1792
2664
  // reassigned: var can be observed before initialization and let has TDZ.
1793
- if (name === "globalThis" && ts.isVariableDeclaration(nameNode.parent) &&
2665
+ if (name === "globalThis" &&
2666
+ ts.isVariableDeclaration(nameNode.parent) &&
1794
2667
  (ts.getCombinedNodeFlags(nameNode.parent) & ts.NodeFlags.Const) === 0)
1795
2668
  return false;
1796
2669
  const symbol = lowerer.checker.getSymbolAtLocation(nameNode);
@@ -1800,9 +2673,9 @@ export function stdlibGlobalAliasDecl(lowerer, nameNode, init) {
1800
2673
  return true;
1801
2674
  }
1802
2675
  /** True iff the symbol is declared ONLY by the adopted @types/node
1803
- * surface (no es-lib or shipped-ambient declaration merges in) — chooses
1804
- * the SC2020 fence's wording: "typed by @types/node", not "standard
1805
- * library". */
2676
+ * surface (no es-lib or shipped-ambient declaration merges in) — chooses
2677
+ * the SC2020 fence's wording: "typed by @types/node", not "standard
2678
+ * library". */
1806
2679
  export function nodeTypesOnlySymbol(lowerer, sym) {
1807
2680
  const decls = sym ? lowerer.checker.declarationsOf(sym) : undefined;
1808
2681
  if (!decls || decls.length === 0)