@scriptc/compiler 0.1.7 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1043) hide show
  1. package/ambient/scriptc-node-fallback.d.ts +98 -39
  2. package/ambient/scriptc-overrides.d.ts +10 -6
  3. package/ambient/scriptc.d.ts +15 -0
  4. package/dist/backend/build-cache.d.ts +1 -3
  5. package/dist/backend/build-cache.js +3 -22
  6. package/dist/backend/build-cache.js.map +1 -1
  7. package/dist/backend/cache-root.d.ts +3 -0
  8. package/dist/backend/cache-root.js +23 -0
  9. package/dist/backend/cache-root.js.map +1 -0
  10. package/dist/backend/cycle-analysis.d.ts +15 -0
  11. package/dist/backend/cycle-analysis.js +108 -0
  12. package/dist/backend/cycle-analysis.js.map +1 -0
  13. package/dist/backend/cycle-analysis.test.js +124 -0
  14. package/dist/backend/cycle-analysis.test.js.map +1 -0
  15. package/dist/backend/executable-features.d.ts +4 -0
  16. package/dist/backend/executable-features.js +42 -0
  17. package/dist/backend/executable-features.js.map +1 -0
  18. package/dist/backend/external-c.d.ts +5 -27
  19. package/dist/backend/external-c.js +5 -40
  20. package/dist/backend/external-c.js.map +1 -1
  21. package/dist/backend/ffi-callbacks.d.ts +2 -3
  22. package/dist/backend/ffi-callbacks.js +2 -3
  23. package/dist/backend/ffi-callbacks.js.map +1 -1
  24. package/dist/backend/library-identity-markers.d.ts +4 -9
  25. package/dist/backend/library-identity-markers.js +11 -49
  26. package/dist/backend/library-identity-markers.js.map +1 -1
  27. package/dist/backend/library-pack.d.ts +5 -0
  28. package/dist/backend/library-pack.js +123 -0
  29. package/dist/backend/library-pack.js.map +1 -0
  30. package/dist/backend/link-plan-core.d.ts +20 -0
  31. package/dist/backend/link-plan-core.js +18 -0
  32. package/dist/backend/link-plan-core.js.map +1 -0
  33. package/dist/backend/link-plan.d.ts +1 -1
  34. package/dist/backend/link-plan.js +16 -17
  35. package/dist/backend/link-plan.js.map +1 -1
  36. package/dist/backend/link-trace.d.ts +2 -0
  37. package/dist/backend/link-trace.js +24 -0
  38. package/dist/backend/link-trace.js.map +1 -0
  39. package/dist/backend/linker.js +1 -1
  40. package/dist/backend/linker.js.map +1 -1
  41. package/dist/backend/literals.d.ts +9 -0
  42. package/dist/backend/literals.js +35 -0
  43. package/dist/backend/literals.js.map +1 -0
  44. package/dist/backend/literals.test.d.ts +1 -0
  45. package/dist/backend/literals.test.js +53 -0
  46. package/dist/backend/literals.test.js.map +1 -0
  47. package/dist/backend/llvm/blocks.d.ts +2 -0
  48. package/dist/backend/llvm/blocks.js +9 -4
  49. package/dist/backend/llvm/blocks.js.map +1 -1
  50. package/dist/backend/llvm/blocks.test.d.ts +1 -0
  51. package/dist/backend/llvm/blocks.test.js +91 -0
  52. package/dist/backend/llvm/blocks.test.js.map +1 -0
  53. package/dist/backend/llvm/classes.d.ts +14 -8
  54. package/dist/backend/llvm/classes.js +88 -30
  55. package/dist/backend/llvm/classes.js.map +1 -1
  56. package/dist/backend/llvm/common.d.ts +5 -1
  57. package/dist/backend/llvm/common.js +45 -4
  58. package/dist/backend/llvm/common.js.map +1 -1
  59. package/dist/backend/llvm/debug-info.js +2 -7
  60. package/dist/backend/llvm/debug-info.js.map +1 -1
  61. package/dist/backend/llvm/debug-info.test.d.ts +1 -0
  62. package/dist/backend/llvm/debug-info.test.js +110 -0
  63. package/dist/backend/llvm/debug-info.test.js.map +1 -0
  64. package/dist/backend/llvm/dyn.d.ts +21 -2
  65. package/dist/backend/llvm/dyn.js +647 -251
  66. package/dist/backend/llvm/dyn.js.map +1 -1
  67. package/dist/backend/llvm/emitter.d.ts +596 -1
  68. package/dist/backend/llvm/emitter.js +769 -425
  69. package/dist/backend/llvm/emitter.js.map +1 -1
  70. package/dist/backend/llvm/emitter.test.d.ts +1 -0
  71. package/dist/backend/llvm/emitter.test.js +179 -0
  72. package/dist/backend/llvm/emitter.test.js.map +1 -0
  73. package/dist/backend/llvm/expr-async.js +23 -14
  74. package/dist/backend/llvm/expr-async.js.map +1 -1
  75. package/dist/backend/llvm/expr-bytes.d.ts +2 -2
  76. package/dist/backend/llvm/expr-bytes.js +60 -31
  77. package/dist/backend/llvm/expr-bytes.js.map +1 -1
  78. package/dist/backend/llvm/expr-callbacks.d.ts +1 -1
  79. package/dist/backend/llvm/expr-callbacks.js +25 -22
  80. package/dist/backend/llvm/expr-callbacks.js.map +1 -1
  81. package/dist/backend/llvm/expr-calls.js +136 -35
  82. package/dist/backend/llvm/expr-calls.js.map +1 -1
  83. package/dist/backend/llvm/expr-containers.d.ts +1 -1
  84. package/dist/backend/llvm/expr-containers.js +43 -14
  85. package/dist/backend/llvm/expr-containers.js.map +1 -1
  86. package/dist/backend/llvm/expr-context.d.ts +5 -260
  87. package/dist/backend/llvm/expr-control.js +10 -6
  88. package/dist/backend/llvm/expr-control.js.map +1 -1
  89. package/dist/backend/llvm/expr-dispatch.d.ts +1 -1
  90. package/dist/backend/llvm/expr-dispatch.js +2 -0
  91. package/dist/backend/llvm/expr-dispatch.js.map +1 -1
  92. package/dist/backend/llvm/expr-dynamic.js +78 -81
  93. package/dist/backend/llvm/expr-dynamic.js.map +1 -1
  94. package/dist/backend/llvm/expr-island.d.ts +1 -1
  95. package/dist/backend/llvm/expr-island.js +11 -7
  96. package/dist/backend/llvm/expr-island.js.map +1 -1
  97. package/dist/backend/llvm/expr-primitives.d.ts +1 -1
  98. package/dist/backend/llvm/expr-primitives.js +62 -31
  99. package/dist/backend/llvm/expr-primitives.js.map +1 -1
  100. package/dist/backend/llvm/expr-primitives.test.js +1 -1
  101. package/dist/backend/llvm/expr-records.d.ts +5 -1
  102. package/dist/backend/llvm/expr-records.js +54 -7
  103. package/dist/backend/llvm/expr-records.js.map +1 -1
  104. package/dist/backend/llvm/expr-stream-bridges.d.ts +4 -4
  105. package/dist/backend/llvm/expr-stream-bridges.js +220 -131
  106. package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
  107. package/dist/backend/llvm/expr-stream-bridges.test.d.ts +1 -0
  108. package/dist/backend/llvm/expr-stream-bridges.test.js +55 -0
  109. package/dist/backend/llvm/expr-stream-bridges.test.js.map +1 -0
  110. package/dist/backend/llvm/expr-stream-callbacks.d.ts +1 -1
  111. package/dist/backend/llvm/expr-stream-callbacks.js +12 -12
  112. package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
  113. package/dist/backend/llvm/layouts.d.ts +19 -0
  114. package/dist/backend/llvm/layouts.js +12 -0
  115. package/dist/backend/llvm/layouts.js.map +1 -0
  116. package/dist/backend/llvm/lib-abi.d.ts +19 -0
  117. package/dist/backend/llvm/lib-abi.js +82 -0
  118. package/dist/backend/llvm/lib-abi.js.map +1 -0
  119. package/dist/backend/llvm/lib-connect.d.ts +2 -0
  120. package/dist/backend/llvm/lib-connect.js +51 -0
  121. package/dist/backend/llvm/lib-connect.js.map +1 -0
  122. package/dist/backend/llvm/lib-datagram.d.ts +2 -0
  123. package/dist/backend/llvm/lib-datagram.js +135 -0
  124. package/dist/backend/llvm/lib-datagram.js.map +1 -0
  125. package/dist/backend/llvm/lib-dispatch.js +50 -6
  126. package/dist/backend/llvm/lib-dispatch.js.map +1 -1
  127. package/dist/backend/llvm/lib-filesystem.js +30 -18
  128. package/dist/backend/llvm/lib-filesystem.js.map +1 -1
  129. package/dist/backend/llvm/lib-http2.d.ts +2 -0
  130. package/dist/backend/llvm/lib-http2.js +215 -0
  131. package/dist/backend/llvm/lib-http2.js.map +1 -0
  132. package/dist/backend/llvm/lib-lookup.d.ts +2 -0
  133. package/dist/backend/llvm/lib-lookup.js +39 -0
  134. package/dist/backend/llvm/lib-lookup.js.map +1 -0
  135. package/dist/backend/llvm/lib-network.js +25 -2
  136. package/dist/backend/llvm/lib-network.js.map +1 -1
  137. package/dist/backend/llvm/lib-process.js +44 -19
  138. package/dist/backend/llvm/lib-process.js.map +1 -1
  139. package/dist/backend/llvm/lib-shared.js +162 -3
  140. package/dist/backend/llvm/lib-shared.js.map +1 -1
  141. package/dist/backend/llvm/lib-stream.js +3 -2
  142. package/dist/backend/llvm/lib-stream.js.map +1 -1
  143. package/dist/backend/llvm/lib-test.d.ts +2 -0
  144. package/dist/backend/llvm/lib-test.js +34 -0
  145. package/dist/backend/llvm/lib-test.js.map +1 -0
  146. package/dist/backend/llvm/lib-tls.d.ts +2 -0
  147. package/dist/backend/llvm/lib-tls.js +82 -0
  148. package/dist/backend/llvm/lib-tls.js.map +1 -0
  149. package/dist/backend/llvm/shapes.d.ts +10 -9
  150. package/dist/backend/llvm/shapes.js +42 -131
  151. package/dist/backend/llvm/shapes.js.map +1 -1
  152. package/dist/backend/llvm/unsupported.d.ts +1 -0
  153. package/dist/backend/llvm/unsupported.js +1 -2
  154. package/dist/backend/llvm/unsupported.js.map +1 -1
  155. package/dist/backend/llvm/walkers.js +1 -7
  156. package/dist/backend/llvm/walkers.js.map +1 -1
  157. package/dist/backend/mangle.d.ts +2 -2
  158. package/dist/backend/mangle.js +16 -5
  159. package/dist/backend/mangle.js.map +1 -1
  160. package/dist/backend/{c/may-throw.d.ts → may-throw.d.ts} +1 -1
  161. package/dist/backend/{c/may-throw.js → may-throw.js} +51 -46
  162. package/dist/backend/may-throw.js.map +1 -0
  163. package/dist/backend/may-throw.test.d.ts +1 -0
  164. package/dist/backend/may-throw.test.js +58 -0
  165. package/dist/backend/may-throw.test.js.map +1 -0
  166. package/dist/backend/native-codegen-core.d.ts +22 -0
  167. package/dist/backend/native-codegen-core.js +44 -0
  168. package/dist/backend/native-codegen-core.js.map +1 -0
  169. package/dist/backend/native-codegen.d.ts +3 -19
  170. package/dist/backend/native-codegen.js +5 -44
  171. package/dist/backend/native-codegen.js.map +1 -1
  172. package/dist/backend/native-codegen.test.js +2 -2
  173. package/dist/backend/native-codegen.test.js.map +1 -1
  174. package/dist/backend/native-link-info-core.d.ts +94 -0
  175. package/dist/backend/native-link-info-core.js +62 -0
  176. package/dist/backend/native-link-info-core.js.map +1 -0
  177. package/dist/backend/native-link-info.d.ts +3 -88
  178. package/dist/backend/native-link-info.js +12 -243
  179. package/dist/backend/native-link-info.js.map +1 -1
  180. package/dist/backend/native-link-info.test.js +41 -146
  181. package/dist/backend/native-link-info.test.js.map +1 -1
  182. package/dist/backend/native-toolchain.d.ts +12 -30
  183. package/dist/backend/native-toolchain.js +83 -233
  184. package/dist/backend/native-toolchain.js.map +1 -1
  185. package/dist/backend/native-toolchain.test.js +77 -5
  186. package/dist/backend/native-toolchain.test.js.map +1 -1
  187. package/dist/backend/native-tools.d.ts +24 -0
  188. package/dist/backend/native-tools.js +33 -0
  189. package/dist/backend/native-tools.js.map +1 -0
  190. package/dist/backend/object-localize.js +19 -8
  191. package/dist/backend/object-localize.js.map +1 -1
  192. package/dist/backend/object-localize.test.js +22 -0
  193. package/dist/backend/object-localize.test.js.map +1 -1
  194. package/dist/backend/runtime-abi.d.ts +2 -2
  195. package/dist/backend/runtime-abi.js +2 -2
  196. package/dist/backend/runtime-pack-core.d.ts +101 -0
  197. package/dist/backend/runtime-pack-core.js +172 -0
  198. package/dist/backend/runtime-pack-core.js.map +1 -0
  199. package/dist/backend/runtime-pack-native.d.ts +21 -0
  200. package/dist/backend/runtime-pack-native.js +73 -0
  201. package/dist/backend/runtime-pack-native.js.map +1 -0
  202. package/dist/backend/runtime-pack-targets.test.js +1 -1
  203. package/dist/backend/runtime-pack.d.ts +3 -83
  204. package/dist/backend/runtime-pack.js +8 -151
  205. package/dist/backend/runtime-pack.js.map +1 -1
  206. package/dist/backend/runtime-pack.test.js +24 -1
  207. package/dist/backend/runtime-pack.test.js.map +1 -1
  208. package/dist/backend/target-diagnostics.d.ts +22 -0
  209. package/dist/backend/target-diagnostics.js +108 -0
  210. package/dist/backend/target-diagnostics.js.map +1 -0
  211. package/dist/backend/target-platform.d.ts +15 -0
  212. package/dist/backend/target-platform.js +72 -0
  213. package/dist/backend/target-platform.js.map +1 -0
  214. package/dist/backend/targets.d.ts +13 -4
  215. package/dist/backend/targets.js +103 -34
  216. package/dist/backend/targets.js.map +1 -1
  217. package/dist/backend/targets.test.js +72 -4
  218. package/dist/backend/targets.test.js.map +1 -1
  219. package/dist/backend/toolchain-environment.d.ts +6 -0
  220. package/dist/backend/toolchain-environment.js +99 -0
  221. package/dist/backend/toolchain-environment.js.map +1 -0
  222. package/dist/backend/vendor-archives.d.ts +1 -9
  223. package/dist/backend/vendor-archives.js +2 -9
  224. package/dist/backend/vendor-archives.js.map +1 -1
  225. package/dist/backend/vendor-inputs.d.ts +9 -0
  226. package/dist/backend/vendor-inputs.js +10 -0
  227. package/dist/backend/vendor-inputs.js.map +1 -0
  228. package/dist/backend/warm-cache.d.ts +3 -0
  229. package/dist/backend/warm-cache.js +41 -0
  230. package/dist/backend/warm-cache.js.map +1 -0
  231. package/dist/cli/command.d.ts +3 -0
  232. package/dist/cli/command.js +328 -0
  233. package/dist/cli/command.js.map +1 -0
  234. package/dist/cli/host.d.ts +24 -0
  235. package/dist/cli/host.js +2 -0
  236. package/dist/cli/host.js.map +1 -0
  237. package/dist/cli/output-options.d.ts +26 -0
  238. package/dist/cli/output-options.js +60 -0
  239. package/dist/cli/output-options.js.map +1 -0
  240. package/dist/cli/paths.d.ts +12 -0
  241. package/dist/cli/paths.js +42 -0
  242. package/dist/cli/paths.js.map +1 -0
  243. package/dist/cli/usage.d.ts +74 -0
  244. package/dist/cli/usage.js +86 -0
  245. package/dist/cli/usage.js.map +1 -0
  246. package/dist/cli/wasi-paths.d.ts +8 -0
  247. package/dist/cli/wasi-paths.js +41 -0
  248. package/dist/cli/wasi-paths.js.map +1 -0
  249. package/dist/cli/wasi-runner.d.ts +2 -0
  250. package/dist/cli/wasi-runner.js +28 -0
  251. package/dist/cli/wasi-runner.js.map +1 -0
  252. package/dist/compat/fetch-profile.js +37 -7
  253. package/dist/compat/fetch-profile.js.map +1 -1
  254. package/dist/compile-types.d.ts +162 -0
  255. package/dist/compile-types.js +2 -0
  256. package/dist/compile-types.js.map +1 -0
  257. package/dist/coverage/report.js +11 -5
  258. package/dist/coverage/report.js.map +1 -1
  259. package/dist/coverage/surface-manifest.js +5 -2
  260. package/dist/coverage/surface-manifest.js.map +1 -1
  261. package/dist/diagnostics/diagnostic.js +5 -10
  262. package/dist/diagnostics/diagnostic.js.map +1 -1
  263. package/dist/executable/executable-cache.d.ts +3 -4
  264. package/dist/executable/executable-cache.js +5 -6
  265. package/dist/executable/executable-cache.js.map +1 -1
  266. package/dist/executable/executable-cache.test.js +16 -17
  267. package/dist/executable/executable-cache.test.js.map +1 -1
  268. package/dist/executable/prepare.d.ts +14 -0
  269. package/dist/executable/prepare.js +66 -0
  270. package/dist/executable/prepare.js.map +1 -0
  271. package/dist/ffi/ffi-manifest.d.ts +11 -4
  272. package/dist/ffi/ffi-manifest.js +170 -58
  273. package/dist/ffi/ffi-manifest.js.map +1 -1
  274. package/dist/ffi/ffi-manifest.test.d.ts +1 -0
  275. package/dist/ffi/ffi-manifest.test.js +111 -0
  276. package/dist/ffi/ffi-manifest.test.js.map +1 -0
  277. package/dist/format-integer.d.ts +3 -0
  278. package/dist/format-integer.js +14 -0
  279. package/dist/format-integer.js.map +1 -0
  280. package/dist/frontend/analysis.d.ts +5 -0
  281. package/dist/frontend/analysis.js +88 -0
  282. package/dist/frontend/analysis.js.map +1 -0
  283. package/dist/frontend/arguments-usage.d.ts +1 -3
  284. package/dist/frontend/arguments-usage.js.map +1 -1
  285. package/dist/frontend/builtin-modules.d.ts +1 -1
  286. package/dist/frontend/builtin-modules.js +1 -1
  287. package/dist/frontend/builtin-modules.js.map +1 -1
  288. package/dist/frontend/cjs-lexer.d.ts +4 -25
  289. package/dist/frontend/cjs-lexer.js +6 -806
  290. package/dist/frontend/cjs-lexer.js.map +1 -1
  291. package/dist/frontend/cjs-resolve.d.ts +5 -0
  292. package/dist/frontend/cjs-resolve.js +429 -0
  293. package/dist/frontend/cjs-resolve.js.map +1 -0
  294. package/dist/frontend/cjs-syntax.d.ts +26 -0
  295. package/dist/frontend/cjs-syntax.js +806 -0
  296. package/dist/frontend/cjs-syntax.js.map +1 -0
  297. package/dist/frontend/comptime-node.d.ts +4 -0
  298. package/dist/frontend/comptime-node.js +16 -0
  299. package/dist/frontend/comptime-node.js.map +1 -0
  300. package/dist/frontend/comptime-node.test.d.ts +1 -0
  301. package/dist/frontend/comptime-node.test.js +37 -0
  302. package/dist/frontend/comptime-node.test.js.map +1 -0
  303. package/dist/frontend/dts-paths.d.ts +3 -4
  304. package/dist/frontend/dts-paths.js +15 -8
  305. package/dist/frontend/dts-paths.js.map +1 -1
  306. package/dist/frontend/fork-target.js +2 -2
  307. package/dist/frontend/fork-target.js.map +1 -1
  308. package/dist/frontend/helper-tokens.d.ts +1 -0
  309. package/dist/frontend/helper-tokens.js +147 -0
  310. package/dist/frontend/helper-tokens.js.map +1 -0
  311. package/dist/frontend/helper-tokens.test.d.ts +1 -0
  312. package/dist/frontend/helper-tokens.test.js +35 -0
  313. package/dist/frontend/helper-tokens.test.js.map +1 -0
  314. package/dist/frontend/inferred-js-diagnostics.d.ts +5 -0
  315. package/dist/frontend/inferred-js-diagnostics.js +69 -0
  316. package/dist/frontend/inferred-js-diagnostics.js.map +1 -0
  317. package/dist/frontend/inferred-js-diagnostics.test.d.ts +1 -0
  318. package/dist/frontend/inferred-js-diagnostics.test.js +58 -0
  319. package/dist/frontend/inferred-js-diagnostics.test.js.map +1 -0
  320. package/dist/frontend/input-tracker.d.ts +5 -2
  321. package/dist/frontend/input-tracker.js +24 -3
  322. package/dist/frontend/input-tracker.js.map +1 -1
  323. package/dist/frontend/input-tracker.test.js +23 -0
  324. package/dist/frontend/input-tracker.test.js.map +1 -1
  325. package/dist/frontend/lib-contract.js +32 -24
  326. package/dist/frontend/lib-contract.js.map +1 -1
  327. package/dist/frontend/literal-values.d.ts +4 -0
  328. package/dist/frontend/literal-values.js +21 -0
  329. package/dist/frontend/literal-values.js.map +1 -0
  330. package/dist/frontend/literal-values.test.d.ts +1 -0
  331. package/dist/frontend/literal-values.test.js +91 -0
  332. package/dist/frontend/literal-values.test.js.map +1 -0
  333. package/dist/frontend/lowering/abstract-equality.d.ts +1 -1
  334. package/dist/frontend/lowering/abstract-equality.js +3 -0
  335. package/dist/frontend/lowering/abstract-equality.js.map +1 -1
  336. package/dist/frontend/lowering/array-indexed-mutation.js +11 -6
  337. package/dist/frontend/lowering/array-indexed-mutation.js.map +1 -1
  338. package/dist/frontend/lowering/array-values.d.ts +4 -1
  339. package/dist/frontend/lowering/array-values.js +43 -1
  340. package/dist/frontend/lowering/array-values.js.map +1 -1
  341. package/dist/frontend/lowering/callback-arg.js +1 -0
  342. package/dist/frontend/lowering/callback-arg.js.map +1 -1
  343. package/dist/frontend/lowering/class-callbacks.d.ts +12 -0
  344. package/dist/frontend/lowering/class-callbacks.js +74 -0
  345. package/dist/frontend/lowering/class-callbacks.js.map +1 -0
  346. package/dist/frontend/lowering/class-construction.d.ts +12 -0
  347. package/dist/frontend/lowering/class-construction.js +156 -0
  348. package/dist/frontend/lowering/class-construction.js.map +1 -0
  349. package/dist/frontend/lowering/class-descriptors.d.ts +10 -0
  350. package/dist/frontend/lowering/class-descriptors.js +114 -0
  351. package/dist/frontend/lowering/class-descriptors.js.map +1 -0
  352. package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +51 -0
  353. package/dist/frontend/lowering/class-dynamic-dispatch.js +1158 -0
  354. package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -0
  355. package/dist/frontend/lowering/class-dynamic-dispatch.test.d.ts +1 -0
  356. package/dist/frontend/lowering/class-dynamic-dispatch.test.js +93 -0
  357. package/dist/frontend/lowering/class-dynamic-dispatch.test.js.map +1 -0
  358. package/dist/frontend/lowering/class-instance-constructor.d.ts +7 -0
  359. package/dist/frontend/lowering/class-instance-constructor.js +67 -0
  360. package/dist/frontend/lowering/class-instance-constructor.js.map +1 -0
  361. package/dist/frontend/lowering/class-method-values.d.ts +13 -0
  362. package/dist/frontend/lowering/class-method-values.js +235 -0
  363. package/dist/frontend/lowering/class-method-values.js.map +1 -0
  364. package/dist/frontend/lowering/class-prototypes.d.ts +19 -0
  365. package/dist/frontend/lowering/class-prototypes.js +242 -0
  366. package/dist/frontend/lowering/class-prototypes.js.map +1 -0
  367. package/dist/frontend/lowering/class-runtime-statics.d.ts +8 -0
  368. package/dist/frontend/lowering/class-runtime-statics.js +66 -0
  369. package/dist/frontend/lowering/class-runtime-statics.js.map +1 -0
  370. package/dist/frontend/lowering/class-static-data.d.ts +6 -0
  371. package/dist/frontend/lowering/class-static-data.js +56 -0
  372. package/dist/frontend/lowering/class-static-data.js.map +1 -0
  373. package/dist/frontend/lowering/containers/buffer-numeric-methods.d.ts +4 -0
  374. package/dist/frontend/lowering/containers/buffer-numeric-methods.js +26 -0
  375. package/dist/frontend/lowering/containers/buffer-numeric-methods.js.map +1 -0
  376. package/dist/frontend/lowering/containers/bytes.d.ts +11 -7
  377. package/dist/frontend/lowering/containers/bytes.js +208 -163
  378. package/dist/frontend/lowering/containers/bytes.js.map +1 -1
  379. package/dist/frontend/lowering/containers/string-and-regexp.d.ts +2 -2
  380. package/dist/frontend/lowering/containers/string-and-regexp.js +58 -63
  381. package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
  382. package/dist/frontend/lowering/containers/string-replacement.d.ts +7 -0
  383. package/dist/frontend/lowering/containers/string-replacement.js +217 -0
  384. package/dist/frontend/lowering/containers/string-replacement.js.map +1 -0
  385. package/dist/frontend/lowering/error-methods.d.ts +14 -0
  386. package/dist/frontend/lowering/error-methods.js +177 -0
  387. package/dist/frontend/lowering/error-methods.js.map +1 -0
  388. package/dist/frontend/lowering/expressions/global-symbols.d.ts +6 -0
  389. package/dist/frontend/lowering/expressions/global-symbols.js +11 -0
  390. package/dist/frontend/lowering/expressions/global-symbols.js.map +1 -0
  391. package/dist/frontend/lowering/expressions/native-proxy.d.ts +7 -0
  392. package/dist/frontend/lowering/expressions/native-proxy.js +51 -0
  393. package/dist/frontend/lowering/expressions/native-proxy.js.map +1 -0
  394. package/dist/frontend/lowering/expressions/nullish-assignment.d.ts +6 -0
  395. package/dist/frontend/lowering/expressions/nullish-assignment.js +132 -0
  396. package/dist/frontend/lowering/expressions/nullish-assignment.js.map +1 -0
  397. package/dist/frontend/lowering/expressions/object-literals.d.ts +8 -8
  398. package/dist/frontend/lowering/expressions/object-literals.js +509 -183
  399. package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
  400. package/dist/frontend/lowering/expressions/optional-chains.d.ts +3 -4
  401. package/dist/frontend/lowering/expressions/optional-chains.js +88 -24
  402. package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
  403. package/dist/frontend/lowering/expressions/try-lower-expression.js +1 -0
  404. package/dist/frontend/lowering/expressions/try-lower-expression.js.map +1 -1
  405. package/dist/frontend/lowering/expressions/union-field-write.d.ts +8 -0
  406. package/dist/frontend/lowering/expressions/union-field-write.js +71 -0
  407. package/dist/frontend/lowering/expressions/union-field-write.js.map +1 -0
  408. package/dist/frontend/lowering/function-context.d.ts +101 -0
  409. package/dist/frontend/lowering/function-context.js +109 -0
  410. package/dist/frontend/lowering/function-context.js.map +1 -0
  411. package/dist/frontend/lowering/generator-delegation.d.ts +7 -0
  412. package/dist/frontend/lowering/generator-delegation.js +85 -0
  413. package/dist/frontend/lowering/generator-delegation.js.map +1 -0
  414. package/dist/frontend/lowering/generator-dynamic-dispatch.d.ts +11 -0
  415. package/dist/frontend/lowering/generator-dynamic-dispatch.js +143 -0
  416. package/dist/frontend/lowering/generator-dynamic-dispatch.js.map +1 -0
  417. package/dist/frontend/lowering/lib-boundary.d.ts +4 -1
  418. package/dist/frontend/lowering/lib-boundary.js +112 -20
  419. package/dist/frontend/lowering/lib-boundary.js.map +1 -1
  420. package/dist/frontend/lowering/lib-boundary.test.d.ts +1 -0
  421. package/dist/frontend/lowering/lib-boundary.test.js +45 -0
  422. package/dist/frontend/lowering/lib-boundary.test.js.map +1 -0
  423. package/dist/frontend/lowering/lower-array-sort.d.ts +1 -1
  424. package/dist/frontend/lowering/lower-assert.d.ts +1 -1
  425. package/dist/frontend/lowering/lower-assert.js.map +1 -1
  426. package/dist/frontend/lowering/lower-async-iteration.d.ts +1 -1
  427. package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
  428. package/dist/frontend/lowering/lower-builtin-values.d.ts +18 -0
  429. package/dist/frontend/lowering/lower-builtin-values.js +249 -0
  430. package/dist/frontend/lowering/lower-builtin-values.js.map +1 -0
  431. package/dist/frontend/lowering/lower-builtins.d.ts +33 -46
  432. package/dist/frontend/lowering/lower-builtins.js +676 -365
  433. package/dist/frontend/lowering/lower-builtins.js.map +1 -1
  434. package/dist/frontend/lowering/lower-calls.d.ts +28 -22
  435. package/dist/frontend/lowering/lower-calls.js +1660 -412
  436. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  437. package/dist/frontend/lowering/lower-classes.d.ts +95 -57
  438. package/dist/frontend/lowering/lower-classes.js +1491 -404
  439. package/dist/frontend/lowering/lower-classes.js.map +1 -1
  440. package/dist/frontend/lowering/lower-comptime.d.ts +1 -1
  441. package/dist/frontend/lowering/lower-comptime.js +23 -32
  442. package/dist/frontend/lowering/lower-comptime.js.map +1 -1
  443. package/dist/frontend/lowering/lower-containers.d.ts +36 -32
  444. package/dist/frontend/lowering/lower-containers.js +925 -181
  445. package/dist/frontend/lowering/lower-containers.js.map +1 -1
  446. package/dist/frontend/lowering/lower-dgram.d.ts +1 -1
  447. package/dist/frontend/lowering/lower-dgram.js +3 -2
  448. package/dist/frontend/lowering/lower-dgram.js.map +1 -1
  449. package/dist/frontend/lowering/lower-enums.d.ts +1 -1
  450. package/dist/frontend/lowering/lower-enums.js.map +1 -1
  451. package/dist/frontend/lowering/lower-event-emitter.d.ts +30 -1
  452. package/dist/frontend/lowering/lower-event-emitter.js +58 -26
  453. package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
  454. package/dist/frontend/lowering/lower-expando.d.ts +7 -1
  455. package/dist/frontend/lowering/lower-expando.js +14 -6
  456. package/dist/frontend/lowering/lower-expando.js.map +1 -1
  457. package/dist/frontend/lowering/lower-exprs.d.ts +37 -13
  458. package/dist/frontend/lowering/lower-exprs.js +2163 -863
  459. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  460. package/dist/frontend/lowering/lower-generators.d.ts +2 -5
  461. package/dist/frontend/lowering/lower-generators.js +88 -46
  462. package/dist/frontend/lowering/lower-generators.js.map +1 -1
  463. package/dist/frontend/lowering/lower-global-value.d.ts +7 -0
  464. package/dist/frontend/lowering/lower-global-value.js +17 -0
  465. package/dist/frontend/lowering/lower-global-value.js.map +1 -0
  466. package/dist/frontend/lowering/lower-inspect.d.ts +1 -1
  467. package/dist/frontend/lowering/lower-inspect.js +17 -8
  468. package/dist/frontend/lowering/lower-inspect.js.map +1 -1
  469. package/dist/frontend/lowering/lower-island.d.ts +7 -8
  470. package/dist/frontend/lowering/lower-island.js +66 -33
  471. package/dist/frontend/lowering/lower-island.js.map +1 -1
  472. package/dist/frontend/lowering/lower-mixins.d.ts +2 -2
  473. package/dist/frontend/lowering/lower-mixins.js +5 -3
  474. package/dist/frontend/lowering/lower-mixins.js.map +1 -1
  475. package/dist/frontend/lowering/lower-modules.d.ts +1 -1
  476. package/dist/frontend/lowering/lower-modules.js +445 -39
  477. package/dist/frontend/lowering/lower-modules.js.map +1 -1
  478. package/dist/frontend/lowering/lower-modules.test.d.ts +1 -0
  479. package/dist/frontend/lowering/lower-modules.test.js +39 -0
  480. package/dist/frontend/lowering/lower-modules.test.js.map +1 -0
  481. package/dist/frontend/lowering/lower-namespaces.d.ts +1 -1
  482. package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
  483. package/dist/frontend/lowering/lower-node-module.d.ts +1 -1
  484. package/dist/frontend/lowering/lower-node-module.js +13 -10
  485. package/dist/frontend/lowering/lower-node-module.js.map +1 -1
  486. package/dist/frontend/lowering/lower-server.d.ts +1 -1
  487. package/dist/frontend/lowering/lower-server.js +6 -10
  488. package/dist/frontend/lowering/lower-server.js.map +1 -1
  489. package/dist/frontend/lowering/lower-stmts.d.ts +17 -17
  490. package/dist/frontend/lowering/lower-stmts.js +855 -514
  491. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  492. package/dist/frontend/lowering/lower-stream.d.ts +1 -1
  493. package/dist/frontend/lowering/lower-stream.js +20 -11
  494. package/dist/frontend/lowering/lower-stream.js.map +1 -1
  495. package/dist/frontend/lowering/lower-test.d.ts +1 -1
  496. package/dist/frontend/lowering/lower-test.js.map +1 -1
  497. package/dist/frontend/lowering/lower-url.d.ts +6 -0
  498. package/dist/frontend/lowering/lower-url.js +77 -0
  499. package/dist/frontend/lowering/lower-url.js.map +1 -0
  500. package/dist/frontend/lowering/lowerer.d.ts +140 -190
  501. package/dist/frontend/lowering/lowerer.js +1193 -712
  502. package/dist/frontend/lowering/lowerer.js.map +1 -1
  503. package/dist/frontend/lowering/lowerer.test.d.ts +1 -0
  504. package/dist/frontend/lowering/lowerer.test.js +172 -0
  505. package/dist/frontend/lowering/lowerer.test.js.map +1 -0
  506. package/dist/frontend/lowering/native-ffi.d.ts +5 -0
  507. package/dist/frontend/lowering/native-ffi.js +40 -0
  508. package/dist/frontend/lowering/native-ffi.js.map +1 -0
  509. package/dist/frontend/lowering/object-enumeration-receiver.d.ts +7 -0
  510. package/dist/frontend/lowering/object-enumeration-receiver.js +33 -0
  511. package/dist/frontend/lowering/object-enumeration-receiver.js.map +1 -0
  512. package/dist/frontend/lowering/object-factory-new.d.ts +8 -0
  513. package/dist/frontend/lowering/object-factory-new.js +68 -0
  514. package/dist/frontend/lowering/object-factory-new.js.map +1 -0
  515. package/dist/frontend/lowering/optional-arguments.js +6 -1
  516. package/dist/frontend/lowering/optional-arguments.js.map +1 -1
  517. package/dist/frontend/lowering/pairs-snapshot.js +2 -1
  518. package/dist/frontend/lowering/pairs-snapshot.js.map +1 -1
  519. package/dist/frontend/lowering/runtime-optional-locals.d.ts +14 -0
  520. package/dist/frontend/lowering/runtime-optional-locals.js +41 -0
  521. package/dist/frontend/lowering/runtime-optional-locals.js.map +1 -0
  522. package/dist/frontend/lowering/runtime-optional-locals.test.d.ts +1 -0
  523. package/dist/frontend/lowering/runtime-optional-locals.test.js +85 -0
  524. package/dist/frontend/lowering/runtime-optional-locals.test.js.map +1 -0
  525. package/dist/frontend/lowering/sanitize-class-types.d.ts +8 -0
  526. package/dist/frontend/lowering/sanitize-class-types.js +79 -0
  527. package/dist/frontend/lowering/sanitize-class-types.js.map +1 -0
  528. package/dist/frontend/lowering/sanitize-class-types.test.d.ts +1 -0
  529. package/dist/frontend/lowering/sanitize-class-types.test.js +60 -0
  530. package/dist/frontend/lowering/sanitize-class-types.test.js.map +1 -0
  531. package/dist/frontend/lowering/static-this.d.ts +5 -1
  532. package/dist/frontend/lowering/static-this.js +28 -2
  533. package/dist/frontend/lowering/static-this.js.map +1 -1
  534. package/dist/frontend/lowering/string-index.d.ts +7 -0
  535. package/dist/frontend/lowering/string-index.js +39 -0
  536. package/dist/frontend/lowering/string-index.js.map +1 -0
  537. package/dist/frontend/lowering/surfaces.d.ts +10 -3
  538. package/dist/frontend/lowering/surfaces.js +86 -37
  539. package/dist/frontend/lowering/surfaces.js.map +1 -1
  540. package/dist/frontend/lowering/symbol-fields.d.ts +22 -0
  541. package/dist/frontend/lowering/symbol-fields.js +183 -0
  542. package/dist/frontend/lowering/symbol-fields.js.map +1 -0
  543. package/dist/frontend/lowering/symbol-methods.d.ts +7 -0
  544. package/dist/frontend/lowering/symbol-methods.js +30 -0
  545. package/dist/frontend/lowering/symbol-methods.js.map +1 -0
  546. package/dist/frontend/lowering/text-decoder-encoding.d.ts +12 -0
  547. package/dist/frontend/lowering/text-decoder-encoding.js +82 -0
  548. package/dist/frontend/lowering/text-decoder-encoding.js.map +1 -0
  549. package/dist/frontend/lowering/text-decoder-encoding.test.d.ts +1 -0
  550. package/dist/frontend/lowering/text-decoder-encoding.test.js +38 -0
  551. package/dist/frontend/lowering/text-decoder-encoding.test.js.map +1 -0
  552. package/dist/frontend/lowering/union-narrow.d.ts +9 -0
  553. package/dist/frontend/lowering/union-narrow.js +59 -0
  554. package/dist/frontend/lowering/union-narrow.js.map +1 -0
  555. package/dist/frontend/lowering/union-narrow.test.d.ts +1 -0
  556. package/dist/frontend/lowering/union-narrow.test.js +72 -0
  557. package/dist/frontend/lowering/union-narrow.test.js.map +1 -0
  558. package/dist/frontend/lowering/union-retag.d.ts +43 -0
  559. package/dist/frontend/lowering/union-retag.js +259 -0
  560. package/dist/frontend/lowering/union-retag.js.map +1 -0
  561. package/dist/frontend/lowering/union-retag.test.d.ts +1 -0
  562. package/dist/frontend/lowering/union-retag.test.js +405 -0
  563. package/dist/frontend/lowering/union-retag.test.js.map +1 -0
  564. package/dist/frontend/lowering/unregistered-class-types.d.ts +14 -0
  565. package/dist/frontend/lowering/unregistered-class-types.js +94 -0
  566. package/dist/frontend/lowering/unregistered-class-types.js.map +1 -0
  567. package/dist/frontend/lowering/unregistered-class-types.test.d.ts +1 -0
  568. package/dist/frontend/lowering/unregistered-class-types.test.js +65 -0
  569. package/dist/frontend/lowering/unregistered-class-types.test.js.map +1 -0
  570. package/dist/frontend/lowering/width-lift.d.ts +40 -0
  571. package/dist/frontend/lowering/width-lift.js +2 -0
  572. package/dist/frontend/lowering/width-lift.js.map +1 -0
  573. package/dist/frontend/module-syntax.d.ts +58 -0
  574. package/dist/frontend/module-syntax.js +123 -0
  575. package/dist/frontend/module-syntax.js.map +1 -0
  576. package/dist/frontend/module-syntax.test.d.ts +1 -0
  577. package/dist/frontend/module-syntax.test.js +78 -0
  578. package/dist/frontend/module-syntax.test.js.map +1 -0
  579. package/dist/frontend/npm-fetch-analysis.d.ts +17 -0
  580. package/dist/frontend/npm-fetch-analysis.js +100 -0
  581. package/dist/frontend/npm-fetch-analysis.js.map +1 -0
  582. package/dist/frontend/npm-fetch-analysis.test.d.ts +1 -0
  583. package/dist/frontend/npm-fetch-analysis.test.js +107 -0
  584. package/dist/frontend/npm-fetch-analysis.test.js.map +1 -0
  585. package/dist/frontend/npm-fetch-node.d.ts +2 -0
  586. package/dist/frontend/npm-fetch-node.js +12 -0
  587. package/dist/frontend/npm-fetch-node.js.map +1 -0
  588. package/dist/frontend/npm-fetch-syntax.d.ts +6 -0
  589. package/dist/frontend/npm-fetch-syntax.js +207 -0
  590. package/dist/frontend/npm-fetch-syntax.js.map +1 -0
  591. package/dist/frontend/npm-node.d.ts +10 -0
  592. package/dist/frontend/npm-node.js +14 -0
  593. package/dist/frontend/npm-node.js.map +1 -0
  594. package/dist/frontend/npm-static-bundled-cjs.d.ts +8 -0
  595. package/dist/frontend/npm-static-bundled-cjs.js +236 -0
  596. package/dist/frontend/npm-static-bundled-cjs.js.map +1 -0
  597. package/dist/frontend/npm-static-bundled-cjs.test.d.ts +1 -0
  598. package/dist/frontend/npm-static-bundled-cjs.test.js +69 -0
  599. package/dist/frontend/npm-static-bundled-cjs.test.js.map +1 -0
  600. package/dist/frontend/npm-static-declaration-syntax.d.ts +57 -0
  601. package/dist/frontend/npm-static-declaration-syntax.js +944 -0
  602. package/dist/frontend/npm-static-declaration-syntax.js.map +1 -0
  603. package/dist/frontend/npm-static-declarations.d.ts +11 -39
  604. package/dist/frontend/npm-static-declarations.js +22 -561
  605. package/dist/frontend/npm-static-declarations.js.map +1 -1
  606. package/dist/frontend/npm-static-declarations.test.js +245 -6
  607. package/dist/frontend/npm-static-declarations.test.js.map +1 -1
  608. package/dist/frontend/npm-static-prune.d.ts +1 -1
  609. package/dist/frontend/npm-static-prune.js +121 -38
  610. package/dist/frontend/npm-static-prune.js.map +1 -1
  611. package/dist/frontend/npm-static-prune.test.js +9 -1
  612. package/dist/frontend/npm-static-prune.test.js.map +1 -1
  613. package/dist/frontend/npm-static-rewrite-host.d.ts +4 -0
  614. package/dist/frontend/npm-static-rewrite-host.js +179 -0
  615. package/dist/frontend/npm-static-rewrite-host.js.map +1 -0
  616. package/dist/frontend/npm-static-rewrite-syntax.d.ts +16 -0
  617. package/dist/frontend/npm-static-rewrite-syntax.js +905 -0
  618. package/dist/frontend/npm-static-rewrite-syntax.js.map +1 -0
  619. package/dist/frontend/npm-static-rewrite.d.ts +0 -5
  620. package/dist/frontend/npm-static-rewrite.js +2 -1079
  621. package/dist/frontend/npm-static-rewrite.js.map +1 -1
  622. package/dist/frontend/npm-static-subtyping.d.ts +5 -0
  623. package/dist/frontend/npm-static-subtyping.js +55 -0
  624. package/dist/frontend/npm-static-subtyping.js.map +1 -0
  625. package/dist/frontend/npm-static-subtyping.test.d.ts +1 -0
  626. package/dist/frontend/npm-static-subtyping.test.js +58 -0
  627. package/dist/frontend/npm-static-subtyping.test.js.map +1 -0
  628. package/dist/frontend/npm-static.d.ts +7 -15
  629. package/dist/frontend/npm-static.js +19 -28
  630. package/dist/frontend/npm-static.js.map +1 -1
  631. package/dist/frontend/npm.d.ts +8 -69
  632. package/dist/frontend/npm.js +21 -361
  633. package/dist/frontend/npm.js.map +1 -1
  634. package/dist/frontend/npm.test.js +2 -2
  635. package/dist/frontend/npm.test.js.map +1 -1
  636. package/dist/frontend/pipeline-native.d.ts +6 -0
  637. package/dist/frontend/pipeline-native.js +32 -0
  638. package/dist/frontend/pipeline-native.js.map +1 -0
  639. package/dist/frontend/pipeline.d.ts +54 -0
  640. package/dist/frontend/pipeline.js +382 -0
  641. package/dist/frontend/pipeline.js.map +1 -0
  642. package/dist/frontend/pipeline.test.d.ts +1 -0
  643. package/dist/frontend/pipeline.test.js +77 -0
  644. package/dist/frontend/pipeline.test.js.map +1 -0
  645. package/dist/frontend/program-analysis.d.ts +10 -0
  646. package/dist/frontend/program-analysis.js +14 -0
  647. package/dist/frontend/program-analysis.js.map +1 -0
  648. package/dist/frontend/program-node.d.ts +9 -0
  649. package/dist/frontend/program-node.js +48 -0
  650. package/dist/frontend/program-node.js.map +1 -0
  651. package/dist/frontend/program.d.ts +39 -20
  652. package/dist/frontend/program.js +393 -189
  653. package/dist/frontend/program.js.map +1 -1
  654. package/dist/frontend/program.test.js +105 -2
  655. package/dist/frontend/program.test.js.map +1 -1
  656. package/dist/frontend/provenance-core.d.ts +9 -0
  657. package/dist/frontend/provenance-core.js +435 -0
  658. package/dist/frontend/provenance-core.js.map +1 -0
  659. package/dist/frontend/provenance.d.ts +0 -4
  660. package/dist/frontend/provenance.js +4 -459
  661. package/dist/frontend/provenance.js.map +1 -1
  662. package/dist/frontend/resolve.d.ts +3 -1
  663. package/dist/frontend/resolve.js +6 -3
  664. package/dist/frontend/resolve.js.map +1 -1
  665. package/dist/frontend/runtime-resolve.d.ts +4 -3
  666. package/dist/frontend/runtime-resolve.js +22 -18
  667. package/dist/frontend/runtime-resolve.js.map +1 -1
  668. package/dist/frontend/runtime-resolve.test.js +53 -0
  669. package/dist/frontend/runtime-resolve.test.js.map +1 -1
  670. package/dist/frontend/services-node.d.ts +5 -0
  671. package/dist/frontend/services-node.js +19 -0
  672. package/dist/frontend/services-node.js.map +1 -0
  673. package/dist/frontend/services-node.test.d.ts +1 -0
  674. package/dist/frontend/services-node.test.js +70 -0
  675. package/dist/frontend/services-node.test.js.map +1 -0
  676. package/dist/frontend/services.d.ts +44 -0
  677. package/dist/frontend/services.js +90 -0
  678. package/dist/frontend/services.js.map +1 -0
  679. package/dist/frontend/services.test.d.ts +1 -0
  680. package/dist/frontend/services.test.js +174 -0
  681. package/dist/frontend/services.test.js.map +1 -0
  682. package/dist/frontend/ts7/adapter.d.ts +3 -3
  683. package/dist/frontend/ts7/adapter.js +14 -31
  684. package/dist/frontend/ts7/adapter.js.map +1 -1
  685. package/dist/frontend/ts7/api.d.ts +16 -0
  686. package/dist/frontend/ts7/api.js +24 -0
  687. package/dist/frontend/ts7/api.js.map +1 -0
  688. package/dist/frontend/ts7/ast-bytes.d.ts +31 -0
  689. package/dist/frontend/ts7/ast-bytes.js +137 -0
  690. package/dist/frontend/ts7/ast-bytes.js.map +1 -0
  691. package/dist/frontend/ts7/ast-bytes.test.d.ts +1 -0
  692. package/dist/frontend/ts7/ast-bytes.test.js +73 -0
  693. package/dist/frontend/ts7/ast-bytes.test.js.map +1 -0
  694. package/dist/frontend/ts7/ast-guards.generated.d.ts +353 -0
  695. package/dist/frontend/ts7/ast-guards.generated.js +1951 -0
  696. package/dist/frontend/ts7/ast-guards.generated.js.map +1 -0
  697. package/dist/frontend/ts7/ast-guards.test.d.ts +1 -0
  698. package/dist/frontend/ts7/ast-guards.test.js +43 -0
  699. package/dist/frontend/ts7/ast-guards.test.js.map +1 -0
  700. package/dist/frontend/ts7/ast-node.d.ts +194 -0
  701. package/dist/frontend/ts7/ast-node.js +448 -0
  702. package/dist/frontend/ts7/ast-node.js.map +1 -0
  703. package/dist/frontend/ts7/ast-node.test.d.ts +1 -0
  704. package/dist/frontend/ts7/ast-node.test.js +266 -0
  705. package/dist/frontend/ts7/ast-node.test.js.map +1 -0
  706. package/dist/frontend/ts7/ast-schema.generated.d.ts +503 -0
  707. package/dist/frontend/ts7/ast-schema.generated.js +1446 -0
  708. package/dist/frontend/ts7/ast-schema.generated.js.map +1 -0
  709. package/dist/frontend/ts7/ast-text.d.ts +6 -0
  710. package/dist/frontend/ts7/ast-text.js +124 -0
  711. package/dist/frontend/ts7/ast-text.js.map +1 -0
  712. package/dist/frontend/ts7/ast-text.test.d.ts +1 -0
  713. package/dist/frontend/ts7/ast-text.test.js +38 -0
  714. package/dist/frontend/ts7/ast-text.test.js.map +1 -0
  715. package/dist/frontend/ts7/ast-tokens.generated.d.ts +2 -0
  716. package/dist/frontend/ts7/ast-tokens.generated.js +155 -0
  717. package/dist/frontend/ts7/ast-tokens.generated.js.map +1 -0
  718. package/dist/frontend/ts7/ast-types.d.ts +42 -0
  719. package/dist/frontend/ts7/ast-types.generated.d.ts +1615 -0
  720. package/dist/frontend/ts7/ast-types.generated.js +5 -0
  721. package/dist/frontend/ts7/ast-types.generated.js.map +1 -0
  722. package/dist/frontend/ts7/ast-types.js +3 -0
  723. package/dist/frontend/ts7/ast-types.js.map +1 -0
  724. package/dist/frontend/ts7/ast-wire.d.ts +58 -0
  725. package/dist/frontend/ts7/ast-wire.js +267 -0
  726. package/dist/frontend/ts7/ast-wire.js.map +1 -0
  727. package/dist/frontend/ts7/ast-wire.test.d.ts +1 -0
  728. package/dist/frontend/ts7/ast-wire.test.js +151 -0
  729. package/dist/frontend/ts7/ast-wire.test.js.map +1 -0
  730. package/dist/frontend/ts7/ast.d.ts +14 -14
  731. package/dist/frontend/ts7/ast.js +25 -18
  732. package/dist/frontend/ts7/ast.js.map +1 -1
  733. package/dist/frontend/ts7/census-check.js +1 -0
  734. package/dist/frontend/ts7/census-check.js.map +1 -1
  735. package/dist/frontend/ts7/checker-cache.d.ts +48 -0
  736. package/dist/frontend/ts7/checker-cache.js +92 -0
  737. package/dist/frontend/ts7/checker-cache.js.map +1 -0
  738. package/dist/frontend/ts7/checker.d.ts +19 -46
  739. package/dist/frontend/ts7/checker.js +231 -161
  740. package/dist/frontend/ts7/checker.js.map +1 -1
  741. package/dist/frontend/ts7/checker.test.d.ts +1 -0
  742. package/dist/frontend/ts7/checker.test.js +335 -0
  743. package/dist/frontend/ts7/checker.test.js.map +1 -0
  744. package/dist/frontend/ts7/enums.d.ts +4 -27
  745. package/dist/frontend/ts7/enums.generated.d.ts +878 -0
  746. package/dist/frontend/ts7/enums.generated.js +1313 -0
  747. package/dist/frontend/ts7/enums.generated.js.map +1 -0
  748. package/dist/frontend/ts7/enums.js +4 -45
  749. package/dist/frontend/ts7/enums.js.map +1 -1
  750. package/dist/frontend/ts7/enums.test.d.ts +1 -0
  751. package/dist/frontend/ts7/enums.test.js +48 -0
  752. package/dist/frontend/ts7/enums.test.js.map +1 -0
  753. package/dist/frontend/ts7/native-api.d.ts +10 -0
  754. package/dist/frontend/ts7/native-api.js +10 -0
  755. package/dist/frontend/ts7/native-api.js.map +1 -0
  756. package/dist/frontend/ts7/native-host.d.ts +2 -0
  757. package/dist/frontend/ts7/native-host.js +11 -0
  758. package/dist/frontend/ts7/native-host.js.map +1 -0
  759. package/dist/frontend/ts7/native-process.d.ts +14 -0
  760. package/dist/frontend/ts7/native-process.js +62 -0
  761. package/dist/frontend/ts7/native-process.js.map +1 -0
  762. package/dist/frontend/ts7/program-adapter.d.ts +10 -98
  763. package/dist/frontend/ts7/program-adapter.js +16 -310
  764. package/dist/frontend/ts7/program-adapter.js.map +1 -1
  765. package/dist/frontend/ts7/program-host.d.ts +115 -0
  766. package/dist/frontend/ts7/program-host.js +347 -0
  767. package/dist/frontend/ts7/program-host.js.map +1 -0
  768. package/dist/frontend/ts7/program-host.test.d.ts +1 -0
  769. package/dist/frontend/ts7/program-host.test.js +207 -0
  770. package/dist/frontend/ts7/program-host.test.js.map +1 -0
  771. package/dist/frontend/ts7/rpc-api.d.ts +12 -0
  772. package/dist/frontend/ts7/rpc-api.js +23 -0
  773. package/dist/frontend/ts7/rpc-api.js.map +1 -0
  774. package/dist/frontend/ts7/rpc-client.d.ts +27 -0
  775. package/dist/frontend/ts7/rpc-client.js +102 -0
  776. package/dist/frontend/ts7/rpc-client.js.map +1 -0
  777. package/dist/frontend/ts7/rpc-client.test.d.ts +1 -0
  778. package/dist/frontend/ts7/rpc-client.test.js +133 -0
  779. package/dist/frontend/ts7/rpc-client.test.js.map +1 -0
  780. package/dist/frontend/ts7/rpc-filesystem.d.ts +16 -0
  781. package/dist/frontend/ts7/rpc-filesystem.js +42 -0
  782. package/dist/frontend/ts7/rpc-filesystem.js.map +1 -0
  783. package/dist/frontend/ts7/rpc-filesystem.test.d.ts +1 -0
  784. package/dist/frontend/ts7/rpc-filesystem.test.js +89 -0
  785. package/dist/frontend/ts7/rpc-filesystem.test.js.map +1 -0
  786. package/dist/frontend/ts7/rpc-process.d.ts +2 -0
  787. package/dist/frontend/ts7/rpc-process.js +148 -0
  788. package/dist/frontend/ts7/rpc-process.js.map +1 -0
  789. package/dist/frontend/ts7/rpc-process.test.d.ts +1 -0
  790. package/dist/frontend/ts7/rpc-process.test.js +29 -0
  791. package/dist/frontend/ts7/rpc-process.test.js.map +1 -0
  792. package/dist/frontend/ts7/rpc-wire.d.ts +46 -0
  793. package/dist/frontend/ts7/rpc-wire.js +195 -0
  794. package/dist/frontend/ts7/rpc-wire.js.map +1 -0
  795. package/dist/frontend/ts7/rpc-wire.test.d.ts +1 -0
  796. package/dist/frontend/ts7/rpc-wire.test.js +168 -0
  797. package/dist/frontend/ts7/rpc-wire.test.js.map +1 -0
  798. package/dist/frontend/ts7/semantic-checker.d.ts +137 -0
  799. package/dist/frontend/ts7/semantic-checker.js +221 -0
  800. package/dist/frontend/ts7/semantic-checker.js.map +1 -0
  801. package/dist/frontend/ts7/semantic-checker.test.d.ts +1 -0
  802. package/dist/frontend/ts7/semantic-checker.test.js +119 -0
  803. package/dist/frontend/ts7/semantic-checker.test.js.map +1 -0
  804. package/dist/frontend/ts7/semantic-json.d.ts +5 -0
  805. package/dist/frontend/ts7/semantic-json.js +47 -0
  806. package/dist/frontend/ts7/semantic-json.js.map +1 -0
  807. package/dist/frontend/ts7/semantic-json.test.d.ts +1 -0
  808. package/dist/frontend/ts7/semantic-json.test.js +42 -0
  809. package/dist/frontend/ts7/semantic-json.test.js.map +1 -0
  810. package/dist/frontend/ts7/semantic-model.d.ts +222 -0
  811. package/dist/frontend/ts7/semantic-model.js +423 -0
  812. package/dist/frontend/ts7/semantic-model.js.map +1 -0
  813. package/dist/frontend/ts7/semantic-model.test.d.ts +1 -0
  814. package/dist/frontend/ts7/semantic-model.test.js +322 -0
  815. package/dist/frontend/ts7/semantic-model.test.js.map +1 -0
  816. package/dist/frontend/ts7/semantic-schema.generated.d.ts +283 -0
  817. package/dist/frontend/ts7/semantic-schema.generated.js +222 -0
  818. package/dist/frontend/ts7/semantic-schema.generated.js.map +1 -0
  819. package/dist/frontend/ts7/semantic-types.d.ts +5 -0
  820. package/dist/frontend/ts7/semantic-types.js +2 -0
  821. package/dist/frontend/ts7/semantic-types.js.map +1 -0
  822. package/dist/frontend/ts7/session-cache.d.ts +17 -0
  823. package/dist/frontend/ts7/session-cache.js +97 -0
  824. package/dist/frontend/ts7/session-cache.js.map +1 -0
  825. package/dist/frontend/ts7/session-cache.test.d.ts +1 -0
  826. package/dist/frontend/ts7/session-cache.test.js +87 -0
  827. package/dist/frontend/ts7/session-cache.test.js.map +1 -0
  828. package/dist/frontend/ts7/session-path.d.ts +18 -0
  829. package/dist/frontend/ts7/session-path.js +203 -0
  830. package/dist/frontend/ts7/session-path.js.map +1 -0
  831. package/dist/frontend/ts7/session-path.test.d.ts +1 -0
  832. package/dist/frontend/ts7/session-path.test.js +34 -0
  833. package/dist/frontend/ts7/session-path.test.js.map +1 -0
  834. package/dist/frontend/ts7/session-schema.generated.d.ts +167 -0
  835. package/dist/frontend/ts7/session-schema.generated.js +5 -0
  836. package/dist/frontend/ts7/session-schema.generated.js.map +1 -0
  837. package/dist/frontend/ts7/session-timing.d.ts +50 -0
  838. package/dist/frontend/ts7/session-timing.js +61 -0
  839. package/dist/frontend/ts7/session-timing.js.map +1 -0
  840. package/dist/frontend/ts7/session-timing.test.d.ts +1 -0
  841. package/dist/frontend/ts7/session-timing.test.js +52 -0
  842. package/dist/frontend/ts7/session-timing.test.js.map +1 -0
  843. package/dist/frontend/ts7/session.d.ts +105 -0
  844. package/dist/frontend/ts7/session.js +233 -0
  845. package/dist/frontend/ts7/session.js.map +1 -0
  846. package/dist/frontend/ts7/session.test.d.ts +1 -0
  847. package/dist/frontend/ts7/session.test.js +215 -0
  848. package/dist/frontend/ts7/session.test.js.map +1 -0
  849. package/dist/frontend/ts7/source-parser-node.d.ts +6 -0
  850. package/dist/frontend/ts7/source-parser-node.js +15 -0
  851. package/dist/frontend/ts7/source-parser-node.js.map +1 -0
  852. package/dist/frontend/ts7/source-parser.d.ts +25 -0
  853. package/dist/frontend/ts7/source-parser.js +96 -0
  854. package/dist/frontend/ts7/source-parser.js.map +1 -0
  855. package/dist/frontend/ts7/source-parser.test.d.ts +1 -0
  856. package/dist/frontend/ts7/source-parser.test.js +151 -0
  857. package/dist/frontend/ts7/source-parser.test.js.map +1 -0
  858. package/dist/frontend/ts7/syntax.d.ts +3 -0
  859. package/dist/frontend/ts7/syntax.js +4 -0
  860. package/dist/frontend/ts7/syntax.js.map +1 -0
  861. package/dist/frontend/tsc-codes.js +3 -0
  862. package/dist/frontend/tsc-codes.js.map +1 -1
  863. package/dist/frontend/type-mapper.d.ts +34 -18
  864. package/dist/frontend/type-mapper.js +552 -131
  865. package/dist/frontend/type-mapper.js.map +1 -1
  866. package/dist/frontend/type-mapper.test.js +146 -2
  867. package/dist/frontend/type-mapper.test.js.map +1 -1
  868. package/dist/frontend/union-discriminants.d.ts +16 -0
  869. package/dist/frontend/union-discriminants.js +98 -0
  870. package/dist/frontend/union-discriminants.js.map +1 -0
  871. package/dist/frontend/union-discriminants.test.d.ts +1 -0
  872. package/dist/frontend/union-discriminants.test.js +182 -0
  873. package/dist/frontend/union-discriminants.test.js.map +1 -0
  874. package/dist/index.d.ts +7 -198
  875. package/dist/index.js +369 -1572
  876. package/dist/index.js.map +1 -1
  877. package/dist/ir/analysis.d.ts +16 -4
  878. package/dist/ir/analysis.js +23 -4
  879. package/dist/ir/analysis.js.map +1 -1
  880. package/dist/ir/analysis.test.js +15 -2
  881. package/dist/ir/analysis.test.js.map +1 -1
  882. package/dist/ir/constant-tables.js +67 -49
  883. package/dist/ir/constant-tables.js.map +1 -1
  884. package/dist/ir/constant-tables.test.js +1 -1
  885. package/dist/ir/control-flow.d.ts +6 -0
  886. package/dist/ir/control-flow.js +142 -0
  887. package/dist/ir/control-flow.js.map +1 -0
  888. package/dist/ir/control-flow.test.d.ts +1 -0
  889. package/dist/ir/control-flow.test.js +113 -0
  890. package/dist/ir/control-flow.test.js.map +1 -0
  891. package/dist/ir/integer-loops.js +7 -18
  892. package/dist/ir/integer-loops.js.map +1 -1
  893. package/dist/ir/integer-ranges.js +53 -27
  894. package/dist/ir/integer-ranges.js.map +1 -1
  895. package/dist/ir/ir.d.ts +334 -176
  896. package/dist/ir/ir.js +710 -903
  897. package/dist/ir/ir.js.map +1 -1
  898. package/dist/ir/ir.test.js +162 -1
  899. package/dist/ir/ir.test.js.map +1 -1
  900. package/dist/ir/scalar-records.js +165 -134
  901. package/dist/ir/scalar-records.js.map +1 -1
  902. package/dist/ir/scalar-records.test.js +1 -1
  903. package/dist/ir/serialize.d.ts +4 -2
  904. package/dist/ir/serialize.js +33 -14
  905. package/dist/ir/serialize.js.map +1 -1
  906. package/dist/ir/serialize.test.d.ts +1 -0
  907. package/dist/ir/serialize.test.js +57 -0
  908. package/dist/ir/serialize.test.js.map +1 -0
  909. package/dist/ir/traverse.d.ts +41 -0
  910. package/dist/ir/traverse.js +660 -0
  911. package/dist/ir/traverse.js.map +1 -0
  912. package/dist/ir/traverse.test.d.ts +1 -0
  913. package/dist/ir/traverse.test.js +242 -0
  914. package/dist/ir/traverse.test.js.map +1 -0
  915. package/dist/ir/validate.js +2018 -1498
  916. package/dist/ir/validate.js.map +1 -1
  917. package/dist/ir/validate.test.js +536 -2
  918. package/dist/ir/validate.test.js.map +1 -1
  919. package/dist/library/cache-primitives.d.ts +2 -3
  920. package/dist/library/cache-primitives.js +4 -6
  921. package/dist/library/cache-primitives.js.map +1 -1
  922. package/dist/library/fence-eval.js +2 -2
  923. package/dist/library/fence-eval.js.map +1 -1
  924. package/dist/library/int-infer.js +7 -6
  925. package/dist/library/int-infer.js.map +1 -1
  926. package/dist/library/int-infer.test.js +4 -4
  927. package/dist/library/library-cache.d.ts +3 -2
  928. package/dist/library/library-cache.js +5 -17
  929. package/dist/library/library-cache.js.map +1 -1
  930. package/dist/library/library-cache.test.js +54 -41
  931. package/dist/library/library-cache.test.js.map +1 -1
  932. package/dist/library/library-profile.d.ts +3 -1
  933. package/dist/library/library-profile.js +15 -6
  934. package/dist/library/library-profile.js.map +1 -1
  935. package/dist/library/prepare.d.ts +15 -0
  936. package/dist/library/prepare.js +584 -0
  937. package/dist/library/prepare.js.map +1 -0
  938. package/dist/library/semantic-source.d.ts +1 -1
  939. package/dist/library/semantic-source.js +8 -6
  940. package/dist/library/semantic-source.js.map +1 -1
  941. package/dist/library/sidecar-validate.js +4 -4
  942. package/dist/library/sidecar-validate.js.map +1 -1
  943. package/dist/library/sidecar.d.ts +2 -0
  944. package/dist/library/sidecar.js +10 -3
  945. package/dist/library/sidecar.js.map +1 -1
  946. package/dist/native/cache.d.ts +11 -0
  947. package/dist/native/cache.js +113 -0
  948. package/dist/native/cache.js.map +1 -0
  949. package/dist/native/cache.test.d.ts +1 -0
  950. package/dist/native/cache.test.js +66 -0
  951. package/dist/native/cache.test.js.map +1 -0
  952. package/dist/native/cli.d.ts +1 -0
  953. package/dist/native/cli.js +112 -0
  954. package/dist/native/cli.js.map +1 -0
  955. package/dist/native/compiler.d.ts +15 -0
  956. package/dist/native/compiler.js +336 -0
  957. package/dist/native/compiler.js.map +1 -0
  958. package/dist/native/compiler.test.d.ts +1 -0
  959. package/dist/native/compiler.test.js +174 -0
  960. package/dist/native/compiler.test.js.map +1 -0
  961. package/dist/native/comptime.d.ts +5 -0
  962. package/dist/native/comptime.js +73 -0
  963. package/dist/native/comptime.js.map +1 -0
  964. package/dist/native/comptime.test.d.ts +1 -0
  965. package/dist/native/comptime.test.js +65 -0
  966. package/dist/native/comptime.test.js.map +1 -0
  967. package/dist/native/executable-cache.d.ts +26 -0
  968. package/dist/native/executable-cache.js +228 -0
  969. package/dist/native/executable-cache.js.map +1 -0
  970. package/dist/native/executable-cache.test.d.ts +1 -0
  971. package/dist/native/executable-cache.test.js +151 -0
  972. package/dist/native/executable-cache.test.js.map +1 -0
  973. package/dist/native/file-identity.d.ts +4 -0
  974. package/dist/native/file-identity.js +14 -0
  975. package/dist/native/file-identity.js.map +1 -0
  976. package/dist/native/file-identity.test.d.ts +1 -0
  977. package/dist/native/file-identity.test.js +43 -0
  978. package/dist/native/file-identity.test.js.map +1 -0
  979. package/dist/native/library.d.ts +22 -0
  980. package/dist/native/library.js +83 -0
  981. package/dist/native/library.js.map +1 -0
  982. package/dist/native/prepare.d.ts +21 -0
  983. package/dist/native/prepare.js +174 -0
  984. package/dist/native/prepare.js.map +1 -0
  985. package/dist/native/prepare.test.d.ts +1 -0
  986. package/dist/native/prepare.test.js +70 -0
  987. package/dist/native/prepare.test.js.map +1 -0
  988. package/dist/native/sanitizer.d.ts +11 -0
  989. package/dist/native/sanitizer.js +137 -0
  990. package/dist/native/sanitizer.js.map +1 -0
  991. package/dist/native/sanitizer.test.d.ts +1 -0
  992. package/dist/native/sanitizer.test.js +58 -0
  993. package/dist/native/sanitizer.test.js.map +1 -0
  994. package/dist/native/task.d.ts +4 -0
  995. package/dist/native/task.js +16 -0
  996. package/dist/native/task.js.map +1 -0
  997. package/dist/native/task.test.d.ts +1 -0
  998. package/dist/native/task.test.js +17 -0
  999. package/dist/native/task.test.js.map +1 -0
  1000. package/dist/native/toolchain.d.ts +45 -0
  1001. package/dist/native/toolchain.js +94 -0
  1002. package/dist/native/toolchain.js.map +1 -0
  1003. package/dist/native/toolchain.test.d.ts +1 -0
  1004. package/dist/native/toolchain.test.js +85 -0
  1005. package/dist/native/toolchain.test.js.map +1 -0
  1006. package/dist/startup-cache.d.ts +1 -1
  1007. package/dist/startup-cache.js +2 -5
  1008. package/dist/startup-cache.js.map +1 -1
  1009. package/dist/timing.d.ts +4 -0
  1010. package/dist/timing.js +19 -0
  1011. package/dist/timing.js.map +1 -0
  1012. package/dist/wasi-paths.js +10 -7
  1013. package/dist/wasi-paths.js.map +1 -1
  1014. package/package.json +28 -19
  1015. package/surface-manifest.json +107 -98
  1016. package/dist/backend/c/async.d.ts +0 -171
  1017. package/dist/backend/c/async.js +0 -1317
  1018. package/dist/backend/c/async.js.map +0 -1
  1019. package/dist/backend/c/c-emitter.d.ts +0 -536
  1020. package/dist/backend/c/c-emitter.js +0 -1932
  1021. package/dist/backend/c/c-emitter.js.map +0 -1
  1022. package/dist/backend/c/exprs.d.ts +0 -15
  1023. package/dist/backend/c/exprs.js +0 -8847
  1024. package/dist/backend/c/exprs.js.map +0 -1
  1025. package/dist/backend/c/island.d.ts +0 -45
  1026. package/dist/backend/c/island.js +0 -281
  1027. package/dist/backend/c/island.js.map +0 -1
  1028. package/dist/backend/c/may-throw.js.map +0 -1
  1029. package/dist/backend/c/shapes.d.ts +0 -142
  1030. package/dist/backend/c/shapes.js +0 -603
  1031. package/dist/backend/c/shapes.js.map +0 -1
  1032. package/dist/backend/c/stmts.d.ts +0 -76
  1033. package/dist/backend/c/stmts.js +0 -1108
  1034. package/dist/backend/c/stmts.js.map +0 -1
  1035. package/dist/backend/c/types.d.ts +0 -71
  1036. package/dist/backend/c/types.js +0 -459
  1037. package/dist/backend/c/types.js.map +0 -1
  1038. package/dist/backend/c/types.test.js +0 -32
  1039. package/dist/backend/c/types.test.js.map +0 -1
  1040. package/dist/backend/c/walkers.d.ts +0 -134
  1041. package/dist/backend/c/walkers.js +0 -1772
  1042. package/dist/backend/c/walkers.js.map +0 -1
  1043. /package/dist/backend/{c/types.test.d.ts → cycle-analysis.test.d.ts} +0 -0
@@ -1,3 +1,4 @@
1
+ import { CheckerCache } from "./checker-cache.js";
1
2
  import { InternalCompilerError } from "../../errors.js";
2
3
  import { walkPreorder } from "./ast.js";
3
4
  import { SignatureKind, SyntaxKind, TypeFlags } from "./enums.js";
@@ -57,19 +58,11 @@ const TYPE_PREFETCH_KINDS = new Set([
57
58
  SyntaxKind.ArrayLiteralExpression,
58
59
  SyntaxKind.ConditionalExpression,
59
60
  ]);
60
- /** The TypeScript 7 client identity-dedupes immutable types but does not
61
- * memoize Type.getTypes(): every union/intersection inspection otherwise
62
- * repeats getTypesOfType over IPC. Keep that derived answer beside the
63
- * adapter, shared by preflight and lowering regardless of which facade
64
- * helper led to the type. */
65
- const constituentTypesOf = new WeakMap();
61
+ /** Constituents are owned by the type's semantic project. The type checks
62
+ * its lifetime even for warm reads, and releases cached references when
63
+ * that project is disposed. No process-global cache retains old snapshots. */
66
64
  export function constituentTypes(type) {
67
- let types = constituentTypesOf.get(type);
68
- if (types === undefined) {
69
- types = type.getTypes() ?? [];
70
- constituentTypesOf.set(type, types);
71
- }
72
- return types;
65
+ return type.getTypes() ?? [];
73
66
  }
74
67
  /** Function-like declarations whose body is deferred until reachability
75
68
  * asks for it. Header prefetch walks their names, type parameters, params,
@@ -138,51 +131,24 @@ function collectNodes(roots, walk = "all") {
138
131
  export class CheckerFacade {
139
132
  raw;
140
133
  options;
141
- /** Node-keyed memos. `undefined` results are represented by map presence
142
- * (WeakMap.has), so misses and cached-undefined are distinguishable. */
143
- typeAtLocation = new WeakMap();
144
- symbolAtLocation = new WeakMap();
145
- contextualType = new WeakMap();
146
- typeFromTypeNode = new WeakMap();
147
- shorthandValueSymbol = new WeakMap();
148
- resolvedSignature = new WeakMap();
149
- signatureFromDeclaration = new WeakMap();
150
- /** Symbol-keyed memos. */
151
- typeOfSymbol = new WeakMap();
152
- aliasedSymbol = new WeakMap();
153
- declaredTypeOfSymbol = new WeakMap();
154
- /** Type-keyed memos. */
155
- baseTypeOfLiteral = new WeakMap();
156
- nonNullableType = new WeakMap();
157
- propertiesOfType = new WeakMap();
158
- indexInfosOfType = new WeakMap();
159
- typeArgumentsOf = new WeakMap();
160
- arrayTypeAnswer = new WeakMap();
161
- arrayLikeAnswer = new WeakMap();
162
- typeStringOf = new WeakMap();
163
- awaitedTypeOf = new WeakMap();
164
- /** Signature-keyed memos. */
165
- returnTypeOf = new WeakMap();
166
- typePredicateOf = new WeakMap();
167
- /** Files whose nodes have been batch-prefetched, per query kind. */
168
- prefetchedTypes = new WeakSet();
169
- prefetchedSymbols = new WeakSet();
170
- /** Files owned by explicit phase-aware prefetch. A miss in one of these
171
- * files must stay a direct memoized query; falling back to whole-file
172
- * prefetch would silently pull every unreachable body back into a build. */
173
- managedTypes = new WeakSet();
174
- managedSymbols = new WeakSet();
175
- unknownType = null;
176
- /** Intrinsic singletons (string/number/bigint/boolean), fetched once. */
177
- intrinsics = new Map();
178
- tupleTypeAnswer = new WeakMap();
134
+ cache = new CheckerCache();
179
135
  constructor(
180
136
  /** The underlying 7.0.2 sync checker — exposed for methods the facade
181
137
  * does not shim; going around the facade forfeits memoization only. */
182
138
  raw, options = {}) {
183
139
  this.raw = raw;
184
140
  this.options = options;
141
+ const cache = this.cache;
142
+ raw.project.onDispose(() => cache.dispose());
143
+ }
144
+ ensureActive() {
145
+ this.cache.ensureActive();
146
+ this.raw.project.ensureActive();
185
147
  }
148
+ /** Eagerly release memoized answers when a facade is no longer needed.
149
+ * The semantic project also owns this cleanup, covering session close
150
+ * and snapshot disposal even when callers retain the facade. */
151
+ dispose() { this.cache.dispose(); }
186
152
  /* ── the symbol-declaration surface (phase 3) ─────────────────────────
187
153
  * 7's Symbol carries declarations as NodeHandles (server references),
188
154
  * where 5.9.3 handed out the nodes themselves. The lowering reads
@@ -190,8 +156,6 @@ export class CheckerFacade {
190
156
  * the resolve step (NodeHandle.resolve into the client AST — identity-
191
157
  * stable, probe-verified) and memoizes per symbol. Requires the project
192
158
  * the symbols came from (options.project — Ts7Program supplies it). */
193
- declsOf = new WeakMap();
194
- valueDeclOf = new WeakMap();
195
159
  requireProject() {
196
160
  const project = this.options.project;
197
161
  if (!project)
@@ -201,57 +165,75 @@ export class CheckerFacade {
201
165
  /** 5.9.3's symbol.declarations (never undefined here: 7 answers an empty
202
166
  * array where 5.9.3 answered undefined — callers treat them alike). */
203
167
  declarationsOf(symbol) {
204
- let decls = this.declsOf.get(symbol);
168
+ this.ensureActive();
169
+ let decls = this.cache.declsOf.get(symbol);
205
170
  if (decls === undefined) {
206
171
  const project = this.requireProject();
207
- decls = symbol.declarations
208
- .map((h) => h.resolve(project))
209
- .filter((n) => n !== undefined);
210
- this.declsOf.set(symbol, decls);
172
+ const resolved = [];
173
+ for (const handle of symbol.declarations) {
174
+ const node = handle.resolve(project);
175
+ if (node !== undefined)
176
+ resolved.push(node);
177
+ }
178
+ decls = resolved;
179
+ this.cache.declsOf.set(symbol, decls);
211
180
  }
212
181
  return decls;
213
182
  }
214
183
  /** 5.9.3's symbol.valueDeclaration. */
215
184
  valueDeclarationOf(symbol) {
216
- if (this.valueDeclOf.has(symbol))
217
- return this.valueDeclOf.get(symbol);
185
+ this.ensureActive();
186
+ if (this.cache.valueDeclOf.has(symbol))
187
+ return this.cache.valueDeclOf.get(symbol);
218
188
  const decl = symbol.valueDeclaration?.resolve(this.requireProject());
219
- this.valueDeclOf.set(symbol, decl);
189
+ this.cache.valueDeclOf.set(symbol, decl);
220
190
  return decl;
221
191
  }
222
192
  /** 5.9.3's signature.getDeclaration() (undefined for synthesized
223
193
  * signatures — same contract as sig.declaration there). */
224
194
  signatureDeclaration(signature) {
225
- if (this.sigDeclOf.has(signature))
226
- return this.sigDeclOf.get(signature);
195
+ this.ensureActive();
196
+ if (this.cache.sigDeclOf.has(signature))
197
+ return this.cache.sigDeclOf.get(signature);
227
198
  const decl = signature.declaration?.resolve(this.requireProject());
228
- this.sigDeclOf.set(signature, decl);
199
+ this.cache.sigDeclOf.set(signature, decl);
229
200
  return decl;
230
201
  }
231
- sigDeclOf = new WeakMap();
232
202
  /** 5.9.3's type.getCallSignatures(). */
233
203
  getCallSignatures(type) {
234
- let sigs = this.callSigsOf.get(type);
204
+ this.ensureActive();
205
+ let sigs = this.cache.callSigsOf.get(type);
235
206
  if (sigs === undefined) {
236
207
  sigs = this.raw.getSignaturesOfType(type, SignatureKind.Call);
237
- this.callSigsOf.set(type, sigs);
208
+ this.cache.callSigsOf.set(type, sigs);
238
209
  }
239
210
  return sigs;
240
211
  }
241
- callSigsOf = new WeakMap();
242
212
  /** 5.9.3's type.getConstructSignatures(). */
243
213
  getConstructSignatures(type) {
244
- let sigs = this.ctorSigsOf.get(type);
214
+ this.ensureActive();
215
+ let sigs = this.cache.ctorSigsOf.get(type);
245
216
  if (sigs === undefined) {
246
217
  sigs = this.raw.getSignaturesOfType(type, SignatureKind.Construct);
247
- this.ctorSigsOf.set(type, sigs);
218
+ this.cache.ctorSigsOf.set(type, sigs);
248
219
  }
249
220
  return sigs;
250
221
  }
251
- ctorSigsOf = new WeakMap();
252
222
  /** 5.9.3's type.getProperty(name). */
253
223
  getPropertyOfType(type, name) {
254
- return this.raw.getPropertyOfType(type, name);
224
+ this.ensureActive();
225
+ let properties = this.cache.propertyOfType.get(type);
226
+ if (properties === undefined) {
227
+ properties = new Map();
228
+ this.cache.propertyOfType.set(type, properties);
229
+ }
230
+ // Absence is an answer too. Both keys belong to this immutable project;
231
+ // another snapshot or project must ask its own checker.
232
+ if (properties.has(name))
233
+ return properties.get(name);
234
+ const symbol = this.raw.getPropertyOfType(type, name);
235
+ properties.set(name, symbol);
236
+ return symbol;
255
237
  }
256
238
  /** The 5.9.3 checker never answered undefined from getTypeAtLocation-
257
239
  * family queries (errorType/anyType stood in); the 7 client loosens them
@@ -267,6 +249,7 @@ export class CheckerFacade {
267
249
  * surfaced — the per-file hook that turns the lowering's walk into three
268
250
  * array requests instead of thousands of round trips. */
269
251
  prefetchSourceFile(sf) {
252
+ this.ensureActive();
270
253
  this.prefetchTypes(sf);
271
254
  this.prefetchSymbols(sf);
272
255
  }
@@ -276,6 +259,7 @@ export class CheckerFacade {
276
259
  * bodies wait for reachability. Calling this also opts the files out of
277
260
  * accidental whole-file first-miss prefetch. */
278
261
  prefetchSourceFileStructures(files) {
262
+ this.ensureActive();
279
263
  this.markManaged(files);
280
264
  this.prefetchNodes(collectNodes(files, "structure"));
281
265
  }
@@ -284,6 +268,7 @@ export class CheckerFacade {
284
268
  * worklist wave. The roots may overlap; identity deduplication and the
285
269
  * answer memos make warm repeats free. */
286
270
  prefetchRoots(roots) {
271
+ this.ensureActive();
287
272
  this.markManaged(roots);
288
273
  this.prefetchNodes(collectNodes(roots, "reachable"));
289
274
  }
@@ -292,18 +277,21 @@ export class CheckerFacade {
292
277
  * analyses that themselves inspect deferred bodies for binding identity:
293
278
  * those scans need symbols, but do not consume the symbols' types. */
294
279
  prefetchSymbolRoots(roots) {
280
+ this.ensureActive();
295
281
  this.markManaged(roots);
296
282
  this.prefetchSymbolNodes(collectNodes(roots), false, false);
297
283
  }
298
284
  /** Exact-node sibling of prefetchSymbolRoots for analyses that first
299
285
  * narrow a large AST walk to the identifier spellings they compare. */
300
286
  prefetchSymbolNodesExact(nodes) {
287
+ this.ensureActive();
301
288
  this.markManaged(nodes);
302
289
  this.prefetchSymbolNodes([...new Set(nodes)], false, false);
303
290
  }
304
291
  /** Batches the hot getTypeAtLocation nodes structure collection may read
305
292
  * despite their runtime expressions being reachability-deferred. */
306
293
  prefetchCollectionTypes(nodes) {
294
+ this.ensureActive();
307
295
  this.markManaged(nodes);
308
296
  // Match ordinary whole-file prefetch's hot-kind boundary. Collection
309
297
  // asks some defaults conditionally; uncommon cold expressions should
@@ -317,20 +305,21 @@ export class CheckerFacade {
317
305
  * on non-identifiers. Descendants of symbol roots join because computed
318
306
  * `this[key]` declarations resolve the key identifier too. */
319
307
  prefetchClassCollection(typeNodes, symbolRoots) {
308
+ this.ensureActive();
320
309
  this.markManaged([...typeNodes, ...symbolRoots]);
321
310
  this.prefetchExactTypeNodes(typeNodes);
322
311
  this.prefetchSymbolNodes(collectNodes(symbolRoots, "reachable"), true);
323
312
  }
324
313
  prefetchExactTypeNodes(typeNodes) {
325
- const distinctTypes = [...new Set(typeNodes)].filter((node) => !this.typeAtLocation.has(node));
314
+ const distinctTypes = [...new Set(typeNodes)].filter((node) => !this.cache.typeAtLocation.has(node));
326
315
  const types = chunked(distinctTypes, (chunk) => this.typesWithPanicFence(chunk));
327
- distinctTypes.forEach((node, index) => this.typeAtLocation.set(node, types[index]));
316
+ distinctTypes.forEach((node, index) => this.cache.typeAtLocation.set(node, types[index]));
328
317
  }
329
318
  markManaged(roots) {
330
319
  for (const root of roots) {
331
320
  const sf = root.getSourceFile();
332
- this.managedTypes.add(sf);
333
- this.managedSymbols.add(sf);
321
+ this.cache.managedTypes.add(sf);
322
+ this.cache.managedSymbols.add(sf);
334
323
  }
335
324
  }
336
325
  prefetchNodes(nodes) {
@@ -338,15 +327,15 @@ export class CheckerFacade {
338
327
  this.prefetchSymbolNodes(nodes);
339
328
  }
340
329
  prefetchTypes(sf) {
341
- if (this.prefetchedTypes.has(sf))
330
+ if (this.cache.prefetchedTypes.has(sf))
342
331
  return;
343
- this.prefetchedTypes.add(sf);
332
+ this.cache.prefetchedTypes.add(sf);
344
333
  this.prefetchTypeNodes(collectNodes([sf]));
345
334
  }
346
335
  prefetchTypeNodes(allNodes) {
347
- const nodes = allNodes.filter((n) => TYPE_PREFETCH_KINDS.has(n.kind) && !this.typeAtLocation.has(n));
336
+ const nodes = allNodes.filter((n) => TYPE_PREFETCH_KINDS.has(n.kind) && !this.cache.typeAtLocation.has(n));
348
337
  const types = chunked(nodes, (chunk) => this.typesWithPanicFence(chunk));
349
- nodes.forEach((n, i) => this.typeAtLocation.set(n, types[i]));
338
+ nodes.forEach((n, i) => this.cache.typeAtLocation.set(n, types[i]));
350
339
  }
351
340
  /** withPanicFence over the type sweep (observed panic: GetTypeAtLocation
352
341
  * over an unresolved npm import's clause — a server-side nil deref). */
@@ -354,70 +343,77 @@ export class CheckerFacade {
354
343
  return withPanicFence(chunk, (c) => this.raw.getTypeAtLocation(c));
355
344
  }
356
345
  prefetchSymbols(sf) {
357
- if (this.prefetchedSymbols.has(sf))
346
+ if (this.cache.prefetchedSymbols.has(sf))
358
347
  return;
359
- this.prefetchedSymbols.add(sf);
348
+ this.cache.prefetchedSymbols.add(sf);
360
349
  this.prefetchSymbolNodes(collectNodes([sf]));
361
350
  }
362
351
  prefetchSymbolNodes(allNodes, includePropertyAccess = false, prefetchSymbolTypes = true) {
363
352
  const symbolNodes = allNodes.filter((n) => (n.kind === SyntaxKind.Identifier ||
364
353
  (includePropertyAccess && n.kind === SyntaxKind.PropertyAccessExpression)));
365
- const nodes = symbolNodes.filter((n) => !this.symbolAtLocation.has(n));
354
+ const nodes = symbolNodes.filter((n) => !this.cache.symbolAtLocation.has(n));
366
355
  // The same bisecting panic fence as the type sweep: tsgo panics on
367
356
  // SYMBOL queries too (observed: GetSymbolAtLocation over an
368
357
  // `import.defer(...)` callee — the sweep's batch must not turn one
369
358
  // poisonous node into a build crash).
370
359
  const symbols = chunked(nodes, (chunk) => withPanicFence(chunk, (c) => this.raw.getSymbolAtLocation(c)));
371
- nodes.forEach((n, i) => this.symbolAtLocation.set(n, symbols[i]));
360
+ nodes.forEach((n, i) => this.cache.symbolAtLocation.set(n, symbols[i]));
372
361
  if (!prefetchSymbolTypes)
373
362
  return;
374
363
  // The walk's companion query: types of the symbols the file mentions.
375
364
  // Include warm node answers too: a preceding symbol-only analysis may
376
365
  // have populated symbolAtLocation without fetching symbol types, and a
377
366
  // later reachable-body wave must still batch those missing types.
378
- const distinct = [
379
- ...new Set(symbolNodes
380
- .map((node) => this.symbolAtLocation.get(node))
381
- .filter((symbol) => symbol !== undefined)),
382
- ].filter((symbol) => !this.typeOfSymbol.has(symbol));
367
+ const distinct = [];
368
+ const seen = new Set();
369
+ for (const node of symbolNodes) {
370
+ const symbol = this.cache.symbolAtLocation.get(node);
371
+ if (symbol === undefined || seen.has(symbol) || this.cache.typeOfSymbol.has(symbol))
372
+ continue;
373
+ seen.add(symbol);
374
+ distinct.push(symbol);
375
+ }
383
376
  const symbolTypes = chunked(distinct, (chunk) => withPanicFence(chunk, (c) => this.raw.getTypeOfSymbol(c)));
384
- distinct.forEach((s, i) => this.typeOfSymbol.set(s, symbolTypes[i]));
377
+ distinct.forEach((s, i) => this.cache.typeOfSymbol.set(s, symbolTypes[i]));
385
378
  }
386
379
  autoPrefetch(node, kind) {
387
380
  if (this.options.autoPrefetch === false)
388
381
  return;
389
382
  const sf = node.getSourceFile();
390
383
  if (kind === "types") {
391
- if (!this.managedTypes.has(sf))
384
+ if (!this.cache.managedTypes.has(sf))
392
385
  this.prefetchTypes(sf);
393
386
  }
394
- else if (!this.managedSymbols.has(sf)) {
387
+ else if (!this.cache.managedSymbols.has(sf)) {
395
388
  this.prefetchSymbols(sf);
396
389
  }
397
390
  }
398
391
  getTypeAtLocation(node) {
399
- if (this.typeAtLocation.has(node))
400
- return this.typeAtLocation.get(node) ?? this.anyType();
392
+ this.ensureActive();
393
+ if (this.cache.typeAtLocation.has(node))
394
+ return this.cache.typeAtLocation.get(node) ?? this.anyType();
401
395
  this.autoPrefetch(node, "types");
402
- if (this.typeAtLocation.has(node))
403
- return this.typeAtLocation.get(node) ?? this.anyType();
396
+ if (this.cache.typeAtLocation.has(node))
397
+ return this.cache.typeAtLocation.get(node) ?? this.anyType();
404
398
  const type = this.raw.getTypeAtLocation(node);
405
- this.typeAtLocation.set(node, type);
399
+ this.cache.typeAtLocation.set(node, type);
406
400
  return type ?? this.anyType();
407
401
  }
408
402
  getSymbolAtLocation(node) {
409
- if (this.symbolAtLocation.has(node))
410
- return this.symbolAtLocation.get(node);
403
+ this.ensureActive();
404
+ if (this.cache.symbolAtLocation.has(node))
405
+ return this.cache.symbolAtLocation.get(node);
411
406
  this.autoPrefetch(node, "symbols");
412
- if (this.symbolAtLocation.has(node))
413
- return this.symbolAtLocation.get(node);
407
+ if (this.cache.symbolAtLocation.has(node))
408
+ return this.cache.symbolAtLocation.get(node);
414
409
  const symbol = this.raw.getSymbolAtLocation(node);
415
- this.symbolAtLocation.set(node, symbol);
410
+ this.cache.symbolAtLocation.set(node, symbol);
416
411
  return symbol;
417
412
  }
418
413
  getTypeOfSymbol(symbol) {
419
- if (this.typeOfSymbol.has(symbol))
420
- return this.typeOfSymbol.get(symbol) ?? this.anyType();
414
+ this.ensureActive();
415
+ if (this.cache.typeOfSymbol.has(symbol))
416
+ return this.cache.typeOfSymbol.get(symbol) ?? this.anyType();
421
417
  // The direct (memo-miss) path wears the same panic fence as the
422
418
  // prefetch sweep: symbols the sweep never saw (members resolved from
423
419
  // other files' d.ts) can hit the identical server panics (observed:
@@ -425,72 +421,81 @@ export class CheckerFacade {
425
421
  // engine graph), and the fence's answer is the sweep's — undefined,
426
422
  // presented as `any`.
427
423
  const [type] = withPanicFence([symbol], (c) => this.raw.getTypeOfSymbol(c));
428
- this.typeOfSymbol.set(symbol, type);
424
+ this.cache.typeOfSymbol.set(symbol, type);
429
425
  return type ?? this.anyType();
430
426
  }
431
427
  getAliasedSymbol(symbol) {
432
- let aliased = this.aliasedSymbol.get(symbol);
428
+ this.ensureActive();
429
+ let aliased = this.cache.aliasedSymbol.get(symbol);
433
430
  if (aliased === undefined) {
434
431
  aliased = this.raw.getAliasedSymbol(symbol);
435
- this.aliasedSymbol.set(symbol, aliased);
432
+ this.cache.aliasedSymbol.set(symbol, aliased);
436
433
  }
437
434
  return aliased;
438
435
  }
439
436
  getDeclaredTypeOfSymbol(symbol) {
440
- let type = this.declaredTypeOfSymbol.get(symbol);
437
+ this.ensureActive();
438
+ let type = this.cache.declaredTypeOfSymbol.get(symbol);
441
439
  if (type === undefined) {
442
440
  type = this.raw.getDeclaredTypeOfSymbol(symbol);
443
- this.declaredTypeOfSymbol.set(symbol, type);
441
+ this.cache.declaredTypeOfSymbol.set(symbol, type);
444
442
  }
445
443
  return type;
446
444
  }
447
445
  getContextualType(node) {
448
- if (this.contextualType.has(node))
449
- return this.contextualType.get(node);
446
+ this.ensureActive();
447
+ if (this.cache.contextualType.has(node))
448
+ return this.cache.contextualType.get(node);
450
449
  const type = this.raw.getContextualType(node);
451
- this.contextualType.set(node, type);
450
+ this.cache.contextualType.set(node, type);
452
451
  return type;
453
452
  }
454
453
  getTypeFromTypeNode(node) {
455
- if (this.typeFromTypeNode.has(node))
456
- return this.typeFromTypeNode.get(node) ?? this.anyType();
454
+ this.ensureActive();
455
+ if (this.cache.typeFromTypeNode.has(node))
456
+ return this.cache.typeFromTypeNode.get(node) ?? this.anyType();
457
457
  const type = this.raw.getTypeFromTypeNode(node);
458
- this.typeFromTypeNode.set(node, type);
458
+ this.cache.typeFromTypeNode.set(node, type);
459
459
  return type ?? this.anyType();
460
460
  }
461
461
  getShorthandAssignmentValueSymbol(node) {
462
- if (this.shorthandValueSymbol.has(node))
463
- return this.shorthandValueSymbol.get(node);
462
+ this.ensureActive();
463
+ if (this.cache.shorthandValueSymbol.has(node))
464
+ return this.cache.shorthandValueSymbol.get(node);
464
465
  const symbol = this.raw.getShorthandAssignmentValueSymbol(node);
465
- this.shorthandValueSymbol.set(node, symbol);
466
+ this.cache.shorthandValueSymbol.set(node, symbol);
466
467
  return symbol;
467
468
  }
468
469
  getResolvedSignature(node) {
469
- if (this.resolvedSignature.has(node))
470
- return this.resolvedSignature.get(node);
470
+ this.ensureActive();
471
+ if (this.cache.resolvedSignature.has(node))
472
+ return this.cache.resolvedSignature.get(node);
471
473
  const signature = this.raw.getResolvedSignature(node);
472
- this.resolvedSignature.set(node, signature);
474
+ this.cache.resolvedSignature.set(node, signature);
473
475
  return signature;
474
476
  }
475
477
  getSignatureFromDeclaration(node) {
476
- if (this.signatureFromDeclaration.has(node))
477
- return this.signatureFromDeclaration.get(node);
478
+ this.ensureActive();
479
+ if (this.cache.signatureFromDeclaration.has(node))
480
+ return this.cache.signatureFromDeclaration.get(node);
478
481
  const signature = this.raw.getSignatureFromDeclaration(node);
479
- this.signatureFromDeclaration.set(node, signature);
482
+ this.cache.signatureFromDeclaration.set(node, signature);
480
483
  return signature;
481
484
  }
482
485
  getReturnTypeOfSignature(signature) {
483
- if (this.returnTypeOf.has(signature))
484
- return this.returnTypeOf.get(signature) ?? this.anyType();
486
+ this.ensureActive();
487
+ if (this.cache.returnTypeOf.has(signature))
488
+ return this.cache.returnTypeOf.get(signature) ?? this.anyType();
485
489
  const type = this.raw.getReturnTypeOfSignature(signature);
486
- this.returnTypeOf.set(signature, type);
490
+ this.cache.returnTypeOf.set(signature, type);
487
491
  return type ?? this.anyType();
488
492
  }
489
493
  getTypePredicateOfSignature(signature) {
490
- if (this.typePredicateOf.has(signature))
491
- return this.typePredicateOf.get(signature);
494
+ this.ensureActive();
495
+ if (this.cache.typePredicateOf.has(signature))
496
+ return this.cache.typePredicateOf.get(signature);
492
497
  const predicate = this.raw.getTypePredicateOfSignature(signature);
493
- this.typePredicateOf.set(signature, predicate);
498
+ this.cache.typePredicateOf.set(signature, predicate);
494
499
  return predicate;
495
500
  }
496
501
  /** 5.9.3 semantics, answered client-side wherever type.flags suffices:
@@ -498,7 +503,8 @@ export class CheckerFacade {
498
503
  * (one IPC ever per intrinsic); enum-ish and union types round-trip
499
504
  * (memoized); everything else is itself. */
500
505
  getBaseTypeOfLiteralType(type) {
501
- const memo = this.baseTypeOfLiteral.get(type);
506
+ this.ensureActive();
507
+ const memo = this.cache.baseTypeOfLiteral.get(type);
502
508
  if (memo !== undefined)
503
509
  return memo;
504
510
  const flags = type.flags;
@@ -521,14 +527,14 @@ export class CheckerFacade {
521
527
  else {
522
528
  base = type;
523
529
  }
524
- this.baseTypeOfLiteral.set(type, base);
530
+ this.cache.baseTypeOfLiteral.set(type, base);
525
531
  return base;
526
532
  }
527
533
  intrinsic(name, fetch) {
528
- let type = this.intrinsics.get(name);
534
+ let type = this.cache.intrinsics.get(name);
529
535
  if (type === undefined) {
530
536
  type = fetch();
531
- this.intrinsics.set(name, type);
537
+ this.cache.intrinsics.set(name, type);
532
538
  }
533
539
  return type;
534
540
  }
@@ -538,59 +544,106 @@ export class CheckerFacade {
538
544
  * (access-expression queries answer const enums only — same as 5.9.3 —
539
545
  * so the lowering resolves the member symbol and asks its declaration). */
540
546
  getConstantValue(node) {
541
- if (this.constantValueOf.has(node))
542
- return this.constantValueOf.get(node);
547
+ this.ensureActive();
548
+ if (this.cache.constantValueOf.has(node))
549
+ return this.cache.constantValueOf.get(node);
543
550
  const value = this.raw.getConstantValue(node);
544
- this.constantValueOf.set(node, value);
551
+ this.cache.constantValueOf.set(node, value);
545
552
  return value;
546
553
  }
547
- constantValueOf = new WeakMap();
548
554
  getNonNullableType(type) {
549
- if (this.nonNullableType.has(type))
550
- return this.nonNullableType.get(type) ?? type;
555
+ this.ensureActive();
556
+ if (this.cache.nonNullableType.has(type))
557
+ return this.cache.nonNullableType.get(type) ?? type;
551
558
  const result = this.raw.getNonNullableType(type);
552
- this.nonNullableType.set(type, result);
559
+ this.cache.nonNullableType.set(type, result);
553
560
  return result ?? type;
554
561
  }
555
562
  getPropertiesOfType(type) {
556
- let props = this.propertiesOfType.get(type);
563
+ this.ensureActive();
564
+ let props = this.cache.propertiesOfType.get(type);
557
565
  if (props === undefined) {
558
566
  props = this.raw.getPropertiesOfType(type);
559
- this.propertiesOfType.set(type, props);
567
+ this.cache.propertiesOfType.set(type, props);
560
568
  }
561
569
  return props;
562
570
  }
571
+ getBaseTypes(type) {
572
+ this.ensureActive();
573
+ let bases = this.cache.baseTypesOf.get(type);
574
+ if (bases === undefined) {
575
+ bases = this.raw.getBaseTypes(type);
576
+ this.cache.baseTypesOf.set(type, bases);
577
+ }
578
+ return bases;
579
+ }
580
+ /** Distributed intersections retain their original flags in the client
581
+ * even when conflicting discriminants reduce the type to never. Ask the
582
+ * checker for that semantic answer instead of inspecting display text. */
583
+ isNeverType(type) {
584
+ this.ensureActive();
585
+ if (type.flags & TypeFlags.Never)
586
+ return true;
587
+ if (!(type.flags & (TypeFlags.Intersection | TypeFlags.Union)))
588
+ return false;
589
+ let answer = this.cache.neverTypeAnswer.get(type);
590
+ if (answer === undefined) {
591
+ const never = this.intrinsic("never", () => this.raw.getNeverType());
592
+ answer = this.raw.isTypeAssignableTo(type, never);
593
+ this.cache.neverTypeAnswer.set(type, answer);
594
+ }
595
+ return answer;
596
+ }
597
+ isTypeAssignableTo(source, target) {
598
+ this.ensureActive();
599
+ if (source === target)
600
+ return true;
601
+ let targets = this.cache.assignableTypes.get(source);
602
+ if (targets === undefined) {
603
+ targets = new Map();
604
+ this.cache.assignableTypes.set(source, targets);
605
+ }
606
+ let answer = targets.get(target);
607
+ if (answer === undefined) {
608
+ answer = this.raw.isTypeAssignableTo(source, target);
609
+ targets.set(target, answer);
610
+ }
611
+ return answer;
612
+ }
563
613
  getIndexInfosOfType(type) {
564
- let infos = this.indexInfosOfType.get(type);
614
+ this.ensureActive();
615
+ let infos = this.cache.indexInfosOfType.get(type);
565
616
  if (infos === undefined) {
566
617
  infos = this.raw.getIndexInfosOfType(type);
567
- this.indexInfosOfType.set(type, infos);
618
+ this.cache.indexInfosOfType.set(type, infos);
568
619
  }
569
620
  return infos;
570
621
  }
571
622
  getTypeArguments(type) {
572
- let args = this.typeArgumentsOf.get(type);
623
+ this.ensureActive();
624
+ let args = this.cache.typeArgumentsOf.get(type);
573
625
  if (args === undefined) {
574
626
  // 5.9.3 answered [] for a non-reference passed by cast (the lowering
575
627
  // leans on that — a concretely-declared interface takes the same
576
628
  // path as its generic @types twin); tsgo PANICS on it, so the
577
629
  // reference check happens client-side (free — objectFlags).
578
630
  args = type.isTypeReference() ? this.raw.getTypeArguments(type) : [];
579
- this.typeArgumentsOf.set(type, args);
631
+ this.cache.typeArgumentsOf.set(type, args);
580
632
  }
581
633
  return args;
582
634
  }
583
635
  isArrayType(type) {
636
+ this.ensureActive();
584
637
  // Arrays are object types. The raw checker agrees that primitive,
585
638
  // union/intersection, and type-parameter objects themselves are not
586
639
  // arrays (a narrowed array arm arrives as its object type), so avoid a
587
640
  // request for every visibly non-object type just as isTupleType does.
588
641
  if (!(type.flags & TypeFlags.Object))
589
642
  return false;
590
- let answer = this.arrayTypeAnswer.get(type);
643
+ let answer = this.cache.arrayTypeAnswer.get(type);
591
644
  if (answer === undefined) {
592
645
  answer = this.raw.isArrayType(type);
593
- this.arrayTypeAnswer.set(type, answer);
646
+ this.cache.arrayTypeAnswer.set(type, answer);
594
647
  }
595
648
  return answer;
596
649
  }
@@ -601,51 +654,60 @@ export class CheckerFacade {
601
654
  * so shape-true and non-object-false resolve locally and only object
602
655
  * types that are not visibly tuples round-trip, memoized. */
603
656
  isTupleType(type) {
657
+ this.ensureActive();
604
658
  if (type.isTupleType())
605
659
  return true;
606
660
  if (!(type.flags & TypeFlags.Object))
607
661
  return false;
608
- let answer = this.tupleTypeAnswer.get(type);
662
+ let answer = this.cache.tupleTypeAnswer.get(type);
609
663
  if (answer === undefined) {
610
664
  answer = this.raw.isTupleType(type);
611
- this.tupleTypeAnswer.set(type, answer);
665
+ this.cache.tupleTypeAnswer.set(type, answer);
612
666
  }
613
667
  return answer;
614
668
  }
615
669
  isArrayLikeType(type) {
616
- let answer = this.arrayLikeAnswer.get(type);
670
+ this.ensureActive();
671
+ let answer = this.cache.arrayLikeAnswer.get(type);
617
672
  if (answer === undefined) {
618
673
  answer = this.raw.isArrayLikeType(type);
619
- this.arrayLikeAnswer.set(type, answer);
674
+ this.cache.arrayLikeAnswer.set(type, answer);
620
675
  }
621
676
  return answer;
622
677
  }
623
678
  typeToString(type, enclosingDeclaration, flags) {
679
+ this.ensureActive();
624
680
  if (enclosingDeclaration === undefined && flags === undefined) {
625
- let text = this.typeStringOf.get(type);
681
+ let text = this.cache.typeStringOf.get(type);
626
682
  if (text === undefined) {
627
683
  text = this.raw.typeToString(type);
628
- this.typeStringOf.set(type, text);
684
+ this.cache.typeStringOf.set(type, text);
629
685
  }
630
686
  return text;
631
687
  }
632
688
  return this.raw.typeToString(type, enclosingDeclaration, flags);
633
689
  }
634
690
  getTypeOfSymbolAtLocation(symbol, location) {
691
+ this.ensureActive();
635
692
  // Two-key query with one census call site: no memo, straight through.
636
693
  return this.raw.getTypeOfSymbolAtLocation(symbol, location);
637
694
  }
638
695
  getUnknownType() {
639
- this.unknownType ??= this.raw.getUnknownType();
640
- return this.unknownType;
696
+ this.ensureActive();
697
+ if (this.cache.unknownType === null)
698
+ this.cache.unknownType = this.raw.getUnknownType();
699
+ return this.cache.unknownType;
641
700
  }
642
701
  getStringType() {
702
+ this.ensureActive();
643
703
  return this.intrinsic("string", () => this.raw.getStringType());
644
704
  }
645
705
  getNumberType() {
706
+ this.ensureActive();
646
707
  return this.intrinsic("number", () => this.raw.getNumberType());
647
708
  }
648
709
  getBooleanType() {
710
+ this.ensureActive();
649
711
  return this.intrinsic("boolean", () => this.raw.getBooleanType());
650
712
  }
651
713
  /** 7.0.2 dropped getAwaitedType (the census's one MISSING checker method).
@@ -656,10 +718,11 @@ export class CheckerFacade {
656
718
  * site does exactly that) — a union like `T | PromiseLike<T>` collapses by
657
719
  * object identity to T, which is the pattern that call site exists for. */
658
720
  getAwaitedType(type) {
659
- if (this.awaitedTypeOf.has(type))
660
- return this.awaitedTypeOf.get(type);
721
+ this.ensureActive();
722
+ if (this.cache.awaitedTypeOf.has(type))
723
+ return this.cache.awaitedTypeOf.get(type);
661
724
  const awaited = this.computeAwaitedType(type, 0);
662
- this.awaitedTypeOf.set(type, awaited);
725
+ this.cache.awaitedTypeOf.set(type, awaited);
663
726
  return awaited;
664
727
  }
665
728
  computeAwaitedType(type, depth) {
@@ -674,7 +737,14 @@ export class CheckerFacade {
674
737
  // (5.9.3 answers the input type — string | null stays string | null).
675
738
  if (awaited.every((arm, i) => arm === arms[i]))
676
739
  return type;
677
- const distinct = [...new Set(awaited)];
740
+ const distinct = [];
741
+ const seen = new Set();
742
+ for (const arm of awaited) {
743
+ if (arm !== undefined && !seen.has(arm)) {
744
+ seen.add(arm);
745
+ distinct.push(arm);
746
+ }
747
+ }
678
748
  return distinct.length === 1 ? distinct[0] : undefined;
679
749
  }
680
750
  const unwrapped = this.promiseArgumentOf(type);
@@ -688,7 +758,7 @@ export class CheckerFacade {
688
758
  promiseArgumentOf(type) {
689
759
  if (!type.isTypeReference())
690
760
  return null;
691
- const name = type.getTarget().getSymbol()?.name;
761
+ const name = type.getTarget()?.getSymbol()?.name;
692
762
  if (name !== "Promise" && name !== "PromiseLike")
693
763
  return null;
694
764
  const args = this.getTypeArguments(type);