tsc-ts 0.0.4 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (584) hide show
  1. package/README.md +33 -1
  2. package/dist/api/compiler/ast-utilities.d.ts +82 -0
  3. package/dist/api/compiler/ast-utilities.js +462 -0
  4. package/dist/api/compiler/ast.d.ts +2350 -0
  5. package/dist/api/compiler/ast.js +11206 -0
  6. package/dist/api/compiler/astnav.d.ts +37 -0
  7. package/dist/api/compiler/astnav.js +767 -0
  8. package/dist/api/compiler/binder-utilities.d.ts +182 -0
  9. package/dist/api/compiler/binder-utilities.js +1240 -0
  10. package/dist/api/compiler/binder.d.ts +33 -0
  11. package/dist/api/compiler/binder.js +2358 -0
  12. package/dist/api/compiler/character-codes.d.ts +161 -0
  13. package/dist/api/compiler/character-codes.js +160 -0
  14. package/dist/api/compiler/checker-calls.d.ts +46 -0
  15. package/dist/api/compiler/checker-calls.js +1640 -0
  16. package/dist/api/compiler/checker-classes.d.ts +30 -0
  17. package/dist/api/compiler/checker-classes.js +582 -0
  18. package/dist/api/compiler/checker-contextual.d.ts +77 -0
  19. package/dist/api/compiler/checker-contextual.js +1136 -0
  20. package/dist/api/compiler/checker-declaration-order.d.ts +12 -0
  21. package/dist/api/compiler/checker-declaration-order.js +356 -0
  22. package/dist/api/compiler/checker-declarations.d.ts +33 -0
  23. package/dist/api/compiler/checker-declarations.js +888 -0
  24. package/dist/api/compiler/checker-declared-types.d.ts +48 -0
  25. package/dist/api/compiler/checker-declared-types.js +787 -0
  26. package/dist/api/compiler/checker-decorators.d.ts +26 -0
  27. package/dist/api/compiler/checker-decorators.js +562 -0
  28. package/dist/api/compiler/checker-deprecation.d.ts +33 -0
  29. package/dist/api/compiler/checker-deprecation.js +315 -0
  30. package/dist/api/compiler/checker-destructuring.d.ts +34 -0
  31. package/dist/api/compiler/checker-destructuring.js +584 -0
  32. package/dist/api/compiler/checker-elaboration.d.ts +15 -0
  33. package/dist/api/compiler/checker-elaboration.js +290 -0
  34. package/dist/api/compiler/checker-emit-helpers.d.ts +58 -0
  35. package/dist/api/compiler/checker-emit-helpers.js +154 -0
  36. package/dist/api/compiler/checker-emit-resolver.d.ts +75 -0
  37. package/dist/api/compiler/checker-emit-resolver.js +579 -0
  38. package/dist/api/compiler/checker-evaluator.d.ts +27 -0
  39. package/dist/api/compiler/checker-evaluator.js +188 -0
  40. package/dist/api/compiler/checker-expressions.d.ts +67 -0
  41. package/dist/api/compiler/checker-expressions.js +1351 -0
  42. package/dist/api/compiler/checker-features.d.ts +6 -0
  43. package/dist/api/compiler/checker-features.js +354 -0
  44. package/dist/api/compiler/checker-flow.d.ts +86 -0
  45. package/dist/api/compiler/checker-flow.js +169 -0
  46. package/dist/api/compiler/checker-functions.d.ts +43 -0
  47. package/dist/api/compiler/checker-functions.js +1002 -0
  48. package/dist/api/compiler/checker-generated-code.d.ts +25 -0
  49. package/dist/api/compiler/checker-generated-code.js +168 -0
  50. package/dist/api/compiler/checker-globals.d.ts +14 -0
  51. package/dist/api/compiler/checker-globals.js +37 -0
  52. package/dist/api/compiler/checker-grammar.d.ts +35 -0
  53. package/dist/api/compiler/checker-grammar.js +2573 -0
  54. package/dist/api/compiler/checker-heritage.d.ts +28 -0
  55. package/dist/api/compiler/checker-heritage.js +900 -0
  56. package/dist/api/compiler/checker-inference.d.ts +179 -0
  57. package/dist/api/compiler/checker-inference.js +2105 -0
  58. package/dist/api/compiler/checker-iteration.d.ts +115 -0
  59. package/dist/api/compiler/checker-iteration.js +857 -0
  60. package/dist/api/compiler/checker-javascript.d.ts +42 -0
  61. package/dist/api/compiler/checker-javascript.js +441 -0
  62. package/dist/api/compiler/checker-jsdoc.d.ts +30 -0
  63. package/dist/api/compiler/checker-jsdoc.js +320 -0
  64. package/dist/api/compiler/checker-jsx.d.ts +94 -0
  65. package/dist/api/compiler/checker-jsx.js +1433 -0
  66. package/dist/api/compiler/checker-literals.d.ts +6 -0
  67. package/dist/api/compiler/checker-literals.js +43 -0
  68. package/dist/api/compiler/checker-members.d.ts +198 -0
  69. package/dist/api/compiler/checker-members.js +2126 -0
  70. package/dist/api/compiler/checker-modules.d.ts +85 -0
  71. package/dist/api/compiler/checker-modules.js +2141 -0
  72. package/dist/api/compiler/checker-narrowing.d.ts +120 -0
  73. package/dist/api/compiler/checker-narrowing.js +2797 -0
  74. package/dist/api/compiler/checker-object-literals.d.ts +14 -0
  75. package/dist/api/compiler/checker-object-literals.js +479 -0
  76. package/dist/api/compiler/checker-operators.d.ts +33 -0
  77. package/dist/api/compiler/checker-operators.js +1040 -0
  78. package/dist/api/compiler/checker-overloads.d.ts +7 -0
  79. package/dist/api/compiler/checker-overloads.js +270 -0
  80. package/dist/api/compiler/checker-property-access.d.ts +34 -0
  81. package/dist/api/compiler/checker-property-access.js +672 -0
  82. package/dist/api/compiler/checker-services.d.ts +49 -0
  83. package/dist/api/compiler/checker-services.js +995 -0
  84. package/dist/api/compiler/checker-signatures.d.ts +55 -0
  85. package/dist/api/compiler/checker-signatures.js +788 -0
  86. package/dist/api/compiler/checker-source-file.d.ts +27 -0
  87. package/dist/api/compiler/checker-source-file.js +619 -0
  88. package/dist/api/compiler/checker-statements.d.ts +18 -0
  89. package/dist/api/compiler/checker-statements.js +226 -0
  90. package/dist/api/compiler/checker-super.d.ts +13 -0
  91. package/dist/api/compiler/checker-super.js +241 -0
  92. package/dist/api/compiler/checker-symbol-types.d.ts +67 -0
  93. package/dist/api/compiler/checker-symbol-types.js +1885 -0
  94. package/dist/api/compiler/checker-symbols.d.ts +181 -0
  95. package/dist/api/compiler/checker-symbols.js +1782 -0
  96. package/dist/api/compiler/checker-type-factory.d.ts +142 -0
  97. package/dist/api/compiler/checker-type-factory.js +2501 -0
  98. package/dist/api/compiler/checker-type-nodes.d.ts +26 -0
  99. package/dist/api/compiler/checker-type-nodes.js +828 -0
  100. package/dist/api/compiler/checker-type-operators.d.ts +109 -0
  101. package/dist/api/compiler/checker-type-operators.js +1842 -0
  102. package/dist/api/compiler/checker-types.d.ts +1027 -0
  103. package/dist/api/compiler/checker-types.js +1697 -0
  104. package/dist/api/compiler/checker-unused.d.ts +19 -0
  105. package/dist/api/compiler/checker-unused.js +524 -0
  106. package/dist/api/compiler/checker-utilities.d.ts +33 -0
  107. package/dist/api/compiler/checker-utilities.js +141 -0
  108. package/dist/api/compiler/checker.d.ts +491 -0
  109. package/dist/api/compiler/checker.js +912 -0
  110. package/dist/api/compiler/command-line.d.ts +32 -0
  111. package/dist/api/compiler/command-line.js +383 -0
  112. package/dist/api/compiler/compile-program.d.ts +118 -0
  113. package/dist/api/compiler/compile-program.js +384 -0
  114. package/dist/api/compiler/diagnostic-locales.d.ts +22 -0
  115. package/dist/api/compiler/diagnostic-locales.js +64 -0
  116. package/dist/api/compiler/diagnostic-messages.d.ts +2166 -0
  117. package/dist/api/compiler/diagnostic-messages.js +184 -0
  118. package/dist/api/compiler/diagnostics.d.ts +167 -0
  119. package/dist/api/compiler/diagnostics.js +820 -0
  120. package/dist/api/compiler/emitter.d.ts +71 -0
  121. package/dist/api/compiler/emitter.js +327 -0
  122. package/dist/api/compiler/file-include.d.ts +117 -0
  123. package/dist/api/compiler/file-include.js +536 -0
  124. package/dist/api/compiler/file-loader.d.ts +261 -0
  125. package/dist/api/compiler/file-loader.js +1257 -0
  126. package/dist/api/compiler/file-system.d.ts +51 -0
  127. package/dist/api/compiler/file-system.js +132 -0
  128. package/dist/api/compiler/flow.d.ts +60 -0
  129. package/dist/api/compiler/flow.js +45 -0
  130. package/dist/api/compiler/instantiation.d.ts +74 -0
  131. package/dist/api/compiler/instantiation.js +799 -0
  132. package/dist/api/compiler/jsdoc.d.ts +75 -0
  133. package/dist/api/compiler/jsdoc.js +1229 -0
  134. package/dist/api/compiler/link-tables.d.ts +36 -0
  135. package/dist/api/compiler/link-tables.js +83 -0
  136. package/dist/api/compiler/locale-data.d.ts +24 -0
  137. package/dist/api/compiler/locale-data.js +183 -0
  138. package/dist/api/compiler/locale.d.ts +4 -0
  139. package/dist/api/compiler/locale.js +317 -0
  140. package/dist/api/compiler/locales/cs-CZ.d.ts +2 -0
  141. package/dist/api/compiler/locales/cs-CZ.js +3 -0
  142. package/dist/api/compiler/locales/de-DE.d.ts +2 -0
  143. package/dist/api/compiler/locales/de-DE.js +3 -0
  144. package/dist/api/compiler/locales/es-ES.d.ts +2 -0
  145. package/dist/api/compiler/locales/es-ES.js +3 -0
  146. package/dist/api/compiler/locales/fr-FR.d.ts +2 -0
  147. package/dist/api/compiler/locales/fr-FR.js +3 -0
  148. package/dist/api/compiler/locales/it-IT.d.ts +2 -0
  149. package/dist/api/compiler/locales/it-IT.js +3 -0
  150. package/dist/api/compiler/locales/ja-JP.d.ts +2 -0
  151. package/dist/api/compiler/locales/ja-JP.js +3 -0
  152. package/dist/api/compiler/locales/ko-KR.d.ts +2 -0
  153. package/dist/api/compiler/locales/ko-KR.js +3 -0
  154. package/dist/api/compiler/locales/pl-PL.d.ts +2 -0
  155. package/dist/api/compiler/locales/pl-PL.js +3 -0
  156. package/dist/api/compiler/locales/pt-BR.d.ts +2 -0
  157. package/dist/api/compiler/locales/pt-BR.js +3 -0
  158. package/dist/api/compiler/locales/ru-RU.d.ts +2 -0
  159. package/dist/api/compiler/locales/ru-RU.js +3 -0
  160. package/dist/api/compiler/locales/tr-TR.d.ts +2 -0
  161. package/dist/api/compiler/locales/tr-TR.js +3 -0
  162. package/dist/api/compiler/locales/zh-CN.d.ts +2 -0
  163. package/dist/api/compiler/locales/zh-CN.js +3 -0
  164. package/dist/api/compiler/locales/zh-TW.d.ts +2 -0
  165. package/dist/api/compiler/locales/zh-TW.js +3 -0
  166. package/dist/api/compiler/module-resolution-types.d.ts +83 -0
  167. package/dist/api/compiler/module-resolution-types.js +176 -0
  168. package/dist/api/compiler/module-resolution.d.ts +71 -0
  169. package/dist/api/compiler/module-resolution.js +1598 -0
  170. package/dist/api/compiler/module-specifiers.d.ts +64 -0
  171. package/dist/api/compiler/module-specifiers.js +1101 -0
  172. package/dist/api/compiler/name-resolver.d.ts +43 -0
  173. package/dist/api/compiler/name-resolver.js +509 -0
  174. package/dist/api/compiler/node-builder-names.d.ts +32 -0
  175. package/dist/api/compiler/node-builder-names.js +854 -0
  176. package/dist/api/compiler/node-builder-pseudo.d.ts +36 -0
  177. package/dist/api/compiler/node-builder-pseudo.js +744 -0
  178. package/dist/api/compiler/node-builder-reuse.d.ts +4 -0
  179. package/dist/api/compiler/node-builder-reuse.js +647 -0
  180. package/dist/api/compiler/node-builder.d.ts +270 -0
  181. package/dist/api/compiler/node-builder.js +2645 -0
  182. package/dist/api/compiler/option-declarations.d.ts +90 -0
  183. package/dist/api/compiler/option-declarations.js +1460 -0
  184. package/dist/api/compiler/options.d.ts +289 -0
  185. package/dist/api/compiler/options.js +1197 -0
  186. package/dist/api/compiler/output-paths.d.ts +42 -0
  187. package/dist/api/compiler/output-paths.js +195 -0
  188. package/dist/api/compiler/package-json.d.ts +175 -0
  189. package/dist/api/compiler/package-json.js +1015 -0
  190. package/dist/api/compiler/parallel-parse.d.ts +219 -0
  191. package/dist/api/compiler/parallel-parse.js +537 -0
  192. package/dist/api/compiler/parser.d.ts +587 -0
  193. package/dist/api/compiler/parser.js +6407 -0
  194. package/dist/api/compiler/path.d.ts +91 -0
  195. package/dist/api/compiler/path.js +705 -0
  196. package/dist/api/compiler/printer/async-helpers.d.ts +22 -0
  197. package/dist/api/compiler/printer/async-helpers.js +91 -0
  198. package/dist/api/compiler/printer/auto-generate.d.ts +13 -0
  199. package/dist/api/compiler/printer/auto-generate.js +20 -0
  200. package/dist/api/compiler/printer/decorator-helpers.d.ts +24 -0
  201. package/dist/api/compiler/printer/decorator-helpers.js +118 -0
  202. package/dist/api/compiler/printer/emit-context.d.ts +154 -0
  203. package/dist/api/compiler/printer/emit-context.js +576 -0
  204. package/dist/api/compiler/printer/emit-flags.d.ts +60 -0
  205. package/dist/api/compiler/printer/emit-flags.js +2 -0
  206. package/dist/api/compiler/printer/factory-base.d.ts +171 -0
  207. package/dist/api/compiler/printer/factory-base.js +1505 -0
  208. package/dist/api/compiler/printer/factory.d.ts +147 -0
  209. package/dist/api/compiler/printer/factory.js +542 -0
  210. package/dist/api/compiler/printer/helpers.d.ts +27 -0
  211. package/dist/api/compiler/printer/helpers.js +164 -0
  212. package/dist/api/compiler/printer/name-generator.d.ts +41 -0
  213. package/dist/api/compiler/printer/name-generator.js +283 -0
  214. package/dist/api/compiler/printer/printer.d.ts +411 -0
  215. package/dist/api/compiler/printer/printer.js +4517 -0
  216. package/dist/api/compiler/printer/text-writer.d.ts +46 -0
  217. package/dist/api/compiler/printer/text-writer.js +172 -0
  218. package/dist/api/compiler/printer/utilities.d.ts +82 -0
  219. package/dist/api/compiler/printer/utilities.js +817 -0
  220. package/dist/api/compiler/program-checker.d.ts +156 -0
  221. package/dist/api/compiler/program-checker.js +526 -0
  222. package/dist/api/compiler/program-utilities.d.ts +52 -0
  223. package/dist/api/compiler/program-utilities.js +365 -0
  224. package/dist/api/compiler/program.d.ts +180 -0
  225. package/dist/api/compiler/program.js +1011 -0
  226. package/dist/api/compiler/pseudo-bigint.d.ts +5 -0
  227. package/dist/api/compiler/pseudo-bigint.js +61 -0
  228. package/dist/api/compiler/regexp-checker.d.ts +38 -0
  229. package/dist/api/compiler/regexp-checker.js +942 -0
  230. package/dist/api/compiler/relations.d.ts +263 -0
  231. package/dist/api/compiler/relations.js +4002 -0
  232. package/dist/api/compiler/reparser.d.ts +48 -0
  233. package/dist/api/compiler/reparser.js +1323 -0
  234. package/dist/api/compiler/scanner.d.ts +256 -0
  235. package/dist/api/compiler/scanner.js +2853 -0
  236. package/dist/api/compiler/side-state.d.ts +16 -0
  237. package/dist/api/compiler/side-state.js +89 -0
  238. package/dist/api/compiler/sourcemap.d.ts +55 -0
  239. package/dist/api/compiler/sourcemap.js +340 -0
  240. package/dist/api/compiler/spelling.d.ts +14 -0
  241. package/dist/api/compiler/spelling.js +128 -0
  242. package/dist/api/compiler/symbol-accessibility.d.ts +57 -0
  243. package/dist/api/compiler/symbol-accessibility.js +894 -0
  244. package/dist/api/compiler/symbol.d.ts +240 -0
  245. package/dist/api/compiler/symbol.js +228 -0
  246. package/dist/api/compiler/symlinks.d.ts +32 -0
  247. package/dist/api/compiler/symlinks.js +114 -0
  248. package/dist/api/compiler/syntax-kind.d.ts +389 -0
  249. package/dist/api/compiler/syntax-kind.js +2 -0
  250. package/dist/api/compiler/timeline.d.ts +9 -0
  251. package/dist/api/compiler/timeline.js +54 -0
  252. package/dist/api/compiler/transformers/alias-references.d.ts +39 -0
  253. package/dist/api/compiler/transformers/alias-references.js +676 -0
  254. package/dist/api/compiler/transformers/async-utilities.d.ts +51 -0
  255. package/dist/api/compiler/transformers/async-utilities.js +260 -0
  256. package/dist/api/compiler/transformers/async.d.ts +53 -0
  257. package/dist/api/compiler/transformers/async.js +645 -0
  258. package/dist/api/compiler/transformers/class-fields.d.ts +206 -0
  259. package/dist/api/compiler/transformers/class-fields.js +2418 -0
  260. package/dist/api/compiler/transformers/class-utilities.d.ts +46 -0
  261. package/dist/api/compiler/transformers/class-utilities.js +261 -0
  262. package/dist/api/compiler/transformers/commonjs-module.d.ts +103 -0
  263. package/dist/api/compiler/transformers/commonjs-module.js +1180 -0
  264. package/dist/api/compiler/transformers/const-enum-inliner.d.ts +11 -0
  265. package/dist/api/compiler/transformers/const-enum-inliner.js +36 -0
  266. package/dist/api/compiler/transformers/declarations-diagnostics.d.ts +52 -0
  267. package/dist/api/compiler/transformers/declarations-diagnostics.js +538 -0
  268. package/dist/api/compiler/transformers/declarations-pseudo.d.ts +160 -0
  269. package/dist/api/compiler/transformers/declarations-pseudo.js +797 -0
  270. package/dist/api/compiler/transformers/declarations-resolver.d.ts +152 -0
  271. package/dist/api/compiler/transformers/declarations-resolver.js +35 -0
  272. package/dist/api/compiler/transformers/declarations-syntactic.d.ts +119 -0
  273. package/dist/api/compiler/transformers/declarations-syntactic.js +1582 -0
  274. package/dist/api/compiler/transformers/declarations-tracker.d.ts +46 -0
  275. package/dist/api/compiler/transformers/declarations-tracker.js +197 -0
  276. package/dist/api/compiler/transformers/declarations.d.ts +175 -0
  277. package/dist/api/compiler/transformers/declarations.js +2380 -0
  278. package/dist/api/compiler/transformers/decorator-metadata.d.ts +54 -0
  279. package/dist/api/compiler/transformers/decorator-metadata.js +554 -0
  280. package/dist/api/compiler/transformers/decorator-utilities.d.ts +38 -0
  281. package/dist/api/compiler/transformers/decorator-utilities.js +238 -0
  282. package/dist/api/compiler/transformers/destructuring.d.ts +25 -0
  283. package/dist/api/compiler/transformers/destructuring.js +626 -0
  284. package/dist/api/compiler/transformers/downlevel.d.ts +6 -0
  285. package/dist/api/compiler/transformers/downlevel.js +45 -0
  286. package/dist/api/compiler/transformers/emit-resolver.d.ts +61 -0
  287. package/dist/api/compiler/transformers/emit-resolver.js +197 -0
  288. package/dist/api/compiler/transformers/es-decorators.d.ts +118 -0
  289. package/dist/api/compiler/transformers/es-decorators.js +1901 -0
  290. package/dist/api/compiler/transformers/exponentiation.d.ts +11 -0
  291. package/dist/api/compiler/transformers/exponentiation.js +76 -0
  292. package/dist/api/compiler/transformers/external-module-info.d.ts +35 -0
  293. package/dist/api/compiler/transformers/external-module-info.js +351 -0
  294. package/dist/api/compiler/transformers/for-await.d.ts +43 -0
  295. package/dist/api/compiler/transformers/for-await.js +469 -0
  296. package/dist/api/compiler/transformers/import-elision.d.ts +16 -0
  297. package/dist/api/compiler/transformers/import-elision.js +124 -0
  298. package/dist/api/compiler/transformers/jsx-entities.d.ts +1 -0
  299. package/dist/api/compiler/transformers/jsx-entities.js +256 -0
  300. package/dist/api/compiler/transformers/jsx.d.ts +71 -0
  301. package/dist/api/compiler/transformers/jsx.js +700 -0
  302. package/dist/api/compiler/transformers/legacy-decorators.d.ts +56 -0
  303. package/dist/api/compiler/transformers/legacy-decorators.js +564 -0
  304. package/dist/api/compiler/transformers/logical-assignment.d.ts +14 -0
  305. package/dist/api/compiler/transformers/logical-assignment.js +62 -0
  306. package/dist/api/compiler/transformers/module-utilities.d.ts +9 -0
  307. package/dist/api/compiler/transformers/module-utilities.js +36 -0
  308. package/dist/api/compiler/transformers/module.d.ts +49 -0
  309. package/dist/api/compiler/transformers/module.js +296 -0
  310. package/dist/api/compiler/transformers/named-evaluation.d.ts +26 -0
  311. package/dist/api/compiler/transformers/named-evaluation.js +266 -0
  312. package/dist/api/compiler/transformers/nullish-coalescing.d.ts +9 -0
  313. package/dist/api/compiler/transformers/nullish-coalescing.js +26 -0
  314. package/dist/api/compiler/transformers/object-rest-spread.d.ts +34 -0
  315. package/dist/api/compiler/transformers/object-rest-spread.js +411 -0
  316. package/dist/api/compiler/transformers/optional-catch.d.ts +9 -0
  317. package/dist/api/compiler/transformers/optional-catch.js +20 -0
  318. package/dist/api/compiler/transformers/optional-chain.d.ts +14 -0
  319. package/dist/api/compiler/transformers/optional-chain.js +188 -0
  320. package/dist/api/compiler/transformers/reference-resolver.d.ts +128 -0
  321. package/dist/api/compiler/transformers/reference-resolver.js +1155 -0
  322. package/dist/api/compiler/transformers/runtime-syntax.d.ts +71 -0
  323. package/dist/api/compiler/transformers/runtime-syntax.js +753 -0
  324. package/dist/api/compiler/transformers/subtree-facts.d.ts +9 -0
  325. package/dist/api/compiler/transformers/subtree-facts.js +203 -0
  326. package/dist/api/compiler/transformers/syntax-facts.d.ts +51 -0
  327. package/dist/api/compiler/transformers/syntax-facts.js +254 -0
  328. package/dist/api/compiler/transformers/tagged-template.d.ts +17 -0
  329. package/dist/api/compiler/transformers/tagged-template.js +148 -0
  330. package/dist/api/compiler/transformers/transformer.d.ts +17 -0
  331. package/dist/api/compiler/transformers/transformer.js +54 -0
  332. package/dist/api/compiler/transformers/type-eraser.d.ts +21 -0
  333. package/dist/api/compiler/transformers/type-eraser.js +346 -0
  334. package/dist/api/compiler/transformers/type-serialization.d.ts +20 -0
  335. package/dist/api/compiler/transformers/type-serialization.js +347 -0
  336. package/dist/api/compiler/transformers/using.d.ts +56 -0
  337. package/dist/api/compiler/transformers/using.js +453 -0
  338. package/dist/api/compiler/transformers/utilities.d.ts +50 -0
  339. package/dist/api/compiler/transformers/utilities.js +347 -0
  340. package/dist/api/compiler/transformers/visitor-base.d.ts +6 -0
  341. package/dist/api/compiler/transformers/visitor-base.js +817 -0
  342. package/dist/api/compiler/transformers/visitor-hooks.d.ts +29 -0
  343. package/dist/api/compiler/transformers/visitor-hooks.js +189 -0
  344. package/dist/api/compiler/tsconfig.d.ts +177 -0
  345. package/dist/api/compiler/tsconfig.js +1311 -0
  346. package/dist/api/compiler/type-printer.d.ts +15 -0
  347. package/dist/api/compiler/type-printer.js +74 -0
  348. package/dist/api/compiler/types.d.ts +87 -0
  349. package/dist/api/compiler/types.js +23 -0
  350. package/dist/api/compiler/unicode-identifiers.d.ts +2 -0
  351. package/dist/api/compiler/unicode-identifiers.js +209 -0
  352. package/dist/api/compiler/unicode-properties.d.ts +8 -0
  353. package/dist/api/compiler/unicode-properties.js +531 -0
  354. package/dist/api/compiler/vfs-match.d.ts +24 -0
  355. package/dist/api/compiler/vfs-match.js +587 -0
  356. package/dist/api/library/ast.d.ts +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 +12862 -0
  382. package/src/compiler/astnav.ts +799 -0
  383. package/src/compiler/binder-utilities.ts +1392 -0
  384. package/src/compiler/binder.ts +2703 -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 +1194 -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 +359 -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 +3584 -0
  407. package/src/compiler/checker-heritage.ts +1233 -0
  408. package/src/compiler/checker-inference.ts +2576 -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 +1924 -0
  413. package/src/compiler/checker-literals.ts +61 -0
  414. package/src/compiler/checker-members.ts +2436 -0
  415. package/src/compiler/checker-modules.ts +2886 -0
  416. package/src/compiler/checker-narrowing.ts +3230 -0
  417. package/src/compiler/checker-object-literals.ts +575 -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 +2107 -0
  427. package/src/compiler/checker-symbols.ts +2150 -0
  428. package/src/compiler/checker-type-factory.ts +2579 -0
  429. package/src/compiler/checker-type-nodes.ts +1033 -0
  430. package/src/compiler/checker-type-operators.ts +2502 -0
  431. package/src/compiler/checker-types.ts +2340 -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 +1116 -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 +897 -0
  441. package/src/compiler/emitter.ts +434 -0
  442. package/src/compiler/encoder.ts +1945 -0
  443. package/src/compiler/file-include.ts +673 -0
  444. package/src/compiler/file-loader.ts +1528 -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 +2784 -0
  449. package/src/compiler/init.ts +141 -0
  450. package/src/compiler/instantiation.ts +894 -0
  451. package/src/compiler/jsdoc.ts +1386 -0
  452. package/src/compiler/link-tables.ts +98 -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 +1069 -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 +3425 -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 +1951 -0
  481. package/src/compiler/parallel-parse.ts +590 -0
  482. package/src/compiler/parse-thread.ts +140 -0
  483. package/src/compiler/parser.ts +7716 -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 +679 -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 +592 -0
  498. package/src/compiler/program-utilities.ts +435 -0
  499. package/src/compiler/program.ts +1419 -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 +1071 -0
  510. package/src/compiler/symbol.ts +439 -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 +832 -0
  523. package/src/compiler/transformers/declarations-pseudo.ts +966 -0
  524. package/src/compiler/transformers/declarations-resolver.ts +249 -0
  525. package/src/compiler/transformers/declarations-syntactic.ts +1859 -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 +1201 -0
  550. package/src/compiler/transformers/runtime-syntax.ts +942 -0
  551. package/src/compiler/transformers/subtree-facts.ts +245 -0
  552. package/src/compiler/transformers/syntax-facts.ts +353 -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 +1418 -0
  562. package/src/compiler/tsc-cli.ts +666 -0
  563. package/src/compiler/tsc-compile.ts +437 -0
  564. package/src/compiler/tsc-watch.ts +854 -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,148 @@
1
+ // Lowers tagged templates with invalid escapes, allowed in tagged templates since ES2018, to
2
+ // calls with a `__makeTemplateObject` template object.
3
+ import { ArrayLiteralExpression, CallExpression, NoSubstitutionTemplateLiteral, SourceFile, TaggedTemplateExpression, TemplateExpression, TemplateMiddle, TemplateTail, } from '../ast.js';
4
+ import { getSourceTextOfNode } from '../printer/utilities.js';
5
+ import { Transformer } from './transformer.js';
6
+ import { isExternalModule } from './utilities.js';
7
+ export class TaggedTemplateTransformer extends Transformer {
8
+ facts;
9
+ file;
10
+ /** `templateObject` variables, declared at the end of a module. */
11
+ declarations;
12
+ constructor(context, facts) {
13
+ super(context);
14
+ this.facts = facts;
15
+ this.file = undefined;
16
+ this.declarations = [];
17
+ }
18
+ visit(node) {
19
+ if (!this.facts.has(node, 2097152 /* SubtreeFacts.ContainsInvalidTemplateEscape */))
20
+ return node;
21
+ if (node instanceof SourceFile)
22
+ return this.visitSourceFile(node);
23
+ if (node instanceof TaggedTemplateExpression)
24
+ return this.visitTaggedTemplate(node);
25
+ return this.visitEachChild(node);
26
+ }
27
+ visitSourceFile(node) {
28
+ const factory = this.factory;
29
+ this.file = node;
30
+ this.declarations = [];
31
+ let visited = this.visitEachChild(node);
32
+ if (this.declarations.length > 0) {
33
+ const statements = visited.statements.nodes.slice();
34
+ statements.push(factory.createVariableStatement(undefined, factory.createVariableDeclarationList(factory.createNodeList(this.declarations), 0 /* NodeFlags.None */)));
35
+ const list = factory.createNodeList(statements);
36
+ list.pos = node.statements.pos;
37
+ list.end = node.statements.end;
38
+ visited = factory.updateSourceFile(visited, list, visited.endOfFileToken);
39
+ }
40
+ const helpers = this.context.readEmitHelpers();
41
+ for (let i = 0; i < helpers.length; i++)
42
+ this.context.addEmitHelper(visited, helpers[i]);
43
+ return visited;
44
+ }
45
+ visitTaggedTemplate(node) {
46
+ const factory = this.factory;
47
+ const tag = this.visitNode(node.tag);
48
+ const template = node.template;
49
+ if (!hasInvalidEscape(template))
50
+ return this.visitEachChild(node);
51
+ const args = [];
52
+ const cooked = [];
53
+ const raw = [];
54
+ if (template instanceof NoSubstitutionTemplateLiteral) {
55
+ cooked.push(this.cookedString(template.text, template.templateFlags));
56
+ raw.push(this.rawString(template, ''));
57
+ }
58
+ else if (template instanceof TemplateExpression) {
59
+ const head = template.head;
60
+ cooked.push(this.cookedString(head.text, head.templateFlags));
61
+ raw.push(this.rawString(head, head.rawText));
62
+ const spans = template.templateSpans.nodes;
63
+ for (let i = 0; i < spans.length; i++) {
64
+ const span = spans[i];
65
+ const literal = span.literal;
66
+ if (literal instanceof TemplateMiddle) {
67
+ cooked.push(this.cookedString(literal.text, literal.templateFlags));
68
+ raw.push(this.rawString(literal, literal.rawText));
69
+ }
70
+ else if (literal instanceof TemplateTail) {
71
+ cooked.push(this.cookedString(literal.text, literal.templateFlags));
72
+ raw.push(this.rawString(literal, literal.rawText));
73
+ }
74
+ args.push(this.visitNode(span.expression));
75
+ }
76
+ }
77
+ const helperCall = factory.createTemplateObjectHelper(factory.created(new ArrayLiteralExpression(factory.createNodeList(cooked), false)), factory.created(new ArrayLiteralExpression(factory.createNodeList(raw), false)));
78
+ // Modules cache the template object; scripts don't, as the variable could clash with other scripts.
79
+ let templateObject = helperCall;
80
+ if (this.file !== undefined && isExternalModule(this.file)) {
81
+ const name = factory.createUniqueName('templateObject', 0);
82
+ this.declarations.push(factory.createVariableDeclaration(name, undefined, undefined, undefined));
83
+ templateObject = factory.createLogicalOr(name, factory.createAssignment(name, helperCall));
84
+ }
85
+ args.unshift(templateObject);
86
+ const call = factory.created(new CallExpression(tag, undefined, undefined, factory.createNodeList(args), 0));
87
+ call.pos = node.pos;
88
+ call.end = node.end;
89
+ return call;
90
+ }
91
+ cookedString(text, flags) {
92
+ if ((flags & 26656 /* TokenFlags.IsInvalid */) !== 0)
93
+ return this.factory.createVoidZero();
94
+ return this.factory.createStringLiteral(text, 0 /* TokenFlags.None */);
95
+ }
96
+ /** The raw text of a template literal part, with line terminators normalized to `\n`. */
97
+ rawString(node, rawText) {
98
+ let text = rawText;
99
+ if (text === '' && this.file !== undefined) {
100
+ // The source text includes the delimiters: "`" or "}" before and "`" or "${" after.
101
+ text = getSourceTextOfNode(this.file.text, node);
102
+ const last = node.kind === 14 /* SyntaxKind.NoSubstitutionTemplateLiteral */ || node.kind === 17 /* SyntaxKind.TemplateTail */;
103
+ text = text.slice(1, text.length - (last ? 1 : 2));
104
+ }
105
+ const literal = this.factory.createStringLiteral(normalizeLineTerminators(text), 0 /* TokenFlags.None */);
106
+ literal.pos = node.pos;
107
+ literal.end = node.end;
108
+ return literal;
109
+ }
110
+ }
111
+ function hasInvalidEscape(template) {
112
+ if (template instanceof NoSubstitutionTemplateLiteral)
113
+ return invalid(template.templateFlags);
114
+ if (!(template instanceof TemplateExpression))
115
+ return false;
116
+ const head = template.head;
117
+ if (invalid(head.templateFlags))
118
+ return true;
119
+ const spans = template.templateSpans.nodes;
120
+ for (let i = 0; i < spans.length; i++) {
121
+ const literal = spans[i].literal;
122
+ if (literal instanceof TemplateMiddle && invalid(literal.templateFlags))
123
+ return true;
124
+ if (literal instanceof TemplateTail && invalid(literal.templateFlags))
125
+ return true;
126
+ }
127
+ return false;
128
+ }
129
+ function invalid(flags) {
130
+ return (flags & 2048 /* TokenFlags.ContainsInvalidEscape */) !== 0;
131
+ }
132
+ /** `\r\n` and `\r` as `\n`, as template values and raw values are (ES2015 11.8.6.1). */
133
+ function normalizeLineTerminators(text) {
134
+ if (text.indexOf('\r') < 0)
135
+ return text;
136
+ let result = '';
137
+ for (let i = 0; i < text.length; i++) {
138
+ const ch = text.charAt(i);
139
+ if (ch !== '\r')
140
+ result += ch;
141
+ else {
142
+ result += '\n';
143
+ if (i + 1 < text.length && text.charAt(i + 1) === '\n')
144
+ i++;
145
+ }
146
+ }
147
+ return result;
148
+ }
@@ -0,0 +1,17 @@
1
+ import { ModifierList, type Node, SourceFile } from '../ast.js';
2
+ import type { ModifierFlags } from '../ast.js';
3
+ import type { EmitContext } from '../printer/emit-context.js';
4
+ import { NotEmittedStatement } from '../ast.js';
5
+ import { VisitorBase } from './visitor-base.js';
6
+ export declare abstract class Transformer extends VisitorBase {
7
+ /** What this transform couldn't handle in the last file, or `''`. */
8
+ unsupported: string;
9
+ constructor(context: EmitContext);
10
+ /** Records syntax this transform doesn't implement yet; emit of the file is skipped. */
11
+ unsupportedNode(node: Node, what: string): Node;
12
+ transformSourceFile(file: SourceFile): SourceFile;
13
+ /** A statement that prints nothing but keeps the comments of `node`. */
14
+ notEmitted(node: Node): NotEmittedStatement;
15
+ /** The modifiers of `modifiers` whose flags are in `allowed`. */
16
+ extractModifiers(modifiers: ModifierList | undefined, allowed: ModifierFlags): ModifierList | undefined;
17
+ }
@@ -0,0 +1,54 @@
1
+ // The base of every transform: a visitor over one source file at a time.
2
+ import { SourceFile } from '../ast.js';
3
+ import { modifierToFlag } from '../ast-utilities.js';
4
+ import { NotEmittedStatement } from '../ast.js';
5
+ import { VisitorBase } from './visitor-base.js';
6
+ export class Transformer extends VisitorBase {
7
+ /** What this transform couldn't handle in the last file, or `''`. */
8
+ unsupported;
9
+ constructor(context) {
10
+ super(context);
11
+ this.unsupported = '';
12
+ }
13
+ /** Records syntax this transform doesn't implement yet; emit of the file is skipped. */
14
+ unsupportedNode(node, what) {
15
+ if (this.unsupported === '')
16
+ this.unsupported = what + ' are not supported yet';
17
+ return node;
18
+ }
19
+ transformSourceFile(file) {
20
+ const visited = this.visitNode(file);
21
+ if (visited instanceof SourceFile)
22
+ return visited;
23
+ throw new Error('A transform must return a source file');
24
+ }
25
+ /** A statement that prints nothing but keeps the comments of `node`. */
26
+ notEmitted(node) {
27
+ const statement = this.factory.created(new NotEmittedStatement());
28
+ statement.pos = node.pos;
29
+ statement.end = node.end;
30
+ this.context.setOriginal(statement, node);
31
+ this.context.assignCommentRange(statement, node);
32
+ return statement;
33
+ }
34
+ /** The modifiers of `modifiers` whose flags are in `allowed`. */
35
+ extractModifiers(modifiers, allowed) {
36
+ if (modifiers === undefined)
37
+ return undefined;
38
+ const nodes = modifiers.nodes;
39
+ let kept = undefined;
40
+ for (let i = 0; i < nodes.length; i++) {
41
+ const keep = (modifierToFlag(nodes[i].kind) & allowed) !== 0;
42
+ if (keep && kept !== undefined)
43
+ kept.push(nodes[i]);
44
+ else if (!keep && kept === undefined)
45
+ kept = nodes.slice(0, i);
46
+ }
47
+ if (kept === undefined)
48
+ return modifiers;
49
+ const list = this.factory.createModifierList(kept);
50
+ list.pos = modifiers.pos;
51
+ list.end = modifiers.end;
52
+ return list;
53
+ }
54
+ }
@@ -0,0 +1,21 @@
1
+ import { type Node } from '../ast.js';
2
+ import type { CompilerOptions } from '../options.js';
3
+ import type { EmitContext } from '../printer/emit-context.js';
4
+ import { type TypeScriptFacts } from './subtree-facts.js';
5
+ import { Transformer } from './transformer.js';
6
+ export declare class TypeEraser extends Transformer {
7
+ readonly options: CompilerOptions;
8
+ readonly facts: TypeScriptFacts;
9
+ private parentNode;
10
+ private currentNode;
11
+ constructor(context: EmitContext, options: CompilerOptions, facts: TypeScriptFacts);
12
+ visit(node: Node): Node | undefined;
13
+ private visitWorker;
14
+ private required;
15
+ private optionalIdentifier;
16
+ private jsxAttributes;
17
+ private importAttributes;
18
+ private accessorBody;
19
+ private partiallyEmitted;
20
+ private visitParameter;
21
+ }
@@ -0,0 +1,346 @@
1
+ // Removes TypeScript-only syntax: type annotations and declarations, `declare`d statements,
2
+ // type-only imports and exports, and modifiers such as `public` and `readonly`.
3
+ import { CallExpression, ClassDeclaration, ClassExpression, ConstructorDeclaration, ExportDeclaration, ExportSpecifier, ExpressionWithTypeArguments, FunctionDeclaration, FunctionExpression, GetAccessorDeclaration, HeritageClause, Identifier, ImportClause, ImportDeclaration, ImportAttributes, ImportEqualsDeclaration, ImportSpecifier, JsxAttributes, JsxOpeningElement, JsxSelfClosingElement, MethodDeclaration, ModuleDeclaration, NamedExports, NamedImports, NewExpression, ParameterDeclaration, ParenthesizedExpression, PartiallyEmittedExpression, PropertyDeclaration, SetAccessorDeclaration, TaggedTemplateExpression, VariableDeclaration, ArrowFunction, getExpression, } from '../ast.js';
4
+ import { nodeIsMissing } from '../ast-utilities.js';
5
+ import { shouldPreserveConstEnums } from '../options.js';
6
+ import { isStatement } from '../printer/utilities.js';
7
+ import { Transformer } from './transformer.js';
8
+ import { getInnermostModuleDeclaration, hasDecorators, hasSyntacticModifier, isInstantiatedModule, isJSDocTypeAssertion, isParameterPropertyDeclaration, isThisParameter, } from './utilities.js';
9
+ export class TypeEraser extends Transformer {
10
+ options;
11
+ facts;
12
+ parentNode;
13
+ currentNode;
14
+ constructor(context, options, facts) {
15
+ super(context);
16
+ this.options = options;
17
+ this.facts = facts;
18
+ this.parentNode = undefined;
19
+ this.currentNode = undefined;
20
+ }
21
+ visit(node) {
22
+ if (!this.facts.containsTypeScript(node))
23
+ return node;
24
+ if (isStatement(node) && hasSyntacticModifier(node, 128 /* ModifierFlags.Ambient */))
25
+ return this.notEmitted(node);
26
+ const grandparent = this.parentNode;
27
+ this.parentNode = this.currentNode;
28
+ this.currentNode = node;
29
+ const result = this.visitWorker(node);
30
+ this.currentNode = this.parentNode;
31
+ this.parentNode = grandparent;
32
+ return result;
33
+ }
34
+ visitWorker(node) {
35
+ const factory = this.factory;
36
+ switch (node.kind) {
37
+ case 124 /* SyntaxKind.PublicKeyword */:
38
+ case 122 /* SyntaxKind.PrivateKeyword */:
39
+ case 123 /* SyntaxKind.ProtectedKeyword */:
40
+ case 127 /* SyntaxKind.AbstractKeyword */:
41
+ case 164 /* SyntaxKind.OverrideKeyword */:
42
+ case 86 /* SyntaxKind.ConstKeyword */:
43
+ case 137 /* SyntaxKind.DeclareKeyword */:
44
+ case 148 /* SyntaxKind.ReadonlyKeyword */:
45
+ case 189 /* SyntaxKind.ArrayType */:
46
+ case 190 /* SyntaxKind.TupleType */:
47
+ case 191 /* SyntaxKind.OptionalType */:
48
+ case 192 /* SyntaxKind.RestType */:
49
+ case 188 /* SyntaxKind.TypeLiteral */:
50
+ case 183 /* SyntaxKind.TypePredicate */:
51
+ case 169 /* SyntaxKind.TypeParameter */:
52
+ case 132 /* SyntaxKind.AnyKeyword */:
53
+ case 159 /* SyntaxKind.UnknownKeyword */:
54
+ case 135 /* SyntaxKind.BooleanKeyword */:
55
+ case 154 /* SyntaxKind.StringKeyword */:
56
+ case 150 /* SyntaxKind.NumberKeyword */:
57
+ case 146 /* SyntaxKind.NeverKeyword */:
58
+ case 115 /* SyntaxKind.VoidKeyword */:
59
+ case 155 /* SyntaxKind.SymbolKeyword */:
60
+ case 186 /* SyntaxKind.ConstructorType */:
61
+ case 185 /* SyntaxKind.FunctionType */:
62
+ case 187 /* SyntaxKind.TypeQuery */:
63
+ case 184 /* SyntaxKind.TypeReference */:
64
+ case 193 /* SyntaxKind.UnionType */:
65
+ case 194 /* SyntaxKind.IntersectionType */:
66
+ case 195 /* SyntaxKind.ConditionalType */:
67
+ case 197 /* SyntaxKind.ParenthesizedType */:
68
+ case 198 /* SyntaxKind.ThisType */:
69
+ case 199 /* SyntaxKind.TypeOperator */:
70
+ case 200 /* SyntaxKind.IndexedAccessType */:
71
+ case 201 /* SyntaxKind.MappedType */:
72
+ case 202 /* SyntaxKind.LiteralType */:
73
+ case 182 /* SyntaxKind.IndexSignature */:
74
+ case 346 /* SyntaxKind.JSImportDeclaration */:
75
+ case 271 /* SyntaxKind.NamespaceExportDeclaration */:
76
+ return undefined;
77
+ case 102 /* SyntaxKind.InKeyword */:
78
+ case 147 /* SyntaxKind.OutKeyword */:
79
+ if (this.parentNode === undefined || this.parentNode.kind !== 227 /* SyntaxKind.BinaryExpression */)
80
+ return undefined;
81
+ return this.visitEachChild(node);
82
+ case 266 /* SyntaxKind.TypeAliasDeclaration */:
83
+ case 345 /* SyntaxKind.JSTypeAliasDeclaration */:
84
+ case 265 /* SyntaxKind.InterfaceDeclaration */:
85
+ return this.notEmitted(node);
86
+ case 268 /* SyntaxKind.ModuleDeclaration */:
87
+ if (node instanceof ModuleDeclaration) {
88
+ if (!(node.name instanceof Identifier) ||
89
+ !isInstantiatedModule(node, shouldPreserveConstEnums(this.options)) ||
90
+ getInnermostModuleDeclaration(node).body === undefined)
91
+ return this.notEmitted(node);
92
+ return this.visitEachChild(node);
93
+ }
94
+ break;
95
+ case 234 /* SyntaxKind.ExpressionWithTypeArguments */:
96
+ if (node instanceof ExpressionWithTypeArguments)
97
+ return factory.updateExpressionWithTypeArguments(node, this.required(node.expression), undefined);
98
+ break;
99
+ case 173 /* SyntaxKind.PropertyDeclaration */:
100
+ if (node instanceof PropertyDeclaration) {
101
+ const ambientOrAbstract = hasSyntacticModifier(node, 128 /* ModifierFlags.Ambient */ | 64 /* ModifierFlags.Abstract */);
102
+ if (ambientOrAbstract && !(this.options.experimentalDecorators === true && hasDecorators(node)))
103
+ return undefined;
104
+ return factory.updatePropertyDeclaration(node, this.visitModifiers(node.modifiers), this.required(node.name), undefined, undefined, this.visitNode(node.initializer));
105
+ }
106
+ break;
107
+ case 177 /* SyntaxKind.Constructor */:
108
+ if (node instanceof ConstructorDeclaration) {
109
+ if (nodeIsMissing(node.body))
110
+ return undefined;
111
+ return factory.updateConstructorDeclaration(node, undefined, undefined, this.visitNodes(node.parameters), undefined, undefined, this.visitNode(node.body));
112
+ }
113
+ break;
114
+ case 175 /* SyntaxKind.MethodDeclaration */:
115
+ if (node instanceof MethodDeclaration) {
116
+ if (nodeIsMissing(node.body))
117
+ return undefined;
118
+ return factory.updateMethodDeclaration(node, this.visitModifiers(node.modifiers), node.asteriskToken, this.required(node.name), undefined, undefined, this.visitNodes(node.parameters), undefined, undefined, this.visitNode(node.body));
119
+ }
120
+ break;
121
+ case 178 /* SyntaxKind.GetAccessor */:
122
+ if (node instanceof GetAccessorDeclaration) {
123
+ if (nodeIsMissing(node.body) && hasSyntacticModifier(node, 64 /* ModifierFlags.Abstract */))
124
+ return undefined;
125
+ return factory.updateGetAccessorDeclaration(node, this.visitModifiers(node.modifiers), this.required(node.name), undefined, this.visitNodes(node.parameters), undefined, undefined, this.accessorBody(node.body));
126
+ }
127
+ break;
128
+ case 179 /* SyntaxKind.SetAccessor */:
129
+ if (node instanceof SetAccessorDeclaration) {
130
+ if (nodeIsMissing(node.body) && hasSyntacticModifier(node, 64 /* ModifierFlags.Abstract */))
131
+ return undefined;
132
+ return factory.updateSetAccessorDeclaration(node, this.visitModifiers(node.modifiers), this.required(node.name), undefined, this.visitNodes(node.parameters), undefined, undefined, this.accessorBody(node.body));
133
+ }
134
+ break;
135
+ case 261 /* SyntaxKind.VariableDeclaration */:
136
+ if (node instanceof VariableDeclaration) {
137
+ const updated = factory.updateVariableDeclaration(node, this.required(node.name), undefined, undefined, this.visitNode(node.initializer));
138
+ if (node.type !== undefined)
139
+ this.context.setTypeNode(updated.name, node.type);
140
+ return updated;
141
+ }
142
+ break;
143
+ case 299 /* SyntaxKind.HeritageClause */:
144
+ if (node instanceof HeritageClause) {
145
+ if (node.token === 118 /* SyntaxKind.ImplementsKeyword */)
146
+ return undefined;
147
+ return factory.updateHeritageClause(node, node.token, this.visitNodes(node.types));
148
+ }
149
+ break;
150
+ case 264 /* SyntaxKind.ClassDeclaration */:
151
+ if (node instanceof ClassDeclaration)
152
+ return factory.updateClassDeclaration(node, this.visitModifiers(node.modifiers), this.optionalIdentifier(node.name), undefined, this.visitNodes(node.heritageClauses), this.visitNodes(node.members));
153
+ break;
154
+ case 232 /* SyntaxKind.ClassExpression */:
155
+ if (node instanceof ClassExpression)
156
+ return factory.updateClassExpression(node, this.visitModifiers(node.modifiers), this.optionalIdentifier(node.name), undefined, this.visitNodes(node.heritageClauses), this.visitNodes(node.members));
157
+ break;
158
+ case 263 /* SyntaxKind.FunctionDeclaration */:
159
+ if (node instanceof FunctionDeclaration) {
160
+ if (nodeIsMissing(node.body))
161
+ return this.notEmitted(node);
162
+ return factory.updateFunctionDeclaration(node, this.visitModifiers(node.modifiers), node.asteriskToken, this.optionalIdentifier(node.name), undefined, this.visitNodes(node.parameters), undefined, undefined, this.visitNode(node.body));
163
+ }
164
+ break;
165
+ case 219 /* SyntaxKind.FunctionExpression */:
166
+ if (node instanceof FunctionExpression)
167
+ return factory.updateFunctionExpression(node, this.visitModifiers(node.modifiers), node.asteriskToken, this.optionalIdentifier(node.name), undefined, this.visitNodes(node.parameters), undefined, undefined, this.required(node.body));
168
+ break;
169
+ case 220 /* SyntaxKind.ArrowFunction */:
170
+ if (node instanceof ArrowFunction)
171
+ return factory.updateArrowFunction(node, this.visitModifiers(node.modifiers), undefined, this.visitNodes(node.parameters), undefined, undefined, node.equalsGreaterThanToken, this.required(node.body));
172
+ break;
173
+ case 170 /* SyntaxKind.Parameter */:
174
+ if (node instanceof ParameterDeclaration)
175
+ return this.visitParameter(node);
176
+ break;
177
+ case 214 /* SyntaxKind.CallExpression */:
178
+ if (node instanceof CallExpression)
179
+ return factory.updateCallExpression(node, this.required(node.expression), node.questionDotToken, undefined, this.visitNodes(node.arguments), node.flags);
180
+ break;
181
+ case 215 /* SyntaxKind.NewExpression */:
182
+ if (node instanceof NewExpression)
183
+ return factory.updateNewExpression(node, this.required(node.expression), undefined, this.visitNodes(node.arguments));
184
+ break;
185
+ case 216 /* SyntaxKind.TaggedTemplateExpression */:
186
+ if (node instanceof TaggedTemplateExpression)
187
+ return factory.updateTaggedTemplateExpression(node, this.required(node.tag), node.questionDotToken, undefined, this.required(node.template), node.flags);
188
+ break;
189
+ case 236 /* SyntaxKind.NonNullExpression */:
190
+ case 217 /* SyntaxKind.TypeAssertionExpression */:
191
+ case 235 /* SyntaxKind.AsExpression */:
192
+ case 239 /* SyntaxKind.SatisfiesExpression */:
193
+ return this.partiallyEmitted(node, getExpression(node));
194
+ case 218 /* SyntaxKind.ParenthesizedExpression */:
195
+ if (node instanceof ParenthesizedExpression && !isJSDocTypeAssertion(node)) {
196
+ const inner = skipParenthesesAndPartiallyEmitted(node.expression);
197
+ if (inner.kind === 217 /* SyntaxKind.TypeAssertionExpression */ ||
198
+ inner.kind === 235 /* SyntaxKind.AsExpression */ ||
199
+ inner.kind === 239 /* SyntaxKind.SatisfiesExpression */)
200
+ return this.partiallyEmitted(node, node.expression);
201
+ }
202
+ return this.visitEachChild(node);
203
+ case 286 /* SyntaxKind.JsxSelfClosingElement */:
204
+ if (node instanceof JsxSelfClosingElement)
205
+ return factory.updateJsxSelfClosingElement(node, this.required(node.tagName), undefined, this.jsxAttributes(node.attributes));
206
+ break;
207
+ case 287 /* SyntaxKind.JsxOpeningElement */:
208
+ if (node instanceof JsxOpeningElement)
209
+ return factory.updateJsxOpeningElement(node, this.required(node.tagName), undefined, this.jsxAttributes(node.attributes));
210
+ break;
211
+ case 272 /* SyntaxKind.ImportEqualsDeclaration */:
212
+ if (node instanceof ImportEqualsDeclaration && node.isTypeOnly)
213
+ return undefined;
214
+ return this.visitEachChild(node);
215
+ case 273 /* SyntaxKind.ImportDeclaration */:
216
+ if (node instanceof ImportDeclaration) {
217
+ if (node.importClause === undefined)
218
+ return node;
219
+ const clause = this.visitNode(node.importClause);
220
+ if (!(clause instanceof ImportClause))
221
+ return undefined;
222
+ return factory.updateImportDeclaration(node, node.modifiers, clause, node.moduleSpecifier, node.attributes);
223
+ }
224
+ break;
225
+ case 274 /* SyntaxKind.ImportClause */:
226
+ if (node instanceof ImportClause) {
227
+ if (node.phaseModifier === 156 /* SyntaxKind.TypeKeyword */)
228
+ return undefined;
229
+ const bindings = this.visitNode(node.namedBindings);
230
+ if (node.name === undefined && bindings === undefined)
231
+ return undefined;
232
+ return factory.updateImportClause(node, node.phaseModifier, node.name, bindings);
233
+ }
234
+ break;
235
+ case 276 /* SyntaxKind.NamedImports */:
236
+ if (node instanceof NamedImports) {
237
+ if (node.elements.nodes.length === 0)
238
+ return node;
239
+ const elements = this.visitNodes(node.elements);
240
+ if (this.options.verbatimModuleSyntax !== true && elements.nodes.length === 0)
241
+ return undefined;
242
+ return factory.updateNamedImports(node, elements);
243
+ }
244
+ break;
245
+ case 277 /* SyntaxKind.ImportSpecifier */:
246
+ return node instanceof ImportSpecifier && node.isTypeOnly ? undefined : node;
247
+ case 279 /* SyntaxKind.ExportDeclaration */:
248
+ if (node instanceof ExportDeclaration) {
249
+ if (node.isTypeOnly)
250
+ return undefined;
251
+ let clause = undefined;
252
+ if (node.exportClause !== undefined) {
253
+ clause = this.visitNode(node.exportClause);
254
+ if (clause === undefined)
255
+ return undefined;
256
+ }
257
+ return factory.updateExportDeclaration(node, undefined, false, clause, this.visitNode(node.moduleSpecifier), node.attributes === undefined ? undefined : this.importAttributes(node.attributes));
258
+ }
259
+ break;
260
+ case 280 /* SyntaxKind.NamedExports */:
261
+ if (node instanceof NamedExports) {
262
+ if (node.elements.nodes.length === 0)
263
+ return node;
264
+ const elements = this.visitNodes(node.elements);
265
+ if (this.options.verbatimModuleSyntax !== true && elements.nodes.length === 0)
266
+ return undefined;
267
+ return factory.updateNamedExports(node, elements);
268
+ }
269
+ break;
270
+ case 282 /* SyntaxKind.ExportSpecifier */:
271
+ return node instanceof ExportSpecifier && node.isTypeOnly ? undefined : node;
272
+ case 267 /* SyntaxKind.EnumDeclaration */:
273
+ if (hasSyntacticModifier(node, 4096 /* ModifierFlags.Const */))
274
+ return node;
275
+ return this.visitEachChild(node);
276
+ }
277
+ return this.visitEachChild(node);
278
+ }
279
+ required(node) {
280
+ const visited = this.visitNode(node);
281
+ if (visited === undefined)
282
+ throw new Error('A required child was removed');
283
+ return visited;
284
+ }
285
+ optionalIdentifier(node) {
286
+ const visited = this.visitNode(node);
287
+ if (visited === undefined)
288
+ return undefined;
289
+ if (visited instanceof Identifier)
290
+ return visited;
291
+ throw new Error('Expected an identifier');
292
+ }
293
+ jsxAttributes(node) {
294
+ const visited = this.visitNode(node);
295
+ if (visited instanceof JsxAttributes)
296
+ return visited;
297
+ throw new Error('Expected JSX attributes');
298
+ }
299
+ importAttributes(node) {
300
+ const visited = this.visitNode(node);
301
+ if (visited === undefined)
302
+ return undefined;
303
+ if (visited instanceof ImportAttributes)
304
+ return visited;
305
+ throw new Error('Expected import attributes');
306
+ }
307
+ accessorBody(body) {
308
+ const visited = this.visitNode(body);
309
+ return visited !== undefined ? visited : this.factory.createBlock([], false);
310
+ }
311
+ partiallyEmitted(node, expression) {
312
+ const partial = this.factory.created(new PartiallyEmittedExpression(this.required(expression)));
313
+ this.context.setOriginal(partial, node);
314
+ partial.pos = node.pos;
315
+ partial.end = node.end;
316
+ return partial;
317
+ }
318
+ visitParameter(node) {
319
+ if (isThisParameter(node))
320
+ return undefined;
321
+ let modifiers = undefined;
322
+ if (isParameterPropertyDeclaration(node, this.parentNode))
323
+ modifiers = this.extractModifiers(node.modifiers, 31 /* ModifierFlags.ParameterPropertyModifier */);
324
+ if (hasDecorators(node) && node.modifiers !== undefined) {
325
+ const decorators = [];
326
+ const nodes = node.modifiers.nodes;
327
+ for (let i = 0; i < nodes.length; i++)
328
+ if (nodes[i].kind === 171 /* SyntaxKind.Decorator */)
329
+ decorators.push(nodes[i]);
330
+ const visited = this.visitArray(decorators);
331
+ modifiers = this.factory.createModifierList(modifiers === undefined ? visited : modifiers.nodes.concat(visited));
332
+ }
333
+ return this.factory.updateParameterDeclaration(node, modifiers, node.dotDotDotToken, this.required(node.name), undefined, undefined, this.visitNode(node.initializer));
334
+ }
335
+ }
336
+ /** Skips parentheses and partially emitted expressions, keeping assertions. */
337
+ function skipParenthesesAndPartiallyEmitted(node) {
338
+ for (;;) {
339
+ if (node instanceof ParenthesizedExpression)
340
+ node = node.expression;
341
+ else if (node instanceof PartiallyEmittedExpression)
342
+ node = node.expression;
343
+ else
344
+ return node;
345
+ }
346
+ }
@@ -0,0 +1,20 @@
1
+ import { type Node } from '../ast.js';
2
+ import { type ReferenceResolver } from './reference-resolver.js';
3
+ /** What a type reference in decorator metadata serializes to. */
4
+ export declare const enum TypeReferenceSerializationKind {
5
+ /** Unresolved: emitted with a guard in case it's undefined at runtime. */
6
+ Unknown = 0,
7
+ /** A class, or a value with construct signatures: emitted as its name. */
8
+ TypeWithConstructSignatureAndValue = 1,
9
+ VoidNullableOrNeverType = 2,
10
+ NumberLikeType = 3,
11
+ BigIntLikeType = 4,
12
+ StringLikeType = 5,
13
+ BooleanType = 6,
14
+ ArrayLikeType = 7,
15
+ ESSymbolType = 8,
16
+ Promise = 9,
17
+ TypeWithCallSignature = 10,
18
+ ObjectType = 11
19
+ }
20
+ export declare function getTypeReferenceSerializationKind(resolver: ReferenceResolver, typeName: Node, location: Node | undefined): TypeReferenceSerializationKind;