eslint-plugin-jsdoc 58.1.0 → 59.0.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/README.md +66 -60
- package/dist/buildForbidRuleDefinition.cjs +0 -1
- package/dist/buildForbidRuleDefinition.cjs.map +1 -1
- package/dist/buildRejectOrPreferRuleDefinition.cjs +7 -2
- package/dist/buildRejectOrPreferRuleDefinition.cjs.map +1 -1
- package/dist/cjs/rules/convertToJsdocComments.d.ts +7 -0
- package/dist/generateDocs.cjs +129 -3
- package/dist/generateDocs.cjs.map +1 -1
- package/dist/generateRule.cjs +3 -1
- package/dist/generateRule.cjs.map +1 -1
- package/dist/generateRuleTypes.cjs +5 -5
- package/dist/generateRuleTypes.cjs.map +1 -1
- package/dist/index-cjs.cjs +30 -0
- package/dist/index-cjs.cjs.map +1 -1
- package/dist/index.cjs +30 -0
- package/dist/index.cjs.map +1 -1
- package/dist/rules/checkAccess.cjs +1 -1
- package/dist/rules/checkAccess.cjs.map +1 -1
- package/dist/rules/checkAlignment.cjs +4 -1
- package/dist/rules/checkAlignment.cjs.map +1 -1
- package/dist/rules/checkExamples.cjs +1 -1
- package/dist/rules/checkExamples.cjs.map +1 -1
- package/dist/rules/checkIndentation.cjs +19 -0
- package/dist/rules/checkIndentation.cjs.map +1 -1
- package/dist/rules/checkLineAlignment.cjs +25 -1
- package/dist/rules/checkLineAlignment.cjs.map +1 -1
- package/dist/rules/checkParamNames.cjs +62 -1
- package/dist/rules/checkParamNames.cjs.map +1 -1
- package/dist/rules/checkPropertyNames.cjs +6 -0
- package/dist/rules/checkPropertyNames.cjs.map +1 -1
- package/dist/rules/checkTagNames.cjs +71 -0
- package/dist/rules/checkTagNames.cjs.map +1 -1
- package/dist/rules/checkTypes.cjs +16 -1
- package/dist/rules/checkTypes.cjs.map +1 -1
- package/dist/rules/checkValues.cjs +17 -1
- package/dist/rules/checkValues.cjs.map +1 -1
- package/dist/rules/convertToJsdocComments.cjs +48 -0
- package/dist/rules/convertToJsdocComments.cjs.map +1 -1
- package/dist/rules/convertToJsdocComments.d.ts +7 -0
- package/dist/rules/emptyTags.cjs +10 -1
- package/dist/rules/emptyTags.cjs.map +1 -1
- package/dist/rules/implementsOnClasses.cjs +15 -1
- package/dist/rules/implementsOnClasses.cjs.map +1 -1
- package/dist/rules/informativeDocs.cjs +45 -0
- package/dist/rules/informativeDocs.cjs.map +1 -1
- package/dist/rules/linesBeforeBlock.cjs +14 -0
- package/dist/rules/linesBeforeBlock.cjs.map +1 -1
- package/dist/rules/matchDescription.cjs +129 -0
- package/dist/rules/matchDescription.cjs.map +1 -1
- package/dist/rules/matchName.cjs +30 -0
- package/dist/rules/matchName.cjs.map +1 -1
- package/dist/rules/multilineBlocks.cjs +78 -6
- package/dist/rules/multilineBlocks.cjs.map +1 -1
- package/dist/rules/noBadBlocks.cjs +11 -2
- package/dist/rules/noBadBlocks.cjs.map +1 -1
- package/dist/rules/noBlankBlockDescriptions.cjs +1 -1
- package/dist/rules/noBlankBlockDescriptions.cjs.map +1 -1
- package/dist/rules/noBlankBlocks.cjs +3 -1
- package/dist/rules/noBlankBlocks.cjs.map +1 -1
- package/dist/rules/noDefaults.cjs +19 -0
- package/dist/rules/noDefaults.cjs.map +1 -1
- package/dist/rules/noMissingSyntax.cjs +22 -2
- package/dist/rules/noMissingSyntax.cjs.map +1 -1
- package/dist/rules/noMultiAsterisks.cjs +29 -0
- package/dist/rules/noMultiAsterisks.cjs.map +1 -1
- package/dist/rules/noRestrictedSyntax.cjs +17 -1
- package/dist/rules/noRestrictedSyntax.cjs.map +1 -1
- package/dist/rules/noTypes.cjs +17 -1
- package/dist/rules/noTypes.cjs.map +1 -1
- package/dist/rules/noUndefinedTypes.cjs +11 -1
- package/dist/rules/noUndefinedTypes.cjs.map +1 -1
- package/dist/rules/requireAsteriskPrefix.cjs +28 -0
- package/dist/rules/requireAsteriskPrefix.cjs.map +1 -1
- package/dist/rules/requireDescription.cjs +30 -1
- package/dist/rules/requireDescription.cjs.map +1 -1
- package/dist/rules/requireDescriptionCompleteSentence.cjs +27 -0
- package/dist/rules/requireDescriptionCompleteSentence.cjs.map +1 -1
- package/dist/rules/requireExample.cjs +26 -1
- package/dist/rules/requireExample.cjs.map +1 -1
- package/dist/rules/requireFileOverview.cjs +61 -0
- package/dist/rules/requireFileOverview.cjs.map +1 -1
- package/dist/rules/requireHyphenBeforeParamDescription.cjs +20 -2
- package/dist/rules/requireHyphenBeforeParamDescription.cjs.map +1 -1
- package/dist/rules/requireJsdoc.cjs +82 -3
- package/dist/rules/requireJsdoc.cjs.map +1 -1
- package/dist/rules/requireParam.cjs +213 -1
- package/dist/rules/requireParam.cjs.map +1 -1
- package/dist/rules/requireParamDescription.cjs +21 -0
- package/dist/rules/requireParamDescription.cjs.map +1 -1
- package/dist/rules/requireParamName.cjs +16 -1
- package/dist/rules/requireParamName.cjs.map +1 -1
- package/dist/rules/requireParamType.cjs +21 -1
- package/dist/rules/requireParamType.cjs.map +1 -1
- package/dist/rules/requirePropertyName.cjs +1 -1
- package/dist/rules/requirePropertyName.cjs.map +1 -1
- package/dist/rules/requirePropertyType.cjs +1 -1
- package/dist/rules/requirePropertyType.cjs.map +1 -1
- package/dist/rules/requireReturns.cjs +54 -1
- package/dist/rules/requireReturns.cjs.map +1 -1
- package/dist/rules/requireReturnsCheck.cjs +22 -1
- package/dist/rules/requireReturnsCheck.cjs.map +1 -1
- package/dist/rules/requireReturnsDescription.cjs +15 -1
- package/dist/rules/requireReturnsDescription.cjs.map +1 -1
- package/dist/rules/requireReturnsType.cjs +15 -1
- package/dist/rules/requireReturnsType.cjs.map +1 -1
- package/dist/rules/requireTemplate.cjs +17 -1
- package/dist/rules/requireTemplate.cjs.map +1 -1
- package/dist/rules/requireThrows.cjs +18 -1
- package/dist/rules/requireThrows.cjs.map +1 -1
- package/dist/rules/requireYields.cjs +50 -1
- package/dist/rules/requireYields.cjs.map +1 -1
- package/dist/rules/requireYieldsCheck.cjs +25 -7
- package/dist/rules/requireYieldsCheck.cjs.map +1 -1
- package/dist/rules/sortTags.cjs +200 -1
- package/dist/rules/sortTags.cjs.map +1 -1
- package/dist/rules/tagLines.cjs +32 -2
- package/dist/rules/tagLines.cjs.map +1 -1
- package/dist/rules/textEscaping.cjs +5 -1
- package/dist/rules/textEscaping.cjs.map +1 -1
- package/dist/rules/typeFormatting.cjs +64 -16
- package/dist/rules/typeFormatting.cjs.map +1 -1
- package/dist/rules/validTypes.cjs +8 -1
- package/dist/rules/validTypes.cjs.map +1 -1
- package/dist/rules.d.ts +2130 -32
- package/package.json +1 -1
- package/src/buildForbidRuleDefinition.js +0 -1
- package/src/buildRejectOrPreferRuleDefinition.js +12 -2
- package/src/index-cjs.js +36 -0
- package/src/index.js +36 -0
- package/src/rules/checkAccess.js +1 -1
- package/src/rules/checkAlignment.js +3 -0
- package/src/rules/checkExamples.js +1 -1
- package/src/rules/checkIndentation.js +19 -0
- package/src/rules/checkLineAlignment.js +24 -0
- package/src/rules/checkParamNames.js +62 -1
- package/src/rules/checkPropertyNames.js +6 -0
- package/src/rules/checkTagNames.js +71 -0
- package/src/rules/checkTypes.js +16 -1
- package/src/rules/checkValues.js +16 -0
- package/src/rules/convertToJsdocComments.js +48 -0
- package/src/rules/emptyTags.js +10 -1
- package/src/rules/implementsOnClasses.js +15 -1
- package/src/rules/informativeDocs.js +45 -0
- package/src/rules/linesBeforeBlock.js +14 -0
- package/src/rules/matchDescription.js +129 -0
- package/src/rules/matchName.js +30 -0
- package/src/rules/multilineBlocks.js +77 -5
- package/src/rules/noBadBlocks.js +11 -2
- package/src/rules/noBlankBlockDescriptions.js +1 -1
- package/src/rules/noBlankBlocks.js +2 -0
- package/src/rules/noDefaults.js +19 -0
- package/src/rules/noMissingSyntax.js +22 -2
- package/src/rules/noMultiAsterisks.js +29 -0
- package/src/rules/noRestrictedSyntax.js +17 -1
- package/src/rules/noTypes.js +17 -1
- package/src/rules/noUndefinedTypes.js +11 -1
- package/src/rules/requireAsteriskPrefix.js +28 -0
- package/src/rules/requireDescription.js +30 -1
- package/src/rules/requireDescriptionCompleteSentence.js +27 -0
- package/src/rules/requireExample.js +26 -1
- package/src/rules/requireFileOverview.js +61 -0
- package/src/rules/requireHyphenBeforeParamDescription.js +19 -1
- package/src/rules/requireJsdoc.js +80 -1
- package/src/rules/requireParam.js +213 -1
- package/src/rules/requireParamDescription.js +21 -0
- package/src/rules/requireParamName.js +16 -1
- package/src/rules/requireParamType.js +21 -1
- package/src/rules/requirePropertyName.js +1 -1
- package/src/rules/requirePropertyType.js +1 -1
- package/src/rules/requireReturns.js +54 -1
- package/src/rules/requireReturnsCheck.js +22 -1
- package/src/rules/requireReturnsDescription.js +15 -1
- package/src/rules/requireReturnsType.js +15 -1
- package/src/rules/requireTemplate.js +17 -1
- package/src/rules/requireThrows.js +18 -1
- package/src/rules/requireYields.js +50 -1
- package/src/rules/requireYieldsCheck.js +25 -7
- package/src/rules/sortTags.js +200 -1
- package/src/rules/tagLines.js +30 -0
- package/src/rules/textEscaping.js +5 -1
- package/src/rules/typeFormatting.js +57 -19
- package/src/rules/validTypes.js +8 -1
- package/src/rules.d.ts +2130 -32
- package/typings/gitdown.d.ts +4 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requireThrows.cjs","names":["_iterateJsdoc","_interopRequireDefault","require","e","__esModule","default","canSkip","utils","hasATag","avoidDocs","_default","exports","iterateJsdoc","report","tagName","getPreferredTagName","tags","getTags","iteratingFunction","isIteratingFunction","tag","missingThrowsTag","shouldReport","type","trim","hasThrowValue","contextDefaults","meta","docs","description","url","schema","additionalProperties","properties","contexts","items","anyOf","comment","context","exemptedBy","module"],"sources":["../../src/rules/requireThrows.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\n\n/**\n * We can skip checking for a throws value, in case the documentation is inherited\n * or the method is either a constructor or an abstract method.\n * @param {import('../iterateJsdoc.js').Utils} utils a reference to the utils which are used to probe if a tag is present or not.\n * @returns {boolean} true in case deep checking can be skipped; otherwise false.\n */\nconst canSkip = (utils) => {\n return utils.hasATag([\n // inheritdoc implies that all documentation is inherited\n // see https://jsdoc.app/tags-inheritdoc.html\n //\n // Abstract methods are by definition incomplete,\n // so it is not necessary to document that they throw an error.\n 'abstract',\n 'virtual',\n\n // The designated type can itself document `@throws`\n 'type',\n ]) ||\n utils.avoidDocs();\n};\n\nexport default iterateJsdoc(({\n report,\n utils,\n}) => {\n // A preflight check. We do not need to run a deep check for abstract\n // functions.\n if (canSkip(utils)) {\n return;\n }\n\n const tagName = /** @type {string} */ (utils.getPreferredTagName({\n tagName: 'throws',\n }));\n if (!tagName) {\n return;\n }\n\n const tags = utils.getTags(tagName);\n const iteratingFunction = utils.isIteratingFunction();\n\n // In case the code returns something, we expect a return value in JSDoc.\n const [\n tag,\n ] = tags;\n const missingThrowsTag = typeof tag === 'undefined' || tag === null;\n\n const shouldReport = () => {\n if (!missingThrowsTag) {\n if (tag.type.trim() === 'never' && iteratingFunction && utils.hasThrowValue()) {\n report(`JSDoc @${tagName} declaration set to \"never\" but throw value found.`);\n }\n\n return false;\n }\n\n return iteratingFunction && utils.hasThrowValue();\n };\n\n if (shouldReport()) {\n report(`Missing JSDoc @${tagName} declaration.`);\n }\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'Requires that throw statements are documented.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-throws.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 exemptedBy: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":";;;;;;AAAA,IAAAA,aAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA8C,SAAAD,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAE9C;AACA;AACA;AACA;AACA;AACA;AACA,MAAMG,OAAO,GAAIC,KAAK,IAAK;EACzB,OAAOA,KAAK,CAACC,OAAO,CAAC;EACnB;EACA;EACA;EACA;EACA;EACA,UAAU,EACV,SAAS;EAET;EACA,MAAM,CACP,CAAC,IACAD,KAAK,CAACE,SAAS,CAAC,CAAC;AACrB,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAN,OAAA,GAEa,IAAAO,qBAAY,EAAC,CAAC;EAC3BC,MAAM;EACNN;AACF,CAAC,KAAK;EACJ;EACA;EACA,IAAID,OAAO,CAACC,KAAK,CAAC,EAAE;IAClB;EACF;EAEA,MAAMO,OAAO,GAAG,qBAAuBP,KAAK,CAACQ,mBAAmB,CAAC;IAC/DD,OAAO,EAAE;EACX,CAAC,CAAE;EACH,IAAI,CAACA,OAAO,EAAE;IACZ;EACF;EAEA,MAAME,IAAI,GAAGT,KAAK,CAACU,OAAO,CAACH,OAAO,CAAC;EACnC,MAAMI,iBAAiB,GAAGX,KAAK,CAACY,mBAAmB,CAAC,CAAC;;EAErD;EACA,MAAM,CACJC,GAAG,CACJ,GAAGJ,IAAI;EACR,MAAMK,gBAAgB,GAAG,OAAOD,GAAG,KAAK,WAAW,IAAIA,GAAG,KAAK,IAAI;EAEnE,MAAME,YAAY,GAAGA,CAAA,KAAM;IACzB,IAAI,CAACD,gBAAgB,EAAE;MACrB,IAAID,GAAG,CAACG,IAAI,CAACC,IAAI,CAAC,CAAC,KAAK,OAAO,IAAIN,iBAAiB,IAAIX,KAAK,CAACkB,aAAa,CAAC,CAAC,EAAE;QAC7EZ,MAAM,CAAC,UAAUC,OAAO,oDAAoD,CAAC;MAC/E;MAEA,OAAO,KAAK;IACd;IAEA,OAAOI,iBAAiB,IAAIX,KAAK,CAACkB,aAAa,CAAC,CAAC;EACnD,CAAC;EAED,IAAIH,YAAY,CAAC,CAAC,EAAE;IAClBT,MAAM,CAAC,kBAAkBC,OAAO,eAAe,CAAC;EAClD;AACF,CAAC,EAAE;EACDY,eAAe,EAAE,IAAI;EACrBC,IAAI,EAAE;IACJC,IAAI,EAAE;MACJC,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"requireThrows.cjs","names":["_iterateJsdoc","_interopRequireDefault","require","e","__esModule","default","canSkip","utils","hasATag","avoidDocs","_default","exports","iterateJsdoc","report","tagName","getPreferredTagName","tags","getTags","iteratingFunction","isIteratingFunction","tag","missingThrowsTag","shouldReport","type","trim","hasThrowValue","contextDefaults","meta","docs","description","url","schema","additionalProperties","properties","contexts","items","anyOf","comment","context","exemptedBy","module"],"sources":["../../src/rules/requireThrows.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\n\n/**\n * We can skip checking for a throws value, in case the documentation is inherited\n * or the method is either a constructor or an abstract method.\n * @param {import('../iterateJsdoc.js').Utils} utils a reference to the utils which are used to probe if a tag is present or not.\n * @returns {boolean} true in case deep checking can be skipped; otherwise false.\n */\nconst canSkip = (utils) => {\n return utils.hasATag([\n // inheritdoc implies that all documentation is inherited\n // see https://jsdoc.app/tags-inheritdoc.html\n //\n // Abstract methods are by definition incomplete,\n // so it is not necessary to document that they throw an error.\n 'abstract',\n 'virtual',\n\n // The designated type can itself document `@throws`\n 'type',\n ]) ||\n utils.avoidDocs();\n};\n\nexport default iterateJsdoc(({\n report,\n utils,\n}) => {\n // A preflight check. We do not need to run a deep check for abstract\n // functions.\n if (canSkip(utils)) {\n return;\n }\n\n const tagName = /** @type {string} */ (utils.getPreferredTagName({\n tagName: 'throws',\n }));\n if (!tagName) {\n return;\n }\n\n const tags = utils.getTags(tagName);\n const iteratingFunction = utils.isIteratingFunction();\n\n // In case the code returns something, we expect a return value in JSDoc.\n const [\n tag,\n ] = tags;\n const missingThrowsTag = typeof tag === 'undefined' || tag === null;\n\n const shouldReport = () => {\n if (!missingThrowsTag) {\n if (tag.type.trim() === 'never' && iteratingFunction && utils.hasThrowValue()) {\n report(`JSDoc @${tagName} declaration set to \"never\" but throw value found.`);\n }\n\n return false;\n }\n\n return iteratingFunction && utils.hasThrowValue();\n };\n\n if (shouldReport()) {\n report(`Missing JSDoc @${tagName} declaration.`);\n }\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'Requires that throw statements are documented with `@throws` tags.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-throws.md#repos-sticky-header',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n contexts: {\n description: `Set this to an array of strings representing the AST context\n(or objects with optional \\`context\\` and \\`comment\\` properties) where you wish\nthe rule to be applied.\n\n\\`context\\` defaults to \\`any\\` and \\`comment\\` defaults to no specific comment context.\n\nOverrides the default contexts (\\`ArrowFunctionExpression\\`, \\`FunctionDeclaration\\`,\n\\`FunctionExpression\\`). Set to \\`\"any\"\\` if you want\nthe rule to apply to any JSDoc block throughout your files (as is necessary\nfor finding function blocks not attached to a function declaration or\nexpression, i.e., \\`@callback\\` or \\`@function\\` (or its aliases \\`@func\\` or\n\\`@method\\`) (including those associated with an \\`@interface\\`).`,\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 exemptedBy: {\n description: `Array of tags (e.g., \\`['type']\\`) whose presence on the\ndocument block avoids the need for a \\`@throws\\`. Defaults to an array\nwith \\`inheritdoc\\`. If you set this array, it will overwrite the default,\nso be sure to add back \\`inheritdoc\\` if you wish its presence to cause\nexemption of the rule.`,\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":[]}
|
|
@@ -114,13 +114,30 @@ var _default = exports.default = (0, _iterateJsdoc.default)(({
|
|
|
114
114
|
contextDefaults: true,
|
|
115
115
|
meta: {
|
|
116
116
|
docs: {
|
|
117
|
-
description: 'Requires yields are documented.',
|
|
117
|
+
description: 'Requires yields are documented with `@yields` tags.',
|
|
118
118
|
url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-yields.md#repos-sticky-header'
|
|
119
119
|
},
|
|
120
120
|
schema: [{
|
|
121
121
|
additionalProperties: false,
|
|
122
122
|
properties: {
|
|
123
123
|
contexts: {
|
|
124
|
+
description: `Set this to an array of strings representing the AST context
|
|
125
|
+
(or objects with optional \`context\` and \`comment\` properties) where you wish
|
|
126
|
+
the rule to be applied.
|
|
127
|
+
|
|
128
|
+
\`context\` defaults to \`any\` and \`comment\` defaults to no specific comment context.
|
|
129
|
+
|
|
130
|
+
Overrides the default contexts (\`ArrowFunctionExpression\`, \`FunctionDeclaration\`,
|
|
131
|
+
\`FunctionExpression\`). Set to \`"any"\` if you want
|
|
132
|
+
the rule to apply to any JSDoc block throughout your files (as is necessary
|
|
133
|
+
for finding function blocks not attached to a function declaration or
|
|
134
|
+
expression, i.e., \`@callback\` or \`@function\` (or its aliases \`@func\` or
|
|
135
|
+
\`@method\`) (including those associated with an \`@interface\`). This
|
|
136
|
+
rule will only apply on non-default contexts when there is such a tag
|
|
137
|
+
present and the \`forceRequireYields\` option is set or if the
|
|
138
|
+
\`withGeneratorTag\` option is set with a present \`@generator\` tag
|
|
139
|
+
(since we are not checking against the actual \`yield\` values in these
|
|
140
|
+
cases).`,
|
|
124
141
|
items: {
|
|
125
142
|
anyOf: [{
|
|
126
143
|
type: 'string'
|
|
@@ -140,6 +157,11 @@ var _default = exports.default = (0, _iterateJsdoc.default)(({
|
|
|
140
157
|
type: 'array'
|
|
141
158
|
},
|
|
142
159
|
exemptedBy: {
|
|
160
|
+
description: `Array of tags (e.g., \`['type']\`) whose presence on the
|
|
161
|
+
document block avoids the need for a \`@yields\`. Defaults to an array
|
|
162
|
+
with \`inheritdoc\`. If you set this array, it will overwrite the default,
|
|
163
|
+
so be sure to add back \`inheritdoc\` if you wish its presence to cause
|
|
164
|
+
exemption of the rule.`,
|
|
143
165
|
items: {
|
|
144
166
|
type: 'string'
|
|
145
167
|
},
|
|
@@ -147,22 +169,49 @@ var _default = exports.default = (0, _iterateJsdoc.default)(({
|
|
|
147
169
|
},
|
|
148
170
|
forceRequireNext: {
|
|
149
171
|
default: false,
|
|
172
|
+
description: `Set to \`true\` to always insist on
|
|
173
|
+
\`@next\` documentation even if there are no \`yield\` statements in the
|
|
174
|
+
function or none return values. May be desired to flag that a project is
|
|
175
|
+
aware of the expected yield return being \`undefined\`. Defaults to \`false\`.`,
|
|
150
176
|
type: 'boolean'
|
|
151
177
|
},
|
|
152
178
|
forceRequireYields: {
|
|
153
179
|
default: false,
|
|
180
|
+
description: `Set to \`true\` to always insist on
|
|
181
|
+
\`@yields\` documentation for generators even if there are only
|
|
182
|
+
expressionless \`yield\` statements in the function. May be desired to flag
|
|
183
|
+
that a project is aware of an \`undefined\`/\`void\` yield. Defaults to
|
|
184
|
+
\`false\`.`,
|
|
154
185
|
type: 'boolean'
|
|
155
186
|
},
|
|
156
187
|
next: {
|
|
157
188
|
default: false,
|
|
189
|
+
description: `If \`true\`, this option will insist that any use of a \`yield\` return
|
|
190
|
+
value (e.g., \`const rv = yield;\` or \`const rv = yield value;\`) has a
|
|
191
|
+
(non-standard) \`@next\` tag (in addition to any \`@yields\` tag) so as to be
|
|
192
|
+
able to document the type expected to be supplied into the iterator
|
|
193
|
+
(the \`Generator\` iterator that is returned by the call to the generator
|
|
194
|
+
function) to the iterator (e.g., \`it.next(value)\`). The tag will not be
|
|
195
|
+
expected if the generator function body merely has plain \`yield;\` or
|
|
196
|
+
\`yield value;\` statements without returning the values. Defaults to
|
|
197
|
+
\`false\`.`,
|
|
158
198
|
type: 'boolean'
|
|
159
199
|
},
|
|
160
200
|
nextWithGeneratorTag: {
|
|
161
201
|
default: false,
|
|
202
|
+
description: `If a \`@generator\` tag is present on a block, require
|
|
203
|
+
(non-standard ) \`@next\` (see \`next\` option). This will require using \`void\`
|
|
204
|
+
or \`undefined\` in cases where generators do not use the \`next()\`-supplied
|
|
205
|
+
incoming \`yield\`-returned value. Defaults to \`false\`. See \`contexts\` to
|
|
206
|
+
\`any\` if you want to catch \`@generator\` with \`@callback\` or such not
|
|
207
|
+
attached to a function.`,
|
|
162
208
|
type: 'boolean'
|
|
163
209
|
},
|
|
164
210
|
withGeneratorTag: {
|
|
165
211
|
default: true,
|
|
212
|
+
description: `If a \`@generator\` tag is present on a block, require
|
|
213
|
+
\`@yields\`/\`@yield\`. Defaults to \`true\`. See \`contexts\` to \`any\` if you want
|
|
214
|
+
to catch \`@generator\` with \`@callback\` or such not attached to a function.`,
|
|
166
215
|
type: 'boolean'
|
|
167
216
|
}
|
|
168
217
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requireYields.cjs","names":["_iterateJsdoc","_interopRequireDefault","require","e","__esModule","default","canSkip","utils","hasATag","avoidDocs","checkTagName","report","tagName","preferredTagName","getPreferredTagName","tags","getTags","length","tag","missingTag","_default","exports","iterateJsdoc","context","forceRequireNext","forceRequireYields","next","nextWithGeneratorTag","withGeneratorTag","options","iteratingFunction","isIteratingFunction","preferredYieldTagName","missingYieldTag","shouldReportYields","hasTag","isGenerator","hasYieldValue","preferredNextTagName","missingNextTag","shouldReportNext","hasYieldReturnValue","contextDefaults","meta","docs","description","url","schema","additionalProperties","properties","contexts","items","anyOf","type","comment","exemptedBy","module"],"sources":["../../src/rules/requireYields.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\n\n/**\n * We can skip checking for a yield value, in case the documentation is inherited\n * or the method has a constructor or abstract tag.\n *\n * In either of these cases the yield value is optional or not defined.\n * @param {import('../iterateJsdoc.js').Utils} utils a reference to the utils which are used to probe if a tag is present or not.\n * @returns {boolean} true in case deep checking can be skipped; otherwise false.\n */\nconst canSkip = (utils) => {\n return utils.hasATag([\n // inheritdoc implies that all documentation is inherited\n // see https://jsdoc.app/tags-inheritdoc.html\n //\n // Abstract methods are by definition incomplete,\n // so it is not an error if it declares a yield value but does not implement it.\n 'abstract',\n 'virtual',\n\n // Constructors do not have a yield value\n // so we can bail out here, too.\n 'class',\n 'constructor',\n\n // Yield (and any `next`) type is specified accompanying the targeted\n // @type\n 'type',\n\n // This seems to imply a class as well\n 'interface',\n ]) ||\n utils.avoidDocs();\n};\n\n/**\n * @param {import('../iterateJsdoc.js').Utils} utils\n * @param {import('../iterateJsdoc.js').Report} report\n * @param {string} tagName\n * @returns {[preferredTagName?: string, missingTag?: boolean]}\n */\nconst checkTagName = (utils, report, tagName) => {\n const preferredTagName = /** @type {string} */ (utils.getPreferredTagName({\n tagName,\n }));\n if (!preferredTagName) {\n return [];\n }\n\n const tags = utils.getTags(preferredTagName);\n\n if (tags.length > 1) {\n report(`Found more than one @${preferredTagName} declaration.`);\n }\n\n // In case the code yields something, we expect a yields value in JSDoc.\n const [\n tag,\n ] = tags;\n const missingTag = typeof tag === 'undefined' || tag === null;\n\n return [\n preferredTagName, missingTag,\n ];\n};\n\nexport default iterateJsdoc(({\n context,\n report,\n utils,\n}) => {\n const {\n forceRequireNext = false,\n forceRequireYields = false,\n next = false,\n nextWithGeneratorTag = false,\n withGeneratorTag = true,\n } = context.options[0] || {};\n\n // A preflight check. We do not need to run a deep check\n // in case the @yield comment is optional or undefined.\n if (canSkip(utils)) {\n return;\n }\n\n const iteratingFunction = utils.isIteratingFunction();\n\n const [\n preferredYieldTagName,\n missingYieldTag,\n ] = checkTagName(\n utils, report, 'yields',\n );\n if (preferredYieldTagName) {\n const shouldReportYields = () => {\n if (!missingYieldTag) {\n return false;\n }\n\n if (\n withGeneratorTag && utils.hasTag('generator') ||\n forceRequireYields && iteratingFunction && utils.isGenerator()\n ) {\n return true;\n }\n\n return iteratingFunction && utils.isGenerator() && utils.hasYieldValue();\n };\n\n if (shouldReportYields()) {\n report(`Missing JSDoc @${preferredYieldTagName} declaration.`);\n }\n }\n\n if (next || nextWithGeneratorTag || forceRequireNext) {\n const [\n preferredNextTagName,\n missingNextTag,\n ] = checkTagName(\n utils, report, 'next',\n );\n if (!preferredNextTagName) {\n return;\n }\n\n const shouldReportNext = () => {\n if (!missingNextTag) {\n return false;\n }\n\n if (\n nextWithGeneratorTag && utils.hasTag('generator')) {\n return true;\n }\n\n if (\n !next && !forceRequireNext ||\n !iteratingFunction ||\n !utils.isGenerator()\n ) {\n return false;\n }\n\n return forceRequireNext || utils.hasYieldReturnValue();\n };\n\n if (shouldReportNext()) {\n report(`Missing JSDoc @${preferredNextTagName} declaration.`);\n }\n }\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'Requires yields are documented.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-yields.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 exemptedBy: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n forceRequireNext: {\n default: false,\n type: 'boolean',\n },\n forceRequireYields: {\n default: false,\n type: 'boolean',\n },\n next: {\n default: false,\n type: 'boolean',\n },\n nextWithGeneratorTag: {\n default: false,\n type: 'boolean',\n },\n withGeneratorTag: {\n default: true,\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"requireYields.cjs","names":["_iterateJsdoc","_interopRequireDefault","require","e","__esModule","default","canSkip","utils","hasATag","avoidDocs","checkTagName","report","tagName","preferredTagName","getPreferredTagName","tags","getTags","length","tag","missingTag","_default","exports","iterateJsdoc","context","forceRequireNext","forceRequireYields","next","nextWithGeneratorTag","withGeneratorTag","options","iteratingFunction","isIteratingFunction","preferredYieldTagName","missingYieldTag","shouldReportYields","hasTag","isGenerator","hasYieldValue","preferredNextTagName","missingNextTag","shouldReportNext","hasYieldReturnValue","contextDefaults","meta","docs","description","url","schema","additionalProperties","properties","contexts","items","anyOf","type","comment","exemptedBy","module"],"sources":["../../src/rules/requireYields.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\n\n/**\n * We can skip checking for a yield value, in case the documentation is inherited\n * or the method has a constructor or abstract tag.\n *\n * In either of these cases the yield value is optional or not defined.\n * @param {import('../iterateJsdoc.js').Utils} utils a reference to the utils which are used to probe if a tag is present or not.\n * @returns {boolean} true in case deep checking can be skipped; otherwise false.\n */\nconst canSkip = (utils) => {\n return utils.hasATag([\n // inheritdoc implies that all documentation is inherited\n // see https://jsdoc.app/tags-inheritdoc.html\n //\n // Abstract methods are by definition incomplete,\n // so it is not an error if it declares a yield value but does not implement it.\n 'abstract',\n 'virtual',\n\n // Constructors do not have a yield value\n // so we can bail out here, too.\n 'class',\n 'constructor',\n\n // Yield (and any `next`) type is specified accompanying the targeted\n // @type\n 'type',\n\n // This seems to imply a class as well\n 'interface',\n ]) ||\n utils.avoidDocs();\n};\n\n/**\n * @param {import('../iterateJsdoc.js').Utils} utils\n * @param {import('../iterateJsdoc.js').Report} report\n * @param {string} tagName\n * @returns {[preferredTagName?: string, missingTag?: boolean]}\n */\nconst checkTagName = (utils, report, tagName) => {\n const preferredTagName = /** @type {string} */ (utils.getPreferredTagName({\n tagName,\n }));\n if (!preferredTagName) {\n return [];\n }\n\n const tags = utils.getTags(preferredTagName);\n\n if (tags.length > 1) {\n report(`Found more than one @${preferredTagName} declaration.`);\n }\n\n // In case the code yields something, we expect a yields value in JSDoc.\n const [\n tag,\n ] = tags;\n const missingTag = typeof tag === 'undefined' || tag === null;\n\n return [\n preferredTagName, missingTag,\n ];\n};\n\nexport default iterateJsdoc(({\n context,\n report,\n utils,\n}) => {\n const {\n forceRequireNext = false,\n forceRequireYields = false,\n next = false,\n nextWithGeneratorTag = false,\n withGeneratorTag = true,\n } = context.options[0] || {};\n\n // A preflight check. We do not need to run a deep check\n // in case the @yield comment is optional or undefined.\n if (canSkip(utils)) {\n return;\n }\n\n const iteratingFunction = utils.isIteratingFunction();\n\n const [\n preferredYieldTagName,\n missingYieldTag,\n ] = checkTagName(\n utils, report, 'yields',\n );\n if (preferredYieldTagName) {\n const shouldReportYields = () => {\n if (!missingYieldTag) {\n return false;\n }\n\n if (\n withGeneratorTag && utils.hasTag('generator') ||\n forceRequireYields && iteratingFunction && utils.isGenerator()\n ) {\n return true;\n }\n\n return iteratingFunction && utils.isGenerator() && utils.hasYieldValue();\n };\n\n if (shouldReportYields()) {\n report(`Missing JSDoc @${preferredYieldTagName} declaration.`);\n }\n }\n\n if (next || nextWithGeneratorTag || forceRequireNext) {\n const [\n preferredNextTagName,\n missingNextTag,\n ] = checkTagName(\n utils, report, 'next',\n );\n if (!preferredNextTagName) {\n return;\n }\n\n const shouldReportNext = () => {\n if (!missingNextTag) {\n return false;\n }\n\n if (\n nextWithGeneratorTag && utils.hasTag('generator')) {\n return true;\n }\n\n if (\n !next && !forceRequireNext ||\n !iteratingFunction ||\n !utils.isGenerator()\n ) {\n return false;\n }\n\n return forceRequireNext || utils.hasYieldReturnValue();\n };\n\n if (shouldReportNext()) {\n report(`Missing JSDoc @${preferredNextTagName} declaration.`);\n }\n }\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'Requires yields are documented with `@yields` tags.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-yields.md#repos-sticky-header',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n contexts: {\n description: `Set this to an array of strings representing the AST context\n(or objects with optional \\`context\\` and \\`comment\\` properties) where you wish\nthe rule to be applied.\n\n\\`context\\` defaults to \\`any\\` and \\`comment\\` defaults to no specific comment context.\n\nOverrides the default contexts (\\`ArrowFunctionExpression\\`, \\`FunctionDeclaration\\`,\n\\`FunctionExpression\\`). Set to \\`\"any\"\\` if you want\nthe rule to apply to any JSDoc block throughout your files (as is necessary\nfor finding function blocks not attached to a function declaration or\nexpression, i.e., \\`@callback\\` or \\`@function\\` (or its aliases \\`@func\\` or\n\\`@method\\`) (including those associated with an \\`@interface\\`). This\nrule will only apply on non-default contexts when there is such a tag\npresent and the \\`forceRequireYields\\` option is set or if the\n\\`withGeneratorTag\\` option is set with a present \\`@generator\\` tag\n(since we are not checking against the actual \\`yield\\` values in these\ncases).`,\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 exemptedBy: {\n description: `Array of tags (e.g., \\`['type']\\`) whose presence on the\ndocument block avoids the need for a \\`@yields\\`. Defaults to an array\nwith \\`inheritdoc\\`. If you set this array, it will overwrite the default,\nso be sure to add back \\`inheritdoc\\` if you wish its presence to cause\nexemption of the rule.`,\n items: {\n type: 'string',\n },\n type: 'array',\n },\n forceRequireNext: {\n default: false,\n description: `Set to \\`true\\` to always insist on\n\\`@next\\` documentation even if there are no \\`yield\\` statements in the\nfunction or none return values. May be desired to flag that a project is\naware of the expected yield return being \\`undefined\\`. Defaults to \\`false\\`.`,\n type: 'boolean',\n },\n forceRequireYields: {\n default: false,\n description: `Set to \\`true\\` to always insist on\n\\`@yields\\` documentation for generators even if there are only\nexpressionless \\`yield\\` statements in the function. May be desired to flag\nthat a project is aware of an \\`undefined\\`/\\`void\\` yield. Defaults to\n\\`false\\`.`,\n type: 'boolean',\n },\n next: {\n default: false,\n description: `If \\`true\\`, this option will insist that any use of a \\`yield\\` return\nvalue (e.g., \\`const rv = yield;\\` or \\`const rv = yield value;\\`) has a\n(non-standard) \\`@next\\` tag (in addition to any \\`@yields\\` tag) so as to be\nable to document the type expected to be supplied into the iterator\n(the \\`Generator\\` iterator that is returned by the call to the generator\nfunction) to the iterator (e.g., \\`it.next(value)\\`). The tag will not be\nexpected if the generator function body merely has plain \\`yield;\\` or\n\\`yield value;\\` statements without returning the values. Defaults to\n\\`false\\`.`,\n type: 'boolean',\n },\n nextWithGeneratorTag: {\n default: false,\n description: `If a \\`@generator\\` tag is present on a block, require\n(non-standard ) \\`@next\\` (see \\`next\\` option). This will require using \\`void\\`\nor \\`undefined\\` in cases where generators do not use the \\`next()\\`-supplied\nincoming \\`yield\\`-returned value. Defaults to \\`false\\`. See \\`contexts\\` to\n\\`any\\` if you want to catch \\`@generator\\` with \\`@callback\\` or such not\nattached to a function.`,\n type: 'boolean',\n },\n withGeneratorTag: {\n default: true,\n description: `If a \\`@generator\\` tag is present on a block, require\n\\`@yields\\`/\\`@yield\\`. Defaults to \\`true\\`. See \\`contexts\\` to \\`any\\` if you want\nto catch \\`@generator\\` with \\`@callback\\` or such not attached to a function.`,\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -112,7 +112,7 @@ var _default = exports.default = (0, _iterateJsdoc.default)(({
|
|
|
112
112
|
}, {
|
|
113
113
|
meta: {
|
|
114
114
|
docs: {
|
|
115
|
-
description: '
|
|
115
|
+
description: 'Ensures that if a `@yields` is present that a `yield` (or `yield` with a value) is present in the function body (or that if a `@next` is present that there is a yield with a return value present).',
|
|
116
116
|
url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-yields-check.md#repos-sticky-header'
|
|
117
117
|
},
|
|
118
118
|
schema: [{
|
|
@@ -120,9 +120,22 @@ var _default = exports.default = (0, _iterateJsdoc.default)(({
|
|
|
120
120
|
properties: {
|
|
121
121
|
checkGeneratorsOnly: {
|
|
122
122
|
default: false,
|
|
123
|
+
description: `Avoids checking the function body and merely insists
|
|
124
|
+
that all generators have \`@yields\`. This can be an optimization with the
|
|
125
|
+
ESLint \`require-yield\` rule, as that rule already ensures a \`yield\` is
|
|
126
|
+
present in generators, albeit assuming the generator is not empty).
|
|
127
|
+
Defaults to \`false\`.`,
|
|
123
128
|
type: 'boolean'
|
|
124
129
|
},
|
|
125
130
|
contexts: {
|
|
131
|
+
description: `Set this to an array of strings representing the AST context
|
|
132
|
+
(or objects with optional \`context\` and \`comment\` properties) where you wish
|
|
133
|
+
the rule to be applied.
|
|
134
|
+
|
|
135
|
+
\`context\` defaults to \`any\` and \`comment\` defaults to no specific comment context.
|
|
136
|
+
|
|
137
|
+
Overrides the default contexts (\`ArrowFunctionExpression\`, \`FunctionDeclaration\`,
|
|
138
|
+
\`FunctionExpression\`).`,
|
|
126
139
|
items: {
|
|
127
140
|
anyOf: [{
|
|
128
141
|
type: 'string'
|
|
@@ -141,14 +154,19 @@ var _default = exports.default = (0, _iterateJsdoc.default)(({
|
|
|
141
154
|
},
|
|
142
155
|
type: 'array'
|
|
143
156
|
},
|
|
144
|
-
exemptedBy: {
|
|
145
|
-
items: {
|
|
146
|
-
type: 'string'
|
|
147
|
-
},
|
|
148
|
-
type: 'array'
|
|
149
|
-
},
|
|
150
157
|
next: {
|
|
151
158
|
default: false,
|
|
159
|
+
description: `If \`true\`, this option will insist that any use of a (non-standard)
|
|
160
|
+
\`@next\` tag (in addition to any \`@yields\` tag) will be matched by a \`yield\`
|
|
161
|
+
which uses a return value in the body of the generator (e.g.,
|
|
162
|
+
\`const rv = yield;\` or \`const rv = yield value;\`). This (non-standard)
|
|
163
|
+
tag is intended to be used to indicate a type and/or description of
|
|
164
|
+
the value expected to be supplied by the user when supplied to the iterator
|
|
165
|
+
by its \`next\` method, as with \`it.next(value)\` (with the iterator being
|
|
166
|
+
the \`Generator\` iterator that is returned by the call to the generator
|
|
167
|
+
function). This option will report an error if the generator function body
|
|
168
|
+
merely has plain \`yield;\` or \`yield value;\` statements without returning
|
|
169
|
+
the values. Defaults to \`false\`.`,
|
|
152
170
|
type: 'boolean'
|
|
153
171
|
}
|
|
154
172
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requireYieldsCheck.cjs","names":["_iterateJsdoc","_interopRequireDefault","require","e","__esModule","default","canSkip","utils","settings","voidingTags","mode","push","hasATag","isConstructor","classHasTag","checkTagName","report","tagName","preferredTagName","getPreferredTagName","tags","getTags","length","_default","exports","iterateJsdoc","context","checkGeneratorsOnly","next","options","preferredYieldTagName","yieldTag","shouldReportYields","type","trim","hasYieldValue","isGenerator","mayBeUndefinedTypeTag","preferredNextTagName","nextTag","shouldReportNext","hasYieldReturnValue","meta","docs","description","url","schema","additionalProperties","properties","contexts","items","anyOf","comment","exemptedBy","module"],"sources":["../../src/rules/requireYieldsCheck.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\n\n/**\n * @param {import('../iterateJsdoc.js').Utils} utils\n * @param {import('../iterateJsdoc.js').Settings} settings\n * @returns {boolean}\n */\nconst canSkip = (utils, settings) => {\n const voidingTags = [\n // An abstract function is by definition incomplete\n // so it is perfectly fine if a yield is documented but\n // not present within the function.\n // A subclass may inherit the doc and implement the\n // missing yield.\n 'abstract',\n 'virtual',\n\n // Constructor functions do not have a yield value\n // so we can bail here, too.\n 'class',\n 'constructor',\n\n // This seems to imply a class as well\n 'interface',\n ];\n\n if (settings.mode === 'closure') {\n // Structural Interface in GCC terms, equivalent to @interface tag as far as this rule is concerned\n voidingTags.push('record');\n }\n\n return utils.hasATag(voidingTags) ||\n utils.isConstructor() ||\n utils.classHasTag('interface') ||\n settings.mode === 'closure' && utils.classHasTag('record');\n};\n\n/**\n * @param {import('../iterateJsdoc.js').Utils} utils\n * @param {import('../iterateJsdoc.js').Report} report\n * @param {string} tagName\n * @returns {[]|[preferredTagName: string, tag: import('comment-parser').Spec]}\n */\nconst checkTagName = (utils, report, tagName) => {\n const preferredTagName = /** @type {string} */ (utils.getPreferredTagName({\n tagName,\n }));\n if (!preferredTagName) {\n return [];\n }\n\n const tags = utils.getTags(preferredTagName);\n\n if (tags.length === 0) {\n return [];\n }\n\n if (tags.length > 1) {\n report(`Found more than one @${preferredTagName} declaration.`);\n\n return [];\n }\n\n return [\n preferredTagName, tags[0],\n ];\n};\n\nexport default iterateJsdoc(({\n context,\n report,\n settings,\n utils,\n}) => {\n if (canSkip(utils, settings)) {\n return;\n }\n\n const {\n checkGeneratorsOnly = false,\n next = false,\n } = context.options[0] || {};\n\n const [\n preferredYieldTagName,\n yieldTag,\n ] = checkTagName(\n utils, report, 'yields',\n );\n if (preferredYieldTagName) {\n const shouldReportYields = () => {\n if (\n /** @type {import('comment-parser').Spec} */ (\n yieldTag\n ).type.trim() === 'never'\n ) {\n if (utils.hasYieldValue()) {\n report(`JSDoc @${preferredYieldTagName} declaration set with \"never\" but yield expression is present in function.`);\n }\n\n return false;\n }\n\n if (checkGeneratorsOnly && !utils.isGenerator()) {\n return true;\n }\n\n return !utils.mayBeUndefinedTypeTag(\n /** @type {import('comment-parser').Spec} */\n (yieldTag),\n ) && !utils.hasYieldValue();\n };\n\n // In case a yield value is declared in JSDoc, we also expect one in the code.\n if (shouldReportYields()) {\n report(`JSDoc @${preferredYieldTagName} declaration present but yield expression not available in function.`);\n }\n }\n\n if (next) {\n const [\n preferredNextTagName,\n nextTag,\n ] = checkTagName(\n utils, report, 'next',\n );\n if (preferredNextTagName) {\n const shouldReportNext = () => {\n if (\n /** @type {import('comment-parser').Spec} */ (\n nextTag\n ).type.trim() === 'never'\n ) {\n if (utils.hasYieldReturnValue()) {\n report(`JSDoc @${preferredNextTagName} declaration set with \"never\" but yield expression with return value is present in function.`);\n }\n\n return false;\n }\n\n if (checkGeneratorsOnly && !utils.isGenerator()) {\n return true;\n }\n\n return !utils.mayBeUndefinedTypeTag(\n /** @type {import('comment-parser').Spec} */\n (nextTag),\n ) && !utils.hasYieldReturnValue();\n };\n\n if (shouldReportNext()) {\n report(`JSDoc @${preferredNextTagName} declaration present but yield expression with return value not available in function.`);\n }\n }\n }\n}, {\n meta: {\n docs: {\n description: 'Requires a yield statement in function body if a `@yields` tag is specified in jsdoc comment.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-yields-check.md#repos-sticky-header',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n checkGeneratorsOnly: {\n default: false,\n type: 'boolean',\n },\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 exemptedBy: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n next: {\n default: false,\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"requireYieldsCheck.cjs","names":["_iterateJsdoc","_interopRequireDefault","require","e","__esModule","default","canSkip","utils","settings","voidingTags","mode","push","hasATag","isConstructor","classHasTag","checkTagName","report","tagName","preferredTagName","getPreferredTagName","tags","getTags","length","_default","exports","iterateJsdoc","context","checkGeneratorsOnly","next","options","preferredYieldTagName","yieldTag","shouldReportYields","type","trim","hasYieldValue","isGenerator","mayBeUndefinedTypeTag","preferredNextTagName","nextTag","shouldReportNext","hasYieldReturnValue","meta","docs","description","url","schema","additionalProperties","properties","contexts","items","anyOf","comment","module"],"sources":["../../src/rules/requireYieldsCheck.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\n\n/**\n * @param {import('../iterateJsdoc.js').Utils} utils\n * @param {import('../iterateJsdoc.js').Settings} settings\n * @returns {boolean}\n */\nconst canSkip = (utils, settings) => {\n const voidingTags = [\n // An abstract function is by definition incomplete\n // so it is perfectly fine if a yield is documented but\n // not present within the function.\n // A subclass may inherit the doc and implement the\n // missing yield.\n 'abstract',\n 'virtual',\n\n // Constructor functions do not have a yield value\n // so we can bail here, too.\n 'class',\n 'constructor',\n\n // This seems to imply a class as well\n 'interface',\n ];\n\n if (settings.mode === 'closure') {\n // Structural Interface in GCC terms, equivalent to @interface tag as far as this rule is concerned\n voidingTags.push('record');\n }\n\n return utils.hasATag(voidingTags) ||\n utils.isConstructor() ||\n utils.classHasTag('interface') ||\n settings.mode === 'closure' && utils.classHasTag('record');\n};\n\n/**\n * @param {import('../iterateJsdoc.js').Utils} utils\n * @param {import('../iterateJsdoc.js').Report} report\n * @param {string} tagName\n * @returns {[]|[preferredTagName: string, tag: import('comment-parser').Spec]}\n */\nconst checkTagName = (utils, report, tagName) => {\n const preferredTagName = /** @type {string} */ (utils.getPreferredTagName({\n tagName,\n }));\n if (!preferredTagName) {\n return [];\n }\n\n const tags = utils.getTags(preferredTagName);\n\n if (tags.length === 0) {\n return [];\n }\n\n if (tags.length > 1) {\n report(`Found more than one @${preferredTagName} declaration.`);\n\n return [];\n }\n\n return [\n preferredTagName, tags[0],\n ];\n};\n\nexport default iterateJsdoc(({\n context,\n report,\n settings,\n utils,\n}) => {\n if (canSkip(utils, settings)) {\n return;\n }\n\n const {\n checkGeneratorsOnly = false,\n next = false,\n } = context.options[0] || {};\n\n const [\n preferredYieldTagName,\n yieldTag,\n ] = checkTagName(\n utils, report, 'yields',\n );\n if (preferredYieldTagName) {\n const shouldReportYields = () => {\n if (\n /** @type {import('comment-parser').Spec} */ (\n yieldTag\n ).type.trim() === 'never'\n ) {\n if (utils.hasYieldValue()) {\n report(`JSDoc @${preferredYieldTagName} declaration set with \"never\" but yield expression is present in function.`);\n }\n\n return false;\n }\n\n if (checkGeneratorsOnly && !utils.isGenerator()) {\n return true;\n }\n\n return !utils.mayBeUndefinedTypeTag(\n /** @type {import('comment-parser').Spec} */\n (yieldTag),\n ) && !utils.hasYieldValue();\n };\n\n // In case a yield value is declared in JSDoc, we also expect one in the code.\n if (shouldReportYields()) {\n report(`JSDoc @${preferredYieldTagName} declaration present but yield expression not available in function.`);\n }\n }\n\n if (next) {\n const [\n preferredNextTagName,\n nextTag,\n ] = checkTagName(\n utils, report, 'next',\n );\n if (preferredNextTagName) {\n const shouldReportNext = () => {\n if (\n /** @type {import('comment-parser').Spec} */ (\n nextTag\n ).type.trim() === 'never'\n ) {\n if (utils.hasYieldReturnValue()) {\n report(`JSDoc @${preferredNextTagName} declaration set with \"never\" but yield expression with return value is present in function.`);\n }\n\n return false;\n }\n\n if (checkGeneratorsOnly && !utils.isGenerator()) {\n return true;\n }\n\n return !utils.mayBeUndefinedTypeTag(\n /** @type {import('comment-parser').Spec} */\n (nextTag),\n ) && !utils.hasYieldReturnValue();\n };\n\n if (shouldReportNext()) {\n report(`JSDoc @${preferredNextTagName} declaration present but yield expression with return value not available in function.`);\n }\n }\n }\n}, {\n meta: {\n docs: {\n description: 'Ensures that if a `@yields` is present that a `yield` (or `yield` with a value) is present in the function body (or that if a `@next` is present that there is a yield with a return value present).',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-yields-check.md#repos-sticky-header',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n checkGeneratorsOnly: {\n default: false,\n description: `Avoids checking the function body and merely insists\nthat all generators have \\`@yields\\`. This can be an optimization with the\nESLint \\`require-yield\\` rule, as that rule already ensures a \\`yield\\` is\npresent in generators, albeit assuming the generator is not empty).\nDefaults to \\`false\\`.`,\n type: 'boolean',\n },\n contexts: {\n description: `Set this to an array of strings representing the AST context\n(or objects with optional \\`context\\` and \\`comment\\` properties) where you wish\nthe rule to be applied.\n\n\\`context\\` defaults to \\`any\\` and \\`comment\\` defaults to no specific comment context.\n\nOverrides the default contexts (\\`ArrowFunctionExpression\\`, \\`FunctionDeclaration\\`,\n\\`FunctionExpression\\`).`,\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 next: {\n default: false,\n description: `If \\`true\\`, this option will insist that any use of a (non-standard)\n\\`@next\\` tag (in addition to any \\`@yields\\` tag) will be matched by a \\`yield\\`\nwhich uses a return value in the body of the generator (e.g.,\n\\`const rv = yield;\\` or \\`const rv = yield value;\\`). This (non-standard)\ntag is intended to be used to indicate a type and/or description of\nthe value expected to be supplied by the user when supplied to the iterator\nby its \\`next\\` method, as with \\`it.next(value)\\` (with the iterator being\nthe \\`Generator\\` iterator that is returned by the call to the generator\nfunction). This option will report an error if the generator function body\nmerely has plain \\`yield;\\` or \\`yield value;\\` statements without returning\nthe values. Defaults to \\`false\\`.`,\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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","ignoreList":[]}
|
package/dist/rules/sortTags.cjs
CHANGED
|
@@ -402,7 +402,7 @@ var _default = exports.default = (0, _iterateJsdoc.default)(({
|
|
|
402
402
|
iterateAllJsdocs: true,
|
|
403
403
|
meta: {
|
|
404
404
|
docs: {
|
|
405
|
-
description: 'Sorts tags by a specified sequence according to tag name.',
|
|
405
|
+
description: 'Sorts tags by a specified sequence according to tag name, optionally adding line breaks between tag groups.',
|
|
406
406
|
url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/sort-tags.md#repos-sticky-header'
|
|
407
407
|
},
|
|
408
408
|
fixable: 'code',
|
|
@@ -410,22 +410,221 @@ var _default = exports.default = (0, _iterateJsdoc.default)(({
|
|
|
410
410
|
additionalProperties: false,
|
|
411
411
|
properties: {
|
|
412
412
|
alphabetizeExtras: {
|
|
413
|
+
description: `Defaults to \`false\`. Alphabetizes any items not within \`tagSequence\` after any
|
|
414
|
+
items within \`tagSequence\` (or in place of the special \`-other\` pseudo-tag)
|
|
415
|
+
are sorted.
|
|
416
|
+
|
|
417
|
+
If you want all your tags alphabetized, you can supply an empty array for
|
|
418
|
+
\`tagSequence\` along with setting this option to \`true\`.`,
|
|
413
419
|
type: 'boolean'
|
|
414
420
|
},
|
|
415
421
|
linesBetween: {
|
|
422
|
+
description: `Indicates the number of lines to be added between tag groups. Defaults to 1.
|
|
423
|
+
Do not set to 0 or 2+ if you are using \`tag-lines\` and \`"always"\` and do not
|
|
424
|
+
set to 1+ if you are using \`tag-lines\` and \`"never"\`.`,
|
|
416
425
|
type: 'integer'
|
|
417
426
|
},
|
|
418
427
|
reportIntraTagGroupSpacing: {
|
|
428
|
+
description: `Whether to enable reporting and fixing of line breaks within tags of a given
|
|
429
|
+
tag group. Defaults to \`true\` which will remove any line breaks at the end of
|
|
430
|
+
such tags. Do not use with \`true\` if you are using \`tag-lines\` and \`always\`.`,
|
|
419
431
|
type: 'boolean'
|
|
420
432
|
},
|
|
421
433
|
reportTagGroupSpacing: {
|
|
434
|
+
description: `Whether to enable reporting and fixing of line breaks between tag groups
|
|
435
|
+
as set by \`linesBetween\`. Defaults to \`true\`. Note that the very last tag
|
|
436
|
+
will not have spacing applied regardless. For adding line breaks there, you
|
|
437
|
+
may wish to use the \`endLines\` option of the \`tag-lines\` rule.`,
|
|
422
438
|
type: 'boolean'
|
|
423
439
|
},
|
|
424
440
|
tagSequence: {
|
|
441
|
+
description: `An array of tag group objects indicating the preferred sequence for sorting tags.
|
|
442
|
+
|
|
443
|
+
Each item in the array should be an object with a \`tags\` property set to an array
|
|
444
|
+
of tag names.
|
|
445
|
+
|
|
446
|
+
Tag names earlier in the list will be arranged first. The relative position of
|
|
447
|
+
tags of the same name will not be changed.
|
|
448
|
+
|
|
449
|
+
Earlier groups will also be arranged before later groups, but with the added
|
|
450
|
+
feature that additional line breaks may be added between (or before or after)
|
|
451
|
+
such groups (depending on the setting of \`linesBetween\`).
|
|
452
|
+
|
|
453
|
+
Tag names not in the list will be grouped together at the end. The pseudo-tag
|
|
454
|
+
\`-other\` can be used to place them anywhere else if desired. The tags will be
|
|
455
|
+
placed in their order of appearance, or alphabetized if \`alphabetizeExtras\`
|
|
456
|
+
is enabled, see more below about that option.
|
|
457
|
+
|
|
458
|
+
Defaults to the array below (noting that it is just a single tag group with
|
|
459
|
+
no lines between groups by default).
|
|
460
|
+
|
|
461
|
+
Please note that this order is still experimental, so if you want to retain
|
|
462
|
+
a fixed order that doesn't change into the future, supply your own
|
|
463
|
+
\`tagSequence\`.
|
|
464
|
+
|
|
465
|
+
\`\`\`js
|
|
466
|
+
[{tags: [
|
|
467
|
+
// Brief descriptions
|
|
468
|
+
'summary',
|
|
469
|
+
'typeSummary',
|
|
470
|
+
|
|
471
|
+
// Module/file-level
|
|
472
|
+
'module',
|
|
473
|
+
'exports',
|
|
474
|
+
'file',
|
|
475
|
+
'fileoverview',
|
|
476
|
+
'overview',
|
|
477
|
+
'import',
|
|
478
|
+
|
|
479
|
+
// Identifying (name, type)
|
|
480
|
+
'typedef',
|
|
481
|
+
'interface',
|
|
482
|
+
'record',
|
|
483
|
+
'template',
|
|
484
|
+
'name',
|
|
485
|
+
'kind',
|
|
486
|
+
'type',
|
|
487
|
+
'alias',
|
|
488
|
+
'external',
|
|
489
|
+
'host',
|
|
490
|
+
'callback',
|
|
491
|
+
'func',
|
|
492
|
+
'function',
|
|
493
|
+
'method',
|
|
494
|
+
'class',
|
|
495
|
+
'constructor',
|
|
496
|
+
|
|
497
|
+
// Relationships
|
|
498
|
+
'modifies',
|
|
499
|
+
'mixes',
|
|
500
|
+
'mixin',
|
|
501
|
+
'mixinClass',
|
|
502
|
+
'mixinFunction',
|
|
503
|
+
'namespace',
|
|
504
|
+
'borrows',
|
|
505
|
+
'constructs',
|
|
506
|
+
'lends',
|
|
507
|
+
'implements',
|
|
508
|
+
'requires',
|
|
509
|
+
|
|
510
|
+
// Long descriptions
|
|
511
|
+
'desc',
|
|
512
|
+
'description',
|
|
513
|
+
'classdesc',
|
|
514
|
+
'tutorial',
|
|
515
|
+
'copyright',
|
|
516
|
+
'license',
|
|
517
|
+
|
|
518
|
+
// Simple annotations
|
|
519
|
+
'const',
|
|
520
|
+
'constant',
|
|
521
|
+
'final',
|
|
522
|
+
'global',
|
|
523
|
+
'readonly',
|
|
524
|
+
'abstract',
|
|
525
|
+
'virtual',
|
|
526
|
+
'var',
|
|
527
|
+
'member',
|
|
528
|
+
'memberof',
|
|
529
|
+
'memberof!',
|
|
530
|
+
'inner',
|
|
531
|
+
'instance',
|
|
532
|
+
'inheritdoc',
|
|
533
|
+
'inheritDoc',
|
|
534
|
+
'override',
|
|
535
|
+
'hideconstructor',
|
|
536
|
+
|
|
537
|
+
// Core function/object info
|
|
538
|
+
'param',
|
|
539
|
+
'arg',
|
|
540
|
+
'argument',
|
|
541
|
+
'prop',
|
|
542
|
+
'property',
|
|
543
|
+
'return',
|
|
544
|
+
'returns',
|
|
545
|
+
|
|
546
|
+
// Important behavior details
|
|
547
|
+
'async',
|
|
548
|
+
'generator',
|
|
549
|
+
'default',
|
|
550
|
+
'defaultvalue',
|
|
551
|
+
'enum',
|
|
552
|
+
'augments',
|
|
553
|
+
'extends',
|
|
554
|
+
'throws',
|
|
555
|
+
'exception',
|
|
556
|
+
'yield',
|
|
557
|
+
'yields',
|
|
558
|
+
'event',
|
|
559
|
+
'fires',
|
|
560
|
+
'emits',
|
|
561
|
+
'listens',
|
|
562
|
+
'this',
|
|
563
|
+
|
|
564
|
+
// Access
|
|
565
|
+
'static',
|
|
566
|
+
'private',
|
|
567
|
+
'protected',
|
|
568
|
+
'public',
|
|
569
|
+
'access',
|
|
570
|
+
'package',
|
|
571
|
+
|
|
572
|
+
'-other',
|
|
573
|
+
|
|
574
|
+
// Supplementary descriptions
|
|
575
|
+
'see',
|
|
576
|
+
'example',
|
|
577
|
+
|
|
578
|
+
// METADATA
|
|
579
|
+
|
|
580
|
+
// Other Closure (undocumented) metadata
|
|
581
|
+
'closurePrimitive',
|
|
582
|
+
'customElement',
|
|
583
|
+
'expose',
|
|
584
|
+
'hidden',
|
|
585
|
+
'idGenerator',
|
|
586
|
+
'meaning',
|
|
587
|
+
'ngInject',
|
|
588
|
+
'owner',
|
|
589
|
+
'wizaction',
|
|
590
|
+
|
|
591
|
+
// Other Closure (documented) metadata
|
|
592
|
+
'define',
|
|
593
|
+
'dict',
|
|
594
|
+
'export',
|
|
595
|
+
'externs',
|
|
596
|
+
'implicitCast',
|
|
597
|
+
'noalias',
|
|
598
|
+
'nocollapse',
|
|
599
|
+
'nocompile',
|
|
600
|
+
'noinline',
|
|
601
|
+
'nosideeffects',
|
|
602
|
+
'polymer',
|
|
603
|
+
'polymerBehavior',
|
|
604
|
+
'preserve',
|
|
605
|
+
'struct',
|
|
606
|
+
'suppress',
|
|
607
|
+
'unrestricted',
|
|
608
|
+
|
|
609
|
+
// @homer0/prettier-plugin-jsdoc metadata
|
|
610
|
+
'category',
|
|
611
|
+
|
|
612
|
+
// Non-Closure metadata
|
|
613
|
+
'ignore',
|
|
614
|
+
'author',
|
|
615
|
+
'version',
|
|
616
|
+
'variation',
|
|
617
|
+
'since',
|
|
618
|
+
'deprecated',
|
|
619
|
+
'todo',
|
|
620
|
+
]}];
|
|
621
|
+
\`\`\`
|
|
622
|
+
`,
|
|
425
623
|
items: {
|
|
426
624
|
additionalProperties: false,
|
|
427
625
|
properties: {
|
|
428
626
|
tags: {
|
|
627
|
+
description: 'See description on `tagSequence`.',
|
|
429
628
|
items: {
|
|
430
629
|
type: 'string'
|
|
431
630
|
},
|