eslint-plugin-jsdoc 57.0.2 → 57.0.4
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/index-cjs.cjs +13 -0
- package/dist/index-cjs.cjs.map +1 -1
- package/dist/index.cjs +13 -0
- package/dist/index.cjs.map +1 -1
- package/dist/rules/checkExamples.cjs +13 -0
- package/dist/rules/checkExamples.cjs.map +1 -1
- package/dist/rules/validTypes.cjs +3 -1
- package/dist/rules/validTypes.cjs.map +1 -1
- package/package.json +1 -1
- package/src/index-cjs.js +21 -1
- package/src/index.js +21 -1
- package/src/rules/checkExamples.js +22 -1
- package/src/rules/validTypes.js +4 -1
package/dist/index-cjs.cjs
CHANGED
|
@@ -443,6 +443,13 @@ index.configs.examples = /** @type {import('eslint').Linter.Config[]} */[{
|
|
|
443
443
|
files: ['**/*.md/*.js'],
|
|
444
444
|
name: 'jsdoc/examples/rules',
|
|
445
445
|
rules: {
|
|
446
|
+
// "always" newline rule at end unlikely in sample code
|
|
447
|
+
'@stylistic/eol-last': 0,
|
|
448
|
+
// Often wish to start `@example` code after newline; also may use
|
|
449
|
+
// empty lines for spacing
|
|
450
|
+
'@stylistic/no-multiple-empty-lines': 0,
|
|
451
|
+
// Can generally look nicer to pad a little even if code imposes more stringency
|
|
452
|
+
'@stylistic/padded-blocks': 0,
|
|
446
453
|
// "always" newline rule at end unlikely in sample code
|
|
447
454
|
'eol-last': 0,
|
|
448
455
|
// Wouldn't generally expect example paths to resolve relative to JS file
|
|
@@ -452,6 +459,9 @@ index.configs.examples = /** @type {import('eslint').Linter.Config[]} */[{
|
|
|
452
459
|
'jsdoc/require-file-overview': 0,
|
|
453
460
|
// The end of a multiline comment would end the comment the example is in.
|
|
454
461
|
'jsdoc/require-jsdoc': 0,
|
|
462
|
+
// See import/no-unresolved
|
|
463
|
+
'n/no-missing-import': 0,
|
|
464
|
+
'n/no-missing-require': 0,
|
|
455
465
|
// Unlikely to have inadvertent debugging within examples
|
|
456
466
|
'no-console': 0,
|
|
457
467
|
// Often wish to start `@example` code after newline; also may use
|
|
@@ -484,6 +494,9 @@ index.configs['default-expressions'] = /** @type {import('eslint').Linter.Config
|
|
|
484
494
|
name: 'jsdoc/default-expressions/rules',
|
|
485
495
|
rules: {
|
|
486
496
|
...index.configs.examples[1].rules,
|
|
497
|
+
'@stylistic/quotes': ['error', 'double'],
|
|
498
|
+
'@stylistic/semi': ['error', 'never'],
|
|
499
|
+
'@typescript-eslint/no-unused-expressions': 0,
|
|
487
500
|
'chai-friendly/no-unused-expressions': 0,
|
|
488
501
|
'no-empty-function': 0,
|
|
489
502
|
'no-new': 0,
|
package/dist/index-cjs.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-cjs.cjs","names":["_getJsdocProcessorPlugin","require","_iterateJsdoc","_interopRequireDefault","_checkAccess","_checkAlignment","_checkExamples","_checkIndentation","_checkLineAlignment","_checkParamNames","_checkPropertyNames","_checkSyntax","_checkTagNames","_checkTemplateNames","_checkTypes","_checkValues","_convertToJsdocComments","_emptyTags","_implementsOnClasses","_importsAsDependencies","_informativeDocs","_linesBeforeBlock","_matchDescription","_matchName","_multilineBlocks","_noBadBlocks","_noBlankBlockDescriptions","_noBlankBlocks","_noDefaults","_noMissingSyntax","_noMultiAsterisks","_noRestrictedSyntax","_noTypes","_noUndefinedTypes","_requireAsteriskPrefix","_requireDescription","_requireDescriptionCompleteSentence","_requireExample","_requireFileOverview","_requireHyphenBeforeParamDescription","_requireJsdoc","_requireParam","_requireParamDescription","_requireParamName","_requireParamType","_requireProperty","_requirePropertyDescription","_requirePropertyName","_requirePropertyType","_requireReturns","_requireReturnsCheck","_requireReturnsDescription","_requireReturnsType","_requireTemplate","_requireThrows","_requireYields","_requireYieldsCheck","_sortTags","_tagLines","_textEscaping","_typeFormatting","_validTypes","e","__esModule","default","buildForbidRuleDefinition","contextName","contexts","description","url","iterateJsdoc","info","comment","report","utils","contextStr","foundContext","findContext","message","context","contextSelected","meta","docs","fixable","schema","type","modifyContext","propertyDescriptors","Object","getOwnPropertyDescriptors","create","getPrototypeOf","options","value","nonGlobalSettings","exports","index","configs","rules","checkAccess","checkAlignment","checkExamples","checkIndentation","checkLineAlignment","checkParamNames","checkPropertyNames","checkSyntax","checkTagNames","checkTemplateNames","checkTypes","checkValues","convertToJsdocComments","emptyTags","implementsOnClasses","importsAsDependencies","informativeDocs","linesBeforeBlock","matchDescription","matchName","multilineBlocks","noBadBlocks","noBlankBlockDescriptions","noBlankBlocks","noDefaults","noMissingSyntax","noMultiAsterisks","noRestrictedSyntax","noTypes","noUndefinedTypes","requireAsteriskPrefix","requireDescription","requireDescriptionCompleteSentence","requireExample","requireFileOverview","requireHyphenBeforeParamDescription","requireJsdoc","requireParam","requireParamDescription","requireParamName","requireParamType","requireProperty","requirePropertyDescription","requirePropertyName","requirePropertyType","requireReturns","requireReturnsCheck","requireReturnsDescription","requireReturnsType","requireTemplate","requireThrows","requireYields","requireYieldsCheck","sortTags","tagLines","textEscaping","typeFormatting","validTypes","createRecommendedRuleset","warnOrError","flatName","name","plugins","jsdoc","createRecommendedTypeScriptRuleset","ruleset","typed","createRecommendedTypeScriptFlavorRuleset","createStandaloneRulesetFactory","ruleNames","fromEntries","map","ruleName","slice","contentsRules","escapeHTML","createContentsTypescriptRuleset","createContentsTypescriptFlavorRuleset","logicalRules","createLogicalTypescriptRuleset","createLogicalTypescriptFlavorRuleset","requirementsRules","createRequirementsTypeScriptRuleset","createRequirementsTypeScriptFlavorRuleset","stylisticRules","createStylisticTypeScriptRuleset","createStylisticTypeScriptFlavorRuleset","Error","recommended","examples","files","getJsdocProcessorPlugin","processor","checkDefaults","checkParams","checkProperties","quotes","semi","strict","config","_default"],"sources":["../src/index-cjs.js"],"sourcesContent":["import {\n getJsdocProcessorPlugin,\n} from './getJsdocProcessorPlugin.js';\nimport iterateJsdoc from './iterateJsdoc.js';\nimport checkAccess from './rules/checkAccess.js';\nimport checkAlignment from './rules/checkAlignment.js';\nimport checkExamples from './rules/checkExamples.js';\nimport checkIndentation from './rules/checkIndentation.js';\nimport checkLineAlignment from './rules/checkLineAlignment.js';\nimport checkParamNames from './rules/checkParamNames.js';\nimport checkPropertyNames from './rules/checkPropertyNames.js';\nimport checkSyntax from './rules/checkSyntax.js';\nimport checkTagNames from './rules/checkTagNames.js';\nimport checkTemplateNames from './rules/checkTemplateNames.js';\nimport checkTypes from './rules/checkTypes.js';\nimport checkValues from './rules/checkValues.js';\nimport convertToJsdocComments from './rules/convertToJsdocComments.js';\nimport emptyTags from './rules/emptyTags.js';\nimport implementsOnClasses from './rules/implementsOnClasses.js';\nimport importsAsDependencies from './rules/importsAsDependencies.js';\nimport informativeDocs from './rules/informativeDocs.js';\nimport linesBeforeBlock from './rules/linesBeforeBlock.js';\nimport matchDescription from './rules/matchDescription.js';\nimport matchName from './rules/matchName.js';\nimport multilineBlocks from './rules/multilineBlocks.js';\nimport noBadBlocks from './rules/noBadBlocks.js';\nimport noBlankBlockDescriptions from './rules/noBlankBlockDescriptions.js';\nimport noBlankBlocks from './rules/noBlankBlocks.js';\nimport noDefaults from './rules/noDefaults.js';\nimport noMissingSyntax from './rules/noMissingSyntax.js';\nimport noMultiAsterisks from './rules/noMultiAsterisks.js';\nimport noRestrictedSyntax from './rules/noRestrictedSyntax.js';\nimport noTypes from './rules/noTypes.js';\nimport noUndefinedTypes from './rules/noUndefinedTypes.js';\nimport requireAsteriskPrefix from './rules/requireAsteriskPrefix.js';\nimport requireDescription from './rules/requireDescription.js';\nimport requireDescriptionCompleteSentence from './rules/requireDescriptionCompleteSentence.js';\nimport requireExample from './rules/requireExample.js';\nimport requireFileOverview from './rules/requireFileOverview.js';\nimport requireHyphenBeforeParamDescription from './rules/requireHyphenBeforeParamDescription.js';\nimport requireJsdoc from './rules/requireJsdoc.js';\nimport requireParam from './rules/requireParam.js';\nimport requireParamDescription from './rules/requireParamDescription.js';\nimport requireParamName from './rules/requireParamName.js';\nimport requireParamType from './rules/requireParamType.js';\nimport requireProperty from './rules/requireProperty.js';\nimport requirePropertyDescription from './rules/requirePropertyDescription.js';\nimport requirePropertyName from './rules/requirePropertyName.js';\nimport requirePropertyType from './rules/requirePropertyType.js';\nimport requireReturns from './rules/requireReturns.js';\nimport requireReturnsCheck from './rules/requireReturnsCheck.js';\nimport requireReturnsDescription from './rules/requireReturnsDescription.js';\nimport requireReturnsType from './rules/requireReturnsType.js';\nimport requireTemplate from './rules/requireTemplate.js';\nimport requireThrows from './rules/requireThrows.js';\nimport requireYields from './rules/requireYields.js';\nimport requireYieldsCheck from './rules/requireYieldsCheck.js';\nimport sortTags from './rules/sortTags.js';\nimport tagLines from './rules/tagLines.js';\nimport textEscaping from './rules/textEscaping.js';\nimport typeFormatting from './rules/typeFormatting.js';\nimport validTypes from './rules/validTypes.js';\n\n/**\n * @param {{\n * contexts: (string|{\n * comment: string,\n * context: string,\n * message: string\n * })[],\n * description?: string,\n * contextName?: string\n * url?: string,\n * }} cfg\n * @returns {import('@eslint/core').RuleDefinition<\n * import('@eslint/core').RuleDefinitionTypeOptions\n * >}\n */\nexport const buildForbidRuleDefinition = ({\n contextName,\n contexts,\n description,\n url,\n}) => {\n return iterateJsdoc(({\n // context,\n info: {\n comment,\n },\n report,\n utils,\n }) => {\n const {\n contextStr,\n foundContext,\n } = utils.findContext(contexts, comment);\n\n // We are not on the *particular* matching context/comment, so don't assume\n // we need reporting\n if (!foundContext) {\n return;\n }\n\n const message = /** @type {import('./iterateJsdoc.js').ContextObject} */ (\n foundContext\n )?.message ??\n 'Syntax is restricted: {{context}}' +\n (comment ? ' with {{comment}}' : '');\n\n report(message, null, null, comment ? {\n comment,\n context: contextStr,\n } : {\n context: contextStr,\n });\n }, {\n contextSelected: true,\n meta: {\n docs: {\n description: description ?? contextName ?? 'Reports when certain comment structures are present.',\n url: url ?? 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/advanced.md#user-content-advanced-creating-your-own-rules',\n },\n fixable: 'code',\n schema: [],\n type: 'suggestion',\n },\n modifyContext: (context) => {\n // Reproduce context object with our own `contexts`\n const propertyDescriptors = Object.getOwnPropertyDescriptors(context);\n return Object.create(\n Object.getPrototypeOf(context),\n {\n ...propertyDescriptors,\n options: {\n ...propertyDescriptors.options,\n value: [\n {\n contexts,\n },\n ],\n },\n },\n );\n },\n nonGlobalSettings: true,\n });\n};\n\n/* eslint-disable jsdoc/valid-types -- Bug */\n/**\n * @typedef {\"recommended\" | \"stylistic\" | \"contents\" | \"logical\" | \"requirements\"} ConfigGroups\n * @typedef {\"\" | \"-typescript\" | \"-typescript-flavor\"} ConfigVariants\n * @typedef {\"\" | \"-error\"} ErrorLevelVariants\n * @type {import('eslint').ESLint.Plugin & {\n * configs: Record<`flat/${ConfigGroups}${ConfigVariants}${ErrorLevelVariants}`,\n * import('eslint').Linter.Config>\n * }}\n */\nconst index = {};\n/* eslint-enable jsdoc/valid-types -- Bug */\nindex.configs = {};\nindex.rules = {\n 'check-access': checkAccess,\n 'check-alignment': checkAlignment,\n 'check-examples': checkExamples,\n 'check-indentation': checkIndentation,\n 'check-line-alignment': checkLineAlignment,\n 'check-param-names': checkParamNames,\n 'check-property-names': checkPropertyNames,\n 'check-syntax': checkSyntax,\n 'check-tag-names': checkTagNames,\n 'check-template-names': checkTemplateNames,\n 'check-types': checkTypes,\n 'check-values': checkValues,\n 'convert-to-jsdoc-comments': convertToJsdocComments,\n 'empty-tags': emptyTags,\n 'implements-on-classes': implementsOnClasses,\n 'imports-as-dependencies': importsAsDependencies,\n 'informative-docs': informativeDocs,\n 'lines-before-block': linesBeforeBlock,\n 'match-description': matchDescription,\n 'match-name': matchName,\n 'multiline-blocks': multilineBlocks,\n 'no-bad-blocks': noBadBlocks,\n 'no-blank-block-descriptions': noBlankBlockDescriptions,\n 'no-blank-blocks': noBlankBlocks,\n 'no-defaults': noDefaults,\n 'no-missing-syntax': noMissingSyntax,\n 'no-multi-asterisks': noMultiAsterisks,\n 'no-restricted-syntax': noRestrictedSyntax,\n 'no-types': noTypes,\n 'no-undefined-types': noUndefinedTypes,\n 'require-asterisk-prefix': requireAsteriskPrefix,\n 'require-description': requireDescription,\n 'require-description-complete-sentence': requireDescriptionCompleteSentence,\n 'require-example': requireExample,\n 'require-file-overview': requireFileOverview,\n 'require-hyphen-before-param-description': requireHyphenBeforeParamDescription,\n 'require-jsdoc': requireJsdoc,\n 'require-next-type': buildForbidRuleDefinition({\n contexts: [\n {\n comment: 'JsdocBlock:has(JsdocTag[tag=next]:not([parsedType.type]))',\n context: 'any',\n message: '@next should have a type',\n },\n ],\n description: 'Requires a type for @next tags',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-next-type.md#repos-sticky-header',\n }),\n 'require-param': requireParam,\n 'require-param-description': requireParamDescription,\n 'require-param-name': requireParamName,\n 'require-param-type': requireParamType,\n 'require-property': requireProperty,\n 'require-property-description': requirePropertyDescription,\n 'require-property-name': requirePropertyName,\n 'require-property-type': requirePropertyType,\n 'require-returns': requireReturns,\n 'require-returns-check': requireReturnsCheck,\n 'require-returns-description': requireReturnsDescription,\n 'require-returns-type': requireReturnsType,\n 'require-template': requireTemplate,\n 'require-throws': requireThrows,\n 'require-throws-type': buildForbidRuleDefinition({\n contexts: [\n {\n comment: 'JsdocBlock:has(JsdocTag[tag=throws]:not([parsedType.type]))',\n context: 'any',\n message: '@throws should have a type',\n },\n ],\n description: 'Requires a type for @throws tags',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-throws-type.md#repos-sticky-header',\n }),\n 'require-yields': requireYields,\n 'require-yields-check': requireYieldsCheck,\n 'require-yields-type': buildForbidRuleDefinition({\n contexts: [\n {\n comment: 'JsdocBlock:has(JsdocTag[tag=yields]:not([parsedType.type]))',\n context: 'any',\n message: '@yields should have a type',\n },\n ],\n description: 'Requires a type for @yields tags',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-yields-type.md#repos-sticky-header',\n }),\n 'sort-tags': sortTags,\n 'tag-lines': tagLines,\n 'text-escaping': textEscaping,\n 'type-formatting': typeFormatting,\n 'valid-types': validTypes,\n};\n\n/**\n * @param {\"warn\"|\"error\"} warnOrError\n * @param {string} [flatName]\n * @returns {import('eslint').Linter.Config}\n */\nconst createRecommendedRuleset = (warnOrError, flatName) => {\n return {\n ...(flatName ? {\n name: 'jsdoc/' + flatName,\n } : {}),\n // @ts-expect-error ESLint 8 plugins\n plugins:\n flatName ? {\n jsdoc: index,\n } : [\n 'jsdoc',\n ],\n rules: {\n 'jsdoc/check-access': warnOrError,\n 'jsdoc/check-alignment': warnOrError,\n 'jsdoc/check-examples': 'off',\n 'jsdoc/check-indentation': 'off',\n 'jsdoc/check-line-alignment': 'off',\n 'jsdoc/check-param-names': warnOrError,\n 'jsdoc/check-property-names': warnOrError,\n 'jsdoc/check-syntax': 'off',\n 'jsdoc/check-tag-names': warnOrError,\n 'jsdoc/check-template-names': 'off',\n 'jsdoc/check-types': warnOrError,\n 'jsdoc/check-values': warnOrError,\n 'jsdoc/convert-to-jsdoc-comments': 'off',\n 'jsdoc/empty-tags': warnOrError,\n 'jsdoc/implements-on-classes': warnOrError,\n 'jsdoc/imports-as-dependencies': 'off',\n 'jsdoc/informative-docs': 'off',\n 'jsdoc/lines-before-block': 'off',\n 'jsdoc/match-description': 'off',\n 'jsdoc/match-name': 'off',\n 'jsdoc/multiline-blocks': warnOrError,\n 'jsdoc/no-bad-blocks': 'off',\n 'jsdoc/no-blank-block-descriptions': 'off',\n 'jsdoc/no-blank-blocks': 'off',\n 'jsdoc/no-defaults': warnOrError,\n 'jsdoc/no-missing-syntax': 'off',\n 'jsdoc/no-multi-asterisks': warnOrError,\n 'jsdoc/no-restricted-syntax': 'off',\n 'jsdoc/no-types': 'off',\n 'jsdoc/no-undefined-types': warnOrError,\n 'jsdoc/require-asterisk-prefix': 'off',\n 'jsdoc/require-description': 'off',\n 'jsdoc/require-description-complete-sentence': 'off',\n 'jsdoc/require-example': 'off',\n 'jsdoc/require-file-overview': 'off',\n 'jsdoc/require-hyphen-before-param-description': 'off',\n 'jsdoc/require-jsdoc': warnOrError,\n 'jsdoc/require-next-type': warnOrError,\n 'jsdoc/require-param': warnOrError,\n 'jsdoc/require-param-description': warnOrError,\n 'jsdoc/require-param-name': warnOrError,\n 'jsdoc/require-param-type': warnOrError,\n 'jsdoc/require-property': warnOrError,\n 'jsdoc/require-property-description': warnOrError,\n 'jsdoc/require-property-name': warnOrError,\n 'jsdoc/require-property-type': warnOrError,\n 'jsdoc/require-returns': warnOrError,\n 'jsdoc/require-returns-check': warnOrError,\n 'jsdoc/require-returns-description': warnOrError,\n 'jsdoc/require-returns-type': warnOrError,\n 'jsdoc/require-template': 'off',\n 'jsdoc/require-throws': 'off',\n 'jsdoc/require-throws-type': warnOrError,\n 'jsdoc/require-yields': warnOrError,\n 'jsdoc/require-yields-check': warnOrError,\n 'jsdoc/require-yields-type': warnOrError,\n 'jsdoc/sort-tags': 'off',\n 'jsdoc/tag-lines': warnOrError,\n 'jsdoc/text-escaping': 'off',\n 'jsdoc/type-formatting': 'off',\n 'jsdoc/valid-types': warnOrError,\n },\n };\n};\n\n/**\n * @param {\"warn\"|\"error\"} warnOrError\n * @param {string} [flatName]\n * @returns {import('eslint').Linter.Config}\n */\nconst createRecommendedTypeScriptRuleset = (warnOrError, flatName) => {\n const ruleset = createRecommendedRuleset(warnOrError, flatName);\n\n return {\n ...ruleset,\n rules: {\n ...ruleset.rules,\n /* eslint-disable @stylistic/indent -- Extra indent to avoid use by auto-rule-editing */\n 'jsdoc/check-tag-names': [\n warnOrError, {\n typed: true,\n },\n ],\n 'jsdoc/no-types': warnOrError,\n 'jsdoc/no-undefined-types': 'off',\n 'jsdoc/require-param-type': 'off',\n 'jsdoc/require-property-type': 'off',\n 'jsdoc/require-returns-type': 'off',\n /* eslint-enable @stylistic/indent */\n },\n };\n};\n\n/**\n * @param {\"warn\"|\"error\"} warnOrError\n * @param {string} [flatName]\n * @returns {import('eslint').Linter.Config}\n */\nconst createRecommendedTypeScriptFlavorRuleset = (warnOrError, flatName) => {\n const ruleset = createRecommendedRuleset(warnOrError, flatName);\n\n return {\n ...ruleset,\n rules: {\n ...ruleset.rules,\n /* eslint-disable @stylistic/indent -- Extra indent to avoid use by auto-rule-editing */\n 'jsdoc/no-undefined-types': 'off',\n /* eslint-enable @stylistic/indent */\n },\n };\n};\n\n/**\n * @param {(string | unknown[])[]} ruleNames\n */\nconst createStandaloneRulesetFactory = (ruleNames) => {\n /**\n * @param {\"warn\"|\"error\"} warnOrError\n * @param {string} [flatName]\n * @returns {import('eslint').Linter.Config}\n */\n return (warnOrError, flatName) => {\n return {\n name: 'jsdoc/' + flatName,\n plugins: {\n jsdoc: index,\n },\n rules: Object.fromEntries(\n ruleNames.map(\n (ruleName) => {\n return (typeof ruleName === 'string' ?\n [\n ruleName, warnOrError,\n ] :\n [\n ruleName[0], [\n warnOrError, ...ruleName.slice(1),\n ],\n ]);\n },\n ),\n ),\n };\n };\n};\n\nconst contentsRules = [\n 'jsdoc/informative-docs',\n 'jsdoc/match-description',\n 'jsdoc/no-blank-block-descriptions',\n 'jsdoc/no-blank-blocks',\n [\n 'jsdoc/text-escaping', {\n escapeHTML: true,\n },\n ],\n];\n\nconst createContentsTypescriptRuleset = createStandaloneRulesetFactory(contentsRules);\n\nconst createContentsTypescriptFlavorRuleset = createStandaloneRulesetFactory(contentsRules);\n\nconst logicalRules = [\n 'jsdoc/check-access',\n 'jsdoc/check-param-names',\n 'jsdoc/check-property-names',\n 'jsdoc/check-syntax',\n 'jsdoc/check-tag-names',\n 'jsdoc/check-template-names',\n 'jsdoc/check-types',\n 'jsdoc/check-values',\n 'jsdoc/empty-tags',\n 'jsdoc/implements-on-classes',\n 'jsdoc/require-returns-check',\n 'jsdoc/require-yields-check',\n 'jsdoc/no-bad-blocks',\n 'jsdoc/no-defaults',\n 'jsdoc/no-types',\n 'jsdoc/no-undefined-types',\n 'jsdoc/valid-types',\n];\n\nconst createLogicalTypescriptRuleset = createStandaloneRulesetFactory(logicalRules);\n\nconst createLogicalTypescriptFlavorRuleset = createStandaloneRulesetFactory(logicalRules);\n\nconst requirementsRules = [\n 'jsdoc/require-example',\n 'jsdoc/require-jsdoc',\n 'jsdoc/require-next-type',\n 'jsdoc/require-param',\n 'jsdoc/require-param-description',\n 'jsdoc/require-param-name',\n 'jsdoc/require-property',\n 'jsdoc/require-property-description',\n 'jsdoc/require-property-name',\n 'jsdoc/require-returns',\n 'jsdoc/require-returns-description',\n 'jsdoc/require-throws-type',\n 'jsdoc/require-yields',\n 'jsdoc/require-yields-type',\n];\n\nconst createRequirementsTypeScriptRuleset = createStandaloneRulesetFactory(requirementsRules);\n\nconst createRequirementsTypeScriptFlavorRuleset = createStandaloneRulesetFactory([\n ...requirementsRules,\n 'jsdoc/require-param-type',\n 'jsdoc/require-property-type',\n 'jsdoc/require-returns-type',\n 'jsdoc/require-template',\n]);\n\nconst stylisticRules = [\n 'jsdoc/check-alignment',\n 'jsdoc/check-line-alignment',\n 'jsdoc/lines-before-block',\n 'jsdoc/multiline-blocks',\n 'jsdoc/no-multi-asterisks',\n 'jsdoc/require-asterisk-prefix',\n [\n 'jsdoc/require-hyphen-before-param-description', 'never',\n ],\n 'jsdoc/tag-lines',\n];\n\nconst createStylisticTypeScriptRuleset = createStandaloneRulesetFactory(stylisticRules);\n\nconst createStylisticTypeScriptFlavorRuleset = createStandaloneRulesetFactory(stylisticRules);\n\n/* c8 ignore next 3 -- TS */\nif (!index.configs) {\n throw new Error('TypeScript guard');\n}\n\nindex.configs.recommended = createRecommendedRuleset('warn');\nindex.configs['recommended-error'] = createRecommendedRuleset('error');\nindex.configs['recommended-typescript'] = createRecommendedTypeScriptRuleset('warn');\nindex.configs['recommended-typescript-error'] = createRecommendedTypeScriptRuleset('error');\nindex.configs['recommended-typescript-flavor'] = createRecommendedTypeScriptFlavorRuleset('warn');\nindex.configs['recommended-typescript-flavor-error'] = createRecommendedTypeScriptFlavorRuleset('error');\n\nindex.configs['flat/recommended'] = createRecommendedRuleset('warn', 'flat/recommended');\nindex.configs['flat/recommended-error'] = createRecommendedRuleset('error', 'flat/recommended-error');\nindex.configs['flat/recommended-typescript'] = createRecommendedTypeScriptRuleset('warn', 'flat/recommended-typescript');\nindex.configs['flat/recommended-typescript-error'] = createRecommendedTypeScriptRuleset('error', 'flat/recommended-typescript-error');\nindex.configs['flat/recommended-typescript-flavor'] = createRecommendedTypeScriptFlavorRuleset('warn', 'flat/recommended-typescript-flavor');\nindex.configs['flat/recommended-typescript-flavor-error'] = createRecommendedTypeScriptFlavorRuleset('error', 'flat/recommended-typescript-flavor-error');\n\nindex.configs['flat/contents-typescript'] = createContentsTypescriptRuleset('warn', 'flat/contents-typescript');\nindex.configs['flat/contents-typescript-error'] = createContentsTypescriptRuleset('error', 'flat/contents-typescript-error');\nindex.configs['flat/contents-typescript-flavor'] = createContentsTypescriptFlavorRuleset('warn', 'flat/contents-typescript-flavor');\nindex.configs['flat/contents-typescript-flavor-error'] = createContentsTypescriptFlavorRuleset('error', 'flat/contents-typescript-error-flavor');\nindex.configs['flat/logical-typescript'] = createLogicalTypescriptRuleset('warn', 'flat/logical-typescript');\nindex.configs['flat/logical-typescript-error'] = createLogicalTypescriptRuleset('error', 'flat/logical-typescript-error');\nindex.configs['flat/logical-typescript-flavor'] = createLogicalTypescriptFlavorRuleset('warn', 'flat/logical-typescript-flavor');\nindex.configs['flat/logical-typescript-flavor-error'] = createLogicalTypescriptFlavorRuleset('error', 'flat/logical-typescript-error-flavor');\nindex.configs['flat/requirements-typescript'] = createRequirementsTypeScriptRuleset('warn', 'flat/requirements-typescript');\nindex.configs['flat/requirements-typescript-error'] = createRequirementsTypeScriptRuleset('error', 'flat/requirements-typescript-error');\nindex.configs['flat/requirements-typescript-flavor'] = createRequirementsTypeScriptFlavorRuleset('warn', 'flat/requirements-typescript-flavor');\nindex.configs['flat/requirements-typescript-flavor-error'] = createRequirementsTypeScriptFlavorRuleset('error', 'flat/requirements-typescript-error-flavor');\nindex.configs['flat/stylistic-typescript'] = createStylisticTypeScriptRuleset('warn', 'flat/stylistic-typescript');\nindex.configs['flat/stylistic-typescript-error'] = createStylisticTypeScriptRuleset('error', 'flat/stylistic-typescript-error');\nindex.configs['flat/stylistic-typescript-flavor'] = createStylisticTypeScriptFlavorRuleset('warn', 'flat/stylistic-typescript-flavor');\nindex.configs['flat/stylistic-typescript-flavor-error'] = createStylisticTypeScriptFlavorRuleset('error', 'flat/stylistic-typescript-error-flavor');\n\nindex.configs.examples = /** @type {import('eslint').Linter.Config[]} */ ([\n {\n files: [\n '**/*.js',\n ],\n name: 'jsdoc/examples/processor',\n plugins: {\n examples: getJsdocProcessorPlugin(),\n },\n processor: 'examples/examples',\n },\n {\n files: [\n '**/*.md/*.js',\n ],\n name: 'jsdoc/examples/rules',\n rules: {\n // \"always\" newline rule at end unlikely in sample code\n 'eol-last': 0,\n\n // Wouldn't generally expect example paths to resolve relative to JS file\n 'import/no-unresolved': 0,\n\n // Snippets likely too short to always include import/export info\n 'import/unambiguous': 0,\n\n 'jsdoc/require-file-overview': 0,\n\n // The end of a multiline comment would end the comment the example is in.\n 'jsdoc/require-jsdoc': 0,\n\n // Unlikely to have inadvertent debugging within examples\n 'no-console': 0,\n\n // Often wish to start `@example` code after newline; also may use\n // empty lines for spacing\n 'no-multiple-empty-lines': 0,\n\n // Many variables in examples will be `undefined`\n 'no-undef': 0,\n\n // Common to define variables for clarity without always using them\n 'no-unused-vars': 0,\n\n // See import/no-unresolved\n 'node/no-missing-import': 0,\n 'node/no-missing-require': 0,\n\n // Can generally look nicer to pad a little even if code imposes more stringency\n 'padded-blocks': 0,\n },\n },\n]);\n\nindex.configs['default-expressions'] = /** @type {import('eslint').Linter.Config[]} */ ([\n {\n files: [\n '**/*.js',\n ],\n name: 'jsdoc/default-expressions/processor',\n plugins: {\n examples: getJsdocProcessorPlugin({\n checkDefaults: true,\n checkParams: true,\n checkProperties: true,\n }),\n },\n processor: 'examples/examples',\n },\n {\n files: [\n '**/*.jsdoc-defaults', '**/*.jsdoc-params', '**/*.jsdoc-properties',\n ],\n name: 'jsdoc/default-expressions/rules',\n rules: {\n ...index.configs.examples[1].rules,\n 'chai-friendly/no-unused-expressions': 0,\n 'no-empty-function': 0,\n 'no-new': 0,\n 'no-unused-expressions': 0,\n quotes: [\n 'error', 'double',\n ],\n semi: [\n 'error', 'never',\n ],\n strict: 0,\n },\n },\n]);\n\nindex.configs['examples-and-default-expressions'] = /** @type {import('eslint').Linter.Config[]} */ ([\n {\n name: 'jsdoc/examples-and-default-expressions',\n plugins: {\n examples: getJsdocProcessorPlugin({\n checkDefaults: true,\n checkParams: true,\n checkProperties: true,\n }),\n },\n },\n ...index.configs.examples.map((config) => {\n return {\n ...config,\n plugins: {},\n };\n }),\n ...index.configs['default-expressions'].map((config) => {\n return {\n ...config,\n plugins: {},\n };\n }),\n]);\n\nexport default index;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index-cjs.cjs","names":["_getJsdocProcessorPlugin","require","_iterateJsdoc","_interopRequireDefault","_checkAccess","_checkAlignment","_checkExamples","_checkIndentation","_checkLineAlignment","_checkParamNames","_checkPropertyNames","_checkSyntax","_checkTagNames","_checkTemplateNames","_checkTypes","_checkValues","_convertToJsdocComments","_emptyTags","_implementsOnClasses","_importsAsDependencies","_informativeDocs","_linesBeforeBlock","_matchDescription","_matchName","_multilineBlocks","_noBadBlocks","_noBlankBlockDescriptions","_noBlankBlocks","_noDefaults","_noMissingSyntax","_noMultiAsterisks","_noRestrictedSyntax","_noTypes","_noUndefinedTypes","_requireAsteriskPrefix","_requireDescription","_requireDescriptionCompleteSentence","_requireExample","_requireFileOverview","_requireHyphenBeforeParamDescription","_requireJsdoc","_requireParam","_requireParamDescription","_requireParamName","_requireParamType","_requireProperty","_requirePropertyDescription","_requirePropertyName","_requirePropertyType","_requireReturns","_requireReturnsCheck","_requireReturnsDescription","_requireReturnsType","_requireTemplate","_requireThrows","_requireYields","_requireYieldsCheck","_sortTags","_tagLines","_textEscaping","_typeFormatting","_validTypes","e","__esModule","default","buildForbidRuleDefinition","contextName","contexts","description","url","iterateJsdoc","info","comment","report","utils","contextStr","foundContext","findContext","message","context","contextSelected","meta","docs","fixable","schema","type","modifyContext","propertyDescriptors","Object","getOwnPropertyDescriptors","create","getPrototypeOf","options","value","nonGlobalSettings","exports","index","configs","rules","checkAccess","checkAlignment","checkExamples","checkIndentation","checkLineAlignment","checkParamNames","checkPropertyNames","checkSyntax","checkTagNames","checkTemplateNames","checkTypes","checkValues","convertToJsdocComments","emptyTags","implementsOnClasses","importsAsDependencies","informativeDocs","linesBeforeBlock","matchDescription","matchName","multilineBlocks","noBadBlocks","noBlankBlockDescriptions","noBlankBlocks","noDefaults","noMissingSyntax","noMultiAsterisks","noRestrictedSyntax","noTypes","noUndefinedTypes","requireAsteriskPrefix","requireDescription","requireDescriptionCompleteSentence","requireExample","requireFileOverview","requireHyphenBeforeParamDescription","requireJsdoc","requireParam","requireParamDescription","requireParamName","requireParamType","requireProperty","requirePropertyDescription","requirePropertyName","requirePropertyType","requireReturns","requireReturnsCheck","requireReturnsDescription","requireReturnsType","requireTemplate","requireThrows","requireYields","requireYieldsCheck","sortTags","tagLines","textEscaping","typeFormatting","validTypes","createRecommendedRuleset","warnOrError","flatName","name","plugins","jsdoc","createRecommendedTypeScriptRuleset","ruleset","typed","createRecommendedTypeScriptFlavorRuleset","createStandaloneRulesetFactory","ruleNames","fromEntries","map","ruleName","slice","contentsRules","escapeHTML","createContentsTypescriptRuleset","createContentsTypescriptFlavorRuleset","logicalRules","createLogicalTypescriptRuleset","createLogicalTypescriptFlavorRuleset","requirementsRules","createRequirementsTypeScriptRuleset","createRequirementsTypeScriptFlavorRuleset","stylisticRules","createStylisticTypeScriptRuleset","createStylisticTypeScriptFlavorRuleset","Error","recommended","examples","files","getJsdocProcessorPlugin","processor","checkDefaults","checkParams","checkProperties","quotes","semi","strict","config","_default"],"sources":["../src/index-cjs.js"],"sourcesContent":["import {\n getJsdocProcessorPlugin,\n} from './getJsdocProcessorPlugin.js';\nimport iterateJsdoc from './iterateJsdoc.js';\nimport checkAccess from './rules/checkAccess.js';\nimport checkAlignment from './rules/checkAlignment.js';\nimport checkExamples from './rules/checkExamples.js';\nimport checkIndentation from './rules/checkIndentation.js';\nimport checkLineAlignment from './rules/checkLineAlignment.js';\nimport checkParamNames from './rules/checkParamNames.js';\nimport checkPropertyNames from './rules/checkPropertyNames.js';\nimport checkSyntax from './rules/checkSyntax.js';\nimport checkTagNames from './rules/checkTagNames.js';\nimport checkTemplateNames from './rules/checkTemplateNames.js';\nimport checkTypes from './rules/checkTypes.js';\nimport checkValues from './rules/checkValues.js';\nimport convertToJsdocComments from './rules/convertToJsdocComments.js';\nimport emptyTags from './rules/emptyTags.js';\nimport implementsOnClasses from './rules/implementsOnClasses.js';\nimport importsAsDependencies from './rules/importsAsDependencies.js';\nimport informativeDocs from './rules/informativeDocs.js';\nimport linesBeforeBlock from './rules/linesBeforeBlock.js';\nimport matchDescription from './rules/matchDescription.js';\nimport matchName from './rules/matchName.js';\nimport multilineBlocks from './rules/multilineBlocks.js';\nimport noBadBlocks from './rules/noBadBlocks.js';\nimport noBlankBlockDescriptions from './rules/noBlankBlockDescriptions.js';\nimport noBlankBlocks from './rules/noBlankBlocks.js';\nimport noDefaults from './rules/noDefaults.js';\nimport noMissingSyntax from './rules/noMissingSyntax.js';\nimport noMultiAsterisks from './rules/noMultiAsterisks.js';\nimport noRestrictedSyntax from './rules/noRestrictedSyntax.js';\nimport noTypes from './rules/noTypes.js';\nimport noUndefinedTypes from './rules/noUndefinedTypes.js';\nimport requireAsteriskPrefix from './rules/requireAsteriskPrefix.js';\nimport requireDescription from './rules/requireDescription.js';\nimport requireDescriptionCompleteSentence from './rules/requireDescriptionCompleteSentence.js';\nimport requireExample from './rules/requireExample.js';\nimport requireFileOverview from './rules/requireFileOverview.js';\nimport requireHyphenBeforeParamDescription from './rules/requireHyphenBeforeParamDescription.js';\nimport requireJsdoc from './rules/requireJsdoc.js';\nimport requireParam from './rules/requireParam.js';\nimport requireParamDescription from './rules/requireParamDescription.js';\nimport requireParamName from './rules/requireParamName.js';\nimport requireParamType from './rules/requireParamType.js';\nimport requireProperty from './rules/requireProperty.js';\nimport requirePropertyDescription from './rules/requirePropertyDescription.js';\nimport requirePropertyName from './rules/requirePropertyName.js';\nimport requirePropertyType from './rules/requirePropertyType.js';\nimport requireReturns from './rules/requireReturns.js';\nimport requireReturnsCheck from './rules/requireReturnsCheck.js';\nimport requireReturnsDescription from './rules/requireReturnsDescription.js';\nimport requireReturnsType from './rules/requireReturnsType.js';\nimport requireTemplate from './rules/requireTemplate.js';\nimport requireThrows from './rules/requireThrows.js';\nimport requireYields from './rules/requireYields.js';\nimport requireYieldsCheck from './rules/requireYieldsCheck.js';\nimport sortTags from './rules/sortTags.js';\nimport tagLines from './rules/tagLines.js';\nimport textEscaping from './rules/textEscaping.js';\nimport typeFormatting from './rules/typeFormatting.js';\nimport validTypes from './rules/validTypes.js';\n\n/**\n * @param {{\n * contexts: (string|{\n * comment: string,\n * context: string,\n * message: string\n * })[],\n * description?: string,\n * contextName?: string\n * url?: string,\n * }} cfg\n * @returns {import('@eslint/core').RuleDefinition<\n * import('@eslint/core').RuleDefinitionTypeOptions\n * >}\n */\nexport const buildForbidRuleDefinition = ({\n contextName,\n contexts,\n description,\n url,\n}) => {\n return iterateJsdoc(({\n // context,\n info: {\n comment,\n },\n report,\n utils,\n }) => {\n const {\n contextStr,\n foundContext,\n } = utils.findContext(contexts, comment);\n\n // We are not on the *particular* matching context/comment, so don't assume\n // we need reporting\n if (!foundContext) {\n return;\n }\n\n const message = /** @type {import('./iterateJsdoc.js').ContextObject} */ (\n foundContext\n )?.message ??\n 'Syntax is restricted: {{context}}' +\n (comment ? ' with {{comment}}' : '');\n\n report(message, null, null, comment ? {\n comment,\n context: contextStr,\n } : {\n context: contextStr,\n });\n }, {\n contextSelected: true,\n meta: {\n docs: {\n description: description ?? contextName ?? 'Reports when certain comment structures are present.',\n url: url ?? 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/advanced.md#user-content-advanced-creating-your-own-rules',\n },\n fixable: 'code',\n schema: [],\n type: 'suggestion',\n },\n modifyContext: (context) => {\n // Reproduce context object with our own `contexts`\n const propertyDescriptors = Object.getOwnPropertyDescriptors(context);\n return Object.create(\n Object.getPrototypeOf(context),\n {\n ...propertyDescriptors,\n options: {\n ...propertyDescriptors.options,\n value: [\n {\n contexts,\n },\n ],\n },\n },\n );\n },\n nonGlobalSettings: true,\n });\n};\n\n/* eslint-disable jsdoc/valid-types -- Bug */\n/**\n * @typedef {\"recommended\" | \"stylistic\" | \"contents\" | \"logical\" | \"requirements\"} ConfigGroups\n * @typedef {\"\" | \"-typescript\" | \"-typescript-flavor\"} ConfigVariants\n * @typedef {\"\" | \"-error\"} ErrorLevelVariants\n * @type {import('eslint').ESLint.Plugin & {\n * configs: Record<`flat/${ConfigGroups}${ConfigVariants}${ErrorLevelVariants}`,\n * import('eslint').Linter.Config>\n * }}\n */\nconst index = {};\n/* eslint-enable jsdoc/valid-types -- Bug */\nindex.configs = {};\nindex.rules = {\n 'check-access': checkAccess,\n 'check-alignment': checkAlignment,\n 'check-examples': checkExamples,\n 'check-indentation': checkIndentation,\n 'check-line-alignment': checkLineAlignment,\n 'check-param-names': checkParamNames,\n 'check-property-names': checkPropertyNames,\n 'check-syntax': checkSyntax,\n 'check-tag-names': checkTagNames,\n 'check-template-names': checkTemplateNames,\n 'check-types': checkTypes,\n 'check-values': checkValues,\n 'convert-to-jsdoc-comments': convertToJsdocComments,\n 'empty-tags': emptyTags,\n 'implements-on-classes': implementsOnClasses,\n 'imports-as-dependencies': importsAsDependencies,\n 'informative-docs': informativeDocs,\n 'lines-before-block': linesBeforeBlock,\n 'match-description': matchDescription,\n 'match-name': matchName,\n 'multiline-blocks': multilineBlocks,\n 'no-bad-blocks': noBadBlocks,\n 'no-blank-block-descriptions': noBlankBlockDescriptions,\n 'no-blank-blocks': noBlankBlocks,\n 'no-defaults': noDefaults,\n 'no-missing-syntax': noMissingSyntax,\n 'no-multi-asterisks': noMultiAsterisks,\n 'no-restricted-syntax': noRestrictedSyntax,\n 'no-types': noTypes,\n 'no-undefined-types': noUndefinedTypes,\n 'require-asterisk-prefix': requireAsteriskPrefix,\n 'require-description': requireDescription,\n 'require-description-complete-sentence': requireDescriptionCompleteSentence,\n 'require-example': requireExample,\n 'require-file-overview': requireFileOverview,\n 'require-hyphen-before-param-description': requireHyphenBeforeParamDescription,\n 'require-jsdoc': requireJsdoc,\n 'require-next-type': buildForbidRuleDefinition({\n contexts: [\n {\n comment: 'JsdocBlock:has(JsdocTag[tag=next]:not([parsedType.type]))',\n context: 'any',\n message: '@next should have a type',\n },\n ],\n description: 'Requires a type for @next tags',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-next-type.md#repos-sticky-header',\n }),\n 'require-param': requireParam,\n 'require-param-description': requireParamDescription,\n 'require-param-name': requireParamName,\n 'require-param-type': requireParamType,\n 'require-property': requireProperty,\n 'require-property-description': requirePropertyDescription,\n 'require-property-name': requirePropertyName,\n 'require-property-type': requirePropertyType,\n 'require-returns': requireReturns,\n 'require-returns-check': requireReturnsCheck,\n 'require-returns-description': requireReturnsDescription,\n 'require-returns-type': requireReturnsType,\n 'require-template': requireTemplate,\n 'require-throws': requireThrows,\n 'require-throws-type': buildForbidRuleDefinition({\n contexts: [\n {\n comment: 'JsdocBlock:has(JsdocTag[tag=throws]:not([parsedType.type]))',\n context: 'any',\n message: '@throws should have a type',\n },\n ],\n description: 'Requires a type for @throws tags',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-throws-type.md#repos-sticky-header',\n }),\n 'require-yields': requireYields,\n 'require-yields-check': requireYieldsCheck,\n 'require-yields-type': buildForbidRuleDefinition({\n contexts: [\n {\n comment: 'JsdocBlock:has(JsdocTag[tag=yields]:not([parsedType.type]))',\n context: 'any',\n message: '@yields should have a type',\n },\n ],\n description: 'Requires a type for @yields tags',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-yields-type.md#repos-sticky-header',\n }),\n 'sort-tags': sortTags,\n 'tag-lines': tagLines,\n 'text-escaping': textEscaping,\n 'type-formatting': typeFormatting,\n 'valid-types': validTypes,\n};\n\n/**\n * @param {\"warn\"|\"error\"} warnOrError\n * @param {string} [flatName]\n * @returns {import('eslint').Linter.Config}\n */\nconst createRecommendedRuleset = (warnOrError, flatName) => {\n return {\n ...(flatName ? {\n name: 'jsdoc/' + flatName,\n } : {}),\n // @ts-expect-error ESLint 8 plugins\n plugins:\n flatName ? {\n jsdoc: index,\n } : [\n 'jsdoc',\n ],\n rules: {\n 'jsdoc/check-access': warnOrError,\n 'jsdoc/check-alignment': warnOrError,\n 'jsdoc/check-examples': 'off',\n 'jsdoc/check-indentation': 'off',\n 'jsdoc/check-line-alignment': 'off',\n 'jsdoc/check-param-names': warnOrError,\n 'jsdoc/check-property-names': warnOrError,\n 'jsdoc/check-syntax': 'off',\n 'jsdoc/check-tag-names': warnOrError,\n 'jsdoc/check-template-names': 'off',\n 'jsdoc/check-types': warnOrError,\n 'jsdoc/check-values': warnOrError,\n 'jsdoc/convert-to-jsdoc-comments': 'off',\n 'jsdoc/empty-tags': warnOrError,\n 'jsdoc/implements-on-classes': warnOrError,\n 'jsdoc/imports-as-dependencies': 'off',\n 'jsdoc/informative-docs': 'off',\n 'jsdoc/lines-before-block': 'off',\n 'jsdoc/match-description': 'off',\n 'jsdoc/match-name': 'off',\n 'jsdoc/multiline-blocks': warnOrError,\n 'jsdoc/no-bad-blocks': 'off',\n 'jsdoc/no-blank-block-descriptions': 'off',\n 'jsdoc/no-blank-blocks': 'off',\n 'jsdoc/no-defaults': warnOrError,\n 'jsdoc/no-missing-syntax': 'off',\n 'jsdoc/no-multi-asterisks': warnOrError,\n 'jsdoc/no-restricted-syntax': 'off',\n 'jsdoc/no-types': 'off',\n 'jsdoc/no-undefined-types': warnOrError,\n 'jsdoc/require-asterisk-prefix': 'off',\n 'jsdoc/require-description': 'off',\n 'jsdoc/require-description-complete-sentence': 'off',\n 'jsdoc/require-example': 'off',\n 'jsdoc/require-file-overview': 'off',\n 'jsdoc/require-hyphen-before-param-description': 'off',\n 'jsdoc/require-jsdoc': warnOrError,\n 'jsdoc/require-next-type': warnOrError,\n 'jsdoc/require-param': warnOrError,\n 'jsdoc/require-param-description': warnOrError,\n 'jsdoc/require-param-name': warnOrError,\n 'jsdoc/require-param-type': warnOrError,\n 'jsdoc/require-property': warnOrError,\n 'jsdoc/require-property-description': warnOrError,\n 'jsdoc/require-property-name': warnOrError,\n 'jsdoc/require-property-type': warnOrError,\n 'jsdoc/require-returns': warnOrError,\n 'jsdoc/require-returns-check': warnOrError,\n 'jsdoc/require-returns-description': warnOrError,\n 'jsdoc/require-returns-type': warnOrError,\n 'jsdoc/require-template': 'off',\n 'jsdoc/require-throws': 'off',\n 'jsdoc/require-throws-type': warnOrError,\n 'jsdoc/require-yields': warnOrError,\n 'jsdoc/require-yields-check': warnOrError,\n 'jsdoc/require-yields-type': warnOrError,\n 'jsdoc/sort-tags': 'off',\n 'jsdoc/tag-lines': warnOrError,\n 'jsdoc/text-escaping': 'off',\n 'jsdoc/type-formatting': 'off',\n 'jsdoc/valid-types': warnOrError,\n },\n };\n};\n\n/**\n * @param {\"warn\"|\"error\"} warnOrError\n * @param {string} [flatName]\n * @returns {import('eslint').Linter.Config}\n */\nconst createRecommendedTypeScriptRuleset = (warnOrError, flatName) => {\n const ruleset = createRecommendedRuleset(warnOrError, flatName);\n\n return {\n ...ruleset,\n rules: {\n ...ruleset.rules,\n /* eslint-disable @stylistic/indent -- Extra indent to avoid use by auto-rule-editing */\n 'jsdoc/check-tag-names': [\n warnOrError, {\n typed: true,\n },\n ],\n 'jsdoc/no-types': warnOrError,\n 'jsdoc/no-undefined-types': 'off',\n 'jsdoc/require-param-type': 'off',\n 'jsdoc/require-property-type': 'off',\n 'jsdoc/require-returns-type': 'off',\n /* eslint-enable @stylistic/indent */\n },\n };\n};\n\n/**\n * @param {\"warn\"|\"error\"} warnOrError\n * @param {string} [flatName]\n * @returns {import('eslint').Linter.Config}\n */\nconst createRecommendedTypeScriptFlavorRuleset = (warnOrError, flatName) => {\n const ruleset = createRecommendedRuleset(warnOrError, flatName);\n\n return {\n ...ruleset,\n rules: {\n ...ruleset.rules,\n /* eslint-disable @stylistic/indent -- Extra indent to avoid use by auto-rule-editing */\n 'jsdoc/no-undefined-types': 'off',\n /* eslint-enable @stylistic/indent */\n },\n };\n};\n\n/**\n * @param {(string | unknown[])[]} ruleNames\n */\nconst createStandaloneRulesetFactory = (ruleNames) => {\n /**\n * @param {\"warn\"|\"error\"} warnOrError\n * @param {string} [flatName]\n * @returns {import('eslint').Linter.Config}\n */\n return (warnOrError, flatName) => {\n return {\n name: 'jsdoc/' + flatName,\n plugins: {\n jsdoc: index,\n },\n rules: Object.fromEntries(\n ruleNames.map(\n (ruleName) => {\n return (typeof ruleName === 'string' ?\n [\n ruleName, warnOrError,\n ] :\n [\n ruleName[0], [\n warnOrError, ...ruleName.slice(1),\n ],\n ]);\n },\n ),\n ),\n };\n };\n};\n\nconst contentsRules = [\n 'jsdoc/informative-docs',\n 'jsdoc/match-description',\n 'jsdoc/no-blank-block-descriptions',\n 'jsdoc/no-blank-blocks',\n [\n 'jsdoc/text-escaping', {\n escapeHTML: true,\n },\n ],\n];\n\nconst createContentsTypescriptRuleset = createStandaloneRulesetFactory(contentsRules);\n\nconst createContentsTypescriptFlavorRuleset = createStandaloneRulesetFactory(contentsRules);\n\nconst logicalRules = [\n 'jsdoc/check-access',\n 'jsdoc/check-param-names',\n 'jsdoc/check-property-names',\n 'jsdoc/check-syntax',\n 'jsdoc/check-tag-names',\n 'jsdoc/check-template-names',\n 'jsdoc/check-types',\n 'jsdoc/check-values',\n 'jsdoc/empty-tags',\n 'jsdoc/implements-on-classes',\n 'jsdoc/require-returns-check',\n 'jsdoc/require-yields-check',\n 'jsdoc/no-bad-blocks',\n 'jsdoc/no-defaults',\n 'jsdoc/no-types',\n 'jsdoc/no-undefined-types',\n 'jsdoc/valid-types',\n];\n\nconst createLogicalTypescriptRuleset = createStandaloneRulesetFactory(logicalRules);\n\nconst createLogicalTypescriptFlavorRuleset = createStandaloneRulesetFactory(logicalRules);\n\nconst requirementsRules = [\n 'jsdoc/require-example',\n 'jsdoc/require-jsdoc',\n 'jsdoc/require-next-type',\n 'jsdoc/require-param',\n 'jsdoc/require-param-description',\n 'jsdoc/require-param-name',\n 'jsdoc/require-property',\n 'jsdoc/require-property-description',\n 'jsdoc/require-property-name',\n 'jsdoc/require-returns',\n 'jsdoc/require-returns-description',\n 'jsdoc/require-throws-type',\n 'jsdoc/require-yields',\n 'jsdoc/require-yields-type',\n];\n\nconst createRequirementsTypeScriptRuleset = createStandaloneRulesetFactory(requirementsRules);\n\nconst createRequirementsTypeScriptFlavorRuleset = createStandaloneRulesetFactory([\n ...requirementsRules,\n 'jsdoc/require-param-type',\n 'jsdoc/require-property-type',\n 'jsdoc/require-returns-type',\n 'jsdoc/require-template',\n]);\n\nconst stylisticRules = [\n 'jsdoc/check-alignment',\n 'jsdoc/check-line-alignment',\n 'jsdoc/lines-before-block',\n 'jsdoc/multiline-blocks',\n 'jsdoc/no-multi-asterisks',\n 'jsdoc/require-asterisk-prefix',\n [\n 'jsdoc/require-hyphen-before-param-description', 'never',\n ],\n 'jsdoc/tag-lines',\n];\n\nconst createStylisticTypeScriptRuleset = createStandaloneRulesetFactory(stylisticRules);\n\nconst createStylisticTypeScriptFlavorRuleset = createStandaloneRulesetFactory(stylisticRules);\n\n/* c8 ignore next 3 -- TS */\nif (!index.configs) {\n throw new Error('TypeScript guard');\n}\n\nindex.configs.recommended = createRecommendedRuleset('warn');\nindex.configs['recommended-error'] = createRecommendedRuleset('error');\nindex.configs['recommended-typescript'] = createRecommendedTypeScriptRuleset('warn');\nindex.configs['recommended-typescript-error'] = createRecommendedTypeScriptRuleset('error');\nindex.configs['recommended-typescript-flavor'] = createRecommendedTypeScriptFlavorRuleset('warn');\nindex.configs['recommended-typescript-flavor-error'] = createRecommendedTypeScriptFlavorRuleset('error');\n\nindex.configs['flat/recommended'] = createRecommendedRuleset('warn', 'flat/recommended');\nindex.configs['flat/recommended-error'] = createRecommendedRuleset('error', 'flat/recommended-error');\nindex.configs['flat/recommended-typescript'] = createRecommendedTypeScriptRuleset('warn', 'flat/recommended-typescript');\nindex.configs['flat/recommended-typescript-error'] = createRecommendedTypeScriptRuleset('error', 'flat/recommended-typescript-error');\nindex.configs['flat/recommended-typescript-flavor'] = createRecommendedTypeScriptFlavorRuleset('warn', 'flat/recommended-typescript-flavor');\nindex.configs['flat/recommended-typescript-flavor-error'] = createRecommendedTypeScriptFlavorRuleset('error', 'flat/recommended-typescript-flavor-error');\n\nindex.configs['flat/contents-typescript'] = createContentsTypescriptRuleset('warn', 'flat/contents-typescript');\nindex.configs['flat/contents-typescript-error'] = createContentsTypescriptRuleset('error', 'flat/contents-typescript-error');\nindex.configs['flat/contents-typescript-flavor'] = createContentsTypescriptFlavorRuleset('warn', 'flat/contents-typescript-flavor');\nindex.configs['flat/contents-typescript-flavor-error'] = createContentsTypescriptFlavorRuleset('error', 'flat/contents-typescript-error-flavor');\nindex.configs['flat/logical-typescript'] = createLogicalTypescriptRuleset('warn', 'flat/logical-typescript');\nindex.configs['flat/logical-typescript-error'] = createLogicalTypescriptRuleset('error', 'flat/logical-typescript-error');\nindex.configs['flat/logical-typescript-flavor'] = createLogicalTypescriptFlavorRuleset('warn', 'flat/logical-typescript-flavor');\nindex.configs['flat/logical-typescript-flavor-error'] = createLogicalTypescriptFlavorRuleset('error', 'flat/logical-typescript-error-flavor');\nindex.configs['flat/requirements-typescript'] = createRequirementsTypeScriptRuleset('warn', 'flat/requirements-typescript');\nindex.configs['flat/requirements-typescript-error'] = createRequirementsTypeScriptRuleset('error', 'flat/requirements-typescript-error');\nindex.configs['flat/requirements-typescript-flavor'] = createRequirementsTypeScriptFlavorRuleset('warn', 'flat/requirements-typescript-flavor');\nindex.configs['flat/requirements-typescript-flavor-error'] = createRequirementsTypeScriptFlavorRuleset('error', 'flat/requirements-typescript-error-flavor');\nindex.configs['flat/stylistic-typescript'] = createStylisticTypeScriptRuleset('warn', 'flat/stylistic-typescript');\nindex.configs['flat/stylistic-typescript-error'] = createStylisticTypeScriptRuleset('error', 'flat/stylistic-typescript-error');\nindex.configs['flat/stylistic-typescript-flavor'] = createStylisticTypeScriptFlavorRuleset('warn', 'flat/stylistic-typescript-flavor');\nindex.configs['flat/stylistic-typescript-flavor-error'] = createStylisticTypeScriptFlavorRuleset('error', 'flat/stylistic-typescript-error-flavor');\n\nindex.configs.examples = /** @type {import('eslint').Linter.Config[]} */ ([\n {\n files: [\n '**/*.js',\n ],\n name: 'jsdoc/examples/processor',\n plugins: {\n examples: getJsdocProcessorPlugin(),\n },\n processor: 'examples/examples',\n },\n {\n files: [\n '**/*.md/*.js',\n ],\n name: 'jsdoc/examples/rules',\n rules: {\n // \"always\" newline rule at end unlikely in sample code\n '@stylistic/eol-last': 0,\n // Often wish to start `@example` code after newline; also may use\n // empty lines for spacing\n '@stylistic/no-multiple-empty-lines': 0,\n\n // Can generally look nicer to pad a little even if code imposes more stringency\n '@stylistic/padded-blocks': 0,\n\n // \"always\" newline rule at end unlikely in sample code\n 'eol-last': 0,\n\n // Wouldn't generally expect example paths to resolve relative to JS file\n 'import/no-unresolved': 0,\n\n // Snippets likely too short to always include import/export info\n 'import/unambiguous': 0,\n\n 'jsdoc/require-file-overview': 0,\n\n // The end of a multiline comment would end the comment the example is in.\n 'jsdoc/require-jsdoc': 0,\n\n // See import/no-unresolved\n 'n/no-missing-import': 0,\n\n 'n/no-missing-require': 0,\n\n // Unlikely to have inadvertent debugging within examples\n 'no-console': 0,\n\n // Often wish to start `@example` code after newline; also may use\n // empty lines for spacing\n 'no-multiple-empty-lines': 0,\n\n // Many variables in examples will be `undefined`\n 'no-undef': 0,\n // Common to define variables for clarity without always using them\n 'no-unused-vars': 0,\n\n // See import/no-unresolved\n 'node/no-missing-import': 0,\n 'node/no-missing-require': 0,\n\n // Can generally look nicer to pad a little even if code imposes more stringency\n 'padded-blocks': 0,\n },\n },\n]);\n\nindex.configs['default-expressions'] = /** @type {import('eslint').Linter.Config[]} */ ([\n {\n files: [\n '**/*.js',\n ],\n name: 'jsdoc/default-expressions/processor',\n plugins: {\n examples: getJsdocProcessorPlugin({\n checkDefaults: true,\n checkParams: true,\n checkProperties: true,\n }),\n },\n processor: 'examples/examples',\n },\n {\n files: [\n '**/*.jsdoc-defaults', '**/*.jsdoc-params', '**/*.jsdoc-properties',\n ],\n name: 'jsdoc/default-expressions/rules',\n rules: {\n ...index.configs.examples[1].rules,\n '@stylistic/quotes': [\n 'error', 'double',\n ],\n '@stylistic/semi': [\n 'error', 'never',\n ],\n '@typescript-eslint/no-unused-expressions': 0,\n 'chai-friendly/no-unused-expressions': 0,\n 'no-empty-function': 0,\n 'no-new': 0,\n 'no-unused-expressions': 0,\n quotes: [\n 'error', 'double',\n ],\n semi: [\n 'error', 'never',\n ],\n strict: 0,\n },\n },\n]);\n\nindex.configs['examples-and-default-expressions'] = /** @type {import('eslint').Linter.Config[]} */ ([\n {\n name: 'jsdoc/examples-and-default-expressions',\n plugins: {\n examples: getJsdocProcessorPlugin({\n checkDefaults: true,\n checkParams: true,\n checkProperties: true,\n }),\n },\n },\n ...index.configs.examples.map((config) => {\n return {\n ...config,\n plugins: {},\n };\n }),\n ...index.configs['default-expressions'].map((config) => {\n return {\n ...config,\n plugins: {},\n };\n }),\n]);\n\nexport default index;\n"],"mappings":"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","ignoreList":[]}
|
package/dist/index.cjs
CHANGED
|
@@ -454,6 +454,13 @@ index.configs.examples = /** @type {import('eslint').Linter.Config[]} */[{
|
|
|
454
454
|
files: ['**/*.md/*.js'],
|
|
455
455
|
name: 'jsdoc/examples/rules',
|
|
456
456
|
rules: {
|
|
457
|
+
// "always" newline rule at end unlikely in sample code
|
|
458
|
+
'@stylistic/eol-last': 0,
|
|
459
|
+
// Often wish to start `@example` code after newline; also may use
|
|
460
|
+
// empty lines for spacing
|
|
461
|
+
'@stylistic/no-multiple-empty-lines': 0,
|
|
462
|
+
// Can generally look nicer to pad a little even if code imposes more stringency
|
|
463
|
+
'@stylistic/padded-blocks': 0,
|
|
457
464
|
// "always" newline rule at end unlikely in sample code
|
|
458
465
|
'eol-last': 0,
|
|
459
466
|
// Wouldn't generally expect example paths to resolve relative to JS file
|
|
@@ -463,6 +470,9 @@ index.configs.examples = /** @type {import('eslint').Linter.Config[]} */[{
|
|
|
463
470
|
'jsdoc/require-file-overview': 0,
|
|
464
471
|
// The end of a multiline comment would end the comment the example is in.
|
|
465
472
|
'jsdoc/require-jsdoc': 0,
|
|
473
|
+
// See import/no-unresolved
|
|
474
|
+
'n/no-missing-import': 0,
|
|
475
|
+
'n/no-missing-require': 0,
|
|
466
476
|
// Unlikely to have inadvertent debugging within examples
|
|
467
477
|
'no-console': 0,
|
|
468
478
|
// Often wish to start `@example` code after newline; also may use
|
|
@@ -495,6 +505,9 @@ index.configs['default-expressions'] = /** @type {import('eslint').Linter.Config
|
|
|
495
505
|
name: 'jsdoc/default-expressions/rules',
|
|
496
506
|
rules: {
|
|
497
507
|
...index.configs.examples[1].rules,
|
|
508
|
+
'@stylistic/quotes': ['error', 'double'],
|
|
509
|
+
'@stylistic/semi': ['error', 'never'],
|
|
510
|
+
'@typescript-eslint/no-unused-expressions': 0,
|
|
498
511
|
'chai-friendly/no-unused-expressions': 0,
|
|
499
512
|
'no-empty-function': 0,
|
|
500
513
|
'no-new': 0,
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","names":["_objectDeepMerge","require","_getJsdocProcessorPlugin","_iterateJsdoc","_interopRequireDefault","_checkAccess","_checkAlignment","_checkExamples","_checkIndentation","_checkLineAlignment","_checkParamNames","_checkPropertyNames","_checkSyntax","_checkTagNames","_checkTemplateNames","_checkTypes","_checkValues","_convertToJsdocComments","_emptyTags","_implementsOnClasses","_importsAsDependencies","_informativeDocs","_linesBeforeBlock","_matchDescription","_matchName","_multilineBlocks","_noBadBlocks","_noBlankBlockDescriptions","_noBlankBlocks","_noDefaults","_noMissingSyntax","_noMultiAsterisks","_noRestrictedSyntax","_noTypes","_noUndefinedTypes","_requireAsteriskPrefix","_requireDescription","_requireDescriptionCompleteSentence","_requireExample","_requireFileOverview","_requireHyphenBeforeParamDescription","_requireJsdoc","_requireParam","_requireParamDescription","_requireParamName","_requireParamType","_requireProperty","_requirePropertyDescription","_requirePropertyName","_requirePropertyType","_requireReturns","_requireReturnsCheck","_requireReturnsDescription","_requireReturnsType","_requireTemplate","_requireThrows","_requireYields","_requireYieldsCheck","_sortTags","_tagLines","_textEscaping","_typeFormatting","_validTypes","e","__esModule","default","buildForbidRuleDefinition","contextName","contexts","description","url","iterateJsdoc","info","comment","report","utils","contextStr","foundContext","findContext","message","context","contextSelected","meta","docs","fixable","schema","type","modifyContext","propertyDescriptors","Object","getOwnPropertyDescriptors","create","getPrototypeOf","options","value","nonGlobalSettings","exports","index","configs","rules","checkAccess","checkAlignment","checkExamples","checkIndentation","checkLineAlignment","checkParamNames","checkPropertyNames","checkSyntax","checkTagNames","checkTemplateNames","checkTypes","checkValues","convertToJsdocComments","emptyTags","implementsOnClasses","importsAsDependencies","informativeDocs","linesBeforeBlock","matchDescription","matchName","multilineBlocks","noBadBlocks","noBlankBlockDescriptions","noBlankBlocks","noDefaults","noMissingSyntax","noMultiAsterisks","noRestrictedSyntax","noTypes","noUndefinedTypes","requireAsteriskPrefix","requireDescription","requireDescriptionCompleteSentence","requireExample","requireFileOverview","requireHyphenBeforeParamDescription","requireJsdoc","requireParam","requireParamDescription","requireParamName","requireParamType","requireProperty","requirePropertyDescription","requirePropertyName","requirePropertyType","requireReturns","requireReturnsCheck","requireReturnsDescription","requireReturnsType","requireTemplate","requireThrows","requireYields","requireYieldsCheck","sortTags","tagLines","textEscaping","typeFormatting","validTypes","createRecommendedRuleset","warnOrError","flatName","name","plugins","jsdoc","createRecommendedTypeScriptRuleset","ruleset","typed","createRecommendedTypeScriptFlavorRuleset","createStandaloneRulesetFactory","ruleNames","fromEntries","map","ruleName","slice","contentsRules","escapeHTML","createContentsTypescriptRuleset","createContentsTypescriptFlavorRuleset","logicalRules","createLogicalTypescriptRuleset","createLogicalTypescriptFlavorRuleset","requirementsRules","createRequirementsTypeScriptRuleset","createRequirementsTypeScriptFlavorRuleset","stylisticRules","createStylisticTypeScriptRuleset","createStylisticTypeScriptFlavorRuleset","Error","recommended","examples","files","getJsdocProcessorPlugin","processor","checkDefaults","checkParams","checkProperties","quotes","semi","strict","config","_default","cfg","outputConfig","TypeError","basePath","ignores","language","languageOptions","linterOptions","extraRuleDefinitions","forbid","entries","settings","mergeSettings","merge","includes","structuredTags","next","required"],"sources":["../src/index.js"],"sourcesContent":["/* AUTO-GENERATED BY build SCRIPT */\n/* eslint-disable perfectionist/sort-imports -- For auto-generate; Do not remove */\nimport {\n merge,\n} from 'object-deep-merge';\n\nimport {\n getJsdocProcessorPlugin,\n} from './getJsdocProcessorPlugin.js';\nimport iterateJsdoc from './iterateJsdoc.js';\nimport checkAccess from './rules/checkAccess.js';\nimport checkAlignment from './rules/checkAlignment.js';\nimport checkExamples from './rules/checkExamples.js';\nimport checkIndentation from './rules/checkIndentation.js';\nimport checkLineAlignment from './rules/checkLineAlignment.js';\nimport checkParamNames from './rules/checkParamNames.js';\nimport checkPropertyNames from './rules/checkPropertyNames.js';\nimport checkSyntax from './rules/checkSyntax.js';\nimport checkTagNames from './rules/checkTagNames.js';\nimport checkTemplateNames from './rules/checkTemplateNames.js';\nimport checkTypes from './rules/checkTypes.js';\nimport checkValues from './rules/checkValues.js';\nimport convertToJsdocComments from './rules/convertToJsdocComments.js';\nimport emptyTags from './rules/emptyTags.js';\nimport implementsOnClasses from './rules/implementsOnClasses.js';\nimport importsAsDependencies from './rules/importsAsDependencies.js';\nimport informativeDocs from './rules/informativeDocs.js';\nimport linesBeforeBlock from './rules/linesBeforeBlock.js';\nimport matchDescription from './rules/matchDescription.js';\nimport matchName from './rules/matchName.js';\nimport multilineBlocks from './rules/multilineBlocks.js';\nimport noBadBlocks from './rules/noBadBlocks.js';\nimport noBlankBlockDescriptions from './rules/noBlankBlockDescriptions.js';\nimport noBlankBlocks from './rules/noBlankBlocks.js';\nimport noDefaults from './rules/noDefaults.js';\nimport noMissingSyntax from './rules/noMissingSyntax.js';\nimport noMultiAsterisks from './rules/noMultiAsterisks.js';\nimport noRestrictedSyntax from './rules/noRestrictedSyntax.js';\nimport noTypes from './rules/noTypes.js';\nimport noUndefinedTypes from './rules/noUndefinedTypes.js';\nimport requireAsteriskPrefix from './rules/requireAsteriskPrefix.js';\nimport requireDescription from './rules/requireDescription.js';\nimport requireDescriptionCompleteSentence from './rules/requireDescriptionCompleteSentence.js';\nimport requireExample from './rules/requireExample.js';\nimport requireFileOverview from './rules/requireFileOverview.js';\nimport requireHyphenBeforeParamDescription from './rules/requireHyphenBeforeParamDescription.js';\nimport requireJsdoc from './rules/requireJsdoc.js';\nimport requireParam from './rules/requireParam.js';\nimport requireParamDescription from './rules/requireParamDescription.js';\nimport requireParamName from './rules/requireParamName.js';\nimport requireParamType from './rules/requireParamType.js';\nimport requireProperty from './rules/requireProperty.js';\nimport requirePropertyDescription from './rules/requirePropertyDescription.js';\nimport requirePropertyName from './rules/requirePropertyName.js';\nimport requirePropertyType from './rules/requirePropertyType.js';\nimport requireReturns from './rules/requireReturns.js';\nimport requireReturnsCheck from './rules/requireReturnsCheck.js';\nimport requireReturnsDescription from './rules/requireReturnsDescription.js';\nimport requireReturnsType from './rules/requireReturnsType.js';\nimport requireTemplate from './rules/requireTemplate.js';\nimport requireThrows from './rules/requireThrows.js';\nimport requireYields from './rules/requireYields.js';\nimport requireYieldsCheck from './rules/requireYieldsCheck.js';\nimport sortTags from './rules/sortTags.js';\nimport tagLines from './rules/tagLines.js';\nimport textEscaping from './rules/textEscaping.js';\nimport typeFormatting from './rules/typeFormatting.js';\nimport validTypes from './rules/validTypes.js';\n\n/**\n * @param {{\n * contexts: (string|{\n * comment: string,\n * context: string,\n * message: string\n * })[],\n * description?: string,\n * contextName?: string\n * url?: string,\n * }} cfg\n * @returns {import('@eslint/core').RuleDefinition<\n * import('@eslint/core').RuleDefinitionTypeOptions\n * >}\n */\nexport const buildForbidRuleDefinition = ({\n contextName,\n contexts,\n description,\n url,\n}) => {\n return iterateJsdoc(({\n // context,\n info: {\n comment,\n },\n report,\n utils,\n }) => {\n const {\n contextStr,\n foundContext,\n } = utils.findContext(contexts, comment);\n\n // We are not on the *particular* matching context/comment, so don't assume\n // we need reporting\n if (!foundContext) {\n return;\n }\n\n const message = /** @type {import('./iterateJsdoc.js').ContextObject} */ (\n foundContext\n )?.message ??\n 'Syntax is restricted: {{context}}' +\n (comment ? ' with {{comment}}' : '');\n\n report(message, null, null, comment ? {\n comment,\n context: contextStr,\n } : {\n context: contextStr,\n });\n }, {\n contextSelected: true,\n meta: {\n docs: {\n description: description ?? contextName ?? 'Reports when certain comment structures are present.',\n url: url ?? 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/advanced.md#user-content-advanced-creating-your-own-rules',\n },\n fixable: 'code',\n schema: [],\n type: 'suggestion',\n },\n modifyContext: (context) => {\n // Reproduce context object with our own `contexts`\n const propertyDescriptors = Object.getOwnPropertyDescriptors(context);\n return Object.create(\n Object.getPrototypeOf(context),\n {\n ...propertyDescriptors,\n options: {\n ...propertyDescriptors.options,\n value: [\n {\n contexts,\n },\n ],\n },\n },\n );\n },\n nonGlobalSettings: true,\n });\n};\n\n/* eslint-disable jsdoc/valid-types -- Bug */\n/**\n * @typedef {\"recommended\" | \"stylistic\" | \"contents\" | \"logical\" | \"requirements\"} ConfigGroups\n * @typedef {\"\" | \"-typescript\" | \"-typescript-flavor\"} ConfigVariants\n * @typedef {\"\" | \"-error\"} ErrorLevelVariants\n * @type {import('eslint').ESLint.Plugin & {\n * configs: Record<`flat/${ConfigGroups}${ConfigVariants}${ErrorLevelVariants}`,\n * import('eslint').Linter.Config>\n * }}\n */\nconst index = {};\n/* eslint-enable jsdoc/valid-types -- Bug */\nindex.configs = {};\nindex.rules = {\n 'check-access': checkAccess,\n 'check-alignment': checkAlignment,\n 'check-examples': checkExamples,\n 'check-indentation': checkIndentation,\n 'check-line-alignment': checkLineAlignment,\n 'check-param-names': checkParamNames,\n 'check-property-names': checkPropertyNames,\n 'check-syntax': checkSyntax,\n 'check-tag-names': checkTagNames,\n 'check-template-names': checkTemplateNames,\n 'check-types': checkTypes,\n 'check-values': checkValues,\n 'convert-to-jsdoc-comments': convertToJsdocComments,\n 'empty-tags': emptyTags,\n 'implements-on-classes': implementsOnClasses,\n 'imports-as-dependencies': importsAsDependencies,\n 'informative-docs': informativeDocs,\n 'lines-before-block': linesBeforeBlock,\n 'match-description': matchDescription,\n 'match-name': matchName,\n 'multiline-blocks': multilineBlocks,\n 'no-bad-blocks': noBadBlocks,\n 'no-blank-block-descriptions': noBlankBlockDescriptions,\n 'no-blank-blocks': noBlankBlocks,\n 'no-defaults': noDefaults,\n 'no-missing-syntax': noMissingSyntax,\n 'no-multi-asterisks': noMultiAsterisks,\n 'no-restricted-syntax': noRestrictedSyntax,\n 'no-types': noTypes,\n 'no-undefined-types': noUndefinedTypes,\n 'require-asterisk-prefix': requireAsteriskPrefix,\n 'require-description': requireDescription,\n 'require-description-complete-sentence': requireDescriptionCompleteSentence,\n 'require-example': requireExample,\n 'require-file-overview': requireFileOverview,\n 'require-hyphen-before-param-description': requireHyphenBeforeParamDescription,\n 'require-jsdoc': requireJsdoc,\n 'require-next-type': buildForbidRuleDefinition({\n contexts: [\n {\n comment: 'JsdocBlock:has(JsdocTag[tag=next]:not([parsedType.type]))',\n context: 'any',\n message: '@next should have a type',\n },\n ],\n description: 'Requires a type for @next tags',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-next-type.md#repos-sticky-header',\n }),\n 'require-param': requireParam,\n 'require-param-description': requireParamDescription,\n 'require-param-name': requireParamName,\n 'require-param-type': requireParamType,\n 'require-property': requireProperty,\n 'require-property-description': requirePropertyDescription,\n 'require-property-name': requirePropertyName,\n 'require-property-type': requirePropertyType,\n 'require-returns': requireReturns,\n 'require-returns-check': requireReturnsCheck,\n 'require-returns-description': requireReturnsDescription,\n 'require-returns-type': requireReturnsType,\n 'require-template': requireTemplate,\n 'require-throws': requireThrows,\n 'require-throws-type': buildForbidRuleDefinition({\n contexts: [\n {\n comment: 'JsdocBlock:has(JsdocTag[tag=throws]:not([parsedType.type]))',\n context: 'any',\n message: '@throws should have a type',\n },\n ],\n description: 'Requires a type for @throws tags',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-throws-type.md#repos-sticky-header',\n }),\n 'require-yields': requireYields,\n 'require-yields-check': requireYieldsCheck,\n 'require-yields-type': buildForbidRuleDefinition({\n contexts: [\n {\n comment: 'JsdocBlock:has(JsdocTag[tag=yields]:not([parsedType.type]))',\n context: 'any',\n message: '@yields should have a type',\n },\n ],\n description: 'Requires a type for @yields tags',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-yields-type.md#repos-sticky-header',\n }),\n 'sort-tags': sortTags,\n 'tag-lines': tagLines,\n 'text-escaping': textEscaping,\n 'type-formatting': typeFormatting,\n 'valid-types': validTypes,\n};\n\n/**\n * @param {\"warn\"|\"error\"} warnOrError\n * @param {string} [flatName]\n * @returns {import('eslint').Linter.Config}\n */\nconst createRecommendedRuleset = (warnOrError, flatName) => {\n return {\n ...(flatName ? {\n name: 'jsdoc/' + flatName,\n } : {}),\n // @ts-expect-error ESLint 8 plugins\n plugins:\n flatName ? {\n jsdoc: index,\n } : [\n 'jsdoc',\n ],\n rules: {\n 'jsdoc/check-access': warnOrError,\n 'jsdoc/check-alignment': warnOrError,\n 'jsdoc/check-examples': 'off',\n 'jsdoc/check-indentation': 'off',\n 'jsdoc/check-line-alignment': 'off',\n 'jsdoc/check-param-names': warnOrError,\n 'jsdoc/check-property-names': warnOrError,\n 'jsdoc/check-syntax': 'off',\n 'jsdoc/check-tag-names': warnOrError,\n 'jsdoc/check-template-names': 'off',\n 'jsdoc/check-types': warnOrError,\n 'jsdoc/check-values': warnOrError,\n 'jsdoc/convert-to-jsdoc-comments': 'off',\n 'jsdoc/empty-tags': warnOrError,\n 'jsdoc/implements-on-classes': warnOrError,\n 'jsdoc/imports-as-dependencies': 'off',\n 'jsdoc/informative-docs': 'off',\n 'jsdoc/lines-before-block': 'off',\n 'jsdoc/match-description': 'off',\n 'jsdoc/match-name': 'off',\n 'jsdoc/multiline-blocks': warnOrError,\n 'jsdoc/no-bad-blocks': 'off',\n 'jsdoc/no-blank-block-descriptions': 'off',\n 'jsdoc/no-blank-blocks': 'off',\n 'jsdoc/no-defaults': warnOrError,\n 'jsdoc/no-missing-syntax': 'off',\n 'jsdoc/no-multi-asterisks': warnOrError,\n 'jsdoc/no-restricted-syntax': 'off',\n 'jsdoc/no-types': 'off',\n 'jsdoc/no-undefined-types': warnOrError,\n 'jsdoc/require-asterisk-prefix': 'off',\n 'jsdoc/require-description': 'off',\n 'jsdoc/require-description-complete-sentence': 'off',\n 'jsdoc/require-example': 'off',\n 'jsdoc/require-file-overview': 'off',\n 'jsdoc/require-hyphen-before-param-description': 'off',\n 'jsdoc/require-jsdoc': warnOrError,\n 'jsdoc/require-next-type': warnOrError,\n 'jsdoc/require-param': warnOrError,\n 'jsdoc/require-param-description': warnOrError,\n 'jsdoc/require-param-name': warnOrError,\n 'jsdoc/require-param-type': warnOrError,\n 'jsdoc/require-property': warnOrError,\n 'jsdoc/require-property-description': warnOrError,\n 'jsdoc/require-property-name': warnOrError,\n 'jsdoc/require-property-type': warnOrError,\n 'jsdoc/require-returns': warnOrError,\n 'jsdoc/require-returns-check': warnOrError,\n 'jsdoc/require-returns-description': warnOrError,\n 'jsdoc/require-returns-type': warnOrError,\n 'jsdoc/require-template': 'off',\n 'jsdoc/require-throws': 'off',\n 'jsdoc/require-throws-type': warnOrError,\n 'jsdoc/require-yields': warnOrError,\n 'jsdoc/require-yields-check': warnOrError,\n 'jsdoc/require-yields-type': warnOrError,\n 'jsdoc/sort-tags': 'off',\n 'jsdoc/tag-lines': warnOrError,\n 'jsdoc/text-escaping': 'off',\n 'jsdoc/type-formatting': 'off',\n 'jsdoc/valid-types': warnOrError,\n },\n };\n};\n\n/**\n * @param {\"warn\"|\"error\"} warnOrError\n * @param {string} [flatName]\n * @returns {import('eslint').Linter.Config}\n */\nconst createRecommendedTypeScriptRuleset = (warnOrError, flatName) => {\n const ruleset = createRecommendedRuleset(warnOrError, flatName);\n\n return {\n ...ruleset,\n rules: {\n ...ruleset.rules,\n /* eslint-disable @stylistic/indent -- Extra indent to avoid use by auto-rule-editing */\n 'jsdoc/check-tag-names': [\n warnOrError, {\n typed: true,\n },\n ],\n 'jsdoc/no-types': warnOrError,\n 'jsdoc/no-undefined-types': 'off',\n 'jsdoc/require-param-type': 'off',\n 'jsdoc/require-property-type': 'off',\n 'jsdoc/require-returns-type': 'off',\n /* eslint-enable @stylistic/indent */\n },\n };\n};\n\n/**\n * @param {\"warn\"|\"error\"} warnOrError\n * @param {string} [flatName]\n * @returns {import('eslint').Linter.Config}\n */\nconst createRecommendedTypeScriptFlavorRuleset = (warnOrError, flatName) => {\n const ruleset = createRecommendedRuleset(warnOrError, flatName);\n\n return {\n ...ruleset,\n rules: {\n ...ruleset.rules,\n /* eslint-disable @stylistic/indent -- Extra indent to avoid use by auto-rule-editing */\n 'jsdoc/no-undefined-types': 'off',\n /* eslint-enable @stylistic/indent */\n },\n };\n};\n\n/**\n * @param {(string | unknown[])[]} ruleNames\n */\nconst createStandaloneRulesetFactory = (ruleNames) => {\n /**\n * @param {\"warn\"|\"error\"} warnOrError\n * @param {string} [flatName]\n * @returns {import('eslint').Linter.Config}\n */\n return (warnOrError, flatName) => {\n return {\n name: 'jsdoc/' + flatName,\n plugins: {\n jsdoc: index,\n },\n rules: Object.fromEntries(\n ruleNames.map(\n (ruleName) => {\n return (typeof ruleName === 'string' ?\n [\n ruleName, warnOrError,\n ] :\n [\n ruleName[0], [\n warnOrError, ...ruleName.slice(1),\n ],\n ]);\n },\n ),\n ),\n };\n };\n};\n\nconst contentsRules = [\n 'jsdoc/informative-docs',\n 'jsdoc/match-description',\n 'jsdoc/no-blank-block-descriptions',\n 'jsdoc/no-blank-blocks',\n [\n 'jsdoc/text-escaping', {\n escapeHTML: true,\n },\n ],\n];\n\nconst createContentsTypescriptRuleset = createStandaloneRulesetFactory(contentsRules);\n\nconst createContentsTypescriptFlavorRuleset = createStandaloneRulesetFactory(contentsRules);\n\nconst logicalRules = [\n 'jsdoc/check-access',\n 'jsdoc/check-param-names',\n 'jsdoc/check-property-names',\n 'jsdoc/check-syntax',\n 'jsdoc/check-tag-names',\n 'jsdoc/check-template-names',\n 'jsdoc/check-types',\n 'jsdoc/check-values',\n 'jsdoc/empty-tags',\n 'jsdoc/implements-on-classes',\n 'jsdoc/require-returns-check',\n 'jsdoc/require-yields-check',\n 'jsdoc/no-bad-blocks',\n 'jsdoc/no-defaults',\n 'jsdoc/no-types',\n 'jsdoc/no-undefined-types',\n 'jsdoc/valid-types',\n];\n\nconst createLogicalTypescriptRuleset = createStandaloneRulesetFactory(logicalRules);\n\nconst createLogicalTypescriptFlavorRuleset = createStandaloneRulesetFactory(logicalRules);\n\nconst requirementsRules = [\n 'jsdoc/require-example',\n 'jsdoc/require-jsdoc',\n 'jsdoc/require-next-type',\n 'jsdoc/require-param',\n 'jsdoc/require-param-description',\n 'jsdoc/require-param-name',\n 'jsdoc/require-property',\n 'jsdoc/require-property-description',\n 'jsdoc/require-property-name',\n 'jsdoc/require-returns',\n 'jsdoc/require-returns-description',\n 'jsdoc/require-throws-type',\n 'jsdoc/require-yields',\n 'jsdoc/require-yields-type',\n];\n\nconst createRequirementsTypeScriptRuleset = createStandaloneRulesetFactory(requirementsRules);\n\nconst createRequirementsTypeScriptFlavorRuleset = createStandaloneRulesetFactory([\n ...requirementsRules,\n 'jsdoc/require-param-type',\n 'jsdoc/require-property-type',\n 'jsdoc/require-returns-type',\n 'jsdoc/require-template',\n]);\n\nconst stylisticRules = [\n 'jsdoc/check-alignment',\n 'jsdoc/check-line-alignment',\n 'jsdoc/lines-before-block',\n 'jsdoc/multiline-blocks',\n 'jsdoc/no-multi-asterisks',\n 'jsdoc/require-asterisk-prefix',\n [\n 'jsdoc/require-hyphen-before-param-description', 'never',\n ],\n 'jsdoc/tag-lines',\n];\n\nconst createStylisticTypeScriptRuleset = createStandaloneRulesetFactory(stylisticRules);\n\nconst createStylisticTypeScriptFlavorRuleset = createStandaloneRulesetFactory(stylisticRules);\n\n/* c8 ignore next 3 -- TS */\nif (!index.configs) {\n throw new Error('TypeScript guard');\n}\n\nindex.configs.recommended = createRecommendedRuleset('warn');\nindex.configs['recommended-error'] = createRecommendedRuleset('error');\nindex.configs['recommended-typescript'] = createRecommendedTypeScriptRuleset('warn');\nindex.configs['recommended-typescript-error'] = createRecommendedTypeScriptRuleset('error');\nindex.configs['recommended-typescript-flavor'] = createRecommendedTypeScriptFlavorRuleset('warn');\nindex.configs['recommended-typescript-flavor-error'] = createRecommendedTypeScriptFlavorRuleset('error');\n\nindex.configs['flat/recommended'] = createRecommendedRuleset('warn', 'flat/recommended');\nindex.configs['flat/recommended-error'] = createRecommendedRuleset('error', 'flat/recommended-error');\nindex.configs['flat/recommended-typescript'] = createRecommendedTypeScriptRuleset('warn', 'flat/recommended-typescript');\nindex.configs['flat/recommended-typescript-error'] = createRecommendedTypeScriptRuleset('error', 'flat/recommended-typescript-error');\nindex.configs['flat/recommended-typescript-flavor'] = createRecommendedTypeScriptFlavorRuleset('warn', 'flat/recommended-typescript-flavor');\nindex.configs['flat/recommended-typescript-flavor-error'] = createRecommendedTypeScriptFlavorRuleset('error', 'flat/recommended-typescript-flavor-error');\n\nindex.configs['flat/contents-typescript'] = createContentsTypescriptRuleset('warn', 'flat/contents-typescript');\nindex.configs['flat/contents-typescript-error'] = createContentsTypescriptRuleset('error', 'flat/contents-typescript-error');\nindex.configs['flat/contents-typescript-flavor'] = createContentsTypescriptFlavorRuleset('warn', 'flat/contents-typescript-flavor');\nindex.configs['flat/contents-typescript-flavor-error'] = createContentsTypescriptFlavorRuleset('error', 'flat/contents-typescript-error-flavor');\nindex.configs['flat/logical-typescript'] = createLogicalTypescriptRuleset('warn', 'flat/logical-typescript');\nindex.configs['flat/logical-typescript-error'] = createLogicalTypescriptRuleset('error', 'flat/logical-typescript-error');\nindex.configs['flat/logical-typescript-flavor'] = createLogicalTypescriptFlavorRuleset('warn', 'flat/logical-typescript-flavor');\nindex.configs['flat/logical-typescript-flavor-error'] = createLogicalTypescriptFlavorRuleset('error', 'flat/logical-typescript-error-flavor');\nindex.configs['flat/requirements-typescript'] = createRequirementsTypeScriptRuleset('warn', 'flat/requirements-typescript');\nindex.configs['flat/requirements-typescript-error'] = createRequirementsTypeScriptRuleset('error', 'flat/requirements-typescript-error');\nindex.configs['flat/requirements-typescript-flavor'] = createRequirementsTypeScriptFlavorRuleset('warn', 'flat/requirements-typescript-flavor');\nindex.configs['flat/requirements-typescript-flavor-error'] = createRequirementsTypeScriptFlavorRuleset('error', 'flat/requirements-typescript-error-flavor');\nindex.configs['flat/stylistic-typescript'] = createStylisticTypeScriptRuleset('warn', 'flat/stylistic-typescript');\nindex.configs['flat/stylistic-typescript-error'] = createStylisticTypeScriptRuleset('error', 'flat/stylistic-typescript-error');\nindex.configs['flat/stylistic-typescript-flavor'] = createStylisticTypeScriptFlavorRuleset('warn', 'flat/stylistic-typescript-flavor');\nindex.configs['flat/stylistic-typescript-flavor-error'] = createStylisticTypeScriptFlavorRuleset('error', 'flat/stylistic-typescript-error-flavor');\n\nindex.configs.examples = /** @type {import('eslint').Linter.Config[]} */ ([\n {\n files: [\n '**/*.js',\n ],\n name: 'jsdoc/examples/processor',\n plugins: {\n examples: getJsdocProcessorPlugin(),\n },\n processor: 'examples/examples',\n },\n {\n files: [\n '**/*.md/*.js',\n ],\n name: 'jsdoc/examples/rules',\n rules: {\n // \"always\" newline rule at end unlikely in sample code\n 'eol-last': 0,\n\n // Wouldn't generally expect example paths to resolve relative to JS file\n 'import/no-unresolved': 0,\n\n // Snippets likely too short to always include import/export info\n 'import/unambiguous': 0,\n\n 'jsdoc/require-file-overview': 0,\n\n // The end of a multiline comment would end the comment the example is in.\n 'jsdoc/require-jsdoc': 0,\n\n // Unlikely to have inadvertent debugging within examples\n 'no-console': 0,\n\n // Often wish to start `@example` code after newline; also may use\n // empty lines for spacing\n 'no-multiple-empty-lines': 0,\n\n // Many variables in examples will be `undefined`\n 'no-undef': 0,\n\n // Common to define variables for clarity without always using them\n 'no-unused-vars': 0,\n\n // See import/no-unresolved\n 'node/no-missing-import': 0,\n 'node/no-missing-require': 0,\n\n // Can generally look nicer to pad a little even if code imposes more stringency\n 'padded-blocks': 0,\n },\n },\n]);\n\nindex.configs['default-expressions'] = /** @type {import('eslint').Linter.Config[]} */ ([\n {\n files: [\n '**/*.js',\n ],\n name: 'jsdoc/default-expressions/processor',\n plugins: {\n examples: getJsdocProcessorPlugin({\n checkDefaults: true,\n checkParams: true,\n checkProperties: true,\n }),\n },\n processor: 'examples/examples',\n },\n {\n files: [\n '**/*.jsdoc-defaults', '**/*.jsdoc-params', '**/*.jsdoc-properties',\n ],\n name: 'jsdoc/default-expressions/rules',\n rules: {\n ...index.configs.examples[1].rules,\n 'chai-friendly/no-unused-expressions': 0,\n 'no-empty-function': 0,\n 'no-new': 0,\n 'no-unused-expressions': 0,\n quotes: [\n 'error', 'double',\n ],\n semi: [\n 'error', 'never',\n ],\n strict: 0,\n },\n },\n]);\n\nindex.configs['examples-and-default-expressions'] = /** @type {import('eslint').Linter.Config[]} */ ([\n {\n name: 'jsdoc/examples-and-default-expressions',\n plugins: {\n examples: getJsdocProcessorPlugin({\n checkDefaults: true,\n checkParams: true,\n checkProperties: true,\n }),\n },\n },\n ...index.configs.examples.map((config) => {\n return {\n ...config,\n plugins: {},\n };\n }),\n ...index.configs['default-expressions'].map((config) => {\n return {\n ...config,\n plugins: {},\n };\n }),\n]);\n\nexport default index;\n\n/* eslint-disable jsdoc/valid-types -- Bug */\n/**\n * @type {((\n * cfg?: import('eslint').Linter.Config & {\n * config?: `flat/${ConfigGroups}${ConfigVariants}${ErrorLevelVariants}`,\n * mergeSettings?: boolean,\n * settings?: Partial<import('./iterateJsdoc.js').Settings>,\n * rules?: {[key in keyof import('./rules.d.ts').Rules]?: import('eslint').Linter.RuleEntry<import('./rules.d.ts').Rules[key]>},\n * extraRuleDefinitions?: {\n * forbid: {\n * [contextName: string]: {\n * description?: string,\n * url?: string,\n * contexts: (string|{\n * message: string,\n * context: string,\n * comment: string\n * })[]\n * }\n * }\n * }\n * }\n * ) => import('eslint').Linter.Config)}\n */\n/* eslint-enable jsdoc/valid-types -- Bug */\nexport const jsdoc = function (cfg) {\n /** @type {import('eslint').Linter.Config} */\n let outputConfig = {\n plugins: {\n jsdoc: index,\n },\n };\n\n if (cfg) {\n if (cfg.config) {\n // @ts-expect-error Security check\n if (cfg.config === '__proto__') {\n throw new TypeError('Disallowed config value');\n }\n\n outputConfig = index.configs[cfg.config];\n }\n\n if (cfg.rules) {\n outputConfig.rules = {\n ...outputConfig.rules,\n ...cfg.rules,\n };\n }\n\n if (cfg.plugins) {\n outputConfig.plugins = {\n ...outputConfig.plugins,\n ...cfg.plugins,\n };\n }\n\n if (cfg.name) {\n outputConfig.name = cfg.name;\n }\n\n if (cfg.basePath) {\n outputConfig.basePath = cfg.basePath;\n }\n\n if (cfg.files) {\n outputConfig.files = cfg.files;\n }\n\n if (cfg.ignores) {\n outputConfig.ignores = cfg.ignores;\n }\n\n if (cfg.language) {\n outputConfig.language = cfg.language;\n }\n\n if (cfg.languageOptions) {\n outputConfig.languageOptions = cfg.languageOptions;\n }\n\n if (cfg.linterOptions) {\n outputConfig.linterOptions = cfg.linterOptions;\n }\n\n if (cfg.processor) {\n outputConfig.processor = cfg.processor;\n }\n\n if (cfg.extraRuleDefinitions) {\n if (!outputConfig.plugins?.jsdoc?.rules) {\n throw new Error('JSDoc plugin required for `extraRuleDefinitions`');\n }\n\n if (cfg.extraRuleDefinitions.forbid) {\n for (const [\n contextName,\n {\n contexts,\n description,\n url,\n },\n ] of Object.entries(cfg.extraRuleDefinitions.forbid)) {\n outputConfig.plugins.jsdoc.rules[`forbid-${contextName}`] =\n buildForbidRuleDefinition({\n contextName,\n contexts,\n description,\n url,\n });\n }\n }\n }\n }\n\n outputConfig.settings = {\n jsdoc: cfg?.mergeSettings === false ?\n cfg.settings :\n merge(\n {},\n cfg?.settings ?? {},\n cfg?.config?.includes('recommended') ?\n {\n // We may need to drop these for \"typescript\" (non-\"flavor\") configs,\n // if support is later added: https://www.typescriptlang.org/docs/handbook/jsdoc-supported-types.html\n structuredTags: {\n next: {\n required: [\n 'type',\n ],\n },\n },\n } :\n {},\n ),\n };\n\n return outputConfig;\n};\n\nexport {\n getJsdocProcessorPlugin,\n} from './getJsdocProcessorPlugin.js';\n"],"mappings":";;;;;;;;;;;;;AAEA,IAAAA,gBAAA,GAAAC,OAAA;AAIA,IAAAC,wBAAA,GAAAD,OAAA;AAGA,IAAAE,aAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,YAAA,GAAAD,sBAAA,CAAAH,OAAA;AACA,IAAAK,eAAA,GAAAF,sBAAA,CAAAH,OAAA;AACA,IAAAM,cAAA,GAAAH,sBAAA,CAAAH,OAAA;AACA,IAAAO,iBAAA,GAAAJ,sBAAA,CAAAH,OAAA;AACA,IAAAQ,mBAAA,GAAAL,sBAAA,CAAAH,OAAA;AACA,IAAAS,gBAAA,GAAAN,sBAAA,CAAAH,OAAA;AACA,IAAAU,mBAAA,GAAAP,sBAAA,CAAAH,OAAA;AACA,IAAAW,YAAA,GAAAR,sBAAA,CAAAH,OAAA;AACA,IAAAY,cAAA,GAAAT,sBAAA,CAAAH,OAAA;AACA,IAAAa,mBAAA,GAAAV,sBAAA,CAAAH,OAAA;AACA,IAAAc,WAAA,GAAAX,sBAAA,CAAAH,OAAA;AACA,IAAAe,YAAA,GAAAZ,sBAAA,CAAAH,OAAA;AACA,IAAAgB,uBAAA,GAAAb,sBAAA,CAAAH,OAAA;AACA,IAAAiB,UAAA,GAAAd,sBAAA,CAAAH,OAAA;AACA,IAAAkB,oBAAA,GAAAf,sBAAA,CAAAH,OAAA;AACA,IAAAmB,sBAAA,GAAAhB,sBAAA,CAAAH,OAAA;AACA,IAAAoB,gBAAA,GAAAjB,sBAAA,CAAAH,OAAA;AACA,IAAAqB,iBAAA,GAAAlB,sBAAA,CAAAH,OAAA;AACA,IAAAsB,iBAAA,GAAAnB,sBAAA,CAAAH,OAAA;AACA,IAAAuB,UAAA,GAAApB,sBAAA,CAAAH,OAAA;AACA,IAAAwB,gBAAA,GAAArB,sBAAA,CAAAH,OAAA;AACA,IAAAyB,YAAA,GAAAtB,sBAAA,CAAAH,OAAA;AACA,IAAA0B,yBAAA,GAAAvB,sBAAA,CAAAH,OAAA;AACA,IAAA2B,cAAA,GAAAxB,sBAAA,CAAAH,OAAA;AACA,IAAA4B,WAAA,GAAAzB,sBAAA,CAAAH,OAAA;AACA,IAAA6B,gBAAA,GAAA1B,sBAAA,CAAAH,OAAA;AACA,IAAA8B,iBAAA,GAAA3B,sBAAA,CAAAH,OAAA;AACA,IAAA+B,mBAAA,GAAA5B,sBAAA,CAAAH,OAAA;AACA,IAAAgC,QAAA,GAAA7B,sBAAA,CAAAH,OAAA;AACA,IAAAiC,iBAAA,GAAA9B,sBAAA,CAAAH,OAAA;AACA,IAAAkC,sBAAA,GAAA/B,sBAAA,CAAAH,OAAA;AACA,IAAAmC,mBAAA,GAAAhC,sBAAA,CAAAH,OAAA;AACA,IAAAoC,mCAAA,GAAAjC,sBAAA,CAAAH,OAAA;AACA,IAAAqC,eAAA,GAAAlC,sBAAA,CAAAH,OAAA;AACA,IAAAsC,oBAAA,GAAAnC,sBAAA,CAAAH,OAAA;AACA,IAAAuC,oCAAA,GAAApC,sBAAA,CAAAH,OAAA;AACA,IAAAwC,aAAA,GAAArC,sBAAA,CAAAH,OAAA;AACA,IAAAyC,aAAA,GAAAtC,sBAAA,CAAAH,OAAA;AACA,IAAA0C,wBAAA,GAAAvC,sBAAA,CAAAH,OAAA;AACA,IAAA2C,iBAAA,GAAAxC,sBAAA,CAAAH,OAAA;AACA,IAAA4C,iBAAA,GAAAzC,sBAAA,CAAAH,OAAA;AACA,IAAA6C,gBAAA,GAAA1C,sBAAA,CAAAH,OAAA;AACA,IAAA8C,2BAAA,GAAA3C,sBAAA,CAAAH,OAAA;AACA,IAAA+C,oBAAA,GAAA5C,sBAAA,CAAAH,OAAA;AACA,IAAAgD,oBAAA,GAAA7C,sBAAA,CAAAH,OAAA;AACA,IAAAiD,eAAA,GAAA9C,sBAAA,CAAAH,OAAA;AACA,IAAAkD,oBAAA,GAAA/C,sBAAA,CAAAH,OAAA;AACA,IAAAmD,0BAAA,GAAAhD,sBAAA,CAAAH,OAAA;AACA,IAAAoD,mBAAA,GAAAjD,sBAAA,CAAAH,OAAA;AACA,IAAAqD,gBAAA,GAAAlD,sBAAA,CAAAH,OAAA;AACA,IAAAsD,cAAA,GAAAnD,sBAAA,CAAAH,OAAA;AACA,IAAAuD,cAAA,GAAApD,sBAAA,CAAAH,OAAA;AACA,IAAAwD,mBAAA,GAAArD,sBAAA,CAAAH,OAAA;AACA,IAAAyD,SAAA,GAAAtD,sBAAA,CAAAH,OAAA;AACA,IAAA0D,SAAA,GAAAvD,sBAAA,CAAAH,OAAA;AACA,IAAA2D,aAAA,GAAAxD,sBAAA,CAAAH,OAAA;AACA,IAAA4D,eAAA,GAAAzD,sBAAA,CAAAH,OAAA;AACA,IAAA6D,WAAA,GAAA1D,sBAAA,CAAAH,OAAA;AAA+C,SAAAG,uBAAA2D,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAnE/C;AACA;;AAoEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMG,yBAAyB,GAAGA,CAAC;EACxCC,WAAW;EACXC,QAAQ;EACRC,WAAW;EACXC;AACF,CAAC,KAAK;EACJ,OAAO,IAAAC,qBAAY,EAAC,CAAC;IACnB;IACAC,IAAI,EAAE;MACJC;IACF,CAAC;IACDC,MAAM;IACNC;EACF,CAAC,KAAK;IACJ,MAAM;MACJC,UAAU;MACVC;IACF,CAAC,GAAGF,KAAK,CAACG,WAAW,CAACV,QAAQ,EAAEK,OAAO,CAAC;;IAExC;IACA;IACA,IAAI,CAACI,YAAY,EAAE;MACjB;IACF;IAEA,MAAME,OAAO,GAAG,wDACdF,YAAY,EACXE,OAAO,IACR,mCAAmC,IAChCN,OAAO,GAAG,mBAAmB,GAAG,EAAE,CAAC;IAExCC,MAAM,CAACK,OAAO,EAAE,IAAI,EAAE,IAAI,EAAEN,OAAO,GAAG;MACpCA,OAAO;MACPO,OAAO,EAAEJ;IACX,CAAC,GAAG;MACFI,OAAO,EAAEJ;IACX,CAAC,CAAC;EACJ,CAAC,EAAE;IACDK,eAAe,EAAE,IAAI;IACrBC,IAAI,EAAE;MACJC,IAAI,EAAE;QACJd,WAAW,EAAEA,WAAW,IAAIF,WAAW,IAAI,sDAAsD;QACjGG,GAAG,EAAEA,GAAG,IAAI;MACd,CAAC;MACDc,OAAO,EAAE,MAAM;MACfC,MAAM,EAAE,EAAE;MACVC,IAAI,EAAE;IACR,CAAC;IACDC,aAAa,EAAGP,OAAO,IAAK;MAC1B;MACA,MAAMQ,mBAAmB,GAAGC,MAAM,CAACC,yBAAyB,CAACV,OAAO,CAAC;MACrE,OAAOS,MAAM,CAACE,MAAM,CAClBF,MAAM,CAACG,cAAc,CAACZ,OAAO,CAAC,EAC9B;QACE,GAAGQ,mBAAmB;QACtBK,OAAO,EAAE;UACP,GAAGL,mBAAmB,CAACK,OAAO;UAC9BC,KAAK,EAAE,CACL;YACE1B;UACF,CAAC;QAEL;MACF,CACF,CAAC;IACH,CAAC;IACD2B,iBAAiB,EAAE;EACrB,CAAC,CAAC;AACJ,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AARAC,OAAA,CAAA9B,yBAAA,GAAAA,yBAAA;AASA,MAAM+B,KAAK,GAAG,CAAC,CAAC;AAChB;AACAA,KAAK,CAACC,OAAO,GAAG,CAAC,CAAC;AAClBD,KAAK,CAACE,KAAK,GAAG;EACZ,cAAc,EAAEC,oBAAW;EAC3B,iBAAiB,EAAEC,uBAAc;EACjC,gBAAgB,EAAEC,sBAAa;EAC/B,mBAAmB,EAAEC,yBAAgB;EACrC,sBAAsB,EAAEC,2BAAkB;EAC1C,mBAAmB,EAAEC,wBAAe;EACpC,sBAAsB,EAAEC,2BAAkB;EAC1C,cAAc,EAAEC,oBAAW;EAC3B,iBAAiB,EAAEC,sBAAa;EAChC,sBAAsB,EAAEC,2BAAkB;EAC1C,aAAa,EAAEC,mBAAU;EACzB,cAAc,EAAEC,oBAAW;EAC3B,2BAA2B,EAAEC,+BAAsB;EACnD,YAAY,EAAEC,kBAAS;EACvB,uBAAuB,EAAEC,4BAAmB;EAC5C,yBAAyB,EAAEC,8BAAqB;EAChD,kBAAkB,EAAEC,wBAAe;EACnC,oBAAoB,EAAEC,yBAAgB;EACtC,mBAAmB,EAAEC,yBAAgB;EACrC,YAAY,EAAEC,kBAAS;EACvB,kBAAkB,EAAEC,wBAAe;EACnC,eAAe,EAAEC,oBAAW;EAC5B,6BAA6B,EAAEC,iCAAwB;EACvD,iBAAiB,EAAEC,sBAAa;EAChC,aAAa,EAAEC,mBAAU;EACzB,mBAAmB,EAAEC,wBAAe;EACpC,oBAAoB,EAAEC,yBAAgB;EACtC,sBAAsB,EAAEC,2BAAkB;EAC1C,UAAU,EAAEC,gBAAO;EACnB,oBAAoB,EAAEC,yBAAgB;EACtC,yBAAyB,EAAEC,8BAAqB;EAChD,qBAAqB,EAAEC,2BAAkB;EACzC,uCAAuC,EAAEC,2CAAkC;EAC3E,iBAAiB,EAAEC,uBAAc;EACjC,uBAAuB,EAAEC,4BAAmB;EAC5C,yCAAyC,EAAEC,4CAAmC;EAC9E,eAAe,EAAEC,qBAAY;EAC7B,mBAAmB,EAAEtE,yBAAyB,CAAC;IAC7CE,QAAQ,EAAE,CACR;MACEK,OAAO,EAAE,2DAA2D;MACpEO,OAAO,EAAE,KAAK;MACdD,OAAO,EAAE;IACX,CAAC,CACF;IACDV,WAAW,EAAE,gCAAgC;IAC7CC,GAAG,EAAE;EACP,CAAC,CAAC;EACF,eAAe,EAAEmE,qBAAY;EAC7B,2BAA2B,EAAEC,gCAAuB;EACpD,oBAAoB,EAAEC,yBAAgB;EACtC,oBAAoB,EAAEC,yBAAgB;EACtC,kBAAkB,EAAEC,wBAAe;EACnC,8BAA8B,EAAEC,mCAA0B;EAC1D,uBAAuB,EAAEC,4BAAmB;EAC5C,uBAAuB,EAAEC,4BAAmB;EAC5C,iBAAiB,EAAEC,uBAAc;EACjC,uBAAuB,EAAEC,4BAAmB;EAC5C,6BAA6B,EAAEC,kCAAyB;EACxD,sBAAsB,EAAEC,2BAAkB;EAC1C,kBAAkB,EAAEC,wBAAe;EACnC,gBAAgB,EAAEC,sBAAa;EAC/B,qBAAqB,EAAEpF,yBAAyB,CAAC;IAC/CE,QAAQ,EAAE,CACR;MACEK,OAAO,EAAE,6DAA6D;MACtEO,OAAO,EAAE,KAAK;MACdD,OAAO,EAAE;IACX,CAAC,CACF;IACDV,WAAW,EAAE,kCAAkC;IAC/CC,GAAG,EAAE;EACP,CAAC,CAAC;EACF,gBAAgB,EAAEiF,sBAAa;EAC/B,sBAAsB,EAAEC,2BAAkB;EAC1C,qBAAqB,EAAEtF,yBAAyB,CAAC;IAC/CE,QAAQ,EAAE,CACR;MACEK,OAAO,EAAE,6DAA6D;MACtEO,OAAO,EAAE,KAAK;MACdD,OAAO,EAAE;IACX,CAAC,CACF;IACDV,WAAW,EAAE,kCAAkC;IAC/CC,GAAG,EAAE;EACP,CAAC,CAAC;EACF,WAAW,EAAEmF,iBAAQ;EACrB,WAAW,EAAEC,iBAAQ;EACrB,eAAe,EAAEC,qBAAY;EAC7B,iBAAiB,EAAEC,uBAAc;EACjC,aAAa,EAAEC;AACjB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,MAAMC,wBAAwB,GAAGA,CAACC,WAAW,EAAEC,QAAQ,KAAK;EAC1D,OAAO;IACL,IAAIA,QAAQ,GAAG;MACbC,IAAI,EAAE,QAAQ,GAAGD;IACnB,CAAC,GAAG,CAAC,CAAC,CAAC;IACP;IACAE,OAAO,EACLF,QAAQ,GAAG;MACTG,KAAK,EAAElE;IACT,CAAC,GAAG,CACF,OAAO,CACR;IACHE,KAAK,EAAE;MACL,oBAAoB,EAAE4D,WAAW;MACjC,uBAAuB,EAAEA,WAAW;MACpC,sBAAsB,EAAE,KAAK;MAC7B,yBAAyB,EAAE,KAAK;MAChC,4BAA4B,EAAE,KAAK;MACnC,yBAAyB,EAAEA,WAAW;MACtC,4BAA4B,EAAEA,WAAW;MACzC,oBAAoB,EAAE,KAAK;MAC3B,uBAAuB,EAAEA,WAAW;MACpC,4BAA4B,EAAE,KAAK;MACnC,mBAAmB,EAAEA,WAAW;MAChC,oBAAoB,EAAEA,WAAW;MACjC,iCAAiC,EAAE,KAAK;MACxC,kBAAkB,EAAEA,WAAW;MAC/B,6BAA6B,EAAEA,WAAW;MAC1C,+BAA+B,EAAE,KAAK;MACtC,wBAAwB,EAAE,KAAK;MAC/B,0BAA0B,EAAE,KAAK;MACjC,yBAAyB,EAAE,KAAK;MAChC,kBAAkB,EAAE,KAAK;MACzB,wBAAwB,EAAEA,WAAW;MACrC,qBAAqB,EAAE,KAAK;MAC5B,mCAAmC,EAAE,KAAK;MAC1C,uBAAuB,EAAE,KAAK;MAC9B,mBAAmB,EAAEA,WAAW;MAChC,yBAAyB,EAAE,KAAK;MAChC,0BAA0B,EAAEA,WAAW;MACvC,4BAA4B,EAAE,KAAK;MACnC,gBAAgB,EAAE,KAAK;MACvB,0BAA0B,EAAEA,WAAW;MACvC,+BAA+B,EAAE,KAAK;MACtC,2BAA2B,EAAE,KAAK;MAClC,6CAA6C,EAAE,KAAK;MACpD,uBAAuB,EAAE,KAAK;MAC9B,6BAA6B,EAAE,KAAK;MACpC,+CAA+C,EAAE,KAAK;MACtD,qBAAqB,EAAEA,WAAW;MAClC,yBAAyB,EAAEA,WAAW;MACtC,qBAAqB,EAAEA,WAAW;MAClC,iCAAiC,EAAEA,WAAW;MAC9C,0BAA0B,EAAEA,WAAW;MACvC,0BAA0B,EAAEA,WAAW;MACvC,wBAAwB,EAAEA,WAAW;MACrC,oCAAoC,EAAEA,WAAW;MACjD,6BAA6B,EAAEA,WAAW;MAC1C,6BAA6B,EAAEA,WAAW;MAC1C,uBAAuB,EAAEA,WAAW;MACpC,6BAA6B,EAAEA,WAAW;MAC1C,mCAAmC,EAAEA,WAAW;MAChD,4BAA4B,EAAEA,WAAW;MACzC,wBAAwB,EAAE,KAAK;MAC/B,sBAAsB,EAAE,KAAK;MAC7B,2BAA2B,EAAEA,WAAW;MACxC,sBAAsB,EAAEA,WAAW;MACnC,4BAA4B,EAAEA,WAAW;MACzC,2BAA2B,EAAEA,WAAW;MACxC,iBAAiB,EAAE,KAAK;MACxB,iBAAiB,EAAEA,WAAW;MAC9B,qBAAqB,EAAE,KAAK;MAC5B,uBAAuB,EAAE,KAAK;MAC9B,mBAAmB,EAAEA;IACvB;EACF,CAAC;AACH,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,MAAMK,kCAAkC,GAAGA,CAACL,WAAW,EAAEC,QAAQ,KAAK;EACpE,MAAMK,OAAO,GAAGP,wBAAwB,CAACC,WAAW,EAAEC,QAAQ,CAAC;EAE/D,OAAO;IACL,GAAGK,OAAO;IACVlE,KAAK,EAAE;MACL,GAAGkE,OAAO,CAAClE,KAAK;MAChB;MACE,uBAAuB,EAAE,CACvB4D,WAAW,EAAE;QACXO,KAAK,EAAE;MACT,CAAC,CACF;MACD,gBAAgB,EAAEP,WAAW;MAC7B,0BAA0B,EAAE,KAAK;MACjC,0BAA0B,EAAE,KAAK;MACjC,6BAA6B,EAAE,KAAK;MACpC,4BAA4B,EAAE;MAChC;IACF;EACF,CAAC;AACH,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,MAAMQ,wCAAwC,GAAGA,CAACR,WAAW,EAAEC,QAAQ,KAAK;EAC1E,MAAMK,OAAO,GAAGP,wBAAwB,CAACC,WAAW,EAAEC,QAAQ,CAAC;EAE/D,OAAO;IACL,GAAGK,OAAO;IACVlE,KAAK,EAAE;MACL,GAAGkE,OAAO,CAAClE,KAAK;MAChB;MACE,0BAA0B,EAAE;MAC9B;IACF;EACF,CAAC;AACH,CAAC;;AAED;AACA;AACA;AACA,MAAMqE,8BAA8B,GAAIC,SAAS,IAAK;EACpD;AACF;AACA;AACA;AACA;EACE,OAAO,CAACV,WAAW,EAAEC,QAAQ,KAAK;IAChC,OAAO;MACLC,IAAI,EAAE,QAAQ,GAAGD,QAAQ;MACzBE,OAAO,EAAE;QACPC,KAAK,EAAElE;MACT,CAAC;MACDE,KAAK,EAAEV,MAAM,CAACiF,WAAW,CACvBD,SAAS,CAACE,GAAG,CACVC,QAAQ,IAAK;QACZ,OAAQ,OAAOA,QAAQ,KAAK,QAAQ,GAClC,CACEA,QAAQ,EAAEb,WAAW,CACtB,GACD,CACEa,QAAQ,CAAC,CAAC,CAAC,EAAE,CACXb,WAAW,EAAE,GAAGa,QAAQ,CAACC,KAAK,CAAC,CAAC,CAAC,CAClC,CACF;MACL,CACF,CACF;IACF,CAAC;EACH,CAAC;AACH,CAAC;AAED,MAAMC,aAAa,GAAG,CACpB,wBAAwB,EACxB,yBAAyB,EACzB,mCAAmC,EACnC,uBAAuB,EACvB,CACE,qBAAqB,EAAE;EACrBC,UAAU,EAAE;AACd,CAAC,CACF,CACF;AAED,MAAMC,+BAA+B,GAAGR,8BAA8B,CAACM,aAAa,CAAC;AAErF,MAAMG,qCAAqC,GAAGT,8BAA8B,CAACM,aAAa,CAAC;AAE3F,MAAMI,YAAY,GAAG,CACnB,oBAAoB,EACpB,yBAAyB,EACzB,4BAA4B,EAC5B,oBAAoB,EACpB,uBAAuB,EACvB,4BAA4B,EAC5B,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,6BAA6B,EAC7B,6BAA6B,EAC7B,4BAA4B,EAC5B,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,EAChB,0BAA0B,EAC1B,mBAAmB,CACpB;AAED,MAAMC,8BAA8B,GAAGX,8BAA8B,CAACU,YAAY,CAAC;AAEnF,MAAME,oCAAoC,GAAGZ,8BAA8B,CAACU,YAAY,CAAC;AAEzF,MAAMG,iBAAiB,GAAG,CACxB,uBAAuB,EACvB,qBAAqB,EACrB,yBAAyB,EACzB,qBAAqB,EACrB,iCAAiC,EACjC,0BAA0B,EAC1B,wBAAwB,EACxB,oCAAoC,EACpC,6BAA6B,EAC7B,uBAAuB,EACvB,mCAAmC,EACnC,2BAA2B,EAC3B,sBAAsB,EACtB,2BAA2B,CAC5B;AAED,MAAMC,mCAAmC,GAAGd,8BAA8B,CAACa,iBAAiB,CAAC;AAE7F,MAAME,yCAAyC,GAAGf,8BAA8B,CAAC,CAC/E,GAAGa,iBAAiB,EACpB,0BAA0B,EAC1B,6BAA6B,EAC7B,4BAA4B,EAC5B,wBAAwB,CACzB,CAAC;AAEF,MAAMG,cAAc,GAAG,CACrB,uBAAuB,EACvB,4BAA4B,EAC5B,0BAA0B,EAC1B,wBAAwB,EACxB,0BAA0B,EAC1B,+BAA+B,EAC/B,CACE,+CAA+C,EAAE,OAAO,CACzD,EACD,iBAAiB,CAClB;AAED,MAAMC,gCAAgC,GAAGjB,8BAA8B,CAACgB,cAAc,CAAC;AAEvF,MAAME,sCAAsC,GAAGlB,8BAA8B,CAACgB,cAAc,CAAC;;AAE7F;AACA,IAAI,CAACvF,KAAK,CAACC,OAAO,EAAE;EAClB,MAAM,IAAIyF,KAAK,CAAC,kBAAkB,CAAC;AACrC;AAEA1F,KAAK,CAACC,OAAO,CAAC0F,WAAW,GAAG9B,wBAAwB,CAAC,MAAM,CAAC;AAC5D7D,KAAK,CAACC,OAAO,CAAC,mBAAmB,CAAC,GAAG4D,wBAAwB,CAAC,OAAO,CAAC;AACtE7D,KAAK,CAACC,OAAO,CAAC,wBAAwB,CAAC,GAAGkE,kCAAkC,CAAC,MAAM,CAAC;AACpFnE,KAAK,CAACC,OAAO,CAAC,8BAA8B,CAAC,GAAGkE,kCAAkC,CAAC,OAAO,CAAC;AAC3FnE,KAAK,CAACC,OAAO,CAAC,+BAA+B,CAAC,GAAGqE,wCAAwC,CAAC,MAAM,CAAC;AACjGtE,KAAK,CAACC,OAAO,CAAC,qCAAqC,CAAC,GAAGqE,wCAAwC,CAAC,OAAO,CAAC;AAExGtE,KAAK,CAACC,OAAO,CAAC,kBAAkB,CAAC,GAAG4D,wBAAwB,CAAC,MAAM,EAAE,kBAAkB,CAAC;AACxF7D,KAAK,CAACC,OAAO,CAAC,wBAAwB,CAAC,GAAG4D,wBAAwB,CAAC,OAAO,EAAE,wBAAwB,CAAC;AACrG7D,KAAK,CAACC,OAAO,CAAC,6BAA6B,CAAC,GAAGkE,kCAAkC,CAAC,MAAM,EAAE,6BAA6B,CAAC;AACxHnE,KAAK,CAACC,OAAO,CAAC,mCAAmC,CAAC,GAAGkE,kCAAkC,CAAC,OAAO,EAAE,mCAAmC,CAAC;AACrInE,KAAK,CAACC,OAAO,CAAC,oCAAoC,CAAC,GAAGqE,wCAAwC,CAAC,MAAM,EAAE,oCAAoC,CAAC;AAC5ItE,KAAK,CAACC,OAAO,CAAC,0CAA0C,CAAC,GAAGqE,wCAAwC,CAAC,OAAO,EAAE,0CAA0C,CAAC;AAEzJtE,KAAK,CAACC,OAAO,CAAC,0BAA0B,CAAC,GAAG8E,+BAA+B,CAAC,MAAM,EAAE,0BAA0B,CAAC;AAC/G/E,KAAK,CAACC,OAAO,CAAC,gCAAgC,CAAC,GAAG8E,+BAA+B,CAAC,OAAO,EAAE,gCAAgC,CAAC;AAC5H/E,KAAK,CAACC,OAAO,CAAC,iCAAiC,CAAC,GAAG+E,qCAAqC,CAAC,MAAM,EAAE,iCAAiC,CAAC;AACnIhF,KAAK,CAACC,OAAO,CAAC,uCAAuC,CAAC,GAAG+E,qCAAqC,CAAC,OAAO,EAAE,uCAAuC,CAAC;AAChJhF,KAAK,CAACC,OAAO,CAAC,yBAAyB,CAAC,GAAGiF,8BAA8B,CAAC,MAAM,EAAE,yBAAyB,CAAC;AAC5GlF,KAAK,CAACC,OAAO,CAAC,+BAA+B,CAAC,GAAGiF,8BAA8B,CAAC,OAAO,EAAE,+BAA+B,CAAC;AACzHlF,KAAK,CAACC,OAAO,CAAC,gCAAgC,CAAC,GAAGkF,oCAAoC,CAAC,MAAM,EAAE,gCAAgC,CAAC;AAChInF,KAAK,CAACC,OAAO,CAAC,sCAAsC,CAAC,GAAGkF,oCAAoC,CAAC,OAAO,EAAE,sCAAsC,CAAC;AAC7InF,KAAK,CAACC,OAAO,CAAC,8BAA8B,CAAC,GAAGoF,mCAAmC,CAAC,MAAM,EAAE,8BAA8B,CAAC;AAC3HrF,KAAK,CAACC,OAAO,CAAC,oCAAoC,CAAC,GAAGoF,mCAAmC,CAAC,OAAO,EAAE,oCAAoC,CAAC;AACxIrF,KAAK,CAACC,OAAO,CAAC,qCAAqC,CAAC,GAAGqF,yCAAyC,CAAC,MAAM,EAAE,qCAAqC,CAAC;AAC/ItF,KAAK,CAACC,OAAO,CAAC,2CAA2C,CAAC,GAAGqF,yCAAyC,CAAC,OAAO,EAAE,2CAA2C,CAAC;AAC5JtF,KAAK,CAACC,OAAO,CAAC,2BAA2B,CAAC,GAAGuF,gCAAgC,CAAC,MAAM,EAAE,2BAA2B,CAAC;AAClHxF,KAAK,CAACC,OAAO,CAAC,iCAAiC,CAAC,GAAGuF,gCAAgC,CAAC,OAAO,EAAE,iCAAiC,CAAC;AAC/HxF,KAAK,CAACC,OAAO,CAAC,kCAAkC,CAAC,GAAGwF,sCAAsC,CAAC,MAAM,EAAE,kCAAkC,CAAC;AACtIzF,KAAK,CAACC,OAAO,CAAC,wCAAwC,CAAC,GAAGwF,sCAAsC,CAAC,OAAO,EAAE,wCAAwC,CAAC;AAEnJzF,KAAK,CAACC,OAAO,CAAC2F,QAAQ,GAAG,+CAAiD,CACxE;EACEC,KAAK,EAAE,CACL,SAAS,CACV;EACD7B,IAAI,EAAE,0BAA0B;EAChCC,OAAO,EAAE;IACP2B,QAAQ,EAAE,IAAAE,gDAAuB,EAAC;EACpC,CAAC;EACDC,SAAS,EAAE;AACb,CAAC,EACD;EACEF,KAAK,EAAE,CACL,cAAc,CACf;EACD7B,IAAI,EAAE,sBAAsB;EAC5B9D,KAAK,EAAE;IACL;IACA,UAAU,EAAE,CAAC;IAEb;IACA,sBAAsB,EAAE,CAAC;IAEzB;IACA,oBAAoB,EAAE,CAAC;IAEvB,6BAA6B,EAAE,CAAC;IAEhC;IACA,qBAAqB,EAAE,CAAC;IAExB;IACA,YAAY,EAAE,CAAC;IAEf;IACA;IACA,yBAAyB,EAAE,CAAC;IAE5B;IACA,UAAU,EAAE,CAAC;IAEb;IACA,gBAAgB,EAAE,CAAC;IAEnB;IACA,wBAAwB,EAAE,CAAC;IAC3B,yBAAyB,EAAE,CAAC;IAE5B;IACA,eAAe,EAAE;EACnB;AACF,CAAC,CACD;AAEFF,KAAK,CAACC,OAAO,CAAC,qBAAqB,CAAC,GAAG,+CAAiD,CACtF;EACE4F,KAAK,EAAE,CACL,SAAS,CACV;EACD7B,IAAI,EAAE,qCAAqC;EAC3CC,OAAO,EAAE;IACP2B,QAAQ,EAAE,IAAAE,gDAAuB,EAAC;MAChCE,aAAa,EAAE,IAAI;MACnBC,WAAW,EAAE,IAAI;MACjBC,eAAe,EAAE;IACnB,CAAC;EACH,CAAC;EACDH,SAAS,EAAE;AACb,CAAC,EACD;EACEF,KAAK,EAAE,CACL,qBAAqB,EAAE,mBAAmB,EAAE,uBAAuB,CACpE;EACD7B,IAAI,EAAE,iCAAiC;EACvC9D,KAAK,EAAE;IACL,GAAGF,KAAK,CAACC,OAAO,CAAC2F,QAAQ,CAAC,CAAC,CAAC,CAAC1F,KAAK;IAClC,qCAAqC,EAAE,CAAC;IACxC,mBAAmB,EAAE,CAAC;IACtB,QAAQ,EAAE,CAAC;IACX,uBAAuB,EAAE,CAAC;IAC1BiG,MAAM,EAAE,CACN,OAAO,EAAE,QAAQ,CAClB;IACDC,IAAI,EAAE,CACJ,OAAO,EAAE,OAAO,CACjB;IACDC,MAAM,EAAE;EACV;AACF,CAAC,CACD;AAEFrG,KAAK,CAACC,OAAO,CAAC,kCAAkC,CAAC,GAAG,+CAAiD,CACnG;EACE+D,IAAI,EAAE,wCAAwC;EAC9CC,OAAO,EAAE;IACP2B,QAAQ,EAAE,IAAAE,gDAAuB,EAAC;MAChCE,aAAa,EAAE,IAAI;MACnBC,WAAW,EAAE,IAAI;MACjBC,eAAe,EAAE;IACnB,CAAC;EACH;AACF,CAAC,EACD,GAAGlG,KAAK,CAACC,OAAO,CAAC2F,QAAQ,CAAClB,GAAG,CAAE4B,MAAM,IAAK;EACxC,OAAO;IACL,GAAGA,MAAM;IACTrC,OAAO,EAAE,CAAC;EACZ,CAAC;AACH,CAAC,CAAC,EACF,GAAGjE,KAAK,CAACC,OAAO,CAAC,qBAAqB,CAAC,CAACyE,GAAG,CAAE4B,MAAM,IAAK;EACtD,OAAO;IACL,GAAGA,MAAM;IACTrC,OAAO,EAAE,CAAC;EACZ,CAAC;AACH,CAAC,CAAC,CACF;AAAC,IAAAsC,QAAA,GAAAxG,OAAA,CAAA/B,OAAA,GAEYgC,KAAK;AAEpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMkE,KAAK,GAAG,SAAAA,CAAUsC,GAAG,EAAE;EAClC;EACA,IAAIC,YAAY,GAAG;IACjBxC,OAAO,EAAE;MACPC,KAAK,EAAElE;IACT;EACF,CAAC;EAED,IAAIwG,GAAG,EAAE;IACP,IAAIA,GAAG,CAACF,MAAM,EAAE;MACd;MACA,IAAIE,GAAG,CAACF,MAAM,KAAK,WAAW,EAAE;QAC9B,MAAM,IAAII,SAAS,CAAC,yBAAyB,CAAC;MAChD;MAEAD,YAAY,GAAGzG,KAAK,CAACC,OAAO,CAACuG,GAAG,CAACF,MAAM,CAAC;IAC1C;IAEA,IAAIE,GAAG,CAACtG,KAAK,EAAE;MACbuG,YAAY,CAACvG,KAAK,GAAG;QACnB,GAAGuG,YAAY,CAACvG,KAAK;QACrB,GAAGsG,GAAG,CAACtG;MACT,CAAC;IACH;IAEA,IAAIsG,GAAG,CAACvC,OAAO,EAAE;MACfwC,YAAY,CAACxC,OAAO,GAAG;QACrB,GAAGwC,YAAY,CAACxC,OAAO;QACvB,GAAGuC,GAAG,CAACvC;MACT,CAAC;IACH;IAEA,IAAIuC,GAAG,CAACxC,IAAI,EAAE;MACZyC,YAAY,CAACzC,IAAI,GAAGwC,GAAG,CAACxC,IAAI;IAC9B;IAEA,IAAIwC,GAAG,CAACG,QAAQ,EAAE;MAChBF,YAAY,CAACE,QAAQ,GAAGH,GAAG,CAACG,QAAQ;IACtC;IAEA,IAAIH,GAAG,CAACX,KAAK,EAAE;MACbY,YAAY,CAACZ,KAAK,GAAGW,GAAG,CAACX,KAAK;IAChC;IAEA,IAAIW,GAAG,CAACI,OAAO,EAAE;MACfH,YAAY,CAACG,OAAO,GAAGJ,GAAG,CAACI,OAAO;IACpC;IAEA,IAAIJ,GAAG,CAACK,QAAQ,EAAE;MAChBJ,YAAY,CAACI,QAAQ,GAAGL,GAAG,CAACK,QAAQ;IACtC;IAEA,IAAIL,GAAG,CAACM,eAAe,EAAE;MACvBL,YAAY,CAACK,eAAe,GAAGN,GAAG,CAACM,eAAe;IACpD;IAEA,IAAIN,GAAG,CAACO,aAAa,EAAE;MACrBN,YAAY,CAACM,aAAa,GAAGP,GAAG,CAACO,aAAa;IAChD;IAEA,IAAIP,GAAG,CAACT,SAAS,EAAE;MACjBU,YAAY,CAACV,SAAS,GAAGS,GAAG,CAACT,SAAS;IACxC;IAEA,IAAIS,GAAG,CAACQ,oBAAoB,EAAE;MAC5B,IAAI,CAACP,YAAY,CAACxC,OAAO,EAAEC,KAAK,EAAEhE,KAAK,EAAE;QACvC,MAAM,IAAIwF,KAAK,CAAC,kDAAkD,CAAC;MACrE;MAEA,IAAIc,GAAG,CAACQ,oBAAoB,CAACC,MAAM,EAAE;QACnC,KAAK,MAAM,CACT/I,WAAW,EACX;UACEC,QAAQ;UACRC,WAAW;UACXC;QACF,CAAC,CACF,IAAImB,MAAM,CAAC0H,OAAO,CAACV,GAAG,CAACQ,oBAAoB,CAACC,MAAM,CAAC,EAAE;UACpDR,YAAY,CAACxC,OAAO,CAACC,KAAK,CAAChE,KAAK,CAAC,UAAUhC,WAAW,EAAE,CAAC,GACvDD,yBAAyB,CAAC;YACxBC,WAAW;YACXC,QAAQ;YACRC,WAAW;YACXC;UACF,CAAC,CAAC;QACN;MACF;IACF;EACF;EAEAoI,YAAY,CAACU,QAAQ,GAAG;IACtBjD,KAAK,EAAEsC,GAAG,EAAEY,aAAa,KAAK,KAAK,GACjCZ,GAAG,CAACW,QAAQ,GACZ,IAAAE,sBAAK,EACH,CAAC,CAAC,EACFb,GAAG,EAAEW,QAAQ,IAAI,CAAC,CAAC,EACnBX,GAAG,EAAEF,MAAM,EAAEgB,QAAQ,CAAC,aAAa,CAAC,GAClC;MACE;MACA;MACAC,cAAc,EAAE;QACdC,IAAI,EAAE;UACJC,QAAQ,EAAE,CACR,MAAM;QAEV;MACF;IACF,CAAC,GACD,CAAC,CACL;EACJ,CAAC;EAED,OAAOhB,YAAY;AACrB,CAAC;AAAC1G,OAAA,CAAAmE,KAAA,GAAAA,KAAA","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["_objectDeepMerge","require","_getJsdocProcessorPlugin","_iterateJsdoc","_interopRequireDefault","_checkAccess","_checkAlignment","_checkExamples","_checkIndentation","_checkLineAlignment","_checkParamNames","_checkPropertyNames","_checkSyntax","_checkTagNames","_checkTemplateNames","_checkTypes","_checkValues","_convertToJsdocComments","_emptyTags","_implementsOnClasses","_importsAsDependencies","_informativeDocs","_linesBeforeBlock","_matchDescription","_matchName","_multilineBlocks","_noBadBlocks","_noBlankBlockDescriptions","_noBlankBlocks","_noDefaults","_noMissingSyntax","_noMultiAsterisks","_noRestrictedSyntax","_noTypes","_noUndefinedTypes","_requireAsteriskPrefix","_requireDescription","_requireDescriptionCompleteSentence","_requireExample","_requireFileOverview","_requireHyphenBeforeParamDescription","_requireJsdoc","_requireParam","_requireParamDescription","_requireParamName","_requireParamType","_requireProperty","_requirePropertyDescription","_requirePropertyName","_requirePropertyType","_requireReturns","_requireReturnsCheck","_requireReturnsDescription","_requireReturnsType","_requireTemplate","_requireThrows","_requireYields","_requireYieldsCheck","_sortTags","_tagLines","_textEscaping","_typeFormatting","_validTypes","e","__esModule","default","buildForbidRuleDefinition","contextName","contexts","description","url","iterateJsdoc","info","comment","report","utils","contextStr","foundContext","findContext","message","context","contextSelected","meta","docs","fixable","schema","type","modifyContext","propertyDescriptors","Object","getOwnPropertyDescriptors","create","getPrototypeOf","options","value","nonGlobalSettings","exports","index","configs","rules","checkAccess","checkAlignment","checkExamples","checkIndentation","checkLineAlignment","checkParamNames","checkPropertyNames","checkSyntax","checkTagNames","checkTemplateNames","checkTypes","checkValues","convertToJsdocComments","emptyTags","implementsOnClasses","importsAsDependencies","informativeDocs","linesBeforeBlock","matchDescription","matchName","multilineBlocks","noBadBlocks","noBlankBlockDescriptions","noBlankBlocks","noDefaults","noMissingSyntax","noMultiAsterisks","noRestrictedSyntax","noTypes","noUndefinedTypes","requireAsteriskPrefix","requireDescription","requireDescriptionCompleteSentence","requireExample","requireFileOverview","requireHyphenBeforeParamDescription","requireJsdoc","requireParam","requireParamDescription","requireParamName","requireParamType","requireProperty","requirePropertyDescription","requirePropertyName","requirePropertyType","requireReturns","requireReturnsCheck","requireReturnsDescription","requireReturnsType","requireTemplate","requireThrows","requireYields","requireYieldsCheck","sortTags","tagLines","textEscaping","typeFormatting","validTypes","createRecommendedRuleset","warnOrError","flatName","name","plugins","jsdoc","createRecommendedTypeScriptRuleset","ruleset","typed","createRecommendedTypeScriptFlavorRuleset","createStandaloneRulesetFactory","ruleNames","fromEntries","map","ruleName","slice","contentsRules","escapeHTML","createContentsTypescriptRuleset","createContentsTypescriptFlavorRuleset","logicalRules","createLogicalTypescriptRuleset","createLogicalTypescriptFlavorRuleset","requirementsRules","createRequirementsTypeScriptRuleset","createRequirementsTypeScriptFlavorRuleset","stylisticRules","createStylisticTypeScriptRuleset","createStylisticTypeScriptFlavorRuleset","Error","recommended","examples","files","getJsdocProcessorPlugin","processor","checkDefaults","checkParams","checkProperties","quotes","semi","strict","config","_default","cfg","outputConfig","TypeError","basePath","ignores","language","languageOptions","linterOptions","extraRuleDefinitions","forbid","entries","settings","mergeSettings","merge","includes","structuredTags","next","required"],"sources":["../src/index.js"],"sourcesContent":["/* AUTO-GENERATED BY build SCRIPT */\n/* eslint-disable perfectionist/sort-imports -- For auto-generate; Do not remove */\nimport {\n merge,\n} from 'object-deep-merge';\n\nimport {\n getJsdocProcessorPlugin,\n} from './getJsdocProcessorPlugin.js';\nimport iterateJsdoc from './iterateJsdoc.js';\nimport checkAccess from './rules/checkAccess.js';\nimport checkAlignment from './rules/checkAlignment.js';\nimport checkExamples from './rules/checkExamples.js';\nimport checkIndentation from './rules/checkIndentation.js';\nimport checkLineAlignment from './rules/checkLineAlignment.js';\nimport checkParamNames from './rules/checkParamNames.js';\nimport checkPropertyNames from './rules/checkPropertyNames.js';\nimport checkSyntax from './rules/checkSyntax.js';\nimport checkTagNames from './rules/checkTagNames.js';\nimport checkTemplateNames from './rules/checkTemplateNames.js';\nimport checkTypes from './rules/checkTypes.js';\nimport checkValues from './rules/checkValues.js';\nimport convertToJsdocComments from './rules/convertToJsdocComments.js';\nimport emptyTags from './rules/emptyTags.js';\nimport implementsOnClasses from './rules/implementsOnClasses.js';\nimport importsAsDependencies from './rules/importsAsDependencies.js';\nimport informativeDocs from './rules/informativeDocs.js';\nimport linesBeforeBlock from './rules/linesBeforeBlock.js';\nimport matchDescription from './rules/matchDescription.js';\nimport matchName from './rules/matchName.js';\nimport multilineBlocks from './rules/multilineBlocks.js';\nimport noBadBlocks from './rules/noBadBlocks.js';\nimport noBlankBlockDescriptions from './rules/noBlankBlockDescriptions.js';\nimport noBlankBlocks from './rules/noBlankBlocks.js';\nimport noDefaults from './rules/noDefaults.js';\nimport noMissingSyntax from './rules/noMissingSyntax.js';\nimport noMultiAsterisks from './rules/noMultiAsterisks.js';\nimport noRestrictedSyntax from './rules/noRestrictedSyntax.js';\nimport noTypes from './rules/noTypes.js';\nimport noUndefinedTypes from './rules/noUndefinedTypes.js';\nimport requireAsteriskPrefix from './rules/requireAsteriskPrefix.js';\nimport requireDescription from './rules/requireDescription.js';\nimport requireDescriptionCompleteSentence from './rules/requireDescriptionCompleteSentence.js';\nimport requireExample from './rules/requireExample.js';\nimport requireFileOverview from './rules/requireFileOverview.js';\nimport requireHyphenBeforeParamDescription from './rules/requireHyphenBeforeParamDescription.js';\nimport requireJsdoc from './rules/requireJsdoc.js';\nimport requireParam from './rules/requireParam.js';\nimport requireParamDescription from './rules/requireParamDescription.js';\nimport requireParamName from './rules/requireParamName.js';\nimport requireParamType from './rules/requireParamType.js';\nimport requireProperty from './rules/requireProperty.js';\nimport requirePropertyDescription from './rules/requirePropertyDescription.js';\nimport requirePropertyName from './rules/requirePropertyName.js';\nimport requirePropertyType from './rules/requirePropertyType.js';\nimport requireReturns from './rules/requireReturns.js';\nimport requireReturnsCheck from './rules/requireReturnsCheck.js';\nimport requireReturnsDescription from './rules/requireReturnsDescription.js';\nimport requireReturnsType from './rules/requireReturnsType.js';\nimport requireTemplate from './rules/requireTemplate.js';\nimport requireThrows from './rules/requireThrows.js';\nimport requireYields from './rules/requireYields.js';\nimport requireYieldsCheck from './rules/requireYieldsCheck.js';\nimport sortTags from './rules/sortTags.js';\nimport tagLines from './rules/tagLines.js';\nimport textEscaping from './rules/textEscaping.js';\nimport typeFormatting from './rules/typeFormatting.js';\nimport validTypes from './rules/validTypes.js';\n\n/**\n * @param {{\n * contexts: (string|{\n * comment: string,\n * context: string,\n * message: string\n * })[],\n * description?: string,\n * contextName?: string\n * url?: string,\n * }} cfg\n * @returns {import('@eslint/core').RuleDefinition<\n * import('@eslint/core').RuleDefinitionTypeOptions\n * >}\n */\nexport const buildForbidRuleDefinition = ({\n contextName,\n contexts,\n description,\n url,\n}) => {\n return iterateJsdoc(({\n // context,\n info: {\n comment,\n },\n report,\n utils,\n }) => {\n const {\n contextStr,\n foundContext,\n } = utils.findContext(contexts, comment);\n\n // We are not on the *particular* matching context/comment, so don't assume\n // we need reporting\n if (!foundContext) {\n return;\n }\n\n const message = /** @type {import('./iterateJsdoc.js').ContextObject} */ (\n foundContext\n )?.message ??\n 'Syntax is restricted: {{context}}' +\n (comment ? ' with {{comment}}' : '');\n\n report(message, null, null, comment ? {\n comment,\n context: contextStr,\n } : {\n context: contextStr,\n });\n }, {\n contextSelected: true,\n meta: {\n docs: {\n description: description ?? contextName ?? 'Reports when certain comment structures are present.',\n url: url ?? 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/advanced.md#user-content-advanced-creating-your-own-rules',\n },\n fixable: 'code',\n schema: [],\n type: 'suggestion',\n },\n modifyContext: (context) => {\n // Reproduce context object with our own `contexts`\n const propertyDescriptors = Object.getOwnPropertyDescriptors(context);\n return Object.create(\n Object.getPrototypeOf(context),\n {\n ...propertyDescriptors,\n options: {\n ...propertyDescriptors.options,\n value: [\n {\n contexts,\n },\n ],\n },\n },\n );\n },\n nonGlobalSettings: true,\n });\n};\n\n/* eslint-disable jsdoc/valid-types -- Bug */\n/**\n * @typedef {\"recommended\" | \"stylistic\" | \"contents\" | \"logical\" | \"requirements\"} ConfigGroups\n * @typedef {\"\" | \"-typescript\" | \"-typescript-flavor\"} ConfigVariants\n * @typedef {\"\" | \"-error\"} ErrorLevelVariants\n * @type {import('eslint').ESLint.Plugin & {\n * configs: Record<`flat/${ConfigGroups}${ConfigVariants}${ErrorLevelVariants}`,\n * import('eslint').Linter.Config>\n * }}\n */\nconst index = {};\n/* eslint-enable jsdoc/valid-types -- Bug */\nindex.configs = {};\nindex.rules = {\n 'check-access': checkAccess,\n 'check-alignment': checkAlignment,\n 'check-examples': checkExamples,\n 'check-indentation': checkIndentation,\n 'check-line-alignment': checkLineAlignment,\n 'check-param-names': checkParamNames,\n 'check-property-names': checkPropertyNames,\n 'check-syntax': checkSyntax,\n 'check-tag-names': checkTagNames,\n 'check-template-names': checkTemplateNames,\n 'check-types': checkTypes,\n 'check-values': checkValues,\n 'convert-to-jsdoc-comments': convertToJsdocComments,\n 'empty-tags': emptyTags,\n 'implements-on-classes': implementsOnClasses,\n 'imports-as-dependencies': importsAsDependencies,\n 'informative-docs': informativeDocs,\n 'lines-before-block': linesBeforeBlock,\n 'match-description': matchDescription,\n 'match-name': matchName,\n 'multiline-blocks': multilineBlocks,\n 'no-bad-blocks': noBadBlocks,\n 'no-blank-block-descriptions': noBlankBlockDescriptions,\n 'no-blank-blocks': noBlankBlocks,\n 'no-defaults': noDefaults,\n 'no-missing-syntax': noMissingSyntax,\n 'no-multi-asterisks': noMultiAsterisks,\n 'no-restricted-syntax': noRestrictedSyntax,\n 'no-types': noTypes,\n 'no-undefined-types': noUndefinedTypes,\n 'require-asterisk-prefix': requireAsteriskPrefix,\n 'require-description': requireDescription,\n 'require-description-complete-sentence': requireDescriptionCompleteSentence,\n 'require-example': requireExample,\n 'require-file-overview': requireFileOverview,\n 'require-hyphen-before-param-description': requireHyphenBeforeParamDescription,\n 'require-jsdoc': requireJsdoc,\n 'require-next-type': buildForbidRuleDefinition({\n contexts: [\n {\n comment: 'JsdocBlock:has(JsdocTag[tag=next]:not([parsedType.type]))',\n context: 'any',\n message: '@next should have a type',\n },\n ],\n description: 'Requires a type for @next tags',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-next-type.md#repos-sticky-header',\n }),\n 'require-param': requireParam,\n 'require-param-description': requireParamDescription,\n 'require-param-name': requireParamName,\n 'require-param-type': requireParamType,\n 'require-property': requireProperty,\n 'require-property-description': requirePropertyDescription,\n 'require-property-name': requirePropertyName,\n 'require-property-type': requirePropertyType,\n 'require-returns': requireReturns,\n 'require-returns-check': requireReturnsCheck,\n 'require-returns-description': requireReturnsDescription,\n 'require-returns-type': requireReturnsType,\n 'require-template': requireTemplate,\n 'require-throws': requireThrows,\n 'require-throws-type': buildForbidRuleDefinition({\n contexts: [\n {\n comment: 'JsdocBlock:has(JsdocTag[tag=throws]:not([parsedType.type]))',\n context: 'any',\n message: '@throws should have a type',\n },\n ],\n description: 'Requires a type for @throws tags',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-throws-type.md#repos-sticky-header',\n }),\n 'require-yields': requireYields,\n 'require-yields-check': requireYieldsCheck,\n 'require-yields-type': buildForbidRuleDefinition({\n contexts: [\n {\n comment: 'JsdocBlock:has(JsdocTag[tag=yields]:not([parsedType.type]))',\n context: 'any',\n message: '@yields should have a type',\n },\n ],\n description: 'Requires a type for @yields tags',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-yields-type.md#repos-sticky-header',\n }),\n 'sort-tags': sortTags,\n 'tag-lines': tagLines,\n 'text-escaping': textEscaping,\n 'type-formatting': typeFormatting,\n 'valid-types': validTypes,\n};\n\n/**\n * @param {\"warn\"|\"error\"} warnOrError\n * @param {string} [flatName]\n * @returns {import('eslint').Linter.Config}\n */\nconst createRecommendedRuleset = (warnOrError, flatName) => {\n return {\n ...(flatName ? {\n name: 'jsdoc/' + flatName,\n } : {}),\n // @ts-expect-error ESLint 8 plugins\n plugins:\n flatName ? {\n jsdoc: index,\n } : [\n 'jsdoc',\n ],\n rules: {\n 'jsdoc/check-access': warnOrError,\n 'jsdoc/check-alignment': warnOrError,\n 'jsdoc/check-examples': 'off',\n 'jsdoc/check-indentation': 'off',\n 'jsdoc/check-line-alignment': 'off',\n 'jsdoc/check-param-names': warnOrError,\n 'jsdoc/check-property-names': warnOrError,\n 'jsdoc/check-syntax': 'off',\n 'jsdoc/check-tag-names': warnOrError,\n 'jsdoc/check-template-names': 'off',\n 'jsdoc/check-types': warnOrError,\n 'jsdoc/check-values': warnOrError,\n 'jsdoc/convert-to-jsdoc-comments': 'off',\n 'jsdoc/empty-tags': warnOrError,\n 'jsdoc/implements-on-classes': warnOrError,\n 'jsdoc/imports-as-dependencies': 'off',\n 'jsdoc/informative-docs': 'off',\n 'jsdoc/lines-before-block': 'off',\n 'jsdoc/match-description': 'off',\n 'jsdoc/match-name': 'off',\n 'jsdoc/multiline-blocks': warnOrError,\n 'jsdoc/no-bad-blocks': 'off',\n 'jsdoc/no-blank-block-descriptions': 'off',\n 'jsdoc/no-blank-blocks': 'off',\n 'jsdoc/no-defaults': warnOrError,\n 'jsdoc/no-missing-syntax': 'off',\n 'jsdoc/no-multi-asterisks': warnOrError,\n 'jsdoc/no-restricted-syntax': 'off',\n 'jsdoc/no-types': 'off',\n 'jsdoc/no-undefined-types': warnOrError,\n 'jsdoc/require-asterisk-prefix': 'off',\n 'jsdoc/require-description': 'off',\n 'jsdoc/require-description-complete-sentence': 'off',\n 'jsdoc/require-example': 'off',\n 'jsdoc/require-file-overview': 'off',\n 'jsdoc/require-hyphen-before-param-description': 'off',\n 'jsdoc/require-jsdoc': warnOrError,\n 'jsdoc/require-next-type': warnOrError,\n 'jsdoc/require-param': warnOrError,\n 'jsdoc/require-param-description': warnOrError,\n 'jsdoc/require-param-name': warnOrError,\n 'jsdoc/require-param-type': warnOrError,\n 'jsdoc/require-property': warnOrError,\n 'jsdoc/require-property-description': warnOrError,\n 'jsdoc/require-property-name': warnOrError,\n 'jsdoc/require-property-type': warnOrError,\n 'jsdoc/require-returns': warnOrError,\n 'jsdoc/require-returns-check': warnOrError,\n 'jsdoc/require-returns-description': warnOrError,\n 'jsdoc/require-returns-type': warnOrError,\n 'jsdoc/require-template': 'off',\n 'jsdoc/require-throws': 'off',\n 'jsdoc/require-throws-type': warnOrError,\n 'jsdoc/require-yields': warnOrError,\n 'jsdoc/require-yields-check': warnOrError,\n 'jsdoc/require-yields-type': warnOrError,\n 'jsdoc/sort-tags': 'off',\n 'jsdoc/tag-lines': warnOrError,\n 'jsdoc/text-escaping': 'off',\n 'jsdoc/type-formatting': 'off',\n 'jsdoc/valid-types': warnOrError,\n },\n };\n};\n\n/**\n * @param {\"warn\"|\"error\"} warnOrError\n * @param {string} [flatName]\n * @returns {import('eslint').Linter.Config}\n */\nconst createRecommendedTypeScriptRuleset = (warnOrError, flatName) => {\n const ruleset = createRecommendedRuleset(warnOrError, flatName);\n\n return {\n ...ruleset,\n rules: {\n ...ruleset.rules,\n /* eslint-disable @stylistic/indent -- Extra indent to avoid use by auto-rule-editing */\n 'jsdoc/check-tag-names': [\n warnOrError, {\n typed: true,\n },\n ],\n 'jsdoc/no-types': warnOrError,\n 'jsdoc/no-undefined-types': 'off',\n 'jsdoc/require-param-type': 'off',\n 'jsdoc/require-property-type': 'off',\n 'jsdoc/require-returns-type': 'off',\n /* eslint-enable @stylistic/indent */\n },\n };\n};\n\n/**\n * @param {\"warn\"|\"error\"} warnOrError\n * @param {string} [flatName]\n * @returns {import('eslint').Linter.Config}\n */\nconst createRecommendedTypeScriptFlavorRuleset = (warnOrError, flatName) => {\n const ruleset = createRecommendedRuleset(warnOrError, flatName);\n\n return {\n ...ruleset,\n rules: {\n ...ruleset.rules,\n /* eslint-disable @stylistic/indent -- Extra indent to avoid use by auto-rule-editing */\n 'jsdoc/no-undefined-types': 'off',\n /* eslint-enable @stylistic/indent */\n },\n };\n};\n\n/**\n * @param {(string | unknown[])[]} ruleNames\n */\nconst createStandaloneRulesetFactory = (ruleNames) => {\n /**\n * @param {\"warn\"|\"error\"} warnOrError\n * @param {string} [flatName]\n * @returns {import('eslint').Linter.Config}\n */\n return (warnOrError, flatName) => {\n return {\n name: 'jsdoc/' + flatName,\n plugins: {\n jsdoc: index,\n },\n rules: Object.fromEntries(\n ruleNames.map(\n (ruleName) => {\n return (typeof ruleName === 'string' ?\n [\n ruleName, warnOrError,\n ] :\n [\n ruleName[0], [\n warnOrError, ...ruleName.slice(1),\n ],\n ]);\n },\n ),\n ),\n };\n };\n};\n\nconst contentsRules = [\n 'jsdoc/informative-docs',\n 'jsdoc/match-description',\n 'jsdoc/no-blank-block-descriptions',\n 'jsdoc/no-blank-blocks',\n [\n 'jsdoc/text-escaping', {\n escapeHTML: true,\n },\n ],\n];\n\nconst createContentsTypescriptRuleset = createStandaloneRulesetFactory(contentsRules);\n\nconst createContentsTypescriptFlavorRuleset = createStandaloneRulesetFactory(contentsRules);\n\nconst logicalRules = [\n 'jsdoc/check-access',\n 'jsdoc/check-param-names',\n 'jsdoc/check-property-names',\n 'jsdoc/check-syntax',\n 'jsdoc/check-tag-names',\n 'jsdoc/check-template-names',\n 'jsdoc/check-types',\n 'jsdoc/check-values',\n 'jsdoc/empty-tags',\n 'jsdoc/implements-on-classes',\n 'jsdoc/require-returns-check',\n 'jsdoc/require-yields-check',\n 'jsdoc/no-bad-blocks',\n 'jsdoc/no-defaults',\n 'jsdoc/no-types',\n 'jsdoc/no-undefined-types',\n 'jsdoc/valid-types',\n];\n\nconst createLogicalTypescriptRuleset = createStandaloneRulesetFactory(logicalRules);\n\nconst createLogicalTypescriptFlavorRuleset = createStandaloneRulesetFactory(logicalRules);\n\nconst requirementsRules = [\n 'jsdoc/require-example',\n 'jsdoc/require-jsdoc',\n 'jsdoc/require-next-type',\n 'jsdoc/require-param',\n 'jsdoc/require-param-description',\n 'jsdoc/require-param-name',\n 'jsdoc/require-property',\n 'jsdoc/require-property-description',\n 'jsdoc/require-property-name',\n 'jsdoc/require-returns',\n 'jsdoc/require-returns-description',\n 'jsdoc/require-throws-type',\n 'jsdoc/require-yields',\n 'jsdoc/require-yields-type',\n];\n\nconst createRequirementsTypeScriptRuleset = createStandaloneRulesetFactory(requirementsRules);\n\nconst createRequirementsTypeScriptFlavorRuleset = createStandaloneRulesetFactory([\n ...requirementsRules,\n 'jsdoc/require-param-type',\n 'jsdoc/require-property-type',\n 'jsdoc/require-returns-type',\n 'jsdoc/require-template',\n]);\n\nconst stylisticRules = [\n 'jsdoc/check-alignment',\n 'jsdoc/check-line-alignment',\n 'jsdoc/lines-before-block',\n 'jsdoc/multiline-blocks',\n 'jsdoc/no-multi-asterisks',\n 'jsdoc/require-asterisk-prefix',\n [\n 'jsdoc/require-hyphen-before-param-description', 'never',\n ],\n 'jsdoc/tag-lines',\n];\n\nconst createStylisticTypeScriptRuleset = createStandaloneRulesetFactory(stylisticRules);\n\nconst createStylisticTypeScriptFlavorRuleset = createStandaloneRulesetFactory(stylisticRules);\n\n/* c8 ignore next 3 -- TS */\nif (!index.configs) {\n throw new Error('TypeScript guard');\n}\n\nindex.configs.recommended = createRecommendedRuleset('warn');\nindex.configs['recommended-error'] = createRecommendedRuleset('error');\nindex.configs['recommended-typescript'] = createRecommendedTypeScriptRuleset('warn');\nindex.configs['recommended-typescript-error'] = createRecommendedTypeScriptRuleset('error');\nindex.configs['recommended-typescript-flavor'] = createRecommendedTypeScriptFlavorRuleset('warn');\nindex.configs['recommended-typescript-flavor-error'] = createRecommendedTypeScriptFlavorRuleset('error');\n\nindex.configs['flat/recommended'] = createRecommendedRuleset('warn', 'flat/recommended');\nindex.configs['flat/recommended-error'] = createRecommendedRuleset('error', 'flat/recommended-error');\nindex.configs['flat/recommended-typescript'] = createRecommendedTypeScriptRuleset('warn', 'flat/recommended-typescript');\nindex.configs['flat/recommended-typescript-error'] = createRecommendedTypeScriptRuleset('error', 'flat/recommended-typescript-error');\nindex.configs['flat/recommended-typescript-flavor'] = createRecommendedTypeScriptFlavorRuleset('warn', 'flat/recommended-typescript-flavor');\nindex.configs['flat/recommended-typescript-flavor-error'] = createRecommendedTypeScriptFlavorRuleset('error', 'flat/recommended-typescript-flavor-error');\n\nindex.configs['flat/contents-typescript'] = createContentsTypescriptRuleset('warn', 'flat/contents-typescript');\nindex.configs['flat/contents-typescript-error'] = createContentsTypescriptRuleset('error', 'flat/contents-typescript-error');\nindex.configs['flat/contents-typescript-flavor'] = createContentsTypescriptFlavorRuleset('warn', 'flat/contents-typescript-flavor');\nindex.configs['flat/contents-typescript-flavor-error'] = createContentsTypescriptFlavorRuleset('error', 'flat/contents-typescript-error-flavor');\nindex.configs['flat/logical-typescript'] = createLogicalTypescriptRuleset('warn', 'flat/logical-typescript');\nindex.configs['flat/logical-typescript-error'] = createLogicalTypescriptRuleset('error', 'flat/logical-typescript-error');\nindex.configs['flat/logical-typescript-flavor'] = createLogicalTypescriptFlavorRuleset('warn', 'flat/logical-typescript-flavor');\nindex.configs['flat/logical-typescript-flavor-error'] = createLogicalTypescriptFlavorRuleset('error', 'flat/logical-typescript-error-flavor');\nindex.configs['flat/requirements-typescript'] = createRequirementsTypeScriptRuleset('warn', 'flat/requirements-typescript');\nindex.configs['flat/requirements-typescript-error'] = createRequirementsTypeScriptRuleset('error', 'flat/requirements-typescript-error');\nindex.configs['flat/requirements-typescript-flavor'] = createRequirementsTypeScriptFlavorRuleset('warn', 'flat/requirements-typescript-flavor');\nindex.configs['flat/requirements-typescript-flavor-error'] = createRequirementsTypeScriptFlavorRuleset('error', 'flat/requirements-typescript-error-flavor');\nindex.configs['flat/stylistic-typescript'] = createStylisticTypeScriptRuleset('warn', 'flat/stylistic-typescript');\nindex.configs['flat/stylistic-typescript-error'] = createStylisticTypeScriptRuleset('error', 'flat/stylistic-typescript-error');\nindex.configs['flat/stylistic-typescript-flavor'] = createStylisticTypeScriptFlavorRuleset('warn', 'flat/stylistic-typescript-flavor');\nindex.configs['flat/stylistic-typescript-flavor-error'] = createStylisticTypeScriptFlavorRuleset('error', 'flat/stylistic-typescript-error-flavor');\n\nindex.configs.examples = /** @type {import('eslint').Linter.Config[]} */ ([\n {\n files: [\n '**/*.js',\n ],\n name: 'jsdoc/examples/processor',\n plugins: {\n examples: getJsdocProcessorPlugin(),\n },\n processor: 'examples/examples',\n },\n {\n files: [\n '**/*.md/*.js',\n ],\n name: 'jsdoc/examples/rules',\n rules: {\n // \"always\" newline rule at end unlikely in sample code\n '@stylistic/eol-last': 0,\n // Often wish to start `@example` code after newline; also may use\n // empty lines for spacing\n '@stylistic/no-multiple-empty-lines': 0,\n\n // Can generally look nicer to pad a little even if code imposes more stringency\n '@stylistic/padded-blocks': 0,\n\n // \"always\" newline rule at end unlikely in sample code\n 'eol-last': 0,\n\n // Wouldn't generally expect example paths to resolve relative to JS file\n 'import/no-unresolved': 0,\n\n // Snippets likely too short to always include import/export info\n 'import/unambiguous': 0,\n\n 'jsdoc/require-file-overview': 0,\n\n // The end of a multiline comment would end the comment the example is in.\n 'jsdoc/require-jsdoc': 0,\n\n // See import/no-unresolved\n 'n/no-missing-import': 0,\n\n 'n/no-missing-require': 0,\n\n // Unlikely to have inadvertent debugging within examples\n 'no-console': 0,\n\n // Often wish to start `@example` code after newline; also may use\n // empty lines for spacing\n 'no-multiple-empty-lines': 0,\n\n // Many variables in examples will be `undefined`\n 'no-undef': 0,\n // Common to define variables for clarity without always using them\n 'no-unused-vars': 0,\n\n // See import/no-unresolved\n 'node/no-missing-import': 0,\n 'node/no-missing-require': 0,\n\n // Can generally look nicer to pad a little even if code imposes more stringency\n 'padded-blocks': 0,\n },\n },\n]);\n\nindex.configs['default-expressions'] = /** @type {import('eslint').Linter.Config[]} */ ([\n {\n files: [\n '**/*.js',\n ],\n name: 'jsdoc/default-expressions/processor',\n plugins: {\n examples: getJsdocProcessorPlugin({\n checkDefaults: true,\n checkParams: true,\n checkProperties: true,\n }),\n },\n processor: 'examples/examples',\n },\n {\n files: [\n '**/*.jsdoc-defaults', '**/*.jsdoc-params', '**/*.jsdoc-properties',\n ],\n name: 'jsdoc/default-expressions/rules',\n rules: {\n ...index.configs.examples[1].rules,\n '@stylistic/quotes': [\n 'error', 'double',\n ],\n '@stylistic/semi': [\n 'error', 'never',\n ],\n '@typescript-eslint/no-unused-expressions': 0,\n 'chai-friendly/no-unused-expressions': 0,\n 'no-empty-function': 0,\n 'no-new': 0,\n 'no-unused-expressions': 0,\n quotes: [\n 'error', 'double',\n ],\n semi: [\n 'error', 'never',\n ],\n strict: 0,\n },\n },\n]);\n\nindex.configs['examples-and-default-expressions'] = /** @type {import('eslint').Linter.Config[]} */ ([\n {\n name: 'jsdoc/examples-and-default-expressions',\n plugins: {\n examples: getJsdocProcessorPlugin({\n checkDefaults: true,\n checkParams: true,\n checkProperties: true,\n }),\n },\n },\n ...index.configs.examples.map((config) => {\n return {\n ...config,\n plugins: {},\n };\n }),\n ...index.configs['default-expressions'].map((config) => {\n return {\n ...config,\n plugins: {},\n };\n }),\n]);\n\nexport default index;\n\n/* eslint-disable jsdoc/valid-types -- Bug */\n/**\n * @type {((\n * cfg?: import('eslint').Linter.Config & {\n * config?: `flat/${ConfigGroups}${ConfigVariants}${ErrorLevelVariants}`,\n * mergeSettings?: boolean,\n * settings?: Partial<import('./iterateJsdoc.js').Settings>,\n * rules?: {[key in keyof import('./rules.d.ts').Rules]?: import('eslint').Linter.RuleEntry<import('./rules.d.ts').Rules[key]>},\n * extraRuleDefinitions?: {\n * forbid: {\n * [contextName: string]: {\n * description?: string,\n * url?: string,\n * contexts: (string|{\n * message: string,\n * context: string,\n * comment: string\n * })[]\n * }\n * }\n * }\n * }\n * ) => import('eslint').Linter.Config)}\n */\n/* eslint-enable jsdoc/valid-types -- Bug */\nexport const jsdoc = function (cfg) {\n /** @type {import('eslint').Linter.Config} */\n let outputConfig = {\n plugins: {\n jsdoc: index,\n },\n };\n\n if (cfg) {\n if (cfg.config) {\n // @ts-expect-error Security check\n if (cfg.config === '__proto__') {\n throw new TypeError('Disallowed config value');\n }\n\n outputConfig = index.configs[cfg.config];\n }\n\n if (cfg.rules) {\n outputConfig.rules = {\n ...outputConfig.rules,\n ...cfg.rules,\n };\n }\n\n if (cfg.plugins) {\n outputConfig.plugins = {\n ...outputConfig.plugins,\n ...cfg.plugins,\n };\n }\n\n if (cfg.name) {\n outputConfig.name = cfg.name;\n }\n\n if (cfg.basePath) {\n outputConfig.basePath = cfg.basePath;\n }\n\n if (cfg.files) {\n outputConfig.files = cfg.files;\n }\n\n if (cfg.ignores) {\n outputConfig.ignores = cfg.ignores;\n }\n\n if (cfg.language) {\n outputConfig.language = cfg.language;\n }\n\n if (cfg.languageOptions) {\n outputConfig.languageOptions = cfg.languageOptions;\n }\n\n if (cfg.linterOptions) {\n outputConfig.linterOptions = cfg.linterOptions;\n }\n\n if (cfg.processor) {\n outputConfig.processor = cfg.processor;\n }\n\n if (cfg.extraRuleDefinitions) {\n if (!outputConfig.plugins?.jsdoc?.rules) {\n throw new Error('JSDoc plugin required for `extraRuleDefinitions`');\n }\n\n if (cfg.extraRuleDefinitions.forbid) {\n for (const [\n contextName,\n {\n contexts,\n description,\n url,\n },\n ] of Object.entries(cfg.extraRuleDefinitions.forbid)) {\n outputConfig.plugins.jsdoc.rules[`forbid-${contextName}`] =\n buildForbidRuleDefinition({\n contextName,\n contexts,\n description,\n url,\n });\n }\n }\n }\n }\n\n outputConfig.settings = {\n jsdoc: cfg?.mergeSettings === false ?\n cfg.settings :\n merge(\n {},\n cfg?.settings ?? {},\n cfg?.config?.includes('recommended') ?\n {\n // We may need to drop these for \"typescript\" (non-\"flavor\") configs,\n // if support is later added: https://www.typescriptlang.org/docs/handbook/jsdoc-supported-types.html\n structuredTags: {\n next: {\n required: [\n 'type',\n ],\n },\n },\n } :\n {},\n ),\n };\n\n return outputConfig;\n};\n\nexport {\n getJsdocProcessorPlugin,\n} from './getJsdocProcessorPlugin.js';\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -40,6 +40,13 @@ const countChars = (str, ch) => {
|
|
|
40
40
|
|
|
41
41
|
/** @type {import('eslint').Linter.RulesRecord} */
|
|
42
42
|
const defaultMdRules = {
|
|
43
|
+
// "always" newline rule at end unlikely in sample code
|
|
44
|
+
'@stylistic/eol-last': 0,
|
|
45
|
+
// Often wish to start `@example` code after newline; also may use
|
|
46
|
+
// empty lines for spacing
|
|
47
|
+
'@stylistic/no-multiple-empty-lines': 0,
|
|
48
|
+
// Can generally look nicer to pad a little even if code imposes more stringency
|
|
49
|
+
'@stylistic/padded-blocks': 0,
|
|
43
50
|
// "always" newline rule at end unlikely in sample code
|
|
44
51
|
'eol-last': 0,
|
|
45
52
|
// Wouldn't generally expect example paths to resolve relative to JS file
|
|
@@ -49,6 +56,9 @@ const defaultMdRules = {
|
|
|
49
56
|
'jsdoc/require-file-overview': 0,
|
|
50
57
|
// The end of a multiline comment would end the comment the example is in.
|
|
51
58
|
'jsdoc/require-jsdoc': 0,
|
|
59
|
+
// See import/no-unresolved
|
|
60
|
+
'n/no-missing-import': 0,
|
|
61
|
+
'n/no-missing-require': 0,
|
|
52
62
|
// Unlikely to have inadvertent debugging within examples
|
|
53
63
|
'no-console': 0,
|
|
54
64
|
// Often wish to start `@example` code after newline; also may use
|
|
@@ -68,6 +78,9 @@ const defaultMdRules = {
|
|
|
68
78
|
/** @type {import('eslint').Linter.RulesRecord} */
|
|
69
79
|
const defaultExpressionRules = {
|
|
70
80
|
...defaultMdRules,
|
|
81
|
+
'@stylistic/quotes': ['error', 'double'],
|
|
82
|
+
'@stylistic/semi': ['error', 'never'],
|
|
83
|
+
'@typescript-eslint/no-unused-expressions': 'off',
|
|
71
84
|
'chai-friendly/no-unused-expressions': 'off',
|
|
72
85
|
'no-empty-function': 'off',
|
|
73
86
|
'no-new': 'off',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkExamples.cjs","names":["_iterateJsdoc","_interopRequireDefault","require","_eslint","_interopRequireWildcard","_semver","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","CLIEngine","eslint","zeroBasedLineIndexAdjust","likelyNestedJSDocIndentSpace","preTagSpaceLength","firstLinePrefixLength","hasCaptionRegex","escapeStringRegexp","str","replaceAll","countChars","ch","match","RegExp","length","defaultMdRules","defaultExpressionRules","quotes","semi","strict","getLinesCols","text","matchLines","colDelta","slice","lastIndexOf","_default","exports","iterateJsdoc","context","globalState","report","utils","semver","gte","ESLint","version","column","line","Map","matchingFileNameMap","options","exampleCodeRegex","rejectExampleCodeRegex","allowInlineConfig","baseConfig","captionRequired","checkDefaults","checkEslintrc","checkParams","checkProperties","configFile","matchingFileName","matchingFileNameDefaults","matchingFileNameParams","matchingFileNameProperties","noDefaultExampleRules","paddedIndent","reportUnusedDisableDirectives","rulePaths","mdRules","undefined","expressionRules","getRegexFromString","checkSource","cols","defaultFileName","filename","lines","rules","skipInit","source","sources","tag","targetTagName","push","nonJSPrefacingCols","nonJSPrefacingLines","string","checkRules","cliConfig","useEslintrc","cliConfigStr","JSON","stringify","src","fileNameMapKey","file","cliFile","cli","config","getConfigForFile","results","messages","executeOnText","number","codeStartLine","codeStartCol","message","ruleId","severity","startLine","startCol","targetSource","getFilenameInfo","ext","jsFileName","getFilename","includes","replace","filenameInfo","forEachPreferredTag","description","trim","getTagDescription","tagName","getPreferredTagName","hasTag","matchingFilenameInfo","test","startingIndex","lastStringCount","exampleCode","lastIndex","exec","n0","n1","index","preMatch","preMatchLines","nonJSPreface","nonJSPrefaceLineCount","idx","indexOf","charsInLastLine","global","iterateAllJsdocs","meta","docs","url","schema","additionalProperties","properties","type","module"],"sources":["../../src/rules/checkExamples.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\nimport eslint, {\n ESLint,\n} from 'eslint';\nimport semver from 'semver';\n\nconst {\n // @ts-expect-error Older ESLint\n CLIEngine,\n} = eslint;\n\nconst zeroBasedLineIndexAdjust = -1;\nconst likelyNestedJSDocIndentSpace = 1;\nconst preTagSpaceLength = 1;\n\n// If a space is present, we should ignore it\nconst firstLinePrefixLength = preTagSpaceLength;\n\nconst hasCaptionRegex = /^\\s*<caption>([\\s\\S]*?)<\\/caption>/v;\n\n/**\n * @param {string} str\n * @returns {string}\n */\nconst escapeStringRegexp = (str) => {\n return str.replaceAll(/[.*+?^$\\{\\}\\(\\)\\|\\[\\]\\\\]/gv, '\\\\$&');\n};\n\n/**\n * @param {string} str\n * @param {string} ch\n * @returns {import('../iterateJsdoc.js').Integer}\n */\nconst countChars = (str, ch) => {\n return (str.match(new RegExp(escapeStringRegexp(ch), 'gv')) || []).length;\n};\n\n/** @type {import('eslint').Linter.RulesRecord} */\nconst defaultMdRules = {\n // \"always\" newline rule at end unlikely in sample code\n 'eol-last': 0,\n\n // Wouldn't generally expect example paths to resolve relative to JS file\n 'import/no-unresolved': 0,\n\n // Snippets likely too short to always include import/export info\n 'import/unambiguous': 0,\n\n 'jsdoc/require-file-overview': 0,\n\n // The end of a multiline comment would end the comment the example is in.\n 'jsdoc/require-jsdoc': 0,\n\n // Unlikely to have inadvertent debugging within examples\n 'no-console': 0,\n\n // Often wish to start `@example` code after newline; also may use\n // empty lines for spacing\n 'no-multiple-empty-lines': 0,\n\n // Many variables in examples will be `undefined`\n 'no-undef': 0,\n\n // Common to define variables for clarity without always using them\n 'no-unused-vars': 0,\n\n // See import/no-unresolved\n 'node/no-missing-import': 0,\n 'node/no-missing-require': 0,\n\n // Can generally look nicer to pad a little even if code imposes more stringency\n 'padded-blocks': 0,\n};\n\n/** @type {import('eslint').Linter.RulesRecord} */\nconst defaultExpressionRules = {\n ...defaultMdRules,\n 'chai-friendly/no-unused-expressions': 'off',\n 'no-empty-function': 'off',\n 'no-new': 'off',\n 'no-unused-expressions': 'off',\n quotes: [\n 'error', 'double',\n ],\n semi: [\n 'error', 'never',\n ],\n strict: 'off',\n};\n\n/**\n * @param {string} text\n * @returns {[\n * import('../iterateJsdoc.js').Integer,\n * import('../iterateJsdoc.js').Integer\n * ]}\n */\nconst getLinesCols = (text) => {\n const matchLines = countChars(text, '\\n');\n\n const colDelta = matchLines ?\n text.slice(text.lastIndexOf('\\n') + 1).length :\n text.length;\n\n return [\n matchLines, colDelta,\n ];\n};\n\nexport default iterateJsdoc(({\n context,\n globalState,\n report,\n utils,\n}) => {\n if (semver.gte(ESLint.version, '8.0.0')) {\n report(\n 'This rule does not work for ESLint 8+; you should disable this rule and use' +\n 'the processor mentioned in the docs.',\n null,\n {\n column: 1,\n line: 1,\n },\n );\n\n return;\n }\n\n if (!globalState.has('checkExamples-matchingFileName')) {\n globalState.set('checkExamples-matchingFileName', new Map());\n }\n\n const matchingFileNameMap = /** @type {Map<string, string>} */ (\n globalState.get('checkExamples-matchingFileName')\n );\n\n const options = context.options[0] || {};\n let {\n exampleCodeRegex = null,\n rejectExampleCodeRegex = null,\n } = options;\n const {\n allowInlineConfig = true,\n baseConfig = {},\n captionRequired = false,\n checkDefaults = false,\n checkEslintrc = true,\n checkParams = false,\n checkProperties = false,\n configFile,\n matchingFileName = null,\n matchingFileNameDefaults = null,\n matchingFileNameParams = null,\n matchingFileNameProperties = null,\n noDefaultExampleRules = false,\n paddedIndent = 0,\n reportUnusedDisableDirectives = true,\n } = options;\n\n // Make this configurable?\n /**\n * @type {never[]}\n */\n const rulePaths = [];\n\n const mdRules = noDefaultExampleRules ? undefined : defaultMdRules;\n\n const expressionRules = noDefaultExampleRules ? undefined : defaultExpressionRules;\n\n if (exampleCodeRegex) {\n exampleCodeRegex = utils.getRegexFromString(exampleCodeRegex);\n }\n\n if (rejectExampleCodeRegex) {\n rejectExampleCodeRegex = utils.getRegexFromString(rejectExampleCodeRegex);\n }\n\n /**\n * @param {{\n * filename: string,\n * defaultFileName: string|undefined,\n * source: string,\n * targetTagName: string,\n * rules?: import('eslint').Linter.RulesRecord|undefined,\n * lines?: import('../iterateJsdoc.js').Integer,\n * cols?: import('../iterateJsdoc.js').Integer,\n * skipInit?: boolean,\n * sources?: {\n * nonJSPrefacingCols: import('../iterateJsdoc.js').Integer,\n * nonJSPrefacingLines: import('../iterateJsdoc.js').Integer,\n * string: string,\n * }[],\n * tag?: import('comment-parser').Spec & {\n * line?: import('../iterateJsdoc.js').Integer,\n * }|{\n * line: import('../iterateJsdoc.js').Integer,\n * }\n * }} cfg\n */\n const checkSource = ({\n cols = 0,\n defaultFileName,\n filename,\n lines = 0,\n rules = expressionRules,\n skipInit,\n source,\n sources = [],\n tag = {\n line: 0,\n },\n targetTagName,\n }) => {\n if (!skipInit) {\n sources.push({\n nonJSPrefacingCols: cols,\n nonJSPrefacingLines: lines,\n string: source,\n });\n }\n\n /**\n * @param {{\n * nonJSPrefacingCols: import('../iterateJsdoc.js').Integer,\n * nonJSPrefacingLines: import('../iterateJsdoc.js').Integer,\n * string: string\n * }} cfg\n */\n const checkRules = function ({\n nonJSPrefacingCols,\n nonJSPrefacingLines,\n string,\n }) {\n const cliConfig = {\n allowInlineConfig,\n baseConfig,\n configFile,\n reportUnusedDisableDirectives,\n rulePaths,\n rules,\n useEslintrc: checkEslintrc,\n };\n const cliConfigStr = JSON.stringify(cliConfig);\n\n const src = paddedIndent ?\n string.replaceAll(new RegExp(`(^|\\n) {${paddedIndent}}(?!$)`, 'gv'), '\\n') :\n string;\n\n // Programmatic ESLint API: https://eslint.org/docs/developer-guide/nodejs-api\n const fileNameMapKey = filename ?\n 'a' + cliConfigStr + filename :\n 'b' + cliConfigStr + defaultFileName;\n const file = filename || defaultFileName;\n let cliFile;\n if (matchingFileNameMap.has(fileNameMapKey)) {\n cliFile = matchingFileNameMap.get(fileNameMapKey);\n } else {\n const cli = new CLIEngine(cliConfig);\n let config;\n if (filename || checkEslintrc) {\n config = cli.getConfigForFile(file);\n }\n\n // We need a new instance to ensure that the rules that may only\n // be available to `file` (if it has its own `.eslintrc`),\n // will be defined.\n cliFile = new CLIEngine({\n allowInlineConfig,\n baseConfig: {\n ...baseConfig,\n ...config,\n },\n configFile,\n reportUnusedDisableDirectives,\n rulePaths,\n rules,\n useEslintrc: false,\n });\n matchingFileNameMap.set(fileNameMapKey, cliFile);\n }\n\n const {\n results: [\n {\n messages,\n },\n ],\n } = cliFile.executeOnText(src);\n\n if (!('line' in tag)) {\n tag.line = tag.source[0].number;\n }\n\n // NOTE: `tag.line` can be 0 if of form `/** @tag ... */`\n const codeStartLine = /**\n * @type {import('comment-parser').Spec & {\n * line: import('../iterateJsdoc.js').Integer,\n * }}\n */ (tag).line + nonJSPrefacingLines;\n const codeStartCol = likelyNestedJSDocIndentSpace;\n\n for (const {\n column,\n line,\n message,\n ruleId,\n severity,\n } of messages) {\n const startLine = codeStartLine + line + zeroBasedLineIndexAdjust;\n const startCol = codeStartCol + (\n\n // This might not work for line 0, but line 0 is unlikely for examples\n line <= 1 ? nonJSPrefacingCols + firstLinePrefixLength : preTagSpaceLength\n ) + column;\n\n report(\n '@' + targetTagName + ' ' + (severity === 2 ? 'error' : 'warning') +\n (ruleId ? ' (' + ruleId + ')' : '') + ': ' +\n message,\n null,\n {\n column: startCol,\n line: startLine,\n },\n );\n }\n };\n\n for (const targetSource of sources) {\n checkRules(targetSource);\n }\n };\n\n /**\n *\n * @param {string} filename\n * @param {string} [ext] Since `eslint-plugin-markdown` v2, and\n * ESLint 7, this is the default which other JS-fenced rules will used.\n * Formerly \"md\" was the default.\n * @returns {{defaultFileName: string|undefined, filename: string}}\n */\n const getFilenameInfo = (filename, ext = 'md/*.js') => {\n let defaultFileName;\n if (!filename) {\n const jsFileName = context.getFilename();\n if (typeof jsFileName === 'string' && jsFileName.includes('.')) {\n defaultFileName = jsFileName.replace(/\\.[^.]*$/v, `.${ext}`);\n } else {\n defaultFileName = `dummy.${ext}`;\n }\n }\n\n return {\n defaultFileName,\n filename,\n };\n };\n\n if (checkDefaults) {\n const filenameInfo = getFilenameInfo(matchingFileNameDefaults, 'jsdoc-defaults');\n utils.forEachPreferredTag('default', (tag, targetTagName) => {\n if (!tag.description.trim()) {\n return;\n }\n\n checkSource({\n source: `(${utils.getTagDescription(tag)})`,\n targetTagName,\n ...filenameInfo,\n });\n });\n }\n\n if (checkParams) {\n const filenameInfo = getFilenameInfo(matchingFileNameParams, 'jsdoc-params');\n utils.forEachPreferredTag('param', (tag, targetTagName) => {\n if (!tag.default || !tag.default.trim()) {\n return;\n }\n\n checkSource({\n source: `(${tag.default})`,\n targetTagName,\n ...filenameInfo,\n });\n });\n }\n\n if (checkProperties) {\n const filenameInfo = getFilenameInfo(matchingFileNameProperties, 'jsdoc-properties');\n utils.forEachPreferredTag('property', (tag, targetTagName) => {\n if (!tag.default || !tag.default.trim()) {\n return;\n }\n\n checkSource({\n source: `(${tag.default})`,\n targetTagName,\n ...filenameInfo,\n });\n });\n }\n\n const tagName = /** @type {string} */ (utils.getPreferredTagName({\n tagName: 'example',\n }));\n if (!utils.hasTag(tagName)) {\n return;\n }\n\n const matchingFilenameInfo = getFilenameInfo(matchingFileName);\n\n utils.forEachPreferredTag('example', (tag, targetTagName) => {\n let source = /** @type {string} */ (utils.getTagDescription(tag));\n const match = source.match(hasCaptionRegex);\n\n if (captionRequired && (!match || !match[1].trim())) {\n report('Caption is expected for examples.', null, tag);\n }\n\n source = source.replace(hasCaptionRegex, '');\n const [\n lines,\n cols,\n ] = match ? getLinesCols(match[0]) : [\n 0, 0,\n ];\n\n if (exampleCodeRegex && !exampleCodeRegex.test(source) ||\n rejectExampleCodeRegex && rejectExampleCodeRegex.test(source)\n ) {\n return;\n }\n\n const sources = [];\n let skipInit = false;\n if (exampleCodeRegex) {\n let nonJSPrefacingCols = 0;\n let nonJSPrefacingLines = 0;\n\n let startingIndex = 0;\n let lastStringCount = 0;\n\n let exampleCode;\n exampleCodeRegex.lastIndex = 0;\n while ((exampleCode = exampleCodeRegex.exec(source)) !== null) {\n const {\n '0': n0,\n '1': n1,\n index,\n } = exampleCode;\n\n // Count anything preceding user regex match (can affect line numbering)\n const preMatch = source.slice(startingIndex, index);\n\n const [\n preMatchLines,\n colDelta,\n ] = getLinesCols(preMatch);\n\n let nonJSPreface;\n let nonJSPrefaceLineCount;\n if (n1) {\n const idx = n0.indexOf(n1);\n nonJSPreface = n0.slice(0, idx);\n nonJSPrefaceLineCount = countChars(nonJSPreface, '\\n');\n } else {\n nonJSPreface = '';\n nonJSPrefaceLineCount = 0;\n }\n\n nonJSPrefacingLines += lastStringCount + preMatchLines + nonJSPrefaceLineCount;\n\n // Ignore `preMatch` delta if newlines here\n if (nonJSPrefaceLineCount) {\n const charsInLastLine = nonJSPreface.slice(nonJSPreface.lastIndexOf('\\n') + 1).length;\n\n nonJSPrefacingCols += charsInLastLine;\n } else {\n nonJSPrefacingCols += colDelta + nonJSPreface.length;\n }\n\n const string = n1 || n0;\n sources.push({\n nonJSPrefacingCols,\n nonJSPrefacingLines,\n string,\n });\n startingIndex = exampleCodeRegex.lastIndex;\n lastStringCount = countChars(string, '\\n');\n if (!exampleCodeRegex.global) {\n break;\n }\n }\n\n skipInit = true;\n }\n\n checkSource({\n cols,\n lines,\n rules: mdRules,\n skipInit,\n source,\n sources,\n tag,\n targetTagName,\n ...matchingFilenameInfo,\n });\n });\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Ensures that (JavaScript) examples within JSDoc adhere to ESLint rules.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-examples.md#repos-sticky-header',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n allowInlineConfig: {\n default: true,\n type: 'boolean',\n },\n baseConfig: {\n type: 'object',\n },\n captionRequired: {\n default: false,\n type: 'boolean',\n },\n checkDefaults: {\n default: false,\n type: 'boolean',\n },\n checkEslintrc: {\n default: true,\n type: 'boolean',\n },\n checkParams: {\n default: false,\n type: 'boolean',\n },\n checkProperties: {\n default: false,\n type: 'boolean',\n },\n configFile: {\n type: 'string',\n },\n exampleCodeRegex: {\n type: 'string',\n },\n matchingFileName: {\n type: 'string',\n },\n matchingFileNameDefaults: {\n type: 'string',\n },\n matchingFileNameParams: {\n type: 'string',\n },\n matchingFileNameProperties: {\n type: 'string',\n },\n noDefaultExampleRules: {\n default: false,\n type: 'boolean',\n },\n paddedIndent: {\n default: 0,\n type: 'integer',\n },\n rejectExampleCodeRegex: {\n type: 'string',\n },\n reportUnusedDisableDirectives: {\n default: true,\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"checkExamples.cjs","names":["_iterateJsdoc","_interopRequireDefault","require","_eslint","_interopRequireWildcard","_semver","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","CLIEngine","eslint","zeroBasedLineIndexAdjust","likelyNestedJSDocIndentSpace","preTagSpaceLength","firstLinePrefixLength","hasCaptionRegex","escapeStringRegexp","str","replaceAll","countChars","ch","match","RegExp","length","defaultMdRules","defaultExpressionRules","quotes","semi","strict","getLinesCols","text","matchLines","colDelta","slice","lastIndexOf","_default","exports","iterateJsdoc","context","globalState","report","utils","semver","gte","ESLint","version","column","line","Map","matchingFileNameMap","options","exampleCodeRegex","rejectExampleCodeRegex","allowInlineConfig","baseConfig","captionRequired","checkDefaults","checkEslintrc","checkParams","checkProperties","configFile","matchingFileName","matchingFileNameDefaults","matchingFileNameParams","matchingFileNameProperties","noDefaultExampleRules","paddedIndent","reportUnusedDisableDirectives","rulePaths","mdRules","undefined","expressionRules","getRegexFromString","checkSource","cols","defaultFileName","filename","lines","rules","skipInit","source","sources","tag","targetTagName","push","nonJSPrefacingCols","nonJSPrefacingLines","string","checkRules","cliConfig","useEslintrc","cliConfigStr","JSON","stringify","src","fileNameMapKey","file","cliFile","cli","config","getConfigForFile","results","messages","executeOnText","number","codeStartLine","codeStartCol","message","ruleId","severity","startLine","startCol","targetSource","getFilenameInfo","ext","jsFileName","getFilename","includes","replace","filenameInfo","forEachPreferredTag","description","trim","getTagDescription","tagName","getPreferredTagName","hasTag","matchingFilenameInfo","test","startingIndex","lastStringCount","exampleCode","lastIndex","exec","n0","n1","index","preMatch","preMatchLines","nonJSPreface","nonJSPrefaceLineCount","idx","indexOf","charsInLastLine","global","iterateAllJsdocs","meta","docs","url","schema","additionalProperties","properties","type","module"],"sources":["../../src/rules/checkExamples.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\nimport eslint, {\n ESLint,\n} from 'eslint';\nimport semver from 'semver';\n\nconst {\n // @ts-expect-error Older ESLint\n CLIEngine,\n} = eslint;\n\nconst zeroBasedLineIndexAdjust = -1;\nconst likelyNestedJSDocIndentSpace = 1;\nconst preTagSpaceLength = 1;\n\n// If a space is present, we should ignore it\nconst firstLinePrefixLength = preTagSpaceLength;\n\nconst hasCaptionRegex = /^\\s*<caption>([\\s\\S]*?)<\\/caption>/v;\n\n/**\n * @param {string} str\n * @returns {string}\n */\nconst escapeStringRegexp = (str) => {\n return str.replaceAll(/[.*+?^$\\{\\}\\(\\)\\|\\[\\]\\\\]/gv, '\\\\$&');\n};\n\n/**\n * @param {string} str\n * @param {string} ch\n * @returns {import('../iterateJsdoc.js').Integer}\n */\nconst countChars = (str, ch) => {\n return (str.match(new RegExp(escapeStringRegexp(ch), 'gv')) || []).length;\n};\n\n/** @type {import('eslint').Linter.RulesRecord} */\nconst defaultMdRules = {\n // \"always\" newline rule at end unlikely in sample code\n '@stylistic/eol-last': 0,\n\n // Often wish to start `@example` code after newline; also may use\n // empty lines for spacing\n '@stylistic/no-multiple-empty-lines': 0,\n\n // Can generally look nicer to pad a little even if code imposes more stringency\n '@stylistic/padded-blocks': 0,\n\n // \"always\" newline rule at end unlikely in sample code\n 'eol-last': 0,\n\n // Wouldn't generally expect example paths to resolve relative to JS file\n 'import/no-unresolved': 0,\n\n // Snippets likely too short to always include import/export info\n 'import/unambiguous': 0,\n\n 'jsdoc/require-file-overview': 0,\n\n // The end of a multiline comment would end the comment the example is in.\n 'jsdoc/require-jsdoc': 0,\n\n // See import/no-unresolved\n 'n/no-missing-import': 0,\n 'n/no-missing-require': 0,\n\n // Unlikely to have inadvertent debugging within examples\n 'no-console': 0,\n\n // Often wish to start `@example` code after newline; also may use\n // empty lines for spacing\n 'no-multiple-empty-lines': 0,\n // Many variables in examples will be `undefined`\n 'no-undef': 0,\n\n // Common to define variables for clarity without always using them\n 'no-unused-vars': 0,\n\n // See import/no-unresolved\n 'node/no-missing-import': 0,\n\n 'node/no-missing-require': 0,\n\n // Can generally look nicer to pad a little even if code imposes more stringency\n 'padded-blocks': 0,\n};\n\n/** @type {import('eslint').Linter.RulesRecord} */\nconst defaultExpressionRules = {\n ...defaultMdRules,\n '@stylistic/quotes': [\n 'error', 'double',\n ],\n '@stylistic/semi': [\n 'error', 'never',\n ],\n '@typescript-eslint/no-unused-expressions': 'off',\n 'chai-friendly/no-unused-expressions': 'off',\n 'no-empty-function': 'off',\n 'no-new': 'off',\n 'no-unused-expressions': 'off',\n quotes: [\n 'error', 'double',\n ],\n semi: [\n 'error', 'never',\n ],\n strict: 'off',\n};\n\n/**\n * @param {string} text\n * @returns {[\n * import('../iterateJsdoc.js').Integer,\n * import('../iterateJsdoc.js').Integer\n * ]}\n */\nconst getLinesCols = (text) => {\n const matchLines = countChars(text, '\\n');\n\n const colDelta = matchLines ?\n text.slice(text.lastIndexOf('\\n') + 1).length :\n text.length;\n\n return [\n matchLines, colDelta,\n ];\n};\n\nexport default iterateJsdoc(({\n context,\n globalState,\n report,\n utils,\n}) => {\n if (semver.gte(ESLint.version, '8.0.0')) {\n report(\n 'This rule does not work for ESLint 8+; you should disable this rule and use' +\n 'the processor mentioned in the docs.',\n null,\n {\n column: 1,\n line: 1,\n },\n );\n\n return;\n }\n\n if (!globalState.has('checkExamples-matchingFileName')) {\n globalState.set('checkExamples-matchingFileName', new Map());\n }\n\n const matchingFileNameMap = /** @type {Map<string, string>} */ (\n globalState.get('checkExamples-matchingFileName')\n );\n\n const options = context.options[0] || {};\n let {\n exampleCodeRegex = null,\n rejectExampleCodeRegex = null,\n } = options;\n const {\n allowInlineConfig = true,\n baseConfig = {},\n captionRequired = false,\n checkDefaults = false,\n checkEslintrc = true,\n checkParams = false,\n checkProperties = false,\n configFile,\n matchingFileName = null,\n matchingFileNameDefaults = null,\n matchingFileNameParams = null,\n matchingFileNameProperties = null,\n noDefaultExampleRules = false,\n paddedIndent = 0,\n reportUnusedDisableDirectives = true,\n } = options;\n\n // Make this configurable?\n /**\n * @type {never[]}\n */\n const rulePaths = [];\n\n const mdRules = noDefaultExampleRules ? undefined : defaultMdRules;\n\n const expressionRules = noDefaultExampleRules ? undefined : defaultExpressionRules;\n\n if (exampleCodeRegex) {\n exampleCodeRegex = utils.getRegexFromString(exampleCodeRegex);\n }\n\n if (rejectExampleCodeRegex) {\n rejectExampleCodeRegex = utils.getRegexFromString(rejectExampleCodeRegex);\n }\n\n /**\n * @param {{\n * filename: string,\n * defaultFileName: string|undefined,\n * source: string,\n * targetTagName: string,\n * rules?: import('eslint').Linter.RulesRecord|undefined,\n * lines?: import('../iterateJsdoc.js').Integer,\n * cols?: import('../iterateJsdoc.js').Integer,\n * skipInit?: boolean,\n * sources?: {\n * nonJSPrefacingCols: import('../iterateJsdoc.js').Integer,\n * nonJSPrefacingLines: import('../iterateJsdoc.js').Integer,\n * string: string,\n * }[],\n * tag?: import('comment-parser').Spec & {\n * line?: import('../iterateJsdoc.js').Integer,\n * }|{\n * line: import('../iterateJsdoc.js').Integer,\n * }\n * }} cfg\n */\n const checkSource = ({\n cols = 0,\n defaultFileName,\n filename,\n lines = 0,\n rules = expressionRules,\n skipInit,\n source,\n sources = [],\n tag = {\n line: 0,\n },\n targetTagName,\n }) => {\n if (!skipInit) {\n sources.push({\n nonJSPrefacingCols: cols,\n nonJSPrefacingLines: lines,\n string: source,\n });\n }\n\n /**\n * @param {{\n * nonJSPrefacingCols: import('../iterateJsdoc.js').Integer,\n * nonJSPrefacingLines: import('../iterateJsdoc.js').Integer,\n * string: string\n * }} cfg\n */\n const checkRules = function ({\n nonJSPrefacingCols,\n nonJSPrefacingLines,\n string,\n }) {\n const cliConfig = {\n allowInlineConfig,\n baseConfig,\n configFile,\n reportUnusedDisableDirectives,\n rulePaths,\n rules,\n useEslintrc: checkEslintrc,\n };\n const cliConfigStr = JSON.stringify(cliConfig);\n\n const src = paddedIndent ?\n string.replaceAll(new RegExp(`(^|\\n) {${paddedIndent}}(?!$)`, 'gv'), '\\n') :\n string;\n\n // Programmatic ESLint API: https://eslint.org/docs/developer-guide/nodejs-api\n const fileNameMapKey = filename ?\n 'a' + cliConfigStr + filename :\n 'b' + cliConfigStr + defaultFileName;\n const file = filename || defaultFileName;\n let cliFile;\n if (matchingFileNameMap.has(fileNameMapKey)) {\n cliFile = matchingFileNameMap.get(fileNameMapKey);\n } else {\n const cli = new CLIEngine(cliConfig);\n let config;\n if (filename || checkEslintrc) {\n config = cli.getConfigForFile(file);\n }\n\n // We need a new instance to ensure that the rules that may only\n // be available to `file` (if it has its own `.eslintrc`),\n // will be defined.\n cliFile = new CLIEngine({\n allowInlineConfig,\n baseConfig: {\n ...baseConfig,\n ...config,\n },\n configFile,\n reportUnusedDisableDirectives,\n rulePaths,\n rules,\n useEslintrc: false,\n });\n matchingFileNameMap.set(fileNameMapKey, cliFile);\n }\n\n const {\n results: [\n {\n messages,\n },\n ],\n } = cliFile.executeOnText(src);\n\n if (!('line' in tag)) {\n tag.line = tag.source[0].number;\n }\n\n // NOTE: `tag.line` can be 0 if of form `/** @tag ... */`\n const codeStartLine = /**\n * @type {import('comment-parser').Spec & {\n * line: import('../iterateJsdoc.js').Integer,\n * }}\n */ (tag).line + nonJSPrefacingLines;\n const codeStartCol = likelyNestedJSDocIndentSpace;\n\n for (const {\n column,\n line,\n message,\n ruleId,\n severity,\n } of messages) {\n const startLine = codeStartLine + line + zeroBasedLineIndexAdjust;\n const startCol = codeStartCol + (\n\n // This might not work for line 0, but line 0 is unlikely for examples\n line <= 1 ? nonJSPrefacingCols + firstLinePrefixLength : preTagSpaceLength\n ) + column;\n\n report(\n '@' + targetTagName + ' ' + (severity === 2 ? 'error' : 'warning') +\n (ruleId ? ' (' + ruleId + ')' : '') + ': ' +\n message,\n null,\n {\n column: startCol,\n line: startLine,\n },\n );\n }\n };\n\n for (const targetSource of sources) {\n checkRules(targetSource);\n }\n };\n\n /**\n *\n * @param {string} filename\n * @param {string} [ext] Since `eslint-plugin-markdown` v2, and\n * ESLint 7, this is the default which other JS-fenced rules will used.\n * Formerly \"md\" was the default.\n * @returns {{defaultFileName: string|undefined, filename: string}}\n */\n const getFilenameInfo = (filename, ext = 'md/*.js') => {\n let defaultFileName;\n if (!filename) {\n const jsFileName = context.getFilename();\n if (typeof jsFileName === 'string' && jsFileName.includes('.')) {\n defaultFileName = jsFileName.replace(/\\.[^.]*$/v, `.${ext}`);\n } else {\n defaultFileName = `dummy.${ext}`;\n }\n }\n\n return {\n defaultFileName,\n filename,\n };\n };\n\n if (checkDefaults) {\n const filenameInfo = getFilenameInfo(matchingFileNameDefaults, 'jsdoc-defaults');\n utils.forEachPreferredTag('default', (tag, targetTagName) => {\n if (!tag.description.trim()) {\n return;\n }\n\n checkSource({\n source: `(${utils.getTagDescription(tag)})`,\n targetTagName,\n ...filenameInfo,\n });\n });\n }\n\n if (checkParams) {\n const filenameInfo = getFilenameInfo(matchingFileNameParams, 'jsdoc-params');\n utils.forEachPreferredTag('param', (tag, targetTagName) => {\n if (!tag.default || !tag.default.trim()) {\n return;\n }\n\n checkSource({\n source: `(${tag.default})`,\n targetTagName,\n ...filenameInfo,\n });\n });\n }\n\n if (checkProperties) {\n const filenameInfo = getFilenameInfo(matchingFileNameProperties, 'jsdoc-properties');\n utils.forEachPreferredTag('property', (tag, targetTagName) => {\n if (!tag.default || !tag.default.trim()) {\n return;\n }\n\n checkSource({\n source: `(${tag.default})`,\n targetTagName,\n ...filenameInfo,\n });\n });\n }\n\n const tagName = /** @type {string} */ (utils.getPreferredTagName({\n tagName: 'example',\n }));\n if (!utils.hasTag(tagName)) {\n return;\n }\n\n const matchingFilenameInfo = getFilenameInfo(matchingFileName);\n\n utils.forEachPreferredTag('example', (tag, targetTagName) => {\n let source = /** @type {string} */ (utils.getTagDescription(tag));\n const match = source.match(hasCaptionRegex);\n\n if (captionRequired && (!match || !match[1].trim())) {\n report('Caption is expected for examples.', null, tag);\n }\n\n source = source.replace(hasCaptionRegex, '');\n const [\n lines,\n cols,\n ] = match ? getLinesCols(match[0]) : [\n 0, 0,\n ];\n\n if (exampleCodeRegex && !exampleCodeRegex.test(source) ||\n rejectExampleCodeRegex && rejectExampleCodeRegex.test(source)\n ) {\n return;\n }\n\n const sources = [];\n let skipInit = false;\n if (exampleCodeRegex) {\n let nonJSPrefacingCols = 0;\n let nonJSPrefacingLines = 0;\n\n let startingIndex = 0;\n let lastStringCount = 0;\n\n let exampleCode;\n exampleCodeRegex.lastIndex = 0;\n while ((exampleCode = exampleCodeRegex.exec(source)) !== null) {\n const {\n '0': n0,\n '1': n1,\n index,\n } = exampleCode;\n\n // Count anything preceding user regex match (can affect line numbering)\n const preMatch = source.slice(startingIndex, index);\n\n const [\n preMatchLines,\n colDelta,\n ] = getLinesCols(preMatch);\n\n let nonJSPreface;\n let nonJSPrefaceLineCount;\n if (n1) {\n const idx = n0.indexOf(n1);\n nonJSPreface = n0.slice(0, idx);\n nonJSPrefaceLineCount = countChars(nonJSPreface, '\\n');\n } else {\n nonJSPreface = '';\n nonJSPrefaceLineCount = 0;\n }\n\n nonJSPrefacingLines += lastStringCount + preMatchLines + nonJSPrefaceLineCount;\n\n // Ignore `preMatch` delta if newlines here\n if (nonJSPrefaceLineCount) {\n const charsInLastLine = nonJSPreface.slice(nonJSPreface.lastIndexOf('\\n') + 1).length;\n\n nonJSPrefacingCols += charsInLastLine;\n } else {\n nonJSPrefacingCols += colDelta + nonJSPreface.length;\n }\n\n const string = n1 || n0;\n sources.push({\n nonJSPrefacingCols,\n nonJSPrefacingLines,\n string,\n });\n startingIndex = exampleCodeRegex.lastIndex;\n lastStringCount = countChars(string, '\\n');\n if (!exampleCodeRegex.global) {\n break;\n }\n }\n\n skipInit = true;\n }\n\n checkSource({\n cols,\n lines,\n rules: mdRules,\n skipInit,\n source,\n sources,\n tag,\n targetTagName,\n ...matchingFilenameInfo,\n });\n });\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Ensures that (JavaScript) examples within JSDoc adhere to ESLint rules.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-examples.md#repos-sticky-header',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n allowInlineConfig: {\n default: true,\n type: 'boolean',\n },\n baseConfig: {\n type: 'object',\n },\n captionRequired: {\n default: false,\n type: 'boolean',\n },\n checkDefaults: {\n default: false,\n type: 'boolean',\n },\n checkEslintrc: {\n default: true,\n type: 'boolean',\n },\n checkParams: {\n default: false,\n type: 'boolean',\n },\n checkProperties: {\n default: false,\n type: 'boolean',\n },\n configFile: {\n type: 'string',\n },\n exampleCodeRegex: {\n type: 'string',\n },\n matchingFileName: {\n type: 'string',\n },\n matchingFileNameDefaults: {\n type: 'string',\n },\n matchingFileNameParams: {\n type: 'string',\n },\n matchingFileNameProperties: {\n type: 'string',\n },\n noDefaultExampleRules: {\n default: false,\n type: 'boolean',\n },\n paddedIndent: {\n default: 0,\n type: 'integer',\n },\n rejectExampleCodeRegex: {\n type: 'string',\n },\n reportUnusedDisableDirectives: {\n default: true,\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":";;;;;;AAAA,IAAAA,aAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,OAAA,GAAAC,uBAAA,CAAAF,OAAA;AAGA,IAAAG,OAAA,GAAAJ,sBAAA,CAAAC,OAAA;AAA4B,SAAAE,wBAAAE,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAJ,uBAAA,YAAAA,CAAAE,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAAA,SAAAN,uBAAAK,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAK,UAAA,GAAAL,CAAA,KAAAU,OAAA,EAAAV,CAAA;AAE5B,MAAM;EACJ;EACAmB;AACF,CAAC,GAAGC,eAAM;AAEV,MAAMC,wBAAwB,GAAG,CAAC,CAAC;AACnC,MAAMC,4BAA4B,GAAG,CAAC;AACtC,MAAMC,iBAAiB,GAAG,CAAC;;AAE3B;AACA,MAAMC,qBAAqB,GAAGD,iBAAiB;AAE/C,MAAME,eAAe,GAAG,qCAAqC;;AAE7D;AACA;AACA;AACA;AACA,MAAMC,kBAAkB,GAAIC,GAAG,IAAK;EAClC,OAAOA,GAAG,CAACC,UAAU,CAAC,4BAA4B,EAAE,MAAM,CAAC;AAC7D,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,MAAMC,UAAU,GAAGA,CAACF,GAAG,EAAEG,EAAE,KAAK;EAC9B,OAAO,CAACH,GAAG,CAACI,KAAK,CAAC,IAAIC,MAAM,CAACN,kBAAkB,CAACI,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,EAAEG,MAAM;AAC3E,CAAC;;AAED;AACA,MAAMC,cAAc,GAAG;EACrB;EACA,qBAAqB,EAAE,CAAC;EAExB;EACA;EACA,oCAAoC,EAAE,CAAC;EAEvC;EACA,0BAA0B,EAAE,CAAC;EAE7B;EACA,UAAU,EAAE,CAAC;EAEb;EACA,sBAAsB,EAAE,CAAC;EAEzB;EACA,oBAAoB,EAAE,CAAC;EAEvB,6BAA6B,EAAE,CAAC;EAEhC;EACA,qBAAqB,EAAE,CAAC;EAExB;EACA,qBAAqB,EAAE,CAAC;EACxB,sBAAsB,EAAE,CAAC;EAEzB;EACA,YAAY,EAAE,CAAC;EAEf;EACA;EACA,yBAAyB,EAAE,CAAC;EAC5B;EACA,UAAU,EAAE,CAAC;EAEb;EACA,gBAAgB,EAAE,CAAC;EAEnB;EACA,wBAAwB,EAAE,CAAC;EAE3B,yBAAyB,EAAE,CAAC;EAE5B;EACA,eAAe,EAAE;AACnB,CAAC;;AAED;AACA,MAAMC,sBAAsB,GAAG;EAC7B,GAAGD,cAAc;EACjB,mBAAmB,EAAE,CACnB,OAAO,EAAE,QAAQ,CAClB;EACD,iBAAiB,EAAE,CACjB,OAAO,EAAE,OAAO,CACjB;EACD,0CAA0C,EAAE,KAAK;EACjD,qCAAqC,EAAE,KAAK;EAC5C,mBAAmB,EAAE,KAAK;EAC1B,QAAQ,EAAE,KAAK;EACf,uBAAuB,EAAE,KAAK;EAC9BE,MAAM,EAAE,CACN,OAAO,EAAE,QAAQ,CAClB;EACDC,IAAI,EAAE,CACJ,OAAO,EAAE,OAAO,CACjB;EACDC,MAAM,EAAE;AACV,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,YAAY,GAAIC,IAAI,IAAK;EAC7B,MAAMC,UAAU,GAAGZ,UAAU,CAACW,IAAI,EAAE,IAAI,CAAC;EAEzC,MAAME,QAAQ,GAAGD,UAAU,GACzBD,IAAI,CAACG,KAAK,CAACH,IAAI,CAACI,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAACX,MAAM,GAC7CO,IAAI,CAACP,MAAM;EAEb,OAAO,CACLQ,UAAU,EAAEC,QAAQ,CACrB;AACH,CAAC;AAAC,IAAAG,QAAA,GAAAC,OAAA,CAAApC,OAAA,GAEa,IAAAqC,qBAAY,EAAC,CAAC;EAC3BC,OAAO;EACPC,WAAW;EACXC,MAAM;EACNC;AACF,CAAC,KAAK;EACJ,IAAIC,eAAM,CAACC,GAAG,CAACC,cAAM,CAACC,OAAO,EAAE,OAAO,CAAC,EAAE;IACvCL,MAAM,CACJ,6EAA6E,GAC3E,sCAAsC,EACxC,IAAI,EACJ;MACEM,MAAM,EAAE,CAAC;MACTC,IAAI,EAAE;IACR,CACF,CAAC;IAED;EACF;EAEA,IAAI,CAACR,WAAW,CAACtC,GAAG,CAAC,gCAAgC,CAAC,EAAE;IACtDsC,WAAW,CAACpC,GAAG,CAAC,gCAAgC,EAAE,IAAI6C,GAAG,CAAC,CAAC,CAAC;EAC9D;EAEA,MAAMC,mBAAmB,GAAG;EAC1BV,WAAW,CAACrC,GAAG,CAAC,gCAAgC,CACjD;EAED,MAAMgD,OAAO,GAAGZ,OAAO,CAACY,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;EACxC,IAAI;IACFC,gBAAgB,GAAG,IAAI;IACvBC,sBAAsB,GAAG;EAC3B,CAAC,GAAGF,OAAO;EACX,MAAM;IACJG,iBAAiB,GAAG,IAAI;IACxBC,UAAU,GAAG,CAAC,CAAC;IACfC,eAAe,GAAG,KAAK;IACvBC,aAAa,GAAG,KAAK;IACrBC,aAAa,GAAG,IAAI;IACpBC,WAAW,GAAG,KAAK;IACnBC,eAAe,GAAG,KAAK;IACvBC,UAAU;IACVC,gBAAgB,GAAG,IAAI;IACvBC,wBAAwB,GAAG,IAAI;IAC/BC,sBAAsB,GAAG,IAAI;IAC7BC,0BAA0B,GAAG,IAAI;IACjCC,qBAAqB,GAAG,KAAK;IAC7BC,YAAY,GAAG,CAAC;IAChBC,6BAA6B,GAAG;EAClC,CAAC,GAAGjB,OAAO;;EAEX;EACA;AACF;AACA;EACE,MAAMkB,SAAS,GAAG,EAAE;EAEpB,MAAMC,OAAO,GAAGJ,qBAAqB,GAAGK,SAAS,GAAG9C,cAAc;EAElE,MAAM+C,eAAe,GAAGN,qBAAqB,GAAGK,SAAS,GAAG7C,sBAAsB;EAElF,IAAI0B,gBAAgB,EAAE;IACpBA,gBAAgB,GAAGV,KAAK,CAAC+B,kBAAkB,CAACrB,gBAAgB,CAAC;EAC/D;EAEA,IAAIC,sBAAsB,EAAE;IAC1BA,sBAAsB,GAAGX,KAAK,CAAC+B,kBAAkB,CAACpB,sBAAsB,CAAC;EAC3E;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAMqB,WAAW,GAAGA,CAAC;IACnBC,IAAI,GAAG,CAAC;IACRC,eAAe;IACfC,QAAQ;IACRC,KAAK,GAAG,CAAC;IACTC,KAAK,GAAGP,eAAe;IACvBQ,QAAQ;IACRC,MAAM;IACNC,OAAO,GAAG,EAAE;IACZC,GAAG,GAAG;MACJnC,IAAI,EAAE;IACR,CAAC;IACDoC;EACF,CAAC,KAAK;IACJ,IAAI,CAACJ,QAAQ,EAAE;MACbE,OAAO,CAACG,IAAI,CAAC;QACXC,kBAAkB,EAAEX,IAAI;QACxBY,mBAAmB,EAAET,KAAK;QAC1BU,MAAM,EAAEP;MACV,CAAC,CAAC;IACJ;;IAEA;AACJ;AACA;AACA;AACA;AACA;AACA;IACI,MAAMQ,UAAU,GAAG,SAAAA,CAAU;MAC3BH,kBAAkB;MAClBC,mBAAmB;MACnBC;IACF,CAAC,EAAE;MACD,MAAME,SAAS,GAAG;QAChBpC,iBAAiB;QACjBC,UAAU;QACVM,UAAU;QACVO,6BAA6B;QAC7BC,SAAS;QACTU,KAAK;QACLY,WAAW,EAAEjC;MACf,CAAC;MACD,MAAMkC,YAAY,GAAGC,IAAI,CAACC,SAAS,CAACJ,SAAS,CAAC;MAE9C,MAAMK,GAAG,GAAG5B,YAAY,GACtBqB,MAAM,CAACrE,UAAU,CAAC,IAAII,MAAM,CAAC,WAAW4C,YAAY,QAAQ,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAC1EqB,MAAM;;MAER;MACA,MAAMQ,cAAc,GAAGnB,QAAQ,GAC7B,GAAG,GAAGe,YAAY,GAAGf,QAAQ,GAC7B,GAAG,GAAGe,YAAY,GAAGhB,eAAe;MACtC,MAAMqB,IAAI,GAAGpB,QAAQ,IAAID,eAAe;MACxC,IAAIsB,OAAO;MACX,IAAIhD,mBAAmB,CAAChD,GAAG,CAAC8F,cAAc,CAAC,EAAE;QAC3CE,OAAO,GAAGhD,mBAAmB,CAAC/C,GAAG,CAAC6F,cAAc,CAAC;MACnD,CAAC,MAAM;QACL,MAAMG,GAAG,GAAG,IAAIzF,SAAS,CAACgF,SAAS,CAAC;QACpC,IAAIU,MAAM;QACV,IAAIvB,QAAQ,IAAInB,aAAa,EAAE;UAC7B0C,MAAM,GAAGD,GAAG,CAACE,gBAAgB,CAACJ,IAAI,CAAC;QACrC;;QAEA;QACA;QACA;QACAC,OAAO,GAAG,IAAIxF,SAAS,CAAC;UACtB4C,iBAAiB;UACjBC,UAAU,EAAE;YACV,GAAGA,UAAU;YACb,GAAG6C;UACL,CAAC;UACDvC,UAAU;UACVO,6BAA6B;UAC7BC,SAAS;UACTU,KAAK;UACLY,WAAW,EAAE;QACf,CAAC,CAAC;QACFzC,mBAAmB,CAAC9C,GAAG,CAAC4F,cAAc,EAAEE,OAAO,CAAC;MAClD;MAEA,MAAM;QACJI,OAAO,EAAE,CACP;UACEC;QACF,CAAC;MAEL,CAAC,GAAGL,OAAO,CAACM,aAAa,CAACT,GAAG,CAAC;MAE9B,IAAI,EAAE,MAAM,IAAIZ,GAAG,CAAC,EAAE;QACpBA,GAAG,CAACnC,IAAI,GAAGmC,GAAG,CAACF,MAAM,CAAC,CAAC,CAAC,CAACwB,MAAM;MACjC;;MAEA;MACA,MAAMC,aAAa;MAAG;AAC5B;AACA;AACA;AACA;MAAiCvB,GAAG,CAAEnC,IAAI,GAAGuC,mBAAmB;MAC1D,MAAMoB,YAAY,GAAG9F,4BAA4B;MAEjD,KAAK,MAAM;QACTkC,MAAM;QACNC,IAAI;QACJ4D,OAAO;QACPC,MAAM;QACNC;MACF,CAAC,IAAIP,QAAQ,EAAE;QACb,MAAMQ,SAAS,GAAGL,aAAa,GAAG1D,IAAI,GAAGpC,wBAAwB;QACjE,MAAMoG,QAAQ,GAAGL,YAAY;QAE3B;QACA3D,IAAI,IAAI,CAAC,GAAGsC,kBAAkB,GAAGvE,qBAAqB,GAAGD,iBAAiB,CAC3E,GAAGiC,MAAM;QAEVN,MAAM,CACJ,GAAG,GAAG2C,aAAa,GAAG,GAAG,IAAI0B,QAAQ,KAAK,CAAC,GAAG,OAAO,GAAG,SAAS,CAAC,IAC/DD,MAAM,GAAG,IAAI,GAAGA,MAAM,GAAG,GAAG,GAAG,EAAE,CAAC,GAAG,IAAI,GAC1CD,OAAO,EACT,IAAI,EACJ;UACE7D,MAAM,EAAEiE,QAAQ;UAChBhE,IAAI,EAAE+D;QACR,CACF,CAAC;MACH;IACF,CAAC;IAED,KAAK,MAAME,YAAY,IAAI/B,OAAO,EAAE;MAClCO,UAAU,CAACwB,YAAY,CAAC;IAC1B;EACF,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAMC,eAAe,GAAGA,CAACrC,QAAQ,EAAEsC,GAAG,GAAG,SAAS,KAAK;IACrD,IAAIvC,eAAe;IACnB,IAAI,CAACC,QAAQ,EAAE;MACb,MAAMuC,UAAU,GAAG7E,OAAO,CAAC8E,WAAW,CAAC,CAAC;MACxC,IAAI,OAAOD,UAAU,KAAK,QAAQ,IAAIA,UAAU,CAACE,QAAQ,CAAC,GAAG,CAAC,EAAE;QAC9D1C,eAAe,GAAGwC,UAAU,CAACG,OAAO,CAAC,WAAW,EAAE,IAAIJ,GAAG,EAAE,CAAC;MAC9D,CAAC,MAAM;QACLvC,eAAe,GAAG,SAASuC,GAAG,EAAE;MAClC;IACF;IAEA,OAAO;MACLvC,eAAe;MACfC;IACF,CAAC;EACH,CAAC;EAED,IAAIpB,aAAa,EAAE;IACjB,MAAM+D,YAAY,GAAGN,eAAe,CAACnD,wBAAwB,EAAE,gBAAgB,CAAC;IAChFrB,KAAK,CAAC+E,mBAAmB,CAAC,SAAS,EAAE,CAACtC,GAAG,EAAEC,aAAa,KAAK;MAC3D,IAAI,CAACD,GAAG,CAACuC,WAAW,CAACC,IAAI,CAAC,CAAC,EAAE;QAC3B;MACF;MAEAjD,WAAW,CAAC;QACVO,MAAM,EAAE,IAAIvC,KAAK,CAACkF,iBAAiB,CAACzC,GAAG,CAAC,GAAG;QAC3CC,aAAa;QACb,GAAGoC;MACL,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ;EAEA,IAAI7D,WAAW,EAAE;IACf,MAAM6D,YAAY,GAAGN,eAAe,CAAClD,sBAAsB,EAAE,cAAc,CAAC;IAC5EtB,KAAK,CAAC+E,mBAAmB,CAAC,OAAO,EAAE,CAACtC,GAAG,EAAEC,aAAa,KAAK;MACzD,IAAI,CAACD,GAAG,CAAClF,OAAO,IAAI,CAACkF,GAAG,CAAClF,OAAO,CAAC0H,IAAI,CAAC,CAAC,EAAE;QACvC;MACF;MAEAjD,WAAW,CAAC;QACVO,MAAM,EAAE,IAAIE,GAAG,CAAClF,OAAO,GAAG;QAC1BmF,aAAa;QACb,GAAGoC;MACL,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ;EAEA,IAAI5D,eAAe,EAAE;IACnB,MAAM4D,YAAY,GAAGN,eAAe,CAACjD,0BAA0B,EAAE,kBAAkB,CAAC;IACpFvB,KAAK,CAAC+E,mBAAmB,CAAC,UAAU,EAAE,CAACtC,GAAG,EAAEC,aAAa,KAAK;MAC5D,IAAI,CAACD,GAAG,CAAClF,OAAO,IAAI,CAACkF,GAAG,CAAClF,OAAO,CAAC0H,IAAI,CAAC,CAAC,EAAE;QACvC;MACF;MAEAjD,WAAW,CAAC;QACVO,MAAM,EAAE,IAAIE,GAAG,CAAClF,OAAO,GAAG;QAC1BmF,aAAa;QACb,GAAGoC;MACL,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ;EAEA,MAAMK,OAAO,GAAG,qBAAuBnF,KAAK,CAACoF,mBAAmB,CAAC;IAC/DD,OAAO,EAAE;EACX,CAAC,CAAE;EACH,IAAI,CAACnF,KAAK,CAACqF,MAAM,CAACF,OAAO,CAAC,EAAE;IAC1B;EACF;EAEA,MAAMG,oBAAoB,GAAGd,eAAe,CAACpD,gBAAgB,CAAC;EAE9DpB,KAAK,CAAC+E,mBAAmB,CAAC,SAAS,EAAE,CAACtC,GAAG,EAAEC,aAAa,KAAK;IAC3D,IAAIH,MAAM,GAAG,qBAAuBvC,KAAK,CAACkF,iBAAiB,CAACzC,GAAG,CAAE;IACjE,MAAM7D,KAAK,GAAG2D,MAAM,CAAC3D,KAAK,CAACN,eAAe,CAAC;IAE3C,IAAIwC,eAAe,KAAK,CAAClC,KAAK,IAAI,CAACA,KAAK,CAAC,CAAC,CAAC,CAACqG,IAAI,CAAC,CAAC,CAAC,EAAE;MACnDlF,MAAM,CAAC,mCAAmC,EAAE,IAAI,EAAE0C,GAAG,CAAC;IACxD;IAEAF,MAAM,GAAGA,MAAM,CAACsC,OAAO,CAACvG,eAAe,EAAE,EAAE,CAAC;IAC5C,MAAM,CACJ8D,KAAK,EACLH,IAAI,CACL,GAAGrD,KAAK,GAAGQ,YAAY,CAACR,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CACnC,CAAC,EAAE,CAAC,CACL;IAED,IAAI8B,gBAAgB,IAAI,CAACA,gBAAgB,CAAC6E,IAAI,CAAChD,MAAM,CAAC,IACpD5B,sBAAsB,IAAIA,sBAAsB,CAAC4E,IAAI,CAAChD,MAAM,CAAC,EAC7D;MACA;IACF;IAEA,MAAMC,OAAO,GAAG,EAAE;IAClB,IAAIF,QAAQ,GAAG,KAAK;IACpB,IAAI5B,gBAAgB,EAAE;MACpB,IAAIkC,kBAAkB,GAAG,CAAC;MAC1B,IAAIC,mBAAmB,GAAG,CAAC;MAE3B,IAAI2C,aAAa,GAAG,CAAC;MACrB,IAAIC,eAAe,GAAG,CAAC;MAEvB,IAAIC,WAAW;MACfhF,gBAAgB,CAACiF,SAAS,GAAG,CAAC;MAC9B,OAAO,CAACD,WAAW,GAAGhF,gBAAgB,CAACkF,IAAI,CAACrD,MAAM,CAAC,MAAM,IAAI,EAAE;QAC7D,MAAM;UACJ,GAAG,EAAEsD,EAAE;UACP,GAAG,EAAEC,EAAE;UACPC;QACF,CAAC,GAAGL,WAAW;;QAEf;QACA,MAAMM,QAAQ,GAAGzD,MAAM,CAAC/C,KAAK,CAACgG,aAAa,EAAEO,KAAK,CAAC;QAEnD,MAAM,CACJE,aAAa,EACb1G,QAAQ,CACT,GAAGH,YAAY,CAAC4G,QAAQ,CAAC;QAE1B,IAAIE,YAAY;QAChB,IAAIC,qBAAqB;QACzB,IAAIL,EAAE,EAAE;UACN,MAAMM,GAAG,GAAGP,EAAE,CAACQ,OAAO,CAACP,EAAE,CAAC;UAC1BI,YAAY,GAAGL,EAAE,CAACrG,KAAK,CAAC,CAAC,EAAE4G,GAAG,CAAC;UAC/BD,qBAAqB,GAAGzH,UAAU,CAACwH,YAAY,EAAE,IAAI,CAAC;QACxD,CAAC,MAAM;UACLA,YAAY,GAAG,EAAE;UACjBC,qBAAqB,GAAG,CAAC;QAC3B;QAEAtD,mBAAmB,IAAI4C,eAAe,GAAGQ,aAAa,GAAGE,qBAAqB;;QAE9E;QACA,IAAIA,qBAAqB,EAAE;UACzB,MAAMG,eAAe,GAAGJ,YAAY,CAAC1G,KAAK,CAAC0G,YAAY,CAACzG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAACX,MAAM;UAErF8D,kBAAkB,IAAI0D,eAAe;QACvC,CAAC,MAAM;UACL1D,kBAAkB,IAAIrD,QAAQ,GAAG2G,YAAY,CAACpH,MAAM;QACtD;QAEA,MAAMgE,MAAM,GAAGgD,EAAE,IAAID,EAAE;QACvBrD,OAAO,CAACG,IAAI,CAAC;UACXC,kBAAkB;UAClBC,mBAAmB;UACnBC;QACF,CAAC,CAAC;QACF0C,aAAa,GAAG9E,gBAAgB,CAACiF,SAAS;QAC1CF,eAAe,GAAG/G,UAAU,CAACoE,MAAM,EAAE,IAAI,CAAC;QAC1C,IAAI,CAACpC,gBAAgB,CAAC6F,MAAM,EAAE;UAC5B;QACF;MACF;MAEAjE,QAAQ,GAAG,IAAI;IACjB;IAEAN,WAAW,CAAC;MACVC,IAAI;MACJG,KAAK;MACLC,KAAK,EAAET,OAAO;MACdU,QAAQ;MACRC,MAAM;MACNC,OAAO;MACPC,GAAG;MACHC,aAAa;MACb,GAAG4C;IACL,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ,CAAC,EAAE;EACDkB,gBAAgB,EAAE,IAAI;EACtBC,IAAI,EAAE;IACJC,IAAI,EAAE;MACJ1B,WAAW,EAAE,yEAAyE;MACtF2B,GAAG,EAAE;IACP,CAAC;IACDC,MAAM,EAAE,CACN;MACEC,oBAAoB,EAAE,KAAK;MAC3BC,UAAU,EAAE;QACVlG,iBAAiB,EAAE;UACjBrD,OAAO,EAAE,IAAI;UACbwJ,IAAI,EAAE;QACR,CAAC;QACDlG,UAAU,EAAE;UACVkG,IAAI,EAAE;QACR,CAAC;QACDjG,eAAe,EAAE;UACfvD,OAAO,EAAE,KAAK;UACdwJ,IAAI,EAAE;QACR,CAAC;QACDhG,aAAa,EAAE;UACbxD,OAAO,EAAE,KAAK;UACdwJ,IAAI,EAAE;QACR,CAAC;QACD/F,aAAa,EAAE;UACbzD,OAAO,EAAE,IAAI;UACbwJ,IAAI,EAAE;QACR,CAAC;QACD9F,WAAW,EAAE;UACX1D,OAAO,EAAE,KAAK;UACdwJ,IAAI,EAAE;QACR,CAAC;QACD7F,eAAe,EAAE;UACf3D,OAAO,EAAE,KAAK;UACdwJ,IAAI,EAAE;QACR,CAAC;QACD5F,UAAU,EAAE;UACV4F,IAAI,EAAE;QACR,CAAC;QACDrG,gBAAgB,EAAE;UAChBqG,IAAI,EAAE;QACR,CAAC;QACD3F,gBAAgB,EAAE;UAChB2F,IAAI,EAAE;QACR,CAAC;QACD1F,wBAAwB,EAAE;UACxB0F,IAAI,EAAE;QACR,CAAC;QACDzF,sBAAsB,EAAE;UACtByF,IAAI,EAAE;QACR,CAAC;QACDxF,0BAA0B,EAAE;UAC1BwF,IAAI,EAAE;QACR,CAAC;QACDvF,qBAAqB,EAAE;UACrBjE,OAAO,EAAE,KAAK;UACdwJ,IAAI,EAAE;QACR,CAAC;QACDtF,YAAY,EAAE;UACZlE,OAAO,EAAE,CAAC;UACVwJ,IAAI,EAAE;QACR,CAAC;QACDpG,sBAAsB,EAAE;UACtBoG,IAAI,EAAE;QACR,CAAC;QACDrF,6BAA6B,EAAE;UAC7BnE,OAAO,EAAE,IAAI;UACbwJ,IAAI,EAAE;QACR;MACF,CAAC;MACDA,IAAI,EAAE;IACR,CAAC,CACF;IACDA,IAAI,EAAE;EACR;AACF,CAAC,CAAC;AAAAC,MAAA,CAAArH,OAAA,GAAAA,OAAA,CAAApC,OAAA","ignoreList":[]}
|
|
@@ -207,7 +207,9 @@ var _default = exports.default = (0, _iterateJsdoc.default)(({
|
|
|
207
207
|
|
|
208
208
|
// REQUIRED TYPE
|
|
209
209
|
const mustHaveTypePosition = utils.tagMustHaveTypePosition(tag.tag, otherModeMaps);
|
|
210
|
-
if (mustHaveTypePosition !== false && !tag.type
|
|
210
|
+
if (mustHaveTypePosition !== false && !tag.type &&
|
|
211
|
+
// Auto-added to settings and has own rule already, so don't duplicate
|
|
212
|
+
tag.tag !== 'next') {
|
|
211
213
|
const modeInfo = mustHaveTypePosition === true ? '' : ` in "${mode}" mode`;
|
|
212
214
|
report(`Tag @${tag.tag} must have a type${modeInfo}.`, null, tag);
|
|
213
215
|
continue;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validTypes.cjs","names":["_iterateJsdoc","_interopRequireDefault","require","_jsdoccomment","e","__esModule","default","inlineTags","Set","jsdocTypePrattKeywords","asExpression","suppressTypes","tryParsePathIgnoreError","path","tryParse","_default","exports","iterateJsdoc","context","jsdoc","report","settings","utils","allowEmptyNamepaths","options","mode","tag","tags","validNamepathParsing","namepath","tagName","has","handled","endChar","slice","includes","startsWith","startChar","charAt","validTypeParsing","type","parsedTypes","parse","traverse","node","typ","right","meta","position","problems","length","msg","reduce","str","message","thisNamepath","getTagDescription","replace","trim","test","thatNamepath","name","value","undefined","otherModeMaps","filter","mde","map","getTagStructureForMode","tagMightHaveNamePosition","modeInfo","description","mightHaveTypePosition","tagMightHaveTypePosition","tagMustHaveNamePosition","mustHaveTypePosition","tagMustHaveTypePosition","tagMissingRequiredTypeOrNamepath","hasTypePosition","Boolean","hasNameOrNamepathPosition","tagMightHaveNamepath","parseClosureTemplateTag","inlineTag","text","namepathOrURL","iterateAllJsdocs","docs","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 jsdocTypePrattKeywords = new Set([\n 'extends',\n 'import',\n 'is',\n 'readonly',\n 'typeof',\n]);\n\nconst asExpression = /as\\s+/v;\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 'checkEs5InheritanceCorrectnessConditions',\n 'checkPrototypalTypes',\n 'checkRegExp',\n 'checkTypes',\n 'checkVars',\n 'closureClassChecks',\n 'closureDepMethodUsageChecks',\n 'const',\n 'constantProperty',\n 'dangerousUnrecognizedTypeError',\n 'deprecated',\n 'duplicate',\n 'es5Strict',\n 'externsValidation',\n 'extraProvide',\n 'extraRequire',\n 'globalThis',\n 'invalidCasts',\n 'lateProvide',\n 'legacyGoogScopeRequire',\n 'lintChecks',\n 'lintVarDeclarations',\n 'messageConventions',\n 'misplacedTypeAnnotation',\n 'missingOverride',\n 'missingPolyfill',\n 'missingProperties',\n 'missingProvide',\n 'missingRequire',\n 'missingReturn',\n 'missingSourcesWarnings',\n 'moduleLoad',\n 'msgDescriptions',\n 'nonStandardJsDocs',\n 'partialAlias',\n 'polymer',\n 'reportUnknownTypes',\n 'strictCheckTypes',\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\n // Not documented?\n 'unusedPrivateMembers',\n 'uselessCode',\n 'useOfGoogProvide',\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 context,\n jsdoc,\n report,\n settings,\n utils,\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 (\n tryParsePathIgnoreError(namepath) ||\n jsdocTypePrattKeywords.has(namepath)\n ) {\n return true;\n }\n\n let handled = false;\n\n if (tagName) {\n switch (tagName) {\n case 'memberof':\n 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 'module': case 'requires': {\n if (!namepath.startsWith('module:')) {\n handled = tryParsePathIgnoreError(`module:${namepath}`);\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 === 'import') {\n // A named import will look like a type, but not be valid; we also don't\n // need to check the name/namepath\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 // Documentation like `@returns {@link SomeType}` is technically ambiguous. Specifically it\n // could either be intepreted as a type `\"@link SomeType\"` or a description `\"{@link SomeType}\"`.\n // However this is a good heuristic.\n if (tag.type.trim().startsWith('@')) {\n tag.description = `{${tag.type}} ${tag.description}`;\n tag.type = '';\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 'arg', 'argument', 'param',\n 'prop', 'property',\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 if (!tryParsePathIgnoreError(\n // May be an issue with the commas of\n // `utils.parseClosureTemplateTag`, so first try a raw\n // value; we really need a proper parser instead, however.\n tag.name.trim().replace(/^\\[?(?<name>.*?)=.*$/v, '$<name>'),\n )) {\n for (const namepath of utils.parseClosureTemplateTag(tag)) {\n validNamepathParsing(namepath);\n }\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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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"validTypes.cjs","names":["_iterateJsdoc","_interopRequireDefault","require","_jsdoccomment","e","__esModule","default","inlineTags","Set","jsdocTypePrattKeywords","asExpression","suppressTypes","tryParsePathIgnoreError","path","tryParse","_default","exports","iterateJsdoc","context","jsdoc","report","settings","utils","allowEmptyNamepaths","options","mode","tag","tags","validNamepathParsing","namepath","tagName","has","handled","endChar","slice","includes","startsWith","startChar","charAt","validTypeParsing","type","parsedTypes","parse","traverse","node","typ","right","meta","position","problems","length","msg","reduce","str","message","thisNamepath","getTagDescription","replace","trim","test","thatNamepath","name","value","undefined","otherModeMaps","filter","mde","map","getTagStructureForMode","tagMightHaveNamePosition","modeInfo","description","mightHaveTypePosition","tagMightHaveTypePosition","tagMustHaveNamePosition","mustHaveTypePosition","tagMustHaveTypePosition","tagMissingRequiredTypeOrNamepath","hasTypePosition","Boolean","hasNameOrNamepathPosition","tagMightHaveNamepath","parseClosureTemplateTag","inlineTag","text","namepathOrURL","iterateAllJsdocs","docs","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 jsdocTypePrattKeywords = new Set([\n 'extends',\n 'import',\n 'is',\n 'readonly',\n 'typeof',\n]);\n\nconst asExpression = /as\\s+/v;\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 'checkEs5InheritanceCorrectnessConditions',\n 'checkPrototypalTypes',\n 'checkRegExp',\n 'checkTypes',\n 'checkVars',\n 'closureClassChecks',\n 'closureDepMethodUsageChecks',\n 'const',\n 'constantProperty',\n 'dangerousUnrecognizedTypeError',\n 'deprecated',\n 'duplicate',\n 'es5Strict',\n 'externsValidation',\n 'extraProvide',\n 'extraRequire',\n 'globalThis',\n 'invalidCasts',\n 'lateProvide',\n 'legacyGoogScopeRequire',\n 'lintChecks',\n 'lintVarDeclarations',\n 'messageConventions',\n 'misplacedTypeAnnotation',\n 'missingOverride',\n 'missingPolyfill',\n 'missingProperties',\n 'missingProvide',\n 'missingRequire',\n 'missingReturn',\n 'missingSourcesWarnings',\n 'moduleLoad',\n 'msgDescriptions',\n 'nonStandardJsDocs',\n 'partialAlias',\n 'polymer',\n 'reportUnknownTypes',\n 'strictCheckTypes',\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\n // Not documented?\n 'unusedPrivateMembers',\n 'uselessCode',\n 'useOfGoogProvide',\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 context,\n jsdoc,\n report,\n settings,\n utils,\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 (\n tryParsePathIgnoreError(namepath) ||\n jsdocTypePrattKeywords.has(namepath)\n ) {\n return true;\n }\n\n let handled = false;\n\n if (tagName) {\n switch (tagName) {\n case 'memberof':\n 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 'module': case 'requires': {\n if (!namepath.startsWith('module:')) {\n handled = tryParsePathIgnoreError(`module:${namepath}`);\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 === 'import') {\n // A named import will look like a type, but not be valid; we also don't\n // need to check the name/namepath\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 // Documentation like `@returns {@link SomeType}` is technically ambiguous. Specifically it\n // could either be intepreted as a type `\"@link SomeType\"` or a description `\"{@link SomeType}\"`.\n // However this is a good heuristic.\n if (tag.type.trim().startsWith('@')) {\n tag.description = `{${tag.type}} ${tag.description}`;\n tag.type = '';\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 'arg', 'argument', 'param',\n 'prop', 'property',\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 // Auto-added to settings and has own rule already, so don't duplicate\n tag.tag !== 'next'\n ) {\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 if (!tryParsePathIgnoreError(\n // May be an issue with the commas of\n // `utils.parseClosureTemplateTag`, so first try a raw\n // value; we really need a proper parser instead, however.\n tag.name.trim().replace(/^\\[?(?<name>.*?)=.*$/v, '$<name>'),\n )) {\n for (const namepath of utils.parseClosureTemplateTag(tag)) {\n validNamepathParsing(namepath);\n }\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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","ignoreList":[]}
|
package/package.json
CHANGED
package/src/index-cjs.js
CHANGED
|
@@ -554,6 +554,15 @@ index.configs.examples = /** @type {import('eslint').Linter.Config[]} */ ([
|
|
|
554
554
|
],
|
|
555
555
|
name: 'jsdoc/examples/rules',
|
|
556
556
|
rules: {
|
|
557
|
+
// "always" newline rule at end unlikely in sample code
|
|
558
|
+
'@stylistic/eol-last': 0,
|
|
559
|
+
// Often wish to start `@example` code after newline; also may use
|
|
560
|
+
// empty lines for spacing
|
|
561
|
+
'@stylistic/no-multiple-empty-lines': 0,
|
|
562
|
+
|
|
563
|
+
// Can generally look nicer to pad a little even if code imposes more stringency
|
|
564
|
+
'@stylistic/padded-blocks': 0,
|
|
565
|
+
|
|
557
566
|
// "always" newline rule at end unlikely in sample code
|
|
558
567
|
'eol-last': 0,
|
|
559
568
|
|
|
@@ -568,6 +577,11 @@ index.configs.examples = /** @type {import('eslint').Linter.Config[]} */ ([
|
|
|
568
577
|
// The end of a multiline comment would end the comment the example is in.
|
|
569
578
|
'jsdoc/require-jsdoc': 0,
|
|
570
579
|
|
|
580
|
+
// See import/no-unresolved
|
|
581
|
+
'n/no-missing-import': 0,
|
|
582
|
+
|
|
583
|
+
'n/no-missing-require': 0,
|
|
584
|
+
|
|
571
585
|
// Unlikely to have inadvertent debugging within examples
|
|
572
586
|
'no-console': 0,
|
|
573
587
|
|
|
@@ -577,7 +591,6 @@ index.configs.examples = /** @type {import('eslint').Linter.Config[]} */ ([
|
|
|
577
591
|
|
|
578
592
|
// Many variables in examples will be `undefined`
|
|
579
593
|
'no-undef': 0,
|
|
580
|
-
|
|
581
594
|
// Common to define variables for clarity without always using them
|
|
582
595
|
'no-unused-vars': 0,
|
|
583
596
|
|
|
@@ -613,6 +626,13 @@ index.configs['default-expressions'] = /** @type {import('eslint').Linter.Config
|
|
|
613
626
|
name: 'jsdoc/default-expressions/rules',
|
|
614
627
|
rules: {
|
|
615
628
|
...index.configs.examples[1].rules,
|
|
629
|
+
'@stylistic/quotes': [
|
|
630
|
+
'error', 'double',
|
|
631
|
+
],
|
|
632
|
+
'@stylistic/semi': [
|
|
633
|
+
'error', 'never',
|
|
634
|
+
],
|
|
635
|
+
'@typescript-eslint/no-unused-expressions': 0,
|
|
616
636
|
'chai-friendly/no-unused-expressions': 0,
|
|
617
637
|
'no-empty-function': 0,
|
|
618
638
|
'no-new': 0,
|
package/src/index.js
CHANGED
|
@@ -560,6 +560,15 @@ index.configs.examples = /** @type {import('eslint').Linter.Config[]} */ ([
|
|
|
560
560
|
],
|
|
561
561
|
name: 'jsdoc/examples/rules',
|
|
562
562
|
rules: {
|
|
563
|
+
// "always" newline rule at end unlikely in sample code
|
|
564
|
+
'@stylistic/eol-last': 0,
|
|
565
|
+
// Often wish to start `@example` code after newline; also may use
|
|
566
|
+
// empty lines for spacing
|
|
567
|
+
'@stylistic/no-multiple-empty-lines': 0,
|
|
568
|
+
|
|
569
|
+
// Can generally look nicer to pad a little even if code imposes more stringency
|
|
570
|
+
'@stylistic/padded-blocks': 0,
|
|
571
|
+
|
|
563
572
|
// "always" newline rule at end unlikely in sample code
|
|
564
573
|
'eol-last': 0,
|
|
565
574
|
|
|
@@ -574,6 +583,11 @@ index.configs.examples = /** @type {import('eslint').Linter.Config[]} */ ([
|
|
|
574
583
|
// The end of a multiline comment would end the comment the example is in.
|
|
575
584
|
'jsdoc/require-jsdoc': 0,
|
|
576
585
|
|
|
586
|
+
// See import/no-unresolved
|
|
587
|
+
'n/no-missing-import': 0,
|
|
588
|
+
|
|
589
|
+
'n/no-missing-require': 0,
|
|
590
|
+
|
|
577
591
|
// Unlikely to have inadvertent debugging within examples
|
|
578
592
|
'no-console': 0,
|
|
579
593
|
|
|
@@ -583,7 +597,6 @@ index.configs.examples = /** @type {import('eslint').Linter.Config[]} */ ([
|
|
|
583
597
|
|
|
584
598
|
// Many variables in examples will be `undefined`
|
|
585
599
|
'no-undef': 0,
|
|
586
|
-
|
|
587
600
|
// Common to define variables for clarity without always using them
|
|
588
601
|
'no-unused-vars': 0,
|
|
589
602
|
|
|
@@ -619,6 +632,13 @@ index.configs['default-expressions'] = /** @type {import('eslint').Linter.Config
|
|
|
619
632
|
name: 'jsdoc/default-expressions/rules',
|
|
620
633
|
rules: {
|
|
621
634
|
...index.configs.examples[1].rules,
|
|
635
|
+
'@stylistic/quotes': [
|
|
636
|
+
'error', 'double',
|
|
637
|
+
],
|
|
638
|
+
'@stylistic/semi': [
|
|
639
|
+
'error', 'never',
|
|
640
|
+
],
|
|
641
|
+
'@typescript-eslint/no-unused-expressions': 0,
|
|
622
642
|
'chai-friendly/no-unused-expressions': 0,
|
|
623
643
|
'no-empty-function': 0,
|
|
624
644
|
'no-new': 0,
|
|
@@ -37,6 +37,16 @@ const countChars = (str, ch) => {
|
|
|
37
37
|
|
|
38
38
|
/** @type {import('eslint').Linter.RulesRecord} */
|
|
39
39
|
const defaultMdRules = {
|
|
40
|
+
// "always" newline rule at end unlikely in sample code
|
|
41
|
+
'@stylistic/eol-last': 0,
|
|
42
|
+
|
|
43
|
+
// Often wish to start `@example` code after newline; also may use
|
|
44
|
+
// empty lines for spacing
|
|
45
|
+
'@stylistic/no-multiple-empty-lines': 0,
|
|
46
|
+
|
|
47
|
+
// Can generally look nicer to pad a little even if code imposes more stringency
|
|
48
|
+
'@stylistic/padded-blocks': 0,
|
|
49
|
+
|
|
40
50
|
// "always" newline rule at end unlikely in sample code
|
|
41
51
|
'eol-last': 0,
|
|
42
52
|
|
|
@@ -51,13 +61,16 @@ const defaultMdRules = {
|
|
|
51
61
|
// The end of a multiline comment would end the comment the example is in.
|
|
52
62
|
'jsdoc/require-jsdoc': 0,
|
|
53
63
|
|
|
64
|
+
// See import/no-unresolved
|
|
65
|
+
'n/no-missing-import': 0,
|
|
66
|
+
'n/no-missing-require': 0,
|
|
67
|
+
|
|
54
68
|
// Unlikely to have inadvertent debugging within examples
|
|
55
69
|
'no-console': 0,
|
|
56
70
|
|
|
57
71
|
// Often wish to start `@example` code after newline; also may use
|
|
58
72
|
// empty lines for spacing
|
|
59
73
|
'no-multiple-empty-lines': 0,
|
|
60
|
-
|
|
61
74
|
// Many variables in examples will be `undefined`
|
|
62
75
|
'no-undef': 0,
|
|
63
76
|
|
|
@@ -66,6 +79,7 @@ const defaultMdRules = {
|
|
|
66
79
|
|
|
67
80
|
// See import/no-unresolved
|
|
68
81
|
'node/no-missing-import': 0,
|
|
82
|
+
|
|
69
83
|
'node/no-missing-require': 0,
|
|
70
84
|
|
|
71
85
|
// Can generally look nicer to pad a little even if code imposes more stringency
|
|
@@ -75,6 +89,13 @@ const defaultMdRules = {
|
|
|
75
89
|
/** @type {import('eslint').Linter.RulesRecord} */
|
|
76
90
|
const defaultExpressionRules = {
|
|
77
91
|
...defaultMdRules,
|
|
92
|
+
'@stylistic/quotes': [
|
|
93
|
+
'error', 'double',
|
|
94
|
+
],
|
|
95
|
+
'@stylistic/semi': [
|
|
96
|
+
'error', 'never',
|
|
97
|
+
],
|
|
98
|
+
'@typescript-eslint/no-unused-expressions': 'off',
|
|
78
99
|
'chai-friendly/no-unused-expressions': 'off',
|
|
79
100
|
'no-empty-function': 'off',
|
|
80
101
|
'no-new': 'off',
|
package/src/rules/validTypes.js
CHANGED
|
@@ -328,7 +328,10 @@ export default iterateJsdoc(({
|
|
|
328
328
|
|
|
329
329
|
// REQUIRED TYPE
|
|
330
330
|
const mustHaveTypePosition = utils.tagMustHaveTypePosition(tag.tag, otherModeMaps);
|
|
331
|
-
if (mustHaveTypePosition !== false && !tag.type
|
|
331
|
+
if (mustHaveTypePosition !== false && !tag.type &&
|
|
332
|
+
// Auto-added to settings and has own rule already, so don't duplicate
|
|
333
|
+
tag.tag !== 'next'
|
|
334
|
+
) {
|
|
332
335
|
const modeInfo = mustHaveTypePosition === true ? '' : ` in "${mode}" mode`;
|
|
333
336
|
report(`Tag @${tag.tag} must have a type${modeInfo}.`, null, tag);
|
|
334
337
|
|