tsc-ts 0.0.4 → 0.0.5

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 (584) hide show
  1. package/README.md +33 -1
  2. package/dist/api/compiler/ast-utilities.d.ts +82 -0
  3. package/dist/api/compiler/ast-utilities.js +462 -0
  4. package/dist/api/compiler/ast.d.ts +2350 -0
  5. package/dist/api/compiler/ast.js +11206 -0
  6. package/dist/api/compiler/astnav.d.ts +37 -0
  7. package/dist/api/compiler/astnav.js +767 -0
  8. package/dist/api/compiler/binder-utilities.d.ts +182 -0
  9. package/dist/api/compiler/binder-utilities.js +1240 -0
  10. package/dist/api/compiler/binder.d.ts +33 -0
  11. package/dist/api/compiler/binder.js +2358 -0
  12. package/dist/api/compiler/character-codes.d.ts +161 -0
  13. package/dist/api/compiler/character-codes.js +160 -0
  14. package/dist/api/compiler/checker-calls.d.ts +46 -0
  15. package/dist/api/compiler/checker-calls.js +1640 -0
  16. package/dist/api/compiler/checker-classes.d.ts +30 -0
  17. package/dist/api/compiler/checker-classes.js +582 -0
  18. package/dist/api/compiler/checker-contextual.d.ts +77 -0
  19. package/dist/api/compiler/checker-contextual.js +1136 -0
  20. package/dist/api/compiler/checker-declaration-order.d.ts +12 -0
  21. package/dist/api/compiler/checker-declaration-order.js +356 -0
  22. package/dist/api/compiler/checker-declarations.d.ts +33 -0
  23. package/dist/api/compiler/checker-declarations.js +888 -0
  24. package/dist/api/compiler/checker-declared-types.d.ts +48 -0
  25. package/dist/api/compiler/checker-declared-types.js +787 -0
  26. package/dist/api/compiler/checker-decorators.d.ts +26 -0
  27. package/dist/api/compiler/checker-decorators.js +562 -0
  28. package/dist/api/compiler/checker-deprecation.d.ts +33 -0
  29. package/dist/api/compiler/checker-deprecation.js +315 -0
  30. package/dist/api/compiler/checker-destructuring.d.ts +34 -0
  31. package/dist/api/compiler/checker-destructuring.js +584 -0
  32. package/dist/api/compiler/checker-elaboration.d.ts +15 -0
  33. package/dist/api/compiler/checker-elaboration.js +290 -0
  34. package/dist/api/compiler/checker-emit-helpers.d.ts +58 -0
  35. package/dist/api/compiler/checker-emit-helpers.js +154 -0
  36. package/dist/api/compiler/checker-emit-resolver.d.ts +75 -0
  37. package/dist/api/compiler/checker-emit-resolver.js +579 -0
  38. package/dist/api/compiler/checker-evaluator.d.ts +27 -0
  39. package/dist/api/compiler/checker-evaluator.js +188 -0
  40. package/dist/api/compiler/checker-expressions.d.ts +67 -0
  41. package/dist/api/compiler/checker-expressions.js +1351 -0
  42. package/dist/api/compiler/checker-features.d.ts +6 -0
  43. package/dist/api/compiler/checker-features.js +354 -0
  44. package/dist/api/compiler/checker-flow.d.ts +86 -0
  45. package/dist/api/compiler/checker-flow.js +169 -0
  46. package/dist/api/compiler/checker-functions.d.ts +43 -0
  47. package/dist/api/compiler/checker-functions.js +1002 -0
  48. package/dist/api/compiler/checker-generated-code.d.ts +25 -0
  49. package/dist/api/compiler/checker-generated-code.js +168 -0
  50. package/dist/api/compiler/checker-globals.d.ts +14 -0
  51. package/dist/api/compiler/checker-globals.js +37 -0
  52. package/dist/api/compiler/checker-grammar.d.ts +35 -0
  53. package/dist/api/compiler/checker-grammar.js +2573 -0
  54. package/dist/api/compiler/checker-heritage.d.ts +28 -0
  55. package/dist/api/compiler/checker-heritage.js +900 -0
  56. package/dist/api/compiler/checker-inference.d.ts +179 -0
  57. package/dist/api/compiler/checker-inference.js +2105 -0
  58. package/dist/api/compiler/checker-iteration.d.ts +115 -0
  59. package/dist/api/compiler/checker-iteration.js +857 -0
  60. package/dist/api/compiler/checker-javascript.d.ts +42 -0
  61. package/dist/api/compiler/checker-javascript.js +441 -0
  62. package/dist/api/compiler/checker-jsdoc.d.ts +30 -0
  63. package/dist/api/compiler/checker-jsdoc.js +320 -0
  64. package/dist/api/compiler/checker-jsx.d.ts +94 -0
  65. package/dist/api/compiler/checker-jsx.js +1433 -0
  66. package/dist/api/compiler/checker-literals.d.ts +6 -0
  67. package/dist/api/compiler/checker-literals.js +43 -0
  68. package/dist/api/compiler/checker-members.d.ts +198 -0
  69. package/dist/api/compiler/checker-members.js +2126 -0
  70. package/dist/api/compiler/checker-modules.d.ts +85 -0
  71. package/dist/api/compiler/checker-modules.js +2141 -0
  72. package/dist/api/compiler/checker-narrowing.d.ts +120 -0
  73. package/dist/api/compiler/checker-narrowing.js +2797 -0
  74. package/dist/api/compiler/checker-object-literals.d.ts +14 -0
  75. package/dist/api/compiler/checker-object-literals.js +479 -0
  76. package/dist/api/compiler/checker-operators.d.ts +33 -0
  77. package/dist/api/compiler/checker-operators.js +1040 -0
  78. package/dist/api/compiler/checker-overloads.d.ts +7 -0
  79. package/dist/api/compiler/checker-overloads.js +270 -0
  80. package/dist/api/compiler/checker-property-access.d.ts +34 -0
  81. package/dist/api/compiler/checker-property-access.js +672 -0
  82. package/dist/api/compiler/checker-services.d.ts +49 -0
  83. package/dist/api/compiler/checker-services.js +995 -0
  84. package/dist/api/compiler/checker-signatures.d.ts +55 -0
  85. package/dist/api/compiler/checker-signatures.js +788 -0
  86. package/dist/api/compiler/checker-source-file.d.ts +27 -0
  87. package/dist/api/compiler/checker-source-file.js +619 -0
  88. package/dist/api/compiler/checker-statements.d.ts +18 -0
  89. package/dist/api/compiler/checker-statements.js +226 -0
  90. package/dist/api/compiler/checker-super.d.ts +13 -0
  91. package/dist/api/compiler/checker-super.js +241 -0
  92. package/dist/api/compiler/checker-symbol-types.d.ts +67 -0
  93. package/dist/api/compiler/checker-symbol-types.js +1885 -0
  94. package/dist/api/compiler/checker-symbols.d.ts +181 -0
  95. package/dist/api/compiler/checker-symbols.js +1782 -0
  96. package/dist/api/compiler/checker-type-factory.d.ts +142 -0
  97. package/dist/api/compiler/checker-type-factory.js +2501 -0
  98. package/dist/api/compiler/checker-type-nodes.d.ts +26 -0
  99. package/dist/api/compiler/checker-type-nodes.js +828 -0
  100. package/dist/api/compiler/checker-type-operators.d.ts +109 -0
  101. package/dist/api/compiler/checker-type-operators.js +1842 -0
  102. package/dist/api/compiler/checker-types.d.ts +1027 -0
  103. package/dist/api/compiler/checker-types.js +1697 -0
  104. package/dist/api/compiler/checker-unused.d.ts +19 -0
  105. package/dist/api/compiler/checker-unused.js +524 -0
  106. package/dist/api/compiler/checker-utilities.d.ts +33 -0
  107. package/dist/api/compiler/checker-utilities.js +141 -0
  108. package/dist/api/compiler/checker.d.ts +491 -0
  109. package/dist/api/compiler/checker.js +912 -0
  110. package/dist/api/compiler/command-line.d.ts +32 -0
  111. package/dist/api/compiler/command-line.js +383 -0
  112. package/dist/api/compiler/compile-program.d.ts +118 -0
  113. package/dist/api/compiler/compile-program.js +384 -0
  114. package/dist/api/compiler/diagnostic-locales.d.ts +22 -0
  115. package/dist/api/compiler/diagnostic-locales.js +64 -0
  116. package/dist/api/compiler/diagnostic-messages.d.ts +2166 -0
  117. package/dist/api/compiler/diagnostic-messages.js +184 -0
  118. package/dist/api/compiler/diagnostics.d.ts +167 -0
  119. package/dist/api/compiler/diagnostics.js +820 -0
  120. package/dist/api/compiler/emitter.d.ts +71 -0
  121. package/dist/api/compiler/emitter.js +327 -0
  122. package/dist/api/compiler/file-include.d.ts +117 -0
  123. package/dist/api/compiler/file-include.js +536 -0
  124. package/dist/api/compiler/file-loader.d.ts +261 -0
  125. package/dist/api/compiler/file-loader.js +1257 -0
  126. package/dist/api/compiler/file-system.d.ts +51 -0
  127. package/dist/api/compiler/file-system.js +132 -0
  128. package/dist/api/compiler/flow.d.ts +60 -0
  129. package/dist/api/compiler/flow.js +45 -0
  130. package/dist/api/compiler/instantiation.d.ts +74 -0
  131. package/dist/api/compiler/instantiation.js +799 -0
  132. package/dist/api/compiler/jsdoc.d.ts +75 -0
  133. package/dist/api/compiler/jsdoc.js +1229 -0
  134. package/dist/api/compiler/link-tables.d.ts +36 -0
  135. package/dist/api/compiler/link-tables.js +83 -0
  136. package/dist/api/compiler/locale-data.d.ts +24 -0
  137. package/dist/api/compiler/locale-data.js +183 -0
  138. package/dist/api/compiler/locale.d.ts +4 -0
  139. package/dist/api/compiler/locale.js +317 -0
  140. package/dist/api/compiler/locales/cs-CZ.d.ts +2 -0
  141. package/dist/api/compiler/locales/cs-CZ.js +3 -0
  142. package/dist/api/compiler/locales/de-DE.d.ts +2 -0
  143. package/dist/api/compiler/locales/de-DE.js +3 -0
  144. package/dist/api/compiler/locales/es-ES.d.ts +2 -0
  145. package/dist/api/compiler/locales/es-ES.js +3 -0
  146. package/dist/api/compiler/locales/fr-FR.d.ts +2 -0
  147. package/dist/api/compiler/locales/fr-FR.js +3 -0
  148. package/dist/api/compiler/locales/it-IT.d.ts +2 -0
  149. package/dist/api/compiler/locales/it-IT.js +3 -0
  150. package/dist/api/compiler/locales/ja-JP.d.ts +2 -0
  151. package/dist/api/compiler/locales/ja-JP.js +3 -0
  152. package/dist/api/compiler/locales/ko-KR.d.ts +2 -0
  153. package/dist/api/compiler/locales/ko-KR.js +3 -0
  154. package/dist/api/compiler/locales/pl-PL.d.ts +2 -0
  155. package/dist/api/compiler/locales/pl-PL.js +3 -0
  156. package/dist/api/compiler/locales/pt-BR.d.ts +2 -0
  157. package/dist/api/compiler/locales/pt-BR.js +3 -0
  158. package/dist/api/compiler/locales/ru-RU.d.ts +2 -0
  159. package/dist/api/compiler/locales/ru-RU.js +3 -0
  160. package/dist/api/compiler/locales/tr-TR.d.ts +2 -0
  161. package/dist/api/compiler/locales/tr-TR.js +3 -0
  162. package/dist/api/compiler/locales/zh-CN.d.ts +2 -0
  163. package/dist/api/compiler/locales/zh-CN.js +3 -0
  164. package/dist/api/compiler/locales/zh-TW.d.ts +2 -0
  165. package/dist/api/compiler/locales/zh-TW.js +3 -0
  166. package/dist/api/compiler/module-resolution-types.d.ts +83 -0
  167. package/dist/api/compiler/module-resolution-types.js +176 -0
  168. package/dist/api/compiler/module-resolution.d.ts +71 -0
  169. package/dist/api/compiler/module-resolution.js +1598 -0
  170. package/dist/api/compiler/module-specifiers.d.ts +64 -0
  171. package/dist/api/compiler/module-specifiers.js +1101 -0
  172. package/dist/api/compiler/name-resolver.d.ts +43 -0
  173. package/dist/api/compiler/name-resolver.js +509 -0
  174. package/dist/api/compiler/node-builder-names.d.ts +32 -0
  175. package/dist/api/compiler/node-builder-names.js +854 -0
  176. package/dist/api/compiler/node-builder-pseudo.d.ts +36 -0
  177. package/dist/api/compiler/node-builder-pseudo.js +744 -0
  178. package/dist/api/compiler/node-builder-reuse.d.ts +4 -0
  179. package/dist/api/compiler/node-builder-reuse.js +647 -0
  180. package/dist/api/compiler/node-builder.d.ts +270 -0
  181. package/dist/api/compiler/node-builder.js +2645 -0
  182. package/dist/api/compiler/option-declarations.d.ts +90 -0
  183. package/dist/api/compiler/option-declarations.js +1460 -0
  184. package/dist/api/compiler/options.d.ts +289 -0
  185. package/dist/api/compiler/options.js +1197 -0
  186. package/dist/api/compiler/output-paths.d.ts +42 -0
  187. package/dist/api/compiler/output-paths.js +195 -0
  188. package/dist/api/compiler/package-json.d.ts +175 -0
  189. package/dist/api/compiler/package-json.js +1015 -0
  190. package/dist/api/compiler/parallel-parse.d.ts +219 -0
  191. package/dist/api/compiler/parallel-parse.js +537 -0
  192. package/dist/api/compiler/parser.d.ts +587 -0
  193. package/dist/api/compiler/parser.js +6407 -0
  194. package/dist/api/compiler/path.d.ts +91 -0
  195. package/dist/api/compiler/path.js +705 -0
  196. package/dist/api/compiler/printer/async-helpers.d.ts +22 -0
  197. package/dist/api/compiler/printer/async-helpers.js +91 -0
  198. package/dist/api/compiler/printer/auto-generate.d.ts +13 -0
  199. package/dist/api/compiler/printer/auto-generate.js +20 -0
  200. package/dist/api/compiler/printer/decorator-helpers.d.ts +24 -0
  201. package/dist/api/compiler/printer/decorator-helpers.js +118 -0
  202. package/dist/api/compiler/printer/emit-context.d.ts +154 -0
  203. package/dist/api/compiler/printer/emit-context.js +576 -0
  204. package/dist/api/compiler/printer/emit-flags.d.ts +60 -0
  205. package/dist/api/compiler/printer/emit-flags.js +2 -0
  206. package/dist/api/compiler/printer/factory-base.d.ts +171 -0
  207. package/dist/api/compiler/printer/factory-base.js +1505 -0
  208. package/dist/api/compiler/printer/factory.d.ts +147 -0
  209. package/dist/api/compiler/printer/factory.js +542 -0
  210. package/dist/api/compiler/printer/helpers.d.ts +27 -0
  211. package/dist/api/compiler/printer/helpers.js +164 -0
  212. package/dist/api/compiler/printer/name-generator.d.ts +41 -0
  213. package/dist/api/compiler/printer/name-generator.js +283 -0
  214. package/dist/api/compiler/printer/printer.d.ts +411 -0
  215. package/dist/api/compiler/printer/printer.js +4517 -0
  216. package/dist/api/compiler/printer/text-writer.d.ts +46 -0
  217. package/dist/api/compiler/printer/text-writer.js +172 -0
  218. package/dist/api/compiler/printer/utilities.d.ts +82 -0
  219. package/dist/api/compiler/printer/utilities.js +817 -0
  220. package/dist/api/compiler/program-checker.d.ts +156 -0
  221. package/dist/api/compiler/program-checker.js +526 -0
  222. package/dist/api/compiler/program-utilities.d.ts +52 -0
  223. package/dist/api/compiler/program-utilities.js +365 -0
  224. package/dist/api/compiler/program.d.ts +180 -0
  225. package/dist/api/compiler/program.js +1011 -0
  226. package/dist/api/compiler/pseudo-bigint.d.ts +5 -0
  227. package/dist/api/compiler/pseudo-bigint.js +61 -0
  228. package/dist/api/compiler/regexp-checker.d.ts +38 -0
  229. package/dist/api/compiler/regexp-checker.js +942 -0
  230. package/dist/api/compiler/relations.d.ts +263 -0
  231. package/dist/api/compiler/relations.js +4002 -0
  232. package/dist/api/compiler/reparser.d.ts +48 -0
  233. package/dist/api/compiler/reparser.js +1323 -0
  234. package/dist/api/compiler/scanner.d.ts +256 -0
  235. package/dist/api/compiler/scanner.js +2853 -0
  236. package/dist/api/compiler/side-state.d.ts +16 -0
  237. package/dist/api/compiler/side-state.js +89 -0
  238. package/dist/api/compiler/sourcemap.d.ts +55 -0
  239. package/dist/api/compiler/sourcemap.js +340 -0
  240. package/dist/api/compiler/spelling.d.ts +14 -0
  241. package/dist/api/compiler/spelling.js +128 -0
  242. package/dist/api/compiler/symbol-accessibility.d.ts +57 -0
  243. package/dist/api/compiler/symbol-accessibility.js +894 -0
  244. package/dist/api/compiler/symbol.d.ts +240 -0
  245. package/dist/api/compiler/symbol.js +228 -0
  246. package/dist/api/compiler/symlinks.d.ts +32 -0
  247. package/dist/api/compiler/symlinks.js +114 -0
  248. package/dist/api/compiler/syntax-kind.d.ts +389 -0
  249. package/dist/api/compiler/syntax-kind.js +2 -0
  250. package/dist/api/compiler/timeline.d.ts +9 -0
  251. package/dist/api/compiler/timeline.js +54 -0
  252. package/dist/api/compiler/transformers/alias-references.d.ts +39 -0
  253. package/dist/api/compiler/transformers/alias-references.js +676 -0
  254. package/dist/api/compiler/transformers/async-utilities.d.ts +51 -0
  255. package/dist/api/compiler/transformers/async-utilities.js +260 -0
  256. package/dist/api/compiler/transformers/async.d.ts +53 -0
  257. package/dist/api/compiler/transformers/async.js +645 -0
  258. package/dist/api/compiler/transformers/class-fields.d.ts +206 -0
  259. package/dist/api/compiler/transformers/class-fields.js +2418 -0
  260. package/dist/api/compiler/transformers/class-utilities.d.ts +46 -0
  261. package/dist/api/compiler/transformers/class-utilities.js +261 -0
  262. package/dist/api/compiler/transformers/commonjs-module.d.ts +103 -0
  263. package/dist/api/compiler/transformers/commonjs-module.js +1180 -0
  264. package/dist/api/compiler/transformers/const-enum-inliner.d.ts +11 -0
  265. package/dist/api/compiler/transformers/const-enum-inliner.js +36 -0
  266. package/dist/api/compiler/transformers/declarations-diagnostics.d.ts +52 -0
  267. package/dist/api/compiler/transformers/declarations-diagnostics.js +538 -0
  268. package/dist/api/compiler/transformers/declarations-pseudo.d.ts +160 -0
  269. package/dist/api/compiler/transformers/declarations-pseudo.js +797 -0
  270. package/dist/api/compiler/transformers/declarations-resolver.d.ts +152 -0
  271. package/dist/api/compiler/transformers/declarations-resolver.js +35 -0
  272. package/dist/api/compiler/transformers/declarations-syntactic.d.ts +119 -0
  273. package/dist/api/compiler/transformers/declarations-syntactic.js +1582 -0
  274. package/dist/api/compiler/transformers/declarations-tracker.d.ts +46 -0
  275. package/dist/api/compiler/transformers/declarations-tracker.js +197 -0
  276. package/dist/api/compiler/transformers/declarations.d.ts +175 -0
  277. package/dist/api/compiler/transformers/declarations.js +2380 -0
  278. package/dist/api/compiler/transformers/decorator-metadata.d.ts +54 -0
  279. package/dist/api/compiler/transformers/decorator-metadata.js +554 -0
  280. package/dist/api/compiler/transformers/decorator-utilities.d.ts +38 -0
  281. package/dist/api/compiler/transformers/decorator-utilities.js +238 -0
  282. package/dist/api/compiler/transformers/destructuring.d.ts +25 -0
  283. package/dist/api/compiler/transformers/destructuring.js +626 -0
  284. package/dist/api/compiler/transformers/downlevel.d.ts +6 -0
  285. package/dist/api/compiler/transformers/downlevel.js +45 -0
  286. package/dist/api/compiler/transformers/emit-resolver.d.ts +61 -0
  287. package/dist/api/compiler/transformers/emit-resolver.js +197 -0
  288. package/dist/api/compiler/transformers/es-decorators.d.ts +118 -0
  289. package/dist/api/compiler/transformers/es-decorators.js +1901 -0
  290. package/dist/api/compiler/transformers/exponentiation.d.ts +11 -0
  291. package/dist/api/compiler/transformers/exponentiation.js +76 -0
  292. package/dist/api/compiler/transformers/external-module-info.d.ts +35 -0
  293. package/dist/api/compiler/transformers/external-module-info.js +351 -0
  294. package/dist/api/compiler/transformers/for-await.d.ts +43 -0
  295. package/dist/api/compiler/transformers/for-await.js +469 -0
  296. package/dist/api/compiler/transformers/import-elision.d.ts +16 -0
  297. package/dist/api/compiler/transformers/import-elision.js +124 -0
  298. package/dist/api/compiler/transformers/jsx-entities.d.ts +1 -0
  299. package/dist/api/compiler/transformers/jsx-entities.js +256 -0
  300. package/dist/api/compiler/transformers/jsx.d.ts +71 -0
  301. package/dist/api/compiler/transformers/jsx.js +700 -0
  302. package/dist/api/compiler/transformers/legacy-decorators.d.ts +56 -0
  303. package/dist/api/compiler/transformers/legacy-decorators.js +564 -0
  304. package/dist/api/compiler/transformers/logical-assignment.d.ts +14 -0
  305. package/dist/api/compiler/transformers/logical-assignment.js +62 -0
  306. package/dist/api/compiler/transformers/module-utilities.d.ts +9 -0
  307. package/dist/api/compiler/transformers/module-utilities.js +36 -0
  308. package/dist/api/compiler/transformers/module.d.ts +49 -0
  309. package/dist/api/compiler/transformers/module.js +296 -0
  310. package/dist/api/compiler/transformers/named-evaluation.d.ts +26 -0
  311. package/dist/api/compiler/transformers/named-evaluation.js +266 -0
  312. package/dist/api/compiler/transformers/nullish-coalescing.d.ts +9 -0
  313. package/dist/api/compiler/transformers/nullish-coalescing.js +26 -0
  314. package/dist/api/compiler/transformers/object-rest-spread.d.ts +34 -0
  315. package/dist/api/compiler/transformers/object-rest-spread.js +411 -0
  316. package/dist/api/compiler/transformers/optional-catch.d.ts +9 -0
  317. package/dist/api/compiler/transformers/optional-catch.js +20 -0
  318. package/dist/api/compiler/transformers/optional-chain.d.ts +14 -0
  319. package/dist/api/compiler/transformers/optional-chain.js +188 -0
  320. package/dist/api/compiler/transformers/reference-resolver.d.ts +128 -0
  321. package/dist/api/compiler/transformers/reference-resolver.js +1155 -0
  322. package/dist/api/compiler/transformers/runtime-syntax.d.ts +71 -0
  323. package/dist/api/compiler/transformers/runtime-syntax.js +753 -0
  324. package/dist/api/compiler/transformers/subtree-facts.d.ts +9 -0
  325. package/dist/api/compiler/transformers/subtree-facts.js +203 -0
  326. package/dist/api/compiler/transformers/syntax-facts.d.ts +51 -0
  327. package/dist/api/compiler/transformers/syntax-facts.js +254 -0
  328. package/dist/api/compiler/transformers/tagged-template.d.ts +17 -0
  329. package/dist/api/compiler/transformers/tagged-template.js +148 -0
  330. package/dist/api/compiler/transformers/transformer.d.ts +17 -0
  331. package/dist/api/compiler/transformers/transformer.js +54 -0
  332. package/dist/api/compiler/transformers/type-eraser.d.ts +21 -0
  333. package/dist/api/compiler/transformers/type-eraser.js +346 -0
  334. package/dist/api/compiler/transformers/type-serialization.d.ts +20 -0
  335. package/dist/api/compiler/transformers/type-serialization.js +347 -0
  336. package/dist/api/compiler/transformers/using.d.ts +56 -0
  337. package/dist/api/compiler/transformers/using.js +453 -0
  338. package/dist/api/compiler/transformers/utilities.d.ts +50 -0
  339. package/dist/api/compiler/transformers/utilities.js +347 -0
  340. package/dist/api/compiler/transformers/visitor-base.d.ts +6 -0
  341. package/dist/api/compiler/transformers/visitor-base.js +817 -0
  342. package/dist/api/compiler/transformers/visitor-hooks.d.ts +29 -0
  343. package/dist/api/compiler/transformers/visitor-hooks.js +189 -0
  344. package/dist/api/compiler/tsconfig.d.ts +177 -0
  345. package/dist/api/compiler/tsconfig.js +1311 -0
  346. package/dist/api/compiler/type-printer.d.ts +15 -0
  347. package/dist/api/compiler/type-printer.js +74 -0
  348. package/dist/api/compiler/types.d.ts +87 -0
  349. package/dist/api/compiler/types.js +23 -0
  350. package/dist/api/compiler/unicode-identifiers.d.ts +2 -0
  351. package/dist/api/compiler/unicode-identifiers.js +209 -0
  352. package/dist/api/compiler/unicode-properties.d.ts +8 -0
  353. package/dist/api/compiler/unicode-properties.js +531 -0
  354. package/dist/api/compiler/vfs-match.d.ts +24 -0
  355. package/dist/api/compiler/vfs-match.js +587 -0
  356. package/dist/api/library/ast.d.ts +3 -2
  357. package/dist/api/library/ast.generated.d.ts +127 -139
  358. package/dist/api/library/checker.d.ts +51 -0
  359. package/dist/api/library/checker.js +318 -0
  360. package/dist/api/library/diagnostics.d.ts +13 -0
  361. package/dist/api/library/diagnostics.js +50 -0
  362. package/dist/api/library/disk.d.ts +13 -0
  363. package/dist/api/library/disk.js +66 -0
  364. package/dist/api/library/errors.d.ts +13 -0
  365. package/dist/api/library/errors.js +24 -0
  366. package/dist/api/library/host.d.ts +24 -0
  367. package/dist/api/library/host.js +52 -0
  368. package/dist/api/library/index.d.ts +5 -1
  369. package/dist/api/library/index.js +4 -0
  370. package/dist/api/library/nodes.d.ts +51 -0
  371. package/dist/api/library/nodes.js +196 -0
  372. package/dist/api/library/options.d.ts +144 -0
  373. package/dist/api/library/options.js +308 -0
  374. package/dist/api/library/parse.d.ts +19 -0
  375. package/dist/api/library/parse.js +41 -0
  376. package/dist/api/library/program.d.ts +21 -0
  377. package/dist/api/library/program.js +234 -0
  378. package/dist/api/library/types.d.ts +14 -1
  379. package/package.json +12 -8
  380. package/src/compiler/ast-utilities.ts +548 -0
  381. package/src/compiler/ast.ts +12862 -0
  382. package/src/compiler/astnav.ts +799 -0
  383. package/src/compiler/binder-utilities.ts +1392 -0
  384. package/src/compiler/binder.ts +2703 -0
  385. package/src/compiler/build-info.ts +1197 -0
  386. package/src/compiler/character-codes.ts +323 -0
  387. package/src/compiler/checker-calls.ts +2155 -0
  388. package/src/compiler/checker-classes.ts +706 -0
  389. package/src/compiler/checker-contextual.ts +1457 -0
  390. package/src/compiler/checker-declaration-order.ts +438 -0
  391. package/src/compiler/checker-declarations.ts +1194 -0
  392. package/src/compiler/checker-declared-types.ts +919 -0
  393. package/src/compiler/checker-decorators.ts +694 -0
  394. package/src/compiler/checker-deprecation.ts +359 -0
  395. package/src/compiler/checker-destructuring.ts +805 -0
  396. package/src/compiler/checker-elaboration.ts +477 -0
  397. package/src/compiler/checker-emit-helpers.ts +224 -0
  398. package/src/compiler/checker-emit-resolver.ts +769 -0
  399. package/src/compiler/checker-evaluator.ts +243 -0
  400. package/src/compiler/checker-expressions.ts +1831 -0
  401. package/src/compiler/checker-features.ts +361 -0
  402. package/src/compiler/checker-flow.ts +394 -0
  403. package/src/compiler/checker-functions.ts +1296 -0
  404. package/src/compiler/checker-generated-code.ts +227 -0
  405. package/src/compiler/checker-globals.ts +52 -0
  406. package/src/compiler/checker-grammar.ts +3584 -0
  407. package/src/compiler/checker-heritage.ts +1233 -0
  408. package/src/compiler/checker-inference.ts +2576 -0
  409. package/src/compiler/checker-iteration.ts +1206 -0
  410. package/src/compiler/checker-javascript.ts +502 -0
  411. package/src/compiler/checker-jsdoc.ts +360 -0
  412. package/src/compiler/checker-jsx.ts +1924 -0
  413. package/src/compiler/checker-literals.ts +61 -0
  414. package/src/compiler/checker-members.ts +2436 -0
  415. package/src/compiler/checker-modules.ts +2886 -0
  416. package/src/compiler/checker-narrowing.ts +3230 -0
  417. package/src/compiler/checker-object-literals.ts +575 -0
  418. package/src/compiler/checker-operators.ts +1422 -0
  419. package/src/compiler/checker-overloads.ts +328 -0
  420. package/src/compiler/checker-property-access.ts +906 -0
  421. package/src/compiler/checker-services.ts +1149 -0
  422. package/src/compiler/checker-signatures.ts +1032 -0
  423. package/src/compiler/checker-source-file.ts +732 -0
  424. package/src/compiler/checker-statements.ts +292 -0
  425. package/src/compiler/checker-super.ts +261 -0
  426. package/src/compiler/checker-symbol-types.ts +2107 -0
  427. package/src/compiler/checker-symbols.ts +2150 -0
  428. package/src/compiler/checker-type-factory.ts +2579 -0
  429. package/src/compiler/checker-type-nodes.ts +1033 -0
  430. package/src/compiler/checker-type-operators.ts +2502 -0
  431. package/src/compiler/checker-types.ts +2340 -0
  432. package/src/compiler/checker-unused.ts +642 -0
  433. package/src/compiler/checker-utilities.ts +161 -0
  434. package/src/compiler/checker.ts +1116 -0
  435. package/src/compiler/command-line.ts +436 -0
  436. package/src/compiler/compile-program.ts +439 -0
  437. package/src/compiler/decoder.ts +1209 -0
  438. package/src/compiler/diagnostic-locales.ts +86 -0
  439. package/src/compiler/diagnostic-messages.ts +2349 -0
  440. package/src/compiler/diagnostics.ts +897 -0
  441. package/src/compiler/emitter.ts +434 -0
  442. package/src/compiler/encoder.ts +1945 -0
  443. package/src/compiler/file-include.ts +673 -0
  444. package/src/compiler/file-loader.ts +1528 -0
  445. package/src/compiler/file-system.ts +143 -0
  446. package/src/compiler/flow.ts +89 -0
  447. package/src/compiler/help.ts +473 -0
  448. package/src/compiler/incremental.ts +2784 -0
  449. package/src/compiler/init.ts +141 -0
  450. package/src/compiler/instantiation.ts +894 -0
  451. package/src/compiler/jsdoc.ts +1386 -0
  452. package/src/compiler/link-tables.ts +98 -0
  453. package/src/compiler/locale-data.ts +203 -0
  454. package/src/compiler/locale.ts +307 -0
  455. package/src/compiler/locales/cs-CZ.ts +5 -0
  456. package/src/compiler/locales/de-DE.ts +5 -0
  457. package/src/compiler/locales/es-ES.ts +5 -0
  458. package/src/compiler/locales/fr-FR.ts +5 -0
  459. package/src/compiler/locales/it-IT.ts +5 -0
  460. package/src/compiler/locales/ja-JP.ts +5 -0
  461. package/src/compiler/locales/ko-KR.ts +5 -0
  462. package/src/compiler/locales/pl-PL.ts +5 -0
  463. package/src/compiler/locales/pt-BR.ts +5 -0
  464. package/src/compiler/locales/ru-RU.ts +5 -0
  465. package/src/compiler/locales/tr-TR.ts +5 -0
  466. package/src/compiler/locales/zh-CN.ts +5 -0
  467. package/src/compiler/locales/zh-TW.ts +5 -0
  468. package/src/compiler/module-resolution-types.ts +243 -0
  469. package/src/compiler/module-resolution.ts +2072 -0
  470. package/src/compiler/module-specifiers.ts +1491 -0
  471. package/src/compiler/name-resolver.ts +646 -0
  472. package/src/compiler/node-builder-names.ts +1069 -0
  473. package/src/compiler/node-builder-pseudo.ts +892 -0
  474. package/src/compiler/node-builder-reuse.ts +764 -0
  475. package/src/compiler/node-builder.ts +3425 -0
  476. package/src/compiler/option-declarations.ts +1560 -0
  477. package/src/compiler/options.ts +1576 -0
  478. package/src/compiler/output-paths.ts +334 -0
  479. package/src/compiler/package-json.ts +1083 -0
  480. package/src/compiler/parallel-check.ts +1951 -0
  481. package/src/compiler/parallel-parse.ts +590 -0
  482. package/src/compiler/parse-thread.ts +140 -0
  483. package/src/compiler/parser.ts +7716 -0
  484. package/src/compiler/path.ts +717 -0
  485. package/src/compiler/printer/async-helpers.ts +183 -0
  486. package/src/compiler/printer/auto-generate.ts +27 -0
  487. package/src/compiler/printer/decorator-helpers.ts +218 -0
  488. package/src/compiler/printer/emit-context.ts +679 -0
  489. package/src/compiler/printer/emit-flags.ts +64 -0
  490. package/src/compiler/printer/factory-base.ts +2577 -0
  491. package/src/compiler/printer/factory.ts +764 -0
  492. package/src/compiler/printer/helpers.ts +291 -0
  493. package/src/compiler/printer/name-generator.ts +372 -0
  494. package/src/compiler/printer/printer.ts +5072 -0
  495. package/src/compiler/printer/text-writer.ts +183 -0
  496. package/src/compiler/printer/utilities.ts +884 -0
  497. package/src/compiler/program-checker.ts +592 -0
  498. package/src/compiler/program-utilities.ts +435 -0
  499. package/src/compiler/program.ts +1419 -0
  500. package/src/compiler/pseudo-bigint.ts +62 -0
  501. package/src/compiler/regexp-checker.ts +1142 -0
  502. package/src/compiler/relations.ts +5149 -0
  503. package/src/compiler/reparser.ts +1566 -0
  504. package/src/compiler/scanner.ts +2951 -0
  505. package/src/compiler/show-config.ts +239 -0
  506. package/src/compiler/side-state.ts +125 -0
  507. package/src/compiler/sourcemap.ts +366 -0
  508. package/src/compiler/spelling.ts +122 -0
  509. package/src/compiler/symbol-accessibility.ts +1071 -0
  510. package/src/compiler/symbol.ts +439 -0
  511. package/src/compiler/symlinks.ts +137 -0
  512. package/src/compiler/syntax-kind.ts +391 -0
  513. package/src/compiler/thread-entry.ts +191 -0
  514. package/src/compiler/timeline.ts +53 -0
  515. package/src/compiler/transformers/alias-references.ts +757 -0
  516. package/src/compiler/transformers/async-utilities.ts +335 -0
  517. package/src/compiler/transformers/async.ts +838 -0
  518. package/src/compiler/transformers/class-fields.ts +2967 -0
  519. package/src/compiler/transformers/class-utilities.ts +324 -0
  520. package/src/compiler/transformers/commonjs-module.ts +1621 -0
  521. package/src/compiler/transformers/const-enum-inliner.ts +50 -0
  522. package/src/compiler/transformers/declarations-diagnostics.ts +832 -0
  523. package/src/compiler/transformers/declarations-pseudo.ts +966 -0
  524. package/src/compiler/transformers/declarations-resolver.ts +249 -0
  525. package/src/compiler/transformers/declarations-syntactic.ts +1859 -0
  526. package/src/compiler/transformers/declarations-tracker.ts +269 -0
  527. package/src/compiler/transformers/declarations.ts +3120 -0
  528. package/src/compiler/transformers/decorator-metadata.ts +697 -0
  529. package/src/compiler/transformers/decorator-utilities.ts +283 -0
  530. package/src/compiler/transformers/destructuring.ts +708 -0
  531. package/src/compiler/transformers/downlevel.ts +50 -0
  532. package/src/compiler/transformers/emit-resolver.ts +258 -0
  533. package/src/compiler/transformers/es-decorators.ts +2682 -0
  534. package/src/compiler/transformers/exponentiation.ts +80 -0
  535. package/src/compiler/transformers/external-module-info.ts +412 -0
  536. package/src/compiler/transformers/for-await.ts +687 -0
  537. package/src/compiler/transformers/import-elision.ts +152 -0
  538. package/src/compiler/transformers/jsx-entities.ts +256 -0
  539. package/src/compiler/transformers/jsx.ts +824 -0
  540. package/src/compiler/transformers/legacy-decorators.ts +726 -0
  541. package/src/compiler/transformers/logical-assignment.ts +75 -0
  542. package/src/compiler/transformers/module-utilities.ts +42 -0
  543. package/src/compiler/transformers/module.ts +474 -0
  544. package/src/compiler/transformers/named-evaluation.ts +389 -0
  545. package/src/compiler/transformers/nullish-coalescing.ts +35 -0
  546. package/src/compiler/transformers/object-rest-spread.ts +577 -0
  547. package/src/compiler/transformers/optional-catch.ts +29 -0
  548. package/src/compiler/transformers/optional-chain.ts +246 -0
  549. package/src/compiler/transformers/reference-resolver.ts +1201 -0
  550. package/src/compiler/transformers/runtime-syntax.ts +942 -0
  551. package/src/compiler/transformers/subtree-facts.ts +245 -0
  552. package/src/compiler/transformers/syntax-facts.ts +353 -0
  553. package/src/compiler/transformers/tagged-template.ts +167 -0
  554. package/src/compiler/transformers/transformer.ts +56 -0
  555. package/src/compiler/transformers/type-eraser.ts +520 -0
  556. package/src/compiler/transformers/type-serialization.ts +374 -0
  557. package/src/compiler/transformers/using.ts +613 -0
  558. package/src/compiler/transformers/utilities.ts +419 -0
  559. package/src/compiler/transformers/visitor-base.ts +1601 -0
  560. package/src/compiler/transformers/visitor-hooks.ts +252 -0
  561. package/src/compiler/tsc-build.ts +1418 -0
  562. package/src/compiler/tsc-cli.ts +666 -0
  563. package/src/compiler/tsc-compile.ts +437 -0
  564. package/src/compiler/tsc-watch.ts +854 -0
  565. package/src/compiler/tsconfig.ts +1574 -0
  566. package/src/compiler/type-printer.ts +110 -0
  567. package/src/compiler/types.ts +115 -0
  568. package/src/compiler/unicode-identifiers.ts +212 -0
  569. package/src/compiler/unicode-properties.ts +537 -0
  570. package/src/compiler/vfs-match.ts +597 -0
  571. package/src/compiler/xxh3.ts +650 -0
  572. package/src/library/ast.generated.ts +141 -167
  573. package/src/library/ast.ts +4 -1
  574. package/src/library/checker.ts +384 -0
  575. package/src/library/diagnostics.ts +72 -0
  576. package/src/library/disk.ts +73 -0
  577. package/src/library/errors.ts +26 -0
  578. package/src/library/host.ts +63 -0
  579. package/src/library/index.ts +21 -0
  580. package/src/library/nodes.ts +232 -0
  581. package/src/library/options.ts +449 -0
  582. package/src/library/parse.ts +63 -0
  583. package/src/library/program.ts +293 -0
  584. package/src/library/types.ts +14 -1
@@ -0,0 +1,673 @@
1
+ /**
2
+ * Why each file is in a program, as `--explainFiles` prints it, and diagnostics explaining file inclusion.
3
+ */
4
+ import { ObjectLiteralExpression, StringLiteral, type FileReference, type Node, type SourceFile } from './ast.js';
5
+ import { createCompilerDiagnostic, Diagnostic, Diagnostics, type DiagnosticMessage } from './diagnostics.js';
6
+ import { packageIdToString, type PackageId } from './module-resolution-types.js';
7
+ import { ModuleKind } from './options.js';
8
+ import { getNormalizedAbsolutePath, toFileNameLowerCase } from './path.js';
9
+ import { isExternalOrCommonJSModule, libNames, scriptTargetName } from './program-utilities.js';
10
+ import type { Program } from './program.js';
11
+ import { skipTrivia } from './scanner.js';
12
+ import { getSpellingSuggestion } from './spelling.js';
13
+ import {
14
+ diagnosticAtNode,
15
+ findArrayElement,
16
+ findPropertyAssignment,
17
+ findTsConfigArrayElement,
18
+ getTsConfigObjectLiteral,
19
+ } from './tsconfig.js';
20
+
21
+ export const enum FileIncludeKind {
22
+ // References from a file.
23
+ Import,
24
+ ReferenceFile,
25
+ TypeReferenceDirective,
26
+ LibReferenceDirective,
27
+
28
+ RootFile,
29
+ LibFile,
30
+ AutomaticTypeDirectiveFile,
31
+ }
32
+
33
+ /** One reason a file is in the program. */
34
+ export class FileIncludeReason {
35
+ private relativeDiagnostic: Diagnostic | undefined = undefined;
36
+ private absoluteDiagnostic: Diagnostic | undefined = undefined;
37
+ private location: ReferenceFileLocation | undefined = undefined;
38
+ private relatedInfo: Diagnostic | null | undefined = undefined;
39
+
40
+ private constructor(
41
+ readonly kind: FileIncludeKind,
42
+ /** The referencing file's path, for references from a file. */
43
+ readonly file: string,
44
+ /** The root file, `lib` entry or reference index; -1 for the default library. */
45
+ readonly index: number,
46
+ /** The synthesized specifier of an `importHelpers` or JSX runtime import. */
47
+ readonly synthetic: StringLiteral | undefined,
48
+ /** The `types` entry, for automatic type directives. */
49
+ readonly typeReference: string,
50
+ readonly packageId: PackageId | undefined,
51
+ ) {}
52
+
53
+ static rootFile(index: number): FileIncludeReason {
54
+ return new FileIncludeReason(FileIncludeKind.RootFile, '', index, undefined, '', undefined);
55
+ }
56
+
57
+ /** A `lib` entry, or the default library with `index` -1. */
58
+ static libFile(index: number): FileIncludeReason {
59
+ return new FileIncludeReason(FileIncludeKind.LibFile, '', index, undefined, '', undefined);
60
+ }
61
+
62
+ static automaticTypeDirective(typeReference: string, packageId: PackageId | undefined): FileIncludeReason {
63
+ return new FileIncludeReason(
64
+ FileIncludeKind.AutomaticTypeDirectiveFile,
65
+ '',
66
+ -1,
67
+ undefined,
68
+ typeReference,
69
+ packageId,
70
+ );
71
+ }
72
+
73
+ /** An import (`index` into the file's imports and module augmentations, -1 if `synthetic`) or a `///` reference. */
74
+ static reference(
75
+ kind: FileIncludeKind,
76
+ file: string,
77
+ index: number,
78
+ synthetic: StringLiteral | undefined,
79
+ ): FileIncludeReason {
80
+ return new FileIncludeReason(kind, file, index, synthetic, '', undefined);
81
+ }
82
+
83
+ /** The same reason without what it has computed (a parse thread's reasons are immutable). */
84
+ copy(): FileIncludeReason {
85
+ return new FileIncludeReason(this.kind, this.file, this.index, this.synthetic, this.typeReference, this.packageId);
86
+ }
87
+
88
+ isReferencedFile(): boolean {
89
+ return this.kind <= FileIncludeKind.LibReferenceDirective;
90
+ }
91
+
92
+ getReferencedLocation(program: Program): ReferenceFileLocation {
93
+ if (this.location !== undefined) return this.location;
94
+ const file = program.getSourceFileByPath(this.file);
95
+ if (file === undefined) throw new Error('referencing file is not in the program');
96
+ let location: ReferenceFileLocation;
97
+ switch (this.kind) {
98
+ case FileIncludeKind.Import: {
99
+ let specifier: Node | undefined;
100
+ if (this.synthetic !== undefined) specifier = this.synthetic;
101
+ else if (this.index < file.imports.length) specifier = file.imports[this.index];
102
+ else {
103
+ let index = file.imports.length;
104
+ for (const augmentation of file.moduleAugmentations) {
105
+ if (!(augmentation instanceof StringLiteral)) continue;
106
+ if (index === this.index) {
107
+ specifier = augmentation;
108
+ break;
109
+ }
110
+ index++;
111
+ }
112
+ }
113
+ if (specifier === undefined) throw new Error('missing import specifier');
114
+ const resolution = program.getResolvedModuleFromModuleSpecifier(file, specifier);
115
+ location = new ReferenceFileLocation(
116
+ file,
117
+ specifier,
118
+ undefined,
119
+ resolution?.packageId,
120
+ this.synthetic !== undefined,
121
+ );
122
+ break;
123
+ }
124
+ case FileIncludeKind.ReferenceFile:
125
+ location = new ReferenceFileLocation(file, undefined, file.referencedFiles[this.index], undefined, false);
126
+ break;
127
+ case FileIncludeKind.TypeReferenceDirective:
128
+ location = new ReferenceFileLocation(
129
+ file,
130
+ undefined,
131
+ file.typeReferenceDirectives[this.index],
132
+ undefined,
133
+ false,
134
+ );
135
+ break;
136
+ default:
137
+ location = new ReferenceFileLocation(
138
+ file,
139
+ undefined,
140
+ file.libReferenceDirectives[this.index],
141
+ undefined,
142
+ false,
143
+ );
144
+ }
145
+ if (!program.isShared()) this.location = location;
146
+ return location;
147
+ }
148
+
149
+ /** The reason as a message, with file names relative to the current directory if `relative`. */
150
+ toDiagnostic(program: Program, relative: boolean): Diagnostic {
151
+ const cached = relative ? this.relativeDiagnostic : this.absoluteDiagnostic;
152
+ if (cached !== undefined) return cached;
153
+ const diagnostic = this.computeDiagnostic(program, relative);
154
+ if (program.isShared()) return diagnostic;
155
+ if (relative) this.relativeDiagnostic = diagnostic;
156
+ else this.absoluteDiagnostic = diagnostic;
157
+ return diagnostic;
158
+ }
159
+
160
+ private computeDiagnostic(program: Program, relative: boolean): Diagnostic {
161
+ if (this.isReferencedFile()) return this.computeReferenceDiagnostic(program, relative);
162
+ switch (this.kind) {
163
+ case FileIncludeKind.RootFile: {
164
+ const config = program.commandLine;
165
+ if (config.configFile === undefined)
166
+ return createCompilerDiagnostic(Diagnostics.Root_file_specified_for_compilation);
167
+ const fileName = getNormalizedAbsolutePath(config.fileNames[this.index], program.currentDirectory);
168
+ const matchedFileSpec = config.getMatchedFileSpec(fileName);
169
+ if (matchedFileSpec !== '') {
170
+ return createCompilerDiagnostic(
171
+ Diagnostics.Part_of_files_list_in_tsconfig_json,
172
+ matchedFileSpec,
173
+ program.displayFileName(fileName, relative),
174
+ );
175
+ }
176
+ const matchedIncludeSpec = config.getMatchedIncludeSpec(fileName);
177
+ if (matchedIncludeSpec !== '') {
178
+ if (config.isDefaultIncludeSpec()) {
179
+ return createCompilerDiagnostic(
180
+ Diagnostics.Matched_by_default_include_pattern_Asterisk_Asterisk_Slash_Asterisk,
181
+ );
182
+ }
183
+ return createCompilerDiagnostic(
184
+ Diagnostics.Matched_by_include_pattern_0_in_1,
185
+ matchedIncludeSpec,
186
+ program.displayFileName(config.configName, relative),
187
+ );
188
+ }
189
+ return createCompilerDiagnostic(Diagnostics.Root_file_specified_for_compilation);
190
+ }
191
+ case FileIncludeKind.AutomaticTypeDirectiveFile: {
192
+ const usesWildcardTypes = program.options.types?.includes('*') === true;
193
+ const packageId = this.packageId;
194
+ if (!usesWildcardTypes) {
195
+ return packageId !== undefined
196
+ ? createCompilerDiagnostic(
197
+ Diagnostics.Entry_point_of_type_library_0_specified_in_compilerOptions_with_packageId_1,
198
+ this.typeReference,
199
+ packageIdToString(packageId),
200
+ )
201
+ : createCompilerDiagnostic(
202
+ Diagnostics.Entry_point_of_type_library_0_specified_in_compilerOptions,
203
+ this.typeReference,
204
+ );
205
+ }
206
+ return packageId !== undefined
207
+ ? createCompilerDiagnostic(
208
+ Diagnostics.Entry_point_for_implicit_type_library_0_with_packageId_1,
209
+ this.typeReference,
210
+ packageIdToString(packageId),
211
+ )
212
+ : createCompilerDiagnostic(Diagnostics.Entry_point_for_implicit_type_library_0, this.typeReference);
213
+ }
214
+ default: {
215
+ const lib = program.options.lib;
216
+ if (this.index >= 0 && lib !== undefined) {
217
+ return createCompilerDiagnostic(Diagnostics.Library_0_specified_in_compilerOptions, lib[this.index]);
218
+ }
219
+ return createCompilerDiagnostic(
220
+ Diagnostics.Default_library_for_target_0,
221
+ scriptTargetName(program.emitScriptTarget()),
222
+ );
223
+ }
224
+ }
225
+ }
226
+
227
+ private computeReferenceDiagnostic(program: Program, relative: boolean): Diagnostic {
228
+ const location = program.includeProcessor.getReferenceLocation(this, program);
229
+ const text = location.text();
230
+ const fileName = program.displayFileName(location.file.fileName, relative);
231
+ const packageId = location.packageId;
232
+ switch (this.kind) {
233
+ case FileIncludeKind.Import: {
234
+ if (!location.isSynthetic) {
235
+ return packageId !== undefined
236
+ ? createCompilerDiagnostic(
237
+ Diagnostics.Imported_via_0_from_file_1_with_packageId_2,
238
+ text,
239
+ fileName,
240
+ packageIdToString(packageId),
241
+ )
242
+ : createCompilerDiagnostic(Diagnostics.Imported_via_0_from_file_1, text, fileName);
243
+ }
244
+ if (program.importHelpersImportSpecifier(location.file.path) === location.node) {
245
+ return packageId !== undefined
246
+ ? createCompilerDiagnostic(
247
+ Diagnostics.Imported_via_0_from_file_1_with_packageId_2_to_import_importHelpers_as_specified_in_compilerOptions,
248
+ text,
249
+ fileName,
250
+ packageIdToString(packageId),
251
+ )
252
+ : createCompilerDiagnostic(
253
+ Diagnostics.Imported_via_0_from_file_1_to_import_importHelpers_as_specified_in_compilerOptions,
254
+ text,
255
+ fileName,
256
+ );
257
+ }
258
+ return packageId !== undefined
259
+ ? createCompilerDiagnostic(
260
+ Diagnostics.Imported_via_0_from_file_1_with_packageId_2_to_import_jsx_and_jsxs_factory_functions,
261
+ text,
262
+ fileName,
263
+ packageIdToString(packageId),
264
+ )
265
+ : createCompilerDiagnostic(
266
+ Diagnostics.Imported_via_0_from_file_1_to_import_jsx_and_jsxs_factory_functions,
267
+ text,
268
+ fileName,
269
+ );
270
+ }
271
+ case FileIncludeKind.ReferenceFile:
272
+ return createCompilerDiagnostic(Diagnostics.Referenced_via_0_from_file_1, text, fileName);
273
+ case FileIncludeKind.TypeReferenceDirective:
274
+ return packageId !== undefined
275
+ ? createCompilerDiagnostic(
276
+ Diagnostics.Type_library_referenced_via_0_from_file_1_with_packageId_2,
277
+ text,
278
+ fileName,
279
+ packageIdToString(packageId),
280
+ )
281
+ : createCompilerDiagnostic(Diagnostics.Type_library_referenced_via_0_from_file_1, text, fileName);
282
+ default:
283
+ return createCompilerDiagnostic(Diagnostics.Library_referenced_via_0_from_file_1, text, fileName);
284
+ }
285
+ }
286
+
287
+ /** Where in the config or a file this reason is written, as related information; `undefined` if nowhere. */
288
+ toRelatedInfo(program: Program): Diagnostic | undefined {
289
+ if (this.relatedInfo !== undefined) return this.relatedInfo ?? undefined;
290
+ const info = this.computeRelatedInfo(program);
291
+ if (!program.isShared()) this.relatedInfo = info ?? null;
292
+ return info;
293
+ }
294
+
295
+ private computeRelatedInfo(program: Program): Diagnostic | undefined {
296
+ if (this.isReferencedFile()) {
297
+ const location = program.includeProcessor.getReferenceLocation(this, program);
298
+ if (location.isSynthetic) return undefined;
299
+ switch (this.kind) {
300
+ case FileIncludeKind.Import:
301
+ return location.diagnosticAt(Diagnostics.File_is_included_via_import_here);
302
+ case FileIncludeKind.ReferenceFile:
303
+ return location.diagnosticAt(Diagnostics.File_is_included_via_reference_here);
304
+ case FileIncludeKind.TypeReferenceDirective:
305
+ return location.diagnosticAt(Diagnostics.File_is_included_via_type_library_reference_here);
306
+ default:
307
+ return location.diagnosticAt(Diagnostics.File_is_included_via_library_reference_here);
308
+ }
309
+ }
310
+ const config = program.commandLine;
311
+ const configFile = config.configFile?.sourceFile;
312
+ if (configFile === undefined) return undefined;
313
+ switch (this.kind) {
314
+ case FileIncludeKind.RootFile: {
315
+ const fileName = getNormalizedAbsolutePath(config.fileNames[this.index], program.currentDirectory);
316
+ const matchedFileSpec = config.getMatchedFileSpec(fileName);
317
+ if (matchedFileSpec !== '') {
318
+ const node = findTsConfigArrayElement(configFile, 'files', matchedFileSpec);
319
+ return node === undefined
320
+ ? undefined
321
+ : diagnosticAtNode(configFile, node, Diagnostics.File_is_matched_by_files_list_specified_here);
322
+ }
323
+ const matchedIncludeSpec = config.getMatchedIncludeSpec(fileName);
324
+ if (matchedIncludeSpec !== '' && !config.isDefaultIncludeSpec()) {
325
+ const node = findTsConfigArrayElement(configFile, 'include', matchedIncludeSpec);
326
+ return node === undefined
327
+ ? undefined
328
+ : diagnosticAtNode(configFile, node, Diagnostics.File_is_matched_by_include_pattern_specified_here);
329
+ }
330
+ return undefined;
331
+ }
332
+ case FileIncludeKind.AutomaticTypeDirectiveFile: {
333
+ if (program.options.types?.includes('*') === true) return undefined;
334
+ const node = findArrayElement(
335
+ findPropertyAssignment(program.includeProcessor.compilerOptionsSyntax(program), 'types'),
336
+ this.typeReference,
337
+ );
338
+ return node === undefined
339
+ ? undefined
340
+ : diagnosticAtNode(configFile, node, Diagnostics.File_is_entry_point_of_type_library_specified_here);
341
+ }
342
+ default: {
343
+ const lib = program.options.lib;
344
+ const compilerOptions = program.includeProcessor.compilerOptionsSyntax(program);
345
+ if (this.index >= 0 && lib !== undefined) {
346
+ const node = findArrayElement(findPropertyAssignment(compilerOptions, 'lib'), lib[this.index]);
347
+ return node === undefined
348
+ ? undefined
349
+ : diagnosticAtNode(configFile, node, Diagnostics.File_is_library_specified_here);
350
+ }
351
+ const target = scriptTargetName(program.emitScriptTarget());
352
+ const property = findPropertyAssignment(compilerOptions, 'target');
353
+ const value = property?.initializer;
354
+ if (!(value instanceof StringLiteral) || value.text !== target) return undefined;
355
+ return diagnosticAtNode(configFile, value, Diagnostics.File_is_default_library_for_target_specified_here);
356
+ }
357
+ }
358
+ }
359
+ }
360
+
361
+ /** Where a reference from a file is written. */
362
+ export class ReferenceFileLocation {
363
+ constructor(
364
+ readonly file: SourceFile,
365
+ /** The module specifier, for imports. */
366
+ readonly node: Node | undefined,
367
+ /** The `///` directive, for references. */
368
+ readonly ref: FileReference | undefined,
369
+ readonly packageId: PackageId | undefined,
370
+ readonly isSynthetic: boolean,
371
+ ) {}
372
+
373
+ text(): string {
374
+ const node = this.node;
375
+ if (node !== undefined) {
376
+ if (node.pos >= 0 && node.end >= 0) {
377
+ const start = skipTrivia(this.file.text, node.pos);
378
+ return this.file.text.slice(start, node.end);
379
+ }
380
+ return '"' + (node instanceof StringLiteral ? node.text : '') + '"';
381
+ }
382
+ const ref = this.ref;
383
+ return ref === undefined ? '' : this.file.text.slice(ref.pos, ref.end);
384
+ }
385
+
386
+ diagnosticAt(message: DiagnosticMessage, ...args: string[]): Diagnostic {
387
+ if (this.node !== undefined) return diagnosticAtNode(this.file, this.node, message, ...args);
388
+ const ref = this.ref;
389
+ return new Diagnostic(this.file.diagnosticFile(), ref?.pos ?? 0, ref?.end ?? 0, message, args);
390
+ }
391
+ }
392
+
393
+ export const enum ProcessingDiagnosticKind {
394
+ /** A `/// <reference types>` or `/// <reference lib>` that could not be found. */
395
+ UnknownReference,
396
+ ExplainingFileInclude,
397
+ }
398
+
399
+ /** A diagnostic found while loading files, explained with why the file is in the program once loading is done. */
400
+ export class ProcessingDiagnostic {
401
+ private constructor(
402
+ readonly kind: ProcessingDiagnosticKind,
403
+ /** The path of the file explained; `''` if none. */
404
+ readonly file: string,
405
+ readonly reason: FileIncludeReason | undefined,
406
+ readonly message: DiagnosticMessage | undefined,
407
+ readonly args: readonly string[],
408
+ ) {}
409
+
410
+ static unknownReference(reason: FileIncludeReason): ProcessingDiagnostic {
411
+ return new ProcessingDiagnostic(ProcessingDiagnosticKind.UnknownReference, '', reason, undefined, []);
412
+ }
413
+
414
+ static explainingFileInclude(
415
+ file: string,
416
+ reason: FileIncludeReason | undefined,
417
+ message: DiagnosticMessage,
418
+ args: readonly string[],
419
+ ): ProcessingDiagnostic {
420
+ return new ProcessingDiagnostic(ProcessingDiagnosticKind.ExplainingFileInclude, file, reason, message, args);
421
+ }
422
+
423
+ /** The same diagnostic with a copy of its reason (`FileIncludeReason.copy`). */
424
+ copy(): ProcessingDiagnostic {
425
+ return new ProcessingDiagnostic(this.kind, this.file, this.reason?.copy(), this.message, this.args);
426
+ }
427
+
428
+ toDiagnostic(program: Program): Diagnostic {
429
+ const reason = this.reason;
430
+ if (this.kind === ProcessingDiagnosticKind.UnknownReference && reason !== undefined) {
431
+ const location = reason.getReferencedLocation(program);
432
+ const fileName = location.ref?.fileName ?? '';
433
+ if (reason.kind === FileIncludeKind.TypeReferenceDirective) {
434
+ return location.diagnosticAt(Diagnostics.Cannot_find_type_definition_file_for_0, fileName);
435
+ }
436
+ const libName = toFileNameLowerCase(fileName);
437
+ const unqualified = stripLibAffixes(libName);
438
+ const suggestion = getSpellingSuggestion(unqualified, libNames);
439
+ return suggestion !== ''
440
+ ? location.diagnosticAt(Diagnostics.Cannot_find_lib_definition_for_0_Did_you_mean_1, libName, suggestion)
441
+ : location.diagnosticAt(Diagnostics.Cannot_find_lib_definition_for_0, libName, suggestion);
442
+ }
443
+ return this.explainFile(program);
444
+ }
445
+
446
+ private explainFile(program: Program): Diagnostic {
447
+ const processor = program.includeProcessor;
448
+ const includeDetails: Diagnostic[] = [];
449
+ const relatedInfo: Diagnostic[] = [];
450
+ const seen = new Set<FileIncludeReason>();
451
+ let preferred: FileIncludeReason | undefined;
452
+ let hasDetails = false;
453
+ const reason = this.reason;
454
+ if (
455
+ reason !== undefined &&
456
+ reason.isReferencedFile() &&
457
+ !processor.getReferenceLocation(reason, program).isSynthetic
458
+ ) {
459
+ preferred = reason;
460
+ }
461
+ const processInclude = (include: FileIncludeReason): void => {
462
+ if (seen.has(include)) return;
463
+ seen.add(include);
464
+ includeDetails.push(include.toDiagnostic(program, false));
465
+ if (
466
+ preferred === undefined &&
467
+ include.isReferencedFile() &&
468
+ !processor.getReferenceLocation(include, program).isSynthetic
469
+ ) {
470
+ preferred = include;
471
+ } else if (preferred !== include) {
472
+ const info = include.toRelatedInfo(program);
473
+ if (info !== undefined) relatedInfo.push(info);
474
+ }
475
+ };
476
+ let redirectInfo: readonly Diagnostic[] = [];
477
+ if (this.file !== '') {
478
+ hasDetails = true;
479
+ for (const include of processor.reasonsOf(this.file)) processInclude(include);
480
+ redirectInfo = processor.explainRedirectAndImpliedFormat(program, this.file, false);
481
+ }
482
+ if (reason !== undefined) {
483
+ hasDetails = true;
484
+ processInclude(reason);
485
+ }
486
+ const chain: Diagnostic[] = [];
487
+ if (hasDetails && (preferred === undefined || seen.size !== 1)) {
488
+ const fileReason = createCompilerDiagnostic(Diagnostics.The_file_is_in_the_program_because_Colon);
489
+ fileReason.messageChain = includeDetails;
490
+ chain.push(fileReason);
491
+ }
492
+ for (const info of redirectInfo) chain.push(info);
493
+ const message = this.message ?? Diagnostics.The_file_is_in_the_program_because_Colon;
494
+ const result =
495
+ preferred !== undefined
496
+ ? processor.getReferenceLocation(preferred, program).diagnosticAt(message, ...this.args)
497
+ : createCompilerDiagnostic(message, ...this.args);
498
+ if (chain.length > 0) result.messageChain = chain;
499
+ if (relatedInfo.length > 0) result.relatedInformation = relatedInfo;
500
+ return result;
501
+ }
502
+ }
503
+
504
+ /** `lib.dom.d.ts` to `dom`. */
505
+ function stripLibAffixes(name: string): string {
506
+ let result = name.startsWith('lib.') ? name.slice(4) : name;
507
+ if (result.endsWith('.d.ts')) result = result.slice(0, -5);
508
+ return result;
509
+ }
510
+
511
+ /** Include reasons of every file and the diagnostics found while loading them. */
512
+ export class IncludeProcessor {
513
+ private computed: Diagnostic[] | undefined = undefined;
514
+ private compilerOptionsObject: ObjectLiteralExpression | undefined = undefined;
515
+ private compilerOptionsComputed = false;
516
+ private readonly redirectAndFileFormat = new Map<string, readonly Diagnostic[]>();
517
+
518
+ constructor(
519
+ readonly fileIncludeReasons = new Map<string, FileIncludeReason[]>(),
520
+ readonly processingDiagnostics: ProcessingDiagnostic[] = [],
521
+ ) {}
522
+
523
+ /** A processor with these reasons and processing diagnostics, whose diagnostics are computed for another program. */
524
+ copy(): IncludeProcessor {
525
+ return new IncludeProcessor(this.fileIncludeReasons, this.processingDiagnostics);
526
+ }
527
+
528
+ reasonsOf(path: string): readonly FileIncludeReason[] {
529
+ return this.fileIncludeReasons.get(path) ?? [];
530
+ }
531
+
532
+ addReason(path: string, reason: FileIncludeReason): void {
533
+ const reasons = this.fileIncludeReasons.get(path);
534
+ if (reasons === undefined) this.fileIncludeReasons.set(path, [reason]);
535
+ else reasons.push(reason);
536
+ }
537
+
538
+ addProcessingDiagnostic(diagnostic: ProcessingDiagnostic): void {
539
+ this.processingDiagnostics.push(diagnostic);
540
+ }
541
+
542
+ /** Reports a file name that differs from an included one only in casing. */
543
+ addCasingDiagnostic(
544
+ file: string,
545
+ existingCasing: string,
546
+ currentCasing: string,
547
+ reason: FileIncludeReason | undefined,
548
+ ): void {
549
+ let referenced = false;
550
+ for (const existing of this.reasonsOf(file)) if (existing.isReferencedFile()) referenced = true;
551
+ const reasonIsReference = reason !== undefined && reason.isReferencedFile();
552
+ if (!reasonIsReference && referenced) {
553
+ this.addProcessingDiagnostic(
554
+ ProcessingDiagnostic.explainingFileInclude(
555
+ file,
556
+ reason,
557
+ Diagnostics.Already_included_file_name_0_differs_from_file_name_1_only_in_casing,
558
+ [existingCasing, currentCasing],
559
+ ),
560
+ );
561
+ } else {
562
+ this.addProcessingDiagnostic(
563
+ ProcessingDiagnostic.explainingFileInclude(
564
+ file,
565
+ reason,
566
+ Diagnostics.File_name_0_differs_from_already_included_file_name_1_only_in_casing,
567
+ [currentCasing, existingCasing],
568
+ ),
569
+ );
570
+ }
571
+ }
572
+
573
+ getReferenceLocation(reason: FileIncludeReason, program: Program): ReferenceFileLocation {
574
+ return reason.getReferencedLocation(program);
575
+ }
576
+
577
+ /** Processing and resolution diagnostics, sorted by file. */
578
+ diagnostics(program: Program): readonly Diagnostic[] {
579
+ if (this.computed === undefined) {
580
+ const computed: Diagnostic[] = [];
581
+ for (const diagnostic of this.processingDiagnostics) computed.push(diagnostic.toDiagnostic(program));
582
+ for (const diagnostic of program.resolutionDiagnostics()) computed.push(diagnostic);
583
+ this.computed = computed;
584
+ }
585
+ return this.computed;
586
+ }
587
+
588
+ /** The compiler options object of the config file. */
589
+ compilerOptionsSyntax(program: Program): ObjectLiteralExpression | undefined {
590
+ if (this.compilerOptionsComputed) return this.compilerOptionsObject;
591
+ const property = findPropertyAssignment(
592
+ getTsConfigObjectLiteral(program.commandLine.configFile?.sourceFile),
593
+ 'compilerOptions',
594
+ );
595
+ const initializer = property?.initializer;
596
+ // `as`: scriptc loses instanceof narrowing here.
597
+ const object =
598
+ initializer instanceof ObjectLiteralExpression ? (initializer as ObjectLiteralExpression) : undefined;
599
+ if (!program.isShared()) {
600
+ this.compilerOptionsComputed = true;
601
+ this.compilerOptionsObject = object;
602
+ }
603
+ return object;
604
+ }
605
+
606
+ /**
607
+ * Notes on a file's origin and module format. Cached per file: the first caller's choice of relative or
608
+ * absolute file names sticks, as in tsgo. A shared program keeps what was cached before sharing; after that,
609
+ * only `--explainFiles` asks, once per file, and the result is not kept.
610
+ */
611
+ explainRedirectAndImpliedFormat(program: Program, path: string, relative: boolean): readonly Diagnostic[] {
612
+ const cached = this.redirectAndFileFormat.get(path);
613
+ if (cached !== undefined) return cached;
614
+ const result: Diagnostic[] = [];
615
+ const redirect = program.redirectFile(path);
616
+ const sourceFile = redirect === undefined ? program.getSourceFileByPath(path) : undefined;
617
+ if (redirect === undefined && sourceFile === undefined) return result;
618
+ const fileName = redirect !== undefined ? redirect.fileName : (sourceFile?.fileName ?? '');
619
+ const source = program.getSourceOfProjectReferenceIfOutputIncluded(path, fileName);
620
+ if (source !== fileName) {
621
+ result.push(
622
+ createCompilerDiagnostic(
623
+ Diagnostics.File_is_output_of_project_reference_source_0,
624
+ program.displayFileName(source, relative),
625
+ ),
626
+ );
627
+ }
628
+ if (redirect !== undefined) {
629
+ const target = program.getSourceFileByPath(redirect.target);
630
+ result.push(
631
+ createCompilerDiagnostic(
632
+ Diagnostics.File_redirects_to_file_0,
633
+ program.displayFileName(target?.fileName ?? '', relative),
634
+ ),
635
+ );
636
+ }
637
+ if (sourceFile !== undefined && isExternalOrCommonJSModule(sourceFile)) {
638
+ const metadata = program.sourceFileMetadata(path);
639
+ const packageJson = metadata.packageJsonDirectory + '/package.json';
640
+ const format = program.getImpliedNodeFormatForEmit(sourceFile);
641
+ if (format === ModuleKind.ESNext) {
642
+ if (metadata.packageJsonType === 'module') {
643
+ result.push(
644
+ createCompilerDiagnostic(
645
+ Diagnostics.File_is_ECMAScript_module_because_0_has_field_type_with_value_module,
646
+ program.displayFileName(packageJson, relative),
647
+ ),
648
+ );
649
+ }
650
+ } else if (format === ModuleKind.CommonJS) {
651
+ if (metadata.packageJsonType !== '') {
652
+ result.push(
653
+ createCompilerDiagnostic(
654
+ Diagnostics.File_is_CommonJS_module_because_0_has_field_type_whose_value_is_not_module,
655
+ program.displayFileName(packageJson, relative),
656
+ ),
657
+ );
658
+ } else if (metadata.packageJsonDirectory !== '') {
659
+ result.push(
660
+ createCompilerDiagnostic(
661
+ Diagnostics.File_is_CommonJS_module_because_0_does_not_have_field_type,
662
+ program.displayFileName(packageJson, relative),
663
+ ),
664
+ );
665
+ } else {
666
+ result.push(createCompilerDiagnostic(Diagnostics.File_is_CommonJS_module_because_package_json_was_not_found));
667
+ }
668
+ }
669
+ }
670
+ if (!program.isShared()) this.redirectAndFileFormat.set(path, result);
671
+ return result;
672
+ }
673
+ }