tsc-ts 0.0.3 → 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 (596) hide show
  1. package/README.md +46 -0
  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 +74 -0
  357. package/dist/api/library/ast.generated.d.ts +1145 -0
  358. package/dist/api/library/ast.generated.js +3 -0
  359. package/dist/api/library/ast.js +5 -0
  360. package/dist/api/library/checker.d.ts +51 -0
  361. package/dist/api/library/checker.js +318 -0
  362. package/dist/api/library/compiler-options.generated.d.ts +108 -0
  363. package/dist/api/library/compiler-options.generated.js +3 -0
  364. package/dist/api/library/diagnostics.d.ts +13 -0
  365. package/dist/api/library/diagnostics.js +50 -0
  366. package/dist/api/library/disk.d.ts +13 -0
  367. package/dist/api/library/disk.js +66 -0
  368. package/dist/api/library/enums.generated.d.ts +891 -0
  369. package/dist/api/library/enums.generated.js +916 -0
  370. package/dist/api/library/errors.d.ts +13 -0
  371. package/dist/api/library/errors.js +24 -0
  372. package/dist/api/library/host.d.ts +24 -0
  373. package/dist/api/library/host.js +52 -0
  374. package/dist/api/library/index.d.ts +14 -0
  375. package/dist/api/library/index.js +15 -0
  376. package/dist/api/library/nodes.d.ts +51 -0
  377. package/dist/api/library/nodes.js +196 -0
  378. package/dist/api/library/options.d.ts +144 -0
  379. package/dist/api/library/options.js +308 -0
  380. package/dist/api/library/parse.d.ts +19 -0
  381. package/dist/api/library/parse.js +41 -0
  382. package/dist/api/library/program.d.ts +21 -0
  383. package/dist/api/library/program.js +234 -0
  384. package/dist/api/library/symbols.d.ts +8 -0
  385. package/dist/api/library/symbols.js +11 -0
  386. package/dist/api/library/types.d.ts +313 -0
  387. package/dist/api/library/types.js +6 -0
  388. package/package.json +22 -8
  389. package/src/compiler/ast-utilities.ts +548 -0
  390. package/src/compiler/ast.ts +12862 -0
  391. package/src/compiler/astnav.ts +799 -0
  392. package/src/compiler/binder-utilities.ts +1392 -0
  393. package/src/compiler/binder.ts +2703 -0
  394. package/src/compiler/build-info.ts +1197 -0
  395. package/src/compiler/character-codes.ts +323 -0
  396. package/src/compiler/checker-calls.ts +2155 -0
  397. package/src/compiler/checker-classes.ts +706 -0
  398. package/src/compiler/checker-contextual.ts +1457 -0
  399. package/src/compiler/checker-declaration-order.ts +438 -0
  400. package/src/compiler/checker-declarations.ts +1194 -0
  401. package/src/compiler/checker-declared-types.ts +919 -0
  402. package/src/compiler/checker-decorators.ts +694 -0
  403. package/src/compiler/checker-deprecation.ts +359 -0
  404. package/src/compiler/checker-destructuring.ts +805 -0
  405. package/src/compiler/checker-elaboration.ts +477 -0
  406. package/src/compiler/checker-emit-helpers.ts +224 -0
  407. package/src/compiler/checker-emit-resolver.ts +769 -0
  408. package/src/compiler/checker-evaluator.ts +243 -0
  409. package/src/compiler/checker-expressions.ts +1831 -0
  410. package/src/compiler/checker-features.ts +361 -0
  411. package/src/compiler/checker-flow.ts +394 -0
  412. package/src/compiler/checker-functions.ts +1296 -0
  413. package/src/compiler/checker-generated-code.ts +227 -0
  414. package/src/compiler/checker-globals.ts +52 -0
  415. package/src/compiler/checker-grammar.ts +3584 -0
  416. package/src/compiler/checker-heritage.ts +1233 -0
  417. package/src/compiler/checker-inference.ts +2576 -0
  418. package/src/compiler/checker-iteration.ts +1206 -0
  419. package/src/compiler/checker-javascript.ts +502 -0
  420. package/src/compiler/checker-jsdoc.ts +360 -0
  421. package/src/compiler/checker-jsx.ts +1924 -0
  422. package/src/compiler/checker-literals.ts +61 -0
  423. package/src/compiler/checker-members.ts +2436 -0
  424. package/src/compiler/checker-modules.ts +2886 -0
  425. package/src/compiler/checker-narrowing.ts +3230 -0
  426. package/src/compiler/checker-object-literals.ts +575 -0
  427. package/src/compiler/checker-operators.ts +1422 -0
  428. package/src/compiler/checker-overloads.ts +328 -0
  429. package/src/compiler/checker-property-access.ts +906 -0
  430. package/src/compiler/checker-services.ts +1149 -0
  431. package/src/compiler/checker-signatures.ts +1032 -0
  432. package/src/compiler/checker-source-file.ts +732 -0
  433. package/src/compiler/checker-statements.ts +292 -0
  434. package/src/compiler/checker-super.ts +261 -0
  435. package/src/compiler/checker-symbol-types.ts +2107 -0
  436. package/src/compiler/checker-symbols.ts +2150 -0
  437. package/src/compiler/checker-type-factory.ts +2579 -0
  438. package/src/compiler/checker-type-nodes.ts +1033 -0
  439. package/src/compiler/checker-type-operators.ts +2502 -0
  440. package/src/compiler/checker-types.ts +2340 -0
  441. package/src/compiler/checker-unused.ts +642 -0
  442. package/src/compiler/checker-utilities.ts +161 -0
  443. package/src/compiler/checker.ts +1116 -0
  444. package/src/compiler/command-line.ts +436 -0
  445. package/src/compiler/compile-program.ts +439 -0
  446. package/src/compiler/decoder.ts +1209 -0
  447. package/src/compiler/diagnostic-locales.ts +86 -0
  448. package/src/compiler/diagnostic-messages.ts +2349 -0
  449. package/src/compiler/diagnostics.ts +897 -0
  450. package/src/compiler/emitter.ts +434 -0
  451. package/src/compiler/encoder.ts +1945 -0
  452. package/src/compiler/file-include.ts +673 -0
  453. package/src/compiler/file-loader.ts +1528 -0
  454. package/src/compiler/file-system.ts +143 -0
  455. package/src/compiler/flow.ts +89 -0
  456. package/src/compiler/help.ts +473 -0
  457. package/src/compiler/incremental.ts +2784 -0
  458. package/src/compiler/init.ts +141 -0
  459. package/src/compiler/instantiation.ts +894 -0
  460. package/src/compiler/jsdoc.ts +1386 -0
  461. package/src/compiler/link-tables.ts +98 -0
  462. package/src/compiler/locale-data.ts +203 -0
  463. package/src/compiler/locale.ts +307 -0
  464. package/src/compiler/locales/cs-CZ.ts +5 -0
  465. package/src/compiler/locales/de-DE.ts +5 -0
  466. package/src/compiler/locales/es-ES.ts +5 -0
  467. package/src/compiler/locales/fr-FR.ts +5 -0
  468. package/src/compiler/locales/it-IT.ts +5 -0
  469. package/src/compiler/locales/ja-JP.ts +5 -0
  470. package/src/compiler/locales/ko-KR.ts +5 -0
  471. package/src/compiler/locales/pl-PL.ts +5 -0
  472. package/src/compiler/locales/pt-BR.ts +5 -0
  473. package/src/compiler/locales/ru-RU.ts +5 -0
  474. package/src/compiler/locales/tr-TR.ts +5 -0
  475. package/src/compiler/locales/zh-CN.ts +5 -0
  476. package/src/compiler/locales/zh-TW.ts +5 -0
  477. package/src/compiler/module-resolution-types.ts +243 -0
  478. package/src/compiler/module-resolution.ts +2072 -0
  479. package/src/compiler/module-specifiers.ts +1491 -0
  480. package/src/compiler/name-resolver.ts +646 -0
  481. package/src/compiler/node-builder-names.ts +1069 -0
  482. package/src/compiler/node-builder-pseudo.ts +892 -0
  483. package/src/compiler/node-builder-reuse.ts +764 -0
  484. package/src/compiler/node-builder.ts +3425 -0
  485. package/src/compiler/option-declarations.ts +1560 -0
  486. package/src/compiler/options.ts +1576 -0
  487. package/src/compiler/output-paths.ts +334 -0
  488. package/src/compiler/package-json.ts +1083 -0
  489. package/src/compiler/parallel-check.ts +1951 -0
  490. package/src/compiler/parallel-parse.ts +590 -0
  491. package/src/compiler/parse-thread.ts +140 -0
  492. package/src/compiler/parser.ts +7716 -0
  493. package/src/compiler/path.ts +717 -0
  494. package/src/compiler/printer/async-helpers.ts +183 -0
  495. package/src/compiler/printer/auto-generate.ts +27 -0
  496. package/src/compiler/printer/decorator-helpers.ts +218 -0
  497. package/src/compiler/printer/emit-context.ts +679 -0
  498. package/src/compiler/printer/emit-flags.ts +64 -0
  499. package/src/compiler/printer/factory-base.ts +2577 -0
  500. package/src/compiler/printer/factory.ts +764 -0
  501. package/src/compiler/printer/helpers.ts +291 -0
  502. package/src/compiler/printer/name-generator.ts +372 -0
  503. package/src/compiler/printer/printer.ts +5072 -0
  504. package/src/compiler/printer/text-writer.ts +183 -0
  505. package/src/compiler/printer/utilities.ts +884 -0
  506. package/src/compiler/program-checker.ts +592 -0
  507. package/src/compiler/program-utilities.ts +435 -0
  508. package/src/compiler/program.ts +1419 -0
  509. package/src/compiler/pseudo-bigint.ts +62 -0
  510. package/src/compiler/regexp-checker.ts +1142 -0
  511. package/src/compiler/relations.ts +5149 -0
  512. package/src/compiler/reparser.ts +1566 -0
  513. package/src/compiler/scanner.ts +2951 -0
  514. package/src/compiler/show-config.ts +239 -0
  515. package/src/compiler/side-state.ts +125 -0
  516. package/src/compiler/sourcemap.ts +366 -0
  517. package/src/compiler/spelling.ts +122 -0
  518. package/src/compiler/symbol-accessibility.ts +1071 -0
  519. package/src/compiler/symbol.ts +439 -0
  520. package/src/compiler/symlinks.ts +137 -0
  521. package/src/compiler/syntax-kind.ts +391 -0
  522. package/src/compiler/thread-entry.ts +191 -0
  523. package/src/compiler/timeline.ts +53 -0
  524. package/src/compiler/transformers/alias-references.ts +757 -0
  525. package/src/compiler/transformers/async-utilities.ts +335 -0
  526. package/src/compiler/transformers/async.ts +838 -0
  527. package/src/compiler/transformers/class-fields.ts +2967 -0
  528. package/src/compiler/transformers/class-utilities.ts +324 -0
  529. package/src/compiler/transformers/commonjs-module.ts +1621 -0
  530. package/src/compiler/transformers/const-enum-inliner.ts +50 -0
  531. package/src/compiler/transformers/declarations-diagnostics.ts +832 -0
  532. package/src/compiler/transformers/declarations-pseudo.ts +966 -0
  533. package/src/compiler/transformers/declarations-resolver.ts +249 -0
  534. package/src/compiler/transformers/declarations-syntactic.ts +1859 -0
  535. package/src/compiler/transformers/declarations-tracker.ts +269 -0
  536. package/src/compiler/transformers/declarations.ts +3120 -0
  537. package/src/compiler/transformers/decorator-metadata.ts +697 -0
  538. package/src/compiler/transformers/decorator-utilities.ts +283 -0
  539. package/src/compiler/transformers/destructuring.ts +708 -0
  540. package/src/compiler/transformers/downlevel.ts +50 -0
  541. package/src/compiler/transformers/emit-resolver.ts +258 -0
  542. package/src/compiler/transformers/es-decorators.ts +2682 -0
  543. package/src/compiler/transformers/exponentiation.ts +80 -0
  544. package/src/compiler/transformers/external-module-info.ts +412 -0
  545. package/src/compiler/transformers/for-await.ts +687 -0
  546. package/src/compiler/transformers/import-elision.ts +152 -0
  547. package/src/compiler/transformers/jsx-entities.ts +256 -0
  548. package/src/compiler/transformers/jsx.ts +824 -0
  549. package/src/compiler/transformers/legacy-decorators.ts +726 -0
  550. package/src/compiler/transformers/logical-assignment.ts +75 -0
  551. package/src/compiler/transformers/module-utilities.ts +42 -0
  552. package/src/compiler/transformers/module.ts +474 -0
  553. package/src/compiler/transformers/named-evaluation.ts +389 -0
  554. package/src/compiler/transformers/nullish-coalescing.ts +35 -0
  555. package/src/compiler/transformers/object-rest-spread.ts +577 -0
  556. package/src/compiler/transformers/optional-catch.ts +29 -0
  557. package/src/compiler/transformers/optional-chain.ts +246 -0
  558. package/src/compiler/transformers/reference-resolver.ts +1201 -0
  559. package/src/compiler/transformers/runtime-syntax.ts +942 -0
  560. package/src/compiler/transformers/subtree-facts.ts +245 -0
  561. package/src/compiler/transformers/syntax-facts.ts +353 -0
  562. package/src/compiler/transformers/tagged-template.ts +167 -0
  563. package/src/compiler/transformers/transformer.ts +56 -0
  564. package/src/compiler/transformers/type-eraser.ts +520 -0
  565. package/src/compiler/transformers/type-serialization.ts +374 -0
  566. package/src/compiler/transformers/using.ts +613 -0
  567. package/src/compiler/transformers/utilities.ts +419 -0
  568. package/src/compiler/transformers/visitor-base.ts +1601 -0
  569. package/src/compiler/transformers/visitor-hooks.ts +252 -0
  570. package/src/compiler/tsc-build.ts +1418 -0
  571. package/src/compiler/tsc-cli.ts +666 -0
  572. package/src/compiler/tsc-compile.ts +437 -0
  573. package/src/compiler/tsc-watch.ts +854 -0
  574. package/src/compiler/tsconfig.ts +1574 -0
  575. package/src/compiler/type-printer.ts +110 -0
  576. package/src/compiler/types.ts +115 -0
  577. package/src/compiler/unicode-identifiers.ts +212 -0
  578. package/src/compiler/unicode-properties.ts +537 -0
  579. package/src/compiler/vfs-match.ts +597 -0
  580. package/src/compiler/xxh3.ts +650 -0
  581. package/src/library/ast.generated.ts +1685 -0
  582. package/src/library/ast.ts +104 -0
  583. package/src/library/checker.ts +384 -0
  584. package/src/library/compiler-options.generated.ts +114 -0
  585. package/src/library/diagnostics.ts +72 -0
  586. package/src/library/disk.ts +73 -0
  587. package/src/library/enums.generated.ts +1024 -0
  588. package/src/library/errors.ts +26 -0
  589. package/src/library/host.ts +63 -0
  590. package/src/library/index.ts +71 -0
  591. package/src/library/nodes.ts +232 -0
  592. package/src/library/options.ts +449 -0
  593. package/src/library/parse.ts +63 -0
  594. package/src/library/program.ts +293 -0
  595. package/src/library/symbols.ts +15 -0
  596. package/src/library/types.ts +359 -0
@@ -0,0 +1,676 @@
1
+ // Which aliases (imports and `import x = ...`) a file uses as values, found as the checker's
2
+ // `markLinkedReferences` finds them: identifiers in expressions mark the aliases they resolve
3
+ // to, except where a property access of a const enum (or an enum member in an enum
4
+ // initializer) is inlined. Without types, a property access through anything but an alias of a
5
+ // namespace, enum or module counts as a use.
6
+ import { BinaryExpression, ConditionalTypeNode, ExportAssignment, ExportDeclaration, ExportSpecifier, ForInOrOfStatement, ForStatement, HeritageClause, Identifier, ImportEqualsDeclaration, ImportTypeNode, LiteralTypeNode, MetaProperty, NodeVisitor, PropertyAccessExpression, QualifiedName, ShorthandPropertyAssignment, TypeParameterDeclaration, TypeReferenceNode, VariableDeclarationList, IntersectionTypeNode, UnionTypeNode, getDotDotDotToken, getExpression, getInitializer, getParameters, getTagName, getType, getTypeArguments, } from '../ast.js';
7
+ import { canHaveDecorators, isImportCall } from '../ast-utilities.js';
8
+ import { JsxEmit, getIsolatedModules, getStrictOptionValue, shouldPreserveConstEnums, } from '../options.js';
9
+ import { getDeclarationOfAliasSymbol } from './reference-resolver.js';
10
+ import { getFirstConstructorWithBody, getRestParameterElementType, getSetAccessorValueParameter, nodeCanBeDecorated, } from './decorator-utilities.js';
11
+ import { hasDecorators, hasSyntacticModifier } from './utilities.js';
12
+ export class AliasReferences extends NodeVisitor {
13
+ options;
14
+ resolver;
15
+ /** Alias symbols used as values. */
16
+ referenced;
17
+ jsxNamespace;
18
+ jsxFragmentNamespace;
19
+ /** Whether the JSX runtime's module resolves, so JSX doesn't use the factory's names. */
20
+ jsxRuntimeResolved;
21
+ constructor(options, resolver, jsxNamespace, jsxFragmentNamespace, jsxRuntimeResolved) {
22
+ super();
23
+ this.options = options;
24
+ this.resolver = resolver;
25
+ this.referenced = new Set();
26
+ this.jsxNamespace = jsxNamespace;
27
+ this.jsxFragmentNamespace = jsxFragmentNamespace;
28
+ this.jsxRuntimeResolved = jsxRuntimeResolved;
29
+ }
30
+ markFile(file) {
31
+ file.forEachChild(this);
32
+ return true;
33
+ }
34
+ visitNode(node) {
35
+ // Imports are marked by their uses.
36
+ if (node instanceof ImportEqualsDeclaration && !hasSyntacticModifier(node, 32 /* ModifierFlags.Export */))
37
+ return false;
38
+ if (node.kind === 273 /* SyntaxKind.ImportDeclaration */ || node.kind === 346 /* SyntaxKind.JSImportDeclaration */)
39
+ return false;
40
+ this.mark(node);
41
+ node.forEachChild(this);
42
+ return false;
43
+ }
44
+ mark(node) {
45
+ // Types and declaration files don't use imports, except decorated properties.
46
+ if ((node.flags & 8388608 /* NodeFlags.Ambient */) !== 0 &&
47
+ node.kind !== 172 /* SyntaxKind.PropertySignature */ &&
48
+ node.kind !== 173 /* SyntaxKind.PropertyDeclaration */)
49
+ return false;
50
+ if (node instanceof Identifier) {
51
+ const parent = node.parent;
52
+ if (parent === undefined ||
53
+ !(isExpressionNode(node) ||
54
+ parent instanceof ShorthandPropertyAssignment ||
55
+ (parent instanceof ImportEqualsDeclaration && parent.moduleReference === node)) ||
56
+ !shouldMarkIdentifier(node))
57
+ return false;
58
+ // Only the left of a property access or qualified name; the right is a property lookup.
59
+ if (parent instanceof PropertyAccessExpression && parent.expression !== node)
60
+ return false;
61
+ if (parent instanceof QualifiedName && parent.left !== node)
62
+ return false;
63
+ if (isInsideMetaProperty(node))
64
+ return false;
65
+ return this.markIdentifier(node);
66
+ }
67
+ if (node.kind === 212 /* SyntaxKind.PropertyAccessExpression */ || node.kind === 167 /* SyntaxKind.QualifiedName */) {
68
+ for (let top = node; top !== undefined && isPropertyAccessOrQualifiedName(top); top = top.parent)
69
+ if (isPartOfTypeNode(top))
70
+ return false;
71
+ return this.markProperty(node);
72
+ }
73
+ if (node instanceof ExportAssignment) {
74
+ const expression = node.expression;
75
+ if (!(expression instanceof Identifier))
76
+ return false;
77
+ const symbol = this.resolver.resolveEntityName(expression, 1073741823 /* SymbolFlags.All */, true);
78
+ if (symbol !== undefined)
79
+ this.markAlias(this.resolver.getExportSymbolOfValueSymbolIfExported(symbol), expression);
80
+ return true;
81
+ }
82
+ switch (node.kind) {
83
+ case 287 /* SyntaxKind.JsxOpeningElement */:
84
+ case 286 /* SyntaxKind.JsxSelfClosingElement */:
85
+ case 290 /* SyntaxKind.JsxOpeningFragment */:
86
+ return this.markJsx(node);
87
+ }
88
+ if (node instanceof ImportEqualsDeclaration) {
89
+ if (hasSyntacticModifier(node, 32 /* ModifierFlags.Export */))
90
+ this.markExport(node);
91
+ return true;
92
+ }
93
+ if (node instanceof ExportSpecifier)
94
+ return this.markExportSpecifier(node);
95
+ if (this.options.emitDecoratorMetadata === true &&
96
+ canHaveDecorators(node) &&
97
+ hasDecorators(node) &&
98
+ nodeCanBeDecorated(this.options.experimentalDecorators === true, node, node.parent, node.parent === undefined ? undefined : node.parent.parent))
99
+ return this.markDecoratorMetadata(node);
100
+ return false;
101
+ }
102
+ /** Type references that decorator metadata serializes as values use the aliases they name. */
103
+ markDecoratorMetadata(node) {
104
+ switch (node.kind) {
105
+ case 264 /* SyntaxKind.ClassDeclaration */: {
106
+ const constructor = getFirstConstructorWithBody(node);
107
+ if (constructor !== undefined)
108
+ this.markParameterTypes(constructor);
109
+ break;
110
+ }
111
+ case 178 /* SyntaxKind.GetAccessor */:
112
+ case 179 /* SyntaxKind.SetAccessor */: {
113
+ let annotation = getAnnotatedAccessorTypeNode(node);
114
+ if (annotation === undefined) {
115
+ const other = this.getOtherAccessor(node);
116
+ if (other !== undefined)
117
+ annotation = getAnnotatedAccessorTypeNode(other);
118
+ }
119
+ this.markMetadataTypeNode(annotation);
120
+ break;
121
+ }
122
+ case 175 /* SyntaxKind.MethodDeclaration */:
123
+ this.markParameterTypes(node);
124
+ this.markMetadataTypeNode(getType(node));
125
+ break;
126
+ case 173 /* SyntaxKind.PropertyDeclaration */:
127
+ this.markMetadataTypeNode(getType(node));
128
+ break;
129
+ case 170 /* SyntaxKind.Parameter */:
130
+ this.markMetadataTypeNode(getParameterTypeNodeForDecoratorCheck(node));
131
+ if (node.parent !== undefined) {
132
+ this.markParameterTypes(node.parent);
133
+ this.markMetadataTypeNode(getType(node.parent));
134
+ }
135
+ break;
136
+ }
137
+ return true;
138
+ }
139
+ markParameterTypes(node) {
140
+ const parameters = getParameters(node);
141
+ if (parameters === undefined)
142
+ return false;
143
+ for (let i = 0; i < parameters.nodes.length; i++)
144
+ this.markMetadataTypeNode(getParameterTypeNodeForDecoratorCheck(parameters.nodes[i]));
145
+ return true;
146
+ }
147
+ getOtherAccessor(node) {
148
+ const symbol = this.resolver.getSymbolOfDeclaration(node);
149
+ if (symbol === undefined)
150
+ return undefined;
151
+ const kind = node.kind === 179 /* SyntaxKind.SetAccessor */ ? 178 /* SyntaxKind.GetAccessor */ : 179 /* SyntaxKind.SetAccessor */;
152
+ for (const declaration of symbol.declarations)
153
+ if (declaration.kind === kind)
154
+ return declaration;
155
+ return undefined;
156
+ }
157
+ markMetadataTypeNode(node) {
158
+ const name = this.getEntityNameForDecoratorMetadata(node);
159
+ if (name === undefined || !(name instanceof Identifier || name instanceof QualifiedName))
160
+ return false;
161
+ const root = firstIdentifier(name);
162
+ const meaning = (name instanceof Identifier ? 788968 /* SymbolFlags.Type */ : 1920 /* SymbolFlags.Namespace */) | 2097152 /* SymbolFlags.Alias */;
163
+ const symbol = this.resolver.resolveName(root, root.text, meaning);
164
+ if (symbol === undefined || (symbol.flags & 2097152 /* SymbolFlags.Alias */) === 0)
165
+ return false;
166
+ const target = this.resolver.resolveAlias(symbol);
167
+ if ((this.resolver.getSymbolFlags(symbol, true, false) & 111551 /* SymbolFlags.Value */) !== 0 &&
168
+ (target === undefined || !isConstEnumOrConstEnumOnlyModule(target)) &&
169
+ !this.resolver.isTypeOnlyAliasChain(symbol))
170
+ this.markAliasSymbol(symbol);
171
+ return true;
172
+ }
173
+ /** The entity name a type serializes to, if it serializes to one: `A` of `A | null`, but nothing for `A | B`. */
174
+ getEntityNameForDecoratorMetadata(node) {
175
+ if (node === undefined)
176
+ return undefined;
177
+ switch (node.kind) {
178
+ case 194 /* SyntaxKind.IntersectionType */:
179
+ case 193 /* SyntaxKind.UnionType */:
180
+ return this.getEntityNameForDecoratorMetadataFromTypeList(getTypes(node));
181
+ case 195 /* SyntaxKind.ConditionalType */:
182
+ if (node instanceof ConditionalTypeNode)
183
+ return this.getEntityNameForDecoratorMetadataFromTypeList([node.trueType, node.falseType]);
184
+ break;
185
+ case 197 /* SyntaxKind.ParenthesizedType */:
186
+ case 203 /* SyntaxKind.NamedTupleMember */:
187
+ return this.getEntityNameForDecoratorMetadata(getType(node));
188
+ case 184 /* SyntaxKind.TypeReference */:
189
+ if (node instanceof TypeReferenceNode)
190
+ return node.typeName;
191
+ break;
192
+ }
193
+ return undefined;
194
+ }
195
+ getEntityNameForDecoratorMetadataFromTypeList(types) {
196
+ const strictNullChecks = getStrictOptionValue(this.options, this.options.strictNullChecks);
197
+ let common = undefined;
198
+ for (let i = 0; i < types.length; i++) {
199
+ const type = types[i];
200
+ if (type.kind === 146 /* SyntaxKind.NeverKeyword */)
201
+ continue;
202
+ if (!strictNullChecks &&
203
+ ((type instanceof LiteralTypeNode && type.literal.kind === 105 /* SyntaxKind.NullKeyword */) ||
204
+ type.kind === 157 /* SyntaxKind.UndefinedKeyword */))
205
+ continue;
206
+ const name = this.getEntityNameForDecoratorMetadata(type);
207
+ // Something like `string`, serialized as itself or `Object`.
208
+ if (name === undefined)
209
+ return undefined;
210
+ if (common === undefined)
211
+ common = name;
212
+ else if (!(common instanceof Identifier) || !(name instanceof Identifier) || common.text !== name.text)
213
+ return undefined;
214
+ }
215
+ return common;
216
+ }
217
+ markIdentifier(node) {
218
+ const symbol = this.resolver.getResolvedSymbol(node);
219
+ if (symbol === undefined || node.text === 'arguments')
220
+ return false;
221
+ return this.markAlias(symbol, node);
222
+ }
223
+ markAlias(symbol, location) {
224
+ if (!isNonLocalAlias(symbol) || isInTypeQuery(location))
225
+ return false;
226
+ const target = this.resolver.resolveAlias(symbol);
227
+ const flags = this.resolver.getSymbolFlags(symbol, true, false);
228
+ if ((flags & (111551 /* SymbolFlags.Value */ | 1048576 /* SymbolFlags.ExportValue */)) === 0)
229
+ return false;
230
+ // Uses of a const enum are inlined, unless it isn't (`isolatedModules`) or the use is an export of a preserved one.
231
+ if (getIsolatedModules(this.options) ||
232
+ (shouldPreserveConstEnums(this.options) && isExportOrExportExpression(location)) ||
233
+ target === undefined ||
234
+ !isConstEnumOrConstEnumOnlyModule(this.resolver.getExportSymbolOfValueSymbolIfExported(target)))
235
+ this.markAliasSymbol(symbol);
236
+ return true;
237
+ }
238
+ /** Marks an alias used, and for `import x = a.b`, what it names. */
239
+ markAliasSymbol(alias) {
240
+ const symbol = this.resolver.getMergedSymbol(alias);
241
+ if (this.referenced.has(symbol))
242
+ return false;
243
+ this.referenced.add(symbol);
244
+ const declaration = getDeclarationOfAliasSymbol(symbol);
245
+ if (declaration instanceof ImportEqualsDeclaration &&
246
+ declaration.moduleReference.kind !== 284 /* SyntaxKind.ExternalModuleReference */) {
247
+ const target = this.resolver.resolveAlias(symbol);
248
+ const flags = target === undefined ? 4 /* SymbolFlags.Property */ : this.resolver.getSymbolFlags(target, false, false);
249
+ if ((flags & 111551 /* SymbolFlags.Value */) !== 0)
250
+ this.markIdentifier(firstIdentifier(declaration.moduleReference));
251
+ }
252
+ return true;
253
+ }
254
+ /** `Foo.Bar` uses `Foo` unless `Bar` is a const enum (or a namespace of them), or an enum member inlined in an enum. */
255
+ markProperty(node) {
256
+ if (isPartOfImportEqualsModuleReference(node))
257
+ return false;
258
+ const left = leftOf(node);
259
+ if (!(left instanceof Identifier))
260
+ return false;
261
+ const parentSymbol = this.resolver.getResolvedSymbol(left);
262
+ if (parentSymbol === undefined)
263
+ return false;
264
+ if (getIsolatedModules(this.options) ||
265
+ (shouldPreserveConstEnums(this.options) && isExportOrExportExpression(node)))
266
+ return this.markAlias(parentSymbol, node);
267
+ const right = rightOf(node);
268
+ const property = right instanceof Identifier ? this.getPropertyOfAlias(parentSymbol, right.text) : undefined;
269
+ if (property !== undefined &&
270
+ (isConstEnumOrConstEnumOnlyModule(property) ||
271
+ ((property.flags & 8 /* SymbolFlags.EnumMember */) !== 0 &&
272
+ node.parent !== undefined &&
273
+ node.parent.kind === 306 /* SyntaxKind.EnumMember */)))
274
+ return false;
275
+ return this.markAlias(parentSymbol, node);
276
+ }
277
+ /** A member of the namespace, enum or module an alias names, the type of the alias without a checker. */
278
+ getPropertyOfAlias(symbol, name) {
279
+ if ((symbol.flags & 2097152 /* SymbolFlags.Alias */) === 0)
280
+ return undefined;
281
+ const target = this.resolver.resolveAlias(symbol);
282
+ if (target === undefined || (target.flags & (1920 /* SymbolFlags.Namespace */ | 1536 /* SymbolFlags.Module */)) === 0)
283
+ return undefined;
284
+ const member = this.resolver.getExportOfSymbol(target, name);
285
+ return member === undefined ? undefined : this.resolver.resolveAlias(member);
286
+ }
287
+ markJsx(node) {
288
+ if (this.jsxRuntimeResolved)
289
+ return false;
290
+ const fragment = node.kind === 290 /* SyntaxKind.JsxOpeningFragment */;
291
+ const location = fragment ? node : jsxTagName(node);
292
+ const namespace = fragment ? this.jsxFragmentNamespace : this.jsxNamespace;
293
+ // `@jsxFrag null` has no fragment factory.
294
+ if (fragment && namespace === 'null')
295
+ return false;
296
+ let flags = 111551 /* SymbolFlags.Value */;
297
+ if (this.options.jsx === JsxEmit.Preserve || this.options.jsx === JsxEmit.ReactNative)
298
+ flags &= ~384 /* SymbolFlags.Enum */;
299
+ const symbol = this.resolver.resolveName(location, namespace, flags);
300
+ if (symbol !== undefined &&
301
+ (symbol.flags & 2097152 /* SymbolFlags.Alias */) !== 0 &&
302
+ !this.resolver.isTypeOnlyAliasSymbol(symbol))
303
+ this.markAliasSymbol(symbol);
304
+ return true;
305
+ }
306
+ markExport(node) {
307
+ const symbol = this.resolver.getSymbolOfDeclaration(node);
308
+ if (symbol === undefined)
309
+ return false;
310
+ const target = this.resolver.resolveAlias(symbol);
311
+ if (target === undefined ||
312
+ ((this.resolver.getSymbolFlags(symbol, true, false) & 111551 /* SymbolFlags.Value */) !== 0 &&
313
+ !isConstEnumOrConstEnumOnlyModule(target)))
314
+ this.markAliasSymbol(symbol);
315
+ return true;
316
+ }
317
+ markExportSpecifier(node) {
318
+ const declaration = node.parent === undefined ? undefined : node.parent.parent;
319
+ if (!(declaration instanceof ExportDeclaration) ||
320
+ declaration.moduleSpecifier !== undefined ||
321
+ node.isTypeOnly ||
322
+ declaration.isTypeOnly)
323
+ return false;
324
+ const exported = node.propertyName !== undefined ? node.propertyName : node.name;
325
+ if (!(exported instanceof Identifier))
326
+ return false;
327
+ const symbol = this.resolver.resolveName(exported, exported.text, 111551 /* SymbolFlags.Value */ | 788968 /* SymbolFlags.Type */ | 1920 /* SymbolFlags.Namespace */ | 2097152 /* SymbolFlags.Alias */);
328
+ // Globals aren't imports.
329
+ if (symbol !== undefined && this.resolver.isGlobalSymbol(symbol))
330
+ return false;
331
+ const target = symbol !== undefined && (symbol.flags & 2097152 /* SymbolFlags.Alias */) !== 0 ? this.resolver.resolveAlias(symbol) : symbol;
332
+ if (target === undefined || (this.resolver.getSymbolFlags(target, false, false) & 111551 /* SymbolFlags.Value */) !== 0) {
333
+ this.markExport(node);
334
+ this.markIdentifier(exported);
335
+ }
336
+ return true;
337
+ }
338
+ }
339
+ function isPropertyAccessOrQualifiedName(node) {
340
+ return node.kind === 212 /* SyntaxKind.PropertyAccessExpression */ || node.kind === 167 /* SyntaxKind.QualifiedName */;
341
+ }
342
+ function leftOf(node) {
343
+ if (node instanceof PropertyAccessExpression)
344
+ return node.expression;
345
+ if (node instanceof QualifiedName)
346
+ return node.left;
347
+ return undefined;
348
+ }
349
+ function rightOf(node) {
350
+ if (node instanceof PropertyAccessExpression)
351
+ return node.name;
352
+ if (node instanceof QualifiedName)
353
+ return node.right;
354
+ return undefined;
355
+ }
356
+ function isConstEnumOrConstEnumOnlyModule(symbol) {
357
+ return (symbol.flags & 128 /* SymbolFlags.ConstEnum */) !== 0 || (symbol.flags & 268435456 /* SymbolFlags.ConstEnumOnlyModule */) !== 0;
358
+ }
359
+ function isNonLocalAlias(symbol) {
360
+ return (symbol.flags & (2097152 /* SymbolFlags.Alias */ | 111551 /* SymbolFlags.Value */)) === 2097152 /* SymbolFlags.Alias */;
361
+ }
362
+ function shouldMarkIdentifier(node) {
363
+ const parent = node.parent;
364
+ // The left of a property access is marked with the access.
365
+ if (parent instanceof PropertyAccessExpression && parent.expression === node)
366
+ return false;
367
+ // Names in type-only exports.
368
+ if (parent instanceof ExportSpecifier && parent.isTypeOnly)
369
+ return false;
370
+ const grandparent = parent.parent;
371
+ const exportDeclaration = grandparent === undefined ? undefined : grandparent.parent;
372
+ return !(exportDeclaration instanceof ExportDeclaration && exportDeclaration.isTypeOnly);
373
+ }
374
+ function isInsideMetaProperty(node) {
375
+ for (let current = node; current !== undefined; current = current.parent)
376
+ if (current instanceof MetaProperty)
377
+ return true;
378
+ return false;
379
+ }
380
+ function isInTypeQuery(node) {
381
+ for (let current = node; current !== undefined; current = current.parent) {
382
+ if (current.kind === 187 /* SyntaxKind.TypeQuery */)
383
+ return true;
384
+ if (current.kind !== 79 /* SyntaxKind.Identifier */ && current.kind !== 167 /* SyntaxKind.QualifiedName */)
385
+ return false;
386
+ }
387
+ return false;
388
+ }
389
+ function isExportOrExportExpression(location) {
390
+ for (let node = location; node !== undefined; node = node.parent) {
391
+ const parent = node.parent;
392
+ if (parent === undefined)
393
+ return false;
394
+ if (parent instanceof ExportAssignment && parent.expression === node && isEntityNameExpression(node))
395
+ return true;
396
+ if (parent instanceof ExportSpecifier && (parent.name === node || parent.propertyName === node))
397
+ return true;
398
+ }
399
+ return false;
400
+ }
401
+ function isEntityNameExpression(node) {
402
+ if (node instanceof Identifier)
403
+ return true;
404
+ return (node instanceof PropertyAccessExpression &&
405
+ node.name instanceof Identifier &&
406
+ isEntityNameExpression(node.expression));
407
+ }
408
+ function isPartOfImportEqualsModuleReference(node) {
409
+ let child = node;
410
+ for (let current = node.parent; current !== undefined; current = current.parent) {
411
+ if (current instanceof ImportEqualsDeclaration)
412
+ return (current.moduleReference === child ||
413
+ (child.pos >= current.moduleReference.pos && child.end <= current.moduleReference.end));
414
+ child = current;
415
+ }
416
+ return false;
417
+ }
418
+ function firstIdentifier(node) {
419
+ let current = node;
420
+ for (;;) {
421
+ if (current instanceof QualifiedName)
422
+ current = current.left;
423
+ else if (current instanceof PropertyAccessExpression)
424
+ current = current.expression;
425
+ else
426
+ break;
427
+ }
428
+ return current;
429
+ }
430
+ function jsxTagName(node) {
431
+ const tagName = getTagName(node);
432
+ return tagName !== undefined ? tagName : node;
433
+ }
434
+ // Expression positions, as tsgo's `IsExpressionNode` decides them.
435
+ export function isExpressionNode(node) {
436
+ switch (node.kind) {
437
+ case 107 /* SyntaxKind.SuperKeyword */:
438
+ case 105 /* SyntaxKind.NullKeyword */:
439
+ case 111 /* SyntaxKind.TrueKeyword */:
440
+ case 96 /* SyntaxKind.FalseKeyword */:
441
+ case 13 /* SyntaxKind.RegularExpressionLiteral */:
442
+ case 210 /* SyntaxKind.ArrayLiteralExpression */:
443
+ case 211 /* SyntaxKind.ObjectLiteralExpression */:
444
+ case 212 /* SyntaxKind.PropertyAccessExpression */:
445
+ case 213 /* SyntaxKind.ElementAccessExpression */:
446
+ case 214 /* SyntaxKind.CallExpression */:
447
+ case 215 /* SyntaxKind.NewExpression */:
448
+ case 216 /* SyntaxKind.TaggedTemplateExpression */:
449
+ case 235 /* SyntaxKind.AsExpression */:
450
+ case 217 /* SyntaxKind.TypeAssertionExpression */:
451
+ case 239 /* SyntaxKind.SatisfiesExpression */:
452
+ case 236 /* SyntaxKind.NonNullExpression */:
453
+ case 218 /* SyntaxKind.ParenthesizedExpression */:
454
+ case 219 /* SyntaxKind.FunctionExpression */:
455
+ case 232 /* SyntaxKind.ClassExpression */:
456
+ case 220 /* SyntaxKind.ArrowFunction */:
457
+ case 223 /* SyntaxKind.VoidExpression */:
458
+ case 221 /* SyntaxKind.DeleteExpression */:
459
+ case 222 /* SyntaxKind.TypeOfExpression */:
460
+ case 225 /* SyntaxKind.PrefixUnaryExpression */:
461
+ case 226 /* SyntaxKind.PostfixUnaryExpression */:
462
+ case 227 /* SyntaxKind.BinaryExpression */:
463
+ case 228 /* SyntaxKind.ConditionalExpression */:
464
+ case 231 /* SyntaxKind.SpreadElement */:
465
+ case 229 /* SyntaxKind.TemplateExpression */:
466
+ case 233 /* SyntaxKind.OmittedExpression */:
467
+ case 285 /* SyntaxKind.JsxElement */:
468
+ case 286 /* SyntaxKind.JsxSelfClosingElement */:
469
+ case 289 /* SyntaxKind.JsxFragment */:
470
+ case 230 /* SyntaxKind.YieldExpression */:
471
+ case 224 /* SyntaxKind.AwaitExpression */:
472
+ return true;
473
+ case 237 /* SyntaxKind.MetaProperty */: {
474
+ const parent = node.parent;
475
+ return !(parent !== undefined && isImportCall(parent) && getExpression(parent) === node);
476
+ }
477
+ case 234 /* SyntaxKind.ExpressionWithTypeArguments */:
478
+ return !(node.parent instanceof HeritageClause);
479
+ case 167 /* SyntaxKind.QualifiedName */: {
480
+ let current = node;
481
+ while (current.parent !== undefined && current.parent.kind === 167 /* SyntaxKind.QualifiedName */)
482
+ current = current.parent;
483
+ const parent = current.parent;
484
+ return parent !== undefined && (parent.kind === 187 /* SyntaxKind.TypeQuery */ || isJsxTagName(current));
485
+ }
486
+ case 80 /* SyntaxKind.PrivateIdentifier */: {
487
+ const parent = node.parent;
488
+ return (parent instanceof BinaryExpression && parent.left === node && parent.operatorToken.kind === 102 /* SyntaxKind.InKeyword */);
489
+ }
490
+ case 79 /* SyntaxKind.Identifier */: {
491
+ const parent = node.parent;
492
+ if (parent !== undefined && (parent.kind === 187 /* SyntaxKind.TypeQuery */ || isJsxTagName(node)))
493
+ return true;
494
+ return isInExpressionContext(node);
495
+ }
496
+ case 8 /* SyntaxKind.NumericLiteral */:
497
+ case 9 /* SyntaxKind.BigIntLiteral */:
498
+ case 10 /* SyntaxKind.StringLiteral */:
499
+ case 14 /* SyntaxKind.NoSubstitutionTemplateLiteral */:
500
+ case 109 /* SyntaxKind.ThisKeyword */:
501
+ return isInExpressionContext(node);
502
+ }
503
+ return false;
504
+ }
505
+ function isInExpressionContext(node) {
506
+ const parent = node.parent;
507
+ if (parent === undefined)
508
+ return false;
509
+ switch (parent.kind) {
510
+ case 261 /* SyntaxKind.VariableDeclaration */:
511
+ case 170 /* SyntaxKind.Parameter */:
512
+ case 173 /* SyntaxKind.PropertyDeclaration */:
513
+ case 172 /* SyntaxKind.PropertySignature */:
514
+ case 306 /* SyntaxKind.EnumMember */:
515
+ case 303 /* SyntaxKind.PropertyAssignment */:
516
+ case 209 /* SyntaxKind.BindingElement */:
517
+ return getInitializer(parent) === node;
518
+ case 245 /* SyntaxKind.ExpressionStatement */:
519
+ case 246 /* SyntaxKind.IfStatement */:
520
+ case 247 /* SyntaxKind.DoStatement */:
521
+ case 248 /* SyntaxKind.WhileStatement */:
522
+ case 254 /* SyntaxKind.ReturnStatement */:
523
+ case 255 /* SyntaxKind.WithStatement */:
524
+ case 256 /* SyntaxKind.SwitchStatement */:
525
+ case 297 /* SyntaxKind.CaseClause */:
526
+ case 298 /* SyntaxKind.DefaultClause */:
527
+ case 258 /* SyntaxKind.ThrowStatement */:
528
+ case 217 /* SyntaxKind.TypeAssertionExpression */:
529
+ case 235 /* SyntaxKind.AsExpression */:
530
+ case 240 /* SyntaxKind.TemplateSpan */:
531
+ case 168 /* SyntaxKind.ComputedPropertyName */:
532
+ case 239 /* SyntaxKind.SatisfiesExpression */:
533
+ return getExpression(parent) === node;
534
+ case 249 /* SyntaxKind.ForStatement */:
535
+ if (!(parent instanceof ForStatement))
536
+ return false;
537
+ return ((parent.initializer === node && !(parent.initializer instanceof VariableDeclarationList)) ||
538
+ parent.condition === node ||
539
+ parent.incrementor === node);
540
+ case 250 /* SyntaxKind.ForInStatement */:
541
+ case 251 /* SyntaxKind.ForOfStatement */:
542
+ if (!(parent instanceof ForInOrOfStatement))
543
+ return false;
544
+ return ((parent.initializer === node && !(parent.initializer instanceof VariableDeclarationList)) ||
545
+ parent.expression === node);
546
+ case 171 /* SyntaxKind.Decorator */:
547
+ case 295 /* SyntaxKind.JsxExpression */:
548
+ case 294 /* SyntaxKind.JsxSpreadAttribute */:
549
+ case 305 /* SyntaxKind.SpreadAssignment */:
550
+ return true;
551
+ case 234 /* SyntaxKind.ExpressionWithTypeArguments */:
552
+ return getExpression(parent) === node && !isPartOfTypeNode(parent);
553
+ case 304 /* SyntaxKind.ShorthandPropertyAssignment */:
554
+ return parent instanceof ShorthandPropertyAssignment && parent.objectAssignmentInitializer === node;
555
+ }
556
+ return isExpressionNode(parent);
557
+ }
558
+ function isJsxTagName(node) {
559
+ const parent = node.parent;
560
+ if (parent === undefined)
561
+ return false;
562
+ switch (parent.kind) {
563
+ case 287 /* SyntaxKind.JsxOpeningElement */:
564
+ case 286 /* SyntaxKind.JsxSelfClosingElement */:
565
+ case 288 /* SyntaxKind.JsxClosingElement */:
566
+ return getTagName(parent) === node;
567
+ }
568
+ return false;
569
+ }
570
+ export function isPartOfTypeNode(node) {
571
+ const kind = node.kind;
572
+ if (kind >= 183 /* SyntaxKind.FirstTypeNode */ && kind <= 206 /* SyntaxKind.LastTypeNode */)
573
+ return true;
574
+ switch (kind) {
575
+ case 132 /* SyntaxKind.AnyKeyword */:
576
+ case 159 /* SyntaxKind.UnknownKeyword */:
577
+ case 150 /* SyntaxKind.NumberKeyword */:
578
+ case 163 /* SyntaxKind.BigIntKeyword */:
579
+ case 154 /* SyntaxKind.StringKeyword */:
580
+ case 135 /* SyntaxKind.BooleanKeyword */:
581
+ case 155 /* SyntaxKind.SymbolKeyword */:
582
+ case 151 /* SyntaxKind.ObjectKeyword */:
583
+ case 157 /* SyntaxKind.UndefinedKeyword */:
584
+ case 105 /* SyntaxKind.NullKeyword */:
585
+ case 146 /* SyntaxKind.NeverKeyword */:
586
+ return true;
587
+ case 115 /* SyntaxKind.VoidKeyword */:
588
+ return node.parent !== undefined && node.parent.kind !== 223 /* SyntaxKind.VoidExpression */;
589
+ case 234 /* SyntaxKind.ExpressionWithTypeArguments */:
590
+ return isPartOfTypeExpressionWithTypeArguments(node);
591
+ case 169 /* SyntaxKind.TypeParameter */:
592
+ return (node.parent !== undefined &&
593
+ (node.parent.kind === 201 /* SyntaxKind.MappedType */ || node.parent.kind === 196 /* SyntaxKind.InferType */));
594
+ case 79 /* SyntaxKind.Identifier */: {
595
+ const parent = node.parent;
596
+ if (parent instanceof QualifiedName && parent.right === node)
597
+ return isPartOfTypeNodeInParent(parent);
598
+ if (parent instanceof PropertyAccessExpression && parent.name === node)
599
+ return isPartOfTypeNodeInParent(parent);
600
+ return isPartOfTypeNodeInParent(node);
601
+ }
602
+ case 167 /* SyntaxKind.QualifiedName */:
603
+ case 212 /* SyntaxKind.PropertyAccessExpression */:
604
+ case 109 /* SyntaxKind.ThisKeyword */:
605
+ return isPartOfTypeNodeInParent(node);
606
+ }
607
+ return false;
608
+ }
609
+ function isPartOfTypeNodeInParent(node) {
610
+ const parent = node.parent;
611
+ if (parent === undefined || parent.kind === 187 /* SyntaxKind.TypeQuery */)
612
+ return false;
613
+ if (parent instanceof ImportTypeNode)
614
+ return !parent.isTypeOf;
615
+ if (parent.kind >= 183 /* SyntaxKind.FirstTypeNode */ && parent.kind <= 206 /* SyntaxKind.LastTypeNode */)
616
+ return true;
617
+ switch (parent.kind) {
618
+ case 234 /* SyntaxKind.ExpressionWithTypeArguments */:
619
+ return isPartOfTypeExpressionWithTypeArguments(parent);
620
+ case 169 /* SyntaxKind.TypeParameter */:
621
+ return parent instanceof TypeParameterDeclaration && parent.constraint === node;
622
+ case 261 /* SyntaxKind.VariableDeclaration */:
623
+ case 170 /* SyntaxKind.Parameter */:
624
+ case 173 /* SyntaxKind.PropertyDeclaration */:
625
+ case 172 /* SyntaxKind.PropertySignature */:
626
+ case 263 /* SyntaxKind.FunctionDeclaration */:
627
+ case 219 /* SyntaxKind.FunctionExpression */:
628
+ case 220 /* SyntaxKind.ArrowFunction */:
629
+ case 177 /* SyntaxKind.Constructor */:
630
+ case 175 /* SyntaxKind.MethodDeclaration */:
631
+ case 174 /* SyntaxKind.MethodSignature */:
632
+ case 178 /* SyntaxKind.GetAccessor */:
633
+ case 179 /* SyntaxKind.SetAccessor */:
634
+ case 180 /* SyntaxKind.CallSignature */:
635
+ case 181 /* SyntaxKind.ConstructSignature */:
636
+ case 182 /* SyntaxKind.IndexSignature */:
637
+ case 217 /* SyntaxKind.TypeAssertionExpression */:
638
+ return getType(parent) === node;
639
+ case 214 /* SyntaxKind.CallExpression */:
640
+ case 215 /* SyntaxKind.NewExpression */:
641
+ case 216 /* SyntaxKind.TaggedTemplateExpression */: {
642
+ const typeArguments = getTypeArguments(parent);
643
+ return typeArguments !== undefined && typeArguments.nodes.indexOf(node) >= 0;
644
+ }
645
+ }
646
+ return false;
647
+ }
648
+ function isPartOfTypeExpressionWithTypeArguments(node) {
649
+ const parent = node.parent;
650
+ if (parent instanceof HeritageClause) {
651
+ const container = parent.parent;
652
+ const classLike = container !== undefined &&
653
+ (container.kind === 264 /* SyntaxKind.ClassDeclaration */ || container.kind === 232 /* SyntaxKind.ClassExpression */);
654
+ return !classLike || parent.token === 118 /* SyntaxKind.ImplementsKeyword */;
655
+ }
656
+ return (parent !== undefined &&
657
+ (parent.kind === 324 /* SyntaxKind.JSDocImplementsTag */ || parent.kind === 323 /* SyntaxKind.JSDocAugmentsTag */));
658
+ }
659
+ function getParameterTypeNodeForDecoratorCheck(node) {
660
+ const type = getType(node);
661
+ return getDotDotDotToken(node) !== undefined ? getRestParameterElementType(type) : type;
662
+ }
663
+ /** The type annotation of a getter, or of a setter's parameter. */
664
+ function getAnnotatedAccessorTypeNode(node) {
665
+ if (node.kind === 178 /* SyntaxKind.GetAccessor */)
666
+ return getType(node);
667
+ const parameter = getSetAccessorValueParameter(node);
668
+ return parameter === undefined ? undefined : getType(parameter);
669
+ }
670
+ function getTypes(node) {
671
+ if (node instanceof UnionTypeNode)
672
+ return node.types.nodes;
673
+ if (node instanceof IntersectionTypeNode)
674
+ return node.types.nodes;
675
+ return [];
676
+ }