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,419 @@
1
+ // Node predicates the transforms share.
2
+ import {
3
+ AsExpression,
4
+ BinaryExpression,
5
+ ExpressionWithTypeArguments,
6
+ NonNullExpression,
7
+ PartiallyEmittedExpression,
8
+ SatisfiesExpression,
9
+ TypeAssertion,
10
+ ExportDeclaration,
11
+ ExportSpecifier,
12
+ Identifier,
13
+ ModifierFlags,
14
+ ModuleBlock,
15
+ ModuleDeclaration,
16
+ NamedExports,
17
+ type Node,
18
+ NodeFlags,
19
+ ParameterDeclaration,
20
+ ParenthesizedExpression,
21
+ SourceFile,
22
+ Block,
23
+ VariableStatement,
24
+ ShorthandPropertyAssignment,
25
+ ForStatement,
26
+ ImportEqualsDeclaration,
27
+ ConditionalExpression,
28
+ TaggedTemplateExpression,
29
+ ImportAttribute,
30
+ LabeledStatement,
31
+ VariableDeclaration,
32
+ VariableDeclarationList,
33
+ getArguments,
34
+ getBody,
35
+ getExpression,
36
+ getInitializer,
37
+ getModifiers,
38
+ getName,
39
+ getStatements,
40
+ getTagName,
41
+ } from '../ast.js';
42
+ import type { NodeFactory } from '../printer/factory.js';
43
+ import { SyntaxKind } from '../syntax-kind.js';
44
+
45
+ export function modifierFlagsOf(node: Node): ModifierFlags {
46
+ const modifiers = getModifiers(node);
47
+ return modifiers === undefined ? ModifierFlags.None : modifiers.modifierFlags;
48
+ }
49
+
50
+ export function hasSyntacticModifier(node: Node, flags: ModifierFlags): boolean {
51
+ return (modifierFlagsOf(node) & flags) !== 0;
52
+ }
53
+
54
+ export function hasDecorators(node: Node): boolean {
55
+ return hasSyntacticModifier(node, ModifierFlags.Decorator);
56
+ }
57
+
58
+ export function isThisParameter(node: Node): boolean {
59
+ return node instanceof ParameterDeclaration && node.name instanceof Identifier && node.name.text === 'this';
60
+ }
61
+
62
+ export function isParameterPropertyDeclaration(node: Node, parent: Node | undefined): boolean {
63
+ return (
64
+ node instanceof ParameterDeclaration &&
65
+ hasSyntacticModifier(node, ModifierFlags.ParameterPropertyModifier) &&
66
+ parent !== undefined &&
67
+ parent.kind === SyntaxKind.Constructor
68
+ );
69
+ }
70
+
71
+ /** `/** @type {T} *\/ (expr)` in a JavaScript file. */
72
+ export function isJSDocTypeAssertion(node: Node): boolean {
73
+ if (!(node instanceof ParenthesizedExpression) || (node.flags & NodeFlags.JavaScriptFile) === 0) return false;
74
+ const expression = node.expression;
75
+ return expression instanceof AsExpression && (expression.type.flags & NodeFlags.Reparsed) !== 0;
76
+ }
77
+
78
+ export function isExternalModule(file: SourceFile): boolean {
79
+ return file.externalModuleIndicator !== undefined;
80
+ }
81
+
82
+ export function getInnermostModuleDeclaration(node: ModuleDeclaration): ModuleDeclaration {
83
+ let body = node.body;
84
+ while (body instanceof ModuleDeclaration) {
85
+ node = body as ModuleDeclaration;
86
+ body = node.body;
87
+ }
88
+ return node;
89
+ }
90
+
91
+ export const enum ModuleInstanceState {
92
+ Unknown,
93
+ NonInstantiated,
94
+ Instantiated,
95
+ ConstEnumOnly,
96
+ }
97
+
98
+ /** Whether a namespace has runtime content, from its syntax alone. */
99
+ export function getModuleInstanceState(node: ModuleDeclaration): ModuleInstanceState {
100
+ return new ModuleInstanceStates().ofModule(node, []);
101
+ }
102
+
103
+ export function isInstantiatedModule(node: ModuleDeclaration, preserveConstEnums: boolean): boolean {
104
+ const state = getModuleInstanceState(node);
105
+ return (
106
+ state === ModuleInstanceState.Instantiated || (preserveConstEnums && state === ModuleInstanceState.ConstEnumOnly)
107
+ );
108
+ }
109
+
110
+ class ModuleInstanceStates {
111
+ private readonly visited: Map<Node, ModuleInstanceState>;
112
+
113
+ constructor() {
114
+ this.visited = new Map<Node, ModuleInstanceState>();
115
+ }
116
+
117
+ ofModule(node: ModuleDeclaration, ancestors: Node[]): ModuleInstanceState {
118
+ const body = node.body;
119
+ if (body === undefined) return ModuleInstanceState.Instantiated;
120
+ const self: Node = node;
121
+ return this.cached(body, ancestors.concat([self]));
122
+ }
123
+
124
+ private cached(node: Node, ancestors: Node[]): ModuleInstanceState {
125
+ const cached = this.visited.get(node);
126
+ if (cached !== undefined)
127
+ return cached !== ModuleInstanceState.Unknown ? cached : ModuleInstanceState.NonInstantiated;
128
+ this.visited.set(node, ModuleInstanceState.Unknown);
129
+ const result = this.worker(node, ancestors);
130
+ this.visited.set(node, result);
131
+ return result;
132
+ }
133
+
134
+ private worker(node: Node, ancestors: Node[]): ModuleInstanceState {
135
+ switch (node.kind) {
136
+ case SyntaxKind.InterfaceDeclaration:
137
+ case SyntaxKind.TypeAliasDeclaration:
138
+ case SyntaxKind.JSTypeAliasDeclaration:
139
+ return ModuleInstanceState.NonInstantiated;
140
+ case SyntaxKind.EnumDeclaration:
141
+ if (hasSyntacticModifier(node, ModifierFlags.Const)) return ModuleInstanceState.ConstEnumOnly;
142
+ break;
143
+ case SyntaxKind.ImportDeclaration:
144
+ case SyntaxKind.JSImportDeclaration:
145
+ case SyntaxKind.ImportEqualsDeclaration:
146
+ if (!hasSyntacticModifier(node, ModifierFlags.Export)) return ModuleInstanceState.NonInstantiated;
147
+ break;
148
+ case SyntaxKind.ExportDeclaration:
149
+ if (
150
+ node instanceof ExportDeclaration &&
151
+ node.moduleSpecifier === undefined &&
152
+ node.exportClause instanceof NamedExports
153
+ ) {
154
+ let state = ModuleInstanceState.NonInstantiated;
155
+ const declaration: Node = node;
156
+ const clause: Node = node.exportClause;
157
+ const inner = ancestors.concat([declaration, clause]);
158
+ const elements = node.exportClause.elements.nodes;
159
+ for (const specifier of elements) {
160
+ if (!(specifier instanceof ExportSpecifier)) continue;
161
+ const specifierState = this.ofAliasTarget(specifier as ExportSpecifier, inner);
162
+ if (specifierState > state) state = specifierState;
163
+ if (state === ModuleInstanceState.Instantiated) return state;
164
+ }
165
+ return state;
166
+ }
167
+ break;
168
+ case SyntaxKind.ModuleBlock:
169
+ if (node instanceof ModuleBlock) {
170
+ let state = ModuleInstanceState.NonInstantiated;
171
+ const block: Node = node;
172
+ const inner = ancestors.concat([block]);
173
+ const statements = node.statements.nodes;
174
+ for (const statement of statements) {
175
+ const child = this.cached(statement, inner);
176
+ if (child === ModuleInstanceState.ConstEnumOnly) state = child;
177
+ else if (child === ModuleInstanceState.Instantiated) return child;
178
+ }
179
+ return state;
180
+ }
181
+ break;
182
+ case SyntaxKind.ModuleDeclaration:
183
+ if (node instanceof ModuleDeclaration) return this.ofModule(node, ancestors);
184
+ break;
185
+ }
186
+ return ModuleInstanceState.Instantiated;
187
+ }
188
+
189
+ private ofAliasTarget(specifier: ExportSpecifier, ancestors: Node[]): ModuleInstanceState {
190
+ const name = specifier.propertyName !== undefined ? specifier.propertyName : specifier.name;
191
+ if (!(name instanceof Identifier)) return ModuleInstanceState.Instantiated;
192
+ for (let a = ancestors.length - 1; a >= 0; a--) {
193
+ const p = ancestors[a]!;
194
+ const statementList = getStatements(p);
195
+ if (statementList === undefined || !(p instanceof Block || p instanceof ModuleBlock || p instanceof SourceFile))
196
+ continue;
197
+ let found = ModuleInstanceState.Unknown;
198
+ const inner = ancestors.slice(0, a + 1);
199
+ const statements = statementList.nodes;
200
+ for (const statement of statements) {
201
+ if (!nodeHasName(statement, name.text)) continue;
202
+ const state = this.cached(statement, inner);
203
+ if (found === ModuleInstanceState.Unknown || state > found) found = state;
204
+ if (found === ModuleInstanceState.Instantiated) return found;
205
+ if (statement.kind === SyntaxKind.ImportEqualsDeclaration) found = ModuleInstanceState.Instantiated;
206
+ }
207
+ if (found !== ModuleInstanceState.Unknown) return found;
208
+ }
209
+ return ModuleInstanceState.Instantiated;
210
+ }
211
+ }
212
+
213
+ function nodeHasName(statement: Node, text: string): boolean {
214
+ const name = getName(statement);
215
+ if (name !== undefined) return name instanceof Identifier && name.text === text;
216
+ if (statement instanceof VariableStatement) {
217
+ const declarations = statement.declarationList.declarations.nodes;
218
+ for (const declaration of declarations) if (nodeHasName(declaration, text)) return true;
219
+ }
220
+ return false;
221
+ }
222
+
223
+ /** Whether `name` is used as a value in `parent`, rather than declared or as a property name. */
224
+ export function isIdentifierReference(name: Node, parent: Node | undefined): boolean {
225
+ if (parent === undefined) return false;
226
+ switch (parent.kind) {
227
+ case SyntaxKind.BinaryExpression:
228
+ case SyntaxKind.PrefixUnaryExpression:
229
+ case SyntaxKind.PostfixUnaryExpression:
230
+ case SyntaxKind.YieldExpression:
231
+ case SyntaxKind.AsExpression:
232
+ case SyntaxKind.SatisfiesExpression:
233
+ case SyntaxKind.ElementAccessExpression:
234
+ case SyntaxKind.NonNullExpression:
235
+ case SyntaxKind.SpreadElement:
236
+ case SyntaxKind.SpreadAssignment:
237
+ case SyntaxKind.ParenthesizedExpression:
238
+ case SyntaxKind.ArrayLiteralExpression:
239
+ case SyntaxKind.DeleteExpression:
240
+ case SyntaxKind.TypeOfExpression:
241
+ case SyntaxKind.VoidExpression:
242
+ case SyntaxKind.AwaitExpression:
243
+ case SyntaxKind.TypeAssertionExpression:
244
+ case SyntaxKind.ExpressionWithTypeArguments:
245
+ case SyntaxKind.JsxSelfClosingElement:
246
+ case SyntaxKind.JsxSpreadAttribute:
247
+ case SyntaxKind.JsxExpression:
248
+ case SyntaxKind.PartiallyEmittedExpression:
249
+ return true;
250
+ case SyntaxKind.ComputedPropertyName:
251
+ case SyntaxKind.Decorator:
252
+ case SyntaxKind.IfStatement:
253
+ case SyntaxKind.DoStatement:
254
+ case SyntaxKind.WhileStatement:
255
+ case SyntaxKind.WithStatement:
256
+ case SyntaxKind.ReturnStatement:
257
+ case SyntaxKind.SwitchStatement:
258
+ case SyntaxKind.CaseClause:
259
+ case SyntaxKind.ThrowStatement:
260
+ case SyntaxKind.ExpressionStatement:
261
+ case SyntaxKind.ExportAssignment:
262
+ case SyntaxKind.PropertyAccessExpression:
263
+ case SyntaxKind.TemplateSpan:
264
+ return getExpression(parent) === name;
265
+ case SyntaxKind.VariableDeclaration:
266
+ case SyntaxKind.Parameter:
267
+ case SyntaxKind.BindingElement:
268
+ case SyntaxKind.PropertyDeclaration:
269
+ case SyntaxKind.PropertySignature:
270
+ case SyntaxKind.PropertyAssignment:
271
+ case SyntaxKind.EnumMember:
272
+ case SyntaxKind.JsxAttribute:
273
+ return getInitializer(parent) === name;
274
+ case SyntaxKind.ShorthandPropertyAssignment:
275
+ return parent instanceof ShorthandPropertyAssignment && parent.objectAssignmentInitializer === name;
276
+ case SyntaxKind.ForStatement:
277
+ return (
278
+ parent instanceof ForStatement &&
279
+ (parent.initializer === name || parent.condition === name || parent.incrementor === name)
280
+ );
281
+ case SyntaxKind.ForInStatement:
282
+ case SyntaxKind.ForOfStatement:
283
+ return getInitializer(parent) === name || getExpression(parent) === name;
284
+ case SyntaxKind.ImportEqualsDeclaration:
285
+ return parent instanceof ImportEqualsDeclaration && parent.moduleReference === name;
286
+ case SyntaxKind.ArrowFunction:
287
+ return getBody(parent) === name;
288
+ case SyntaxKind.ConditionalExpression:
289
+ return (
290
+ parent instanceof ConditionalExpression &&
291
+ (parent.condition === name || parent.whenTrue === name || parent.whenFalse === name)
292
+ );
293
+ case SyntaxKind.CallExpression:
294
+ case SyntaxKind.NewExpression: {
295
+ if (getExpression(parent) === name) return true;
296
+ const args = getArguments(parent);
297
+ return args !== undefined && args.nodes.indexOf(name) >= 0;
298
+ }
299
+ case SyntaxKind.TaggedTemplateExpression:
300
+ return parent instanceof TaggedTemplateExpression && parent.tag === name;
301
+ case SyntaxKind.ImportAttribute:
302
+ return parent instanceof ImportAttribute && parent.value === name;
303
+ case SyntaxKind.JsxOpeningElement:
304
+ case SyntaxKind.JsxClosingElement:
305
+ return getTagName(parent) === name;
306
+ }
307
+ return false;
308
+ }
309
+
310
+ /** The node itself for one node, else a syntax list of them; undefined for none. */
311
+ export function singleOrMany(nodes: Node[], factory: NodeFactory): Node | undefined {
312
+ if (nodes.length === 0) return undefined;
313
+ if (nodes.length === 1) return nodes[0]!;
314
+ return factory.createSyntaxList(nodes);
315
+ }
316
+
317
+ /** Whether two optional nodes are the same node. */
318
+ export function isSameNode(a: Node | undefined, b: Node | undefined): boolean {
319
+ if (a === undefined) return b === undefined;
320
+ if (b === undefined) return false;
321
+ return a === b;
322
+ }
323
+
324
+ /** The statement binding a `for...of` head to `boundValue`: a declaration or an assignment. */
325
+ export function createForOfBindingStatement(factory: NodeFactory, node: Node, boundValue: Node): Node {
326
+ if (node instanceof VariableDeclarationList) {
327
+ const first = node.declarations.nodes[0]! as VariableDeclaration;
328
+ const declaration = factory.updateVariableDeclaration(first, first.name, undefined, undefined, boundValue);
329
+ const statement = factory.createVariableStatement(
330
+ undefined,
331
+ factory.updateVariableDeclarationList(
332
+ node as VariableDeclarationList,
333
+ factory.createNodeList([declaration as Node]),
334
+ node.flags,
335
+ ),
336
+ );
337
+ statement.pos = node.pos;
338
+ statement.end = node.end;
339
+ return statement;
340
+ }
341
+ const assignment = factory.createAssignment(node, boundValue);
342
+ assignment.pos = node.pos;
343
+ assignment.end = node.end;
344
+ const statement = factory.createExpressionStatement(assignment);
345
+ statement.pos = node.pos;
346
+ statement.end = node.end;
347
+ return statement;
348
+ }
349
+
350
+ /** `node` wrapped in the labels of `outermost` and the labeled statements nested in it. */
351
+ export function restoreEnclosingLabel(factory: NodeFactory, node: Node, outermost: LabeledStatement | undefined): Node {
352
+ if (outermost === undefined) return node;
353
+ const inner =
354
+ outermost.statement instanceof LabeledStatement ? restoreEnclosingLabel(factory, node, outermost.statement) : node;
355
+ return factory.updateLabeledStatement(outermost, outermost.label, inner);
356
+ }
357
+
358
+ /** Kinds of expressions wrapping another that `skipOuterExpressions` looks through. */
359
+ export const enum OuterExpressionKinds {
360
+ None = 0,
361
+ Parentheses = 1 << 0,
362
+ TypeAssertions = 1 << 1,
363
+ NonNullAssertions = 1 << 2,
364
+ PartiallyEmittedExpressions = 1 << 3,
365
+ ExpressionsWithTypeArguments = 1 << 4,
366
+ Satisfies = 1 << 5,
367
+ ExcludeJSDocTypeAssertion = 1 << 6,
368
+ Assignments = 1 << 7,
369
+ Comma = 1 << 8,
370
+ Assertions = TypeAssertions | NonNullAssertions | Satisfies,
371
+ All = Parentheses | Assertions | PartiallyEmittedExpressions | ExpressionsWithTypeArguments,
372
+ }
373
+
374
+ export function isOuterExpression(node: Node, kinds: OuterExpressionKinds): boolean {
375
+ switch (node.kind) {
376
+ case SyntaxKind.ParenthesizedExpression:
377
+ return (
378
+ (kinds & OuterExpressionKinds.Parentheses) !== 0 &&
379
+ !((kinds & OuterExpressionKinds.ExcludeJSDocTypeAssertion) !== 0 && isJSDocTypeAssertion(node))
380
+ );
381
+ case SyntaxKind.TypeAssertionExpression:
382
+ case SyntaxKind.AsExpression:
383
+ return (kinds & OuterExpressionKinds.TypeAssertions) !== 0;
384
+ case SyntaxKind.SatisfiesExpression:
385
+ return (kinds & (OuterExpressionKinds.ExpressionsWithTypeArguments | OuterExpressionKinds.Satisfies)) !== 0;
386
+ case SyntaxKind.ExpressionWithTypeArguments:
387
+ return (kinds & OuterExpressionKinds.ExpressionsWithTypeArguments) !== 0;
388
+ case SyntaxKind.NonNullExpression:
389
+ return (kinds & OuterExpressionKinds.NonNullAssertions) !== 0;
390
+ case SyntaxKind.PartiallyEmittedExpression:
391
+ return (kinds & OuterExpressionKinds.PartiallyEmittedExpressions) !== 0;
392
+ case SyntaxKind.BinaryExpression:
393
+ if (node instanceof BinaryExpression) {
394
+ const operator = node.operatorToken.kind;
395
+ if (operator === SyntaxKind.EqualsToken) return (kinds & OuterExpressionKinds.Assignments) !== 0;
396
+ if (operator === SyntaxKind.CommaToken) return (kinds & OuterExpressionKinds.Comma) !== 0;
397
+ }
398
+ }
399
+ return false;
400
+ }
401
+
402
+ /** The expression wrapped by `node`, past the outer expressions of `kinds`. */
403
+ export function skipOuterExpressions(node: Node, kinds: OuterExpressionKinds): Node {
404
+ while (isOuterExpression(node, kinds)) node = outerExpressionOperand(node);
405
+ return node;
406
+ }
407
+
408
+ /** The operand of an outer expression. */
409
+ export function outerExpressionOperand(node: Node): Node {
410
+ if (node instanceof ParenthesizedExpression) return node.expression;
411
+ if (node instanceof TypeAssertion) return node.expression;
412
+ if (node instanceof AsExpression) return node.expression;
413
+ if (node instanceof SatisfiesExpression) return node.expression;
414
+ if (node instanceof ExpressionWithTypeArguments) return node.expression;
415
+ if (node instanceof NonNullExpression) return node.expression;
416
+ if (node instanceof PartiallyEmittedExpression) return node.expression;
417
+ if (node instanceof BinaryExpression) return node.right;
418
+ return node;
419
+ }