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
@@ -7,7 +7,7 @@
7
7
  * ```
8
8
  */
9
9
  import { ArrayLiteralExpression, Decorator, getText, NodeVisitor, ObjectLiteralExpression, ParameterDeclaration, } from './ast.js';
10
- import { compareDiagnostics, createCompilerDiagnostic, Diagnostic, equalDiagnostics, equalDiagnosticsNoRelatedInfo, useThreadTextCaches, } from './diagnostics.js';
10
+ import { compareDiagnostics, createCompilerDiagnostic, Diagnostic, equalDiagnostics, equalDiagnosticsNoRelatedInfo, sortDiagnostics, useThreadTextCaches, } from './diagnostics.js';
11
11
  import { canReplaceFile, FileLoader, jsxRuntimeImportOf, modeAwareKey, needsImportHelpersImportSpecifier, withReplacedFile, } from './file-loader.js';
12
12
  import { PackageJsonLookup } from './package-json.js';
13
13
  import { ProcessingDiagnostic } from './file-include.js';
@@ -15,10 +15,11 @@ import { getTypesPackageName, moduleResolutionKindName } from './module-resoluti
15
15
  import { getAllowJS, getEmitDeclarations, getEmitModuleKind, getEmitScriptTarget, getModuleResolutionKind, getStrictOptionValue, JsxEmit, ModuleKind, ModuleResolutionKind, ScriptTarget, } from './options.js';
16
16
  import { getCommonSourceDirectory, getComputedCommonSourceDirectory, getOutputPathsFor, getSourceFilePathInNewDirWorker, } from './output-paths.js';
17
17
  import { parseIsolatedEntityName } from './parser.js';
18
- import { combinePaths, comparePaths, containsPath, getBaseFileName, getCanonicalFileName, getDirectoryPath, getNormalizedAbsolutePath, getPathComponentsRelativeTo, getPathFromPathComponents, getRelativePathFromFile, getRootLength, pathIsAbsolute, pathIsRelative, toFileNameLowerCase, toPath, } from './path.js';
18
+ import { combinePaths, comparePaths, containsPath, getBaseFileName, getCanonicalFileName, getDirectoryPath, getNormalizedAbsolutePath, getPathComponentsRelativeTo, getPathFromPathComponents, getRelativePathFromFile, getRootLength, pathIsAbsolute, pathIsRelative, toFileNameLowerCase, toPath, isNetworkPathValue, } from './path.js';
19
19
  import { getDefaultResolutionModeForFile, getImpliedNodeFormatForEmit, getModeForUsageLocation, isCheckJsEnabledForFile, isSourceFileJS, jsxEmitName, moduleKindName, libFileMetadata, } from './program-utilities.js';
20
20
  import { isIdentifierText } from './scanner.js';
21
21
  import { diagnosticAtNode, findPropertyAssignment, getTsConfigObjectLiteral, } from './tsconfig.js';
22
+ import { isSourcePhaseImport } from './ast-utilities.js';
22
23
  import { KnownSymlinks } from './symlinks.js';
23
24
  import { mark } from './timeline.js';
24
25
  // The symlink caches and packages maps of programs shared with other threads (`prepareForSharing`),
@@ -187,6 +188,10 @@ export class Program {
187
188
  getRedirectTargets(path) {
188
189
  return this.processed.redirectTargets.get(path) ?? [];
189
190
  }
191
+ /** The nearest `package.json` lookup at or above `directory`. */
192
+ getPackageScopeForPath(directory) {
193
+ return this.processed.resolver.getPackageScopeForPath(directory);
194
+ }
190
195
  /** The directory of the nearest `package.json` at or above `directory`, or `''`. */
191
196
  getNearestAncestorDirectoryWithPackageJson(directory) {
192
197
  const scope = this.processed.resolver.getPackageScopeForPath(directory);
@@ -255,7 +260,8 @@ export class Program {
255
260
  symlinks.hasDirectory(this.toPath(combinePaths(combinePaths(directory, 'node_modules'), getTypesPackageName(dependency)))))
256
261
  continue;
257
262
  const resolved = resolver.resolvePackageDirectory(dependency, packageJsonName, ModuleKind.CommonJS);
258
- if (resolved !== undefined && resolved.resolvedFileName !== '')
263
+ // A dependency installed in place has no original path to map from.
264
+ if (resolved !== undefined && resolved.resolvedFileName !== '' && resolved.originalPath !== '')
259
265
  symlinks.processResolution(combinePaths(resolved.originalPath, 'package.json'), combinePaths(resolved.resolvedFileName, 'package.json'));
260
266
  }
261
267
  }
@@ -325,40 +331,18 @@ export class Program {
325
331
  getResolvedModule(file, moduleName, mode) {
326
332
  return this.processed.resolvedModules.get(file.path)?.get(modeAwareKey(moduleName, mode));
327
333
  }
328
- /** The program files that the imports and type reference directives of `file` resolved to. */
329
- /**
330
- * The files `file` imports and references through type directives. `byFileName`, the program's
331
- * files by file name, finds a file without computing its path when it is resolved by that name.
332
- */
333
- getResolvedFilesOf(file, byFileName) {
334
- const result = [];
335
- const modules = this.processed.resolvedModules.get(file.path);
336
- if (modules !== undefined)
337
- for (const resolved of modules.values()) {
338
- const name = resolved.resolvedFileName;
339
- if (name === '')
340
- continue;
341
- const target = byFileName?.get(name) ?? this.getSourceFileForResolvedModule(name);
342
- if (target !== undefined)
343
- result.push(target);
344
- }
345
- const types = this.processed.typeResolutionsInFile.get(file.path);
346
- if (types !== undefined)
347
- for (const resolved of types.values()) {
348
- const name = resolved.resolvedFileName;
349
- if (name === '')
350
- continue;
351
- const target = byFileName?.get(name) ?? this.getSourceFile(name);
352
- if (target !== undefined)
353
- result.push(target);
354
- }
355
- return result;
334
+ /** The files each file added to the program (`ProcessedFiles.addedFiles`), as indices of `getSourceFiles`. */
335
+ addedFiles() {
336
+ return this.processed.addedFiles;
356
337
  }
357
338
  /** The specifier of the implicit JSX runtime import of `file`, if any. */
358
339
  jsxRuntimeImportSpecifier(path) {
359
340
  return this.processed.jsxRuntimeImports.get(path)?.specifier;
360
341
  }
361
342
  getResolvedModuleFromModuleSpecifier(file, specifier) {
343
+ // A source phase import loads no module declarations.
344
+ if (specifier.parent !== undefined && isSourcePhaseImport(specifier.parent))
345
+ return undefined;
362
346
  const text = specifierText(specifier);
363
347
  return this.getResolvedModule(file, text, this.getModeForUsageLocation(file, specifier));
364
348
  }
@@ -408,7 +392,7 @@ export class Program {
408
392
  if (containsPath(root, file, this.useCaseSensitiveFileNames, this.currentDirectory))
409
393
  continue;
410
394
  const absolute = getCanonicalFileName(getNormalizedAbsolutePath(file, this.currentDirectory), this.useCaseSensitiveFileNames);
411
- this.includeProcessor.addProcessingDiagnostic(ProcessingDiagnostic.explainingFileInclude(absolute, undefined, 1234 /* Diagnostics.File_0_is_not_under_rootDir_1_rootDir_is_expected_to_contain_all_source_files */, [file, root]));
395
+ this.includeProcessor.addProcessingDiagnostic(ProcessingDiagnostic.explainingFileInclude(absolute, undefined, 1245 /* Diagnostics.File_0_is_not_under_rootDir_1_rootDir_is_expected_to_contain_all_source_files */, [file, root]));
412
396
  }
413
397
  }
414
398
  /**
@@ -574,10 +558,10 @@ export class Program {
574
558
  }
575
559
  removedOptionDiagnostic(name, value, useInstead) {
576
560
  const diagnostic = value === ''
577
- ? this.optionDiagnostic(true, name, '', 1174 /* Diagnostics.Option_0_has_been_removed_Please_remove_it_from_your_configuration */, [name])
578
- : this.optionDiagnostic(false, name, '', 1180 /* Diagnostics.Option_0_1_has_been_removed_Please_remove_it_from_your_configuration */, [name, value]);
561
+ ? this.optionDiagnostic(true, name, '', 1181 /* Diagnostics.Option_0_has_been_removed_Please_remove_it_from_your_configuration */, [name])
562
+ : this.optionDiagnostic(false, name, '', 1187 /* Diagnostics.Option_0_1_has_been_removed_Please_remove_it_from_your_configuration */, [name, value]);
579
563
  if (useInstead !== '')
580
- diagnostic.addMessageChain(createCompilerDiagnostic(1178 /* Diagnostics.Use_0_instead */, useInstead));
564
+ diagnostic.addMessageChain(createCompilerDiagnostic(1185 /* Diagnostics.Use_0_instead */, useInstead));
581
565
  }
582
566
  pathsDiagnostic(onKey, key, message, args) {
583
567
  const paths = findPropertyAssignment(this.compilerOptionsObject(), 'paths');
@@ -639,37 +623,37 @@ export class Program {
639
623
  this.removedOptionDiagnostic('downlevelIteration', '', '');
640
624
  const strictNullChecks = getStrictOptionValue(options, options.strictNullChecks);
641
625
  if (options.strictPropertyInitialization === true && !strictNullChecks) {
642
- this.optionNameDiagnostic(1128 /* Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1 */, 'strictPropertyInitialization', 'strictNullChecks');
626
+ this.optionNameDiagnostic(1135 /* Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1 */, 'strictPropertyInitialization', 'strictNullChecks');
643
627
  }
644
628
  if (options.exactOptionalPropertyTypes === true && !strictNullChecks) {
645
- this.optionNameDiagnostic(1128 /* Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1 */, 'exactOptionalPropertyTypes', 'strictNullChecks');
629
+ this.optionNameDiagnostic(1135 /* Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1 */, 'exactOptionalPropertyTypes', 'strictNullChecks');
646
630
  }
647
631
  if (options.isolatedDeclarations === true) {
648
632
  if (getAllowJS(options)) {
649
- this.optionNameDiagnostic(1129 /* Diagnostics.Option_0_cannot_be_specified_with_option_1 */, 'allowJs', 'isolatedDeclarations');
633
+ this.optionNameDiagnostic(1136 /* Diagnostics.Option_0_cannot_be_specified_with_option_1 */, 'allowJs', 'isolatedDeclarations');
650
634
  }
651
635
  if (!getEmitDeclarations(options)) {
652
- this.optionNameDiagnostic(1144 /* Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1_or_option_2 */, 'isolatedDeclarations', 'declaration', 'composite');
636
+ this.optionNameDiagnostic(1151 /* Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1_or_option_2 */, 'isolatedDeclarations', 'declaration', 'composite');
653
637
  }
654
638
  }
655
639
  if (options.inlineSourceMap === true) {
656
640
  if (options.sourceMap === true) {
657
- this.optionNameDiagnostic(1129 /* Diagnostics.Option_0_cannot_be_specified_with_option_1 */, 'sourceMap', 'inlineSourceMap');
641
+ this.optionNameDiagnostic(1136 /* Diagnostics.Option_0_cannot_be_specified_with_option_1 */, 'sourceMap', 'inlineSourceMap');
658
642
  }
659
643
  if (options.mapRoot !== undefined) {
660
- this.optionNameDiagnostic(1129 /* Diagnostics.Option_0_cannot_be_specified_with_option_1 */, 'mapRoot', 'inlineSourceMap');
644
+ this.optionNameDiagnostic(1136 /* Diagnostics.Option_0_cannot_be_specified_with_option_1 */, 'mapRoot', 'inlineSourceMap');
661
645
  }
662
646
  }
663
647
  if (options.composite === true) {
664
648
  if (options.declaration === false) {
665
- this.optionNameDiagnostic(1443 /* Diagnostics.Composite_projects_may_not_disable_declaration_emit */, 'declaration', '');
649
+ this.optionNameDiagnostic(1454 /* Diagnostics.Composite_projects_may_not_disable_declaration_emit */, 'declaration', '');
666
650
  }
667
651
  if (options.incremental === false) {
668
- this.optionNameDiagnostic(1469 /* Diagnostics.Composite_projects_may_not_disable_incremental_compilation */, 'declaration', '');
652
+ this.optionNameDiagnostic(1480 /* Diagnostics.Composite_projects_may_not_disable_incremental_compilation */, 'declaration', '');
669
653
  }
670
654
  }
671
655
  if (options.tsBuildInfoFile === undefined && options.incremental === true && options.configFilePath === undefined) {
672
- this.compilerOptionsDiagnostic(1149 /* Diagnostics.Option_incremental_is_only_valid_with_a_known_configuration_file_like_tsconfig_json_or_when_tsBuildInfoFile_is_explicitly_provided */, []);
656
+ this.compilerOptionsDiagnostic(1156 /* Diagnostics.Option_incremental_is_only_valid_with_a_known_configuration_file_like_tsconfig_json_or_when_tsBuildInfoFile_is_explicitly_provided */, []);
673
657
  }
674
658
  this.verifyProjectReferences();
675
659
  if (options.composite === true) {
@@ -678,57 +662,60 @@ export class Program {
678
662
  rootPaths.add(this.toPath(fileName));
679
663
  for (const file of this.processed.files) {
680
664
  if (this.sourceFileMayBeEmitted(file, false) && !rootPaths.has(file.path)) {
681
- this.includeProcessor.addProcessingDiagnostic(ProcessingDiagnostic.explainingFileInclude(file.path, undefined, 1446 /* Diagnostics.File_0_is_not_listed_within_the_file_list_of_project_1_Projects_must_list_all_files_or_use_an_include_pattern */, [file.fileName, configFilePath]));
665
+ this.includeProcessor.addProcessingDiagnostic(ProcessingDiagnostic.explainingFileInclude(file.path, undefined, 1457 /* Diagnostics.File_0_is_not_listed_within_the_file_list_of_project_1_Projects_must_list_all_files_or_use_an_include_pattern */, [file.fileName, configFilePath]));
682
666
  }
683
667
  }
684
668
  }
685
669
  if (options.paths !== undefined) {
686
670
  for (const [key, value] of options.paths) {
687
671
  if (!hasZeroOrOneAsterisk(key)) {
688
- this.pathsDiagnostic(true, key, 1136 /* Diagnostics.Pattern_0_can_have_at_most_one_Asterisk_character */, [key]);
672
+ this.pathsDiagnostic(true, key, 1143 /* Diagnostics.Pattern_0_can_have_at_most_one_Asterisk_character */, [key]);
689
673
  }
690
674
  if (value === undefined) {
691
- this.pathsDiagnostic(false, key, 1138 /* Diagnostics.Substitutions_for_pattern_0_should_be_an_array */, [key]);
675
+ this.pathsDiagnostic(false, key, 1145 /* Diagnostics.Substitutions_for_pattern_0_should_be_an_array */, [key]);
692
676
  }
693
677
  else if (value.length === 0) {
694
- this.pathsDiagnostic(false, key, 1141 /* Diagnostics.Substitutions_for_pattern_0_shouldn_t_be_an_empty_array */, [key]);
678
+ this.pathsDiagnostic(false, key, 1148 /* Diagnostics.Substitutions_for_pattern_0_shouldn_t_be_an_empty_array */, [key]);
695
679
  }
696
680
  if (value === undefined)
697
681
  continue;
698
682
  for (let i = 0; i < value.length; i++) {
699
683
  const substitution = value[i];
700
684
  if (!hasZeroOrOneAsterisk(substitution)) {
701
- this.pathsValueDiagnostic(key, i, 1137 /* Diagnostics.Substitution_0_in_pattern_1_can_have_at_most_one_Asterisk_character */, [substitution, key]);
685
+ this.pathsValueDiagnostic(key, i, 1144 /* Diagnostics.Substitution_0_in_pattern_1_can_have_at_most_one_Asterisk_character */, [substitution, key]);
702
686
  }
703
687
  if (!pathIsRelative(substitution) && !pathIsAbsolute(substitution)) {
704
- this.pathsValueDiagnostic(key, i, 1164 /* Diagnostics.Non_relative_paths_are_not_allowed_Did_you_forget_a_leading_Slash */, []);
688
+ this.pathsValueDiagnostic(key, i, 1171 /* Diagnostics.Non_relative_paths_are_not_allowed_Did_you_forget_a_leading_Slash */, []);
689
+ }
690
+ else if (isNetworkPathValue(substitution, options.pathsBasePath ?? this.currentDirectory)) {
691
+ this.pathsValueDiagnostic(key, i, 1195 /* Diagnostics.Network_path_0_is_not_supported */, [substitution]);
705
692
  }
706
693
  }
707
694
  }
708
695
  }
709
696
  if (options.sourceMap !== true && options.inlineSourceMap !== true) {
710
697
  if (options.inlineSources === true) {
711
- this.optionNameDiagnostic(1127 /* Diagnostics.Option_0_can_only_be_used_when_either_option_inlineSourceMap_or_option_sourceMap_is_provided */, 'inlineSources', '');
698
+ this.optionNameDiagnostic(1134 /* Diagnostics.Option_0_can_only_be_used_when_either_option_inlineSourceMap_or_option_sourceMap_is_provided */, 'inlineSources', '');
712
699
  }
713
700
  if (options.sourceRoot !== undefined) {
714
- this.optionNameDiagnostic(1127 /* Diagnostics.Option_0_can_only_be_used_when_either_option_inlineSourceMap_or_option_sourceMap_is_provided */, 'sourceRoot', '');
701
+ this.optionNameDiagnostic(1134 /* Diagnostics.Option_0_can_only_be_used_when_either_option_inlineSourceMap_or_option_sourceMap_is_provided */, 'sourceRoot', '');
715
702
  }
716
703
  }
717
704
  if (options.mapRoot !== undefined && !(options.sourceMap === true || options.declarationMap === true)) {
718
- this.optionNameDiagnostic(1144 /* Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1_or_option_2 */, 'mapRoot', 'sourceMap', 'declarationMap');
705
+ this.optionNameDiagnostic(1151 /* Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1_or_option_2 */, 'mapRoot', 'sourceMap', 'declarationMap');
719
706
  }
720
707
  if (options.declarationDir !== undefined && !getEmitDeclarations(options)) {
721
- this.optionNameDiagnostic(1144 /* Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1_or_option_2 */, 'declarationDir', 'declaration', 'composite');
708
+ this.optionNameDiagnostic(1151 /* Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1_or_option_2 */, 'declarationDir', 'declaration', 'composite');
722
709
  }
723
710
  if (options.declarationMap === true && !getEmitDeclarations(options)) {
724
- this.optionNameDiagnostic(1144 /* Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1_or_option_2 */, 'declarationMap', 'declaration', 'composite');
711
+ this.optionNameDiagnostic(1151 /* Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1_or_option_2 */, 'declarationMap', 'declaration', 'composite');
725
712
  }
726
713
  if (options.lib !== undefined && options.noLib === true) {
727
- this.optionNameDiagnostic(1129 /* Diagnostics.Option_0_cannot_be_specified_with_option_1 */, 'lib', 'noLib');
714
+ this.optionNameDiagnostic(1136 /* Diagnostics.Option_0_cannot_be_specified_with_option_1 */, 'lib', 'noLib');
728
715
  }
729
716
  if ((options.isolatedModules === true || options.verbatimModuleSyntax === true) &&
730
717
  options.preserveConstEnums === false) {
731
- this.optionNameDiagnostic(1165 /* Diagnostics.Option_preserveConstEnums_cannot_be_disabled_when_0_is_enabled */, options.verbatimModuleSyntax === true ? 'verbatimModuleSyntax' : 'isolatedModules', 'preserveConstEnums');
718
+ this.optionNameDiagnostic(1172 /* Diagnostics.Option_preserveConstEnums_cannot_be_disabled_when_0_is_enabled */, options.verbatimModuleSyntax === true ? 'verbatimModuleSyntax' : 'isolatedModules', 'preserveConstEnums');
732
719
  }
733
720
  if (options.outDir !== undefined ||
734
721
  options.rootDir !== undefined ||
@@ -742,7 +729,7 @@ export class Program {
742
729
  if (getRootLength(file.fileName) > 1)
743
730
  rooted = true;
744
731
  if (rooted)
745
- this.optionNameDiagnostic(1117 /* Diagnostics.Cannot_find_the_common_subdirectory_path_for_the_input_files */, 'outDir', '');
732
+ this.optionNameDiagnostic(1124 /* Diagnostics.Cannot_find_the_common_subdirectory_path_for_the_input_files */, 'outDir', '');
746
733
  }
747
734
  }
748
735
  if (options.noEmit !== true &&
@@ -765,91 +752,91 @@ export class Program {
765
752
  getCanonicalFileName(computed, this.useCaseSensitiveFileNames)) {
766
753
  const option1 = options.outFile !== undefined ? 'outFile' : options.outDir !== undefined ? 'outDir' : 'declarationDir';
767
754
  const option2 = options.outFile === undefined && options.outDir !== undefined ? 'declarationDir' : '';
768
- const diagnostic = this.optionDiagnostic(true, option1, option2, 1119 /* Diagnostics.The_common_source_directory_of_0_is_1_The_rootDir_setting_must_be_explicitly_set_to_this_or_another_path_to_adjust_your_output_s_file_layout */, [
755
+ const diagnostic = this.optionDiagnostic(true, option1, option2, 1126 /* Diagnostics.The_common_source_directory_of_0_is_1_The_rootDir_setting_must_be_explicitly_set_to_this_or_another_path_to_adjust_your_output_s_file_layout */, [
769
756
  getBaseFileName(options.configFilePath),
770
757
  getRelativePathFromFile(options.configFilePath, computed, this.useCaseSensitiveFileNames),
771
758
  ]);
772
- diagnostic.addMessageChain(createCompilerDiagnostic(1183 /* Diagnostics.Visit_https_Colon_Slash_Slashaka_ms_Slashts6_for_migration_information */));
759
+ diagnostic.addMessageChain(createCompilerDiagnostic(1190 /* Diagnostics.Visit_https_Colon_Slash_Slashaka_ms_Slashts6_for_migration_information */));
773
760
  }
774
761
  }
775
762
  if (options.checkJs === true && !getAllowJS(options)) {
776
- this.optionNameDiagnostic(1128 /* Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1 */, 'checkJs', 'allowJs');
763
+ this.optionNameDiagnostic(1135 /* Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1 */, 'checkJs', 'allowJs');
777
764
  }
778
765
  if (options.emitDeclarationOnly === true && !getEmitDeclarations(options)) {
779
- this.optionNameDiagnostic(1144 /* Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1_or_option_2 */, 'emitDeclarationOnly', 'declaration', 'composite');
766
+ this.optionNameDiagnostic(1151 /* Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1_or_option_2 */, 'emitDeclarationOnly', 'declaration', 'composite');
780
767
  }
781
768
  if (options.emitDecoratorMetadata === true && options.experimentalDecorators !== true) {
782
- this.optionNameDiagnostic(1128 /* Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1 */, 'emitDecoratorMetadata', 'experimentalDecorators');
769
+ this.optionNameDiagnostic(1135 /* Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1 */, 'emitDecoratorMetadata', 'experimentalDecorators');
783
770
  }
784
771
  const jsx = options.jsx;
785
772
  const automaticJsx = jsx === JsxEmit.ReactJSX || jsx === JsxEmit.ReactJSXDev;
786
773
  if (options.jsxFactory !== undefined) {
787
774
  if (options.reactNamespace !== undefined) {
788
- this.optionNameDiagnostic(1129 /* Diagnostics.Option_0_cannot_be_specified_with_option_1 */, 'reactNamespace', 'jsxFactory');
775
+ this.optionNameDiagnostic(1136 /* Diagnostics.Option_0_cannot_be_specified_with_option_1 */, 'reactNamespace', 'jsxFactory');
789
776
  }
790
777
  if (automaticJsx && jsx !== undefined) {
791
- this.optionNameDiagnostic(1163 /* Diagnostics.Option_0_cannot_be_specified_when_option_jsx_is_1 */, 'jsxFactory', jsxEmitName(jsx));
778
+ this.optionNameDiagnostic(1170 /* Diagnostics.Option_0_cannot_be_specified_when_option_jsx_is_1 */, 'jsxFactory', jsxEmitName(jsx));
792
779
  }
793
780
  if (parseIsolatedEntityName(options.jsxFactory) === undefined) {
794
- this.optionValueDiagnostic('jsxFactory', 1142 /* Diagnostics.Invalid_value_for_jsxFactory_0_is_not_a_valid_identifier_or_qualified_name */, options.jsxFactory);
781
+ this.optionValueDiagnostic('jsxFactory', 1149 /* Diagnostics.Invalid_value_for_jsxFactory_0_is_not_a_valid_identifier_or_qualified_name */, options.jsxFactory);
795
782
  }
796
783
  }
797
784
  else if (options.reactNamespace !== undefined &&
798
785
  !isIdentifierText(options.reactNamespace, 0 /* LanguageVariant.Standard */)) {
799
- this.optionValueDiagnostic('reactNamespace', 1135 /* Diagnostics.Invalid_value_for_reactNamespace_0_is_not_a_valid_identifier */, options.reactNamespace);
786
+ this.optionValueDiagnostic('reactNamespace', 1142 /* Diagnostics.Invalid_value_for_reactNamespace_0_is_not_a_valid_identifier */, options.reactNamespace);
800
787
  }
801
788
  if (options.jsxFragmentFactory !== undefined) {
802
789
  if (options.jsxFactory === undefined) {
803
- this.optionNameDiagnostic(1128 /* Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1 */, 'jsxFragmentFactory', 'jsxFactory');
790
+ this.optionNameDiagnostic(1135 /* Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1 */, 'jsxFragmentFactory', 'jsxFactory');
804
791
  }
805
792
  if (automaticJsx && jsx !== undefined) {
806
- this.optionNameDiagnostic(1163 /* Diagnostics.Option_0_cannot_be_specified_when_option_jsx_is_1 */, 'jsxFragmentFactory', jsxEmitName(jsx));
793
+ this.optionNameDiagnostic(1170 /* Diagnostics.Option_0_cannot_be_specified_when_option_jsx_is_1 */, 'jsxFragmentFactory', jsxEmitName(jsx));
807
794
  }
808
795
  if (parseIsolatedEntityName(options.jsxFragmentFactory) === undefined) {
809
- this.optionValueDiagnostic('jsxFragmentFactory', 1852 /* Diagnostics.Invalid_value_for_jsxFragmentFactory_0_is_not_a_valid_identifier_or_qualified_name */, options.jsxFragmentFactory);
796
+ this.optionValueDiagnostic('jsxFragmentFactory', 1872 /* Diagnostics.Invalid_value_for_jsxFragmentFactory_0_is_not_a_valid_identifier_or_qualified_name */, options.jsxFragmentFactory);
810
797
  }
811
798
  }
812
799
  if (options.reactNamespace !== undefined && automaticJsx && jsx !== undefined) {
813
- this.optionNameDiagnostic(1163 /* Diagnostics.Option_0_cannot_be_specified_when_option_jsx_is_1 */, 'reactNamespace', jsxEmitName(jsx));
800
+ this.optionNameDiagnostic(1170 /* Diagnostics.Option_0_cannot_be_specified_when_option_jsx_is_1 */, 'reactNamespace', jsxEmitName(jsx));
814
801
  }
815
802
  if (options.jsxImportSource !== undefined && jsx === JsxEmit.React) {
816
- this.optionNameDiagnostic(1163 /* Diagnostics.Option_0_cannot_be_specified_when_option_jsx_is_1 */, 'jsxImportSource', jsxEmitName(jsx));
803
+ this.optionNameDiagnostic(1170 /* Diagnostics.Option_0_cannot_be_specified_when_option_jsx_is_1 */, 'jsxImportSource', jsxEmitName(jsx));
817
804
  }
818
805
  const moduleKind = getEmitModuleKind(options);
819
806
  if (options.allowImportingTsExtensions === true &&
820
807
  !(options.noEmit === true ||
821
808
  options.emitDeclarationOnly === true ||
822
809
  options.rewriteRelativeImportExtensions === true)) {
823
- this.optionValueDiagnostic('allowImportingTsExtensions', 1170 /* Diagnostics.Option_allowImportingTsExtensions_can_only_be_used_when_one_of_noEmit_emitDeclarationOnly_or_rewriteRelativeImportExtensions_is_set */);
810
+ this.optionValueDiagnostic('allowImportingTsExtensions', 1177 /* Diagnostics.Option_allowImportingTsExtensions_can_only_be_used_when_one_of_noEmit_emitDeclarationOnly_or_rewriteRelativeImportExtensions_is_set */);
824
811
  }
825
812
  const moduleResolution = getModuleResolutionKind(options);
826
813
  const supportsExportsAndImports = (moduleResolution >= ModuleResolutionKind.Node16 && moduleResolution <= ModuleResolutionKind.NodeNext) ||
827
814
  moduleResolution === ModuleResolutionKind.Bundler;
828
815
  if (options.resolvePackageJsonExports === true && !supportsExportsAndImports) {
829
- this.optionNameDiagnostic(1172 /* Diagnostics.Option_0_can_only_be_used_when_moduleResolution_is_set_to_node16_nodenext_or_bundler */, 'resolvePackageJsonExports', '');
816
+ this.optionNameDiagnostic(1179 /* Diagnostics.Option_0_can_only_be_used_when_moduleResolution_is_set_to_node16_nodenext_or_bundler */, 'resolvePackageJsonExports', '');
830
817
  }
831
818
  if (options.resolvePackageJsonImports === true && !supportsExportsAndImports) {
832
- this.optionNameDiagnostic(1172 /* Diagnostics.Option_0_can_only_be_used_when_moduleResolution_is_set_to_node16_nodenext_or_bundler */, 'resolvePackageJsonImports', '');
819
+ this.optionNameDiagnostic(1179 /* Diagnostics.Option_0_can_only_be_used_when_moduleResolution_is_set_to_node16_nodenext_or_bundler */, 'resolvePackageJsonImports', '');
833
820
  }
834
821
  if (options.customConditions !== undefined && !supportsExportsAndImports) {
835
- this.optionNameDiagnostic(1172 /* Diagnostics.Option_0_can_only_be_used_when_moduleResolution_is_set_to_node16_nodenext_or_bundler */, 'customConditions', '');
822
+ this.optionNameDiagnostic(1179 /* Diagnostics.Option_0_can_only_be_used_when_moduleResolution_is_set_to_node16_nodenext_or_bundler */, 'customConditions', '');
836
823
  }
837
824
  const isNonNodeESM = moduleKind >= ModuleKind.ES2015 && moduleKind <= ModuleKind.ESNext;
838
825
  if (moduleResolution === ModuleResolutionKind.Bundler &&
839
826
  !isNonNodeESM &&
840
827
  moduleKind !== ModuleKind.Preserve &&
841
828
  moduleKind !== ModuleKind.CommonJS) {
842
- this.optionValueDiagnostic('moduleResolution', 1169 /* Diagnostics.Option_0_can_only_be_used_when_module_is_set_to_preserve_commonjs_or_es2015_or_later */, 'bundler');
829
+ this.optionValueDiagnostic('moduleResolution', 1176 /* Diagnostics.Option_0_can_only_be_used_when_module_is_set_to_preserve_commonjs_or_es2015_or_later */, 'bundler');
843
830
  }
844
831
  const isNodeModule = ModuleKind.Node16 <= moduleKind && moduleKind <= ModuleKind.NodeNext;
845
832
  const isNodeResolution = ModuleResolutionKind.Node16 <= moduleResolution && moduleResolution <= ModuleResolutionKind.NodeNext;
846
833
  if (isNodeModule && !isNodeResolution) {
847
834
  const resolutionName = moduleKind === ModuleKind.NodeNext ? 'NodeNext' : 'Node16';
848
- this.optionValueDiagnostic('moduleResolution', 1181 /* Diagnostics.Option_moduleResolution_must_be_set_to_0_or_left_unspecified_when_option_module_is_set_to_1 */, resolutionName, moduleKindName(moduleKind));
835
+ this.optionValueDiagnostic('moduleResolution', 1188 /* Diagnostics.Option_moduleResolution_must_be_set_to_0_or_left_unspecified_when_option_module_is_set_to_1 */, resolutionName, moduleKindName(moduleKind));
849
836
  }
850
837
  else if (isNodeResolution && !isNodeModule) {
851
838
  const name = moduleResolutionKindName(moduleResolution);
852
- this.optionValueDiagnostic('module', 1182 /* Diagnostics.Option_module_must_be_set_to_0_when_option_moduleResolution_is_set_to_1 */, name, name);
839
+ this.optionValueDiagnostic('module', 1189 /* Diagnostics.Option_module_must_be_set_to_0_when_option_moduleResolution_is_set_to_1 */, name, name);
853
840
  }
854
841
  // Outputs must be unique and must not overwrite inputs.
855
842
  if (options.noEmit !== true && options.suppressOutputPathCheck !== true) {
@@ -871,15 +858,15 @@ export class Program {
871
858
  return;
872
859
  const path = this.toPath(fileName);
873
860
  if (this.processed.filesByPath.has(path)) {
874
- const diagnostic = createCompilerDiagnostic(1131 /* Diagnostics.Cannot_write_file_0_because_it_would_overwrite_input_file */, fileName);
861
+ const diagnostic = createCompilerDiagnostic(1138 /* Diagnostics.Cannot_write_file_0_because_it_would_overwrite_input_file */, fileName);
875
862
  if (configFilePath === '') {
876
- diagnostic.addMessageChain(createCompilerDiagnostic(1143 /* Diagnostics.Adding_a_tsconfig_json_file_will_help_organize_projects_that_contain_both_TypeScript_and_JavaScript_files_Learn_more_at_https_Colon_Slash_Slashaka_ms_Slashtsconfig */));
863
+ diagnostic.addMessageChain(createCompilerDiagnostic(1150 /* Diagnostics.Adding_a_tsconfig_json_file_will_help_organize_projects_that_contain_both_TypeScript_and_JavaScript_files_Learn_more_at_https_Colon_Slash_Slashaka_ms_Slashtsconfig */));
877
864
  }
878
865
  this.blockEmittingOfFile(fileName, diagnostic);
879
866
  }
880
867
  const key = this.useCaseSensitiveFileNames ? path : toFileNameLowerCase(path);
881
868
  if (seen.has(key)) {
882
- this.blockEmittingOfFile(fileName, createCompilerDiagnostic(1132 /* Diagnostics.Cannot_write_file_0_because_it_would_be_overwritten_by_multiple_input_files */, fileName));
869
+ this.blockEmittingOfFile(fileName, createCompilerDiagnostic(1139 /* Diagnostics.Cannot_write_file_0_because_it_would_be_overwritten_by_multiple_input_files */, fileName));
883
870
  }
884
871
  else {
885
872
  seen.add(key);
@@ -913,22 +900,22 @@ export class Program {
913
900
  verifyProjectReference(config, parent, index, buildInfoFileName) {
914
901
  const reference = parent.projectReferences[index];
915
902
  if (config === undefined) {
916
- this.referenceDiagnostic(parent, index, 1229 /* Diagnostics.File_0_not_found */, [reference.path]);
903
+ this.referenceDiagnostic(parent, index, 1240 /* Diagnostics.File_0_not_found */, [reference.path]);
917
904
  return;
918
905
  }
919
906
  const options = config.options;
920
907
  if ((options.composite !== true || options.noEmit === true) && parent.fileNames.length > 0) {
921
908
  if (options.composite !== true) {
922
- this.referenceDiagnostic(parent, index, 1445 /* Diagnostics.Referenced_project_0_must_have_setting_composite_Colon_true */, [reference.path]);
909
+ this.referenceDiagnostic(parent, index, 1456 /* Diagnostics.Referenced_project_0_must_have_setting_composite_Colon_true */, [reference.path]);
923
910
  }
924
911
  if (options.noEmit === true) {
925
- this.referenceDiagnostic(parent, index, 1447 /* Diagnostics.Referenced_project_0_may_not_disable_emit */, [
912
+ this.referenceDiagnostic(parent, index, 1458 /* Diagnostics.Referenced_project_0_may_not_disable_emit */, [
926
913
  reference.path,
927
914
  ]);
928
915
  }
929
916
  }
930
917
  if (buildInfoFileName !== '' && buildInfoFileName === config.buildInfoFileName()) {
931
- this.referenceDiagnostic(parent, index, 1468 /* Diagnostics.Cannot_write_file_0_because_it_will_overwrite_tsbuildinfo_file_generated_by_referenced_project_1 */, [buildInfoFileName, reference.path]);
918
+ this.referenceDiagnostic(parent, index, 1479 /* Diagnostics.Cannot_write_file_0_because_it_will_overwrite_tsbuildinfo_file_generated_by_referenced_project_1 */, [buildInfoFileName, reference.path]);
932
919
  this.emitBlockingPaths.add(this.toPath(buildInfoFileName));
933
920
  }
934
921
  }
@@ -986,7 +973,7 @@ class NodeCollector extends NodeVisitor {
986
973
  }
987
974
  /** Sorts diagnostics and merges duplicates, combining their related information. */
988
975
  export function sortAndDeduplicateDiagnostics(diagnostics) {
989
- const sorted = [...diagnostics].sort(compareDiagnostics);
976
+ const sorted = sortDiagnostics(diagnostics);
990
977
  if (sorted.length < 2)
991
978
  return sorted;
992
979
  const result = [];
@@ -3,3 +3,5 @@
3
3
  * to its decimal digits.
4
4
  */
5
5
  export declare function parsePseudoBigInt(literal: string): string;
6
+ /** Compares two bigint values in decimal, each optionally prefixed with `-`, by numeric value. */
7
+ export declare function comparePseudoBigInts(a: string, b: string): number;
@@ -59,3 +59,21 @@ export function parsePseudoBigInt(literal) {
59
59
  }
60
60
  return result;
61
61
  }
62
+ /** Compares two bigint values in decimal, each optionally prefixed with `-`, by numeric value. */
63
+ export function comparePseudoBigInts(a, b) {
64
+ const negative = a.charCodeAt(0) === 45 /* CharacterCodes.minus */;
65
+ const r = pseudoBigIntSign(a) - pseudoBigIntSign(b);
66
+ if (r !== 0)
67
+ return r;
68
+ const digitsA = negative ? a.substring(1) : a;
69
+ const digitsB = negative ? b.substring(1) : b;
70
+ let magnitude = digitsA.length - digitsB.length;
71
+ if (magnitude === 0)
72
+ magnitude = digitsA < digitsB ? -1 : digitsA > digitsB ? 1 : 0;
73
+ return negative ? -magnitude : magnitude;
74
+ }
75
+ function pseudoBigIntSign(value) {
76
+ if (value.charCodeAt(0) === 45 /* CharacterCodes.minus */)
77
+ return -1;
78
+ return value === '0' ? 0 : 1;
79
+ }
@@ -1,4 +1,4 @@
1
- import type { Scanner } from './scanner.js';
1
+ import { type Scanner } from './scanner.js';
2
2
  /** Special results of `Scanner.scanEscapeCodePoint`. */
3
3
  export declare const enum EscapeValue {
4
4
  /** A line continuation, which has no value. */