tsc-ts 0.0.10 → 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 (367) 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 +20 -15
  6. package/dist/api/compiler/ast.js +1023 -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 +173 -123
  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 +469 -438
  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 -113
  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 +210 -74
  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 +137 -34
  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 +93 -31
  73. package/dist/api/compiler/checker.js +143 -35
  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 +19 -4
  77. package/dist/api/compiler/compile-program.js +45 -26
  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.js +7 -7
  81. package/dist/api/compiler/emitter.d.ts +7 -1
  82. package/dist/api/compiler/emitter.js +53 -11
  83. package/dist/api/compiler/file-include.d.ts +2 -1
  84. package/dist/api/compiler/file-include.js +11 -7
  85. package/dist/api/compiler/file-loader.d.ts +10 -0
  86. package/dist/api/compiler/file-loader.js +138 -41
  87. package/dist/api/compiler/instantiation.d.ts +7 -0
  88. package/dist/api/compiler/instantiation.js +101 -49
  89. package/dist/api/compiler/jsdoc.js +23 -23
  90. package/dist/api/compiler/link-tables.d.ts +48 -18
  91. package/dist/api/compiler/link-tables.js +80 -37
  92. package/dist/api/compiler/locales/cs-CZ.d.ts +1 -1
  93. package/dist/api/compiler/locales/cs-CZ.js +1 -1
  94. package/dist/api/compiler/locales/de-DE.d.ts +1 -1
  95. package/dist/api/compiler/locales/de-DE.js +1 -1
  96. package/dist/api/compiler/locales/es-ES.d.ts +1 -1
  97. package/dist/api/compiler/locales/es-ES.js +1 -1
  98. package/dist/api/compiler/locales/fr-FR.d.ts +1 -1
  99. package/dist/api/compiler/locales/fr-FR.js +1 -1
  100. package/dist/api/compiler/locales/it-IT.d.ts +1 -1
  101. package/dist/api/compiler/locales/it-IT.js +1 -1
  102. package/dist/api/compiler/locales/ja-JP.d.ts +1 -1
  103. package/dist/api/compiler/locales/ja-JP.js +1 -1
  104. package/dist/api/compiler/locales/ko-KR.d.ts +1 -1
  105. package/dist/api/compiler/locales/ko-KR.js +1 -1
  106. package/dist/api/compiler/locales/pl-PL.d.ts +1 -1
  107. package/dist/api/compiler/locales/pl-PL.js +1 -1
  108. package/dist/api/compiler/locales/pt-BR.d.ts +1 -1
  109. package/dist/api/compiler/locales/pt-BR.js +1 -1
  110. package/dist/api/compiler/locales/ru-RU.d.ts +1 -1
  111. package/dist/api/compiler/locales/ru-RU.js +1 -1
  112. package/dist/api/compiler/locales/tr-TR.d.ts +1 -1
  113. package/dist/api/compiler/locales/tr-TR.js +1 -1
  114. package/dist/api/compiler/locales/zh-CN.d.ts +1 -1
  115. package/dist/api/compiler/locales/zh-CN.js +1 -1
  116. package/dist/api/compiler/locales/zh-TW.d.ts +1 -1
  117. package/dist/api/compiler/locales/zh-TW.js +1 -1
  118. package/dist/api/compiler/module-resolution-types.js +6 -6
  119. package/dist/api/compiler/module-resolution.d.ts +10 -1
  120. package/dist/api/compiler/module-resolution.js +115 -84
  121. package/dist/api/compiler/module-specifiers.d.ts +15 -0
  122. package/dist/api/compiler/module-specifiers.js +24 -18
  123. package/dist/api/compiler/name-resolver.js +74 -65
  124. package/dist/api/compiler/node-builder-names.d.ts +11 -3
  125. package/dist/api/compiler/node-builder-names.js +210 -90
  126. package/dist/api/compiler/node-builder-pseudo.js +29 -31
  127. package/dist/api/compiler/node-builder-reuse.js +23 -22
  128. package/dist/api/compiler/node-builder.d.ts +18 -1
  129. package/dist/api/compiler/node-builder.js +191 -102
  130. package/dist/api/compiler/option-declarations.d.ts +2 -6
  131. package/dist/api/compiler/option-declarations.js +315 -375
  132. package/dist/api/compiler/options.d.ts +15 -33
  133. package/dist/api/compiler/options.js +21 -54
  134. package/dist/api/compiler/output-paths.d.ts +4 -1
  135. package/dist/api/compiler/output-paths.js +6 -11
  136. package/dist/api/compiler/package-json.d.ts +3 -3
  137. package/dist/api/compiler/package-json.js +11 -10
  138. package/dist/api/compiler/parser.d.ts +40 -19
  139. package/dist/api/compiler/parser.js +308 -216
  140. package/dist/api/compiler/path.d.ts +9 -0
  141. package/dist/api/compiler/path.js +20 -3
  142. package/dist/api/compiler/printer/emit-context.d.ts +3 -1
  143. package/dist/api/compiler/printer/emit-context.js +16 -1
  144. package/dist/api/compiler/printer/factory-base.d.ts +2 -2
  145. package/dist/api/compiler/printer/factory-base.js +7 -3
  146. package/dist/api/compiler/printer/factory.js +3 -1
  147. package/dist/api/compiler/printer/helpers.js +10 -1
  148. package/dist/api/compiler/printer/name-generator.d.ts +1 -1
  149. package/dist/api/compiler/printer/name-generator.js +35 -16
  150. package/dist/api/compiler/printer/printer.d.ts +1 -0
  151. package/dist/api/compiler/printer/printer.js +303 -281
  152. package/dist/api/compiler/printer/utilities.js +149 -147
  153. package/dist/api/compiler/program-checker.d.ts +8 -2
  154. package/dist/api/compiler/program-checker.js +84 -34
  155. package/dist/api/compiler/program-utilities.d.ts +3 -1
  156. package/dist/api/compiler/program-utilities.js +28 -15
  157. package/dist/api/compiler/program.d.ts +2 -0
  158. package/dist/api/compiler/program.js +69 -57
  159. package/dist/api/compiler/pseudo-bigint.d.ts +2 -0
  160. package/dist/api/compiler/pseudo-bigint.js +18 -0
  161. package/dist/api/compiler/regexp-checker.d.ts +1 -1
  162. package/dist/api/compiler/regexp-checker.js +93 -76
  163. package/dist/api/compiler/relations.d.ts +27 -4
  164. package/dist/api/compiler/relations.js +337 -180
  165. package/dist/api/compiler/reparser.js +60 -56
  166. package/dist/api/compiler/scanner.d.ts +19 -2
  167. package/dist/api/compiler/scanner.js +123 -108
  168. package/dist/api/compiler/shared-results.d.ts +463 -0
  169. package/dist/api/compiler/shared-results.js +2128 -0
  170. package/dist/api/compiler/sourcemap.js +2 -2
  171. package/dist/api/compiler/symbol-accessibility.js +87 -74
  172. package/dist/api/compiler/symbol.d.ts +22 -13
  173. package/dist/api/compiler/symbol.js +15 -1
  174. package/dist/api/compiler/syntax-kind.d.ts +198 -197
  175. package/dist/api/compiler/transformers/alias-references.js +247 -139
  176. package/dist/api/compiler/transformers/async-utilities.js +25 -25
  177. package/dist/api/compiler/transformers/async.d.ts +0 -1
  178. package/dist/api/compiler/transformers/async.js +64 -77
  179. package/dist/api/compiler/transformers/class-fields.d.ts +1 -0
  180. package/dist/api/compiler/transformers/class-fields.js +81 -78
  181. package/dist/api/compiler/transformers/commonjs-module.js +18 -15
  182. package/dist/api/compiler/transformers/const-enum-inliner.js +1 -1
  183. package/dist/api/compiler/transformers/declarations-diagnostics.js +247 -244
  184. package/dist/api/compiler/transformers/declarations-pseudo.js +100 -100
  185. package/dist/api/compiler/transformers/declarations-resolver.d.ts +0 -3
  186. package/dist/api/compiler/transformers/declarations-syntactic.d.ts +1 -2
  187. package/dist/api/compiler/transformers/declarations-syntactic.js +134 -156
  188. package/dist/api/compiler/transformers/declarations-tracker.js +18 -18
  189. package/dist/api/compiler/transformers/declarations.d.ts +4 -1
  190. package/dist/api/compiler/transformers/declarations.js +305 -238
  191. package/dist/api/compiler/transformers/decorator-metadata.d.ts +1 -1
  192. package/dist/api/compiler/transformers/decorator-metadata.js +53 -45
  193. package/dist/api/compiler/transformers/decorator-utilities.js +24 -24
  194. package/dist/api/compiler/transformers/destructuring.js +19 -18
  195. package/dist/api/compiler/transformers/emit-resolver.js +1 -1
  196. package/dist/api/compiler/transformers/es-decorators.js +55 -55
  197. package/dist/api/compiler/transformers/external-module-info.js +3 -3
  198. package/dist/api/compiler/transformers/for-await.js +25 -25
  199. package/dist/api/compiler/transformers/import-elision.js +14 -14
  200. package/dist/api/compiler/transformers/jsx.js +12 -12
  201. package/dist/api/compiler/transformers/legacy-decorators.js +17 -17
  202. package/dist/api/compiler/transformers/module.js +8 -8
  203. package/dist/api/compiler/transformers/named-evaluation.js +4 -4
  204. package/dist/api/compiler/transformers/object-rest-spread.js +20 -20
  205. package/dist/api/compiler/transformers/optional-chain.js +10 -10
  206. package/dist/api/compiler/transformers/reference-resolver.d.ts +12 -1
  207. package/dist/api/compiler/transformers/reference-resolver.js +131 -69
  208. package/dist/api/compiler/transformers/runtime-syntax.js +35 -31
  209. package/dist/api/compiler/transformers/subtree-facts.js +47 -47
  210. package/dist/api/compiler/transformers/syntax-facts.js +56 -58
  211. package/dist/api/compiler/transformers/type-eraser.js +73 -66
  212. package/dist/api/compiler/transformers/type-serialization.js +24 -24
  213. package/dist/api/compiler/transformers/using.js +12 -12
  214. package/dist/api/compiler/transformers/utilities.js +77 -77
  215. package/dist/api/compiler/transformers/visitor-base.js +172 -172
  216. package/dist/api/compiler/transformers/visitor-hooks.js +6 -2
  217. package/dist/api/compiler/tsconfig.d.ts +10 -2
  218. package/dist/api/compiler/tsconfig.js +136 -48
  219. package/dist/api/compiler/type-printer.js +40 -3
  220. package/dist/api/compiler/types.d.ts +2 -1
  221. package/dist/api/library/ast.generated.d.ts +42 -39
  222. package/dist/api/library/ast.generated.js +1 -1
  223. package/dist/api/library/compiler-options.generated.d.ts +111 -100
  224. package/dist/api/library/compiler-options.generated.js +1 -1
  225. package/dist/api/library/disk.js +12 -1
  226. package/dist/api/library/enums.generated.d.ts +206 -206
  227. package/dist/api/library/enums.generated.js +206 -206
  228. package/dist/api/library/nodes.js +26 -26
  229. package/package.json +9 -9
  230. package/src/compiler/ast-utilities.ts +99 -7
  231. package/src/compiler/ast.ts +55 -26
  232. package/src/compiler/binder.ts +39 -4
  233. package/src/compiler/character-codes.ts +2 -2
  234. package/src/compiler/checker-calls.ts +76 -8
  235. package/src/compiler/checker-classes.ts +78 -24
  236. package/src/compiler/checker-contextual.ts +6 -1
  237. package/src/compiler/checker-declarations.ts +31 -4
  238. package/src/compiler/checker-declared-types.ts +8 -5
  239. package/src/compiler/checker-decorators.ts +1 -1
  240. package/src/compiler/checker-deprecation.ts +29 -8
  241. package/src/compiler/checker-destructuring.ts +10 -3
  242. package/src/compiler/checker-emit-helpers.ts +1 -0
  243. package/src/compiler/checker-emit-resolver.ts +16 -6
  244. package/src/compiler/checker-expressions.ts +79 -46
  245. package/src/compiler/checker-functions.ts +21 -6
  246. package/src/compiler/checker-generated-code.ts +2 -22
  247. package/src/compiler/checker-grammar.ts +133 -60
  248. package/src/compiler/checker-heritage.ts +22 -21
  249. package/src/compiler/checker-inference.ts +514 -87
  250. package/src/compiler/checker-iteration.ts +18 -31
  251. package/src/compiler/checker-javascript.ts +1 -1
  252. package/src/compiler/checker-jsdoc.ts +50 -27
  253. package/src/compiler/checker-jsx.ts +26 -4
  254. package/src/compiler/checker-members.ts +197 -55
  255. package/src/compiler/checker-modules.ts +332 -65
  256. package/src/compiler/checker-narrowing.ts +98 -19
  257. package/src/compiler/checker-object-literals.ts +3 -0
  258. package/src/compiler/checker-operators.ts +11 -4
  259. package/src/compiler/checker-property-access.ts +7 -2
  260. package/src/compiler/checker-services.ts +39 -12
  261. package/src/compiler/checker-signatures.ts +15 -1
  262. package/src/compiler/checker-source-file.ts +39 -13
  263. package/src/compiler/checker-statements.ts +3 -2
  264. package/src/compiler/checker-symbol-types.ts +29 -6
  265. package/src/compiler/checker-symbols.ts +158 -15
  266. package/src/compiler/checker-type-factory.ts +120 -21
  267. package/src/compiler/checker-type-nodes.ts +46 -3
  268. package/src/compiler/checker-type-operators.ts +83 -26
  269. package/src/compiler/checker-types.ts +147 -4
  270. package/src/compiler/checker-unused.ts +9 -14
  271. package/src/compiler/checker.ts +168 -41
  272. package/src/compiler/command-line.ts +28 -28
  273. package/src/compiler/compile-program.ts +51 -25
  274. package/src/compiler/decoder.ts +13 -4
  275. package/src/compiler/diagnostic-messages.ts +1973 -1892
  276. package/src/compiler/emitter.ts +57 -8
  277. package/src/compiler/encoder.ts +23 -8
  278. package/src/compiler/file-include.ts +9 -3
  279. package/src/compiler/file-loader.ts +139 -32
  280. package/src/compiler/help.ts +10 -14
  281. package/src/compiler/incremental.ts +86 -18
  282. package/src/compiler/init.ts +2 -7
  283. package/src/compiler/instantiation.ts +77 -22
  284. package/src/compiler/jsdoc.ts +3 -1
  285. package/src/compiler/link-tables.ts +82 -37
  286. package/src/compiler/locales/cs-CZ.ts +1 -1
  287. package/src/compiler/locales/de-DE.ts +1 -1
  288. package/src/compiler/locales/es-ES.ts +1 -1
  289. package/src/compiler/locales/fr-FR.ts +1 -1
  290. package/src/compiler/locales/it-IT.ts +1 -1
  291. package/src/compiler/locales/ja-JP.ts +1 -1
  292. package/src/compiler/locales/ko-KR.ts +1 -1
  293. package/src/compiler/locales/pl-PL.ts +1 -1
  294. package/src/compiler/locales/pt-BR.ts +1 -1
  295. package/src/compiler/locales/ru-RU.ts +1 -1
  296. package/src/compiler/locales/tr-TR.ts +1 -1
  297. package/src/compiler/locales/zh-CN.ts +1 -1
  298. package/src/compiler/locales/zh-TW.ts +1 -1
  299. package/src/compiler/module-resolution.ts +44 -8
  300. package/src/compiler/module-specifiers.ts +62 -20
  301. package/src/compiler/name-resolver.ts +9 -1
  302. package/src/compiler/node-builder-names.ts +236 -54
  303. package/src/compiler/node-builder-pseudo.ts +4 -7
  304. package/src/compiler/node-builder-reuse.ts +5 -4
  305. package/src/compiler/node-builder.ts +130 -31
  306. package/src/compiler/option-declarations.ts +33 -103
  307. package/src/compiler/options.ts +23 -62
  308. package/src/compiler/output-paths.ts +5 -18
  309. package/src/compiler/package-entrypoints.ts +345 -0
  310. package/src/compiler/package-json.ts +4 -4
  311. package/src/compiler/parallel-check.ts +197 -8
  312. package/src/compiler/parallel-emit.ts +1 -1
  313. package/src/compiler/parser.ts +156 -39
  314. package/src/compiler/path.ts +22 -2
  315. package/src/compiler/printer/emit-context.ts +16 -0
  316. package/src/compiler/printer/factory-base.ts +10 -3
  317. package/src/compiler/printer/factory.ts +4 -1
  318. package/src/compiler/printer/helpers.ts +10 -1
  319. package/src/compiler/printer/name-generator.ts +24 -2
  320. package/src/compiler/printer/printer.ts +35 -14
  321. package/src/compiler/printer/utilities.ts +8 -2
  322. package/src/compiler/program-checker.ts +53 -5
  323. package/src/compiler/program-utilities.ts +23 -10
  324. package/src/compiler/program.ts +13 -1
  325. package/src/compiler/pseudo-bigint.ts +17 -0
  326. package/src/compiler/regexp-checker.ts +63 -30
  327. package/src/compiler/relations.ts +233 -77
  328. package/src/compiler/reparser.ts +7 -2
  329. package/src/compiler/scanner.ts +109 -79
  330. package/src/compiler/shared-results.ts +2414 -0
  331. package/src/compiler/show-config.ts +18 -1
  332. package/src/compiler/sourcemap.ts +2 -2
  333. package/src/compiler/symbol-accessibility.ts +26 -3
  334. package/src/compiler/symbol.ts +31 -14
  335. package/src/compiler/syntax-kind.ts +188 -187
  336. package/src/compiler/thread-entry.ts +19 -2
  337. package/src/compiler/transformers/alias-references.ts +123 -4
  338. package/src/compiler/transformers/async.ts +2 -17
  339. package/src/compiler/transformers/class-fields.ts +13 -12
  340. package/src/compiler/transformers/commonjs-module.ts +11 -7
  341. package/src/compiler/transformers/declarations-diagnostics.ts +5 -3
  342. package/src/compiler/transformers/declarations-pseudo.ts +2 -4
  343. package/src/compiler/transformers/declarations-resolver.ts +0 -3
  344. package/src/compiler/transformers/declarations-syntactic.ts +1 -21
  345. package/src/compiler/transformers/declarations.ts +134 -48
  346. package/src/compiler/transformers/decorator-metadata.ts +9 -1
  347. package/src/compiler/transformers/destructuring.ts +4 -3
  348. package/src/compiler/transformers/external-module-info.ts +1 -1
  349. package/src/compiler/transformers/jsx.ts +2 -1
  350. package/src/compiler/transformers/reference-resolver.ts +83 -19
  351. package/src/compiler/transformers/runtime-syntax.ts +6 -1
  352. package/src/compiler/transformers/syntax-facts.ts +2 -7
  353. package/src/compiler/transformers/type-eraser.ts +10 -1
  354. package/src/compiler/transformers/type-serialization.ts +3 -2
  355. package/src/compiler/transformers/visitor-base.ts +2 -1
  356. package/src/compiler/transformers/visitor-hooks.ts +9 -4
  357. package/src/compiler/tsc-build.ts +3 -0
  358. package/src/compiler/tsc-cli.ts +2 -0
  359. package/src/compiler/tsc-compile.ts +7 -2
  360. package/src/compiler/tsc-watch.ts +74 -45
  361. package/src/compiler/tsconfig.ts +176 -19
  362. package/src/compiler/type-printer.ts +36 -2
  363. package/src/compiler/types.ts +2 -1
  364. package/src/library/ast.generated.ts +57 -41
  365. package/src/library/compiler-options.generated.ts +117 -103
  366. package/src/library/disk.ts +10 -1
  367. package/src/library/enums.generated.ts +196 -196
@@ -106,6 +106,11 @@ export declare function getIntersectionType(c: Checker, types: Type[]): Type;
106
106
  export declare function getIntersectionTypeEx(c: Checker, types: Type[], flags: IntersectionFlags, alias: TypeAlias | undefined): Type;
107
107
  export declare function isPrimitiveOrObjectOrEmptyType(c: Checker, t: Type): boolean;
108
108
  export declare function containsMissingType(c: Checker, t: Type): boolean;
109
+ /**
110
+ * Whether `union` contains `t`, `undefined` where `t` is the missing type and the other way around, or
111
+ * the primitive type of literal `t` (of a unique symbol only with `matchSymbol`).
112
+ */
113
+ export declare function unionContainsTypeOrPrimitive(c: Checker, union: UnionType, t: Type, matchSymbol: boolean): boolean;
109
114
  export declare function getCrossProductUnionSize(types: readonly Type[]): number;
110
115
  export declare function checkCrossProductUnion(c: Checker, types: readonly Type[]): boolean;
111
116
  export declare function getUnionOrIntersectionType(c: Checker, types: Type[], isUnion: boolean, reduction: UnionReduction): Type;
@@ -8,6 +8,7 @@ import { getAliasForTypeNode, getTypeArgumentsOfDeferredReference } from './chec
8
8
  import { popTypeResolution, pushTypeResolution } from './checker-symbols.js';
9
9
  import { isGenericIndexType } from './checker-type-operators.js';
10
10
  import { compareCodePoints } from './diagnostics.js';
11
+ import { utf8Length } from './character-codes.js';
11
12
  import { cachedTypeKey, EvolvingArrayType, IndexInfo, IndexType, IndexedAccessType, InstantiationExpressionType, InterfaceType, IntersectionType, MappedType, ObjectType, ReverseMappedType, SubstitutionType, TemplateLiteralType, TupleElementInfo, TupleType, TypeAlias, TypeReference, UnionType, ArrayTypeMapper, ArrayToSingleTypeMapper, MergedTypeMapper, SimpleTypeMapper, emptyIndexInfos, emptySignatures, emptySymbols, emptyTypes, ReferenceCache, } from './checker-types.js';
12
13
  import { getNamedMembers, getMembersOfSymbol } from './checker-symbols.js';
13
14
  import { getBaseConstraintOfType, getBaseConstraintOrType, getIndexTypeOfType, getPropertiesOfType, getTypeOfPropertyOfType, isArrayLikeType, resolveStructuredTypeMembers, hasResolvedProperties, memberResolutionFlags, membersHolder, } from './checker-members.js';
@@ -19,6 +20,7 @@ import { addOptionality } from './checker-symbol-types.js';
19
20
  import { getSourceFileOfNode } from './binder-utilities.js';
20
21
  import { isPartOfTypeNode } from './transformers/alias-references.js';
21
22
  import { declarationCount, getSymbolId } from './symbol.js';
23
+ import { comparePseudoBigInts } from './pseudo-bigint.js';
22
24
  // ---- Keys
23
25
  export function typeListKey(types) {
24
26
  let key = '';
@@ -402,6 +404,10 @@ export function compareNodes(c, n1, n2) {
402
404
  return 1;
403
405
  if (n2 === undefined)
404
406
  return -1;
407
+ // Siblings are in one file: most compared declarations are members of one declaration.
408
+ const parent = n1.parent;
409
+ if (parent !== undefined && parent === n2.parent)
410
+ return n1.pos - n2.pos;
405
411
  const s1 = sourceFileOf(n1);
406
412
  const s2 = sourceFileOf(n2);
407
413
  if (s1 !== s2)
@@ -470,12 +476,14 @@ function compareTypeNames(c, t1, t2) {
470
476
  const s1 = getTypeNameSymbol(t1);
471
477
  const s2 = getTypeNameSymbol(t2);
472
478
  if (s1 === s2)
473
- return t1.alias !== undefined ? compareTypeLists(c, t1.alias.typeArguments, t2.alias.typeArguments) : 0;
479
+ return compareTypeLists(c, t1.alias?.typeArguments, t2.alias?.typeArguments);
474
480
  if (s1 === undefined)
475
481
  return 1;
476
482
  if (s2 === undefined)
477
483
  return -1;
478
- return compareCodePoints(s1.name, s2.name);
484
+ const r = compareCodePoints(s1.name, s2.name);
485
+ // Distinct declarations with the same name stay together before alias arguments or structure decide.
486
+ return r !== 0 ? r : compareSymbols(c, s1, s2);
479
487
  }
480
488
  function compareTypeLists(c, s1, s2) {
481
489
  // Index the parameters directly: an alias such as `s1 ?? emptyTypes` would hold its own reference.
@@ -734,9 +742,21 @@ export function compareTypes(c, t1, t2) {
734
742
  // Only distinguished by ids.
735
743
  }
736
744
  else if ((flags & 1048576 /* TypeFlags.Object */) !== 0) {
737
- r = compareSymbols(c, t1.symbol, t2.symbol);
738
- if (r !== 0)
739
- return r;
745
+ if ((t1.objectFlags & t2.objectFlags & 16777216 /* ObjectFlags.InstantiationExpressionType */) !== 0) {
746
+ // Instantiation expression types are ordered by their source declaration, since one expression
747
+ // can produce a type for each union constituent, then by the expression, without symbol ids.
748
+ r = compareNodes(c, t1.symbol?.declaration, t2.symbol?.declaration);
749
+ if (r !== 0)
750
+ return r;
751
+ r = compareNodes(c, t1.node, t2.node);
752
+ if (r !== 0)
753
+ return r;
754
+ }
755
+ else {
756
+ r = compareSymbols(c, t1.symbol, t2.symbol);
757
+ if (r !== 0)
758
+ return r;
759
+ }
740
760
  if ((t1.objectFlags & 4 /* ObjectFlags.Reference */) !== 0 && (t2.objectFlags & 4 /* ObjectFlags.Reference */) !== 0) {
741
761
  const r1 = t1;
742
762
  const r2 = t2;
@@ -766,10 +786,34 @@ export function compareTypes(c, t1, t2) {
766
786
  else if ((t2.objectFlags & 4 /* ObjectFlags.Reference */) !== 0)
767
787
  return 1;
768
788
  else {
789
+ // Unnamed non-reference object types are ordered by kind and instantiation data.
769
790
  r = (t1.objectFlags & 50332991 /* ObjectFlags.ObjectTypeKindMask */) - (t2.objectFlags & 50332991 /* ObjectFlags.ObjectTypeKindMask */);
770
791
  if (r !== 0)
771
792
  return r;
772
- r = compareTypeMappers(c, t1.mapper, t2.mapper);
793
+ if ((t1.objectFlags & 1024 /* ObjectFlags.ReverseMapped */) !== 0) {
794
+ const r1 = t1;
795
+ const r2 = t2;
796
+ r = compareTypes(c, r1.source, r2.source);
797
+ if (r !== 0)
798
+ return r;
799
+ r = compareTypes(c, r1.mappedType, r2.mappedType);
800
+ if (r !== 0)
801
+ return r;
802
+ r = compareTypes(c, r1.constraintType, r2.constraintType);
803
+ if (r !== 0)
804
+ return r;
805
+ }
806
+ let m1 = t1.mapper;
807
+ let m2 = t2.mapper;
808
+ if ((t1.objectFlags & 32 /* ObjectFlags.Mapped */) !== 0) {
809
+ // instantiateAnonymousType prepends a mapping to a fresh type parameter; compare the
810
+ // instantiation itself rather than the identity of that parameter.
811
+ if (m1 instanceof CompositeTypeMapper)
812
+ m1 = m1.m2;
813
+ if (m2 instanceof CompositeTypeMapper)
814
+ m2 = m2.m2;
815
+ }
816
+ r = compareTypeMappers(c, m1, m2);
773
817
  if (r !== 0)
774
818
  return r;
775
819
  }
@@ -812,6 +856,11 @@ export function compareTypes(c, t1, t2) {
812
856
  if (r !== 0)
813
857
  return r;
814
858
  }
859
+ else if ((flags & 4096 /* TypeFlags.BigIntLiteral */) !== 0) {
860
+ r = comparePseudoBigInts(t1.stringValue, t2.stringValue);
861
+ if (r !== 0)
862
+ return r;
863
+ }
815
864
  else if ((flags & 8192 /* TypeFlags.BooleanLiteral */) !== 0) {
816
865
  const b1 = t1.stringValue === 'true';
817
866
  const b2 = t2.stringValue === 'true';
@@ -1099,7 +1148,26 @@ export function filterType(c, type, f) {
1099
1148
  return (type.flags & 262144 /* TypeFlags.Never */) !== 0 || f(type) ? type : c.neverType;
1100
1149
  }
1101
1150
  export function removeType(c, type, target) {
1102
- return filterType(c, type, (t) => t !== target);
1151
+ if ((type.flags & 134217728 /* TypeFlags.Union */) === 0)
1152
+ return type === target ? c.neverType : type;
1153
+ const union = type;
1154
+ const origin = union.origin;
1155
+ // An origin that lists the target keeps the rest of its constituents.
1156
+ if (origin !== undefined &&
1157
+ (origin.flags & 134217728 /* TypeFlags.Union */) !== 0 &&
1158
+ containsType(c, origin.types, target))
1159
+ return filterType(c, type, (t) => t !== target);
1160
+ const types = union.types;
1161
+ const index = types.length < linearTypeSearchLimit ? indexOfType(types, target, 0) : binarySearchTypes(c, types, target);
1162
+ if (index < 0)
1163
+ return type;
1164
+ if (types.length === 2)
1165
+ return types[1 - index];
1166
+ const filtered = [];
1167
+ for (let i = 0; i < types.length; i++)
1168
+ if (i !== index)
1169
+ filtered.push(types[i]);
1170
+ return getUnionTypeFromSortedList(c, filtered, union.objectFlags & (32768 /* ObjectFlags.PrimitiveUnion */ | 33554432 /* ObjectFlags.ContainsIntersections */), undefined, undefined);
1103
1171
  }
1104
1172
  export function countTypes(type) {
1105
1173
  if ((type.flags & 134217728 /* TypeFlags.Union */) !== 0)
@@ -1534,7 +1602,7 @@ function removeSubtypes(c, types, hasObjectTypes) {
1534
1602
  if (count === 100000) {
1535
1603
  const estimatedCount = Math.trunc(count / (length - i)) * length;
1536
1604
  if (estimatedCount > 1000000) {
1537
- c.error(c.currentNode, 738 /* Diagnostics.Expression_produces_a_union_type_that_is_too_complex_to_represent */);
1605
+ c.error(c.currentNode, 745 /* Diagnostics.Expression_produces_a_union_type_that_is_too_complex_to_represent */);
1538
1606
  return undefined;
1539
1607
  }
1540
1608
  }
@@ -1937,28 +2005,33 @@ function intersectUnionsOfPrimitiveTypes(c, types) {
1937
2005
  return true;
1938
2006
  }
1939
2007
  function eachUnionContains(c, unionTypes, t) {
1940
- for (const type of unionTypes) {
1941
- const u = type;
1942
- if (unionContainsType(c, u, t))
1943
- continue;
1944
- if (t === c.missingType)
1945
- return unionContainsType(c, u, c.undefinedType);
1946
- if (t === c.undefinedType)
1947
- return unionContainsType(c, u, c.missingType);
1948
- let primitive;
1949
- if ((t.flags & 1024 /* TypeFlags.StringLiteral */) !== 0)
1950
- primitive = c.stringType;
1951
- else if ((t.flags & (65536 /* TypeFlags.Enum */ | 2048 /* TypeFlags.NumberLiteral */)) !== 0)
1952
- primitive = c.numberType;
1953
- else if ((t.flags & 4096 /* TypeFlags.BigIntLiteral */) !== 0)
1954
- primitive = c.bigintType;
1955
- else if ((t.flags & 16384 /* TypeFlags.UniqueESSymbol */) !== 0)
1956
- primitive = c.esSymbolType;
1957
- if (primitive === undefined || !unionContainsType(c, u, primitive))
2008
+ for (const type of unionTypes)
2009
+ if (!unionContainsTypeOrPrimitive(c, type, t, true))
1958
2010
  return false;
1959
- }
1960
2011
  return true;
1961
2012
  }
2013
+ /**
2014
+ * Whether `union` contains `t`, `undefined` where `t` is the missing type and the other way around, or
2015
+ * the primitive type of literal `t` (of a unique symbol only with `matchSymbol`).
2016
+ */
2017
+ export function unionContainsTypeOrPrimitive(c, union, t, matchSymbol) {
2018
+ if (unionContainsType(c, union, t))
2019
+ return true;
2020
+ if (t === c.missingType)
2021
+ return unionContainsType(c, union, c.undefinedType);
2022
+ if (t === c.undefinedType)
2023
+ return unionContainsType(c, union, c.missingType);
2024
+ let primitive;
2025
+ if ((t.flags & 1024 /* TypeFlags.StringLiteral */) !== 0)
2026
+ primitive = c.stringType;
2027
+ else if ((t.flags & (65536 /* TypeFlags.Enum */ | 2048 /* TypeFlags.NumberLiteral */)) !== 0)
2028
+ primitive = c.numberType;
2029
+ else if ((t.flags & 4096 /* TypeFlags.BigIntLiteral */) !== 0)
2030
+ primitive = c.bigintType;
2031
+ else if ((t.flags & 16384 /* TypeFlags.UniqueESSymbol */) !== 0 && matchSymbol)
2032
+ primitive = c.esSymbolType;
2033
+ return primitive !== undefined && unionContainsType(c, union, primitive);
2034
+ }
1962
2035
  export function getCrossProductUnionSize(types) {
1963
2036
  let size = 1;
1964
2037
  for (const t of types) {
@@ -1972,7 +2045,7 @@ export function getCrossProductUnionSize(types) {
1972
2045
  export function checkCrossProductUnion(c, types) {
1973
2046
  const size = getCrossProductUnionSize(types);
1974
2047
  if (size >= 100000) {
1975
- c.error(c.currentNode, 738 /* Diagnostics.Expression_produces_a_union_type_that_is_too_complex_to_represent */);
2048
+ c.error(c.currentNode, 745 /* Diagnostics.Expression_produces_a_union_type_that_is_too_complex_to_represent */);
1976
2049
  return false;
1977
2050
  }
1978
2051
  return true;
@@ -2353,8 +2426,8 @@ class TupleNormalizer {
2353
2426
  const spreadTypes = getElementTypes(c, t);
2354
2427
  if (spreadTypes.length + this.types.length >= 10000) {
2355
2428
  c.error(c.currentNode, c.currentNode !== undefined && isPartOfTypeNode(c.currentNode)
2356
- ? 931 /* Diagnostics.Type_produces_a_tuple_type_that_is_too_large_to_represent */
2357
- : 932 /* Diagnostics.Expression_produces_a_tuple_type_that_is_too_large_to_represent */);
2429
+ ? 938 /* Diagnostics.Type_produces_a_tuple_type_that_is_too_large_to_represent */
2430
+ : 939 /* Diagnostics.Expression_produces_a_tuple_type_that_is_too_large_to_represent */);
2358
2431
  return false;
2359
2432
  }
2360
2433
  const spreadInfos = tupleTargetOf(t).elementInfos;
@@ -2438,9 +2511,9 @@ export function getTypeArguments(c, t) {
2438
2511
  }
2439
2512
  const errorNode = node ?? c.currentNode;
2440
2513
  if (target.symbol !== undefined)
2441
- c.error(errorNode, 1095 /* Diagnostics.Type_arguments_for_0_circularly_reference_themselves */, symbolToString(c, target.symbol));
2514
+ c.error(errorNode, 1102 /* Diagnostics.Type_arguments_for_0_circularly_reference_themselves */, symbolToString(c, target.symbol));
2442
2515
  else
2443
- c.error(errorNode, 1096 /* Diagnostics.Tuple_type_arguments_circularly_reference_themselves */);
2516
+ c.error(errorNode, 1103 /* Diagnostics.Tuple_type_arguments_circularly_reference_themselves */);
2444
2517
  }
2445
2518
  return resolved;
2446
2519
  }
@@ -2475,8 +2548,13 @@ export function getTemplateLiteralType(c, texts, types) {
2475
2548
  if (types.includes(c.wildcardType))
2476
2549
  return c.wildcardType;
2477
2550
  const builder = new TemplateBuilder(c, texts[0]);
2478
- if (!builder.addSpans(texts, types))
2551
+ if (!builder.addSpans(texts, types)) {
2552
+ if (builder.tooLarge) {
2553
+ c.error(c.currentNode, 744 /* Diagnostics.Type_instantiation_is_excessively_deep_and_possibly_infinite */);
2554
+ return c.errorType;
2555
+ }
2479
2556
  return c.stringType;
2557
+ }
2480
2558
  if (builder.newTypes.length === 0)
2481
2559
  return getStringLiteralType(c, builder.text);
2482
2560
  builder.newTexts.push(builder.text);
@@ -2497,36 +2575,61 @@ export function getTemplateLiteralType(c, texts, types) {
2497
2575
  }
2498
2576
  return type;
2499
2577
  }
2578
+ /**
2579
+ * Limits on the size of a template literal type that getTemplateLiteralType builds, in UTF-8 bytes of text
2580
+ * and in placeholders. Recursive instantiations such as `Recur<any, `${S}_${S}`>` double the text or the
2581
+ * placeholders on every step and exhaust memory long before the tail recursion limit of conditional types.
2582
+ */
2583
+ const maxTemplateLiteralTypeLength = 50_000_000;
2584
+ const maxTemplateLiteralTypeSpans = 100_000;
2500
2585
  class TemplateBuilder {
2501
2586
  c;
2502
2587
  text;
2503
2588
  newTypes = [];
2504
2589
  newTexts = [];
2590
+ /** UTF-8 bytes of `text`. */
2591
+ textBytes;
2592
+ /** UTF-8 bytes of the texts already moved into `newTexts`. */
2593
+ movedBytes = 0;
2594
+ /** Whether `addSpans` stopped because the result passed a size limit. */
2595
+ tooLarge = false;
2505
2596
  constructor(c, text) {
2506
2597
  this.c = c;
2507
2598
  this.text = text;
2599
+ this.textBytes = utf8Length(text);
2508
2600
  }
2509
2601
  addSpans(texts, types) {
2510
2602
  const c = this.c;
2511
2603
  for (let i = 0; i < types.length; i++) {
2512
2604
  const t = types[i];
2513
2605
  if ((t.flags & (15360 /* TypeFlags.Literal */ | 8 /* TypeFlags.Null */ | 4 /* TypeFlags.Undefined */)) !== 0) {
2514
- this.text += getTemplateStringForType(c, t) + texts[i + 1];
2606
+ const added = getTemplateStringForType(c, t) + texts[i + 1];
2607
+ this.text += added;
2608
+ this.textBytes += utf8Length(added);
2515
2609
  }
2516
2610
  else if ((t.flags & 4194304 /* TypeFlags.TemplateLiteral */) !== 0) {
2517
2611
  const template = t;
2518
2612
  this.text += template.texts[0];
2613
+ this.textBytes += utf8Length(template.texts[0]);
2519
2614
  if (!this.addSpans(template.texts, template.types))
2520
2615
  return false;
2521
2616
  this.text += texts[i + 1];
2617
+ this.textBytes += utf8Length(texts[i + 1]);
2522
2618
  }
2523
2619
  else if (isGenericIndexType(c, t) || isPatternLiteralPlaceholderType(c, t)) {
2524
2620
  this.newTypes.push(t);
2525
2621
  this.newTexts.push(this.text);
2622
+ this.movedBytes += this.textBytes;
2526
2623
  this.text = texts[i + 1];
2624
+ this.textBytes = utf8Length(this.text);
2527
2625
  }
2528
2626
  else
2529
2627
  return false;
2628
+ if (this.movedBytes + this.textBytes > maxTemplateLiteralTypeLength ||
2629
+ this.newTypes.length > maxTemplateLiteralTypeSpans) {
2630
+ this.tooLarge = true;
2631
+ return false;
2632
+ }
2530
2633
  }
2531
2634
  return true;
2532
2635
  }
@@ -6,6 +6,7 @@ export declare function getTypeFromTypeNode(c: Checker, node: Node): Type;
6
6
  export declare function getTypeFromThisTypeNode(c: Checker, node: Node): Type;
7
7
  export declare function getTypeFromIndexedAccessTypeNode(c: Checker, node: IndexedAccessTypeNode): Type;
8
8
  export declare function getESSymbolLikeTypeForNode(c: Checker, node: Node): Type;
9
+ export declare function isAssertionExpression(node: Node | undefined): boolean;
9
10
  export declare function getTypeFromTypeReference(c: Checker, node: Node): Type;
10
11
  export declare function getSymbolFromTypeReference(c: Checker, node: Node): Symbol;
11
12
  export declare function resolveTypeReferenceName(c: Checker, typeReference: Node, meaning: SymbolFlags, ignoreErrors: boolean): Symbol;