eslint-plugin-jsdoc 47.0.1 → 48.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{WarnSettings.js → WarnSettings.cjs} +2 -2
- package/dist/WarnSettings.cjs.map +1 -0
- package/dist/{alignTransform.js → alignTransform.cjs} +2 -2
- package/dist/alignTransform.cjs.map +1 -0
- package/dist/{defaultTagOrder.js → defaultTagOrder.cjs} +1 -1
- package/dist/defaultTagOrder.cjs.map +1 -0
- package/dist/{exportParser.js → exportParser.cjs} +32 -36
- package/dist/exportParser.cjs.map +1 -0
- package/dist/{generateRule.js → generateRule.cjs} +7 -4
- package/dist/generateRule.cjs.map +1 -0
- package/dist/{getDefaultTagStructureForMode.js → getDefaultTagStructureForMode.cjs} +1 -1
- package/dist/getDefaultTagStructureForMode.cjs.map +1 -0
- package/dist/{index.js → index.cjs} +60 -59
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/{iterateJsdoc.js → iterateJsdoc.cjs} +16 -21
- package/dist/iterateJsdoc.cjs.map +1 -0
- package/dist/{jsdocUtils.js → jsdocUtils.cjs} +17 -17
- package/dist/jsdocUtils.cjs.map +1 -0
- package/dist/rules/{checkAccess.js → checkAccess.cjs} +2 -2
- package/dist/rules/checkAccess.cjs.map +1 -0
- package/dist/rules/{checkAlignment.js → checkAlignment.cjs} +2 -2
- package/dist/rules/checkAlignment.cjs.map +1 -0
- package/dist/rules/{checkExamples.js → checkExamples.cjs} +2 -2
- package/dist/rules/checkExamples.cjs.map +1 -0
- package/dist/rules/{checkIndentation.js → checkIndentation.cjs} +2 -2
- package/dist/rules/checkIndentation.cjs.map +1 -0
- package/dist/rules/{checkLineAlignment.js → checkLineAlignment.cjs} +3 -3
- package/dist/rules/checkLineAlignment.cjs.map +1 -0
- package/dist/rules/{checkParamNames.js → checkParamNames.cjs} +2 -2
- package/dist/rules/checkParamNames.cjs.map +1 -0
- package/dist/rules/{checkPropertyNames.js → checkPropertyNames.cjs} +2 -2
- package/dist/rules/checkPropertyNames.cjs.map +1 -0
- package/dist/rules/{checkSyntax.js → checkSyntax.cjs} +2 -2
- package/dist/rules/checkSyntax.cjs.map +1 -0
- package/dist/rules/{checkTagNames.js → checkTagNames.cjs} +2 -2
- package/dist/rules/checkTagNames.cjs.map +1 -0
- package/dist/rules/{checkTypes.js → checkTypes.cjs} +2 -2
- package/dist/rules/checkTypes.cjs.map +1 -0
- package/dist/rules/{checkValues.js → checkValues.cjs} +2 -2
- package/dist/rules/checkValues.cjs.map +1 -0
- package/dist/rules/{emptyTags.js → emptyTags.cjs} +2 -2
- package/dist/rules/emptyTags.cjs.map +1 -0
- package/dist/rules/{implementsOnClasses.js → implementsOnClasses.cjs} +2 -2
- package/dist/rules/implementsOnClasses.cjs.map +1 -0
- package/dist/rules/{importsAsDependencies.js → importsAsDependencies.cjs} +10 -12
- package/dist/rules/importsAsDependencies.cjs.map +1 -0
- package/dist/rules/{informativeDocs.js → informativeDocs.cjs} +2 -2
- package/dist/rules/informativeDocs.cjs.map +1 -0
- package/dist/rules/{matchDescription.js → matchDescription.cjs} +2 -2
- package/dist/rules/matchDescription.cjs.map +1 -0
- package/dist/rules/{matchName.js → matchName.cjs} +2 -2
- package/dist/rules/matchName.cjs.map +1 -0
- package/dist/rules/{multilineBlocks.js → multilineBlocks.cjs} +2 -2
- package/dist/rules/multilineBlocks.cjs.map +1 -0
- package/dist/rules/{noBadBlocks.js → noBadBlocks.cjs} +2 -2
- package/dist/rules/noBadBlocks.cjs.map +1 -0
- package/dist/rules/{noBlankBlockDescriptions.js → noBlankBlockDescriptions.cjs} +2 -2
- package/dist/rules/noBlankBlockDescriptions.cjs.map +1 -0
- package/dist/rules/{noBlankBlocks.js → noBlankBlocks.cjs} +2 -2
- package/dist/rules/noBlankBlocks.cjs.map +1 -0
- package/dist/rules/{noDefaults.js → noDefaults.cjs} +2 -2
- package/dist/rules/noDefaults.cjs.map +1 -0
- package/dist/rules/{noMissingSyntax.js → noMissingSyntax.cjs} +2 -2
- package/dist/rules/noMissingSyntax.cjs.map +1 -0
- package/dist/rules/{noMultiAsterisks.js → noMultiAsterisks.cjs} +2 -2
- package/dist/rules/noMultiAsterisks.cjs.map +1 -0
- package/dist/rules/{noRestrictedSyntax.js → noRestrictedSyntax.cjs} +2 -2
- package/dist/rules/noRestrictedSyntax.cjs.map +1 -0
- package/dist/rules/{noTypes.js → noTypes.cjs} +2 -2
- package/dist/rules/noTypes.cjs.map +1 -0
- package/dist/rules/{noUndefinedTypes.js → noUndefinedTypes.cjs} +5 -5
- package/dist/rules/noUndefinedTypes.cjs.map +1 -0
- package/dist/rules/{requireAsteriskPrefix.js → requireAsteriskPrefix.cjs} +2 -2
- package/dist/rules/requireAsteriskPrefix.cjs.map +1 -0
- package/dist/rules/{requireDescription.js → requireDescription.cjs} +2 -2
- package/dist/rules/requireDescription.cjs.map +1 -0
- package/dist/rules/{requireDescriptionCompleteSentence.js → requireDescriptionCompleteSentence.cjs} +2 -2
- package/dist/rules/requireDescriptionCompleteSentence.cjs.map +1 -0
- package/dist/rules/{requireExample.js → requireExample.cjs} +2 -2
- package/dist/rules/requireExample.cjs.map +1 -0
- package/dist/rules/{requireFileOverview.js → requireFileOverview.cjs} +2 -2
- package/dist/rules/requireFileOverview.cjs.map +1 -0
- package/dist/rules/{requireHyphenBeforeParamDescription.js → requireHyphenBeforeParamDescription.cjs} +2 -2
- package/dist/rules/requireHyphenBeforeParamDescription.cjs.map +1 -0
- package/dist/rules/{requireJsdoc.js → requireJsdoc.cjs} +5 -5
- package/dist/rules/requireJsdoc.cjs.map +1 -0
- package/dist/rules/{requireParam.js → requireParam.cjs} +2 -2
- package/dist/rules/requireParam.cjs.map +1 -0
- package/dist/rules/{requireParamDescription.js → requireParamDescription.cjs} +2 -2
- package/dist/rules/requireParamDescription.cjs.map +1 -0
- package/dist/rules/{requireParamName.js → requireParamName.cjs} +2 -2
- package/dist/rules/requireParamName.cjs.map +1 -0
- package/dist/rules/{requireParamType.js → requireParamType.cjs} +2 -2
- package/dist/rules/requireParamType.cjs.map +1 -0
- package/dist/rules/{requireProperty.js → requireProperty.cjs} +2 -2
- package/dist/rules/requireProperty.cjs.map +1 -0
- package/dist/rules/{requirePropertyDescription.js → requirePropertyDescription.cjs} +2 -2
- package/dist/rules/requirePropertyDescription.cjs.map +1 -0
- package/dist/rules/{requirePropertyName.js → requirePropertyName.cjs} +2 -2
- package/dist/rules/requirePropertyName.cjs.map +1 -0
- package/dist/rules/{requirePropertyType.js → requirePropertyType.cjs} +2 -2
- package/dist/rules/requirePropertyType.cjs.map +1 -0
- package/dist/rules/{requireReturns.js → requireReturns.cjs} +4 -4
- package/dist/rules/requireReturns.cjs.map +1 -0
- package/dist/rules/{requireReturnsCheck.js → requireReturnsCheck.cjs} +2 -2
- package/dist/rules/requireReturnsCheck.cjs.map +1 -0
- package/dist/rules/{requireReturnsDescription.js → requireReturnsDescription.cjs} +2 -2
- package/dist/rules/requireReturnsDescription.cjs.map +1 -0
- package/dist/rules/{requireReturnsType.js → requireReturnsType.cjs} +2 -2
- package/dist/rules/requireReturnsType.cjs.map +1 -0
- package/dist/rules/{requireThrows.js → requireThrows.cjs} +2 -2
- package/dist/rules/requireThrows.cjs.map +1 -0
- package/dist/rules/{requireYields.js → requireYields.cjs} +2 -2
- package/dist/rules/requireYields.cjs.map +1 -0
- package/dist/rules/{requireYieldsCheck.js → requireYieldsCheck.cjs} +2 -2
- package/dist/rules/requireYieldsCheck.cjs.map +1 -0
- package/dist/rules/{sortTags.js → sortTags.cjs} +4 -4
- package/dist/rules/sortTags.cjs.map +1 -0
- package/dist/rules/{tagLines.js → tagLines.cjs} +2 -2
- package/dist/rules/tagLines.cjs.map +1 -0
- package/dist/rules/{textEscaping.js → textEscaping.cjs} +2 -2
- package/dist/rules/textEscaping.cjs.map +1 -0
- package/dist/rules/{validTypes.js → validTypes.cjs} +2 -2
- package/dist/rules/validTypes.cjs.map +1 -0
- package/dist/{tagNames.js → tagNames.cjs} +1 -1
- package/dist/tagNames.cjs.map +1 -0
- package/dist/utils/{hasReturnValue.js → hasReturnValue.cjs} +14 -17
- package/dist/utils/hasReturnValue.cjs.map +1 -0
- package/{eslint.config.mjs → eslint.config.js} +37 -28
- package/package.json +16 -16
- package/dist/WarnSettings.js.map +0 -1
- package/dist/alignTransform.js.map +0 -1
- package/dist/defaultTagOrder.js.map +0 -1
- package/dist/exportParser.js.map +0 -1
- package/dist/generateRule.js.map +0 -1
- package/dist/getDefaultTagStructureForMode.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/iterateJsdoc.js.map +0 -1
- package/dist/jsdocUtils.js.map +0 -1
- package/dist/rules/checkAccess.js.map +0 -1
- package/dist/rules/checkAlignment.js.map +0 -1
- package/dist/rules/checkExamples.js.map +0 -1
- package/dist/rules/checkIndentation.js.map +0 -1
- package/dist/rules/checkLineAlignment.js.map +0 -1
- package/dist/rules/checkParamNames.js.map +0 -1
- package/dist/rules/checkPropertyNames.js.map +0 -1
- package/dist/rules/checkSyntax.js.map +0 -1
- package/dist/rules/checkTagNames.js.map +0 -1
- package/dist/rules/checkTypes.js.map +0 -1
- package/dist/rules/checkValues.js.map +0 -1
- package/dist/rules/emptyTags.js.map +0 -1
- package/dist/rules/implementsOnClasses.js.map +0 -1
- package/dist/rules/importsAsDependencies.js.map +0 -1
- package/dist/rules/informativeDocs.js.map +0 -1
- package/dist/rules/matchDescription.js.map +0 -1
- package/dist/rules/matchName.js.map +0 -1
- package/dist/rules/multilineBlocks.js.map +0 -1
- package/dist/rules/noBadBlocks.js.map +0 -1
- package/dist/rules/noBlankBlockDescriptions.js.map +0 -1
- package/dist/rules/noBlankBlocks.js.map +0 -1
- package/dist/rules/noDefaults.js.map +0 -1
- package/dist/rules/noMissingSyntax.js.map +0 -1
- package/dist/rules/noMultiAsterisks.js.map +0 -1
- package/dist/rules/noRestrictedSyntax.js.map +0 -1
- package/dist/rules/noTypes.js.map +0 -1
- package/dist/rules/noUndefinedTypes.js.map +0 -1
- package/dist/rules/requireAsteriskPrefix.js.map +0 -1
- package/dist/rules/requireDescription.js.map +0 -1
- package/dist/rules/requireDescriptionCompleteSentence.js.map +0 -1
- package/dist/rules/requireExample.js.map +0 -1
- package/dist/rules/requireFileOverview.js.map +0 -1
- package/dist/rules/requireHyphenBeforeParamDescription.js.map +0 -1
- package/dist/rules/requireJsdoc.js.map +0 -1
- package/dist/rules/requireParam.js.map +0 -1
- package/dist/rules/requireParamDescription.js.map +0 -1
- package/dist/rules/requireParamName.js.map +0 -1
- package/dist/rules/requireParamType.js.map +0 -1
- package/dist/rules/requireProperty.js.map +0 -1
- package/dist/rules/requirePropertyDescription.js.map +0 -1
- package/dist/rules/requirePropertyName.js.map +0 -1
- package/dist/rules/requirePropertyType.js.map +0 -1
- package/dist/rules/requireReturns.js.map +0 -1
- package/dist/rules/requireReturnsCheck.js.map +0 -1
- package/dist/rules/requireReturnsDescription.js.map +0 -1
- package/dist/rules/requireReturnsType.js.map +0 -1
- package/dist/rules/requireThrows.js.map +0 -1
- package/dist/rules/requireYields.js.map +0 -1
- package/dist/rules/requireYieldsCheck.js.map +0 -1
- package/dist/rules/sortTags.js.map +0 -1
- package/dist/rules/tagLines.js.map +0 -1
- package/dist/rules/textEscaping.js.map +0 -1
- package/dist/rules/validTypes.js.map +0 -1
- package/dist/tagNames.js.map +0 -1
- package/dist/utils/hasReturnValue.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"requireJsdoc.js","names":["_exportParser","_interopRequireDefault","require","_iterateJsdoc","_jsdocUtils","_jsdoccomment","obj","__esModule","default","OPTIONS_SCHEMA","additionalProperties","properties","checkConstructors","type","checkGetters","anyOf","enum","checkSetters","contexts","items","context","inlineCommentBlock","minLineCount","enableFixer","exemptEmptyConstructors","exemptEmptyFunctions","fixerMessage","publicOnly","oneOf","ancestorsOnly","cjs","esm","window","ArrowFunctionExpression","ClassDeclaration","ClassExpression","FunctionDeclaration","FunctionExpression","MethodDefinition","getOption","baseObject","option","key","options","getOptions","settings","undefined","baseObj","prop","Object","keys","opt","_default","exports","create","sourceCode","getSourceCode","getSettings","opts","requireOption","checkJsDoc","info","_handler","node","some","ctxt","count","underMinLine","_sourceCode$getText$m","getText","match","length","contextMinLineCount","find","ctx","selector","jsDocNode","getJSDocComment","jsdocUtils","exemptSpeciaMethods","description","inlineTags","problems","source","tags","isFunctionContext","isConstructor","functionParameterNames","getFunctionParameterNames","hasReturnValue","fix","fixer","lines","minLines","maxLines","baseNode","getReducedASTNode","decorator","getDecorator","indent","getIndent","text","loc","start","column","contxt","insertion","repeat","slice","insertTextBefore","report","end","line","messageId","Boolean","initModuleExports","initWindow","exported","exportParser","isUncommentedExport","hasOption","getContextObject","enforcedContexts","includes","parent","value","meta","docs","category","recommended","url","fixable","messages","missingJsDoc","schema","module"],"sources":["../../src/rules/requireJsdoc.js"],"sourcesContent":["import exportParser from '../exportParser.js';\nimport {\n getSettings,\n} from '../iterateJsdoc.js';\nimport jsdocUtils from '../jsdocUtils.js';\nimport {\n getDecorator,\n getJSDocComment,\n getReducedASTNode,\n} from '@es-joy/jsdoccomment';\n\n/**\n * @typedef {{\n * ancestorsOnly: boolean,\n * esm: boolean,\n * initModuleExports: boolean,\n * initWindow: boolean\n * }} RequireJsdocOpts\n */\n\n/** @type {import('json-schema').JSONSchema4} */\nconst OPTIONS_SCHEMA = {\n additionalProperties: false,\n properties: {\n checkConstructors: {\n default: true,\n type: 'boolean',\n },\n checkGetters: {\n anyOf: [\n {\n type: 'boolean',\n },\n {\n enum: [\n 'no-setter',\n ],\n type: 'string',\n },\n ],\n default: true,\n },\n checkSetters: {\n anyOf: [\n {\n type: 'boolean',\n },\n {\n enum: [\n 'no-getter',\n ],\n type: 'string',\n },\n ],\n default: true,\n },\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n context: {\n type: 'string',\n },\n inlineCommentBlock: {\n type: 'boolean',\n },\n minLineCount: {\n type: 'integer',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n enableFixer: {\n default: true,\n type: 'boolean',\n },\n exemptEmptyConstructors: {\n default: false,\n type: 'boolean',\n },\n exemptEmptyFunctions: {\n default: false,\n type: 'boolean',\n },\n fixerMessage: {\n default: '',\n type: 'string',\n },\n minLineCount: {\n type: 'integer',\n },\n publicOnly: {\n oneOf: [\n {\n default: false,\n type: 'boolean',\n },\n {\n additionalProperties: false,\n default: {},\n properties: {\n ancestorsOnly: {\n type: 'boolean',\n },\n cjs: {\n type: 'boolean',\n },\n esm: {\n type: 'boolean',\n },\n window: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n },\n require: {\n additionalProperties: false,\n default: {},\n properties: {\n ArrowFunctionExpression: {\n default: false,\n type: 'boolean',\n },\n ClassDeclaration: {\n default: false,\n type: 'boolean',\n },\n ClassExpression: {\n default: false,\n type: 'boolean',\n },\n FunctionDeclaration: {\n default: true,\n type: 'boolean',\n },\n FunctionExpression: {\n default: false,\n type: 'boolean',\n },\n MethodDefinition: {\n default: false,\n type: 'boolean',\n },\n },\n type: 'object',\n },\n },\n type: 'object',\n};\n\n/**\n * @param {import('eslint').Rule.RuleContext} context\n * @param {import('json-schema').JSONSchema4Object} baseObject\n * @param {string} option\n * @param {string} key\n * @returns {boolean|undefined}\n */\nconst getOption = (context, baseObject, option, key) => {\n if (context.options[0] && option in context.options[0] &&\n // Todo: boolean shouldn't be returning property, but\n // tests currently require\n (typeof context.options[0][option] === 'boolean' ||\n key in context.options[0][option])\n ) {\n return context.options[0][option][key];\n }\n\n return /** @type {{[key: string]: {default?: boolean|undefined}}} */ (\n baseObject.properties\n )[key].default;\n};\n\n/**\n * @param {import('eslint').Rule.RuleContext} context\n * @param {import('../iterateJsdoc.js').Settings} settings\n * @returns {{\n * contexts: (string|{\n * context: string,\n * inlineCommentBlock: boolean,\n * minLineCount: import('../iterateJsdoc.js').Integer\n * })[],\n * enableFixer: boolean,\n * exemptEmptyConstructors: boolean,\n * exemptEmptyFunctions: boolean,\n * fixerMessage: string,\n * minLineCount: undefined|import('../iterateJsdoc.js').Integer,\n * publicOnly: boolean|{[key: string]: boolean|undefined}\n * require: {[key: string]: boolean|undefined}\n * }}\n */\nconst getOptions = (context, settings) => {\n const {\n publicOnly,\n contexts = settings.contexts || [],\n exemptEmptyConstructors = true,\n exemptEmptyFunctions = false,\n enableFixer = true,\n fixerMessage = '',\n minLineCount = undefined,\n } = context.options[0] || {};\n\n return {\n contexts,\n enableFixer,\n exemptEmptyConstructors,\n exemptEmptyFunctions,\n fixerMessage,\n minLineCount,\n publicOnly: ((baseObj) => {\n if (!publicOnly) {\n return false;\n }\n\n /** @type {{[key: string]: boolean|undefined}} */\n const properties = {};\n for (const prop of Object.keys(\n /** @type {import('json-schema').JSONSchema4Object} */ (\n /** @type {import('json-schema').JSONSchema4Object} */ (\n baseObj\n ).properties),\n )) {\n const opt = getOption(\n context,\n /** @type {import('json-schema').JSONSchema4Object} */ (baseObj),\n 'publicOnly',\n prop,\n );\n\n properties[prop] = opt;\n }\n\n return properties;\n })(\n /** @type {import('json-schema').JSONSchema4Object} */\n (\n /** @type {import('json-schema').JSONSchema4Object} */\n (\n /** @type {import('json-schema').JSONSchema4Object} */\n (\n OPTIONS_SCHEMA.properties\n ).publicOnly\n ).oneOf\n )[1],\n ),\n require: ((baseObj) => {\n /** @type {{[key: string]: boolean|undefined}} */\n const properties = {};\n for (const prop of Object.keys(\n /** @type {import('json-schema').JSONSchema4Object} */ (\n /** @type {import('json-schema').JSONSchema4Object} */ (\n baseObj\n ).properties),\n )) {\n const opt = getOption(\n context,\n /** @type {import('json-schema').JSONSchema4Object} */\n (baseObj),\n 'require',\n prop,\n );\n properties[prop] = opt;\n }\n\n return properties;\n })(\n /** @type {import('json-schema').JSONSchema4Object} */\n (OPTIONS_SCHEMA.properties).require,\n ),\n };\n};\n\n/** @type {import('eslint').Rule.RuleModule} */\nexport default {\n create (context) {\n // istanbul ignore next -- Fallback to deprecated method\n const {\n sourceCode = context.getSourceCode(),\n } = context;\n const settings = getSettings(context);\n if (!settings) {\n return {};\n }\n\n const opts = getOptions(context, settings);\n\n const {\n require: requireOption,\n contexts,\n exemptEmptyFunctions,\n exemptEmptyConstructors,\n enableFixer,\n fixerMessage,\n minLineCount,\n } = opts;\n\n const publicOnly =\n\n /**\n * @type {{\n * [key: string]: boolean | undefined;\n * }}\n */ (\n opts.publicOnly\n );\n\n /**\n * @type {import('../iterateJsdoc.js').CheckJsdoc}\n */\n const checkJsDoc = (info, _handler, node) => {\n if (\n // Optimize\n minLineCount !== undefined || contexts.some((ctxt) => {\n if (typeof ctxt === 'string') {\n return false;\n }\n\n const {\n minLineCount: count,\n } = ctxt;\n return count !== undefined;\n })\n ) {\n /**\n * @param {undefined|import('../iterateJsdoc.js').Integer} count\n */\n const underMinLine = (count) => {\n return count !== undefined && count >\n (sourceCode.getText(node).match(/\\n/gu)?.length ?? 0) + 1;\n };\n\n if (underMinLine(minLineCount)) {\n return;\n }\n\n const {\n minLineCount: contextMinLineCount,\n } =\n /**\n * @type {{\n * context: string;\n * inlineCommentBlock: boolean;\n * minLineCount: number;\n * }}\n */ (contexts.find((ctxt) => {\n if (typeof ctxt === 'string') {\n return false;\n }\n\n const {\n context: ctx,\n } = ctxt;\n return ctx === (info.selector || node.type);\n })) || {};\n if (underMinLine(contextMinLineCount)) {\n return;\n }\n }\n\n const jsDocNode = getJSDocComment(sourceCode, node, settings);\n\n if (jsDocNode) {\n return;\n }\n\n // For those who have options configured against ANY constructors (or\n // setters or getters) being reported\n if (jsdocUtils.exemptSpeciaMethods(\n {\n description: '',\n inlineTags: [],\n problems: [],\n source: [],\n tags: [],\n },\n node,\n context,\n [\n OPTIONS_SCHEMA,\n ],\n )) {\n return;\n }\n\n if (\n // Avoid reporting param-less, return-less functions (when\n // `exemptEmptyFunctions` option is set)\n exemptEmptyFunctions && info.isFunctionContext ||\n\n // Avoid reporting param-less, return-less constructor methods (when\n // `exemptEmptyConstructors` option is set)\n exemptEmptyConstructors && jsdocUtils.isConstructor(node)\n ) {\n const functionParameterNames = jsdocUtils.getFunctionParameterNames(node);\n if (!functionParameterNames.length && !jsdocUtils.hasReturnValue(node)) {\n return;\n }\n }\n\n const fix = /** @type {import('eslint').Rule.ReportFixer} */ (fixer) => {\n // Default to one line break if the `minLines`/`maxLines` settings allow\n const lines = settings.minLines === 0 && settings.maxLines >= 1 ? 1 : settings.minLines;\n /** @type {import('eslint').Rule.Node|import('@typescript-eslint/types').TSESTree.Decorator} */\n let baseNode = getReducedASTNode(node, sourceCode);\n\n const decorator = getDecorator(baseNode);\n if (decorator) {\n baseNode = decorator;\n }\n\n const indent = jsdocUtils.getIndent({\n text: sourceCode.getText(\n /** @type {import('eslint').Rule.Node} */ (baseNode),\n /** @type {import('eslint').AST.SourceLocation} */\n (\n /** @type {import('eslint').Rule.Node} */ (baseNode).loc\n ).start.column,\n ),\n });\n\n const {\n inlineCommentBlock,\n } =\n /**\n * @type {{\n * context: string,\n * inlineCommentBlock: boolean,\n * minLineCount: import('../iterateJsdoc.js').Integer\n * }}\n */ (contexts.find((contxt) => {\n if (typeof contxt === 'string') {\n return false;\n }\n\n const {\n context: ctxt,\n } = contxt;\n return ctxt === node.type;\n })) || {};\n const insertion = (inlineCommentBlock ?\n `/** ${fixerMessage}` :\n `/**\\n${indent}*${fixerMessage}\\n${indent}`) +\n `*/${'\\n'.repeat(lines)}${indent.slice(0, -1)}`;\n\n return fixer.insertTextBefore(\n /** @type {import('eslint').Rule.Node} */\n (baseNode),\n insertion,\n );\n };\n\n const report = () => {\n const {\n start,\n } = /** @type {import('eslint').AST.SourceLocation} */ (node.loc);\n const loc = {\n end: {\n column: 0,\n line: start.line + 1,\n },\n start,\n };\n context.report({\n fix: enableFixer ? fix : null,\n loc,\n messageId: 'missingJsDoc',\n node,\n });\n };\n\n if (publicOnly) {\n /** @type {RequireJsdocOpts} */\n const opt = {\n ancestorsOnly: Boolean(publicOnly?.ancestorsOnly ?? false),\n esm: Boolean(publicOnly?.esm ?? true),\n initModuleExports: Boolean(publicOnly?.cjs ?? true),\n initWindow: Boolean(publicOnly?.window ?? false),\n };\n const exported = exportParser.isUncommentedExport(node, sourceCode, opt, settings);\n\n if (exported) {\n report();\n }\n } else {\n report();\n }\n };\n\n /**\n * @param {string} prop\n * @returns {boolean}\n */\n const hasOption = (prop) => {\n return requireOption[prop] || contexts.some((ctxt) => {\n return typeof ctxt === 'object' ? ctxt.context === prop : ctxt === prop;\n });\n };\n\n return {\n ...jsdocUtils.getContextObject(\n jsdocUtils.enforcedContexts(context, [], settings),\n checkJsDoc,\n ),\n ArrowFunctionExpression (node) {\n if (!hasOption('ArrowFunctionExpression')) {\n return;\n }\n\n if (\n [\n 'VariableDeclarator', 'AssignmentExpression', 'ExportDefaultDeclaration',\n ].includes(node.parent.type) ||\n [\n 'Property', 'ObjectProperty', 'ClassProperty', 'PropertyDefinition',\n ].includes(node.parent.type) &&\n node ===\n /**\n * @type {import('@typescript-eslint/types').TSESTree.Property|\n * import('@typescript-eslint/types').TSESTree.PropertyDefinition\n * }\n */\n (node.parent).value\n ) {\n checkJsDoc({\n isFunctionContext: true,\n }, null, node);\n }\n },\n\n ClassDeclaration (node) {\n if (!hasOption('ClassDeclaration')) {\n return;\n }\n\n checkJsDoc({\n isFunctionContext: false,\n }, null, node);\n },\n\n ClassExpression (node) {\n if (!hasOption('ClassExpression')) {\n return;\n }\n\n checkJsDoc({\n isFunctionContext: false,\n }, null, node);\n },\n\n FunctionDeclaration (node) {\n if (!hasOption('FunctionDeclaration')) {\n return;\n }\n\n checkJsDoc({\n isFunctionContext: true,\n }, null, node);\n },\n\n FunctionExpression (node) {\n if (!hasOption('FunctionExpression')) {\n return;\n }\n\n if (\n [\n 'VariableDeclarator', 'AssignmentExpression', 'ExportDefaultDeclaration',\n ].includes(node.parent.type) ||\n [\n 'Property', 'ObjectProperty', 'ClassProperty', 'PropertyDefinition',\n ].includes(node.parent.type) &&\n node ===\n /**\n * @type {import('@typescript-eslint/types').TSESTree.Property|\n * import('@typescript-eslint/types').TSESTree.PropertyDefinition\n * }\n */\n (node.parent).value\n ) {\n checkJsDoc({\n isFunctionContext: true,\n }, null, node);\n }\n },\n\n MethodDefinition (node) {\n if (!hasOption('MethodDefinition')) {\n return;\n }\n\n checkJsDoc({\n isFunctionContext: true,\n selector: 'MethodDefinition',\n }, null, /** @type {import('eslint').Rule.Node} */ (node.value));\n },\n };\n },\n meta: {\n docs: {\n category: 'Stylistic Issues',\n description: 'Require JSDoc comments',\n recommended: true,\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-jsdoc.md#repos-sticky-header',\n },\n\n fixable: 'code',\n\n messages: {\n missingJsDoc: 'Missing JSDoc comment.',\n },\n\n schema: [\n OPTIONS_SCHEMA,\n ],\n\n type: 'suggestion',\n },\n};\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"requireParam.js","names":["_iterateJsdoc","_interopRequireDefault","require","obj","__esModule","default","rootNamer","desiredRoots","currentIndex","name","idx","incremented","length","base","suffix","shift","_default","exports","iterateJsdoc","jsdoc","utils","context","avoidDocs","hasTag","autoIncrementBase","checkRestProperty","checkDestructured","checkDestructuredRoots","checkTypesPattern","enableFixer","enableRootFixer","enableRestElementFixer","unnamedRootBase","useDefaultObjectProperties","options","preferredTagName","getPreferredTagName","tagName","functionParameterNames","getFunctionParameterNames","jsdocParameterNames","getJsdocTagsDeep","shallowJsdocParameterNames","filter","tag","includes","map","checkTypesRegex","getRegexFromString","missingTags","flattenedRoots","flattenRoots","names","paramIndex","hasParamIndex","cur","dropPathSegmentQuotes","String","getParamIndex","setParamIndex","entries","findExpectedIndex","jsdocTags","indexAtFunctionParams","remainingRoots","slice","foundIndex","findIndex","newAdd","some","remainingRoot","Array","isArray","tags","tagLineCount","source","tokens","end","nextRootName","namer","functionParameterIdx","functionParameterName","inc","matchedJsdoc","rootName","type","search","hasRestElement","hasPropertyRest","rests","notCheckingNames","paramName","find","fpn","emptyParamIdx","push","remove","fullParamName","notCheckingName","paramType","comparePaths","undefined","startsWith","funcParamName","restElement","fix","createTokens","tagIndex","sourceIndex","spliceCount","number","delimiter","description","lineEnd","postDelimiter","postName","postTag","postType","start","splice","inlineTags","optional","problems","firstNumber","src","offset","expectedIdx","fixer","missingTag","makeMultiline","reportJSDoc","contextDefaults","meta","docs","url","fixable","schema","additionalProperties","properties","checkConstructors","checkGetters","checkSetters","contexts","items","anyOf","comment","exemptedBy","noTracking","module"],"sources":["../../src/rules/requireParam.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\n\n/**\n * @typedef {[string, boolean, () => RootNamerReturn]} RootNamerReturn\n */\n\n/**\n * @param {string[]} desiredRoots\n * @param {number} currentIndex\n * @returns {RootNamerReturn}\n */\nconst rootNamer = (desiredRoots, currentIndex) => {\n /** @type {string} */\n let name;\n let idx = currentIndex;\n const incremented = desiredRoots.length <= 1;\n if (incremented) {\n const base = desiredRoots[0];\n const suffix = idx++;\n name = `${base}${suffix}`;\n } else {\n name = /** @type {string} */ (desiredRoots.shift());\n }\n\n return [\n name,\n incremented,\n () => {\n return rootNamer(desiredRoots, idx);\n },\n ];\n};\n\n/* eslint-disable complexity -- Temporary */\nexport default iterateJsdoc(({\n jsdoc,\n utils,\n context,\n}) => {\n /* eslint-enable complexity -- Temporary */\n if (utils.avoidDocs()) {\n return;\n }\n\n // Param type is specified by type in @type\n if (utils.hasTag('type')) {\n return;\n }\n\n const {\n autoIncrementBase = 0,\n checkRestProperty = false,\n checkDestructured = true,\n checkDestructuredRoots = true,\n checkTypesPattern = '/^(?:[oO]bject|[aA]rray|PlainObject|Generic(?:Object|Array))$/',\n enableFixer = true,\n enableRootFixer = true,\n enableRestElementFixer = true,\n unnamedRootBase = [\n 'root',\n ],\n useDefaultObjectProperties = false,\n } = context.options[0] || {};\n\n const preferredTagName = /** @type {string} */ (utils.getPreferredTagName({\n tagName: 'param',\n }));\n if (!preferredTagName) {\n return;\n }\n\n const functionParameterNames = utils.getFunctionParameterNames(useDefaultObjectProperties);\n if (!functionParameterNames.length) {\n return;\n }\n\n const jsdocParameterNames =\n /**\n * @type {{\n * idx: import('../iterateJsdoc.js').Integer;\n * name: string;\n * type: string;\n * }[]}\n */ (utils.getJsdocTagsDeep(preferredTagName));\n\n const shallowJsdocParameterNames = jsdocParameterNames.filter((tag) => {\n return !tag.name.includes('.');\n }).map((tag, idx) => {\n return {\n ...tag,\n idx,\n };\n });\n\n const checkTypesRegex = utils.getRegexFromString(checkTypesPattern);\n\n /**\n * @type {{\n * functionParameterIdx: import('../iterateJsdoc.js').Integer,\n * functionParameterName: string,\n * inc: boolean|undefined,\n * remove?: true,\n * type?: string|undefined\n * }[]}\n */\n const missingTags = [];\n const flattenedRoots = utils.flattenRoots(functionParameterNames).names;\n\n /**\n * @type {{\n * [key: string]: import('../iterateJsdoc.js').Integer\n * }}\n */\n const paramIndex = {};\n\n /**\n * @param {string} cur\n * @returns {boolean}\n */\n const hasParamIndex = (cur) => {\n return utils.dropPathSegmentQuotes(String(cur)) in paramIndex;\n };\n\n /**\n *\n * @param {string|number|undefined} cur\n * @returns {import('../iterateJsdoc.js').Integer}\n */\n const getParamIndex = (cur) => {\n return paramIndex[utils.dropPathSegmentQuotes(String(cur))];\n };\n\n /**\n *\n * @param {string} cur\n * @param {import('../iterateJsdoc.js').Integer} idx\n * @returns {void}\n */\n const setParamIndex = (cur, idx) => {\n paramIndex[utils.dropPathSegmentQuotes(String(cur))] = idx;\n };\n\n for (const [\n idx,\n cur,\n ] of flattenedRoots.entries()) {\n setParamIndex(cur, idx);\n }\n\n /**\n *\n * @param {(import('@es-joy/jsdoccomment').JsdocTagWithInline & {\n * newAdd?: boolean\n * })[]} jsdocTags\n * @param {import('../iterateJsdoc.js').Integer} indexAtFunctionParams\n * @returns {import('../iterateJsdoc.js').Integer}\n */\n const findExpectedIndex = (jsdocTags, indexAtFunctionParams) => {\n const remainingRoots = functionParameterNames.slice(indexAtFunctionParams || 0);\n const foundIndex = jsdocTags.findIndex(({\n name,\n newAdd,\n }) => {\n return !newAdd && remainingRoots.some((remainingRoot) => {\n if (Array.isArray(remainingRoot)) {\n return (\n /**\n * @type {import('../jsdocUtils.js').FlattendRootInfo & {\n * annotationParamName?: string|undefined;\n * }}\n */ (remainingRoot[1]).names.includes(name)\n );\n }\n\n if (typeof remainingRoot === 'object') {\n return name === remainingRoot.name;\n }\n\n return name === remainingRoot;\n });\n });\n\n const tags = foundIndex > -1 ?\n jsdocTags.slice(0, foundIndex) :\n jsdocTags.filter(({\n tag,\n }) => {\n return tag === preferredTagName;\n });\n\n let tagLineCount = 0;\n for (const {\n source,\n } of tags) {\n for (const {\n tokens: {\n end,\n },\n } of source) {\n if (!end) {\n tagLineCount++;\n }\n }\n }\n\n return tagLineCount;\n };\n\n let [\n nextRootName,\n incremented,\n namer,\n ] = rootNamer([\n ...unnamedRootBase,\n ], autoIncrementBase);\n\n for (const [\n functionParameterIdx,\n functionParameterName,\n ] of functionParameterNames.entries()) {\n let inc;\n if (Array.isArray(functionParameterName)) {\n const matchedJsdoc = shallowJsdocParameterNames[functionParameterIdx] ||\n jsdocParameterNames[functionParameterIdx];\n\n /** @type {string} */\n let rootName;\n if (functionParameterName[0]) {\n rootName = functionParameterName[0];\n } else if (matchedJsdoc && matchedJsdoc.name) {\n rootName = matchedJsdoc.name;\n if (matchedJsdoc.type && matchedJsdoc.type.search(checkTypesRegex) === -1) {\n continue;\n }\n } else {\n rootName = nextRootName;\n inc = incremented;\n [\n nextRootName,\n incremented,\n namer,\n ] = namer();\n }\n\n const {\n hasRestElement,\n hasPropertyRest,\n rests,\n names,\n } = /**\n * @type {import('../jsdocUtils.js').FlattendRootInfo & {\n * annotationParamName?: string | undefined;\n * }}\n */ (functionParameterName[1]);\n const notCheckingNames = [];\n if (!enableRestElementFixer && hasRestElement) {\n continue;\n }\n\n if (!checkDestructuredRoots) {\n continue;\n }\n\n for (const [\n idx,\n paramName,\n ] of names.entries()) {\n // Add root if the root name is not in the docs (and is not already\n // in the tags to be fixed)\n if (!jsdocParameterNames.find(({\n name,\n }) => {\n return name === rootName;\n }) && !missingTags.find(({\n functionParameterName: fpn,\n }) => {\n return fpn === rootName;\n })) {\n const emptyParamIdx = jsdocParameterNames.findIndex(({\n name,\n }) => {\n return !name;\n });\n\n if (emptyParamIdx > -1) {\n missingTags.push({\n functionParameterIdx: emptyParamIdx,\n functionParameterName: rootName,\n inc,\n remove: true,\n });\n } else {\n missingTags.push({\n functionParameterIdx: hasParamIndex(rootName) ?\n getParamIndex(rootName) :\n getParamIndex(paramName),\n functionParameterName: rootName,\n inc,\n });\n }\n }\n\n if (!checkDestructured) {\n continue;\n }\n\n if (!checkRestProperty && rests[idx]) {\n continue;\n }\n\n const fullParamName = `${rootName}.${paramName}`;\n\n const notCheckingName = jsdocParameterNames.find(({\n name,\n type: paramType,\n }) => {\n return utils.comparePaths(name)(fullParamName) && paramType.search(checkTypesRegex) === -1 && paramType !== '';\n });\n\n if (notCheckingName !== undefined) {\n notCheckingNames.push(notCheckingName.name);\n }\n\n if (notCheckingNames.find((name) => {\n return fullParamName.startsWith(name);\n })) {\n continue;\n }\n\n if (jsdocParameterNames && !jsdocParameterNames.find(({\n name,\n }) => {\n return utils.comparePaths(name)(fullParamName);\n })) {\n missingTags.push({\n functionParameterIdx: getParamIndex(\n functionParameterName[0] ? fullParamName : paramName,\n ),\n functionParameterName: fullParamName,\n inc,\n type: hasRestElement && !hasPropertyRest ? '{...any}' : undefined,\n });\n }\n }\n\n continue;\n }\n\n /** @type {string} */\n let funcParamName;\n let type;\n if (typeof functionParameterName === 'object') {\n if (!enableRestElementFixer && functionParameterName.restElement) {\n continue;\n }\n\n funcParamName = /** @type {string} */ (functionParameterName.name);\n type = '{...any}';\n } else {\n funcParamName = /** @type {string} */ (functionParameterName);\n }\n\n if (jsdocParameterNames && !jsdocParameterNames.find(({\n name,\n }) => {\n return name === funcParamName;\n }) && funcParamName !== 'this') {\n missingTags.push({\n functionParameterIdx: getParamIndex(funcParamName),\n functionParameterName: funcParamName,\n inc,\n type,\n });\n }\n }\n\n /**\n *\n * @param {{\n * functionParameterIdx: import('../iterateJsdoc.js').Integer,\n * functionParameterName: string,\n * remove?: true,\n * inc?: boolean,\n * type?: string\n * }} cfg\n */\n const fix = ({\n functionParameterIdx,\n functionParameterName,\n remove,\n inc,\n type,\n }) => {\n if (inc && !enableRootFixer) {\n return;\n }\n\n /**\n *\n * @param {import('../iterateJsdoc.js').Integer} tagIndex\n * @param {import('../iterateJsdoc.js').Integer} sourceIndex\n * @param {import('../iterateJsdoc.js').Integer} spliceCount\n * @returns {void}\n */\n const createTokens = (tagIndex, sourceIndex, spliceCount) => {\n // console.log(sourceIndex, tagIndex, jsdoc.tags, jsdoc.source);\n const tokens = {\n number: sourceIndex + 1,\n source: '',\n tokens: {\n delimiter: '*',\n description: '',\n end: '',\n lineEnd: '',\n name: functionParameterName,\n newAdd: true,\n postDelimiter: ' ',\n postName: '',\n postTag: ' ',\n postType: type ? ' ' : '',\n start: jsdoc.source[sourceIndex].tokens.start,\n tag: `@${preferredTagName}`,\n type: type ?? '',\n },\n };\n\n /**\n * @type {(import('@es-joy/jsdoccomment').JsdocTagWithInline & {\n * newAdd?: true\n * })[]}\n */ (jsdoc.tags).splice(tagIndex, spliceCount, {\n description: '',\n inlineTags: [],\n name: functionParameterName,\n newAdd: true,\n optional: false,\n problems: [],\n source: [\n tokens,\n ],\n tag: preferredTagName,\n type: type ?? '',\n });\n const firstNumber = jsdoc.source[0].number;\n jsdoc.source.splice(sourceIndex, spliceCount, tokens);\n for (const [\n idx,\n src,\n ] of jsdoc.source.slice(sourceIndex).entries()) {\n src.number = firstNumber + sourceIndex + idx;\n }\n };\n\n const offset = jsdoc.source.findIndex(({\n tokens: {\n tag,\n end,\n },\n }) => {\n return tag || end;\n });\n if (remove) {\n createTokens(functionParameterIdx, offset + functionParameterIdx, 1);\n } else {\n const expectedIdx = findExpectedIndex(jsdoc.tags, functionParameterIdx);\n createTokens(expectedIdx, offset + expectedIdx, 0);\n }\n };\n\n /**\n * @returns {void}\n */\n const fixer = () => {\n for (const missingTag of missingTags) {\n fix(missingTag);\n }\n };\n\n if (missingTags.length && jsdoc.source.length === 1) {\n utils.makeMultiline();\n }\n\n for (const {\n functionParameterName,\n } of missingTags) {\n utils.reportJSDoc(\n `Missing JSDoc @${preferredTagName} \"${functionParameterName}\" declaration.`,\n null,\n enableFixer ? fixer : null,\n );\n }\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'Requires that all function parameters are documented.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-param.md#repos-sticky-header',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n autoIncrementBase: {\n default: 0,\n type: 'integer',\n },\n checkConstructors: {\n default: true,\n type: 'boolean',\n },\n checkDestructured: {\n default: true,\n type: 'boolean',\n },\n checkDestructuredRoots: {\n default: true,\n type: 'boolean',\n },\n checkGetters: {\n default: false,\n type: 'boolean',\n },\n checkRestProperty: {\n default: false,\n type: 'boolean',\n },\n checkSetters: {\n default: false,\n type: 'boolean',\n },\n checkTypesPattern: {\n type: 'string',\n },\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n enableFixer: {\n type: 'boolean',\n },\n enableRestElementFixer: {\n type: 'boolean',\n },\n enableRootFixer: {\n type: 'boolean',\n },\n exemptedBy: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n unnamedRootBase: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n useDefaultObjectProperties: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n\n // We cannot cache comment nodes as the contexts may recur with the\n // same comment node but a different JS node, and we may need the different\n // JS node to ensure we iterate its context\n noTracking: true,\n});\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"requireParamDescription.js","names":["_iterateJsdoc","_interopRequireDefault","require","obj","__esModule","default","_default","exports","iterateJsdoc","context","report","settings","utils","defaultDestructuredRootDescription","setDefaultDestructuredRootDescription","options","functionParameterNames","getFunctionParameterNames","rootCount","forEachPreferredTag","jsdocParameter","targetTagName","name","includes","description","trim","Array","isArray","exemptDestructuredRootsFromChecks","reportJSDoc","changeTag","postName","contextDefaults","meta","docs","url","fixable","schema","additionalProperties","properties","contexts","items","anyOf","type","comment","module"],"sources":["../../src/rules/requireParamDescription.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\n\nexport default iterateJsdoc(({\n context,\n report,\n settings,\n utils,\n}) => {\n const {\n defaultDestructuredRootDescription = 'The root object',\n setDefaultDestructuredRootDescription = false,\n } = context.options[0] || {};\n\n const functionParameterNames = utils.getFunctionParameterNames();\n\n let rootCount = -1;\n utils.forEachPreferredTag('param', (jsdocParameter, targetTagName) => {\n rootCount += jsdocParameter.name.includes('.') ? 0 : 1;\n if (!jsdocParameter.description.trim()) {\n if (Array.isArray(functionParameterNames[rootCount])) {\n if (settings.exemptDestructuredRootsFromChecks) {\n return;\n }\n\n if (setDefaultDestructuredRootDescription) {\n utils.reportJSDoc(`Missing root description for @${targetTagName}.`, jsdocParameter, () => {\n utils.changeTag(jsdocParameter, {\n description: defaultDestructuredRootDescription,\n postName: ' ',\n });\n });\n return;\n }\n }\n\n report(\n `Missing JSDoc @${targetTagName} \"${jsdocParameter.name}\" description.`,\n null,\n jsdocParameter,\n );\n }\n });\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'Requires that each `@param` tag has a `description` value.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-param-description.md#repos-sticky-header',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n defaultDestructuredRootDescription: {\n type: 'string',\n },\n setDefaultDestructuredRootDescription: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":";;;;;;AAAA,IAAAA,aAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA8C,SAAAD,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,IAAAG,QAAA,GAAAC,OAAA,CAAAF,OAAA,GAE/B,IAAAG,qBAAY,EAAC,CAAC;EAC3BC,OAAO;EACPC,MAAM;EACNC,QAAQ;EACRC;AACF,CAAC,KAAK;EACJ,MAAM;IACJC,kCAAkC,GAAG,iBAAiB;IACtDC,qCAAqC,GAAG;EAC1C,CAAC,GAAGL,OAAO,CAACM,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;EAE5B,MAAMC,sBAAsB,GAAGJ,KAAK,CAACK,yBAAyB,CAAC,CAAC;EAEhE,IAAIC,SAAS,GAAG,CAAC,CAAC;EAClBN,KAAK,CAACO,mBAAmB,CAAC,OAAO,EAAE,CAACC,cAAc,EAAEC,aAAa,KAAK;IACpEH,SAAS,IAAIE,cAAc,CAACE,IAAI,CAACC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;IACtD,IAAI,CAACH,cAAc,CAACI,WAAW,CAACC,IAAI,CAAC,CAAC,EAAE;MACtC,IAAIC,KAAK,CAACC,OAAO,CAACX,sBAAsB,CAACE,SAAS,CAAC,CAAC,EAAE;QACpD,IAAIP,QAAQ,CAACiB,iCAAiC,EAAE;UAC9C;QACF;QAEA,IAAId,qCAAqC,EAAE;UACzCF,KAAK,CAACiB,WAAW,CAAE,iCAAgCR,aAAc,GAAE,EAAED,cAAc,EAAE,MAAM;YACzFR,KAAK,CAACkB,SAAS,CAACV,cAAc,EAAE;cAC9BI,WAAW,EAAEX,kCAAkC;cAC/CkB,QAAQ,EAAE;YACZ,CAAC,CAAC;UACJ,CAAC,CAAC;UACF;QACF;MACF;MAEArB,MAAM,CACH,kBAAiBW,aAAc,KAAID,cAAc,CAACE,IAAK,gBAAe,EACvE,IAAI,EACJF,cACF,CAAC;IACH;EACF,CAAC,CAAC;AACJ,CAAC,EAAE;EACDY,eAAe,EAAE,IAAI;EACrBC,IAAI,EAAE;IACJC,IAAI,EAAE;MACJV,WAAW,EAAE,4DAA4D;MACzEW,GAAG,EAAE;IACP,CAAC;IACDC,OAAO,EAAE,MAAM;IACfC,MAAM,EAAE,CACN;MACEC,oBAAoB,EAAE,KAAK;MAC3BC,UAAU,EAAE;QACVC,QAAQ,EAAE;UACRC,KAAK,EAAE;YACLC,KAAK,EAAE,CACL;cACEC,IAAI,EAAE;YACR,CAAC,EACD;cACEL,oBAAoB,EAAE,KAAK;cAC3BC,UAAU,EAAE;gBACVK,OAAO,EAAE;kBACPD,IAAI,EAAE;gBACR,CAAC;gBACDlC,OAAO,EAAE;kBACPkC,IAAI,EAAE;gBACR;cACF,CAAC;cACDA,IAAI,EAAE;YACR,CAAC;UAEL,CAAC;UACDA,IAAI,EAAE;QACR,CAAC;QACD9B,kCAAkC,EAAE;UAClC8B,IAAI,EAAE;QACR,CAAC;QACD7B,qCAAqC,EAAE;UACrC6B,IAAI,EAAE;QACR;MACF,CAAC;MACDA,IAAI,EAAE;IACR,CAAC,CACF;IACDA,IAAI,EAAE;EACR;AACF,CAAC,CAAC;AAAAE,MAAA,CAAAtC,OAAA,GAAAA,OAAA,CAAAF,OAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"requireParamName.js","names":["_iterateJsdoc","_interopRequireDefault","require","obj","__esModule","default","_default","exports","iterateJsdoc","report","utils","forEachPreferredTag","jsdocParameter","targetTagName","tag","name","type","contextDefaults","meta","docs","description","url","schema","additionalProperties","properties","contexts","items","anyOf","comment","context","module"],"sources":["../../src/rules/requireParamName.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\n\nexport default iterateJsdoc(({\n report,\n utils,\n}) => {\n utils.forEachPreferredTag('param', (jsdocParameter, targetTagName) => {\n if (jsdocParameter.tag && jsdocParameter.name === '') {\n report(\n `There must be an identifier after @${targetTagName} ${jsdocParameter.type === '' ? 'type' : 'tag'}.`,\n null,\n jsdocParameter,\n );\n }\n });\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'Requires that all function parameters have names.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-param-name.md#repos-sticky-header',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":";;;;;;AAAA,IAAAA,aAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA8C,SAAAD,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,IAAAG,QAAA,GAAAC,OAAA,CAAAF,OAAA,GAE/B,IAAAG,qBAAY,EAAC,CAAC;EAC3BC,MAAM;EACNC;AACF,CAAC,KAAK;EACJA,KAAK,CAACC,mBAAmB,CAAC,OAAO,EAAE,CAACC,cAAc,EAAEC,aAAa,KAAK;IACpE,IAAID,cAAc,CAACE,GAAG,IAAIF,cAAc,CAACG,IAAI,KAAK,EAAE,EAAE;MACpDN,MAAM,CACH,sCAAqCI,aAAc,IAAGD,cAAc,CAACI,IAAI,KAAK,EAAE,GAAG,MAAM,GAAG,KAAM,GAAE,EACrG,IAAI,EACJJ,cACF,CAAC;IACH;EACF,CAAC,CAAC;AACJ,CAAC,EAAE;EACDK,eAAe,EAAE,IAAI;EACrBC,IAAI,EAAE;IACJC,IAAI,EAAE;MACJC,WAAW,EAAE,mDAAmD;MAChEC,GAAG,EAAE;IACP,CAAC;IACDC,MAAM,EAAE,CACN;MACEC,oBAAoB,EAAE,KAAK;MAC3BC,UAAU,EAAE;QACVC,QAAQ,EAAE;UACRC,KAAK,EAAE;YACLC,KAAK,EAAE,CACL;cACEX,IAAI,EAAE;YACR,CAAC,EACD;cACEO,oBAAoB,EAAE,KAAK;cAC3BC,UAAU,EAAE;gBACVI,OAAO,EAAE;kBACPZ,IAAI,EAAE;gBACR,CAAC;gBACDa,OAAO,EAAE;kBACPb,IAAI,EAAE;gBACR;cACF,CAAC;cACDA,IAAI,EAAE;YACR,CAAC;UAEL,CAAC;UACDA,IAAI,EAAE;QACR;MACF,CAAC;MACDA,IAAI,EAAE;IACR,CAAC,CACF;IACDA,IAAI,EAAE;EACR;AACF,CAAC,CAAC;AAAAc,MAAA,CAAAvB,OAAA,GAAAA,OAAA,CAAAF,OAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"requireParamType.js","names":["_iterateJsdoc","_interopRequireDefault","require","obj","__esModule","default","_default","exports","iterateJsdoc","context","report","settings","utils","defaultDestructuredRootType","setDefaultDestructuredRootType","options","functionParameterNames","getFunctionParameterNames","rootCount","forEachPreferredTag","jsdocParameter","targetTagName","name","includes","type","Array","isArray","exemptDestructuredRootsFromChecks","reportJSDoc","changeTag","postType","contextDefaults","meta","docs","description","url","fixable","schema","additionalProperties","properties","contexts","items","anyOf","comment","module"],"sources":["../../src/rules/requireParamType.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\n\nexport default iterateJsdoc(({\n context,\n report,\n settings,\n utils,\n}) => {\n const {\n defaultDestructuredRootType = 'object',\n setDefaultDestructuredRootType = false,\n } = context.options[0] || {};\n\n const functionParameterNames = utils.getFunctionParameterNames();\n\n let rootCount = -1;\n utils.forEachPreferredTag('param', (jsdocParameter, targetTagName) => {\n rootCount += jsdocParameter.name.includes('.') ? 0 : 1;\n if (!jsdocParameter.type) {\n if (Array.isArray(functionParameterNames[rootCount])) {\n if (settings.exemptDestructuredRootsFromChecks) {\n return;\n }\n\n if (setDefaultDestructuredRootType) {\n utils.reportJSDoc(`Missing root type for @${targetTagName}.`, jsdocParameter, () => {\n utils.changeTag(jsdocParameter, {\n postType: ' ',\n type: `{${defaultDestructuredRootType}}`,\n });\n });\n return;\n }\n }\n\n report(\n `Missing JSDoc @${targetTagName} \"${jsdocParameter.name}\" type.`,\n null,\n jsdocParameter,\n );\n }\n });\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'Requires that each `@param` tag has a `type` value.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-param-type.md#repos-sticky-header',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n defaultDestructuredRootType: {\n type: 'string',\n },\n setDefaultDestructuredRootType: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":";;;;;;AAAA,IAAAA,aAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA8C,SAAAD,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,IAAAG,QAAA,GAAAC,OAAA,CAAAF,OAAA,GAE/B,IAAAG,qBAAY,EAAC,CAAC;EAC3BC,OAAO;EACPC,MAAM;EACNC,QAAQ;EACRC;AACF,CAAC,KAAK;EACJ,MAAM;IACJC,2BAA2B,GAAG,QAAQ;IACtCC,8BAA8B,GAAG;EACnC,CAAC,GAAGL,OAAO,CAACM,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;EAE5B,MAAMC,sBAAsB,GAAGJ,KAAK,CAACK,yBAAyB,CAAC,CAAC;EAEhE,IAAIC,SAAS,GAAG,CAAC,CAAC;EAClBN,KAAK,CAACO,mBAAmB,CAAC,OAAO,EAAE,CAACC,cAAc,EAAEC,aAAa,KAAK;IACpEH,SAAS,IAAIE,cAAc,CAACE,IAAI,CAACC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;IACtD,IAAI,CAACH,cAAc,CAACI,IAAI,EAAE;MACxB,IAAIC,KAAK,CAACC,OAAO,CAACV,sBAAsB,CAACE,SAAS,CAAC,CAAC,EAAE;QACpD,IAAIP,QAAQ,CAACgB,iCAAiC,EAAE;UAC9C;QACF;QAEA,IAAIb,8BAA8B,EAAE;UAClCF,KAAK,CAACgB,WAAW,CAAE,0BAAyBP,aAAc,GAAE,EAAED,cAAc,EAAE,MAAM;YAClFR,KAAK,CAACiB,SAAS,CAACT,cAAc,EAAE;cAC9BU,QAAQ,EAAE,GAAG;cACbN,IAAI,EAAG,IAAGX,2BAA4B;YACxC,CAAC,CAAC;UACJ,CAAC,CAAC;UACF;QACF;MACF;MAEAH,MAAM,CACH,kBAAiBW,aAAc,KAAID,cAAc,CAACE,IAAK,SAAQ,EAChE,IAAI,EACJF,cACF,CAAC;IACH;EACF,CAAC,CAAC;AACJ,CAAC,EAAE;EACDW,eAAe,EAAE,IAAI;EACrBC,IAAI,EAAE;IACJC,IAAI,EAAE;MACJC,WAAW,EAAE,qDAAqD;MAClEC,GAAG,EAAE;IACP,CAAC;IACDC,OAAO,EAAE,MAAM;IACfC,MAAM,EAAE,CACN;MACEC,oBAAoB,EAAE,KAAK;MAC3BC,UAAU,EAAE;QACVC,QAAQ,EAAE;UACRC,KAAK,EAAE;YACLC,KAAK,EAAE,CACL;cACElB,IAAI,EAAE;YACR,CAAC,EACD;cACEc,oBAAoB,EAAE,KAAK;cAC3BC,UAAU,EAAE;gBACVI,OAAO,EAAE;kBACPnB,IAAI,EAAE;gBACR,CAAC;gBACDf,OAAO,EAAE;kBACPe,IAAI,EAAE;gBACR;cACF,CAAC;cACDA,IAAI,EAAE;YACR,CAAC;UAEL,CAAC;UACDA,IAAI,EAAE;QACR,CAAC;QACDX,2BAA2B,EAAE;UAC3BW,IAAI,EAAE;QACR,CAAC;QACDV,8BAA8B,EAAE;UAC9BU,IAAI,EAAE;QACR;MACF,CAAC;MACDA,IAAI,EAAE;IACR,CAAC,CACF;IACDA,IAAI,EAAE;EACR;AACF,CAAC,CAAC;AAAAoB,MAAA,CAAArC,OAAA,GAAAA,OAAA,CAAAF,OAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"requireProperty.js","names":["_iterateJsdoc","_interopRequireDefault","require","obj","__esModule","default","_default","exports","iterateJsdoc","utils","propertyAssociatedTags","filterTags","tag","includes","length","targetTagName","getPreferredTagName","tagName","hasATag","propertyAssociatedTag","type","reportJSDoc","addTag","iterateAllJsdocs","meta","docs","description","url","fixable","module"],"sources":["../../src/rules/requireProperty.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\n\nexport default iterateJsdoc(({\n utils,\n}) => {\n const propertyAssociatedTags = utils.filterTags(({\n tag,\n }) => {\n return [\n 'typedef', 'namespace',\n ].includes(tag);\n });\n if (!propertyAssociatedTags.length) {\n return;\n }\n\n const targetTagName = /** @type {string} */ (utils.getPreferredTagName({\n tagName: 'property',\n }));\n\n if (utils.hasATag([\n targetTagName,\n ])) {\n return;\n }\n\n for (const propertyAssociatedTag of propertyAssociatedTags) {\n if (![\n 'object', 'Object', 'PlainObject',\n ].includes(propertyAssociatedTag.type)) {\n continue;\n }\n\n utils.reportJSDoc(`Missing JSDoc @${targetTagName}.`, null, () => {\n utils.addTag(targetTagName);\n });\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Requires that all `@typedef` and `@namespace` tags have `@property` when their type is a plain `object`, `Object`, or `PlainObject`.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-property.md#repos-sticky-header',\n },\n fixable: 'code',\n type: 'suggestion',\n },\n});\n"],"mappings":";;;;;;AAAA,IAAAA,aAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA8C,SAAAD,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,IAAAG,QAAA,GAAAC,OAAA,CAAAF,OAAA,GAE/B,IAAAG,qBAAY,EAAC,CAAC;EAC3BC;AACF,CAAC,KAAK;EACJ,MAAMC,sBAAsB,GAAGD,KAAK,CAACE,UAAU,CAAC,CAAC;IAC/CC;EACF,CAAC,KAAK;IACJ,OAAO,CACL,SAAS,EAAE,WAAW,CACvB,CAACC,QAAQ,CAACD,GAAG,CAAC;EACjB,CAAC,CAAC;EACF,IAAI,CAACF,sBAAsB,CAACI,MAAM,EAAE;IAClC;EACF;EAEA,MAAMC,aAAa,GAAG,qBAAuBN,KAAK,CAACO,mBAAmB,CAAC;IACrEC,OAAO,EAAE;EACX,CAAC,CAAE;EAEH,IAAIR,KAAK,CAACS,OAAO,CAAC,CAChBH,aAAa,CACd,CAAC,EAAE;IACF;EACF;EAEA,KAAK,MAAMI,qBAAqB,IAAIT,sBAAsB,EAAE;IAC1D,IAAI,CAAC,CACH,QAAQ,EAAE,QAAQ,EAAE,aAAa,CAClC,CAACG,QAAQ,CAACM,qBAAqB,CAACC,IAAI,CAAC,EAAE;MACtC;IACF;IAEAX,KAAK,CAACY,WAAW,CAAE,kBAAiBN,aAAc,GAAE,EAAE,IAAI,EAAE,MAAM;MAChEN,KAAK,CAACa,MAAM,CAACP,aAAa,CAAC;IAC7B,CAAC,CAAC;EACJ;AACF,CAAC,EAAE;EACDQ,gBAAgB,EAAE,IAAI;EACtBC,IAAI,EAAE;IACJC,IAAI,EAAE;MACJC,WAAW,EAAE,sIAAsI;MACnJC,GAAG,EAAE;IACP,CAAC;IACDC,OAAO,EAAE,MAAM;IACfR,IAAI,EAAE;EACR;AACF,CAAC,CAAC;AAAAS,MAAA,CAAAtB,OAAA,GAAAA,OAAA,CAAAF,OAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"requirePropertyDescription.js","names":["_iterateJsdoc","_interopRequireDefault","require","obj","__esModule","default","_default","exports","iterateJsdoc","report","utils","forEachPreferredTag","jsdoc","targetTagName","description","trim","name","iterateAllJsdocs","meta","docs","url","type","module"],"sources":["../../src/rules/requirePropertyDescription.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\n\nexport default iterateJsdoc(({\n report,\n utils,\n}) => {\n utils.forEachPreferredTag('property', (jsdoc, targetTagName) => {\n if (!jsdoc.description.trim()) {\n report(\n `Missing JSDoc @${targetTagName} \"${jsdoc.name}\" description.`,\n null,\n jsdoc,\n );\n }\n });\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Requires that each `@property` tag has a `description` value.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-property-description.md#repos-sticky-header',\n },\n type: 'suggestion',\n },\n});\n"],"mappings":";;;;;;AAAA,IAAAA,aAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA8C,SAAAD,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,IAAAG,QAAA,GAAAC,OAAA,CAAAF,OAAA,GAE/B,IAAAG,qBAAY,EAAC,CAAC;EAC3BC,MAAM;EACNC;AACF,CAAC,KAAK;EACJA,KAAK,CAACC,mBAAmB,CAAC,UAAU,EAAE,CAACC,KAAK,EAAEC,aAAa,KAAK;IAC9D,IAAI,CAACD,KAAK,CAACE,WAAW,CAACC,IAAI,CAAC,CAAC,EAAE;MAC7BN,MAAM,CACH,kBAAiBI,aAAc,KAAID,KAAK,CAACI,IAAK,gBAAe,EAC9D,IAAI,EACJJ,KACF,CAAC;IACH;EACF,CAAC,CAAC;AACJ,CAAC,EAAE;EACDK,gBAAgB,EAAE,IAAI;EACtBC,IAAI,EAAE;IACJC,IAAI,EAAE;MACJL,WAAW,EAAE,+DAA+D;MAC5EM,GAAG,EAAE;IACP,CAAC;IACDC,IAAI,EAAE;EACR;AACF,CAAC,CAAC;AAAAC,MAAA,CAAAf,OAAA,GAAAA,OAAA,CAAAF,OAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"requirePropertyName.js","names":["_iterateJsdoc","_interopRequireDefault","require","obj","__esModule","default","_default","exports","iterateJsdoc","report","utils","forEachPreferredTag","jsdoc","targetTagName","tag","name","type","iterateAllJsdocs","meta","docs","description","url","module"],"sources":["../../src/rules/requirePropertyName.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\n\nexport default iterateJsdoc(({\n report,\n utils,\n}) => {\n utils.forEachPreferredTag('property', (jsdoc, targetTagName) => {\n if (jsdoc.tag && jsdoc.name === '') {\n report(\n `There must be an identifier after @${targetTagName} ${jsdoc.type === '' ? 'type' : 'tag'}.`,\n null,\n jsdoc,\n );\n }\n });\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Requires that all function `@property` tags have names.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-property-name.md#repos-sticky-header',\n },\n type: 'suggestion',\n },\n});\n"],"mappings":";;;;;;AAAA,IAAAA,aAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA8C,SAAAD,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,IAAAG,QAAA,GAAAC,OAAA,CAAAF,OAAA,GAE/B,IAAAG,qBAAY,EAAC,CAAC;EAC3BC,MAAM;EACNC;AACF,CAAC,KAAK;EACJA,KAAK,CAACC,mBAAmB,CAAC,UAAU,EAAE,CAACC,KAAK,EAAEC,aAAa,KAAK;IAC9D,IAAID,KAAK,CAACE,GAAG,IAAIF,KAAK,CAACG,IAAI,KAAK,EAAE,EAAE;MAClCN,MAAM,CACH,sCAAqCI,aAAc,IAAGD,KAAK,CAACI,IAAI,KAAK,EAAE,GAAG,MAAM,GAAG,KAAM,GAAE,EAC5F,IAAI,EACJJ,KACF,CAAC;IACH;EACF,CAAC,CAAC;AACJ,CAAC,EAAE;EACDK,gBAAgB,EAAE,IAAI;EACtBC,IAAI,EAAE;IACJC,IAAI,EAAE;MACJC,WAAW,EAAE,yDAAyD;MACtEC,GAAG,EAAE;IACP,CAAC;IACDL,IAAI,EAAE;EACR;AACF,CAAC,CAAC;AAAAM,MAAA,CAAAf,OAAA,GAAAA,OAAA,CAAAF,OAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"requirePropertyType.js","names":["_iterateJsdoc","_interopRequireDefault","require","obj","__esModule","default","_default","exports","iterateJsdoc","report","utils","forEachPreferredTag","jsdoc","targetTagName","type","name","iterateAllJsdocs","meta","docs","description","url","module"],"sources":["../../src/rules/requirePropertyType.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\n\nexport default iterateJsdoc(({\n report,\n utils,\n}) => {\n utils.forEachPreferredTag('property', (jsdoc, targetTagName) => {\n if (!jsdoc.type) {\n report(\n `Missing JSDoc @${targetTagName} \"${jsdoc.name}\" type.`,\n null,\n jsdoc,\n );\n }\n });\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Requires that each `@property` tag has a `type` value.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-property-type.md#repos-sticky-header',\n },\n type: 'suggestion',\n },\n});\n"],"mappings":";;;;;;AAAA,IAAAA,aAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA8C,SAAAD,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,IAAAG,QAAA,GAAAC,OAAA,CAAAF,OAAA,GAE/B,IAAAG,qBAAY,EAAC,CAAC;EAC3BC,MAAM;EACNC;AACF,CAAC,KAAK;EACJA,KAAK,CAACC,mBAAmB,CAAC,UAAU,EAAE,CAACC,KAAK,EAAEC,aAAa,KAAK;IAC9D,IAAI,CAACD,KAAK,CAACE,IAAI,EAAE;MACfL,MAAM,CACH,kBAAiBI,aAAc,KAAID,KAAK,CAACG,IAAK,SAAQ,EACvD,IAAI,EACJH,KACF,CAAC;IACH;EACF,CAAC,CAAC;AACJ,CAAC,EAAE;EACDI,gBAAgB,EAAE,IAAI;EACtBC,IAAI,EAAE;IACJC,IAAI,EAAE;MACJC,WAAW,EAAE,wDAAwD;MACrEC,GAAG,EAAE;IACP,CAAC;IACDN,IAAI,EAAE;EACR;AACF,CAAC,CAAC;AAAAO,MAAA,CAAAd,OAAA,GAAAA,OAAA,CAAAF,OAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"requireReturns.js","names":["_exportParser","_interopRequireDefault","require","_iterateJsdoc","obj","__esModule","default","canSkip","utils","hasATag","avoidDocs","_default","exports","iterateJsdoc","info","comment","node","report","settings","context","contexts","enableFixer","forceRequireReturn","forceReturnsWithAsync","publicOnly","options","forceRequireReturnContext","foundContext","findContext","tagName","getPreferredTagName","tags","getTags","length","iteratingFunction","isIteratingFunction","tag","missingReturnTag","shouldReport","opt","ancestorsOnly","Boolean","esm","initModuleExports","cjs","initWindow","window","sourceCode","getSourceCode","exported","exportParser","isUncommentedExport","isVirtualFunction","isAsync","hasTag","hasValueOrExecutorHasNonEmptyResolveValue","reportJSDoc","addTag","contextDefaults","meta","docs","description","url","fixable","schema","additionalProperties","properties","checkConstructors","type","checkGetters","items","anyOf","exemptedBy","oneOf","module"],"sources":["../../src/rules/requireReturns.js"],"sourcesContent":["import exportParser from '../exportParser.js';\nimport iterateJsdoc from '../iterateJsdoc.js';\n\n/**\n * We can skip checking for a return value, in case the documentation is inherited\n * or the method is either a constructor or an abstract method.\n *\n * In either of these cases the return value is optional or not defined.\n * @param {import('../iterateJsdoc.js').Utils} utils\n * a reference to the utils which are used to probe if a tag is present or not.\n * @returns {boolean}\n * true in case deep checking can be skipped; otherwise false.\n */\nconst canSkip = (utils) => {\n return utils.hasATag([\n // inheritdoc implies that all documentation is inherited\n // see https://jsdoc.app/tags-inheritdoc.html\n //\n // Abstract methods are by definition incomplete,\n // so it is not an error if it declares a return value but does not implement it.\n 'abstract',\n 'virtual',\n\n // Constructors do not have a return value by definition (https://jsdoc.app/tags-class.html)\n // So we can bail out here, too.\n 'class',\n 'constructor',\n\n // Return type is specified by type in @type\n 'type',\n\n // This seems to imply a class as well\n 'interface',\n ]) ||\n utils.avoidDocs();\n};\n\nexport default iterateJsdoc(({\n info: {\n comment,\n },\n node,\n report,\n settings,\n utils,\n context,\n}) => {\n const {\n contexts,\n enableFixer = false,\n forceRequireReturn = false,\n forceReturnsWithAsync = false,\n publicOnly = false,\n } = context.options[0] || {};\n\n // A preflight check. We do not need to run a deep check\n // in case the @returns comment is optional or undefined.\n if (canSkip(utils)) {\n return;\n }\n\n /** @type {boolean|undefined} */\n let forceRequireReturnContext;\n if (contexts) {\n const {\n foundContext,\n } = utils.findContext(contexts, comment);\n if (typeof foundContext === 'object') {\n forceRequireReturnContext = foundContext.forceRequireReturn;\n }\n }\n\n const tagName = /** @type {string} */ (utils.getPreferredTagName({\n tagName: 'returns',\n }));\n if (!tagName) {\n return;\n }\n\n const tags = utils.getTags(tagName);\n\n if (tags.length > 1) {\n report(`Found more than one @${tagName} declaration.`);\n }\n\n const iteratingFunction = utils.isIteratingFunction();\n\n // In case the code returns something, we expect a return value in JSDoc.\n const [\n tag,\n ] = tags;\n const missingReturnTag = typeof tag === 'undefined' || tag === null;\n\n const shouldReport = () => {\n if (!missingReturnTag) {\n return false;\n }\n\n if (publicOnly) {\n /** @type {import('./requireJsdoc.js').RequireJsdocOpts} */\n const opt = {\n ancestorsOnly: Boolean(publicOnly?.ancestorsOnly ?? false),\n esm: Boolean(publicOnly?.esm ?? true),\n initModuleExports: Boolean(publicOnly?.cjs ?? true),\n initWindow: Boolean(publicOnly?.window ?? false),\n };\n // istanbul ignore next -- Fallback to deprecated method\n const {\n sourceCode = context.getSourceCode(),\n } = context;\n const exported = exportParser.isUncommentedExport(\n /** @type {import('eslint').Rule.Node} */ (node), sourceCode, opt, settings,\n );\n\n if (!exported) {\n return false;\n }\n }\n\n if ((forceRequireReturn || forceRequireReturnContext) && (\n iteratingFunction || utils.isVirtualFunction()\n )) {\n return true;\n }\n\n const isAsync = !iteratingFunction && utils.hasTag('async') ||\n iteratingFunction && utils.isAsync();\n\n if (forceReturnsWithAsync && isAsync) {\n return true;\n }\n\n return iteratingFunction && utils.hasValueOrExecutorHasNonEmptyResolveValue(\n forceReturnsWithAsync,\n );\n };\n\n if (shouldReport()) {\n utils.reportJSDoc(`Missing JSDoc @${tagName} declaration.`, null, enableFixer ? () => {\n utils.addTag(tagName);\n } : null);\n }\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'Requires that returns are documented.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-returns.md#repos-sticky-header',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n checkConstructors: {\n default: false,\n type: 'boolean',\n },\n checkGetters: {\n default: true,\n type: 'boolean',\n },\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n forceRequireReturn: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n enableFixer: {\n type: 'boolean',\n },\n exemptedBy: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n forceRequireReturn: {\n default: false,\n type: 'boolean',\n },\n forceReturnsWithAsync: {\n default: false,\n type: 'boolean',\n },\n publicOnly: {\n oneOf: [\n {\n default: false,\n type: 'boolean',\n },\n {\n additionalProperties: false,\n default: {},\n properties: {\n ancestorsOnly: {\n type: 'boolean',\n },\n cjs: {\n type: 'boolean',\n },\n esm: {\n type: 'boolean',\n },\n window: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"requireReturnsCheck.js","names":["_iterateJsdoc","_interopRequireDefault","require","obj","__esModule","default","canSkip","utils","settings","voidingTags","mode","push","hasATag","isConstructor","classHasTag","_default","exports","iterateJsdoc","context","node","report","exemptAsync","exemptGenerators","reportMissingReturnForUndefinedTypes","options","isAsync","tagName","getPreferredTagName","tags","getTags","length","tag","type","trim","test","returnNever","hasValueOrExecutorHasNonEmptyResolveValue","mayBeUndefinedTypeTag","generator","meta","docs","description","url","schema","additionalProperties","properties","module"],"sources":["../../src/rules/requireReturnsCheck.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\n\n/**\n * @param {import('../iterateJsdoc.js').Utils} utils\n * @param {import('../iterateJsdoc.js').Settings} settings\n * @returns {boolean}\n */\nconst canSkip = (utils, settings) => {\n const voidingTags = [\n // An abstract function is by definition incomplete\n // so it is perfectly fine if a return is documented but\n // not present within the function.\n // A subclass may inherit the doc and implement the\n // missing return.\n 'abstract',\n 'virtual',\n\n // A constructor function returns `this` by default, so may be `@returns`\n // tag indicating this but no explicit return\n 'class',\n 'constructor',\n 'interface',\n ];\n\n if (settings.mode === 'closure') {\n // Structural Interface in GCC terms, equivalent to @interface tag as far as this rule is concerned\n voidingTags.push('record');\n }\n\n return utils.hasATag(voidingTags) ||\n utils.isConstructor() ||\n utils.classHasTag('interface') ||\n settings.mode === 'closure' && utils.classHasTag('record');\n};\n\n// eslint-disable-next-line complexity -- Temporary\nexport default iterateJsdoc(({\n context,\n node,\n report,\n settings,\n utils,\n}) => {\n const {\n exemptAsync = true,\n exemptGenerators = settings.mode === 'typescript',\n reportMissingReturnForUndefinedTypes = false,\n } = context.options[0] || {};\n\n if (canSkip(utils, settings)) {\n return;\n }\n\n if (exemptAsync && utils.isAsync()) {\n return;\n }\n\n const tagName = /** @type {string} */ (utils.getPreferredTagName({\n tagName: 'returns',\n }));\n if (!tagName) {\n return;\n }\n\n const tags = utils.getTags(tagName);\n\n if (tags.length === 0) {\n return;\n }\n\n if (tags.length > 1) {\n report(`Found more than one @${tagName} declaration.`);\n\n return;\n }\n\n const [\n tag,\n ] = tags;\n\n const type = tag.type.trim();\n\n // https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-7.html#assertion-functions\n if (/asserts\\s/u.test(type)) {\n return;\n }\n\n const returnNever = type === 'never';\n\n if (returnNever && utils.hasValueOrExecutorHasNonEmptyResolveValue(false)) {\n report(`JSDoc @${tagName} declaration set with \"never\" but return expression is present in function.`);\n\n return;\n }\n\n // In case a return value is declared in JSDoc, we also expect one in the code.\n if (\n !returnNever &&\n (\n reportMissingReturnForUndefinedTypes ||\n !utils.mayBeUndefinedTypeTag(tag)\n ) &&\n (tag.type === '' && !utils.hasValueOrExecutorHasNonEmptyResolveValue(\n exemptAsync,\n ) ||\n tag.type !== '' && !utils.hasValueOrExecutorHasNonEmptyResolveValue(\n exemptAsync,\n true,\n )) &&\n (!exemptGenerators || !('generator' in /** @type {import('../iterateJsdoc.js').Node} */ (node)) || !node.generator)\n ) {\n report(`JSDoc @${tagName} declaration present but return expression not available in function.`);\n }\n}, {\n meta: {\n docs: {\n description: 'Requires a return statement in function body if a `@returns` tag is specified in jsdoc comment.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-returns-check.md#repos-sticky-header',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n exemptAsync: {\n default: true,\n type: 'boolean',\n },\n exemptGenerators: {\n type: 'boolean',\n },\n reportMissingReturnForUndefinedTypes: {\n default: false,\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"requireReturnsDescription.js","names":["_iterateJsdoc","_interopRequireDefault","require","obj","__esModule","default","_default","exports","iterateJsdoc","report","utils","forEachPreferredTag","jsdocTag","targetTagName","type","trim","includes","description","contextDefaults","meta","docs","url","schema","additionalProperties","properties","contexts","items","anyOf","comment","context","module"],"sources":["../../src/rules/requireReturnsDescription.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\n\nexport default iterateJsdoc(({\n report,\n utils,\n}) => {\n utils.forEachPreferredTag('returns', (jsdocTag, targetTagName) => {\n const type = jsdocTag.type && jsdocTag.type.trim();\n\n if ([\n 'void', 'undefined', 'Promise<void>', 'Promise<undefined>',\n ].includes(type)) {\n return;\n }\n\n if (!jsdocTag.description.trim()) {\n report(`Missing JSDoc @${targetTagName} description.`, null, jsdocTag);\n }\n });\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'Requires that the `@returns` tag has a `description` value.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-returns-description.md#repos-sticky-header',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":";;;;;;AAAA,IAAAA,aAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA8C,SAAAD,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,IAAAG,QAAA,GAAAC,OAAA,CAAAF,OAAA,GAE/B,IAAAG,qBAAY,EAAC,CAAC;EAC3BC,MAAM;EACNC;AACF,CAAC,KAAK;EACJA,KAAK,CAACC,mBAAmB,CAAC,SAAS,EAAE,CAACC,QAAQ,EAAEC,aAAa,KAAK;IAChE,MAAMC,IAAI,GAAGF,QAAQ,CAACE,IAAI,IAAIF,QAAQ,CAACE,IAAI,CAACC,IAAI,CAAC,CAAC;IAElD,IAAI,CACF,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,oBAAoB,CAC3D,CAACC,QAAQ,CAACF,IAAI,CAAC,EAAE;MAChB;IACF;IAEA,IAAI,CAACF,QAAQ,CAACK,WAAW,CAACF,IAAI,CAAC,CAAC,EAAE;MAChCN,MAAM,CAAE,kBAAiBI,aAAc,eAAc,EAAE,IAAI,EAAED,QAAQ,CAAC;IACxE;EACF,CAAC,CAAC;AACJ,CAAC,EAAE;EACDM,eAAe,EAAE,IAAI;EACrBC,IAAI,EAAE;IACJC,IAAI,EAAE;MACJH,WAAW,EAAE,6DAA6D;MAC1EI,GAAG,EAAE;IACP,CAAC;IACDC,MAAM,EAAE,CACN;MACEC,oBAAoB,EAAE,KAAK;MAC3BC,UAAU,EAAE;QACVC,QAAQ,EAAE;UACRC,KAAK,EAAE;YACLC,KAAK,EAAE,CACL;cACEb,IAAI,EAAE;YACR,CAAC,EACD;cACES,oBAAoB,EAAE,KAAK;cAC3BC,UAAU,EAAE;gBACVI,OAAO,EAAE;kBACPd,IAAI,EAAE;gBACR,CAAC;gBACDe,OAAO,EAAE;kBACPf,IAAI,EAAE;gBACR;cACF,CAAC;cACDA,IAAI,EAAE;YACR,CAAC;UAEL,CAAC;UACDA,IAAI,EAAE;QACR;MACF,CAAC;MACDA,IAAI,EAAE;IACR,CAAC,CACF;IACDA,IAAI,EAAE;EACR;AACF,CAAC,CAAC;AAAAgB,MAAA,CAAAvB,OAAA,GAAAA,OAAA,CAAAF,OAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"requireReturnsType.js","names":["_iterateJsdoc","_interopRequireDefault","require","obj","__esModule","default","_default","exports","iterateJsdoc","report","utils","forEachPreferredTag","jsdocTag","targetTagName","type","contextDefaults","meta","docs","description","url","schema","additionalProperties","properties","contexts","items","anyOf","comment","context","module"],"sources":["../../src/rules/requireReturnsType.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\n\nexport default iterateJsdoc(({\n report,\n utils,\n}) => {\n utils.forEachPreferredTag('returns', (jsdocTag, targetTagName) => {\n if (!jsdocTag.type) {\n report(`Missing JSDoc @${targetTagName} type.`, null, jsdocTag);\n }\n });\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'Requires that `@returns` tag has `type` value.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-returns-type.md#repos-sticky-header',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":";;;;;;AAAA,IAAAA,aAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA8C,SAAAD,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,IAAAG,QAAA,GAAAC,OAAA,CAAAF,OAAA,GAE/B,IAAAG,qBAAY,EAAC,CAAC;EAC3BC,MAAM;EACNC;AACF,CAAC,KAAK;EACJA,KAAK,CAACC,mBAAmB,CAAC,SAAS,EAAE,CAACC,QAAQ,EAAEC,aAAa,KAAK;IAChE,IAAI,CAACD,QAAQ,CAACE,IAAI,EAAE;MAClBL,MAAM,CAAE,kBAAiBI,aAAc,QAAO,EAAE,IAAI,EAAED,QAAQ,CAAC;IACjE;EACF,CAAC,CAAC;AACJ,CAAC,EAAE;EACDG,eAAe,EAAE,IAAI;EACrBC,IAAI,EAAE;IACJC,IAAI,EAAE;MACJC,WAAW,EAAE,gDAAgD;MAC7DC,GAAG,EAAE;IACP,CAAC;IACDC,MAAM,EAAE,CACN;MACEC,oBAAoB,EAAE,KAAK;MAC3BC,UAAU,EAAE;QACVC,QAAQ,EAAE;UACRC,KAAK,EAAE;YACLC,KAAK,EAAE,CACL;cACEX,IAAI,EAAE;YACR,CAAC,EACD;cACEO,oBAAoB,EAAE,KAAK;cAC3BC,UAAU,EAAE;gBACVI,OAAO,EAAE;kBACPZ,IAAI,EAAE;gBACR,CAAC;gBACDa,OAAO,EAAE;kBACPb,IAAI,EAAE;gBACR;cACF,CAAC;cACDA,IAAI,EAAE;YACR,CAAC;UAEL,CAAC;UACDA,IAAI,EAAE;QACR;MACF,CAAC;MACDA,IAAI,EAAE;IACR,CAAC,CACF;IACDA,IAAI,EAAE;EACR;AACF,CAAC,CAAC;AAAAc,MAAA,CAAArB,OAAA,GAAAA,OAAA,CAAAF,OAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"requireThrows.js","names":["_iterateJsdoc","_interopRequireDefault","require","obj","__esModule","default","canSkip","utils","hasATag","avoidDocs","_default","exports","iterateJsdoc","report","tagName","getPreferredTagName","tags","getTags","iteratingFunction","isIteratingFunction","tag","missingThrowsTag","shouldReport","type","trim","hasThrowValue","contextDefaults","meta","docs","description","url","schema","additionalProperties","properties","contexts","items","anyOf","comment","context","exemptedBy","module"],"sources":["../../src/rules/requireThrows.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\n\n/**\n * We can skip checking for a throws value, in case the documentation is inherited\n * or the method is either a constructor or an abstract method.\n * @param {import('../iterateJsdoc.js').Utils} utils a reference to the utils which are used to probe if a tag is present or not.\n * @returns {boolean} true in case deep checking can be skipped; otherwise false.\n */\nconst canSkip = (utils) => {\n return utils.hasATag([\n // inheritdoc implies that all documentation is inherited\n // see https://jsdoc.app/tags-inheritdoc.html\n //\n // Abstract methods are by definition incomplete,\n // so it is not necessary to document that they throw an error.\n 'abstract',\n 'virtual',\n\n // The designated type can itself document `@throws`\n 'type',\n ]) ||\n utils.avoidDocs();\n};\n\nexport default iterateJsdoc(({\n report,\n utils,\n}) => {\n // A preflight check. We do not need to run a deep check for abstract\n // functions.\n if (canSkip(utils)) {\n return;\n }\n\n const tagName = /** @type {string} */ (utils.getPreferredTagName({\n tagName: 'throws',\n }));\n if (!tagName) {\n return;\n }\n\n const tags = utils.getTags(tagName);\n const iteratingFunction = utils.isIteratingFunction();\n\n // In case the code returns something, we expect a return value in JSDoc.\n const [\n tag,\n ] = tags;\n const missingThrowsTag = typeof tag === 'undefined' || tag === null;\n\n const shouldReport = () => {\n if (!missingThrowsTag) {\n if (tag.type.trim() === 'never' && iteratingFunction && utils.hasThrowValue()) {\n report(`JSDoc @${tagName} declaration set to \"never\" but throw value found.`);\n }\n\n return false;\n }\n\n return iteratingFunction && utils.hasThrowValue();\n };\n\n if (shouldReport()) {\n report(`Missing JSDoc @${tagName} declaration.`);\n }\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'Requires that throw statements are documented.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-throws.md#repos-sticky-header',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n exemptedBy: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":";;;;;;AAAA,IAAAA,aAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA8C,SAAAD,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAE9C;AACA;AACA;AACA;AACA;AACA;AACA,MAAMG,OAAO,GAAIC,KAAK,IAAK;EACzB,OAAOA,KAAK,CAACC,OAAO,CAAC;EACnB;EACA;EACA;EACA;EACA;EACA,UAAU,EACV,SAAS;EAET;EACA,MAAM,CACP,CAAC,IACAD,KAAK,CAACE,SAAS,CAAC,CAAC;AACrB,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAN,OAAA,GAEa,IAAAO,qBAAY,EAAC,CAAC;EAC3BC,MAAM;EACNN;AACF,CAAC,KAAK;EACJ;EACA;EACA,IAAID,OAAO,CAACC,KAAK,CAAC,EAAE;IAClB;EACF;EAEA,MAAMO,OAAO,GAAG,qBAAuBP,KAAK,CAACQ,mBAAmB,CAAC;IAC/DD,OAAO,EAAE;EACX,CAAC,CAAE;EACH,IAAI,CAACA,OAAO,EAAE;IACZ;EACF;EAEA,MAAME,IAAI,GAAGT,KAAK,CAACU,OAAO,CAACH,OAAO,CAAC;EACnC,MAAMI,iBAAiB,GAAGX,KAAK,CAACY,mBAAmB,CAAC,CAAC;;EAErD;EACA,MAAM,CACJC,GAAG,CACJ,GAAGJ,IAAI;EACR,MAAMK,gBAAgB,GAAG,OAAOD,GAAG,KAAK,WAAW,IAAIA,GAAG,KAAK,IAAI;EAEnE,MAAME,YAAY,GAAGA,CAAA,KAAM;IACzB,IAAI,CAACD,gBAAgB,EAAE;MACrB,IAAID,GAAG,CAACG,IAAI,CAACC,IAAI,CAAC,CAAC,KAAK,OAAO,IAAIN,iBAAiB,IAAIX,KAAK,CAACkB,aAAa,CAAC,CAAC,EAAE;QAC7EZ,MAAM,CAAE,UAASC,OAAQ,oDAAmD,CAAC;MAC/E;MAEA,OAAO,KAAK;IACd;IAEA,OAAOI,iBAAiB,IAAIX,KAAK,CAACkB,aAAa,CAAC,CAAC;EACnD,CAAC;EAED,IAAIH,YAAY,CAAC,CAAC,EAAE;IAClBT,MAAM,CAAE,kBAAiBC,OAAQ,eAAc,CAAC;EAClD;AACF,CAAC,EAAE;EACDY,eAAe,EAAE,IAAI;EACrBC,IAAI,EAAE;IACJC,IAAI,EAAE;MACJC,WAAW,EAAE,gDAAgD;MAC7DC,GAAG,EAAE;IACP,CAAC;IACDC,MAAM,EAAE,CACN;MACEC,oBAAoB,EAAE,KAAK;MAC3BC,UAAU,EAAE;QACVC,QAAQ,EAAE;UACRC,KAAK,EAAE;YACLC,KAAK,EAAE,CACL;cACEb,IAAI,EAAE;YACR,CAAC,EACD;cACES,oBAAoB,EAAE,KAAK;cAC3BC,UAAU,EAAE;gBACVI,OAAO,EAAE;kBACPd,IAAI,EAAE;gBACR,CAAC;gBACDe,OAAO,EAAE;kBACPf,IAAI,EAAE;gBACR;cACF,CAAC;cACDA,IAAI,EAAE;YACR,CAAC;UAEL,CAAC;UACDA,IAAI,EAAE;QACR,CAAC;QACDgB,UAAU,EAAE;UACVJ,KAAK,EAAE;YACLZ,IAAI,EAAE;UACR,CAAC;UACDA,IAAI,EAAE;QACR;MACF,CAAC;MACDA,IAAI,EAAE;IACR,CAAC,CACF;IACDA,IAAI,EAAE;EACR;AACF,CAAC,CAAC;AAAAiB,MAAA,CAAA7B,OAAA,GAAAA,OAAA,CAAAN,OAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"requireYields.js","names":["_iterateJsdoc","_interopRequireDefault","require","obj","__esModule","default","canSkip","utils","hasATag","avoidDocs","checkTagName","report","tagName","preferredTagName","getPreferredTagName","tags","getTags","length","tag","missingTag","_default","exports","iterateJsdoc","context","next","nextWithGeneratorTag","forceRequireNext","forceRequireYields","withGeneratorTag","options","iteratingFunction","isIteratingFunction","preferredYieldTagName","missingYieldTag","shouldReportYields","hasTag","isGenerator","hasYieldValue","preferredNextTagName","missingNextTag","shouldReportNext","hasYieldReturnValue","contextDefaults","meta","docs","description","url","schema","additionalProperties","properties","contexts","items","anyOf","type","comment","exemptedBy","module"],"sources":["../../src/rules/requireYields.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\n\n/**\n * We can skip checking for a yield value, in case the documentation is inherited\n * or the method has a constructor or abstract tag.\n *\n * In either of these cases the yield value is optional or not defined.\n * @param {import('../iterateJsdoc.js').Utils} utils a reference to the utils which are used to probe if a tag is present or not.\n * @returns {boolean} true in case deep checking can be skipped; otherwise false.\n */\nconst canSkip = (utils) => {\n return utils.hasATag([\n // inheritdoc implies that all documentation is inherited\n // see https://jsdoc.app/tags-inheritdoc.html\n //\n // Abstract methods are by definition incomplete,\n // so it is not an error if it declares a yield value but does not implement it.\n 'abstract',\n 'virtual',\n\n // Constructors do not have a yield value\n // so we can bail out here, too.\n 'class',\n 'constructor',\n\n // Yield (and any `next`) type is specified accompanying the targeted\n // @type\n 'type',\n\n // This seems to imply a class as well\n 'interface',\n ]) ||\n utils.avoidDocs();\n};\n\n/**\n * @param {import('../iterateJsdoc.js').Utils} utils\n * @param {import('../iterateJsdoc.js').Report} report\n * @param {string} tagName\n * @returns {[preferredTagName?: string, missingTag?: boolean]}\n */\nconst checkTagName = (utils, report, tagName) => {\n const preferredTagName = /** @type {string} */ (utils.getPreferredTagName({\n tagName,\n }));\n if (!preferredTagName) {\n return [];\n }\n\n const tags = utils.getTags(preferredTagName);\n\n if (tags.length > 1) {\n report(`Found more than one @${preferredTagName} declaration.`);\n }\n\n // In case the code yields something, we expect a yields value in JSDoc.\n const [\n tag,\n ] = tags;\n const missingTag = typeof tag === 'undefined' || tag === null;\n\n return [\n preferredTagName, missingTag,\n ];\n};\n\nexport default iterateJsdoc(({\n report,\n utils,\n context,\n}) => {\n const {\n next = false,\n nextWithGeneratorTag = false,\n forceRequireNext = false,\n forceRequireYields = false,\n withGeneratorTag = true,\n } = context.options[0] || {};\n\n // A preflight check. We do not need to run a deep check\n // in case the @yield comment is optional or undefined.\n if (canSkip(utils)) {\n return;\n }\n\n const iteratingFunction = utils.isIteratingFunction();\n\n const [\n preferredYieldTagName,\n missingYieldTag,\n ] = checkTagName(\n utils, report, 'yields',\n );\n if (preferredYieldTagName) {\n const shouldReportYields = () => {\n if (!missingYieldTag) {\n return false;\n }\n\n if (\n withGeneratorTag && utils.hasTag('generator') ||\n forceRequireYields && iteratingFunction && utils.isGenerator()\n ) {\n return true;\n }\n\n return iteratingFunction && utils.isGenerator() && utils.hasYieldValue();\n };\n\n if (shouldReportYields()) {\n report(`Missing JSDoc @${preferredYieldTagName} declaration.`);\n }\n }\n\n if (next || nextWithGeneratorTag || forceRequireNext) {\n const [\n preferredNextTagName,\n missingNextTag,\n ] = checkTagName(\n utils, report, 'next',\n );\n if (!preferredNextTagName) {\n return;\n }\n\n const shouldReportNext = () => {\n if (!missingNextTag) {\n return false;\n }\n\n if (\n nextWithGeneratorTag && utils.hasTag('generator')) {\n return true;\n }\n\n if (\n !next && !forceRequireNext ||\n !iteratingFunction ||\n !utils.isGenerator()\n ) {\n return false;\n }\n\n return forceRequireNext || utils.hasYieldReturnValue();\n };\n\n if (shouldReportNext()) {\n report(`Missing JSDoc @${preferredNextTagName} declaration.`);\n }\n }\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'Requires yields are documented.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-yields.md#repos-sticky-header',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n exemptedBy: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n forceRequireNext: {\n default: false,\n type: 'boolean',\n },\n forceRequireYields: {\n default: false,\n type: 'boolean',\n },\n next: {\n default: false,\n type: 'boolean',\n },\n nextWithGeneratorTag: {\n default: false,\n type: 'boolean',\n },\n withGeneratorTag: {\n default: true,\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"requireYieldsCheck.js","names":["_iterateJsdoc","_interopRequireDefault","require","obj","__esModule","default","canSkip","utils","settings","voidingTags","mode","push","hasATag","isConstructor","classHasTag","checkTagName","report","tagName","preferredTagName","getPreferredTagName","tags","getTags","length","_default","exports","iterateJsdoc","context","next","checkGeneratorsOnly","options","preferredYieldTagName","yieldTag","shouldReportYields","type","trim","hasYieldValue","isGenerator","mayBeUndefinedTypeTag","preferredNextTagName","nextTag","shouldReportNext","hasYieldReturnValue","meta","docs","description","url","schema","additionalProperties","properties","contexts","items","anyOf","comment","exemptedBy","module"],"sources":["../../src/rules/requireYieldsCheck.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\n\n/**\n * @param {import('../iterateJsdoc.js').Utils} utils\n * @param {import('../iterateJsdoc.js').Settings} settings\n * @returns {boolean}\n */\nconst canSkip = (utils, settings) => {\n const voidingTags = [\n // An abstract function is by definition incomplete\n // so it is perfectly fine if a yield is documented but\n // not present within the function.\n // A subclass may inherit the doc and implement the\n // missing yield.\n 'abstract',\n 'virtual',\n\n // Constructor functions do not have a yield value\n // so we can bail here, too.\n 'class',\n 'constructor',\n\n // This seems to imply a class as well\n 'interface',\n ];\n\n if (settings.mode === 'closure') {\n // Structural Interface in GCC terms, equivalent to @interface tag as far as this rule is concerned\n voidingTags.push('record');\n }\n\n return utils.hasATag(voidingTags) ||\n utils.isConstructor() ||\n utils.classHasTag('interface') ||\n settings.mode === 'closure' && utils.classHasTag('record');\n};\n\n/**\n * @param {import('../iterateJsdoc.js').Utils} utils\n * @param {import('../iterateJsdoc.js').Report} report\n * @param {string} tagName\n * @returns {[]|[preferredTagName: string, tag: import('comment-parser').Spec]}\n */\nconst checkTagName = (utils, report, tagName) => {\n const preferredTagName = /** @type {string} */ (utils.getPreferredTagName({\n tagName,\n }));\n if (!preferredTagName) {\n return [];\n }\n\n const tags = utils.getTags(preferredTagName);\n\n if (tags.length === 0) {\n return [];\n }\n\n if (tags.length > 1) {\n report(`Found more than one @${preferredTagName} declaration.`);\n\n return [];\n }\n\n return [\n preferredTagName, tags[0],\n ];\n};\n\nexport default iterateJsdoc(({\n context,\n report,\n settings,\n utils,\n}) => {\n if (canSkip(utils, settings)) {\n return;\n }\n\n const {\n next = false,\n checkGeneratorsOnly = false,\n } = context.options[0] || {};\n\n const [\n preferredYieldTagName,\n yieldTag,\n ] = checkTagName(\n utils, report, 'yields',\n );\n if (preferredYieldTagName) {\n const shouldReportYields = () => {\n if (\n /** @type {import('comment-parser').Spec} */ (\n yieldTag\n ).type.trim() === 'never'\n ) {\n if (utils.hasYieldValue()) {\n report(`JSDoc @${preferredYieldTagName} declaration set with \"never\" but yield expression is present in function.`);\n }\n\n return false;\n }\n\n if (checkGeneratorsOnly && !utils.isGenerator()) {\n return true;\n }\n\n return !utils.mayBeUndefinedTypeTag(\n /** @type {import('comment-parser').Spec} */\n (yieldTag),\n ) && !utils.hasYieldValue();\n };\n\n // In case a yield value is declared in JSDoc, we also expect one in the code.\n if (shouldReportYields()) {\n report(`JSDoc @${preferredYieldTagName} declaration present but yield expression not available in function.`);\n }\n }\n\n if (next) {\n const [\n preferredNextTagName,\n nextTag,\n ] = checkTagName(\n utils, report, 'next',\n );\n if (preferredNextTagName) {\n const shouldReportNext = () => {\n if (\n /** @type {import('comment-parser').Spec} */ (\n nextTag\n ).type.trim() === 'never'\n ) {\n if (utils.hasYieldReturnValue()) {\n report(`JSDoc @${preferredNextTagName} declaration set with \"never\" but yield expression with return value is present in function.`);\n }\n\n return false;\n }\n\n if (checkGeneratorsOnly && !utils.isGenerator()) {\n return true;\n }\n\n return !utils.mayBeUndefinedTypeTag(\n /** @type {import('comment-parser').Spec} */\n (nextTag),\n ) && !utils.hasYieldReturnValue();\n };\n\n if (shouldReportNext()) {\n report(`JSDoc @${preferredNextTagName} declaration present but yield expression with return value not available in function.`);\n }\n }\n }\n}, {\n meta: {\n docs: {\n description: 'Requires a yield statement in function body if a `@yields` tag is specified in jsdoc comment.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-yields-check.md#repos-sticky-header',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n checkGeneratorsOnly: {\n default: false,\n type: 'boolean',\n },\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n exemptedBy: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n next: {\n default: false,\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sortTags.js","names":["_defaultTagOrder","_interopRequireDefault","require","_iterateJsdoc","obj","__esModule","default","_default","exports","iterateJsdoc","context","jsdoc","utils","linesBetween","tagSequence","defaultTagOrder","alphabetizeExtras","reportTagGroupSpacing","reportIntraTagGroupSpacing","options","tagList","flatMap","tags","otherPos","indexOf","endPos","length","ongoingCount","idx","tag","entries","originalIndex","source","originalLine","firstChangedTagLine","firstChangedTagIndex","sortedTags","JSON","parse","stringify","sort","tagNew","tagOld","checkOrSetFirstChanged","newPos","oldPos","preferredNewPos","preferredOldPos","undefined","lastTagsOfGroup","badLastTagsOfGroup","countTagEmptyLines","reduce","acc","tokens","description","name","type","end","tg","empty","Number","innerIdx","currentTag","lastTag","includes","some","tgs","push","ct","fixer","currIdx","newIdx","emptyLine","number","seedTokens","delimiter","start","existingEmptyLines","_jsdoc$source$newIdx","nextTokens","lineDiff","lines","Array","from","splice","srcIdx","src","reportJSDoc","tagIdx","foundFirstTag","nextIdx","ignore","lastTagOfGroup","_jsdoc$source$nextIdx","_jsdoc$source$nextIdx2","firstLine","getFirstLine","fix","itemsToMoveRange","keys","unchangedPriorTagDescriptions","slice","initialOffset","removeTag","changedTags","extraTagCount","changedTag","addTag","addLine","join","iterateAllJsdocs","meta","docs","url","fixable","schema","additionalProperties","properties","items","module"],"sources":["../../src/rules/sortTags.js"],"sourcesContent":["import defaultTagOrder from '../defaultTagOrder.js';\nimport iterateJsdoc from '../iterateJsdoc.js';\n\n// eslint-disable-next-line complexity -- Temporary\nexport default iterateJsdoc(({\n context,\n jsdoc,\n utils,\n}) => {\n const\n /**\n * @type {{\n * linesBetween: import('../iterateJsdoc.js').Integer,\n * tagSequence: {\n * tags: string[]\n * }[],\n * alphabetizeExtras: boolean,\n * reportTagGroupSpacing: boolean,\n * reportIntraTagGroupSpacing: boolean,\n * }}\n */ {\n linesBetween = 1,\n tagSequence = defaultTagOrder,\n alphabetizeExtras = false,\n reportTagGroupSpacing = true,\n reportIntraTagGroupSpacing = true,\n } = context.options[0] || {};\n\n const tagList = tagSequence.flatMap((obj) => {\n /* typeof obj === 'string' ? obj : */\n return obj.tags;\n });\n\n const otherPos = tagList.indexOf('-other');\n const endPos = otherPos > -1 ? otherPos : tagList.length;\n\n let ongoingCount = 0;\n for (const [\n idx,\n tag,\n ] of\n /**\n * @type {(\n * import('@es-joy/jsdoccomment').JsdocTagWithInline & {\n * originalIndex: import('../iterateJsdoc.js').Integer,\n * originalLine: import('../iterateJsdoc.js').Integer,\n * }\n * )[]}\n */ (jsdoc.tags).entries()) {\n tag.originalIndex = idx;\n ongoingCount += tag.source.length;\n tag.originalLine = ongoingCount;\n }\n\n /** @type {import('../iterateJsdoc.js').Integer|undefined} */\n let firstChangedTagLine;\n /** @type {import('../iterateJsdoc.js').Integer|undefined} */\n let firstChangedTagIndex;\n\n /**\n * @type {(import('comment-parser').Spec & {\n * originalIndex: import('../iterateJsdoc.js').Integer,\n * originalLine: import('../iterateJsdoc.js').Integer,\n * })[]}\n */\n const sortedTags = JSON.parse(JSON.stringify(jsdoc.tags));\n sortedTags.sort(({\n tag: tagNew,\n }, {\n originalIndex,\n originalLine,\n tag: tagOld,\n }) => {\n // Optimize: Just keep relative positions if the same tag name\n if (tagNew === tagOld) {\n return 0;\n }\n\n const checkOrSetFirstChanged = () => {\n if (!firstChangedTagLine || originalLine < firstChangedTagLine) {\n firstChangedTagLine = originalLine;\n firstChangedTagIndex = originalIndex;\n }\n };\n\n const newPos = tagList.indexOf(tagNew);\n const oldPos = tagList.indexOf(tagOld);\n\n const preferredNewPos = newPos === -1 ? endPos : newPos;\n const preferredOldPos = oldPos === -1 ? endPos : oldPos;\n\n if (preferredNewPos < preferredOldPos) {\n checkOrSetFirstChanged();\n return -1;\n }\n\n if (preferredNewPos > preferredOldPos) {\n return 1;\n }\n\n // preferredNewPos === preferredOldPos\n if (\n !alphabetizeExtras ||\n\n // Optimize: If tagNew (or tagOld which is the same) was found in the\n // priority array, it can maintain its relative position—without need\n // of alphabetizing (secondary sorting)\n newPos >= 0\n ) {\n return 0;\n }\n\n if (tagNew < tagOld) {\n checkOrSetFirstChanged();\n return -1;\n }\n\n // tagNew > tagOld\n return 1;\n });\n\n if (firstChangedTagLine === undefined) {\n // Should be ordered by now\n\n /**\n * @type {import('comment-parser').Spec[]}\n */\n const lastTagsOfGroup = [];\n\n /**\n * @type {[\n * import('comment-parser').Spec,\n * import('../iterateJsdoc.js').Integer\n * ][]}\n */\n const badLastTagsOfGroup = [];\n\n /**\n * @param {import('comment-parser').Spec} tag\n */\n const countTagEmptyLines = (tag) => {\n return tag.source.reduce((acc, {\n tokens: {\n description,\n name,\n type,\n end,\n tag: tg,\n },\n }) => {\n const empty = !tg && !type && !name && !description;\n // Reset the count so long as there is content\n return empty ? acc + Number(empty && !end) : 0;\n }, 0);\n };\n\n let idx = 0;\n for (const {\n tags,\n } of tagSequence) {\n let innerIdx;\n /** @type {import('comment-parser').Spec} */\n let currentTag;\n /** @type {import('comment-parser').Spec|undefined} */\n let lastTag;\n do {\n currentTag = jsdoc.tags[idx];\n if (!currentTag) {\n idx++;\n break;\n }\n\n innerIdx = tags.indexOf(currentTag.tag);\n\n if (\n innerIdx === -1 &&\n // eslint-disable-next-line no-loop-func -- Safe\n (!tags.includes('-other') || tagSequence.some(({\n tags: tgs,\n }) => {\n return tgs.includes(currentTag.tag);\n }))\n ) {\n idx++;\n break;\n }\n\n lastTag = currentTag;\n\n idx++;\n } while (true);\n\n idx--;\n\n if (lastTag) {\n lastTagsOfGroup.push(lastTag);\n const ct = countTagEmptyLines(lastTag);\n if (\n ct !== linesBetween &&\n // Use another rule for adding to end (should be of interest outside this rule)\n jsdoc.tags[idx]\n ) {\n badLastTagsOfGroup.push([\n lastTag, ct,\n ]);\n }\n }\n }\n\n if (reportTagGroupSpacing && badLastTagsOfGroup.length) {\n /**\n * @param {import('comment-parser').Spec} tg\n * @returns {() => void}\n */\n const fixer = (tg) => {\n return () => {\n // Due to https://github.com/syavorsky/comment-parser/issues/110 ,\n // we have to modify `jsdoc.source` rather than just modify tags\n // directly\n for (const [\n currIdx,\n {\n tokens,\n },\n ] of jsdoc.source.entries()) {\n if (tokens.tag !== '@' + tg.tag) {\n continue;\n }\n\n // Cannot be `tokens.end`, as dropped off last tag, so safe to\n // go on\n let newIdx = currIdx;\n\n const emptyLine = () => {\n return {\n number: 0,\n source: '',\n tokens: utils.seedTokens({\n delimiter: '*',\n start: jsdoc.source[newIdx - 1].tokens.start,\n }),\n };\n };\n\n let existingEmptyLines = 0;\n while (true) {\n const nextTokens = jsdoc.source[++newIdx]?.tokens;\n\n /* istanbul ignore if -- Guard */\n if (!nextTokens) {\n return;\n }\n\n // Should be no `nextTokens.end` to worry about since ignored\n // if not followed by tag\n\n if (nextTokens.tag) {\n // Haven't made it to last tag instance yet, so keep looking\n if (nextTokens.tag === tokens.tag) {\n existingEmptyLines = 0;\n continue;\n }\n\n const lineDiff = linesBetween - existingEmptyLines;\n if (lineDiff > 0) {\n const lines = Array.from({\n length: lineDiff,\n }, () => {\n return emptyLine();\n });\n jsdoc.source.splice(newIdx, 0, ...lines);\n } else {\n // lineDiff < 0\n jsdoc.source.splice(\n newIdx + lineDiff,\n -lineDiff,\n );\n }\n\n break;\n }\n\n const empty = !nextTokens.type && !nextTokens.name &&\n !nextTokens.description;\n\n if (empty) {\n existingEmptyLines++;\n } else {\n // Has content again, so reset empty line count\n existingEmptyLines = 0;\n }\n }\n\n break;\n }\n\n for (const [\n srcIdx,\n src,\n ] of jsdoc.source.entries()) {\n src.number = srcIdx;\n }\n };\n };\n\n for (const [\n tg,\n ] of badLastTagsOfGroup) {\n utils.reportJSDoc(\n 'Tag groups do not have the expected whitespace',\n tg,\n fixer(tg),\n );\n }\n\n return;\n }\n\n if (!reportIntraTagGroupSpacing) {\n return;\n }\n\n for (const [\n tagIdx,\n tag,\n ] of jsdoc.tags.entries()) {\n if (!jsdoc.tags[tagIdx + 1] || lastTagsOfGroup.includes(tag)) {\n continue;\n }\n\n const ct = countTagEmptyLines(tag);\n if (ct) {\n // eslint-disable-next-line complexity -- Temporary\n const fixer = () => {\n let foundFirstTag = false;\n\n /** @type {string|undefined} */\n let currentTag;\n\n for (const [\n currIdx,\n {\n tokens: {\n description,\n name,\n type,\n end,\n tag: tg,\n },\n },\n ] of jsdoc.source.entries()) {\n if (tg) {\n foundFirstTag = true;\n currentTag = tg;\n }\n\n if (!foundFirstTag) {\n continue;\n }\n\n if (currentTag && !tg && !type && !name && !description && !end) {\n let nextIdx = currIdx;\n\n let ignore = true;\n // Even if a tag of the same name as the last tags in a group,\n // could still be an earlier tag in that group\n\n // eslint-disable-next-line no-loop-func -- Safe\n if (lastTagsOfGroup.some((lastTagOfGroup) => {\n return currentTag === '@' + lastTagOfGroup.tag;\n })) {\n while (true) {\n const nextTokens = jsdoc.source[++nextIdx]?.tokens;\n if (!nextTokens) {\n break;\n }\n\n if (!nextTokens.tag) {\n continue;\n }\n\n // Followed by the same tag name, so not actually last in group,\n // and of interest\n if (nextTokens.tag === currentTag) {\n ignore = false;\n }\n }\n } else {\n while (true) {\n const nextTokens = jsdoc.source[++nextIdx]?.tokens;\n if (!nextTokens || nextTokens.end) {\n break;\n }\n\n // Not the very last tag, so don't ignore\n if (nextTokens.tag) {\n ignore = false;\n break;\n }\n }\n }\n\n if (!ignore) {\n jsdoc.source.splice(currIdx, 1);\n for (const [\n srcIdx,\n src,\n ] of jsdoc.source.entries()) {\n src.number = srcIdx;\n }\n }\n }\n }\n };\n\n utils.reportJSDoc(\n 'Intra-group tags have unexpected whitespace',\n tag,\n fixer,\n );\n }\n }\n\n return;\n }\n\n const firstLine = utils.getFirstLine();\n\n const fix = () => {\n const itemsToMoveRange = [\n ...Array.from({\n length: jsdoc.tags.length -\n /** @type {import('../iterateJsdoc.js').Integer} */ (\n firstChangedTagIndex\n ),\n }).keys(),\n ];\n\n const unchangedPriorTagDescriptions = jsdoc.tags.slice(\n 0,\n firstChangedTagIndex,\n ).reduce((ct, {\n source,\n }) => {\n return ct + source.length - 1;\n }, 0);\n\n // This offset includes not only the offset from where the first tag\n // must begin, and the additional offset of where the first changed\n // tag begins, but it must also account for prior descriptions\n const initialOffset = /** @type {import('../iterateJsdoc.js').Integer} */ (\n firstLine\n ) + /** @type {import('../iterateJsdoc.js').Integer} */ (firstChangedTagIndex) +\n\n // May be the first tag, so don't try finding a prior one if so\n unchangedPriorTagDescriptions;\n\n // Use `firstChangedTagLine` for line number to begin reporting/splicing\n for (const idx of itemsToMoveRange) {\n utils.removeTag(\n idx +\n /** @type {import('../iterateJsdoc.js').Integer} */ (\n firstChangedTagIndex\n ),\n );\n }\n\n const changedTags = sortedTags.slice(firstChangedTagIndex);\n let extraTagCount = 0;\n\n for (const idx of itemsToMoveRange) {\n const changedTag = changedTags[idx];\n\n utils.addTag(\n changedTag.tag,\n extraTagCount + initialOffset + idx,\n {\n ...changedTag.source[0].tokens,\n\n // `comment-parser` puts the `end` within the `tags` section, so\n // avoid adding another to jsdoc.source\n end: '',\n },\n );\n\n for (const {\n tokens,\n } of changedTag.source.slice(1)) {\n if (!tokens.end) {\n utils.addLine(\n extraTagCount + initialOffset + idx + 1,\n {\n ...tokens,\n end: '',\n },\n );\n extraTagCount++;\n }\n }\n }\n };\n\n utils.reportJSDoc(\n `Tags are not in the prescribed order: ${\n tagList.join(', ') || '(alphabetical)'\n }`,\n jsdoc.tags[/** @type {import('../iterateJsdoc.js').Integer} */ (\n firstChangedTagIndex\n )],\n fix,\n true,\n );\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Sorts tags by a specified sequence according to tag name.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/sort-tags.md#repos-sticky-header',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n alphabetizeExtras: {\n type: 'boolean',\n },\n linesBetween: {\n type: 'integer',\n },\n reportIntraTagGroupSpacing: {\n type: 'boolean',\n },\n reportTagGroupSpacing: {\n type: 'boolean',\n },\n tagSequence: {\n items: {\n properties: {\n tags: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tagLines.js","names":["_iterateJsdoc","_interopRequireDefault","require","obj","__esModule","default","_default","exports","iterateJsdoc","context","jsdoc","utils","alwaysNever","count","endLines","startLines","applyToEndTag","tags","options","some","tg","tagIdx","lastTag","lastEmpty","reportIndex","emptyLinesCount","idx","tokens","tag","name","type","description","end","source","entries","_tags$lastTag$slice","_tags$lastTag$slice2","includes","slice","lines","empty","length","lineDiff","fixer","removeTag","tagSourceOffset","reportJSDoc","line","number","addLines","currentTag","tagSourceIdx","splice","push","currentTg","tagCount","defaultAlways","overrideAlways","fixCount","_lines2","_lines","_description$match","lastDescriptionLine","getDescription","test","trailingLines","match","trailingDiff","setBlockDescription","info","seedTokens","descLines","map","desc","postDelimiter","trim","Array","from","iterateAllJsdocs","meta","docs","url","fixable","schema","enum","additionalProperties","properties","anyOf","patternProperties","module"],"sources":["../../src/rules/tagLines.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\n\nexport default iterateJsdoc(({\n context,\n jsdoc,\n utils,\n}) => {\n const [\n alwaysNever = 'never',\n {\n count = 1,\n endLines = 0,\n startLines = 0,\n applyToEndTag = true,\n tags = {},\n } = {},\n ] = context.options;\n\n // eslint-disable-next-line complexity -- Temporary\n jsdoc.tags.some((tg, tagIdx) => {\n let lastTag;\n\n /**\n * @type {null|import('../iterateJsdoc.js').Integer}\n */\n let lastEmpty = null;\n\n /**\n * @type {null|import('../iterateJsdoc.js').Integer}\n */\n let reportIndex = null;\n let emptyLinesCount = 0;\n for (const [\n idx,\n {\n tokens: {\n tag,\n name,\n type,\n description,\n end,\n },\n },\n ] of tg.source.entries()) {\n // May be text after a line break within a tag description\n if (description) {\n reportIndex = null;\n }\n\n if (lastTag && [\n 'any', 'always',\n ].includes(tags[lastTag.slice(1)]?.lines)) {\n continue;\n }\n\n const empty = !tag && !name && !type && !description;\n if (\n empty && !end &&\n (alwaysNever === 'never' ||\n lastTag && tags[lastTag.slice(1)]?.lines === 'never'\n )\n ) {\n reportIndex = idx;\n\n continue;\n }\n\n if (!end) {\n if (empty) {\n emptyLinesCount++;\n } else {\n emptyLinesCount = 0;\n }\n\n lastEmpty = empty ? idx : null;\n }\n\n lastTag = tag;\n }\n\n if (\n typeof endLines === 'number' &&\n lastEmpty !== null && tagIdx === jsdoc.tags.length - 1\n ) {\n const lineDiff = endLines - emptyLinesCount;\n\n if (lineDiff < 0) {\n const fixer = () => {\n utils.removeTag(tagIdx, {\n tagSourceOffset: /** @type {import('../iterateJsdoc.js').Integer} */ (\n lastEmpty\n ) + lineDiff + 1,\n });\n };\n\n utils.reportJSDoc(\n `Expected ${endLines} trailing lines`,\n {\n line: tg.source[lastEmpty].number + lineDiff + 1,\n },\n fixer,\n );\n } else if (lineDiff > 0) {\n const fixer = () => {\n utils.addLines(\n tagIdx,\n /** @type {import('../iterateJsdoc.js').Integer} */ (lastEmpty),\n endLines - emptyLinesCount,\n );\n };\n\n utils.reportJSDoc(\n `Expected ${endLines} trailing lines`,\n {\n line: tg.source[lastEmpty].number,\n },\n fixer,\n );\n }\n\n return true;\n }\n\n if (reportIndex !== null) {\n const fixer = () => {\n utils.removeTag(tagIdx, {\n tagSourceOffset: /** @type {import('../iterateJsdoc.js').Integer} */ (\n reportIndex\n ),\n });\n };\n\n utils.reportJSDoc(\n 'Expected no lines between tags',\n {\n line: tg.source[0].number + 1,\n },\n fixer,\n );\n\n return true;\n }\n\n return false;\n });\n\n (applyToEndTag ? jsdoc.tags : jsdoc.tags.slice(0, -1)).some((tg, tagIdx) => {\n /**\n * @type {{\n * idx: import('../iterateJsdoc.js').Integer,\n * number: import('../iterateJsdoc.js').Integer\n * }[]}\n */\n const lines = [];\n\n let currentTag;\n let tagSourceIdx = 0;\n for (const [\n idx,\n {\n number,\n tokens: {\n tag,\n name,\n type,\n description,\n end,\n },\n },\n ] of tg.source.entries()) {\n if (description) {\n lines.splice(0, lines.length);\n tagSourceIdx = idx;\n }\n\n if (tag) {\n currentTag = tag;\n }\n\n if (!tag && !name && !type && !description && !end) {\n lines.push({\n idx,\n number,\n });\n }\n }\n\n const currentTg = currentTag && tags[currentTag.slice(1)];\n const tagCount = currentTg?.count;\n\n const defaultAlways = alwaysNever === 'always' && currentTg?.lines !== 'never' &&\n currentTg?.lines !== 'any' && lines.length < count;\n\n let overrideAlways;\n let fixCount = count;\n if (!defaultAlways) {\n fixCount = typeof tagCount === 'number' ? tagCount : count;\n overrideAlways = currentTg?.lines === 'always' &&\n lines.length < fixCount;\n }\n\n if (defaultAlways || overrideAlways) {\n const fixer = () => {\n utils.addLines(tagIdx, lines[lines.length - 1]?.idx || tagSourceIdx + 1, fixCount - lines.length);\n };\n\n const line = lines[lines.length - 1]?.number || tg.source[tagSourceIdx].number;\n utils.reportJSDoc(\n `Expected ${fixCount} line${fixCount === 1 ? '' : 's'} between tags but found ${lines.length}`,\n {\n line,\n },\n fixer,\n );\n\n return true;\n }\n\n return false;\n });\n\n if (typeof startLines === 'number') {\n if (!jsdoc.tags.length) {\n return;\n }\n\n const {\n description,\n lastDescriptionLine,\n } = utils.getDescription();\n if (!(/\\S/u).test(description)) {\n return;\n }\n\n const trailingLines = description.match(/\\n+$/u)?.[0]?.length;\n const trailingDiff = (trailingLines ?? 0) - startLines;\n if (trailingDiff > 0) {\n utils.reportJSDoc(\n `Expected only ${startLines} line after block description`,\n {\n line: lastDescriptionLine - trailingDiff,\n },\n () => {\n utils.setBlockDescription((info, seedTokens, descLines) => {\n return descLines.slice(0, -trailingDiff).map((desc) => {\n return {\n number: 0,\n source: '',\n tokens: seedTokens({\n ...info,\n description: desc,\n postDelimiter: desc.trim() ? info.postDelimiter : '',\n }),\n };\n });\n });\n },\n );\n } else if (trailingDiff < 0) {\n utils.reportJSDoc(\n `Expected ${startLines} lines after block description`,\n {\n line: lastDescriptionLine,\n },\n () => {\n utils.setBlockDescription((info, seedTokens, descLines) => {\n return [\n ...descLines,\n ...Array.from({\n length: -trailingDiff,\n }, () => {\n return '';\n }),\n ].map((desc) => {\n return {\n number: 0,\n source: '',\n tokens: seedTokens({\n ...info,\n description: desc,\n postDelimiter: desc.trim() ? info.postDelimiter : '',\n }),\n };\n });\n });\n },\n );\n }\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Enforces lines (or no lines) between tags.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/tag-lines.md#repos-sticky-header',\n },\n fixable: 'code',\n schema: [\n {\n enum: [\n 'always', 'any', 'never',\n ],\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n applyToEndTag: {\n type: 'boolean',\n },\n count: {\n type: 'integer',\n },\n endLines: {\n anyOf: [\n {\n type: 'integer',\n },\n {\n type: 'null',\n },\n ],\n },\n startLines: {\n anyOf: [\n {\n type: 'integer',\n },\n {\n type: 'null',\n },\n ],\n },\n tags: {\n patternProperties: {\n '.*': {\n additionalProperties: false,\n properties: {\n count: {\n type: 'integer',\n },\n lines: {\n enum: [\n 'always', 'never', 'any',\n ],\n type: 'string',\n },\n },\n },\n },\n type: 'object',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":";;;;;;AAAA,IAAAA,aAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA8C,SAAAD,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,IAAAG,QAAA,GAAAC,OAAA,CAAAF,OAAA,GAE/B,IAAAG,qBAAY,EAAC,CAAC;EAC3BC,OAAO;EACPC,KAAK;EACLC;AACF,CAAC,KAAK;EACJ,MAAM,CACJC,WAAW,GAAG,OAAO,EACrB;IACEC,KAAK,GAAG,CAAC;IACTC,QAAQ,GAAG,CAAC;IACZC,UAAU,GAAG,CAAC;IACdC,aAAa,GAAG,IAAI;IACpBC,IAAI,GAAG,CAAC;EACV,CAAC,GAAG,CAAC,CAAC,CACP,GAAGR,OAAO,CAACS,OAAO;;EAEnB;EACAR,KAAK,CAACO,IAAI,CAACE,IAAI,CAAC,CAACC,EAAE,EAAEC,MAAM,KAAK;IAC9B,IAAIC,OAAO;;IAEX;AACJ;AACA;IACI,IAAIC,SAAS,GAAG,IAAI;;IAEpB;AACJ;AACA;IACI,IAAIC,WAAW,GAAG,IAAI;IACtB,IAAIC,eAAe,GAAG,CAAC;IACvB,KAAK,MAAM,CACTC,GAAG,EACH;MACEC,MAAM,EAAE;QACNC,GAAG;QACHC,IAAI;QACJC,IAAI;QACJC,WAAW;QACXC;MACF;IACF,CAAC,CACF,IAAIZ,EAAE,CAACa,MAAM,CAACC,OAAO,CAAC,CAAC,EAAE;MAAA,IAAAC,mBAAA,EAAAC,oBAAA;MACxB;MACA,IAAIL,WAAW,EAAE;QACfP,WAAW,GAAG,IAAI;MACpB;MAEA,IAAIF,OAAO,IAAI,CACb,KAAK,EAAE,QAAQ,CAChB,CAACe,QAAQ,EAAAF,mBAAA,GAAClB,IAAI,CAACK,OAAO,CAACgB,KAAK,CAAC,CAAC,CAAC,CAAC,cAAAH,mBAAA,uBAAtBA,mBAAA,CAAwBI,KAAK,CAAC,EAAE;QACzC;MACF;MAEA,MAAMC,KAAK,GAAG,CAACZ,GAAG,IAAI,CAACC,IAAI,IAAI,CAACC,IAAI,IAAI,CAACC,WAAW;MACpD,IACES,KAAK,IAAI,CAACR,GAAG,KACZpB,WAAW,KAAK,OAAO,IACtBU,OAAO,IAAI,EAAAc,oBAAA,GAAAnB,IAAI,CAACK,OAAO,CAACgB,KAAK,CAAC,CAAC,CAAC,CAAC,cAAAF,oBAAA,uBAAtBA,oBAAA,CAAwBG,KAAK,MAAK,OAAO,CACrD,EACD;QACAf,WAAW,GAAGE,GAAG;QAEjB;MACF;MAEA,IAAI,CAACM,GAAG,EAAE;QACR,IAAIQ,KAAK,EAAE;UACTf,eAAe,EAAE;QACnB,CAAC,MAAM;UACLA,eAAe,GAAG,CAAC;QACrB;QAEAF,SAAS,GAAGiB,KAAK,GAAGd,GAAG,GAAG,IAAI;MAChC;MAEAJ,OAAO,GAAGM,GAAG;IACf;IAEA,IACE,OAAOd,QAAQ,KAAK,QAAQ,IAC5BS,SAAS,KAAK,IAAI,IAAIF,MAAM,KAAKX,KAAK,CAACO,IAAI,CAACwB,MAAM,GAAG,CAAC,EACtD;MACA,MAAMC,QAAQ,GAAG5B,QAAQ,GAAGW,eAAe;MAE3C,IAAIiB,QAAQ,GAAG,CAAC,EAAE;QAChB,MAAMC,KAAK,GAAGA,CAAA,KAAM;UAClBhC,KAAK,CAACiC,SAAS,CAACvB,MAAM,EAAE;YACtBwB,eAAe,EAAE,mDACftB,SAAS,GACPmB,QAAQ,GAAG;UACjB,CAAC,CAAC;QACJ,CAAC;QAED/B,KAAK,CAACmC,WAAW,CACd,YAAWhC,QAAS,iBAAgB,EACrC;UACEiC,IAAI,EAAE3B,EAAE,CAACa,MAAM,CAACV,SAAS,CAAC,CAACyB,MAAM,GAAGN,QAAQ,GAAG;QACjD,CAAC,EACDC,KACF,CAAC;MACH,CAAC,MAAM,IAAID,QAAQ,GAAG,CAAC,EAAE;QACvB,MAAMC,KAAK,GAAGA,CAAA,KAAM;UAClBhC,KAAK,CAACsC,QAAQ,CACZ5B,MAAM,EACN,mDAAqDE,SAAS,EAC9DT,QAAQ,GAAGW,eACb,CAAC;QACH,CAAC;QAEDd,KAAK,CAACmC,WAAW,CACd,YAAWhC,QAAS,iBAAgB,EACrC;UACEiC,IAAI,EAAE3B,EAAE,CAACa,MAAM,CAACV,SAAS,CAAC,CAACyB;QAC7B,CAAC,EACDL,KACF,CAAC;MACH;MAEA,OAAO,IAAI;IACb;IAEA,IAAInB,WAAW,KAAK,IAAI,EAAE;MACxB,MAAMmB,KAAK,GAAGA,CAAA,KAAM;QAClBhC,KAAK,CAACiC,SAAS,CAACvB,MAAM,EAAE;UACtBwB,eAAe,IAAE;UACfrB,WAAW;QAEf,CAAC,CAAC;MACJ,CAAC;MAEDb,KAAK,CAACmC,WAAW,CACf,gCAAgC,EAChC;QACEC,IAAI,EAAE3B,EAAE,CAACa,MAAM,CAAC,CAAC,CAAC,CAACe,MAAM,GAAG;MAC9B,CAAC,EACDL,KACF,CAAC;MAED,OAAO,IAAI;IACb;IAEA,OAAO,KAAK;EACd,CAAC,CAAC;EAEF,CAAC3B,aAAa,GAAGN,KAAK,CAACO,IAAI,GAAGP,KAAK,CAACO,IAAI,CAACqB,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAEnB,IAAI,CAAC,CAACC,EAAE,EAAEC,MAAM,KAAK;IAC1E;AACJ;AACA;AACA;AACA;AACA;IACI,MAAMkB,KAAK,GAAG,EAAE;IAEhB,IAAIW,UAAU;IACd,IAAIC,YAAY,GAAG,CAAC;IACpB,KAAK,MAAM,CACTzB,GAAG,EACH;MACEsB,MAAM;MACNrB,MAAM,EAAE;QACNC,GAAG;QACHC,IAAI;QACJC,IAAI;QACJC,WAAW;QACXC;MACF;IACF,CAAC,CACF,IAAIZ,EAAE,CAACa,MAAM,CAACC,OAAO,CAAC,CAAC,EAAE;MACxB,IAAIH,WAAW,EAAE;QACfQ,KAAK,CAACa,MAAM,CAAC,CAAC,EAAEb,KAAK,CAACE,MAAM,CAAC;QAC7BU,YAAY,GAAGzB,GAAG;MACpB;MAEA,IAAIE,GAAG,EAAE;QACPsB,UAAU,GAAGtB,GAAG;MAClB;MAEA,IAAI,CAACA,GAAG,IAAI,CAACC,IAAI,IAAI,CAACC,IAAI,IAAI,CAACC,WAAW,IAAI,CAACC,GAAG,EAAE;QAClDO,KAAK,CAACc,IAAI,CAAC;UACT3B,GAAG;UACHsB;QACF,CAAC,CAAC;MACJ;IACF;IAEA,MAAMM,SAAS,GAAGJ,UAAU,IAAIjC,IAAI,CAACiC,UAAU,CAACZ,KAAK,CAAC,CAAC,CAAC,CAAC;IACzD,MAAMiB,QAAQ,GAAGD,SAAS,aAATA,SAAS,uBAATA,SAAS,CAAEzC,KAAK;IAEjC,MAAM2C,aAAa,GAAG5C,WAAW,KAAK,QAAQ,IAAI,CAAA0C,SAAS,aAATA,SAAS,uBAATA,SAAS,CAAEf,KAAK,MAAK,OAAO,IAC5E,CAAAe,SAAS,aAATA,SAAS,uBAATA,SAAS,CAAEf,KAAK,MAAK,KAAK,IAAIA,KAAK,CAACE,MAAM,GAAG5B,KAAK;IAEpD,IAAI4C,cAAc;IAClB,IAAIC,QAAQ,GAAG7C,KAAK;IACpB,IAAI,CAAC2C,aAAa,EAAE;MAClBE,QAAQ,GAAG,OAAOH,QAAQ,KAAK,QAAQ,GAAGA,QAAQ,GAAG1C,KAAK;MAC1D4C,cAAc,GAAG,CAAAH,SAAS,aAATA,SAAS,uBAATA,SAAS,CAAEf,KAAK,MAAK,QAAQ,IAC5CA,KAAK,CAACE,MAAM,GAAGiB,QAAQ;IAC3B;IAEA,IAAIF,aAAa,IAAIC,cAAc,EAAE;MAAA,IAAAE,OAAA;MACnC,MAAMhB,KAAK,GAAGA,CAAA,KAAM;QAAA,IAAAiB,MAAA;QAClBjD,KAAK,CAACsC,QAAQ,CAAC5B,MAAM,EAAE,EAAAuC,MAAA,GAAArB,KAAK,CAACA,KAAK,CAACE,MAAM,GAAG,CAAC,CAAC,cAAAmB,MAAA,uBAAvBA,MAAA,CAAyBlC,GAAG,KAAIyB,YAAY,GAAG,CAAC,EAAEO,QAAQ,GAAGnB,KAAK,CAACE,MAAM,CAAC;MACnG,CAAC;MAED,MAAMM,IAAI,GAAG,EAAAY,OAAA,GAAApB,KAAK,CAACA,KAAK,CAACE,MAAM,GAAG,CAAC,CAAC,cAAAkB,OAAA,uBAAvBA,OAAA,CAAyBX,MAAM,KAAI5B,EAAE,CAACa,MAAM,CAACkB,YAAY,CAAC,CAACH,MAAM;MAC9ErC,KAAK,CAACmC,WAAW,CACd,YAAWY,QAAS,QAAOA,QAAQ,KAAK,CAAC,GAAG,EAAE,GAAG,GAAI,2BAA0BnB,KAAK,CAACE,MAAO,EAAC,EAC9F;QACEM;MACF,CAAC,EACDJ,KACF,CAAC;MAED,OAAO,IAAI;IACb;IAEA,OAAO,KAAK;EACd,CAAC,CAAC;EAEF,IAAI,OAAO5B,UAAU,KAAK,QAAQ,EAAE;IAAA,IAAA8C,kBAAA;IAClC,IAAI,CAACnD,KAAK,CAACO,IAAI,CAACwB,MAAM,EAAE;MACtB;IACF;IAEA,MAAM;MACJV,WAAW;MACX+B;IACF,CAAC,GAAGnD,KAAK,CAACoD,cAAc,CAAC,CAAC;IAC1B,IAAI,CAAE,KAAK,CAAEC,IAAI,CAACjC,WAAW,CAAC,EAAE;MAC9B;IACF;IAEA,MAAMkC,aAAa,IAAAJ,kBAAA,GAAG9B,WAAW,CAACmC,KAAK,CAAC,OAAO,CAAC,cAAAL,kBAAA,gBAAAA,kBAAA,GAA1BA,kBAAA,CAA6B,CAAC,CAAC,cAAAA,kBAAA,uBAA/BA,kBAAA,CAAiCpB,MAAM;IAC7D,MAAM0B,YAAY,GAAG,CAACF,aAAa,IAAI,CAAC,IAAIlD,UAAU;IACtD,IAAIoD,YAAY,GAAG,CAAC,EAAE;MACpBxD,KAAK,CAACmC,WAAW,CACd,iBAAgB/B,UAAW,+BAA8B,EAC1D;QACEgC,IAAI,EAAEe,mBAAmB,GAAGK;MAC9B,CAAC,EACD,MAAM;QACJxD,KAAK,CAACyD,mBAAmB,CAAC,CAACC,IAAI,EAAEC,UAAU,EAAEC,SAAS,KAAK;UACzD,OAAOA,SAAS,CAACjC,KAAK,CAAC,CAAC,EAAE,CAAC6B,YAAY,CAAC,CAACK,GAAG,CAAEC,IAAI,IAAK;YACrD,OAAO;cACLzB,MAAM,EAAE,CAAC;cACTf,MAAM,EAAE,EAAE;cACVN,MAAM,EAAE2C,UAAU,CAAC;gBACjB,GAAGD,IAAI;gBACPtC,WAAW,EAAE0C,IAAI;gBACjBC,aAAa,EAAED,IAAI,CAACE,IAAI,CAAC,CAAC,GAAGN,IAAI,CAACK,aAAa,GAAG;cACpD,CAAC;YACH,CAAC;UACH,CAAC,CAAC;QACJ,CAAC,CAAC;MACJ,CACF,CAAC;IACH,CAAC,MAAM,IAAIP,YAAY,GAAG,CAAC,EAAE;MAC3BxD,KAAK,CAACmC,WAAW,CACd,YAAW/B,UAAW,gCAA+B,EACtD;QACEgC,IAAI,EAAEe;MACR,CAAC,EACD,MAAM;QACJnD,KAAK,CAACyD,mBAAmB,CAAC,CAACC,IAAI,EAAEC,UAAU,EAAEC,SAAS,KAAK;UACzD,OAAO,CACL,GAAGA,SAAS,EACZ,GAAGK,KAAK,CAACC,IAAI,CAAC;YACZpC,MAAM,EAAE,CAAC0B;UACX,CAAC,EAAE,MAAM;YACP,OAAO,EAAE;UACX,CAAC,CAAC,CACH,CAACK,GAAG,CAAEC,IAAI,IAAK;YACd,OAAO;cACLzB,MAAM,EAAE,CAAC;cACTf,MAAM,EAAE,EAAE;cACVN,MAAM,EAAE2C,UAAU,CAAC;gBACjB,GAAGD,IAAI;gBACPtC,WAAW,EAAE0C,IAAI;gBACjBC,aAAa,EAAED,IAAI,CAACE,IAAI,CAAC,CAAC,GAAGN,IAAI,CAACK,aAAa,GAAG;cACpD,CAAC;YACH,CAAC;UACH,CAAC,CAAC;QACJ,CAAC,CAAC;MACJ,CACF,CAAC;IACH;EACF;AACF,CAAC,EAAE;EACDI,gBAAgB,EAAE,IAAI;EACtBC,IAAI,EAAE;IACJC,IAAI,EAAE;MACJjD,WAAW,EAAE,4CAA4C;MACzDkD,GAAG,EAAE;IACP,CAAC;IACDC,OAAO,EAAE,MAAM;IACfC,MAAM,EAAE,CACN;MACEC,IAAI,EAAE,CACJ,QAAQ,EAAE,KAAK,EAAE,OAAO,CACzB;MACDtD,IAAI,EAAE;IACR,CAAC,EACD;MACEuD,oBAAoB,EAAE,KAAK;MAC3BC,UAAU,EAAE;QACVtE,aAAa,EAAE;UACbc,IAAI,EAAE;QACR,CAAC;QACDjB,KAAK,EAAE;UACLiB,IAAI,EAAE;QACR,CAAC;QACDhB,QAAQ,EAAE;UACRyE,KAAK,EAAE,CACL;YACEzD,IAAI,EAAE;UACR,CAAC,EACD;YACEA,IAAI,EAAE;UACR,CAAC;QAEL,CAAC;QACDf,UAAU,EAAE;UACVwE,KAAK,EAAE,CACL;YACEzD,IAAI,EAAE;UACR,CAAC,EACD;YACEA,IAAI,EAAE;UACR,CAAC;QAEL,CAAC;QACDb,IAAI,EAAE;UACJuE,iBAAiB,EAAE;YACjB,IAAI,EAAE;cACJH,oBAAoB,EAAE,KAAK;cAC3BC,UAAU,EAAE;gBACVzE,KAAK,EAAE;kBACLiB,IAAI,EAAE;gBACR,CAAC;gBACDS,KAAK,EAAE;kBACL6C,IAAI,EAAE,CACJ,QAAQ,EAAE,OAAO,EAAE,KAAK,CACzB;kBACDtD,IAAI,EAAE;gBACR;cACF;YACF;UACF,CAAC;UACDA,IAAI,EAAE;QACR;MACF,CAAC;MACDA,IAAI,EAAE;IACR,CAAC,CACF;IACDA,IAAI,EAAE;EACR;AACF,CAAC,CAAC;AAAA2D,MAAA,CAAAlF,OAAA,GAAAA,OAAA,CAAAF,OAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"textEscaping.js","names":["_iterateJsdoc","_interopRequireDefault","require","obj","__esModule","default","htmlRegex","markdownRegex","htmlReplacer","desc","replaceAll","RegExp","_","markdownReplacer","backticks","encapsed","bookend","repeat","length","_default","exports","iterateJsdoc","context","jsdoc","utils","escapeHTML","escapeMarkdown","options","report","loc","end","column","line","start","message","descriptions","getDescription","some","test","setDescriptionLines","reportJSDoc","tag","tags","getTagDescription","setTagDescription","source","number","iterateAllJsdocs","meta","docs","description","url","fixable","schema","additionalProperties","properties","type","module"],"sources":["../../src/rules/textEscaping.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\n\n// We could disallow raw gt, quot, and apos, but allow for parity; but we do\n// not allow hex or decimal character references\nconst htmlRegex = /(<|&(?!(?:amp|lt|gt|quot|apos);))(?=\\S)/u;\nconst markdownRegex = /(?<!\\\\)(`+)([^`]+)\\1(?!`)/u;\n\n/**\n * @param {string} desc\n * @returns {string}\n */\nconst htmlReplacer = (desc) => {\n return desc.replaceAll(new RegExp(htmlRegex, 'gu'), (_) => {\n if (_ === '<') {\n return '<';\n }\n\n return '&';\n });\n};\n\n/**\n * @param {string} desc\n * @returns {string}\n */\nconst markdownReplacer = (desc) => {\n return desc.replaceAll(new RegExp(markdownRegex, 'gu'), (_, backticks, encapsed) => {\n const bookend = '`'.repeat(backticks.length);\n return `\\\\${bookend}${encapsed}${bookend}`;\n });\n};\n\nexport default iterateJsdoc(({\n context,\n jsdoc,\n utils,\n}) => {\n const {\n escapeHTML,\n escapeMarkdown,\n } = context.options[0] || {};\n\n if (!escapeHTML && !escapeMarkdown) {\n context.report({\n loc: {\n end: {\n column: 1,\n line: 1,\n },\n start: {\n column: 1,\n line: 1,\n },\n },\n message: 'You must include either `escapeHTML` or `escapeMarkdown`',\n });\n return;\n }\n\n const {\n descriptions,\n } = utils.getDescription();\n\n if (escapeHTML) {\n if (descriptions.some((desc) => {\n return htmlRegex.test(desc);\n })) {\n const line = utils.setDescriptionLines(htmlRegex, htmlReplacer);\n utils.reportJSDoc('You have unescaped HTML characters < or &', {\n line,\n }, () => {}, true);\n return;\n }\n\n for (const tag of jsdoc.tags) {\n if (/** @type {string[]} */ (\n utils.getTagDescription(tag, true)\n ).some((desc) => {\n return htmlRegex.test(desc);\n })) {\n const line = utils.setTagDescription(tag, htmlRegex, htmlReplacer) +\n tag.source[0].number;\n utils.reportJSDoc('You have unescaped HTML characters < or & in a tag', {\n line,\n }, () => {}, true);\n }\n }\n\n return;\n }\n\n if (descriptions.some((desc) => {\n return markdownRegex.test(desc);\n })) {\n const line = utils.setDescriptionLines(markdownRegex, markdownReplacer);\n utils.reportJSDoc('You have unescaped Markdown backtick sequences', {\n line,\n }, () => {}, true);\n return;\n }\n\n for (const tag of jsdoc.tags) {\n if (/** @type {string[]} */ (\n utils.getTagDescription(tag, true)\n ).some((desc) => {\n return markdownRegex.test(desc);\n })) {\n const line = utils.setTagDescription(\n tag, markdownRegex, markdownReplacer,\n ) + tag.source[0].number;\n utils.reportJSDoc(\n 'You have unescaped Markdown backtick sequences in a tag',\n {\n line,\n },\n () => {},\n true,\n );\n }\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: '',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/text-escaping.md#repos-sticky-header',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n // Option properties here (or remove the object)\n escapeHTML: {\n type: 'boolean',\n },\n escapeMarkdown: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validTypes.js","names":["_iterateJsdoc","_interopRequireDefault","require","_jsdoccomment","obj","__esModule","default","inlineTags","Set","asExpression","suppressTypes","tryParsePathIgnoreError","path","tryParse","_default","exports","iterateJsdoc","jsdoc","report","utils","context","settings","allowEmptyNamepaths","options","mode","tag","tags","validNamepathParsing","namepath","tagName","handled","startsWith","endChar","slice","includes","startChar","charAt","validTypeParsing","type","parsedTypes","parse","traverse","node","_node$right","_node$right2","typ","right","meta","position","problems","length","msg","reduce","str","message","thisNamepath","getTagDescription","replace","trim","test","thatNamepath","name","value","undefined","has","otherModeMaps","filter","mde","map","getTagStructureForMode","tagMightHaveNamePosition","modeInfo","mightHaveTypePosition","tagMightHaveTypePosition","tagMustHaveNamePosition","mustHaveTypePosition","tagMustHaveTypePosition","tagMissingRequiredTypeOrNamepath","hasTypePosition","Boolean","hasNameOrNamepathPosition","tagMightHaveNamepath","parseClosureTemplateTag","inlineTag","text","namepathOrURL","iterateAllJsdocs","docs","description","url","schema","additionalProperties","properties","module"],"sources":["../../src/rules/validTypes.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\nimport {\n parse,\n traverse,\n tryParse,\n} from '@es-joy/jsdoccomment';\n\nconst inlineTags = new Set([\n 'link', 'linkcode', 'linkplain',\n 'tutorial',\n]);\n\nconst asExpression = /as\\s+/u;\n\nconst suppressTypes = new Set([\n // https://github.com/google/closure-compiler/wiki/@suppress-annotations\n // https://github.com/google/closure-compiler/blob/master/src/com/google/javascript/jscomp/parsing/ParserConfig.properties#L154\n 'accessControls',\n 'checkDebuggerStatement',\n 'checkPrototypalTypes',\n 'checkRegExp',\n 'checkTypes',\n 'checkVars',\n 'closureDepMethodUsageChecks',\n 'const',\n 'constantProperty',\n 'deprecated',\n 'duplicate',\n 'es5Strict',\n 'externsValidation',\n 'extraProvide',\n 'extraRequire',\n 'globalThis',\n 'invalidCasts',\n 'lateProvide',\n 'legacyGoogScopeRequire',\n 'lintChecks',\n 'messageConventions',\n 'misplacedTypeAnnotation',\n 'missingOverride',\n 'missingPolyfill',\n 'missingProperties',\n 'missingProvide',\n 'missingRequire',\n 'missingSourcesWarnings',\n 'moduleLoad',\n 'nonStandardJsDocs',\n 'partialAlias',\n 'polymer',\n 'reportUnknownTypes',\n 'strictMissingProperties',\n 'strictModuleDepCheck',\n 'strictPrimitiveOperators',\n 'suspiciousCode',\n\n // Not documented in enum\n 'switch',\n 'transitionalSuspiciousCodeWarnings',\n 'undefinedNames',\n 'undefinedVars',\n 'underscore',\n 'unknownDefines',\n 'untranspilableFeatures',\n 'unusedLocalVariables',\n 'unusedPrivateMembers',\n 'useOfGoogProvide',\n 'uselessCode',\n 'visibility',\n 'with',\n]);\n\n/**\n * @param {string} path\n * @returns {boolean}\n */\nconst tryParsePathIgnoreError = (path) => {\n try {\n tryParse(path);\n\n return true;\n } catch {\n // Keep the original error for including the whole type\n }\n\n return false;\n};\n\n// eslint-disable-next-line complexity\nexport default iterateJsdoc(({\n jsdoc,\n report,\n utils,\n context,\n settings,\n}) => {\n const {\n allowEmptyNamepaths = false,\n } = context.options[0] || {};\n const {\n mode,\n } = settings;\n\n for (const tag of jsdoc.tags) {\n /**\n * @param {string} namepath\n * @param {string} [tagName]\n * @returns {boolean}\n */\n const validNamepathParsing = function (namepath, tagName) {\n if (tryParsePathIgnoreError(namepath)) {\n return true;\n }\n\n let handled = false;\n\n if (tagName) {\n switch (tagName) {\n case 'requires':\n case 'module': {\n if (!namepath.startsWith('module:')) {\n handled = tryParsePathIgnoreError(`module:${namepath}`);\n }\n\n break;\n }\n\n case 'memberof': case 'memberof!': {\n const endChar = namepath.slice(-1);\n if ([\n '#', '.', '~',\n ].includes(endChar)) {\n handled = tryParsePathIgnoreError(namepath.slice(0, -1));\n }\n\n break;\n }\n\n case 'borrows': {\n const startChar = namepath.charAt(0);\n if ([\n '#', '.', '~',\n ].includes(startChar)) {\n handled = tryParsePathIgnoreError(namepath.slice(1));\n }\n }\n }\n }\n\n if (!handled) {\n report(`Syntax error in namepath: ${namepath}`, null, tag);\n\n return false;\n }\n\n return true;\n };\n\n /**\n * @param {string} type\n * @returns {boolean}\n */\n const validTypeParsing = function (type) {\n let parsedTypes;\n try {\n if (mode === 'permissive') {\n parsedTypes = tryParse(type);\n } else {\n parsedTypes = parse(type, mode);\n }\n } catch {\n report(`Syntax error in type: ${type}`, null, tag);\n\n return false;\n }\n\n if (mode === 'closure' || mode === 'typescript') {\n traverse(parsedTypes, (node) => {\n const {\n type: typ,\n } = node;\n\n if (\n (typ === 'JsdocTypeObjectField' || typ === 'JsdocTypeKeyValue') &&\n node.right?.type === 'JsdocTypeNullable' &&\n node.right?.meta?.position === 'suffix'\n ) {\n report(`Syntax error in type: ${node.right.type}`, null, tag);\n }\n });\n }\n\n return true;\n };\n\n if (tag.problems.length) {\n const msg = tag.problems.reduce((str, {\n message,\n }) => {\n return str + '; ' + message;\n }, '').slice(2);\n report(`Invalid name: ${msg}`, null, tag);\n continue;\n }\n\n if (tag.tag === 'borrows') {\n const thisNamepath = /** @type {string} */ (\n utils.getTagDescription(tag)\n ).replace(asExpression, '')\n .trim();\n\n if (!asExpression.test(/** @type {string} */ (\n utils.getTagDescription(tag)\n )) || !thisNamepath) {\n report(`@borrows must have an \"as\" expression. Found \"${utils.getTagDescription(tag)}\"`, null, tag);\n\n continue;\n }\n\n if (validNamepathParsing(thisNamepath, 'borrows')) {\n const thatNamepath = tag.name;\n\n validNamepathParsing(thatNamepath);\n }\n\n continue;\n }\n\n if (tag.tag === 'suppress' && mode === 'closure') {\n let parsedTypes;\n\n try {\n parsedTypes = tryParse(tag.type);\n } catch {\n // Ignore\n }\n\n if (parsedTypes) {\n traverse(parsedTypes, (node) => {\n let type;\n if ('value' in node && typeof node.value === 'string') {\n type = node.value;\n }\n\n if (type !== undefined && !suppressTypes.has(type)) {\n report(`Syntax error in suppress type: ${type}`, null, tag);\n }\n });\n }\n }\n\n const otherModeMaps = /** @type {import('../jsdocUtils.js').ParserMode[]} */ ([\n 'jsdoc', 'typescript', 'closure', 'permissive',\n ]).filter(\n (mde) => {\n return mde !== mode;\n },\n ).map((mde) => {\n return utils.getTagStructureForMode(mde);\n });\n\n const tagMightHaveNamePosition = utils.tagMightHaveNamePosition(tag.tag, otherModeMaps);\n if (tagMightHaveNamePosition !== true && tag.name) {\n const modeInfo = tagMightHaveNamePosition === false ? '' : ` in \"${mode}\" mode`;\n report(`@${tag.tag} should not have a name${modeInfo}.`, null, tag);\n\n continue;\n }\n\n const mightHaveTypePosition = utils.tagMightHaveTypePosition(tag.tag, otherModeMaps);\n if (mightHaveTypePosition !== true && tag.type) {\n const modeInfo = mightHaveTypePosition === false ? '' : ` in \"${mode}\" mode`;\n report(`@${tag.tag} should not have a bracketed type${modeInfo}.`, null, tag);\n\n continue;\n }\n\n // REQUIRED NAME\n const tagMustHaveNamePosition = utils.tagMustHaveNamePosition(tag.tag, otherModeMaps);\n\n // Don't handle `@param` here though it does require name as handled by\n // `require-param-name` (`@property` would similarly seem to require one,\n // but is handled by `require-property-name`)\n if (tagMustHaveNamePosition !== false && !tag.name && !allowEmptyNamepaths && ![\n 'param', 'arg', 'argument',\n 'property', 'prop',\n ].includes(tag.tag) &&\n (tag.tag !== 'see' || !utils.getTagDescription(tag).includes('{@link'))\n ) {\n const modeInfo = tagMustHaveNamePosition === true ? '' : ` in \"${mode}\" mode`;\n report(`Tag @${tag.tag} must have a name/namepath${modeInfo}.`, null, tag);\n\n continue;\n }\n\n // REQUIRED TYPE\n const mustHaveTypePosition = utils.tagMustHaveTypePosition(tag.tag, otherModeMaps);\n if (mustHaveTypePosition !== false && !tag.type) {\n const modeInfo = mustHaveTypePosition === true ? '' : ` in \"${mode}\" mode`;\n report(`Tag @${tag.tag} must have a type${modeInfo}.`, null, tag);\n\n continue;\n }\n\n // REQUIRED TYPE OR NAME/NAMEPATH\n const tagMissingRequiredTypeOrNamepath = utils.tagMissingRequiredTypeOrNamepath(tag, otherModeMaps);\n if (tagMissingRequiredTypeOrNamepath !== false && !allowEmptyNamepaths) {\n const modeInfo = tagMissingRequiredTypeOrNamepath === true ? '' : ` in \"${mode}\" mode`;\n report(`Tag @${tag.tag} must have either a type or namepath${modeInfo}.`, null, tag);\n\n continue;\n }\n\n // VALID TYPE\n const hasTypePosition = mightHaveTypePosition === true && Boolean(tag.type);\n if (hasTypePosition) {\n validTypeParsing(tag.type);\n }\n\n // VALID NAME/NAMEPATH\n const hasNameOrNamepathPosition = (\n tagMustHaveNamePosition !== false ||\n utils.tagMightHaveNamepath(tag.tag)\n ) && Boolean(tag.name);\n\n if (hasNameOrNamepathPosition) {\n if (mode !== 'jsdoc' && tag.tag === 'template') {\n for (const namepath of utils.parseClosureTemplateTag(tag)) {\n validNamepathParsing(namepath);\n }\n } else {\n validNamepathParsing(tag.name, tag.tag);\n }\n }\n\n for (const inlineTag of tag.inlineTags) {\n if (inlineTags.has(inlineTag.tag) && !inlineTag.text && !inlineTag.namepathOrURL) {\n report(`Inline tag \"${inlineTag.tag}\" missing content`, null, tag);\n }\n }\n }\n\n for (const inlineTag of jsdoc.inlineTags) {\n if (inlineTags.has(inlineTag.tag) && !inlineTag.text && !inlineTag.namepathOrURL) {\n report(`Inline tag \"${inlineTag.tag}\" missing content`);\n }\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Requires all types to be valid JSDoc or Closure compiler types without syntax errors.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/valid-types.md#repos-sticky-header',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n allowEmptyNamepaths: {\n default: false,\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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"}
|