@scriptc/compiler 0.4.0 → 0.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (866) hide show
  1. package/ambient/scriptc-node-fallback.d.ts +617 -83
  2. package/dist/backend/cycle-analysis.d.ts +2 -1
  3. package/dist/backend/cycle-analysis.js +4 -4
  4. package/dist/backend/cycle-analysis.js.map +1 -1
  5. package/dist/backend/cycle-mutability.d.ts +2 -1
  6. package/dist/backend/cycle-mutability.js +2 -2
  7. package/dist/backend/cycle-mutability.js.map +1 -1
  8. package/dist/backend/executable-features.js +10 -0
  9. package/dist/backend/executable-features.js.map +1 -1
  10. package/dist/backend/immutability.d.ts +2 -1
  11. package/dist/backend/immutability.js +2 -2
  12. package/dist/backend/immutability.js.map +1 -1
  13. package/dist/backend/library-pack.js +7 -0
  14. package/dist/backend/library-pack.js.map +1 -1
  15. package/dist/backend/link-plan-core.d.ts +2 -0
  16. package/dist/backend/link-plan-core.js +2 -0
  17. package/dist/backend/link-plan-core.js.map +1 -1
  18. package/dist/backend/link-plan.d.ts +1 -0
  19. package/dist/backend/link-plan.js +1 -0
  20. package/dist/backend/link-plan.js.map +1 -1
  21. package/dist/backend/llvm/alloc.d.ts +7 -3
  22. package/dist/backend/llvm/alloc.js +7 -4
  23. package/dist/backend/llvm/alloc.js.map +1 -1
  24. package/dist/backend/llvm/array-search.js +4 -1
  25. package/dist/backend/llvm/array-search.js.map +1 -1
  26. package/dist/backend/llvm/bytes-loop-versions.d.ts +23 -2
  27. package/dist/backend/llvm/bytes-loop-versions.js +115 -19
  28. package/dist/backend/llvm/bytes-loop-versions.js.map +1 -1
  29. package/dist/backend/llvm/bytes-loop-versions.test.js +131 -0
  30. package/dist/backend/llvm/bytes-loop-versions.test.js.map +1 -1
  31. package/dist/backend/llvm/classes.d.ts +99 -2
  32. package/dist/backend/llvm/classes.js +436 -57
  33. package/dist/backend/llvm/classes.js.map +1 -1
  34. package/dist/backend/llvm/classes.test.js +235 -16
  35. package/dist/backend/llvm/classes.test.js.map +1 -1
  36. package/dist/backend/llvm/common.d.ts +21 -5
  37. package/dist/backend/llvm/common.js +50 -5
  38. package/dist/backend/llvm/common.js.map +1 -1
  39. package/dist/backend/llvm/constant-callbacks.js +8 -4
  40. package/dist/backend/llvm/constant-callbacks.js.map +1 -1
  41. package/dist/backend/llvm/constant-callbacks.test.js +4 -4
  42. package/dist/backend/llvm/constant-callbacks.test.js.map +1 -1
  43. package/dist/backend/llvm/counted-loops.d.ts +4 -1
  44. package/dist/backend/llvm/counted-loops.js +62 -23
  45. package/dist/backend/llvm/counted-loops.js.map +1 -1
  46. package/dist/backend/llvm/dense-array-access.d.ts +3 -1
  47. package/dist/backend/llvm/dense-array-access.js +61 -38
  48. package/dist/backend/llvm/dense-array-access.js.map +1 -1
  49. package/dist/backend/llvm/dense-array-access.test.js +4 -0
  50. package/dist/backend/llvm/dense-array-access.test.js.map +1 -1
  51. package/dist/backend/llvm/dense-array-loops.d.ts +19 -16
  52. package/dist/backend/llvm/dense-array-loops.js +49 -13
  53. package/dist/backend/llvm/dense-array-loops.js.map +1 -1
  54. package/dist/backend/llvm/dense-array-loops.test.js +50 -14
  55. package/dist/backend/llvm/dense-array-loops.test.js.map +1 -1
  56. package/dist/backend/llvm/dyn.d.ts +34 -1
  57. package/dist/backend/llvm/dyn.js +393 -14
  58. package/dist/backend/llvm/dyn.js.map +1 -1
  59. package/dist/backend/llvm/emit-function.js +27 -8
  60. package/dist/backend/llvm/emit-function.js.map +1 -1
  61. package/dist/backend/llvm/emit-module.js +67 -39
  62. package/dist/backend/llvm/emit-module.js.map +1 -1
  63. package/dist/backend/llvm/emit-statements.d.ts +3 -25
  64. package/dist/backend/llvm/emit-statements.js +414 -37
  65. package/dist/backend/llvm/emit-statements.js.map +1 -1
  66. package/dist/backend/llvm/emitter.d.ts +159 -22
  67. package/dist/backend/llvm/emitter.js +573 -89
  68. package/dist/backend/llvm/emitter.js.map +1 -1
  69. package/dist/backend/llvm/expr-async.js +19 -0
  70. package/dist/backend/llvm/expr-async.js.map +1 -1
  71. package/dist/backend/llvm/expr-bytes.d.ts +5 -2
  72. package/dist/backend/llvm/expr-bytes.js +110 -40
  73. package/dist/backend/llvm/expr-bytes.js.map +1 -1
  74. package/dist/backend/llvm/expr-calls.d.ts +1 -1
  75. package/dist/backend/llvm/expr-calls.js +51 -26
  76. package/dist/backend/llvm/expr-calls.js.map +1 -1
  77. package/dist/backend/llvm/expr-containers.js +27 -14
  78. package/dist/backend/llvm/expr-containers.js.map +1 -1
  79. package/dist/backend/llvm/expr-control.js +2 -3
  80. package/dist/backend/llvm/expr-control.js.map +1 -1
  81. package/dist/backend/llvm/expr-dynamic.js +95 -5
  82. package/dist/backend/llvm/expr-dynamic.js.map +1 -1
  83. package/dist/backend/llvm/expr-primitives.js +29 -11
  84. package/dist/backend/llvm/expr-primitives.js.map +1 -1
  85. package/dist/backend/llvm/expr-primitives.test.js +55 -0
  86. package/dist/backend/llvm/expr-primitives.test.js.map +1 -1
  87. package/dist/backend/llvm/expr-stream-bridges.js +48 -20
  88. package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
  89. package/dist/backend/llvm/expr-stream-callbacks.js +131 -35
  90. package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
  91. package/dist/backend/llvm/integer-clones.js +3 -3
  92. package/dist/backend/llvm/integer-clones.js.map +1 -1
  93. package/dist/backend/llvm/js-ic.d.ts +18 -0
  94. package/dist/backend/llvm/js-ic.js +712 -0
  95. package/dist/backend/llvm/js-ic.js.map +1 -0
  96. package/dist/backend/llvm/jsval.js +139 -11
  97. package/dist/backend/llvm/jsval.js.map +1 -1
  98. package/dist/backend/llvm/lib-dispatch.js +10 -0
  99. package/dist/backend/llvm/lib-dispatch.js.map +1 -1
  100. package/dist/backend/llvm/lib-filesystem.js +61 -0
  101. package/dist/backend/llvm/lib-filesystem.js.map +1 -1
  102. package/dist/backend/llvm/lib-http2.d.ts +4 -0
  103. package/dist/backend/llvm/lib-http2.js +20 -17
  104. package/dist/backend/llvm/lib-http2.js.map +1 -1
  105. package/dist/backend/llvm/lib-process.js +69 -17
  106. package/dist/backend/llvm/lib-process.js.map +1 -1
  107. package/dist/backend/llvm/lib-shared.js +75 -1
  108. package/dist/backend/llvm/lib-shared.js.map +1 -1
  109. package/dist/backend/llvm/lib-stream.js +65 -28
  110. package/dist/backend/llvm/lib-stream.js.map +1 -1
  111. package/dist/backend/llvm/lib-tls.js +23 -0
  112. package/dist/backend/llvm/lib-tls.js.map +1 -1
  113. package/dist/backend/llvm/local-array-reads.js +91 -61
  114. package/dist/backend/llvm/local-array-reads.js.map +1 -1
  115. package/dist/backend/llvm/local-array-reads.test.js +14 -0
  116. package/dist/backend/llvm/local-array-reads.test.js.map +1 -1
  117. package/dist/backend/llvm/map-number-lookup.d.ts +20 -4
  118. package/dist/backend/llvm/map-number-lookup.js +43 -7
  119. package/dist/backend/llvm/map-number-lookup.js.map +1 -1
  120. package/dist/backend/llvm/narrow-guards.js +64 -0
  121. package/dist/backend/llvm/narrow-guards.js.map +1 -1
  122. package/dist/backend/llvm/publish.d.ts +11 -1
  123. package/dist/backend/llvm/publish.js +80 -22
  124. package/dist/backend/llvm/publish.js.map +1 -1
  125. package/dist/backend/llvm/publish.test.js +3 -0
  126. package/dist/backend/llvm/publish.test.js.map +1 -1
  127. package/dist/backend/llvm/receivers.js +1 -1
  128. package/dist/backend/llvm/receivers.js.map +1 -1
  129. package/dist/backend/llvm/reference-writes.js +2 -0
  130. package/dist/backend/llvm/reference-writes.js.map +1 -1
  131. package/dist/backend/llvm/regex-matchers.js +161 -14
  132. package/dist/backend/llvm/regex-matchers.js.map +1 -1
  133. package/dist/backend/llvm/regex-matchers.test.js +18 -0
  134. package/dist/backend/llvm/regex-matchers.test.js.map +1 -1
  135. package/dist/backend/llvm/regions.js +2 -2
  136. package/dist/backend/llvm/regions.js.map +1 -1
  137. package/dist/backend/llvm/regions.test.js +7 -1
  138. package/dist/backend/llvm/regions.test.js.map +1 -1
  139. package/dist/backend/llvm/shapes.d.ts +17 -9
  140. package/dist/backend/llvm/shapes.js +21 -17
  141. package/dist/backend/llvm/shapes.js.map +1 -1
  142. package/dist/backend/llvm/speculative-integers.d.ts +20 -1
  143. package/dist/backend/llvm/speculative-integers.js +94 -6
  144. package/dist/backend/llvm/speculative-integers.js.map +1 -1
  145. package/dist/backend/llvm/speculative-integers.test.js +55 -1
  146. package/dist/backend/llvm/speculative-integers.test.js.map +1 -1
  147. package/dist/backend/llvm/string-lifetimes.test.js +2 -1
  148. package/dist/backend/llvm/string-lifetimes.test.js.map +1 -1
  149. package/dist/backend/llvm/string-reads.d.ts +4 -1
  150. package/dist/backend/llvm/string-reads.js +88 -4
  151. package/dist/backend/llvm/string-reads.js.map +1 -1
  152. package/dist/backend/llvm/thread-slots.test.js +5 -4
  153. package/dist/backend/llvm/thread-slots.test.js.map +1 -1
  154. package/dist/backend/llvm/wasm-modules.d.ts +6 -5
  155. package/dist/backend/llvm/wasm-modules.js +32 -9
  156. package/dist/backend/llvm/wasm-modules.js.map +1 -1
  157. package/dist/backend/mangle.d.ts +8 -0
  158. package/dist/backend/mangle.js +12 -0
  159. package/dist/backend/mangle.js.map +1 -1
  160. package/dist/backend/native/contracts.d.ts +40 -2
  161. package/dist/backend/native/executable.js +40 -7
  162. package/dist/backend/native/executable.js.map +1 -1
  163. package/dist/backend/native/library.js +3 -1
  164. package/dist/backend/native/library.js.map +1 -1
  165. package/dist/backend/native-codegen.d.ts +17 -6
  166. package/dist/backend/native-codegen.js +55 -9
  167. package/dist/backend/native-codegen.js.map +1 -1
  168. package/dist/backend/native-codegen.test.js +18 -14
  169. package/dist/backend/native-codegen.test.js.map +1 -1
  170. package/dist/backend/native-link-info-core.d.ts +30 -2
  171. package/dist/backend/native-link-info-core.js.map +1 -1
  172. package/dist/backend/native-profile.d.ts +32 -0
  173. package/dist/backend/native-profile.js +39 -0
  174. package/dist/backend/native-profile.js.map +1 -0
  175. package/dist/backend/native-profile.test.d.ts +1 -0
  176. package/dist/backend/native-profile.test.js +58 -0
  177. package/dist/backend/native-profile.test.js.map +1 -0
  178. package/dist/backend/native-tools.d.ts +14 -0
  179. package/dist/backend/native-tools.js +13 -0
  180. package/dist/backend/native-tools.js.map +1 -1
  181. package/dist/backend/optimization.d.ts +2 -2
  182. package/dist/backend/runtime-abi.d.ts +2 -2
  183. package/dist/backend/runtime-abi.js +2 -2
  184. package/dist/backend/runtime-pack-core.d.ts +4 -0
  185. package/dist/backend/runtime-pack-core.js +4 -0
  186. package/dist/backend/runtime-pack-core.js.map +1 -1
  187. package/dist/backend/runtime-pack-targets.test.js +7 -1
  188. package/dist/backend/runtime-pack-targets.test.js.map +1 -1
  189. package/dist/backend/runtime-pack.d.ts +0 -21
  190. package/dist/backend/runtime-pack.js +0 -29
  191. package/dist/backend/runtime-pack.js.map +1 -1
  192. package/dist/backend/runtime-pack.test.js +12 -69
  193. package/dist/backend/runtime-pack.test.js.map +1 -1
  194. package/dist/backend/target-diagnostics.js +38 -1
  195. package/dist/backend/target-diagnostics.js.map +1 -1
  196. package/dist/backend/warm-cache.js +6 -0
  197. package/dist/backend/warm-cache.js.map +1 -1
  198. package/dist/cli/command.js +89 -7
  199. package/dist/cli/command.js.map +1 -1
  200. package/dist/cli/host.d.ts +3 -0
  201. package/dist/cli/output-options.d.ts +2 -0
  202. package/dist/cli/output-options.js +9 -0
  203. package/dist/cli/output-options.js.map +1 -1
  204. package/dist/cli/usage.d.ts +15 -1
  205. package/dist/cli/usage.js +30 -2
  206. package/dist/cli/usage.js.map +1 -1
  207. package/dist/compile-types.d.ts +9 -0
  208. package/dist/contracts/check.js +2 -3
  209. package/dist/contracts/check.js.map +1 -1
  210. package/dist/coverage/report.d.ts +7 -2
  211. package/dist/coverage/report.js +18 -0
  212. package/dist/coverage/report.js.map +1 -1
  213. package/dist/coverage/verdict-cache.d.ts +1 -0
  214. package/dist/coverage/verdict-cache.js +4 -0
  215. package/dist/coverage/verdict-cache.js.map +1 -1
  216. package/dist/coverage/verdict-semantic.js +4 -0
  217. package/dist/coverage/verdict-semantic.js.map +1 -1
  218. package/dist/diagnostics/diagnostic.js.map +1 -1
  219. package/dist/diagnostics/dynamic-tier.d.ts +40 -0
  220. package/dist/diagnostics/dynamic-tier.js +57 -0
  221. package/dist/diagnostics/dynamic-tier.js.map +1 -0
  222. package/dist/diagnostics/envelope.d.ts +2 -1
  223. package/dist/diagnostics/envelope.js +5 -2
  224. package/dist/diagnostics/envelope.js.map +1 -1
  225. package/dist/executable/executable-cache.d.ts +32 -0
  226. package/dist/executable/executable-cache.js +65 -7
  227. package/dist/executable/executable-cache.js.map +1 -1
  228. package/dist/executable/executable-cache.test.js +50 -3
  229. package/dist/executable/executable-cache.test.js.map +1 -1
  230. package/dist/executable/prepare.js +3 -1
  231. package/dist/executable/prepare.js.map +1 -1
  232. package/dist/frontend/analysis.js +1 -0
  233. package/dist/frontend/analysis.js.map +1 -1
  234. package/dist/frontend/arguments-usage.d.ts +8 -0
  235. package/dist/frontend/arguments-usage.js +98 -0
  236. package/dist/frontend/arguments-usage.js.map +1 -1
  237. package/dist/frontend/arguments-usage.test.d.ts +1 -0
  238. package/dist/frontend/arguments-usage.test.js +32 -0
  239. package/dist/frontend/arguments-usage.test.js.map +1 -0
  240. package/dist/frontend/builtin-package-aliases.d.ts +24 -0
  241. package/dist/frontend/builtin-package-aliases.js +133 -0
  242. package/dist/frontend/builtin-package-aliases.js.map +1 -0
  243. package/dist/frontend/builtin-package-aliases.test.d.ts +1 -0
  244. package/dist/frontend/builtin-package-aliases.test.js +48 -0
  245. package/dist/frontend/builtin-package-aliases.test.js.map +1 -0
  246. package/dist/frontend/dispose-hook.d.ts +2 -0
  247. package/dist/frontend/dispose-hook.js +14 -0
  248. package/dist/frontend/dispose-hook.js.map +1 -0
  249. package/dist/frontend/dts-paths.d.ts +4 -0
  250. package/dist/frontend/dts-paths.js +9 -1
  251. package/dist/frontend/dts-paths.js.map +1 -1
  252. package/dist/frontend/jsx-entities.d.ts +4 -0
  253. package/dist/frontend/jsx-entities.js +259 -0
  254. package/dist/frontend/jsx-entities.js.map +1 -0
  255. package/dist/frontend/jsx-source.d.ts +71 -0
  256. package/dist/frontend/jsx-source.js +781 -0
  257. package/dist/frontend/jsx-source.js.map +1 -0
  258. package/dist/frontend/jsx-source.test.d.ts +1 -0
  259. package/dist/frontend/jsx-source.test.js +200 -0
  260. package/dist/frontend/jsx-source.test.js.map +1 -0
  261. package/dist/frontend/literal-values.test.js +8 -9
  262. package/dist/frontend/literal-values.test.js.map +1 -1
  263. package/dist/frontend/lowering/array-indexed-mutation.js +2 -1
  264. package/dist/frontend/lowering/array-indexed-mutation.js.map +1 -1
  265. package/dist/frontend/lowering/array-values.js +3 -2
  266. package/dist/frontend/lowering/array-values.js.map +1 -1
  267. package/dist/frontend/lowering/binding-analysis.d.ts +1 -1
  268. package/dist/frontend/lowering/binding-analysis.js +2 -2
  269. package/dist/frontend/lowering/binding-analysis.js.map +1 -1
  270. package/dist/frontend/lowering/builtins/arguments.d.ts +3 -0
  271. package/dist/frontend/lowering/builtins/arguments.js +30 -15
  272. package/dist/frontend/lowering/builtins/arguments.js.map +1 -1
  273. package/dist/frontend/lowering/builtins/atomics.js +10 -6
  274. package/dist/frontend/lowering/builtins/atomics.js.map +1 -1
  275. package/dist/frontend/lowering/builtins/builtin-class-dyn.d.ts +8 -0
  276. package/dist/frontend/lowering/builtins/builtin-class-dyn.js +50 -1
  277. package/dist/frontend/lowering/builtins/builtin-class-dyn.js.map +1 -1
  278. package/dist/frontend/lowering/builtins/callable-aliases.js +3 -2
  279. package/dist/frontend/lowering/builtins/callable-aliases.js.map +1 -1
  280. package/dist/frontend/lowering/builtins/child-process-async.js +2 -1
  281. package/dist/frontend/lowering/builtins/child-process-async.js.map +1 -1
  282. package/dist/frontend/lowering/builtins/child-process-sync.js +2 -1
  283. package/dist/frontend/lowering/builtins/child-process-sync.js.map +1 -1
  284. package/dist/frontend/lowering/builtins/crypto.d.ts +7 -2
  285. package/dist/frontend/lowering/builtins/crypto.js +63 -4
  286. package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
  287. package/dist/frontend/lowering/builtins/date-classes.d.ts +46 -0
  288. package/dist/frontend/lowering/builtins/date-classes.js +477 -0
  289. package/dist/frontend/lowering/builtins/date-classes.js.map +1 -0
  290. package/dist/frontend/lowering/builtins/dates.d.ts +11 -1
  291. package/dist/frontend/lowering/builtins/dates.js +55 -26
  292. package/dist/frontend/lowering/builtins/dates.js.map +1 -1
  293. package/dist/frontend/lowering/builtins/dh.d.ts +15 -0
  294. package/dist/frontend/lowering/builtins/dh.js +151 -0
  295. package/dist/frontend/lowering/builtins/dh.js.map +1 -0
  296. package/dist/frontend/lowering/builtins/disposable-stack.js +2 -1
  297. package/dist/frontend/lowering/builtins/disposable-stack.js.map +1 -1
  298. package/dist/frontend/lowering/builtins/ecdh.d.ts +21 -0
  299. package/dist/frontend/lowering/builtins/ecdh.js +208 -0
  300. package/dist/frontend/lowering/builtins/ecdh.js.map +1 -0
  301. package/dist/frontend/lowering/builtins/errors.d.ts +15 -0
  302. package/dist/frontend/lowering/builtins/errors.js +110 -0
  303. package/dist/frontend/lowering/builtins/errors.js.map +1 -1
  304. package/dist/frontend/lowering/builtins/filesystem-calls.d.ts +1 -1
  305. package/dist/frontend/lowering/builtins/filesystem-calls.js +23 -17
  306. package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
  307. package/dist/frontend/lowering/builtins/filesystem.js +6 -4
  308. package/dist/frontend/lowering/builtins/filesystem.js.map +1 -1
  309. package/dist/frontend/lowering/builtins/fs-paths.d.ts +15 -0
  310. package/dist/frontend/lowering/builtins/fs-paths.js +209 -0
  311. package/dist/frontend/lowering/builtins/fs-paths.js.map +1 -0
  312. package/dist/frontend/lowering/builtins/hash-stream.d.ts +16 -4
  313. package/dist/frontend/lowering/builtins/hash-stream.js +86 -23
  314. package/dist/frontend/lowering/builtins/hash-stream.js.map +1 -1
  315. package/dist/frontend/lowering/builtins/json.js +54 -1
  316. package/dist/frontend/lowering/builtins/json.js.map +1 -1
  317. package/dist/frontend/lowering/builtins/key-object.d.ts +2 -1
  318. package/dist/frontend/lowering/builtins/key-object.js +20 -7
  319. package/dist/frontend/lowering/builtins/key-object.js.map +1 -1
  320. package/dist/frontend/lowering/builtins/module-calls.js +11 -4
  321. package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
  322. package/dist/frontend/lowering/builtins/numbers.js +9 -5
  323. package/dist/frontend/lowering/builtins/numbers.js.map +1 -1
  324. package/dist/frontend/lowering/builtins/operating-system.js +4 -3
  325. package/dist/frontend/lowering/builtins/operating-system.js.map +1 -1
  326. package/dist/frontend/lowering/builtins/performance.js +3 -2
  327. package/dist/frontend/lowering/builtins/performance.js.map +1 -1
  328. package/dist/frontend/lowering/builtins/process.d.ts +9 -0
  329. package/dist/frontend/lowering/builtins/process.js +47 -2
  330. package/dist/frontend/lowering/builtins/process.js.map +1 -1
  331. package/dist/frontend/lowering/builtins/promises.js +3 -2
  332. package/dist/frontend/lowering/builtins/promises.js.map +1 -1
  333. package/dist/frontend/lowering/builtins/promisify-callback.d.ts +3 -0
  334. package/dist/frontend/lowering/builtins/promisify-callback.js +23 -4
  335. package/dist/frontend/lowering/builtins/promisify-callback.js.map +1 -1
  336. package/dist/frontend/lowering/builtins/readline.d.ts +2 -1
  337. package/dist/frontend/lowering/builtins/readline.js +23 -6
  338. package/dist/frontend/lowering/builtins/readline.js.map +1 -1
  339. package/dist/frontend/lowering/builtins/reflection.js +26 -0
  340. package/dist/frontend/lowering/builtins/reflection.js.map +1 -1
  341. package/dist/frontend/lowering/builtins/strings.js +13 -5
  342. package/dist/frontend/lowering/builtins/strings.js.map +1 -1
  343. package/dist/frontend/lowering/builtins/text-codecs.js +2 -1
  344. package/dist/frontend/lowering/builtins/text-codecs.js.map +1 -1
  345. package/dist/frontend/lowering/builtins/timers.js +6 -2
  346. package/dist/frontend/lowering/builtins/timers.js.map +1 -1
  347. package/dist/frontend/lowering/builtins/typed-array-members.d.ts +7 -0
  348. package/dist/frontend/lowering/builtins/typed-array-members.js +160 -0
  349. package/dist/frontend/lowering/builtins/typed-array-members.js.map +1 -0
  350. package/dist/frontend/lowering/builtins/url.js +4 -3
  351. package/dist/frontend/lowering/builtins/url.js.map +1 -1
  352. package/dist/frontend/lowering/builtins/v8.js +2 -1
  353. package/dist/frontend/lowering/builtins/v8.js.map +1 -1
  354. package/dist/frontend/lowering/builtins/webcrypto.js +39 -20
  355. package/dist/frontend/lowering/builtins/webcrypto.js.map +1 -1
  356. package/dist/frontend/lowering/call-arguments.js +2 -1
  357. package/dist/frontend/lowering/call-arguments.js.map +1 -1
  358. package/dist/frontend/lowering/call-signatures.d.ts +4 -0
  359. package/dist/frontend/lowering/call-signatures.js +137 -13
  360. package/dist/frontend/lowering/call-signatures.js.map +1 -1
  361. package/dist/frontend/lowering/caught-value-dispatch.d.ts +18 -1
  362. package/dist/frontend/lowering/caught-value-dispatch.js +201 -32
  363. package/dist/frontend/lowering/caught-value-dispatch.js.map +1 -1
  364. package/dist/frontend/lowering/cjs-exports-object.js +34 -1
  365. package/dist/frontend/lowering/cjs-exports-object.js.map +1 -1
  366. package/dist/frontend/lowering/class-assertions.js +3 -2
  367. package/dist/frontend/lowering/class-assertions.js.map +1 -1
  368. package/dist/frontend/lowering/class-construction.d.ts +2 -1
  369. package/dist/frontend/lowering/class-construction.js +8 -13
  370. package/dist/frontend/lowering/class-construction.js.map +1 -1
  371. package/dist/frontend/lowering/class-descriptors.js +1 -1
  372. package/dist/frontend/lowering/class-descriptors.js.map +1 -1
  373. package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +34 -0
  374. package/dist/frontend/lowering/class-dynamic-dispatch.js +577 -152
  375. package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
  376. package/dist/frontend/lowering/class-dynamic-dispatch.test.js +77 -0
  377. package/dist/frontend/lowering/class-dynamic-dispatch.test.js.map +1 -1
  378. package/dist/frontend/lowering/class-method-mutations.js +3 -0
  379. package/dist/frontend/lowering/class-method-mutations.js.map +1 -1
  380. package/dist/frontend/lowering/class-method-values.js +1 -1
  381. package/dist/frontend/lowering/class-method-values.js.map +1 -1
  382. package/dist/frontend/lowering/class-protocols.d.ts +17 -0
  383. package/dist/frontend/lowering/class-protocols.js +117 -7
  384. package/dist/frontend/lowering/class-protocols.js.map +1 -1
  385. package/dist/frontend/lowering/class-prototypes.d.ts +5 -0
  386. package/dist/frontend/lowering/class-prototypes.js +42 -4
  387. package/dist/frontend/lowering/class-prototypes.js.map +1 -1
  388. package/dist/frontend/lowering/class-to-primitive.d.ts +2 -2
  389. package/dist/frontend/lowering/class-to-primitive.js +31 -8
  390. package/dist/frontend/lowering/class-to-primitive.js.map +1 -1
  391. package/dist/frontend/lowering/class-unions.js +2 -1
  392. package/dist/frontend/lowering/class-unions.js.map +1 -1
  393. package/dist/frontend/lowering/coercions/fresh-spread.d.ts +13 -0
  394. package/dist/frontend/lowering/coercions/fresh-spread.js +95 -0
  395. package/dist/frontend/lowering/coercions/fresh-spread.js.map +1 -0
  396. package/dist/frontend/lowering/coercions/function-adapters.js +105 -75
  397. package/dist/frontend/lowering/coercions/function-adapters.js.map +1 -1
  398. package/dist/frontend/lowering/coercions/structural.js +8 -7
  399. package/dist/frontend/lowering/coercions/structural.js.map +1 -1
  400. package/dist/frontend/lowering/coercions/unions.js +8 -7
  401. package/dist/frontend/lowering/coercions/unions.js.map +1 -1
  402. package/dist/frontend/lowering/collection-ingestion.js +2 -1
  403. package/dist/frontend/lowering/collection-ingestion.js.map +1 -1
  404. package/dist/frontend/lowering/containers/array-callbacks.d.ts +15 -0
  405. package/dist/frontend/lowering/containers/array-callbacks.js +36 -32
  406. package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
  407. package/dist/frontend/lowering/containers/array-concat.js +2 -1
  408. package/dist/frontend/lowering/containers/array-concat.js.map +1 -1
  409. package/dist/frontend/lowering/containers/array-construction.js +32 -4
  410. package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
  411. package/dist/frontend/lowering/containers/array-methods.js +11 -5
  412. package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
  413. package/dist/frontend/lowering/containers/array-pipelines.js +2 -1
  414. package/dist/frontend/lowering/containers/array-pipelines.js.map +1 -1
  415. package/dist/frontend/lowering/containers/bytes.d.ts +10 -1
  416. package/dist/frontend/lowering/containers/bytes.js +601 -24
  417. package/dist/frontend/lowering/containers/bytes.js.map +1 -1
  418. package/dist/frontend/lowering/containers/callback-arguments.js +52 -2
  419. package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -1
  420. package/dist/frontend/lowering/containers/collection-grouping.js +3 -2
  421. package/dist/frontend/lowering/containers/collection-grouping.js.map +1 -1
  422. package/dist/frontend/lowering/containers/collection-methods.js +80 -10
  423. package/dist/frontend/lowering/containers/collection-methods.js.map +1 -1
  424. package/dist/frontend/lowering/containers/indexed-objects.js +8 -7
  425. package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
  426. package/dist/frontend/lowering/containers/iterator-helpers.d.ts +32 -1
  427. package/dist/frontend/lowering/containers/iterator-helpers.js +6 -5
  428. package/dist/frontend/lowering/containers/iterator-helpers.js.map +1 -1
  429. package/dist/frontend/lowering/containers/string-and-regexp.js +85 -22
  430. package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
  431. package/dist/frontend/lowering/containers/string-replacement.js +2 -1
  432. package/dist/frontend/lowering/containers/string-replacement.js.map +1 -1
  433. package/dist/frontend/lowering/cycle-initialization.d.ts +26 -10
  434. package/dist/frontend/lowering/cycle-initialization.js +177 -39
  435. package/dist/frontend/lowering/cycle-initialization.js.map +1 -1
  436. package/dist/frontend/lowering/deferred-module-initializers.d.ts +18 -1
  437. package/dist/frontend/lowering/deferred-module-initializers.js +226 -115
  438. package/dist/frontend/lowering/deferred-module-initializers.js.map +1 -1
  439. package/dist/frontend/lowering/deferred-module-initializers.test.js +28 -0
  440. package/dist/frontend/lowering/deferred-module-initializers.test.js.map +1 -1
  441. package/dist/frontend/lowering/dispatch-sites.d.ts +59 -0
  442. package/dist/frontend/lowering/dispatch-sites.js +204 -0
  443. package/dist/frontend/lowering/dispatch-sites.js.map +1 -0
  444. package/dist/frontend/lowering/dispatch-sites.test.d.ts +1 -0
  445. package/dist/frontend/lowering/dispatch-sites.test.js +59 -0
  446. package/dist/frontend/lowering/dispatch-sites.test.js.map +1 -0
  447. package/dist/frontend/lowering/dyn-streams.d.ts +3 -0
  448. package/dist/frontend/lowering/dyn-streams.js +1 -1
  449. package/dist/frontend/lowering/dyn-streams.js.map +1 -1
  450. package/dist/frontend/lowering/dynamic-tier.d.ts +25 -0
  451. package/dist/frontend/lowering/dynamic-tier.js +327 -0
  452. package/dist/frontend/lowering/dynamic-tier.js.map +1 -0
  453. package/dist/frontend/lowering/error-methods.js +4 -0
  454. package/dist/frontend/lowering/error-methods.js.map +1 -1
  455. package/dist/frontend/lowering/expressions/array-literals.js +48 -13
  456. package/dist/frontend/lowering/expressions/array-literals.js.map +1 -1
  457. package/dist/frontend/lowering/expressions/binary.js +124 -8
  458. package/dist/frontend/lowering/expressions/binary.js.map +1 -1
  459. package/dist/frontend/lowering/expressions/element-access.js +30 -7
  460. package/dist/frontend/lowering/expressions/element-access.js.map +1 -1
  461. package/dist/frontend/lowering/expressions/identifiers.js +46 -7
  462. package/dist/frontend/lowering/expressions/identifiers.js.map +1 -1
  463. package/dist/frontend/lowering/expressions/keyed-field-targets.d.ts +14 -2
  464. package/dist/frontend/lowering/expressions/keyed-field-targets.js +91 -10
  465. package/dist/frontend/lowering/expressions/keyed-field-targets.js.map +1 -1
  466. package/dist/frontend/lowering/expressions/narrowing.js +52 -7
  467. package/dist/frontend/lowering/expressions/narrowing.js.map +1 -1
  468. package/dist/frontend/lowering/expressions/object-literals.d.ts +0 -3
  469. package/dist/frontend/lowering/expressions/object-literals.js +75 -7
  470. package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
  471. package/dist/frontend/lowering/expressions/optional-chains.d.ts +1 -1
  472. package/dist/frontend/lowering/expressions/optional-chains.js +17 -8
  473. package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
  474. package/dist/frontend/lowering/expressions/property-access.d.ts +5 -4
  475. package/dist/frontend/lowering/expressions/property-access.js +351 -16
  476. package/dist/frontend/lowering/expressions/property-access.js.map +1 -1
  477. package/dist/frontend/lowering/expressions/relational.js +112 -9
  478. package/dist/frontend/lowering/expressions/relational.js.map +1 -1
  479. package/dist/frontend/lowering/expressions/typeof.js +13 -0
  480. package/dist/frontend/lowering/expressions/typeof.js.map +1 -1
  481. package/dist/frontend/lowering/expressions/updates.js +64 -10
  482. package/dist/frontend/lowering/expressions/updates.js.map +1 -1
  483. package/dist/frontend/lowering/generator-delegation.d.ts +8 -0
  484. package/dist/frontend/lowering/generator-delegation.js +191 -1
  485. package/dist/frontend/lowering/generator-delegation.js.map +1 -1
  486. package/dist/frontend/lowering/generator-dynamic-dispatch.d.ts +6 -1
  487. package/dist/frontend/lowering/generator-dynamic-dispatch.js +20 -30
  488. package/dist/frontend/lowering/generator-dynamic-dispatch.js.map +1 -1
  489. package/dist/frontend/lowering/generic-functions.d.ts +46 -1
  490. package/dist/frontend/lowering/generic-functions.js +660 -73
  491. package/dist/frontend/lowering/generic-functions.js.map +1 -1
  492. package/dist/frontend/lowering/handle-properties.d.ts +24 -0
  493. package/dist/frontend/lowering/handle-properties.js +281 -0
  494. package/dist/frontend/lowering/handle-properties.js.map +1 -0
  495. package/dist/frontend/lowering/intern-tables.js +2 -1
  496. package/dist/frontend/lowering/intern-tables.js.map +1 -1
  497. package/dist/frontend/lowering/iterable-spelling.d.ts +7 -0
  498. package/dist/frontend/lowering/iterable-spelling.js +38 -0
  499. package/dist/frontend/lowering/iterable-spelling.js.map +1 -0
  500. package/dist/frontend/lowering/iterator-adapters.js +9 -8
  501. package/dist/frontend/lowering/iterator-adapters.js.map +1 -1
  502. package/dist/frontend/lowering/js-dynamic-objects.js +3 -2
  503. package/dist/frontend/lowering/js-dynamic-objects.js.map +1 -1
  504. package/dist/frontend/lowering/json-require.js +2 -1
  505. package/dist/frontend/lowering/json-require.js.map +1 -1
  506. package/dist/frontend/lowering/key-order-witness.d.ts +7 -2
  507. package/dist/frontend/lowering/key-order-witness.js +21 -4
  508. package/dist/frontend/lowering/key-order-witness.js.map +1 -1
  509. package/dist/frontend/lowering/key-order-witness.test.js +38 -2
  510. package/dist/frontend/lowering/key-order-witness.test.js.map +1 -1
  511. package/dist/frontend/lowering/lifetime-regions.js +2 -1
  512. package/dist/frontend/lowering/lifetime-regions.js.map +1 -1
  513. package/dist/frontend/lowering/lower-array-sort.d.ts +33 -15
  514. package/dist/frontend/lowering/lower-array-sort.js +117 -21
  515. package/dist/frontend/lowering/lower-array-sort.js.map +1 -1
  516. package/dist/frontend/lowering/lower-array-sort.test.js +93 -14
  517. package/dist/frontend/lowering/lower-array-sort.test.js.map +1 -1
  518. package/dist/frontend/lowering/lower-assert.js +6 -5
  519. package/dist/frontend/lowering/lower-assert.js.map +1 -1
  520. package/dist/frontend/lowering/lower-async-iteration.js +3 -1
  521. package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
  522. package/dist/frontend/lowering/lower-builtin-values.js +1 -0
  523. package/dist/frontend/lowering/lower-builtin-values.js.map +1 -1
  524. package/dist/frontend/lowering/lower-calls.d.ts +4 -0
  525. package/dist/frontend/lowering/lower-calls.js +504 -97
  526. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  527. package/dist/frontend/lowering/lower-classes.d.ts +22 -0
  528. package/dist/frontend/lowering/lower-classes.js +339 -32
  529. package/dist/frontend/lowering/lower-classes.js.map +1 -1
  530. package/dist/frontend/lowering/lower-dgram.js +65 -15
  531. package/dist/frontend/lowering/lower-dgram.js.map +1 -1
  532. package/dist/frontend/lowering/lower-event-emitter.d.ts +14 -0
  533. package/dist/frontend/lowering/lower-event-emitter.js +267 -20
  534. package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
  535. package/dist/frontend/lowering/lower-exprs.d.ts +19 -2
  536. package/dist/frontend/lowering/lower-exprs.js +148 -12
  537. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  538. package/dist/frontend/lowering/lower-functions.js +308 -72
  539. package/dist/frontend/lowering/lower-functions.js.map +1 -1
  540. package/dist/frontend/lowering/lower-generators.js +10 -4
  541. package/dist/frontend/lowering/lower-generators.js.map +1 -1
  542. package/dist/frontend/lowering/lower-inspect.js +578 -16
  543. package/dist/frontend/lowering/lower-inspect.js.map +1 -1
  544. package/dist/frontend/lowering/lower-mixins.js +2 -1
  545. package/dist/frontend/lowering/lower-mixins.js.map +1 -1
  546. package/dist/frontend/lowering/lower-mock.js +2 -1
  547. package/dist/frontend/lowering/lower-mock.js.map +1 -1
  548. package/dist/frontend/lowering/lower-modules.d.ts +11 -3
  549. package/dist/frontend/lowering/lower-modules.js +227 -72
  550. package/dist/frontend/lowering/lower-modules.js.map +1 -1
  551. package/dist/frontend/lowering/lower-modules.test.js +2 -2
  552. package/dist/frontend/lowering/lower-modules.test.js.map +1 -1
  553. package/dist/frontend/lowering/lower-namespaces.d.ts +2 -1
  554. package/dist/frontend/lowering/lower-namespaces.js +24 -3
  555. package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
  556. package/dist/frontend/lowering/lower-server.d.ts +10 -0
  557. package/dist/frontend/lowering/lower-server.js +263 -60
  558. package/dist/frontend/lowering/lower-server.js.map +1 -1
  559. package/dist/frontend/lowering/lower-stdlib.js +39 -18
  560. package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
  561. package/dist/frontend/lowering/lower-stmts.d.ts +7 -10
  562. package/dist/frontend/lowering/lower-stmts.js +584 -69
  563. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  564. package/dist/frontend/lowering/lower-stmts.test.js +1 -1
  565. package/dist/frontend/lowering/lower-stmts.test.js.map +1 -1
  566. package/dist/frontend/lowering/lower-stream.js +575 -165
  567. package/dist/frontend/lowering/lower-stream.js.map +1 -1
  568. package/dist/frontend/lowering/lower-timers.js +21 -4
  569. package/dist/frontend/lowering/lower-timers.js.map +1 -1
  570. package/dist/frontend/lowering/lowerer.d.ts +151 -30
  571. package/dist/frontend/lowering/lowerer.js +725 -84
  572. package/dist/frontend/lowering/lowerer.js.map +1 -1
  573. package/dist/frontend/lowering/lowerer.test.js +21 -9
  574. package/dist/frontend/lowering/lowerer.test.js.map +1 -1
  575. package/dist/frontend/lowering/narrowing-stability.js +5 -0
  576. package/dist/frontend/lowering/narrowing-stability.js.map +1 -1
  577. package/dist/frontend/lowering/native-ffi.js +1 -1
  578. package/dist/frontend/lowering/native-ffi.js.map +1 -1
  579. package/dist/frontend/lowering/object-enumeration-receiver.js +2 -1
  580. package/dist/frontend/lowering/object-enumeration-receiver.js.map +1 -1
  581. package/dist/frontend/lowering/pairs-snapshot.js +2 -1
  582. package/dist/frontend/lowering/pairs-snapshot.js.map +1 -1
  583. package/dist/frontend/lowering/private-brands.d.ts +9 -0
  584. package/dist/frontend/lowering/private-brands.js +66 -15
  585. package/dist/frontend/lowering/private-brands.js.map +1 -1
  586. package/dist/frontend/lowering/promise-executor-adapter.js +2 -1
  587. package/dist/frontend/lowering/promise-executor-adapter.js.map +1 -1
  588. package/dist/frontend/lowering/rebindable-functions.d.ts +8 -0
  589. package/dist/frontend/lowering/rebindable-functions.js +54 -0
  590. package/dist/frontend/lowering/rebindable-functions.js.map +1 -0
  591. package/dist/frontend/lowering/require-initialization.js +2 -1
  592. package/dist/frontend/lowering/require-initialization.js.map +1 -1
  593. package/dist/frontend/lowering/runtime-optional-elements.d.ts +5 -0
  594. package/dist/frontend/lowering/runtime-optional-elements.js +17 -1
  595. package/dist/frontend/lowering/runtime-optional-elements.js.map +1 -1
  596. package/dist/frontend/lowering/runtime-optional-records.d.ts +2 -0
  597. package/dist/frontend/lowering/runtime-optional-records.js +18 -5
  598. package/dist/frontend/lowering/runtime-optional-records.js.map +1 -1
  599. package/dist/frontend/lowering/site-dependencies.d.ts +35 -0
  600. package/dist/frontend/lowering/site-dependencies.js +84 -0
  601. package/dist/frontend/lowering/site-dependencies.js.map +1 -0
  602. package/dist/frontend/lowering/site-dependencies.test.d.ts +1 -0
  603. package/dist/frontend/lowering/site-dependencies.test.js +53 -0
  604. package/dist/frontend/lowering/site-dependencies.test.js.map +1 -0
  605. package/dist/frontend/lowering/stable-names.d.ts +11 -0
  606. package/dist/frontend/lowering/stable-names.js +35 -0
  607. package/dist/frontend/lowering/stable-names.js.map +1 -0
  608. package/dist/frontend/lowering/static-typeof.d.ts +26 -0
  609. package/dist/frontend/lowering/static-typeof.js +172 -0
  610. package/dist/frontend/lowering/static-typeof.js.map +1 -0
  611. package/dist/frontend/lowering/strict-equality.js +2 -1
  612. package/dist/frontend/lowering/strict-equality.js.map +1 -1
  613. package/dist/frontend/lowering/string-index-bounds.js +3 -2
  614. package/dist/frontend/lowering/string-index-bounds.js.map +1 -1
  615. package/dist/frontend/lowering/structural-positions.d.ts +32 -0
  616. package/dist/frontend/lowering/structural-positions.js +108 -0
  617. package/dist/frontend/lowering/structural-positions.js.map +1 -0
  618. package/dist/frontend/lowering/surfaces.js +72 -30
  619. package/dist/frontend/lowering/surfaces.js.map +1 -1
  620. package/dist/frontend/lowering/thenables.d.ts +16 -0
  621. package/dist/frontend/lowering/thenables.js +124 -0
  622. package/dist/frontend/lowering/thenables.js.map +1 -0
  623. package/dist/frontend/lowering/var-hoisting.js +37 -3
  624. package/dist/frontend/lowering/var-hoisting.js.map +1 -1
  625. package/dist/frontend/npm-static-builtin-aliases.d.ts +8 -0
  626. package/dist/frontend/npm-static-builtin-aliases.js +65 -0
  627. package/dist/frontend/npm-static-builtin-aliases.js.map +1 -0
  628. package/dist/frontend/npm-static-bundled-chunks.d.ts +8 -1
  629. package/dist/frontend/npm-static-bundled-chunks.js +173 -2
  630. package/dist/frontend/npm-static-bundled-chunks.js.map +1 -1
  631. package/dist/frontend/npm-static-bundled-chunks.test.js +112 -0
  632. package/dist/frontend/npm-static-bundled-chunks.test.js.map +1 -1
  633. package/dist/frontend/npm-static-bundled-esm.js +224 -4
  634. package/dist/frontend/npm-static-bundled-esm.js.map +1 -1
  635. package/dist/frontend/npm-static-bundled-esm.test.js +129 -0
  636. package/dist/frontend/npm-static-bundled-esm.test.js.map +1 -1
  637. package/dist/frontend/npm-static-enum-iife.d.ts +6 -0
  638. package/dist/frontend/npm-static-enum-iife.js +280 -0
  639. package/dist/frontend/npm-static-enum-iife.js.map +1 -0
  640. package/dist/frontend/npm-static-enum-iife.test.d.ts +1 -0
  641. package/dist/frontend/npm-static-enum-iife.test.js +116 -0
  642. package/dist/frontend/npm-static-enum-iife.test.js.map +1 -0
  643. package/dist/frontend/npm-static-tsc-helpers.d.ts +5 -0
  644. package/dist/frontend/npm-static-tsc-helpers.js +106 -0
  645. package/dist/frontend/npm-static-tsc-helpers.js.map +1 -0
  646. package/dist/frontend/npm-static-tsc-helpers.test.d.ts +1 -0
  647. package/dist/frontend/npm-static-tsc-helpers.test.js +58 -0
  648. package/dist/frontend/npm-static-tsc-helpers.test.js.map +1 -0
  649. package/dist/frontend/npm-static-type-exports-host.d.ts +8 -0
  650. package/dist/frontend/npm-static-type-exports-host.js +214 -0
  651. package/dist/frontend/npm-static-type-exports-host.js.map +1 -0
  652. package/dist/frontend/npm-static-type-exports-host.test.d.ts +1 -0
  653. package/dist/frontend/npm-static-type-exports-host.test.js +53 -0
  654. package/dist/frontend/npm-static-type-exports-host.test.js.map +1 -0
  655. package/dist/frontend/npm-static-type-exports.d.ts +52 -0
  656. package/dist/frontend/npm-static-type-exports.js +261 -0
  657. package/dist/frontend/npm-static-type-exports.js.map +1 -0
  658. package/dist/frontend/npm-static-type-exports.test.d.ts +1 -0
  659. package/dist/frontend/npm-static-type-exports.test.js +103 -0
  660. package/dist/frontend/npm-static-type-exports.test.js.map +1 -0
  661. package/dist/frontend/npm-static-umd.d.ts +6 -0
  662. package/dist/frontend/npm-static-umd.js +203 -0
  663. package/dist/frontend/npm-static-umd.js.map +1 -0
  664. package/dist/frontend/npm-static-umd.test.d.ts +1 -0
  665. package/dist/frontend/npm-static-umd.test.js +105 -0
  666. package/dist/frontend/npm-static-umd.test.js.map +1 -0
  667. package/dist/frontend/npm-static.d.ts +16 -0
  668. package/dist/frontend/npm-static.js +93 -3
  669. package/dist/frontend/npm-static.js.map +1 -1
  670. package/dist/frontend/npm.js +13 -0
  671. package/dist/frontend/npm.js.map +1 -1
  672. package/dist/frontend/package-shims.d.ts +47 -0
  673. package/dist/frontend/package-shims.js +300 -0
  674. package/dist/frontend/package-shims.js.map +1 -0
  675. package/dist/frontend/pipeline.js +67 -1
  676. package/dist/frontend/pipeline.js.map +1 -1
  677. package/dist/frontend/program.d.ts +21 -0
  678. package/dist/frontend/program.js +174 -14
  679. package/dist/frontend/program.js.map +1 -1
  680. package/dist/frontend/program.test.js +1 -1
  681. package/dist/frontend/program.test.js.map +1 -1
  682. package/dist/frontend/resolve.js +13 -0
  683. package/dist/frontend/resolve.js.map +1 -1
  684. package/dist/frontend/services.d.ts +12 -0
  685. package/dist/frontend/services.js +37 -0
  686. package/dist/frontend/services.js.map +1 -1
  687. package/dist/frontend/ts7/ast-node.d.ts +21 -7
  688. package/dist/frontend/ts7/ast-node.js +131 -29
  689. package/dist/frontend/ts7/ast-node.js.map +1 -1
  690. package/dist/frontend/ts7/ast-node.test.js +60 -0
  691. package/dist/frontend/ts7/ast-node.test.js.map +1 -1
  692. package/dist/frontend/ts7/ast-wire.d.ts +27 -2
  693. package/dist/frontend/ts7/ast-wire.js +124 -21
  694. package/dist/frontend/ts7/ast-wire.js.map +1 -1
  695. package/dist/frontend/ts7/ast.d.ts +23 -2
  696. package/dist/frontend/ts7/ast.js +143 -2
  697. package/dist/frontend/ts7/ast.js.map +1 -1
  698. package/dist/frontend/ts7/checker.d.ts +13 -1
  699. package/dist/frontend/ts7/checker.js +75 -1
  700. package/dist/frontend/ts7/checker.js.map +1 -1
  701. package/dist/frontend/ts7/checker.test.js +9 -6
  702. package/dist/frontend/ts7/checker.test.js.map +1 -1
  703. package/dist/frontend/ts7/enums.d.ts +3 -3
  704. package/dist/frontend/ts7/enums.generated.d.ts +10 -0
  705. package/dist/frontend/ts7/enums.generated.js +21 -0
  706. package/dist/frontend/ts7/enums.generated.js.map +1 -1
  707. package/dist/frontend/ts7/enums.js +19 -0
  708. package/dist/frontend/ts7/enums.js.map +1 -1
  709. package/dist/frontend/ts7/program-host.d.ts +6 -5
  710. package/dist/frontend/ts7/program-host.js +12 -2
  711. package/dist/frontend/ts7/program-host.js.map +1 -1
  712. package/dist/frontend/ts7/semantic-checker.d.ts +10 -0
  713. package/dist/frontend/ts7/semantic-checker.js +25 -20
  714. package/dist/frontend/ts7/semantic-checker.js.map +1 -1
  715. package/dist/frontend/ts7/semantic-json.d.ts +13 -0
  716. package/dist/frontend/ts7/semantic-json.js +146 -0
  717. package/dist/frontend/ts7/semantic-json.js.map +1 -1
  718. package/dist/frontend/ts7/semantic-json.test.js +57 -1
  719. package/dist/frontend/ts7/semantic-json.test.js.map +1 -1
  720. package/dist/frontend/ts7/semantic-model.d.ts +18 -0
  721. package/dist/frontend/ts7/semantic-model.js +90 -16
  722. package/dist/frontend/ts7/semantic-model.js.map +1 -1
  723. package/dist/frontend/ts7/semantic-model.test.js +3 -2
  724. package/dist/frontend/ts7/semantic-model.test.js.map +1 -1
  725. package/dist/frontend/ts7/session.d.ts +19 -4
  726. package/dist/frontend/ts7/session.js +1 -1
  727. package/dist/frontend/ts7/session.js.map +1 -1
  728. package/dist/frontend/tsc-codes.d.ts +1 -1
  729. package/dist/frontend/tsc-codes.js +7 -0
  730. package/dist/frontend/tsc-codes.js.map +1 -1
  731. package/dist/frontend/type-mapper.d.ts +38 -6
  732. package/dist/frontend/type-mapper.js +466 -47
  733. package/dist/frontend/type-mapper.js.map +1 -1
  734. package/dist/frontend/type-mapper.test.js +1 -1
  735. package/dist/frontend/type-mapper.test.js.map +1 -1
  736. package/dist/frontend-process-args.d.ts +4 -0
  737. package/dist/frontend-process-args.js +52 -0
  738. package/dist/frontend-process-args.js.map +1 -0
  739. package/dist/frontend-process-args.test.d.ts +1 -0
  740. package/dist/frontend-process-args.test.js +47 -0
  741. package/dist/frontend-process-args.test.js.map +1 -0
  742. package/dist/frontend-process.d.ts +1 -0
  743. package/dist/frontend-process.js +23 -0
  744. package/dist/frontend-process.js.map +1 -0
  745. package/dist/heap-collection.d.ts +16 -0
  746. package/dist/heap-collection.js +42 -0
  747. package/dist/heap-collection.js.map +1 -0
  748. package/dist/heap-collection.test.d.ts +1 -0
  749. package/dist/heap-collection.test.js +59 -0
  750. package/dist/heap-collection.test.js.map +1 -0
  751. package/dist/heap-pressure.d.ts +2 -0
  752. package/dist/heap-pressure.js +12 -0
  753. package/dist/heap-pressure.js.map +1 -0
  754. package/dist/index.d.ts +8 -0
  755. package/dist/index.js +453 -85
  756. package/dist/index.js.map +1 -1
  757. package/dist/ir/array-length-stability.d.ts +3 -2
  758. package/dist/ir/array-length-stability.js +22 -2
  759. package/dist/ir/array-length-stability.js.map +1 -1
  760. package/dist/ir/array-length-stability.test.js +47 -1
  761. package/dist/ir/array-length-stability.test.js.map +1 -1
  762. package/dist/ir/builtin-effects.js +41 -0
  763. package/dist/ir/builtin-effects.js.map +1 -1
  764. package/dist/ir/builtin-signatures.d.ts +5 -1
  765. package/dist/ir/builtin-signatures.js +187 -16
  766. package/dist/ir/builtin-signatures.js.map +1 -1
  767. package/dist/ir/final-fields.d.ts +2 -1
  768. package/dist/ir/final-fields.js +2 -2
  769. package/dist/ir/final-fields.js.map +1 -1
  770. package/dist/ir/function-references.test.js +2 -0
  771. package/dist/ir/function-references.test.js.map +1 -1
  772. package/dist/ir/int32-slots.d.ts +13 -5
  773. package/dist/ir/int32-slots.js +112 -115
  774. package/dist/ir/int32-slots.js.map +1 -1
  775. package/dist/ir/int32-slots.test.js +3 -1
  776. package/dist/ir/int32-slots.test.js.map +1 -1
  777. package/dist/ir/integer-loop-facts.d.ts +14 -4
  778. package/dist/ir/integer-loop-facts.js +172 -32
  779. package/dist/ir/integer-loop-facts.js.map +1 -1
  780. package/dist/ir/integer-loops.d.ts +49 -0
  781. package/dist/ir/integer-loops.js +193 -39
  782. package/dist/ir/integer-loops.js.map +1 -1
  783. package/dist/ir/integer-loops.test.js +201 -1
  784. package/dist/ir/integer-loops.test.js.map +1 -1
  785. package/dist/ir/integer-ranges.d.ts +10 -1
  786. package/dist/ir/integer-ranges.js +122 -25
  787. package/dist/ir/integer-ranges.js.map +1 -1
  788. package/dist/ir/integer-ranges.test.js +255 -1
  789. package/dist/ir/integer-ranges.test.js.map +1 -1
  790. package/dist/ir/ir.d.ts +17 -2
  791. package/dist/ir/ir.js +11 -1
  792. package/dist/ir/ir.js.map +1 -1
  793. package/dist/ir/js-ic.d.ts +52 -0
  794. package/dist/ir/js-ic.js +199 -0
  795. package/dist/ir/js-ic.js.map +1 -0
  796. package/dist/ir/js-ic.test.d.ts +1 -0
  797. package/dist/ir/js-ic.test.js +148 -0
  798. package/dist/ir/js-ic.test.js.map +1 -0
  799. package/dist/ir/jsval.js +38 -4
  800. package/dist/ir/jsval.js.map +1 -1
  801. package/dist/ir/runtime-features.d.ts +64 -5
  802. package/dist/ir/runtime-features.js +358 -101
  803. package/dist/ir/runtime-features.js.map +1 -1
  804. package/dist/ir/tiers.js +1 -0
  805. package/dist/ir/tiers.js.map +1 -1
  806. package/dist/ir/traverse.d.ts +2 -0
  807. package/dist/ir/traverse.js +124 -70
  808. package/dist/ir/traverse.js.map +1 -1
  809. package/dist/ir/validate.js +77 -24
  810. package/dist/ir/validate.js.map +1 -1
  811. package/dist/ir/validate.test.js +15 -2
  812. package/dist/ir/validate.test.js.map +1 -1
  813. package/dist/library/ir-policy.js +11 -0
  814. package/dist/library/ir-policy.js.map +1 -1
  815. package/dist/library/library-cache.d.ts +2 -0
  816. package/dist/library/library-cache.js.map +1 -1
  817. package/dist/library/prepare.js +2 -0
  818. package/dist/library/prepare.js.map +1 -1
  819. package/dist/native/cli.js +22 -0
  820. package/dist/native/cli.js.map +1 -1
  821. package/dist/native/compiler.js +33 -4
  822. package/dist/native/compiler.js.map +1 -1
  823. package/dist/native/executable-cache.js +3 -0
  824. package/dist/native/executable-cache.js.map +1 -1
  825. package/dist/native/prepare.js +8 -1
  826. package/dist/native/prepare.js.map +1 -1
  827. package/dist/native/sanitizer.test.js +10 -0
  828. package/dist/native/sanitizer.test.js.map +1 -1
  829. package/dist/startup-cache.d.ts +1 -0
  830. package/dist/startup-cache.js +1 -0
  831. package/dist/startup-cache.js.map +1 -1
  832. package/dist/text-parts.d.ts +7 -0
  833. package/dist/text-parts.js +44 -0
  834. package/dist/text-parts.js.map +1 -1
  835. package/dist/text-parts.test.d.ts +1 -0
  836. package/dist/text-parts.test.js +46 -0
  837. package/dist/text-parts.test.js.map +1 -0
  838. package/dist/timing.d.ts +9 -2
  839. package/dist/timing.js +7 -4
  840. package/dist/timing.js.map +1 -1
  841. package/dist/wasm/translate.d.ts +4 -0
  842. package/dist/wasm/translate.js +2 -2
  843. package/dist/wasm/translate.js.map +1 -1
  844. package/package.json +22 -21
  845. package/shims/fs-extra/core/api.ts +1192 -0
  846. package/shims/fs-extra/index.ts +9 -0
  847. package/shims/undici/core/agent.ts +163 -0
  848. package/shims/undici/core/api.ts +93 -0
  849. package/shims/undici/core/client.ts +1304 -0
  850. package/shims/undici/core/connector.ts +157 -0
  851. package/shims/undici/core/diagnostics-types.ts +68 -0
  852. package/shims/undici/core/diagnostics.ts +16 -0
  853. package/shims/undici/core/dispatcher.ts +574 -0
  854. package/shims/undici/core/errors-v5.ts +22 -0
  855. package/shims/undici/core/errors-v7.ts +25 -0
  856. package/shims/undici/core/errors.ts +255 -0
  857. package/shims/undici/core/fetch.ts +635 -0
  858. package/shims/undici/core/pool.ts +280 -0
  859. package/shims/undici/core/readable.ts +268 -0
  860. package/shims/undici/core/request.ts +313 -0
  861. package/shims/undici/core/timers.ts +80 -0
  862. package/shims/undici/core/types.ts +167 -0
  863. package/shims/undici/core/util.ts +67 -0
  864. package/shims/undici/v5.ts +119 -0
  865. package/shims/undici/v7.ts +119 -0
  866. package/surface-manifest.json +20 -52
@@ -1,4 +1,5 @@
1
1
  import { THREADS_MODULE } from "../threads-import.js";
2
+ import { positionTag } from "./structural-positions.js";
2
3
  import { EXPERIMENTAL_MODULE } from "../experimental-import.js";
3
4
  import { dynUndefinedExpr } from "../../ir/build.js";
4
5
  import { everyStmtList, everyTypeChild } from "../../ir/traverse.js";
@@ -8,6 +9,7 @@ import { InternalCompilerError } from "../../errors.js";
8
9
  * seeds), npm/JSON import collection, per-file %init functions, %main, and
9
10
  * the module artifacts (globals, embedded npm tables) the IR module carries. */
10
11
  import * as ts from "../ts7/adapter.js";
12
+ import { collectRebindableFunctions, isRebindableFunction } from "./rebindable-functions.js";
11
13
  import { bindingSource } from "../binding-source.js";
12
14
  import { dirname as dirnamePath, resolve as resolvePath } from "node:path";
13
15
  import { packageNameOfPath, probeNodeImportRefusal } from "../npm.js";
@@ -37,31 +39,60 @@ import { streamClassAliasDecl } from "./lower-stream.js";
37
39
  import { isAssertClassNew } from "./assert-instances.js";
38
40
  import { stdlibGlobalAliasDecl, stdlibGlobalAliasNameOf, stdlibGlobalNameOf } from "./surfaces.js";
39
41
  import { isNativeBuiltinValueInitializer } from "./lower-builtin-values.js";
42
+ import { isPromisePrototypeRead } from "./expressions/property-access.js";
40
43
  import { collectNamespaceStmt, nsMemberIdentOf, nsPathPrefix, trapDeclRootOf, } from "./lower-namespaces.js";
41
44
  import { collectExpandoMembers } from "./lower-expando.js";
42
45
  import { recordTextCodecClass } from "../../ir/ir.js";
43
46
  import { isUnitOnlyTsType, unitOnlyUnion } from "../type-mapper.js";
44
- import { collectInheritedJsFieldWrites, collectVirtualJsMethods, decoratorNodesOf, genericIfaceBindingKeepsClass, guaranteedDecorationThrow, storedClassValueType, } from "./lower-classes.js";
47
+ import { builtinRequireBaseOf, collectInheritedJsFieldWrites, collectVirtualJsMethods, decoratorNodesOf, genericIfaceBindingKeepsClass, guaranteedDecorationThrow, storedClassValueType, } from "./lower-classes.js";
45
48
  import { isMixinFnBinding, mixinResultBindingClassOf } from "./lower-mixins.js";
46
49
  import { cjsModuleRef, cjsModuleRegistryPrelude } from "./lower-node-module.js";
47
50
  import { forkTargetPaths } from "../fork-target.js";
48
51
  import { workerTargetPaths } from "../worker-target.js";
49
52
  import { isNativeProxyInitializer } from "./expressions/native-proxy.js";
50
53
  import { handleEventReaderPrelude } from "./lower-event-target.js";
54
+ import { dateClassOperationPrelude } from "./builtins/date-classes.js";
51
55
  import { cjsAccessorSnapshotStores, jsHoldsDynObject } from "./lower-exprs.js";
52
56
  import { keptIdentityAssertion } from "./assertion-identity.js";
57
+ /** An appended module's edges: its import and export declarations, then
58
+ * the require() edges preflight resolved — a CommonJS file's only edges
59
+ * (the compiled CommonJS package a workspace module loaded on demand
60
+ * imports, and the sibling packages and files IT requires). */
61
+ function appendedEdgesOf(program, graph) {
62
+ const cache = new Map();
63
+ return (sf) => {
64
+ let out = cache.get(sf);
65
+ if (out !== undefined)
66
+ return out;
67
+ out = orderedImportsOf(program, sf).flatMap(({ stmt, dep }) => dep !== null && dep !== sf
68
+ ? [{ dep, stmt: stmt }]
69
+ : []);
70
+ for (const e of graph?.edges?.get(sf) ?? [])
71
+ if (e.stmt === undefined && e.dep !== sf)
72
+ out.push(e);
73
+ cache.set(sf, out);
74
+ return out;
75
+ };
76
+ }
77
+ /** Lazy inline requires run after their module's top level: their modules
78
+ * join the order afterwards, as in preflight's walk. */
79
+ function visitLazyEdges(sf, edgesOf, state, visit) {
80
+ for (const e of edgesOf(sf))
81
+ if (e.lazy === true && state.get(e.dep) === undefined)
82
+ visit(e.dep);
83
+ }
53
84
  /** Program modules selected by statically resolved child_process.fork()
54
85
  * calls join the compiled graph without becoming startup dependencies of
55
86
  * the parent entry. Their guarded init functions are selected by %main only
56
87
  * in a re-executed fork child. `targets` is append-only so ids stay stable
57
88
  * across the dynamic-import/fork discovery fixpoint. */
58
- export function appendForkModules(program, order, targets, onCycle) {
59
- appendEntryModules(program, order, targets, forkTargetPaths(program, order), onCycle);
89
+ export function appendForkModules(program, order, targets, onCycle, graph) {
90
+ appendEntryModules(program, order, targets, forkTargetPaths(program, order), onCycle, graph);
60
91
  }
61
- export function appendWorkerModules(program, order, targets, onCycle) {
62
- appendEntryModules(program, order, targets, workerTargetPaths(program, order), onCycle);
92
+ export function appendWorkerModules(program, order, targets, onCycle, graph) {
93
+ appendEntryModules(program, order, targets, workerTargetPaths(program, order), onCycle, graph);
63
94
  }
64
- function appendEntryModules(program, order, targets, paths, onCycle) {
95
+ function appendEntryModules(program, order, targets, paths, onCycle, graph) {
65
96
  if (order.length === 0)
66
97
  return;
67
98
  const byPath = new Map(program.getImplementationSourceFiles().map((sf) => [resolvePath(sf.fileName), sf]));
@@ -70,10 +101,8 @@ function appendEntryModules(program, order, targets, paths, onCycle) {
70
101
  state.set(sf, "done");
71
102
  const added = [];
72
103
  const stack = [];
73
- const staticEdgesOf = (sf) => orderedImportsOf(program, sf).flatMap(({ stmt, dep }) => dep !== null && dep !== sf
74
- ? [{ dep, stmt: stmt }]
75
- : []);
76
- const cycleAdmissionReason = makeCycleAdmission(program, staticEdgesOf);
104
+ const staticEdgesOf = appendedEdgesOf(program, graph);
105
+ const cycleAdmissionReason = makeCycleAdmission(program, (sf) => staticEdgesOf(sf).filter((e) => e.call === undefined));
77
106
  const visit = (sf) => {
78
107
  const prior = state.get(sf);
79
108
  if (prior === "done")
@@ -81,10 +110,16 @@ function appendEntryModules(program, order, targets, paths, onCycle) {
81
110
  state.set(sf, "visiting");
82
111
  stack.push(sf.fileName);
83
112
  for (const edge of staticEdgesOf(sf)) {
113
+ if (edge.lazy === true)
114
+ continue; // visited after this module completes
84
115
  const edgeState = state.get(edge.dep);
85
116
  if (edgeState === "done")
86
117
  continue;
87
118
  if (edgeState === "visiting") {
119
+ if (edge.call !== undefined) {
120
+ graph?.inlineCycleCalls?.add(edge.call);
121
+ continue;
122
+ }
88
123
  const reason = cycleAdmissionReason(sf, edge);
89
124
  if (reason !== null) {
90
125
  const cycleStart = stack.indexOf(edge.dep.fileName);
@@ -97,6 +132,7 @@ function appendEntryModules(program, order, targets, paths, onCycle) {
97
132
  stack.pop();
98
133
  state.set(sf, "done");
99
134
  added.push(sf);
135
+ visitLazyEdges(sf, staticEdgesOf, state, visit);
100
136
  };
101
137
  const knownTargets = new Set(targets);
102
138
  for (const path of paths) {
@@ -121,8 +157,13 @@ export function splitFiles(lowerer) {
121
157
  const files = lowerer.moduleOrder.length > 0 ? lowerer.moduleOrder : [lowerer.entry];
122
158
  return files.map((sf) => {
123
159
  const fp = { sf, fnDecls: [], classDecls: [], topStmts: [] };
160
+ const rebindable = collectRebindableFunctions(lowerer, sf);
124
161
  for (const stmt of sf.statements.nodes) {
125
- if (ts.isFunctionDeclaration(stmt))
162
+ // A reassigned JavaScript declaration lives in a module global that
163
+ // the init body assigns first (rebindable-functions.ts).
164
+ if (ts.isFunctionDeclaration(stmt) && rebindable.has(stmt))
165
+ fp.topStmts.push(stmt);
166
+ else if (ts.isFunctionDeclaration(stmt))
126
167
  fp.fnDecls.push(stmt);
127
168
  else if (ts.isClassDeclaration(stmt))
128
169
  fp.classDecls.push(stmt);
@@ -181,7 +222,7 @@ function dynamicProgramImportsOf(program, sf) {
181
222
  });
182
223
  return out;
183
224
  }
184
- export function appendDynamicImportModules(program, order, onCycle) {
225
+ export function appendDynamicImportModules(program, order, onCycle, graph) {
185
226
  if (order.length === 0)
186
227
  return; // no preflight order — sites keep their fences
187
228
  const state = new Map();
@@ -189,20 +230,24 @@ export function appendDynamicImportModules(program, order, onCycle) {
189
230
  state.set(sf, "done");
190
231
  const added = [];
191
232
  const stack = [];
192
- const staticEdgesOf = (sf) => orderedImportsOf(program, sf).flatMap(({ stmt, dep }) => dep !== null && dep !== sf
193
- ? [{ dep, stmt: stmt }]
194
- : []);
195
- const cycleAdmissionReason = makeCycleAdmission(program, staticEdgesOf);
233
+ const staticEdgesOf = appendedEdgesOf(program, graph);
234
+ const cycleAdmissionReason = makeCycleAdmission(program, (sf) => staticEdgesOf(sf).filter((e) => e.call === undefined));
196
235
  const visit = (sf) => {
197
236
  if (state.get(sf) !== undefined)
198
237
  return;
199
238
  state.set(sf, "visiting");
200
239
  stack.push(sf.fileName);
201
240
  for (const e of staticEdgesOf(sf)) {
241
+ if (e.lazy === true)
242
+ continue; // visited after this module completes
202
243
  const s = state.get(e.dep);
203
244
  if (s === "done")
204
245
  continue;
205
246
  if (s === "visiting") {
247
+ if (e.call !== undefined) {
248
+ graph?.inlineCycleCalls?.add(e.call);
249
+ continue;
250
+ }
206
251
  // A back edge: Node answers it from the cache. Same admission
207
252
  // question as preflight's static walk, same fence when refused.
208
253
  const reason = cycleAdmissionReason(sf, e);
@@ -217,6 +262,7 @@ export function appendDynamicImportModules(program, order, onCycle) {
217
262
  stack.pop();
218
263
  state.set(sf, "done");
219
264
  added.push(sf);
265
+ visitLazyEdges(sf, staticEdgesOf, state, visit);
220
266
  };
221
267
  const scanned = new Set();
222
268
  for (;;) {
@@ -242,7 +288,7 @@ export function collectProgram(lowerer, parts) {
242
288
  for (const fp of parts)
243
289
  for (const decl of fp.classDecls) {
244
290
  const heritage = decl.heritageClauses?.nodes.find((clause) => clause.token === ts.SyntaxKind.ExtendsKeyword)?.types?.nodes[0]?.expression;
245
- if (heritage && ts.isCallExpression(heritage))
291
+ if (heritage && ts.isCallExpression(heritage) && !builtinRequireBaseOf(lowerer, heritage))
246
292
  computed.add(decl);
247
293
  }
248
294
  // Descendants need the computed ancestor's completed layout before
@@ -859,7 +905,8 @@ export function moduleArtifacts(lowerer, functions) {
859
905
  }
860
906
  const reachable = lowerer.reachableForArtifacts ?? lowerer.reachable;
861
907
  return {
862
- classes: [...lowerer.classes.values()]
908
+ classes: lowerer
909
+ .classesInTableOrder()
863
910
  .map((c) => c.def)
864
911
  .filter((def) => classNames.has(def.name))
865
912
  .map((def) => {
@@ -888,8 +935,14 @@ export function moduleArtifacts(lowerer, functions) {
888
935
  delete rest.abstractMethods;
889
936
  return rest;
890
937
  }),
891
- records: lowerer.shapes.shapes.filter((r) => shapeIds.has(r.id)),
892
- unions: lowerer.unions.unions.filter((u) => unionIds.has(u.id)),
938
+ // Ids come from what each shape and union is (keyedHelperName), so
939
+ // ordering by id gives every lowering order the same module.
940
+ records: lowerer.shapes.shapes
941
+ .filter((r) => shapeIds.has(r.id))
942
+ .sort((a, b) => (a.id < b.id ? -1 : a.id > b.id ? 1 : 0)),
943
+ unions: lowerer.unions.unions
944
+ .filter((u) => unionIds.has(u.id))
945
+ .sort((a, b) => (a.id < b.id ? -1 : a.id > b.id ? 1 : 0)),
893
946
  };
894
947
  }
895
948
  /** Registers every DIRECT top-level `const`/`let` of a file as a module
@@ -1056,6 +1109,30 @@ function jsDynHoldableInitializer(lowerer, init) {
1056
1109
  }
1057
1110
  return false;
1058
1111
  }
1112
+ /** A JavaScript default-export object literal holding a class the program
1113
+ * could not lower (`export default { parse, TomlDate }` where TomlDate
1114
+ * extends an unsupported base): the literal narrows that member away, its
1115
+ * diagnostics deferred to the reads that reach it, so the binding's type
1116
+ * drops it too. Otherwise the module's own initialization would fail the
1117
+ * width check against members no build can supply. */
1118
+ function withoutRejectedClassMembers(lowerer, expression, type) {
1119
+ let literal = expression;
1120
+ while (ts.isParenthesizedExpression(literal))
1121
+ literal = literal.expression;
1122
+ if (!ts.isObjectLiteralExpression(literal) || type.kind !== "record")
1123
+ return type;
1124
+ const shape = lowerer.shapes.get(type.shapeId);
1125
+ if (!shape || shape.tuple)
1126
+ return type;
1127
+ const rejected = (t) => t.kind === "classval" &&
1128
+ !lowerer.classes.has(t.className) &&
1129
+ lowerer.deferredClassByName.has(t.className);
1130
+ if (!shape.fields.some((f) => rejected(f.type)))
1131
+ return type;
1132
+ const kept = shape.fields.filter((f) => !rejected(f.type));
1133
+ const shapeId = lowerer.shapes.intern(kept.map((f) => ({ name: f.name, type: f.type })), false, shape.indexValue);
1134
+ return { kind: "record", shapeId };
1135
+ }
1059
1136
  export function collectGlobals(lowerer, sf, topStmts) {
1060
1137
  // Segment-tagged so mangled names can't collide across files (user
1061
1138
  // identifiers cannot contain '.'): entry globals "e.<name>", others
@@ -1067,6 +1144,21 @@ export function collectGlobals(lowerer, sf, topStmts) {
1067
1144
  // collected earlier in this pass must resolve them (lower-expando.ts).
1068
1145
  collectExpandoMembers(lowerer, sf);
1069
1146
  for (const stmt of topStmts) {
1147
+ if (ts.isFunctionDeclaration(stmt) && stmt.name && isRebindableFunction(lowerer, stmt)) {
1148
+ const symbol = lowerer.checker.getSymbolAtLocation(stmt.name);
1149
+ if (symbol && !lowerer.globalsBySymbol.has(symbol)) {
1150
+ const g = {
1151
+ id: `%g.${tag}${stmt.name.text}`,
1152
+ name: stmt.name.text,
1153
+ type: DYN,
1154
+ mutable: true,
1155
+ };
1156
+ lowerer.globalsBySymbol.set(symbol, g);
1157
+ lowerer.globalsByDeclNode.set(stmt, g);
1158
+ lowerer.globalsList.push(g);
1159
+ }
1160
+ continue;
1161
+ }
1070
1162
  // `export default <expr>`: the module's `default` binding is a const
1071
1163
  // module global (registered under the checker's default-export
1072
1164
  // symbol — the symbol a default IMPORT's alias chain terminates at,
@@ -1155,6 +1247,8 @@ export function collectGlobals(lowerer, sf, topStmts) {
1155
1247
  }
1156
1248
  if (type.kind === "void")
1157
1249
  lowerer.badType(stmt.expression, tsType);
1250
+ if (isJsSourceFile(sf))
1251
+ type = withoutRejectedClassMembers(lowerer, stmt.expression, type);
1158
1252
  const g = { id: `%g.${tag}default`, name: "default", type, mutable: false };
1159
1253
  lowerer.globalsBySymbol.set(symbol, g);
1160
1254
  lowerer.globalsList.push(g);
@@ -1194,9 +1288,19 @@ export function collectGlobals(lowerer, sf, topStmts) {
1194
1288
  // common/tls's `exports.check = function (certs) {...}` —
1195
1289
  // keep func-ness with dyn pieces; everything else is dyn).
1196
1290
  const strict = lowerer.checker.getTypeOfSymbol(symbol);
1197
- const t = lowerer.mapTypeOf(strict) ?? dynFallbackType(lowerer, nameNode, strict);
1291
+ let t = lowerer.mapTypeOf(strict) ?? dynFallbackType(lowerer, nameNode, strict);
1198
1292
  if (!t || t.kind === "void")
1199
1293
  lowerer.badType(typeNode, strict);
1294
+ // An export typed as the empty object literal (tsc's enum output
1295
+ // `exports.E || (exports.E = {})` after its `exports.E = void 0`
1296
+ // preamble): TS's `{}` admits any later non-nullish value and the
1297
+ // export is undefined until then, so it rides checked-dynamic
1298
+ // storage like the same-shaped var binding (varBindingType).
1299
+ if (t.kind === "record" && isJsSourceFile(sf)) {
1300
+ const shape = lowerer.shapes.get(t.shapeId);
1301
+ if (shape && shape.fields.length === 0 && !shape.indexValue && !shape.tuple)
1302
+ t = DYN;
1303
+ }
1200
1304
  // An immutable export source shares its live storage and native
1201
1305
  // callable ABI. Mutable sources need a separate snapshot slot:
1202
1306
  // later writes to the binding do not change the exported value.
@@ -1399,7 +1503,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
1399
1503
  if (type.kind === "void")
1400
1504
  lowerer.badType(stmt.name, lowerer.typeOf(stmt.name));
1401
1505
  const g = {
1402
- id: `%g.${tag}${nsPathPrefix(stmt)}%alias.${stmt.name.text}%${ts.tokenStartOfNode(stmt)}`,
1506
+ id: `%g.${tag}${nsPathPrefix(lowerer, stmt)}%alias.${stmt.name.text}%${positionTag(lowerer, stmt)}`,
1403
1507
  name: stmt.name.text,
1404
1508
  type,
1405
1509
  mutable: false,
@@ -1442,44 +1546,9 @@ export function collectGlobals(lowerer, sf, topStmts) {
1442
1546
  if (isRequireStatement(stmt) &&
1443
1547
  !(ts.isVariableStatement(stmt) &&
1444
1548
  stmt.declarationList.declarations.nodes.some((decl) => isNativeFfiRequire(lowerer, decl.initializer) || isJsonRequireDecl(lowerer, decl)))) {
1445
- if (ts.isVariableStatement(stmt) && (stmt.declarationList.flags & ts.NodeFlags.Const) !== 0) {
1446
- for (const decl of stmt.declarationList.declarations.nodes) {
1447
- stdlibGlobalAliasDecl(lowerer, decl.name, decl.initializer);
1448
- }
1449
- }
1450
- // `const { codes: { ERR_X } } = require("./errors")`: the outer
1451
- // keys stay alias plumbing, but a nested pattern destructures the
1452
- // export's value at the require, so its bindings own storage like
1453
- // any destructured declaration (lowerVarDeclarator assigns them).
1454
- if (ts.isVariableStatement(stmt)) {
1455
- const isLetList = (stmt.declarationList.flags & ts.NodeFlags.Let) !== 0 ||
1456
- (stmt.declarationList.flags & ts.NodeFlags.BlockScoped) === 0;
1457
- for (const decl of stmt.declarationList.declarations.nodes) {
1458
- for (const element of requireNestedPatternsOf(decl)) {
1459
- for (const nameNode of boundIdentifiersOf(element.name)) {
1460
- const symbol = lowerer.checker.getSymbolAtLocation(nameNode);
1461
- if (!symbol || lowerer.globalsBySymbol.has(symbol))
1462
- continue;
1463
- const mapped = lowerer.mapTypeOf(lowerer.typeOf(nameNode));
1464
- const type = mapped && mapped.kind !== "void" ? mapped : DYN;
1465
- const g = {
1466
- id: `%g.${tag}${nameNode.text}`,
1467
- name: nameNode.text,
1468
- type,
1469
- mutable: isLetList,
1470
- source: bindingSource(nameNode),
1471
- ...((type.kind === "func" || type.kind === "dyn") && !isVarDeclared(decl)
1472
- ? { tdz: true }
1473
- : {}),
1474
- };
1475
- lowerer.globalsBySymbol.set(symbol, g);
1476
- lowerer.globalsList.push(g);
1477
- if (isVarDeclared(decl))
1478
- noteVarGlobalEntryInit(lowerer, sf, g);
1479
- }
1480
- }
1481
- }
1482
- }
1549
+ if (ts.isVariableStatement(stmt))
1550
+ for (const decl of stmt.declarationList.declarations.nodes)
1551
+ registerRequireDeclBindings(lowerer, sf, stmt.declarationList, decl, tag);
1483
1552
  continue;
1484
1553
  }
1485
1554
  // `declare const __VERSION__: string` — AMBIENT: no storage exists
@@ -1502,7 +1571,7 @@ export function collectGlobals(lowerer, sf, topStmts) {
1502
1571
  // (`%g.e.A%B.x`), so `namespace A { export const x }` and a
1503
1572
  // top-level `const x` never collide; non-exported members add the
1504
1573
  // declaring block's position (block-local bindings).
1505
- const nsPrefix = nsPathPrefix(stmt, list.declarations.nodes[0]);
1574
+ const nsPrefix = nsPathPrefix(lowerer, stmt, list.declarations.nodes[0]);
1506
1575
  for (const decl of list.declarations.nodes) {
1507
1576
  // --provenance-sources: an elided pure-annotated dead const in a
1508
1577
  // fetched source module registers no global (the statement
@@ -1512,6 +1581,16 @@ export function collectGlobals(lowerer, sf, topStmts) {
1512
1581
  // and put its fences on the build.
1513
1582
  if (provenanceElidedConstDecl(lowerer, decl))
1514
1583
  continue;
1584
+ // A require declarator beside other declarators (`var EventEmitter =
1585
+ // require("events"), R = class extends EventEmitter {}`): the
1586
+ // statement lowering treats it as the alias plumbing of a whole
1587
+ // require statement (lowerVarDeclarator), so it owns no storage
1588
+ // either. A global here would never be assigned, and a read through
1589
+ // it would see null.
1590
+ if (requireAliasDecl(lowerer, decl)) {
1591
+ registerRequireDeclBindings(lowerer, sf, list, decl, tag);
1592
+ continue;
1593
+ }
1515
1594
  // A stored built-in numeric value iterator has no first-class
1516
1595
  // global representation. Its same-%init for-of uses are backed by
1517
1596
  // hidden source/cursor/done locals registered when the declaration
@@ -1789,18 +1868,23 @@ export function collectGlobals(lowerer, sf, topStmts) {
1789
1868
  // Builtin declarations do not always describe the concrete native
1790
1869
  // callable ABI. Preserve checked-native values in shared storage;
1791
1870
  // adapting the loader to (string) would replace its validation.
1871
+ // An inferred Promise.prototype binding holds an ordinary object
1872
+ // (isPromisePrototypeRead), in TypeScript as well.
1792
1873
  const initializer = decl.initializer ? stripTypeCasts(decl.initializer) : undefined;
1793
- if (isJsSourceFile(sf) &&
1794
- nameNode === decl.name &&
1795
- initializer &&
1796
- (isNativeBuiltinValueInitializer(lowerer, initializer) ||
1797
- (!decl.type &&
1798
- !hasJsTypeAnnotation(decl) &&
1799
- lowerer.mapTypeOf(lowerer.typeOf(nameNode))?.kind === "date") ||
1800
- (!decl.type &&
1801
- !hasJsTypeAnnotation(decl) &&
1802
- checkedGlobalReference(lowerer, initializer)) ||
1803
- stdlibGlobalNameOf(lowerer, initializer) === "globalThis")) {
1874
+ if ((nameNode === decl.name &&
1875
+ !decl.type &&
1876
+ isPromisePrototypeRead(lowerer, decl.initializer)) ||
1877
+ (isJsSourceFile(sf) &&
1878
+ nameNode === decl.name &&
1879
+ initializer &&
1880
+ (isNativeBuiltinValueInitializer(lowerer, initializer) ||
1881
+ (!decl.type &&
1882
+ !hasJsTypeAnnotation(decl) &&
1883
+ lowerer.mapTypeOf(lowerer.typeOf(nameNode))?.kind === "date") ||
1884
+ (!decl.type &&
1885
+ !hasJsTypeAnnotation(decl) &&
1886
+ checkedGlobalReference(lowerer, initializer)) ||
1887
+ stdlibGlobalNameOf(lowerer, initializer) === "globalThis"))) {
1804
1888
  const symbol = lowerer.checker.getSymbolAtLocation(nameNode);
1805
1889
  if (symbol && !lowerer.globalsBySymbol.has(symbol)) {
1806
1890
  const g = {
@@ -2372,6 +2456,52 @@ function noteVarGlobalEntryInit(lowerer, sf, g) {
2372
2456
  inits.push(g);
2373
2457
  lowerer.varGlobalEntryInits.set(sf, inits);
2374
2458
  }
2459
+ /** A JavaScript require declaration the statement lowering treats as alias
2460
+ * plumbing (lowerVarDeclarator): no storage, the reads resolve through to
2461
+ * the module. JSON documents and native FFI requires keep their storage. */
2462
+ function requireAliasDecl(lowerer, decl) {
2463
+ return (decl.initializer !== undefined &&
2464
+ requireSpecOf(decl.initializer) !== null &&
2465
+ !isNativeFfiRequire(lowerer, decl.initializer) &&
2466
+ !isJsonRequireDecl(lowerer, decl) &&
2467
+ isJsSourceFile(decl.getSourceFile()));
2468
+ }
2469
+ /** The registrations a top-level require declaration does make. `const
2470
+ * process = require('node:process')` aliases the global process
2471
+ * (stdlibGlobalAliasDecl's require form) so reads through the binding
2472
+ * lower via the process surface. In `const { codes: { ERR_X } } =
2473
+ * require("./errors")` the outer keys stay alias plumbing, but a nested
2474
+ * pattern destructures the export's value at the require, so its bindings
2475
+ * own storage like any destructured declaration (lowerVarDeclarator
2476
+ * assigns them). */
2477
+ function registerRequireDeclBindings(lowerer, sf, list, decl, tag) {
2478
+ if ((list.flags & ts.NodeFlags.Const) !== 0)
2479
+ stdlibGlobalAliasDecl(lowerer, decl.name, decl.initializer);
2480
+ const isLetList = (list.flags & ts.NodeFlags.Let) !== 0 || (list.flags & ts.NodeFlags.BlockScoped) === 0;
2481
+ for (const element of requireNestedPatternsOf(decl)) {
2482
+ for (const nameNode of boundIdentifiersOf(element.name)) {
2483
+ const symbol = lowerer.checker.getSymbolAtLocation(nameNode);
2484
+ if (!symbol || lowerer.globalsBySymbol.has(symbol))
2485
+ continue;
2486
+ const mapped = lowerer.mapTypeOf(lowerer.typeOf(nameNode));
2487
+ const type = mapped && mapped.kind !== "void" ? mapped : DYN;
2488
+ const g = {
2489
+ id: `%g.${tag}${nameNode.text}`,
2490
+ name: nameNode.text,
2491
+ type,
2492
+ mutable: isLetList,
2493
+ source: bindingSource(nameNode),
2494
+ ...((type.kind === "func" || type.kind === "dyn") && !isVarDeclared(decl)
2495
+ ? { tdz: true }
2496
+ : {}),
2497
+ };
2498
+ lowerer.globalsBySymbol.set(symbol, g);
2499
+ lowerer.globalsList.push(g);
2500
+ if (isVarDeclared(decl))
2501
+ noteVarGlobalEntryInit(lowerer, sf, g);
2502
+ }
2503
+ }
2504
+ }
2375
2505
  /** The nested half of module-scope `var` hoisting: a `var` inside a
2376
2506
  * top-level BLOCK (an if arm, a loop body, a try) is module-scoped in
2377
2507
  * JS — other functions in the file read the same binding — so it must
@@ -2409,6 +2539,12 @@ function collectNestedVarGlobals(lowerer, sf, stmt, tag) {
2409
2539
  });
2410
2540
  for (const list of lists) {
2411
2541
  for (const decl of list.declarations.nodes) {
2542
+ // A nested builtin require (`if (c) { var fs = require("fs"); }`)
2543
+ // lowers to nothing: its bindings are alias plumbing wherever the
2544
+ // statement sits (lowerVarDeclarator), so they own no storage.
2545
+ if (requireAliasDecl(lowerer, decl) &&
2546
+ canonicalBuiltinModule(requireSpecOf(decl.initializer)) !== null)
2547
+ continue;
2412
2548
  for (const nameNode of boundIdentifiersOf(decl.name)) {
2413
2549
  const diagsBefore = lowerer.diags.length;
2414
2550
  try {
@@ -2565,6 +2701,24 @@ export function lowerFileInit(lowerer, sf, stmts, name) {
2565
2701
  loc: loc0,
2566
2702
  });
2567
2703
  }
2704
+ // Reassigned function declarations are initialized when the module
2705
+ // starts, as declarations are hoisted: before its dependencies run, so
2706
+ // a module of an import cycle can call one while it initializes. Their
2707
+ // statements then lower to nothing (rebindable-functions.ts).
2708
+ for (const stmt of stmts) {
2709
+ if (!ts.isFunctionDeclaration(stmt) || !stmt.name || !isRebindableFunction(lowerer, stmt))
2710
+ continue;
2711
+ const g = lowerer.globalsByDeclNode.get(stmt);
2712
+ if (!g)
2713
+ continue;
2714
+ header.push({
2715
+ kind: "assign",
2716
+ localId: g.id,
2717
+ value: lowerer.coerceToExpected(lowerer.lowerLambda(stmt), DYN),
2718
+ loc: locOf(stmt),
2719
+ });
2720
+ ctx.hoistedFnDecls.add(stmt);
2721
+ }
2568
2722
  for (const { stmt, dep } of orderedImportsOf(lowerer.program, sf)) {
2569
2723
  const npm = lowerer.npmInitActions.get(sf)?.get(stmt);
2570
2724
  if (npm !== undefined && npm.length > 0) {
@@ -2934,6 +3088,7 @@ export function buildMain(lowerer) {
2934
3088
  ...lowerer.mainPrelude,
2935
3089
  ...cjsModuleRegistryPrelude(lowerer, loc),
2936
3090
  ...handleEventReaderPrelude(lowerer, loc),
3091
+ ...dateClassOperationPrelude(lowerer, loc),
2937
3092
  ];
2938
3093
  const roots = [lowerer.entry, ...lowerer.forkTargets, ...lowerer.workerTargets];
2939
3094
  const isAsync = roots.some((root) => lowerer.asyncInitFiles.has(root));