@scriptc/compiler 0.3.6 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1218) hide show
  1. package/ambient/scriptc-node-fallback.d.ts +682 -50
  2. package/ambient/scriptc.d.ts +134 -0
  3. package/dist/backend/cycle-analysis.d.ts +1 -1
  4. package/dist/backend/cycle-analysis.js +1 -0
  5. package/dist/backend/cycle-analysis.js.map +1 -1
  6. package/dist/backend/cycle-analysis.test.js +13 -1
  7. package/dist/backend/cycle-analysis.test.js.map +1 -1
  8. package/dist/backend/cycle-mutability.js +16 -5
  9. package/dist/backend/cycle-mutability.js.map +1 -1
  10. package/dist/backend/executable-features.js +13 -0
  11. package/dist/backend/executable-features.js.map +1 -1
  12. package/dist/backend/immutability.test.js +1 -1
  13. package/dist/backend/library-pack.js +6 -0
  14. package/dist/backend/library-pack.js.map +1 -1
  15. package/dist/backend/llvm/alloc.d.ts +41 -4
  16. package/dist/backend/llvm/alloc.js +138 -7
  17. package/dist/backend/llvm/alloc.js.map +1 -1
  18. package/dist/backend/llvm/alloc.test.js +30 -1
  19. package/dist/backend/llvm/alloc.test.js.map +1 -1
  20. package/dist/backend/llvm/appended-array-literals.test.js +1 -1
  21. package/dist/backend/llvm/array-search.test.js +1 -1
  22. package/dist/backend/llvm/blocks.d.ts +8 -0
  23. package/dist/backend/llvm/blocks.js +43 -1
  24. package/dist/backend/llvm/blocks.js.map +1 -1
  25. package/dist/backend/llvm/blocks.test.js +22 -1
  26. package/dist/backend/llvm/blocks.test.js.map +1 -1
  27. package/dist/backend/llvm/byte-numbers.js +15 -5
  28. package/dist/backend/llvm/byte-numbers.js.map +1 -1
  29. package/dist/backend/llvm/bytes-alias.d.ts +14 -0
  30. package/dist/backend/llvm/bytes-alias.js +20 -0
  31. package/dist/backend/llvm/bytes-alias.js.map +1 -0
  32. package/dist/backend/llvm/bytes-loop-versions.d.ts +86 -0
  33. package/dist/backend/llvm/bytes-loop-versions.js +506 -0
  34. package/dist/backend/llvm/bytes-loop-versions.js.map +1 -0
  35. package/dist/backend/llvm/bytes-loop-versions.test.d.ts +1 -0
  36. package/dist/backend/llvm/bytes-loop-versions.test.js +244 -0
  37. package/dist/backend/llvm/bytes-loop-versions.test.js.map +1 -0
  38. package/dist/backend/llvm/call-lifetimes.js +50 -1
  39. package/dist/backend/llvm/call-lifetimes.js.map +1 -1
  40. package/dist/backend/llvm/call-lifetimes.test.js +34 -0
  41. package/dist/backend/llvm/call-lifetimes.test.js.map +1 -1
  42. package/dist/backend/llvm/checked-narrows.test.js +1 -1
  43. package/dist/backend/llvm/checked-value-lifetimes.js +4 -1
  44. package/dist/backend/llvm/checked-value-lifetimes.js.map +1 -1
  45. package/dist/backend/llvm/classes.d.ts +11 -0
  46. package/dist/backend/llvm/classes.js +71 -14
  47. package/dist/backend/llvm/classes.js.map +1 -1
  48. package/dist/backend/llvm/classes.test.js +58 -8
  49. package/dist/backend/llvm/classes.test.js.map +1 -1
  50. package/dist/backend/llvm/common.js +1 -0
  51. package/dist/backend/llvm/common.js.map +1 -1
  52. package/dist/backend/llvm/constant-callbacks.d.ts +5 -1
  53. package/dist/backend/llvm/constant-callbacks.js +55 -12
  54. package/dist/backend/llvm/constant-callbacks.js.map +1 -1
  55. package/dist/backend/llvm/constant-callbacks.test.js +88 -1
  56. package/dist/backend/llvm/constant-callbacks.test.js.map +1 -1
  57. package/dist/backend/llvm/counted-loops.d.ts +4 -0
  58. package/dist/backend/llvm/counted-loops.js +37 -0
  59. package/dist/backend/llvm/counted-loops.js.map +1 -1
  60. package/dist/backend/llvm/dense-array-access.d.ts +12 -3
  61. package/dist/backend/llvm/dense-array-access.js +72 -14
  62. package/dist/backend/llvm/dense-array-access.js.map +1 -1
  63. package/dist/backend/llvm/dense-array-access.test.js +59 -3
  64. package/dist/backend/llvm/dense-array-access.test.js.map +1 -1
  65. package/dist/backend/llvm/dense-array-loops.d.ts +51 -0
  66. package/dist/backend/llvm/dense-array-loops.js +162 -0
  67. package/dist/backend/llvm/dense-array-loops.js.map +1 -0
  68. package/dist/backend/llvm/dense-array-loops.test.d.ts +1 -0
  69. package/dist/backend/llvm/dense-array-loops.test.js +128 -0
  70. package/dist/backend/llvm/dense-array-loops.test.js.map +1 -0
  71. package/dist/backend/llvm/dyn-handle-tags.test.d.ts +1 -0
  72. package/dist/backend/llvm/dyn-handle-tags.test.js +38 -0
  73. package/dist/backend/llvm/dyn-handle-tags.test.js.map +1 -0
  74. package/dist/backend/llvm/dyn.d.ts +28 -4
  75. package/dist/backend/llvm/dyn.js +293 -178
  76. package/dist/backend/llvm/dyn.js.map +1 -1
  77. package/dist/backend/llvm/emit-function.d.ts +64 -0
  78. package/dist/backend/llvm/emit-function.js +1190 -0
  79. package/dist/backend/llvm/emit-function.js.map +1 -0
  80. package/dist/backend/llvm/emit-module.d.ts +24 -0
  81. package/dist/backend/llvm/emit-module.js +1535 -0
  82. package/dist/backend/llvm/emit-module.js.map +1 -0
  83. package/dist/backend/llvm/emit-statements.d.ts +58 -0
  84. package/dist/backend/llvm/emit-statements.js +1964 -0
  85. package/dist/backend/llvm/emit-statements.js.map +1 -0
  86. package/dist/backend/llvm/emitter.d.ts +547 -283
  87. package/dist/backend/llvm/emitter.js +689 -4643
  88. package/dist/backend/llvm/emitter.js.map +1 -1
  89. package/dist/backend/llvm/emitter.test.js +57 -3
  90. package/dist/backend/llvm/emitter.test.js.map +1 -1
  91. package/dist/backend/llvm/expr-async.js +73 -46
  92. package/dist/backend/llvm/expr-async.js.map +1 -1
  93. package/dist/backend/llvm/expr-async.test.js +1 -1
  94. package/dist/backend/llvm/expr-bytes.d.ts +2 -0
  95. package/dist/backend/llvm/expr-bytes.js +76 -29
  96. package/dist/backend/llvm/expr-bytes.js.map +1 -1
  97. package/dist/backend/llvm/expr-callbacks.d.ts +6 -2
  98. package/dist/backend/llvm/expr-callbacks.js +48 -11
  99. package/dist/backend/llvm/expr-callbacks.js.map +1 -1
  100. package/dist/backend/llvm/expr-calls.d.ts +1 -1
  101. package/dist/backend/llvm/expr-calls.js +71 -53
  102. package/dist/backend/llvm/expr-calls.js.map +1 -1
  103. package/dist/backend/llvm/expr-calls.test.js +1 -1
  104. package/dist/backend/llvm/expr-containers.js +39 -15
  105. package/dist/backend/llvm/expr-containers.js.map +1 -1
  106. package/dist/backend/llvm/expr-control.js +16 -16
  107. package/dist/backend/llvm/expr-control.js.map +1 -1
  108. package/dist/backend/llvm/expr-dynamic.d.ts +3 -0
  109. package/dist/backend/llvm/expr-dynamic.js +67 -62
  110. package/dist/backend/llvm/expr-dynamic.js.map +1 -1
  111. package/dist/backend/llvm/expr-primitives.js +121 -25
  112. package/dist/backend/llvm/expr-primitives.js.map +1 -1
  113. package/dist/backend/llvm/expr-primitives.test.js +2 -2
  114. package/dist/backend/llvm/expr-records.d.ts +1 -1
  115. package/dist/backend/llvm/expr-records.js +32 -11
  116. package/dist/backend/llvm/expr-records.js.map +1 -1
  117. package/dist/backend/llvm/expr-stream-bridges.js +54 -12
  118. package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
  119. package/dist/backend/llvm/expr-stream-bridges.test.js +2 -2
  120. package/dist/backend/llvm/expr-stream-callbacks.js +22 -1
  121. package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
  122. package/dist/backend/llvm/int32-abi.test.js +2 -2
  123. package/dist/backend/llvm/integer-clones.test.js +3 -3
  124. package/dist/backend/llvm/integer-remainder.d.ts +34 -13
  125. package/dist/backend/llvm/integer-remainder.js +156 -22
  126. package/dist/backend/llvm/integer-remainder.js.map +1 -1
  127. package/dist/backend/llvm/intern-tables.test.js +1 -1
  128. package/dist/backend/llvm/jsval-encoding.d.ts +21 -0
  129. package/dist/backend/llvm/jsval-encoding.js +20 -0
  130. package/dist/backend/llvm/jsval-encoding.js.map +1 -0
  131. package/dist/backend/llvm/jsval.d.ts +12 -0
  132. package/dist/backend/llvm/jsval.js +488 -0
  133. package/dist/backend/llvm/jsval.js.map +1 -0
  134. package/dist/backend/llvm/lazy-captures.d.ts +12 -2
  135. package/dist/backend/llvm/lazy-captures.js +39 -17
  136. package/dist/backend/llvm/lazy-captures.js.map +1 -1
  137. package/dist/backend/llvm/lib-abi.js +1 -1
  138. package/dist/backend/llvm/lib-abi.js.map +1 -1
  139. package/dist/backend/llvm/lib-connect.js +1 -1
  140. package/dist/backend/llvm/lib-connect.js.map +1 -1
  141. package/dist/backend/llvm/lib-datagram.js +14 -8
  142. package/dist/backend/llvm/lib-datagram.js.map +1 -1
  143. package/dist/backend/llvm/lib-dispatch.js +189 -23
  144. package/dist/backend/llvm/lib-dispatch.js.map +1 -1
  145. package/dist/backend/llvm/lib-filesystem.js +42 -13
  146. package/dist/backend/llvm/lib-filesystem.js.map +1 -1
  147. package/dist/backend/llvm/lib-http2.js +3 -3
  148. package/dist/backend/llvm/lib-http2.js.map +1 -1
  149. package/dist/backend/llvm/lib-lookup.js +2 -2
  150. package/dist/backend/llvm/lib-lookup.js.map +1 -1
  151. package/dist/backend/llvm/lib-network.js +56 -22
  152. package/dist/backend/llvm/lib-network.js.map +1 -1
  153. package/dist/backend/llvm/lib-process.js +90 -50
  154. package/dist/backend/llvm/lib-process.js.map +1 -1
  155. package/dist/backend/llvm/lib-shared.d.ts +12 -0
  156. package/dist/backend/llvm/lib-shared.js +187 -6
  157. package/dist/backend/llvm/lib-shared.js.map +1 -1
  158. package/dist/backend/llvm/lib-stream.js +46 -16
  159. package/dist/backend/llvm/lib-stream.js.map +1 -1
  160. package/dist/backend/llvm/lib-test.js +43 -7
  161. package/dist/backend/llvm/lib-test.js.map +1 -1
  162. package/dist/backend/llvm/lib-tls.js +4 -9
  163. package/dist/backend/llvm/lib-tls.js.map +1 -1
  164. package/dist/backend/llvm/local-array-reads.js +2 -2
  165. package/dist/backend/llvm/local-array-reads.test.js +1 -1
  166. package/dist/backend/llvm/local-extents.d.ts +19 -0
  167. package/dist/backend/llvm/local-extents.js +169 -0
  168. package/dist/backend/llvm/local-extents.js.map +1 -0
  169. package/dist/backend/llvm/local-extents.test.d.ts +1 -0
  170. package/dist/backend/llvm/local-extents.test.js +92 -0
  171. package/dist/backend/llvm/local-extents.test.js.map +1 -0
  172. package/dist/backend/llvm/local-union-storage.js +7 -7
  173. package/dist/backend/llvm/local-union-storage.js.map +1 -1
  174. package/dist/backend/llvm/local-union-storage.test.js +2 -2
  175. package/dist/backend/llvm/map-entry-fusion.test.js +1 -1
  176. package/dist/backend/llvm/map-number-lookup.js +2 -2
  177. package/dist/backend/llvm/map-number-lookup.test.js +2 -2
  178. package/dist/backend/llvm/map-read-lifetimes.test.js +2 -2
  179. package/dist/backend/llvm/narrow-guards.d.ts +38 -0
  180. package/dist/backend/llvm/narrow-guards.js +151 -0
  181. package/dist/backend/llvm/narrow-guards.js.map +1 -0
  182. package/dist/backend/llvm/nullable-unions.d.ts +64 -6
  183. package/dist/backend/llvm/nullable-unions.js +103 -6
  184. package/dist/backend/llvm/nullable-unions.js.map +1 -1
  185. package/dist/backend/llvm/nullable-unions.test.d.ts +1 -0
  186. package/dist/backend/llvm/nullable-unions.test.js +65 -0
  187. package/dist/backend/llvm/nullable-unions.test.js.map +1 -0
  188. package/dist/backend/llvm/publish.d.ts +4 -0
  189. package/dist/backend/llvm/publish.js +14 -2
  190. package/dist/backend/llvm/publish.js.map +1 -1
  191. package/dist/backend/llvm/publish.test.js +1 -1
  192. package/dist/backend/llvm/receivers.d.ts +31 -0
  193. package/dist/backend/llvm/receivers.js +395 -0
  194. package/dist/backend/llvm/receivers.js.map +1 -0
  195. package/dist/backend/llvm/record-results.d.ts +12 -1
  196. package/dist/backend/llvm/record-results.js +64 -4
  197. package/dist/backend/llvm/record-results.js.map +1 -1
  198. package/dist/backend/llvm/reference-effects.js +9 -0
  199. package/dist/backend/llvm/reference-effects.js.map +1 -1
  200. package/dist/backend/llvm/reference-writes.d.ts +4 -0
  201. package/dist/backend/llvm/reference-writes.js +142 -6
  202. package/dist/backend/llvm/reference-writes.js.map +1 -1
  203. package/dist/backend/llvm/reference-writes.test.d.ts +1 -0
  204. package/dist/backend/llvm/reference-writes.test.js +88 -0
  205. package/dist/backend/llvm/reference-writes.test.js.map +1 -0
  206. package/dist/backend/llvm/regex-matchers.d.ts +8 -0
  207. package/dist/backend/llvm/regex-matchers.js +33 -0
  208. package/dist/backend/llvm/regex-matchers.js.map +1 -1
  209. package/dist/backend/llvm/regex-matchers.test.js +23 -1
  210. package/dist/backend/llvm/regex-matchers.test.js.map +1 -1
  211. package/dist/backend/llvm/regions.d.ts +1 -1
  212. package/dist/backend/llvm/regions.js +9 -6
  213. package/dist/backend/llvm/regions.js.map +1 -1
  214. package/dist/backend/llvm/regions.test.js +1 -1
  215. package/dist/backend/llvm/shapes.d.ts +66 -43
  216. package/dist/backend/llvm/shapes.js +280 -21
  217. package/dist/backend/llvm/shapes.js.map +1 -1
  218. package/dist/backend/llvm/shapes.test.js +37 -3
  219. package/dist/backend/llvm/shapes.test.js.map +1 -1
  220. package/dist/backend/llvm/split-loops.js +2 -2
  221. package/dist/backend/llvm/split-loops.js.map +1 -1
  222. package/dist/backend/llvm/stack-objects.d.ts +26 -6
  223. package/dist/backend/llvm/stack-objects.js +133 -10
  224. package/dist/backend/llvm/stack-objects.js.map +1 -1
  225. package/dist/backend/llvm/stack-objects.test.js +55 -1
  226. package/dist/backend/llvm/stack-objects.test.js.map +1 -1
  227. package/dist/backend/llvm/stack-unions.test.js +1 -1
  228. package/dist/backend/llvm/string-construction.test.js +1 -1
  229. package/dist/backend/llvm/string-lifetimes.test.js +15 -14
  230. package/dist/backend/llvm/string-lifetimes.test.js.map +1 -1
  231. package/dist/backend/llvm/string-slices.d.ts +25 -0
  232. package/dist/backend/llvm/string-slices.js +207 -1
  233. package/dist/backend/llvm/string-slices.js.map +1 -1
  234. package/dist/backend/llvm/string-slices.test.js +139 -2
  235. package/dist/backend/llvm/string-slices.test.js.map +1 -1
  236. package/dist/backend/llvm/switch-dispatch.test.js +2 -2
  237. package/dist/backend/llvm/thread-slots.d.ts +5 -0
  238. package/dist/backend/llvm/thread-slots.js +142 -0
  239. package/dist/backend/llvm/thread-slots.js.map +1 -0
  240. package/dist/backend/llvm/thread-slots.test.d.ts +1 -0
  241. package/dist/backend/llvm/thread-slots.test.js +110 -0
  242. package/dist/backend/llvm/thread-slots.test.js.map +1 -0
  243. package/dist/backend/llvm/union-repr.d.ts +7 -7
  244. package/dist/backend/llvm/union-repr.js +18 -2
  245. package/dist/backend/llvm/union-repr.js.map +1 -1
  246. package/dist/backend/llvm/union-retype.test.js +17 -3
  247. package/dist/backend/llvm/union-retype.test.js.map +1 -1
  248. package/dist/backend/llvm/walkers.d.ts +2 -2
  249. package/dist/backend/llvm/walkers.js +51 -26
  250. package/dist/backend/llvm/walkers.js.map +1 -1
  251. package/dist/backend/llvm/wasm-modules.d.ts +16 -0
  252. package/dist/backend/llvm/wasm-modules.js +66 -0
  253. package/dist/backend/llvm/wasm-modules.js.map +1 -0
  254. package/dist/backend/llvm/wrapping-sums.d.ts +7 -0
  255. package/dist/backend/llvm/wrapping-sums.js +11 -3
  256. package/dist/backend/llvm/wrapping-sums.js.map +1 -1
  257. package/dist/backend/mangle.d.ts +7 -0
  258. package/dist/backend/mangle.js +11 -0
  259. package/dist/backend/mangle.js.map +1 -1
  260. package/dist/backend/may-throw.d.ts +3 -0
  261. package/dist/backend/may-throw.js +4 -2
  262. package/dist/backend/may-throw.js.map +1 -1
  263. package/dist/backend/may-throw.test.js +1 -1
  264. package/dist/backend/native/contracts.d.ts +37 -0
  265. package/dist/backend/native/executable.js +192 -137
  266. package/dist/backend/native/executable.js.map +1 -1
  267. package/dist/backend/native/library.js +1 -0
  268. package/dist/backend/native/library.js.map +1 -1
  269. package/dist/backend/native/runtime-inputs.d.ts +1 -1
  270. package/dist/backend/native/runtime-inputs.js +1 -0
  271. package/dist/backend/native/runtime-inputs.js.map +1 -1
  272. package/dist/backend/native-link-info-core.d.ts +30 -0
  273. package/dist/backend/native-link-info-core.js.map +1 -1
  274. package/dist/backend/publication.test.js +1 -1
  275. package/dist/backend/runtime-pack-core.d.ts +9 -1
  276. package/dist/backend/runtime-pack-core.js +10 -1
  277. package/dist/backend/runtime-pack-core.js.map +1 -1
  278. package/dist/backend/runtime-pack-native.js +1 -1
  279. package/dist/backend/runtime-pack-native.js.map +1 -1
  280. package/dist/backend/runtime-pack-native.test.d.ts +1 -0
  281. package/dist/backend/runtime-pack-native.test.js +31 -0
  282. package/dist/backend/runtime-pack-native.test.js.map +1 -0
  283. package/dist/backend/runtime-pack-targets.test.js +5 -0
  284. package/dist/backend/runtime-pack-targets.test.js.map +1 -1
  285. package/dist/backend/runtime-pack.test.js +5 -0
  286. package/dist/backend/runtime-pack.test.js.map +1 -1
  287. package/dist/backend/stack-observations.d.ts +22 -0
  288. package/dist/backend/stack-observations.js +382 -0
  289. package/dist/backend/stack-observations.js.map +1 -0
  290. package/dist/backend/stack-observations.test.d.ts +1 -0
  291. package/dist/backend/stack-observations.test.js +233 -0
  292. package/dist/backend/stack-observations.test.js.map +1 -0
  293. package/dist/backend/target-diagnostics.js +8 -0
  294. package/dist/backend/target-diagnostics.js.map +1 -1
  295. package/dist/backend/target-diagnostics.test.js +1 -1
  296. package/dist/backend/warm-cache.js +5 -0
  297. package/dist/backend/warm-cache.js.map +1 -1
  298. package/dist/backend/young-nursery.d.ts +7 -0
  299. package/dist/backend/young-nursery.js +10 -0
  300. package/dist/backend/young-nursery.js.map +1 -0
  301. package/dist/cli/command.js +44 -4
  302. package/dist/cli/command.js.map +1 -1
  303. package/dist/cli/usage.d.ts +11 -1
  304. package/dist/cli/usage.js +20 -1
  305. package/dist/cli/usage.js.map +1 -1
  306. package/dist/compat/fetch-profile.js +10 -1
  307. package/dist/compat/fetch-profile.js.map +1 -1
  308. package/dist/compile-types.d.ts +13 -0
  309. package/dist/contracts/check.js +24 -6
  310. package/dist/contracts/check.js.map +1 -1
  311. package/dist/contracts/int32-elements.d.ts +115 -0
  312. package/dist/contracts/int32-elements.js +1179 -0
  313. package/dist/contracts/int32-elements.js.map +1 -0
  314. package/dist/coverage/report.d.ts +16 -0
  315. package/dist/coverage/report.js +182 -1
  316. package/dist/coverage/report.js.map +1 -1
  317. package/dist/coverage/surface-manifest.js +16 -3
  318. package/dist/coverage/surface-manifest.js.map +1 -1
  319. package/dist/coverage/verdict-cache.d.ts +2 -0
  320. package/dist/coverage/verdict-cache.js +12 -0
  321. package/dist/coverage/verdict-cache.js.map +1 -1
  322. package/dist/coverage/verdict-cache.test.js +2 -1
  323. package/dist/coverage/verdict-cache.test.js.map +1 -1
  324. package/dist/diagnostics/diagnostic.d.ts +10 -6
  325. package/dist/diagnostics/diagnostic.js +29 -21
  326. package/dist/diagnostics/diagnostic.js.map +1 -1
  327. package/dist/diagnostics/envelope.d.ts +39 -2
  328. package/dist/diagnostics/envelope.js.map +1 -1
  329. package/dist/diagnostics/render.d.ts +7 -0
  330. package/dist/diagnostics/render.js +50 -13
  331. package/dist/diagnostics/render.js.map +1 -1
  332. package/dist/diagnostics/render.test.d.ts +1 -0
  333. package/dist/diagnostics/render.test.js +49 -0
  334. package/dist/diagnostics/render.test.js.map +1 -0
  335. package/dist/executable/executable-cache.d.ts +17 -0
  336. package/dist/executable/executable-cache.js +13 -1
  337. package/dist/executable/executable-cache.js.map +1 -1
  338. package/dist/executable/executable-cache.test.js +7 -1
  339. package/dist/executable/executable-cache.test.js.map +1 -1
  340. package/dist/executable/prepare.js +2 -1
  341. package/dist/executable/prepare.js.map +1 -1
  342. package/dist/frontend/analysis.js +6 -1
  343. package/dist/frontend/analysis.js.map +1 -1
  344. package/dist/frontend/builtin-modules.d.ts +16 -2
  345. package/dist/frontend/builtin-modules.js +40 -7
  346. package/dist/frontend/builtin-modules.js.map +1 -1
  347. package/dist/frontend/cjs-syntax.js +52 -51
  348. package/dist/frontend/cjs-syntax.js.map +1 -1
  349. package/dist/frontend/contract-types.d.ts +3 -0
  350. package/dist/frontend/contract-types.js +36 -7
  351. package/dist/frontend/contract-types.js.map +1 -1
  352. package/dist/frontend/experimental-import.d.ts +5 -1
  353. package/dist/frontend/experimental-import.js +26 -7
  354. package/dist/frontend/experimental-import.js.map +1 -1
  355. package/dist/frontend/fork-target.js +20 -22
  356. package/dist/frontend/fork-target.js.map +1 -1
  357. package/dist/frontend/fork-target.test.js +2 -1
  358. package/dist/frontend/fork-target.test.js.map +1 -1
  359. package/dist/frontend/function-completion.js +6 -6
  360. package/dist/frontend/function-completion.js.map +1 -1
  361. package/dist/frontend/helper-tokens.js +15 -3
  362. package/dist/frontend/helper-tokens.js.map +1 -1
  363. package/dist/frontend/helper-tokens.test.js +7 -1
  364. package/dist/frontend/helper-tokens.test.js.map +1 -1
  365. package/dist/frontend/inferred-js-diagnostics.js +14 -17
  366. package/dist/frontend/inferred-js-diagnostics.js.map +1 -1
  367. package/dist/frontend/input-tracker.d.ts +3 -0
  368. package/dist/frontend/input-tracker.js +32 -3
  369. package/dist/frontend/input-tracker.js.map +1 -1
  370. package/dist/frontend/lib-contract.js +36 -32
  371. package/dist/frontend/lib-contract.js.map +1 -1
  372. package/dist/frontend/lib-exports.js +3 -3
  373. package/dist/frontend/lib-exports.js.map +1 -1
  374. package/dist/frontend/lowering/array-values.d.ts +8 -3
  375. package/dist/frontend/lowering/array-values.js +60 -11
  376. package/dist/frontend/lowering/array-values.js.map +1 -1
  377. package/dist/frontend/lowering/assert-instances.js +4 -4
  378. package/dist/frontend/lowering/assert-instances.js.map +1 -1
  379. package/dist/frontend/lowering/assertion-identity.d.ts +12 -0
  380. package/dist/frontend/lowering/assertion-identity.js +70 -0
  381. package/dist/frontend/lowering/assertion-identity.js.map +1 -0
  382. package/dist/frontend/lowering/assertion-members.d.ts +28 -0
  383. package/dist/frontend/lowering/assertion-members.js +185 -0
  384. package/dist/frontend/lowering/assertion-members.js.map +1 -0
  385. package/dist/frontend/lowering/binding-analysis.js +27 -20
  386. package/dist/frontend/lowering/binding-analysis.js.map +1 -1
  387. package/dist/frontend/lowering/builtin-calls.js +63 -5
  388. package/dist/frontend/lowering/builtin-calls.js.map +1 -1
  389. package/dist/frontend/lowering/builtin-function-fences.d.ts +14 -0
  390. package/dist/frontend/lowering/builtin-function-fences.js +42 -0
  391. package/dist/frontend/lowering/builtin-function-fences.js.map +1 -0
  392. package/dist/frontend/lowering/builtins/arguments.js +1 -1
  393. package/dist/frontend/lowering/builtins/arguments.js.map +1 -1
  394. package/dist/frontend/lowering/builtins/async-context.js +53 -52
  395. package/dist/frontend/lowering/builtins/async-context.js.map +1 -1
  396. package/dist/frontend/lowering/builtins/atomics.js +6 -6
  397. package/dist/frontend/lowering/builtins/atomics.js.map +1 -1
  398. package/dist/frontend/lowering/builtins/blob.js +8 -6
  399. package/dist/frontend/lowering/builtins/blob.js.map +1 -1
  400. package/dist/frontend/lowering/builtins/builtin-class-dyn.d.ts +23 -0
  401. package/dist/frontend/lowering/builtins/builtin-class-dyn.js +156 -0
  402. package/dist/frontend/lowering/builtins/builtin-class-dyn.js.map +1 -0
  403. package/dist/frontend/lowering/builtins/callable-aliases.js +16 -5
  404. package/dist/frontend/lowering/builtins/callable-aliases.js.map +1 -1
  405. package/dist/frontend/lowering/builtins/child-process-async.js +7 -7
  406. package/dist/frontend/lowering/builtins/child-process-async.js.map +1 -1
  407. package/dist/frontend/lowering/builtins/child-process-methods.d.ts +6 -4
  408. package/dist/frontend/lowering/builtins/child-process-methods.js +310 -57
  409. package/dist/frontend/lowering/builtins/child-process-methods.js.map +1 -1
  410. package/dist/frontend/lowering/builtins/child-process-sync.js +16 -10
  411. package/dist/frontend/lowering/builtins/child-process-sync.js.map +1 -1
  412. package/dist/frontend/lowering/builtins/child-process.d.ts +6 -4
  413. package/dist/frontend/lowering/builtins/child-process.js +85 -61
  414. package/dist/frontend/lowering/builtins/child-process.js.map +1 -1
  415. package/dist/frontend/lowering/builtins/class-values.d.ts +60 -0
  416. package/dist/frontend/lowering/builtins/class-values.js +226 -0
  417. package/dist/frontend/lowering/builtins/class-values.js.map +1 -0
  418. package/dist/frontend/lowering/builtins/compression.d.ts +9 -0
  419. package/dist/frontend/lowering/builtins/compression.js +107 -44
  420. package/dist/frontend/lowering/builtins/compression.js.map +1 -1
  421. package/dist/frontend/lowering/builtins/constants.d.ts +9 -1
  422. package/dist/frontend/lowering/builtins/constants.js +28 -7
  423. package/dist/frontend/lowering/builtins/constants.js.map +1 -1
  424. package/dist/frontend/lowering/builtins/crypto.d.ts +19 -0
  425. package/dist/frontend/lowering/builtins/crypto.js +211 -37
  426. package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
  427. package/dist/frontend/lowering/builtins/dates.d.ts +7 -1
  428. package/dist/frontend/lowering/builtins/dates.js +92 -16
  429. package/dist/frontend/lowering/builtins/dates.js.map +1 -1
  430. package/dist/frontend/lowering/builtins/disposable-stack.d.ts +18 -0
  431. package/dist/frontend/lowering/builtins/disposable-stack.js +137 -0
  432. package/dist/frontend/lowering/builtins/disposable-stack.js.map +1 -0
  433. package/dist/frontend/lowering/builtins/environment.js +3 -3
  434. package/dist/frontend/lowering/builtins/environment.js.map +1 -1
  435. package/dist/frontend/lowering/builtins/errors.d.ts +14 -10
  436. package/dist/frontend/lowering/builtins/errors.js +169 -3
  437. package/dist/frontend/lowering/builtins/errors.js.map +1 -1
  438. package/dist/frontend/lowering/builtins/filesystem-calls.js +128 -116
  439. package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
  440. package/dist/frontend/lowering/builtins/filesystem.js +77 -77
  441. package/dist/frontend/lowering/builtins/filesystem.js.map +1 -1
  442. package/dist/frontend/lowering/builtins/fs-glob.js +3 -3
  443. package/dist/frontend/lowering/builtins/fs-glob.js.map +1 -1
  444. package/dist/frontend/lowering/builtins/fs-streams.js +10 -11
  445. package/dist/frontend/lowering/builtins/fs-streams.js.map +1 -1
  446. package/dist/frontend/lowering/builtins/ipc.js +45 -8
  447. package/dist/frontend/lowering/builtins/ipc.js.map +1 -1
  448. package/dist/frontend/lowering/builtins/json.js +232 -24
  449. package/dist/frontend/lowering/builtins/json.js.map +1 -1
  450. package/dist/frontend/lowering/builtins/key-object.js +4 -4
  451. package/dist/frontend/lowering/builtins/key-object.js.map +1 -1
  452. package/dist/frontend/lowering/builtins/module-bindings.d.ts +8 -0
  453. package/dist/frontend/lowering/builtins/module-bindings.js +71 -22
  454. package/dist/frontend/lowering/builtins/module-bindings.js.map +1 -1
  455. package/dist/frontend/lowering/builtins/module-calls.js +55 -44
  456. package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
  457. package/dist/frontend/lowering/builtins/module-resolution.d.ts +4 -3
  458. package/dist/frontend/lowering/builtins/module-resolution.js +24 -23
  459. package/dist/frontend/lowering/builtins/module-resolution.js.map +1 -1
  460. package/dist/frontend/lowering/builtins/navigator.d.ts +13 -0
  461. package/dist/frontend/lowering/builtins/navigator.js +40 -0
  462. package/dist/frontend/lowering/builtins/navigator.js.map +1 -0
  463. package/dist/frontend/lowering/builtins/net-address.d.ts +19 -0
  464. package/dist/frontend/lowering/builtins/net-address.js +156 -0
  465. package/dist/frontend/lowering/builtins/net-address.js.map +1 -0
  466. package/dist/frontend/lowering/builtins/numbers.js +25 -9
  467. package/dist/frontend/lowering/builtins/numbers.js.map +1 -1
  468. package/dist/frontend/lowering/builtins/operating-system.d.ts +4 -0
  469. package/dist/frontend/lowering/builtins/operating-system.js +25 -12
  470. package/dist/frontend/lowering/builtins/operating-system.js.map +1 -1
  471. package/dist/frontend/lowering/builtins/performance.d.ts +12 -0
  472. package/dist/frontend/lowering/builtins/performance.js +259 -8
  473. package/dist/frontend/lowering/builtins/performance.js.map +1 -1
  474. package/dist/frontend/lowering/builtins/process.d.ts +32 -1
  475. package/dist/frontend/lowering/builtins/process.js +461 -99
  476. package/dist/frontend/lowering/builtins/process.js.map +1 -1
  477. package/dist/frontend/lowering/builtins/promises.d.ts +5 -1
  478. package/dist/frontend/lowering/builtins/promises.js +326 -43
  479. package/dist/frontend/lowering/builtins/promises.js.map +1 -1
  480. package/dist/frontend/lowering/builtins/promisify-callback.d.ts +37 -0
  481. package/dist/frontend/lowering/builtins/promisify-callback.js +320 -0
  482. package/dist/frontend/lowering/builtins/promisify-callback.js.map +1 -0
  483. package/dist/frontend/lowering/builtins/properties.js +37 -1
  484. package/dist/frontend/lowering/builtins/properties.js.map +1 -1
  485. package/dist/frontend/lowering/builtins/querystring.js +14 -14
  486. package/dist/frontend/lowering/builtins/querystring.js.map +1 -1
  487. package/dist/frontend/lowering/builtins/readline.d.ts +12 -2
  488. package/dist/frontend/lowering/builtins/readline.js +136 -39
  489. package/dist/frontend/lowering/builtins/readline.js.map +1 -1
  490. package/dist/frontend/lowering/builtins/receiver-types.js +3 -5
  491. package/dist/frontend/lowering/builtins/receiver-types.js.map +1 -1
  492. package/dist/frontend/lowering/builtins/reflection.js +16 -14
  493. package/dist/frontend/lowering/builtins/reflection.js.map +1 -1
  494. package/dist/frontend/lowering/builtins/runtime-constructor.d.ts +26 -0
  495. package/dist/frontend/lowering/builtins/runtime-constructor.js +165 -0
  496. package/dist/frontend/lowering/builtins/runtime-constructor.js.map +1 -0
  497. package/dist/frontend/lowering/builtins/strings.js +101 -12
  498. package/dist/frontend/lowering/builtins/strings.js.map +1 -1
  499. package/dist/frontend/lowering/builtins/text-codecs.js +41 -38
  500. package/dist/frontend/lowering/builtins/text-codecs.js.map +1 -1
  501. package/dist/frontend/lowering/builtins/timers.js +75 -30
  502. package/dist/frontend/lowering/builtins/timers.js.map +1 -1
  503. package/dist/frontend/lowering/builtins/url.d.ts +3 -0
  504. package/dist/frontend/lowering/builtins/url.js +120 -17
  505. package/dist/frontend/lowering/builtins/url.js.map +1 -1
  506. package/dist/frontend/lowering/builtins/util-types.js +20 -4
  507. package/dist/frontend/lowering/builtins/util-types.js.map +1 -1
  508. package/dist/frontend/lowering/builtins/v8.d.ts +11 -0
  509. package/dist/frontend/lowering/builtins/v8.js +105 -0
  510. package/dist/frontend/lowering/builtins/v8.js.map +1 -0
  511. package/dist/frontend/lowering/builtins/webassembly.d.ts +33 -0
  512. package/dist/frontend/lowering/builtins/webassembly.js +388 -0
  513. package/dist/frontend/lowering/builtins/webassembly.js.map +1 -0
  514. package/dist/frontend/lowering/builtins/webcrypto.d.ts +20 -0
  515. package/dist/frontend/lowering/builtins/webcrypto.js +112 -0
  516. package/dist/frontend/lowering/builtins/webcrypto.js.map +1 -0
  517. package/dist/frontend/lowering/builtins/workers.d.ts +12 -0
  518. package/dist/frontend/lowering/builtins/workers.js +193 -8
  519. package/dist/frontend/lowering/builtins/workers.js.map +1 -1
  520. package/dist/frontend/lowering/call-arguments.js +69 -14
  521. package/dist/frontend/lowering/call-arguments.js.map +1 -1
  522. package/dist/frontend/lowering/call-signatures.d.ts +19 -1
  523. package/dist/frontend/lowering/call-signatures.js +254 -47
  524. package/dist/frontend/lowering/call-signatures.js.map +1 -1
  525. package/dist/frontend/lowering/checked-promise-all.d.ts +3 -0
  526. package/dist/frontend/lowering/checked-promise-all.js +1 -1
  527. package/dist/frontend/lowering/checked-promise-all.js.map +1 -1
  528. package/dist/frontend/lowering/cjs-exports-object.d.ts +53 -0
  529. package/dist/frontend/lowering/cjs-exports-object.js +528 -0
  530. package/dist/frontend/lowering/cjs-exports-object.js.map +1 -0
  531. package/dist/frontend/lowering/cjs-inline-require.d.ts +86 -0
  532. package/dist/frontend/lowering/cjs-inline-require.js +314 -0
  533. package/dist/frontend/lowering/cjs-inline-require.js.map +1 -0
  534. package/dist/frontend/lowering/cjs-tsc-interop.d.ts +28 -0
  535. package/dist/frontend/lowering/cjs-tsc-interop.js +208 -0
  536. package/dist/frontend/lowering/cjs-tsc-interop.js.map +1 -0
  537. package/dist/frontend/lowering/class-attributes.d.ts +19 -0
  538. package/dist/frontend/lowering/class-attributes.js +378 -0
  539. package/dist/frontend/lowering/class-attributes.js.map +1 -0
  540. package/dist/frontend/lowering/class-callbacks.d.ts +3 -1
  541. package/dist/frontend/lowering/class-callbacks.js +21 -10
  542. package/dist/frontend/lowering/class-callbacks.js.map +1 -1
  543. package/dist/frontend/lowering/class-construction.js +49 -4
  544. package/dist/frontend/lowering/class-construction.js.map +1 -1
  545. package/dist/frontend/lowering/class-descriptors.d.ts +2 -0
  546. package/dist/frontend/lowering/class-descriptors.js +8 -8
  547. package/dist/frontend/lowering/class-descriptors.js.map +1 -1
  548. package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +64 -0
  549. package/dist/frontend/lowering/class-dynamic-dispatch.js +1115 -89
  550. package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
  551. package/dist/frontend/lowering/class-instance-constructor.js +1 -1
  552. package/dist/frontend/lowering/class-instance-constructor.js.map +1 -1
  553. package/dist/frontend/lowering/class-iterables.d.ts +11 -0
  554. package/dist/frontend/lowering/class-iterables.js +31 -0
  555. package/dist/frontend/lowering/class-iterables.js.map +1 -0
  556. package/dist/frontend/lowering/class-method-mutations.js +73 -35
  557. package/dist/frontend/lowering/class-method-mutations.js.map +1 -1
  558. package/dist/frontend/lowering/class-method-values.js +56 -10
  559. package/dist/frontend/lowering/class-method-values.js.map +1 -1
  560. package/dist/frontend/lowering/class-protocol-dispatch.js +24 -22
  561. package/dist/frontend/lowering/class-protocol-dispatch.js.map +1 -1
  562. package/dist/frontend/lowering/class-protocols.js +25 -44
  563. package/dist/frontend/lowering/class-protocols.js.map +1 -1
  564. package/dist/frontend/lowering/class-prototypes.d.ts +6 -0
  565. package/dist/frontend/lowering/class-prototypes.js +80 -18
  566. package/dist/frontend/lowering/class-prototypes.js.map +1 -1
  567. package/dist/frontend/lowering/class-runtime-statics.js +1 -1
  568. package/dist/frontend/lowering/class-runtime-statics.js.map +1 -1
  569. package/dist/frontend/lowering/class-static-data.js +2 -2
  570. package/dist/frontend/lowering/class-static-data.js.map +1 -1
  571. package/dist/frontend/lowering/class-to-primitive.d.ts +25 -0
  572. package/dist/frontend/lowering/class-to-primitive.js +261 -0
  573. package/dist/frontend/lowering/class-to-primitive.js.map +1 -0
  574. package/dist/frontend/lowering/class-unions.d.ts +25 -0
  575. package/dist/frontend/lowering/class-unions.js +102 -1
  576. package/dist/frontend/lowering/class-unions.js.map +1 -1
  577. package/dist/frontend/lowering/code-generation.d.ts +14 -0
  578. package/dist/frontend/lowering/code-generation.js +127 -0
  579. package/dist/frontend/lowering/code-generation.js.map +1 -0
  580. package/dist/frontend/lowering/coercions/function-adapters.d.ts +16 -2
  581. package/dist/frontend/lowering/coercions/function-adapters.js +145 -3
  582. package/dist/frontend/lowering/coercions/function-adapters.js.map +1 -1
  583. package/dist/frontend/lowering/coercions/structural-plans.js +25 -3
  584. package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -1
  585. package/dist/frontend/lowering/coercions/structural.js +35 -3
  586. package/dist/frontend/lowering/coercions/structural.js.map +1 -1
  587. package/dist/frontend/lowering/coercions/unions.d.ts +15 -0
  588. package/dist/frontend/lowering/coercions/unions.js +57 -1
  589. package/dist/frontend/lowering/coercions/unions.js.map +1 -1
  590. package/dist/frontend/lowering/collection-ingestion.js +2 -2
  591. package/dist/frontend/lowering/collection-ingestion.js.map +1 -1
  592. package/dist/frontend/lowering/collection-narrowing.js +2 -4
  593. package/dist/frontend/lowering/collection-narrowing.js.map +1 -1
  594. package/dist/frontend/lowering/construction-escapes.js +8 -8
  595. package/dist/frontend/lowering/construction-escapes.js.map +1 -1
  596. package/dist/frontend/lowering/construction-escapes.test.js +4 -4
  597. package/dist/frontend/lowering/construction-escapes.test.js.map +1 -1
  598. package/dist/frontend/lowering/constructor-returns.d.ts +61 -0
  599. package/dist/frontend/lowering/constructor-returns.js +477 -0
  600. package/dist/frontend/lowering/constructor-returns.js.map +1 -0
  601. package/dist/frontend/lowering/containers/array-callback-call.js +1 -1
  602. package/dist/frontend/lowering/containers/array-callback-call.js.map +1 -1
  603. package/dist/frontend/lowering/containers/array-callbacks.d.ts +9 -0
  604. package/dist/frontend/lowering/containers/array-callbacks.js +266 -100
  605. package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
  606. package/dist/frontend/lowering/containers/array-concat.js +1 -1
  607. package/dist/frontend/lowering/containers/array-concat.js.map +1 -1
  608. package/dist/frontend/lowering/containers/array-construction.d.ts +0 -1
  609. package/dist/frontend/lowering/containers/array-construction.js +51 -13
  610. package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
  611. package/dist/frontend/lowering/containers/array-from-async.d.ts +6 -5
  612. package/dist/frontend/lowering/containers/array-from-async.js +159 -14
  613. package/dist/frontend/lowering/containers/array-from-async.js.map +1 -1
  614. package/dist/frontend/lowering/containers/array-methods.js +89 -77
  615. package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
  616. package/dist/frontend/lowering/containers/array-pipelines.js +1 -0
  617. package/dist/frontend/lowering/containers/array-pipelines.js.map +1 -1
  618. package/dist/frontend/lowering/containers/bytes.js +161 -101
  619. package/dist/frontend/lowering/containers/bytes.js.map +1 -1
  620. package/dist/frontend/lowering/containers/callback-arguments.d.ts +9 -1
  621. package/dist/frontend/lowering/containers/callback-arguments.js +55 -5
  622. package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -1
  623. package/dist/frontend/lowering/containers/collection-grouping.d.ts +7 -8
  624. package/dist/frontend/lowering/containers/collection-grouping.js +217 -26
  625. package/dist/frontend/lowering/containers/collection-grouping.js.map +1 -1
  626. package/dist/frontend/lowering/containers/collection-methods.js +54 -25
  627. package/dist/frontend/lowering/containers/collection-methods.js.map +1 -1
  628. package/dist/frontend/lowering/containers/dynamic-receivers.js +1 -1
  629. package/dist/frontend/lowering/containers/dynamic-receivers.js.map +1 -1
  630. package/dist/frontend/lowering/containers/exec-result-uses.js +2 -2
  631. package/dist/frontend/lowering/containers/exec-result-uses.js.map +1 -1
  632. package/dist/frontend/lowering/containers/for-of.d.ts +6 -0
  633. package/dist/frontend/lowering/containers/for-of.js +19 -19
  634. package/dist/frontend/lowering/containers/for-of.js.map +1 -1
  635. package/dist/frontend/lowering/containers/indexed-objects.js +142 -57
  636. package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
  637. package/dist/frontend/lowering/containers/iterator-helpers.d.ts +53 -4
  638. package/dist/frontend/lowering/containers/iterator-helpers.js +1581 -462
  639. package/dist/frontend/lowering/containers/iterator-helpers.js.map +1 -1
  640. package/dist/frontend/lowering/containers/match-row-uses.d.ts +17 -0
  641. package/dist/frontend/lowering/containers/match-row-uses.js +264 -0
  642. package/dist/frontend/lowering/containers/match-row-uses.js.map +1 -0
  643. package/dist/frontend/lowering/containers/string-and-regexp.d.ts +14 -0
  644. package/dist/frontend/lowering/containers/string-and-regexp.js +419 -30
  645. package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
  646. package/dist/frontend/lowering/containers/string-replacement.js +1 -1
  647. package/dist/frontend/lowering/containers/string-replacement.js.map +1 -1
  648. package/dist/frontend/lowering/cycle-initialization.d.ts +4 -0
  649. package/dist/frontend/lowering/cycle-initialization.js +39 -0
  650. package/dist/frontend/lowering/cycle-initialization.js.map +1 -1
  651. package/dist/frontend/lowering/deferred-module-initializers.js +47 -43
  652. package/dist/frontend/lowering/deferred-module-initializers.js.map +1 -1
  653. package/dist/frontend/lowering/devirtualize.d.ts +1 -1
  654. package/dist/frontend/lowering/devirtualize.js +27 -7
  655. package/dist/frontend/lowering/devirtualize.js.map +1 -1
  656. package/dist/frontend/lowering/divergences.d.ts +0 -5
  657. package/dist/frontend/lowering/divergences.js +62 -125
  658. package/dist/frontend/lowering/divergences.js.map +1 -1
  659. package/dist/frontend/lowering/dyn-streams.d.ts +25 -0
  660. package/dist/frontend/lowering/dyn-streams.js +257 -0
  661. package/dist/frontend/lowering/dyn-streams.js.map +1 -0
  662. package/dist/frontend/lowering/error-methods.js +4 -1
  663. package/dist/frontend/lowering/error-methods.js.map +1 -1
  664. package/dist/frontend/lowering/error-name-order.d.ts +19 -0
  665. package/dist/frontend/lowering/error-name-order.js +93 -0
  666. package/dist/frontend/lowering/error-name-order.js.map +1 -0
  667. package/dist/frontend/lowering/expressions/array-literals.d.ts +21 -0
  668. package/dist/frontend/lowering/expressions/array-literals.js +703 -0
  669. package/dist/frontend/lowering/expressions/array-literals.js.map +1 -0
  670. package/dist/frontend/lowering/expressions/binary.d.ts +35 -0
  671. package/dist/frontend/lowering/expressions/binary.js +2483 -0
  672. package/dist/frontend/lowering/expressions/binary.js.map +1 -0
  673. package/dist/frontend/lowering/expressions/element-access.d.ts +31 -0
  674. package/dist/frontend/lowering/expressions/element-access.js +1797 -0
  675. package/dist/frontend/lowering/expressions/element-access.js.map +1 -0
  676. package/dist/frontend/lowering/expressions/evaluation-safety.js +4 -3
  677. package/dist/frontend/lowering/expressions/evaluation-safety.js.map +1 -1
  678. package/dist/frontend/lowering/expressions/hosted-narrowing.d.ts +38 -0
  679. package/dist/frontend/lowering/expressions/hosted-narrowing.js +160 -0
  680. package/dist/frontend/lowering/expressions/hosted-narrowing.js.map +1 -0
  681. package/dist/frontend/lowering/expressions/identifiers.d.ts +4 -0
  682. package/dist/frontend/lowering/expressions/identifiers.js +830 -0
  683. package/dist/frontend/lowering/expressions/identifiers.js.map +1 -0
  684. package/dist/frontend/lowering/expressions/keyed-field-targets.d.ts +40 -0
  685. package/dist/frontend/lowering/expressions/keyed-field-targets.js +226 -0
  686. package/dist/frontend/lowering/expressions/keyed-field-targets.js.map +1 -0
  687. package/dist/frontend/lowering/expressions/narrowing.d.ts +37 -0
  688. package/dist/frontend/lowering/expressions/narrowing.js +1322 -0
  689. package/dist/frontend/lowering/expressions/narrowing.js.map +1 -0
  690. package/dist/frontend/lowering/expressions/native-proxy.js +4 -4
  691. package/dist/frontend/lowering/expressions/native-proxy.js.map +1 -1
  692. package/dist/frontend/lowering/expressions/nullish-assignment.js +45 -0
  693. package/dist/frontend/lowering/expressions/nullish-assignment.js.map +1 -1
  694. package/dist/frontend/lowering/expressions/object-literals.d.ts +10 -0
  695. package/dist/frontend/lowering/expressions/object-literals.js +253 -85
  696. package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
  697. package/dist/frontend/lowering/expressions/optional-chains.d.ts +2 -1
  698. package/dist/frontend/lowering/expressions/optional-chains.js +91 -14
  699. package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
  700. package/dist/frontend/lowering/expressions/property-access.d.ts +110 -0
  701. package/dist/frontend/lowering/expressions/property-access.js +3544 -0
  702. package/dist/frontend/lowering/expressions/property-access.js.map +1 -0
  703. package/dist/frontend/lowering/expressions/relational.d.ts +28 -0
  704. package/dist/frontend/lowering/expressions/relational.js +1679 -0
  705. package/dist/frontend/lowering/expressions/relational.js.map +1 -0
  706. package/dist/frontend/lowering/expressions/typeof.d.ts +22 -0
  707. package/dist/frontend/lowering/expressions/typeof.js +538 -0
  708. package/dist/frontend/lowering/expressions/typeof.js.map +1 -0
  709. package/dist/frontend/lowering/expressions/union-fields.js +1 -1
  710. package/dist/frontend/lowering/expressions/union-fields.js.map +1 -1
  711. package/dist/frontend/lowering/expressions/updates.d.ts +21 -0
  712. package/dist/frontend/lowering/expressions/updates.js +780 -0
  713. package/dist/frontend/lowering/expressions/updates.js.map +1 -0
  714. package/dist/frontend/lowering/function-context.d.ts +10 -0
  715. package/dist/frontend/lowering/function-context.js +11 -1
  716. package/dist/frontend/lowering/function-context.js.map +1 -1
  717. package/dist/frontend/lowering/function-returns.js +52 -28
  718. package/dist/frontend/lowering/function-returns.js.map +1 -1
  719. package/dist/frontend/lowering/general-streams.d.ts +25 -0
  720. package/dist/frontend/lowering/general-streams.js +108 -0
  721. package/dist/frontend/lowering/general-streams.js.map +1 -0
  722. package/dist/frontend/lowering/generator-dynamic-dispatch.d.ts +7 -0
  723. package/dist/frontend/lowering/generator-dynamic-dispatch.js +172 -69
  724. package/dist/frontend/lowering/generator-dynamic-dispatch.js.map +1 -1
  725. package/dist/frontend/lowering/generic-functions.d.ts +39 -0
  726. package/dist/frontend/lowering/generic-functions.js +393 -75
  727. package/dist/frontend/lowering/generic-functions.js.map +1 -1
  728. package/dist/frontend/lowering/import-meta.js +2 -2
  729. package/dist/frontend/lowering/import-meta.js.map +1 -1
  730. package/dist/frontend/lowering/intern-tables.js +10 -9
  731. package/dist/frontend/lowering/intern-tables.js.map +1 -1
  732. package/dist/frontend/lowering/iterator-adapters.d.ts +19 -0
  733. package/dist/frontend/lowering/iterator-adapters.js +331 -3
  734. package/dist/frontend/lowering/iterator-adapters.js.map +1 -1
  735. package/dist/frontend/lowering/js-class-fields.d.ts +28 -0
  736. package/dist/frontend/lowering/js-class-fields.js +170 -0
  737. package/dist/frontend/lowering/js-class-fields.js.map +1 -0
  738. package/dist/frontend/lowering/js-dynamic-objects.d.ts +15 -0
  739. package/dist/frontend/lowering/js-dynamic-objects.js +299 -0
  740. package/dist/frontend/lowering/js-dynamic-objects.js.map +1 -0
  741. package/dist/frontend/lowering/js-dynamic-objects.test.d.ts +1 -0
  742. package/dist/frontend/lowering/js-dynamic-objects.test.js +35 -0
  743. package/dist/frontend/lowering/js-dynamic-objects.test.js.map +1 -0
  744. package/dist/frontend/lowering/json-require.d.ts +22 -0
  745. package/dist/frontend/lowering/json-require.js +131 -0
  746. package/dist/frontend/lowering/json-require.js.map +1 -0
  747. package/dist/frontend/lowering/key-order-witness.d.ts +44 -0
  748. package/dist/frontend/lowering/key-order-witness.js +641 -0
  749. package/dist/frontend/lowering/key-order-witness.js.map +1 -0
  750. package/dist/frontend/lowering/key-order-witness.test.d.ts +1 -0
  751. package/dist/frontend/lowering/key-order-witness.test.js +239 -0
  752. package/dist/frontend/lowering/key-order-witness.test.js.map +1 -0
  753. package/dist/frontend/lowering/lifetime-regions.js +7 -7
  754. package/dist/frontend/lowering/lifetime-regions.js.map +1 -1
  755. package/dist/frontend/lowering/lower-assert.js +61 -60
  756. package/dist/frontend/lowering/lower-assert.js.map +1 -1
  757. package/dist/frontend/lowering/lower-async-iteration.d.ts +10 -1
  758. package/dist/frontend/lowering/lower-async-iteration.js +34 -6
  759. package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
  760. package/dist/frontend/lowering/lower-builtin-values.d.ts +5 -0
  761. package/dist/frontend/lowering/lower-builtin-values.js +32 -3
  762. package/dist/frontend/lowering/lower-builtin-values.js.map +1 -1
  763. package/dist/frontend/lowering/lower-calls.js +1239 -442
  764. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  765. package/dist/frontend/lowering/lower-classes.d.ts +50 -3
  766. package/dist/frontend/lowering/lower-classes.js +1473 -468
  767. package/dist/frontend/lowering/lower-classes.js.map +1 -1
  768. package/dist/frontend/lowering/lower-comptime.d.ts +4 -2
  769. package/dist/frontend/lowering/lower-comptime.js +111 -13
  770. package/dist/frontend/lowering/lower-comptime.js.map +1 -1
  771. package/dist/frontend/lowering/lower-console.js +13 -11
  772. package/dist/frontend/lowering/lower-console.js.map +1 -1
  773. package/dist/frontend/lowering/lower-dgram.d.ts +10 -0
  774. package/dist/frontend/lowering/lower-dgram.js +179 -8
  775. package/dist/frontend/lowering/lower-dgram.js.map +1 -1
  776. package/dist/frontend/lowering/lower-enums.js +113 -14
  777. package/dist/frontend/lowering/lower-enums.js.map +1 -1
  778. package/dist/frontend/lowering/lower-event-emitter.d.ts +16 -7
  779. package/dist/frontend/lowering/lower-event-emitter.js +258 -70
  780. package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
  781. package/dist/frontend/lowering/lower-event-target.js +2 -2
  782. package/dist/frontend/lowering/lower-event-target.js.map +1 -1
  783. package/dist/frontend/lowering/lower-expando.js +17 -13
  784. package/dist/frontend/lowering/lower-expando.js.map +1 -1
  785. package/dist/frontend/lowering/lower-exprs.d.ts +188 -186
  786. package/dist/frontend/lowering/lower-exprs.js +1481 -12489
  787. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  788. package/dist/frontend/lowering/lower-functions.js +68 -22
  789. package/dist/frontend/lowering/lower-functions.js.map +1 -1
  790. package/dist/frontend/lowering/lower-generators.d.ts +6 -0
  791. package/dist/frontend/lowering/lower-generators.js +29 -16
  792. package/dist/frontend/lowering/lower-generators.js.map +1 -1
  793. package/dist/frontend/lowering/lower-global-value.js +5 -1
  794. package/dist/frontend/lowering/lower-global-value.js.map +1 -1
  795. package/dist/frontend/lowering/lower-inspect.js +331 -96
  796. package/dist/frontend/lowering/lower-inspect.js.map +1 -1
  797. package/dist/frontend/lowering/lower-mixins.js +23 -20
  798. package/dist/frontend/lowering/lower-mixins.js.map +1 -1
  799. package/dist/frontend/lowering/lower-mock.d.ts +8 -1
  800. package/dist/frontend/lowering/lower-mock.js +185 -18
  801. package/dist/frontend/lowering/lower-mock.js.map +1 -1
  802. package/dist/frontend/lowering/lower-modules.js +267 -61
  803. package/dist/frontend/lowering/lower-modules.js.map +1 -1
  804. package/dist/frontend/lowering/lower-namespaces.d.ts +6 -0
  805. package/dist/frontend/lowering/lower-namespaces.js +45 -33
  806. package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
  807. package/dist/frontend/lowering/lower-node-module.d.ts +16 -0
  808. package/dist/frontend/lowering/lower-node-module.js +147 -14
  809. package/dist/frontend/lowering/lower-node-module.js.map +1 -1
  810. package/dist/frontend/lowering/lower-server.d.ts +6 -6
  811. package/dist/frontend/lowering/lower-server.js +488 -100
  812. package/dist/frontend/lowering/lower-server.js.map +1 -1
  813. package/dist/frontend/lowering/lower-stdlib.d.ts +4 -0
  814. package/dist/frontend/lowering/lower-stdlib.js +151 -109
  815. package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
  816. package/dist/frontend/lowering/lower-stmts.d.ts +28 -2
  817. package/dist/frontend/lowering/lower-stmts.js +1541 -391
  818. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  819. package/dist/frontend/lowering/lower-stream.d.ts +3 -0
  820. package/dist/frontend/lowering/lower-stream.js +398 -56
  821. package/dist/frontend/lowering/lower-stream.js.map +1 -1
  822. package/dist/frontend/lowering/lower-test.d.ts +3 -0
  823. package/dist/frontend/lowering/lower-test.js +437 -62
  824. package/dist/frontend/lowering/lower-test.js.map +1 -1
  825. package/dist/frontend/lowering/lower-timers.js +80 -32
  826. package/dist/frontend/lowering/lower-timers.js.map +1 -1
  827. package/dist/frontend/lowering/lower-url.js +1 -1
  828. package/dist/frontend/lowering/lower-url.js.map +1 -1
  829. package/dist/frontend/lowering/lowerer.d.ts +399 -26
  830. package/dist/frontend/lowering/lowerer.js +1910 -305
  831. package/dist/frontend/lowering/lowerer.js.map +1 -1
  832. package/dist/frontend/lowering/lowerer.test.js +10 -4
  833. package/dist/frontend/lowering/lowerer.test.js.map +1 -1
  834. package/dist/frontend/lowering/maybe-promise.d.ts +46 -0
  835. package/dist/frontend/lowering/maybe-promise.js +249 -0
  836. package/dist/frontend/lowering/maybe-promise.js.map +1 -0
  837. package/dist/frontend/lowering/module-member-this.d.ts +3 -0
  838. package/dist/frontend/lowering/module-member-this.js +262 -0
  839. package/dist/frontend/lowering/module-member-this.js.map +1 -0
  840. package/dist/frontend/lowering/module-namespace-elements.js +1 -1
  841. package/dist/frontend/lowering/module-namespace-elements.js.map +1 -1
  842. package/dist/frontend/lowering/nan-coded-reads.d.ts +3 -0
  843. package/dist/frontend/lowering/nan-coded-reads.js +45 -32
  844. package/dist/frontend/lowering/nan-coded-reads.js.map +1 -1
  845. package/dist/frontend/lowering/narrowing-stability.d.ts +18 -3
  846. package/dist/frontend/lowering/narrowing-stability.js +104 -32
  847. package/dist/frontend/lowering/narrowing-stability.js.map +1 -1
  848. package/dist/frontend/lowering/native-ffi.js +11 -11
  849. package/dist/frontend/lowering/native-ffi.js.map +1 -1
  850. package/dist/frontend/lowering/object-factory-new.js +6 -8
  851. package/dist/frontend/lowering/object-factory-new.js.map +1 -1
  852. package/dist/frontend/lowering/private-brands.d.ts +46 -0
  853. package/dist/frontend/lowering/private-brands.js +265 -0
  854. package/dist/frontend/lowering/private-brands.js.map +1 -0
  855. package/dist/frontend/lowering/promise-executor-adapter.d.ts +11 -0
  856. package/dist/frontend/lowering/promise-executor-adapter.js +87 -0
  857. package/dist/frontend/lowering/promise-executor-adapter.js.map +1 -0
  858. package/dist/frontend/lowering/require-initialization.d.ts +32 -0
  859. package/dist/frontend/lowering/require-initialization.js +246 -0
  860. package/dist/frontend/lowering/require-initialization.js.map +1 -0
  861. package/dist/frontend/lowering/runtime-optional-bounds.js +7 -7
  862. package/dist/frontend/lowering/runtime-optional-bounds.js.map +1 -1
  863. package/dist/frontend/lowering/runtime-optional-elements.js +12 -12
  864. package/dist/frontend/lowering/runtime-optional-elements.js.map +1 -1
  865. package/dist/frontend/lowering/runtime-optional-guards.js +10 -10
  866. package/dist/frontend/lowering/runtime-optional-guards.js.map +1 -1
  867. package/dist/frontend/lowering/runtime-optional-guards.test.js +1 -1
  868. package/dist/frontend/lowering/runtime-optional-guards.test.js.map +1 -1
  869. package/dist/frontend/lowering/runtime-optional-ownership.js +10 -9
  870. package/dist/frontend/lowering/runtime-optional-ownership.js.map +1 -1
  871. package/dist/frontend/lowering/runtime-optional-provenance.js +2 -2
  872. package/dist/frontend/lowering/runtime-optional-provenance.js.map +1 -1
  873. package/dist/frontend/lowering/runtime-optional-records.d.ts +35 -0
  874. package/dist/frontend/lowering/runtime-optional-records.js +205 -32
  875. package/dist/frontend/lowering/runtime-optional-records.js.map +1 -1
  876. package/dist/frontend/lowering/runtime-optional-records.test.js +19 -1
  877. package/dist/frontend/lowering/runtime-optional-records.test.js.map +1 -1
  878. package/dist/frontend/lowering/sanitize-class-types.test.js +2 -2
  879. package/dist/frontend/lowering/split-consumers.js +4 -4
  880. package/dist/frontend/lowering/split-consumers.js.map +1 -1
  881. package/dist/frontend/lowering/static-function-names.d.ts +28 -0
  882. package/dist/frontend/lowering/static-function-names.js +212 -0
  883. package/dist/frontend/lowering/static-function-names.js.map +1 -0
  884. package/dist/frontend/lowering/static-this.js +6 -6
  885. package/dist/frontend/lowering/static-this.js.map +1 -1
  886. package/dist/frontend/lowering/strict-mode.d.ts +5 -0
  887. package/dist/frontend/lowering/strict-mode.js +31 -0
  888. package/dist/frontend/lowering/strict-mode.js.map +1 -0
  889. package/dist/frontend/lowering/string-index-bounds.js +10 -10
  890. package/dist/frontend/lowering/string-index-bounds.js.map +1 -1
  891. package/dist/frontend/lowering/string-index.d.ts +12 -0
  892. package/dist/frontend/lowering/string-index.js +72 -1
  893. package/dist/frontend/lowering/string-index.js.map +1 -1
  894. package/dist/frontend/lowering/surfaces.d.ts +12 -3
  895. package/dist/frontend/lowering/surfaces.js +252 -41
  896. package/dist/frontend/lowering/surfaces.js.map +1 -1
  897. package/dist/frontend/lowering/symbol-fields.d.ts +7 -0
  898. package/dist/frontend/lowering/symbol-fields.js +204 -36
  899. package/dist/frontend/lowering/symbol-fields.js.map +1 -1
  900. package/dist/frontend/lowering/symbol-methods.d.ts +2 -1
  901. package/dist/frontend/lowering/symbol-methods.js +24 -6
  902. package/dist/frontend/lowering/symbol-methods.js.map +1 -1
  903. package/dist/frontend/lowering/thread-slots.d.ts +13 -0
  904. package/dist/frontend/lowering/thread-slots.js +208 -0
  905. package/dist/frontend/lowering/thread-slots.js.map +1 -0
  906. package/dist/frontend/lowering/typed-arguments.d.ts +74 -0
  907. package/dist/frontend/lowering/typed-arguments.js +472 -0
  908. package/dist/frontend/lowering/typed-arguments.js.map +1 -0
  909. package/dist/frontend/lowering/union-retag.d.ts +8 -0
  910. package/dist/frontend/lowering/union-retag.js +27 -0
  911. package/dist/frontend/lowering/union-retag.js.map +1 -1
  912. package/dist/frontend/lowering/union-retag.test.js +24 -1
  913. package/dist/frontend/lowering/union-retag.test.js.map +1 -1
  914. package/dist/frontend/lowering/var-hoisting.js +6 -6
  915. package/dist/frontend/lowering/var-hoisting.js.map +1 -1
  916. package/dist/frontend/lowering/width-lift.d.ts +4 -0
  917. package/dist/frontend/mock-shapes.js +13 -6
  918. package/dist/frontend/mock-shapes.js.map +1 -1
  919. package/dist/frontend/module-source-candidates.js +1 -1
  920. package/dist/frontend/module-source-candidates.js.map +1 -1
  921. package/dist/frontend/module-source-candidates.test.js +2 -1
  922. package/dist/frontend/module-source-candidates.test.js.map +1 -1
  923. package/dist/frontend/module-syntax.js +8 -8
  924. package/dist/frontend/module-syntax.js.map +1 -1
  925. package/dist/frontend/npm-static-bundled-chunks.d.ts +51 -0
  926. package/dist/frontend/npm-static-bundled-chunks.js +810 -0
  927. package/dist/frontend/npm-static-bundled-chunks.js.map +1 -0
  928. package/dist/frontend/npm-static-bundled-chunks.test.d.ts +1 -0
  929. package/dist/frontend/npm-static-bundled-chunks.test.js +287 -0
  930. package/dist/frontend/npm-static-bundled-chunks.test.js.map +1 -0
  931. package/dist/frontend/npm-static-bundled-cjs.js +24 -23
  932. package/dist/frontend/npm-static-bundled-cjs.js.map +1 -1
  933. package/dist/frontend/npm-static-bundled-esm.d.ts +9 -0
  934. package/dist/frontend/npm-static-bundled-esm.js +768 -0
  935. package/dist/frontend/npm-static-bundled-esm.js.map +1 -0
  936. package/dist/frontend/npm-static-bundled-esm.test.d.ts +1 -0
  937. package/dist/frontend/npm-static-bundled-esm.test.js +207 -0
  938. package/dist/frontend/npm-static-bundled-esm.test.js.map +1 -0
  939. package/dist/frontend/npm-static-cjs-exports-alias.d.ts +2 -0
  940. package/dist/frontend/npm-static-cjs-exports-alias.js +186 -0
  941. package/dist/frontend/npm-static-cjs-exports-alias.js.map +1 -0
  942. package/dist/frontend/npm-static-cjs-exports-alias.test.d.ts +1 -0
  943. package/dist/frontend/npm-static-cjs-exports-alias.test.js +73 -0
  944. package/dist/frontend/npm-static-cjs-exports-alias.test.js.map +1 -0
  945. package/dist/frontend/npm-static-cjs-exports-var.d.ts +2 -0
  946. package/dist/frontend/npm-static-cjs-exports-var.js +236 -0
  947. package/dist/frontend/npm-static-cjs-exports-var.js.map +1 -0
  948. package/dist/frontend/npm-static-declaration-syntax.js +102 -101
  949. package/dist/frontend/npm-static-declaration-syntax.js.map +1 -1
  950. package/dist/frontend/npm-static-prune.js +36 -24
  951. package/dist/frontend/npm-static-prune.js.map +1 -1
  952. package/dist/frontend/npm-static-rewrite-host.d.ts +4 -1
  953. package/dist/frontend/npm-static-rewrite-host.js +14 -3
  954. package/dist/frontend/npm-static-rewrite-host.js.map +1 -1
  955. package/dist/frontend/npm-static-rewrite-syntax.d.ts +19 -0
  956. package/dist/frontend/npm-static-rewrite-syntax.js +274 -101
  957. package/dist/frontend/npm-static-rewrite-syntax.js.map +1 -1
  958. package/dist/frontend/npm-static-subtyping.js +7 -9
  959. package/dist/frontend/npm-static-subtyping.js.map +1 -1
  960. package/dist/frontend/npm-static.d.ts +17 -1
  961. package/dist/frontend/npm-static.js +167 -16
  962. package/dist/frontend/npm-static.js.map +1 -1
  963. package/dist/frontend/npm-static.test.js +22 -1
  964. package/dist/frontend/npm-static.test.js.map +1 -1
  965. package/dist/frontend/pipeline.js +164 -26
  966. package/dist/frontend/pipeline.js.map +1 -1
  967. package/dist/frontend/pipeline.test.js +22 -1
  968. package/dist/frontend/pipeline.test.js.map +1 -1
  969. package/dist/frontend/program-analysis.d.ts +6 -1
  970. package/dist/frontend/program-analysis.js +7 -0
  971. package/dist/frontend/program-analysis.js.map +1 -1
  972. package/dist/frontend/program.d.ts +92 -2
  973. package/dist/frontend/program.js +1557 -255
  974. package/dist/frontend/program.js.map +1 -1
  975. package/dist/frontend/program.test.js +76 -6
  976. package/dist/frontend/program.test.js.map +1 -1
  977. package/dist/frontend/resolve.js +36 -2
  978. package/dist/frontend/resolve.js.map +1 -1
  979. package/dist/frontend/resolve.test.js +49 -0
  980. package/dist/frontend/resolve.test.js.map +1 -1
  981. package/dist/frontend/services.d.ts +20 -1
  982. package/dist/frontend/services.js +40 -3
  983. package/dist/frontend/services.js.map +1 -1
  984. package/dist/frontend/services.test.js +2 -1
  985. package/dist/frontend/services.test.js.map +1 -1
  986. package/dist/frontend/threads-import.js +1 -1
  987. package/dist/frontend/threads-import.js.map +1 -1
  988. package/dist/frontend/tier-analysis.d.ts +71 -0
  989. package/dist/frontend/tier-analysis.js +522 -0
  990. package/dist/frontend/tier-analysis.js.map +1 -0
  991. package/dist/frontend/ts7/api-conformance.d.ts +234 -0
  992. package/dist/frontend/ts7/api-conformance.js +7 -0
  993. package/dist/frontend/ts7/api-conformance.js.map +1 -0
  994. package/dist/frontend/ts7/ast-guards.generated.js +2 -1
  995. package/dist/frontend/ts7/ast-guards.generated.js.map +1 -1
  996. package/dist/frontend/ts7/ast-node.d.ts +47 -25
  997. package/dist/frontend/ts7/ast-node.js +64 -18
  998. package/dist/frontend/ts7/ast-node.js.map +1 -1
  999. package/dist/frontend/ts7/ast-node.test.js +36 -12
  1000. package/dist/frontend/ts7/ast-node.test.js.map +1 -1
  1001. package/dist/frontend/ts7/ast-types.d.ts +10 -3
  1002. package/dist/frontend/ts7/ast-types.generated.d.ts +39 -39
  1003. package/dist/frontend/ts7/ast.d.ts +1 -0
  1004. package/dist/frontend/ts7/ast.js +3 -2
  1005. package/dist/frontend/ts7/ast.js.map +1 -1
  1006. package/dist/frontend/ts7/checker-backend.d.ts +23 -0
  1007. package/dist/frontend/ts7/checker-backend.js +88 -0
  1008. package/dist/frontend/ts7/checker-backend.js.map +1 -0
  1009. package/dist/frontend/ts7/checker-backend.test.d.ts +1 -0
  1010. package/dist/frontend/ts7/checker-backend.test.js +63 -0
  1011. package/dist/frontend/ts7/checker-backend.test.js.map +1 -0
  1012. package/dist/frontend/ts7/checker-cache.d.ts +0 -3
  1013. package/dist/frontend/ts7/checker-cache.js +0 -6
  1014. package/dist/frontend/ts7/checker-cache.js.map +1 -1
  1015. package/dist/frontend/ts7/checker.d.ts +18 -11
  1016. package/dist/frontend/ts7/checker.js +42 -55
  1017. package/dist/frontend/ts7/checker.js.map +1 -1
  1018. package/dist/frontend/ts7/checker.test.js +10 -7
  1019. package/dist/frontend/ts7/checker.test.js.map +1 -1
  1020. package/dist/frontend/ts7/diagnostic.d.ts +19 -0
  1021. package/dist/frontend/ts7/diagnostic.js +22 -0
  1022. package/dist/frontend/ts7/diagnostic.js.map +1 -0
  1023. package/dist/frontend/ts7/node-functions.d.ts +8 -0
  1024. package/dist/frontend/ts7/node-functions.js +18 -0
  1025. package/dist/frontend/ts7/node-functions.js.map +1 -0
  1026. package/dist/frontend/ts7/program-host.d.ts +5 -1
  1027. package/dist/frontend/ts7/program-host.js +12 -0
  1028. package/dist/frontend/ts7/program-host.js.map +1 -1
  1029. package/dist/frontend/ts7/rpc-api.d.ts +5 -1
  1030. package/dist/frontend/ts7/rpc-api.js +8 -1
  1031. package/dist/frontend/ts7/rpc-api.js.map +1 -1
  1032. package/dist/frontend/ts7/semantic-checker.d.ts +13 -6
  1033. package/dist/frontend/ts7/semantic-checker.js +26 -8
  1034. package/dist/frontend/ts7/semantic-checker.js.map +1 -1
  1035. package/dist/frontend/ts7/semantic-checker.test.js +12 -9
  1036. package/dist/frontend/ts7/semantic-checker.test.js.map +1 -1
  1037. package/dist/frontend/ts7/semantic-model.d.ts +54 -24
  1038. package/dist/frontend/ts7/semantic-model.js +88 -16
  1039. package/dist/frontend/ts7/semantic-model.js.map +1 -1
  1040. package/dist/frontend/ts7/semantic-model.test.js +4 -4
  1041. package/dist/frontend/ts7/semantic-model.test.js.map +1 -1
  1042. package/dist/frontend/ts7/semantic-types.d.ts +7 -3
  1043. package/dist/frontend/ts7/semantic-types.js +1 -1
  1044. package/dist/frontend/ts7/semantic-types.js.map +1 -1
  1045. package/dist/frontend/ts7/session.d.ts +11 -11
  1046. package/dist/frontend/ts7/session.js +8 -5
  1047. package/dist/frontend/ts7/session.js.map +1 -1
  1048. package/dist/frontend/ts7/session.test.js +9 -5
  1049. package/dist/frontend/ts7/session.test.js.map +1 -1
  1050. package/dist/frontend/ts7/source-parser.d.ts +6 -2
  1051. package/dist/frontend/ts7/source-parser.js +24 -3
  1052. package/dist/frontend/ts7/source-parser.js.map +1 -1
  1053. package/dist/frontend/ts7/source-parser.test.js +38 -17
  1054. package/dist/frontend/ts7/source-parser.test.js.map +1 -1
  1055. package/dist/frontend/type-mapper.d.ts +122 -2
  1056. package/dist/frontend/type-mapper.js +2545 -719
  1057. package/dist/frontend/type-mapper.js.map +1 -1
  1058. package/dist/frontend/type-only-imports.d.ts +28 -0
  1059. package/dist/frontend/type-only-imports.js +122 -0
  1060. package/dist/frontend/type-only-imports.js.map +1 -0
  1061. package/dist/frontend/worker-target.js +8 -8
  1062. package/dist/frontend/worker-target.js.map +1 -1
  1063. package/dist/index.d.ts +3 -1
  1064. package/dist/index.js +29 -2
  1065. package/dist/index.js.map +1 -1
  1066. package/dist/ir/analysis.js +4 -2
  1067. package/dist/ir/analysis.js.map +1 -1
  1068. package/dist/ir/api.d.ts +1 -1
  1069. package/dist/ir/api.js +1 -1
  1070. package/dist/ir/api.js.map +1 -1
  1071. package/dist/ir/array-length-stability.d.ts +30 -0
  1072. package/dist/ir/array-length-stability.js +236 -0
  1073. package/dist/ir/array-length-stability.js.map +1 -0
  1074. package/dist/ir/array-length-stability.test.d.ts +1 -0
  1075. package/dist/ir/array-length-stability.test.js +113 -0
  1076. package/dist/ir/array-length-stability.test.js.map +1 -0
  1077. package/dist/ir/build.d.ts +2 -2
  1078. package/dist/ir/build.js +1 -1
  1079. package/dist/ir/build.js.map +1 -1
  1080. package/dist/ir/builtin-effects.js +103 -0
  1081. package/dist/ir/builtin-effects.js.map +1 -1
  1082. package/dist/ir/builtin-signatures.d.ts +1 -1
  1083. package/dist/ir/builtin-signatures.js +494 -25
  1084. package/dist/ir/builtin-signatures.js.map +1 -1
  1085. package/dist/ir/byte-numbers.js +3 -0
  1086. package/dist/ir/byte-numbers.js.map +1 -1
  1087. package/dist/ir/callback-specialization.d.ts +37 -0
  1088. package/dist/ir/callback-specialization.js +459 -0
  1089. package/dist/ir/callback-specialization.js.map +1 -0
  1090. package/dist/ir/callback-specialization.test.d.ts +1 -0
  1091. package/dist/ir/callback-specialization.test.js +208 -0
  1092. package/dist/ir/callback-specialization.test.js.map +1 -0
  1093. package/dist/ir/capture-values.d.ts +0 -1
  1094. package/dist/ir/capture-values.js +51 -40
  1095. package/dist/ir/capture-values.js.map +1 -1
  1096. package/dist/ir/constant-globals.test.js +1 -1
  1097. package/dist/ir/constant-tables.test.js +1 -1
  1098. package/dist/ir/field-values.test.js +1 -1
  1099. package/dist/ir/final-fields.test.js +1 -1
  1100. package/dist/ir/function-references.test.js +9 -1
  1101. package/dist/ir/function-references.test.js.map +1 -1
  1102. package/dist/ir/init-only-globals.test.js +1 -1
  1103. package/dist/ir/initializer-bindings.test.js +1 -1
  1104. package/dist/ir/int32-slots.d.ts +14 -0
  1105. package/dist/ir/int32-slots.js +97 -14
  1106. package/dist/ir/int32-slots.js.map +1 -1
  1107. package/dist/ir/int32-slots.test.js +1 -1
  1108. package/dist/ir/integer-loop-facts.d.ts +2 -0
  1109. package/dist/ir/integer-loop-facts.js +24 -3
  1110. package/dist/ir/integer-loop-facts.js.map +1 -1
  1111. package/dist/ir/integer-loops.d.ts +1 -1
  1112. package/dist/ir/integer-loops.js +39 -9
  1113. package/dist/ir/integer-loops.js.map +1 -1
  1114. package/dist/ir/integer-loops.test.js +104 -0
  1115. package/dist/ir/integer-loops.test.js.map +1 -1
  1116. package/dist/ir/integer-ranges.d.ts +3 -0
  1117. package/dist/ir/integer-ranges.js +3 -1
  1118. package/dist/ir/integer-ranges.js.map +1 -1
  1119. package/dist/ir/integer-ranges.test.js +82 -1
  1120. package/dist/ir/integer-ranges.test.js.map +1 -1
  1121. package/dist/ir/intrinsic-signatures.js +6 -0
  1122. package/dist/ir/intrinsic-signatures.js.map +1 -1
  1123. package/dist/ir/ir.d.ts +221 -58
  1124. package/dist/ir/ir.js +119 -12
  1125. package/dist/ir/ir.js.map +1 -1
  1126. package/dist/ir/ir.test.js +10 -0
  1127. package/dist/ir/ir.test.js.map +1 -1
  1128. package/dist/ir/jsval.d.ts +8 -0
  1129. package/dist/ir/jsval.js +365 -0
  1130. package/dist/ir/jsval.js.map +1 -0
  1131. package/dist/ir/jsval.test.d.ts +1 -0
  1132. package/dist/ir/jsval.test.js +239 -0
  1133. package/dist/ir/jsval.test.js.map +1 -0
  1134. package/dist/ir/runtime-features.d.ts +148 -33
  1135. package/dist/ir/runtime-features.js +629 -386
  1136. package/dist/ir/runtime-features.js.map +1 -1
  1137. package/dist/ir/scalar-records.test.js +1 -1
  1138. package/dist/ir/self-captures.d.ts +33 -0
  1139. package/dist/ir/self-captures.js +245 -0
  1140. package/dist/ir/self-captures.js.map +1 -0
  1141. package/dist/ir/self-captures.test.d.ts +1 -0
  1142. package/dist/ir/self-captures.test.js +135 -0
  1143. package/dist/ir/self-captures.test.js.map +1 -0
  1144. package/dist/ir/serialize.d.ts +1 -1
  1145. package/dist/ir/serialize.js +7 -4
  1146. package/dist/ir/serialize.js.map +1 -1
  1147. package/dist/ir/tiers.d.ts +26 -0
  1148. package/dist/ir/tiers.js +101 -0
  1149. package/dist/ir/tiers.js.map +1 -0
  1150. package/dist/ir/tiers.test.d.ts +1 -0
  1151. package/dist/ir/tiers.test.js +140 -0
  1152. package/dist/ir/tiers.test.js.map +1 -0
  1153. package/dist/ir/traverse.js +103 -94
  1154. package/dist/ir/traverse.js.map +1 -1
  1155. package/dist/ir/traverse.test.js +33 -30
  1156. package/dist/ir/traverse.test.js.map +1 -1
  1157. package/dist/ir/unshare.js +65 -3
  1158. package/dist/ir/unshare.js.map +1 -1
  1159. package/dist/ir/unshare.test.js +1 -1
  1160. package/dist/ir/validate.js +175 -68
  1161. package/dist/ir/validate.js.map +1 -1
  1162. package/dist/ir/validate.test.js +26 -9
  1163. package/dist/ir/validate.test.js.map +1 -1
  1164. package/dist/library/fence-eval.test.js +1 -1
  1165. package/dist/library/int-infer.test.js +4 -4
  1166. package/dist/library/ir-policy.js +13 -0
  1167. package/dist/library/ir-policy.js.map +1 -1
  1168. package/dist/library/library-cache.d.ts +1 -0
  1169. package/dist/library/library-cache.js.map +1 -1
  1170. package/dist/library/library-cache.test.js +5 -5
  1171. package/dist/library/library-profile.d.ts +4 -4
  1172. package/dist/library/library-profile.js +35 -7
  1173. package/dist/library/library-profile.js.map +1 -1
  1174. package/dist/library/prepare.js +13 -1
  1175. package/dist/library/prepare.js.map +1 -1
  1176. package/dist/native/cli.js +5 -0
  1177. package/dist/native/cli.js.map +1 -1
  1178. package/dist/native/compiler.js +2 -2
  1179. package/dist/native/compiler.js.map +1 -1
  1180. package/dist/native/compiler.test.js +2 -2
  1181. package/dist/native/prepare.js +7 -0
  1182. package/dist/native/prepare.js.map +1 -1
  1183. package/dist/native/sanitizer.test.js +12 -0
  1184. package/dist/native/sanitizer.test.js.map +1 -1
  1185. package/dist/native/toolchain.d.ts +2 -0
  1186. package/dist/native/toolchain.js +10 -1
  1187. package/dist/native/toolchain.js.map +1 -1
  1188. package/dist/native/toolchain.test.js +39 -1
  1189. package/dist/native/toolchain.test.js.map +1 -1
  1190. package/dist/startup-cache.d.ts +1 -0
  1191. package/dist/startup-cache.js +1 -0
  1192. package/dist/startup-cache.js.map +1 -1
  1193. package/dist/wasm/base64.d.ts +5 -0
  1194. package/dist/wasm/base64.js +62 -0
  1195. package/dist/wasm/base64.js.map +1 -0
  1196. package/dist/wasm/binary.d.ts +36 -0
  1197. package/dist/wasm/binary.js +1976 -0
  1198. package/dist/wasm/binary.js.map +1 -0
  1199. package/dist/wasm/binary.test.d.ts +1 -0
  1200. package/dist/wasm/binary.test.js +190 -0
  1201. package/dist/wasm/binary.test.js.map +1 -0
  1202. package/dist/wasm/discover.d.ts +38 -0
  1203. package/dist/wasm/discover.js +377 -0
  1204. package/dist/wasm/discover.js.map +1 -0
  1205. package/dist/wasm/discover.test.d.ts +1 -0
  1206. package/dist/wasm/discover.test.js +24 -0
  1207. package/dist/wasm/discover.test.js.map +1 -0
  1208. package/dist/wasm/module.d.ts +151 -0
  1209. package/dist/wasm/module.js +575 -0
  1210. package/dist/wasm/module.js.map +1 -0
  1211. package/dist/wasm/translate.d.ts +48 -0
  1212. package/dist/wasm/translate.js +2129 -0
  1213. package/dist/wasm/translate.js.map +1 -0
  1214. package/dist/wasm/translate.test.d.ts +1 -0
  1215. package/dist/wasm/translate.test.js +207 -0
  1216. package/dist/wasm/translate.test.js.map +1 -0
  1217. package/package.json +21 -20
  1218. package/surface-manifest.json +303 -19
@@ -14,18 +14,24 @@ import { packageNameOfPath, probeNodeImportRefusal } from "../npm.js";
14
14
  import { isNpmStaticPackage } from "../npm-static.js";
15
15
  import { isJsSourceFileName } from "../tsc-codes.js";
16
16
  import { isRelativeSpecifier } from "../workspace-registry.js";
17
- import { canonicalBuiltinModule, cjsExportAssignmentOf, cjsExportDiscardReason, entryPackageFilePredicate, isCjsJsFile, isJsSourceFile, isRequireStatement, locOf, makeCycleAdmission, orderedImportsOf, resolveImport, resolveNpmImport, } from "../program.js";
17
+ import { canonicalBuiltinModule, cjsExportAssignmentOf, cjsExportChainOf, cjsVoidInitPreambleReals, cjsExportDiscardReason, cjsExportTargetLiteral, entryPackageFilePredicate, isCjsJsFile, isJsSourceFile, isRequireStatement, locOf, makeCycleAdmission, orderedImportsOf, requireSpecOf, resolveImport, resolveNpmImport, } from "../program.js";
18
18
  import { markCycleEarlyBindings, withClassInitFlag, withCycleInitFlags, } from "./cycle-initialization.js";
19
+ import { markRequireEarlyBindings } from "./require-initialization.js";
20
+ import { cjsTableMethodEntry, inlineProgramRequireOf, nestedCjsExportAssignmentsOf, requireNestedPatternsOf, } from "./cjs-inline-require.js";
21
+ import { isDeadTscHelperDecl, tscInteropBindingOfDecl } from "./cjs-tsc-interop.js";
22
+ import { collectJsonRequires, isJsonRequireDecl } from "./json-require.js";
19
23
  import { invalidJsonModuleDiag, unsupportedPackageImportDiag, } from "../../diagnostics/diagnostic.js";
20
24
  import { BOOL, CAUGHT, DYN, F64, RUNTIME_ERROR_CLASSES, STRING, VOID, arrayOf, canBoxFuncIntoDyn, canConvertToDyn, isUnitType, } from "../../ir/ir.js";
21
25
  import { ENTRY_NAME, PoisonError, boundIdentifiersOf, dynFallbackType, newFnCtx, staticImportNamespaceType, } from "./lowerer.js";
22
26
  import { isNativeFfiRequire, builtinMemberRequireDecl, builtinNamespaceDestructureModuleOf, createRequireBindingDecl, createRequireNamespaceDecl, createRequireProgramModuleDecl, } from "./builtins/module-bindings.js";
23
27
  import { isPromisifyCall, registerBuiltinCallableAlias } from "./builtins/callable-aliases.js";
28
+ import { registerBuiltinClassAlias } from "./builtins/class-values.js";
24
29
  import { stripTypeCasts } from "./builtins/arguments.js";
30
+ import { isWebCryptoMemberType } from "./builtins/webcrypto.js";
25
31
  import { bindingContextualGenericFnNodeOf, bindingGenericFnAliasInfoOf, bindingGenericFnInfoOf, bindingGenericFnNodeOf, implicitLocalFnInfoOf, implicitLocalFnNodeOf, } from "./generic-functions.js";
26
32
  import { bindingNeverReassigned, deadUnmappableBinding, nullishGenericBindingUnitOf, } from "./binding-analysis.js";
27
33
  import { funcTypeFromParamShapes, registerOverloadedCallableAlias } from "./call-signatures.js";
28
- import { jsBindingHasOpenWrites, hasJsTypeAnnotation, isVarDeclared, numericIteratorSourceOf, provenanceElidedConstDecl, } from "./lower-stmts.js";
34
+ import { jsBindingHasOpenWrites, hasJsTypeAnnotation, isVarDeclared, numericIteratorSourceOf, provenanceElidedConstDecl, stdlibBufferVarAlias, } from "./lower-stmts.js";
29
35
  import { objectFactoryGlobalType } from "./object-factory-new.js";
30
36
  import { streamClassAliasDecl } from "./lower-stream.js";
31
37
  import { isAssertClassNew } from "./assert-instances.js";
@@ -42,6 +48,8 @@ import { forkTargetPaths } from "../fork-target.js";
42
48
  import { workerTargetPaths } from "../worker-target.js";
43
49
  import { isNativeProxyInitializer } from "./expressions/native-proxy.js";
44
50
  import { handleEventReaderPrelude } from "./lower-event-target.js";
51
+ import { cjsAccessorSnapshotStores, jsHoldsDynObject } from "./lower-exprs.js";
52
+ import { keptIdentityAssertion } from "./assertion-identity.js";
45
53
  /** Program modules selected by statically resolved child_process.fork()
46
54
  * calls join the compiled graph without becoming startup dependencies of
47
55
  * the parent entry. Their guarded init functions are selected by %main only
@@ -113,7 +121,7 @@ export function splitFiles(lowerer) {
113
121
  const files = lowerer.moduleOrder.length > 0 ? lowerer.moduleOrder : [lowerer.entry];
114
122
  return files.map((sf) => {
115
123
  const fp = { sf, fnDecls: [], classDecls: [], topStmts: [] };
116
- for (const stmt of sf.statements) {
124
+ for (const stmt of sf.statements.nodes) {
117
125
  if (ts.isFunctionDeclaration(stmt))
118
126
  fp.fnDecls.push(stmt);
119
127
  else if (ts.isClassDeclaration(stmt))
@@ -162,9 +170,9 @@ function dynamicProgramImportsOf(program, sf) {
162
170
  ts.walkPreorder(sf, (node) => {
163
171
  if (ts.isCallExpression(node) &&
164
172
  node.expression.kind === ts.SyntaxKind.ImportKeyword &&
165
- node.arguments[0] !== undefined &&
166
- ts.isStringLiteralLike(node.arguments[0])) {
167
- const dep = dynamicImportProgramTargetOf(program, sf, node.arguments[0].text);
173
+ node.arguments.nodes[0] !== undefined &&
174
+ ts.isStringLiteralLike(node.arguments.nodes[0])) {
175
+ const dep = dynamicImportProgramTargetOf(program, sf, node.arguments.nodes[0].text);
168
176
  if (dep && !seen.has(dep)) {
169
177
  seen.add(dep);
170
178
  out.push(dep);
@@ -233,7 +241,7 @@ export function collectProgram(lowerer, parts) {
233
241
  const computed = new Set();
234
242
  for (const fp of parts)
235
243
  for (const decl of fp.classDecls) {
236
- const heritage = decl.heritageClauses?.find((clause) => clause.token === ts.SyntaxKind.ExtendsKeyword)?.types[0]?.expression;
244
+ const heritage = decl.heritageClauses?.nodes.find((clause) => clause.token === ts.SyntaxKind.ExtendsKeyword)?.types?.nodes[0]?.expression;
237
245
  if (heritage && ts.isCallExpression(heritage))
238
246
  computed.add(decl);
239
247
  }
@@ -249,7 +257,7 @@ export function collectProgram(lowerer, parts) {
249
257
  for (const decl of fp.classDecls) {
250
258
  if (computed.has(decl))
251
259
  continue;
252
- const heritage = decl.heritageClauses?.find((clause) => clause.token === ts.SyntaxKind.ExtendsKeyword)?.types[0]?.expression;
260
+ const heritage = decl.heritageClauses?.nodes.find((clause) => clause.token === ts.SyntaxKind.ExtendsKeyword)?.types?.nodes[0]?.expression;
253
261
  const base = heritage && ts.isIdentifier(heritage) ? lowerer.resolveValueSymbol(heritage) : undefined;
254
262
  if (!base || !computedSymbols.has(base))
255
263
  continue;
@@ -286,6 +294,7 @@ export function collectProgram(lowerer, parts) {
286
294
  lowerer.collectGlobals(fp.sf, fp.topStmts);
287
295
  lowerer.collectNpmImports(parts);
288
296
  lowerer.collectJsonImports(parts);
297
+ collectJsonRequires(lowerer, parts);
289
298
  }
290
299
  finally {
291
300
  lowerer.diagSink = null;
@@ -296,6 +305,7 @@ export function collectProgram(lowerer, parts) {
296
305
  lowerer.collectGlobals(fp.sf, fp.topStmts);
297
306
  lowerer.collectNpmImports(parts);
298
307
  lowerer.collectJsonImports(parts);
308
+ collectJsonRequires(lowerer, parts);
299
309
  }
300
310
  for (const decl of computed) {
301
311
  const symbol = declSymbolOf(lowerer, decl);
@@ -304,7 +314,7 @@ export function collectProgram(lowerer, parts) {
304
314
  const previousSink = lowerer.diagSink;
305
315
  const deferred = [];
306
316
  lowerer.diagSink = deferred;
307
- const expression = decl.heritageClauses.find((clause) => clause.token === ts.SyntaxKind.ExtendsKeyword).types[0].expression;
317
+ const expression = decl.heritageClauses.nodes.find((clause) => clause.token === ts.SyntaxKind.ExtendsKeyword).types.nodes[0].expression;
308
318
  const context = newFnCtx(false, null, null, DYN);
309
319
  lowerer.fnStack.push(context);
310
320
  try {
@@ -376,11 +386,12 @@ export function collectProgram(lowerer, parts) {
376
386
  lowerer.collecting = wasCollecting;
377
387
  }
378
388
  markCycleEarlyBindings(lowerer);
389
+ markRequireEarlyBindings(lowerer);
379
390
  }
380
391
  export function collectNpmImports(lowerer, parts) {
381
392
  const entryPackageFile = entryPackageFilePredicate(lowerer.entry.fileName);
382
393
  for (const fp of parts) {
383
- for (const stmt of fp.sf.statements) {
394
+ for (const stmt of fp.sf.statements.nodes) {
384
395
  // NAMED re-exports from npm packages (`export { isUrl } from
385
396
  // "url-or-path"`): use the same package bindings as direct imports.
386
397
  const reexport = ts.isExportDeclaration(stmt) &&
@@ -389,7 +400,7 @@ export function collectNpmImports(lowerer, parts) {
389
400
  ts.isStringLiteral(stmt.moduleSpecifier) &&
390
401
  stmt.exportClause !== undefined &&
391
402
  ts.isNamedExports(stmt.exportClause) &&
392
- stmt.exportClause.elements.some((e) => !e.isTypeOnly) &&
403
+ stmt.exportClause.elements.nodes.some((e) => !e.isTypeOnly) &&
393
404
  !stmt.moduleSpecifier.text.startsWith("#")
394
405
  ? stmt.exportClause
395
406
  : null;
@@ -407,7 +418,7 @@ export function collectNpmImports(lowerer, parts) {
407
418
  if (clause?.namedBindings &&
408
419
  ts.isNamedImports(clause.namedBindings) &&
409
420
  !clause.name &&
410
- clause.namedBindings.elements.every((e) => e.isTypeOnly)) {
421
+ clause.namedBindings.elements.nodes.every((e) => e.isTypeOnly)) {
411
422
  continue;
412
423
  }
413
424
  const spec = specNode.text;
@@ -492,10 +503,10 @@ function collectDynamicImports(lowerer, sf) {
492
503
  ts.walkPreorder(sf, (node) => {
493
504
  if (ts.isCallExpression(node) &&
494
505
  node.expression.kind === ts.SyntaxKind.ImportKeyword &&
495
- node.arguments.length >= 1 &&
496
- node.arguments[0] !== undefined &&
497
- ts.isStringLiteralLike(node.arguments[0])) {
498
- const spec = node.arguments[0].text;
506
+ node.arguments.nodes.length >= 1 &&
507
+ node.arguments.nodes[0] !== undefined &&
508
+ ts.isStringLiteralLike(node.arguments.nodes[0])) {
509
+ const spec = node.arguments.nodes[0].text;
499
510
  if (lowerer.externalTypes.has(spec)) {
500
511
  return undefined;
501
512
  }
@@ -506,11 +517,9 @@ function collectDynamicImports(lowerer, sf) {
506
517
  // module has no runtime namespace object — the per-site fence
507
518
  // says so. Only non-declaration source files count; a sibling
508
519
  // .d.mts typing shipped JS is the EMBED case, not this one.
509
- const modSym = lowerer.checker.getSymbolAtLocation(node.arguments[0]);
520
+ const modSym = lowerer.checker.getSymbolAtLocation(node.arguments.nodes[0]);
510
521
  const ownModule = modSym !== undefined &&
511
- lowerer.checker
512
- .declarationsOf(modSym)
513
- .some((d) => ts.isSourceFile(d) && !d.isDeclarationFile);
522
+ modSym.declarations.some((d) => ts.isSourceFile(d) && !d.isDeclarationFile);
514
523
  const builtin = canonicalBuiltinModule(spec);
515
524
  const res = ownModule
516
525
  ? { kind: "program-module" }
@@ -540,7 +549,7 @@ function collectDynamicImports(lowerer, sf) {
540
549
  * and kept .json files out of the module order. */
541
550
  export function collectJsonImports(lowerer, parts) {
542
551
  for (const fp of parts) {
543
- for (const stmt of fp.sf.statements) {
552
+ for (const stmt of fp.sf.statements.nodes) {
544
553
  if (!ts.isImportDeclaration(stmt) || !ts.isStringLiteral(stmt.moduleSpecifier))
545
554
  continue;
546
555
  const clause = stmt.importClause;
@@ -550,7 +559,9 @@ export function collectJsonImports(lowerer, parts) {
550
559
  if (!nameSym || !(nameSym.flags & ts.SymbolFlags.Alias))
551
560
  continue;
552
561
  const target = lowerer.checker.getAliasedSymbol(nameSym);
553
- const jsonSf = lowerer.checker.declarationsOf(target)[0]?.getSourceFile();
562
+ const jsonSf = target.declarations.length === 0
563
+ ? undefined
564
+ : ts.getSourceFileOfNode(target.declarations[0]);
554
565
  if (!jsonSf || !jsonSf.fileName.endsWith(".json"))
555
566
  continue;
556
567
  try {
@@ -728,6 +739,14 @@ export function moduleArtifacts(lowerer, functions) {
728
739
  valueInstanceOfRoots.add(root.def.name);
729
740
  }
730
741
  break;
742
+ case "libCall":
743
+ // The general stream representation's child stdio read bridges
744
+ // through the runtime install that boxes both stream classes.
745
+ if (node.fn === "child.stdioStream") {
746
+ visitClass("%Readable");
747
+ visitClass("%Writable");
748
+ }
749
+ break;
731
750
  case "dynFrom":
732
751
  if (boxedChild(node.value.type)) {
733
752
  // A generic child can expose native stdio without importing stream.
@@ -919,7 +938,7 @@ function checkedGlobalReference(lowerer, expression) {
919
938
  !ts.isIdentifier(expression.expression))
920
939
  return false;
921
940
  const root = lowerer.checker.getSymbolAtLocation(expression.expression);
922
- const namespace = root && lowerer.checker.declarationsOf(root).some(ts.isNamespaceImport);
941
+ const namespace = root && root.declarations.some(ts.isNamespaceImport);
923
942
  return ((namespace || lowerer.cjsLocalModuleBindingOf(expression.expression)) &&
924
943
  lowerer.globalOf(expression.name)?.type.kind === "dyn");
925
944
  }
@@ -937,8 +956,8 @@ function jsDynHoldableInitializer(lowerer, init) {
937
956
  ts.isPropertyAccessExpression(e.expression) &&
938
957
  ["freeze", "seal", "preventExtensions"].includes(e.expression.name.text) &&
939
958
  lowerer.stdlibGlobalMember(e.expression, "Object") !== null &&
940
- e.arguments[0] &&
941
- ts.isArrayLiteralExpression(e.arguments[0]))
959
+ e.arguments.nodes[0] &&
960
+ ts.isArrayLiteralExpression(e.arguments.nodes[0]))
942
961
  return true;
943
962
  // The built-in Array constructor can create an evolving array whose
944
963
  // inferred element type has no native mapping. Its checked reference
@@ -1001,8 +1020,8 @@ function jsDynHoldableInitializer(lowerer, init) {
1001
1020
  return true;
1002
1021
  }
1003
1022
  if ((ts.isFunctionExpression(e) || ts.isArrowFunction(e)) &&
1004
- !e.typeParameters?.length &&
1005
- isJsSourceFile(e.getSourceFile()))
1023
+ !e.typeParameters?.nodes.length &&
1024
+ isJsSourceFile(ts.getSourceFileOfNode(e)))
1006
1025
  return true;
1007
1026
  if (ts.isIdentifier(e) || ts.isArrowFunction(e) || ts.isFunctionExpression(e)) {
1008
1027
  if (ts.isIdentifier(e)) {
@@ -1078,10 +1097,10 @@ export function collectGlobals(lowerer, sf, topStmts) {
1078
1097
  continue;
1079
1098
  if (symbol.flags & ts.SymbolFlags.Alias) {
1080
1099
  const target = lowerer.checker.getAliasedSymbol(symbol);
1081
- const vd = lowerer.checker.valueDeclarationOf(target);
1100
+ const vd = target.valueDeclaration;
1082
1101
  const mutableVar = vd !== undefined &&
1083
1102
  ts.isVariableDeclaration(vd) &&
1084
- !vd.getSourceFile().isDeclarationFile &&
1103
+ !ts.getSourceFileOfNode(vd).isDeclarationFile &&
1085
1104
  (ts.getCombinedNodeFlags(vd) & ts.NodeFlags.Const) === 0;
1086
1105
  // Immutable targets: alias plumbing — importers resolve to the
1087
1106
  // target's storage (the alias-resolved read IS the snapshot when
@@ -1104,7 +1123,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
1104
1123
  !isJsSourceFile(sf) &&
1105
1124
  inner.typeParameters === undefined &&
1106
1125
  (decoratorNodesOf(inner).length > 0 ||
1107
- inner.members.some((m) => decoratorNodesOf(m).length > 0)) &&
1126
+ inner.members.nodes.some((m) => decoratorNodesOf(m).length > 0)) &&
1108
1127
  guaranteedDecorationThrow(lowerer, inner) !== null) {
1109
1128
  continue;
1110
1129
  }
@@ -1191,7 +1210,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
1191
1210
  if (vG) {
1192
1211
  if (!vG.mutable) {
1193
1212
  lowerer.globalsBySymbol.set(symbol, vG);
1194
- for (const d of lowerer.checker.declarationsOf(symbol))
1213
+ for (const d of symbol.declarations)
1195
1214
  lowerer.globalsByDeclNode.set(d, vG);
1196
1215
  return;
1197
1216
  }
@@ -1202,7 +1221,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
1202
1221
  mutable: false,
1203
1222
  };
1204
1223
  lowerer.globalsBySymbol.set(symbol, g);
1205
- for (const d of lowerer.checker.declarationsOf(symbol))
1224
+ for (const d of symbol.declarations)
1206
1225
  lowerer.globalsByDeclNode.set(d, g);
1207
1226
  lowerer.globalsList.push(g);
1208
1227
  return;
@@ -1213,7 +1232,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
1213
1232
  lowerer.globalsBySymbol.set(symbol, g);
1214
1233
  // Importer aliases resolve to a DISTINCT late-bound symbol with
1215
1234
  // the same declaration — key the node too (globalOf's fallback).
1216
- for (const d of lowerer.checker.declarationsOf(symbol))
1235
+ for (const d of symbol.declarations)
1217
1236
  lowerer.globalsByDeclNode.set(d, g);
1218
1237
  lowerer.globalsList.push(g);
1219
1238
  }
@@ -1225,6 +1244,11 @@ export function collectGlobals(lowerer, sf, topStmts) {
1225
1244
  deferJsCollectionDiags(lowerer, sf, diagsBefore);
1226
1245
  }
1227
1246
  };
1247
+ // Export members assigned in VALUE position at the module's top
1248
+ // level (`const src = exports.src = []`) are exports too.
1249
+ for (const nested of nestedCjsExportAssignmentsOf(stmt, cjs?.expr)) {
1250
+ registerExport(nested.name, nested.name.text, nested.value);
1251
+ }
1228
1252
  if (cjs?.kind === "member" && ts.isIdentifier(cjs.name)) {
1229
1253
  // `exports.C = C` naming a CLASS declaration: alias plumbing —
1230
1254
  // no storage (a class VALUE global would fence for
@@ -1233,6 +1257,20 @@ export function collectGlobals(lowerer, sf, topStmts) {
1233
1257
  // applies unchanged.
1234
1258
  if (lowerer.cjsMemberExportClassSymbol(cjs.expr) !== null)
1235
1259
  continue;
1260
+ // A chain `exports.a = exports.b = value`: every member is an
1261
+ // export holding the chain's one value.
1262
+ const chain = cjsExportChainOf(cjs.expr);
1263
+ if (chain !== null) {
1264
+ for (const nameNode of chain.names)
1265
+ registerExport(nameNode, nameNode.text, chain.value);
1266
+ continue;
1267
+ }
1268
+ // A dropped tsc void-init preamble whose real assignment is such a
1269
+ // class alias registers nothing either: storage here would never
1270
+ // be assigned, and importers would read it instead of the class.
1271
+ const real = cjsVoidInitPreambleReals(cjs)?.get(cjs.name.text);
1272
+ if (real && lowerer.cjsMemberExportClassSymbol(real.expr) !== null)
1273
+ continue;
1236
1274
  registerExport(cjs.name, cjs.name.text, cjs.value);
1237
1275
  continue;
1238
1276
  }
@@ -1265,7 +1303,19 @@ export function collectGlobals(lowerer, sf, topStmts) {
1265
1303
  // statement lowering evaluates the call exactly once at its
1266
1304
  // source position and assigns that slot. Unmappable calls retain
1267
1305
  // the existing statement-level fence.
1268
- const factoryValued = ts.isCallExpression(rhs);
1306
+ // Any other computed value (`os.homedir || function () {…}`,
1307
+ // `cond ? a : b`, `new Registry()`, `ns.member`) is the same single
1308
+ // snapshot: Node stores whatever the expression produced. A
1309
+ // require() of a program module is not: the exporter re-exports
1310
+ // that module's exports, which requirers resolve through the
1311
+ // checker's alias (the statement lowers to the dep's %init).
1312
+ const factoryValued = !ts.isIdentifier(rhs) &&
1313
+ !ts.isClassExpression(rhs) &&
1314
+ !ts.isObjectLiteralExpression(rhs) &&
1315
+ !(requireSpecOf(rhs) !== null &&
1316
+ inlineProgramRequireOf(lowerer, rhs) !== null &&
1317
+ !sf.statements.nodes.some((s) => cjsExportAssignmentOf(s)?.kind === "member")) &&
1318
+ cjsExportTargetLiteral(rhs, sf) === null;
1269
1319
  if (cjsScalarLiteral(rhs) || fnValued || factoryValued) {
1270
1320
  const diagsBefore = lowerer.diags.length;
1271
1321
  try {
@@ -1296,7 +1346,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
1296
1346
  continue;
1297
1347
  }
1298
1348
  if (cjs?.kind === "table" && cjs.obj) {
1299
- for (const prop of cjs.obj.properties) {
1349
+ for (const prop of cjs.obj.properties.nodes) {
1300
1350
  if (ts.isShorthandPropertyAssignment(prop))
1301
1351
  continue; // alias plumbing
1302
1352
  if (ts.isPropertyAssignment(prop) && ts.isIdentifier(prop.initializer))
@@ -1304,6 +1354,11 @@ export function collectGlobals(lowerer, sf, topStmts) {
1304
1354
  if (ts.isPropertyAssignment(prop) && ts.isIdentifier(prop.name)) {
1305
1355
  registerExport(prop.name, prop.name.text, prop.initializer);
1306
1356
  }
1357
+ // A METHOD entry (`module.exports = { f(x) { … } }`) is an
1358
+ // expression-valued export whose value is the method's function.
1359
+ const method = cjsTableMethodEntry(prop);
1360
+ if (method !== null)
1361
+ registerExport(method.name, method.name.text, method.name);
1307
1362
  // other property forms fence in the statement lowering
1308
1363
  }
1309
1364
  continue;
@@ -1328,10 +1383,10 @@ export function collectGlobals(lowerer, sf, topStmts) {
1328
1383
  lowerer.globalsBySymbol.has(aliasSym))
1329
1384
  continue;
1330
1385
  const target = lowerer.checker.getAliasedSymbol(aliasSym);
1331
- const vd = lowerer.checker.valueDeclarationOf(target);
1386
+ const vd = target.valueDeclaration;
1332
1387
  const mutableVar = vd !== undefined &&
1333
1388
  ts.isVariableDeclaration(vd) &&
1334
- !vd.getSourceFile().isDeclarationFile &&
1389
+ !ts.getSourceFileOfNode(vd).isDeclarationFile &&
1335
1390
  (ts.getCombinedNodeFlags(vd) & ts.NodeFlags.Const) === 0;
1336
1391
  if (!mutableVar)
1337
1392
  continue;
@@ -1344,7 +1399,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
1344
1399
  if (type.kind === "void")
1345
1400
  lowerer.badType(stmt.name, lowerer.typeOf(stmt.name));
1346
1401
  const g = {
1347
- id: `%g.${tag}${nsPathPrefix(stmt)}%alias.${stmt.name.text}%${stmt.getStart()}`,
1402
+ id: `%g.${tag}${nsPathPrefix(stmt)}%alias.${stmt.name.text}%${ts.tokenStartOfNode(stmt)}`,
1348
1403
  name: stmt.name.text,
1349
1404
  type,
1350
1405
  mutable: false,
@@ -1369,6 +1424,14 @@ export function collectGlobals(lowerer, sf, topStmts) {
1369
1424
  collectNestedVarGlobals(lowerer, sf, stmt, tag);
1370
1425
  continue;
1371
1426
  }
1427
+ // tsc's interop bindings and its then-dead helper declarations own no
1428
+ // storage either (cjs-tsc-interop.ts).
1429
+ if (isJsSourceFile(sf) &&
1430
+ (isDeadTscHelperDecl(lowerer, stmt) ||
1431
+ (stmt.declarationList.declarations.nodes.length === 1 &&
1432
+ tscInteropBindingOfDecl(lowerer, stmt.declarationList.declarations.nodes[0]) !== null))) {
1433
+ continue;
1434
+ }
1372
1435
  // CommonJS require declarations are alias plumbing (preflight owns
1373
1436
  // the module edges; resolveValueSymbol routes reads through to the
1374
1437
  // exporter's declarations): no storage, and the statement lowers to
@@ -1378,12 +1441,45 @@ export function collectGlobals(lowerer, sf, topStmts) {
1378
1441
  // binding lower via the process surface.
1379
1442
  if (isRequireStatement(stmt) &&
1380
1443
  !(ts.isVariableStatement(stmt) &&
1381
- stmt.declarationList.declarations.some((decl) => isNativeFfiRequire(lowerer, decl.initializer)))) {
1444
+ stmt.declarationList.declarations.nodes.some((decl) => isNativeFfiRequire(lowerer, decl.initializer) || isJsonRequireDecl(lowerer, decl)))) {
1382
1445
  if (ts.isVariableStatement(stmt) && (stmt.declarationList.flags & ts.NodeFlags.Const) !== 0) {
1383
- for (const decl of stmt.declarationList.declarations) {
1446
+ for (const decl of stmt.declarationList.declarations.nodes) {
1384
1447
  stdlibGlobalAliasDecl(lowerer, decl.name, decl.initializer);
1385
1448
  }
1386
1449
  }
1450
+ // `const { codes: { ERR_X } } = require("./errors")`: the outer
1451
+ // keys stay alias plumbing, but a nested pattern destructures the
1452
+ // export's value at the require, so its bindings own storage like
1453
+ // any destructured declaration (lowerVarDeclarator assigns them).
1454
+ if (ts.isVariableStatement(stmt)) {
1455
+ const isLetList = (stmt.declarationList.flags & ts.NodeFlags.Let) !== 0 ||
1456
+ (stmt.declarationList.flags & ts.NodeFlags.BlockScoped) === 0;
1457
+ for (const decl of stmt.declarationList.declarations.nodes) {
1458
+ for (const element of requireNestedPatternsOf(decl)) {
1459
+ for (const nameNode of boundIdentifiersOf(element.name)) {
1460
+ const symbol = lowerer.checker.getSymbolAtLocation(nameNode);
1461
+ if (!symbol || lowerer.globalsBySymbol.has(symbol))
1462
+ continue;
1463
+ const mapped = lowerer.mapTypeOf(lowerer.typeOf(nameNode));
1464
+ const type = mapped && mapped.kind !== "void" ? mapped : DYN;
1465
+ const g = {
1466
+ id: `%g.${tag}${nameNode.text}`,
1467
+ name: nameNode.text,
1468
+ type,
1469
+ mutable: isLetList,
1470
+ source: bindingSource(nameNode),
1471
+ ...((type.kind === "func" || type.kind === "dyn") && !isVarDeclared(decl)
1472
+ ? { tdz: true }
1473
+ : {}),
1474
+ };
1475
+ lowerer.globalsBySymbol.set(symbol, g);
1476
+ lowerer.globalsList.push(g);
1477
+ if (isVarDeclared(decl))
1478
+ noteVarGlobalEntryInit(lowerer, sf, g);
1479
+ }
1480
+ }
1481
+ }
1482
+ }
1387
1483
  continue;
1388
1484
  }
1389
1485
  // `declare const __VERSION__: string` — AMBIENT: no storage exists
@@ -1391,7 +1487,8 @@ export function collectGlobals(lowerer, sf, topStmts) {
1391
1487
  // exactly like running the source under Node). Reads lower to
1392
1488
  // Node's ReferenceError at the access (lower-exprs), and the
1393
1489
  // statement itself lowers to nothing.
1394
- if (ts.getCombinedModifierFlags(stmt.declarationList.declarations[0]) & ts.ModifierFlags.Ambient)
1490
+ if (ts.getCombinedModifierFlags(stmt.declarationList.declarations.nodes[0]) &
1491
+ ts.ModifierFlags.Ambient)
1395
1492
  continue;
1396
1493
  const list = stmt.declarationList;
1397
1494
  if ((list.flags & ts.NodeFlags.Using) !== 0)
@@ -1405,8 +1502,8 @@ export function collectGlobals(lowerer, sf, topStmts) {
1405
1502
  // (`%g.e.A%B.x`), so `namespace A { export const x }` and a
1406
1503
  // top-level `const x` never collide; non-exported members add the
1407
1504
  // declaring block's position (block-local bindings).
1408
- const nsPrefix = nsPathPrefix(stmt, list.declarations[0]);
1409
- for (const decl of list.declarations) {
1505
+ const nsPrefix = nsPathPrefix(stmt, list.declarations.nodes[0]);
1506
+ for (const decl of list.declarations.nodes) {
1410
1507
  // --provenance-sources: an elided pure-annotated dead const in a
1411
1508
  // fetched source module registers no global (the statement
1412
1509
  // lowering emits nothing by the same test — see
@@ -1532,6 +1629,8 @@ export function collectGlobals(lowerer, sf, topStmts) {
1532
1629
  continue;
1533
1630
  if (isConst && registerBuiltinCallableAlias(lowerer, decl.name, decl.initializer))
1534
1631
  continue;
1632
+ if (registerBuiltinClassAlias(lowerer, decl.name, decl.initializer))
1633
+ continue;
1535
1634
  // `const f = (x) => ...` at file scope of an npm-static JS file
1536
1635
  // whose params are implicit-any: the implicit-monomorphization
1537
1636
  // twin of the generic binding above — no global exists; calls and
@@ -1644,6 +1743,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
1644
1743
  // stdlibGlobalAliasDecl; the statement lowering skips it by the
1645
1744
  // same test).
1646
1745
  const stableStdlibAlias = isConst ||
1746
+ stdlibBufferVarAlias(lowerer, decl) ||
1647
1747
  ((list.flags & ts.NodeFlags.Let) !== 0 &&
1648
1748
  ts.isIdentifier(decl.name) &&
1649
1749
  stdlibGlobalAliasNameOf(lowerer, decl.initializer) !== null &&
@@ -1667,7 +1767,8 @@ export function collectGlobals(lowerer, sf, topStmts) {
1667
1767
  decl.initializer &&
1668
1768
  !decl.type &&
1669
1769
  !hasJsTypeAnnotation(decl) &&
1670
- !lowerer.mapTypeOf(lowerer.typeOf(nameNode))) {
1770
+ (!lowerer.mapTypeOf(lowerer.typeOf(nameNode)) ||
1771
+ isWebCryptoMemberType(lowerer, lowerer.typeOf(nameNode)))) {
1671
1772
  const symbol = lowerer.checker.getSymbolAtLocation(nameNode);
1672
1773
  if (symbol && !lowerer.globalsBySymbol.has(symbol)) {
1673
1774
  const g = {
@@ -1717,6 +1818,31 @@ export function collectGlobals(lowerer, sf, topStmts) {
1717
1818
  }
1718
1819
  continue;
1719
1820
  }
1821
+ // A file-scope binding of an assertion of the global object
1822
+ // (`const state = globalThis as { [KEY]?: State }`): the binding
1823
+ // holds that object, so writes through it reach the object other
1824
+ // modules read (assertion-identity.ts).
1825
+ const asserted = decl.initializer
1826
+ ? keptIdentityAssertion(lowerer, decl.initializer)
1827
+ : undefined;
1828
+ if (nameNode === decl.name && !decl.type && asserted) {
1829
+ const symbol = lowerer.checker.getSymbolAtLocation(nameNode);
1830
+ if (symbol && !lowerer.globalsBySymbol.has(symbol)) {
1831
+ const g = {
1832
+ id: `%g.${tag}${nsPrefix}${nameNode.text}`,
1833
+ name: nameNode.text,
1834
+ type: DYN,
1835
+ mutable: isLet,
1836
+ source: bindingSource(nameNode),
1837
+ ...(!isVarDeclared(decl) ? { tdz: true } : {}),
1838
+ };
1839
+ lowerer.globalsBySymbol.set(symbol, g);
1840
+ lowerer.globalsList.push(g);
1841
+ if (isVarDeclared(decl))
1842
+ noteVarGlobalEntryInit(lowerer, sf, g);
1843
+ }
1844
+ continue;
1845
+ }
1720
1846
  // A JS file-scope evolving ARRAY (`const mustCallChecks = [];`
1721
1847
  // — test/common's exit-accounting ledger): the strict type
1722
1848
  // (any[]) has no mapping, but the VALUE is the dyn array the
@@ -1755,7 +1881,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
1755
1881
  nameNode === decl.name &&
1756
1882
  decl.initializer &&
1757
1883
  ts.isObjectLiteralExpression(decl.initializer) &&
1758
- decl.initializer.properties.some((p) => !ts.isSpreadAssignment(p) &&
1884
+ decl.initializer.properties.nodes.some((p) => !ts.isSpreadAssignment(p) &&
1759
1885
  (ts.isMethodDeclaration(p) ||
1760
1886
  ts.isAccessor(p) ||
1761
1887
  ts.isComputedPropertyName(p.name) ||
@@ -1798,7 +1924,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
1798
1924
  nameNode === decl.name &&
1799
1925
  decl.initializer !== undefined &&
1800
1926
  ts.isObjectLiteralExpression(decl.initializer) &&
1801
- decl.initializer.properties.every((p) => {
1927
+ decl.initializer.properties.nodes.every((p) => {
1802
1928
  if (ts.isSpreadAssignment(p)) {
1803
1929
  return (ts.isIdentifier(p.expression) &&
1804
1930
  lowerer.globalOf(p.expression)?.type.kind === "dyn");
@@ -1824,6 +1950,35 @@ export function collectGlobals(lowerer, sf, topStmts) {
1824
1950
  }
1825
1951
  continue;
1826
1952
  }
1953
+ // A JS file-scope ARRAY LITERAL holding an existing checked-dynamic
1954
+ // object (a file-scope object literal binding above, directly or
1955
+ // in a nested literal): the literal builds as a checked-dynamic
1956
+ // array (lowerArrayLiteral), and the binding holds it, so the
1957
+ // element keeps its identity.
1958
+ if (isJsSourceFile(sf) &&
1959
+ ts.isIdentifier(decl.name) &&
1960
+ nameNode === decl.name &&
1961
+ !decl.type &&
1962
+ !hasJsTypeAnnotation(decl) &&
1963
+ decl.initializer !== undefined &&
1964
+ ts.isArrayLiteralExpression(decl.initializer) &&
1965
+ jsHoldsDynObject(lowerer, decl.initializer)) {
1966
+ const symbol = lowerer.checker.getSymbolAtLocation(nameNode);
1967
+ if (symbol && !lowerer.globalsBySymbol.has(symbol)) {
1968
+ const g = {
1969
+ id: `%g.${tag}${nsPrefix}${nameNode.text}`,
1970
+ name: nameNode.text,
1971
+ type: DYN,
1972
+ mutable: isLet,
1973
+ source: bindingSource(nameNode),
1974
+ };
1975
+ lowerer.globalsBySymbol.set(symbol, g);
1976
+ lowerer.globalsList.push(g);
1977
+ if (isVarDeclared(decl))
1978
+ noteVarGlobalEntryInit(lowerer, sf, g);
1979
+ }
1980
+ continue;
1981
+ }
1827
1982
  // A JS file-scope ANY-RESIDUE binding whose VALUE provably
1828
1983
  // lives in the checked-dynamic tree: no initializer (`let catchWarning;` —
1829
1984
  // test/common's warning ledger), a unit initializer (`let
@@ -1880,7 +2035,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
1880
2035
  : null;
1881
2036
  const generic = member && lowerer.genericFnOf(member);
1882
2037
  const fallback = (ts.isArrowFunction(initializer) || ts.isFunctionExpression(initializer)) &&
1883
- !initializer.typeParameters?.length
2038
+ !initializer.typeParameters?.nodes.length
1884
2039
  ? lowerer.lambdaSignature(initializer).funcType
1885
2040
  : member && lowerer.globalOf(member)?.type.kind === "dyn"
1886
2041
  ? DYN
@@ -1942,12 +2097,12 @@ export function collectGlobals(lowerer, sf, topStmts) {
1942
2097
  ts.isCallExpression(decl.initializer)
1943
2098
  ? lowerer.checker.getResolvedSignature(decl.initializer)
1944
2099
  : undefined;
1945
- const callDeclaration = callSignature && lowerer.checker.signatureDeclaration(callSignature);
1946
- const callType = callDeclaration && isJsSourceFile(callDeclaration.getSourceFile())
2100
+ const callDeclaration = callSignature && callSignature.declaration;
2101
+ const callType = callDeclaration && isJsSourceFile(ts.getSourceFileOfNode(callDeclaration))
1947
2102
  ? lowerer.mapTypeOf(lowerer.typeOf(nameNode))
1948
2103
  : null;
1949
2104
  const inferredJsCall = callDeclaration &&
1950
- isJsSourceFile(callDeclaration.getSourceFile()) &&
2105
+ isJsSourceFile(ts.getSourceFileOfNode(callDeclaration)) &&
1951
2106
  (!callType ||
1952
2107
  (unannotatedCall &&
1953
2108
  callType.kind === "union" &&
@@ -1963,7 +2118,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
1963
2118
  !hasJsTypeAnnotation(decl) &&
1964
2119
  decl.initializer &&
1965
2120
  (ts.isArrowFunction(decl.initializer) || ts.isFunctionExpression(decl.initializer)) &&
1966
- !decl.initializer.typeParameters?.length) {
2121
+ !decl.initializer.typeParameters?.nodes.length) {
1967
2122
  type = lowerer.lambdaSignature(decl.initializer).funcType;
1968
2123
  }
1969
2124
  // Namespace aliases of inferred helpers carry the helper's
@@ -2023,7 +2178,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
2023
2178
  ts.isCallExpression(decl.initializer) &&
2024
2179
  ts.isPropertyAccessExpression(decl.initializer.expression) &&
2025
2180
  lowerer.stdlibGlobalMember(decl.initializer.expression, "Object") === "assign" &&
2026
- decl.initializer.arguments.some((arg) => ts.isIdentifier(arg) && lowerer.globalOf(arg)?.type.kind === "dyn")) {
2181
+ decl.initializer.arguments.nodes.some((arg) => ts.isIdentifier(arg) && lowerer.globalOf(arg)?.type.kind === "dyn")) {
2027
2182
  type = DYN;
2028
2183
  }
2029
2184
  // Runtime-arity JavaScript callables can be returned by a
@@ -2169,6 +2324,11 @@ export function collectGlobals(lowerer, sf, topStmts) {
2169
2324
  };
2170
2325
  lowerer.globalsBySymbol.set(symbol, g);
2171
2326
  lowerer.globalsList.push(g);
2327
+ // `let f: T;` initializes the binding (to undefined) where the
2328
+ // declaration runs: later writes are ordinary stores, which the
2329
+ // pointer guard alone would refuse (markCycleEarlyBindings).
2330
+ if (g.tdz && !decl.initializer)
2331
+ lowerer.uninitializedLexicalGlobals.set(g.id, { name: nameNode, module: sf, symbol });
2172
2332
  // Mutable checked-dynamic LET globals ride the same entry
2173
2333
  // init: a closure called above the declaration statement
2174
2334
  // reads the dyn undefined instead of faulting on NULL — the
@@ -2248,7 +2408,7 @@ function collectNestedVarGlobals(lowerer, sf, stmt, tag) {
2248
2408
  return undefined;
2249
2409
  });
2250
2410
  for (const list of lists) {
2251
- for (const decl of list.declarations) {
2411
+ for (const decl of list.declarations.nodes) {
2252
2412
  for (const nameNode of boundIdentifiersOf(decl.name)) {
2253
2413
  const diagsBefore = lowerer.diags.length;
2254
2414
  try {
@@ -2320,7 +2480,7 @@ export function declSymbolOf(lowerer, decl) {
2320
2480
  ts.getModifiers(decl)?.some((m) => m.kind === ts.SyntaxKind.DefaultKeyword) === true;
2321
2481
  if (!isDefault)
2322
2482
  return undefined;
2323
- const sym = defaultExportSymbolOf(lowerer, decl.getSourceFile());
2483
+ const sym = defaultExportSymbolOf(lowerer, ts.getSourceFileOfNode(decl));
2324
2484
  return sym ?? undefined;
2325
2485
  }
2326
2486
  /** `export default <expr>` in a module's init body: the first (and only)
@@ -2337,7 +2497,7 @@ export function declSymbolOf(lowerer, decl) {
2337
2497
  * expression so the expression's OWN diagnostic wins when it has one,
2338
2498
  * then poisons. */
2339
2499
  export function lowerDefaultExport(lowerer, stmt) {
2340
- const symbol = defaultExportSymbolOf(lowerer, stmt.getSourceFile());
2500
+ const symbol = defaultExportSymbolOf(lowerer, ts.getSourceFileOfNode(stmt));
2341
2501
  if (symbol && symbol.flags & ts.SymbolFlags.Alias && !lowerer.globalsBySymbol.has(symbol))
2342
2502
  return null;
2343
2503
  const g = symbol ? lowerer.globalsBySymbol.get(symbol) : undefined;
@@ -2350,10 +2510,10 @@ export function lowerDefaultExport(lowerer, stmt) {
2350
2510
  while (ts.isParenthesizedExpression(inner))
2351
2511
  inner = inner.expression;
2352
2512
  if (ts.isClassExpression(inner) &&
2353
- !isJsSourceFile(stmt.getSourceFile()) &&
2513
+ !isJsSourceFile(ts.getSourceFileOfNode(stmt)) &&
2354
2514
  inner.typeParameters === undefined &&
2355
2515
  (decoratorNodesOf(inner).length > 0 ||
2356
- inner.members.some((m) => decoratorNodesOf(m).length > 0)) &&
2516
+ inner.members.nodes.some((m) => decoratorNodesOf(m).length > 0)) &&
2357
2517
  guaranteedDecorationThrow(lowerer, inner) !== null) {
2358
2518
  return { kind: "exprStmt", expr: lowerer.lowerExpr(stmt.expression), loc: locOf(stmt) };
2359
2519
  }
@@ -2392,6 +2552,19 @@ export function lowerFileInit(lowerer, sf, stmts, name) {
2392
2552
  loc: loc0,
2393
2553
  });
2394
2554
  }
2555
+ if (sf === lowerer.entry)
2556
+ header.push(...lowerer.punycodeLinkWarning());
2557
+ // Top-level `this` of a CommonJS module: its object exists before the
2558
+ // module's first statement (lowerCjsTopLevelThis).
2559
+ const exportsThis = lowerer.cjsExportsThis.get(sf);
2560
+ if (exportsThis) {
2561
+ header.push({
2562
+ kind: "assign",
2563
+ localId: exportsThis.id,
2564
+ value: { kind: "dynObjLit", fields: [], type: DYN, loc: loc0 },
2565
+ loc: loc0,
2566
+ });
2567
+ }
2395
2568
  for (const { stmt, dep } of orderedImportsOf(lowerer.program, sf)) {
2396
2569
  const npm = lowerer.npmInitActions.get(sf)?.get(stmt);
2397
2570
  if (npm !== undefined && npm.length > 0) {
@@ -2446,6 +2619,12 @@ export function lowerFileInit(lowerer, sf, stmts, name) {
2446
2619
  }
2447
2620
  else {
2448
2621
  header.push({ kind: "exprStmt", expr: call, loc });
2622
+ // An ES-module importer links a CommonJS dependency: Node
2623
+ // copies its lexer-visible exports here.
2624
+ if ((ts.isImportDeclaration(stmt) || ts.isExportDeclaration(stmt)) &&
2625
+ !isCjsJsFile(sf, lowerer.program) &&
2626
+ isCjsJsFile(dep, lowerer.program))
2627
+ header.push(...cjsAccessorSnapshotStores(lowerer, dep, loc));
2449
2628
  }
2450
2629
  }
2451
2630
  }
@@ -2501,12 +2680,27 @@ export function lowerFileInit(lowerer, sf, stmts, name) {
2501
2680
  // a function called above the declaration reads `undefined`, exactly
2502
2681
  // Node); checked-dynamic var globals hold the dyn undefined the same
2503
2682
  // way. After the guard: a cache-hit revisit must not reset them.
2683
+ // A union slot the body retypes checked-dynamic (lowerVarDecl: a
2684
+ // JavaScript var initialized with an existing checked-dynamic object)
2685
+ // gets the dyn undefined once the body has lowered.
2686
+ const unionEntryInits = [];
2504
2687
  for (const g of lowerer.varGlobalEntryInits.get(sf) ?? []) {
2505
2688
  if (g.type.kind !== "union" && g.type.kind !== "dyn")
2506
2689
  continue;
2507
2690
  const wrapped = g.type.kind === "dyn" ? dynUndefinedExpr(loc0) : lowerer.unassignedSlotInit(g.type, loc0);
2508
2691
  if (wrapped) {
2509
- header.push({ kind: "assign", localId: g.id, value: wrapped, loc: loc0 });
2692
+ if (g.type.kind === "union")
2693
+ unionEntryInits.push({ at: header.length, g });
2694
+ // A let global whose early reads are checked (initFlag) only
2695
+ // gets its storage filled here: this is not the source write, so
2696
+ // it must neither run the TDZ check nor set the flag.
2697
+ header.push({
2698
+ kind: "assign",
2699
+ localId: g.id,
2700
+ value: wrapped,
2701
+ ...(g.initFlag !== undefined ? { initializes: true } : {}),
2702
+ loc: loc0,
2703
+ });
2510
2704
  }
2511
2705
  }
2512
2706
  const prelude = lowerer.jsonInitActions.get(sf) ?? [];
@@ -2526,7 +2720,7 @@ export function lowerFileInit(lowerer, sf, stmts, name) {
2526
2720
  c.decl &&
2527
2721
  ts.isClassDeclaration(c.decl) &&
2528
2722
  !c.mixinInstance &&
2529
- c.decl.getSourceFile() === sf &&
2723
+ ts.getSourceFileOfNode(c.decl) === sf &&
2530
2724
  (lowerer.classInitFlags.has(c.def.name) ||
2531
2725
  c.callableBase !== undefined ||
2532
2726
  c.def.baseValueGlobal !== undefined ||
@@ -2534,7 +2728,7 @@ export function lowerFileInit(lowerer, sf, stmts, name) {
2534
2728
  c.staticFields.length > 0 ||
2535
2729
  (c.staticBlocks?.length ?? 0) > 0 ||
2536
2730
  c.classDecorators !== undefined))
2537
- .map((c) => ({ pos: c.decl.getStart(), info: c }));
2731
+ .map((c) => ({ pos: ts.tokenStartOfNode(c.decl), info: c }));
2538
2732
  // Statics-bearing MIXIN instantiations whose call evaluates in THIS
2539
2733
  // file: their declaration-time code runs when the call does — the
2540
2734
  // top-level statement lower-mixins recorded. Insertion order is
@@ -2555,7 +2749,7 @@ export function lowerFileInit(lowerer, sf, stmts, name) {
2555
2749
  // anything the statement's lowering emits. Hoisted class
2556
2750
  // declarations never share a kept statement's start, so `<=`
2557
2751
  // changes nothing for them.
2558
- while (at < statics.length && statics[at].pos <= stmt.getStart()) {
2752
+ while (at < statics.length && statics[at].pos <= ts.tokenStartOfNode(stmt)) {
2559
2753
  body.push(...withClassInitFlag(lowerer, statics[at].info, lowerer.lowerStaticFieldInits(statics[at].info)));
2560
2754
  at++;
2561
2755
  }
@@ -2574,6 +2768,17 @@ export function lowerFileInit(lowerer, sf, stmts, name) {
2574
2768
  body.push(...withClassInitFlag(lowerer, statics[at].info, lowerer.lowerStaticFieldInits(statics[at].info)));
2575
2769
  at++;
2576
2770
  }
2771
+ for (const { at, g } of unionEntryInits) {
2772
+ if (g.type.kind !== "dyn")
2773
+ continue;
2774
+ body[at] = {
2775
+ kind: "assign",
2776
+ localId: g.id,
2777
+ value: dynUndefinedExpr(loc0),
2778
+ ...(g.initFlag !== undefined ? { initializes: true } : {}),
2779
+ loc: loc0,
2780
+ };
2781
+ }
2577
2782
  const moduleRef = cjsModuleRef(lowerer, sf);
2578
2783
  if (moduleRef !== null) {
2579
2784
  const guardedBody = body.splice(guardId !== undefined ? 2 : 0);
@@ -2726,6 +2931,7 @@ function rememberEvaluationError(lowerer, guardId, body, loc) {
2726
2931
  export function buildMain(lowerer) {
2727
2932
  const loc = { file: lowerer.entry.fileName, start: 0, end: 0 };
2728
2933
  const body = [
2934
+ ...lowerer.mainPrelude,
2729
2935
  ...cjsModuleRegistryPrelude(lowerer, loc),
2730
2936
  ...handleEventReaderPrelude(lowerer, loc),
2731
2937
  ];