@scriptc/compiler 0.4.1 → 0.4.3

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 (999) hide show
  1. package/ambient/scriptc-node-fallback.d.ts +977 -113
  2. package/dist/backend/cycle-analysis.d.ts +5 -1
  3. package/dist/backend/cycle-analysis.js +6 -4
  4. package/dist/backend/cycle-analysis.js.map +1 -1
  5. package/dist/backend/cycle-analysis.test.js +55 -0
  6. package/dist/backend/cycle-analysis.test.js.map +1 -1
  7. package/dist/backend/cycle-mutability.d.ts +9 -1
  8. package/dist/backend/cycle-mutability.js +21 -3
  9. package/dist/backend/cycle-mutability.js.map +1 -1
  10. package/dist/backend/executable-features.js +6 -1
  11. package/dist/backend/executable-features.js.map +1 -1
  12. package/dist/backend/immutability.d.ts +7 -3
  13. package/dist/backend/immutability.js +33 -29
  14. package/dist/backend/immutability.js.map +1 -1
  15. package/dist/backend/library-pack.js +5 -0
  16. package/dist/backend/library-pack.js.map +1 -1
  17. package/dist/backend/llvm/alloc.d.ts +23 -4
  18. package/dist/backend/llvm/alloc.js +61 -8
  19. package/dist/backend/llvm/alloc.js.map +1 -1
  20. package/dist/backend/llvm/appended-array-literals.d.ts +2 -1
  21. package/dist/backend/llvm/appended-array-literals.js +44 -36
  22. package/dist/backend/llvm/appended-array-literals.js.map +1 -1
  23. package/dist/backend/llvm/appended-array-literals.test.js +4 -3
  24. package/dist/backend/llvm/appended-array-literals.test.js.map +1 -1
  25. package/dist/backend/llvm/array-search.d.ts +4 -3
  26. package/dist/backend/llvm/array-search.js +23 -10
  27. package/dist/backend/llvm/array-search.js.map +1 -1
  28. package/dist/backend/llvm/blocks.d.ts +1 -1
  29. package/dist/backend/llvm/blocks.js +2 -2
  30. package/dist/backend/llvm/blocks.js.map +1 -1
  31. package/dist/backend/llvm/byte-windows.js +2 -0
  32. package/dist/backend/llvm/byte-windows.js.map +1 -1
  33. package/dist/backend/llvm/bytes-alias.d.ts +6 -1
  34. package/dist/backend/llvm/bytes-alias.js +8 -2
  35. package/dist/backend/llvm/bytes-alias.js.map +1 -1
  36. package/dist/backend/llvm/bytes-loop-versions.d.ts +70 -7
  37. package/dist/backend/llvm/bytes-loop-versions.js +567 -30
  38. package/dist/backend/llvm/bytes-loop-versions.js.map +1 -1
  39. package/dist/backend/llvm/bytes-loop-versions.test.js +389 -2
  40. package/dist/backend/llvm/bytes-loop-versions.test.js.map +1 -1
  41. package/dist/backend/llvm/checked-value-lifetimes.js +2 -0
  42. package/dist/backend/llvm/checked-value-lifetimes.js.map +1 -1
  43. package/dist/backend/llvm/classes.d.ts +74 -1
  44. package/dist/backend/llvm/classes.js +364 -54
  45. package/dist/backend/llvm/classes.js.map +1 -1
  46. package/dist/backend/llvm/classes.test.js +384 -17
  47. package/dist/backend/llvm/classes.test.js.map +1 -1
  48. package/dist/backend/llvm/common.d.ts +10 -6
  49. package/dist/backend/llvm/common.js +10 -6
  50. package/dist/backend/llvm/common.js.map +1 -1
  51. package/dist/backend/llvm/constant-callbacks.d.ts +2 -1
  52. package/dist/backend/llvm/constant-callbacks.js +91 -56
  53. package/dist/backend/llvm/constant-callbacks.js.map +1 -1
  54. package/dist/backend/llvm/constant-callbacks.test.js +4 -4
  55. package/dist/backend/llvm/constant-callbacks.test.js.map +1 -1
  56. package/dist/backend/llvm/counted-loops.d.ts +11 -1
  57. package/dist/backend/llvm/counted-loops.js +80 -23
  58. package/dist/backend/llvm/counted-loops.js.map +1 -1
  59. package/dist/backend/llvm/dense-array-access.d.ts +39 -8
  60. package/dist/backend/llvm/dense-array-access.js +222 -52
  61. package/dist/backend/llvm/dense-array-access.js.map +1 -1
  62. package/dist/backend/llvm/dense-array-access.test.js +36 -0
  63. package/dist/backend/llvm/dense-array-access.test.js.map +1 -1
  64. package/dist/backend/llvm/dense-array-loops.d.ts +35 -16
  65. package/dist/backend/llvm/dense-array-loops.js +237 -12
  66. package/dist/backend/llvm/dense-array-loops.js.map +1 -1
  67. package/dist/backend/llvm/dense-array-loops.test.js +140 -15
  68. package/dist/backend/llvm/dense-array-loops.test.js.map +1 -1
  69. package/dist/backend/llvm/dyn-handle-tags.test.js +6 -1
  70. package/dist/backend/llvm/dyn-handle-tags.test.js.map +1 -1
  71. package/dist/backend/llvm/dyn.d.ts +51 -1
  72. package/dist/backend/llvm/dyn.js +683 -69
  73. package/dist/backend/llvm/dyn.js.map +1 -1
  74. package/dist/backend/llvm/emit-function.js +33 -26
  75. package/dist/backend/llvm/emit-function.js.map +1 -1
  76. package/dist/backend/llvm/emit-journal.d.ts +93 -0
  77. package/dist/backend/llvm/emit-journal.js +170 -0
  78. package/dist/backend/llvm/emit-journal.js.map +1 -0
  79. package/dist/backend/llvm/emit-module.js +208 -34
  80. package/dist/backend/llvm/emit-module.js.map +1 -1
  81. package/dist/backend/llvm/emit-statements.d.ts +0 -27
  82. package/dist/backend/llvm/emit-statements.js +577 -93
  83. package/dist/backend/llvm/emit-statements.js.map +1 -1
  84. package/dist/backend/llvm/emitter-state.d.ts +7 -0
  85. package/dist/backend/llvm/emitter-state.js +14 -0
  86. package/dist/backend/llvm/emitter-state.js.map +1 -0
  87. package/dist/backend/llvm/emitter.d.ts +314 -49
  88. package/dist/backend/llvm/emitter.js +1241 -129
  89. package/dist/backend/llvm/emitter.js.map +1 -1
  90. package/dist/backend/llvm/emitter.test.js +54 -5
  91. package/dist/backend/llvm/emitter.test.js.map +1 -1
  92. package/dist/backend/llvm/expr-async.js +19 -0
  93. package/dist/backend/llvm/expr-async.js.map +1 -1
  94. package/dist/backend/llvm/expr-bytes.d.ts +5 -2
  95. package/dist/backend/llvm/expr-bytes.js +144 -52
  96. package/dist/backend/llvm/expr-bytes.js.map +1 -1
  97. package/dist/backend/llvm/expr-callbacks.js +47 -0
  98. package/dist/backend/llvm/expr-callbacks.js.map +1 -1
  99. package/dist/backend/llvm/expr-calls.d.ts +1 -1
  100. package/dist/backend/llvm/expr-calls.js +62 -36
  101. package/dist/backend/llvm/expr-calls.js.map +1 -1
  102. package/dist/backend/llvm/expr-containers.d.ts +14 -2
  103. package/dist/backend/llvm/expr-containers.js +148 -40
  104. package/dist/backend/llvm/expr-containers.js.map +1 -1
  105. package/dist/backend/llvm/expr-context.d.ts +14 -0
  106. package/dist/backend/llvm/expr-control.js +2 -3
  107. package/dist/backend/llvm/expr-control.js.map +1 -1
  108. package/dist/backend/llvm/expr-dynamic.js +71 -16
  109. package/dist/backend/llvm/expr-dynamic.js.map +1 -1
  110. package/dist/backend/llvm/expr-primitives.js +126 -36
  111. package/dist/backend/llvm/expr-primitives.js.map +1 -1
  112. package/dist/backend/llvm/expr-primitives.test.js +11 -6
  113. package/dist/backend/llvm/expr-primitives.test.js.map +1 -1
  114. package/dist/backend/llvm/expr-records.d.ts +12 -0
  115. package/dist/backend/llvm/expr-records.js +106 -0
  116. package/dist/backend/llvm/expr-records.js.map +1 -1
  117. package/dist/backend/llvm/expr-stream-bridges.d.ts +2 -2
  118. package/dist/backend/llvm/expr-stream-bridges.js +225 -64
  119. package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
  120. package/dist/backend/llvm/expr-stream-bridges.test.js +1 -1
  121. package/dist/backend/llvm/expr-stream-bridges.test.js.map +1 -1
  122. package/dist/backend/llvm/expr-stream-callbacks.d.ts +2 -2
  123. package/dist/backend/llvm/expr-stream-callbacks.js +200 -50
  124. package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
  125. package/dist/backend/llvm/int32-kind-loops.d.ts +39 -0
  126. package/dist/backend/llvm/int32-kind-loops.js +106 -0
  127. package/dist/backend/llvm/int32-kind-loops.js.map +1 -0
  128. package/dist/backend/llvm/integer-or-nan-indexes.test.d.ts +1 -0
  129. package/dist/backend/llvm/integer-or-nan-indexes.test.js +118 -0
  130. package/dist/backend/llvm/integer-or-nan-indexes.test.js.map +1 -0
  131. package/dist/backend/llvm/integer-values.d.ts +20 -1
  132. package/dist/backend/llvm/integer-values.js +71 -0
  133. package/dist/backend/llvm/integer-values.js.map +1 -1
  134. package/dist/backend/llvm/js-ic.d.ts +1 -1
  135. package/dist/backend/llvm/js-ic.js +1 -1
  136. package/dist/backend/llvm/js-ic.js.map +1 -1
  137. package/dist/backend/llvm/key-orders.d.ts +7 -0
  138. package/dist/backend/llvm/key-orders.js +33 -0
  139. package/dist/backend/llvm/key-orders.js.map +1 -0
  140. package/dist/backend/llvm/lib-connect.js +4 -0
  141. package/dist/backend/llvm/lib-connect.js.map +1 -1
  142. package/dist/backend/llvm/lib-datagram.js +11 -0
  143. package/dist/backend/llvm/lib-datagram.js.map +1 -1
  144. package/dist/backend/llvm/lib-dispatch.js +90 -2
  145. package/dist/backend/llvm/lib-dispatch.js.map +1 -1
  146. package/dist/backend/llvm/lib-filesystem.js +65 -4
  147. package/dist/backend/llvm/lib-filesystem.js.map +1 -1
  148. package/dist/backend/llvm/lib-http2.d.ts +4 -0
  149. package/dist/backend/llvm/lib-http2.js +24 -17
  150. package/dist/backend/llvm/lib-http2.js.map +1 -1
  151. package/dist/backend/llvm/lib-lookup.js +16 -6
  152. package/dist/backend/llvm/lib-lookup.js.map +1 -1
  153. package/dist/backend/llvm/lib-process.js +65 -14
  154. package/dist/backend/llvm/lib-process.js.map +1 -1
  155. package/dist/backend/llvm/lib-shared.js +126 -3
  156. package/dist/backend/llvm/lib-shared.js.map +1 -1
  157. package/dist/backend/llvm/lib-stream.js +97 -30
  158. package/dist/backend/llvm/lib-stream.js.map +1 -1
  159. package/dist/backend/llvm/lib-tls.js +23 -0
  160. package/dist/backend/llvm/lib-tls.js.map +1 -1
  161. package/dist/backend/llvm/local-array-reads.js +181 -64
  162. package/dist/backend/llvm/local-array-reads.js.map +1 -1
  163. package/dist/backend/llvm/local-array-reads.test.js +28 -0
  164. package/dist/backend/llvm/local-array-reads.test.js.map +1 -1
  165. package/dist/backend/llvm/loop-state.d.ts +33 -0
  166. package/dist/backend/llvm/loop-state.js +42 -0
  167. package/dist/backend/llvm/loop-state.js.map +1 -0
  168. package/dist/backend/llvm/map-number-lookup.d.ts +26 -8
  169. package/dist/backend/llvm/map-number-lookup.js +91 -31
  170. package/dist/backend/llvm/map-number-lookup.js.map +1 -1
  171. package/dist/backend/llvm/map-number-lookup.test.js +55 -0
  172. package/dist/backend/llvm/map-number-lookup.test.js.map +1 -1
  173. package/dist/backend/llvm/map-read-lifetimes.js +4 -2
  174. package/dist/backend/llvm/map-read-lifetimes.js.map +1 -1
  175. package/dist/backend/llvm/nullable-unions.d.ts +2 -1
  176. package/dist/backend/llvm/nullable-unions.js +15 -3
  177. package/dist/backend/llvm/nullable-unions.js.map +1 -1
  178. package/dist/backend/llvm/publish.d.ts +18 -1
  179. package/dist/backend/llvm/publish.js +76 -25
  180. package/dist/backend/llvm/publish.js.map +1 -1
  181. package/dist/backend/llvm/publish.test.js +3 -0
  182. package/dist/backend/llvm/publish.test.js.map +1 -1
  183. package/dist/backend/llvm/receivers.js +7 -2
  184. package/dist/backend/llvm/receivers.js.map +1 -1
  185. package/dist/backend/llvm/record-results.d.ts +1 -9
  186. package/dist/backend/llvm/record-results.js +2 -11
  187. package/dist/backend/llvm/record-results.js.map +1 -1
  188. package/dist/backend/llvm/reference-writes.d.ts +7 -2
  189. package/dist/backend/llvm/reference-writes.js +91 -72
  190. package/dist/backend/llvm/reference-writes.js.map +1 -1
  191. package/dist/backend/llvm/regex-matchers.js +161 -14
  192. package/dist/backend/llvm/regex-matchers.js.map +1 -1
  193. package/dist/backend/llvm/regex-matchers.test.js +18 -0
  194. package/dist/backend/llvm/regex-matchers.test.js.map +1 -1
  195. package/dist/backend/llvm/running-extrema.d.ts +11 -0
  196. package/dist/backend/llvm/running-extrema.js +115 -0
  197. package/dist/backend/llvm/running-extrema.js.map +1 -0
  198. package/dist/backend/llvm/running-extrema.test.d.ts +1 -0
  199. package/dist/backend/llvm/running-extrema.test.js +89 -0
  200. package/dist/backend/llvm/running-extrema.test.js.map +1 -0
  201. package/dist/backend/llvm/shapes.d.ts +79 -21
  202. package/dist/backend/llvm/shapes.js +233 -42
  203. package/dist/backend/llvm/shapes.js.map +1 -1
  204. package/dist/backend/llvm/shapes.test.js +53 -7
  205. package/dist/backend/llvm/shapes.test.js.map +1 -1
  206. package/dist/backend/llvm/speculative-integers.d.ts +6 -0
  207. package/dist/backend/llvm/speculative-integers.js +2 -2
  208. package/dist/backend/llvm/speculative-integers.js.map +1 -1
  209. package/dist/backend/llvm/stack-objects.d.ts +3 -2
  210. package/dist/backend/llvm/stack-objects.js +5 -2
  211. package/dist/backend/llvm/stack-objects.js.map +1 -1
  212. package/dist/backend/llvm/string-lifetimes.test.js +2 -1
  213. package/dist/backend/llvm/string-lifetimes.test.js.map +1 -1
  214. package/dist/backend/llvm/string-reads.d.ts +15 -0
  215. package/dist/backend/llvm/string-reads.js +128 -0
  216. package/dist/backend/llvm/string-reads.js.map +1 -1
  217. package/dist/backend/llvm/walk-borrows.d.ts +3 -0
  218. package/dist/backend/llvm/walk-borrows.js +46 -41
  219. package/dist/backend/llvm/walk-borrows.js.map +1 -1
  220. package/dist/backend/llvm/walkers.d.ts +3 -0
  221. package/dist/backend/llvm/walkers.js +88 -65
  222. package/dist/backend/llvm/walkers.js.map +1 -1
  223. package/dist/backend/llvm/wasm-modules.d.ts +6 -5
  224. package/dist/backend/llvm/wasm-modules.js +32 -9
  225. package/dist/backend/llvm/wasm-modules.js.map +1 -1
  226. package/dist/backend/llvm/wrapping-sums.d.ts +16 -1
  227. package/dist/backend/llvm/wrapping-sums.js +126 -0
  228. package/dist/backend/llvm/wrapping-sums.js.map +1 -1
  229. package/dist/backend/mangle.d.ts +3 -0
  230. package/dist/backend/mangle.js +5 -0
  231. package/dist/backend/mangle.js.map +1 -1
  232. package/dist/backend/may-throw.d.ts +8 -10
  233. package/dist/backend/may-throw.js +14 -10
  234. package/dist/backend/may-throw.js.map +1 -1
  235. package/dist/backend/native/contracts.d.ts +27 -4
  236. package/dist/backend/native/executable.js +31 -8
  237. package/dist/backend/native/executable.js.map +1 -1
  238. package/dist/backend/native/library.js +1 -0
  239. package/dist/backend/native/library.js.map +1 -1
  240. package/dist/backend/native/runtime-inputs.d.ts +1 -1
  241. package/dist/backend/native/runtime-inputs.js +1 -0
  242. package/dist/backend/native/runtime-inputs.js.map +1 -1
  243. package/dist/backend/native-codegen.d.ts +11 -6
  244. package/dist/backend/native-codegen.js +36 -9
  245. package/dist/backend/native-codegen.js.map +1 -1
  246. package/dist/backend/native-codegen.test.js +0 -23
  247. package/dist/backend/native-codegen.test.js.map +1 -1
  248. package/dist/backend/native-link-info-core.d.ts +18 -4
  249. package/dist/backend/native-link-info-core.js.map +1 -1
  250. package/dist/backend/optimization.d.ts +2 -2
  251. package/dist/backend/publication.d.ts +12 -1
  252. package/dist/backend/publication.js +37 -14
  253. package/dist/backend/publication.js.map +1 -1
  254. package/dist/backend/publication.test.js +30 -0
  255. package/dist/backend/publication.test.js.map +1 -1
  256. package/dist/backend/result-slots.d.ts +16 -0
  257. package/dist/backend/result-slots.js +23 -0
  258. package/dist/backend/result-slots.js.map +1 -0
  259. package/dist/backend/runtime-abi.d.ts +2 -2
  260. package/dist/backend/runtime-abi.js +2 -2
  261. package/dist/backend/runtime-pack-core.d.ts +2 -1
  262. package/dist/backend/runtime-pack-core.js +2 -1
  263. package/dist/backend/runtime-pack-core.js.map +1 -1
  264. package/dist/backend/runtime-pack-targets.test.js +5 -1
  265. package/dist/backend/runtime-pack-targets.test.js.map +1 -1
  266. package/dist/backend/runtime-pack.d.ts +0 -21
  267. package/dist/backend/runtime-pack.js +0 -29
  268. package/dist/backend/runtime-pack.js.map +1 -1
  269. package/dist/backend/runtime-pack.test.js +10 -69
  270. package/dist/backend/runtime-pack.test.js.map +1 -1
  271. package/dist/backend/stack-observations.d.ts +2 -1
  272. package/dist/backend/stack-observations.js +67 -42
  273. package/dist/backend/stack-observations.js.map +1 -1
  274. package/dist/backend/target-diagnostics.js +33 -1
  275. package/dist/backend/target-diagnostics.js.map +1 -1
  276. package/dist/backend/warm-cache.js +4 -0
  277. package/dist/backend/warm-cache.js.map +1 -1
  278. package/dist/cli/command.js +26 -6
  279. package/dist/cli/command.js.map +1 -1
  280. package/dist/cli/usage.d.ts +5 -1
  281. package/dist/cli/usage.js +10 -5
  282. package/dist/cli/usage.js.map +1 -1
  283. package/dist/compat/fetch-profile.js +1 -1
  284. package/dist/compat/fetch-profile.js.map +1 -1
  285. package/dist/contracts/check.js +5 -4
  286. package/dist/contracts/check.js.map +1 -1
  287. package/dist/contracts/int32-elements.js +10 -2
  288. package/dist/contracts/int32-elements.js.map +1 -1
  289. package/dist/coverage/report.d.ts +7 -2
  290. package/dist/coverage/report.js +30 -3
  291. package/dist/coverage/report.js.map +1 -1
  292. package/dist/coverage/verdict-cache.d.ts +1 -0
  293. package/dist/coverage/verdict-cache.js +4 -0
  294. package/dist/coverage/verdict-cache.js.map +1 -1
  295. package/dist/coverage/verdict-semantic.js +4 -0
  296. package/dist/coverage/verdict-semantic.js.map +1 -1
  297. package/dist/diagnostics/diagnostic.d.ts +4 -0
  298. package/dist/diagnostics/diagnostic.js.map +1 -1
  299. package/dist/diagnostics/dynamic-tier.d.ts +40 -0
  300. package/dist/diagnostics/dynamic-tier.js +57 -0
  301. package/dist/diagnostics/dynamic-tier.js.map +1 -0
  302. package/dist/diagnostics/envelope.d.ts +5 -1
  303. package/dist/diagnostics/envelope.js +6 -2
  304. package/dist/diagnostics/envelope.js.map +1 -1
  305. package/dist/executable/executable-cache.d.ts +25 -1
  306. package/dist/executable/executable-cache.js +60 -7
  307. package/dist/executable/executable-cache.js.map +1 -1
  308. package/dist/executable/executable-cache.test.js +46 -3
  309. package/dist/executable/executable-cache.test.js.map +1 -1
  310. package/dist/executable/prepare.js +3 -1
  311. package/dist/executable/prepare.js.map +1 -1
  312. package/dist/frontend/analysis.js +1 -0
  313. package/dist/frontend/analysis.js.map +1 -1
  314. package/dist/frontend/decl-projection.d.ts +41 -0
  315. package/dist/frontend/decl-projection.js +854 -0
  316. package/dist/frontend/decl-projection.js.map +1 -0
  317. package/dist/frontend/decl-projection.test.d.ts +1 -0
  318. package/dist/frontend/decl-projection.test.js +30 -0
  319. package/dist/frontend/decl-projection.test.js.map +1 -0
  320. package/dist/frontend/dispose-hook.d.ts +2 -0
  321. package/dist/frontend/dispose-hook.js +14 -0
  322. package/dist/frontend/dispose-hook.js.map +1 -0
  323. package/dist/frontend/dts-paths.d.ts +15 -0
  324. package/dist/frontend/dts-paths.js +25 -0
  325. package/dist/frontend/dts-paths.js.map +1 -1
  326. package/dist/frontend/input-tracker.d.ts +6 -0
  327. package/dist/frontend/input-tracker.js +51 -28
  328. package/dist/frontend/input-tracker.js.map +1 -1
  329. package/dist/frontend/input-tracker.test.js +19 -0
  330. package/dist/frontend/input-tracker.test.js.map +1 -1
  331. package/dist/frontend/jsx-entities.d.ts +4 -0
  332. package/dist/frontend/jsx-entities.js +259 -0
  333. package/dist/frontend/jsx-entities.js.map +1 -0
  334. package/dist/frontend/jsx-source.d.ts +71 -0
  335. package/dist/frontend/jsx-source.js +781 -0
  336. package/dist/frontend/jsx-source.js.map +1 -0
  337. package/dist/frontend/jsx-source.test.d.ts +1 -0
  338. package/dist/frontend/jsx-source.test.js +200 -0
  339. package/dist/frontend/jsx-source.test.js.map +1 -0
  340. package/dist/frontend/literal-values.test.js +8 -9
  341. package/dist/frontend/literal-values.test.js.map +1 -1
  342. package/dist/frontend/lowering/array-indexed-mutation.js +2 -1
  343. package/dist/frontend/lowering/array-indexed-mutation.js.map +1 -1
  344. package/dist/frontend/lowering/array-values.js +103 -4
  345. package/dist/frontend/lowering/array-values.js.map +1 -1
  346. package/dist/frontend/lowering/binding-analysis.d.ts +1 -1
  347. package/dist/frontend/lowering/binding-analysis.js +2 -2
  348. package/dist/frontend/lowering/binding-analysis.js.map +1 -1
  349. package/dist/frontend/lowering/builtins/arguments.d.ts +3 -0
  350. package/dist/frontend/lowering/builtins/arguments.js +30 -15
  351. package/dist/frontend/lowering/builtins/arguments.js.map +1 -1
  352. package/dist/frontend/lowering/builtins/atomics.js +10 -6
  353. package/dist/frontend/lowering/builtins/atomics.js.map +1 -1
  354. package/dist/frontend/lowering/builtins/child-process-async.js +2 -1
  355. package/dist/frontend/lowering/builtins/child-process-async.js.map +1 -1
  356. package/dist/frontend/lowering/builtins/child-process-methods.js +46 -15
  357. package/dist/frontend/lowering/builtins/child-process-methods.js.map +1 -1
  358. package/dist/frontend/lowering/builtins/child-process-sync.js +2 -1
  359. package/dist/frontend/lowering/builtins/child-process-sync.js.map +1 -1
  360. package/dist/frontend/lowering/builtins/child-process.js +13 -2
  361. package/dist/frontend/lowering/builtins/child-process.js.map +1 -1
  362. package/dist/frontend/lowering/builtins/crypto.d.ts +4 -2
  363. package/dist/frontend/lowering/builtins/crypto.js +136 -5
  364. package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
  365. package/dist/frontend/lowering/builtins/date-classes.d.ts +46 -0
  366. package/dist/frontend/lowering/builtins/date-classes.js +477 -0
  367. package/dist/frontend/lowering/builtins/date-classes.js.map +1 -0
  368. package/dist/frontend/lowering/builtins/dates.d.ts +11 -1
  369. package/dist/frontend/lowering/builtins/dates.js +55 -26
  370. package/dist/frontend/lowering/builtins/dates.js.map +1 -1
  371. package/dist/frontend/lowering/builtins/dh.d.ts +15 -0
  372. package/dist/frontend/lowering/builtins/dh.js +151 -0
  373. package/dist/frontend/lowering/builtins/dh.js.map +1 -0
  374. package/dist/frontend/lowering/builtins/disposable-stack.js +2 -1
  375. package/dist/frontend/lowering/builtins/disposable-stack.js.map +1 -1
  376. package/dist/frontend/lowering/builtins/ecdh.d.ts +12 -1
  377. package/dist/frontend/lowering/builtins/ecdh.js +7 -7
  378. package/dist/frontend/lowering/builtins/ecdh.js.map +1 -1
  379. package/dist/frontend/lowering/builtins/errors.d.ts +15 -0
  380. package/dist/frontend/lowering/builtins/errors.js +110 -0
  381. package/dist/frontend/lowering/builtins/errors.js.map +1 -1
  382. package/dist/frontend/lowering/builtins/filesystem-calls.d.ts +1 -1
  383. package/dist/frontend/lowering/builtins/filesystem-calls.js +23 -17
  384. package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
  385. package/dist/frontend/lowering/builtins/filesystem.js +6 -4
  386. package/dist/frontend/lowering/builtins/filesystem.js.map +1 -1
  387. package/dist/frontend/lowering/builtins/fs-paths.d.ts +15 -0
  388. package/dist/frontend/lowering/builtins/fs-paths.js +209 -0
  389. package/dist/frontend/lowering/builtins/fs-paths.js.map +1 -0
  390. package/dist/frontend/lowering/builtins/global-namespace-keys.d.ts +3 -0
  391. package/dist/frontend/lowering/builtins/global-namespace-keys.js +122 -0
  392. package/dist/frontend/lowering/builtins/global-namespace-keys.js.map +1 -0
  393. package/dist/frontend/lowering/builtins/hash-stream.d.ts +16 -4
  394. package/dist/frontend/lowering/builtins/hash-stream.js +86 -23
  395. package/dist/frontend/lowering/builtins/hash-stream.js.map +1 -1
  396. package/dist/frontend/lowering/builtins/json.js +2 -1
  397. package/dist/frontend/lowering/builtins/json.js.map +1 -1
  398. package/dist/frontend/lowering/builtins/key-object.d.ts +2 -1
  399. package/dist/frontend/lowering/builtins/key-object.js +20 -7
  400. package/dist/frontend/lowering/builtins/key-object.js.map +1 -1
  401. package/dist/frontend/lowering/builtins/module-calls.js +11 -4
  402. package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
  403. package/dist/frontend/lowering/builtins/numbers.js +18 -6
  404. package/dist/frontend/lowering/builtins/numbers.js.map +1 -1
  405. package/dist/frontend/lowering/builtins/operating-system.js +4 -3
  406. package/dist/frontend/lowering/builtins/operating-system.js.map +1 -1
  407. package/dist/frontend/lowering/builtins/performance.js +3 -2
  408. package/dist/frontend/lowering/builtins/performance.js.map +1 -1
  409. package/dist/frontend/lowering/builtins/process.js +3 -2
  410. package/dist/frontend/lowering/builtins/process.js.map +1 -1
  411. package/dist/frontend/lowering/builtins/promises.d.ts +6 -0
  412. package/dist/frontend/lowering/builtins/promises.js +91 -4
  413. package/dist/frontend/lowering/builtins/promises.js.map +1 -1
  414. package/dist/frontend/lowering/builtins/promisify-callback.js +2 -1
  415. package/dist/frontend/lowering/builtins/promisify-callback.js.map +1 -1
  416. package/dist/frontend/lowering/builtins/readline.d.ts +7 -2
  417. package/dist/frontend/lowering/builtins/readline.js +58 -9
  418. package/dist/frontend/lowering/builtins/readline.js.map +1 -1
  419. package/dist/frontend/lowering/builtins/strings.js +13 -5
  420. package/dist/frontend/lowering/builtins/strings.js.map +1 -1
  421. package/dist/frontend/lowering/builtins/text-codecs.js +2 -1
  422. package/dist/frontend/lowering/builtins/text-codecs.js.map +1 -1
  423. package/dist/frontend/lowering/builtins/timers.js +1 -1
  424. package/dist/frontend/lowering/builtins/timers.js.map +1 -1
  425. package/dist/frontend/lowering/builtins/url.js +28 -4
  426. package/dist/frontend/lowering/builtins/url.js.map +1 -1
  427. package/dist/frontend/lowering/builtins/v8.js +2 -1
  428. package/dist/frontend/lowering/builtins/v8.js.map +1 -1
  429. package/dist/frontend/lowering/builtins/webassembly.js +6 -3
  430. package/dist/frontend/lowering/builtins/webassembly.js.map +1 -1
  431. package/dist/frontend/lowering/builtins/webcrypto.js +39 -20
  432. package/dist/frontend/lowering/builtins/webcrypto.js.map +1 -1
  433. package/dist/frontend/lowering/call-arguments.js +2 -1
  434. package/dist/frontend/lowering/call-arguments.js.map +1 -1
  435. package/dist/frontend/lowering/call-signatures.js +13 -6
  436. package/dist/frontend/lowering/call-signatures.js.map +1 -1
  437. package/dist/frontend/lowering/caught-value-dispatch.d.ts +18 -1
  438. package/dist/frontend/lowering/caught-value-dispatch.js +201 -32
  439. package/dist/frontend/lowering/caught-value-dispatch.js.map +1 -1
  440. package/dist/frontend/lowering/class-assertions.js +3 -2
  441. package/dist/frontend/lowering/class-assertions.js.map +1 -1
  442. package/dist/frontend/lowering/class-callbacks.d.ts +5 -2
  443. package/dist/frontend/lowering/class-callbacks.js +82 -12
  444. package/dist/frontend/lowering/class-callbacks.js.map +1 -1
  445. package/dist/frontend/lowering/class-construction.d.ts +6 -2
  446. package/dist/frontend/lowering/class-construction.js +25 -16
  447. package/dist/frontend/lowering/class-construction.js.map +1 -1
  448. package/dist/frontend/lowering/class-descriptors.js +1 -1
  449. package/dist/frontend/lowering/class-descriptors.js.map +1 -1
  450. package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +73 -2
  451. package/dist/frontend/lowering/class-dynamic-dispatch.js +1334 -259
  452. package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
  453. package/dist/frontend/lowering/class-dynamic-dispatch.test.js +124 -0
  454. package/dist/frontend/lowering/class-dynamic-dispatch.test.js.map +1 -1
  455. package/dist/frontend/lowering/class-iterables.d.ts +2 -1
  456. package/dist/frontend/lowering/class-iterables.js +9 -1
  457. package/dist/frontend/lowering/class-iterables.js.map +1 -1
  458. package/dist/frontend/lowering/class-method-mutations.js +35 -9
  459. package/dist/frontend/lowering/class-method-mutations.js.map +1 -1
  460. package/dist/frontend/lowering/class-method-values.js +1 -1
  461. package/dist/frontend/lowering/class-method-values.js.map +1 -1
  462. package/dist/frontend/lowering/class-protocols.d.ts +7 -0
  463. package/dist/frontend/lowering/class-protocols.js +64 -4
  464. package/dist/frontend/lowering/class-protocols.js.map +1 -1
  465. package/dist/frontend/lowering/class-prototypes.d.ts +5 -0
  466. package/dist/frontend/lowering/class-prototypes.js +67 -5
  467. package/dist/frontend/lowering/class-prototypes.js.map +1 -1
  468. package/dist/frontend/lowering/class-runtime-statics.d.ts +9 -3
  469. package/dist/frontend/lowering/class-runtime-statics.js +29 -4
  470. package/dist/frontend/lowering/class-runtime-statics.js.map +1 -1
  471. package/dist/frontend/lowering/class-to-primitive.js +25 -5
  472. package/dist/frontend/lowering/class-to-primitive.js.map +1 -1
  473. package/dist/frontend/lowering/class-unions.js +2 -1
  474. package/dist/frontend/lowering/class-unions.js.map +1 -1
  475. package/dist/frontend/lowering/coercions/function-adapters.js +6 -5
  476. package/dist/frontend/lowering/coercions/function-adapters.js.map +1 -1
  477. package/dist/frontend/lowering/coercions/structural-plans.js +48 -1
  478. package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -1
  479. package/dist/frontend/lowering/coercions/structural.js +99 -8
  480. package/dist/frontend/lowering/coercions/structural.js.map +1 -1
  481. package/dist/frontend/lowering/coercions/unions.js +8 -7
  482. package/dist/frontend/lowering/coercions/unions.js.map +1 -1
  483. package/dist/frontend/lowering/collection-ingestion.js +2 -1
  484. package/dist/frontend/lowering/collection-ingestion.js.map +1 -1
  485. package/dist/frontend/lowering/containers/array-callback-call.js +2 -2
  486. package/dist/frontend/lowering/containers/array-callback-call.js.map +1 -1
  487. package/dist/frontend/lowering/containers/array-callbacks.d.ts +7 -0
  488. package/dist/frontend/lowering/containers/array-callbacks.js +352 -31
  489. package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
  490. package/dist/frontend/lowering/containers/array-concat.js +12 -1
  491. package/dist/frontend/lowering/containers/array-concat.js.map +1 -1
  492. package/dist/frontend/lowering/containers/array-construction.js +25 -4
  493. package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
  494. package/dist/frontend/lowering/containers/array-methods.js +21 -5
  495. package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
  496. package/dist/frontend/lowering/containers/array-pipelines.js +21 -9
  497. package/dist/frontend/lowering/containers/array-pipelines.js.map +1 -1
  498. package/dist/frontend/lowering/containers/bytes.d.ts +1 -1
  499. package/dist/frontend/lowering/containers/bytes.js +131 -29
  500. package/dist/frontend/lowering/containers/bytes.js.map +1 -1
  501. package/dist/frontend/lowering/containers/callback-arguments.js +55 -2
  502. package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -1
  503. package/dist/frontend/lowering/containers/collection-grouping.js +3 -2
  504. package/dist/frontend/lowering/containers/collection-grouping.js.map +1 -1
  505. package/dist/frontend/lowering/containers/collection-methods.js +15 -9
  506. package/dist/frontend/lowering/containers/collection-methods.js.map +1 -1
  507. package/dist/frontend/lowering/containers/filter-predicates.d.ts +6 -0
  508. package/dist/frontend/lowering/containers/filter-predicates.js +205 -0
  509. package/dist/frontend/lowering/containers/filter-predicates.js.map +1 -0
  510. package/dist/frontend/lowering/containers/indexed-objects.d.ts +0 -12
  511. package/dist/frontend/lowering/containers/indexed-objects.js +54 -14
  512. package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
  513. package/dist/frontend/lowering/containers/iterator-helpers.d.ts +32 -1
  514. package/dist/frontend/lowering/containers/iterator-helpers.js +6 -5
  515. package/dist/frontend/lowering/containers/iterator-helpers.js.map +1 -1
  516. package/dist/frontend/lowering/containers/string-and-regexp.js +87 -14
  517. package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
  518. package/dist/frontend/lowering/containers/string-replacement.js +45 -20
  519. package/dist/frontend/lowering/containers/string-replacement.js.map +1 -1
  520. package/dist/frontend/lowering/cycle-initialization.js +25 -4
  521. package/dist/frontend/lowering/cycle-initialization.js.map +1 -1
  522. package/dist/frontend/lowering/deferred-module-initializers.d.ts +18 -1
  523. package/dist/frontend/lowering/deferred-module-initializers.js +226 -115
  524. package/dist/frontend/lowering/deferred-module-initializers.js.map +1 -1
  525. package/dist/frontend/lowering/deferred-module-initializers.test.js +28 -0
  526. package/dist/frontend/lowering/deferred-module-initializers.test.js.map +1 -1
  527. package/dist/frontend/lowering/dispatch-sites.d.ts +59 -0
  528. package/dist/frontend/lowering/dispatch-sites.js +218 -0
  529. package/dist/frontend/lowering/dispatch-sites.js.map +1 -0
  530. package/dist/frontend/lowering/dispatch-sites.test.d.ts +1 -0
  531. package/dist/frontend/lowering/dispatch-sites.test.js +59 -0
  532. package/dist/frontend/lowering/dispatch-sites.test.js.map +1 -0
  533. package/dist/frontend/lowering/divergences.js +9 -1
  534. package/dist/frontend/lowering/divergences.js.map +1 -1
  535. package/dist/frontend/lowering/dyn-streams.d.ts +3 -0
  536. package/dist/frontend/lowering/dyn-streams.js +1 -1
  537. package/dist/frontend/lowering/dyn-streams.js.map +1 -1
  538. package/dist/frontend/lowering/dynamic-tier.d.ts +25 -0
  539. package/dist/frontend/lowering/dynamic-tier.js +327 -0
  540. package/dist/frontend/lowering/dynamic-tier.js.map +1 -0
  541. package/dist/frontend/lowering/error-methods.js +51 -2
  542. package/dist/frontend/lowering/error-methods.js.map +1 -1
  543. package/dist/frontend/lowering/expressions/array-literals.js +62 -0
  544. package/dist/frontend/lowering/expressions/array-literals.js.map +1 -1
  545. package/dist/frontend/lowering/expressions/binary.js +81 -5
  546. package/dist/frontend/lowering/expressions/binary.js.map +1 -1
  547. package/dist/frontend/lowering/expressions/element-access.js +107 -14
  548. package/dist/frontend/lowering/expressions/element-access.js.map +1 -1
  549. package/dist/frontend/lowering/expressions/identifiers.js +79 -11
  550. package/dist/frontend/lowering/expressions/identifiers.js.map +1 -1
  551. package/dist/frontend/lowering/expressions/narrowing.js +130 -6
  552. package/dist/frontend/lowering/expressions/narrowing.js.map +1 -1
  553. package/dist/frontend/lowering/expressions/nullish-assignment.js +3 -1
  554. package/dist/frontend/lowering/expressions/nullish-assignment.js.map +1 -1
  555. package/dist/frontend/lowering/expressions/object-literals.d.ts +10 -3
  556. package/dist/frontend/lowering/expressions/object-literals.js +164 -56
  557. package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
  558. package/dist/frontend/lowering/expressions/optional-chains.js +17 -5
  559. package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
  560. package/dist/frontend/lowering/expressions/property-access.d.ts +0 -4
  561. package/dist/frontend/lowering/expressions/property-access.js +211 -17
  562. package/dist/frontend/lowering/expressions/property-access.js.map +1 -1
  563. package/dist/frontend/lowering/expressions/relational.js +267 -30
  564. package/dist/frontend/lowering/expressions/relational.js.map +1 -1
  565. package/dist/frontend/lowering/expressions/union-fields.js +4 -0
  566. package/dist/frontend/lowering/expressions/union-fields.js.map +1 -1
  567. package/dist/frontend/lowering/expressions/updates.js +85 -12
  568. package/dist/frontend/lowering/expressions/updates.js.map +1 -1
  569. package/dist/frontend/lowering/frozen-records.d.ts +28 -0
  570. package/dist/frontend/lowering/frozen-records.js +322 -0
  571. package/dist/frontend/lowering/frozen-records.js.map +1 -0
  572. package/dist/frontend/lowering/function-returns.js +49 -0
  573. package/dist/frontend/lowering/function-returns.js.map +1 -1
  574. package/dist/frontend/lowering/generator-dynamic-dispatch.d.ts +6 -1
  575. package/dist/frontend/lowering/generator-dynamic-dispatch.js +20 -30
  576. package/dist/frontend/lowering/generator-dynamic-dispatch.js.map +1 -1
  577. package/dist/frontend/lowering/generic-functions.d.ts +42 -1
  578. package/dist/frontend/lowering/generic-functions.js +455 -20
  579. package/dist/frontend/lowering/generic-functions.js.map +1 -1
  580. package/dist/frontend/lowering/intern-tables.js +2 -1
  581. package/dist/frontend/lowering/intern-tables.js.map +1 -1
  582. package/dist/frontend/lowering/iterable-values.d.ts +49 -0
  583. package/dist/frontend/lowering/iterable-values.js +297 -0
  584. package/dist/frontend/lowering/iterable-values.js.map +1 -0
  585. package/dist/frontend/lowering/iterator-adapters.js +195 -9
  586. package/dist/frontend/lowering/iterator-adapters.js.map +1 -1
  587. package/dist/frontend/lowering/js-class-fields.d.ts +8 -0
  588. package/dist/frontend/lowering/js-class-fields.js +45 -10
  589. package/dist/frontend/lowering/js-class-fields.js.map +1 -1
  590. package/dist/frontend/lowering/js-dynamic-objects.js +3 -2
  591. package/dist/frontend/lowering/js-dynamic-objects.js.map +1 -1
  592. package/dist/frontend/lowering/json-require.js +2 -1
  593. package/dist/frontend/lowering/json-require.js.map +1 -1
  594. package/dist/frontend/lowering/key-order-witness.d.ts +24 -4
  595. package/dist/frontend/lowering/key-order-witness.js +790 -25
  596. package/dist/frontend/lowering/key-order-witness.js.map +1 -1
  597. package/dist/frontend/lowering/key-order-witness.test.js +466 -10
  598. package/dist/frontend/lowering/key-order-witness.test.js.map +1 -1
  599. package/dist/frontend/lowering/lifetime-regions.js +2 -1
  600. package/dist/frontend/lowering/lifetime-regions.js.map +1 -1
  601. package/dist/frontend/lowering/lower-assert.js +6 -5
  602. package/dist/frontend/lowering/lower-assert.js.map +1 -1
  603. package/dist/frontend/lowering/lower-async-iteration.js +7 -2
  604. package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
  605. package/dist/frontend/lowering/lower-calls.d.ts +11 -0
  606. package/dist/frontend/lowering/lower-calls.js +776 -126
  607. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  608. package/dist/frontend/lowering/lower-classes.d.ts +29 -2
  609. package/dist/frontend/lowering/lower-classes.js +581 -46
  610. package/dist/frontend/lowering/lower-classes.js.map +1 -1
  611. package/dist/frontend/lowering/lower-dgram.js +6 -3
  612. package/dist/frontend/lowering/lower-dgram.js.map +1 -1
  613. package/dist/frontend/lowering/lower-event-emitter.d.ts +14 -0
  614. package/dist/frontend/lowering/lower-event-emitter.js +267 -20
  615. package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
  616. package/dist/frontend/lowering/lower-exprs.d.ts +19 -2
  617. package/dist/frontend/lowering/lower-exprs.js +126 -13
  618. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  619. package/dist/frontend/lowering/lower-functions.d.ts +11 -0
  620. package/dist/frontend/lowering/lower-functions.js +387 -72
  621. package/dist/frontend/lowering/lower-functions.js.map +1 -1
  622. package/dist/frontend/lowering/lower-generators.js +41 -31
  623. package/dist/frontend/lowering/lower-generators.js.map +1 -1
  624. package/dist/frontend/lowering/lower-global-value.js +6 -3
  625. package/dist/frontend/lowering/lower-global-value.js.map +1 -1
  626. package/dist/frontend/lowering/lower-inspect.js +28 -12
  627. package/dist/frontend/lowering/lower-inspect.js.map +1 -1
  628. package/dist/frontend/lowering/lower-mixins.js +2 -1
  629. package/dist/frontend/lowering/lower-mixins.js.map +1 -1
  630. package/dist/frontend/lowering/lower-mock.js +2 -1
  631. package/dist/frontend/lowering/lower-mock.js.map +1 -1
  632. package/dist/frontend/lowering/lower-modules.js +47 -5
  633. package/dist/frontend/lowering/lower-modules.js.map +1 -1
  634. package/dist/frontend/lowering/lower-modules.test.js +2 -2
  635. package/dist/frontend/lowering/lower-modules.test.js.map +1 -1
  636. package/dist/frontend/lowering/lower-namespaces.d.ts +2 -1
  637. package/dist/frontend/lowering/lower-namespaces.js +9 -4
  638. package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
  639. package/dist/frontend/lowering/lower-server.d.ts +10 -0
  640. package/dist/frontend/lowering/lower-server.js +239 -61
  641. package/dist/frontend/lowering/lower-server.js.map +1 -1
  642. package/dist/frontend/lowering/lower-stdlib.d.ts +5 -0
  643. package/dist/frontend/lowering/lower-stdlib.js +42 -10
  644. package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
  645. package/dist/frontend/lowering/lower-stmts.d.ts +23 -0
  646. package/dist/frontend/lowering/lower-stmts.js +622 -68
  647. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  648. package/dist/frontend/lowering/lower-stmts.test.js +1 -1
  649. package/dist/frontend/lowering/lower-stmts.test.js.map +1 -1
  650. package/dist/frontend/lowering/lower-stream.d.ts +20 -2
  651. package/dist/frontend/lowering/lower-stream.js +2055 -318
  652. package/dist/frontend/lowering/lower-stream.js.map +1 -1
  653. package/dist/frontend/lowering/lower-timers.js +4 -3
  654. package/dist/frontend/lowering/lower-timers.js.map +1 -1
  655. package/dist/frontend/lowering/lowerer.d.ts +197 -29
  656. package/dist/frontend/lowering/lowerer.js +862 -84
  657. package/dist/frontend/lowering/lowerer.js.map +1 -1
  658. package/dist/frontend/lowering/lowerer.test.js +21 -9
  659. package/dist/frontend/lowering/lowerer.test.js.map +1 -1
  660. package/dist/frontend/lowering/module-namespace-elements.d.ts +11 -1
  661. package/dist/frontend/lowering/module-namespace-elements.js +82 -5
  662. package/dist/frontend/lowering/module-namespace-elements.js.map +1 -1
  663. package/dist/frontend/lowering/narrowing-stability.js +5 -0
  664. package/dist/frontend/lowering/narrowing-stability.js.map +1 -1
  665. package/dist/frontend/lowering/native-ffi.js +1 -1
  666. package/dist/frontend/lowering/native-ffi.js.map +1 -1
  667. package/dist/frontend/lowering/new-target.d.ts +12 -0
  668. package/dist/frontend/lowering/new-target.js +280 -0
  669. package/dist/frontend/lowering/new-target.js.map +1 -0
  670. package/dist/frontend/lowering/object-enumeration-receiver.js +2 -1
  671. package/dist/frontend/lowering/object-enumeration-receiver.js.map +1 -1
  672. package/dist/frontend/lowering/pairs-snapshot.js +2 -1
  673. package/dist/frontend/lowering/pairs-snapshot.js.map +1 -1
  674. package/dist/frontend/lowering/private-brands.d.ts +9 -0
  675. package/dist/frontend/lowering/private-brands.js +66 -15
  676. package/dist/frontend/lowering/private-brands.js.map +1 -1
  677. package/dist/frontend/lowering/promise-executor-adapter.js +2 -1
  678. package/dist/frontend/lowering/promise-executor-adapter.js.map +1 -1
  679. package/dist/frontend/lowering/require-initialization.js +2 -1
  680. package/dist/frontend/lowering/require-initialization.js.map +1 -1
  681. package/dist/frontend/lowering/runtime-optional-elements.d.ts +5 -0
  682. package/dist/frontend/lowering/runtime-optional-elements.js +17 -1
  683. package/dist/frontend/lowering/runtime-optional-elements.js.map +1 -1
  684. package/dist/frontend/lowering/runtime-optional-records.d.ts +2 -0
  685. package/dist/frontend/lowering/runtime-optional-records.js +18 -5
  686. package/dist/frontend/lowering/runtime-optional-records.js.map +1 -1
  687. package/dist/frontend/lowering/site-dependencies.d.ts +35 -0
  688. package/dist/frontend/lowering/site-dependencies.js +84 -0
  689. package/dist/frontend/lowering/site-dependencies.js.map +1 -0
  690. package/dist/frontend/lowering/site-dependencies.test.d.ts +1 -0
  691. package/dist/frontend/lowering/site-dependencies.test.js +53 -0
  692. package/dist/frontend/lowering/site-dependencies.test.js.map +1 -0
  693. package/dist/frontend/lowering/stable-names.d.ts +11 -0
  694. package/dist/frontend/lowering/stable-names.js +35 -0
  695. package/dist/frontend/lowering/stable-names.js.map +1 -0
  696. package/dist/frontend/lowering/static-typeof.d.ts +2 -2
  697. package/dist/frontend/lowering/static-typeof.js +42 -3
  698. package/dist/frontend/lowering/static-typeof.js.map +1 -1
  699. package/dist/frontend/lowering/strict-equality.js +2 -1
  700. package/dist/frontend/lowering/strict-equality.js.map +1 -1
  701. package/dist/frontend/lowering/structural-positions.d.ts +32 -0
  702. package/dist/frontend/lowering/structural-positions.js +108 -0
  703. package/dist/frontend/lowering/structural-positions.js.map +1 -0
  704. package/dist/frontend/lowering/surfaces.d.ts +3 -0
  705. package/dist/frontend/lowering/surfaces.js +60 -32
  706. package/dist/frontend/lowering/surfaces.js.map +1 -1
  707. package/dist/frontend/lowering/undefined-index.d.ts +27 -0
  708. package/dist/frontend/lowering/undefined-index.js +82 -0
  709. package/dist/frontend/lowering/undefined-index.js.map +1 -0
  710. package/dist/frontend/lowering/var-hoisting.js +66 -16
  711. package/dist/frontend/lowering/var-hoisting.js.map +1 -1
  712. package/dist/frontend/lowering/width-lift.d.ts +18 -0
  713. package/dist/frontend/npm-static-bundled-chunks.js +9 -11
  714. package/dist/frontend/npm-static-bundled-chunks.js.map +1 -1
  715. package/dist/frontend/npm-static-bundled-chunks.test.js +6 -5
  716. package/dist/frontend/npm-static-bundled-chunks.test.js.map +1 -1
  717. package/dist/frontend/npm-static-rewrite-syntax.js +9 -1
  718. package/dist/frontend/npm-static-rewrite-syntax.js.map +1 -1
  719. package/dist/frontend/npm-static-tsc-helpers.d.ts +5 -0
  720. package/dist/frontend/npm-static-tsc-helpers.js +106 -0
  721. package/dist/frontend/npm-static-tsc-helpers.js.map +1 -0
  722. package/dist/frontend/npm-static-tsc-helpers.test.d.ts +1 -0
  723. package/dist/frontend/npm-static-tsc-helpers.test.js +58 -0
  724. package/dist/frontend/npm-static-tsc-helpers.test.js.map +1 -0
  725. package/dist/frontend/npm-static-type-exports-host.d.ts +8 -0
  726. package/dist/frontend/npm-static-type-exports-host.js +214 -0
  727. package/dist/frontend/npm-static-type-exports-host.js.map +1 -0
  728. package/dist/frontend/npm-static-type-exports-host.test.d.ts +1 -0
  729. package/dist/frontend/npm-static-type-exports-host.test.js +53 -0
  730. package/dist/frontend/npm-static-type-exports-host.test.js.map +1 -0
  731. package/dist/frontend/npm-static-type-exports.d.ts +52 -0
  732. package/dist/frontend/npm-static-type-exports.js +261 -0
  733. package/dist/frontend/npm-static-type-exports.js.map +1 -0
  734. package/dist/frontend/npm-static-type-exports.test.d.ts +1 -0
  735. package/dist/frontend/npm-static-type-exports.test.js +103 -0
  736. package/dist/frontend/npm-static-type-exports.test.js.map +1 -0
  737. package/dist/frontend/npm-static-umd.d.ts +6 -0
  738. package/dist/frontend/npm-static-umd.js +203 -0
  739. package/dist/frontend/npm-static-umd.js.map +1 -0
  740. package/dist/frontend/npm-static-umd.test.d.ts +1 -0
  741. package/dist/frontend/npm-static-umd.test.js +105 -0
  742. package/dist/frontend/npm-static-umd.test.js.map +1 -0
  743. package/dist/frontend/npm-static.d.ts +8 -0
  744. package/dist/frontend/npm-static.js +51 -22
  745. package/dist/frontend/npm-static.js.map +1 -1
  746. package/dist/frontend/package-shims.d.ts +3 -0
  747. package/dist/frontend/package-shims.js +71 -8
  748. package/dist/frontend/package-shims.js.map +1 -1
  749. package/dist/frontend/pipeline.js +18 -10
  750. package/dist/frontend/pipeline.js.map +1 -1
  751. package/dist/frontend/process-fork.d.ts +25 -0
  752. package/dist/frontend/process-fork.js +2 -0
  753. package/dist/frontend/process-fork.js.map +1 -0
  754. package/dist/frontend/program.d.ts +21 -1
  755. package/dist/frontend/program.js +586 -74
  756. package/dist/frontend/program.js.map +1 -1
  757. package/dist/frontend/program.test.js +44 -4
  758. package/dist/frontend/program.test.js.map +1 -1
  759. package/dist/frontend/services.d.ts +6 -0
  760. package/dist/frontend/services.js +18 -0
  761. package/dist/frontend/services.js.map +1 -1
  762. package/dist/frontend/token-equivalence.d.ts +3 -0
  763. package/dist/frontend/token-equivalence.js +409 -0
  764. package/dist/frontend/token-equivalence.js.map +1 -0
  765. package/dist/frontend/token-equivalence.test.d.ts +1 -0
  766. package/dist/frontend/token-equivalence.test.js +67 -0
  767. package/dist/frontend/token-equivalence.test.js.map +1 -0
  768. package/dist/frontend/ts7/ast-node.d.ts +43 -7
  769. package/dist/frontend/ts7/ast-node.js +1176 -129
  770. package/dist/frontend/ts7/ast-node.js.map +1 -1
  771. package/dist/frontend/ts7/ast-node.test.js +84 -0
  772. package/dist/frontend/ts7/ast-node.test.js.map +1 -1
  773. package/dist/frontend/ts7/ast-wire.d.ts +29 -3
  774. package/dist/frontend/ts7/ast-wire.js +144 -31
  775. package/dist/frontend/ts7/ast-wire.js.map +1 -1
  776. package/dist/frontend/ts7/ast-wire.test.js +23 -0
  777. package/dist/frontend/ts7/ast-wire.test.js.map +1 -1
  778. package/dist/frontend/ts7/ast.d.ts +23 -2
  779. package/dist/frontend/ts7/ast.js +143 -2
  780. package/dist/frontend/ts7/ast.js.map +1 -1
  781. package/dist/frontend/ts7/checker-backend.d.ts +3 -4
  782. package/dist/frontend/ts7/checker-backend.js +2 -2
  783. package/dist/frontend/ts7/checker-backend.js.map +1 -1
  784. package/dist/frontend/ts7/checker-backend.test.js +5 -9
  785. package/dist/frontend/ts7/checker-backend.test.js.map +1 -1
  786. package/dist/frontend/ts7/checker.d.ts +17 -1
  787. package/dist/frontend/ts7/checker.js +82 -1
  788. package/dist/frontend/ts7/checker.js.map +1 -1
  789. package/dist/frontend/ts7/checker.test.js +9 -6
  790. package/dist/frontend/ts7/checker.test.js.map +1 -1
  791. package/dist/frontend/ts7/enums.d.ts +3 -3
  792. package/dist/frontend/ts7/enums.generated.d.ts +10 -0
  793. package/dist/frontend/ts7/enums.generated.js +21 -0
  794. package/dist/frontend/ts7/enums.generated.js.map +1 -1
  795. package/dist/frontend/ts7/enums.js +19 -0
  796. package/dist/frontend/ts7/enums.js.map +1 -1
  797. package/dist/frontend/ts7/lib-diagnostics.d.ts +24 -0
  798. package/dist/frontend/ts7/lib-diagnostics.js +307 -0
  799. package/dist/frontend/ts7/lib-diagnostics.js.map +1 -0
  800. package/dist/frontend/ts7/lib-diagnostics.test.d.ts +1 -0
  801. package/dist/frontend/ts7/lib-diagnostics.test.js +199 -0
  802. package/dist/frontend/ts7/lib-diagnostics.test.js.map +1 -0
  803. package/dist/frontend/ts7/program-host.d.ts +7 -0
  804. package/dist/frontend/ts7/program-host.js +30 -4
  805. package/dist/frontend/ts7/program-host.js.map +1 -1
  806. package/dist/frontend/ts7/semantic-checker.d.ts +10 -0
  807. package/dist/frontend/ts7/semantic-checker.js +25 -20
  808. package/dist/frontend/ts7/semantic-checker.js.map +1 -1
  809. package/dist/frontend/ts7/semantic-json.d.ts +13 -0
  810. package/dist/frontend/ts7/semantic-json.js +146 -0
  811. package/dist/frontend/ts7/semantic-json.js.map +1 -1
  812. package/dist/frontend/ts7/semantic-json.test.js +57 -1
  813. package/dist/frontend/ts7/semantic-json.test.js.map +1 -1
  814. package/dist/frontend/ts7/semantic-model.d.ts +15 -0
  815. package/dist/frontend/ts7/semantic-model.js +67 -19
  816. package/dist/frontend/ts7/semantic-model.js.map +1 -1
  817. package/dist/frontend/ts7/semantic-model.test.js +3 -2
  818. package/dist/frontend/ts7/semantic-model.test.js.map +1 -1
  819. package/dist/frontend/ts7/session.d.ts +14 -1
  820. package/dist/frontend/ts7/session.js +23 -1
  821. package/dist/frontend/ts7/session.js.map +1 -1
  822. package/dist/frontend/tsc-codes.d.ts +1 -1
  823. package/dist/frontend/tsc-codes.js +7 -0
  824. package/dist/frontend/tsc-codes.js.map +1 -1
  825. package/dist/frontend/type-mapper.d.ts +51 -7
  826. package/dist/frontend/type-mapper.js +456 -43
  827. package/dist/frontend/type-mapper.js.map +1 -1
  828. package/dist/frontend/type-mapper.test.js +1 -1
  829. package/dist/frontend/type-mapper.test.js.map +1 -1
  830. package/dist/frontend-process-args.d.ts +4 -0
  831. package/dist/frontend-process-args.js +52 -0
  832. package/dist/frontend-process-args.js.map +1 -0
  833. package/dist/frontend-process-args.test.d.ts +1 -0
  834. package/dist/frontend-process-args.test.js +47 -0
  835. package/dist/frontend-process-args.test.js.map +1 -0
  836. package/dist/frontend-process.d.ts +1 -0
  837. package/dist/frontend-process.js +23 -0
  838. package/dist/frontend-process.js.map +1 -0
  839. package/dist/heap-collection.d.ts +16 -0
  840. package/dist/heap-collection.js +42 -0
  841. package/dist/heap-collection.js.map +1 -0
  842. package/dist/heap-collection.test.d.ts +1 -0
  843. package/dist/heap-collection.test.js +59 -0
  844. package/dist/heap-collection.test.js.map +1 -0
  845. package/dist/heap-pressure.d.ts +2 -0
  846. package/dist/heap-pressure.js +12 -0
  847. package/dist/heap-pressure.js.map +1 -0
  848. package/dist/index.d.ts +2 -0
  849. package/dist/index.js +435 -89
  850. package/dist/index.js.map +1 -1
  851. package/dist/ir/analysis.js +5 -3
  852. package/dist/ir/analysis.js.map +1 -1
  853. package/dist/ir/array-length-stability.d.ts +4 -0
  854. package/dist/ir/array-length-stability.js +26 -6
  855. package/dist/ir/array-length-stability.js.map +1 -1
  856. package/dist/ir/array-length-stability.test.js +49 -0
  857. package/dist/ir/array-length-stability.test.js.map +1 -1
  858. package/dist/ir/builtin-effects.d.ts +7 -0
  859. package/dist/ir/builtin-effects.js +80 -0
  860. package/dist/ir/builtin-effects.js.map +1 -1
  861. package/dist/ir/builtin-signatures.d.ts +7 -1
  862. package/dist/ir/builtin-signatures.js +303 -21
  863. package/dist/ir/builtin-signatures.js.map +1 -1
  864. package/dist/ir/callback-specialization.d.ts +2 -1
  865. package/dist/ir/callback-specialization.js +23 -18
  866. package/dist/ir/callback-specialization.js.map +1 -1
  867. package/dist/ir/char-unit-locals.d.ts +19 -0
  868. package/dist/ir/char-unit-locals.js +185 -0
  869. package/dist/ir/char-unit-locals.js.map +1 -0
  870. package/dist/ir/char-unit-locals.test.d.ts +1 -0
  871. package/dist/ir/char-unit-locals.test.js +94 -0
  872. package/dist/ir/char-unit-locals.test.js.map +1 -0
  873. package/dist/ir/final-fields.d.ts +3 -1
  874. package/dist/ir/final-fields.js +15 -17
  875. package/dist/ir/final-fields.js.map +1 -1
  876. package/dist/ir/function-references.d.ts +2 -0
  877. package/dist/ir/function-references.js +2 -0
  878. package/dist/ir/function-references.js.map +1 -1
  879. package/dist/ir/function-references.test.js +5 -0
  880. package/dist/ir/function-references.test.js.map +1 -1
  881. package/dist/ir/initializer-bindings.d.ts +2 -1
  882. package/dist/ir/initializer-bindings.js +27 -20
  883. package/dist/ir/initializer-bindings.js.map +1 -1
  884. package/dist/ir/int32-arrays.d.ts +108 -0
  885. package/dist/ir/int32-arrays.js +831 -0
  886. package/dist/ir/int32-arrays.js.map +1 -0
  887. package/dist/ir/int32-slots.d.ts +36 -6
  888. package/dist/ir/int32-slots.js +370 -171
  889. package/dist/ir/int32-slots.js.map +1 -1
  890. package/dist/ir/int32-slots.test.js +3 -1
  891. package/dist/ir/int32-slots.test.js.map +1 -1
  892. package/dist/ir/integer-loop-facts.d.ts +9 -4
  893. package/dist/ir/integer-loop-facts.js +93 -18
  894. package/dist/ir/integer-loop-facts.js.map +1 -1
  895. package/dist/ir/integer-loops.d.ts +49 -0
  896. package/dist/ir/integer-loops.js +202 -40
  897. package/dist/ir/integer-loops.js.map +1 -1
  898. package/dist/ir/integer-loops.test.js +211 -1
  899. package/dist/ir/integer-loops.test.js.map +1 -1
  900. package/dist/ir/integer-ranges.d.ts +5 -0
  901. package/dist/ir/integer-ranges.js +125 -12
  902. package/dist/ir/integer-ranges.js.map +1 -1
  903. package/dist/ir/integer-ranges.test.js +94 -0
  904. package/dist/ir/integer-ranges.test.js.map +1 -1
  905. package/dist/ir/ir.d.ts +87 -9
  906. package/dist/ir/ir.js +61 -2
  907. package/dist/ir/ir.js.map +1 -1
  908. package/dist/ir/ir.test.js +21 -1
  909. package/dist/ir/ir.test.js.map +1 -1
  910. package/dist/ir/js-ic.d.ts +19 -2
  911. package/dist/ir/js-ic.js +95 -11
  912. package/dist/ir/js-ic.js.map +1 -1
  913. package/dist/ir/js-ic.test.js +188 -0
  914. package/dist/ir/js-ic.test.js.map +1 -1
  915. package/dist/ir/node-index.d.ts +57 -0
  916. package/dist/ir/node-index.js +215 -0
  917. package/dist/ir/node-index.js.map +1 -0
  918. package/dist/ir/paired-while-loops.d.ts +25 -0
  919. package/dist/ir/paired-while-loops.js +335 -0
  920. package/dist/ir/paired-while-loops.js.map +1 -0
  921. package/dist/ir/paired-while-loops.test.d.ts +1 -0
  922. package/dist/ir/paired-while-loops.test.js +163 -0
  923. package/dist/ir/paired-while-loops.test.js.map +1 -0
  924. package/dist/ir/parameter-versions.d.ts +25 -0
  925. package/dist/ir/parameter-versions.js +300 -0
  926. package/dist/ir/parameter-versions.js.map +1 -0
  927. package/dist/ir/runtime-features.d.ts +60 -15
  928. package/dist/ir/runtime-features.js +276 -35
  929. package/dist/ir/runtime-features.js.map +1 -1
  930. package/dist/ir/serialize.d.ts +12 -2
  931. package/dist/ir/serialize.js +16 -3
  932. package/dist/ir/serialize.js.map +1 -1
  933. package/dist/ir/serialize.test.js +17 -0
  934. package/dist/ir/serialize.test.js.map +1 -1
  935. package/dist/ir/tiers.js +1 -0
  936. package/dist/ir/tiers.js.map +1 -1
  937. package/dist/ir/traverse.d.ts +2 -0
  938. package/dist/ir/traverse.js +29 -5
  939. package/dist/ir/traverse.js.map +1 -1
  940. package/dist/ir/validate.js +171 -45
  941. package/dist/ir/validate.js.map +1 -1
  942. package/dist/library/ir-policy.js +12 -0
  943. package/dist/library/ir-policy.js.map +1 -1
  944. package/dist/library/library-cache.d.ts +2 -0
  945. package/dist/library/library-cache.js.map +1 -1
  946. package/dist/library/prepare.js +2 -0
  947. package/dist/library/prepare.js.map +1 -1
  948. package/dist/native/cache.d.ts +6 -1
  949. package/dist/native/cache.js +28 -5
  950. package/dist/native/cache.js.map +1 -1
  951. package/dist/native/cache.test.js +16 -2
  952. package/dist/native/cache.test.js.map +1 -1
  953. package/dist/native/cli.js +26 -1
  954. package/dist/native/cli.js.map +1 -1
  955. package/dist/native/compiler.js +8 -6
  956. package/dist/native/compiler.js.map +1 -1
  957. package/dist/native/executable-cache.d.ts +1 -1
  958. package/dist/native/executable-cache.js +2 -2
  959. package/dist/native/executable-cache.js.map +1 -1
  960. package/dist/native/prepare.d.ts +3 -1
  961. package/dist/native/prepare.js +123 -31
  962. package/dist/native/prepare.js.map +1 -1
  963. package/dist/native/prepare.test.js +78 -18
  964. package/dist/native/prepare.test.js.map +1 -1
  965. package/dist/native/sanitizer.test.js +6 -1
  966. package/dist/native/sanitizer.test.js.map +1 -1
  967. package/dist/native/text-file.d.ts +13 -3
  968. package/dist/native/text-file.js +63 -9
  969. package/dist/native/text-file.js.map +1 -1
  970. package/dist/native/text-file.test.d.ts +1 -0
  971. package/dist/native/text-file.test.js +49 -0
  972. package/dist/native/text-file.test.js.map +1 -0
  973. package/dist/native/toolchain.js +4 -4
  974. package/dist/native/toolchain.js.map +1 -1
  975. package/dist/native/toolchain.test.js +3 -3
  976. package/dist/native/toolchain.test.js.map +1 -1
  977. package/dist/startup-cache.d.ts +1 -0
  978. package/dist/startup-cache.js +1 -0
  979. package/dist/startup-cache.js.map +1 -1
  980. package/dist/text-parts.d.ts +7 -0
  981. package/dist/text-parts.js +44 -0
  982. package/dist/text-parts.js.map +1 -1
  983. package/dist/text-parts.test.d.ts +1 -0
  984. package/dist/text-parts.test.js +46 -0
  985. package/dist/text-parts.test.js.map +1 -0
  986. package/dist/timing.d.ts +9 -2
  987. package/dist/timing.js +7 -4
  988. package/dist/timing.js.map +1 -1
  989. package/dist/wasm/translate.d.ts +4 -0
  990. package/dist/wasm/translate.js +2 -2
  991. package/dist/wasm/translate.js.map +1 -1
  992. package/package.json +21 -21
  993. package/shims/chalk/v5.ts +688 -0
  994. package/shims/hono-node-server/v2.ts +645 -0
  995. package/shims/hot-shots/client.ts +1126 -0
  996. package/shims/hot-shots/v8-unix-dgram.ts +8 -0
  997. package/shims/hot-shots/v8.ts +8 -0
  998. package/shims/undici/core/client.ts +4 -4
  999. package/surface-manifest.json +44 -52
@@ -1,12 +1,14 @@
1
1
  import { InternalCompilerError } from "../errors.js";
2
+ import { keyedHelperName } from "./lowering/stable-names.js";
2
3
  import { mockCallRecordType, mockContextType } from "./mock-shapes.js";
3
4
  import * as ts from "./ts7/adapter.js";
4
5
  import { bodyReadsArguments } from "./arguments-usage.js";
5
- import { BYTES_ELEMENT_NAME, arrayOf, isDynTypedRefType, BOOL, bytesOf, canConvertToDyn, canDynCheckTo, CHILD_T, CRYPTOHASH_T, CRYPTOHMAC_T, DATE_T, DYN, F64, funcOf, isSupportedArrayElem, isSupportedIndexValue, isSupportedMapKey, isSupportedMapValue, isSupportedSetElem, isUnitType, mapOf, NULL_T, PROCSTREAM_T, RUNTIME_EMITTER_CLASS, RUNTIME_ERROR_CLASSES, RUNTIME_STREAM_CLASSES, ZLIB_STREAM_MODES, setOf, STRING, SYMBOL_T, typeEquals, typeKey, maybePromiseUnionArmsOk, unionContainerArmsOk, UNDEFINED_T, VOID, } from "../ir/ir.js";
6
- import { BIGINT_T } from "../ir/ir.js";
6
+ import { BYTES_ELEMENT_NAME, arrayOf, isDynTypedRefType, BOOL, bytesOf, canConvertToDyn, canDynCheckTo, CHILD_T, CRYPTOHASH_T, CRYPTOHMAC_T, DATE_T, DYN, F64, funcOf, isSupportedArrayElem, isSupportedIndexValue, isSupportedMapKey, isSupportedMapValue, isSupportedSetElem, iterableArmsElem, isUnitType, mapOf, NULL_T, PROCSTREAM_T, RUNTIME_EMITTER_CLASS, RUNTIME_ERROR_CLASSES, RUNTIME_STREAM_CLASSES, ZLIB_STREAM_MODES, setOf, STRING, SYMBOL_T, typeEquals, typeKey, maybePromiseUnionArmsOk, unionContainerArmsOk, UNDEFINED_T, VOID, } from "../ir/ir.js";
7
+ import { BIGINT_T, KEY_ORDER_FIELD } from "../ir/ir.js";
7
8
  import { literalValues } from "./literal-values.js";
8
9
  import { remapUnionDiscriminant } from "./union-discriminants.js";
9
10
  import { isJsSourceFile, isNodeTypesPath } from "./program.js";
11
+ import { isProvenanceSourceFile } from "./provenance-registry.js";
10
12
  import { functionCanReturnUndefined } from "./function-completion.js";
11
13
  import { accessorSlotProp, recordTextCodecClass } from "../ir/ir.js";
12
14
  // typeKey moved to ir/ir.ts (the backend needs it too, for per-type
@@ -85,6 +87,46 @@ export const WEBCRYPTO_DYN_TYPES = new Set([
85
87
  "KeyAlgorithm",
86
88
  "HmacImportParams",
87
89
  "HmacKeyAlgorithm",
90
+ "CryptoKeyPair",
91
+ "EcKeyAlgorithm",
92
+ "RsaHashedKeyAlgorithm",
93
+ "EcKeyGenParams",
94
+ "EcKeyImportParams",
95
+ "EcdsaParams",
96
+ "RsaHashedKeyGenParams",
97
+ "RsaHashedImportParams",
98
+ "RsaPssParams",
99
+ "HmacKeyGenParams",
100
+ "AesKeyGenParams",
101
+ "AesKeyAlgorithm",
102
+ "JsonWebKey",
103
+ "AesGcmParams",
104
+ "AesCbcParams",
105
+ "AesCtrParams",
106
+ "Pbkdf2Params",
107
+ "HkdfParams",
108
+ "AesDerivedKeyParams",
109
+ ]);
110
+ /** node:crypto's key and signature option interfaces: the key functions,
111
+ * KeyObject.export and sign/verify take them as checked-dynamic arguments
112
+ * (scr_lib.c, scr_pki.c). */
113
+ export const CRYPTO_KEY_OPTION_DYN_TYPES = new Set([
114
+ "AsymmetricKeyExportOptions",
115
+ "ECKeyPairKeyObjectOptions",
116
+ "ECKeyPairOptions",
117
+ "ED25519KeyPairOptions",
118
+ "JsonWebKeyInput",
119
+ "JwkKeyExportOptions",
120
+ "KeyExportOptions",
121
+ "PrivateKeyInput",
122
+ "PublicKeyInput",
123
+ "RSAKeyPairKeyObjectOptions",
124
+ "RSAKeyPairOptions",
125
+ "SignKeyObjectInput",
126
+ "SignPrivateKeyInput",
127
+ "SigningOptions",
128
+ "VerifyKeyObjectInput",
129
+ "VerifyPublicKeyInput",
88
130
  ]);
89
131
  export const FETCH_AMBIENT_TYPES = [
90
132
  "Response",
@@ -108,6 +150,9 @@ export const FETCH_AMBIENT_TYPES = [
108
150
  "ReadableStreamReadResult",
109
151
  "ReadableStreamReadValueResult",
110
152
  "ReadableStreamReadDoneResult",
153
+ "TransformStream",
154
+ "WritableStream",
155
+ "WritableStreamDefaultWriter",
111
156
  "Blob",
112
157
  "File",
113
158
  "BlobPropertyBag",
@@ -179,6 +224,8 @@ function comparePriority(left, right) {
179
224
  export class ShapeRegistry {
180
225
  /** Existing layouts change only when a recursive placeholder closes. */
181
226
  revision = 0;
227
+ /** Each shape id with a second hash of its key (keyedHelperName). */
228
+ keyedNameKeys = new Map();
182
229
  byKey = new Map();
183
230
  byId = new Map();
184
231
  /** Historical emit-order rank of the declaration-order metadata each
@@ -194,7 +241,7 @@ export class ShapeRegistry {
194
241
  * writer after all priority candidates have closed. */
195
242
  derivedDeclaredOrderFinalizers = [];
196
243
  currentDeclaredOrderPriority = [0, 0];
197
- /** All interned shapes in first-seen (`r0`, `r1`, ...) order. */
244
+ /** All interned shapes in first-seen order. */
198
245
  shapes = [];
199
246
  /** ts.Types currently being mapped — a BACK-REFERENCE to one of these is
200
247
  * the recursive knot (`interface TreeNode { children: TreeNode[] }`):
@@ -299,11 +346,12 @@ export class ShapeRegistry {
299
346
  }
300
347
  /** The shape id a back-reference to an in-progress type resolves to:
301
348
  * reuses the type's persistent recursive id or mints a PLACEHOLDER
302
- * entry (empty fields) the outer frame finalizes. */
303
- recursiveRef(t) {
349
+ * entry (empty fields) the outer frame finalizes. `describe` names a new
350
+ * placeholder (checkerTypeDescription). */
351
+ recursiveRef(t, describe) {
304
352
  let id = this.recIds.get(t);
305
353
  if (id === undefined) {
306
- id = `r${this.shapes.length}`;
354
+ id = recursivePlaceholderName(this, "r", describe(), (name) => this.byId.has(name));
307
355
  const shape = { id, fields: [] };
308
356
  this.byId.set(id, shape);
309
357
  this.shapes.push(shape);
@@ -358,7 +406,7 @@ export class ShapeRegistry {
358
406
  const key = this.keyOf(fields, tuple, indexValue);
359
407
  let id = this.byKey.get(key);
360
408
  if (id === undefined) {
361
- id = `r${this.shapes.length}`;
409
+ id = keyedHelperName(this, "r", key, "");
362
410
  const shape = {
363
411
  id,
364
412
  fields,
@@ -401,6 +449,20 @@ export class ShapeRegistry {
401
449
  const missing = extra.filter((name) => !order.includes(name));
402
450
  return missing.length === 0 ? order : [...order, ...missing];
403
451
  }
452
+ /** Gives a shape with orderVariants its KEY_ORDER_FIELD, in place,
453
+ * after the bodies lowered (key-order-witness.ts adds the field to each
454
+ * of the shape's literals). Allocation zeroes it, which every other
455
+ * construction keeps. */
456
+ addKeyOrderField(shapeId) {
457
+ const shape = this.byId.get(shapeId);
458
+ if (!shape || shape.fields.some((f) => f.name === KEY_ORDER_FIELD))
459
+ return;
460
+ shape.fields = [...shape.fields, { name: KEY_ORDER_FIELD, type: F64 }].sort((a, b) => a.name < b.name ? -1 : a.name > b.name ? 1 : 0);
461
+ this.revision++;
462
+ const key = this.keyOf(shape.fields, false, shape.indexValue);
463
+ if (!this.byKey.has(key))
464
+ this.byKey.set(key, shapeId);
465
+ }
404
466
  /** Adds optional fields to an interned shape in place: members a type
405
467
  * assertion attaches to the shape's values (`r as R & { tag: string }`
406
468
  * followed by `view.tag = ...`; see assertion-members.ts). Every value
@@ -434,6 +496,44 @@ export class ShapeRegistry {
434
496
  this.byKey.set(key, shapeId);
435
497
  }
436
498
  }
499
+ /** The id of a recursive placeholder described by `description`. Two
500
+ * different types can still share a description (checkerTypeDescription stops
501
+ * after a few levels of type arguments); the later one takes the first free
502
+ * name with a numbered suffix. */
503
+ function recursivePlaceholderName(owner, prefix, description, taken) {
504
+ let name = keyedHelperName(owner, prefix, `recursive:${description}`, "");
505
+ for (let n = 1; taken(name); n++)
506
+ name = keyedHelperName(owner, prefix, `recursive:${description}#${n}`, "");
507
+ return name;
508
+ }
509
+ /** How many levels of type arguments checkerTypeDescription describes. */
510
+ const RECURSIVE_NAME_DEPTH = 3;
511
+ /** A checker type's description for names that must not depend on checker
512
+ * type ids (a recursive placeholder, a generic class instance keyed by a
513
+ * literal): its printed form, the structural position of its first
514
+ * declaration, and the same for its type arguments (two instantiations
515
+ * print the same when their type arguments are type parameters or classes
516
+ * of the same name from different declarations). */
517
+ export function checkerTypeDescription(t, ctx, depth = 0) {
518
+ const symbol = t.getAliasSymbol() ?? t.getSymbol();
519
+ const declaration = symbol?.declarations[0];
520
+ const where = declaration
521
+ ? (ctx.positionOf?.(declaration) ??
522
+ `${ts.getSourceFileOfNode(declaration).fileName}:${declaration.pos}`)
523
+ : "";
524
+ let description = `${ctx.checker.typeToString(t)}@${where}`;
525
+ if (depth < RECURSIVE_NAME_DEPTH) {
526
+ const aliasArguments = t.getAliasSymbol() !== undefined ? (t.getAliasTypeArguments() ?? []) : [];
527
+ const typeArguments = aliasArguments.length > 0
528
+ ? aliasArguments
529
+ : t.isTypeReference()
530
+ ? ctx.checker.getTypeArguments(t)
531
+ : [];
532
+ if (typeArguments.length > 0)
533
+ description += `<${typeArguments.map((arg) => checkerTypeDescription(arg, ctx, depth + 1)).join(",")}>`;
534
+ }
535
+ return description;
536
+ }
437
537
  /** The frontend's union interner — mirrors ShapeRegistry. A union's
438
538
  * canonical identity includes its typeKey-sorted arms and literal
439
539
  * discriminator contract. An arm's index in that list IS its runtime tag.
@@ -441,10 +541,12 @@ export class ShapeRegistry {
441
541
  export class UnionRegistry {
442
542
  /** Existing arm/discriminator contracts change when a placeholder closes. */
443
543
  revision = 0;
544
+ /** Each union id with a second hash of its key (keyedHelperName). */
545
+ keyedNameKeys = new Map();
444
546
  byKey = new Map();
445
547
  byId = new Map();
446
548
  armTags = new Map();
447
- /** All interned unions in first-seen (`u0`, `u1`, ...) order. */
549
+ /** All interned unions in first-seen order. */
448
550
  unions = [];
449
551
  /** ts.Types currently being mapped — a back-reference to one is the
450
552
  * recursive knot passing through a union (`type Tree = Leaf | Branch`
@@ -459,11 +561,12 @@ export class UnionRegistry {
459
561
  pendingRec = new Set();
460
562
  /** The union id a back-reference to an in-progress union resolves to:
461
563
  * reuses the type's persistent recursive id or mints a PLACEHOLDER
462
- * entry (empty arms) the outer frame finalizes. */
463
- recursiveRef(t) {
564
+ * entry (empty arms) the outer frame finalizes. `describe` names a new
565
+ * placeholder (checkerTypeDescription). */
566
+ recursiveRef(t, describe) {
464
567
  let id = this.recIds.get(t);
465
568
  if (id === undefined) {
466
- id = `u${this.unions.length}`;
569
+ id = recursivePlaceholderName(this, "u", describe(), (name) => this.byId.has(name));
467
570
  const def = { id, arms: [] };
468
571
  this.byId.set(id, def);
469
572
  this.unions.push(def);
@@ -509,7 +612,7 @@ export class UnionRegistry {
509
612
  const key = JSON.stringify([arms.map(typeKey), discriminant]);
510
613
  let id = this.byKey.get(key);
511
614
  if (id === undefined) {
512
- id = `u${this.unions.length}`;
615
+ id = keyedHelperName(this, "u", key, "");
513
616
  const def = { id, arms, ...(discriminant ? { discriminant } : {}) };
514
617
  this.byKey.set(key, id);
515
618
  this.byId.set(id, def);
@@ -980,7 +1083,7 @@ function genChannels(yieldTs, retTs, nextTs, ctx) {
980
1083
  : mapType(nextTs, ctx);
981
1084
  if (!nextT || nextT.kind === "void" || nextT.kind === "nullT")
982
1085
  return null;
983
- const ownChannel = (t) => t.kind === "f64" || t.kind === "bool" || t.kind === "string";
1086
+ const ownChannel = (t) => t.kind === "f64" || t.kind === "bool" || t.kind === "string" || t.kind === "record";
984
1087
  const dynMix = (yieldT.kind === "dyn" && retT.kind !== "dyn" && retT.kind !== "void" && !ownChannel(retT)) ||
985
1088
  (retT.kind === "dyn" && yieldT.kind !== "dyn" && yieldT.kind !== "void" && !ownChannel(yieldT));
986
1089
  if (dynMix)
@@ -1325,10 +1428,18 @@ export function mapType(type, ctx) {
1325
1428
  if (flags & (ts.TypeFlags.Boolean | ts.TypeFlags.BooleanLiteral))
1326
1429
  return BOOL;
1327
1430
  }
1431
+ const localValue = ctx.localClassValue?.(type);
1432
+ if (localValue) {
1433
+ contextResolutions++;
1434
+ return localValue;
1435
+ }
1328
1436
  const topLevel = mapTypeDepth === 0;
1329
1437
  const typeId = type.id;
1330
1438
  const memoizable = typeId !== undefined && (ctx.canMemoizeType?.() ?? true);
1331
- const memoKey = memoizable ? `${0}:${typeId}` : null;
1439
+ // An empty literal's type maps to the empty record as an unreduced union's
1440
+ // arm (emptyLiteralArm) and to the checked-dynamic value elsewhere: the two
1441
+ // answers keep separate memo entries.
1442
+ const memoKey = memoizable ? `${ctx.emptyLiteralArm ? 1 : 0}:${typeId}` : null;
1332
1443
  if (memoKey !== null) {
1333
1444
  const memo = ctx.typeMemo?.get(memoKey);
1334
1445
  if (memo !== undefined)
@@ -1395,9 +1506,15 @@ function mapTypeInner(type, ctx) {
1395
1506
  // TypeScript's intrinsic globalThis symbol has no declaration. A stored
1396
1507
  // reference needs native object identity, including var's undefined state.
1397
1508
  const intrinsic = type.getSymbol();
1398
- if (intrinsic !== undefined &&
1399
- ts.symbolName(intrinsic) === "globalThis" &&
1400
- intrinsic.declarations.length === 0)
1509
+ const isIntrinsicGlobal = (symbol) => symbol !== undefined &&
1510
+ ts.symbolName(symbol) === "globalThis" &&
1511
+ symbol.declarations.length === 0;
1512
+ if (isIntrinsicGlobal(intrinsic))
1513
+ return DYN;
1514
+ // `typeof globalThis & { key?: T }` (the global-singleton spelling) is the
1515
+ // same global object with declared extra members.
1516
+ if (type.isIntersectionType() &&
1517
+ ts.constituentTypes(type).some((part) => isIntrinsicGlobal(part.getSymbol())))
1401
1518
  return DYN;
1402
1519
  if (ctx.jsDynamicDeclaration !== undefined && intrinsic !== undefined) {
1403
1520
  const objectLiteral = (intrinsic.flags & ts.SymbolFlags.ObjectLiteral) !== 0;
@@ -1900,6 +2017,23 @@ function mapTypeInner(type, ctx) {
1900
2017
  return arrayOf(unitOnlyUnion(unions));
1901
2018
  if (tupleShape?.elementFlags === undefined)
1902
2019
  return null;
2020
+ // A leading-required tuple ending in a rest element whose positions
2021
+ // all share one type (`[string, ...string[]]`, the non-empty list)
2022
+ // is an array of that type: every read, write and method behaves as
2023
+ // the array's, and tsc already proves the required positions exist.
2024
+ const flags = tupleShape.elementFlags;
2025
+ if (flags.length >= 2 &&
2026
+ (flags[flags.length - 1] & ts.ElementFlags.Rest) !== 0 &&
2027
+ flags.slice(0, -1).every((f) => (f & ts.ElementFlags.Required) !== 0)) {
2028
+ const elems = args.map((a) => mapType(a, ctx));
2029
+ const first = elems[0];
2030
+ if (first &&
2031
+ first.kind !== "void" &&
2032
+ isSupportedArrayElem(first) &&
2033
+ elems.every((e) => e !== null && typeEquals(e, first)))
2034
+ return arrayOf(first);
2035
+ return null;
2036
+ }
1903
2037
  // Optional/rest elements have no fixed native tuple layout.
1904
2038
  if (tupleShape.elementFlags.some((f) => !(f & ts.ElementFlags.Required))) {
1905
2039
  return null;
@@ -2119,6 +2253,25 @@ function mapTypeInner(type, ctx) {
2119
2253
  return { kind: "classval", className: inst.className };
2120
2254
  }
2121
2255
  }
2256
+ // A constructable declared in the program whose instances are not one
2257
+ // program class's (`new () => unknown`, `abstract new () => S` over a
2258
+ // record, a type that also names static members such as `{ readonly
2259
+ // schema: unknown; new (): unknown }`, construct overloads): the class
2260
+ // value rides the checked-dynamic tree, as an `unknown` slot already
2261
+ // holds one. `new` through it and static reads dispatch at run time,
2262
+ // and the constructed value checks into the signature's instance type.
2263
+ // Lib and package constructables keep their fences, and so do those of
2264
+ // fetched provenance sources (third-party code under its own policies:
2265
+ // an unused `@__PURE__` const typed `{ new (): any }` elides there).
2266
+ if (ctorSigs.length > 0 &&
2267
+ checker.getCallSignatures(widened).length === 0 &&
2268
+ (widened.getSymbol()?.declarations.length ?? 0) > 0 &&
2269
+ widened.getSymbol().declarations.every((d) => {
2270
+ const sf = ts.getSourceFileOfNode(d);
2271
+ return ctx.isProgramFile(sf) && !isProvenanceSourceFile(sf.fileName);
2272
+ })) {
2273
+ return DYN;
2274
+ }
2122
2275
  }
2123
2276
  // Map<K, V>: a reference to the standard library's Map interface —
2124
2277
  // provenance, not the name (a user's own `interface Map` maps as a record
@@ -2441,18 +2594,38 @@ function mapTypeInner(type, ctx) {
2441
2594
  ctx.isStdlibFile(ts.getSourceFileOfNode(d)))) {
2442
2595
  return DYN;
2443
2596
  }
2444
- // node:crypto's KeyObject: secret keys are native handles (scr_lib.c)
2445
- // whose getters and methods dispatch through the handle. The JsonWebKey
2446
- // that export() returns is a plain checked-dynamic object.
2597
+ // node:crypto's KeyObject: secret keys (scr_lib.c) and private and
2598
+ // public keys (scr_pki.c) are native handles whose getters and methods
2599
+ // dispatch through the handle. The JsonWebKey that export() returns is a
2600
+ // plain checked-dynamic object.
2447
2601
  if (((psym !== undefined && ts.symbolName(psym) === "KeyObject") ||
2448
2602
  (psym !== undefined && ts.symbolName(psym) === "JsonWebKey")) &&
2449
2603
  psym.declarations.some((d) => (ts.isClassDeclaration(d) || ts.isInterfaceDeclaration(d)) &&
2450
2604
  ctx.isStdlibFile(ts.getSourceFileOfNode(d)))) {
2451
2605
  return DYN;
2452
2606
  }
2607
+ // node:crypto's key and signature options are plain checked-dynamic
2608
+ // objects, so a value asserted to one (`opts as
2609
+ // crypto.AsymmetricKeyExportOptions<"pem">`) reaches the call unchanged.
2610
+ if (psym !== undefined &&
2611
+ CRYPTO_KEY_OPTION_DYN_TYPES.has(ts.symbolName(psym)) &&
2612
+ psym.declarations.some((d) => ts.isInterfaceDeclaration(d) &&
2613
+ ctx.isStdlibFile(ts.getSourceFileOfNode(d)) &&
2614
+ isDeclaredInAmbientModule(d, "crypto"))) {
2615
+ return DYN;
2616
+ }
2617
+ // node:crypto's Sign and Verify (createSign/createVerify): native
2618
+ // handles over the digest state (scr_pki.c).
2619
+ if (psym !== undefined &&
2620
+ (ts.symbolName(psym) === "Sign" || ts.symbolName(psym) === "Verify") &&
2621
+ psym.declarations.some((d) => ts.isClassDeclaration(d) &&
2622
+ ctx.isStdlibFile(ts.getSourceFileOfNode(d)) &&
2623
+ isDeclaredInAmbientModule(d, "crypto"))) {
2624
+ return DYN;
2625
+ }
2453
2626
  if (psym &&
2454
2627
  FETCH_AMBIENT_TYPES.includes(ts.symbolName(psym)) &&
2455
- !(ts.symbolName(psym) === "ReadableStream" &&
2628
+ !((ts.symbolName(psym) === "ReadableStream" || ts.symbolName(psym) === "WritableStream") &&
2456
2629
  psym.declarations.some((d) => ts.isInterfaceDeclaration(d) && isDeclaredInAmbientNamespace(d, "NodeJS"))) &&
2457
2630
  psym.declarations.some((d) => (ts.isInterfaceDeclaration(d) || ts.isClassDeclaration(d)) &&
2458
2631
  ctx.isStdlibFile(ts.getSourceFileOfNode(d)))) {
@@ -2487,6 +2660,18 @@ function mapTypeInner(type, ctx) {
2487
2660
  psym.declarations.some((d) => ts.isClassDeclaration(d) && ctx.isStdlibFile(ts.getSourceFileOfNode(d)))) {
2488
2661
  return DYN;
2489
2662
  }
2663
+ // node:crypto DiffieHellman values, and @types/node's DiffieHellmanGroup
2664
+ // alias over them, are native handles carried by the checked-dynamic
2665
+ // representation; lowerDiffieHellmanCall dispatches their methods.
2666
+ {
2667
+ const dhSym = widened.getAliasSymbol() ?? psym;
2668
+ if (dhSym !== undefined &&
2669
+ (ts.symbolName(dhSym) === "DiffieHellman" || ts.symbolName(dhSym) === "DiffieHellmanGroup") &&
2670
+ dhSym.declarations.some((d) => (ts.isClassDeclaration(d) || ts.isTypeAliasDeclaration(d)) &&
2671
+ ctx.isStdlibFile(ts.getSourceFileOfNode(d)))) {
2672
+ return DYN;
2673
+ }
2674
+ }
2490
2675
  // ReadonlyMap/ReadonlySet are the SAME runtime values as Map/Set — the
2491
2676
  // readonly-ness is a checker-only view (no mutating members on the
2492
2677
  // interface), so both map to the identical IR kinds and the read-side
@@ -2508,6 +2693,9 @@ function mapTypeInner(type, ctx) {
2508
2693
  // The runtime rejects reference kinds without a weak lifetime contract.
2509
2694
  if (isStdlibInterface("WeakMap") || isStdlibInterface("WeakSet"))
2510
2695
  return DYN;
2696
+ // FinalizationRegistry is a native handle with register and unregister.
2697
+ if (isStdlibInterface("FinalizationRegistry"))
2698
+ return DYN;
2511
2699
  // Set<T>: Map's sibling — same provenance rule and key domain.
2512
2700
  // Anything else stays unmapped;
2513
2701
  // the `new Set` lowering names the offending element type specifically.
@@ -3114,9 +3302,10 @@ function mapTypeInner(type, ctx) {
3114
3302
  // argument — fenced at the call).
3115
3303
  // Mixed dyn/concrete value channels share checked storage, so either
3116
3304
  // branch of the result record has the same representation. A number,
3117
- // boolean or string channel keeps its own type beside a dyn one (the
3118
- // `Generator<number>` defaults): its values ride OUT typed and box only
3119
- // when the result record is built.
3305
+ // boolean, string or record channel keeps its own type beside a dyn one
3306
+ // (the `Generator<number>` and `IterableIterator<Row>` defaults): its
3307
+ // values ride OUT typed and box only when the result record is built, so
3308
+ // for-of and spread read them back unchecked.
3120
3309
  if (isStdlibInterface("Generator") ||
3121
3310
  isStdlibInterface("AsyncGenerator") ||
3122
3311
  isStdlibInterface("IterableIterator") ||
@@ -3140,6 +3329,14 @@ function mapTypeInner(type, ctx) {
3140
3329
  ...channels,
3141
3330
  };
3142
3331
  }
3332
+ // Iterable<T>: the iterable union (iterableUnionType) — the source value
3333
+ // itself in its own arm, so an array stays the same multi-pass object and
3334
+ // a generator stays single-pass.
3335
+ if (isStdlibInterface("Iterable")) {
3336
+ const arg = checker.getTypeArguments(widened)[0];
3337
+ const elem = arg ? mapType(arg, ctx) : null;
3338
+ return elem ? iterableUnionType(elem, ctx.shapes, unions) : null;
3339
+ }
3143
3340
  // IteratorResult<T, TReturn> — the checker's type of `g.next()` (an
3144
3341
  // alias for IteratorYieldResult<T> | IteratorReturnResult<TReturn>):
3145
3342
  // maps to the SAME interned record genResume answers, so `const r =
@@ -3257,6 +3454,13 @@ function mapTypeInner(type, ctx) {
3257
3454
  fields.sort((a, b) => (a.name < b.name ? -1 : a.name > b.name ? 1 : 0));
3258
3455
  return { kind: "record", shapeId: ctx.shapes.intern(fields, false, undefined, order) };
3259
3456
  }
3457
+ // crypto.getCipherInfo's result is Node's info object itself, read as a
3458
+ // checked-dynamic value: Node leaves out the fields a cipher lacks,
3459
+ // including the nid the declaration requires, so a record cannot hold
3460
+ // every result.
3461
+ if (isStdlibInterface("CipherInfo") &&
3462
+ psym.declarations.some((d) => ts.isInterfaceDeclaration(d) && isDeclaredInAmbientModule(d, "crypto")))
3463
+ return DYN;
3260
3464
  // Filesystem options are data records. Keep their declared optional fields
3261
3465
  // instead of allowing arbitrary standard-library interfaces into records.
3262
3466
  if (((psym !== undefined && ts.symbolName(psym) === "FileReadOptions") ||
@@ -3466,6 +3670,32 @@ function mapTypeInner(type, ctx) {
3466
3670
  };
3467
3671
  }
3468
3672
  }
3673
+ // crypto.generateKeyPairSync's results: KeyPairKeyObjectResult and
3674
+ // KeyPairSyncResult<T1, T2> as { publicKey, privateKey } records over the
3675
+ // mapped property types (KeyObjects, PEM strings or DER Buffers), in
3676
+ // Node's key order.
3677
+ if (psym !== undefined &&
3678
+ (ts.symbolName(psym) === "KeyPairKeyObjectResult" ||
3679
+ ts.symbolName(psym) === "KeyPairSyncResult") &&
3680
+ psym.declarations.some((d) => ts.isInterfaceDeclaration(d) &&
3681
+ ctx.isStdlibFile(ts.getSourceFileOfNode(d)) &&
3682
+ isDeclaredInAmbientModule(d, "crypto"))) {
3683
+ const field = (name) => {
3684
+ const prop = ctx.checker.getPropertyOfType(type, name);
3685
+ return prop ? mapType(ctx.checker.getTypeOfSymbol(prop), ctx) : null;
3686
+ };
3687
+ const publicKey = field("publicKey");
3688
+ const privateKey = field("privateKey");
3689
+ if (!publicKey || !privateKey)
3690
+ return null;
3691
+ return {
3692
+ kind: "record",
3693
+ shapeId: ctx.shapes.intern([
3694
+ { name: "privateKey", type: privateKey },
3695
+ { name: "publicKey", type: publicKey },
3696
+ ], false, undefined, ["publicKey", "privateKey"]),
3697
+ };
3698
+ }
3469
3699
  // crypto.X509Certificate — the Dirent-style data record: THREE visible
3470
3700
  // fields (fingerprint and the validFrom/validTo validity window, all
3471
3701
  // computed at construction by the new-expression lowering). Module-
@@ -3872,7 +4102,10 @@ function mapTypeInner(type, ctx) {
3872
4102
  if (knownRecursive !== undefined)
3873
4103
  return { kind: "union", unionId: knownRecursive };
3874
4104
  if (unions.inProgress.has(widened)) {
3875
- return { kind: "union", unionId: unions.recursiveRef(widened) };
4105
+ return {
4106
+ kind: "union",
4107
+ unionId: unions.recursiveRef(widened, () => checkerTypeDescription(widened, ctx)),
4108
+ };
3876
4109
  }
3877
4110
  unions.inProgress.add(widened);
3878
4111
  const sensitivityAtEntry = contextResolutions;
@@ -3896,6 +4129,14 @@ function mapTypeInner(type, ctx) {
3896
4129
  (part.getSymbol()?.declarations.some((d) => ctx.isStdlibFile(d.getSourceFile())) ?? false));
3897
4130
  };
3898
4131
  const hasArrayPart = parts.some((part) => checker.isArrayType(part) || matchArray(part));
4132
+ // Subtype reduction removes every arm assignable to `{}`, so a union
4133
+ // that keeps another non-nullish arm beside an empty literal's `{}`
4134
+ // was not reduced: that `{}` arm holds only the literal's objects.
4135
+ const nullish = ts.TypeFlags.Null | ts.TypeFlags.Undefined | ts.TypeFlags.Void;
4136
+ const literalEmptyArms = parts.some((part) => isEmptyObjectLiteralType(part, ctx)) &&
4137
+ parts.some((part) => (part.flags & nullish) === 0 &&
4138
+ !checker.isNeverType(part) &&
4139
+ !isEmptyObjectLiteralType(part, ctx));
3899
4140
  for (const part of parts) {
3900
4141
  if (hasArrayPart && emptyTuple(part))
3901
4142
  continue;
@@ -3916,7 +4157,19 @@ function mapTypeInner(type, ctx) {
3916
4157
  byKey.set(typeKey(NULL_T), NULL_T);
3917
4158
  continue;
3918
4159
  }
3919
- const mapped = mapType(part, ctx);
4160
+ let mapped;
4161
+ if (literalEmptyArms && isEmptyObjectLiteralType(part, ctx)) {
4162
+ ctx.emptyLiteralArm = true;
4163
+ try {
4164
+ mapped = mapType(part, ctx);
4165
+ }
4166
+ finally {
4167
+ ctx.emptyLiteralArm = false;
4168
+ }
4169
+ }
4170
+ else {
4171
+ mapped = mapType(part, ctx);
4172
+ }
3920
4173
  if (!mapped) {
3921
4174
  return null;
3922
4175
  }
@@ -3986,7 +4239,9 @@ function mapTypeInner(type, ctx) {
3986
4239
  a.kind === "union" ||
3987
4240
  a.kind === "date" ||
3988
4241
  a.kind === "dyn" ||
3989
- a.kind === "generator") ||
4242
+ // A generator arm only comes from an Iterable<T> (an optional
4243
+ // one keeps its unit arms beside the iterable union's).
4244
+ (a.kind === "generator" && iterableArmsElem(arms) === null)) ||
3990
4245
  !maybePromiseUnionOk(parts, arms, ctx)) {
3991
4246
  return null;
3992
4247
  }
@@ -4789,6 +5044,53 @@ function constAssertedEmptyArrayProp(p) {
4789
5044
  return false;
4790
5045
  return underConstAssertion(d);
4791
5046
  }
5047
+ /** A TypeScript property assignment `name: []` whose type is `never[]`. */
5048
+ function emptyNeverArrayProp(p, fieldTs, checker) {
5049
+ const d = p.valueDeclaration;
5050
+ if (d === undefined || !ts.isPropertyAssignment(d))
5051
+ return false;
5052
+ if (isJsSourceFile(ts.getSourceFileOfNode(d)))
5053
+ return false;
5054
+ if (!ts.isArrayLiteralExpression(d.initializer) || d.initializer.elements.nodes.length > 0)
5055
+ return false;
5056
+ return (checker.isArrayType(fieldTs) &&
5057
+ (checker.getTypeArguments(fieldTs)[0].flags & ts.TypeFlags.Never) !== 0);
5058
+ }
5059
+ /** A JavaScript object literal's property typed `never[]` (`{ issues: [] }`).
5060
+ * Nothing checks a JavaScript file's later writes, which can push any value
5061
+ * onto it (`ctx.common.issues.push(issue)`), so it holds the checked-dynamic
5062
+ * array rather than never's f64 element array. */
5063
+ function jsNeverArrayProp(p, fieldTs, checker) {
5064
+ return (jsObjectLiteralProperty(p) &&
5065
+ checker.isArrayType(fieldTs) &&
5066
+ (checker.getTypeArguments(fieldTs)[0].flags & ts.TypeFlags.Never) !== 0);
5067
+ }
5068
+ /** A JavaScript object literal's property (`{ lastComponent: undefined }`,
5069
+ * `{ user: null }`). Nothing checks a JavaScript file's later writes, which
5070
+ * can store any value in it (`path.lastComponent = { ... }`), so a
5071
+ * property whose only initializer is a unit holds the checked-dynamic value
5072
+ * rather than the unit-only union. */
5073
+ function isUnitOnlyIr(t, ctx) {
5074
+ if (t.kind !== "union")
5075
+ return false;
5076
+ const def = ctx.unions.get(t.unionId);
5077
+ return def !== undefined && def.arms.every((arm) => isUnitType(arm));
5078
+ }
5079
+ /** A property a JavaScript object literal declares. The checker also adds
5080
+ * each missing property, optional and `undefined`, to every literal of a
5081
+ * union of literals (`{ _tag, value } | { _tag, error }` gains
5082
+ * `error?: undefined` and `value?: undefined`); those keep their unit-only
5083
+ * type, so a literal still converts to the one arm whose properties it
5084
+ * has. */
5085
+ function jsObjectLiteralProperty(p) {
5086
+ const d = p.valueDeclaration;
5087
+ // `__proto__: null` sets the literal's prototype; it declares no property.
5088
+ return (d !== undefined &&
5089
+ (ts.isPropertyAssignment(d) || ts.isShorthandPropertyAssignment(d)) &&
5090
+ ts.symbolName(p) !== "__proto__" &&
5091
+ (p.flags & ts.SymbolFlags.Optional) === 0 &&
5092
+ isJsSourceFile(ts.getSourceFileOfNode(d)));
5093
+ }
4792
5094
  function mapGenericAwaitedAlias(type, ctx) {
4793
5095
  const { resolveTypeParam } = ctx;
4794
5096
  if (!resolveTypeParam)
@@ -5050,7 +5352,8 @@ function evalMappedTemplate(type, keys, aliases, ctx) {
5050
5352
  const checked = evalMappedTemplate(checkType, keys, scope, ctx);
5051
5353
  if (!checked)
5052
5354
  return null;
5053
- const inferred = matchInferReference(checked, extendsType, ctx);
5355
+ const inferred = primitiveExtendsCheck(checked, extendsType, ctx) ??
5356
+ matchInferReference(checked, extendsType, ctx);
5054
5357
  if (inferred === undefined)
5055
5358
  return null;
5056
5359
  const branch = inferred ? type.getTrueType() : type.getFalseType();
@@ -5059,6 +5362,24 @@ function evalMappedTemplate(type, keys, aliases, ctx) {
5059
5362
  }
5060
5363
  return mentionsMappedParams(type, keys, aliases) ? null : type;
5061
5364
  }
5365
+ /** `checked extends X` where X is a primitive or literal type, or a union of
5366
+ * them (`K extends "required" ? ...`), and `checked` is one such type:
5367
+ * X has no infer positions, so assignability decides the branch (an empty
5368
+ * binding map for the true branch). A union `checked` distributes and stays
5369
+ * undecided here (undefined), as do other shapes. */
5370
+ function primitiveExtendsCheck(checked, extendsType, ctx) {
5371
+ const primitive = ts.TypeFlags.StringLike |
5372
+ ts.TypeFlags.NumberLike |
5373
+ ts.TypeFlags.BooleanLike |
5374
+ ts.TypeFlags.BigIntLike |
5375
+ ts.TypeFlags.Null |
5376
+ ts.TypeFlags.Undefined;
5377
+ const isPrimitive = (t) => !t.isUnionType() && (t.flags & primitive) !== 0 && (t.flags & ts.TypeFlags.TypeParameter) === 0;
5378
+ const extendsParts = extendsType.isUnionType() ? ts.constituentTypes(extendsType) : [extendsType];
5379
+ if (!isPrimitive(checked) || !extendsParts.every(isPrimitive))
5380
+ return undefined;
5381
+ return ctx.checker.isTypeAssignableTo(checked, extendsType) ? new Map() : false;
5382
+ }
5062
5383
  /** `checked extends G<..., infer T, ...>`: the infer bindings when
5063
5384
  * `checked` is a reference to the same generic `G` (its arguments bind the
5064
5385
  * infer positions; other positions must be the same types), false when it
@@ -5332,6 +5653,40 @@ export function unitOnlyUnion(unions) {
5332
5653
  arms.sort((a, b) => (typeKey(a) < typeKey(b) ? -1 : 1));
5333
5654
  return { kind: "union", unionId: unions.intern(arms) };
5334
5655
  }
5656
+ /** `Iterable<T>`: a union whose arms are the sources that keep their own
5657
+ * representation — `T[]`, a `Set<T>`, a `Map<K, V>` (T the `[K, V]`
5658
+ * tuple), a string (T string) — and a generator over T, which also holds
5659
+ * every other iterator (Map/Set and array iterators adapt into one). The
5660
+ * generator arm marks the union as iterable (iterableArmsElem): no other
5661
+ * union has one. Null when T has no array or generator form. */
5662
+ export function iterableUnionType(elem, shapes, unions) {
5663
+ if (elem.kind === "void" || elem.kind === "generator" || !isSupportedArrayElem(elem))
5664
+ return null;
5665
+ if (!genResultRecord(elem, VOID, shapes, unions))
5666
+ return null;
5667
+ const arms = [
5668
+ { kind: "array", elem },
5669
+ { kind: "generator", yieldT: elem, retT: VOID, nextT: UNDEFINED_T },
5670
+ ];
5671
+ const elemArms = elem.kind === "union" ? unions.get(elem.unionId)?.arms : undefined;
5672
+ if (isSupportedSetElem(elem, elemArms))
5673
+ arms.push({ kind: "set", elem });
5674
+ if (elem.kind === "string")
5675
+ arms.push(STRING);
5676
+ if (elem.kind === "record") {
5677
+ const shape = shapes.get(elem.shapeId);
5678
+ const [k, v] = shape?.fields ?? [];
5679
+ if (shape?.tuple &&
5680
+ shape.fields.length === 2 &&
5681
+ k?.name === "0" &&
5682
+ v?.name === "1" &&
5683
+ isSupportedMapKey(k.type, k.type.kind === "union" ? unions.get(k.type.unionId)?.arms : undefined) &&
5684
+ isSupportedMapValue(v.type))
5685
+ arms.push({ kind: "map", key: k.type, value: v.type });
5686
+ }
5687
+ arms.sort((a, b) => (typeKey(a) < typeKey(b) ? -1 : 1));
5688
+ return { kind: "union", unionId: unions.intern(arms) };
5689
+ }
5335
5690
  /** The IteratorResult record of a generator's value channels: `{ done:
5336
5691
  * boolean, value: V }` where V is dyn (an any/unknown channel) or the
5337
5692
  * canonical union of the yield arms, the return arms (when the return
@@ -6067,7 +6422,10 @@ function mapRecordType(widened, ctx) {
6067
6422
  // frame completes (finalizeRecursive below). Backends represent records
6068
6423
  // as heap references, so the self-reference is an ordinary pointer.
6069
6424
  if (shapes.inProgress.has(widened)) {
6070
- return { kind: "record", shapeId: shapes.recursiveRef(widened) };
6425
+ return {
6426
+ kind: "record",
6427
+ shapeId: shapes.recursiveRef(widened, () => checkerTypeDescription(widened, ctx)),
6428
+ };
6071
6429
  }
6072
6430
  shapes.inProgress.add(widened);
6073
6431
  const sensitivityAtEntry = contextResolutions;
@@ -6451,6 +6809,24 @@ function wideningAddedProperties(type, props, ctx) {
6451
6809
  }
6452
6810
  return added;
6453
6811
  }
6812
+ /** Whether `type` is an interface one of whose `extends` clauses names a
6813
+ * type the checker answers `any` (or an error type) for. */
6814
+ function interfaceExtendsAny(type, checker) {
6815
+ const symbol = type.getSymbol();
6816
+ if (symbol === undefined || (symbol.flags & ts.SymbolFlags.Interface) === 0)
6817
+ return false;
6818
+ for (const decl of symbol.declarations) {
6819
+ if (!ts.isInterfaceDeclaration(decl))
6820
+ continue;
6821
+ for (const clause of decl.heritageClauses?.nodes ?? []) {
6822
+ for (const base of clause.types.nodes) {
6823
+ if ((checker.getTypeAtLocation(base).flags & ts.TypeFlags.Any) !== 0)
6824
+ return true;
6825
+ }
6826
+ }
6827
+ }
6828
+ return false;
6829
+ }
6454
6830
  function mapRecordTypeInner(widened, ctx) {
6455
6831
  const { checker, shapes } = ctx;
6456
6832
  if (checker.getConstructSignatures(widened).length > 0)
@@ -6466,6 +6842,14 @@ function mapRecordTypeInner(widened, ctx) {
6466
6842
  const widenedSym = widened.getSymbol();
6467
6843
  if (widenedSym !== undefined && (widenedSym.flags & ts.SymbolFlags.Enum) !== 0)
6468
6844
  return null;
6845
+ // An interface extending a type the checker answers `any` for (in the
6846
+ // compiled world, a package type computed from members only its .d.ts
6847
+ // declares, such as `interface P extends z.infer<typeof S>`) has members
6848
+ // the checker cannot list: its own declared fields are not the whole
6849
+ // object. The value is checked-dynamic, never a record of the declared
6850
+ // fields alone.
6851
+ if (interfaceExtendsAny(widened, checker))
6852
+ return DYN;
6469
6853
  // An index signature maps to a hybrid shape: declared fields keep
6470
6854
  // struct slots, undeclared keys ride the shape's overflow map, valued
6471
6855
  // uniformly by the signature's value type (`unknown` → dyn — a model-pricing table's
@@ -6607,24 +6991,28 @@ function mapRecordTypeInner(widened, ctx) {
6607
6991
  // has zero declared members — the signature is the shape.
6608
6992
  if (computed && props.length === 0 && !indexValue)
6609
6993
  return null;
6610
- // A DECLARED empty object type — `{}` (spelled or the checker's shared
6611
- // intrinsic), `interface Empty {}` — is tsc's TOP type over non-nullish
6612
- // values: every number, string, record, array, function, or class
6613
- // instance is assignable into the slot, so the exact-record stance
6614
- // cannot hold it. It lowers like `unknown` (the dyn), the same rule
6615
- // as `object` and the lib's `Object`: assignments convert at the site
6616
- // (sources outside the checked-dynamic tree fence there, exactly as unknown does), reads
6617
- // narrow back out through the same checked casts. The type INFERRED
6618
- // from an empty object literal (`const o = {}`) stays the empty record
6619
- // — it describes a value the program built, not an annotation that
6620
- // admits everything — and computed empties (`Partial<T>` in a generic
6621
- // body) returned null above. Empty shapes WITH an index signature
6622
- // (`Record<string, T>`) are not empty: the signature is the shape.
6994
+ // An empty object type — `{}` (spelled, the checker's shared
6995
+ // intrinsic, or inferred from an empty object literal), `interface
6996
+ // Empty {}` — is tsc's TOP type over non-nullish values: every number,
6997
+ // string, record, array, function, or class instance is assignable
6998
+ // into the slot, so the exact-record stance cannot hold it. It lowers
6999
+ // like `unknown` (the dyn), the same rule as `object` and the lib's
7000
+ // `Object`: assignments convert at the site (sources outside the
7001
+ // checked-dynamic tree fence there, exactly as unknown does), reads
7002
+ // narrow back out through the same checked casts. A literal's inferred
7003
+ // `{}` is no exception: union subtype reduction folds primitives into
7004
+ // it (`["12", {}]` is `{}[]`, `flag ? "x" : {}` is `{}`), and `let o =
7005
+ // {}` admits `o = "x"`. As an arm beside another non-nullish arm (the
7006
+ // union was not reduced, `string | {} | DataView`) it holds only the
7007
+ // literal's objects and stays the empty record (emptyLiteralArm).
7008
+ // Computed empties (`Partial<T>` in a generic body) returned null
7009
+ // above. Empty shapes WITH an index signature (`Record<string, T>`) are
7010
+ // not empty: the signature is the shape.
6623
7011
  if (props.length === 0 &&
6624
7012
  indexValue === undefined &&
6625
7013
  checker.getCallSignatures(widened).length === 0 &&
6626
7014
  checker.getConstructSignatures(widened).length === 0 &&
6627
- !(anonSym !== undefined && anonSym.declarations.some((d) => ts.isObjectLiteralExpression(d)))) {
7015
+ !(ctx.emptyLiteralArm && isEmptyObjectLiteralType(widened, ctx))) {
6628
7016
  return DYN;
6629
7017
  }
6630
7018
  const fields = [];
@@ -6731,6 +7119,14 @@ function mapRecordTypeInner(widened, ctx) {
6731
7119
  constAssertedEmptyArrayProp(p)) {
6732
7120
  pt = arrayOf(unitOnlyUnion(ctx.unions));
6733
7121
  }
7122
+ // A TypeScript property initialized with an empty literal and typed
7123
+ // `never[]` (`const out = { files: [] }`) holds no element, so it maps
7124
+ // like the empty tuple: the unit-only element array, which a
7125
+ // destination's typed array field (`files: string[]`) receives through
7126
+ // the checked empty-array lift. never's f64 element would make it a
7127
+ // `number[]` field.
7128
+ if (pt?.kind === "array" && emptyNeverArrayProp(p, fieldTs, checker))
7129
+ pt = arrayOf(unitOnlyUnion(ctx.unions));
6734
7130
  if (pt === null && (fieldTs.flags & ts.TypeFlags.Any) !== 0)
6735
7131
  pt = DYN;
6736
7132
  // An `any[]` field (`list: any[]` in an SDK's message type, also
@@ -6750,6 +7146,10 @@ function mapRecordTypeInner(widened, ctx) {
6750
7146
  // omits the undefined arm exactly like an omitted optional.
6751
7147
  if (pt?.kind === "void" && isUnitOnlyTsType(fieldTs, ctx.resolveTypeParam))
6752
7148
  pt = unitOnlyUnion(ctx.unions);
7149
+ if (pt !== null && isUnitOnlyIr(pt, ctx) && jsObjectLiteralProperty(p))
7150
+ pt = DYN;
7151
+ if (pt?.kind === "array" && jsNeverArrayProp(p, fieldTs, checker))
7152
+ pt = DYN;
6753
7153
  // dyn FIELDS map now (`{ v: unknown }`, `[string, unknown]` tuples):
6754
7154
  // the slot carries a dyn value exactly like an `unknown`-valued
6755
7155
  // overflow entry — same RC adapters, same dynFrom conversion on the
@@ -7225,4 +7625,17 @@ function innerBlockedMember(t, ctx, seen) {
7225
7625
  }
7226
7626
  return here;
7227
7627
  }
7628
+ /** The type tsc infers from an empty object literal (`{}` written as a
7629
+ * value): no members, index signatures or signatures, declared by an object
7630
+ * literal expression. */
7631
+ function isEmptyObjectLiteralType(type, ctx) {
7632
+ const { checker } = ctx;
7633
+ const symbol = type.getSymbol();
7634
+ return (symbol !== undefined &&
7635
+ symbol.declarations.some((d) => ts.isObjectLiteralExpression(d)) &&
7636
+ checker.getPropertiesOfType(type).length === 0 &&
7637
+ checker.getIndexInfosOfType(type).length === 0 &&
7638
+ checker.getCallSignatures(type).length === 0 &&
7639
+ checker.getConstructSignatures(type).length === 0);
7640
+ }
7228
7641
  //# sourceMappingURL=type-mapper.js.map