tsc-ts 0.0.4 → 0.0.6

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 +34 -2
  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 +2351 -0
  5. package/dist/api/compiler/ast.js +11212 -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 +1241 -0
  10. package/dist/api/compiler/binder.d.ts +33 -0
  11. package/dist/api/compiler/binder.js +2359 -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 +1641 -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 +357 -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 +788 -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 +314 -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 +291 -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 +580 -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 +2587 -0
  54. package/dist/api/compiler/checker-heritage.d.ts +28 -0
  55. package/dist/api/compiler/checker-heritage.js +901 -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 +442 -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 +200 -0
  69. package/dist/api/compiler/checker-members.js +2148 -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 +483 -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 +271 -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 +789 -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 +51 -0
  93. package/dist/api/compiler/checker-symbol-types.js +955 -0
  94. package/dist/api/compiler/checker-symbols.d.ts +181 -0
  95. package/dist/api/compiler/checker-symbols.js +1784 -0
  96. package/dist/api/compiler/checker-type-factory.d.ts +142 -0
  97. package/dist/api/compiler/checker-type-factory.js +2542 -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 +1093 -0
  103. package/dist/api/compiler/checker-types.js +1874 -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 +512 -0
  109. package/dist/api/compiler/checker.js +932 -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 +161 -0
  119. package/dist/api/compiler/diagnostics.js +784 -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 +144 -0
  123. package/dist/api/compiler/file-include.js +599 -0
  124. package/dist/api/compiler/file-loader.d.ts +290 -0
  125. package/dist/api/compiler/file-loader.js +1323 -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 +835 -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 +105 -0
  135. package/dist/api/compiler/link-tables.js +319 -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 +745 -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 +221 -0
  191. package/dist/api/compiler/parallel-parse.js +541 -0
  192. package/dist/api/compiler/parser.d.ts +604 -0
  193. package/dist/api/compiler/parser.js +6426 -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 +157 -0
  203. package/dist/api/compiler/printer/emit-context.js +582 -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 +529 -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 +1019 -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 +991 -0
  244. package/dist/api/compiler/symbol.d.ts +282 -0
  245. package/dist/api/compiler/symbol.js +339 -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 +677 -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 +539 -0
  268. package/dist/api/compiler/transformers/declarations-pseudo.d.ts +160 -0
  269. package/dist/api/compiler/transformers/declarations-pseudo.js +799 -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 +198 -0
  276. package/dist/api/compiler/transformers/declarations.d.ts +175 -0
  277. package/dist/api/compiler/transformers/declarations.js +2381 -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 +129 -0
  321. package/dist/api/compiler/transformers/reference-resolver.js +1157 -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 +10 -0
  325. package/dist/api/compiler/transformers/subtree-facts.js +205 -0
  326. package/dist/api/compiler/transformers/syntax-facts.d.ts +52 -0
  327. package/dist/api/compiler/transformers/syntax-facts.js +258 -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 +12870 -0
  382. package/src/compiler/astnav.ts +799 -0
  383. package/src/compiler/binder-utilities.ts +1392 -0
  384. package/src/compiler/binder.ts +2707 -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 +1201 -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 +355 -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 +3596 -0
  407. package/src/compiler/checker-heritage.ts +1240 -0
  408. package/src/compiler/checker-inference.ts +2584 -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 +1928 -0
  413. package/src/compiler/checker-literals.ts +61 -0
  414. package/src/compiler/checker-members.ts +2480 -0
  415. package/src/compiler/checker-modules.ts +2896 -0
  416. package/src/compiler/checker-narrowing.ts +3230 -0
  417. package/src/compiler/checker-object-literals.ts +591 -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 +1187 -0
  427. package/src/compiler/checker-symbols.ts +2157 -0
  428. package/src/compiler/checker-type-factory.ts +2616 -0
  429. package/src/compiler/checker-type-nodes.ts +1033 -0
  430. package/src/compiler/checker-type-operators.ts +2510 -0
  431. package/src/compiler/checker-types.ts +2520 -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 +1138 -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 +858 -0
  441. package/src/compiler/emitter.ts +434 -0
  442. package/src/compiler/encoder.ts +1945 -0
  443. package/src/compiler/file-include.ts +741 -0
  444. package/src/compiler/file-loader.ts +1597 -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 +2818 -0
  449. package/src/compiler/init.ts +141 -0
  450. package/src/compiler/instantiation.ts +938 -0
  451. package/src/compiler/jsdoc.ts +1386 -0
  452. package/src/compiler/link-tables.ts +343 -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 +1071 -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 +3433 -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 +1954 -0
  481. package/src/compiler/parallel-parse.ts +595 -0
  482. package/src/compiler/parse-thread.ts +136 -0
  483. package/src/compiler/parser.ts +7766 -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 +684 -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 +594 -0
  498. package/src/compiler/program-utilities.ts +435 -0
  499. package/src/compiler/program.ts +1426 -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 +1166 -0
  510. package/src/compiler/symbol.ts +557 -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 +833 -0
  523. package/src/compiler/transformers/declarations-pseudo.ts +969 -0
  524. package/src/compiler/transformers/declarations-resolver.ts +249 -0
  525. package/src/compiler/transformers/declarations-syntactic.ts +1867 -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 +1213 -0
  550. package/src/compiler/transformers/runtime-syntax.ts +942 -0
  551. package/src/compiler/transformers/subtree-facts.ts +253 -0
  552. package/src/compiler/transformers/syntax-facts.ts +358 -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 +1422 -0
  562. package/src/compiler/tsc-cli.ts +669 -0
  563. package/src/compiler/tsc-compile.ts +446 -0
  564. package/src/compiler/tsc-watch.ts +922 -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,599 @@
1
+ /**
2
+ * Why each file is in a program, as `--explainFiles` prints it, and diagnostics explaining file inclusion.
3
+ */
4
+ import { ObjectLiteralExpression, StringLiteral } from './ast.js';
5
+ import { createCompilerDiagnostic, Diagnostic } from './diagnostics.js';
6
+ import { packageIdToString } 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 { skipTrivia } from './scanner.js';
11
+ import { getSpellingSuggestion } from './spelling.js';
12
+ import { diagnosticAtNode, findArrayElement, findPropertyAssignment, findTsConfigArrayElement, getTsConfigObjectLiteral, } from './tsconfig.js';
13
+ /**
14
+ * One reason a file is in the program. Reasons are immutable, so the program's loader takes the
15
+ * reasons a parse thread found as they are; what they compute for a program is kept by its
16
+ * IncludeProcessor (`ReasonCache`).
17
+ */
18
+ export class FileIncludeReason {
19
+ kind;
20
+ file;
21
+ index;
22
+ synthetic;
23
+ typeReference;
24
+ packageId;
25
+ constructor(kind,
26
+ /** The referencing file's path, for references from a file. */
27
+ file,
28
+ /** The root file, `lib` entry or reference index; -1 for the default library. */
29
+ index,
30
+ /** The synthesized specifier of an `importHelpers` or JSX runtime import. */
31
+ synthetic,
32
+ /** The `types` entry, for automatic type directives. */
33
+ typeReference, packageId) {
34
+ this.kind = kind;
35
+ this.file = file;
36
+ this.index = index;
37
+ this.synthetic = synthetic;
38
+ this.typeReference = typeReference;
39
+ this.packageId = packageId;
40
+ }
41
+ static rootFile(index) {
42
+ return new FileIncludeReason(4 /* FileIncludeKind.RootFile */, '', index, undefined, '', undefined);
43
+ }
44
+ /** A `lib` entry, or the default library with `index` -1. */
45
+ static libFile(index) {
46
+ return new FileIncludeReason(5 /* FileIncludeKind.LibFile */, '', index, undefined, '', undefined);
47
+ }
48
+ static automaticTypeDirective(typeReference, packageId) {
49
+ return new FileIncludeReason(6 /* FileIncludeKind.AutomaticTypeDirectiveFile */, '', -1, undefined, typeReference, packageId);
50
+ }
51
+ /** An import (`index` into the file's imports and module augmentations, -1 if `synthetic`) or a `///` reference. */
52
+ static reference(kind, file, index, synthetic) {
53
+ return new FileIncludeReason(kind, file, index, synthetic, '', undefined);
54
+ }
55
+ /** The same reason as a new object (`IncludeProcessor.copy`). */
56
+ copy() {
57
+ return new FileIncludeReason(this.kind, this.file, this.index, this.synthetic, this.typeReference, this.packageId);
58
+ }
59
+ isReferencedFile() {
60
+ return this.kind <= 3 /* FileIncludeKind.LibReferenceDirective */;
61
+ }
62
+ getReferencedLocation(program) {
63
+ const cache = program.includeProcessor.cacheOf(this);
64
+ if (cache !== undefined && cache.location !== undefined)
65
+ return cache.location;
66
+ const file = program.getSourceFileByPath(this.file);
67
+ if (file === undefined)
68
+ throw new Error('referencing file is not in the program');
69
+ let location;
70
+ switch (this.kind) {
71
+ case 0 /* FileIncludeKind.Import */: {
72
+ let specifier;
73
+ if (this.synthetic !== undefined)
74
+ specifier = this.synthetic;
75
+ else if (this.index < file.imports.length)
76
+ specifier = file.imports[this.index];
77
+ else {
78
+ let index = file.imports.length;
79
+ for (const augmentation of file.moduleAugmentations) {
80
+ if (!(augmentation instanceof StringLiteral))
81
+ continue;
82
+ if (index === this.index) {
83
+ specifier = augmentation;
84
+ break;
85
+ }
86
+ index++;
87
+ }
88
+ }
89
+ if (specifier === undefined)
90
+ throw new Error('missing import specifier');
91
+ const resolution = program.getResolvedModuleFromModuleSpecifier(file, specifier);
92
+ location = new ReferenceFileLocation(file, specifier, undefined, resolution?.packageId, this.synthetic !== undefined);
93
+ break;
94
+ }
95
+ case 1 /* FileIncludeKind.ReferenceFile */:
96
+ location = new ReferenceFileLocation(file, undefined, file.referencedFiles[this.index], undefined, false);
97
+ break;
98
+ case 2 /* FileIncludeKind.TypeReferenceDirective */:
99
+ location = new ReferenceFileLocation(file, undefined, file.typeReferenceDirectives[this.index], undefined, false);
100
+ break;
101
+ default:
102
+ location = new ReferenceFileLocation(file, undefined, file.libReferenceDirectives[this.index], undefined, false);
103
+ }
104
+ if (!program.isShared())
105
+ program.includeProcessor.newCacheOf(this).location = location;
106
+ return location;
107
+ }
108
+ /** The reason as a message, with file names relative to the current directory if `relative`. */
109
+ toDiagnostic(program, relative) {
110
+ const cache = program.includeProcessor.cacheOf(this);
111
+ const cached = cache === undefined ? undefined : relative ? cache.relativeDiagnostic : cache.absoluteDiagnostic;
112
+ if (cached !== undefined)
113
+ return cached;
114
+ const diagnostic = this.computeDiagnostic(program, relative);
115
+ if (program.isShared())
116
+ return diagnostic;
117
+ const own = program.includeProcessor.newCacheOf(this);
118
+ if (relative)
119
+ own.relativeDiagnostic = diagnostic;
120
+ else
121
+ own.absoluteDiagnostic = diagnostic;
122
+ return diagnostic;
123
+ }
124
+ computeDiagnostic(program, relative) {
125
+ if (this.isReferencedFile())
126
+ return this.computeReferenceDiagnostic(program, relative);
127
+ switch (this.kind) {
128
+ case 4 /* FileIncludeKind.RootFile */: {
129
+ const config = program.commandLine;
130
+ if (config.configFile === undefined)
131
+ return createCompilerDiagnostic(353 /* Diagnostics.Root_file_specified_for_compilation */);
132
+ const fileName = getNormalizedAbsolutePath(config.fileNames[this.index], program.currentDirectory);
133
+ const matchedFileSpec = config.getMatchedFileSpec(fileName);
134
+ if (matchedFileSpec !== '') {
135
+ return createCompilerDiagnostic(335 /* Diagnostics.Part_of_files_list_in_tsconfig_json */, matchedFileSpec, program.displayFileName(fileName, relative));
136
+ }
137
+ const matchedIncludeSpec = config.getMatchedIncludeSpec(fileName);
138
+ if (matchedIncludeSpec !== '') {
139
+ if (config.isDefaultIncludeSpec()) {
140
+ return createCompilerDiagnostic(378 /* Diagnostics.Matched_by_default_include_pattern_Asterisk_Asterisk_Slash_Asterisk */);
141
+ }
142
+ return createCompilerDiagnostic(333 /* Diagnostics.Matched_by_include_pattern_0_in_1 */, matchedIncludeSpec, program.displayFileName(config.configName, relative));
143
+ }
144
+ return createCompilerDiagnostic(353 /* Diagnostics.Root_file_specified_for_compilation */);
145
+ }
146
+ case 6 /* FileIncludeKind.AutomaticTypeDirectiveFile */: {
147
+ const usesWildcardTypes = program.options.types?.includes('*') === true;
148
+ const packageId = this.packageId;
149
+ if (!usesWildcardTypes) {
150
+ return packageId !== undefined
151
+ ? createCompilerDiagnostic(344 /* Diagnostics.Entry_point_of_type_library_0_specified_in_compilerOptions_with_packageId_1 */, this.typeReference, packageIdToString(packageId))
152
+ : createCompilerDiagnostic(343 /* Diagnostics.Entry_point_of_type_library_0_specified_in_compilerOptions */, this.typeReference);
153
+ }
154
+ return packageId !== undefined
155
+ ? createCompilerDiagnostic(347 /* Diagnostics.Entry_point_for_implicit_type_library_0_with_packageId_1 */, this.typeReference, packageIdToString(packageId))
156
+ : createCompilerDiagnostic(346 /* Diagnostics.Entry_point_for_implicit_type_library_0 */, this.typeReference);
157
+ }
158
+ default: {
159
+ const lib = program.options.lib;
160
+ if (this.index >= 0 && lib !== undefined) {
161
+ return createCompilerDiagnostic(348 /* Diagnostics.Library_0_specified_in_compilerOptions */, lib[this.index]);
162
+ }
163
+ return createCompilerDiagnostic(351 /* Diagnostics.Default_library_for_target_0 */, scriptTargetName(program.emitScriptTarget()));
164
+ }
165
+ }
166
+ }
167
+ computeReferenceDiagnostic(program, relative) {
168
+ const location = program.includeProcessor.getReferenceLocation(this, program);
169
+ const text = location.text();
170
+ const fileName = program.displayFileName(location.file.fileName, relative);
171
+ const packageId = location.packageId;
172
+ switch (this.kind) {
173
+ case 0 /* FileIncludeKind.Import */: {
174
+ if (!location.isSynthetic) {
175
+ return packageId !== undefined
176
+ ? createCompilerDiagnostic(320 /* Diagnostics.Imported_via_0_from_file_1_with_packageId_2 */, text, fileName, packageIdToString(packageId))
177
+ : createCompilerDiagnostic(319 /* Diagnostics.Imported_via_0_from_file_1 */, text, fileName);
178
+ }
179
+ if (program.importHelpersImportSpecifier(location.file.path) === location.node) {
180
+ return packageId !== undefined
181
+ ? createCompilerDiagnostic(322 /* Diagnostics.Imported_via_0_from_file_1_with_packageId_2_to_import_importHelpers_as_specified_in_compilerOptions */, text, fileName, packageIdToString(packageId))
182
+ : createCompilerDiagnostic(321 /* Diagnostics.Imported_via_0_from_file_1_to_import_importHelpers_as_specified_in_compilerOptions */, text, fileName);
183
+ }
184
+ return packageId !== undefined
185
+ ? createCompilerDiagnostic(324 /* Diagnostics.Imported_via_0_from_file_1_with_packageId_2_to_import_jsx_and_jsxs_factory_functions */, text, fileName, packageIdToString(packageId))
186
+ : createCompilerDiagnostic(323 /* Diagnostics.Imported_via_0_from_file_1_to_import_jsx_and_jsxs_factory_functions */, text, fileName);
187
+ }
188
+ case 1 /* FileIncludeKind.ReferenceFile */:
189
+ return createCompilerDiagnostic(326 /* Diagnostics.Referenced_via_0_from_file_1 */, text, fileName);
190
+ case 2 /* FileIncludeKind.TypeReferenceDirective */:
191
+ return packageId !== undefined
192
+ ? createCompilerDiagnostic(329 /* Diagnostics.Type_library_referenced_via_0_from_file_1_with_packageId_2 */, text, fileName, packageIdToString(packageId))
193
+ : createCompilerDiagnostic(328 /* Diagnostics.Type_library_referenced_via_0_from_file_1 */, text, fileName);
194
+ default:
195
+ return createCompilerDiagnostic(331 /* Diagnostics.Library_referenced_via_0_from_file_1 */, text, fileName);
196
+ }
197
+ }
198
+ /** Where in the config or a file this reason is written, as related information; `undefined` if nowhere. */
199
+ toRelatedInfo(program) {
200
+ const cache = program.includeProcessor.cacheOf(this);
201
+ if (cache !== undefined && cache.relatedInfo !== undefined)
202
+ return cache.relatedInfo ?? undefined;
203
+ const info = this.computeRelatedInfo(program);
204
+ if (!program.isShared())
205
+ program.includeProcessor.newCacheOf(this).relatedInfo = info ?? null;
206
+ return info;
207
+ }
208
+ computeRelatedInfo(program) {
209
+ if (this.isReferencedFile()) {
210
+ const location = program.includeProcessor.getReferenceLocation(this, program);
211
+ if (location.isSynthetic)
212
+ return undefined;
213
+ switch (this.kind) {
214
+ case 0 /* FileIncludeKind.Import */:
215
+ return location.diagnosticAt(325 /* Diagnostics.File_is_included_via_import_here */);
216
+ case 1 /* FileIncludeKind.ReferenceFile */:
217
+ return location.diagnosticAt(327 /* Diagnostics.File_is_included_via_reference_here */);
218
+ case 2 /* FileIncludeKind.TypeReferenceDirective */:
219
+ return location.diagnosticAt(330 /* Diagnostics.File_is_included_via_type_library_reference_here */);
220
+ default:
221
+ return location.diagnosticAt(332 /* Diagnostics.File_is_included_via_library_reference_here */);
222
+ }
223
+ }
224
+ const config = program.commandLine;
225
+ const configFile = config.configFile?.sourceFile;
226
+ if (configFile === undefined)
227
+ return undefined;
228
+ switch (this.kind) {
229
+ case 4 /* FileIncludeKind.RootFile */: {
230
+ const fileName = getNormalizedAbsolutePath(config.fileNames[this.index], program.currentDirectory);
231
+ const matchedFileSpec = config.getMatchedFileSpec(fileName);
232
+ if (matchedFileSpec !== '') {
233
+ const node = findTsConfigArrayElement(configFile, 'files', matchedFileSpec);
234
+ return node === undefined
235
+ ? undefined
236
+ : diagnosticAtNode(configFile, node, 336 /* Diagnostics.File_is_matched_by_files_list_specified_here */);
237
+ }
238
+ const matchedIncludeSpec = config.getMatchedIncludeSpec(fileName);
239
+ if (matchedIncludeSpec !== '' && !config.isDefaultIncludeSpec()) {
240
+ const node = findTsConfigArrayElement(configFile, 'include', matchedIncludeSpec);
241
+ return node === undefined
242
+ ? undefined
243
+ : diagnosticAtNode(configFile, node, 334 /* Diagnostics.File_is_matched_by_include_pattern_specified_here */);
244
+ }
245
+ return undefined;
246
+ }
247
+ case 6 /* FileIncludeKind.AutomaticTypeDirectiveFile */: {
248
+ if (program.options.types?.includes('*') === true)
249
+ return undefined;
250
+ const node = findArrayElement(findPropertyAssignment(program.includeProcessor.compilerOptionsSyntax(program), 'types'), this.typeReference);
251
+ return node === undefined
252
+ ? undefined
253
+ : diagnosticAtNode(configFile, node, 345 /* Diagnostics.File_is_entry_point_of_type_library_specified_here */);
254
+ }
255
+ default: {
256
+ const lib = program.options.lib;
257
+ const compilerOptions = program.includeProcessor.compilerOptionsSyntax(program);
258
+ if (this.index >= 0 && lib !== undefined) {
259
+ const node = findArrayElement(findPropertyAssignment(compilerOptions, 'lib'), lib[this.index]);
260
+ return node === undefined
261
+ ? undefined
262
+ : diagnosticAtNode(configFile, node, 349 /* Diagnostics.File_is_library_specified_here */);
263
+ }
264
+ const target = scriptTargetName(program.emitScriptTarget());
265
+ const property = findPropertyAssignment(compilerOptions, 'target');
266
+ const value = property?.initializer;
267
+ if (!(value instanceof StringLiteral) || value.text !== target)
268
+ return undefined;
269
+ return diagnosticAtNode(configFile, value, 352 /* Diagnostics.File_is_default_library_for_target_specified_here */);
270
+ }
271
+ }
272
+ }
273
+ }
274
+ /** Where a reference from a file is written. */
275
+ export class ReferenceFileLocation {
276
+ file;
277
+ node;
278
+ ref;
279
+ packageId;
280
+ isSynthetic;
281
+ constructor(file,
282
+ /** The module specifier, for imports. */
283
+ node,
284
+ /** The `///` directive, for references. */
285
+ ref, packageId, isSynthetic) {
286
+ this.file = file;
287
+ this.node = node;
288
+ this.ref = ref;
289
+ this.packageId = packageId;
290
+ this.isSynthetic = isSynthetic;
291
+ }
292
+ text() {
293
+ const node = this.node;
294
+ if (node !== undefined) {
295
+ if (node.pos >= 0 && node.end >= 0) {
296
+ const start = skipTrivia(this.file.text, node.pos);
297
+ return this.file.text.slice(start, node.end);
298
+ }
299
+ return '"' + (node instanceof StringLiteral ? node.text : '') + '"';
300
+ }
301
+ const ref = this.ref;
302
+ return ref === undefined ? '' : this.file.text.slice(ref.pos, ref.end);
303
+ }
304
+ diagnosticAt(message, ...args) {
305
+ if (this.node !== undefined)
306
+ return diagnosticAtNode(this.file, this.node, message, ...args);
307
+ const ref = this.ref;
308
+ return new Diagnostic(this.file.diagnosticFile(), ref?.pos ?? 0, ref?.end ?? 0, message, args);
309
+ }
310
+ }
311
+ /** A diagnostic found while loading files, explained with why the file is in the program once loading is done. */
312
+ export class ProcessingDiagnostic {
313
+ kind;
314
+ file;
315
+ reason;
316
+ message;
317
+ args;
318
+ constructor(kind,
319
+ /** The path of the file explained; `''` if none. */
320
+ file, reason, message, args) {
321
+ this.kind = kind;
322
+ this.file = file;
323
+ this.reason = reason;
324
+ this.message = message;
325
+ this.args = args;
326
+ }
327
+ static unknownReference(reason) {
328
+ return new ProcessingDiagnostic(0 /* ProcessingDiagnosticKind.UnknownReference */, '', reason, undefined, []);
329
+ }
330
+ static explainingFileInclude(file, reason, message, args) {
331
+ return new ProcessingDiagnostic(1 /* ProcessingDiagnosticKind.ExplainingFileInclude */, file, reason, message, args);
332
+ }
333
+ /** The same diagnostic with a copy of its reason (`FileIncludeReason.copy`). */
334
+ copy() {
335
+ return new ProcessingDiagnostic(this.kind, this.file, this.reason?.copy(), this.message, this.args);
336
+ }
337
+ /** This diagnostic with `renew(reason)` for its reason; itself when that is its reason. */
338
+ withReason(renew) {
339
+ const reason = this.reason === undefined ? undefined : renew(this.reason);
340
+ return reason === this.reason
341
+ ? this
342
+ : new ProcessingDiagnostic(this.kind, this.file, reason, this.message, this.args);
343
+ }
344
+ toDiagnostic(program) {
345
+ const reason = this.reason;
346
+ if (this.kind === 0 /* ProcessingDiagnosticKind.UnknownReference */ && reason !== undefined) {
347
+ const location = reason.getReferencedLocation(program);
348
+ const fileName = location.ref?.fileName ?? '';
349
+ if (reason.kind === 2 /* FileIncludeKind.TypeReferenceDirective */) {
350
+ return location.diagnosticAt(821 /* Diagnostics.Cannot_find_type_definition_file_for_0 */, fileName);
351
+ }
352
+ const libName = toFileNameLowerCase(fileName);
353
+ const unqualified = stripLibAffixes(libName);
354
+ const suggestion = getSpellingSuggestion(unqualified, libNames);
355
+ return suggestion !== ''
356
+ ? location.diagnosticAt(859 /* Diagnostics.Cannot_find_lib_definition_for_0_Did_you_mean_1 */, libName, suggestion)
357
+ : location.diagnosticAt(858 /* Diagnostics.Cannot_find_lib_definition_for_0 */, libName, suggestion);
358
+ }
359
+ return this.explainFile(program);
360
+ }
361
+ explainFile(program) {
362
+ const processor = program.includeProcessor;
363
+ const includeDetails = [];
364
+ const relatedInfo = [];
365
+ const seen = new Set();
366
+ let preferred;
367
+ let hasDetails = false;
368
+ const reason = this.reason;
369
+ if (reason !== undefined &&
370
+ reason.isReferencedFile() &&
371
+ !processor.getReferenceLocation(reason, program).isSynthetic) {
372
+ preferred = reason;
373
+ }
374
+ const processInclude = (include) => {
375
+ if (seen.has(include))
376
+ return;
377
+ seen.add(include);
378
+ includeDetails.push(include.toDiagnostic(program, false));
379
+ if (preferred === undefined &&
380
+ include.isReferencedFile() &&
381
+ !processor.getReferenceLocation(include, program).isSynthetic) {
382
+ preferred = include;
383
+ }
384
+ else if (preferred !== include) {
385
+ const info = include.toRelatedInfo(program);
386
+ if (info !== undefined)
387
+ relatedInfo.push(info);
388
+ }
389
+ };
390
+ let redirectInfo = [];
391
+ if (this.file !== '') {
392
+ hasDetails = true;
393
+ for (const include of processor.reasonsOf(this.file))
394
+ processInclude(include);
395
+ redirectInfo = processor.explainRedirectAndImpliedFormat(program, this.file, false);
396
+ }
397
+ if (reason !== undefined) {
398
+ hasDetails = true;
399
+ processInclude(reason);
400
+ }
401
+ const chain = [];
402
+ if (hasDetails && (preferred === undefined || seen.size !== 1)) {
403
+ const fileReason = createCompilerDiagnostic(356 /* Diagnostics.The_file_is_in_the_program_because_Colon */);
404
+ fileReason.messageChain = includeDetails;
405
+ chain.push(fileReason);
406
+ }
407
+ for (const info of redirectInfo)
408
+ chain.push(info);
409
+ const message = this.message ?? 356 /* Diagnostics.The_file_is_in_the_program_because_Colon */;
410
+ const result = preferred !== undefined
411
+ ? processor.getReferenceLocation(preferred, program).diagnosticAt(message, ...this.args)
412
+ : createCompilerDiagnostic(message, ...this.args);
413
+ if (chain.length > 0)
414
+ result.messageChain = chain;
415
+ if (relatedInfo.length > 0)
416
+ result.relatedInformation = relatedInfo;
417
+ return result;
418
+ }
419
+ }
420
+ /** `lib.dom.d.ts` to `dom`. */
421
+ function stripLibAffixes(name) {
422
+ let result = name.startsWith('lib.') ? name.slice(4) : name;
423
+ if (result.endsWith('.d.ts'))
424
+ result = result.slice(0, -5);
425
+ return result;
426
+ }
427
+ /** Include reasons of every file and the diagnostics found while loading them. */
428
+ /** What a reason computed for the program of an IncludeProcessor. */
429
+ class ReasonCache {
430
+ relativeDiagnostic = undefined;
431
+ absoluteDiagnostic = undefined;
432
+ location = undefined;
433
+ relatedInfo = undefined;
434
+ }
435
+ export class IncludeProcessor {
436
+ fileIncludeReasons;
437
+ processingDiagnostics;
438
+ computed = undefined;
439
+ /** What each reason computed for this processor's program, once it computed something. */
440
+ reasonCaches = new Map();
441
+ compilerOptionsObject = undefined;
442
+ compilerOptionsComputed = false;
443
+ redirectAndFileFormat = new Map();
444
+ /** The number of processing diagnostics when the program was created (`noteProgramCreated`). */
445
+ createdCount = undefined;
446
+ constructor(fileIncludeReasons = new Map(), processingDiagnostics = []) {
447
+ this.fileIncludeReasons = fileIncludeReasons;
448
+ this.processingDiagnostics = processingDiagnostics;
449
+ }
450
+ /** What `reason` computed for this processor's program, if anything. */
451
+ cacheOf(reason) {
452
+ return this.reasonCaches.get(reason);
453
+ }
454
+ /** The cache of `reason`, created if needed. */
455
+ newCacheOf(reason) {
456
+ let cache = this.reasonCaches.get(reason);
457
+ if (cache === undefined) {
458
+ cache = new ReasonCache();
459
+ this.reasonCaches.set(reason, cache);
460
+ }
461
+ return cache;
462
+ }
463
+ /**
464
+ * A processor with these reasons and the processing diagnostics its program was created with, whose diagnostics are
465
+ * computed for another program. Computing the common source directory later adds diagnostics that the program
466
+ * does not report (`Program.commonSourceDirectory`), and those of a program shared with checker threads are
467
+ * immutable, so the copy has its own list. The reasons written in `replaced`, the path of the file
468
+ * `Program.updateFile` swaps in, are new: a reason keeps where its file writes it, which the new text may move. Each
469
+ * is copied once, so a diagnostic and the file's reasons still share it.
470
+ */
471
+ copy(replaced) {
472
+ const created = this.processingDiagnostics.slice(0, this.createdCount ?? this.processingDiagnostics.length);
473
+ if (replaced === undefined)
474
+ return new IncludeProcessor(this.fileIncludeReasons, created);
475
+ const copies = new Map();
476
+ const renew = (reason) => {
477
+ if (reason.file !== replaced)
478
+ return reason;
479
+ let copy = copies.get(reason);
480
+ if (copy === undefined) {
481
+ copy = reason.copy();
482
+ copies.set(reason, copy);
483
+ }
484
+ return copy;
485
+ };
486
+ const reasons = new Map();
487
+ for (const [path, list] of this.fileIncludeReasons)
488
+ reasons.set(path, list.some((reason) => reason.file === replaced) ? list.map(renew) : list);
489
+ return new IncludeProcessor(reasons, created.map((diagnostic) => diagnostic.withReason(renew)));
490
+ }
491
+ /** The program is created: the processing diagnostics so far are those a copy takes. */
492
+ noteProgramCreated() {
493
+ this.createdCount = this.processingDiagnostics.length;
494
+ }
495
+ reasonsOf(path) {
496
+ return this.fileIncludeReasons.get(path) ?? [];
497
+ }
498
+ addReason(path, reason) {
499
+ const reasons = this.fileIncludeReasons.get(path);
500
+ if (reasons === undefined)
501
+ this.fileIncludeReasons.set(path, [reason]);
502
+ else
503
+ reasons.push(reason);
504
+ }
505
+ addProcessingDiagnostic(diagnostic) {
506
+ this.processingDiagnostics.push(diagnostic);
507
+ }
508
+ /** Reports a file name that differs from an included one only in casing. */
509
+ addCasingDiagnostic(file, existingCasing, currentCasing, reason) {
510
+ let referenced = false;
511
+ for (const existing of this.reasonsOf(file))
512
+ if (existing.isReferencedFile())
513
+ referenced = true;
514
+ const reasonIsReference = reason !== undefined && reason.isReferencedFile();
515
+ if (!reasonIsReference && referenced) {
516
+ this.addProcessingDiagnostic(ProcessingDiagnostic.explainingFileInclude(file, reason, 210 /* Diagnostics.Already_included_file_name_0_differs_from_file_name_1_only_in_casing */, [existingCasing, currentCasing]));
517
+ }
518
+ else {
519
+ this.addProcessingDiagnostic(ProcessingDiagnostic.explainingFileInclude(file, reason, 114 /* Diagnostics.File_name_0_differs_from_already_included_file_name_1_only_in_casing */, [currentCasing, existingCasing]));
520
+ }
521
+ }
522
+ getReferenceLocation(reason, program) {
523
+ return reason.getReferencedLocation(program);
524
+ }
525
+ /** Processing and resolution diagnostics, sorted by file. */
526
+ diagnostics(program) {
527
+ if (this.computed === undefined) {
528
+ const computed = [];
529
+ for (const diagnostic of this.processingDiagnostics)
530
+ computed.push(diagnostic.toDiagnostic(program));
531
+ for (const diagnostic of program.resolutionDiagnostics())
532
+ computed.push(diagnostic);
533
+ this.computed = computed;
534
+ }
535
+ return this.computed;
536
+ }
537
+ /** The compiler options object of the config file. */
538
+ compilerOptionsSyntax(program) {
539
+ if (this.compilerOptionsComputed)
540
+ return this.compilerOptionsObject;
541
+ const property = findPropertyAssignment(getTsConfigObjectLiteral(program.commandLine.configFile?.sourceFile), 'compilerOptions');
542
+ const initializer = property?.initializer;
543
+ // `as`: scriptc loses instanceof narrowing here.
544
+ const object = initializer instanceof ObjectLiteralExpression ? initializer : undefined;
545
+ if (!program.isShared()) {
546
+ this.compilerOptionsComputed = true;
547
+ this.compilerOptionsObject = object;
548
+ }
549
+ return object;
550
+ }
551
+ /**
552
+ * Notes on a file's origin and module format. Cached per file: the first caller's choice of relative or
553
+ * absolute file names sticks, as in tsgo. A shared program keeps what was cached before sharing; after that,
554
+ * only `--explainFiles` asks, once per file, and the result is not kept.
555
+ */
556
+ explainRedirectAndImpliedFormat(program, path, relative) {
557
+ const cached = this.redirectAndFileFormat.get(path);
558
+ if (cached !== undefined)
559
+ return cached;
560
+ const result = [];
561
+ const redirect = program.redirectFile(path);
562
+ const sourceFile = redirect === undefined ? program.getSourceFileByPath(path) : undefined;
563
+ if (redirect === undefined && sourceFile === undefined)
564
+ return result;
565
+ const fileName = redirect !== undefined ? redirect.fileName : (sourceFile?.fileName ?? '');
566
+ const source = program.getSourceOfProjectReferenceIfOutputIncluded(path, fileName);
567
+ if (source !== fileName) {
568
+ result.push(createCompilerDiagnostic(354 /* Diagnostics.File_is_output_of_project_reference_source_0 */, program.displayFileName(source, relative)));
569
+ }
570
+ if (redirect !== undefined) {
571
+ const target = program.getSourceFileByPath(redirect.target);
572
+ result.push(createCompilerDiagnostic(355 /* Diagnostics.File_redirects_to_file_0 */, program.displayFileName(target?.fileName ?? '', relative)));
573
+ }
574
+ if (sourceFile !== undefined && isExternalOrCommonJSModule(sourceFile)) {
575
+ const metadata = program.sourceFileMetadata(path);
576
+ const packageJson = metadata.packageJsonDirectory + '/package.json';
577
+ const format = program.getImpliedNodeFormatForEmit(sourceFile);
578
+ if (format === ModuleKind.ESNext) {
579
+ if (metadata.packageJsonType === 'module') {
580
+ result.push(createCompilerDiagnostic(379 /* Diagnostics.File_is_ECMAScript_module_because_0_has_field_type_with_value_module */, program.displayFileName(packageJson, relative)));
581
+ }
582
+ }
583
+ else if (format === ModuleKind.CommonJS) {
584
+ if (metadata.packageJsonType !== '') {
585
+ result.push(createCompilerDiagnostic(380 /* Diagnostics.File_is_CommonJS_module_because_0_has_field_type_whose_value_is_not_module */, program.displayFileName(packageJson, relative)));
586
+ }
587
+ else if (metadata.packageJsonDirectory !== '') {
588
+ result.push(createCompilerDiagnostic(381 /* Diagnostics.File_is_CommonJS_module_because_0_does_not_have_field_type */, program.displayFileName(packageJson, relative)));
589
+ }
590
+ else {
591
+ result.push(createCompilerDiagnostic(382 /* Diagnostics.File_is_CommonJS_module_because_package_json_was_not_found */));
592
+ }
593
+ }
594
+ }
595
+ if (!program.isShared())
596
+ this.redirectAndFileFormat.set(path, result);
597
+ return result;
598
+ }
599
+ }