tsc-ts 0.0.10 → 0.1.1

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 (379) hide show
  1. package/README.md +1 -1
  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 +29 -18
  6. package/dist/api/compiler/ast.js +1040 -1007
  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 +173 -123
  12. package/dist/api/compiler/checker-classes.d.ts +14 -3
  13. package/dist/api/compiler/checker-classes.js +136 -91
  14. package/dist/api/compiler/checker-contextual.d.ts +20 -0
  15. package/dist/api/compiler/checker-contextual.js +175 -62
  16. package/dist/api/compiler/checker-declaration-order.js +79 -79
  17. package/dist/api/compiler/checker-declarations.d.ts +1 -0
  18. package/dist/api/compiler/checker-declarations.js +160 -136
  19. package/dist/api/compiler/checker-declared-types.js +67 -65
  20. package/dist/api/compiler/checker-decorators.js +77 -77
  21. package/dist/api/compiler/checker-deprecation.d.ts +8 -3
  22. package/dist/api/compiler/checker-deprecation.js +76 -55
  23. package/dist/api/compiler/checker-destructuring.js +47 -45
  24. package/dist/api/compiler/checker-elaboration.js +24 -24
  25. package/dist/api/compiler/checker-emit-helpers.js +4 -4
  26. package/dist/api/compiler/checker-emit-resolver.d.ts +4 -2
  27. package/dist/api/compiler/checker-emit-resolver.js +25 -13
  28. package/dist/api/compiler/checker-evaluator.js +9 -9
  29. package/dist/api/compiler/checker-expressions.js +258 -212
  30. package/dist/api/compiler/checker-functions.js +113 -107
  31. package/dist/api/compiler/checker-generated-code.d.ts +0 -11
  32. package/dist/api/compiler/checker-generated-code.js +28 -52
  33. package/dist/api/compiler/checker-grammar.d.ts +1 -0
  34. package/dist/api/compiler/checker-grammar.js +469 -438
  35. package/dist/api/compiler/checker-heritage.js +91 -93
  36. package/dist/api/compiler/checker-inference.d.ts +77 -5
  37. package/dist/api/compiler/checker-inference.js +487 -113
  38. package/dist/api/compiler/checker-iteration.d.ts +0 -10
  39. package/dist/api/compiler/checker-iteration.js +35 -52
  40. package/dist/api/compiler/checker-javascript.js +14 -14
  41. package/dist/api/compiler/checker-jsdoc.d.ts +8 -10
  42. package/dist/api/compiler/checker-jsdoc.js +67 -58
  43. package/dist/api/compiler/checker-jsx.js +107 -89
  44. package/dist/api/compiler/checker-members.d.ts +9 -2
  45. package/dist/api/compiler/checker-members.js +210 -74
  46. package/dist/api/compiler/checker-modules.d.ts +15 -6
  47. package/dist/api/compiler/checker-modules.js +469 -309
  48. package/dist/api/compiler/checker-narrowing.js +273 -189
  49. package/dist/api/compiler/checker-object-literals.js +25 -22
  50. package/dist/api/compiler/checker-operators.js +126 -118
  51. package/dist/api/compiler/checker-overloads.js +27 -27
  52. package/dist/api/compiler/checker-property-access.js +59 -55
  53. package/dist/api/compiler/checker-services.d.ts +1 -0
  54. package/dist/api/compiler/checker-services.js +222 -210
  55. package/dist/api/compiler/checker-signatures.js +65 -49
  56. package/dist/api/compiler/checker-source-file.d.ts +5 -0
  57. package/dist/api/compiler/checker-source-file.js +154 -130
  58. package/dist/api/compiler/checker-statements.js +33 -32
  59. package/dist/api/compiler/checker-super.js +50 -50
  60. package/dist/api/compiler/checker-symbol-types.js +109 -93
  61. package/dist/api/compiler/checker-symbols.d.ts +13 -1
  62. package/dist/api/compiler/checker-symbols.js +264 -149
  63. package/dist/api/compiler/checker-type-factory.d.ts +5 -0
  64. package/dist/api/compiler/checker-type-factory.js +190 -46
  65. package/dist/api/compiler/checker-type-nodes.d.ts +1 -0
  66. package/dist/api/compiler/checker-type-nodes.js +179 -141
  67. package/dist/api/compiler/checker-type-operators.d.ts +2 -0
  68. package/dist/api/compiler/checker-type-operators.js +110 -63
  69. package/dist/api/compiler/checker-types.d.ts +80 -3
  70. package/dist/api/compiler/checker-types.js +121 -2
  71. package/dist/api/compiler/checker-unused.js +114 -118
  72. package/dist/api/compiler/checker-utilities.js +11 -11
  73. package/dist/api/compiler/checker.d.ts +97 -31
  74. package/dist/api/compiler/checker.js +149 -35
  75. package/dist/api/compiler/command-line.d.ts +1 -3
  76. package/dist/api/compiler/command-line.js +47 -44
  77. package/dist/api/compiler/compile-program.d.ts +24 -4
  78. package/dist/api/compiler/compile-program.js +53 -26
  79. package/dist/api/compiler/diagnostic-messages.d.ts +1849 -1774
  80. package/dist/api/compiler/diagnostic-messages.js +128 -122
  81. package/dist/api/compiler/diagnostics.js +7 -7
  82. package/dist/api/compiler/emitter.d.ts +7 -1
  83. package/dist/api/compiler/emitter.js +53 -11
  84. package/dist/api/compiler/expr-record.d.ts +11 -0
  85. package/dist/api/compiler/expr-record.js +53 -0
  86. package/dist/api/compiler/file-include.d.ts +2 -1
  87. package/dist/api/compiler/file-include.js +11 -7
  88. package/dist/api/compiler/file-loader.d.ts +10 -0
  89. package/dist/api/compiler/file-loader.js +138 -41
  90. package/dist/api/compiler/identifier-name.d.ts +9 -0
  91. package/dist/api/compiler/identifier-name.js +10 -0
  92. package/dist/api/compiler/instantiation.d.ts +7 -0
  93. package/dist/api/compiler/instantiation.js +101 -49
  94. package/dist/api/compiler/jsdoc.js +27 -25
  95. package/dist/api/compiler/link-tables.d.ts +48 -18
  96. package/dist/api/compiler/link-tables.js +80 -37
  97. package/dist/api/compiler/locales/cs-CZ.d.ts +1 -1
  98. package/dist/api/compiler/locales/cs-CZ.js +1 -1
  99. package/dist/api/compiler/locales/de-DE.d.ts +1 -1
  100. package/dist/api/compiler/locales/de-DE.js +1 -1
  101. package/dist/api/compiler/locales/es-ES.d.ts +1 -1
  102. package/dist/api/compiler/locales/es-ES.js +1 -1
  103. package/dist/api/compiler/locales/fr-FR.d.ts +1 -1
  104. package/dist/api/compiler/locales/fr-FR.js +1 -1
  105. package/dist/api/compiler/locales/it-IT.d.ts +1 -1
  106. package/dist/api/compiler/locales/it-IT.js +1 -1
  107. package/dist/api/compiler/locales/ja-JP.d.ts +1 -1
  108. package/dist/api/compiler/locales/ja-JP.js +1 -1
  109. package/dist/api/compiler/locales/ko-KR.d.ts +1 -1
  110. package/dist/api/compiler/locales/ko-KR.js +1 -1
  111. package/dist/api/compiler/locales/pl-PL.d.ts +1 -1
  112. package/dist/api/compiler/locales/pl-PL.js +1 -1
  113. package/dist/api/compiler/locales/pt-BR.d.ts +1 -1
  114. package/dist/api/compiler/locales/pt-BR.js +1 -1
  115. package/dist/api/compiler/locales/ru-RU.d.ts +1 -1
  116. package/dist/api/compiler/locales/ru-RU.js +1 -1
  117. package/dist/api/compiler/locales/tr-TR.d.ts +1 -1
  118. package/dist/api/compiler/locales/tr-TR.js +1 -1
  119. package/dist/api/compiler/locales/zh-CN.d.ts +1 -1
  120. package/dist/api/compiler/locales/zh-CN.js +1 -1
  121. package/dist/api/compiler/locales/zh-TW.d.ts +1 -1
  122. package/dist/api/compiler/locales/zh-TW.js +1 -1
  123. package/dist/api/compiler/module-resolution-types.js +6 -6
  124. package/dist/api/compiler/module-resolution.d.ts +10 -1
  125. package/dist/api/compiler/module-resolution.js +115 -84
  126. package/dist/api/compiler/module-specifiers.d.ts +15 -0
  127. package/dist/api/compiler/module-specifiers.js +24 -18
  128. package/dist/api/compiler/name-resolver.js +74 -65
  129. package/dist/api/compiler/node-builder-names.d.ts +11 -3
  130. package/dist/api/compiler/node-builder-names.js +210 -90
  131. package/dist/api/compiler/node-builder-pseudo.js +29 -31
  132. package/dist/api/compiler/node-builder-reuse.js +23 -22
  133. package/dist/api/compiler/node-builder.d.ts +18 -1
  134. package/dist/api/compiler/node-builder.js +191 -102
  135. package/dist/api/compiler/option-declarations.d.ts +2 -6
  136. package/dist/api/compiler/option-declarations.js +315 -375
  137. package/dist/api/compiler/options.d.ts +15 -33
  138. package/dist/api/compiler/options.js +21 -54
  139. package/dist/api/compiler/output-paths.d.ts +4 -1
  140. package/dist/api/compiler/output-paths.js +6 -11
  141. package/dist/api/compiler/package-json.d.ts +3 -3
  142. package/dist/api/compiler/package-json.js +11 -10
  143. package/dist/api/compiler/parser.d.ts +42 -20
  144. package/dist/api/compiler/parser.js +318 -224
  145. package/dist/api/compiler/path.d.ts +9 -0
  146. package/dist/api/compiler/path.js +20 -3
  147. package/dist/api/compiler/printer/emit-context.d.ts +3 -1
  148. package/dist/api/compiler/printer/emit-context.js +16 -1
  149. package/dist/api/compiler/printer/factory-base.d.ts +2 -2
  150. package/dist/api/compiler/printer/factory-base.js +7 -3
  151. package/dist/api/compiler/printer/factory.js +6 -3
  152. package/dist/api/compiler/printer/helpers.js +10 -1
  153. package/dist/api/compiler/printer/name-generator.d.ts +1 -1
  154. package/dist/api/compiler/printer/name-generator.js +35 -16
  155. package/dist/api/compiler/printer/printer.d.ts +1 -0
  156. package/dist/api/compiler/printer/printer.js +306 -283
  157. package/dist/api/compiler/printer/utilities.js +149 -147
  158. package/dist/api/compiler/program-checker.d.ts +8 -2
  159. package/dist/api/compiler/program-checker.js +84 -34
  160. package/dist/api/compiler/program-utilities.d.ts +3 -1
  161. package/dist/api/compiler/program-utilities.js +28 -15
  162. package/dist/api/compiler/program.d.ts +2 -0
  163. package/dist/api/compiler/program.js +69 -57
  164. package/dist/api/compiler/pseudo-bigint.d.ts +2 -0
  165. package/dist/api/compiler/pseudo-bigint.js +18 -0
  166. package/dist/api/compiler/regexp-checker.d.ts +1 -1
  167. package/dist/api/compiler/regexp-checker.js +93 -76
  168. package/dist/api/compiler/relations.d.ts +27 -4
  169. package/dist/api/compiler/relations.js +337 -180
  170. package/dist/api/compiler/reparser.js +64 -59
  171. package/dist/api/compiler/scanner.d.ts +27 -2
  172. package/dist/api/compiler/scanner.js +181 -150
  173. package/dist/api/compiler/shared-results.d.ts +696 -0
  174. package/dist/api/compiler/shared-results.js +2905 -0
  175. package/dist/api/compiler/sourcemap.js +2 -2
  176. package/dist/api/compiler/symbol-accessibility.js +87 -74
  177. package/dist/api/compiler/symbol.d.ts +22 -13
  178. package/dist/api/compiler/symbol.js +15 -1
  179. package/dist/api/compiler/syntax-kind.d.ts +198 -197
  180. package/dist/api/compiler/transformers/alias-references.js +247 -139
  181. package/dist/api/compiler/transformers/async-utilities.js +25 -25
  182. package/dist/api/compiler/transformers/async.d.ts +0 -1
  183. package/dist/api/compiler/transformers/async.js +64 -77
  184. package/dist/api/compiler/transformers/class-fields.d.ts +1 -0
  185. package/dist/api/compiler/transformers/class-fields.js +81 -78
  186. package/dist/api/compiler/transformers/commonjs-module.js +18 -15
  187. package/dist/api/compiler/transformers/const-enum-inliner.js +1 -1
  188. package/dist/api/compiler/transformers/declarations-diagnostics.js +247 -244
  189. package/dist/api/compiler/transformers/declarations-pseudo.js +100 -100
  190. package/dist/api/compiler/transformers/declarations-resolver.d.ts +0 -3
  191. package/dist/api/compiler/transformers/declarations-syntactic.d.ts +1 -2
  192. package/dist/api/compiler/transformers/declarations-syntactic.js +134 -156
  193. package/dist/api/compiler/transformers/declarations-tracker.js +18 -18
  194. package/dist/api/compiler/transformers/declarations.d.ts +4 -1
  195. package/dist/api/compiler/transformers/declarations.js +307 -239
  196. package/dist/api/compiler/transformers/decorator-metadata.d.ts +1 -1
  197. package/dist/api/compiler/transformers/decorator-metadata.js +53 -45
  198. package/dist/api/compiler/transformers/decorator-utilities.js +24 -24
  199. package/dist/api/compiler/transformers/destructuring.js +19 -18
  200. package/dist/api/compiler/transformers/emit-resolver.js +1 -1
  201. package/dist/api/compiler/transformers/es-decorators.js +55 -55
  202. package/dist/api/compiler/transformers/external-module-info.js +3 -3
  203. package/dist/api/compiler/transformers/for-await.js +25 -25
  204. package/dist/api/compiler/transformers/import-elision.js +14 -14
  205. package/dist/api/compiler/transformers/jsx.js +12 -12
  206. package/dist/api/compiler/transformers/legacy-decorators.js +17 -17
  207. package/dist/api/compiler/transformers/module.js +8 -8
  208. package/dist/api/compiler/transformers/named-evaluation.js +4 -4
  209. package/dist/api/compiler/transformers/object-rest-spread.js +20 -20
  210. package/dist/api/compiler/transformers/optional-chain.js +10 -10
  211. package/dist/api/compiler/transformers/reference-resolver.d.ts +12 -1
  212. package/dist/api/compiler/transformers/reference-resolver.js +131 -69
  213. package/dist/api/compiler/transformers/runtime-syntax.js +35 -31
  214. package/dist/api/compiler/transformers/subtree-facts.js +47 -47
  215. package/dist/api/compiler/transformers/syntax-facts.js +56 -58
  216. package/dist/api/compiler/transformers/type-eraser.js +73 -66
  217. package/dist/api/compiler/transformers/type-serialization.js +24 -24
  218. package/dist/api/compiler/transformers/using.js +12 -12
  219. package/dist/api/compiler/transformers/utilities.js +77 -77
  220. package/dist/api/compiler/transformers/visitor-base.js +172 -172
  221. package/dist/api/compiler/transformers/visitor-hooks.js +6 -2
  222. package/dist/api/compiler/tsconfig.d.ts +10 -2
  223. package/dist/api/compiler/tsconfig.js +136 -48
  224. package/dist/api/compiler/type-printer.js +40 -3
  225. package/dist/api/compiler/types.d.ts +2 -1
  226. package/dist/api/library/ast.generated.d.ts +42 -39
  227. package/dist/api/library/ast.generated.js +1 -1
  228. package/dist/api/library/compiler-options.generated.d.ts +111 -100
  229. package/dist/api/library/compiler-options.generated.js +1 -1
  230. package/dist/api/library/disk.js +12 -1
  231. package/dist/api/library/enums.generated.d.ts +206 -206
  232. package/dist/api/library/enums.generated.js +206 -206
  233. package/dist/api/library/nodes.js +26 -26
  234. package/package.json +9 -9
  235. package/src/compiler/ast-utilities.ts +99 -7
  236. package/src/compiler/ast.ts +74 -38
  237. package/src/compiler/binder.ts +39 -4
  238. package/src/compiler/cgroup.ts +157 -0
  239. package/src/compiler/character-codes.ts +2 -2
  240. package/src/compiler/checker-calls.ts +76 -8
  241. package/src/compiler/checker-classes.ts +80 -25
  242. package/src/compiler/checker-contextual.ts +110 -1
  243. package/src/compiler/checker-declarations.ts +31 -4
  244. package/src/compiler/checker-declared-types.ts +8 -5
  245. package/src/compiler/checker-decorators.ts +1 -1
  246. package/src/compiler/checker-deprecation.ts +29 -8
  247. package/src/compiler/checker-destructuring.ts +10 -3
  248. package/src/compiler/checker-emit-helpers.ts +1 -0
  249. package/src/compiler/checker-emit-resolver.ts +16 -6
  250. package/src/compiler/checker-expressions.ts +95 -47
  251. package/src/compiler/checker-functions.ts +21 -6
  252. package/src/compiler/checker-generated-code.ts +2 -22
  253. package/src/compiler/checker-grammar.ts +133 -60
  254. package/src/compiler/checker-heritage.ts +22 -21
  255. package/src/compiler/checker-inference.ts +514 -87
  256. package/src/compiler/checker-iteration.ts +18 -31
  257. package/src/compiler/checker-javascript.ts +1 -1
  258. package/src/compiler/checker-jsdoc.ts +50 -27
  259. package/src/compiler/checker-jsx.ts +28 -5
  260. package/src/compiler/checker-members.ts +197 -55
  261. package/src/compiler/checker-modules.ts +332 -65
  262. package/src/compiler/checker-narrowing.ts +98 -19
  263. package/src/compiler/checker-object-literals.ts +3 -0
  264. package/src/compiler/checker-operators.ts +11 -4
  265. package/src/compiler/checker-property-access.ts +7 -2
  266. package/src/compiler/checker-services.ts +39 -12
  267. package/src/compiler/checker-signatures.ts +15 -1
  268. package/src/compiler/checker-source-file.ts +39 -13
  269. package/src/compiler/checker-statements.ts +3 -2
  270. package/src/compiler/checker-symbol-types.ts +29 -6
  271. package/src/compiler/checker-symbols.ts +158 -15
  272. package/src/compiler/checker-type-factory.ts +173 -35
  273. package/src/compiler/checker-type-nodes.ts +46 -3
  274. package/src/compiler/checker-type-operators.ts +83 -26
  275. package/src/compiler/checker-types.ts +147 -4
  276. package/src/compiler/checker-unused.ts +9 -14
  277. package/src/compiler/checker.ts +175 -41
  278. package/src/compiler/command-line.ts +28 -28
  279. package/src/compiler/compile-program.ts +59 -25
  280. package/src/compiler/decoder.ts +15 -5
  281. package/src/compiler/diagnostic-messages.ts +1973 -1892
  282. package/src/compiler/doctor-report.ts +133 -0
  283. package/src/compiler/emitter.ts +57 -8
  284. package/src/compiler/encoder.ts +23 -8
  285. package/src/compiler/expr-record.ts +59 -0
  286. package/src/compiler/file-include.ts +9 -3
  287. package/src/compiler/file-loader.ts +139 -32
  288. package/src/compiler/help.ts +10 -14
  289. package/src/compiler/identifier-name.ts +13 -0
  290. package/src/compiler/incremental.ts +86 -18
  291. package/src/compiler/init.ts +2 -7
  292. package/src/compiler/instantiation.ts +77 -22
  293. package/src/compiler/jsdoc.ts +7 -3
  294. package/src/compiler/link-tables.ts +82 -37
  295. package/src/compiler/locales/cs-CZ.ts +1 -1
  296. package/src/compiler/locales/de-DE.ts +1 -1
  297. package/src/compiler/locales/es-ES.ts +1 -1
  298. package/src/compiler/locales/fr-FR.ts +1 -1
  299. package/src/compiler/locales/it-IT.ts +1 -1
  300. package/src/compiler/locales/ja-JP.ts +1 -1
  301. package/src/compiler/locales/ko-KR.ts +1 -1
  302. package/src/compiler/locales/pl-PL.ts +1 -1
  303. package/src/compiler/locales/pt-BR.ts +1 -1
  304. package/src/compiler/locales/ru-RU.ts +1 -1
  305. package/src/compiler/locales/tr-TR.ts +1 -1
  306. package/src/compiler/locales/zh-CN.ts +1 -1
  307. package/src/compiler/locales/zh-TW.ts +1 -1
  308. package/src/compiler/module-resolution.ts +44 -8
  309. package/src/compiler/module-specifiers.ts +62 -20
  310. package/src/compiler/name-resolver.ts +9 -1
  311. package/src/compiler/node-builder-names.ts +236 -54
  312. package/src/compiler/node-builder-pseudo.ts +4 -7
  313. package/src/compiler/node-builder-reuse.ts +5 -4
  314. package/src/compiler/node-builder.ts +130 -31
  315. package/src/compiler/option-declarations.ts +33 -103
  316. package/src/compiler/options.ts +23 -62
  317. package/src/compiler/output-paths.ts +5 -18
  318. package/src/compiler/package-entrypoints.ts +345 -0
  319. package/src/compiler/package-json.ts +4 -4
  320. package/src/compiler/parallel-check.ts +543 -147
  321. package/src/compiler/parallel-emit.ts +4 -4
  322. package/src/compiler/parser.ts +166 -47
  323. package/src/compiler/path.ts +22 -2
  324. package/src/compiler/printer/emit-context.ts +16 -0
  325. package/src/compiler/printer/factory-base.ts +10 -3
  326. package/src/compiler/printer/factory.ts +7 -3
  327. package/src/compiler/printer/helpers.ts +10 -1
  328. package/src/compiler/printer/name-generator.ts +24 -2
  329. package/src/compiler/printer/printer.ts +39 -16
  330. package/src/compiler/printer/utilities.ts +8 -2
  331. package/src/compiler/program-checker.ts +53 -5
  332. package/src/compiler/program-utilities.ts +23 -10
  333. package/src/compiler/program.ts +13 -1
  334. package/src/compiler/pseudo-bigint.ts +17 -0
  335. package/src/compiler/regexp-checker.ts +63 -30
  336. package/src/compiler/relations.ts +233 -77
  337. package/src/compiler/reparser.ts +14 -5
  338. package/src/compiler/run-config.ts +1383 -0
  339. package/src/compiler/run-record-read.ts +87 -0
  340. package/src/compiler/run-records.ts +575 -0
  341. package/src/compiler/scanner.ts +166 -120
  342. package/src/compiler/shared-results.ts +3144 -0
  343. package/src/compiler/show-config.ts +18 -1
  344. package/src/compiler/sourcemap.ts +2 -2
  345. package/src/compiler/symbol-accessibility.ts +26 -3
  346. package/src/compiler/symbol.ts +31 -14
  347. package/src/compiler/syntax-kind.ts +188 -187
  348. package/src/compiler/thread-entry.ts +22 -3
  349. package/src/compiler/transformers/alias-references.ts +123 -4
  350. package/src/compiler/transformers/async.ts +2 -17
  351. package/src/compiler/transformers/class-fields.ts +13 -12
  352. package/src/compiler/transformers/commonjs-module.ts +11 -7
  353. package/src/compiler/transformers/declarations-diagnostics.ts +5 -3
  354. package/src/compiler/transformers/declarations-pseudo.ts +2 -4
  355. package/src/compiler/transformers/declarations-resolver.ts +0 -3
  356. package/src/compiler/transformers/declarations-syntactic.ts +1 -21
  357. package/src/compiler/transformers/declarations.ts +136 -49
  358. package/src/compiler/transformers/decorator-metadata.ts +9 -1
  359. package/src/compiler/transformers/destructuring.ts +4 -3
  360. package/src/compiler/transformers/external-module-info.ts +1 -1
  361. package/src/compiler/transformers/jsx.ts +2 -1
  362. package/src/compiler/transformers/reference-resolver.ts +83 -19
  363. package/src/compiler/transformers/runtime-syntax.ts +6 -1
  364. package/src/compiler/transformers/syntax-facts.ts +2 -7
  365. package/src/compiler/transformers/type-eraser.ts +10 -1
  366. package/src/compiler/transformers/type-serialization.ts +3 -2
  367. package/src/compiler/transformers/visitor-base.ts +2 -1
  368. package/src/compiler/transformers/visitor-hooks.ts +9 -4
  369. package/src/compiler/tsc-build.ts +67 -6
  370. package/src/compiler/tsc-cli.ts +35 -4
  371. package/src/compiler/tsc-compile.ts +220 -10
  372. package/src/compiler/tsc-watch.ts +97 -47
  373. package/src/compiler/tsconfig.ts +176 -19
  374. package/src/compiler/type-printer.ts +36 -2
  375. package/src/compiler/types.ts +2 -1
  376. package/src/library/ast.generated.ts +57 -41
  377. package/src/library/compiler-options.generated.ts +117 -103
  378. package/src/library/disk.ts +10 -1
  379. package/src/library/enums.generated.ts +196 -196
@@ -104,6 +104,7 @@ const enum Features {
104
104
  Node16Default = Imports | SelfName | Exports | ExportsPatternTrailers,
105
105
  NodeNextDefault = Imports | SelfName | Exports | ExportsPatternTrailers | ImportsPatternRoot,
106
106
  BundlerDefault = Imports | SelfName | Exports | ExportsPatternTrailers | ImportsPatternRoot,
107
+ All = Imports | SelfName | Exports | ExportsPatternTrailers | ImportsPatternRoot,
107
108
  }
108
109
 
109
110
  function extensionsToString(extensions: number): string {
@@ -306,9 +307,11 @@ export class Resolver {
306
307
  /**
307
308
  * Called before the resolver is shared with other threads, which makes it immutable
308
309
  * (parallel-check.ts): from then on, each thread caches the results and `package.json` lookups the
309
- * resolver did not have yet in tables of its own.
310
+ * resolver did not have yet in tables of its own. A resolver already shared (by an earlier program of
311
+ * a watch, which a rebuild updates: `Program.updateFile`) is immutable and stays as it is.
310
312
  */
311
313
  prepareForSharing(): void {
314
+ if (this.shared) return;
312
315
  this.getPathPatterns();
313
316
  this.packageJsonInfoCache.prepareForSharing();
314
317
  this.shared = true;
@@ -524,6 +527,27 @@ export class Resolver {
524
527
  return state.getPackageScopeForPath(directory);
525
528
  }
526
529
 
530
+ /**
531
+ * The TypeScript or declaration file a package's directory loads (its `typings`, `types` or `main` field, or
532
+ * an index file), as tsgo finds a package's main entrypoint; `''` for none.
533
+ */
534
+ loadPackageMainEntrypoint(info: PackageJsonInfo): string {
535
+ const state = this.entrypointState(info.packageDirectory);
536
+ return state.loadPackageMainEntrypoint(info);
537
+ }
538
+
539
+ /** The TypeScript or declaration file an `exports` target path of a package loads; `''` for none. */
540
+ loadPackageExportTargetEntrypoint(packageDirectory: string, candidate: string, target: string): string {
541
+ return this.entrypointState(packageDirectory).loadPackageExportTargetEntrypoint(candidate, target);
542
+ }
543
+
544
+ private entrypointState(packageDirectory: string): ResolutionState {
545
+ const state = new ResolutionState(this, undefined, '', packageDirectory, false, ModuleKind.None, this.options);
546
+ state.extensions = Extensions.TypeScript | Extensions.Declaration;
547
+ state.features = Features.All;
548
+ return state;
549
+ }
550
+
527
551
  /** Resolves an `extends` specifier of a tsconfig file. */
528
552
  resolveConfig(moduleName: string, containingFile: string): ResolvedModule {
529
553
  const state = new ResolutionState(
@@ -715,8 +739,9 @@ class ResolutionState {
715
739
  this.trace(Diagnostics.Directory_0_does_not_exist_skipping_all_lookups_in_it, typeRoot);
716
740
  continue;
717
741
  }
718
- if (fromConfig) {
719
- // Configured type roots resolve as files or directories, like modules.
742
+ // Configured type roots resolve as files or directories, like modules; a name ending in a separator
743
+ // only as a directory.
744
+ if (fromConfig && !hasTrailingDirectorySeparator(candidate)) {
720
745
  const fromFile = this.loadModuleFromFile(Extensions.Declaration, candidate);
721
746
  if (fromFile !== undefined) {
722
747
  this.setPackageIdFromNodeModulesPath(fromFile);
@@ -755,12 +780,13 @@ class ResolutionState {
755
780
  }
756
781
  }
757
782
 
783
+ /** The type root's path for the name, resolved against the type root as tsgo does: `./css` in it is `css`. */
758
784
  private getCandidateFromTypeRoot(typeRoot: string): string {
759
785
  const name =
760
786
  typeRoot.endsWith('/node_modules/@types') || typeRoot.endsWith('/node_modules/@types/')
761
787
  ? this.mangleScopedPackageName(this.name)
762
788
  : this.name;
763
- return combinePaths(typeRoot, name);
789
+ return normalizePath(combinePaths(typeRoot, name));
764
790
  }
765
791
 
766
792
  private mangleScopedPackageName(name: string): string {
@@ -781,10 +807,12 @@ class ResolutionState {
781
807
  this.trace(Diagnostics.Directory_0_does_not_exist_skipping_all_lookups_in_it, typeRoot);
782
808
  continue;
783
809
  }
784
- const fromFile = this.loadModuleFromFile(Extensions.Declaration, candidate);
785
- if (fromFile !== undefined) {
786
- this.setPackageIdFromNodeModulesPath(fromFile);
787
- return fromFile;
810
+ if (!hasTrailingDirectorySeparator(candidate)) {
811
+ const fromFile = this.loadModuleFromFile(Extensions.Declaration, candidate);
812
+ if (fromFile !== undefined) {
813
+ this.setPackageIdFromNodeModulesPath(fromFile);
814
+ return fromFile;
815
+ }
788
816
  }
789
817
  const fromDirectory = this.loadNodeModuleFromDirectory(Extensions.Declaration, candidate, true);
790
818
  if (fromDirectory !== undefined) return fromDirectory;
@@ -1825,6 +1853,14 @@ class ResolutionState {
1825
1853
  return false;
1826
1854
  }
1827
1855
 
1856
+ loadPackageMainEntrypoint(info: PackageJsonInfo): string {
1857
+ return this.loadNodeModuleFromDirectoryWorker(this.extensions, info.packageDirectory, info)?.path ?? '';
1858
+ }
1859
+
1860
+ loadPackageExportTargetEntrypoint(candidate: string, target: string): string {
1861
+ return this.loadFileNameFromPackageJsonField(this.extensions, candidate, target)?.path ?? '';
1862
+ }
1863
+
1828
1864
  private loadNodeModuleFromDirectory(
1829
1865
  extensions: number,
1830
1866
  candidate: string,
@@ -154,6 +154,21 @@ class ResolvedPreferences {
154
154
 
155
155
  //// Entry points
156
156
 
157
+ /** Where a module specifier came from: an existing import (None), `node_modules`, `paths`, a redirect, a relative path, or an ambient module. */
158
+ export const enum ModuleSpecifierResultKind {
159
+ None,
160
+ NodeModules,
161
+ Paths,
162
+ Redirect,
163
+ Relative,
164
+ Ambient,
165
+ }
166
+
167
+ export interface ModuleSpecifiersResult {
168
+ readonly specifiers: string[];
169
+ readonly kind: ModuleSpecifierResultKind;
170
+ }
171
+
157
172
  /**
158
173
  * Specifiers `importingFile` can import `moduleFileName` with, best first, as tsgo's
159
174
  * `GetModuleSpecifiersForFileWithInfo`. `overrideImportMode` is `None` for the file's own mode.
@@ -167,6 +182,27 @@ export function getModuleSpecifiersForFile(
167
182
  overrideImportMode: ModuleKind,
168
183
  forAutoImports: boolean,
169
184
  ): string[] {
185
+ return getModuleSpecifiersForFileWithInfo(
186
+ importingFile,
187
+ moduleFileName,
188
+ options,
189
+ host,
190
+ preferences,
191
+ overrideImportMode,
192
+ forAutoImports,
193
+ ).specifiers;
194
+ }
195
+
196
+ /** The specifiers `getModuleSpecifiersForFile` gives, and where they came from. */
197
+ export function getModuleSpecifiersForFileWithInfo(
198
+ importingFile: SourceFile,
199
+ moduleFileName: string,
200
+ options: CompilerOptions,
201
+ host: ModuleSpecifierHost,
202
+ preferences: ModuleSpecifierPreferences,
203
+ overrideImportMode: ModuleKind,
204
+ forAutoImports: boolean,
205
+ ): ModuleSpecifiersResult {
170
206
  const modulePaths = getAllModulePaths(
171
207
  new ImporterInfo(host.getSourceOfProjectReferenceIfOutputIncluded(importingFile), host.useCaseSensitiveFileNames()),
172
208
  moduleFileName,
@@ -319,7 +355,7 @@ function computeModuleSpecifiers(
319
355
  userPreferences: ModuleSpecifierPreferences,
320
356
  overrideImportMode: ModuleKind,
321
357
  forAutoImport: boolean,
322
- ): string[] {
358
+ ): ModuleSpecifiersResult {
323
359
  const info = new ImporterInfo(importingFile.fileName, host.useCaseSensitiveFileNames());
324
360
  const preferences = resolvePreferences(userPreferences, host, options, importingFile, '');
325
361
  const cwd = host.getCurrentDirectory();
@@ -347,7 +383,7 @@ function computeModuleSpecifiers(
347
383
  const existingMode = host.getModeForUsageLocation(importingFile, existingImport);
348
384
  // An import resolved in another mode may not resolve the same way.
349
385
  if (existingMode !== targetMode && existingMode !== ModuleKind.None && targetMode !== ModuleKind.None) continue;
350
- return [text];
386
+ return { specifiers: [text], kind: ModuleSpecifierResultKind.None };
351
387
  }
352
388
 
353
389
  let importedFileIsInNodeModules = false;
@@ -375,7 +411,8 @@ function computeModuleSpecifiers(
375
411
  if (specifier !== '') {
376
412
  nodeModulesSpecifiers.push(specifier);
377
413
  // A specifier for a redirect is a bare package name; nothing beats it.
378
- if (modulePath.isRedirect) return nodeModulesSpecifiers;
414
+ if (modulePath.isRedirect)
415
+ return { specifiers: nodeModulesSpecifiers, kind: ModuleSpecifierResultKind.NodeModules };
379
416
  }
380
417
  const local = getLocalModuleSpecifier(
381
418
  modulePath.fileName,
@@ -401,10 +438,12 @@ function computeModuleSpecifiers(
401
438
  relativeSpecifiers.push(local);
402
439
  }
403
440
  }
404
- if (pathsSpecifiers.length > 0) return pathsSpecifiers;
405
- if (redirectPathsSpecifiers.length > 0) return redirectPathsSpecifiers;
406
- if (nodeModulesSpecifiers.length > 0) return nodeModulesSpecifiers;
407
- return relativeSpecifiers;
441
+ if (pathsSpecifiers.length > 0) return { specifiers: pathsSpecifiers, kind: ModuleSpecifierResultKind.Paths };
442
+ if (redirectPathsSpecifiers.length > 0)
443
+ return { specifiers: redirectPathsSpecifiers, kind: ModuleSpecifierResultKind.Redirect };
444
+ if (nodeModulesSpecifiers.length > 0)
445
+ return { specifiers: nodeModulesSpecifiers, kind: ModuleSpecifierResultKind.NodeModules };
446
+ return { specifiers: relativeSpecifiers, kind: ModuleSpecifierResultKind.Relative };
408
447
  }
409
448
 
410
449
  /** A specifier through `paths`, `package.json` `imports`, `rootDirs` or a relative path. */
@@ -678,9 +717,19 @@ function tryGetModuleNameAsNodeModule(
678
717
  ): string {
679
718
  const parts = getNodeModulePathParts(modulePath.fileName);
680
719
  if (parts === undefined) return '';
720
+ // Only a `node_modules` in the importing file's directory or above can be used, and not the global typings
721
+ // cache. This is checked before `exports`, which can give a bare specifier directly.
722
+ const caseSensitive = host.useCaseSensitiveFileNames();
723
+ const globalTypingsCacheLocation = host.getGlobalTypingsCacheLocation();
724
+ const pathToTopLevelNodeModules = modulePath.fileName.slice(0, parts.topLevelNodeModulesIndex);
725
+ if (
726
+ !hasPrefix(info.sourceDirectory, pathToTopLevelNodeModules, caseSensitive) ||
727
+ (globalTypingsCacheLocation !== '' &&
728
+ hasPrefix(globalTypingsCacheLocation, pathToTopLevelNodeModules, caseSensitive))
729
+ )
730
+ return '';
681
731
  const preferences = resolvePreferences(userPreferences, host, options, importingFile, '');
682
732
  const allowedEndings = preferences.allowedEndings(ModuleKind.None);
683
- const caseSensitive = host.useCaseSensitiveFileNames();
684
733
  let moduleSpecifier = modulePath.fileName;
685
734
  let isPackageRootPath = false;
686
735
  if (!packageNameOnly) {
@@ -706,16 +755,6 @@ function tryGetModuleNameAsNodeModule(
706
755
  }
707
756
  if (modulePath.isRedirect && !isPackageRootPath) return '';
708
757
 
709
- // Only a `node_modules` in the importing file's directory or above can be used, and not the
710
- // global typings cache.
711
- const globalTypingsCacheLocation = host.getGlobalTypingsCacheLocation();
712
- const pathToTopLevelNodeModules = moduleSpecifier.slice(0, parts.topLevelNodeModulesIndex);
713
- if (
714
- !hasPrefix(info.sourceDirectory, pathToTopLevelNodeModules, caseSensitive) ||
715
- (globalTypingsCacheLocation !== '' &&
716
- hasPrefix(globalTypingsCacheLocation, pathToTopLevelNodeModules, caseSensitive))
717
- )
718
- return '';
719
758
  // A package found in `@types` is imported by its own name.
720
759
  return getPackageNameFromTypesPackageName(moduleSpecifier.slice(parts.topLevelPackageNameIndex + 1));
721
760
  }
@@ -1285,7 +1324,8 @@ export function getAllowedEndingsInPreferredOrder(
1285
1324
  syntaxImpliedNodeFormat: ModuleKind,
1286
1325
  ): ModuleSpecifierEnding[] {
1287
1326
  let preferred = getPreferredEnding(preferences, host, options, importingFile, oldImportSpecifier, ModuleKind.None);
1288
- if (host.getDefaultResolutionModeForFile(importingFile) !== syntaxImpliedNodeFormat)
1327
+ const resolutionMode = host.getDefaultResolutionModeForFile(importingFile);
1328
+ if (resolutionMode !== syntaxImpliedNodeFormat)
1289
1329
  preferred = getPreferredEnding(
1290
1330
  preferences,
1291
1331
  host,
@@ -1295,7 +1335,9 @@ export function getAllowedEndingsInPreferredOrder(
1295
1335
  syntaxImpliedNodeFormat,
1296
1336
  );
1297
1337
  const allowTs = shouldAllowImportingTsExtension(options, importingFile.fileName);
1298
- if (syntaxImpliedNodeFormat === ModuleKind.ESNext && isNodeNext(options))
1338
+ // Without a mode implied by the syntax, the file's default resolution mode applies.
1339
+ const effectiveSyntaxMode = syntaxImpliedNodeFormat !== ModuleKind.None ? syntaxImpliedNodeFormat : resolutionMode;
1340
+ if (effectiveSyntaxMode === ModuleKind.ESNext && isNodeNext(options))
1299
1341
  return allowTs
1300
1342
  ? [ModuleSpecifierEnding.TsExtension, ModuleSpecifierEnding.JsExtension]
1301
1343
  : [ModuleSpecifierEnding.JsExtension];
@@ -172,13 +172,20 @@ export class NameResolver {
172
172
  current = current.parent;
173
173
  if (current === undefined) break;
174
174
  }
175
+ // A module's import attributes type sees neither the module's locals nor its exports.
176
+ const isModuleAttributes =
177
+ current.kind === SyntaxKind.ModuleDeclaration &&
178
+ (current as ModuleDeclaration).attributes !== undefined &&
179
+ lastLocation === (current as ModuleDeclaration).attributes;
175
180
  const locals = getLocalsOf(current);
176
181
  // Locals of a global source file are merged into the globals.
177
182
  if (locals !== undefined && !isGlobalSourceFile(current)) {
178
183
  result = this.lookup(locals, name, meaning);
179
184
  if (result !== undefined) {
180
185
  let useResult = true;
181
- if (isFunctionLike(current) && lastLocation !== undefined && lastLocation !== getBody(current)) {
186
+ if (isModuleAttributes) {
187
+ useResult = false;
188
+ } else if (isFunctionLike(current) && lastLocation !== undefined && lastLocation !== getBody(current)) {
182
189
  // Type parameters are in scope in the whole signature, but local types only in the
183
190
  // body; parameters only in the body, parameter list and return type. JSDoc types
184
191
  // are parented above type parameters, so this doesn't apply to them.
@@ -215,6 +222,7 @@ export class NameResolver {
215
222
  case SyntaxKind.SourceFile:
216
223
  case SyntaxKind.ModuleDeclaration: {
217
224
  if (current.kind === SyntaxKind.SourceFile && !isExternalOrCommonJSModule(current as SourceFile)) break;
225
+ if (isModuleAttributes) break;
218
226
  const moduleSymbol = this.getSymbolOfDeclaration(current);
219
227
  if (moduleSymbol === undefined) break;
220
228
  const moduleExports = moduleSymbol.exports ?? emptyTable;