@scriptc/compiler 0.3.6 → 0.4.0

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