@scriptc/compiler 0.3.5 → 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 (1243) hide show
  1. package/ambient/scriptc-node-fallback.d.ts +960 -82
  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 +324 -179
  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 +576 -268
  87. package/dist/backend/llvm/emitter.js +801 -4447
  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-dispatch.js +1 -0
  109. package/dist/backend/llvm/expr-dispatch.js.map +1 -1
  110. package/dist/backend/llvm/expr-dynamic.d.ts +3 -0
  111. package/dist/backend/llvm/expr-dynamic.js +92 -63
  112. package/dist/backend/llvm/expr-dynamic.js.map +1 -1
  113. package/dist/backend/llvm/expr-primitives.d.ts +1 -1
  114. package/dist/backend/llvm/expr-primitives.js +132 -25
  115. package/dist/backend/llvm/expr-primitives.js.map +1 -1
  116. package/dist/backend/llvm/expr-primitives.test.js +2 -2
  117. package/dist/backend/llvm/expr-records.d.ts +1 -1
  118. package/dist/backend/llvm/expr-records.js +32 -11
  119. package/dist/backend/llvm/expr-records.js.map +1 -1
  120. package/dist/backend/llvm/expr-stream-bridges.js +54 -12
  121. package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
  122. package/dist/backend/llvm/expr-stream-bridges.test.js +2 -2
  123. package/dist/backend/llvm/expr-stream-callbacks.js +22 -1
  124. package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
  125. package/dist/backend/llvm/int32-abi.test.js +2 -2
  126. package/dist/backend/llvm/integer-clones.test.js +3 -3
  127. package/dist/backend/llvm/integer-remainder.d.ts +34 -13
  128. package/dist/backend/llvm/integer-remainder.js +156 -22
  129. package/dist/backend/llvm/integer-remainder.js.map +1 -1
  130. package/dist/backend/llvm/intern-tables.test.js +1 -1
  131. package/dist/backend/llvm/jsval-encoding.d.ts +21 -0
  132. package/dist/backend/llvm/jsval-encoding.js +20 -0
  133. package/dist/backend/llvm/jsval-encoding.js.map +1 -0
  134. package/dist/backend/llvm/jsval.d.ts +12 -0
  135. package/dist/backend/llvm/jsval.js +488 -0
  136. package/dist/backend/llvm/jsval.js.map +1 -0
  137. package/dist/backend/llvm/lazy-captures.d.ts +12 -2
  138. package/dist/backend/llvm/lazy-captures.js +39 -17
  139. package/dist/backend/llvm/lazy-captures.js.map +1 -1
  140. package/dist/backend/llvm/lib-abi.js +1 -1
  141. package/dist/backend/llvm/lib-abi.js.map +1 -1
  142. package/dist/backend/llvm/lib-connect.js +1 -1
  143. package/dist/backend/llvm/lib-connect.js.map +1 -1
  144. package/dist/backend/llvm/lib-datagram.js +14 -8
  145. package/dist/backend/llvm/lib-datagram.js.map +1 -1
  146. package/dist/backend/llvm/lib-dispatch.js +217 -24
  147. package/dist/backend/llvm/lib-dispatch.js.map +1 -1
  148. package/dist/backend/llvm/lib-filesystem.js +102 -13
  149. package/dist/backend/llvm/lib-filesystem.js.map +1 -1
  150. package/dist/backend/llvm/lib-http2.js +3 -3
  151. package/dist/backend/llvm/lib-http2.js.map +1 -1
  152. package/dist/backend/llvm/lib-lookup.js +2 -2
  153. package/dist/backend/llvm/lib-lookup.js.map +1 -1
  154. package/dist/backend/llvm/lib-network.js +77 -25
  155. package/dist/backend/llvm/lib-network.js.map +1 -1
  156. package/dist/backend/llvm/lib-process.js +100 -50
  157. package/dist/backend/llvm/lib-process.js.map +1 -1
  158. package/dist/backend/llvm/lib-shared.d.ts +12 -0
  159. package/dist/backend/llvm/lib-shared.js +229 -5
  160. package/dist/backend/llvm/lib-shared.js.map +1 -1
  161. package/dist/backend/llvm/lib-stream.js +46 -16
  162. package/dist/backend/llvm/lib-stream.js.map +1 -1
  163. package/dist/backend/llvm/lib-test.js +57 -8
  164. package/dist/backend/llvm/lib-test.js.map +1 -1
  165. package/dist/backend/llvm/lib-tls.js +4 -9
  166. package/dist/backend/llvm/lib-tls.js.map +1 -1
  167. package/dist/backend/llvm/local-array-reads.js +2 -2
  168. package/dist/backend/llvm/local-array-reads.test.js +1 -1
  169. package/dist/backend/llvm/local-extents.d.ts +19 -0
  170. package/dist/backend/llvm/local-extents.js +169 -0
  171. package/dist/backend/llvm/local-extents.js.map +1 -0
  172. package/dist/backend/llvm/local-extents.test.d.ts +1 -0
  173. package/dist/backend/llvm/local-extents.test.js +92 -0
  174. package/dist/backend/llvm/local-extents.test.js.map +1 -0
  175. package/dist/backend/llvm/local-union-storage.js +7 -7
  176. package/dist/backend/llvm/local-union-storage.js.map +1 -1
  177. package/dist/backend/llvm/local-union-storage.test.js +2 -2
  178. package/dist/backend/llvm/map-entry-fusion.test.js +1 -1
  179. package/dist/backend/llvm/map-number-lookup.js +2 -2
  180. package/dist/backend/llvm/map-number-lookup.test.js +2 -2
  181. package/dist/backend/llvm/map-read-lifetimes.test.js +2 -2
  182. package/dist/backend/llvm/narrow-guards.d.ts +38 -0
  183. package/dist/backend/llvm/narrow-guards.js +151 -0
  184. package/dist/backend/llvm/narrow-guards.js.map +1 -0
  185. package/dist/backend/llvm/nullable-unions.d.ts +70 -9
  186. package/dist/backend/llvm/nullable-unions.js +105 -6
  187. package/dist/backend/llvm/nullable-unions.js.map +1 -1
  188. package/dist/backend/llvm/nullable-unions.test.d.ts +1 -0
  189. package/dist/backend/llvm/nullable-unions.test.js +65 -0
  190. package/dist/backend/llvm/nullable-unions.test.js.map +1 -0
  191. package/dist/backend/llvm/publish.d.ts +4 -0
  192. package/dist/backend/llvm/publish.js +14 -2
  193. package/dist/backend/llvm/publish.js.map +1 -1
  194. package/dist/backend/llvm/publish.test.js +1 -1
  195. package/dist/backend/llvm/receivers.d.ts +31 -0
  196. package/dist/backend/llvm/receivers.js +395 -0
  197. package/dist/backend/llvm/receivers.js.map +1 -0
  198. package/dist/backend/llvm/record-results.d.ts +13 -2
  199. package/dist/backend/llvm/record-results.js +66 -6
  200. package/dist/backend/llvm/record-results.js.map +1 -1
  201. package/dist/backend/llvm/reference-effects.js +9 -0
  202. package/dist/backend/llvm/reference-effects.js.map +1 -1
  203. package/dist/backend/llvm/reference-writes.d.ts +4 -0
  204. package/dist/backend/llvm/reference-writes.js +143 -6
  205. package/dist/backend/llvm/reference-writes.js.map +1 -1
  206. package/dist/backend/llvm/reference-writes.test.d.ts +1 -0
  207. package/dist/backend/llvm/reference-writes.test.js +88 -0
  208. package/dist/backend/llvm/reference-writes.test.js.map +1 -0
  209. package/dist/backend/llvm/regex-matchers.d.ts +8 -0
  210. package/dist/backend/llvm/regex-matchers.js +33 -0
  211. package/dist/backend/llvm/regex-matchers.js.map +1 -1
  212. package/dist/backend/llvm/regex-matchers.test.js +23 -1
  213. package/dist/backend/llvm/regex-matchers.test.js.map +1 -1
  214. package/dist/backend/llvm/regions.d.ts +1 -1
  215. package/dist/backend/llvm/regions.js +9 -6
  216. package/dist/backend/llvm/regions.js.map +1 -1
  217. package/dist/backend/llvm/regions.test.js +1 -1
  218. package/dist/backend/llvm/shapes.d.ts +69 -43
  219. package/dist/backend/llvm/shapes.js +285 -21
  220. package/dist/backend/llvm/shapes.js.map +1 -1
  221. package/dist/backend/llvm/shapes.test.js +37 -3
  222. package/dist/backend/llvm/shapes.test.js.map +1 -1
  223. package/dist/backend/llvm/speculative-integers.d.ts +74 -0
  224. package/dist/backend/llvm/speculative-integers.js +571 -0
  225. package/dist/backend/llvm/speculative-integers.js.map +1 -0
  226. package/dist/backend/llvm/speculative-integers.test.d.ts +1 -0
  227. package/dist/backend/llvm/speculative-integers.test.js +148 -0
  228. package/dist/backend/llvm/speculative-integers.test.js.map +1 -0
  229. package/dist/backend/llvm/split-loops.js +2 -2
  230. package/dist/backend/llvm/split-loops.js.map +1 -1
  231. package/dist/backend/llvm/stack-objects.d.ts +26 -6
  232. package/dist/backend/llvm/stack-objects.js +133 -10
  233. package/dist/backend/llvm/stack-objects.js.map +1 -1
  234. package/dist/backend/llvm/stack-objects.test.js +55 -1
  235. package/dist/backend/llvm/stack-objects.test.js.map +1 -1
  236. package/dist/backend/llvm/stack-unions.test.js +1 -1
  237. package/dist/backend/llvm/string-construction.test.js +1 -1
  238. package/dist/backend/llvm/string-lifetimes.test.js +15 -14
  239. package/dist/backend/llvm/string-lifetimes.test.js.map +1 -1
  240. package/dist/backend/llvm/string-slices.d.ts +25 -0
  241. package/dist/backend/llvm/string-slices.js +207 -1
  242. package/dist/backend/llvm/string-slices.js.map +1 -1
  243. package/dist/backend/llvm/string-slices.test.js +139 -2
  244. package/dist/backend/llvm/string-slices.test.js.map +1 -1
  245. package/dist/backend/llvm/switch-dispatch.test.js +2 -2
  246. package/dist/backend/llvm/thread-slots.d.ts +5 -0
  247. package/dist/backend/llvm/thread-slots.js +142 -0
  248. package/dist/backend/llvm/thread-slots.js.map +1 -0
  249. package/dist/backend/llvm/thread-slots.test.d.ts +1 -0
  250. package/dist/backend/llvm/thread-slots.test.js +110 -0
  251. package/dist/backend/llvm/thread-slots.test.js.map +1 -0
  252. package/dist/backend/llvm/union-repr.d.ts +7 -7
  253. package/dist/backend/llvm/union-repr.js +18 -2
  254. package/dist/backend/llvm/union-repr.js.map +1 -1
  255. package/dist/backend/llvm/union-retype.test.js +17 -3
  256. package/dist/backend/llvm/union-retype.test.js.map +1 -1
  257. package/dist/backend/llvm/walkers.d.ts +2 -2
  258. package/dist/backend/llvm/walkers.js +51 -26
  259. package/dist/backend/llvm/walkers.js.map +1 -1
  260. package/dist/backend/llvm/wasm-modules.d.ts +16 -0
  261. package/dist/backend/llvm/wasm-modules.js +66 -0
  262. package/dist/backend/llvm/wasm-modules.js.map +1 -0
  263. package/dist/backend/llvm/wrapping-sums.d.ts +7 -0
  264. package/dist/backend/llvm/wrapping-sums.js +11 -3
  265. package/dist/backend/llvm/wrapping-sums.js.map +1 -1
  266. package/dist/backend/mangle.d.ts +7 -0
  267. package/dist/backend/mangle.js +11 -0
  268. package/dist/backend/mangle.js.map +1 -1
  269. package/dist/backend/may-throw.d.ts +3 -0
  270. package/dist/backend/may-throw.js +6 -2
  271. package/dist/backend/may-throw.js.map +1 -1
  272. package/dist/backend/may-throw.test.js +1 -1
  273. package/dist/backend/native/contracts.d.ts +37 -0
  274. package/dist/backend/native/executable.js +192 -134
  275. package/dist/backend/native/executable.js.map +1 -1
  276. package/dist/backend/native/library.js +1 -0
  277. package/dist/backend/native/library.js.map +1 -1
  278. package/dist/backend/native/runtime-inputs.d.ts +1 -1
  279. package/dist/backend/native/runtime-inputs.js +2 -0
  280. package/dist/backend/native/runtime-inputs.js.map +1 -1
  281. package/dist/backend/native-link-info-core.d.ts +30 -0
  282. package/dist/backend/native-link-info-core.js.map +1 -1
  283. package/dist/backend/publication.test.js +1 -1
  284. package/dist/backend/runtime-pack-core.d.ts +9 -1
  285. package/dist/backend/runtime-pack-core.js +10 -1
  286. package/dist/backend/runtime-pack-core.js.map +1 -1
  287. package/dist/backend/runtime-pack-native.js +1 -1
  288. package/dist/backend/runtime-pack-native.js.map +1 -1
  289. package/dist/backend/runtime-pack-native.test.d.ts +1 -0
  290. package/dist/backend/runtime-pack-native.test.js +31 -0
  291. package/dist/backend/runtime-pack-native.test.js.map +1 -0
  292. package/dist/backend/runtime-pack-targets.test.js +5 -0
  293. package/dist/backend/runtime-pack-targets.test.js.map +1 -1
  294. package/dist/backend/runtime-pack.d.ts +7 -3
  295. package/dist/backend/runtime-pack.js +12 -6
  296. package/dist/backend/runtime-pack.js.map +1 -1
  297. package/dist/backend/runtime-pack.test.js +20 -6
  298. package/dist/backend/runtime-pack.test.js.map +1 -1
  299. package/dist/backend/stack-observations.d.ts +22 -0
  300. package/dist/backend/stack-observations.js +382 -0
  301. package/dist/backend/stack-observations.js.map +1 -0
  302. package/dist/backend/stack-observations.test.d.ts +1 -0
  303. package/dist/backend/stack-observations.test.js +233 -0
  304. package/dist/backend/stack-observations.test.js.map +1 -0
  305. package/dist/backend/target-diagnostics.js +8 -0
  306. package/dist/backend/target-diagnostics.js.map +1 -1
  307. package/dist/backend/target-diagnostics.test.js +1 -1
  308. package/dist/backend/warm-cache.js +5 -0
  309. package/dist/backend/warm-cache.js.map +1 -1
  310. package/dist/backend/young-nursery.d.ts +7 -0
  311. package/dist/backend/young-nursery.js +10 -0
  312. package/dist/backend/young-nursery.js.map +1 -0
  313. package/dist/cli/command.js +44 -4
  314. package/dist/cli/command.js.map +1 -1
  315. package/dist/cli/usage.d.ts +11 -1
  316. package/dist/cli/usage.js +20 -1
  317. package/dist/cli/usage.js.map +1 -1
  318. package/dist/compat/fetch-profile.js +10 -1
  319. package/dist/compat/fetch-profile.js.map +1 -1
  320. package/dist/compile-types.d.ts +13 -0
  321. package/dist/contracts/check.js +25 -6
  322. package/dist/contracts/check.js.map +1 -1
  323. package/dist/contracts/int32-elements.d.ts +115 -0
  324. package/dist/contracts/int32-elements.js +1179 -0
  325. package/dist/contracts/int32-elements.js.map +1 -0
  326. package/dist/coverage/report.d.ts +16 -0
  327. package/dist/coverage/report.js +182 -1
  328. package/dist/coverage/report.js.map +1 -1
  329. package/dist/coverage/surface-manifest.js +19 -6
  330. package/dist/coverage/surface-manifest.js.map +1 -1
  331. package/dist/coverage/verdict-cache.d.ts +2 -0
  332. package/dist/coverage/verdict-cache.js +12 -0
  333. package/dist/coverage/verdict-cache.js.map +1 -1
  334. package/dist/coverage/verdict-cache.test.js +2 -1
  335. package/dist/coverage/verdict-cache.test.js.map +1 -1
  336. package/dist/diagnostics/diagnostic.d.ts +11 -7
  337. package/dist/diagnostics/diagnostic.js +35 -23
  338. package/dist/diagnostics/diagnostic.js.map +1 -1
  339. package/dist/diagnostics/envelope.d.ts +39 -2
  340. package/dist/diagnostics/envelope.js.map +1 -1
  341. package/dist/diagnostics/render.d.ts +7 -0
  342. package/dist/diagnostics/render.js +50 -13
  343. package/dist/diagnostics/render.js.map +1 -1
  344. package/dist/diagnostics/render.test.d.ts +1 -0
  345. package/dist/diagnostics/render.test.js +49 -0
  346. package/dist/diagnostics/render.test.js.map +1 -0
  347. package/dist/executable/executable-cache.d.ts +17 -0
  348. package/dist/executable/executable-cache.js +13 -1
  349. package/dist/executable/executable-cache.js.map +1 -1
  350. package/dist/executable/executable-cache.test.js +7 -1
  351. package/dist/executable/executable-cache.test.js.map +1 -1
  352. package/dist/executable/prepare.js +2 -1
  353. package/dist/executable/prepare.js.map +1 -1
  354. package/dist/frontend/analysis.js +6 -1
  355. package/dist/frontend/analysis.js.map +1 -1
  356. package/dist/frontend/builtin-modules.d.ts +16 -2
  357. package/dist/frontend/builtin-modules.js +40 -7
  358. package/dist/frontend/builtin-modules.js.map +1 -1
  359. package/dist/frontend/cjs-syntax.js +52 -51
  360. package/dist/frontend/cjs-syntax.js.map +1 -1
  361. package/dist/frontend/contract-types.d.ts +3 -0
  362. package/dist/frontend/contract-types.js +36 -7
  363. package/dist/frontend/contract-types.js.map +1 -1
  364. package/dist/frontend/experimental-import.d.ts +5 -1
  365. package/dist/frontend/experimental-import.js +26 -7
  366. package/dist/frontend/experimental-import.js.map +1 -1
  367. package/dist/frontend/fork-target.js +20 -22
  368. package/dist/frontend/fork-target.js.map +1 -1
  369. package/dist/frontend/fork-target.test.js +2 -1
  370. package/dist/frontend/fork-target.test.js.map +1 -1
  371. package/dist/frontend/function-completion.js +6 -6
  372. package/dist/frontend/function-completion.js.map +1 -1
  373. package/dist/frontend/helper-tokens.js +15 -3
  374. package/dist/frontend/helper-tokens.js.map +1 -1
  375. package/dist/frontend/helper-tokens.test.js +7 -1
  376. package/dist/frontend/helper-tokens.test.js.map +1 -1
  377. package/dist/frontend/inferred-js-diagnostics.js +14 -17
  378. package/dist/frontend/inferred-js-diagnostics.js.map +1 -1
  379. package/dist/frontend/input-tracker.d.ts +3 -0
  380. package/dist/frontend/input-tracker.js +32 -3
  381. package/dist/frontend/input-tracker.js.map +1 -1
  382. package/dist/frontend/lib-contract.js +36 -32
  383. package/dist/frontend/lib-contract.js.map +1 -1
  384. package/dist/frontend/lib-exports.js +3 -3
  385. package/dist/frontend/lib-exports.js.map +1 -1
  386. package/dist/frontend/lowering/array-values.d.ts +8 -3
  387. package/dist/frontend/lowering/array-values.js +60 -11
  388. package/dist/frontend/lowering/array-values.js.map +1 -1
  389. package/dist/frontend/lowering/assert-instances.js +4 -4
  390. package/dist/frontend/lowering/assert-instances.js.map +1 -1
  391. package/dist/frontend/lowering/assertion-identity.d.ts +12 -0
  392. package/dist/frontend/lowering/assertion-identity.js +70 -0
  393. package/dist/frontend/lowering/assertion-identity.js.map +1 -0
  394. package/dist/frontend/lowering/assertion-members.d.ts +28 -0
  395. package/dist/frontend/lowering/assertion-members.js +185 -0
  396. package/dist/frontend/lowering/assertion-members.js.map +1 -0
  397. package/dist/frontend/lowering/binding-analysis.js +27 -20
  398. package/dist/frontend/lowering/binding-analysis.js.map +1 -1
  399. package/dist/frontend/lowering/builtin-calls.js +72 -4
  400. package/dist/frontend/lowering/builtin-calls.js.map +1 -1
  401. package/dist/frontend/lowering/builtin-function-fences.d.ts +14 -0
  402. package/dist/frontend/lowering/builtin-function-fences.js +42 -0
  403. package/dist/frontend/lowering/builtin-function-fences.js.map +1 -0
  404. package/dist/frontend/lowering/builtins/arguments.js +1 -1
  405. package/dist/frontend/lowering/builtins/arguments.js.map +1 -1
  406. package/dist/frontend/lowering/builtins/async-context.js +53 -52
  407. package/dist/frontend/lowering/builtins/async-context.js.map +1 -1
  408. package/dist/frontend/lowering/builtins/atomics.js +6 -6
  409. package/dist/frontend/lowering/builtins/atomics.js.map +1 -1
  410. package/dist/frontend/lowering/builtins/blob.js +8 -6
  411. package/dist/frontend/lowering/builtins/blob.js.map +1 -1
  412. package/dist/frontend/lowering/builtins/builtin-class-dyn.d.ts +23 -0
  413. package/dist/frontend/lowering/builtins/builtin-class-dyn.js +156 -0
  414. package/dist/frontend/lowering/builtins/builtin-class-dyn.js.map +1 -0
  415. package/dist/frontend/lowering/builtins/callable-aliases.js +45 -6
  416. package/dist/frontend/lowering/builtins/callable-aliases.js.map +1 -1
  417. package/dist/frontend/lowering/builtins/child-process-async.js +7 -7
  418. package/dist/frontend/lowering/builtins/child-process-async.js.map +1 -1
  419. package/dist/frontend/lowering/builtins/child-process-methods.d.ts +6 -4
  420. package/dist/frontend/lowering/builtins/child-process-methods.js +310 -57
  421. package/dist/frontend/lowering/builtins/child-process-methods.js.map +1 -1
  422. package/dist/frontend/lowering/builtins/child-process-sync.js +16 -10
  423. package/dist/frontend/lowering/builtins/child-process-sync.js.map +1 -1
  424. package/dist/frontend/lowering/builtins/child-process.d.ts +6 -4
  425. package/dist/frontend/lowering/builtins/child-process.js +85 -61
  426. package/dist/frontend/lowering/builtins/child-process.js.map +1 -1
  427. package/dist/frontend/lowering/builtins/class-values.d.ts +60 -0
  428. package/dist/frontend/lowering/builtins/class-values.js +226 -0
  429. package/dist/frontend/lowering/builtins/class-values.js.map +1 -0
  430. package/dist/frontend/lowering/builtins/compression.d.ts +18 -0
  431. package/dist/frontend/lowering/builtins/compression.js +230 -52
  432. package/dist/frontend/lowering/builtins/compression.js.map +1 -1
  433. package/dist/frontend/lowering/builtins/constants.d.ts +9 -1
  434. package/dist/frontend/lowering/builtins/constants.js +28 -7
  435. package/dist/frontend/lowering/builtins/constants.js.map +1 -1
  436. package/dist/frontend/lowering/builtins/crypto.d.ts +19 -0
  437. package/dist/frontend/lowering/builtins/crypto.js +223 -38
  438. package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
  439. package/dist/frontend/lowering/builtins/dates.d.ts +7 -1
  440. package/dist/frontend/lowering/builtins/dates.js +92 -16
  441. package/dist/frontend/lowering/builtins/dates.js.map +1 -1
  442. package/dist/frontend/lowering/builtins/disposable-stack.d.ts +18 -0
  443. package/dist/frontend/lowering/builtins/disposable-stack.js +137 -0
  444. package/dist/frontend/lowering/builtins/disposable-stack.js.map +1 -0
  445. package/dist/frontend/lowering/builtins/environment.js +3 -3
  446. package/dist/frontend/lowering/builtins/environment.js.map +1 -1
  447. package/dist/frontend/lowering/builtins/errors.d.ts +14 -10
  448. package/dist/frontend/lowering/builtins/errors.js +174 -6
  449. package/dist/frontend/lowering/builtins/errors.js.map +1 -1
  450. package/dist/frontend/lowering/builtins/filesystem-calls.d.ts +4 -0
  451. package/dist/frontend/lowering/builtins/filesystem-calls.js +136 -113
  452. package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
  453. package/dist/frontend/lowering/builtins/filesystem.d.ts +8 -0
  454. package/dist/frontend/lowering/builtins/filesystem.js +213 -76
  455. package/dist/frontend/lowering/builtins/filesystem.js.map +1 -1
  456. package/dist/frontend/lowering/builtins/fs-glob.js +3 -3
  457. package/dist/frontend/lowering/builtins/fs-glob.js.map +1 -1
  458. package/dist/frontend/lowering/builtins/fs-streams.js +10 -11
  459. package/dist/frontend/lowering/builtins/fs-streams.js.map +1 -1
  460. package/dist/frontend/lowering/builtins/hash-stream.d.ts +12 -0
  461. package/dist/frontend/lowering/builtins/hash-stream.js +80 -0
  462. package/dist/frontend/lowering/builtins/hash-stream.js.map +1 -0
  463. package/dist/frontend/lowering/builtins/ipc.js +45 -8
  464. package/dist/frontend/lowering/builtins/ipc.js.map +1 -1
  465. package/dist/frontend/lowering/builtins/json.js +232 -24
  466. package/dist/frontend/lowering/builtins/json.js.map +1 -1
  467. package/dist/frontend/lowering/builtins/key-object.js +4 -4
  468. package/dist/frontend/lowering/builtins/key-object.js.map +1 -1
  469. package/dist/frontend/lowering/builtins/module-bindings.d.ts +8 -0
  470. package/dist/frontend/lowering/builtins/module-bindings.js +71 -22
  471. package/dist/frontend/lowering/builtins/module-bindings.js.map +1 -1
  472. package/dist/frontend/lowering/builtins/module-calls.js +67 -46
  473. package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
  474. package/dist/frontend/lowering/builtins/module-resolution.d.ts +4 -3
  475. package/dist/frontend/lowering/builtins/module-resolution.js +24 -23
  476. package/dist/frontend/lowering/builtins/module-resolution.js.map +1 -1
  477. package/dist/frontend/lowering/builtins/navigator.d.ts +13 -0
  478. package/dist/frontend/lowering/builtins/navigator.js +40 -0
  479. package/dist/frontend/lowering/builtins/navigator.js.map +1 -0
  480. package/dist/frontend/lowering/builtins/net-address.d.ts +19 -0
  481. package/dist/frontend/lowering/builtins/net-address.js +156 -0
  482. package/dist/frontend/lowering/builtins/net-address.js.map +1 -0
  483. package/dist/frontend/lowering/builtins/numbers.js +25 -9
  484. package/dist/frontend/lowering/builtins/numbers.js.map +1 -1
  485. package/dist/frontend/lowering/builtins/operating-system.d.ts +4 -0
  486. package/dist/frontend/lowering/builtins/operating-system.js +25 -12
  487. package/dist/frontend/lowering/builtins/operating-system.js.map +1 -1
  488. package/dist/frontend/lowering/builtins/performance.d.ts +12 -0
  489. package/dist/frontend/lowering/builtins/performance.js +259 -8
  490. package/dist/frontend/lowering/builtins/performance.js.map +1 -1
  491. package/dist/frontend/lowering/builtins/process.d.ts +32 -1
  492. package/dist/frontend/lowering/builtins/process.js +468 -99
  493. package/dist/frontend/lowering/builtins/process.js.map +1 -1
  494. package/dist/frontend/lowering/builtins/promises.d.ts +5 -1
  495. package/dist/frontend/lowering/builtins/promises.js +326 -43
  496. package/dist/frontend/lowering/builtins/promises.js.map +1 -1
  497. package/dist/frontend/lowering/builtins/promisify-callback.d.ts +37 -0
  498. package/dist/frontend/lowering/builtins/promisify-callback.js +320 -0
  499. package/dist/frontend/lowering/builtins/promisify-callback.js.map +1 -0
  500. package/dist/frontend/lowering/builtins/properties.js +37 -1
  501. package/dist/frontend/lowering/builtins/properties.js.map +1 -1
  502. package/dist/frontend/lowering/builtins/querystring.js +14 -14
  503. package/dist/frontend/lowering/builtins/querystring.js.map +1 -1
  504. package/dist/frontend/lowering/builtins/readline.d.ts +55 -13
  505. package/dist/frontend/lowering/builtins/readline.js +931 -69
  506. package/dist/frontend/lowering/builtins/readline.js.map +1 -1
  507. package/dist/frontend/lowering/builtins/receiver-types.js +3 -5
  508. package/dist/frontend/lowering/builtins/receiver-types.js.map +1 -1
  509. package/dist/frontend/lowering/builtins/reflection.js +16 -14
  510. package/dist/frontend/lowering/builtins/reflection.js.map +1 -1
  511. package/dist/frontend/lowering/builtins/runtime-constructor.d.ts +26 -0
  512. package/dist/frontend/lowering/builtins/runtime-constructor.js +165 -0
  513. package/dist/frontend/lowering/builtins/runtime-constructor.js.map +1 -0
  514. package/dist/frontend/lowering/builtins/strings.js +101 -12
  515. package/dist/frontend/lowering/builtins/strings.js.map +1 -1
  516. package/dist/frontend/lowering/builtins/text-codecs.js +41 -38
  517. package/dist/frontend/lowering/builtins/text-codecs.js.map +1 -1
  518. package/dist/frontend/lowering/builtins/timers.js +75 -30
  519. package/dist/frontend/lowering/builtins/timers.js.map +1 -1
  520. package/dist/frontend/lowering/builtins/url.d.ts +3 -0
  521. package/dist/frontend/lowering/builtins/url.js +120 -17
  522. package/dist/frontend/lowering/builtins/url.js.map +1 -1
  523. package/dist/frontend/lowering/builtins/util-types.js +20 -4
  524. package/dist/frontend/lowering/builtins/util-types.js.map +1 -1
  525. package/dist/frontend/lowering/builtins/v8.d.ts +11 -0
  526. package/dist/frontend/lowering/builtins/v8.js +105 -0
  527. package/dist/frontend/lowering/builtins/v8.js.map +1 -0
  528. package/dist/frontend/lowering/builtins/webassembly.d.ts +33 -0
  529. package/dist/frontend/lowering/builtins/webassembly.js +388 -0
  530. package/dist/frontend/lowering/builtins/webassembly.js.map +1 -0
  531. package/dist/frontend/lowering/builtins/webcrypto.d.ts +20 -0
  532. package/dist/frontend/lowering/builtins/webcrypto.js +112 -0
  533. package/dist/frontend/lowering/builtins/webcrypto.js.map +1 -0
  534. package/dist/frontend/lowering/builtins/workers.d.ts +16 -0
  535. package/dist/frontend/lowering/builtins/workers.js +246 -3
  536. package/dist/frontend/lowering/builtins/workers.js.map +1 -1
  537. package/dist/frontend/lowering/call-arguments.js +69 -14
  538. package/dist/frontend/lowering/call-arguments.js.map +1 -1
  539. package/dist/frontend/lowering/call-signatures.d.ts +19 -1
  540. package/dist/frontend/lowering/call-signatures.js +254 -47
  541. package/dist/frontend/lowering/call-signatures.js.map +1 -1
  542. package/dist/frontend/lowering/checked-promise-all.d.ts +3 -0
  543. package/dist/frontend/lowering/checked-promise-all.js +1 -1
  544. package/dist/frontend/lowering/checked-promise-all.js.map +1 -1
  545. package/dist/frontend/lowering/cjs-exports-object.d.ts +53 -0
  546. package/dist/frontend/lowering/cjs-exports-object.js +528 -0
  547. package/dist/frontend/lowering/cjs-exports-object.js.map +1 -0
  548. package/dist/frontend/lowering/cjs-inline-require.d.ts +86 -0
  549. package/dist/frontend/lowering/cjs-inline-require.js +314 -0
  550. package/dist/frontend/lowering/cjs-inline-require.js.map +1 -0
  551. package/dist/frontend/lowering/cjs-tsc-interop.d.ts +28 -0
  552. package/dist/frontend/lowering/cjs-tsc-interop.js +208 -0
  553. package/dist/frontend/lowering/cjs-tsc-interop.js.map +1 -0
  554. package/dist/frontend/lowering/class-attributes.d.ts +19 -0
  555. package/dist/frontend/lowering/class-attributes.js +378 -0
  556. package/dist/frontend/lowering/class-attributes.js.map +1 -0
  557. package/dist/frontend/lowering/class-callbacks.d.ts +3 -1
  558. package/dist/frontend/lowering/class-callbacks.js +21 -10
  559. package/dist/frontend/lowering/class-callbacks.js.map +1 -1
  560. package/dist/frontend/lowering/class-construction.js +49 -4
  561. package/dist/frontend/lowering/class-construction.js.map +1 -1
  562. package/dist/frontend/lowering/class-descriptors.d.ts +2 -0
  563. package/dist/frontend/lowering/class-descriptors.js +8 -8
  564. package/dist/frontend/lowering/class-descriptors.js.map +1 -1
  565. package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +64 -0
  566. package/dist/frontend/lowering/class-dynamic-dispatch.js +1115 -89
  567. package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
  568. package/dist/frontend/lowering/class-instance-constructor.js +1 -1
  569. package/dist/frontend/lowering/class-instance-constructor.js.map +1 -1
  570. package/dist/frontend/lowering/class-iterables.d.ts +11 -0
  571. package/dist/frontend/lowering/class-iterables.js +31 -0
  572. package/dist/frontend/lowering/class-iterables.js.map +1 -0
  573. package/dist/frontend/lowering/class-method-mutations.js +73 -35
  574. package/dist/frontend/lowering/class-method-mutations.js.map +1 -1
  575. package/dist/frontend/lowering/class-method-values.js +56 -10
  576. package/dist/frontend/lowering/class-method-values.js.map +1 -1
  577. package/dist/frontend/lowering/class-protocol-dispatch.js +24 -22
  578. package/dist/frontend/lowering/class-protocol-dispatch.js.map +1 -1
  579. package/dist/frontend/lowering/class-protocols.d.ts +55 -0
  580. package/dist/frontend/lowering/class-protocols.js +738 -22
  581. package/dist/frontend/lowering/class-protocols.js.map +1 -1
  582. package/dist/frontend/lowering/class-prototypes.d.ts +6 -0
  583. package/dist/frontend/lowering/class-prototypes.js +80 -18
  584. package/dist/frontend/lowering/class-prototypes.js.map +1 -1
  585. package/dist/frontend/lowering/class-runtime-statics.js +1 -1
  586. package/dist/frontend/lowering/class-runtime-statics.js.map +1 -1
  587. package/dist/frontend/lowering/class-static-data.js +2 -2
  588. package/dist/frontend/lowering/class-static-data.js.map +1 -1
  589. package/dist/frontend/lowering/class-to-primitive.d.ts +25 -0
  590. package/dist/frontend/lowering/class-to-primitive.js +261 -0
  591. package/dist/frontend/lowering/class-to-primitive.js.map +1 -0
  592. package/dist/frontend/lowering/class-unions.d.ts +25 -0
  593. package/dist/frontend/lowering/class-unions.js +102 -1
  594. package/dist/frontend/lowering/class-unions.js.map +1 -1
  595. package/dist/frontend/lowering/code-generation.d.ts +14 -0
  596. package/dist/frontend/lowering/code-generation.js +127 -0
  597. package/dist/frontend/lowering/code-generation.js.map +1 -0
  598. package/dist/frontend/lowering/coercions/function-adapters.d.ts +16 -2
  599. package/dist/frontend/lowering/coercions/function-adapters.js +145 -3
  600. package/dist/frontend/lowering/coercions/function-adapters.js.map +1 -1
  601. package/dist/frontend/lowering/coercions/structural-plans.js +25 -3
  602. package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -1
  603. package/dist/frontend/lowering/coercions/structural.js +35 -3
  604. package/dist/frontend/lowering/coercions/structural.js.map +1 -1
  605. package/dist/frontend/lowering/coercions/unions.d.ts +15 -0
  606. package/dist/frontend/lowering/coercions/unions.js +57 -1
  607. package/dist/frontend/lowering/coercions/unions.js.map +1 -1
  608. package/dist/frontend/lowering/collection-ingestion.js +2 -2
  609. package/dist/frontend/lowering/collection-ingestion.js.map +1 -1
  610. package/dist/frontend/lowering/collection-narrowing.js +2 -4
  611. package/dist/frontend/lowering/collection-narrowing.js.map +1 -1
  612. package/dist/frontend/lowering/construction-escapes.js +8 -8
  613. package/dist/frontend/lowering/construction-escapes.js.map +1 -1
  614. package/dist/frontend/lowering/construction-escapes.test.js +4 -4
  615. package/dist/frontend/lowering/construction-escapes.test.js.map +1 -1
  616. package/dist/frontend/lowering/constructor-returns.d.ts +61 -0
  617. package/dist/frontend/lowering/constructor-returns.js +477 -0
  618. package/dist/frontend/lowering/constructor-returns.js.map +1 -0
  619. package/dist/frontend/lowering/containers/array-callback-call.js +1 -1
  620. package/dist/frontend/lowering/containers/array-callback-call.js.map +1 -1
  621. package/dist/frontend/lowering/containers/array-callbacks.d.ts +9 -0
  622. package/dist/frontend/lowering/containers/array-callbacks.js +266 -100
  623. package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
  624. package/dist/frontend/lowering/containers/array-concat.js +1 -1
  625. package/dist/frontend/lowering/containers/array-concat.js.map +1 -1
  626. package/dist/frontend/lowering/containers/array-construction.d.ts +0 -1
  627. package/dist/frontend/lowering/containers/array-construction.js +51 -13
  628. package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
  629. package/dist/frontend/lowering/containers/array-from-async.d.ts +19 -0
  630. package/dist/frontend/lowering/containers/array-from-async.js +427 -0
  631. package/dist/frontend/lowering/containers/array-from-async.js.map +1 -0
  632. package/dist/frontend/lowering/containers/array-methods.js +89 -77
  633. package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
  634. package/dist/frontend/lowering/containers/array-pipelines.js +1 -0
  635. package/dist/frontend/lowering/containers/array-pipelines.js.map +1 -1
  636. package/dist/frontend/lowering/containers/bytes.js +161 -101
  637. package/dist/frontend/lowering/containers/bytes.js.map +1 -1
  638. package/dist/frontend/lowering/containers/callback-arguments.d.ts +9 -1
  639. package/dist/frontend/lowering/containers/callback-arguments.js +55 -5
  640. package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -1
  641. package/dist/frontend/lowering/containers/collection-grouping.d.ts +7 -8
  642. package/dist/frontend/lowering/containers/collection-grouping.js +219 -27
  643. package/dist/frontend/lowering/containers/collection-grouping.js.map +1 -1
  644. package/dist/frontend/lowering/containers/collection-methods.js +81 -48
  645. package/dist/frontend/lowering/containers/collection-methods.js.map +1 -1
  646. package/dist/frontend/lowering/containers/dynamic-receivers.js +1 -1
  647. package/dist/frontend/lowering/containers/dynamic-receivers.js.map +1 -1
  648. package/dist/frontend/lowering/containers/exec-result-uses.js +2 -2
  649. package/dist/frontend/lowering/containers/exec-result-uses.js.map +1 -1
  650. package/dist/frontend/lowering/containers/for-of.d.ts +6 -0
  651. package/dist/frontend/lowering/containers/for-of.js +19 -19
  652. package/dist/frontend/lowering/containers/for-of.js.map +1 -1
  653. package/dist/frontend/lowering/containers/indexed-objects.js +142 -57
  654. package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
  655. package/dist/frontend/lowering/containers/iterator-helpers.d.ts +53 -4
  656. package/dist/frontend/lowering/containers/iterator-helpers.js +1581 -462
  657. package/dist/frontend/lowering/containers/iterator-helpers.js.map +1 -1
  658. package/dist/frontend/lowering/containers/match-row-uses.d.ts +17 -0
  659. package/dist/frontend/lowering/containers/match-row-uses.js +264 -0
  660. package/dist/frontend/lowering/containers/match-row-uses.js.map +1 -0
  661. package/dist/frontend/lowering/containers/string-and-regexp.d.ts +14 -0
  662. package/dist/frontend/lowering/containers/string-and-regexp.js +419 -30
  663. package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
  664. package/dist/frontend/lowering/containers/string-replacement.js +1 -1
  665. package/dist/frontend/lowering/containers/string-replacement.js.map +1 -1
  666. package/dist/frontend/lowering/cycle-initialization.d.ts +4 -0
  667. package/dist/frontend/lowering/cycle-initialization.js +39 -0
  668. package/dist/frontend/lowering/cycle-initialization.js.map +1 -1
  669. package/dist/frontend/lowering/deferred-module-initializers.js +47 -43
  670. package/dist/frontend/lowering/deferred-module-initializers.js.map +1 -1
  671. package/dist/frontend/lowering/devirtualize.d.ts +1 -1
  672. package/dist/frontend/lowering/devirtualize.js +27 -7
  673. package/dist/frontend/lowering/devirtualize.js.map +1 -1
  674. package/dist/frontend/lowering/divergences.d.ts +0 -5
  675. package/dist/frontend/lowering/divergences.js +238 -128
  676. package/dist/frontend/lowering/divergences.js.map +1 -1
  677. package/dist/frontend/lowering/dyn-streams.d.ts +25 -0
  678. package/dist/frontend/lowering/dyn-streams.js +257 -0
  679. package/dist/frontend/lowering/dyn-streams.js.map +1 -0
  680. package/dist/frontend/lowering/error-methods.js +4 -1
  681. package/dist/frontend/lowering/error-methods.js.map +1 -1
  682. package/dist/frontend/lowering/error-name-order.d.ts +19 -0
  683. package/dist/frontend/lowering/error-name-order.js +93 -0
  684. package/dist/frontend/lowering/error-name-order.js.map +1 -0
  685. package/dist/frontend/lowering/expressions/array-literals.d.ts +21 -0
  686. package/dist/frontend/lowering/expressions/array-literals.js +703 -0
  687. package/dist/frontend/lowering/expressions/array-literals.js.map +1 -0
  688. package/dist/frontend/lowering/expressions/binary.d.ts +35 -0
  689. package/dist/frontend/lowering/expressions/binary.js +2483 -0
  690. package/dist/frontend/lowering/expressions/binary.js.map +1 -0
  691. package/dist/frontend/lowering/expressions/element-access.d.ts +31 -0
  692. package/dist/frontend/lowering/expressions/element-access.js +1797 -0
  693. package/dist/frontend/lowering/expressions/element-access.js.map +1 -0
  694. package/dist/frontend/lowering/expressions/evaluation-safety.js +4 -3
  695. package/dist/frontend/lowering/expressions/evaluation-safety.js.map +1 -1
  696. package/dist/frontend/lowering/expressions/hosted-narrowing.d.ts +38 -0
  697. package/dist/frontend/lowering/expressions/hosted-narrowing.js +160 -0
  698. package/dist/frontend/lowering/expressions/hosted-narrowing.js.map +1 -0
  699. package/dist/frontend/lowering/expressions/identifiers.d.ts +4 -0
  700. package/dist/frontend/lowering/expressions/identifiers.js +830 -0
  701. package/dist/frontend/lowering/expressions/identifiers.js.map +1 -0
  702. package/dist/frontend/lowering/expressions/keyed-field-targets.d.ts +40 -0
  703. package/dist/frontend/lowering/expressions/keyed-field-targets.js +226 -0
  704. package/dist/frontend/lowering/expressions/keyed-field-targets.js.map +1 -0
  705. package/dist/frontend/lowering/expressions/narrowing.d.ts +37 -0
  706. package/dist/frontend/lowering/expressions/narrowing.js +1322 -0
  707. package/dist/frontend/lowering/expressions/narrowing.js.map +1 -0
  708. package/dist/frontend/lowering/expressions/native-proxy.js +4 -4
  709. package/dist/frontend/lowering/expressions/native-proxy.js.map +1 -1
  710. package/dist/frontend/lowering/expressions/nullish-assignment.js +45 -0
  711. package/dist/frontend/lowering/expressions/nullish-assignment.js.map +1 -1
  712. package/dist/frontend/lowering/expressions/object-literals.d.ts +10 -0
  713. package/dist/frontend/lowering/expressions/object-literals.js +253 -85
  714. package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
  715. package/dist/frontend/lowering/expressions/optional-chains.d.ts +2 -1
  716. package/dist/frontend/lowering/expressions/optional-chains.js +91 -14
  717. package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
  718. package/dist/frontend/lowering/expressions/property-access.d.ts +110 -0
  719. package/dist/frontend/lowering/expressions/property-access.js +3544 -0
  720. package/dist/frontend/lowering/expressions/property-access.js.map +1 -0
  721. package/dist/frontend/lowering/expressions/relational.d.ts +28 -0
  722. package/dist/frontend/lowering/expressions/relational.js +1679 -0
  723. package/dist/frontend/lowering/expressions/relational.js.map +1 -0
  724. package/dist/frontend/lowering/expressions/typeof.d.ts +22 -0
  725. package/dist/frontend/lowering/expressions/typeof.js +538 -0
  726. package/dist/frontend/lowering/expressions/typeof.js.map +1 -0
  727. package/dist/frontend/lowering/expressions/union-fields.js +1 -1
  728. package/dist/frontend/lowering/expressions/union-fields.js.map +1 -1
  729. package/dist/frontend/lowering/expressions/updates.d.ts +21 -0
  730. package/dist/frontend/lowering/expressions/updates.js +780 -0
  731. package/dist/frontend/lowering/expressions/updates.js.map +1 -0
  732. package/dist/frontend/lowering/function-context.d.ts +10 -0
  733. package/dist/frontend/lowering/function-context.js +11 -1
  734. package/dist/frontend/lowering/function-context.js.map +1 -1
  735. package/dist/frontend/lowering/function-returns.js +52 -28
  736. package/dist/frontend/lowering/function-returns.js.map +1 -1
  737. package/dist/frontend/lowering/general-streams.d.ts +25 -0
  738. package/dist/frontend/lowering/general-streams.js +108 -0
  739. package/dist/frontend/lowering/general-streams.js.map +1 -0
  740. package/dist/frontend/lowering/generator-dynamic-dispatch.d.ts +7 -0
  741. package/dist/frontend/lowering/generator-dynamic-dispatch.js +172 -69
  742. package/dist/frontend/lowering/generator-dynamic-dispatch.js.map +1 -1
  743. package/dist/frontend/lowering/generic-functions.d.ts +39 -0
  744. package/dist/frontend/lowering/generic-functions.js +393 -75
  745. package/dist/frontend/lowering/generic-functions.js.map +1 -1
  746. package/dist/frontend/lowering/import-meta.js +2 -2
  747. package/dist/frontend/lowering/import-meta.js.map +1 -1
  748. package/dist/frontend/lowering/intern-tables.js +10 -9
  749. package/dist/frontend/lowering/intern-tables.js.map +1 -1
  750. package/dist/frontend/lowering/iterator-adapters.d.ts +19 -0
  751. package/dist/frontend/lowering/iterator-adapters.js +331 -3
  752. package/dist/frontend/lowering/iterator-adapters.js.map +1 -1
  753. package/dist/frontend/lowering/js-class-fields.d.ts +28 -0
  754. package/dist/frontend/lowering/js-class-fields.js +170 -0
  755. package/dist/frontend/lowering/js-class-fields.js.map +1 -0
  756. package/dist/frontend/lowering/js-dynamic-objects.d.ts +15 -0
  757. package/dist/frontend/lowering/js-dynamic-objects.js +299 -0
  758. package/dist/frontend/lowering/js-dynamic-objects.js.map +1 -0
  759. package/dist/frontend/lowering/js-dynamic-objects.test.d.ts +1 -0
  760. package/dist/frontend/lowering/js-dynamic-objects.test.js +35 -0
  761. package/dist/frontend/lowering/js-dynamic-objects.test.js.map +1 -0
  762. package/dist/frontend/lowering/json-require.d.ts +22 -0
  763. package/dist/frontend/lowering/json-require.js +131 -0
  764. package/dist/frontend/lowering/json-require.js.map +1 -0
  765. package/dist/frontend/lowering/key-order-witness.d.ts +44 -0
  766. package/dist/frontend/lowering/key-order-witness.js +641 -0
  767. package/dist/frontend/lowering/key-order-witness.js.map +1 -0
  768. package/dist/frontend/lowering/key-order-witness.test.d.ts +1 -0
  769. package/dist/frontend/lowering/key-order-witness.test.js +239 -0
  770. package/dist/frontend/lowering/key-order-witness.test.js.map +1 -0
  771. package/dist/frontend/lowering/lifetime-regions.js +7 -7
  772. package/dist/frontend/lowering/lifetime-regions.js.map +1 -1
  773. package/dist/frontend/lowering/lower-assert.js +61 -60
  774. package/dist/frontend/lowering/lower-assert.js.map +1 -1
  775. package/dist/frontend/lowering/lower-async-iteration.d.ts +10 -1
  776. package/dist/frontend/lowering/lower-async-iteration.js +34 -6
  777. package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
  778. package/dist/frontend/lowering/lower-builtin-values.d.ts +5 -0
  779. package/dist/frontend/lowering/lower-builtin-values.js +32 -3
  780. package/dist/frontend/lowering/lower-builtin-values.js.map +1 -1
  781. package/dist/frontend/lowering/lower-calls.js +1298 -452
  782. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  783. package/dist/frontend/lowering/lower-classes.d.ts +50 -3
  784. package/dist/frontend/lowering/lower-classes.js +1499 -456
  785. package/dist/frontend/lowering/lower-classes.js.map +1 -1
  786. package/dist/frontend/lowering/lower-comptime.d.ts +4 -2
  787. package/dist/frontend/lowering/lower-comptime.js +111 -13
  788. package/dist/frontend/lowering/lower-comptime.js.map +1 -1
  789. package/dist/frontend/lowering/lower-console.js +13 -11
  790. package/dist/frontend/lowering/lower-console.js.map +1 -1
  791. package/dist/frontend/lowering/lower-dgram.d.ts +10 -0
  792. package/dist/frontend/lowering/lower-dgram.js +179 -8
  793. package/dist/frontend/lowering/lower-dgram.js.map +1 -1
  794. package/dist/frontend/lowering/lower-enums.js +113 -14
  795. package/dist/frontend/lowering/lower-enums.js.map +1 -1
  796. package/dist/frontend/lowering/lower-event-emitter.d.ts +16 -7
  797. package/dist/frontend/lowering/lower-event-emitter.js +268 -71
  798. package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
  799. package/dist/frontend/lowering/lower-event-target.js +2 -2
  800. package/dist/frontend/lowering/lower-event-target.js.map +1 -1
  801. package/dist/frontend/lowering/lower-expando.js +17 -13
  802. package/dist/frontend/lowering/lower-expando.js.map +1 -1
  803. package/dist/frontend/lowering/lower-exprs.d.ts +188 -186
  804. package/dist/frontend/lowering/lower-exprs.js +1493 -12407
  805. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  806. package/dist/frontend/lowering/lower-functions.js +68 -22
  807. package/dist/frontend/lowering/lower-functions.js.map +1 -1
  808. package/dist/frontend/lowering/lower-generators.d.ts +6 -0
  809. package/dist/frontend/lowering/lower-generators.js +29 -16
  810. package/dist/frontend/lowering/lower-generators.js.map +1 -1
  811. package/dist/frontend/lowering/lower-global-value.js +5 -1
  812. package/dist/frontend/lowering/lower-global-value.js.map +1 -1
  813. package/dist/frontend/lowering/lower-inspect.js +354 -99
  814. package/dist/frontend/lowering/lower-inspect.js.map +1 -1
  815. package/dist/frontend/lowering/lower-mixins.js +23 -20
  816. package/dist/frontend/lowering/lower-mixins.js.map +1 -1
  817. package/dist/frontend/lowering/lower-mock.d.ts +19 -2
  818. package/dist/frontend/lowering/lower-mock.js +557 -74
  819. package/dist/frontend/lowering/lower-mock.js.map +1 -1
  820. package/dist/frontend/lowering/lower-modules.js +268 -61
  821. package/dist/frontend/lowering/lower-modules.js.map +1 -1
  822. package/dist/frontend/lowering/lower-namespaces.d.ts +6 -0
  823. package/dist/frontend/lowering/lower-namespaces.js +45 -33
  824. package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
  825. package/dist/frontend/lowering/lower-node-module.d.ts +16 -0
  826. package/dist/frontend/lowering/lower-node-module.js +147 -14
  827. package/dist/frontend/lowering/lower-node-module.js.map +1 -1
  828. package/dist/frontend/lowering/lower-server.d.ts +6 -6
  829. package/dist/frontend/lowering/lower-server.js +638 -105
  830. package/dist/frontend/lowering/lower-server.js.map +1 -1
  831. package/dist/frontend/lowering/lower-stdlib.d.ts +4 -0
  832. package/dist/frontend/lowering/lower-stdlib.js +151 -109
  833. package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
  834. package/dist/frontend/lowering/lower-stmts.d.ts +28 -2
  835. package/dist/frontend/lowering/lower-stmts.js +1589 -398
  836. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  837. package/dist/frontend/lowering/lower-stream.d.ts +4 -3
  838. package/dist/frontend/lowering/lower-stream.js +714 -75
  839. package/dist/frontend/lowering/lower-stream.js.map +1 -1
  840. package/dist/frontend/lowering/lower-test.d.ts +3 -0
  841. package/dist/frontend/lowering/lower-test.js +574 -100
  842. package/dist/frontend/lowering/lower-test.js.map +1 -1
  843. package/dist/frontend/lowering/lower-timers.js +80 -32
  844. package/dist/frontend/lowering/lower-timers.js.map +1 -1
  845. package/dist/frontend/lowering/lower-url.js +1 -1
  846. package/dist/frontend/lowering/lower-url.js.map +1 -1
  847. package/dist/frontend/lowering/lowerer.d.ts +409 -26
  848. package/dist/frontend/lowering/lowerer.js +1918 -305
  849. package/dist/frontend/lowering/lowerer.js.map +1 -1
  850. package/dist/frontend/lowering/lowerer.test.js +10 -4
  851. package/dist/frontend/lowering/lowerer.test.js.map +1 -1
  852. package/dist/frontend/lowering/maybe-promise.d.ts +46 -0
  853. package/dist/frontend/lowering/maybe-promise.js +249 -0
  854. package/dist/frontend/lowering/maybe-promise.js.map +1 -0
  855. package/dist/frontend/lowering/module-member-this.d.ts +3 -0
  856. package/dist/frontend/lowering/module-member-this.js +262 -0
  857. package/dist/frontend/lowering/module-member-this.js.map +1 -0
  858. package/dist/frontend/lowering/module-namespace-elements.js +1 -1
  859. package/dist/frontend/lowering/module-namespace-elements.js.map +1 -1
  860. package/dist/frontend/lowering/nan-coded-reads.d.ts +3 -0
  861. package/dist/frontend/lowering/nan-coded-reads.js +45 -32
  862. package/dist/frontend/lowering/nan-coded-reads.js.map +1 -1
  863. package/dist/frontend/lowering/narrowing-stability.d.ts +18 -3
  864. package/dist/frontend/lowering/narrowing-stability.js +104 -32
  865. package/dist/frontend/lowering/narrowing-stability.js.map +1 -1
  866. package/dist/frontend/lowering/native-ffi.js +11 -11
  867. package/dist/frontend/lowering/native-ffi.js.map +1 -1
  868. package/dist/frontend/lowering/null-prototype.d.ts +13 -0
  869. package/dist/frontend/lowering/null-prototype.js +33 -0
  870. package/dist/frontend/lowering/null-prototype.js.map +1 -0
  871. package/dist/frontend/lowering/object-factory-new.js +6 -8
  872. package/dist/frontend/lowering/object-factory-new.js.map +1 -1
  873. package/dist/frontend/lowering/private-brands.d.ts +46 -0
  874. package/dist/frontend/lowering/private-brands.js +265 -0
  875. package/dist/frontend/lowering/private-brands.js.map +1 -0
  876. package/dist/frontend/lowering/promise-executor-adapter.d.ts +11 -0
  877. package/dist/frontend/lowering/promise-executor-adapter.js +87 -0
  878. package/dist/frontend/lowering/promise-executor-adapter.js.map +1 -0
  879. package/dist/frontend/lowering/require-initialization.d.ts +32 -0
  880. package/dist/frontend/lowering/require-initialization.js +246 -0
  881. package/dist/frontend/lowering/require-initialization.js.map +1 -0
  882. package/dist/frontend/lowering/runtime-optional-bounds.js +7 -7
  883. package/dist/frontend/lowering/runtime-optional-bounds.js.map +1 -1
  884. package/dist/frontend/lowering/runtime-optional-elements.js +12 -12
  885. package/dist/frontend/lowering/runtime-optional-elements.js.map +1 -1
  886. package/dist/frontend/lowering/runtime-optional-guards.js +10 -10
  887. package/dist/frontend/lowering/runtime-optional-guards.js.map +1 -1
  888. package/dist/frontend/lowering/runtime-optional-guards.test.js +1 -1
  889. package/dist/frontend/lowering/runtime-optional-guards.test.js.map +1 -1
  890. package/dist/frontend/lowering/runtime-optional-ownership.js +10 -9
  891. package/dist/frontend/lowering/runtime-optional-ownership.js.map +1 -1
  892. package/dist/frontend/lowering/runtime-optional-provenance.js +2 -2
  893. package/dist/frontend/lowering/runtime-optional-provenance.js.map +1 -1
  894. package/dist/frontend/lowering/runtime-optional-records.d.ts +35 -0
  895. package/dist/frontend/lowering/runtime-optional-records.js +205 -32
  896. package/dist/frontend/lowering/runtime-optional-records.js.map +1 -1
  897. package/dist/frontend/lowering/runtime-optional-records.test.js +19 -1
  898. package/dist/frontend/lowering/runtime-optional-records.test.js.map +1 -1
  899. package/dist/frontend/lowering/sanitize-class-types.test.js +2 -2
  900. package/dist/frontend/lowering/split-consumers.js +4 -4
  901. package/dist/frontend/lowering/split-consumers.js.map +1 -1
  902. package/dist/frontend/lowering/static-function-names.d.ts +28 -0
  903. package/dist/frontend/lowering/static-function-names.js +212 -0
  904. package/dist/frontend/lowering/static-function-names.js.map +1 -0
  905. package/dist/frontend/lowering/static-this.js +6 -6
  906. package/dist/frontend/lowering/static-this.js.map +1 -1
  907. package/dist/frontend/lowering/strict-mode.d.ts +5 -0
  908. package/dist/frontend/lowering/strict-mode.js +31 -0
  909. package/dist/frontend/lowering/strict-mode.js.map +1 -0
  910. package/dist/frontend/lowering/string-index-bounds.js +10 -10
  911. package/dist/frontend/lowering/string-index-bounds.js.map +1 -1
  912. package/dist/frontend/lowering/string-index.d.ts +12 -0
  913. package/dist/frontend/lowering/string-index.js +72 -1
  914. package/dist/frontend/lowering/string-index.js.map +1 -1
  915. package/dist/frontend/lowering/surfaces.d.ts +15 -6
  916. package/dist/frontend/lowering/surfaces.js +278 -45
  917. package/dist/frontend/lowering/surfaces.js.map +1 -1
  918. package/dist/frontend/lowering/symbol-fields.d.ts +7 -0
  919. package/dist/frontend/lowering/symbol-fields.js +204 -36
  920. package/dist/frontend/lowering/symbol-fields.js.map +1 -1
  921. package/dist/frontend/lowering/symbol-methods.d.ts +2 -1
  922. package/dist/frontend/lowering/symbol-methods.js +24 -6
  923. package/dist/frontend/lowering/symbol-methods.js.map +1 -1
  924. package/dist/frontend/lowering/thread-slots.d.ts +13 -0
  925. package/dist/frontend/lowering/thread-slots.js +208 -0
  926. package/dist/frontend/lowering/thread-slots.js.map +1 -0
  927. package/dist/frontend/lowering/typed-arguments.d.ts +74 -0
  928. package/dist/frontend/lowering/typed-arguments.js +472 -0
  929. package/dist/frontend/lowering/typed-arguments.js.map +1 -0
  930. package/dist/frontend/lowering/union-retag.d.ts +8 -0
  931. package/dist/frontend/lowering/union-retag.js +27 -0
  932. package/dist/frontend/lowering/union-retag.js.map +1 -1
  933. package/dist/frontend/lowering/union-retag.test.js +24 -1
  934. package/dist/frontend/lowering/union-retag.test.js.map +1 -1
  935. package/dist/frontend/lowering/var-hoisting.js +6 -6
  936. package/dist/frontend/lowering/var-hoisting.js.map +1 -1
  937. package/dist/frontend/lowering/width-lift.d.ts +4 -0
  938. package/dist/frontend/mock-shapes.d.ts +5 -0
  939. package/dist/frontend/mock-shapes.js +39 -7
  940. package/dist/frontend/mock-shapes.js.map +1 -1
  941. package/dist/frontend/module-source-candidates.js +1 -1
  942. package/dist/frontend/module-source-candidates.js.map +1 -1
  943. package/dist/frontend/module-source-candidates.test.js +2 -1
  944. package/dist/frontend/module-source-candidates.test.js.map +1 -1
  945. package/dist/frontend/module-syntax.js +8 -8
  946. package/dist/frontend/module-syntax.js.map +1 -1
  947. package/dist/frontend/npm-static-bundled-chunks.d.ts +51 -0
  948. package/dist/frontend/npm-static-bundled-chunks.js +810 -0
  949. package/dist/frontend/npm-static-bundled-chunks.js.map +1 -0
  950. package/dist/frontend/npm-static-bundled-chunks.test.d.ts +1 -0
  951. package/dist/frontend/npm-static-bundled-chunks.test.js +287 -0
  952. package/dist/frontend/npm-static-bundled-chunks.test.js.map +1 -0
  953. package/dist/frontend/npm-static-bundled-cjs.js +24 -23
  954. package/dist/frontend/npm-static-bundled-cjs.js.map +1 -1
  955. package/dist/frontend/npm-static-bundled-esm.d.ts +9 -0
  956. package/dist/frontend/npm-static-bundled-esm.js +768 -0
  957. package/dist/frontend/npm-static-bundled-esm.js.map +1 -0
  958. package/dist/frontend/npm-static-bundled-esm.test.d.ts +1 -0
  959. package/dist/frontend/npm-static-bundled-esm.test.js +207 -0
  960. package/dist/frontend/npm-static-bundled-esm.test.js.map +1 -0
  961. package/dist/frontend/npm-static-cjs-exports-alias.d.ts +2 -0
  962. package/dist/frontend/npm-static-cjs-exports-alias.js +186 -0
  963. package/dist/frontend/npm-static-cjs-exports-alias.js.map +1 -0
  964. package/dist/frontend/npm-static-cjs-exports-alias.test.d.ts +1 -0
  965. package/dist/frontend/npm-static-cjs-exports-alias.test.js +73 -0
  966. package/dist/frontend/npm-static-cjs-exports-alias.test.js.map +1 -0
  967. package/dist/frontend/npm-static-cjs-exports-var.d.ts +2 -0
  968. package/dist/frontend/npm-static-cjs-exports-var.js +236 -0
  969. package/dist/frontend/npm-static-cjs-exports-var.js.map +1 -0
  970. package/dist/frontend/npm-static-declaration-syntax.js +102 -101
  971. package/dist/frontend/npm-static-declaration-syntax.js.map +1 -1
  972. package/dist/frontend/npm-static-prune.js +36 -24
  973. package/dist/frontend/npm-static-prune.js.map +1 -1
  974. package/dist/frontend/npm-static-rewrite-host.d.ts +4 -1
  975. package/dist/frontend/npm-static-rewrite-host.js +14 -3
  976. package/dist/frontend/npm-static-rewrite-host.js.map +1 -1
  977. package/dist/frontend/npm-static-rewrite-syntax.d.ts +19 -0
  978. package/dist/frontend/npm-static-rewrite-syntax.js +274 -101
  979. package/dist/frontend/npm-static-rewrite-syntax.js.map +1 -1
  980. package/dist/frontend/npm-static-subtyping.js +7 -9
  981. package/dist/frontend/npm-static-subtyping.js.map +1 -1
  982. package/dist/frontend/npm-static.d.ts +17 -1
  983. package/dist/frontend/npm-static.js +167 -16
  984. package/dist/frontend/npm-static.js.map +1 -1
  985. package/dist/frontend/npm-static.test.js +22 -1
  986. package/dist/frontend/npm-static.test.js.map +1 -1
  987. package/dist/frontend/pipeline.js +164 -26
  988. package/dist/frontend/pipeline.js.map +1 -1
  989. package/dist/frontend/pipeline.test.js +22 -1
  990. package/dist/frontend/pipeline.test.js.map +1 -1
  991. package/dist/frontend/program-analysis.d.ts +6 -1
  992. package/dist/frontend/program-analysis.js +7 -0
  993. package/dist/frontend/program-analysis.js.map +1 -1
  994. package/dist/frontend/program.d.ts +92 -2
  995. package/dist/frontend/program.js +1557 -254
  996. package/dist/frontend/program.js.map +1 -1
  997. package/dist/frontend/program.test.js +76 -6
  998. package/dist/frontend/program.test.js.map +1 -1
  999. package/dist/frontend/resolve.js +36 -2
  1000. package/dist/frontend/resolve.js.map +1 -1
  1001. package/dist/frontend/resolve.test.js +49 -0
  1002. package/dist/frontend/resolve.test.js.map +1 -1
  1003. package/dist/frontend/services.d.ts +20 -1
  1004. package/dist/frontend/services.js +40 -3
  1005. package/dist/frontend/services.js.map +1 -1
  1006. package/dist/frontend/services.test.js +2 -1
  1007. package/dist/frontend/services.test.js.map +1 -1
  1008. package/dist/frontend/threads-import.js +1 -1
  1009. package/dist/frontend/threads-import.js.map +1 -1
  1010. package/dist/frontend/tier-analysis.d.ts +71 -0
  1011. package/dist/frontend/tier-analysis.js +522 -0
  1012. package/dist/frontend/tier-analysis.js.map +1 -0
  1013. package/dist/frontend/ts7/api-conformance.d.ts +234 -0
  1014. package/dist/frontend/ts7/api-conformance.js +7 -0
  1015. package/dist/frontend/ts7/api-conformance.js.map +1 -0
  1016. package/dist/frontend/ts7/ast-guards.generated.js +2 -1
  1017. package/dist/frontend/ts7/ast-guards.generated.js.map +1 -1
  1018. package/dist/frontend/ts7/ast-node.d.ts +47 -25
  1019. package/dist/frontend/ts7/ast-node.js +64 -18
  1020. package/dist/frontend/ts7/ast-node.js.map +1 -1
  1021. package/dist/frontend/ts7/ast-node.test.js +36 -12
  1022. package/dist/frontend/ts7/ast-node.test.js.map +1 -1
  1023. package/dist/frontend/ts7/ast-types.d.ts +10 -3
  1024. package/dist/frontend/ts7/ast-types.generated.d.ts +39 -39
  1025. package/dist/frontend/ts7/ast.d.ts +1 -0
  1026. package/dist/frontend/ts7/ast.js +3 -2
  1027. package/dist/frontend/ts7/ast.js.map +1 -1
  1028. package/dist/frontend/ts7/checker-backend.d.ts +23 -0
  1029. package/dist/frontend/ts7/checker-backend.js +88 -0
  1030. package/dist/frontend/ts7/checker-backend.js.map +1 -0
  1031. package/dist/frontend/ts7/checker-backend.test.d.ts +1 -0
  1032. package/dist/frontend/ts7/checker-backend.test.js +63 -0
  1033. package/dist/frontend/ts7/checker-backend.test.js.map +1 -0
  1034. package/dist/frontend/ts7/checker-cache.d.ts +0 -3
  1035. package/dist/frontend/ts7/checker-cache.js +0 -6
  1036. package/dist/frontend/ts7/checker-cache.js.map +1 -1
  1037. package/dist/frontend/ts7/checker.d.ts +18 -11
  1038. package/dist/frontend/ts7/checker.js +42 -55
  1039. package/dist/frontend/ts7/checker.js.map +1 -1
  1040. package/dist/frontend/ts7/checker.test.js +10 -7
  1041. package/dist/frontend/ts7/checker.test.js.map +1 -1
  1042. package/dist/frontend/ts7/diagnostic.d.ts +19 -0
  1043. package/dist/frontend/ts7/diagnostic.js +22 -0
  1044. package/dist/frontend/ts7/diagnostic.js.map +1 -0
  1045. package/dist/frontend/ts7/node-functions.d.ts +8 -0
  1046. package/dist/frontend/ts7/node-functions.js +18 -0
  1047. package/dist/frontend/ts7/node-functions.js.map +1 -0
  1048. package/dist/frontend/ts7/program-host.d.ts +5 -1
  1049. package/dist/frontend/ts7/program-host.js +12 -0
  1050. package/dist/frontend/ts7/program-host.js.map +1 -1
  1051. package/dist/frontend/ts7/rpc-api.d.ts +5 -1
  1052. package/dist/frontend/ts7/rpc-api.js +8 -1
  1053. package/dist/frontend/ts7/rpc-api.js.map +1 -1
  1054. package/dist/frontend/ts7/semantic-checker.d.ts +13 -6
  1055. package/dist/frontend/ts7/semantic-checker.js +26 -8
  1056. package/dist/frontend/ts7/semantic-checker.js.map +1 -1
  1057. package/dist/frontend/ts7/semantic-checker.test.js +12 -9
  1058. package/dist/frontend/ts7/semantic-checker.test.js.map +1 -1
  1059. package/dist/frontend/ts7/semantic-model.d.ts +54 -24
  1060. package/dist/frontend/ts7/semantic-model.js +88 -16
  1061. package/dist/frontend/ts7/semantic-model.js.map +1 -1
  1062. package/dist/frontend/ts7/semantic-model.test.js +4 -4
  1063. package/dist/frontend/ts7/semantic-model.test.js.map +1 -1
  1064. package/dist/frontend/ts7/semantic-types.d.ts +7 -3
  1065. package/dist/frontend/ts7/semantic-types.js +1 -1
  1066. package/dist/frontend/ts7/semantic-types.js.map +1 -1
  1067. package/dist/frontend/ts7/session.d.ts +11 -11
  1068. package/dist/frontend/ts7/session.js +8 -5
  1069. package/dist/frontend/ts7/session.js.map +1 -1
  1070. package/dist/frontend/ts7/session.test.js +9 -5
  1071. package/dist/frontend/ts7/session.test.js.map +1 -1
  1072. package/dist/frontend/ts7/source-parser.d.ts +6 -2
  1073. package/dist/frontend/ts7/source-parser.js +24 -3
  1074. package/dist/frontend/ts7/source-parser.js.map +1 -1
  1075. package/dist/frontend/ts7/source-parser.test.js +38 -17
  1076. package/dist/frontend/ts7/source-parser.test.js.map +1 -1
  1077. package/dist/frontend/type-mapper.d.ts +122 -2
  1078. package/dist/frontend/type-mapper.js +2612 -695
  1079. package/dist/frontend/type-mapper.js.map +1 -1
  1080. package/dist/frontend/type-only-imports.d.ts +28 -0
  1081. package/dist/frontend/type-only-imports.js +122 -0
  1082. package/dist/frontend/type-only-imports.js.map +1 -0
  1083. package/dist/frontend/worker-target.js +8 -8
  1084. package/dist/frontend/worker-target.js.map +1 -1
  1085. package/dist/index.d.ts +3 -1
  1086. package/dist/index.js +47 -10
  1087. package/dist/index.js.map +1 -1
  1088. package/dist/ir/analysis.js +4 -2
  1089. package/dist/ir/analysis.js.map +1 -1
  1090. package/dist/ir/api.d.ts +1 -1
  1091. package/dist/ir/api.js +1 -1
  1092. package/dist/ir/api.js.map +1 -1
  1093. package/dist/ir/array-length-stability.d.ts +30 -0
  1094. package/dist/ir/array-length-stability.js +236 -0
  1095. package/dist/ir/array-length-stability.js.map +1 -0
  1096. package/dist/ir/array-length-stability.test.d.ts +1 -0
  1097. package/dist/ir/array-length-stability.test.js +113 -0
  1098. package/dist/ir/array-length-stability.test.js.map +1 -0
  1099. package/dist/ir/build.d.ts +2 -2
  1100. package/dist/ir/build.js +1 -1
  1101. package/dist/ir/build.js.map +1 -1
  1102. package/dist/ir/builtin-effects.js +139 -0
  1103. package/dist/ir/builtin-effects.js.map +1 -1
  1104. package/dist/ir/builtin-signatures.d.ts +1 -1
  1105. package/dist/ir/builtin-signatures.js +655 -25
  1106. package/dist/ir/builtin-signatures.js.map +1 -1
  1107. package/dist/ir/byte-numbers.js +3 -0
  1108. package/dist/ir/byte-numbers.js.map +1 -1
  1109. package/dist/ir/callback-specialization.d.ts +37 -0
  1110. package/dist/ir/callback-specialization.js +459 -0
  1111. package/dist/ir/callback-specialization.js.map +1 -0
  1112. package/dist/ir/callback-specialization.test.d.ts +1 -0
  1113. package/dist/ir/callback-specialization.test.js +208 -0
  1114. package/dist/ir/callback-specialization.test.js.map +1 -0
  1115. package/dist/ir/capture-values.d.ts +0 -1
  1116. package/dist/ir/capture-values.js +51 -40
  1117. package/dist/ir/capture-values.js.map +1 -1
  1118. package/dist/ir/constant-globals.test.js +1 -1
  1119. package/dist/ir/constant-tables.test.js +1 -1
  1120. package/dist/ir/field-values.test.js +1 -1
  1121. package/dist/ir/final-fields.test.js +1 -1
  1122. package/dist/ir/function-references.test.js +10 -1
  1123. package/dist/ir/function-references.test.js.map +1 -1
  1124. package/dist/ir/init-only-globals.test.js +1 -1
  1125. package/dist/ir/initializer-bindings.test.js +1 -1
  1126. package/dist/ir/int32-slots.d.ts +14 -0
  1127. package/dist/ir/int32-slots.js +119 -14
  1128. package/dist/ir/int32-slots.js.map +1 -1
  1129. package/dist/ir/int32-slots.test.js +29 -1
  1130. package/dist/ir/int32-slots.test.js.map +1 -1
  1131. package/dist/ir/integer-loop-facts.d.ts +16 -6
  1132. package/dist/ir/integer-loop-facts.js +143 -38
  1133. package/dist/ir/integer-loop-facts.js.map +1 -1
  1134. package/dist/ir/integer-loops.d.ts +1 -1
  1135. package/dist/ir/integer-loops.js +39 -9
  1136. package/dist/ir/integer-loops.js.map +1 -1
  1137. package/dist/ir/integer-loops.test.js +104 -0
  1138. package/dist/ir/integer-loops.test.js.map +1 -1
  1139. package/dist/ir/integer-ranges.d.ts +3 -0
  1140. package/dist/ir/integer-ranges.js +4 -6
  1141. package/dist/ir/integer-ranges.js.map +1 -1
  1142. package/dist/ir/integer-ranges.test.js +142 -1
  1143. package/dist/ir/integer-ranges.test.js.map +1 -1
  1144. package/dist/ir/intrinsic-signatures.js +6 -0
  1145. package/dist/ir/intrinsic-signatures.js.map +1 -1
  1146. package/dist/ir/ir.d.ts +234 -58
  1147. package/dist/ir/ir.js +123 -12
  1148. package/dist/ir/ir.js.map +1 -1
  1149. package/dist/ir/ir.test.js +10 -0
  1150. package/dist/ir/ir.test.js.map +1 -1
  1151. package/dist/ir/jsval.d.ts +8 -0
  1152. package/dist/ir/jsval.js +365 -0
  1153. package/dist/ir/jsval.js.map +1 -0
  1154. package/dist/ir/jsval.test.d.ts +1 -0
  1155. package/dist/ir/jsval.test.js +239 -0
  1156. package/dist/ir/jsval.test.js.map +1 -0
  1157. package/dist/ir/runtime-features.d.ts +150 -33
  1158. package/dist/ir/runtime-features.js +672 -339
  1159. package/dist/ir/runtime-features.js.map +1 -1
  1160. package/dist/ir/runtime-features.test.js +62 -0
  1161. package/dist/ir/runtime-features.test.js.map +1 -1
  1162. package/dist/ir/scalar-records.test.js +1 -1
  1163. package/dist/ir/self-captures.d.ts +33 -0
  1164. package/dist/ir/self-captures.js +245 -0
  1165. package/dist/ir/self-captures.js.map +1 -0
  1166. package/dist/ir/self-captures.test.d.ts +1 -0
  1167. package/dist/ir/self-captures.test.js +135 -0
  1168. package/dist/ir/self-captures.test.js.map +1 -0
  1169. package/dist/ir/serialize.d.ts +1 -1
  1170. package/dist/ir/serialize.js +7 -4
  1171. package/dist/ir/serialize.js.map +1 -1
  1172. package/dist/ir/tiers.d.ts +26 -0
  1173. package/dist/ir/tiers.js +101 -0
  1174. package/dist/ir/tiers.js.map +1 -0
  1175. package/dist/ir/tiers.test.d.ts +1 -0
  1176. package/dist/ir/tiers.test.js +140 -0
  1177. package/dist/ir/tiers.test.js.map +1 -0
  1178. package/dist/ir/traverse.js +107 -94
  1179. package/dist/ir/traverse.js.map +1 -1
  1180. package/dist/ir/traverse.test.js +33 -30
  1181. package/dist/ir/traverse.test.js.map +1 -1
  1182. package/dist/ir/unshare.js +65 -3
  1183. package/dist/ir/unshare.js.map +1 -1
  1184. package/dist/ir/unshare.test.js +1 -1
  1185. package/dist/ir/validate.js +220 -71
  1186. package/dist/ir/validate.js.map +1 -1
  1187. package/dist/ir/validate.test.js +64 -9
  1188. package/dist/ir/validate.test.js.map +1 -1
  1189. package/dist/library/fence-eval.test.js +1 -1
  1190. package/dist/library/int-infer.test.js +4 -4
  1191. package/dist/library/ir-policy.js +18 -0
  1192. package/dist/library/ir-policy.js.map +1 -1
  1193. package/dist/library/library-cache.d.ts +1 -0
  1194. package/dist/library/library-cache.js.map +1 -1
  1195. package/dist/library/library-cache.test.js +5 -5
  1196. package/dist/library/library-profile.d.ts +4 -4
  1197. package/dist/library/library-profile.js +35 -7
  1198. package/dist/library/library-profile.js.map +1 -1
  1199. package/dist/library/prepare.js +13 -1
  1200. package/dist/library/prepare.js.map +1 -1
  1201. package/dist/native/cli.js +5 -0
  1202. package/dist/native/cli.js.map +1 -1
  1203. package/dist/native/compiler.js +2 -2
  1204. package/dist/native/compiler.js.map +1 -1
  1205. package/dist/native/compiler.test.js +2 -2
  1206. package/dist/native/prepare.js +7 -0
  1207. package/dist/native/prepare.js.map +1 -1
  1208. package/dist/native/sanitizer.test.js +12 -0
  1209. package/dist/native/sanitizer.test.js.map +1 -1
  1210. package/dist/native/toolchain.d.ts +2 -0
  1211. package/dist/native/toolchain.js +10 -1
  1212. package/dist/native/toolchain.js.map +1 -1
  1213. package/dist/native/toolchain.test.js +39 -1
  1214. package/dist/native/toolchain.test.js.map +1 -1
  1215. package/dist/startup-cache.d.ts +1 -0
  1216. package/dist/startup-cache.js +1 -0
  1217. package/dist/startup-cache.js.map +1 -1
  1218. package/dist/wasm/base64.d.ts +5 -0
  1219. package/dist/wasm/base64.js +62 -0
  1220. package/dist/wasm/base64.js.map +1 -0
  1221. package/dist/wasm/binary.d.ts +36 -0
  1222. package/dist/wasm/binary.js +1976 -0
  1223. package/dist/wasm/binary.js.map +1 -0
  1224. package/dist/wasm/binary.test.d.ts +1 -0
  1225. package/dist/wasm/binary.test.js +190 -0
  1226. package/dist/wasm/binary.test.js.map +1 -0
  1227. package/dist/wasm/discover.d.ts +38 -0
  1228. package/dist/wasm/discover.js +377 -0
  1229. package/dist/wasm/discover.js.map +1 -0
  1230. package/dist/wasm/discover.test.d.ts +1 -0
  1231. package/dist/wasm/discover.test.js +24 -0
  1232. package/dist/wasm/discover.test.js.map +1 -0
  1233. package/dist/wasm/module.d.ts +151 -0
  1234. package/dist/wasm/module.js +575 -0
  1235. package/dist/wasm/module.js.map +1 -0
  1236. package/dist/wasm/translate.d.ts +48 -0
  1237. package/dist/wasm/translate.js +2129 -0
  1238. package/dist/wasm/translate.js.map +1 -0
  1239. package/dist/wasm/translate.test.d.ts +1 -0
  1240. package/dist/wasm/translate.test.js +207 -0
  1241. package/dist/wasm/translate.test.js.map +1 -0
  1242. package/package.json +21 -20
  1243. package/surface-manifest.json +332 -36
@@ -1,6 +1,8 @@
1
1
  import { isDirentShape, RUNTIME_EMITTER_CLASS, RUNTIME_EVENT_CLASS, RUNTIME_EVENT_TARGET_CLASS, RUNTIME_STREAM_CLASSES, } from "./ir.js";
2
2
  import { everyModuleNode } from "./traverse.js";
3
3
  const DYN_ASYNC_LIB_FNS = new Set([
4
+ // DEP0040 rides the dyn-async unit's warning machinery.
5
+ "punycode.warn",
4
6
  "fs.callbackValue",
5
7
  "fs.callbackCall",
6
8
  "fs.callbackGlob",
@@ -10,6 +12,7 @@ const DYN_ASYNC_LIB_FNS = new Set([
10
12
  "dyn.promiseAll",
11
13
  "dyn.promiseAllSettled",
12
14
  "dyn.promiseAny",
15
+ "dyn.promiseResolve",
13
16
  "process.onUncaughtException",
14
17
  "process.offUncaughtException",
15
18
  "process.onUnhandledRejection",
@@ -22,6 +25,7 @@ const DYN_ASYNC_LIB_FNS = new Set([
22
25
  "process.emitWarningText",
23
26
  "process.deprecationFlag",
24
27
  "process.setDeprecationFlag",
28
+ "process.setEmitWarning",
25
29
  // The performance timeline (scr_perf.c, linked with this unit for its
26
30
  // MaxPerformanceEntryBufferExceededWarning).
27
31
  "perf.mark",
@@ -60,6 +64,18 @@ const DYN_ASYNC_LIB_FNS = new Set([
60
64
  "dc.chanUnbindStore",
61
65
  "dc.chanRunStores",
62
66
  ]);
67
+ /** The libCalls that enter AsyncLocalStorage stores (RuntimeFeatures
68
+ * asyncContext). */
69
+ const ASYNC_CONTEXT_LIB_FNS = new Set([
70
+ "als.run",
71
+ "als.exitRun",
72
+ "als.enterWith",
73
+ "dc.chanBindStore",
74
+ "dc.chanRunStores",
75
+ // getTestContext() reads the test runner's entry in the same snapshot.
76
+ "test.hasContext",
77
+ "test.context",
78
+ ]);
63
79
  const LEGACY_URL_LIB_FNS = new Set([
64
80
  "url.legacyParse",
65
81
  "url.legacyFormat",
@@ -73,330 +89,665 @@ const UTIL_CALLABLE_LIB_FNS = new Set([
73
89
  "util.callbackify",
74
90
  "util.debuglog",
75
91
  ]);
92
+ /** Entry points that link the regex unit: the regex and glob matchers (fs.glob's walk compiles its patterns with the glob matcher), and readline's terminal unit (scr_readline_tty.c), which measures with the regex unit's stripVTControlCharacters. */
93
+ const REGEX_LIB_FNS = new Set([
94
+ "dyn.nativeRegexIs",
95
+ "fs.callbackGlob",
96
+ "fs.globSync",
97
+ "fs.globTypesSync",
98
+ "fsp.globError",
99
+ "fsp.globStrings",
100
+ "fsp.globTypes",
101
+ "path.matchesGlob",
102
+ "path.win32MatchesGlob",
103
+ "regexp.escape",
104
+ "rl.cursorPos",
105
+ "rl.keypressStdin",
106
+ "rl.keypressStream",
107
+ "stdin.onKeypress",
108
+ "util.stripVTControlCharacters",
109
+ ]);
110
+ /** TextDecoder entry points over the legacy encodings. */
111
+ const LEGACY_TEXT_DECODER_LIB_FNS = new Set([
112
+ "text.decodeLegacy",
113
+ "text.decodeLegacyOptions",
114
+ "text.decodeStream",
115
+ ]);
116
+ /** Signal-taking readline, stream and timers/promises entry points, which register abort listeners. */
117
+ const ABORT_SIGNAL_LIB_FNS = new Set([
118
+ "events.onceSignal",
119
+ "http.clientSignal",
120
+ "http.requestDyn",
121
+ "http.requestDynCb",
122
+ "https.requestDyn",
123
+ "https.requestDynCb",
124
+ "rl.createSignal",
125
+ "rl.questionAsyncSignal",
126
+ "sp.finishedOptsSignal",
127
+ "sp.pipelineOptsSignal",
128
+ "stream.addAbortSignal",
129
+ "stream.addAbortSignalFn",
130
+ "stream.finishedOptsSignal",
131
+ "tp.schedulerWaitSignal",
132
+ "tp.setImmediateSignal",
133
+ "tp.setTimeoutSignal",
134
+ ]);
135
+ /** Entry points that link the stream unit (with STREAM_LIB_PREFIXES). */
136
+ const STREAM_LIB_FNS = new Set([
137
+ "child.stdioStream",
138
+ "console.bind",
139
+ "crypto.hashStream",
140
+ "crypto.hashStreamPiped",
141
+ "fileHandle.createReadStream",
142
+ "fileHandle.createWriteStream",
143
+ "fs.createReadStream",
144
+ "fs.createWriteStream",
145
+ "rl.inputFromDyn",
146
+ "rl.outputFromDyn",
147
+ "sp.finished",
148
+ "sp.pipeline",
149
+ "sp.pipelineStages",
150
+ "stream.addAbortSignal",
151
+ "stream.addAbortSignalFn",
152
+ "stream.destroy",
153
+ "stream.destroyErr",
154
+ "stream.errored",
155
+ "stream.prop",
156
+ "stream.dynNative",
157
+ "stream.dynNativePipe",
158
+ "stream.pipeDyn",
159
+ "stream.unpipeDyn",
160
+ "stream.stdioWritable",
161
+ "stream.unboxDyn",
162
+ "stream.workerStdio",
163
+ ]);
164
+ /** libCall name prefixes that link the stream unit. */
165
+ const STREAM_LIB_PREFIXES = [
166
+ "duplex.",
167
+ "fs.fsStream",
168
+ "passthrough.",
169
+ "readable.",
170
+ "sc.",
171
+ "sp.finishedOpts",
172
+ "sp.pipelineOpts",
173
+ "stream.finishedOpts",
174
+ "stream.pipelineStages",
175
+ "stream.set",
176
+ "transform.",
177
+ "writable.",
178
+ "zlib.stream",
179
+ ];
180
+ /** The Readable operators and Readable.from over a compiled generator or a checked-dynamic iterator (scr_stream_ops.c), which await through the dyn-async unit (with READABLE_DYN_ASYNC_PREFIXES). */
181
+ const READABLE_DYN_ASYNC_LIB_FNS = new Set([
182
+ "readable.fromAsyncGen",
183
+ "readable.fromAsyncIter",
184
+ "readable.fromDone",
185
+ "readable.fromDyn",
186
+ "readable.fromIter",
187
+ ]);
188
+ /** libCall name prefixes of the Readable entry points that await through the dyn-async unit. */
189
+ const READABLE_DYN_ASYNC_PREFIXES = ["readable.fromGen", "readable.op"];
190
+ /** Entry points that link the dyn-invoke unit. */
191
+ const DYN_INVOKE_LIB_FNS = new Set([
192
+ "stream.dynNative",
193
+ "stream.dynNativePipe",
194
+ "stream.pipeDyn",
195
+ "stream.unpipeDyn",
196
+ "dyn.arrayProtoCall",
197
+ "dyn.arrayPrototype",
198
+ "dyn.builtinFunction",
199
+ "dyn.builtinMethod",
200
+ "dyn.defineProperty",
201
+ "dyn.defineProps",
202
+ "dyn.definePrototypeProps",
203
+ "dyn.functionApply",
204
+ "dyn.globalConstructor",
205
+ "dyn.objCreateWithProperties",
206
+ "dyn.objectTag",
207
+ ]);
208
+ /** Member names whose constant-key dynamic reads answer the inherited Object.prototype member through the dyn-invoke unit. Mirrors expr-dynamic.ts INHERITED_OBJECT_MEMBERS (the IR layer does not import the backend). */
209
+ const INHERITED_MEMBER_NAMES = new Set([
210
+ "constructor",
211
+ "hasOwnProperty",
212
+ "propertyIsEnumerable",
213
+ "toString",
214
+ "valueOf",
215
+ ]);
216
+ /** Entry points that link the child-process unit (with CHILD_PROCESS_LIB_PREFIXES): the fork IPC channel on the process object. */
217
+ const CHILD_PROCESS_LIB_FNS = new Set([
218
+ "process.connected",
219
+ "process.disconnect",
220
+ "process.forkTarget",
221
+ "process.ipcOpen",
222
+ "process.onDisconnect",
223
+ "process.onMessage",
224
+ "process.send",
225
+ "process.sendCb",
226
+ ]);
227
+ /** libCall name prefixes that link the child-process unit. */
228
+ const CHILD_PROCESS_LIB_PREFIXES = ["child.", "cp.", "spawnRes.", "writer."];
229
+ /** The entry points scr_dyn_builtin_class.c defines. The unit calls
230
+ * listeners through the dyn-invoke unit, renders unhandled 'error'
231
+ * payloads through the inspect unit, creates EventEmitter's private
232
+ * symbols through the symbol unit and shares defaultMaxListeners with the
233
+ * emitter unit, so each of them links all five. */
234
+ const BUILTIN_CLASS_LIB_FNS = [
235
+ "dyn.builtinClass",
236
+ // the stream classes, through scr_dyn_builtin_stream.c
237
+ "dyn.builtinStreamClass",
238
+ "dyn.builtinInstanceOf",
239
+ "dyn.functionInstanceOf",
240
+ ];
241
+ /** Entry points that link the symbol unit, besides the sym. and disposable. families. */
242
+ const SYMBOL_LIB_FNS = new Set([
243
+ // EventEmitter's kShapeMode and kCapture properties
244
+ ...BUILTIN_CLASS_LIB_FNS,
245
+ "dyn.usingDispose",
246
+ "dyn.usingMethod",
247
+ "util.isDeepStrictEqual",
248
+ ]);
249
+ /** Entry points that link the querystring unit. */
250
+ const QS_LIB_FNS = new Set(["qs.parse", "qs.stringify", "qs.unescape"]);
251
+ /** Entry points that link the parseArgs unit. */
252
+ const PARSE_ARGS_LIB_FNS = new Set([
253
+ "util.isDeepStrictEqual",
254
+ "util.parseArgs",
255
+ "util.styleText",
256
+ ]);
257
+ /** String methods whose Unicode tables live in the regex unit's libunicode. */
258
+ const CASE_MAPPING_STR_METHODS = new Set([
259
+ "normalize",
260
+ "toLowerCase",
261
+ "toUpperCase",
262
+ ]);
263
+ /** Array methods that link the copying unit. */
264
+ const COPYING_ARR_METHODS = new Set([
265
+ "toReversed",
266
+ "toSpliced",
267
+ "with",
268
+ "withUndefined",
269
+ ]);
270
+ /** Typed-array methods that link the copying unit. */
271
+ const COPYING_BYTES_METHODS = new Set([
272
+ "join",
273
+ "toArray",
274
+ "toReversed",
275
+ "with",
276
+ ]);
76
277
  /** Inspect types and expressions together in one traversal. This is a fresh
77
278
  * snapshot: callers may mutate an IR module between compilation passes. */
279
+ /** The checked-dynamic undefined value (dynUndefinedExpr). */
280
+ export function isDynUndefined(e) {
281
+ return e.kind === "dynFrom" && e.value.kind === "unitLit" && e.value.unit === "undefined";
282
+ }
78
283
  export function moduleRuntimeFeatures(mod) {
79
284
  return scanRuntimeFeatures(mod);
80
285
  }
81
- function scanRuntimeFeatures(mod, stopAt) {
82
- const features = {
83
- regex: false,
84
- copying: false,
85
- legacyTextDecoder: false,
86
- fileHandle: false,
87
- fetch: false,
88
- // Subclasses of the runtime EventTarget/Event bases tear down and box
89
- // through the EventTarget unit even when no event.* libCall survives.
90
- eventTarget: (mod.classes ?? []).some((c) => c.name === RUNTIME_EVENT_TARGET_CLASS || c.name === RUNTIME_EVENT_CLASS),
91
- processEvents: false,
92
- emitter: mod.workers === true || (mod.classes ?? []).some((c) => c.name === RUNTIME_EMITTER_CLASS),
93
- stream: (mod.classes ?? []).some((c) => RUNTIME_STREAM_CLASSES.has(c.name)),
94
- zlib: false,
95
- dc: false,
96
- assert: false,
97
- dynInvoke: mod.workers === true,
98
- dynAsync: mod.workers === true ||
286
+ /** Whether boxing a value of type `t` as dyn boxes a promise, which goes
287
+ * through scr_async_dyn.c: a promise, a function whose result type holds
288
+ * one, or a record, array, tuple, union, Map or Set that holds either. */
289
+ function boxesPromise(t, tables, seen) {
290
+ switch (t.kind) {
291
+ case "promise":
292
+ return true;
293
+ case "func":
294
+ // A boxed function converts its result to dyn, which boxes any promise
295
+ // the result type holds.
296
+ return boxesPromise(t.ret, tables, seen);
297
+ case "array":
298
+ case "set":
299
+ return boxesPromise(t.elem, tables, seen);
300
+ case "map":
301
+ return boxesPromise(t.key, tables, seen) || boxesPromise(t.value, tables, seen);
302
+ case "record": {
303
+ if (seen.has(t.shapeId))
304
+ return false;
305
+ seen.add(t.shapeId);
306
+ const shape = tables.records.get(t.shapeId);
307
+ return shape?.fields.some((f) => boxesPromise(f.type, tables, seen)) ?? false;
308
+ }
309
+ case "union": {
310
+ if (seen.has(t.unionId))
311
+ return false;
312
+ seen.add(t.unionId);
313
+ const def = tables.unions.get(t.unionId);
314
+ return def?.arms.some((a) => boxesPromise(a, tables, seen)) ?? false;
315
+ }
316
+ case "object": {
317
+ // A boxed class instance exposes its fields as dyn values (Object.keys,
318
+ // spread, inspection), boxing a promise any field holds. It
319
+ // materializes inherited fields too, and the instance can be any
320
+ // subclass.
321
+ const key = `class:${t.className}`;
322
+ if (seen.has(key))
323
+ return false;
324
+ seen.add(key);
325
+ const related = (def) => {
326
+ for (let c = def; c; c = c.base ? tables.classes.get(c.base) : undefined)
327
+ if (c.name === t.className)
328
+ return true;
329
+ return false;
330
+ };
331
+ for (const def of tables.classes.values()) {
332
+ if (!related(def))
333
+ continue;
334
+ for (let c = def; c; c = c.base ? tables.classes.get(c.base) : undefined)
335
+ if (c.fields.some((f) => boxesPromise(f.type, tables, seen)))
336
+ return true;
337
+ }
338
+ return false;
339
+ }
340
+ default:
341
+ return false;
342
+ }
343
+ }
344
+ /** The libCall fns served by the OPTIONAL events unit (scr_events.c):
345
+ * process signal/exit listeners and the piped-stdin surface. */
346
+ const PROCESS_EVENT_LIB_FNS = new Set([
347
+ "process.stdio",
348
+ "process.onSignal",
349
+ "process.offSignal",
350
+ "process.onExit",
351
+ "process.offExit",
352
+ "stdin.onData",
353
+ "stdin.onEnd",
354
+ "stdin.onError",
355
+ "stdin.nextChunk",
356
+ // node:readline rides the stdin unit (scr_readline.c links beside
357
+ // scr_events.c under the same gate).
358
+ "rl.create",
359
+ "rl.createSignal",
360
+ "rl.question",
361
+ "rl.questionAsync",
362
+ "rl.questionAsyncSignal",
363
+ "rl.questionDyn",
364
+ "rl.questionAsyncDyn",
365
+ "rl.questionAsyncSignalDyn",
366
+ "rl.close",
367
+ "rl.pause",
368
+ "rl.resume",
369
+ "rl.prompt",
370
+ "rl.promptWith",
371
+ "rl.setPrompt",
372
+ "rl.setPromptDyn",
373
+ "rl.getPrompt",
374
+ "rl.write",
375
+ "rl.writeKey",
376
+ "rl.on",
377
+ "rl.iterOpen",
378
+ "rl.iterNext",
379
+ "rl.iterReturn",
380
+ "rl.checkOptions",
381
+ "rl.checkCompleter",
382
+ "rl.setOptions",
383
+ "rl.setHistory",
384
+ "rl.history",
385
+ "rl.numProp",
386
+ "rl.terminal",
387
+ "rl.line",
388
+ "rl.isTerminal",
389
+ "rl.isPromises",
390
+ "rl.cursor",
391
+ "rl.seq",
392
+ "rl.moves",
393
+ "rl.cursorPos",
394
+ "rl.keypressStdin",
395
+ "rl.keypressStream",
396
+ "stdin.onKeypress",
397
+ "rl.uiOpen",
398
+ "rl.uiOpenStream",
399
+ "rl.uiCursorTo",
400
+ "rl.uiMoveCursor",
401
+ "rl.uiClearLine",
402
+ "rl.uiClearScreenDown",
403
+ "rl.uiRollback",
404
+ "rl.uiCommit",
405
+ ]);
406
+ /** The legacy http2.* libCalls implemented by scr_http.c/scr_tls.c (the
407
+ * allowHTTP1 compatibility slice) — they must NOT pull scr_http2.c, so
408
+ * divergence-57 binaries keep their exact link line. */
409
+ const HTTP2_LEGACY_FNS = new Set([
410
+ "http2.streamNoop",
411
+ "http2.streamUndefCall",
412
+ ]);
413
+ /** Names that reach the extended process-stream surface (the
414
+ * SCR_STDIO_EXTENDED events unit): stdin.setEncoding and 'resize'. */
415
+ const STDIO_EXTENDED_NAMES = new Set(["setEncoding", "resize"]);
416
+ /** Gives every rule in the table one type. */
417
+ const rule = (r) => r;
418
+ /* The HTTP, HTTPS, HTTP/2 and TLS surfaces, which link the net unit. */
419
+ const NET_PREFIXES = ["net.", "http.", "tls.", "https.", "http2."];
420
+ /** One rule per runtime feature, sorted by name. A new feature is an
421
+ * entry here and its line in noRuntimeFeatures; RuntimeFeatures, the scan
422
+ * and its early exit derive from this table. */
423
+ const RUNTIME_FEATURE_RULES = {
424
+ assert: rule({ prefixes: ["assert."] }),
425
+ /** The program enters AsyncLocalStorage stores (store.run, enterWith,
426
+ * a diagnostics_channel store binding) or reads the test runner's
427
+ * context (getTestContext): its timer, immediate, tick and
428
+ * queueMicrotask scheduling goes through the runtime's *_als entry
429
+ * points, which carry the active stores into each callback. */
430
+ asyncContext: rule({ fns: [...ASYNC_CONTEXT_LIB_FNS] }),
431
+ /** scr_wasm.c converts i64 values through BigInt. */
432
+ bigint: rule({
433
+ fns: ["process.hrtimeValue"],
434
+ prefixes: ["bigint.", "wasm."],
435
+ types: ["bigint"],
436
+ }),
437
+ childProcess: rule({
438
+ fns: [...CHILD_PROCESS_LIB_FNS],
439
+ prefixes: CHILD_PROCESS_LIB_PREFIXES,
440
+ types: ["child", "childStream", "childWriter", "spawnRes"],
441
+ }),
442
+ /** scr_cipher.c over the mbedTLS archive; DEP0182 reports through the
443
+ * process-warning unit, and unknown output encodings render through the
444
+ * inspect unit. */
445
+ cipher: rule({ fns: ["crypto.cipherNew"] }),
446
+ copying: rule({
447
+ expr: (node, _tables) => (node.kind === "arrIntrinsic" && COPYING_ARR_METHODS.has(node.method)) ||
448
+ (node.kind === "bytesIntrinsic" && COPYING_BYTES_METHODS.has(node.method)),
449
+ }),
450
+ dc: rule({ prefixes: ["dc."] }),
451
+ /** dns.lookup lives in the dgram unit. */
452
+ dgram: rule({ prefixes: ["dgram.", "dns."], types: ["dgramSocket"] }),
453
+ /** node:dns/promises: scr_dns_promises.c over the dgram unit. */
454
+ dnsPromises: rule({ fns: ["dns.promisesLookup", "dns.promisesLookupService"] }),
455
+ dynAsync: rule({
456
+ initial: (mod) => mod.workers === true ||
99
457
  mod.functions.some((fn) => fn.async === true && fn.generator === undefined && fn.returnType.kind === "dyn"),
100
- inspect: false,
101
- childProcess: false,
102
- net: false,
103
- // A Dirent row converted to dyn carries Node's Symbol(type) key
104
- // (scr_dyn_dirent_finish, defined in scr_symbol.c).
105
- symbol: (mod.records ?? []).some(isDirentShape),
458
+ // The legacy url functions and crypto.createCipheriv emit their
459
+ // deprecation warnings through the dyn-async unit; scr_wasm.c boxes its
460
+ // handles and promises through it.
461
+ fns: [
462
+ ...DYN_ASYNC_LIB_FNS,
463
+ ...READABLE_DYN_ASYNC_LIB_FNS,
464
+ ...LEGACY_URL_LIB_FNS,
465
+ "crypto.cipherNew",
466
+ ],
467
+ prefixes: [...READABLE_DYN_ASYNC_PREFIXES, "wasm."],
468
+ expr: (node, tables) => (node.kind === "awaitExpr" && node.type.kind === "dyn") ||
469
+ // Rejection reasons cross as dyn values (allSettled's records, any's
470
+ // AggregateError list).
471
+ (node.kind === "intrinsic" &&
472
+ (node.name === "promise.allSettled" || node.name === "promise.any")) ||
473
+ (node.kind === "dynFrom" && boxesPromise(node.value.type, tables(), new Set())),
474
+ }),
475
+ /** EventEmitter and the stream classes as untyped constructor values
476
+ * (scr_dyn_builtin_class.c), which call listeners through the dyn-invoke
477
+ * unit, render unhandled 'error' payloads through the inspect unit and
478
+ * create EventEmitter's private symbols through the symbol unit. */
479
+ dynBuiltinClass: rule({
480
+ fns: [...BUILTIN_CLASS_LIB_FNS],
481
+ }),
482
+ /** The stream classes as untyped constructor values with their stream
483
+ * half (scr_dyn_builtin_stream.c): native stream state for constructor
484
+ * functions, over the stream unit. */
485
+ dynBuiltinStream: rule({ fns: ["dyn.builtinStreamClass"] }),
486
+ dynInvoke: rule({
487
+ initial: (mod) => mod.workers === true,
488
+ fns: [...DYN_INVOKE_LIB_FNS, ...UTIL_CALLABLE_LIB_FNS, ...BUILTIN_CLASS_LIB_FNS],
489
+ // Constant-key reads of Object.prototype member names answer the
490
+ // inherited member through scr_dyn_invoke.c.
491
+ expr: (node, _tables) => node.kind === "dynInvoke" ||
492
+ (node.kind === "dynKeyGet" &&
493
+ node.key.kind === "strLit" &&
494
+ INHERITED_MEMBER_NAMES.has(node.key.value)),
495
+ }),
496
+ /** The program has dynamic-tier jsval operations (js.* builtins, the
497
+ * jsval pass): links the scr_js_* units (two-tier design I3). */
498
+ dynTier: rule({ prefixes: ["js."] }),
499
+ /** Checked-dynamic stream slots test values and pipe into JavaScript
500
+ * stream objects (scr_stream_dyn.c). */
501
+ streamDyn: rule({
502
+ fns: ["stream.dynNative", "stream.dynNativePipe", "stream.pipeDyn", "stream.unpipeDyn"],
503
+ }),
504
+ /** The stream unit emits through the emitter unit, also when the
505
+ * program constructs no stream (a pipeline of functions). */
506
+ emitter: rule({
507
+ initial: (mod) => mod.workers === true || (mod.classes ?? []).some((c) => c.name === RUNTIME_EMITTER_CLASS),
508
+ fns: [...STREAM_LIB_FNS, ...BUILTIN_CLASS_LIB_FNS],
509
+ prefixes: ["emitter.", ...STREAM_LIB_PREFIXES],
510
+ }),
511
+ /** Subclasses of the runtime EventTarget/Event bases tear down and box
512
+ * through the EventTarget unit even when no event.* libCall survives. */
513
+ eventTarget: rule({
514
+ initial: (mod) => (mod.classes ?? []).some((c) => c.name === RUNTIME_EVENT_TARGET_CLASS || c.name === RUNTIME_EVENT_CLASS),
515
+ fns: ["events.addAbortListener", ...ABORT_SIGNAL_LIB_FNS],
516
+ prefixes: ["event."],
517
+ }),
518
+ /** events.once(emitter, name, { signal }) (scr_events_once_signal.c). */
519
+ eventsOnceSignal: rule({ fns: ["events.onceSignal"] }),
520
+ fetch: rule({ prefixes: ["fetch."] }),
521
+ fileHandle: rule({ types: ["fileHandle"] }),
522
+ fsWatch: rule({ prefixes: ["fs.watch", "watcher."], types: ["fsWatcher"] }),
523
+ /** A socket 'lookup' listener: the C main installs the net unit's
524
+ * lookup records (scr_net_lookup_install). */
525
+ netLookup: rule({ fns: ["net.sockOnLookup"] }),
526
+ http: rule({
527
+ prefixes: ["http.", "tls.", "https.", "http2."],
528
+ types: ["httpReq", "httpRes", "httpClientReq", "secureCtx"],
529
+ }),
530
+ /** The real h2 surface (scr_http2.c); the legacy http2.* libCalls of the
531
+ * allowHTTP1 slice are served by scr_http.c and scr_tls.c. */
532
+ http2: rule({
533
+ libCall: (node) => node.fn.startsWith("http2.") && !HTTP2_LEGACY_FNS.has(node.fn),
534
+ types: ["http2Session", "http2Stream"],
535
+ }),
536
+ /** scr_test.c renders thrown strings with the inspect unit's string
537
+ * formatting; scr_util_callable.c wraps the inspect unit; readline's
538
+ * terminal unit prints completion errors through it when there is a
539
+ * completer. */
540
+ inspect: rule({
541
+ fns: [
542
+ "global.native",
543
+ "util.styleText",
544
+ "crypto.cipherNew",
545
+ ...BUILTIN_CLASS_LIB_FNS,
546
+ ...UTIL_CALLABLE_LIB_FNS,
547
+ ],
548
+ prefixes: ["insp.", "console.", "test."],
549
+ libCall: (node) => node.fn === "rl.terminal" && !isDynUndefined(node.args[3]),
550
+ }),
551
+ legacyTextDecoder: rule({ fns: [...LEGACY_TEXT_DECODER_LIB_FNS] }),
552
+ /** The program calls mock.timers members: its timer calls go through
553
+ * scr_test.c's mock-aware entry points. */
554
+ mockTimers: rule({ prefixes: ["test.mockTimers", "test.ctxMockTimers"] }),
555
+ net: rule({
556
+ prefixes: NET_PREFIXES,
557
+ types: [
558
+ "netServer",
559
+ "netSocket",
560
+ "http2Session",
561
+ "http2Stream",
562
+ "httpReq",
563
+ "httpRes",
564
+ "httpClientReq",
565
+ "secureCtx",
566
+ ],
567
+ }),
568
+ nodeTest: rule({ prefixes: ["test."], types: ["testCtx"] }),
569
+ /** scr_util_callable.c reads options through the parseArgs unit's
570
+ * descriptors. */
571
+ parseArgs: rule({ fns: [...PARSE_ARGS_LIB_FNS, ...UTIL_CALLABLE_LIB_FNS] }),
572
+ /** perf_hooks event-loop metrics (eventLoopUtilization,
573
+ * monitorEventLoopDelay): scr_perf_loop.c. */
574
+ perfLoop: rule({ fns: ["perf.idleTime"], prefixes: ["perf.loop", "perf.eld"] }),
575
+ processEvents: rule({ fns: [...PROCESS_EVENT_LIB_FNS, "util.styleText"], types: ["procStream"] }),
576
+ /** scr_url_legacy.c parses and stringifies queries. */
577
+ qs: rule({ fns: [...QS_LIB_FNS, ...LEGACY_URL_LIB_FNS] }),
578
+ /** scr_url_legacy.c lowercases and normalizes hostnames with the regex
579
+ * unit's libunicode, NODE_DEBUG matching in scr_util_callable.c and
580
+ * readline's terminal unit use the regex unit, and locale case mapping
581
+ * runs its default conversion. */
582
+ regex: rule({
583
+ fns: [
584
+ ...REGEX_LIB_FNS,
585
+ ...LEGACY_URL_LIB_FNS,
586
+ ...UTIL_CALLABLE_LIB_FNS,
587
+ "rl.terminal",
588
+ "str.localeCase",
589
+ ],
590
+ expr: (node, _tables) => node.kind === "regexLit" ||
591
+ node.kind === "regexIntrinsic" ||
592
+ (node.kind === "strIntrinsic" && CASE_MAPPING_STR_METHODS.has(node.method)),
593
+ types: ["regex"],
594
+ }),
595
+ searchParams: rule({ fns: ["url.searchParams"], prefixes: ["sp."], types: ["searchParams"] }),
596
+ /** stdin setEncoding / string data listeners / stdio 'resize' events. A
597
+ * typed string 'data' listener takes setEncoding-decoded chunks; the
598
+ * process stream object's setEncoding and 'resize' members are reached
599
+ * by name (dynamic member calls and event-name strings). */
600
+ stdioExtended: rule({
601
+ libCall: (node) => node.fn === "stdin.onData" &&
602
+ node.args[0]?.type.kind === "func" &&
603
+ node.args[0].type.params[0]?.kind === "string",
604
+ expr: (node, _tables) => (node.kind === "dynInvoke" && STDIO_EXTENDED_NAMES.has(node.method)) ||
605
+ (node.kind === "strLit" && STDIO_EXTENDED_NAMES.has(node.value)),
606
+ }),
607
+ stream: rule({
608
+ initial: (mod) => (mod.classes ?? []).some((c) => RUNTIME_STREAM_CLASSES.has(c.name)),
609
+ fns: [...STREAM_LIB_FNS, "dyn.builtinStreamClass"],
610
+ prefixes: STREAM_LIB_PREFIXES,
611
+ }),
612
+ /** A Dirent row converted to dyn carries Node's Symbol(type) key
613
+ * (scr_dyn_dirent_finish, defined in scr_symbol.c). */
614
+ symbol: rule({
615
+ initial: (mod) => (mod.records ?? []).some(isDirentShape),
616
+ fns: [...SYMBOL_LIB_FNS],
617
+ prefixes: ["sym.", "disposable."],
618
+ types: ["symbol"],
619
+ }),
620
+ tls: rule({ prefixes: ["tls.", "https.", "http2."], types: ["secureCtx"] }),
621
+ tlsCa: rule({ prefixes: ["tlsca."] }),
622
+ /** process.emitWarning is assigned (process.setEmitWarning). */
623
+ warningReplace: rule({ fns: ["process.setEmitWarning"] }),
624
+ /** The WebAssembly API (scr_wasm.c). */
625
+ wasm: rule({ prefixes: ["wasm."] }),
626
+ /** crypto.subtle importKey/sign/verify/digest and CryptoKey:
627
+ * scr_webcrypto.c. */
628
+ webcrypto: rule({ prefixes: ["webcrypto."] }),
629
+ zlib: rule({ prefixes: ["zlib."] }),
630
+ };
631
+ const RUNTIME_FEATURE_NAMES = [];
632
+ for (const name in RUNTIME_FEATURE_RULES)
633
+ RUNTIME_FEATURE_NAMES.push(name);
634
+ /** Every feature off, in the table's order. TypeScript rejects this
635
+ * literal when it misses a feature or names one without a rule. */
636
+ function noRuntimeFeatures() {
637
+ return {
638
+ assert: false,
639
+ asyncContext: false,
106
640
  bigint: false,
107
- searchParams: false,
108
- qs: false,
109
- parseArgs: false,
110
- fsWatch: false,
111
- nodeTest: false,
641
+ childProcess: false,
642
+ cipher: false,
643
+ copying: false,
644
+ dc: false,
112
645
  dgram: false,
646
+ dnsPromises: false,
647
+ dynAsync: false,
648
+ dynBuiltinClass: false,
649
+ dynBuiltinStream: false,
650
+ dynInvoke: false,
651
+ dynTier: false,
652
+ emitter: false,
653
+ eventTarget: false,
654
+ eventsOnceSignal: false,
655
+ fetch: false,
656
+ fileHandle: false,
657
+ fsWatch: false,
658
+ netLookup: false,
113
659
  http: false,
114
660
  http2: false,
661
+ inspect: false,
662
+ legacyTextDecoder: false,
663
+ mockTimers: false,
664
+ net: false,
665
+ nodeTest: false,
666
+ parseArgs: false,
667
+ perfLoop: false,
668
+ processEvents: false,
669
+ qs: false,
670
+ regex: false,
671
+ searchParams: false,
672
+ stdioExtended: false,
673
+ stream: false,
674
+ streamDyn: false,
675
+ symbol: false,
115
676
  tls: false,
116
677
  tlsCa: false,
117
- cipher: false,
678
+ warningReplace: false,
679
+ wasm: false,
680
+ webcrypto: false,
681
+ zlib: false,
118
682
  };
683
+ }
684
+ const ruleOf = (name) => RUNTIME_FEATURE_RULES[name];
685
+ /** The rules indexed for the scan: features by libCall name and by type
686
+ * kind, and the prefix and predicate conditions in rule order. */
687
+ const FEATURES_BY_FN = new Map();
688
+ const FEATURES_BY_TYPE = new Map();
689
+ const FEATURE_PREFIXES = [];
690
+ const FEATURE_LIBCALL_TESTS = [];
691
+ const FEATURE_EXPR_TESTS = [];
692
+ for (const name of RUNTIME_FEATURE_NAMES) {
693
+ const rule = ruleOf(name);
694
+ for (const fn of rule.fns ?? []) {
695
+ const names = FEATURES_BY_FN.get(fn);
696
+ if (names)
697
+ names.push(name);
698
+ else
699
+ FEATURES_BY_FN.set(fn, [name]);
700
+ }
701
+ for (const kind of rule.types ?? []) {
702
+ const names = FEATURES_BY_TYPE.get(kind);
703
+ if (names)
704
+ names.push(name);
705
+ else
706
+ FEATURES_BY_TYPE.set(kind, [name]);
707
+ }
708
+ for (const prefix of rule.prefixes ?? [])
709
+ FEATURE_PREFIXES.push({ prefix, name });
710
+ if (rule.libCall)
711
+ FEATURE_LIBCALL_TESTS.push(name);
712
+ if (rule.expr)
713
+ FEATURE_EXPR_TESTS.push(name);
714
+ }
715
+ function scanRuntimeFeatures(mod, stopAt) {
716
+ const features = noRuntimeFeatures();
717
+ for (const name of RUNTIME_FEATURE_NAMES) {
718
+ const initial = ruleOf(name).initial;
719
+ if (initial && initial(mod))
720
+ features[name] = true;
721
+ }
119
722
  const keepGoing = () => stopAt === undefined || !features[stopAt];
723
+ let tables;
724
+ const typeTables = () => (tables ??= {
725
+ records: new Map((mod.records ?? []).map((r) => [r.id, r])),
726
+ unions: new Map((mod.unions ?? []).map((u) => [u.id, u])),
727
+ classes: new Map((mod.classes ?? []).map((c) => [c.name, c])),
728
+ });
120
729
  const expr = (node) => {
121
730
  if (node.kind === "libCall") {
122
731
  const fn = node.fn;
123
- if (fn === "regexp.escape" ||
124
- fn === "dyn.nativeRegexIs" ||
125
- fn === "util.stripVTControlCharacters" ||
126
- fn === "path.matchesGlob" ||
127
- fn === "path.win32MatchesGlob" ||
128
- // fs.glob's walk compiles its patterns with the glob matcher.
129
- fn === "fs.globSync" ||
130
- fn === "fs.globTypesSync" ||
131
- fn === "fs.callbackGlob" ||
132
- fn === "fsp.globStrings" ||
133
- fn === "fsp.globTypes" ||
134
- fn === "fsp.globError")
135
- features.regex = true;
136
- if (fn === "text.decodeLegacy" ||
137
- fn === "text.decodeLegacyOptions" ||
138
- fn === "text.decodeStream")
139
- features.legacyTextDecoder = true;
140
- if (fn.startsWith("fetch."))
141
- features.fetch = true;
142
- if (fn.startsWith("event.") || fn === "events.addAbortListener")
143
- features.eventTarget = true;
144
- // Signal-taking readline entry points call addAbortListener.
145
- if (fn === "rl.createSignal" ||
146
- fn === "rl.questionAsyncSignal" ||
147
- fn === "stream.addAbortSignal" ||
148
- fn === "stream.addAbortSignalFn" ||
149
- fn === "sp.finishedOptsSignal" ||
150
- fn === "sp.pipelineOptsSignal" ||
151
- fn === "stream.finishedOptsSignal") {
152
- features.eventTarget = true;
153
- }
154
- if (PROCESS_EVENT_LIB_FNS.has(fn))
155
- features.processEvents = true;
156
- if (fn.startsWith("emitter."))
157
- features.emitter = true;
158
- if (fn.startsWith("readable.") ||
159
- fn.startsWith("writable.") ||
160
- fn.startsWith("duplex.") ||
161
- fn.startsWith("transform.") ||
162
- fn.startsWith("passthrough.") ||
163
- fn.startsWith("sc.") ||
164
- fn.startsWith("stream.set") ||
165
- fn === "stream.destroy" ||
166
- fn === "stream.destroyErr" ||
167
- fn === "stream.prop" ||
168
- fn === "stream.errored" ||
169
- fn === "sp.finished" ||
170
- fn === "sp.pipeline" ||
171
- fn === "sp.pipelineStages" ||
172
- fn.startsWith("stream.pipelineStages") ||
173
- fn === "console.bind" ||
174
- fn === "stream.addAbortSignal" ||
175
- fn === "stream.addAbortSignalFn" ||
176
- fn.startsWith("sp.finishedOpts") ||
177
- fn.startsWith("sp.pipelineOpts") ||
178
- fn.startsWith("stream.finishedOpts") ||
179
- fn.startsWith("zlib.stream") ||
180
- fn === "fs.createReadStream" ||
181
- fn === "fs.createWriteStream" ||
182
- fn === "fileHandle.createReadStream" ||
183
- fn === "fileHandle.createWriteStream" ||
184
- fn.startsWith("fs.fsStream")) {
185
- // the stream unit emits through the emitter unit, also when the
186
- // program constructs no stream (a pipeline of functions)
187
- features.stream = true;
188
- features.emitter = true;
189
- }
190
- if (fn.startsWith("zlib."))
191
- features.zlib = true;
192
- // The Readable operators and Readable.from over a compiled generator
193
- // (scr_stream_ops.c) await through the dyn-async unit.
194
- if (fn.startsWith("readable.op") ||
195
- fn.startsWith("readable.fromGen") ||
196
- fn === "readable.fromAsyncGen" ||
197
- fn === "readable.fromDone")
198
- features.dynAsync = true;
199
- if (fn.startsWith("dc."))
200
- features.dc = true;
201
- if (fn.startsWith("assert."))
202
- features.assert = true;
203
- if (fn === "dyn.defineProps" ||
204
- fn === "dyn.definePrototypeProps" ||
205
- fn === "dyn.defineProperty" ||
206
- fn === "dyn.objCreateWithProperties" ||
207
- fn === "dyn.arrayProtoCall" ||
208
- fn === "dyn.arrayPrototype" ||
209
- fn === "dyn.functionApply" ||
210
- fn === "dyn.builtinMethod")
211
- features.dynInvoke = true;
212
- if (DYN_ASYNC_LIB_FNS.has(fn))
213
- features.dynAsync = true;
214
- if (fn.startsWith("insp.") ||
215
- fn.startsWith("console.") ||
216
- fn === "global.native" ||
217
- fn === "util.styleText")
218
- features.inspect = true;
219
- if (fn.startsWith("cp.") ||
220
- fn.startsWith("child.") ||
221
- fn.startsWith("writer.") ||
222
- fn.startsWith("spawnRes.") ||
223
- fn === "process.forkTarget" ||
224
- fn === "process.connected" ||
225
- fn === "process.send" ||
226
- fn === "process.sendCb" ||
227
- fn === "process.disconnect" ||
228
- fn === "process.onMessage" ||
229
- fn === "process.onDisconnect")
230
- features.childProcess = true;
231
- if (fn.startsWith("net."))
232
- features.net = true;
233
- if (fn.startsWith("http.")) {
234
- features.net = true;
235
- features.http = true;
236
- }
237
- if (fn.startsWith("tls.") || fn.startsWith("https.") || fn.startsWith("http2.")) {
238
- features.net = true;
239
- features.http = true;
240
- features.tls = true;
241
- }
242
- if (fn.startsWith("http2.") && !HTTP2_LEGACY_FNS.has(fn))
243
- features.http2 = true;
244
- if (fn.startsWith("sym.") || fn === "util.isDeepStrictEqual")
245
- features.symbol = true;
246
- if (fn === "process.hrtimeValue")
247
- features.bigint = true;
248
- if (fn.startsWith("bigint."))
249
- features.bigint = true;
250
- if (fn.startsWith("sp.") || fn === "url.searchParams")
251
- features.searchParams = true;
252
- if (fn === "qs.parse" || fn === "qs.stringify" || fn === "qs.unescape")
253
- features.qs = true;
254
- // scr_url_legacy.c lowercases and normalizes hostnames (the regex
255
- // unit's libunicode), parses and stringifies queries, and emits its
256
- // deprecation warnings through the dyn-async unit.
257
- if (LEGACY_URL_LIB_FNS.has(fn)) {
258
- features.regex = true;
259
- features.qs = true;
260
- features.dynAsync = true;
261
- }
262
- if (fn === "util.parseArgs" || fn === "util.isDeepStrictEqual" || fn === "util.styleText")
263
- features.parseArgs = true;
264
- if (fn === "util.styleText")
265
- features.processEvents = true;
266
- // scr_util_callable.c: dyn wrappers over the descriptor, inspect,
267
- // regex (NODE_DEBUG matching) and terminal-color units.
268
- if (UTIL_CALLABLE_LIB_FNS.has(fn)) {
269
- features.parseArgs = true;
270
- features.inspect = true;
271
- features.dynInvoke = true;
272
- features.regex = true;
273
- }
274
- if (fn.startsWith("fs.watch") || fn.startsWith("watcher."))
275
- features.fsWatch = true;
276
- // scr_test.c renders thrown strings in the failing-tests section with
277
- // the inspect unit's string formatting.
278
- if (fn.startsWith("test.")) {
279
- features.nodeTest = true;
280
- features.inspect = true;
281
- }
282
- if (fn.startsWith("dgram.") || fn.startsWith("dns."))
283
- features.dgram = true;
284
- if (fn.startsWith("tlsca."))
285
- features.tlsCa = true;
286
- // scr_cipher.c over the mbedTLS archive; DEP0182 reports through the
287
- // process-warning unit, and unknown output encodings render through
288
- // the inspect unit.
289
- if (fn === "crypto.cipherNew") {
290
- features.cipher = true;
291
- features.dynAsync = true;
292
- features.inspect = true;
293
- }
732
+ for (const name of FEATURES_BY_FN.get(fn) ?? [])
733
+ features[name] = true;
734
+ for (const { prefix, name } of FEATURE_PREFIXES)
735
+ if (!features[name] && fn.startsWith(prefix))
736
+ features[name] = true;
737
+ for (const name of FEATURE_LIBCALL_TESTS)
738
+ if (!features[name] && ruleOf(name).libCall(node))
739
+ features[name] = true;
294
740
  }
295
741
  else {
296
- switch (node.kind) {
297
- case "regexLit":
298
- case "regexIntrinsic":
299
- features.regex = true;
300
- break;
301
- case "strIntrinsic":
302
- if (node.method === "toLowerCase" ||
303
- node.method === "toUpperCase" ||
304
- node.method === "normalize")
305
- features.regex = true;
306
- break;
307
- case "arrIntrinsic":
308
- if (node.method === "toReversed" ||
309
- node.method === "toSpliced" ||
310
- node.method === "with" ||
311
- node.method === "withUndefined")
312
- features.copying = true;
313
- break;
314
- case "bytesIntrinsic":
315
- if (node.method === "toReversed" ||
316
- node.method === "with" ||
317
- node.method === "join" ||
318
- node.method === "toArray")
319
- features.copying = true;
320
- break;
321
- case "dynInvoke":
322
- features.dynInvoke = true;
323
- break;
324
- case "awaitExpr":
325
- if (node.type.kind === "dyn")
326
- features.dynAsync = true;
327
- break;
328
- case "intrinsic":
329
- // Rejection reasons cross as dyn values (allSettled's records,
330
- // any's AggregateError list).
331
- if (node.name === "promise.allSettled" || node.name === "promise.any")
332
- features.dynAsync = true;
333
- break;
334
- case "dynFrom": {
335
- const boxed = node.value.type;
336
- if (boxed.kind === "promise" || (boxed.kind === "func" && boxed.ret.kind === "promise"))
337
- features.dynAsync = true;
338
- break;
339
- }
340
- }
742
+ for (const name of FEATURE_EXPR_TESTS)
743
+ if (!features[name] && ruleOf(name).expr(node, typeTables))
744
+ features[name] = true;
341
745
  }
342
746
  return keepGoing();
343
747
  };
344
748
  const type = (node) => {
345
- switch (node.kind) {
346
- case "regex":
347
- features.regex = true;
348
- break;
349
- case "fileHandle":
350
- features.fileHandle = true;
351
- break;
352
- case "procStream":
353
- features.processEvents = true;
354
- break;
355
- case "child":
356
- case "childStream":
357
- case "childWriter":
358
- case "spawnRes":
359
- features.childProcess = true;
360
- break;
361
- case "netServer":
362
- case "netSocket":
363
- features.net = true;
364
- break;
365
- case "http2Session":
366
- case "http2Stream":
367
- features.net = true;
368
- features.http2 = true;
369
- break;
370
- case "httpReq":
371
- case "httpRes":
372
- case "httpClientReq":
373
- features.net = true;
374
- features.http = true;
375
- break;
376
- case "secureCtx":
377
- features.net = true;
378
- features.http = true;
379
- features.tls = true;
380
- break;
381
- case "symbol":
382
- features.symbol = true;
383
- break;
384
- case "bigint":
385
- features.bigint = true;
386
- break;
387
- case "searchParams":
388
- features.searchParams = true;
389
- break;
390
- case "fsWatcher":
391
- features.fsWatch = true;
392
- break;
393
- case "testCtx":
394
- features.nodeTest = true;
395
- break;
396
- case "dgramSocket":
397
- features.dgram = true;
398
- break;
399
- }
749
+ for (const name of FEATURES_BY_TYPE.get(node.kind) ?? [])
750
+ features[name] = true;
400
751
  return keepGoing();
401
752
  };
402
753
  if (keepGoing())
@@ -435,37 +786,6 @@ export function moduleUsesFileHandle(mod) {
435
786
  export function moduleUsesFetch(mod) {
436
787
  return scanRuntimeFeatures(mod, "fetch").fetch;
437
788
  }
438
- /** The libCall fns served by the OPTIONAL events unit (scr_events.c):
439
- * process signal/exit listeners and the piped-stdin surface. */
440
- const PROCESS_EVENT_LIB_FNS = new Set([
441
- "process.stdio",
442
- "process.onSignal",
443
- "process.offSignal",
444
- "process.onExit",
445
- "process.offExit",
446
- "stdin.onData",
447
- "stdin.onEnd",
448
- "stdin.onError",
449
- "stdin.nextChunk",
450
- // node:readline rides the stdin unit (scr_readline.c links beside
451
- // scr_events.c under the same gate).
452
- "rl.create",
453
- "rl.createSignal",
454
- "rl.question",
455
- "rl.questionAsync",
456
- "rl.questionAsyncSignal",
457
- "rl.close",
458
- "rl.pause",
459
- "rl.resume",
460
- "rl.prompt",
461
- "rl.setPrompt",
462
- "rl.getPrompt",
463
- "rl.write",
464
- "rl.on",
465
- "rl.iterOpen",
466
- "rl.iterNext",
467
- "rl.iterReturn",
468
- ]);
469
789
  /** True when the module uses the process-events surface — the link switch
470
790
  * that pulls scr_events.c into the binary and has the emitted main call
471
791
  * scr_events_install (native-toolchain.ts + emitter; the scr_regex/scr_fetch/scr_zlib
@@ -496,6 +816,13 @@ export function moduleUsesEmitter(mod) {
496
816
  export function moduleUsesStream(mod) {
497
817
  return scanRuntimeFeatures(mod, "stream").stream;
498
818
  }
819
+ /** True when the program links scr_dyn_builtin_stream.c (stream classes
820
+ * as untyped constructor values): its runtime streams box through that
821
+ * unit's view and checked casts to the stream classes accept constructor-
822
+ * function streams. Programs without it keep their exact code. */
823
+ export function moduleUsesDynBuiltinStream(mod) {
824
+ return scanRuntimeFeatures(mod, "dynBuiltinStream").dynBuiltinStream;
825
+ }
499
826
  export const NPM_COMPRESS_MIN = 1024;
500
827
  export function moduleUsesZlib(mod) {
501
828
  return scanRuntimeFeatures(mod, "zlib").zlib;
@@ -611,6 +938,13 @@ export function moduleUsesFsWatch(mod) {
611
938
  export function moduleUsesNodeTest(mod) {
612
939
  return scanRuntimeFeatures(mod, "nodeTest").nodeTest;
613
940
  }
941
+ /** True when the module calls a mock.timers member (a test.mockTimers* or
942
+ * test.ctxMockTimers* libCall). The emitter then routes the timer calls
943
+ * through scr_test.c's mock-aware entry points; other programs keep the
944
+ * loop's timer functions. */
945
+ export function moduleUsesMockTimers(mod) {
946
+ return scanRuntimeFeatures(mod, "mockTimers").mockTimers;
947
+ }
614
948
  /** True when the module contains any dgram.* or dns.* libCall — the
615
949
  * link switch that pulls scr_dgram.c into the binary and has the emitted
616
950
  * main call scr_dgram_install (native-toolchain.ts + emitter; the scr_net gating
@@ -626,13 +960,6 @@ export function moduleUsesDgram(mod) {
626
960
  export function moduleUsesHttpServer(mod) {
627
961
  return scanRuntimeFeatures(mod, "http").http;
628
962
  }
629
- /** The legacy http2.* libCalls implemented by scr_http.c/scr_tls.c (the
630
- * allowHTTP1 compatibility slice) — they must NOT pull scr_http2.c, so
631
- * divergence-57 binaries keep their exact link line. */
632
- const HTTP2_LEGACY_FNS = new Set([
633
- "http2.streamNoop",
634
- "http2.streamUndefCall",
635
- ]);
636
963
  /** True when the module uses the REAL h2 surface (scr_http2.c): any core
637
964
  * http2.* libCall, or an h2 handle type left behind by a fenced statement
638
965
  * (its emitted release call needs the unit — the moduleUsesNet story). */
@@ -657,4 +984,10 @@ export function moduleUsesTls(mod) {
657
984
  export function moduleUsesTlsCa(mod) {
658
985
  return scanRuntimeFeatures(mod, "tlsCa").tlsCa;
659
986
  }
987
+ /** True when the module has dynamic-tier jsval operations: the link switch
988
+ * for the scr_js_* runtime units (two-tier design I3). Programs without
989
+ * them never link a scr_js_ symbol. */
990
+ export function moduleUsesDynTier(mod) {
991
+ return scanRuntimeFeatures(mod, "dynTier").dynTier;
992
+ }
660
993
  //# sourceMappingURL=runtime-features.js.map