@scriptc/compiler 0.4.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (433) hide show
  1. package/ambient/scriptc-node-fallback.d.ts +35 -5
  2. package/dist/backend/executable-features.js +7 -0
  3. package/dist/backend/executable-features.js.map +1 -1
  4. package/dist/backend/library-pack.js +3 -0
  5. package/dist/backend/library-pack.js.map +1 -1
  6. package/dist/backend/link-plan-core.d.ts +2 -0
  7. package/dist/backend/link-plan-core.js +2 -0
  8. package/dist/backend/link-plan-core.js.map +1 -1
  9. package/dist/backend/link-plan.d.ts +1 -0
  10. package/dist/backend/link-plan.js +1 -0
  11. package/dist/backend/link-plan.js.map +1 -1
  12. package/dist/backend/llvm/array-search.js +3 -1
  13. package/dist/backend/llvm/array-search.js.map +1 -1
  14. package/dist/backend/llvm/classes.d.ts +27 -1
  15. package/dist/backend/llvm/classes.js +115 -22
  16. package/dist/backend/llvm/classes.js.map +1 -1
  17. package/dist/backend/llvm/classes.test.js +21 -9
  18. package/dist/backend/llvm/classes.test.js.map +1 -1
  19. package/dist/backend/llvm/common.d.ts +21 -3
  20. package/dist/backend/llvm/common.js +50 -3
  21. package/dist/backend/llvm/common.js.map +1 -1
  22. package/dist/backend/llvm/dense-array-access.d.ts +3 -1
  23. package/dist/backend/llvm/dense-array-access.js +61 -38
  24. package/dist/backend/llvm/dense-array-access.js.map +1 -1
  25. package/dist/backend/llvm/dense-array-access.test.js +4 -0
  26. package/dist/backend/llvm/dense-array-access.test.js.map +1 -1
  27. package/dist/backend/llvm/dense-array-loops.js +3 -3
  28. package/dist/backend/llvm/dense-array-loops.js.map +1 -1
  29. package/dist/backend/llvm/dyn.d.ts +9 -0
  30. package/dist/backend/llvm/dyn.js +62 -6
  31. package/dist/backend/llvm/dyn.js.map +1 -1
  32. package/dist/backend/llvm/emit-function.js +5 -2
  33. package/dist/backend/llvm/emit-function.js.map +1 -1
  34. package/dist/backend/llvm/emit-module.js +54 -32
  35. package/dist/backend/llvm/emit-module.js.map +1 -1
  36. package/dist/backend/llvm/emit-statements.d.ts +3 -2
  37. package/dist/backend/llvm/emit-statements.js +90 -13
  38. package/dist/backend/llvm/emit-statements.js.map +1 -1
  39. package/dist/backend/llvm/emitter.d.ts +20 -9
  40. package/dist/backend/llvm/emitter.js +42 -31
  41. package/dist/backend/llvm/emitter.js.map +1 -1
  42. package/dist/backend/llvm/expr-calls.js +17 -4
  43. package/dist/backend/llvm/expr-calls.js.map +1 -1
  44. package/dist/backend/llvm/expr-containers.js +6 -9
  45. package/dist/backend/llvm/expr-containers.js.map +1 -1
  46. package/dist/backend/llvm/expr-dynamic.js +46 -4
  47. package/dist/backend/llvm/expr-dynamic.js.map +1 -1
  48. package/dist/backend/llvm/expr-primitives.js +3 -3
  49. package/dist/backend/llvm/expr-primitives.js.map +1 -1
  50. package/dist/backend/llvm/expr-primitives.test.js +55 -0
  51. package/dist/backend/llvm/expr-primitives.test.js.map +1 -1
  52. package/dist/backend/llvm/expr-stream-bridges.js +11 -15
  53. package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
  54. package/dist/backend/llvm/integer-clones.js +3 -3
  55. package/dist/backend/llvm/integer-clones.js.map +1 -1
  56. package/dist/backend/llvm/js-ic.d.ts +18 -0
  57. package/dist/backend/llvm/js-ic.js +712 -0
  58. package/dist/backend/llvm/js-ic.js.map +1 -0
  59. package/dist/backend/llvm/jsval.js +139 -11
  60. package/dist/backend/llvm/jsval.js.map +1 -1
  61. package/dist/backend/llvm/lib-process.js +4 -3
  62. package/dist/backend/llvm/lib-process.js.map +1 -1
  63. package/dist/backend/llvm/lib-shared.js +22 -0
  64. package/dist/backend/llvm/lib-shared.js.map +1 -1
  65. package/dist/backend/llvm/local-array-reads.js +40 -31
  66. package/dist/backend/llvm/local-array-reads.js.map +1 -1
  67. package/dist/backend/llvm/map-number-lookup.d.ts +20 -4
  68. package/dist/backend/llvm/map-number-lookup.js +43 -7
  69. package/dist/backend/llvm/map-number-lookup.js.map +1 -1
  70. package/dist/backend/llvm/narrow-guards.js +64 -0
  71. package/dist/backend/llvm/narrow-guards.js.map +1 -1
  72. package/dist/backend/llvm/publish.d.ts +3 -0
  73. package/dist/backend/llvm/publish.js +36 -17
  74. package/dist/backend/llvm/publish.js.map +1 -1
  75. package/dist/backend/llvm/regions.js +2 -2
  76. package/dist/backend/llvm/regions.js.map +1 -1
  77. package/dist/backend/llvm/regions.test.js +7 -1
  78. package/dist/backend/llvm/regions.test.js.map +1 -1
  79. package/dist/backend/llvm/shapes.d.ts +8 -2
  80. package/dist/backend/llvm/shapes.js +9 -7
  81. package/dist/backend/llvm/shapes.js.map +1 -1
  82. package/dist/backend/llvm/speculative-integers.d.ts +20 -1
  83. package/dist/backend/llvm/speculative-integers.js +94 -6
  84. package/dist/backend/llvm/speculative-integers.js.map +1 -1
  85. package/dist/backend/llvm/speculative-integers.test.js +55 -1
  86. package/dist/backend/llvm/speculative-integers.test.js.map +1 -1
  87. package/dist/backend/llvm/string-reads.d.ts +1 -1
  88. package/dist/backend/llvm/string-reads.js +4 -4
  89. package/dist/backend/llvm/string-reads.js.map +1 -1
  90. package/dist/backend/llvm/thread-slots.test.js +5 -4
  91. package/dist/backend/llvm/thread-slots.test.js.map +1 -1
  92. package/dist/backend/mangle.d.ts +5 -0
  93. package/dist/backend/mangle.js +7 -0
  94. package/dist/backend/mangle.js.map +1 -1
  95. package/dist/backend/native/contracts.d.ts +20 -0
  96. package/dist/backend/native/executable.js +20 -3
  97. package/dist/backend/native/executable.js.map +1 -1
  98. package/dist/backend/native/library.js +2 -1
  99. package/dist/backend/native/library.js.map +1 -1
  100. package/dist/backend/native-codegen.d.ts +6 -0
  101. package/dist/backend/native-codegen.js +19 -0
  102. package/dist/backend/native-codegen.js.map +1 -1
  103. package/dist/backend/native-codegen.test.js +27 -0
  104. package/dist/backend/native-codegen.test.js.map +1 -1
  105. package/dist/backend/native-link-info-core.d.ts +18 -0
  106. package/dist/backend/native-link-info-core.js.map +1 -1
  107. package/dist/backend/native-profile.d.ts +32 -0
  108. package/dist/backend/native-profile.js +39 -0
  109. package/dist/backend/native-profile.js.map +1 -0
  110. package/dist/backend/native-profile.test.d.ts +1 -0
  111. package/dist/backend/native-profile.test.js +58 -0
  112. package/dist/backend/native-profile.test.js.map +1 -0
  113. package/dist/backend/native-tools.d.ts +14 -0
  114. package/dist/backend/native-tools.js +13 -0
  115. package/dist/backend/native-tools.js.map +1 -1
  116. package/dist/backend/runtime-abi.d.ts +2 -2
  117. package/dist/backend/runtime-abi.js +2 -2
  118. package/dist/backend/runtime-pack-core.d.ts +4 -0
  119. package/dist/backend/runtime-pack-core.js +4 -0
  120. package/dist/backend/runtime-pack-core.js.map +1 -1
  121. package/dist/backend/runtime-pack-targets.test.js +4 -1
  122. package/dist/backend/runtime-pack-targets.test.js.map +1 -1
  123. package/dist/backend/runtime-pack.test.js +4 -1
  124. package/dist/backend/runtime-pack.test.js.map +1 -1
  125. package/dist/backend/target-diagnostics.js +7 -0
  126. package/dist/backend/target-diagnostics.js.map +1 -1
  127. package/dist/backend/warm-cache.js +3 -0
  128. package/dist/backend/warm-cache.js.map +1 -1
  129. package/dist/cli/command.js +63 -1
  130. package/dist/cli/command.js.map +1 -1
  131. package/dist/cli/host.d.ts +3 -0
  132. package/dist/cli/output-options.d.ts +2 -0
  133. package/dist/cli/output-options.js +9 -0
  134. package/dist/cli/output-options.js.map +1 -1
  135. package/dist/cli/usage.d.ts +11 -1
  136. package/dist/cli/usage.js +23 -0
  137. package/dist/cli/usage.js.map +1 -1
  138. package/dist/compile-types.d.ts +9 -0
  139. package/dist/contracts/check.js +1 -2
  140. package/dist/contracts/check.js.map +1 -1
  141. package/dist/executable/executable-cache.d.ts +10 -0
  142. package/dist/executable/executable-cache.js +6 -0
  143. package/dist/executable/executable-cache.js.map +1 -1
  144. package/dist/executable/executable-cache.test.js +5 -0
  145. package/dist/executable/executable-cache.test.js.map +1 -1
  146. package/dist/frontend/arguments-usage.d.ts +8 -0
  147. package/dist/frontend/arguments-usage.js +98 -0
  148. package/dist/frontend/arguments-usage.js.map +1 -1
  149. package/dist/frontend/arguments-usage.test.d.ts +1 -0
  150. package/dist/frontend/arguments-usage.test.js +32 -0
  151. package/dist/frontend/arguments-usage.test.js.map +1 -0
  152. package/dist/frontend/builtin-package-aliases.d.ts +24 -0
  153. package/dist/frontend/builtin-package-aliases.js +133 -0
  154. package/dist/frontend/builtin-package-aliases.js.map +1 -0
  155. package/dist/frontend/builtin-package-aliases.test.d.ts +1 -0
  156. package/dist/frontend/builtin-package-aliases.test.js +48 -0
  157. package/dist/frontend/builtin-package-aliases.test.js.map +1 -0
  158. package/dist/frontend/dts-paths.d.ts +4 -0
  159. package/dist/frontend/dts-paths.js +9 -1
  160. package/dist/frontend/dts-paths.js.map +1 -1
  161. package/dist/frontend/lowering/builtins/builtin-class-dyn.d.ts +8 -0
  162. package/dist/frontend/lowering/builtins/builtin-class-dyn.js +50 -1
  163. package/dist/frontend/lowering/builtins/builtin-class-dyn.js.map +1 -1
  164. package/dist/frontend/lowering/builtins/callable-aliases.js +3 -2
  165. package/dist/frontend/lowering/builtins/callable-aliases.js.map +1 -1
  166. package/dist/frontend/lowering/builtins/crypto.d.ts +3 -0
  167. package/dist/frontend/lowering/builtins/crypto.js +4 -1
  168. package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
  169. package/dist/frontend/lowering/builtins/ecdh.d.ts +10 -0
  170. package/dist/frontend/lowering/builtins/ecdh.js +208 -0
  171. package/dist/frontend/lowering/builtins/ecdh.js.map +1 -0
  172. package/dist/frontend/lowering/builtins/json.js +52 -0
  173. package/dist/frontend/lowering/builtins/json.js.map +1 -1
  174. package/dist/frontend/lowering/builtins/process.d.ts +9 -0
  175. package/dist/frontend/lowering/builtins/process.js +44 -0
  176. package/dist/frontend/lowering/builtins/process.js.map +1 -1
  177. package/dist/frontend/lowering/builtins/promisify-callback.d.ts +3 -0
  178. package/dist/frontend/lowering/builtins/promisify-callback.js +21 -3
  179. package/dist/frontend/lowering/builtins/promisify-callback.js.map +1 -1
  180. package/dist/frontend/lowering/builtins/reflection.js +26 -0
  181. package/dist/frontend/lowering/builtins/reflection.js.map +1 -1
  182. package/dist/frontend/lowering/builtins/timers.js +5 -1
  183. package/dist/frontend/lowering/builtins/timers.js.map +1 -1
  184. package/dist/frontend/lowering/builtins/typed-array-members.d.ts +7 -0
  185. package/dist/frontend/lowering/builtins/typed-array-members.js +160 -0
  186. package/dist/frontend/lowering/builtins/typed-array-members.js.map +1 -0
  187. package/dist/frontend/lowering/call-signatures.d.ts +4 -0
  188. package/dist/frontend/lowering/call-signatures.js +126 -9
  189. package/dist/frontend/lowering/call-signatures.js.map +1 -1
  190. package/dist/frontend/lowering/cjs-exports-object.js +34 -1
  191. package/dist/frontend/lowering/cjs-exports-object.js.map +1 -1
  192. package/dist/frontend/lowering/class-dynamic-dispatch.js +9 -1
  193. package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
  194. package/dist/frontend/lowering/class-protocols.d.ts +10 -0
  195. package/dist/frontend/lowering/class-protocols.js +53 -3
  196. package/dist/frontend/lowering/class-protocols.js.map +1 -1
  197. package/dist/frontend/lowering/class-prototypes.js +6 -1
  198. package/dist/frontend/lowering/class-prototypes.js.map +1 -1
  199. package/dist/frontend/lowering/class-to-primitive.d.ts +2 -2
  200. package/dist/frontend/lowering/class-to-primitive.js +6 -3
  201. package/dist/frontend/lowering/class-to-primitive.js.map +1 -1
  202. package/dist/frontend/lowering/coercions/fresh-spread.d.ts +13 -0
  203. package/dist/frontend/lowering/coercions/fresh-spread.js +95 -0
  204. package/dist/frontend/lowering/coercions/fresh-spread.js.map +1 -0
  205. package/dist/frontend/lowering/coercions/function-adapters.js +99 -70
  206. package/dist/frontend/lowering/coercions/function-adapters.js.map +1 -1
  207. package/dist/frontend/lowering/containers/array-callbacks.d.ts +8 -0
  208. package/dist/frontend/lowering/containers/array-callbacks.js +22 -19
  209. package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
  210. package/dist/frontend/lowering/containers/array-construction.js +7 -0
  211. package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
  212. package/dist/frontend/lowering/containers/array-methods.js +5 -0
  213. package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
  214. package/dist/frontend/lowering/containers/bytes.d.ts +9 -0
  215. package/dist/frontend/lowering/containers/bytes.js +493 -17
  216. package/dist/frontend/lowering/containers/bytes.js.map +1 -1
  217. package/dist/frontend/lowering/containers/collection-methods.js +72 -3
  218. package/dist/frontend/lowering/containers/collection-methods.js.map +1 -1
  219. package/dist/frontend/lowering/containers/string-and-regexp.js +49 -13
  220. package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
  221. package/dist/frontend/lowering/cycle-initialization.d.ts +26 -10
  222. package/dist/frontend/lowering/cycle-initialization.js +152 -35
  223. package/dist/frontend/lowering/cycle-initialization.js.map +1 -1
  224. package/dist/frontend/lowering/expressions/array-literals.js +33 -13
  225. package/dist/frontend/lowering/expressions/array-literals.js.map +1 -1
  226. package/dist/frontend/lowering/expressions/binary.js +79 -5
  227. package/dist/frontend/lowering/expressions/binary.js.map +1 -1
  228. package/dist/frontend/lowering/expressions/element-access.js +13 -6
  229. package/dist/frontend/lowering/expressions/element-access.js.map +1 -1
  230. package/dist/frontend/lowering/expressions/keyed-field-targets.d.ts +14 -2
  231. package/dist/frontend/lowering/expressions/keyed-field-targets.js +91 -10
  232. package/dist/frontend/lowering/expressions/keyed-field-targets.js.map +1 -1
  233. package/dist/frontend/lowering/expressions/narrowing.js +17 -2
  234. package/dist/frontend/lowering/expressions/narrowing.js.map +1 -1
  235. package/dist/frontend/lowering/expressions/object-literals.js +48 -1
  236. package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
  237. package/dist/frontend/lowering/expressions/optional-chains.d.ts +1 -1
  238. package/dist/frontend/lowering/expressions/optional-chains.js +12 -3
  239. package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
  240. package/dist/frontend/lowering/expressions/property-access.d.ts +5 -0
  241. package/dist/frontend/lowering/expressions/property-access.js +252 -9
  242. package/dist/frontend/lowering/expressions/property-access.js.map +1 -1
  243. package/dist/frontend/lowering/expressions/relational.js +49 -4
  244. package/dist/frontend/lowering/expressions/relational.js.map +1 -1
  245. package/dist/frontend/lowering/expressions/typeof.js +13 -0
  246. package/dist/frontend/lowering/expressions/typeof.js.map +1 -1
  247. package/dist/frontend/lowering/expressions/updates.js +1 -1
  248. package/dist/frontend/lowering/expressions/updates.js.map +1 -1
  249. package/dist/frontend/lowering/generator-delegation.d.ts +8 -0
  250. package/dist/frontend/lowering/generator-delegation.js +191 -1
  251. package/dist/frontend/lowering/generator-delegation.js.map +1 -1
  252. package/dist/frontend/lowering/generic-functions.d.ts +4 -0
  253. package/dist/frontend/lowering/generic-functions.js +213 -56
  254. package/dist/frontend/lowering/generic-functions.js.map +1 -1
  255. package/dist/frontend/lowering/handle-properties.d.ts +24 -0
  256. package/dist/frontend/lowering/handle-properties.js +281 -0
  257. package/dist/frontend/lowering/handle-properties.js.map +1 -0
  258. package/dist/frontend/lowering/iterable-spelling.d.ts +7 -0
  259. package/dist/frontend/lowering/iterable-spelling.js +38 -0
  260. package/dist/frontend/lowering/iterable-spelling.js.map +1 -0
  261. package/dist/frontend/lowering/lower-array-sort.d.ts +33 -15
  262. package/dist/frontend/lowering/lower-array-sort.js +117 -21
  263. package/dist/frontend/lowering/lower-array-sort.js.map +1 -1
  264. package/dist/frontend/lowering/lower-array-sort.test.js +93 -14
  265. package/dist/frontend/lowering/lower-array-sort.test.js.map +1 -1
  266. package/dist/frontend/lowering/lower-builtin-values.js +1 -0
  267. package/dist/frontend/lowering/lower-builtin-values.js.map +1 -1
  268. package/dist/frontend/lowering/lower-calls.js +166 -7
  269. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  270. package/dist/frontend/lowering/lower-classes.d.ts +4 -0
  271. package/dist/frontend/lowering/lower-classes.js +59 -7
  272. package/dist/frontend/lowering/lower-classes.js.map +1 -1
  273. package/dist/frontend/lowering/lower-dgram.js +62 -13
  274. package/dist/frontend/lowering/lower-dgram.js.map +1 -1
  275. package/dist/frontend/lowering/lower-exprs.js +32 -1
  276. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  277. package/dist/frontend/lowering/lower-functions.js +4 -0
  278. package/dist/frontend/lowering/lower-functions.js.map +1 -1
  279. package/dist/frontend/lowering/lower-generators.js +10 -4
  280. package/dist/frontend/lowering/lower-generators.js.map +1 -1
  281. package/dist/frontend/lowering/lower-inspect.js +569 -11
  282. package/dist/frontend/lowering/lower-inspect.js.map +1 -1
  283. package/dist/frontend/lowering/lower-modules.d.ts +11 -3
  284. package/dist/frontend/lowering/lower-modules.js +212 -67
  285. package/dist/frontend/lowering/lower-modules.js.map +1 -1
  286. package/dist/frontend/lowering/lower-namespaces.js +20 -0
  287. package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
  288. package/dist/frontend/lowering/lower-server.js +26 -1
  289. package/dist/frontend/lowering/lower-server.js.map +1 -1
  290. package/dist/frontend/lowering/lower-stdlib.js +28 -9
  291. package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
  292. package/dist/frontend/lowering/lower-stmts.d.ts +7 -10
  293. package/dist/frontend/lowering/lower-stmts.js +418 -51
  294. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  295. package/dist/frontend/lowering/lower-timers.js +17 -1
  296. package/dist/frontend/lowering/lower-timers.js.map +1 -1
  297. package/dist/frontend/lowering/lowerer.d.ts +29 -5
  298. package/dist/frontend/lowering/lowerer.js +172 -25
  299. package/dist/frontend/lowering/lowerer.js.map +1 -1
  300. package/dist/frontend/lowering/rebindable-functions.d.ts +8 -0
  301. package/dist/frontend/lowering/rebindable-functions.js +54 -0
  302. package/dist/frontend/lowering/rebindable-functions.js.map +1 -0
  303. package/dist/frontend/lowering/static-typeof.d.ts +26 -0
  304. package/dist/frontend/lowering/static-typeof.js +133 -0
  305. package/dist/frontend/lowering/static-typeof.js.map +1 -0
  306. package/dist/frontend/lowering/string-index-bounds.js +3 -2
  307. package/dist/frontend/lowering/string-index-bounds.js.map +1 -1
  308. package/dist/frontend/lowering/surfaces.js +30 -4
  309. package/dist/frontend/lowering/surfaces.js.map +1 -1
  310. package/dist/frontend/lowering/thenables.d.ts +16 -0
  311. package/dist/frontend/lowering/thenables.js +124 -0
  312. package/dist/frontend/lowering/thenables.js.map +1 -0
  313. package/dist/frontend/npm-static-builtin-aliases.d.ts +8 -0
  314. package/dist/frontend/npm-static-builtin-aliases.js +65 -0
  315. package/dist/frontend/npm-static-builtin-aliases.js.map +1 -0
  316. package/dist/frontend/npm-static-bundled-chunks.d.ts +8 -1
  317. package/dist/frontend/npm-static-bundled-chunks.js +173 -2
  318. package/dist/frontend/npm-static-bundled-chunks.js.map +1 -1
  319. package/dist/frontend/npm-static-bundled-chunks.test.js +112 -0
  320. package/dist/frontend/npm-static-bundled-chunks.test.js.map +1 -1
  321. package/dist/frontend/npm-static-bundled-esm.js +224 -4
  322. package/dist/frontend/npm-static-bundled-esm.js.map +1 -1
  323. package/dist/frontend/npm-static-bundled-esm.test.js +129 -0
  324. package/dist/frontend/npm-static-bundled-esm.test.js.map +1 -1
  325. package/dist/frontend/npm-static-enum-iife.d.ts +6 -0
  326. package/dist/frontend/npm-static-enum-iife.js +280 -0
  327. package/dist/frontend/npm-static-enum-iife.js.map +1 -0
  328. package/dist/frontend/npm-static-enum-iife.test.d.ts +1 -0
  329. package/dist/frontend/npm-static-enum-iife.test.js +116 -0
  330. package/dist/frontend/npm-static-enum-iife.test.js.map +1 -0
  331. package/dist/frontend/npm-static.d.ts +8 -0
  332. package/dist/frontend/npm-static.js +46 -1
  333. package/dist/frontend/npm-static.js.map +1 -1
  334. package/dist/frontend/npm.js +13 -0
  335. package/dist/frontend/npm.js.map +1 -1
  336. package/dist/frontend/package-shims.d.ts +47 -0
  337. package/dist/frontend/package-shims.js +300 -0
  338. package/dist/frontend/package-shims.js.map +1 -0
  339. package/dist/frontend/pipeline.js +67 -1
  340. package/dist/frontend/pipeline.js.map +1 -1
  341. package/dist/frontend/program.d.ts +8 -0
  342. package/dist/frontend/program.js +72 -9
  343. package/dist/frontend/program.js.map +1 -1
  344. package/dist/frontend/resolve.js +13 -0
  345. package/dist/frontend/resolve.js.map +1 -1
  346. package/dist/frontend/services.d.ts +6 -0
  347. package/dist/frontend/services.js +19 -0
  348. package/dist/frontend/services.js.map +1 -1
  349. package/dist/frontend/ts7/program-host.d.ts +6 -5
  350. package/dist/frontend/ts7/program-host.js +7 -0
  351. package/dist/frontend/ts7/program-host.js.map +1 -1
  352. package/dist/frontend/ts7/semantic-model.d.ts +3 -0
  353. package/dist/frontend/ts7/semantic-model.js +26 -0
  354. package/dist/frontend/ts7/semantic-model.js.map +1 -1
  355. package/dist/frontend/ts7/session.d.ts +19 -4
  356. package/dist/frontend/ts7/session.js.map +1 -1
  357. package/dist/frontend/type-mapper.js +201 -15
  358. package/dist/frontend/type-mapper.js.map +1 -1
  359. package/dist/index.d.ts +1 -0
  360. package/dist/index.js +58 -6
  361. package/dist/index.js.map +1 -1
  362. package/dist/ir/array-length-stability.d.ts +3 -2
  363. package/dist/ir/array-length-stability.js +15 -2
  364. package/dist/ir/array-length-stability.js.map +1 -1
  365. package/dist/ir/array-length-stability.test.js +22 -1
  366. package/dist/ir/array-length-stability.test.js.map +1 -1
  367. package/dist/ir/builtin-effects.js +13 -0
  368. package/dist/ir/builtin-effects.js.map +1 -1
  369. package/dist/ir/builtin-signatures.d.ts +1 -1
  370. package/dist/ir/builtin-signatures.js +46 -4
  371. package/dist/ir/builtin-signatures.js.map +1 -1
  372. package/dist/ir/integer-loop-facts.d.ts +5 -0
  373. package/dist/ir/integer-loop-facts.js +79 -14
  374. package/dist/ir/integer-loop-facts.js.map +1 -1
  375. package/dist/ir/integer-ranges.d.ts +10 -1
  376. package/dist/ir/integer-ranges.js +122 -25
  377. package/dist/ir/integer-ranges.js.map +1 -1
  378. package/dist/ir/integer-ranges.test.js +191 -1
  379. package/dist/ir/integer-ranges.test.js.map +1 -1
  380. package/dist/ir/ir.js +8 -0
  381. package/dist/ir/ir.js.map +1 -1
  382. package/dist/ir/js-ic.d.ts +52 -0
  383. package/dist/ir/js-ic.js +199 -0
  384. package/dist/ir/js-ic.js.map +1 -0
  385. package/dist/ir/js-ic.test.d.ts +1 -0
  386. package/dist/ir/js-ic.test.js +148 -0
  387. package/dist/ir/js-ic.test.js.map +1 -0
  388. package/dist/ir/jsval.js +38 -4
  389. package/dist/ir/jsval.js.map +1 -1
  390. package/dist/ir/runtime-features.d.ts +39 -4
  391. package/dist/ir/runtime-features.js +229 -99
  392. package/dist/ir/runtime-features.js.map +1 -1
  393. package/dist/ir/traverse.js +110 -68
  394. package/dist/ir/traverse.js.map +1 -1
  395. package/dist/ir/validate.js +21 -8
  396. package/dist/ir/validate.js.map +1 -1
  397. package/dist/ir/validate.test.js +15 -2
  398. package/dist/ir/validate.test.js.map +1 -1
  399. package/dist/library/ir-policy.js +1 -0
  400. package/dist/library/ir-policy.js.map +1 -1
  401. package/dist/native/cli.js +17 -0
  402. package/dist/native/cli.js.map +1 -1
  403. package/dist/native/compiler.js +33 -4
  404. package/dist/native/compiler.js.map +1 -1
  405. package/dist/native/executable-cache.js +3 -0
  406. package/dist/native/executable-cache.js.map +1 -1
  407. package/dist/native/prepare.js +3 -0
  408. package/dist/native/prepare.js.map +1 -1
  409. package/dist/native/sanitizer.test.js +7 -0
  410. package/dist/native/sanitizer.test.js.map +1 -1
  411. package/package.json +21 -20
  412. package/shims/fs-extra/core/api.ts +1192 -0
  413. package/shims/fs-extra/index.ts +9 -0
  414. package/shims/undici/core/agent.ts +163 -0
  415. package/shims/undici/core/api.ts +93 -0
  416. package/shims/undici/core/client.ts +1304 -0
  417. package/shims/undici/core/connector.ts +157 -0
  418. package/shims/undici/core/diagnostics-types.ts +68 -0
  419. package/shims/undici/core/diagnostics.ts +16 -0
  420. package/shims/undici/core/dispatcher.ts +574 -0
  421. package/shims/undici/core/errors-v5.ts +22 -0
  422. package/shims/undici/core/errors-v7.ts +25 -0
  423. package/shims/undici/core/errors.ts +255 -0
  424. package/shims/undici/core/fetch.ts +635 -0
  425. package/shims/undici/core/pool.ts +280 -0
  426. package/shims/undici/core/readable.ts +268 -0
  427. package/shims/undici/core/request.ts +313 -0
  428. package/shims/undici/core/timers.ts +80 -0
  429. package/shims/undici/core/types.ts +167 -0
  430. package/shims/undici/core/util.ts +67 -0
  431. package/shims/undici/v5.ts +119 -0
  432. package/shims/undici/v7.ts +119 -0
  433. package/surface-manifest.json +2 -4
@@ -0,0 +1,8 @@
1
+ import * as ts from "../ts7/adapter.js";
2
+ import type { Lowerer } from "./lowerer.js";
3
+ /** Top-level function declarations of `sf` that an assignment anywhere in
4
+ * the file writes, recorded for the queries below. */
5
+ export declare function collectRebindableFunctions(lowerer: Lowerer, sf: ts.SourceFile): Set<ts.FunctionDeclaration>;
6
+ export declare function isRebindableFunction(lowerer: Lowerer, decl: ts.Node | undefined): boolean;
7
+ /** Whether the symbol names a reassigned function declaration. */
8
+ export declare function isRebindableFunctionSymbol(lowerer: Lowerer, symbol: ts.Symbol | undefined): boolean;
@@ -0,0 +1,54 @@
1
+ /* JavaScript function declarations that their own module reassigns.
2
+ *
3
+ * Capability probes in published packages replace a function declaration
4
+ * with the implementation that works on the first call (yazl's
5
+ * `function bufferFrom(...) { bufferFrom = modern; ... }`). A top-level
6
+ * declaration normally lowers to a static function, which cannot change.
7
+ * A reassigned one instead becomes a mutable module global holding the
8
+ * function as a checked-dynamic value: the module initializer assigns it
9
+ * before its first statement (the declaration's hoisting), and reads,
10
+ * calls and writes of the name all go through the global. TypeScript
11
+ * rejects such writes, so only JavaScript sources take this path. */
12
+ import * as ts from "../ts7/adapter.js";
13
+ import { isJsSourceFile } from "../program.js";
14
+ /** Top-level function declarations of `sf` that an assignment anywhere in
15
+ * the file writes, recorded for the queries below. */
16
+ export function collectRebindableFunctions(lowerer, sf) {
17
+ const found = new Set();
18
+ if (!isJsSourceFile(sf))
19
+ return found;
20
+ const byName = new Map();
21
+ for (const stmt of sf.statements.nodes) {
22
+ if (ts.isFunctionDeclaration(stmt) &&
23
+ stmt.name &&
24
+ stmt.body &&
25
+ stmt.typeParameters === undefined)
26
+ byName.set(stmt.name.text, stmt);
27
+ }
28
+ if (byName.size === 0)
29
+ return found;
30
+ ts.walkPreorder(sf, (node) => {
31
+ if (!ts.isBinaryExpression(node) ||
32
+ node.operatorToken.kind !== ts.SyntaxKind.EqualsToken ||
33
+ !ts.isIdentifier(node.left))
34
+ return undefined;
35
+ const decl = byName.get(node.left.text);
36
+ if (!decl || found.has(decl))
37
+ return undefined;
38
+ const symbol = lowerer.checker.getSymbolAtLocation(node.left);
39
+ if (symbol && symbol.declarations.includes(decl))
40
+ found.add(decl);
41
+ return undefined;
42
+ });
43
+ for (const decl of found)
44
+ lowerer.rebindableFunctions.add(decl);
45
+ return found;
46
+ }
47
+ export function isRebindableFunction(lowerer, decl) {
48
+ return (decl !== undefined && ts.isFunctionDeclaration(decl) && lowerer.rebindableFunctions.has(decl));
49
+ }
50
+ /** Whether the symbol names a reassigned function declaration. */
51
+ export function isRebindableFunctionSymbol(lowerer, symbol) {
52
+ return symbol !== undefined && symbol.declarations.some((d) => isRebindableFunction(lowerer, d));
53
+ }
54
+ //# sourceMappingURL=rebindable-functions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rebindable-functions.js","sourceRoot":"","sources":["../../../src/frontend/lowering/rebindable-functions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;qEAUqE;AACrE,OAAO,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG/C;sDACsD;AACtD,MAAM,UAAU,0BAA0B,CACxC,OAAgB,EAChB,EAAiB;IAEjB,MAAM,KAAK,GAAG,IAAI,GAAG,EAA0B,CAAC;IAChD,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;QAAE,OAAO,KAAK,CAAC;IACtC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkC,CAAC;IACzD,KAAK,MAAM,IAAI,IAAI,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACvC,IACE,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC;YAC9B,IAAI,CAAC,IAAI;YACT,IAAI,CAAC,IAAI;YACT,IAAI,CAAC,cAAc,KAAK,SAAS;YAEjC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACrC,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACpC,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE;QAC3B,IACE,CAAC,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC;YAC5B,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,WAAW;YACrD,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;YAE3B,OAAO,SAAS,CAAC;QACnB,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO,SAAS,CAAC;QAC/C,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9D,IAAI,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClE,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC,CAAC;IACH,KAAK,MAAM,IAAI,IAAI,KAAK;QAAE,OAAO,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChE,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAgB,EAAE,IAAyB;IAC9E,OAAO,CACL,IAAI,KAAK,SAAS,IAAI,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,CAC9F,CAAC;AACJ,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,0BAA0B,CACxC,OAAgB,EAChB,MAA6B;IAE7B,OAAO,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,oBAAoB,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;AACnG,CAAC"}
@@ -0,0 +1,26 @@
1
+ import * as ts from "../ts7/adapter.js";
2
+ import type { Lowerer } from "./lowerer.js";
3
+ /** The answer `typeof <operand>` gives without evaluating anything, for
4
+ * the global-detection idioms (`typeof window < "u"`, `typeof global !==
5
+ * "undefined"`): a name nothing declares answers "undefined" (Node's
6
+ * answer for an undeclared global such as window or self, and typeof never
7
+ * throws for one), and the Node global object and process answer
8
+ * "object". Null for every other operand. */
9
+ export declare function staticTypeofAnswer(lowerer: Lowerer, operand: ts.Expression): string | null;
10
+ /** A comparison of a statically answered typeof against a string literal
11
+ * (`typeof window < "u"`, esbuild's minified undefined test, or
12
+ * `typeof self !== "undefined"`), folded: the operand read has no effects,
13
+ * so only the comparison's value remains. Null for other shapes. */
14
+ export declare function staticTypeofComparison(lowerer: Lowerer, e: ts.BinaryExpression): boolean | null;
15
+ /** The value of a condition built from statically answered typeof
16
+ * comparisons, `!`, `&&` and `||` (the global-detection chains), or null
17
+ * when any operand needs evaluation. */
18
+ export declare function staticCondition(lowerer: Lowerer, expr: ts.Expression): boolean | null;
19
+ /** The expression a value reduces to once statically decided conditions
20
+ * select their arms (`(typeof global < "u" ? global : window)` → `global`),
21
+ * through parentheses. */
22
+ export declare function staticallySelected(lowerer: Lowerer, expr: ts.Expression): ts.Expression;
23
+ /** True when `stmt` declares a binding that is visible outside it: a `var`
24
+ * or a function declaration, outside nested functions. Such an arm still
25
+ * lowers when its condition is decided, for the hoisted binding. */
26
+ export declare function declaresHoistedBinding(stmt: ts.Statement): boolean;
@@ -0,0 +1,133 @@
1
+ import * as ts from "../ts7/adapter.js";
2
+ /** The answer `typeof <operand>` gives without evaluating anything, for
3
+ * the global-detection idioms (`typeof window < "u"`, `typeof global !==
4
+ * "undefined"`): a name nothing declares answers "undefined" (Node's
5
+ * answer for an undeclared global such as window or self, and typeof never
6
+ * throws for one), and the Node global object and process answer
7
+ * "object". Null for every other operand. */
8
+ export function staticTypeofAnswer(lowerer, operand) {
9
+ let e = operand;
10
+ while (ts.isParenthesizedExpression(e))
11
+ e = e.expression;
12
+ if (!ts.isIdentifier(e))
13
+ return null;
14
+ if (lowerer.checker.getSymbolAtLocation(e) === undefined)
15
+ return "undefined";
16
+ for (const name of ["global", "globalThis", "process"])
17
+ if (lowerer.isStdlibGlobal(e, name))
18
+ return "object";
19
+ return null;
20
+ }
21
+ /** A comparison of a statically answered typeof against a string literal
22
+ * (`typeof window < "u"`, esbuild's minified undefined test, or
23
+ * `typeof self !== "undefined"`), folded: the operand read has no effects,
24
+ * so only the comparison's value remains. Null for other shapes. */
25
+ export function staticTypeofComparison(lowerer, e) {
26
+ const unwrap = (x) => {
27
+ while (ts.isParenthesizedExpression(x))
28
+ x = x.expression;
29
+ return x;
30
+ };
31
+ const left = unwrap(e.left);
32
+ const right = unwrap(e.right);
33
+ const literal = (x) => ts.isStringLiteral(x) || ts.isNoSubstitutionTemplateLiteral(x) ? x.text : null;
34
+ let answer = null;
35
+ let text = null;
36
+ let flipped = false;
37
+ if (ts.isTypeOfExpression(left) && literal(right) !== null) {
38
+ answer = staticTypeofAnswer(lowerer, left.expression);
39
+ text = literal(right);
40
+ }
41
+ else if (ts.isTypeOfExpression(right) && literal(left) !== null) {
42
+ answer = staticTypeofAnswer(lowerer, right.expression);
43
+ text = literal(left);
44
+ flipped = true;
45
+ }
46
+ if (answer === null || text === null)
47
+ return null;
48
+ const [a, b] = flipped ? [text, answer] : [answer, text];
49
+ switch (e.operatorToken.kind) {
50
+ case ts.SyntaxKind.EqualsEqualsEqualsToken:
51
+ case ts.SyntaxKind.EqualsEqualsToken:
52
+ return a === b;
53
+ case ts.SyntaxKind.ExclamationEqualsEqualsToken:
54
+ case ts.SyntaxKind.ExclamationEqualsToken:
55
+ return a !== b;
56
+ case ts.SyntaxKind.LessThanToken:
57
+ return a < b;
58
+ case ts.SyntaxKind.LessThanEqualsToken:
59
+ return a <= b;
60
+ case ts.SyntaxKind.GreaterThanToken:
61
+ return a > b;
62
+ case ts.SyntaxKind.GreaterThanEqualsToken:
63
+ return a >= b;
64
+ default:
65
+ return null;
66
+ }
67
+ }
68
+ /** The value of a condition built from statically answered typeof
69
+ * comparisons, `!`, `&&` and `||` (the global-detection chains), or null
70
+ * when any operand needs evaluation. */
71
+ export function staticCondition(lowerer, expr) {
72
+ let e = expr;
73
+ while (ts.isParenthesizedExpression(e))
74
+ e = e.expression;
75
+ if (ts.isPrefixUnaryExpression(e) && e.operator === ts.SyntaxKind.ExclamationToken) {
76
+ const inner = staticCondition(lowerer, e.operand);
77
+ return inner === null ? null : !inner;
78
+ }
79
+ if (!ts.isBinaryExpression(e))
80
+ return null;
81
+ const op = e.operatorToken.kind;
82
+ if (op === ts.SyntaxKind.AmpersandAmpersandToken || op === ts.SyntaxKind.BarBarToken) {
83
+ const isAnd = op === ts.SyntaxKind.AmpersandAmpersandToken;
84
+ const left = staticCondition(lowerer, e.left);
85
+ if (left === null)
86
+ return null;
87
+ if (left !== isAnd)
88
+ return left;
89
+ return staticCondition(lowerer, e.right);
90
+ }
91
+ return staticTypeofComparison(lowerer, e);
92
+ }
93
+ /** The expression a value reduces to once statically decided conditions
94
+ * select their arms (`(typeof global < "u" ? global : window)` → `global`),
95
+ * through parentheses. */
96
+ export function staticallySelected(lowerer, expr) {
97
+ let e = expr;
98
+ for (;;) {
99
+ while (ts.isParenthesizedExpression(e))
100
+ e = e.expression;
101
+ if (!ts.isConditionalExpression(e))
102
+ return e;
103
+ const taken = staticCondition(lowerer, e.condition);
104
+ if (taken === null)
105
+ return e;
106
+ e = taken ? e.whenTrue : e.whenFalse;
107
+ }
108
+ }
109
+ /** True when `stmt` declares a binding that is visible outside it: a `var`
110
+ * or a function declaration, outside nested functions. Such an arm still
111
+ * lowers when its condition is decided, for the hoisted binding. */
112
+ export function declaresHoistedBinding(stmt) {
113
+ let found = false;
114
+ const visit = (n) => {
115
+ if (found)
116
+ return;
117
+ if (ts.isFunctionDeclaration(n)) {
118
+ found = true;
119
+ return;
120
+ }
121
+ if (ts.isFunctionLike(n) || ts.isClassDeclaration(n) || ts.isClassExpression(n))
122
+ return;
123
+ if (ts.isVariableDeclarationList(n) &&
124
+ (n.flags & (ts.NodeFlags.Let | ts.NodeFlags.Const)) === 0) {
125
+ found = true;
126
+ return;
127
+ }
128
+ ts.forEachChild(n, visit);
129
+ };
130
+ visit(stmt);
131
+ return found;
132
+ }
133
+ //# sourceMappingURL=static-typeof.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"static-typeof.js","sourceRoot":"","sources":["../../../src/frontend/lowering/static-typeof.ts"],"names":[],"mappings":"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"}
@@ -190,8 +190,9 @@ export class StringIndexBounds {
190
190
  /** Every write of a block-scoped local or parameter, or null for any
191
191
  * other binding (module imports, var, class members, ...). */
192
192
  binding(symbol) {
193
- if (this.bindings.has(symbol))
194
- return this.bindings.get(symbol);
193
+ const cached = this.bindings.get(symbol);
194
+ if (cached !== undefined)
195
+ return cached;
195
196
  const result = this.scanBinding(symbol);
196
197
  this.bindings.set(symbol, result);
197
198
  return result;
@@ -1 +1 @@
1
- {"version":3,"file":"string-index-bounds.js","sourceRoot":"","sources":["../../../src/frontend/lowering/string-index-bounds.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"string-index-bounds.js","sourceRoot":"","sources":["../../../src/frontend/lowering/string-index-bounds.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,10 @@
1
1
  import * as ts from "../ts7/adapter.js";
2
+ import { staticCondition, staticallySelected } from "./static-typeof.js";
3
+ function unparenthesized(e) {
4
+ while (ts.isParenthesizedExpression(e))
5
+ e = e.expression;
6
+ return e;
7
+ }
2
8
  import { UNSUPPORTED } from "../../diagnostics/diagnostic.js";
3
9
  import { BOOL, BYTES_U8, CHILD_T, CRYPTOHASH_T, CRYPTOHMAC_T, DIR_T, DYN, F64, FILEHANDLE_T, SPAWNRES_T, STATS_T, STRING, URL_T, VOID, arrayOf, } from "../../ir/ir.js";
4
10
  import { isJsSourceFile, isNodeTypesPath, requireSpecOf } from "../program.js";
@@ -1421,6 +1427,9 @@ export const BUILTIN_MODULE_FNS = {
1421
1427
  // Decipheriv handle (lowerCryptoModuleCall).
1422
1428
  createCipheriv: { fn: "crypto.cipherNew", params: [BOOL, DYN, DYN, DYN, DYN], result: DYN },
1423
1429
  createDecipheriv: { fn: "crypto.cipherNew", params: [BOOL, DYN, DYN, DYN, DYN], result: DYN },
1430
+ // A checked-dynamic curve name; the result is a native ECDH handle
1431
+ // (lowerCreateEcdh).
1432
+ createECDH: { fn: "crypto.ecdhNew", params: [DYN], result: DYN },
1424
1433
  },
1425
1434
  zlib: {
1426
1435
  // The default-options convenience family is special-cased in
@@ -1914,6 +1923,9 @@ export const BUILTIN_MODULE_FN_ALIASES = {
1914
1923
  readdirSync: ["fs.readdirTypesSync"],
1915
1924
  // The { throwIfNoEntry } probe form.
1916
1925
  statSync: ["fs.statProbeSync"],
1926
+ // realpathSync and realpathSync.native read as function values.
1927
+ realpathSync: ["fs.realpathValue"],
1928
+ "realpathSync.native": ["fs.realpathValue"],
1917
1929
  lstatSync: ["fs.lstatProbeSync"],
1918
1930
  globSync: ["fs.globTypesSync"],
1919
1931
  // The JS-source validation-ladder variant (lowerFsLadderCall): the
@@ -2838,7 +2850,6 @@ export const BUILTIN_MODULE_FENCE_HINTS = {
2838
2850
  "createDiffieHellman",
2839
2851
  "createDiffieHellmanGroup",
2840
2852
  "getDiffieHellman",
2841
- "createECDH",
2842
2853
  "diffieHellman",
2843
2854
  "publicEncrypt",
2844
2855
  "publicDecrypt",
@@ -2937,8 +2948,8 @@ export function stdlibMemberFence(lowerer, access) {
2937
2948
  }
2938
2949
  else if (container === "Math" && (member === "min" || member === "max")) {
2939
2950
  hint =
2940
- `Math.${member} lowers with any number of plain arguments or ONE number[] spread — ` +
2941
- `mixed spread/positional lists don't: spread a single array (Math.${member}(...xs))`;
2951
+ `Math.${member} lowers with number arguments and spreads of number[] values ` +
2952
+ `(Math.${member}(...xs, y))`;
2942
2953
  }
2943
2954
  else if (recvIr?.kind === "array" &&
2944
2955
  member === "index" &&
@@ -3117,6 +3128,15 @@ export function isStdlibSymbol(lowerer, symbol) {
3117
3128
  export function stdlibGlobalNameOf(lowerer, expr) {
3118
3129
  if (ts.isParenthesizedExpression(expr))
3119
3130
  return stdlibGlobalNameOf(lowerer, expr.expression);
3131
+ // The global-object detection chain (`typeof global < "u" ? global :
3132
+ // typeof window < "u" ? window : {}`): a condition with static typeof
3133
+ // answers selects one arm, and only that arm ever evaluates.
3134
+ if (ts.isConditionalExpression(expr)) {
3135
+ const taken = staticCondition(lowerer, expr.condition);
3136
+ if (taken === null)
3137
+ return null;
3138
+ return stdlibGlobalNameOf(lowerer, taken ? expr.whenTrue : expr.whenFalse);
3139
+ }
3120
3140
  if (ts.isIdentifier(expr)) {
3121
3141
  const symbol = lowerer.checker.getSymbolAtLocation(expr);
3122
3142
  // `globalThis` itself: a reserved intrinsic — tsc rejects user
@@ -3168,7 +3188,13 @@ export function stdlibGlobalNameOf(lowerer, expr) {
3168
3188
  if (ts.isPropertyAccessExpression(expr) && !expr.questionDotToken) {
3169
3189
  if (stdlibGlobalNameOf(lowerer, expr.expression) !== "globalThis")
3170
3190
  return null;
3171
- const symbol = lowerer.checker.getSymbolAtLocation(expr.name);
3191
+ // Through a detection chain the checker types the receiver as the
3192
+ // union of every arm; the selected arm (the global object) owns the
3193
+ // member.
3194
+ const selected = staticallySelected(lowerer, expr.expression);
3195
+ const symbol = selected === expr.expression || ts.isIdentifier(unparenthesized(expr.expression))
3196
+ ? lowerer.checker.getSymbolAtLocation(expr.name)
3197
+ : lowerer.checker.getPropertyOfType(lowerer.typeOf(selected), expr.name.text);
3172
3198
  if (!symbol || !lowerer.isStdlibSymbol(symbol))
3173
3199
  return null;
3174
3200
  return ts.symbolName(symbol) === "global" ? "globalThis" : ts.symbolName(symbol);