@depup/eslint-plugin-jsdoc 62.8.0-depup.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/LICENSE +24 -0
- package/README.md +33 -0
- package/changes.json +18 -0
- package/dist/WarnSettings.cjs +38 -0
- package/dist/WarnSettings.cjs.map +1 -0
- package/dist/WarnSettings.d.ts +17 -0
- package/dist/alignTransform.cjs +402 -0
- package/dist/alignTransform.cjs.map +1 -0
- package/dist/alignTransform.d.ts +34 -0
- package/dist/buildForbidRuleDefinition.cjs +101 -0
- package/dist/buildForbidRuleDefinition.cjs.map +1 -0
- package/dist/buildForbidRuleDefinition.d.ts +15 -0
- package/dist/buildRejectOrPreferRuleDefinition.cjs +352 -0
- package/dist/buildRejectOrPreferRuleDefinition.cjs.map +1 -0
- package/dist/buildRejectOrPreferRuleDefinition.d.ts +9 -0
- package/dist/cjs/WarnSettings.d.ts +16 -0
- package/dist/cjs/alignTransform.d.ts +33 -0
- package/dist/cjs/buildForbidRuleDefinition.d.ts +14 -0
- package/dist/cjs/buildRejectOrPreferRuleDefinition.d.ts +8 -0
- package/dist/cjs/defaultTagOrder.d.ts +4 -0
- package/dist/cjs/exportParser.d.ts +40 -0
- package/dist/cjs/getDefaultTagStructureForMode.d.ts +10 -0
- package/dist/cjs/getJsdocProcessorPlugin.d.cts +5 -0
- package/dist/cjs/getJsdocProcessorPlugin.d.ts +66 -0
- package/dist/cjs/index-cjs.d.ts +23 -0
- package/dist/cjs/index.cjs.d.cts +2 -0
- package/dist/cjs/iterateJsdoc.d.cts +7 -0
- package/dist/cjs/iterateJsdoc.d.ts +495 -0
- package/dist/cjs/jsdocUtils.d.ts +493 -0
- package/dist/cjs/rules/checkAccess.d.ts +2 -0
- package/dist/cjs/rules/checkAlignment.d.ts +2 -0
- package/dist/cjs/rules/checkExamples.d.ts +3 -0
- package/dist/cjs/rules/checkIndentation.d.ts +2 -0
- package/dist/cjs/rules/checkLineAlignment.d.ts +9 -0
- package/dist/cjs/rules/checkParamNames.d.ts +2 -0
- package/dist/cjs/rules/checkPropertyNames.d.ts +2 -0
- package/dist/cjs/rules/checkSyntax.d.ts +2 -0
- package/dist/cjs/rules/checkTagNames.d.ts +2 -0
- package/dist/cjs/rules/checkTemplateNames.d.ts +2 -0
- package/dist/cjs/rules/checkTypes.d.ts +7 -0
- package/dist/cjs/rules/checkValues.d.ts +2 -0
- package/dist/cjs/rules/convertToJsdocComments.d.ts +266 -0
- package/dist/cjs/rules/emptyTags.d.ts +2 -0
- package/dist/cjs/rules/escapeInlineTags.d.ts +2 -0
- package/dist/cjs/rules/implementsOnClasses.d.ts +2 -0
- package/dist/cjs/rules/importsAsDependencies.d.ts +2 -0
- package/dist/cjs/rules/informativeDocs.d.ts +2 -0
- package/dist/cjs/rules/linesBeforeBlock.d.ts +2 -0
- package/dist/cjs/rules/matchDescription.d.ts +2 -0
- package/dist/cjs/rules/matchName.d.ts +2 -0
- package/dist/cjs/rules/multilineBlocks.d.ts +2 -0
- package/dist/cjs/rules/noBadBlocks.d.ts +2 -0
- package/dist/cjs/rules/noBlankBlockDescriptions.d.ts +2 -0
- package/dist/cjs/rules/noBlankBlocks.d.ts +2 -0
- package/dist/cjs/rules/noDefaults.d.ts +2 -0
- package/dist/cjs/rules/noMissingSyntax.d.ts +9 -0
- package/dist/cjs/rules/noMultiAsterisks.d.ts +2 -0
- package/dist/cjs/rules/noRestrictedSyntax.d.ts +2 -0
- package/dist/cjs/rules/noTypes.d.ts +2 -0
- package/dist/cjs/rules/noUndefinedTypes.d.ts +2 -0
- package/dist/cjs/rules/preferImportTag.d.ts +2 -0
- package/dist/cjs/rules/requireAsteriskPrefix.d.ts +2 -0
- package/dist/cjs/rules/requireDescription.d.ts +2 -0
- package/dist/cjs/rules/requireDescriptionCompleteSentence.d.ts +2 -0
- package/dist/cjs/rules/requireExample.d.ts +2 -0
- package/dist/cjs/rules/requireFileOverview.d.ts +2 -0
- package/dist/cjs/rules/requireHyphenBeforeParamDescription.d.ts +2 -0
- package/dist/cjs/rules/requireJsdoc.d.ts +24 -0
- package/dist/cjs/rules/requireParam.d.ts +3 -0
- package/dist/cjs/rules/requireParamDescription.d.ts +2 -0
- package/dist/cjs/rules/requireParamName.d.ts +2 -0
- package/dist/cjs/rules/requireParamType.d.ts +2 -0
- package/dist/cjs/rules/requireProperty.d.ts +2 -0
- package/dist/cjs/rules/requirePropertyDescription.d.ts +2 -0
- package/dist/cjs/rules/requirePropertyName.d.ts +2 -0
- package/dist/cjs/rules/requirePropertyType.d.ts +2 -0
- package/dist/cjs/rules/requireRejects.d.ts +2 -0
- package/dist/cjs/rules/requireReturns.d.ts +2 -0
- package/dist/cjs/rules/requireReturnsCheck.d.ts +2 -0
- package/dist/cjs/rules/requireReturnsDescription.d.ts +2 -0
- package/dist/cjs/rules/requireReturnsType.d.ts +2 -0
- package/dist/cjs/rules/requireTags.d.ts +2 -0
- package/dist/cjs/rules/requireTemplate.d.ts +2 -0
- package/dist/cjs/rules/requireThrows.d.ts +2 -0
- package/dist/cjs/rules/requireYields.d.ts +2 -0
- package/dist/cjs/rules/requireYieldsCheck.d.ts +2 -0
- package/dist/cjs/rules/sortTags.d.ts +2 -0
- package/dist/cjs/rules/tagLines.d.ts +2 -0
- package/dist/cjs/rules/textEscaping.d.ts +2 -0
- package/dist/cjs/rules/tsMethodSignatureStyle.d.ts +2 -0
- package/dist/cjs/rules/tsNoEmptyObjectType.d.ts +2 -0
- package/dist/cjs/rules/tsNoUnnecessaryTemplateExpression.d.ts +2 -0
- package/dist/cjs/rules/tsPreferFunctionType.d.ts +2 -0
- package/dist/cjs/rules/typeFormatting.d.ts +2 -0
- package/dist/cjs/rules/validTypes.d.ts +2 -0
- package/dist/cjs/tagNames.d.ts +15 -0
- package/dist/cjs/utils/hasReturnValue.d.ts +19 -0
- package/dist/defaultTagOrder.cjs +46 -0
- package/dist/defaultTagOrder.cjs.map +1 -0
- package/dist/defaultTagOrder.d.ts +5 -0
- package/dist/exportParser.cjs +732 -0
- package/dist/exportParser.cjs.map +1 -0
- package/dist/exportParser.d.ts +41 -0
- package/dist/generateDocs.cjs +342 -0
- package/dist/generateDocs.cjs.map +1 -0
- package/dist/generateOptions.cjs +62 -0
- package/dist/generateOptions.cjs.map +1 -0
- package/dist/generateRule.cjs +248 -0
- package/dist/generateRule.cjs.map +1 -0
- package/dist/generateRuleTypes.cjs +24 -0
- package/dist/generateRuleTypes.cjs.map +1 -0
- package/dist/getDefaultTagStructureForMode.cjs +289 -0
- package/dist/getDefaultTagStructureForMode.cjs.map +1 -0
- package/dist/getDefaultTagStructureForMode.d.ts +11 -0
- package/dist/getJsdocProcessorPlugin.cjs +587 -0
- package/dist/getJsdocProcessorPlugin.cjs.map +1 -0
- package/dist/getJsdocProcessorPlugin.cts +5 -0
- package/dist/getJsdocProcessorPlugin.d.ts +67 -0
- package/dist/index-cjs.cjs +595 -0
- package/dist/index-cjs.cjs.map +1 -0
- package/dist/index-cjs.d.ts +24 -0
- package/dist/index-esm.cjs +162 -0
- package/dist/index-esm.cjs.map +1 -0
- package/dist/index-esm.d.ts +72 -0
- package/dist/index.cjs +743 -0
- package/dist/index.cjs.cts +3 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +93 -0
- package/dist/iterateJsdoc.cjs +2150 -0
- package/dist/iterateJsdoc.cjs.map +1 -0
- package/dist/iterateJsdoc.cts +7 -0
- package/dist/iterateJsdoc.d.ts +496 -0
- package/dist/jsdocUtils.cjs +1725 -0
- package/dist/jsdocUtils.cjs.map +1 -0
- package/dist/jsdocUtils.d.ts +494 -0
- package/dist/rules/checkAccess.cjs +40 -0
- package/dist/rules/checkAccess.cjs.map +1 -0
- package/dist/rules/checkAccess.d.ts +3 -0
- package/dist/rules/checkAlignment.cjs +78 -0
- package/dist/rules/checkAlignment.cjs.map +1 -0
- package/dist/rules/checkAlignment.d.ts +3 -0
- package/dist/rules/checkExamples.cjs +521 -0
- package/dist/rules/checkExamples.cjs.map +1 -0
- package/dist/rules/checkExamples.d.ts +4 -0
- package/dist/rules/checkIndentation.cjs +170 -0
- package/dist/rules/checkIndentation.cjs.map +1 -0
- package/dist/rules/checkIndentation.d.ts +3 -0
- package/dist/rules/checkLineAlignment.cjs +398 -0
- package/dist/rules/checkLineAlignment.cjs.map +1 -0
- package/dist/rules/checkLineAlignment.d.ts +10 -0
- package/dist/rules/checkParamNames.cjs +407 -0
- package/dist/rules/checkParamNames.cjs.map +1 -0
- package/dist/rules/checkParamNames.d.ts +3 -0
- package/dist/rules/checkPropertyNames.cjs +135 -0
- package/dist/rules/checkPropertyNames.cjs.map +1 -0
- package/dist/rules/checkPropertyNames.d.ts +3 -0
- package/dist/rules/checkSyntax.cjs +38 -0
- package/dist/rules/checkSyntax.cjs.map +1 -0
- package/dist/rules/checkSyntax.d.ts +3 -0
- package/dist/rules/checkTagNames.cjs +312 -0
- package/dist/rules/checkTagNames.cjs.map +1 -0
- package/dist/rules/checkTagNames.d.ts +3 -0
- package/dist/rules/checkTemplateNames.cjs +185 -0
- package/dist/rules/checkTemplateNames.cjs.map +1 -0
- package/dist/rules/checkTemplateNames.d.ts +3 -0
- package/dist/rules/checkTypes.cjs +111 -0
- package/dist/rules/checkTypes.cjs.map +1 -0
- package/dist/rules/checkTypes.d.ts +8 -0
- package/dist/rules/checkValues.cjs +166 -0
- package/dist/rules/checkValues.cjs.map +1 -0
- package/dist/rules/checkValues.d.ts +3 -0
- package/dist/rules/convertToJsdocComments.cjs +356 -0
- package/dist/rules/convertToJsdocComments.cjs.map +1 -0
- package/dist/rules/convertToJsdocComments.d.ts +267 -0
- package/dist/rules/emptyTags.cjs +85 -0
- package/dist/rules/emptyTags.cjs.map +1 -0
- package/dist/rules/emptyTags.d.ts +3 -0
- package/dist/rules/escapeInlineTags.cjs +149 -0
- package/dist/rules/escapeInlineTags.cjs.map +1 -0
- package/dist/rules/escapeInlineTags.d.ts +3 -0
- package/dist/rules/implementsOnClasses.cjs +74 -0
- package/dist/rules/implementsOnClasses.cjs.map +1 -0
- package/dist/rules/implementsOnClasses.d.ts +3 -0
- package/dist/rules/importsAsDependencies.cjs +104 -0
- package/dist/rules/importsAsDependencies.cjs.map +1 -0
- package/dist/rules/importsAsDependencies.d.ts +3 -0
- package/dist/rules/informativeDocs.cjs +187 -0
- package/dist/rules/informativeDocs.cjs.map +1 -0
- package/dist/rules/informativeDocs.d.ts +3 -0
- package/dist/rules/linesBeforeBlock.cjs +120 -0
- package/dist/rules/linesBeforeBlock.cjs.map +1 -0
- package/dist/rules/linesBeforeBlock.d.ts +3 -0
- package/dist/rules/matchDescription.cjs +356 -0
- package/dist/rules/matchDescription.cjs.map +1 -0
- package/dist/rules/matchDescription.d.ts +3 -0
- package/dist/rules/matchName.cjs +160 -0
- package/dist/rules/matchName.cjs.map +1 -0
- package/dist/rules/matchName.d.ts +3 -0
- package/dist/rules/multilineBlocks.cjs +431 -0
- package/dist/rules/multilineBlocks.cjs.map +1 -0
- package/dist/rules/multilineBlocks.d.ts +3 -0
- package/dist/rules/noBadBlocks.cjs +100 -0
- package/dist/rules/noBadBlocks.cjs.map +1 -0
- package/dist/rules/noBadBlocks.d.ts +3 -0
- package/dist/rules/noBlankBlockDescriptions.cjs +63 -0
- package/dist/rules/noBlankBlockDescriptions.cjs.map +1 -0
- package/dist/rules/noBlankBlockDescriptions.d.ts +3 -0
- package/dist/rules/noBlankBlocks.cjs +54 -0
- package/dist/rules/noBlankBlocks.cjs.map +1 -0
- package/dist/rules/noBlankBlocks.d.ts +3 -0
- package/dist/rules/noDefaults.cjs +102 -0
- package/dist/rules/noDefaults.cjs.map +1 -0
- package/dist/rules/noDefaults.d.ts +3 -0
- package/dist/rules/noMissingSyntax.cjs +196 -0
- package/dist/rules/noMissingSyntax.cjs.map +1 -0
- package/dist/rules/noMissingSyntax.d.ts +10 -0
- package/dist/rules/noMultiAsterisks.cjs +126 -0
- package/dist/rules/noMultiAsterisks.cjs.map +1 -0
- package/dist/rules/noMultiAsterisks.d.ts +3 -0
- package/dist/rules/noRestrictedSyntax.cjs +68 -0
- package/dist/rules/noRestrictedSyntax.cjs.map +1 -0
- package/dist/rules/noRestrictedSyntax.d.ts +3 -0
- package/dist/rules/noTypes.cjs +101 -0
- package/dist/rules/noTypes.cjs.map +1 -0
- package/dist/rules/noTypes.d.ts +3 -0
- package/dist/rules/noUndefinedTypes.cjs +588 -0
- package/dist/rules/noUndefinedTypes.cjs.map +1 -0
- package/dist/rules/noUndefinedTypes.d.ts +3 -0
- package/dist/rules/preferImportTag.cjs +362 -0
- package/dist/rules/preferImportTag.cjs.map +1 -0
- package/dist/rules/preferImportTag.d.ts +3 -0
- package/dist/rules/requireAsteriskPrefix.cjs +190 -0
- package/dist/rules/requireAsteriskPrefix.cjs.map +1 -0
- package/dist/rules/requireAsteriskPrefix.d.ts +3 -0
- package/dist/rules/requireDescription.cjs +164 -0
- package/dist/rules/requireDescription.cjs.map +1 -0
- package/dist/rules/requireDescription.d.ts +3 -0
- package/dist/rules/requireDescriptionCompleteSentence.cjs +321 -0
- package/dist/rules/requireDescriptionCompleteSentence.cjs.map +1 -0
- package/dist/rules/requireDescriptionCompleteSentence.d.ts +3 -0
- package/dist/rules/requireExample.cjs +133 -0
- package/dist/rules/requireExample.cjs.map +1 -0
- package/dist/rules/requireExample.d.ts +3 -0
- package/dist/rules/requireFileOverview.cjs +194 -0
- package/dist/rules/requireFileOverview.cjs.map +1 -0
- package/dist/rules/requireFileOverview.d.ts +3 -0
- package/dist/rules/requireHyphenBeforeParamDescription.cjs +166 -0
- package/dist/rules/requireHyphenBeforeParamDescription.cjs.map +1 -0
- package/dist/rules/requireHyphenBeforeParamDescription.d.ts +3 -0
- package/dist/rules/requireJsdoc.cjs +722 -0
- package/dist/rules/requireJsdoc.cjs.map +1 -0
- package/dist/rules/requireJsdoc.d.ts +25 -0
- package/dist/rules/requireParam.cjs +772 -0
- package/dist/rules/requireParam.cjs.map +1 -0
- package/dist/rules/requireParam.d.ts +4 -0
- package/dist/rules/requireParamDescription.cjs +105 -0
- package/dist/rules/requireParamDescription.cjs.map +1 -0
- package/dist/rules/requireParamDescription.d.ts +3 -0
- package/dist/rules/requireParamName.cjs +68 -0
- package/dist/rules/requireParamName.cjs.map +1 -0
- package/dist/rules/requireParamName.d.ts +3 -0
- package/dist/rules/requireParamType.cjs +104 -0
- package/dist/rules/requireParamType.cjs.map +1 -0
- package/dist/rules/requireParamType.d.ts +3 -0
- package/dist/rules/requireProperty.cjs +63 -0
- package/dist/rules/requireProperty.cjs.map +1 -0
- package/dist/rules/requireProperty.d.ts +3 -0
- package/dist/rules/requirePropertyDescription.cjs +29 -0
- package/dist/rules/requirePropertyDescription.cjs.map +1 -0
- package/dist/rules/requirePropertyDescription.d.ts +3 -0
- package/dist/rules/requirePropertyName.cjs +29 -0
- package/dist/rules/requirePropertyName.cjs.map +1 -0
- package/dist/rules/requirePropertyName.d.ts +3 -0
- package/dist/rules/requirePropertyType.cjs +29 -0
- package/dist/rules/requirePropertyType.cjs.map +1 -0
- package/dist/rules/requirePropertyType.d.ts +3 -0
- package/dist/rules/requireRejects.cjs +226 -0
- package/dist/rules/requireRejects.cjs.map +1 -0
- package/dist/rules/requireRejects.d.ts +3 -0
- package/dist/rules/requireReturns.cjs +262 -0
- package/dist/rules/requireReturns.cjs.map +1 -0
- package/dist/rules/requireReturns.d.ts +3 -0
- package/dist/rules/requireReturnsCheck.cjs +140 -0
- package/dist/rules/requireReturnsCheck.cjs.map +1 -0
- package/dist/rules/requireReturnsCheck.d.ts +3 -0
- package/dist/rules/requireReturnsDescription.cjs +72 -0
- package/dist/rules/requireReturnsDescription.cjs.map +1 -0
- package/dist/rules/requireReturnsDescription.d.ts +3 -0
- package/dist/rules/requireReturnsType.cjs +68 -0
- package/dist/rules/requireReturnsType.cjs.map +1 -0
- package/dist/rules/requireReturnsType.d.ts +3 -0
- package/dist/rules/requireTags.cjs +74 -0
- package/dist/rules/requireTags.cjs.map +1 -0
- package/dist/rules/requireTags.d.ts +3 -0
- package/dist/rules/requireTemplate.cjs +220 -0
- package/dist/rules/requireTemplate.cjs.map +1 -0
- package/dist/rules/requireTemplate.d.ts +3 -0
- package/dist/rules/requireThrows.cjs +118 -0
- package/dist/rules/requireThrows.cjs.map +1 -0
- package/dist/rules/requireThrows.d.ts +3 -0
- package/dist/rules/requireYields.cjs +224 -0
- package/dist/rules/requireYields.cjs.map +1 -0
- package/dist/rules/requireYields.d.ts +3 -0
- package/dist/rules/requireYieldsCheck.cjs +179 -0
- package/dist/rules/requireYieldsCheck.cjs.map +1 -0
- package/dist/rules/requireYieldsCheck.d.ts +3 -0
- package/dist/rules/sortTags.cjs +656 -0
- package/dist/rules/sortTags.cjs.map +1 -0
- package/dist/rules/sortTags.d.ts +3 -0
- package/dist/rules/tagLines.cjs +374 -0
- package/dist/rules/tagLines.cjs.map +1 -0
- package/dist/rules/tagLines.d.ts +3 -0
- package/dist/rules/textEscaping.cjs +141 -0
- package/dist/rules/textEscaping.cjs.map +1 -0
- package/dist/rules/textEscaping.d.ts +3 -0
- package/dist/rules/tsMethodSignatureStyle.cjs +240 -0
- package/dist/rules/tsMethodSignatureStyle.cjs.map +1 -0
- package/dist/rules/tsMethodSignatureStyle.d.ts +3 -0
- package/dist/rules/tsNoEmptyObjectType.cjs +62 -0
- package/dist/rules/tsNoEmptyObjectType.cjs.map +1 -0
- package/dist/rules/tsNoEmptyObjectType.d.ts +3 -0
- package/dist/rules/tsNoUnnecessaryTemplateExpression.cjs +104 -0
- package/dist/rules/tsNoUnnecessaryTemplateExpression.cjs.map +1 -0
- package/dist/rules/tsNoUnnecessaryTemplateExpression.d.ts +3 -0
- package/dist/rules/tsPreferFunctionType.cjs +110 -0
- package/dist/rules/tsPreferFunctionType.cjs.map +1 -0
- package/dist/rules/tsPreferFunctionType.d.ts +3 -0
- package/dist/rules/typeFormatting.cjs +607 -0
- package/dist/rules/typeFormatting.cjs.map +1 -0
- package/dist/rules/typeFormatting.d.ts +3 -0
- package/dist/rules/validTypes.cjs +328 -0
- package/dist/rules/validTypes.cjs.map +1 -0
- package/dist/rules/validTypes.d.ts +3 -0
- package/dist/rules.d.ts +3203 -0
- package/dist/tagNames.cjs +244 -0
- package/dist/tagNames.cjs.map +1 -0
- package/dist/tagNames.d.ts +16 -0
- package/dist/to-valid-identifier.cjs +263 -0
- package/dist/utils/hasReturnValue.cjs +495 -0
- package/dist/utils/hasReturnValue.cjs.map +1 -0
- package/dist/utils/hasReturnValue.d.ts +20 -0
- package/package.json +220 -0
- package/rollup.config.js +16 -0
- package/src/WarnSettings.js +34 -0
- package/src/alignTransform.js +444 -0
- package/src/buildForbidRuleDefinition.js +106 -0
- package/src/buildRejectOrPreferRuleDefinition.js +481 -0
- package/src/defaultTagOrder.js +169 -0
- package/src/exportParser.js +973 -0
- package/src/getDefaultTagStructureForMode.js +968 -0
- package/src/getJsdocProcessorPlugin.cts +5 -0
- package/src/getJsdocProcessorPlugin.js +692 -0
- package/src/index-cjs.js +755 -0
- package/src/index-esm.js +196 -0
- package/src/index.cjs.cts +3 -0
- package/src/index.js +940 -0
- package/src/iterateJsdoc.cts +7 -0
- package/src/iterateJsdoc.js +2612 -0
- package/src/jsdocUtils.js +2158 -0
- package/src/rules/checkAccess.js +45 -0
- package/src/rules/checkAlignment.js +82 -0
- package/src/rules/checkExamples.js +613 -0
- package/src/rules/checkIndentation.js +176 -0
- package/src/rules/checkLineAlignment.js +453 -0
- package/src/rules/checkParamNames.js +541 -0
- package/src/rules/checkPropertyNames.js +174 -0
- package/src/rules/checkSyntax.js +30 -0
- package/src/rules/checkTagNames.js +414 -0
- package/src/rules/checkTemplateNames.js +208 -0
- package/src/rules/checkTypes.js +130 -0
- package/src/rules/checkValues.js +264 -0
- package/src/rules/convertToJsdocComments.js +444 -0
- package/src/rules/emptyTags.js +106 -0
- package/src/rules/escapeInlineTags.js +189 -0
- package/src/rules/implementsOnClasses.js +78 -0
- package/src/rules/importsAsDependencies.js +132 -0
- package/src/rules/informativeDocs.js +228 -0
- package/src/rules/linesBeforeBlock.js +144 -0
- package/src/rules/matchDescription.js +413 -0
- package/src/rules/matchName.js +179 -0
- package/src/rules/multilineBlocks.js +562 -0
- package/src/rules/noBadBlocks.js +127 -0
- package/src/rules/noBlankBlockDescriptions.js +69 -0
- package/src/rules/noBlankBlocks.js +55 -0
- package/src/rules/noDefaults.js +104 -0
- package/src/rules/noMissingSyntax.js +215 -0
- package/src/rules/noMultiAsterisks.js +162 -0
- package/src/rules/noRestrictedSyntax.js +72 -0
- package/src/rules/noTypes.js +108 -0
- package/src/rules/noUndefinedTypes.js +797 -0
- package/src/rules/preferImportTag.js +521 -0
- package/src/rules/requireAsteriskPrefix.js +217 -0
- package/src/rules/requireDescription.js +190 -0
- package/src/rules/requireDescriptionCompleteSentence.js +376 -0
- package/src/rules/requireExample.js +143 -0
- package/src/rules/requireFileOverview.js +213 -0
- package/src/rules/requireHyphenBeforeParamDescription.js +210 -0
- package/src/rules/requireJsdoc.js +897 -0
- package/src/rules/requireParam.js +848 -0
- package/src/rules/requireParamDescription.js +110 -0
- package/src/rules/requireParamName.js +69 -0
- package/src/rules/requireParamType.js +109 -0
- package/src/rules/requireProperty.js +66 -0
- package/src/rules/requirePropertyDescription.js +25 -0
- package/src/rules/requirePropertyName.js +25 -0
- package/src/rules/requirePropertyType.js +25 -0
- package/src/rules/requireRejects.js +246 -0
- package/src/rules/requireReturns.js +291 -0
- package/src/rules/requireReturnsCheck.js +180 -0
- package/src/rules/requireReturnsDescription.js +73 -0
- package/src/rules/requireReturnsType.js +65 -0
- package/src/rules/requireTags.js +85 -0
- package/src/rules/requireTemplate.js +246 -0
- package/src/rules/requireThrows.js +128 -0
- package/src/rules/requireYields.js +265 -0
- package/src/rules/requireYieldsCheck.js +226 -0
- package/src/rules/sortTags.js +766 -0
- package/src/rules/tagLines.js +486 -0
- package/src/rules/textEscaping.js +158 -0
- package/src/rules/tsMethodSignatureStyle.js +300 -0
- package/src/rules/tsNoEmptyObjectType.js +61 -0
- package/src/rules/tsNoUnnecessaryTemplateExpression.js +130 -0
- package/src/rules/tsPreferFunctionType.js +127 -0
- package/src/rules/typeFormatting.js +690 -0
- package/src/rules/validTypes.js +466 -0
- package/src/rules.d.ts +3203 -0
- package/src/tagNames.js +301 -0
- package/src/utils/hasReturnValue.js +572 -0
- package/typings/babel__eslint-parser.d.ts +1 -0
- package/typings/gitdown.d.ts +16 -0
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import iterateJsdoc from '../iterateJsdoc.js';
|
|
2
|
+
|
|
3
|
+
const anyWhitespaceLines = /^\s*$/v;
|
|
4
|
+
const atLeastTwoLinesWhitespace = /^[ \t]*\n[ \t]*\n\s*$/v;
|
|
5
|
+
|
|
6
|
+
export default iterateJsdoc(({
|
|
7
|
+
jsdoc,
|
|
8
|
+
utils,
|
|
9
|
+
}) => {
|
|
10
|
+
const {
|
|
11
|
+
description,
|
|
12
|
+
descriptions,
|
|
13
|
+
lastDescriptionLine,
|
|
14
|
+
} = utils.getDescription();
|
|
15
|
+
|
|
16
|
+
const regex = jsdoc.tags.length ?
|
|
17
|
+
anyWhitespaceLines :
|
|
18
|
+
atLeastTwoLinesWhitespace;
|
|
19
|
+
|
|
20
|
+
if (descriptions.length && regex.test(description)) {
|
|
21
|
+
if (jsdoc.tags.length) {
|
|
22
|
+
utils.reportJSDoc(
|
|
23
|
+
'There should be no blank lines in block descriptions followed by tags.',
|
|
24
|
+
{
|
|
25
|
+
line: lastDescriptionLine,
|
|
26
|
+
},
|
|
27
|
+
() => {
|
|
28
|
+
utils.setBlockDescription(() => {
|
|
29
|
+
// Remove all lines
|
|
30
|
+
return [];
|
|
31
|
+
});
|
|
32
|
+
},
|
|
33
|
+
);
|
|
34
|
+
} else {
|
|
35
|
+
utils.reportJSDoc(
|
|
36
|
+
'There should be no extra blank lines in block descriptions not followed by tags.',
|
|
37
|
+
{
|
|
38
|
+
line: lastDescriptionLine,
|
|
39
|
+
},
|
|
40
|
+
() => {
|
|
41
|
+
utils.setBlockDescription((info, seedTokens) => {
|
|
42
|
+
return [
|
|
43
|
+
// Keep the starting line
|
|
44
|
+
{
|
|
45
|
+
number: 0,
|
|
46
|
+
source: '',
|
|
47
|
+
tokens: seedTokens({
|
|
48
|
+
...info,
|
|
49
|
+
description: '',
|
|
50
|
+
}),
|
|
51
|
+
},
|
|
52
|
+
];
|
|
53
|
+
});
|
|
54
|
+
},
|
|
55
|
+
);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}, {
|
|
59
|
+
iterateAllJsdocs: true,
|
|
60
|
+
meta: {
|
|
61
|
+
docs: {
|
|
62
|
+
description: 'If tags are present, this rule will prevent empty lines in the block description. If no tags are present, this rule will prevent extra empty lines in the block description.',
|
|
63
|
+
url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-blank-block-descriptions.md#repos-sticky-header',
|
|
64
|
+
},
|
|
65
|
+
fixable: 'whitespace',
|
|
66
|
+
schema: [],
|
|
67
|
+
type: 'layout',
|
|
68
|
+
},
|
|
69
|
+
});
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import iterateJsdoc from '../iterateJsdoc.js';
|
|
2
|
+
|
|
3
|
+
export default iterateJsdoc(({
|
|
4
|
+
context,
|
|
5
|
+
jsdoc,
|
|
6
|
+
utils,
|
|
7
|
+
}) => {
|
|
8
|
+
if (jsdoc.tags.length) {
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
const {
|
|
13
|
+
description,
|
|
14
|
+
lastDescriptionLine,
|
|
15
|
+
} = utils.getDescription();
|
|
16
|
+
if (description.trim()) {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
const {
|
|
21
|
+
enableFixer,
|
|
22
|
+
} = context.options[0] || {};
|
|
23
|
+
|
|
24
|
+
utils.reportJSDoc(
|
|
25
|
+
'No empty blocks',
|
|
26
|
+
{
|
|
27
|
+
line: lastDescriptionLine,
|
|
28
|
+
},
|
|
29
|
+
enableFixer ? () => {
|
|
30
|
+
jsdoc.source.splice(0);
|
|
31
|
+
} : null,
|
|
32
|
+
);
|
|
33
|
+
}, {
|
|
34
|
+
iterateAllJsdocs: true,
|
|
35
|
+
meta: {
|
|
36
|
+
docs: {
|
|
37
|
+
description: 'Removes empty blocks with nothing but possibly line breaks',
|
|
38
|
+
url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-blank-blocks.md#repos-sticky-header',
|
|
39
|
+
},
|
|
40
|
+
fixable: 'code',
|
|
41
|
+
schema: [
|
|
42
|
+
{
|
|
43
|
+
additionalProperties: false,
|
|
44
|
+
properties: {
|
|
45
|
+
enableFixer: {
|
|
46
|
+
description: 'Whether or not to auto-remove the blank block. Defaults to `false`.',
|
|
47
|
+
type: 'boolean',
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
type: 'object',
|
|
51
|
+
},
|
|
52
|
+
],
|
|
53
|
+
type: 'suggestion',
|
|
54
|
+
},
|
|
55
|
+
});
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import iterateJsdoc from '../iterateJsdoc.js';
|
|
2
|
+
|
|
3
|
+
export default iterateJsdoc(({
|
|
4
|
+
context,
|
|
5
|
+
utils,
|
|
6
|
+
}) => {
|
|
7
|
+
const {
|
|
8
|
+
noOptionalParamNames,
|
|
9
|
+
} = context.options[0] || {};
|
|
10
|
+
const paramTags = utils.getPresentTags([
|
|
11
|
+
'param', 'arg', 'argument',
|
|
12
|
+
]);
|
|
13
|
+
for (const tag of paramTags) {
|
|
14
|
+
if (noOptionalParamNames && tag.optional) {
|
|
15
|
+
utils.reportJSDoc(`Optional param names are not permitted on @${tag.tag}.`, tag, () => {
|
|
16
|
+
utils.changeTag(tag, {
|
|
17
|
+
name: tag.name.replace(/([^=]*)(=.+)?/v, '$1'),
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
} else if (tag.default) {
|
|
21
|
+
utils.reportJSDoc(`Defaults are not permitted on @${tag.tag}.`, tag, () => {
|
|
22
|
+
utils.changeTag(tag, {
|
|
23
|
+
name: tag.name.replace(/([^=]*)(=.+)?/v, '[$1]'),
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
const defaultTags = utils.getPresentTags([
|
|
30
|
+
'default', 'defaultvalue',
|
|
31
|
+
]);
|
|
32
|
+
for (const tag of defaultTags) {
|
|
33
|
+
if (tag.description.trim()) {
|
|
34
|
+
utils.reportJSDoc(`Default values are not permitted on @${tag.tag}.`, tag, () => {
|
|
35
|
+
utils.changeTag(tag, {
|
|
36
|
+
description: '',
|
|
37
|
+
postTag: '',
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}, {
|
|
43
|
+
contextDefaults: true,
|
|
44
|
+
meta: {
|
|
45
|
+
docs: {
|
|
46
|
+
description: 'This rule reports defaults being used on the relevant portion of `@param` or `@default`.',
|
|
47
|
+
url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-defaults.md#repos-sticky-header',
|
|
48
|
+
},
|
|
49
|
+
fixable: 'code',
|
|
50
|
+
schema: [
|
|
51
|
+
{
|
|
52
|
+
additionalProperties: false,
|
|
53
|
+
properties: {
|
|
54
|
+
contexts: {
|
|
55
|
+
description: `Set this to an array of strings representing the AST context (or an object with
|
|
56
|
+
optional \`context\` and \`comment\` properties) where you wish the rule to be applied.
|
|
57
|
+
|
|
58
|
+
\`context\` defaults to \`any\` and \`comment\` defaults to no specific comment context.
|
|
59
|
+
|
|
60
|
+
Overrides the default contexts (\`ArrowFunctionExpression\`, \`FunctionDeclaration\`,
|
|
61
|
+
\`FunctionExpression\`). Set to \`"any"\` if you want
|
|
62
|
+
the rule to apply to any JSDoc block throughout your files (as is necessary
|
|
63
|
+
for finding function blocks not attached to a function declaration or
|
|
64
|
+
expression, i.e., \`@callback\` or \`@function\` (or its aliases \`@func\` or
|
|
65
|
+
\`@method\`) (including those associated with an \`@interface\`).
|
|
66
|
+
|
|
67
|
+
See the ["AST and Selectors"](../#advanced-ast-and-selectors)
|
|
68
|
+
section of our Advanced docs for more on the expected format.`,
|
|
69
|
+
items: {
|
|
70
|
+
anyOf: [
|
|
71
|
+
{
|
|
72
|
+
type: 'string',
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
additionalProperties: false,
|
|
76
|
+
properties: {
|
|
77
|
+
comment: {
|
|
78
|
+
type: 'string',
|
|
79
|
+
},
|
|
80
|
+
context: {
|
|
81
|
+
type: 'string',
|
|
82
|
+
},
|
|
83
|
+
},
|
|
84
|
+
type: 'object',
|
|
85
|
+
},
|
|
86
|
+
],
|
|
87
|
+
},
|
|
88
|
+
type: 'array',
|
|
89
|
+
},
|
|
90
|
+
noOptionalParamNames: {
|
|
91
|
+
description: `Set this to \`true\` to report the presence of optional parameters. May be
|
|
92
|
+
used if the project is insisting on optionality being indicated by
|
|
93
|
+
the presence of ES6 default parameters (bearing in mind that such
|
|
94
|
+
"defaults" are only applied when the supplied value is missing or
|
|
95
|
+
\`undefined\` but not for \`null\` or other "falsey" values).`,
|
|
96
|
+
type: 'boolean',
|
|
97
|
+
},
|
|
98
|
+
},
|
|
99
|
+
type: 'object',
|
|
100
|
+
},
|
|
101
|
+
],
|
|
102
|
+
type: 'suggestion',
|
|
103
|
+
},
|
|
104
|
+
});
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
import iterateJsdoc from '../iterateJsdoc.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @typedef {{
|
|
5
|
+
* comment: string,
|
|
6
|
+
* context: string,
|
|
7
|
+
* message: string,
|
|
8
|
+
* minimum: import('../iterateJsdoc.js').Integer
|
|
9
|
+
* }} ContextObject
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* @typedef {string|ContextObject} Context
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* @param {import('../iterateJsdoc.js').StateObject} state
|
|
18
|
+
* @returns {void}
|
|
19
|
+
*/
|
|
20
|
+
const setDefaults = (state) => {
|
|
21
|
+
if (!state.selectorMap) {
|
|
22
|
+
state.selectorMap = {};
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* @param {import('../iterateJsdoc.js').StateObject} state
|
|
28
|
+
* @param {string} selector
|
|
29
|
+
* @param {string} comment
|
|
30
|
+
* @returns {void}
|
|
31
|
+
*/
|
|
32
|
+
const incrementSelector = (state, selector, comment) => {
|
|
33
|
+
if (!state.selectorMap[selector]) {
|
|
34
|
+
state.selectorMap[selector] = {};
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
if (!state.selectorMap[selector][comment]) {
|
|
38
|
+
state.selectorMap[selector][comment] = 0;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
state.selectorMap[selector][comment]++;
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
export default iterateJsdoc(({
|
|
45
|
+
context,
|
|
46
|
+
info: {
|
|
47
|
+
comment,
|
|
48
|
+
},
|
|
49
|
+
state,
|
|
50
|
+
utils,
|
|
51
|
+
}) => {
|
|
52
|
+
if (!context.options[0]) {
|
|
53
|
+
// Handle error later
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* @type {Context[]}
|
|
59
|
+
*/
|
|
60
|
+
const contexts = context.options[0].contexts;
|
|
61
|
+
|
|
62
|
+
const {
|
|
63
|
+
contextStr,
|
|
64
|
+
} = utils.findContext(contexts, comment);
|
|
65
|
+
|
|
66
|
+
setDefaults(state);
|
|
67
|
+
|
|
68
|
+
incrementSelector(state, contextStr, String(comment));
|
|
69
|
+
}, {
|
|
70
|
+
contextSelected: true,
|
|
71
|
+
exit ({
|
|
72
|
+
context,
|
|
73
|
+
settings,
|
|
74
|
+
state,
|
|
75
|
+
}) {
|
|
76
|
+
if (!context.options.length && !settings.contexts) {
|
|
77
|
+
context.report({
|
|
78
|
+
loc: {
|
|
79
|
+
end: {
|
|
80
|
+
column: 1,
|
|
81
|
+
line: 1,
|
|
82
|
+
},
|
|
83
|
+
start: {
|
|
84
|
+
column: 1,
|
|
85
|
+
line: 1,
|
|
86
|
+
},
|
|
87
|
+
},
|
|
88
|
+
message: 'Rule `no-missing-syntax` is missing a `contexts` option.',
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
setDefaults(state);
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* @type {Context[]}
|
|
98
|
+
*/
|
|
99
|
+
const contexts = (context.options[0] ?? {}).contexts ?? settings?.contexts;
|
|
100
|
+
|
|
101
|
+
// Report when MISSING
|
|
102
|
+
contexts.some((cntxt) => {
|
|
103
|
+
const contextStr = typeof cntxt === 'object' ? cntxt.context ?? 'any' : cntxt;
|
|
104
|
+
const comment = typeof cntxt === 'string' ? '' : cntxt?.comment ?? '';
|
|
105
|
+
|
|
106
|
+
const contextKey = contextStr === 'any' ? 'undefined' : contextStr;
|
|
107
|
+
|
|
108
|
+
if (
|
|
109
|
+
(!state.selectorMap[contextKey] ||
|
|
110
|
+
!state.selectorMap[contextKey][comment] ||
|
|
111
|
+
state.selectorMap[contextKey][comment] < (
|
|
112
|
+
// @ts-expect-error comment would need an object, not string
|
|
113
|
+
cntxt?.minimum ?? 1
|
|
114
|
+
)) &&
|
|
115
|
+
(contextStr !== 'any' || Object.values(state.selectorMap).every((cmmnt) => {
|
|
116
|
+
return !cmmnt[comment] || cmmnt[comment] < (
|
|
117
|
+
// @ts-expect-error comment would need an object, not string
|
|
118
|
+
cntxt?.minimum ?? 1
|
|
119
|
+
);
|
|
120
|
+
}))
|
|
121
|
+
) {
|
|
122
|
+
const message = typeof cntxt === 'string' ?
|
|
123
|
+
'Syntax is required: {{context}}' :
|
|
124
|
+
cntxt?.message ?? ('Syntax is required: {{context}}' +
|
|
125
|
+
(comment ? ' with {{comment}}' : ''));
|
|
126
|
+
context.report({
|
|
127
|
+
data: {
|
|
128
|
+
comment,
|
|
129
|
+
context: contextStr,
|
|
130
|
+
},
|
|
131
|
+
loc: {
|
|
132
|
+
end: {
|
|
133
|
+
column: 1,
|
|
134
|
+
line: 1,
|
|
135
|
+
},
|
|
136
|
+
start: {
|
|
137
|
+
column: 1,
|
|
138
|
+
line: 1,
|
|
139
|
+
},
|
|
140
|
+
},
|
|
141
|
+
message,
|
|
142
|
+
});
|
|
143
|
+
|
|
144
|
+
return true;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
return false;
|
|
148
|
+
});
|
|
149
|
+
},
|
|
150
|
+
matchContext: true,
|
|
151
|
+
meta: {
|
|
152
|
+
docs: {
|
|
153
|
+
description: 'Reports when certain comment structures are always expected.',
|
|
154
|
+
url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-missing-syntax.md#repos-sticky-header',
|
|
155
|
+
},
|
|
156
|
+
schema: [
|
|
157
|
+
{
|
|
158
|
+
additionalProperties: false,
|
|
159
|
+
properties: {
|
|
160
|
+
contexts: {
|
|
161
|
+
description: `Set this to an array of strings representing the AST context (or an object with
|
|
162
|
+
optional \`context\` and \`comment\` properties) where you wish the rule to be applied.
|
|
163
|
+
|
|
164
|
+
\`context\` defaults to \`any\` and \`comment\` defaults to no specific comment context.
|
|
165
|
+
|
|
166
|
+
Use the \`minimum\` property (defaults to 1) to indicate how many are required
|
|
167
|
+
for the rule to be reported.
|
|
168
|
+
|
|
169
|
+
Use the \`message\` property to indicate the specific error to be shown when an
|
|
170
|
+
error is reported for that context being found missing. You may use
|
|
171
|
+
\`{{context}}\` and \`{{comment}}\` with such messages. Defaults to
|
|
172
|
+
\`"Syntax is required: {{context}}"\`, or with a comment, to
|
|
173
|
+
\`"Syntax is required: {{context}} with {{comment}}"\`.
|
|
174
|
+
|
|
175
|
+
Set to \`"any"\` if you want the rule to apply to any JSDoc block throughout
|
|
176
|
+
your files (as is necessary for finding function blocks not attached to a
|
|
177
|
+
function declaration or expression, i.e., \`@callback\` or \`@function\` (or its
|
|
178
|
+
aliases \`@func\` or \`@method\`) (including those associated with an \`@interface\`).
|
|
179
|
+
|
|
180
|
+
See the ["AST and Selectors"](../#advanced-ast-and-selectors)
|
|
181
|
+
section of our Advanced docs for more on the expected format.`,
|
|
182
|
+
items: {
|
|
183
|
+
anyOf: [
|
|
184
|
+
{
|
|
185
|
+
type: 'string',
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
additionalProperties: false,
|
|
189
|
+
properties: {
|
|
190
|
+
comment: {
|
|
191
|
+
type: 'string',
|
|
192
|
+
},
|
|
193
|
+
context: {
|
|
194
|
+
type: 'string',
|
|
195
|
+
},
|
|
196
|
+
message: {
|
|
197
|
+
type: 'string',
|
|
198
|
+
},
|
|
199
|
+
minimum: {
|
|
200
|
+
type: 'integer',
|
|
201
|
+
},
|
|
202
|
+
},
|
|
203
|
+
type: 'object',
|
|
204
|
+
},
|
|
205
|
+
],
|
|
206
|
+
},
|
|
207
|
+
type: 'array',
|
|
208
|
+
},
|
|
209
|
+
},
|
|
210
|
+
type: 'object',
|
|
211
|
+
},
|
|
212
|
+
],
|
|
213
|
+
type: 'suggestion',
|
|
214
|
+
},
|
|
215
|
+
});
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import iterateJsdoc from '../iterateJsdoc.js';
|
|
2
|
+
|
|
3
|
+
const middleAsterisksBlockWS = /^([\t ]|\*(?!\*))+/v;
|
|
4
|
+
const middleAsterisksNoBlockWS = /^\*+/v;
|
|
5
|
+
|
|
6
|
+
const endAsterisksSingleLineBlockWS = /\*((?:\*|(?: |\t))*)\*$/v;
|
|
7
|
+
const endAsterisksMultipleLineBlockWS = /((?:\*|(?: |\t))*)\*$/v;
|
|
8
|
+
|
|
9
|
+
const endAsterisksSingleLineNoBlockWS = /\*(\**)\*$/v;
|
|
10
|
+
const endAsterisksMultipleLineNoBlockWS = /(\**)\*$/v;
|
|
11
|
+
|
|
12
|
+
export default iterateJsdoc(({
|
|
13
|
+
context,
|
|
14
|
+
jsdoc,
|
|
15
|
+
utils,
|
|
16
|
+
}) => {
|
|
17
|
+
const {
|
|
18
|
+
allowWhitespace = false,
|
|
19
|
+
preventAtEnd = true,
|
|
20
|
+
preventAtMiddleLines = true,
|
|
21
|
+
} = context.options[0] || {};
|
|
22
|
+
|
|
23
|
+
const middleAsterisks = allowWhitespace ? middleAsterisksNoBlockWS : middleAsterisksBlockWS;
|
|
24
|
+
|
|
25
|
+
jsdoc.source.some(({
|
|
26
|
+
number,
|
|
27
|
+
tokens,
|
|
28
|
+
}) => {
|
|
29
|
+
const {
|
|
30
|
+
delimiter,
|
|
31
|
+
description,
|
|
32
|
+
end,
|
|
33
|
+
name,
|
|
34
|
+
postDelimiter,
|
|
35
|
+
tag,
|
|
36
|
+
type,
|
|
37
|
+
} = tokens;
|
|
38
|
+
|
|
39
|
+
if (
|
|
40
|
+
preventAtMiddleLines &&
|
|
41
|
+
!end && !tag && !type && !name &&
|
|
42
|
+
(
|
|
43
|
+
!allowWhitespace && middleAsterisks.test(description) ||
|
|
44
|
+
allowWhitespace && middleAsterisks.test(postDelimiter + description)
|
|
45
|
+
)
|
|
46
|
+
) {
|
|
47
|
+
// console.log('description', JSON.stringify(description));
|
|
48
|
+
const fix = () => {
|
|
49
|
+
tokens.description = description.replace(middleAsterisks, '');
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
utils.reportJSDoc(
|
|
53
|
+
'Should be no multiple asterisks on middle lines.',
|
|
54
|
+
{
|
|
55
|
+
line: number,
|
|
56
|
+
},
|
|
57
|
+
fix,
|
|
58
|
+
true,
|
|
59
|
+
);
|
|
60
|
+
|
|
61
|
+
return true;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
if (!preventAtEnd || !end) {
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
const isSingleLineBlock = delimiter === '/**';
|
|
69
|
+
const delim = isSingleLineBlock ? '*' : delimiter;
|
|
70
|
+
const endAsterisks = allowWhitespace ?
|
|
71
|
+
(isSingleLineBlock ? endAsterisksSingleLineNoBlockWS : endAsterisksMultipleLineNoBlockWS) :
|
|
72
|
+
(isSingleLineBlock ? endAsterisksSingleLineBlockWS : endAsterisksMultipleLineBlockWS);
|
|
73
|
+
|
|
74
|
+
const endingAsterisksAndSpaces = (
|
|
75
|
+
allowWhitespace ? postDelimiter + description + delim : description + delim
|
|
76
|
+
).match(
|
|
77
|
+
endAsterisks,
|
|
78
|
+
);
|
|
79
|
+
|
|
80
|
+
if (
|
|
81
|
+
!endingAsterisksAndSpaces ||
|
|
82
|
+
!isSingleLineBlock && endingAsterisksAndSpaces[1] && !endingAsterisksAndSpaces[1].trim()
|
|
83
|
+
) {
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
const endFix = () => {
|
|
88
|
+
if (!isSingleLineBlock) {
|
|
89
|
+
tokens.delimiter = '';
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
tokens.description = (description + delim).replace(endAsterisks, '');
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
utils.reportJSDoc(
|
|
96
|
+
'Should be no multiple asterisks on end lines.',
|
|
97
|
+
{
|
|
98
|
+
line: number,
|
|
99
|
+
},
|
|
100
|
+
endFix,
|
|
101
|
+
true,
|
|
102
|
+
);
|
|
103
|
+
|
|
104
|
+
return true;
|
|
105
|
+
});
|
|
106
|
+
}, {
|
|
107
|
+
iterateAllJsdocs: true,
|
|
108
|
+
meta: {
|
|
109
|
+
docs: {
|
|
110
|
+
description: 'Prevents use of multiple asterisks at the beginning of lines.',
|
|
111
|
+
url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-multi-asterisks.md#repos-sticky-header',
|
|
112
|
+
},
|
|
113
|
+
fixable: 'code',
|
|
114
|
+
schema: [
|
|
115
|
+
{
|
|
116
|
+
additionalProperties: false,
|
|
117
|
+
properties: {
|
|
118
|
+
allowWhitespace: {
|
|
119
|
+
description: `Set to \`true\` if you wish to allow asterisks after a space (as with Markdown):
|
|
120
|
+
|
|
121
|
+
\`\`\`js
|
|
122
|
+
/**
|
|
123
|
+
* *bold* text
|
|
124
|
+
*/
|
|
125
|
+
\`\`\`
|
|
126
|
+
|
|
127
|
+
Defaults to \`false\`.`,
|
|
128
|
+
type: 'boolean',
|
|
129
|
+
},
|
|
130
|
+
preventAtEnd: {
|
|
131
|
+
description: `Prevent the likes of this:
|
|
132
|
+
|
|
133
|
+
\`\`\`js
|
|
134
|
+
/**
|
|
135
|
+
*
|
|
136
|
+
*
|
|
137
|
+
**/
|
|
138
|
+
\`\`\`
|
|
139
|
+
|
|
140
|
+
Defaults to \`true\`.`,
|
|
141
|
+
type: 'boolean',
|
|
142
|
+
},
|
|
143
|
+
preventAtMiddleLines: {
|
|
144
|
+
description: `Prevent the likes of this:
|
|
145
|
+
|
|
146
|
+
\`\`\`js
|
|
147
|
+
/**
|
|
148
|
+
*
|
|
149
|
+
**
|
|
150
|
+
*/
|
|
151
|
+
\`\`\`
|
|
152
|
+
|
|
153
|
+
Defaults to \`true\`.`,
|
|
154
|
+
type: 'boolean',
|
|
155
|
+
},
|
|
156
|
+
},
|
|
157
|
+
type: 'object',
|
|
158
|
+
},
|
|
159
|
+
],
|
|
160
|
+
type: 'suggestion',
|
|
161
|
+
},
|
|
162
|
+
});
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import {
|
|
2
|
+
buildForbidRuleDefinition,
|
|
3
|
+
} from '../buildForbidRuleDefinition.js';
|
|
4
|
+
|
|
5
|
+
export default buildForbidRuleDefinition({
|
|
6
|
+
getContexts (context, report) {
|
|
7
|
+
if (!context.options.length) {
|
|
8
|
+
report('Rule `no-restricted-syntax` is missing a `contexts` option.');
|
|
9
|
+
return false;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
const {
|
|
13
|
+
contexts,
|
|
14
|
+
} = context.options[0];
|
|
15
|
+
|
|
16
|
+
return contexts;
|
|
17
|
+
},
|
|
18
|
+
schema: [
|
|
19
|
+
{
|
|
20
|
+
additionalProperties: false,
|
|
21
|
+
properties: {
|
|
22
|
+
contexts: {
|
|
23
|
+
description: `Set this to an array of strings representing the AST context (or an object with
|
|
24
|
+
\`context\` and \`comment\` properties) where you wish the rule to be applied.
|
|
25
|
+
|
|
26
|
+
\`context\` defaults to \`any\` and \`comment\` defaults to no specific comment context.
|
|
27
|
+
|
|
28
|
+
Use the \`message\` property to indicate the specific error to be shown when an
|
|
29
|
+
error is reported for that context being found. Defaults to
|
|
30
|
+
\`"Syntax is restricted: {{context}}"\`, or with a comment, to
|
|
31
|
+
\`"Syntax is restricted: {{context}} with {{comment}}"\`.
|
|
32
|
+
|
|
33
|
+
Set to \`"any"\` if you want the rule to apply to any JSDoc block throughout
|
|
34
|
+
your files (as is necessary for finding function blocks not attached to a
|
|
35
|
+
function declaration or expression, i.e., \`@callback\` or \`@function\` (or its
|
|
36
|
+
aliases \`@func\` or \`@method\`) (including those associated with an \`@interface\`).
|
|
37
|
+
|
|
38
|
+
See the ["AST and Selectors"](../#advanced-ast-and-selectors)
|
|
39
|
+
section of our Advanced docs for more on the expected format.`,
|
|
40
|
+
items: {
|
|
41
|
+
anyOf: [
|
|
42
|
+
{
|
|
43
|
+
type: 'string',
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
additionalProperties: false,
|
|
47
|
+
properties: {
|
|
48
|
+
comment: {
|
|
49
|
+
type: 'string',
|
|
50
|
+
},
|
|
51
|
+
context: {
|
|
52
|
+
type: 'string',
|
|
53
|
+
},
|
|
54
|
+
message: {
|
|
55
|
+
type: 'string',
|
|
56
|
+
},
|
|
57
|
+
},
|
|
58
|
+
type: 'object',
|
|
59
|
+
},
|
|
60
|
+
],
|
|
61
|
+
},
|
|
62
|
+
type: 'array',
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
required: [
|
|
66
|
+
'contexts',
|
|
67
|
+
],
|
|
68
|
+
type: 'object',
|
|
69
|
+
},
|
|
70
|
+
],
|
|
71
|
+
url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-restricted-syntax.md#repos-sticky-header',
|
|
72
|
+
});
|