eslint-plugin-jsdoc 50.6.16 → 50.7.0
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/dist/alignTransform.cjs +10 -10
- package/dist/alignTransform.cjs.map +1 -1
- package/dist/exportParser.cjs +141 -135
- package/dist/exportParser.cjs.map +1 -1
- package/dist/generateRule.cjs +10 -12
- package/dist/generateRule.cjs.map +1 -1
- package/dist/getDefaultTagStructureForMode.cjs +73 -73
- package/dist/getDefaultTagStructureForMode.cjs.map +1 -1
- package/dist/getJsdocProcessorPlugin.cjs +121 -110
- package/dist/getJsdocProcessorPlugin.cjs.map +1 -1
- package/dist/index.cjs +17 -12
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/iterateJsdoc.cjs +87 -66
- package/dist/iterateJsdoc.cjs.map +1 -1
- package/dist/jsdocUtils.cjs +144 -142
- package/dist/jsdocUtils.cjs.map +1 -1
- package/dist/rules/checkAlignment.cjs +2 -2
- package/dist/rules/checkAlignment.cjs.map +1 -1
- package/dist/rules/checkExamples.cjs +22 -28
- package/dist/rules/checkExamples.cjs.map +1 -1
- package/dist/rules/checkIndentation.cjs +2 -2
- package/dist/rules/checkIndentation.cjs.map +1 -1
- package/dist/rules/checkLineAlignment.cjs +14 -14
- package/dist/rules/checkLineAlignment.cjs.map +1 -1
- package/dist/rules/checkParamNames.cjs +21 -15
- package/dist/rules/checkParamNames.cjs.map +1 -1
- package/dist/rules/checkPropertyNames.cjs +2 -2
- package/dist/rules/checkPropertyNames.cjs.map +1 -1
- package/dist/rules/checkTagNames.cjs +11 -11
- package/dist/rules/checkTagNames.cjs.map +1 -1
- package/dist/rules/checkTemplateNames.cjs +21 -22
- package/dist/rules/checkTemplateNames.cjs.map +1 -1
- package/dist/rules/checkTypes.cjs +10 -10
- package/dist/rules/checkTypes.cjs.map +1 -1
- package/dist/rules/checkValues.cjs +11 -14
- package/dist/rules/checkValues.cjs.map +1 -1
- package/dist/rules/convertToJsdocComments.cjs +26 -27
- package/dist/rules/convertToJsdocComments.cjs.map +1 -1
- package/dist/rules/emptyTags.cjs +6 -6
- package/dist/rules/emptyTags.cjs.map +1 -1
- package/dist/rules/importsAsDependencies.cjs.map +1 -1
- package/dist/rules/informativeDocs.cjs +12 -12
- package/dist/rules/informativeDocs.cjs.map +1 -1
- package/dist/rules/linesBeforeBlock.cjs +12 -12
- package/dist/rules/linesBeforeBlock.cjs.map +1 -1
- package/dist/rules/matchDescription.cjs +1 -1
- package/dist/rules/matchDescription.cjs.map +1 -1
- package/dist/rules/matchName.cjs +4 -4
- package/dist/rules/matchName.cjs.map +1 -1
- package/dist/rules/multilineBlocks.cjs +10 -10
- package/dist/rules/multilineBlocks.cjs.map +1 -1
- package/dist/rules/noBadBlocks.cjs +3 -3
- package/dist/rules/noBadBlocks.cjs.map +1 -1
- package/dist/rules/noMultiAsterisks.cjs +6 -6
- package/dist/rules/noMultiAsterisks.cjs.map +1 -1
- package/dist/rules/noRestrictedSyntax.cjs +2 -2
- package/dist/rules/noRestrictedSyntax.cjs.map +1 -1
- package/dist/rules/noTypes.cjs.map +1 -1
- package/dist/rules/noUndefinedTypes.cjs +17 -20
- package/dist/rules/noUndefinedTypes.cjs.map +1 -1
- package/dist/rules/requireAsteriskPrefix.cjs +4 -4
- package/dist/rules/requireAsteriskPrefix.cjs.map +1 -1
- package/dist/rules/requireDescription.cjs +2 -2
- package/dist/rules/requireDescription.cjs.map +1 -1
- package/dist/rules/requireDescriptionCompleteSentence.cjs +8 -8
- package/dist/rules/requireDescriptionCompleteSentence.cjs.map +1 -1
- package/dist/rules/requireFileOverview.cjs +6 -6
- package/dist/rules/requireFileOverview.cjs.map +1 -1
- package/dist/rules/requireHyphenBeforeParamDescription.cjs +1 -4
- package/dist/rules/requireHyphenBeforeParamDescription.cjs.map +1 -1
- package/dist/rules/requireJsdoc.cjs +19 -19
- package/dist/rules/requireJsdoc.cjs.map +1 -1
- package/dist/rules/requireParam.cjs +12 -12
- package/dist/rules/requireParam.cjs.map +1 -1
- package/dist/rules/requireProperty.cjs +1 -1
- package/dist/rules/requireProperty.cjs.map +1 -1
- package/dist/rules/requireReturns.cjs +3 -3
- package/dist/rules/requireReturns.cjs.map +1 -1
- package/dist/rules/requireReturnsCheck.cjs +1 -1
- package/dist/rules/requireReturnsCheck.cjs.map +1 -1
- package/dist/rules/requireReturnsDescription.cjs +1 -1
- package/dist/rules/requireReturnsDescription.cjs.map +1 -1
- package/dist/rules/requireTemplate.cjs +16 -15
- package/dist/rules/requireTemplate.cjs.map +1 -1
- package/dist/rules/requireYields.cjs +4 -4
- package/dist/rules/requireYields.cjs.map +1 -1
- package/dist/rules/requireYieldsCheck.cjs +6 -6
- package/dist/rules/requireYieldsCheck.cjs.map +1 -1
- package/dist/rules/sortTags.cjs +13 -13
- package/dist/rules/sortTags.cjs.map +1 -1
- package/dist/rules/tagLines.cjs +11 -11
- package/dist/rules/tagLines.cjs.map +1 -1
- package/dist/rules/textEscaping.cjs +2 -2
- package/dist/rules/textEscaping.cjs.map +1 -1
- package/dist/rules/validTypes.cjs +15 -15
- package/dist/rules/validTypes.cjs.map +1 -1
- package/dist/tagNames.cjs +1 -1
- package/dist/tagNames.cjs.map +1 -1
- package/dist/utils/hasReturnValue.cjs +176 -176
- package/dist/utils/hasReturnValue.cjs.map +1 -1
- package/eslint.config.js +36 -32
- package/package.json +35 -35
- package/pnpm-workspace.yaml +1 -0
- package/src/alignTransform.js +15 -15
- package/src/exportParser.js +386 -373
- package/src/getDefaultTagStructureForMode.js +45 -45
- package/src/getJsdocProcessorPlugin.js +175 -128
- package/src/index.js +66 -37
- package/src/iterateJsdoc.js +61 -28
- package/src/jsdocUtils.js +354 -338
- package/src/rules/checkAlignment.js +2 -2
- package/src/rules/checkExamples.js +16 -20
- package/src/rules/checkIndentation.js +2 -2
- package/src/rules/checkLineAlignment.js +10 -10
- package/src/rules/checkParamNames.js +22 -14
- package/src/rules/checkPropertyNames.js +1 -1
- package/src/rules/checkTagNames.js +7 -7
- package/src/rules/checkTemplateNames.js +52 -38
- package/src/rules/checkTypes.js +7 -7
- package/src/rules/checkValues.js +16 -17
- package/src/rules/convertToJsdocComments.js +47 -37
- package/src/rules/emptyTags.js +14 -7
- package/src/rules/importsAsDependencies.js +3 -1
- package/src/rules/informativeDocs.js +58 -58
- package/src/rules/linesBeforeBlock.js +25 -17
- package/src/rules/matchDescription.js +1 -1
- package/src/rules/matchName.js +2 -2
- package/src/rules/multilineBlocks.js +10 -10
- package/src/rules/noBadBlocks.js +3 -3
- package/src/rules/noMultiAsterisks.js +4 -4
- package/src/rules/noRestrictedSyntax.js +1 -1
- package/src/rules/noTypes.js +1 -1
- package/src/rules/noUndefinedTypes.js +29 -23
- package/src/rules/requireAsteriskPrefix.js +3 -3
- package/src/rules/requireDescription.js +1 -1
- package/src/rules/requireDescriptionCompleteSentence.js +6 -6
- package/src/rules/requireFileOverview.js +3 -3
- package/src/rules/requireHyphenBeforeParamDescription.js +2 -5
- package/src/rules/requireJsdoc.js +14 -14
- package/src/rules/requireParam.js +9 -9
- package/src/rules/requireProperty.js +1 -1
- package/src/rules/requireReturns.js +1 -1
- package/src/rules/requireReturnsCheck.js +1 -1
- package/src/rules/requireReturnsDescription.js +1 -1
- package/src/rules/requireTemplate.js +59 -38
- package/src/rules/requireYields.js +3 -3
- package/src/rules/requireYieldsCheck.js +1 -1
- package/src/rules/sortTags.js +7 -7
- package/src/rules/tagLines.js +8 -8
- package/src/rules/textEscaping.js +2 -0
- package/src/rules/validTypes.js +29 -29
- package/src/tagNames.js +2 -2
- package/src/utils/hasReturnValue.js +298 -283
|
@@ -26,36 +26,36 @@ const getNamesFromNode = node => {
|
|
|
26
26
|
case 'TSAbstractAccessorProperty':
|
|
27
27
|
case 'TSAbstractMethodDefinition':
|
|
28
28
|
case 'TSAbstractPropertyDefinition':
|
|
29
|
-
return [...getNamesFromNode(
|
|
29
|
+
return [...getNamesFromNode(/** @type {import('@typescript-eslint/types').TSESTree.Node} */node.parent.parent), ...getNamesFromNode(/** @type {import('@typescript-eslint/types').TSESTree.Node} */
|
|
30
30
|
node.key)];
|
|
31
|
-
case 'ExportDefaultDeclaration':
|
|
32
|
-
case 'ExportNamedDeclaration':
|
|
33
|
-
return getNamesFromNode( /** @type {import('@typescript-eslint/types').TSESTree.ExportNamedDeclaration} */
|
|
34
|
-
node.declaration);
|
|
35
31
|
case 'ClassDeclaration':
|
|
36
32
|
case 'ClassExpression':
|
|
37
33
|
case 'FunctionDeclaration':
|
|
38
34
|
case 'FunctionExpression':
|
|
39
|
-
case 'TSModuleDeclaration':
|
|
40
|
-
case 'TSMethodSignature':
|
|
41
35
|
case 'TSDeclareFunction':
|
|
42
36
|
case 'TSEnumDeclaration':
|
|
43
37
|
case 'TSEnumMember':
|
|
44
38
|
case 'TSInterfaceDeclaration':
|
|
39
|
+
case 'TSMethodSignature':
|
|
40
|
+
case 'TSModuleDeclaration':
|
|
45
41
|
case 'TSTypeAliasDeclaration':
|
|
46
|
-
return getNamesFromNode(
|
|
42
|
+
return getNamesFromNode(/** @type {import('@typescript-eslint/types').TSESTree.ClassDeclaration} */
|
|
47
43
|
node.id);
|
|
44
|
+
case 'ExportDefaultDeclaration':
|
|
45
|
+
case 'ExportNamedDeclaration':
|
|
46
|
+
return getNamesFromNode(/** @type {import('@typescript-eslint/types').TSESTree.ExportNamedDeclaration} */
|
|
47
|
+
node.declaration);
|
|
48
48
|
case 'Identifier':
|
|
49
49
|
return [node.name];
|
|
50
50
|
case 'Property':
|
|
51
|
-
return getNamesFromNode(
|
|
51
|
+
return getNamesFromNode(/** @type {import('@typescript-eslint/types').TSESTree.Node} */
|
|
52
52
|
node.key);
|
|
53
53
|
case 'VariableDeclaration':
|
|
54
|
-
return getNamesFromNode(
|
|
54
|
+
return getNamesFromNode(/** @type {import('@typescript-eslint/types').TSESTree.Node} */
|
|
55
55
|
node.declarations[0]);
|
|
56
56
|
case 'VariableDeclarator':
|
|
57
|
-
return [...getNamesFromNode(
|
|
58
|
-
node.id), ...getNamesFromNode(
|
|
57
|
+
return [...getNamesFromNode(/** @type {import('@typescript-eslint/types').TSESTree.Node} */
|
|
58
|
+
node.id), ...getNamesFromNode(/** @type {import('@typescript-eslint/types').TSESTree.Node} */
|
|
59
59
|
node.init)].filter(Boolean);
|
|
60
60
|
default:
|
|
61
61
|
return [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"informativeDocs.cjs","names":["_iterateJsdoc","_interopRequireDefault","require","_areDocsInformative","e","__esModule","default","defaultAliases","a","defaultUselessWords","getNamesFromNode","node","type","parent","key","
|
|
1
|
+
{"version":3,"file":"informativeDocs.cjs","names":["_iterateJsdoc","_interopRequireDefault","require","_areDocsInformative","e","__esModule","default","defaultAliases","a","defaultUselessWords","getNamesFromNode","node","type","parent","key","id","declaration","name","declarations","init","filter","Boolean","_default","exports","iterateJsdoc","context","jsdoc","report","utils","aliases","excludedTags","uselessWords","options","nodeNames","descriptionIsRedundant","text","extraName","textTrimmed","trim","areDocsInformative","join","description","lastDescriptionLine","getDescription","descriptionReported","tag","tags","includes","reportJSDoc","line","iterateAllJsdocs","meta","docs","url","schema","additionalProperties","properties","patternProperties","items","module"],"sources":["../../src/rules/informativeDocs.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\nimport {\n areDocsInformative,\n} from 'are-docs-informative';\n\nconst defaultAliases = {\n a: [\n 'an', 'our',\n ],\n};\n\nconst defaultUselessWords = [\n 'a', 'an', 'i', 'in', 'of', 's', 'the',\n];\n\n/* eslint-disable complexity -- Temporary */\n\n/**\n * @param {import('eslint').Rule.Node|import('@typescript-eslint/types').TSESTree.Node|null|undefined} node\n * @returns {string[]}\n */\nconst getNamesFromNode = (node) => {\n switch (node?.type) {\n case 'AccessorProperty':\n case 'MethodDefinition':\n case 'PropertyDefinition':\n case 'TSAbstractAccessorProperty':\n case 'TSAbstractMethodDefinition':\n case 'TSAbstractPropertyDefinition':\n return [\n ...getNamesFromNode(\n /** @type {import('@typescript-eslint/types').TSESTree.Node} */ (\n node.parent\n ).parent,\n ),\n ...getNamesFromNode(\n /** @type {import('@typescript-eslint/types').TSESTree.Node} */\n (node.key),\n ),\n ];\n\n case 'ClassDeclaration':\n case 'ClassExpression':\n case 'FunctionDeclaration':\n case 'FunctionExpression':\n case 'TSDeclareFunction':\n case 'TSEnumDeclaration':\n case 'TSEnumMember':\n case 'TSInterfaceDeclaration':\n case 'TSMethodSignature':\n case 'TSModuleDeclaration':\n case 'TSTypeAliasDeclaration':\n return getNamesFromNode(\n /** @type {import('@typescript-eslint/types').TSESTree.ClassDeclaration} */\n (node).id,\n );\n case 'ExportDefaultDeclaration':\n case 'ExportNamedDeclaration':\n return getNamesFromNode(\n /** @type {import('@typescript-eslint/types').TSESTree.ExportNamedDeclaration} */\n (node).declaration,\n );\n case 'Identifier':\n return [\n node.name,\n ];\n case 'Property':\n return getNamesFromNode(\n /** @type {import('@typescript-eslint/types').TSESTree.Node} */\n (node.key),\n );\n case 'VariableDeclaration':\n return getNamesFromNode(\n /** @type {import('@typescript-eslint/types').TSESTree.Node} */\n (node.declarations[0]),\n );\n case 'VariableDeclarator':\n return [\n ...getNamesFromNode(\n /** @type {import('@typescript-eslint/types').TSESTree.Node} */\n (node.id),\n ),\n ...getNamesFromNode(\n /** @type {import('@typescript-eslint/types').TSESTree.Node} */\n (node.init),\n ),\n ].filter(Boolean);\n default:\n return [];\n }\n};\n/* eslint-enable complexity -- Temporary */\n\nexport default iterateJsdoc(({\n context,\n jsdoc,\n node,\n report,\n utils,\n}) => {\n const /** @type {{aliases: {[key: string]: string[]}, excludedTags: string[], uselessWords: string[]}} */ {\n aliases = defaultAliases,\n excludedTags = [],\n uselessWords = defaultUselessWords,\n } = context.options[0] || {};\n const nodeNames = getNamesFromNode(node);\n\n /**\n * @param {string} text\n * @param {string} extraName\n * @returns {boolean}\n */\n const descriptionIsRedundant = (text, extraName = '') => {\n const textTrimmed = text.trim();\n return Boolean(textTrimmed) && !areDocsInformative(textTrimmed, [\n extraName, nodeNames,\n ].filter(Boolean).join(' '), {\n aliases,\n uselessWords,\n });\n };\n\n const {\n description,\n lastDescriptionLine,\n } = utils.getDescription();\n let descriptionReported = false;\n\n for (const tag of jsdoc.tags) {\n if (excludedTags.includes(tag.tag)) {\n continue;\n }\n\n if (descriptionIsRedundant(tag.description, tag.name)) {\n utils.reportJSDoc(\n 'This tag description only repeats the name it describes.',\n tag,\n );\n }\n\n descriptionReported ||= tag.description === description &&\n /** @type {import('comment-parser').Spec & {line: import('../iterateJsdoc.js').Integer}} */\n (tag).line === lastDescriptionLine;\n }\n\n if (!descriptionReported && descriptionIsRedundant(description)) {\n report('This description only repeats the name it describes.');\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description:\n 'This rule reports doc comments that only restate their attached name.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/informative-docs.md#repos-sticky-header',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n aliases: {\n patternProperties: {\n '.*': {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n },\n },\n excludedTags: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n uselessWords: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -11,20 +11,20 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
|
|
|
11
11
|
* `[` starts an array, `{` starts an object or block, `(` starts a grouping, and `=` starts a
|
|
12
12
|
* declaration (like a variable or a type alias).
|
|
13
13
|
*/
|
|
14
|
-
const startPunctuators = new Set(['
|
|
14
|
+
const startPunctuators = new Set(['(', '=', '[', '{']);
|
|
15
15
|
var _default = exports.default = (0, _iterateJsdoc.default)(({
|
|
16
16
|
context,
|
|
17
17
|
jsdocNode,
|
|
18
|
-
sourceCode,
|
|
19
18
|
report,
|
|
19
|
+
sourceCode,
|
|
20
20
|
utils
|
|
21
21
|
}) => {
|
|
22
22
|
var _tokenBefore$loc, _jsdocNode$loc;
|
|
23
23
|
const {
|
|
24
24
|
checkBlockStarts,
|
|
25
|
-
|
|
25
|
+
excludedTags = ['type'],
|
|
26
26
|
ignoreSameLine = true,
|
|
27
|
-
|
|
27
|
+
lines = 1
|
|
28
28
|
} = context.options[0] || {};
|
|
29
29
|
if (utils.hasATag(excludedTags)) {
|
|
30
30
|
return;
|
|
@@ -36,7 +36,7 @@ var _default = exports.default = (0, _iterateJsdoc.default)(({
|
|
|
36
36
|
if (!tokenBefore || tokenBefore.type === 'Punctuator' && !checkBlockStarts && startPunctuators.has(tokenBefore.value)) {
|
|
37
37
|
return;
|
|
38
38
|
}
|
|
39
|
-
if (((_tokenBefore$loc = tokenBefore.loc) === null || _tokenBefore$loc === void 0 || (_tokenBefore$loc = _tokenBefore$loc.end) === null || _tokenBefore$loc === void 0 ? void 0 : _tokenBefore$loc.line) + lines >= (
|
|
39
|
+
if (((_tokenBefore$loc = tokenBefore.loc) === null || _tokenBefore$loc === void 0 || (_tokenBefore$loc = _tokenBefore$loc.end) === null || _tokenBefore$loc === void 0 ? void 0 : _tokenBefore$loc.line) + lines >= (/** @type {number} */(_jsdocNode$loc = jsdocNode.loc) === null || _jsdocNode$loc === void 0 || (_jsdocNode$loc = _jsdocNode$loc.start) === null || _jsdocNode$loc === void 0 ? void 0 : _jsdocNode$loc.line)) {
|
|
40
40
|
var _jsdocNode$loc2, _tokenBefore$loc2;
|
|
41
41
|
const startLine = (_jsdocNode$loc2 = jsdocNode.loc) === null || _jsdocNode$loc2 === void 0 || (_jsdocNode$loc2 = _jsdocNode$loc2.start) === null || _jsdocNode$loc2 === void 0 ? void 0 : _jsdocNode$loc2.line;
|
|
42
42
|
const sameLine = ((_tokenBefore$loc2 = tokenBefore.loc) === null || _tokenBefore$loc2 === void 0 || (_tokenBefore$loc2 = _tokenBefore$loc2.end) === null || _tokenBefore$loc2 === void 0 ? void 0 : _tokenBefore$loc2.line) === startLine;
|
|
@@ -49,9 +49,9 @@ var _default = exports.default = (0, _iterateJsdoc.default)(({
|
|
|
49
49
|
let indent = '';
|
|
50
50
|
if (sameLine) {
|
|
51
51
|
var _jsdocNode$loc3, _tokenBefore$loc3, _jsdocNode$value$matc;
|
|
52
|
-
const spaceDiff = /** @type {number} */((_jsdocNode$loc3 = jsdocNode.loc) === null || _jsdocNode$loc3 === void 0 || (_jsdocNode$loc3 = _jsdocNode$loc3.start) === null || _jsdocNode$loc3 === void 0 ? void 0 : _jsdocNode$loc3.column) - (
|
|
52
|
+
const spaceDiff = /** @type {number} */((_jsdocNode$loc3 = jsdocNode.loc) === null || _jsdocNode$loc3 === void 0 || (_jsdocNode$loc3 = _jsdocNode$loc3.start) === null || _jsdocNode$loc3 === void 0 ? void 0 : _jsdocNode$loc3.column) - (/** @type {number} */(_tokenBefore$loc3 = tokenBefore.loc) === null || _tokenBefore$loc3 === void 0 || (_tokenBefore$loc3 = _tokenBefore$loc3.end) === null || _tokenBefore$loc3 === void 0 ? void 0 : _tokenBefore$loc3.column);
|
|
53
53
|
// @ts-expect-error Should be a comment
|
|
54
|
-
indent = /** @type {import('estree').Comment} */(_jsdocNode$value$matc = jsdocNode.value.match(/^\*\n([
|
|
54
|
+
indent = /** @type {import('estree').Comment} */(_jsdocNode$value$matc = jsdocNode.value.match(/^\*\n([\t ]*) \*/u)) === null || _jsdocNode$value$matc === void 0 || (_jsdocNode$value$matc = _jsdocNode$value$matc[1]) === null || _jsdocNode$value$matc === void 0 ? void 0 : _jsdocNode$value$matc.slice(spaceDiff);
|
|
55
55
|
if (!indent) {
|
|
56
56
|
/** @type {import('eslint').AST.Token|import('estree').Comment|undefined} */
|
|
57
57
|
let tokenPrior = tokenBefore;
|
|
@@ -61,11 +61,11 @@ var _default = exports.default = (0, _iterateJsdoc.default)(({
|
|
|
61
61
|
startColumn = (_tokenPrior$loc = tokenPrior.loc) === null || _tokenPrior$loc === void 0 || (_tokenPrior$loc = _tokenPrior$loc.start) === null || _tokenPrior$loc === void 0 ? void 0 : _tokenPrior$loc.column;
|
|
62
62
|
tokenPrior = tokensBefore.pop();
|
|
63
63
|
}
|
|
64
|
-
indent = ' '.repeat(
|
|
64
|
+
indent = ' '.repeat(/* c8 ignore next */
|
|
65
65
|
/** @type {number} */startColumn ? startColumn - 1 : 0);
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
|
-
return fixer.insertTextAfter(
|
|
68
|
+
return fixer.insertTextAfter(/** @type {import('eslint').AST.Token} */
|
|
69
69
|
tokenBefore, '\n'.repeat(lines) + (sameLine ? '\n' + indent : ''));
|
|
70
70
|
};
|
|
71
71
|
report(`Required ${lines} line(s) before JSDoc block`, fix);
|
|
@@ -73,11 +73,11 @@ var _default = exports.default = (0, _iterateJsdoc.default)(({
|
|
|
73
73
|
}, {
|
|
74
74
|
iterateAllJsdocs: true,
|
|
75
75
|
meta: {
|
|
76
|
-
fixable: 'code',
|
|
77
76
|
docs: {
|
|
78
77
|
description: 'Enforces minimum number of newlines before JSDoc comment blocks',
|
|
79
78
|
url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/lines-before-block.md#repos-sticky-header'
|
|
80
79
|
},
|
|
80
|
+
fixable: 'code',
|
|
81
81
|
schema: [{
|
|
82
82
|
additionalProperties: false,
|
|
83
83
|
properties: {
|
|
@@ -85,10 +85,10 @@ var _default = exports.default = (0, _iterateJsdoc.default)(({
|
|
|
85
85
|
type: 'boolean'
|
|
86
86
|
},
|
|
87
87
|
excludedTags: {
|
|
88
|
-
type: 'array',
|
|
89
88
|
items: {
|
|
90
89
|
type: 'string'
|
|
91
|
-
}
|
|
90
|
+
},
|
|
91
|
+
type: 'array'
|
|
92
92
|
},
|
|
93
93
|
ignoreSameLine: {
|
|
94
94
|
type: 'boolean'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"linesBeforeBlock.cjs","names":["_iterateJsdoc","_interopRequireDefault","require","e","__esModule","default","startPunctuators","Set","_default","exports","iterateJsdoc","context","jsdocNode","
|
|
1
|
+
{"version":3,"file":"linesBeforeBlock.cjs","names":["_iterateJsdoc","_interopRequireDefault","require","e","__esModule","default","startPunctuators","Set","_default","exports","iterateJsdoc","context","jsdocNode","report","sourceCode","utils","_tokenBefore$loc","_jsdocNode$loc","checkBlockStarts","excludedTags","ignoreSameLine","lines","options","hasATag","tokensBefore","getTokensBefore","includeComments","tokenBefore","at","type","has","value","loc","end","line","start","_jsdocNode$loc2","_tokenBefore$loc2","startLine","sameLine","fix","fixer","indent","_jsdocNode$loc3","_tokenBefore$loc3","_jsdocNode$value$matc","spaceDiff","column","match","slice","tokenPrior","startColumn","_tokenPrior","_tokenPrior$loc","pop","repeat","insertTextAfter","iterateAllJsdocs","meta","docs","description","url","fixable","schema","additionalProperties","properties","items","module"],"sources":["../../src/rules/linesBeforeBlock.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\n\n/**\n * Punctuators that begin a logical group should not require a line before it skipped. Specifically\n * `[` starts an array, `{` starts an object or block, `(` starts a grouping, and `=` starts a\n * declaration (like a variable or a type alias).\n */\nconst startPunctuators = new Set([\n '(', '=', '[', '{',\n]);\n\nexport default iterateJsdoc(({\n context,\n jsdocNode,\n report,\n sourceCode,\n utils,\n}) => {\n const {\n checkBlockStarts,\n excludedTags = [\n 'type',\n ],\n ignoreSameLine = true,\n lines = 1,\n } = context.options[0] || {};\n\n if (utils.hasATag(excludedTags)) {\n return;\n }\n\n const tokensBefore = sourceCode.getTokensBefore(jsdocNode, {\n includeComments: true,\n });\n const tokenBefore = tokensBefore.at(-1);\n if (\n !tokenBefore || (\n tokenBefore.type === 'Punctuator' &&\n !checkBlockStarts &&\n startPunctuators.has(tokenBefore.value)\n )\n ) {\n return;\n }\n\n if (tokenBefore.loc?.end?.line + lines >=\n /** @type {number} */\n (jsdocNode.loc?.start?.line)\n ) {\n const startLine = jsdocNode.loc?.start?.line;\n const sameLine = tokenBefore.loc?.end?.line === startLine;\n\n if (sameLine && ignoreSameLine) {\n return;\n }\n\n /** @type {import('eslint').Rule.ReportFixer} */\n const fix = (fixer) => {\n let indent = '';\n if (sameLine) {\n const spaceDiff = /** @type {number} */ (jsdocNode.loc?.start?.column) -\n /** @type {number} */ (tokenBefore.loc?.end?.column);\n // @ts-expect-error Should be a comment\n indent = /** @type {import('estree').Comment} */ (\n jsdocNode\n ).value.match(/^\\*\\n([\\t ]*) \\*/u)?.[1]?.slice(spaceDiff);\n if (!indent) {\n /** @type {import('eslint').AST.Token|import('estree').Comment|undefined} */\n let tokenPrior = tokenBefore;\n let startColumn;\n while (tokenPrior && tokenPrior?.loc?.start?.line === startLine) {\n startColumn = tokenPrior.loc?.start?.column;\n tokenPrior = tokensBefore.pop();\n }\n\n indent = ' '.repeat(\n /* c8 ignore next */\n /** @type {number} */ (startColumn ? startColumn - 1 : 0),\n );\n }\n }\n\n return fixer.insertTextAfter(\n /** @type {import('eslint').AST.Token} */\n (tokenBefore),\n '\\n'.repeat(lines) +\n (sameLine ? '\\n' + indent : ''),\n );\n };\n\n report(`Required ${lines} line(s) before JSDoc block`, fix);\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Enforces minimum number of newlines before JSDoc comment blocks',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/lines-before-block.md#repos-sticky-header',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n checkBlockStarts: {\n type: 'boolean',\n },\n excludedTags: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n ignoreSameLine: {\n type: 'boolean',\n },\n lines: {\n type: 'integer',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -19,9 +19,9 @@ const stringOrDefault = (value, userDefault) => {
|
|
|
19
19
|
return typeof value === 'string' ? value : userDefault || matchDescriptionDefault;
|
|
20
20
|
};
|
|
21
21
|
var _default = exports.default = (0, _iterateJsdoc.default)(({
|
|
22
|
+
context,
|
|
22
23
|
jsdoc,
|
|
23
24
|
report,
|
|
24
|
-
context,
|
|
25
25
|
utils
|
|
26
26
|
}) => {
|
|
27
27
|
const {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"matchDescription.cjs","names":["_iterateJsdoc","_interopRequireDefault","require","e","__esModule","default","matchDescriptionDefault","stringOrDefault","value","userDefault","_default","exports","iterateJsdoc","jsdoc","report","context","utils","mainDescription","matchDescription","message","nonemptyTags","tags","options","validateDescription","desc","tag","mainDescriptionMatch","errorMessage","match","Object","prototype","hasOwnProperty","call","tagValue","tagName","regex","getRegexFromString","test","line","source","number","description","getDescription","hasNoTag","forEachPreferredTag","matchingJsdocTag","targetTagName","name","getTagDescription","trim","keys","length","hasOptionTag","Boolean","whitelistedTags","filterTags","tagsWithNames","tagsWithoutNames","getTagsByType","some","replace","contextDefaults","meta","docs","url","schema","additionalProperties","properties","contexts","items","anyOf","type","comment","oneOf","format","patternProperties","enum","module"],"sources":["../../src/rules/matchDescription.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\n\n// If supporting Node >= 10, we could loosen the default to this for the\n// initial letter: \\\\p{Upper}\nconst matchDescriptionDefault = '^\\n?([A-Z`\\\\d_][\\\\s\\\\S]*[.?!`]\\\\s*)?$';\n\n/**\n * @param {string} value\n * @param {string} userDefault\n * @returns {string}\n */\nconst stringOrDefault = (value, userDefault) => {\n return typeof value === 'string' ?\n value :\n userDefault || matchDescriptionDefault;\n};\n\nexport default iterateJsdoc(({\n jsdoc,\n report,\n context,\n utils,\n}) => {\n const {\n mainDescription,\n matchDescription,\n message,\n nonemptyTags = true,\n tags = {},\n } = context.options[0] || {};\n\n /**\n * @param {string} desc\n * @param {import('comment-parser').Spec} [tag]\n * @returns {void}\n */\n const validateDescription = (desc, tag) => {\n let mainDescriptionMatch = mainDescription;\n let errorMessage = message;\n if (typeof mainDescription === 'object') {\n mainDescriptionMatch = mainDescription.match;\n errorMessage = mainDescription.message;\n }\n\n if (mainDescriptionMatch === false && (\n !tag || !Object.prototype.hasOwnProperty.call(tags, tag.tag))\n ) {\n return;\n }\n\n let tagValue = mainDescriptionMatch;\n if (tag) {\n const tagName = tag.tag;\n if (typeof tags[tagName] === 'object') {\n tagValue = tags[tagName].match;\n errorMessage = tags[tagName].message;\n } else {\n tagValue = tags[tagName];\n }\n }\n\n const regex = utils.getRegexFromString(\n stringOrDefault(tagValue, matchDescription),\n );\n\n if (!regex.test(desc)) {\n report(\n errorMessage || 'JSDoc description does not satisfy the regex pattern.',\n null,\n tag || {\n // Add one as description would typically be into block\n line: jsdoc.source[0].number + 1,\n },\n );\n }\n };\n\n const {\n description,\n } = utils.getDescription();\n if (description) {\n validateDescription(description);\n }\n\n /**\n * @param {string} tagName\n * @returns {boolean}\n */\n const hasNoTag = (tagName) => {\n return !tags[tagName];\n };\n\n for (const tag of [\n 'description',\n 'summary',\n 'file',\n 'classdesc',\n ]) {\n utils.forEachPreferredTag(tag, (matchingJsdocTag, targetTagName) => {\n const desc = (matchingJsdocTag.name + ' ' + utils.getTagDescription(matchingJsdocTag)).trim();\n if (hasNoTag(targetTagName)) {\n validateDescription(desc, matchingJsdocTag);\n }\n }, true);\n }\n\n if (nonemptyTags) {\n for (const tag of [\n 'copyright',\n 'example',\n 'see',\n 'todo',\n ]) {\n utils.forEachPreferredTag(tag, (matchingJsdocTag, targetTagName) => {\n const desc = (matchingJsdocTag.name + ' ' + utils.getTagDescription(matchingJsdocTag)).trim();\n\n if (hasNoTag(targetTagName) && !(/.+/u).test(desc)) {\n report(\n 'JSDoc description must not be empty.',\n null,\n matchingJsdocTag,\n );\n }\n });\n }\n }\n\n if (!Object.keys(tags).length) {\n return;\n }\n\n /**\n * @param {string} tagName\n * @returns {boolean}\n */\n const hasOptionTag = (tagName) => {\n return Boolean(tags[tagName]);\n };\n\n const whitelistedTags = utils.filterTags(({\n tag: tagName,\n }) => {\n return hasOptionTag(tagName);\n });\n const {\n tagsWithNames,\n tagsWithoutNames,\n } = utils.getTagsByType(whitelistedTags);\n\n tagsWithNames.some((tag) => {\n const desc = /** @type {string} */ (\n utils.getTagDescription(tag)\n ).replace(/^[- ]*/u, '')\n .trim();\n\n return validateDescription(desc, tag);\n });\n\n tagsWithoutNames.some((tag) => {\n const desc = (tag.name + ' ' + utils.getTagDescription(tag)).trim();\n\n return validateDescription(desc, tag);\n });\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'Enforces a regular expression pattern on descriptions.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/match-description.md#repos-sticky-header',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n mainDescription: {\n oneOf: [\n {\n format: 'regex',\n type: 'string',\n },\n {\n type: 'boolean',\n },\n {\n additionalProperties: false,\n properties: {\n match: {\n oneOf: [\n {\n format: 'regex',\n type: 'string',\n },\n {\n type: 'boolean',\n },\n ],\n },\n message: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n matchDescription: {\n format: 'regex',\n type: 'string',\n },\n message: {\n type: 'string',\n },\n nonemptyTags: {\n type: 'boolean',\n },\n tags: {\n patternProperties: {\n '.*': {\n oneOf: [\n {\n format: 'regex',\n type: 'string',\n },\n {\n enum: [\n true,\n ],\n type: 'boolean',\n },\n {\n additionalProperties: false,\n properties: {\n match: {\n oneOf: [\n {\n format: 'regex',\n type: 'string',\n },\n {\n enum: [\n true,\n ],\n type: 'boolean',\n },\n ],\n },\n message: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n },\n type: 'object',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"matchDescription.cjs","names":["_iterateJsdoc","_interopRequireDefault","require","e","__esModule","default","matchDescriptionDefault","stringOrDefault","value","userDefault","_default","exports","iterateJsdoc","context","jsdoc","report","utils","mainDescription","matchDescription","message","nonemptyTags","tags","options","validateDescription","desc","tag","mainDescriptionMatch","errorMessage","match","Object","prototype","hasOwnProperty","call","tagValue","tagName","regex","getRegexFromString","test","line","source","number","description","getDescription","hasNoTag","forEachPreferredTag","matchingJsdocTag","targetTagName","name","getTagDescription","trim","keys","length","hasOptionTag","Boolean","whitelistedTags","filterTags","tagsWithNames","tagsWithoutNames","getTagsByType","some","replace","contextDefaults","meta","docs","url","schema","additionalProperties","properties","contexts","items","anyOf","type","comment","oneOf","format","patternProperties","enum","module"],"sources":["../../src/rules/matchDescription.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\n\n// If supporting Node >= 10, we could loosen the default to this for the\n// initial letter: \\\\p{Upper}\nconst matchDescriptionDefault = '^\\n?([A-Z`\\\\d_][\\\\s\\\\S]*[.?!`]\\\\s*)?$';\n\n/**\n * @param {string} value\n * @param {string} userDefault\n * @returns {string}\n */\nconst stringOrDefault = (value, userDefault) => {\n return typeof value === 'string' ?\n value :\n userDefault || matchDescriptionDefault;\n};\n\nexport default iterateJsdoc(({\n context,\n jsdoc,\n report,\n utils,\n}) => {\n const {\n mainDescription,\n matchDescription,\n message,\n nonemptyTags = true,\n tags = {},\n } = context.options[0] || {};\n\n /**\n * @param {string} desc\n * @param {import('comment-parser').Spec} [tag]\n * @returns {void}\n */\n const validateDescription = (desc, tag) => {\n let mainDescriptionMatch = mainDescription;\n let errorMessage = message;\n if (typeof mainDescription === 'object') {\n mainDescriptionMatch = mainDescription.match;\n errorMessage = mainDescription.message;\n }\n\n if (mainDescriptionMatch === false && (\n !tag || !Object.prototype.hasOwnProperty.call(tags, tag.tag))\n ) {\n return;\n }\n\n let tagValue = mainDescriptionMatch;\n if (tag) {\n const tagName = tag.tag;\n if (typeof tags[tagName] === 'object') {\n tagValue = tags[tagName].match;\n errorMessage = tags[tagName].message;\n } else {\n tagValue = tags[tagName];\n }\n }\n\n const regex = utils.getRegexFromString(\n stringOrDefault(tagValue, matchDescription),\n );\n\n if (!regex.test(desc)) {\n report(\n errorMessage || 'JSDoc description does not satisfy the regex pattern.',\n null,\n tag || {\n // Add one as description would typically be into block\n line: jsdoc.source[0].number + 1,\n },\n );\n }\n };\n\n const {\n description,\n } = utils.getDescription();\n if (description) {\n validateDescription(description);\n }\n\n /**\n * @param {string} tagName\n * @returns {boolean}\n */\n const hasNoTag = (tagName) => {\n return !tags[tagName];\n };\n\n for (const tag of [\n 'description',\n 'summary',\n 'file',\n 'classdesc',\n ]) {\n utils.forEachPreferredTag(tag, (matchingJsdocTag, targetTagName) => {\n const desc = (matchingJsdocTag.name + ' ' + utils.getTagDescription(matchingJsdocTag)).trim();\n if (hasNoTag(targetTagName)) {\n validateDescription(desc, matchingJsdocTag);\n }\n }, true);\n }\n\n if (nonemptyTags) {\n for (const tag of [\n 'copyright',\n 'example',\n 'see',\n 'todo',\n ]) {\n utils.forEachPreferredTag(tag, (matchingJsdocTag, targetTagName) => {\n const desc = (matchingJsdocTag.name + ' ' + utils.getTagDescription(matchingJsdocTag)).trim();\n\n if (hasNoTag(targetTagName) && !(/.+/u).test(desc)) {\n report(\n 'JSDoc description must not be empty.',\n null,\n matchingJsdocTag,\n );\n }\n });\n }\n }\n\n if (!Object.keys(tags).length) {\n return;\n }\n\n /**\n * @param {string} tagName\n * @returns {boolean}\n */\n const hasOptionTag = (tagName) => {\n return Boolean(tags[tagName]);\n };\n\n const whitelistedTags = utils.filterTags(({\n tag: tagName,\n }) => {\n return hasOptionTag(tagName);\n });\n const {\n tagsWithNames,\n tagsWithoutNames,\n } = utils.getTagsByType(whitelistedTags);\n\n tagsWithNames.some((tag) => {\n const desc = /** @type {string} */ (\n utils.getTagDescription(tag)\n ).replace(/^[- ]*/u, '')\n .trim();\n\n return validateDescription(desc, tag);\n });\n\n tagsWithoutNames.some((tag) => {\n const desc = (tag.name + ' ' + utils.getTagDescription(tag)).trim();\n\n return validateDescription(desc, tag);\n });\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'Enforces a regular expression pattern on descriptions.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/match-description.md#repos-sticky-header',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n mainDescription: {\n oneOf: [\n {\n format: 'regex',\n type: 'string',\n },\n {\n type: 'boolean',\n },\n {\n additionalProperties: false,\n properties: {\n match: {\n oneOf: [\n {\n format: 'regex',\n type: 'string',\n },\n {\n type: 'boolean',\n },\n ],\n },\n message: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n matchDescription: {\n format: 'regex',\n type: 'string',\n },\n message: {\n type: 'string',\n },\n nonemptyTags: {\n type: 'boolean',\n },\n tags: {\n patternProperties: {\n '.*': {\n oneOf: [\n {\n format: 'regex',\n type: 'string',\n },\n {\n enum: [\n true,\n ],\n type: 'boolean',\n },\n {\n additionalProperties: false,\n properties: {\n match: {\n oneOf: [\n {\n format: 'regex',\n type: 'string',\n },\n {\n enum: [\n true,\n ],\n type: 'boolean',\n },\n ],\n },\n message: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n },\n type: 'object',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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","ignoreList":[]}
|
package/dist/rules/matchName.cjs
CHANGED
|
@@ -9,11 +9,11 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
|
|
|
9
9
|
// eslint-disable-next-line complexity
|
|
10
10
|
var _default = exports.default = (0, _iterateJsdoc.default)(({
|
|
11
11
|
context,
|
|
12
|
-
jsdoc,
|
|
13
|
-
report,
|
|
14
12
|
info: {
|
|
15
13
|
lastIndex
|
|
16
14
|
},
|
|
15
|
+
jsdoc,
|
|
16
|
+
report,
|
|
17
17
|
utils
|
|
18
18
|
}) => {
|
|
19
19
|
const {
|
|
@@ -28,7 +28,7 @@ var _default = exports.default = (0, _iterateJsdoc.default)(({
|
|
|
28
28
|
disallowName,
|
|
29
29
|
replacement,
|
|
30
30
|
tags = ['*']
|
|
31
|
-
} = match[(
|
|
31
|
+
} = match[(/** @type {import('../iterateJsdoc.js').Integer} */lastIndex)];
|
|
32
32
|
const allowNameRegex = allowName && utils.getRegexFromString(allowName);
|
|
33
33
|
const disallowNameRegex = disallowName && utils.getRegexFromString(disallowName);
|
|
34
34
|
let applicableTags = jsdoc.tags;
|
|
@@ -57,7 +57,7 @@ var _default = exports.default = (0, _iterateJsdoc.default)(({
|
|
|
57
57
|
};
|
|
58
58
|
let {
|
|
59
59
|
message
|
|
60
|
-
} = match[(
|
|
60
|
+
} = match[(/** @type {import('../iterateJsdoc.js').Integer} */lastIndex)];
|
|
61
61
|
if (!message) {
|
|
62
62
|
if (hasRegex) {
|
|
63
63
|
message = disallowed ? `Only allowing names not matching \`${disallowNameRegex}\` but found "${tagName}".` : `Only allowing names matching \`${allowNameRegex}\` but found "${tagName}".`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"matchName.cjs","names":["_iterateJsdoc","_interopRequireDefault","require","e","__esModule","default","_default","exports","iterateJsdoc","context","
|
|
1
|
+
{"version":3,"file":"matchName.cjs","names":["_iterateJsdoc","_interopRequireDefault","require","e","__esModule","default","_default","exports","iterateJsdoc","context","info","lastIndex","jsdoc","report","utils","match","options","allowName","disallowName","replacement","tags","allowNameRegex","getRegexFromString","disallowNameRegex","applicableTags","includes","getPresentTags","reported","tag","tagName","name","replace","allowed","test","disallowed","hasRegex","fixer","src","source","tokens","message","reportJSDoc","undefined","matchContext","meta","docs","description","url","fixable","schema","additionalProperties","properties","items","type","comment","required","module"],"sources":["../../src/rules/matchName.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\n\n// eslint-disable-next-line complexity\nexport default iterateJsdoc(({\n context,\n info: {\n lastIndex,\n },\n jsdoc,\n report,\n utils,\n}) => {\n const {\n match,\n } = context.options[0] || {};\n if (!match) {\n report('Rule `no-restricted-syntax` is missing a `match` option.');\n\n return;\n }\n\n const {\n allowName,\n disallowName,\n replacement,\n tags = [\n '*',\n ],\n } = match[/** @type {import('../iterateJsdoc.js').Integer} */ (lastIndex)];\n\n const allowNameRegex = allowName && utils.getRegexFromString(allowName);\n const disallowNameRegex = disallowName && utils.getRegexFromString(disallowName);\n\n let applicableTags = jsdoc.tags;\n if (!tags.includes('*')) {\n applicableTags = utils.getPresentTags(tags);\n }\n\n let reported = false;\n for (const tag of applicableTags) {\n const tagName = tag.name.replace(/^\\[/u, '').replace(/(=.*)?\\]$/u, '');\n const allowed = !allowNameRegex || allowNameRegex.test(tagName);\n const disallowed = disallowNameRegex && disallowNameRegex.test(tagName);\n const hasRegex = allowNameRegex || disallowNameRegex;\n if (hasRegex && allowed && !disallowed) {\n continue;\n }\n\n if (!hasRegex && reported) {\n continue;\n }\n\n const fixer = () => {\n for (const src of tag.source) {\n if (src.tokens.name) {\n src.tokens.name = src.tokens.name.replace(\n disallowNameRegex, replacement,\n );\n break;\n }\n }\n };\n\n let {\n message,\n } = match[/** @type {import('../iterateJsdoc.js').Integer} */ (lastIndex)];\n if (!message) {\n if (hasRegex) {\n message = disallowed ?\n `Only allowing names not matching \\`${disallowNameRegex}\\` but found \"${tagName}\".` :\n `Only allowing names matching \\`${allowNameRegex}\\` but found \"${tagName}\".`;\n } else {\n message = `Prohibited context for \"${tagName}\".`;\n }\n }\n\n utils.reportJSDoc(\n message,\n hasRegex ? tag : null,\n\n // We could match up\n disallowNameRegex && replacement !== undefined ?\n fixer :\n null,\n false,\n {\n // Could also supply `context`, `comment`, `tags`\n allowName,\n disallowName,\n name: tagName,\n },\n );\n if (!hasRegex) {\n reported = true;\n }\n }\n}, {\n matchContext: true,\n meta: {\n docs: {\n description: 'Reports the name portion of a JSDoc tag if matching or not matching a given regular expression.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/match-name.md#repos-sticky-header',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n match: {\n additionalProperties: false,\n items: {\n properties: {\n allowName: {\n type: 'string',\n },\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n disallowName: {\n type: 'string',\n },\n message: {\n type: 'string',\n },\n tags: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n type: 'array',\n },\n },\n required: [\n 'match',\n ],\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -13,13 +13,13 @@ var _default = exports.default = (0, _iterateJsdoc.default)(({
|
|
|
13
13
|
}) => {
|
|
14
14
|
const {
|
|
15
15
|
allowMultipleTags = true,
|
|
16
|
+
minimumLengthForMultiline = Number.POSITIVE_INFINITY,
|
|
17
|
+
multilineTags = ['*'],
|
|
16
18
|
noFinalLineText = true,
|
|
17
|
-
noZeroLineText = true,
|
|
18
|
-
noSingleLineBlocks = false,
|
|
19
|
-
singleLineTags = ['lends', 'type'],
|
|
20
19
|
noMultilineBlocks = false,
|
|
21
|
-
|
|
22
|
-
|
|
20
|
+
noSingleLineBlocks = false,
|
|
21
|
+
noZeroLineText = true,
|
|
22
|
+
singleLineTags = ['lends', 'type']
|
|
23
23
|
} = context.options[0] || {};
|
|
24
24
|
const {
|
|
25
25
|
source: [{
|
|
@@ -135,13 +135,13 @@ var _default = exports.default = (0, _iterateJsdoc.default)(({
|
|
|
135
135
|
tokens: jsdoc.source.reduce((obj, {
|
|
136
136
|
tokens: {
|
|
137
137
|
description: desc,
|
|
138
|
-
tag: tg,
|
|
139
|
-
type: typ,
|
|
140
|
-
name: nme,
|
|
141
138
|
lineEnd,
|
|
142
|
-
|
|
139
|
+
name: nme,
|
|
143
140
|
postName,
|
|
144
|
-
postTag
|
|
141
|
+
postTag,
|
|
142
|
+
postType,
|
|
143
|
+
tag: tg,
|
|
144
|
+
type: typ
|
|
145
145
|
}
|
|
146
146
|
}) => {
|
|
147
147
|
if (typ) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multilineBlocks.cjs","names":["_iterateJsdoc","_interopRequireDefault","require","e","__esModule","default","_default","exports","iterateJsdoc","context","jsdoc","utils","allowMultipleTags","noFinalLineText","noZeroLineText","noSingleLineBlocks","singleLineTags","noMultilineBlocks","minimumLengthForMultiline","Number","POSITIVE_INFINITY","multilineTags","options","source","tokens","description","tag","sourceLength","length","isInvalidSingleLine","tagName","includes","slice","fixer","makeMultiline","reportJSDoc","lineChecks","line","emptyTokens","delimiter","start","addLine","finalLine","finalLineTokens","trim","trimEnd","prop","end","tags","hasATag","filterTags","tg","number","reduce","obj","desc","type","typ","name","nme","lineEnd","postType","postName","postTag","nameOrDescription","seedTokens","postDelimiter","iterateAllJsdocs","meta","docs","url","fixable","schema","additionalProperties","properties","anyOf","enum","items","module"],"sources":["../../src/rules/multilineBlocks.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\n\nexport default iterateJsdoc(({\n context,\n jsdoc,\n utils,\n}) => {\n const {\n allowMultipleTags = true,\n noFinalLineText = true,\n noZeroLineText = true,\n noSingleLineBlocks = false,\n singleLineTags = [\n 'lends', 'type',\n ],\n noMultilineBlocks = false,\n minimumLengthForMultiline = Number.POSITIVE_INFINITY,\n multilineTags = [\n '*',\n ],\n } = context.options[0] || {};\n\n const {\n source: [\n {\n tokens,\n },\n ],\n } = jsdoc;\n const {\n description,\n tag,\n } = tokens;\n const sourceLength = jsdoc.source.length;\n\n /**\n * @param {string} tagName\n * @returns {boolean}\n */\n const isInvalidSingleLine = (tagName) => {\n return noSingleLineBlocks &&\n (!tagName ||\n !singleLineTags.includes(tagName) && !singleLineTags.includes('*'));\n };\n\n if (sourceLength === 1) {\n if (!isInvalidSingleLine(tag.slice(1))) {\n return;\n }\n\n const fixer = () => {\n utils.makeMultiline();\n };\n\n utils.reportJSDoc(\n 'Single line blocks are not permitted by your configuration.',\n null,\n fixer,\n true,\n );\n\n return;\n }\n\n const lineChecks = () => {\n if (\n noZeroLineText &&\n (tag || description)\n ) {\n const fixer = () => {\n const line = {\n ...tokens,\n };\n utils.emptyTokens(tokens);\n const {\n tokens: {\n delimiter,\n start,\n },\n } = jsdoc.source[1];\n utils.addLine(1, {\n ...line,\n delimiter,\n start,\n });\n };\n\n utils.reportJSDoc(\n 'Should have no text on the \"0th\" line (after the `/**`).',\n null,\n fixer,\n );\n\n return;\n }\n\n const finalLine = jsdoc.source[jsdoc.source.length - 1];\n const finalLineTokens = finalLine.tokens;\n if (\n noFinalLineText &&\n finalLineTokens.description.trim()\n ) {\n const fixer = () => {\n const line = {\n ...finalLineTokens,\n };\n line.description = line.description.trimEnd();\n\n const {\n delimiter,\n } = line;\n\n for (const prop of [\n 'delimiter',\n 'postDelimiter',\n 'tag',\n 'type',\n 'lineEnd',\n 'postType',\n 'postTag',\n 'name',\n 'postName',\n 'description',\n ]) {\n finalLineTokens[\n /**\n * @type {\"delimiter\"|\"postDelimiter\"|\"tag\"|\"type\"|\n * \"lineEnd\"|\"postType\"|\"postTag\"|\"name\"|\n * \"postName\"|\"description\"}\n */ (\n prop\n )\n ] = '';\n }\n\n utils.addLine(jsdoc.source.length - 1, {\n ...line,\n delimiter,\n end: '',\n });\n };\n\n utils.reportJSDoc(\n 'Should have no text on the final line (before the `*/`).',\n null,\n fixer,\n );\n }\n };\n\n if (noMultilineBlocks) {\n if (\n jsdoc.tags.length &&\n (multilineTags.includes('*') || utils.hasATag(multilineTags))\n ) {\n lineChecks();\n\n return;\n }\n\n if (jsdoc.description.length >= minimumLengthForMultiline) {\n lineChecks();\n\n return;\n }\n\n if (\n noSingleLineBlocks &&\n (!jsdoc.tags.length ||\n !utils.filterTags(({\n tag: tg,\n }) => {\n return !isInvalidSingleLine(tg);\n }).length)\n ) {\n utils.reportJSDoc(\n 'Multiline jsdoc blocks are prohibited by ' +\n 'your configuration but fixing would result in a single ' +\n 'line block which you have prohibited with `noSingleLineBlocks`.',\n );\n\n return;\n }\n\n if (jsdoc.tags.length > 1) {\n if (!allowMultipleTags) {\n utils.reportJSDoc(\n 'Multiline jsdoc blocks are prohibited by ' +\n 'your configuration but the block has multiple tags.',\n );\n\n return;\n }\n } else if (jsdoc.tags.length === 1 && jsdoc.description.trim()) {\n if (!allowMultipleTags) {\n utils.reportJSDoc(\n 'Multiline jsdoc blocks are prohibited by ' +\n 'your configuration but the block has a description with a tag.',\n );\n\n return;\n }\n } else {\n const fixer = () => {\n jsdoc.source = [\n {\n number: 1,\n source: '',\n tokens: jsdoc.source.reduce((obj, {\n tokens: {\n description: desc,\n tag: tg,\n type: typ,\n name: nme,\n lineEnd,\n postType,\n postName,\n postTag,\n },\n }) => {\n if (typ) {\n obj.type = typ;\n }\n\n if (tg && typ && nme) {\n obj.postType = postType;\n }\n\n if (nme) {\n obj.name += nme;\n }\n\n if (nme && desc) {\n obj.postName = postName;\n }\n\n obj.description += desc;\n\n const nameOrDescription = obj.description || obj.name;\n if (\n nameOrDescription && nameOrDescription.slice(-1) !== ' '\n ) {\n obj.description += ' ';\n }\n\n obj.lineEnd = lineEnd;\n\n // Already filtered for multiple tags\n obj.tag += tg;\n if (tg) {\n obj.postTag = postTag || ' ';\n }\n\n return obj;\n }, utils.seedTokens({\n delimiter: '/**',\n end: '*/',\n postDelimiter: ' ',\n })),\n },\n ];\n };\n\n utils.reportJSDoc(\n 'Multiline jsdoc blocks are prohibited by ' +\n 'your configuration.',\n null,\n fixer,\n );\n\n return;\n }\n }\n\n lineChecks();\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Controls how and whether jsdoc blocks can be expressed as single or multiple line blocks.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/multiline-blocks.md#repos-sticky-header',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n allowMultipleTags: {\n type: 'boolean',\n },\n minimumLengthForMultiline: {\n type: 'integer',\n },\n multilineTags: {\n anyOf: [\n {\n enum: [\n '*',\n ],\n type: 'string',\n }, {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n ],\n },\n noFinalLineText: {\n type: 'boolean',\n },\n noMultilineBlocks: {\n type: 'boolean',\n },\n noSingleLineBlocks: {\n type: 'boolean',\n },\n noZeroLineText: {\n type: 'boolean',\n },\n singleLineTags: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"multilineBlocks.cjs","names":["_iterateJsdoc","_interopRequireDefault","require","e","__esModule","default","_default","exports","iterateJsdoc","context","jsdoc","utils","allowMultipleTags","minimumLengthForMultiline","Number","POSITIVE_INFINITY","multilineTags","noFinalLineText","noMultilineBlocks","noSingleLineBlocks","noZeroLineText","singleLineTags","options","source","tokens","description","tag","sourceLength","length","isInvalidSingleLine","tagName","includes","slice","fixer","makeMultiline","reportJSDoc","lineChecks","line","emptyTokens","delimiter","start","addLine","finalLine","finalLineTokens","trim","trimEnd","prop","end","tags","hasATag","filterTags","tg","number","reduce","obj","desc","lineEnd","name","nme","postName","postTag","postType","type","typ","nameOrDescription","seedTokens","postDelimiter","iterateAllJsdocs","meta","docs","url","fixable","schema","additionalProperties","properties","anyOf","enum","items","module"],"sources":["../../src/rules/multilineBlocks.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\n\nexport default iterateJsdoc(({\n context,\n jsdoc,\n utils,\n}) => {\n const {\n allowMultipleTags = true,\n minimumLengthForMultiline = Number.POSITIVE_INFINITY,\n multilineTags = [\n '*',\n ],\n noFinalLineText = true,\n noMultilineBlocks = false,\n noSingleLineBlocks = false,\n noZeroLineText = true,\n singleLineTags = [\n 'lends', 'type',\n ],\n } = context.options[0] || {};\n\n const {\n source: [\n {\n tokens,\n },\n ],\n } = jsdoc;\n const {\n description,\n tag,\n } = tokens;\n const sourceLength = jsdoc.source.length;\n\n /**\n * @param {string} tagName\n * @returns {boolean}\n */\n const isInvalidSingleLine = (tagName) => {\n return noSingleLineBlocks &&\n (!tagName ||\n !singleLineTags.includes(tagName) && !singleLineTags.includes('*'));\n };\n\n if (sourceLength === 1) {\n if (!isInvalidSingleLine(tag.slice(1))) {\n return;\n }\n\n const fixer = () => {\n utils.makeMultiline();\n };\n\n utils.reportJSDoc(\n 'Single line blocks are not permitted by your configuration.',\n null,\n fixer,\n true,\n );\n\n return;\n }\n\n const lineChecks = () => {\n if (\n noZeroLineText &&\n (tag || description)\n ) {\n const fixer = () => {\n const line = {\n ...tokens,\n };\n utils.emptyTokens(tokens);\n const {\n tokens: {\n delimiter,\n start,\n },\n } = jsdoc.source[1];\n utils.addLine(1, {\n ...line,\n delimiter,\n start,\n });\n };\n\n utils.reportJSDoc(\n 'Should have no text on the \"0th\" line (after the `/**`).',\n null,\n fixer,\n );\n\n return;\n }\n\n const finalLine = jsdoc.source[jsdoc.source.length - 1];\n const finalLineTokens = finalLine.tokens;\n if (\n noFinalLineText &&\n finalLineTokens.description.trim()\n ) {\n const fixer = () => {\n const line = {\n ...finalLineTokens,\n };\n line.description = line.description.trimEnd();\n\n const {\n delimiter,\n } = line;\n\n for (const prop of [\n 'delimiter',\n 'postDelimiter',\n 'tag',\n 'type',\n 'lineEnd',\n 'postType',\n 'postTag',\n 'name',\n 'postName',\n 'description',\n ]) {\n finalLineTokens[\n /**\n * @type {\"delimiter\"|\"postDelimiter\"|\"tag\"|\"type\"|\n * \"lineEnd\"|\"postType\"|\"postTag\"|\"name\"|\n * \"postName\"|\"description\"}\n */ (\n prop\n )\n ] = '';\n }\n\n utils.addLine(jsdoc.source.length - 1, {\n ...line,\n delimiter,\n end: '',\n });\n };\n\n utils.reportJSDoc(\n 'Should have no text on the final line (before the `*/`).',\n null,\n fixer,\n );\n }\n };\n\n if (noMultilineBlocks) {\n if (\n jsdoc.tags.length &&\n (multilineTags.includes('*') || utils.hasATag(multilineTags))\n ) {\n lineChecks();\n\n return;\n }\n\n if (jsdoc.description.length >= minimumLengthForMultiline) {\n lineChecks();\n\n return;\n }\n\n if (\n noSingleLineBlocks &&\n (!jsdoc.tags.length ||\n !utils.filterTags(({\n tag: tg,\n }) => {\n return !isInvalidSingleLine(tg);\n }).length)\n ) {\n utils.reportJSDoc(\n 'Multiline jsdoc blocks are prohibited by ' +\n 'your configuration but fixing would result in a single ' +\n 'line block which you have prohibited with `noSingleLineBlocks`.',\n );\n\n return;\n }\n\n if (jsdoc.tags.length > 1) {\n if (!allowMultipleTags) {\n utils.reportJSDoc(\n 'Multiline jsdoc blocks are prohibited by ' +\n 'your configuration but the block has multiple tags.',\n );\n\n return;\n }\n } else if (jsdoc.tags.length === 1 && jsdoc.description.trim()) {\n if (!allowMultipleTags) {\n utils.reportJSDoc(\n 'Multiline jsdoc blocks are prohibited by ' +\n 'your configuration but the block has a description with a tag.',\n );\n\n return;\n }\n } else {\n const fixer = () => {\n jsdoc.source = [\n {\n number: 1,\n source: '',\n tokens: jsdoc.source.reduce((obj, {\n tokens: {\n description: desc,\n lineEnd,\n name: nme,\n postName,\n postTag,\n postType,\n tag: tg,\n type: typ,\n },\n }) => {\n if (typ) {\n obj.type = typ;\n }\n\n if (tg && typ && nme) {\n obj.postType = postType;\n }\n\n if (nme) {\n obj.name += nme;\n }\n\n if (nme && desc) {\n obj.postName = postName;\n }\n\n obj.description += desc;\n\n const nameOrDescription = obj.description || obj.name;\n if (\n nameOrDescription && nameOrDescription.slice(-1) !== ' '\n ) {\n obj.description += ' ';\n }\n\n obj.lineEnd = lineEnd;\n\n // Already filtered for multiple tags\n obj.tag += tg;\n if (tg) {\n obj.postTag = postTag || ' ';\n }\n\n return obj;\n }, utils.seedTokens({\n delimiter: '/**',\n end: '*/',\n postDelimiter: ' ',\n })),\n },\n ];\n };\n\n utils.reportJSDoc(\n 'Multiline jsdoc blocks are prohibited by ' +\n 'your configuration.',\n null,\n fixer,\n );\n\n return;\n }\n }\n\n lineChecks();\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Controls how and whether jsdoc blocks can be expressed as single or multiple line blocks.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/multiline-blocks.md#repos-sticky-header',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n allowMultipleTags: {\n type: 'boolean',\n },\n minimumLengthForMultiline: {\n type: 'integer',\n },\n multilineTags: {\n anyOf: [\n {\n enum: [\n '*',\n ],\n type: 'string',\n }, {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n ],\n },\n noFinalLineText: {\n type: 'boolean',\n },\n noMultilineBlocks: {\n type: 'boolean',\n },\n noSingleLineBlocks: {\n type: 'boolean',\n },\n noZeroLineText: {\n type: 'boolean',\n },\n singleLineTags: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -12,10 +12,10 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
|
|
|
12
12
|
const commentRegexp = /^\/\*(?!\*)/u;
|
|
13
13
|
const extraAsteriskCommentRegexp = /^\/\*{3,}/u;
|
|
14
14
|
var _default = exports.default = (0, _iterateJsdoc.default)(({
|
|
15
|
-
context,
|
|
16
|
-
sourceCode,
|
|
17
15
|
allComments,
|
|
18
|
-
|
|
16
|
+
context,
|
|
17
|
+
makeReport,
|
|
18
|
+
sourceCode
|
|
19
19
|
}) => {
|
|
20
20
|
const [{
|
|
21
21
|
ignore = ['ts-check', 'ts-expect-error', 'ts-ignore', 'ts-nocheck'],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"noBadBlocks.cjs","names":["_iterateJsdoc","_interopRequireDefault","require","_commentParser","e","__esModule","default","commentRegexp","extraAsteriskCommentRegexp","_default","exports","iterateJsdoc","
|
|
1
|
+
{"version":3,"file":"noBadBlocks.cjs","names":["_iterateJsdoc","_interopRequireDefault","require","_commentParser","e","__esModule","default","commentRegexp","extraAsteriskCommentRegexp","_default","exports","iterateJsdoc","allComments","context","makeReport","sourceCode","ignore","preventAllMultiAsteriskBlocks","options","extraAsterisks","nonJsdocNodes","filter","comment","commentText","getText","initialText","replace","trimStart","some","directive","startsWith","sliceIndex","test","_extraAsteriskComment","multiline","exec","length","tags","commentParser","slice","tag","includes","node","report","fix","fixer","text","replaceText","checkFile","meta","docs","description","url","fixable","schema","additionalProperties","properties","items","type","module"],"sources":["../../src/rules/noBadBlocks.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\nimport {\n parse as commentParser,\n} from 'comment-parser';\n\n// Neither a single nor 3+ asterisks are valid jsdoc per\n// https://jsdoc.app/about-getting-started.html#adding-documentation-comments-to-your-code\nconst commentRegexp = /^\\/\\*(?!\\*)/u;\nconst extraAsteriskCommentRegexp = /^\\/\\*{3,}/u;\n\nexport default iterateJsdoc(({\n allComments,\n context,\n makeReport,\n sourceCode,\n}) => {\n const [\n {\n ignore = [\n 'ts-check',\n 'ts-expect-error',\n 'ts-ignore',\n 'ts-nocheck',\n ],\n preventAllMultiAsteriskBlocks = false,\n } = {},\n ] = context.options;\n\n let extraAsterisks = false;\n const nonJsdocNodes = /** @type {import('estree').Node[]} */ (\n allComments\n ).filter((comment) => {\n const commentText = sourceCode.getText(comment);\n\n const initialText = commentText.replace(commentRegexp, '').trimStart();\n if ([\n 'eslint',\n ].some((directive) => {\n return initialText.startsWith(directive);\n })) {\n return false;\n }\n\n let sliceIndex = 2;\n if (!commentRegexp.test(commentText)) {\n const multiline = extraAsteriskCommentRegexp.exec(commentText)?.[0];\n if (!multiline) {\n return false;\n }\n\n sliceIndex = multiline.length;\n extraAsterisks = true;\n if (preventAllMultiAsteriskBlocks) {\n return true;\n }\n }\n\n const tags = (commentParser(\n `${commentText.slice(0, 2)}*${commentText.slice(sliceIndex)}`,\n )[0] || {}).tags ?? [];\n\n return tags.length && !tags.some(({\n tag,\n }) => {\n return ignore.includes(tag);\n });\n });\n\n if (!nonJsdocNodes.length) {\n return;\n }\n\n for (const node of nonJsdocNodes) {\n const report = /** @type {import('../iterateJsdoc.js').MakeReport} */ (\n makeReport\n )(context, node);\n\n // eslint-disable-next-line no-loop-func\n const fix = /** @type {import('eslint').Rule.ReportFixer} */ (fixer) => {\n const text = sourceCode.getText(node);\n\n return fixer.replaceText(\n node,\n extraAsterisks ?\n text.replace(extraAsteriskCommentRegexp, '/**') :\n text.replace('/*', '/**'),\n );\n };\n\n report('Expected JSDoc-like comment to begin with two asterisks.', fix);\n }\n}, {\n checkFile: true,\n meta: {\n docs: {\n description: 'This rule checks for multi-line-style comments which fail to meet the criteria of a jsdoc block.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-bad-blocks.md#repos-sticky-header',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n ignore: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n preventAllMultiAsteriskBlocks: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'layout',\n },\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -26,17 +26,17 @@ var _default = exports.default = (0, _iterateJsdoc.default)(({
|
|
|
26
26
|
|
|
27
27
|
// eslint-disable-next-line complexity -- Todo
|
|
28
28
|
jsdoc.source.some(({
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
number,
|
|
30
|
+
tokens
|
|
31
31
|
}) => {
|
|
32
32
|
const {
|
|
33
33
|
delimiter,
|
|
34
|
-
tag,
|
|
35
|
-
name,
|
|
36
|
-
type,
|
|
37
34
|
description,
|
|
38
35
|
end,
|
|
39
|
-
|
|
36
|
+
name,
|
|
37
|
+
postDelimiter,
|
|
38
|
+
tag,
|
|
39
|
+
type
|
|
40
40
|
} = tokens;
|
|
41
41
|
if (preventAtMiddleLines && !end && !tag && !type && !name && (!allowWhitespace && middleAsterisks.test(description) || allowWhitespace && middleAsterisks.test(postDelimiter + description))) {
|
|
42
42
|
// console.log('description', JSON.stringify(description));
|