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
@@ -109,6 +109,11 @@ export declare class Diagnostic {
109
109
  readonly reportsDeprecated: boolean;
110
110
  skippedOnNoEmit: boolean;
111
111
  repopulateInfo: RepopulateInfo | undefined;
112
+ /**
113
+ * What `formatDiagnostic` gives for this diagnostic in `formattedReports.format`, where the checker
114
+ * thread that found it formatted it (`packResult`); `''` otherwise.
115
+ */
116
+ formatted: string;
112
117
  constructor(file: DiagnosticFile | undefined, pos: number, end: number, message: DiagnosticMessage, args?: readonly string[]);
113
118
  localize(locale: Locale): string;
114
119
  addMessageChain(chain: Diagnostic | undefined): Diagnostic;
@@ -132,6 +137,14 @@ export declare function chainDiagnostic(chain: Diagnostic | undefined, message:
132
137
  export declare function compareCodePoints(a: string, b: string): number;
133
138
  /** The order tsc reports diagnostics in: by file, position, code, arguments, then elaboration. */
134
139
  export declare function compareDiagnostics(a: Diagnostic, b: Diagnostic): number;
140
+ /**
141
+ * `diagnostics` in the order of `compareDiagnostics`, equal ones in their order in `diagnostics`. File
142
+ * names are compared once per pair of files rather than once per pair of diagnostics: the distinct
143
+ * files are sorted by name, and each diagnostic sorts by its file's place in that order, then by the
144
+ * rest of `compareDiagnostics`. A program's diagnostics come a file at a time, so the files are found
145
+ * from the runs of one file.
146
+ */
147
+ export declare function sortDiagnostics(diagnostics: readonly Diagnostic[]): Diagnostic[];
135
148
  /** Whether two diagnostics report the same thing, ignoring related information. */
136
149
  export declare function equalDiagnosticsNoRelatedInfo(a: Diagnostic, b: Diagnostic): boolean;
137
150
  export declare function equalDiagnostics(a: Diagnostic, b: Diagnostic): boolean;
@@ -145,6 +158,15 @@ export interface DiagnosticFormatOptions {
145
158
  export declare function flattenDiagnosticMessage(diagnostic: Diagnostic, newLine: string, locale: Locale): string;
146
159
  /** `file(line,col): error TS1005: message`, as tsc prints without `--pretty`. */
147
160
  export declare function formatDiagnostic(diagnostic: Diagnostic, options: DiagnosticFormatOptions): string;
161
+ /**
162
+ * The plain format the main thread reports a compilation's diagnostics in (`DiagnosticReporter.plainFormat`),
163
+ * which its checker threads receive a copy of and format the diagnostics they send back in
164
+ * (`Diagnostic.formatted`). Unset where diagnostics are reported with color and context, or not at all.
165
+ */
166
+ export declare class FormattedReports {
167
+ format: DiagnosticFormatOptions | undefined;
168
+ }
169
+ export declare const formattedReports: FormattedReports;
148
170
  /** `formatDiagnostic` of each diagnostic. */
149
171
  export declare function formatDiagnostics(diagnostics: readonly Diagnostic[], options: DiagnosticFormatOptions): string;
150
172
  /** The colored form with source snippets, as tsc prints with `--pretty`. */
@@ -326,6 +326,11 @@ export class Diagnostic {
326
326
  reportsDeprecated;
327
327
  skippedOnNoEmit = false;
328
328
  repopulateInfo = undefined;
329
+ /**
330
+ * What `formatDiagnostic` gives for this diagnostic in `formattedReports.format`, where the checker
331
+ * thread that found it formatted it (`packResult`); `''` otherwise.
332
+ */
333
+ formatted = '';
329
334
  constructor(file, pos, end, message, args = []) {
330
335
  this.file = file;
331
336
  this.pos = pos;
@@ -358,6 +363,7 @@ export class Diagnostic {
358
363
  result.relatedInformation = this.relatedInformation;
359
364
  result.skippedOnNoEmit = this.skippedOnNoEmit;
360
365
  result.repopulateInfo = this.repopulateInfo;
366
+ result.formatted = this.formatted;
361
367
  return result;
362
368
  }
363
369
  }
@@ -463,10 +469,12 @@ function compareRelatedInfo(a, b) {
463
469
  export function compareDiagnostics(a, b) {
464
470
  if (a === b)
465
471
  return 0;
466
- let c = compareCodePoints(fileNameOf(a), fileNameOf(b));
467
- if (c !== 0)
468
- return c;
469
- c = a.pos - b.pos;
472
+ const c = compareCodePoints(fileNameOf(a), fileNameOf(b));
473
+ return c !== 0 ? c : compareDiagnosticsInFile(a, b);
474
+ }
475
+ /** `compareDiagnostics` of two diagnostics whose files have the same name. */
476
+ function compareDiagnosticsInFile(a, b) {
477
+ let c = a.pos - b.pos;
470
478
  if (c !== 0)
471
479
  return c;
472
480
  c = a.end - b.end;
@@ -486,6 +494,66 @@ export function compareDiagnostics(a, b) {
486
494
  return c;
487
495
  return compareRelatedInfo(a.relatedInformation, b.relatedInformation);
488
496
  }
497
+ /**
498
+ * `diagnostics` in the order of `compareDiagnostics`, equal ones in their order in `diagnostics`. File
499
+ * names are compared once per pair of files rather than once per pair of diagnostics: the distinct
500
+ * files are sorted by name, and each diagnostic sorts by its file's place in that order, then by the
501
+ * rest of `compareDiagnostics`. A program's diagnostics come a file at a time, so the files are found
502
+ * from the runs of one file.
503
+ */
504
+ export function sortDiagnostics(diagnostics) {
505
+ const n = diagnostics.length;
506
+ if (n < 2)
507
+ return diagnostics.slice();
508
+ const fileIndices = new Map();
509
+ const files = [];
510
+ const fileOf = [];
511
+ let last = undefined;
512
+ let lastIndex = -1;
513
+ for (let i = 0; i < n; i++) {
514
+ const file = diagnostics[i].file;
515
+ if (lastIndex < 0 || file !== last) {
516
+ let k = fileIndices.get(file);
517
+ if (k === undefined) {
518
+ k = files.length;
519
+ fileIndices.set(file, k);
520
+ files.push(file);
521
+ }
522
+ last = file;
523
+ lastIndex = k;
524
+ }
525
+ fileOf.push(lastIndex);
526
+ }
527
+ // Files with the same name share a rank, as they compare equal.
528
+ const nameOf = (k) => {
529
+ const file = files[k];
530
+ return file === undefined ? '' : file.fileName;
531
+ };
532
+ const byName = [];
533
+ for (let k = 0; k < files.length; k++)
534
+ byName.push(k);
535
+ byName.sort((x, y) => compareCodePoints(nameOf(x), nameOf(y)));
536
+ const rank = [];
537
+ for (let k = 0; k < files.length; k++)
538
+ rank.push(0);
539
+ for (let k = 1; k < byName.length; k++)
540
+ rank[byName[k]] = rank[byName[k - 1]] + (nameOf(byName[k]) === nameOf(byName[k - 1]) ? 0 : 1);
541
+ const order = [];
542
+ for (let i = 0; i < n; i++)
543
+ order.push(i);
544
+ order.sort((x, y) => {
545
+ const c = rank[fileOf[x]] - rank[fileOf[y]];
546
+ if (c !== 0)
547
+ return c;
548
+ const a = diagnostics[x];
549
+ const b = diagnostics[y];
550
+ return a === b ? 0 : compareDiagnosticsInFile(a, b);
551
+ });
552
+ const sorted = [];
553
+ for (const i of order)
554
+ sorted.push(diagnostics[i]);
555
+ return sorted;
556
+ }
489
557
  function equalChain(a, b) {
490
558
  if (a.length !== b.length)
491
559
  return false;
@@ -567,13 +635,27 @@ function formatDiagnosticIn(diagnostic, fileName, options) {
567
635
  result += `${categoryName(diagnostic.category)} TS${diagnostic.code}: `;
568
636
  return result + flattenDiagnosticMessage(diagnostic, options.newLine, options.locale) + options.newLine;
569
637
  }
638
+ /**
639
+ * The plain format the main thread reports a compilation's diagnostics in (`DiagnosticReporter.plainFormat`),
640
+ * which its checker threads receive a copy of and format the diagnostics they send back in
641
+ * (`Diagnostic.formatted`). Unset where diagnostics are reported with color and context, or not at all.
642
+ */
643
+ export class FormattedReports {
644
+ format = undefined;
645
+ }
646
+ export const formattedReports = new FormattedReports();
570
647
  /** `formatDiagnostic` of each diagnostic. */
571
648
  export function formatDiagnostics(diagnostics, options) {
572
649
  let result = '';
650
+ const formatted = options === formattedReports.format;
573
651
  // Sorted diagnostics come a file at a time: the relative name of the last file is kept.
574
652
  let lastFile = undefined;
575
653
  let lastName = '';
576
654
  for (const diagnostic of diagnostics) {
655
+ if (formatted && diagnostic.formatted !== '') {
656
+ result += diagnostic.formatted;
657
+ continue;
658
+ }
577
659
  const file = diagnostic.file;
578
660
  if (file !== undefined && file !== lastFile) {
579
661
  lastFile = file;
@@ -665,7 +747,7 @@ export function formatDiagnosticWithColorAndContext(diagnostic, options) {
665
747
  result += styled(categoryName(diagnostic.category), color);
666
748
  result += `${grey} TS${diagnostic.code}: ${reset}`;
667
749
  result += flattenDiagnosticMessage(diagnostic, newLine, options.locale);
668
- if (file !== undefined && diagnostic.code !== messageCode(405 /* Diagnostics.File_appears_to_be_binary */)) {
750
+ if (file !== undefined && diagnostic.code !== messageCode(403 /* Diagnostics.File_appears_to_be_binary */)) {
669
751
  result +=
670
752
  newLine + codeSnippet(file, diagnostic.pos, diagnostic.end - diagnostic.pos, color, '', options) + newLine;
671
753
  }
@@ -749,20 +831,20 @@ export function formatErrorSummary(diagnostics, options) {
749
831
  if (totalErrorCount === 1) {
750
832
  message =
751
833
  globalErrorCount > 0 || firstFileName === ''
752
- ? localizeMessage(locale, 1369 /* Diagnostics.Found_1_error */, [])
753
- : localizeMessage(locale, 1411 /* Diagnostics.Found_1_error_in_0 */, [firstFileName]);
834
+ ? localizeMessage(locale, 1380 /* Diagnostics.Found_1_error */, [])
835
+ : localizeMessage(locale, 1422 /* Diagnostics.Found_1_error_in_0 */, [firstFileName]);
754
836
  }
755
837
  else if (fileCount === 0) {
756
- message = localizeMessage(locale, 1370 /* Diagnostics.Found_0_errors */, [String(totalErrorCount)]);
838
+ message = localizeMessage(locale, 1381 /* Diagnostics.Found_0_errors */, [String(totalErrorCount)]);
757
839
  }
758
840
  else if (fileCount === 1) {
759
- message = localizeMessage(locale, 1412 /* Diagnostics.Found_0_errors_in_the_same_file_starting_at_Colon_1 */, [
841
+ message = localizeMessage(locale, 1423 /* Diagnostics.Found_0_errors_in_the_same_file_starting_at_Colon_1 */, [
760
842
  String(totalErrorCount),
761
843
  firstFileName,
762
844
  ]);
763
845
  }
764
846
  else {
765
- message = localizeMessage(locale, 1413 /* Diagnostics.Found_0_errors_in_1_files */, [
847
+ message = localizeMessage(locale, 1424 /* Diagnostics.Found_0_errors_in_1_files */, [
766
848
  String(totalErrorCount),
767
849
  String(fileCount),
768
850
  ]);
@@ -772,7 +854,7 @@ export function formatErrorSummary(diagnostics, options) {
772
854
  let maxErrors = 0;
773
855
  for (const entry of sorted)
774
856
  maxErrors = Math.max(maxErrors, entry.errors.length);
775
- const headerRow = localizeMessage(locale, 1220 /* Diagnostics.Errors_Files */, []);
857
+ const headerRow = localizeMessage(locale, 1231 /* Diagnostics.Errors_Files */, []);
776
858
  const leftColumnHeadingLength = utf8Length(headerRow.split(' ')[0]);
777
859
  const lengthOfBiggestErrorCount = String(maxErrors).length;
778
860
  const leftPaddingGoal = Math.max(leftColumnHeadingLength, lengthOfBiggestErrorCount);
@@ -66,6 +66,12 @@ export declare const enum EmitOnly {
66
66
  * The declaration file alone, even without `declaration` and despite errors, for the shape
67
67
  * signature of incremental builds; it is written with its errors and without a map.
68
68
  */
69
- ForcedDts = 3
69
+ ForcedDts = 3,
70
+ /**
71
+ * The declaration file of a file whose JavaScript this build emits in a separate request, such as on another
72
+ * thread. tsgo emits both with one emit context, so the emit flags its JavaScript transforms set on the file's
73
+ * own nodes also apply to its declarations; this replays those transforms first.
74
+ */
75
+ DtsAfterJs = 4
70
76
  }
71
77
  export declare function emitFiles(host: EmitHost, files: readonly SourceFile[], emitOnly?: EmitOnly): EmitResult;
@@ -1,4 +1,4 @@
1
- import { compareDiagnostics } from './diagnostics.js';
1
+ import { compareDiagnostics, equalDiagnostics } from './diagnostics.js';
2
2
  import { JsxEmit, NewLineKind, getEmitScriptTarget, getIsolatedModules } from './options.js';
3
3
  import { getOutputPathsFor } from './output-paths.js';
4
4
  import { combinePaths, fileExtensionIs, getBaseFileName, getDirectoryPath, getRootLength, normalizePath, normalizeSlashes, ensureTrailingDirectorySeparator, containsPath, getNormalizedAbsolutePath, } from './path.js';
@@ -107,30 +107,52 @@ export function emitFiles(host, files, emitOnly = 0 /* EmitOnly.All */) {
107
107
  if (!sourceFileMayBeEmitted(file, options) || host.isSourceFileFromExternalLibrary(file))
108
108
  continue;
109
109
  const paths = getOutputPathsFor(file.fileName, file.scriptKind === 6 /* ScriptKind.JSON */, options, host, forced);
110
+ // As in tsgo, a file's JavaScript and declarations share one emit context: emit flags that JavaScript
111
+ // transforms set on the file's own nodes, such as a decorated parameter's name, also apply to its declarations.
112
+ const context = new EmitContext();
110
113
  if (paths.jsFilePath !== '' && (emitOnly === 0 /* EmitOnly.All */ || emitOnly === 1 /* EmitOnly.Js */)) {
111
114
  if (host.isEmitBlocked(paths.jsFilePath))
112
115
  result.emitSkipped = true;
113
116
  else
114
- emitJSFile(host, file, paths.jsFilePath, paths.sourceMapFilePath, result);
117
+ emitJSFile(host, context, file, paths.jsFilePath, paths.sourceMapFilePath, result);
115
118
  }
116
119
  if (paths.declarationFilePath !== '' && emitOnly !== 1 /* EmitOnly.Js */) {
117
120
  if (!forced && host.isEmitBlocked(paths.declarationFilePath))
118
121
  result.emitSkipped = true;
119
- else
120
- emitDeclarationFile(host, file, paths.declarationFilePath, paths.declarationMapPath, result, forced);
122
+ else {
123
+ if (emitOnly === 4 /* EmitOnly.DtsAfterJs */ && paths.jsFilePath !== '')
124
+ replayScriptTransforms(host, context, file);
125
+ emitDeclarationFile(host, context, file, paths.declarationFilePath, paths.declarationMapPath, result, forced);
126
+ }
121
127
  }
122
128
  }
123
129
  return result;
124
130
  }
131
+ /**
132
+ * Runs the JavaScript transforms of `file` in `context` without printing, for the emit flags they set on the
133
+ * file's own nodes. Only the decorator transforms set any that declaration emit prints (on decorated parameters'
134
+ * names), so files without decorators are skipped.
135
+ */
136
+ function replayScriptTransforms(host, context, file) {
137
+ if (!new SyntaxFacts().has(file, 262144 /* SubtreeFacts.ContainsDecorators */))
138
+ return;
139
+ let transformed = file;
140
+ const transformers = getScriptTransformers(host, context, file);
141
+ for (let i = 0; i < transformers.length; i++) {
142
+ const transformer = transformers[i];
143
+ if (transformer.unsupported !== '')
144
+ return;
145
+ transformed = transformer.transformSourceFile(transformed);
146
+ }
147
+ }
125
148
  /** Emits a declaration file; the host's resolver must be a `DeclarationEmitResolver`. */
126
- function emitDeclarationFile(host, file, declarationFilePath, declarationMapPath, result, forced) {
149
+ function emitDeclarationFile(host, context, file, declarationFilePath, declarationMapPath, result, forced) {
127
150
  const resolver = host.resolver;
128
151
  if (!(resolver instanceof DeclarationEmitResolver)) {
129
152
  result.errors.push(file.fileName + ': declaration emit needs a declaration resolver');
130
153
  return false;
131
154
  }
132
155
  const options = host.options;
133
- const context = new EmitContext();
134
156
  const transformer = new DeclarationTransformer(context, host, options, resolver, declarationFilePath);
135
157
  const transformed = transformer.transformSourceFile(file);
136
158
  result.declarationTransformed = true;
@@ -152,9 +174,30 @@ function emitDeclarationFile(host, file, declarationFilePath, declarationMapPath
152
174
  printerOptions.omitBraceSourceMapPositions = true;
153
175
  const printer = new Printer(printerOptions, context);
154
176
  const emitSourceMaps = declarationMap && !fileExtensionIs(file.fileName, '.json');
155
- return printSourceFile(host, declarationFilePath, forced ? '' : declarationMapPath, transformed, printer, emitSourceMaps, false, result,
156
- // Sorted, as tsgo's emitter diagnostics are; the order is part of the file's signature in build info.
157
- diagnostics.length > 1 ? diagnostics.toSorted(compareDiagnostics) : diagnostics);
177
+ return printSourceFile(host, declarationFilePath, forced ? '' : declarationMapPath, transformed, printer, emitSourceMaps, false, result, emitterDiagnostics(diagnostics));
178
+ }
179
+ /**
180
+ * Declaration diagnostics as tsgo's emitter collects them: sorted, without repeats of an equal
181
+ * diagnostic. They are part of the file's signature in build info.
182
+ */
183
+ function emitterDiagnostics(diagnostics) {
184
+ if (diagnostics.length < 2)
185
+ return diagnostics;
186
+ const sorted = diagnostics.toSorted(compareDiagnostics);
187
+ const result = [];
188
+ for (const diagnostic of sorted) {
189
+ // Equal diagnostics compare as 0, so a repeat is among the last ones kept that compare as 0.
190
+ let repeated = false;
191
+ for (let i = result.length - 1; i >= 0 && compareDiagnostics(result[i], diagnostic) === 0; i--) {
192
+ if (equalDiagnostics(result[i], diagnostic)) {
193
+ repeated = true;
194
+ break;
195
+ }
196
+ }
197
+ if (!repeated)
198
+ result.push(diagnostic);
199
+ }
200
+ return result;
158
201
  }
159
202
  function getScriptTransformers(host, context, file) {
160
203
  const options = host.options;
@@ -182,9 +225,8 @@ function isJsxTransformEnabled(options) {
182
225
  const jsx = options.jsx;
183
226
  return jsx === JsxEmit.React || jsx === JsxEmit.ReactJSX || jsx === JsxEmit.ReactJSXDev;
184
227
  }
185
- function emitJSFile(host, file, jsFilePath, sourceMapFilePath, result) {
228
+ function emitJSFile(host, context, file, jsFilePath, sourceMapFilePath, result) {
186
229
  const options = host.options;
187
- const context = new EmitContext();
188
230
  let transformed = file;
189
231
  const transformers = getScriptTransformers(host, context, file);
190
232
  for (let i = 0; i < transformers.length; i++) {
@@ -125,7 +125,8 @@ export declare class IncludeProcessor {
125
125
  /** The program is created: the processing diagnostics so far are those a copy takes. */
126
126
  noteProgramCreated(): void;
127
127
  reasonsOf(path: string): readonly FileIncludeReason[];
128
- addReason(path: string, reason: FileIncludeReason): void;
128
+ /** Adds an include reason of the file at `path`; returns the file's reasons. */
129
+ addReason(path: string, reason: FileIncludeReason): FileIncludeReason[];
129
130
  addProcessingDiagnostic(diagnostic: ProcessingDiagnostic): void;
130
131
  /** Reports a file name that differs from an included one only in casing. */
131
132
  addCasingDiagnostic(file: string, existingCasing: string, currentCasing: string, reason: FileIncludeReason | undefined): void;
@@ -347,14 +347,14 @@ export class ProcessingDiagnostic {
347
347
  const location = reason.getReferencedLocation(program);
348
348
  const fileName = location.ref?.fileName ?? '';
349
349
  if (reason.kind === 2 /* FileIncludeKind.TypeReferenceDirective */) {
350
- return location.diagnosticAt(821 /* Diagnostics.Cannot_find_type_definition_file_for_0 */, fileName);
350
+ return location.diagnosticAt(828 /* Diagnostics.Cannot_find_type_definition_file_for_0 */, fileName);
351
351
  }
352
352
  const libName = toFileNameLowerCase(fileName);
353
353
  const unqualified = stripLibAffixes(libName);
354
354
  const suggestion = getSpellingSuggestion(unqualified, libNames);
355
355
  return suggestion !== ''
356
- ? location.diagnosticAt(859 /* Diagnostics.Cannot_find_lib_definition_for_0_Did_you_mean_1 */, libName, suggestion)
357
- : location.diagnosticAt(858 /* Diagnostics.Cannot_find_lib_definition_for_0 */, libName, suggestion);
356
+ ? location.diagnosticAt(866 /* Diagnostics.Cannot_find_lib_definition_for_0_Did_you_mean_1 */, libName, suggestion)
357
+ : location.diagnosticAt(865 /* Diagnostics.Cannot_find_lib_definition_for_0 */, libName, suggestion);
358
358
  }
359
359
  return this.explainFile(program);
360
360
  }
@@ -495,12 +495,16 @@ export class IncludeProcessor {
495
495
  reasonsOf(path) {
496
496
  return this.fileIncludeReasons.get(path) ?? [];
497
497
  }
498
+ /** Adds an include reason of the file at `path`; returns the file's reasons. */
498
499
  addReason(path, reason) {
499
500
  const reasons = this.fileIncludeReasons.get(path);
500
- if (reasons === undefined)
501
- this.fileIncludeReasons.set(path, [reason]);
502
- else
503
- reasons.push(reason);
501
+ if (reasons === undefined) {
502
+ const added = [reason];
503
+ this.fileIncludeReasons.set(path, added);
504
+ return added;
505
+ }
506
+ reasons.push(reason);
507
+ return reasons;
504
508
  }
505
509
  addProcessingDiagnostic(diagnostic) {
506
510
  this.processingDiagnostics.push(diagnostic);
@@ -147,6 +147,11 @@ export declare class ProcessedFiles {
147
147
  * threads (`preparedPackageJsonLookups`); `undefined` where they may miss some.
148
148
  */
149
149
  readonly preparedPackageJsons: readonly PackageJsonLookup[] | undefined;
150
+ /**
151
+ * The files each file's imports and type reference directives added to the program, by index into
152
+ * `files`, without the file itself.
153
+ */
154
+ readonly addedFiles: readonly (readonly number[])[];
150
155
  constructor(resolver: Resolver,
151
156
  /** Libraries first, sorted, then other files in load order. */
152
157
  files: readonly SourceFile[], filesByPath: ReadonlyMap<string, SourceFile>, missingFiles: readonly string[], resolvedModules: ReadonlyMap<string, ModeAwareCache<ResolvedModule> | undefined>, typeResolutionsInFile: ReadonlyMap<string, ModeAwareCache<ResolvedTypeReferenceDirective> | undefined>, sourceFileMetadata: ReadonlyMap<string, SourceFileMetadata>, jsxRuntimeImports: ReadonlyMap<string, JsxRuntimeImport>, importHelpersImportSpecifiers: ReadonlyMap<string, StringLiteral>, libFiles: ReadonlyMap<string, LibFile>,
@@ -158,7 +163,12 @@ export declare class ProcessedFiles {
158
163
  * The `package.json` lookups made resolving the files whose resolutions were taken from parse
159
164
  * threads (`preparedPackageJsonLookups`); `undefined` where they may miss some.
160
165
  */
161
- preparedPackageJsons: readonly PackageJsonLookup[] | undefined);
166
+ preparedPackageJsons: readonly PackageJsonLookup[] | undefined,
167
+ /**
168
+ * The files each file's imports and type reference directives added to the program, by index into
169
+ * `files`, without the file itself.
170
+ */
171
+ addedFiles: readonly (readonly number[])[]);
162
172
  }
163
173
  /** The files of `processed` with `file` in place of the file at its path, for `Program.updateFile`. */
164
174
  export declare function withReplacedFile(processed: ProcessedFiles, file: SourceFile): ProcessedFiles;
@@ -186,6 +196,9 @@ export declare class FileLoader {
186
196
  private readonly supportedExtensionsWithJson;
187
197
  private readonly maxNodeModuleJsDepth;
188
198
  private readonly rootTasks;
199
+ /** The tasks of each path, created when a task of the path is first queued or built ahead. */
200
+ private readonly taskData;
201
+ /** The index in `taskData` of each path's tasks. */
189
202
  private readonly taskDataByPath;
190
203
  /** Work queued by `start`, run last-in first-out like tsgo's single-threaded work group. */
191
204
  private readonly work;
@@ -263,7 +276,14 @@ export declare class FileLoader {
263
276
  private pathForLibFile;
264
277
  private libFilePriority;
265
278
  private start;
279
+ /** The index in `taskData` of the tasks of `path`, created if needed. */
280
+ private dataIndexOf;
266
281
  private run;
282
+ /**
283
+ * Whether `run` drops `work` without loading its file: a JavaScript file past `maxNodeModuleJsDepth`,
284
+ * which no parse thread prepares, so the walk ahead does not wait for it.
285
+ */
286
+ private elides;
267
287
  /**
268
288
  * Whether running the work of `task` (of `data`'s path) may parse a file that parse threads have not
269
289
  * prepared yet: a task of the path not loaded yet, or `task`, a new casing.