@scriptc/compiler 0.3.2 → 0.3.4

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 (454) hide show
  1. package/ambient/scriptc-node-fallback.d.ts +1202 -64
  2. package/dist/backend/cycle-analysis.js +6 -1
  3. package/dist/backend/cycle-analysis.js.map +1 -1
  4. package/dist/backend/cycle-mutability.d.ts +5 -0
  5. package/dist/backend/cycle-mutability.js +62 -3
  6. package/dist/backend/cycle-mutability.js.map +1 -1
  7. package/dist/backend/executable-features.js +1 -0
  8. package/dist/backend/executable-features.js.map +1 -1
  9. package/dist/backend/library-pack.js +1 -0
  10. package/dist/backend/library-pack.js.map +1 -1
  11. package/dist/backend/llvm/alloc.js +24 -10
  12. package/dist/backend/llvm/alloc.js.map +1 -1
  13. package/dist/backend/llvm/alloc.test.js +47 -1
  14. package/dist/backend/llvm/alloc.test.js.map +1 -1
  15. package/dist/backend/llvm/array-search.d.ts +8 -0
  16. package/dist/backend/llvm/array-search.js +52 -0
  17. package/dist/backend/llvm/array-search.js.map +1 -0
  18. package/dist/backend/llvm/array-search.test.d.ts +1 -0
  19. package/dist/backend/llvm/array-search.test.js +72 -0
  20. package/dist/backend/llvm/array-search.test.js.map +1 -0
  21. package/dist/backend/llvm/call-lifetimes.d.ts +12 -1
  22. package/dist/backend/llvm/call-lifetimes.js +41 -11
  23. package/dist/backend/llvm/call-lifetimes.js.map +1 -1
  24. package/dist/backend/llvm/call-lifetimes.test.js +85 -1
  25. package/dist/backend/llvm/call-lifetimes.test.js.map +1 -1
  26. package/dist/backend/llvm/classes.js +87 -36
  27. package/dist/backend/llvm/classes.js.map +1 -1
  28. package/dist/backend/llvm/common.d.ts +6 -1
  29. package/dist/backend/llvm/common.js +8 -1
  30. package/dist/backend/llvm/common.js.map +1 -1
  31. package/dist/backend/llvm/dense-array-access.d.ts +5 -0
  32. package/dist/backend/llvm/dense-array-access.js +3 -3
  33. package/dist/backend/llvm/dense-array-access.js.map +1 -1
  34. package/dist/backend/llvm/dyn.d.ts +44 -1
  35. package/dist/backend/llvm/dyn.js +251 -36
  36. package/dist/backend/llvm/dyn.js.map +1 -1
  37. package/dist/backend/llvm/emitter.d.ts +77 -14
  38. package/dist/backend/llvm/emitter.js +461 -108
  39. package/dist/backend/llvm/emitter.js.map +1 -1
  40. package/dist/backend/llvm/emitter.test.js +26 -3
  41. package/dist/backend/llvm/emitter.test.js.map +1 -1
  42. package/dist/backend/llvm/expr-async.js +52 -1
  43. package/dist/backend/llvm/expr-async.js.map +1 -1
  44. package/dist/backend/llvm/expr-bytes.d.ts +9 -0
  45. package/dist/backend/llvm/expr-bytes.js +169 -63
  46. package/dist/backend/llvm/expr-bytes.js.map +1 -1
  47. package/dist/backend/llvm/expr-callbacks.js +16 -2
  48. package/dist/backend/llvm/expr-callbacks.js.map +1 -1
  49. package/dist/backend/llvm/expr-calls.d.ts +3 -1
  50. package/dist/backend/llvm/expr-calls.js +57 -2
  51. package/dist/backend/llvm/expr-calls.js.map +1 -1
  52. package/dist/backend/llvm/expr-containers.js +57 -19
  53. package/dist/backend/llvm/expr-containers.js.map +1 -1
  54. package/dist/backend/llvm/expr-dynamic.js +19 -8
  55. package/dist/backend/llvm/expr-dynamic.js.map +1 -1
  56. package/dist/backend/llvm/expr-primitives.js +28 -30
  57. package/dist/backend/llvm/expr-primitives.js.map +1 -1
  58. package/dist/backend/llvm/expr-records.js +8 -4
  59. package/dist/backend/llvm/expr-records.js.map +1 -1
  60. package/dist/backend/llvm/expr-stream-bridges.js +35 -32
  61. package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
  62. package/dist/backend/llvm/expr-stream-callbacks.d.ts +13 -2
  63. package/dist/backend/llvm/expr-stream-callbacks.js +80 -5
  64. package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
  65. package/dist/backend/llvm/inline-unions.d.ts +48 -0
  66. package/dist/backend/llvm/inline-unions.js +134 -0
  67. package/dist/backend/llvm/inline-unions.js.map +1 -0
  68. package/dist/backend/llvm/inline-unions.test.d.ts +1 -0
  69. package/dist/backend/llvm/inline-unions.test.js +124 -0
  70. package/dist/backend/llvm/inline-unions.test.js.map +1 -0
  71. package/dist/backend/llvm/integer-remainder.d.ts +28 -5
  72. package/dist/backend/llvm/integer-remainder.js +80 -9
  73. package/dist/backend/llvm/integer-remainder.js.map +1 -1
  74. package/dist/backend/llvm/intern-tables.test.d.ts +1 -0
  75. package/dist/backend/llvm/intern-tables.test.js +77 -0
  76. package/dist/backend/llvm/intern-tables.test.js.map +1 -0
  77. package/dist/backend/llvm/lib-datagram.js +10 -0
  78. package/dist/backend/llvm/lib-datagram.js.map +1 -1
  79. package/dist/backend/llvm/lib-dispatch.js +255 -29
  80. package/dist/backend/llvm/lib-dispatch.js.map +1 -1
  81. package/dist/backend/llvm/lib-filesystem.js +176 -7
  82. package/dist/backend/llvm/lib-filesystem.js.map +1 -1
  83. package/dist/backend/llvm/lib-network.js +25 -6
  84. package/dist/backend/llvm/lib-network.js.map +1 -1
  85. package/dist/backend/llvm/lib-process.js +2 -2
  86. package/dist/backend/llvm/lib-process.js.map +1 -1
  87. package/dist/backend/llvm/lib-shared.d.ts +5 -0
  88. package/dist/backend/llvm/lib-shared.js +212 -1
  89. package/dist/backend/llvm/lib-shared.js.map +1 -1
  90. package/dist/backend/llvm/lib-stream.js +184 -0
  91. package/dist/backend/llvm/lib-stream.js.map +1 -1
  92. package/dist/backend/llvm/lib-test.js +9 -0
  93. package/dist/backend/llvm/lib-test.js.map +1 -1
  94. package/dist/backend/llvm/local-array-reads.js +7 -3
  95. package/dist/backend/llvm/local-array-reads.js.map +1 -1
  96. package/dist/backend/llvm/local-array-reads.test.js +6 -3
  97. package/dist/backend/llvm/local-array-reads.test.js.map +1 -1
  98. package/dist/backend/llvm/local-union-storage.d.ts +2 -0
  99. package/dist/backend/llvm/local-union-storage.js +5 -0
  100. package/dist/backend/llvm/local-union-storage.js.map +1 -1
  101. package/dist/backend/llvm/local-union-storage.test.js +1 -0
  102. package/dist/backend/llvm/local-union-storage.test.js.map +1 -1
  103. package/dist/backend/llvm/loop-array-borrows.d.ts +8 -2
  104. package/dist/backend/llvm/loop-array-borrows.js +93 -13
  105. package/dist/backend/llvm/loop-array-borrows.js.map +1 -1
  106. package/dist/backend/llvm/map-number-lookup.d.ts +24 -0
  107. package/dist/backend/llvm/map-number-lookup.js +88 -0
  108. package/dist/backend/llvm/map-number-lookup.js.map +1 -1
  109. package/dist/backend/llvm/map-number-lookup.test.d.ts +1 -0
  110. package/dist/backend/llvm/map-number-lookup.test.js +158 -0
  111. package/dist/backend/llvm/map-number-lookup.test.js.map +1 -0
  112. package/dist/backend/llvm/map-read-lifetimes.d.ts +9 -0
  113. package/dist/backend/llvm/map-read-lifetimes.js +90 -1
  114. package/dist/backend/llvm/map-read-lifetimes.js.map +1 -1
  115. package/dist/backend/llvm/map-read-lifetimes.test.js +129 -1
  116. package/dist/backend/llvm/map-read-lifetimes.test.js.map +1 -1
  117. package/dist/backend/llvm/publish.d.ts +9 -0
  118. package/dist/backend/llvm/publish.js +25 -4
  119. package/dist/backend/llvm/publish.js.map +1 -1
  120. package/dist/backend/llvm/record-results.d.ts +8 -5
  121. package/dist/backend/llvm/record-results.js +20 -12
  122. package/dist/backend/llvm/record-results.js.map +1 -1
  123. package/dist/backend/llvm/reference-effects.js +13 -0
  124. package/dist/backend/llvm/reference-effects.js.map +1 -1
  125. package/dist/backend/llvm/reference-writes.js +19 -2
  126. package/dist/backend/llvm/reference-writes.js.map +1 -1
  127. package/dist/backend/llvm/regions.d.ts +5 -1
  128. package/dist/backend/llvm/regions.js +24 -10
  129. package/dist/backend/llvm/regions.js.map +1 -1
  130. package/dist/backend/llvm/serialized-ir-emission.test.js +2 -0
  131. package/dist/backend/llvm/serialized-ir-emission.test.js.map +1 -1
  132. package/dist/backend/llvm/shapes.d.ts +56 -10
  133. package/dist/backend/llvm/shapes.js +178 -39
  134. package/dist/backend/llvm/shapes.js.map +1 -1
  135. package/dist/backend/llvm/shapes.test.js +61 -3
  136. package/dist/backend/llvm/shapes.test.js.map +1 -1
  137. package/dist/backend/llvm/stack-objects.js +16 -4
  138. package/dist/backend/llvm/stack-objects.js.map +1 -1
  139. package/dist/backend/llvm/stack-objects.test.js +3 -0
  140. package/dist/backend/llvm/stack-objects.test.js.map +1 -1
  141. package/dist/backend/llvm/string-reads.js +2 -2
  142. package/dist/backend/llvm/string-reads.js.map +1 -1
  143. package/dist/backend/llvm/string-slices.js +2 -2
  144. package/dist/backend/llvm/string-slices.js.map +1 -1
  145. package/dist/backend/llvm/walkers.d.ts +11 -0
  146. package/dist/backend/llvm/walkers.js +106 -10
  147. package/dist/backend/llvm/walkers.js.map +1 -1
  148. package/dist/backend/may-throw.js +13 -4
  149. package/dist/backend/may-throw.js.map +1 -1
  150. package/dist/backend/native/contracts.d.ts +5 -2
  151. package/dist/backend/native/executable.js +27 -8
  152. package/dist/backend/native/executable.js.map +1 -1
  153. package/dist/backend/native/runtime-inputs.d.ts +1 -1
  154. package/dist/backend/native/runtime-inputs.js +2 -0
  155. package/dist/backend/native/runtime-inputs.js.map +1 -1
  156. package/dist/backend/native-codegen-core.d.ts +4 -4
  157. package/dist/backend/native-codegen-core.js +4 -6
  158. package/dist/backend/native-codegen-core.js.map +1 -1
  159. package/dist/backend/native-codegen.test.js +7 -8
  160. package/dist/backend/native-codegen.test.js.map +1 -1
  161. package/dist/backend/native-link-info-core.d.ts +3 -0
  162. package/dist/backend/native-link-info-core.js.map +1 -1
  163. package/dist/backend/native-toolchain.test.js +1 -1
  164. package/dist/backend/native-toolchain.test.js.map +1 -1
  165. package/dist/backend/publication.js +3 -1
  166. package/dist/backend/publication.js.map +1 -1
  167. package/dist/backend/runtime-abi.d.ts +2 -2
  168. package/dist/backend/runtime-abi.js +2 -2
  169. package/dist/backend/runtime-pack-targets.test.js +2 -1
  170. package/dist/backend/runtime-pack-targets.test.js.map +1 -1
  171. package/dist/backend/runtime-pack.test.js +2 -1
  172. package/dist/backend/runtime-pack.test.js.map +1 -1
  173. package/dist/backend/target-diagnostics.js +11 -1
  174. package/dist/backend/target-diagnostics.js.map +1 -1
  175. package/dist/backend/target-diagnostics.test.js +4 -1
  176. package/dist/backend/target-diagnostics.test.js.map +1 -1
  177. package/dist/backend/warm-cache.js +1 -0
  178. package/dist/backend/warm-cache.js.map +1 -1
  179. package/dist/compat/fetch-profile.js +4 -4
  180. package/dist/compat/fetch-profile.js.map +1 -1
  181. package/dist/contracts/check.js +2 -0
  182. package/dist/contracts/check.js.map +1 -1
  183. package/dist/coverage/report.js +1 -1
  184. package/dist/coverage/report.js.map +1 -1
  185. package/dist/diagnostics/diagnostic.d.ts +6 -5
  186. package/dist/diagnostics/diagnostic.js +7 -6
  187. package/dist/diagnostics/diagnostic.js.map +1 -1
  188. package/dist/executable/executable-cache.d.ts +1 -0
  189. package/dist/executable/executable-cache.js +1 -0
  190. package/dist/executable/executable-cache.js.map +1 -1
  191. package/dist/executable/executable-cache.test.js +1 -0
  192. package/dist/executable/executable-cache.test.js.map +1 -1
  193. package/dist/frontend/builtin-modules.d.ts +1 -1
  194. package/dist/frontend/builtin-modules.js +1 -0
  195. package/dist/frontend/builtin-modules.js.map +1 -1
  196. package/dist/frontend/comptime-node.js +2 -2
  197. package/dist/frontend/comptime-node.js.map +1 -1
  198. package/dist/frontend/experimental-import.d.ts +5 -1
  199. package/dist/frontend/experimental-import.js +28 -3
  200. package/dist/frontend/experimental-import.js.map +1 -1
  201. package/dist/frontend/lowering/assert-instances.d.ts +38 -0
  202. package/dist/frontend/lowering/assert-instances.js +269 -0
  203. package/dist/frontend/lowering/assert-instances.js.map +1 -0
  204. package/dist/frontend/lowering/binding-analysis.d.ts +1 -1
  205. package/dist/frontend/lowering/binding-analysis.js +1 -1
  206. package/dist/frontend/lowering/builtins/arguments.d.ts +4 -0
  207. package/dist/frontend/lowering/builtins/arguments.js +8 -4
  208. package/dist/frontend/lowering/builtins/arguments.js.map +1 -1
  209. package/dist/frontend/lowering/builtins/blob.d.ts +20 -0
  210. package/dist/frontend/lowering/builtins/blob.js +167 -0
  211. package/dist/frontend/lowering/builtins/blob.js.map +1 -0
  212. package/dist/frontend/lowering/builtins/child-process-async.d.ts +2 -2
  213. package/dist/frontend/lowering/builtins/child-process-async.js +2 -2
  214. package/dist/frontend/lowering/builtins/child-process-methods.js +1 -1
  215. package/dist/frontend/lowering/builtins/child-process-methods.js.map +1 -1
  216. package/dist/frontend/lowering/builtins/child-process-sync.js +1 -1
  217. package/dist/frontend/lowering/builtins/child-process-sync.js.map +1 -1
  218. package/dist/frontend/lowering/builtins/compression.d.ts +18 -0
  219. package/dist/frontend/lowering/builtins/compression.js +178 -4
  220. package/dist/frontend/lowering/builtins/compression.js.map +1 -1
  221. package/dist/frontend/lowering/builtins/constants.js +7 -2
  222. package/dist/frontend/lowering/builtins/constants.js.map +1 -1
  223. package/dist/frontend/lowering/builtins/crypto.d.ts +6 -0
  224. package/dist/frontend/lowering/builtins/crypto.js +526 -121
  225. package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
  226. package/dist/frontend/lowering/builtins/errors.js +23 -0
  227. package/dist/frontend/lowering/builtins/errors.js.map +1 -1
  228. package/dist/frontend/lowering/builtins/filesystem-calls.d.ts +10 -0
  229. package/dist/frontend/lowering/builtins/filesystem-calls.js +89 -1
  230. package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
  231. package/dist/frontend/lowering/builtins/filesystem.d.ts +16 -7
  232. package/dist/frontend/lowering/builtins/filesystem.js +97 -15
  233. package/dist/frontend/lowering/builtins/filesystem.js.map +1 -1
  234. package/dist/frontend/lowering/builtins/fs-glob.d.ts +23 -0
  235. package/dist/frontend/lowering/builtins/fs-glob.js +224 -0
  236. package/dist/frontend/lowering/builtins/fs-glob.js.map +1 -0
  237. package/dist/frontend/lowering/builtins/key-object.d.ts +13 -0
  238. package/dist/frontend/lowering/builtins/key-object.js +56 -0
  239. package/dist/frontend/lowering/builtins/key-object.js.map +1 -0
  240. package/dist/frontend/lowering/builtins/module-calls.js +44 -11
  241. package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
  242. package/dist/frontend/lowering/builtins/performance.d.ts +25 -3
  243. package/dist/frontend/lowering/builtins/performance.js +340 -5
  244. package/dist/frontend/lowering/builtins/performance.js.map +1 -1
  245. package/dist/frontend/lowering/builtins/process.d.ts +2 -2
  246. package/dist/frontend/lowering/builtins/process.js +107 -14
  247. package/dist/frontend/lowering/builtins/process.js.map +1 -1
  248. package/dist/frontend/lowering/builtins/properties.d.ts +0 -7
  249. package/dist/frontend/lowering/builtins/properties.js +39 -11
  250. package/dist/frontend/lowering/builtins/properties.js.map +1 -1
  251. package/dist/frontend/lowering/builtins/readline.d.ts +23 -8
  252. package/dist/frontend/lowering/builtins/readline.js +266 -90
  253. package/dist/frontend/lowering/builtins/readline.js.map +1 -1
  254. package/dist/frontend/lowering/builtins/timers.d.ts +3 -0
  255. package/dist/frontend/lowering/builtins/timers.js +109 -23
  256. package/dist/frontend/lowering/builtins/timers.js.map +1 -1
  257. package/dist/frontend/lowering/builtins/url.d.ts +8 -0
  258. package/dist/frontend/lowering/builtins/url.js +36 -0
  259. package/dist/frontend/lowering/builtins/url.js.map +1 -1
  260. package/dist/frontend/lowering/call-arguments.js +1 -1
  261. package/dist/frontend/lowering/call-arguments.js.map +1 -1
  262. package/dist/frontend/lowering/call-signatures.js +26 -2
  263. package/dist/frontend/lowering/call-signatures.js.map +1 -1
  264. package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +2 -0
  265. package/dist/frontend/lowering/class-dynamic-dispatch.js +171 -13
  266. package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
  267. package/dist/frontend/lowering/class-dynamic-dispatch.test.js +1 -0
  268. package/dist/frontend/lowering/class-dynamic-dispatch.test.js.map +1 -1
  269. package/dist/frontend/lowering/class-protocol-dispatch.d.ts +45 -0
  270. package/dist/frontend/lowering/class-protocol-dispatch.js +516 -0
  271. package/dist/frontend/lowering/class-protocol-dispatch.js.map +1 -0
  272. package/dist/frontend/lowering/coercions/structural-plans.js +2 -1
  273. package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -1
  274. package/dist/frontend/lowering/coercions/structural.js +3 -3
  275. package/dist/frontend/lowering/coercions/structural.js.map +1 -1
  276. package/dist/frontend/lowering/collation-repertoire.js +6 -5
  277. package/dist/frontend/lowering/collation-repertoire.js.map +1 -1
  278. package/dist/frontend/lowering/containers/array-callbacks.js +4 -7
  279. package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
  280. package/dist/frontend/lowering/containers/array-methods.d.ts +0 -7
  281. package/dist/frontend/lowering/containers/array-methods.js +43 -2
  282. package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
  283. package/dist/frontend/lowering/containers/bytes.js +38 -26
  284. package/dist/frontend/lowering/containers/bytes.js.map +1 -1
  285. package/dist/frontend/lowering/containers/for-of.d.ts +1 -1
  286. package/dist/frontend/lowering/containers/for-of.js +5 -1
  287. package/dist/frontend/lowering/containers/for-of.js.map +1 -1
  288. package/dist/frontend/lowering/containers/indexed-objects.js +1 -1
  289. package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
  290. package/dist/frontend/lowering/crypto-tables.d.ts +3 -3
  291. package/dist/frontend/lowering/crypto-tables.js +77 -12
  292. package/dist/frontend/lowering/crypto-tables.js.map +1 -1
  293. package/dist/frontend/lowering/expressions/nullish-assignment.js +10 -0
  294. package/dist/frontend/lowering/expressions/nullish-assignment.js.map +1 -1
  295. package/dist/frontend/lowering/expressions/object-literals.js +16 -12
  296. package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
  297. package/dist/frontend/lowering/generic-functions.d.ts +2 -2
  298. package/dist/frontend/lowering/generic-functions.js +2 -2
  299. package/dist/frontend/lowering/generic-functions.js.map +1 -1
  300. package/dist/frontend/lowering/http2-constants.js +1 -1
  301. package/dist/frontend/lowering/intern-tables.d.ts +13 -0
  302. package/dist/frontend/lowering/intern-tables.js +536 -0
  303. package/dist/frontend/lowering/intern-tables.js.map +1 -0
  304. package/dist/frontend/lowering/lower-array-sort.d.ts +12 -1
  305. package/dist/frontend/lowering/lower-array-sort.js +561 -191
  306. package/dist/frontend/lowering/lower-array-sort.js.map +1 -1
  307. package/dist/frontend/lowering/lower-array-sort.test.js +4 -2
  308. package/dist/frontend/lowering/lower-array-sort.test.js.map +1 -1
  309. package/dist/frontend/lowering/lower-assert.js +702 -63
  310. package/dist/frontend/lowering/lower-assert.js.map +1 -1
  311. package/dist/frontend/lowering/lower-async-iteration.d.ts +6 -3
  312. package/dist/frontend/lowering/lower-async-iteration.js +259 -4
  313. package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
  314. package/dist/frontend/lowering/lower-calls.js +118 -12
  315. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  316. package/dist/frontend/lowering/lower-classes.d.ts +11 -2
  317. package/dist/frontend/lowering/lower-classes.js +76 -9
  318. package/dist/frontend/lowering/lower-classes.js.map +1 -1
  319. package/dist/frontend/lowering/lower-comptime.d.ts +1 -1
  320. package/dist/frontend/lowering/lower-comptime.js +4 -4
  321. package/dist/frontend/lowering/lower-comptime.js.map +1 -1
  322. package/dist/frontend/lowering/lower-dgram.js +77 -52
  323. package/dist/frontend/lowering/lower-dgram.js.map +1 -1
  324. package/dist/frontend/lowering/lower-event-target.d.ts +63 -0
  325. package/dist/frontend/lowering/lower-event-target.js +362 -0
  326. package/dist/frontend/lowering/lower-event-target.js.map +1 -0
  327. package/dist/frontend/lowering/lower-expando.js +2 -2
  328. package/dist/frontend/lowering/lower-exprs.js +124 -22
  329. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  330. package/dist/frontend/lowering/lower-inspect.d.ts +6 -0
  331. package/dist/frontend/lowering/lower-inspect.js +240 -49
  332. package/dist/frontend/lowering/lower-inspect.js.map +1 -1
  333. package/dist/frontend/lowering/lower-mixins.js +1 -1
  334. package/dist/frontend/lowering/lower-mock.d.ts +11 -0
  335. package/dist/frontend/lowering/lower-mock.js +504 -0
  336. package/dist/frontend/lowering/lower-mock.js.map +1 -0
  337. package/dist/frontend/lowering/lower-modules.d.ts +1 -1
  338. package/dist/frontend/lowering/lower-modules.js +14 -3
  339. package/dist/frontend/lowering/lower-modules.js.map +1 -1
  340. package/dist/frontend/lowering/lower-namespaces.d.ts +2 -2
  341. package/dist/frontend/lowering/lower-namespaces.js +2 -2
  342. package/dist/frontend/lowering/lower-server.d.ts +3 -0
  343. package/dist/frontend/lowering/lower-server.js +419 -44
  344. package/dist/frontend/lowering/lower-server.js.map +1 -1
  345. package/dist/frontend/lowering/lower-stdlib.d.ts +7 -1
  346. package/dist/frontend/lowering/lower-stdlib.js +10 -3
  347. package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
  348. package/dist/frontend/lowering/lower-stmts.d.ts +2 -2
  349. package/dist/frontend/lowering/lower-stmts.js +69 -14
  350. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  351. package/dist/frontend/lowering/lower-stream.d.ts +10 -6
  352. package/dist/frontend/lowering/lower-stream.js +1020 -49
  353. package/dist/frontend/lowering/lower-stream.js.map +1 -1
  354. package/dist/frontend/lowering/lower-test.js +86 -8
  355. package/dist/frontend/lowering/lower-test.js.map +1 -1
  356. package/dist/frontend/lowering/lower-timers.js +1 -1
  357. package/dist/frontend/lowering/lowerer.d.ts +45 -5
  358. package/dist/frontend/lowering/lowerer.js +317 -48
  359. package/dist/frontend/lowering/lowerer.js.map +1 -1
  360. package/dist/frontend/lowering/native-ffi.js +2 -2
  361. package/dist/frontend/lowering/native-ffi.js.map +1 -1
  362. package/dist/frontend/lowering/pairs-snapshot.d.ts +6 -0
  363. package/dist/frontend/lowering/pairs-snapshot.js +49 -0
  364. package/dist/frontend/lowering/pairs-snapshot.js.map +1 -1
  365. package/dist/frontend/lowering/runtime-optional-records.d.ts +115 -0
  366. package/dist/frontend/lowering/runtime-optional-records.js +715 -0
  367. package/dist/frontend/lowering/runtime-optional-records.js.map +1 -0
  368. package/dist/frontend/lowering/runtime-optional-records.test.d.ts +1 -0
  369. package/dist/frontend/lowering/runtime-optional-records.test.js +175 -0
  370. package/dist/frontend/lowering/runtime-optional-records.test.js.map +1 -0
  371. package/dist/frontend/lowering/surfaces.d.ts +11 -3
  372. package/dist/frontend/lowering/surfaces.js +334 -37
  373. package/dist/frontend/lowering/surfaces.js.map +1 -1
  374. package/dist/frontend/lowering/zlib-constants.d.ts +1 -0
  375. package/dist/frontend/lowering/zlib-constants.js +181 -0
  376. package/dist/frontend/lowering/zlib-constants.js.map +1 -0
  377. package/dist/frontend/mock-shapes.d.ts +10 -0
  378. package/dist/frontend/mock-shapes.js +76 -0
  379. package/dist/frontend/mock-shapes.js.map +1 -0
  380. package/dist/frontend/module-syntax.d.ts +1 -1
  381. package/dist/frontend/module-syntax.js +1 -1
  382. package/dist/frontend/npm-static-prune.js +1 -1
  383. package/dist/frontend/npm-static-prune.js.map +1 -1
  384. package/dist/frontend/npm-static-rewrite-syntax.js +4 -3
  385. package/dist/frontend/npm-static-rewrite-syntax.js.map +1 -1
  386. package/dist/frontend/pipeline.js +6 -4
  387. package/dist/frontend/pipeline.js.map +1 -1
  388. package/dist/frontend/program.d.ts +3 -3
  389. package/dist/frontend/program.js +25 -18
  390. package/dist/frontend/program.js.map +1 -1
  391. package/dist/frontend/resolve.d.ts +4 -0
  392. package/dist/frontend/resolve.js +15 -1
  393. package/dist/frontend/resolve.js.map +1 -1
  394. package/dist/frontend/ts7/adapter.js +1 -1
  395. package/dist/frontend/ts7/ast-bytes.d.ts +1 -1
  396. package/dist/frontend/ts7/ast-bytes.js +1 -1
  397. package/dist/frontend/ts7/semantic-json.d.ts +1 -1
  398. package/dist/frontend/ts7/semantic-json.js +1 -1
  399. package/dist/frontend/ts7/semantic-json.js.map +1 -1
  400. package/dist/frontend/ts7/world-check.js +1 -1
  401. package/dist/frontend/tsc-codes.js +3 -2
  402. package/dist/frontend/tsc-codes.js.map +1 -1
  403. package/dist/frontend/type-mapper.d.ts +21 -1
  404. package/dist/frontend/type-mapper.js +245 -27
  405. package/dist/frontend/type-mapper.js.map +1 -1
  406. package/dist/index.js +7 -5
  407. package/dist/index.js.map +1 -1
  408. package/dist/ir/analysis.d.ts +12 -6
  409. package/dist/ir/analysis.js +26 -10
  410. package/dist/ir/analysis.js.map +1 -1
  411. package/dist/ir/analysis.test.js +15 -3
  412. package/dist/ir/analysis.test.js.map +1 -1
  413. package/dist/ir/builtin-effects.js +115 -0
  414. package/dist/ir/builtin-effects.js.map +1 -1
  415. package/dist/ir/builtin-signatures.d.ts +1 -1
  416. package/dist/ir/builtin-signatures.js +438 -46
  417. package/dist/ir/builtin-signatures.js.map +1 -1
  418. package/dist/ir/int32-slots.js +1 -0
  419. package/dist/ir/int32-slots.js.map +1 -1
  420. package/dist/ir/ir.d.ts +84 -17
  421. package/dist/ir/ir.js +54 -1
  422. package/dist/ir/ir.js.map +1 -1
  423. package/dist/ir/runtime-features.d.ts +1 -0
  424. package/dist/ir/runtime-features.js +111 -7
  425. package/dist/ir/runtime-features.js.map +1 -1
  426. package/dist/ir/serialize.js +1 -1
  427. package/dist/ir/serialize.js.map +1 -1
  428. package/dist/ir/traverse.js +1 -0
  429. package/dist/ir/traverse.js.map +1 -1
  430. package/dist/ir/validate.js +295 -14
  431. package/dist/ir/validate.js.map +1 -1
  432. package/dist/ir/validate.test.js +60 -0
  433. package/dist/ir/validate.test.js.map +1 -1
  434. package/dist/library/fence-eval.d.ts +1 -1
  435. package/dist/library/fence-eval.js +5 -4
  436. package/dist/library/fence-eval.js.map +1 -1
  437. package/dist/library/ir-policy.js +11 -4
  438. package/dist/library/ir-policy.js.map +1 -1
  439. package/dist/library/library-profile.js +13 -13
  440. package/dist/library/library-profile.js.map +1 -1
  441. package/dist/library/prepare.js +1 -1
  442. package/dist/library/prepare.js.map +1 -1
  443. package/dist/library/sidecar.js +3 -3
  444. package/dist/library/sidecar.js.map +1 -1
  445. package/dist/native/cli.js +1 -0
  446. package/dist/native/cli.js.map +1 -1
  447. package/dist/native/compiler.js +1 -3
  448. package/dist/native/compiler.js.map +1 -1
  449. package/dist/native/prepare.js +4 -2
  450. package/dist/native/prepare.js.map +1 -1
  451. package/dist/native/sanitizer.test.js +1 -0
  452. package/dist/native/sanitizer.test.js.map +1 -1
  453. package/package.json +20 -20
  454. package/surface-manifest.json +1279 -221
@@ -10,15 +10,18 @@ import { adaptZeroArgTimerCallback, lowerTimersMemberCall, TIMER_MODULE_MEMBERS,
10
10
  import { objectEnumerationReceiver } from "./object-enumeration-receiver.js";
11
11
  import { InternalCompilerError } from "../../errors.js";
12
12
  import * as ts from "../ts7/adapter.js";
13
+ import { isZlibStreamMember, lowerZlibStreamMethodCall } from "./builtins/compression.js";
13
14
  import { lowerGenMethodCall } from "./lower-generators.js";
14
15
  import { lowerClassSymbolMethodCall } from "./symbol-methods.js";
15
16
  import { errorToStringCall } from "./error-methods.js";
16
17
  import { lowerClassPrototypeAssign, lowerClassPrototypeDescriptors } from "./class-prototypes.js";
17
18
  import { BYTES_ELEMENT_NAME, BIGINT_T, BOOL, CAUGHT, DYN, F64, NULL_T, STRING, SYMBOL_T, UNDEFINED_T, VOID, arrayOf, canBoxFuncIntoDyn, canConvertToDyn, canDynCheckTo, funcOf, isDynTypedRefType, isUnitType, shapeHasAccessorSlots, typeEquals, } from "../../ir/ir.js";
19
+ import { lowerProtocolMethodCall } from "./class-protocol-dispatch.js";
18
20
  import { isJsSourceFile, locOf, requireSpecOf } from "../program.js";
21
+ import { lowerAssertInstanceCall } from "./assert-instances.js";
19
22
  import { isGenericCallableMemberType, typeKey } from "../type-mapper.js";
20
23
  import { dynFallbackType, jsFuncNameOf, newFnCtx, staticImportNamespaceType } from "./lowerer.js";
21
- import { NARROW_FIRST, STRING_INDEX_METHODS, STR_METHODS, stdlibGlobalNameOf } from "./surfaces.js";
24
+ import { NARROW_FIRST, STRING_INDEX_METHODS, STR_METHODS, UTIL_TYPES_KEYS, stdlibGlobalNameOf, } from "./surfaces.js";
22
25
  import { dynStringReceiver } from "./containers/dynamic-receivers.js";
23
26
  import { lowerArrayConstructor, lowerArrayFromCall, lowerArrayOfCall, } from "./containers/array-construction.js";
24
27
  import { lowerDynArrayFilterCall, lowerDynArrayFlatMapCall } from "./containers/array-callbacks.js";
@@ -32,9 +35,9 @@ import { lowerRegexMethodCall, lowerStringIndexCall, lowerStringMethodCall, lowe
32
35
  import { createRequireSpecOf } from "./builtins/module-bindings.js";
33
36
  import { lowerChildStreamMethodCall, lowerChildWriterMethodCall, } from "./builtins/child-process-methods.js";
34
37
  import { lowerCreateRequireCall, lowerImportMetaResolveCall, lowerRequireResolveCall, } from "./builtins/module-resolution.js";
35
- import { lowerCryptoHashMethodCall } from "./builtins/crypto.js";
36
- import { lowerDirentMethodCall, lowerFileHandleMethodCall, lowerWatcherMethodCall, } from "./builtins/filesystem.js";
37
- import { lowerPerfHooksCall } from "./builtins/performance.js";
38
+ import { lowerCipherMethodCall, lowerCryptoHashMethodCall } from "./builtins/crypto.js";
39
+ import { lowerDirentMethodCall, lowerFileHandleMethodCall, lowerDirMethodCall, lowerWatcherMethodCall, } from "./builtins/filesystem.js";
40
+ import { fencePerfEntryKeyWalk, isPerfEntryType, lowerPerfHooksCall, perfEntryTag, } from "./builtins/performance.js";
38
41
  import { lowerProcStreamMethodCall } from "./builtins/process.js";
39
42
  import { lowerReflectCall } from "./builtins/reflection.js";
40
43
  import { lowerAbsenceProbe, lowerOptionalNumber, lowerPromiseAllTupleCall, lowerPromiseRejectCall, lowerToNumberArgument, stringWrapperToString, symbolFieldInfo, templateRawTextOf, } from "./lower-exprs.js";
@@ -45,8 +48,9 @@ import { httpClientFnBindingOf, lowerCompatReqStreamOptionalCall, lowerHttpClien
45
48
  import { EMITTER_API_MEMBERS, exactClassOfReceiver, exactInstanceClassOf, findGenericMethodOn, lowerClassGenericMethodCall, lowerStaticMethodCall, lowerStaticFieldRead, returnsOnlyThis, storedClassValueType, } from "./lower-classes.js";
46
49
  import { classCallbackCall, isClassCallback } from "./class-callbacks.js";
47
50
  import { emitterRooted, lowerEmitterMethodCall } from "./lower-event-emitter.js";
51
+ import { eventTargetApiMethod, lowerEventTargetMethodCall } from "./lower-event-target.js";
48
52
  import { lowerConsoleInstanceCall, lowerConsoleMethodCall, lowerConsoleOutput, } from "./lower-console.js";
49
- import { STREAM_API_MEMBERS, lowerStreamMethodCall, lowerStreamStaticCall, streamSidesOf, } from "./lower-stream.js";
53
+ import { STREAM_API_MEMBERS, STREAM_OPERATORS, lowerStreamMethodCall, lowerStreamStaticCall, streamSidesOf, } from "./lower-stream.js";
50
54
  import { ambientNsRootOf, ambientUndefReadType, ambientUndefVarRootOf, ambientUndefinedFnSymbolOf, contextualUndefReadType, fenceEarlyAliasUse, fenceEarlyNsMemberRef, nsMemberIdentOf, nsUndefRead, } from "./lower-namespaces.js";
51
55
  import { expandoMemberRead } from "./lower-expando.js";
52
56
  import { fenceNodeModuleMutationCall, lowerRequireCacheKeys } from "./lower-node-module.js";
@@ -60,6 +64,7 @@ import { spreadNeedsRuntimeArity, completeFuncValueArgs, lowerSpreadArgsCall, co
60
64
  import { isThisParameter } from "./call-signatures.js";
61
65
  import { checkedArmExtraction } from "./coercions/unions.js";
62
66
  import { requireObjLitGenericReceiver, objLitGenericFnNodeOf, objLitGenericFnInfoOf, genericCallInstance, } from "./generic-functions.js";
67
+ const ZLIB_STREAM_METHODS = new Set(["flush", "params", "close", "reset"]);
63
68
  export function lowerCall(lowerer, expr) {
64
69
  const loc = locOf(expr);
65
70
  // Object's checker return type is `any`. Claim known object inputs
@@ -961,6 +966,8 @@ export function lowerCall(lowerer, expr) {
961
966
  // as named builtin imports — before anything below tries to lower
962
967
  // the namespace object itself as a receiver.
963
968
  lowerer.lowerNamespaceBuiltinCall(expr, expr.expression) ??
969
+ // Method calls on a static node:assert Assert instance.
970
+ lowerAssertInstanceCall(lowerer, expr, expr.expression, locOf(expr)) ??
964
971
  // The node:perf_hooks spoke: performance.now() and its
965
972
  // .bind(performance) function value over the runtime's
966
973
  // process-start-anchored monotonic clock.
@@ -992,7 +999,9 @@ export function lowerCall(lowerer, expr) {
992
999
  lowerer.lowerSearchParamsMethodCall(expr, expr.expression) ??
993
1000
  lowerer.lowerStatsMethodCall(expr, expr.expression) ??
994
1001
  lowerCryptoHashMethodCall(lowerer, expr, expr.expression) ??
1002
+ lowerCipherMethodCall(lowerer, expr, expr.expression) ??
995
1003
  lowerFileHandleMethodCall(lowerer, expr, expr.expression) ??
1004
+ lowerDirMethodCall(lowerer, expr, expr.expression) ??
996
1005
  lowerer.lowerChildMethodCall(expr, expr.expression) ??
997
1006
  // Piped child-output stream receivers — on/once("data" | "end").
998
1007
  lowerChildStreamMethodCall(lowerer, expr, expr.expression) ??
@@ -2048,6 +2057,7 @@ function lowerObjectOwnCall(lowerer, call, receiverNode, keyNode, extraNodes, me
2048
2057
  }
2049
2058
  else if (type.kind === "record") {
2050
2059
  const shape = lowerer.shapes.get(type.shapeId);
2060
+ fencePerfEntryKeyWalk(lowerer, type, receiverNode ?? call, `Object.prototype.${method}`);
2051
2061
  if (!shape || shape.tuple || shapeHasAccessorSlots(shape)) {
2052
2062
  lowerer.noLowering("Object.prototype." + method + " over this record shape", receiverNode ?? call);
2053
2063
  }
@@ -2763,7 +2773,7 @@ function lowerDynReceiverMethodCall(lowerer, call, access) {
2763
2773
  // representable prototype declares (test/common's mustCall internals:
2764
2774
  // mustCallChecks.push(context), failed.forEach(fn), fn.apply(this,
2765
2775
  // args)). Implemented (kind, name) pairs run JS-exact; real-but-
2766
- // unimplemented methods throw a LOUD not-supported Error; names the
2776
+ // unimplemented methods throw the 'not supported yet' Error; names the
2767
2777
  // kind's prototype lacks throw Node's "x.y is not a function"; OBJ
2768
2778
  // receivers call the own member.
2769
2779
  // A stored callback must be read before argument effects, and called
@@ -2782,6 +2792,13 @@ function lowerDynReceiverMethodCall(lowerer, call, access) {
2782
2792
  .declarationsOf(prop)
2783
2793
  .some((decl) => ts.isPropertyDeclaration(decl) || ts.isPropertySignature(decl)));
2784
2794
  })();
2795
+ // Protocol methods keep their static signature: instances of the
2796
+ // implementing classes call the native method.
2797
+ const protocolCall = !callbackProperty && lowerer.classImplementedProtocol(recvTs)
2798
+ ? lowerProtocolMethodCall(lowerer, call, access, recv)
2799
+ : null;
2800
+ if (protocolCall)
2801
+ return protocolCall;
2785
2802
  const dispatched = callbackProperty
2786
2803
  ? null
2787
2804
  : lowerDynDispatchMethodCall(lowerer, call, access, recv, arrayReceiver);
@@ -2851,7 +2868,7 @@ function lowerDynReceiverMethodCall(lowerer, call, access) {
2851
2868
  /** Prototype method names of the checked-dynamic tree-representable kinds (String, Array,
2852
2869
  * Object, Function, Number prototypes): a dyn receiver call on one of
2853
2870
  * these could be a REAL method on a real value, which a stored-member
2854
- * read would silently mis-answer — they keep the fence. Everything else
2871
+ * read would answer incorrectly — they keep the fence. Everything else
2855
2872
  * is own-property-or-throw for every dyn value (the honest dynCall). */
2856
2873
  const DYN_PROTO_METHOD_NAMES = new Set([
2857
2874
  // Object.prototype
@@ -2934,7 +2951,7 @@ const DYN_PROTO_METHOD_NAMES = new Set([
2934
2951
  * subset of DYN_PROTO_METHOD_NAMES with a receiver-kind dispatch): the
2935
2952
  * runtime runs the real method for the receiver's kind, throws Node's
2936
2953
  * is-not-a-function where the kind's prototype lacks the name, and
2937
- * fences LOUDLY on real-but-unimplemented pairs. */
2954
+ * throws the 'not supported yet' Error on real-but-unimplemented pairs. */
2938
2955
  const DYN_DISPATCH_METHODS = new Set([
2939
2956
  "toFixed",
2940
2957
  "toExponential",
@@ -2970,7 +2987,7 @@ const DYN_DISPATCH_METHODS = new Set([
2970
2987
  // boxed through the checked-dynamic boundary): these names dispatch on
2971
2988
  // the runtime kind so a boxed IncomingMessage/ServerResponse/Socket
2972
2989
  // routes onto the same entry points the static lowerings use (modeled
2973
- // members) or the loud not-supported ladder (real-but-unmodeled ones).
2990
+ // members) or the 'not supported yet' error path (real-but-unmodeled ones).
2974
2991
  // On every other dyn kind they answer exactly what the stored-member
2975
2992
  // path answered (OBJ own members call; the rest throw Node's
2976
2993
  // is-not-a-function).
@@ -3414,7 +3431,7 @@ function lowerNumberToStringCall(lowerer, call, access) {
3414
3431
  * helper dispatches on the tag, so `chunk.toString()` over the ngrok
3415
3432
  * `Buffer | string` listener param needs no narrowing. Unit-armed
3416
3433
  * unions stay out — `(undefined).toString()` THROWS in JS, and
3417
- * claiming it here would silently print "undefined" instead. Null for
3434
+ * claiming it here would print "undefined" instead. Null for
3418
3435
  * other receivers/arms (the narrow-first fences stay). */
3419
3436
  function lowerUnionToStringCall(lowerer, call, access) {
3420
3437
  if (call.questionDotToken || access.questionDotToken)
@@ -3474,6 +3491,9 @@ function lowerDefaultToStringCall(lowerer, call, access) {
3474
3491
  return null;
3475
3492
  }
3476
3493
  const loc = locOf(call);
3494
+ if (recvT.kind === "record" && isPerfEntryType(lowerer, recvT)) {
3495
+ return perfEntryTag(lowerer, lowerer.lowerExpr(access.expression), recvT, loc);
3496
+ }
3477
3497
  const constant = { kind: "strLit", value: "[object Object]", type: STRING, loc };
3478
3498
  // `(<A>{}).toString()` — assertion-wrapped literals and plain reads
3479
3499
  // have nothing to evaluate; pureObjectToStringReceiver widens
@@ -6425,6 +6445,31 @@ function lowerObjectStaticCall(lowerer, call, access) {
6425
6445
  if (call.arguments.length !== 1 || ts.isSpreadElement(call.arguments[0]))
6426
6446
  return null;
6427
6447
  const argNode = call.arguments[0];
6448
+ // util.types and node:util/types list Node's pinned key census
6449
+ // (UTIL_TYPES_KEYS): the object's own keys in Node's order, or the module
6450
+ // namespace's export names sorted with "default". values/entries would
6451
+ // include members that do not compile yet.
6452
+ const probedModule = tryLowerExpression(lowerer, argNode);
6453
+ if (lowerer.builtinNamespaceModuleOf(argNode) === "util/types" ||
6454
+ (probedModule?.type.kind === "moduleNs" && probedModule.type.moduleId === "builtin:util/types")) {
6455
+ if (member !== "keys") {
6456
+ lowerer.noLowering(`Object.${member} over util.types`, call, "call the util.types predicates by name");
6457
+ }
6458
+ const symbol = ts.isIdentifier(argNode)
6459
+ ? lowerer.checker.getSymbolAtLocation(argNode)
6460
+ : undefined;
6461
+ const namespace = symbol
6462
+ ? lowerer.checker.declarationsOf(symbol).some((decl) => ts.isNamespaceImport(decl))
6463
+ : false;
6464
+ const names = namespace ? [...UTIL_TYPES_KEYS, "default"].sort() : UTIL_TYPES_KEYS;
6465
+ const loc = locOf(call);
6466
+ return {
6467
+ kind: "arrayLit",
6468
+ elems: names.map((name) => ({ kind: "strLit", value: name, type: STRING, loc })),
6469
+ type: arrayOf(STRING),
6470
+ loc,
6471
+ };
6472
+ }
6428
6473
  // A compiled PROGRAM module namespace is a nominal token whose members
6429
6474
  // remain live bindings, but its enumerable key set is static and Node
6430
6475
  // sorts it in code-unit order. Materialize exactly those value-export
@@ -6527,6 +6572,18 @@ function lowerObjectStaticCall(lowerer, call, access) {
6527
6572
  type: resultT,
6528
6573
  loc: locOf(call),
6529
6574
  };
6575
+ // Values are `any[]`, which is the checked-dynamic array. When the
6576
+ // program only iterates or indexes the result, or passes it to a
6577
+ // read-only array method, a native vector of the checked values skips
6578
+ // building that array and, for for-of, the iterator protocol.
6579
+ if (member === "values" && !isJsSourceFile(call.getSourceFile()) && consumesValueList(call))
6580
+ return {
6581
+ kind: "libCall",
6582
+ fn: "dyn.objValueList",
6583
+ args: [v],
6584
+ type: arrayOf(DYN),
6585
+ loc: locOf(call),
6586
+ };
6530
6587
  return { kind: "libCall", fn, args: [v], type: DYN, loc: locOf(call) };
6531
6588
  }
6532
6589
  }
@@ -6545,6 +6602,7 @@ function lowerObjectStaticCall(lowerer, call, access) {
6545
6602
  // (own enumerable properties) and — for values/entries — the getter
6546
6603
  // RESULTS, invoked in key order. The static field walk models neither
6547
6604
  // (accessor slots live outside declaredOrder), so the surface fences.
6605
+ fencePerfEntryKeyWalk(lowerer, argIr, call, `Object.${member}`);
6548
6606
  if (shapeHasAccessorSlots(shape)) {
6549
6607
  lowerer.unsupported("SC1090", call, `Object.${member} over a shape carrying get/set accessor properties (Node lists the accessor names${member === "keys" ? "" : " and invokes the getters"} — the static key walk cannot; read the properties explicitly)`);
6550
6608
  }
@@ -6816,6 +6874,41 @@ function consumesEntryPairs(call) {
6816
6874
  ts.isCallExpression(parent.parent) &&
6817
6875
  parent.parent.expression === parent);
6818
6876
  }
6877
+ /** Whether an Object.values result is only iterated, indexed or passed to
6878
+ * a read-only array method, so no code observes or changes its array
6879
+ * representation. A bare `.length` read keeps the checked-dynamic array,
6880
+ * which measures as fast. */
6881
+ function consumesValueList(call) {
6882
+ let node = call;
6883
+ while (ts.isParenthesizedExpression(node.parent))
6884
+ node = node.parent;
6885
+ const parent = node.parent;
6886
+ if (ts.isForOfStatement(parent))
6887
+ return parent.expression === node && !parent.awaitModifier;
6888
+ if (ts.isElementAccessExpression(parent))
6889
+ return parent.expression === node && !isWriteTarget(parent);
6890
+ if (!ts.isPropertyAccessExpression(parent) || parent.expression !== node)
6891
+ return false;
6892
+ return (VALUE_LIST_METHODS.has(parent.name.text) &&
6893
+ ts.isCallExpression(parent.parent) &&
6894
+ parent.parent.expression === parent);
6895
+ }
6896
+ /** Whether an access is assigned, updated or deleted. */
6897
+ function isWriteTarget(access) {
6898
+ let node = access;
6899
+ while (ts.isParenthesizedExpression(node.parent))
6900
+ node = node.parent;
6901
+ const parent = node.parent;
6902
+ if (ts.isBinaryExpression(parent))
6903
+ return (parent.left === node &&
6904
+ parent.operatorToken.kind >= ts.SyntaxKind.FirstAssignment &&
6905
+ parent.operatorToken.kind <= ts.SyntaxKind.LastAssignment);
6906
+ if (ts.isPrefixUnaryExpression(parent) || ts.isPostfixUnaryExpression(parent))
6907
+ return (parent.operator === ts.SyntaxKind.PlusPlusToken ||
6908
+ parent.operator === ts.SyntaxKind.MinusMinusToken);
6909
+ return ts.isDeleteExpression(parent);
6910
+ }
6911
+ const VALUE_LIST_METHODS = new Set(["every", "findIndex", "forEach", "join", "reduce", "some"]);
6819
6912
  const ENTRY_PAIR_CALLBACK_METHODS = new Set([
6820
6913
  "every",
6821
6914
  "filter",
@@ -7015,7 +7108,7 @@ export function lowerRecordFieldCall(lowerer, call, access) {
7015
7108
  * URL.revokeObjectURL() with NO argument: Node's ERR_MISSING_ARGS
7016
7109
  * throws before the registry lookup, so the zero-argument contract is
7017
7110
  * exact without any blob machinery. The one-argument form (Node's
7018
- * silent no-op for unregistered ids) and createObjectURL keep their
7111
+ * no-op for unregistered ids) and createObjectURL keep their
7019
7112
  * fences — a compiled program has no blob registry to consult. */
7020
7113
  function lowerUrlStaticCall(lowerer, call, callee) {
7021
7114
  if (!ts.isPropertyAccessExpression(callee) || callee.questionDotToken !== undefined)
@@ -7444,13 +7537,21 @@ export function lowerObjectMethodCall(lowerer, call, access) {
7444
7537
  if (!info)
7445
7538
  lowerer.flushDeferredClass(receiverIr.className);
7446
7539
  const found = info ? lowerer.findMethodOn(info, access.name.text) : null;
7540
+ // The zlib stream members (flush/params/close/reset) are declared on
7541
+ // the zlib classes; their receivers are runtime Transform streams.
7542
+ if (info &&
7543
+ !found &&
7544
+ ZLIB_STREAM_METHODS.has(access.name.text) &&
7545
+ isZlibStreamMember(lowerer, access)) {
7546
+ return lowerZlibStreamMethodCall(lowerer, call, access);
7547
+ }
7447
7548
  // The stream surface: API-named calls on stream-rooted receivers
7448
7549
  // lower through the stream spoke (checked before the emitter surface
7449
7550
  // — the two member sets are disjoint, but streams root at the emitter
7450
7551
  // so both guards would pass an emitter-named call).
7451
7552
  if (info &&
7452
7553
  !found &&
7453
- STREAM_API_MEMBERS.has(access.name.text) &&
7554
+ (STREAM_API_MEMBERS.has(access.name.text) || STREAM_OPERATORS.has(access.name.text)) &&
7454
7555
  streamSidesOf(lowerer, info) !== null) {
7455
7556
  const stream = lowerStreamMethodCall(lowerer, call, access, info);
7456
7557
  if (stream)
@@ -7462,6 +7563,11 @@ export function lowerObjectMethodCall(lowerer, call, access) {
7462
7563
  if (info && !found && EMITTER_API_MEMBERS.has(access.name.text) && emitterRooted(lowerer, info)) {
7463
7564
  return lowerEmitterMethodCall(lowerer, call, access, info);
7464
7565
  }
7566
+ // The inherited EventTarget/Event methods of a class rooted at those
7567
+ // runtime bases (subclass members with these names are fenced).
7568
+ if (info && !found && eventTargetApiMethod(info, access.name.text)) {
7569
+ return lowerEventTargetMethodCall(lowerer, call, access, info, lowerReceiver());
7570
+ }
7465
7571
  // GENERIC methods (own type parameters) never enter the methods table:
7466
7572
  // they monomorphize per call site and dispatch statically
7467
7573
  // (lowerClassGenericMethodCall has the exactness rules).