@ttsc/factory 0.15.10 → 0.15.11

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.js CHANGED
@@ -4,23 +4,13 @@ exports.TsPrinter = void 0;
4
4
  const comments_1 = require("./comments");
5
5
  const doc_1 = require("./internal/doc");
6
6
  const syntax_1 = require("./syntax");
7
- const escapeString = (text, singleQuote) => {
8
- const escaped = text
9
- .replace(/\\/g, "\\\\")
10
- .replace(/\n/g, "\\n")
11
- .replace(/\r/g, "\\r")
12
- .replace(/\t/g, "\\t");
13
- return singleQuote === true
14
- ? `'${escaped.replace(/'/g, "\\'")}'`
15
- : `"${escaped.replace(/"/g, '\\"')}"`;
16
- };
17
7
  /**
18
8
  * Printer turning {@link factory} produced AST nodes into TypeScript source
19
9
  * text.
20
10
  *
21
11
  * The printer is a width-aware pretty-printer: it builds a Prettier-style
22
12
  * document for the {@link Node} discriminated union and lays it out against
23
- * {@link TsPrinterOptions.printWidth}. Lists (arguments, parameters, generic
13
+ * {@link TsPrinter.IProps.printWidth}. Lists (arguments, parameters, generic
24
14
  * arguments, array / object members, ...) print on one line when they fit and
25
15
  * break onto indented lines — with trailing commas — when they do not. Every
26
16
  * `node.kind` narrows to its concrete type, so the walk is fully type-checked;
@@ -149,6 +139,11 @@ class TsPrinter {
149
139
  trailingComma: true,
150
140
  });
151
141
  }
142
+ args(args) {
143
+ return this.delim("(", args.map((a) => this.expressionForDisallowedComma(a)), ")", {
144
+ trailingComma: true,
145
+ });
146
+ }
152
147
  modifiers(mods, decoratorsOnNewLine) {
153
148
  if (!mods || mods.length === 0)
154
149
  return "";
@@ -233,7 +228,7 @@ class TsPrinter {
233
228
  case "Token":
234
229
  return node.token;
235
230
  case "Decorator":
236
- return (0, doc_1.concat)(["@", this.emit(node.expression)]);
231
+ return (0, doc_1.concat)(["@", this.leftSideExpression(node.expression)]);
237
232
  /* literals */
238
233
  case "StringLiteral":
239
234
  return escapeString(node.text, node.singleQuote);
@@ -243,7 +238,7 @@ class TsPrinter {
243
238
  return node.text;
244
239
  /* expressions */
245
240
  case "ArrayLiteralExpression":
246
- return this.delim("[", node.elements.map((e) => this.emit(e)), "]", { trailingComma: true, forceBreak: node.multiLine === true });
241
+ return this.delim("[", node.elements.map((e) => this.expressionForDisallowedComma(e)), "]", { trailingComma: true, forceBreak: node.multiLine === true });
247
242
  case "ObjectLiteralExpression":
248
243
  return this.delim("{", node.properties.map((p) => this.emit(p)), "}", {
249
244
  space: true,
@@ -254,62 +249,78 @@ class TsPrinter {
254
249
  return (0, doc_1.concat)([
255
250
  this.emit(node.name),
256
251
  ": ",
257
- this.emit(node.initializer),
252
+ this.expressionForDisallowedComma(node.initializer),
258
253
  ]);
259
254
  case "ShorthandPropertyAssignment":
260
255
  return (0, doc_1.concat)([
261
256
  this.emit(node.name),
262
257
  node.objectAssignmentInitializer
263
- ? (0, doc_1.concat)([" = ", this.emit(node.objectAssignmentInitializer)])
258
+ ? (0, doc_1.concat)([
259
+ " = ",
260
+ this.expressionForDisallowedComma(node.objectAssignmentInitializer),
261
+ ])
264
262
  : "",
265
263
  ]);
266
264
  case "SpreadAssignment":
267
- return (0, doc_1.concat)(["...", this.emit(node.expression)]);
265
+ return (0, doc_1.concat)([
266
+ "...",
267
+ this.expressionForDisallowedComma(node.expression),
268
+ ]);
268
269
  case "PropertyAccessExpression":
269
- return (0, doc_1.concat)([this.emit(node.expression), ".", this.emit(node.name)]);
270
+ return (0, doc_1.concat)([
271
+ this.leftSideExpression(node.expression),
272
+ ".",
273
+ this.emit(node.name),
274
+ ]);
270
275
  case "ElementAccessExpression":
271
276
  return (0, doc_1.concat)([
272
- this.emit(node.expression),
277
+ this.leftSideExpression(node.expression),
273
278
  "[",
274
- this.emit(node.argumentExpression),
279
+ this.expressionForDisallowedComma(node.argumentExpression),
275
280
  "]",
276
281
  ]);
277
282
  case "CallExpression":
278
283
  return (0, doc_1.concat)([
279
- this.emit(node.expression),
284
+ this.leftSideExpression(node.expression),
280
285
  this.typeArguments(node.typeArguments),
281
- this.params(node.arguments),
286
+ this.args(node.arguments),
282
287
  ]);
283
288
  case "NewExpression":
284
289
  return (0, doc_1.concat)([
285
290
  "new ",
286
- this.emit(node.expression),
291
+ this.newExpressionTarget(node.expression),
287
292
  this.typeArguments(node.typeArguments),
288
- this.params(node.arguments ?? []),
293
+ this.args(node.arguments ?? []),
289
294
  ]);
290
295
  case "ParenthesizedExpression":
291
296
  return (0, doc_1.concat)(["(", this.emit(node.expression), ")"]);
292
297
  case "BinaryExpression":
293
298
  return (0, doc_1.group)((0, doc_1.concat)([
294
- this.emit(node.left),
299
+ this.binaryOperand(node.operator, node.left, true),
295
300
  " ",
296
301
  node.operator,
297
- (0, doc_1.indent)((0, doc_1.concat)([doc_1.line, this.emit(node.right)])),
302
+ (0, doc_1.indent)((0, doc_1.concat)([
303
+ doc_1.line,
304
+ this.binaryOperand(node.operator, node.right, false, node.left),
305
+ ])),
298
306
  ]));
299
307
  case "PrefixUnaryExpression":
300
- return (0, doc_1.concat)([node.operator, this.emit(node.operand)]);
308
+ return (0, doc_1.concat)([
309
+ node.operator,
310
+ this.prefixUnaryOperand(node.operand, node.operator),
311
+ ]);
301
312
  case "PostfixUnaryExpression":
302
- return (0, doc_1.concat)([this.emit(node.operand), node.operator]);
313
+ return (0, doc_1.concat)([this.postfixUnaryOperand(node.operand), node.operator]);
303
314
  case "ConditionalExpression":
304
315
  return (0, doc_1.group)((0, doc_1.concat)([
305
- this.emit(node.condition),
316
+ this.conditionalCondition(node.condition),
306
317
  (0, doc_1.indent)((0, doc_1.concat)([
307
318
  doc_1.line,
308
319
  "? ",
309
- this.emit(node.whenTrue),
320
+ this.conditionalBranch(node.whenTrue),
310
321
  doc_1.line,
311
322
  ": ",
312
- this.emit(node.whenFalse),
323
+ this.conditionalBranch(node.whenFalse),
313
324
  ])),
314
325
  ]));
315
326
  case "ArrowFunction":
@@ -319,7 +330,7 @@ class TsPrinter {
319
330
  this.params(node.parameters),
320
331
  this.optType(node.type),
321
332
  " => ",
322
- this.emit(node.body),
333
+ this.arrowFunctionBody(node.body),
323
334
  ]);
324
335
  case "FunctionExpression":
325
336
  return (0, doc_1.concat)([
@@ -335,24 +346,27 @@ class TsPrinter {
335
346
  ]);
336
347
  case "AsExpression":
337
348
  return (0, doc_1.concat)([
338
- this.emit(node.expression),
349
+ this.assertionExpressionOperand(node.expression),
339
350
  " as ",
340
351
  this.emit(node.type),
341
352
  ]);
342
353
  case "SatisfiesExpression":
343
354
  return (0, doc_1.concat)([
344
- this.emit(node.expression),
355
+ this.assertionExpressionOperand(node.expression),
345
356
  " satisfies ",
346
357
  this.emit(node.type),
347
358
  ]);
348
359
  case "NonNullExpression":
349
- return (0, doc_1.concat)([this.emit(node.expression), "!"]);
360
+ return (0, doc_1.concat)([this.leftSideExpression(node.expression), "!"]);
350
361
  case "SpreadElement":
351
- return (0, doc_1.concat)(["...", this.emit(node.expression)]);
362
+ return (0, doc_1.concat)([
363
+ "...",
364
+ this.expressionForDisallowedComma(node.expression),
365
+ ]);
352
366
  case "AwaitExpression":
353
- return (0, doc_1.concat)(["await ", this.emit(node.expression)]);
367
+ return (0, doc_1.concat)(["await ", this.prefixUnaryOperand(node.expression)]);
354
368
  case "TypeOfExpression":
355
- return (0, doc_1.concat)(["typeof ", this.emit(node.expression)]);
369
+ return (0, doc_1.concat)(["typeof ", this.prefixUnaryOperand(node.expression)]);
356
370
  /* types */
357
371
  case "KeywordTypeNode":
358
372
  return node.keyword;
@@ -364,9 +378,9 @@ class TsPrinter {
364
378
  case "ArrayTypeNode":
365
379
  return (0, doc_1.concat)([this.postfixTypeOperand(node.elementType), "[]"]);
366
380
  case "UnionTypeNode":
367
- return this.binaryType("|", node.types.map((t) => this.emit(t)));
381
+ return this.binaryType("|", node.types);
368
382
  case "IntersectionTypeNode":
369
- return this.binaryType("&", node.types.map((t) => this.emit(t)));
383
+ return this.binaryType("&", node.types);
370
384
  case "LiteralTypeNode":
371
385
  return this.emit(node.literal);
372
386
  case "TypeLiteralNode":
@@ -385,7 +399,11 @@ class TsPrinter {
385
399
  case "ParenthesizedTypeNode":
386
400
  return (0, doc_1.concat)(["(", this.emit(node.type), ")"]);
387
401
  case "TypeOperatorNode":
388
- return (0, doc_1.concat)([node.operator, " ", this.emit(node.type)]);
402
+ return (0, doc_1.concat)([
403
+ node.operator,
404
+ " ",
405
+ this.typeOperatorOperand(node.type, node.operator),
406
+ ]);
389
407
  case "IndexedAccessTypeNode":
390
408
  return (0, doc_1.concat)([
391
409
  this.postfixTypeOperand(node.objectType),
@@ -441,7 +459,12 @@ class TsPrinter {
441
459
  this.emit(node.name),
442
460
  node.questionToken ? "?" : "",
443
461
  this.optType(node.type),
444
- node.initializer ? (0, doc_1.concat)([" = ", this.emit(node.initializer)]) : "",
462
+ node.initializer
463
+ ? (0, doc_1.concat)([
464
+ " = ",
465
+ this.expressionForDisallowedComma(node.initializer),
466
+ ])
467
+ : "",
445
468
  ]);
446
469
  case "HeritageClause":
447
470
  return (0, doc_1.concat)([
@@ -473,10 +496,18 @@ class TsPrinter {
473
496
  this.emit(node.name),
474
497
  node.exclamationToken ? "!" : "",
475
498
  this.optType(node.type),
476
- node.initializer ? (0, doc_1.concat)([" = ", this.emit(node.initializer)]) : "",
499
+ node.initializer
500
+ ? (0, doc_1.concat)([
501
+ " = ",
502
+ this.expressionForDisallowedComma(node.initializer),
503
+ ])
504
+ : "",
477
505
  ]);
478
506
  case "ExpressionStatement":
479
- return (0, doc_1.concat)([this.emit(node.expression), ";"]);
507
+ return (0, doc_1.concat)([
508
+ this.expressionStatementExpression(node.expression),
509
+ ";",
510
+ ]);
480
511
  case "ReturnStatement":
481
512
  return node.expression
482
513
  ? (0, doc_1.concat)(["return ", this.emit(node.expression), ";"])
@@ -526,7 +557,12 @@ class TsPrinter {
526
557
  ? this.emit(node.questionOrExclamationToken)
527
558
  : "",
528
559
  this.optType(node.type),
529
- node.initializer ? (0, doc_1.concat)([" = ", this.emit(node.initializer)]) : "",
560
+ node.initializer
561
+ ? (0, doc_1.concat)([
562
+ " = ",
563
+ this.expressionForDisallowedComma(node.initializer),
564
+ ])
565
+ : "",
530
566
  ";",
531
567
  ]);
532
568
  case "MethodDeclaration":
@@ -606,7 +642,12 @@ class TsPrinter {
606
642
  case "EnumMember":
607
643
  return (0, doc_1.concat)([
608
644
  this.emit(node.name),
609
- node.initializer ? (0, doc_1.concat)([" = ", this.emit(node.initializer)]) : "",
645
+ node.initializer
646
+ ? (0, doc_1.concat)([
647
+ " = ",
648
+ this.expressionForDisallowedComma(node.initializer),
649
+ ])
650
+ : "",
610
651
  ]);
611
652
  /* imports & exports */
612
653
  case "ImportDeclaration":
@@ -664,7 +705,7 @@ class TsPrinter {
664
705
  return (0, doc_1.concat)([
665
706
  this.modifiers(node.modifiers, false),
666
707
  node.isExportEquals ? "export = " : "export default ",
667
- this.emit(node.expression),
708
+ this.exportAssignmentExpression(node.expression, node.isExportEquals === true),
668
709
  ";",
669
710
  ]);
670
711
  /* source file */
@@ -850,9 +891,9 @@ class TsPrinter {
850
891
  ]);
851
892
  case "ConditionalTypeNode":
852
893
  return (0, doc_1.concat)([
853
- this.emit(node.checkType),
894
+ this.conditionalTypeCheckOperand(node.checkType),
854
895
  " extends ",
855
- this.emit(node.extendsType),
896
+ this.conditionalTypeExtendsOperand(node.extendsType),
856
897
  " ? ",
857
898
  this.emit(node.trueType),
858
899
  " : ",
@@ -903,9 +944,9 @@ class TsPrinter {
903
944
  this.emit(node.type),
904
945
  ]);
905
946
  case "OptionalTypeNode":
906
- return (0, doc_1.concat)([this.emit(node.type), "?"]);
947
+ return (0, doc_1.concat)([this.postfixTypeOperand(node.type), "?"]);
907
948
  case "RestTypeNode":
908
- return (0, doc_1.concat)(["...", this.emit(node.type)]);
949
+ return (0, doc_1.concat)(["...", this.postfixTypeOperand(node.type)]);
909
950
  case "ImportTypeNode":
910
951
  return (0, doc_1.concat)([
911
952
  node.isTypeOf ? "typeof " : "",
@@ -944,10 +985,13 @@ class TsPrinter {
944
985
  (0, doc_1.concat)(node.templateSpans.map((s) => this.emit(s))),
945
986
  ]);
946
987
  case "TemplateSpan":
947
- return (0, doc_1.concat)([this.emit(node.expression), this.emit(node.literal)]);
988
+ return (0, doc_1.concat)([
989
+ this.expressionForDisallowedComma(node.expression),
990
+ this.emit(node.literal),
991
+ ]);
948
992
  case "TaggedTemplateExpression":
949
993
  return (0, doc_1.concat)([
950
- this.emit(node.tag),
994
+ this.leftSideExpression(node.tag),
951
995
  this.typeArguments(node.typeArguments),
952
996
  this.emit(node.template),
953
997
  ]);
@@ -955,12 +999,14 @@ class TsPrinter {
955
999
  return (0, doc_1.concat)([
956
1000
  "yield",
957
1001
  node.asteriskToken ? "*" : "",
958
- node.expression ? (0, doc_1.concat)([" ", this.emit(node.expression)]) : "",
1002
+ node.expression
1003
+ ? (0, doc_1.concat)([" ", this.expressionForDisallowedComma(node.expression)])
1004
+ : "",
959
1005
  ]);
960
1006
  case "DeleteExpression":
961
- return (0, doc_1.concat)(["delete ", this.emit(node.expression)]);
1007
+ return (0, doc_1.concat)(["delete ", this.prefixUnaryOperand(node.expression)]);
962
1008
  case "VoidExpression":
963
- return (0, doc_1.concat)(["void ", this.emit(node.expression)]);
1009
+ return (0, doc_1.concat)(["void ", this.prefixUnaryOperand(node.expression)]);
964
1010
  case "RegularExpressionLiteral":
965
1011
  return node.text;
966
1012
  case "ClassExpression":
@@ -978,7 +1024,11 @@ class TsPrinter {
978
1024
  case "CommaListExpression":
979
1025
  return (0, doc_1.join)(", ", node.elements.map((e) => this.emit(e)));
980
1026
  case "ComputedPropertyName":
981
- return (0, doc_1.concat)(["[", this.emit(node.expression), "]"]);
1027
+ return (0, doc_1.concat)([
1028
+ "[",
1029
+ this.expressionForDisallowedComma(node.expression),
1030
+ "]",
1031
+ ]);
982
1032
  case "OmittedExpression":
983
1033
  return "";
984
1034
  case "BindingElement":
@@ -986,7 +1036,12 @@ class TsPrinter {
986
1036
  node.dotDotDotToken ? "..." : "",
987
1037
  node.propertyName ? (0, doc_1.concat)([this.emit(node.propertyName), ": "]) : "",
988
1038
  this.emit(node.name),
989
- node.initializer ? (0, doc_1.concat)([" = ", this.emit(node.initializer)]) : "",
1039
+ node.initializer
1040
+ ? (0, doc_1.concat)([
1041
+ " = ",
1042
+ this.expressionForDisallowedComma(node.initializer),
1043
+ ])
1044
+ : "",
990
1045
  ]);
991
1046
  case "ObjectBindingPattern":
992
1047
  return this.delim("{", node.elements.map((e) => this.emit(e)), "}", { space: true, trailingComma: true });
@@ -997,31 +1052,31 @@ class TsPrinter {
997
1052
  "<",
998
1053
  this.emit(node.type),
999
1054
  ">",
1000
- this.emit(node.expression),
1055
+ this.prefixUnaryOperand(node.expression),
1001
1056
  ]);
1002
1057
  case "PropertyAccessChain":
1003
1058
  return (0, doc_1.concat)([
1004
- this.emit(node.expression),
1059
+ this.leftSideExpression(node.expression),
1005
1060
  node.questionDotToken ? "?." : ".",
1006
1061
  this.emit(node.name),
1007
1062
  ]);
1008
1063
  case "ElementAccessChain":
1009
1064
  return (0, doc_1.concat)([
1010
- this.emit(node.expression),
1065
+ this.leftSideExpression(node.expression),
1011
1066
  node.questionDotToken ? "?." : "",
1012
1067
  "[",
1013
- this.emit(node.argumentExpression),
1068
+ this.expressionForDisallowedComma(node.argumentExpression),
1014
1069
  "]",
1015
1070
  ]);
1016
1071
  case "CallChain":
1017
1072
  return (0, doc_1.concat)([
1018
- this.emit(node.expression),
1073
+ this.leftSideExpression(node.expression),
1019
1074
  node.questionDotToken ? "?." : "",
1020
1075
  this.typeArguments(node.typeArguments),
1021
- this.params(node.arguments),
1076
+ this.args(node.arguments),
1022
1077
  ]);
1023
1078
  case "NonNullChain":
1024
- return (0, doc_1.concat)([this.emit(node.expression), "!"]);
1079
+ return (0, doc_1.concat)([this.leftSideExpression(node.expression), "!"]);
1025
1080
  /* jsx */
1026
1081
  case "JsxElement":
1027
1082
  return (0, doc_1.group)((0, doc_1.concat)([
@@ -1307,15 +1362,384 @@ class TsPrinter {
1307
1362
  * parenthesizing the lower-precedence type forms that would otherwise
1308
1363
  * re-associate — matching the legacy printer's parenthesizer rules.
1309
1364
  */
1310
- postfixTypeOperand(type) {
1311
- const parenthesize = type.kind === "UnionTypeNode" ||
1365
+ parenthesizedExpression(expression) {
1366
+ return expression.kind === "ParenthesizedExpression"
1367
+ ? this.emit(expression)
1368
+ : (0, doc_1.concat)(["(", this.emit(expression), ")"]);
1369
+ }
1370
+ expressionForDisallowedComma(expression) {
1371
+ return this.expressionPrecedence(expression) > ExpressionPrecedence.Comma
1372
+ ? this.emit(expression)
1373
+ : this.parenthesizedExpression(expression);
1374
+ }
1375
+ leftSideExpression(expression) {
1376
+ return this.isLeftHandSideExpression(expression)
1377
+ ? this.emit(expression)
1378
+ : this.parenthesizedExpression(expression);
1379
+ }
1380
+ newExpressionTarget(expression) {
1381
+ return expression.kind !== "CallExpression" &&
1382
+ expression.kind !== "CallChain" &&
1383
+ (expression.kind !== "NewExpression" ||
1384
+ expression.arguments !== undefined) &&
1385
+ this.isLeftHandSideExpression(expression)
1386
+ ? this.emit(expression)
1387
+ : this.parenthesizedExpression(expression);
1388
+ }
1389
+ prefixUnaryOperand(operand, operator) {
1390
+ const body = this.isUnaryExpression(operand)
1391
+ ? this.emit(operand)
1392
+ : this.parenthesizedExpression(operand);
1393
+ return this.needsPrefixUnaryGap(operator, operand)
1394
+ ? (0, doc_1.concat)([" ", body])
1395
+ : body;
1396
+ }
1397
+ postfixUnaryOperand(operand) {
1398
+ return this.isLeftHandSideExpression(operand)
1399
+ ? this.emit(operand)
1400
+ : this.parenthesizedExpression(operand);
1401
+ }
1402
+ conditionalCondition(condition) {
1403
+ return this.expressionPrecedence(condition) >
1404
+ ExpressionPrecedence.Conditional
1405
+ ? this.emit(condition)
1406
+ : this.parenthesizedExpression(condition);
1407
+ }
1408
+ conditionalBranch(branch) {
1409
+ return this.expressionForDisallowedComma(branch);
1410
+ }
1411
+ arrowFunctionBody(body) {
1412
+ return body.kind === "Block"
1413
+ ? this.emit(body)
1414
+ : this.expressionNeedsConciseBodyParentheses(body)
1415
+ ? this.parenthesizedExpression(body)
1416
+ : this.emit(body);
1417
+ }
1418
+ expressionStatementExpression(expression) {
1419
+ return this.expressionNeedsStatementParentheses(expression)
1420
+ ? this.parenthesizedExpression(expression)
1421
+ : this.emit(expression);
1422
+ }
1423
+ exportAssignmentExpression(expression, isExportEquals) {
1424
+ return isExportEquals
1425
+ ? this.expressionForDisallowedComma(expression)
1426
+ : this.expressionNeedsExportDefaultParentheses(expression)
1427
+ ? this.parenthesizedExpression(expression)
1428
+ : this.emit(expression);
1429
+ }
1430
+ assertionExpressionOperand(expression) {
1431
+ return this.expressionPrecedence(expression) >=
1432
+ ExpressionPrecedence.Relational
1433
+ ? this.expressionForDisallowedComma(expression)
1434
+ : this.parenthesizedExpression(expression);
1435
+ }
1436
+ binaryOperand(operator, operand, isLeftSide, leftOperand) {
1437
+ return this.binaryOperandNeedsParentheses(operator, operand, isLeftSide, leftOperand)
1438
+ ? this.parenthesizedExpression(operand)
1439
+ : this.emit(operand);
1440
+ }
1441
+ binaryOperandNeedsParentheses(operator, operand, isLeftSide, leftOperand) {
1442
+ if (operand.kind === "ParenthesizedExpression")
1443
+ return false;
1444
+ if (operator === syntax_1.SyntaxKind.AsteriskAsteriskToken &&
1445
+ isLeftSide &&
1446
+ this.expressionPrecedence(operand) === ExpressionPrecedence.Unary)
1447
+ return true;
1448
+ if (operand.kind === "BinaryExpression" &&
1449
+ this.mixingBinaryOperatorsRequiresParentheses(operator, operand.operator))
1450
+ return true;
1451
+ const operatorPrecedence = this.binaryOperatorPrecedence(operator);
1452
+ const operandPrecedence = this.expressionPrecedence(operand);
1453
+ if (!isLeftSide &&
1454
+ operand.kind === "ArrowFunction" &&
1455
+ operatorPrecedence > ExpressionPrecedence.Assignment)
1456
+ return true;
1457
+ if (operandPrecedence < operatorPrecedence)
1458
+ return true;
1459
+ if (operandPrecedence > operatorPrecedence)
1460
+ return false;
1461
+ if (isLeftSide)
1462
+ return this.binaryOperatorAssociativity(operator) === Associativity.Right;
1463
+ if (operand.kind === "BinaryExpression" && operand.operator === operator) {
1464
+ if (this.operatorHasAssociativeProperty(operator))
1465
+ return false;
1466
+ if (operator === syntax_1.SyntaxKind.PlusToken &&
1467
+ leftOperand !== undefined &&
1468
+ this.literalKindOfBinaryPlusOperand(leftOperand) !== undefined &&
1469
+ this.literalKindOfBinaryPlusOperand(leftOperand) ===
1470
+ this.literalKindOfBinaryPlusOperand(operand))
1471
+ return false;
1472
+ }
1473
+ return this.expressionAssociativity(operand) === Associativity.Left;
1474
+ }
1475
+ expressionPrecedence(expression) {
1476
+ switch (expression.kind) {
1477
+ case "CommaListExpression":
1478
+ return ExpressionPrecedence.Comma;
1479
+ case "YieldExpression":
1480
+ return ExpressionPrecedence.Yield;
1481
+ case "ConditionalExpression":
1482
+ return ExpressionPrecedence.Conditional;
1483
+ case "BinaryExpression":
1484
+ return this.binaryOperatorPrecedence(expression.operator);
1485
+ case "AsExpression":
1486
+ case "SatisfiesExpression":
1487
+ return ExpressionPrecedence.Relational;
1488
+ case "TypeAssertion":
1489
+ case "PrefixUnaryExpression":
1490
+ case "TypeOfExpression":
1491
+ case "VoidExpression":
1492
+ case "DeleteExpression":
1493
+ case "AwaitExpression":
1494
+ case "NonNullExpression":
1495
+ case "NonNullChain":
1496
+ return ExpressionPrecedence.Unary;
1497
+ case "PostfixUnaryExpression":
1498
+ return ExpressionPrecedence.Update;
1499
+ case "CallExpression":
1500
+ case "CallChain":
1501
+ return ExpressionPrecedence.LeftHandSide;
1502
+ case "NewExpression":
1503
+ case "TaggedTemplateExpression":
1504
+ case "PropertyAccessExpression":
1505
+ case "PropertyAccessChain":
1506
+ case "ElementAccessExpression":
1507
+ case "ElementAccessChain":
1508
+ case "MetaProperty":
1509
+ return ExpressionPrecedence.Member;
1510
+ default:
1511
+ return ExpressionPrecedence.Primary;
1512
+ }
1513
+ }
1514
+ expressionAssociativity(expression) {
1515
+ switch (expression.kind) {
1516
+ case "NewExpression":
1517
+ return expression.arguments === undefined
1518
+ ? Associativity.Right
1519
+ : Associativity.Left;
1520
+ case "PrefixUnaryExpression":
1521
+ case "TypeOfExpression":
1522
+ case "VoidExpression":
1523
+ case "DeleteExpression":
1524
+ case "AwaitExpression":
1525
+ case "ConditionalExpression":
1526
+ case "YieldExpression":
1527
+ return Associativity.Right;
1528
+ case "BinaryExpression":
1529
+ return this.binaryOperatorAssociativity(expression.operator);
1530
+ default:
1531
+ return Associativity.Left;
1532
+ }
1533
+ }
1534
+ binaryOperatorPrecedence(operator) {
1535
+ switch (operator) {
1536
+ case syntax_1.SyntaxKind.CommaToken:
1537
+ return ExpressionPrecedence.Comma;
1538
+ case syntax_1.SyntaxKind.EqualsToken:
1539
+ case syntax_1.SyntaxKind.PlusEqualsToken:
1540
+ case syntax_1.SyntaxKind.MinusEqualsToken:
1541
+ case syntax_1.SyntaxKind.AsteriskEqualsToken:
1542
+ case syntax_1.SyntaxKind.SlashEqualsToken:
1543
+ case syntax_1.SyntaxKind.QuestionQuestionEqualsToken:
1544
+ return ExpressionPrecedence.Assignment;
1545
+ case syntax_1.SyntaxKind.QuestionQuestionToken:
1546
+ case syntax_1.SyntaxKind.BarBarToken:
1547
+ return ExpressionPrecedence.LogicalOR;
1548
+ case syntax_1.SyntaxKind.AmpersandAmpersandToken:
1549
+ return ExpressionPrecedence.LogicalAND;
1550
+ case syntax_1.SyntaxKind.BarToken:
1551
+ return ExpressionPrecedence.BitwiseOR;
1552
+ case syntax_1.SyntaxKind.CaretToken:
1553
+ return ExpressionPrecedence.BitwiseXOR;
1554
+ case syntax_1.SyntaxKind.AmpersandToken:
1555
+ return ExpressionPrecedence.BitwiseAND;
1556
+ case syntax_1.SyntaxKind.EqualsEqualsToken:
1557
+ case syntax_1.SyntaxKind.ExclamationEqualsToken:
1558
+ case syntax_1.SyntaxKind.EqualsEqualsEqualsToken:
1559
+ case syntax_1.SyntaxKind.ExclamationEqualsEqualsToken:
1560
+ return ExpressionPrecedence.Equality;
1561
+ case syntax_1.SyntaxKind.LessThanToken:
1562
+ case syntax_1.SyntaxKind.LessThanEqualsToken:
1563
+ case syntax_1.SyntaxKind.GreaterThanToken:
1564
+ case syntax_1.SyntaxKind.GreaterThanEqualsToken:
1565
+ case syntax_1.SyntaxKind.InstanceOfKeyword:
1566
+ case syntax_1.SyntaxKind.InKeyword:
1567
+ case syntax_1.SyntaxKind.AsKeyword:
1568
+ case syntax_1.SyntaxKind.SatisfiesKeyword:
1569
+ return ExpressionPrecedence.Relational;
1570
+ case syntax_1.SyntaxKind.LessThanLessThanToken:
1571
+ case syntax_1.SyntaxKind.GreaterThanGreaterThanToken:
1572
+ case syntax_1.SyntaxKind.GreaterThanGreaterThanGreaterThanToken:
1573
+ return ExpressionPrecedence.Shift;
1574
+ case syntax_1.SyntaxKind.PlusToken:
1575
+ case syntax_1.SyntaxKind.MinusToken:
1576
+ return ExpressionPrecedence.Additive;
1577
+ case syntax_1.SyntaxKind.AsteriskToken:
1578
+ case syntax_1.SyntaxKind.SlashToken:
1579
+ case syntax_1.SyntaxKind.PercentToken:
1580
+ return ExpressionPrecedence.Multiplicative;
1581
+ case syntax_1.SyntaxKind.AsteriskAsteriskToken:
1582
+ return ExpressionPrecedence.Exponentiation;
1583
+ default:
1584
+ return ExpressionPrecedence.Invalid;
1585
+ }
1586
+ }
1587
+ binaryOperatorAssociativity(operator) {
1588
+ switch (operator) {
1589
+ case syntax_1.SyntaxKind.AsteriskAsteriskToken:
1590
+ case syntax_1.SyntaxKind.EqualsToken:
1591
+ case syntax_1.SyntaxKind.PlusEqualsToken:
1592
+ case syntax_1.SyntaxKind.MinusEqualsToken:
1593
+ case syntax_1.SyntaxKind.AsteriskEqualsToken:
1594
+ case syntax_1.SyntaxKind.SlashEqualsToken:
1595
+ case syntax_1.SyntaxKind.QuestionQuestionEqualsToken:
1596
+ return Associativity.Right;
1597
+ default:
1598
+ return Associativity.Left;
1599
+ }
1600
+ }
1601
+ mixingBinaryOperatorsRequiresParentheses(left, right) {
1602
+ return ((left === syntax_1.SyntaxKind.QuestionQuestionToken &&
1603
+ (right === syntax_1.SyntaxKind.AmpersandAmpersandToken ||
1604
+ right === syntax_1.SyntaxKind.BarBarToken)) ||
1605
+ (right === syntax_1.SyntaxKind.QuestionQuestionToken &&
1606
+ (left === syntax_1.SyntaxKind.AmpersandAmpersandToken ||
1607
+ left === syntax_1.SyntaxKind.BarBarToken)));
1608
+ }
1609
+ operatorHasAssociativeProperty(operator) {
1610
+ return (operator === syntax_1.SyntaxKind.AsteriskToken ||
1611
+ operator === syntax_1.SyntaxKind.BarToken ||
1612
+ operator === syntax_1.SyntaxKind.AmpersandToken ||
1613
+ operator === syntax_1.SyntaxKind.CaretToken ||
1614
+ operator === syntax_1.SyntaxKind.CommaToken);
1615
+ }
1616
+ literalKindOfBinaryPlusOperand(expression) {
1617
+ switch (expression.kind) {
1618
+ case "StringLiteral":
1619
+ case "NumericLiteral":
1620
+ case "BigIntLiteral":
1621
+ return expression.kind;
1622
+ case "BinaryExpression": {
1623
+ if (expression.operator !== syntax_1.SyntaxKind.PlusToken)
1624
+ return undefined;
1625
+ const left = this.literalKindOfBinaryPlusOperand(expression.left);
1626
+ return left !== undefined &&
1627
+ left === this.literalKindOfBinaryPlusOperand(expression.right)
1628
+ ? left
1629
+ : undefined;
1630
+ }
1631
+ default:
1632
+ return undefined;
1633
+ }
1634
+ }
1635
+ isUnaryExpression(expression) {
1636
+ return this.expressionPrecedence(expression) >= ExpressionPrecedence.Unary;
1637
+ }
1638
+ isLeftHandSideExpression(expression) {
1639
+ switch (expression.kind) {
1640
+ case "ArrowFunction":
1641
+ case "ClassExpression":
1642
+ case "FunctionExpression":
1643
+ case "NumericLiteral":
1644
+ case "ObjectLiteralExpression":
1645
+ return false;
1646
+ default:
1647
+ break;
1648
+ }
1649
+ return (this.expressionPrecedence(expression) >=
1650
+ ExpressionPrecedence.LeftHandSide ||
1651
+ expression.kind === "NonNullExpression" ||
1652
+ expression.kind === "NonNullChain");
1653
+ }
1654
+ expressionNeedsStatementParentheses(expression) {
1655
+ const leftmost = this.leftmostExpression(expression);
1656
+ return (leftmost.kind === "FunctionExpression" ||
1657
+ leftmost.kind === "ObjectLiteralExpression");
1658
+ }
1659
+ expressionNeedsConciseBodyParentheses(expression) {
1660
+ return (this.expressionPrecedence(expression) <= ExpressionPrecedence.Comma ||
1661
+ this.leftmostExpression(expression).kind === "ObjectLiteralExpression");
1662
+ }
1663
+ expressionNeedsExportDefaultParentheses(expression) {
1664
+ const leftmost = this.leftmostExpression(expression);
1665
+ return (this.expressionPrecedence(expression) <= ExpressionPrecedence.Comma ||
1666
+ leftmost.kind === "ClassExpression" ||
1667
+ leftmost.kind === "FunctionExpression");
1668
+ }
1669
+ leftmostExpression(expression) {
1670
+ switch (expression.kind) {
1671
+ case "AsExpression":
1672
+ case "CallExpression":
1673
+ case "CallChain":
1674
+ case "ElementAccessExpression":
1675
+ case "ElementAccessChain":
1676
+ case "NonNullExpression":
1677
+ case "NonNullChain":
1678
+ case "PropertyAccessExpression":
1679
+ case "PropertyAccessChain":
1680
+ case "SatisfiesExpression":
1681
+ return this.leftmostExpression(expression.expression);
1682
+ case "BinaryExpression":
1683
+ return this.leftmostExpression(expression.left);
1684
+ case "ConditionalExpression":
1685
+ return this.leftmostExpression(expression.condition);
1686
+ case "TaggedTemplateExpression":
1687
+ return this.leftmostExpression(expression.tag);
1688
+ default:
1689
+ return expression;
1690
+ }
1691
+ }
1692
+ needsPrefixUnaryGap(operator, operand) {
1693
+ if (operator === undefined || operand.kind !== "PrefixUnaryExpression")
1694
+ return false;
1695
+ return ((operator === syntax_1.SyntaxKind.PlusToken &&
1696
+ (operand.operator === syntax_1.SyntaxKind.PlusToken ||
1697
+ operand.operator === syntax_1.SyntaxKind.PlusPlusToken)) ||
1698
+ (operator === syntax_1.SyntaxKind.MinusToken &&
1699
+ (operand.operator === syntax_1.SyntaxKind.MinusToken ||
1700
+ operand.operator === syntax_1.SyntaxKind.MinusMinusToken)));
1701
+ }
1702
+ parenthesizedType(type) {
1703
+ return type.kind === "ParenthesizedTypeNode"
1704
+ ? this.emit(type)
1705
+ : (0, doc_1.concat)(["(", this.emit(type), ")"]);
1706
+ }
1707
+ conditionalTypeCheckOperand(type) {
1708
+ return type.kind === "FunctionTypeNode" ||
1709
+ type.kind === "ConstructorTypeNode" ||
1710
+ type.kind === "ConditionalTypeNode"
1711
+ ? this.parenthesizedType(type)
1712
+ : this.emit(type);
1713
+ }
1714
+ conditionalTypeExtendsOperand(type) {
1715
+ return type.kind === "ConditionalTypeNode"
1716
+ ? this.parenthesizedType(type)
1717
+ : this.emit(type);
1718
+ }
1719
+ typeOperatorOperand(type, operator) {
1720
+ return this.typeOperatorOperandNeedsParentheses(type, operator)
1721
+ ? this.parenthesizedType(type)
1722
+ : this.emit(type);
1723
+ }
1724
+ typeOperatorOperandNeedsParentheses(type, operator) {
1725
+ return (type.kind === "UnionTypeNode" ||
1312
1726
  type.kind === "IntersectionTypeNode" ||
1313
1727
  type.kind === "FunctionTypeNode" ||
1314
1728
  type.kind === "ConstructorTypeNode" ||
1315
1729
  type.kind === "ConditionalTypeNode" ||
1316
- type.kind === "InferTypeNode" ||
1317
- type.kind === "TypeOperatorNode";
1318
- return parenthesize ? (0, doc_1.concat)(["(", this.emit(type), ")"]) : this.emit(type);
1730
+ (operator === syntax_1.SyntaxKind.ReadonlyKeyword &&
1731
+ type.kind === "TypeOperatorNode"));
1732
+ }
1733
+ postfixTypeOperand(type) {
1734
+ return this.postfixTypeOperandNeedsParentheses(type)
1735
+ ? this.parenthesizedType(type)
1736
+ : this.emit(type);
1737
+ }
1738
+ postfixTypeOperandNeedsParentheses(type) {
1739
+ return (type.kind === "InferTypeNode" ||
1740
+ type.kind === "TypeOperatorNode" ||
1741
+ type.kind === "TypeQueryNode" ||
1742
+ this.typeOperatorOperandNeedsParentheses(type));
1319
1743
  }
1320
1744
  /** Render a JSDoc tag's trailing comment, prefixed with a space when present. */
1321
1745
  jsDocComment(comment) {
@@ -1328,7 +1752,8 @@ class TsPrinter {
1328
1752
  : "";
1329
1753
  }
1330
1754
  /** Width-aware `|` / `&` type list with leading-operator breaks. */
1331
- binaryType(operator, parts) {
1755
+ binaryType(operator, types) {
1756
+ const parts = this.flattenBinaryTypes(operator, types).map((type) => this.binaryTypeOperand(operator, type));
1332
1757
  if (parts.length === 1)
1333
1758
  return parts[0];
1334
1759
  return (0, doc_1.group)((0, doc_1.indent)((0, doc_1.concat)([
@@ -1336,9 +1761,69 @@ class TsPrinter {
1336
1761
  (0, doc_1.join)((0, doc_1.concat)([doc_1.line, operator, " "]), parts),
1337
1762
  ])));
1338
1763
  }
1764
+ flattenBinaryTypes(operator, types) {
1765
+ const flattened = [];
1766
+ for (const type of types)
1767
+ if (operator === "|" && type.kind === "UnionTypeNode")
1768
+ flattened.push(...this.flattenBinaryTypes(operator, type.types));
1769
+ else if (operator === "&" && type.kind === "IntersectionTypeNode")
1770
+ flattened.push(...this.flattenBinaryTypes(operator, type.types));
1771
+ else
1772
+ flattened.push(type);
1773
+ return flattened;
1774
+ }
1775
+ binaryTypeOperand(operator, type) {
1776
+ return this.binaryTypeOperandNeedsParentheses(operator, type)
1777
+ ? this.parenthesizedType(type)
1778
+ : this.emit(type);
1779
+ }
1780
+ binaryTypeOperandNeedsParentheses(operator, type) {
1781
+ return (type.kind === "FunctionTypeNode" ||
1782
+ type.kind === "ConstructorTypeNode" ||
1783
+ type.kind === "ConditionalTypeNode" ||
1784
+ type.kind === "UnionTypeNode" ||
1785
+ (operator === "|" && type.kind === "IntersectionTypeNode"));
1786
+ }
1339
1787
  unsupported(node) {
1340
1788
  throw new Error(`@ttsc/factory: TsPrinter cannot print node of kind "${node.kind}".`);
1341
1789
  }
1342
1790
  }
1343
1791
  exports.TsPrinter = TsPrinter;
1792
+ const escapeString = (text, singleQuote) => {
1793
+ const escaped = text
1794
+ .replace(/\\/g, "\\\\")
1795
+ .replace(/\n/g, "\\n")
1796
+ .replace(/\r/g, "\\r")
1797
+ .replace(/\t/g, "\\t");
1798
+ return singleQuote === true
1799
+ ? `'${escaped.replace(/'/g, "\\'")}'`
1800
+ : `"${escaped.replace(/"/g, '\\"')}"`;
1801
+ };
1802
+ const ExpressionPrecedence = {
1803
+ Comma: 0,
1804
+ Yield: 2,
1805
+ Assignment: 3,
1806
+ Conditional: 4,
1807
+ LogicalOR: 5,
1808
+ LogicalAND: 6,
1809
+ BitwiseOR: 7,
1810
+ BitwiseXOR: 8,
1811
+ BitwiseAND: 9,
1812
+ Equality: 10,
1813
+ Relational: 11,
1814
+ Shift: 12,
1815
+ Additive: 13,
1816
+ Multiplicative: 14,
1817
+ Exponentiation: 15,
1818
+ Unary: 16,
1819
+ Update: 17,
1820
+ LeftHandSide: 18,
1821
+ Member: 19,
1822
+ Primary: 20,
1823
+ Invalid: -1,
1824
+ };
1825
+ const Associativity = {
1826
+ Left: "left",
1827
+ Right: "right",
1828
+ };
1344
1829
  //# sourceMappingURL=TsPrinter.js.map