@scriptc/compiler 0.3.6 → 0.4.1

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 (1358) hide show
  1. package/ambient/scriptc-node-fallback.d.ts +717 -55
  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 +20 -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 +9 -0
  14. package/dist/backend/library-pack.js.map +1 -1
  15. package/dist/backend/link-plan-core.d.ts +2 -0
  16. package/dist/backend/link-plan-core.js +2 -0
  17. package/dist/backend/link-plan-core.js.map +1 -1
  18. package/dist/backend/link-plan.d.ts +1 -0
  19. package/dist/backend/link-plan.js +1 -0
  20. package/dist/backend/link-plan.js.map +1 -1
  21. package/dist/backend/llvm/alloc.d.ts +41 -4
  22. package/dist/backend/llvm/alloc.js +138 -7
  23. package/dist/backend/llvm/alloc.js.map +1 -1
  24. package/dist/backend/llvm/alloc.test.js +30 -1
  25. package/dist/backend/llvm/alloc.test.js.map +1 -1
  26. package/dist/backend/llvm/appended-array-literals.test.js +1 -1
  27. package/dist/backend/llvm/array-search.js +3 -1
  28. package/dist/backend/llvm/array-search.js.map +1 -1
  29. package/dist/backend/llvm/array-search.test.js +1 -1
  30. package/dist/backend/llvm/blocks.d.ts +8 -0
  31. package/dist/backend/llvm/blocks.js +43 -1
  32. package/dist/backend/llvm/blocks.js.map +1 -1
  33. package/dist/backend/llvm/blocks.test.js +22 -1
  34. package/dist/backend/llvm/blocks.test.js.map +1 -1
  35. package/dist/backend/llvm/byte-numbers.js +15 -5
  36. package/dist/backend/llvm/byte-numbers.js.map +1 -1
  37. package/dist/backend/llvm/bytes-alias.d.ts +14 -0
  38. package/dist/backend/llvm/bytes-alias.js +20 -0
  39. package/dist/backend/llvm/bytes-alias.js.map +1 -0
  40. package/dist/backend/llvm/bytes-loop-versions.d.ts +86 -0
  41. package/dist/backend/llvm/bytes-loop-versions.js +506 -0
  42. package/dist/backend/llvm/bytes-loop-versions.js.map +1 -0
  43. package/dist/backend/llvm/bytes-loop-versions.test.d.ts +1 -0
  44. package/dist/backend/llvm/bytes-loop-versions.test.js +244 -0
  45. package/dist/backend/llvm/bytes-loop-versions.test.js.map +1 -0
  46. package/dist/backend/llvm/call-lifetimes.js +50 -1
  47. package/dist/backend/llvm/call-lifetimes.js.map +1 -1
  48. package/dist/backend/llvm/call-lifetimes.test.js +34 -0
  49. package/dist/backend/llvm/call-lifetimes.test.js.map +1 -1
  50. package/dist/backend/llvm/checked-narrows.test.js +1 -1
  51. package/dist/backend/llvm/checked-value-lifetimes.js +4 -1
  52. package/dist/backend/llvm/checked-value-lifetimes.js.map +1 -1
  53. package/dist/backend/llvm/classes.d.ts +38 -1
  54. package/dist/backend/llvm/classes.js +185 -35
  55. package/dist/backend/llvm/classes.js.map +1 -1
  56. package/dist/backend/llvm/classes.test.js +79 -17
  57. package/dist/backend/llvm/classes.test.js.map +1 -1
  58. package/dist/backend/llvm/common.d.ts +21 -3
  59. package/dist/backend/llvm/common.js +51 -3
  60. package/dist/backend/llvm/common.js.map +1 -1
  61. package/dist/backend/llvm/constant-callbacks.d.ts +5 -1
  62. package/dist/backend/llvm/constant-callbacks.js +55 -12
  63. package/dist/backend/llvm/constant-callbacks.js.map +1 -1
  64. package/dist/backend/llvm/constant-callbacks.test.js +88 -1
  65. package/dist/backend/llvm/constant-callbacks.test.js.map +1 -1
  66. package/dist/backend/llvm/counted-loops.d.ts +4 -0
  67. package/dist/backend/llvm/counted-loops.js +37 -0
  68. package/dist/backend/llvm/counted-loops.js.map +1 -1
  69. package/dist/backend/llvm/dense-array-access.d.ts +15 -4
  70. package/dist/backend/llvm/dense-array-access.js +125 -44
  71. package/dist/backend/llvm/dense-array-access.js.map +1 -1
  72. package/dist/backend/llvm/dense-array-access.test.js +63 -3
  73. package/dist/backend/llvm/dense-array-access.test.js.map +1 -1
  74. package/dist/backend/llvm/dense-array-loops.d.ts +51 -0
  75. package/dist/backend/llvm/dense-array-loops.js +162 -0
  76. package/dist/backend/llvm/dense-array-loops.js.map +1 -0
  77. package/dist/backend/llvm/dense-array-loops.test.d.ts +1 -0
  78. package/dist/backend/llvm/dense-array-loops.test.js +128 -0
  79. package/dist/backend/llvm/dense-array-loops.test.js.map +1 -0
  80. package/dist/backend/llvm/dyn-handle-tags.test.d.ts +1 -0
  81. package/dist/backend/llvm/dyn-handle-tags.test.js +38 -0
  82. package/dist/backend/llvm/dyn-handle-tags.test.js.map +1 -0
  83. package/dist/backend/llvm/dyn.d.ts +37 -4
  84. package/dist/backend/llvm/dyn.js +354 -183
  85. package/dist/backend/llvm/dyn.js.map +1 -1
  86. package/dist/backend/llvm/emit-function.d.ts +64 -0
  87. package/dist/backend/llvm/emit-function.js +1193 -0
  88. package/dist/backend/llvm/emit-function.js.map +1 -0
  89. package/dist/backend/llvm/emit-module.d.ts +24 -0
  90. package/dist/backend/llvm/emit-module.js +1557 -0
  91. package/dist/backend/llvm/emit-module.js.map +1 -0
  92. package/dist/backend/llvm/emit-statements.d.ts +59 -0
  93. package/dist/backend/llvm/emit-statements.js +2041 -0
  94. package/dist/backend/llvm/emit-statements.js.map +1 -0
  95. package/dist/backend/llvm/emitter.d.ts +566 -291
  96. package/dist/backend/llvm/emitter.js +728 -4671
  97. package/dist/backend/llvm/emitter.js.map +1 -1
  98. package/dist/backend/llvm/emitter.test.js +57 -3
  99. package/dist/backend/llvm/emitter.test.js.map +1 -1
  100. package/dist/backend/llvm/expr-async.js +73 -46
  101. package/dist/backend/llvm/expr-async.js.map +1 -1
  102. package/dist/backend/llvm/expr-async.test.js +1 -1
  103. package/dist/backend/llvm/expr-bytes.d.ts +2 -0
  104. package/dist/backend/llvm/expr-bytes.js +76 -29
  105. package/dist/backend/llvm/expr-bytes.js.map +1 -1
  106. package/dist/backend/llvm/expr-callbacks.d.ts +6 -2
  107. package/dist/backend/llvm/expr-callbacks.js +48 -11
  108. package/dist/backend/llvm/expr-callbacks.js.map +1 -1
  109. package/dist/backend/llvm/expr-calls.d.ts +1 -1
  110. package/dist/backend/llvm/expr-calls.js +87 -56
  111. package/dist/backend/llvm/expr-calls.js.map +1 -1
  112. package/dist/backend/llvm/expr-calls.test.js +1 -1
  113. package/dist/backend/llvm/expr-containers.js +45 -24
  114. package/dist/backend/llvm/expr-containers.js.map +1 -1
  115. package/dist/backend/llvm/expr-control.js +16 -16
  116. package/dist/backend/llvm/expr-control.js.map +1 -1
  117. package/dist/backend/llvm/expr-dynamic.d.ts +3 -0
  118. package/dist/backend/llvm/expr-dynamic.js +113 -66
  119. package/dist/backend/llvm/expr-dynamic.js.map +1 -1
  120. package/dist/backend/llvm/expr-primitives.js +124 -28
  121. package/dist/backend/llvm/expr-primitives.js.map +1 -1
  122. package/dist/backend/llvm/expr-primitives.test.js +57 -2
  123. package/dist/backend/llvm/expr-primitives.test.js.map +1 -1
  124. package/dist/backend/llvm/expr-records.d.ts +1 -1
  125. package/dist/backend/llvm/expr-records.js +32 -11
  126. package/dist/backend/llvm/expr-records.js.map +1 -1
  127. package/dist/backend/llvm/expr-stream-bridges.js +65 -27
  128. package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
  129. package/dist/backend/llvm/expr-stream-bridges.test.js +2 -2
  130. package/dist/backend/llvm/expr-stream-callbacks.js +22 -1
  131. package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
  132. package/dist/backend/llvm/int32-abi.test.js +2 -2
  133. package/dist/backend/llvm/integer-clones.js +3 -3
  134. package/dist/backend/llvm/integer-clones.js.map +1 -1
  135. package/dist/backend/llvm/integer-clones.test.js +3 -3
  136. package/dist/backend/llvm/integer-remainder.d.ts +34 -13
  137. package/dist/backend/llvm/integer-remainder.js +156 -22
  138. package/dist/backend/llvm/integer-remainder.js.map +1 -1
  139. package/dist/backend/llvm/intern-tables.test.js +1 -1
  140. package/dist/backend/llvm/js-ic.d.ts +18 -0
  141. package/dist/backend/llvm/js-ic.js +712 -0
  142. package/dist/backend/llvm/js-ic.js.map +1 -0
  143. package/dist/backend/llvm/jsval-encoding.d.ts +21 -0
  144. package/dist/backend/llvm/jsval-encoding.js +20 -0
  145. package/dist/backend/llvm/jsval-encoding.js.map +1 -0
  146. package/dist/backend/llvm/jsval.d.ts +12 -0
  147. package/dist/backend/llvm/jsval.js +616 -0
  148. package/dist/backend/llvm/jsval.js.map +1 -0
  149. package/dist/backend/llvm/lazy-captures.d.ts +12 -2
  150. package/dist/backend/llvm/lazy-captures.js +39 -17
  151. package/dist/backend/llvm/lazy-captures.js.map +1 -1
  152. package/dist/backend/llvm/lib-abi.js +1 -1
  153. package/dist/backend/llvm/lib-abi.js.map +1 -1
  154. package/dist/backend/llvm/lib-connect.js +1 -1
  155. package/dist/backend/llvm/lib-connect.js.map +1 -1
  156. package/dist/backend/llvm/lib-datagram.js +14 -8
  157. package/dist/backend/llvm/lib-datagram.js.map +1 -1
  158. package/dist/backend/llvm/lib-dispatch.js +189 -23
  159. package/dist/backend/llvm/lib-dispatch.js.map +1 -1
  160. package/dist/backend/llvm/lib-filesystem.js +42 -13
  161. package/dist/backend/llvm/lib-filesystem.js.map +1 -1
  162. package/dist/backend/llvm/lib-http2.js +3 -3
  163. package/dist/backend/llvm/lib-http2.js.map +1 -1
  164. package/dist/backend/llvm/lib-lookup.js +2 -2
  165. package/dist/backend/llvm/lib-lookup.js.map +1 -1
  166. package/dist/backend/llvm/lib-network.js +56 -22
  167. package/dist/backend/llvm/lib-network.js.map +1 -1
  168. package/dist/backend/llvm/lib-process.js +94 -53
  169. package/dist/backend/llvm/lib-process.js.map +1 -1
  170. package/dist/backend/llvm/lib-shared.d.ts +12 -0
  171. package/dist/backend/llvm/lib-shared.js +209 -6
  172. package/dist/backend/llvm/lib-shared.js.map +1 -1
  173. package/dist/backend/llvm/lib-stream.js +46 -16
  174. package/dist/backend/llvm/lib-stream.js.map +1 -1
  175. package/dist/backend/llvm/lib-test.js +43 -7
  176. package/dist/backend/llvm/lib-test.js.map +1 -1
  177. package/dist/backend/llvm/lib-tls.js +4 -9
  178. package/dist/backend/llvm/lib-tls.js.map +1 -1
  179. package/dist/backend/llvm/local-array-reads.js +42 -33
  180. package/dist/backend/llvm/local-array-reads.js.map +1 -1
  181. package/dist/backend/llvm/local-array-reads.test.js +1 -1
  182. package/dist/backend/llvm/local-extents.d.ts +19 -0
  183. package/dist/backend/llvm/local-extents.js +169 -0
  184. package/dist/backend/llvm/local-extents.js.map +1 -0
  185. package/dist/backend/llvm/local-extents.test.d.ts +1 -0
  186. package/dist/backend/llvm/local-extents.test.js +92 -0
  187. package/dist/backend/llvm/local-extents.test.js.map +1 -0
  188. package/dist/backend/llvm/local-union-storage.js +7 -7
  189. package/dist/backend/llvm/local-union-storage.js.map +1 -1
  190. package/dist/backend/llvm/local-union-storage.test.js +2 -2
  191. package/dist/backend/llvm/map-entry-fusion.test.js +1 -1
  192. package/dist/backend/llvm/map-number-lookup.d.ts +20 -4
  193. package/dist/backend/llvm/map-number-lookup.js +45 -9
  194. package/dist/backend/llvm/map-number-lookup.js.map +1 -1
  195. package/dist/backend/llvm/map-number-lookup.test.js +2 -2
  196. package/dist/backend/llvm/map-read-lifetimes.test.js +2 -2
  197. package/dist/backend/llvm/narrow-guards.d.ts +38 -0
  198. package/dist/backend/llvm/narrow-guards.js +215 -0
  199. package/dist/backend/llvm/narrow-guards.js.map +1 -0
  200. package/dist/backend/llvm/nullable-unions.d.ts +64 -6
  201. package/dist/backend/llvm/nullable-unions.js +103 -6
  202. package/dist/backend/llvm/nullable-unions.js.map +1 -1
  203. package/dist/backend/llvm/nullable-unions.test.d.ts +1 -0
  204. package/dist/backend/llvm/nullable-unions.test.js +65 -0
  205. package/dist/backend/llvm/nullable-unions.test.js.map +1 -0
  206. package/dist/backend/llvm/publish.d.ts +7 -0
  207. package/dist/backend/llvm/publish.js +50 -19
  208. package/dist/backend/llvm/publish.js.map +1 -1
  209. package/dist/backend/llvm/publish.test.js +1 -1
  210. package/dist/backend/llvm/receivers.d.ts +31 -0
  211. package/dist/backend/llvm/receivers.js +395 -0
  212. package/dist/backend/llvm/receivers.js.map +1 -0
  213. package/dist/backend/llvm/record-results.d.ts +12 -1
  214. package/dist/backend/llvm/record-results.js +64 -4
  215. package/dist/backend/llvm/record-results.js.map +1 -1
  216. package/dist/backend/llvm/reference-effects.js +9 -0
  217. package/dist/backend/llvm/reference-effects.js.map +1 -1
  218. package/dist/backend/llvm/reference-writes.d.ts +4 -0
  219. package/dist/backend/llvm/reference-writes.js +142 -6
  220. package/dist/backend/llvm/reference-writes.js.map +1 -1
  221. package/dist/backend/llvm/reference-writes.test.d.ts +1 -0
  222. package/dist/backend/llvm/reference-writes.test.js +88 -0
  223. package/dist/backend/llvm/reference-writes.test.js.map +1 -0
  224. package/dist/backend/llvm/regex-matchers.d.ts +8 -0
  225. package/dist/backend/llvm/regex-matchers.js +33 -0
  226. package/dist/backend/llvm/regex-matchers.js.map +1 -1
  227. package/dist/backend/llvm/regex-matchers.test.js +23 -1
  228. package/dist/backend/llvm/regex-matchers.test.js.map +1 -1
  229. package/dist/backend/llvm/regions.d.ts +1 -1
  230. package/dist/backend/llvm/regions.js +10 -7
  231. package/dist/backend/llvm/regions.js.map +1 -1
  232. package/dist/backend/llvm/regions.test.js +8 -2
  233. package/dist/backend/llvm/regions.test.js.map +1 -1
  234. package/dist/backend/llvm/shapes.d.ts +74 -45
  235. package/dist/backend/llvm/shapes.js +289 -28
  236. package/dist/backend/llvm/shapes.js.map +1 -1
  237. package/dist/backend/llvm/shapes.test.js +37 -3
  238. package/dist/backend/llvm/shapes.test.js.map +1 -1
  239. package/dist/backend/llvm/speculative-integers.d.ts +20 -1
  240. package/dist/backend/llvm/speculative-integers.js +94 -6
  241. package/dist/backend/llvm/speculative-integers.js.map +1 -1
  242. package/dist/backend/llvm/speculative-integers.test.js +55 -1
  243. package/dist/backend/llvm/speculative-integers.test.js.map +1 -1
  244. package/dist/backend/llvm/split-loops.js +2 -2
  245. package/dist/backend/llvm/split-loops.js.map +1 -1
  246. package/dist/backend/llvm/stack-objects.d.ts +26 -6
  247. package/dist/backend/llvm/stack-objects.js +133 -10
  248. package/dist/backend/llvm/stack-objects.js.map +1 -1
  249. package/dist/backend/llvm/stack-objects.test.js +55 -1
  250. package/dist/backend/llvm/stack-objects.test.js.map +1 -1
  251. package/dist/backend/llvm/stack-unions.test.js +1 -1
  252. package/dist/backend/llvm/string-construction.test.js +1 -1
  253. package/dist/backend/llvm/string-lifetimes.test.js +15 -14
  254. package/dist/backend/llvm/string-lifetimes.test.js.map +1 -1
  255. package/dist/backend/llvm/string-reads.d.ts +1 -1
  256. package/dist/backend/llvm/string-reads.js +4 -4
  257. package/dist/backend/llvm/string-reads.js.map +1 -1
  258. package/dist/backend/llvm/string-slices.d.ts +25 -0
  259. package/dist/backend/llvm/string-slices.js +207 -1
  260. package/dist/backend/llvm/string-slices.js.map +1 -1
  261. package/dist/backend/llvm/string-slices.test.js +139 -2
  262. package/dist/backend/llvm/string-slices.test.js.map +1 -1
  263. package/dist/backend/llvm/switch-dispatch.test.js +2 -2
  264. package/dist/backend/llvm/thread-slots.d.ts +5 -0
  265. package/dist/backend/llvm/thread-slots.js +142 -0
  266. package/dist/backend/llvm/thread-slots.js.map +1 -0
  267. package/dist/backend/llvm/thread-slots.test.d.ts +1 -0
  268. package/dist/backend/llvm/thread-slots.test.js +111 -0
  269. package/dist/backend/llvm/thread-slots.test.js.map +1 -0
  270. package/dist/backend/llvm/union-repr.d.ts +7 -7
  271. package/dist/backend/llvm/union-repr.js +18 -2
  272. package/dist/backend/llvm/union-repr.js.map +1 -1
  273. package/dist/backend/llvm/union-retype.test.js +17 -3
  274. package/dist/backend/llvm/union-retype.test.js.map +1 -1
  275. package/dist/backend/llvm/walkers.d.ts +2 -2
  276. package/dist/backend/llvm/walkers.js +51 -26
  277. package/dist/backend/llvm/walkers.js.map +1 -1
  278. package/dist/backend/llvm/wasm-modules.d.ts +16 -0
  279. package/dist/backend/llvm/wasm-modules.js +66 -0
  280. package/dist/backend/llvm/wasm-modules.js.map +1 -0
  281. package/dist/backend/llvm/wrapping-sums.d.ts +7 -0
  282. package/dist/backend/llvm/wrapping-sums.js +11 -3
  283. package/dist/backend/llvm/wrapping-sums.js.map +1 -1
  284. package/dist/backend/mangle.d.ts +12 -0
  285. package/dist/backend/mangle.js +18 -0
  286. package/dist/backend/mangle.js.map +1 -1
  287. package/dist/backend/may-throw.d.ts +3 -0
  288. package/dist/backend/may-throw.js +4 -2
  289. package/dist/backend/may-throw.js.map +1 -1
  290. package/dist/backend/may-throw.test.js +1 -1
  291. package/dist/backend/native/contracts.d.ts +57 -0
  292. package/dist/backend/native/executable.js +211 -139
  293. package/dist/backend/native/executable.js.map +1 -1
  294. package/dist/backend/native/library.js +2 -0
  295. package/dist/backend/native/library.js.map +1 -1
  296. package/dist/backend/native/runtime-inputs.d.ts +1 -1
  297. package/dist/backend/native/runtime-inputs.js +1 -0
  298. package/dist/backend/native/runtime-inputs.js.map +1 -1
  299. package/dist/backend/native-codegen.d.ts +6 -0
  300. package/dist/backend/native-codegen.js +19 -0
  301. package/dist/backend/native-codegen.js.map +1 -1
  302. package/dist/backend/native-codegen.test.js +27 -0
  303. package/dist/backend/native-codegen.test.js.map +1 -1
  304. package/dist/backend/native-link-info-core.d.ts +48 -0
  305. package/dist/backend/native-link-info-core.js.map +1 -1
  306. package/dist/backend/native-profile.d.ts +32 -0
  307. package/dist/backend/native-profile.js +39 -0
  308. package/dist/backend/native-profile.js.map +1 -0
  309. package/dist/backend/native-profile.test.d.ts +1 -0
  310. package/dist/backend/native-profile.test.js +58 -0
  311. package/dist/backend/native-profile.test.js.map +1 -0
  312. package/dist/backend/native-tools.d.ts +14 -0
  313. package/dist/backend/native-tools.js +13 -0
  314. package/dist/backend/native-tools.js.map +1 -1
  315. package/dist/backend/publication.test.js +1 -1
  316. package/dist/backend/runtime-abi.d.ts +2 -2
  317. package/dist/backend/runtime-abi.js +2 -2
  318. package/dist/backend/runtime-pack-core.d.ts +13 -1
  319. package/dist/backend/runtime-pack-core.js +14 -1
  320. package/dist/backend/runtime-pack-core.js.map +1 -1
  321. package/dist/backend/runtime-pack-native.js +1 -1
  322. package/dist/backend/runtime-pack-native.js.map +1 -1
  323. package/dist/backend/runtime-pack-native.test.d.ts +1 -0
  324. package/dist/backend/runtime-pack-native.test.js +31 -0
  325. package/dist/backend/runtime-pack-native.test.js.map +1 -0
  326. package/dist/backend/runtime-pack-targets.test.js +9 -1
  327. package/dist/backend/runtime-pack-targets.test.js.map +1 -1
  328. package/dist/backend/runtime-pack.test.js +9 -1
  329. package/dist/backend/runtime-pack.test.js.map +1 -1
  330. package/dist/backend/stack-observations.d.ts +22 -0
  331. package/dist/backend/stack-observations.js +382 -0
  332. package/dist/backend/stack-observations.js.map +1 -0
  333. package/dist/backend/stack-observations.test.d.ts +1 -0
  334. package/dist/backend/stack-observations.test.js +233 -0
  335. package/dist/backend/stack-observations.test.js.map +1 -0
  336. package/dist/backend/target-diagnostics.js +15 -0
  337. package/dist/backend/target-diagnostics.js.map +1 -1
  338. package/dist/backend/target-diagnostics.test.js +1 -1
  339. package/dist/backend/warm-cache.js +8 -0
  340. package/dist/backend/warm-cache.js.map +1 -1
  341. package/dist/backend/young-nursery.d.ts +7 -0
  342. package/dist/backend/young-nursery.js +10 -0
  343. package/dist/backend/young-nursery.js.map +1 -0
  344. package/dist/cli/command.js +106 -4
  345. package/dist/cli/command.js.map +1 -1
  346. package/dist/cli/host.d.ts +3 -0
  347. package/dist/cli/output-options.d.ts +2 -0
  348. package/dist/cli/output-options.js +9 -0
  349. package/dist/cli/output-options.js.map +1 -1
  350. package/dist/cli/usage.d.ts +21 -1
  351. package/dist/cli/usage.js +43 -1
  352. package/dist/cli/usage.js.map +1 -1
  353. package/dist/compat/fetch-profile.js +10 -1
  354. package/dist/compat/fetch-profile.js.map +1 -1
  355. package/dist/compile-types.d.ts +22 -0
  356. package/dist/contracts/check.js +25 -8
  357. package/dist/contracts/check.js.map +1 -1
  358. package/dist/contracts/int32-elements.d.ts +115 -0
  359. package/dist/contracts/int32-elements.js +1179 -0
  360. package/dist/contracts/int32-elements.js.map +1 -0
  361. package/dist/coverage/report.d.ts +16 -0
  362. package/dist/coverage/report.js +182 -1
  363. package/dist/coverage/report.js.map +1 -1
  364. package/dist/coverage/surface-manifest.js +16 -3
  365. package/dist/coverage/surface-manifest.js.map +1 -1
  366. package/dist/coverage/verdict-cache.d.ts +2 -0
  367. package/dist/coverage/verdict-cache.js +12 -0
  368. package/dist/coverage/verdict-cache.js.map +1 -1
  369. package/dist/coverage/verdict-cache.test.js +2 -1
  370. package/dist/coverage/verdict-cache.test.js.map +1 -1
  371. package/dist/diagnostics/diagnostic.d.ts +10 -6
  372. package/dist/diagnostics/diagnostic.js +29 -21
  373. package/dist/diagnostics/diagnostic.js.map +1 -1
  374. package/dist/diagnostics/envelope.d.ts +39 -2
  375. package/dist/diagnostics/envelope.js.map +1 -1
  376. package/dist/diagnostics/render.d.ts +7 -0
  377. package/dist/diagnostics/render.js +50 -13
  378. package/dist/diagnostics/render.js.map +1 -1
  379. package/dist/diagnostics/render.test.d.ts +1 -0
  380. package/dist/diagnostics/render.test.js +49 -0
  381. package/dist/diagnostics/render.test.js.map +1 -0
  382. package/dist/executable/executable-cache.d.ts +27 -0
  383. package/dist/executable/executable-cache.js +19 -1
  384. package/dist/executable/executable-cache.js.map +1 -1
  385. package/dist/executable/executable-cache.test.js +12 -1
  386. package/dist/executable/executable-cache.test.js.map +1 -1
  387. package/dist/executable/prepare.js +2 -1
  388. package/dist/executable/prepare.js.map +1 -1
  389. package/dist/frontend/analysis.js +6 -1
  390. package/dist/frontend/analysis.js.map +1 -1
  391. package/dist/frontend/arguments-usage.d.ts +8 -0
  392. package/dist/frontend/arguments-usage.js +98 -0
  393. package/dist/frontend/arguments-usage.js.map +1 -1
  394. package/dist/frontend/arguments-usage.test.d.ts +1 -0
  395. package/dist/frontend/arguments-usage.test.js +32 -0
  396. package/dist/frontend/arguments-usage.test.js.map +1 -0
  397. package/dist/frontend/builtin-modules.d.ts +16 -2
  398. package/dist/frontend/builtin-modules.js +40 -7
  399. package/dist/frontend/builtin-modules.js.map +1 -1
  400. package/dist/frontend/builtin-package-aliases.d.ts +24 -0
  401. package/dist/frontend/builtin-package-aliases.js +133 -0
  402. package/dist/frontend/builtin-package-aliases.js.map +1 -0
  403. package/dist/frontend/builtin-package-aliases.test.d.ts +1 -0
  404. package/dist/frontend/builtin-package-aliases.test.js +48 -0
  405. package/dist/frontend/builtin-package-aliases.test.js.map +1 -0
  406. package/dist/frontend/cjs-syntax.js +52 -51
  407. package/dist/frontend/cjs-syntax.js.map +1 -1
  408. package/dist/frontend/contract-types.d.ts +3 -0
  409. package/dist/frontend/contract-types.js +36 -7
  410. package/dist/frontend/contract-types.js.map +1 -1
  411. package/dist/frontend/dts-paths.d.ts +4 -0
  412. package/dist/frontend/dts-paths.js +9 -1
  413. package/dist/frontend/dts-paths.js.map +1 -1
  414. package/dist/frontend/experimental-import.d.ts +5 -1
  415. package/dist/frontend/experimental-import.js +26 -7
  416. package/dist/frontend/experimental-import.js.map +1 -1
  417. package/dist/frontend/fork-target.js +20 -22
  418. package/dist/frontend/fork-target.js.map +1 -1
  419. package/dist/frontend/fork-target.test.js +2 -1
  420. package/dist/frontend/fork-target.test.js.map +1 -1
  421. package/dist/frontend/function-completion.js +6 -6
  422. package/dist/frontend/function-completion.js.map +1 -1
  423. package/dist/frontend/helper-tokens.js +15 -3
  424. package/dist/frontend/helper-tokens.js.map +1 -1
  425. package/dist/frontend/helper-tokens.test.js +7 -1
  426. package/dist/frontend/helper-tokens.test.js.map +1 -1
  427. package/dist/frontend/inferred-js-diagnostics.js +14 -17
  428. package/dist/frontend/inferred-js-diagnostics.js.map +1 -1
  429. package/dist/frontend/input-tracker.d.ts +3 -0
  430. package/dist/frontend/input-tracker.js +32 -3
  431. package/dist/frontend/input-tracker.js.map +1 -1
  432. package/dist/frontend/lib-contract.js +36 -32
  433. package/dist/frontend/lib-contract.js.map +1 -1
  434. package/dist/frontend/lib-exports.js +3 -3
  435. package/dist/frontend/lib-exports.js.map +1 -1
  436. package/dist/frontend/lowering/array-values.d.ts +8 -3
  437. package/dist/frontend/lowering/array-values.js +60 -11
  438. package/dist/frontend/lowering/array-values.js.map +1 -1
  439. package/dist/frontend/lowering/assert-instances.js +4 -4
  440. package/dist/frontend/lowering/assert-instances.js.map +1 -1
  441. package/dist/frontend/lowering/assertion-identity.d.ts +12 -0
  442. package/dist/frontend/lowering/assertion-identity.js +70 -0
  443. package/dist/frontend/lowering/assertion-identity.js.map +1 -0
  444. package/dist/frontend/lowering/assertion-members.d.ts +28 -0
  445. package/dist/frontend/lowering/assertion-members.js +185 -0
  446. package/dist/frontend/lowering/assertion-members.js.map +1 -0
  447. package/dist/frontend/lowering/binding-analysis.js +27 -20
  448. package/dist/frontend/lowering/binding-analysis.js.map +1 -1
  449. package/dist/frontend/lowering/builtin-calls.js +63 -5
  450. package/dist/frontend/lowering/builtin-calls.js.map +1 -1
  451. package/dist/frontend/lowering/builtin-function-fences.d.ts +14 -0
  452. package/dist/frontend/lowering/builtin-function-fences.js +42 -0
  453. package/dist/frontend/lowering/builtin-function-fences.js.map +1 -0
  454. package/dist/frontend/lowering/builtins/arguments.js +1 -1
  455. package/dist/frontend/lowering/builtins/arguments.js.map +1 -1
  456. package/dist/frontend/lowering/builtins/async-context.js +53 -52
  457. package/dist/frontend/lowering/builtins/async-context.js.map +1 -1
  458. package/dist/frontend/lowering/builtins/atomics.js +6 -6
  459. package/dist/frontend/lowering/builtins/atomics.js.map +1 -1
  460. package/dist/frontend/lowering/builtins/blob.js +8 -6
  461. package/dist/frontend/lowering/builtins/blob.js.map +1 -1
  462. package/dist/frontend/lowering/builtins/builtin-class-dyn.d.ts +31 -0
  463. package/dist/frontend/lowering/builtins/builtin-class-dyn.js +205 -0
  464. package/dist/frontend/lowering/builtins/builtin-class-dyn.js.map +1 -0
  465. package/dist/frontend/lowering/builtins/callable-aliases.js +17 -5
  466. package/dist/frontend/lowering/builtins/callable-aliases.js.map +1 -1
  467. package/dist/frontend/lowering/builtins/child-process-async.js +7 -7
  468. package/dist/frontend/lowering/builtins/child-process-async.js.map +1 -1
  469. package/dist/frontend/lowering/builtins/child-process-methods.d.ts +6 -4
  470. package/dist/frontend/lowering/builtins/child-process-methods.js +310 -57
  471. package/dist/frontend/lowering/builtins/child-process-methods.js.map +1 -1
  472. package/dist/frontend/lowering/builtins/child-process-sync.js +16 -10
  473. package/dist/frontend/lowering/builtins/child-process-sync.js.map +1 -1
  474. package/dist/frontend/lowering/builtins/child-process.d.ts +6 -4
  475. package/dist/frontend/lowering/builtins/child-process.js +85 -61
  476. package/dist/frontend/lowering/builtins/child-process.js.map +1 -1
  477. package/dist/frontend/lowering/builtins/class-values.d.ts +60 -0
  478. package/dist/frontend/lowering/builtins/class-values.js +226 -0
  479. package/dist/frontend/lowering/builtins/class-values.js.map +1 -0
  480. package/dist/frontend/lowering/builtins/compression.d.ts +9 -0
  481. package/dist/frontend/lowering/builtins/compression.js +107 -44
  482. package/dist/frontend/lowering/builtins/compression.js.map +1 -1
  483. package/dist/frontend/lowering/builtins/constants.d.ts +9 -1
  484. package/dist/frontend/lowering/builtins/constants.js +28 -7
  485. package/dist/frontend/lowering/builtins/constants.js.map +1 -1
  486. package/dist/frontend/lowering/builtins/crypto.d.ts +22 -0
  487. package/dist/frontend/lowering/builtins/crypto.js +215 -38
  488. package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
  489. package/dist/frontend/lowering/builtins/dates.d.ts +7 -1
  490. package/dist/frontend/lowering/builtins/dates.js +92 -16
  491. package/dist/frontend/lowering/builtins/dates.js.map +1 -1
  492. package/dist/frontend/lowering/builtins/disposable-stack.d.ts +18 -0
  493. package/dist/frontend/lowering/builtins/disposable-stack.js +137 -0
  494. package/dist/frontend/lowering/builtins/disposable-stack.js.map +1 -0
  495. package/dist/frontend/lowering/builtins/ecdh.d.ts +10 -0
  496. package/dist/frontend/lowering/builtins/ecdh.js +208 -0
  497. package/dist/frontend/lowering/builtins/ecdh.js.map +1 -0
  498. package/dist/frontend/lowering/builtins/environment.js +3 -3
  499. package/dist/frontend/lowering/builtins/environment.js.map +1 -1
  500. package/dist/frontend/lowering/builtins/errors.d.ts +14 -10
  501. package/dist/frontend/lowering/builtins/errors.js +169 -3
  502. package/dist/frontend/lowering/builtins/errors.js.map +1 -1
  503. package/dist/frontend/lowering/builtins/filesystem-calls.js +128 -116
  504. package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
  505. package/dist/frontend/lowering/builtins/filesystem.js +77 -77
  506. package/dist/frontend/lowering/builtins/filesystem.js.map +1 -1
  507. package/dist/frontend/lowering/builtins/fs-glob.js +3 -3
  508. package/dist/frontend/lowering/builtins/fs-glob.js.map +1 -1
  509. package/dist/frontend/lowering/builtins/fs-streams.js +10 -11
  510. package/dist/frontend/lowering/builtins/fs-streams.js.map +1 -1
  511. package/dist/frontend/lowering/builtins/ipc.js +45 -8
  512. package/dist/frontend/lowering/builtins/ipc.js.map +1 -1
  513. package/dist/frontend/lowering/builtins/json.js +284 -24
  514. package/dist/frontend/lowering/builtins/json.js.map +1 -1
  515. package/dist/frontend/lowering/builtins/key-object.js +4 -4
  516. package/dist/frontend/lowering/builtins/key-object.js.map +1 -1
  517. package/dist/frontend/lowering/builtins/module-bindings.d.ts +8 -0
  518. package/dist/frontend/lowering/builtins/module-bindings.js +71 -22
  519. package/dist/frontend/lowering/builtins/module-bindings.js.map +1 -1
  520. package/dist/frontend/lowering/builtins/module-calls.js +55 -44
  521. package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
  522. package/dist/frontend/lowering/builtins/module-resolution.d.ts +4 -3
  523. package/dist/frontend/lowering/builtins/module-resolution.js +24 -23
  524. package/dist/frontend/lowering/builtins/module-resolution.js.map +1 -1
  525. package/dist/frontend/lowering/builtins/navigator.d.ts +13 -0
  526. package/dist/frontend/lowering/builtins/navigator.js +40 -0
  527. package/dist/frontend/lowering/builtins/navigator.js.map +1 -0
  528. package/dist/frontend/lowering/builtins/net-address.d.ts +19 -0
  529. package/dist/frontend/lowering/builtins/net-address.js +156 -0
  530. package/dist/frontend/lowering/builtins/net-address.js.map +1 -0
  531. package/dist/frontend/lowering/builtins/numbers.js +25 -9
  532. package/dist/frontend/lowering/builtins/numbers.js.map +1 -1
  533. package/dist/frontend/lowering/builtins/operating-system.d.ts +4 -0
  534. package/dist/frontend/lowering/builtins/operating-system.js +25 -12
  535. package/dist/frontend/lowering/builtins/operating-system.js.map +1 -1
  536. package/dist/frontend/lowering/builtins/performance.d.ts +12 -0
  537. package/dist/frontend/lowering/builtins/performance.js +259 -8
  538. package/dist/frontend/lowering/builtins/performance.js.map +1 -1
  539. package/dist/frontend/lowering/builtins/process.d.ts +41 -1
  540. package/dist/frontend/lowering/builtins/process.js +505 -99
  541. package/dist/frontend/lowering/builtins/process.js.map +1 -1
  542. package/dist/frontend/lowering/builtins/promises.d.ts +5 -1
  543. package/dist/frontend/lowering/builtins/promises.js +326 -43
  544. package/dist/frontend/lowering/builtins/promises.js.map +1 -1
  545. package/dist/frontend/lowering/builtins/promisify-callback.d.ts +40 -0
  546. package/dist/frontend/lowering/builtins/promisify-callback.js +338 -0
  547. package/dist/frontend/lowering/builtins/promisify-callback.js.map +1 -0
  548. package/dist/frontend/lowering/builtins/properties.js +37 -1
  549. package/dist/frontend/lowering/builtins/properties.js.map +1 -1
  550. package/dist/frontend/lowering/builtins/querystring.js +14 -14
  551. package/dist/frontend/lowering/builtins/querystring.js.map +1 -1
  552. package/dist/frontend/lowering/builtins/readline.d.ts +12 -2
  553. package/dist/frontend/lowering/builtins/readline.js +136 -39
  554. package/dist/frontend/lowering/builtins/readline.js.map +1 -1
  555. package/dist/frontend/lowering/builtins/receiver-types.js +3 -5
  556. package/dist/frontend/lowering/builtins/receiver-types.js.map +1 -1
  557. package/dist/frontend/lowering/builtins/reflection.js +42 -14
  558. package/dist/frontend/lowering/builtins/reflection.js.map +1 -1
  559. package/dist/frontend/lowering/builtins/runtime-constructor.d.ts +26 -0
  560. package/dist/frontend/lowering/builtins/runtime-constructor.js +165 -0
  561. package/dist/frontend/lowering/builtins/runtime-constructor.js.map +1 -0
  562. package/dist/frontend/lowering/builtins/strings.js +101 -12
  563. package/dist/frontend/lowering/builtins/strings.js.map +1 -1
  564. package/dist/frontend/lowering/builtins/text-codecs.js +41 -38
  565. package/dist/frontend/lowering/builtins/text-codecs.js.map +1 -1
  566. package/dist/frontend/lowering/builtins/timers.js +79 -30
  567. package/dist/frontend/lowering/builtins/timers.js.map +1 -1
  568. package/dist/frontend/lowering/builtins/typed-array-members.d.ts +7 -0
  569. package/dist/frontend/lowering/builtins/typed-array-members.js +160 -0
  570. package/dist/frontend/lowering/builtins/typed-array-members.js.map +1 -0
  571. package/dist/frontend/lowering/builtins/url.d.ts +3 -0
  572. package/dist/frontend/lowering/builtins/url.js +120 -17
  573. package/dist/frontend/lowering/builtins/url.js.map +1 -1
  574. package/dist/frontend/lowering/builtins/util-types.js +20 -4
  575. package/dist/frontend/lowering/builtins/util-types.js.map +1 -1
  576. package/dist/frontend/lowering/builtins/v8.d.ts +11 -0
  577. package/dist/frontend/lowering/builtins/v8.js +105 -0
  578. package/dist/frontend/lowering/builtins/v8.js.map +1 -0
  579. package/dist/frontend/lowering/builtins/webassembly.d.ts +33 -0
  580. package/dist/frontend/lowering/builtins/webassembly.js +388 -0
  581. package/dist/frontend/lowering/builtins/webassembly.js.map +1 -0
  582. package/dist/frontend/lowering/builtins/webcrypto.d.ts +20 -0
  583. package/dist/frontend/lowering/builtins/webcrypto.js +112 -0
  584. package/dist/frontend/lowering/builtins/webcrypto.js.map +1 -0
  585. package/dist/frontend/lowering/builtins/workers.d.ts +12 -0
  586. package/dist/frontend/lowering/builtins/workers.js +193 -8
  587. package/dist/frontend/lowering/builtins/workers.js.map +1 -1
  588. package/dist/frontend/lowering/call-arguments.js +69 -14
  589. package/dist/frontend/lowering/call-arguments.js.map +1 -1
  590. package/dist/frontend/lowering/call-signatures.d.ts +23 -1
  591. package/dist/frontend/lowering/call-signatures.js +379 -55
  592. package/dist/frontend/lowering/call-signatures.js.map +1 -1
  593. package/dist/frontend/lowering/checked-promise-all.d.ts +3 -0
  594. package/dist/frontend/lowering/checked-promise-all.js +1 -1
  595. package/dist/frontend/lowering/checked-promise-all.js.map +1 -1
  596. package/dist/frontend/lowering/cjs-exports-object.d.ts +53 -0
  597. package/dist/frontend/lowering/cjs-exports-object.js +561 -0
  598. package/dist/frontend/lowering/cjs-exports-object.js.map +1 -0
  599. package/dist/frontend/lowering/cjs-inline-require.d.ts +86 -0
  600. package/dist/frontend/lowering/cjs-inline-require.js +314 -0
  601. package/dist/frontend/lowering/cjs-inline-require.js.map +1 -0
  602. package/dist/frontend/lowering/cjs-tsc-interop.d.ts +28 -0
  603. package/dist/frontend/lowering/cjs-tsc-interop.js +208 -0
  604. package/dist/frontend/lowering/cjs-tsc-interop.js.map +1 -0
  605. package/dist/frontend/lowering/class-attributes.d.ts +19 -0
  606. package/dist/frontend/lowering/class-attributes.js +378 -0
  607. package/dist/frontend/lowering/class-attributes.js.map +1 -0
  608. package/dist/frontend/lowering/class-callbacks.d.ts +3 -1
  609. package/dist/frontend/lowering/class-callbacks.js +21 -10
  610. package/dist/frontend/lowering/class-callbacks.js.map +1 -1
  611. package/dist/frontend/lowering/class-construction.js +49 -4
  612. package/dist/frontend/lowering/class-construction.js.map +1 -1
  613. package/dist/frontend/lowering/class-descriptors.d.ts +2 -0
  614. package/dist/frontend/lowering/class-descriptors.js +8 -8
  615. package/dist/frontend/lowering/class-descriptors.js.map +1 -1
  616. package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +64 -0
  617. package/dist/frontend/lowering/class-dynamic-dispatch.js +1124 -90
  618. package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
  619. package/dist/frontend/lowering/class-instance-constructor.js +1 -1
  620. package/dist/frontend/lowering/class-instance-constructor.js.map +1 -1
  621. package/dist/frontend/lowering/class-iterables.d.ts +11 -0
  622. package/dist/frontend/lowering/class-iterables.js +31 -0
  623. package/dist/frontend/lowering/class-iterables.js.map +1 -0
  624. package/dist/frontend/lowering/class-method-mutations.js +73 -35
  625. package/dist/frontend/lowering/class-method-mutations.js.map +1 -1
  626. package/dist/frontend/lowering/class-method-values.js +56 -10
  627. package/dist/frontend/lowering/class-method-values.js.map +1 -1
  628. package/dist/frontend/lowering/class-protocol-dispatch.js +24 -22
  629. package/dist/frontend/lowering/class-protocol-dispatch.js.map +1 -1
  630. package/dist/frontend/lowering/class-protocols.d.ts +10 -0
  631. package/dist/frontend/lowering/class-protocols.js +76 -45
  632. package/dist/frontend/lowering/class-protocols.js.map +1 -1
  633. package/dist/frontend/lowering/class-prototypes.d.ts +6 -0
  634. package/dist/frontend/lowering/class-prototypes.js +86 -19
  635. package/dist/frontend/lowering/class-prototypes.js.map +1 -1
  636. package/dist/frontend/lowering/class-runtime-statics.js +1 -1
  637. package/dist/frontend/lowering/class-runtime-statics.js.map +1 -1
  638. package/dist/frontend/lowering/class-static-data.js +2 -2
  639. package/dist/frontend/lowering/class-static-data.js.map +1 -1
  640. package/dist/frontend/lowering/class-to-primitive.d.ts +25 -0
  641. package/dist/frontend/lowering/class-to-primitive.js +264 -0
  642. package/dist/frontend/lowering/class-to-primitive.js.map +1 -0
  643. package/dist/frontend/lowering/class-unions.d.ts +25 -0
  644. package/dist/frontend/lowering/class-unions.js +102 -1
  645. package/dist/frontend/lowering/class-unions.js.map +1 -1
  646. package/dist/frontend/lowering/code-generation.d.ts +14 -0
  647. package/dist/frontend/lowering/code-generation.js +127 -0
  648. package/dist/frontend/lowering/code-generation.js.map +1 -0
  649. package/dist/frontend/lowering/coercions/fresh-spread.d.ts +13 -0
  650. package/dist/frontend/lowering/coercions/fresh-spread.js +95 -0
  651. package/dist/frontend/lowering/coercions/fresh-spread.js.map +1 -0
  652. package/dist/frontend/lowering/coercions/function-adapters.d.ts +16 -2
  653. package/dist/frontend/lowering/coercions/function-adapters.js +239 -68
  654. package/dist/frontend/lowering/coercions/function-adapters.js.map +1 -1
  655. package/dist/frontend/lowering/coercions/structural-plans.js +25 -3
  656. package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -1
  657. package/dist/frontend/lowering/coercions/structural.js +35 -3
  658. package/dist/frontend/lowering/coercions/structural.js.map +1 -1
  659. package/dist/frontend/lowering/coercions/unions.d.ts +15 -0
  660. package/dist/frontend/lowering/coercions/unions.js +57 -1
  661. package/dist/frontend/lowering/coercions/unions.js.map +1 -1
  662. package/dist/frontend/lowering/collection-ingestion.js +2 -2
  663. package/dist/frontend/lowering/collection-ingestion.js.map +1 -1
  664. package/dist/frontend/lowering/collection-narrowing.js +2 -4
  665. package/dist/frontend/lowering/collection-narrowing.js.map +1 -1
  666. package/dist/frontend/lowering/construction-escapes.js +8 -8
  667. package/dist/frontend/lowering/construction-escapes.js.map +1 -1
  668. package/dist/frontend/lowering/construction-escapes.test.js +4 -4
  669. package/dist/frontend/lowering/construction-escapes.test.js.map +1 -1
  670. package/dist/frontend/lowering/constructor-returns.d.ts +61 -0
  671. package/dist/frontend/lowering/constructor-returns.js +477 -0
  672. package/dist/frontend/lowering/constructor-returns.js.map +1 -0
  673. package/dist/frontend/lowering/containers/array-callback-call.js +1 -1
  674. package/dist/frontend/lowering/containers/array-callback-call.js.map +1 -1
  675. package/dist/frontend/lowering/containers/array-callbacks.d.ts +17 -0
  676. package/dist/frontend/lowering/containers/array-callbacks.js +287 -118
  677. package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
  678. package/dist/frontend/lowering/containers/array-concat.js +1 -1
  679. package/dist/frontend/lowering/containers/array-concat.js.map +1 -1
  680. package/dist/frontend/lowering/containers/array-construction.d.ts +0 -1
  681. package/dist/frontend/lowering/containers/array-construction.js +58 -13
  682. package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
  683. package/dist/frontend/lowering/containers/array-from-async.d.ts +6 -5
  684. package/dist/frontend/lowering/containers/array-from-async.js +159 -14
  685. package/dist/frontend/lowering/containers/array-from-async.js.map +1 -1
  686. package/dist/frontend/lowering/containers/array-methods.js +94 -77
  687. package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
  688. package/dist/frontend/lowering/containers/array-pipelines.js +1 -0
  689. package/dist/frontend/lowering/containers/array-pipelines.js.map +1 -1
  690. package/dist/frontend/lowering/containers/bytes.d.ts +9 -0
  691. package/dist/frontend/lowering/containers/bytes.js +649 -113
  692. package/dist/frontend/lowering/containers/bytes.js.map +1 -1
  693. package/dist/frontend/lowering/containers/callback-arguments.d.ts +9 -1
  694. package/dist/frontend/lowering/containers/callback-arguments.js +55 -5
  695. package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -1
  696. package/dist/frontend/lowering/containers/collection-grouping.d.ts +7 -8
  697. package/dist/frontend/lowering/containers/collection-grouping.js +217 -26
  698. package/dist/frontend/lowering/containers/collection-grouping.js.map +1 -1
  699. package/dist/frontend/lowering/containers/collection-methods.js +126 -28
  700. package/dist/frontend/lowering/containers/collection-methods.js.map +1 -1
  701. package/dist/frontend/lowering/containers/dynamic-receivers.js +1 -1
  702. package/dist/frontend/lowering/containers/dynamic-receivers.js.map +1 -1
  703. package/dist/frontend/lowering/containers/exec-result-uses.js +2 -2
  704. package/dist/frontend/lowering/containers/exec-result-uses.js.map +1 -1
  705. package/dist/frontend/lowering/containers/for-of.d.ts +6 -0
  706. package/dist/frontend/lowering/containers/for-of.js +19 -19
  707. package/dist/frontend/lowering/containers/for-of.js.map +1 -1
  708. package/dist/frontend/lowering/containers/indexed-objects.js +142 -57
  709. package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
  710. package/dist/frontend/lowering/containers/iterator-helpers.d.ts +53 -4
  711. package/dist/frontend/lowering/containers/iterator-helpers.js +1581 -462
  712. package/dist/frontend/lowering/containers/iterator-helpers.js.map +1 -1
  713. package/dist/frontend/lowering/containers/match-row-uses.d.ts +17 -0
  714. package/dist/frontend/lowering/containers/match-row-uses.js +264 -0
  715. package/dist/frontend/lowering/containers/match-row-uses.js.map +1 -0
  716. package/dist/frontend/lowering/containers/string-and-regexp.d.ts +14 -0
  717. package/dist/frontend/lowering/containers/string-and-regexp.js +455 -30
  718. package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
  719. package/dist/frontend/lowering/containers/string-replacement.js +1 -1
  720. package/dist/frontend/lowering/containers/string-replacement.js.map +1 -1
  721. package/dist/frontend/lowering/cycle-initialization.d.ts +30 -10
  722. package/dist/frontend/lowering/cycle-initialization.js +191 -35
  723. package/dist/frontend/lowering/cycle-initialization.js.map +1 -1
  724. package/dist/frontend/lowering/deferred-module-initializers.js +47 -43
  725. package/dist/frontend/lowering/deferred-module-initializers.js.map +1 -1
  726. package/dist/frontend/lowering/devirtualize.d.ts +1 -1
  727. package/dist/frontend/lowering/devirtualize.js +27 -7
  728. package/dist/frontend/lowering/devirtualize.js.map +1 -1
  729. package/dist/frontend/lowering/divergences.d.ts +0 -5
  730. package/dist/frontend/lowering/divergences.js +62 -125
  731. package/dist/frontend/lowering/divergences.js.map +1 -1
  732. package/dist/frontend/lowering/dyn-streams.d.ts +25 -0
  733. package/dist/frontend/lowering/dyn-streams.js +257 -0
  734. package/dist/frontend/lowering/dyn-streams.js.map +1 -0
  735. package/dist/frontend/lowering/error-methods.js +4 -1
  736. package/dist/frontend/lowering/error-methods.js.map +1 -1
  737. package/dist/frontend/lowering/error-name-order.d.ts +19 -0
  738. package/dist/frontend/lowering/error-name-order.js +93 -0
  739. package/dist/frontend/lowering/error-name-order.js.map +1 -0
  740. package/dist/frontend/lowering/expressions/array-literals.d.ts +21 -0
  741. package/dist/frontend/lowering/expressions/array-literals.js +723 -0
  742. package/dist/frontend/lowering/expressions/array-literals.js.map +1 -0
  743. package/dist/frontend/lowering/expressions/binary.d.ts +35 -0
  744. package/dist/frontend/lowering/expressions/binary.js +2557 -0
  745. package/dist/frontend/lowering/expressions/binary.js.map +1 -0
  746. package/dist/frontend/lowering/expressions/element-access.d.ts +31 -0
  747. package/dist/frontend/lowering/expressions/element-access.js +1804 -0
  748. package/dist/frontend/lowering/expressions/element-access.js.map +1 -0
  749. package/dist/frontend/lowering/expressions/evaluation-safety.js +4 -3
  750. package/dist/frontend/lowering/expressions/evaluation-safety.js.map +1 -1
  751. package/dist/frontend/lowering/expressions/hosted-narrowing.d.ts +38 -0
  752. package/dist/frontend/lowering/expressions/hosted-narrowing.js +160 -0
  753. package/dist/frontend/lowering/expressions/hosted-narrowing.js.map +1 -0
  754. package/dist/frontend/lowering/expressions/identifiers.d.ts +4 -0
  755. package/dist/frontend/lowering/expressions/identifiers.js +830 -0
  756. package/dist/frontend/lowering/expressions/identifiers.js.map +1 -0
  757. package/dist/frontend/lowering/expressions/keyed-field-targets.d.ts +52 -0
  758. package/dist/frontend/lowering/expressions/keyed-field-targets.js +307 -0
  759. package/dist/frontend/lowering/expressions/keyed-field-targets.js.map +1 -0
  760. package/dist/frontend/lowering/expressions/narrowing.d.ts +37 -0
  761. package/dist/frontend/lowering/expressions/narrowing.js +1337 -0
  762. package/dist/frontend/lowering/expressions/narrowing.js.map +1 -0
  763. package/dist/frontend/lowering/expressions/native-proxy.js +4 -4
  764. package/dist/frontend/lowering/expressions/native-proxy.js.map +1 -1
  765. package/dist/frontend/lowering/expressions/nullish-assignment.js +45 -0
  766. package/dist/frontend/lowering/expressions/nullish-assignment.js.map +1 -1
  767. package/dist/frontend/lowering/expressions/object-literals.d.ts +10 -0
  768. package/dist/frontend/lowering/expressions/object-literals.js +301 -86
  769. package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
  770. package/dist/frontend/lowering/expressions/optional-chains.d.ts +3 -2
  771. package/dist/frontend/lowering/expressions/optional-chains.js +103 -17
  772. package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
  773. package/dist/frontend/lowering/expressions/property-access.d.ts +115 -0
  774. package/dist/frontend/lowering/expressions/property-access.js +3787 -0
  775. package/dist/frontend/lowering/expressions/property-access.js.map +1 -0
  776. package/dist/frontend/lowering/expressions/relational.d.ts +28 -0
  777. package/dist/frontend/lowering/expressions/relational.js +1724 -0
  778. package/dist/frontend/lowering/expressions/relational.js.map +1 -0
  779. package/dist/frontend/lowering/expressions/typeof.d.ts +22 -0
  780. package/dist/frontend/lowering/expressions/typeof.js +551 -0
  781. package/dist/frontend/lowering/expressions/typeof.js.map +1 -0
  782. package/dist/frontend/lowering/expressions/union-fields.js +1 -1
  783. package/dist/frontend/lowering/expressions/union-fields.js.map +1 -1
  784. package/dist/frontend/lowering/expressions/updates.d.ts +21 -0
  785. package/dist/frontend/lowering/expressions/updates.js +780 -0
  786. package/dist/frontend/lowering/expressions/updates.js.map +1 -0
  787. package/dist/frontend/lowering/function-context.d.ts +10 -0
  788. package/dist/frontend/lowering/function-context.js +11 -1
  789. package/dist/frontend/lowering/function-context.js.map +1 -1
  790. package/dist/frontend/lowering/function-returns.js +52 -28
  791. package/dist/frontend/lowering/function-returns.js.map +1 -1
  792. package/dist/frontend/lowering/general-streams.d.ts +25 -0
  793. package/dist/frontend/lowering/general-streams.js +108 -0
  794. package/dist/frontend/lowering/general-streams.js.map +1 -0
  795. package/dist/frontend/lowering/generator-delegation.d.ts +8 -0
  796. package/dist/frontend/lowering/generator-delegation.js +191 -1
  797. package/dist/frontend/lowering/generator-delegation.js.map +1 -1
  798. package/dist/frontend/lowering/generator-dynamic-dispatch.d.ts +7 -0
  799. package/dist/frontend/lowering/generator-dynamic-dispatch.js +172 -69
  800. package/dist/frontend/lowering/generator-dynamic-dispatch.js.map +1 -1
  801. package/dist/frontend/lowering/generic-functions.d.ts +43 -0
  802. package/dist/frontend/lowering/generic-functions.js +593 -118
  803. package/dist/frontend/lowering/generic-functions.js.map +1 -1
  804. package/dist/frontend/lowering/handle-properties.d.ts +24 -0
  805. package/dist/frontend/lowering/handle-properties.js +281 -0
  806. package/dist/frontend/lowering/handle-properties.js.map +1 -0
  807. package/dist/frontend/lowering/import-meta.js +2 -2
  808. package/dist/frontend/lowering/import-meta.js.map +1 -1
  809. package/dist/frontend/lowering/intern-tables.js +10 -9
  810. package/dist/frontend/lowering/intern-tables.js.map +1 -1
  811. package/dist/frontend/lowering/iterable-spelling.d.ts +7 -0
  812. package/dist/frontend/lowering/iterable-spelling.js +38 -0
  813. package/dist/frontend/lowering/iterable-spelling.js.map +1 -0
  814. package/dist/frontend/lowering/iterator-adapters.d.ts +19 -0
  815. package/dist/frontend/lowering/iterator-adapters.js +331 -3
  816. package/dist/frontend/lowering/iterator-adapters.js.map +1 -1
  817. package/dist/frontend/lowering/js-class-fields.d.ts +28 -0
  818. package/dist/frontend/lowering/js-class-fields.js +170 -0
  819. package/dist/frontend/lowering/js-class-fields.js.map +1 -0
  820. package/dist/frontend/lowering/js-dynamic-objects.d.ts +15 -0
  821. package/dist/frontend/lowering/js-dynamic-objects.js +299 -0
  822. package/dist/frontend/lowering/js-dynamic-objects.js.map +1 -0
  823. package/dist/frontend/lowering/js-dynamic-objects.test.d.ts +1 -0
  824. package/dist/frontend/lowering/js-dynamic-objects.test.js +35 -0
  825. package/dist/frontend/lowering/js-dynamic-objects.test.js.map +1 -0
  826. package/dist/frontend/lowering/json-require.d.ts +22 -0
  827. package/dist/frontend/lowering/json-require.js +131 -0
  828. package/dist/frontend/lowering/json-require.js.map +1 -0
  829. package/dist/frontend/lowering/key-order-witness.d.ts +44 -0
  830. package/dist/frontend/lowering/key-order-witness.js +641 -0
  831. package/dist/frontend/lowering/key-order-witness.js.map +1 -0
  832. package/dist/frontend/lowering/key-order-witness.test.d.ts +1 -0
  833. package/dist/frontend/lowering/key-order-witness.test.js +239 -0
  834. package/dist/frontend/lowering/key-order-witness.test.js.map +1 -0
  835. package/dist/frontend/lowering/lifetime-regions.js +7 -7
  836. package/dist/frontend/lowering/lifetime-regions.js.map +1 -1
  837. package/dist/frontend/lowering/lower-array-sort.d.ts +33 -15
  838. package/dist/frontend/lowering/lower-array-sort.js +117 -21
  839. package/dist/frontend/lowering/lower-array-sort.js.map +1 -1
  840. package/dist/frontend/lowering/lower-array-sort.test.js +93 -14
  841. package/dist/frontend/lowering/lower-array-sort.test.js.map +1 -1
  842. package/dist/frontend/lowering/lower-assert.js +61 -60
  843. package/dist/frontend/lowering/lower-assert.js.map +1 -1
  844. package/dist/frontend/lowering/lower-async-iteration.d.ts +10 -1
  845. package/dist/frontend/lowering/lower-async-iteration.js +34 -6
  846. package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
  847. package/dist/frontend/lowering/lower-builtin-values.d.ts +5 -0
  848. package/dist/frontend/lowering/lower-builtin-values.js +33 -3
  849. package/dist/frontend/lowering/lower-builtin-values.js.map +1 -1
  850. package/dist/frontend/lowering/lower-calls.js +1404 -448
  851. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  852. package/dist/frontend/lowering/lower-classes.d.ts +54 -3
  853. package/dist/frontend/lowering/lower-classes.js +1529 -472
  854. package/dist/frontend/lowering/lower-classes.js.map +1 -1
  855. package/dist/frontend/lowering/lower-comptime.d.ts +4 -2
  856. package/dist/frontend/lowering/lower-comptime.js +111 -13
  857. package/dist/frontend/lowering/lower-comptime.js.map +1 -1
  858. package/dist/frontend/lowering/lower-console.js +13 -11
  859. package/dist/frontend/lowering/lower-console.js.map +1 -1
  860. package/dist/frontend/lowering/lower-dgram.d.ts +10 -0
  861. package/dist/frontend/lowering/lower-dgram.js +241 -21
  862. package/dist/frontend/lowering/lower-dgram.js.map +1 -1
  863. package/dist/frontend/lowering/lower-enums.js +113 -14
  864. package/dist/frontend/lowering/lower-enums.js.map +1 -1
  865. package/dist/frontend/lowering/lower-event-emitter.d.ts +16 -7
  866. package/dist/frontend/lowering/lower-event-emitter.js +258 -70
  867. package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
  868. package/dist/frontend/lowering/lower-event-target.js +2 -2
  869. package/dist/frontend/lowering/lower-event-target.js.map +1 -1
  870. package/dist/frontend/lowering/lower-expando.js +17 -13
  871. package/dist/frontend/lowering/lower-expando.js.map +1 -1
  872. package/dist/frontend/lowering/lower-exprs.d.ts +188 -186
  873. package/dist/frontend/lowering/lower-exprs.js +1509 -12486
  874. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  875. package/dist/frontend/lowering/lower-functions.js +72 -22
  876. package/dist/frontend/lowering/lower-functions.js.map +1 -1
  877. package/dist/frontend/lowering/lower-generators.d.ts +6 -0
  878. package/dist/frontend/lowering/lower-generators.js +39 -20
  879. package/dist/frontend/lowering/lower-generators.js.map +1 -1
  880. package/dist/frontend/lowering/lower-global-value.js +5 -1
  881. package/dist/frontend/lowering/lower-global-value.js.map +1 -1
  882. package/dist/frontend/lowering/lower-inspect.js +900 -107
  883. package/dist/frontend/lowering/lower-inspect.js.map +1 -1
  884. package/dist/frontend/lowering/lower-mixins.js +23 -20
  885. package/dist/frontend/lowering/lower-mixins.js.map +1 -1
  886. package/dist/frontend/lowering/lower-mock.d.ts +8 -1
  887. package/dist/frontend/lowering/lower-mock.js +185 -18
  888. package/dist/frontend/lowering/lower-mock.js.map +1 -1
  889. package/dist/frontend/lowering/lower-modules.d.ts +11 -3
  890. package/dist/frontend/lowering/lower-modules.js +445 -94
  891. package/dist/frontend/lowering/lower-modules.js.map +1 -1
  892. package/dist/frontend/lowering/lower-namespaces.d.ts +6 -0
  893. package/dist/frontend/lowering/lower-namespaces.js +65 -33
  894. package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
  895. package/dist/frontend/lowering/lower-node-module.d.ts +16 -0
  896. package/dist/frontend/lowering/lower-node-module.js +147 -14
  897. package/dist/frontend/lowering/lower-node-module.js.map +1 -1
  898. package/dist/frontend/lowering/lower-server.d.ts +6 -6
  899. package/dist/frontend/lowering/lower-server.js +514 -101
  900. package/dist/frontend/lowering/lower-server.js.map +1 -1
  901. package/dist/frontend/lowering/lower-stdlib.d.ts +4 -0
  902. package/dist/frontend/lowering/lower-stdlib.js +179 -118
  903. package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
  904. package/dist/frontend/lowering/lower-stmts.d.ts +30 -7
  905. package/dist/frontend/lowering/lower-stmts.js +1950 -433
  906. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  907. package/dist/frontend/lowering/lower-stream.d.ts +3 -0
  908. package/dist/frontend/lowering/lower-stream.js +398 -56
  909. package/dist/frontend/lowering/lower-stream.js.map +1 -1
  910. package/dist/frontend/lowering/lower-test.d.ts +3 -0
  911. package/dist/frontend/lowering/lower-test.js +437 -62
  912. package/dist/frontend/lowering/lower-test.js.map +1 -1
  913. package/dist/frontend/lowering/lower-timers.js +96 -32
  914. package/dist/frontend/lowering/lower-timers.js.map +1 -1
  915. package/dist/frontend/lowering/lower-url.js +1 -1
  916. package/dist/frontend/lowering/lower-url.js.map +1 -1
  917. package/dist/frontend/lowering/lowerer.d.ts +424 -27
  918. package/dist/frontend/lowering/lowerer.js +2062 -310
  919. package/dist/frontend/lowering/lowerer.js.map +1 -1
  920. package/dist/frontend/lowering/lowerer.test.js +10 -4
  921. package/dist/frontend/lowering/lowerer.test.js.map +1 -1
  922. package/dist/frontend/lowering/maybe-promise.d.ts +46 -0
  923. package/dist/frontend/lowering/maybe-promise.js +249 -0
  924. package/dist/frontend/lowering/maybe-promise.js.map +1 -0
  925. package/dist/frontend/lowering/module-member-this.d.ts +3 -0
  926. package/dist/frontend/lowering/module-member-this.js +262 -0
  927. package/dist/frontend/lowering/module-member-this.js.map +1 -0
  928. package/dist/frontend/lowering/module-namespace-elements.js +1 -1
  929. package/dist/frontend/lowering/module-namespace-elements.js.map +1 -1
  930. package/dist/frontend/lowering/nan-coded-reads.d.ts +3 -0
  931. package/dist/frontend/lowering/nan-coded-reads.js +45 -32
  932. package/dist/frontend/lowering/nan-coded-reads.js.map +1 -1
  933. package/dist/frontend/lowering/narrowing-stability.d.ts +18 -3
  934. package/dist/frontend/lowering/narrowing-stability.js +104 -32
  935. package/dist/frontend/lowering/narrowing-stability.js.map +1 -1
  936. package/dist/frontend/lowering/native-ffi.js +11 -11
  937. package/dist/frontend/lowering/native-ffi.js.map +1 -1
  938. package/dist/frontend/lowering/object-factory-new.js +6 -8
  939. package/dist/frontend/lowering/object-factory-new.js.map +1 -1
  940. package/dist/frontend/lowering/private-brands.d.ts +46 -0
  941. package/dist/frontend/lowering/private-brands.js +265 -0
  942. package/dist/frontend/lowering/private-brands.js.map +1 -0
  943. package/dist/frontend/lowering/promise-executor-adapter.d.ts +11 -0
  944. package/dist/frontend/lowering/promise-executor-adapter.js +87 -0
  945. package/dist/frontend/lowering/promise-executor-adapter.js.map +1 -0
  946. package/dist/frontend/lowering/rebindable-functions.d.ts +8 -0
  947. package/dist/frontend/lowering/rebindable-functions.js +54 -0
  948. package/dist/frontend/lowering/rebindable-functions.js.map +1 -0
  949. package/dist/frontend/lowering/require-initialization.d.ts +32 -0
  950. package/dist/frontend/lowering/require-initialization.js +246 -0
  951. package/dist/frontend/lowering/require-initialization.js.map +1 -0
  952. package/dist/frontend/lowering/runtime-optional-bounds.js +7 -7
  953. package/dist/frontend/lowering/runtime-optional-bounds.js.map +1 -1
  954. package/dist/frontend/lowering/runtime-optional-elements.js +12 -12
  955. package/dist/frontend/lowering/runtime-optional-elements.js.map +1 -1
  956. package/dist/frontend/lowering/runtime-optional-guards.js +10 -10
  957. package/dist/frontend/lowering/runtime-optional-guards.js.map +1 -1
  958. package/dist/frontend/lowering/runtime-optional-guards.test.js +1 -1
  959. package/dist/frontend/lowering/runtime-optional-guards.test.js.map +1 -1
  960. package/dist/frontend/lowering/runtime-optional-ownership.js +10 -9
  961. package/dist/frontend/lowering/runtime-optional-ownership.js.map +1 -1
  962. package/dist/frontend/lowering/runtime-optional-provenance.js +2 -2
  963. package/dist/frontend/lowering/runtime-optional-provenance.js.map +1 -1
  964. package/dist/frontend/lowering/runtime-optional-records.d.ts +35 -0
  965. package/dist/frontend/lowering/runtime-optional-records.js +205 -32
  966. package/dist/frontend/lowering/runtime-optional-records.js.map +1 -1
  967. package/dist/frontend/lowering/runtime-optional-records.test.js +19 -1
  968. package/dist/frontend/lowering/runtime-optional-records.test.js.map +1 -1
  969. package/dist/frontend/lowering/sanitize-class-types.test.js +2 -2
  970. package/dist/frontend/lowering/split-consumers.js +4 -4
  971. package/dist/frontend/lowering/split-consumers.js.map +1 -1
  972. package/dist/frontend/lowering/static-function-names.d.ts +28 -0
  973. package/dist/frontend/lowering/static-function-names.js +212 -0
  974. package/dist/frontend/lowering/static-function-names.js.map +1 -0
  975. package/dist/frontend/lowering/static-this.js +6 -6
  976. package/dist/frontend/lowering/static-this.js.map +1 -1
  977. package/dist/frontend/lowering/static-typeof.d.ts +26 -0
  978. package/dist/frontend/lowering/static-typeof.js +133 -0
  979. package/dist/frontend/lowering/static-typeof.js.map +1 -0
  980. package/dist/frontend/lowering/strict-mode.d.ts +5 -0
  981. package/dist/frontend/lowering/strict-mode.js +31 -0
  982. package/dist/frontend/lowering/strict-mode.js.map +1 -0
  983. package/dist/frontend/lowering/string-index-bounds.js +13 -12
  984. package/dist/frontend/lowering/string-index-bounds.js.map +1 -1
  985. package/dist/frontend/lowering/string-index.d.ts +12 -0
  986. package/dist/frontend/lowering/string-index.js +72 -1
  987. package/dist/frontend/lowering/string-index.js.map +1 -1
  988. package/dist/frontend/lowering/surfaces.d.ts +12 -3
  989. package/dist/frontend/lowering/surfaces.js +282 -45
  990. package/dist/frontend/lowering/surfaces.js.map +1 -1
  991. package/dist/frontend/lowering/symbol-fields.d.ts +7 -0
  992. package/dist/frontend/lowering/symbol-fields.js +204 -36
  993. package/dist/frontend/lowering/symbol-fields.js.map +1 -1
  994. package/dist/frontend/lowering/symbol-methods.d.ts +2 -1
  995. package/dist/frontend/lowering/symbol-methods.js +24 -6
  996. package/dist/frontend/lowering/symbol-methods.js.map +1 -1
  997. package/dist/frontend/lowering/thenables.d.ts +16 -0
  998. package/dist/frontend/lowering/thenables.js +124 -0
  999. package/dist/frontend/lowering/thenables.js.map +1 -0
  1000. package/dist/frontend/lowering/thread-slots.d.ts +13 -0
  1001. package/dist/frontend/lowering/thread-slots.js +208 -0
  1002. package/dist/frontend/lowering/thread-slots.js.map +1 -0
  1003. package/dist/frontend/lowering/typed-arguments.d.ts +74 -0
  1004. package/dist/frontend/lowering/typed-arguments.js +472 -0
  1005. package/dist/frontend/lowering/typed-arguments.js.map +1 -0
  1006. package/dist/frontend/lowering/union-retag.d.ts +8 -0
  1007. package/dist/frontend/lowering/union-retag.js +27 -0
  1008. package/dist/frontend/lowering/union-retag.js.map +1 -1
  1009. package/dist/frontend/lowering/union-retag.test.js +24 -1
  1010. package/dist/frontend/lowering/union-retag.test.js.map +1 -1
  1011. package/dist/frontend/lowering/var-hoisting.js +6 -6
  1012. package/dist/frontend/lowering/var-hoisting.js.map +1 -1
  1013. package/dist/frontend/lowering/width-lift.d.ts +4 -0
  1014. package/dist/frontend/mock-shapes.js +13 -6
  1015. package/dist/frontend/mock-shapes.js.map +1 -1
  1016. package/dist/frontend/module-source-candidates.js +1 -1
  1017. package/dist/frontend/module-source-candidates.js.map +1 -1
  1018. package/dist/frontend/module-source-candidates.test.js +2 -1
  1019. package/dist/frontend/module-source-candidates.test.js.map +1 -1
  1020. package/dist/frontend/module-syntax.js +8 -8
  1021. package/dist/frontend/module-syntax.js.map +1 -1
  1022. package/dist/frontend/npm-static-builtin-aliases.d.ts +8 -0
  1023. package/dist/frontend/npm-static-builtin-aliases.js +65 -0
  1024. package/dist/frontend/npm-static-builtin-aliases.js.map +1 -0
  1025. package/dist/frontend/npm-static-bundled-chunks.d.ts +58 -0
  1026. package/dist/frontend/npm-static-bundled-chunks.js +981 -0
  1027. package/dist/frontend/npm-static-bundled-chunks.js.map +1 -0
  1028. package/dist/frontend/npm-static-bundled-chunks.test.d.ts +1 -0
  1029. package/dist/frontend/npm-static-bundled-chunks.test.js +399 -0
  1030. package/dist/frontend/npm-static-bundled-chunks.test.js.map +1 -0
  1031. package/dist/frontend/npm-static-bundled-cjs.js +24 -23
  1032. package/dist/frontend/npm-static-bundled-cjs.js.map +1 -1
  1033. package/dist/frontend/npm-static-bundled-esm.d.ts +9 -0
  1034. package/dist/frontend/npm-static-bundled-esm.js +988 -0
  1035. package/dist/frontend/npm-static-bundled-esm.js.map +1 -0
  1036. package/dist/frontend/npm-static-bundled-esm.test.d.ts +1 -0
  1037. package/dist/frontend/npm-static-bundled-esm.test.js +336 -0
  1038. package/dist/frontend/npm-static-bundled-esm.test.js.map +1 -0
  1039. package/dist/frontend/npm-static-cjs-exports-alias.d.ts +2 -0
  1040. package/dist/frontend/npm-static-cjs-exports-alias.js +186 -0
  1041. package/dist/frontend/npm-static-cjs-exports-alias.js.map +1 -0
  1042. package/dist/frontend/npm-static-cjs-exports-alias.test.d.ts +1 -0
  1043. package/dist/frontend/npm-static-cjs-exports-alias.test.js +73 -0
  1044. package/dist/frontend/npm-static-cjs-exports-alias.test.js.map +1 -0
  1045. package/dist/frontend/npm-static-cjs-exports-var.d.ts +2 -0
  1046. package/dist/frontend/npm-static-cjs-exports-var.js +236 -0
  1047. package/dist/frontend/npm-static-cjs-exports-var.js.map +1 -0
  1048. package/dist/frontend/npm-static-declaration-syntax.js +102 -101
  1049. package/dist/frontend/npm-static-declaration-syntax.js.map +1 -1
  1050. package/dist/frontend/npm-static-enum-iife.d.ts +6 -0
  1051. package/dist/frontend/npm-static-enum-iife.js +280 -0
  1052. package/dist/frontend/npm-static-enum-iife.js.map +1 -0
  1053. package/dist/frontend/npm-static-enum-iife.test.d.ts +1 -0
  1054. package/dist/frontend/npm-static-enum-iife.test.js +116 -0
  1055. package/dist/frontend/npm-static-enum-iife.test.js.map +1 -0
  1056. package/dist/frontend/npm-static-prune.js +36 -24
  1057. package/dist/frontend/npm-static-prune.js.map +1 -1
  1058. package/dist/frontend/npm-static-rewrite-host.d.ts +4 -1
  1059. package/dist/frontend/npm-static-rewrite-host.js +14 -3
  1060. package/dist/frontend/npm-static-rewrite-host.js.map +1 -1
  1061. package/dist/frontend/npm-static-rewrite-syntax.d.ts +19 -0
  1062. package/dist/frontend/npm-static-rewrite-syntax.js +274 -101
  1063. package/dist/frontend/npm-static-rewrite-syntax.js.map +1 -1
  1064. package/dist/frontend/npm-static-subtyping.js +7 -9
  1065. package/dist/frontend/npm-static-subtyping.js.map +1 -1
  1066. package/dist/frontend/npm-static.d.ts +25 -1
  1067. package/dist/frontend/npm-static.js +212 -16
  1068. package/dist/frontend/npm-static.js.map +1 -1
  1069. package/dist/frontend/npm-static.test.js +22 -1
  1070. package/dist/frontend/npm-static.test.js.map +1 -1
  1071. package/dist/frontend/npm.js +13 -0
  1072. package/dist/frontend/npm.js.map +1 -1
  1073. package/dist/frontend/package-shims.d.ts +47 -0
  1074. package/dist/frontend/package-shims.js +300 -0
  1075. package/dist/frontend/package-shims.js.map +1 -0
  1076. package/dist/frontend/pipeline.js +230 -26
  1077. package/dist/frontend/pipeline.js.map +1 -1
  1078. package/dist/frontend/pipeline.test.js +22 -1
  1079. package/dist/frontend/pipeline.test.js.map +1 -1
  1080. package/dist/frontend/program-analysis.d.ts +6 -1
  1081. package/dist/frontend/program-analysis.js +7 -0
  1082. package/dist/frontend/program-analysis.js.map +1 -1
  1083. package/dist/frontend/program.d.ts +100 -2
  1084. package/dist/frontend/program.js +1627 -262
  1085. package/dist/frontend/program.js.map +1 -1
  1086. package/dist/frontend/program.test.js +76 -6
  1087. package/dist/frontend/program.test.js.map +1 -1
  1088. package/dist/frontend/resolve.js +49 -2
  1089. package/dist/frontend/resolve.js.map +1 -1
  1090. package/dist/frontend/resolve.test.js +49 -0
  1091. package/dist/frontend/resolve.test.js.map +1 -1
  1092. package/dist/frontend/services.d.ts +26 -1
  1093. package/dist/frontend/services.js +59 -3
  1094. package/dist/frontend/services.js.map +1 -1
  1095. package/dist/frontend/services.test.js +2 -1
  1096. package/dist/frontend/services.test.js.map +1 -1
  1097. package/dist/frontend/threads-import.js +1 -1
  1098. package/dist/frontend/threads-import.js.map +1 -1
  1099. package/dist/frontend/tier-analysis.d.ts +71 -0
  1100. package/dist/frontend/tier-analysis.js +522 -0
  1101. package/dist/frontend/tier-analysis.js.map +1 -0
  1102. package/dist/frontend/ts7/api-conformance.d.ts +234 -0
  1103. package/dist/frontend/ts7/api-conformance.js +7 -0
  1104. package/dist/frontend/ts7/api-conformance.js.map +1 -0
  1105. package/dist/frontend/ts7/ast-guards.generated.js +2 -1
  1106. package/dist/frontend/ts7/ast-guards.generated.js.map +1 -1
  1107. package/dist/frontend/ts7/ast-node.d.ts +47 -25
  1108. package/dist/frontend/ts7/ast-node.js +64 -18
  1109. package/dist/frontend/ts7/ast-node.js.map +1 -1
  1110. package/dist/frontend/ts7/ast-node.test.js +36 -12
  1111. package/dist/frontend/ts7/ast-node.test.js.map +1 -1
  1112. package/dist/frontend/ts7/ast-types.d.ts +10 -3
  1113. package/dist/frontend/ts7/ast-types.generated.d.ts +39 -39
  1114. package/dist/frontend/ts7/ast.d.ts +1 -0
  1115. package/dist/frontend/ts7/ast.js +3 -2
  1116. package/dist/frontend/ts7/ast.js.map +1 -1
  1117. package/dist/frontend/ts7/checker-backend.d.ts +23 -0
  1118. package/dist/frontend/ts7/checker-backend.js +88 -0
  1119. package/dist/frontend/ts7/checker-backend.js.map +1 -0
  1120. package/dist/frontend/ts7/checker-backend.test.d.ts +1 -0
  1121. package/dist/frontend/ts7/checker-backend.test.js +63 -0
  1122. package/dist/frontend/ts7/checker-backend.test.js.map +1 -0
  1123. package/dist/frontend/ts7/checker-cache.d.ts +0 -3
  1124. package/dist/frontend/ts7/checker-cache.js +0 -6
  1125. package/dist/frontend/ts7/checker-cache.js.map +1 -1
  1126. package/dist/frontend/ts7/checker.d.ts +18 -11
  1127. package/dist/frontend/ts7/checker.js +42 -55
  1128. package/dist/frontend/ts7/checker.js.map +1 -1
  1129. package/dist/frontend/ts7/checker.test.js +10 -7
  1130. package/dist/frontend/ts7/checker.test.js.map +1 -1
  1131. package/dist/frontend/ts7/diagnostic.d.ts +19 -0
  1132. package/dist/frontend/ts7/diagnostic.js +22 -0
  1133. package/dist/frontend/ts7/diagnostic.js.map +1 -0
  1134. package/dist/frontend/ts7/node-functions.d.ts +8 -0
  1135. package/dist/frontend/ts7/node-functions.js +18 -0
  1136. package/dist/frontend/ts7/node-functions.js.map +1 -0
  1137. package/dist/frontend/ts7/program-host.d.ts +10 -5
  1138. package/dist/frontend/ts7/program-host.js +19 -0
  1139. package/dist/frontend/ts7/program-host.js.map +1 -1
  1140. package/dist/frontend/ts7/rpc-api.d.ts +5 -1
  1141. package/dist/frontend/ts7/rpc-api.js +8 -1
  1142. package/dist/frontend/ts7/rpc-api.js.map +1 -1
  1143. package/dist/frontend/ts7/semantic-checker.d.ts +13 -6
  1144. package/dist/frontend/ts7/semantic-checker.js +26 -8
  1145. package/dist/frontend/ts7/semantic-checker.js.map +1 -1
  1146. package/dist/frontend/ts7/semantic-checker.test.js +12 -9
  1147. package/dist/frontend/ts7/semantic-checker.test.js.map +1 -1
  1148. package/dist/frontend/ts7/semantic-model.d.ts +57 -24
  1149. package/dist/frontend/ts7/semantic-model.js +114 -16
  1150. package/dist/frontend/ts7/semantic-model.js.map +1 -1
  1151. package/dist/frontend/ts7/semantic-model.test.js +4 -4
  1152. package/dist/frontend/ts7/semantic-model.test.js.map +1 -1
  1153. package/dist/frontend/ts7/semantic-types.d.ts +7 -3
  1154. package/dist/frontend/ts7/semantic-types.js +1 -1
  1155. package/dist/frontend/ts7/semantic-types.js.map +1 -1
  1156. package/dist/frontend/ts7/session.d.ts +30 -15
  1157. package/dist/frontend/ts7/session.js +8 -5
  1158. package/dist/frontend/ts7/session.js.map +1 -1
  1159. package/dist/frontend/ts7/session.test.js +9 -5
  1160. package/dist/frontend/ts7/session.test.js.map +1 -1
  1161. package/dist/frontend/ts7/source-parser.d.ts +6 -2
  1162. package/dist/frontend/ts7/source-parser.js +24 -3
  1163. package/dist/frontend/ts7/source-parser.js.map +1 -1
  1164. package/dist/frontend/ts7/source-parser.test.js +38 -17
  1165. package/dist/frontend/ts7/source-parser.test.js.map +1 -1
  1166. package/dist/frontend/type-mapper.d.ts +122 -2
  1167. package/dist/frontend/type-mapper.js +2735 -723
  1168. package/dist/frontend/type-mapper.js.map +1 -1
  1169. package/dist/frontend/type-only-imports.d.ts +28 -0
  1170. package/dist/frontend/type-only-imports.js +122 -0
  1171. package/dist/frontend/type-only-imports.js.map +1 -0
  1172. package/dist/frontend/worker-target.js +8 -8
  1173. package/dist/frontend/worker-target.js.map +1 -1
  1174. package/dist/index.d.ts +4 -1
  1175. package/dist/index.js +87 -8
  1176. package/dist/index.js.map +1 -1
  1177. package/dist/ir/analysis.js +4 -2
  1178. package/dist/ir/analysis.js.map +1 -1
  1179. package/dist/ir/api.d.ts +1 -1
  1180. package/dist/ir/api.js +1 -1
  1181. package/dist/ir/api.js.map +1 -1
  1182. package/dist/ir/array-length-stability.d.ts +31 -0
  1183. package/dist/ir/array-length-stability.js +249 -0
  1184. package/dist/ir/array-length-stability.js.map +1 -0
  1185. package/dist/ir/array-length-stability.test.d.ts +1 -0
  1186. package/dist/ir/array-length-stability.test.js +134 -0
  1187. package/dist/ir/array-length-stability.test.js.map +1 -0
  1188. package/dist/ir/build.d.ts +2 -2
  1189. package/dist/ir/build.js +1 -1
  1190. package/dist/ir/build.js.map +1 -1
  1191. package/dist/ir/builtin-effects.js +116 -0
  1192. package/dist/ir/builtin-effects.js.map +1 -1
  1193. package/dist/ir/builtin-signatures.d.ts +1 -1
  1194. package/dist/ir/builtin-signatures.js +540 -29
  1195. package/dist/ir/builtin-signatures.js.map +1 -1
  1196. package/dist/ir/byte-numbers.js +3 -0
  1197. package/dist/ir/byte-numbers.js.map +1 -1
  1198. package/dist/ir/callback-specialization.d.ts +37 -0
  1199. package/dist/ir/callback-specialization.js +459 -0
  1200. package/dist/ir/callback-specialization.js.map +1 -0
  1201. package/dist/ir/callback-specialization.test.d.ts +1 -0
  1202. package/dist/ir/callback-specialization.test.js +208 -0
  1203. package/dist/ir/callback-specialization.test.js.map +1 -0
  1204. package/dist/ir/capture-values.d.ts +0 -1
  1205. package/dist/ir/capture-values.js +51 -40
  1206. package/dist/ir/capture-values.js.map +1 -1
  1207. package/dist/ir/constant-globals.test.js +1 -1
  1208. package/dist/ir/constant-tables.test.js +1 -1
  1209. package/dist/ir/field-values.test.js +1 -1
  1210. package/dist/ir/final-fields.test.js +1 -1
  1211. package/dist/ir/function-references.test.js +9 -1
  1212. package/dist/ir/function-references.test.js.map +1 -1
  1213. package/dist/ir/init-only-globals.test.js +1 -1
  1214. package/dist/ir/initializer-bindings.test.js +1 -1
  1215. package/dist/ir/int32-slots.d.ts +14 -0
  1216. package/dist/ir/int32-slots.js +97 -14
  1217. package/dist/ir/int32-slots.js.map +1 -1
  1218. package/dist/ir/int32-slots.test.js +1 -1
  1219. package/dist/ir/integer-loop-facts.d.ts +7 -0
  1220. package/dist/ir/integer-loop-facts.js +103 -17
  1221. package/dist/ir/integer-loop-facts.js.map +1 -1
  1222. package/dist/ir/integer-loops.d.ts +1 -1
  1223. package/dist/ir/integer-loops.js +39 -9
  1224. package/dist/ir/integer-loops.js.map +1 -1
  1225. package/dist/ir/integer-loops.test.js +104 -0
  1226. package/dist/ir/integer-loops.test.js.map +1 -1
  1227. package/dist/ir/integer-ranges.d.ts +13 -1
  1228. package/dist/ir/integer-ranges.js +125 -26
  1229. package/dist/ir/integer-ranges.js.map +1 -1
  1230. package/dist/ir/integer-ranges.test.js +273 -2
  1231. package/dist/ir/integer-ranges.test.js.map +1 -1
  1232. package/dist/ir/intrinsic-signatures.js +6 -0
  1233. package/dist/ir/intrinsic-signatures.js.map +1 -1
  1234. package/dist/ir/ir.d.ts +221 -58
  1235. package/dist/ir/ir.js +127 -12
  1236. package/dist/ir/ir.js.map +1 -1
  1237. package/dist/ir/ir.test.js +10 -0
  1238. package/dist/ir/ir.test.js.map +1 -1
  1239. package/dist/ir/js-ic.d.ts +52 -0
  1240. package/dist/ir/js-ic.js +199 -0
  1241. package/dist/ir/js-ic.js.map +1 -0
  1242. package/dist/ir/js-ic.test.d.ts +1 -0
  1243. package/dist/ir/js-ic.test.js +148 -0
  1244. package/dist/ir/js-ic.test.js.map +1 -0
  1245. package/dist/ir/jsval.d.ts +8 -0
  1246. package/dist/ir/jsval.js +399 -0
  1247. package/dist/ir/jsval.js.map +1 -0
  1248. package/dist/ir/jsval.test.d.ts +1 -0
  1249. package/dist/ir/jsval.test.js +239 -0
  1250. package/dist/ir/jsval.test.js.map +1 -0
  1251. package/dist/ir/runtime-features.d.ts +183 -33
  1252. package/dist/ir/runtime-features.js +795 -422
  1253. package/dist/ir/runtime-features.js.map +1 -1
  1254. package/dist/ir/scalar-records.test.js +1 -1
  1255. package/dist/ir/self-captures.d.ts +33 -0
  1256. package/dist/ir/self-captures.js +245 -0
  1257. package/dist/ir/self-captures.js.map +1 -0
  1258. package/dist/ir/self-captures.test.d.ts +1 -0
  1259. package/dist/ir/self-captures.test.js +135 -0
  1260. package/dist/ir/self-captures.test.js.map +1 -0
  1261. package/dist/ir/serialize.d.ts +1 -1
  1262. package/dist/ir/serialize.js +7 -4
  1263. package/dist/ir/serialize.js.map +1 -1
  1264. package/dist/ir/tiers.d.ts +26 -0
  1265. package/dist/ir/tiers.js +101 -0
  1266. package/dist/ir/tiers.js.map +1 -0
  1267. package/dist/ir/tiers.test.d.ts +1 -0
  1268. package/dist/ir/tiers.test.js +140 -0
  1269. package/dist/ir/tiers.test.js.map +1 -0
  1270. package/dist/ir/traverse.js +201 -150
  1271. package/dist/ir/traverse.js.map +1 -1
  1272. package/dist/ir/traverse.test.js +33 -30
  1273. package/dist/ir/traverse.test.js.map +1 -1
  1274. package/dist/ir/unshare.js +65 -3
  1275. package/dist/ir/unshare.js.map +1 -1
  1276. package/dist/ir/unshare.test.js +1 -1
  1277. package/dist/ir/validate.js +196 -76
  1278. package/dist/ir/validate.js.map +1 -1
  1279. package/dist/ir/validate.test.js +41 -11
  1280. package/dist/ir/validate.test.js.map +1 -1
  1281. package/dist/library/fence-eval.test.js +1 -1
  1282. package/dist/library/int-infer.test.js +4 -4
  1283. package/dist/library/ir-policy.js +14 -0
  1284. package/dist/library/ir-policy.js.map +1 -1
  1285. package/dist/library/library-cache.d.ts +1 -0
  1286. package/dist/library/library-cache.js.map +1 -1
  1287. package/dist/library/library-cache.test.js +5 -5
  1288. package/dist/library/library-profile.d.ts +4 -4
  1289. package/dist/library/library-profile.js +35 -7
  1290. package/dist/library/library-profile.js.map +1 -1
  1291. package/dist/library/prepare.js +13 -1
  1292. package/dist/library/prepare.js.map +1 -1
  1293. package/dist/native/cli.js +22 -0
  1294. package/dist/native/cli.js.map +1 -1
  1295. package/dist/native/compiler.js +35 -6
  1296. package/dist/native/compiler.js.map +1 -1
  1297. package/dist/native/compiler.test.js +2 -2
  1298. package/dist/native/executable-cache.js +3 -0
  1299. package/dist/native/executable-cache.js.map +1 -1
  1300. package/dist/native/prepare.js +10 -0
  1301. package/dist/native/prepare.js.map +1 -1
  1302. package/dist/native/sanitizer.test.js +19 -0
  1303. package/dist/native/sanitizer.test.js.map +1 -1
  1304. package/dist/native/toolchain.d.ts +2 -0
  1305. package/dist/native/toolchain.js +10 -1
  1306. package/dist/native/toolchain.js.map +1 -1
  1307. package/dist/native/toolchain.test.js +39 -1
  1308. package/dist/native/toolchain.test.js.map +1 -1
  1309. package/dist/startup-cache.d.ts +1 -0
  1310. package/dist/startup-cache.js +1 -0
  1311. package/dist/startup-cache.js.map +1 -1
  1312. package/dist/wasm/base64.d.ts +5 -0
  1313. package/dist/wasm/base64.js +62 -0
  1314. package/dist/wasm/base64.js.map +1 -0
  1315. package/dist/wasm/binary.d.ts +36 -0
  1316. package/dist/wasm/binary.js +1976 -0
  1317. package/dist/wasm/binary.js.map +1 -0
  1318. package/dist/wasm/binary.test.d.ts +1 -0
  1319. package/dist/wasm/binary.test.js +190 -0
  1320. package/dist/wasm/binary.test.js.map +1 -0
  1321. package/dist/wasm/discover.d.ts +38 -0
  1322. package/dist/wasm/discover.js +377 -0
  1323. package/dist/wasm/discover.js.map +1 -0
  1324. package/dist/wasm/discover.test.d.ts +1 -0
  1325. package/dist/wasm/discover.test.js +24 -0
  1326. package/dist/wasm/discover.test.js.map +1 -0
  1327. package/dist/wasm/module.d.ts +151 -0
  1328. package/dist/wasm/module.js +575 -0
  1329. package/dist/wasm/module.js.map +1 -0
  1330. package/dist/wasm/translate.d.ts +48 -0
  1331. package/dist/wasm/translate.js +2129 -0
  1332. package/dist/wasm/translate.js.map +1 -0
  1333. package/dist/wasm/translate.test.d.ts +1 -0
  1334. package/dist/wasm/translate.test.js +207 -0
  1335. package/dist/wasm/translate.test.js.map +1 -0
  1336. package/package.json +22 -20
  1337. package/shims/fs-extra/core/api.ts +1192 -0
  1338. package/shims/fs-extra/index.ts +9 -0
  1339. package/shims/undici/core/agent.ts +163 -0
  1340. package/shims/undici/core/api.ts +93 -0
  1341. package/shims/undici/core/client.ts +1304 -0
  1342. package/shims/undici/core/connector.ts +157 -0
  1343. package/shims/undici/core/diagnostics-types.ts +68 -0
  1344. package/shims/undici/core/diagnostics.ts +16 -0
  1345. package/shims/undici/core/dispatcher.ts +574 -0
  1346. package/shims/undici/core/errors-v5.ts +22 -0
  1347. package/shims/undici/core/errors-v7.ts +25 -0
  1348. package/shims/undici/core/errors.ts +255 -0
  1349. package/shims/undici/core/fetch.ts +635 -0
  1350. package/shims/undici/core/pool.ts +280 -0
  1351. package/shims/undici/core/readable.ts +268 -0
  1352. package/shims/undici/core/request.ts +313 -0
  1353. package/shims/undici/core/timers.ts +80 -0
  1354. package/shims/undici/core/types.ts +167 -0
  1355. package/shims/undici/core/util.ts +67 -0
  1356. package/shims/undici/v5.ts +119 -0
  1357. package/shims/undici/v7.ts +119 -0
  1358. package/surface-manifest.json +304 -22
@@ -0,0 +1,988 @@
1
+ /* Lazily initialized ES modules in a CommonJS bundle. esbuild scope-hoists
2
+ * every ES module it bundles into the bundle's own scope; one that some
3
+ * code require()s instead of importing runs from a lazy initializer,
4
+ *
5
+ * var COUNT, import_fs;
6
+ * var init_x = __esm({ "src/x.ts"() { import_fs = __toESM(require("fs")); COUNT = 0; } });
7
+ *
8
+ * and the requiring site reads its namespace as
9
+ * `(init_x(), __toCommonJS(x_exports))`. `init_x()` runs the body once (a
10
+ * call during the body answers immediately). The pass below keeps that
11
+ * shape in the bundle's scope and respells only what has no static
12
+ * representation:
13
+ *
14
+ * - the initializer becomes a run-once closure over the same body;
15
+ * - an interop binding the body assigns once from require() (`import_fs`
16
+ * above) becomes that require at the assignment's position, and its
17
+ * member reads become member reads of the required module, exactly
18
+ * like the top-level interop erasure (npm-static-rewrite-syntax.ts);
19
+ * - a namespace read only through member reads becomes an object
20
+ * literal of getters over the module's live bindings (what
21
+ * __toCommonJS copies, minus the non-enumerable __esModule mark no
22
+ * member read can reach).
23
+ *
24
+ * The respelled interop reads resolve the required module even if they
25
+ * ran before the initializer, where Node would read a member of
26
+ * undefined and throw; esbuild only reaches them through the module's
27
+ * own code, which runs after its initializer. Shapes outside the
28
+ * recognized forms answer a degrade reason. */
29
+ import * as ts from "./ts7/syntax.js";
30
+ import { bareRequireSpecOf } from "./cjs-syntax.js";
31
+ import { helperTokens } from "./helper-tokens.js";
32
+ import { canonicalBuiltinModule } from "./builtin-modules.js";
33
+ import { applyEdits, countDeclarations, declaredNames, factoryFrameUse, helperBase, isWritten, references, strictPrologue, unparen, } from "./npm-static-bundled-chunks.js";
34
+ import { getTextOfNode, tokenStartOfNode } from "./ts7/node-functions.js";
35
+ const ESM_SHAPE_DEGRADE = "its shipped JS initializes bundled ES modules through the __esm helper in a shape the " +
36
+ "recognizer cannot verify";
37
+ /* The recognized __esm forms over its parameter names (FN, RES) and the
38
+ * own-key reader (KEYS): keyed `(FN, RES) => function [name]() { return
39
+ * <keyed>; }` with a one-method object argument, and arrow
40
+ * `(FN, RES) => () => (<arrow>)` with a function argument. */
41
+ const KEYED_RETURN = "FN && (RES = (0, FN[KEYS(FN)[0]])(FN = 0)), RES";
42
+ const ARROW_BODY = "(FN && (RES = FN(FN = 0)), RES)";
43
+ function template(text, fn, res, keys) {
44
+ return helperTokens(text
45
+ .replace(/\bFN\b/g, fn)
46
+ .replace(/\bRES\b/g, res)
47
+ .replace(/\bKEYS\b/g, keys));
48
+ }
49
+ function esmHelperForm(init, sf, ownNames) {
50
+ const fn = unparen(init);
51
+ if (!ts.isArrowFunction(fn) || fn.parameters.nodes.length !== 2 || ts.isBlock(fn.body))
52
+ return null;
53
+ const [p0, p1] = fn.parameters.nodes;
54
+ if (!p0 ||
55
+ !p1 ||
56
+ !ts.isIdentifier(p0.name) ||
57
+ !ts.isIdentifier(p1.name) ||
58
+ p0.initializer ||
59
+ p1.initializer ||
60
+ p0.name.text === p1.name.text)
61
+ return null;
62
+ const [f, r] = [p0.name.text, p1.name.text];
63
+ const body = unparen(fn.body);
64
+ if (ts.isFunctionExpression(body)) {
65
+ if (body.parameters.nodes.length !== 0 || body.asteriskToken || body.modifiers?.nodes.length)
66
+ return null;
67
+ const stmts = body.body.statements.nodes;
68
+ const ret = stmts[0];
69
+ if (stmts.length !== 1 || !ret || !ts.isReturnStatement(ret) || !ret.expression)
70
+ return null;
71
+ const text = getTextOfNode(ret.expression);
72
+ const keys = /\[\s*([A-Za-z_$][\w$]*(?:\.keys)?)\s*\(/.exec(text)?.[1];
73
+ if (keys === undefined || (keys !== "Object.keys" && !ownNames(keys)))
74
+ return null;
75
+ return helperTokens(text) === template(KEYED_RETURN, f, r, keys) ? "keyed" : null;
76
+ }
77
+ if (ts.isArrowFunction(body) && body.parameters.nodes.length === 0 && !ts.isBlock(body.body)) {
78
+ const actual = helperTokens(getTextOfNode(body.body));
79
+ return actual !== null && actual === template(ARROW_BODY, f, r, "") ? "arrow" : null;
80
+ }
81
+ return null;
82
+ }
83
+ /** Pads the given declarators out of their statements (separating commas
84
+ * included; a statement whose declarators all go pads whole). */
85
+ function removeDeclarators(sf, dead) {
86
+ const edits = [];
87
+ const stmts = new Set();
88
+ for (const d of dead) {
89
+ const stmt = d.parent?.parent;
90
+ if (stmt !== undefined && ts.isVariableStatement(stmt))
91
+ stmts.add(stmt);
92
+ }
93
+ for (const stmt of stmts) {
94
+ const decls = stmt.declarationList.declarations.nodes;
95
+ const deadAt = decls.map((d) => dead.has(d));
96
+ if (deadAt.every((x) => x)) {
97
+ edits.push({ start: tokenStartOfNode(stmt), end: stmt.end, text: "" });
98
+ continue;
99
+ }
100
+ const lastLive = deadAt.lastIndexOf(false);
101
+ for (let i = 0; i < decls.length; i++) {
102
+ if (!deadAt[i])
103
+ continue;
104
+ edits.push(i < lastLive
105
+ ? { start: tokenStartOfNode(decls[i]), end: tokenStartOfNode(decls[i + 1]), text: "" }
106
+ : { start: decls[lastLive].end, end: decls[i].end, text: "" });
107
+ }
108
+ }
109
+ return edits;
110
+ }
111
+ /** True when `id` roots the member chain a `new` expression constructs. */
112
+ function inNewCallee(id) {
113
+ let e = id;
114
+ for (let p = e.parent; p !== undefined; e = p, p = p.parent) {
115
+ if ((ts.isPropertyAccessExpression(p) || ts.isElementAccessExpression(p)) && p.expression === e)
116
+ continue;
117
+ return ts.isNewExpression(p) && p.expression === e;
118
+ }
119
+ return false;
120
+ }
121
+ /** The elements of an expression statement's comma chain, in order. */
122
+ function commaElements(e) {
123
+ const out = [];
124
+ const visit = (x) => {
125
+ if (ts.isBinaryExpression(x) && x.operatorToken.kind === ts.SyntaxKind.CommaToken) {
126
+ visit(x.left);
127
+ visit(x.right);
128
+ }
129
+ else
130
+ out.push(x);
131
+ };
132
+ visit(e);
133
+ return out;
134
+ }
135
+ /** True when a call's result is discarded: an expression statement or a
136
+ * non-final comma operand (parentheses included). */
137
+ function resultUnused(call) {
138
+ let child = call;
139
+ let p = call.parent;
140
+ while (p !== undefined && ts.isParenthesizedExpression(p)) {
141
+ child = p;
142
+ p = p.parent;
143
+ }
144
+ if (p === undefined)
145
+ return false;
146
+ if (ts.isExpressionStatement(p))
147
+ return true;
148
+ if (ts.isBinaryExpression(p) && p.operatorToken.kind === ts.SyntaxKind.CommaToken) {
149
+ if (p.left === child)
150
+ return true;
151
+ return resultUnused(p);
152
+ }
153
+ return false;
154
+ }
155
+ /** True when a member access is a plain read (not written, deleted or
156
+ * updated). */
157
+ function plainRead(access) {
158
+ const p = access.parent;
159
+ if (p === undefined)
160
+ return true;
161
+ if (ts.isDeleteExpression(p))
162
+ return false;
163
+ if (ts.isBinaryExpression(p) &&
164
+ p.left === access &&
165
+ p.operatorToken.kind >= ts.SyntaxKind.FirstAssignment &&
166
+ p.operatorToken.kind <= ts.SyntaxKind.LastAssignment)
167
+ return false;
168
+ if ((ts.isPrefixUnaryExpression(p) || ts.isPostfixUnaryExpression(p)) &&
169
+ (p.operator === ts.SyntaxKind.PlusPlusToken || p.operator === ts.SyntaxKind.MinusMinusToken))
170
+ return false;
171
+ return true;
172
+ }
173
+ /** True when a member read is the callee of a call or a tag, which receives
174
+ * the object it was read from as `this`. */
175
+ function calledWithReceiver(access) {
176
+ let callee = access;
177
+ while (callee.parent !== undefined && ts.isParenthesizedExpression(callee.parent))
178
+ callee = callee.parent;
179
+ const p = callee.parent;
180
+ return (p !== undefined &&
181
+ ((ts.isCallExpression(p) && p.expression === callee) ||
182
+ (ts.isTaggedTemplateExpression(p) && p.tag === callee)));
183
+ }
184
+ /** True when a function reads its own `this`: in its body or a parameter's
185
+ * default value, or in an arrow function inside them. */
186
+ function readsThis(fn) {
187
+ let found = false;
188
+ if (fn.body === undefined)
189
+ return false;
190
+ const visit = (n) => {
191
+ if (found)
192
+ return "stop";
193
+ if (ts.isFunctionDeclaration(n) ||
194
+ ts.isFunctionExpression(n) ||
195
+ ts.isMethodDeclaration(n) ||
196
+ ts.isGetAccessorDeclaration(n) ||
197
+ ts.isSetAccessorDeclaration(n) ||
198
+ ts.isConstructorDeclaration(n) ||
199
+ ts.isClassDeclaration(n) ||
200
+ ts.isClassExpression(n))
201
+ return "skip";
202
+ if (n.kind === ts.SyntaxKind.ThisKeyword)
203
+ found = true;
204
+ return undefined;
205
+ };
206
+ for (const parameter of fn.parameters.nodes)
207
+ ts.walkPreorder(parameter, visit);
208
+ ts.walkPreorder(fn.body, visit);
209
+ return found;
210
+ }
211
+ /** The `__export(T, { name: () => value, … })` getter table of T, or null. */
212
+ function exportTableOf(call) {
213
+ if (!ts.isIdentifier(call.expression) || helperBase(call.expression.text) !== "__export")
214
+ return null;
215
+ const [target, table] = call.arguments.nodes;
216
+ if (call.arguments.nodes.length !== 2 ||
217
+ !target ||
218
+ !table ||
219
+ !ts.isIdentifier(target) ||
220
+ !ts.isObjectLiteralExpression(table))
221
+ return null;
222
+ const entries = [];
223
+ for (const prop of table.properties.nodes) {
224
+ if (!ts.isPropertyAssignment(prop))
225
+ return null;
226
+ if (!ts.isIdentifier(prop.name) && !ts.isStringLiteral(prop.name))
227
+ return null;
228
+ const getter = unparen(prop.initializer);
229
+ if (!ts.isArrowFunction(getter) || getter.parameters.nodes.length !== 0)
230
+ return null;
231
+ if (ts.isBlock(getter.body))
232
+ return null;
233
+ entries.push([prop.name.text, getter.body]);
234
+ }
235
+ return { target: target.text, entries };
236
+ }
237
+ /** Lowers a CommonJS bundle's __esm initializers (see the header). Null:
238
+ * nothing to lower. */
239
+ export function lowerBundledEsmInits(sf, filePath, host) {
240
+ const source = sf.text;
241
+ if (!source.includes("__esm"))
242
+ return null;
243
+ if (!filePath.endsWith(".cjs") && ts.isExternalModule(sf))
244
+ return null;
245
+ const top = new Map();
246
+ const duplicate = new Set();
247
+ for (const stmt of sf.statements.nodes) {
248
+ const add = (name, node) => {
249
+ if (top.has(name))
250
+ duplicate.add(name);
251
+ else
252
+ top.set(name, { stmt, node });
253
+ };
254
+ if (ts.isFunctionDeclaration(stmt) && stmt.name !== undefined)
255
+ add(stmt.name.text, stmt);
256
+ else if (ts.isVariableStatement(stmt)) {
257
+ for (const d of stmt.declarationList.declarations.nodes) {
258
+ if (ts.isIdentifier(d.name))
259
+ add(d.name.text, d);
260
+ }
261
+ }
262
+ }
263
+ const helpers = [...top.keys()].filter((n) => helperBase(n) === "__esm");
264
+ if (helpers.length === 0)
265
+ return null;
266
+ const allRefs = references(sf);
267
+ const writes = new Map();
268
+ for (const r of allRefs)
269
+ if (isWritten(r))
270
+ writes.set(r.text, (writes.get(r.text) ?? 0) + 1);
271
+ const declaredAnywhere = declaredNames(sf);
272
+ if (declaredAnywhere.has("Object") || writes.has("Object"))
273
+ return { degrade: ESM_SHAPE_DEGRADE };
274
+ const stable = (name) => !duplicate.has(name) && !writes.has(name);
275
+ const ownNames = (name) => {
276
+ const t = top.get(name);
277
+ const init = t !== undefined && ts.isVariableDeclaration(t.node) ? t.node.initializer : undefined;
278
+ return (init !== undefined &&
279
+ stable(name) &&
280
+ helperTokens(getTextOfNode(init)) === helperTokens("Object.getOwnPropertyNames"));
281
+ };
282
+ const forms = new Map();
283
+ for (const name of helpers) {
284
+ const t = top.get(name);
285
+ const init = ts.isVariableDeclaration(t.node) ? t.node.initializer : undefined;
286
+ const form = init !== undefined && stable(name) ? esmHelperForm(init, sf, ownNames) : null;
287
+ if (form === null)
288
+ return { degrade: ESM_SHAPE_DEGRADE };
289
+ forms.set(name, form);
290
+ }
291
+ // The initializers: `NAME = HELPER(factory)` declarators.
292
+ const inits = new Map();
293
+ for (const [name, t] of top) {
294
+ if (!ts.isVariableDeclaration(t.node) || t.node.initializer === undefined)
295
+ continue;
296
+ const call = unparen(t.node.initializer);
297
+ if (!ts.isCallExpression(call) || !ts.isIdentifier(call.expression))
298
+ continue;
299
+ const form = forms.get(call.expression.text);
300
+ if (form === undefined)
301
+ continue;
302
+ if (call.arguments.nodes.length !== 1 || !stable(name))
303
+ return { degrade: ESM_SHAPE_DEGRADE };
304
+ let factory = call.arguments.nodes[0];
305
+ if (form === "keyed") {
306
+ if (!ts.isObjectLiteralExpression(factory) || factory.properties.nodes.length !== 1)
307
+ return { degrade: ESM_SHAPE_DEGRADE };
308
+ factory = factory.properties.nodes[0];
309
+ if (!ts.isMethodDeclaration(factory) || ts.isComputedPropertyName(factory.name))
310
+ return { degrade: ESM_SHAPE_DEGRADE };
311
+ }
312
+ else {
313
+ factory = unparen(factory);
314
+ if (!ts.isArrowFunction(factory) && !ts.isFunctionExpression(factory))
315
+ return { degrade: ESM_SHAPE_DEGRADE };
316
+ }
317
+ const fn = factory;
318
+ if (fn.modifiers?.nodes.some((m) => m.kind === ts.SyntaxKind.AsyncKeyword))
319
+ return {
320
+ degrade: `its bundled ES module initializer '${name}' is asynchronous (top-level await), which the lazy initialization rewrite does not cover`,
321
+ };
322
+ if (fn.body === undefined ||
323
+ !ts.isBlock(fn.body) ||
324
+ fn.asteriskToken !== undefined ||
325
+ (fn.modifiers?.nodes.length ?? 0) > 0 ||
326
+ fn.parameters.nodes.length > 0)
327
+ return { degrade: ESM_SHAPE_DEGRADE };
328
+ const frame = factoryFrameUse(fn.body, false);
329
+ if (frame !== null)
330
+ return { degrade: `its bundled ES module initializer '${name}' ${frame}` };
331
+ inits.set(name, { name, call, body: fn.body });
332
+ }
333
+ if (inits.size === 0)
334
+ return null;
335
+ const edits = [];
336
+ // Every initializer reference is a direct call whose result is unused.
337
+ for (const r of allRefs) {
338
+ if (!inits.has(r.text))
339
+ continue;
340
+ const call = r.parent;
341
+ if (call === undefined ||
342
+ !ts.isCallExpression(call) ||
343
+ call.expression !== r ||
344
+ call.arguments.nodes.length !== 0 ||
345
+ !resultUnused(call))
346
+ return {
347
+ degrade: `its bundled ES module initializer '${r.text}' is used other than as a statement call`,
348
+ };
349
+ }
350
+ for (const name of inits.keys()) {
351
+ if (countDeclarations(sf, name) !== 1)
352
+ return { degrade: ESM_SHAPE_DEGRADE };
353
+ }
354
+ /* Interop bindings an initializer assigns once from require(). */
355
+ const refsByName = new Map();
356
+ for (const r of allRefs) {
357
+ const list = refsByName.get(r.text);
358
+ if (list === undefined)
359
+ refsByName.set(r.text, [r]);
360
+ else
361
+ list.push(r);
362
+ }
363
+ const deadDeclarators = new Set();
364
+ const interopSpecs = new Map();
365
+ for (const init of inits.values()) {
366
+ for (const stmt of init.body.statements.nodes) {
367
+ if (!ts.isExpressionStatement(stmt))
368
+ continue;
369
+ for (const el of commaElements(stmt.expression)) {
370
+ if (!ts.isBinaryExpression(el) ||
371
+ el.operatorToken.kind !== ts.SyntaxKind.EqualsToken ||
372
+ !ts.isIdentifier(el.left))
373
+ continue;
374
+ const name = el.left.text;
375
+ const decl = top.get(name)?.node;
376
+ if (decl === undefined ||
377
+ !ts.isVariableDeclaration(decl) ||
378
+ decl.initializer !== undefined ||
379
+ duplicate.has(name) ||
380
+ writes.get(name) !== 1 ||
381
+ countDeclarations(sf, name) !== 1)
382
+ continue;
383
+ let rhs = unparen(el.right);
384
+ let isNodeMode = false;
385
+ let interop = false;
386
+ if (ts.isCallExpression(rhs) &&
387
+ ts.isIdentifier(rhs.expression) &&
388
+ helperBase(rhs.expression.text) === "__toESM") {
389
+ const [arg, mode] = rhs.arguments.nodes;
390
+ if (!arg || rhs.arguments.nodes.length > 2)
391
+ continue;
392
+ if (mode !== undefined) {
393
+ if (ts.isNumericLiteral(mode))
394
+ isNodeMode = Number(mode.text) !== 0;
395
+ else if (mode.kind === ts.SyntaxKind.TrueKeyword)
396
+ isNodeMode = true;
397
+ else if (mode.kind !== ts.SyntaxKind.FalseKeyword)
398
+ continue;
399
+ }
400
+ rhs = unparen(arg);
401
+ interop = true;
402
+ }
403
+ const spec = bareRequireSpecOf(rhs);
404
+ if (spec === null)
405
+ continue;
406
+ const req = getTextOfNode(rhs);
407
+ const defaultIsModule = interop && (isNodeMode || !host.requireTargetEsModuleStamped(filePath, spec));
408
+ // Every other reference must be a plain member read.
409
+ const uses = [];
410
+ let ok = true;
411
+ for (const r of refsByName.get(name) ?? []) {
412
+ if (r === el.left)
413
+ continue;
414
+ const access = r.parent;
415
+ if (access === undefined ||
416
+ !ts.isPropertyAccessExpression(access) ||
417
+ access.expression !== r ||
418
+ !plainRead(access)) {
419
+ ok = false;
420
+ break;
421
+ }
422
+ if (defaultIsModule && access.name.text === "default")
423
+ uses.push({ start: tokenStartOfNode(access), end: access.end, text: `(${req})` });
424
+ // `new import_x.C()` must stay `new (require("x")).C()`: a bare
425
+ // `new require("x").C()` constructs the require call itself.
426
+ else
427
+ uses.push({
428
+ start: tokenStartOfNode(r),
429
+ end: r.end,
430
+ text: inNewCallee(r) ? `(${req})` : req,
431
+ });
432
+ }
433
+ if (!ok)
434
+ continue;
435
+ edits.push({ start: tokenStartOfNode(el), end: el.end, text: req }, ...uses);
436
+ deadDeclarators.add(decl);
437
+ interopSpecs.set(name, spec);
438
+ }
439
+ }
440
+ }
441
+ const hoisted = hoistInitClasses(sf, inits, top, duplicate, writes, refsByName, interopSpecs);
442
+ for (const h of hoisted.values()) {
443
+ edits.push(...h.edits);
444
+ for (const d of h.declarators)
445
+ deadDeclarators.add(d);
446
+ }
447
+ /* Namespaces of lazily initialized modules read through members. */
448
+ let mainTarget = null;
449
+ for (const stmt of sf.statements.nodes) {
450
+ if (!ts.isExpressionStatement(stmt) || !ts.isBinaryExpression(stmt.expression))
451
+ continue;
452
+ const e = stmt.expression;
453
+ const rhs = e.right;
454
+ if (e.operatorToken.kind === ts.SyntaxKind.EqualsToken &&
455
+ ts.isPropertyAccessExpression(e.left) &&
456
+ ts.isIdentifier(e.left.expression) &&
457
+ e.left.expression.text === "module" &&
458
+ e.left.name.text === "exports" &&
459
+ ts.isCallExpression(rhs) &&
460
+ ts.isIdentifier(rhs.expression) &&
461
+ helperBase(rhs.expression.text) === "__toCommonJS" &&
462
+ rhs.arguments.nodes.length === 1 &&
463
+ ts.isIdentifier(rhs.arguments.nodes[0]))
464
+ mainTarget = rhs.arguments.nodes[0].text;
465
+ }
466
+ const tables = new Map();
467
+ for (const stmt of sf.statements.nodes) {
468
+ if (!ts.isExpressionStatement(stmt) || !ts.isCallExpression(stmt.expression))
469
+ continue;
470
+ const table = exportTableOf(stmt.expression);
471
+ if (table !== null && table.target !== mainTarget) {
472
+ if (tables.has(table.target))
473
+ return { degrade: ESM_SHAPE_DEGRADE };
474
+ tables.set(table.target, { stmt, entries: table.entries });
475
+ }
476
+ }
477
+ const lowered = new Set();
478
+ /** Some binding between the use site and the top level rebinds a name
479
+ * the table's getters read. */
480
+ const shadowed = (site, entries) => {
481
+ const read = new Set();
482
+ for (const [, value] of entries)
483
+ for (const x of references(value))
484
+ read.add(x.text);
485
+ for (let a = site.parent; a !== undefined && !ts.isSourceFile(a); a = a.parent) {
486
+ if (ts.isFunctionLike(a) ||
487
+ ts.isBlock(a) ||
488
+ ts.isClassDeclaration(a) ||
489
+ ts.isClassExpression(a)) {
490
+ for (const n of declaredNames(a))
491
+ if (read.has(n))
492
+ return true;
493
+ }
494
+ }
495
+ return false;
496
+ };
497
+ const getterText = (value) => applyEdits(source, tokenStartOfNode(value), value.end, edits);
498
+ /** A call through the namespace (`ns.fn()`, `L().fn()`) passes the object
499
+ * the read came from as `this`; the lowered object differs from Node's
500
+ * module object (`__esModule`, property attributes), so it must stay
501
+ * unobservable: the callee is a top-level function that never reads
502
+ * `this`. */
503
+ const receiverHidden = (values, name) => {
504
+ const value = values.get(name);
505
+ if (value === undefined || !ts.isIdentifier(value) || !stable(value.text))
506
+ return false;
507
+ const decl = top.get(value.text)?.node;
508
+ return decl !== undefined && ts.isFunctionDeclaration(decl) && !readsThis(decl);
509
+ };
510
+ /* Memoized lazy loaders of those namespaces, `L = () => M ??= NS` (a
511
+ * bundle plugin's lazy re-exports): every `L().name` becomes the
512
+ * initializer call followed by the export's live read, so the first
513
+ * access still initializes the module, once, and later accesses read
514
+ * the binding. */
515
+ const loaderSpans = [];
516
+ for (const [name, t] of top) {
517
+ const d = t.node;
518
+ if (!ts.isVariableDeclaration(d) || d.initializer === undefined)
519
+ continue;
520
+ const fn = unparen(d.initializer);
521
+ if (!ts.isArrowFunction(fn) || fn.parameters.nodes.length !== 0 || ts.isBlock(fn.body))
522
+ continue;
523
+ const memoize = unparen(fn.body);
524
+ if (!ts.isBinaryExpression(memoize) ||
525
+ (memoize.operatorToken.kind !== ts.SyntaxKind.QuestionQuestionEqualsToken &&
526
+ memoize.operatorToken.kind !== ts.SyntaxKind.BarBarEqualsToken) ||
527
+ !ts.isIdentifier(memoize.left))
528
+ continue;
529
+ let w = unparen(memoize.right);
530
+ let interop = false;
531
+ let nodeMode = false;
532
+ if (ts.isCallExpression(w) &&
533
+ ts.isIdentifier(w.expression) &&
534
+ helperBase(w.expression.text) === "__toESM") {
535
+ const [arg, mode] = w.arguments.nodes;
536
+ if (!arg || w.arguments.nodes.length > 2)
537
+ continue;
538
+ if (mode !== undefined) {
539
+ if (ts.isNumericLiteral(mode))
540
+ nodeMode = Number(mode.text) !== 0;
541
+ else if (mode.kind === ts.SyntaxKind.TrueKeyword)
542
+ nodeMode = true;
543
+ else if (mode.kind !== ts.SyntaxKind.FalseKeyword)
544
+ continue;
545
+ }
546
+ interop = true;
547
+ w = unparen(arg);
548
+ }
549
+ let initCall = null;
550
+ if (ts.isBinaryExpression(w) && w.operatorToken.kind === ts.SyntaxKind.CommaToken) {
551
+ const left = unparen(w.left);
552
+ if (!ts.isCallExpression(left) ||
553
+ !ts.isIdentifier(left.expression) ||
554
+ !inits.has(left.expression.text) ||
555
+ left.arguments.nodes.length !== 0)
556
+ continue;
557
+ initCall = left;
558
+ w = unparen(w.right);
559
+ }
560
+ if (!ts.isCallExpression(w) ||
561
+ !ts.isIdentifier(w.expression) ||
562
+ helperBase(w.expression.text) !== "__toCommonJS" ||
563
+ w.arguments.nodes.length !== 1 ||
564
+ !ts.isIdentifier(w.arguments.nodes[0]))
565
+ continue;
566
+ const target = w.arguments.nodes[0].text;
567
+ const table = tables.get(target);
568
+ if (table === undefined)
569
+ continue;
570
+ const loaderWhy = {
571
+ degrade: `its memoized lazy loader '${name}' returns the namespace of a bundled ES module as a value, a module object the static rewrite cannot represent (only member reads of its result compile, and calls only of exported functions that do not read 'this')`,
572
+ };
573
+ const memo = memoize.left.text;
574
+ const memoDecl = top.get(memo)?.node;
575
+ if (memoDecl === undefined ||
576
+ !ts.isVariableDeclaration(memoDecl) ||
577
+ memoDecl.initializer !== undefined ||
578
+ writes.get(memo) !== 1 ||
579
+ countDeclarations(sf, memo) !== 1 ||
580
+ (refsByName.get(memo) ?? []).some((x) => x !== memoize.left) ||
581
+ writes.has(name) ||
582
+ countDeclarations(sf, name) !== 1)
583
+ return loaderWhy;
584
+ const entries = new Map(table.entries);
585
+ for (const ref of refsByName.get(name) ?? []) {
586
+ const call = ref.parent;
587
+ if (call === undefined ||
588
+ !ts.isCallExpression(call) ||
589
+ call.expression !== ref ||
590
+ call.arguments.nodes.length !== 0)
591
+ return loaderWhy;
592
+ let access = call.parent;
593
+ if (access === undefined ||
594
+ !ts.isPropertyAccessExpression(access) ||
595
+ access.expression !== call ||
596
+ !plainRead(access))
597
+ return loaderWhy;
598
+ // Node mode binds `default` to the namespace object itself.
599
+ if (interop && nodeMode && access.name.text === "default") {
600
+ const outer = access.parent;
601
+ if (outer === undefined ||
602
+ !ts.isPropertyAccessExpression(outer) ||
603
+ outer.expression !== access ||
604
+ !plainRead(outer))
605
+ return loaderWhy;
606
+ access = outer;
607
+ }
608
+ const member = access.name.text;
609
+ const value = entries.get(member);
610
+ if (value === undefined || shadowed(access, table.entries))
611
+ return loaderWhy;
612
+ // The rewrite reads the export without the namespace object, so a
613
+ // call through it (`L().fn()`) loses its receiver.
614
+ if (calledWithReceiver(access) && !receiverHidden(entries, member))
615
+ return loaderWhy;
616
+ const init = initCall === null ? "" : `${getTextOfNode(initCall)}, `;
617
+ edits.push({
618
+ start: tokenStartOfNode(access),
619
+ end: access.end,
620
+ text: `(${init}${getterText(value)})`,
621
+ });
622
+ }
623
+ deadDeclarators.add(d);
624
+ deadDeclarators.add(memoDecl);
625
+ loaderSpans.push({ start: tokenStartOfNode(d), end: d.end });
626
+ lowered.add(target);
627
+ }
628
+ for (const r of allRefs) {
629
+ const table = tables.get(r.text);
630
+ if (table === undefined)
631
+ continue;
632
+ if (loaderSpans.some((span) => tokenStartOfNode(r) >= span.start && r.end <= span.end))
633
+ continue;
634
+ const p = r.parent;
635
+ // The table's own declaration and __export call are handled below.
636
+ if (p !== undefined && ts.isVariableDeclaration(p) && p.name === r)
637
+ continue;
638
+ if (p !== undefined &&
639
+ ts.isCallExpression(p) &&
640
+ p.arguments.nodes[0] === r &&
641
+ ts.isExpressionStatement(p.parent) &&
642
+ p.parent === table.stmt)
643
+ continue;
644
+ const why = `reads the namespace of a bundled ES module ('${r.text}') in a way the static rewrite cannot follow (only member reads of its exports compile, and calls only of exported functions that do not read 'this')`;
645
+ if (p === undefined ||
646
+ !ts.isCallExpression(p) ||
647
+ !ts.isIdentifier(p.expression) ||
648
+ helperBase(p.expression.text) !== "__toCommonJS" ||
649
+ p.arguments.nodes.length !== 1)
650
+ return { degrade: `its shipped JS ${why}` };
651
+ // The namespace expression: `(init_x(), __toCommonJS(T))` or the call.
652
+ let ns = p;
653
+ for (;;) {
654
+ const up = ns.parent;
655
+ if (up !== undefined && ts.isParenthesizedExpression(up))
656
+ ns = up;
657
+ else if (up !== undefined &&
658
+ ts.isBinaryExpression(up) &&
659
+ up.operatorToken.kind === ts.SyntaxKind.CommaToken &&
660
+ up.right === ns)
661
+ ns = up;
662
+ else
663
+ break;
664
+ }
665
+ const values = new Map(table.entries);
666
+ const memberRead = (access, of) => access !== undefined &&
667
+ ts.isPropertyAccessExpression(access) &&
668
+ access.expression === of &&
669
+ values.has(access.name.text) &&
670
+ plainRead(access) &&
671
+ (!calledWithReceiver(access) || receiverHidden(values, access.name.text));
672
+ const holder = ns.parent;
673
+ // `__reExport(main, ns, module.exports)`: a star re-export of the
674
+ // module into the bundle's own exports (`export * from` in its entry).
675
+ // The initializer runs at the statement; the names become live getter
676
+ // entries of the export table, after its explicit ones (first wins)
677
+ // and without `default`, exactly the names __reExport copies.
678
+ if (holder !== undefined &&
679
+ ts.isCallExpression(holder) &&
680
+ ts.isIdentifier(holder.expression) &&
681
+ helperBase(holder.expression.text) === "__reExport" &&
682
+ holder.arguments.nodes[1] === ns &&
683
+ holder.arguments.nodes.length <= 3 &&
684
+ ts.isExpressionStatement(holder.parent) &&
685
+ mainTarget !== null &&
686
+ ts.isIdentifier(holder.arguments.nodes[0]) &&
687
+ holder.arguments.nodes[0].text === mainTarget) {
688
+ const inner = unparen(ns);
689
+ const init = ts.isBinaryExpression(inner) && inner.operatorToken.kind === ts.SyntaxKind.CommaToken
690
+ ? `${getTextOfNode(unparen(inner.left))}; `
691
+ : "";
692
+ if (shadowed(holder, table.entries))
693
+ return { degrade: `its shipped JS ${why}` };
694
+ const entries = table.entries
695
+ .filter(([n]) => n !== "default")
696
+ .map(([n, value]) => `${JSON.stringify(n)}: () => ${getterText(value)}`)
697
+ .join(", ");
698
+ edits.push({
699
+ start: tokenStartOfNode(holder.parent),
700
+ end: holder.parent.end,
701
+ text: `${init}__export(${mainTarget}, { ${entries} });`,
702
+ });
703
+ lowered.add(r.text);
704
+ continue;
705
+ }
706
+ let readable = memberRead(holder, ns);
707
+ if (!readable &&
708
+ holder !== undefined &&
709
+ ts.isVariableDeclaration(holder) &&
710
+ holder.initializer === ns &&
711
+ ts.isIdentifier(holder.name)) {
712
+ const local = holder.name.text;
713
+ const localRefs = (refsByName.get(local) ?? []).filter((x) => x !== holder.name);
714
+ readable =
715
+ countDeclarations(sf, local) === 1 &&
716
+ !writes.has(local) &&
717
+ localRefs.every((x) => memberRead(x.parent, x));
718
+ }
719
+ if (!readable) {
720
+ // A namespace kept for later (`x ??= __toESM(ns)`, a hand-rolled
721
+ // lazy loader) is a value with no static representation.
722
+ let outer = holder;
723
+ while (outer !== undefined &&
724
+ (ts.isParenthesizedExpression(outer) ||
725
+ (ts.isCallExpression(outer) &&
726
+ ts.isIdentifier(outer.expression) &&
727
+ helperBase(outer.expression.text) === "__toESM")))
728
+ outer = outer.parent;
729
+ if (outer !== undefined &&
730
+ ts.isBinaryExpression(outer) &&
731
+ outer.operatorToken.kind >= ts.SyntaxKind.FirstAssignment &&
732
+ outer.operatorToken.kind <= ts.SyntaxKind.LastAssignment)
733
+ return {
734
+ degrade: `its shipped JS stores the namespace of a bundled ES module ('${r.text}') in a variable (a memoized lazy loader), a module object the static rewrite cannot represent`,
735
+ };
736
+ return { degrade: `its shipped JS ${why}` };
737
+ }
738
+ // The getters read top-level bindings: nothing between the use site
739
+ // and the top level may rebind one of their names.
740
+ if (shadowed(p, table.entries))
741
+ return { degrade: `its shipped JS ${why}` };
742
+ const getters = table.entries
743
+ .map(([n, value]) => `get ${/^[A-Za-z_$][\w$]*$/.test(n) ? n : JSON.stringify(n)}() { return ${getterText(value)}; }`)
744
+ .join(", ");
745
+ edits.push({ start: tokenStartOfNode(p), end: p.end, text: `{ ${getters} }` });
746
+ lowered.add(r.text);
747
+ }
748
+ // A table nothing reads (its module is never required) goes too: its
749
+ // names are no exports of the bundle.
750
+ for (const [target, table] of tables) {
751
+ if (lowered.has(target))
752
+ continue;
753
+ const live = (refsByName.get(target) ?? []).some((x) => {
754
+ const p = x.parent;
755
+ if (p !== undefined && ts.isVariableDeclaration(p) && p.name === x)
756
+ return false;
757
+ return !(tokenStartOfNode(x) >= tokenStartOfNode(table.stmt) && x.end <= table.stmt.end);
758
+ });
759
+ if (!live)
760
+ lowered.add(target);
761
+ }
762
+ for (const target of lowered) {
763
+ const table = tables.get(target);
764
+ const decl = top.get(target)?.node;
765
+ if (decl === undefined ||
766
+ !ts.isVariableDeclaration(decl) ||
767
+ decl.initializer === undefined ||
768
+ !ts.isObjectLiteralExpression(unparen(decl.initializer)) ||
769
+ unparen(decl.initializer).properties.nodes.length !== 0 ||
770
+ writes.has(target))
771
+ return { degrade: ESM_SHAPE_DEGRADE };
772
+ edits.push({ start: tokenStartOfNode(table.stmt), end: table.stmt.end, text: "" });
773
+ deadDeclarators.add(decl);
774
+ }
775
+ // Every removed declarator in one pass: declarators of one statement
776
+ // removed separately would leave overlapping edits, and applyEdits keeps
777
+ // only the first of them.
778
+ edits.push(...removeDeclarators(sf, deadDeclarators));
779
+ /* The run-once closures. */
780
+ for (const init of inits.values()) {
781
+ const { call, body } = init;
782
+ edits.push({
783
+ start: tokenStartOfNode(call),
784
+ end: tokenStartOfNode(body) + 1,
785
+ text: `(() => { let __scriptc_done = false; function __scriptc_init() {`,
786
+ }, {
787
+ start: body.end - 1,
788
+ end: call.end,
789
+ // A body split around hoisted classes ends in its last tail function.
790
+ text: hoisted.has(init.name) ? "}" : `} ${RUN_ONCE_TAIL}`,
791
+ });
792
+ }
793
+ return applyEdits(source, 0, source.length, edits);
794
+ }
795
+ /** Global constructors a hoisted class may extend: reading one runs no
796
+ * code. */
797
+ const GLOBAL_BASES = new Set([
798
+ "Error",
799
+ "TypeError",
800
+ "RangeError",
801
+ "SyntaxError",
802
+ "ReferenceError",
803
+ "EvalError",
804
+ "URIError",
805
+ "AggregateError",
806
+ "Array",
807
+ "Map",
808
+ "Set",
809
+ "Promise",
810
+ "Object",
811
+ ]);
812
+ /** The run-once closure's closing text after the initializer function. */
813
+ const RUN_ONCE_TAIL = "return function () { if (__scriptc_done) return; __scriptc_done = true; __scriptc_init(); }; })()";
814
+ /* Classes an initializer defines into a module binding,
815
+ *
816
+ * var Multi;
817
+ * var init_m = __esm({ "src/m.ts"() { Multi = class extends import_stream.Readable { … }; } });
818
+ *
819
+ * become class declarations in the bundle's scope, at the same text
820
+ * position: the initializer's body splits around each class into run-once
821
+ * pieces that call one another in order (`… __scriptc_rest_init_m_1(); }
822
+ * return …; })(); class Multi extends … { … } function
823
+ * __scriptc_rest_init_m_1() { … }`), so the class's own text stays where
824
+ * it was and only its binding changes. A stored class value with a
825
+ * runtime-provided base has no static representation, while a declared
826
+ * class does.
827
+ *
828
+ * Exact where defining the class earlier is unobservable: its heritage is
829
+ * absent, a builtin module member, or a class hoisted before it; it has no
830
+ * static field initializers, static blocks or computed member names, so
831
+ * evaluating the definition runs no code; the binding is declared once,
832
+ * assigned only there, and read only inside functions (which esbuild's
833
+ * code reaches only after the initializer ran, the assumption the interop
834
+ * respelling makes too); and the body declares nothing, so its statements
835
+ * can move between functions. */
836
+ function hoistInitClasses(sf, inits, top, duplicate, writes, refsByName, interopSpecs) {
837
+ const out = new Map();
838
+ const hoistedNames = new Set();
839
+ /** esbuild's `0 && (module.exports = { … })` annotation for Node's
840
+ * CommonJS lexer: code that never runs. */
841
+ const inDeadAnnotation = (n) => {
842
+ for (let child = n, p = n.parent; p !== undefined; child = p, p = p.parent) {
843
+ if (ts.isBinaryExpression(p) &&
844
+ p.operatorToken.kind === ts.SyntaxKind.AmpersandAmpersandToken &&
845
+ p.right === child &&
846
+ ts.isNumericLiteral(unparen(p.left)) &&
847
+ unparen(p.left).text === "0")
848
+ return true;
849
+ }
850
+ return false;
851
+ };
852
+ const insideFunction = (n) => {
853
+ for (let p = n.parent; p !== undefined && !ts.isSourceFile(p); p = p.parent)
854
+ if (ts.isFunctionLike(p))
855
+ return true;
856
+ return false;
857
+ };
858
+ const heritageOk = (cls) => {
859
+ const clause = cls.heritageClauses?.nodes.find((c) => c.token === ts.SyntaxKind.ExtendsKeyword);
860
+ if (clause === undefined)
861
+ return true;
862
+ const type = clause.types.nodes[0];
863
+ if (type === undefined || clause.types.nodes.length !== 1 || type.typeArguments !== undefined)
864
+ return false;
865
+ let root = type.expression;
866
+ while (ts.isPropertyAccessExpression(root) && !root.questionDotToken)
867
+ root = root.expression;
868
+ if (ts.isIdentifier(root)) {
869
+ if (root === type.expression)
870
+ return (hoistedNames.has(root.text) ||
871
+ // A standard global constructor the bundle never rebinds
872
+ // (`class extends Error`, an error base class).
873
+ (GLOBAL_BASES.has(root.text) && countDeclarations(sf, root.text) === 0));
874
+ const spec = interopSpecs.get(root.text);
875
+ return spec !== undefined && canonicalBuiltinModule(spec) !== null;
876
+ }
877
+ const spec = bareRequireSpecOf(root);
878
+ return spec !== null && canonicalBuiltinModule(spec) !== null && root !== type.expression;
879
+ };
880
+ const definitionInert = (cls) => (cls.modifiers?.nodes.length ?? 0) === 0 &&
881
+ cls.members.nodes.every((m) => {
882
+ if (ts.isClassStaticBlockDeclaration(m))
883
+ return false;
884
+ if (m.name !== undefined && ts.isComputedPropertyName(m.name))
885
+ return false;
886
+ if (m.modifiers?.nodes.some((x) => x.kind === ts.SyntaxKind.Decorator))
887
+ return false;
888
+ const isStatic = m.modifiers?.nodes.some((x) => x.kind === ts.SyntaxKind.StaticKeyword);
889
+ return !(isStatic && ts.isPropertyDeclaration(m));
890
+ });
891
+ for (const init of inits.values()) {
892
+ const stmts = init.body.statements.nodes;
893
+ if (stmts.some((st) => !ts.isExpressionStatement(st) && !ts.isEmptyStatement(st)))
894
+ continue;
895
+ // The initializer's declarator is its statement's last one.
896
+ const declarator = init.call.parent;
897
+ const list = declarator?.parent;
898
+ if (declarator === undefined ||
899
+ !ts.isVariableDeclaration(declarator) ||
900
+ list === undefined ||
901
+ !ts.isVariableDeclarationList(list) ||
902
+ // The initializer ends its statement: the split pieces follow it
903
+ // (`var A, B, init_x = __esm(…)` keeps A and B declared before).
904
+ list.declarations.nodes[list.declarations.nodes.length - 1] !== declarator ||
905
+ unparen(declarator.initializer) !== init.call)
906
+ continue;
907
+ const strict = strictPrologue(stmts) ? '"use strict"; ' : "";
908
+ const edits = [];
909
+ const declarators = [];
910
+ let piece = 0;
911
+ for (const stmt of stmts) {
912
+ if (!ts.isExpressionStatement(stmt))
913
+ continue;
914
+ const els = commaElements(stmt.expression);
915
+ const hoistedEls = new Set();
916
+ for (let i = 0; i < els.length; i++) {
917
+ const el = els[i];
918
+ if (!ts.isBinaryExpression(el) ||
919
+ el.operatorToken.kind !== ts.SyntaxKind.EqualsToken ||
920
+ !ts.isIdentifier(el.left) ||
921
+ !ts.isClassExpression(el.right))
922
+ continue;
923
+ const name = el.left.text;
924
+ const cls = el.right;
925
+ const target = el.left;
926
+ const decl = top.get(name)?.node;
927
+ if (decl === undefined ||
928
+ !ts.isVariableDeclaration(decl) ||
929
+ decl.initializer !== undefined ||
930
+ duplicate.has(name) ||
931
+ writes.get(name) !== 1 ||
932
+ (cls.name !== undefined && cls.name.text !== name) ||
933
+ // The binding's declarator (and the class's own name, if spelled).
934
+ countDeclarations(sf, name) !== (cls.name === undefined ? 1 : 2) ||
935
+ !definitionInert(cls) ||
936
+ !heritageOk(cls) ||
937
+ !(refsByName.get(name) ?? []).every((r) => r === target ||
938
+ // The class's own methods name the class itself.
939
+ (tokenStartOfNode(r) >= tokenStartOfNode(cls) && r.end <= cls.end) ||
940
+ inDeadAnnotation(r) ||
941
+ (insideFunction(r) &&
942
+ // The initializer's own earlier code reads the unassigned binding.
943
+ !(tokenStartOfNode(r) >= tokenStartOfNode(init.body) && tokenStartOfNode(r) < el.end))))
944
+ continue;
945
+ piece++;
946
+ const rest = `__scriptc_rest_${init.name}_${piece}`;
947
+ const close = piece === 1 ? `} ${RUN_ONCE_TAIL};` : "}";
948
+ // `a, X = class …, b`: the elements around the class end and begin
949
+ // the neighboring pieces.
950
+ // After a hoisted neighbor the separating comma is already gone.
951
+ const fresh = i === 0 || hoistedEls.has(els[i - 1]);
952
+ const from = i === 0 ? tokenStartOfNode(stmt) : fresh ? tokenStartOfNode(el) : els[i - 1].end;
953
+ const sep = fresh ? "" : ";";
954
+ hoistedEls.add(el);
955
+ edits.push({
956
+ start: from,
957
+ end: tokenStartOfNode(cls),
958
+ text: `${sep} ${rest}(); ${close} `,
959
+ });
960
+ const next = els[i + 1];
961
+ // The class's own closing brace carries the next piece's opener: an
962
+ // empty insertion at its end would share its position with the
963
+ // initializer body's closing edit in minified text (`…}}})`).
964
+ edits.push(next === undefined
965
+ ? {
966
+ start: cls.end - 1,
967
+ end: cls.end,
968
+ text: `} function ${rest}() { ${strict}`,
969
+ }
970
+ : {
971
+ start: cls.end,
972
+ end: tokenStartOfNode(next),
973
+ text: ` function ${rest}() { ${strict}`,
974
+ });
975
+ if (cls.name === undefined) {
976
+ const keyword = tokenStartOfNode(cls);
977
+ edits.push({ start: keyword, end: keyword + "class".length, text: `class ${name}` });
978
+ }
979
+ declarators.push(decl);
980
+ hoistedNames.add(name);
981
+ }
982
+ }
983
+ if (piece > 0)
984
+ out.set(init.name, { edits, declarators });
985
+ }
986
+ return out;
987
+ }
988
+ //# sourceMappingURL=npm-static-bundled-esm.js.map