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,4 @@
1
+ import { type Node } from './ast.js';
2
+ import { type NodeBuilder } from './node-builder.js';
3
+ /** A copy of the existing type node `existing` for the builder's location, or undefined if it can't be reused. */
4
+ export declare function tryReuseExistingNode(b: NodeBuilder, existing: Node): Node | undefined;
@@ -0,0 +1,647 @@
1
+ // Reusing type nodes from source in built nodes: a copy of an existing type node with its names
2
+ // checked to be accessible, or undefined if they aren't and it can't be rewritten.
3
+ import { ArrayTypeNode, CallSignatureDeclaration, ConstructSignatureDeclaration, ConstructorTypeNode, FunctionTypeNode, IndexSignatureDeclaration, MethodSignatureDeclaration, ParameterDeclaration, PropertyDeclaration, ComputedPropertyName, ConditionalTypeNode, JSDocNonNullableType, JSDocNullableType, JSDocOptionalType, JSDocParameterOrPropertyTag, JSDocTypeExpression, JSDocTypeLiteral, JSDocVariadicType, PropertySignatureDeclaration, QualifiedName, TypeLiteralNode, UnionTypeNode, Identifier, ImportAttributes, ImportTypeNode, Token, IndexedAccessTypeNode, LiteralTypeNode, MappedTypeNode, NodeList, StringLiteral, TypeOperatorNode, TypeParameterDeclaration, TypePredicateNode, TypeQueryNode, TypeReferenceNode, getName, getText, getType, getInitializer, } from './ast.js';
4
+ import { isFunctionLike, isInJSFile, isStringLiteralLike } from './ast-utilities.js';
5
+ import { getSourceFileOfNode, getThisContainer, hasDynamicName, isExportsIdentifier, isIdentifierNamed, isModuleExportsAccessExpression, isPartOfParameterDeclaration, } from './binder-utilities.js';
6
+ import { getDeclaredTypeOfSymbol, getDeclaredTypeOfTypeParameter, getInferTypeParameters, } from './checker-declared-types.js';
7
+ import { getSignatureFromDeclaration } from './checker-signatures.js';
8
+ import { getExportSymbolOfValueSymbolIfExported, getFirstIdentifier, getSymbolOfDeclaration, resolveEntityName, } from './checker-symbols.js';
9
+ import { getTypeFromTypeNode } from './checker-type-nodes.js';
10
+ import { hasLateBindableName } from './checker-utilities.js';
11
+ import { SymbolTracker } from './transformers/declarations-resolver.js';
12
+ import { getMeaningOfEntityNameReference } from './transformers/declarations-syntactic.js';
13
+ import { VisitorBase } from './transformers/visitor-base.js';
14
+ import { getSymbolIfSameReference, isSymbolAccessible } from './symbol-accessibility.js';
15
+ import { BuilderTracker, TrackedSymbol, canReuseExistingJSTypeNode } from './node-builder.js';
16
+ import { getSpecifierForModuleSymbol, lookupSymbolChain, symbolToTypeNode } from './node-builder-names.js';
17
+ import { getExternalModuleFileFromDeclaration } from './checker-modules.js';
18
+ import { getResolutionModeOverride } from './program-utilities.js';
19
+ /** Errors and names tracked while reusing a node, replayed only if the reuse succeeds. */
20
+ class RecoveryBoundary {
21
+ hadError = false;
22
+ deferredReports = [];
23
+ trackedSymbols = [];
24
+ markError(report) {
25
+ this.hadError = true;
26
+ if (report !== undefined)
27
+ this.deferredReports.push(report);
28
+ }
29
+ }
30
+ /** Records what the reuse reports in its boundary rather than reporting it. */
31
+ class RecoveryTracker extends SymbolTracker {
32
+ inner;
33
+ bound;
34
+ constructor(inner, bound) {
35
+ super();
36
+ this.inner = inner;
37
+ this.bound = bound;
38
+ }
39
+ trackSymbol(symbol, enclosingDeclaration, meaning) {
40
+ this.bound.trackedSymbols.push(new TrackedSymbol(symbol, enclosingDeclaration, meaning));
41
+ return false;
42
+ }
43
+ reportInferenceFallback(node) {
44
+ return this.inner.reportInferenceFallback(node);
45
+ }
46
+ reportCyclicStructureError() {
47
+ const inner = this.inner;
48
+ this.bound.markError(() => inner.reportCyclicStructureError());
49
+ return false;
50
+ }
51
+ reportInaccessibleThisError() {
52
+ const inner = this.inner;
53
+ this.bound.markError(() => inner.reportInaccessibleThisError());
54
+ return false;
55
+ }
56
+ reportInaccessibleUniqueSymbolError() {
57
+ const inner = this.inner;
58
+ this.bound.markError(() => inner.reportInaccessibleUniqueSymbolError());
59
+ return false;
60
+ }
61
+ reportLikelyUnsafeImportRequiredError(specifier, symbolName) {
62
+ const inner = this.inner;
63
+ this.bound.markError(() => inner.reportLikelyUnsafeImportRequiredError(specifier, symbolName));
64
+ return false;
65
+ }
66
+ reportNonSerializableProperty(propertyName) {
67
+ const inner = this.inner;
68
+ this.bound.markError(() => inner.reportNonSerializableProperty(propertyName));
69
+ return false;
70
+ }
71
+ reportPrivateInBaseOfClassExpression(propertyName) {
72
+ const inner = this.inner;
73
+ this.bound.markError(() => inner.reportPrivateInBaseOfClassExpression(propertyName));
74
+ return false;
75
+ }
76
+ reportTruncationError() {
77
+ return this.inner.reportTruncationError();
78
+ }
79
+ reportNonlocalAugmentation(containingFile, parentSymbol, augmentingSymbol) {
80
+ return this.inner.reportNonlocalAugmentation(containingFile, parentSymbol, augmentingSymbol);
81
+ }
82
+ pushErrorFallbackNode(node) {
83
+ return this.inner.pushErrorFallbackNode(node);
84
+ }
85
+ popErrorFallbackNode() {
86
+ return this.inner.popErrorFallbackNode();
87
+ }
88
+ }
89
+ /** A copy of the existing type node `existing` for the builder's location, or undefined if it can't be reused. */
90
+ export function tryReuseExistingNode(b, existing) {
91
+ const bound = new RecoveryBoundary();
92
+ const oldTracker = b.tracker;
93
+ const oldTrackedSymbols = b.trackedSymbols;
94
+ const oldEncounteredError = b.encounteredError;
95
+ const oldApproximateLength = b.approximateLength;
96
+ b.tracker = new BuilderTracker(b.reports, new RecoveryTracker(oldTracker, bound));
97
+ b.trackedSymbols = [];
98
+ const transformed = new ExistingNodeReuser(b, bound).visitNode(existing);
99
+ b.tracker = oldTracker;
100
+ b.trackedSymbols = oldTrackedSymbols;
101
+ b.encounteredError = oldEncounteredError;
102
+ b.approximateLength = oldApproximateLength;
103
+ for (const report of bound.deferredReports)
104
+ report();
105
+ if (bound.hadError)
106
+ return undefined;
107
+ for (const tracked of bound.trackedSymbols)
108
+ b.trackSymbol(tracked.symbol, tracked.enclosingDeclaration, tracked.meaning);
109
+ b.approximateLength += existing.end - existing.pos;
110
+ return transformed;
111
+ }
112
+ /** The result of naming an existing entity name at the builder's location. */
113
+ class TrackedName {
114
+ introducesError;
115
+ node;
116
+ constructor(introducesError, node) {
117
+ this.introducesError = introducesError;
118
+ this.node = node;
119
+ }
120
+ }
121
+ /** Copies an existing node tree, checking and tracking the names it uses. */
122
+ class ExistingNodeReuser extends VisitorBase {
123
+ b;
124
+ bound;
125
+ constructor(b, bound) {
126
+ super(b.context);
127
+ this.b = b;
128
+ this.bound = bound;
129
+ }
130
+ // Lists from other files lose their positions.
131
+ visitNodes(list) {
132
+ if (list === undefined)
133
+ return undefined;
134
+ const nodes = this.visitArray(list.nodes);
135
+ const result = new NodeList(-1, -1, nodes === list.nodes ? nodes.slice() : nodes);
136
+ return result;
137
+ }
138
+ visit(node) {
139
+ const b = this.b;
140
+ const bound = this.bound;
141
+ // After an error in a sibling the result is discarded anyway.
142
+ if (bound.hadError)
143
+ return node;
144
+ const trackedTop = b.trackedSymbols.length;
145
+ const reportsTop = bound.deferredReports.length;
146
+ const hadError = bound.hadError;
147
+ let exit = undefined;
148
+ if (isFunctionLike(node)) {
149
+ const signature = getSignatureFromDeclaration(b.c, node);
150
+ exit = b.enterNewScope(node, signature.parameters, signature.typeParameters, undefined, undefined);
151
+ }
152
+ else if (node instanceof MappedTypeNode) {
153
+ const symbol = getSymbolOfDeclaration(b.c, node.typeParameter);
154
+ exit = b.enterNewScope(node, undefined, [getDeclaredTypeOfTypeParameter(b.c, symbol)], undefined, undefined);
155
+ }
156
+ let result = this.visitWorker(node);
157
+ if (exit !== undefined)
158
+ exit();
159
+ // As tsgo, an unchanged subtree is copied without positions; the root gets them back below.
160
+ if (result === node && result !== undefined)
161
+ result = node.pos < 0 ? node.deepClone() : b.deepCloneNode(node);
162
+ if (result !== undefined)
163
+ result = b.setTextRange(result, node);
164
+ if (bound.hadError) {
165
+ if (isTypeNode(node) && node.kind !== 183 /* SyntaxKind.TypePredicate */) {
166
+ bound.hadError = hadError;
167
+ b.trackedSymbols.length = trackedTop;
168
+ bound.deferredReports.length = reportsTop;
169
+ // As tsgo: the type of the node, without checking it matches the expected type here.
170
+ return b.typeToTypeNode(b.getTypeFromTypeNode(node, false));
171
+ }
172
+ return b.setTextRange(node, node);
173
+ }
174
+ return result;
175
+ }
176
+ /** JSDoc type syntax as TypeScript types, or undefined for other nodes. */
177
+ visitJSDocType(node) {
178
+ const b = this.b;
179
+ if (node instanceof JSDocTypeExpression)
180
+ return this.visitNode(node.type);
181
+ if (node.kind === 310 /* SyntaxKind.JSDocAllType */)
182
+ return b.keyword(132 /* SyntaxKind.AnyKeyword */);
183
+ if (node instanceof JSDocNullableType)
184
+ return b.created(new UnionTypeNode(b.list([
185
+ this.visitNode(node.type),
186
+ b.created(new LiteralTypeNode(b.factory.createKeywordExpression(105 /* SyntaxKind.NullKeyword */))),
187
+ ])));
188
+ if (node instanceof JSDocOptionalType)
189
+ return b.created(new UnionTypeNode(b.list([this.visitNode(node.type), b.keyword(157 /* SyntaxKind.UndefinedKeyword */)])));
190
+ if (node instanceof JSDocNonNullableType)
191
+ return this.visitNode(node.type);
192
+ if (node instanceof JSDocVariadicType)
193
+ return b.created(new ArrayTypeNode(this.visitNode(node.type)));
194
+ if (node instanceof JSDocTypeLiteral) {
195
+ const members = [];
196
+ for (const t of node.jsdocPropertyTags ?? []) {
197
+ if (!(t instanceof JSDocParameterOrPropertyTag))
198
+ continue;
199
+ if (t.kind !== 340 /* SyntaxKind.JSDocPropertyTag */ && t.kind !== 333 /* SyntaxKind.JSDocParameterTag */)
200
+ continue;
201
+ const n = t.name;
202
+ const targetName = n instanceof QualifiedName ? n.right : n;
203
+ const name = this.visitNode(targetName);
204
+ const optional = t.isBracketed || (t.typeExpression !== undefined && t.typeExpression.kind === 313 /* SyntaxKind.JSDocOptionalType */);
205
+ const type = t.typeExpression === undefined ? undefined : this.visitNode(t.typeExpression);
206
+ members.push(b.created(new PropertySignatureDeclaration(undefined, name, optional ? b.token(57 /* SyntaxKind.QuestionToken */) : undefined, type, undefined)));
207
+ }
208
+ return b.created(new TypeLiteralNode(b.list(members)));
209
+ }
210
+ return undefined;
211
+ }
212
+ attachSymbolToLeftmostIdentifier(leftmost, node, symbol) {
213
+ if (node === leftmost) {
214
+ let name = undefined;
215
+ if (symbol !== undefined && (symbol.flags & 262144 /* SymbolFlags.TypeParameter */) !== 0)
216
+ name = this.b.typeParameterToName(getDeclaredTypeOfSymbol(this.b.c, symbol));
217
+ if (name === undefined)
218
+ name = this.b.identifier(getText(node));
219
+ name = this.b.setTextRange(name, node);
220
+ this.context.addEmitFlags(name, 131072 /* EmitFlags.NoAsciiEscaping */);
221
+ return name;
222
+ }
223
+ const copy = new LeftmostRenamer(this, leftmost, symbol).visitEachChild(node);
224
+ return this.b.setTextRange(copy, node);
225
+ }
226
+ renameLeftmost(leftmost, node, symbol) {
227
+ return this.attachSymbolToLeftmostIdentifier(leftmost, node, symbol);
228
+ }
229
+ trackExistingEntityName(node) {
230
+ const b = this.b;
231
+ const c = b.c;
232
+ const enclosingDeclaration = b.enclosingDeclaration;
233
+ const leftmost = getFirstIdentifier(node);
234
+ const leftmostParent = leftmost.parent;
235
+ if (isInJSFile(node) &&
236
+ (isExportsIdentifier(leftmost) ||
237
+ (leftmostParent !== undefined && isModuleExportsAccessExpression(leftmostParent)) ||
238
+ (leftmostParent instanceof QualifiedName &&
239
+ isIdentifierNamed(leftmostParent.left, 'module') &&
240
+ isExportsIdentifier(leftmostParent.right))))
241
+ return new TrackedName(true, b.setTextRange(b.deepCloneNode(node), node));
242
+ const meaning = getMeaningOfEntityNameReference(node);
243
+ if (leftmost.kind === 109 /* SyntaxKind.ThisKeyword */ || getText(leftmost) === 'this') {
244
+ // `this` isn't bound: find its symbol directly.
245
+ const container = getThisContainer(leftmost, false, false);
246
+ const sym = container === undefined ? undefined : getSymbolOfDeclaration(c, container);
247
+ let introducesError = false;
248
+ if (isSymbolAccessible(c, sym, leftmost, meaning, false).accessibility !== 0 /* SymbolAccessibility.Accessible */) {
249
+ introducesError = true;
250
+ b.tracker.reportInaccessibleThisError();
251
+ }
252
+ return new TrackedName(introducesError, this.attachSymbolToLeftmostIdentifier(leftmost, node, sym));
253
+ }
254
+ let sym = resolveEntityName(c, leftmost, meaning, true, true, undefined);
255
+ if (enclosingDeclaration !== undefined && !(sym !== undefined && (sym.flags & 262144 /* SymbolFlags.TypeParameter */) !== 0)) {
256
+ if (sym !== undefined)
257
+ sym = getExportSymbolOfValueSymbolIfExported(c, sym);
258
+ // A transplanted declaration's names must mean the same at both locations.
259
+ const symAtLocation = resolveEntityName(c, leftmost, meaning, true, true, enclosingDeclaration);
260
+ if (symAtLocation === c.unknownSymbol ||
261
+ (symAtLocation === undefined && sym !== undefined) ||
262
+ (symAtLocation !== undefined &&
263
+ sym !== undefined &&
264
+ getSymbolIfSameReference(c, getExportSymbolOfValueSymbolIfExported(c, symAtLocation), sym) === undefined)) {
265
+ if (symAtLocation !== c.unknownSymbol)
266
+ b.tracker.reportInferenceFallback(node);
267
+ return new TrackedName(true, b.setTextRange(b.deepCloneNode(node), node));
268
+ }
269
+ sym = symAtLocation;
270
+ }
271
+ if (sym !== undefined) {
272
+ // A parameter resolvable here is visible.
273
+ if ((sym.flags & 1 /* SymbolFlags.FunctionScopedVariable */) !== 0 &&
274
+ sym.valueDeclaration !== undefined &&
275
+ (isPartOfParameterDeclaration(sym.valueDeclaration) ||
276
+ sym.valueDeclaration.kind === 333 /* SyntaxKind.JSDocParameterTag */))
277
+ return new TrackedName(false, this.attachSymbolToLeftmostIdentifier(leftmost, node, sym));
278
+ let introducesError = false;
279
+ if ((sym.flags & 262144 /* SymbolFlags.TypeParameter */) === 0 &&
280
+ !isDeclarationName(node) &&
281
+ isSymbolAccessible(c, sym, enclosingDeclaration, meaning, false).accessibility !==
282
+ 0 /* SymbolAccessibility.Accessible */) {
283
+ b.tracker.reportInferenceFallback(node);
284
+ introducesError = true;
285
+ }
286
+ else
287
+ b.trackSymbol(sym, enclosingDeclaration, meaning);
288
+ return new TrackedName(introducesError, this.attachSymbolToLeftmostIdentifier(leftmost, node, sym));
289
+ }
290
+ return new TrackedName(false, b.setTextRange(b.deepCloneNode(node), node));
291
+ }
292
+ /** A reference to the type `node` names, written from its symbol. */
293
+ serializeTypeName(node, isTypeOf, typeArguments) {
294
+ const b = this.b;
295
+ const meaning = isTypeOf ? 111551 /* SymbolFlags.Value */ : 788968 /* SymbolFlags.Type */;
296
+ const symbol = resolveEntityName(b.c, node, meaning, true, false, node);
297
+ if (symbol === undefined)
298
+ return undefined;
299
+ if (isSymbolAccessible(b.c, symbol, b.enclosingDeclaration, meaning, false).accessibility !==
300
+ 0 /* SymbolAccessibility.Accessible */)
301
+ return undefined;
302
+ return symbolToTypeNode(b, symbol, meaning, typeArguments);
303
+ }
304
+ tryVisitIndexedAccess(node) {
305
+ const objectType = this.tryVisitSimpleTypeNode(node.objectType);
306
+ if (objectType === undefined)
307
+ return undefined;
308
+ return this.b.setTextRange(this.factory.updateIndexedAccessTypeNode(node, objectType, this.visitNode(node.indexType)), node);
309
+ }
310
+ tryVisitKeyOf(node) {
311
+ const t = this.tryVisitSimpleTypeNode(node.type);
312
+ if (t === undefined)
313
+ return undefined;
314
+ return this.b.setTextRange(this.factory.updateTypeOperatorNode(node, node.operator, t), node);
315
+ }
316
+ tryVisitTypeQuery(node) {
317
+ const name = this.trackExistingEntityName(node.exprName);
318
+ if (!name.introducesError)
319
+ return this.b.setTextRange(this.factory.updateTypeQueryNode(node, name.node, this.visitNodes(node.typeArguments)), node);
320
+ const serialized = this.serializeTypeName(node.exprName, true, this.visitNodes(node.typeArguments));
321
+ return serialized === undefined ? undefined : this.b.setTextRange(serialized, node.exprName);
322
+ }
323
+ tryVisitTypeReference(node) {
324
+ const b = this.b;
325
+ if (isConstTypeReference(node))
326
+ return undefined;
327
+ getTypeFromTypeNode(b.c, node);
328
+ const symbol = b.c.resolvedSymbols.get(node.id);
329
+ if (symbol === undefined)
330
+ return undefined;
331
+ if ((symbol.flags & 262144 /* SymbolFlags.TypeParameter */) !== 0) {
332
+ const declaredType = getDeclaredTypeOfSymbol(b.c, symbol);
333
+ // A type parameter remapped by the scope.
334
+ if (b.mapper !== undefined && b.mapper.map(declaredType) !== declaredType)
335
+ return undefined;
336
+ }
337
+ if (!canReuseExistingJSTypeNode(b, node, b.getTypeFromTypeNode(node, false)))
338
+ return undefined;
339
+ const name = this.trackExistingEntityName(node.typeName);
340
+ if (!name.introducesError)
341
+ return b.setTextRange(this.factory.updateTypeReferenceNode(node, name.node, this.visitNodes(node.typeArguments)), node);
342
+ const serialized = this.serializeTypeName(node.typeName, false, this.visitNodes(node.typeArguments));
343
+ return serialized === undefined ? undefined : b.setTextRange(serialized, node.typeName);
344
+ }
345
+ tryVisitSimpleTypeNode(node) {
346
+ // As tsgo, parenthesized types are kept.
347
+ const inner = node;
348
+ if (inner instanceof TypeReferenceNode)
349
+ return this.tryVisitTypeReference(inner);
350
+ if (inner instanceof TypeQueryNode)
351
+ return this.tryVisitTypeQuery(inner);
352
+ if (inner instanceof IndexedAccessTypeNode)
353
+ return this.tryVisitIndexedAccess(inner);
354
+ if (inner instanceof TypeOperatorNode && inner.operator === 143 /* SyntaxKind.KeyOfKeyword */)
355
+ return this.tryVisitKeyOf(inner);
356
+ return this.visitNode(node);
357
+ }
358
+ visitWorker(node) {
359
+ const b = this.b;
360
+ const factory = this.factory;
361
+ const bound = this.bound;
362
+ const jsdoc = this.visitJSDocType(node);
363
+ if (jsdoc !== undefined)
364
+ return jsdoc;
365
+ if (node instanceof TypeReferenceNode && node.typeName instanceof Identifier && node.typeName.text === '') {
366
+ const replacement = b.keyword(132 /* SyntaxKind.AnyKeyword */);
367
+ this.context.setOriginal(replacement, node);
368
+ return replacement;
369
+ }
370
+ // `this` types are copied as they are.
371
+ if (node.kind === 198 /* SyntaxKind.ThisType */)
372
+ return node;
373
+ if (node instanceof TypeParameterDeclaration) {
374
+ const name = this.trackExistingEntityName(node.name);
375
+ return factory.updateTypeParameterDeclaration(node, this.visitModifiers(node.modifiers), name.node, this.visitNode(node.constraint), this.visitNode(node.expression), this.visitNode(node.defaultType));
376
+ }
377
+ if (node instanceof IndexedAccessTypeNode) {
378
+ const result = this.tryVisitIndexedAccess(node);
379
+ if (result !== undefined)
380
+ return result;
381
+ bound.markError(undefined);
382
+ return node;
383
+ }
384
+ if (node instanceof TypeReferenceNode) {
385
+ const result = this.tryVisitTypeReference(node);
386
+ if (result !== undefined)
387
+ return result;
388
+ bound.markError(undefined);
389
+ return node;
390
+ }
391
+ if (node instanceof TypeQueryNode) {
392
+ const result = this.tryVisitTypeQuery(node);
393
+ if (result !== undefined)
394
+ return result;
395
+ bound.markError(undefined);
396
+ return node;
397
+ }
398
+ if (node instanceof TypeOperatorNode) {
399
+ if (node.operator === 158 /* SyntaxKind.UniqueKeyword */ && node.type.kind === 155 /* SyntaxKind.SymbolKeyword */) {
400
+ const nonFakeEnclosing = b.getEnclosingDeclarationIgnoringFakeScope();
401
+ let sameScope = false;
402
+ for (let current = node; current !== undefined; current = current.parent)
403
+ if (current === nonFakeEnclosing)
404
+ sameScope = true;
405
+ if (!sameScope) {
406
+ bound.markError(undefined);
407
+ return node;
408
+ }
409
+ }
410
+ else if (node.operator === 143 /* SyntaxKind.KeyOfKeyword */) {
411
+ const result = this.tryVisitKeyOf(node);
412
+ if (result !== undefined)
413
+ return result;
414
+ bound.markError(undefined);
415
+ return node;
416
+ }
417
+ }
418
+ if (node instanceof ImportTypeNode && isLiteralImportType(node)) {
419
+ // The deprecated `assert` keyword isn't reused.
420
+ if (node.attributes !== undefined && node.attributes.token === 131 /* SyntaxKind.AssertKeyword */) {
421
+ bound.markError(undefined);
422
+ return node;
423
+ }
424
+ if (b.getTypeFromTypeNode(node, true) === undefined) {
425
+ bound.markError(undefined);
426
+ return node;
427
+ }
428
+ const originalSpecifier = node.argument.literal;
429
+ const specifier = getModuleSpecifierOverride(b, node, originalSpecifier);
430
+ let argument;
431
+ if (specifier === '')
432
+ argument = this.visitNode(node.argument);
433
+ else {
434
+ const literal = factory.createStringLiteral(specifier, 0 /* TokenFlags.None */);
435
+ b.context.setOriginal(literal, originalSpecifier);
436
+ argument = factory.created(new LiteralTypeNode(literal));
437
+ }
438
+ return factory.updateImportTypeNode(node, node.isTypeOf, argument, node.attributes === undefined ? undefined : asImportAttributes(this.visitNode(node.attributes)), this.visitNode(node.qualifier), this.visitNodes(node.typeArguments));
439
+ }
440
+ const name = getName(node);
441
+ if (name !== undefined && name.kind === 168 /* SyntaxKind.ComputedPropertyName */ && !hasLateBindableName(b.c, node)) {
442
+ if (!hasDynamicName(node))
443
+ return this.visitEachChild(node);
444
+ return undefined;
445
+ }
446
+ if ((isFunctionLike(node) && getType(node) === undefined) ||
447
+ ((node.kind === 173 /* SyntaxKind.PropertyDeclaration */ ||
448
+ node.kind === 172 /* SyntaxKind.PropertySignature */ ||
449
+ node.kind === 170 /* SyntaxKind.Parameter */) &&
450
+ getType(node) === undefined &&
451
+ getInitializer(node) === undefined)) {
452
+ // Untyped declarations get `any`.
453
+ let visited = this.visitEachChild(node);
454
+ if (visited === node)
455
+ visited = b.setTextRange(node.deepClone(), node);
456
+ withAnyType(b, visited);
457
+ return visited;
458
+ }
459
+ if (node instanceof ComputedPropertyName && isEntityNameExpressionNode(node.expression)) {
460
+ const tracked = this.trackExistingEntityName(node.expression);
461
+ if (!tracked.introducesError)
462
+ return factory.updateComputedPropertyName(node, tracked.node);
463
+ bound.markError(undefined);
464
+ return this.visitEachChild(node);
465
+ }
466
+ if (node instanceof TypePredicateNode) {
467
+ let parameterName;
468
+ if (node.parameterName instanceof Identifier) {
469
+ const tracked = this.trackExistingEntityName(node.parameterName);
470
+ if (tracked.introducesError)
471
+ bound.markError(undefined);
472
+ parameterName = tracked.node;
473
+ }
474
+ else
475
+ parameterName = node.parameterName.deepClone();
476
+ return factory.updateTypePredicateNode(node, node.assertsModifier === undefined ? undefined : asToken(this.visitNode(node.assertsModifier)), parameterName, this.visitNode(node.type));
477
+ }
478
+ if (node instanceof ConditionalTypeNode) {
479
+ const checkType = this.visitNode(node.checkType);
480
+ const exit = b.enterNewScope(node, undefined, getInferTypeParameters(b.c, node), undefined, undefined);
481
+ const extendsType = this.visitNode(node.extendsType);
482
+ const trueType = this.visitNode(node.trueType);
483
+ exit();
484
+ const falseType = this.visitNode(node.falseType);
485
+ return factory.updateConditionalTypeNode(node, checkType, extendsType, trueType, falseType);
486
+ }
487
+ // Tuples, type literals and mapped types are written on one line.
488
+ if (node.kind === 190 /* SyntaxKind.TupleType */ ||
489
+ ((b.flags & 1024 /* NodeBuilderFlags.MultilineObjectLiterals */) === 0 && node.kind === 188 /* SyntaxKind.TypeLiteral */) ||
490
+ node.kind === 201 /* SyntaxKind.MappedType */) {
491
+ let result = this.visitEachChild(node);
492
+ if (result === node)
493
+ result = b.setTextRange(node.deepClone(), node);
494
+ this.context.addEmitFlags(result, 1 /* EmitFlags.SingleLine */);
495
+ return result;
496
+ }
497
+ if (isStringLiteralLike(node)) {
498
+ // The literal's characters are kept rather than escaped.
499
+ const copy = node.deepClone();
500
+ if (copy instanceof StringLiteral &&
501
+ (b.flags & 268435456 /* NodeBuilderFlags.UseSingleQuotesForStringLiteralType */) !== 0 &&
502
+ (copy.tokenFlags & 65536 /* TokenFlags.SingleQuote */) === 0) {
503
+ const literal = copy;
504
+ literal.tokenFlags = literal.tokenFlags | 65536 /* TokenFlags.SingleQuote */;
505
+ }
506
+ this.context.addEmitFlags(copy, 131072 /* EmitFlags.NoAsciiEscaping */);
507
+ return copy;
508
+ }
509
+ return this.visitEachChild(node);
510
+ }
511
+ }
512
+ /** Renames the leftmost identifier of an entity name, copying the rest. */
513
+ class LeftmostRenamer extends VisitorBase {
514
+ owner;
515
+ leftmost;
516
+ symbol;
517
+ constructor(owner, leftmost, symbol) {
518
+ super(owner.context);
519
+ this.owner = owner;
520
+ this.leftmost = leftmost;
521
+ this.symbol = symbol;
522
+ }
523
+ visit(node) {
524
+ return this.owner.renameLeftmost(this.leftmost, node, this.symbol);
525
+ }
526
+ }
527
+ /** Gives a copied declaration or signature without a type the type `any`; false for other kinds. */
528
+ function withAnyType(b, node) {
529
+ const any = b.keyword(132 /* SyntaxKind.AnyKeyword */);
530
+ if (node instanceof PropertyDeclaration) {
531
+ node.type = any;
532
+ node.initializer = undefined;
533
+ }
534
+ else if (node instanceof PropertySignatureDeclaration) {
535
+ node.type = any;
536
+ node.initializer = undefined;
537
+ }
538
+ else if (node instanceof ParameterDeclaration) {
539
+ node.modifiers = undefined;
540
+ node.type = any;
541
+ node.initializer = undefined;
542
+ }
543
+ else if (node instanceof MethodSignatureDeclaration)
544
+ node.type = any;
545
+ else if (node instanceof CallSignatureDeclaration)
546
+ node.type = any;
547
+ else if (node instanceof ConstructSignatureDeclaration)
548
+ node.type = any;
549
+ else if (node instanceof IndexSignatureDeclaration)
550
+ node.type = any;
551
+ else if (node instanceof FunctionTypeNode)
552
+ node.type = any;
553
+ else if (node instanceof ConstructorTypeNode)
554
+ node.type = any;
555
+ else
556
+ return false;
557
+ return true;
558
+ }
559
+ function asImportAttributes(node) {
560
+ if (node === undefined)
561
+ return undefined;
562
+ if (node instanceof ImportAttributes)
563
+ return node;
564
+ return undefined;
565
+ }
566
+ function asToken(node) {
567
+ if (node === undefined)
568
+ return undefined;
569
+ if (node instanceof Token)
570
+ return node;
571
+ return undefined;
572
+ }
573
+ function isConstTypeReference(node) {
574
+ return node.typeName instanceof Identifier && node.typeName.text === 'const' && node.typeArguments === undefined;
575
+ }
576
+ /**
577
+ * The specifier an `import("…")` type copied from another file takes in the file being written,
578
+ * or `''` to keep it.
579
+ */
580
+ function getModuleSpecifierOverride(b, parent, literal) {
581
+ const c = b.c;
582
+ if (b.enclosingFile === getSourceFileOfNode(literal))
583
+ return '';
584
+ const mode = getResolutionModeOverride(parent.attributes);
585
+ const originalName = getText(literal);
586
+ let name = originalName;
587
+ getTypeFromTypeNode(c, parent);
588
+ const nodeSymbol = c.resolvedSymbols.get(parent.id);
589
+ const meaning = parent.isTypeOf ? 111551 /* SymbolFlags.Value */ : 788968 /* SymbolFlags.Type */;
590
+ const parentSymbol = nodeSymbol !== undefined &&
591
+ isSymbolAccessible(c, nodeSymbol, b.enclosingDeclaration, meaning, false).accessibility ===
592
+ 0 /* SymbolAccessibility.Accessible */
593
+ ? lookupSymbolChain(b, nodeSymbol, meaning, true)[0]
594
+ : undefined;
595
+ if (parentSymbol !== undefined && isExternalModuleSymbol(parentSymbol))
596
+ name = getSpecifierForModuleSymbol(b, parentSymbol, mode);
597
+ else {
598
+ const targetFile = getExternalModuleFileFromDeclaration(c, parent);
599
+ if (targetFile !== undefined && targetFile.symbol !== undefined)
600
+ name = getSpecifierForModuleSymbol(b, targetFile.symbol, mode);
601
+ }
602
+ if (name.includes('/node_modules/')) {
603
+ b.encounteredError = true;
604
+ b.tracker.reportLikelyUnsafeImportRequiredError(name, '');
605
+ }
606
+ return name !== originalName ? name : '';
607
+ }
608
+ function isExternalModuleSymbol(symbol) {
609
+ return (symbol.flags & 1536 /* SymbolFlags.Module */) !== 0 && symbol.name.startsWith('"');
610
+ }
611
+ function isLiteralImportType(node) {
612
+ return node.argument instanceof LiteralTypeNode && node.argument.literal.kind === 10 /* SyntaxKind.StringLiteral */;
613
+ }
614
+ function isEntityNameExpressionNode(node) {
615
+ if (node.kind === 79 /* SyntaxKind.Identifier */)
616
+ return true;
617
+ if (node.kind === 212 /* SyntaxKind.PropertyAccessExpression */) {
618
+ const name = getName(node);
619
+ return (name !== undefined &&
620
+ name.kind === 79 /* SyntaxKind.Identifier */ &&
621
+ isEntityNameExpressionNode(node.expression));
622
+ }
623
+ return false;
624
+ }
625
+ function isDeclarationName(node) {
626
+ const parent = node.parent;
627
+ return (parent !== undefined &&
628
+ node.kind !== 307 /* SyntaxKind.SourceFile */ &&
629
+ getName(parent) === node &&
630
+ parent.kind !== 184 /* SyntaxKind.TypeReference */);
631
+ }
632
+ function isTypeNode(node) {
633
+ return ((node.kind >= 183 /* SyntaxKind.FirstTypeNode */ && node.kind <= 206 /* SyntaxKind.LastTypeNode */) ||
634
+ node.kind === 132 /* SyntaxKind.AnyKeyword */ ||
635
+ node.kind === 159 /* SyntaxKind.UnknownKeyword */ ||
636
+ node.kind === 150 /* SyntaxKind.NumberKeyword */ ||
637
+ node.kind === 163 /* SyntaxKind.BigIntKeyword */ ||
638
+ node.kind === 151 /* SyntaxKind.ObjectKeyword */ ||
639
+ node.kind === 135 /* SyntaxKind.BooleanKeyword */ ||
640
+ node.kind === 154 /* SyntaxKind.StringKeyword */ ||
641
+ node.kind === 155 /* SyntaxKind.SymbolKeyword */ ||
642
+ node.kind === 115 /* SyntaxKind.VoidKeyword */ ||
643
+ node.kind === 157 /* SyntaxKind.UndefinedKeyword */ ||
644
+ node.kind === 146 /* SyntaxKind.NeverKeyword */ ||
645
+ node.kind === 141 /* SyntaxKind.IntrinsicKeyword */ ||
646
+ node.kind === 234 /* SyntaxKind.ExpressionWithTypeArguments */);
647
+ }