tsc-ts 0.0.9 → 0.1.0

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 (373) hide show
  1. package/README.md +2 -2
  2. package/bin/tsc-ts.js +70 -1
  3. package/dist/api/compiler/ast-utilities.d.ts +19 -1
  4. package/dist/api/compiler/ast-utilities.js +180 -95
  5. package/dist/api/compiler/ast.d.ts +22 -15
  6. package/dist/api/compiler/ast.js +1026 -995
  7. package/dist/api/compiler/astnav.js +15 -15
  8. package/dist/api/compiler/binder-utilities.js +186 -186
  9. package/dist/api/compiler/binder.js +290 -263
  10. package/dist/api/compiler/character-codes.js +2 -2
  11. package/dist/api/compiler/checker-calls.js +178 -124
  12. package/dist/api/compiler/checker-classes.d.ts +14 -3
  13. package/dist/api/compiler/checker-classes.js +134 -90
  14. package/dist/api/compiler/checker-contextual.js +64 -61
  15. package/dist/api/compiler/checker-declaration-order.js +79 -79
  16. package/dist/api/compiler/checker-declarations.d.ts +1 -0
  17. package/dist/api/compiler/checker-declarations.js +160 -136
  18. package/dist/api/compiler/checker-declared-types.js +67 -65
  19. package/dist/api/compiler/checker-decorators.js +77 -77
  20. package/dist/api/compiler/checker-deprecation.d.ts +8 -3
  21. package/dist/api/compiler/checker-deprecation.js +76 -55
  22. package/dist/api/compiler/checker-destructuring.js +47 -45
  23. package/dist/api/compiler/checker-elaboration.js +24 -24
  24. package/dist/api/compiler/checker-emit-helpers.js +4 -4
  25. package/dist/api/compiler/checker-emit-resolver.d.ts +4 -2
  26. package/dist/api/compiler/checker-emit-resolver.js +25 -13
  27. package/dist/api/compiler/checker-evaluator.js +9 -9
  28. package/dist/api/compiler/checker-expressions.js +244 -211
  29. package/dist/api/compiler/checker-functions.js +113 -107
  30. package/dist/api/compiler/checker-generated-code.d.ts +0 -11
  31. package/dist/api/compiler/checker-generated-code.js +28 -52
  32. package/dist/api/compiler/checker-grammar.d.ts +1 -0
  33. package/dist/api/compiler/checker-grammar.js +472 -440
  34. package/dist/api/compiler/checker-heritage.js +91 -93
  35. package/dist/api/compiler/checker-inference.d.ts +77 -5
  36. package/dist/api/compiler/checker-inference.js +487 -107
  37. package/dist/api/compiler/checker-iteration.d.ts +0 -10
  38. package/dist/api/compiler/checker-iteration.js +35 -52
  39. package/dist/api/compiler/checker-javascript.js +14 -14
  40. package/dist/api/compiler/checker-jsdoc.d.ts +8 -10
  41. package/dist/api/compiler/checker-jsdoc.js +67 -58
  42. package/dist/api/compiler/checker-jsx.js +105 -88
  43. package/dist/api/compiler/checker-members.d.ts +9 -2
  44. package/dist/api/compiler/checker-members.js +212 -75
  45. package/dist/api/compiler/checker-modules.d.ts +15 -6
  46. package/dist/api/compiler/checker-modules.js +469 -309
  47. package/dist/api/compiler/checker-narrowing.js +273 -189
  48. package/dist/api/compiler/checker-object-literals.js +25 -22
  49. package/dist/api/compiler/checker-operators.js +126 -118
  50. package/dist/api/compiler/checker-overloads.js +27 -27
  51. package/dist/api/compiler/checker-property-access.js +59 -55
  52. package/dist/api/compiler/checker-services.d.ts +1 -0
  53. package/dist/api/compiler/checker-services.js +222 -210
  54. package/dist/api/compiler/checker-signatures.js +65 -49
  55. package/dist/api/compiler/checker-source-file.d.ts +5 -0
  56. package/dist/api/compiler/checker-source-file.js +154 -130
  57. package/dist/api/compiler/checker-statements.js +33 -32
  58. package/dist/api/compiler/checker-super.js +50 -50
  59. package/dist/api/compiler/checker-symbol-types.js +109 -93
  60. package/dist/api/compiler/checker-symbols.d.ts +13 -1
  61. package/dist/api/compiler/checker-symbols.js +264 -149
  62. package/dist/api/compiler/checker-type-factory.d.ts +5 -0
  63. package/dist/api/compiler/checker-type-factory.js +145 -36
  64. package/dist/api/compiler/checker-type-nodes.d.ts +1 -0
  65. package/dist/api/compiler/checker-type-nodes.js +179 -141
  66. package/dist/api/compiler/checker-type-operators.d.ts +2 -0
  67. package/dist/api/compiler/checker-type-operators.js +110 -63
  68. package/dist/api/compiler/checker-types.d.ts +80 -3
  69. package/dist/api/compiler/checker-types.js +121 -2
  70. package/dist/api/compiler/checker-unused.js +114 -118
  71. package/dist/api/compiler/checker-utilities.js +11 -11
  72. package/dist/api/compiler/checker.d.ts +104 -31
  73. package/dist/api/compiler/checker.js +181 -33
  74. package/dist/api/compiler/command-line.d.ts +1 -3
  75. package/dist/api/compiler/command-line.js +47 -44
  76. package/dist/api/compiler/compile-program.d.ts +42 -3
  77. package/dist/api/compiler/compile-program.js +139 -27
  78. package/dist/api/compiler/diagnostic-messages.d.ts +1849 -1774
  79. package/dist/api/compiler/diagnostic-messages.js +128 -122
  80. package/dist/api/compiler/diagnostics.d.ts +22 -0
  81. package/dist/api/compiler/diagnostics.js +93 -11
  82. package/dist/api/compiler/emitter.d.ts +7 -1
  83. package/dist/api/compiler/emitter.js +53 -11
  84. package/dist/api/compiler/file-include.d.ts +2 -1
  85. package/dist/api/compiler/file-include.js +11 -7
  86. package/dist/api/compiler/file-loader.d.ts +21 -1
  87. package/dist/api/compiler/file-loader.js +201 -48
  88. package/dist/api/compiler/instantiation.d.ts +7 -0
  89. package/dist/api/compiler/instantiation.js +101 -49
  90. package/dist/api/compiler/jsdoc.js +23 -23
  91. package/dist/api/compiler/link-tables.d.ts +48 -18
  92. package/dist/api/compiler/link-tables.js +80 -37
  93. package/dist/api/compiler/locales/cs-CZ.d.ts +1 -1
  94. package/dist/api/compiler/locales/cs-CZ.js +1 -1
  95. package/dist/api/compiler/locales/de-DE.d.ts +1 -1
  96. package/dist/api/compiler/locales/de-DE.js +1 -1
  97. package/dist/api/compiler/locales/es-ES.d.ts +1 -1
  98. package/dist/api/compiler/locales/es-ES.js +1 -1
  99. package/dist/api/compiler/locales/fr-FR.d.ts +1 -1
  100. package/dist/api/compiler/locales/fr-FR.js +1 -1
  101. package/dist/api/compiler/locales/it-IT.d.ts +1 -1
  102. package/dist/api/compiler/locales/it-IT.js +1 -1
  103. package/dist/api/compiler/locales/ja-JP.d.ts +1 -1
  104. package/dist/api/compiler/locales/ja-JP.js +1 -1
  105. package/dist/api/compiler/locales/ko-KR.d.ts +1 -1
  106. package/dist/api/compiler/locales/ko-KR.js +1 -1
  107. package/dist/api/compiler/locales/pl-PL.d.ts +1 -1
  108. package/dist/api/compiler/locales/pl-PL.js +1 -1
  109. package/dist/api/compiler/locales/pt-BR.d.ts +1 -1
  110. package/dist/api/compiler/locales/pt-BR.js +1 -1
  111. package/dist/api/compiler/locales/ru-RU.d.ts +1 -1
  112. package/dist/api/compiler/locales/ru-RU.js +1 -1
  113. package/dist/api/compiler/locales/tr-TR.d.ts +1 -1
  114. package/dist/api/compiler/locales/tr-TR.js +1 -1
  115. package/dist/api/compiler/locales/zh-CN.d.ts +1 -1
  116. package/dist/api/compiler/locales/zh-CN.js +1 -1
  117. package/dist/api/compiler/locales/zh-TW.d.ts +1 -1
  118. package/dist/api/compiler/locales/zh-TW.js +1 -1
  119. package/dist/api/compiler/module-resolution-types.js +6 -6
  120. package/dist/api/compiler/module-resolution.d.ts +10 -1
  121. package/dist/api/compiler/module-resolution.js +115 -84
  122. package/dist/api/compiler/module-specifiers.d.ts +15 -0
  123. package/dist/api/compiler/module-specifiers.js +24 -18
  124. package/dist/api/compiler/name-resolver.js +74 -65
  125. package/dist/api/compiler/node-builder-names.d.ts +11 -3
  126. package/dist/api/compiler/node-builder-names.js +210 -90
  127. package/dist/api/compiler/node-builder-pseudo.js +29 -31
  128. package/dist/api/compiler/node-builder-reuse.js +23 -22
  129. package/dist/api/compiler/node-builder.d.ts +18 -1
  130. package/dist/api/compiler/node-builder.js +191 -102
  131. package/dist/api/compiler/option-declarations.d.ts +2 -6
  132. package/dist/api/compiler/option-declarations.js +315 -375
  133. package/dist/api/compiler/options.d.ts +15 -33
  134. package/dist/api/compiler/options.js +21 -54
  135. package/dist/api/compiler/output-paths.d.ts +4 -1
  136. package/dist/api/compiler/output-paths.js +6 -11
  137. package/dist/api/compiler/package-json.d.ts +3 -3
  138. package/dist/api/compiler/package-json.js +11 -10
  139. package/dist/api/compiler/parallel-parse.d.ts +3 -2
  140. package/dist/api/compiler/parallel-parse.js +17 -5
  141. package/dist/api/compiler/parser.d.ts +40 -19
  142. package/dist/api/compiler/parser.js +308 -216
  143. package/dist/api/compiler/path.d.ts +9 -0
  144. package/dist/api/compiler/path.js +20 -3
  145. package/dist/api/compiler/printer/emit-context.d.ts +5 -1
  146. package/dist/api/compiler/printer/emit-context.js +20 -1
  147. package/dist/api/compiler/printer/factory-base.d.ts +2 -2
  148. package/dist/api/compiler/printer/factory-base.js +7 -3
  149. package/dist/api/compiler/printer/factory.js +3 -1
  150. package/dist/api/compiler/printer/helpers.js +10 -1
  151. package/dist/api/compiler/printer/name-generator.d.ts +1 -1
  152. package/dist/api/compiler/printer/name-generator.js +35 -16
  153. package/dist/api/compiler/printer/printer.d.ts +49 -2
  154. package/dist/api/compiler/printer/printer.js +539 -293
  155. package/dist/api/compiler/printer/utilities.js +149 -147
  156. package/dist/api/compiler/program-checker.d.ts +12 -2
  157. package/dist/api/compiler/program-checker.js +88 -34
  158. package/dist/api/compiler/program-utilities.d.ts +3 -1
  159. package/dist/api/compiler/program-utilities.js +28 -15
  160. package/dist/api/compiler/program.d.ts +4 -6
  161. package/dist/api/compiler/program.js +74 -87
  162. package/dist/api/compiler/pseudo-bigint.d.ts +2 -0
  163. package/dist/api/compiler/pseudo-bigint.js +18 -0
  164. package/dist/api/compiler/regexp-checker.d.ts +1 -1
  165. package/dist/api/compiler/regexp-checker.js +93 -76
  166. package/dist/api/compiler/relations.d.ts +27 -4
  167. package/dist/api/compiler/relations.js +347 -180
  168. package/dist/api/compiler/reparser.js +60 -56
  169. package/dist/api/compiler/scanner.d.ts +19 -2
  170. package/dist/api/compiler/scanner.js +123 -108
  171. package/dist/api/compiler/shared-results.d.ts +463 -0
  172. package/dist/api/compiler/shared-results.js +2128 -0
  173. package/dist/api/compiler/sourcemap.js +2 -2
  174. package/dist/api/compiler/symbol-accessibility.js +87 -74
  175. package/dist/api/compiler/symbol.d.ts +23 -14
  176. package/dist/api/compiler/symbol.js +23 -11
  177. package/dist/api/compiler/syntax-kind.d.ts +198 -197
  178. package/dist/api/compiler/transformers/alias-references.js +247 -139
  179. package/dist/api/compiler/transformers/async-utilities.js +25 -25
  180. package/dist/api/compiler/transformers/async.d.ts +0 -1
  181. package/dist/api/compiler/transformers/async.js +64 -77
  182. package/dist/api/compiler/transformers/class-fields.d.ts +1 -0
  183. package/dist/api/compiler/transformers/class-fields.js +81 -78
  184. package/dist/api/compiler/transformers/commonjs-module.js +18 -15
  185. package/dist/api/compiler/transformers/const-enum-inliner.js +1 -1
  186. package/dist/api/compiler/transformers/declarations-diagnostics.js +247 -244
  187. package/dist/api/compiler/transformers/declarations-pseudo.js +100 -100
  188. package/dist/api/compiler/transformers/declarations-resolver.d.ts +0 -3
  189. package/dist/api/compiler/transformers/declarations-syntactic.d.ts +1 -2
  190. package/dist/api/compiler/transformers/declarations-syntactic.js +134 -156
  191. package/dist/api/compiler/transformers/declarations-tracker.js +18 -18
  192. package/dist/api/compiler/transformers/declarations.d.ts +4 -1
  193. package/dist/api/compiler/transformers/declarations.js +305 -238
  194. package/dist/api/compiler/transformers/decorator-metadata.d.ts +1 -1
  195. package/dist/api/compiler/transformers/decorator-metadata.js +53 -45
  196. package/dist/api/compiler/transformers/decorator-utilities.js +24 -24
  197. package/dist/api/compiler/transformers/destructuring.js +19 -18
  198. package/dist/api/compiler/transformers/emit-resolver.js +1 -1
  199. package/dist/api/compiler/transformers/es-decorators.js +55 -55
  200. package/dist/api/compiler/transformers/external-module-info.js +3 -3
  201. package/dist/api/compiler/transformers/for-await.js +25 -25
  202. package/dist/api/compiler/transformers/import-elision.js +14 -14
  203. package/dist/api/compiler/transformers/jsx.js +12 -12
  204. package/dist/api/compiler/transformers/legacy-decorators.js +17 -17
  205. package/dist/api/compiler/transformers/module.js +8 -8
  206. package/dist/api/compiler/transformers/named-evaluation.js +4 -4
  207. package/dist/api/compiler/transformers/object-rest-spread.js +20 -20
  208. package/dist/api/compiler/transformers/optional-chain.js +10 -10
  209. package/dist/api/compiler/transformers/reference-resolver.d.ts +12 -1
  210. package/dist/api/compiler/transformers/reference-resolver.js +131 -69
  211. package/dist/api/compiler/transformers/runtime-syntax.js +35 -31
  212. package/dist/api/compiler/transformers/subtree-facts.js +47 -47
  213. package/dist/api/compiler/transformers/syntax-facts.js +56 -58
  214. package/dist/api/compiler/transformers/type-eraser.js +73 -66
  215. package/dist/api/compiler/transformers/type-serialization.js +24 -24
  216. package/dist/api/compiler/transformers/using.js +12 -12
  217. package/dist/api/compiler/transformers/utilities.js +77 -77
  218. package/dist/api/compiler/transformers/visitor-base.js +172 -172
  219. package/dist/api/compiler/transformers/visitor-hooks.js +6 -2
  220. package/dist/api/compiler/tsconfig.d.ts +10 -2
  221. package/dist/api/compiler/tsconfig.js +136 -48
  222. package/dist/api/compiler/type-printer.js +40 -3
  223. package/dist/api/compiler/types.d.ts +2 -1
  224. package/dist/api/library/ast.generated.d.ts +42 -39
  225. package/dist/api/library/ast.generated.js +1 -1
  226. package/dist/api/library/compiler-options.generated.d.ts +111 -100
  227. package/dist/api/library/compiler-options.generated.js +1 -1
  228. package/dist/api/library/disk.js +12 -1
  229. package/dist/api/library/enums.generated.d.ts +206 -206
  230. package/dist/api/library/enums.generated.js +206 -206
  231. package/dist/api/library/nodes.js +26 -26
  232. package/package.json +9 -9
  233. package/src/compiler/ast-utilities.ts +99 -7
  234. package/src/compiler/ast.ts +58 -26
  235. package/src/compiler/binder.ts +39 -4
  236. package/src/compiler/character-codes.ts +2 -2
  237. package/src/compiler/checker-calls.ts +79 -9
  238. package/src/compiler/checker-classes.ts +78 -24
  239. package/src/compiler/checker-contextual.ts +6 -1
  240. package/src/compiler/checker-declarations.ts +31 -4
  241. package/src/compiler/checker-declared-types.ts +8 -5
  242. package/src/compiler/checker-decorators.ts +1 -1
  243. package/src/compiler/checker-deprecation.ts +29 -8
  244. package/src/compiler/checker-destructuring.ts +10 -3
  245. package/src/compiler/checker-emit-helpers.ts +1 -0
  246. package/src/compiler/checker-emit-resolver.ts +16 -6
  247. package/src/compiler/checker-expressions.ts +79 -46
  248. package/src/compiler/checker-functions.ts +21 -6
  249. package/src/compiler/checker-generated-code.ts +2 -22
  250. package/src/compiler/checker-grammar.ts +136 -62
  251. package/src/compiler/checker-heritage.ts +22 -21
  252. package/src/compiler/checker-inference.ts +514 -82
  253. package/src/compiler/checker-iteration.ts +18 -31
  254. package/src/compiler/checker-javascript.ts +1 -1
  255. package/src/compiler/checker-jsdoc.ts +50 -27
  256. package/src/compiler/checker-jsx.ts +26 -4
  257. package/src/compiler/checker-members.ts +200 -56
  258. package/src/compiler/checker-modules.ts +332 -65
  259. package/src/compiler/checker-narrowing.ts +98 -19
  260. package/src/compiler/checker-object-literals.ts +3 -0
  261. package/src/compiler/checker-operators.ts +11 -4
  262. package/src/compiler/checker-property-access.ts +7 -2
  263. package/src/compiler/checker-services.ts +39 -12
  264. package/src/compiler/checker-signatures.ts +15 -1
  265. package/src/compiler/checker-source-file.ts +39 -13
  266. package/src/compiler/checker-statements.ts +3 -2
  267. package/src/compiler/checker-symbol-types.ts +29 -6
  268. package/src/compiler/checker-symbols.ts +158 -15
  269. package/src/compiler/checker-type-factory.ts +124 -23
  270. package/src/compiler/checker-type-nodes.ts +46 -3
  271. package/src/compiler/checker-type-operators.ts +83 -26
  272. package/src/compiler/checker-types.ts +147 -4
  273. package/src/compiler/checker-unused.ts +9 -14
  274. package/src/compiler/checker.ts +203 -39
  275. package/src/compiler/command-line.ts +28 -28
  276. package/src/compiler/compile-program.ts +167 -27
  277. package/src/compiler/decoder.ts +13 -4
  278. package/src/compiler/diagnostic-messages.ts +1973 -1892
  279. package/src/compiler/diagnostics.ts +84 -3
  280. package/src/compiler/emitter.ts +57 -8
  281. package/src/compiler/encoder.ts +23 -8
  282. package/src/compiler/file-include.ts +9 -3
  283. package/src/compiler/file-loader.ts +197 -38
  284. package/src/compiler/help.ts +10 -14
  285. package/src/compiler/incremental.ts +165 -30
  286. package/src/compiler/init.ts +2 -7
  287. package/src/compiler/instantiation.ts +77 -22
  288. package/src/compiler/jsdoc.ts +3 -1
  289. package/src/compiler/link-tables.ts +82 -37
  290. package/src/compiler/locales/cs-CZ.ts +1 -1
  291. package/src/compiler/locales/de-DE.ts +1 -1
  292. package/src/compiler/locales/es-ES.ts +1 -1
  293. package/src/compiler/locales/fr-FR.ts +1 -1
  294. package/src/compiler/locales/it-IT.ts +1 -1
  295. package/src/compiler/locales/ja-JP.ts +1 -1
  296. package/src/compiler/locales/ko-KR.ts +1 -1
  297. package/src/compiler/locales/pl-PL.ts +1 -1
  298. package/src/compiler/locales/pt-BR.ts +1 -1
  299. package/src/compiler/locales/ru-RU.ts +1 -1
  300. package/src/compiler/locales/tr-TR.ts +1 -1
  301. package/src/compiler/locales/zh-CN.ts +1 -1
  302. package/src/compiler/locales/zh-TW.ts +1 -1
  303. package/src/compiler/module-resolution.ts +44 -8
  304. package/src/compiler/module-specifiers.ts +62 -20
  305. package/src/compiler/name-resolver.ts +9 -1
  306. package/src/compiler/node-builder-names.ts +236 -54
  307. package/src/compiler/node-builder-pseudo.ts +4 -7
  308. package/src/compiler/node-builder-reuse.ts +5 -4
  309. package/src/compiler/node-builder.ts +130 -31
  310. package/src/compiler/option-declarations.ts +33 -103
  311. package/src/compiler/options.ts +23 -62
  312. package/src/compiler/output-paths.ts +5 -18
  313. package/src/compiler/package-entrypoints.ts +345 -0
  314. package/src/compiler/package-json.ts +4 -4
  315. package/src/compiler/parallel-check.ts +326 -52
  316. package/src/compiler/parallel-emit.ts +320 -0
  317. package/src/compiler/parallel-parse.ts +16 -5
  318. package/src/compiler/parse-thread.ts +3 -0
  319. package/src/compiler/parser.ts +156 -39
  320. package/src/compiler/path.ts +22 -2
  321. package/src/compiler/printer/emit-context.ts +21 -0
  322. package/src/compiler/printer/factory-base.ts +10 -3
  323. package/src/compiler/printer/factory.ts +4 -1
  324. package/src/compiler/printer/helpers.ts +10 -1
  325. package/src/compiler/printer/name-generator.ts +24 -2
  326. package/src/compiler/printer/printer.ts +266 -30
  327. package/src/compiler/printer/utilities.ts +8 -2
  328. package/src/compiler/program-checker.ts +57 -5
  329. package/src/compiler/program-utilities.ts +23 -10
  330. package/src/compiler/program.ts +18 -26
  331. package/src/compiler/pseudo-bigint.ts +17 -0
  332. package/src/compiler/regexp-checker.ts +63 -30
  333. package/src/compiler/relations.ts +240 -77
  334. package/src/compiler/reparser.ts +7 -2
  335. package/src/compiler/scanner.ts +109 -79
  336. package/src/compiler/shared-results.ts +2414 -0
  337. package/src/compiler/show-config.ts +18 -1
  338. package/src/compiler/sourcemap.ts +2 -2
  339. package/src/compiler/symbol-accessibility.ts +26 -3
  340. package/src/compiler/symbol.ts +46 -24
  341. package/src/compiler/syntax-kind.ts +188 -187
  342. package/src/compiler/thread-entry.ts +64 -4
  343. package/src/compiler/transformers/alias-references.ts +123 -4
  344. package/src/compiler/transformers/async.ts +2 -17
  345. package/src/compiler/transformers/class-fields.ts +13 -12
  346. package/src/compiler/transformers/commonjs-module.ts +11 -7
  347. package/src/compiler/transformers/declarations-diagnostics.ts +5 -3
  348. package/src/compiler/transformers/declarations-pseudo.ts +2 -4
  349. package/src/compiler/transformers/declarations-resolver.ts +0 -3
  350. package/src/compiler/transformers/declarations-syntactic.ts +1 -21
  351. package/src/compiler/transformers/declarations.ts +134 -48
  352. package/src/compiler/transformers/decorator-metadata.ts +9 -1
  353. package/src/compiler/transformers/destructuring.ts +4 -3
  354. package/src/compiler/transformers/external-module-info.ts +1 -1
  355. package/src/compiler/transformers/jsx.ts +2 -1
  356. package/src/compiler/transformers/reference-resolver.ts +83 -19
  357. package/src/compiler/transformers/runtime-syntax.ts +6 -1
  358. package/src/compiler/transformers/syntax-facts.ts +2 -7
  359. package/src/compiler/transformers/type-eraser.ts +10 -1
  360. package/src/compiler/transformers/type-serialization.ts +3 -2
  361. package/src/compiler/transformers/visitor-base.ts +2 -1
  362. package/src/compiler/transformers/visitor-hooks.ts +9 -4
  363. package/src/compiler/tsc-build.ts +66 -9
  364. package/src/compiler/tsc-cli.ts +7 -0
  365. package/src/compiler/tsc-compile.ts +284 -4
  366. package/src/compiler/tsc-watch.ts +74 -45
  367. package/src/compiler/tsconfig.ts +176 -19
  368. package/src/compiler/type-printer.ts +36 -2
  369. package/src/compiler/types.ts +2 -1
  370. package/src/library/ast.generated.ts +57 -41
  371. package/src/library/compiler-options.generated.ts +117 -103
  372. package/src/library/disk.ts +10 -1
  373. package/src/library/enums.generated.ts +196 -196
@@ -61,6 +61,28 @@ export declare class EmitIndexes {
61
61
  readonly declarations: DeclarationGlobals | undefined;
62
62
  constructor(program: Program);
63
63
  }
64
+ /**
65
+ * The JavaScript emit of a program's files without a checker, for emit threads (parallel-emit.ts).
66
+ * JavaScript emit asks the checker only how decorator metadata serializes a type
67
+ * (`CheckerEmitResolver`): with `kinds`, the answers the main thread's checker gave
68
+ * (`recordMetadataKinds`), else files with decorator metadata are emitted by a `ProgramEmitter`.
69
+ */
70
+ export declare class JavaScriptEmitter {
71
+ private readonly host;
72
+ private readonly recorded;
73
+ constructor(program: Program, kinds?: readonly number[]);
74
+ /**
75
+ * Emits `file`, or returns undefined if its decorator metadata asked for a kind that wasn't recorded: what
76
+ * was written is then not the file's emit, and it must be emitted with the checker.
77
+ */
78
+ emit(file: SourceFile, writer: OutputWriter): EmitResult | undefined;
79
+ }
80
+ /**
81
+ * The serialization kinds of decorator metadata that the checker of `checked` gives the type references of
82
+ * `files`, in the order JavaScript emit asks for them: the type name's node id, the location's node id (-1 for
83
+ * none) and the kind, for each. Only the decorator metadata transform runs, as the first transform of emit.
84
+ */
85
+ export declare function recordMetadataKinds(checked: CheckedProgram, files: readonly SourceFile[]): number[];
64
86
  /** A checked program and the emit of its files. */
65
87
  export declare class ProgramEmitter {
66
88
  readonly checked: CheckedProgram;
@@ -83,6 +105,11 @@ export declare abstract class CompilerProgram {
83
105
  readonly times: CompileTimes;
84
106
  readonly emitter: ProgramEmitter;
85
107
  constructor(checked: CheckedProgram, times: CompileTimes);
108
+ /**
109
+ * The time spent in declaration emit while checking, to count as emit time rather than check time, since
110
+ * the last call. Only an incremental program emits while checking, to compute signatures.
111
+ */
112
+ takeNestedEmitTime(): number;
86
113
  get program(): Program;
87
114
  get options(): CompilerOptions;
88
115
  getConfigFileParsingDiagnostics(): readonly Diagnostic[];
@@ -90,6 +117,12 @@ export declare abstract class CompilerProgram {
90
117
  getProgramDiagnostics(): Diagnostic[];
91
118
  /** See `CheckedProgram.getGlobalDiagnostics`. */
92
119
  getGlobalDiagnostics(withCheckerThreads?: boolean): Diagnostic[];
120
+ /**
121
+ * Whether the global diagnostics found by checking are reported after the semantic diagnostics. An
122
+ * incremental program has them in the semantic diagnostics of the files they were found in
123
+ * (`CheckedProgram.globalsInFileDiagnostics`).
124
+ */
125
+ reportsGlobalDiagnosticsOfChecking(): boolean;
93
126
  /** Semantic diagnostics of every file. */
94
127
  abstract getSemanticDiagnostics(): Diagnostic[];
95
128
  /** Declaration emit errors of every file. */
@@ -109,10 +142,16 @@ export declare class PlainProgram extends CompilerProgram {
109
142
  /** Under `noEmitOnError`, a skipped emit with the errors that prevent it; otherwise `undefined`. */
110
143
  export declare function handleNoEmitOnError(program: CompilerProgram): EmitResult | undefined;
111
144
  /**
112
- * Config and syntax errors; without syntax errors, program, global and semantic errors too, and
113
- * declaration errors under `noEmit` (or `withDeclarationDiagnostics`).
145
+ * Config and syntax errors; without syntax errors, program, global and semantic errors too, and, when
146
+ * there are none of these, declaration errors under `noEmit` (or `withDeclarationDiagnostics`). With
147
+ * `declarationsLater`, the declaration errors are left to the caller (`declarationDiagnosticsDue`).
148
+ */
149
+ export declare function getDiagnosticsOfProgram(program: CompilerProgram, withDeclarationDiagnostics: boolean, declarationsLater?: boolean): Diagnostic[];
150
+ /**
151
+ * Whether `getDiagnosticsOfProgram` adds the declaration errors to `diagnostics`: under `noEmit` (or
152
+ * `withDeclarationDiagnostics`) with declarations, when only config errors were found.
114
153
  */
115
- export declare function getDiagnosticsOfProgram(program: CompilerProgram, withDeclarationDiagnostics: boolean): Diagnostic[];
154
+ export declare function declarationDiagnosticsDue(program: CompilerProgram, diagnostics: readonly Diagnostic[], withDeclarationDiagnostics: boolean): boolean;
116
155
  /** Combines emit results in order. */
117
156
  export declare function combineEmitResults(results: readonly EmitResult[]): EmitResult;
118
157
  export { CheckedProgram };
@@ -6,6 +6,10 @@ import { CheckerDeclarationEmitResolver, CheckerEmitResolver } from './checker-e
6
6
  import { getEmitModuleFormatOfFile } from './program-utilities.js';
7
7
  import { DeclarationGlobals, SyntacticDeclarationEmitResolver } from './transformers/declarations-syntactic.js';
8
8
  import { mark } from './timeline.js';
9
+ import { DecoratorMetadata } from './transformers/decorator-metadata.js';
10
+ import { SyntaxFacts } from './transformers/syntax-facts.js';
11
+ import { EmitContext } from './printer/emit-context.js';
12
+ import { SyntacticEmitResolver } from './transformers/emit-resolver.js';
9
13
  import { ModuleFormatHost } from './transformers/module.js';
10
14
  import { ModuleLookup, ReferenceResolver } from './transformers/reference-resolver.js';
11
15
  /** Where emit writes files. */
@@ -165,6 +169,82 @@ export class EmitIndexes {
165
169
  : undefined;
166
170
  }
167
171
  }
172
+ /**
173
+ * The JavaScript emit of a program's files without a checker, for emit threads (parallel-emit.ts).
174
+ * JavaScript emit asks the checker only how decorator metadata serializes a type
175
+ * (`CheckerEmitResolver`): with `kinds`, the answers the main thread's checker gave
176
+ * (`recordMetadataKinds`), else files with decorator metadata are emitted by a `ProgramEmitter`.
177
+ */
178
+ export class JavaScriptEmitter {
179
+ host;
180
+ recorded;
181
+ constructor(program, kinds = []) {
182
+ const options = program.options;
183
+ const indexes = program.emitIndexes;
184
+ const references = new ReferenceResolver(options, program.getSourceFiles(), new ProgramModules(program), indexes !== undefined ? indexes.globals : undefined);
185
+ this.recorded = kinds.length > 0 ? new RecordedKindsEmitResolver(options, references, kinds) : undefined;
186
+ this.host = new ProgramEmitHost(program, this.recorded ?? new SyntacticEmitResolver(options, references));
187
+ }
188
+ /**
189
+ * Emits `file`, or returns undefined if its decorator metadata asked for a kind that wasn't recorded: what
190
+ * was written is then not the file's emit, and it must be emitted with the checker.
191
+ */
192
+ emit(file, writer) {
193
+ const host = this.host;
194
+ const recorded = this.recorded;
195
+ if (recorded !== undefined)
196
+ recorded.missed = false;
197
+ host.writer = writer;
198
+ const result = emitFiles(host, [file], 1 /* EmitOnly.Js */);
199
+ host.writer = undefined;
200
+ return recorded !== undefined && recorded.missed ? undefined : result;
201
+ }
202
+ }
203
+ /**
204
+ * The serialization kinds of decorator metadata that the checker of `checked` gives the type references of
205
+ * `files`, in the order JavaScript emit asks for them: the type name's node id, the location's node id (-1 for
206
+ * none) and the kind, for each. Only the decorator metadata transform runs, as the first transform of emit.
207
+ */
208
+ export function recordMetadataKinds(checked, files) {
209
+ const program = checked.program;
210
+ const options = program.options;
211
+ const indexes = program.emitIndexes;
212
+ const references = new ReferenceResolver(options, program.getSourceFiles(), new ProgramModules(program), indexes !== undefined ? indexes.globals : undefined);
213
+ const resolver = new RecordingEmitResolver(options, references, checked.checker);
214
+ for (const file of files)
215
+ new DecoratorMetadata(new EmitContext(), options, resolver, new SyntaxFacts()).transformSourceFile(file);
216
+ return resolver.kinds;
217
+ }
218
+ /** A `CheckerEmitResolver` that records the serialization kinds it gives (`recordMetadataKinds`). */
219
+ class RecordingEmitResolver extends CheckerEmitResolver {
220
+ kinds = [];
221
+ getTypeReferenceSerializationKind(typeName, location) {
222
+ const kind = super.getTypeReferenceSerializationKind(typeName, location);
223
+ this.kinds.push(typeName.id, location === undefined ? -1 : location.id, kind);
224
+ return kind;
225
+ }
226
+ }
227
+ /** Answers serialization kinds from those recorded on the main thread; `missed` once one wasn't. */
228
+ class RecordedKindsEmitResolver extends SyntacticEmitResolver {
229
+ kinds;
230
+ /** The kind and location of each type name, by the type name's node id. */
231
+ byName = new Map();
232
+ missed = false;
233
+ constructor(options, referenceResolver, kinds) {
234
+ super(options, referenceResolver);
235
+ this.kinds = kinds;
236
+ for (let i = 0; i < kinds.length; i += 3)
237
+ if (!this.byName.has(kinds[i]))
238
+ this.byName.set(kinds[i], i);
239
+ }
240
+ getTypeReferenceSerializationKind(typeName, location) {
241
+ const at = this.byName.get(typeName.id);
242
+ if (at !== undefined && this.kinds[at + 1] === (location === undefined ? -1 : location.id))
243
+ return this.kinds[at + 2];
244
+ this.missed = true;
245
+ return super.getTypeReferenceSerializationKind(typeName, location);
246
+ }
247
+ }
168
248
  /** A checked program and the emit of its files. */
169
249
  export class ProgramEmitter {
170
250
  checked;
@@ -231,6 +311,13 @@ export class CompilerProgram {
231
311
  this.times = times;
232
312
  this.emitter = new ProgramEmitter(checked);
233
313
  }
314
+ /**
315
+ * The time spent in declaration emit while checking, to count as emit time rather than check time, since
316
+ * the last call. Only an incremental program emits while checking, to compute signatures.
317
+ */
318
+ takeNestedEmitTime() {
319
+ return 0;
320
+ }
234
321
  get program() {
235
322
  return this.checked.program;
236
323
  }
@@ -250,6 +337,14 @@ export class CompilerProgram {
250
337
  getGlobalDiagnostics(withCheckerThreads = true) {
251
338
  return this.checked.getGlobalDiagnostics(withCheckerThreads);
252
339
  }
340
+ /**
341
+ * Whether the global diagnostics found by checking are reported after the semantic diagnostics. An
342
+ * incremental program has them in the semantic diagnostics of the files they were found in
343
+ * (`CheckedProgram.globalsInFileDiagnostics`).
344
+ */
345
+ reportsGlobalDiagnosticsOfChecking() {
346
+ return !this.checked.globalsInFileDiagnostics;
347
+ }
253
348
  }
254
349
  /** Collects declaration emit errors without writing anything. */
255
350
  class DiscardingWriter extends OutputWriter {
@@ -283,31 +378,36 @@ export class PlainProgram extends CompilerProgram {
283
378
  }
284
379
  emit(writer) {
285
380
  const options = this.options;
286
- if (options.noEmit !== true) {
287
- const skipped = handleNoEmitOnError(this);
288
- if (skipped !== undefined)
289
- return skipped;
290
- }
381
+ // A `noEmit` program emits nothing, and its emit is not skipped (tsgo's `HandleNoEmitOptions`): its
382
+ // declaration errors come with its other diagnostics (`getDiagnosticsOfProgram`).
383
+ if (options.noEmit === true)
384
+ return new EmitResult();
385
+ const skipped = handleNoEmitOnError(this);
386
+ if (skipped !== undefined)
387
+ return skipped;
291
388
  const program = this.program;
292
389
  const files = program.getSourceFiles();
293
390
  const parallel = this.checked.emittedInParallel;
294
- // Checker threads emitted the files they checked (parallel-check.ts); the others are emitted here, in order.
391
+ // Checker threads emitted the files they checked (parallel-check.ts), or emit threads their JavaScript
392
+ // (parallel-emit.ts); the rest is emitted here, in order.
295
393
  const result = parallel === undefined
296
394
  ? this.emitter.emit(files, 0 /* EmitOnly.All */, writer)
297
395
  : combineEmitResults(files.map((file, i) => {
298
396
  const emitted = parallel[i];
299
- return emitted !== undefined
300
- ? writeHeldOutputs(emitted, writer)
301
- : this.emitter.emit([file], 0 /* EmitOnly.All */, writer);
397
+ // The declaration thread emitted the declarations of the files it could (parallel-emit.ts).
398
+ const ahead = this.checked.declarationsEmittedAhead;
399
+ // The file's JavaScript is emitted too, here or on an emit thread.
400
+ const declarations = () => ahead?.[i] ?? this.emitter.emit([file], 4 /* EmitOnly.DtsAfterJs */, writer);
401
+ if (emitted === undefined)
402
+ return ahead !== undefined
403
+ ? combineEmitResults([this.emitter.emit([file], 1 /* EmitOnly.Js */, writer), declarations()])
404
+ : this.emitter.emit([file], 0 /* EmitOnly.All */, writer);
405
+ const written = writeHeldOutputs(emitted, writer);
406
+ // Emit threads emit JavaScript only.
407
+ if (!this.checked.javaScriptEmittedOnThreads || !getEmitDeclarations(options))
408
+ return written;
409
+ return combineEmitResults([written, declarations()]);
302
410
  }));
303
- if (options.noEmit === true) {
304
- // Emit is skipped only for files that would have been emitted.
305
- result.emitSkipped = files.some((file) => program.sourceFileMayBeEmitted(file, false));
306
- // Declaration emit still runs for its errors, as in tsgo, also when other errors were found.
307
- if (getEmitDeclarations(options) && options.noEmitOnError !== true)
308
- for (const d of this.getDeclarationDiagnostics())
309
- result.diagnostics.push(d);
310
- }
311
411
  return result;
312
412
  }
313
413
  }
@@ -325,10 +425,11 @@ export function handleNoEmitOnError(program) {
325
425
  return result;
326
426
  }
327
427
  /**
328
- * Config and syntax errors; without syntax errors, program, global and semantic errors too, and
329
- * declaration errors under `noEmit` (or `withDeclarationDiagnostics`).
428
+ * Config and syntax errors; without syntax errors, program, global and semantic errors too, and, when
429
+ * there are none of these, declaration errors under `noEmit` (or `withDeclarationDiagnostics`). With
430
+ * `declarationsLater`, the declaration errors are left to the caller (`declarationDiagnosticsDue`).
330
431
  */
331
- export function getDiagnosticsOfProgram(program, withDeclarationDiagnostics) {
432
+ export function getDiagnosticsOfProgram(program, withDeclarationDiagnostics, declarationsLater = false) {
332
433
  const result = [...program.getConfigFileParsingDiagnostics()];
333
434
  const configCount = result.length;
334
435
  for (const d of program.getSyntacticDiagnostics())
@@ -348,22 +449,33 @@ export function getDiagnosticsOfProgram(program, withDeclarationDiagnostics) {
348
449
  if (result.length === configCount) {
349
450
  const checkStart = performance.now();
350
451
  const semantic = program.getSemanticDiagnostics();
351
- program.times.checkTime = performance.now() - checkStart;
452
+ // Declaration emit that computed signatures while checking counts as emit time, as in TypeScript 7.1.
453
+ const nestedEmitTime = program.takeNestedEmitTime();
454
+ program.times.checkTime = Math.max(0, performance.now() - checkStart - nestedEmitTime);
455
+ program.times.emitTime += nestedEmitTime;
352
456
  for (const d of semantic)
353
457
  result.push(d);
354
458
  // Checking may have found more, such as missing global types.
355
- for (const d of program.getGlobalDiagnostics())
356
- result.push(d);
459
+ if (program.reportsGlobalDiagnosticsOfChecking())
460
+ for (const d of program.getGlobalDiagnostics())
461
+ result.push(d);
357
462
  mark('semantic diagnostics');
358
463
  }
359
- if ((withDeclarationDiagnostics || options.noEmit === true) &&
360
- getEmitDeclarations(options) &&
361
- result.length === configCount) {
464
+ if (!declarationsLater && declarationDiagnosticsDue(program, result, withDeclarationDiagnostics))
362
465
  for (const d of program.getDeclarationDiagnostics())
363
466
  result.push(d);
364
- }
365
467
  return result;
366
468
  }
469
+ /**
470
+ * Whether `getDiagnosticsOfProgram` adds the declaration errors to `diagnostics`: under `noEmit` (or
471
+ * `withDeclarationDiagnostics`) with declarations, when only config errors were found.
472
+ */
473
+ export function declarationDiagnosticsDue(program, diagnostics, withDeclarationDiagnostics) {
474
+ const options = program.options;
475
+ return ((withDeclarationDiagnostics || options.noEmit === true) &&
476
+ getEmitDeclarations(options) &&
477
+ diagnostics.length === program.getConfigFileParsingDiagnostics().length);
478
+ }
367
479
  /** Combines emit results in order. */
368
480
  export function combineEmitResults(results) {
369
481
  const result = new EmitResult();