eslint-plugin-jsdoc 44.2.1 → 44.2.2

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/README.md CHANGED
@@ -208,6 +208,11 @@ See [Advanced](./docs/advanced.md#readme).
208
208
 
209
209
  Problems reported by rules which have a wrench :wrench: below can be fixed automatically by running ESLint on the command line with `--fix` option.
210
210
 
211
+ Note that a number of fixable rules have an `enableFixer` option which can
212
+ be set to `false` to disable the fixer (or in the case of `check-param-names`,
213
+ `check-property-names`, and `no-blank-blocks`, set to `true` to enable a
214
+ non-default-recommended fixer).
215
+
211
216
  |recommended|fixable|rule|description|
212
217
  |-|-|-|-|
213
218
  |:heavy_check_mark:|| [check-access](./docs/rules/check-access.md#readme) | Enforces valid `@access` tags|
@@ -40,11 +40,27 @@ var _default = (0, _iterateJsdoc.default)(({
40
40
  }, jsdocTag);
41
41
  }
42
42
  } else if (startsWithHyphen) {
43
- report(`There must be no hyphen before @${targetTagName} description.`, fixer => {
44
- const [unwantedPart] = /^\s*-\s*/u.exec(desc);
45
- const replacement = sourceCode.getText(jsdocNode).replace(desc, desc.slice(unwantedPart.length));
46
- return fixer.replaceText(jsdocNode, replacement);
47
- }, jsdocTag);
43
+ let lines = 0;
44
+ for (const {
45
+ tokens
46
+ } of jsdocTag.source) {
47
+ if (tokens.description) {
48
+ break;
49
+ }
50
+ lines++;
51
+ }
52
+ utils.reportJSDoc(`There must be no hyphen before @${targetTagName} description.`, {
53
+ line: jsdocTag.source[0].number + lines
54
+ }, () => {
55
+ for (const {
56
+ tokens
57
+ } of jsdocTag.source) {
58
+ if (tokens.description) {
59
+ tokens.description = tokens.description.replace(/^\s*-\s*/u, '');
60
+ break;
61
+ }
62
+ }
63
+ }, true);
48
64
  }
49
65
  };
50
66
  utils.forEachPreferredTag('param', checkHyphens);
@@ -1 +1 @@
1
- {"version":3,"file":"requireHyphenBeforeParamDescription.js","names":["_iterateJsdoc","_interopRequireDefault","require","obj","__esModule","default","_default","iterateJsdoc","sourceCode","utils","report","context","jsdoc","jsdocNode","mainCircumstance","tags","options","checkHyphens","jsdocTag","targetTagName","circumstance","always","desc","getTagDescription","trim","startsWithHyphen","test","fixer","lineIndex","line","sourceLines","getText","split","description","descriptionIndex","lastIndexOf","replacementLine","slice","splice","replacement","join","replaceText","unwantedPart","exec","replace","length","forEachPreferredTag","tagEntries","Object","entries","tagName","preferredParamTag","getPreferredTagName","tag","some","tagNme","iterateAllJsdocs","meta","docs","url","fixable","schema","enum","type","additionalProperties","properties","anyOf","patternProperties","exports","module"],"sources":["../../src/rules/requireHyphenBeforeParamDescription.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n sourceCode,\n utils,\n report,\n context,\n jsdoc,\n jsdocNode,\n}) => {\n const [\n mainCircumstance,\n {\n tags,\n } = {},\n ] = context.options;\n\n const checkHyphens = (jsdocTag, targetTagName, circumstance = mainCircumstance) => {\n const always = !circumstance || circumstance === 'always';\n const desc = utils.getTagDescription(jsdocTag);\n if (!desc.trim()) {\n return;\n }\n\n const startsWithHyphen = (/^\\s*-/u).test(desc);\n if (always) {\n if (!startsWithHyphen) {\n report(`There must be a hyphen before @${targetTagName} description.`, (fixer) => {\n const lineIndex = jsdocTag.line;\n const sourceLines = sourceCode.getText(jsdocNode).split('\\n');\n\n // Get start index of description, accounting for multi-line descriptions\n const description = desc.split('\\n')[0];\n const descriptionIndex = sourceLines[lineIndex].lastIndexOf(description);\n\n const replacementLine = sourceLines[lineIndex]\n .slice(0, descriptionIndex) + '- ' + description;\n sourceLines.splice(lineIndex, 1, replacementLine);\n const replacement = sourceLines.join('\\n');\n\n return fixer.replaceText(jsdocNode, replacement);\n }, jsdocTag);\n }\n } else if (startsWithHyphen) {\n report(`There must be no hyphen before @${targetTagName} description.`, (fixer) => {\n const [\n unwantedPart,\n ] = /^\\s*-\\s*/u.exec(desc);\n\n const replacement = sourceCode\n .getText(jsdocNode)\n .replace(desc, desc.slice(unwantedPart.length));\n\n return fixer.replaceText(jsdocNode, replacement);\n }, jsdocTag);\n }\n };\n\n utils.forEachPreferredTag('param', checkHyphens);\n if (tags) {\n const tagEntries = Object.entries(tags);\n for (const [\n tagName,\n circumstance,\n ] of tagEntries) {\n if (tagName === '*') {\n const preferredParamTag = utils.getPreferredTagName({\n tagName: 'param',\n });\n for (const {\n tag,\n } of jsdoc.tags) {\n if (tag === preferredParamTag || tagEntries.some(([\n tagNme,\n ]) => {\n return tagNme !== '*' && tagNme === tag;\n })) {\n continue;\n }\n\n utils.forEachPreferredTag(tag, (jsdocTag, targetTagName) => {\n checkHyphens(jsdocTag, targetTagName, circumstance);\n });\n }\n\n continue;\n }\n\n utils.forEachPreferredTag(tagName, (jsdocTag, targetTagName) => {\n checkHyphens(jsdocTag, targetTagName, circumstance);\n });\n }\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Requires a hyphen before the `@param` description.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-hyphen-before-param-description',\n },\n fixable: 'code',\n schema: [\n {\n enum: [\n 'always', 'never',\n ],\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n tags: {\n anyOf: [\n {\n patternProperties: {\n '.*': {\n enum: [\n 'always', 'never',\n ],\n type: 'string',\n },\n },\n type: 'object',\n },\n {\n enum: [\n 'any',\n ],\n type: 'string',\n },\n ],\n },\n },\n type: 'object',\n },\n ],\n type: 'layout',\n },\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"requireHyphenBeforeParamDescription.js","names":["_iterateJsdoc","_interopRequireDefault","require","obj","__esModule","default","_default","iterateJsdoc","sourceCode","utils","report","context","jsdoc","jsdocNode","mainCircumstance","tags","options","checkHyphens","jsdocTag","targetTagName","circumstance","always","desc","getTagDescription","trim","startsWithHyphen","test","fixer","lineIndex","line","sourceLines","getText","split","description","descriptionIndex","lastIndexOf","replacementLine","slice","splice","replacement","join","replaceText","lines","tokens","source","reportJSDoc","number","replace","forEachPreferredTag","tagEntries","Object","entries","tagName","preferredParamTag","getPreferredTagName","tag","some","tagNme","iterateAllJsdocs","meta","docs","url","fixable","schema","enum","type","additionalProperties","properties","anyOf","patternProperties","exports","module"],"sources":["../../src/rules/requireHyphenBeforeParamDescription.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n sourceCode,\n utils,\n report,\n context,\n jsdoc,\n jsdocNode,\n}) => {\n const [\n mainCircumstance,\n {\n tags,\n } = {},\n ] = context.options;\n\n const checkHyphens = (jsdocTag, targetTagName, circumstance = mainCircumstance) => {\n const always = !circumstance || circumstance === 'always';\n const desc = utils.getTagDescription(jsdocTag);\n if (!desc.trim()) {\n return;\n }\n\n const startsWithHyphen = (/^\\s*-/u).test(desc);\n if (always) {\n if (!startsWithHyphen) {\n report(`There must be a hyphen before @${targetTagName} description.`, (fixer) => {\n const lineIndex = jsdocTag.line;\n const sourceLines = sourceCode.getText(jsdocNode).split('\\n');\n\n // Get start index of description, accounting for multi-line descriptions\n const description = desc.split('\\n')[0];\n const descriptionIndex = sourceLines[lineIndex].lastIndexOf(description);\n\n const replacementLine = sourceLines[lineIndex]\n .slice(0, descriptionIndex) + '- ' + description;\n sourceLines.splice(lineIndex, 1, replacementLine);\n const replacement = sourceLines.join('\\n');\n\n return fixer.replaceText(jsdocNode, replacement);\n }, jsdocTag);\n }\n } else if (startsWithHyphen) {\n let lines = 0;\n for (const {\n tokens,\n } of jsdocTag.source) {\n if (tokens.description) {\n break;\n }\n\n lines++;\n }\n\n utils.reportJSDoc(\n `There must be no hyphen before @${targetTagName} description.`,\n {\n line: jsdocTag.source[0].number + lines,\n },\n () => {\n for (const {\n tokens,\n } of jsdocTag.source) {\n if (tokens.description) {\n tokens.description = tokens.description.replace(\n /^\\s*-\\s*/u, '',\n );\n break;\n }\n }\n },\n true,\n );\n }\n };\n\n utils.forEachPreferredTag('param', checkHyphens);\n if (tags) {\n const tagEntries = Object.entries(tags);\n for (const [\n tagName,\n circumstance,\n ] of tagEntries) {\n if (tagName === '*') {\n const preferredParamTag = utils.getPreferredTagName({\n tagName: 'param',\n });\n for (const {\n tag,\n } of jsdoc.tags) {\n if (tag === preferredParamTag || tagEntries.some(([\n tagNme,\n ]) => {\n return tagNme !== '*' && tagNme === tag;\n })) {\n continue;\n }\n\n utils.forEachPreferredTag(tag, (jsdocTag, targetTagName) => {\n checkHyphens(jsdocTag, targetTagName, circumstance);\n });\n }\n\n continue;\n }\n\n utils.forEachPreferredTag(tagName, (jsdocTag, targetTagName) => {\n checkHyphens(jsdocTag, targetTagName, circumstance);\n });\n }\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Requires a hyphen before the `@param` description.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-hyphen-before-param-description',\n },\n fixable: 'code',\n schema: [\n {\n enum: [\n 'always', 'never',\n ],\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n tags: {\n anyOf: [\n {\n patternProperties: {\n '.*': {\n enum: [\n 'always', 'never',\n ],\n type: 'string',\n },\n },\n type: 'object',\n },\n {\n enum: [\n 'any',\n ],\n type: 'string',\n },\n ],\n },\n },\n type: 'object',\n },\n ],\n type: 'layout',\n },\n});\n"],"mappings":"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"}
@@ -170,6 +170,29 @@ function quux () {
170
170
  }
171
171
  // "jsdoc/require-hyphen-before-param-description": ["error"|"warn", "always",{"tags":{"returns":"never"}}]
172
172
  // Message: There must be a hyphen before @param description.
173
+
174
+ /**
175
+ * Split a unit to metric prefix and basic unit.
176
+ *
177
+ * @param {string} unit - Unit to split.
178
+ * @param {string} [basicUnit] - Basic unit regardless of the metric prefix.
179
+ * If omitted, basic unit will be inferred by trying to remove the metric
180
+ * prefix in `unit`.
181
+ *
182
+ * @returns {{ prefix: string, basicUnit: string }} - Split result.
183
+ * If `unit` does not have a metric prefix, `''` is returned for `prefix`.
184
+ * If `unit` does not have a basic unit, `''` is returned for `basicUnit`.
185
+ */
186
+ // "jsdoc/require-hyphen-before-param-description": ["error"|"warn", "always",{"tags":{"*":"never","property":"always"}}]
187
+ // Message: There must be no hyphen before @returns description.
188
+
189
+ /**
190
+ * @returns {{
191
+ * prefix: string, basicUnit: string
192
+ * }} - Split result.
193
+ */
194
+ // "jsdoc/require-hyphen-before-param-description": ["error"|"warn", "always",{"tags":{"*":"never","property":"always"}}]
195
+ // Message: There must be no hyphen before @returns description.
173
196
  ````
174
197
 
175
198
 
package/package.json CHANGED
@@ -38,7 +38,7 @@
38
38
  "chai": "^4.3.7",
39
39
  "cross-env": "^7.0.3",
40
40
  "decamelize": "^5.0.1",
41
- "eslint": "^8.39.0",
41
+ "eslint": "8.39.0",
42
42
  "eslint-config-canonical": "~33.0.1",
43
43
  "gitdown": "^3.1.5",
44
44
  "glob": "^10.2.2",
@@ -124,5 +124,5 @@
124
124
  "test-cov": "cross-env TIMING=1 nyc --reporter text npm run test-no-cov",
125
125
  "test-index": "npm run test-no-cov -- test/rules/index.js"
126
126
  },
127
- "version": "44.2.1"
127
+ "version": "44.2.2"
128
128
  }