@scriptc/compiler 0.4.0 → 0.4.2

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 (866) hide show
  1. package/ambient/scriptc-node-fallback.d.ts +617 -83
  2. package/dist/backend/cycle-analysis.d.ts +2 -1
  3. package/dist/backend/cycle-analysis.js +4 -4
  4. package/dist/backend/cycle-analysis.js.map +1 -1
  5. package/dist/backend/cycle-mutability.d.ts +2 -1
  6. package/dist/backend/cycle-mutability.js +2 -2
  7. package/dist/backend/cycle-mutability.js.map +1 -1
  8. package/dist/backend/executable-features.js +10 -0
  9. package/dist/backend/executable-features.js.map +1 -1
  10. package/dist/backend/immutability.d.ts +2 -1
  11. package/dist/backend/immutability.js +2 -2
  12. package/dist/backend/immutability.js.map +1 -1
  13. package/dist/backend/library-pack.js +7 -0
  14. package/dist/backend/library-pack.js.map +1 -1
  15. package/dist/backend/link-plan-core.d.ts +2 -0
  16. package/dist/backend/link-plan-core.js +2 -0
  17. package/dist/backend/link-plan-core.js.map +1 -1
  18. package/dist/backend/link-plan.d.ts +1 -0
  19. package/dist/backend/link-plan.js +1 -0
  20. package/dist/backend/link-plan.js.map +1 -1
  21. package/dist/backend/llvm/alloc.d.ts +7 -3
  22. package/dist/backend/llvm/alloc.js +7 -4
  23. package/dist/backend/llvm/alloc.js.map +1 -1
  24. package/dist/backend/llvm/array-search.js +4 -1
  25. package/dist/backend/llvm/array-search.js.map +1 -1
  26. package/dist/backend/llvm/bytes-loop-versions.d.ts +23 -2
  27. package/dist/backend/llvm/bytes-loop-versions.js +115 -19
  28. package/dist/backend/llvm/bytes-loop-versions.js.map +1 -1
  29. package/dist/backend/llvm/bytes-loop-versions.test.js +131 -0
  30. package/dist/backend/llvm/bytes-loop-versions.test.js.map +1 -1
  31. package/dist/backend/llvm/classes.d.ts +99 -2
  32. package/dist/backend/llvm/classes.js +436 -57
  33. package/dist/backend/llvm/classes.js.map +1 -1
  34. package/dist/backend/llvm/classes.test.js +235 -16
  35. package/dist/backend/llvm/classes.test.js.map +1 -1
  36. package/dist/backend/llvm/common.d.ts +21 -5
  37. package/dist/backend/llvm/common.js +50 -5
  38. package/dist/backend/llvm/common.js.map +1 -1
  39. package/dist/backend/llvm/constant-callbacks.js +8 -4
  40. package/dist/backend/llvm/constant-callbacks.js.map +1 -1
  41. package/dist/backend/llvm/constant-callbacks.test.js +4 -4
  42. package/dist/backend/llvm/constant-callbacks.test.js.map +1 -1
  43. package/dist/backend/llvm/counted-loops.d.ts +4 -1
  44. package/dist/backend/llvm/counted-loops.js +62 -23
  45. package/dist/backend/llvm/counted-loops.js.map +1 -1
  46. package/dist/backend/llvm/dense-array-access.d.ts +3 -1
  47. package/dist/backend/llvm/dense-array-access.js +61 -38
  48. package/dist/backend/llvm/dense-array-access.js.map +1 -1
  49. package/dist/backend/llvm/dense-array-access.test.js +4 -0
  50. package/dist/backend/llvm/dense-array-access.test.js.map +1 -1
  51. package/dist/backend/llvm/dense-array-loops.d.ts +19 -16
  52. package/dist/backend/llvm/dense-array-loops.js +49 -13
  53. package/dist/backend/llvm/dense-array-loops.js.map +1 -1
  54. package/dist/backend/llvm/dense-array-loops.test.js +50 -14
  55. package/dist/backend/llvm/dense-array-loops.test.js.map +1 -1
  56. package/dist/backend/llvm/dyn.d.ts +34 -1
  57. package/dist/backend/llvm/dyn.js +393 -14
  58. package/dist/backend/llvm/dyn.js.map +1 -1
  59. package/dist/backend/llvm/emit-function.js +27 -8
  60. package/dist/backend/llvm/emit-function.js.map +1 -1
  61. package/dist/backend/llvm/emit-module.js +67 -39
  62. package/dist/backend/llvm/emit-module.js.map +1 -1
  63. package/dist/backend/llvm/emit-statements.d.ts +3 -25
  64. package/dist/backend/llvm/emit-statements.js +414 -37
  65. package/dist/backend/llvm/emit-statements.js.map +1 -1
  66. package/dist/backend/llvm/emitter.d.ts +159 -22
  67. package/dist/backend/llvm/emitter.js +573 -89
  68. package/dist/backend/llvm/emitter.js.map +1 -1
  69. package/dist/backend/llvm/expr-async.js +19 -0
  70. package/dist/backend/llvm/expr-async.js.map +1 -1
  71. package/dist/backend/llvm/expr-bytes.d.ts +5 -2
  72. package/dist/backend/llvm/expr-bytes.js +110 -40
  73. package/dist/backend/llvm/expr-bytes.js.map +1 -1
  74. package/dist/backend/llvm/expr-calls.d.ts +1 -1
  75. package/dist/backend/llvm/expr-calls.js +51 -26
  76. package/dist/backend/llvm/expr-calls.js.map +1 -1
  77. package/dist/backend/llvm/expr-containers.js +27 -14
  78. package/dist/backend/llvm/expr-containers.js.map +1 -1
  79. package/dist/backend/llvm/expr-control.js +2 -3
  80. package/dist/backend/llvm/expr-control.js.map +1 -1
  81. package/dist/backend/llvm/expr-dynamic.js +95 -5
  82. package/dist/backend/llvm/expr-dynamic.js.map +1 -1
  83. package/dist/backend/llvm/expr-primitives.js +29 -11
  84. package/dist/backend/llvm/expr-primitives.js.map +1 -1
  85. package/dist/backend/llvm/expr-primitives.test.js +55 -0
  86. package/dist/backend/llvm/expr-primitives.test.js.map +1 -1
  87. package/dist/backend/llvm/expr-stream-bridges.js +48 -20
  88. package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
  89. package/dist/backend/llvm/expr-stream-callbacks.js +131 -35
  90. package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
  91. package/dist/backend/llvm/integer-clones.js +3 -3
  92. package/dist/backend/llvm/integer-clones.js.map +1 -1
  93. package/dist/backend/llvm/js-ic.d.ts +18 -0
  94. package/dist/backend/llvm/js-ic.js +712 -0
  95. package/dist/backend/llvm/js-ic.js.map +1 -0
  96. package/dist/backend/llvm/jsval.js +139 -11
  97. package/dist/backend/llvm/jsval.js.map +1 -1
  98. package/dist/backend/llvm/lib-dispatch.js +10 -0
  99. package/dist/backend/llvm/lib-dispatch.js.map +1 -1
  100. package/dist/backend/llvm/lib-filesystem.js +61 -0
  101. package/dist/backend/llvm/lib-filesystem.js.map +1 -1
  102. package/dist/backend/llvm/lib-http2.d.ts +4 -0
  103. package/dist/backend/llvm/lib-http2.js +20 -17
  104. package/dist/backend/llvm/lib-http2.js.map +1 -1
  105. package/dist/backend/llvm/lib-process.js +69 -17
  106. package/dist/backend/llvm/lib-process.js.map +1 -1
  107. package/dist/backend/llvm/lib-shared.js +75 -1
  108. package/dist/backend/llvm/lib-shared.js.map +1 -1
  109. package/dist/backend/llvm/lib-stream.js +65 -28
  110. package/dist/backend/llvm/lib-stream.js.map +1 -1
  111. package/dist/backend/llvm/lib-tls.js +23 -0
  112. package/dist/backend/llvm/lib-tls.js.map +1 -1
  113. package/dist/backend/llvm/local-array-reads.js +91 -61
  114. package/dist/backend/llvm/local-array-reads.js.map +1 -1
  115. package/dist/backend/llvm/local-array-reads.test.js +14 -0
  116. package/dist/backend/llvm/local-array-reads.test.js.map +1 -1
  117. package/dist/backend/llvm/map-number-lookup.d.ts +20 -4
  118. package/dist/backend/llvm/map-number-lookup.js +43 -7
  119. package/dist/backend/llvm/map-number-lookup.js.map +1 -1
  120. package/dist/backend/llvm/narrow-guards.js +64 -0
  121. package/dist/backend/llvm/narrow-guards.js.map +1 -1
  122. package/dist/backend/llvm/publish.d.ts +11 -1
  123. package/dist/backend/llvm/publish.js +80 -22
  124. package/dist/backend/llvm/publish.js.map +1 -1
  125. package/dist/backend/llvm/publish.test.js +3 -0
  126. package/dist/backend/llvm/publish.test.js.map +1 -1
  127. package/dist/backend/llvm/receivers.js +1 -1
  128. package/dist/backend/llvm/receivers.js.map +1 -1
  129. package/dist/backend/llvm/reference-writes.js +2 -0
  130. package/dist/backend/llvm/reference-writes.js.map +1 -1
  131. package/dist/backend/llvm/regex-matchers.js +161 -14
  132. package/dist/backend/llvm/regex-matchers.js.map +1 -1
  133. package/dist/backend/llvm/regex-matchers.test.js +18 -0
  134. package/dist/backend/llvm/regex-matchers.test.js.map +1 -1
  135. package/dist/backend/llvm/regions.js +2 -2
  136. package/dist/backend/llvm/regions.js.map +1 -1
  137. package/dist/backend/llvm/regions.test.js +7 -1
  138. package/dist/backend/llvm/regions.test.js.map +1 -1
  139. package/dist/backend/llvm/shapes.d.ts +17 -9
  140. package/dist/backend/llvm/shapes.js +21 -17
  141. package/dist/backend/llvm/shapes.js.map +1 -1
  142. package/dist/backend/llvm/speculative-integers.d.ts +20 -1
  143. package/dist/backend/llvm/speculative-integers.js +94 -6
  144. package/dist/backend/llvm/speculative-integers.js.map +1 -1
  145. package/dist/backend/llvm/speculative-integers.test.js +55 -1
  146. package/dist/backend/llvm/speculative-integers.test.js.map +1 -1
  147. package/dist/backend/llvm/string-lifetimes.test.js +2 -1
  148. package/dist/backend/llvm/string-lifetimes.test.js.map +1 -1
  149. package/dist/backend/llvm/string-reads.d.ts +4 -1
  150. package/dist/backend/llvm/string-reads.js +88 -4
  151. package/dist/backend/llvm/string-reads.js.map +1 -1
  152. package/dist/backend/llvm/thread-slots.test.js +5 -4
  153. package/dist/backend/llvm/thread-slots.test.js.map +1 -1
  154. package/dist/backend/llvm/wasm-modules.d.ts +6 -5
  155. package/dist/backend/llvm/wasm-modules.js +32 -9
  156. package/dist/backend/llvm/wasm-modules.js.map +1 -1
  157. package/dist/backend/mangle.d.ts +8 -0
  158. package/dist/backend/mangle.js +12 -0
  159. package/dist/backend/mangle.js.map +1 -1
  160. package/dist/backend/native/contracts.d.ts +40 -2
  161. package/dist/backend/native/executable.js +40 -7
  162. package/dist/backend/native/executable.js.map +1 -1
  163. package/dist/backend/native/library.js +3 -1
  164. package/dist/backend/native/library.js.map +1 -1
  165. package/dist/backend/native-codegen.d.ts +17 -6
  166. package/dist/backend/native-codegen.js +55 -9
  167. package/dist/backend/native-codegen.js.map +1 -1
  168. package/dist/backend/native-codegen.test.js +18 -14
  169. package/dist/backend/native-codegen.test.js.map +1 -1
  170. package/dist/backend/native-link-info-core.d.ts +30 -2
  171. package/dist/backend/native-link-info-core.js.map +1 -1
  172. package/dist/backend/native-profile.d.ts +32 -0
  173. package/dist/backend/native-profile.js +39 -0
  174. package/dist/backend/native-profile.js.map +1 -0
  175. package/dist/backend/native-profile.test.d.ts +1 -0
  176. package/dist/backend/native-profile.test.js +58 -0
  177. package/dist/backend/native-profile.test.js.map +1 -0
  178. package/dist/backend/native-tools.d.ts +14 -0
  179. package/dist/backend/native-tools.js +13 -0
  180. package/dist/backend/native-tools.js.map +1 -1
  181. package/dist/backend/optimization.d.ts +2 -2
  182. package/dist/backend/runtime-abi.d.ts +2 -2
  183. package/dist/backend/runtime-abi.js +2 -2
  184. package/dist/backend/runtime-pack-core.d.ts +4 -0
  185. package/dist/backend/runtime-pack-core.js +4 -0
  186. package/dist/backend/runtime-pack-core.js.map +1 -1
  187. package/dist/backend/runtime-pack-targets.test.js +7 -1
  188. package/dist/backend/runtime-pack-targets.test.js.map +1 -1
  189. package/dist/backend/runtime-pack.d.ts +0 -21
  190. package/dist/backend/runtime-pack.js +0 -29
  191. package/dist/backend/runtime-pack.js.map +1 -1
  192. package/dist/backend/runtime-pack.test.js +12 -69
  193. package/dist/backend/runtime-pack.test.js.map +1 -1
  194. package/dist/backend/target-diagnostics.js +38 -1
  195. package/dist/backend/target-diagnostics.js.map +1 -1
  196. package/dist/backend/warm-cache.js +6 -0
  197. package/dist/backend/warm-cache.js.map +1 -1
  198. package/dist/cli/command.js +89 -7
  199. package/dist/cli/command.js.map +1 -1
  200. package/dist/cli/host.d.ts +3 -0
  201. package/dist/cli/output-options.d.ts +2 -0
  202. package/dist/cli/output-options.js +9 -0
  203. package/dist/cli/output-options.js.map +1 -1
  204. package/dist/cli/usage.d.ts +15 -1
  205. package/dist/cli/usage.js +30 -2
  206. package/dist/cli/usage.js.map +1 -1
  207. package/dist/compile-types.d.ts +9 -0
  208. package/dist/contracts/check.js +2 -3
  209. package/dist/contracts/check.js.map +1 -1
  210. package/dist/coverage/report.d.ts +7 -2
  211. package/dist/coverage/report.js +18 -0
  212. package/dist/coverage/report.js.map +1 -1
  213. package/dist/coverage/verdict-cache.d.ts +1 -0
  214. package/dist/coverage/verdict-cache.js +4 -0
  215. package/dist/coverage/verdict-cache.js.map +1 -1
  216. package/dist/coverage/verdict-semantic.js +4 -0
  217. package/dist/coverage/verdict-semantic.js.map +1 -1
  218. package/dist/diagnostics/diagnostic.js.map +1 -1
  219. package/dist/diagnostics/dynamic-tier.d.ts +40 -0
  220. package/dist/diagnostics/dynamic-tier.js +57 -0
  221. package/dist/diagnostics/dynamic-tier.js.map +1 -0
  222. package/dist/diagnostics/envelope.d.ts +2 -1
  223. package/dist/diagnostics/envelope.js +5 -2
  224. package/dist/diagnostics/envelope.js.map +1 -1
  225. package/dist/executable/executable-cache.d.ts +32 -0
  226. package/dist/executable/executable-cache.js +65 -7
  227. package/dist/executable/executable-cache.js.map +1 -1
  228. package/dist/executable/executable-cache.test.js +50 -3
  229. package/dist/executable/executable-cache.test.js.map +1 -1
  230. package/dist/executable/prepare.js +3 -1
  231. package/dist/executable/prepare.js.map +1 -1
  232. package/dist/frontend/analysis.js +1 -0
  233. package/dist/frontend/analysis.js.map +1 -1
  234. package/dist/frontend/arguments-usage.d.ts +8 -0
  235. package/dist/frontend/arguments-usage.js +98 -0
  236. package/dist/frontend/arguments-usage.js.map +1 -1
  237. package/dist/frontend/arguments-usage.test.d.ts +1 -0
  238. package/dist/frontend/arguments-usage.test.js +32 -0
  239. package/dist/frontend/arguments-usage.test.js.map +1 -0
  240. package/dist/frontend/builtin-package-aliases.d.ts +24 -0
  241. package/dist/frontend/builtin-package-aliases.js +133 -0
  242. package/dist/frontend/builtin-package-aliases.js.map +1 -0
  243. package/dist/frontend/builtin-package-aliases.test.d.ts +1 -0
  244. package/dist/frontend/builtin-package-aliases.test.js +48 -0
  245. package/dist/frontend/builtin-package-aliases.test.js.map +1 -0
  246. package/dist/frontend/dispose-hook.d.ts +2 -0
  247. package/dist/frontend/dispose-hook.js +14 -0
  248. package/dist/frontend/dispose-hook.js.map +1 -0
  249. package/dist/frontend/dts-paths.d.ts +4 -0
  250. package/dist/frontend/dts-paths.js +9 -1
  251. package/dist/frontend/dts-paths.js.map +1 -1
  252. package/dist/frontend/jsx-entities.d.ts +4 -0
  253. package/dist/frontend/jsx-entities.js +259 -0
  254. package/dist/frontend/jsx-entities.js.map +1 -0
  255. package/dist/frontend/jsx-source.d.ts +71 -0
  256. package/dist/frontend/jsx-source.js +781 -0
  257. package/dist/frontend/jsx-source.js.map +1 -0
  258. package/dist/frontend/jsx-source.test.d.ts +1 -0
  259. package/dist/frontend/jsx-source.test.js +200 -0
  260. package/dist/frontend/jsx-source.test.js.map +1 -0
  261. package/dist/frontend/literal-values.test.js +8 -9
  262. package/dist/frontend/literal-values.test.js.map +1 -1
  263. package/dist/frontend/lowering/array-indexed-mutation.js +2 -1
  264. package/dist/frontend/lowering/array-indexed-mutation.js.map +1 -1
  265. package/dist/frontend/lowering/array-values.js +3 -2
  266. package/dist/frontend/lowering/array-values.js.map +1 -1
  267. package/dist/frontend/lowering/binding-analysis.d.ts +1 -1
  268. package/dist/frontend/lowering/binding-analysis.js +2 -2
  269. package/dist/frontend/lowering/binding-analysis.js.map +1 -1
  270. package/dist/frontend/lowering/builtins/arguments.d.ts +3 -0
  271. package/dist/frontend/lowering/builtins/arguments.js +30 -15
  272. package/dist/frontend/lowering/builtins/arguments.js.map +1 -1
  273. package/dist/frontend/lowering/builtins/atomics.js +10 -6
  274. package/dist/frontend/lowering/builtins/atomics.js.map +1 -1
  275. package/dist/frontend/lowering/builtins/builtin-class-dyn.d.ts +8 -0
  276. package/dist/frontend/lowering/builtins/builtin-class-dyn.js +50 -1
  277. package/dist/frontend/lowering/builtins/builtin-class-dyn.js.map +1 -1
  278. package/dist/frontend/lowering/builtins/callable-aliases.js +3 -2
  279. package/dist/frontend/lowering/builtins/callable-aliases.js.map +1 -1
  280. package/dist/frontend/lowering/builtins/child-process-async.js +2 -1
  281. package/dist/frontend/lowering/builtins/child-process-async.js.map +1 -1
  282. package/dist/frontend/lowering/builtins/child-process-sync.js +2 -1
  283. package/dist/frontend/lowering/builtins/child-process-sync.js.map +1 -1
  284. package/dist/frontend/lowering/builtins/crypto.d.ts +7 -2
  285. package/dist/frontend/lowering/builtins/crypto.js +63 -4
  286. package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
  287. package/dist/frontend/lowering/builtins/date-classes.d.ts +46 -0
  288. package/dist/frontend/lowering/builtins/date-classes.js +477 -0
  289. package/dist/frontend/lowering/builtins/date-classes.js.map +1 -0
  290. package/dist/frontend/lowering/builtins/dates.d.ts +11 -1
  291. package/dist/frontend/lowering/builtins/dates.js +55 -26
  292. package/dist/frontend/lowering/builtins/dates.js.map +1 -1
  293. package/dist/frontend/lowering/builtins/dh.d.ts +15 -0
  294. package/dist/frontend/lowering/builtins/dh.js +151 -0
  295. package/dist/frontend/lowering/builtins/dh.js.map +1 -0
  296. package/dist/frontend/lowering/builtins/disposable-stack.js +2 -1
  297. package/dist/frontend/lowering/builtins/disposable-stack.js.map +1 -1
  298. package/dist/frontend/lowering/builtins/ecdh.d.ts +21 -0
  299. package/dist/frontend/lowering/builtins/ecdh.js +208 -0
  300. package/dist/frontend/lowering/builtins/ecdh.js.map +1 -0
  301. package/dist/frontend/lowering/builtins/errors.d.ts +15 -0
  302. package/dist/frontend/lowering/builtins/errors.js +110 -0
  303. package/dist/frontend/lowering/builtins/errors.js.map +1 -1
  304. package/dist/frontend/lowering/builtins/filesystem-calls.d.ts +1 -1
  305. package/dist/frontend/lowering/builtins/filesystem-calls.js +23 -17
  306. package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
  307. package/dist/frontend/lowering/builtins/filesystem.js +6 -4
  308. package/dist/frontend/lowering/builtins/filesystem.js.map +1 -1
  309. package/dist/frontend/lowering/builtins/fs-paths.d.ts +15 -0
  310. package/dist/frontend/lowering/builtins/fs-paths.js +209 -0
  311. package/dist/frontend/lowering/builtins/fs-paths.js.map +1 -0
  312. package/dist/frontend/lowering/builtins/hash-stream.d.ts +16 -4
  313. package/dist/frontend/lowering/builtins/hash-stream.js +86 -23
  314. package/dist/frontend/lowering/builtins/hash-stream.js.map +1 -1
  315. package/dist/frontend/lowering/builtins/json.js +54 -1
  316. package/dist/frontend/lowering/builtins/json.js.map +1 -1
  317. package/dist/frontend/lowering/builtins/key-object.d.ts +2 -1
  318. package/dist/frontend/lowering/builtins/key-object.js +20 -7
  319. package/dist/frontend/lowering/builtins/key-object.js.map +1 -1
  320. package/dist/frontend/lowering/builtins/module-calls.js +11 -4
  321. package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
  322. package/dist/frontend/lowering/builtins/numbers.js +9 -5
  323. package/dist/frontend/lowering/builtins/numbers.js.map +1 -1
  324. package/dist/frontend/lowering/builtins/operating-system.js +4 -3
  325. package/dist/frontend/lowering/builtins/operating-system.js.map +1 -1
  326. package/dist/frontend/lowering/builtins/performance.js +3 -2
  327. package/dist/frontend/lowering/builtins/performance.js.map +1 -1
  328. package/dist/frontend/lowering/builtins/process.d.ts +9 -0
  329. package/dist/frontend/lowering/builtins/process.js +47 -2
  330. package/dist/frontend/lowering/builtins/process.js.map +1 -1
  331. package/dist/frontend/lowering/builtins/promises.js +3 -2
  332. package/dist/frontend/lowering/builtins/promises.js.map +1 -1
  333. package/dist/frontend/lowering/builtins/promisify-callback.d.ts +3 -0
  334. package/dist/frontend/lowering/builtins/promisify-callback.js +23 -4
  335. package/dist/frontend/lowering/builtins/promisify-callback.js.map +1 -1
  336. package/dist/frontend/lowering/builtins/readline.d.ts +2 -1
  337. package/dist/frontend/lowering/builtins/readline.js +23 -6
  338. package/dist/frontend/lowering/builtins/readline.js.map +1 -1
  339. package/dist/frontend/lowering/builtins/reflection.js +26 -0
  340. package/dist/frontend/lowering/builtins/reflection.js.map +1 -1
  341. package/dist/frontend/lowering/builtins/strings.js +13 -5
  342. package/dist/frontend/lowering/builtins/strings.js.map +1 -1
  343. package/dist/frontend/lowering/builtins/text-codecs.js +2 -1
  344. package/dist/frontend/lowering/builtins/text-codecs.js.map +1 -1
  345. package/dist/frontend/lowering/builtins/timers.js +6 -2
  346. package/dist/frontend/lowering/builtins/timers.js.map +1 -1
  347. package/dist/frontend/lowering/builtins/typed-array-members.d.ts +7 -0
  348. package/dist/frontend/lowering/builtins/typed-array-members.js +160 -0
  349. package/dist/frontend/lowering/builtins/typed-array-members.js.map +1 -0
  350. package/dist/frontend/lowering/builtins/url.js +4 -3
  351. package/dist/frontend/lowering/builtins/url.js.map +1 -1
  352. package/dist/frontend/lowering/builtins/v8.js +2 -1
  353. package/dist/frontend/lowering/builtins/v8.js.map +1 -1
  354. package/dist/frontend/lowering/builtins/webcrypto.js +39 -20
  355. package/dist/frontend/lowering/builtins/webcrypto.js.map +1 -1
  356. package/dist/frontend/lowering/call-arguments.js +2 -1
  357. package/dist/frontend/lowering/call-arguments.js.map +1 -1
  358. package/dist/frontend/lowering/call-signatures.d.ts +4 -0
  359. package/dist/frontend/lowering/call-signatures.js +137 -13
  360. package/dist/frontend/lowering/call-signatures.js.map +1 -1
  361. package/dist/frontend/lowering/caught-value-dispatch.d.ts +18 -1
  362. package/dist/frontend/lowering/caught-value-dispatch.js +201 -32
  363. package/dist/frontend/lowering/caught-value-dispatch.js.map +1 -1
  364. package/dist/frontend/lowering/cjs-exports-object.js +34 -1
  365. package/dist/frontend/lowering/cjs-exports-object.js.map +1 -1
  366. package/dist/frontend/lowering/class-assertions.js +3 -2
  367. package/dist/frontend/lowering/class-assertions.js.map +1 -1
  368. package/dist/frontend/lowering/class-construction.d.ts +2 -1
  369. package/dist/frontend/lowering/class-construction.js +8 -13
  370. package/dist/frontend/lowering/class-construction.js.map +1 -1
  371. package/dist/frontend/lowering/class-descriptors.js +1 -1
  372. package/dist/frontend/lowering/class-descriptors.js.map +1 -1
  373. package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +34 -0
  374. package/dist/frontend/lowering/class-dynamic-dispatch.js +577 -152
  375. package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
  376. package/dist/frontend/lowering/class-dynamic-dispatch.test.js +77 -0
  377. package/dist/frontend/lowering/class-dynamic-dispatch.test.js.map +1 -1
  378. package/dist/frontend/lowering/class-method-mutations.js +3 -0
  379. package/dist/frontend/lowering/class-method-mutations.js.map +1 -1
  380. package/dist/frontend/lowering/class-method-values.js +1 -1
  381. package/dist/frontend/lowering/class-method-values.js.map +1 -1
  382. package/dist/frontend/lowering/class-protocols.d.ts +17 -0
  383. package/dist/frontend/lowering/class-protocols.js +117 -7
  384. package/dist/frontend/lowering/class-protocols.js.map +1 -1
  385. package/dist/frontend/lowering/class-prototypes.d.ts +5 -0
  386. package/dist/frontend/lowering/class-prototypes.js +42 -4
  387. package/dist/frontend/lowering/class-prototypes.js.map +1 -1
  388. package/dist/frontend/lowering/class-to-primitive.d.ts +2 -2
  389. package/dist/frontend/lowering/class-to-primitive.js +31 -8
  390. package/dist/frontend/lowering/class-to-primitive.js.map +1 -1
  391. package/dist/frontend/lowering/class-unions.js +2 -1
  392. package/dist/frontend/lowering/class-unions.js.map +1 -1
  393. package/dist/frontend/lowering/coercions/fresh-spread.d.ts +13 -0
  394. package/dist/frontend/lowering/coercions/fresh-spread.js +95 -0
  395. package/dist/frontend/lowering/coercions/fresh-spread.js.map +1 -0
  396. package/dist/frontend/lowering/coercions/function-adapters.js +105 -75
  397. package/dist/frontend/lowering/coercions/function-adapters.js.map +1 -1
  398. package/dist/frontend/lowering/coercions/structural.js +8 -7
  399. package/dist/frontend/lowering/coercions/structural.js.map +1 -1
  400. package/dist/frontend/lowering/coercions/unions.js +8 -7
  401. package/dist/frontend/lowering/coercions/unions.js.map +1 -1
  402. package/dist/frontend/lowering/collection-ingestion.js +2 -1
  403. package/dist/frontend/lowering/collection-ingestion.js.map +1 -1
  404. package/dist/frontend/lowering/containers/array-callbacks.d.ts +15 -0
  405. package/dist/frontend/lowering/containers/array-callbacks.js +36 -32
  406. package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
  407. package/dist/frontend/lowering/containers/array-concat.js +2 -1
  408. package/dist/frontend/lowering/containers/array-concat.js.map +1 -1
  409. package/dist/frontend/lowering/containers/array-construction.js +32 -4
  410. package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
  411. package/dist/frontend/lowering/containers/array-methods.js +11 -5
  412. package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
  413. package/dist/frontend/lowering/containers/array-pipelines.js +2 -1
  414. package/dist/frontend/lowering/containers/array-pipelines.js.map +1 -1
  415. package/dist/frontend/lowering/containers/bytes.d.ts +10 -1
  416. package/dist/frontend/lowering/containers/bytes.js +601 -24
  417. package/dist/frontend/lowering/containers/bytes.js.map +1 -1
  418. package/dist/frontend/lowering/containers/callback-arguments.js +52 -2
  419. package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -1
  420. package/dist/frontend/lowering/containers/collection-grouping.js +3 -2
  421. package/dist/frontend/lowering/containers/collection-grouping.js.map +1 -1
  422. package/dist/frontend/lowering/containers/collection-methods.js +80 -10
  423. package/dist/frontend/lowering/containers/collection-methods.js.map +1 -1
  424. package/dist/frontend/lowering/containers/indexed-objects.js +8 -7
  425. package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
  426. package/dist/frontend/lowering/containers/iterator-helpers.d.ts +32 -1
  427. package/dist/frontend/lowering/containers/iterator-helpers.js +6 -5
  428. package/dist/frontend/lowering/containers/iterator-helpers.js.map +1 -1
  429. package/dist/frontend/lowering/containers/string-and-regexp.js +85 -22
  430. package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
  431. package/dist/frontend/lowering/containers/string-replacement.js +2 -1
  432. package/dist/frontend/lowering/containers/string-replacement.js.map +1 -1
  433. package/dist/frontend/lowering/cycle-initialization.d.ts +26 -10
  434. package/dist/frontend/lowering/cycle-initialization.js +177 -39
  435. package/dist/frontend/lowering/cycle-initialization.js.map +1 -1
  436. package/dist/frontend/lowering/deferred-module-initializers.d.ts +18 -1
  437. package/dist/frontend/lowering/deferred-module-initializers.js +226 -115
  438. package/dist/frontend/lowering/deferred-module-initializers.js.map +1 -1
  439. package/dist/frontend/lowering/deferred-module-initializers.test.js +28 -0
  440. package/dist/frontend/lowering/deferred-module-initializers.test.js.map +1 -1
  441. package/dist/frontend/lowering/dispatch-sites.d.ts +59 -0
  442. package/dist/frontend/lowering/dispatch-sites.js +204 -0
  443. package/dist/frontend/lowering/dispatch-sites.js.map +1 -0
  444. package/dist/frontend/lowering/dispatch-sites.test.d.ts +1 -0
  445. package/dist/frontend/lowering/dispatch-sites.test.js +59 -0
  446. package/dist/frontend/lowering/dispatch-sites.test.js.map +1 -0
  447. package/dist/frontend/lowering/dyn-streams.d.ts +3 -0
  448. package/dist/frontend/lowering/dyn-streams.js +1 -1
  449. package/dist/frontend/lowering/dyn-streams.js.map +1 -1
  450. package/dist/frontend/lowering/dynamic-tier.d.ts +25 -0
  451. package/dist/frontend/lowering/dynamic-tier.js +327 -0
  452. package/dist/frontend/lowering/dynamic-tier.js.map +1 -0
  453. package/dist/frontend/lowering/error-methods.js +4 -0
  454. package/dist/frontend/lowering/error-methods.js.map +1 -1
  455. package/dist/frontend/lowering/expressions/array-literals.js +48 -13
  456. package/dist/frontend/lowering/expressions/array-literals.js.map +1 -1
  457. package/dist/frontend/lowering/expressions/binary.js +124 -8
  458. package/dist/frontend/lowering/expressions/binary.js.map +1 -1
  459. package/dist/frontend/lowering/expressions/element-access.js +30 -7
  460. package/dist/frontend/lowering/expressions/element-access.js.map +1 -1
  461. package/dist/frontend/lowering/expressions/identifiers.js +46 -7
  462. package/dist/frontend/lowering/expressions/identifiers.js.map +1 -1
  463. package/dist/frontend/lowering/expressions/keyed-field-targets.d.ts +14 -2
  464. package/dist/frontend/lowering/expressions/keyed-field-targets.js +91 -10
  465. package/dist/frontend/lowering/expressions/keyed-field-targets.js.map +1 -1
  466. package/dist/frontend/lowering/expressions/narrowing.js +52 -7
  467. package/dist/frontend/lowering/expressions/narrowing.js.map +1 -1
  468. package/dist/frontend/lowering/expressions/object-literals.d.ts +0 -3
  469. package/dist/frontend/lowering/expressions/object-literals.js +75 -7
  470. package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
  471. package/dist/frontend/lowering/expressions/optional-chains.d.ts +1 -1
  472. package/dist/frontend/lowering/expressions/optional-chains.js +17 -8
  473. package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
  474. package/dist/frontend/lowering/expressions/property-access.d.ts +5 -4
  475. package/dist/frontend/lowering/expressions/property-access.js +351 -16
  476. package/dist/frontend/lowering/expressions/property-access.js.map +1 -1
  477. package/dist/frontend/lowering/expressions/relational.js +112 -9
  478. package/dist/frontend/lowering/expressions/relational.js.map +1 -1
  479. package/dist/frontend/lowering/expressions/typeof.js +13 -0
  480. package/dist/frontend/lowering/expressions/typeof.js.map +1 -1
  481. package/dist/frontend/lowering/expressions/updates.js +64 -10
  482. package/dist/frontend/lowering/expressions/updates.js.map +1 -1
  483. package/dist/frontend/lowering/generator-delegation.d.ts +8 -0
  484. package/dist/frontend/lowering/generator-delegation.js +191 -1
  485. package/dist/frontend/lowering/generator-delegation.js.map +1 -1
  486. package/dist/frontend/lowering/generator-dynamic-dispatch.d.ts +6 -1
  487. package/dist/frontend/lowering/generator-dynamic-dispatch.js +20 -30
  488. package/dist/frontend/lowering/generator-dynamic-dispatch.js.map +1 -1
  489. package/dist/frontend/lowering/generic-functions.d.ts +46 -1
  490. package/dist/frontend/lowering/generic-functions.js +660 -73
  491. package/dist/frontend/lowering/generic-functions.js.map +1 -1
  492. package/dist/frontend/lowering/handle-properties.d.ts +24 -0
  493. package/dist/frontend/lowering/handle-properties.js +281 -0
  494. package/dist/frontend/lowering/handle-properties.js.map +1 -0
  495. package/dist/frontend/lowering/intern-tables.js +2 -1
  496. package/dist/frontend/lowering/intern-tables.js.map +1 -1
  497. package/dist/frontend/lowering/iterable-spelling.d.ts +7 -0
  498. package/dist/frontend/lowering/iterable-spelling.js +38 -0
  499. package/dist/frontend/lowering/iterable-spelling.js.map +1 -0
  500. package/dist/frontend/lowering/iterator-adapters.js +9 -8
  501. package/dist/frontend/lowering/iterator-adapters.js.map +1 -1
  502. package/dist/frontend/lowering/js-dynamic-objects.js +3 -2
  503. package/dist/frontend/lowering/js-dynamic-objects.js.map +1 -1
  504. package/dist/frontend/lowering/json-require.js +2 -1
  505. package/dist/frontend/lowering/json-require.js.map +1 -1
  506. package/dist/frontend/lowering/key-order-witness.d.ts +7 -2
  507. package/dist/frontend/lowering/key-order-witness.js +21 -4
  508. package/dist/frontend/lowering/key-order-witness.js.map +1 -1
  509. package/dist/frontend/lowering/key-order-witness.test.js +38 -2
  510. package/dist/frontend/lowering/key-order-witness.test.js.map +1 -1
  511. package/dist/frontend/lowering/lifetime-regions.js +2 -1
  512. package/dist/frontend/lowering/lifetime-regions.js.map +1 -1
  513. package/dist/frontend/lowering/lower-array-sort.d.ts +33 -15
  514. package/dist/frontend/lowering/lower-array-sort.js +117 -21
  515. package/dist/frontend/lowering/lower-array-sort.js.map +1 -1
  516. package/dist/frontend/lowering/lower-array-sort.test.js +93 -14
  517. package/dist/frontend/lowering/lower-array-sort.test.js.map +1 -1
  518. package/dist/frontend/lowering/lower-assert.js +6 -5
  519. package/dist/frontend/lowering/lower-assert.js.map +1 -1
  520. package/dist/frontend/lowering/lower-async-iteration.js +3 -1
  521. package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
  522. package/dist/frontend/lowering/lower-builtin-values.js +1 -0
  523. package/dist/frontend/lowering/lower-builtin-values.js.map +1 -1
  524. package/dist/frontend/lowering/lower-calls.d.ts +4 -0
  525. package/dist/frontend/lowering/lower-calls.js +504 -97
  526. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  527. package/dist/frontend/lowering/lower-classes.d.ts +22 -0
  528. package/dist/frontend/lowering/lower-classes.js +339 -32
  529. package/dist/frontend/lowering/lower-classes.js.map +1 -1
  530. package/dist/frontend/lowering/lower-dgram.js +65 -15
  531. package/dist/frontend/lowering/lower-dgram.js.map +1 -1
  532. package/dist/frontend/lowering/lower-event-emitter.d.ts +14 -0
  533. package/dist/frontend/lowering/lower-event-emitter.js +267 -20
  534. package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
  535. package/dist/frontend/lowering/lower-exprs.d.ts +19 -2
  536. package/dist/frontend/lowering/lower-exprs.js +148 -12
  537. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  538. package/dist/frontend/lowering/lower-functions.js +308 -72
  539. package/dist/frontend/lowering/lower-functions.js.map +1 -1
  540. package/dist/frontend/lowering/lower-generators.js +10 -4
  541. package/dist/frontend/lowering/lower-generators.js.map +1 -1
  542. package/dist/frontend/lowering/lower-inspect.js +578 -16
  543. package/dist/frontend/lowering/lower-inspect.js.map +1 -1
  544. package/dist/frontend/lowering/lower-mixins.js +2 -1
  545. package/dist/frontend/lowering/lower-mixins.js.map +1 -1
  546. package/dist/frontend/lowering/lower-mock.js +2 -1
  547. package/dist/frontend/lowering/lower-mock.js.map +1 -1
  548. package/dist/frontend/lowering/lower-modules.d.ts +11 -3
  549. package/dist/frontend/lowering/lower-modules.js +227 -72
  550. package/dist/frontend/lowering/lower-modules.js.map +1 -1
  551. package/dist/frontend/lowering/lower-modules.test.js +2 -2
  552. package/dist/frontend/lowering/lower-modules.test.js.map +1 -1
  553. package/dist/frontend/lowering/lower-namespaces.d.ts +2 -1
  554. package/dist/frontend/lowering/lower-namespaces.js +24 -3
  555. package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
  556. package/dist/frontend/lowering/lower-server.d.ts +10 -0
  557. package/dist/frontend/lowering/lower-server.js +263 -60
  558. package/dist/frontend/lowering/lower-server.js.map +1 -1
  559. package/dist/frontend/lowering/lower-stdlib.js +39 -18
  560. package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
  561. package/dist/frontend/lowering/lower-stmts.d.ts +7 -10
  562. package/dist/frontend/lowering/lower-stmts.js +584 -69
  563. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  564. package/dist/frontend/lowering/lower-stmts.test.js +1 -1
  565. package/dist/frontend/lowering/lower-stmts.test.js.map +1 -1
  566. package/dist/frontend/lowering/lower-stream.js +575 -165
  567. package/dist/frontend/lowering/lower-stream.js.map +1 -1
  568. package/dist/frontend/lowering/lower-timers.js +21 -4
  569. package/dist/frontend/lowering/lower-timers.js.map +1 -1
  570. package/dist/frontend/lowering/lowerer.d.ts +151 -30
  571. package/dist/frontend/lowering/lowerer.js +725 -84
  572. package/dist/frontend/lowering/lowerer.js.map +1 -1
  573. package/dist/frontend/lowering/lowerer.test.js +21 -9
  574. package/dist/frontend/lowering/lowerer.test.js.map +1 -1
  575. package/dist/frontend/lowering/narrowing-stability.js +5 -0
  576. package/dist/frontend/lowering/narrowing-stability.js.map +1 -1
  577. package/dist/frontend/lowering/native-ffi.js +1 -1
  578. package/dist/frontend/lowering/native-ffi.js.map +1 -1
  579. package/dist/frontend/lowering/object-enumeration-receiver.js +2 -1
  580. package/dist/frontend/lowering/object-enumeration-receiver.js.map +1 -1
  581. package/dist/frontend/lowering/pairs-snapshot.js +2 -1
  582. package/dist/frontend/lowering/pairs-snapshot.js.map +1 -1
  583. package/dist/frontend/lowering/private-brands.d.ts +9 -0
  584. package/dist/frontend/lowering/private-brands.js +66 -15
  585. package/dist/frontend/lowering/private-brands.js.map +1 -1
  586. package/dist/frontend/lowering/promise-executor-adapter.js +2 -1
  587. package/dist/frontend/lowering/promise-executor-adapter.js.map +1 -1
  588. package/dist/frontend/lowering/rebindable-functions.d.ts +8 -0
  589. package/dist/frontend/lowering/rebindable-functions.js +54 -0
  590. package/dist/frontend/lowering/rebindable-functions.js.map +1 -0
  591. package/dist/frontend/lowering/require-initialization.js +2 -1
  592. package/dist/frontend/lowering/require-initialization.js.map +1 -1
  593. package/dist/frontend/lowering/runtime-optional-elements.d.ts +5 -0
  594. package/dist/frontend/lowering/runtime-optional-elements.js +17 -1
  595. package/dist/frontend/lowering/runtime-optional-elements.js.map +1 -1
  596. package/dist/frontend/lowering/runtime-optional-records.d.ts +2 -0
  597. package/dist/frontend/lowering/runtime-optional-records.js +18 -5
  598. package/dist/frontend/lowering/runtime-optional-records.js.map +1 -1
  599. package/dist/frontend/lowering/site-dependencies.d.ts +35 -0
  600. package/dist/frontend/lowering/site-dependencies.js +84 -0
  601. package/dist/frontend/lowering/site-dependencies.js.map +1 -0
  602. package/dist/frontend/lowering/site-dependencies.test.d.ts +1 -0
  603. package/dist/frontend/lowering/site-dependencies.test.js +53 -0
  604. package/dist/frontend/lowering/site-dependencies.test.js.map +1 -0
  605. package/dist/frontend/lowering/stable-names.d.ts +11 -0
  606. package/dist/frontend/lowering/stable-names.js +35 -0
  607. package/dist/frontend/lowering/stable-names.js.map +1 -0
  608. package/dist/frontend/lowering/static-typeof.d.ts +26 -0
  609. package/dist/frontend/lowering/static-typeof.js +172 -0
  610. package/dist/frontend/lowering/static-typeof.js.map +1 -0
  611. package/dist/frontend/lowering/strict-equality.js +2 -1
  612. package/dist/frontend/lowering/strict-equality.js.map +1 -1
  613. package/dist/frontend/lowering/string-index-bounds.js +3 -2
  614. package/dist/frontend/lowering/string-index-bounds.js.map +1 -1
  615. package/dist/frontend/lowering/structural-positions.d.ts +32 -0
  616. package/dist/frontend/lowering/structural-positions.js +108 -0
  617. package/dist/frontend/lowering/structural-positions.js.map +1 -0
  618. package/dist/frontend/lowering/surfaces.js +72 -30
  619. package/dist/frontend/lowering/surfaces.js.map +1 -1
  620. package/dist/frontend/lowering/thenables.d.ts +16 -0
  621. package/dist/frontend/lowering/thenables.js +124 -0
  622. package/dist/frontend/lowering/thenables.js.map +1 -0
  623. package/dist/frontend/lowering/var-hoisting.js +37 -3
  624. package/dist/frontend/lowering/var-hoisting.js.map +1 -1
  625. package/dist/frontend/npm-static-builtin-aliases.d.ts +8 -0
  626. package/dist/frontend/npm-static-builtin-aliases.js +65 -0
  627. package/dist/frontend/npm-static-builtin-aliases.js.map +1 -0
  628. package/dist/frontend/npm-static-bundled-chunks.d.ts +8 -1
  629. package/dist/frontend/npm-static-bundled-chunks.js +173 -2
  630. package/dist/frontend/npm-static-bundled-chunks.js.map +1 -1
  631. package/dist/frontend/npm-static-bundled-chunks.test.js +112 -0
  632. package/dist/frontend/npm-static-bundled-chunks.test.js.map +1 -1
  633. package/dist/frontend/npm-static-bundled-esm.js +224 -4
  634. package/dist/frontend/npm-static-bundled-esm.js.map +1 -1
  635. package/dist/frontend/npm-static-bundled-esm.test.js +129 -0
  636. package/dist/frontend/npm-static-bundled-esm.test.js.map +1 -1
  637. package/dist/frontend/npm-static-enum-iife.d.ts +6 -0
  638. package/dist/frontend/npm-static-enum-iife.js +280 -0
  639. package/dist/frontend/npm-static-enum-iife.js.map +1 -0
  640. package/dist/frontend/npm-static-enum-iife.test.d.ts +1 -0
  641. package/dist/frontend/npm-static-enum-iife.test.js +116 -0
  642. package/dist/frontend/npm-static-enum-iife.test.js.map +1 -0
  643. package/dist/frontend/npm-static-tsc-helpers.d.ts +5 -0
  644. package/dist/frontend/npm-static-tsc-helpers.js +106 -0
  645. package/dist/frontend/npm-static-tsc-helpers.js.map +1 -0
  646. package/dist/frontend/npm-static-tsc-helpers.test.d.ts +1 -0
  647. package/dist/frontend/npm-static-tsc-helpers.test.js +58 -0
  648. package/dist/frontend/npm-static-tsc-helpers.test.js.map +1 -0
  649. package/dist/frontend/npm-static-type-exports-host.d.ts +8 -0
  650. package/dist/frontend/npm-static-type-exports-host.js +214 -0
  651. package/dist/frontend/npm-static-type-exports-host.js.map +1 -0
  652. package/dist/frontend/npm-static-type-exports-host.test.d.ts +1 -0
  653. package/dist/frontend/npm-static-type-exports-host.test.js +53 -0
  654. package/dist/frontend/npm-static-type-exports-host.test.js.map +1 -0
  655. package/dist/frontend/npm-static-type-exports.d.ts +52 -0
  656. package/dist/frontend/npm-static-type-exports.js +261 -0
  657. package/dist/frontend/npm-static-type-exports.js.map +1 -0
  658. package/dist/frontend/npm-static-type-exports.test.d.ts +1 -0
  659. package/dist/frontend/npm-static-type-exports.test.js +103 -0
  660. package/dist/frontend/npm-static-type-exports.test.js.map +1 -0
  661. package/dist/frontend/npm-static-umd.d.ts +6 -0
  662. package/dist/frontend/npm-static-umd.js +203 -0
  663. package/dist/frontend/npm-static-umd.js.map +1 -0
  664. package/dist/frontend/npm-static-umd.test.d.ts +1 -0
  665. package/dist/frontend/npm-static-umd.test.js +105 -0
  666. package/dist/frontend/npm-static-umd.test.js.map +1 -0
  667. package/dist/frontend/npm-static.d.ts +16 -0
  668. package/dist/frontend/npm-static.js +93 -3
  669. package/dist/frontend/npm-static.js.map +1 -1
  670. package/dist/frontend/npm.js +13 -0
  671. package/dist/frontend/npm.js.map +1 -1
  672. package/dist/frontend/package-shims.d.ts +47 -0
  673. package/dist/frontend/package-shims.js +300 -0
  674. package/dist/frontend/package-shims.js.map +1 -0
  675. package/dist/frontend/pipeline.js +67 -1
  676. package/dist/frontend/pipeline.js.map +1 -1
  677. package/dist/frontend/program.d.ts +21 -0
  678. package/dist/frontend/program.js +174 -14
  679. package/dist/frontend/program.js.map +1 -1
  680. package/dist/frontend/program.test.js +1 -1
  681. package/dist/frontend/program.test.js.map +1 -1
  682. package/dist/frontend/resolve.js +13 -0
  683. package/dist/frontend/resolve.js.map +1 -1
  684. package/dist/frontend/services.d.ts +12 -0
  685. package/dist/frontend/services.js +37 -0
  686. package/dist/frontend/services.js.map +1 -1
  687. package/dist/frontend/ts7/ast-node.d.ts +21 -7
  688. package/dist/frontend/ts7/ast-node.js +131 -29
  689. package/dist/frontend/ts7/ast-node.js.map +1 -1
  690. package/dist/frontend/ts7/ast-node.test.js +60 -0
  691. package/dist/frontend/ts7/ast-node.test.js.map +1 -1
  692. package/dist/frontend/ts7/ast-wire.d.ts +27 -2
  693. package/dist/frontend/ts7/ast-wire.js +124 -21
  694. package/dist/frontend/ts7/ast-wire.js.map +1 -1
  695. package/dist/frontend/ts7/ast.d.ts +23 -2
  696. package/dist/frontend/ts7/ast.js +143 -2
  697. package/dist/frontend/ts7/ast.js.map +1 -1
  698. package/dist/frontend/ts7/checker.d.ts +13 -1
  699. package/dist/frontend/ts7/checker.js +75 -1
  700. package/dist/frontend/ts7/checker.js.map +1 -1
  701. package/dist/frontend/ts7/checker.test.js +9 -6
  702. package/dist/frontend/ts7/checker.test.js.map +1 -1
  703. package/dist/frontend/ts7/enums.d.ts +3 -3
  704. package/dist/frontend/ts7/enums.generated.d.ts +10 -0
  705. package/dist/frontend/ts7/enums.generated.js +21 -0
  706. package/dist/frontend/ts7/enums.generated.js.map +1 -1
  707. package/dist/frontend/ts7/enums.js +19 -0
  708. package/dist/frontend/ts7/enums.js.map +1 -1
  709. package/dist/frontend/ts7/program-host.d.ts +6 -5
  710. package/dist/frontend/ts7/program-host.js +12 -2
  711. package/dist/frontend/ts7/program-host.js.map +1 -1
  712. package/dist/frontend/ts7/semantic-checker.d.ts +10 -0
  713. package/dist/frontend/ts7/semantic-checker.js +25 -20
  714. package/dist/frontend/ts7/semantic-checker.js.map +1 -1
  715. package/dist/frontend/ts7/semantic-json.d.ts +13 -0
  716. package/dist/frontend/ts7/semantic-json.js +146 -0
  717. package/dist/frontend/ts7/semantic-json.js.map +1 -1
  718. package/dist/frontend/ts7/semantic-json.test.js +57 -1
  719. package/dist/frontend/ts7/semantic-json.test.js.map +1 -1
  720. package/dist/frontend/ts7/semantic-model.d.ts +18 -0
  721. package/dist/frontend/ts7/semantic-model.js +90 -16
  722. package/dist/frontend/ts7/semantic-model.js.map +1 -1
  723. package/dist/frontend/ts7/semantic-model.test.js +3 -2
  724. package/dist/frontend/ts7/semantic-model.test.js.map +1 -1
  725. package/dist/frontend/ts7/session.d.ts +19 -4
  726. package/dist/frontend/ts7/session.js +1 -1
  727. package/dist/frontend/ts7/session.js.map +1 -1
  728. package/dist/frontend/tsc-codes.d.ts +1 -1
  729. package/dist/frontend/tsc-codes.js +7 -0
  730. package/dist/frontend/tsc-codes.js.map +1 -1
  731. package/dist/frontend/type-mapper.d.ts +38 -6
  732. package/dist/frontend/type-mapper.js +466 -47
  733. package/dist/frontend/type-mapper.js.map +1 -1
  734. package/dist/frontend/type-mapper.test.js +1 -1
  735. package/dist/frontend/type-mapper.test.js.map +1 -1
  736. package/dist/frontend-process-args.d.ts +4 -0
  737. package/dist/frontend-process-args.js +52 -0
  738. package/dist/frontend-process-args.js.map +1 -0
  739. package/dist/frontend-process-args.test.d.ts +1 -0
  740. package/dist/frontend-process-args.test.js +47 -0
  741. package/dist/frontend-process-args.test.js.map +1 -0
  742. package/dist/frontend-process.d.ts +1 -0
  743. package/dist/frontend-process.js +23 -0
  744. package/dist/frontend-process.js.map +1 -0
  745. package/dist/heap-collection.d.ts +16 -0
  746. package/dist/heap-collection.js +42 -0
  747. package/dist/heap-collection.js.map +1 -0
  748. package/dist/heap-collection.test.d.ts +1 -0
  749. package/dist/heap-collection.test.js +59 -0
  750. package/dist/heap-collection.test.js.map +1 -0
  751. package/dist/heap-pressure.d.ts +2 -0
  752. package/dist/heap-pressure.js +12 -0
  753. package/dist/heap-pressure.js.map +1 -0
  754. package/dist/index.d.ts +8 -0
  755. package/dist/index.js +453 -85
  756. package/dist/index.js.map +1 -1
  757. package/dist/ir/array-length-stability.d.ts +3 -2
  758. package/dist/ir/array-length-stability.js +22 -2
  759. package/dist/ir/array-length-stability.js.map +1 -1
  760. package/dist/ir/array-length-stability.test.js +47 -1
  761. package/dist/ir/array-length-stability.test.js.map +1 -1
  762. package/dist/ir/builtin-effects.js +41 -0
  763. package/dist/ir/builtin-effects.js.map +1 -1
  764. package/dist/ir/builtin-signatures.d.ts +5 -1
  765. package/dist/ir/builtin-signatures.js +187 -16
  766. package/dist/ir/builtin-signatures.js.map +1 -1
  767. package/dist/ir/final-fields.d.ts +2 -1
  768. package/dist/ir/final-fields.js +2 -2
  769. package/dist/ir/final-fields.js.map +1 -1
  770. package/dist/ir/function-references.test.js +2 -0
  771. package/dist/ir/function-references.test.js.map +1 -1
  772. package/dist/ir/int32-slots.d.ts +13 -5
  773. package/dist/ir/int32-slots.js +112 -115
  774. package/dist/ir/int32-slots.js.map +1 -1
  775. package/dist/ir/int32-slots.test.js +3 -1
  776. package/dist/ir/int32-slots.test.js.map +1 -1
  777. package/dist/ir/integer-loop-facts.d.ts +14 -4
  778. package/dist/ir/integer-loop-facts.js +172 -32
  779. package/dist/ir/integer-loop-facts.js.map +1 -1
  780. package/dist/ir/integer-loops.d.ts +49 -0
  781. package/dist/ir/integer-loops.js +193 -39
  782. package/dist/ir/integer-loops.js.map +1 -1
  783. package/dist/ir/integer-loops.test.js +201 -1
  784. package/dist/ir/integer-loops.test.js.map +1 -1
  785. package/dist/ir/integer-ranges.d.ts +10 -1
  786. package/dist/ir/integer-ranges.js +122 -25
  787. package/dist/ir/integer-ranges.js.map +1 -1
  788. package/dist/ir/integer-ranges.test.js +255 -1
  789. package/dist/ir/integer-ranges.test.js.map +1 -1
  790. package/dist/ir/ir.d.ts +17 -2
  791. package/dist/ir/ir.js +11 -1
  792. package/dist/ir/ir.js.map +1 -1
  793. package/dist/ir/js-ic.d.ts +52 -0
  794. package/dist/ir/js-ic.js +199 -0
  795. package/dist/ir/js-ic.js.map +1 -0
  796. package/dist/ir/js-ic.test.d.ts +1 -0
  797. package/dist/ir/js-ic.test.js +148 -0
  798. package/dist/ir/js-ic.test.js.map +1 -0
  799. package/dist/ir/jsval.js +38 -4
  800. package/dist/ir/jsval.js.map +1 -1
  801. package/dist/ir/runtime-features.d.ts +64 -5
  802. package/dist/ir/runtime-features.js +358 -101
  803. package/dist/ir/runtime-features.js.map +1 -1
  804. package/dist/ir/tiers.js +1 -0
  805. package/dist/ir/tiers.js.map +1 -1
  806. package/dist/ir/traverse.d.ts +2 -0
  807. package/dist/ir/traverse.js +124 -70
  808. package/dist/ir/traverse.js.map +1 -1
  809. package/dist/ir/validate.js +77 -24
  810. package/dist/ir/validate.js.map +1 -1
  811. package/dist/ir/validate.test.js +15 -2
  812. package/dist/ir/validate.test.js.map +1 -1
  813. package/dist/library/ir-policy.js +11 -0
  814. package/dist/library/ir-policy.js.map +1 -1
  815. package/dist/library/library-cache.d.ts +2 -0
  816. package/dist/library/library-cache.js.map +1 -1
  817. package/dist/library/prepare.js +2 -0
  818. package/dist/library/prepare.js.map +1 -1
  819. package/dist/native/cli.js +22 -0
  820. package/dist/native/cli.js.map +1 -1
  821. package/dist/native/compiler.js +33 -4
  822. package/dist/native/compiler.js.map +1 -1
  823. package/dist/native/executable-cache.js +3 -0
  824. package/dist/native/executable-cache.js.map +1 -1
  825. package/dist/native/prepare.js +8 -1
  826. package/dist/native/prepare.js.map +1 -1
  827. package/dist/native/sanitizer.test.js +10 -0
  828. package/dist/native/sanitizer.test.js.map +1 -1
  829. package/dist/startup-cache.d.ts +1 -0
  830. package/dist/startup-cache.js +1 -0
  831. package/dist/startup-cache.js.map +1 -1
  832. package/dist/text-parts.d.ts +7 -0
  833. package/dist/text-parts.js +44 -0
  834. package/dist/text-parts.js.map +1 -1
  835. package/dist/text-parts.test.d.ts +1 -0
  836. package/dist/text-parts.test.js +46 -0
  837. package/dist/text-parts.test.js.map +1 -0
  838. package/dist/timing.d.ts +9 -2
  839. package/dist/timing.js +7 -4
  840. package/dist/timing.js.map +1 -1
  841. package/dist/wasm/translate.d.ts +4 -0
  842. package/dist/wasm/translate.js +2 -2
  843. package/dist/wasm/translate.js.map +1 -1
  844. package/package.json +22 -21
  845. package/shims/fs-extra/core/api.ts +1192 -0
  846. package/shims/fs-extra/index.ts +9 -0
  847. package/shims/undici/core/agent.ts +163 -0
  848. package/shims/undici/core/api.ts +93 -0
  849. package/shims/undici/core/client.ts +1304 -0
  850. package/shims/undici/core/connector.ts +157 -0
  851. package/shims/undici/core/diagnostics-types.ts +68 -0
  852. package/shims/undici/core/diagnostics.ts +16 -0
  853. package/shims/undici/core/dispatcher.ts +574 -0
  854. package/shims/undici/core/errors-v5.ts +22 -0
  855. package/shims/undici/core/errors-v7.ts +25 -0
  856. package/shims/undici/core/errors.ts +255 -0
  857. package/shims/undici/core/fetch.ts +635 -0
  858. package/shims/undici/core/pool.ts +280 -0
  859. package/shims/undici/core/readable.ts +268 -0
  860. package/shims/undici/core/request.ts +313 -0
  861. package/shims/undici/core/timers.ts +80 -0
  862. package/shims/undici/core/types.ts +167 -0
  863. package/shims/undici/core/util.ts +67 -0
  864. package/shims/undici/v5.ts +119 -0
  865. package/shims/undici/v7.ts +119 -0
  866. package/surface-manifest.json +20 -52
@@ -1,93 +1,151 @@
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
+ import { JsIcSites, hasJsIcSite } from "./js-ic.js";
4
+ const DYN_BUFFER_NUM_METHODS = new Set(["read", "write"].flatMap((rw) => [
5
+ ...["UInt", "Uint"].flatMap((u) => ["8", "16LE", "16BE", "32LE", "32BE"].map((w) => `${rw}${u}${w}`)),
6
+ ...[
7
+ "Int8",
8
+ "Int16LE",
9
+ "Int16BE",
10
+ "Int32LE",
11
+ "Int32BE",
12
+ "FloatLE",
13
+ "FloatBE",
14
+ "DoubleLE",
15
+ "DoubleBE",
16
+ ].map((n) => `${rw}${n}`),
17
+ ]));
18
+ /** Buffer.prototype members scr_bytes_dyn.c refuses on Buffer receivers. */
19
+ const DYN_BUFFER_REFUSED_METHODS = [
20
+ ...["read", "write"].flatMap((rw) => [
21
+ ...["UIntLE", "UIntBE", "UintLE", "UintBE", "IntLE", "IntBE"].map((n) => `${rw}${n}`),
22
+ ...["BigUInt64", "BigUint64", "BigInt64"].flatMap((n) => [`${rw}${n}LE`, `${rw}${n}BE`]),
23
+ ]),
24
+ ...["ascii", "base64", "base64url", "latin1", "hex", "ucs2", "utf8"].flatMap((enc) => [
25
+ `${enc}Slice`,
26
+ `${enc}Write`,
27
+ ]),
28
+ "inspect",
29
+ ];
30
+ /** The scr_bytes_dyn.c entry, one per method family, that a checked-dynamic
31
+ * call of a Buffer.prototype method name routes to: the fixed-width reads and
32
+ * writes (both "UInt" and "Uint" spellings), write, fill, toString, the
33
+ * searches, and the other Buffer-only members. Each runs the method on a
34
+ * Buffer receiver and gives any other receiver the ordinary dispatch. */
35
+ export const DYN_BUFFER_METHODS = new Map([
36
+ ...[...DYN_BUFFER_NUM_METHODS].map((m) => [m, "scr_dyn_invoke_buffer_num"]),
37
+ ["write", "scr_dyn_invoke_buffer_write"],
38
+ ["fill", "scr_dyn_invoke_buffer_fill"],
39
+ ["toString", "scr_dyn_invoke_buffer_to_string"],
40
+ ...["indexOf", "lastIndexOf", "includes"].map((m) => [
41
+ m,
42
+ "scr_dyn_invoke_buffer_search",
43
+ ]),
44
+ ...[
45
+ "toJSON",
46
+ "equals",
47
+ "compare",
48
+ "copy",
49
+ "swap16",
50
+ "swap32",
51
+ "swap64",
52
+ ...DYN_BUFFER_REFUSED_METHODS,
53
+ ].map((m) => [m, "scr_dyn_invoke_buffer"]),
54
+ ]);
3
55
  const DYN_ASYNC_LIB_FNS = new Set([
4
56
  // DEP0040 rides the dyn-async unit's warning machinery.
5
- "punycode.warn",
6
- "fs.callbackValue",
7
- "fs.callbackCall",
8
- "fs.callbackGlob",
9
57
  "async.awaitDyn",
10
- "timers.immediatePromise",
58
+ // The child property table adopts thenables through the dyn-async unit.
59
+ "child.propsInstall",
60
+ "child.propsResolve",
11
61
  "crypto.native",
62
+ // The crypto global's object extends crypto.native's.
63
+ "webcrypto.object",
12
64
  "dyn.promiseAll",
13
65
  "dyn.promiseAllSettled",
14
66
  "dyn.promiseAny",
15
67
  "dyn.promiseResolve",
16
- "process.onUncaughtException",
68
+ "fs.callbackCall",
69
+ "fs.callbackGlob",
70
+ "fs.callbackValue",
71
+ "process.deprecationFlag",
72
+ "process.emitWarning",
73
+ "process.emitWarningText",
74
+ "process.offRejectionHandled",
17
75
  "process.offUncaughtException",
18
- "process.onUnhandledRejection",
19
76
  "process.offUnhandledRejection",
77
+ "process.offWarning",
20
78
  "process.onRejectionHandled",
21
- "process.offRejectionHandled",
79
+ "process.onUncaughtException",
80
+ "process.onUnhandledRejection",
22
81
  "process.onWarning",
23
- "process.offWarning",
24
- "process.emitWarning",
25
- "process.emitWarningText",
26
- "process.deprecationFlag",
27
82
  "process.setDeprecationFlag",
28
83
  "process.setEmitWarning",
84
+ "punycode.warn",
85
+ "timers.immediatePromise",
29
86
  // The performance timeline (scr_perf.c, linked with this unit for its
30
87
  // MaxPerformanceEntryBufferExceededWarning).
31
- "perf.mark",
32
- "perf.measure",
33
- "perf.entries",
34
88
  "perf.clearMarks",
35
89
  "perf.clearMeasures",
36
- "perf.entryName",
37
- "perf.entryType",
38
- "perf.entryStart",
39
- "perf.entryDuration",
90
+ "perf.entries",
40
91
  "perf.entryDetail",
92
+ "perf.entryDuration",
41
93
  "perf.entryKeep",
94
+ "perf.entryName",
42
95
  "perf.entryRef",
96
+ "perf.entryStart",
97
+ "perf.entryType",
98
+ "perf.mark",
99
+ "perf.measure",
43
100
  // Blob and File (scr_blob.c, linked with this unit, which boxes their
44
101
  // reads as dyn promises).
45
- "blob.new",
102
+ "als.disable",
103
+ "als.enterWith",
104
+ "als.exitRun",
105
+ "als.get",
106
+ "als.new",
107
+ "als.run",
108
+ "blob.arrayBuffer",
109
+ "blob.bytes",
46
110
  "blob.fileNew",
111
+ "blob.is",
112
+ "blob.new",
47
113
  "blob.slice",
48
114
  "blob.text",
49
- "blob.bytes",
50
- "blob.arrayBuffer",
51
- "blob.is",
52
- "util.styleText",
53
- "util.inherits",
54
- "util.deprecate",
55
- "util.callbackify",
56
- "util.debuglog",
57
- "als.new",
58
- "als.get",
59
- "als.run",
60
- "als.exitRun",
61
- "als.enterWith",
62
- "als.disable",
63
115
  "dc.chanBindStore",
64
- "dc.chanUnbindStore",
65
116
  "dc.chanRunStores",
117
+ "dc.chanUnbindStore",
118
+ "util.callbackify",
119
+ "util.promisifyDyn",
120
+ "util.debuglog",
121
+ "util.deprecate",
122
+ "util.inherits",
123
+ "util.styleText",
66
124
  ]);
67
125
  /** The libCalls that enter AsyncLocalStorage stores (RuntimeFeatures
68
126
  * asyncContext). */
69
127
  const ASYNC_CONTEXT_LIB_FNS = new Set([
70
- "als.run",
71
- "als.exitRun",
72
128
  "als.enterWith",
129
+ "als.exitRun",
130
+ "als.run",
73
131
  "dc.chanBindStore",
74
132
  "dc.chanRunStores",
75
133
  // getTestContext() reads the test runner's entry in the same snapshot.
76
- "test.hasContext",
77
134
  "test.context",
135
+ "test.hasContext",
78
136
  ]);
79
137
  const LEGACY_URL_LIB_FNS = new Set([
80
- "url.legacyParse",
81
- "url.legacyFormat",
82
- "url.legacyResolve",
83
138
  "url.domainToASCII",
84
139
  "url.domainToUnicode",
140
+ "url.legacyFormat",
141
+ "url.legacyParse",
142
+ "url.legacyResolve",
85
143
  ]);
86
144
  const UTIL_CALLABLE_LIB_FNS = new Set([
87
- "util.inherits",
88
- "util.deprecate",
89
145
  "util.callbackify",
90
146
  "util.debuglog",
147
+ "util.deprecate",
148
+ "util.inherits",
91
149
  ]);
92
150
  /** 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
151
  const REGEX_LIB_FNS = new Set([
@@ -135,6 +193,8 @@ const ABORT_SIGNAL_LIB_FNS = new Set([
135
193
  /** Entry points that link the stream unit (with STREAM_LIB_PREFIXES). */
136
194
  const STREAM_LIB_FNS = new Set([
137
195
  "child.stdioStream",
196
+ "stream.chunkDone",
197
+ "stream.objectMode",
138
198
  "console.bind",
139
199
  "crypto.hashStream",
140
200
  "crypto.hashStreamPiped",
@@ -151,14 +211,15 @@ const STREAM_LIB_FNS = new Set([
151
211
  "stream.addAbortSignalFn",
152
212
  "stream.destroy",
153
213
  "stream.destroyErr",
154
- "stream.errored",
155
- "stream.prop",
156
214
  "stream.dynNative",
157
215
  "stream.dynNativePipe",
216
+ "stream.errored",
158
217
  "stream.pipeDyn",
159
- "stream.unpipeDyn",
218
+ "stream.prop",
160
219
  "stream.stdioWritable",
161
220
  "stream.unboxDyn",
221
+ "stream.handleStream",
222
+ "stream.unpipeDyn",
162
223
  "stream.workerStdio",
163
224
  ]);
164
225
  /** libCall name prefixes that link the stream unit. */
@@ -189,21 +250,22 @@ const READABLE_DYN_ASYNC_LIB_FNS = new Set([
189
250
  const READABLE_DYN_ASYNC_PREFIXES = ["readable.fromGen", "readable.op"];
190
251
  /** Entry points that link the dyn-invoke unit. */
191
252
  const DYN_INVOKE_LIB_FNS = new Set([
192
- "stream.dynNative",
193
- "stream.dynNativePipe",
194
- "stream.pipeDyn",
195
- "stream.unpipeDyn",
196
253
  "dyn.arrayProtoCall",
197
254
  "dyn.arrayPrototype",
198
255
  "dyn.builtinFunction",
199
256
  "dyn.builtinMethod",
200
257
  "dyn.defineProperty",
258
+ "child.propsDefine",
201
259
  "dyn.defineProps",
202
260
  "dyn.definePrototypeProps",
203
261
  "dyn.functionApply",
204
262
  "dyn.globalConstructor",
205
263
  "dyn.objCreateWithProperties",
206
264
  "dyn.objectTag",
265
+ "stream.dynNative",
266
+ "stream.dynNativePipe",
267
+ "stream.pipeDyn",
268
+ "stream.unpipeDyn",
207
269
  ]);
208
270
  /** 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
271
  const INHERITED_MEMBER_NAMES = new Set([
@@ -234,8 +296,8 @@ const CHILD_PROCESS_LIB_PREFIXES = ["child.", "cp.", "spawnRes.", "writer."];
234
296
  const BUILTIN_CLASS_LIB_FNS = [
235
297
  "dyn.builtinClass",
236
298
  // the stream classes, through scr_dyn_builtin_stream.c
237
- "dyn.builtinStreamClass",
238
299
  "dyn.builtinInstanceOf",
300
+ "dyn.builtinStreamClass",
239
301
  "dyn.functionInstanceOf",
240
302
  ];
241
303
  /** Entry points that link the symbol unit, besides the sym. and disposable. families. */
@@ -341,67 +403,126 @@ function boxesPromise(t, tables, seen) {
341
403
  return false;
342
404
  }
343
405
  }
406
+ /** Whether `t` carries a dgram socket, given the carrier sets so far:
407
+ * structural through functions (parameters and result), promises and
408
+ * collections; named records, unions and class instances by the sets. */
409
+ function carriesDgram(t, carriers) {
410
+ switch (t.kind) {
411
+ case "dgramSocket":
412
+ return true;
413
+ case "func":
414
+ return t.params.some((p) => carriesDgram(p, carriers)) || carriesDgram(t.ret, carriers);
415
+ case "promise":
416
+ return carriesDgram(t.inner, carriers);
417
+ case "array":
418
+ case "set":
419
+ return carriesDgram(t.elem, carriers);
420
+ case "map":
421
+ return carriesDgram(t.key, carriers) || carriesDgram(t.value, carriers);
422
+ case "record":
423
+ return carriers.records.has(t.shapeId);
424
+ case "union":
425
+ return carriers.unions.has(t.unionId);
426
+ case "object":
427
+ // Any class may be the instance's runtime class or one of its bases.
428
+ return carriers.anyClass;
429
+ default:
430
+ return false;
431
+ }
432
+ }
433
+ /** The module's dgram carriers: a fixpoint over its records, unions and
434
+ * class fields. */
435
+ function dgramCarriers(tables) {
436
+ const carriers = { records: new Set(), unions: new Set(), anyClass: false };
437
+ for (let changed = true; changed;) {
438
+ changed = false;
439
+ for (const [id, shape] of tables.records)
440
+ if (!carriers.records.has(id) && shape.fields.some((f) => carriesDgram(f.type, carriers))) {
441
+ carriers.records.add(id);
442
+ changed = true;
443
+ }
444
+ for (const [id, def] of tables.unions)
445
+ if (!carriers.unions.has(id) && def.arms.some((a) => carriesDgram(a, carriers))) {
446
+ carriers.unions.add(id);
447
+ changed = true;
448
+ }
449
+ if (!carriers.anyClass &&
450
+ [...tables.classes.values()].some((c) => c.fields.some((f) => carriesDgram(f.type, carriers)))) {
451
+ carriers.anyClass = true;
452
+ changed = true;
453
+ }
454
+ }
455
+ return carriers;
456
+ }
457
+ /** Whether converting a value of type `t` to or from dyn converts a dgram
458
+ * socket, which goes through scr_dgram_dyn.c: the socket itself, or a
459
+ * function, collection, record, union, promise or class instance that
460
+ * carries one (boxed functions convert their parameters too). */
461
+ function mentionsDgramSocket(t, tables) {
462
+ tables.dgramCarriers ??= dgramCarriers(tables);
463
+ return carriesDgram(t, tables.dgramCarriers);
464
+ }
344
465
  /** The libCall fns served by the OPTIONAL events unit (scr_events.c):
345
466
  * process signal/exit listeners and the piped-stdin surface. */
346
467
  const PROCESS_EVENT_LIB_FNS = new Set([
347
- "process.stdio",
348
- "process.onSignal",
468
+ "process.offExit",
349
469
  "process.offSignal",
350
470
  "process.onExit",
351
- "process.offExit",
471
+ "process.onSignal",
472
+ "process.stdio",
473
+ "stdin.nextChunk",
352
474
  "stdin.onData",
353
475
  "stdin.onEnd",
354
476
  "stdin.onError",
355
- "stdin.nextChunk",
356
477
  // node:readline rides the stdin unit (scr_readline.c links beside
357
478
  // scr_events.c under the same gate).
479
+ "rl.checkCompleter",
480
+ "rl.checkOptions",
481
+ "rl.close",
358
482
  "rl.create",
359
483
  "rl.createSignal",
484
+ "rl.cursor",
485
+ "rl.cursorPos",
486
+ "rl.getPrompt",
487
+ "rl.history",
488
+ "rl.isPromises",
489
+ "rl.isTerminal",
490
+ "rl.iterNext",
491
+ "rl.iterOpen",
492
+ "rl.iterReturn",
493
+ "rl.keypressStdin",
494
+ "rl.keypressStream",
495
+ "rl.line",
496
+ "rl.moves",
497
+ "rl.numProp",
498
+ "rl.on",
499
+ "rl.pause",
500
+ "rl.prompt",
501
+ "rl.promptWith",
360
502
  "rl.question",
361
503
  "rl.questionAsync",
362
- "rl.questionAsyncSignal",
363
- "rl.questionDyn",
364
504
  "rl.questionAsyncDyn",
505
+ "rl.questionAsyncSignal",
365
506
  "rl.questionAsyncSignalDyn",
366
- "rl.close",
367
- "rl.pause",
507
+ "rl.questionDyn",
368
508
  "rl.resume",
369
- "rl.prompt",
370
- "rl.promptWith",
509
+ "rl.seq",
510
+ "rl.setHistory",
511
+ "rl.setOptions",
371
512
  "rl.setPrompt",
372
513
  "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
514
  "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
515
  "rl.uiClearLine",
402
516
  "rl.uiClearScreenDown",
403
- "rl.uiRollback",
404
517
  "rl.uiCommit",
518
+ "rl.uiCursorTo",
519
+ "rl.uiMoveCursor",
520
+ "rl.uiOpen",
521
+ "rl.uiOpenStream",
522
+ "rl.uiRollback",
523
+ "rl.write",
524
+ "rl.writeKey",
525
+ "stdin.onKeypress",
405
526
  ]);
406
527
  /** The legacy http2.* libCalls implemented by scr_http.c/scr_tls.c (the
407
528
  * allowHTTP1 compatibility slice) — they must NOT pull scr_http2.c, so
@@ -417,9 +538,66 @@ const STDIO_EXTENDED_NAMES = new Set(["setEncoding", "resize"]);
417
538
  const rule = (r) => r;
418
539
  /* The HTTP, HTTPS, HTTP/2 and TLS surfaces, which link the net unit. */
419
540
  const NET_PREFIXES = ["net.", "http.", "tls.", "https.", "http2."];
541
+ /** The scr_pki.c entry points (the pki unit). */
542
+ export const PKI_LIB_FNS = new Set([
543
+ "crypto.createPrivateKey",
544
+ "crypto.createPublicKey",
545
+ "crypto.createSign",
546
+ "crypto.createVerify",
547
+ "crypto.generateKeyPairCb",
548
+ "crypto.generateKeyPairSync",
549
+ "crypto.signOneshot",
550
+ "crypto.verifyOneshot",
551
+ ]);
552
+ /** The WebCrypto algorithms scr_webcrypto_pki.c implements over the pki
553
+ * unit (lowercased). */
554
+ const WEBCRYPTO_ASYMMETRIC_NAMES = new Set([
555
+ "ecdsa",
556
+ "ed25519",
557
+ "rsa-pss",
558
+ "rsassa-pkcs1-v1_5",
559
+ ]);
560
+ /** Whether a string literal in the module names Ed25519, without regard
561
+ * to case ("ed25519" for node:crypto, "Ed25519" for WebCrypto): the
562
+ * Ed25519 unit links then, alongside the pki unit. */
563
+ export function moduleNamesEd25519(mod) {
564
+ let named = false;
565
+ everyModuleNode(mod, {
566
+ expr: (node) => {
567
+ if (node.kind === "strLit" && node.value.toLowerCase() === "ed25519")
568
+ named = true;
569
+ return !named;
570
+ },
571
+ stmt: () => !named,
572
+ type: () => true,
573
+ });
574
+ return named;
575
+ }
576
+ /** Whether the module calls WebCrypto and a string literal in it names one
577
+ * of the asymmetric algorithms (matched without regard to case, as
578
+ * normalizeAlgorithm matches names): scr_webcrypto_pki.c and the pki unit
579
+ * link then. */
580
+ export function moduleUsesWebCryptoAsymmetric(mod) {
581
+ let webcrypto = false;
582
+ let named = false;
583
+ everyModuleNode(mod, {
584
+ expr: (node) => {
585
+ if (node.kind === "libCall" && node.fn.startsWith("webcrypto."))
586
+ webcrypto = true;
587
+ if (node.kind === "strLit" && WEBCRYPTO_ASYMMETRIC_NAMES.has(node.value.toLowerCase()))
588
+ named = true;
589
+ return !(webcrypto && named);
590
+ },
591
+ stmt: () => !(webcrypto && named),
592
+ type: () => true,
593
+ });
594
+ return webcrypto && named;
595
+ }
420
596
  /** One rule per runtime feature, sorted by name. A new feature is an
421
597
  * entry here and its line in noRuntimeFeatures; RuntimeFeatures, the scan
422
- * and its early exit derive from this table. */
598
+ * and its early exit derive from this table. The lists above keep one
599
+ * entry per line, sorted within each commented group, so changes that add
600
+ * different entries touch different lines. */
423
601
  const RUNTIME_FEATURE_RULES = {
424
602
  assert: rule({ prefixes: ["assert."] }),
425
603
  /** The program enters AsyncLocalStorage stores (store.run, enterWith,
@@ -441,8 +619,17 @@ const RUNTIME_FEATURE_RULES = {
441
619
  }),
442
620
  /** scr_cipher.c over the mbedTLS archive; DEP0182 reports through the
443
621
  * process-warning unit, and unknown output encodings render through the
444
- * inspect unit. */
445
- cipher: rule({ fns: ["crypto.cipherNew"] }),
622
+ * inspect unit. WebCrypto's encrypt, decrypt, wrapKey and unwrapKey
623
+ * (scr_webcrypto_aes.c) link the same archive. */
624
+ cipher: rule({
625
+ fns: [
626
+ "crypto.cipherNew",
627
+ "webcrypto.encrypt",
628
+ "webcrypto.decrypt",
629
+ "webcrypto.wrapKey",
630
+ "webcrypto.unwrapKey",
631
+ ],
632
+ }),
446
633
  copying: rule({
447
634
  expr: (node, _tables) => (node.kind === "arrIntrinsic" && COPYING_ARR_METHODS.has(node.method)) ||
448
635
  (node.kind === "bytesIntrinsic" && COPYING_BYTES_METHODS.has(node.method)),
@@ -450,19 +637,32 @@ const RUNTIME_FEATURE_RULES = {
450
637
  dc: rule({ prefixes: ["dc."] }),
451
638
  /** dns.lookup lives in the dgram unit. */
452
639
  dgram: rule({ prefixes: ["dgram.", "dns."], types: ["dgramSocket"] }),
640
+ /** A dgram socket converts to or from an untyped value (its handle box,
641
+ * a boxed function or record that carries one): scr_dgram_dyn.c over
642
+ * the dgram unit. */
643
+ dgramDyn: rule({
644
+ expr: (node, tables) => (node.kind === "dynFrom" && mentionsDgramSocket(node.value.type, tables())) ||
645
+ (node.kind === "dynCheck" && mentionsDgramSocket(node.type, tables())),
646
+ }),
453
647
  /** node:dns/promises: scr_dns_promises.c over the dgram unit. */
454
648
  dnsPromises: rule({ fns: ["dns.promisesLookup", "dns.promisesLookupService"] }),
455
649
  dynAsync: rule({
456
650
  initial: (mod) => mod.workers === true ||
457
651
  mod.functions.some((fn) => fn.async === true && fn.generator === undefined && fn.returnType.kind === "dyn"),
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.
652
+ // The legacy url functions, crypto.createCipheriv and
653
+ // ecdh.setPublicKey emit their deprecation warnings through the
654
+ // dyn-async unit (WebCrypto's encrypt and decrypt link scr_cipher.c
655
+ // too); scr_wasm.c boxes its handles and promises through it.
461
656
  fns: [
462
657
  ...DYN_ASYNC_LIB_FNS,
463
658
  ...READABLE_DYN_ASYNC_LIB_FNS,
464
659
  ...LEGACY_URL_LIB_FNS,
465
660
  "crypto.cipherNew",
661
+ "webcrypto.encrypt",
662
+ "webcrypto.decrypt",
663
+ "webcrypto.wrapKey",
664
+ "webcrypto.unwrapKey",
665
+ "crypto.ecdhNew",
466
666
  ],
467
667
  prefixes: [...READABLE_DYN_ASYNC_PREFIXES, "wasm."],
468
668
  expr: (node, tables) => (node.kind === "awaitExpr" && node.type.kind === "dyn") ||
@@ -485,7 +685,12 @@ const RUNTIME_FEATURE_RULES = {
485
685
  dynBuiltinStream: rule({ fns: ["dyn.builtinStreamClass"] }),
486
686
  dynInvoke: rule({
487
687
  initial: (mod) => mod.workers === true,
488
- fns: [...DYN_INVOKE_LIB_FNS, ...UTIL_CALLABLE_LIB_FNS, ...BUILTIN_CLASS_LIB_FNS],
688
+ fns: [
689
+ ...DYN_INVOKE_LIB_FNS,
690
+ ...UTIL_CALLABLE_LIB_FNS,
691
+ ...BUILTIN_CLASS_LIB_FNS,
692
+ "util.promisifyDyn",
693
+ ],
489
694
  // Constant-key reads of Object.prototype member names answer the
490
695
  // inherited member through scr_dyn_invoke.c.
491
696
  expr: (node, _tables) => node.kind === "dynInvoke" ||
@@ -501,8 +706,26 @@ const RUNTIME_FEATURE_RULES = {
501
706
  streamDyn: rule({
502
707
  fns: ["stream.dynNative", "stream.dynNativePipe", "stream.pipeDyn", "stream.unpipeDyn"],
503
708
  }),
709
+ /** Own properties JavaScript adds to children (scr_dyn_handle_props.c). */
710
+ handleProps: rule({ fns: ["child.propsInstall"] }),
711
+ /** for await over checked-dynamic values (scr_dyn_for_await.c). */
712
+ dynForAwait: rule({ fns: ["dyn.asyncIteratorOpen", "dyn.asyncIteratorWasSync"] }),
713
+ /** Buffer.prototype methods called on checked-dynamic values
714
+ * (scr_bytes_dyn.c). */
715
+ dynBuffer: rule({
716
+ expr: (node, _tables) => node.kind === "dynInvoke" && DYN_BUFFER_METHODS.has(node.method),
717
+ }),
718
+ /** Builtin functions read as values (scr_builtin_values.c). */
719
+ builtinValues: rule({ fns: ["buffer.byteLenValue", "buffer.allocValue", "fs.realpathValue"] }),
504
720
  /** The stream unit emits through the emitter unit, also when the
505
721
  * program constructs no stream (a pipeline of functions). */
722
+ /** scr_ecdh.c over the mbedTLS archive; DEP0031 reports through the
723
+ * process-warning unit, and unknown encodings and formats render through
724
+ * the inspect unit. */
725
+ ecdh: rule({ fns: ["crypto.ecdhNew", "crypto.ecdhConvertKey"] }),
726
+ /** scr_dh.c over the mbedTLS archive; unknown encodings render through
727
+ * the inspect unit. */
728
+ dh: rule({ fns: ["crypto.dhNew", "crypto.dhGroupNew"] }),
506
729
  emitter: rule({
507
730
  initial: (mod) => mod.workers === true || (mod.classes ?? []).some((c) => c.name === RUNTIME_EMITTER_CLASS),
508
731
  fns: [...STREAM_LIB_FNS, ...BUILTIN_CLASS_LIB_FNS],
@@ -542,6 +765,14 @@ const RUNTIME_FEATURE_RULES = {
542
765
  "global.native",
543
766
  "util.styleText",
544
767
  "crypto.cipherNew",
768
+ "webcrypto.encrypt",
769
+ "webcrypto.decrypt",
770
+ "webcrypto.wrapKey",
771
+ "webcrypto.unwrapKey",
772
+ "crypto.ecdhNew",
773
+ "crypto.ecdhConvertKey",
774
+ "crypto.dhNew",
775
+ "crypto.dhGroupNew",
545
776
  ...BUILTIN_CLASS_LIB_FNS,
546
777
  ...UTIL_CALLABLE_LIB_FNS,
547
778
  ],
@@ -572,6 +803,12 @@ const RUNTIME_FEATURE_RULES = {
572
803
  /** perf_hooks event-loop metrics (eventLoopUtilization,
573
804
  * monitorEventLoopDelay): scr_perf_loop.c. */
574
805
  perfLoop: rule({ fns: ["perf.idleTime"], prefixes: ["perf.loop", "perf.eld"] }),
806
+ /** scr_pki.c over the mbedTLS archive: asymmetric KeyObjects and
807
+ * signatures. */
808
+ pki: rule({ initial: moduleUsesWebCryptoAsymmetric, fns: [...PKI_LIB_FNS] }),
809
+ /** scr_ed25519.c (the vendored libsodium Ed25519), linked with pki: a
810
+ * string literal in the module names Ed25519. */
811
+ ed25519: rule({ initial: moduleNamesEd25519 }),
575
812
  processEvents: rule({ fns: [...PROCESS_EVENT_LIB_FNS, "util.styleText"], types: ["procStream"] }),
576
813
  /** scr_url_legacy.c parses and stringifies queries. */
577
814
  qs: rule({ fns: [...QS_LIB_FNS, ...LEGACY_URL_LIB_FNS] }),
@@ -619,6 +856,10 @@ const RUNTIME_FEATURE_RULES = {
619
856
  }),
620
857
  tls: rule({ prefixes: ["tls.", "https.", "http2."], types: ["secureCtx"] }),
621
858
  tlsCa: rule({ prefixes: ["tlsca."] }),
859
+ /** util.promisify over an untyped function (scr_util_promisify.c): its
860
+ * promises go through the dyn-async unit and its calls through the
861
+ * dyn-invoke unit. */
862
+ utilPromisify: rule({ fns: ["util.promisifyDyn"] }),
622
863
  /** process.emitWarning is assigned (process.setEmitWarning). */
623
864
  warningReplace: rule({ fns: ["process.setEmitWarning"] }),
624
865
  /** The WebAssembly API (scr_wasm.c). */
@@ -643,28 +884,33 @@ function noRuntimeFeatures() {
643
884
  copying: false,
644
885
  dc: false,
645
886
  dgram: false,
887
+ dgramDyn: false,
646
888
  dnsPromises: false,
647
889
  dynAsync: false,
648
890
  dynBuiltinClass: false,
649
891
  dynBuiltinStream: false,
650
892
  dynInvoke: false,
651
893
  dynTier: false,
894
+ ecdh: false,
895
+ dh: false,
652
896
  emitter: false,
653
897
  eventTarget: false,
654
898
  eventsOnceSignal: false,
655
899
  fetch: false,
656
900
  fileHandle: false,
657
901
  fsWatch: false,
658
- netLookup: false,
659
- http: false,
660
902
  http2: false,
903
+ http: false,
661
904
  inspect: false,
662
905
  legacyTextDecoder: false,
663
906
  mockTimers: false,
664
907
  net: false,
908
+ netLookup: false,
665
909
  nodeTest: false,
666
910
  parseArgs: false,
667
911
  perfLoop: false,
912
+ pki: false,
913
+ ed25519: false,
668
914
  processEvents: false,
669
915
  qs: false,
670
916
  regex: false,
@@ -672,9 +918,14 @@ function noRuntimeFeatures() {
672
918
  stdioExtended: false,
673
919
  stream: false,
674
920
  streamDyn: false,
921
+ handleProps: false,
922
+ dynForAwait: false,
923
+ dynBuffer: false,
924
+ builtinValues: false,
675
925
  symbol: false,
676
926
  tls: false,
677
927
  tlsCa: false,
928
+ utilPromisify: false,
678
929
  warningReplace: false,
679
930
  wasm: false,
680
931
  webcrypto: false,
@@ -752,6 +1003,12 @@ function scanRuntimeFeatures(mod, stopAt) {
752
1003
  };
753
1004
  if (keepGoing())
754
1005
  everyModuleNode(mod, { expr, stmt: keepGoing, type });
1006
+ // Inline-cache sites of dynamic-tier functions use the tier's shapes
1007
+ // (scr_js_object.c, with the SCR_JS_TIER build of scr_json.c).
1008
+ if (!features.dynTier && mod.functions.some((fn) => fn.tier === "dynamic")) {
1009
+ const sites = new JsIcSites(mod);
1010
+ features.dynTier = mod.functions.some((fn) => fn.tier === "dynamic" && hasJsIcSite(fn, sites));
1011
+ }
755
1012
  return features;
756
1013
  }
757
1014
  /** True when the module contains any regex construct — a regexLit /
@@ -984,9 +1241,9 @@ export function moduleUsesTls(mod) {
984
1241
  export function moduleUsesTlsCa(mod) {
985
1242
  return scanRuntimeFeatures(mod, "tlsCa").tlsCa;
986
1243
  }
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. */
1244
+ /** True when the module has dynamic-tier jsval operations or inline-cache
1245
+ * sites: the link switch for the scr_js_* runtime units (two-tier design
1246
+ * I3). Programs without them never link a scr_js_ symbol. */
990
1247
  export function moduleUsesDynTier(mod) {
991
1248
  return scanRuntimeFeatures(mod, "dynTier").dynTier;
992
1249
  }