@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
@@ -44,8 +44,9 @@ import * as ts from "./ts7/adapter.js";
44
44
  import { commonJsModuleSyntaxDiag, invalidPackageConfigDiag, strictNullChecksFloorDiag, tscPassthroughDiag, unsupportedDiag, } from "../diagnostics/diagnostic.js";
45
45
  import { isNodeModulesPath, nearestInvalidPackageJsonPath, nearestPackageType, nearestPkgJsonPath, packageImportTarget, projectDtsRuntimeSibling, resolveBareModule, resolveProjectModule, resolveTypeDirective, setProjectPathMappings, setProjectRealm, } from "./resolve.js";
46
46
  import { probeNodeImportRefusal, probeNodeRequireRefusal } from "./npm.js";
47
- import { isNpmStaticPackage, npmStaticActive, npmStaticFsShadow, programBuiltinAliasSource, clearProgramBuiltinAliasCache, npmStaticLexerVisibleNames, npmStaticLiveExportTable, npmStaticPackageOfPath, reportNpmStaticOffender, setNpmStaticDeclarationOverloads, setNpmStaticPackages, } from "./npm-static.js";
47
+ import { isNpmStaticPackage, npmStaticActive, npmStaticFsShadow, programBuiltinAliasSource, clearProgramBuiltinAliasCache, npmStaticLexerVisibleNames, npmStaticLiveExportTable, npmStaticPackageOfPath, reportNpmStaticOffender, setNpmStaticDeclarationOverloads, setNpmStaticPackages, setNpmStaticTypeExports, } from "./npm-static.js";
48
48
  import { isPrunedNpmReexport, planNpmStaticReexports } from "./npm-static-prune.js";
49
+ import { npmStaticTypeExportPlan } from "./npm-static-type-exports-host.js";
49
50
  import { isNpmStaticSubclassArgument } from "./npm-static-subtyping.js";
50
51
  import { npmStaticDeclarationReexports, npmStaticRuntimeClassTargets, parseNpmStaticDeclarationOverloads, parseNpmStaticDeclarationProperties, } from "./npm-static-declaration-syntax.js";
51
52
  import { configurePackageShims, isPackageShimFile, isPackageShimName, isShimmedImport, } from "./package-shims.js";
@@ -60,7 +61,9 @@ import { forkTargetPaths } from "./fork-target.js";
60
61
  import { workerTargetPaths } from "./worker-target.js";
61
62
  import { erasedTypeOnlyImport, typeOnlyNamedImport, typeOnlyReachedFiles, } from "./type-only-imports.js";
62
63
  import { moduleSourceCandidates } from "./module-source-candidates.js";
64
+ import { planDeclProjection } from "./decl-projection.js";
63
65
  import { inferredJsDiagnosticSuppressed } from "./inferred-js-diagnostics.js";
66
+ import { containsJsx, firstJsx, jsxEmitName, jsxEmitPlan, jsxPragmas, lowerJsx, } from "./jsx-source.js";
64
67
  const BASE_OPTIONS = {
65
68
  strict: true,
66
69
  };
@@ -560,9 +563,48 @@ function moduleSpecifierKind7(specifier) {
560
563
  ? "require"
561
564
  : "import";
562
565
  }
566
+ /** The program's files with JSX, lowered with the project's jsx settings
567
+ * and each file's pragmas, or the refusal of a setting that emits no calls.
568
+ * TypeScript files (.ts, .mts, .cts) cannot hold JSX; without a jsx setting
569
+ * the checker already rejects any JSX (TS17004). */
570
+ function lowerProgramJsx7(program, options) {
571
+ const sources = new Map();
572
+ const mode = jsxEmitName(options.jsx);
573
+ if (mode === undefined)
574
+ return { sources, refusal: null };
575
+ for (const sf of program.getImplementationSourceFiles()) {
576
+ if (sf.isDeclarationFile || /\.[mc]?ts$/.test(sf.fileName) || !containsJsx(sf))
577
+ continue;
578
+ const at = firstJsx(sf);
579
+ const loc = { file: sf.fileName, start: ts.tokenStartOfNode(at), end: at.end };
580
+ if (mode === "preserve" || mode === "react-native") {
581
+ return {
582
+ sources,
583
+ refusal: {
584
+ code: "SC1090",
585
+ message: `JSX with "jsx": "${mode}" is not supported: that setting keeps JSX in the output instead of lowering it to calls`,
586
+ loc,
587
+ hint: 'set "jsx" to "react", "react-jsx" or "react-jsxdev" in the project tsconfig',
588
+ },
589
+ };
590
+ }
591
+ const plan = jsxEmitPlan({
592
+ jsx: mode,
593
+ jsxFactory: options.jsxFactory,
594
+ jsxFragmentFactory: options.jsxFragmentFactory,
595
+ jsxImportSource: options.jsxImportSource,
596
+ reactNamespace: options.reactNamespace,
597
+ }, jsxPragmas(sf.text));
598
+ sources.set(sf.fileName, lowerJsx(sf, plan));
599
+ }
600
+ return { sources, refusal: null };
601
+ }
563
602
  function loadProgram7(host, entryPath, externalTypes = new Map(),
564
603
  /** The --npm-static lowering world: root opted-in packages' deep edges. */
565
- rootNpmStaticEdges = false) {
604
+ rootNpmStaticEdges = false,
605
+ /** The declaration-typed boundary's projection (decl-projection.ts):
606
+ * answers rewritten user files for the lowering world, or null. */
607
+ projector) {
566
608
  const config = adoptProjectConfig7(host, entryPath);
567
609
  const configuredPaths = config.options["paths"];
568
610
  setProjectPathMappings(configuredPaths !== undefined && typeof configuredPaths === "object" && configuredPaths !== null
@@ -636,6 +678,80 @@ rootNpmStaticEdges = false) {
636
678
  };
637
679
  program = host.createProgram([...programRoots, overridesDtsPath()], options);
638
680
  }
681
+ // JSX: the program above checks the files as written; the program the
682
+ // lowering compiles holds them with their JSX lowered.
683
+ const jsx = lowerProgramJsx7(program, options);
684
+ let tscWorld;
685
+ const declBoundaryNotes = [];
686
+ if (jsx.refusal !== null) {
687
+ config.diags.push(jsx.refusal);
688
+ }
689
+ else if (jsx.sources.size > 0) {
690
+ const original = program;
691
+ // The project world must read the original text too, so it is built
692
+ // before the rewritten files are served, and only when it is needed.
693
+ const diagnostics = ts.getPreEmitDiagnostics(original);
694
+ const errors = diagnostics.some((d) => d.category === ts.DiagnosticCategory.Error);
695
+ tscWorld = {
696
+ program: original,
697
+ diagnostics,
698
+ projectWorld: errors ? host.createProgram(programRoots, options) : null,
699
+ };
700
+ for (const [file, lowered] of jsx.sources)
701
+ host.addVirtualFile(file, lowered.text);
702
+ program = host.createProgram([...programRoots, overridesDtsPath()], options);
703
+ }
704
+ else if (projector !== undefined) {
705
+ // The declaration-typed boundary: user files typed from package
706
+ // declarations (decl-projection.ts). The tsc gate reads the original
707
+ // text; the lowering compiles the rewritten files.
708
+ const projection = projector(program);
709
+ if (projection !== null) {
710
+ const original = program;
711
+ const baseline = new Map();
712
+ for (const file of projection.files.keys()) {
713
+ const sf = original.getSourceFile(file);
714
+ if (sf !== undefined)
715
+ baseline.set(file, original.getSemanticDiagnostics(sf).length);
716
+ }
717
+ for (const [file, text] of projection.files)
718
+ host.addVirtualFile(file, text);
719
+ host.addVirtualFile(projection.declFile, projection.declText);
720
+ programRoots.push(projection.declFile);
721
+ program = host.createProgram([...programRoots, overridesDtsPath()], options);
722
+ // A rewrite the lowering world disagrees with (new errors) is
723
+ // dropped for that file: the file lowers as it would without it.
724
+ const dropped = [];
725
+ for (const file of projection.files.keys()) {
726
+ const sf = program.getSourceFile(file);
727
+ if (sf === undefined)
728
+ continue;
729
+ if (program.getSemanticDiagnostics(sf).length > (baseline.get(file) ?? 0)) {
730
+ dropped.push(file);
731
+ host.addVirtualFile(file, original.getSourceFile(file).text);
732
+ }
733
+ }
734
+ if (dropped.length > 0) {
735
+ program.dispose();
736
+ program = host.createProgram([...programRoots, overridesDtsPath()], options);
737
+ for (const file of dropped)
738
+ declBoundaryNotes.push(declBoundaryDroppedDiag(file));
739
+ }
740
+ if (dropped.length === projection.files.size) {
741
+ program.dispose();
742
+ programRoots.pop();
743
+ program = original;
744
+ }
745
+ else {
746
+ tscWorld = {
747
+ program: original,
748
+ diagnostics: ts.getPreEmitDiagnostics(original),
749
+ projectWorld: null,
750
+ declWorldFallback: true,
751
+ };
752
+ }
753
+ }
754
+ }
639
755
  const entry = program.getSourceFile(entryPath);
640
756
  if (!entry)
641
757
  throw new Error(`could not load ${entryPath}`);
@@ -646,6 +762,7 @@ rootNpmStaticEdges = false) {
646
762
  entry,
647
763
  moduleOrder: [],
648
764
  configDiags: config.diags,
765
+ ...(declBoundaryNotes.length > 0 ? { declBoundaryNotes } : {}),
649
766
  typeWorld: {
650
767
  nodeFallback: nodeTypes === null,
651
768
  projectLib: config.projectLib ?? null,
@@ -654,10 +771,14 @@ rootNpmStaticEdges = false) {
654
771
  },
655
772
  externalTypes,
656
773
  externalTypeSpecifiersByFile,
774
+ ...(tscWorld === undefined ? {} : { jsxSources: jsx.sources }),
775
+ ...(tscWorld === undefined ? {} : { tscWorld }),
657
776
  projectWorld: () => (projectWorld ??= host.createProgram(programRoots, options)),
658
777
  disposeAll: () => {
659
778
  try {
660
779
  projectWorld?.dispose();
780
+ tscWorld?.projectWorld?.dispose();
781
+ tscWorld?.program.dispose();
661
782
  }
662
783
  finally {
663
784
  program.dispose();
@@ -779,6 +900,10 @@ export function loadProgram(entryPath, services, opts) {
779
900
  }
780
901
  setNpmStaticPackages(npmStaticPackages);
781
902
  setNpmStaticDeclarationOverloads(declarationOverloads, declarationProperties);
903
+ // Types only the packages' .d.ts declares keep their declarations
904
+ // (npm-static-type-exports.ts).
905
+ const typeExports = npmStaticTypeExportPlan(services, entryPath, npmStaticPackages);
906
+ setNpmStaticTypeExports(typeExports.copies, typeExports.typedefs);
782
907
  // Workspace-package registrations reset per load (same discipline as the
783
908
  // npm-static set), then the opted-in names are probed UP FRONT: a
784
909
  // workspace-linked opt-in resolves to files whose realpaths carry no
@@ -809,25 +934,58 @@ export function loadProgram(entryPath, services, opts) {
809
934
  hideFile: (path) => (npmShadow?.hideFile(path) ?? false) || projectDtsRuntimeSibling(path) !== null,
810
935
  };
811
936
  const host = services.createProgramHost({ cwd: dirname(entryPath), fsShadow });
937
+ let authoredHost = null;
938
+ let authoredLoad = null;
939
+ const authored = () => {
940
+ if (!authoredLoad) {
941
+ authoredHost = services.createProgramHost({ cwd: dirname(entryPath) });
942
+ authoredLoad = loadProgram7(authoredHost, entryPath, externalTypes);
943
+ }
944
+ return authoredLoad;
945
+ };
946
+ const declPackages = npmStaticPackages.filter((pkg) => {
947
+ const resolved = resolveBareModule(entryPath, pkg, "types-only");
948
+ return resolved !== null && /\.d\.(?:ts|mts|cts)$/.test(resolved.typesFile);
949
+ });
950
+ const projector = declPackages.length === 0
951
+ ? undefined
952
+ : (program) => {
953
+ const userFiles = declBoundaryUserFiles(program, declPackages);
954
+ if (userFiles.length === 0)
955
+ return null;
956
+ let projection;
957
+ try {
958
+ projection = planDeclProjection({
959
+ jsProgram: program,
960
+ declProgram: authored().program,
961
+ userFiles,
962
+ outDir: dirname(entryPath),
963
+ });
964
+ }
965
+ catch (error) {
966
+ if (process.env["SCRIPTC_DEBUG_DECL_BOUNDARY"] === "1")
967
+ throw error;
968
+ return null;
969
+ }
970
+ if (process.env["SCRIPTC_DEBUG_DECL_BOUNDARY"] === "1") {
971
+ process.stderr.write(`[decl-boundary] ${projection === null ? "no projection" : projection.plan.join("\n[decl-boundary] ")}\n`);
972
+ if (projection !== null)
973
+ process.stderr.write(projection.declText);
974
+ }
975
+ return projection;
976
+ };
812
977
  try {
813
- const load = loadProgram7(host, entryPath, externalTypes, npmStaticPackages.length > 0);
814
- let authoredHost = null;
815
- let authoredLoad = null;
978
+ const load = loadProgram7(host, entryPath, externalTypes, npmStaticPackages.length > 0, projector);
816
979
  return {
817
980
  ...load,
818
981
  services,
819
982
  projectWorld: npmStaticPackages.length === 0
820
983
  ? load.projectWorld
821
- : () => {
822
- // Check authored code against the package's published declarations.
823
- // Runtime bodies still lower from JavaScript in the original world;
824
- // inference there must not manufacture errors in valid user code.
825
- if (!authoredLoad) {
826
- authoredHost = services.createProgramHost({ cwd: dirname(entryPath) });
827
- authoredLoad = loadProgram7(authoredHost, entryPath, externalTypes);
828
- }
829
- return authoredLoad.projectWorld();
830
- },
984
+ : () =>
985
+ // Check authored code against the package's published declarations.
986
+ // Runtime bodies still lower from JavaScript in the original world;
987
+ // inference there must not manufacture errors in valid user code.
988
+ authored().projectWorld(),
831
989
  dispose: () => {
832
990
  try {
833
991
  authoredLoad?.disposeAll();
@@ -845,10 +1003,39 @@ export function loadProgram(entryPath, services, opts) {
845
1003
  };
846
1004
  }
847
1005
  catch (error) {
1006
+ authoredLoad?.disposeAll();
1007
+ authoredHost?.close();
848
1008
  host.close();
849
1009
  throw error;
850
1010
  }
851
1011
  }
1012
+ /** User TypeScript files (outside node_modules) that import one of the
1013
+ * packages whose declarations the boundary projects from. */
1014
+ function declBoundaryUserFiles(program, packages) {
1015
+ const out = [];
1016
+ for (const sf of program.getSourceFiles()) {
1017
+ const name = sf.fileName.split("\\").join("/");
1018
+ if (sf.isDeclarationFile || name.includes("/node_modules/") || !/\.[mc]?tsx?$/.test(name))
1019
+ continue;
1020
+ if (name.endsWith(".tsx"))
1021
+ continue; // JSX files: not projected yet
1022
+ const text = sf.text;
1023
+ if (packages.some((pkg) => text.includes(`"${pkg}"`) ||
1024
+ text.includes(`'${pkg}'`) ||
1025
+ text.includes(`"${pkg}/`) ||
1026
+ text.includes(`'${pkg}/`)))
1027
+ out.push(sf.fileName);
1028
+ }
1029
+ return out;
1030
+ }
1031
+ /** SC6102 — a projected file the lowering world disagreed with. */
1032
+ function declBoundaryDroppedDiag(file) {
1033
+ return {
1034
+ code: "SC6102",
1035
+ message: "values from npm packages stay checked-dynamic in this file: the types projected from the packages' declarations do not type-check against their JavaScript",
1036
+ loc: { file, start: 0, end: 0 },
1037
+ };
1038
+ }
852
1039
  /** tsc diagnostics (syntax + types), the supported-import fence, and the
853
1040
  * module evaluation order: fills load.moduleOrder (the SourceFiles
854
1041
  * themselves — the lowering consumes them directly) and returns the
@@ -955,8 +1142,17 @@ function requiresOf7(stmt) {
955
1142
  }
956
1143
  return out;
957
1144
  }
1145
+ /** `true`, or `!0`, its minified spelling. */
1146
+ function isTrueLiteral(expr) {
1147
+ return (expr.kind === ts.SyntaxKind.TrueKeyword ||
1148
+ (ts.isPrefixUnaryExpression(expr) &&
1149
+ expr.operator === ts.SyntaxKind.ExclamationToken &&
1150
+ ts.isNumericLiteral(expr.operand) &&
1151
+ expr.operand.text === "0"));
1152
+ }
958
1153
  /** The exact `Object.defineProperty(exports|module.exports, "__esModule",
959
- * { value: true })` interop stamp (shared by preflight and the no-op lowering). */
1154
+ * { value: true })` interop stamp (shared by preflight and the no-op lowering);
1155
+ * `{ value: !0 }` is the same stamp. */
960
1156
  export function isEsModuleStamp(expr) {
961
1157
  if (!ts.isCallExpression(expr) || expr.questionDotToken !== undefined)
962
1158
  return false;
@@ -987,7 +1183,7 @@ export function isEsModuleStamp(expr) {
987
1183
  return (ts.isPropertyAssignment(p) &&
988
1184
  ts.isIdentifier(p.name) &&
989
1185
  p.name.text === "value" &&
990
- p.initializer.kind === ts.SyntaxKind.TrueKeyword);
1186
+ isTrueLiteral(p.initializer));
991
1187
  }
992
1188
  /** Plain CommonJS prologue writes only publish values; in particular,
993
1189
  * publishing a hoisted function does not invoke its body. Later runnable
@@ -3294,6 +3490,7 @@ function computeCycleEarlyBindings7(program, entry, order, singleRoot, exact) {
3294
3490
  start: ts.tokenStartOfNode(stmt),
3295
3491
  end: stmt.end,
3296
3492
  reference: null,
3493
+ deferredReference: null,
3297
3494
  folded: null,
3298
3495
  localNames: new Map(),
3299
3496
  });
@@ -3370,10 +3567,13 @@ function computeCycleEarlyBindings7(program, entry, order, singleRoot, exact) {
3370
3567
  ts.tokenStartOfNode(ref) >= c.start &&
3371
3568
  ref.end <= c.end)
3372
3569
  continue;
3570
+ if (inDeferredPosition7(ref)) {
3571
+ if (c.exposed && c.deferredReference === null)
3572
+ c.deferredReference = ref;
3573
+ continue;
3574
+ }
3373
3575
  let early;
3374
- if (inDeferredPosition7(ref))
3375
- early = c.exposed;
3376
- else if (sf === c.module)
3576
+ if (sf === c.module)
3377
3577
  early = ts.tokenStartOfNode(ref) < c.start;
3378
3578
  else if (!memberSet.has(sf) || !rankOf.has(sf))
3379
3579
  early = false;
@@ -3383,7 +3583,15 @@ function computeCycleEarlyBindings7(program, entry, order, singleRoot, exact) {
3383
3583
  c.reference = ref;
3384
3584
  }
3385
3585
  }
3586
+ // With a static evaluation order, a deferred reference only runs early
3587
+ // when the code that runs before the declaration completes can reach
3588
+ // the function holding it.
3589
+ const reached = known && [...candidates.values()].some((c) => c.reference === null && c.deferredReference)
3590
+ ? cycleReachedDeferredReferences7(program, evaluation, candidates)
3591
+ : null;
3386
3592
  for (const c of candidates.values()) {
3593
+ if (c.reference === null && c.deferredReference !== null)
3594
+ c.reference = reached === null ? c.deferredReference : (reached.get(c.symbol) ?? null);
3387
3595
  if (c.reference === null)
3388
3596
  continue;
3389
3597
  const settled = new Set(order.filter((sf) => !rankOf.has(sf)));
@@ -3404,6 +3612,292 @@ function computeCycleEarlyBindings7(program, entry, order, singleRoot, exact) {
3404
3612
  }
3405
3613
  return out;
3406
3614
  }
3615
+ /** Collects into `units` the callables an initializer expression stores
3616
+ * (see moduleEarlyBindingsOf7), recording in `immediate` the parts of a
3617
+ * stored node that run where it is evaluated. */
3618
+ function storedCallables7(checker, e, units, immediate) {
3619
+ while (ts.isParenthesizedExpression(e) ||
3620
+ ts.isAsExpression(e) ||
3621
+ ts.isSatisfiesExpression(e) ||
3622
+ ts.isNonNullExpression(e))
3623
+ e = e.expression;
3624
+ if (ts.isArrowFunction(e) || ts.isFunctionExpression(e)) {
3625
+ units.push(e);
3626
+ }
3627
+ else if (ts.isClassExpression(e)) {
3628
+ units.push(e);
3629
+ immediate.set(e, classSyncParts7(e));
3630
+ }
3631
+ else if (ts.isObjectLiteralExpression(e)) {
3632
+ for (const p of e.properties.nodes) {
3633
+ if (ts.isMethodDeclaration(p) ||
3634
+ ts.isGetAccessorDeclaration(p) ||
3635
+ ts.isSetAccessorDeclaration(p)) {
3636
+ // A computed key evaluates where the literal does; a plain
3637
+ // member-chain key (`[Equal.symbol]`) runs no user code.
3638
+ if (!ts.isComputedPropertyName(p.name))
3639
+ units.push(p);
3640
+ else if (memberChainKey7(p.name.expression)) {
3641
+ units.push(p);
3642
+ immediate.set(p, [p.name]);
3643
+ }
3644
+ }
3645
+ else if (ts.isPropertyAssignment(p))
3646
+ storedCallables7(checker, p.initializer, units, immediate);
3647
+ }
3648
+ }
3649
+ else if (ts.isArrayLiteralExpression(e)) {
3650
+ for (const el of e.elements.nodes)
3651
+ if (!ts.isSpreadElement(el))
3652
+ storedCallables7(checker, el, units, immediate);
3653
+ }
3654
+ else if (ts.isCallExpression(e)) {
3655
+ // `const f = wrap(callback)` where wrap only returns closures over
3656
+ // the callback: it runs when the stored result is called.
3657
+ e.arguments.nodes.forEach((arg, index) => {
3658
+ let fn = arg;
3659
+ while (ts.isParenthesizedExpression(fn))
3660
+ fn = fn.expression;
3661
+ if ((ts.isArrowFunction(fn) || ts.isFunctionExpression(fn)) &&
3662
+ returnsOnlyClosuresOver7(checker, e.expression, index))
3663
+ units.push(fn);
3664
+ });
3665
+ }
3666
+ }
3667
+ /** For one import cycle with a static evaluation order: the first deferred
3668
+ * reference to each candidate that code running before the candidate's
3669
+ * declaration completes can reach, or null when the walk cannot be precise
3670
+ * (top-level await, a default-exported function or class declaration).
3671
+ *
3672
+ * The cycle's top-level code runs in evaluation order. A stored callable
3673
+ * (a function or class declaration, or a function, class or object-literal
3674
+ * method stored by a variable initializer) becomes reachable once
3675
+ * reachable code names its binding, through an import alias or a
3676
+ * namespace member too; every other function-like in reachable code counts
3677
+ * as reachable, since it may be handed to a callee. A namespace import of
3678
+ * a cycle member used other than for a member read makes every stored
3679
+ * callable reachable. moduleEarlyBindingsOf7 is the single-module form. */
3680
+ function cycleReachedDeferredReferences7(program, evaluation, candidates) {
3681
+ const checker = program.getTypeChecker();
3682
+ const members = new Set(evaluation);
3683
+ for (const sf of evaluation) {
3684
+ if (hasTopLevelAwait7(sf))
3685
+ return null;
3686
+ for (const stmt of sf.statements.nodes) {
3687
+ if ((ts.isFunctionDeclaration(stmt) || ts.isClassDeclaration(stmt)) &&
3688
+ (ts.getCombinedModifierFlags(stmt) &
3689
+ ts.ModifierFlags.Default) !==
3690
+ 0)
3691
+ return null;
3692
+ }
3693
+ }
3694
+ const stored = new Set();
3695
+ const immediate = new Map();
3696
+ const storedNames = [];
3697
+ const unitsOfName = new Map();
3698
+ const store = (name, units) => {
3699
+ if (units.length === 0)
3700
+ return;
3701
+ for (const u of units)
3702
+ stored.add(u);
3703
+ storedNames.push(name);
3704
+ unitsOfName.set(name, units);
3705
+ };
3706
+ for (const sf of evaluation) {
3707
+ for (const stmt of sf.statements.nodes) {
3708
+ if ((ts.getCombinedModifierFlags(stmt) &
3709
+ ts.ModifierFlags.Ambient) !==
3710
+ 0)
3711
+ continue;
3712
+ if (ts.isFunctionDeclaration(stmt) && stmt.name !== undefined && stmt.body !== undefined) {
3713
+ store(stmt.name, [stmt]);
3714
+ }
3715
+ else if (ts.isClassDeclaration(stmt) && stmt.name !== undefined) {
3716
+ store(stmt.name, [stmt]);
3717
+ }
3718
+ else if (ts.isVariableStatement(stmt)) {
3719
+ for (const d of stmt.declarationList.declarations.nodes) {
3720
+ if (ts.isIdentifier(d.name) && d.initializer !== undefined) {
3721
+ const units = [];
3722
+ storedCallables7(checker, d.initializer, units, immediate);
3723
+ store(d.name, units);
3724
+ }
3725
+ }
3726
+ }
3727
+ }
3728
+ }
3729
+ const unitsBySymbol = new Map();
3730
+ const allUnits = [];
3731
+ for (const name of storedNames) {
3732
+ const symbol = checker.getSymbolAtLocation(name);
3733
+ if (symbol === undefined)
3734
+ continue;
3735
+ const units = unitsOfName.get(name);
3736
+ unitsBySymbol.set(symbol, [...(unitsBySymbol.get(symbol) ?? []), ...units]);
3737
+ allUnits.push(...units);
3738
+ }
3739
+ // A named class expression's inner name (`class Impl { static x =
3740
+ // Impl.m(); }`) names the class inside its own body, as the binding it
3741
+ // is stored in names it outside.
3742
+ const innerNames = [];
3743
+ for (const unit of allUnits) {
3744
+ if (!ts.isClassExpression(unit) || unit.name === undefined)
3745
+ continue;
3746
+ const symbol = checker.getSymbolAtLocation(unit.name);
3747
+ if (symbol === undefined)
3748
+ continue;
3749
+ innerNames.push(unit.name);
3750
+ unitsBySymbol.set(symbol, [...(unitsBySymbol.get(symbol) ?? []), unit]);
3751
+ }
3752
+ // The identifier texts worth resolving: declared names, and the local
3753
+ // names of imports (named, default and namespace) in cycle members.
3754
+ const names = new Set();
3755
+ for (const c of candidates.values())
3756
+ names.add(c.name.text);
3757
+ for (const name of storedNames)
3758
+ names.add(name.text);
3759
+ for (const name of innerNames)
3760
+ names.add(name.text);
3761
+ for (const sf of evaluation) {
3762
+ for (const stmt of sf.statements.nodes) {
3763
+ if (!ts.isImportDeclaration(stmt) || stmt.importClause === undefined)
3764
+ continue;
3765
+ const clause = stmt.importClause;
3766
+ if (clause.name !== undefined)
3767
+ names.add(clause.name.text);
3768
+ const bindings = clause.namedBindings;
3769
+ if (bindings === undefined)
3770
+ continue;
3771
+ if (ts.isNamedImports(bindings))
3772
+ for (const element of bindings.elements.nodes)
3773
+ names.add(element.name.text);
3774
+ else
3775
+ names.add(bindings.name.text);
3776
+ }
3777
+ }
3778
+ const idents = [];
3779
+ for (const sf of evaluation) {
3780
+ ts.walkPreorder(sf, (node) => {
3781
+ if (ts.isImportDeclaration(node))
3782
+ return "skip";
3783
+ if (ts.isIdentifier(node) && names.has(node.text))
3784
+ idents.push(node);
3785
+ return undefined;
3786
+ });
3787
+ }
3788
+ checker.prefetchSymbolNodesExact(idents);
3789
+ const symbolOf = (id) => {
3790
+ const parent = id.parent;
3791
+ let symbol = checker.getSymbolAtLocation(id);
3792
+ if (parent !== undefined && ts.isShorthandPropertyAssignment(parent) && parent.name === id) {
3793
+ symbol = checker.getShorthandAssignmentValueSymbol(parent) ?? symbol;
3794
+ }
3795
+ if (symbol !== undefined && symbol.flags & ts.SymbolFlags.Alias) {
3796
+ symbol = checker.getAliasedSymbol(symbol);
3797
+ }
3798
+ return symbol;
3799
+ };
3800
+ const isMemberNamespace = (symbol) => (symbol.flags & ts.SymbolFlags.ValueModule) !== 0 &&
3801
+ symbol.declarations.some((d) => ts.isSourceFile(d) && members.has(d));
3802
+ const declared = new Set();
3803
+ const reachedUnits = new Set();
3804
+ const out = new Map();
3805
+ const work = [];
3806
+ const reach = (unit) => {
3807
+ if (reachedUnits.has(unit))
3808
+ return;
3809
+ reachedUnits.add(unit);
3810
+ work.push(unit);
3811
+ };
3812
+ const visit = (root) => {
3813
+ ts.walkPreorder(root, (node) => {
3814
+ if (node !== root && stored.has(node)) {
3815
+ for (const part of immediate.get(node) ?? [])
3816
+ visit(part);
3817
+ return "skip";
3818
+ }
3819
+ if (ts.isImportDeclaration(node))
3820
+ return "skip";
3821
+ if (node.kind === ts.SyntaxKind.ThisKeyword) {
3822
+ // `this` in a static initializer or block names the class, so it
3823
+ // reaches the class's methods as naming the class does.
3824
+ const owner = staticThisClass7(node);
3825
+ if (owner !== undefined && stored.has(owner))
3826
+ reach(owner);
3827
+ return undefined;
3828
+ }
3829
+ if (!ts.isIdentifier(node) || !names.has(node.text))
3830
+ return undefined;
3831
+ if (inTypePosition7(node))
3832
+ return undefined;
3833
+ const parent = node.parent;
3834
+ if (parent !== undefined && ts.isExportSpecifier(parent))
3835
+ return undefined;
3836
+ if (parent !== undefined && declaredName7(parent) === node)
3837
+ return undefined;
3838
+ const symbol = symbolOf(node);
3839
+ if (symbol === undefined)
3840
+ return undefined;
3841
+ if (isMemberNamespace(symbol)) {
3842
+ // `ns.member` resolves through the member's own identifier; any
3843
+ // other use can reach every export.
3844
+ if (!(parent !== undefined &&
3845
+ ts.isPropertyAccessExpression(parent) &&
3846
+ parent.expression === node))
3847
+ for (const unit of allUnits)
3848
+ reach(unit);
3849
+ return undefined;
3850
+ }
3851
+ const c = candidates.get(symbol);
3852
+ if (c !== undefined &&
3853
+ node !== c.name &&
3854
+ !declared.has(symbol) &&
3855
+ !out.has(symbol) &&
3856
+ inDeferredPosition7(node) &&
3857
+ !(c.kind === "class" &&
3858
+ ts.getSourceFileOfNode(node) === c.module &&
3859
+ ts.tokenStartOfNode(node) >= c.start &&
3860
+ node.end <= c.end))
3861
+ out.set(symbol, node);
3862
+ for (const unit of unitsBySymbol.get(symbol) ?? [])
3863
+ reach(unit);
3864
+ return undefined;
3865
+ });
3866
+ };
3867
+ const drain = () => {
3868
+ while (work.length > 0)
3869
+ visit(work.pop());
3870
+ };
3871
+ const declare = (name) => {
3872
+ for (const id of boundNames7(name)) {
3873
+ const symbol = checker.getSymbolAtLocation(id);
3874
+ if (symbol !== undefined)
3875
+ declared.add(symbol);
3876
+ }
3877
+ };
3878
+ for (const sf of evaluation) {
3879
+ for (const stmt of sf.statements.nodes) {
3880
+ if (ts.isClassDeclaration(stmt)) {
3881
+ for (const part of classSyncParts7(stmt))
3882
+ visit(part);
3883
+ drain();
3884
+ if (stmt.name !== undefined)
3885
+ declare(stmt.name);
3886
+ }
3887
+ else if (ts.isVariableStatement(stmt)) {
3888
+ for (const d of stmt.declarationList.declarations.nodes) {
3889
+ visit(d);
3890
+ drain();
3891
+ declare(d.name);
3892
+ }
3893
+ }
3894
+ else if (!ts.isFunctionDeclaration(stmt))
3895
+ visit(stmt);
3896
+ drain();
3897
+ }
3898
+ }
3899
+ return out;
3900
+ }
3407
3901
  /** Top-level let/const and class bindings, in modules outside the
3408
3902
  * exactly-initialized cycles, that code running before their declaration
3409
3903
  * completes can read.
@@ -3455,55 +3949,7 @@ function moduleEarlyBindingsOf7(program, sf, order) {
3455
3949
  storedBy.set(name.text, list);
3456
3950
  };
3457
3951
  const checker = program.getTypeChecker();
3458
- const storedIn = (e, units) => {
3459
- while (ts.isParenthesizedExpression(e) ||
3460
- ts.isAsExpression(e) ||
3461
- ts.isSatisfiesExpression(e) ||
3462
- ts.isNonNullExpression(e))
3463
- e = e.expression;
3464
- if (ts.isArrowFunction(e) || ts.isFunctionExpression(e)) {
3465
- units.push(e);
3466
- }
3467
- else if (ts.isClassExpression(e)) {
3468
- units.push(e);
3469
- immediate.set(e, classSyncParts7(e));
3470
- }
3471
- else if (ts.isObjectLiteralExpression(e)) {
3472
- for (const p of e.properties.nodes) {
3473
- if (ts.isMethodDeclaration(p) ||
3474
- ts.isGetAccessorDeclaration(p) ||
3475
- ts.isSetAccessorDeclaration(p)) {
3476
- // A computed key evaluates where the literal does; a plain
3477
- // member-chain key (`[Equal.symbol]`) runs no user code.
3478
- if (!ts.isComputedPropertyName(p.name))
3479
- units.push(p);
3480
- else if (memberChainKey7(p.name.expression)) {
3481
- units.push(p);
3482
- immediate.set(p, [p.name]);
3483
- }
3484
- }
3485
- else if (ts.isPropertyAssignment(p))
3486
- storedIn(p.initializer, units);
3487
- }
3488
- }
3489
- else if (ts.isArrayLiteralExpression(e)) {
3490
- for (const el of e.elements.nodes)
3491
- if (!ts.isSpreadElement(el))
3492
- storedIn(el, units);
3493
- }
3494
- else if (ts.isCallExpression(e)) {
3495
- // `const f = wrap(callback)` where wrap only returns closures over
3496
- // the callback: it runs when the stored result is called.
3497
- e.arguments.nodes.forEach((arg, index) => {
3498
- let fn = arg;
3499
- while (ts.isParenthesizedExpression(fn))
3500
- fn = fn.expression;
3501
- if ((ts.isArrowFunction(fn) || ts.isFunctionExpression(fn)) &&
3502
- returnsOnlyClosuresOver7(checker, e.expression, index))
3503
- units.push(fn);
3504
- });
3505
- }
3506
- };
3952
+ const storedIn = (e, units) => storedCallables7(checker, e, units, immediate);
3507
3953
  sf.statements.nodes.forEach((stmt, index) => {
3508
3954
  if (ambient(stmt))
3509
3955
  return;
@@ -3785,6 +4231,41 @@ function returnsOnlyClosuresOver7(checker, callee, index) {
3785
4231
  * expressions, decorators, computed member keys, static field
3786
4232
  * initializers and static blocks. Methods and instance fields wait for a
3787
4233
  * call or a construction. */
4234
+ /** The class whose static field initializer or static block evaluates `this`
4235
+ * (through arrow functions, which keep the enclosing `this`), or undefined
4236
+ * when another function or a class's instance side binds it. */
4237
+ function staticThisClass7(node) {
4238
+ let child = node;
4239
+ for (let n = node.parent; n !== undefined; child = n, n = n.parent) {
4240
+ if (ts.isArrowFunction(n))
4241
+ continue;
4242
+ if (ts.isClassStaticBlockDeclaration(n))
4243
+ return n.parent;
4244
+ if (ts.isPropertyDeclaration(n)) {
4245
+ if (n.initializer !== child)
4246
+ return undefined;
4247
+ return (ts.getCombinedModifierFlags(n) & ts.ModifierFlags.Static) !== 0
4248
+ ? n.parent
4249
+ : undefined;
4250
+ }
4251
+ if (ts.isComputedPropertyName(n)) {
4252
+ // A computed key evaluates in the scope around the class.
4253
+ const member = n.parent;
4254
+ const cls = member?.parent;
4255
+ if (cls === undefined)
4256
+ return undefined;
4257
+ child = cls;
4258
+ n = cls;
4259
+ continue;
4260
+ }
4261
+ if (ts.isFunctionLike(n) ||
4262
+ ts.isClassDeclaration(n) ||
4263
+ ts.isClassExpression(n) ||
4264
+ ts.isSourceFile(n))
4265
+ return undefined;
4266
+ }
4267
+ return undefined;
4268
+ }
3788
4269
  function classSyncParts7(c) {
3789
4270
  const decorators = (n) => (n.modifiers?.nodes ?? []).filter((m) => m.kind === ts.SyntaxKind.Decorator);
3790
4271
  const parts = [...decorators(c), ...(c.heritageClauses?.nodes ?? [])];
@@ -4243,8 +4724,8 @@ function preflight7(load) {
4243
4724
  const sf = p.getSourceFile(d.fileName);
4244
4725
  return sf !== undefined && isCheckedJsSourceFile(sf, projectCheckJs);
4245
4726
  };
4246
- const errorsOf = (p) => {
4247
- const all = ts.getPreEmitDiagnostics(p);
4727
+ const errorsOf = (p) => keptErrors(p, ts.getPreEmitDiagnostics(p));
4728
+ const keptErrors = (p, all) => {
4248
4729
  // First pass: every comment-side 2300's (file, name) — the partners
4249
4730
  // the second pass forgives.
4250
4731
  const commentDup = new Set();
@@ -4281,10 +4762,41 @@ function preflight7(load) {
4281
4762
  // instead (the SC1100 checked-cast family). Dirty there → the project-
4282
4763
  // world errors are the ones reported: they are reproducible with the
4283
4764
  // project's own tsc, which is what "fix type errors first" asks for.
4284
- const tscErrors = errorsOf(program);
4765
+ // With JSX sources, the program over the original text answers the tsc
4766
+ // gate; its positions move into the rewritten text the program holds.
4767
+ // Errors only the rewritten text has come from the calls the JSX lowers
4768
+ // to (a factory whose signature does not accept them).
4769
+ const tscWorld = load.tscWorld;
4770
+ const tscErrors = tscWorld === undefined ? errorsOf(program) : keptErrors(tscWorld.program, tscWorld.diagnostics);
4285
4771
  if (tscErrors.length > 0) {
4286
- for (const d of errorsOf(load.projectWorld()))
4287
- diags.push(toPassthrough(d));
4772
+ const world = tscWorld === undefined || tscWorld.declWorldFallback === true
4773
+ ? load.projectWorld()
4774
+ : (tscWorld.projectWorld ?? tscWorld.program);
4775
+ for (const d of errorsOf(world)) {
4776
+ const diag = toPassthrough(d);
4777
+ const lowered = tscWorld === undefined ? undefined : load.jsxSources?.get(diag.loc.file);
4778
+ if (lowered !== undefined) {
4779
+ diag.loc = {
4780
+ ...diag.loc,
4781
+ start: lowered.rewrittenPosition(diag.loc.start, false),
4782
+ end: lowered.rewrittenPosition(diag.loc.end, true),
4783
+ };
4784
+ }
4785
+ diags.push(diag);
4786
+ }
4787
+ }
4788
+ else if (load.jsxSources !== undefined) {
4789
+ for (const file of load.jsxSources.keys()) {
4790
+ const sf = program.getSourceFile(file);
4791
+ if (sf === undefined)
4792
+ continue;
4793
+ const own = [...program.getSyntacticDiagnostics(sf), ...program.getSemanticDiagnostics(sf)];
4794
+ for (const d of keptErrors(program, own)) {
4795
+ const diag = toPassthrough(d);
4796
+ diag.message = `${diag.message} (in the call this JSX lowers to)`;
4797
+ diags.push(diag);
4798
+ }
4799
+ }
4288
4800
  }
4289
4801
  // Preflight and lowering share this CheckerFacade. Claim executable
4290
4802
  // source files after workspace discovery and the tsc gate but before