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,10 @@
1
+ import { type Node, NodeVisitor } from '../ast.js';
2
+ /** Memoized `containsTypeScript` answers for one emit. */
3
+ export declare class TypeScriptFacts extends NodeVisitor {
4
+ /** The answer for each node, by node id. */
5
+ private readonly cache;
6
+ private found;
7
+ constructor();
8
+ containsTypeScript(node: Node): boolean;
9
+ visitNode(node: Node): boolean;
10
+ }
@@ -0,0 +1,205 @@
1
+ // Whether a subtree contains TypeScript-only syntax, computed as tsgo's subtree facts are.
2
+ // Transforms skip subtrees without it; that also decides how malformed code is emitted.
3
+ import { ClassDeclaration, ClassExpression, ConstructorDeclaration, ExportAssignment, ExportDeclaration, ExportSpecifier, FunctionDeclaration, GetAccessorDeclaration, Identifier, ImportClause, ImportEqualsDeclaration, ImportSpecifier, MethodDeclaration, NodeVisitor, ParameterDeclaration, PropertyDeclaration, SetAccessorDeclaration, VariableDeclaration, VariableStatement, ArrowFunction, FunctionExpression, CallExpression, NewExpression, TaggedTemplateExpression, ExpressionWithTypeArguments, JsxOpeningElement, JsxSelfClosingElement, HeritageClause, getModifiers, } from '../ast.js';
4
+ import { ClusteredIntLinkTable } from '../link-tables.js';
5
+ import { isTypeNodeKind } from '../printer/utilities.js';
6
+ /** Memoized `containsTypeScript` answers for one emit. */
7
+ export class TypeScriptFacts extends NodeVisitor {
8
+ /** The answer for each node, by node id. */
9
+ cache;
10
+ found;
11
+ constructor() {
12
+ super();
13
+ this.cache = new ClusteredIntLinkTable();
14
+ this.found = false;
15
+ }
16
+ containsTypeScript(node) {
17
+ const cached = this.cache.get(node.id);
18
+ if (cached !== 0)
19
+ return cached === 2 /* Answer.Yes */;
20
+ const own = ownFacts(node);
21
+ let result = (own & 1 /* Facts.TypeScript */) !== 0;
22
+ if (!result && (own & 2 /* Facts.Final */) === 0) {
23
+ const saved = this.found;
24
+ this.found = false;
25
+ node.forEachChild(this);
26
+ result = this.found;
27
+ this.found = saved;
28
+ }
29
+ this.cache.set(node.id, result ? 2 /* Answer.Yes */ : 1 /* Answer.No */);
30
+ return result;
31
+ }
32
+ visitNode(node) {
33
+ if (this.containsTypeScript(node))
34
+ this.found = true;
35
+ return this.found;
36
+ }
37
+ }
38
+ function ambient(node) {
39
+ const modifiers = getModifiers(node);
40
+ return modifiers !== undefined && (modifiers.modifierFlags & 128 /* ModifierFlags.Ambient */) !== 0;
41
+ }
42
+ /** TypeScript syntax of the node itself, beyond what its children contribute. */
43
+ function ownFacts(node) {
44
+ const kind = node.kind;
45
+ if (isTypeNodeKind(kind) && kind !== 234 /* SyntaxKind.ExpressionWithTypeArguments */)
46
+ return 1 /* Facts.TypeScript */;
47
+ switch (kind) {
48
+ case 124 /* SyntaxKind.PublicKeyword */:
49
+ case 122 /* SyntaxKind.PrivateKeyword */:
50
+ case 123 /* SyntaxKind.ProtectedKeyword */:
51
+ case 148 /* SyntaxKind.ReadonlyKeyword */:
52
+ case 127 /* SyntaxKind.AbstractKeyword */:
53
+ case 137 /* SyntaxKind.DeclareKeyword */:
54
+ case 86 /* SyntaxKind.ConstKeyword */:
55
+ case 102 /* SyntaxKind.InKeyword */:
56
+ case 147 /* SyntaxKind.OutKeyword */:
57
+ case 164 /* SyntaxKind.OverrideKeyword */:
58
+ case 94 /* SyntaxKind.ExportKeyword */:
59
+ case 171 /* SyntaxKind.Decorator */:
60
+ case 306 /* SyntaxKind.EnumMember */:
61
+ case 267 /* SyntaxKind.EnumDeclaration */:
62
+ case 268 /* SyntaxKind.ModuleDeclaration */:
63
+ case 304 /* SyntaxKind.ShorthandPropertyAssignment */:
64
+ case 235 /* SyntaxKind.AsExpression */:
65
+ case 239 /* SyntaxKind.SatisfiesExpression */:
66
+ case 236 /* SyntaxKind.NonNullExpression */:
67
+ case 217 /* SyntaxKind.TypeAssertionExpression */:
68
+ case 265 /* SyntaxKind.InterfaceDeclaration */:
69
+ case 266 /* SyntaxKind.TypeAliasDeclaration */:
70
+ case 345 /* SyntaxKind.JSTypeAliasDeclaration */:
71
+ case 271 /* SyntaxKind.NamespaceExportDeclaration */:
72
+ case 180 /* SyntaxKind.CallSignature */:
73
+ case 181 /* SyntaxKind.ConstructSignature */:
74
+ case 182 /* SyntaxKind.IndexSignature */:
75
+ case 174 /* SyntaxKind.MethodSignature */:
76
+ case 172 /* SyntaxKind.PropertySignature */:
77
+ case 169 /* SyntaxKind.TypeParameter */:
78
+ return 1 /* Facts.TypeScript */;
79
+ case 244 /* SyntaxKind.VariableStatement */:
80
+ return node instanceof VariableStatement && ambient(node) ? 1 /* Facts.TypeScript */ : 0 /* Facts.None */;
81
+ case 261 /* SyntaxKind.VariableDeclaration */:
82
+ return node instanceof VariableDeclaration && (node.exclamationToken !== undefined || node.type !== undefined)
83
+ ? 1 /* Facts.TypeScript */
84
+ : 0 /* Facts.None */;
85
+ case 170 /* SyntaxKind.Parameter */:
86
+ if (node instanceof ParameterDeclaration)
87
+ return (node.name instanceof Identifier && node.name.text === 'this') ||
88
+ node.questionToken !== undefined ||
89
+ node.type !== undefined
90
+ ? 1 /* Facts.TypeScript */
91
+ : 0 /* Facts.None */;
92
+ break;
93
+ case 263 /* SyntaxKind.FunctionDeclaration */:
94
+ if (node instanceof FunctionDeclaration)
95
+ return node.body === undefined ||
96
+ ambient(node) ||
97
+ node.typeParameters !== undefined ||
98
+ node.type !== undefined ||
99
+ node.fullSignature !== undefined
100
+ ? 1 /* Facts.TypeScript */
101
+ : 0 /* Facts.None */;
102
+ break;
103
+ case 264 /* SyntaxKind.ClassDeclaration */:
104
+ if (node instanceof ClassDeclaration)
105
+ return ambient(node) || node.typeParameters !== undefined ? 1 /* Facts.TypeScript */ : 0 /* Facts.None */;
106
+ break;
107
+ case 232 /* SyntaxKind.ClassExpression */:
108
+ if (node instanceof ClassExpression)
109
+ return ambient(node) || node.typeParameters !== undefined ? 1 /* Facts.TypeScript */ : 0 /* Facts.None */;
110
+ break;
111
+ case 299 /* SyntaxKind.HeritageClause */:
112
+ if (node instanceof HeritageClause) {
113
+ if (node.token === 118 /* SyntaxKind.ImplementsKeyword */)
114
+ return 1 /* Facts.TypeScript */;
115
+ return node.token === 95 /* SyntaxKind.ExtendsKeyword */ ? 0 /* Facts.None */ : 2 /* Facts.Final */;
116
+ }
117
+ break;
118
+ case 272 /* SyntaxKind.ImportEqualsDeclaration */:
119
+ if (node instanceof ImportEqualsDeclaration)
120
+ return node.isTypeOnly || node.moduleReference.kind !== 284 /* SyntaxKind.ExternalModuleReference */
121
+ ? 1 /* Facts.TypeScript */
122
+ : 0 /* Facts.None */;
123
+ break;
124
+ case 277 /* SyntaxKind.ImportSpecifier */:
125
+ return node instanceof ImportSpecifier && node.isTypeOnly ? 1 /* Facts.TypeScript */ : 0 /* Facts.None */;
126
+ case 274 /* SyntaxKind.ImportClause */:
127
+ return node instanceof ImportClause && node.phaseModifier === 156 /* SyntaxKind.TypeKeyword */
128
+ ? 1 /* Facts.TypeScript */
129
+ : 0 /* Facts.None */;
130
+ case 278 /* SyntaxKind.ExportAssignment */:
131
+ return node instanceof ExportAssignment && node.isExportEquals ? 1 /* Facts.TypeScript */ : 0 /* Facts.None */;
132
+ case 279 /* SyntaxKind.ExportDeclaration */:
133
+ return node instanceof ExportDeclaration && node.isTypeOnly ? 1 /* Facts.TypeScript */ : 0 /* Facts.None */;
134
+ case 282 /* SyntaxKind.ExportSpecifier */:
135
+ return node instanceof ExportSpecifier && node.isTypeOnly ? 1 /* Facts.TypeScript */ : 0 /* Facts.None */;
136
+ case 177 /* SyntaxKind.Constructor */:
137
+ if (node instanceof ConstructorDeclaration)
138
+ return node.body === undefined ||
139
+ node.typeParameters !== undefined ||
140
+ node.type !== undefined ||
141
+ node.fullSignature !== undefined
142
+ ? 1 /* Facts.TypeScript */
143
+ : 0 /* Facts.None */;
144
+ break;
145
+ case 178 /* SyntaxKind.GetAccessor */:
146
+ if (node instanceof GetAccessorDeclaration)
147
+ return node.body === undefined ||
148
+ node.typeParameters !== undefined ||
149
+ node.type !== undefined ||
150
+ node.fullSignature !== undefined
151
+ ? 1 /* Facts.TypeScript */
152
+ : 0 /* Facts.None */;
153
+ break;
154
+ case 179 /* SyntaxKind.SetAccessor */:
155
+ if (node instanceof SetAccessorDeclaration)
156
+ return node.body === undefined ||
157
+ node.typeParameters !== undefined ||
158
+ node.type !== undefined ||
159
+ node.fullSignature !== undefined
160
+ ? 1 /* Facts.TypeScript */
161
+ : 0 /* Facts.None */;
162
+ break;
163
+ case 175 /* SyntaxKind.MethodDeclaration */:
164
+ if (node instanceof MethodDeclaration)
165
+ return node.body === undefined ||
166
+ node.postfixToken !== undefined ||
167
+ node.typeParameters !== undefined ||
168
+ node.type !== undefined ||
169
+ node.fullSignature !== undefined
170
+ ? 1 /* Facts.TypeScript */
171
+ : 0 /* Facts.None */;
172
+ break;
173
+ case 173 /* SyntaxKind.PropertyDeclaration */:
174
+ return node instanceof PropertyDeclaration && (node.postfixToken !== undefined || node.type !== undefined)
175
+ ? 1 /* Facts.TypeScript */
176
+ : 0 /* Facts.None */;
177
+ case 220 /* SyntaxKind.ArrowFunction */:
178
+ return node instanceof ArrowFunction &&
179
+ (node.typeParameters !== undefined || node.type !== undefined || node.fullSignature !== undefined)
180
+ ? 1 /* Facts.TypeScript */
181
+ : 0 /* Facts.None */;
182
+ case 219 /* SyntaxKind.FunctionExpression */:
183
+ return node instanceof FunctionExpression &&
184
+ (node.typeParameters !== undefined || node.type !== undefined || node.fullSignature !== undefined)
185
+ ? 1 /* Facts.TypeScript */
186
+ : 0 /* Facts.None */;
187
+ case 214 /* SyntaxKind.CallExpression */:
188
+ return node instanceof CallExpression && node.typeArguments !== undefined ? 1 /* Facts.TypeScript */ : 0 /* Facts.None */;
189
+ case 215 /* SyntaxKind.NewExpression */:
190
+ return node instanceof NewExpression && node.typeArguments !== undefined ? 1 /* Facts.TypeScript */ : 0 /* Facts.None */;
191
+ case 216 /* SyntaxKind.TaggedTemplateExpression */:
192
+ return node instanceof TaggedTemplateExpression && node.typeArguments !== undefined
193
+ ? 1 /* Facts.TypeScript */
194
+ : 0 /* Facts.None */;
195
+ case 234 /* SyntaxKind.ExpressionWithTypeArguments */:
196
+ return node instanceof ExpressionWithTypeArguments && node.typeArguments !== undefined
197
+ ? 1 /* Facts.TypeScript */
198
+ : 0 /* Facts.None */;
199
+ case 287 /* SyntaxKind.JsxOpeningElement */:
200
+ return node instanceof JsxOpeningElement && node.typeArguments !== undefined ? 1 /* Facts.TypeScript */ : 0 /* Facts.None */;
201
+ case 286 /* SyntaxKind.JsxSelfClosingElement */:
202
+ return node instanceof JsxSelfClosingElement && node.typeArguments !== undefined ? 1 /* Facts.TypeScript */ : 0 /* Facts.None */;
203
+ }
204
+ return 0 /* Facts.None */;
205
+ }
@@ -0,0 +1,52 @@
1
+ import { type Node, NodeVisitor } from '../ast.js';
2
+ export declare const enum SubtreeFacts {
3
+ None = 0,
4
+ ContainsTypeScript = 1,
5
+ ContainsJsx = 2,
6
+ ContainsUsing = 4,
7
+ ContainsLogicalAssignments = 8,
8
+ ContainsNullishCoalescing = 16,
9
+ ContainsOptionalChaining = 32,
10
+ ContainsMissingCatchClauseVariable = 64,
11
+ /** A `...` in an object literal or object pattern somewhere inside; never cleared. */
12
+ ContainsESObjectRestOrSpread = 128,
13
+ ContainsForAwaitOrAsyncGenerator = 256,
14
+ ContainsAnyAwait = 512,
15
+ ContainsExponentiationOperator = 1024,
16
+ ContainsLexicalThis = 2048,
17
+ ContainsLexicalSuper = 4096,
18
+ /** A `...` anywhere; cleared when leaving a binding pattern. */
19
+ ContainsRestOrSpread = 8192,
20
+ /** A `{ ...x }`; cleared when leaving most scopes. */
21
+ ContainsObjectRestOrSpread = 16384,
22
+ ContainsAwait = 32768,
23
+ ContainsDynamicImport = 65536,
24
+ ContainsClassFields = 131072,
25
+ ContainsDecorators = 262144,
26
+ ContainsIdentifier = 524288,
27
+ ContainsPrivateIdentifierInExpression = 1048576,
28
+ ContainsInvalidTemplateEscape = 2097152,
29
+ ContainsLexicalThisOrSuper = 6144
30
+ }
31
+ /** Memoized subtree facts for one emit; synthesized nodes get theirs on first use. */
32
+ export declare class SyntaxFacts extends NodeVisitor {
33
+ /** The facts of each node, by node id, with `computedFacts` set. */
34
+ private readonly cache;
35
+ private collected;
36
+ constructor();
37
+ of(node: Node): SubtreeFacts;
38
+ has(node: Node, facts: SubtreeFacts): boolean;
39
+ /** Whether the subtree has a `...` in a pattern or literal. */
40
+ hasRestOrSpread(node: Node): boolean;
41
+ /** Whether the subtree has a `{ ...x }` in a pattern or literal, outside nested scopes. */
42
+ hasObjectRestOrSpread(node: Node): boolean;
43
+ /** The facts `node` contributes to its parent. */
44
+ propagate(node: Node | undefined): SubtreeFacts;
45
+ visitNode(node: Node): boolean;
46
+ private children;
47
+ private compute;
48
+ private bindingPattern;
49
+ private binaryFacts;
50
+ /** Whether a pattern has an object rest element, at any depth of nested assignment patterns. */
51
+ containsObjectRestOrSpread(node: Node): boolean;
52
+ }
@@ -0,0 +1,258 @@
1
+ // What syntax a subtree contains, computed as tsgo's subtree facts are. Downlevel transforms
2
+ // skip subtrees without the syntax they lower.
3
+ import { BindingElement, CallExpression, CatchClause, ForInOrOfStatement, Identifier, MetaProperty, NodeVisitor, NoSubstitutionTemplateLiteral, PropertyAccessExpression, TemplateHead, TemplateMiddle, TemplateTail, VariableDeclarationList, getModifiers, getName, } from '../ast.js';
4
+ import { ClusteredIntLinkTable } from '../link-tables.js';
5
+ import { isTypeNodeKind } from '../printer/utilities.js';
6
+ import { getElementsOfBindingOrAssignmentPattern, getTargetOfBindingOrAssignmentElement } from './destructuring.js';
7
+ /** Marks a computed entry of `SyntaxFacts.cache`, whose facts may be `None`. */
8
+ const computedFacts = 1 << 30;
9
+ /** Memoized subtree facts for one emit; synthesized nodes get theirs on first use. */
10
+ export class SyntaxFacts extends NodeVisitor {
11
+ /** The facts of each node, by node id, with `computedFacts` set. */
12
+ cache;
13
+ collected;
14
+ constructor() {
15
+ super();
16
+ this.cache = new ClusteredIntLinkTable();
17
+ this.collected = 0 /* SubtreeFacts.None */;
18
+ }
19
+ of(node) {
20
+ const cached = this.cache.get(node.id);
21
+ if (cached !== 0)
22
+ return cached & ~computedFacts;
23
+ const facts = this.compute(node);
24
+ this.cache.set(node.id, facts | computedFacts);
25
+ return facts;
26
+ }
27
+ has(node, facts) {
28
+ return (this.of(node) & facts) !== 0;
29
+ }
30
+ /** Whether the subtree has a `...` in a pattern or literal. */
31
+ hasRestOrSpread(node) {
32
+ return this.has(node, 8192 /* SubtreeFacts.ContainsRestOrSpread */ | 16384 /* SubtreeFacts.ContainsObjectRestOrSpread */);
33
+ }
34
+ /** Whether the subtree has a `{ ...x }` in a pattern or literal, outside nested scopes. */
35
+ hasObjectRestOrSpread(node) {
36
+ return this.has(node, 16384 /* SubtreeFacts.ContainsObjectRestOrSpread */);
37
+ }
38
+ /** The facts `node` contributes to its parent. */
39
+ propagate(node) {
40
+ if (node === undefined)
41
+ return 0 /* SubtreeFacts.None */;
42
+ const kind = node.kind;
43
+ if (isTypeNodeKind(kind) && kind !== 234 /* SyntaxKind.ExpressionWithTypeArguments */)
44
+ return 1 /* SubtreeFacts.ContainsTypeScript */;
45
+ const facts = this.of(node);
46
+ switch (kind) {
47
+ case 220 /* SyntaxKind.ArrowFunction */:
48
+ return facts & ~49152 /* Exclusions.ArrowFunction */;
49
+ case 263 /* SyntaxKind.FunctionDeclaration */:
50
+ case 219 /* SyntaxKind.FunctionExpression */:
51
+ case 177 /* SyntaxKind.Constructor */:
52
+ return facts & ~55296 /* Exclusions.Function */;
53
+ case 175 /* SyntaxKind.MethodDeclaration */:
54
+ case 178 /* SyntaxKind.GetAccessor */:
55
+ case 179 /* SyntaxKind.SetAccessor */:
56
+ return (facts & ~55296 /* Exclusions.Function */) | this.propagate(getName(node));
57
+ case 173 /* SyntaxKind.PropertyDeclaration */:
58
+ return (facts & ~6144 /* Exclusions.Property */) | this.propagate(getName(node));
59
+ case 268 /* SyntaxKind.ModuleDeclaration */:
60
+ return facts & ~6144 /* Exclusions.Module */;
61
+ case 211 /* SyntaxKind.ObjectLiteralExpression */:
62
+ case 262 /* SyntaxKind.VariableDeclarationList */:
63
+ case 300 /* SyntaxKind.CatchClause */:
64
+ return facts & ~16384 /* Exclusions.ObjectRestOrSpread */;
65
+ case 207 /* SyntaxKind.ObjectBindingPattern */:
66
+ case 208 /* SyntaxKind.ArrayBindingPattern */:
67
+ return facts & ~8192 /* Exclusions.BindingPattern */;
68
+ }
69
+ return facts;
70
+ }
71
+ visitNode(node) {
72
+ this.collected |= this.propagate(node);
73
+ return false;
74
+ }
75
+ children(node) {
76
+ const saved = this.collected;
77
+ this.collected = 0 /* SubtreeFacts.None */;
78
+ node.forEachChild(this);
79
+ const facts = this.collected;
80
+ this.collected = saved;
81
+ return facts;
82
+ }
83
+ compute(node) {
84
+ switch (node.kind) {
85
+ case 160 /* SyntaxKind.UsingKeyword */:
86
+ return 4 /* SubtreeFacts.ContainsUsing */;
87
+ case 128 /* SyntaxKind.AccessorKeyword */:
88
+ case 80 /* SyntaxKind.PrivateIdentifier */:
89
+ return 131072 /* SubtreeFacts.ContainsClassFields */;
90
+ case 133 /* SyntaxKind.AsyncKeyword */:
91
+ return 512 /* SubtreeFacts.ContainsAnyAwait */;
92
+ case 107 /* SyntaxKind.SuperKeyword */:
93
+ return 4096 /* SubtreeFacts.ContainsLexicalSuper */;
94
+ case 109 /* SyntaxKind.ThisKeyword */:
95
+ return 2048 /* SubtreeFacts.ContainsLexicalThis */;
96
+ case 42 /* SyntaxKind.AsteriskAsteriskToken */:
97
+ case 67 /* SyntaxKind.AsteriskAsteriskEqualsToken */:
98
+ return 1024 /* SubtreeFacts.ContainsExponentiationOperator */;
99
+ case 60 /* SyntaxKind.QuestionQuestionToken */:
100
+ return 16 /* SubtreeFacts.ContainsNullishCoalescing */;
101
+ case 28 /* SyntaxKind.QuestionDotToken */:
102
+ return 32 /* SubtreeFacts.ContainsOptionalChaining */;
103
+ case 77 /* SyntaxKind.QuestionQuestionEqualsToken */:
104
+ case 75 /* SyntaxKind.BarBarEqualsToken */:
105
+ case 76 /* SyntaxKind.AmpersandAmpersandEqualsToken */:
106
+ return 8 /* SubtreeFacts.ContainsLogicalAssignments */;
107
+ case 79 /* SyntaxKind.Identifier */:
108
+ return 524288 /* SubtreeFacts.ContainsIdentifier */;
109
+ case 14 /* SyntaxKind.NoSubstitutionTemplateLiteral */:
110
+ return node instanceof NoSubstitutionTemplateLiteral && invalidEscape(node.templateFlags)
111
+ ? 2097152 /* SubtreeFacts.ContainsInvalidTemplateEscape */
112
+ : 0 /* SubtreeFacts.None */;
113
+ case 15 /* SyntaxKind.TemplateHead */:
114
+ return node instanceof TemplateHead && invalidEscape(node.templateFlags)
115
+ ? 2097152 /* SubtreeFacts.ContainsInvalidTemplateEscape */
116
+ : 0 /* SubtreeFacts.None */;
117
+ case 16 /* SyntaxKind.TemplateMiddle */:
118
+ return node instanceof TemplateMiddle && invalidEscape(node.templateFlags)
119
+ ? 2097152 /* SubtreeFacts.ContainsInvalidTemplateEscape */
120
+ : 0 /* SubtreeFacts.None */;
121
+ case 17 /* SyntaxKind.TemplateTail */:
122
+ return node instanceof TemplateTail && invalidEscape(node.templateFlags)
123
+ ? 2097152 /* SubtreeFacts.ContainsInvalidTemplateEscape */
124
+ : 0 /* SubtreeFacts.None */;
125
+ case 171 /* SyntaxKind.Decorator */:
126
+ return this.children(node) | 1 /* SubtreeFacts.ContainsTypeScript */ | 262144 /* SubtreeFacts.ContainsDecorators */;
127
+ case 250 /* SyntaxKind.ForInStatement */:
128
+ case 251 /* SyntaxKind.ForOfStatement */:
129
+ return (this.children(node) |
130
+ (node instanceof ForInOrOfStatement && node.awaitModifier !== undefined
131
+ ? 256 /* SubtreeFacts.ContainsForAwaitOrAsyncGenerator */
132
+ : 0 /* SubtreeFacts.None */));
133
+ case 254 /* SyntaxKind.ReturnStatement */:
134
+ case 230 /* SyntaxKind.YieldExpression */:
135
+ // Returns and yields in an ES2018 async generator are awaited.
136
+ return this.children(node) | 256 /* SubtreeFacts.ContainsForAwaitOrAsyncGenerator */;
137
+ case 224 /* SyntaxKind.AwaitExpression */:
138
+ return (this.children(node) |
139
+ 32768 /* SubtreeFacts.ContainsAwait */ |
140
+ 512 /* SubtreeFacts.ContainsAnyAwait */ |
141
+ 256 /* SubtreeFacts.ContainsForAwaitOrAsyncGenerator */);
142
+ case 300 /* SyntaxKind.CatchClause */:
143
+ return (this.children(node) |
144
+ (node instanceof CatchClause && node.variableDeclaration === undefined
145
+ ? 64 /* SubtreeFacts.ContainsMissingCatchClauseVariable */
146
+ : 0 /* SubtreeFacts.None */));
147
+ case 262 /* SyntaxKind.VariableDeclarationList */:
148
+ return (this.children(node) |
149
+ (node instanceof VariableDeclarationList && (node.flags & 4 /* NodeFlags.Using */) !== 0
150
+ ? 4 /* SubtreeFacts.ContainsUsing */
151
+ : 0 /* SubtreeFacts.None */));
152
+ case 207 /* SyntaxKind.ObjectBindingPattern */:
153
+ case 208 /* SyntaxKind.ArrayBindingPattern */:
154
+ return this.bindingPattern(node);
155
+ case 209 /* SyntaxKind.BindingElement */:
156
+ return (this.children(node) |
157
+ (node instanceof BindingElement && node.dotDotDotToken !== undefined
158
+ ? 8192 /* SubtreeFacts.ContainsRestOrSpread */
159
+ : 0 /* SubtreeFacts.None */));
160
+ case 263 /* SyntaxKind.FunctionDeclaration */:
161
+ return this.children(node) | asyncFacts(node, node.asteriskToken !== undefined);
162
+ case 219 /* SyntaxKind.FunctionExpression */:
163
+ return this.children(node) | asyncFacts(node, node.asteriskToken !== undefined);
164
+ case 175 /* SyntaxKind.MethodDeclaration */:
165
+ return this.children(node) | asyncFacts(node, node.asteriskToken !== undefined);
166
+ case 220 /* SyntaxKind.ArrowFunction */:
167
+ return this.children(node) | asyncFacts(node, false);
168
+ case 173 /* SyntaxKind.PropertyDeclaration */:
169
+ case 176 /* SyntaxKind.ClassStaticBlockDeclaration */:
170
+ return this.children(node) | 131072 /* SubtreeFacts.ContainsClassFields */;
171
+ case 227 /* SyntaxKind.BinaryExpression */:
172
+ return this.children(node) | this.binaryFacts(node);
173
+ case 212 /* SyntaxKind.PropertyAccessExpression */:
174
+ return (this.children(node) |
175
+ (node instanceof PropertyAccessExpression && !(node.name instanceof Identifier)
176
+ ? 1048576 /* SubtreeFacts.ContainsPrivateIdentifierInExpression */
177
+ : 0 /* SubtreeFacts.None */));
178
+ case 214 /* SyntaxKind.CallExpression */:
179
+ return (this.children(node) |
180
+ (node instanceof CallExpression && node.expression.kind === 101 /* SyntaxKind.ImportKeyword */
181
+ ? 65536 /* SubtreeFacts.ContainsDynamicImport */
182
+ : 0 /* SubtreeFacts.None */));
183
+ case 237 /* SyntaxKind.MetaProperty */:
184
+ return node instanceof MetaProperty ? this.propagate(node.name) & ~524288 /* SubtreeFacts.ContainsIdentifier */ : 0;
185
+ case 231 /* SyntaxKind.SpreadElement */:
186
+ return this.children(node) | 8192 /* SubtreeFacts.ContainsRestOrSpread */;
187
+ case 305 /* SyntaxKind.SpreadAssignment */:
188
+ return (this.children(node) | 128 /* SubtreeFacts.ContainsESObjectRestOrSpread */ | 16384 /* SubtreeFacts.ContainsObjectRestOrSpread */);
189
+ case 285 /* SyntaxKind.JsxElement */:
190
+ case 293 /* SyntaxKind.JsxAttributes */:
191
+ case 296 /* SyntaxKind.JsxNamespacedName */:
192
+ case 287 /* SyntaxKind.JsxOpeningElement */:
193
+ case 286 /* SyntaxKind.JsxSelfClosingElement */:
194
+ case 289 /* SyntaxKind.JsxFragment */:
195
+ case 290 /* SyntaxKind.JsxOpeningFragment */:
196
+ case 291 /* SyntaxKind.JsxClosingFragment */:
197
+ case 292 /* SyntaxKind.JsxAttribute */:
198
+ case 294 /* SyntaxKind.JsxSpreadAttribute */:
199
+ case 288 /* SyntaxKind.JsxClosingElement */:
200
+ case 295 /* SyntaxKind.JsxExpression */:
201
+ case 11 /* SyntaxKind.JsxText */:
202
+ return this.children(node) | 2 /* SubtreeFacts.ContainsJsx */;
203
+ }
204
+ return this.children(node);
205
+ }
206
+ bindingPattern(node) {
207
+ const elements = node.elements.nodes;
208
+ const object = node.kind === 207 /* SyntaxKind.ObjectBindingPattern */;
209
+ let facts = 0 /* SubtreeFacts.None */;
210
+ for (const child of elements) {
211
+ let element = this.propagate(child);
212
+ if ((element & 8192 /* SubtreeFacts.ContainsRestOrSpread */) !== 0) {
213
+ element &= ~8192 /* SubtreeFacts.ContainsRestOrSpread */;
214
+ if (object)
215
+ element |= 16384 /* SubtreeFacts.ContainsObjectRestOrSpread */ | 128 /* SubtreeFacts.ContainsESObjectRestOrSpread */;
216
+ }
217
+ facts |= element;
218
+ }
219
+ return facts;
220
+ }
221
+ binaryFacts(node) {
222
+ const operator = node.operatorToken.kind;
223
+ if (operator === 102 /* SyntaxKind.InKeyword */ && node.left.kind === 80 /* SyntaxKind.PrivateIdentifier */)
224
+ return 131072 /* SubtreeFacts.ContainsClassFields */ | 1048576 /* SubtreeFacts.ContainsPrivateIdentifierInExpression */;
225
+ if (operator === 63 /* SyntaxKind.EqualsToken */ &&
226
+ (node.left.kind === 211 /* SyntaxKind.ObjectLiteralExpression */ || node.left.kind === 210 /* SyntaxKind.ArrayLiteralExpression */) &&
227
+ this.containsObjectRestOrSpread(node.left))
228
+ return 16384 /* SubtreeFacts.ContainsObjectRestOrSpread */;
229
+ return 0 /* SubtreeFacts.None */;
230
+ }
231
+ /** Whether a pattern has an object rest element, at any depth of nested assignment patterns. */
232
+ containsObjectRestOrSpread(node) {
233
+ const facts = this.of(node);
234
+ if ((facts & 16384 /* SubtreeFacts.ContainsObjectRestOrSpread */) !== 0)
235
+ return true;
236
+ if ((facts & 128 /* SubtreeFacts.ContainsESObjectRestOrSpread */) === 0)
237
+ return false;
238
+ // Nested spreads, as in `{ x: { a, ...b } = foo } = c`.
239
+ const elements = getElementsOfBindingOrAssignmentPattern(node);
240
+ for (const element of elements) {
241
+ const target = getTargetOfBindingOrAssignmentElement(element);
242
+ if (target !== undefined &&
243
+ (target.kind === 211 /* SyntaxKind.ObjectLiteralExpression */ || target.kind === 210 /* SyntaxKind.ArrayLiteralExpression */) &&
244
+ this.containsObjectRestOrSpread(target))
245
+ return true;
246
+ }
247
+ return false;
248
+ }
249
+ }
250
+ function invalidEscape(flags) {
251
+ return (flags & 2048 /* TokenFlags.ContainsInvalidEscape */) !== 0;
252
+ }
253
+ function asyncFacts(node, generator) {
254
+ const modifiers = getModifiers(node);
255
+ if (modifiers === undefined || (modifiers.modifierFlags & 1024 /* ModifierFlags.Async */) === 0)
256
+ return 0 /* SubtreeFacts.None */;
257
+ return generator ? 256 /* SubtreeFacts.ContainsForAwaitOrAsyncGenerator */ : 512 /* SubtreeFacts.ContainsAnyAwait */;
258
+ }
@@ -0,0 +1,17 @@
1
+ import { type Node } from '../ast.js';
2
+ import type { EmitContext } from '../printer/emit-context.js';
3
+ import { type SyntaxFacts } from './syntax-facts.js';
4
+ import { Transformer } from './transformer.js';
5
+ export declare class TaggedTemplateTransformer extends Transformer {
6
+ readonly facts: SyntaxFacts;
7
+ private file;
8
+ /** `templateObject` variables, declared at the end of a module. */
9
+ private declarations;
10
+ constructor(context: EmitContext, facts: SyntaxFacts);
11
+ visit(node: Node): Node | undefined;
12
+ private visitSourceFile;
13
+ private visitTaggedTemplate;
14
+ private cookedString;
15
+ /** The raw text of a template literal part, with line terminators normalized to `\n`. */
16
+ private rawString;
17
+ }