{"version":3,"names":["TSTypeAnnotation","node","parent","token","type","typeAnnotation","space","optional","print","TSTypeParameterInstantiation","printTrailingSeparator","params","length","tokenMap","start","end","find","t","matchesOriginal","shouldPrintTrailingComma","printList","TSTypeParameter","in","word","out","name","constraint","default","TSParameterProperty","accessibility","readonly","_param","parameter","TSDeclareFunction","declare","_functionHead","semicolon","TSDeclareMethod","_classMethodHead","TSQualifiedName","left","right","TSCallSignatureDeclaration","tsPrintSignatureDeclarationBase","maybePrintTrailingCommaOrSemicolon","printer","endMatches","TSConstructSignatureDeclaration","TSPropertySignature","tsPrintPropertyOrMethodName","computed","key","TSMethodSignature","kind","TSIndexSignature","static","isStatic","_parameters","parameters","TSAnyKeyword","TSBigIntKeyword","TSUnknownKeyword","TSNumberKeyword","TSObjectKeyword","TSBooleanKeyword","TSStringKeyword","TSSymbolKeyword","TSVoidKeyword","TSUndefinedKeyword","TSNullKeyword","TSNeverKeyword","TSIntrinsicKeyword","TSThisType","TSFunctionType","tsPrintFunctionOrConstructorType","TSConstructorType","abstract","typeParameters","returnType","TSTypeReference","typeName","TSTypePredicate","asserts","parameterName","TSTypeQuery","exprName","TSTypeLiteral","printBraced","printJoin","members","indent","statement","TSArrayType","elementType","TSTupleType","elementTypes","TSOptionalType","TSRestType","TSNamedTupleMember","label","TSUnionType","tsPrintUnionOrIntersectionType","TSIntersectionType","sep","_printer$tokenMap","hasLeadingToken","startMatches","types","separator","i","TSConditionalType","checkType","extendsType","trueType","falseType","TSInferType","typeParameter","TSParenthesizedType","TSTypeOperator","operator","TSIndexedAccessType","objectType","indexType","TSMappedType","nameType","exit","enterDelimited","tokenIfPlusMinus","self","tok","TSLiteralType","literal","TSClassImplements","expression","TSInterfaceDeclaration","id","extends","extendz","body","TSInterfaceBody","TSTypeAliasDeclaration","TSTypeExpression","TSTypeAssertion","TSInstantiationExpression","TSEnumDeclaration","const","isConst","_this$shouldPrintTrai","TSEnumMember","initializer","TSModuleDeclaration","global","TSModuleBlock","printSequence","TSImportType","argument","qualifier","TSImportEqualsDeclaration","isExport","moduleReference","TSExternalModuleReference","TSNonNullExpression","TSExportAssignment","TSNamespaceExportDeclaration","tsPrintClassMemberModifiers","isField","printModifiersList","override","cb","rightBrace","modifiers","_printer$tokenMap2","modifiersSet","Set","modifier","add","has","value","delete","size"],"sources":["../../src/generators/typescript.ts"],"sourcesContent":["import type Printer from \"../printer.ts\";\nimport type * as t from \"@babel/types\";\n\nexport function TSTypeAnnotation(\n this: Printer,\n node: t.TSTypeAnnotation,\n parent: t.Node,\n) {\n // TODO(@nicolo-ribaudo): investigate not including => in the range\n // of the return type of an arrow function type\n this.token(\n (parent.type === \"TSFunctionType\" || parent.type === \"TSConstructorType\") &&\n (process.env.BABEL_8_BREAKING\n ? // @ts-ignore(Babel 7 vs Babel 8) Babel 8 AST shape\n parent.returnType\n : // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST shape\n parent.typeAnnotation) === node\n ? \"=>\"\n : \":\",\n );\n this.space();\n // @ts-expect-error todo(flow->ts) can this be removed? `.optional` looks to be not existing property\n if (node.optional) this.token(\"?\");\n this.print(node.typeAnnotation);\n}\n\nexport function TSTypeParameterInstantiation(\n this: Printer,\n node: t.TSTypeParameterInstantiation,\n parent: t.Node,\n): void {\n this.token(\"<\");\n\n let printTrailingSeparator =\n parent.type === \"ArrowFunctionExpression\" && node.params.length === 1;\n if (this.tokenMap && node.start != null && node.end != null) {\n // Only force the trailing comma for pre-existing nodes if they\n // already had a comma (either because they were multi-param, or\n // because they had a trailing comma)\n printTrailingSeparator &&= !!this.tokenMap.find(node, t =>\n this.tokenMap.matchesOriginal(t, \",\"),\n );\n // Preseve the trailing comma if it was there before\n printTrailingSeparator ||= this.shouldPrintTrailingComma(\">\");\n }\n\n this.printList(node.params, { printTrailingSeparator });\n this.token(\">\");\n}\n\nexport { TSTypeParameterInstantiation as TSTypeParameterDeclaration };\n\nexport function TSTypeParameter(this: Printer, node: t.TSTypeParameter) {\n if (node.in) {\n this.word(\"in\");\n this.space();\n }\n\n if (node.out) {\n this.word(\"out\");\n this.space();\n }\n\n this.word(\n !process.env.BABEL_8_BREAKING\n ? (node.name as unknown as string)\n : (node.name as unknown as t.Identifier).name,\n );\n\n if (node.constraint) {\n this.space();\n this.word(\"extends\");\n this.space();\n this.print(node.constraint);\n }\n\n if (node.default) {\n this.space();\n this.token(\"=\");\n this.space();\n this.print(node.default);\n }\n}\n\nexport function TSParameterProperty(\n this: Printer,\n node: t.TSParameterProperty,\n) {\n if (node.accessibility) {\n this.word(node.accessibility);\n this.space();\n }\n\n if (node.readonly) {\n this.word(\"readonly\");\n this.space();\n }\n\n this._param(node.parameter);\n}\n\nexport function TSDeclareFunction(\n this: Printer,\n node: t.TSDeclareFunction,\n parent: t.ParentMaps[\"TSDeclareFunction\"],\n) {\n if (node.declare) {\n this.word(\"declare\");\n this.space();\n }\n this._functionHead(node, parent);\n this.semicolon();\n}\n\nexport function TSDeclareMethod(this: Printer, node: t.TSDeclareMethod) {\n this._classMethodHead(node);\n this.semicolon();\n}\n\nexport function TSQualifiedName(this: Printer, node: t.TSQualifiedName) {\n this.print(node.left);\n this.token(\".\");\n this.print(node.right);\n}\n\nexport function TSCallSignatureDeclaration(\n this: Printer,\n node: t.TSCallSignatureDeclaration,\n) {\n this.tsPrintSignatureDeclarationBase(node);\n maybePrintTrailingCommaOrSemicolon(this, node);\n}\n\nfunction maybePrintTrailingCommaOrSemicolon(printer: Printer, node: t.Node) {\n if (!printer.tokenMap || !node.start || !node.end) {\n printer.semicolon();\n return;\n }\n\n if (printer.tokenMap.endMatches(node, \",\")) {\n printer.token(\",\");\n } else if (printer.tokenMap.endMatches(node, \";\")) {\n printer.semicolon();\n }\n}\n\nexport function TSConstructSignatureDeclaration(\n this: Printer,\n node: t.TSConstructSignatureDeclaration,\n) {\n this.word(\"new\");\n this.space();\n this.tsPrintSignatureDeclarationBase(node);\n maybePrintTrailingCommaOrSemicolon(this, node);\n}\n\nexport function TSPropertySignature(\n this: Printer,\n node: t.TSPropertySignature,\n) {\n const { readonly } = node;\n if (readonly) {\n this.word(\"readonly\");\n this.space();\n }\n this.tsPrintPropertyOrMethodName(node);\n this.print(node.typeAnnotation);\n maybePrintTrailingCommaOrSemicolon(this, node);\n}\n\nexport function tsPrintPropertyOrMethodName(\n this: Printer,\n node: t.TSPropertySignature | t.TSMethodSignature,\n) {\n if (node.computed) {\n this.token(\"[\");\n }\n this.print(node.key);\n if (node.computed) {\n this.token(\"]\");\n }\n if (node.optional) {\n this.token(\"?\");\n }\n}\n\nexport function TSMethodSignature(this: Printer, node: t.TSMethodSignature) {\n const { kind } = node;\n if (kind === \"set\" || kind === \"get\") {\n this.word(kind);\n this.space();\n }\n this.tsPrintPropertyOrMethodName(node);\n this.tsPrintSignatureDeclarationBase(node);\n maybePrintTrailingCommaOrSemicolon(this, node);\n}\n\nexport function TSIndexSignature(this: Printer, node: t.TSIndexSignature) {\n const { readonly, static: isStatic } = node;\n if (isStatic) {\n this.word(\"static\");\n this.space();\n }\n if (readonly) {\n this.word(\"readonly\");\n this.space();\n }\n this.token(\"[\");\n this._parameters(node.parameters, \"]\");\n this.print(node.typeAnnotation);\n maybePrintTrailingCommaOrSemicolon(this, node);\n}\n\nexport function TSAnyKeyword(this: Printer) {\n this.word(\"any\");\n}\nexport function TSBigIntKeyword(this: Printer) {\n this.word(\"bigint\");\n}\nexport function TSUnknownKeyword(this: Printer) {\n this.word(\"unknown\");\n}\nexport function TSNumberKeyword(this: Printer) {\n this.word(\"number\");\n}\nexport function TSObjectKeyword(this: Printer) {\n this.word(\"object\");\n}\nexport function TSBooleanKeyword(this: Printer) {\n this.word(\"boolean\");\n}\nexport function TSStringKeyword(this: Printer) {\n this.word(\"string\");\n}\nexport function TSSymbolKeyword(this: Printer) {\n this.word(\"symbol\");\n}\nexport function TSVoidKeyword(this: Printer) {\n this.word(\"void\");\n}\nexport function TSUndefinedKeyword(this: Printer) {\n this.word(\"undefined\");\n}\nexport function TSNullKeyword(this: Printer) {\n this.word(\"null\");\n}\nexport function TSNeverKeyword(this: Printer) {\n this.word(\"never\");\n}\nexport function TSIntrinsicKeyword(this: Printer) {\n this.word(\"intrinsic\");\n}\n\nexport function TSThisType(this: Printer) {\n this.word(\"this\");\n}\n\nexport function TSFunctionType(this: Printer, node: t.TSFunctionType) {\n this.tsPrintFunctionOrConstructorType(node);\n}\n\nexport function TSConstructorType(this: Printer, node: t.TSConstructorType) {\n if (node.abstract) {\n this.word(\"abstract\");\n this.space();\n }\n this.word(\"new\");\n this.space();\n this.tsPrintFunctionOrConstructorType(node);\n}\n\nexport function tsPrintFunctionOrConstructorType(\n this: Printer,\n node: t.TSFunctionType | t.TSConstructorType,\n) {\n const { typeParameters } = node;\n const parameters = process.env.BABEL_8_BREAKING\n ? // @ts-ignore(Babel 7 vs Babel 8) Babel 8 AST shape\n node.params\n : // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST shape\n node.parameters;\n this.print(typeParameters);\n this.token(\"(\");\n this._parameters(parameters, \")\");\n this.space();\n const returnType = process.env.BABEL_8_BREAKING\n ? // @ts-ignore(Babel 7 vs Babel 8) Babel 8 AST shape\n node.returnType\n : // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST shape\n node.typeAnnotation;\n this.print(returnType);\n}\n\nexport function TSTypeReference(this: Printer, node: t.TSTypeReference) {\n this.print(node.typeName, !!node.typeParameters);\n this.print(node.typeParameters);\n}\n\nexport function TSTypePredicate(this: Printer, node: t.TSTypePredicate) {\n if (node.asserts) {\n this.word(\"asserts\");\n this.space();\n }\n this.print(node.parameterName);\n if (node.typeAnnotation) {\n this.space();\n this.word(\"is\");\n this.space();\n this.print(node.typeAnnotation.typeAnnotation);\n }\n}\n\nexport function TSTypeQuery(this: Printer, node: t.TSTypeQuery) {\n this.word(\"typeof\");\n this.space();\n this.print(node.exprName);\n\n if (node.typeParameters) {\n this.print(node.typeParameters);\n }\n}\n\nexport function TSTypeLiteral(this: Printer, node: t.TSTypeLiteral) {\n printBraced(this, node, () =>\n this.printJoin(node.members, { indent: true, statement: true }),\n );\n}\n\nexport function TSArrayType(this: Printer, node: t.TSArrayType) {\n this.print(node.elementType, true);\n\n this.token(\"[\");\n this.token(\"]\");\n}\n\nexport function TSTupleType(this: Printer, node: t.TSTupleType) {\n this.token(\"[\");\n this.printList(node.elementTypes, {\n printTrailingSeparator: this.shouldPrintTrailingComma(\"]\"),\n });\n this.token(\"]\");\n}\n\nexport function TSOptionalType(this: Printer, node: t.TSOptionalType) {\n this.print(node.typeAnnotation);\n this.token(\"?\");\n}\n\nexport function TSRestType(this: Printer, node: t.TSRestType) {\n this.token(\"...\");\n this.print(node.typeAnnotation);\n}\n\nexport function TSNamedTupleMember(this: Printer, node: t.TSNamedTupleMember) {\n this.print(node.label);\n if (node.optional) this.token(\"?\");\n this.token(\":\");\n this.space();\n this.print(node.elementType);\n}\n\nexport function TSUnionType(this: Printer, node: t.TSUnionType) {\n tsPrintUnionOrIntersectionType(this, node, \"|\");\n}\n\nexport function TSIntersectionType(this: Printer, node: t.TSIntersectionType) {\n tsPrintUnionOrIntersectionType(this, node, \"&\");\n}\n\nfunction tsPrintUnionOrIntersectionType(\n printer: Printer,\n node: t.TSUnionType | t.TSIntersectionType,\n sep: \"|\" | \"&\",\n) {\n let hasLeadingToken = 0;\n if (printer.tokenMap?.startMatches(node, sep)) {\n hasLeadingToken = 1;\n printer.token(sep);\n }\n\n printer.printJoin(node.types, {\n separator(i) {\n this.space();\n this.token(sep, null, i + hasLeadingToken);\n this.space();\n },\n });\n}\n\nexport function TSConditionalType(this: Printer, node: t.TSConditionalType) {\n this.print(node.checkType);\n this.space();\n this.word(\"extends\");\n this.space();\n this.print(node.extendsType);\n this.space();\n this.token(\"?\");\n this.space();\n this.print(node.trueType);\n this.space();\n this.token(\":\");\n this.space();\n this.print(node.falseType);\n}\n\nexport function TSInferType(this: Printer, node: t.TSInferType) {\n this.word(\"infer\");\n this.print(node.typeParameter);\n}\n\nexport function TSParenthesizedType(\n this: Printer,\n node: t.TSParenthesizedType,\n) {\n this.token(\"(\");\n this.print(node.typeAnnotation);\n this.token(\")\");\n}\n\nexport function TSTypeOperator(this: Printer, node: t.TSTypeOperator) {\n this.word(node.operator);\n this.space();\n this.print(node.typeAnnotation);\n}\n\nexport function TSIndexedAccessType(\n this: Printer,\n node: t.TSIndexedAccessType,\n) {\n this.print(node.objectType, true);\n this.token(\"[\");\n this.print(node.indexType);\n this.token(\"]\");\n}\n\nexport function TSMappedType(this: Printer, node: t.TSMappedType) {\n const { nameType, optional, readonly, typeAnnotation } = node;\n this.token(\"{\");\n const exit = this.enterDelimited();\n this.space();\n if (readonly) {\n tokenIfPlusMinus(this, readonly);\n this.word(\"readonly\");\n this.space();\n }\n\n this.token(\"[\");\n if (process.env.BABEL_8_BREAKING) {\n // @ts-ignore(Babel 7 vs Babel 8) Babel 8 AST shape\n this.word(node.key.name);\n } else {\n // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST shape\n this.word(node.typeParameter.name);\n }\n\n this.space();\n this.word(\"in\");\n this.space();\n if (process.env.BABEL_8_BREAKING) {\n // @ts-ignore(Babel 7 vs Babel 8) Babel 8 AST shape\n this.print(node.constraint);\n } else {\n // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST shape\n this.print(node.typeParameter.constraint);\n }\n\n if (nameType) {\n this.space();\n this.word(\"as\");\n this.space();\n this.print(nameType);\n }\n\n this.token(\"]\");\n\n if (optional) {\n tokenIfPlusMinus(this, optional);\n this.token(\"?\");\n }\n\n if (typeAnnotation) {\n this.token(\":\");\n this.space();\n this.print(typeAnnotation);\n }\n this.space();\n exit();\n this.token(\"}\");\n}\n\nfunction tokenIfPlusMinus(self: Printer, tok: true | \"+\" | \"-\") {\n if (tok !== true) {\n self.token(tok);\n }\n}\n\nexport function TSLiteralType(this: Printer, node: t.TSLiteralType) {\n this.print(node.literal);\n}\n\nexport function TSClassImplements(\n this: Printer,\n // TODO(Babel 8): Just use t.TSClassImplements\n node: Extract<\n t.Node,\n { type: \"TSClassImplements\" | \"TSExpressionWithTypeArguments\" }\n >,\n) {\n this.print(node.expression);\n this.print(node.typeParameters);\n}\n\nexport {\n // TODO: Remove this in Babel 8\n TSClassImplements as TSExpressionWithTypeArguments,\n TSClassImplements as TSInterfaceHeritage,\n};\n\nexport function TSInterfaceDeclaration(\n this: Printer,\n node: t.TSInterfaceDeclaration,\n) {\n const { declare, id, typeParameters, extends: extendz, body } = node;\n if (declare) {\n this.word(\"declare\");\n this.space();\n }\n this.word(\"interface\");\n this.space();\n this.print(id);\n this.print(typeParameters);\n if (extendz?.length) {\n this.space();\n this.word(\"extends\");\n this.space();\n this.printList(extendz);\n }\n this.space();\n this.print(body);\n}\n\nexport function TSInterfaceBody(this: Printer, node: t.TSInterfaceBody) {\n printBraced(this, node, () =>\n this.printJoin(node.body, { indent: true, statement: true }),\n );\n}\n\nexport function TSTypeAliasDeclaration(\n this: Printer,\n node: t.TSTypeAliasDeclaration,\n) {\n const { declare, id, typeParameters, typeAnnotation } = node;\n if (declare) {\n this.word(\"declare\");\n this.space();\n }\n this.word(\"type\");\n this.space();\n this.print(id);\n this.print(typeParameters);\n this.space();\n this.token(\"=\");\n this.space();\n this.print(typeAnnotation);\n this.semicolon();\n}\n\nfunction TSTypeExpression(\n this: Printer,\n node: t.TSAsExpression | t.TSSatisfiesExpression,\n) {\n const { type, expression, typeAnnotation } = node;\n this.print(expression, true);\n this.space();\n this.word(type === \"TSAsExpression\" ? \"as\" : \"satisfies\");\n this.space();\n this.print(typeAnnotation);\n}\n\nexport {\n TSTypeExpression as TSAsExpression,\n TSTypeExpression as TSSatisfiesExpression,\n};\n\nexport function TSTypeAssertion(this: Printer, node: t.TSTypeAssertion) {\n const { typeAnnotation, expression } = node;\n this.token(\"<\");\n this.print(typeAnnotation);\n this.token(\">\");\n this.space();\n this.print(expression);\n}\n\nexport function TSInstantiationExpression(\n this: Printer,\n node: t.TSInstantiationExpression,\n) {\n this.print(node.expression);\n this.print(node.typeParameters);\n}\n\nexport function TSEnumDeclaration(this: Printer, node: t.TSEnumDeclaration) {\n const { declare, const: isConst, id, members } = node;\n if (declare) {\n this.word(\"declare\");\n this.space();\n }\n if (isConst) {\n this.word(\"const\");\n this.space();\n }\n this.word(\"enum\");\n this.space();\n this.print(id);\n this.space();\n\n printBraced(this, node, () =>\n this.printList(members, {\n indent: true,\n statement: true,\n // TODO: Default to false for consistency with everything else\n printTrailingSeparator: this.shouldPrintTrailingComma(\"}\") ?? true,\n }),\n );\n}\n\nexport function TSEnumMember(this: Printer, node: t.TSEnumMember) {\n const { id, initializer } = node;\n this.print(id);\n if (initializer) {\n this.space();\n this.token(\"=\");\n this.space();\n this.print(initializer);\n }\n}\n\nexport function TSModuleDeclaration(\n this: Printer,\n node: t.TSModuleDeclaration,\n) {\n const { declare, id, kind } = node;\n\n if (declare) {\n this.word(\"declare\");\n this.space();\n }\n\n if (!node.global) {\n this.word(kind ?? (id.type === \"Identifier\" ? \"namespace\" : \"module\"));\n this.space();\n }\n this.print(id);\n\n if (!node.body) {\n this.semicolon();\n return;\n }\n\n let body = node.body;\n while (body.type === \"TSModuleDeclaration\") {\n this.token(\".\");\n this.print(body.id);\n body = body.body;\n }\n\n this.space();\n this.print(body);\n}\n\nexport function TSModuleBlock(this: Printer, node: t.TSModuleBlock) {\n printBraced(this, node, () =>\n this.printSequence(node.body, { indent: true }),\n );\n}\n\nexport function TSImportType(this: Printer, node: t.TSImportType) {\n const { argument, qualifier, typeParameters } = node;\n this.word(\"import\");\n this.token(\"(\");\n this.print(argument);\n this.token(\")\");\n if (qualifier) {\n this.token(\".\");\n this.print(qualifier);\n }\n if (typeParameters) {\n this.print(typeParameters);\n }\n}\n\nexport function TSImportEqualsDeclaration(\n this: Printer,\n node: t.TSImportEqualsDeclaration,\n) {\n const { isExport, id, moduleReference } = node;\n if (isExport) {\n this.word(\"export\");\n this.space();\n }\n this.word(\"import\");\n this.space();\n this.print(id);\n this.space();\n this.token(\"=\");\n this.space();\n this.print(moduleReference);\n this.semicolon();\n}\n\nexport function TSExternalModuleReference(\n this: Printer,\n node: t.TSExternalModuleReference,\n) {\n this.token(\"require(\");\n this.print(node.expression);\n this.token(\")\");\n}\n\nexport function TSNonNullExpression(\n this: Printer,\n node: t.TSNonNullExpression,\n) {\n this.print(node.expression);\n this.token(\"!\");\n}\n\nexport function TSExportAssignment(this: Printer, node: t.TSExportAssignment) {\n this.word(\"export\");\n this.space();\n this.token(\"=\");\n this.space();\n this.print(node.expression);\n this.semicolon();\n}\n\nexport function TSNamespaceExportDeclaration(\n this: Printer,\n node: t.TSNamespaceExportDeclaration,\n) {\n this.word(\"export\");\n this.space();\n this.word(\"as\");\n this.space();\n this.word(\"namespace\");\n this.space();\n this.print(node.id);\n this.semicolon();\n}\n\nexport function tsPrintSignatureDeclarationBase(this: Printer, node: any) {\n const { typeParameters } = node;\n const parameters = process.env.BABEL_8_BREAKING\n ? node.params\n : node.parameters;\n this.print(typeParameters);\n this.token(\"(\");\n this._parameters(parameters, \")\");\n const returnType = process.env.BABEL_8_BREAKING\n ? node.returnType\n : node.typeAnnotation;\n this.print(returnType);\n}\n\nexport function tsPrintClassMemberModifiers(\n this: Printer,\n node:\n | t.ClassProperty\n | t.ClassAccessorProperty\n | t.ClassMethod\n | t.ClassPrivateMethod\n | t.TSDeclareMethod,\n) {\n const isField =\n node.type === \"ClassAccessorProperty\" || node.type === \"ClassProperty\";\n printModifiersList(this, node, [\n isField && node.declare && \"declare\",\n node.accessibility,\n ]);\n if (node.static) {\n this.word(\"static\");\n this.space();\n }\n printModifiersList(this, node, [\n node.override && \"override\",\n node.abstract && \"abstract\",\n isField && node.readonly && \"readonly\",\n ]);\n}\n\nfunction printBraced(printer: Printer, node: t.Node, cb: () => void) {\n printer.token(\"{\");\n const exit = printer.enterDelimited();\n cb();\n exit();\n printer.rightBrace(node);\n}\n\nfunction printModifiersList(\n printer: Printer,\n node: t.Node,\n modifiers: (string | false | null)[],\n) {\n const modifiersSet = new Set();\n for (const modifier of modifiers) {\n if (modifier) modifiersSet.add(modifier);\n }\n\n printer.tokenMap?.find(node, tok => {\n if (modifiersSet.has(tok.value)) {\n printer.token(tok.value);\n printer.space();\n modifiersSet.delete(tok.value);\n return modifiersSet.size === 0;\n }\n });\n\n for (const modifier of modifiersSet) {\n printer.word(modifier);\n printer.space();\n }\n}\n"],"mappings":"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","ignoreList":[]}