@ttsc/factory 0.15.10 → 0.16.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 (784) hide show
  1. package/README.md +3 -2
  2. package/lib/TsPrinter.d.ts +51 -11
  3. package/lib/TsPrinter.js +555 -70
  4. package/lib/TsPrinter.js.map +1 -1
  5. package/lib/TsPrinter.mjs +553 -70
  6. package/lib/TsPrinter.mjs.map +1 -1
  7. package/lib/comments.mjs.map +1 -1
  8. package/lib/factory/clauses/createHeritageClause.mjs.map +1 -1
  9. package/lib/factory/clauses/createParameterDeclaration.mjs.map +1 -1
  10. package/lib/factory/declarations/createClassDeclaration.mjs.map +1 -1
  11. package/lib/factory/declarations/createClassStaticBlockDeclaration.mjs.map +1 -1
  12. package/lib/factory/declarations/createConstructorDeclaration.mjs.map +1 -1
  13. package/lib/factory/declarations/createEnumDeclaration.mjs.map +1 -1
  14. package/lib/factory/declarations/createEnumMember.mjs.map +1 -1
  15. package/lib/factory/declarations/createExternalModuleReference.mjs.map +1 -1
  16. package/lib/factory/declarations/createFunctionDeclaration.mjs.map +1 -1
  17. package/lib/factory/declarations/createGetAccessorDeclaration.mjs.map +1 -1
  18. package/lib/factory/declarations/createImportEqualsDeclaration.mjs.map +1 -1
  19. package/lib/factory/declarations/createInterfaceDeclaration.mjs.map +1 -1
  20. package/lib/factory/declarations/createMethodDeclaration.mjs.map +1 -1
  21. package/lib/factory/declarations/createModuleBlock.mjs.map +1 -1
  22. package/lib/factory/declarations/createModuleDeclaration.mjs +2 -1
  23. package/lib/factory/declarations/createModuleDeclaration.mjs.map +1 -1
  24. package/lib/factory/declarations/createNamespaceExportDeclaration.mjs.map +1 -1
  25. package/lib/factory/declarations/createPropertyDeclaration.mjs.map +1 -1
  26. package/lib/factory/declarations/createSemicolonClassElement.mjs.map +1 -1
  27. package/lib/factory/declarations/createSetAccessorDeclaration.mjs.map +1 -1
  28. package/lib/factory/declarations/createTypeAliasDeclaration.mjs.map +1 -1
  29. package/lib/factory/expressions/createAdd.mjs +2 -1
  30. package/lib/factory/expressions/createAdd.mjs.map +1 -1
  31. package/lib/factory/expressions/createArrayBindingPattern.mjs.map +1 -1
  32. package/lib/factory/expressions/createArrayLiteralExpression.mjs.map +1 -1
  33. package/lib/factory/expressions/createArrowFunction.mjs.map +1 -1
  34. package/lib/factory/expressions/createAsExpression.mjs.map +1 -1
  35. package/lib/factory/expressions/createAssignment.mjs +2 -1
  36. package/lib/factory/expressions/createAssignment.mjs.map +1 -1
  37. package/lib/factory/expressions/createAwaitExpression.mjs.map +1 -1
  38. package/lib/factory/expressions/createBinaryExpression.mjs.map +1 -1
  39. package/lib/factory/expressions/createBindingElement.mjs.map +1 -1
  40. package/lib/factory/expressions/createBitwiseAnd.mjs +2 -1
  41. package/lib/factory/expressions/createBitwiseAnd.mjs.map +1 -1
  42. package/lib/factory/expressions/createBitwiseNot.mjs +2 -1
  43. package/lib/factory/expressions/createBitwiseNot.mjs.map +1 -1
  44. package/lib/factory/expressions/createBitwiseOr.mjs +2 -1
  45. package/lib/factory/expressions/createBitwiseOr.mjs.map +1 -1
  46. package/lib/factory/expressions/createBitwiseXor.mjs +2 -1
  47. package/lib/factory/expressions/createBitwiseXor.mjs.map +1 -1
  48. package/lib/factory/expressions/createCallChain.mjs.map +1 -1
  49. package/lib/factory/expressions/createCallExpression.mjs.map +1 -1
  50. package/lib/factory/expressions/createClassExpression.mjs.map +1 -1
  51. package/lib/factory/expressions/createComma.mjs +2 -1
  52. package/lib/factory/expressions/createComma.mjs.map +1 -1
  53. package/lib/factory/expressions/createCommaListExpression.mjs.map +1 -1
  54. package/lib/factory/expressions/createComputedPropertyName.mjs.map +1 -1
  55. package/lib/factory/expressions/createConditionalExpression.mjs.map +1 -1
  56. package/lib/factory/expressions/createDeleteExpression.mjs.map +1 -1
  57. package/lib/factory/expressions/createDivide.mjs +2 -1
  58. package/lib/factory/expressions/createDivide.mjs.map +1 -1
  59. package/lib/factory/expressions/createElementAccessChain.mjs.map +1 -1
  60. package/lib/factory/expressions/createElementAccessExpression.mjs.map +1 -1
  61. package/lib/factory/expressions/createEquality.mjs +2 -1
  62. package/lib/factory/expressions/createEquality.mjs.map +1 -1
  63. package/lib/factory/expressions/createExponent.mjs +2 -1
  64. package/lib/factory/expressions/createExponent.mjs.map +1 -1
  65. package/lib/factory/expressions/createFunctionExpression.mjs.map +1 -1
  66. package/lib/factory/expressions/createGreaterThan.mjs +2 -1
  67. package/lib/factory/expressions/createGreaterThan.mjs.map +1 -1
  68. package/lib/factory/expressions/createGreaterThanEquals.mjs +2 -1
  69. package/lib/factory/expressions/createGreaterThanEquals.mjs.map +1 -1
  70. package/lib/factory/expressions/createImmediatelyInvokedArrowFunction.mjs.map +1 -1
  71. package/lib/factory/expressions/createImmediatelyInvokedFunctionExpression.mjs.map +1 -1
  72. package/lib/factory/expressions/createInequality.mjs +2 -1
  73. package/lib/factory/expressions/createInequality.mjs.map +1 -1
  74. package/lib/factory/expressions/createLeftShift.mjs +2 -1
  75. package/lib/factory/expressions/createLeftShift.mjs.map +1 -1
  76. package/lib/factory/expressions/createLessThan.mjs +2 -1
  77. package/lib/factory/expressions/createLessThan.mjs.map +1 -1
  78. package/lib/factory/expressions/createLessThanEquals.mjs +2 -1
  79. package/lib/factory/expressions/createLessThanEquals.mjs.map +1 -1
  80. package/lib/factory/expressions/createLogicalAnd.mjs +2 -1
  81. package/lib/factory/expressions/createLogicalAnd.mjs.map +1 -1
  82. package/lib/factory/expressions/createLogicalNot.mjs +2 -1
  83. package/lib/factory/expressions/createLogicalNot.mjs.map +1 -1
  84. package/lib/factory/expressions/createLogicalOr.mjs +2 -1
  85. package/lib/factory/expressions/createLogicalOr.mjs.map +1 -1
  86. package/lib/factory/expressions/createMetaProperty.mjs.map +1 -1
  87. package/lib/factory/expressions/createModulo.mjs +2 -1
  88. package/lib/factory/expressions/createModulo.mjs.map +1 -1
  89. package/lib/factory/expressions/createMultiply.mjs +2 -1
  90. package/lib/factory/expressions/createMultiply.mjs.map +1 -1
  91. package/lib/factory/expressions/createNewExpression.mjs.map +1 -1
  92. package/lib/factory/expressions/createNonNullChain.mjs.map +1 -1
  93. package/lib/factory/expressions/createNonNullExpression.mjs.map +1 -1
  94. package/lib/factory/expressions/createObjectBindingPattern.mjs.map +1 -1
  95. package/lib/factory/expressions/createObjectLiteralExpression.mjs.map +1 -1
  96. package/lib/factory/expressions/createOmittedExpression.mjs.map +1 -1
  97. package/lib/factory/expressions/createParenthesizedExpression.mjs.map +1 -1
  98. package/lib/factory/expressions/createPartiallyEmittedExpression.mjs.map +1 -1
  99. package/lib/factory/expressions/createPostfixDecrement.mjs +2 -1
  100. package/lib/factory/expressions/createPostfixDecrement.mjs.map +1 -1
  101. package/lib/factory/expressions/createPostfixIncrement.mjs +2 -1
  102. package/lib/factory/expressions/createPostfixIncrement.mjs.map +1 -1
  103. package/lib/factory/expressions/createPostfixUnaryExpression.mjs.map +1 -1
  104. package/lib/factory/expressions/createPrefixDecrement.mjs +2 -1
  105. package/lib/factory/expressions/createPrefixDecrement.mjs.map +1 -1
  106. package/lib/factory/expressions/createPrefixIncrement.mjs +2 -1
  107. package/lib/factory/expressions/createPrefixIncrement.mjs.map +1 -1
  108. package/lib/factory/expressions/createPrefixMinus.mjs +2 -1
  109. package/lib/factory/expressions/createPrefixMinus.mjs.map +1 -1
  110. package/lib/factory/expressions/createPrefixPlus.mjs +2 -1
  111. package/lib/factory/expressions/createPrefixPlus.mjs.map +1 -1
  112. package/lib/factory/expressions/createPrefixUnaryExpression.mjs.map +1 -1
  113. package/lib/factory/expressions/createPropertyAccessChain.mjs.map +1 -1
  114. package/lib/factory/expressions/createPropertyAccessExpression.mjs.map +1 -1
  115. package/lib/factory/expressions/createPropertyAssignment.mjs.map +1 -1
  116. package/lib/factory/expressions/createRegularExpressionLiteral.mjs.map +1 -1
  117. package/lib/factory/expressions/createRightShift.mjs +2 -1
  118. package/lib/factory/expressions/createRightShift.mjs.map +1 -1
  119. package/lib/factory/expressions/createSatisfiesExpression.mjs.map +1 -1
  120. package/lib/factory/expressions/createShorthandPropertyAssignment.mjs.map +1 -1
  121. package/lib/factory/expressions/createSpreadAssignment.mjs.map +1 -1
  122. package/lib/factory/expressions/createSpreadElement.mjs.map +1 -1
  123. package/lib/factory/expressions/createStrictEquality.mjs +2 -1
  124. package/lib/factory/expressions/createStrictEquality.mjs.map +1 -1
  125. package/lib/factory/expressions/createStrictInequality.mjs +2 -1
  126. package/lib/factory/expressions/createStrictInequality.mjs.map +1 -1
  127. package/lib/factory/expressions/createSubtract.mjs +2 -1
  128. package/lib/factory/expressions/createSubtract.mjs.map +1 -1
  129. package/lib/factory/expressions/createTaggedTemplateExpression.mjs.map +1 -1
  130. package/lib/factory/expressions/createTemplateExpression.mjs.map +1 -1
  131. package/lib/factory/expressions/createTemplateSpan.mjs.map +1 -1
  132. package/lib/factory/expressions/createTypeAssertion.mjs.map +1 -1
  133. package/lib/factory/expressions/createTypeOfExpression.mjs.map +1 -1
  134. package/lib/factory/expressions/createUnsignedRightShift.mjs +2 -1
  135. package/lib/factory/expressions/createUnsignedRightShift.mjs.map +1 -1
  136. package/lib/factory/expressions/createVoidExpression.mjs.map +1 -1
  137. package/lib/factory/expressions/createVoidZero.mjs.map +1 -1
  138. package/lib/factory/expressions/createYieldExpression.mjs.map +1 -1
  139. package/lib/factory/file/createBundle.mjs.map +1 -1
  140. package/lib/factory/file/createNodeArray.mjs.map +1 -1
  141. package/lib/factory/file/createSourceFile.mjs.map +1 -1
  142. package/lib/factory/file/updateSourceFile.mjs.map +1 -1
  143. package/lib/factory/imports/createExportAssignment.mjs.map +1 -1
  144. package/lib/factory/imports/createExportDeclaration.mjs.map +1 -1
  145. package/lib/factory/imports/createExportDefault.mjs.map +1 -1
  146. package/lib/factory/imports/createExportSpecifier.mjs.map +1 -1
  147. package/lib/factory/imports/createExternalModuleExport.mjs.map +1 -1
  148. package/lib/factory/imports/createImportAttribute.mjs.map +1 -1
  149. package/lib/factory/imports/createImportAttributes.mjs.map +1 -1
  150. package/lib/factory/imports/createImportClause.mjs.map +1 -1
  151. package/lib/factory/imports/createImportDeclaration.mjs.map +1 -1
  152. package/lib/factory/imports/createImportSpecifier.mjs.map +1 -1
  153. package/lib/factory/imports/createNamedExports.mjs.map +1 -1
  154. package/lib/factory/imports/createNamedImports.mjs.map +1 -1
  155. package/lib/factory/imports/createNamespaceExport.mjs.map +1 -1
  156. package/lib/factory/imports/createNamespaceImport.mjs.map +1 -1
  157. package/lib/factory/index.mjs.map +1 -1
  158. package/lib/factory/internal/asEntityName.mjs.map +1 -1
  159. package/lib/factory/internal/asName.mjs.map +1 -1
  160. package/lib/factory/internal/asPropertyName.mjs.map +1 -1
  161. package/lib/factory/internal/make.mjs.map +1 -1
  162. package/lib/factory/jsdoc/createJSDocAllType.mjs.map +1 -1
  163. package/lib/factory/jsdoc/createJSDocAugmentsTag.mjs.map +1 -1
  164. package/lib/factory/jsdoc/createJSDocAuthorTag.mjs.map +1 -1
  165. package/lib/factory/jsdoc/createJSDocCallbackTag.mjs.map +1 -1
  166. package/lib/factory/jsdoc/createJSDocClassTag.mjs.map +1 -1
  167. package/lib/factory/jsdoc/createJSDocComment.mjs.map +1 -1
  168. package/lib/factory/jsdoc/createJSDocDeprecatedTag.mjs.map +1 -1
  169. package/lib/factory/jsdoc/createJSDocEnumTag.mjs.map +1 -1
  170. package/lib/factory/jsdoc/createJSDocFunctionType.mjs.map +1 -1
  171. package/lib/factory/jsdoc/createJSDocImplementsTag.mjs.map +1 -1
  172. package/lib/factory/jsdoc/createJSDocImportTag.mjs.map +1 -1
  173. package/lib/factory/jsdoc/createJSDocLink.mjs.map +1 -1
  174. package/lib/factory/jsdoc/createJSDocLinkCode.mjs.map +1 -1
  175. package/lib/factory/jsdoc/createJSDocLinkPlain.mjs.map +1 -1
  176. package/lib/factory/jsdoc/createJSDocMemberName.mjs.map +1 -1
  177. package/lib/factory/jsdoc/createJSDocNameReference.mjs.map +1 -1
  178. package/lib/factory/jsdoc/createJSDocNamepathType.mjs.map +1 -1
  179. package/lib/factory/jsdoc/createJSDocNonNullableType.mjs.map +1 -1
  180. package/lib/factory/jsdoc/createJSDocNullableType.mjs.map +1 -1
  181. package/lib/factory/jsdoc/createJSDocOptionalType.mjs.map +1 -1
  182. package/lib/factory/jsdoc/createJSDocOverloadTag.mjs.map +1 -1
  183. package/lib/factory/jsdoc/createJSDocOverrideTag.mjs.map +1 -1
  184. package/lib/factory/jsdoc/createJSDocParameterTag.mjs.map +1 -1
  185. package/lib/factory/jsdoc/createJSDocPrivateTag.mjs.map +1 -1
  186. package/lib/factory/jsdoc/createJSDocPropertyTag.mjs.map +1 -1
  187. package/lib/factory/jsdoc/createJSDocProtectedTag.mjs.map +1 -1
  188. package/lib/factory/jsdoc/createJSDocPublicTag.mjs.map +1 -1
  189. package/lib/factory/jsdoc/createJSDocReadonlyTag.mjs.map +1 -1
  190. package/lib/factory/jsdoc/createJSDocReturnTag.mjs.map +1 -1
  191. package/lib/factory/jsdoc/createJSDocSatisfiesTag.mjs.map +1 -1
  192. package/lib/factory/jsdoc/createJSDocSeeTag.mjs.map +1 -1
  193. package/lib/factory/jsdoc/createJSDocSignature.mjs.map +1 -1
  194. package/lib/factory/jsdoc/createJSDocTemplateTag.mjs.map +1 -1
  195. package/lib/factory/jsdoc/createJSDocText.mjs.map +1 -1
  196. package/lib/factory/jsdoc/createJSDocThisTag.mjs.map +1 -1
  197. package/lib/factory/jsdoc/createJSDocThrowsTag.mjs.map +1 -1
  198. package/lib/factory/jsdoc/createJSDocTypeExpression.mjs.map +1 -1
  199. package/lib/factory/jsdoc/createJSDocTypeLiteral.mjs.map +1 -1
  200. package/lib/factory/jsdoc/createJSDocTypeTag.mjs.map +1 -1
  201. package/lib/factory/jsdoc/createJSDocTypedefTag.mjs.map +1 -1
  202. package/lib/factory/jsdoc/createJSDocUnknownTag.mjs.map +1 -1
  203. package/lib/factory/jsdoc/createJSDocUnknownType.mjs.map +1 -1
  204. package/lib/factory/jsdoc/createJSDocVariadicType.mjs.map +1 -1
  205. package/lib/factory/jsx/createJsxAttribute.mjs.map +1 -1
  206. package/lib/factory/jsx/createJsxAttributes.mjs.map +1 -1
  207. package/lib/factory/jsx/createJsxClosingElement.mjs.map +1 -1
  208. package/lib/factory/jsx/createJsxElement.mjs.map +1 -1
  209. package/lib/factory/jsx/createJsxExpression.mjs.map +1 -1
  210. package/lib/factory/jsx/createJsxFragment.mjs.map +1 -1
  211. package/lib/factory/jsx/createJsxJsxClosingFragment.mjs.map +1 -1
  212. package/lib/factory/jsx/createJsxNamespacedName.mjs.map +1 -1
  213. package/lib/factory/jsx/createJsxOpeningElement.mjs.map +1 -1
  214. package/lib/factory/jsx/createJsxOpeningFragment.mjs.map +1 -1
  215. package/lib/factory/jsx/createJsxSelfClosingElement.mjs.map +1 -1
  216. package/lib/factory/jsx/createJsxSpreadAttribute.mjs.map +1 -1
  217. package/lib/factory/jsx/createJsxText.mjs.map +1 -1
  218. package/lib/factory/literals/createBigIntLiteral.mjs.map +1 -1
  219. package/lib/factory/literals/createNoSubstitutionTemplateLiteral.mjs.map +1 -1
  220. package/lib/factory/literals/createNumericLiteral.mjs.map +1 -1
  221. package/lib/factory/literals/createStringLiteral.mjs.map +1 -1
  222. package/lib/factory/literals/createStringLiteralFromNode.mjs.map +1 -1
  223. package/lib/factory/literals/createTemplateHead.mjs.map +1 -1
  224. package/lib/factory/literals/createTemplateMiddle.mjs.map +1 -1
  225. package/lib/factory/literals/createTemplateTail.mjs.map +1 -1
  226. package/lib/factory/names/createDecorator.mjs.map +1 -1
  227. package/lib/factory/names/createFalse.mjs +2 -1
  228. package/lib/factory/names/createFalse.mjs.map +1 -1
  229. package/lib/factory/names/createIdentifier.mjs.map +1 -1
  230. package/lib/factory/names/createLoopVariable.mjs.map +1 -1
  231. package/lib/factory/names/createModifier.mjs.map +1 -1
  232. package/lib/factory/names/createModifiersFromModifierFlags.mjs +2 -1
  233. package/lib/factory/names/createModifiersFromModifierFlags.mjs.map +1 -1
  234. package/lib/factory/names/createNull.mjs +2 -1
  235. package/lib/factory/names/createNull.mjs.map +1 -1
  236. package/lib/factory/names/createPrivateIdentifier.mjs.map +1 -1
  237. package/lib/factory/names/createQualifiedName.mjs.map +1 -1
  238. package/lib/factory/names/createSuper.mjs +2 -1
  239. package/lib/factory/names/createSuper.mjs.map +1 -1
  240. package/lib/factory/names/createTempVariable.mjs.map +1 -1
  241. package/lib/factory/names/createThis.mjs +2 -1
  242. package/lib/factory/names/createThis.mjs.map +1 -1
  243. package/lib/factory/names/createToken.mjs.map +1 -1
  244. package/lib/factory/names/createTrue.mjs +2 -1
  245. package/lib/factory/names/createTrue.mjs.map +1 -1
  246. package/lib/factory/names/createUniqueName.mjs.map +1 -1
  247. package/lib/factory/names/createUniquePrivateName.mjs.map +1 -1
  248. package/lib/factory/statements/createBlock.mjs.map +1 -1
  249. package/lib/factory/statements/createBreakStatement.mjs.map +1 -1
  250. package/lib/factory/statements/createCaseBlock.mjs.map +1 -1
  251. package/lib/factory/statements/createCaseClause.mjs.map +1 -1
  252. package/lib/factory/statements/createCatchClause.mjs.map +1 -1
  253. package/lib/factory/statements/createContinueStatement.mjs.map +1 -1
  254. package/lib/factory/statements/createDebuggerStatement.mjs.map +1 -1
  255. package/lib/factory/statements/createDefaultClause.mjs.map +1 -1
  256. package/lib/factory/statements/createDoStatement.mjs.map +1 -1
  257. package/lib/factory/statements/createEmptyStatement.mjs.map +1 -1
  258. package/lib/factory/statements/createExpressionStatement.mjs.map +1 -1
  259. package/lib/factory/statements/createForInStatement.mjs.map +1 -1
  260. package/lib/factory/statements/createForOfStatement.mjs.map +1 -1
  261. package/lib/factory/statements/createForStatement.mjs.map +1 -1
  262. package/lib/factory/statements/createIfStatement.mjs.map +1 -1
  263. package/lib/factory/statements/createLabeledStatement.mjs.map +1 -1
  264. package/lib/factory/statements/createNotEmittedStatement.mjs.map +1 -1
  265. package/lib/factory/statements/createReturnStatement.mjs.map +1 -1
  266. package/lib/factory/statements/createSwitchStatement.mjs.map +1 -1
  267. package/lib/factory/statements/createThrowStatement.mjs.map +1 -1
  268. package/lib/factory/statements/createTryStatement.mjs.map +1 -1
  269. package/lib/factory/statements/createVariableDeclaration.mjs.map +1 -1
  270. package/lib/factory/statements/createVariableDeclarationList.mjs +2 -1
  271. package/lib/factory/statements/createVariableDeclarationList.mjs.map +1 -1
  272. package/lib/factory/statements/createVariableStatement.mjs.map +1 -1
  273. package/lib/factory/statements/createWhileStatement.mjs.map +1 -1
  274. package/lib/factory/statements/createWithStatement.mjs.map +1 -1
  275. package/lib/factory/types/createArrayTypeNode.mjs.map +1 -1
  276. package/lib/factory/types/createCallSignature.mjs.map +1 -1
  277. package/lib/factory/types/createConditionalTypeNode.mjs.map +1 -1
  278. package/lib/factory/types/createConstructSignature.mjs.map +1 -1
  279. package/lib/factory/types/createConstructorTypeNode.mjs.map +1 -1
  280. package/lib/factory/types/createExpressionWithTypeArguments.mjs.map +1 -1
  281. package/lib/factory/types/createFunctionTypeNode.mjs.map +1 -1
  282. package/lib/factory/types/createImportTypeNode.mjs.map +1 -1
  283. package/lib/factory/types/createIndexSignature.mjs.map +1 -1
  284. package/lib/factory/types/createIndexedAccessTypeNode.mjs.map +1 -1
  285. package/lib/factory/types/createInferTypeNode.mjs.map +1 -1
  286. package/lib/factory/types/createIntersectionTypeNode.mjs.map +1 -1
  287. package/lib/factory/types/createKeywordTypeNode.mjs.map +1 -1
  288. package/lib/factory/types/createLiteralTypeNode.mjs.map +1 -1
  289. package/lib/factory/types/createMappedTypeNode.mjs.map +1 -1
  290. package/lib/factory/types/createMethodSignature.mjs.map +1 -1
  291. package/lib/factory/types/createNamedTupleMember.mjs.map +1 -1
  292. package/lib/factory/types/createNotEmittedTypeElement.mjs.map +1 -1
  293. package/lib/factory/types/createOptionalTypeNode.mjs.map +1 -1
  294. package/lib/factory/types/createParenthesizedType.mjs.map +1 -1
  295. package/lib/factory/types/createPropertySignature.mjs.map +1 -1
  296. package/lib/factory/types/createRestTypeNode.mjs.map +1 -1
  297. package/lib/factory/types/createTemplateLiteralType.mjs.map +1 -1
  298. package/lib/factory/types/createTemplateLiteralTypeSpan.mjs.map +1 -1
  299. package/lib/factory/types/createThisTypeNode.mjs.map +1 -1
  300. package/lib/factory/types/createTupleTypeNode.mjs.map +1 -1
  301. package/lib/factory/types/createTypeLiteralNode.mjs.map +1 -1
  302. package/lib/factory/types/createTypeOperatorNode.mjs.map +1 -1
  303. package/lib/factory/types/createTypeParameterDeclaration.mjs.map +1 -1
  304. package/lib/factory/types/createTypePredicateNode.mjs.map +1 -1
  305. package/lib/factory/types/createTypeQueryNode.mjs.map +1 -1
  306. package/lib/factory/types/createTypeReferenceNode.mjs.map +1 -1
  307. package/lib/factory/types/createUnionTypeNode.mjs.map +1 -1
  308. package/lib/index.d.ts +0 -1
  309. package/lib/index.js.map +1 -1
  310. package/lib/index.mjs +2 -2
  311. package/lib/internal/doc.mjs.map +1 -1
  312. package/lib/syntax/NodeFlags.mjs.map +1 -1
  313. package/lib/syntax/SyntaxKind.mjs.map +1 -1
  314. package/package.json +5 -10
  315. package/src/TsPrinter.ts +702 -88
  316. package/src/index.ts +0 -1
  317. package/lib/ast/Node.mjs +0 -2
  318. package/lib/ast/Node.mjs.map +0 -1
  319. package/lib/ast/clauses/HeritageClause.mjs +0 -2
  320. package/lib/ast/clauses/HeritageClause.mjs.map +0 -1
  321. package/lib/ast/clauses/ParameterDeclaration.mjs +0 -2
  322. package/lib/ast/clauses/ParameterDeclaration.mjs.map +0 -1
  323. package/lib/ast/declarations/ClassDeclaration.mjs +0 -2
  324. package/lib/ast/declarations/ClassDeclaration.mjs.map +0 -1
  325. package/lib/ast/declarations/ClassElement.mjs +0 -2
  326. package/lib/ast/declarations/ClassElement.mjs.map +0 -1
  327. package/lib/ast/declarations/ClassStaticBlockDeclaration.mjs +0 -2
  328. package/lib/ast/declarations/ClassStaticBlockDeclaration.mjs.map +0 -1
  329. package/lib/ast/declarations/ConstructorDeclaration.mjs +0 -2
  330. package/lib/ast/declarations/ConstructorDeclaration.mjs.map +0 -1
  331. package/lib/ast/declarations/EnumDeclaration.mjs +0 -2
  332. package/lib/ast/declarations/EnumDeclaration.mjs.map +0 -1
  333. package/lib/ast/declarations/EnumMember.mjs +0 -2
  334. package/lib/ast/declarations/EnumMember.mjs.map +0 -1
  335. package/lib/ast/declarations/ExternalModuleReference.mjs +0 -2
  336. package/lib/ast/declarations/ExternalModuleReference.mjs.map +0 -1
  337. package/lib/ast/declarations/FunctionDeclaration.mjs +0 -2
  338. package/lib/ast/declarations/FunctionDeclaration.mjs.map +0 -1
  339. package/lib/ast/declarations/GetAccessorDeclaration.mjs +0 -2
  340. package/lib/ast/declarations/GetAccessorDeclaration.mjs.map +0 -1
  341. package/lib/ast/declarations/ImportEqualsDeclaration.mjs +0 -2
  342. package/lib/ast/declarations/ImportEqualsDeclaration.mjs.map +0 -1
  343. package/lib/ast/declarations/InterfaceDeclaration.mjs +0 -2
  344. package/lib/ast/declarations/InterfaceDeclaration.mjs.map +0 -1
  345. package/lib/ast/declarations/MethodDeclaration.mjs +0 -2
  346. package/lib/ast/declarations/MethodDeclaration.mjs.map +0 -1
  347. package/lib/ast/declarations/ModuleBlock.mjs +0 -2
  348. package/lib/ast/declarations/ModuleBlock.mjs.map +0 -1
  349. package/lib/ast/declarations/ModuleBody.mjs +0 -2
  350. package/lib/ast/declarations/ModuleBody.mjs.map +0 -1
  351. package/lib/ast/declarations/ModuleDeclaration.mjs +0 -2
  352. package/lib/ast/declarations/ModuleDeclaration.mjs.map +0 -1
  353. package/lib/ast/declarations/ModuleName.mjs +0 -2
  354. package/lib/ast/declarations/ModuleName.mjs.map +0 -1
  355. package/lib/ast/declarations/ModuleReference.mjs +0 -2
  356. package/lib/ast/declarations/ModuleReference.mjs.map +0 -1
  357. package/lib/ast/declarations/NamespaceExportDeclaration.mjs +0 -2
  358. package/lib/ast/declarations/NamespaceExportDeclaration.mjs.map +0 -1
  359. package/lib/ast/declarations/PropertyDeclaration.mjs +0 -2
  360. package/lib/ast/declarations/PropertyDeclaration.mjs.map +0 -1
  361. package/lib/ast/declarations/SemicolonClassElement.mjs +0 -2
  362. package/lib/ast/declarations/SemicolonClassElement.mjs.map +0 -1
  363. package/lib/ast/declarations/SetAccessorDeclaration.mjs +0 -2
  364. package/lib/ast/declarations/SetAccessorDeclaration.mjs.map +0 -1
  365. package/lib/ast/declarations/TypeAliasDeclaration.mjs +0 -2
  366. package/lib/ast/declarations/TypeAliasDeclaration.mjs.map +0 -1
  367. package/lib/ast/expressions/ArrayBindingElement.mjs +0 -2
  368. package/lib/ast/expressions/ArrayBindingElement.mjs.map +0 -1
  369. package/lib/ast/expressions/ArrayBindingPattern.mjs +0 -2
  370. package/lib/ast/expressions/ArrayBindingPattern.mjs.map +0 -1
  371. package/lib/ast/expressions/ArrayLiteralExpression.mjs +0 -2
  372. package/lib/ast/expressions/ArrayLiteralExpression.mjs.map +0 -1
  373. package/lib/ast/expressions/ArrowFunction.mjs +0 -2
  374. package/lib/ast/expressions/ArrowFunction.mjs.map +0 -1
  375. package/lib/ast/expressions/AsExpression.mjs +0 -2
  376. package/lib/ast/expressions/AsExpression.mjs.map +0 -1
  377. package/lib/ast/expressions/AwaitExpression.mjs +0 -2
  378. package/lib/ast/expressions/AwaitExpression.mjs.map +0 -1
  379. package/lib/ast/expressions/BigIntLiteral.mjs +0 -2
  380. package/lib/ast/expressions/BigIntLiteral.mjs.map +0 -1
  381. package/lib/ast/expressions/BinaryExpression.mjs +0 -2
  382. package/lib/ast/expressions/BinaryExpression.mjs.map +0 -1
  383. package/lib/ast/expressions/BindingElement.mjs +0 -2
  384. package/lib/ast/expressions/BindingElement.mjs.map +0 -1
  385. package/lib/ast/expressions/BindingName.mjs +0 -2
  386. package/lib/ast/expressions/BindingName.mjs.map +0 -1
  387. package/lib/ast/expressions/CallChain.mjs +0 -2
  388. package/lib/ast/expressions/CallChain.mjs.map +0 -1
  389. package/lib/ast/expressions/CallExpression.mjs +0 -2
  390. package/lib/ast/expressions/CallExpression.mjs.map +0 -1
  391. package/lib/ast/expressions/ClassExpression.mjs +0 -2
  392. package/lib/ast/expressions/ClassExpression.mjs.map +0 -1
  393. package/lib/ast/expressions/CommaListExpression.mjs +0 -2
  394. package/lib/ast/expressions/CommaListExpression.mjs.map +0 -1
  395. package/lib/ast/expressions/ComputedPropertyName.mjs +0 -2
  396. package/lib/ast/expressions/ComputedPropertyName.mjs.map +0 -1
  397. package/lib/ast/expressions/ConditionalExpression.mjs +0 -2
  398. package/lib/ast/expressions/ConditionalExpression.mjs.map +0 -1
  399. package/lib/ast/expressions/DeleteExpression.mjs +0 -2
  400. package/lib/ast/expressions/DeleteExpression.mjs.map +0 -1
  401. package/lib/ast/expressions/ElementAccessChain.mjs +0 -2
  402. package/lib/ast/expressions/ElementAccessChain.mjs.map +0 -1
  403. package/lib/ast/expressions/ElementAccessExpression.mjs +0 -2
  404. package/lib/ast/expressions/ElementAccessExpression.mjs.map +0 -1
  405. package/lib/ast/expressions/Expression.mjs +0 -2
  406. package/lib/ast/expressions/Expression.mjs.map +0 -1
  407. package/lib/ast/expressions/FunctionExpression.mjs +0 -2
  408. package/lib/ast/expressions/FunctionExpression.mjs.map +0 -1
  409. package/lib/ast/expressions/MetaProperty.mjs +0 -2
  410. package/lib/ast/expressions/MetaProperty.mjs.map +0 -1
  411. package/lib/ast/expressions/NewExpression.mjs +0 -2
  412. package/lib/ast/expressions/NewExpression.mjs.map +0 -1
  413. package/lib/ast/expressions/NoSubstitutionTemplateLiteral.mjs +0 -2
  414. package/lib/ast/expressions/NoSubstitutionTemplateLiteral.mjs.map +0 -1
  415. package/lib/ast/expressions/NonNullChain.mjs +0 -2
  416. package/lib/ast/expressions/NonNullChain.mjs.map +0 -1
  417. package/lib/ast/expressions/NonNullExpression.mjs +0 -2
  418. package/lib/ast/expressions/NonNullExpression.mjs.map +0 -1
  419. package/lib/ast/expressions/NumericLiteral.mjs +0 -2
  420. package/lib/ast/expressions/NumericLiteral.mjs.map +0 -1
  421. package/lib/ast/expressions/ObjectBindingPattern.mjs +0 -2
  422. package/lib/ast/expressions/ObjectBindingPattern.mjs.map +0 -1
  423. package/lib/ast/expressions/ObjectLiteralElement.mjs +0 -2
  424. package/lib/ast/expressions/ObjectLiteralElement.mjs.map +0 -1
  425. package/lib/ast/expressions/ObjectLiteralExpression.mjs +0 -2
  426. package/lib/ast/expressions/ObjectLiteralExpression.mjs.map +0 -1
  427. package/lib/ast/expressions/OmittedExpression.mjs +0 -2
  428. package/lib/ast/expressions/OmittedExpression.mjs.map +0 -1
  429. package/lib/ast/expressions/ParenthesizedExpression.mjs +0 -2
  430. package/lib/ast/expressions/ParenthesizedExpression.mjs.map +0 -1
  431. package/lib/ast/expressions/PartiallyEmittedExpression.mjs +0 -2
  432. package/lib/ast/expressions/PartiallyEmittedExpression.mjs.map +0 -1
  433. package/lib/ast/expressions/PostfixUnaryExpression.mjs +0 -2
  434. package/lib/ast/expressions/PostfixUnaryExpression.mjs.map +0 -1
  435. package/lib/ast/expressions/PrefixUnaryExpression.mjs +0 -2
  436. package/lib/ast/expressions/PrefixUnaryExpression.mjs.map +0 -1
  437. package/lib/ast/expressions/PropertyAccessChain.mjs +0 -2
  438. package/lib/ast/expressions/PropertyAccessChain.mjs.map +0 -1
  439. package/lib/ast/expressions/PropertyAccessExpression.mjs +0 -2
  440. package/lib/ast/expressions/PropertyAccessExpression.mjs.map +0 -1
  441. package/lib/ast/expressions/PropertyAssignment.mjs +0 -2
  442. package/lib/ast/expressions/PropertyAssignment.mjs.map +0 -1
  443. package/lib/ast/expressions/RegularExpressionLiteral.mjs +0 -2
  444. package/lib/ast/expressions/RegularExpressionLiteral.mjs.map +0 -1
  445. package/lib/ast/expressions/SatisfiesExpression.mjs +0 -2
  446. package/lib/ast/expressions/SatisfiesExpression.mjs.map +0 -1
  447. package/lib/ast/expressions/ShorthandPropertyAssignment.mjs +0 -2
  448. package/lib/ast/expressions/ShorthandPropertyAssignment.mjs.map +0 -1
  449. package/lib/ast/expressions/SpreadAssignment.mjs +0 -2
  450. package/lib/ast/expressions/SpreadAssignment.mjs.map +0 -1
  451. package/lib/ast/expressions/SpreadElement.mjs +0 -2
  452. package/lib/ast/expressions/SpreadElement.mjs.map +0 -1
  453. package/lib/ast/expressions/StringLiteral.mjs +0 -2
  454. package/lib/ast/expressions/StringLiteral.mjs.map +0 -1
  455. package/lib/ast/expressions/TaggedTemplateExpression.mjs +0 -2
  456. package/lib/ast/expressions/TaggedTemplateExpression.mjs.map +0 -1
  457. package/lib/ast/expressions/TemplateExpression.mjs +0 -2
  458. package/lib/ast/expressions/TemplateExpression.mjs.map +0 -1
  459. package/lib/ast/expressions/TemplateHead.mjs +0 -2
  460. package/lib/ast/expressions/TemplateHead.mjs.map +0 -1
  461. package/lib/ast/expressions/TemplateLiteral.mjs +0 -2
  462. package/lib/ast/expressions/TemplateLiteral.mjs.map +0 -1
  463. package/lib/ast/expressions/TemplateMiddle.mjs +0 -2
  464. package/lib/ast/expressions/TemplateMiddle.mjs.map +0 -1
  465. package/lib/ast/expressions/TemplateSpan.mjs +0 -2
  466. package/lib/ast/expressions/TemplateSpan.mjs.map +0 -1
  467. package/lib/ast/expressions/TemplateTail.mjs +0 -2
  468. package/lib/ast/expressions/TemplateTail.mjs.map +0 -1
  469. package/lib/ast/expressions/TypeAssertion.mjs +0 -2
  470. package/lib/ast/expressions/TypeAssertion.mjs.map +0 -1
  471. package/lib/ast/expressions/TypeOfExpression.mjs +0 -2
  472. package/lib/ast/expressions/TypeOfExpression.mjs.map +0 -1
  473. package/lib/ast/expressions/VoidExpression.mjs +0 -2
  474. package/lib/ast/expressions/VoidExpression.mjs.map +0 -1
  475. package/lib/ast/expressions/YieldExpression.mjs +0 -2
  476. package/lib/ast/expressions/YieldExpression.mjs.map +0 -1
  477. package/lib/ast/file/Bundle.mjs +0 -2
  478. package/lib/ast/file/Bundle.mjs.map +0 -1
  479. package/lib/ast/file/SourceFile.mjs +0 -2
  480. package/lib/ast/file/SourceFile.mjs.map +0 -1
  481. package/lib/ast/imports/ExportAssignment.mjs +0 -2
  482. package/lib/ast/imports/ExportAssignment.mjs.map +0 -1
  483. package/lib/ast/imports/ExportDeclaration.mjs +0 -2
  484. package/lib/ast/imports/ExportDeclaration.mjs.map +0 -1
  485. package/lib/ast/imports/ExportSpecifier.mjs +0 -2
  486. package/lib/ast/imports/ExportSpecifier.mjs.map +0 -1
  487. package/lib/ast/imports/ImportAttribute.mjs +0 -2
  488. package/lib/ast/imports/ImportAttribute.mjs.map +0 -1
  489. package/lib/ast/imports/ImportAttributeName.mjs +0 -2
  490. package/lib/ast/imports/ImportAttributeName.mjs.map +0 -1
  491. package/lib/ast/imports/ImportAttributes.mjs +0 -2
  492. package/lib/ast/imports/ImportAttributes.mjs.map +0 -1
  493. package/lib/ast/imports/ImportClause.mjs +0 -2
  494. package/lib/ast/imports/ImportClause.mjs.map +0 -1
  495. package/lib/ast/imports/ImportDeclaration.mjs +0 -2
  496. package/lib/ast/imports/ImportDeclaration.mjs.map +0 -1
  497. package/lib/ast/imports/ImportSpecifier.mjs +0 -2
  498. package/lib/ast/imports/ImportSpecifier.mjs.map +0 -1
  499. package/lib/ast/imports/NamedExports.mjs +0 -2
  500. package/lib/ast/imports/NamedExports.mjs.map +0 -1
  501. package/lib/ast/imports/NamedImports.mjs +0 -2
  502. package/lib/ast/imports/NamedImports.mjs.map +0 -1
  503. package/lib/ast/imports/NamespaceExport.mjs +0 -2
  504. package/lib/ast/imports/NamespaceExport.mjs.map +0 -1
  505. package/lib/ast/imports/NamespaceImport.mjs +0 -2
  506. package/lib/ast/imports/NamespaceImport.mjs.map +0 -1
  507. package/lib/ast/index.mjs +0 -2
  508. package/lib/ast/index.mjs.map +0 -1
  509. package/lib/ast/jsdoc/JSDoc.mjs +0 -2
  510. package/lib/ast/jsdoc/JSDoc.mjs.map +0 -1
  511. package/lib/ast/jsdoc/JSDocAllType.mjs +0 -2
  512. package/lib/ast/jsdoc/JSDocAllType.mjs.map +0 -1
  513. package/lib/ast/jsdoc/JSDocAugmentsTag.mjs +0 -2
  514. package/lib/ast/jsdoc/JSDocAugmentsTag.mjs.map +0 -1
  515. package/lib/ast/jsdoc/JSDocAuthorTag.mjs +0 -2
  516. package/lib/ast/jsdoc/JSDocAuthorTag.mjs.map +0 -1
  517. package/lib/ast/jsdoc/JSDocCallbackTag.mjs +0 -2
  518. package/lib/ast/jsdoc/JSDocCallbackTag.mjs.map +0 -1
  519. package/lib/ast/jsdoc/JSDocClassTag.mjs +0 -2
  520. package/lib/ast/jsdoc/JSDocClassTag.mjs.map +0 -1
  521. package/lib/ast/jsdoc/JSDocComment.mjs +0 -2
  522. package/lib/ast/jsdoc/JSDocComment.mjs.map +0 -1
  523. package/lib/ast/jsdoc/JSDocDeprecatedTag.mjs +0 -2
  524. package/lib/ast/jsdoc/JSDocDeprecatedTag.mjs.map +0 -1
  525. package/lib/ast/jsdoc/JSDocEnumTag.mjs +0 -2
  526. package/lib/ast/jsdoc/JSDocEnumTag.mjs.map +0 -1
  527. package/lib/ast/jsdoc/JSDocFunctionType.mjs +0 -2
  528. package/lib/ast/jsdoc/JSDocFunctionType.mjs.map +0 -1
  529. package/lib/ast/jsdoc/JSDocImplementsTag.mjs +0 -2
  530. package/lib/ast/jsdoc/JSDocImplementsTag.mjs.map +0 -1
  531. package/lib/ast/jsdoc/JSDocImportTag.mjs +0 -2
  532. package/lib/ast/jsdoc/JSDocImportTag.mjs.map +0 -1
  533. package/lib/ast/jsdoc/JSDocLink.mjs +0 -2
  534. package/lib/ast/jsdoc/JSDocLink.mjs.map +0 -1
  535. package/lib/ast/jsdoc/JSDocLinkCode.mjs +0 -2
  536. package/lib/ast/jsdoc/JSDocLinkCode.mjs.map +0 -1
  537. package/lib/ast/jsdoc/JSDocLinkPlain.mjs +0 -2
  538. package/lib/ast/jsdoc/JSDocLinkPlain.mjs.map +0 -1
  539. package/lib/ast/jsdoc/JSDocMemberName.mjs +0 -2
  540. package/lib/ast/jsdoc/JSDocMemberName.mjs.map +0 -1
  541. package/lib/ast/jsdoc/JSDocNameReference.mjs +0 -2
  542. package/lib/ast/jsdoc/JSDocNameReference.mjs.map +0 -1
  543. package/lib/ast/jsdoc/JSDocNamepathType.mjs +0 -2
  544. package/lib/ast/jsdoc/JSDocNamepathType.mjs.map +0 -1
  545. package/lib/ast/jsdoc/JSDocNonNullableType.mjs +0 -2
  546. package/lib/ast/jsdoc/JSDocNonNullableType.mjs.map +0 -1
  547. package/lib/ast/jsdoc/JSDocNullableType.mjs +0 -2
  548. package/lib/ast/jsdoc/JSDocNullableType.mjs.map +0 -1
  549. package/lib/ast/jsdoc/JSDocOptionalType.mjs +0 -2
  550. package/lib/ast/jsdoc/JSDocOptionalType.mjs.map +0 -1
  551. package/lib/ast/jsdoc/JSDocOverloadTag.mjs +0 -2
  552. package/lib/ast/jsdoc/JSDocOverloadTag.mjs.map +0 -1
  553. package/lib/ast/jsdoc/JSDocOverrideTag.mjs +0 -2
  554. package/lib/ast/jsdoc/JSDocOverrideTag.mjs.map +0 -1
  555. package/lib/ast/jsdoc/JSDocParameterTag.mjs +0 -2
  556. package/lib/ast/jsdoc/JSDocParameterTag.mjs.map +0 -1
  557. package/lib/ast/jsdoc/JSDocPrivateTag.mjs +0 -2
  558. package/lib/ast/jsdoc/JSDocPrivateTag.mjs.map +0 -1
  559. package/lib/ast/jsdoc/JSDocPropertyTag.mjs +0 -2
  560. package/lib/ast/jsdoc/JSDocPropertyTag.mjs.map +0 -1
  561. package/lib/ast/jsdoc/JSDocProtectedTag.mjs +0 -2
  562. package/lib/ast/jsdoc/JSDocProtectedTag.mjs.map +0 -1
  563. package/lib/ast/jsdoc/JSDocPublicTag.mjs +0 -2
  564. package/lib/ast/jsdoc/JSDocPublicTag.mjs.map +0 -1
  565. package/lib/ast/jsdoc/JSDocReadonlyTag.mjs +0 -2
  566. package/lib/ast/jsdoc/JSDocReadonlyTag.mjs.map +0 -1
  567. package/lib/ast/jsdoc/JSDocReturnTag.mjs +0 -2
  568. package/lib/ast/jsdoc/JSDocReturnTag.mjs.map +0 -1
  569. package/lib/ast/jsdoc/JSDocSatisfiesTag.mjs +0 -2
  570. package/lib/ast/jsdoc/JSDocSatisfiesTag.mjs.map +0 -1
  571. package/lib/ast/jsdoc/JSDocSeeTag.mjs +0 -2
  572. package/lib/ast/jsdoc/JSDocSeeTag.mjs.map +0 -1
  573. package/lib/ast/jsdoc/JSDocSignature.mjs +0 -2
  574. package/lib/ast/jsdoc/JSDocSignature.mjs.map +0 -1
  575. package/lib/ast/jsdoc/JSDocTag.mjs +0 -2
  576. package/lib/ast/jsdoc/JSDocTag.mjs.map +0 -1
  577. package/lib/ast/jsdoc/JSDocTemplateTag.mjs +0 -2
  578. package/lib/ast/jsdoc/JSDocTemplateTag.mjs.map +0 -1
  579. package/lib/ast/jsdoc/JSDocText.mjs +0 -2
  580. package/lib/ast/jsdoc/JSDocText.mjs.map +0 -1
  581. package/lib/ast/jsdoc/JSDocThisTag.mjs +0 -2
  582. package/lib/ast/jsdoc/JSDocThisTag.mjs.map +0 -1
  583. package/lib/ast/jsdoc/JSDocThrowsTag.mjs +0 -2
  584. package/lib/ast/jsdoc/JSDocThrowsTag.mjs.map +0 -1
  585. package/lib/ast/jsdoc/JSDocTypeExpression.mjs +0 -2
  586. package/lib/ast/jsdoc/JSDocTypeExpression.mjs.map +0 -1
  587. package/lib/ast/jsdoc/JSDocTypeLiteral.mjs +0 -2
  588. package/lib/ast/jsdoc/JSDocTypeLiteral.mjs.map +0 -1
  589. package/lib/ast/jsdoc/JSDocTypeTag.mjs +0 -2
  590. package/lib/ast/jsdoc/JSDocTypeTag.mjs.map +0 -1
  591. package/lib/ast/jsdoc/JSDocTypedefTag.mjs +0 -2
  592. package/lib/ast/jsdoc/JSDocTypedefTag.mjs.map +0 -1
  593. package/lib/ast/jsdoc/JSDocUnknownTag.mjs +0 -2
  594. package/lib/ast/jsdoc/JSDocUnknownTag.mjs.map +0 -1
  595. package/lib/ast/jsdoc/JSDocUnknownType.mjs +0 -2
  596. package/lib/ast/jsdoc/JSDocUnknownType.mjs.map +0 -1
  597. package/lib/ast/jsdoc/JSDocVariadicType.mjs +0 -2
  598. package/lib/ast/jsdoc/JSDocVariadicType.mjs.map +0 -1
  599. package/lib/ast/jsx/JsxAttribute.mjs +0 -2
  600. package/lib/ast/jsx/JsxAttribute.mjs.map +0 -1
  601. package/lib/ast/jsx/JsxAttributeLike.mjs +0 -2
  602. package/lib/ast/jsx/JsxAttributeLike.mjs.map +0 -1
  603. package/lib/ast/jsx/JsxAttributeName.mjs +0 -2
  604. package/lib/ast/jsx/JsxAttributeName.mjs.map +0 -1
  605. package/lib/ast/jsx/JsxAttributeValue.mjs +0 -2
  606. package/lib/ast/jsx/JsxAttributeValue.mjs.map +0 -1
  607. package/lib/ast/jsx/JsxAttributes.mjs +0 -2
  608. package/lib/ast/jsx/JsxAttributes.mjs.map +0 -1
  609. package/lib/ast/jsx/JsxChild.mjs +0 -2
  610. package/lib/ast/jsx/JsxChild.mjs.map +0 -1
  611. package/lib/ast/jsx/JsxClosingElement.mjs +0 -2
  612. package/lib/ast/jsx/JsxClosingElement.mjs.map +0 -1
  613. package/lib/ast/jsx/JsxClosingFragment.mjs +0 -2
  614. package/lib/ast/jsx/JsxClosingFragment.mjs.map +0 -1
  615. package/lib/ast/jsx/JsxElement.mjs +0 -2
  616. package/lib/ast/jsx/JsxElement.mjs.map +0 -1
  617. package/lib/ast/jsx/JsxExpression.mjs +0 -2
  618. package/lib/ast/jsx/JsxExpression.mjs.map +0 -1
  619. package/lib/ast/jsx/JsxFragment.mjs +0 -2
  620. package/lib/ast/jsx/JsxFragment.mjs.map +0 -1
  621. package/lib/ast/jsx/JsxNamespacedName.mjs +0 -2
  622. package/lib/ast/jsx/JsxNamespacedName.mjs.map +0 -1
  623. package/lib/ast/jsx/JsxOpeningElement.mjs +0 -2
  624. package/lib/ast/jsx/JsxOpeningElement.mjs.map +0 -1
  625. package/lib/ast/jsx/JsxOpeningFragment.mjs +0 -2
  626. package/lib/ast/jsx/JsxOpeningFragment.mjs.map +0 -1
  627. package/lib/ast/jsx/JsxSelfClosingElement.mjs +0 -2
  628. package/lib/ast/jsx/JsxSelfClosingElement.mjs.map +0 -1
  629. package/lib/ast/jsx/JsxSpreadAttribute.mjs +0 -2
  630. package/lib/ast/jsx/JsxSpreadAttribute.mjs.map +0 -1
  631. package/lib/ast/jsx/JsxTagName.mjs +0 -2
  632. package/lib/ast/jsx/JsxTagName.mjs.map +0 -1
  633. package/lib/ast/jsx/JsxText.mjs +0 -2
  634. package/lib/ast/jsx/JsxText.mjs.map +0 -1
  635. package/lib/ast/names/Decorator.mjs +0 -2
  636. package/lib/ast/names/Decorator.mjs.map +0 -1
  637. package/lib/ast/names/EntityName.mjs +0 -2
  638. package/lib/ast/names/EntityName.mjs.map +0 -1
  639. package/lib/ast/names/Identifier.mjs +0 -2
  640. package/lib/ast/names/Identifier.mjs.map +0 -1
  641. package/lib/ast/names/Modifier.mjs +0 -2
  642. package/lib/ast/names/Modifier.mjs.map +0 -1
  643. package/lib/ast/names/ModifierLike.mjs +0 -2
  644. package/lib/ast/names/ModifierLike.mjs.map +0 -1
  645. package/lib/ast/names/PrivateIdentifier.mjs +0 -2
  646. package/lib/ast/names/PrivateIdentifier.mjs.map +0 -1
  647. package/lib/ast/names/PropertyName.mjs +0 -2
  648. package/lib/ast/names/PropertyName.mjs.map +0 -1
  649. package/lib/ast/names/QualifiedName.mjs +0 -2
  650. package/lib/ast/names/QualifiedName.mjs.map +0 -1
  651. package/lib/ast/names/Token.mjs +0 -2
  652. package/lib/ast/names/Token.mjs.map +0 -1
  653. package/lib/ast/statements/Block.mjs +0 -2
  654. package/lib/ast/statements/Block.mjs.map +0 -1
  655. package/lib/ast/statements/BreakStatement.mjs +0 -2
  656. package/lib/ast/statements/BreakStatement.mjs.map +0 -1
  657. package/lib/ast/statements/CaseBlock.mjs +0 -2
  658. package/lib/ast/statements/CaseBlock.mjs.map +0 -1
  659. package/lib/ast/statements/CaseClause.mjs +0 -2
  660. package/lib/ast/statements/CaseClause.mjs.map +0 -1
  661. package/lib/ast/statements/CaseOrDefaultClause.mjs +0 -2
  662. package/lib/ast/statements/CaseOrDefaultClause.mjs.map +0 -1
  663. package/lib/ast/statements/CatchClause.mjs +0 -2
  664. package/lib/ast/statements/CatchClause.mjs.map +0 -1
  665. package/lib/ast/statements/ContinueStatement.mjs +0 -2
  666. package/lib/ast/statements/ContinueStatement.mjs.map +0 -1
  667. package/lib/ast/statements/DebuggerStatement.mjs +0 -2
  668. package/lib/ast/statements/DebuggerStatement.mjs.map +0 -1
  669. package/lib/ast/statements/Declaration.mjs +0 -2
  670. package/lib/ast/statements/Declaration.mjs.map +0 -1
  671. package/lib/ast/statements/DefaultClause.mjs +0 -2
  672. package/lib/ast/statements/DefaultClause.mjs.map +0 -1
  673. package/lib/ast/statements/DoStatement.mjs +0 -2
  674. package/lib/ast/statements/DoStatement.mjs.map +0 -1
  675. package/lib/ast/statements/EmptyStatement.mjs +0 -2
  676. package/lib/ast/statements/EmptyStatement.mjs.map +0 -1
  677. package/lib/ast/statements/ExpressionStatement.mjs +0 -2
  678. package/lib/ast/statements/ExpressionStatement.mjs.map +0 -1
  679. package/lib/ast/statements/ForInStatement.mjs +0 -2
  680. package/lib/ast/statements/ForInStatement.mjs.map +0 -1
  681. package/lib/ast/statements/ForInitializer.mjs +0 -2
  682. package/lib/ast/statements/ForInitializer.mjs.map +0 -1
  683. package/lib/ast/statements/ForOfStatement.mjs +0 -2
  684. package/lib/ast/statements/ForOfStatement.mjs.map +0 -1
  685. package/lib/ast/statements/ForStatement.mjs +0 -2
  686. package/lib/ast/statements/ForStatement.mjs.map +0 -1
  687. package/lib/ast/statements/IfStatement.mjs +0 -2
  688. package/lib/ast/statements/IfStatement.mjs.map +0 -1
  689. package/lib/ast/statements/LabeledStatement.mjs +0 -2
  690. package/lib/ast/statements/LabeledStatement.mjs.map +0 -1
  691. package/lib/ast/statements/NotEmittedStatement.mjs +0 -2
  692. package/lib/ast/statements/NotEmittedStatement.mjs.map +0 -1
  693. package/lib/ast/statements/ReturnStatement.mjs +0 -2
  694. package/lib/ast/statements/ReturnStatement.mjs.map +0 -1
  695. package/lib/ast/statements/Statement.mjs +0 -2
  696. package/lib/ast/statements/Statement.mjs.map +0 -1
  697. package/lib/ast/statements/SwitchStatement.mjs +0 -2
  698. package/lib/ast/statements/SwitchStatement.mjs.map +0 -1
  699. package/lib/ast/statements/ThrowStatement.mjs +0 -2
  700. package/lib/ast/statements/ThrowStatement.mjs.map +0 -1
  701. package/lib/ast/statements/TryStatement.mjs +0 -2
  702. package/lib/ast/statements/TryStatement.mjs.map +0 -1
  703. package/lib/ast/statements/VariableDeclaration.mjs +0 -2
  704. package/lib/ast/statements/VariableDeclaration.mjs.map +0 -1
  705. package/lib/ast/statements/VariableDeclarationList.mjs +0 -2
  706. package/lib/ast/statements/VariableDeclarationList.mjs.map +0 -1
  707. package/lib/ast/statements/VariableStatement.mjs +0 -2
  708. package/lib/ast/statements/VariableStatement.mjs.map +0 -1
  709. package/lib/ast/statements/WhileStatement.mjs +0 -2
  710. package/lib/ast/statements/WhileStatement.mjs.map +0 -1
  711. package/lib/ast/statements/WithStatement.mjs +0 -2
  712. package/lib/ast/statements/WithStatement.mjs.map +0 -1
  713. package/lib/ast/types/ArrayTypeNode.mjs +0 -2
  714. package/lib/ast/types/ArrayTypeNode.mjs.map +0 -1
  715. package/lib/ast/types/CallSignatureDeclaration.mjs +0 -2
  716. package/lib/ast/types/CallSignatureDeclaration.mjs.map +0 -1
  717. package/lib/ast/types/ConditionalTypeNode.mjs +0 -2
  718. package/lib/ast/types/ConditionalTypeNode.mjs.map +0 -1
  719. package/lib/ast/types/ConstructSignatureDeclaration.mjs +0 -2
  720. package/lib/ast/types/ConstructSignatureDeclaration.mjs.map +0 -1
  721. package/lib/ast/types/ConstructorTypeNode.mjs +0 -2
  722. package/lib/ast/types/ConstructorTypeNode.mjs.map +0 -1
  723. package/lib/ast/types/ExpressionWithTypeArguments.mjs +0 -2
  724. package/lib/ast/types/ExpressionWithTypeArguments.mjs.map +0 -1
  725. package/lib/ast/types/FunctionTypeNode.mjs +0 -2
  726. package/lib/ast/types/FunctionTypeNode.mjs.map +0 -1
  727. package/lib/ast/types/ImportTypeNode.mjs +0 -2
  728. package/lib/ast/types/ImportTypeNode.mjs.map +0 -1
  729. package/lib/ast/types/IndexSignatureDeclaration.mjs +0 -2
  730. package/lib/ast/types/IndexSignatureDeclaration.mjs.map +0 -1
  731. package/lib/ast/types/IndexedAccessTypeNode.mjs +0 -2
  732. package/lib/ast/types/IndexedAccessTypeNode.mjs.map +0 -1
  733. package/lib/ast/types/InferTypeNode.mjs +0 -2
  734. package/lib/ast/types/InferTypeNode.mjs.map +0 -1
  735. package/lib/ast/types/IntersectionTypeNode.mjs +0 -2
  736. package/lib/ast/types/IntersectionTypeNode.mjs.map +0 -1
  737. package/lib/ast/types/KeywordTypeNode.mjs +0 -2
  738. package/lib/ast/types/KeywordTypeNode.mjs.map +0 -1
  739. package/lib/ast/types/LiteralTypeNode.mjs +0 -2
  740. package/lib/ast/types/LiteralTypeNode.mjs.map +0 -1
  741. package/lib/ast/types/MappedTypeNode.mjs +0 -2
  742. package/lib/ast/types/MappedTypeNode.mjs.map +0 -1
  743. package/lib/ast/types/MethodSignature.mjs +0 -2
  744. package/lib/ast/types/MethodSignature.mjs.map +0 -1
  745. package/lib/ast/types/NamedTupleMember.mjs +0 -2
  746. package/lib/ast/types/NamedTupleMember.mjs.map +0 -1
  747. package/lib/ast/types/NotEmittedTypeElement.mjs +0 -2
  748. package/lib/ast/types/NotEmittedTypeElement.mjs.map +0 -1
  749. package/lib/ast/types/OptionalTypeNode.mjs +0 -2
  750. package/lib/ast/types/OptionalTypeNode.mjs.map +0 -1
  751. package/lib/ast/types/ParenthesizedTypeNode.mjs +0 -2
  752. package/lib/ast/types/ParenthesizedTypeNode.mjs.map +0 -1
  753. package/lib/ast/types/PropertySignature.mjs +0 -2
  754. package/lib/ast/types/PropertySignature.mjs.map +0 -1
  755. package/lib/ast/types/RestTypeNode.mjs +0 -2
  756. package/lib/ast/types/RestTypeNode.mjs.map +0 -1
  757. package/lib/ast/types/TemplateLiteralTypeNode.mjs +0 -2
  758. package/lib/ast/types/TemplateLiteralTypeNode.mjs.map +0 -1
  759. package/lib/ast/types/TemplateLiteralTypeSpan.mjs +0 -2
  760. package/lib/ast/types/TemplateLiteralTypeSpan.mjs.map +0 -1
  761. package/lib/ast/types/ThisTypeNode.mjs +0 -2
  762. package/lib/ast/types/ThisTypeNode.mjs.map +0 -1
  763. package/lib/ast/types/TupleTypeNode.mjs +0 -2
  764. package/lib/ast/types/TupleTypeNode.mjs.map +0 -1
  765. package/lib/ast/types/TypeElement.mjs +0 -2
  766. package/lib/ast/types/TypeElement.mjs.map +0 -1
  767. package/lib/ast/types/TypeLiteralNode.mjs +0 -2
  768. package/lib/ast/types/TypeLiteralNode.mjs.map +0 -1
  769. package/lib/ast/types/TypeNode.mjs +0 -2
  770. package/lib/ast/types/TypeNode.mjs.map +0 -1
  771. package/lib/ast/types/TypeOperatorNode.mjs +0 -2
  772. package/lib/ast/types/TypeOperatorNode.mjs.map +0 -1
  773. package/lib/ast/types/TypeParameterDeclaration.mjs +0 -2
  774. package/lib/ast/types/TypeParameterDeclaration.mjs.map +0 -1
  775. package/lib/ast/types/TypePredicateNode.mjs +0 -2
  776. package/lib/ast/types/TypePredicateNode.mjs.map +0 -1
  777. package/lib/ast/types/TypeQueryNode.mjs +0 -2
  778. package/lib/ast/types/TypeQueryNode.mjs.map +0 -1
  779. package/lib/ast/types/TypeReferenceNode.mjs +0 -2
  780. package/lib/ast/types/TypeReferenceNode.mjs.map +0 -1
  781. package/lib/ast/types/UnionTypeNode.mjs +0 -2
  782. package/lib/ast/types/UnionTypeNode.mjs.map +0 -1
  783. package/lib/syntax/index.mjs +0 -3
  784. package/lib/syntax/index.mjs.map +0 -1
package/lib/TsPrinter.mjs CHANGED
@@ -3,23 +3,13 @@ import { join, hardline, printDocToString, line, softline, group, concat, indent
3
3
  import { SyntaxKind } from './syntax/SyntaxKind.mjs';
4
4
  import { NodeFlags } from './syntax/NodeFlags.mjs';
5
5
 
6
- const escapeString = (text, singleQuote) => {
7
- const escaped = text
8
- .replace(/\\/g, "\\\\")
9
- .replace(/\n/g, "\\n")
10
- .replace(/\r/g, "\\r")
11
- .replace(/\t/g, "\\t");
12
- return singleQuote === true
13
- ? `'${escaped.replace(/'/g, "\\'")}'`
14
- : `"${escaped.replace(/"/g, '\\"')}"`;
15
- };
16
6
  /**
17
7
  * Printer turning {@link factory} produced AST nodes into TypeScript source
18
8
  * text.
19
9
  *
20
10
  * The printer is a width-aware pretty-printer: it builds a Prettier-style
21
11
  * document for the {@link Node} discriminated union and lays it out against
22
- * {@link TsPrinterOptions.printWidth}. Lists (arguments, parameters, generic
12
+ * {@link TsPrinter.IProps.printWidth}. Lists (arguments, parameters, generic
23
13
  * arguments, array / object members, ...) print on one line when they fit and
24
14
  * break onto indented lines — with trailing commas — when they do not. Every
25
15
  * `node.kind` narrows to its concrete type, so the walk is fully type-checked;
@@ -148,6 +138,11 @@ class TsPrinter {
148
138
  trailingComma: true,
149
139
  });
150
140
  }
141
+ args(args) {
142
+ return this.delim("(", args.map((a) => this.expressionForDisallowedComma(a)), ")", {
143
+ trailingComma: true,
144
+ });
145
+ }
151
146
  modifiers(mods, decoratorsOnNewLine) {
152
147
  if (!mods || mods.length === 0)
153
148
  return "";
@@ -232,7 +227,7 @@ class TsPrinter {
232
227
  case "Token":
233
228
  return node.token;
234
229
  case "Decorator":
235
- return concat(["@", this.emit(node.expression)]);
230
+ return concat(["@", this.leftSideExpression(node.expression)]);
236
231
  /* literals */
237
232
  case "StringLiteral":
238
233
  return escapeString(node.text, node.singleQuote);
@@ -242,7 +237,7 @@ class TsPrinter {
242
237
  return node.text;
243
238
  /* expressions */
244
239
  case "ArrayLiteralExpression":
245
- return this.delim("[", node.elements.map((e) => this.emit(e)), "]", { trailingComma: true, forceBreak: node.multiLine === true });
240
+ return this.delim("[", node.elements.map((e) => this.expressionForDisallowedComma(e)), "]", { trailingComma: true, forceBreak: node.multiLine === true });
246
241
  case "ObjectLiteralExpression":
247
242
  return this.delim("{", node.properties.map((p) => this.emit(p)), "}", {
248
243
  space: true,
@@ -253,62 +248,78 @@ class TsPrinter {
253
248
  return concat([
254
249
  this.emit(node.name),
255
250
  ": ",
256
- this.emit(node.initializer),
251
+ this.expressionForDisallowedComma(node.initializer),
257
252
  ]);
258
253
  case "ShorthandPropertyAssignment":
259
254
  return concat([
260
255
  this.emit(node.name),
261
256
  node.objectAssignmentInitializer
262
- ? concat([" = ", this.emit(node.objectAssignmentInitializer)])
257
+ ? concat([
258
+ " = ",
259
+ this.expressionForDisallowedComma(node.objectAssignmentInitializer),
260
+ ])
263
261
  : "",
264
262
  ]);
265
263
  case "SpreadAssignment":
266
- return concat(["...", this.emit(node.expression)]);
264
+ return concat([
265
+ "...",
266
+ this.expressionForDisallowedComma(node.expression),
267
+ ]);
267
268
  case "PropertyAccessExpression":
268
- return concat([this.emit(node.expression), ".", this.emit(node.name)]);
269
+ return concat([
270
+ this.leftSideExpression(node.expression),
271
+ ".",
272
+ this.emit(node.name),
273
+ ]);
269
274
  case "ElementAccessExpression":
270
275
  return concat([
271
- this.emit(node.expression),
276
+ this.leftSideExpression(node.expression),
272
277
  "[",
273
- this.emit(node.argumentExpression),
278
+ this.expressionForDisallowedComma(node.argumentExpression),
274
279
  "]",
275
280
  ]);
276
281
  case "CallExpression":
277
282
  return concat([
278
- this.emit(node.expression),
283
+ this.leftSideExpression(node.expression),
279
284
  this.typeArguments(node.typeArguments),
280
- this.params(node.arguments),
285
+ this.args(node.arguments),
281
286
  ]);
282
287
  case "NewExpression":
283
288
  return concat([
284
289
  "new ",
285
- this.emit(node.expression),
290
+ this.newExpressionTarget(node.expression),
286
291
  this.typeArguments(node.typeArguments),
287
- this.params(node.arguments ?? []),
292
+ this.args(node.arguments ?? []),
288
293
  ]);
289
294
  case "ParenthesizedExpression":
290
295
  return concat(["(", this.emit(node.expression), ")"]);
291
296
  case "BinaryExpression":
292
297
  return group(concat([
293
- this.emit(node.left),
298
+ this.binaryOperand(node.operator, node.left, true),
294
299
  " ",
295
300
  node.operator,
296
- indent(concat([line, this.emit(node.right)])),
301
+ indent(concat([
302
+ line,
303
+ this.binaryOperand(node.operator, node.right, false, node.left),
304
+ ])),
297
305
  ]));
298
306
  case "PrefixUnaryExpression":
299
- return concat([node.operator, this.emit(node.operand)]);
307
+ return concat([
308
+ node.operator,
309
+ this.prefixUnaryOperand(node.operand, node.operator),
310
+ ]);
300
311
  case "PostfixUnaryExpression":
301
- return concat([this.emit(node.operand), node.operator]);
312
+ return concat([this.postfixUnaryOperand(node.operand), node.operator]);
302
313
  case "ConditionalExpression":
303
314
  return group(concat([
304
- this.emit(node.condition),
315
+ this.conditionalCondition(node.condition),
305
316
  indent(concat([
306
317
  line,
307
318
  "? ",
308
- this.emit(node.whenTrue),
319
+ this.conditionalBranch(node.whenTrue),
309
320
  line,
310
321
  ": ",
311
- this.emit(node.whenFalse),
322
+ this.conditionalBranch(node.whenFalse),
312
323
  ])),
313
324
  ]));
314
325
  case "ArrowFunction":
@@ -318,7 +329,7 @@ class TsPrinter {
318
329
  this.params(node.parameters),
319
330
  this.optType(node.type),
320
331
  " => ",
321
- this.emit(node.body),
332
+ this.arrowFunctionBody(node.body),
322
333
  ]);
323
334
  case "FunctionExpression":
324
335
  return concat([
@@ -334,24 +345,27 @@ class TsPrinter {
334
345
  ]);
335
346
  case "AsExpression":
336
347
  return concat([
337
- this.emit(node.expression),
348
+ this.assertionExpressionOperand(node.expression),
338
349
  " as ",
339
350
  this.emit(node.type),
340
351
  ]);
341
352
  case "SatisfiesExpression":
342
353
  return concat([
343
- this.emit(node.expression),
354
+ this.assertionExpressionOperand(node.expression),
344
355
  " satisfies ",
345
356
  this.emit(node.type),
346
357
  ]);
347
358
  case "NonNullExpression":
348
- return concat([this.emit(node.expression), "!"]);
359
+ return concat([this.leftSideExpression(node.expression), "!"]);
349
360
  case "SpreadElement":
350
- return concat(["...", this.emit(node.expression)]);
361
+ return concat([
362
+ "...",
363
+ this.expressionForDisallowedComma(node.expression),
364
+ ]);
351
365
  case "AwaitExpression":
352
- return concat(["await ", this.emit(node.expression)]);
366
+ return concat(["await ", this.prefixUnaryOperand(node.expression)]);
353
367
  case "TypeOfExpression":
354
- return concat(["typeof ", this.emit(node.expression)]);
368
+ return concat(["typeof ", this.prefixUnaryOperand(node.expression)]);
355
369
  /* types */
356
370
  case "KeywordTypeNode":
357
371
  return node.keyword;
@@ -363,9 +377,9 @@ class TsPrinter {
363
377
  case "ArrayTypeNode":
364
378
  return concat([this.postfixTypeOperand(node.elementType), "[]"]);
365
379
  case "UnionTypeNode":
366
- return this.binaryType("|", node.types.map((t) => this.emit(t)));
380
+ return this.binaryType("|", node.types);
367
381
  case "IntersectionTypeNode":
368
- return this.binaryType("&", node.types.map((t) => this.emit(t)));
382
+ return this.binaryType("&", node.types);
369
383
  case "LiteralTypeNode":
370
384
  return this.emit(node.literal);
371
385
  case "TypeLiteralNode":
@@ -384,7 +398,11 @@ class TsPrinter {
384
398
  case "ParenthesizedTypeNode":
385
399
  return concat(["(", this.emit(node.type), ")"]);
386
400
  case "TypeOperatorNode":
387
- return concat([node.operator, " ", this.emit(node.type)]);
401
+ return concat([
402
+ node.operator,
403
+ " ",
404
+ this.typeOperatorOperand(node.type, node.operator),
405
+ ]);
388
406
  case "IndexedAccessTypeNode":
389
407
  return concat([
390
408
  this.postfixTypeOperand(node.objectType),
@@ -440,7 +458,12 @@ class TsPrinter {
440
458
  this.emit(node.name),
441
459
  node.questionToken ? "?" : "",
442
460
  this.optType(node.type),
443
- node.initializer ? concat([" = ", this.emit(node.initializer)]) : "",
461
+ node.initializer
462
+ ? concat([
463
+ " = ",
464
+ this.expressionForDisallowedComma(node.initializer),
465
+ ])
466
+ : "",
444
467
  ]);
445
468
  case "HeritageClause":
446
469
  return concat([
@@ -472,10 +495,18 @@ class TsPrinter {
472
495
  this.emit(node.name),
473
496
  node.exclamationToken ? "!" : "",
474
497
  this.optType(node.type),
475
- node.initializer ? concat([" = ", this.emit(node.initializer)]) : "",
498
+ node.initializer
499
+ ? concat([
500
+ " = ",
501
+ this.expressionForDisallowedComma(node.initializer),
502
+ ])
503
+ : "",
476
504
  ]);
477
505
  case "ExpressionStatement":
478
- return concat([this.emit(node.expression), ";"]);
506
+ return concat([
507
+ this.expressionStatementExpression(node.expression),
508
+ ";",
509
+ ]);
479
510
  case "ReturnStatement":
480
511
  return node.expression
481
512
  ? concat(["return ", this.emit(node.expression), ";"])
@@ -525,7 +556,12 @@ class TsPrinter {
525
556
  ? this.emit(node.questionOrExclamationToken)
526
557
  : "",
527
558
  this.optType(node.type),
528
- node.initializer ? concat([" = ", this.emit(node.initializer)]) : "",
559
+ node.initializer
560
+ ? concat([
561
+ " = ",
562
+ this.expressionForDisallowedComma(node.initializer),
563
+ ])
564
+ : "",
529
565
  ";",
530
566
  ]);
531
567
  case "MethodDeclaration":
@@ -605,7 +641,12 @@ class TsPrinter {
605
641
  case "EnumMember":
606
642
  return concat([
607
643
  this.emit(node.name),
608
- node.initializer ? concat([" = ", this.emit(node.initializer)]) : "",
644
+ node.initializer
645
+ ? concat([
646
+ " = ",
647
+ this.expressionForDisallowedComma(node.initializer),
648
+ ])
649
+ : "",
609
650
  ]);
610
651
  /* imports & exports */
611
652
  case "ImportDeclaration":
@@ -663,7 +704,7 @@ class TsPrinter {
663
704
  return concat([
664
705
  this.modifiers(node.modifiers, false),
665
706
  node.isExportEquals ? "export = " : "export default ",
666
- this.emit(node.expression),
707
+ this.exportAssignmentExpression(node.expression, node.isExportEquals === true),
667
708
  ";",
668
709
  ]);
669
710
  /* source file */
@@ -849,9 +890,9 @@ class TsPrinter {
849
890
  ]);
850
891
  case "ConditionalTypeNode":
851
892
  return concat([
852
- this.emit(node.checkType),
893
+ this.conditionalTypeCheckOperand(node.checkType),
853
894
  " extends ",
854
- this.emit(node.extendsType),
895
+ this.conditionalTypeExtendsOperand(node.extendsType),
855
896
  " ? ",
856
897
  this.emit(node.trueType),
857
898
  " : ",
@@ -902,9 +943,9 @@ class TsPrinter {
902
943
  this.emit(node.type),
903
944
  ]);
904
945
  case "OptionalTypeNode":
905
- return concat([this.emit(node.type), "?"]);
946
+ return concat([this.postfixTypeOperand(node.type), "?"]);
906
947
  case "RestTypeNode":
907
- return concat(["...", this.emit(node.type)]);
948
+ return concat(["...", this.postfixTypeOperand(node.type)]);
908
949
  case "ImportTypeNode":
909
950
  return concat([
910
951
  node.isTypeOf ? "typeof " : "",
@@ -943,10 +984,13 @@ class TsPrinter {
943
984
  concat(node.templateSpans.map((s) => this.emit(s))),
944
985
  ]);
945
986
  case "TemplateSpan":
946
- return concat([this.emit(node.expression), this.emit(node.literal)]);
987
+ return concat([
988
+ this.expressionForDisallowedComma(node.expression),
989
+ this.emit(node.literal),
990
+ ]);
947
991
  case "TaggedTemplateExpression":
948
992
  return concat([
949
- this.emit(node.tag),
993
+ this.leftSideExpression(node.tag),
950
994
  this.typeArguments(node.typeArguments),
951
995
  this.emit(node.template),
952
996
  ]);
@@ -954,12 +998,14 @@ class TsPrinter {
954
998
  return concat([
955
999
  "yield",
956
1000
  node.asteriskToken ? "*" : "",
957
- node.expression ? concat([" ", this.emit(node.expression)]) : "",
1001
+ node.expression
1002
+ ? concat([" ", this.expressionForDisallowedComma(node.expression)])
1003
+ : "",
958
1004
  ]);
959
1005
  case "DeleteExpression":
960
- return concat(["delete ", this.emit(node.expression)]);
1006
+ return concat(["delete ", this.prefixUnaryOperand(node.expression)]);
961
1007
  case "VoidExpression":
962
- return concat(["void ", this.emit(node.expression)]);
1008
+ return concat(["void ", this.prefixUnaryOperand(node.expression)]);
963
1009
  case "RegularExpressionLiteral":
964
1010
  return node.text;
965
1011
  case "ClassExpression":
@@ -977,7 +1023,11 @@ class TsPrinter {
977
1023
  case "CommaListExpression":
978
1024
  return join(", ", node.elements.map((e) => this.emit(e)));
979
1025
  case "ComputedPropertyName":
980
- return concat(["[", this.emit(node.expression), "]"]);
1026
+ return concat([
1027
+ "[",
1028
+ this.expressionForDisallowedComma(node.expression),
1029
+ "]",
1030
+ ]);
981
1031
  case "OmittedExpression":
982
1032
  return "";
983
1033
  case "BindingElement":
@@ -985,7 +1035,12 @@ class TsPrinter {
985
1035
  node.dotDotDotToken ? "..." : "",
986
1036
  node.propertyName ? concat([this.emit(node.propertyName), ": "]) : "",
987
1037
  this.emit(node.name),
988
- node.initializer ? concat([" = ", this.emit(node.initializer)]) : "",
1038
+ node.initializer
1039
+ ? concat([
1040
+ " = ",
1041
+ this.expressionForDisallowedComma(node.initializer),
1042
+ ])
1043
+ : "",
989
1044
  ]);
990
1045
  case "ObjectBindingPattern":
991
1046
  return this.delim("{", node.elements.map((e) => this.emit(e)), "}", { space: true, trailingComma: true });
@@ -996,31 +1051,31 @@ class TsPrinter {
996
1051
  "<",
997
1052
  this.emit(node.type),
998
1053
  ">",
999
- this.emit(node.expression),
1054
+ this.prefixUnaryOperand(node.expression),
1000
1055
  ]);
1001
1056
  case "PropertyAccessChain":
1002
1057
  return concat([
1003
- this.emit(node.expression),
1058
+ this.leftSideExpression(node.expression),
1004
1059
  node.questionDotToken ? "?." : ".",
1005
1060
  this.emit(node.name),
1006
1061
  ]);
1007
1062
  case "ElementAccessChain":
1008
1063
  return concat([
1009
- this.emit(node.expression),
1064
+ this.leftSideExpression(node.expression),
1010
1065
  node.questionDotToken ? "?." : "",
1011
1066
  "[",
1012
- this.emit(node.argumentExpression),
1067
+ this.expressionForDisallowedComma(node.argumentExpression),
1013
1068
  "]",
1014
1069
  ]);
1015
1070
  case "CallChain":
1016
1071
  return concat([
1017
- this.emit(node.expression),
1072
+ this.leftSideExpression(node.expression),
1018
1073
  node.questionDotToken ? "?." : "",
1019
1074
  this.typeArguments(node.typeArguments),
1020
- this.params(node.arguments),
1075
+ this.args(node.arguments),
1021
1076
  ]);
1022
1077
  case "NonNullChain":
1023
- return concat([this.emit(node.expression), "!"]);
1078
+ return concat([this.leftSideExpression(node.expression), "!"]);
1024
1079
  /* jsx */
1025
1080
  case "JsxElement":
1026
1081
  return group(concat([
@@ -1306,15 +1361,382 @@ class TsPrinter {
1306
1361
  * parenthesizing the lower-precedence type forms that would otherwise
1307
1362
  * re-associate — matching the legacy printer's parenthesizer rules.
1308
1363
  */
1309
- postfixTypeOperand(type) {
1310
- const parenthesize = type.kind === "UnionTypeNode" ||
1364
+ parenthesizedExpression(expression) {
1365
+ return expression.kind === "ParenthesizedExpression"
1366
+ ? this.emit(expression)
1367
+ : concat(["(", this.emit(expression), ")"]);
1368
+ }
1369
+ expressionForDisallowedComma(expression) {
1370
+ return this.expressionPrecedence(expression) > ExpressionPrecedence.Comma
1371
+ ? this.emit(expression)
1372
+ : this.parenthesizedExpression(expression);
1373
+ }
1374
+ leftSideExpression(expression) {
1375
+ return this.isLeftHandSideExpression(expression)
1376
+ ? this.emit(expression)
1377
+ : this.parenthesizedExpression(expression);
1378
+ }
1379
+ newExpressionTarget(expression) {
1380
+ return expression.kind !== "CallExpression" &&
1381
+ expression.kind !== "CallChain" &&
1382
+ (expression.kind !== "NewExpression" ||
1383
+ expression.arguments !== undefined) &&
1384
+ this.isLeftHandSideExpression(expression)
1385
+ ? this.emit(expression)
1386
+ : this.parenthesizedExpression(expression);
1387
+ }
1388
+ prefixUnaryOperand(operand, operator) {
1389
+ const body = this.isUnaryExpression(operand)
1390
+ ? this.emit(operand)
1391
+ : this.parenthesizedExpression(operand);
1392
+ return this.needsPrefixUnaryGap(operator, operand)
1393
+ ? concat([" ", body])
1394
+ : body;
1395
+ }
1396
+ postfixUnaryOperand(operand) {
1397
+ return this.isLeftHandSideExpression(operand)
1398
+ ? this.emit(operand)
1399
+ : this.parenthesizedExpression(operand);
1400
+ }
1401
+ conditionalCondition(condition) {
1402
+ return this.expressionPrecedence(condition) >
1403
+ ExpressionPrecedence.Conditional
1404
+ ? this.emit(condition)
1405
+ : this.parenthesizedExpression(condition);
1406
+ }
1407
+ conditionalBranch(branch) {
1408
+ return this.expressionForDisallowedComma(branch);
1409
+ }
1410
+ arrowFunctionBody(body) {
1411
+ return body.kind === "Block"
1412
+ ? this.emit(body)
1413
+ : this.expressionNeedsConciseBodyParentheses(body)
1414
+ ? this.parenthesizedExpression(body)
1415
+ : this.emit(body);
1416
+ }
1417
+ expressionStatementExpression(expression) {
1418
+ return this.expressionNeedsStatementParentheses(expression)
1419
+ ? this.parenthesizedExpression(expression)
1420
+ : this.emit(expression);
1421
+ }
1422
+ exportAssignmentExpression(expression, isExportEquals) {
1423
+ return isExportEquals
1424
+ ? this.expressionForDisallowedComma(expression)
1425
+ : this.expressionNeedsExportDefaultParentheses(expression)
1426
+ ? this.parenthesizedExpression(expression)
1427
+ : this.emit(expression);
1428
+ }
1429
+ assertionExpressionOperand(expression) {
1430
+ return this.expressionPrecedence(expression) >=
1431
+ ExpressionPrecedence.Relational
1432
+ ? this.expressionForDisallowedComma(expression)
1433
+ : this.parenthesizedExpression(expression);
1434
+ }
1435
+ binaryOperand(operator, operand, isLeftSide, leftOperand) {
1436
+ return this.binaryOperandNeedsParentheses(operator, operand, isLeftSide, leftOperand)
1437
+ ? this.parenthesizedExpression(operand)
1438
+ : this.emit(operand);
1439
+ }
1440
+ binaryOperandNeedsParentheses(operator, operand, isLeftSide, leftOperand) {
1441
+ if (operand.kind === "ParenthesizedExpression")
1442
+ return false;
1443
+ if (operator === SyntaxKind.AsteriskAsteriskToken &&
1444
+ isLeftSide &&
1445
+ this.expressionPrecedence(operand) === ExpressionPrecedence.Unary)
1446
+ return true;
1447
+ if (operand.kind === "BinaryExpression" &&
1448
+ this.mixingBinaryOperatorsRequiresParentheses(operator, operand.operator))
1449
+ return true;
1450
+ const operatorPrecedence = this.binaryOperatorPrecedence(operator);
1451
+ const operandPrecedence = this.expressionPrecedence(operand);
1452
+ if (!isLeftSide &&
1453
+ operand.kind === "ArrowFunction" &&
1454
+ operatorPrecedence > ExpressionPrecedence.Assignment)
1455
+ return true;
1456
+ if (operandPrecedence < operatorPrecedence)
1457
+ return true;
1458
+ if (operandPrecedence > operatorPrecedence)
1459
+ return false;
1460
+ if (isLeftSide)
1461
+ return this.binaryOperatorAssociativity(operator) === Associativity.Right;
1462
+ if (operand.kind === "BinaryExpression" && operand.operator === operator) {
1463
+ if (this.operatorHasAssociativeProperty(operator))
1464
+ return false;
1465
+ if (operator === SyntaxKind.PlusToken &&
1466
+ leftOperand !== undefined &&
1467
+ this.literalKindOfBinaryPlusOperand(leftOperand) !== undefined &&
1468
+ this.literalKindOfBinaryPlusOperand(leftOperand) ===
1469
+ this.literalKindOfBinaryPlusOperand(operand))
1470
+ return false;
1471
+ }
1472
+ return this.expressionAssociativity(operand) === Associativity.Left;
1473
+ }
1474
+ expressionPrecedence(expression) {
1475
+ switch (expression.kind) {
1476
+ case "CommaListExpression":
1477
+ return ExpressionPrecedence.Comma;
1478
+ case "YieldExpression":
1479
+ return ExpressionPrecedence.Yield;
1480
+ case "ConditionalExpression":
1481
+ return ExpressionPrecedence.Conditional;
1482
+ case "BinaryExpression":
1483
+ return this.binaryOperatorPrecedence(expression.operator);
1484
+ case "AsExpression":
1485
+ case "SatisfiesExpression":
1486
+ return ExpressionPrecedence.Relational;
1487
+ case "TypeAssertion":
1488
+ case "PrefixUnaryExpression":
1489
+ case "TypeOfExpression":
1490
+ case "VoidExpression":
1491
+ case "DeleteExpression":
1492
+ case "AwaitExpression":
1493
+ case "NonNullExpression":
1494
+ case "NonNullChain":
1495
+ return ExpressionPrecedence.Unary;
1496
+ case "PostfixUnaryExpression":
1497
+ return ExpressionPrecedence.Update;
1498
+ case "CallExpression":
1499
+ case "CallChain":
1500
+ return ExpressionPrecedence.LeftHandSide;
1501
+ case "NewExpression":
1502
+ case "TaggedTemplateExpression":
1503
+ case "PropertyAccessExpression":
1504
+ case "PropertyAccessChain":
1505
+ case "ElementAccessExpression":
1506
+ case "ElementAccessChain":
1507
+ case "MetaProperty":
1508
+ return ExpressionPrecedence.Member;
1509
+ default:
1510
+ return ExpressionPrecedence.Primary;
1511
+ }
1512
+ }
1513
+ expressionAssociativity(expression) {
1514
+ switch (expression.kind) {
1515
+ case "NewExpression":
1516
+ return expression.arguments === undefined
1517
+ ? Associativity.Right
1518
+ : Associativity.Left;
1519
+ case "PrefixUnaryExpression":
1520
+ case "TypeOfExpression":
1521
+ case "VoidExpression":
1522
+ case "DeleteExpression":
1523
+ case "AwaitExpression":
1524
+ case "ConditionalExpression":
1525
+ case "YieldExpression":
1526
+ return Associativity.Right;
1527
+ case "BinaryExpression":
1528
+ return this.binaryOperatorAssociativity(expression.operator);
1529
+ default:
1530
+ return Associativity.Left;
1531
+ }
1532
+ }
1533
+ binaryOperatorPrecedence(operator) {
1534
+ switch (operator) {
1535
+ case SyntaxKind.CommaToken:
1536
+ return ExpressionPrecedence.Comma;
1537
+ case SyntaxKind.EqualsToken:
1538
+ case SyntaxKind.PlusEqualsToken:
1539
+ case SyntaxKind.MinusEqualsToken:
1540
+ case SyntaxKind.AsteriskEqualsToken:
1541
+ case SyntaxKind.SlashEqualsToken:
1542
+ case SyntaxKind.QuestionQuestionEqualsToken:
1543
+ return ExpressionPrecedence.Assignment;
1544
+ case SyntaxKind.QuestionQuestionToken:
1545
+ case SyntaxKind.BarBarToken:
1546
+ return ExpressionPrecedence.LogicalOR;
1547
+ case SyntaxKind.AmpersandAmpersandToken:
1548
+ return ExpressionPrecedence.LogicalAND;
1549
+ case SyntaxKind.BarToken:
1550
+ return ExpressionPrecedence.BitwiseOR;
1551
+ case SyntaxKind.CaretToken:
1552
+ return ExpressionPrecedence.BitwiseXOR;
1553
+ case SyntaxKind.AmpersandToken:
1554
+ return ExpressionPrecedence.BitwiseAND;
1555
+ case SyntaxKind.EqualsEqualsToken:
1556
+ case SyntaxKind.ExclamationEqualsToken:
1557
+ case SyntaxKind.EqualsEqualsEqualsToken:
1558
+ case SyntaxKind.ExclamationEqualsEqualsToken:
1559
+ return ExpressionPrecedence.Equality;
1560
+ case SyntaxKind.LessThanToken:
1561
+ case SyntaxKind.LessThanEqualsToken:
1562
+ case SyntaxKind.GreaterThanToken:
1563
+ case SyntaxKind.GreaterThanEqualsToken:
1564
+ case SyntaxKind.InstanceOfKeyword:
1565
+ case SyntaxKind.InKeyword:
1566
+ case SyntaxKind.AsKeyword:
1567
+ case SyntaxKind.SatisfiesKeyword:
1568
+ return ExpressionPrecedence.Relational;
1569
+ case SyntaxKind.LessThanLessThanToken:
1570
+ case SyntaxKind.GreaterThanGreaterThanToken:
1571
+ case SyntaxKind.GreaterThanGreaterThanGreaterThanToken:
1572
+ return ExpressionPrecedence.Shift;
1573
+ case SyntaxKind.PlusToken:
1574
+ case SyntaxKind.MinusToken:
1575
+ return ExpressionPrecedence.Additive;
1576
+ case SyntaxKind.AsteriskToken:
1577
+ case SyntaxKind.SlashToken:
1578
+ case SyntaxKind.PercentToken:
1579
+ return ExpressionPrecedence.Multiplicative;
1580
+ case SyntaxKind.AsteriskAsteriskToken:
1581
+ return ExpressionPrecedence.Exponentiation;
1582
+ default:
1583
+ return ExpressionPrecedence.Invalid;
1584
+ }
1585
+ }
1586
+ binaryOperatorAssociativity(operator) {
1587
+ switch (operator) {
1588
+ case SyntaxKind.AsteriskAsteriskToken:
1589
+ case SyntaxKind.EqualsToken:
1590
+ case SyntaxKind.PlusEqualsToken:
1591
+ case SyntaxKind.MinusEqualsToken:
1592
+ case SyntaxKind.AsteriskEqualsToken:
1593
+ case SyntaxKind.SlashEqualsToken:
1594
+ case SyntaxKind.QuestionQuestionEqualsToken:
1595
+ return Associativity.Right;
1596
+ default:
1597
+ return Associativity.Left;
1598
+ }
1599
+ }
1600
+ mixingBinaryOperatorsRequiresParentheses(left, right) {
1601
+ return ((left === SyntaxKind.QuestionQuestionToken &&
1602
+ (right === SyntaxKind.AmpersandAmpersandToken ||
1603
+ right === SyntaxKind.BarBarToken)) ||
1604
+ (right === SyntaxKind.QuestionQuestionToken &&
1605
+ (left === SyntaxKind.AmpersandAmpersandToken ||
1606
+ left === SyntaxKind.BarBarToken)));
1607
+ }
1608
+ operatorHasAssociativeProperty(operator) {
1609
+ return (operator === SyntaxKind.AsteriskToken ||
1610
+ operator === SyntaxKind.BarToken ||
1611
+ operator === SyntaxKind.AmpersandToken ||
1612
+ operator === SyntaxKind.CaretToken ||
1613
+ operator === SyntaxKind.CommaToken);
1614
+ }
1615
+ literalKindOfBinaryPlusOperand(expression) {
1616
+ switch (expression.kind) {
1617
+ case "StringLiteral":
1618
+ case "NumericLiteral":
1619
+ case "BigIntLiteral":
1620
+ return expression.kind;
1621
+ case "BinaryExpression": {
1622
+ if (expression.operator !== SyntaxKind.PlusToken)
1623
+ return undefined;
1624
+ const left = this.literalKindOfBinaryPlusOperand(expression.left);
1625
+ return left !== undefined &&
1626
+ left === this.literalKindOfBinaryPlusOperand(expression.right)
1627
+ ? left
1628
+ : undefined;
1629
+ }
1630
+ default:
1631
+ return undefined;
1632
+ }
1633
+ }
1634
+ isUnaryExpression(expression) {
1635
+ return this.expressionPrecedence(expression) >= ExpressionPrecedence.Unary;
1636
+ }
1637
+ isLeftHandSideExpression(expression) {
1638
+ switch (expression.kind) {
1639
+ case "ArrowFunction":
1640
+ case "ClassExpression":
1641
+ case "FunctionExpression":
1642
+ case "NumericLiteral":
1643
+ case "ObjectLiteralExpression":
1644
+ return false;
1645
+ }
1646
+ return (this.expressionPrecedence(expression) >=
1647
+ ExpressionPrecedence.LeftHandSide ||
1648
+ expression.kind === "NonNullExpression" ||
1649
+ expression.kind === "NonNullChain");
1650
+ }
1651
+ expressionNeedsStatementParentheses(expression) {
1652
+ const leftmost = this.leftmostExpression(expression);
1653
+ return (leftmost.kind === "FunctionExpression" ||
1654
+ leftmost.kind === "ObjectLiteralExpression");
1655
+ }
1656
+ expressionNeedsConciseBodyParentheses(expression) {
1657
+ return (this.expressionPrecedence(expression) <= ExpressionPrecedence.Comma ||
1658
+ this.leftmostExpression(expression).kind === "ObjectLiteralExpression");
1659
+ }
1660
+ expressionNeedsExportDefaultParentheses(expression) {
1661
+ const leftmost = this.leftmostExpression(expression);
1662
+ return (this.expressionPrecedence(expression) <= ExpressionPrecedence.Comma ||
1663
+ leftmost.kind === "ClassExpression" ||
1664
+ leftmost.kind === "FunctionExpression");
1665
+ }
1666
+ leftmostExpression(expression) {
1667
+ switch (expression.kind) {
1668
+ case "AsExpression":
1669
+ case "CallExpression":
1670
+ case "CallChain":
1671
+ case "ElementAccessExpression":
1672
+ case "ElementAccessChain":
1673
+ case "NonNullExpression":
1674
+ case "NonNullChain":
1675
+ case "PropertyAccessExpression":
1676
+ case "PropertyAccessChain":
1677
+ case "SatisfiesExpression":
1678
+ return this.leftmostExpression(expression.expression);
1679
+ case "BinaryExpression":
1680
+ return this.leftmostExpression(expression.left);
1681
+ case "ConditionalExpression":
1682
+ return this.leftmostExpression(expression.condition);
1683
+ case "TaggedTemplateExpression":
1684
+ return this.leftmostExpression(expression.tag);
1685
+ default:
1686
+ return expression;
1687
+ }
1688
+ }
1689
+ needsPrefixUnaryGap(operator, operand) {
1690
+ if (operator === undefined || operand.kind !== "PrefixUnaryExpression")
1691
+ return false;
1692
+ return ((operator === SyntaxKind.PlusToken &&
1693
+ (operand.operator === SyntaxKind.PlusToken ||
1694
+ operand.operator === SyntaxKind.PlusPlusToken)) ||
1695
+ (operator === SyntaxKind.MinusToken &&
1696
+ (operand.operator === SyntaxKind.MinusToken ||
1697
+ operand.operator === SyntaxKind.MinusMinusToken)));
1698
+ }
1699
+ parenthesizedType(type) {
1700
+ return type.kind === "ParenthesizedTypeNode"
1701
+ ? this.emit(type)
1702
+ : concat(["(", this.emit(type), ")"]);
1703
+ }
1704
+ conditionalTypeCheckOperand(type) {
1705
+ return type.kind === "FunctionTypeNode" ||
1706
+ type.kind === "ConstructorTypeNode" ||
1707
+ type.kind === "ConditionalTypeNode"
1708
+ ? this.parenthesizedType(type)
1709
+ : this.emit(type);
1710
+ }
1711
+ conditionalTypeExtendsOperand(type) {
1712
+ return type.kind === "ConditionalTypeNode"
1713
+ ? this.parenthesizedType(type)
1714
+ : this.emit(type);
1715
+ }
1716
+ typeOperatorOperand(type, operator) {
1717
+ return this.typeOperatorOperandNeedsParentheses(type, operator)
1718
+ ? this.parenthesizedType(type)
1719
+ : this.emit(type);
1720
+ }
1721
+ typeOperatorOperandNeedsParentheses(type, operator) {
1722
+ return (type.kind === "UnionTypeNode" ||
1311
1723
  type.kind === "IntersectionTypeNode" ||
1312
1724
  type.kind === "FunctionTypeNode" ||
1313
1725
  type.kind === "ConstructorTypeNode" ||
1314
1726
  type.kind === "ConditionalTypeNode" ||
1315
- type.kind === "InferTypeNode" ||
1316
- type.kind === "TypeOperatorNode";
1317
- return parenthesize ? concat(["(", this.emit(type), ")"]) : this.emit(type);
1727
+ (operator === SyntaxKind.ReadonlyKeyword &&
1728
+ type.kind === "TypeOperatorNode"));
1729
+ }
1730
+ postfixTypeOperand(type) {
1731
+ return this.postfixTypeOperandNeedsParentheses(type)
1732
+ ? this.parenthesizedType(type)
1733
+ : this.emit(type);
1734
+ }
1735
+ postfixTypeOperandNeedsParentheses(type) {
1736
+ return (type.kind === "InferTypeNode" ||
1737
+ type.kind === "TypeOperatorNode" ||
1738
+ type.kind === "TypeQueryNode" ||
1739
+ this.typeOperatorOperandNeedsParentheses(type));
1318
1740
  }
1319
1741
  /** Render a JSDoc tag's trailing comment, prefixed with a space when present. */
1320
1742
  jsDocComment(comment) {
@@ -1327,7 +1749,8 @@ class TsPrinter {
1327
1749
  : "";
1328
1750
  }
1329
1751
  /** Width-aware `|` / `&` type list with leading-operator breaks. */
1330
- binaryType(operator, parts) {
1752
+ binaryType(operator, types) {
1753
+ const parts = this.flattenBinaryTypes(operator, types).map((type) => this.binaryTypeOperand(operator, type));
1331
1754
  if (parts.length === 1)
1332
1755
  return parts[0];
1333
1756
  return group(indent(concat([
@@ -1335,10 +1758,70 @@ class TsPrinter {
1335
1758
  join(concat([line, operator, " "]), parts),
1336
1759
  ])));
1337
1760
  }
1761
+ flattenBinaryTypes(operator, types) {
1762
+ const flattened = [];
1763
+ for (const type of types)
1764
+ if (operator === "|" && type.kind === "UnionTypeNode")
1765
+ flattened.push(...this.flattenBinaryTypes(operator, type.types));
1766
+ else if (operator === "&" && type.kind === "IntersectionTypeNode")
1767
+ flattened.push(...this.flattenBinaryTypes(operator, type.types));
1768
+ else
1769
+ flattened.push(type);
1770
+ return flattened;
1771
+ }
1772
+ binaryTypeOperand(operator, type) {
1773
+ return this.binaryTypeOperandNeedsParentheses(operator, type)
1774
+ ? this.parenthesizedType(type)
1775
+ : this.emit(type);
1776
+ }
1777
+ binaryTypeOperandNeedsParentheses(operator, type) {
1778
+ return (type.kind === "FunctionTypeNode" ||
1779
+ type.kind === "ConstructorTypeNode" ||
1780
+ type.kind === "ConditionalTypeNode" ||
1781
+ type.kind === "UnionTypeNode" ||
1782
+ (operator === "|" && type.kind === "IntersectionTypeNode"));
1783
+ }
1338
1784
  unsupported(node) {
1339
1785
  throw new Error(`@ttsc/factory: TsPrinter cannot print node of kind "${node.kind}".`);
1340
1786
  }
1341
1787
  }
1788
+ const escapeString = (text, singleQuote) => {
1789
+ const escaped = text
1790
+ .replace(/\\/g, "\\\\")
1791
+ .replace(/\n/g, "\\n")
1792
+ .replace(/\r/g, "\\r")
1793
+ .replace(/\t/g, "\\t");
1794
+ return singleQuote === true
1795
+ ? `'${escaped.replace(/'/g, "\\'")}'`
1796
+ : `"${escaped.replace(/"/g, '\\"')}"`;
1797
+ };
1798
+ const ExpressionPrecedence = {
1799
+ Comma: 0,
1800
+ Yield: 2,
1801
+ Assignment: 3,
1802
+ Conditional: 4,
1803
+ LogicalOR: 5,
1804
+ LogicalAND: 6,
1805
+ BitwiseOR: 7,
1806
+ BitwiseXOR: 8,
1807
+ BitwiseAND: 9,
1808
+ Equality: 10,
1809
+ Relational: 11,
1810
+ Shift: 12,
1811
+ Additive: 13,
1812
+ Multiplicative: 14,
1813
+ Exponentiation: 15,
1814
+ Unary: 16,
1815
+ Update: 17,
1816
+ LeftHandSide: 18,
1817
+ Member: 19,
1818
+ Primary: 20,
1819
+ Invalid: -1,
1820
+ };
1821
+ const Associativity = {
1822
+ Left: "left",
1823
+ Right: "right",
1824
+ };
1342
1825
 
1343
1826
  export { TsPrinter };
1344
1827
  //# sourceMappingURL=TsPrinter.mjs.map