blob: b8dbc77eb5a4912c4d9c037c14b28cdbb895f2d3 [file] [log] [blame]
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _iterateJsdoc = _interopRequireDefault(require("../iterateJsdoc.cjs"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
var _default = exports.default = (0, _iterateJsdoc.default)(({
context,
indent,
jsdocNode,
report,
sourceCode
}) => {
const {
innerIndent = 1
} = context.options[0] || {};
// `indent` is whitespace from line 1 (`/**`), so slice and account for "/".
const indentLevel = indent.length + innerIndent;
const sourceLines = sourceCode.getText(jsdocNode).split('\n').slice(1).map((line, number) => {
return {
line: line.split('*')[0],
number
};
}).filter(({
line
}) => {
return !line.trimStart().length;
});
/** @type {import('eslint').Rule.ReportFixer} */
const fix = fixer => {
const replacement = sourceCode.getText(jsdocNode).split('\n').map((line, index) => {
// Ignore the first line and all lines not starting with `*`
const ignored = !index || line.split('*')[0].trimStart().length;
return ignored ? line : `${indent}${''.padStart(innerIndent, ' ')}${line.trimStart()}`;
}).join('\n');
return fixer.replaceText(jsdocNode, replacement);
};
sourceLines.some(({
line,
number
}) => {
if (line.length !== indentLevel) {
report('Expected JSDoc block to be aligned.', fix, {
line: number + 1
});
return true;
}
return false;
});
}, {
iterateAllJsdocs: true,
meta: {
docs: {
description: 'Reports invalid alignment of JSDoc block asterisks.',
url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-alignment.md#repos-sticky-header'
},
fixable: 'code',
schema: [{
additionalProperties: false,
properties: {
innerIndent: {
default: 1,
description: `Set to 0 if you wish to avoid the normal requirement for an inner indentation of
one space. Defaults to 1 (one space of normal inner indentation).`,
type: 'integer'
}
},
type: 'object'
}],
type: 'layout'
}
});
module.exports = exports.default;
//# sourceMappingURL=checkAlignment.cjs.map