eslint-plugin-jsdoc 53.0.1 → 54.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/WarnSettings.cjs +35 -18
- package/dist/WarnSettings.cjs.map +1 -1
- package/dist/alignTransform.cjs +305 -224
- package/dist/alignTransform.cjs.map +1 -1
- package/dist/defaultTagOrder.cjs +43 -132
- package/dist/defaultTagOrder.cjs.map +1 -1
- package/dist/exportParser.cjs +696 -478
- package/dist/exportParser.cjs.map +1 -1
- package/dist/generateRule.cjs +242 -0
- package/dist/generateRule.cjs.map +1 -0
- package/dist/getDefaultTagStructureForMode.cjs +288 -184
- package/dist/getDefaultTagStructureForMode.cjs.map +1 -1
- package/dist/getJsdocProcessorPlugin.cjs +550 -364
- package/dist/getJsdocProcessorPlugin.cjs.map +1 -1
- package/dist/getJsdocProcessorPlugin.d.ts +65 -68
- package/dist/getJsdocProcessorPlugin.d.ts.map +1 -1
- package/dist/index.cjs +410 -2
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +17 -2
- package/dist/index.d.ts.map +1 -0
- package/dist/iterateJsdoc.cjs +2007 -1539
- package/dist/iterateJsdoc.cjs.map +1 -1
- package/dist/iterateJsdoc.d.ts +350 -359
- package/dist/iterateJsdoc.d.ts.map +1 -1
- package/dist/jsdocUtils.cjs +1376 -1009
- package/dist/jsdocUtils.cjs.map +1 -1
- package/dist/rules/checkAccess.cjs +36 -29
- package/dist/rules/checkAccess.cjs.map +1 -1
- package/dist/rules/checkAlignment.cjs +54 -41
- package/dist/rules/checkAlignment.cjs.map +1 -1
- package/dist/rules/checkExamples.cjs +484 -327
- package/dist/rules/checkExamples.cjs.map +1 -1
- package/dist/rules/checkIndentation.cjs +65 -50
- package/dist/rules/checkIndentation.cjs.map +1 -1
- package/dist/rules/checkLineAlignment.cjs +311 -220
- package/dist/rules/checkLineAlignment.cjs.map +1 -1
- package/dist/rules/checkParamNames.cjs +335 -227
- package/dist/rules/checkParamNames.cjs.map +1 -1
- package/dist/rules/checkPropertyNames.cjs +106 -78
- package/dist/rules/checkPropertyNames.cjs.map +1 -1
- package/dist/rules/checkSyntax.cjs +34 -21
- package/dist/rules/checkSyntax.cjs.map +1 -1
- package/dist/rules/checkTagNames.cjs +210 -188
- package/dist/rules/checkTagNames.cjs.map +1 -1
- package/dist/rules/checkTemplateNames.cjs +178 -121
- package/dist/rules/checkTemplateNames.cjs.map +1 -1
- package/dist/rules/checkTypes.cjs +385 -291
- package/dist/rules/checkTypes.cjs.map +1 -1
- package/dist/rules/checkValues.cjs +146 -100
- package/dist/rules/checkValues.cjs.map +1 -1
- package/dist/rules/convertToJsdocComments.cjs +306 -228
- package/dist/rules/convertToJsdocComments.cjs.map +1 -1
- package/dist/rules/emptyTags.cjs +72 -62
- package/dist/rules/emptyTags.cjs.map +1 -1
- package/dist/rules/implementsOnClasses.cjs +56 -36
- package/dist/rules/implementsOnClasses.cjs.map +1 -1
- package/dist/rules/importsAsDependencies.cjs +99 -62
- package/dist/rules/importsAsDependencies.cjs.map +1 -1
- package/dist/rules/informativeDocs.cjs +142 -105
- package/dist/rules/informativeDocs.cjs.map +1 -1
- package/dist/rules/linesBeforeBlock.cjs +105 -70
- package/dist/rules/linesBeforeBlock.cjs.map +1 -1
- package/dist/rules/matchDescription.cjs +222 -160
- package/dist/rules/matchDescription.cjs.map +1 -1
- package/dist/rules/matchName.cjs +128 -73
- package/dist/rules/matchName.cjs.map +1 -1
- package/dist/rules/multilineBlocks.cjs +352 -235
- package/dist/rules/multilineBlocks.cjs.map +1 -1
- package/dist/rules/noBadBlocks.cjs +86 -63
- package/dist/rules/noBadBlocks.cjs.map +1 -1
- package/dist/rules/noBlankBlockDescriptions.cjs +57 -35
- package/dist/rules/noBlankBlockDescriptions.cjs.map +1 -1
- package/dist/rules/noBlankBlocks.cjs +48 -26
- package/dist/rules/noBlankBlocks.cjs.map +1 -1
- package/dist/rules/noDefaults.cjs +79 -52
- package/dist/rules/noDefaults.cjs.map +1 -1
- package/dist/rules/noMissingSyntax.cjs +165 -115
- package/dist/rules/noMissingSyntax.cjs.map +1 -1
- package/dist/rules/noMultiAsterisks.cjs +89 -48
- package/dist/rules/noMultiAsterisks.cjs.map +1 -1
- package/dist/rules/noRestrictedSyntax.cjs +79 -45
- package/dist/rules/noRestrictedSyntax.cjs.map +1 -1
- package/dist/rules/noTypes.cjs +80 -59
- package/dist/rules/noTypes.cjs.map +1 -1
- package/dist/rules/noUndefinedTypes.cjs +391 -297
- package/dist/rules/noUndefinedTypes.cjs.map +1 -1
- package/dist/rules/requireAsteriskPrefix.cjs +159 -108
- package/dist/rules/requireAsteriskPrefix.cjs.map +1 -1
- package/dist/rules/requireDescription.cjs +129 -89
- package/dist/rules/requireDescription.cjs.map +1 -1
- package/dist/rules/requireDescriptionCompleteSentence.cjs +262 -201
- package/dist/rules/requireDescriptionCompleteSentence.cjs.map +1 -1
- package/dist/rules/requireExample.cjs +104 -73
- package/dist/rules/requireExample.cjs.map +1 -1
- package/dist/rules/requireFileOverview.cjs +129 -75
- package/dist/rules/requireFileOverview.cjs.map +1 -1
- package/dist/rules/requireHyphenBeforeParamDescription.cjs +133 -85
- package/dist/rules/requireHyphenBeforeParamDescription.cjs.map +1 -1
- package/dist/rules/requireJsdoc.cjs +559 -384
- package/dist/rules/requireJsdoc.cjs.map +1 -1
- package/dist/rules/requireParam.cjs +526 -336
- package/dist/rules/requireParam.cjs.map +1 -1
- package/dist/rules/requireParamDescription.cjs +80 -55
- package/dist/rules/requireParamDescription.cjs.map +1 -1
- package/dist/rules/requireParamName.cjs +50 -32
- package/dist/rules/requireParamName.cjs.map +1 -1
- package/dist/rules/requireParamType.cjs +80 -55
- package/dist/rules/requireParamType.cjs.map +1 -1
- package/dist/rules/requireProperty.cjs +42 -31
- package/dist/rules/requireProperty.cjs.map +1 -1
- package/dist/rules/requirePropertyDescription.cjs +25 -17
- package/dist/rules/requirePropertyDescription.cjs.map +1 -1
- package/dist/rules/requirePropertyName.cjs +25 -17
- package/dist/rules/requirePropertyName.cjs.map +1 -1
- package/dist/rules/requirePropertyType.cjs +25 -17
- package/dist/rules/requirePropertyType.cjs.map +1 -1
- package/dist/rules/requireReturns.cjs +203 -125
- package/dist/rules/requireReturns.cjs.map +1 -1
- package/dist/rules/requireReturnsCheck.cjs +103 -60
- package/dist/rules/requireReturnsCheck.cjs.map +1 -1
- package/dist/rules/requireReturnsDescription.cjs +54 -39
- package/dist/rules/requireReturnsDescription.cjs.map +1 -1
- package/dist/rules/requireReturnsType.cjs +50 -32
- package/dist/rules/requireReturnsType.cjs.map +1 -1
- package/dist/rules/requireTemplate.cjs +178 -119
- package/dist/rules/requireTemplate.cjs.map +1 -1
- package/dist/rules/requireThrows.cjs +95 -61
- package/dist/rules/requireThrows.cjs.map +1 -1
- package/dist/rules/requireYields.cjs +166 -106
- package/dist/rules/requireYields.cjs.map +1 -1
- package/dist/rules/requireYieldsCheck.cjs +152 -96
- package/dist/rules/requireYieldsCheck.cjs.map +1 -1
- package/dist/rules/sortTags.cjs +444 -258
- package/dist/rules/sortTags.cjs.map +1 -1
- package/dist/rules/tagLines.cjs +266 -179
- package/dist/rules/tagLines.cjs.map +1 -1
- package/dist/rules/textEscaping.cjs +127 -92
- package/dist/rules/textEscaping.cjs.map +1 -1
- package/dist/rules/validTypes.cjs +265 -252
- package/dist/rules/validTypes.cjs.map +1 -1
- package/dist/tagNames.cjs +170 -134
- package/dist/tagNames.cjs.map +1 -1
- package/dist/utils/hasReturnValue.cjs +474 -246
- package/dist/utils/hasReturnValue.cjs.map +1 -1
- package/package.json +41 -57
- package/src/WarnSettings.js +34 -0
- package/src/alignTransform.js +358 -0
- package/src/defaultTagOrder.js +169 -0
- package/src/exportParser.js +978 -0
- package/src/getDefaultTagStructureForMode.js +969 -0
- package/src/getJsdocProcessorPlugin.js +672 -0
- package/src/index.js +530 -0
- package/src/iterateJsdoc.js +2542 -0
- package/src/jsdocUtils.js +1896 -0
- package/src/rules/checkAccess.js +45 -0
- package/src/rules/checkAlignment.js +63 -0
- package/src/rules/checkExamples.js +589 -0
- package/src/rules/checkIndentation.js +75 -0
- package/src/rules/checkLineAlignment.js +372 -0
- package/src/rules/checkParamNames.js +474 -0
- package/src/rules/checkPropertyNames.js +152 -0
- package/src/rules/checkSyntax.js +30 -0
- package/src/rules/checkTagNames.js +314 -0
- package/src/rules/checkTemplateNames.js +204 -0
- package/src/rules/checkTypes.js +535 -0
- package/src/rules/checkValues.js +248 -0
- package/src/rules/convertToJsdocComments.js +398 -0
- package/src/rules/emptyTags.js +98 -0
- package/src/rules/implementsOnClasses.js +64 -0
- package/src/rules/importsAsDependencies.js +133 -0
- package/src/rules/informativeDocs.js +189 -0
- package/src/rules/linesBeforeBlock.js +134 -0
- package/src/rules/matchDescription.js +286 -0
- package/src/rules/matchName.js +151 -0
- package/src/rules/multilineBlocks.js +493 -0
- package/src/rules/noBadBlocks.js +119 -0
- package/src/rules/noBlankBlockDescriptions.js +69 -0
- package/src/rules/noBlankBlocks.js +53 -0
- package/src/rules/noDefaults.js +85 -0
- package/src/rules/noMissingSyntax.js +195 -0
- package/src/rules/noMultiAsterisks.js +134 -0
- package/src/rules/noRestrictedSyntax.js +91 -0
- package/src/rules/noTypes.js +93 -0
- package/src/rules/noUndefinedTypes.js +545 -0
- package/src/rules/requireAsteriskPrefix.js +190 -0
- package/src/rules/requireDescription.js +161 -0
- package/src/rules/requireDescriptionCompleteSentence.js +335 -0
- package/src/rules/requireExample.js +118 -0
- package/src/rules/requireFileOverview.js +154 -0
- package/src/rules/requireHyphenBeforeParamDescription.js +176 -0
- package/src/rules/requireJsdoc.js +744 -0
- package/src/rules/requireParam.js +602 -0
- package/src/rules/requireParamDescription.js +89 -0
- package/src/rules/requireParamName.js +55 -0
- package/src/rules/requireParamType.js +89 -0
- package/src/rules/requireProperty.js +48 -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/requireReturns.js +238 -0
- package/src/rules/requireReturnsCheck.js +145 -0
- package/src/rules/requireReturnsDescription.js +59 -0
- package/src/rules/requireReturnsType.js +51 -0
- package/src/rules/requireTemplate.js +201 -0
- package/src/rules/requireThrows.js +111 -0
- package/src/rules/requireYields.js +216 -0
- package/src/rules/requireYieldsCheck.js +208 -0
- package/src/rules/sortTags.js +558 -0
- package/src/rules/tagLines.js +359 -0
- package/src/rules/textEscaping.js +154 -0
- package/src/rules/validTypes.js +401 -0
- package/src/tagNames.js +238 -0
- package/src/utils/hasReturnValue.js +572 -0
- package/dist/WarnSettings.js +0 -20
- package/dist/WarnSettings.js.map +0 -1
- package/dist/_virtual/rolldown_runtime.cjs +0 -32
- package/dist/_virtual/rolldown_runtime.js +0 -11
- package/dist/alignTransform.js +0 -241
- package/dist/alignTransform.js.map +0 -1
- package/dist/defaultTagOrder.js +0 -134
- package/dist/defaultTagOrder.js.map +0 -1
- package/dist/exportParser.js +0 -518
- package/dist/exportParser.js.map +0 -1
- package/dist/getDefaultTagStructureForMode.js +0 -188
- package/dist/getDefaultTagStructureForMode.js.map +0 -1
- package/dist/getJsdocProcessorPlugin.d.cts +0 -70
- package/dist/getJsdocProcessorPlugin.d.cts.map +0 -1
- package/dist/getJsdocProcessorPlugin.js +0 -383
- package/dist/getJsdocProcessorPlugin.js.map +0 -1
- package/dist/index.d.cts +0 -2
- package/dist/index.js +0 -3
- package/dist/iterateJsdoc.d.cts +0 -472
- package/dist/iterateJsdoc.d.cts.map +0 -1
- package/dist/iterateJsdoc.js +0 -1628
- package/dist/iterateJsdoc.js.map +0 -1
- package/dist/jsdocUtils.js +0 -1123
- package/dist/jsdocUtils.js.map +0 -1
- package/dist/plugin.cjs +0 -427
- package/dist/plugin.cjs.map +0 -1
- package/dist/plugin.js +0 -427
- package/dist/plugin.js.map +0 -1
- package/dist/rules/checkAccess.js +0 -33
- package/dist/rules/checkAccess.js.map +0 -1
- package/dist/rules/checkAlignment.js +0 -47
- package/dist/rules/checkAlignment.js.map +0 -1
- package/dist/rules/checkExamples.js +0 -348
- package/dist/rules/checkExamples.js.map +0 -1
- package/dist/rules/checkIndentation.js +0 -59
- package/dist/rules/checkIndentation.js.map +0 -1
- package/dist/rules/checkLineAlignment.js +0 -229
- package/dist/rules/checkLineAlignment.js.map +0 -1
- package/dist/rules/checkParamNames.js +0 -237
- package/dist/rules/checkParamNames.js.map +0 -1
- package/dist/rules/checkPropertyNames.js +0 -88
- package/dist/rules/checkPropertyNames.js.map +0 -1
- package/dist/rules/checkSyntax.js +0 -25
- package/dist/rules/checkSyntax.js.map +0 -1
- package/dist/rules/checkTagNames.js +0 -191
- package/dist/rules/checkTagNames.js.map +0 -1
- package/dist/rules/checkTemplateNames.js +0 -124
- package/dist/rules/checkTemplateNames.js.map +0 -1
- package/dist/rules/checkTypes.js +0 -299
- package/dist/rules/checkTypes.js.map +0 -1
- package/dist/rules/checkValues.js +0 -103
- package/dist/rules/checkValues.js.map +0 -1
- package/dist/rules/convertToJsdocComments.js +0 -231
- package/dist/rules/convertToJsdocComments.js.map +0 -1
- package/dist/rules/emptyTags.js +0 -67
- package/dist/rules/emptyTags.js.map +0 -1
- package/dist/rules/implementsOnClasses.js +0 -40
- package/dist/rules/implementsOnClasses.js.map +0 -1
- package/dist/rules/importsAsDependencies.js +0 -68
- package/dist/rules/importsAsDependencies.js.map +0 -1
- package/dist/rules/informativeDocs.js +0 -110
- package/dist/rules/informativeDocs.js.map +0 -1
- package/dist/rules/linesBeforeBlock.js +0 -75
- package/dist/rules/linesBeforeBlock.js.map +0 -1
- package/dist/rules/matchDescription.js +0 -167
- package/dist/rules/matchDescription.js.map +0 -1
- package/dist/rules/matchName.js +0 -77
- package/dist/rules/matchName.js.map +0 -1
- package/dist/rules/multilineBlocks.js +0 -245
- package/dist/rules/multilineBlocks.js.map +0 -1
- package/dist/rules/noBadBlocks.js +0 -68
- package/dist/rules/noBadBlocks.js.map +0 -1
- package/dist/rules/noBlankBlockDescriptions.js +0 -41
- package/dist/rules/noBlankBlockDescriptions.js.map +0 -1
- package/dist/rules/noBlankBlocks.js +0 -30
- package/dist/rules/noBlankBlocks.js.map +0 -1
- package/dist/rules/noDefaults.js +0 -56
- package/dist/rules/noDefaults.js.map +0 -1
- package/dist/rules/noMissingSyntax.js +0 -126
- package/dist/rules/noMissingSyntax.js.map +0 -1
- package/dist/rules/noMultiAsterisks.js +0 -58
- package/dist/rules/noMultiAsterisks.js.map +0 -1
- package/dist/rules/noRestrictedSyntax.js +0 -49
- package/dist/rules/noRestrictedSyntax.js.map +0 -1
- package/dist/rules/noTypes.js +0 -65
- package/dist/rules/noTypes.js.map +0 -1
- package/dist/rules/noUndefinedTypes.js +0 -303
- package/dist/rules/noUndefinedTypes.js.map +0 -1
- package/dist/rules/requireAsteriskPrefix.js +0 -112
- package/dist/rules/requireAsteriskPrefix.js.map +0 -1
- package/dist/rules/requireDescription.js +0 -95
- package/dist/rules/requireDescription.js.map +0 -1
- package/dist/rules/requireDescriptionCompleteSentence.js +0 -220
- package/dist/rules/requireDescriptionCompleteSentence.js.map +0 -1
- package/dist/rules/requireExample.js +0 -77
- package/dist/rules/requireExample.js.map +0 -1
- package/dist/rules/requireFileOverview.js +0 -81
- package/dist/rules/requireFileOverview.js.map +0 -1
- package/dist/rules/requireHyphenBeforeParamDescription.js +0 -89
- package/dist/rules/requireHyphenBeforeParamDescription.js.map +0 -1
- package/dist/rules/requireJsdoc.js +0 -404
- package/dist/rules/requireJsdoc.js.map +0 -1
- package/dist/rules/requireParam.js +0 -344
- package/dist/rules/requireParam.js.map +0 -1
- package/dist/rules/requireParamDescription.js +0 -59
- package/dist/rules/requireParamDescription.js.map +0 -1
- package/dist/rules/requireParamName.js +0 -36
- package/dist/rules/requireParamName.js.map +0 -1
- package/dist/rules/requireParamType.js +0 -59
- package/dist/rules/requireParamType.js.map +0 -1
- package/dist/rules/requireProperty.js +0 -35
- package/dist/rules/requireProperty.js.map +0 -1
- package/dist/rules/requirePropertyDescription.js +0 -21
- package/dist/rules/requirePropertyDescription.js.map +0 -1
- package/dist/rules/requirePropertyName.js +0 -21
- package/dist/rules/requirePropertyName.js.map +0 -1
- package/dist/rules/requirePropertyType.js +0 -21
- package/dist/rules/requirePropertyType.js.map +0 -1
- package/dist/rules/requireReturns.js +0 -131
- package/dist/rules/requireReturns.js.map +0 -1
- package/dist/rules/requireReturnsCheck.js +0 -66
- package/dist/rules/requireReturnsCheck.js.map +0 -1
- package/dist/rules/requireReturnsDescription.js +0 -43
- package/dist/rules/requireReturnsDescription.js.map +0 -1
- package/dist/rules/requireReturnsType.js +0 -36
- package/dist/rules/requireReturnsType.js.map +0 -1
- package/dist/rules/requireTemplate.js +0 -122
- package/dist/rules/requireTemplate.js.map +0 -1
- package/dist/rules/requireThrows.js +0 -67
- package/dist/rules/requireThrows.js.map +0 -1
- package/dist/rules/requireYields.js +0 -115
- package/dist/rules/requireYields.js.map +0 -1
- package/dist/rules/requireYieldsCheck.js +0 -105
- package/dist/rules/requireYieldsCheck.js.map +0 -1
- package/dist/rules/sortTags.js +0 -262
- package/dist/rules/sortTags.js.map +0 -1
- package/dist/rules/tagLines.js +0 -183
- package/dist/rules/tagLines.js.map +0 -1
- package/dist/rules/textEscaping.js +0 -102
- package/dist/rules/textEscaping.js.map +0 -1
- package/dist/rules/validTypes.js +0 -259
- package/dist/rules/validTypes.js.map +0 -1
- package/dist/tagNames.js +0 -144
- package/dist/tagNames.js.map +0 -1
- package/dist/utils/hasReturnValue.js +0 -265
- package/dist/utils/hasReturnValue.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multilineBlocks.cjs","names":["iterateJsdoc"],"sources":["../../src/rules/multilineBlocks.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\n\n/**\n * @param {import('@es-joy/jsdoccomment').JsdocBlockWithInline} jsdoc\n * @param {import('../iterateJsdoc.js').Utils} utils\n * @param {number} requireSingleLineUnderCount\n */\nconst checkForShortTags = (jsdoc, utils, requireSingleLineUnderCount) => {\n if (!requireSingleLineUnderCount || !jsdoc.tags.length) {\n return false;\n }\n\n let lastLineWithTag = 0;\n let isUnderCountLimit = false;\n let hasMultiDescOrType = false;\n const tagLines = jsdoc.source.reduce((acc, {\n tokens: {\n delimiter,\n description: desc,\n name,\n postDelimiter,\n postName,\n postTag,\n postType,\n start,\n tag,\n type,\n },\n }, idx) => {\n if (tag.length) {\n lastLineWithTag = idx;\n if (\n start.length + delimiter.length + postDelimiter.length +\n type.length + postType.length + name.length + postName.length +\n tag.length + postTag.length + desc.length <\n requireSingleLineUnderCount\n ) {\n isUnderCountLimit = true;\n }\n\n return acc + 1;\n } else if (desc.length || type.length) {\n hasMultiDescOrType = true;\n return acc;\n }\n\n return acc;\n }, 0);\n // Could be tagLines > 1\n if (!hasMultiDescOrType && isUnderCountLimit && tagLines === 1) {\n const fixer = () => {\n const tokens = jsdoc.source[lastLineWithTag].tokens;\n jsdoc.source = [\n {\n number: 0,\n source: '',\n tokens: utils.seedTokens({\n delimiter: '/**',\n description: tokens.description.trimEnd() + ' ',\n end: '*/',\n name: tokens.name,\n postDelimiter: ' ',\n postName: tokens.postName,\n postTag: tokens.postTag,\n postType: tokens.postType,\n start: jsdoc.source[0].tokens.start,\n tag: tokens.tag,\n type: tokens.type,\n }),\n },\n ];\n };\n\n utils.reportJSDoc(\n 'Description is too short to be multi-line.',\n null,\n fixer,\n );\n return true;\n }\n\n return false;\n};\n\n/**\n * @param {import('@es-joy/jsdoccomment').JsdocBlockWithInline} jsdoc\n * @param {import('../iterateJsdoc.js').Utils} utils\n * @param {number} requireSingleLineUnderCount\n */\nconst checkForShortDescriptions = (jsdoc, utils, requireSingleLineUnderCount) => {\n if (!requireSingleLineUnderCount || jsdoc.tags.length) {\n return false;\n }\n\n let lastLineWithDesc = 0;\n let isUnderCountLimit = false;\n const descLines = jsdoc.source.reduce((acc, {\n tokens: {\n delimiter,\n description: desc,\n postDelimiter,\n start,\n },\n }, idx) => {\n if (desc.length) {\n lastLineWithDesc = idx;\n if (\n start.length + delimiter.length + postDelimiter.length + desc.length <\n requireSingleLineUnderCount\n ) {\n isUnderCountLimit = true;\n }\n\n return acc + 1;\n }\n\n return acc;\n }, 0);\n // Could be descLines > 1\n if (isUnderCountLimit && descLines === 1) {\n const fixer = () => {\n const desc = jsdoc.source[lastLineWithDesc].tokens.description;\n jsdoc.source = [\n {\n number: 0,\n source: '',\n tokens: utils.seedTokens({\n delimiter: '/**',\n description: desc.trimEnd() + ' ',\n end: '*/',\n postDelimiter: ' ',\n start: jsdoc.source[0].tokens.start,\n }),\n },\n ];\n };\n\n utils.reportJSDoc(\n 'Description is too short to be multi-line.',\n null,\n fixer,\n );\n return true;\n }\n\n return false;\n};\n\nexport default iterateJsdoc(({\n context,\n jsdoc,\n utils,\n}) => {\n const {\n allowMultipleTags = true,\n minimumLengthForMultiline = Number.POSITIVE_INFINITY,\n multilineTags = [\n '*',\n ],\n noFinalLineText = true,\n noMultilineBlocks = false,\n noSingleLineBlocks = false,\n noZeroLineText = true,\n requireSingleLineUnderCount = null,\n singleLineTags = [\n 'lends', 'type',\n ],\n } = context.options[0] || {};\n\n const {\n source: [\n {\n tokens,\n },\n ],\n } = jsdoc;\n const {\n description,\n tag,\n } = tokens;\n const sourceLength = jsdoc.source.length;\n\n /**\n * @param {string} tagName\n * @returns {boolean}\n */\n const isInvalidSingleLine = (tagName) => {\n return noSingleLineBlocks &&\n (!tagName ||\n !singleLineTags.includes(tagName) && !singleLineTags.includes('*'));\n };\n\n if (sourceLength === 1) {\n if (!isInvalidSingleLine(tag.slice(1))) {\n return;\n }\n\n const fixer = () => {\n utils.makeMultiline();\n };\n\n utils.reportJSDoc(\n 'Single line blocks are not permitted by your configuration.',\n null,\n fixer,\n true,\n );\n\n return;\n }\n\n if (checkForShortDescriptions(jsdoc, utils, requireSingleLineUnderCount)\n ) {\n return;\n }\n\n if (checkForShortTags(jsdoc, utils, requireSingleLineUnderCount)\n ) {\n return;\n }\n\n const lineChecks = () => {\n if (\n noZeroLineText &&\n (tag || description)\n ) {\n const fixer = () => {\n const line = {\n ...tokens,\n };\n utils.emptyTokens(tokens);\n const {\n tokens: {\n delimiter,\n start,\n },\n } = jsdoc.source[1];\n utils.addLine(1, {\n ...line,\n delimiter,\n start,\n });\n };\n\n utils.reportJSDoc(\n 'Should have no text on the \"0th\" line (after the `/**`).',\n null,\n fixer,\n );\n\n return;\n }\n\n const finalLine = jsdoc.source[jsdoc.source.length - 1];\n const finalLineTokens = finalLine.tokens;\n if (\n noFinalLineText &&\n finalLineTokens.description.trim()\n ) {\n const fixer = () => {\n const line = {\n ...finalLineTokens,\n };\n line.description = line.description.trimEnd();\n\n const {\n delimiter,\n } = line;\n\n for (const prop of [\n 'delimiter',\n 'postDelimiter',\n 'tag',\n 'type',\n 'lineEnd',\n 'postType',\n 'postTag',\n 'name',\n 'postName',\n 'description',\n ]) {\n finalLineTokens[\n /**\n * @type {\"delimiter\"|\"postDelimiter\"|\"tag\"|\"type\"|\n * \"lineEnd\"|\"postType\"|\"postTag\"|\"name\"|\n * \"postName\"|\"description\"}\n */ (\n prop\n )\n ] = '';\n }\n\n utils.addLine(jsdoc.source.length - 1, {\n ...line,\n delimiter,\n end: '',\n });\n };\n\n utils.reportJSDoc(\n 'Should have no text on the final line (before the `*/`).',\n null,\n fixer,\n );\n }\n };\n\n if (noMultilineBlocks) {\n if (\n jsdoc.tags.length &&\n (multilineTags.includes('*') || utils.hasATag(multilineTags))\n ) {\n lineChecks();\n\n return;\n }\n\n if (jsdoc.description.length >= minimumLengthForMultiline) {\n lineChecks();\n\n return;\n }\n\n if (\n noSingleLineBlocks &&\n (!jsdoc.tags.length ||\n !utils.filterTags(({\n tag: tg,\n }) => {\n return !isInvalidSingleLine(tg);\n }).length)\n ) {\n utils.reportJSDoc(\n 'Multiline jsdoc blocks are prohibited by ' +\n 'your configuration but fixing would result in a single ' +\n 'line block which you have prohibited with `noSingleLineBlocks`.',\n );\n\n return;\n }\n\n if (jsdoc.tags.length > 1) {\n if (!allowMultipleTags) {\n utils.reportJSDoc(\n 'Multiline jsdoc blocks are prohibited by ' +\n 'your configuration but the block has multiple tags.',\n );\n\n return;\n }\n } else if (jsdoc.tags.length === 1 && jsdoc.description.trim()) {\n if (!allowMultipleTags) {\n utils.reportJSDoc(\n 'Multiline jsdoc blocks are prohibited by ' +\n 'your configuration but the block has a description with a tag.',\n );\n\n return;\n }\n } else {\n const fixer = () => {\n jsdoc.source = [\n {\n number: 1,\n source: '',\n tokens: jsdoc.source.reduce((obj, {\n tokens: {\n description: desc,\n lineEnd,\n name: nme,\n postName,\n postTag,\n postType,\n tag: tg,\n type: typ,\n },\n }) => {\n if (typ) {\n obj.type = typ;\n }\n\n if (tg && typ && nme) {\n obj.postType = postType;\n }\n\n if (nme) {\n obj.name += nme;\n }\n\n if (nme && desc) {\n obj.postName = postName;\n }\n\n obj.description += desc;\n\n const nameOrDescription = obj.description || obj.name;\n if (\n nameOrDescription && nameOrDescription.slice(-1) !== ' '\n ) {\n obj.description += ' ';\n }\n\n obj.lineEnd = lineEnd;\n\n // Already filtered for multiple tags\n obj.tag += tg;\n if (tg) {\n obj.postTag = postTag || ' ';\n }\n\n return obj;\n }, utils.seedTokens({\n delimiter: '/**',\n end: '*/',\n postDelimiter: ' ',\n })),\n },\n ];\n };\n\n utils.reportJSDoc(\n 'Multiline jsdoc blocks are prohibited by ' +\n 'your configuration.',\n null,\n fixer,\n );\n\n return;\n }\n }\n\n lineChecks();\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Controls how and whether jsdoc blocks can be expressed as single or multiple line blocks.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/multiline-blocks.md#repos-sticky-header',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n allowMultipleTags: {\n type: 'boolean',\n },\n minimumLengthForMultiline: {\n type: 'integer',\n },\n multilineTags: {\n anyOf: [\n {\n enum: [\n '*',\n ],\n type: 'string',\n }, {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n ],\n },\n noFinalLineText: {\n type: 'boolean',\n },\n noMultilineBlocks: {\n type: 'boolean',\n },\n noSingleLineBlocks: {\n type: 'boolean',\n },\n noZeroLineText: {\n type: 'boolean',\n },\n requireSingleLineUnderCount: {\n type: 'number',\n },\n singleLineTags: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"multilineBlocks.cjs","names":["_iterateJsdoc","_interopRequireDefault","require","e","__esModule","default","checkForShortTags","jsdoc","utils","requireSingleLineUnderCount","tags","length","lastLineWithTag","isUnderCountLimit","hasMultiDescOrType","tagLines","source","reduce","acc","tokens","delimiter","description","desc","name","postDelimiter","postName","postTag","postType","start","tag","type","idx","fixer","number","seedTokens","trimEnd","end","reportJSDoc","checkForShortDescriptions","lastLineWithDesc","descLines","_default","exports","iterateJsdoc","context","allowMultipleTags","minimumLengthForMultiline","Number","POSITIVE_INFINITY","multilineTags","noFinalLineText","noMultilineBlocks","noSingleLineBlocks","noZeroLineText","singleLineTags","options","sourceLength","isInvalidSingleLine","tagName","includes","slice","makeMultiline","lineChecks","line","emptyTokens","addLine","finalLine","finalLineTokens","trim","prop","hasATag","filterTags","tg","obj","lineEnd","nme","typ","nameOrDescription","iterateAllJsdocs","meta","docs","url","fixable","schema","additionalProperties","properties","anyOf","enum","items","module"],"sources":["../../src/rules/multilineBlocks.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\n\n/**\n * @param {import('@es-joy/jsdoccomment').JsdocBlockWithInline} jsdoc\n * @param {import('../iterateJsdoc.js').Utils} utils\n * @param {number} requireSingleLineUnderCount\n */\nconst checkForShortTags = (jsdoc, utils, requireSingleLineUnderCount) => {\n if (!requireSingleLineUnderCount || !jsdoc.tags.length) {\n return false;\n }\n\n let lastLineWithTag = 0;\n let isUnderCountLimit = false;\n let hasMultiDescOrType = false;\n const tagLines = jsdoc.source.reduce((acc, {\n tokens: {\n delimiter,\n description: desc,\n name,\n postDelimiter,\n postName,\n postTag,\n postType,\n start,\n tag,\n type,\n },\n }, idx) => {\n if (tag.length) {\n lastLineWithTag = idx;\n if (\n start.length + delimiter.length + postDelimiter.length +\n type.length + postType.length + name.length + postName.length +\n tag.length + postTag.length + desc.length <\n requireSingleLineUnderCount\n ) {\n isUnderCountLimit = true;\n }\n\n return acc + 1;\n } else if (desc.length || type.length) {\n hasMultiDescOrType = true;\n return acc;\n }\n\n return acc;\n }, 0);\n // Could be tagLines > 1\n if (!hasMultiDescOrType && isUnderCountLimit && tagLines === 1) {\n const fixer = () => {\n const tokens = jsdoc.source[lastLineWithTag].tokens;\n jsdoc.source = [\n {\n number: 0,\n source: '',\n tokens: utils.seedTokens({\n delimiter: '/**',\n description: tokens.description.trimEnd() + ' ',\n end: '*/',\n name: tokens.name,\n postDelimiter: ' ',\n postName: tokens.postName,\n postTag: tokens.postTag,\n postType: tokens.postType,\n start: jsdoc.source[0].tokens.start,\n tag: tokens.tag,\n type: tokens.type,\n }),\n },\n ];\n };\n\n utils.reportJSDoc(\n 'Description is too short to be multi-line.',\n null,\n fixer,\n );\n return true;\n }\n\n return false;\n};\n\n/**\n * @param {import('@es-joy/jsdoccomment').JsdocBlockWithInline} jsdoc\n * @param {import('../iterateJsdoc.js').Utils} utils\n * @param {number} requireSingleLineUnderCount\n */\nconst checkForShortDescriptions = (jsdoc, utils, requireSingleLineUnderCount) => {\n if (!requireSingleLineUnderCount || jsdoc.tags.length) {\n return false;\n }\n\n let lastLineWithDesc = 0;\n let isUnderCountLimit = false;\n const descLines = jsdoc.source.reduce((acc, {\n tokens: {\n delimiter,\n description: desc,\n postDelimiter,\n start,\n },\n }, idx) => {\n if (desc.length) {\n lastLineWithDesc = idx;\n if (\n start.length + delimiter.length + postDelimiter.length + desc.length <\n requireSingleLineUnderCount\n ) {\n isUnderCountLimit = true;\n }\n\n return acc + 1;\n }\n\n return acc;\n }, 0);\n // Could be descLines > 1\n if (isUnderCountLimit && descLines === 1) {\n const fixer = () => {\n const desc = jsdoc.source[lastLineWithDesc].tokens.description;\n jsdoc.source = [\n {\n number: 0,\n source: '',\n tokens: utils.seedTokens({\n delimiter: '/**',\n description: desc.trimEnd() + ' ',\n end: '*/',\n postDelimiter: ' ',\n start: jsdoc.source[0].tokens.start,\n }),\n },\n ];\n };\n\n utils.reportJSDoc(\n 'Description is too short to be multi-line.',\n null,\n fixer,\n );\n return true;\n }\n\n return false;\n};\n\nexport default iterateJsdoc(({\n context,\n jsdoc,\n utils,\n}) => {\n const {\n allowMultipleTags = true,\n minimumLengthForMultiline = Number.POSITIVE_INFINITY,\n multilineTags = [\n '*',\n ],\n noFinalLineText = true,\n noMultilineBlocks = false,\n noSingleLineBlocks = false,\n noZeroLineText = true,\n requireSingleLineUnderCount = null,\n singleLineTags = [\n 'lends', 'type',\n ],\n } = context.options[0] || {};\n\n const {\n source: [\n {\n tokens,\n },\n ],\n } = jsdoc;\n const {\n description,\n tag,\n } = tokens;\n const sourceLength = jsdoc.source.length;\n\n /**\n * @param {string} tagName\n * @returns {boolean}\n */\n const isInvalidSingleLine = (tagName) => {\n return noSingleLineBlocks &&\n (!tagName ||\n !singleLineTags.includes(tagName) && !singleLineTags.includes('*'));\n };\n\n if (sourceLength === 1) {\n if (!isInvalidSingleLine(tag.slice(1))) {\n return;\n }\n\n const fixer = () => {\n utils.makeMultiline();\n };\n\n utils.reportJSDoc(\n 'Single line blocks are not permitted by your configuration.',\n null,\n fixer,\n true,\n );\n\n return;\n }\n\n if (checkForShortDescriptions(jsdoc, utils, requireSingleLineUnderCount)\n ) {\n return;\n }\n\n if (checkForShortTags(jsdoc, utils, requireSingleLineUnderCount)\n ) {\n return;\n }\n\n const lineChecks = () => {\n if (\n noZeroLineText &&\n (tag || description)\n ) {\n const fixer = () => {\n const line = {\n ...tokens,\n };\n utils.emptyTokens(tokens);\n const {\n tokens: {\n delimiter,\n start,\n },\n } = jsdoc.source[1];\n utils.addLine(1, {\n ...line,\n delimiter,\n start,\n });\n };\n\n utils.reportJSDoc(\n 'Should have no text on the \"0th\" line (after the `/**`).',\n null,\n fixer,\n );\n\n return;\n }\n\n const finalLine = jsdoc.source[jsdoc.source.length - 1];\n const finalLineTokens = finalLine.tokens;\n if (\n noFinalLineText &&\n finalLineTokens.description.trim()\n ) {\n const fixer = () => {\n const line = {\n ...finalLineTokens,\n };\n line.description = line.description.trimEnd();\n\n const {\n delimiter,\n } = line;\n\n for (const prop of [\n 'delimiter',\n 'postDelimiter',\n 'tag',\n 'type',\n 'lineEnd',\n 'postType',\n 'postTag',\n 'name',\n 'postName',\n 'description',\n ]) {\n finalLineTokens[\n /**\n * @type {\"delimiter\"|\"postDelimiter\"|\"tag\"|\"type\"|\n * \"lineEnd\"|\"postType\"|\"postTag\"|\"name\"|\n * \"postName\"|\"description\"}\n */ (\n prop\n )\n ] = '';\n }\n\n utils.addLine(jsdoc.source.length - 1, {\n ...line,\n delimiter,\n end: '',\n });\n };\n\n utils.reportJSDoc(\n 'Should have no text on the final line (before the `*/`).',\n null,\n fixer,\n );\n }\n };\n\n if (noMultilineBlocks) {\n if (\n jsdoc.tags.length &&\n (multilineTags.includes('*') || utils.hasATag(multilineTags))\n ) {\n lineChecks();\n\n return;\n }\n\n if (jsdoc.description.length >= minimumLengthForMultiline) {\n lineChecks();\n\n return;\n }\n\n if (\n noSingleLineBlocks &&\n (!jsdoc.tags.length ||\n !utils.filterTags(({\n tag: tg,\n }) => {\n return !isInvalidSingleLine(tg);\n }).length)\n ) {\n utils.reportJSDoc(\n 'Multiline jsdoc blocks are prohibited by ' +\n 'your configuration but fixing would result in a single ' +\n 'line block which you have prohibited with `noSingleLineBlocks`.',\n );\n\n return;\n }\n\n if (jsdoc.tags.length > 1) {\n if (!allowMultipleTags) {\n utils.reportJSDoc(\n 'Multiline jsdoc blocks are prohibited by ' +\n 'your configuration but the block has multiple tags.',\n );\n\n return;\n }\n } else if (jsdoc.tags.length === 1 && jsdoc.description.trim()) {\n if (!allowMultipleTags) {\n utils.reportJSDoc(\n 'Multiline jsdoc blocks are prohibited by ' +\n 'your configuration but the block has a description with a tag.',\n );\n\n return;\n }\n } else {\n const fixer = () => {\n jsdoc.source = [\n {\n number: 1,\n source: '',\n tokens: jsdoc.source.reduce((obj, {\n tokens: {\n description: desc,\n lineEnd,\n name: nme,\n postName,\n postTag,\n postType,\n tag: tg,\n type: typ,\n },\n }) => {\n if (typ) {\n obj.type = typ;\n }\n\n if (tg && typ && nme) {\n obj.postType = postType;\n }\n\n if (nme) {\n obj.name += nme;\n }\n\n if (nme && desc) {\n obj.postName = postName;\n }\n\n obj.description += desc;\n\n const nameOrDescription = obj.description || obj.name;\n if (\n nameOrDescription && nameOrDescription.slice(-1) !== ' '\n ) {\n obj.description += ' ';\n }\n\n obj.lineEnd = lineEnd;\n\n // Already filtered for multiple tags\n obj.tag += tg;\n if (tg) {\n obj.postTag = postTag || ' ';\n }\n\n return obj;\n }, utils.seedTokens({\n delimiter: '/**',\n end: '*/',\n postDelimiter: ' ',\n })),\n },\n ];\n };\n\n utils.reportJSDoc(\n 'Multiline jsdoc blocks are prohibited by ' +\n 'your configuration.',\n null,\n fixer,\n );\n\n return;\n }\n }\n\n lineChecks();\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Controls how and whether jsdoc blocks can be expressed as single or multiple line blocks.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/multiline-blocks.md#repos-sticky-header',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n allowMultipleTags: {\n type: 'boolean',\n },\n minimumLengthForMultiline: {\n type: 'integer',\n },\n multilineTags: {\n anyOf: [\n {\n enum: [\n '*',\n ],\n type: 'string',\n }, {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n ],\n },\n noFinalLineText: {\n type: 'boolean',\n },\n noMultilineBlocks: {\n type: 'boolean',\n },\n noSingleLineBlocks: {\n type: 'boolean',\n },\n noZeroLineText: {\n type: 'boolean',\n },\n requireSingleLineUnderCount: {\n type: 'number',\n },\n singleLineTags: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,69 +1,92 @@
|
|
|
1
|
-
|
|
2
|
-
const require_iterateJsdoc = require('../iterateJsdoc.cjs');
|
|
3
|
-
const comment_parser = require_rolldown_runtime.__toESM(require("comment-parser"));
|
|
1
|
+
"use strict";
|
|
4
2
|
|
|
5
|
-
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _iterateJsdoc = _interopRequireDefault(require("../iterateJsdoc.cjs"));
|
|
8
|
+
var _commentParser = require("comment-parser");
|
|
9
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
|
+
// Neither a single nor 3+ asterisks are valid jsdoc per
|
|
11
|
+
// https://jsdoc.app/about-getting-started.html#adding-documentation-comments-to-your-code
|
|
6
12
|
const commentRegexp = /^\/\*(?!\*)/v;
|
|
7
13
|
const extraAsteriskCommentRegexp = /^\/\*{3,}/v;
|
|
8
|
-
var
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
14
|
+
var _default = exports.default = (0, _iterateJsdoc.default)(({
|
|
15
|
+
allComments,
|
|
16
|
+
context,
|
|
17
|
+
makeReport,
|
|
18
|
+
sourceCode
|
|
19
|
+
}) => {
|
|
20
|
+
const [{
|
|
21
|
+
ignore = ['ts-check', 'ts-expect-error', 'ts-ignore', 'ts-nocheck'],
|
|
22
|
+
preventAllMultiAsteriskBlocks = false
|
|
23
|
+
} = {}] = context.options;
|
|
24
|
+
let extraAsterisks = false;
|
|
25
|
+
const nonJsdocNodes = /** @type {import('estree').Node[]} */allComments.filter(comment => {
|
|
26
|
+
const commentText = sourceCode.getText(comment);
|
|
27
|
+
const initialText = commentText.replace(commentRegexp, '').trimStart();
|
|
28
|
+
if (['eslint'].some(directive => {
|
|
29
|
+
return initialText.startsWith(directive);
|
|
30
|
+
})) {
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
let sliceIndex = 2;
|
|
34
|
+
if (!commentRegexp.test(commentText)) {
|
|
35
|
+
const multiline = extraAsteriskCommentRegexp.exec(commentText)?.[0];
|
|
36
|
+
if (!multiline) {
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
sliceIndex = multiline.length;
|
|
40
|
+
extraAsterisks = true;
|
|
41
|
+
if (preventAllMultiAsteriskBlocks) {
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
const tags = ((0, _commentParser.parse)(`${commentText.slice(0, 2)}*${commentText.slice(sliceIndex)}`)[0] || {}).tags ?? [];
|
|
46
|
+
return tags.length && !tags.some(({
|
|
47
|
+
tag
|
|
48
|
+
}) => {
|
|
49
|
+
return ignore.includes(tag);
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
if (!nonJsdocNodes.length) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
for (const node of nonJsdocNodes) {
|
|
56
|
+
const report = /** @type {import('../iterateJsdoc.js').MakeReport} */makeReport(context, node);
|
|
57
|
+
|
|
58
|
+
// eslint-disable-next-line no-loop-func
|
|
59
|
+
const fix = /** @type {import('eslint').Rule.ReportFixer} */fixer => {
|
|
60
|
+
const text = sourceCode.getText(node);
|
|
61
|
+
return fixer.replaceText(node, extraAsterisks ? text.replace(extraAsteriskCommentRegexp, '/**') : text.replace('/*', '/**'));
|
|
62
|
+
};
|
|
63
|
+
report('Expected JSDoc-like comment to begin with two asterisks.', fix);
|
|
64
|
+
}
|
|
44
65
|
}, {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
66
|
+
checkFile: true,
|
|
67
|
+
meta: {
|
|
68
|
+
docs: {
|
|
69
|
+
description: 'This rule checks for multi-line-style comments which fail to meet the criteria of a jsdoc block.',
|
|
70
|
+
url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-bad-blocks.md#repos-sticky-header'
|
|
71
|
+
},
|
|
72
|
+
fixable: 'code',
|
|
73
|
+
schema: [{
|
|
74
|
+
additionalProperties: false,
|
|
75
|
+
properties: {
|
|
76
|
+
ignore: {
|
|
77
|
+
items: {
|
|
78
|
+
type: 'string'
|
|
79
|
+
},
|
|
80
|
+
type: 'array'
|
|
81
|
+
},
|
|
82
|
+
preventAllMultiAsteriskBlocks: {
|
|
83
|
+
type: 'boolean'
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
type: 'object'
|
|
87
|
+
}],
|
|
88
|
+
type: 'layout'
|
|
89
|
+
}
|
|
65
90
|
});
|
|
66
|
-
|
|
67
|
-
//#endregion
|
|
68
|
-
exports.default = noBadBlocks_default;
|
|
91
|
+
module.exports = exports.default;
|
|
69
92
|
//# sourceMappingURL=noBadBlocks.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"noBadBlocks.cjs","names":["iterateJsdoc"],"sources":["../../src/rules/noBadBlocks.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\nimport {\n parse as commentParser,\n} from 'comment-parser';\n\n// Neither a single nor 3+ asterisks are valid jsdoc per\n// https://jsdoc.app/about-getting-started.html#adding-documentation-comments-to-your-code\nconst commentRegexp = /^\\/\\*(?!\\*)/v;\nconst extraAsteriskCommentRegexp = /^\\/\\*{3,}/v;\n\nexport default iterateJsdoc(({\n allComments,\n context,\n makeReport,\n sourceCode,\n}) => {\n const [\n {\n ignore = [\n 'ts-check',\n 'ts-expect-error',\n 'ts-ignore',\n 'ts-nocheck',\n ],\n preventAllMultiAsteriskBlocks = false,\n } = {},\n ] = context.options;\n\n let extraAsterisks = false;\n const nonJsdocNodes = /** @type {import('estree').Node[]} */ (\n allComments\n ).filter((comment) => {\n const commentText = sourceCode.getText(comment);\n\n const initialText = commentText.replace(commentRegexp, '').trimStart();\n if ([\n 'eslint',\n ].some((directive) => {\n return initialText.startsWith(directive);\n })) {\n return false;\n }\n\n let sliceIndex = 2;\n if (!commentRegexp.test(commentText)) {\n const multiline = extraAsteriskCommentRegexp.exec(commentText)?.[0];\n if (!multiline) {\n return false;\n }\n\n sliceIndex = multiline.length;\n extraAsterisks = true;\n if (preventAllMultiAsteriskBlocks) {\n return true;\n }\n }\n\n const tags = (commentParser(\n `${commentText.slice(0, 2)}*${commentText.slice(sliceIndex)}`,\n )[0] || {}).tags ?? [];\n\n return tags.length && !tags.some(({\n tag,\n }) => {\n return ignore.includes(tag);\n });\n });\n\n if (!nonJsdocNodes.length) {\n return;\n }\n\n for (const node of nonJsdocNodes) {\n const report = /** @type {import('../iterateJsdoc.js').MakeReport} */ (\n makeReport\n )(context, node);\n\n // eslint-disable-next-line no-loop-func\n const fix = /** @type {import('eslint').Rule.ReportFixer} */ (fixer) => {\n const text = sourceCode.getText(node);\n\n return fixer.replaceText(\n node,\n extraAsterisks ?\n text.replace(extraAsteriskCommentRegexp, '/**') :\n text.replace('/*', '/**'),\n );\n };\n\n report('Expected JSDoc-like comment to begin with two asterisks.', fix);\n }\n}, {\n checkFile: true,\n meta: {\n docs: {\n description: 'This rule checks for multi-line-style comments which fail to meet the criteria of a jsdoc block.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-bad-blocks.md#repos-sticky-header',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n ignore: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n preventAllMultiAsteriskBlocks: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'layout',\n },\n});\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"noBadBlocks.cjs","names":["_iterateJsdoc","_interopRequireDefault","require","_commentParser","e","__esModule","default","commentRegexp","extraAsteriskCommentRegexp","_default","exports","iterateJsdoc","allComments","context","makeReport","sourceCode","ignore","preventAllMultiAsteriskBlocks","options","extraAsterisks","nonJsdocNodes","filter","comment","commentText","getText","initialText","replace","trimStart","some","directive","startsWith","sliceIndex","test","multiline","exec","length","tags","commentParser","slice","tag","includes","node","report","fix","fixer","text","replaceText","checkFile","meta","docs","description","url","fixable","schema","additionalProperties","properties","items","type","module"],"sources":["../../src/rules/noBadBlocks.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\nimport {\n parse as commentParser,\n} from 'comment-parser';\n\n// Neither a single nor 3+ asterisks are valid jsdoc per\n// https://jsdoc.app/about-getting-started.html#adding-documentation-comments-to-your-code\nconst commentRegexp = /^\\/\\*(?!\\*)/v;\nconst extraAsteriskCommentRegexp = /^\\/\\*{3,}/v;\n\nexport default iterateJsdoc(({\n allComments,\n context,\n makeReport,\n sourceCode,\n}) => {\n const [\n {\n ignore = [\n 'ts-check',\n 'ts-expect-error',\n 'ts-ignore',\n 'ts-nocheck',\n ],\n preventAllMultiAsteriskBlocks = false,\n } = {},\n ] = context.options;\n\n let extraAsterisks = false;\n const nonJsdocNodes = /** @type {import('estree').Node[]} */ (\n allComments\n ).filter((comment) => {\n const commentText = sourceCode.getText(comment);\n\n const initialText = commentText.replace(commentRegexp, '').trimStart();\n if ([\n 'eslint',\n ].some((directive) => {\n return initialText.startsWith(directive);\n })) {\n return false;\n }\n\n let sliceIndex = 2;\n if (!commentRegexp.test(commentText)) {\n const multiline = extraAsteriskCommentRegexp.exec(commentText)?.[0];\n if (!multiline) {\n return false;\n }\n\n sliceIndex = multiline.length;\n extraAsterisks = true;\n if (preventAllMultiAsteriskBlocks) {\n return true;\n }\n }\n\n const tags = (commentParser(\n `${commentText.slice(0, 2)}*${commentText.slice(sliceIndex)}`,\n )[0] || {}).tags ?? [];\n\n return tags.length && !tags.some(({\n tag,\n }) => {\n return ignore.includes(tag);\n });\n });\n\n if (!nonJsdocNodes.length) {\n return;\n }\n\n for (const node of nonJsdocNodes) {\n const report = /** @type {import('../iterateJsdoc.js').MakeReport} */ (\n makeReport\n )(context, node);\n\n // eslint-disable-next-line no-loop-func\n const fix = /** @type {import('eslint').Rule.ReportFixer} */ (fixer) => {\n const text = sourceCode.getText(node);\n\n return fixer.replaceText(\n node,\n extraAsterisks ?\n text.replace(extraAsteriskCommentRegexp, '/**') :\n text.replace('/*', '/**'),\n );\n };\n\n report('Expected JSDoc-like comment to begin with two asterisks.', fix);\n }\n}, {\n checkFile: true,\n meta: {\n docs: {\n description: 'This rule checks for multi-line-style comments which fail to meet the criteria of a jsdoc block.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-bad-blocks.md#repos-sticky-header',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n ignore: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n preventAllMultiAsteriskBlocks: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'layout',\n },\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,41 +1,63 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _iterateJsdoc = _interopRequireDefault(require("../iterateJsdoc.cjs"));
|
|
8
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
4
9
|
const anyWhitespaceLines = /^\s*$/v;
|
|
5
10
|
const atLeastTwoLinesWhitespace = /^[ \t]*\n[ \t]*\n\s*$/v;
|
|
6
|
-
var
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
11
|
+
var _default = exports.default = (0, _iterateJsdoc.default)(({
|
|
12
|
+
jsdoc,
|
|
13
|
+
utils
|
|
14
|
+
}) => {
|
|
15
|
+
const {
|
|
16
|
+
description,
|
|
17
|
+
descriptions,
|
|
18
|
+
lastDescriptionLine
|
|
19
|
+
} = utils.getDescription();
|
|
20
|
+
const regex = jsdoc.tags.length ? anyWhitespaceLines : atLeastTwoLinesWhitespace;
|
|
21
|
+
if (descriptions.length && regex.test(description)) {
|
|
22
|
+
if (jsdoc.tags.length) {
|
|
23
|
+
utils.reportJSDoc('There should be no blank lines in block descriptions followed by tags.', {
|
|
24
|
+
line: lastDescriptionLine
|
|
25
|
+
}, () => {
|
|
26
|
+
utils.setBlockDescription(() => {
|
|
27
|
+
// Remove all lines
|
|
28
|
+
return [];
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
} else {
|
|
32
|
+
utils.reportJSDoc('There should be no extra blank lines in block descriptions not followed by tags.', {
|
|
33
|
+
line: lastDescriptionLine
|
|
34
|
+
}, () => {
|
|
35
|
+
utils.setBlockDescription((info, seedTokens) => {
|
|
36
|
+
return [
|
|
37
|
+
// Keep the starting line
|
|
38
|
+
{
|
|
39
|
+
number: 0,
|
|
40
|
+
source: '',
|
|
41
|
+
tokens: seedTokens({
|
|
42
|
+
...info,
|
|
43
|
+
description: ''
|
|
44
|
+
})
|
|
45
|
+
}];
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
}
|
|
26
50
|
}, {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
51
|
+
iterateAllJsdocs: true,
|
|
52
|
+
meta: {
|
|
53
|
+
docs: {
|
|
54
|
+
description: 'Detects and removes extra lines of a blank block description',
|
|
55
|
+
url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-blank-block-descriptions.md#repos-sticky-header'
|
|
56
|
+
},
|
|
57
|
+
fixable: 'whitespace',
|
|
58
|
+
schema: [],
|
|
59
|
+
type: 'layout'
|
|
60
|
+
}
|
|
37
61
|
});
|
|
38
|
-
|
|
39
|
-
//#endregion
|
|
40
|
-
exports.default = noBlankBlockDescriptions_default;
|
|
62
|
+
module.exports = exports.default;
|
|
41
63
|
//# sourceMappingURL=noBlankBlockDescriptions.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"noBlankBlockDescriptions.cjs","names":["iterateJsdoc"],"sources":["../../src/rules/noBlankBlockDescriptions.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\n\nconst anyWhitespaceLines = /^\\s*$/v;\nconst atLeastTwoLinesWhitespace = /^[ \\t]*\\n[ \\t]*\\n\\s*$/v;\n\nexport default iterateJsdoc(({\n jsdoc,\n utils,\n}) => {\n const {\n description,\n descriptions,\n lastDescriptionLine,\n } = utils.getDescription();\n\n const regex = jsdoc.tags.length ?\n anyWhitespaceLines :\n atLeastTwoLinesWhitespace;\n\n if (descriptions.length && regex.test(description)) {\n if (jsdoc.tags.length) {\n utils.reportJSDoc(\n 'There should be no blank lines in block descriptions followed by tags.',\n {\n line: lastDescriptionLine,\n },\n () => {\n utils.setBlockDescription(() => {\n // Remove all lines\n return [];\n });\n },\n );\n } else {\n utils.reportJSDoc(\n 'There should be no extra blank lines in block descriptions not followed by tags.',\n {\n line: lastDescriptionLine,\n },\n () => {\n utils.setBlockDescription((info, seedTokens) => {\n return [\n // Keep the starting line\n {\n number: 0,\n source: '',\n tokens: seedTokens({\n ...info,\n description: '',\n }),\n },\n ];\n });\n },\n );\n }\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Detects and removes extra lines of a blank block description',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-blank-block-descriptions.md#repos-sticky-header',\n },\n fixable: 'whitespace',\n schema: [],\n type: 'layout',\n },\n});\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"noBlankBlockDescriptions.cjs","names":["_iterateJsdoc","_interopRequireDefault","require","e","__esModule","default","anyWhitespaceLines","atLeastTwoLinesWhitespace","_default","exports","iterateJsdoc","jsdoc","utils","description","descriptions","lastDescriptionLine","getDescription","regex","tags","length","test","reportJSDoc","line","setBlockDescription","info","seedTokens","number","source","tokens","iterateAllJsdocs","meta","docs","url","fixable","schema","type","module"],"sources":["../../src/rules/noBlankBlockDescriptions.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\n\nconst anyWhitespaceLines = /^\\s*$/v;\nconst atLeastTwoLinesWhitespace = /^[ \\t]*\\n[ \\t]*\\n\\s*$/v;\n\nexport default iterateJsdoc(({\n jsdoc,\n utils,\n}) => {\n const {\n description,\n descriptions,\n lastDescriptionLine,\n } = utils.getDescription();\n\n const regex = jsdoc.tags.length ?\n anyWhitespaceLines :\n atLeastTwoLinesWhitespace;\n\n if (descriptions.length && regex.test(description)) {\n if (jsdoc.tags.length) {\n utils.reportJSDoc(\n 'There should be no blank lines in block descriptions followed by tags.',\n {\n line: lastDescriptionLine,\n },\n () => {\n utils.setBlockDescription(() => {\n // Remove all lines\n return [];\n });\n },\n );\n } else {\n utils.reportJSDoc(\n 'There should be no extra blank lines in block descriptions not followed by tags.',\n {\n line: lastDescriptionLine,\n },\n () => {\n utils.setBlockDescription((info, seedTokens) => {\n return [\n // Keep the starting line\n {\n number: 0,\n source: '',\n tokens: seedTokens({\n ...info,\n description: '',\n }),\n },\n ];\n });\n },\n );\n }\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Detects and removes extra lines of a blank block description',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-blank-block-descriptions.md#repos-sticky-header',\n },\n fixable: 'whitespace',\n schema: [],\n type: 'layout',\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,MAAMG,kBAAkB,GAAG,QAAQ;AACnC,MAAMC,yBAAyB,GAAG,wBAAwB;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAJ,OAAA,GAE5C,IAAAK,qBAAY,EAAC,CAAC;EAC3BC,KAAK;EACLC;AACF,CAAC,KAAK;EACJ,MAAM;IACJC,WAAW;IACXC,YAAY;IACZC;EACF,CAAC,GAAGH,KAAK,CAACI,cAAc,CAAC,CAAC;EAE1B,MAAMC,KAAK,GAAGN,KAAK,CAACO,IAAI,CAACC,MAAM,GAC7Bb,kBAAkB,GAClBC,yBAAyB;EAE3B,IAAIO,YAAY,CAACK,MAAM,IAAIF,KAAK,CAACG,IAAI,CAACP,WAAW,CAAC,EAAE;IAClD,IAAIF,KAAK,CAACO,IAAI,CAACC,MAAM,EAAE;MACrBP,KAAK,CAACS,WAAW,CACf,wEAAwE,EACxE;QACEC,IAAI,EAAEP;MACR,CAAC,EACD,MAAM;QACJH,KAAK,CAACW,mBAAmB,CAAC,MAAM;UAC9B;UACA,OAAO,EAAE;QACX,CAAC,CAAC;MACJ,CACF,CAAC;IACH,CAAC,MAAM;MACLX,KAAK,CAACS,WAAW,CACf,kFAAkF,EAClF;QACEC,IAAI,EAAEP;MACR,CAAC,EACD,MAAM;QACJH,KAAK,CAACW,mBAAmB,CAAC,CAACC,IAAI,EAAEC,UAAU,KAAK;UAC9C,OAAO;UACL;UACA;YACEC,MAAM,EAAE,CAAC;YACTC,MAAM,EAAE,EAAE;YACVC,MAAM,EAAEH,UAAU,CAAC;cACjB,GAAGD,IAAI;cACPX,WAAW,EAAE;YACf,CAAC;UACH,CAAC,CACF;QACH,CAAC,CAAC;MACJ,CACF,CAAC;IACH;EACF;AACF,CAAC,EAAE;EACDgB,gBAAgB,EAAE,IAAI;EACtBC,IAAI,EAAE;IACJC,IAAI,EAAE;MACJlB,WAAW,EAAE,8DAA8D;MAC3EmB,GAAG,EAAE;IACP,CAAC;IACDC,OAAO,EAAE,YAAY;IACrBC,MAAM,EAAE,EAAE;IACVC,IAAI,EAAE;EACR;AACF,CAAC,CAAC;AAAAC,MAAA,CAAA3B,OAAA,GAAAA,OAAA,CAAAJ,OAAA","ignoreList":[]}
|
|
@@ -1,30 +1,52 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _iterateJsdoc = _interopRequireDefault(require("../iterateJsdoc.cjs"));
|
|
8
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
9
|
+
var _default = exports.default = (0, _iterateJsdoc.default)(({
|
|
10
|
+
context,
|
|
11
|
+
jsdoc,
|
|
12
|
+
utils
|
|
13
|
+
}) => {
|
|
14
|
+
if (jsdoc.tags.length) {
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
const {
|
|
18
|
+
description,
|
|
19
|
+
lastDescriptionLine
|
|
20
|
+
} = utils.getDescription();
|
|
21
|
+
if (description.trim()) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
const {
|
|
25
|
+
enableFixer
|
|
26
|
+
} = context.options[0] || {};
|
|
27
|
+
utils.reportJSDoc('No empty blocks', {
|
|
28
|
+
line: lastDescriptionLine
|
|
29
|
+
}, enableFixer ? () => {
|
|
30
|
+
jsdoc.source.splice(0, jsdoc.source.length);
|
|
31
|
+
} : null);
|
|
12
32
|
}, {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
33
|
+
iterateAllJsdocs: true,
|
|
34
|
+
meta: {
|
|
35
|
+
docs: {
|
|
36
|
+
description: 'Removes empty blocks with nothing but possibly line breaks',
|
|
37
|
+
url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-blank-blocks.md#repos-sticky-header'
|
|
38
|
+
},
|
|
39
|
+
fixable: 'code',
|
|
40
|
+
schema: [{
|
|
41
|
+
additionalProperties: false,
|
|
42
|
+
properties: {
|
|
43
|
+
enableFixer: {
|
|
44
|
+
type: 'boolean'
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}],
|
|
48
|
+
type: 'suggestion'
|
|
49
|
+
}
|
|
26
50
|
});
|
|
27
|
-
|
|
28
|
-
//#endregion
|
|
29
|
-
exports.default = noBlankBlocks_default;
|
|
51
|
+
module.exports = exports.default;
|
|
30
52
|
//# sourceMappingURL=noBlankBlocks.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"noBlankBlocks.cjs","names":["iterateJsdoc"],"sources":["../../src/rules/noBlankBlocks.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\n\nexport default iterateJsdoc(({\n context,\n jsdoc,\n utils,\n}) => {\n if (jsdoc.tags.length) {\n return;\n }\n\n const {\n description,\n lastDescriptionLine,\n } = utils.getDescription();\n if (description.trim()) {\n return;\n }\n\n const {\n enableFixer,\n } = context.options[0] || {};\n\n utils.reportJSDoc(\n 'No empty blocks',\n {\n line: lastDescriptionLine,\n },\n enableFixer ? () => {\n jsdoc.source.splice(0, jsdoc.source.length);\n } : null,\n );\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Removes empty blocks with nothing but possibly line breaks',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-blank-blocks.md#repos-sticky-header',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n enableFixer: {\n type: 'boolean',\n },\n },\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"noBlankBlocks.cjs","names":["_iterateJsdoc","_interopRequireDefault","require","e","__esModule","default","_default","exports","iterateJsdoc","context","jsdoc","utils","tags","length","description","lastDescriptionLine","getDescription","trim","enableFixer","options","reportJSDoc","line","source","splice","iterateAllJsdocs","meta","docs","url","fixable","schema","additionalProperties","properties","type","module"],"sources":["../../src/rules/noBlankBlocks.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\n\nexport default iterateJsdoc(({\n context,\n jsdoc,\n utils,\n}) => {\n if (jsdoc.tags.length) {\n return;\n }\n\n const {\n description,\n lastDescriptionLine,\n } = utils.getDescription();\n if (description.trim()) {\n return;\n }\n\n const {\n enableFixer,\n } = context.options[0] || {};\n\n utils.reportJSDoc(\n 'No empty blocks',\n {\n line: lastDescriptionLine,\n },\n enableFixer ? () => {\n jsdoc.source.splice(0, jsdoc.source.length);\n } : null,\n );\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Removes empty blocks with nothing but possibly line breaks',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-blank-blocks.md#repos-sticky-header',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n enableFixer: {\n type: 'boolean',\n },\n },\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;AAAA,IAAAG,QAAA,GAAAC,OAAA,CAAAF,OAAA,GAE/B,IAAAG,qBAAY,EAAC,CAAC;EAC3BC,OAAO;EACPC,KAAK;EACLC;AACF,CAAC,KAAK;EACJ,IAAID,KAAK,CAACE,IAAI,CAACC,MAAM,EAAE;IACrB;EACF;EAEA,MAAM;IACJC,WAAW;IACXC;EACF,CAAC,GAAGJ,KAAK,CAACK,cAAc,CAAC,CAAC;EAC1B,IAAIF,WAAW,CAACG,IAAI,CAAC,CAAC,EAAE;IACtB;EACF;EAEA,MAAM;IACJC;EACF,CAAC,GAAGT,OAAO,CAACU,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;EAE5BR,KAAK,CAACS,WAAW,CACf,iBAAiB,EACjB;IACEC,IAAI,EAAEN;EACR,CAAC,EACDG,WAAW,GAAG,MAAM;IAClBR,KAAK,CAACY,MAAM,CAACC,MAAM,CAAC,CAAC,EAAEb,KAAK,CAACY,MAAM,CAACT,MAAM,CAAC;EAC7C,CAAC,GAAG,IACN,CAAC;AACH,CAAC,EAAE;EACDW,gBAAgB,EAAE,IAAI;EACtBC,IAAI,EAAE;IACJC,IAAI,EAAE;MACJZ,WAAW,EAAE,4DAA4D;MACzEa,GAAG,EAAE;IACP,CAAC;IACDC,OAAO,EAAE,MAAM;IACfC,MAAM,EAAE,CACN;MACEC,oBAAoB,EAAE,KAAK;MAC3BC,UAAU,EAAE;QACVb,WAAW,EAAE;UACXc,IAAI,EAAE;QACR;MACF;IACF,CAAC,CACF;IACDA,IAAI,EAAE;EACR;AACF,CAAC,CAAC;AAAAC,MAAA,CAAA1B,OAAA,GAAAA,OAAA,CAAAF,OAAA","ignoreList":[]}
|