{"version":3,"file":"checkLineAlignment.cjs","names":["_alignTransform","_interopRequireDefault","require","_iterateJsdoc","_commentParser","e","__esModule","default","flow","commentFlow","transforms","checkNotAlignedPerTag","utils","tag","customSpacings","spacerProps","contentProps","mightHaveNamepath","tagMightHaveNamepath","tokens","source","followedBySpace","idx","callbck","nextIndex","slice","some","spacerProp","innerIdx","contentProp","spacePropVal","ret","postHyphenSpacing","postHyphen","exactHyphenSpacing","RegExp","hasNoHyphen","test","description","hasExactHyphenSpacing","ok","contentPropVal","spacerPropVal","spacing","length","fix","entries","padStart","hasSpace","contentPrp","hyphenSpacing","replace","setTag","reportJSDoc","checkAlignment","indent","jsdoc","jsdocNode","preserveMainDescriptionPostDelimiter","report","tags","wrapIndent","disableWrapIndent","transform","alignTransform","transformedJsdoc","comment","value","formatted","stringify","trimStart","fixer","replaceText","_default","exports","iterateJsdoc","context","applicableTags","options","includes","foundTags","getPresentTags","type","name","postDelimiter","line","number","charAt","iterateAllJsdocs","meta","docs","url","fixable","schema","enum","additionalProperties","properties","postName","postTag","postType","items","module"],"sources":["../../src/rules/checkLineAlignment.js"],"sourcesContent":["import alignTransform from '../alignTransform.js';\nimport iterateJsdoc from '../iterateJsdoc.js';\nimport {\n transforms,\n} from 'comment-parser';\n\nconst {\n flow: commentFlow,\n} = transforms;\n\n/**\n * @typedef {{\n * postDelimiter: import('../iterateJsdoc.js').Integer,\n * postHyphen: import('../iterateJsdoc.js').Integer,\n * postName: import('../iterateJsdoc.js').Integer,\n * postTag: import('../iterateJsdoc.js').Integer,\n * postType: import('../iterateJsdoc.js').Integer,\n * }} CustomSpacings\n */\n\n/**\n * @param {import('../iterateJsdoc.js').Utils} utils\n * @param {import('comment-parser').Spec & {\n * line: import('../iterateJsdoc.js').Integer\n * }} tag\n * @param {CustomSpacings} customSpacings\n */\nconst checkNotAlignedPerTag = (utils, tag, customSpacings) => {\n /*\n start +\n delimiter +\n postDelimiter +\n tag +\n postTag +\n type +\n postType +\n name +\n postName +\n description +\n end +\n lineEnd\n */\n\n /**\n * @typedef {\"tag\"|\"type\"|\"name\"|\"description\"} ContentProp\n */\n\n /** @type {(\"postDelimiter\"|\"postTag\"|\"postType\"|\"postName\")[]} */\n let spacerProps;\n /** @type {ContentProp[]} */\n let contentProps;\n const mightHaveNamepath = utils.tagMightHaveNamepath(tag.tag);\n if (mightHaveNamepath) {\n spacerProps = [\n 'postDelimiter', 'postTag', 'postType', 'postName',\n ];\n contentProps = [\n 'tag', 'type', 'name', 'description',\n ];\n } else {\n spacerProps = [\n 'postDelimiter', 'postTag', 'postType',\n ];\n contentProps = [\n 'tag', 'type', 'description',\n ];\n }\n\n const {\n tokens,\n } = tag.source[0];\n\n /**\n * @param {import('../iterateJsdoc.js').Integer} idx\n * @param {(notRet: boolean, contentProp: ContentProp) => void} [callbck]\n */\n const followedBySpace = (idx, callbck) => {\n const nextIndex = idx + 1;\n\n return spacerProps.slice(nextIndex).some((spacerProp, innerIdx) => {\n const contentProp = contentProps[nextIndex + innerIdx];\n\n const spacePropVal = tokens[spacerProp];\n\n const ret = spacePropVal;\n\n if (callbck) {\n callbck(!ret, contentProp);\n }\n\n return ret && (callbck || !contentProp);\n });\n };\n\n const postHyphenSpacing = customSpacings?.postHyphen ?? 1;\n const exactHyphenSpacing = new RegExp(`^\\\\s*-\\\\s{${postHyphenSpacing},${postHyphenSpacing}}(?!\\\\s)`, 'u');\n const hasNoHyphen = !(/^\\s*-(?!$)(?=\\s)/u).test(tokens.description);\n const hasExactHyphenSpacing = exactHyphenSpacing.test(\n tokens.description,\n );\n\n // If checking alignment on multiple lines, need to check other `source`\n // items\n // Go through `post*` spacing properties and exit to indicate problem if\n // extra spacing detected\n const ok = !spacerProps.some((spacerProp, idx) => {\n const contentProp = contentProps[idx];\n const contentPropVal = tokens[contentProp];\n const spacerPropVal = tokens[spacerProp];\n const spacing = customSpacings?.[spacerProp] || 1;\n\n // There will be extra alignment if...\n\n // 1. The spaces don't match the space it should have (1 or custom spacing) OR\n return spacerPropVal.length !== spacing && spacerPropVal.length !== 0 ||\n\n // 2. There is a (single) space, no immediate content, and yet another\n // space is found subsequently (not separated by intervening content)\n spacerPropVal && !contentPropVal && followedBySpace(idx);\n }) && (hasNoHyphen || hasExactHyphenSpacing);\n if (ok) {\n return;\n }\n\n const fix = () => {\n for (const [\n idx,\n spacerProp,\n ] of spacerProps.entries()) {\n const contentProp = contentProps[idx];\n const contentPropVal = tokens[contentProp];\n\n if (contentPropVal) {\n const spacing = customSpacings?.[spacerProp] || 1;\n tokens[spacerProp] = ''.padStart(spacing, ' ');\n followedBySpace(idx, (hasSpace, contentPrp) => {\n if (hasSpace) {\n tokens[contentPrp] = '';\n }\n });\n } else {\n tokens[spacerProp] = '';\n }\n }\n\n if (!hasExactHyphenSpacing) {\n const hyphenSpacing = /^\\s*-\\s+/u;\n tokens.description = tokens.description.replace(\n hyphenSpacing, '-' + ''.padStart(postHyphenSpacing, ' '),\n );\n }\n\n utils.setTag(tag, tokens);\n };\n\n utils.reportJSDoc('Expected JSDoc block lines to not be aligned.', tag, fix, true);\n};\n\n/**\n * @param {object} cfg\n * @param {CustomSpacings} cfg.customSpacings\n * @param {string} cfg.indent\n * @param {import('comment-parser').Block} cfg.jsdoc\n * @param {import('eslint').Rule.Node & {\n * range: [number, number]\n * }} cfg.jsdocNode\n * @param {boolean} cfg.preserveMainDescriptionPostDelimiter\n * @param {import('../iterateJsdoc.js').Report} cfg.report\n * @param {string[]} cfg.tags\n * @param {import('../iterateJsdoc.js').Utils} cfg.utils\n * @param {string} cfg.wrapIndent\n * @param {boolean} cfg.disableWrapIndent\n * @returns {void}\n */\nconst checkAlignment = ({\n customSpacings,\n indent,\n jsdoc,\n jsdocNode,\n preserveMainDescriptionPostDelimiter,\n report,\n tags,\n utils,\n wrapIndent,\n disableWrapIndent,\n}) => {\n const transform = commentFlow(\n alignTransform({\n customSpacings,\n indent,\n preserveMainDescriptionPostDelimiter,\n tags,\n wrapIndent,\n disableWrapIndent,\n }),\n );\n const transformedJsdoc = transform(jsdoc);\n\n const comment = '/*' +\n /**\n * @type {import('eslint').Rule.Node & {\n * range: [number, number], value: string\n * }}\n */ (jsdocNode).value + '*/';\n\n const formatted = utils.stringify(transformedJsdoc)\n .trimStart();\n\n if (comment !== formatted) {\n report(\n 'Expected JSDoc block lines to be aligned.',\n /** @type {import('eslint').Rule.ReportFixer} */ (fixer) => {\n return fixer.replaceText(jsdocNode, formatted);\n },\n );\n }\n};\n\nexport default iterateJsdoc(({\n indent,\n jsdoc,\n jsdocNode,\n report,\n context,\n utils,\n}) => {\n const {\n tags: applicableTags = [\n 'param', 'arg', 'argument', 'property', 'prop', 'returns', 'return',\n ],\n preserveMainDescriptionPostDelimiter,\n customSpacings,\n wrapIndent = '',\n disableWrapIndent = false,\n } = context.options[1] || {};\n\n if (context.options[0] === 'always') {\n // Skip if it contains only a single line.\n if (!(\n /**\n * @type {import('eslint').Rule.Node & {\n * range: [number, number], value: string\n * }}\n */\n (jsdocNode).value.includes('\\n')\n )) {\n return;\n }\n\n checkAlignment({\n customSpacings,\n indent,\n jsdoc,\n jsdocNode,\n preserveMainDescriptionPostDelimiter,\n report,\n tags: applicableTags,\n utils,\n wrapIndent,\n disableWrapIndent,\n });\n\n return;\n }\n\n const foundTags = utils.getPresentTags(applicableTags);\n if (context.options[0] !== 'any') {\n for (const tag of foundTags) {\n checkNotAlignedPerTag(\n utils,\n /**\n * @type {import('comment-parser').Spec & {\n * line: import('../iterateJsdoc.js').Integer\n * }}\n */\n (tag),\n customSpacings,\n );\n }\n }\n\n for (const tag of foundTags) {\n if (tag.source.length > 1) {\n let idx = 0;\n for (const {\n tokens,\n // Avoid the tag line\n } of tag.source.slice(1)) {\n idx++;\n\n if (\n !tokens.description ||\n // Avoid first lines after multiline type\n tokens.type ||\n tokens.name\n ) {\n continue;\n }\n\n // Don't include a single separating space/tab\n if (!disableWrapIndent && tokens.postDelimiter.slice(1) !== wrapIndent) {\n utils.reportJSDoc('Expected wrap indent', {\n line: tag.source[0].number + idx,\n }, () => {\n tokens.postDelimiter = tokens.postDelimiter.charAt(0) + wrapIndent;\n });\n return;\n }\n }\n }\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Reports invalid alignment of JSDoc block lines.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-line-alignment.md#repos-sticky-header',\n },\n fixable: 'whitespace',\n schema: [\n {\n enum: [\n 'always', 'never', 'any',\n ],\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n customSpacings: {\n additionalProperties: false,\n properties: {\n postDelimiter: {\n type: 'integer',\n },\n postHyphen: {\n type: 'integer',\n },\n postName: {\n type: 'integer',\n },\n postTag: {\n type: 'integer',\n },\n postType: {\n type: 'integer',\n },\n },\n },\n preserveMainDescriptionPostDelimiter: {\n default: false,\n type: 'boolean',\n },\n tags: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n wrapIndent: {\n type: 'string',\n },\n disableWrapIndent: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'layout',\n },\n});\n"],"mappings":"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","ignoreList":[]}