tsc-ts 0.0.4 → 0.0.6

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 (584) hide show
  1. package/README.md +34 -2
  2. package/dist/api/compiler/ast-utilities.d.ts +82 -0
  3. package/dist/api/compiler/ast-utilities.js +462 -0
  4. package/dist/api/compiler/ast.d.ts +2351 -0
  5. package/dist/api/compiler/ast.js +11212 -0
  6. package/dist/api/compiler/astnav.d.ts +37 -0
  7. package/dist/api/compiler/astnav.js +767 -0
  8. package/dist/api/compiler/binder-utilities.d.ts +182 -0
  9. package/dist/api/compiler/binder-utilities.js +1241 -0
  10. package/dist/api/compiler/binder.d.ts +33 -0
  11. package/dist/api/compiler/binder.js +2359 -0
  12. package/dist/api/compiler/character-codes.d.ts +161 -0
  13. package/dist/api/compiler/character-codes.js +160 -0
  14. package/dist/api/compiler/checker-calls.d.ts +46 -0
  15. package/dist/api/compiler/checker-calls.js +1641 -0
  16. package/dist/api/compiler/checker-classes.d.ts +30 -0
  17. package/dist/api/compiler/checker-classes.js +582 -0
  18. package/dist/api/compiler/checker-contextual.d.ts +77 -0
  19. package/dist/api/compiler/checker-contextual.js +1136 -0
  20. package/dist/api/compiler/checker-declaration-order.d.ts +12 -0
  21. package/dist/api/compiler/checker-declaration-order.js +357 -0
  22. package/dist/api/compiler/checker-declarations.d.ts +33 -0
  23. package/dist/api/compiler/checker-declarations.js +888 -0
  24. package/dist/api/compiler/checker-declared-types.d.ts +48 -0
  25. package/dist/api/compiler/checker-declared-types.js +788 -0
  26. package/dist/api/compiler/checker-decorators.d.ts +26 -0
  27. package/dist/api/compiler/checker-decorators.js +562 -0
  28. package/dist/api/compiler/checker-deprecation.d.ts +33 -0
  29. package/dist/api/compiler/checker-deprecation.js +314 -0
  30. package/dist/api/compiler/checker-destructuring.d.ts +34 -0
  31. package/dist/api/compiler/checker-destructuring.js +584 -0
  32. package/dist/api/compiler/checker-elaboration.d.ts +15 -0
  33. package/dist/api/compiler/checker-elaboration.js +291 -0
  34. package/dist/api/compiler/checker-emit-helpers.d.ts +58 -0
  35. package/dist/api/compiler/checker-emit-helpers.js +154 -0
  36. package/dist/api/compiler/checker-emit-resolver.d.ts +75 -0
  37. package/dist/api/compiler/checker-emit-resolver.js +580 -0
  38. package/dist/api/compiler/checker-evaluator.d.ts +27 -0
  39. package/dist/api/compiler/checker-evaluator.js +188 -0
  40. package/dist/api/compiler/checker-expressions.d.ts +67 -0
  41. package/dist/api/compiler/checker-expressions.js +1351 -0
  42. package/dist/api/compiler/checker-features.d.ts +6 -0
  43. package/dist/api/compiler/checker-features.js +354 -0
  44. package/dist/api/compiler/checker-flow.d.ts +86 -0
  45. package/dist/api/compiler/checker-flow.js +169 -0
  46. package/dist/api/compiler/checker-functions.d.ts +43 -0
  47. package/dist/api/compiler/checker-functions.js +1002 -0
  48. package/dist/api/compiler/checker-generated-code.d.ts +25 -0
  49. package/dist/api/compiler/checker-generated-code.js +168 -0
  50. package/dist/api/compiler/checker-globals.d.ts +14 -0
  51. package/dist/api/compiler/checker-globals.js +37 -0
  52. package/dist/api/compiler/checker-grammar.d.ts +35 -0
  53. package/dist/api/compiler/checker-grammar.js +2587 -0
  54. package/dist/api/compiler/checker-heritage.d.ts +28 -0
  55. package/dist/api/compiler/checker-heritage.js +901 -0
  56. package/dist/api/compiler/checker-inference.d.ts +179 -0
  57. package/dist/api/compiler/checker-inference.js +2105 -0
  58. package/dist/api/compiler/checker-iteration.d.ts +115 -0
  59. package/dist/api/compiler/checker-iteration.js +857 -0
  60. package/dist/api/compiler/checker-javascript.d.ts +42 -0
  61. package/dist/api/compiler/checker-javascript.js +442 -0
  62. package/dist/api/compiler/checker-jsdoc.d.ts +30 -0
  63. package/dist/api/compiler/checker-jsdoc.js +320 -0
  64. package/dist/api/compiler/checker-jsx.d.ts +94 -0
  65. package/dist/api/compiler/checker-jsx.js +1433 -0
  66. package/dist/api/compiler/checker-literals.d.ts +6 -0
  67. package/dist/api/compiler/checker-literals.js +43 -0
  68. package/dist/api/compiler/checker-members.d.ts +200 -0
  69. package/dist/api/compiler/checker-members.js +2148 -0
  70. package/dist/api/compiler/checker-modules.d.ts +85 -0
  71. package/dist/api/compiler/checker-modules.js +2141 -0
  72. package/dist/api/compiler/checker-narrowing.d.ts +120 -0
  73. package/dist/api/compiler/checker-narrowing.js +2797 -0
  74. package/dist/api/compiler/checker-object-literals.d.ts +14 -0
  75. package/dist/api/compiler/checker-object-literals.js +483 -0
  76. package/dist/api/compiler/checker-operators.d.ts +33 -0
  77. package/dist/api/compiler/checker-operators.js +1040 -0
  78. package/dist/api/compiler/checker-overloads.d.ts +7 -0
  79. package/dist/api/compiler/checker-overloads.js +271 -0
  80. package/dist/api/compiler/checker-property-access.d.ts +34 -0
  81. package/dist/api/compiler/checker-property-access.js +672 -0
  82. package/dist/api/compiler/checker-services.d.ts +49 -0
  83. package/dist/api/compiler/checker-services.js +995 -0
  84. package/dist/api/compiler/checker-signatures.d.ts +55 -0
  85. package/dist/api/compiler/checker-signatures.js +789 -0
  86. package/dist/api/compiler/checker-source-file.d.ts +27 -0
  87. package/dist/api/compiler/checker-source-file.js +619 -0
  88. package/dist/api/compiler/checker-statements.d.ts +18 -0
  89. package/dist/api/compiler/checker-statements.js +226 -0
  90. package/dist/api/compiler/checker-super.d.ts +13 -0
  91. package/dist/api/compiler/checker-super.js +241 -0
  92. package/dist/api/compiler/checker-symbol-types.d.ts +51 -0
  93. package/dist/api/compiler/checker-symbol-types.js +955 -0
  94. package/dist/api/compiler/checker-symbols.d.ts +181 -0
  95. package/dist/api/compiler/checker-symbols.js +1784 -0
  96. package/dist/api/compiler/checker-type-factory.d.ts +142 -0
  97. package/dist/api/compiler/checker-type-factory.js +2542 -0
  98. package/dist/api/compiler/checker-type-nodes.d.ts +26 -0
  99. package/dist/api/compiler/checker-type-nodes.js +828 -0
  100. package/dist/api/compiler/checker-type-operators.d.ts +109 -0
  101. package/dist/api/compiler/checker-type-operators.js +1842 -0
  102. package/dist/api/compiler/checker-types.d.ts +1093 -0
  103. package/dist/api/compiler/checker-types.js +1874 -0
  104. package/dist/api/compiler/checker-unused.d.ts +19 -0
  105. package/dist/api/compiler/checker-unused.js +524 -0
  106. package/dist/api/compiler/checker-utilities.d.ts +33 -0
  107. package/dist/api/compiler/checker-utilities.js +141 -0
  108. package/dist/api/compiler/checker.d.ts +512 -0
  109. package/dist/api/compiler/checker.js +932 -0
  110. package/dist/api/compiler/command-line.d.ts +32 -0
  111. package/dist/api/compiler/command-line.js +383 -0
  112. package/dist/api/compiler/compile-program.d.ts +118 -0
  113. package/dist/api/compiler/compile-program.js +384 -0
  114. package/dist/api/compiler/diagnostic-locales.d.ts +22 -0
  115. package/dist/api/compiler/diagnostic-locales.js +64 -0
  116. package/dist/api/compiler/diagnostic-messages.d.ts +2166 -0
  117. package/dist/api/compiler/diagnostic-messages.js +184 -0
  118. package/dist/api/compiler/diagnostics.d.ts +161 -0
  119. package/dist/api/compiler/diagnostics.js +784 -0
  120. package/dist/api/compiler/emitter.d.ts +71 -0
  121. package/dist/api/compiler/emitter.js +327 -0
  122. package/dist/api/compiler/file-include.d.ts +144 -0
  123. package/dist/api/compiler/file-include.js +599 -0
  124. package/dist/api/compiler/file-loader.d.ts +290 -0
  125. package/dist/api/compiler/file-loader.js +1323 -0
  126. package/dist/api/compiler/file-system.d.ts +51 -0
  127. package/dist/api/compiler/file-system.js +132 -0
  128. package/dist/api/compiler/flow.d.ts +60 -0
  129. package/dist/api/compiler/flow.js +45 -0
  130. package/dist/api/compiler/instantiation.d.ts +74 -0
  131. package/dist/api/compiler/instantiation.js +835 -0
  132. package/dist/api/compiler/jsdoc.d.ts +75 -0
  133. package/dist/api/compiler/jsdoc.js +1229 -0
  134. package/dist/api/compiler/link-tables.d.ts +105 -0
  135. package/dist/api/compiler/link-tables.js +319 -0
  136. package/dist/api/compiler/locale-data.d.ts +24 -0
  137. package/dist/api/compiler/locale-data.js +183 -0
  138. package/dist/api/compiler/locale.d.ts +4 -0
  139. package/dist/api/compiler/locale.js +317 -0
  140. package/dist/api/compiler/locales/cs-CZ.d.ts +2 -0
  141. package/dist/api/compiler/locales/cs-CZ.js +3 -0
  142. package/dist/api/compiler/locales/de-DE.d.ts +2 -0
  143. package/dist/api/compiler/locales/de-DE.js +3 -0
  144. package/dist/api/compiler/locales/es-ES.d.ts +2 -0
  145. package/dist/api/compiler/locales/es-ES.js +3 -0
  146. package/dist/api/compiler/locales/fr-FR.d.ts +2 -0
  147. package/dist/api/compiler/locales/fr-FR.js +3 -0
  148. package/dist/api/compiler/locales/it-IT.d.ts +2 -0
  149. package/dist/api/compiler/locales/it-IT.js +3 -0
  150. package/dist/api/compiler/locales/ja-JP.d.ts +2 -0
  151. package/dist/api/compiler/locales/ja-JP.js +3 -0
  152. package/dist/api/compiler/locales/ko-KR.d.ts +2 -0
  153. package/dist/api/compiler/locales/ko-KR.js +3 -0
  154. package/dist/api/compiler/locales/pl-PL.d.ts +2 -0
  155. package/dist/api/compiler/locales/pl-PL.js +3 -0
  156. package/dist/api/compiler/locales/pt-BR.d.ts +2 -0
  157. package/dist/api/compiler/locales/pt-BR.js +3 -0
  158. package/dist/api/compiler/locales/ru-RU.d.ts +2 -0
  159. package/dist/api/compiler/locales/ru-RU.js +3 -0
  160. package/dist/api/compiler/locales/tr-TR.d.ts +2 -0
  161. package/dist/api/compiler/locales/tr-TR.js +3 -0
  162. package/dist/api/compiler/locales/zh-CN.d.ts +2 -0
  163. package/dist/api/compiler/locales/zh-CN.js +3 -0
  164. package/dist/api/compiler/locales/zh-TW.d.ts +2 -0
  165. package/dist/api/compiler/locales/zh-TW.js +3 -0
  166. package/dist/api/compiler/module-resolution-types.d.ts +83 -0
  167. package/dist/api/compiler/module-resolution-types.js +176 -0
  168. package/dist/api/compiler/module-resolution.d.ts +71 -0
  169. package/dist/api/compiler/module-resolution.js +1598 -0
  170. package/dist/api/compiler/module-specifiers.d.ts +64 -0
  171. package/dist/api/compiler/module-specifiers.js +1101 -0
  172. package/dist/api/compiler/name-resolver.d.ts +43 -0
  173. package/dist/api/compiler/name-resolver.js +509 -0
  174. package/dist/api/compiler/node-builder-names.d.ts +32 -0
  175. package/dist/api/compiler/node-builder-names.js +854 -0
  176. package/dist/api/compiler/node-builder-pseudo.d.ts +36 -0
  177. package/dist/api/compiler/node-builder-pseudo.js +745 -0
  178. package/dist/api/compiler/node-builder-reuse.d.ts +4 -0
  179. package/dist/api/compiler/node-builder-reuse.js +647 -0
  180. package/dist/api/compiler/node-builder.d.ts +270 -0
  181. package/dist/api/compiler/node-builder.js +2645 -0
  182. package/dist/api/compiler/option-declarations.d.ts +90 -0
  183. package/dist/api/compiler/option-declarations.js +1460 -0
  184. package/dist/api/compiler/options.d.ts +289 -0
  185. package/dist/api/compiler/options.js +1197 -0
  186. package/dist/api/compiler/output-paths.d.ts +42 -0
  187. package/dist/api/compiler/output-paths.js +195 -0
  188. package/dist/api/compiler/package-json.d.ts +175 -0
  189. package/dist/api/compiler/package-json.js +1015 -0
  190. package/dist/api/compiler/parallel-parse.d.ts +221 -0
  191. package/dist/api/compiler/parallel-parse.js +541 -0
  192. package/dist/api/compiler/parser.d.ts +604 -0
  193. package/dist/api/compiler/parser.js +6426 -0
  194. package/dist/api/compiler/path.d.ts +91 -0
  195. package/dist/api/compiler/path.js +705 -0
  196. package/dist/api/compiler/printer/async-helpers.d.ts +22 -0
  197. package/dist/api/compiler/printer/async-helpers.js +91 -0
  198. package/dist/api/compiler/printer/auto-generate.d.ts +13 -0
  199. package/dist/api/compiler/printer/auto-generate.js +20 -0
  200. package/dist/api/compiler/printer/decorator-helpers.d.ts +24 -0
  201. package/dist/api/compiler/printer/decorator-helpers.js +118 -0
  202. package/dist/api/compiler/printer/emit-context.d.ts +157 -0
  203. package/dist/api/compiler/printer/emit-context.js +582 -0
  204. package/dist/api/compiler/printer/emit-flags.d.ts +60 -0
  205. package/dist/api/compiler/printer/emit-flags.js +2 -0
  206. package/dist/api/compiler/printer/factory-base.d.ts +171 -0
  207. package/dist/api/compiler/printer/factory-base.js +1505 -0
  208. package/dist/api/compiler/printer/factory.d.ts +147 -0
  209. package/dist/api/compiler/printer/factory.js +542 -0
  210. package/dist/api/compiler/printer/helpers.d.ts +27 -0
  211. package/dist/api/compiler/printer/helpers.js +164 -0
  212. package/dist/api/compiler/printer/name-generator.d.ts +41 -0
  213. package/dist/api/compiler/printer/name-generator.js +283 -0
  214. package/dist/api/compiler/printer/printer.d.ts +411 -0
  215. package/dist/api/compiler/printer/printer.js +4517 -0
  216. package/dist/api/compiler/printer/text-writer.d.ts +46 -0
  217. package/dist/api/compiler/printer/text-writer.js +172 -0
  218. package/dist/api/compiler/printer/utilities.d.ts +82 -0
  219. package/dist/api/compiler/printer/utilities.js +817 -0
  220. package/dist/api/compiler/program-checker.d.ts +156 -0
  221. package/dist/api/compiler/program-checker.js +529 -0
  222. package/dist/api/compiler/program-utilities.d.ts +52 -0
  223. package/dist/api/compiler/program-utilities.js +365 -0
  224. package/dist/api/compiler/program.d.ts +180 -0
  225. package/dist/api/compiler/program.js +1019 -0
  226. package/dist/api/compiler/pseudo-bigint.d.ts +5 -0
  227. package/dist/api/compiler/pseudo-bigint.js +61 -0
  228. package/dist/api/compiler/regexp-checker.d.ts +38 -0
  229. package/dist/api/compiler/regexp-checker.js +942 -0
  230. package/dist/api/compiler/relations.d.ts +263 -0
  231. package/dist/api/compiler/relations.js +4002 -0
  232. package/dist/api/compiler/reparser.d.ts +48 -0
  233. package/dist/api/compiler/reparser.js +1323 -0
  234. package/dist/api/compiler/scanner.d.ts +256 -0
  235. package/dist/api/compiler/scanner.js +2853 -0
  236. package/dist/api/compiler/side-state.d.ts +16 -0
  237. package/dist/api/compiler/side-state.js +89 -0
  238. package/dist/api/compiler/sourcemap.d.ts +55 -0
  239. package/dist/api/compiler/sourcemap.js +340 -0
  240. package/dist/api/compiler/spelling.d.ts +14 -0
  241. package/dist/api/compiler/spelling.js +128 -0
  242. package/dist/api/compiler/symbol-accessibility.d.ts +57 -0
  243. package/dist/api/compiler/symbol-accessibility.js +991 -0
  244. package/dist/api/compiler/symbol.d.ts +282 -0
  245. package/dist/api/compiler/symbol.js +339 -0
  246. package/dist/api/compiler/symlinks.d.ts +32 -0
  247. package/dist/api/compiler/symlinks.js +114 -0
  248. package/dist/api/compiler/syntax-kind.d.ts +389 -0
  249. package/dist/api/compiler/syntax-kind.js +2 -0
  250. package/dist/api/compiler/timeline.d.ts +9 -0
  251. package/dist/api/compiler/timeline.js +54 -0
  252. package/dist/api/compiler/transformers/alias-references.d.ts +39 -0
  253. package/dist/api/compiler/transformers/alias-references.js +677 -0
  254. package/dist/api/compiler/transformers/async-utilities.d.ts +51 -0
  255. package/dist/api/compiler/transformers/async-utilities.js +260 -0
  256. package/dist/api/compiler/transformers/async.d.ts +53 -0
  257. package/dist/api/compiler/transformers/async.js +645 -0
  258. package/dist/api/compiler/transformers/class-fields.d.ts +206 -0
  259. package/dist/api/compiler/transformers/class-fields.js +2418 -0
  260. package/dist/api/compiler/transformers/class-utilities.d.ts +46 -0
  261. package/dist/api/compiler/transformers/class-utilities.js +261 -0
  262. package/dist/api/compiler/transformers/commonjs-module.d.ts +103 -0
  263. package/dist/api/compiler/transformers/commonjs-module.js +1180 -0
  264. package/dist/api/compiler/transformers/const-enum-inliner.d.ts +11 -0
  265. package/dist/api/compiler/transformers/const-enum-inliner.js +36 -0
  266. package/dist/api/compiler/transformers/declarations-diagnostics.d.ts +52 -0
  267. package/dist/api/compiler/transformers/declarations-diagnostics.js +539 -0
  268. package/dist/api/compiler/transformers/declarations-pseudo.d.ts +160 -0
  269. package/dist/api/compiler/transformers/declarations-pseudo.js +799 -0
  270. package/dist/api/compiler/transformers/declarations-resolver.d.ts +152 -0
  271. package/dist/api/compiler/transformers/declarations-resolver.js +35 -0
  272. package/dist/api/compiler/transformers/declarations-syntactic.d.ts +119 -0
  273. package/dist/api/compiler/transformers/declarations-syntactic.js +1582 -0
  274. package/dist/api/compiler/transformers/declarations-tracker.d.ts +46 -0
  275. package/dist/api/compiler/transformers/declarations-tracker.js +198 -0
  276. package/dist/api/compiler/transformers/declarations.d.ts +175 -0
  277. package/dist/api/compiler/transformers/declarations.js +2381 -0
  278. package/dist/api/compiler/transformers/decorator-metadata.d.ts +54 -0
  279. package/dist/api/compiler/transformers/decorator-metadata.js +554 -0
  280. package/dist/api/compiler/transformers/decorator-utilities.d.ts +38 -0
  281. package/dist/api/compiler/transformers/decorator-utilities.js +238 -0
  282. package/dist/api/compiler/transformers/destructuring.d.ts +25 -0
  283. package/dist/api/compiler/transformers/destructuring.js +626 -0
  284. package/dist/api/compiler/transformers/downlevel.d.ts +6 -0
  285. package/dist/api/compiler/transformers/downlevel.js +45 -0
  286. package/dist/api/compiler/transformers/emit-resolver.d.ts +61 -0
  287. package/dist/api/compiler/transformers/emit-resolver.js +197 -0
  288. package/dist/api/compiler/transformers/es-decorators.d.ts +118 -0
  289. package/dist/api/compiler/transformers/es-decorators.js +1901 -0
  290. package/dist/api/compiler/transformers/exponentiation.d.ts +11 -0
  291. package/dist/api/compiler/transformers/exponentiation.js +76 -0
  292. package/dist/api/compiler/transformers/external-module-info.d.ts +35 -0
  293. package/dist/api/compiler/transformers/external-module-info.js +351 -0
  294. package/dist/api/compiler/transformers/for-await.d.ts +43 -0
  295. package/dist/api/compiler/transformers/for-await.js +469 -0
  296. package/dist/api/compiler/transformers/import-elision.d.ts +16 -0
  297. package/dist/api/compiler/transformers/import-elision.js +124 -0
  298. package/dist/api/compiler/transformers/jsx-entities.d.ts +1 -0
  299. package/dist/api/compiler/transformers/jsx-entities.js +256 -0
  300. package/dist/api/compiler/transformers/jsx.d.ts +71 -0
  301. package/dist/api/compiler/transformers/jsx.js +700 -0
  302. package/dist/api/compiler/transformers/legacy-decorators.d.ts +56 -0
  303. package/dist/api/compiler/transformers/legacy-decorators.js +564 -0
  304. package/dist/api/compiler/transformers/logical-assignment.d.ts +14 -0
  305. package/dist/api/compiler/transformers/logical-assignment.js +62 -0
  306. package/dist/api/compiler/transformers/module-utilities.d.ts +9 -0
  307. package/dist/api/compiler/transformers/module-utilities.js +36 -0
  308. package/dist/api/compiler/transformers/module.d.ts +49 -0
  309. package/dist/api/compiler/transformers/module.js +296 -0
  310. package/dist/api/compiler/transformers/named-evaluation.d.ts +26 -0
  311. package/dist/api/compiler/transformers/named-evaluation.js +266 -0
  312. package/dist/api/compiler/transformers/nullish-coalescing.d.ts +9 -0
  313. package/dist/api/compiler/transformers/nullish-coalescing.js +26 -0
  314. package/dist/api/compiler/transformers/object-rest-spread.d.ts +34 -0
  315. package/dist/api/compiler/transformers/object-rest-spread.js +411 -0
  316. package/dist/api/compiler/transformers/optional-catch.d.ts +9 -0
  317. package/dist/api/compiler/transformers/optional-catch.js +20 -0
  318. package/dist/api/compiler/transformers/optional-chain.d.ts +14 -0
  319. package/dist/api/compiler/transformers/optional-chain.js +188 -0
  320. package/dist/api/compiler/transformers/reference-resolver.d.ts +129 -0
  321. package/dist/api/compiler/transformers/reference-resolver.js +1157 -0
  322. package/dist/api/compiler/transformers/runtime-syntax.d.ts +71 -0
  323. package/dist/api/compiler/transformers/runtime-syntax.js +753 -0
  324. package/dist/api/compiler/transformers/subtree-facts.d.ts +10 -0
  325. package/dist/api/compiler/transformers/subtree-facts.js +205 -0
  326. package/dist/api/compiler/transformers/syntax-facts.d.ts +52 -0
  327. package/dist/api/compiler/transformers/syntax-facts.js +258 -0
  328. package/dist/api/compiler/transformers/tagged-template.d.ts +17 -0
  329. package/dist/api/compiler/transformers/tagged-template.js +148 -0
  330. package/dist/api/compiler/transformers/transformer.d.ts +17 -0
  331. package/dist/api/compiler/transformers/transformer.js +54 -0
  332. package/dist/api/compiler/transformers/type-eraser.d.ts +21 -0
  333. package/dist/api/compiler/transformers/type-eraser.js +346 -0
  334. package/dist/api/compiler/transformers/type-serialization.d.ts +20 -0
  335. package/dist/api/compiler/transformers/type-serialization.js +347 -0
  336. package/dist/api/compiler/transformers/using.d.ts +56 -0
  337. package/dist/api/compiler/transformers/using.js +453 -0
  338. package/dist/api/compiler/transformers/utilities.d.ts +50 -0
  339. package/dist/api/compiler/transformers/utilities.js +347 -0
  340. package/dist/api/compiler/transformers/visitor-base.d.ts +6 -0
  341. package/dist/api/compiler/transformers/visitor-base.js +817 -0
  342. package/dist/api/compiler/transformers/visitor-hooks.d.ts +29 -0
  343. package/dist/api/compiler/transformers/visitor-hooks.js +189 -0
  344. package/dist/api/compiler/tsconfig.d.ts +177 -0
  345. package/dist/api/compiler/tsconfig.js +1311 -0
  346. package/dist/api/compiler/type-printer.d.ts +15 -0
  347. package/dist/api/compiler/type-printer.js +74 -0
  348. package/dist/api/compiler/types.d.ts +87 -0
  349. package/dist/api/compiler/types.js +23 -0
  350. package/dist/api/compiler/unicode-identifiers.d.ts +2 -0
  351. package/dist/api/compiler/unicode-identifiers.js +209 -0
  352. package/dist/api/compiler/unicode-properties.d.ts +8 -0
  353. package/dist/api/compiler/unicode-properties.js +531 -0
  354. package/dist/api/compiler/vfs-match.d.ts +24 -0
  355. package/dist/api/compiler/vfs-match.js +587 -0
  356. package/dist/api/library/ast.d.ts +3 -2
  357. package/dist/api/library/ast.generated.d.ts +127 -139
  358. package/dist/api/library/checker.d.ts +51 -0
  359. package/dist/api/library/checker.js +318 -0
  360. package/dist/api/library/diagnostics.d.ts +13 -0
  361. package/dist/api/library/diagnostics.js +50 -0
  362. package/dist/api/library/disk.d.ts +13 -0
  363. package/dist/api/library/disk.js +66 -0
  364. package/dist/api/library/errors.d.ts +13 -0
  365. package/dist/api/library/errors.js +24 -0
  366. package/dist/api/library/host.d.ts +24 -0
  367. package/dist/api/library/host.js +52 -0
  368. package/dist/api/library/index.d.ts +5 -1
  369. package/dist/api/library/index.js +4 -0
  370. package/dist/api/library/nodes.d.ts +51 -0
  371. package/dist/api/library/nodes.js +196 -0
  372. package/dist/api/library/options.d.ts +144 -0
  373. package/dist/api/library/options.js +308 -0
  374. package/dist/api/library/parse.d.ts +19 -0
  375. package/dist/api/library/parse.js +41 -0
  376. package/dist/api/library/program.d.ts +21 -0
  377. package/dist/api/library/program.js +234 -0
  378. package/dist/api/library/types.d.ts +14 -1
  379. package/package.json +12 -8
  380. package/src/compiler/ast-utilities.ts +548 -0
  381. package/src/compiler/ast.ts +12870 -0
  382. package/src/compiler/astnav.ts +799 -0
  383. package/src/compiler/binder-utilities.ts +1392 -0
  384. package/src/compiler/binder.ts +2707 -0
  385. package/src/compiler/build-info.ts +1197 -0
  386. package/src/compiler/character-codes.ts +323 -0
  387. package/src/compiler/checker-calls.ts +2155 -0
  388. package/src/compiler/checker-classes.ts +706 -0
  389. package/src/compiler/checker-contextual.ts +1457 -0
  390. package/src/compiler/checker-declaration-order.ts +438 -0
  391. package/src/compiler/checker-declarations.ts +1201 -0
  392. package/src/compiler/checker-declared-types.ts +919 -0
  393. package/src/compiler/checker-decorators.ts +694 -0
  394. package/src/compiler/checker-deprecation.ts +355 -0
  395. package/src/compiler/checker-destructuring.ts +805 -0
  396. package/src/compiler/checker-elaboration.ts +477 -0
  397. package/src/compiler/checker-emit-helpers.ts +224 -0
  398. package/src/compiler/checker-emit-resolver.ts +769 -0
  399. package/src/compiler/checker-evaluator.ts +243 -0
  400. package/src/compiler/checker-expressions.ts +1831 -0
  401. package/src/compiler/checker-features.ts +361 -0
  402. package/src/compiler/checker-flow.ts +394 -0
  403. package/src/compiler/checker-functions.ts +1296 -0
  404. package/src/compiler/checker-generated-code.ts +227 -0
  405. package/src/compiler/checker-globals.ts +52 -0
  406. package/src/compiler/checker-grammar.ts +3596 -0
  407. package/src/compiler/checker-heritage.ts +1240 -0
  408. package/src/compiler/checker-inference.ts +2584 -0
  409. package/src/compiler/checker-iteration.ts +1206 -0
  410. package/src/compiler/checker-javascript.ts +502 -0
  411. package/src/compiler/checker-jsdoc.ts +360 -0
  412. package/src/compiler/checker-jsx.ts +1928 -0
  413. package/src/compiler/checker-literals.ts +61 -0
  414. package/src/compiler/checker-members.ts +2480 -0
  415. package/src/compiler/checker-modules.ts +2896 -0
  416. package/src/compiler/checker-narrowing.ts +3230 -0
  417. package/src/compiler/checker-object-literals.ts +591 -0
  418. package/src/compiler/checker-operators.ts +1422 -0
  419. package/src/compiler/checker-overloads.ts +328 -0
  420. package/src/compiler/checker-property-access.ts +906 -0
  421. package/src/compiler/checker-services.ts +1149 -0
  422. package/src/compiler/checker-signatures.ts +1032 -0
  423. package/src/compiler/checker-source-file.ts +732 -0
  424. package/src/compiler/checker-statements.ts +292 -0
  425. package/src/compiler/checker-super.ts +261 -0
  426. package/src/compiler/checker-symbol-types.ts +1187 -0
  427. package/src/compiler/checker-symbols.ts +2157 -0
  428. package/src/compiler/checker-type-factory.ts +2616 -0
  429. package/src/compiler/checker-type-nodes.ts +1033 -0
  430. package/src/compiler/checker-type-operators.ts +2510 -0
  431. package/src/compiler/checker-types.ts +2520 -0
  432. package/src/compiler/checker-unused.ts +642 -0
  433. package/src/compiler/checker-utilities.ts +161 -0
  434. package/src/compiler/checker.ts +1138 -0
  435. package/src/compiler/command-line.ts +436 -0
  436. package/src/compiler/compile-program.ts +439 -0
  437. package/src/compiler/decoder.ts +1209 -0
  438. package/src/compiler/diagnostic-locales.ts +86 -0
  439. package/src/compiler/diagnostic-messages.ts +2349 -0
  440. package/src/compiler/diagnostics.ts +858 -0
  441. package/src/compiler/emitter.ts +434 -0
  442. package/src/compiler/encoder.ts +1945 -0
  443. package/src/compiler/file-include.ts +741 -0
  444. package/src/compiler/file-loader.ts +1597 -0
  445. package/src/compiler/file-system.ts +143 -0
  446. package/src/compiler/flow.ts +89 -0
  447. package/src/compiler/help.ts +473 -0
  448. package/src/compiler/incremental.ts +2818 -0
  449. package/src/compiler/init.ts +141 -0
  450. package/src/compiler/instantiation.ts +938 -0
  451. package/src/compiler/jsdoc.ts +1386 -0
  452. package/src/compiler/link-tables.ts +343 -0
  453. package/src/compiler/locale-data.ts +203 -0
  454. package/src/compiler/locale.ts +307 -0
  455. package/src/compiler/locales/cs-CZ.ts +5 -0
  456. package/src/compiler/locales/de-DE.ts +5 -0
  457. package/src/compiler/locales/es-ES.ts +5 -0
  458. package/src/compiler/locales/fr-FR.ts +5 -0
  459. package/src/compiler/locales/it-IT.ts +5 -0
  460. package/src/compiler/locales/ja-JP.ts +5 -0
  461. package/src/compiler/locales/ko-KR.ts +5 -0
  462. package/src/compiler/locales/pl-PL.ts +5 -0
  463. package/src/compiler/locales/pt-BR.ts +5 -0
  464. package/src/compiler/locales/ru-RU.ts +5 -0
  465. package/src/compiler/locales/tr-TR.ts +5 -0
  466. package/src/compiler/locales/zh-CN.ts +5 -0
  467. package/src/compiler/locales/zh-TW.ts +5 -0
  468. package/src/compiler/module-resolution-types.ts +243 -0
  469. package/src/compiler/module-resolution.ts +2072 -0
  470. package/src/compiler/module-specifiers.ts +1491 -0
  471. package/src/compiler/name-resolver.ts +646 -0
  472. package/src/compiler/node-builder-names.ts +1071 -0
  473. package/src/compiler/node-builder-pseudo.ts +892 -0
  474. package/src/compiler/node-builder-reuse.ts +764 -0
  475. package/src/compiler/node-builder.ts +3433 -0
  476. package/src/compiler/option-declarations.ts +1560 -0
  477. package/src/compiler/options.ts +1576 -0
  478. package/src/compiler/output-paths.ts +334 -0
  479. package/src/compiler/package-json.ts +1083 -0
  480. package/src/compiler/parallel-check.ts +1954 -0
  481. package/src/compiler/parallel-parse.ts +595 -0
  482. package/src/compiler/parse-thread.ts +136 -0
  483. package/src/compiler/parser.ts +7766 -0
  484. package/src/compiler/path.ts +717 -0
  485. package/src/compiler/printer/async-helpers.ts +183 -0
  486. package/src/compiler/printer/auto-generate.ts +27 -0
  487. package/src/compiler/printer/decorator-helpers.ts +218 -0
  488. package/src/compiler/printer/emit-context.ts +684 -0
  489. package/src/compiler/printer/emit-flags.ts +64 -0
  490. package/src/compiler/printer/factory-base.ts +2577 -0
  491. package/src/compiler/printer/factory.ts +764 -0
  492. package/src/compiler/printer/helpers.ts +291 -0
  493. package/src/compiler/printer/name-generator.ts +372 -0
  494. package/src/compiler/printer/printer.ts +5072 -0
  495. package/src/compiler/printer/text-writer.ts +183 -0
  496. package/src/compiler/printer/utilities.ts +884 -0
  497. package/src/compiler/program-checker.ts +594 -0
  498. package/src/compiler/program-utilities.ts +435 -0
  499. package/src/compiler/program.ts +1426 -0
  500. package/src/compiler/pseudo-bigint.ts +62 -0
  501. package/src/compiler/regexp-checker.ts +1142 -0
  502. package/src/compiler/relations.ts +5149 -0
  503. package/src/compiler/reparser.ts +1566 -0
  504. package/src/compiler/scanner.ts +2951 -0
  505. package/src/compiler/show-config.ts +239 -0
  506. package/src/compiler/side-state.ts +125 -0
  507. package/src/compiler/sourcemap.ts +366 -0
  508. package/src/compiler/spelling.ts +122 -0
  509. package/src/compiler/symbol-accessibility.ts +1166 -0
  510. package/src/compiler/symbol.ts +557 -0
  511. package/src/compiler/symlinks.ts +137 -0
  512. package/src/compiler/syntax-kind.ts +391 -0
  513. package/src/compiler/thread-entry.ts +191 -0
  514. package/src/compiler/timeline.ts +53 -0
  515. package/src/compiler/transformers/alias-references.ts +757 -0
  516. package/src/compiler/transformers/async-utilities.ts +335 -0
  517. package/src/compiler/transformers/async.ts +838 -0
  518. package/src/compiler/transformers/class-fields.ts +2967 -0
  519. package/src/compiler/transformers/class-utilities.ts +324 -0
  520. package/src/compiler/transformers/commonjs-module.ts +1621 -0
  521. package/src/compiler/transformers/const-enum-inliner.ts +50 -0
  522. package/src/compiler/transformers/declarations-diagnostics.ts +833 -0
  523. package/src/compiler/transformers/declarations-pseudo.ts +969 -0
  524. package/src/compiler/transformers/declarations-resolver.ts +249 -0
  525. package/src/compiler/transformers/declarations-syntactic.ts +1867 -0
  526. package/src/compiler/transformers/declarations-tracker.ts +269 -0
  527. package/src/compiler/transformers/declarations.ts +3120 -0
  528. package/src/compiler/transformers/decorator-metadata.ts +697 -0
  529. package/src/compiler/transformers/decorator-utilities.ts +283 -0
  530. package/src/compiler/transformers/destructuring.ts +708 -0
  531. package/src/compiler/transformers/downlevel.ts +50 -0
  532. package/src/compiler/transformers/emit-resolver.ts +258 -0
  533. package/src/compiler/transformers/es-decorators.ts +2682 -0
  534. package/src/compiler/transformers/exponentiation.ts +80 -0
  535. package/src/compiler/transformers/external-module-info.ts +412 -0
  536. package/src/compiler/transformers/for-await.ts +687 -0
  537. package/src/compiler/transformers/import-elision.ts +152 -0
  538. package/src/compiler/transformers/jsx-entities.ts +256 -0
  539. package/src/compiler/transformers/jsx.ts +824 -0
  540. package/src/compiler/transformers/legacy-decorators.ts +726 -0
  541. package/src/compiler/transformers/logical-assignment.ts +75 -0
  542. package/src/compiler/transformers/module-utilities.ts +42 -0
  543. package/src/compiler/transformers/module.ts +474 -0
  544. package/src/compiler/transformers/named-evaluation.ts +389 -0
  545. package/src/compiler/transformers/nullish-coalescing.ts +35 -0
  546. package/src/compiler/transformers/object-rest-spread.ts +577 -0
  547. package/src/compiler/transformers/optional-catch.ts +29 -0
  548. package/src/compiler/transformers/optional-chain.ts +246 -0
  549. package/src/compiler/transformers/reference-resolver.ts +1213 -0
  550. package/src/compiler/transformers/runtime-syntax.ts +942 -0
  551. package/src/compiler/transformers/subtree-facts.ts +253 -0
  552. package/src/compiler/transformers/syntax-facts.ts +358 -0
  553. package/src/compiler/transformers/tagged-template.ts +167 -0
  554. package/src/compiler/transformers/transformer.ts +56 -0
  555. package/src/compiler/transformers/type-eraser.ts +520 -0
  556. package/src/compiler/transformers/type-serialization.ts +374 -0
  557. package/src/compiler/transformers/using.ts +613 -0
  558. package/src/compiler/transformers/utilities.ts +419 -0
  559. package/src/compiler/transformers/visitor-base.ts +1601 -0
  560. package/src/compiler/transformers/visitor-hooks.ts +252 -0
  561. package/src/compiler/tsc-build.ts +1422 -0
  562. package/src/compiler/tsc-cli.ts +669 -0
  563. package/src/compiler/tsc-compile.ts +446 -0
  564. package/src/compiler/tsc-watch.ts +922 -0
  565. package/src/compiler/tsconfig.ts +1574 -0
  566. package/src/compiler/type-printer.ts +110 -0
  567. package/src/compiler/types.ts +115 -0
  568. package/src/compiler/unicode-identifiers.ts +212 -0
  569. package/src/compiler/unicode-properties.ts +537 -0
  570. package/src/compiler/vfs-match.ts +597 -0
  571. package/src/compiler/xxh3.ts +650 -0
  572. package/src/library/ast.generated.ts +141 -167
  573. package/src/library/ast.ts +4 -1
  574. package/src/library/checker.ts +384 -0
  575. package/src/library/diagnostics.ts +72 -0
  576. package/src/library/disk.ts +73 -0
  577. package/src/library/errors.ts +26 -0
  578. package/src/library/host.ts +63 -0
  579. package/src/library/index.ts +21 -0
  580. package/src/library/nodes.ts +232 -0
  581. package/src/library/options.ts +449 -0
  582. package/src/library/parse.ts +63 -0
  583. package/src/library/program.ts +293 -0
  584. package/src/library/types.ts +14 -1
@@ -0,0 +1,557 @@
1
+ // Symbols: what the binder declares for each named entity, and the tables that hold them.
2
+ import type { ProgramLifetime } from '@scriptc/types';
3
+ import type { Node } from './ast.js';
4
+ import type { __String, Symbol as PublicSymbol } from '../library/types.js';
5
+
6
+ export const enum SymbolFlags {
7
+ None = 0,
8
+ /** A `var` or parameter. */
9
+ FunctionScopedVariable = 1 << 0,
10
+ /** A `let` or `const`. */
11
+ BlockScopedVariable = 1 << 1,
12
+ /** A property or enum member. */
13
+ Property = 1 << 2,
14
+ EnumMember = 1 << 3,
15
+ Function = 1 << 4,
16
+ Class = 1 << 5,
17
+ Interface = 1 << 6,
18
+ ConstEnum = 1 << 7,
19
+ RegularEnum = 1 << 8,
20
+ /** An instantiated namespace. */
21
+ ValueModule = 1 << 9,
22
+ /** A namespace with only types. */
23
+ NamespaceModule = 1 << 10,
24
+ /** A type literal or mapped type. */
25
+ TypeLiteral = 1 << 11,
26
+ ObjectLiteral = 1 << 12,
27
+ Method = 1 << 13,
28
+ Constructor = 1 << 14,
29
+ GetAccessor = 1 << 15,
30
+ SetAccessor = 1 << 16,
31
+ /** A call, construct or index signature. */
32
+ Signature = 1 << 17,
33
+ TypeParameter = 1 << 18,
34
+ TypeAlias = 1 << 19,
35
+ /** The local half of an exported value; see `Binder.declareModuleMember`. */
36
+ ExportValue = 1 << 20,
37
+ /** An alias for another symbol, e.g. an import. */
38
+ Alias = 1 << 21,
39
+ /** A class's `prototype` property. */
40
+ Prototype = 1 << 22,
41
+ /** `export *` declarations. */
42
+ ExportStar = 1 << 23,
43
+ Optional = 1 << 24,
44
+ /** Created by the checker. */
45
+ Transient = 1 << 25,
46
+ /** A JavaScript assignment that declares a property, e.g. `fn.prop = 1`. */
47
+ Assignment = 1 << 26,
48
+ /** CommonJS `module` or `module.exports`. */
49
+ ModuleExports = 1 << 27,
50
+ /** A namespace whose only values are const enums. */
51
+ ConstEnumOnlyModule = 1 << 28,
52
+ /** A JavaScript `this.x` property that a method of the same name replaces. */
53
+ ReplaceableByMethod = 1 << 29,
54
+ /** Marks a lookup in the global scope. */
55
+ GlobalLookup = 1 << 30,
56
+ All = (1 << 30) - 1,
57
+
58
+ Enum = RegularEnum | ConstEnum,
59
+ Variable = FunctionScopedVariable | BlockScopedVariable,
60
+ Value = Variable |
61
+ Property |
62
+ EnumMember |
63
+ ObjectLiteral |
64
+ Function |
65
+ Class |
66
+ Enum |
67
+ ValueModule |
68
+ Method |
69
+ GetAccessor |
70
+ SetAccessor,
71
+ Type = Class | Interface | Enum | EnumMember | TypeLiteral | TypeParameter | TypeAlias,
72
+ Namespace = ValueModule | NamespaceModule | Enum,
73
+ Module = ValueModule | NamespaceModule,
74
+ Accessor = GetAccessor | SetAccessor,
75
+
76
+ // What a declaration of each kind can't merge with.
77
+ FunctionScopedVariableExcludes = Value & ~FunctionScopedVariable,
78
+ BlockScopedVariableExcludes = Value,
79
+ ParameterExcludes = Value,
80
+ PropertyExcludes = Value & ~(Property | Accessor),
81
+ EnumMemberExcludes = Value | Type,
82
+ FunctionExcludes = Value & ~(Function | ValueModule | Class),
83
+ /** Class-interface merging is checked by the checker. */
84
+ ClassExcludes = (Value | Type) & ~(ValueModule | Interface | Function),
85
+ InterfaceExcludes = Type & ~(Interface | Class),
86
+ RegularEnumExcludes = (Value | Type) & ~(RegularEnum | ValueModule),
87
+ ConstEnumExcludes = (Value | Type) & ~ConstEnum,
88
+ ValueModuleExcludes = Value & ~(Function | Class | RegularEnum | ValueModule),
89
+ NamespaceModuleExcludes = None,
90
+ MethodExcludes = Value & ~Method,
91
+ GetAccessorExcludes = Value & ~(SetAccessor | Property),
92
+ SetAccessorExcludes = Value & ~(GetAccessor | Property),
93
+ AccessorExcludes = Value & ~Property,
94
+ TypeParameterExcludes = Type & ~TypeParameter,
95
+ TypeAliasExcludes = Type,
96
+ AliasExcludes = Alias,
97
+
98
+ ModuleMember = Variable | Function | Class | Interface | Enum | Module | TypeAlias | Alias,
99
+ ExportHasLocal = Function | Class | Enum | ValueModule,
100
+ BlockScoped = BlockScopedVariable | Class | Enum,
101
+ PropertyOrAccessor = Property | Accessor,
102
+ ClassMember = Method | Accessor | Property,
103
+ ExportSupportsDefaultModifier = Class | Function | Interface,
104
+ ExportDoesNotSupportDefaultModifier = ~ExportSupportsDefaultModifier,
105
+ /** What the language service classifies semantically. */
106
+ Classifiable = Class | Enum | TypeAlias | Interface | TypeParameter | Module | Alias,
107
+ LateBindingContainer = Class | Interface | TypeLiteral | ObjectLiteral | Function,
108
+ }
109
+
110
+ /** Flags of transient symbols created by the checker. */
111
+ export const enum CheckFlags {
112
+ None = 0,
113
+ Instantiated = 1 << 0,
114
+ /** A property of a union or intersection type. */
115
+ SyntheticProperty = 1 << 1,
116
+ SyntheticMethod = 1 << 2,
117
+ Readonly = 1 << 3,
118
+ /** In some but not all constituents. */
119
+ ReadPartial = 1 << 4,
120
+ /** In some constituents, and only an index signature in others. */
121
+ WritePartial = 1 << 5,
122
+ HasNonUniformType = 1 << 6,
123
+ HasLiteralType = 1 << 7,
124
+ ContainsPublic = 1 << 8,
125
+ ContainsProtected = 1 << 9,
126
+ ContainsPrivate = 1 << 10,
127
+ ContainsStatic = 1 << 11,
128
+ /** Late-bound from a computed property name. */
129
+ Late = 1 << 12,
130
+ ReverseMapped = 1 << 13,
131
+ OptionalParameter = 1 << 14,
132
+ RestParameter = 1 << 15,
133
+ /** The type is computed on demand. */
134
+ DeferredType = 1 << 16,
135
+ HasNeverType = 1 << 17,
136
+ Mapped = 1 << 18,
137
+ StripOptional = 1 << 19,
138
+ Unresolved = 1 << 20,
139
+ IsDiscriminantComputed = 1 << 21,
140
+ IsDiscriminant = 1 << 22,
141
+ /** Created from an index signature. */
142
+ IndexSymbol = 1 << 23,
143
+ Synthetic = SyntheticProperty | SyntheticMethod,
144
+ NonUniformAndLiteral = HasNonUniformType | HasLiteralType,
145
+ Partial = ReadPartial | WritePartial,
146
+ }
147
+
148
+ /** Fields of Symbol that few symbols set (about one in twenty), allocated on first write. */
149
+ export class SymbolRareFields implements ProgramLifetime {
150
+ members: SymbolTable | undefined = undefined;
151
+ exports: SymbolTable | undefined = undefined;
152
+ exportSymbol: Symbol | undefined = undefined;
153
+ /** All declarations of a symbol that has more than one (`getDeclarations`). */
154
+ declarations: Node[] | undefined = undefined;
155
+ /** The value declaration where it is not the first declaration (`Symbol.valueDeclaration`). */
156
+ valueDeclaration: Node | undefined = undefined;
157
+ }
158
+
159
+ /** In `Symbol.bits`, above the check flags: the value declaration is the first declaration. */
160
+ const valueDeclarationIsFirst = 1 << 30;
161
+
162
+ export class Symbol implements ProgramLifetime {
163
+ flags: SymbolFlags;
164
+ /** The check flags, and `valueDeclarationIsFirst`. */
165
+ private bits: number;
166
+ readonly name: string;
167
+ /**
168
+ * The first declaration. A symbol with more keeps all of them in its rare fields; read them with
169
+ * `declarationCount`, `declarationAt` and `getDeclarations`. Written only through `setFirst`,
170
+ * which keeps the value declaration.
171
+ */
172
+ declaration: Node | undefined;
173
+ parent: Symbol | undefined;
174
+ private rareFields: SymbolRareFields | undefined;
175
+ /** Assigned on first use by `getSymbolId`, or at creation while threads share the program; 0 until then. */
176
+ id: number;
177
+
178
+ constructor(flags: SymbolFlags, name: string) {
179
+ this.flags = flags;
180
+ this.bits = 0;
181
+ this.name = name;
182
+ this.declaration = undefined;
183
+ this.parent = undefined;
184
+ this.rareFields = undefined;
185
+ this.id = idsAtCreation ? takeSymbolId() : 0;
186
+ }
187
+
188
+ get checkFlags(): CheckFlags {
189
+ return (this.bits & ~valueDeclarationIsFirst) as CheckFlags;
190
+ }
191
+
192
+ set checkFlags(flags: CheckFlags) {
193
+ this.bits = (this.bits & valueDeclarationIsFirst) | flags;
194
+ }
195
+
196
+ /** Makes `node` the first declaration, keeping the value declaration. */
197
+ setFirst(node: Node | undefined): void {
198
+ if ((this.bits & valueDeclarationIsFirst) !== 0 && node !== this.declaration) {
199
+ // The value declaration stays what it was.
200
+ this.rareFieldsOrNew().valueDeclaration = this.declaration;
201
+ this.bits &= ~valueDeclarationIsFirst;
202
+ }
203
+ this.declaration = node;
204
+ }
205
+
206
+ /**
207
+ * The declaration of the symbol's value. Almost always the first declaration, which a bit of `bits`
208
+ * says; any other is kept in the rare fields.
209
+ */
210
+ get valueDeclaration(): Node | undefined {
211
+ if ((this.bits & valueDeclarationIsFirst) !== 0) return this.declaration;
212
+ const group = this.rareFields;
213
+ return group === undefined ? undefined : group.valueDeclaration;
214
+ }
215
+
216
+ set valueDeclaration(node: Node | undefined) {
217
+ const group = this.rareFields;
218
+ if (node !== undefined && node === this.declaration) {
219
+ this.bits |= valueDeclarationIsFirst;
220
+ if (group !== undefined) group.valueDeclaration = undefined;
221
+ return;
222
+ }
223
+ this.bits &= ~valueDeclarationIsFirst;
224
+ if (node !== undefined || group !== undefined) this.rareFieldsOrNew().valueDeclaration = node;
225
+ }
226
+
227
+ private rareFieldsOrNew(): SymbolRareFields {
228
+ let group = this.rareFields;
229
+ if (group === undefined) {
230
+ group = new SymbolRareFields();
231
+ this.rareFields = group;
232
+ }
233
+ return group;
234
+ }
235
+
236
+ /**
237
+ * The declarations, for tsc-ts/api's `Symbol.declarations`. The compiler reads `declaration`,
238
+ * `declarationCount` and `declarationAt`: for a single declaration this builds a list on each read.
239
+ */
240
+ get declarations(): readonly Node[] {
241
+ return getDeclarations(this);
242
+ }
243
+
244
+ /** All declarations where there are more than one, else undefined. */
245
+ get moreDeclarations(): Node[] | undefined {
246
+ const group = this.rareFields;
247
+ return group === undefined ? undefined : group.declarations;
248
+ }
249
+
250
+ set moreDeclarations(value: Node[] | undefined) {
251
+ if (value === undefined && this.rareFields === undefined) return;
252
+ this.rareFieldsOrNew().declarations = value;
253
+ }
254
+
255
+ get members(): SymbolTable | undefined {
256
+ const group = this.rareFields;
257
+ return group === undefined ? undefined : group.members;
258
+ }
259
+
260
+ set members(value: SymbolTable | undefined) {
261
+ if (value === undefined && this.rareFields === undefined) return;
262
+ this.rareFieldsOrNew().members = value;
263
+ }
264
+
265
+ get exports(): SymbolTable | undefined {
266
+ const group = this.rareFields;
267
+ return group === undefined ? undefined : group.exports;
268
+ }
269
+
270
+ set exports(value: SymbolTable | undefined) {
271
+ if (value === undefined && this.rareFields === undefined) return;
272
+ this.rareFieldsOrNew().exports = value;
273
+ }
274
+
275
+ /** For the local symbol of an exported declaration, the exported symbol. */
276
+ get exportSymbol(): Symbol | undefined {
277
+ const group = this.rareFields;
278
+ return group === undefined ? undefined : group.exportSymbol;
279
+ }
280
+
281
+ set exportSymbol(value: Symbol | undefined) {
282
+ if (value === undefined && this.rareFields === undefined) return;
283
+ this.rareFieldsOrNew().exportSymbol = value;
284
+ }
285
+
286
+ // TypeScript 7's API (tsc-ts/api). The symbols it hands out have their ids assigned.
287
+
288
+ /** The name in its escaped form, the key of member and export tables (`escapeSymbolName`). */
289
+ get escapedName(): string {
290
+ return escapeSymbolName(this.name);
291
+ }
292
+
293
+ getParent(): Symbol | undefined {
294
+ const parent = this.parent;
295
+ if (parent !== undefined) getSymbolId(parent);
296
+ return parent;
297
+ }
298
+
299
+ /** The export symbol, or the symbol itself if it has none. */
300
+ getExportSymbol(): Symbol {
301
+ const exported = this.exportSymbol ?? this;
302
+ getSymbolId(exported);
303
+ return exported;
304
+ }
305
+
306
+ /** The members, by escaped name. */
307
+ getMembers(): Map<__String, PublicSymbol> {
308
+ return byEscapedName(this.members);
309
+ }
310
+
311
+ /** The exports, by escaped name. */
312
+ getExports(): Map<__String, PublicSymbol> {
313
+ return byEscapedName(this.exports);
314
+ }
315
+
316
+ /** Whether this is the symbol of an external module, named by its quoted path. */
317
+ isExternalModule(): boolean {
318
+ return (this.flags & SymbolFlags.Module) !== 0 && this.name.charCodeAt(0) === 0x22;
319
+ }
320
+
321
+ /** The flags of this symbol and its export symbol. */
322
+ combinedLocalAndExportSymbolFlags(): SymbolFlags {
323
+ const exportSymbol = this.exportSymbol;
324
+ return exportSymbol === undefined ? this.flags : this.flags | exportSymbol.flags;
325
+ }
326
+ }
327
+
328
+ export type SymbolTable = Map<string, Symbol>;
329
+
330
+ let nextSymbolId = 0;
331
+ // A program shared between threads (parallel-check.ts) is never written, so its symbols get their ids
332
+ // when they are created rather than on first use.
333
+ let idsAtCreation = false;
334
+ // While several threads bind one program (parallel-parse.ts), each takes symbol ids in chunks from a
335
+ // shared counter; ids up to `symbolIdLimit` belong to this thread.
336
+ let symbolIdLimit = Number.POSITIVE_INFINITY;
337
+ let symbolIdCounter: Int32Array | undefined = undefined;
338
+ const symbolIdChunk = 4096;
339
+
340
+ /** Symbols get their ids when they are created from now on (see `idsAtCreation`). */
341
+ export function assignSymbolIdsAtCreation(): void {
342
+ idsAtCreation = true;
343
+ }
344
+
345
+ /** Whether symbols get their ids when they are created (`assignSymbolIdsAtCreation`). */
346
+ export function symbolIdsAtCreation(): boolean {
347
+ return idsAtCreation;
348
+ }
349
+
350
+ function takeSymbolId(): number {
351
+ // `| 0`: ids stay far below 2^31, and native builds then store `id` as an int32.
352
+ return (nextSymbolId < symbolIdLimit ? ++nextSymbolId : takeSymbolIdChunk()) | 0;
353
+ }
354
+
355
+ function takeSymbolIdChunk(): number {
356
+ const base = Atomics.add(symbolIdCounter!, 0, symbolIdChunk);
357
+ nextSymbolId = base + 1;
358
+ symbolIdLimit = base + symbolIdChunk;
359
+ return nextSymbolId;
360
+ }
361
+
362
+ /**
363
+ * Takes symbol ids in chunks from `counter[0]`, shared by the threads that bind together; with
364
+ * `undefined`, goes back to a plain counter above every id handed out.
365
+ */
366
+ export function shareSymbolIds(counter: Int32Array | undefined): void {
367
+ if (counter !== undefined) {
368
+ symbolIdCounter = counter;
369
+ symbolIdLimit = nextSymbolId;
370
+ return;
371
+ }
372
+ if (symbolIdCounter !== undefined) {
373
+ const top = Atomics.load(symbolIdCounter, 0);
374
+ if (top > nextSymbolId) nextSymbolId = top;
375
+ }
376
+ symbolIdCounter = undefined;
377
+ symbolIdLimit = Number.POSITIVE_INFINITY;
378
+ }
379
+
380
+ /** The last symbol id handed out on this thread. */
381
+ export function lastSymbolIdValue(): number {
382
+ return nextSymbolId;
383
+ }
384
+
385
+ /** Continues symbol ids above `last` (a checker thread starts above the program it checks). */
386
+ export function reserveSymbolIds(last: number): void {
387
+ if (last > nextSymbolId) nextSymbolId = last;
388
+ }
389
+
390
+ /**
391
+ * The declarations of a symbol without any: shared, so never modified. Add declarations with
392
+ * `addDeclaration`, which gives the symbol its own array on the first one.
393
+ */
394
+ const noDeclarations: Node[] = [];
395
+
396
+ /** Appends `node` to the declarations of `symbol`. */
397
+ export function addDeclaration(symbol: Symbol, node: Node): void {
398
+ const first = symbol.declaration;
399
+ if (first === undefined) {
400
+ symbol.setFirst(node);
401
+ return;
402
+ }
403
+ const more = symbol.moreDeclarations;
404
+ if (more !== undefined) more.push(node);
405
+ else symbol.moreDeclarations = [first, node];
406
+ }
407
+
408
+ /** The number of declarations of `symbol`. */
409
+ export function declarationCount(symbol: Symbol): number {
410
+ if (symbol.declaration === undefined) return 0;
411
+ const more = symbol.moreDeclarations;
412
+ return more !== undefined ? more.length : 1;
413
+ }
414
+
415
+ /** The declaration of `symbol` at `index`, which is below `declarationCount(symbol)`. */
416
+ export function declarationAt(symbol: Symbol, index: number): Node {
417
+ return index === 0 ? symbol.declaration! : symbol.moreDeclarations![index]!;
418
+ }
419
+
420
+ /**
421
+ * The declarations of `symbol`, in order. A symbol with one declaration gets a new list each call;
422
+ * hot paths read `declaration`, `declarationCount` and `declarationAt` instead.
423
+ */
424
+ export function getDeclarations(symbol: Symbol): readonly Node[] {
425
+ const first = symbol.declaration;
426
+ if (first === undefined) return noDeclarations;
427
+ const more = symbol.moreDeclarations;
428
+ return more !== undefined ? more : [first];
429
+ }
430
+
431
+ /** Whether `node` is a declaration of `symbol`. */
432
+ export function hasDeclaration(symbol: Symbol, node: Node): boolean {
433
+ const first = symbol.declaration;
434
+ if (first === undefined) return false;
435
+ if (first === node) return true;
436
+ const more = symbol.moreDeclarations;
437
+ return more !== undefined && more.indexOf(node) >= 0;
438
+ }
439
+
440
+ /** Gives `target` the declarations of `source`; a list of several is shared, as the list was before. */
441
+ export function copyDeclarations(target: Symbol, source: Symbol): void {
442
+ target.setFirst(source.declaration);
443
+ target.moreDeclarations = source.moreDeclarations;
444
+ }
445
+
446
+ /** Replaces the declarations of `symbol` with `declarations`, which it keeps when they are more than one. */
447
+ export function setDeclarations(symbol: Symbol, declarations: readonly Node[]): void {
448
+ symbol.setFirst(declarations.length !== 0 ? declarations[0] : undefined);
449
+ symbol.moreDeclarations = declarations.length > 1 ? (declarations as Node[]) : undefined;
450
+ }
451
+
452
+ /**
453
+ * The symbols of `table` by escaped name, with their ids assigned, as tsc-ts's public API types them: the map's
454
+ * values are typed as the public Symbol, so a native build returns it as the map that interface declares.
455
+ */
456
+ function byEscapedName(table: SymbolTable | undefined): Map<__String, PublicSymbol> {
457
+ const result = new Map<__String, PublicSymbol>();
458
+ if (table !== undefined)
459
+ for (const symbol of table.values()) {
460
+ getSymbolId(symbol);
461
+ result.set(escapeSymbolName(symbol.name) as __String, symbol as unknown as PublicSymbol);
462
+ }
463
+ return result;
464
+ }
465
+
466
+ /** A program-wide id, assigned to each symbol when first requested. */
467
+ export function getSymbolId(symbol: Symbol): number {
468
+ let id = symbol.id;
469
+ if (id === 0) {
470
+ id = takeSymbolId();
471
+ symbol.id = id;
472
+ }
473
+ return id;
474
+ }
475
+
476
+ /** The exports table of `symbol`, created if missing. */
477
+ export function getExports(symbol: Symbol): SymbolTable {
478
+ let exports = symbol.exports;
479
+ if (exports === undefined) {
480
+ exports = new Map<string, Symbol>();
481
+ symbol.exports = exports;
482
+ }
483
+ return exports;
484
+ }
485
+
486
+ /** The members table of `symbol`, created if missing. */
487
+ export function getMembers(symbol: Symbol): SymbolTable {
488
+ let members = symbol.members;
489
+ if (members === undefined) {
490
+ members = new Map<string, Symbol>();
491
+ symbol.members = members;
492
+ }
493
+ return members;
494
+ }
495
+
496
+ /**
497
+ * Starts internal symbol names. A noncharacter, so it never starts an identifier and is
498
+ * vanishingly unlikely in a string-literal property name.
499
+ */
500
+ export const internalSymbolNamePrefix = '￾';
501
+
502
+ export const enum InternalSymbolName {
503
+ /** Call signatures. */
504
+ Call = '￾call',
505
+ /** Constructor implementations. */
506
+ Constructor = '￾constructor',
507
+ /** Construct signatures. */
508
+ New = '￾new',
509
+ /** Index signatures. */
510
+ Index = '￾index',
511
+ /** `export *` declarations. */
512
+ ExportStar = '￾export',
513
+ /** The global scope's self-reference. */
514
+ Global = '￾global',
515
+ /** A missing name. */
516
+ Missing = '￾missing',
517
+ /** An anonymous type literal. */
518
+ Type = '￾type',
519
+ /** An anonymous object literal. */
520
+ Object = '￾object',
521
+ /** An anonymous JSX attributes object literal. */
522
+ JSXAttributes = '￾jsxAttributes',
523
+ /** An unnamed class expression. */
524
+ Class = '￾class',
525
+ /** An unnamed function expression. */
526
+ Function = '￾function',
527
+ /** A computed property name that isn't a literal. */
528
+ Computed = '￾computed',
529
+ /** Late-bound JavaScript assignment declarations. */
530
+ AssignmentDeclaration = '￾assignment',
531
+ InstantiationExpression = '￾instantiationExpression',
532
+ ImportAttributes = '￾importAttributes',
533
+ ExportEquals = 'export=',
534
+ Default = 'default',
535
+ This = 'this',
536
+ ModuleExports = 'module.exports',
537
+ }
538
+
539
+ /** `name` with a leading internal prefix replaced by `__`. */
540
+ export function escapeInternalSymbolName(name: string): string {
541
+ return name.startsWith(internalSymbolNamePrefix) ? '__' + name.substring(1) : name;
542
+ }
543
+
544
+ /** `name` with every internal prefix replaced by `__`. */
545
+ export function escapeAllInternalSymbolNames(name: string): string {
546
+ return name.indexOf(internalSymbolNamePrefix) < 0 ? name : name.replaceAll(internalSymbolNamePrefix, '__');
547
+ }
548
+
549
+ /**
550
+ * The escaped `__String` form of a symbol name: internal names get `__`, and names that
551
+ * already start with `__` get one more `_`.
552
+ */
553
+ export function escapeSymbolName(name: string): string {
554
+ if (name.startsWith(internalSymbolNamePrefix)) return '__' + name.substring(1);
555
+ if (name.startsWith('__')) return '_' + name;
556
+ return name;
557
+ }
@@ -0,0 +1,137 @@
1
+ // Symlinked directories a program found through module resolution, such as packages linked by
2
+ // pnpm or workspaces, so module specifiers can name a file by the path it was imported through.
3
+ import {
4
+ ensureTrailingDirectorySeparator,
5
+ getCanonicalFileName,
6
+ getNormalizedAbsolutePath,
7
+ getPathComponents,
8
+ getPathFromPathComponents,
9
+ toPath,
10
+ } from './path.js';
11
+
12
+ /** The real directory of a symlink, with a trailing `/`: as `realpath` spells it, and as a path. */
13
+ export class KnownDirectoryLink {
14
+ constructor(
15
+ readonly real: string,
16
+ readonly realPath: string,
17
+ ) {}
18
+ }
19
+
20
+ /** A directory symlink a resolution implies: as spelled, as a path (trailing `/`), and its real directory. */
21
+ class ImpliedDirectoryLink {
22
+ constructor(
23
+ readonly symlink: string,
24
+ readonly symlinkPath: string,
25
+ readonly real: KnownDirectoryLink,
26
+ ) {}
27
+ }
28
+
29
+ export class KnownSymlinks {
30
+ /** Real directories by symlink path; keys have a trailing `/`. */
31
+ private readonly directories = new Map<string, KnownDirectoryLink>();
32
+ /** Symlinks, as spelled, by real directory path; keys have a trailing `/`. */
33
+ private readonly directoriesByRealpath = new Map<string, Set<string>>();
34
+ /**
35
+ * The directory symlink each resolution implies (`null` for none), by original path and resolved
36
+ * file name: many files resolve the same module through the same symlink.
37
+ */
38
+ private readonly implied = new Map<string, Map<string, ImpliedDirectoryLink | null>>();
39
+
40
+ constructor(
41
+ readonly currentDirectory: string,
42
+ readonly useCaseSensitiveFileNames: boolean,
43
+ ) {}
44
+
45
+ hasDirectory(symlinkPath: string): boolean {
46
+ return this.directories.has(ensureTrailingDirectorySeparator(symlinkPath));
47
+ }
48
+
49
+ /** The symlinks to the real directory `realPath`, which has a trailing `/`. */
50
+ getSymlinksOfDirectory(realPath: string): ReadonlySet<string> | undefined {
51
+ return this.directoriesByRealpath.get(realPath);
52
+ }
53
+
54
+ setDirectory(symlink: string, symlinkPath: string, real: KnownDirectoryLink): void {
55
+ if (!this.directories.has(symlinkPath)) {
56
+ let symlinks = this.directoriesByRealpath.get(real.realPath);
57
+ if (symlinks === undefined) {
58
+ symlinks = new Set<string>();
59
+ this.directoriesByRealpath.set(real.realPath, symlinks);
60
+ }
61
+ symlinks.add(symlink);
62
+ }
63
+ this.directories.set(symlinkPath, real);
64
+ }
65
+
66
+ /** Records the directory symlink a resolution through `originalPath` to `resolvedFileName` implies. */
67
+ processResolution(originalPath: string, resolvedFileName: string): void {
68
+ if (originalPath === '' || resolvedFileName === '') return;
69
+ let byResolved = this.implied.get(originalPath);
70
+ if (byResolved === undefined) {
71
+ byResolved = new Map<string, ImpliedDirectoryLink | null>();
72
+ this.implied.set(originalPath, byResolved);
73
+ }
74
+ let link = byResolved.get(resolvedFileName);
75
+ if (link === undefined) {
76
+ link = this.impliedDirectoryLink(originalPath, resolvedFileName);
77
+ byResolved.set(resolvedFileName, link);
78
+ }
79
+ if (link !== null) this.setDirectory(link.symlink, link.symlinkPath, link.real);
80
+ }
81
+
82
+ private impliedDirectoryLink(originalPath: string, resolvedFileName: string): ImpliedDirectoryLink | null {
83
+ const common = this.guessDirectorySymlink(resolvedFileName, originalPath);
84
+ if (common === undefined) return null;
85
+ const symlinkPath = toPath(common.original, this.currentDirectory, this.useCaseSensitiveFileNames);
86
+ if (containsIgnoredPath(symlinkPath)) return null;
87
+ return new ImpliedDirectoryLink(
88
+ common.original,
89
+ ensureTrailingDirectorySeparator(symlinkPath),
90
+ new KnownDirectoryLink(
91
+ ensureTrailingDirectorySeparator(common.resolved),
92
+ ensureTrailingDirectorySeparator(
93
+ toPath(common.resolved, this.currentDirectory, this.useCaseSensitiveFileNames),
94
+ ),
95
+ ),
96
+ );
97
+ }
98
+
99
+ /** The longest directories of `resolved` and `original` whose remaining paths are equal. */
100
+ private guessDirectorySymlink(
101
+ resolved: string,
102
+ original: string,
103
+ ): { readonly resolved: string; readonly original: string } | undefined {
104
+ const a = getPathComponents(getNormalizedAbsolutePath(resolved, this.currentDirectory));
105
+ const b = getPathComponents(getNormalizedAbsolutePath(original, this.currentDirectory));
106
+ let aLength = a.length;
107
+ let bLength = b.length;
108
+ while (
109
+ aLength >= 2 &&
110
+ bLength >= 2 &&
111
+ !this.isNodeModulesOrScopedPackageDirectory(a[aLength - 2]!) &&
112
+ !this.isNodeModulesOrScopedPackageDirectory(b[bLength - 2]!) &&
113
+ getCanonicalFileName(a[aLength - 1]!, this.useCaseSensitiveFileNames) ===
114
+ getCanonicalFileName(b[bLength - 1]!, this.useCaseSensitiveFileNames)
115
+ ) {
116
+ aLength--;
117
+ bLength--;
118
+ }
119
+ if (aLength === a.length) return undefined;
120
+ return {
121
+ resolved: getPathFromPathComponents(a.slice(0, aLength)),
122
+ original: getPathFromPathComponents(b.slice(0, bLength)),
123
+ };
124
+ }
125
+
126
+ private isNodeModulesOrScopedPackageDirectory(name: string): boolean {
127
+ return (
128
+ name !== '' &&
129
+ (getCanonicalFileName(name, this.useCaseSensitiveFileNames) === 'node_modules' || name.startsWith('@'))
130
+ );
131
+ }
132
+ }
133
+
134
+ /** Paths inside `node_modules/.*` (such as pnpm's store), `.git` or editor lock files. */
135
+ export function containsIgnoredPath(path: string): boolean {
136
+ return path.includes('/node_modules/.') || path.includes('/.git') || path.includes('.#');
137
+ }