@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.
- package/appFiles/node_modules/.package-lock.json +23 -23
- package/appFiles/node_modules/@babel/generator/lib/generators/base.js.map +1 -1
- package/appFiles/node_modules/@babel/generator/lib/generators/classes.js +1 -1
- package/appFiles/node_modules/@babel/generator/lib/generators/classes.js.map +1 -1
- package/appFiles/node_modules/@babel/generator/lib/generators/expressions.js +9 -15
- package/appFiles/node_modules/@babel/generator/lib/generators/expressions.js.map +1 -1
- package/appFiles/node_modules/@babel/generator/lib/generators/methods.js +12 -25
- package/appFiles/node_modules/@babel/generator/lib/generators/methods.js.map +1 -1
- package/appFiles/node_modules/@babel/generator/lib/generators/modules.js +6 -14
- package/appFiles/node_modules/@babel/generator/lib/generators/modules.js.map +1 -1
- package/appFiles/node_modules/@babel/generator/lib/generators/statements.js +1 -16
- package/appFiles/node_modules/@babel/generator/lib/generators/statements.js.map +1 -1
- package/appFiles/node_modules/@babel/generator/lib/index.js +11 -0
- package/appFiles/node_modules/@babel/generator/lib/index.js.map +1 -1
- package/appFiles/node_modules/@babel/generator/lib/printer.js +112 -86
- package/appFiles/node_modules/@babel/generator/lib/printer.js.map +1 -1
- package/appFiles/node_modules/@babel/generator/package.json +3 -3
- package/appFiles/node_modules/@babel/parser/lib/index.js +165 -99
- package/appFiles/node_modules/@babel/parser/lib/index.js.map +1 -1
- package/appFiles/node_modules/@babel/parser/package.json +2 -2
- package/appFiles/node_modules/@babel/parser/typings/babel-parser.d.ts +92 -80
- package/appFiles/node_modules/@babel/runtime/helpers/checkInRHS.js +6 -0
- package/appFiles/node_modules/@babel/runtime/helpers/createClass.js +2 -1
- package/appFiles/node_modules/@babel/runtime/helpers/defineProperty.js +2 -0
- package/appFiles/node_modules/@babel/runtime/helpers/esm/checkInRHS.js +5 -0
- package/appFiles/node_modules/@babel/runtime/helpers/esm/createClass.js +2 -1
- package/appFiles/node_modules/@babel/runtime/helpers/esm/defineProperty.js +2 -0
- package/appFiles/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js +23 -18
- package/appFiles/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimitLoose.js +8 -7
- package/appFiles/node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js +3 -8
- package/appFiles/node_modules/@babel/runtime/helpers/iterableToArrayLimit.js +23 -18
- package/appFiles/node_modules/@babel/runtime/helpers/iterableToArrayLimitLoose.js +8 -7
- package/appFiles/node_modules/@babel/runtime/helpers/regeneratorRuntime.js +3 -8
- package/appFiles/node_modules/@babel/runtime/package.json +29 -20
- package/appFiles/node_modules/@babel/traverse/lib/path/context.js +3 -2
- package/appFiles/node_modules/@babel/traverse/lib/path/context.js.map +1 -1
- package/appFiles/node_modules/@babel/traverse/lib/path/conversion.js +8 -4
- package/appFiles/node_modules/@babel/traverse/lib/path/conversion.js.map +1 -1
- package/appFiles/node_modules/@babel/traverse/lib/path/inference/inferer-reference.js +1 -0
- package/appFiles/node_modules/@babel/traverse/lib/path/inference/inferer-reference.js.map +1 -1
- package/appFiles/node_modules/@babel/traverse/lib/scope/index.js +1 -1
- package/appFiles/node_modules/@babel/traverse/lib/scope/index.js.map +1 -1
- package/appFiles/node_modules/@babel/traverse/package.json +4 -4
- package/appFiles/node_modules/@babel/types/lib/asserts/assertNode.js +0 -3
- package/appFiles/node_modules/@babel/types/lib/asserts/assertNode.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/asserts/generated/index.js +0 -303
- package/appFiles/node_modules/@babel/types/lib/asserts/generated/index.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/builders/flow/createFlowUnionType.js +0 -4
- package/appFiles/node_modules/@babel/types/lib/builders/flow/createFlowUnionType.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/builders/flow/createTypeAnnotationBasedOnTypeof.js +0 -11
- package/appFiles/node_modules/@babel/types/lib/builders/flow/createTypeAnnotationBasedOnTypeof.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/builders/generated/index.js +0 -253
- package/appFiles/node_modules/@babel/types/lib/builders/generated/index.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/builders/generated/uppercase.js +0 -1
- package/appFiles/node_modules/@babel/types/lib/builders/generated/uppercase.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/builders/react/buildChildren.js +0 -7
- package/appFiles/node_modules/@babel/types/lib/builders/react/buildChildren.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/builders/typescript/createTSUnionType.js +0 -5
- package/appFiles/node_modules/@babel/types/lib/builders/typescript/createTSUnionType.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/builders/validateNode.js +0 -5
- package/appFiles/node_modules/@babel/types/lib/builders/validateNode.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/clone/clone.js +0 -2
- package/appFiles/node_modules/@babel/types/lib/clone/clone.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/clone/cloneDeep.js +0 -2
- package/appFiles/node_modules/@babel/types/lib/clone/cloneDeep.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/clone/cloneDeepWithoutLoc.js +0 -2
- package/appFiles/node_modules/@babel/types/lib/clone/cloneDeepWithoutLoc.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/clone/cloneNode.js +4 -22
- package/appFiles/node_modules/@babel/types/lib/clone/cloneNode.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/clone/cloneWithoutLoc.js +0 -2
- package/appFiles/node_modules/@babel/types/lib/clone/cloneWithoutLoc.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/comments/addComment.js +0 -2
- package/appFiles/node_modules/@babel/types/lib/comments/addComment.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/comments/addComments.js +0 -3
- package/appFiles/node_modules/@babel/types/lib/comments/addComments.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/comments/inheritInnerComments.js +0 -2
- package/appFiles/node_modules/@babel/types/lib/comments/inheritInnerComments.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/comments/inheritLeadingComments.js +0 -2
- package/appFiles/node_modules/@babel/types/lib/comments/inheritLeadingComments.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/comments/inheritTrailingComments.js +0 -2
- package/appFiles/node_modules/@babel/types/lib/comments/inheritTrailingComments.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/comments/inheritsComments.js +0 -4
- package/appFiles/node_modules/@babel/types/lib/comments/inheritsComments.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/comments/removeComments.js +0 -3
- package/appFiles/node_modules/@babel/types/lib/comments/removeComments.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/constants/generated/index.js +0 -1
- package/appFiles/node_modules/@babel/types/lib/constants/generated/index.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/constants/index.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/converters/ensureBlock.js +0 -2
- package/appFiles/node_modules/@babel/types/lib/converters/ensureBlock.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/converters/gatherSequenceExpressions.js +2 -12
- package/appFiles/node_modules/@babel/types/lib/converters/gatherSequenceExpressions.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/converters/toBindingIdentifierName.js +0 -2
- package/appFiles/node_modules/@babel/types/lib/converters/toBindingIdentifierName.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/converters/toBlock.js +0 -7
- package/appFiles/node_modules/@babel/types/lib/converters/toBlock.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/converters/toComputedKey.js +2 -4
- package/appFiles/node_modules/@babel/types/lib/converters/toComputedKey.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/converters/toExpression.js +0 -4
- package/appFiles/node_modules/@babel/types/lib/converters/toExpression.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/converters/toIdentifier.js +2 -6
- package/appFiles/node_modules/@babel/types/lib/converters/toIdentifier.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/converters/toKeyAlias.js +0 -7
- package/appFiles/node_modules/@babel/types/lib/converters/toKeyAlias.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/converters/toSequenceExpression.js +0 -3
- package/appFiles/node_modules/@babel/types/lib/converters/toSequenceExpression.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/converters/toStatement.js +1 -7
- package/appFiles/node_modules/@babel/types/lib/converters/toStatement.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/converters/valueToNode.js +2 -18
- package/appFiles/node_modules/@babel/types/lib/converters/valueToNode.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/definitions/core.js +33 -61
- package/appFiles/node_modules/@babel/types/lib/definitions/core.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/definitions/experimental.js +3 -1
- package/appFiles/node_modules/@babel/types/lib/definitions/experimental.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/definitions/flow.js +1 -3
- package/appFiles/node_modules/@babel/types/lib/definitions/flow.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/definitions/index.js +0 -18
- package/appFiles/node_modules/@babel/types/lib/definitions/index.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/definitions/jsx.js +0 -1
- package/appFiles/node_modules/@babel/types/lib/definitions/jsx.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/definitions/misc.js +0 -2
- package/appFiles/node_modules/@babel/types/lib/definitions/misc.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/definitions/placeholders.js +0 -5
- package/appFiles/node_modules/@babel/types/lib/definitions/placeholders.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/definitions/typescript.js +4 -15
- package/appFiles/node_modules/@babel/types/lib/definitions/typescript.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/definitions/utils.js +1 -65
- package/appFiles/node_modules/@babel/types/lib/definitions/utils.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/index.d.ts +64 -65
- package/appFiles/node_modules/@babel/types/lib/index.js +1 -75
- package/appFiles/node_modules/@babel/types/lib/index.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/modifications/appendToMemberExpression.js +0 -2
- package/appFiles/node_modules/@babel/types/lib/modifications/appendToMemberExpression.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/modifications/flow/removeTypeDuplicates.js +3 -12
- package/appFiles/node_modules/@babel/types/lib/modifications/flow/removeTypeDuplicates.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/modifications/inherits.js +0 -4
- package/appFiles/node_modules/@babel/types/lib/modifications/inherits.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/modifications/prependToMemberExpression.js +0 -4
- package/appFiles/node_modules/@babel/types/lib/modifications/prependToMemberExpression.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/modifications/removeProperties.js +3 -8
- package/appFiles/node_modules/@babel/types/lib/modifications/removeProperties.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/modifications/removePropertiesDeep.js +0 -3
- package/appFiles/node_modules/@babel/types/lib/modifications/removePropertiesDeep.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/modifications/typescript/removeTypeDuplicates.js +1 -10
- package/appFiles/node_modules/@babel/types/lib/modifications/typescript/removeTypeDuplicates.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/retrievers/getBindingIdentifiers.js +4 -14
- package/appFiles/node_modules/@babel/types/lib/retrievers/getBindingIdentifiers.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/retrievers/getOuterBindingIdentifiers.js +0 -3
- package/appFiles/node_modules/@babel/types/lib/retrievers/getOuterBindingIdentifiers.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/traverse/traverse.js +0 -7
- package/appFiles/node_modules/@babel/types/lib/traverse/traverse.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/traverse/traverseFast.js +2 -5
- package/appFiles/node_modules/@babel/types/lib/traverse/traverseFast.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/utils/inherit.js +0 -1
- package/appFiles/node_modules/@babel/types/lib/utils/inherit.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/utils/react/cleanJSXElementLiteralChild.js +1 -8
- package/appFiles/node_modules/@babel/types/lib/utils/react/cleanJSXElementLiteralChild.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/utils/shallowEqual.js +2 -4
- package/appFiles/node_modules/@babel/types/lib/utils/shallowEqual.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/validators/buildMatchMemberExpression.js +0 -2
- package/appFiles/node_modules/@babel/types/lib/validators/buildMatchMemberExpression.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/validators/generated/index.js +0 -906
- package/appFiles/node_modules/@babel/types/lib/validators/generated/index.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/validators/is.js +0 -8
- package/appFiles/node_modules/@babel/types/lib/validators/is.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/validators/isBinding.js +4 -8
- package/appFiles/node_modules/@babel/types/lib/validators/isBinding.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/validators/isBlockScoped.js +0 -3
- package/appFiles/node_modules/@babel/types/lib/validators/isBlockScoped.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/validators/isImmutable.js +0 -5
- package/appFiles/node_modules/@babel/types/lib/validators/isImmutable.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/validators/isLet.js +2 -4
- package/appFiles/node_modules/@babel/types/lib/validators/isLet.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/validators/isNode.js +0 -2
- package/appFiles/node_modules/@babel/types/lib/validators/isNode.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/validators/isNodesEquivalent.js +2 -16
- package/appFiles/node_modules/@babel/types/lib/validators/isNodesEquivalent.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/validators/isPlaceholderType.js +0 -4
- package/appFiles/node_modules/@babel/types/lib/validators/isPlaceholderType.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/validators/isReferenced.js +0 -13
- package/appFiles/node_modules/@babel/types/lib/validators/isReferenced.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/validators/isScope.js +0 -3
- package/appFiles/node_modules/@babel/types/lib/validators/isScope.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/validators/isSpecifierDefault.js +2 -3
- package/appFiles/node_modules/@babel/types/lib/validators/isSpecifierDefault.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/validators/isType.js +1 -5
- package/appFiles/node_modules/@babel/types/lib/validators/isType.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/validators/isValidES3Identifier.js +0 -2
- package/appFiles/node_modules/@babel/types/lib/validators/isValidES3Identifier.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/validators/isValidIdentifier.js +0 -4
- package/appFiles/node_modules/@babel/types/lib/validators/isValidIdentifier.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/validators/isVar.js +2 -4
- package/appFiles/node_modules/@babel/types/lib/validators/isVar.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/validators/matchesPattern.js +0 -8
- package/appFiles/node_modules/@babel/types/lib/validators/matchesPattern.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/validators/react/isCompatTag.js +0 -1
- package/appFiles/node_modules/@babel/types/lib/validators/react/isCompatTag.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/validators/react/isReactComponent.js +0 -2
- package/appFiles/node_modules/@babel/types/lib/validators/react/isReactComponent.js.map +1 -1
- package/appFiles/node_modules/@babel/types/lib/validators/validate.js +0 -4
- package/appFiles/node_modules/@babel/types/lib/validators/validate.js.map +1 -1
- package/appFiles/node_modules/@babel/types/package.json +3 -3
- package/appFiles/node_modules/regenerator-runtime/package.json +2 -2
- package/appFiles/node_modules/regenerator-runtime/runtime.js +18 -17
- package/appFiles/src/App.tsx +0 -12
- package/appFiles/src/fields/rich-text/monaco/mdx.js +0 -46
- package/appFiles/src/lib/machines/query-machine.ts +130 -2
- package/appFiles/src/preview.tsx +9 -15
- package/dist/index.js +1 -1
- package/package.json +4 -4
- 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.
|
|
304
|
-
|
|
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,
|
|
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)
|
|
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 (
|
|
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
|
|
441
|
-
|
|
442
|
-
|
|
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
|
-
|
|
507
|
-
|
|
508
|
-
if (
|
|
509
|
-
if (
|
|
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 (!
|
|
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 && !
|
|
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
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
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
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
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
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
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
|
-
|
|
621
|
-
|
|
622
|
-
|
|
646
|
+
}
|
|
647
|
+
if (type === 2 && hasLoc && lastLine) {
|
|
648
|
+
this._lastCommentLine = lastLine;
|
|
623
649
|
}
|
|
624
650
|
}
|
|
625
651
|
}
|