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,26 @@
1
+ import { type Decorator, type Node } from './ast.js';
2
+ import { type DiagnosticMessage } from './diagnostics.js';
3
+ import { type Checker } from './checker.js';
4
+ import { type Signature, type Type } from './checker-types.js';
5
+ /** Resolves the decorators of `node` as calls and checks their return types. */
6
+ export declare function checkDecorators(c: Checker, node: Node): void;
7
+ /**
8
+ * The first element of a class whose emit moves its static elements out of the class body: a decorated
9
+ * element of a class that ECMAScript decorators transform, or a static block, static private element or
10
+ * (without standard class fields) initialized static property when they are transformed.
11
+ */
12
+ export declare function getFirstTransformableStaticClassElement(c: Checker, node: Node): Node | undefined;
13
+ export declare function hasDecorators(node: Node): boolean;
14
+ /** Whether `node` is a valid decorator target. */
15
+ export declare function nodeCanBeDecorated(legacy: boolean, node: Node, parent: Node | undefined, grandparent: Node | undefined): boolean;
16
+ /** Whether every signature takes fewer parameters than the decorator receives, as `@f` for `@f()`. */
17
+ export declare function isPotentiallyUncalledDecorator(c: Checker, decorator: Node, signatures: Signature[]): boolean;
18
+ export declare function getUncalledDecoratorText(node: Decorator): string;
19
+ /** The head message of errors resolving a decorator as a call. */
20
+ export declare function getDiagnosticHeadMessageForDecoratorResolution(node: Node): DiagnosticMessage;
21
+ /** The number of arguments the runtime passes to a decorator. */
22
+ export declare function getDecoratorArgumentCount(c: Checker, node: Node, signature: Signature): number;
23
+ /** The parameter types of a decorator's call, one synthetic argument each. */
24
+ export declare function getEffectiveDecoratorArgumentTypes(c: Checker, node: Node): Type[];
25
+ /** The signature the runtime calls a decorator with, or undefined for an invalid target. */
26
+ export declare function getDecoratorCallSignature(c: Checker, decorator: Node): Signature | undefined;
@@ -0,0 +1,562 @@
1
+ // Decorators: their applicability, resolution as calls and return types.
2
+ import { checkExternalEmitHelpers } from './checker-emit-helpers.js';
3
+ import { resolvedReturnTypeOf } from './side-state.js';
4
+ import { checkDeprecatedSignature } from './checker-deprecation.js';
5
+ import { FunctionTypeNode, KeywordTypeNode, NodeList, getBody, getDotDotDotToken, getModifiers, getName, getParameters, getText, getType, getInitializer, getMembers, } from './ast.js';
6
+ import { canHaveDecorators } from './ast-utilities.js';
7
+ import { getDeclarationOfKind, getSourceFileOfNode, getSourceTextOfNode, hasStaticModifier, hasSyntacticModifier, isClassLike, isStatic, isPrivateIdentifierClassElementDeclaration, isAutoAccessorPropertyDeclaration, } from './binder-utilities.js';
8
+ import { getSymbolId } from './symbol.js';
9
+ import { createDiagnosticForNode } from './checker.js';
10
+ import { ModuleKind, getEmitModuleKind, ScriptTarget, getUseDefineForClassFields } from './options.js';
11
+ import { getFirstConstructorWithBody, getRestParameterElementType, classElementOrClassElementParameterIsDecorated, classOrConstructorParameterIsDecorated, } from './transformers/decorator-utilities.js';
12
+ import { isTypeOnlyImportOrExportDeclaration } from './checker-modules.js';
13
+ import { getDeclaredTypeOfClassOrInterface, getDeclaredTypeOfSymbol } from './checker-declared-types.js';
14
+ import { checkComputedPropertyName } from './checker-expressions.js';
15
+ import { getFirstIdentifier, getSymbolOfDeclaration, isAliasSymbolDeclaration, resolveName, symbolIsValue, } from './checker-symbols.js';
16
+ import { getAnnotatedAccessorTypeNode, getTypeOfSymbol } from './checker-symbol-types.js';
17
+ import { createAnonymousType, createTypeFromGenericGlobalType, getIntersectionType, getNumberLiteralType, getStringLiteralType, getUnionType, tryCreateTypeReference, } from './checker-type-factory.js';
18
+ import { getLiteralTypeFromPropertyName, isTypeAssignableToKind } from './checker-type-operators.js';
19
+ import { getOrCreateTypeFromSignature, getParameterCount, getReturnTypeOfSignature, getSignatureFromDeclaration, } from './checker-signatures.js';
20
+ import { checkTypeAssignableTo } from './relations.js';
21
+ import { getResolvedSignature } from './checker-calls.js';
22
+ import { getGlobalClassAccessorDecoratorContextType, getGlobalClassAccessorDecoratorResultType, getGlobalClassAccessorDecoratorTargetType, getGlobalClassDecoratorContextType, getGlobalClassFieldDecoratorContextType, getGlobalClassGetterDecoratorContextType, getGlobalClassMethodDecoratorContextType, getGlobalClassSetterDecoratorContextType, getGlobalTypedPropertyDescriptorType, } from './checker-globals.js';
23
+ // ---- Checks
24
+ /** Resolves the decorators of `node` as calls and checks their return types. */
25
+ export function checkDecorators(c, node) {
26
+ // Decorators on invalid targets were reported by the grammar checks.
27
+ if (!canHaveDecorators(node) || !hasDecorators(node))
28
+ return;
29
+ if (!nodeCanBeDecorated(c.legacyDecorators, node, node.parent, node.parent.parent))
30
+ return;
31
+ checkDecoratorEmitHelpers(c, node);
32
+ checkDecoratorMetadataImports(c, node);
33
+ for (const modifier of getModifiers(node).nodes)
34
+ if (modifier.kind === 171 /* SyntaxKind.Decorator */)
35
+ checkDecorator(c, modifier);
36
+ }
37
+ function firstDecorator(node) {
38
+ for (const modifier of getModifiers(node).nodes)
39
+ if (modifier.kind === 171 /* SyntaxKind.Decorator */)
40
+ return modifier;
41
+ return undefined;
42
+ }
43
+ /** The emit helpers the decorators of `node` use (checkExternalEmitHelpers). */
44
+ function checkDecoratorEmitHelpers(c, node) {
45
+ const decorator = firstDecorator(node);
46
+ if (decorator === undefined)
47
+ return;
48
+ if (c.legacyDecorators) {
49
+ checkExternalEmitHelpers(c, decorator, 2 /* ExternalEmitHelpers.Decorate */);
50
+ if (node.kind === 170 /* SyntaxKind.Parameter */)
51
+ checkExternalEmitHelpers(c, decorator, 8 /* ExternalEmitHelpers.Param */);
52
+ }
53
+ else if (c.languageVersion < ScriptTarget.ESNext) {
54
+ checkExternalEmitHelpers(c, decorator, 2 /* ExternalEmitHelpers.ESDecorateAndRunInitializers */);
55
+ if (node.kind === 264 /* SyntaxKind.ClassDeclaration */) {
56
+ if (getName(node) === undefined || getFirstTransformableStaticClassElement(c, node) !== undefined)
57
+ checkExternalEmitHelpers(c, decorator, 65536 /* ExternalEmitHelpers.SetFunctionName */);
58
+ }
59
+ else if (node.kind !== 232 /* SyntaxKind.ClassExpression */) {
60
+ const name = getName(node);
61
+ if (name.kind === 80 /* SyntaxKind.PrivateIdentifier */ &&
62
+ (node.kind === 175 /* SyntaxKind.MethodDeclaration */ ||
63
+ node.kind === 178 /* SyntaxKind.GetAccessor */ ||
64
+ node.kind === 179 /* SyntaxKind.SetAccessor */ ||
65
+ isAutoAccessorPropertyDeclaration(node)))
66
+ checkExternalEmitHelpers(c, decorator, 65536 /* ExternalEmitHelpers.SetFunctionName */);
67
+ if (name.kind === 168 /* SyntaxKind.ComputedPropertyName */)
68
+ checkExternalEmitHelpers(c, decorator, 131072 /* ExternalEmitHelpers.PropKey */);
69
+ }
70
+ }
71
+ }
72
+ /**
73
+ * The first element of a class whose emit moves its static elements out of the class body: a decorated
74
+ * element of a class that ECMAScript decorators transform, or a static block, static private element or
75
+ * (without standard class fields) initialized static property when they are transformed.
76
+ */
77
+ export function getFirstTransformableStaticClassElement(c, node) {
78
+ const willTransformStaticElementsOfDecoratedClass = !c.legacyDecorators &&
79
+ c.languageVersion < ScriptTarget.ESNext &&
80
+ classOrConstructorParameterIsDecorated(false, node);
81
+ const willTransformPrivateElementsOrClassStaticBlocks = c.languageVersion < ScriptTarget.ESNext;
82
+ const willTransformInitializers = !(getUseDefineForClassFields(c.compilerOptions) && c.languageVersion >= ScriptTarget.ES2022);
83
+ if (!willTransformStaticElementsOfDecoratedClass && !willTransformPrivateElementsOrClassStaticBlocks)
84
+ return undefined;
85
+ for (const member of getMembers(node).nodes) {
86
+ if (willTransformStaticElementsOfDecoratedClass &&
87
+ classElementOrClassElementParameterIsDecorated(false, member, node))
88
+ return firstDecorator(node) ?? node;
89
+ if (willTransformPrivateElementsOrClassStaticBlocks) {
90
+ if (member.kind === 176 /* SyntaxKind.ClassStaticBlockDeclaration */)
91
+ return member;
92
+ if (isStatic(member) &&
93
+ (isPrivateIdentifierClassElementDeclaration(member) ||
94
+ (willTransformInitializers &&
95
+ member.kind === 173 /* SyntaxKind.PropertyDeclaration */ &&
96
+ getInitializer(member) !== undefined)))
97
+ return member;
98
+ }
99
+ }
100
+ return undefined;
101
+ }
102
+ /**
103
+ * Under emitDecoratorMetadata, the emitted metadata of a decorated declaration references the types of its
104
+ * signature at run time. With isolatedModules and an ES module emit, a type imported without `import type`
105
+ * can't be told apart from a value import in one file, so it is an error (TS1272).
106
+ */
107
+ function checkDecoratorMetadataImports(c, node) {
108
+ const options = c.compilerOptions;
109
+ if (options.emitDecoratorMetadata !== true || options.verbatimModuleSyntax === true)
110
+ return;
111
+ if ((node.flags & 8388608 /* NodeFlags.Ambient */) !== 0 && node.kind !== 173 /* SyntaxKind.PropertyDeclaration */)
112
+ return;
113
+ checkExternalEmitHelpers(c, firstDecorator(node), 4 /* ExternalEmitHelpers.Metadata */);
114
+ if (!c.isolatedModules || getEmitModuleKind(options) < ModuleKind.ES2015)
115
+ return;
116
+ switch (node.kind) {
117
+ case 264 /* SyntaxKind.ClassDeclaration */: {
118
+ const constructor = getFirstConstructorWithBody(node);
119
+ if (constructor !== undefined)
120
+ for (const p of getParameters(constructor).nodes)
121
+ checkMetadataTypeImport(c, parameterTypeNode(p));
122
+ break;
123
+ }
124
+ case 178 /* SyntaxKind.GetAccessor */:
125
+ case 179 /* SyntaxKind.SetAccessor */: {
126
+ const otherKind = node.kind === 178 /* SyntaxKind.GetAccessor */ ? 179 /* SyntaxKind.SetAccessor */ : 178 /* SyntaxKind.GetAccessor */;
127
+ const otherAccessor = getDeclarationOfKind(getSymbolOfDeclaration(c, node), otherKind);
128
+ checkMetadataTypeImport(c, getAnnotatedAccessorTypeNode(node) ?? getAnnotatedAccessorTypeNode(otherAccessor));
129
+ break;
130
+ }
131
+ case 175 /* SyntaxKind.MethodDeclaration */:
132
+ for (const p of getParameters(node).nodes)
133
+ checkMetadataTypeImport(c, parameterTypeNode(p));
134
+ checkMetadataTypeImport(c, getType(node));
135
+ break;
136
+ case 173 /* SyntaxKind.PropertyDeclaration */:
137
+ checkMetadataTypeImport(c, getType(node));
138
+ break;
139
+ case 170 /* SyntaxKind.Parameter */: {
140
+ checkMetadataTypeImport(c, parameterTypeNode(node));
141
+ const signature = node.parent;
142
+ for (const p of getParameters(signature).nodes)
143
+ checkMetadataTypeImport(c, parameterTypeNode(p));
144
+ checkMetadataTypeImport(c, getType(signature));
145
+ break;
146
+ }
147
+ }
148
+ }
149
+ /** The type a parameter's metadata serializes: the element type of a rest parameter. */
150
+ function parameterTypeNode(node) {
151
+ const typeNode = getType(node);
152
+ return getDotDotDotToken(node) !== undefined ? getRestParameterElementType(typeNode) : typeNode;
153
+ }
154
+ function checkMetadataTypeImport(c, typeNode) {
155
+ const typeName = entityNameForDecoratorMetadata(c, typeNode);
156
+ if (typeName === undefined || (typeName.kind !== 79 /* SyntaxKind.Identifier */ && typeName.kind !== 167 /* SyntaxKind.QualifiedName */))
157
+ return;
158
+ const rootName = getFirstIdentifier(typeName);
159
+ const meaning = (typeName.kind === 79 /* SyntaxKind.Identifier */ ? 788968 /* SymbolFlags.Type */ : 1920 /* SymbolFlags.Namespace */) | 2097152 /* SymbolFlags.Alias */;
160
+ const rootSymbol = resolveName(c, rootName, getText(rootName), meaning, undefined, true, false);
161
+ if (rootSymbol === undefined || (rootSymbol.flags & 2097152 /* SymbolFlags.Alias */) === 0 || symbolIsValue(c, rootSymbol))
162
+ return;
163
+ if (rootSymbol.declarations.some(isTypeOnlyImportOrExportDeclaration))
164
+ return;
165
+ const diagnostic = c.error(typeName, 221 /* Diagnostics.A_type_referenced_in_a_decorated_signature_must_be_imported_with_import_type_or_a_namespace_import_when_isolatedModules_and_emitDecoratorMetadata_are_enabled */);
166
+ const aliasDeclaration = rootSymbol.declarations.find(isAliasSymbolDeclaration);
167
+ if (aliasDeclaration !== undefined)
168
+ diagnostic.addRelatedInfo(createDiagnosticForNode(aliasDeclaration, 305 /* Diagnostics.X_0_was_imported_here */, [getText(rootName)]));
169
+ }
170
+ /** The entity name the metadata of a type node references, as the metadata serializer chooses it. */
171
+ function entityNameForDecoratorMetadata(c, node) {
172
+ if (node === undefined)
173
+ return undefined;
174
+ switch (node.kind) {
175
+ case 194 /* SyntaxKind.IntersectionType */:
176
+ return entityNameForDecoratorMetadataFromTypes(c, node.types.nodes);
177
+ case 193 /* SyntaxKind.UnionType */:
178
+ return entityNameForDecoratorMetadataFromTypes(c, node.types.nodes);
179
+ case 195 /* SyntaxKind.ConditionalType */:
180
+ return entityNameForDecoratorMetadataFromTypes(c, [
181
+ node.trueType,
182
+ node.falseType,
183
+ ]);
184
+ case 197 /* SyntaxKind.ParenthesizedType */:
185
+ case 203 /* SyntaxKind.NamedTupleMember */:
186
+ return entityNameForDecoratorMetadata(c, getType(node));
187
+ case 184 /* SyntaxKind.TypeReference */:
188
+ return node.typeName;
189
+ }
190
+ return undefined;
191
+ }
192
+ /** The one identifier all of `types` reference, skipping `never` (and `null` and `undefined` without strictNullChecks). */
193
+ function entityNameForDecoratorMetadataFromTypes(c, types) {
194
+ let common;
195
+ for (const typeNode of types) {
196
+ if (typeNode.kind === 146 /* SyntaxKind.NeverKeyword */)
197
+ continue;
198
+ if (!c.strictNullChecks &&
199
+ ((typeNode.kind === 202 /* SyntaxKind.LiteralType */ &&
200
+ typeNode.literal.kind === 105 /* SyntaxKind.NullKeyword */) ||
201
+ typeNode.kind === 157 /* SyntaxKind.UndefinedKeyword */))
202
+ continue;
203
+ const name = entityNameForDecoratorMetadata(c, typeNode);
204
+ if (name === undefined)
205
+ return undefined;
206
+ if (common === undefined)
207
+ common = name;
208
+ else if (common.kind !== 79 /* SyntaxKind.Identifier */ ||
209
+ name.kind !== 79 /* SyntaxKind.Identifier */ ||
210
+ getText(common) !== getText(name))
211
+ return undefined;
212
+ }
213
+ return common;
214
+ }
215
+ function checkDecorator(c, node) {
216
+ const signature = getResolvedSignature(c, node, 0 /* CheckMode.Normal */);
217
+ checkDeprecatedSignature(c, signature, node);
218
+ const returnType = getReturnTypeOfSignature(c, signature);
219
+ if ((returnType.flags & 1 /* TypeFlags.Any */) !== 0)
220
+ return;
221
+ // Without a signature, the grammar checks reported an error.
222
+ const decoratorSignature = getDecoratorCallSignature(c, node);
223
+ if (decoratorSignature === undefined)
224
+ return;
225
+ const expectedReturnType = resolvedReturnTypeOf(c, decoratorSignature);
226
+ if (expectedReturnType === undefined)
227
+ return;
228
+ const parent = node.parent;
229
+ const headMessage = parent.kind === 170 /* SyntaxKind.Parameter */ || (parent.kind === 173 /* SyntaxKind.PropertyDeclaration */ && c.legacyDecorators)
230
+ ? 220 /* Diagnostics.Decorator_function_return_type_is_0_but_is_expected_to_be_void_or_any */
231
+ : 219 /* Diagnostics.Decorator_function_return_type_0_is_not_assignable_to_type_1 */;
232
+ checkTypeAssignableTo(c, returnType, expectedReturnType, node.expression, headMessage);
233
+ }
234
+ export function hasDecorators(node) {
235
+ const modifiers = getModifiers(node);
236
+ if (modifiers === undefined)
237
+ return false;
238
+ for (const modifier of modifiers.nodes)
239
+ if (modifier.kind === 171 /* SyntaxKind.Decorator */)
240
+ return true;
241
+ return false;
242
+ }
243
+ /** Whether `node` is a valid decorator target. */
244
+ export function nodeCanBeDecorated(legacy, node, parent, grandparent) {
245
+ const name = getName(node);
246
+ // Legacy decorators don't support private names.
247
+ if (legacy && name !== undefined && name.kind === 80 /* SyntaxKind.PrivateIdentifier */)
248
+ return false;
249
+ switch (node.kind) {
250
+ case 264 /* SyntaxKind.ClassDeclaration */:
251
+ return true;
252
+ case 232 /* SyntaxKind.ClassExpression */:
253
+ return !legacy;
254
+ case 173 /* SyntaxKind.PropertyDeclaration */:
255
+ return (parent !== undefined &&
256
+ (legacy
257
+ ? parent.kind === 264 /* SyntaxKind.ClassDeclaration */
258
+ : isClassLike(parent) && !hasSyntacticModifier(node, 64 /* ModifierFlags.Abstract */ | 128 /* ModifierFlags.Ambient */)));
259
+ case 178 /* SyntaxKind.GetAccessor */:
260
+ case 179 /* SyntaxKind.SetAccessor */:
261
+ case 175 /* SyntaxKind.MethodDeclaration */:
262
+ return (parent !== undefined &&
263
+ getBody(node) !== undefined &&
264
+ (legacy ? parent.kind === 264 /* SyntaxKind.ClassDeclaration */ : isClassLike(parent)));
265
+ case 170 /* SyntaxKind.Parameter */:
266
+ if (!legacy || parent === undefined || getBody(parent) === undefined)
267
+ return false;
268
+ return ((parent.kind === 177 /* SyntaxKind.Constructor */ ||
269
+ parent.kind === 175 /* SyntaxKind.MethodDeclaration */ ||
270
+ parent.kind === 179 /* SyntaxKind.SetAccessor */) &&
271
+ getThisParameter(parent) !== node &&
272
+ grandparent !== undefined &&
273
+ grandparent.kind === 264 /* SyntaxKind.ClassDeclaration */);
274
+ }
275
+ return false;
276
+ }
277
+ // ---- Resolution
278
+ /** Whether every signature takes fewer parameters than the decorator receives, as `@f` for `@f()`. */
279
+ export function isPotentiallyUncalledDecorator(c, decorator, signatures) {
280
+ if (signatures.length === 0)
281
+ return false;
282
+ for (const sig of signatures)
283
+ if (sig.minArgumentCount !== 0 ||
284
+ sig.hasRestParameter() ||
285
+ sig.parameters.length >= getDecoratorArgumentCount(c, decorator, sig))
286
+ return false;
287
+ return true;
288
+ }
289
+ export function getUncalledDecoratorText(node) {
290
+ return getSourceTextOfNode(getSourceFileOfNode(node), node.expression);
291
+ }
292
+ /** The head message of errors resolving a decorator as a call. */
293
+ export function getDiagnosticHeadMessageForDecoratorResolution(node) {
294
+ switch (node.parent.kind) {
295
+ case 264 /* SyntaxKind.ClassDeclaration */:
296
+ case 232 /* SyntaxKind.ClassExpression */:
297
+ return 188 /* Diagnostics.Unable_to_resolve_signature_of_class_decorator_when_called_as_an_expression */;
298
+ case 170 /* SyntaxKind.Parameter */:
299
+ return 189 /* Diagnostics.Unable_to_resolve_signature_of_parameter_decorator_when_called_as_an_expression */;
300
+ case 173 /* SyntaxKind.PropertyDeclaration */:
301
+ return 190 /* Diagnostics.Unable_to_resolve_signature_of_property_decorator_when_called_as_an_expression */;
302
+ }
303
+ return 191 /* Diagnostics.Unable_to_resolve_signature_of_method_decorator_when_called_as_an_expression */;
304
+ }
305
+ /** The number of arguments the runtime passes to a decorator. */
306
+ export function getDecoratorArgumentCount(c, node, signature) {
307
+ if (!c.legacyDecorators)
308
+ return Math.min(Math.max(getParameterCount(c, signature), 1), 2);
309
+ switch (node.parent.kind) {
310
+ case 264 /* SyntaxKind.ClassDeclaration */:
311
+ case 232 /* SyntaxKind.ClassExpression */:
312
+ return 1;
313
+ case 173 /* SyntaxKind.PropertyDeclaration */:
314
+ return hasSyntacticModifier(node.parent, 512 /* ModifierFlags.Accessor */) ? 3 : 2;
315
+ case 175 /* SyntaxKind.MethodDeclaration */:
316
+ case 178 /* SyntaxKind.GetAccessor */:
317
+ case 179 /* SyntaxKind.SetAccessor */:
318
+ // Decorators with only two parameters get only two arguments.
319
+ return signature.parameters.length <= 2 ? 2 : 3;
320
+ }
321
+ return 3;
322
+ }
323
+ /** The parameter types of a decorator's call, one synthetic argument each. */
324
+ export function getEffectiveDecoratorArgumentTypes(c, node) {
325
+ const signature = getDecoratorCallSignature(c, node);
326
+ if (signature === undefined)
327
+ throw new Error('decorator signature not found');
328
+ const types = [];
329
+ for (const param of signature.parameters)
330
+ types.push(getTypeOfSymbol(c, param));
331
+ return types;
332
+ }
333
+ // ---- Decorator call signatures
334
+ /** The signature the runtime calls a decorator with, or undefined for an invalid target. */
335
+ export function getDecoratorCallSignature(c, decorator) {
336
+ const node = decorator.parent;
337
+ const links = c.nodeLinks(node);
338
+ if (links.decoratorSignature === undefined) {
339
+ links.decoratorSignature = c.anySignature;
340
+ const signature = c.legacyDecorators
341
+ ? getLegacyDecoratorCallSignature(c, node)
342
+ : getESDecoratorCallSignature(c, node);
343
+ if (signature !== undefined)
344
+ links.decoratorSignature = signature;
345
+ }
346
+ return links.decoratorSignature === c.anySignature ? undefined : links.decoratorSignature;
347
+ }
348
+ function getLegacyDecoratorCallSignature(c, node) {
349
+ switch (node.kind) {
350
+ case 264 /* SyntaxKind.ClassDeclaration */:
351
+ case 232 /* SyntaxKind.ClassExpression */: {
352
+ // The target of a class decorator is the constructor side of the class.
353
+ const targetType = getTypeOfSymbol(c, getSymbolOfDeclaration(c, node));
354
+ const targetParam = newParameter(c, 'target', targetType);
355
+ return newCallSignature(c, [targetParam], getUnionType(c, [targetType, c.voidType]));
356
+ }
357
+ case 170 /* SyntaxKind.Parameter */: {
358
+ const fn = node.parent;
359
+ if (fn.kind !== 177 /* SyntaxKind.Constructor */ &&
360
+ !(fn.kind === 175 /* SyntaxKind.MethodDeclaration */ || (fn.kind === 179 /* SyntaxKind.SetAccessor */ && isClassLike(fn.parent))))
361
+ return undefined;
362
+ const thisParameter = getThisParameter(fn);
363
+ if (thisParameter === node)
364
+ return undefined;
365
+ const index = getParameters(fn).nodes.indexOf(node) - (thisParameter !== undefined ? 1 : 0);
366
+ // A parameter decorator gets the target, the property key and the parameter index.
367
+ let targetType;
368
+ let keyType;
369
+ if (fn.kind === 177 /* SyntaxKind.Constructor */) {
370
+ targetType = getTypeOfSymbol(c, getSymbolOfDeclaration(c, fn.parent));
371
+ keyType = c.undefinedType;
372
+ }
373
+ else {
374
+ targetType = getParentTypeOfClassElement(c, fn);
375
+ keyType = getClassElementPropertyKeyType(c, fn);
376
+ }
377
+ const indexType = getNumberLiteralType(c, index);
378
+ return newCallSignature(c, [
379
+ newParameter(c, 'target', targetType),
380
+ newParameter(c, 'propertyKey', keyType),
381
+ newParameter(c, 'parameterIndex', indexType),
382
+ ], c.voidType);
383
+ }
384
+ case 175 /* SyntaxKind.MethodDeclaration */:
385
+ case 178 /* SyntaxKind.GetAccessor */:
386
+ case 179 /* SyntaxKind.SetAccessor */:
387
+ case 173 /* SyntaxKind.PropertyDeclaration */: {
388
+ if (!isClassLike(node.parent))
389
+ return undefined;
390
+ // Method and accessor decorators get two or three arguments, property decorators two.
391
+ const targetParam = newParameter(c, 'target', getParentTypeOfClassElement(c, node));
392
+ const keyParam = newParameter(c, 'propertyKey', getClassElementPropertyKeyType(c, node));
393
+ const isProperty = node.kind === 173 /* SyntaxKind.PropertyDeclaration */;
394
+ const returnType = isProperty ? c.voidType : newTypedPropertyDescriptorType(c, getTypeOfDeclaration(c, node));
395
+ if (!isProperty || hasSyntacticModifier(node, 512 /* ModifierFlags.Accessor */)) {
396
+ const descriptorType = newTypedPropertyDescriptorType(c, getTypeOfDeclaration(c, node));
397
+ const descriptorParam = newParameter(c, 'descriptor', descriptorType);
398
+ return newCallSignature(c, [targetParam, keyParam, descriptorParam], getUnionType(c, [returnType, c.voidType]));
399
+ }
400
+ return newCallSignature(c, [targetParam, keyParam], getUnionType(c, [returnType, c.voidType]));
401
+ }
402
+ }
403
+ return undefined;
404
+ }
405
+ // An ES decorator gets a `target` value (the constructor, method, getter or setter, an
406
+ // `{ get, set }` object for auto-accessors and `undefined` for fields) and a `context` with
407
+ // details of the decorated element. It may return a replacement for the target.
408
+ function getESDecoratorCallSignature(c, node) {
409
+ switch (node.kind) {
410
+ case 264 /* SyntaxKind.ClassDeclaration */:
411
+ case 232 /* SyntaxKind.ClassExpression */: {
412
+ const targetType = getTypeOfSymbol(c, getSymbolOfDeclaration(c, node));
413
+ const contextType = tryCreateTypeReference(c, getGlobalClassDecoratorContextType(c), [targetType]);
414
+ return newESDecoratorCallSignature(c, targetType, contextType, targetType);
415
+ }
416
+ case 175 /* SyntaxKind.MethodDeclaration */:
417
+ case 178 /* SyntaxKind.GetAccessor */:
418
+ case 179 /* SyntaxKind.SetAccessor */: {
419
+ if (!isClassLike(node.parent))
420
+ return undefined;
421
+ const valueType = node.kind === 175 /* SyntaxKind.MethodDeclaration */
422
+ ? getOrCreateTypeFromSignature(c, getSignatureFromDeclaration(c, node))
423
+ : getTypeOfDeclaration(c, node);
424
+ const thisType = getThisTypeOfClassElement(c, node);
425
+ // Getters are decorated as `() => value` and setters as `(value) => void`.
426
+ const targetType = node.kind === 178 /* SyntaxKind.GetAccessor */
427
+ ? newFunctionType(c, [], valueType)
428
+ : node.kind === 179 /* SyntaxKind.SetAccessor */
429
+ ? newFunctionType(c, [newParameter(c, 'value', valueType)], c.voidType)
430
+ : valueType;
431
+ const contextType = newClassMemberDecoratorContextTypeForNode(c, node, thisType, valueType);
432
+ return newESDecoratorCallSignature(c, targetType, contextType, targetType);
433
+ }
434
+ case 173 /* SyntaxKind.PropertyDeclaration */: {
435
+ if (!isClassLike(node.parent))
436
+ return undefined;
437
+ const valueType = getTypeOfDeclaration(c, node);
438
+ const thisType = getThisTypeOfClassElement(c, node);
439
+ const isAutoAccessor = hasSyntacticModifier(node, 512 /* ModifierFlags.Accessor */);
440
+ // Fields are installed when initialized, so their target is `undefined`.
441
+ const targetType = isAutoAccessor
442
+ ? tryCreateTypeReference(c, getGlobalClassAccessorDecoratorTargetType(c), [thisType, valueType])
443
+ : c.undefinedType;
444
+ // Fields return an initializer mutator; auto-accessors may also replace the getter and setter.
445
+ const returnType = isAutoAccessor
446
+ ? tryCreateTypeReference(c, getGlobalClassAccessorDecoratorResultType(c), [thisType, valueType])
447
+ : newFunctionTypeWithThis(c, newParameter(c, 'this', thisType), [newParameter(c, 'value', valueType)], valueType);
448
+ const contextType = newClassMemberDecoratorContextTypeForNode(c, node, thisType, valueType);
449
+ return newESDecoratorCallSignature(c, targetType, contextType, returnType);
450
+ }
451
+ }
452
+ return undefined;
453
+ }
454
+ function getThisTypeOfClassElement(c, node) {
455
+ const classSymbol = getSymbolOfDeclaration(c, node.parent);
456
+ return hasStaticModifier(node) ? getTypeOfSymbol(c, classSymbol) : getDeclaredTypeOfClassOrInterface(c, classSymbol);
457
+ }
458
+ function newClassMemberDecoratorContextTypeForNode(c, node, thisType, valueType) {
459
+ const isStaticMember = hasStaticModifier(node);
460
+ const name = getName(node);
461
+ const isPrivate = name.kind === 80 /* SyntaxKind.PrivateIdentifier */;
462
+ const nameType = isPrivate
463
+ ? getStringLiteralType(c, getText(name))
464
+ : (getLiteralTypeFromPropertyName(c, name) ?? c.neverType);
465
+ let globalType;
466
+ switch (node.kind) {
467
+ case 175 /* SyntaxKind.MethodDeclaration */:
468
+ globalType = getGlobalClassMethodDecoratorContextType(c);
469
+ break;
470
+ case 178 /* SyntaxKind.GetAccessor */:
471
+ globalType = getGlobalClassGetterDecoratorContextType(c);
472
+ break;
473
+ case 179 /* SyntaxKind.SetAccessor */:
474
+ globalType = getGlobalClassSetterDecoratorContextType(c);
475
+ break;
476
+ default:
477
+ globalType = hasSyntacticModifier(node, 512 /* ModifierFlags.Accessor */)
478
+ ? getGlobalClassAccessorDecoratorContextType(c)
479
+ : getGlobalClassFieldDecoratorContextType(c);
480
+ }
481
+ const contextType = tryCreateTypeReference(c, globalType, [thisType, valueType]);
482
+ const overrideType = getClassMemberDecoratorContextOverrideType(c, nameType, isPrivate, isStaticMember);
483
+ return getIntersectionType(c, [contextType, overrideType]);
484
+ }
485
+ /** A type like `{ name: "foo", private: false, static: true }` intersected with a member's context type. */
486
+ function getClassMemberDecoratorContextOverrideType(c, nameType, isPrivate, isStaticMember) {
487
+ const key = 'decoratorContext:' + (isPrivate ? 'p' : '') + (isStaticMember ? 's' : '') + ':' + nameType.id;
488
+ const cached = c.cachedTypes.get(key);
489
+ if (cached !== undefined)
490
+ return cached;
491
+ const members = new Map();
492
+ members.set('name', newProperty(c, 'name', nameType));
493
+ members.set('private', newProperty(c, 'private', isPrivate ? c.trueType : c.falseType));
494
+ members.set('static', newProperty(c, 'static', isStaticMember ? c.trueType : c.falseType));
495
+ const overrideType = createAnonymousType(c, undefined, members, [], [], []);
496
+ c.cachedTypes.set(key, overrideType);
497
+ return overrideType;
498
+ }
499
+ function newESDecoratorCallSignature(c, targetType, contextType, nonOptionalReturnType) {
500
+ const targetParam = newParameter(c, 'target', targetType);
501
+ const contextParam = newParameter(c, 'context', contextType);
502
+ return newCallSignature(c, [targetParam, contextParam], getUnionType(c, [nonOptionalReturnType, c.voidType]));
503
+ }
504
+ function getParentTypeOfClassElement(c, node) {
505
+ const classSymbol = getSymbolOfDeclaration(c, node.parent);
506
+ return isStatic(node) ? getTypeOfSymbol(c, classSymbol) : getDeclaredTypeOfSymbol(c, classSymbol);
507
+ }
508
+ function getClassElementPropertyKeyType(c, element) {
509
+ const name = getName(element);
510
+ switch (name.kind) {
511
+ case 79 /* SyntaxKind.Identifier */:
512
+ case 8 /* SyntaxKind.NumericLiteral */:
513
+ case 10 /* SyntaxKind.StringLiteral */:
514
+ return getStringLiteralType(c, getText(name));
515
+ case 168 /* SyntaxKind.ComputedPropertyName */: {
516
+ const nameType = checkComputedPropertyName(c, name);
517
+ return isTypeAssignableToKind(c, nameType, 16896 /* TypeFlags.ESSymbolLike */) ? nameType : c.stringType;
518
+ }
519
+ }
520
+ return c.errorType;
521
+ }
522
+ function getTypeOfDeclaration(c, node) {
523
+ const symbol = getSymbolOfDeclaration(c, node);
524
+ return symbol !== undefined ? getTypeOfSymbol(c, symbol) : c.errorType;
525
+ }
526
+ function newTypedPropertyDescriptorType(c, propertyType) {
527
+ return createTypeFromGenericGlobalType(c, getGlobalTypedPropertyDescriptorType(c), [propertyType]);
528
+ }
529
+ // ---- Synthetic symbols and signatures
530
+ function newParameter(c, name, t) {
531
+ const symbol = c.newSymbol(1 /* SymbolFlags.FunctionScopedVariable */, name);
532
+ c.symbolTypes.set(getSymbolId(symbol), t);
533
+ return symbol;
534
+ }
535
+ function newProperty(c, name, t) {
536
+ const symbol = c.newSymbol(4 /* SymbolFlags.Property */, name);
537
+ c.symbolTypes.set(getSymbolId(symbol), t);
538
+ return symbol;
539
+ }
540
+ /** A call signature declared by a synthetic `(...) => any` type, so that it prints as a function type. */
541
+ function newCallSignature(c, parameters, returnType) {
542
+ return newCallSignatureWithThis(c, undefined, parameters, returnType);
543
+ }
544
+ function newCallSignatureWithThis(c, thisParameter, parameters, returnType) {
545
+ const declaration = new FunctionTypeNode(undefined, new NodeList(0, 0, []), new KeywordTypeNode(132 /* SyntaxKind.AnyKeyword */));
546
+ return c.newSignature(0 /* SignatureFlags.None */, declaration, [], thisParameter, parameters, returnType, parameters.length);
547
+ }
548
+ function newFunctionType(c, parameters, returnType) {
549
+ return getOrCreateTypeFromSignature(c, newCallSignature(c, parameters, returnType));
550
+ }
551
+ function newFunctionTypeWithThis(c, thisParameter, parameters, returnType) {
552
+ return getOrCreateTypeFromSignature(c, newCallSignatureWithThis(c, thisParameter, parameters, returnType));
553
+ }
554
+ // ---- Utilities
555
+ function getThisParameter(signature) {
556
+ const parameters = getParameters(signature);
557
+ if (parameters === undefined || parameters.nodes.length === 0)
558
+ return undefined;
559
+ const first = parameters.nodes[0];
560
+ const name = getName(first);
561
+ return name !== undefined && name.kind === 79 /* SyntaxKind.Identifier */ && getText(name) === 'this' ? first : undefined;
562
+ }
@@ -0,0 +1,33 @@
1
+ import { type JsxAttribute, type Node } from './ast.js';
2
+ import { type Checker } from './checker.js';
3
+ import { type Signature, type Type } from './checker-types.js';
4
+ import { type Diagnostic } from './diagnostics.js';
5
+ import { type Symbol } from './symbol.js';
6
+ /** Whether `declaration`, or the statement it belongs to, has a `@deprecated` JSDoc tag. */
7
+ export declare function isDeprecatedDeclaration(declaration: Node): boolean;
8
+ /**
9
+ * Whether `symbol` is deprecated: an interface member when any declaration is, other merged
10
+ * members when all are.
11
+ */
12
+ export declare function isDeprecatedSymbol(c: Checker, symbol: Symbol): boolean;
13
+ export declare function addDeprecatedSuggestion(c: Checker, location: Node, declarations: readonly Node[], deprecatedEntity: string): Diagnostic;
14
+ /** Reports a call, `new`, tagged template, decorator or JSX element resolved to a deprecated signature. */
15
+ export declare function checkDeprecatedSignature(c: Checker, signature: Signature, node: Node): void;
16
+ /** The part of a use that a deprecation suggestion underlines. */
17
+ export declare function getDeprecatedSuggestionNode(node: Node): Node;
18
+ /** Resolves an alias, reporting the first deprecated alias along the way to its target. */
19
+ export declare function resolveAliasWithDeprecationCheck(c: Checker, symbol: Symbol, location: Node): Symbol;
20
+ /** Resolves the alias an identifier refers to and reports a deprecated target. */
21
+ export declare function checkDeprecatedIdentifier(c: Checker, node: Node, localOrExportSymbol: Symbol): void;
22
+ /** Reports a property access to a deprecated property. */
23
+ export declare function checkDeprecatedProperty(c: Checker, node: Node, right: Node, prop: Symbol): void;
24
+ /** Reports a property access resolved through a deprecated index signature. */
25
+ export declare function checkDeprecatedIndexSignature(c: Checker, right: Node, declaration: Node | undefined): void;
26
+ /** Reports an element access or indexed access type selecting a deprecated property. */
27
+ export declare function checkDeprecatedIndexedAccess(c: Checker, accessNode: Node, prop: Symbol, propName: string): void;
28
+ /** Reports a type reference or import type naming a deprecated type. */
29
+ export declare function checkDeprecatedTypeReference(c: Checker, node: Node, type: Type): void;
30
+ /** Reports an import specifier importing a deprecated declaration. */
31
+ export declare function checkDeprecatedImportSpecifier(c: Checker, node: Node, symbol: Symbol): void;
32
+ /** Reports a JSX attribute setting a deprecated property of the element's contextual props type. */
33
+ export declare function checkDeprecatedJsxAttribute(c: Checker, contextualType: Type, attribute: JsxAttribute): void;