@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,14 +1,16 @@
1
1
  /* Property reads (`a.b`): lowerExprInner's property-access branch, intrinsic and union properties, field reads and targets, and match-group reads. */
2
+ import { keyedHelperName } from "../stable-names.js";
3
+ import { staticallySelected } from "../static-typeof.js";
2
4
  import * as ts from "../../ts7/adapter.js";
3
5
  import { lowerHistogramProperty } from "../builtins/performance.js";
4
6
  import { staticFunctionNameRead } from "../static-function-names.js";
5
7
  import { typedArgumentsArity } from "../typed-arguments.js";
6
8
  import { isThisParameter } from "../call-signatures.js";
7
- import { localPrivateBrandClass } from "../private-brands.js";
9
+ import { checkedPrivateValue, localPrivateBrandClass, privateNameClass, } from "../private-brands.js";
8
10
  import { PoisonError, jsFuncNameOf, neverTaintedJsType, own } from "../lowerer.js";
9
11
  import { ARRAY_METHODS, MAP_METHODS, NARROW_FIRST, OBJECT_CALLABLE_VALUES, SET_METHODS, STDLIB_SURFACE, STRING_INDEX_METHODS, STR_METHODS, isChildSurfaceMember, stdlibGlobalNameOf, } from "../surfaces.js";
10
12
  import { isGenericCallableMemberType, isLegacyUrlSymbol, isOsConstantsType, isParseArgsDynTypeName, } from "../../type-mapper.js";
11
- import { BOOL, BYTES_ELEMENT_NAME, DYN, F64, NULL_T, SEARCH_PARAMS_T, STRING, SYMBOL_T, UNDEFINED_T, arrayOf, canBoxFuncIntoDyn, funcOf, isDynTypedRefType, isUnitType, typeEquals, typeKey, unionContainerArmsOk, } from "../../../ir/ir.js";
13
+ import { BOOL, BYTES_ELEMENT_NAME, BYTES_U8, DYN, F64, NULL_T, SEARCH_PARAMS_T, STRING, SYMBOL_T, UNDEFINED_T, arrayOf, canBoxFuncIntoDyn, funcOf, isDynTypedRefType, isUnitType, typeEquals, typeKey, unionContainerArmsOk, BYTES_ELEMENT_SIZE, } from "../../../ir/ir.js";
12
14
  import { lowerNavigatorMember } from "../builtins/navigator.js";
13
15
  import { NODE_COMPAT_VERSION } from "../builtins/process.js";
14
16
  import { inlineNamespaceRequireOf, lowerWithInlineRequireInit, wholeExportValue, } from "../cjs-inline-require.js";
@@ -21,11 +23,12 @@ import { lowerThreadSlotsProperty } from "../thread-slots.js";
21
23
  import { builtinClassRefOf, runtimeClassValueOfType } from "../builtins/class-values.js";
22
24
  import { lowerRuntimeConstructor, lowerRuntimeConstructorName, runtimeConstructorReceiver, } from "../builtins/runtime-constructor.js";
23
25
  import { findGenericMethodOn, lowerStaticFieldRead } from "../lower-classes.js";
24
- import { lowerClassPrototypeData } from "../class-prototypes.js";
26
+ import { isErrorPrototypeValue, lowerClassPrototypeData } from "../class-prototypes.js";
25
27
  import { lowerEnumAccess } from "../lower-enums.js";
26
28
  import { hasOptionalChainGuard, isOptionalChainTail, isRequireMainFilename, } from "./optional-chains.js";
27
29
  import { isCjsModuleGlobal, lowerNodeModuleProperty, lowerRequireMainProperty, } from "../lower-node-module.js";
28
30
  import { dynUndefinedExpr, nodeThrowExpr, numLit, strLit, varRef } from "../../../ir/build.js";
31
+ import { typedArrayLacksMember } from "../builtins/typed-array-members.js";
29
32
  import { TEMPORAL_GLOBAL } from "../../builtin-modules.js";
30
33
  import { tryLowerExpression } from "./try-lower-expression.js";
31
34
  import { cjsClassExprWholeExportOf, cjsExportAssignmentOf, cjsExportDiscardReason, isCjsExportTableLiteral, isCjsJsFile, isJsSourceFile, isModuleExportsAccess, isNodeEsmFile, locOf, } from "../../program.js";
@@ -35,6 +38,7 @@ import { lowerProtocolPropertyRead } from "../class-protocol-dispatch.js";
35
38
  import { lowerReadlineProperty } from "../builtins/readline.js";
36
39
  import { lowerEventStaticProperty } from "../builtins/numbers.js";
37
40
  import { lowerStreamProperty, lowerStreamStateProperty, streamSidesOf } from "../lower-stream.js";
41
+ import { lowerValueStreamProperty } from "../builtins/hash-stream.js";
38
42
  import { lowerEventObjectProperty } from "../lower-event-target.js";
39
43
  import { iteratorResultValueRead } from "../lower-generators.js";
40
44
  import { lowerGlobalValue } from "../lower-global-value.js";
@@ -53,10 +57,13 @@ import { narrowStoredClassValue, structuralReadType } from "../class-unions.js";
53
57
  import { InternalCompilerError } from "../../../errors.js";
54
58
  import { lowerUnionFieldRead } from "./union-fields.js";
55
59
  import { errorPropertyRead } from "../error-methods.js";
56
- import { isSafeToRepeat } from "./evaluation-safety.js";
60
+ import { isSafeToDiscard, isSafeToRepeat } from "./evaluation-safety.js";
57
61
  import { isZlibStreamMember, lowerZlibStreamBytesWritten } from "../builtins/compression.js";
62
+ import { isWebCryptoReceiver } from "../builtins/crypto.js";
58
63
  import { isFsStreamMember, lowerFsStreamProperty } from "../builtins/fs-streams.js";
59
64
  import { keyedFieldRead } from "./keyed-field-targets.js";
65
+ import { promisePrototypeValue } from "../thenables.js";
66
+ import { lowerChildPropertyRead } from "../handle-properties.js";
60
67
  /** True when a property access names an ABSTRACT property declaration
61
68
  * (`abstract p: number` — a PropertyDeclaration, not an accessor).
62
69
  * These uses need concrete property dispatch because the base has no slot. */
@@ -130,12 +137,66 @@ function isStatFsDynProperty(lowerer, expr) {
130
137
  return false;
131
138
  }));
132
139
  }
140
+ /** The dgram.Socket methods its checked-dynamic handle answers as
141
+ * function values (scr_dgram.c's scr_dgram_dyn_method_names). */
142
+ const DGRAM_METHOD_VALUES = new Set([
143
+ "on",
144
+ "once",
145
+ "addListener",
146
+ "removeListener",
147
+ "off",
148
+ "emit",
149
+ "send",
150
+ "close",
151
+ "bind",
152
+ "connect",
153
+ "disconnect",
154
+ "address",
155
+ "ref",
156
+ "unref",
157
+ ]);
133
158
  export function lowerPropertyAccessExpr(lowerer, expr, loc) {
159
+ // `value.#x` on a checked-dynamic value, or on a checked extraction of
160
+ // one: the field of the brand-checked receiver (checkedPrivateValue).
161
+ if (ts.isPrivateIdentifier(expr.name)) {
162
+ const owner = privateNameClass(lowerer, expr.name);
163
+ const field = owner?.fields.get(expr.name.text);
164
+ const probed = field ? tryLowerExpression(lowerer, expr.expression) : null;
165
+ if (owner && field && probed && checkedDynamicValue(probed)) {
166
+ const value = checkedDynamicValue(lowerer.lowerExpr(expr.expression));
167
+ return {
168
+ kind: "fieldGet",
169
+ obj: checkedPrivateValue(lowerer, owner, expr, value, loc),
170
+ className: owner.def.name,
171
+ field: expr.name.text,
172
+ type: field,
173
+ loc,
174
+ };
175
+ }
176
+ }
134
177
  if (!expr.questionDotToken) {
135
178
  const navigator = lowerNavigatorMember(lowerer, expr, NODE_COMPAT_VERSION);
136
179
  if (navigator)
137
180
  return navigator;
138
181
  }
182
+ // A dgram socket's method read as a value in JavaScript (`emit:
183
+ // socket.emit.bind(socket)`): the socket crosses as its checked-dynamic
184
+ // handle, whose methods are function values that dispatch on their
185
+ // receiver, as the prototype methods do. The receiver is a native
186
+ // socket whatever its declaration spells (the shipped types declare no
187
+ // EventEmitter members), so the name decides.
188
+ if (!expr.questionDotToken &&
189
+ DGRAM_METHOD_VALUES.has(expr.name.text) &&
190
+ isJsSourceFile(ts.getSourceFileOfNode(expr)) &&
191
+ lowerer.mapTypeOf(lowerer.typeOf(expr.expression))?.kind === "dgramSocket") {
192
+ return {
193
+ kind: "dynKeyGet",
194
+ value: lowerer.coerceToExpected(lowerer.lowerExpr(expr.expression), DYN),
195
+ key: { kind: "strLit", value: expr.name.text, type: STRING, loc },
196
+ type: DYN,
197
+ loc,
198
+ };
199
+ }
139
200
  // `fn.name` on a function parameter of a generic instance keyed by
140
201
  // its argument's static name (call-site specialization).
141
202
  {
@@ -359,7 +420,7 @@ export function lowerPropertyAccessExpr(lowerer, expr, loc) {
359
420
  // arbitrary global-object mutation remains fenced. Preserve a dyn
360
421
  // undefined value so stored probes compose with optional calls.
361
422
  if (stdlibGlobalNameOf(lowerer, expr.expression) === "globalThis" &&
362
- !lowerer.checker.getPropertyOfType(lowerer.typeOf(expr.expression), expr.name.text)) {
423
+ !lowerer.checker.getPropertyOfType(lowerer.typeOf(staticallySelected(lowerer, expr.expression)), expr.name.text)) {
363
424
  return dynUndefinedExpr(loc);
364
425
  }
365
426
  // `Uint8Array.prototype.toBase64` and its siblings, the base64/hex
@@ -598,6 +659,11 @@ export function lowerPropertyAccessExpr(lowerer, expr, loc) {
598
659
  if (typed)
599
660
  return typed;
600
661
  }
662
+ {
663
+ const promiseMember = lowerPromiseConstructorRead(lowerer, expr);
664
+ if (promiseMember)
665
+ return promiseMember;
666
+ }
601
667
  const handled = lowerer.lowerProcessEnvGet(expr) ??
602
668
  lowerer.lowerServerProperty(expr) ??
603
669
  // diagnostics_channel Channel receivers — name/hasSubscribers
@@ -655,8 +721,14 @@ export function lowerPropertyAccessExpr(lowerer, expr, loc) {
655
721
  return handled;
656
722
  return iteratorResultValueRead(lowerer, handled, expr) ?? lowerer.maybeNarrow(handled, expr);
657
723
  }
724
+ // `globalThis.crypto` is the WebCrypto object the bare `crypto` answers.
725
+ if (!expr.questionDotToken &&
726
+ stdlibGlobalNameOf(lowerer, expr.expression) === "globalThis" &&
727
+ stdlibGlobalNameOf(lowerer, expr) === "crypto") {
728
+ return { kind: "libCall", fn: "webcrypto.object", args: [], type: DYN, loc };
729
+ }
658
730
  // `globalThis.<name>` that no lowering above claimed
659
- // (globalThis.crypto, globalThis.SubtleCrypto, globalThis.localStorage
731
+ // (globalThis.SubtleCrypto, globalThis.localStorage
660
732
  // — the harness's capability-conditional knownGlobals adds): the
661
733
  // PROPERTY spelling of the identifier chokepoint's JS rule — a stdlib
662
734
  // global taken as a VALUE in a JavaScript source is the same opaque
@@ -730,7 +802,7 @@ export function lowerPropertyAccessExpr(lowerer, expr, loc) {
730
802
  type: STRING,
731
803
  loc: locOf(expr.name),
732
804
  };
733
- const opt = hasOptionalChainGuard(expr.expression);
805
+ const opt = hasOptionalChainGuard(expr.expression, lowerer);
734
806
  return lowerer.maybeNarrow({
735
807
  kind: "dynKeyGet",
736
808
  key,
@@ -824,7 +896,7 @@ export function lowerPropertyAccessExpr(lowerer, expr, loc) {
824
896
  type: STRING,
825
897
  loc: locOf(expr.name),
826
898
  };
827
- const opt = hasOptionalChainGuard(expr.expression);
899
+ const opt = hasOptionalChainGuard(expr.expression, lowerer);
828
900
  return lowerer.maybeNarrow({
829
901
  kind: "dynKeyGet",
830
902
  key,
@@ -936,7 +1008,7 @@ export function lowerPropertyAccessExpr(lowerer, expr, loc) {
936
1008
  type: STRING,
937
1009
  loc: locOf(expr.name),
938
1010
  };
939
- const opt = hasOptionalChainGuard(expr.expression);
1011
+ const opt = hasOptionalChainGuard(expr.expression, lowerer);
940
1012
  const read = {
941
1013
  kind: "dynKeyGet",
942
1014
  key,
@@ -1023,7 +1095,7 @@ export function lowerPropertyAccessExpr(lowerer, expr, loc) {
1023
1095
  type: STRING,
1024
1096
  loc: locOf(expr.name),
1025
1097
  };
1026
- const opt = hasOptionalChainGuard(expr.expression);
1098
+ const opt = hasOptionalChainGuard(expr.expression, lowerer);
1027
1099
  return lowerer.maybeNarrow({
1028
1100
  kind: "dynKeyGet",
1029
1101
  key,
@@ -1167,8 +1239,39 @@ export function lowerPropertyAccessExpr(lowerer, expr, loc) {
1167
1239
  loc,
1168
1240
  }, expr);
1169
1241
  }
1242
+ const childProperty = lowerChildPropertyRead(lowerer, expr);
1243
+ if (childProperty)
1244
+ return childProperty;
1245
+ // A member a typed array's type does not declare (a JavaScript read, or
1246
+ // one under @ts-ignore), such as the feature probe `typeof bytes.toHex`:
1247
+ // when Node's prototype chain for the value lacks the name too, the read
1248
+ // answers undefined, as GetV does there. Names Node has keep the fence.
1249
+ // The element size reads the same way where the checker's type of the
1250
+ // receiver no longer names a typed array (`a instanceof Uint8Array ||
1251
+ // a.BYTES_PER_ELEMENT === 1`, whose right side narrows `a` to never).
1252
+ if (recvLowered.type.kind === "bytes" && expr.name.text === "BYTES_PER_ELEMENT") {
1253
+ return afterReceiver(recvLowered, numLit(BYTES_ELEMENT_SIZE[recvLowered.type.elem], loc), loc);
1254
+ }
1255
+ if (recvLowered.type.kind === "bytes" &&
1256
+ !declaredMemberOf(lowerer, expr.expression, expr.name.text) &&
1257
+ typedArrayLacksMember(expr.name.text, recvLowered.type.elem === "u8")) {
1258
+ return afterReceiver(recvLowered, dynUndefinedExpr(loc), loc);
1259
+ }
1170
1260
  lowerer.unsupported("SC1090", expr, `reading '${expr.name.text}' from a value of type '${lowerer.checker.typeToString(lowerer.typeOf(expr.expression))}'`);
1171
1261
  }
1262
+ /** `result` after evaluating `receiver` for its effects (none to keep when
1263
+ * the read is safe to discard). */
1264
+ function afterReceiver(receiver, result, loc) {
1265
+ if (isSafeToDiscard(receiver))
1266
+ return result;
1267
+ return {
1268
+ kind: "seqExpr",
1269
+ stmts: [{ kind: "exprStmt", expr: receiver, loc }],
1270
+ result,
1271
+ type: result.type,
1272
+ loc,
1273
+ };
1274
+ }
1172
1275
  /** A call expression, through parentheses: its value has no other holder. */
1173
1276
  function isFreshCallResult(node) {
1174
1277
  let e = node;
@@ -1338,6 +1441,19 @@ export function lowerIntrinsicProperty(lowerer, expr) {
1338
1441
  return { kind: "libCall", fn: "dyn.arrayPrototype", args: [], type: DYN, loc: locOf(expr) };
1339
1442
  if (lowerer.stdlibGlobalMember(expr, "Object") === "prototype")
1340
1443
  return { kind: "libCall", fn: "dyn.objectPrototype", args: [], type: DYN, loc: locOf(expr) };
1444
+ // Error.prototype as a value (`F.prototype = Object.create(Error.prototype)`)
1445
+ // and Error.captureStackTrace read as a function (`if
1446
+ // (Error.captureStackTrace) ...`).
1447
+ if (isErrorPrototypeValue(lowerer, expr))
1448
+ return { kind: "libCall", fn: "dyn.errorPrototype", args: [], type: DYN, loc: locOf(expr) };
1449
+ if (lowerer.stdlibGlobalMember(expr, "Error") === "captureStackTrace")
1450
+ return {
1451
+ kind: "libCall",
1452
+ fn: "dyn.errorCaptureStackTraceFunction",
1453
+ args: [],
1454
+ type: DYN,
1455
+ loc: locOf(expr),
1456
+ };
1341
1457
  // Function.prototype as a VALUE (a prototype-chain link:
1342
1458
  // `Object.setPrototypeOf(F.prototype, Function.prototype)`): one
1343
1459
  // anonymous function answering undefined, length 0 — a zero-capture
@@ -1383,6 +1499,30 @@ export function lowerIntrinsicProperty(lowerer, expr) {
1383
1499
  return netAddressStatic;
1384
1500
  if (lowerer.stdlibGlobalMember(expr, "Buffer") === "isBuffer")
1385
1501
  return lowerCheckedPredicateValue(lowerer, "Buffer.isBuffer", "buffer", locOf(expr));
1502
+ // Buffer statics as function values (`Buffer.byteLength.bind(Buffer)` in
1503
+ // truncate-utf8-bytes): the checked forms take any argument as Node does.
1504
+ if (lowerer.stdlibGlobalMember(expr, "Buffer") === "byteLength")
1505
+ return lowerer.lowerNativeCallableValue({
1506
+ fn: "buffer.byteLenValue",
1507
+ params: [DYN, DYN],
1508
+ result: F64,
1509
+ valueParams: [
1510
+ { mode: "required", type: DYN },
1511
+ { mode: "optional", type: DYN, defaultValue: undefined },
1512
+ ],
1513
+ }, "Buffer.byteLength", locOf(expr));
1514
+ if (lowerer.stdlibGlobalMember(expr, "Buffer") === "alloc")
1515
+ return bufferAllocValue(lowerer, locOf(expr));
1516
+ if (lowerer.stdlibGlobalMember(expr, "Buffer") === "compare")
1517
+ return lowerer.lowerNativeCallableValue({
1518
+ fn: "buffer.compareChk",
1519
+ params: [DYN, DYN],
1520
+ result: F64,
1521
+ valueParams: [
1522
+ { mode: "required", type: DYN },
1523
+ { mode: "required", type: DYN },
1524
+ ],
1525
+ }, "Buffer.compare", locOf(expr));
1386
1526
  if (lowerer.stdlibGlobalMember(expr, "Date") === "now")
1387
1527
  return lowerer.lowerNativeCallableValue({
1388
1528
  fn: "date.now",
@@ -1757,6 +1897,13 @@ export function lowerIntrinsicProperty(lowerer, expr) {
1757
1897
  loc,
1758
1898
  };
1759
1899
  }
1900
+ // The element size: a constant of the element kind (1 for a Buffer).
1901
+ if (name === "BYTES_PER_ELEMENT") {
1902
+ const expected = lowerer.mapTypeOf(lowerer.typeOf(expr.expression));
1903
+ const receiver = expected?.kind === "bytes" ? strictReceiver(expected) : lowerer.lowerExpr(expr.expression);
1904
+ if (receiver.type.kind === "bytes")
1905
+ return afterReceiver(receiver, numLit(BYTES_ELEMENT_SIZE[receiver.type.elem], loc), loc);
1906
+ }
1760
1907
  if (name === "length" || name === "byteLength") {
1761
1908
  const expected = lowerer.mapTypeOf(lowerer.typeOf(expr.expression));
1762
1909
  let receiver = expected?.kind === "bytes" ? strictReceiver(expected) : lowerer.lowerExpr(expr.expression);
@@ -1889,10 +2036,78 @@ export function lowerIntrinsicProperty(lowerer, expr) {
1889
2036
  STRING_INDEX_METHODS.has(name) ||
1890
2037
  own(STDLIB_SURFACE.string, name) !== undefined
1891
2038
  : ARRAY_METHODS.has(name)) {
2039
+ // A JavaScript string method read as a value (smol-toml's
2040
+ // `!!(''.isWellFormed)` feature probe): String.prototype's method, the
2041
+ // runtime's interned function that runs it on its receiver.
2042
+ if (kind === "string" && isJsSourceFile(expr.getSourceFile()) && !expr.questionDotToken) {
2043
+ const receiver = lowerer.lowerExpr(expr.expression);
2044
+ const method = {
2045
+ kind: "libCall",
2046
+ fn: "dyn.builtinMethod",
2047
+ args: [
2048
+ { kind: "strLit", value: "String", type: STRING, loc: locOf(expr) },
2049
+ { kind: "strLit", value: name, type: STRING, loc: locOf(expr.name) },
2050
+ ],
2051
+ type: DYN,
2052
+ loc: locOf(expr),
2053
+ };
2054
+ return isSafeToDiscard(receiver)
2055
+ ? method
2056
+ : {
2057
+ kind: "seqExpr",
2058
+ stmts: [{ kind: "exprStmt", expr: receiver, loc: locOf(expr.expression) }],
2059
+ result: method,
2060
+ type: DYN,
2061
+ loc: locOf(expr),
2062
+ };
2063
+ }
1892
2064
  lowerer.unsupported("SC1090", expr, `${kind} methods as values (call '${name}' directly)`);
1893
2065
  }
1894
2066
  return null;
1895
2067
  }
2068
+ /** Buffer.alloc as a function value (`var alloc = Buffer.alloc` in
2069
+ * tar-stream): the runtime checks the size, allocates and fills with
2070
+ * `fill` and `encoding` as Node's alloc does. */
2071
+ function bufferAllocValue(lowerer, loc) {
2072
+ const name = "%builtin.Buffer.alloc";
2073
+ if (!lowerer.builtinCallableValueFns.has(name)) {
2074
+ lowerer.builtinCallableValueFns.set(name, name);
2075
+ const params = ["size", "fill", "encoding"].map((id) => ({ localId: id, name: id, type: DYN }));
2076
+ lowerer.liftedFns.push({
2077
+ name,
2078
+ params,
2079
+ returnType: BYTES_U8,
2080
+ locals: params.map((p) => ({ id: p.localId, name: p.name, type: DYN, mutable: false })),
2081
+ loc,
2082
+ body: [
2083
+ {
2084
+ kind: "return",
2085
+ value: {
2086
+ kind: "libCall",
2087
+ fn: "buffer.allocValue",
2088
+ args: params.map((p) => varRef(p.localId, DYN, loc)),
2089
+ type: BYTES_U8,
2090
+ loc,
2091
+ },
2092
+ loc,
2093
+ },
2094
+ ],
2095
+ });
2096
+ }
2097
+ return {
2098
+ kind: "dynFrom",
2099
+ value: {
2100
+ kind: "closure",
2101
+ fnName: name,
2102
+ captures: [],
2103
+ type: { kind: "func", params: [DYN, DYN, DYN], ret: BYTES_U8 },
2104
+ loc,
2105
+ },
2106
+ fnName: "alloc",
2107
+ type: DYN,
2108
+ loc,
2109
+ };
2110
+ }
1896
2111
  /** A `T | undefined` class field read that the checker narrowed to `T`
1897
2112
  * where the field was assigned a value that may be missing (an unchecked
1898
2113
  * indexed read). TypeScript's assignment narrowing is not a runtime fact
@@ -2259,7 +2474,7 @@ export function lowerGroupsProjection(lowerer, recv, groups, loc) {
2259
2474
  const key = `regexgroups:${shapeId}:${groups.map((g) => `${g.name}=${g.index}`).join(",")}:${recvKey}`;
2260
2475
  let helper = lowerer.valueHelpers.get(key);
2261
2476
  if (!helper) {
2262
- helper = `%regex.groups.${lowerer.valueHelpers.size}`;
2477
+ helper = keyedHelperName(lowerer, "%regex.groups", key);
2263
2478
  lowerer.valueHelpers.set(key, helper);
2264
2479
  const body = [];
2265
2480
  const locals = [{ id: "m.0", name: "m", type: recv.type, mutable: true }];
@@ -2387,7 +2602,7 @@ export function lowerFieldRead(lowerer, expr) {
2387
2602
  kind: "dynKeyGet",
2388
2603
  value,
2389
2604
  key: { kind: "strLit", value: expr.name.text, type: STRING, loc: locOf(expr.name) },
2390
- ...(expr.questionDotToken || hasOptionalChainGuard(expr.expression)
2605
+ ...(expr.questionDotToken || hasOptionalChainGuard(expr.expression, lowerer)
2391
2606
  ? { optional: true }
2392
2607
  : {}),
2393
2608
  type: DYN,
@@ -2424,6 +2639,9 @@ export function lowerFieldRead(lowerer, expr) {
2424
2639
  const propSym = lowerer.checker.getPropertyOfType(lowerer.typeOf(expr.expression), expr.name.text);
2425
2640
  if (receiverIr?.kind !== "object" &&
2426
2641
  propSym &&
2642
+ // The WebCrypto object's generic getRandomValues reads off its
2643
+ // dynamic object.
2644
+ !isWebCryptoReceiver(lowerer, expr.expression) &&
2427
2645
  isGenericCallableMemberType(lowerer.checker.getTypeOfSymbol(propSym), lowerer.checker) &&
2428
2646
  // CLASS members keep the class-path fences (a poisoned class's own
2429
2647
  // diagnostics, the bound-method fence above).
@@ -2685,7 +2903,7 @@ export function lowerUnionProperty(lowerer, expr) {
2685
2903
  kind: "dynKeyGet",
2686
2904
  value: lowerer.coerceToExpected(value, DYN),
2687
2905
  key,
2688
- ...(hasOptionalChainGuard(expr.expression) ? { optional: true } : {}),
2906
+ ...(hasOptionalChainGuard(expr.expression, lowerer) ? { optional: true } : {}),
2689
2907
  type: DYN,
2690
2908
  loc: locOf(expr),
2691
2909
  };
@@ -2920,6 +3138,13 @@ export function classFieldTarget(lowerer, receiverNode, receiverType, fieldName,
2920
3138
  * known class instance OR a record, and the member is a field or (class
2921
3139
  * receivers) a declared accessor property. Returns the pieces of a
2922
3140
  * fieldSet/recordSet/accessor-call (minus value/kind) or null. */
3141
+ /** The checked-dynamic value `expr` reads: itself, or the value a checked
3142
+ * extraction validates. Null for other expressions. */
3143
+ function checkedDynamicValue(expr) {
3144
+ if (expr.type.kind === "dyn")
3145
+ return expr;
3146
+ return expr.kind === "dynCheck" && expr.value.type.kind === "dyn" ? expr.value : null;
3147
+ }
2923
3148
  export function fieldTarget(lowerer, access) {
2924
3149
  if (lowerer.cjsLocalModuleBindingOf(access.expression))
2925
3150
  return null;
@@ -2953,6 +3178,18 @@ export function fieldTarget(lowerer, access) {
2953
3178
  return classFieldTarget(lowerer, access.expression, ownerType, access.name.text);
2954
3179
  }
2955
3180
  }
3181
+ // `value.#x = v` on a checked-dynamic value: the field of the
3182
+ // brand-checked receiver (checkedPrivateValue).
3183
+ if (ts.isPrivateIdentifier(access.name)) {
3184
+ const owner = privateNameClass(lowerer, access.name);
3185
+ const probed = owner?.fields.has(access.name.text)
3186
+ ? tryLowerExpression(lowerer, access.expression)
3187
+ : null;
3188
+ if (owner && probed && checkedDynamicValue(probed)) {
3189
+ const receiver = checkedPrivateValue(lowerer, owner, access, checkedDynamicValue(lowerer.lowerExpr(access.expression)), locOf(access));
3190
+ return classFieldTarget(lowerer, access.expression, { kind: "object", className: owner.def.name }, access.name.text, receiver);
3191
+ }
3192
+ }
2956
3193
  const stored = ts.isIdentifier(access.expression)
2957
3194
  ? (lowerer.peekLocal(access.expression)?.type ?? lowerer.globalOf(access.expression)?.type)
2958
3195
  : undefined;
@@ -3312,6 +3549,9 @@ export function fieldGetExpr(lowerer, target, loc, blame) {
3312
3549
  function lowerStreamObjectProperty(lowerer, expr) {
3313
3550
  if (expr.questionDotToken && !lowerer.chainHandled.has(expr))
3314
3551
  return null;
3552
+ const valueStream = lowerValueStreamProperty(lowerer, expr);
3553
+ if (valueStream)
3554
+ return valueStream;
3315
3555
  const recvT = lowerer.mapTypeOf(lowerer.typeOf(expr.expression));
3316
3556
  if (recvT?.kind !== "object")
3317
3557
  return null;
@@ -3328,10 +3568,25 @@ function lowerStreamObjectProperty(lowerer, expr) {
3328
3568
  }
3329
3569
  return lowerStreamProperty(lowerer, expr, info);
3330
3570
  }
3571
+ /** The error constructors among GLOBAL_CONSTRUCTOR_VALUES. Their statics
3572
+ * (`Error.stackTraceLimit`, `Error.captureStackTrace`) keep their own
3573
+ * lowerings, so fenceBuiltinConstructorStaticRead leaves them alone. */
3574
+ const ERROR_CONSTRUCTOR_VALUES = new Set([
3575
+ "Error",
3576
+ "TypeError",
3577
+ "RangeError",
3578
+ "SyntaxError",
3579
+ "ReferenceError",
3580
+ "EvalError",
3581
+ "URIError",
3582
+ "AggregateError",
3583
+ ]);
3331
3584
  /** The builtin constructors JavaScript sources read as real function
3332
3585
  * values rather than identity tokens: the runtime interns one function per
3333
3586
  * constructor, and dynamic values answer `.constructor` with the same one,
3334
- * so `o.constructor === Object` is an exact identity test. */
3587
+ * so `o.constructor === Object` and `err.constructor === TypeError` are
3588
+ * exact identity tests, and `err.constructor.name` is the constructor's
3589
+ * name. */
3335
3590
  const GLOBAL_CONSTRUCTOR_VALUES = new Set([
3336
3591
  "Object",
3337
3592
  "Function",
@@ -3342,6 +3597,7 @@ const GLOBAL_CONSTRUCTOR_VALUES = new Set([
3342
3597
  "Promise",
3343
3598
  "WeakMap",
3344
3599
  "WeakSet",
3600
+ ...ERROR_CONSTRUCTOR_VALUES,
3345
3601
  ]);
3346
3602
  /** The builtin global functions JavaScript sources read as interned
3347
3603
  * function values (the `cond ? setImmediate : process.nextTick` feature
@@ -3388,8 +3644,18 @@ export function builtinGlobalValue(canonical, loc, js = false) {
3388
3644
  * answer undefined, so it keeps its static lowering or its fence. */
3389
3645
  const BUILTIN_VALUE_MEMBERS = new Set(["name", "length", "constructor"]);
3390
3646
  /** The Object statics whose answers for an interned builtin function value
3391
- * match Node's (identity, and the empty enumerable own-key lists). */
3392
- const BUILTIN_VALUE_REFLECTION = new Set(["is", "keys", "values", "entries"]);
3647
+ * match Node's (identity, the empty enumerable own-key lists, and
3648
+ * extensibility: freezing, sealing and preventExtensions are fenced, so the
3649
+ * values stay extensible). */
3650
+ const BUILTIN_VALUE_REFLECTION = new Set([
3651
+ "is",
3652
+ "keys",
3653
+ "values",
3654
+ "entries",
3655
+ "isExtensible",
3656
+ "isFrozen",
3657
+ "isSealed",
3658
+ ]);
3393
3659
  /** The value `builtinGlobalValue` gives the stdlib global `expr` read at its
3394
3660
  * use site: null when the use reads the global's members (they keep their
3395
3661
  * lowerings and fences), and SC2020 when it is the target of reflection or
@@ -3460,6 +3726,7 @@ function fenceBuiltinConstructorStaticRead(lowerer, access) {
3460
3726
  if (symbol !== undefined &&
3461
3727
  ts.symbolName(symbol).endsWith("Constructor") &&
3462
3728
  GLOBAL_CONSTRUCTOR_VALUES.has(ts.symbolName(symbol).slice(0, -"Constructor".length)) &&
3729
+ !ERROR_CONSTRUCTOR_VALUES.has(ts.symbolName(symbol).slice(0, -"Constructor".length)) &&
3463
3730
  lowerer.isStdlibSymbol(symbol))
3464
3731
  lowerer.stdlibMemberFence(access);
3465
3732
  return null;
@@ -3541,4 +3808,72 @@ export function declaredMemberOf(lowerer, receiver, name) {
3541
3808
  const symbol = lowerer.checker.getPropertyOfType(lowerer.typeOf(receiver), name);
3542
3809
  return !!symbol && symbol.declarations.length > 0;
3543
3810
  }
3811
+ /** Whether `expr` reads Promise.prototype, directly or as
3812
+ * `promise.constructor.prototype`. The checker types it Promise<any>, but
3813
+ * the value is an ordinary object, so a binding inferred from it stays
3814
+ * checked-dynamic (as in Node, promise methods called on it throw). */
3815
+ export function isPromisePrototypeRead(lowerer, expr) {
3816
+ if (!expr)
3817
+ return false;
3818
+ while (ts.isParenthesizedExpression(expr))
3819
+ expr = expr.expression;
3820
+ if (!ts.isPropertyAccessExpression(expr) || expr.questionDotToken)
3821
+ return false;
3822
+ if (expr.name.text !== "prototype")
3823
+ return false;
3824
+ if (lowerer.stdlibGlobalMember(expr, "Promise") === "prototype")
3825
+ return true;
3826
+ const inner = expr.expression;
3827
+ return (ts.isPropertyAccessExpression(inner) &&
3828
+ !inner.questionDotToken &&
3829
+ inner.name.text === "constructor" &&
3830
+ lowerer.mapTypeOf(lowerer.typeOf(inner.expression))?.kind === "promise");
3831
+ }
3832
+ /** A promise's `constructor` (the Promise constructor value), and
3833
+ * Promise.prototype read as `promise.constructor.prototype` or
3834
+ * `Promise.prototype` (execa's `(async () => {})().constructor.prototype`):
3835
+ * an object holding the runtime's then, catch and finally (thenables.ts).
3836
+ * Null for other reads. */
3837
+ function lowerPromiseConstructorRead(lowerer, expr) {
3838
+ if (expr.questionDotToken)
3839
+ return null;
3840
+ const loc = locOf(expr);
3841
+ const isPromise = (node) => lowerer.mapTypeOf(lowerer.typeOf(node))?.kind === "promise";
3842
+ if (expr.name.text === "prototype") {
3843
+ if (lowerer.stdlibGlobalMember(expr, "Promise") === "prototype")
3844
+ return promisePrototypeValue(lowerer, loc);
3845
+ const inner = expr.expression;
3846
+ if (ts.isPropertyAccessExpression(inner) &&
3847
+ !inner.questionDotToken &&
3848
+ inner.name.text === "constructor" &&
3849
+ isPromise(inner.expression)) {
3850
+ const receiver = lowerer.lowerExpr(inner.expression);
3851
+ const prototype = promisePrototypeValue(lowerer, loc);
3852
+ return isSafeToDiscard(receiver)
3853
+ ? prototype
3854
+ : {
3855
+ kind: "seqExpr",
3856
+ stmts: [{ kind: "exprStmt", expr: receiver, loc }],
3857
+ result: prototype,
3858
+ type: DYN,
3859
+ loc,
3860
+ };
3861
+ }
3862
+ return null;
3863
+ }
3864
+ if (expr.name.text === "constructor" && isPromise(expr.expression)) {
3865
+ const receiver = lowerer.lowerExpr(expr.expression);
3866
+ const ctor = builtinGlobalValue("Promise", loc);
3867
+ return isSafeToDiscard(receiver)
3868
+ ? ctor
3869
+ : {
3870
+ kind: "seqExpr",
3871
+ stmts: [{ kind: "exprStmt", expr: receiver, loc }],
3872
+ result: ctor,
3873
+ type: DYN,
3874
+ loc,
3875
+ };
3876
+ }
3877
+ return null;
3878
+ }
3544
3879
  //# sourceMappingURL=property-access.js.map