tsc-ts 0.0.9 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (373) hide show
  1. package/README.md +2 -2
  2. package/bin/tsc-ts.js +70 -1
  3. package/dist/api/compiler/ast-utilities.d.ts +19 -1
  4. package/dist/api/compiler/ast-utilities.js +180 -95
  5. package/dist/api/compiler/ast.d.ts +22 -15
  6. package/dist/api/compiler/ast.js +1026 -995
  7. package/dist/api/compiler/astnav.js +15 -15
  8. package/dist/api/compiler/binder-utilities.js +186 -186
  9. package/dist/api/compiler/binder.js +290 -263
  10. package/dist/api/compiler/character-codes.js +2 -2
  11. package/dist/api/compiler/checker-calls.js +178 -124
  12. package/dist/api/compiler/checker-classes.d.ts +14 -3
  13. package/dist/api/compiler/checker-classes.js +134 -90
  14. package/dist/api/compiler/checker-contextual.js +64 -61
  15. package/dist/api/compiler/checker-declaration-order.js +79 -79
  16. package/dist/api/compiler/checker-declarations.d.ts +1 -0
  17. package/dist/api/compiler/checker-declarations.js +160 -136
  18. package/dist/api/compiler/checker-declared-types.js +67 -65
  19. package/dist/api/compiler/checker-decorators.js +77 -77
  20. package/dist/api/compiler/checker-deprecation.d.ts +8 -3
  21. package/dist/api/compiler/checker-deprecation.js +76 -55
  22. package/dist/api/compiler/checker-destructuring.js +47 -45
  23. package/dist/api/compiler/checker-elaboration.js +24 -24
  24. package/dist/api/compiler/checker-emit-helpers.js +4 -4
  25. package/dist/api/compiler/checker-emit-resolver.d.ts +4 -2
  26. package/dist/api/compiler/checker-emit-resolver.js +25 -13
  27. package/dist/api/compiler/checker-evaluator.js +9 -9
  28. package/dist/api/compiler/checker-expressions.js +244 -211
  29. package/dist/api/compiler/checker-functions.js +113 -107
  30. package/dist/api/compiler/checker-generated-code.d.ts +0 -11
  31. package/dist/api/compiler/checker-generated-code.js +28 -52
  32. package/dist/api/compiler/checker-grammar.d.ts +1 -0
  33. package/dist/api/compiler/checker-grammar.js +472 -440
  34. package/dist/api/compiler/checker-heritage.js +91 -93
  35. package/dist/api/compiler/checker-inference.d.ts +77 -5
  36. package/dist/api/compiler/checker-inference.js +487 -107
  37. package/dist/api/compiler/checker-iteration.d.ts +0 -10
  38. package/dist/api/compiler/checker-iteration.js +35 -52
  39. package/dist/api/compiler/checker-javascript.js +14 -14
  40. package/dist/api/compiler/checker-jsdoc.d.ts +8 -10
  41. package/dist/api/compiler/checker-jsdoc.js +67 -58
  42. package/dist/api/compiler/checker-jsx.js +105 -88
  43. package/dist/api/compiler/checker-members.d.ts +9 -2
  44. package/dist/api/compiler/checker-members.js +212 -75
  45. package/dist/api/compiler/checker-modules.d.ts +15 -6
  46. package/dist/api/compiler/checker-modules.js +469 -309
  47. package/dist/api/compiler/checker-narrowing.js +273 -189
  48. package/dist/api/compiler/checker-object-literals.js +25 -22
  49. package/dist/api/compiler/checker-operators.js +126 -118
  50. package/dist/api/compiler/checker-overloads.js +27 -27
  51. package/dist/api/compiler/checker-property-access.js +59 -55
  52. package/dist/api/compiler/checker-services.d.ts +1 -0
  53. package/dist/api/compiler/checker-services.js +222 -210
  54. package/dist/api/compiler/checker-signatures.js +65 -49
  55. package/dist/api/compiler/checker-source-file.d.ts +5 -0
  56. package/dist/api/compiler/checker-source-file.js +154 -130
  57. package/dist/api/compiler/checker-statements.js +33 -32
  58. package/dist/api/compiler/checker-super.js +50 -50
  59. package/dist/api/compiler/checker-symbol-types.js +109 -93
  60. package/dist/api/compiler/checker-symbols.d.ts +13 -1
  61. package/dist/api/compiler/checker-symbols.js +264 -149
  62. package/dist/api/compiler/checker-type-factory.d.ts +5 -0
  63. package/dist/api/compiler/checker-type-factory.js +145 -36
  64. package/dist/api/compiler/checker-type-nodes.d.ts +1 -0
  65. package/dist/api/compiler/checker-type-nodes.js +179 -141
  66. package/dist/api/compiler/checker-type-operators.d.ts +2 -0
  67. package/dist/api/compiler/checker-type-operators.js +110 -63
  68. package/dist/api/compiler/checker-types.d.ts +80 -3
  69. package/dist/api/compiler/checker-types.js +121 -2
  70. package/dist/api/compiler/checker-unused.js +114 -118
  71. package/dist/api/compiler/checker-utilities.js +11 -11
  72. package/dist/api/compiler/checker.d.ts +104 -31
  73. package/dist/api/compiler/checker.js +181 -33
  74. package/dist/api/compiler/command-line.d.ts +1 -3
  75. package/dist/api/compiler/command-line.js +47 -44
  76. package/dist/api/compiler/compile-program.d.ts +42 -3
  77. package/dist/api/compiler/compile-program.js +139 -27
  78. package/dist/api/compiler/diagnostic-messages.d.ts +1849 -1774
  79. package/dist/api/compiler/diagnostic-messages.js +128 -122
  80. package/dist/api/compiler/diagnostics.d.ts +22 -0
  81. package/dist/api/compiler/diagnostics.js +93 -11
  82. package/dist/api/compiler/emitter.d.ts +7 -1
  83. package/dist/api/compiler/emitter.js +53 -11
  84. package/dist/api/compiler/file-include.d.ts +2 -1
  85. package/dist/api/compiler/file-include.js +11 -7
  86. package/dist/api/compiler/file-loader.d.ts +21 -1
  87. package/dist/api/compiler/file-loader.js +201 -48
  88. package/dist/api/compiler/instantiation.d.ts +7 -0
  89. package/dist/api/compiler/instantiation.js +101 -49
  90. package/dist/api/compiler/jsdoc.js +23 -23
  91. package/dist/api/compiler/link-tables.d.ts +48 -18
  92. package/dist/api/compiler/link-tables.js +80 -37
  93. package/dist/api/compiler/locales/cs-CZ.d.ts +1 -1
  94. package/dist/api/compiler/locales/cs-CZ.js +1 -1
  95. package/dist/api/compiler/locales/de-DE.d.ts +1 -1
  96. package/dist/api/compiler/locales/de-DE.js +1 -1
  97. package/dist/api/compiler/locales/es-ES.d.ts +1 -1
  98. package/dist/api/compiler/locales/es-ES.js +1 -1
  99. package/dist/api/compiler/locales/fr-FR.d.ts +1 -1
  100. package/dist/api/compiler/locales/fr-FR.js +1 -1
  101. package/dist/api/compiler/locales/it-IT.d.ts +1 -1
  102. package/dist/api/compiler/locales/it-IT.js +1 -1
  103. package/dist/api/compiler/locales/ja-JP.d.ts +1 -1
  104. package/dist/api/compiler/locales/ja-JP.js +1 -1
  105. package/dist/api/compiler/locales/ko-KR.d.ts +1 -1
  106. package/dist/api/compiler/locales/ko-KR.js +1 -1
  107. package/dist/api/compiler/locales/pl-PL.d.ts +1 -1
  108. package/dist/api/compiler/locales/pl-PL.js +1 -1
  109. package/dist/api/compiler/locales/pt-BR.d.ts +1 -1
  110. package/dist/api/compiler/locales/pt-BR.js +1 -1
  111. package/dist/api/compiler/locales/ru-RU.d.ts +1 -1
  112. package/dist/api/compiler/locales/ru-RU.js +1 -1
  113. package/dist/api/compiler/locales/tr-TR.d.ts +1 -1
  114. package/dist/api/compiler/locales/tr-TR.js +1 -1
  115. package/dist/api/compiler/locales/zh-CN.d.ts +1 -1
  116. package/dist/api/compiler/locales/zh-CN.js +1 -1
  117. package/dist/api/compiler/locales/zh-TW.d.ts +1 -1
  118. package/dist/api/compiler/locales/zh-TW.js +1 -1
  119. package/dist/api/compiler/module-resolution-types.js +6 -6
  120. package/dist/api/compiler/module-resolution.d.ts +10 -1
  121. package/dist/api/compiler/module-resolution.js +115 -84
  122. package/dist/api/compiler/module-specifiers.d.ts +15 -0
  123. package/dist/api/compiler/module-specifiers.js +24 -18
  124. package/dist/api/compiler/name-resolver.js +74 -65
  125. package/dist/api/compiler/node-builder-names.d.ts +11 -3
  126. package/dist/api/compiler/node-builder-names.js +210 -90
  127. package/dist/api/compiler/node-builder-pseudo.js +29 -31
  128. package/dist/api/compiler/node-builder-reuse.js +23 -22
  129. package/dist/api/compiler/node-builder.d.ts +18 -1
  130. package/dist/api/compiler/node-builder.js +191 -102
  131. package/dist/api/compiler/option-declarations.d.ts +2 -6
  132. package/dist/api/compiler/option-declarations.js +315 -375
  133. package/dist/api/compiler/options.d.ts +15 -33
  134. package/dist/api/compiler/options.js +21 -54
  135. package/dist/api/compiler/output-paths.d.ts +4 -1
  136. package/dist/api/compiler/output-paths.js +6 -11
  137. package/dist/api/compiler/package-json.d.ts +3 -3
  138. package/dist/api/compiler/package-json.js +11 -10
  139. package/dist/api/compiler/parallel-parse.d.ts +3 -2
  140. package/dist/api/compiler/parallel-parse.js +17 -5
  141. package/dist/api/compiler/parser.d.ts +40 -19
  142. package/dist/api/compiler/parser.js +308 -216
  143. package/dist/api/compiler/path.d.ts +9 -0
  144. package/dist/api/compiler/path.js +20 -3
  145. package/dist/api/compiler/printer/emit-context.d.ts +5 -1
  146. package/dist/api/compiler/printer/emit-context.js +20 -1
  147. package/dist/api/compiler/printer/factory-base.d.ts +2 -2
  148. package/dist/api/compiler/printer/factory-base.js +7 -3
  149. package/dist/api/compiler/printer/factory.js +3 -1
  150. package/dist/api/compiler/printer/helpers.js +10 -1
  151. package/dist/api/compiler/printer/name-generator.d.ts +1 -1
  152. package/dist/api/compiler/printer/name-generator.js +35 -16
  153. package/dist/api/compiler/printer/printer.d.ts +49 -2
  154. package/dist/api/compiler/printer/printer.js +539 -293
  155. package/dist/api/compiler/printer/utilities.js +149 -147
  156. package/dist/api/compiler/program-checker.d.ts +12 -2
  157. package/dist/api/compiler/program-checker.js +88 -34
  158. package/dist/api/compiler/program-utilities.d.ts +3 -1
  159. package/dist/api/compiler/program-utilities.js +28 -15
  160. package/dist/api/compiler/program.d.ts +4 -6
  161. package/dist/api/compiler/program.js +74 -87
  162. package/dist/api/compiler/pseudo-bigint.d.ts +2 -0
  163. package/dist/api/compiler/pseudo-bigint.js +18 -0
  164. package/dist/api/compiler/regexp-checker.d.ts +1 -1
  165. package/dist/api/compiler/regexp-checker.js +93 -76
  166. package/dist/api/compiler/relations.d.ts +27 -4
  167. package/dist/api/compiler/relations.js +347 -180
  168. package/dist/api/compiler/reparser.js +60 -56
  169. package/dist/api/compiler/scanner.d.ts +19 -2
  170. package/dist/api/compiler/scanner.js +123 -108
  171. package/dist/api/compiler/shared-results.d.ts +463 -0
  172. package/dist/api/compiler/shared-results.js +2128 -0
  173. package/dist/api/compiler/sourcemap.js +2 -2
  174. package/dist/api/compiler/symbol-accessibility.js +87 -74
  175. package/dist/api/compiler/symbol.d.ts +23 -14
  176. package/dist/api/compiler/symbol.js +23 -11
  177. package/dist/api/compiler/syntax-kind.d.ts +198 -197
  178. package/dist/api/compiler/transformers/alias-references.js +247 -139
  179. package/dist/api/compiler/transformers/async-utilities.js +25 -25
  180. package/dist/api/compiler/transformers/async.d.ts +0 -1
  181. package/dist/api/compiler/transformers/async.js +64 -77
  182. package/dist/api/compiler/transformers/class-fields.d.ts +1 -0
  183. package/dist/api/compiler/transformers/class-fields.js +81 -78
  184. package/dist/api/compiler/transformers/commonjs-module.js +18 -15
  185. package/dist/api/compiler/transformers/const-enum-inliner.js +1 -1
  186. package/dist/api/compiler/transformers/declarations-diagnostics.js +247 -244
  187. package/dist/api/compiler/transformers/declarations-pseudo.js +100 -100
  188. package/dist/api/compiler/transformers/declarations-resolver.d.ts +0 -3
  189. package/dist/api/compiler/transformers/declarations-syntactic.d.ts +1 -2
  190. package/dist/api/compiler/transformers/declarations-syntactic.js +134 -156
  191. package/dist/api/compiler/transformers/declarations-tracker.js +18 -18
  192. package/dist/api/compiler/transformers/declarations.d.ts +4 -1
  193. package/dist/api/compiler/transformers/declarations.js +305 -238
  194. package/dist/api/compiler/transformers/decorator-metadata.d.ts +1 -1
  195. package/dist/api/compiler/transformers/decorator-metadata.js +53 -45
  196. package/dist/api/compiler/transformers/decorator-utilities.js +24 -24
  197. package/dist/api/compiler/transformers/destructuring.js +19 -18
  198. package/dist/api/compiler/transformers/emit-resolver.js +1 -1
  199. package/dist/api/compiler/transformers/es-decorators.js +55 -55
  200. package/dist/api/compiler/transformers/external-module-info.js +3 -3
  201. package/dist/api/compiler/transformers/for-await.js +25 -25
  202. package/dist/api/compiler/transformers/import-elision.js +14 -14
  203. package/dist/api/compiler/transformers/jsx.js +12 -12
  204. package/dist/api/compiler/transformers/legacy-decorators.js +17 -17
  205. package/dist/api/compiler/transformers/module.js +8 -8
  206. package/dist/api/compiler/transformers/named-evaluation.js +4 -4
  207. package/dist/api/compiler/transformers/object-rest-spread.js +20 -20
  208. package/dist/api/compiler/transformers/optional-chain.js +10 -10
  209. package/dist/api/compiler/transformers/reference-resolver.d.ts +12 -1
  210. package/dist/api/compiler/transformers/reference-resolver.js +131 -69
  211. package/dist/api/compiler/transformers/runtime-syntax.js +35 -31
  212. package/dist/api/compiler/transformers/subtree-facts.js +47 -47
  213. package/dist/api/compiler/transformers/syntax-facts.js +56 -58
  214. package/dist/api/compiler/transformers/type-eraser.js +73 -66
  215. package/dist/api/compiler/transformers/type-serialization.js +24 -24
  216. package/dist/api/compiler/transformers/using.js +12 -12
  217. package/dist/api/compiler/transformers/utilities.js +77 -77
  218. package/dist/api/compiler/transformers/visitor-base.js +172 -172
  219. package/dist/api/compiler/transformers/visitor-hooks.js +6 -2
  220. package/dist/api/compiler/tsconfig.d.ts +10 -2
  221. package/dist/api/compiler/tsconfig.js +136 -48
  222. package/dist/api/compiler/type-printer.js +40 -3
  223. package/dist/api/compiler/types.d.ts +2 -1
  224. package/dist/api/library/ast.generated.d.ts +42 -39
  225. package/dist/api/library/ast.generated.js +1 -1
  226. package/dist/api/library/compiler-options.generated.d.ts +111 -100
  227. package/dist/api/library/compiler-options.generated.js +1 -1
  228. package/dist/api/library/disk.js +12 -1
  229. package/dist/api/library/enums.generated.d.ts +206 -206
  230. package/dist/api/library/enums.generated.js +206 -206
  231. package/dist/api/library/nodes.js +26 -26
  232. package/package.json +9 -9
  233. package/src/compiler/ast-utilities.ts +99 -7
  234. package/src/compiler/ast.ts +58 -26
  235. package/src/compiler/binder.ts +39 -4
  236. package/src/compiler/character-codes.ts +2 -2
  237. package/src/compiler/checker-calls.ts +79 -9
  238. package/src/compiler/checker-classes.ts +78 -24
  239. package/src/compiler/checker-contextual.ts +6 -1
  240. package/src/compiler/checker-declarations.ts +31 -4
  241. package/src/compiler/checker-declared-types.ts +8 -5
  242. package/src/compiler/checker-decorators.ts +1 -1
  243. package/src/compiler/checker-deprecation.ts +29 -8
  244. package/src/compiler/checker-destructuring.ts +10 -3
  245. package/src/compiler/checker-emit-helpers.ts +1 -0
  246. package/src/compiler/checker-emit-resolver.ts +16 -6
  247. package/src/compiler/checker-expressions.ts +79 -46
  248. package/src/compiler/checker-functions.ts +21 -6
  249. package/src/compiler/checker-generated-code.ts +2 -22
  250. package/src/compiler/checker-grammar.ts +136 -62
  251. package/src/compiler/checker-heritage.ts +22 -21
  252. package/src/compiler/checker-inference.ts +514 -82
  253. package/src/compiler/checker-iteration.ts +18 -31
  254. package/src/compiler/checker-javascript.ts +1 -1
  255. package/src/compiler/checker-jsdoc.ts +50 -27
  256. package/src/compiler/checker-jsx.ts +26 -4
  257. package/src/compiler/checker-members.ts +200 -56
  258. package/src/compiler/checker-modules.ts +332 -65
  259. package/src/compiler/checker-narrowing.ts +98 -19
  260. package/src/compiler/checker-object-literals.ts +3 -0
  261. package/src/compiler/checker-operators.ts +11 -4
  262. package/src/compiler/checker-property-access.ts +7 -2
  263. package/src/compiler/checker-services.ts +39 -12
  264. package/src/compiler/checker-signatures.ts +15 -1
  265. package/src/compiler/checker-source-file.ts +39 -13
  266. package/src/compiler/checker-statements.ts +3 -2
  267. package/src/compiler/checker-symbol-types.ts +29 -6
  268. package/src/compiler/checker-symbols.ts +158 -15
  269. package/src/compiler/checker-type-factory.ts +124 -23
  270. package/src/compiler/checker-type-nodes.ts +46 -3
  271. package/src/compiler/checker-type-operators.ts +83 -26
  272. package/src/compiler/checker-types.ts +147 -4
  273. package/src/compiler/checker-unused.ts +9 -14
  274. package/src/compiler/checker.ts +203 -39
  275. package/src/compiler/command-line.ts +28 -28
  276. package/src/compiler/compile-program.ts +167 -27
  277. package/src/compiler/decoder.ts +13 -4
  278. package/src/compiler/diagnostic-messages.ts +1973 -1892
  279. package/src/compiler/diagnostics.ts +84 -3
  280. package/src/compiler/emitter.ts +57 -8
  281. package/src/compiler/encoder.ts +23 -8
  282. package/src/compiler/file-include.ts +9 -3
  283. package/src/compiler/file-loader.ts +197 -38
  284. package/src/compiler/help.ts +10 -14
  285. package/src/compiler/incremental.ts +165 -30
  286. package/src/compiler/init.ts +2 -7
  287. package/src/compiler/instantiation.ts +77 -22
  288. package/src/compiler/jsdoc.ts +3 -1
  289. package/src/compiler/link-tables.ts +82 -37
  290. package/src/compiler/locales/cs-CZ.ts +1 -1
  291. package/src/compiler/locales/de-DE.ts +1 -1
  292. package/src/compiler/locales/es-ES.ts +1 -1
  293. package/src/compiler/locales/fr-FR.ts +1 -1
  294. package/src/compiler/locales/it-IT.ts +1 -1
  295. package/src/compiler/locales/ja-JP.ts +1 -1
  296. package/src/compiler/locales/ko-KR.ts +1 -1
  297. package/src/compiler/locales/pl-PL.ts +1 -1
  298. package/src/compiler/locales/pt-BR.ts +1 -1
  299. package/src/compiler/locales/ru-RU.ts +1 -1
  300. package/src/compiler/locales/tr-TR.ts +1 -1
  301. package/src/compiler/locales/zh-CN.ts +1 -1
  302. package/src/compiler/locales/zh-TW.ts +1 -1
  303. package/src/compiler/module-resolution.ts +44 -8
  304. package/src/compiler/module-specifiers.ts +62 -20
  305. package/src/compiler/name-resolver.ts +9 -1
  306. package/src/compiler/node-builder-names.ts +236 -54
  307. package/src/compiler/node-builder-pseudo.ts +4 -7
  308. package/src/compiler/node-builder-reuse.ts +5 -4
  309. package/src/compiler/node-builder.ts +130 -31
  310. package/src/compiler/option-declarations.ts +33 -103
  311. package/src/compiler/options.ts +23 -62
  312. package/src/compiler/output-paths.ts +5 -18
  313. package/src/compiler/package-entrypoints.ts +345 -0
  314. package/src/compiler/package-json.ts +4 -4
  315. package/src/compiler/parallel-check.ts +326 -52
  316. package/src/compiler/parallel-emit.ts +320 -0
  317. package/src/compiler/parallel-parse.ts +16 -5
  318. package/src/compiler/parse-thread.ts +3 -0
  319. package/src/compiler/parser.ts +156 -39
  320. package/src/compiler/path.ts +22 -2
  321. package/src/compiler/printer/emit-context.ts +21 -0
  322. package/src/compiler/printer/factory-base.ts +10 -3
  323. package/src/compiler/printer/factory.ts +4 -1
  324. package/src/compiler/printer/helpers.ts +10 -1
  325. package/src/compiler/printer/name-generator.ts +24 -2
  326. package/src/compiler/printer/printer.ts +266 -30
  327. package/src/compiler/printer/utilities.ts +8 -2
  328. package/src/compiler/program-checker.ts +57 -5
  329. package/src/compiler/program-utilities.ts +23 -10
  330. package/src/compiler/program.ts +18 -26
  331. package/src/compiler/pseudo-bigint.ts +17 -0
  332. package/src/compiler/regexp-checker.ts +63 -30
  333. package/src/compiler/relations.ts +240 -77
  334. package/src/compiler/reparser.ts +7 -2
  335. package/src/compiler/scanner.ts +109 -79
  336. package/src/compiler/shared-results.ts +2414 -0
  337. package/src/compiler/show-config.ts +18 -1
  338. package/src/compiler/sourcemap.ts +2 -2
  339. package/src/compiler/symbol-accessibility.ts +26 -3
  340. package/src/compiler/symbol.ts +46 -24
  341. package/src/compiler/syntax-kind.ts +188 -187
  342. package/src/compiler/thread-entry.ts +64 -4
  343. package/src/compiler/transformers/alias-references.ts +123 -4
  344. package/src/compiler/transformers/async.ts +2 -17
  345. package/src/compiler/transformers/class-fields.ts +13 -12
  346. package/src/compiler/transformers/commonjs-module.ts +11 -7
  347. package/src/compiler/transformers/declarations-diagnostics.ts +5 -3
  348. package/src/compiler/transformers/declarations-pseudo.ts +2 -4
  349. package/src/compiler/transformers/declarations-resolver.ts +0 -3
  350. package/src/compiler/transformers/declarations-syntactic.ts +1 -21
  351. package/src/compiler/transformers/declarations.ts +134 -48
  352. package/src/compiler/transformers/decorator-metadata.ts +9 -1
  353. package/src/compiler/transformers/destructuring.ts +4 -3
  354. package/src/compiler/transformers/external-module-info.ts +1 -1
  355. package/src/compiler/transformers/jsx.ts +2 -1
  356. package/src/compiler/transformers/reference-resolver.ts +83 -19
  357. package/src/compiler/transformers/runtime-syntax.ts +6 -1
  358. package/src/compiler/transformers/syntax-facts.ts +2 -7
  359. package/src/compiler/transformers/type-eraser.ts +10 -1
  360. package/src/compiler/transformers/type-serialization.ts +3 -2
  361. package/src/compiler/transformers/visitor-base.ts +2 -1
  362. package/src/compiler/transformers/visitor-hooks.ts +9 -4
  363. package/src/compiler/tsc-build.ts +66 -9
  364. package/src/compiler/tsc-cli.ts +7 -0
  365. package/src/compiler/tsc-compile.ts +284 -4
  366. package/src/compiler/tsc-watch.ts +74 -45
  367. package/src/compiler/tsconfig.ts +176 -19
  368. package/src/compiler/type-printer.ts +36 -2
  369. package/src/compiler/types.ts +2 -1
  370. package/src/library/ast.generated.ts +57 -41
  371. package/src/library/compiler-options.generated.ts +117 -103
  372. package/src/library/disk.ts +10 -1
  373. package/src/library/enums.generated.ts +196 -196
@@ -19,6 +19,15 @@ export declare function getRootLength(path: string): number;
19
19
  export declare function isUrl(path: string): boolean;
20
20
  /** True for `/x`, `c:/x` and other disk roots (not URLs). */
21
21
  export declare function isRootedDiskPath(path: string): boolean;
22
+ /**
23
+ * Whether Windows may resolve `path` over the network: a UNC path (`//server/share`), a Win32 device path
24
+ * (`//?/…`, `//./…`) or an NT object path (`/??/…`), with either separator. Device and object paths count even
25
+ * for local volumes, since their `UNC` and `GLOBALROOT` forms reach the network redirector. Accessing one can
26
+ * make Windows authenticate to an arbitrary host, so such paths are never accessed on any platform.
27
+ */
28
+ export declare function isNetworkPath(path: string): boolean;
29
+ /** Whether a path written in a config or on the command line names a network location once resolved. */
30
+ export declare function isNetworkPathValue(value: string, basePath: string): boolean;
22
31
  export declare function pathIsAbsolute(path: string): boolean;
23
32
  /** True for `.`, `..`, and paths starting with `./` or `../`. */
24
33
  export declare function pathIsRelative(path: string): boolean;
@@ -128,6 +128,26 @@ export function isUrl(path) {
128
128
  export function isRootedDiskPath(path) {
129
129
  return getEncodedRootLength(path) > 0;
130
130
  }
131
+ /**
132
+ * Whether Windows may resolve `path` over the network: a UNC path (`//server/share`), a Win32 device path
133
+ * (`//?/…`, `//./…`) or an NT object path (`/??/…`), with either separator. Device and object paths count even
134
+ * for local volumes, since their `UNC` and `GLOBALROOT` forms reach the network redirector. Accessing one can
135
+ * make Windows authenticate to an arbitrary host, so such paths are never accessed on any platform.
136
+ */
137
+ export function isNetworkPath(path) {
138
+ if (path.length < 2 || !isAnyDirectorySeparator(path.charCodeAt(0)))
139
+ return false;
140
+ if (isAnyDirectorySeparator(path.charCodeAt(1)))
141
+ return true;
142
+ return (path.length >= 3 &&
143
+ path.charCodeAt(1) === 0x3f &&
144
+ path.charCodeAt(2) === 0x3f &&
145
+ (path.length === 3 || isAnyDirectorySeparator(path.charCodeAt(3))));
146
+ }
147
+ /** Whether a path written in a config or on the command line names a network location once resolved. */
148
+ export function isNetworkPathValue(value, basePath) {
149
+ return isNetworkPath(getNormalizedAbsolutePath(value, basePath));
150
+ }
131
151
  export function pathIsAbsolute(path) {
132
152
  return getEncodedRootLength(path) !== 0;
133
153
  }
@@ -376,9 +396,6 @@ function isNonDotDotPrefix(normalized, rootLength) {
376
396
  /** Removes `.`, `..` and duplicate separators, keeping a trailing separator. */
377
397
  export function normalizePath(path) {
378
398
  path = normalizeSlashes(path);
379
- const simple = simpleNormalizePath(path);
380
- if (simple !== undefined)
381
- return simple;
382
399
  const normalized = getNormalizedAbsolutePath(path, '');
383
400
  return normalized !== '' && hasTrailingDirectorySeparator(path)
384
401
  ? ensureTrailingDirectorySeparator(normalized)
@@ -1,4 +1,4 @@
1
- import { FunctionDeclaration, Identifier, type Node, NodeList, SourceFile } from '../ast.js';
1
+ import { Block, FunctionDeclaration, Identifier, type Node, NodeList, SourceFile } from '../ast.js';
2
2
  import { ClusteredLinkTable } from '../link-tables.js';
3
3
  import { SyntaxKind } from '../syntax-kind.js';
4
4
  import { EmitFlags } from './emit-flags.js';
@@ -91,6 +91,8 @@ export declare class EmitContext extends NodeFactory {
91
91
  getAutoGenerateInfo(node: Node): AutoGenerateInfo | undefined;
92
92
  /** The node a generated name is based on, following clones of generated names. */
93
93
  getNodeForGeneratedName(name: Node): Node;
94
+ /** Whether `node` has emit data: flags, ranges, helpers or synthesized comments. */
95
+ hasEmitNode(node: Node): boolean;
94
96
  getEmitFlags(node: Node): EmitFlags;
95
97
  setEmitFlags(node: Node, flags: EmitFlags): Node;
96
98
  addEmitFlags(node: Node, flags: EmitFlags): Node;
@@ -140,6 +142,8 @@ export declare class EmitContext extends NodeFactory {
140
142
  addLexicalDeclaration(name: Identifier): Identifier;
141
143
  addHoistedFunctionDeclaration(node: FunctionDeclaration): FunctionDeclaration;
142
144
  addInitializationStatement(node: Node): Node;
145
+ /** `node` as a function body: a block as it is, an expression as `{ return node; }` with the expression's range. */
146
+ convertToFunctionBlock(node: Node, multiLine: boolean): Block;
143
147
  /** Marks the current variable scope as visiting parameters; returns the previous flags. */
144
148
  enterParameters(): number;
145
149
  /** Restores the scope flags; returns whether a variable was hoisted while visiting the parameters. */
@@ -1,6 +1,6 @@
1
1
  // Side tables that transforms fill in and the printer reads: original nodes, emit flags,
2
2
  // comment and source map ranges, synthesized comments, generated names and emit helpers.
3
- import { ExpressionStatement, FunctionDeclaration, Identifier, NodeList, PrivateIdentifier, StringLiteral, VariableDeclaration, VariableStatement, } from '../ast.js';
3
+ import { Block, ExpressionStatement, FunctionDeclaration, Identifier, NodeList, PrivateIdentifier, StringLiteral, VariableDeclaration, VariableStatement, } from '../ast.js';
4
4
  import { ClusteredLinkTable } from '../link-tables.js';
5
5
  import { NodeFactory } from './factory.js';
6
6
  import { isParseTreeNode, isPrologueDirective } from './utilities.js';
@@ -228,6 +228,10 @@ export class EmitContext extends NodeFactory {
228
228
  return node;
229
229
  }
230
230
  // Emit data
231
+ /** Whether `node` has emit data: flags, ranges, helpers or synthesized comments. */
232
+ hasEmitNode(node) {
233
+ return this.lookup(node) !== undefined;
234
+ }
231
235
  getEmitFlags(node) {
232
236
  const emitNode = this.lookup(node);
233
237
  return emitNode === undefined ? 0 /* EmitFlags.None */ : emitNode.emitFlags;
@@ -494,6 +498,21 @@ export class EmitContext extends NodeFactory {
494
498
  this.varScopes[this.varScopes.length - 1].initializationStatements.push(node);
495
499
  return node;
496
500
  }
501
+ /** `node` as a function body: a block as it is, an expression as `{ return node; }` with the expression's range. */
502
+ convertToFunctionBlock(node, multiLine) {
503
+ if (node instanceof Block)
504
+ return node;
505
+ const factory = this.factory;
506
+ const statement = factory.createReturnStatement(node);
507
+ statement.pos = node.pos;
508
+ statement.end = node.end;
509
+ const block = factory.createBlock([statement], multiLine);
510
+ block.statements.pos = node.pos;
511
+ block.statements.end = node.end;
512
+ block.pos = node.pos;
513
+ block.end = node.end;
514
+ return block;
515
+ }
497
516
  /** Marks the current variable scope as visiting parameters; returns the previous flags. */
498
517
  enterParameters() {
499
518
  const scope = this.varScopes[this.varScopes.length - 1];
@@ -111,7 +111,7 @@ export declare abstract class NodeFactoryBase {
111
111
  updateMethodSignatureDeclaration(node: MethodSignatureDeclaration, modifiers: ModifierList | undefined, name: PropertyName, postfixToken: Token | undefined, typeParameters: NodeList | undefined, parameters: NodeList, typeNode: TypeNode | undefined): MethodSignatureDeclaration;
112
112
  updateMissingDeclaration(node: MissingDeclaration, modifiers: ModifierList | undefined): MissingDeclaration;
113
113
  updateModuleBlock(node: ModuleBlock, statements: NodeList): ModuleBlock;
114
- updateModuleDeclaration(node: ModuleDeclaration, modifiers: ModifierList | undefined, keyword: SyntaxKind, name: ModuleName, body: ModuleBody | undefined): ModuleDeclaration;
114
+ updateModuleDeclaration(node: ModuleDeclaration, modifiers: ModifierList | undefined, keyword: SyntaxKind, name: ModuleName, attributes: TypeLiteralNode | undefined, body: ModuleBody | undefined): ModuleDeclaration;
115
115
  updateNamedExports(node: NamedExports, elements: NodeList): NamedExports;
116
116
  updateNamedImports(node: NamedImports, elements: NodeList): NamedImports;
117
117
  updateNamedTupleMember(node: NamedTupleMember, dotDotDotToken: Token | undefined, name: Identifier, questionToken: Token | undefined, typeNode: TypeNode): NamedTupleMember;
@@ -132,7 +132,7 @@ export declare abstract class NodeFactoryBase {
132
132
  updatePropertyAssignment(node: PropertyAssignment, modifiers: ModifierList | undefined, name: PropertyName, postfixToken: Token | undefined, typeNode: TypeNode | undefined, initializer: Expression): PropertyAssignment;
133
133
  updatePropertyDeclaration(node: PropertyDeclaration, modifiers: ModifierList | undefined, name: PropertyName, postfixToken: Token | undefined, typeNode: TypeNode | undefined, initializer: Expression | undefined): PropertyDeclaration;
134
134
  updatePropertySignatureDeclaration(node: PropertySignatureDeclaration, modifiers: ModifierList | undefined, name: PropertyName, postfixToken: Token | undefined, typeNode: TypeNode | undefined, initializer: Expression | undefined): PropertySignatureDeclaration;
135
- updateQualifiedName(node: QualifiedName, left: EntityName, right: Identifier): QualifiedName;
135
+ updateQualifiedName(node: QualifiedName, left: EntityName, right: MemberName): QualifiedName;
136
136
  updateRestTypeNode(node: RestTypeNode, typeNode: TypeNode): RestTypeNode;
137
137
  updateReturnStatement(node: ReturnStatement, expression: Expression | undefined): ReturnStatement;
138
138
  updateSatisfiesExpression(node: SatisfiesExpression, expression: Expression, typeNode: TypeNode): SatisfiesExpression;
@@ -998,9 +998,13 @@ export class NodeFactoryBase {
998
998
  }
999
999
  return node;
1000
1000
  }
1001
- updateModuleDeclaration(node, modifiers, keyword, name, body) {
1002
- if (modifiers !== node.modifiers || keyword !== node.keyword || name !== node.name || body !== node.body) {
1003
- const updated = new ModuleDeclaration(modifiers, keyword, name, body);
1001
+ updateModuleDeclaration(node, modifiers, keyword, name, attributes, body) {
1002
+ if (modifiers !== node.modifiers ||
1003
+ keyword !== node.keyword ||
1004
+ name !== node.name ||
1005
+ attributes !== node.attributes ||
1006
+ body !== node.body) {
1007
+ const updated = new ModuleDeclaration(modifiers, keyword, name, attributes, body);
1004
1008
  this.finishUpdate(updated, node);
1005
1009
  return updated;
1006
1010
  }
@@ -175,7 +175,9 @@ export class NodeFactory extends NodeFactoryBase {
175
175
  createExpressionFromEntityName(node) {
176
176
  if (node instanceof QualifiedName) {
177
177
  const left = this.createExpressionFromEntityName(node.left);
178
- const right = this.cloneIdentifier(node.right);
178
+ const right = node.right instanceof PrivateIdentifier
179
+ ? this.cloneNode(node.right, new PrivateIdentifier(node.right.text))
180
+ : this.cloneIdentifier(node.right);
179
181
  right.pos = node.right.pos;
180
182
  right.end = node.right.end;
181
183
  right.parent = node.right.parent;
@@ -70,8 +70,17 @@ export const importDefaultHelper = new EmitHelper('typescript:commonjsimportdefa
70
70
  export const exportStarHelper = new EmitHelper('typescript:export-star', false, `var __exportStar = (this && this.__exportStar) || function(m, exports) {
71
71
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
72
72
  };`, 2, [createBindingHelper], '__exportStar', '');
73
- export const rewriteRelativeImportExtensionsHelper = new EmitHelper('typescript:rewriteRelativeImportExtensions', false, `var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
73
+ export const rewriteRelativeImportExtensionsHelper = new EmitHelper('typescript:rewriteRelativeImportExtensions', false, `var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx, extraExtensions, ignoreCase) {
74
74
  if (typeof path === "string" && /^\\.\\.?\\//.test(path)) {
75
+ if (extraExtensions) {
76
+ for (var extension in extraExtensions) {
77
+ var suffix = path.slice(-extension.length);
78
+ if (suffix === extension || ignoreCase && suffix.toLowerCase() === extension.toLowerCase()) {
79
+ var output = extraExtensions[extension];
80
+ return output === extension ? path : path.slice(0, -extension.length) + output;
81
+ }
82
+ }
83
+ }
75
84
  return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
76
85
  return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
77
86
  });
@@ -37,5 +37,5 @@ export declare class NameGenerator {
37
37
  }
38
38
  /** Forgets the files of earlier emits. */
39
39
  export declare function forgetIdentifierSets(): void;
40
- /** Whether no identifier in `file` is named `name`. */
40
+ /** Whether no identifier, private name or literal in `file` has the text `name`. */
41
41
  export declare function isFileLevelUniqueName(file: SourceFile, name: string): boolean;
@@ -1,5 +1,5 @@
1
1
  // Chooses the text of generated identifiers (`_a`, `_i`, `name_1`, …) while printing.
2
- import { ClassExpression, ExportAssignment, PrivateIdentifier, StringLiteral, getLocals, getNextContainer, getText, isLocalsContainer, } from '../ast.js';
2
+ import { ClassExpression, ExportAssignment, NodeVisitor, PrivateIdentifier, StringLiteral, getLocals, getNextContainer, getText, isLocalsContainer, } from '../ast.js';
3
3
  import { getName } from '../ast.js';
4
4
  import { getExternalModuleName } from '../ast-utilities.js';
5
5
  import { ensureLeadingHash, formatGeneratedName, makeIdentifierFromModuleName, removeLeadingHash, } from './utilities.js';
@@ -137,44 +137,44 @@ export class NameGenerator {
137
137
  case 79 /* SyntaxKind.Identifier */:
138
138
  case 80 /* SyntaxKind.PrivateIdentifier */:
139
139
  return this.makeUniqueName(this.host.getTextOfNode(node), false, (flags & 16 /* GeneratedIdentifierFlags.Optimistic */) !== 0, (flags & 8 /* GeneratedIdentifierFlags.ReservedInNestedScopes */) !== 0, privateName, prefix, suffix);
140
- case 268 /* SyntaxKind.ModuleDeclaration */:
141
- case 267 /* SyntaxKind.EnumDeclaration */: {
140
+ case 269 /* SyntaxKind.ModuleDeclaration */:
141
+ case 268 /* SyntaxKind.EnumDeclaration */: {
142
142
  const name = this.host.getTextOfNode(getName(node));
143
143
  if (isUniqueLocalName(name, node))
144
144
  return name;
145
145
  return this.makeUniqueName(name, false, false, false, false, '', '');
146
146
  }
147
- case 273 /* SyntaxKind.ImportDeclaration */:
148
- case 346 /* SyntaxKind.JSImportDeclaration */:
149
- case 279 /* SyntaxKind.ExportDeclaration */: {
147
+ case 274 /* SyntaxKind.ImportDeclaration */:
148
+ case 347 /* SyntaxKind.JSImportDeclaration */:
149
+ case 280 /* SyntaxKind.ExportDeclaration */: {
150
150
  const specifier = getExternalModuleName(node);
151
151
  const base = specifier instanceof StringLiteral ? makeIdentifierFromModuleName(specifier.text) : 'module';
152
152
  return this.makeUniqueName(base, false, false, false, false, '', '');
153
153
  }
154
- case 263 /* SyntaxKind.FunctionDeclaration */:
155
- case 264 /* SyntaxKind.ClassDeclaration */: {
154
+ case 264 /* SyntaxKind.FunctionDeclaration */:
155
+ case 265 /* SyntaxKind.ClassDeclaration */: {
156
156
  const name = getName(node);
157
157
  if (name !== undefined)
158
158
  return this.generateNameForNode(name, false, flags, '', '');
159
159
  return this.makeUniqueName('default', false, false, false, false, '', '');
160
160
  }
161
- case 278 /* SyntaxKind.ExportAssignment */:
161
+ case 279 /* SyntaxKind.ExportAssignment */:
162
162
  if (node instanceof ExportAssignment)
163
163
  return this.makeUniqueName('default', false, false, false, false, '', '');
164
164
  break;
165
- case 232 /* SyntaxKind.ClassExpression */:
165
+ case 233 /* SyntaxKind.ClassExpression */:
166
166
  if (node instanceof ClassExpression)
167
167
  return this.makeUniqueName('class', false, false, false, false, '', '');
168
168
  break;
169
- case 175 /* SyntaxKind.MethodDeclaration */:
170
- case 178 /* SyntaxKind.GetAccessor */:
171
- case 179 /* SyntaxKind.SetAccessor */: {
169
+ case 176 /* SyntaxKind.MethodDeclaration */:
170
+ case 179 /* SyntaxKind.GetAccessor */:
171
+ case 180 /* SyntaxKind.SetAccessor */: {
172
172
  const name = getName(node);
173
173
  if (name !== undefined && name.kind === 79 /* SyntaxKind.Identifier */)
174
174
  return this.generateNameForNodeCached(name, privateName, 0 /* GeneratedIdentifierFlags.None */, prefix, suffix);
175
175
  return this.makeTempVariableName(0 /* TempFlags.Auto */, false, privateName, prefix, suffix);
176
176
  }
177
- case 168 /* SyntaxKind.ComputedPropertyName */:
177
+ case 169 /* SyntaxKind.ComputedPropertyName */:
178
178
  return this.makeTempVariableName(0 /* TempFlags.Auto */, true, privateName, prefix, suffix);
179
179
  }
180
180
  return this.makeTempVariableName(0 /* TempFlags.Auto */, false, privateName, prefix, suffix);
@@ -270,13 +270,32 @@ const identifierSets = new Map();
270
270
  export function forgetIdentifierSets() {
271
271
  identifierSets.clear();
272
272
  }
273
- /** Whether no identifier in `file` is named `name`. */
273
+ /** Collects the texts of a file's identifiers, private names and literals: the names its generated names avoid. */
274
+ class NameTextCollector extends NodeVisitor {
275
+ texts = new Set();
276
+ visitNode(node) {
277
+ switch (node.kind) {
278
+ case 79 /* SyntaxKind.Identifier */:
279
+ case 80 /* SyntaxKind.PrivateIdentifier */:
280
+ case 10 /* SyntaxKind.StringLiteral */:
281
+ case 8 /* SyntaxKind.NumericLiteral */:
282
+ case 9 /* SyntaxKind.BigIntLiteral */:
283
+ case 14 /* SyntaxKind.NoSubstitutionTemplateLiteral */:
284
+ this.texts.add(getText(node));
285
+ }
286
+ node.forEachChild(this);
287
+ return false;
288
+ }
289
+ }
290
+ /** Whether no identifier, private name or literal in `file` has the text `name`. */
274
291
  export function isFileLevelUniqueName(file, name) {
275
292
  let set = identifierSets.get(file);
276
293
  if (set === undefined) {
277
294
  if (identifierSets.size >= 16)
278
295
  identifierSets.clear();
279
- set = new Set(file.identifierTexts);
296
+ const collector = new NameTextCollector();
297
+ file.forEachChild(collector);
298
+ set = collector.texts;
280
299
  identifierSets.set(file, set);
281
300
  }
282
301
  return !set.has(name);
@@ -101,6 +101,13 @@ export declare class Printer extends NameGeneratorHost {
101
101
  currentSourceFile: SourceFile | undefined;
102
102
  private sourceText;
103
103
  private lineStarts;
104
+ /**
105
+ * The line of the last `lineOf` lookup, `lookupLine`, and the positions it spans, `[lookupLineStart, lookupLineEnd)`,
106
+ * with `lookupLineEnd` -1 after the last line: printing reads positions mostly in order, so most lookups fall on that line.
107
+ */
108
+ private lookupLine;
109
+ private lookupLineStart;
110
+ private lookupLineEnd;
104
111
  private writer;
105
112
  private ownWriter;
106
113
  private uniqueHelperNames;
@@ -114,8 +121,25 @@ export declare class Printer extends NameGeneratorHost {
114
121
  private commentsDisabled;
115
122
  /** Emitting the `extends` clause of a conditional or infer type. */
116
123
  private inExtends;
117
- /** Saved comment state: emit flags, comment pos, comment end, container pos, container end, declaration list end. */
118
- private readonly commentStack;
124
+ /**
125
+ * Saved comment state, 32-bit values: emit flags, comment pos, comment end, container pos, container end,
126
+ * declaration list end.
127
+ * Flags are `commentFreeNode` for a node that `emitCommentsBeforeNode` handled in a comment-free range.
128
+ */
129
+ private commentStack;
130
+ /** The used length of `commentStack`: entries are written in place and kept for reuse once popped. */
131
+ private commentDepth;
132
+ /** Start positions of `//` and `/*` in `sourceText`, ascending; made on first use for each file. */
133
+ private commentStarts;
134
+ /**
135
+ * A range of `sourceText`, `[freeStart, freeEnd)`, where no comment starts and the last character is not trivia,
136
+ * so no comment is found from any position in it; -1 when there is none. `freeOwner` is the node it was made for.
137
+ */
138
+ private freeStart;
139
+ private freeEnd;
140
+ /** Whether no trailing comment follows `freeEnd`. */
141
+ private freeEndTrailingNone;
142
+ private freeOwner;
119
143
  /** Saved source map state: emit flags, pos, end, has token range. */
120
144
  private readonly sourceMapStack;
121
145
  /** The token position after `enterToken` skipped trivia. */
@@ -143,6 +167,13 @@ export declare class Printer extends NameGeneratorHost {
143
167
  private getLiteralTextOfNode;
144
168
  /** The text of an identifier, private identifier, literal or JSX namespaced name as printed. */
145
169
  getTextOfNode(node: Node): string;
170
+ /**
171
+ * Whether the source text of an identifier or private identifier of the current file, from the end of its leading
172
+ * trivia to its end, is its text: the text ends the node, and the character before it is not part of the token, as
173
+ * it would be in an identifier written with escapes. Nodes from JSDoc may span other text, so they are left to the
174
+ * general path.
175
+ */
176
+ private textIsSourceText;
146
177
  private isInCurrentSourceFile;
147
178
  private write1;
148
179
  private space;
@@ -155,6 +186,8 @@ export declare class Printer extends NameGeneratorHost {
155
186
  private writeLineSeparatorsAndIndentBefore;
156
187
  private writeLineSeparatorsAfter;
157
188
  private positionsAreOnSameLine;
189
+ /** The zero-based line of `pos` (-1 before the first line), which becomes the line of the last lookup. */
190
+ private lineOf;
158
191
  private rangeStart;
159
192
  private rangeIsOnSingleLine;
160
193
  private rangeEndIsOnSameLineAsRangeStart;
@@ -323,6 +356,7 @@ export declare class Printer extends NameGeneratorHost {
323
356
  private emitImportEqualsDeclaration;
324
357
  private emitImportDeclaration;
325
358
  private emitImportClause;
359
+ private emitNamedImports;
326
360
  /** Import and export specifiers. */
327
361
  private emitSpecifier;
328
362
  private emitExportAssignment;
@@ -363,7 +397,20 @@ export declare class Printer extends NameGeneratorHost {
363
397
  private emitListItems;
364
398
  private emitAnyNode;
365
399
  private emitCommentsBeforeNode;
400
+ /** Saves the comment state of a node: its emit flags (or `commentFreeNode`), comment range and the containers. */
401
+ private pushCommentState;
366
402
  private emitCommentsAfterNode;
403
+ /**
404
+ * Whether `node` has no emit data and lies in a range of the source text where no comment is found, so that its
405
+ * comments need not be looked for. Outside such a range, a node whose own range is one starts it (`freeOwner`).
406
+ */
407
+ private inCommentFreeRange;
408
+ private endCommentFreeRange;
409
+ /** Whether the comment-free range shows that no trailing comment follows `pos`. */
410
+ private noCommentsAfter;
411
+ /** Makes `[pos, end)` the comment-free range if no comment starts in it and its last character is not trivia. */
412
+ private startCommentFreeRange;
413
+ private commentStartsOfFile;
367
414
  /** Emits comments before a token; returns whether `emitCommentsAfterToken` applies, with the token's position in `tokenPos`. */
368
415
  private emitCommentsBeforeToken;
369
416
  private emitCommentsAfterToken;