@scriptc/compiler 0.3.6 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1358) hide show
  1. package/ambient/scriptc-node-fallback.d.ts +717 -55
  2. package/ambient/scriptc.d.ts +134 -0
  3. package/dist/backend/cycle-analysis.d.ts +1 -1
  4. package/dist/backend/cycle-analysis.js +1 -0
  5. package/dist/backend/cycle-analysis.js.map +1 -1
  6. package/dist/backend/cycle-analysis.test.js +13 -1
  7. package/dist/backend/cycle-analysis.test.js.map +1 -1
  8. package/dist/backend/cycle-mutability.js +16 -5
  9. package/dist/backend/cycle-mutability.js.map +1 -1
  10. package/dist/backend/executable-features.js +20 -0
  11. package/dist/backend/executable-features.js.map +1 -1
  12. package/dist/backend/immutability.test.js +1 -1
  13. package/dist/backend/library-pack.js +9 -0
  14. package/dist/backend/library-pack.js.map +1 -1
  15. package/dist/backend/link-plan-core.d.ts +2 -0
  16. package/dist/backend/link-plan-core.js +2 -0
  17. package/dist/backend/link-plan-core.js.map +1 -1
  18. package/dist/backend/link-plan.d.ts +1 -0
  19. package/dist/backend/link-plan.js +1 -0
  20. package/dist/backend/link-plan.js.map +1 -1
  21. package/dist/backend/llvm/alloc.d.ts +41 -4
  22. package/dist/backend/llvm/alloc.js +138 -7
  23. package/dist/backend/llvm/alloc.js.map +1 -1
  24. package/dist/backend/llvm/alloc.test.js +30 -1
  25. package/dist/backend/llvm/alloc.test.js.map +1 -1
  26. package/dist/backend/llvm/appended-array-literals.test.js +1 -1
  27. package/dist/backend/llvm/array-search.js +3 -1
  28. package/dist/backend/llvm/array-search.js.map +1 -1
  29. package/dist/backend/llvm/array-search.test.js +1 -1
  30. package/dist/backend/llvm/blocks.d.ts +8 -0
  31. package/dist/backend/llvm/blocks.js +43 -1
  32. package/dist/backend/llvm/blocks.js.map +1 -1
  33. package/dist/backend/llvm/blocks.test.js +22 -1
  34. package/dist/backend/llvm/blocks.test.js.map +1 -1
  35. package/dist/backend/llvm/byte-numbers.js +15 -5
  36. package/dist/backend/llvm/byte-numbers.js.map +1 -1
  37. package/dist/backend/llvm/bytes-alias.d.ts +14 -0
  38. package/dist/backend/llvm/bytes-alias.js +20 -0
  39. package/dist/backend/llvm/bytes-alias.js.map +1 -0
  40. package/dist/backend/llvm/bytes-loop-versions.d.ts +86 -0
  41. package/dist/backend/llvm/bytes-loop-versions.js +506 -0
  42. package/dist/backend/llvm/bytes-loop-versions.js.map +1 -0
  43. package/dist/backend/llvm/bytes-loop-versions.test.d.ts +1 -0
  44. package/dist/backend/llvm/bytes-loop-versions.test.js +244 -0
  45. package/dist/backend/llvm/bytes-loop-versions.test.js.map +1 -0
  46. package/dist/backend/llvm/call-lifetimes.js +50 -1
  47. package/dist/backend/llvm/call-lifetimes.js.map +1 -1
  48. package/dist/backend/llvm/call-lifetimes.test.js +34 -0
  49. package/dist/backend/llvm/call-lifetimes.test.js.map +1 -1
  50. package/dist/backend/llvm/checked-narrows.test.js +1 -1
  51. package/dist/backend/llvm/checked-value-lifetimes.js +4 -1
  52. package/dist/backend/llvm/checked-value-lifetimes.js.map +1 -1
  53. package/dist/backend/llvm/classes.d.ts +38 -1
  54. package/dist/backend/llvm/classes.js +185 -35
  55. package/dist/backend/llvm/classes.js.map +1 -1
  56. package/dist/backend/llvm/classes.test.js +79 -17
  57. package/dist/backend/llvm/classes.test.js.map +1 -1
  58. package/dist/backend/llvm/common.d.ts +21 -3
  59. package/dist/backend/llvm/common.js +51 -3
  60. package/dist/backend/llvm/common.js.map +1 -1
  61. package/dist/backend/llvm/constant-callbacks.d.ts +5 -1
  62. package/dist/backend/llvm/constant-callbacks.js +55 -12
  63. package/dist/backend/llvm/constant-callbacks.js.map +1 -1
  64. package/dist/backend/llvm/constant-callbacks.test.js +88 -1
  65. package/dist/backend/llvm/constant-callbacks.test.js.map +1 -1
  66. package/dist/backend/llvm/counted-loops.d.ts +4 -0
  67. package/dist/backend/llvm/counted-loops.js +37 -0
  68. package/dist/backend/llvm/counted-loops.js.map +1 -1
  69. package/dist/backend/llvm/dense-array-access.d.ts +15 -4
  70. package/dist/backend/llvm/dense-array-access.js +125 -44
  71. package/dist/backend/llvm/dense-array-access.js.map +1 -1
  72. package/dist/backend/llvm/dense-array-access.test.js +63 -3
  73. package/dist/backend/llvm/dense-array-access.test.js.map +1 -1
  74. package/dist/backend/llvm/dense-array-loops.d.ts +51 -0
  75. package/dist/backend/llvm/dense-array-loops.js +162 -0
  76. package/dist/backend/llvm/dense-array-loops.js.map +1 -0
  77. package/dist/backend/llvm/dense-array-loops.test.d.ts +1 -0
  78. package/dist/backend/llvm/dense-array-loops.test.js +128 -0
  79. package/dist/backend/llvm/dense-array-loops.test.js.map +1 -0
  80. package/dist/backend/llvm/dyn-handle-tags.test.d.ts +1 -0
  81. package/dist/backend/llvm/dyn-handle-tags.test.js +38 -0
  82. package/dist/backend/llvm/dyn-handle-tags.test.js.map +1 -0
  83. package/dist/backend/llvm/dyn.d.ts +37 -4
  84. package/dist/backend/llvm/dyn.js +354 -183
  85. package/dist/backend/llvm/dyn.js.map +1 -1
  86. package/dist/backend/llvm/emit-function.d.ts +64 -0
  87. package/dist/backend/llvm/emit-function.js +1193 -0
  88. package/dist/backend/llvm/emit-function.js.map +1 -0
  89. package/dist/backend/llvm/emit-module.d.ts +24 -0
  90. package/dist/backend/llvm/emit-module.js +1557 -0
  91. package/dist/backend/llvm/emit-module.js.map +1 -0
  92. package/dist/backend/llvm/emit-statements.d.ts +59 -0
  93. package/dist/backend/llvm/emit-statements.js +2041 -0
  94. package/dist/backend/llvm/emit-statements.js.map +1 -0
  95. package/dist/backend/llvm/emitter.d.ts +566 -291
  96. package/dist/backend/llvm/emitter.js +728 -4671
  97. package/dist/backend/llvm/emitter.js.map +1 -1
  98. package/dist/backend/llvm/emitter.test.js +57 -3
  99. package/dist/backend/llvm/emitter.test.js.map +1 -1
  100. package/dist/backend/llvm/expr-async.js +73 -46
  101. package/dist/backend/llvm/expr-async.js.map +1 -1
  102. package/dist/backend/llvm/expr-async.test.js +1 -1
  103. package/dist/backend/llvm/expr-bytes.d.ts +2 -0
  104. package/dist/backend/llvm/expr-bytes.js +76 -29
  105. package/dist/backend/llvm/expr-bytes.js.map +1 -1
  106. package/dist/backend/llvm/expr-callbacks.d.ts +6 -2
  107. package/dist/backend/llvm/expr-callbacks.js +48 -11
  108. package/dist/backend/llvm/expr-callbacks.js.map +1 -1
  109. package/dist/backend/llvm/expr-calls.d.ts +1 -1
  110. package/dist/backend/llvm/expr-calls.js +87 -56
  111. package/dist/backend/llvm/expr-calls.js.map +1 -1
  112. package/dist/backend/llvm/expr-calls.test.js +1 -1
  113. package/dist/backend/llvm/expr-containers.js +45 -24
  114. package/dist/backend/llvm/expr-containers.js.map +1 -1
  115. package/dist/backend/llvm/expr-control.js +16 -16
  116. package/dist/backend/llvm/expr-control.js.map +1 -1
  117. package/dist/backend/llvm/expr-dynamic.d.ts +3 -0
  118. package/dist/backend/llvm/expr-dynamic.js +113 -66
  119. package/dist/backend/llvm/expr-dynamic.js.map +1 -1
  120. package/dist/backend/llvm/expr-primitives.js +124 -28
  121. package/dist/backend/llvm/expr-primitives.js.map +1 -1
  122. package/dist/backend/llvm/expr-primitives.test.js +57 -2
  123. package/dist/backend/llvm/expr-primitives.test.js.map +1 -1
  124. package/dist/backend/llvm/expr-records.d.ts +1 -1
  125. package/dist/backend/llvm/expr-records.js +32 -11
  126. package/dist/backend/llvm/expr-records.js.map +1 -1
  127. package/dist/backend/llvm/expr-stream-bridges.js +65 -27
  128. package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
  129. package/dist/backend/llvm/expr-stream-bridges.test.js +2 -2
  130. package/dist/backend/llvm/expr-stream-callbacks.js +22 -1
  131. package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
  132. package/dist/backend/llvm/int32-abi.test.js +2 -2
  133. package/dist/backend/llvm/integer-clones.js +3 -3
  134. package/dist/backend/llvm/integer-clones.js.map +1 -1
  135. package/dist/backend/llvm/integer-clones.test.js +3 -3
  136. package/dist/backend/llvm/integer-remainder.d.ts +34 -13
  137. package/dist/backend/llvm/integer-remainder.js +156 -22
  138. package/dist/backend/llvm/integer-remainder.js.map +1 -1
  139. package/dist/backend/llvm/intern-tables.test.js +1 -1
  140. package/dist/backend/llvm/js-ic.d.ts +18 -0
  141. package/dist/backend/llvm/js-ic.js +712 -0
  142. package/dist/backend/llvm/js-ic.js.map +1 -0
  143. package/dist/backend/llvm/jsval-encoding.d.ts +21 -0
  144. package/dist/backend/llvm/jsval-encoding.js +20 -0
  145. package/dist/backend/llvm/jsval-encoding.js.map +1 -0
  146. package/dist/backend/llvm/jsval.d.ts +12 -0
  147. package/dist/backend/llvm/jsval.js +616 -0
  148. package/dist/backend/llvm/jsval.js.map +1 -0
  149. package/dist/backend/llvm/lazy-captures.d.ts +12 -2
  150. package/dist/backend/llvm/lazy-captures.js +39 -17
  151. package/dist/backend/llvm/lazy-captures.js.map +1 -1
  152. package/dist/backend/llvm/lib-abi.js +1 -1
  153. package/dist/backend/llvm/lib-abi.js.map +1 -1
  154. package/dist/backend/llvm/lib-connect.js +1 -1
  155. package/dist/backend/llvm/lib-connect.js.map +1 -1
  156. package/dist/backend/llvm/lib-datagram.js +14 -8
  157. package/dist/backend/llvm/lib-datagram.js.map +1 -1
  158. package/dist/backend/llvm/lib-dispatch.js +189 -23
  159. package/dist/backend/llvm/lib-dispatch.js.map +1 -1
  160. package/dist/backend/llvm/lib-filesystem.js +42 -13
  161. package/dist/backend/llvm/lib-filesystem.js.map +1 -1
  162. package/dist/backend/llvm/lib-http2.js +3 -3
  163. package/dist/backend/llvm/lib-http2.js.map +1 -1
  164. package/dist/backend/llvm/lib-lookup.js +2 -2
  165. package/dist/backend/llvm/lib-lookup.js.map +1 -1
  166. package/dist/backend/llvm/lib-network.js +56 -22
  167. package/dist/backend/llvm/lib-network.js.map +1 -1
  168. package/dist/backend/llvm/lib-process.js +94 -53
  169. package/dist/backend/llvm/lib-process.js.map +1 -1
  170. package/dist/backend/llvm/lib-shared.d.ts +12 -0
  171. package/dist/backend/llvm/lib-shared.js +209 -6
  172. package/dist/backend/llvm/lib-shared.js.map +1 -1
  173. package/dist/backend/llvm/lib-stream.js +46 -16
  174. package/dist/backend/llvm/lib-stream.js.map +1 -1
  175. package/dist/backend/llvm/lib-test.js +43 -7
  176. package/dist/backend/llvm/lib-test.js.map +1 -1
  177. package/dist/backend/llvm/lib-tls.js +4 -9
  178. package/dist/backend/llvm/lib-tls.js.map +1 -1
  179. package/dist/backend/llvm/local-array-reads.js +42 -33
  180. package/dist/backend/llvm/local-array-reads.js.map +1 -1
  181. package/dist/backend/llvm/local-array-reads.test.js +1 -1
  182. package/dist/backend/llvm/local-extents.d.ts +19 -0
  183. package/dist/backend/llvm/local-extents.js +169 -0
  184. package/dist/backend/llvm/local-extents.js.map +1 -0
  185. package/dist/backend/llvm/local-extents.test.d.ts +1 -0
  186. package/dist/backend/llvm/local-extents.test.js +92 -0
  187. package/dist/backend/llvm/local-extents.test.js.map +1 -0
  188. package/dist/backend/llvm/local-union-storage.js +7 -7
  189. package/dist/backend/llvm/local-union-storage.js.map +1 -1
  190. package/dist/backend/llvm/local-union-storage.test.js +2 -2
  191. package/dist/backend/llvm/map-entry-fusion.test.js +1 -1
  192. package/dist/backend/llvm/map-number-lookup.d.ts +20 -4
  193. package/dist/backend/llvm/map-number-lookup.js +45 -9
  194. package/dist/backend/llvm/map-number-lookup.js.map +1 -1
  195. package/dist/backend/llvm/map-number-lookup.test.js +2 -2
  196. package/dist/backend/llvm/map-read-lifetimes.test.js +2 -2
  197. package/dist/backend/llvm/narrow-guards.d.ts +38 -0
  198. package/dist/backend/llvm/narrow-guards.js +215 -0
  199. package/dist/backend/llvm/narrow-guards.js.map +1 -0
  200. package/dist/backend/llvm/nullable-unions.d.ts +64 -6
  201. package/dist/backend/llvm/nullable-unions.js +103 -6
  202. package/dist/backend/llvm/nullable-unions.js.map +1 -1
  203. package/dist/backend/llvm/nullable-unions.test.d.ts +1 -0
  204. package/dist/backend/llvm/nullable-unions.test.js +65 -0
  205. package/dist/backend/llvm/nullable-unions.test.js.map +1 -0
  206. package/dist/backend/llvm/publish.d.ts +7 -0
  207. package/dist/backend/llvm/publish.js +50 -19
  208. package/dist/backend/llvm/publish.js.map +1 -1
  209. package/dist/backend/llvm/publish.test.js +1 -1
  210. package/dist/backend/llvm/receivers.d.ts +31 -0
  211. package/dist/backend/llvm/receivers.js +395 -0
  212. package/dist/backend/llvm/receivers.js.map +1 -0
  213. package/dist/backend/llvm/record-results.d.ts +12 -1
  214. package/dist/backend/llvm/record-results.js +64 -4
  215. package/dist/backend/llvm/record-results.js.map +1 -1
  216. package/dist/backend/llvm/reference-effects.js +9 -0
  217. package/dist/backend/llvm/reference-effects.js.map +1 -1
  218. package/dist/backend/llvm/reference-writes.d.ts +4 -0
  219. package/dist/backend/llvm/reference-writes.js +142 -6
  220. package/dist/backend/llvm/reference-writes.js.map +1 -1
  221. package/dist/backend/llvm/reference-writes.test.d.ts +1 -0
  222. package/dist/backend/llvm/reference-writes.test.js +88 -0
  223. package/dist/backend/llvm/reference-writes.test.js.map +1 -0
  224. package/dist/backend/llvm/regex-matchers.d.ts +8 -0
  225. package/dist/backend/llvm/regex-matchers.js +33 -0
  226. package/dist/backend/llvm/regex-matchers.js.map +1 -1
  227. package/dist/backend/llvm/regex-matchers.test.js +23 -1
  228. package/dist/backend/llvm/regex-matchers.test.js.map +1 -1
  229. package/dist/backend/llvm/regions.d.ts +1 -1
  230. package/dist/backend/llvm/regions.js +10 -7
  231. package/dist/backend/llvm/regions.js.map +1 -1
  232. package/dist/backend/llvm/regions.test.js +8 -2
  233. package/dist/backend/llvm/regions.test.js.map +1 -1
  234. package/dist/backend/llvm/shapes.d.ts +74 -45
  235. package/dist/backend/llvm/shapes.js +289 -28
  236. package/dist/backend/llvm/shapes.js.map +1 -1
  237. package/dist/backend/llvm/shapes.test.js +37 -3
  238. package/dist/backend/llvm/shapes.test.js.map +1 -1
  239. package/dist/backend/llvm/speculative-integers.d.ts +20 -1
  240. package/dist/backend/llvm/speculative-integers.js +94 -6
  241. package/dist/backend/llvm/speculative-integers.js.map +1 -1
  242. package/dist/backend/llvm/speculative-integers.test.js +55 -1
  243. package/dist/backend/llvm/speculative-integers.test.js.map +1 -1
  244. package/dist/backend/llvm/split-loops.js +2 -2
  245. package/dist/backend/llvm/split-loops.js.map +1 -1
  246. package/dist/backend/llvm/stack-objects.d.ts +26 -6
  247. package/dist/backend/llvm/stack-objects.js +133 -10
  248. package/dist/backend/llvm/stack-objects.js.map +1 -1
  249. package/dist/backend/llvm/stack-objects.test.js +55 -1
  250. package/dist/backend/llvm/stack-objects.test.js.map +1 -1
  251. package/dist/backend/llvm/stack-unions.test.js +1 -1
  252. package/dist/backend/llvm/string-construction.test.js +1 -1
  253. package/dist/backend/llvm/string-lifetimes.test.js +15 -14
  254. package/dist/backend/llvm/string-lifetimes.test.js.map +1 -1
  255. package/dist/backend/llvm/string-reads.d.ts +1 -1
  256. package/dist/backend/llvm/string-reads.js +4 -4
  257. package/dist/backend/llvm/string-reads.js.map +1 -1
  258. package/dist/backend/llvm/string-slices.d.ts +25 -0
  259. package/dist/backend/llvm/string-slices.js +207 -1
  260. package/dist/backend/llvm/string-slices.js.map +1 -1
  261. package/dist/backend/llvm/string-slices.test.js +139 -2
  262. package/dist/backend/llvm/string-slices.test.js.map +1 -1
  263. package/dist/backend/llvm/switch-dispatch.test.js +2 -2
  264. package/dist/backend/llvm/thread-slots.d.ts +5 -0
  265. package/dist/backend/llvm/thread-slots.js +142 -0
  266. package/dist/backend/llvm/thread-slots.js.map +1 -0
  267. package/dist/backend/llvm/thread-slots.test.d.ts +1 -0
  268. package/dist/backend/llvm/thread-slots.test.js +111 -0
  269. package/dist/backend/llvm/thread-slots.test.js.map +1 -0
  270. package/dist/backend/llvm/union-repr.d.ts +7 -7
  271. package/dist/backend/llvm/union-repr.js +18 -2
  272. package/dist/backend/llvm/union-repr.js.map +1 -1
  273. package/dist/backend/llvm/union-retype.test.js +17 -3
  274. package/dist/backend/llvm/union-retype.test.js.map +1 -1
  275. package/dist/backend/llvm/walkers.d.ts +2 -2
  276. package/dist/backend/llvm/walkers.js +51 -26
  277. package/dist/backend/llvm/walkers.js.map +1 -1
  278. package/dist/backend/llvm/wasm-modules.d.ts +16 -0
  279. package/dist/backend/llvm/wasm-modules.js +66 -0
  280. package/dist/backend/llvm/wasm-modules.js.map +1 -0
  281. package/dist/backend/llvm/wrapping-sums.d.ts +7 -0
  282. package/dist/backend/llvm/wrapping-sums.js +11 -3
  283. package/dist/backend/llvm/wrapping-sums.js.map +1 -1
  284. package/dist/backend/mangle.d.ts +12 -0
  285. package/dist/backend/mangle.js +18 -0
  286. package/dist/backend/mangle.js.map +1 -1
  287. package/dist/backend/may-throw.d.ts +3 -0
  288. package/dist/backend/may-throw.js +4 -2
  289. package/dist/backend/may-throw.js.map +1 -1
  290. package/dist/backend/may-throw.test.js +1 -1
  291. package/dist/backend/native/contracts.d.ts +57 -0
  292. package/dist/backend/native/executable.js +211 -139
  293. package/dist/backend/native/executable.js.map +1 -1
  294. package/dist/backend/native/library.js +2 -0
  295. package/dist/backend/native/library.js.map +1 -1
  296. package/dist/backend/native/runtime-inputs.d.ts +1 -1
  297. package/dist/backend/native/runtime-inputs.js +1 -0
  298. package/dist/backend/native/runtime-inputs.js.map +1 -1
  299. package/dist/backend/native-codegen.d.ts +6 -0
  300. package/dist/backend/native-codegen.js +19 -0
  301. package/dist/backend/native-codegen.js.map +1 -1
  302. package/dist/backend/native-codegen.test.js +27 -0
  303. package/dist/backend/native-codegen.test.js.map +1 -1
  304. package/dist/backend/native-link-info-core.d.ts +48 -0
  305. package/dist/backend/native-link-info-core.js.map +1 -1
  306. package/dist/backend/native-profile.d.ts +32 -0
  307. package/dist/backend/native-profile.js +39 -0
  308. package/dist/backend/native-profile.js.map +1 -0
  309. package/dist/backend/native-profile.test.d.ts +1 -0
  310. package/dist/backend/native-profile.test.js +58 -0
  311. package/dist/backend/native-profile.test.js.map +1 -0
  312. package/dist/backend/native-tools.d.ts +14 -0
  313. package/dist/backend/native-tools.js +13 -0
  314. package/dist/backend/native-tools.js.map +1 -1
  315. package/dist/backend/publication.test.js +1 -1
  316. package/dist/backend/runtime-abi.d.ts +2 -2
  317. package/dist/backend/runtime-abi.js +2 -2
  318. package/dist/backend/runtime-pack-core.d.ts +13 -1
  319. package/dist/backend/runtime-pack-core.js +14 -1
  320. package/dist/backend/runtime-pack-core.js.map +1 -1
  321. package/dist/backend/runtime-pack-native.js +1 -1
  322. package/dist/backend/runtime-pack-native.js.map +1 -1
  323. package/dist/backend/runtime-pack-native.test.d.ts +1 -0
  324. package/dist/backend/runtime-pack-native.test.js +31 -0
  325. package/dist/backend/runtime-pack-native.test.js.map +1 -0
  326. package/dist/backend/runtime-pack-targets.test.js +9 -1
  327. package/dist/backend/runtime-pack-targets.test.js.map +1 -1
  328. package/dist/backend/runtime-pack.test.js +9 -1
  329. package/dist/backend/runtime-pack.test.js.map +1 -1
  330. package/dist/backend/stack-observations.d.ts +22 -0
  331. package/dist/backend/stack-observations.js +382 -0
  332. package/dist/backend/stack-observations.js.map +1 -0
  333. package/dist/backend/stack-observations.test.d.ts +1 -0
  334. package/dist/backend/stack-observations.test.js +233 -0
  335. package/dist/backend/stack-observations.test.js.map +1 -0
  336. package/dist/backend/target-diagnostics.js +15 -0
  337. package/dist/backend/target-diagnostics.js.map +1 -1
  338. package/dist/backend/target-diagnostics.test.js +1 -1
  339. package/dist/backend/warm-cache.js +8 -0
  340. package/dist/backend/warm-cache.js.map +1 -1
  341. package/dist/backend/young-nursery.d.ts +7 -0
  342. package/dist/backend/young-nursery.js +10 -0
  343. package/dist/backend/young-nursery.js.map +1 -0
  344. package/dist/cli/command.js +106 -4
  345. package/dist/cli/command.js.map +1 -1
  346. package/dist/cli/host.d.ts +3 -0
  347. package/dist/cli/output-options.d.ts +2 -0
  348. package/dist/cli/output-options.js +9 -0
  349. package/dist/cli/output-options.js.map +1 -1
  350. package/dist/cli/usage.d.ts +21 -1
  351. package/dist/cli/usage.js +43 -1
  352. package/dist/cli/usage.js.map +1 -1
  353. package/dist/compat/fetch-profile.js +10 -1
  354. package/dist/compat/fetch-profile.js.map +1 -1
  355. package/dist/compile-types.d.ts +22 -0
  356. package/dist/contracts/check.js +25 -8
  357. package/dist/contracts/check.js.map +1 -1
  358. package/dist/contracts/int32-elements.d.ts +115 -0
  359. package/dist/contracts/int32-elements.js +1179 -0
  360. package/dist/contracts/int32-elements.js.map +1 -0
  361. package/dist/coverage/report.d.ts +16 -0
  362. package/dist/coverage/report.js +182 -1
  363. package/dist/coverage/report.js.map +1 -1
  364. package/dist/coverage/surface-manifest.js +16 -3
  365. package/dist/coverage/surface-manifest.js.map +1 -1
  366. package/dist/coverage/verdict-cache.d.ts +2 -0
  367. package/dist/coverage/verdict-cache.js +12 -0
  368. package/dist/coverage/verdict-cache.js.map +1 -1
  369. package/dist/coverage/verdict-cache.test.js +2 -1
  370. package/dist/coverage/verdict-cache.test.js.map +1 -1
  371. package/dist/diagnostics/diagnostic.d.ts +10 -6
  372. package/dist/diagnostics/diagnostic.js +29 -21
  373. package/dist/diagnostics/diagnostic.js.map +1 -1
  374. package/dist/diagnostics/envelope.d.ts +39 -2
  375. package/dist/diagnostics/envelope.js.map +1 -1
  376. package/dist/diagnostics/render.d.ts +7 -0
  377. package/dist/diagnostics/render.js +50 -13
  378. package/dist/diagnostics/render.js.map +1 -1
  379. package/dist/diagnostics/render.test.d.ts +1 -0
  380. package/dist/diagnostics/render.test.js +49 -0
  381. package/dist/diagnostics/render.test.js.map +1 -0
  382. package/dist/executable/executable-cache.d.ts +27 -0
  383. package/dist/executable/executable-cache.js +19 -1
  384. package/dist/executable/executable-cache.js.map +1 -1
  385. package/dist/executable/executable-cache.test.js +12 -1
  386. package/dist/executable/executable-cache.test.js.map +1 -1
  387. package/dist/executable/prepare.js +2 -1
  388. package/dist/executable/prepare.js.map +1 -1
  389. package/dist/frontend/analysis.js +6 -1
  390. package/dist/frontend/analysis.js.map +1 -1
  391. package/dist/frontend/arguments-usage.d.ts +8 -0
  392. package/dist/frontend/arguments-usage.js +98 -0
  393. package/dist/frontend/arguments-usage.js.map +1 -1
  394. package/dist/frontend/arguments-usage.test.d.ts +1 -0
  395. package/dist/frontend/arguments-usage.test.js +32 -0
  396. package/dist/frontend/arguments-usage.test.js.map +1 -0
  397. package/dist/frontend/builtin-modules.d.ts +16 -2
  398. package/dist/frontend/builtin-modules.js +40 -7
  399. package/dist/frontend/builtin-modules.js.map +1 -1
  400. package/dist/frontend/builtin-package-aliases.d.ts +24 -0
  401. package/dist/frontend/builtin-package-aliases.js +133 -0
  402. package/dist/frontend/builtin-package-aliases.js.map +1 -0
  403. package/dist/frontend/builtin-package-aliases.test.d.ts +1 -0
  404. package/dist/frontend/builtin-package-aliases.test.js +48 -0
  405. package/dist/frontend/builtin-package-aliases.test.js.map +1 -0
  406. package/dist/frontend/cjs-syntax.js +52 -51
  407. package/dist/frontend/cjs-syntax.js.map +1 -1
  408. package/dist/frontend/contract-types.d.ts +3 -0
  409. package/dist/frontend/contract-types.js +36 -7
  410. package/dist/frontend/contract-types.js.map +1 -1
  411. package/dist/frontend/dts-paths.d.ts +4 -0
  412. package/dist/frontend/dts-paths.js +9 -1
  413. package/dist/frontend/dts-paths.js.map +1 -1
  414. package/dist/frontend/experimental-import.d.ts +5 -1
  415. package/dist/frontend/experimental-import.js +26 -7
  416. package/dist/frontend/experimental-import.js.map +1 -1
  417. package/dist/frontend/fork-target.js +20 -22
  418. package/dist/frontend/fork-target.js.map +1 -1
  419. package/dist/frontend/fork-target.test.js +2 -1
  420. package/dist/frontend/fork-target.test.js.map +1 -1
  421. package/dist/frontend/function-completion.js +6 -6
  422. package/dist/frontend/function-completion.js.map +1 -1
  423. package/dist/frontend/helper-tokens.js +15 -3
  424. package/dist/frontend/helper-tokens.js.map +1 -1
  425. package/dist/frontend/helper-tokens.test.js +7 -1
  426. package/dist/frontend/helper-tokens.test.js.map +1 -1
  427. package/dist/frontend/inferred-js-diagnostics.js +14 -17
  428. package/dist/frontend/inferred-js-diagnostics.js.map +1 -1
  429. package/dist/frontend/input-tracker.d.ts +3 -0
  430. package/dist/frontend/input-tracker.js +32 -3
  431. package/dist/frontend/input-tracker.js.map +1 -1
  432. package/dist/frontend/lib-contract.js +36 -32
  433. package/dist/frontend/lib-contract.js.map +1 -1
  434. package/dist/frontend/lib-exports.js +3 -3
  435. package/dist/frontend/lib-exports.js.map +1 -1
  436. package/dist/frontend/lowering/array-values.d.ts +8 -3
  437. package/dist/frontend/lowering/array-values.js +60 -11
  438. package/dist/frontend/lowering/array-values.js.map +1 -1
  439. package/dist/frontend/lowering/assert-instances.js +4 -4
  440. package/dist/frontend/lowering/assert-instances.js.map +1 -1
  441. package/dist/frontend/lowering/assertion-identity.d.ts +12 -0
  442. package/dist/frontend/lowering/assertion-identity.js +70 -0
  443. package/dist/frontend/lowering/assertion-identity.js.map +1 -0
  444. package/dist/frontend/lowering/assertion-members.d.ts +28 -0
  445. package/dist/frontend/lowering/assertion-members.js +185 -0
  446. package/dist/frontend/lowering/assertion-members.js.map +1 -0
  447. package/dist/frontend/lowering/binding-analysis.js +27 -20
  448. package/dist/frontend/lowering/binding-analysis.js.map +1 -1
  449. package/dist/frontend/lowering/builtin-calls.js +63 -5
  450. package/dist/frontend/lowering/builtin-calls.js.map +1 -1
  451. package/dist/frontend/lowering/builtin-function-fences.d.ts +14 -0
  452. package/dist/frontend/lowering/builtin-function-fences.js +42 -0
  453. package/dist/frontend/lowering/builtin-function-fences.js.map +1 -0
  454. package/dist/frontend/lowering/builtins/arguments.js +1 -1
  455. package/dist/frontend/lowering/builtins/arguments.js.map +1 -1
  456. package/dist/frontend/lowering/builtins/async-context.js +53 -52
  457. package/dist/frontend/lowering/builtins/async-context.js.map +1 -1
  458. package/dist/frontend/lowering/builtins/atomics.js +6 -6
  459. package/dist/frontend/lowering/builtins/atomics.js.map +1 -1
  460. package/dist/frontend/lowering/builtins/blob.js +8 -6
  461. package/dist/frontend/lowering/builtins/blob.js.map +1 -1
  462. package/dist/frontend/lowering/builtins/builtin-class-dyn.d.ts +31 -0
  463. package/dist/frontend/lowering/builtins/builtin-class-dyn.js +205 -0
  464. package/dist/frontend/lowering/builtins/builtin-class-dyn.js.map +1 -0
  465. package/dist/frontend/lowering/builtins/callable-aliases.js +17 -5
  466. package/dist/frontend/lowering/builtins/callable-aliases.js.map +1 -1
  467. package/dist/frontend/lowering/builtins/child-process-async.js +7 -7
  468. package/dist/frontend/lowering/builtins/child-process-async.js.map +1 -1
  469. package/dist/frontend/lowering/builtins/child-process-methods.d.ts +6 -4
  470. package/dist/frontend/lowering/builtins/child-process-methods.js +310 -57
  471. package/dist/frontend/lowering/builtins/child-process-methods.js.map +1 -1
  472. package/dist/frontend/lowering/builtins/child-process-sync.js +16 -10
  473. package/dist/frontend/lowering/builtins/child-process-sync.js.map +1 -1
  474. package/dist/frontend/lowering/builtins/child-process.d.ts +6 -4
  475. package/dist/frontend/lowering/builtins/child-process.js +85 -61
  476. package/dist/frontend/lowering/builtins/child-process.js.map +1 -1
  477. package/dist/frontend/lowering/builtins/class-values.d.ts +60 -0
  478. package/dist/frontend/lowering/builtins/class-values.js +226 -0
  479. package/dist/frontend/lowering/builtins/class-values.js.map +1 -0
  480. package/dist/frontend/lowering/builtins/compression.d.ts +9 -0
  481. package/dist/frontend/lowering/builtins/compression.js +107 -44
  482. package/dist/frontend/lowering/builtins/compression.js.map +1 -1
  483. package/dist/frontend/lowering/builtins/constants.d.ts +9 -1
  484. package/dist/frontend/lowering/builtins/constants.js +28 -7
  485. package/dist/frontend/lowering/builtins/constants.js.map +1 -1
  486. package/dist/frontend/lowering/builtins/crypto.d.ts +22 -0
  487. package/dist/frontend/lowering/builtins/crypto.js +215 -38
  488. package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
  489. package/dist/frontend/lowering/builtins/dates.d.ts +7 -1
  490. package/dist/frontend/lowering/builtins/dates.js +92 -16
  491. package/dist/frontend/lowering/builtins/dates.js.map +1 -1
  492. package/dist/frontend/lowering/builtins/disposable-stack.d.ts +18 -0
  493. package/dist/frontend/lowering/builtins/disposable-stack.js +137 -0
  494. package/dist/frontend/lowering/builtins/disposable-stack.js.map +1 -0
  495. package/dist/frontend/lowering/builtins/ecdh.d.ts +10 -0
  496. package/dist/frontend/lowering/builtins/ecdh.js +208 -0
  497. package/dist/frontend/lowering/builtins/ecdh.js.map +1 -0
  498. package/dist/frontend/lowering/builtins/environment.js +3 -3
  499. package/dist/frontend/lowering/builtins/environment.js.map +1 -1
  500. package/dist/frontend/lowering/builtins/errors.d.ts +14 -10
  501. package/dist/frontend/lowering/builtins/errors.js +169 -3
  502. package/dist/frontend/lowering/builtins/errors.js.map +1 -1
  503. package/dist/frontend/lowering/builtins/filesystem-calls.js +128 -116
  504. package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
  505. package/dist/frontend/lowering/builtins/filesystem.js +77 -77
  506. package/dist/frontend/lowering/builtins/filesystem.js.map +1 -1
  507. package/dist/frontend/lowering/builtins/fs-glob.js +3 -3
  508. package/dist/frontend/lowering/builtins/fs-glob.js.map +1 -1
  509. package/dist/frontend/lowering/builtins/fs-streams.js +10 -11
  510. package/dist/frontend/lowering/builtins/fs-streams.js.map +1 -1
  511. package/dist/frontend/lowering/builtins/ipc.js +45 -8
  512. package/dist/frontend/lowering/builtins/ipc.js.map +1 -1
  513. package/dist/frontend/lowering/builtins/json.js +284 -24
  514. package/dist/frontend/lowering/builtins/json.js.map +1 -1
  515. package/dist/frontend/lowering/builtins/key-object.js +4 -4
  516. package/dist/frontend/lowering/builtins/key-object.js.map +1 -1
  517. package/dist/frontend/lowering/builtins/module-bindings.d.ts +8 -0
  518. package/dist/frontend/lowering/builtins/module-bindings.js +71 -22
  519. package/dist/frontend/lowering/builtins/module-bindings.js.map +1 -1
  520. package/dist/frontend/lowering/builtins/module-calls.js +55 -44
  521. package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
  522. package/dist/frontend/lowering/builtins/module-resolution.d.ts +4 -3
  523. package/dist/frontend/lowering/builtins/module-resolution.js +24 -23
  524. package/dist/frontend/lowering/builtins/module-resolution.js.map +1 -1
  525. package/dist/frontend/lowering/builtins/navigator.d.ts +13 -0
  526. package/dist/frontend/lowering/builtins/navigator.js +40 -0
  527. package/dist/frontend/lowering/builtins/navigator.js.map +1 -0
  528. package/dist/frontend/lowering/builtins/net-address.d.ts +19 -0
  529. package/dist/frontend/lowering/builtins/net-address.js +156 -0
  530. package/dist/frontend/lowering/builtins/net-address.js.map +1 -0
  531. package/dist/frontend/lowering/builtins/numbers.js +25 -9
  532. package/dist/frontend/lowering/builtins/numbers.js.map +1 -1
  533. package/dist/frontend/lowering/builtins/operating-system.d.ts +4 -0
  534. package/dist/frontend/lowering/builtins/operating-system.js +25 -12
  535. package/dist/frontend/lowering/builtins/operating-system.js.map +1 -1
  536. package/dist/frontend/lowering/builtins/performance.d.ts +12 -0
  537. package/dist/frontend/lowering/builtins/performance.js +259 -8
  538. package/dist/frontend/lowering/builtins/performance.js.map +1 -1
  539. package/dist/frontend/lowering/builtins/process.d.ts +41 -1
  540. package/dist/frontend/lowering/builtins/process.js +505 -99
  541. package/dist/frontend/lowering/builtins/process.js.map +1 -1
  542. package/dist/frontend/lowering/builtins/promises.d.ts +5 -1
  543. package/dist/frontend/lowering/builtins/promises.js +326 -43
  544. package/dist/frontend/lowering/builtins/promises.js.map +1 -1
  545. package/dist/frontend/lowering/builtins/promisify-callback.d.ts +40 -0
  546. package/dist/frontend/lowering/builtins/promisify-callback.js +338 -0
  547. package/dist/frontend/lowering/builtins/promisify-callback.js.map +1 -0
  548. package/dist/frontend/lowering/builtins/properties.js +37 -1
  549. package/dist/frontend/lowering/builtins/properties.js.map +1 -1
  550. package/dist/frontend/lowering/builtins/querystring.js +14 -14
  551. package/dist/frontend/lowering/builtins/querystring.js.map +1 -1
  552. package/dist/frontend/lowering/builtins/readline.d.ts +12 -2
  553. package/dist/frontend/lowering/builtins/readline.js +136 -39
  554. package/dist/frontend/lowering/builtins/readline.js.map +1 -1
  555. package/dist/frontend/lowering/builtins/receiver-types.js +3 -5
  556. package/dist/frontend/lowering/builtins/receiver-types.js.map +1 -1
  557. package/dist/frontend/lowering/builtins/reflection.js +42 -14
  558. package/dist/frontend/lowering/builtins/reflection.js.map +1 -1
  559. package/dist/frontend/lowering/builtins/runtime-constructor.d.ts +26 -0
  560. package/dist/frontend/lowering/builtins/runtime-constructor.js +165 -0
  561. package/dist/frontend/lowering/builtins/runtime-constructor.js.map +1 -0
  562. package/dist/frontend/lowering/builtins/strings.js +101 -12
  563. package/dist/frontend/lowering/builtins/strings.js.map +1 -1
  564. package/dist/frontend/lowering/builtins/text-codecs.js +41 -38
  565. package/dist/frontend/lowering/builtins/text-codecs.js.map +1 -1
  566. package/dist/frontend/lowering/builtins/timers.js +79 -30
  567. package/dist/frontend/lowering/builtins/timers.js.map +1 -1
  568. package/dist/frontend/lowering/builtins/typed-array-members.d.ts +7 -0
  569. package/dist/frontend/lowering/builtins/typed-array-members.js +160 -0
  570. package/dist/frontend/lowering/builtins/typed-array-members.js.map +1 -0
  571. package/dist/frontend/lowering/builtins/url.d.ts +3 -0
  572. package/dist/frontend/lowering/builtins/url.js +120 -17
  573. package/dist/frontend/lowering/builtins/url.js.map +1 -1
  574. package/dist/frontend/lowering/builtins/util-types.js +20 -4
  575. package/dist/frontend/lowering/builtins/util-types.js.map +1 -1
  576. package/dist/frontend/lowering/builtins/v8.d.ts +11 -0
  577. package/dist/frontend/lowering/builtins/v8.js +105 -0
  578. package/dist/frontend/lowering/builtins/v8.js.map +1 -0
  579. package/dist/frontend/lowering/builtins/webassembly.d.ts +33 -0
  580. package/dist/frontend/lowering/builtins/webassembly.js +388 -0
  581. package/dist/frontend/lowering/builtins/webassembly.js.map +1 -0
  582. package/dist/frontend/lowering/builtins/webcrypto.d.ts +20 -0
  583. package/dist/frontend/lowering/builtins/webcrypto.js +112 -0
  584. package/dist/frontend/lowering/builtins/webcrypto.js.map +1 -0
  585. package/dist/frontend/lowering/builtins/workers.d.ts +12 -0
  586. package/dist/frontend/lowering/builtins/workers.js +193 -8
  587. package/dist/frontend/lowering/builtins/workers.js.map +1 -1
  588. package/dist/frontend/lowering/call-arguments.js +69 -14
  589. package/dist/frontend/lowering/call-arguments.js.map +1 -1
  590. package/dist/frontend/lowering/call-signatures.d.ts +23 -1
  591. package/dist/frontend/lowering/call-signatures.js +379 -55
  592. package/dist/frontend/lowering/call-signatures.js.map +1 -1
  593. package/dist/frontend/lowering/checked-promise-all.d.ts +3 -0
  594. package/dist/frontend/lowering/checked-promise-all.js +1 -1
  595. package/dist/frontend/lowering/checked-promise-all.js.map +1 -1
  596. package/dist/frontend/lowering/cjs-exports-object.d.ts +53 -0
  597. package/dist/frontend/lowering/cjs-exports-object.js +561 -0
  598. package/dist/frontend/lowering/cjs-exports-object.js.map +1 -0
  599. package/dist/frontend/lowering/cjs-inline-require.d.ts +86 -0
  600. package/dist/frontend/lowering/cjs-inline-require.js +314 -0
  601. package/dist/frontend/lowering/cjs-inline-require.js.map +1 -0
  602. package/dist/frontend/lowering/cjs-tsc-interop.d.ts +28 -0
  603. package/dist/frontend/lowering/cjs-tsc-interop.js +208 -0
  604. package/dist/frontend/lowering/cjs-tsc-interop.js.map +1 -0
  605. package/dist/frontend/lowering/class-attributes.d.ts +19 -0
  606. package/dist/frontend/lowering/class-attributes.js +378 -0
  607. package/dist/frontend/lowering/class-attributes.js.map +1 -0
  608. package/dist/frontend/lowering/class-callbacks.d.ts +3 -1
  609. package/dist/frontend/lowering/class-callbacks.js +21 -10
  610. package/dist/frontend/lowering/class-callbacks.js.map +1 -1
  611. package/dist/frontend/lowering/class-construction.js +49 -4
  612. package/dist/frontend/lowering/class-construction.js.map +1 -1
  613. package/dist/frontend/lowering/class-descriptors.d.ts +2 -0
  614. package/dist/frontend/lowering/class-descriptors.js +8 -8
  615. package/dist/frontend/lowering/class-descriptors.js.map +1 -1
  616. package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +64 -0
  617. package/dist/frontend/lowering/class-dynamic-dispatch.js +1124 -90
  618. package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
  619. package/dist/frontend/lowering/class-instance-constructor.js +1 -1
  620. package/dist/frontend/lowering/class-instance-constructor.js.map +1 -1
  621. package/dist/frontend/lowering/class-iterables.d.ts +11 -0
  622. package/dist/frontend/lowering/class-iterables.js +31 -0
  623. package/dist/frontend/lowering/class-iterables.js.map +1 -0
  624. package/dist/frontend/lowering/class-method-mutations.js +73 -35
  625. package/dist/frontend/lowering/class-method-mutations.js.map +1 -1
  626. package/dist/frontend/lowering/class-method-values.js +56 -10
  627. package/dist/frontend/lowering/class-method-values.js.map +1 -1
  628. package/dist/frontend/lowering/class-protocol-dispatch.js +24 -22
  629. package/dist/frontend/lowering/class-protocol-dispatch.js.map +1 -1
  630. package/dist/frontend/lowering/class-protocols.d.ts +10 -0
  631. package/dist/frontend/lowering/class-protocols.js +76 -45
  632. package/dist/frontend/lowering/class-protocols.js.map +1 -1
  633. package/dist/frontend/lowering/class-prototypes.d.ts +6 -0
  634. package/dist/frontend/lowering/class-prototypes.js +86 -19
  635. package/dist/frontend/lowering/class-prototypes.js.map +1 -1
  636. package/dist/frontend/lowering/class-runtime-statics.js +1 -1
  637. package/dist/frontend/lowering/class-runtime-statics.js.map +1 -1
  638. package/dist/frontend/lowering/class-static-data.js +2 -2
  639. package/dist/frontend/lowering/class-static-data.js.map +1 -1
  640. package/dist/frontend/lowering/class-to-primitive.d.ts +25 -0
  641. package/dist/frontend/lowering/class-to-primitive.js +264 -0
  642. package/dist/frontend/lowering/class-to-primitive.js.map +1 -0
  643. package/dist/frontend/lowering/class-unions.d.ts +25 -0
  644. package/dist/frontend/lowering/class-unions.js +102 -1
  645. package/dist/frontend/lowering/class-unions.js.map +1 -1
  646. package/dist/frontend/lowering/code-generation.d.ts +14 -0
  647. package/dist/frontend/lowering/code-generation.js +127 -0
  648. package/dist/frontend/lowering/code-generation.js.map +1 -0
  649. package/dist/frontend/lowering/coercions/fresh-spread.d.ts +13 -0
  650. package/dist/frontend/lowering/coercions/fresh-spread.js +95 -0
  651. package/dist/frontend/lowering/coercions/fresh-spread.js.map +1 -0
  652. package/dist/frontend/lowering/coercions/function-adapters.d.ts +16 -2
  653. package/dist/frontend/lowering/coercions/function-adapters.js +239 -68
  654. package/dist/frontend/lowering/coercions/function-adapters.js.map +1 -1
  655. package/dist/frontend/lowering/coercions/structural-plans.js +25 -3
  656. package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -1
  657. package/dist/frontend/lowering/coercions/structural.js +35 -3
  658. package/dist/frontend/lowering/coercions/structural.js.map +1 -1
  659. package/dist/frontend/lowering/coercions/unions.d.ts +15 -0
  660. package/dist/frontend/lowering/coercions/unions.js +57 -1
  661. package/dist/frontend/lowering/coercions/unions.js.map +1 -1
  662. package/dist/frontend/lowering/collection-ingestion.js +2 -2
  663. package/dist/frontend/lowering/collection-ingestion.js.map +1 -1
  664. package/dist/frontend/lowering/collection-narrowing.js +2 -4
  665. package/dist/frontend/lowering/collection-narrowing.js.map +1 -1
  666. package/dist/frontend/lowering/construction-escapes.js +8 -8
  667. package/dist/frontend/lowering/construction-escapes.js.map +1 -1
  668. package/dist/frontend/lowering/construction-escapes.test.js +4 -4
  669. package/dist/frontend/lowering/construction-escapes.test.js.map +1 -1
  670. package/dist/frontend/lowering/constructor-returns.d.ts +61 -0
  671. package/dist/frontend/lowering/constructor-returns.js +477 -0
  672. package/dist/frontend/lowering/constructor-returns.js.map +1 -0
  673. package/dist/frontend/lowering/containers/array-callback-call.js +1 -1
  674. package/dist/frontend/lowering/containers/array-callback-call.js.map +1 -1
  675. package/dist/frontend/lowering/containers/array-callbacks.d.ts +17 -0
  676. package/dist/frontend/lowering/containers/array-callbacks.js +287 -118
  677. package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
  678. package/dist/frontend/lowering/containers/array-concat.js +1 -1
  679. package/dist/frontend/lowering/containers/array-concat.js.map +1 -1
  680. package/dist/frontend/lowering/containers/array-construction.d.ts +0 -1
  681. package/dist/frontend/lowering/containers/array-construction.js +58 -13
  682. package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
  683. package/dist/frontend/lowering/containers/array-from-async.d.ts +6 -5
  684. package/dist/frontend/lowering/containers/array-from-async.js +159 -14
  685. package/dist/frontend/lowering/containers/array-from-async.js.map +1 -1
  686. package/dist/frontend/lowering/containers/array-methods.js +94 -77
  687. package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
  688. package/dist/frontend/lowering/containers/array-pipelines.js +1 -0
  689. package/dist/frontend/lowering/containers/array-pipelines.js.map +1 -1
  690. package/dist/frontend/lowering/containers/bytes.d.ts +9 -0
  691. package/dist/frontend/lowering/containers/bytes.js +649 -113
  692. package/dist/frontend/lowering/containers/bytes.js.map +1 -1
  693. package/dist/frontend/lowering/containers/callback-arguments.d.ts +9 -1
  694. package/dist/frontend/lowering/containers/callback-arguments.js +55 -5
  695. package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -1
  696. package/dist/frontend/lowering/containers/collection-grouping.d.ts +7 -8
  697. package/dist/frontend/lowering/containers/collection-grouping.js +217 -26
  698. package/dist/frontend/lowering/containers/collection-grouping.js.map +1 -1
  699. package/dist/frontend/lowering/containers/collection-methods.js +126 -28
  700. package/dist/frontend/lowering/containers/collection-methods.js.map +1 -1
  701. package/dist/frontend/lowering/containers/dynamic-receivers.js +1 -1
  702. package/dist/frontend/lowering/containers/dynamic-receivers.js.map +1 -1
  703. package/dist/frontend/lowering/containers/exec-result-uses.js +2 -2
  704. package/dist/frontend/lowering/containers/exec-result-uses.js.map +1 -1
  705. package/dist/frontend/lowering/containers/for-of.d.ts +6 -0
  706. package/dist/frontend/lowering/containers/for-of.js +19 -19
  707. package/dist/frontend/lowering/containers/for-of.js.map +1 -1
  708. package/dist/frontend/lowering/containers/indexed-objects.js +142 -57
  709. package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
  710. package/dist/frontend/lowering/containers/iterator-helpers.d.ts +53 -4
  711. package/dist/frontend/lowering/containers/iterator-helpers.js +1581 -462
  712. package/dist/frontend/lowering/containers/iterator-helpers.js.map +1 -1
  713. package/dist/frontend/lowering/containers/match-row-uses.d.ts +17 -0
  714. package/dist/frontend/lowering/containers/match-row-uses.js +264 -0
  715. package/dist/frontend/lowering/containers/match-row-uses.js.map +1 -0
  716. package/dist/frontend/lowering/containers/string-and-regexp.d.ts +14 -0
  717. package/dist/frontend/lowering/containers/string-and-regexp.js +455 -30
  718. package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
  719. package/dist/frontend/lowering/containers/string-replacement.js +1 -1
  720. package/dist/frontend/lowering/containers/string-replacement.js.map +1 -1
  721. package/dist/frontend/lowering/cycle-initialization.d.ts +30 -10
  722. package/dist/frontend/lowering/cycle-initialization.js +191 -35
  723. package/dist/frontend/lowering/cycle-initialization.js.map +1 -1
  724. package/dist/frontend/lowering/deferred-module-initializers.js +47 -43
  725. package/dist/frontend/lowering/deferred-module-initializers.js.map +1 -1
  726. package/dist/frontend/lowering/devirtualize.d.ts +1 -1
  727. package/dist/frontend/lowering/devirtualize.js +27 -7
  728. package/dist/frontend/lowering/devirtualize.js.map +1 -1
  729. package/dist/frontend/lowering/divergences.d.ts +0 -5
  730. package/dist/frontend/lowering/divergences.js +62 -125
  731. package/dist/frontend/lowering/divergences.js.map +1 -1
  732. package/dist/frontend/lowering/dyn-streams.d.ts +25 -0
  733. package/dist/frontend/lowering/dyn-streams.js +257 -0
  734. package/dist/frontend/lowering/dyn-streams.js.map +1 -0
  735. package/dist/frontend/lowering/error-methods.js +4 -1
  736. package/dist/frontend/lowering/error-methods.js.map +1 -1
  737. package/dist/frontend/lowering/error-name-order.d.ts +19 -0
  738. package/dist/frontend/lowering/error-name-order.js +93 -0
  739. package/dist/frontend/lowering/error-name-order.js.map +1 -0
  740. package/dist/frontend/lowering/expressions/array-literals.d.ts +21 -0
  741. package/dist/frontend/lowering/expressions/array-literals.js +723 -0
  742. package/dist/frontend/lowering/expressions/array-literals.js.map +1 -0
  743. package/dist/frontend/lowering/expressions/binary.d.ts +35 -0
  744. package/dist/frontend/lowering/expressions/binary.js +2557 -0
  745. package/dist/frontend/lowering/expressions/binary.js.map +1 -0
  746. package/dist/frontend/lowering/expressions/element-access.d.ts +31 -0
  747. package/dist/frontend/lowering/expressions/element-access.js +1804 -0
  748. package/dist/frontend/lowering/expressions/element-access.js.map +1 -0
  749. package/dist/frontend/lowering/expressions/evaluation-safety.js +4 -3
  750. package/dist/frontend/lowering/expressions/evaluation-safety.js.map +1 -1
  751. package/dist/frontend/lowering/expressions/hosted-narrowing.d.ts +38 -0
  752. package/dist/frontend/lowering/expressions/hosted-narrowing.js +160 -0
  753. package/dist/frontend/lowering/expressions/hosted-narrowing.js.map +1 -0
  754. package/dist/frontend/lowering/expressions/identifiers.d.ts +4 -0
  755. package/dist/frontend/lowering/expressions/identifiers.js +830 -0
  756. package/dist/frontend/lowering/expressions/identifiers.js.map +1 -0
  757. package/dist/frontend/lowering/expressions/keyed-field-targets.d.ts +52 -0
  758. package/dist/frontend/lowering/expressions/keyed-field-targets.js +307 -0
  759. package/dist/frontend/lowering/expressions/keyed-field-targets.js.map +1 -0
  760. package/dist/frontend/lowering/expressions/narrowing.d.ts +37 -0
  761. package/dist/frontend/lowering/expressions/narrowing.js +1337 -0
  762. package/dist/frontend/lowering/expressions/narrowing.js.map +1 -0
  763. package/dist/frontend/lowering/expressions/native-proxy.js +4 -4
  764. package/dist/frontend/lowering/expressions/native-proxy.js.map +1 -1
  765. package/dist/frontend/lowering/expressions/nullish-assignment.js +45 -0
  766. package/dist/frontend/lowering/expressions/nullish-assignment.js.map +1 -1
  767. package/dist/frontend/lowering/expressions/object-literals.d.ts +10 -0
  768. package/dist/frontend/lowering/expressions/object-literals.js +301 -86
  769. package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
  770. package/dist/frontend/lowering/expressions/optional-chains.d.ts +3 -2
  771. package/dist/frontend/lowering/expressions/optional-chains.js +103 -17
  772. package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
  773. package/dist/frontend/lowering/expressions/property-access.d.ts +115 -0
  774. package/dist/frontend/lowering/expressions/property-access.js +3787 -0
  775. package/dist/frontend/lowering/expressions/property-access.js.map +1 -0
  776. package/dist/frontend/lowering/expressions/relational.d.ts +28 -0
  777. package/dist/frontend/lowering/expressions/relational.js +1724 -0
  778. package/dist/frontend/lowering/expressions/relational.js.map +1 -0
  779. package/dist/frontend/lowering/expressions/typeof.d.ts +22 -0
  780. package/dist/frontend/lowering/expressions/typeof.js +551 -0
  781. package/dist/frontend/lowering/expressions/typeof.js.map +1 -0
  782. package/dist/frontend/lowering/expressions/union-fields.js +1 -1
  783. package/dist/frontend/lowering/expressions/union-fields.js.map +1 -1
  784. package/dist/frontend/lowering/expressions/updates.d.ts +21 -0
  785. package/dist/frontend/lowering/expressions/updates.js +780 -0
  786. package/dist/frontend/lowering/expressions/updates.js.map +1 -0
  787. package/dist/frontend/lowering/function-context.d.ts +10 -0
  788. package/dist/frontend/lowering/function-context.js +11 -1
  789. package/dist/frontend/lowering/function-context.js.map +1 -1
  790. package/dist/frontend/lowering/function-returns.js +52 -28
  791. package/dist/frontend/lowering/function-returns.js.map +1 -1
  792. package/dist/frontend/lowering/general-streams.d.ts +25 -0
  793. package/dist/frontend/lowering/general-streams.js +108 -0
  794. package/dist/frontend/lowering/general-streams.js.map +1 -0
  795. package/dist/frontend/lowering/generator-delegation.d.ts +8 -0
  796. package/dist/frontend/lowering/generator-delegation.js +191 -1
  797. package/dist/frontend/lowering/generator-delegation.js.map +1 -1
  798. package/dist/frontend/lowering/generator-dynamic-dispatch.d.ts +7 -0
  799. package/dist/frontend/lowering/generator-dynamic-dispatch.js +172 -69
  800. package/dist/frontend/lowering/generator-dynamic-dispatch.js.map +1 -1
  801. package/dist/frontend/lowering/generic-functions.d.ts +43 -0
  802. package/dist/frontend/lowering/generic-functions.js +593 -118
  803. package/dist/frontend/lowering/generic-functions.js.map +1 -1
  804. package/dist/frontend/lowering/handle-properties.d.ts +24 -0
  805. package/dist/frontend/lowering/handle-properties.js +281 -0
  806. package/dist/frontend/lowering/handle-properties.js.map +1 -0
  807. package/dist/frontend/lowering/import-meta.js +2 -2
  808. package/dist/frontend/lowering/import-meta.js.map +1 -1
  809. package/dist/frontend/lowering/intern-tables.js +10 -9
  810. package/dist/frontend/lowering/intern-tables.js.map +1 -1
  811. package/dist/frontend/lowering/iterable-spelling.d.ts +7 -0
  812. package/dist/frontend/lowering/iterable-spelling.js +38 -0
  813. package/dist/frontend/lowering/iterable-spelling.js.map +1 -0
  814. package/dist/frontend/lowering/iterator-adapters.d.ts +19 -0
  815. package/dist/frontend/lowering/iterator-adapters.js +331 -3
  816. package/dist/frontend/lowering/iterator-adapters.js.map +1 -1
  817. package/dist/frontend/lowering/js-class-fields.d.ts +28 -0
  818. package/dist/frontend/lowering/js-class-fields.js +170 -0
  819. package/dist/frontend/lowering/js-class-fields.js.map +1 -0
  820. package/dist/frontend/lowering/js-dynamic-objects.d.ts +15 -0
  821. package/dist/frontend/lowering/js-dynamic-objects.js +299 -0
  822. package/dist/frontend/lowering/js-dynamic-objects.js.map +1 -0
  823. package/dist/frontend/lowering/js-dynamic-objects.test.d.ts +1 -0
  824. package/dist/frontend/lowering/js-dynamic-objects.test.js +35 -0
  825. package/dist/frontend/lowering/js-dynamic-objects.test.js.map +1 -0
  826. package/dist/frontend/lowering/json-require.d.ts +22 -0
  827. package/dist/frontend/lowering/json-require.js +131 -0
  828. package/dist/frontend/lowering/json-require.js.map +1 -0
  829. package/dist/frontend/lowering/key-order-witness.d.ts +44 -0
  830. package/dist/frontend/lowering/key-order-witness.js +641 -0
  831. package/dist/frontend/lowering/key-order-witness.js.map +1 -0
  832. package/dist/frontend/lowering/key-order-witness.test.d.ts +1 -0
  833. package/dist/frontend/lowering/key-order-witness.test.js +239 -0
  834. package/dist/frontend/lowering/key-order-witness.test.js.map +1 -0
  835. package/dist/frontend/lowering/lifetime-regions.js +7 -7
  836. package/dist/frontend/lowering/lifetime-regions.js.map +1 -1
  837. package/dist/frontend/lowering/lower-array-sort.d.ts +33 -15
  838. package/dist/frontend/lowering/lower-array-sort.js +117 -21
  839. package/dist/frontend/lowering/lower-array-sort.js.map +1 -1
  840. package/dist/frontend/lowering/lower-array-sort.test.js +93 -14
  841. package/dist/frontend/lowering/lower-array-sort.test.js.map +1 -1
  842. package/dist/frontend/lowering/lower-assert.js +61 -60
  843. package/dist/frontend/lowering/lower-assert.js.map +1 -1
  844. package/dist/frontend/lowering/lower-async-iteration.d.ts +10 -1
  845. package/dist/frontend/lowering/lower-async-iteration.js +34 -6
  846. package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
  847. package/dist/frontend/lowering/lower-builtin-values.d.ts +5 -0
  848. package/dist/frontend/lowering/lower-builtin-values.js +33 -3
  849. package/dist/frontend/lowering/lower-builtin-values.js.map +1 -1
  850. package/dist/frontend/lowering/lower-calls.js +1404 -448
  851. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  852. package/dist/frontend/lowering/lower-classes.d.ts +54 -3
  853. package/dist/frontend/lowering/lower-classes.js +1529 -472
  854. package/dist/frontend/lowering/lower-classes.js.map +1 -1
  855. package/dist/frontend/lowering/lower-comptime.d.ts +4 -2
  856. package/dist/frontend/lowering/lower-comptime.js +111 -13
  857. package/dist/frontend/lowering/lower-comptime.js.map +1 -1
  858. package/dist/frontend/lowering/lower-console.js +13 -11
  859. package/dist/frontend/lowering/lower-console.js.map +1 -1
  860. package/dist/frontend/lowering/lower-dgram.d.ts +10 -0
  861. package/dist/frontend/lowering/lower-dgram.js +241 -21
  862. package/dist/frontend/lowering/lower-dgram.js.map +1 -1
  863. package/dist/frontend/lowering/lower-enums.js +113 -14
  864. package/dist/frontend/lowering/lower-enums.js.map +1 -1
  865. package/dist/frontend/lowering/lower-event-emitter.d.ts +16 -7
  866. package/dist/frontend/lowering/lower-event-emitter.js +258 -70
  867. package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
  868. package/dist/frontend/lowering/lower-event-target.js +2 -2
  869. package/dist/frontend/lowering/lower-event-target.js.map +1 -1
  870. package/dist/frontend/lowering/lower-expando.js +17 -13
  871. package/dist/frontend/lowering/lower-expando.js.map +1 -1
  872. package/dist/frontend/lowering/lower-exprs.d.ts +188 -186
  873. package/dist/frontend/lowering/lower-exprs.js +1509 -12486
  874. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  875. package/dist/frontend/lowering/lower-functions.js +72 -22
  876. package/dist/frontend/lowering/lower-functions.js.map +1 -1
  877. package/dist/frontend/lowering/lower-generators.d.ts +6 -0
  878. package/dist/frontend/lowering/lower-generators.js +39 -20
  879. package/dist/frontend/lowering/lower-generators.js.map +1 -1
  880. package/dist/frontend/lowering/lower-global-value.js +5 -1
  881. package/dist/frontend/lowering/lower-global-value.js.map +1 -1
  882. package/dist/frontend/lowering/lower-inspect.js +900 -107
  883. package/dist/frontend/lowering/lower-inspect.js.map +1 -1
  884. package/dist/frontend/lowering/lower-mixins.js +23 -20
  885. package/dist/frontend/lowering/lower-mixins.js.map +1 -1
  886. package/dist/frontend/lowering/lower-mock.d.ts +8 -1
  887. package/dist/frontend/lowering/lower-mock.js +185 -18
  888. package/dist/frontend/lowering/lower-mock.js.map +1 -1
  889. package/dist/frontend/lowering/lower-modules.d.ts +11 -3
  890. package/dist/frontend/lowering/lower-modules.js +445 -94
  891. package/dist/frontend/lowering/lower-modules.js.map +1 -1
  892. package/dist/frontend/lowering/lower-namespaces.d.ts +6 -0
  893. package/dist/frontend/lowering/lower-namespaces.js +65 -33
  894. package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
  895. package/dist/frontend/lowering/lower-node-module.d.ts +16 -0
  896. package/dist/frontend/lowering/lower-node-module.js +147 -14
  897. package/dist/frontend/lowering/lower-node-module.js.map +1 -1
  898. package/dist/frontend/lowering/lower-server.d.ts +6 -6
  899. package/dist/frontend/lowering/lower-server.js +514 -101
  900. package/dist/frontend/lowering/lower-server.js.map +1 -1
  901. package/dist/frontend/lowering/lower-stdlib.d.ts +4 -0
  902. package/dist/frontend/lowering/lower-stdlib.js +179 -118
  903. package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
  904. package/dist/frontend/lowering/lower-stmts.d.ts +30 -7
  905. package/dist/frontend/lowering/lower-stmts.js +1950 -433
  906. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  907. package/dist/frontend/lowering/lower-stream.d.ts +3 -0
  908. package/dist/frontend/lowering/lower-stream.js +398 -56
  909. package/dist/frontend/lowering/lower-stream.js.map +1 -1
  910. package/dist/frontend/lowering/lower-test.d.ts +3 -0
  911. package/dist/frontend/lowering/lower-test.js +437 -62
  912. package/dist/frontend/lowering/lower-test.js.map +1 -1
  913. package/dist/frontend/lowering/lower-timers.js +96 -32
  914. package/dist/frontend/lowering/lower-timers.js.map +1 -1
  915. package/dist/frontend/lowering/lower-url.js +1 -1
  916. package/dist/frontend/lowering/lower-url.js.map +1 -1
  917. package/dist/frontend/lowering/lowerer.d.ts +424 -27
  918. package/dist/frontend/lowering/lowerer.js +2062 -310
  919. package/dist/frontend/lowering/lowerer.js.map +1 -1
  920. package/dist/frontend/lowering/lowerer.test.js +10 -4
  921. package/dist/frontend/lowering/lowerer.test.js.map +1 -1
  922. package/dist/frontend/lowering/maybe-promise.d.ts +46 -0
  923. package/dist/frontend/lowering/maybe-promise.js +249 -0
  924. package/dist/frontend/lowering/maybe-promise.js.map +1 -0
  925. package/dist/frontend/lowering/module-member-this.d.ts +3 -0
  926. package/dist/frontend/lowering/module-member-this.js +262 -0
  927. package/dist/frontend/lowering/module-member-this.js.map +1 -0
  928. package/dist/frontend/lowering/module-namespace-elements.js +1 -1
  929. package/dist/frontend/lowering/module-namespace-elements.js.map +1 -1
  930. package/dist/frontend/lowering/nan-coded-reads.d.ts +3 -0
  931. package/dist/frontend/lowering/nan-coded-reads.js +45 -32
  932. package/dist/frontend/lowering/nan-coded-reads.js.map +1 -1
  933. package/dist/frontend/lowering/narrowing-stability.d.ts +18 -3
  934. package/dist/frontend/lowering/narrowing-stability.js +104 -32
  935. package/dist/frontend/lowering/narrowing-stability.js.map +1 -1
  936. package/dist/frontend/lowering/native-ffi.js +11 -11
  937. package/dist/frontend/lowering/native-ffi.js.map +1 -1
  938. package/dist/frontend/lowering/object-factory-new.js +6 -8
  939. package/dist/frontend/lowering/object-factory-new.js.map +1 -1
  940. package/dist/frontend/lowering/private-brands.d.ts +46 -0
  941. package/dist/frontend/lowering/private-brands.js +265 -0
  942. package/dist/frontend/lowering/private-brands.js.map +1 -0
  943. package/dist/frontend/lowering/promise-executor-adapter.d.ts +11 -0
  944. package/dist/frontend/lowering/promise-executor-adapter.js +87 -0
  945. package/dist/frontend/lowering/promise-executor-adapter.js.map +1 -0
  946. package/dist/frontend/lowering/rebindable-functions.d.ts +8 -0
  947. package/dist/frontend/lowering/rebindable-functions.js +54 -0
  948. package/dist/frontend/lowering/rebindable-functions.js.map +1 -0
  949. package/dist/frontend/lowering/require-initialization.d.ts +32 -0
  950. package/dist/frontend/lowering/require-initialization.js +246 -0
  951. package/dist/frontend/lowering/require-initialization.js.map +1 -0
  952. package/dist/frontend/lowering/runtime-optional-bounds.js +7 -7
  953. package/dist/frontend/lowering/runtime-optional-bounds.js.map +1 -1
  954. package/dist/frontend/lowering/runtime-optional-elements.js +12 -12
  955. package/dist/frontend/lowering/runtime-optional-elements.js.map +1 -1
  956. package/dist/frontend/lowering/runtime-optional-guards.js +10 -10
  957. package/dist/frontend/lowering/runtime-optional-guards.js.map +1 -1
  958. package/dist/frontend/lowering/runtime-optional-guards.test.js +1 -1
  959. package/dist/frontend/lowering/runtime-optional-guards.test.js.map +1 -1
  960. package/dist/frontend/lowering/runtime-optional-ownership.js +10 -9
  961. package/dist/frontend/lowering/runtime-optional-ownership.js.map +1 -1
  962. package/dist/frontend/lowering/runtime-optional-provenance.js +2 -2
  963. package/dist/frontend/lowering/runtime-optional-provenance.js.map +1 -1
  964. package/dist/frontend/lowering/runtime-optional-records.d.ts +35 -0
  965. package/dist/frontend/lowering/runtime-optional-records.js +205 -32
  966. package/dist/frontend/lowering/runtime-optional-records.js.map +1 -1
  967. package/dist/frontend/lowering/runtime-optional-records.test.js +19 -1
  968. package/dist/frontend/lowering/runtime-optional-records.test.js.map +1 -1
  969. package/dist/frontend/lowering/sanitize-class-types.test.js +2 -2
  970. package/dist/frontend/lowering/split-consumers.js +4 -4
  971. package/dist/frontend/lowering/split-consumers.js.map +1 -1
  972. package/dist/frontend/lowering/static-function-names.d.ts +28 -0
  973. package/dist/frontend/lowering/static-function-names.js +212 -0
  974. package/dist/frontend/lowering/static-function-names.js.map +1 -0
  975. package/dist/frontend/lowering/static-this.js +6 -6
  976. package/dist/frontend/lowering/static-this.js.map +1 -1
  977. package/dist/frontend/lowering/static-typeof.d.ts +26 -0
  978. package/dist/frontend/lowering/static-typeof.js +133 -0
  979. package/dist/frontend/lowering/static-typeof.js.map +1 -0
  980. package/dist/frontend/lowering/strict-mode.d.ts +5 -0
  981. package/dist/frontend/lowering/strict-mode.js +31 -0
  982. package/dist/frontend/lowering/strict-mode.js.map +1 -0
  983. package/dist/frontend/lowering/string-index-bounds.js +13 -12
  984. package/dist/frontend/lowering/string-index-bounds.js.map +1 -1
  985. package/dist/frontend/lowering/string-index.d.ts +12 -0
  986. package/dist/frontend/lowering/string-index.js +72 -1
  987. package/dist/frontend/lowering/string-index.js.map +1 -1
  988. package/dist/frontend/lowering/surfaces.d.ts +12 -3
  989. package/dist/frontend/lowering/surfaces.js +282 -45
  990. package/dist/frontend/lowering/surfaces.js.map +1 -1
  991. package/dist/frontend/lowering/symbol-fields.d.ts +7 -0
  992. package/dist/frontend/lowering/symbol-fields.js +204 -36
  993. package/dist/frontend/lowering/symbol-fields.js.map +1 -1
  994. package/dist/frontend/lowering/symbol-methods.d.ts +2 -1
  995. package/dist/frontend/lowering/symbol-methods.js +24 -6
  996. package/dist/frontend/lowering/symbol-methods.js.map +1 -1
  997. package/dist/frontend/lowering/thenables.d.ts +16 -0
  998. package/dist/frontend/lowering/thenables.js +124 -0
  999. package/dist/frontend/lowering/thenables.js.map +1 -0
  1000. package/dist/frontend/lowering/thread-slots.d.ts +13 -0
  1001. package/dist/frontend/lowering/thread-slots.js +208 -0
  1002. package/dist/frontend/lowering/thread-slots.js.map +1 -0
  1003. package/dist/frontend/lowering/typed-arguments.d.ts +74 -0
  1004. package/dist/frontend/lowering/typed-arguments.js +472 -0
  1005. package/dist/frontend/lowering/typed-arguments.js.map +1 -0
  1006. package/dist/frontend/lowering/union-retag.d.ts +8 -0
  1007. package/dist/frontend/lowering/union-retag.js +27 -0
  1008. package/dist/frontend/lowering/union-retag.js.map +1 -1
  1009. package/dist/frontend/lowering/union-retag.test.js +24 -1
  1010. package/dist/frontend/lowering/union-retag.test.js.map +1 -1
  1011. package/dist/frontend/lowering/var-hoisting.js +6 -6
  1012. package/dist/frontend/lowering/var-hoisting.js.map +1 -1
  1013. package/dist/frontend/lowering/width-lift.d.ts +4 -0
  1014. package/dist/frontend/mock-shapes.js +13 -6
  1015. package/dist/frontend/mock-shapes.js.map +1 -1
  1016. package/dist/frontend/module-source-candidates.js +1 -1
  1017. package/dist/frontend/module-source-candidates.js.map +1 -1
  1018. package/dist/frontend/module-source-candidates.test.js +2 -1
  1019. package/dist/frontend/module-source-candidates.test.js.map +1 -1
  1020. package/dist/frontend/module-syntax.js +8 -8
  1021. package/dist/frontend/module-syntax.js.map +1 -1
  1022. package/dist/frontend/npm-static-builtin-aliases.d.ts +8 -0
  1023. package/dist/frontend/npm-static-builtin-aliases.js +65 -0
  1024. package/dist/frontend/npm-static-builtin-aliases.js.map +1 -0
  1025. package/dist/frontend/npm-static-bundled-chunks.d.ts +58 -0
  1026. package/dist/frontend/npm-static-bundled-chunks.js +981 -0
  1027. package/dist/frontend/npm-static-bundled-chunks.js.map +1 -0
  1028. package/dist/frontend/npm-static-bundled-chunks.test.d.ts +1 -0
  1029. package/dist/frontend/npm-static-bundled-chunks.test.js +399 -0
  1030. package/dist/frontend/npm-static-bundled-chunks.test.js.map +1 -0
  1031. package/dist/frontend/npm-static-bundled-cjs.js +24 -23
  1032. package/dist/frontend/npm-static-bundled-cjs.js.map +1 -1
  1033. package/dist/frontend/npm-static-bundled-esm.d.ts +9 -0
  1034. package/dist/frontend/npm-static-bundled-esm.js +988 -0
  1035. package/dist/frontend/npm-static-bundled-esm.js.map +1 -0
  1036. package/dist/frontend/npm-static-bundled-esm.test.d.ts +1 -0
  1037. package/dist/frontend/npm-static-bundled-esm.test.js +336 -0
  1038. package/dist/frontend/npm-static-bundled-esm.test.js.map +1 -0
  1039. package/dist/frontend/npm-static-cjs-exports-alias.d.ts +2 -0
  1040. package/dist/frontend/npm-static-cjs-exports-alias.js +186 -0
  1041. package/dist/frontend/npm-static-cjs-exports-alias.js.map +1 -0
  1042. package/dist/frontend/npm-static-cjs-exports-alias.test.d.ts +1 -0
  1043. package/dist/frontend/npm-static-cjs-exports-alias.test.js +73 -0
  1044. package/dist/frontend/npm-static-cjs-exports-alias.test.js.map +1 -0
  1045. package/dist/frontend/npm-static-cjs-exports-var.d.ts +2 -0
  1046. package/dist/frontend/npm-static-cjs-exports-var.js +236 -0
  1047. package/dist/frontend/npm-static-cjs-exports-var.js.map +1 -0
  1048. package/dist/frontend/npm-static-declaration-syntax.js +102 -101
  1049. package/dist/frontend/npm-static-declaration-syntax.js.map +1 -1
  1050. package/dist/frontend/npm-static-enum-iife.d.ts +6 -0
  1051. package/dist/frontend/npm-static-enum-iife.js +280 -0
  1052. package/dist/frontend/npm-static-enum-iife.js.map +1 -0
  1053. package/dist/frontend/npm-static-enum-iife.test.d.ts +1 -0
  1054. package/dist/frontend/npm-static-enum-iife.test.js +116 -0
  1055. package/dist/frontend/npm-static-enum-iife.test.js.map +1 -0
  1056. package/dist/frontend/npm-static-prune.js +36 -24
  1057. package/dist/frontend/npm-static-prune.js.map +1 -1
  1058. package/dist/frontend/npm-static-rewrite-host.d.ts +4 -1
  1059. package/dist/frontend/npm-static-rewrite-host.js +14 -3
  1060. package/dist/frontend/npm-static-rewrite-host.js.map +1 -1
  1061. package/dist/frontend/npm-static-rewrite-syntax.d.ts +19 -0
  1062. package/dist/frontend/npm-static-rewrite-syntax.js +274 -101
  1063. package/dist/frontend/npm-static-rewrite-syntax.js.map +1 -1
  1064. package/dist/frontend/npm-static-subtyping.js +7 -9
  1065. package/dist/frontend/npm-static-subtyping.js.map +1 -1
  1066. package/dist/frontend/npm-static.d.ts +25 -1
  1067. package/dist/frontend/npm-static.js +212 -16
  1068. package/dist/frontend/npm-static.js.map +1 -1
  1069. package/dist/frontend/npm-static.test.js +22 -1
  1070. package/dist/frontend/npm-static.test.js.map +1 -1
  1071. package/dist/frontend/npm.js +13 -0
  1072. package/dist/frontend/npm.js.map +1 -1
  1073. package/dist/frontend/package-shims.d.ts +47 -0
  1074. package/dist/frontend/package-shims.js +300 -0
  1075. package/dist/frontend/package-shims.js.map +1 -0
  1076. package/dist/frontend/pipeline.js +230 -26
  1077. package/dist/frontend/pipeline.js.map +1 -1
  1078. package/dist/frontend/pipeline.test.js +22 -1
  1079. package/dist/frontend/pipeline.test.js.map +1 -1
  1080. package/dist/frontend/program-analysis.d.ts +6 -1
  1081. package/dist/frontend/program-analysis.js +7 -0
  1082. package/dist/frontend/program-analysis.js.map +1 -1
  1083. package/dist/frontend/program.d.ts +100 -2
  1084. package/dist/frontend/program.js +1627 -262
  1085. package/dist/frontend/program.js.map +1 -1
  1086. package/dist/frontend/program.test.js +76 -6
  1087. package/dist/frontend/program.test.js.map +1 -1
  1088. package/dist/frontend/resolve.js +49 -2
  1089. package/dist/frontend/resolve.js.map +1 -1
  1090. package/dist/frontend/resolve.test.js +49 -0
  1091. package/dist/frontend/resolve.test.js.map +1 -1
  1092. package/dist/frontend/services.d.ts +26 -1
  1093. package/dist/frontend/services.js +59 -3
  1094. package/dist/frontend/services.js.map +1 -1
  1095. package/dist/frontend/services.test.js +2 -1
  1096. package/dist/frontend/services.test.js.map +1 -1
  1097. package/dist/frontend/threads-import.js +1 -1
  1098. package/dist/frontend/threads-import.js.map +1 -1
  1099. package/dist/frontend/tier-analysis.d.ts +71 -0
  1100. package/dist/frontend/tier-analysis.js +522 -0
  1101. package/dist/frontend/tier-analysis.js.map +1 -0
  1102. package/dist/frontend/ts7/api-conformance.d.ts +234 -0
  1103. package/dist/frontend/ts7/api-conformance.js +7 -0
  1104. package/dist/frontend/ts7/api-conformance.js.map +1 -0
  1105. package/dist/frontend/ts7/ast-guards.generated.js +2 -1
  1106. package/dist/frontend/ts7/ast-guards.generated.js.map +1 -1
  1107. package/dist/frontend/ts7/ast-node.d.ts +47 -25
  1108. package/dist/frontend/ts7/ast-node.js +64 -18
  1109. package/dist/frontend/ts7/ast-node.js.map +1 -1
  1110. package/dist/frontend/ts7/ast-node.test.js +36 -12
  1111. package/dist/frontend/ts7/ast-node.test.js.map +1 -1
  1112. package/dist/frontend/ts7/ast-types.d.ts +10 -3
  1113. package/dist/frontend/ts7/ast-types.generated.d.ts +39 -39
  1114. package/dist/frontend/ts7/ast.d.ts +1 -0
  1115. package/dist/frontend/ts7/ast.js +3 -2
  1116. package/dist/frontend/ts7/ast.js.map +1 -1
  1117. package/dist/frontend/ts7/checker-backend.d.ts +23 -0
  1118. package/dist/frontend/ts7/checker-backend.js +88 -0
  1119. package/dist/frontend/ts7/checker-backend.js.map +1 -0
  1120. package/dist/frontend/ts7/checker-backend.test.d.ts +1 -0
  1121. package/dist/frontend/ts7/checker-backend.test.js +63 -0
  1122. package/dist/frontend/ts7/checker-backend.test.js.map +1 -0
  1123. package/dist/frontend/ts7/checker-cache.d.ts +0 -3
  1124. package/dist/frontend/ts7/checker-cache.js +0 -6
  1125. package/dist/frontend/ts7/checker-cache.js.map +1 -1
  1126. package/dist/frontend/ts7/checker.d.ts +18 -11
  1127. package/dist/frontend/ts7/checker.js +42 -55
  1128. package/dist/frontend/ts7/checker.js.map +1 -1
  1129. package/dist/frontend/ts7/checker.test.js +10 -7
  1130. package/dist/frontend/ts7/checker.test.js.map +1 -1
  1131. package/dist/frontend/ts7/diagnostic.d.ts +19 -0
  1132. package/dist/frontend/ts7/diagnostic.js +22 -0
  1133. package/dist/frontend/ts7/diagnostic.js.map +1 -0
  1134. package/dist/frontend/ts7/node-functions.d.ts +8 -0
  1135. package/dist/frontend/ts7/node-functions.js +18 -0
  1136. package/dist/frontend/ts7/node-functions.js.map +1 -0
  1137. package/dist/frontend/ts7/program-host.d.ts +10 -5
  1138. package/dist/frontend/ts7/program-host.js +19 -0
  1139. package/dist/frontend/ts7/program-host.js.map +1 -1
  1140. package/dist/frontend/ts7/rpc-api.d.ts +5 -1
  1141. package/dist/frontend/ts7/rpc-api.js +8 -1
  1142. package/dist/frontend/ts7/rpc-api.js.map +1 -1
  1143. package/dist/frontend/ts7/semantic-checker.d.ts +13 -6
  1144. package/dist/frontend/ts7/semantic-checker.js +26 -8
  1145. package/dist/frontend/ts7/semantic-checker.js.map +1 -1
  1146. package/dist/frontend/ts7/semantic-checker.test.js +12 -9
  1147. package/dist/frontend/ts7/semantic-checker.test.js.map +1 -1
  1148. package/dist/frontend/ts7/semantic-model.d.ts +57 -24
  1149. package/dist/frontend/ts7/semantic-model.js +114 -16
  1150. package/dist/frontend/ts7/semantic-model.js.map +1 -1
  1151. package/dist/frontend/ts7/semantic-model.test.js +4 -4
  1152. package/dist/frontend/ts7/semantic-model.test.js.map +1 -1
  1153. package/dist/frontend/ts7/semantic-types.d.ts +7 -3
  1154. package/dist/frontend/ts7/semantic-types.js +1 -1
  1155. package/dist/frontend/ts7/semantic-types.js.map +1 -1
  1156. package/dist/frontend/ts7/session.d.ts +30 -15
  1157. package/dist/frontend/ts7/session.js +8 -5
  1158. package/dist/frontend/ts7/session.js.map +1 -1
  1159. package/dist/frontend/ts7/session.test.js +9 -5
  1160. package/dist/frontend/ts7/session.test.js.map +1 -1
  1161. package/dist/frontend/ts7/source-parser.d.ts +6 -2
  1162. package/dist/frontend/ts7/source-parser.js +24 -3
  1163. package/dist/frontend/ts7/source-parser.js.map +1 -1
  1164. package/dist/frontend/ts7/source-parser.test.js +38 -17
  1165. package/dist/frontend/ts7/source-parser.test.js.map +1 -1
  1166. package/dist/frontend/type-mapper.d.ts +122 -2
  1167. package/dist/frontend/type-mapper.js +2735 -723
  1168. package/dist/frontend/type-mapper.js.map +1 -1
  1169. package/dist/frontend/type-only-imports.d.ts +28 -0
  1170. package/dist/frontend/type-only-imports.js +122 -0
  1171. package/dist/frontend/type-only-imports.js.map +1 -0
  1172. package/dist/frontend/worker-target.js +8 -8
  1173. package/dist/frontend/worker-target.js.map +1 -1
  1174. package/dist/index.d.ts +4 -1
  1175. package/dist/index.js +87 -8
  1176. package/dist/index.js.map +1 -1
  1177. package/dist/ir/analysis.js +4 -2
  1178. package/dist/ir/analysis.js.map +1 -1
  1179. package/dist/ir/api.d.ts +1 -1
  1180. package/dist/ir/api.js +1 -1
  1181. package/dist/ir/api.js.map +1 -1
  1182. package/dist/ir/array-length-stability.d.ts +31 -0
  1183. package/dist/ir/array-length-stability.js +249 -0
  1184. package/dist/ir/array-length-stability.js.map +1 -0
  1185. package/dist/ir/array-length-stability.test.d.ts +1 -0
  1186. package/dist/ir/array-length-stability.test.js +134 -0
  1187. package/dist/ir/array-length-stability.test.js.map +1 -0
  1188. package/dist/ir/build.d.ts +2 -2
  1189. package/dist/ir/build.js +1 -1
  1190. package/dist/ir/build.js.map +1 -1
  1191. package/dist/ir/builtin-effects.js +116 -0
  1192. package/dist/ir/builtin-effects.js.map +1 -1
  1193. package/dist/ir/builtin-signatures.d.ts +1 -1
  1194. package/dist/ir/builtin-signatures.js +540 -29
  1195. package/dist/ir/builtin-signatures.js.map +1 -1
  1196. package/dist/ir/byte-numbers.js +3 -0
  1197. package/dist/ir/byte-numbers.js.map +1 -1
  1198. package/dist/ir/callback-specialization.d.ts +37 -0
  1199. package/dist/ir/callback-specialization.js +459 -0
  1200. package/dist/ir/callback-specialization.js.map +1 -0
  1201. package/dist/ir/callback-specialization.test.d.ts +1 -0
  1202. package/dist/ir/callback-specialization.test.js +208 -0
  1203. package/dist/ir/callback-specialization.test.js.map +1 -0
  1204. package/dist/ir/capture-values.d.ts +0 -1
  1205. package/dist/ir/capture-values.js +51 -40
  1206. package/dist/ir/capture-values.js.map +1 -1
  1207. package/dist/ir/constant-globals.test.js +1 -1
  1208. package/dist/ir/constant-tables.test.js +1 -1
  1209. package/dist/ir/field-values.test.js +1 -1
  1210. package/dist/ir/final-fields.test.js +1 -1
  1211. package/dist/ir/function-references.test.js +9 -1
  1212. package/dist/ir/function-references.test.js.map +1 -1
  1213. package/dist/ir/init-only-globals.test.js +1 -1
  1214. package/dist/ir/initializer-bindings.test.js +1 -1
  1215. package/dist/ir/int32-slots.d.ts +14 -0
  1216. package/dist/ir/int32-slots.js +97 -14
  1217. package/dist/ir/int32-slots.js.map +1 -1
  1218. package/dist/ir/int32-slots.test.js +1 -1
  1219. package/dist/ir/integer-loop-facts.d.ts +7 -0
  1220. package/dist/ir/integer-loop-facts.js +103 -17
  1221. package/dist/ir/integer-loop-facts.js.map +1 -1
  1222. package/dist/ir/integer-loops.d.ts +1 -1
  1223. package/dist/ir/integer-loops.js +39 -9
  1224. package/dist/ir/integer-loops.js.map +1 -1
  1225. package/dist/ir/integer-loops.test.js +104 -0
  1226. package/dist/ir/integer-loops.test.js.map +1 -1
  1227. package/dist/ir/integer-ranges.d.ts +13 -1
  1228. package/dist/ir/integer-ranges.js +125 -26
  1229. package/dist/ir/integer-ranges.js.map +1 -1
  1230. package/dist/ir/integer-ranges.test.js +273 -2
  1231. package/dist/ir/integer-ranges.test.js.map +1 -1
  1232. package/dist/ir/intrinsic-signatures.js +6 -0
  1233. package/dist/ir/intrinsic-signatures.js.map +1 -1
  1234. package/dist/ir/ir.d.ts +221 -58
  1235. package/dist/ir/ir.js +127 -12
  1236. package/dist/ir/ir.js.map +1 -1
  1237. package/dist/ir/ir.test.js +10 -0
  1238. package/dist/ir/ir.test.js.map +1 -1
  1239. package/dist/ir/js-ic.d.ts +52 -0
  1240. package/dist/ir/js-ic.js +199 -0
  1241. package/dist/ir/js-ic.js.map +1 -0
  1242. package/dist/ir/js-ic.test.d.ts +1 -0
  1243. package/dist/ir/js-ic.test.js +148 -0
  1244. package/dist/ir/js-ic.test.js.map +1 -0
  1245. package/dist/ir/jsval.d.ts +8 -0
  1246. package/dist/ir/jsval.js +399 -0
  1247. package/dist/ir/jsval.js.map +1 -0
  1248. package/dist/ir/jsval.test.d.ts +1 -0
  1249. package/dist/ir/jsval.test.js +239 -0
  1250. package/dist/ir/jsval.test.js.map +1 -0
  1251. package/dist/ir/runtime-features.d.ts +183 -33
  1252. package/dist/ir/runtime-features.js +795 -422
  1253. package/dist/ir/runtime-features.js.map +1 -1
  1254. package/dist/ir/scalar-records.test.js +1 -1
  1255. package/dist/ir/self-captures.d.ts +33 -0
  1256. package/dist/ir/self-captures.js +245 -0
  1257. package/dist/ir/self-captures.js.map +1 -0
  1258. package/dist/ir/self-captures.test.d.ts +1 -0
  1259. package/dist/ir/self-captures.test.js +135 -0
  1260. package/dist/ir/self-captures.test.js.map +1 -0
  1261. package/dist/ir/serialize.d.ts +1 -1
  1262. package/dist/ir/serialize.js +7 -4
  1263. package/dist/ir/serialize.js.map +1 -1
  1264. package/dist/ir/tiers.d.ts +26 -0
  1265. package/dist/ir/tiers.js +101 -0
  1266. package/dist/ir/tiers.js.map +1 -0
  1267. package/dist/ir/tiers.test.d.ts +1 -0
  1268. package/dist/ir/tiers.test.js +140 -0
  1269. package/dist/ir/tiers.test.js.map +1 -0
  1270. package/dist/ir/traverse.js +201 -150
  1271. package/dist/ir/traverse.js.map +1 -1
  1272. package/dist/ir/traverse.test.js +33 -30
  1273. package/dist/ir/traverse.test.js.map +1 -1
  1274. package/dist/ir/unshare.js +65 -3
  1275. package/dist/ir/unshare.js.map +1 -1
  1276. package/dist/ir/unshare.test.js +1 -1
  1277. package/dist/ir/validate.js +196 -76
  1278. package/dist/ir/validate.js.map +1 -1
  1279. package/dist/ir/validate.test.js +41 -11
  1280. package/dist/ir/validate.test.js.map +1 -1
  1281. package/dist/library/fence-eval.test.js +1 -1
  1282. package/dist/library/int-infer.test.js +4 -4
  1283. package/dist/library/ir-policy.js +14 -0
  1284. package/dist/library/ir-policy.js.map +1 -1
  1285. package/dist/library/library-cache.d.ts +1 -0
  1286. package/dist/library/library-cache.js.map +1 -1
  1287. package/dist/library/library-cache.test.js +5 -5
  1288. package/dist/library/library-profile.d.ts +4 -4
  1289. package/dist/library/library-profile.js +35 -7
  1290. package/dist/library/library-profile.js.map +1 -1
  1291. package/dist/library/prepare.js +13 -1
  1292. package/dist/library/prepare.js.map +1 -1
  1293. package/dist/native/cli.js +22 -0
  1294. package/dist/native/cli.js.map +1 -1
  1295. package/dist/native/compiler.js +35 -6
  1296. package/dist/native/compiler.js.map +1 -1
  1297. package/dist/native/compiler.test.js +2 -2
  1298. package/dist/native/executable-cache.js +3 -0
  1299. package/dist/native/executable-cache.js.map +1 -1
  1300. package/dist/native/prepare.js +10 -0
  1301. package/dist/native/prepare.js.map +1 -1
  1302. package/dist/native/sanitizer.test.js +19 -0
  1303. package/dist/native/sanitizer.test.js.map +1 -1
  1304. package/dist/native/toolchain.d.ts +2 -0
  1305. package/dist/native/toolchain.js +10 -1
  1306. package/dist/native/toolchain.js.map +1 -1
  1307. package/dist/native/toolchain.test.js +39 -1
  1308. package/dist/native/toolchain.test.js.map +1 -1
  1309. package/dist/startup-cache.d.ts +1 -0
  1310. package/dist/startup-cache.js +1 -0
  1311. package/dist/startup-cache.js.map +1 -1
  1312. package/dist/wasm/base64.d.ts +5 -0
  1313. package/dist/wasm/base64.js +62 -0
  1314. package/dist/wasm/base64.js.map +1 -0
  1315. package/dist/wasm/binary.d.ts +36 -0
  1316. package/dist/wasm/binary.js +1976 -0
  1317. package/dist/wasm/binary.js.map +1 -0
  1318. package/dist/wasm/binary.test.d.ts +1 -0
  1319. package/dist/wasm/binary.test.js +190 -0
  1320. package/dist/wasm/binary.test.js.map +1 -0
  1321. package/dist/wasm/discover.d.ts +38 -0
  1322. package/dist/wasm/discover.js +377 -0
  1323. package/dist/wasm/discover.js.map +1 -0
  1324. package/dist/wasm/discover.test.d.ts +1 -0
  1325. package/dist/wasm/discover.test.js +24 -0
  1326. package/dist/wasm/discover.test.js.map +1 -0
  1327. package/dist/wasm/module.d.ts +151 -0
  1328. package/dist/wasm/module.js +575 -0
  1329. package/dist/wasm/module.js.map +1 -0
  1330. package/dist/wasm/translate.d.ts +48 -0
  1331. package/dist/wasm/translate.js +2129 -0
  1332. package/dist/wasm/translate.js.map +1 -0
  1333. package/dist/wasm/translate.test.d.ts +1 -0
  1334. package/dist/wasm/translate.test.js +207 -0
  1335. package/dist/wasm/translate.test.js.map +1 -0
  1336. package/package.json +22 -20
  1337. package/shims/fs-extra/core/api.ts +1192 -0
  1338. package/shims/fs-extra/index.ts +9 -0
  1339. package/shims/undici/core/agent.ts +163 -0
  1340. package/shims/undici/core/api.ts +93 -0
  1341. package/shims/undici/core/client.ts +1304 -0
  1342. package/shims/undici/core/connector.ts +157 -0
  1343. package/shims/undici/core/diagnostics-types.ts +68 -0
  1344. package/shims/undici/core/diagnostics.ts +16 -0
  1345. package/shims/undici/core/dispatcher.ts +574 -0
  1346. package/shims/undici/core/errors-v5.ts +22 -0
  1347. package/shims/undici/core/errors-v7.ts +25 -0
  1348. package/shims/undici/core/errors.ts +255 -0
  1349. package/shims/undici/core/fetch.ts +635 -0
  1350. package/shims/undici/core/pool.ts +280 -0
  1351. package/shims/undici/core/readable.ts +268 -0
  1352. package/shims/undici/core/request.ts +313 -0
  1353. package/shims/undici/core/timers.ts +80 -0
  1354. package/shims/undici/core/types.ts +167 -0
  1355. package/shims/undici/core/util.ts +67 -0
  1356. package/shims/undici/v5.ts +119 -0
  1357. package/shims/undici/v7.ts +119 -0
  1358. package/surface-manifest.json +304 -22
@@ -3,6 +3,7 @@ import { envSnapshotHelper, lowerProcessLoadEnvFile } from "./environment.js";
3
3
  import { dynUndefinedExpr, boolLit, numLit, strLit, varRef } from "../../../ir/build.js";
4
4
  import { timerStyleCallback } from "../lower-timers.js";
5
5
  import * as ts from "../../ts7/adapter.js";
6
+ import { requestGeneralStreamSurface } from "../general-streams.js";
6
7
  import { own } from "../lowerer.js";
7
8
  import { isJsSourceFile, locOf } from "../../program.js";
8
9
  import { isSafeToDiscard } from "../expressions/evaluation-safety.js";
@@ -10,8 +11,150 @@ import { defaultAfterUndefined, lowerStaticallyUndefinedArgument } from "../opti
10
11
  import { voidizedCallback } from "../lower-server.js";
11
12
  import { BOOL, BYTES_U8, DYN, F64, PROCSTREAM_T, STRING, UNDEFINED_T, VOID, arrayOf, canBoxFuncIntoDyn, funcOf, } from "../../../ir/ir.js";
12
13
  import { lowerBuiltinLoaderValue } from "../lower-builtin-values.js";
14
+ import { builtinFunctionValue } from "../lower-exprs.js";
15
+ import { canonicalBuiltinModule } from "../../builtin-modules.js";
13
16
  import { lowerProcessIpcSend, ipcMessageListener, ipcDisconnectListener } from "./ipc.js";
14
17
  import { lowerDiagnosticsSubscriber, lowerTracingArguments } from "./async-context.js";
18
+ /** Whether the process has an IPC channel, Node's test for defining
19
+ * process.send and process.disconnect: a channel this fork child opened
20
+ * (programs with fork targets only), or a non-empty NODE_CHANNEL_FD from a
21
+ * Node.js parent, the variable Node itself tests at startup. Built from the
22
+ * existing environment read, so the presence test links no runtime code. */
23
+ export function processHasIpc(lowerer, loc) {
24
+ const envT = lowerer.envValueType();
25
+ const unionId = envT.unionId;
26
+ const stringTag = lowerer.armTag(unionId, STRING);
27
+ const value = lowerer.declareHiddenLocal("%channelFd", envT);
28
+ const fromNode = {
29
+ kind: "seqExpr",
30
+ stmts: [
31
+ {
32
+ kind: "varDecl",
33
+ localId: value.id,
34
+ init: {
35
+ kind: "libCall",
36
+ fn: "process.envGet",
37
+ args: [strLit("NODE_CHANNEL_FD", loc)],
38
+ type: envT,
39
+ loc,
40
+ },
41
+ loc,
42
+ },
43
+ ],
44
+ result: {
45
+ kind: "logical",
46
+ op: "&&",
47
+ left: {
48
+ kind: "unionIsTag",
49
+ unionId,
50
+ tag: stringTag,
51
+ negated: false,
52
+ value: varRef(value.id, envT, loc),
53
+ type: BOOL,
54
+ loc,
55
+ },
56
+ right: {
57
+ kind: "toBool",
58
+ operand: {
59
+ kind: "unionNarrow",
60
+ unionId,
61
+ tag: stringTag,
62
+ value: varRef(value.id, envT, loc),
63
+ type: STRING,
64
+ loc,
65
+ },
66
+ type: BOOL,
67
+ loc,
68
+ },
69
+ type: BOOL,
70
+ loc,
71
+ },
72
+ type: BOOL,
73
+ loc,
74
+ };
75
+ if (lowerer.forkTargets.length === 0)
76
+ return fromNode;
77
+ return {
78
+ kind: "logical",
79
+ op: "||",
80
+ left: { kind: "libCall", fn: "process.ipcOpen", args: [], type: BOOL, loc },
81
+ right: fromNode,
82
+ type: BOOL,
83
+ loc,
84
+ };
85
+ }
86
+ /** True when the value of `node` is consumed only by ToBoolean: a
87
+ * condition, the operand of `!`, `Boolean(node)`, or an operand of `&&` /
88
+ * `||` whose own value is consumed that way (or discarded, for the left
89
+ * operand). */
90
+ export function isTruthinessOnlyRead(lowerer, node) {
91
+ let child = node;
92
+ let parent = node.parent;
93
+ while (parent !== undefined && ts.isParenthesizedExpression(parent)) {
94
+ child = parent;
95
+ parent = parent.parent;
96
+ }
97
+ if (parent === undefined)
98
+ return false;
99
+ if (ts.isIfStatement(parent) || ts.isWhileStatement(parent) || ts.isDoStatement(parent))
100
+ return parent.expression === child;
101
+ if (ts.isForStatement(parent))
102
+ return parent.condition === child;
103
+ if (ts.isConditionalExpression(parent))
104
+ return parent.condition === child;
105
+ if (ts.isPrefixUnaryExpression(parent))
106
+ return parent.operator === ts.SyntaxKind.ExclamationToken;
107
+ if (ts.isCallExpression(parent)) {
108
+ return (!parent.questionDotToken &&
109
+ parent.arguments.nodes.length === 1 &&
110
+ parent.arguments.nodes[0] === child &&
111
+ lowerer.isStdlibGlobal(parent.expression, "Boolean"));
112
+ }
113
+ if (ts.isBinaryExpression(parent)) {
114
+ const op = parent.operatorToken.kind;
115
+ if (op !== ts.SyntaxKind.AmpersandAmpersandToken && op !== ts.SyntaxKind.BarBarToken)
116
+ return false;
117
+ if (isTruthinessOnlyRead(lowerer, parent))
118
+ return true;
119
+ let outer = parent.parent;
120
+ while (outer !== undefined && ts.isParenthesizedExpression(outer))
121
+ outer = outer.parent;
122
+ return parent.left === child && outer !== undefined && ts.isExpressionStatement(outer);
123
+ }
124
+ return false;
125
+ }
126
+ /** Whether a program source reads process.exitCode. Such a program
127
+ * records its exit-code assignments (process.setExitCodeTracked), so a
128
+ * read can tell an unset code from 0; other programs keep the untracked
129
+ * write. Computed once per lowering pass. */
130
+ export function programReadsExitCode(lowerer) {
131
+ if (lowerer.readsExitCode !== null)
132
+ return lowerer.readsExitCode;
133
+ let found = false;
134
+ const walk = (node) => {
135
+ if (found)
136
+ return;
137
+ if (ts.isPropertyAccessExpression(node) &&
138
+ node.name.text === "exitCode" &&
139
+ !(ts.isBinaryExpression(node.parent) &&
140
+ node.parent.left === node &&
141
+ node.parent.operatorToken.kind === ts.SyntaxKind.EqualsToken) &&
142
+ lowerer.stdlibGlobalMember(node, "process") === "exitCode") {
143
+ found = true;
144
+ return;
145
+ }
146
+ ts.forEachChild(node, walk);
147
+ };
148
+ for (const sf of lowerer.program.getImplementationSourceFiles()) {
149
+ if (sf.isDeclarationFile)
150
+ continue;
151
+ walk(sf);
152
+ if (found)
153
+ break;
154
+ }
155
+ lowerer.readsExitCode = found;
156
+ return found;
157
+ }
15
158
  /** The pinned Node release the runtime reports as process.versions.node
16
159
  * (packages/runtime/src/scr_lib.c SCR_NODE_COMPAT_VERSION, kept equal to
17
160
  * internal/compatibility/node-v24.json by test/node-pin.test.ts). */
@@ -31,40 +174,42 @@ export function lowerProcStreamMethodCall(lowerer, call, access) {
31
174
  return null;
32
175
  const name = access.name.text;
33
176
  const loc = locOf(call);
34
- if (isJsSourceFile(call.getSourceFile())) {
177
+ if (isJsSourceFile(ts.getSourceFileOfNode(call))) {
35
178
  const receiver = lowerer.lowerExpr(access.expression);
36
179
  if (receiver.type.kind === "dyn") {
37
180
  return {
38
181
  kind: "dynInvoke",
39
182
  recv: receiver,
40
183
  method: name,
41
- calleeName: call.expression.getText(),
42
- args: call.arguments.map((arg) => lowerer.lowerExprExpecting(arg, DYN)),
184
+ calleeName: ts.getTextOfNode(call.expression),
185
+ args: call.arguments.nodes.map((arg) => lowerer.lowerExprExpecting(arg, DYN)),
43
186
  type: DYN,
44
187
  loc,
45
188
  };
46
189
  }
47
190
  }
48
- if (name === "getWindowSize" && call.arguments.length === 0) {
191
+ if (name === "getWindowSize" && call.arguments.nodes.length === 0) {
49
192
  const receiver = lowerer.coerceToExpected(lowerer.lowerExpr(access.expression), DYN);
50
193
  return lowerer.coerceInto(call, {
51
194
  kind: "dynInvoke",
52
195
  recv: receiver,
53
196
  method: name,
54
- calleeName: call.expression.getText(),
197
+ calleeName: ts.getTextOfNode(call.expression),
55
198
  args: [],
56
199
  type: DYN,
57
200
  loc,
58
201
  }, lowerer.irTypeOf(call));
59
202
  }
60
- if (name === "write" && call.arguments.length === 1) {
203
+ if (name === "write" && call.arguments.nodes.length === 1) {
61
204
  const receiver = lowerer.lowerExpr(access.expression);
62
- const data = lowerer.lowerExpr(call.arguments[0]);
205
+ const data = lowerer.lowerExpr(call.arguments.nodes[0]);
63
206
  if (data.type.kind !== "string") {
64
- lowerer.noLowering(`write of '${lowerer.fmt(data.type)}' data on a stream value`, call.arguments[0], "one string is the supported form here — narrow unions first");
207
+ requestGeneralStreamSurface(lowerer, access.expression);
208
+ lowerer.noLowering(`write of '${lowerer.fmt(data.type)}' data on a stream value`, call.arguments.nodes[0], "one string is the supported form here — narrow unions first");
65
209
  }
66
210
  return { kind: "libCall", fn: "procStream.write", args: [receiver, data], type: BOOL, loc };
67
211
  }
212
+ requestGeneralStreamSurface(lowerer, access.expression);
68
213
  lowerer.noLowering(`WritableStream.${name}`, call, "write(data) with one string and getWindowSize() are the supported stream-value methods", lowerer.checker.getSymbolAtLocation(access.name));
69
214
  }
70
215
  /** Standard streams expose optional terminal properties: pipes have no
@@ -84,6 +229,50 @@ export function isOptionalProcessStreamProperty(lowerer, expr) {
84
229
  }
85
230
  return lowerer.mapTypeOf(lowerer.typeOf(expr.expression))?.kind === "procStream";
86
231
  }
232
+ /** The process.versions entries @types/node declares as plain strings
233
+ * that the runtime's versions object (node and openssl only) lacks. */
234
+ const ABSENT_DECLARED_VERSIONS = new Set([
235
+ "http_parser",
236
+ "v8",
237
+ "ares",
238
+ "uv",
239
+ "zlib",
240
+ "modules",
241
+ ]);
242
+ /** A process.versions member read whose declaration promises a string the
243
+ * runtime does not have. @types/node declares the entries above as plain
244
+ * strings, so a checked string read would throw on the absent entry and
245
+ * equality with undefined would fold to false. These reads keep the
246
+ * undefined arm, like the optional stream properties. The shipped fallback
247
+ * types declare other entries `string | undefined` and never reach this.
248
+ * An element read with a computed key qualifies when the checker types it
249
+ * as a plain string. */
250
+ export function isOptionalProcessVersionsRead(lowerer, node) {
251
+ let key;
252
+ if (ts.isPropertyAccessExpression(node))
253
+ key = node.name.text;
254
+ else if (ts.isElementAccessExpression(node))
255
+ key = ts.isStringLiteralLike(node.argumentExpression) ? node.argumentExpression.text : null;
256
+ else
257
+ return false;
258
+ if (key !== null && !ABSENT_DECLARED_VERSIONS.has(key))
259
+ return false;
260
+ if (!programMentionsVersions(lowerer))
261
+ return false;
262
+ const symbol = lowerer.typeOf(node.expression).getSymbol();
263
+ return (symbol !== undefined &&
264
+ ts.symbolName(symbol) === "ProcessVersions" &&
265
+ symbol.declarations.some((d) => ts.isInterfaceDeclaration(d) && lowerer.isStdlibFile(d.getSourceFile())) &&
266
+ lowerer.mapTypeOf(lowerer.typeOf(node))?.kind === "string");
267
+ }
268
+ /** Whether any implementation source spells `versions`. Programs that
269
+ * never do skip the per-read checker queries above entirely. */
270
+ function programMentionsVersions(lowerer) {
271
+ lowerer.mentionsProcessVersions ??= lowerer.program
272
+ .getImplementationSourceFiles()
273
+ .some((sf) => !sf.isDeclarationFile && sf.text.includes("versions"));
274
+ return lowerer.mentionsProcessVersions;
275
+ }
87
276
  export function lowerProcessStreamProperty(lowerer, expr) {
88
277
  if (expr.questionDotToken)
89
278
  return null;
@@ -91,7 +280,7 @@ export function lowerProcessStreamProperty(lowerer, expr) {
91
280
  const direct = ts.isPropertyAccessExpression(expr.expression)
92
281
  ? lowerer.stdlibGlobalMember(expr.expression, "process")
93
282
  : null;
94
- if (isJsSourceFile(expr.getSourceFile()) &&
283
+ if (isJsSourceFile(ts.getSourceFileOfNode(expr)) &&
95
284
  (direct === "stdin" ||
96
285
  direct === "stdout" ||
97
286
  direct === "stderr" ||
@@ -106,6 +295,18 @@ export function lowerProcessStreamProperty(lowerer, expr) {
106
295
  loc: locOf(expr),
107
296
  };
108
297
  }
298
+ // `if (process.stdin.setRawMode)`: Node's stdin has the method only
299
+ // when it is a TTY. The runtime's stream object answers the same
300
+ // presence (the method or undefined); calls keep their direct lowering.
301
+ if (direct === "stdin" && member === "setRawMode") {
302
+ return {
303
+ kind: "dynKeyGet",
304
+ value: lowerer.lowerExpr(expr.expression),
305
+ key: strLit(member, locOf(expr.name)),
306
+ type: DYN,
307
+ loc: locOf(expr),
308
+ };
309
+ }
109
310
  if (member !== "isTTY" && member !== "columns" && member !== "rows")
110
311
  return null;
111
312
  let recv = expr.expression;
@@ -183,6 +384,36 @@ export function lowerProcessStreamProperty(lowerer, expr) {
183
384
  * read in source order). Method members referenced without a call are
184
385
  * rejected specifically. Null for non-process receivers (the chain keeps
185
386
  * trying other property lowerings). */
387
+ /** The value of a DATA member of the process global taken off by
388
+ * destructuring (`const { env, argv } = process` in JavaScript, the
389
+ * supports-color opening): the same values the spelled `process.env` /
390
+ * `process.argv` reads produce, typed by the binding. Null for members
391
+ * this does not cover (methods keep the destructuring fence). */
392
+ export function processDataMemberValue(lowerer, member, binding, loc) {
393
+ switch (member) {
394
+ case "env": {
395
+ const mapped = lowerer.mapTypeOf(lowerer.typeOf(binding));
396
+ if (mapped?.kind !== "record")
397
+ return null;
398
+ const helper = envSnapshotHelper(lowerer, mapped.shapeId, loc);
399
+ return helper === null ? null : { kind: "call", callee: helper, args: [], type: mapped, loc };
400
+ }
401
+ case "argv":
402
+ return { kind: "libCall", fn: "process.argv", args: [], type: arrayOf(STRING), loc };
403
+ case "platform":
404
+ return { kind: "libCall", fn: "process.platform", args: [], type: STRING, loc };
405
+ case "arch":
406
+ return { kind: "libCall", fn: "process.arch", args: [], type: STRING, loc };
407
+ case "pid":
408
+ return { kind: "libCall", fn: "process.pid", args: [], type: F64, loc };
409
+ case "execPath":
410
+ return { kind: "libCall", fn: "process.execPath", args: [], type: STRING, loc };
411
+ case "versions":
412
+ return { kind: "libCall", fn: "process.versions", args: [], type: DYN, loc };
413
+ default:
414
+ return null;
415
+ }
416
+ }
186
417
  export function lowerProcessProperty(lowerer, expr) {
187
418
  if (!expr.questionDotToken &&
188
419
  expr.name.text === "bigint" &&
@@ -261,9 +492,46 @@ export function lowerProcessProperty(lowerer, expr) {
261
492
  if (member === null)
262
493
  return null;
263
494
  const loc = locOf(expr);
495
+ // `if (process.send)`: Node defines process.send and process.disconnect
496
+ // only when the process has an IPC channel. A read whose value only
497
+ // feeds a truthiness test answers that presence; other value uses keep
498
+ // the member fence.
499
+ if ((member === "send" || member === "disconnect") &&
500
+ !expr.questionDotToken &&
501
+ isTruthinessOnlyRead(lowerer, expr)) {
502
+ return processHasIpc(lowerer, loc);
503
+ }
264
504
  if (member === "versions") {
265
505
  return { kind: "libCall", fn: "process.versions", args: [], type: DYN, loc };
266
506
  }
507
+ // process.exitCode: undefined until something assigns it, then the
508
+ // assigned code. A read the checker narrowed to number follows an
509
+ // assignment, so the code is set.
510
+ if (member === "exitCode" && !expr.questionDotToken) {
511
+ const current = {
512
+ kind: "libCall",
513
+ fn: "process.currentExitCode",
514
+ args: [],
515
+ type: F64,
516
+ loc,
517
+ };
518
+ if (lowerer.mapTypeOf(lowerer.typeOf(expr))?.kind === "f64")
519
+ return current;
520
+ const type = { kind: "union", unionId: lowerer.unions.intern([F64, UNDEFINED_T]) };
521
+ return {
522
+ kind: "ternary",
523
+ cond: { kind: "libCall", fn: "process.hasExitCode", args: [], type: BOOL, loc },
524
+ then: lowerer.coerceToExpected(current, type),
525
+ else_: lowerer.coerceToExpected({ kind: "unitLit", unit: "undefined", type: UNDEFINED_T, loc }, type),
526
+ type,
527
+ loc,
528
+ };
529
+ }
530
+ // process.features as a value (`"sea" in process.features`): an object
531
+ // holding none of the flags, consistent with the member reads above.
532
+ if (member === "features") {
533
+ return { kind: "dynObjLit", type: DYN, loc };
534
+ }
267
535
  // process.noDeprecation / process.throwDeprecation: the values the
268
536
  // program assigned (undefined before that — no Node flags reach a
269
537
  // compiled binary).
@@ -285,6 +553,11 @@ export function lowerProcessProperty(lowerer, expr) {
285
553
  if (member === "hrtime") {
286
554
  return { kind: "libCall", fn: "process.hrtimeValue", args: [], type: DYN, loc };
287
555
  }
556
+ // A stored process.nextTick in JavaScript (`cond ? setImmediate :
557
+ // process.nextTick`): the interned builtin function value.
558
+ if (member === "nextTick" && isJsSourceFile(ts.getSourceFileOfNode(expr))) {
559
+ return builtinFunctionValue("process.nextTick", loc);
560
+ }
288
561
  if (member === "getBuiltinModule") {
289
562
  // Keep the native loader's argument validation when the function is
290
563
  // stored. The declaration's string signature must not insert a checked
@@ -297,10 +570,10 @@ export function lowerProcessProperty(lowerer, expr) {
297
570
  if (member === "connected") {
298
571
  return { kind: "libCall", fn: "process.connected", args: [], type: BOOL, loc };
299
572
  }
300
- // process.execArgv: the extra CLI arguments Node itself consumed — a
301
- // compiled binary consumed none, so the honest answer is a fresh [].
573
+ // process.execArgv: the Node runtime flags kept out of process.argv —
574
+ // a leading --test-update-snapshots in node:test programs, else [].
302
575
  if (member === "execArgv") {
303
- return { kind: "arrayLit", elems: [], type: arrayOf(STRING), loc };
576
+ return { kind: "libCall", fn: "process.execArgv", args: [], type: arrayOf(STRING), loc };
304
577
  }
305
578
  // process._exiting — the runtime's exit-sequence flag (true while
306
579
  // 'exit' listeners run), Node's own undocumented member.
@@ -360,7 +633,7 @@ export function lowerProcessProperty(lowerer, expr) {
360
633
  // (`process.stdout.isTTY`, `.write(...)`) never reach here — their
361
634
  // OUTER expressions dispatch first.
362
635
  if (member === "stdin" ||
363
- ((member === "stdout" || member === "stderr") && isJsSourceFile(expr.getSourceFile()))) {
636
+ ((member === "stdout" || member === "stderr") && isJsSourceFile(ts.getSourceFileOfNode(expr)))) {
364
637
  return {
365
638
  kind: "libCall",
366
639
  fn: "process.stdio",
@@ -385,17 +658,18 @@ export function lowerProcessProperty(lowerer, expr) {
385
658
  export function lowerProcessMethodCall(lowerer, call, access) {
386
659
  if (call.questionDotToken)
387
660
  return null;
388
- if (isJsSourceFile(call.getSourceFile()) && ts.isPropertyAccessExpression(access.expression)) {
661
+ if (isJsSourceFile(ts.getSourceFileOfNode(call)) &&
662
+ ts.isPropertyAccessExpression(access.expression)) {
389
663
  const stream = lowerer.stdlibGlobalMember(access.expression, "process");
390
664
  if (stream === "stdin" || stream === "stdout" || stream === "stderr") {
391
- if (call.arguments.some(ts.isSpreadElement))
665
+ if (call.arguments.nodes.some(ts.isSpreadElement))
392
666
  lowerer.noLowering("process stream spread arguments", call);
393
667
  return {
394
668
  kind: "dynInvoke",
395
669
  recv: lowerer.lowerExpr(access.expression),
396
670
  method: access.name.text,
397
- calleeName: access.getText(),
398
- args: call.arguments.map((arg) => lowerer.lowerExprExpecting(arg, DYN)),
671
+ calleeName: ts.getTextOfNode(access),
672
+ args: call.arguments.nodes.map((arg) => lowerer.lowerExprExpecting(arg, DYN)),
399
673
  type: DYN,
400
674
  loc: locOf(call),
401
675
  };
@@ -405,31 +679,31 @@ export function lowerProcessMethodCall(lowerer, call, access) {
405
679
  if (directProcessMember === "loadEnvFile")
406
680
  return lowerProcessLoadEnvFile(lowerer, call);
407
681
  if (directProcessMember === "hrtime") {
408
- if (call.arguments.some(ts.isSpreadElement))
682
+ if (call.arguments.nodes.some(ts.isSpreadElement))
409
683
  lowerer.noLowering("process.hrtime with spread arguments", call);
410
684
  const loc = locOf(call);
411
685
  return {
412
686
  kind: "dynCall",
413
687
  callee: { kind: "libCall", fn: "process.hrtimeValue", args: [], type: DYN, loc },
414
- args: call.arguments.map((arg) => lowerer.lowerExprExpecting(arg, DYN)),
688
+ args: call.arguments.nodes.map((arg) => lowerer.lowerExprExpecting(arg, DYN)),
415
689
  calleeName: "process.hrtime",
416
690
  type: DYN,
417
691
  loc,
418
692
  };
419
693
  }
420
694
  if (directProcessMember === "getBuiltinModule") {
421
- if (call.arguments.some(ts.isSpreadElement))
695
+ if (call.arguments.nodes.some(ts.isSpreadElement))
422
696
  lowerer.noLowering("process.getBuiltinModule with spread arguments", call);
423
697
  const loc = locOf(call);
424
- const id = call.arguments[0]
425
- ? lowerer.lowerExprExpecting(call.arguments[0], DYN)
698
+ const id = call.arguments.nodes[0]
699
+ ? lowerer.lowerExprExpecting(call.arguments.nodes[0], DYN)
426
700
  : dynUndefinedExpr(loc);
427
701
  const binding = lowerer.declareHiddenLocal("%builtinId", DYN);
428
702
  return {
429
703
  kind: "seqExpr",
430
704
  stmts: [
431
705
  { kind: "varDecl", localId: binding.id, init: id, loc },
432
- ...call.arguments.slice(1).map((arg) => ({
706
+ ...call.arguments.nodes.slice(1).map((arg) => ({
433
707
  kind: "exprStmt",
434
708
  expr: lowerer.lowerExpr(arg),
435
709
  loc: locOf(arg),
@@ -449,8 +723,8 @@ export function lowerProcessMethodCall(lowerer, call, access) {
449
723
  if (directProcessMember === "send")
450
724
  return lowerProcessIpcSend(lowerer, call);
451
725
  if (directProcessMember === "disconnect") {
452
- if (call.arguments.length !== 0) {
453
- lowerer.noLowering(`process.disconnect with ${call.arguments.length} arguments`, call);
726
+ if (call.arguments.nodes.length !== 0) {
727
+ lowerer.noLowering(`process.disconnect with ${call.arguments.nodes.length} arguments`, call);
454
728
  }
455
729
  if (!ts.isExpressionStatement(call.parent)) {
456
730
  lowerer.unsupported("SC1090", call, "using the result of process.disconnect() (call it as its own statement)");
@@ -470,7 +744,7 @@ export function lowerProcessMethodCall(lowerer, call, access) {
470
744
  if (access.name.text === "destroy" &&
471
745
  ts.isPropertyAccessExpression(access.expression) &&
472
746
  lowerer.stdlibGlobalMember(access.expression, "process") === "stdin") {
473
- if (call.arguments.length !== 0) {
747
+ if (call.arguments.nodes.length !== 0) {
474
748
  lowerer.noLowering("stdin.destroy with arguments", call);
475
749
  }
476
750
  return { kind: "libCall", fn: "process.stdinDestroy", args: [], type: VOID, loc: locOf(call) };
@@ -490,15 +764,77 @@ export function lowerProcessMethodCall(lowerer, call, access) {
490
764
  if (!ts.isExpressionStatement(call.parent) && !ts.isArrowFunction(call.parent)) {
491
765
  lowerer.unsupported("SC1090", call, "using the result of stdin.setRawMode(...) (the ReadStream chain — call it as its own statement)");
492
766
  }
493
- if (call.arguments.length !== 1) {
494
- lowerer.noLowering(`stdin.setRawMode with ${call.arguments.length} arguments`, call, "the supported form is setRawMode(mode) with one boolean");
767
+ if (call.arguments.nodes.length !== 1) {
768
+ lowerer.noLowering(`stdin.setRawMode with ${call.arguments.nodes.length} arguments`, call, "the supported form is setRawMode(mode) with one boolean");
495
769
  }
496
- const mode = lowerer.lowerExpr(call.arguments[0]);
770
+ const mode = lowerer.lowerExpr(call.arguments.nodes[0]);
497
771
  if (mode.type.kind !== "bool") {
498
- lowerer.noLowering(`stdin.setRawMode of '${lowerer.fmt(mode.type)}' modes`, call.arguments[0], "the mode is a boolean here — narrow unions first");
772
+ lowerer.noLowering(`stdin.setRawMode of '${lowerer.fmt(mode.type)}' modes`, call.arguments.nodes[0], "the mode is a boolean here — narrow unions first");
499
773
  }
500
774
  return { kind: "libCall", fn: "process.stdinSetRawMode", args: [mode], type: VOID, loc };
501
775
  }
776
+ // process.stdout.on("resize", cb) (and once/off/removeListener/
777
+ // addListener, stderr too): the terminal resize event, registered on the
778
+ // runtime's process stream object (a SIGWINCH listener that emits when a
779
+ // TTY's size changed; it never keeps the loop alive). Statement position:
780
+ // Node returns the stream.
781
+ if (["on", "once", "off", "removeListener", "addListener"].includes(access.name.text) &&
782
+ ts.isPropertyAccessExpression(access.expression) &&
783
+ call.arguments.nodes.length === 2 &&
784
+ !call.arguments.nodes.some(ts.isSpreadElement) &&
785
+ ts.isExpressionStatement(call.parent)) {
786
+ const stream = lowerer.stdlibGlobalMember(access.expression, "process");
787
+ const evT = lowerer.typeOf(call.arguments.nodes[0]);
788
+ if ((stream === "stdout" || stream === "stderr") &&
789
+ evT.isStringLiteralType() &&
790
+ evT.value === "resize") {
791
+ const loc = locOf(call);
792
+ const receiverLocal = lowerer.declareHiddenLocal("%stdioReceiver", DYN);
793
+ const receiver = varRef(receiverLocal.id, DYN, loc);
794
+ const method = access.name.text === "off"
795
+ ? "removeListener"
796
+ : access.name.text === "addListener"
797
+ ? "on"
798
+ : access.name.text;
799
+ return {
800
+ kind: "seqExpr",
801
+ stmts: [
802
+ {
803
+ kind: "varDecl",
804
+ localId: receiverLocal.id,
805
+ init: {
806
+ kind: "libCall",
807
+ fn: "process.stdio",
808
+ args: [numLit(stream === "stdout" ? 1 : 2, loc)],
809
+ type: DYN,
810
+ loc,
811
+ },
812
+ loc,
813
+ },
814
+ ],
815
+ result: {
816
+ kind: "dynCall",
817
+ callee: {
818
+ kind: "dynKeyGet",
819
+ value: receiver,
820
+ key: strLit(method, locOf(access.name)),
821
+ type: DYN,
822
+ loc,
823
+ },
824
+ receiver,
825
+ calleeName: ts.getTextOfNode(access),
826
+ args: [
827
+ lowerer.lowerExprExpecting(call.arguments.nodes[0], DYN),
828
+ lowerer.lowerExprExpecting(call.arguments.nodes[1], DYN),
829
+ ],
830
+ type: DYN,
831
+ loc,
832
+ },
833
+ type: DYN,
834
+ loc,
835
+ };
836
+ }
837
+ }
502
838
  // process.stdin.on/once("data" | "end" | "error", cb): the piped-stdin
503
839
  // event slice. A 'data' listener keeps the event loop alive until EOF
504
840
  // (Node's flowing stdin); 'end'/'error' listeners alone do not. `once`
@@ -509,43 +845,48 @@ export function lowerProcessMethodCall(lowerer, call, access) {
509
845
  lowerer.stdlibGlobalMember(access.expression, "process") === "stdin") {
510
846
  const loc = locOf(call);
511
847
  const once = access.name.text === "once";
512
- if (call.arguments.length !== 2) {
513
- lowerer.noLowering(`stdin.${access.name.text} with ${call.arguments.length} arguments`, call);
848
+ if (call.arguments.nodes.length !== 2) {
849
+ lowerer.noLowering(`stdin.${access.name.text} with ${call.arguments.nodes.length} arguments`, call);
514
850
  }
515
- const evT = lowerer.typeOf(call.arguments[0]);
851
+ const evT = lowerer.typeOf(call.arguments.nodes[0]);
516
852
  const event = evT.isStringLiteralType() ? evT.value : null;
517
853
  if (event !== "data" && event !== "end" && event !== "error" && event !== "keypress") {
518
- lowerer.noLowering(`stdin.${access.name.text}(${event === null ? "non-literal event" : `"${event}"`}, ...)`, call.arguments[0], '"data", "end", "error", and "keypress" are the supported stdin events (as literals)');
854
+ lowerer.noLowering(`stdin.${access.name.text}(${event === null ? "non-literal event" : `"${event}"`}, ...)`, call.arguments.nodes[0], '"data", "end", "error", and "keypress" are the supported stdin events (as literals)');
519
855
  }
520
856
  if (!ts.isExpressionStatement(call.parent)) {
521
857
  lowerer.unsupported("SC1090", call, "chaining stdin listener registration (the result is void here — register each listener as its own statement)");
522
858
  }
523
859
  if (event === "keypress") {
524
860
  // readline.emitKeypressEvents' (str, key) events
525
- const listener = stdinKeypressListener(lowerer, call.arguments[1]);
861
+ const listener = stdinKeypressListener(lowerer, call.arguments.nodes[1]);
526
862
  const onceKp = { kind: "boolLit", value: once, type: BOOL, loc };
527
863
  return { kind: "libCall", fn: "stdin.onKeypress", args: [listener, onceKp], type: VOID, loc };
528
864
  }
529
- const cb = lowerer.lowerExpr(call.arguments[1]);
865
+ const cb = lowerer.lowerExpr(call.arguments.nodes[1]);
530
866
  if (cb.type.kind !== "func" || cb.type.ret.kind !== "void" || cb.type.params.length > 1) {
531
- lowerer.unsupported("SC1090", call.arguments[1], "stdin listeners with more than one parameter or a return value");
867
+ lowerer.unsupported("SC1090", call.arguments.nodes[1], "stdin listeners with more than one parameter or a return value");
532
868
  }
533
869
  const param = cb.type.params[0];
534
870
  const onceArg = { kind: "boolLit", value: once, type: BOOL, loc };
535
871
  if (event === "data") {
536
- if (param !== undefined && !(param.kind === "bytes" && param.elem === "u8")) {
537
- lowerer.unsupported("SC1090", call.arguments[1], `data listeners whose parameter is not 'Uint8Array' (got '${lowerer.fmt(param)}')`);
872
+ // A string parameter receives the chunks process.stdin.setEncoding
873
+ // decodes (pi-tui's terminal input); the runtime refuses a delivery
874
+ // while no encoding is set, where Node would pass a Buffer.
875
+ if (param !== undefined &&
876
+ !(param.kind === "bytes" && param.elem === "u8") &&
877
+ param.kind !== "string") {
878
+ lowerer.unsupported("SC1090", call.arguments.nodes[1], `data listeners whose parameter is not 'Uint8Array' or 'string' (got '${lowerer.fmt(param)}')`);
538
879
  }
539
880
  return { kind: "libCall", fn: "stdin.onData", args: [cb, onceArg], type: VOID, loc };
540
881
  }
541
882
  if (event === "end") {
542
883
  if (param !== undefined) {
543
- lowerer.unsupported("SC1090", call.arguments[1], "end listeners with parameters (use ())");
884
+ lowerer.unsupported("SC1090", call.arguments.nodes[1], "end listeners with parameters (use ())");
544
885
  }
545
886
  return { kind: "libCall", fn: "stdin.onEnd", args: [cb, onceArg], type: VOID, loc };
546
887
  }
547
888
  if (param !== undefined && !(param.kind === "object" && param.className === "%Error")) {
548
- lowerer.unsupported("SC1090", call.arguments[1], `error listeners whose parameter is not 'Error' (got '${lowerer.fmt(param)}')`);
889
+ lowerer.unsupported("SC1090", call.arguments.nodes[1], `error listeners whose parameter is not 'Error' (got '${lowerer.fmt(param)}')`);
549
890
  }
550
891
  return { kind: "libCall", fn: "stdin.onError", args: [cb, onceArg], type: VOID, loc };
551
892
  }
@@ -553,7 +894,7 @@ export function lowerProcessMethodCall(lowerer, call, access) {
553
894
  const stream = lowerer.stdlibGlobalMember(access.expression, "process");
554
895
  if (stream === "stdout" || stream === "stderr") {
555
896
  const loc = locOf(call);
556
- const args = call.arguments;
897
+ const args = call.arguments.nodes;
557
898
  if (args.length < 1 || args.length > 3 || args.some(ts.isSpreadElement)) {
558
899
  lowerer.noLowering(`process.${stream}.write with ${args.length} arguments`, call, "the supported forms are write(data[, encoding][, callback]) with a static BufferEncoding and completion callback");
559
900
  }
@@ -635,7 +976,7 @@ export function lowerProcessMethodCall(lowerer, call, access) {
635
976
  // `writeOut: (str) => process.stdout.write(str)` — str untyped):
636
977
  // a runtime string writes; anything else throws the dynCheck's
637
978
  // honest TypeError at the call.
638
- if (data.type.kind === "dyn" && isJsSourceFile(call.getSourceFile())) {
979
+ if (data.type.kind === "dyn" && isJsSourceFile(ts.getSourceFileOfNode(call))) {
639
980
  data = { kind: "dynCheck", value: data, type: STRING, loc };
640
981
  }
641
982
  const isBytes = data.type.kind === "bytes" && data.type.elem === "u8";
@@ -645,7 +986,7 @@ export function lowerProcessMethodCall(lowerer, call, access) {
645
986
  let callback;
646
987
  if (callbackNode) {
647
988
  callback = lowerer.lowerExpr(callbackNode);
648
- if (callback.type.kind === "dyn" && isJsSourceFile(call.getSourceFile())) {
989
+ if (callback.type.kind === "dyn" && isJsSourceFile(ts.getSourceFileOfNode(call))) {
649
990
  callback = {
650
991
  kind: "dynCheck",
651
992
  value: callback,
@@ -740,8 +1081,8 @@ export function lowerProcessMethodCall(lowerer, call, access) {
740
1081
  !access.questionDotToken &&
741
1082
  ts.isPropertyAccessExpression(access.expression) &&
742
1083
  lowerer.stdlibGlobalMember(access.expression, "process") === "memoryUsage") {
743
- if (call.arguments.length !== 0) {
744
- lowerer.noLowering(`process.memoryUsage.rss with ${call.arguments.length} arguments`, call);
1084
+ if (call.arguments.nodes.length !== 0) {
1085
+ lowerer.noLowering(`process.memoryUsage.rss with ${call.arguments.nodes.length} arguments`, call);
745
1086
  }
746
1087
  return { kind: "libCall", fn: "process.rss", args: [], type: F64, loc: locOf(call) };
747
1088
  }
@@ -760,18 +1101,18 @@ export function lowerProcessMethodCall(lowerer, call, access) {
760
1101
  // `removeListener` IS `off` — Node aliases them.
761
1102
  const isOff = member === "off" || member === "removeListener";
762
1103
  if (member === "on" || member === "once" || isOff) {
763
- if (call.arguments.length !== 2) {
764
- lowerer.noLowering(`process.${member} with ${call.arguments.length} arguments`, call);
1104
+ if (call.arguments.nodes.length !== 2) {
1105
+ lowerer.noLowering(`process.${member} with ${call.arguments.nodes.length} arguments`, call);
765
1106
  }
766
- const evT = lowerer.typeOf(call.arguments[0]);
1107
+ const evT = lowerer.typeOf(call.arguments.nodes[0]);
767
1108
  const event = evT.isStringLiteralType() ? evT.value : null;
768
1109
  if ((event === "message" || event === "disconnect") && !isOff) {
769
1110
  if (!ts.isExpressionStatement(call.parent)) {
770
1111
  lowerer.unsupported("SC1090", call, "chaining process IPC listener registration (register each listener as its own statement)");
771
1112
  }
772
1113
  const callback = event === "message"
773
- ? ipcMessageListener(lowerer, call.arguments[1])
774
- : ipcDisconnectListener(lowerer, call.arguments[1]);
1114
+ ? ipcMessageListener(lowerer, call.arguments.nodes[1])
1115
+ : ipcDisconnectListener(lowerer, call.arguments.nodes[1]);
775
1116
  return {
776
1117
  kind: "libCall",
777
1118
  fn: event === "message" ? "process.onMessage" : "process.onDisconnect",
@@ -784,7 +1125,7 @@ export function lowerProcessMethodCall(lowerer, call, access) {
784
1125
  if (!ts.isExpressionStatement(call.parent)) {
785
1126
  lowerer.unsupported("SC1090", call, "chaining process exception listener registration");
786
1127
  }
787
- const cb = lowerDiagnosticsSubscriber(lowerer, call.arguments[1]);
1128
+ const cb = lowerDiagnosticsSubscriber(lowerer, call.arguments.nodes[1]);
788
1129
  const monitor = boolLit(event === "uncaughtExceptionMonitor", loc);
789
1130
  return {
790
1131
  kind: "libCall",
@@ -806,7 +1147,7 @@ export function lowerProcessMethodCall(lowerer, call, access) {
806
1147
  if (!ts.isExpressionStatement(call.parent)) {
807
1148
  lowerer.unsupported("SC1090", call, "chaining process listener registration (the result is void here — register each listener as its own statement)");
808
1149
  }
809
- const cb = lowerDiagnosticsSubscriber(lowerer, call.arguments[1]);
1150
+ const cb = lowerDiagnosticsSubscriber(lowerer, call.arguments.nodes[1]);
810
1151
  const onceArg = { kind: "boolLit", value: member === "once", type: BOOL, loc };
811
1152
  const fn = event === "unhandledRejection"
812
1153
  ? isOff
@@ -824,7 +1165,7 @@ export function lowerProcessMethodCall(lowerer, call, access) {
824
1165
  if (!ts.isExpressionStatement(call.parent)) {
825
1166
  lowerer.unsupported("SC1090", call, "chaining process listener registration (the result is void here — register each listener as its own statement)");
826
1167
  }
827
- const cb = lowerDiagnosticsSubscriber(lowerer, call.arguments[1]);
1168
+ const cb = lowerDiagnosticsSubscriber(lowerer, call.arguments.nodes[1]);
828
1169
  return {
829
1170
  kind: "libCall",
830
1171
  fn: isOff ? "process.offWarning" : "process.onWarning",
@@ -837,14 +1178,14 @@ export function lowerProcessMethodCall(lowerer, call, access) {
837
1178
  if (!ts.isExpressionStatement(call.parent)) {
838
1179
  lowerer.unsupported("SC1090", call, "chaining process signal listener registration");
839
1180
  }
840
- const name = lowerer.coerceToExpected(lowerer.lowerExpr(call.arguments[0]), STRING);
1181
+ const name = lowerer.coerceToExpected(lowerer.lowerExpr(call.arguments.nodes[0]), STRING);
841
1182
  if (name.type.kind !== "string" && name.type.kind !== "dyn") {
842
- lowerer.noLowering("process signal event name that is not a string", call.arguments[0]);
1183
+ lowerer.noLowering("process signal event name that is not a string", call.arguments.nodes[0]);
843
1184
  }
844
1185
  const signal = name.type.kind === "string"
845
1186
  ? name
846
1187
  : { kind: "dynCheck", value: name, type: STRING, loc };
847
- const cb = lowerDiagnosticsSubscriber(lowerer, call.arguments[1]);
1188
+ const cb = lowerDiagnosticsSubscriber(lowerer, call.arguments.nodes[1]);
848
1189
  return {
849
1190
  kind: "libCall",
850
1191
  fn: isOff ? "process.offSignal" : "process.onSignal",
@@ -854,12 +1195,12 @@ export function lowerProcessMethodCall(lowerer, call, access) {
854
1195
  };
855
1196
  }
856
1197
  if (event !== "exit") {
857
- lowerer.noLowering(`process.${member}("${event}", ...)`, call.arguments[0]);
1198
+ lowerer.noLowering(`process.${member}("${event}", ...)`, call.arguments.nodes[0]);
858
1199
  }
859
1200
  if (!ts.isExpressionStatement(call.parent)) {
860
1201
  lowerer.unsupported("SC1090", call, "chaining process listener registration (the result is void here — register each listener as its own statement)");
861
1202
  }
862
- let cb = lowerer.lowerExpr(call.arguments[1]);
1203
+ let cb = lowerer.lowerExpr(call.arguments.nodes[1]);
863
1204
  // The checked-dynamic listener (test/common's `process.on('exit',
864
1205
  // runCallChecks)` — an implicit-any JS function, func(dyn)=>dyn, or
865
1206
  // a dyn VALUE that rode an untyped binding): adapt through the dyn
@@ -890,12 +1231,12 @@ export function lowerProcessMethodCall(lowerer, call, access) {
890
1231
  }
891
1232
  }
892
1233
  if (cb.type.kind !== "func" || cb.type.ret.kind !== "void" || cb.type.params.length > 1) {
893
- lowerer.unsupported("SC1090", call.arguments[1], "process listeners with more than one parameter or a return value");
1234
+ lowerer.unsupported("SC1090", call.arguments.nodes[1], "process listeners with more than one parameter or a return value");
894
1235
  }
895
1236
  const param = cb.type.params[0];
896
1237
  const onceArg = { kind: "boolLit", value: member === "once", type: BOOL, loc };
897
1238
  if (param !== undefined && param.kind !== "f64") {
898
- lowerer.unsupported("SC1090", call.arguments[1], `exit listeners whose parameter is not 'number' (got '${lowerer.fmt(param)}')`);
1239
+ lowerer.unsupported("SC1090", call.arguments.nodes[1], `exit listeners whose parameter is not 'number' (got '${lowerer.fmt(param)}')`);
899
1240
  }
900
1241
  if (isOff) {
901
1242
  return { kind: "libCall", fn: "process.offExit", args: [cb], type: VOID, loc };
@@ -910,17 +1251,17 @@ export function lowerProcessMethodCall(lowerer, call, access) {
910
1251
  // shape: `.forEach((args) => process.emitWarning(...args))`).
911
1252
  if (member === "emitWarning") {
912
1253
  let argsArr = null;
913
- if (call.arguments.length === 1 && ts.isSpreadElement(call.arguments[0])) {
914
- const spread = lowerer.lowerExpr(call.arguments[0].expression);
1254
+ if (call.arguments.nodes.length === 1 && ts.isSpreadElement(call.arguments.nodes[0])) {
1255
+ const spread = lowerer.lowerExpr(call.arguments.nodes[0].expression);
915
1256
  if (spread.type.kind === "dyn") {
916
1257
  argsArr = spread;
917
1258
  }
918
1259
  else {
919
- lowerer.noLowering("process.emitWarning with a typed spread argument", call.arguments[0], "spread an untyped (checked-dynamic) array, or write the arguments positionally");
1260
+ lowerer.noLowering("process.emitWarning with a typed spread argument", call.arguments.nodes[0], "spread an untyped (checked-dynamic) array, or write the arguments positionally");
920
1261
  }
921
1262
  }
922
1263
  else {
923
- argsArr = lowerTracingArguments(lowerer, call.arguments, loc);
1264
+ argsArr = lowerTracingArguments(lowerer, call.arguments.nodes, loc);
924
1265
  }
925
1266
  return { kind: "libCall", fn: "process.emitWarning", args: [argsArr], type: VOID, loc };
926
1267
  }
@@ -935,17 +1276,17 @@ export function lowerProcessMethodCall(lowerer, call, access) {
935
1276
  // through, boxable parameterized shapes ride the checked-dynamic
936
1277
  // boundary, trailing call arguments ride the interned dyn thunk.
937
1278
  if (member === "nextTick") {
938
- if (call.arguments.length === 0) {
1279
+ if (call.arguments.nodes.length === 0) {
939
1280
  lowerer.noLowering("process.nextTick with 0 arguments", call, "the supported form is process.nextTick(callback, ...args)");
940
1281
  }
941
- const cb = timerStyleCallback(lowerer, call.arguments, "process.nextTick", loc);
1282
+ const cb = timerStyleCallback(lowerer, call.arguments.nodes, "process.nextTick", loc);
942
1283
  return { kind: "libCall", fn: "process.nextTick", args: [cb], type: VOID, loc };
943
1284
  }
944
1285
  // The process introspection statics — plain reads of the process's
945
1286
  // own clocks and counters, Node's shapes exactly.
946
1287
  if (member === "uptime" || member === "availableMemory" || member === "constrainedMemory") {
947
- if (call.arguments.length !== 0) {
948
- lowerer.noLowering(`process.${member} with ${call.arguments.length} arguments`, call);
1288
+ if (call.arguments.nodes.length !== 0) {
1289
+ lowerer.noLowering(`process.${member} with ${call.arguments.nodes.length} arguments`, call);
949
1290
  }
950
1291
  const fn = member === "uptime"
951
1292
  ? "process.uptime"
@@ -977,7 +1318,7 @@ export function lowerProcessMethodCall(lowerer, call, access) {
977
1318
  type: F64,
978
1319
  loc,
979
1320
  });
980
- if (call.arguments.length === 0) {
1321
+ if (call.arguments.nodes.length === 0) {
981
1322
  return {
982
1323
  kind: "recordLit",
983
1324
  fields: shape.fields.map((f) => ({ name: f.name, value: sampleField(f.name) })),
@@ -985,15 +1326,15 @@ export function lowerProcessMethodCall(lowerer, call, access) {
985
1326
  loc,
986
1327
  };
987
1328
  }
988
- if (call.arguments.length !== 1) {
989
- lowerer.noLowering(`process.${member} with ${call.arguments.length} arguments`, call);
1329
+ if (call.arguments.nodes.length !== 1) {
1330
+ lowerer.noLowering(`process.${member} with ${call.arguments.nodes.length} arguments`, call);
990
1331
  }
991
- const prev = lowerer.lowerExpr(call.arguments[0]);
1332
+ const prev = lowerer.lowerExpr(call.arguments.nodes[0]);
992
1333
  const prevShape = prev.type.kind === "record" ? lowerer.shapes.get(prev.type.shapeId) : undefined;
993
1334
  const prevOk = prevShape !== undefined &&
994
1335
  ["user", "system"].every((n) => prevShape.fields.some((f) => f.name === n && f.type.kind === "f64"));
995
1336
  if (prev.type.kind !== "record" || !prevOk) {
996
- lowerer.noLowering(`process.${member} of a '${lowerer.fmt(prev.type)}' previous value`, call.arguments[0], "the previous value is the record a prior call answered ({ user, system } numbers) — Node's ERR_INVALID_ARG_TYPE shapes have no lowering");
1337
+ lowerer.noLowering(`process.${member} of a '${lowerer.fmt(prev.type)}' previous value`, call.arguments.nodes[0], "the previous value is the record a prior call answered ({ user, system } numbers) — Node's ERR_INVALID_ARG_TYPE shapes have no lowering");
997
1338
  }
998
1339
  const prevT = prev.type;
999
1340
  const key = `${prefix}usage.diff:${prevT.shapeId}:${t.shapeId}`;
@@ -1059,8 +1400,8 @@ export function lowerProcessMethodCall(lowerer, call, access) {
1059
1400
  // storage lives in the same heap). One sample per call: the interned
1060
1401
  // helper takes it, then the record reads it field by field.
1061
1402
  if (member === "memoryUsage") {
1062
- if (call.arguments.length !== 0) {
1063
- lowerer.noLowering(`process.memoryUsage with ${call.arguments.length} arguments`, call);
1403
+ if (call.arguments.nodes.length !== 0) {
1404
+ lowerer.noLowering(`process.memoryUsage with ${call.arguments.nodes.length} arguments`, call);
1064
1405
  }
1065
1406
  const t = lowerer.mapTypeOf(lowerer.typeOf(call));
1066
1407
  if (t?.kind !== "record")
@@ -1114,8 +1455,8 @@ export function lowerProcessMethodCall(lowerer, call, access) {
1114
1455
  // process.resourceUsage() — getrusage's 16 fields in Node's names and
1115
1456
  // units (CPU times in microseconds, maxRSS in kilobytes).
1116
1457
  if (member === "resourceUsage") {
1117
- if (call.arguments.length !== 0) {
1118
- lowerer.noLowering(`process.resourceUsage with ${call.arguments.length} arguments`, call);
1458
+ if (call.arguments.nodes.length !== 0) {
1459
+ lowerer.noLowering(`process.resourceUsage with ${call.arguments.nodes.length} arguments`, call);
1119
1460
  }
1120
1461
  const t = lowerer.mapTypeOf(lowerer.typeOf(call));
1121
1462
  if (t?.kind !== "record")
@@ -1165,8 +1506,8 @@ export function lowerProcessMethodCall(lowerer, call, access) {
1165
1506
  // DIVERGENCE (SEMANTICS.md): resources this runtime does not model
1166
1507
  // as loop handles (TCP wraps, FS requests) are absent from the answer.
1167
1508
  if (member === "getActiveResourcesInfo") {
1168
- if (call.arguments.length !== 0) {
1169
- lowerer.noLowering(`process.getActiveResourcesInfo with ${call.arguments.length} arguments`, call);
1509
+ if (call.arguments.nodes.length !== 0) {
1510
+ lowerer.noLowering(`process.getActiveResourcesInfo with ${call.arguments.nodes.length} arguments`, call);
1170
1511
  }
1171
1512
  return { kind: "libCall", fn: "process.activeResources", args: [], type: arrayOf(STRING), loc };
1172
1513
  }
@@ -1174,25 +1515,25 @@ export function lowerProcessMethodCall(lowerer, call, access) {
1174
1515
  // completes it to the -1 read sentinel); umask(mask) sets and answers
1175
1516
  // the previous mask, Node's shape either way.
1176
1517
  if (member === "umask") {
1177
- if (call.arguments.length > 1) {
1178
- lowerer.noLowering(`process.umask with ${call.arguments.length} arguments`, call);
1518
+ if (call.arguments.nodes.length > 1) {
1519
+ lowerer.noLowering(`process.umask with ${call.arguments.nodes.length} arguments`, call);
1179
1520
  }
1180
- const mask = call.arguments.length === 1
1181
- ? lowerer.lowerExpr(call.arguments[0])
1521
+ const mask = call.arguments.nodes.length === 1
1522
+ ? lowerer.lowerExpr(call.arguments.nodes[0])
1182
1523
  : { kind: "numLit", value: -1, type: F64, loc };
1183
1524
  if (mask.type.kind !== "f64") {
1184
- lowerer.noLowering("process.umask of non-number masks", call.arguments[0]);
1525
+ lowerer.noLowering("process.umask of non-number masks", call.arguments.nodes[0]);
1185
1526
  }
1186
1527
  return { kind: "libCall", fn: "process.umask", args: [mask], type: F64, loc };
1187
1528
  }
1188
1529
  // chdir(2) — throws Node's fs-shaped error on failure.
1189
1530
  if (member === "chdir") {
1190
- if (call.arguments.length !== 1) {
1191
- lowerer.noLowering(`process.chdir with ${call.arguments.length} arguments`, call);
1531
+ if (call.arguments.nodes.length !== 1) {
1532
+ lowerer.noLowering(`process.chdir with ${call.arguments.nodes.length} arguments`, call);
1192
1533
  }
1193
- const dir = lowerer.lowerExpr(call.arguments[0]);
1534
+ const dir = lowerer.lowerExpr(call.arguments.nodes[0]);
1194
1535
  if (dir.type.kind !== "string") {
1195
- lowerer.noLowering("process.chdir of non-string paths", call.arguments[0]);
1536
+ lowerer.noLowering("process.chdir of non-string paths", call.arguments.nodes[0]);
1196
1537
  }
1197
1538
  return { kind: "libCall", fn: "process.chdir", args: [dir], type: VOID, loc };
1198
1539
  }
@@ -1201,8 +1542,8 @@ export function lowerProcessMethodCall(lowerer, call, access) {
1201
1542
  // the member optional (that optionality covers Windows). The `?.()`
1202
1543
  // spelling routes here through lowerProcessOptionalMethodCall.
1203
1544
  if (PROCESS_CREDENTIAL_FNS.has(member)) {
1204
- if (call.arguments.length !== 0) {
1205
- lowerer.noLowering(`process.${member} with ${call.arguments.length} arguments`, call);
1545
+ if (call.arguments.nodes.length !== 0) {
1546
+ lowerer.noLowering(`process.${member} with ${call.arguments.nodes.length} arguments`, call);
1206
1547
  }
1207
1548
  return processCredentialCall(member, loc);
1208
1549
  }
@@ -1214,11 +1555,11 @@ export function lowerProcessMethodCall(lowerer, call, access) {
1214
1555
  // Node's `kill ESRCH`/`kill EPERM` Error. The result is Node's
1215
1556
  // constant true.
1216
1557
  if (member === "kill") {
1217
- if (call.arguments.length < 1 || call.arguments.length > 2) {
1218
- lowerer.noLowering(`process.kill with ${call.arguments.length} arguments`, call);
1558
+ if (call.arguments.nodes.length < 1 || call.arguments.nodes.length > 2) {
1559
+ lowerer.noLowering(`process.kill with ${call.arguments.nodes.length} arguments`, call);
1219
1560
  }
1220
- const pid = lowerer.lowerExprExpecting(call.arguments[0], F64);
1221
- const sigNode = call.arguments[1];
1561
+ const pid = lowerer.lowerExprExpecting(call.arguments.nodes[0], F64);
1562
+ const sigNode = call.arguments.nodes[1];
1222
1563
  if (!sigNode) {
1223
1564
  const dflt = { kind: "strLit", value: "SIGTERM", type: STRING, loc };
1224
1565
  return { kind: "libCall", fn: "process.kill", args: [pid, dflt], type: BOOL, loc };
@@ -1233,10 +1574,36 @@ export function lowerProcessMethodCall(lowerer, call, access) {
1233
1574
  lowerer.noLowering(`process.kill with a '${lowerer.fmt(sig.type)}' signal`, sigNode, "pass a signal name string or number (narrow unions first)");
1234
1575
  }
1235
1576
  if (member === "exit") {
1236
- const arg = call.arguments[0];
1237
- const code = arg !== undefined
1577
+ const arg = call.arguments.nodes[0];
1578
+ let code = arg !== undefined
1238
1579
  ? lowerer.lowerExprExpecting(arg, F64)
1239
1580
  : { kind: "libCall", fn: "process.currentExitCode", args: [], type: F64, loc };
1581
+ // process.exit(code) assigns process.exitCode before the 'exit'
1582
+ // listeners run. Only a program that reads the property can observe
1583
+ // that, so only such a program records the assignment.
1584
+ if (arg !== undefined && programReadsExitCode(lowerer)) {
1585
+ const binding = lowerer.declareHiddenLocal("%exitCode", F64);
1586
+ code = {
1587
+ kind: "seqExpr",
1588
+ stmts: [
1589
+ { kind: "varDecl", localId: binding.id, init: code, loc },
1590
+ {
1591
+ kind: "exprStmt",
1592
+ expr: {
1593
+ kind: "libCall",
1594
+ fn: "process.setExitCodeTracked",
1595
+ args: [varRef(binding.id, F64, loc)],
1596
+ type: VOID,
1597
+ loc,
1598
+ },
1599
+ loc,
1600
+ },
1601
+ ],
1602
+ result: varRef(binding.id, F64, loc),
1603
+ type: F64,
1604
+ loc,
1605
+ };
1606
+ }
1240
1607
  return { kind: "libCall", fn: "process.exit", args: [code], type: VOID, loc };
1241
1608
  }
1242
1609
  return null; // process.argv(...) etc. are tsc errors before lowering
@@ -1248,6 +1615,14 @@ export function lowerProcessMethodCall(lowerer, call, access) {
1248
1615
  * BEFORE the optional-chain machinery: `process.getuid` has no value
1249
1616
  * lowering for the chain to guard. Null when this isn't that shape. */
1250
1617
  export function lowerProcessOptionalMethodCall(lowerer, expr) {
1618
+ // `process.send!(message)`: the asserted direct call of the optional
1619
+ // member (the @types/node spelling under strict null checks).
1620
+ if (!expr.questionDotToken &&
1621
+ ts.isNonNullExpression(expr.expression) &&
1622
+ ts.isPropertyAccessExpression(expr.expression.expression) &&
1623
+ !expr.expression.expression.questionDotToken &&
1624
+ lowerer.stdlibGlobalMember(expr.expression.expression, "process") === "send")
1625
+ return lowerProcessIpcSend(lowerer, expr);
1251
1626
  if (!expr.questionDotToken)
1252
1627
  return null;
1253
1628
  if (!ts.isPropertyAccessExpression(expr.expression))
@@ -1257,8 +1632,8 @@ export function lowerProcessOptionalMethodCall(lowerer, expr) {
1257
1632
  return lowerProcessIpcSend(lowerer, expr);
1258
1633
  if (member === null || !PROCESS_CREDENTIAL_FNS.has(member))
1259
1634
  return null;
1260
- if (expr.arguments.length !== 0) {
1261
- lowerer.noLowering(`process.${member} with ${expr.arguments.length} arguments`, expr);
1635
+ if (expr.arguments.nodes.length !== 0) {
1636
+ lowerer.noLowering(`process.${member} with ${expr.arguments.nodes.length} arguments`, expr);
1262
1637
  }
1263
1638
  return processCredentialCall(member, locOf(expr));
1264
1639
  }
@@ -1284,4 +1659,35 @@ function processCredentialCall(member, loc) {
1284
1659
  loc,
1285
1660
  };
1286
1661
  }
1662
+ /** `process.getBuiltinModule("node:os")`: a string-literal id naming a
1663
+ * supported builtin whose call the checker types as that module's
1664
+ * namespace (@types/node's BuiltInModule map) answers the namespace value
1665
+ * `import * as ns` binds, so its members key the builtin tables at their
1666
+ * use sites. The receiver may be cast (`(process as P)`) and the call
1667
+ * optional: Node 24's process always has the member, and the cast changes
1668
+ * no runtime value. Other ids keep the dynamic loader (undefined for
1669
+ * unknown ids, Node's argument errors). */
1670
+ export function lowerProcessBuiltinModuleNamespace(lowerer, call) {
1671
+ const callee = call.expression;
1672
+ if (!ts.isPropertyAccessExpression(callee) || callee.name.text !== "getBuiltinModule")
1673
+ return null;
1674
+ const id = call.arguments.nodes[0];
1675
+ if (call.arguments.nodes.length !== 1 || !id || !ts.isStringLiteralLike(id))
1676
+ return null;
1677
+ let receiver = callee.expression;
1678
+ while (ts.isParenthesizedExpression(receiver) ||
1679
+ ts.isAsExpression(receiver) ||
1680
+ ts.isSatisfiesExpression(receiver) ||
1681
+ ts.isNonNullExpression(receiver))
1682
+ receiver = receiver.expression;
1683
+ if (!lowerer.isStdlibGlobal(receiver, "process"))
1684
+ return null;
1685
+ const module = canonicalBuiltinModule(id.text);
1686
+ if (module === null)
1687
+ return null;
1688
+ const type = lowerer.mapTypeOf(lowerer.checker.getNonNullableType(lowerer.typeOf(call)));
1689
+ if (type?.kind !== "moduleNs" || type.moduleId !== `builtin:${module}`)
1690
+ return null;
1691
+ return { kind: "moduleNsRef", moduleId: type.moduleId, type, loc: locOf(call) };
1692
+ }
1287
1693
  //# sourceMappingURL=process.js.map