{"version":3,"file":"typeFormatting.cjs","names":["_iterateJsdoc","_interopRequireDefault","require","_jsdocUtils","_jsdoccomment","e","__esModule","default","digitRegex","_default","exports","iterateJsdoc","context","indent","jsdoc","settings","utils","arrayBrackets","arrowFunctionPostReturnMarkerSpacing","arrowFunctionPreReturnMarkerSpacing","enableFixer","functionOrClassParameterSpacing","functionOrClassPostGenericSpacing","functionOrClassPostReturnMarkerSpacing","functionOrClassPreReturnMarkerSpacing","functionOrClassTypeParameterSpacing","genericAndTupleElementSpacing","genericDot","keyValuePostColonSpacing","keyValuePostKeySpacing","keyValuePostOptionalSpacing","keyValuePostVariadicSpacing","methodQuotes","objectFieldIndent","objectFieldQuote","objectFieldSeparator","objectFieldSeparatorOptionalLinebreak","objectFieldSeparatorTrailingPunctuation","objectTypeBracketSpacing","parameterDefaultValueSpacing","postMethodNameSpacing","postNewSpacing","separatorForSingleObjectField","stringQuotes","trailingPunctuationMultilineOnly","typeBracketSpacing","unionSpacing","options","mode","checkTypeFormats","tag","potentialType","type","parsedType","tryParseType","parseType","fix","rewireByParsedType","errorMessages","startsWith","endsWith","push","test","traverse","nde","errorMessage","conditionalAdds","meta","typNode","newMeta","parameterSpacing","postGenericSpacing","postReturnMarkerSpacing","preReturnMarkerSpacing","typeParameterSpacing","typeNode","arrow","quote","undefined","left","value","brackets","dot","elementSpacing","postKeySpacing","postColonSpacing","postOptionalSpacing","postVariadicSpacing","variadic","separator","propertyIndent","trailingPunctuation","stringify","includes","replace","bracketSpacing","key","defaultValue","defaultValueSpacing","spacing","differentResult","length","reportJSDoc","tags","getPresentTags","iterateAllJsdocs","docs","description","url","fixable","schema","additionalProperties","properties","enum","module"],"sources":["../../src/rules/typeFormatting.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\nimport {\n  rewireByParsedType,\n} from '../jsdocUtils.js';\nimport {\n  parse as parseType,\n  stringify,\n  traverse,\n  tryParse as tryParseType,\n} from '@es-joy/jsdoccomment';\n\nconst digitRegex = (/^(\\d+(\\.\\d*)?|\\.\\d+)([eE][\\-+]?\\d+)?$/v);\n\nexport default iterateJsdoc(({\n  context,\n  indent,\n  jsdoc,\n  settings,\n  utils,\n// eslint-disable-next-line complexity -- Todo\n}) => {\n  const {\n    arrayBrackets = 'square',\n    arrowFunctionPostReturnMarkerSpacing = ' ',\n    arrowFunctionPreReturnMarkerSpacing = ' ',\n    enableFixer = true,\n    functionOrClassParameterSpacing = ' ',\n    functionOrClassPostGenericSpacing = '',\n    functionOrClassPostReturnMarkerSpacing = ' ',\n    functionOrClassPreReturnMarkerSpacing = '',\n    functionOrClassTypeParameterSpacing = ' ',\n    genericAndTupleElementSpacing = ' ',\n    genericDot = false,\n    keyValuePostColonSpacing = ' ',\n    keyValuePostKeySpacing = '',\n    keyValuePostOptionalSpacing = '',\n    keyValuePostVariadicSpacing = '',\n    methodQuotes = 'double',\n    objectFieldIndent = '',\n    objectFieldQuote = null,\n    objectFieldSeparator = 'comma',\n    objectFieldSeparatorOptionalLinebreak = true,\n    objectFieldSeparatorTrailingPunctuation = false,\n    objectTypeBracketSpacing = '',\n    parameterDefaultValueSpacing = ' ',\n    postMethodNameSpacing = '',\n    postNewSpacing = ' ',\n    // propertyQuotes = null,\n    separatorForSingleObjectField = false,\n    stringQuotes = 'double',\n    trailingPunctuationMultilineOnly = false,\n    typeBracketSpacing = '',\n    unionSpacing = ' ',\n  } = context.options[0] || {};\n\n  const {\n    mode,\n  } = settings;\n\n  /**\n   * @param {import('@es-joy/jsdoccomment').JsdocTagWithInline} tag\n   */\n  const checkTypeFormats = (tag) => {\n    const potentialType = tag.type;\n    let parsedType;\n    try {\n      parsedType = mode === 'permissive' ?\n        tryParseType(/** @type {string} */ (potentialType)) :\n        parseType(/** @type {string} */ (potentialType), mode);\n    } catch {\n      return;\n    }\n\n    const fix = () => {\n      rewireByParsedType(jsdoc, tag, parsedType, indent, typeBracketSpacing);\n    };\n\n    /** @type {string[]} */\n    const errorMessages = [];\n\n    if (typeBracketSpacing && (!tag.type.startsWith(typeBracketSpacing) || !tag.type.endsWith(typeBracketSpacing))) {\n      errorMessages.push(`Must have initial and final \"${typeBracketSpacing}\" spacing`);\n    } else if (!typeBracketSpacing && ((/^\\s/v).test(tag.type) || (/\\s$/v).test(tag.type))) {\n      errorMessages.push('Must have no initial spacing');\n    }\n\n    // eslint-disable-next-line complexity -- Todo\n    traverse(parsedType, (nde) => {\n      let errorMessage = '';\n\n      /**\n       * @param {Partial<import('jsdoc-type-pratt-parser').FunctionResult['meta']> & {\n       *   postNewSpacing?: string,\n       *   postMethodNameSpacing?: string\n       * }} meta\n       * @returns {Required<import('jsdoc-type-pratt-parser').FunctionResult['meta']> & {\n       *   postNewSpacing?: string,\n       *   postMethodNameSpacing?: string\n       * }}\n       */\n      const conditionalAdds = (meta) => {\n        const typNode =\n        /**\n         * @type {import('jsdoc-type-pratt-parser').FunctionResult|\n         *   import('jsdoc-type-pratt-parser').CallSignatureResult|\n         *   import('jsdoc-type-pratt-parser').ComputedMethodResult|\n         *   import('jsdoc-type-pratt-parser').ConstructorSignatureResult|\n         *   import('jsdoc-type-pratt-parser').MethodSignatureResult\n         * }\n         */ (nde);\n\n        /**\n         * @type {Required<import('jsdoc-type-pratt-parser').FunctionResult['meta']> & {\n         *   postNewSpacing?: string,\n         *   postMethodNameSpacing?: string\n         * }}\n         */\n        const newMeta = {\n          parameterSpacing: meta.parameterSpacing ?? typNode.meta?.parameterSpacing ?? ' ',\n          postGenericSpacing: meta.postGenericSpacing ?? typNode.meta?.postGenericSpacing ?? '',\n          postReturnMarkerSpacing: meta.postReturnMarkerSpacing ?? typNode.meta?.postReturnMarkerSpacing ?? ' ',\n          preReturnMarkerSpacing: meta.preReturnMarkerSpacing ?? typNode.meta?.preReturnMarkerSpacing ?? '',\n          typeParameterSpacing: meta.typeParameterSpacing ?? typNode.meta?.typeParameterSpacing ?? ' ',\n        };\n\n        if (typNode.type === 'JsdocTypeConstructorSignature') {\n          newMeta.postNewSpacing = meta.postNewSpacing;\n        }\n\n        if (typNode.type === 'JsdocTypeMethodSignature') {\n          newMeta.postMethodNameSpacing = meta.postMethodNameSpacing ?? typNode.meta?.postMethodNameSpacing ?? '';\n        }\n\n        return newMeta;\n      };\n\n      switch (nde.type) {\n        case 'JsdocTypeConstructorSignature': {\n          const typeNode = /** @type {import('jsdoc-type-pratt-parser').ConstructorSignatureResult} */ (nde);\n          /* c8 ignore next -- Guard */\n          if ((typeNode.meta?.postNewSpacing ?? ' ') !== postNewSpacing) {\n            typeNode.meta =\n              /**\n               * @type {Required<import('jsdoc-type-pratt-parser').FunctionResult['meta']> & {\n               *   postNewSpacing: string,\n               * }}\n               */ (conditionalAdds({\n                postNewSpacing,\n              }));\n            errorMessage = `Post-\\`new\\` spacing should be \"${postNewSpacing}\"`;\n            break;\n          }\n        }\n\n        case 'JsdocTypeFunction': {\n          const typeNode =\n            /**\n             * @type {import('jsdoc-type-pratt-parser').FunctionResult}\n             */ nde;\n          if ('arrow' in typeNode && typeNode.arrow) {\n            /* c8 ignore next -- Guard */\n            if ((typeNode.meta?.postReturnMarkerSpacing ?? ' ') !== arrowFunctionPostReturnMarkerSpacing) {\n              typeNode.meta =\n              /**\n               * @type {Required<import('jsdoc-type-pratt-parser').FunctionResult['meta']> & {\n               *   postNewSpacing: string,\n               * }}\n               */ (conditionalAdds({\n                  postReturnMarkerSpacing: arrowFunctionPostReturnMarkerSpacing,\n                  /* c8 ignore next -- Guard */\n                  preReturnMarkerSpacing: typeNode.meta?.preReturnMarkerSpacing ?? ' ',\n                }));\n              errorMessage = `Post-return-marker spacing should be \"${arrowFunctionPostReturnMarkerSpacing}\"`;\n              break;\n            /* c8 ignore next -- Guard */\n            } else if ((typeNode.meta?.preReturnMarkerSpacing ?? ' ') !== arrowFunctionPreReturnMarkerSpacing) {\n              typeNode.meta =\n              /**\n               * @type {Required<import('jsdoc-type-pratt-parser').FunctionResult['meta']> & {\n               *   postNewSpacing: string,\n               * }}\n               */ (conditionalAdds({\n                  /* c8 ignore next -- Guard */\n                  postReturnMarkerSpacing: typeNode.meta?.postReturnMarkerSpacing ?? ' ',\n                  preReturnMarkerSpacing: arrowFunctionPreReturnMarkerSpacing,\n                }));\n              errorMessage = `Pre-return-marker spacing should be \"${arrowFunctionPreReturnMarkerSpacing}\"`;\n              break;\n            }\n\n            break;\n          }\n        }\n\n        case 'JsdocTypeCallSignature':\n        case 'JsdocTypeComputedMethod':\n        case 'JsdocTypeMethodSignature': {\n          const typeNode =\n            /**\n             * @type {import('jsdoc-type-pratt-parser').FunctionResult|\n             *   import('jsdoc-type-pratt-parser').CallSignatureResult|\n             *   import('jsdoc-type-pratt-parser').ComputedMethodResult|\n             *   import('jsdoc-type-pratt-parser').ConstructorSignatureResult|\n             *   import('jsdoc-type-pratt-parser').MethodSignatureResult\n             * }\n             */ (nde);\n          if (typeNode.type === 'JsdocTypeMethodSignature' &&\n            (typeNode.meta?.postMethodNameSpacing ?? '') !== postMethodNameSpacing\n          ) {\n            typeNode.meta = {\n              quote: typeNode.meta.quote,\n              ...conditionalAdds({\n                postMethodNameSpacing,\n              }),\n            };\n            errorMessage = `Post-method-name spacing should be \"${postMethodNameSpacing}\"`;\n            break;\n          } else if (typeNode.type === 'JsdocTypeMethodSignature' &&\n            typeNode.meta.quote !== undefined &&\n            typeNode.meta.quote !== methodQuotes\n          ) {\n            typeNode.meta = {\n              ...conditionalAdds({\n                postMethodNameSpacing: typeNode.meta.postMethodNameSpacing ?? '',\n              }),\n              quote: methodQuotes,\n            };\n            errorMessage = `Method quoting style should be \"${methodQuotes}\"`;\n            break;\n          }\n\n          if ((typeNode.meta?.parameterSpacing ?? ' ') !== functionOrClassParameterSpacing) {\n            typeNode.meta = conditionalAdds({\n              parameterSpacing: functionOrClassParameterSpacing,\n            });\n            errorMessage = `Parameter spacing should be \"${functionOrClassParameterSpacing}\"`;\n          } else if ((typeNode.meta?.postGenericSpacing ?? '') !== functionOrClassPostGenericSpacing) {\n            typeNode.meta = conditionalAdds({\n              postGenericSpacing: functionOrClassPostGenericSpacing,\n            });\n            errorMessage = `Post-generic spacing should be \"${functionOrClassPostGenericSpacing}\"`;\n          } else if ((typeNode.meta?.postReturnMarkerSpacing ?? ' ') !== functionOrClassPostReturnMarkerSpacing) {\n            typeNode.meta = conditionalAdds({\n              postReturnMarkerSpacing: functionOrClassPostReturnMarkerSpacing,\n            });\n            errorMessage = `Post-return-marker spacing should be \"${functionOrClassPostReturnMarkerSpacing}\"`;\n          } else if ((typeNode.meta?.preReturnMarkerSpacing ?? '') !== functionOrClassPreReturnMarkerSpacing) {\n            typeNode.meta = conditionalAdds({\n              preReturnMarkerSpacing: functionOrClassPreReturnMarkerSpacing,\n            });\n            errorMessage = `Pre-return-marker spacing should be \"${functionOrClassPreReturnMarkerSpacing}\"`;\n          } else if ((typeNode.meta?.typeParameterSpacing ?? ' ') !== functionOrClassTypeParameterSpacing) {\n            typeNode.meta = conditionalAdds({\n              typeParameterSpacing: functionOrClassTypeParameterSpacing,\n            });\n            errorMessage = `Type parameter spacing should be \"${functionOrClassTypeParameterSpacing}\"`;\n          }\n\n          break;\n        }\n\n        case 'JsdocTypeGeneric': {\n          const typeNode = /** @type {import('jsdoc-type-pratt-parser').GenericResult} */ (nde);\n          if ('value' in typeNode.left && typeNode.left.value === 'Array') {\n            if (typeNode.meta.brackets !== arrayBrackets) {\n              typeNode.meta.brackets = arrayBrackets;\n              errorMessage = `Array bracket style should be ${arrayBrackets}`;\n            }\n          } else if (typeNode.meta.dot !== genericDot) {\n            typeNode.meta.dot = genericDot;\n            errorMessage = `Dot usage should be ${genericDot}`;\n          } else if ((typeNode.meta.elementSpacing ?? ' ') !== genericAndTupleElementSpacing) {\n            typeNode.meta.elementSpacing = genericAndTupleElementSpacing;\n            errorMessage = `Element spacing should be \"${genericAndTupleElementSpacing}\"`;\n          }\n\n          break;\n        }\n\n        case 'JsdocTypeKeyValue': {\n          const typeNode = /** @type {import('jsdoc-type-pratt-parser').KeyValueResult} */ (nde);\n          /* c8 ignore next -- Guard */\n          if ((typeNode.meta?.postKeySpacing ?? '') !== keyValuePostKeySpacing) {\n            typeNode.meta = {\n              /* c8 ignore next -- Guard */\n              postColonSpacing: typeNode.meta?.postColonSpacing ?? ' ',\n              postKeySpacing: keyValuePostKeySpacing,\n              /* c8 ignore next 2 -- Guard */\n              postOptionalSpacing: typeNode.meta?.postOptionalSpacing ?? '',\n              postVariadicSpacing: typeNode.meta?.postVariadicSpacing ?? '',\n            };\n            errorMessage = `Post key spacing should be \"${keyValuePostKeySpacing}\"`;\n          /* c8 ignore next -- Guard */\n          } else if ((typeNode.meta?.postColonSpacing ?? ' ') !== keyValuePostColonSpacing) {\n            typeNode.meta = {\n              postColonSpacing: keyValuePostColonSpacing,\n              /* c8 ignore next 3 -- Guard */\n              postKeySpacing: typeNode.meta?.postKeySpacing ?? '',\n              postOptionalSpacing: typeNode.meta?.postOptionalSpacing ?? '',\n              postVariadicSpacing: typeNode.meta?.postVariadicSpacing ?? '',\n            };\n            errorMessage = `Post colon spacing should be \"${keyValuePostColonSpacing}\"`;\n          /* c8 ignore next -- Guard */\n          } else if ((typeNode.meta?.postOptionalSpacing ?? '') !== keyValuePostOptionalSpacing) {\n            typeNode.meta = {\n              /* c8 ignore next 2 -- Guard */\n              postColonSpacing: typeNode.meta?.postColonSpacing ?? ' ',\n              postKeySpacing: typeNode.meta?.postKeySpacing ?? '',\n              postOptionalSpacing: keyValuePostOptionalSpacing,\n              /* c8 ignore next -- Guard */\n              postVariadicSpacing: typeNode.meta?.postVariadicSpacing ?? '',\n            };\n            errorMessage = `Post optional (\\`?\\`) spacing should be \"${keyValuePostOptionalSpacing}\"`;\n          /* c8 ignore next -- Guard */\n          } else if (typeNode.variadic && (typeNode.meta?.postVariadicSpacing ?? '') !== keyValuePostVariadicSpacing) {\n            typeNode.meta = {\n              /* c8 ignore next 3 -- Guard */\n              postColonSpacing: typeNode.meta?.postColonSpacing ?? ' ',\n              postKeySpacing: typeNode.meta?.postKeySpacing ?? '',\n              postOptionalSpacing: typeNode.meta?.postOptionalSpacing ?? '',\n              postVariadicSpacing: keyValuePostVariadicSpacing,\n            };\n            errorMessage = `Post variadic (\\`...\\`) spacing should be \"${keyValuePostVariadicSpacing}\"`;\n          }\n\n          break;\n        }\n\n        case 'JsdocTypeObject': {\n          const typeNode = /** @type {import('jsdoc-type-pratt-parser').ObjectResult} */ (nde);\n          /* c8 ignore next -- Guard */\n          const separator = typeNode.meta.separator ?? 'comma';\n\n          if (\n            (separator !== objectFieldSeparator &&\n              (!objectFieldSeparatorOptionalLinebreak ||\n                !(objectFieldSeparator.endsWith('-linebreak') &&\n                  objectFieldSeparator.startsWith(separator)))) ||\n            (typeNode.meta.separatorForSingleObjectField ?? false) !== separatorForSingleObjectField ||\n            ((typeNode.meta.propertyIndent ?? '') !== objectFieldIndent &&\n              separator.endsWith('-linebreak')) ||\n            /* c8 ignore next 5 -- jsdoc-type-pratt-parser doesn't encode as should */\n            ((typeNode.meta.trailingPunctuation ?? false) !== objectFieldSeparatorTrailingPunctuation &&\n              ((typeNode.meta.trailingPunctuation && (!trailingPunctuationMultilineOnly ||\n                !stringify(typeNode).includes('\\n'))) ||\n              (!typeNode.meta.trailingPunctuation && (!trailingPunctuationMultilineOnly ||\n                stringify(typeNode).includes('\\n')))))\n          ) {\n            typeNode.meta.separator = objectFieldSeparatorOptionalLinebreak && !separator.endsWith('and-linebreak') ?\n              objectFieldSeparator.replace(/-and-linebreak$/v, '') :\n              objectFieldSeparator;\n            typeNode.meta.separatorForSingleObjectField = separatorForSingleObjectField;\n            typeNode.meta.propertyIndent = objectFieldIndent;\n            typeNode.meta.trailingPunctuation = objectFieldSeparatorTrailingPunctuation;\n            errorMessage = `Inconsistent ${objectFieldSeparator} separator usage`;\n          } else if ((typeNode.meta.bracketSpacing ?? '') !== objectTypeBracketSpacing) {\n            typeNode.meta.bracketSpacing = objectTypeBracketSpacing;\n            // This might not be the cause\n            // errorMessage = `Object type bracket spacing should be \"${objectTypeBracketSpacing}\"`;\n          }\n\n          break;\n        }\n\n        case 'JsdocTypeObjectField': {\n          const typeNode = /** @type {import('jsdoc-type-pratt-parser').ObjectFieldResult} */ (nde);\n          if ((objectFieldQuote ||\n            (typeof typeNode.key === 'string' &&\n              (\n                (/^[\\p{ID_Start}$_][\\p{ID_Continue}$\\u200C\\u200D]*$/v).test(typeNode.key) ||\n                digitRegex.test(typeNode.key)\n              )\n            )) &&\n            typeNode.meta.quote !== (objectFieldQuote ?? undefined) &&\n            (typeof typeNode.key !== 'string' ||\n                !digitRegex.test(typeNode.key))\n          ) {\n            typeNode.meta.quote = objectFieldQuote ?? undefined;\n            errorMessage = `Inconsistent object field quotes ${objectFieldQuote}`;\n          } else if ((typeNode.meta?.postKeySpacing ?? '') !== keyValuePostKeySpacing) {\n            typeNode.meta.postKeySpacing = keyValuePostKeySpacing;\n            errorMessage = `Post key spacing should be \"${keyValuePostKeySpacing}\"`;\n          } else if ((typeNode.meta?.postColonSpacing ?? ' ') !== keyValuePostColonSpacing) {\n            typeNode.meta.postColonSpacing = keyValuePostColonSpacing;\n            errorMessage = `Post colon spacing should be \"${keyValuePostColonSpacing}\"`;\n          } else if ((typeNode.meta?.postOptionalSpacing ?? '') !== keyValuePostOptionalSpacing) {\n            typeNode.meta.postOptionalSpacing = keyValuePostOptionalSpacing;\n            errorMessage = `Post optional (\\`?\\`) spacing should be \"${keyValuePostOptionalSpacing}\"`;\n          }\n\n          break;\n        }\n\n        case 'JsdocTypeStringValue': {\n          const typeNode = /** @type {import('jsdoc-type-pratt-parser').StringValueResult} */ (nde);\n          if (typeNode.meta.quote !== stringQuotes) {\n            typeNode.meta.quote = stringQuotes;\n            errorMessage = `Inconsistent ${stringQuotes} string quotes usage`;\n          }\n\n          break;\n        }\n\n        // Only suitable for namepaths (and would need changes); see https://github.com/gajus/eslint-plugin-jsdoc/issues/1524\n        // case 'JsdocTypeProperty': {\n        //   const typeNode = /** @type {import('jsdoc-type-pratt-parser').PropertyResult} */ (nde);\n\n        //   if ((propertyQuotes ||\n        //     (typeof typeNode.value === 'string' && !(/\\s/v).test(typeNode.value))) &&\n        //     typeNode.meta.quote !== (propertyQuotes ?? undefined)\n        //   ) {\n        //     typeNode.meta.quote = propertyQuotes ?? undefined;\n        //     errorMessage = `Inconsistent ${propertyQuotes} property quotes usage`;\n        //   }\n\n        //   break;\n        // }\n\n        case 'JsdocTypeTuple': {\n          const typeNode = /** @type {import('jsdoc-type-pratt-parser').TupleResult} */ (nde);\n          /* c8 ignore next -- Guard */\n          if ((typeNode.meta?.elementSpacing ?? ' ') !== genericAndTupleElementSpacing) {\n            typeNode.meta = {\n              elementSpacing: genericAndTupleElementSpacing,\n            };\n            errorMessage = `Element spacing should be \"${genericAndTupleElementSpacing}\"`;\n          }\n\n          break;\n        }\n\n        case 'JsdocTypeTypeParameter': {\n          const typeNode = /** @type {import('jsdoc-type-pratt-parser').TypeParameterResult} */ (nde);\n          /* c8 ignore next -- Guard */\n          if (typeNode.defaultValue && (typeNode.meta?.defaultValueSpacing ?? ' ') !== parameterDefaultValueSpacing) {\n            typeNode.meta = {\n              defaultValueSpacing: parameterDefaultValueSpacing,\n            };\n            errorMessage = `Default value spacing should be \"${parameterDefaultValueSpacing}\"`;\n          }\n\n          break;\n        }\n\n        case 'JsdocTypeUnion': {\n          const typeNode = /** @type {import('jsdoc-type-pratt-parser').UnionResult} */ (nde);\n          /* c8 ignore next -- Guard */\n          if ((typeNode.meta?.spacing ?? ' ') !== unionSpacing) {\n            typeNode.meta = {\n              spacing: unionSpacing,\n            };\n            errorMessage = `Inconsistent \"${unionSpacing}\" union spacing usage`;\n          }\n\n          break;\n        }\n\n        default:\n          break;\n      }\n\n      if (errorMessage) {\n        errorMessages.push(errorMessage);\n      }\n    });\n\n    const differentResult = tag.type !==\n      typeBracketSpacing + stringify(parsedType) + typeBracketSpacing;\n\n    if (errorMessages.length && differentResult) {\n      for (const errorMessage of errorMessages) {\n        utils.reportJSDoc(\n          errorMessage, tag, enableFixer ? fix : null,\n        );\n      }\n    // Stringification may have been equal previously (and thus no error reported)\n    //   because the stringification doesn't preserve everything\n    } else if (differentResult) {\n      utils.reportJSDoc(\n        'There was an error with type formatting', tag, enableFixer ? fix : null,\n      );\n    }\n  };\n\n  const tags = utils.getPresentTags([\n    'param',\n    'property',\n    'returns',\n    'this',\n    'throws',\n    'type',\n    'typedef',\n    'yields',\n  ]);\n  for (const tag of tags) {\n    if (tag.type) {\n      checkTypeFormats(tag);\n    }\n  }\n}, {\n  iterateAllJsdocs: true,\n  meta: {\n    docs: {\n      description: 'Formats JSDoc type values.',\n      url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/type-formatting.md#repos-sticky-header',\n    },\n    fixable: 'code',\n    schema: [\n      {\n        additionalProperties: false,\n        properties: {\n          arrayBrackets: {\n            description: 'Determines how array generics are represented. Set to `angle` for the style `Array<type>` or `square` for the style `type[]`. Defaults to \"square\".',\n            enum: [\n              'angle',\n              'square',\n            ],\n            type: 'string',\n          },\n          arrowFunctionPostReturnMarkerSpacing: {\n            description: 'The space character (if any) to use after return markers (`=>`). Defaults to \" \".',\n            type: 'string',\n          },\n          arrowFunctionPreReturnMarkerSpacing: {\n            description: 'The space character (if any) to use before return markers (`=>`). Defaults to \" \".',\n            type: 'string',\n          },\n          enableFixer: {\n            description: 'Whether to enable the fixer. Defaults to `true`.',\n            type: 'boolean',\n          },\n          functionOrClassParameterSpacing: {\n            description: 'The space character (if any) to use between function or class parameters. Defaults to \" \".',\n            type: 'string',\n          },\n          functionOrClassPostGenericSpacing: {\n            description: 'The space character (if any) to use after a generic expression in a function or class. Defaults to \"\".',\n            type: 'string',\n          },\n          functionOrClassPostReturnMarkerSpacing: {\n            description: 'The space character (if any) to use after return markers (`:`). Defaults to \"\".',\n            type: 'string',\n          },\n          functionOrClassPreReturnMarkerSpacing: {\n            description: 'The space character (if any) to use before return markers (`:`). Defaults to \"\".',\n            type: 'string',\n          },\n          functionOrClassTypeParameterSpacing: {\n            description: 'The space character (if any) to use between type parameters in a function or class. Defaults to \" \".',\n            type: 'string',\n          },\n          genericAndTupleElementSpacing: {\n            description: 'The space character (if any) to use between elements in generics and tuples. Defaults to \" \".',\n            type: 'string',\n          },\n          genericDot: {\n            description: 'Boolean value of whether to use a dot before the angled brackets of a generic (e.g., `SomeType.<AnotherType>`). Defaults to `false`.',\n            type: 'boolean',\n          },\n          keyValuePostColonSpacing: {\n            description: 'The amount of spacing (if any) after the colon of a key-value or object-field pair. Defaults to \" \".',\n            type: 'string',\n          },\n          keyValuePostKeySpacing: {\n            description: 'The amount of spacing (if any) immediately after keys in a key-value or object-field pair. Defaults to \"\".',\n            type: 'string',\n          },\n          keyValuePostOptionalSpacing: {\n            description: 'The amount of spacing (if any) after the optional operator (`?`) in a key-value or object-field pair. Defaults to \"\".',\n            type: 'string',\n          },\n          keyValuePostVariadicSpacing: {\n            description: 'The amount of spacing (if any) after a variadic operator (`...`) in a key-value pair. Defaults to \"\".',\n            type: 'string',\n          },\n          methodQuotes: {\n            description: 'The style of quotation mark for surrounding method names when quoted. Defaults to `double`',\n            enum: [\n              'double',\n              'single',\n            ],\n            type: 'string',\n          },\n          objectFieldIndent: {\n            description: `A string indicating the whitespace to be added on each line preceding an\nobject property-value field. Defaults to the empty string.`,\n            type: 'string',\n          },\n          objectFieldQuote: {\n            description: `Whether and how object field properties should be quoted (e.g., \\`{\"a\": string}\\`).\nSet to \\`single\\`, \\`double\\`, or \\`null\\`. Defaults to \\`null\\` (no quotes unless\nrequired due to special characters within the field). Digits will be kept as is,\nregardless of setting (they can either represent a digit or a string digit).`,\n            enum: [\n              'double',\n              'single',\n              null,\n            ],\n          },\n          objectFieldSeparator: {\n            description: `For object properties, specify whether a \"semicolon\", \"comma\", \"linebreak\",\n\"semicolon-and-linebreak\", or \"comma-and-linebreak\" should be used after\neach object property-value pair.\n\nDefaults to \\`\"comma\"\\`.`,\n            enum: [\n              'comma',\n              'comma-and-linebreak',\n              'linebreak',\n              'semicolon',\n              'semicolon-and-linebreak',\n            ],\n            type: 'string',\n          },\n          objectFieldSeparatorOptionalLinebreak: {\n            description: `Whether \\`objectFieldSeparator\\` set to \\`\"semicolon-and-linebreak\"\\` or\n\\`\"comma-and-linebreak\"\\` should be allowed to optionally drop the linebreak.\n\nDefaults to \\`true\\`.`,\n            type: 'boolean',\n          },\n          objectFieldSeparatorTrailingPunctuation: {\n            description: `If \\`separatorForSingleObjectField\\` is not in effect (i.e., if it is \\`false\\`\nor there are multiple property-value object fields present), this property\nwill determine whether to add punctuation corresponding to the\n\\`objectFieldSeparator\\` (e.g., a semicolon) to the final object field.\nDefaults to \\`false\\`.`,\n            type: 'boolean',\n          },\n          objectTypeBracketSpacing: {\n            description: 'The space character (if any) to add after an object\\'s initial curly bracket and before its ending curly bracket',\n            type: 'string',\n          },\n          parameterDefaultValueSpacing: {\n            description: 'The space character (if any) to use between the equal signs of a default value. Defaults to \" \".',\n            type: 'string',\n          },\n          postMethodNameSpacing: {\n            description: 'The space character (if any) to add after a method name. Defaults to \"\".',\n            type: 'string',\n          },\n          postNewSpacing: {\n            description: 'The space character (if any) to add after \"new\" in a constructor. Defaults to \" \".',\n            type: 'string',\n          },\n          //           propertyQuotes: {\n          //             description: `Whether and how namepath properties should be quoted (e.g., \\`ab.\"cd\".\"ef\"\\`).\n          // Set to \\`single\\`, \\`double\\`, or \\`null\\`. Defaults to \\`null\\` (no quotes unless\n          // required due to whitespace within the property).`,\n          //             enum: [\n          //               'double',\n          //               'single',\n          //               null,\n          //             ],\n          //           },\n          separatorForSingleObjectField: {\n            description: `Whether to apply the \\`objectFieldSeparator\\` (e.g., a semicolon) when there\nis only one property-value object field present. Defaults to \\`false\\`.`,\n            type: 'boolean',\n          },\n          stringQuotes: {\n            description: `How string literals should be quoted (e.g., \\`\"abc\"\\`). Set to \\`single\\`\nor \\`double\\`. Defaults to 'double'.`,\n            enum: [\n              'double',\n              'single',\n            ],\n            type: 'string',\n          },\n          trailingPunctuationMultilineOnly: {\n            description: 'If `objectFieldSeparatorTrailingPunctuation` is set, this will determine whether the trailing puncutation is only added when the type is multiline',\n            type: 'boolean',\n          },\n          typeBracketSpacing: {\n            description: `A string of spaces that will be added immediately after the type's initial\ncurly bracket and immediately before its ending curly bracket. Defaults\nto the empty string.`,\n            type: 'string',\n          },\n          unionSpacing: {\n            description: 'Determines the spacing to add to unions (`|`). Defaults to a single space (`\" \"`).',\n            type: 'string',\n          },\n        },\n        type: 'object',\n      },\n    ],\n    type: 'suggestion',\n  },\n});\n"],"mappings":"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","ignoreList":[]}