@tinacms/app 0.0.28 → 1.0.1

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 (211) hide show
  1. package/appFiles/node_modules/.package-lock.json +23 -23
  2. package/appFiles/node_modules/@babel/generator/lib/generators/base.js.map +1 -1
  3. package/appFiles/node_modules/@babel/generator/lib/generators/classes.js +1 -1
  4. package/appFiles/node_modules/@babel/generator/lib/generators/classes.js.map +1 -1
  5. package/appFiles/node_modules/@babel/generator/lib/generators/expressions.js +9 -15
  6. package/appFiles/node_modules/@babel/generator/lib/generators/expressions.js.map +1 -1
  7. package/appFiles/node_modules/@babel/generator/lib/generators/methods.js +12 -25
  8. package/appFiles/node_modules/@babel/generator/lib/generators/methods.js.map +1 -1
  9. package/appFiles/node_modules/@babel/generator/lib/generators/modules.js +6 -14
  10. package/appFiles/node_modules/@babel/generator/lib/generators/modules.js.map +1 -1
  11. package/appFiles/node_modules/@babel/generator/lib/generators/statements.js +1 -16
  12. package/appFiles/node_modules/@babel/generator/lib/generators/statements.js.map +1 -1
  13. package/appFiles/node_modules/@babel/generator/lib/index.js +11 -0
  14. package/appFiles/node_modules/@babel/generator/lib/index.js.map +1 -1
  15. package/appFiles/node_modules/@babel/generator/lib/printer.js +112 -86
  16. package/appFiles/node_modules/@babel/generator/lib/printer.js.map +1 -1
  17. package/appFiles/node_modules/@babel/generator/package.json +3 -3
  18. package/appFiles/node_modules/@babel/parser/lib/index.js +165 -99
  19. package/appFiles/node_modules/@babel/parser/lib/index.js.map +1 -1
  20. package/appFiles/node_modules/@babel/parser/package.json +2 -2
  21. package/appFiles/node_modules/@babel/parser/typings/babel-parser.d.ts +92 -80
  22. package/appFiles/node_modules/@babel/runtime/helpers/checkInRHS.js +6 -0
  23. package/appFiles/node_modules/@babel/runtime/helpers/createClass.js +2 -1
  24. package/appFiles/node_modules/@babel/runtime/helpers/defineProperty.js +2 -0
  25. package/appFiles/node_modules/@babel/runtime/helpers/esm/checkInRHS.js +5 -0
  26. package/appFiles/node_modules/@babel/runtime/helpers/esm/createClass.js +2 -1
  27. package/appFiles/node_modules/@babel/runtime/helpers/esm/defineProperty.js +2 -0
  28. package/appFiles/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js +23 -18
  29. package/appFiles/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimitLoose.js +8 -7
  30. package/appFiles/node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js +3 -8
  31. package/appFiles/node_modules/@babel/runtime/helpers/iterableToArrayLimit.js +23 -18
  32. package/appFiles/node_modules/@babel/runtime/helpers/iterableToArrayLimitLoose.js +8 -7
  33. package/appFiles/node_modules/@babel/runtime/helpers/regeneratorRuntime.js +3 -8
  34. package/appFiles/node_modules/@babel/runtime/package.json +29 -20
  35. package/appFiles/node_modules/@babel/traverse/lib/path/context.js +3 -2
  36. package/appFiles/node_modules/@babel/traverse/lib/path/context.js.map +1 -1
  37. package/appFiles/node_modules/@babel/traverse/lib/path/conversion.js +8 -4
  38. package/appFiles/node_modules/@babel/traverse/lib/path/conversion.js.map +1 -1
  39. package/appFiles/node_modules/@babel/traverse/lib/path/inference/inferer-reference.js +1 -0
  40. package/appFiles/node_modules/@babel/traverse/lib/path/inference/inferer-reference.js.map +1 -1
  41. package/appFiles/node_modules/@babel/traverse/lib/scope/index.js +1 -1
  42. package/appFiles/node_modules/@babel/traverse/lib/scope/index.js.map +1 -1
  43. package/appFiles/node_modules/@babel/traverse/package.json +4 -4
  44. package/appFiles/node_modules/@babel/types/lib/asserts/assertNode.js +0 -3
  45. package/appFiles/node_modules/@babel/types/lib/asserts/assertNode.js.map +1 -1
  46. package/appFiles/node_modules/@babel/types/lib/asserts/generated/index.js +0 -303
  47. package/appFiles/node_modules/@babel/types/lib/asserts/generated/index.js.map +1 -1
  48. package/appFiles/node_modules/@babel/types/lib/builders/flow/createFlowUnionType.js +0 -4
  49. package/appFiles/node_modules/@babel/types/lib/builders/flow/createFlowUnionType.js.map +1 -1
  50. package/appFiles/node_modules/@babel/types/lib/builders/flow/createTypeAnnotationBasedOnTypeof.js +0 -11
  51. package/appFiles/node_modules/@babel/types/lib/builders/flow/createTypeAnnotationBasedOnTypeof.js.map +1 -1
  52. package/appFiles/node_modules/@babel/types/lib/builders/generated/index.js +0 -253
  53. package/appFiles/node_modules/@babel/types/lib/builders/generated/index.js.map +1 -1
  54. package/appFiles/node_modules/@babel/types/lib/builders/generated/uppercase.js +0 -1
  55. package/appFiles/node_modules/@babel/types/lib/builders/generated/uppercase.js.map +1 -1
  56. package/appFiles/node_modules/@babel/types/lib/builders/react/buildChildren.js +0 -7
  57. package/appFiles/node_modules/@babel/types/lib/builders/react/buildChildren.js.map +1 -1
  58. package/appFiles/node_modules/@babel/types/lib/builders/typescript/createTSUnionType.js +0 -5
  59. package/appFiles/node_modules/@babel/types/lib/builders/typescript/createTSUnionType.js.map +1 -1
  60. package/appFiles/node_modules/@babel/types/lib/builders/validateNode.js +0 -5
  61. package/appFiles/node_modules/@babel/types/lib/builders/validateNode.js.map +1 -1
  62. package/appFiles/node_modules/@babel/types/lib/clone/clone.js +0 -2
  63. package/appFiles/node_modules/@babel/types/lib/clone/clone.js.map +1 -1
  64. package/appFiles/node_modules/@babel/types/lib/clone/cloneDeep.js +0 -2
  65. package/appFiles/node_modules/@babel/types/lib/clone/cloneDeep.js.map +1 -1
  66. package/appFiles/node_modules/@babel/types/lib/clone/cloneDeepWithoutLoc.js +0 -2
  67. package/appFiles/node_modules/@babel/types/lib/clone/cloneDeepWithoutLoc.js.map +1 -1
  68. package/appFiles/node_modules/@babel/types/lib/clone/cloneNode.js +4 -22
  69. package/appFiles/node_modules/@babel/types/lib/clone/cloneNode.js.map +1 -1
  70. package/appFiles/node_modules/@babel/types/lib/clone/cloneWithoutLoc.js +0 -2
  71. package/appFiles/node_modules/@babel/types/lib/clone/cloneWithoutLoc.js.map +1 -1
  72. package/appFiles/node_modules/@babel/types/lib/comments/addComment.js +0 -2
  73. package/appFiles/node_modules/@babel/types/lib/comments/addComment.js.map +1 -1
  74. package/appFiles/node_modules/@babel/types/lib/comments/addComments.js +0 -3
  75. package/appFiles/node_modules/@babel/types/lib/comments/addComments.js.map +1 -1
  76. package/appFiles/node_modules/@babel/types/lib/comments/inheritInnerComments.js +0 -2
  77. package/appFiles/node_modules/@babel/types/lib/comments/inheritInnerComments.js.map +1 -1
  78. package/appFiles/node_modules/@babel/types/lib/comments/inheritLeadingComments.js +0 -2
  79. package/appFiles/node_modules/@babel/types/lib/comments/inheritLeadingComments.js.map +1 -1
  80. package/appFiles/node_modules/@babel/types/lib/comments/inheritTrailingComments.js +0 -2
  81. package/appFiles/node_modules/@babel/types/lib/comments/inheritTrailingComments.js.map +1 -1
  82. package/appFiles/node_modules/@babel/types/lib/comments/inheritsComments.js +0 -4
  83. package/appFiles/node_modules/@babel/types/lib/comments/inheritsComments.js.map +1 -1
  84. package/appFiles/node_modules/@babel/types/lib/comments/removeComments.js +0 -3
  85. package/appFiles/node_modules/@babel/types/lib/comments/removeComments.js.map +1 -1
  86. package/appFiles/node_modules/@babel/types/lib/constants/generated/index.js +0 -1
  87. package/appFiles/node_modules/@babel/types/lib/constants/generated/index.js.map +1 -1
  88. package/appFiles/node_modules/@babel/types/lib/constants/index.js.map +1 -1
  89. package/appFiles/node_modules/@babel/types/lib/converters/ensureBlock.js +0 -2
  90. package/appFiles/node_modules/@babel/types/lib/converters/ensureBlock.js.map +1 -1
  91. package/appFiles/node_modules/@babel/types/lib/converters/gatherSequenceExpressions.js +2 -12
  92. package/appFiles/node_modules/@babel/types/lib/converters/gatherSequenceExpressions.js.map +1 -1
  93. package/appFiles/node_modules/@babel/types/lib/converters/toBindingIdentifierName.js +0 -2
  94. package/appFiles/node_modules/@babel/types/lib/converters/toBindingIdentifierName.js.map +1 -1
  95. package/appFiles/node_modules/@babel/types/lib/converters/toBlock.js +0 -7
  96. package/appFiles/node_modules/@babel/types/lib/converters/toBlock.js.map +1 -1
  97. package/appFiles/node_modules/@babel/types/lib/converters/toComputedKey.js +2 -4
  98. package/appFiles/node_modules/@babel/types/lib/converters/toComputedKey.js.map +1 -1
  99. package/appFiles/node_modules/@babel/types/lib/converters/toExpression.js +0 -4
  100. package/appFiles/node_modules/@babel/types/lib/converters/toExpression.js.map +1 -1
  101. package/appFiles/node_modules/@babel/types/lib/converters/toIdentifier.js +2 -6
  102. package/appFiles/node_modules/@babel/types/lib/converters/toIdentifier.js.map +1 -1
  103. package/appFiles/node_modules/@babel/types/lib/converters/toKeyAlias.js +0 -7
  104. package/appFiles/node_modules/@babel/types/lib/converters/toKeyAlias.js.map +1 -1
  105. package/appFiles/node_modules/@babel/types/lib/converters/toSequenceExpression.js +0 -3
  106. package/appFiles/node_modules/@babel/types/lib/converters/toSequenceExpression.js.map +1 -1
  107. package/appFiles/node_modules/@babel/types/lib/converters/toStatement.js +1 -7
  108. package/appFiles/node_modules/@babel/types/lib/converters/toStatement.js.map +1 -1
  109. package/appFiles/node_modules/@babel/types/lib/converters/valueToNode.js +2 -18
  110. package/appFiles/node_modules/@babel/types/lib/converters/valueToNode.js.map +1 -1
  111. package/appFiles/node_modules/@babel/types/lib/definitions/core.js +33 -61
  112. package/appFiles/node_modules/@babel/types/lib/definitions/core.js.map +1 -1
  113. package/appFiles/node_modules/@babel/types/lib/definitions/experimental.js +3 -1
  114. package/appFiles/node_modules/@babel/types/lib/definitions/experimental.js.map +1 -1
  115. package/appFiles/node_modules/@babel/types/lib/definitions/flow.js +1 -3
  116. package/appFiles/node_modules/@babel/types/lib/definitions/flow.js.map +1 -1
  117. package/appFiles/node_modules/@babel/types/lib/definitions/index.js +0 -18
  118. package/appFiles/node_modules/@babel/types/lib/definitions/index.js.map +1 -1
  119. package/appFiles/node_modules/@babel/types/lib/definitions/jsx.js +0 -1
  120. package/appFiles/node_modules/@babel/types/lib/definitions/jsx.js.map +1 -1
  121. package/appFiles/node_modules/@babel/types/lib/definitions/misc.js +0 -2
  122. package/appFiles/node_modules/@babel/types/lib/definitions/misc.js.map +1 -1
  123. package/appFiles/node_modules/@babel/types/lib/definitions/placeholders.js +0 -5
  124. package/appFiles/node_modules/@babel/types/lib/definitions/placeholders.js.map +1 -1
  125. package/appFiles/node_modules/@babel/types/lib/definitions/typescript.js +4 -15
  126. package/appFiles/node_modules/@babel/types/lib/definitions/typescript.js.map +1 -1
  127. package/appFiles/node_modules/@babel/types/lib/definitions/utils.js +1 -65
  128. package/appFiles/node_modules/@babel/types/lib/definitions/utils.js.map +1 -1
  129. package/appFiles/node_modules/@babel/types/lib/index.d.ts +64 -65
  130. package/appFiles/node_modules/@babel/types/lib/index.js +1 -75
  131. package/appFiles/node_modules/@babel/types/lib/index.js.map +1 -1
  132. package/appFiles/node_modules/@babel/types/lib/modifications/appendToMemberExpression.js +0 -2
  133. package/appFiles/node_modules/@babel/types/lib/modifications/appendToMemberExpression.js.map +1 -1
  134. package/appFiles/node_modules/@babel/types/lib/modifications/flow/removeTypeDuplicates.js +3 -12
  135. package/appFiles/node_modules/@babel/types/lib/modifications/flow/removeTypeDuplicates.js.map +1 -1
  136. package/appFiles/node_modules/@babel/types/lib/modifications/inherits.js +0 -4
  137. package/appFiles/node_modules/@babel/types/lib/modifications/inherits.js.map +1 -1
  138. package/appFiles/node_modules/@babel/types/lib/modifications/prependToMemberExpression.js +0 -4
  139. package/appFiles/node_modules/@babel/types/lib/modifications/prependToMemberExpression.js.map +1 -1
  140. package/appFiles/node_modules/@babel/types/lib/modifications/removeProperties.js +3 -8
  141. package/appFiles/node_modules/@babel/types/lib/modifications/removeProperties.js.map +1 -1
  142. package/appFiles/node_modules/@babel/types/lib/modifications/removePropertiesDeep.js +0 -3
  143. package/appFiles/node_modules/@babel/types/lib/modifications/removePropertiesDeep.js.map +1 -1
  144. package/appFiles/node_modules/@babel/types/lib/modifications/typescript/removeTypeDuplicates.js +1 -10
  145. package/appFiles/node_modules/@babel/types/lib/modifications/typescript/removeTypeDuplicates.js.map +1 -1
  146. package/appFiles/node_modules/@babel/types/lib/retrievers/getBindingIdentifiers.js +4 -14
  147. package/appFiles/node_modules/@babel/types/lib/retrievers/getBindingIdentifiers.js.map +1 -1
  148. package/appFiles/node_modules/@babel/types/lib/retrievers/getOuterBindingIdentifiers.js +0 -3
  149. package/appFiles/node_modules/@babel/types/lib/retrievers/getOuterBindingIdentifiers.js.map +1 -1
  150. package/appFiles/node_modules/@babel/types/lib/traverse/traverse.js +0 -7
  151. package/appFiles/node_modules/@babel/types/lib/traverse/traverse.js.map +1 -1
  152. package/appFiles/node_modules/@babel/types/lib/traverse/traverseFast.js +2 -5
  153. package/appFiles/node_modules/@babel/types/lib/traverse/traverseFast.js.map +1 -1
  154. package/appFiles/node_modules/@babel/types/lib/utils/inherit.js +0 -1
  155. package/appFiles/node_modules/@babel/types/lib/utils/inherit.js.map +1 -1
  156. package/appFiles/node_modules/@babel/types/lib/utils/react/cleanJSXElementLiteralChild.js +1 -8
  157. package/appFiles/node_modules/@babel/types/lib/utils/react/cleanJSXElementLiteralChild.js.map +1 -1
  158. package/appFiles/node_modules/@babel/types/lib/utils/shallowEqual.js +2 -4
  159. package/appFiles/node_modules/@babel/types/lib/utils/shallowEqual.js.map +1 -1
  160. package/appFiles/node_modules/@babel/types/lib/validators/buildMatchMemberExpression.js +0 -2
  161. package/appFiles/node_modules/@babel/types/lib/validators/buildMatchMemberExpression.js.map +1 -1
  162. package/appFiles/node_modules/@babel/types/lib/validators/generated/index.js +0 -906
  163. package/appFiles/node_modules/@babel/types/lib/validators/generated/index.js.map +1 -1
  164. package/appFiles/node_modules/@babel/types/lib/validators/is.js +0 -8
  165. package/appFiles/node_modules/@babel/types/lib/validators/is.js.map +1 -1
  166. package/appFiles/node_modules/@babel/types/lib/validators/isBinding.js +4 -8
  167. package/appFiles/node_modules/@babel/types/lib/validators/isBinding.js.map +1 -1
  168. package/appFiles/node_modules/@babel/types/lib/validators/isBlockScoped.js +0 -3
  169. package/appFiles/node_modules/@babel/types/lib/validators/isBlockScoped.js.map +1 -1
  170. package/appFiles/node_modules/@babel/types/lib/validators/isImmutable.js +0 -5
  171. package/appFiles/node_modules/@babel/types/lib/validators/isImmutable.js.map +1 -1
  172. package/appFiles/node_modules/@babel/types/lib/validators/isLet.js +2 -4
  173. package/appFiles/node_modules/@babel/types/lib/validators/isLet.js.map +1 -1
  174. package/appFiles/node_modules/@babel/types/lib/validators/isNode.js +0 -2
  175. package/appFiles/node_modules/@babel/types/lib/validators/isNode.js.map +1 -1
  176. package/appFiles/node_modules/@babel/types/lib/validators/isNodesEquivalent.js +2 -16
  177. package/appFiles/node_modules/@babel/types/lib/validators/isNodesEquivalent.js.map +1 -1
  178. package/appFiles/node_modules/@babel/types/lib/validators/isPlaceholderType.js +0 -4
  179. package/appFiles/node_modules/@babel/types/lib/validators/isPlaceholderType.js.map +1 -1
  180. package/appFiles/node_modules/@babel/types/lib/validators/isReferenced.js +0 -13
  181. package/appFiles/node_modules/@babel/types/lib/validators/isReferenced.js.map +1 -1
  182. package/appFiles/node_modules/@babel/types/lib/validators/isScope.js +0 -3
  183. package/appFiles/node_modules/@babel/types/lib/validators/isScope.js.map +1 -1
  184. package/appFiles/node_modules/@babel/types/lib/validators/isSpecifierDefault.js +2 -3
  185. package/appFiles/node_modules/@babel/types/lib/validators/isSpecifierDefault.js.map +1 -1
  186. package/appFiles/node_modules/@babel/types/lib/validators/isType.js +1 -5
  187. package/appFiles/node_modules/@babel/types/lib/validators/isType.js.map +1 -1
  188. package/appFiles/node_modules/@babel/types/lib/validators/isValidES3Identifier.js +0 -2
  189. package/appFiles/node_modules/@babel/types/lib/validators/isValidES3Identifier.js.map +1 -1
  190. package/appFiles/node_modules/@babel/types/lib/validators/isValidIdentifier.js +0 -4
  191. package/appFiles/node_modules/@babel/types/lib/validators/isValidIdentifier.js.map +1 -1
  192. package/appFiles/node_modules/@babel/types/lib/validators/isVar.js +2 -4
  193. package/appFiles/node_modules/@babel/types/lib/validators/isVar.js.map +1 -1
  194. package/appFiles/node_modules/@babel/types/lib/validators/matchesPattern.js +0 -8
  195. package/appFiles/node_modules/@babel/types/lib/validators/matchesPattern.js.map +1 -1
  196. package/appFiles/node_modules/@babel/types/lib/validators/react/isCompatTag.js +0 -1
  197. package/appFiles/node_modules/@babel/types/lib/validators/react/isCompatTag.js.map +1 -1
  198. package/appFiles/node_modules/@babel/types/lib/validators/react/isReactComponent.js +0 -2
  199. package/appFiles/node_modules/@babel/types/lib/validators/react/isReactComponent.js.map +1 -1
  200. package/appFiles/node_modules/@babel/types/lib/validators/validate.js +0 -4
  201. package/appFiles/node_modules/@babel/types/lib/validators/validate.js.map +1 -1
  202. package/appFiles/node_modules/@babel/types/package.json +3 -3
  203. package/appFiles/node_modules/regenerator-runtime/package.json +2 -2
  204. package/appFiles/node_modules/regenerator-runtime/runtime.js +18 -17
  205. package/appFiles/src/App.tsx +0 -12
  206. package/appFiles/src/fields/rich-text/monaco/mdx.js +0 -46
  207. package/appFiles/src/lib/machines/query-machine.ts +130 -2
  208. package/appFiles/src/preview.tsx +9 -15
  209. package/dist/index.js +1 -1
  210. package/package.json +4 -4
  211. package/appFiles/node_modules/@babel/types/lib/index.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"names":["isClassDeclaration","isExportDefaultSpecifier","isExportNamespaceSpecifier","isImportDefaultSpecifier","isImportNamespaceSpecifier","isStatement","ImportSpecifier","node","importKind","word","space","print","imported","local","name","ImportDefaultSpecifier","ExportDefaultSpecifier","exported","ExportSpecifier","exportKind","ExportNamespaceSpecifier","token","_printAssertions","printList","assertions","ExportAllDeclaration","length","ensureNoLineTerminator","source","semicolon","ExportNamedDeclaration","format","decoratorsBeforeExport","declaration","printJoin","decorators","declar","specifiers","slice","hasSpecial","first","shift","ExportDefaultDeclaration","noIndentInnerCommentsHere","ImportDeclaration","isTypeKind","module","hasSpecifiers","attributes","ImportAttribute","key","value","ImportNamespaceSpecifier"],"sources":["../../src/generators/modules.ts"],"sourcesContent":["import type Printer from \"../printer\";\nimport {\n isClassDeclaration,\n isExportDefaultSpecifier,\n isExportNamespaceSpecifier,\n isImportDefaultSpecifier,\n isImportNamespaceSpecifier,\n isStatement,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\n\nexport function ImportSpecifier(this: Printer, node: t.ImportSpecifier) {\n if (node.importKind === \"type\" || node.importKind === \"typeof\") {\n this.word(node.importKind);\n this.space();\n }\n\n this.print(node.imported, node);\n // @ts-expect-error todo(flow-ts) maybe check node type instead of relying on name to be undefined on t.StringLiteral\n if (node.local && node.local.name !== node.imported.name) {\n this.space();\n this.word(\"as\");\n this.space();\n this.print(node.local, node);\n }\n}\n\nexport function ImportDefaultSpecifier(\n this: Printer,\n node: t.ImportDefaultSpecifier,\n) {\n this.print(node.local, node);\n}\n\nexport function ExportDefaultSpecifier(\n this: Printer,\n node: t.ExportDefaultSpecifier,\n) {\n this.print(node.exported, node);\n}\n\nexport function ExportSpecifier(this: Printer, node: t.ExportSpecifier) {\n if (node.exportKind === \"type\") {\n this.word(\"type\");\n this.space();\n }\n\n this.print(node.local, node);\n // @ts-expect-error todo(flow-ts) maybe check node type instead of relying on name to be undefined on t.StringLiteral\n if (node.exported && node.local.name !== node.exported.name) {\n this.space();\n this.word(\"as\");\n this.space();\n this.print(node.exported, node);\n }\n}\n\nexport function ExportNamespaceSpecifier(\n this: Printer,\n node: t.ExportNamespaceSpecifier,\n) {\n this.token(\"*\");\n this.space();\n this.word(\"as\");\n this.space();\n this.print(node.exported, node);\n}\n\nexport function _printAssertions(\n this: Printer,\n node: Extract<t.Node, { assertions?: t.ImportAttribute[] }>,\n) {\n this.space();\n this.token(\"{\");\n this.space();\n this.printList(node.assertions, node);\n this.space();\n this.token(\"}\");\n}\n\nexport function ExportAllDeclaration(\n this: Printer,\n node: t.ExportAllDeclaration | t.DeclareExportAllDeclaration,\n) {\n this.word(\"export\");\n this.space();\n if (node.exportKind === \"type\") {\n this.word(\"type\");\n this.space();\n }\n this.token(\"*\");\n this.space();\n this.word(\"from\");\n this.space();\n // @ts-expect-error Fixme: assertions is not defined in DeclareExportAllDeclaration\n if (node.assertions?.length) {\n this.ensureNoLineTerminator(() => {\n this.print(node.source, node);\n this.space();\n this.word(\"assert\");\n });\n // @ts-expect-error Fixme: assertions is not defined in DeclareExportAllDeclaration\n this._printAssertions(node);\n } else {\n this.print(node.source, node);\n }\n\n this.semicolon();\n}\n\nexport function ExportNamedDeclaration(\n this: Printer,\n node: t.ExportNamedDeclaration,\n) {\n if (!process.env.BABEL_8_BREAKING) {\n if (\n this.format.decoratorsBeforeExport &&\n isClassDeclaration(node.declaration)\n ) {\n this.printJoin(node.declaration.decorators, node);\n }\n }\n\n this.word(\"export\");\n this.space();\n if (node.declaration) {\n const declar = node.declaration;\n this.print(declar, node);\n if (!isStatement(declar)) this.semicolon();\n } else {\n if (node.exportKind === \"type\") {\n this.word(\"type\");\n this.space();\n }\n\n const specifiers = node.specifiers.slice(0);\n\n // print \"special\" specifiers first\n let hasSpecial = false;\n for (;;) {\n const first = specifiers[0];\n if (\n isExportDefaultSpecifier(first) ||\n isExportNamespaceSpecifier(first)\n ) {\n hasSpecial = true;\n this.print(specifiers.shift(), node);\n if (specifiers.length) {\n this.token(\",\");\n this.space();\n }\n } else {\n break;\n }\n }\n\n if (specifiers.length || (!specifiers.length && !hasSpecial)) {\n this.token(\"{\");\n if (specifiers.length) {\n this.space();\n this.printList(specifiers, node);\n this.space();\n }\n this.token(\"}\");\n }\n\n if (node.source) {\n this.space();\n this.word(\"from\");\n this.space();\n if (node.assertions?.length) {\n this.ensureNoLineTerminator(() => {\n this.print(node.source, node);\n this.space();\n this.word(\"assert\");\n });\n this._printAssertions(node);\n } else {\n this.print(node.source, node);\n }\n }\n\n this.semicolon();\n }\n}\n\nexport function ExportDefaultDeclaration(\n this: Printer,\n node: t.ExportDefaultDeclaration,\n) {\n if (!process.env.BABEL_8_BREAKING) {\n if (\n this.format.decoratorsBeforeExport &&\n isClassDeclaration(node.declaration)\n ) {\n this.printJoin(node.declaration.decorators, node);\n }\n }\n\n this.word(\"export\");\n this.noIndentInnerCommentsHere();\n this.space();\n this.word(\"default\");\n this.space();\n const declar = node.declaration;\n this.print(declar, node);\n if (!isStatement(declar)) this.semicolon();\n}\n\nexport function ImportDeclaration(this: Printer, node: t.ImportDeclaration) {\n this.word(\"import\");\n this.space();\n\n const isTypeKind = node.importKind === \"type\" || node.importKind === \"typeof\";\n if (isTypeKind) {\n this.noIndentInnerCommentsHere();\n this.word(node.importKind);\n this.space();\n } else if (node.module) {\n this.noIndentInnerCommentsHere();\n this.word(\"module\");\n this.space();\n }\n\n const specifiers = node.specifiers.slice(0);\n const hasSpecifiers = !!specifiers.length;\n // print \"special\" specifiers first. The loop condition is constant,\n // but there is a \"break\" in the body.\n while (hasSpecifiers) {\n const first = specifiers[0];\n if (isImportDefaultSpecifier(first) || isImportNamespaceSpecifier(first)) {\n this.print(specifiers.shift(), node);\n if (specifiers.length) {\n this.token(\",\");\n this.space();\n }\n } else {\n break;\n }\n }\n\n if (specifiers.length) {\n this.token(\"{\");\n this.space();\n this.printList(specifiers, node);\n this.space();\n this.token(\"}\");\n } else if (isTypeKind && !hasSpecifiers) {\n this.token(\"{\");\n this.token(\"}\");\n }\n\n if (hasSpecifiers || isTypeKind) {\n this.space();\n this.word(\"from\");\n this.space();\n }\n\n if (node.assertions?.length) {\n this.print(node.source, node, true);\n this.ensureNoLineTerminator(() => {\n this.space();\n this.word(\"assert\");\n });\n this._printAssertions(node);\n } else {\n this.print(node.source, node);\n }\n if (!process.env.BABEL_8_BREAKING) {\n // @ts-ignore(Babel 7 vs Babel 8) Babel 7 supports module attributes\n if (node.attributes?.length) {\n this.space();\n this.word(\"with\");\n this.space();\n // @ts-ignore(Babel 7 vs Babel 8) Babel 7 supports module attributes\n this.printList(node.attributes, node);\n }\n }\n\n this.semicolon();\n}\n\nexport function ImportAttribute(this: Printer, node: t.ImportAttribute) {\n this.print(node.key);\n this.token(\":\");\n this.space();\n this.print(node.value);\n}\n\nexport function ImportNamespaceSpecifier(\n this: Printer,\n node: t.ImportNamespaceSpecifier,\n) {\n this.token(\"*\");\n this.space();\n this.word(\"as\");\n this.space();\n this.print(node.local, node);\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["isClassDeclaration","isExportDefaultSpecifier","isExportNamespaceSpecifier","isImportDefaultSpecifier","isImportNamespaceSpecifier","isStatement","ImportSpecifier","node","importKind","word","space","print","imported","local","name","ImportDefaultSpecifier","ExportDefaultSpecifier","exported","ExportSpecifier","exportKind","ExportNamespaceSpecifier","token","_printAssertions","printList","assertions","ExportAllDeclaration","length","source","semicolon","ExportNamedDeclaration","format","decoratorsBeforeExport","declaration","printJoin","decorators","declar","specifiers","slice","hasSpecial","first","shift","ExportDefaultDeclaration","noIndentInnerCommentsHere","ImportDeclaration","isTypeKind","module","hasSpecifiers","attributes","ImportAttribute","key","value","ImportNamespaceSpecifier"],"sources":["../../src/generators/modules.ts"],"sourcesContent":["import type Printer from \"../printer\";\nimport {\n isClassDeclaration,\n isExportDefaultSpecifier,\n isExportNamespaceSpecifier,\n isImportDefaultSpecifier,\n isImportNamespaceSpecifier,\n isStatement,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\n\nexport function ImportSpecifier(this: Printer, node: t.ImportSpecifier) {\n if (node.importKind === \"type\" || node.importKind === \"typeof\") {\n this.word(node.importKind);\n this.space();\n }\n\n this.print(node.imported, node);\n // @ts-expect-error todo(flow-ts) maybe check node type instead of relying on name to be undefined on t.StringLiteral\n if (node.local && node.local.name !== node.imported.name) {\n this.space();\n this.word(\"as\");\n this.space();\n this.print(node.local, node);\n }\n}\n\nexport function ImportDefaultSpecifier(\n this: Printer,\n node: t.ImportDefaultSpecifier,\n) {\n this.print(node.local, node);\n}\n\nexport function ExportDefaultSpecifier(\n this: Printer,\n node: t.ExportDefaultSpecifier,\n) {\n this.print(node.exported, node);\n}\n\nexport function ExportSpecifier(this: Printer, node: t.ExportSpecifier) {\n if (node.exportKind === \"type\") {\n this.word(\"type\");\n this.space();\n }\n\n this.print(node.local, node);\n // @ts-expect-error todo(flow-ts) maybe check node type instead of relying on name to be undefined on t.StringLiteral\n if (node.exported && node.local.name !== node.exported.name) {\n this.space();\n this.word(\"as\");\n this.space();\n this.print(node.exported, node);\n }\n}\n\nexport function ExportNamespaceSpecifier(\n this: Printer,\n node: t.ExportNamespaceSpecifier,\n) {\n this.token(\"*\");\n this.space();\n this.word(\"as\");\n this.space();\n this.print(node.exported, node);\n}\n\nexport function _printAssertions(\n this: Printer,\n node: Extract<t.Node, { assertions?: t.ImportAttribute[] }>,\n) {\n this.word(\"assert\");\n this.space();\n this.token(\"{\");\n this.space();\n this.printList(node.assertions, node);\n this.space();\n this.token(\"}\");\n}\n\nexport function ExportAllDeclaration(\n this: Printer,\n node: t.ExportAllDeclaration | t.DeclareExportAllDeclaration,\n) {\n this.word(\"export\");\n this.space();\n if (node.exportKind === \"type\") {\n this.word(\"type\");\n this.space();\n }\n this.token(\"*\");\n this.space();\n this.word(\"from\");\n this.space();\n // @ts-expect-error Fixme: assertions is not defined in DeclareExportAllDeclaration\n if (node.assertions?.length) {\n this.print(node.source, node, true);\n this.space();\n // @ts-expect-error Fixme: assertions is not defined in DeclareExportAllDeclaration\n this._printAssertions(node);\n } else {\n this.print(node.source, node);\n }\n\n this.semicolon();\n}\n\nexport function ExportNamedDeclaration(\n this: Printer,\n node: t.ExportNamedDeclaration,\n) {\n if (!process.env.BABEL_8_BREAKING) {\n if (\n this.format.decoratorsBeforeExport &&\n isClassDeclaration(node.declaration)\n ) {\n this.printJoin(node.declaration.decorators, node);\n }\n }\n\n this.word(\"export\");\n this.space();\n if (node.declaration) {\n const declar = node.declaration;\n this.print(declar, node);\n if (!isStatement(declar)) this.semicolon();\n } else {\n if (node.exportKind === \"type\") {\n this.word(\"type\");\n this.space();\n }\n\n const specifiers = node.specifiers.slice(0);\n\n // print \"special\" specifiers first\n let hasSpecial = false;\n for (;;) {\n const first = specifiers[0];\n if (\n isExportDefaultSpecifier(first) ||\n isExportNamespaceSpecifier(first)\n ) {\n hasSpecial = true;\n this.print(specifiers.shift(), node);\n if (specifiers.length) {\n this.token(\",\");\n this.space();\n }\n } else {\n break;\n }\n }\n\n if (specifiers.length || (!specifiers.length && !hasSpecial)) {\n this.token(\"{\");\n if (specifiers.length) {\n this.space();\n this.printList(specifiers, node);\n this.space();\n }\n this.token(\"}\");\n }\n\n if (node.source) {\n this.space();\n this.word(\"from\");\n this.space();\n if (node.assertions?.length) {\n this.print(node.source, node, true);\n this.space();\n this._printAssertions(node);\n } else {\n this.print(node.source, node);\n }\n }\n\n this.semicolon();\n }\n}\n\nexport function ExportDefaultDeclaration(\n this: Printer,\n node: t.ExportDefaultDeclaration,\n) {\n if (!process.env.BABEL_8_BREAKING) {\n if (\n this.format.decoratorsBeforeExport &&\n isClassDeclaration(node.declaration)\n ) {\n this.printJoin(node.declaration.decorators, node);\n }\n }\n\n this.word(\"export\");\n this.noIndentInnerCommentsHere();\n this.space();\n this.word(\"default\");\n this.space();\n const declar = node.declaration;\n this.print(declar, node);\n if (!isStatement(declar)) this.semicolon();\n}\n\nexport function ImportDeclaration(this: Printer, node: t.ImportDeclaration) {\n this.word(\"import\");\n this.space();\n\n const isTypeKind = node.importKind === \"type\" || node.importKind === \"typeof\";\n if (isTypeKind) {\n this.noIndentInnerCommentsHere();\n this.word(node.importKind);\n this.space();\n } else if (node.module) {\n this.noIndentInnerCommentsHere();\n this.word(\"module\");\n this.space();\n }\n\n const specifiers = node.specifiers.slice(0);\n const hasSpecifiers = !!specifiers.length;\n // print \"special\" specifiers first. The loop condition is constant,\n // but there is a \"break\" in the body.\n while (hasSpecifiers) {\n const first = specifiers[0];\n if (isImportDefaultSpecifier(first) || isImportNamespaceSpecifier(first)) {\n this.print(specifiers.shift(), node);\n if (specifiers.length) {\n this.token(\",\");\n this.space();\n }\n } else {\n break;\n }\n }\n\n if (specifiers.length) {\n this.token(\"{\");\n this.space();\n this.printList(specifiers, node);\n this.space();\n this.token(\"}\");\n } else if (isTypeKind && !hasSpecifiers) {\n this.token(\"{\");\n this.token(\"}\");\n }\n\n if (hasSpecifiers || isTypeKind) {\n this.space();\n this.word(\"from\");\n this.space();\n }\n\n if (node.assertions?.length) {\n this.print(node.source, node, true);\n this.space();\n this._printAssertions(node);\n } else {\n this.print(node.source, node);\n }\n if (!process.env.BABEL_8_BREAKING) {\n // @ts-ignore(Babel 7 vs Babel 8) Babel 7 supports module attributes\n if (node.attributes?.length) {\n this.space();\n this.word(\"with\");\n this.space();\n // @ts-ignore(Babel 7 vs Babel 8) Babel 7 supports module attributes\n this.printList(node.attributes, node);\n }\n }\n\n this.semicolon();\n}\n\nexport function ImportAttribute(this: Printer, node: t.ImportAttribute) {\n this.print(node.key);\n this.token(\":\");\n this.space();\n this.print(node.value);\n}\n\nexport function ImportNamespaceSpecifier(\n this: Printer,\n node: t.ImportNamespaceSpecifier,\n) {\n this.token(\"*\");\n this.space();\n this.word(\"as\");\n this.space();\n this.print(node.local, node);\n}\n"],"mappings":"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"}
@@ -238,13 +238,7 @@ function VariableDeclaration(node, parent) {
238
238
  const {
239
239
  kind
240
240
  } = node;
241
- this.word(kind);
242
- const {
243
- _noLineTerminator
244
- } = this;
245
- if (kind === "using") {
246
- this._noLineTerminator = true;
247
- }
241
+ this.word(kind, kind === "using");
248
242
  this.space();
249
243
  let hasInits = false;
250
244
  if (!isFor(parent)) {
@@ -255,20 +249,11 @@ function VariableDeclaration(node, parent) {
255
249
  }
256
250
  }
257
251
 
258
- let iterator;
259
- if (kind === "using") {
260
- iterator = (_, i) => {
261
- if (i === 0) {
262
- this._noLineTerminator = _noLineTerminator;
263
- }
264
- };
265
- }
266
252
  this.printList(node.declarations, node, {
267
253
  separator: hasInits ? function () {
268
254
  this.tokenChar(44);
269
255
  this.newline();
270
256
  } : undefined,
271
- iterator,
272
257
  indent: node.declarations.length > 1 ? true : false
273
258
  });
274
259
  if (isFor(parent)) {
@@ -1 +1 @@
1
- {"version":3,"names":["isFor","isForStatement","isIfStatement","isStatement","WithStatement","node","word","space","token","print","object","printBlock","IfStatement","test","needsBlock","alternate","getLastStatement","consequent","newline","indent","printAndIndentOnComments","dedent","endsWith","statement","body","ForStatement","inForStatementInitCounter","init","update","WhileStatement","ForXStatement","isForOf","type","await","noIndentInnerCommentsHere","left","right","ForInStatement","ForOfStatement","DoWhileStatement","semicolon","printStatementAfterKeyword","printer","parent","isLabel","printTerminatorless","BreakStatement","label","ContinueStatement","ReturnStatement","argument","ThrowStatement","LabeledStatement","TryStatement","block","handlers","handler","finalizer","CatchClause","param","typeAnnotation","SwitchStatement","discriminant","printSequence","cases","addNewlines","leading","cas","length","SwitchCase","DebuggerStatement","VariableDeclaration","declare","kind","_noLineTerminator","hasInits","declar","declarations","iterator","_","i","printList","separator","undefined","VariableDeclarator","id","definite"],"sources":["../../src/generators/statements.ts"],"sourcesContent":["import type Printer from \"../printer\";\nimport type { PrintJoinOptions } from \"../printer\";\nimport {\n isFor,\n isForStatement,\n isIfStatement,\n isStatement,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\nimport * as charCodes from \"charcodes\";\n\nexport function WithStatement(this: Printer, node: t.WithStatement) {\n this.word(\"with\");\n this.space();\n this.token(\"(\");\n this.print(node.object, node);\n this.token(\")\");\n this.printBlock(node);\n}\n\nexport function IfStatement(this: Printer, node: t.IfStatement) {\n this.word(\"if\");\n this.space();\n this.token(\"(\");\n this.print(node.test, node);\n this.token(\")\");\n this.space();\n\n const needsBlock =\n node.alternate && isIfStatement(getLastStatement(node.consequent));\n if (needsBlock) {\n this.token(\"{\");\n this.newline();\n this.indent();\n }\n\n this.printAndIndentOnComments(node.consequent, node);\n\n if (needsBlock) {\n this.dedent();\n this.newline();\n this.token(\"}\");\n }\n\n if (node.alternate) {\n if (this.endsWith(charCodes.rightCurlyBrace)) this.space();\n this.word(\"else\");\n this.space();\n this.printAndIndentOnComments(node.alternate, node);\n }\n}\n\n// Recursively get the last statement.\nfunction getLastStatement(statement: t.Statement): t.Statement {\n // @ts-expect-error: If statement.body is empty or not a Node, isStatement will return false\n const { body } = statement;\n if (isStatement(body) === false) {\n return statement;\n }\n\n return getLastStatement(body);\n}\n\nexport function ForStatement(this: Printer, node: t.ForStatement) {\n this.word(\"for\");\n this.space();\n this.token(\"(\");\n\n this.inForStatementInitCounter++;\n this.print(node.init, node);\n this.inForStatementInitCounter--;\n this.token(\";\");\n\n if (node.test) {\n this.space();\n this.print(node.test, node);\n }\n this.token(\";\");\n\n if (node.update) {\n this.space();\n this.print(node.update, node);\n }\n\n this.token(\")\");\n this.printBlock(node);\n}\n\nexport function WhileStatement(this: Printer, node: t.WhileStatement) {\n this.word(\"while\");\n this.space();\n this.token(\"(\");\n this.print(node.test, node);\n this.token(\")\");\n this.printBlock(node);\n}\n\nfunction ForXStatement(this: Printer, node: t.ForXStatement) {\n this.word(\"for\");\n this.space();\n const isForOf = node.type === \"ForOfStatement\";\n if (isForOf && node.await) {\n this.word(\"await\");\n this.space();\n }\n this.noIndentInnerCommentsHere();\n this.token(\"(\");\n this.print(node.left, node);\n this.space();\n this.word(isForOf ? \"of\" : \"in\");\n this.space();\n this.print(node.right, node);\n this.token(\")\");\n this.printBlock(node);\n}\n\nexport const ForInStatement = ForXStatement;\nexport const ForOfStatement = ForXStatement;\n\nexport function DoWhileStatement(this: Printer, node: t.DoWhileStatement) {\n this.word(\"do\");\n this.space();\n this.print(node.body, node);\n this.space();\n this.word(\"while\");\n this.space();\n this.token(\"(\");\n this.print(node.test, node);\n this.token(\")\");\n this.semicolon();\n}\n\nfunction printStatementAfterKeyword(\n printer: Printer,\n node: t.Node,\n parent: t.Node,\n isLabel: boolean,\n) {\n if (node) {\n printer.space();\n printer.printTerminatorless(node, parent, isLabel);\n }\n\n printer.semicolon();\n}\n\nexport function BreakStatement(this: Printer, node: t.ContinueStatement) {\n this.word(\"break\");\n printStatementAfterKeyword(this, node.label, node, true);\n}\n\nexport function ContinueStatement(this: Printer, node: t.ContinueStatement) {\n this.word(\"continue\");\n printStatementAfterKeyword(this, node.label, node, true);\n}\n\nexport function ReturnStatement(this: Printer, node: t.ReturnStatement) {\n this.word(\"return\");\n printStatementAfterKeyword(this, node.argument, node, false);\n}\n\nexport function ThrowStatement(this: Printer, node: t.ThrowStatement) {\n this.word(\"throw\");\n printStatementAfterKeyword(this, node.argument, node, false);\n}\n\nexport function LabeledStatement(this: Printer, node: t.LabeledStatement) {\n this.print(node.label, node);\n this.token(\":\");\n this.space();\n this.print(node.body, node);\n}\n\nexport function TryStatement(this: Printer, node: t.TryStatement) {\n this.word(\"try\");\n this.space();\n this.print(node.block, node);\n this.space();\n\n // Esprima bug puts the catch clause in a `handlers` array.\n // see https://code.google.com/p/esprima/issues/detail?id=433\n // We run into this from regenerator generated ast.\n // @ts-expect-error todo(flow->ts) should ast node type be updated to support this?\n if (node.handlers) {\n // @ts-expect-error todo(flow->ts) should ast node type be updated to support this?\n this.print(node.handlers[0], node);\n } else {\n this.print(node.handler, node);\n }\n\n if (node.finalizer) {\n this.space();\n this.word(\"finally\");\n this.space();\n this.print(node.finalizer, node);\n }\n}\n\nexport function CatchClause(this: Printer, node: t.CatchClause) {\n this.word(\"catch\");\n this.space();\n if (node.param) {\n this.token(\"(\");\n this.print(node.param, node);\n this.print(node.param.typeAnnotation, node);\n this.token(\")\");\n this.space();\n }\n this.print(node.body, node);\n}\n\nexport function SwitchStatement(this: Printer, node: t.SwitchStatement) {\n this.word(\"switch\");\n this.space();\n this.token(\"(\");\n this.print(node.discriminant, node);\n this.token(\")\");\n this.space();\n this.token(\"{\");\n\n this.printSequence(node.cases, node, {\n indent: true,\n addNewlines(leading, cas) {\n if (!leading && node.cases[node.cases.length - 1] === cas) return -1;\n },\n });\n\n this.token(\"}\");\n}\n\nexport function SwitchCase(this: Printer, node: t.SwitchCase) {\n if (node.test) {\n this.word(\"case\");\n this.space();\n this.print(node.test, node);\n this.token(\":\");\n } else {\n this.word(\"default\");\n this.token(\":\");\n }\n\n if (node.consequent.length) {\n this.newline();\n this.printSequence(node.consequent, node, { indent: true });\n }\n}\n\nexport function DebuggerStatement(this: Printer) {\n this.word(\"debugger\");\n this.semicolon();\n}\n\nexport function VariableDeclaration(\n this: Printer,\n node: t.VariableDeclaration,\n parent: t.Node,\n) {\n if (node.declare) {\n // TS\n this.word(\"declare\");\n this.space();\n }\n\n const { kind } = node;\n this.word(kind);\n const { _noLineTerminator } = this;\n if (kind === \"using\") {\n // ensure no line break after `using`\n this._noLineTerminator = true;\n }\n this.space();\n\n let hasInits = false;\n // don't add whitespace to loop heads\n if (!isFor(parent)) {\n for (const declar of node.declarations) {\n if (declar.init) {\n // has an init so let's split it up over multiple lines\n hasInits = true;\n }\n }\n }\n\n //\n // use a pretty separator when we aren't in compact mode, have initializers and don't have retainLines on\n // this will format declarations like:\n //\n // let foo = \"bar\", bar = \"foo\";\n //\n // into\n //\n // let foo = \"bar\",\n // bar = \"foo\";\n //\n\n let iterator: PrintJoinOptions[\"iterator\"] | undefined;\n if (kind === \"using\") {\n // Ensure no line break between `using` and the first declarator\n iterator = (_, i: number) => {\n if (i === 0) {\n this._noLineTerminator = _noLineTerminator;\n }\n };\n }\n\n this.printList(node.declarations, node, {\n separator: hasInits\n ? function (this: Printer) {\n this.token(\",\");\n this.newline();\n }\n : undefined,\n iterator,\n indent: node.declarations.length > 1 ? true : false,\n });\n\n if (isFor(parent)) {\n // don't give semicolons to these nodes since they'll be inserted in the parent generator\n if (isForStatement(parent)) {\n if (parent.init === node) return;\n } else {\n if (parent.left === node) return;\n }\n }\n\n this.semicolon();\n}\n\nexport function VariableDeclarator(this: Printer, node: t.VariableDeclarator) {\n this.print(node.id, node);\n if (node.definite) this.token(\"!\"); // TS\n // @ts-expect-error todo(flow-ts) Property 'typeAnnotation' does not exist on type 'MemberExpression'.\n this.print(node.id.typeAnnotation, node);\n if (node.init) {\n this.space();\n this.token(\"=\");\n this.space();\n this.print(node.init, node);\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["isFor","isForStatement","isIfStatement","isStatement","WithStatement","node","word","space","token","print","object","printBlock","IfStatement","test","needsBlock","alternate","getLastStatement","consequent","newline","indent","printAndIndentOnComments","dedent","endsWith","statement","body","ForStatement","inForStatementInitCounter","init","update","WhileStatement","ForXStatement","isForOf","type","await","noIndentInnerCommentsHere","left","right","ForInStatement","ForOfStatement","DoWhileStatement","semicolon","printStatementAfterKeyword","printer","parent","isLabel","printTerminatorless","BreakStatement","label","ContinueStatement","ReturnStatement","argument","ThrowStatement","LabeledStatement","TryStatement","block","handlers","handler","finalizer","CatchClause","param","typeAnnotation","SwitchStatement","discriminant","printSequence","cases","addNewlines","leading","cas","length","SwitchCase","DebuggerStatement","VariableDeclaration","declare","kind","hasInits","declar","declarations","printList","separator","undefined","VariableDeclarator","id","definite"],"sources":["../../src/generators/statements.ts"],"sourcesContent":["import type Printer from \"../printer\";\nimport {\n isFor,\n isForStatement,\n isIfStatement,\n isStatement,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\nimport * as charCodes from \"charcodes\";\n\nexport function WithStatement(this: Printer, node: t.WithStatement) {\n this.word(\"with\");\n this.space();\n this.token(\"(\");\n this.print(node.object, node);\n this.token(\")\");\n this.printBlock(node);\n}\n\nexport function IfStatement(this: Printer, node: t.IfStatement) {\n this.word(\"if\");\n this.space();\n this.token(\"(\");\n this.print(node.test, node);\n this.token(\")\");\n this.space();\n\n const needsBlock =\n node.alternate && isIfStatement(getLastStatement(node.consequent));\n if (needsBlock) {\n this.token(\"{\");\n this.newline();\n this.indent();\n }\n\n this.printAndIndentOnComments(node.consequent, node);\n\n if (needsBlock) {\n this.dedent();\n this.newline();\n this.token(\"}\");\n }\n\n if (node.alternate) {\n if (this.endsWith(charCodes.rightCurlyBrace)) this.space();\n this.word(\"else\");\n this.space();\n this.printAndIndentOnComments(node.alternate, node);\n }\n}\n\n// Recursively get the last statement.\nfunction getLastStatement(statement: t.Statement): t.Statement {\n // @ts-expect-error: If statement.body is empty or not a Node, isStatement will return false\n const { body } = statement;\n if (isStatement(body) === false) {\n return statement;\n }\n\n return getLastStatement(body);\n}\n\nexport function ForStatement(this: Printer, node: t.ForStatement) {\n this.word(\"for\");\n this.space();\n this.token(\"(\");\n\n this.inForStatementInitCounter++;\n this.print(node.init, node);\n this.inForStatementInitCounter--;\n this.token(\";\");\n\n if (node.test) {\n this.space();\n this.print(node.test, node);\n }\n this.token(\";\");\n\n if (node.update) {\n this.space();\n this.print(node.update, node);\n }\n\n this.token(\")\");\n this.printBlock(node);\n}\n\nexport function WhileStatement(this: Printer, node: t.WhileStatement) {\n this.word(\"while\");\n this.space();\n this.token(\"(\");\n this.print(node.test, node);\n this.token(\")\");\n this.printBlock(node);\n}\n\nfunction ForXStatement(this: Printer, node: t.ForXStatement) {\n this.word(\"for\");\n this.space();\n const isForOf = node.type === \"ForOfStatement\";\n if (isForOf && node.await) {\n this.word(\"await\");\n this.space();\n }\n this.noIndentInnerCommentsHere();\n this.token(\"(\");\n this.print(node.left, node);\n this.space();\n this.word(isForOf ? \"of\" : \"in\");\n this.space();\n this.print(node.right, node);\n this.token(\")\");\n this.printBlock(node);\n}\n\nexport const ForInStatement = ForXStatement;\nexport const ForOfStatement = ForXStatement;\n\nexport function DoWhileStatement(this: Printer, node: t.DoWhileStatement) {\n this.word(\"do\");\n this.space();\n this.print(node.body, node);\n this.space();\n this.word(\"while\");\n this.space();\n this.token(\"(\");\n this.print(node.test, node);\n this.token(\")\");\n this.semicolon();\n}\n\nfunction printStatementAfterKeyword(\n printer: Printer,\n node: t.Node,\n parent: t.Node,\n isLabel: boolean,\n) {\n if (node) {\n printer.space();\n printer.printTerminatorless(node, parent, isLabel);\n }\n\n printer.semicolon();\n}\n\nexport function BreakStatement(this: Printer, node: t.ContinueStatement) {\n this.word(\"break\");\n printStatementAfterKeyword(this, node.label, node, true);\n}\n\nexport function ContinueStatement(this: Printer, node: t.ContinueStatement) {\n this.word(\"continue\");\n printStatementAfterKeyword(this, node.label, node, true);\n}\n\nexport function ReturnStatement(this: Printer, node: t.ReturnStatement) {\n this.word(\"return\");\n printStatementAfterKeyword(this, node.argument, node, false);\n}\n\nexport function ThrowStatement(this: Printer, node: t.ThrowStatement) {\n this.word(\"throw\");\n printStatementAfterKeyword(this, node.argument, node, false);\n}\n\nexport function LabeledStatement(this: Printer, node: t.LabeledStatement) {\n this.print(node.label, node);\n this.token(\":\");\n this.space();\n this.print(node.body, node);\n}\n\nexport function TryStatement(this: Printer, node: t.TryStatement) {\n this.word(\"try\");\n this.space();\n this.print(node.block, node);\n this.space();\n\n // Esprima bug puts the catch clause in a `handlers` array.\n // see https://code.google.com/p/esprima/issues/detail?id=433\n // We run into this from regenerator generated ast.\n // @ts-expect-error todo(flow->ts) should ast node type be updated to support this?\n if (node.handlers) {\n // @ts-expect-error todo(flow->ts) should ast node type be updated to support this?\n this.print(node.handlers[0], node);\n } else {\n this.print(node.handler, node);\n }\n\n if (node.finalizer) {\n this.space();\n this.word(\"finally\");\n this.space();\n this.print(node.finalizer, node);\n }\n}\n\nexport function CatchClause(this: Printer, node: t.CatchClause) {\n this.word(\"catch\");\n this.space();\n if (node.param) {\n this.token(\"(\");\n this.print(node.param, node);\n this.print(node.param.typeAnnotation, node);\n this.token(\")\");\n this.space();\n }\n this.print(node.body, node);\n}\n\nexport function SwitchStatement(this: Printer, node: t.SwitchStatement) {\n this.word(\"switch\");\n this.space();\n this.token(\"(\");\n this.print(node.discriminant, node);\n this.token(\")\");\n this.space();\n this.token(\"{\");\n\n this.printSequence(node.cases, node, {\n indent: true,\n addNewlines(leading, cas) {\n if (!leading && node.cases[node.cases.length - 1] === cas) return -1;\n },\n });\n\n this.token(\"}\");\n}\n\nexport function SwitchCase(this: Printer, node: t.SwitchCase) {\n if (node.test) {\n this.word(\"case\");\n this.space();\n this.print(node.test, node);\n this.token(\":\");\n } else {\n this.word(\"default\");\n this.token(\":\");\n }\n\n if (node.consequent.length) {\n this.newline();\n this.printSequence(node.consequent, node, { indent: true });\n }\n}\n\nexport function DebuggerStatement(this: Printer) {\n this.word(\"debugger\");\n this.semicolon();\n}\n\nexport function VariableDeclaration(\n this: Printer,\n node: t.VariableDeclaration,\n parent: t.Node,\n) {\n if (node.declare) {\n // TS\n this.word(\"declare\");\n this.space();\n }\n\n const { kind } = node;\n this.word(kind, kind === \"using\");\n this.space();\n\n let hasInits = false;\n // don't add whitespace to loop heads\n if (!isFor(parent)) {\n for (const declar of node.declarations) {\n if (declar.init) {\n // has an init so let's split it up over multiple lines\n hasInits = true;\n }\n }\n }\n\n //\n // use a pretty separator when we aren't in compact mode, have initializers and don't have retainLines on\n // this will format declarations like:\n //\n // let foo = \"bar\", bar = \"foo\";\n //\n // into\n //\n // let foo = \"bar\",\n // bar = \"foo\";\n //\n\n this.printList(node.declarations, node, {\n separator: hasInits\n ? function (this: Printer) {\n this.token(\",\");\n this.newline();\n }\n : undefined,\n indent: node.declarations.length > 1 ? true : false,\n });\n\n if (isFor(parent)) {\n // don't give semicolons to these nodes since they'll be inserted in the parent generator\n if (isForStatement(parent)) {\n if (parent.init === node) return;\n } else {\n if (parent.left === node) return;\n }\n }\n\n this.semicolon();\n}\n\nexport function VariableDeclarator(this: Printer, node: t.VariableDeclarator) {\n this.print(node.id, node);\n if (node.definite) this.token(\"!\"); // TS\n // @ts-expect-error todo(flow-ts) Property 'typeAnnotation' does not exist on type 'MemberExpression'.\n this.print(node.id.typeAnnotation, node);\n if (node.init) {\n this.space();\n this.token(\"=\");\n this.space();\n this.print(node.init, node);\n }\n}\n"],"mappings":"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"}
@@ -65,6 +65,17 @@ function normalizeOptions(code, opts) {
65
65
  if (format.compact) {
66
66
  format.indent.adjustMultilineComment = false;
67
67
  }
68
+ const {
69
+ auxiliaryCommentBefore,
70
+ auxiliaryCommentAfter,
71
+ shouldPrintComment
72
+ } = format;
73
+ if (auxiliaryCommentBefore && !shouldPrintComment(auxiliaryCommentBefore)) {
74
+ format.auxiliaryCommentBefore = undefined;
75
+ }
76
+ if (auxiliaryCommentAfter && !shouldPrintComment(auxiliaryCommentAfter)) {
77
+ format.auxiliaryCommentAfter = undefined;
78
+ }
68
79
  return format;
69
80
  }
70
81
 
@@ -1 +1 @@
1
- {"version":3,"names":["Generator","Printer","constructor","ast","opts","code","format","normalizeOptions","map","sourceMaps","SourceMap","generate","auxiliaryCommentBefore","auxiliaryCommentAfter","shouldPrintComment","retainLines","retainFunctionParens","comments","compact","minified","concise","indent","adjustMultilineComment","style","jsescOption","quotes","wrap","minimal","recordAndTupleSyntaxType","topicToken","decoratorsBeforeExport","jsonCompatibleStrings","value","includes","length","console","error","filename","CodeGenerator","_generator","gen"],"sources":["../src/index.ts"],"sourcesContent":["import SourceMap from \"./source-map\";\nimport Printer from \"./printer\";\nimport type * as t from \"@babel/types\";\nimport type { Opts as jsescOptions } from \"jsesc\";\nimport type { Format } from \"./printer\";\nimport type {\n RecordAndTuplePluginOptions,\n PipelineOperatorPluginOptions,\n} from \"@babel/parser\";\nimport type { DecodedSourceMap, Mapping } from \"@jridgewell/gen-mapping\";\n\n/**\n * Babel's code generator, turns an ast into code, maintaining sourcemaps,\n * user preferences, and valid output.\n */\n\nclass Generator extends Printer {\n constructor(\n ast: t.Node,\n opts: GeneratorOptions = {},\n code: string | { [filename: string]: string },\n ) {\n const format = normalizeOptions(code, opts);\n const map = opts.sourceMaps ? new SourceMap(opts, code) : null;\n super(format, map);\n\n this.ast = ast;\n }\n\n ast: t.Node;\n\n /**\n * Generate code and sourcemap from ast.\n *\n * Appends comments that weren't attached to any node to the end of the generated output.\n */\n\n generate() {\n return super.generate(this.ast);\n }\n}\n\n/**\n * Normalize generator options, setting defaults.\n *\n * - Detects code indentation.\n * - If `opts.compact = \"auto\"` and the code is over 500KB, `compact` will be set to `true`.\n */\n\nfunction normalizeOptions(\n code: string | { [filename: string]: string },\n opts: GeneratorOptions,\n): Format {\n const format: Format = {\n auxiliaryCommentBefore: opts.auxiliaryCommentBefore,\n auxiliaryCommentAfter: opts.auxiliaryCommentAfter,\n shouldPrintComment: opts.shouldPrintComment,\n retainLines: opts.retainLines,\n retainFunctionParens: opts.retainFunctionParens,\n comments: opts.comments == null || opts.comments,\n compact: opts.compact,\n minified: opts.minified,\n concise: opts.concise,\n indent: {\n adjustMultilineComment: true,\n style: \" \",\n },\n jsescOption: {\n quotes: \"double\",\n wrap: true,\n minimal: process.env.BABEL_8_BREAKING ? true : false,\n ...opts.jsescOption,\n },\n recordAndTupleSyntaxType: opts.recordAndTupleSyntaxType,\n topicToken: opts.topicToken,\n };\n\n if (!process.env.BABEL_8_BREAKING) {\n format.decoratorsBeforeExport = !!opts.decoratorsBeforeExport;\n format.jsonCompatibleStrings = opts.jsonCompatibleStrings;\n }\n\n if (format.minified) {\n format.compact = true;\n\n format.shouldPrintComment =\n format.shouldPrintComment || (() => format.comments);\n } else {\n format.shouldPrintComment =\n format.shouldPrintComment ||\n (value =>\n format.comments ||\n value.includes(\"@license\") ||\n value.includes(\"@preserve\"));\n }\n\n if (format.compact === \"auto\") {\n format.compact = code.length > 500_000; // 500KB\n\n if (format.compact) {\n console.error(\n \"[BABEL] Note: The code generator has deoptimised the styling of \" +\n `${opts.filename} as it exceeds the max of ${\"500KB\"}.`,\n );\n }\n }\n\n if (format.compact) {\n format.indent.adjustMultilineComment = false;\n }\n\n return format;\n}\n\nexport interface GeneratorOptions {\n /**\n * Optional string to add as a block comment at the start of the output file.\n */\n auxiliaryCommentBefore?: string;\n\n /**\n * Optional string to add as a block comment at the end of the output file.\n */\n auxiliaryCommentAfter?: string;\n\n /**\n * Function that takes a comment (as a string) and returns true if the comment should be included in the output.\n * By default, comments are included if `opts.comments` is `true` or if `opts.minifed` is `false` and the comment\n * contains `@preserve` or `@license`.\n */\n shouldPrintComment?(comment: string): boolean;\n\n /**\n * Attempt to use the same line numbers in the output code as in the source code (helps preserve stack traces).\n * Defaults to `false`.\n */\n retainLines?: boolean;\n\n /**\n * Retain parens around function expressions (could be used to change engine parsing behavior)\n * Defaults to `false`.\n */\n retainFunctionParens?: boolean;\n\n /**\n * Should comments be included in output? Defaults to `true`.\n */\n comments?: boolean;\n\n /**\n * Set to true to avoid adding whitespace for formatting. Defaults to the value of `opts.minified`.\n */\n compact?: boolean | \"auto\";\n\n /**\n * Should the output be minified. Defaults to `false`.\n */\n minified?: boolean;\n\n /**\n * Set to true to reduce whitespace (but not as much as opts.compact). Defaults to `false`.\n */\n concise?: boolean;\n\n /**\n * Used in warning messages\n */\n filename?: string;\n\n /**\n * Enable generating source maps. Defaults to `false`.\n */\n sourceMaps?: boolean;\n\n /**\n * A root for all relative URLs in the source map.\n */\n sourceRoot?: string;\n\n /**\n * The filename for the source code (i.e. the code in the `code` argument).\n * This will only be used if `code` is a string.\n */\n sourceFileName?: string;\n\n /**\n * Set to true to run jsesc with \"json\": true to print \"\\u00A9\" vs. \"©\";\n * @deprecated use `jsescOptions: { json: true }` instead\n */\n jsonCompatibleStrings?: boolean;\n\n /**\n * Set to true to enable support for experimental decorators syntax before module exports.\n * Defaults to `false`.\n * @deprecated Removed in Babel 8\n */\n decoratorsBeforeExport?: boolean;\n\n /**\n * Options for outputting jsesc representation.\n */\n jsescOption?: jsescOptions;\n\n /**\n * For use with the recordAndTuple token.\n */\n recordAndTupleSyntaxType?: RecordAndTuplePluginOptions[\"syntaxType\"];\n /**\n * For use with the Hack-style pipe operator.\n * Changes what token is used for pipe bodies’ topic references.\n */\n topicToken?: PipelineOperatorPluginOptions[\"topicToken\"];\n}\n\nexport interface GeneratorResult {\n code: string;\n map: {\n version: number;\n sources: readonly string[];\n names: readonly string[];\n sourceRoot?: string;\n sourcesContent?: readonly string[];\n mappings: string;\n file?: string;\n } | null;\n decodedMap: DecodedSourceMap | undefined;\n rawMappings: Mapping[] | undefined;\n}\n\n/**\n * We originally exported the Generator class above, but to make it extra clear that it is a private API,\n * we have moved that to an internal class instance and simplified the interface to the two public methods\n * that we wish to support.\n */\n\nexport class CodeGenerator {\n private _generator: Generator;\n constructor(ast: t.Node, opts?: GeneratorOptions, code?: string) {\n this._generator = new Generator(ast, opts, code);\n }\n generate(): GeneratorResult {\n return this._generator.generate();\n }\n}\n\n/**\n * Turns an AST into code, maintaining sourcemaps, user preferences, and valid output.\n * @param ast - the abstract syntax tree from which to generate output code.\n * @param opts - used for specifying options for code generation.\n * @param code - the original source code, used for source maps.\n * @returns - an object containing the output code and source map.\n */\nexport default function generate(\n ast: t.Node,\n opts?: GeneratorOptions,\n code?: string | { [filename: string]: string },\n) {\n const gen = new Generator(ast, opts, code);\n return gen.generate();\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["Generator","Printer","constructor","ast","opts","code","format","normalizeOptions","map","sourceMaps","SourceMap","generate","auxiliaryCommentBefore","auxiliaryCommentAfter","shouldPrintComment","retainLines","retainFunctionParens","comments","compact","minified","concise","indent","adjustMultilineComment","style","jsescOption","quotes","wrap","minimal","recordAndTupleSyntaxType","topicToken","decoratorsBeforeExport","jsonCompatibleStrings","value","includes","length","console","error","filename","undefined","CodeGenerator","_generator","gen"],"sources":["../src/index.ts"],"sourcesContent":["import SourceMap from \"./source-map\";\nimport Printer from \"./printer\";\nimport type * as t from \"@babel/types\";\nimport type { Opts as jsescOptions } from \"jsesc\";\nimport type { Format } from \"./printer\";\nimport type {\n RecordAndTuplePluginOptions,\n PipelineOperatorPluginOptions,\n} from \"@babel/parser\";\nimport type { DecodedSourceMap, Mapping } from \"@jridgewell/gen-mapping\";\n\n/**\n * Babel's code generator, turns an ast into code, maintaining sourcemaps,\n * user preferences, and valid output.\n */\n\nclass Generator extends Printer {\n constructor(\n ast: t.Node,\n opts: GeneratorOptions = {},\n code: string | { [filename: string]: string },\n ) {\n const format = normalizeOptions(code, opts);\n const map = opts.sourceMaps ? new SourceMap(opts, code) : null;\n super(format, map);\n\n this.ast = ast;\n }\n\n ast: t.Node;\n\n /**\n * Generate code and sourcemap from ast.\n *\n * Appends comments that weren't attached to any node to the end of the generated output.\n */\n\n generate() {\n return super.generate(this.ast);\n }\n}\n\n/**\n * Normalize generator options, setting defaults.\n *\n * - Detects code indentation.\n * - If `opts.compact = \"auto\"` and the code is over 500KB, `compact` will be set to `true`.\n */\n\nfunction normalizeOptions(\n code: string | { [filename: string]: string },\n opts: GeneratorOptions,\n): Format {\n const format: Format = {\n auxiliaryCommentBefore: opts.auxiliaryCommentBefore,\n auxiliaryCommentAfter: opts.auxiliaryCommentAfter,\n shouldPrintComment: opts.shouldPrintComment,\n retainLines: opts.retainLines,\n retainFunctionParens: opts.retainFunctionParens,\n comments: opts.comments == null || opts.comments,\n compact: opts.compact,\n minified: opts.minified,\n concise: opts.concise,\n indent: {\n adjustMultilineComment: true,\n style: \" \",\n },\n jsescOption: {\n quotes: \"double\",\n wrap: true,\n minimal: process.env.BABEL_8_BREAKING ? true : false,\n ...opts.jsescOption,\n },\n recordAndTupleSyntaxType: opts.recordAndTupleSyntaxType,\n topicToken: opts.topicToken,\n };\n\n if (!process.env.BABEL_8_BREAKING) {\n format.decoratorsBeforeExport = !!opts.decoratorsBeforeExport;\n format.jsonCompatibleStrings = opts.jsonCompatibleStrings;\n }\n\n if (format.minified) {\n format.compact = true;\n\n format.shouldPrintComment =\n format.shouldPrintComment || (() => format.comments);\n } else {\n format.shouldPrintComment =\n format.shouldPrintComment ||\n (value =>\n format.comments ||\n value.includes(\"@license\") ||\n value.includes(\"@preserve\"));\n }\n\n if (format.compact === \"auto\") {\n format.compact = code.length > 500_000; // 500KB\n\n if (format.compact) {\n console.error(\n \"[BABEL] Note: The code generator has deoptimised the styling of \" +\n `${opts.filename} as it exceeds the max of ${\"500KB\"}.`,\n );\n }\n }\n\n if (format.compact) {\n format.indent.adjustMultilineComment = false;\n }\n\n const { auxiliaryCommentBefore, auxiliaryCommentAfter, shouldPrintComment } =\n format;\n\n if (auxiliaryCommentBefore && !shouldPrintComment(auxiliaryCommentBefore)) {\n format.auxiliaryCommentBefore = undefined;\n }\n if (auxiliaryCommentAfter && !shouldPrintComment(auxiliaryCommentAfter)) {\n format.auxiliaryCommentAfter = undefined;\n }\n\n return format;\n}\n\nexport interface GeneratorOptions {\n /**\n * Optional string to add as a block comment at the start of the output file.\n */\n auxiliaryCommentBefore?: string;\n\n /**\n * Optional string to add as a block comment at the end of the output file.\n */\n auxiliaryCommentAfter?: string;\n\n /**\n * Function that takes a comment (as a string) and returns true if the comment should be included in the output.\n * By default, comments are included if `opts.comments` is `true` or if `opts.minifed` is `false` and the comment\n * contains `@preserve` or `@license`.\n */\n shouldPrintComment?(comment: string): boolean;\n\n /**\n * Attempt to use the same line numbers in the output code as in the source code (helps preserve stack traces).\n * Defaults to `false`.\n */\n retainLines?: boolean;\n\n /**\n * Retain parens around function expressions (could be used to change engine parsing behavior)\n * Defaults to `false`.\n */\n retainFunctionParens?: boolean;\n\n /**\n * Should comments be included in output? Defaults to `true`.\n */\n comments?: boolean;\n\n /**\n * Set to true to avoid adding whitespace for formatting. Defaults to the value of `opts.minified`.\n */\n compact?: boolean | \"auto\";\n\n /**\n * Should the output be minified. Defaults to `false`.\n */\n minified?: boolean;\n\n /**\n * Set to true to reduce whitespace (but not as much as opts.compact). Defaults to `false`.\n */\n concise?: boolean;\n\n /**\n * Used in warning messages\n */\n filename?: string;\n\n /**\n * Enable generating source maps. Defaults to `false`.\n */\n sourceMaps?: boolean;\n\n /**\n * A root for all relative URLs in the source map.\n */\n sourceRoot?: string;\n\n /**\n * The filename for the source code (i.e. the code in the `code` argument).\n * This will only be used if `code` is a string.\n */\n sourceFileName?: string;\n\n /**\n * Set to true to run jsesc with \"json\": true to print \"\\u00A9\" vs. \"©\";\n * @deprecated use `jsescOptions: { json: true }` instead\n */\n jsonCompatibleStrings?: boolean;\n\n /**\n * Set to true to enable support for experimental decorators syntax before module exports.\n * Defaults to `false`.\n * @deprecated Removed in Babel 8\n */\n decoratorsBeforeExport?: boolean;\n\n /**\n * Options for outputting jsesc representation.\n */\n jsescOption?: jsescOptions;\n\n /**\n * For use with the recordAndTuple token.\n */\n recordAndTupleSyntaxType?: RecordAndTuplePluginOptions[\"syntaxType\"];\n /**\n * For use with the Hack-style pipe operator.\n * Changes what token is used for pipe bodies’ topic references.\n */\n topicToken?: PipelineOperatorPluginOptions[\"topicToken\"];\n}\n\nexport interface GeneratorResult {\n code: string;\n map: {\n version: number;\n sources: readonly string[];\n names: readonly string[];\n sourceRoot?: string;\n sourcesContent?: readonly string[];\n mappings: string;\n file?: string;\n } | null;\n decodedMap: DecodedSourceMap | undefined;\n rawMappings: Mapping[] | undefined;\n}\n\n/**\n * We originally exported the Generator class above, but to make it extra clear that it is a private API,\n * we have moved that to an internal class instance and simplified the interface to the two public methods\n * that we wish to support.\n */\n\nexport class CodeGenerator {\n private _generator: Generator;\n constructor(ast: t.Node, opts?: GeneratorOptions, code?: string) {\n this._generator = new Generator(ast, opts, code);\n }\n generate(): GeneratorResult {\n return this._generator.generate();\n }\n}\n\n/**\n * Turns an AST into code, maintaining sourcemaps, user preferences, and valid output.\n * @param ast - the abstract syntax tree from which to generate output code.\n * @param opts - used for specifying options for code generation.\n * @param code - the original source code, used for source maps.\n * @returns - an object containing the output code and source map.\n */\nexport default function generate(\n ast: t.Node,\n opts?: GeneratorOptions,\n code?: string | { [filename: string]: string },\n) {\n const gen = new Generator(ast, opts, code);\n return gen.generate();\n}\n"],"mappings":"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"}
@@ -18,6 +18,8 @@ const SCIENTIFIC_NOTATION = /e/i;
18
18
  const ZERO_DECIMAL_INTEGER = /\.0+$/;
19
19
  const NON_DECIMAL_LITERAL = /^0[box]/;
20
20
  const PURE_ANNOTATION_RE = /^\s*[@#]__PURE__\s*$/;
21
+ const HAS_NEWLINE = /[\n\r\u2028\u2029]/;
22
+ const HAS_BlOCK_COMMENT_END = /\*\//;
21
23
  const {
22
24
  needsParens
23
25
  } = n;
@@ -66,6 +68,7 @@ class Printer {
66
68
  } else {
67
69
  this._queue(59);
68
70
  }
71
+ this._noLineTerminator = false;
69
72
  }
70
73
 
71
74
  rightBrace() {
@@ -87,7 +90,7 @@ class Printer {
87
90
  }
88
91
  }
89
92
 
90
- word(str) {
93
+ word(str, noLineTerminatorAfter = false) {
91
94
  this._maybePrintInnerComments();
92
95
 
93
96
  if (this._endsWithWord || str.charCodeAt(0) === 47 && this.endsWith(47)) {
@@ -96,6 +99,7 @@ class Printer {
96
99
  this._maybeAddAuxComment();
97
100
  this._append(str, false);
98
101
  this._endsWithWord = true;
102
+ this._noLineTerminator = noLineTerminatorAfter;
99
103
  }
100
104
 
101
105
  number(str) {
@@ -116,6 +120,7 @@ class Printer {
116
120
  }
117
121
  this._maybeAddAuxComment();
118
122
  this._append(str, maybeNewline);
123
+ this._noLineTerminator = false;
119
124
  }
120
125
  tokenChar(char) {
121
126
  this._maybePrintInnerComments();
@@ -128,6 +133,7 @@ class Printer {
128
133
  }
129
134
  this._maybeAddAuxComment();
130
135
  this._appendChar(char);
136
+ this._noLineTerminator = false;
131
137
  }
132
138
 
133
139
  newline(i = 1, force) {
@@ -290,19 +296,10 @@ class Printer {
290
296
  _getIndent() {
291
297
  return this._indentRepeat * this._indent;
292
298
  }
293
- ensureNoLineTerminator(fn) {
294
- const {
295
- _noLineTerminator
296
- } = this;
297
- this._noLineTerminator = true;
298
- fn();
299
- this._noLineTerminator = _noLineTerminator;
300
- }
301
299
  printTerminatorless(node, parent, isLabel) {
302
300
  if (isLabel) {
303
- this.ensureNoLineTerminator(() => {
304
- this.print(node, parent);
305
- });
301
+ this._noLineTerminator = true;
302
+ this.print(node, parent);
306
303
  } else {
307
304
  const terminatorState = {
308
305
  printed: false
@@ -316,7 +313,7 @@ class Printer {
316
313
  }
317
314
  }
318
315
  }
319
- print(node, parent, noLineTerminator,
316
+ print(node, parent, noLineTerminatorAfter,
320
317
  trailingCommentsLineOffset, forceParens) {
321
318
  if (!node) return;
322
319
  this._endsWithInnerRaw = false;
@@ -343,19 +340,24 @@ class Printer {
343
340
  } else {
344
341
  shouldPrintParens = needsParens(node, parent, this._printStack);
345
342
  }
346
- if (shouldPrintParens) this.tokenChar(40);
343
+ if (shouldPrintParens) {
344
+ this.tokenChar(40);
345
+ this._endsWithInnerRaw = false;
346
+ }
347
347
  this._lastCommentLine = 0;
348
348
  this._printLeadingComments(node, parent);
349
349
  const loc = nodeType === "Program" || nodeType === "File" ? null : node.loc;
350
350
  this.exactSource(loc, printMethod.bind(this, node, parent));
351
- if (noLineTerminator && !this._noLineTerminator) {
351
+ if (shouldPrintParens) {
352
+ this._printTrailingComments(node, parent);
353
+ this.tokenChar(41);
354
+ this._noLineTerminator = noLineTerminatorAfter;
355
+ } else if (noLineTerminatorAfter && !this._noLineTerminator) {
352
356
  this._noLineTerminator = true;
353
357
  this._printTrailingComments(node, parent);
354
- this._noLineTerminator = false;
355
358
  } else {
356
359
  this._printTrailingComments(node, parent, trailingCommentsLineOffset);
357
360
  }
358
- if (shouldPrintParens) this.tokenChar(41);
359
361
 
360
362
  this._printStack.pop();
361
363
  format.concise = oldConcise;
@@ -437,9 +439,16 @@ class Printer {
437
439
  this.print(node, parent);
438
440
  }
439
441
  _printTrailingComments(node, parent, lineOffset) {
440
- const comments = node.trailingComments;
441
- if (!(comments != null && comments.length)) return;
442
- this._printComments(2, comments, node, parent, lineOffset);
442
+ const {
443
+ innerComments,
444
+ trailingComments
445
+ } = node;
446
+ if (innerComments != null && innerComments.length) {
447
+ this._printComments(2, innerComments, node, parent, lineOffset);
448
+ }
449
+ if (trailingComments != null && trailingComments.length) {
450
+ this._printComments(2, trailingComments, node, parent, lineOffset);
451
+ }
443
452
  }
444
453
  _printLeadingComments(node, parent) {
445
454
  const comments = node.leadingComments;
@@ -503,11 +512,21 @@ class Printer {
503
512
  this.newline(1);
504
513
  }
505
514
  }
506
- _printComment(comment, skipNewLines) {
507
- if (comment.ignore) return;
508
- if (this._printedComments.has(comment)) return;
509
- if (!this.format.shouldPrintComment(comment.value)) return;
515
+
516
+ _shouldPrintComment(comment) {
517
+ if (comment.ignore) return 0;
518
+ if (this._printedComments.has(comment)) return 0;
519
+ if (this._noLineTerminator && (HAS_NEWLINE.test(comment.value) || HAS_BlOCK_COMMENT_END.test(comment.value))) {
520
+ return 2;
521
+ }
510
522
  this._printedComments.add(comment);
523
+ if (!this.format.shouldPrintComment(comment.value)) {
524
+ return 0;
525
+ }
526
+ return 1;
527
+ }
528
+ _printComment(comment, skipNewLines) {
529
+ const noLineTerminator = this._noLineTerminator;
511
530
  const isBlockComment = comment.type === "CommentBlock";
512
531
 
513
532
  const printNewLines = isBlockComment && skipNewLines !== 1 && !this._noLineTerminator;
@@ -534,7 +553,7 @@ class Printer {
534
553
  }
535
554
  val = val.replace(/\n(?!$)/g, `\n${" ".repeat(indentSize)}`);
536
555
  }
537
- } else if (!this._noLineTerminator) {
556
+ } else if (!noLineTerminator) {
538
557
  val = `//${comment.value}`;
539
558
  } else {
540
559
  val = `/*${comment.value}*/`;
@@ -543,7 +562,7 @@ class Printer {
543
562
  if (this.endsWith(47)) this._space();
544
563
  this.source("start", comment.loc);
545
564
  this._append(val, isBlockComment);
546
- if (!isBlockComment && !this._noLineTerminator) {
565
+ if (!isBlockComment && !noLineTerminator) {
547
566
  this.newline(1, true);
548
567
  }
549
568
  if (printNewLines && skipNewLines !== 3) {
@@ -551,75 +570,82 @@ class Printer {
551
570
  }
552
571
  }
553
572
  _printComments(type, comments, node, parent, lineOffset = 0) {
554
- {
555
- const nodeLoc = node.loc;
556
- const len = comments.length;
557
- let hasLoc = !!nodeLoc;
558
- const nodeStartLine = hasLoc ? nodeLoc.start.line : 0;
559
- const nodeEndLine = hasLoc ? nodeLoc.end.line : 0;
560
- let lastLine = 0;
561
- let leadingCommentNewline = 0;
562
- for (let i = 0; i < len; i++) {
563
- const comment = comments[i];
564
- if (hasLoc && comment.loc && !this._printedComments.has(comment)) {
565
- const commentStartLine = comment.loc.start.line;
566
- const commentEndLine = comment.loc.end.line;
567
- if (type === 0) {
568
- let offset = 0;
569
- if (i === 0) {
570
- if (this._buf.hasContent() && (comment.type === "CommentLine" || commentStartLine != commentEndLine)) {
571
- offset = leadingCommentNewline = 1;
572
- }
573
- } else {
574
- offset = commentStartLine - lastLine;
575
- }
576
- lastLine = commentEndLine;
577
- this.newline(offset);
578
- this._printComment(comment, 1);
579
- if (i + 1 === len) {
580
- this.newline(Math.max(nodeStartLine - lastLine, leadingCommentNewline));
581
- lastLine = nodeStartLine;
582
- }
583
- } else if (type === 1) {
584
- const offset = commentStartLine - (i === 0 ? nodeStartLine : lastLine);
585
- lastLine = commentEndLine;
586
- this.newline(offset);
587
- this._printComment(comment, 1);
588
- if (i + 1 === len) {
589
- this.newline(Math.min(1, nodeEndLine - lastLine));
590
- lastLine = nodeEndLine;
573
+ const nodeLoc = node.loc;
574
+ const len = comments.length;
575
+ let hasLoc = !!nodeLoc;
576
+ const nodeStartLine = hasLoc ? nodeLoc.start.line : 0;
577
+ const nodeEndLine = hasLoc ? nodeLoc.end.line : 0;
578
+ let lastLine = 0;
579
+ let leadingCommentNewline = 0;
580
+ const maybeNewline = this._noLineTerminator ? function () {} : this.newline.bind(this);
581
+ for (let i = 0; i < len; i++) {
582
+ const comment = comments[i];
583
+ const shouldPrint = this._shouldPrintComment(comment);
584
+ if (shouldPrint === 2) {
585
+ hasLoc = false;
586
+ break;
587
+ }
588
+ if (hasLoc && comment.loc && shouldPrint === 1) {
589
+ const commentStartLine = comment.loc.start.line;
590
+ const commentEndLine = comment.loc.end.line;
591
+ if (type === 0) {
592
+ let offset = 0;
593
+ if (i === 0) {
594
+ if (this._buf.hasContent() && (comment.type === "CommentLine" || commentStartLine != commentEndLine)) {
595
+ offset = leadingCommentNewline = 1;
591
596
  }
592
597
  } else {
593
- const offset = commentStartLine - (i === 0 ? nodeEndLine - lineOffset : lastLine);
594
- lastLine = commentEndLine;
595
- this.newline(offset);
596
- this._printComment(comment, 1);
598
+ offset = commentStartLine - lastLine;
599
+ }
600
+ lastLine = commentEndLine;
601
+ maybeNewline(offset);
602
+ this._printComment(comment, 1);
603
+ if (i + 1 === len) {
604
+ maybeNewline(Math.max(nodeStartLine - lastLine, leadingCommentNewline));
605
+ lastLine = nodeStartLine;
606
+ }
607
+ } else if (type === 1) {
608
+ const offset = commentStartLine - (i === 0 ? nodeStartLine : lastLine);
609
+ lastLine = commentEndLine;
610
+ maybeNewline(offset);
611
+ this._printComment(comment, 1);
612
+ if (i + 1 === len) {
613
+ maybeNewline(Math.min(1, nodeEndLine - lastLine));
614
+ lastLine = nodeEndLine;
597
615
  }
598
616
  } else {
599
- hasLoc = false;
600
- if (len === 1) {
601
- const singleLine = comment.loc ? comment.loc.start.line === comment.loc.end.line : !comment.value.includes("\n");
602
- const shouldSkipNewline = singleLine && !isStatement(node) && !isClassBody(parent) && !isTSInterfaceBody(parent);
603
- if (type === 0) {
604
- this._printComment(comment, shouldSkipNewline && node.type !== "ObjectExpression" || singleLine && isFunction(parent, {
605
- body: node
606
- }) ? 1 : 0);
607
- } else if (shouldSkipNewline && type === 2) {
608
- this._printComment(comment, 1);
609
- } else {
610
- this._printComment(comment, 0);
611
- }
612
- } else if (type === 1 && !(node.type === "ObjectExpression" && node.properties.length > 1) && node.type !== "ClassBody" && node.type !== "TSInterfaceBody") {
613
-
614
- this._printComment(comment, i === 0 ? 2 : i === len - 1 ? 3 : 0);
617
+ const offset = commentStartLine - (i === 0 ? nodeEndLine - lineOffset : lastLine);
618
+ lastLine = commentEndLine;
619
+ maybeNewline(offset);
620
+ this._printComment(comment, 1);
621
+ }
622
+ } else {
623
+ hasLoc = false;
624
+ if (shouldPrint !== 1) {
625
+ continue;
626
+ }
627
+ if (len === 1) {
628
+ const singleLine = comment.loc ? comment.loc.start.line === comment.loc.end.line : !HAS_NEWLINE.test(comment.value);
629
+ const shouldSkipNewline = singleLine && !isStatement(node) && !isClassBody(parent) && !isTSInterfaceBody(parent);
630
+ if (type === 0) {
631
+ this._printComment(comment, shouldSkipNewline && node.type !== "ObjectExpression" || singleLine && isFunction(parent, {
632
+ body: node
633
+ }) ? 1 : 0);
634
+ } else if (shouldSkipNewline && type === 2) {
635
+ this._printComment(comment, 1);
615
636
  } else {
616
637
  this._printComment(comment, 0);
617
638
  }
639
+ } else if (type === 1 && !(node.type === "ObjectExpression" && node.properties.length > 1) && node.type !== "ClassBody" && node.type !== "TSInterfaceBody") {
640
+
641
+ this._printComment(comment, i === 0 ? 2 : i === len - 1 ? 3 : 0);
642
+ } else {
643
+ this._printComment(comment, 0);
618
644
  }
619
645
  }
620
- if (type === 2 && hasLoc && lastLine) {
621
- this._lastCommentLine = lastLine;
622
- }
646
+ }
647
+ if (type === 2 && hasLoc && lastLine) {
648
+ this._lastCommentLine = lastLine;
623
649
  }
624
650
  }
625
651
  }