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,437 @@
1
+ /**
2
+ * The `tsc` compile step after the command line: bind and check the program, emit it, then report
3
+ * diagnostics, listed files, the error summary and statistics like tsgo's `EmitFilesAndReportErrors`.
4
+ */
5
+ import type { SourceFile } from './ast.js';
6
+ import { mark } from './timeline.js';
7
+ import {
8
+ CheckedProgram,
9
+ CompilerProgram,
10
+ CompileTimes,
11
+ getDiagnosticsOfProgram,
12
+ OutputWriter,
13
+ PlainProgram,
14
+ } from './compile-program.js';
15
+ import type { Diagnostic, Locale } from './diagnostics.js';
16
+ import { EmitResult } from './emitter.js';
17
+ import {
18
+ FileBuildInfoReader,
19
+ IncrementalProgram,
20
+ readBuildInfoProgram,
21
+ type Snapshot,
22
+ TimeStampHost,
23
+ } from './incremental.js';
24
+ import { checkerThreads, shareWithCheckers, startParallelCheck, traceSingleChecker } from './parallel-check.js';
25
+ import { sharesPublishedGraphs } from '@scriptc/threads';
26
+ import { getNormalizedAbsolutePath } from './path.js';
27
+ import { sortAndDeduplicateDiagnostics } from './program.js';
28
+ import {
29
+ checksIncrementalOnThreads,
30
+ type CommandLineResult,
31
+ type DiagnosticReporter,
32
+ type ErrorSummaryReporter,
33
+ ExitStatus,
34
+ outputLocale,
35
+ type System,
36
+ SystemFileSystem,
37
+ } from './tsc-cli.js';
38
+
39
+ type CompileWork = Extract<CommandLineResult, { kind: 'compile' }>;
40
+
41
+ /** Writes outputs to the system. */
42
+ export class SystemWriter extends OutputWriter {
43
+ constructor(private readonly sys: System) {
44
+ super();
45
+ }
46
+
47
+ write(fileName: string, text: string, _declarationDiagnostics: readonly Diagnostic[]): string {
48
+ return this.sys.writeFile(fileName, text) ? '' : `Could not write file '${fileName}'.`;
49
+ }
50
+ }
51
+
52
+ /** File times of the system. */
53
+ export class SystemTimeStamps extends TimeStampHost {
54
+ constructor(private readonly sys: System) {
55
+ super();
56
+ }
57
+
58
+ getMTime(fileName: string): number | undefined {
59
+ return this.sys.getMTime(fileName);
60
+ }
61
+
62
+ setMTime(fileName: string, time: number): void {
63
+ this.sys.setMTime(fileName, time);
64
+ }
65
+ }
66
+
67
+ /** Binds, checks and emits the program of `work`; returns the exit status. */
68
+ export function compile(sys: System, work: CompileWork): ExitStatus {
69
+ const program = work.program;
70
+ const times = new CompileTimes();
71
+ times.configTime = work.configTime;
72
+ times.parseTime = work.parseTime;
73
+ const bindStart = performance.now();
74
+ const checked = new CheckedProgram(program);
75
+ times.bindTime = performance.now() - bindStart;
76
+ let compilerProgram: CompilerProgram;
77
+ if (work.incremental) {
78
+ const old = oldSnapshotOf(sys, work, times);
79
+ const changesStart = performance.now();
80
+ compilerProgram = new IncrementalProgram(checked, times, old, new SystemTimeStamps(sys));
81
+ times.changesComputeTime = performance.now() - changesStart;
82
+ } else compilerProgram = new PlainProgram(checked, times);
83
+ const result = emitFilesAndReportErrors(
84
+ sys,
85
+ compilerProgram,
86
+ work.reporter,
87
+ work.errorSummary,
88
+ new SystemWriter(sys),
89
+ outputLocale(program.options),
90
+ );
91
+ traceSingleChecker(checked);
92
+ return emitStatusAndReportStatistics(sys, compilerProgram, result);
93
+ }
94
+
95
+ /** The old state of `work`'s incremental program: read while threads parsed its files, or now. */
96
+ function oldSnapshotOf(sys: System, work: CompileWork, times: CompileTimes): Snapshot | undefined {
97
+ const early = work.buildInfo;
98
+ if (early !== undefined) {
99
+ times.buildInfoReadTime = early.readTime;
100
+ return early.snapshot;
101
+ }
102
+ const readStart = performance.now();
103
+ const old = readBuildInfoProgram(
104
+ work.program.commandLine,
105
+ new FileBuildInfoReader(new SystemFileSystem(sys)),
106
+ sys.defaultLibraryPath,
107
+ sys.currentDirectory,
108
+ );
109
+ times.buildInfoReadTime = performance.now() - readStart;
110
+ return old;
111
+ }
112
+
113
+ /**
114
+ * The number of checker threads for `work` (`--checkers`); 1 checks on this thread with `compile`. An
115
+ * incremental program is checked in full on threads without build info (`checksIncrementalOnThreads`);
116
+ * with build info, threads may check the files a change affects (`recheckInParallel`). Threads report
117
+ * diagnostics before `noEmit` filtering, which an incremental program keeps.
118
+ */
119
+ export function compileThreads(_sys: System, work: CompileWork): number {
120
+ const options = work.program.options;
121
+ mark('compile threads');
122
+ return checkerThreads(options.checkers, options.singleThreaded, work.program);
123
+ }
124
+
125
+ /**
126
+ * Like `compile`, with `threads` checker threads (parallel-check.ts): calls `done` with the exit
127
+ * status once the threads have checked the program and it is emitted and reported.
128
+ */
129
+ export function compileInParallel(
130
+ sys: System,
131
+ work: CompileWork,
132
+ threads: number,
133
+ done: (status: ExitStatus) => void,
134
+ ): void {
135
+ const program = work.program;
136
+ const times = new CompileTimes();
137
+ times.configTime = work.configTime;
138
+ times.parseTime = work.parseTime;
139
+ const bindStart = performance.now();
140
+ mark(`${threads} checkers`);
141
+ const checked = new CheckedProgram(program);
142
+ times.bindTime = performance.now() - bindStart;
143
+ mark('checker created');
144
+ if (work.incremental && !checksIncrementalOnThreads(sys, program.commandLine.buildInfoFileName())) {
145
+ recheckInParallel(sys, work, threads, times, checked, done);
146
+ return;
147
+ }
148
+ // Reporting checks only a program without syntactic and program errors (getDiagnosticsOfProgram). With
149
+ // them, the threads only emit the files, and with nothing to emit no thread starts. The program is
150
+ // shared first, as for every check on threads.
151
+ let checking = true;
152
+ if (!work.incremental) {
153
+ if (sharesPublishedGraphs) shareWithCheckers(checked);
154
+ checking = program.getSyntacticDiagnostics().length === 0 && program.getProgramDiagnostics().length === 0;
155
+ }
156
+ const finish = (checkTime: number): void => {
157
+ // An incremental program here has no build info (`compileThreads`).
158
+ let compilerProgram: CompilerProgram;
159
+ if (work.incremental) {
160
+ const changesStart = performance.now();
161
+ compilerProgram = new IncrementalProgram(checked, times, undefined, new SystemTimeStamps(sys));
162
+ times.changesComputeTime = performance.now() - changesStart;
163
+ } else compilerProgram = new PlainProgram(checked, times);
164
+ mark('report start');
165
+ const result = emitFilesAndReportErrors(
166
+ sys,
167
+ compilerProgram,
168
+ work.reporter,
169
+ work.errorSummary,
170
+ new SystemWriter(sys),
171
+ outputLocale(program.options),
172
+ );
173
+ times.checkTime = checkTime;
174
+ mark(`reported ${result.diagnostics.length} diagnostics`);
175
+ done(emitStatusAndReportStatistics(sys, compilerProgram, result));
176
+ };
177
+ const options = program.options;
178
+ if (!checking && (options.noEmit === true || options.noEmitOnError === true)) return finish(0);
179
+ startParallelCheck(checked, threads, finish, true, undefined, checking);
180
+ }
181
+
182
+ /**
183
+ * The rest of `compileInParallel` for an incremental program with build info: its program is shared with
184
+ * the checker threads first, then the incremental program finds the files a change affects
185
+ * (`IncrementalProgram.filesToCheck`); the threads check those when they are many enough to be worth it
186
+ * (`rechecksOnThreads`), each emitting what the incremental program's emit would of the files it
187
+ * checks (`emitKindsOnCheckers`), and this thread checks and emits them otherwise.
188
+ */
189
+ function recheckInParallel(
190
+ sys: System,
191
+ work: CompileWork,
192
+ threads: number,
193
+ times: CompileTimes,
194
+ checked: CheckedProgram,
195
+ done: (status: ExitStatus) => void,
196
+ ): void {
197
+ const program = work.program;
198
+ const old = oldSnapshotOf(sys, work, times);
199
+ // The program is shared before its checker does more than merge the globals; the incremental program
200
+ // compares the references of its files with the old state on as many threads as check.
201
+ if (sharesPublishedGraphs) {
202
+ shareWithCheckers(checked);
203
+ checked.referenceThreads = threads;
204
+ }
205
+ const changesStart = performance.now();
206
+ const incrementalProgram = new IncrementalProgram(checked, times, old, new SystemTimeStamps(sys));
207
+ times.changesComputeTime = performance.now() - changesStart;
208
+ // `threadsCheckTime` is the wall time of checker threads that checked the affected files: the check
209
+ // time reported (--diagnostics) is theirs and this thread's, which takes their diagnostics.
210
+ const finish = (threadsCheckTime: number = 0): void => {
211
+ mark('report start');
212
+ const result = emitFilesAndReportErrors(
213
+ sys,
214
+ incrementalProgram,
215
+ work.reporter,
216
+ work.errorSummary,
217
+ new SystemWriter(sys),
218
+ outputLocale(program.options),
219
+ );
220
+ times.checkTime += threadsCheckTime;
221
+ mark(`reported ${result.diagnostics.length} diagnostics`);
222
+ done(emitStatusAndReportStatistics(sys, incrementalProgram, result));
223
+ };
224
+ // Reporting checks only programs without syntactic, program and global errors (getDiagnosticsOfProgram).
225
+ // The threads emit the files they check, as the checker that checks a file emits it on this thread: into
226
+ // memory under noEmitOnError, for this thread to write if there are no errors, and for a composite program,
227
+ // whose unchanged declaration files this thread doesn't write (`skipDtsOutputOfComposite`).
228
+ const options = program.options;
229
+ if (
230
+ !sharesPublishedGraphs ||
231
+ options.listFilesOnly === true ||
232
+ incrementalProgram.getSyntacticDiagnostics().length > 0 ||
233
+ incrementalProgram.getProgramDiagnostics().length > 0 ||
234
+ incrementalProgram.getGlobalDiagnostics(false).length > 0
235
+ )
236
+ return finish();
237
+ const files = incrementalProgram.filesToCheck();
238
+ mark(`${files.length} files to check`);
239
+ if (!rechecksOnThreads(files, threads, options.checkers !== undefined)) return finish();
240
+ checked.checkOnly = new Set(files);
241
+ startParallelCheck(checked, threads, finish, true, incrementalProgram.emitKindsOnCheckers(files));
242
+ }
243
+
244
+ /**
245
+ * Whether checker threads check `files`, the files a change affects: when there are at least two per
246
+ * checker and, unless the number of checkers was given (`--checkers`), they hold at least
247
+ * `recheckOnThreadsText` characters, so that the threads' start (each checker resolves the
248
+ * declarations the files use again) costs less than checking them on one thread.
249
+ */
250
+ export function rechecksOnThreads(files: readonly SourceFile[], threads: number, checkersGiven: boolean): boolean {
251
+ if (files.length < 2 * threads) return false;
252
+ if (checkersGiven) return true;
253
+ let text = 0;
254
+ for (const file of files) text += file.text.length;
255
+ return text >= recheckOnThreadsText;
256
+ }
257
+
258
+ /** The least text of the files a change affects that checker threads check (`rechecksOnThreads`). */
259
+ const recheckOnThreadsText = 200_000;
260
+
261
+ export class CompileResult {
262
+ constructor(
263
+ readonly diagnostics: Diagnostic[],
264
+ readonly emitResult: EmitResult,
265
+ ) {}
266
+ }
267
+
268
+ /** Reports diagnostics, emits, and lists files. */
269
+ export function emitFilesAndReportErrors(
270
+ sys: System,
271
+ program: CompilerProgram,
272
+ reporter: DiagnosticReporter,
273
+ errorSummary: ErrorSummaryReporter,
274
+ writer: OutputWriter,
275
+ locale: Locale,
276
+ ): CompileResult {
277
+ const diagnostics = getDiagnosticsOfProgram(program, false);
278
+ mark('diagnostics collected');
279
+ let emitResult = new EmitResult();
280
+ emitResult.emitSkipped = true;
281
+ if (program.options.listFilesOnly !== true) {
282
+ const emitStart = performance.now();
283
+ emitResult = program.emit(writer);
284
+ program.times.emitTime = performance.now() - emitStart;
285
+ }
286
+ for (const diagnostic of emitResult.diagnostics) diagnostics.push(diagnostic);
287
+ const all = sortAndDeduplicateDiagnostics(diagnostics);
288
+ reporter.reportAll(all);
289
+ listFiles(sys, program, emitResult, locale);
290
+ errorSummary.report(all);
291
+ return new CompileResult(all, emitResult);
292
+ }
293
+
294
+ /** The exit status of a compilation, after printing `--diagnostics` statistics. */
295
+ export function emitStatusAndReportStatistics(
296
+ sys: System,
297
+ program: CompilerProgram,
298
+ result: CompileResult,
299
+ ): ExitStatus {
300
+ const options = program.options;
301
+ if (options.diagnostics === true || options.extendedDiagnostics === true) {
302
+ program.times.totalTime = sys.sinceStart();
303
+ statisticsOf(program).report(sys);
304
+ }
305
+ return exitStatusOf(result);
306
+ }
307
+
308
+ export function exitStatusOf(result: CompileResult): ExitStatus {
309
+ if (result.diagnostics.length === 0) return ExitStatus.Success;
310
+ return result.emitResult.emitSkipped
311
+ ? ExitStatus.DiagnosticsPresent_OutputsSkipped
312
+ : ExitStatus.DiagnosticsPresent_OutputsGenerated;
313
+ }
314
+
315
+ function listFiles(sys: System, compilerProgram: CompilerProgram, emitResult: EmitResult, locale: Locale): void {
316
+ const program = compilerProgram.program;
317
+ const options = program.options;
318
+ if (options.listEmittedFiles === true) {
319
+ let out = '';
320
+ for (const file of emitResult.emittedFiles) {
321
+ out += 'TSFILE: ' + getNormalizedAbsolutePath(file, program.currentDirectory) + '\n';
322
+ }
323
+ sys.write(out);
324
+ }
325
+ if (options.explainFiles === true) sys.write(program.explainFiles(locale));
326
+ else if (options.listFiles === true || options.listFilesOnly === true) {
327
+ let out = '';
328
+ for (const file of program.getSourceFiles()) out += file.fileName + '\n';
329
+ sys.write(out);
330
+ }
331
+ }
332
+
333
+ // ---- Statistics
334
+
335
+ /** What `--diagnostics` and `--extendedDiagnostics` print. */
336
+ export class Statistics {
337
+ isAggregate = false;
338
+ projects = 0;
339
+ projectsBuilt = 0;
340
+ timestampUpdates = 0;
341
+ files = 0;
342
+ lines = 0;
343
+ identifiers = 0;
344
+ symbols = 0;
345
+ types = 0;
346
+ instantiations = 0;
347
+ memoryUsed = 0;
348
+ memoryAllocs = 0;
349
+ readonly times = new CompileTimes();
350
+
351
+ aggregate(other: Statistics): void {
352
+ this.isAggregate = true;
353
+ this.files += other.files;
354
+ this.lines += other.lines;
355
+ this.identifiers += other.identifiers;
356
+ this.symbols += other.symbols;
357
+ this.types += other.types;
358
+ this.instantiations += other.instantiations;
359
+ this.memoryUsed += other.memoryUsed;
360
+ this.memoryAllocs += other.memoryAllocs;
361
+ const t = this.times;
362
+ const o = other.times;
363
+ t.configTime += o.configTime;
364
+ t.buildInfoReadTime += o.buildInfoReadTime;
365
+ t.parseTime += o.parseTime;
366
+ t.bindTime += o.bindTime;
367
+ t.checkTime += o.checkTime;
368
+ t.emitTime += o.emitTime;
369
+ t.changesComputeTime += o.changesComputeTime;
370
+ }
371
+
372
+ report(sys: System): void {
373
+ const rows: [string, string][] = [];
374
+ const prefix = this.isAggregate ? 'Aggregate ' : '';
375
+ if (this.isAggregate) {
376
+ rows.push(['Projects in scope', String(this.projects)]);
377
+ rows.push(['Projects built', String(this.projectsBuilt)]);
378
+ rows.push(['Timestamps only updates', String(this.timestampUpdates)]);
379
+ }
380
+ rows.push([prefix + 'Files', String(this.files)]);
381
+ rows.push([prefix + 'Lines', String(this.lines)]);
382
+ rows.push([prefix + 'Identifiers', String(this.identifiers)]);
383
+ rows.push([prefix + 'Symbols', String(this.symbols)]);
384
+ rows.push([prefix + 'Types', String(this.types)]);
385
+ rows.push([prefix + 'Instantiations', String(this.instantiations)]);
386
+ rows.push([prefix + 'Memory used', `${Math.floor(this.memoryUsed / 1024)}K`]);
387
+ rows.push([prefix + 'Memory allocs', String(this.memoryAllocs)]);
388
+ const t = this.times;
389
+ if (t.configTime !== 0) rows.push([prefix + 'Config time', formatDuration(t.configTime)]);
390
+ if (t.buildInfoReadTime !== 0) rows.push([prefix + 'BuildInfo read time', formatDuration(t.buildInfoReadTime)]);
391
+ rows.push([prefix + 'Parse time', formatDuration(t.parseTime)]);
392
+ if (t.bindTime !== 0) rows.push([prefix + 'Bind time', formatDuration(t.bindTime)]);
393
+ if (t.checkTime !== 0) rows.push([prefix + 'Check time', formatDuration(t.checkTime)]);
394
+ if (t.emitTime !== 0) rows.push([prefix + 'Emit time', formatDuration(t.emitTime)]);
395
+ if (t.changesComputeTime !== 0) rows.push([prefix + 'Changes compute time', formatDuration(t.changesComputeTime)]);
396
+ rows.push([prefix + 'Total time', formatDuration(t.totalTime)]);
397
+ let nameWidth = 0;
398
+ let valueWidth = 0;
399
+ for (const [name, value] of rows) {
400
+ nameWidth = Math.max(nameWidth, name.length);
401
+ valueWidth = Math.max(valueWidth, value.length);
402
+ }
403
+ let out = '';
404
+ for (const [name, value] of rows) {
405
+ out += (name + ':').padEnd(nameWidth + 1) + ' ' + value.padStart(valueWidth) + '\n';
406
+ }
407
+ sys.write(out);
408
+ }
409
+ }
410
+
411
+ function formatDuration(milliseconds: number): string {
412
+ return (milliseconds / 1000).toFixed(3) + 's';
413
+ }
414
+
415
+ export function statisticsOf(compilerProgram: CompilerProgram): Statistics {
416
+ const program = compilerProgram.program;
417
+ const statistics = new Statistics();
418
+ const files = program.getSourceFiles();
419
+ statistics.files = files.length;
420
+ for (const file of files) {
421
+ statistics.lines += file.diagnosticFile().getLineStarts().length;
422
+ statistics.identifiers += file.identifierCount;
423
+ statistics.symbols += file.symbolCount;
424
+ }
425
+ statistics.types = compilerProgram.checked.checker.typeCount;
426
+ const t = statistics.times;
427
+ const source = compilerProgram.times;
428
+ t.configTime = source.configTime;
429
+ t.buildInfoReadTime = source.buildInfoReadTime;
430
+ t.parseTime = source.parseTime;
431
+ t.bindTime = source.bindTime;
432
+ t.checkTime = source.checkTime;
433
+ t.emitTime = source.emitTime;
434
+ t.changesComputeTime = source.changesComputeTime;
435
+ t.totalTime = source.totalTime;
436
+ return statistics;
437
+ }