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
@@ -4,6 +4,7 @@
4
4
  import {
5
5
  ExportDeclaration,
6
6
  ExternalModuleIndicatorOptions,
7
+ Identifier,
7
8
  ImportAttribute,
8
9
  ImportAttributes,
9
10
  ImportClause,
@@ -19,7 +20,7 @@ import {
19
20
  type Node,
20
21
  type SourceFile,
21
22
  } from './ast.js';
22
- import { isImportCall, isRequireCall } from './ast-utilities.js';
23
+ import { isImportCall, isRequireCall, isSourcePhaseImportCall } from './ast-utilities.js';
23
24
  import { libMap } from './option-declarations.js';
24
25
  import {
25
26
  getEmitModuleDetectionKind,
@@ -59,6 +60,8 @@ export function getDefaultLibFileName(options: CompilerOptions): string {
59
60
  switch (getEmitScriptTarget(options)) {
60
61
  case ScriptTarget.ESNext:
61
62
  return 'lib.esnext.full.d.ts';
63
+ case ScriptTarget.ES2026:
64
+ return 'lib.es2026.full.d.ts';
62
65
  case ScriptTarget.ES2025:
63
66
  return 'lib.es2025.full.d.ts';
64
67
  case ScriptTarget.ES2024:
@@ -115,6 +118,8 @@ export function scriptTargetName(target: ScriptTarget): string {
115
118
  return 'ES2024';
116
119
  case ScriptTarget.ES2025:
117
120
  return 'ES2025';
121
+ case ScriptTarget.ES2026:
122
+ return 'ES2026';
118
123
  case ScriptTarget.ESNext:
119
124
  return 'ESNext';
120
125
  case ScriptTarget.JSON:
@@ -316,21 +321,27 @@ function literalText(node: Node): string {
316
321
 
317
322
  /** The `resolution-mode` of `import type` attributes, or `None`. */
318
323
  export function getResolutionModeOverride(attributes: ImportAttributes | undefined): ModuleKind {
319
- if (attributes === undefined) return ModuleKind.None;
320
- const elements = attributes.attributes.nodes;
321
- if (elements.length !== 1) return ModuleKind.None;
322
- const attribute = elements[0]!;
323
- if (!(attribute instanceof ImportAttribute)) return ModuleKind.None;
324
- const name = attribute.name;
325
- if (name === undefined || !isStringLiteralLike(name) || literalText(name) !== 'resolution-mode')
326
- return ModuleKind.None;
327
- if (!isStringLiteralLike(attribute.value)) return ModuleKind.None;
324
+ const attribute = resolutionModeAttribute(attributes);
325
+ if (attribute === undefined || !isStringLiteralLike(attribute.value)) return ModuleKind.None;
328
326
  const text = literalText(attribute.value);
329
327
  if (text === 'import') return ModuleKind.ESNext;
330
328
  if (text === 'require') return ModuleKind.CommonJS;
331
329
  return ModuleKind.None;
332
330
  }
333
331
 
332
+ /** The `resolution-mode` attribute among import attributes, as tsgo's `GetResolutionModeOverride` finds it. */
333
+ export function resolutionModeAttribute(attributes: ImportAttributes | undefined): ImportAttribute | undefined {
334
+ if (attributes === undefined) return undefined;
335
+ for (const attribute of attributes.attributes.nodes) {
336
+ if (!(attribute instanceof ImportAttribute)) continue;
337
+ const name = attribute.name;
338
+ if (name === undefined) continue;
339
+ const text = name instanceof Identifier ? name.text : literalText(name);
340
+ if (text === 'resolution-mode') return attribute;
341
+ }
342
+ return undefined;
343
+ }
344
+
334
345
  /** The attributes of an import or export declaration or a JSDoc `@import`, if any. */
335
346
  function importOrExportAttributes(node: Node | undefined): ImportAttributes | undefined {
336
347
  if (node instanceof ImportDeclaration) return node.attributes;
@@ -404,6 +415,8 @@ export function getEmitSyntaxForUsageLocation(
404
415
  const fileEmitMode = getEmitModuleFormatOfFile(fileName, options, metadata);
405
416
  const call = walkUpParenthesizedExpressions(parent);
406
417
  if (call !== undefined && isImportCall(call)) {
418
+ // `import.source()` is never transformed to `require`.
419
+ if (isSourcePhaseImportCall(call)) return ModuleKind.ESNext;
407
420
  return shouldTransformImportCall(options, fileEmitMode) ? ModuleKind.CommonJS : ModuleKind.ESNext;
408
421
  }
409
422
  if (fileEmitMode === ModuleKind.CommonJS) return ModuleKind.CommonJS;
@@ -27,6 +27,7 @@ import {
27
27
  equalDiagnosticsNoRelatedInfo,
28
28
  type DiagnosticMessage,
29
29
  type Locale,
30
+ sortDiagnostics,
30
31
  useThreadTextCaches,
31
32
  } from './diagnostics.js';
32
33
  import {
@@ -84,6 +85,7 @@ import {
84
85
  pathIsRelative,
85
86
  toFileNameLowerCase,
86
87
  toPath,
88
+ isNetworkPathValue,
87
89
  } from './path.js';
88
90
  import {
89
91
  getDefaultResolutionModeForFile,
@@ -105,6 +107,7 @@ import {
105
107
  type SourceOutputAndProjectReference,
106
108
  } from './tsconfig.js';
107
109
  import { SyntaxKind } from './syntax-kind.js';
110
+ import { isSourcePhaseImport } from './ast-utilities.js';
108
111
  import { KnownSymlinks } from './symlinks.js';
109
112
  import { mark } from './timeline.js';
110
113
  import { LanguageVariant } from './types.js';
@@ -293,6 +296,11 @@ export class Program implements OutputPathsHost {
293
296
  return this.processed.redirectTargets.get(path) ?? [];
294
297
  }
295
298
 
299
+ /** The nearest `package.json` lookup at or above `directory`. */
300
+ getPackageScopeForPath(directory: string): PackageJsonInfo | undefined {
301
+ return this.processed.resolver.getPackageScopeForPath(directory);
302
+ }
303
+
296
304
  /** The directory of the nearest `package.json` at or above `directory`, or `''`. */
297
305
  getNearestAncestorDirectoryWithPackageJson(directory: string): string {
298
306
  const scope = this.processed.resolver.getPackageScopeForPath(directory);
@@ -361,7 +369,8 @@ export class Program implements OutputPathsHost {
361
369
  )
362
370
  continue;
363
371
  const resolved = resolver.resolvePackageDirectory(dependency, packageJsonName, ModuleKind.CommonJS);
364
- if (resolved !== undefined && resolved.resolvedFileName !== '')
372
+ // A dependency installed in place has no original path to map from.
373
+ if (resolved !== undefined && resolved.resolvedFileName !== '' && resolved.originalPath !== '')
365
374
  symlinks.processResolution(
366
375
  combinePaths(resolved.originalPath, 'package.json'),
367
376
  combinePaths(resolved.resolvedFileName, 'package.json'),
@@ -455,30 +464,9 @@ export class Program implements OutputPathsHost {
455
464
  return this.processed.resolvedModules.get(file.path)?.get(modeAwareKey(moduleName, mode));
456
465
  }
457
466
 
458
- /** The program files that the imports and type reference directives of `file` resolved to. */
459
- /**
460
- * The files `file` imports and references through type directives. `byFileName`, the program's
461
- * files by file name, finds a file without computing its path when it is resolved by that name.
462
- */
463
- getResolvedFilesOf(file: SourceFile, byFileName?: ReadonlyMap<string, SourceFile>): SourceFile[] {
464
- const result: SourceFile[] = [];
465
- const modules = this.processed.resolvedModules.get(file.path);
466
- if (modules !== undefined)
467
- for (const resolved of modules.values()) {
468
- const name = resolved.resolvedFileName;
469
- if (name === '') continue;
470
- const target = byFileName?.get(name) ?? this.getSourceFileForResolvedModule(name);
471
- if (target !== undefined) result.push(target);
472
- }
473
- const types = this.processed.typeResolutionsInFile.get(file.path);
474
- if (types !== undefined)
475
- for (const resolved of types.values()) {
476
- const name = resolved.resolvedFileName;
477
- if (name === '') continue;
478
- const target = byFileName?.get(name) ?? this.getSourceFile(name);
479
- if (target !== undefined) result.push(target);
480
- }
481
- return result;
467
+ /** The files each file added to the program (`ProcessedFiles.addedFiles`), as indices of `getSourceFiles`. */
468
+ addedFiles(): readonly (readonly number[])[] {
469
+ return this.processed.addedFiles;
482
470
  }
483
471
 
484
472
  /** The specifier of the implicit JSX runtime import of `file`, if any. */
@@ -487,6 +475,8 @@ export class Program implements OutputPathsHost {
487
475
  }
488
476
 
489
477
  getResolvedModuleFromModuleSpecifier(file: SourceFile, specifier: Node): ResolvedModule | undefined {
478
+ // A source phase import loads no module declarations.
479
+ if (specifier.parent !== undefined && isSourcePhaseImport(specifier.parent)) return undefined;
490
480
  const text = specifierText(specifier);
491
481
  return this.getResolvedModule(file, text, this.getModeForUsageLocation(file, specifier));
492
482
  }
@@ -935,6 +925,8 @@ export class Program implements OutputPathsHost {
935
925
  Diagnostics.Non_relative_paths_are_not_allowed_Did_you_forget_a_leading_Slash,
936
926
  [],
937
927
  );
928
+ } else if (isNetworkPathValue(substitution, options.pathsBasePath ?? this.currentDirectory)) {
929
+ this.pathsValueDiagnostic(key, i, Diagnostics.Network_path_0_is_not_supported, [substitution]);
938
930
  }
939
931
  }
940
932
  }
@@ -1398,7 +1390,7 @@ class NodeCollector extends NodeVisitor {
1398
1390
 
1399
1391
  /** Sorts diagnostics and merges duplicates, combining their related information. */
1400
1392
  export function sortAndDeduplicateDiagnostics(diagnostics: readonly Diagnostic[]): Diagnostic[] {
1401
- const sorted = [...diagnostics].sort(compareDiagnostics);
1393
+ const sorted = sortDiagnostics(diagnostics);
1402
1394
  if (sorted.length < 2) return sorted;
1403
1395
  const result: Diagnostic[] = [];
1404
1396
  let i = 0;
@@ -60,3 +60,20 @@ export function parsePseudoBigInt(literal: string): string {
60
60
  }
61
61
  return result;
62
62
  }
63
+
64
+ /** Compares two bigint values in decimal, each optionally prefixed with `-`, by numeric value. */
65
+ export function comparePseudoBigInts(a: string, b: string): number {
66
+ const negative = a.charCodeAt(0) === CharacterCodes.minus;
67
+ const r = pseudoBigIntSign(a) - pseudoBigIntSign(b);
68
+ if (r !== 0) return r;
69
+ const digitsA = negative ? a.substring(1) : a;
70
+ const digitsB = negative ? b.substring(1) : b;
71
+ let magnitude = digitsA.length - digitsB.length;
72
+ if (magnitude === 0) magnitude = digitsA < digitsB ? -1 : digitsA > digitsB ? 1 : 0;
73
+ return negative ? -magnitude : magnitude;
74
+ }
75
+
76
+ function pseudoBigIntSign(value: string): number {
77
+ if (value.charCodeAt(0) === CharacterCodes.minus) return -1;
78
+ return value === '0' ? 0 : 1;
79
+ }
@@ -9,7 +9,7 @@ import {
9
9
  } from './character-codes.js';
10
10
  import { Diagnostics } from './diagnostic-messages.js';
11
11
  import type { DiagnosticMessage } from './diagnostics.js';
12
- import type { Scanner } from './scanner.js';
12
+ import { IdentifierVariant, type Scanner } from './scanner.js';
13
13
  import { getSpellingSuggestion } from './spelling.js';
14
14
  import { ScriptTarget } from './types.js';
15
15
  import {
@@ -243,13 +243,24 @@ class RegularExpressionChecker {
243
243
 
244
244
  // Disjunction ::= Alternative ('|' Alternative)*
245
245
  private scanDisjunction(isInGroup: boolean): void {
246
+ // The names any alternative defines. One alternative matches, so in a group they join the
247
+ // enclosing alternative's scope: `(?:(?<a>x))(?<a>z)` defines `a` twice.
248
+ let disjunctionNames: Set<string> | undefined;
246
249
  for (;;) {
247
250
  this.namedCapturingGroups.push(new Set<string>());
248
251
  this.scanAlternative(isInGroup);
249
- this.namedCapturingGroups.pop();
250
- if (this.char() !== CharacterCodes.bar) return;
252
+ const alternativeNames = this.namedCapturingGroups.pop()!;
253
+ if (alternativeNames.size > 0) {
254
+ if (disjunctionNames === undefined) disjunctionNames = new Set<string>();
255
+ for (const name of alternativeNames) disjunctionNames.add(name);
256
+ }
257
+ if (this.char() !== CharacterCodes.bar) break;
251
258
  this.scanner.pos = (this.scanner.pos + 1) | 0;
252
259
  }
260
+ if (isInGroup && disjunctionNames !== undefined && this.namedCapturingGroups.length > 0) {
261
+ const parentScope = this.namedCapturingGroups[this.namedCapturingGroups.length - 1]!;
262
+ for (const name of disjunctionNames) parentScope.add(name);
263
+ }
253
264
  }
254
265
 
255
266
  // Alternative ::= Term*
@@ -317,6 +328,14 @@ class RegularExpressionChecker {
317
328
  noArgs,
318
329
  );
319
330
  }
331
+ // Modifier characters make this `(?flags:` rather than a plain `(?:` group.
332
+ if (this.scanner.pos !== flagsStart && this.scanner.languageVersion() < ScriptTarget.ES2025)
333
+ this.error(
334
+ Diagnostics.Regular_expression_pattern_modifiers_are_only_available_when_targeting_0_or_later,
335
+ flagsStart,
336
+ this.scanner.pos - flagsStart,
337
+ ['es2025'],
338
+ );
320
339
  this.scanExpectedChar(CharacterCodes.colon);
321
340
  isPreviousTermQuantifiable = true;
322
341
  }
@@ -443,10 +462,8 @@ class RegularExpressionChecker {
443
462
  size,
444
463
  noArgs,
445
464
  );
446
- else {
447
- currentFlags |= flag;
448
- this.scanner.checkRegularExpressionFlagAvailability(flag, this.scanner.pos, size);
449
- }
465
+ // Modifiers need ES2025, later than any flag they can toggle, and the group reports that.
466
+ else currentFlags |= flag;
450
467
  this.scanner.pos = (this.scanner.pos + size) | 0;
451
468
  }
452
469
  return currentFlags;
@@ -545,9 +562,8 @@ class RegularExpressionChecker {
545
562
  private scanGroupName(isReference: boolean): void {
546
563
  const scanner = this.scanner;
547
564
  scanner.tokenStart = this.scanner.pos | 0;
548
- scanner.scanIdentifier(0);
549
565
  const start = scanner.tokenStart;
550
- if (this.scanner.pos === start) {
566
+ if (!scanner.scanIdentifier(0, IdentifierVariant.RegExpGroupName)) {
551
567
  this.error(Diagnostics.Expected_a_capturing_group_name, this.scanner.pos, 0, noArgs);
552
568
  return;
553
569
  }
@@ -562,6 +578,20 @@ class RegularExpressionChecker {
562
578
  noArgs,
563
579
  );
564
580
  } else {
581
+ // An earlier definition is in a mutually exclusive alternative. Below ES2018 the group is
582
+ // reported already.
583
+ const languageVersion = this.scanner.languageVersion();
584
+ if (
585
+ this.groupSpecifiers.has(name) &&
586
+ languageVersion >= ScriptTarget.ES2018 &&
587
+ languageVersion < ScriptTarget.ES2025
588
+ )
589
+ this.error(
590
+ Diagnostics.Duplicate_named_capturing_groups_are_only_available_when_targeting_0_or_later,
591
+ start,
592
+ this.scanner.pos - start,
593
+ ['es2025'],
594
+ );
565
595
  if (this.namedCapturingGroups.length > 0)
566
596
  this.namedCapturingGroups[this.namedCapturingGroups.length - 1]!.add(name);
567
597
  this.groupSpecifiers.add(name);
@@ -667,9 +697,6 @@ class RegularExpressionChecker {
667
697
  this.mayContainStrings = !isCharacterComplement && expressionMayContainStrings;
668
698
  return this.mayContainStrings;
669
699
  }
670
- this.error(Diagnostics.Unexpected_0_Did_you_mean_to_escape_it_with_backslash, this.scanner.pos, 1, [
671
- String.fromCharCode(ch),
672
- ]);
673
700
  break;
674
701
  default:
675
702
  if (isCharacterComplement && this.mayContainStrings)
@@ -730,29 +757,26 @@ class RegularExpressionChecker {
730
757
  } else if (operand >= 0 && secondOperand >= 0 && operand > secondOperand) {
731
758
  this.error(Diagnostics.Range_out_of_order_in_character_class, start, this.scanner.pos - start, noArgs);
732
759
  }
733
- } else if (ch === CharacterCodes.ampersand) {
760
+ } else if (
761
+ ch === CharacterCodes.ampersand &&
762
+ this.scanner.pos + 1 < this.end &&
763
+ this.charAt(this.scanner.pos + 1) === CharacterCodes.ampersand
764
+ ) {
734
765
  start = this.scanner.pos;
735
- this.scanner.pos = (this.scanner.pos + 1) | 0;
766
+ this.scanner.pos = (this.scanner.pos + 2) | 0;
767
+ this.error(
768
+ Diagnostics.Operators_must_not_be_mixed_within_a_character_class_Wrap_it_in_a_nested_class_instead,
769
+ this.scanner.pos - 2,
770
+ 2,
771
+ noArgs,
772
+ );
736
773
  if (this.char() === CharacterCodes.ampersand) {
737
- this.scanner.pos = (this.scanner.pos + 1) | 0;
738
- this.error(
739
- Diagnostics.Operators_must_not_be_mixed_within_a_character_class_Wrap_it_in_a_nested_class_instead,
740
- this.scanner.pos - 2,
741
- 2,
742
- noArgs,
743
- );
744
- if (this.char() === CharacterCodes.ampersand) {
745
- this.error(Diagnostics.Unexpected_0_Did_you_mean_to_escape_it_with_backslash, this.scanner.pos, 1, [
746
- String.fromCharCode(ch),
747
- ]);
748
- this.scanner.pos = (this.scanner.pos + 1) | 0;
749
- }
750
- } else {
751
- this.error(Diagnostics.Unexpected_0_Did_you_mean_to_escape_it_with_backslash, this.scanner.pos - 1, 1, [
774
+ this.error(Diagnostics.Unexpected_0_Did_you_mean_to_escape_it_with_backslash, this.scanner.pos, 1, [
752
775
  String.fromCharCode(ch),
753
776
  ]);
777
+ this.scanner.pos = (this.scanner.pos + 1) | 0;
754
778
  }
755
- operand = this.scanner.pos - start === 1 ? CharacterCodes.ampersand : ClassValue.String;
779
+ operand = ClassValue.String;
756
780
  continue;
757
781
  }
758
782
  if (this.isClassContentExit(this.char())) break;
@@ -768,6 +792,15 @@ class RegularExpressionChecker {
768
792
  operand = ClassValue.String;
769
793
  } else {
770
794
  operand = this.scanClassSetOperand();
795
+ // Each operand of a negated union must match single characters.
796
+ if (isCharacterComplement && this.mayContainStrings)
797
+ this.error(
798
+ Diagnostics.Anything_that_would_possibly_match_more_than_a_single_character_is_invalid_inside_a_negated_character_class,
799
+ start,
800
+ this.scanner.pos - start,
801
+ noArgs,
802
+ );
803
+ expressionMayContainStrings = expressionMayContainStrings || this.mayContainStrings;
771
804
  }
772
805
  }
773
806
  this.mayContainStrings = !isCharacterComplement && expressionMayContainStrings;