@scriptc/compiler 0.3.6 → 0.4.0

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