@scriptc/compiler 0.4.2 → 0.4.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 (726) hide show
  1. package/ambient/scriptc-node-fallback.d.ts +470 -66
  2. package/dist/backend/cycle-analysis.d.ts +4 -1
  3. package/dist/backend/cycle-analysis.js +6 -4
  4. package/dist/backend/cycle-analysis.js.map +1 -1
  5. package/dist/backend/cycle-analysis.test.js +55 -0
  6. package/dist/backend/cycle-analysis.test.js.map +1 -1
  7. package/dist/backend/cycle-mutability.d.ts +7 -0
  8. package/dist/backend/cycle-mutability.js +19 -1
  9. package/dist/backend/cycle-mutability.js.map +1 -1
  10. package/dist/backend/executable-features.js +2 -0
  11. package/dist/backend/executable-features.js.map +1 -1
  12. package/dist/backend/immutability.d.ts +6 -3
  13. package/dist/backend/immutability.js +33 -29
  14. package/dist/backend/immutability.js.map +1 -1
  15. package/dist/backend/library-pack.js +1 -0
  16. package/dist/backend/library-pack.js.map +1 -1
  17. package/dist/backend/llvm/alloc.d.ts +16 -1
  18. package/dist/backend/llvm/alloc.js +54 -4
  19. package/dist/backend/llvm/alloc.js.map +1 -1
  20. package/dist/backend/llvm/appended-array-literals.d.ts +2 -1
  21. package/dist/backend/llvm/appended-array-literals.js +44 -36
  22. package/dist/backend/llvm/appended-array-literals.js.map +1 -1
  23. package/dist/backend/llvm/appended-array-literals.test.js +4 -3
  24. package/dist/backend/llvm/appended-array-literals.test.js.map +1 -1
  25. package/dist/backend/llvm/array-search.d.ts +4 -3
  26. package/dist/backend/llvm/array-search.js +21 -9
  27. package/dist/backend/llvm/array-search.js.map +1 -1
  28. package/dist/backend/llvm/blocks.d.ts +1 -1
  29. package/dist/backend/llvm/blocks.js +2 -2
  30. package/dist/backend/llvm/blocks.js.map +1 -1
  31. package/dist/backend/llvm/byte-windows.js +2 -0
  32. package/dist/backend/llvm/byte-windows.js.map +1 -1
  33. package/dist/backend/llvm/bytes-alias.d.ts +6 -1
  34. package/dist/backend/llvm/bytes-alias.js +8 -2
  35. package/dist/backend/llvm/bytes-alias.js.map +1 -1
  36. package/dist/backend/llvm/bytes-loop-versions.d.ts +47 -5
  37. package/dist/backend/llvm/bytes-loop-versions.js +479 -32
  38. package/dist/backend/llvm/bytes-loop-versions.js.map +1 -1
  39. package/dist/backend/llvm/bytes-loop-versions.test.js +263 -2
  40. package/dist/backend/llvm/bytes-loop-versions.test.js.map +1 -1
  41. package/dist/backend/llvm/checked-value-lifetimes.js +2 -0
  42. package/dist/backend/llvm/checked-value-lifetimes.js.map +1 -1
  43. package/dist/backend/llvm/classes.d.ts +7 -5
  44. package/dist/backend/llvm/classes.js +44 -20
  45. package/dist/backend/llvm/classes.js.map +1 -1
  46. package/dist/backend/llvm/classes.test.js +167 -7
  47. package/dist/backend/llvm/classes.test.js.map +1 -1
  48. package/dist/backend/llvm/common.d.ts +9 -3
  49. package/dist/backend/llvm/common.js +9 -3
  50. package/dist/backend/llvm/common.js.map +1 -1
  51. package/dist/backend/llvm/constant-callbacks.d.ts +2 -1
  52. package/dist/backend/llvm/constant-callbacks.js +83 -52
  53. package/dist/backend/llvm/constant-callbacks.js.map +1 -1
  54. package/dist/backend/llvm/counted-loops.d.ts +7 -0
  55. package/dist/backend/llvm/counted-loops.js +18 -0
  56. package/dist/backend/llvm/counted-loops.js.map +1 -1
  57. package/dist/backend/llvm/debug-info.js +2 -5
  58. package/dist/backend/llvm/debug-info.js.map +1 -1
  59. package/dist/backend/llvm/dense-array-access.d.ts +39 -8
  60. package/dist/backend/llvm/dense-array-access.js +222 -52
  61. package/dist/backend/llvm/dense-array-access.js.map +1 -1
  62. package/dist/backend/llvm/dense-array-access.test.js +36 -0
  63. package/dist/backend/llvm/dense-array-access.test.js.map +1 -1
  64. package/dist/backend/llvm/dense-array-loops.d.ts +17 -1
  65. package/dist/backend/llvm/dense-array-loops.js +194 -5
  66. package/dist/backend/llvm/dense-array-loops.js.map +1 -1
  67. package/dist/backend/llvm/dense-array-loops.test.js +90 -1
  68. package/dist/backend/llvm/dense-array-loops.test.js.map +1 -1
  69. package/dist/backend/llvm/dyn-handle-tags.test.js +6 -1
  70. package/dist/backend/llvm/dyn-handle-tags.test.js.map +1 -1
  71. package/dist/backend/llvm/dyn.d.ts +30 -0
  72. package/dist/backend/llvm/dyn.js +373 -70
  73. package/dist/backend/llvm/dyn.js.map +1 -1
  74. package/dist/backend/llvm/emit-function.js +13 -28
  75. package/dist/backend/llvm/emit-function.js.map +1 -1
  76. package/dist/backend/llvm/emit-journal.d.ts +93 -0
  77. package/dist/backend/llvm/emit-journal.js +170 -0
  78. package/dist/backend/llvm/emit-journal.js.map +1 -0
  79. package/dist/backend/llvm/emit-module.js +211 -33
  80. package/dist/backend/llvm/emit-module.js.map +1 -1
  81. package/dist/backend/llvm/emit-statements.d.ts +0 -4
  82. package/dist/backend/llvm/emit-statements.js +268 -84
  83. package/dist/backend/llvm/emit-statements.js.map +1 -1
  84. package/dist/backend/llvm/emitter-state.d.ts +7 -0
  85. package/dist/backend/llvm/emitter-state.js +14 -0
  86. package/dist/backend/llvm/emitter-state.js.map +1 -0
  87. package/dist/backend/llvm/emitter.d.ts +186 -37
  88. package/dist/backend/llvm/emitter.js +733 -90
  89. package/dist/backend/llvm/emitter.js.map +1 -1
  90. package/dist/backend/llvm/emitter.test.js +65 -7
  91. package/dist/backend/llvm/emitter.test.js.map +1 -1
  92. package/dist/backend/llvm/expr-async.js +11 -13
  93. package/dist/backend/llvm/expr-async.js.map +1 -1
  94. package/dist/backend/llvm/expr-bytes.js +48 -20
  95. package/dist/backend/llvm/expr-bytes.js.map +1 -1
  96. package/dist/backend/llvm/expr-callbacks.js +47 -0
  97. package/dist/backend/llvm/expr-callbacks.js.map +1 -1
  98. package/dist/backend/llvm/expr-calls.js +28 -14
  99. package/dist/backend/llvm/expr-calls.js.map +1 -1
  100. package/dist/backend/llvm/expr-containers.d.ts +14 -2
  101. package/dist/backend/llvm/expr-containers.js +143 -37
  102. package/dist/backend/llvm/expr-containers.js.map +1 -1
  103. package/dist/backend/llvm/expr-context.d.ts +14 -0
  104. package/dist/backend/llvm/expr-dynamic.js +18 -11
  105. package/dist/backend/llvm/expr-dynamic.js.map +1 -1
  106. package/dist/backend/llvm/expr-primitives.js +119 -38
  107. package/dist/backend/llvm/expr-primitives.js.map +1 -1
  108. package/dist/backend/llvm/expr-primitives.test.js +11 -6
  109. package/dist/backend/llvm/expr-primitives.test.js.map +1 -1
  110. package/dist/backend/llvm/expr-records.d.ts +12 -0
  111. package/dist/backend/llvm/expr-records.js +106 -0
  112. package/dist/backend/llvm/expr-records.js.map +1 -1
  113. package/dist/backend/llvm/expr-stream-bridges.d.ts +2 -2
  114. package/dist/backend/llvm/expr-stream-bridges.js +210 -69
  115. package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
  116. package/dist/backend/llvm/expr-stream-bridges.test.js +1 -1
  117. package/dist/backend/llvm/expr-stream-bridges.test.js.map +1 -1
  118. package/dist/backend/llvm/expr-stream-callbacks.d.ts +2 -2
  119. package/dist/backend/llvm/expr-stream-callbacks.js +74 -20
  120. package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
  121. package/dist/backend/llvm/int32-kind-loops.d.ts +39 -0
  122. package/dist/backend/llvm/int32-kind-loops.js +106 -0
  123. package/dist/backend/llvm/int32-kind-loops.js.map +1 -0
  124. package/dist/backend/llvm/integer-or-nan-indexes.test.d.ts +1 -0
  125. package/dist/backend/llvm/integer-or-nan-indexes.test.js +118 -0
  126. package/dist/backend/llvm/integer-or-nan-indexes.test.js.map +1 -0
  127. package/dist/backend/llvm/integer-values.d.ts +25 -1
  128. package/dist/backend/llvm/integer-values.js +95 -0
  129. package/dist/backend/llvm/integer-values.js.map +1 -1
  130. package/dist/backend/llvm/js-ic.d.ts +1 -1
  131. package/dist/backend/llvm/js-ic.js +1 -1
  132. package/dist/backend/llvm/js-ic.js.map +1 -1
  133. package/dist/backend/llvm/key-orders.d.ts +7 -0
  134. package/dist/backend/llvm/key-orders.js +33 -0
  135. package/dist/backend/llvm/key-orders.js.map +1 -0
  136. package/dist/backend/llvm/lib-connect.js +4 -0
  137. package/dist/backend/llvm/lib-connect.js.map +1 -1
  138. package/dist/backend/llvm/lib-datagram.js +11 -0
  139. package/dist/backend/llvm/lib-datagram.js.map +1 -1
  140. package/dist/backend/llvm/lib-dispatch.js +213 -5
  141. package/dist/backend/llvm/lib-dispatch.js.map +1 -1
  142. package/dist/backend/llvm/lib-filesystem.js +4 -4
  143. package/dist/backend/llvm/lib-filesystem.js.map +1 -1
  144. package/dist/backend/llvm/lib-http2.js +4 -0
  145. package/dist/backend/llvm/lib-http2.js.map +1 -1
  146. package/dist/backend/llvm/lib-lookup.js +16 -6
  147. package/dist/backend/llvm/lib-lookup.js.map +1 -1
  148. package/dist/backend/llvm/lib-process.js +37 -1
  149. package/dist/backend/llvm/lib-process.js.map +1 -1
  150. package/dist/backend/llvm/lib-shared.js +94 -2
  151. package/dist/backend/llvm/lib-shared.js.map +1 -1
  152. package/dist/backend/llvm/lib-stream.js +35 -5
  153. package/dist/backend/llvm/lib-stream.js.map +1 -1
  154. package/dist/backend/llvm/local-array-reads.js +115 -19
  155. package/dist/backend/llvm/local-array-reads.js.map +1 -1
  156. package/dist/backend/llvm/local-array-reads.test.js +14 -0
  157. package/dist/backend/llvm/local-array-reads.test.js.map +1 -1
  158. package/dist/backend/llvm/loop-state.d.ts +33 -0
  159. package/dist/backend/llvm/loop-state.js +42 -0
  160. package/dist/backend/llvm/loop-state.js.map +1 -0
  161. package/dist/backend/llvm/map-number-lookup.d.ts +26 -8
  162. package/dist/backend/llvm/map-number-lookup.js +91 -31
  163. package/dist/backend/llvm/map-number-lookup.js.map +1 -1
  164. package/dist/backend/llvm/map-number-lookup.test.js +55 -0
  165. package/dist/backend/llvm/map-number-lookup.test.js.map +1 -1
  166. package/dist/backend/llvm/map-read-lifetimes.js +4 -2
  167. package/dist/backend/llvm/map-read-lifetimes.js.map +1 -1
  168. package/dist/backend/llvm/nullable-unions.d.ts +2 -1
  169. package/dist/backend/llvm/nullable-unions.js +15 -3
  170. package/dist/backend/llvm/nullable-unions.js.map +1 -1
  171. package/dist/backend/llvm/publish.d.ts +10 -0
  172. package/dist/backend/llvm/publish.js +15 -3
  173. package/dist/backend/llvm/publish.js.map +1 -1
  174. package/dist/backend/llvm/receivers.js +6 -1
  175. package/dist/backend/llvm/receivers.js.map +1 -1
  176. package/dist/backend/llvm/record-results.d.ts +1 -9
  177. package/dist/backend/llvm/record-results.js +2 -11
  178. package/dist/backend/llvm/record-results.js.map +1 -1
  179. package/dist/backend/llvm/reference-effects.js +3 -0
  180. package/dist/backend/llvm/reference-effects.js.map +1 -1
  181. package/dist/backend/llvm/reference-writes.d.ts +7 -2
  182. package/dist/backend/llvm/reference-writes.js +89 -72
  183. package/dist/backend/llvm/reference-writes.js.map +1 -1
  184. package/dist/backend/llvm/running-extrema.d.ts +11 -0
  185. package/dist/backend/llvm/running-extrema.js +115 -0
  186. package/dist/backend/llvm/running-extrema.js.map +1 -0
  187. package/dist/backend/llvm/running-extrema.test.d.ts +1 -0
  188. package/dist/backend/llvm/running-extrema.test.js +89 -0
  189. package/dist/backend/llvm/running-extrema.test.js.map +1 -0
  190. package/dist/backend/llvm/shapes.d.ts +71 -15
  191. package/dist/backend/llvm/shapes.js +224 -40
  192. package/dist/backend/llvm/shapes.js.map +1 -1
  193. package/dist/backend/llvm/shapes.test.js +53 -7
  194. package/dist/backend/llvm/shapes.test.js.map +1 -1
  195. package/dist/backend/llvm/speculative-integers.d.ts +6 -0
  196. package/dist/backend/llvm/speculative-integers.js +2 -2
  197. package/dist/backend/llvm/speculative-integers.js.map +1 -1
  198. package/dist/backend/llvm/stack-captures.js +1 -5
  199. package/dist/backend/llvm/stack-captures.js.map +1 -1
  200. package/dist/backend/llvm/stack-objects.d.ts +3 -2
  201. package/dist/backend/llvm/stack-objects.js +5 -2
  202. package/dist/backend/llvm/stack-objects.js.map +1 -1
  203. package/dist/backend/llvm/string-reads.d.ts +12 -0
  204. package/dist/backend/llvm/string-reads.js +44 -0
  205. package/dist/backend/llvm/string-reads.js.map +1 -1
  206. package/dist/backend/llvm/union-repr.d.ts +4 -3
  207. package/dist/backend/llvm/union-repr.js +6 -5
  208. package/dist/backend/llvm/union-repr.js.map +1 -1
  209. package/dist/backend/llvm/walk-borrows.d.ts +3 -0
  210. package/dist/backend/llvm/walk-borrows.js +46 -41
  211. package/dist/backend/llvm/walk-borrows.js.map +1 -1
  212. package/dist/backend/llvm/walkers.d.ts +3 -0
  213. package/dist/backend/llvm/walkers.js +101 -65
  214. package/dist/backend/llvm/walkers.js.map +1 -1
  215. package/dist/backend/llvm/wrapping-sums.d.ts +16 -1
  216. package/dist/backend/llvm/wrapping-sums.js +126 -0
  217. package/dist/backend/llvm/wrapping-sums.js.map +1 -1
  218. package/dist/backend/may-throw.d.ts +8 -10
  219. package/dist/backend/may-throw.js +14 -10
  220. package/dist/backend/may-throw.js.map +1 -1
  221. package/dist/backend/native/contracts.d.ts +5 -0
  222. package/dist/backend/native/executable.js +7 -0
  223. package/dist/backend/native/executable.js.map +1 -1
  224. package/dist/backend/native/runtime-inputs.d.ts +1 -1
  225. package/dist/backend/native/runtime-inputs.js +1 -0
  226. package/dist/backend/native/runtime-inputs.js.map +1 -1
  227. package/dist/backend/native-codegen-core.d.ts +5 -3
  228. package/dist/backend/native-codegen-core.js +13 -6
  229. package/dist/backend/native-codegen-core.js.map +1 -1
  230. package/dist/backend/native-codegen.test.js +6 -4
  231. package/dist/backend/native-codegen.test.js.map +1 -1
  232. package/dist/backend/native-link-info-core.d.ts +4 -0
  233. package/dist/backend/native-link-info-core.js.map +1 -1
  234. package/dist/backend/publication.d.ts +12 -1
  235. package/dist/backend/publication.js +37 -14
  236. package/dist/backend/publication.js.map +1 -1
  237. package/dist/backend/publication.test.js +30 -0
  238. package/dist/backend/publication.test.js.map +1 -1
  239. package/dist/backend/result-slots.d.ts +16 -0
  240. package/dist/backend/result-slots.js +23 -0
  241. package/dist/backend/result-slots.js.map +1 -0
  242. package/dist/backend/runtime-abi.d.ts +2 -2
  243. package/dist/backend/runtime-abi.js +2 -2
  244. package/dist/backend/runtime-pack-core.d.ts +1 -0
  245. package/dist/backend/runtime-pack-core.js +1 -0
  246. package/dist/backend/runtime-pack-core.js.map +1 -1
  247. package/dist/backend/runtime-pack-targets.test.js +2 -1
  248. package/dist/backend/runtime-pack-targets.test.js.map +1 -1
  249. package/dist/backend/runtime-pack.test.js +2 -1
  250. package/dist/backend/runtime-pack.test.js.map +1 -1
  251. package/dist/backend/stack-observations.d.ts +2 -1
  252. package/dist/backend/stack-observations.js +67 -42
  253. package/dist/backend/stack-observations.js.map +1 -1
  254. package/dist/backend/target-cpu.d.ts +26 -0
  255. package/dist/backend/target-cpu.js +98 -0
  256. package/dist/backend/target-cpu.js.map +1 -0
  257. package/dist/backend/target-cpu.test.d.ts +1 -0
  258. package/dist/backend/target-cpu.test.js +38 -0
  259. package/dist/backend/target-cpu.test.js.map +1 -0
  260. package/dist/backend/target-diagnostics.js +5 -3
  261. package/dist/backend/target-diagnostics.js.map +1 -1
  262. package/dist/backend/warm-cache.js +1 -0
  263. package/dist/backend/warm-cache.js.map +1 -1
  264. package/dist/cli/command.js +20 -1
  265. package/dist/cli/command.js.map +1 -1
  266. package/dist/cli/usage.d.ts +4 -1
  267. package/dist/cli/usage.js +10 -3
  268. package/dist/cli/usage.js.map +1 -1
  269. package/dist/compat/fetch-profile.js +1 -1
  270. package/dist/compat/fetch-profile.js.map +1 -1
  271. package/dist/compile-types.d.ts +7 -0
  272. package/dist/contracts/check.js +4 -3
  273. package/dist/contracts/check.js.map +1 -1
  274. package/dist/contracts/int32-elements.js +10 -2
  275. package/dist/contracts/int32-elements.js.map +1 -1
  276. package/dist/coverage/report.js +12 -3
  277. package/dist/coverage/report.js.map +1 -1
  278. package/dist/diagnostics/diagnostic.d.ts +4 -0
  279. package/dist/diagnostics/diagnostic.js +1 -1
  280. package/dist/diagnostics/diagnostic.js.map +1 -1
  281. package/dist/diagnostics/envelope.d.ts +3 -0
  282. package/dist/diagnostics/envelope.js +1 -0
  283. package/dist/diagnostics/envelope.js.map +1 -1
  284. package/dist/executable/executable-cache.d.ts +5 -0
  285. package/dist/executable/executable-cache.js +5 -0
  286. package/dist/executable/executable-cache.js.map +1 -1
  287. package/dist/executable/executable-cache.test.js +3 -0
  288. package/dist/executable/executable-cache.test.js.map +1 -1
  289. package/dist/frontend/decl-projection.d.ts +41 -0
  290. package/dist/frontend/decl-projection.js +949 -0
  291. package/dist/frontend/decl-projection.js.map +1 -0
  292. package/dist/frontend/decl-projection.test.d.ts +1 -0
  293. package/dist/frontend/decl-projection.test.js +30 -0
  294. package/dist/frontend/decl-projection.test.js.map +1 -0
  295. package/dist/frontend/dts-paths.d.ts +15 -0
  296. package/dist/frontend/dts-paths.js +25 -0
  297. package/dist/frontend/dts-paths.js.map +1 -1
  298. package/dist/frontend/input-tracker.d.ts +6 -0
  299. package/dist/frontend/input-tracker.js +51 -28
  300. package/dist/frontend/input-tracker.js.map +1 -1
  301. package/dist/frontend/input-tracker.test.js +19 -0
  302. package/dist/frontend/input-tracker.test.js.map +1 -1
  303. package/dist/frontend/lowering/array-values.js +100 -2
  304. package/dist/frontend/lowering/array-values.js.map +1 -1
  305. package/dist/frontend/lowering/builtins/async-context.d.ts +8 -2
  306. package/dist/frontend/lowering/builtins/async-context.js +62 -3
  307. package/dist/frontend/lowering/builtins/async-context.js.map +1 -1
  308. package/dist/frontend/lowering/builtins/child-process-methods.js +46 -15
  309. package/dist/frontend/lowering/builtins/child-process-methods.js.map +1 -1
  310. package/dist/frontend/lowering/builtins/child-process.js +13 -2
  311. package/dist/frontend/lowering/builtins/child-process.js.map +1 -1
  312. package/dist/frontend/lowering/builtins/crypto.js +87 -10
  313. package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
  314. package/dist/frontend/lowering/builtins/dates.js +4 -1
  315. package/dist/frontend/lowering/builtins/dates.js.map +1 -1
  316. package/dist/frontend/lowering/builtins/filesystem-calls.js +3 -3
  317. package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
  318. package/dist/frontend/lowering/builtins/fs-glob.js +6 -3
  319. package/dist/frontend/lowering/builtins/fs-glob.js.map +1 -1
  320. package/dist/frontend/lowering/builtins/fs-paths.d.ts +43 -5
  321. package/dist/frontend/lowering/builtins/fs-paths.js +245 -93
  322. package/dist/frontend/lowering/builtins/fs-paths.js.map +1 -1
  323. package/dist/frontend/lowering/builtins/global-namespace-keys.d.ts +3 -0
  324. package/dist/frontend/lowering/builtins/global-namespace-keys.js +122 -0
  325. package/dist/frontend/lowering/builtins/global-namespace-keys.js.map +1 -0
  326. package/dist/frontend/lowering/builtins/module-calls.js +6 -3
  327. package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
  328. package/dist/frontend/lowering/builtins/numbers.js +9 -1
  329. package/dist/frontend/lowering/builtins/numbers.js.map +1 -1
  330. package/dist/frontend/lowering/builtins/promises.d.ts +7 -1
  331. package/dist/frontend/lowering/builtins/promises.js +236 -139
  332. package/dist/frontend/lowering/builtins/promises.js.map +1 -1
  333. package/dist/frontend/lowering/builtins/readline.d.ts +5 -1
  334. package/dist/frontend/lowering/builtins/readline.js +35 -3
  335. package/dist/frontend/lowering/builtins/readline.js.map +1 -1
  336. package/dist/frontend/lowering/builtins/url.js +24 -1
  337. package/dist/frontend/lowering/builtins/url.js.map +1 -1
  338. package/dist/frontend/lowering/builtins/webassembly.js +6 -3
  339. package/dist/frontend/lowering/builtins/webassembly.js.map +1 -1
  340. package/dist/frontend/lowering/call-signatures.js +0 -1
  341. package/dist/frontend/lowering/call-signatures.js.map +1 -1
  342. package/dist/frontend/lowering/cjs-exports-object.js +1 -1
  343. package/dist/frontend/lowering/cjs-exports-object.js.map +1 -1
  344. package/dist/frontend/lowering/cjs-inline-require.d.ts +32 -0
  345. package/dist/frontend/lowering/cjs-inline-require.js +307 -4
  346. package/dist/frontend/lowering/cjs-inline-require.js.map +1 -1
  347. package/dist/frontend/lowering/class-callbacks.d.ts +5 -2
  348. package/dist/frontend/lowering/class-callbacks.js +82 -12
  349. package/dist/frontend/lowering/class-callbacks.js.map +1 -1
  350. package/dist/frontend/lowering/class-construction.d.ts +4 -1
  351. package/dist/frontend/lowering/class-construction.js +17 -3
  352. package/dist/frontend/lowering/class-construction.js.map +1 -1
  353. package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +49 -2
  354. package/dist/frontend/lowering/class-dynamic-dispatch.js +880 -108
  355. package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
  356. package/dist/frontend/lowering/class-dynamic-dispatch.test.js +47 -0
  357. package/dist/frontend/lowering/class-dynamic-dispatch.test.js.map +1 -1
  358. package/dist/frontend/lowering/class-iterables.d.ts +2 -1
  359. package/dist/frontend/lowering/class-iterables.js +9 -1
  360. package/dist/frontend/lowering/class-iterables.js.map +1 -1
  361. package/dist/frontend/lowering/class-method-mutations.js +83 -24
  362. package/dist/frontend/lowering/class-method-mutations.js.map +1 -1
  363. package/dist/frontend/lowering/class-protocols.d.ts +25 -0
  364. package/dist/frontend/lowering/class-protocols.js +183 -1
  365. package/dist/frontend/lowering/class-protocols.js.map +1 -1
  366. package/dist/frontend/lowering/class-prototypes.js +31 -2
  367. package/dist/frontend/lowering/class-prototypes.js.map +1 -1
  368. package/dist/frontend/lowering/class-runtime-statics.d.ts +9 -3
  369. package/dist/frontend/lowering/class-runtime-statics.js +29 -4
  370. package/dist/frontend/lowering/class-runtime-statics.js.map +1 -1
  371. package/dist/frontend/lowering/coercions/structural-plans.js +48 -1
  372. package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -1
  373. package/dist/frontend/lowering/coercions/structural.js +91 -1
  374. package/dist/frontend/lowering/coercions/structural.js.map +1 -1
  375. package/dist/frontend/lowering/completion-callbacks.d.ts +4 -0
  376. package/dist/frontend/lowering/completion-callbacks.js +146 -0
  377. package/dist/frontend/lowering/completion-callbacks.js.map +1 -0
  378. package/dist/frontend/lowering/containers/array-callback-call.js +2 -2
  379. package/dist/frontend/lowering/containers/array-callback-call.js.map +1 -1
  380. package/dist/frontend/lowering/containers/array-callbacks.d.ts +5 -4
  381. package/dist/frontend/lowering/containers/array-callbacks.js +345 -24
  382. package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
  383. package/dist/frontend/lowering/containers/array-concat.js +10 -0
  384. package/dist/frontend/lowering/containers/array-concat.js.map +1 -1
  385. package/dist/frontend/lowering/containers/array-construction.js +5 -0
  386. package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
  387. package/dist/frontend/lowering/containers/array-methods.js +26 -3
  388. package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
  389. package/dist/frontend/lowering/containers/array-pipelines.js +19 -8
  390. package/dist/frontend/lowering/containers/array-pipelines.js.map +1 -1
  391. package/dist/frontend/lowering/containers/bytes.d.ts +25 -17
  392. package/dist/frontend/lowering/containers/bytes.js +455 -46
  393. package/dist/frontend/lowering/containers/bytes.js.map +1 -1
  394. package/dist/frontend/lowering/containers/callback-arguments.js +3 -0
  395. package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -1
  396. package/dist/frontend/lowering/containers/collection-methods.js +7 -2
  397. package/dist/frontend/lowering/containers/collection-methods.js.map +1 -1
  398. package/dist/frontend/lowering/containers/filter-predicates.d.ts +6 -0
  399. package/dist/frontend/lowering/containers/filter-predicates.js +205 -0
  400. package/dist/frontend/lowering/containers/filter-predicates.js.map +1 -0
  401. package/dist/frontend/lowering/containers/indexed-objects.d.ts +0 -12
  402. package/dist/frontend/lowering/containers/indexed-objects.js +46 -7
  403. package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
  404. package/dist/frontend/lowering/containers/string-and-regexp.js +55 -9
  405. package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
  406. package/dist/frontend/lowering/containers/string-replacement.js +43 -19
  407. package/dist/frontend/lowering/containers/string-replacement.js.map +1 -1
  408. package/dist/frontend/lowering/date-values.d.ts +11 -0
  409. package/dist/frontend/lowering/date-values.js +207 -0
  410. package/dist/frontend/lowering/date-values.js.map +1 -0
  411. package/dist/frontend/lowering/dispatch-sites.js +15 -1
  412. package/dist/frontend/lowering/dispatch-sites.js.map +1 -1
  413. package/dist/frontend/lowering/divergences.js +9 -1
  414. package/dist/frontend/lowering/divergences.js.map +1 -1
  415. package/dist/frontend/lowering/error-methods.js +47 -2
  416. package/dist/frontend/lowering/error-methods.js.map +1 -1
  417. package/dist/frontend/lowering/expressions/array-literals.js +53 -0
  418. package/dist/frontend/lowering/expressions/array-literals.js.map +1 -1
  419. package/dist/frontend/lowering/expressions/binary.js +100 -28
  420. package/dist/frontend/lowering/expressions/binary.js.map +1 -1
  421. package/dist/frontend/lowering/expressions/element-access.js +169 -13
  422. package/dist/frontend/lowering/expressions/element-access.js.map +1 -1
  423. package/dist/frontend/lowering/expressions/identifiers.js +64 -5
  424. package/dist/frontend/lowering/expressions/identifiers.js.map +1 -1
  425. package/dist/frontend/lowering/expressions/narrowing.js +95 -1
  426. package/dist/frontend/lowering/expressions/narrowing.js.map +1 -1
  427. package/dist/frontend/lowering/expressions/nullish-assignment.js +3 -1
  428. package/dist/frontend/lowering/expressions/nullish-assignment.js.map +1 -1
  429. package/dist/frontend/lowering/expressions/object-literals.d.ts +10 -0
  430. package/dist/frontend/lowering/expressions/object-literals.js +138 -51
  431. package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
  432. package/dist/frontend/lowering/expressions/optional-chains.js +12 -0
  433. package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
  434. package/dist/frontend/lowering/expressions/property-access.js +168 -10
  435. package/dist/frontend/lowering/expressions/property-access.js.map +1 -1
  436. package/dist/frontend/lowering/expressions/relational.js +212 -33
  437. package/dist/frontend/lowering/expressions/relational.js.map +1 -1
  438. package/dist/frontend/lowering/expressions/typeof.js +6 -0
  439. package/dist/frontend/lowering/expressions/typeof.js.map +1 -1
  440. package/dist/frontend/lowering/expressions/union-fields.js +4 -0
  441. package/dist/frontend/lowering/expressions/union-fields.js.map +1 -1
  442. package/dist/frontend/lowering/expressions/updates.js +39 -3
  443. package/dist/frontend/lowering/expressions/updates.js.map +1 -1
  444. package/dist/frontend/lowering/frozen-records.d.ts +28 -0
  445. package/dist/frontend/lowering/frozen-records.js +322 -0
  446. package/dist/frontend/lowering/frozen-records.js.map +1 -0
  447. package/dist/frontend/lowering/function-returns.js +64 -0
  448. package/dist/frontend/lowering/function-returns.js.map +1 -1
  449. package/dist/frontend/lowering/generic-functions.js +7 -2
  450. package/dist/frontend/lowering/generic-functions.js.map +1 -1
  451. package/dist/frontend/lowering/indexed-unions.d.ts +54 -0
  452. package/dist/frontend/lowering/indexed-unions.js +401 -0
  453. package/dist/frontend/lowering/indexed-unions.js.map +1 -0
  454. package/dist/frontend/lowering/iterable-values.d.ts +49 -0
  455. package/dist/frontend/lowering/iterable-values.js +297 -0
  456. package/dist/frontend/lowering/iterable-values.js.map +1 -0
  457. package/dist/frontend/lowering/iterator-adapters.js +186 -1
  458. package/dist/frontend/lowering/iterator-adapters.js.map +1 -1
  459. package/dist/frontend/lowering/js-class-fields.d.ts +8 -0
  460. package/dist/frontend/lowering/js-class-fields.js +45 -10
  461. package/dist/frontend/lowering/js-class-fields.js.map +1 -1
  462. package/dist/frontend/lowering/key-order-witness.d.ts +18 -3
  463. package/dist/frontend/lowering/key-order-witness.js +974 -48
  464. package/dist/frontend/lowering/key-order-witness.js.map +1 -1
  465. package/dist/frontend/lowering/key-order-witness.test.js +530 -10
  466. package/dist/frontend/lowering/key-order-witness.test.js.map +1 -1
  467. package/dist/frontend/lowering/lower-assert.js +15 -3
  468. package/dist/frontend/lowering/lower-assert.js.map +1 -1
  469. package/dist/frontend/lowering/lower-async-iteration.js +4 -1
  470. package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
  471. package/dist/frontend/lowering/lower-calls.d.ts +7 -0
  472. package/dist/frontend/lowering/lower-calls.js +462 -44
  473. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  474. package/dist/frontend/lowering/lower-classes.d.ts +11 -2
  475. package/dist/frontend/lowering/lower-classes.js +324 -69
  476. package/dist/frontend/lowering/lower-classes.js.map +1 -1
  477. package/dist/frontend/lowering/lower-dgram.js +3 -1
  478. package/dist/frontend/lowering/lower-dgram.js.map +1 -1
  479. package/dist/frontend/lowering/lower-exprs.js +215 -3
  480. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  481. package/dist/frontend/lowering/lower-functions.d.ts +11 -0
  482. package/dist/frontend/lowering/lower-functions.js +83 -0
  483. package/dist/frontend/lowering/lower-functions.js.map +1 -1
  484. package/dist/frontend/lowering/lower-generators.js +42 -32
  485. package/dist/frontend/lowering/lower-generators.js.map +1 -1
  486. package/dist/frontend/lowering/lower-global-value.js +6 -3
  487. package/dist/frontend/lowering/lower-global-value.js.map +1 -1
  488. package/dist/frontend/lowering/lower-inspect.d.ts +1 -1
  489. package/dist/frontend/lowering/lower-inspect.js +53 -17
  490. package/dist/frontend/lowering/lower-inspect.js.map +1 -1
  491. package/dist/frontend/lowering/lower-modules.js +53 -5
  492. package/dist/frontend/lowering/lower-modules.js.map +1 -1
  493. package/dist/frontend/lowering/lower-namespaces.js +5 -1
  494. package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
  495. package/dist/frontend/lowering/lower-server.js +2 -2
  496. package/dist/frontend/lowering/lower-server.js.map +1 -1
  497. package/dist/frontend/lowering/lower-stdlib.d.ts +5 -0
  498. package/dist/frontend/lowering/lower-stdlib.js +30 -0
  499. package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
  500. package/dist/frontend/lowering/lower-stmts.d.ts +23 -0
  501. package/dist/frontend/lowering/lower-stmts.js +553 -81
  502. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  503. package/dist/frontend/lowering/lower-stream.d.ts +20 -2
  504. package/dist/frontend/lowering/lower-stream.js +1483 -156
  505. package/dist/frontend/lowering/lower-stream.js.map +1 -1
  506. package/dist/frontend/lowering/lowerer.d.ts +107 -8
  507. package/dist/frontend/lowering/lowerer.js +381 -36
  508. package/dist/frontend/lowering/lowerer.js.map +1 -1
  509. package/dist/frontend/lowering/module-namespace-elements.d.ts +11 -1
  510. package/dist/frontend/lowering/module-namespace-elements.js +82 -5
  511. package/dist/frontend/lowering/module-namespace-elements.js.map +1 -1
  512. package/dist/frontend/lowering/new-target.d.ts +12 -0
  513. package/dist/frontend/lowering/new-target.js +280 -0
  514. package/dist/frontend/lowering/new-target.js.map +1 -0
  515. package/dist/frontend/lowering/object-factory-new.d.ts +5 -0
  516. package/dist/frontend/lowering/object-factory-new.js +20 -6
  517. package/dist/frontend/lowering/object-factory-new.js.map +1 -1
  518. package/dist/frontend/lowering/overload-choice.d.ts +33 -0
  519. package/dist/frontend/lowering/overload-choice.js +190 -0
  520. package/dist/frontend/lowering/overload-choice.js.map +1 -0
  521. package/dist/frontend/lowering/surfaces.d.ts +3 -0
  522. package/dist/frontend/lowering/surfaces.js +73 -8
  523. package/dist/frontend/lowering/surfaces.js.map +1 -1
  524. package/dist/frontend/lowering/undefined-index.d.ts +27 -0
  525. package/dist/frontend/lowering/undefined-index.js +82 -0
  526. package/dist/frontend/lowering/undefined-index.js.map +1 -0
  527. package/dist/frontend/lowering/var-hoisting.js +29 -13
  528. package/dist/frontend/lowering/var-hoisting.js.map +1 -1
  529. package/dist/frontend/lowering/width-lift.d.ts +18 -0
  530. package/dist/frontend/npm-static-bundled-chunks.js +9 -11
  531. package/dist/frontend/npm-static-bundled-chunks.js.map +1 -1
  532. package/dist/frontend/npm-static-bundled-chunks.test.js +6 -5
  533. package/dist/frontend/npm-static-bundled-chunks.test.js.map +1 -1
  534. package/dist/frontend/npm-static-rewrite-syntax.js +9 -1
  535. package/dist/frontend/npm-static-rewrite-syntax.js.map +1 -1
  536. package/dist/frontend/npm-static.js +4 -20
  537. package/dist/frontend/npm-static.js.map +1 -1
  538. package/dist/frontend/package-shims.d.ts +3 -0
  539. package/dist/frontend/package-shims.js +71 -8
  540. package/dist/frontend/package-shims.js.map +1 -1
  541. package/dist/frontend/pipeline.js +19 -11
  542. package/dist/frontend/pipeline.js.map +1 -1
  543. package/dist/frontend/process-fork.d.ts +25 -0
  544. package/dist/frontend/process-fork.js +2 -0
  545. package/dist/frontend/process-fork.js.map +1 -0
  546. package/dist/frontend/program-analysis.d.ts +5 -1
  547. package/dist/frontend/program-analysis.js +5 -0
  548. package/dist/frontend/program-analysis.js.map +1 -1
  549. package/dist/frontend/program.d.ts +21 -6
  550. package/dist/frontend/program.js +681 -83
  551. package/dist/frontend/program.js.map +1 -1
  552. package/dist/frontend/program.test.js +43 -3
  553. package/dist/frontend/program.test.js.map +1 -1
  554. package/dist/frontend/token-equivalence.d.ts +3 -0
  555. package/dist/frontend/token-equivalence.js +409 -0
  556. package/dist/frontend/token-equivalence.js.map +1 -0
  557. package/dist/frontend/token-equivalence.test.d.ts +1 -0
  558. package/dist/frontend/token-equivalence.test.js +67 -0
  559. package/dist/frontend/token-equivalence.test.js.map +1 -0
  560. package/dist/frontend/ts7/ast-node.d.ts +22 -0
  561. package/dist/frontend/ts7/ast-node.js +1048 -103
  562. package/dist/frontend/ts7/ast-node.js.map +1 -1
  563. package/dist/frontend/ts7/ast-node.test.js +24 -0
  564. package/dist/frontend/ts7/ast-node.test.js.map +1 -1
  565. package/dist/frontend/ts7/ast-wire.d.ts +4 -3
  566. package/dist/frontend/ts7/ast-wire.js +34 -24
  567. package/dist/frontend/ts7/ast-wire.js.map +1 -1
  568. package/dist/frontend/ts7/ast-wire.test.js +23 -0
  569. package/dist/frontend/ts7/ast-wire.test.js.map +1 -1
  570. package/dist/frontend/ts7/checker-backend.d.ts +3 -4
  571. package/dist/frontend/ts7/checker-backend.js +2 -2
  572. package/dist/frontend/ts7/checker-backend.js.map +1 -1
  573. package/dist/frontend/ts7/checker-backend.test.js +5 -9
  574. package/dist/frontend/ts7/checker-backend.test.js.map +1 -1
  575. package/dist/frontend/ts7/checker.d.ts +4 -0
  576. package/dist/frontend/ts7/checker.js +7 -0
  577. package/dist/frontend/ts7/checker.js.map +1 -1
  578. package/dist/frontend/ts7/lib-diagnostics.d.ts +24 -0
  579. package/dist/frontend/ts7/lib-diagnostics.js +307 -0
  580. package/dist/frontend/ts7/lib-diagnostics.js.map +1 -0
  581. package/dist/frontend/ts7/lib-diagnostics.test.d.ts +1 -0
  582. package/dist/frontend/ts7/lib-diagnostics.test.js +199 -0
  583. package/dist/frontend/ts7/lib-diagnostics.test.js.map +1 -0
  584. package/dist/frontend/ts7/program-host.d.ts +7 -0
  585. package/dist/frontend/ts7/program-host.js +25 -2
  586. package/dist/frontend/ts7/program-host.js.map +1 -1
  587. package/dist/frontend/ts7/semantic-model.d.ts +3 -0
  588. package/dist/frontend/ts7/semantic-model.js +5 -0
  589. package/dist/frontend/ts7/semantic-model.js.map +1 -1
  590. package/dist/frontend/ts7/semantic-model.test.js +6 -1
  591. package/dist/frontend/ts7/semantic-model.test.js.map +1 -1
  592. package/dist/frontend/ts7/semantic-types.d.ts +1 -1
  593. package/dist/frontend/ts7/semantic-types.js +1 -1
  594. package/dist/frontend/ts7/semantic-types.js.map +1 -1
  595. package/dist/frontend/ts7/session.d.ts +14 -1
  596. package/dist/frontend/ts7/session.js +22 -0
  597. package/dist/frontend/ts7/session.js.map +1 -1
  598. package/dist/frontend/type-mapper.d.ts +13 -1
  599. package/dist/frontend/type-mapper.js +229 -20
  600. package/dist/frontend/type-mapper.js.map +1 -1
  601. package/dist/index.d.ts +0 -5
  602. package/dist/index.js +46 -4
  603. package/dist/index.js.map +1 -1
  604. package/dist/ir/analysis.js +5 -3
  605. package/dist/ir/analysis.js.map +1 -1
  606. package/dist/ir/array-length-stability.d.ts +4 -0
  607. package/dist/ir/array-length-stability.js +19 -6
  608. package/dist/ir/array-length-stability.js.map +1 -1
  609. package/dist/ir/array-length-stability.test.js +24 -0
  610. package/dist/ir/array-length-stability.test.js.map +1 -1
  611. package/dist/ir/builtin-effects.d.ts +7 -0
  612. package/dist/ir/builtin-effects.js +60 -0
  613. package/dist/ir/builtin-effects.js.map +1 -1
  614. package/dist/ir/builtin-signatures.d.ts +6 -4
  615. package/dist/ir/builtin-signatures.js +222 -13
  616. package/dist/ir/builtin-signatures.js.map +1 -1
  617. package/dist/ir/callback-specialization.d.ts +2 -1
  618. package/dist/ir/callback-specialization.js +23 -18
  619. package/dist/ir/callback-specialization.js.map +1 -1
  620. package/dist/ir/char-unit-locals.d.ts +19 -0
  621. package/dist/ir/char-unit-locals.js +185 -0
  622. package/dist/ir/char-unit-locals.js.map +1 -0
  623. package/dist/ir/char-unit-locals.test.d.ts +1 -0
  624. package/dist/ir/char-unit-locals.test.js +94 -0
  625. package/dist/ir/char-unit-locals.test.js.map +1 -0
  626. package/dist/ir/final-fields.d.ts +2 -1
  627. package/dist/ir/final-fields.js +14 -16
  628. package/dist/ir/final-fields.js.map +1 -1
  629. package/dist/ir/function-references.d.ts +2 -0
  630. package/dist/ir/function-references.js +2 -0
  631. package/dist/ir/function-references.js.map +1 -1
  632. package/dist/ir/function-references.test.js +3 -0
  633. package/dist/ir/function-references.test.js.map +1 -1
  634. package/dist/ir/initializer-bindings.d.ts +2 -1
  635. package/dist/ir/initializer-bindings.js +27 -20
  636. package/dist/ir/initializer-bindings.js.map +1 -1
  637. package/dist/ir/int32-arrays.d.ts +108 -0
  638. package/dist/ir/int32-arrays.js +831 -0
  639. package/dist/ir/int32-arrays.js.map +1 -0
  640. package/dist/ir/int32-slots.d.ts +24 -2
  641. package/dist/ir/int32-slots.js +266 -57
  642. package/dist/ir/int32-slots.js.map +1 -1
  643. package/dist/ir/int32-slots.test.js +33 -0
  644. package/dist/ir/int32-slots.test.js.map +1 -1
  645. package/dist/ir/integer-loops.d.ts +3 -3
  646. package/dist/ir/integer-loops.js +28 -10
  647. package/dist/ir/integer-loops.js.map +1 -1
  648. package/dist/ir/integer-loops.test.js +10 -0
  649. package/dist/ir/integer-loops.test.js.map +1 -1
  650. package/dist/ir/integer-ranges.d.ts +5 -0
  651. package/dist/ir/integer-ranges.js +125 -12
  652. package/dist/ir/integer-ranges.js.map +1 -1
  653. package/dist/ir/integer-ranges.test.js +30 -0
  654. package/dist/ir/integer-ranges.test.js.map +1 -1
  655. package/dist/ir/ir.d.ts +83 -10
  656. package/dist/ir/ir.js +77 -6
  657. package/dist/ir/ir.js.map +1 -1
  658. package/dist/ir/ir.test.js +23 -2
  659. package/dist/ir/ir.test.js.map +1 -1
  660. package/dist/ir/js-ic.d.ts +4 -0
  661. package/dist/ir/js-ic.js +17 -1
  662. package/dist/ir/js-ic.js.map +1 -1
  663. package/dist/ir/js-ic.test.js +46 -0
  664. package/dist/ir/js-ic.test.js.map +1 -1
  665. package/dist/ir/node-index.d.ts +57 -0
  666. package/dist/ir/node-index.js +215 -0
  667. package/dist/ir/node-index.js.map +1 -0
  668. package/dist/ir/paired-while-loops.d.ts +25 -0
  669. package/dist/ir/paired-while-loops.js +335 -0
  670. package/dist/ir/paired-while-loops.js.map +1 -0
  671. package/dist/ir/paired-while-loops.test.d.ts +1 -0
  672. package/dist/ir/paired-while-loops.test.js +163 -0
  673. package/dist/ir/paired-while-loops.test.js.map +1 -0
  674. package/dist/ir/parameter-versions.d.ts +25 -0
  675. package/dist/ir/parameter-versions.js +300 -0
  676. package/dist/ir/parameter-versions.js.map +1 -0
  677. package/dist/ir/runtime-features.d.ts +34 -13
  678. package/dist/ir/runtime-features.js +177 -39
  679. package/dist/ir/runtime-features.js.map +1 -1
  680. package/dist/ir/serialize.d.ts +12 -2
  681. package/dist/ir/serialize.js +16 -3
  682. package/dist/ir/serialize.js.map +1 -1
  683. package/dist/ir/serialize.test.js +17 -0
  684. package/dist/ir/serialize.test.js.map +1 -1
  685. package/dist/ir/traverse.js +18 -6
  686. package/dist/ir/traverse.js.map +1 -1
  687. package/dist/ir/validate.js +167 -40
  688. package/dist/ir/validate.js.map +1 -1
  689. package/dist/library/ir-policy.js +3 -0
  690. package/dist/library/ir-policy.js.map +1 -1
  691. package/dist/native/cache.d.ts +6 -1
  692. package/dist/native/cache.js +28 -5
  693. package/dist/native/cache.js.map +1 -1
  694. package/dist/native/cache.test.js +16 -2
  695. package/dist/native/cache.test.js.map +1 -1
  696. package/dist/native/cli.js +21 -1
  697. package/dist/native/cli.js.map +1 -1
  698. package/dist/native/compiler.js +8 -6
  699. package/dist/native/compiler.js.map +1 -1
  700. package/dist/native/executable-cache.d.ts +1 -1
  701. package/dist/native/executable-cache.js +2 -2
  702. package/dist/native/executable-cache.js.map +1 -1
  703. package/dist/native/prepare.d.ts +4 -2
  704. package/dist/native/prepare.js +130 -32
  705. package/dist/native/prepare.js.map +1 -1
  706. package/dist/native/prepare.test.js +96 -20
  707. package/dist/native/prepare.test.js.map +1 -1
  708. package/dist/native/sanitizer.test.js +2 -0
  709. package/dist/native/sanitizer.test.js.map +1 -1
  710. package/dist/native/text-file.d.ts +13 -3
  711. package/dist/native/text-file.js +63 -9
  712. package/dist/native/text-file.js.map +1 -1
  713. package/dist/native/text-file.test.d.ts +1 -0
  714. package/dist/native/text-file.test.js +49 -0
  715. package/dist/native/text-file.test.js.map +1 -0
  716. package/dist/native/toolchain.js +4 -4
  717. package/dist/native/toolchain.js.map +1 -1
  718. package/dist/native/toolchain.test.js +3 -3
  719. package/dist/native/toolchain.test.js.map +1 -1
  720. package/package.json +21 -21
  721. package/shims/chalk/v5.ts +688 -0
  722. package/shims/hono-node-server/v2.ts +645 -0
  723. package/shims/hot-shots/client.ts +1126 -0
  724. package/shims/hot-shots/v8-unix-dgram.ts +8 -0
  725. package/shims/hot-shots/v8.ts +8 -0
  726. package/surface-manifest.json +27 -7
@@ -3,8 +3,8 @@ import { keyedHelperName } from "./lowering/stable-names.js";
3
3
  import { mockCallRecordType, mockContextType } from "./mock-shapes.js";
4
4
  import * as ts from "./ts7/adapter.js";
5
5
  import { bodyReadsArguments } from "./arguments-usage.js";
6
- import { BYTES_ELEMENT_NAME, arrayOf, isDynTypedRefType, BOOL, bytesOf, canConvertToDyn, canDynCheckTo, CHILD_T, CRYPTOHASH_T, CRYPTOHMAC_T, DATE_T, DYN, F64, funcOf, isSupportedArrayElem, isSupportedIndexValue, isSupportedMapKey, isSupportedMapValue, isSupportedSetElem, isUnitType, mapOf, NULL_T, PROCSTREAM_T, RUNTIME_EMITTER_CLASS, RUNTIME_ERROR_CLASSES, RUNTIME_STREAM_CLASSES, ZLIB_STREAM_MODES, setOf, STRING, SYMBOL_T, typeEquals, typeKey, maybePromiseUnionArmsOk, unionContainerArmsOk, UNDEFINED_T, VOID, } from "../ir/ir.js";
7
- import { BIGINT_T } from "../ir/ir.js";
6
+ import { BYTES_ELEMENT_NAME, arrayOf, isDynTypedRefType, BOOL, bytesOf, canConvertToDyn, canDynCheckTo, CHILD_T, CRYPTOHASH_T, CRYPTOHMAC_T, DATE_T, DYN, F64, funcOf, isSupportedArrayElem, isSupportedIndexValue, isSupportedMapKey, isSupportedMapValue, isSupportedSetElem, iterableArmsElem, isUnitType, mapOf, NULL_T, PROCSTREAM_T, RUNTIME_EMITTER_CLASS, RUNTIME_ERROR_CLASSES, RUNTIME_STREAM_CLASSES, ZLIB_STREAM_MODES, setOf, STRING, SYMBOL_T, typeEquals, typeKey, maybePromiseUnionArmsOk, unionContainerArmsOk, UNDEFINED_T, VOID, } from "../ir/ir.js";
7
+ import { BIGINT_T, KEY_ORDER_FIELD } from "../ir/ir.js";
8
8
  import { literalValues } from "./literal-values.js";
9
9
  import { remapUnionDiscriminant } from "./union-discriminants.js";
10
10
  import { isJsSourceFile, isNodeTypesPath } from "./program.js";
@@ -121,6 +121,7 @@ export const CRYPTO_KEY_OPTION_DYN_TYPES = new Set([
121
121
  "PrivateKeyInput",
122
122
  "PublicKeyInput",
123
123
  "RSAKeyPairKeyObjectOptions",
124
+ "X25519KeyPairOptions",
124
125
  "RSAKeyPairOptions",
125
126
  "SignKeyObjectInput",
126
127
  "SignPrivateKeyInput",
@@ -150,6 +151,9 @@ export const FETCH_AMBIENT_TYPES = [
150
151
  "ReadableStreamReadResult",
151
152
  "ReadableStreamReadValueResult",
152
153
  "ReadableStreamReadDoneResult",
154
+ "TransformStream",
155
+ "WritableStream",
156
+ "WritableStreamDefaultWriter",
153
157
  "Blob",
154
158
  "File",
155
159
  "BlobPropertyBag",
@@ -446,6 +450,20 @@ export class ShapeRegistry {
446
450
  const missing = extra.filter((name) => !order.includes(name));
447
451
  return missing.length === 0 ? order : [...order, ...missing];
448
452
  }
453
+ /** Gives a shape with orderVariants its KEY_ORDER_FIELD, in place,
454
+ * after the bodies lowered (key-order-witness.ts adds the field to each
455
+ * of the shape's literals). Allocation zeroes it, which every other
456
+ * construction keeps. */
457
+ addKeyOrderField(shapeId) {
458
+ const shape = this.byId.get(shapeId);
459
+ if (!shape || shape.fields.some((f) => f.name === KEY_ORDER_FIELD))
460
+ return;
461
+ shape.fields = [...shape.fields, { name: KEY_ORDER_FIELD, type: F64 }].sort((a, b) => a.name < b.name ? -1 : a.name > b.name ? 1 : 0);
462
+ this.revision++;
463
+ const key = this.keyOf(shape.fields, false, shape.indexValue);
464
+ if (!this.byKey.has(key))
465
+ this.byKey.set(key, shapeId);
466
+ }
449
467
  /** Adds optional fields to an interned shape in place: members a type
450
468
  * assertion attaches to the shape's values (`r as R & { tag: string }`
451
469
  * followed by `view.tag = ...`; see assertion-members.ts). Every value
@@ -1067,8 +1085,16 @@ function genChannels(yieldTs, retTs, nextTs, ctx) {
1067
1085
  if (!nextT || nextT.kind === "void" || nextT.kind === "nullT")
1068
1086
  return null;
1069
1087
  const ownChannel = (t) => t.kind === "f64" || t.kind === "bool" || t.kind === "string";
1088
+ // A record yield channel keeps its type beside a dyn return (an
1089
+ // `IterableIterator<Row>`). A record return channel beside a dyn yield
1090
+ // does not: the value a delegating `yield*` answers (Effect.gen's
1091
+ // generators) is often an object whose methods a record would drop.
1070
1092
  const dynMix = (yieldT.kind === "dyn" && retT.kind !== "dyn" && retT.kind !== "void" && !ownChannel(retT)) ||
1071
- (retT.kind === "dyn" && yieldT.kind !== "dyn" && yieldT.kind !== "void" && !ownChannel(yieldT));
1093
+ (retT.kind === "dyn" &&
1094
+ yieldT.kind !== "dyn" &&
1095
+ yieldT.kind !== "void" &&
1096
+ !ownChannel(yieldT) &&
1097
+ yieldT.kind !== "record");
1072
1098
  if (dynMix)
1073
1099
  return { yieldT: DYN, retT: DYN, nextT };
1074
1100
  return { yieldT, retT, nextT };
@@ -1489,9 +1515,15 @@ function mapTypeInner(type, ctx) {
1489
1515
  // TypeScript's intrinsic globalThis symbol has no declaration. A stored
1490
1516
  // reference needs native object identity, including var's undefined state.
1491
1517
  const intrinsic = type.getSymbol();
1492
- if (intrinsic !== undefined &&
1493
- ts.symbolName(intrinsic) === "globalThis" &&
1494
- intrinsic.declarations.length === 0)
1518
+ const isIntrinsicGlobal = (symbol) => symbol !== undefined &&
1519
+ ts.symbolName(symbol) === "globalThis" &&
1520
+ symbol.declarations.length === 0;
1521
+ if (isIntrinsicGlobal(intrinsic))
1522
+ return DYN;
1523
+ // `typeof globalThis & { key?: T }` (the global-singleton spelling) is the
1524
+ // same global object with declared extra members.
1525
+ if (type.isIntersectionType() &&
1526
+ ts.constituentTypes(type).some((part) => isIntrinsicGlobal(part.getSymbol())))
1495
1527
  return DYN;
1496
1528
  if (ctx.jsDynamicDeclaration !== undefined && intrinsic !== undefined) {
1497
1529
  const objectLiteral = (intrinsic.flags & ts.SymbolFlags.ObjectLiteral) !== 0;
@@ -1994,6 +2026,23 @@ function mapTypeInner(type, ctx) {
1994
2026
  return arrayOf(unitOnlyUnion(unions));
1995
2027
  if (tupleShape?.elementFlags === undefined)
1996
2028
  return null;
2029
+ // A leading-required tuple ending in a rest element whose positions
2030
+ // all share one type (`[string, ...string[]]`, the non-empty list)
2031
+ // is an array of that type: every read, write and method behaves as
2032
+ // the array's, and tsc already proves the required positions exist.
2033
+ const flags = tupleShape.elementFlags;
2034
+ if (flags.length >= 2 &&
2035
+ (flags[flags.length - 1] & ts.ElementFlags.Rest) !== 0 &&
2036
+ flags.slice(0, -1).every((f) => (f & ts.ElementFlags.Required) !== 0)) {
2037
+ const elems = args.map((a) => mapType(a, ctx));
2038
+ const first = elems[0];
2039
+ if (first &&
2040
+ first.kind !== "void" &&
2041
+ isSupportedArrayElem(first) &&
2042
+ elems.every((e) => e !== null && typeEquals(e, first)))
2043
+ return arrayOf(first);
2044
+ return null;
2045
+ }
1997
2046
  // Optional/rest elements have no fixed native tuple layout.
1998
2047
  if (tupleShape.elementFlags.some((f) => !(f & ts.ElementFlags.Required))) {
1999
2048
  return null;
@@ -2585,7 +2634,7 @@ function mapTypeInner(type, ctx) {
2585
2634
  }
2586
2635
  if (psym &&
2587
2636
  FETCH_AMBIENT_TYPES.includes(ts.symbolName(psym)) &&
2588
- !(ts.symbolName(psym) === "ReadableStream" &&
2637
+ !((ts.symbolName(psym) === "ReadableStream" || ts.symbolName(psym) === "WritableStream") &&
2589
2638
  psym.declarations.some((d) => ts.isInterfaceDeclaration(d) && isDeclaredInAmbientNamespace(d, "NodeJS"))) &&
2590
2639
  psym.declarations.some((d) => (ts.isInterfaceDeclaration(d) || ts.isClassDeclaration(d)) &&
2591
2640
  ctx.isStdlibFile(ts.getSourceFileOfNode(d)))) {
@@ -2653,6 +2702,9 @@ function mapTypeInner(type, ctx) {
2653
2702
  // The runtime rejects reference kinds without a weak lifetime contract.
2654
2703
  if (isStdlibInterface("WeakMap") || isStdlibInterface("WeakSet"))
2655
2704
  return DYN;
2705
+ // FinalizationRegistry is a native handle with register and unregister.
2706
+ if (isStdlibInterface("FinalizationRegistry"))
2707
+ return DYN;
2656
2708
  // Set<T>: Map's sibling — same provenance rule and key domain.
2657
2709
  // Anything else stays unmapped;
2658
2710
  // the `new Set` lowering names the offending element type specifically.
@@ -2669,10 +2721,9 @@ function mapTypeInner(type, ctx) {
2669
2721
  const collectionView = mapCollectionView(widened, ctx);
2670
2722
  if (collectionView)
2671
2723
  return collectionView;
2672
- // Date: a TimeClip'd epoch-millisecond scalar in the static runtime.
2673
- // This supports stored/passed values and the read-only getter slice;
2674
- // identity and mutation stay fenced because the scalar deliberately
2675
- // carries no object identity.
2724
+ // Date: a refcounted object holding its TimeClip'd time value (ScrDate),
2725
+ // shared with the checked-dynamic Date handle, so it keeps its identity
2726
+ // through every slot and through `unknown`. Setters stay fenced.
2676
2727
  if (isStdlibInterface("Date"))
2677
2728
  return DATE_T;
2678
2729
  // RegExp: a reference to the lib RegExp interface — provenance, not the
@@ -3260,8 +3311,10 @@ function mapTypeInner(type, ctx) {
3260
3311
  // Mixed dyn/concrete value channels share checked storage, so either
3261
3312
  // branch of the result record has the same representation. A number,
3262
3313
  // boolean or string channel keeps its own type beside a dyn one (the
3263
- // `Generator<number>` defaults): its values ride OUT typed and box only
3264
- // when the result record is built.
3314
+ // `Generator<number>` default), and so does a record yield channel beside
3315
+ // a dyn return (`IterableIterator<Row>`): its values ride OUT typed and box
3316
+ // only when the result record is built, so for-of and spread read them
3317
+ // back unchecked.
3265
3318
  if (isStdlibInterface("Generator") ||
3266
3319
  isStdlibInterface("AsyncGenerator") ||
3267
3320
  isStdlibInterface("IterableIterator") ||
@@ -3285,6 +3338,14 @@ function mapTypeInner(type, ctx) {
3285
3338
  ...channels,
3286
3339
  };
3287
3340
  }
3341
+ // Iterable<T>: the iterable union (iterableUnionType) — the source value
3342
+ // itself in its own arm, so an array stays the same multi-pass object and
3343
+ // a generator stays single-pass.
3344
+ if (isStdlibInterface("Iterable")) {
3345
+ const arg = checker.getTypeArguments(widened)[0];
3346
+ const elem = arg ? mapType(arg, ctx) : null;
3347
+ return elem ? iterableUnionType(elem, ctx.shapes, unions) : null;
3348
+ }
3288
3349
  // IteratorResult<T, TReturn> — the checker's type of `g.next()` (an
3289
3350
  // alias for IteratorYieldResult<T> | IteratorReturnResult<TReturn>):
3290
3351
  // maps to the SAME interned record genResume answers, so `const r =
@@ -3402,6 +3463,13 @@ function mapTypeInner(type, ctx) {
3402
3463
  fields.sort((a, b) => (a.name < b.name ? -1 : a.name > b.name ? 1 : 0));
3403
3464
  return { kind: "record", shapeId: ctx.shapes.intern(fields, false, undefined, order) };
3404
3465
  }
3466
+ // crypto.getCipherInfo's result is Node's info object itself, read as a
3467
+ // checked-dynamic value: Node leaves out the fields a cipher lacks,
3468
+ // including the nid the declaration requires, so a record cannot hold
3469
+ // every result.
3470
+ if (isStdlibInterface("CipherInfo") &&
3471
+ psym.declarations.some((d) => ts.isInterfaceDeclaration(d) && isDeclaredInAmbientModule(d, "crypto")))
3472
+ return DYN;
3405
3473
  // Filesystem options are data records. Keep their declared optional fields
3406
3474
  // instead of allowing arbitrary standard-library interfaces into records.
3407
3475
  if (((psym !== undefined && ts.symbolName(psym) === "FileReadOptions") ||
@@ -3889,6 +3957,10 @@ function mapTypeInner(type, ctx) {
3889
3957
  return hybrid;
3890
3958
  }
3891
3959
  const callSigs = checker.getCallSignatures(widened);
3960
+ // AsyncLocalStorage.snapshot()'s generic runner is a dyn function value
3961
+ // (als.snapshot), called through the dyn call path.
3962
+ if (callSigs.length === 1 && isAsyncLocalStorageSnapshot(callSigs[0], ctx))
3963
+ return DYN;
3892
3964
  if (callSigs.length === 1)
3893
3965
  return mapCallSignature(callSigs[0], ctx);
3894
3966
  // Records: object types whose members are all data properties (shorthand
@@ -4178,9 +4250,10 @@ function mapTypeInner(type, ctx) {
4178
4250
  }
4179
4251
  if (arms.some((a) => a.kind === "void" ||
4180
4252
  a.kind === "union" ||
4181
- a.kind === "date" ||
4182
4253
  a.kind === "dyn" ||
4183
- a.kind === "generator") ||
4254
+ // A generator arm only comes from an Iterable<T> (an optional
4255
+ // one keeps its unit arms beside the iterable union's).
4256
+ (a.kind === "generator" && iterableArmsElem(arms) === null)) ||
4184
4257
  !maybePromiseUnionOk(parts, arms, ctx)) {
4185
4258
  return null;
4186
4259
  }
@@ -4210,6 +4283,24 @@ function mapTypeInner(type, ctx) {
4210
4283
  /** One non-overloaded call signature's func type (mapTypeInner's
4211
4284
  * single-signature rule; erasedOverloadMemberType maps each overload of a
4212
4285
  * member through it). */
4286
+ /** Whether `sig` is the function type AsyncLocalStorage.snapshot() returns:
4287
+ * declared as that static method's return type in the async_hooks module
4288
+ * of the standard library declarations. */
4289
+ function isAsyncLocalStorageSnapshot(sig, ctx) {
4290
+ const decl = sig.declaration;
4291
+ if (decl === undefined || !ts.isFunctionTypeNode(decl))
4292
+ return false;
4293
+ const method = decl.parent;
4294
+ return (method !== undefined &&
4295
+ ts.isMethodDeclaration(method) &&
4296
+ ts.isIdentifier(method.name) &&
4297
+ method.name.text === "snapshot" &&
4298
+ method.parent !== undefined &&
4299
+ ts.isClassDeclaration(method.parent) &&
4300
+ method.parent.name?.text === "AsyncLocalStorage" &&
4301
+ ctx.isStdlibFile(ts.getSourceFileOfNode(decl)) &&
4302
+ isDeclaredInAmbientModule(decl, "async_hooks"));
4303
+ }
4213
4304
  function mapCallSignature(sig, ctx) {
4214
4305
  const { checker } = ctx;
4215
4306
  if (sig.getTypeParameters().length && ctx.erasingSignature !== sig)
@@ -4983,6 +5074,53 @@ function constAssertedEmptyArrayProp(p) {
4983
5074
  return false;
4984
5075
  return underConstAssertion(d);
4985
5076
  }
5077
+ /** A TypeScript property assignment `name: []` whose type is `never[]`. */
5078
+ function emptyNeverArrayProp(p, fieldTs, checker) {
5079
+ const d = p.valueDeclaration;
5080
+ if (d === undefined || !ts.isPropertyAssignment(d))
5081
+ return false;
5082
+ if (isJsSourceFile(ts.getSourceFileOfNode(d)))
5083
+ return false;
5084
+ if (!ts.isArrayLiteralExpression(d.initializer) || d.initializer.elements.nodes.length > 0)
5085
+ return false;
5086
+ return (checker.isArrayType(fieldTs) &&
5087
+ (checker.getTypeArguments(fieldTs)[0].flags & ts.TypeFlags.Never) !== 0);
5088
+ }
5089
+ /** A JavaScript object literal's property typed `never[]` (`{ issues: [] }`).
5090
+ * Nothing checks a JavaScript file's later writes, which can push any value
5091
+ * onto it (`ctx.common.issues.push(issue)`), so it holds the checked-dynamic
5092
+ * array rather than never's f64 element array. */
5093
+ function jsNeverArrayProp(p, fieldTs, checker) {
5094
+ return (jsObjectLiteralProperty(p) &&
5095
+ checker.isArrayType(fieldTs) &&
5096
+ (checker.getTypeArguments(fieldTs)[0].flags & ts.TypeFlags.Never) !== 0);
5097
+ }
5098
+ /** A JavaScript object literal's property (`{ lastComponent: undefined }`,
5099
+ * `{ user: null }`). Nothing checks a JavaScript file's later writes, which
5100
+ * can store any value in it (`path.lastComponent = { ... }`), so a
5101
+ * property whose only initializer is a unit holds the checked-dynamic value
5102
+ * rather than the unit-only union. */
5103
+ function isUnitOnlyIr(t, ctx) {
5104
+ if (t.kind !== "union")
5105
+ return false;
5106
+ const def = ctx.unions.get(t.unionId);
5107
+ return def !== undefined && def.arms.every((arm) => isUnitType(arm));
5108
+ }
5109
+ /** A property a JavaScript object literal declares. The checker also adds
5110
+ * each missing property, optional and `undefined`, to every literal of a
5111
+ * union of literals (`{ _tag, value } | { _tag, error }` gains
5112
+ * `error?: undefined` and `value?: undefined`); those keep their unit-only
5113
+ * type, so a literal still converts to the one arm whose properties it
5114
+ * has. */
5115
+ function jsObjectLiteralProperty(p) {
5116
+ const d = p.valueDeclaration;
5117
+ // `__proto__: null` sets the literal's prototype; it declares no property.
5118
+ return (d !== undefined &&
5119
+ (ts.isPropertyAssignment(d) || ts.isShorthandPropertyAssignment(d)) &&
5120
+ ts.symbolName(p) !== "__proto__" &&
5121
+ (p.flags & ts.SymbolFlags.Optional) === 0 &&
5122
+ isJsSourceFile(ts.getSourceFileOfNode(d)));
5123
+ }
4986
5124
  function mapGenericAwaitedAlias(type, ctx) {
4987
5125
  const { resolveTypeParam } = ctx;
4988
5126
  if (!resolveTypeParam)
@@ -5545,6 +5683,40 @@ export function unitOnlyUnion(unions) {
5545
5683
  arms.sort((a, b) => (typeKey(a) < typeKey(b) ? -1 : 1));
5546
5684
  return { kind: "union", unionId: unions.intern(arms) };
5547
5685
  }
5686
+ /** `Iterable<T>`: a union whose arms are the sources that keep their own
5687
+ * representation — `T[]`, a `Set<T>`, a `Map<K, V>` (T the `[K, V]`
5688
+ * tuple), a string (T string) — and a generator over T, which also holds
5689
+ * every other iterator (Map/Set and array iterators adapt into one). The
5690
+ * generator arm marks the union as iterable (iterableArmsElem): no other
5691
+ * union has one. Null when T has no array or generator form. */
5692
+ export function iterableUnionType(elem, shapes, unions) {
5693
+ if (elem.kind === "void" || elem.kind === "generator" || !isSupportedArrayElem(elem))
5694
+ return null;
5695
+ if (!genResultRecord(elem, VOID, shapes, unions))
5696
+ return null;
5697
+ const arms = [
5698
+ { kind: "array", elem },
5699
+ { kind: "generator", yieldT: elem, retT: VOID, nextT: UNDEFINED_T },
5700
+ ];
5701
+ const elemArms = elem.kind === "union" ? unions.get(elem.unionId)?.arms : undefined;
5702
+ if (isSupportedSetElem(elem, elemArms))
5703
+ arms.push({ kind: "set", elem });
5704
+ if (elem.kind === "string")
5705
+ arms.push(STRING);
5706
+ if (elem.kind === "record") {
5707
+ const shape = shapes.get(elem.shapeId);
5708
+ const [k, v] = shape?.fields ?? [];
5709
+ if (shape?.tuple &&
5710
+ shape.fields.length === 2 &&
5711
+ k?.name === "0" &&
5712
+ v?.name === "1" &&
5713
+ isSupportedMapKey(k.type, k.type.kind === "union" ? unions.get(k.type.unionId)?.arms : undefined) &&
5714
+ isSupportedMapValue(v.type))
5715
+ arms.push({ kind: "map", key: k.type, value: v.type });
5716
+ }
5717
+ arms.sort((a, b) => (typeKey(a) < typeKey(b) ? -1 : 1));
5718
+ return { kind: "union", unionId: unions.intern(arms) };
5719
+ }
5548
5720
  /** The IteratorResult record of a generator's value channels: `{ done:
5549
5721
  * boolean, value: V }` where V is dyn (an any/unknown channel) or the
5550
5722
  * canonical union of the yield arms, the return arms (when the return
@@ -5570,7 +5742,7 @@ export function genResultRecord(yieldT, retT, shapes, unions) {
5570
5742
  byKey.set(typeKey(a), a);
5571
5743
  return true;
5572
5744
  }
5573
- if (t.kind === "regex" || t.kind === "date" || t.kind === "generator") {
5745
+ if (t.kind === "regex" || t.kind === "generator") {
5574
5746
  return false; // no legal union arm exists for these kinds
5575
5747
  }
5576
5748
  byKey.set(typeKey(t), t);
@@ -5645,16 +5817,16 @@ export function withUnitArm(t, kind, unions) {
5645
5817
  const def = unions.get(t.unionId);
5646
5818
  if (!def)
5647
5819
  return null;
5648
- if (def.arms.some((a) => a.kind === "date"))
5649
- return null;
5650
5820
  if (def.arms.some((a) => a.kind === kind))
5651
5821
  return t;
5652
5822
  const arms = [...def.arms, unit];
5823
+ // Date and Promise arms beside other data arms have no union home.
5824
+ if (!unionContainerArmsOk(arms))
5825
+ return null;
5653
5826
  arms.sort((a, b) => (typeKey(a) < typeKey(b) ? -1 : 1));
5654
5827
  return { kind: "union", unionId: unions.transform(def, arms) };
5655
5828
  }
5656
5829
  if (t.kind === "void" ||
5657
- t.kind === "date" ||
5658
5830
  t.kind === "dyn" ||
5659
5831
  // A bare unit field type cannot occur (units live only inside unions),
5660
5832
  // but guard against constructing a single-arm union from one.
@@ -6667,6 +6839,24 @@ function wideningAddedProperties(type, props, ctx) {
6667
6839
  }
6668
6840
  return added;
6669
6841
  }
6842
+ /** Whether `type` is an interface one of whose `extends` clauses names a
6843
+ * type the checker answers `any` (or an error type) for. */
6844
+ function interfaceExtendsAny(type, checker) {
6845
+ const symbol = type.getSymbol();
6846
+ if (symbol === undefined || (symbol.flags & ts.SymbolFlags.Interface) === 0)
6847
+ return false;
6848
+ for (const decl of symbol.declarations) {
6849
+ if (!ts.isInterfaceDeclaration(decl))
6850
+ continue;
6851
+ for (const clause of decl.heritageClauses?.nodes ?? []) {
6852
+ for (const base of clause.types.nodes) {
6853
+ if ((checker.getTypeAtLocation(base).flags & ts.TypeFlags.Any) !== 0)
6854
+ return true;
6855
+ }
6856
+ }
6857
+ }
6858
+ return false;
6859
+ }
6670
6860
  function mapRecordTypeInner(widened, ctx) {
6671
6861
  const { checker, shapes } = ctx;
6672
6862
  if (checker.getConstructSignatures(widened).length > 0)
@@ -6682,6 +6872,14 @@ function mapRecordTypeInner(widened, ctx) {
6682
6872
  const widenedSym = widened.getSymbol();
6683
6873
  if (widenedSym !== undefined && (widenedSym.flags & ts.SymbolFlags.Enum) !== 0)
6684
6874
  return null;
6875
+ // An interface extending a type the checker answers `any` for (in the
6876
+ // compiled world, a package type computed from members only its .d.ts
6877
+ // declares, such as `interface P extends z.infer<typeof S>`) has members
6878
+ // the checker cannot list: its own declared fields are not the whole
6879
+ // object. The value is checked-dynamic, never a record of the declared
6880
+ // fields alone.
6881
+ if (interfaceExtendsAny(widened, checker))
6882
+ return DYN;
6685
6883
  // An index signature maps to a hybrid shape: declared fields keep
6686
6884
  // struct slots, undeclared keys ride the shape's overflow map, valued
6687
6885
  // uniformly by the signature's value type (`unknown` → dyn — a model-pricing table's
@@ -6951,6 +7149,14 @@ function mapRecordTypeInner(widened, ctx) {
6951
7149
  constAssertedEmptyArrayProp(p)) {
6952
7150
  pt = arrayOf(unitOnlyUnion(ctx.unions));
6953
7151
  }
7152
+ // A TypeScript property initialized with an empty literal and typed
7153
+ // `never[]` (`const out = { files: [] }`) holds no element, so it maps
7154
+ // like the empty tuple: the unit-only element array, which a
7155
+ // destination's typed array field (`files: string[]`) receives through
7156
+ // the checked empty-array lift. never's f64 element would make it a
7157
+ // `number[]` field.
7158
+ if (pt?.kind === "array" && emptyNeverArrayProp(p, fieldTs, checker))
7159
+ pt = arrayOf(unitOnlyUnion(ctx.unions));
6954
7160
  if (pt === null && (fieldTs.flags & ts.TypeFlags.Any) !== 0)
6955
7161
  pt = DYN;
6956
7162
  // An `any[]` field (`list: any[]` in an SDK's message type, also
@@ -6970,6 +7176,10 @@ function mapRecordTypeInner(widened, ctx) {
6970
7176
  // omits the undefined arm exactly like an omitted optional.
6971
7177
  if (pt?.kind === "void" && isUnitOnlyTsType(fieldTs, ctx.resolveTypeParam))
6972
7178
  pt = unitOnlyUnion(ctx.unions);
7179
+ if (pt !== null && isUnitOnlyIr(pt, ctx) && jsObjectLiteralProperty(p))
7180
+ pt = DYN;
7181
+ if (pt?.kind === "array" && jsNeverArrayProp(p, fieldTs, checker))
7182
+ pt = DYN;
6973
7183
  // dyn FIELDS map now (`{ v: unknown }`, `[string, unknown]` tuples):
6974
7184
  // the slot carries a dyn value exactly like an `unknown`-valued
6975
7185
  // overflow entry — same RC adapters, same dynFrom conversion on the
@@ -7132,7 +7342,6 @@ function armHasUnionHome(arm) {
7132
7342
  case "void":
7133
7343
  case "union":
7134
7344
  case "regex":
7135
- case "date":
7136
7345
  case "generator":
7137
7346
  case "dyn":
7138
7347
  return false;