eslint-plugin-jsdoc 56.1.2 → 57.0.1

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.
Files changed (50) hide show
  1. package/README.md +10 -11
  2. package/dist/cjs/index-cjs.d.ts +10 -0
  3. package/dist/cjs/iterateJsdoc.d.ts +21 -5
  4. package/dist/exportParser.cjs +0 -6
  5. package/dist/exportParser.cjs.map +1 -1
  6. package/dist/index-cjs.cjs +108 -3
  7. package/dist/index-cjs.cjs.map +1 -1
  8. package/dist/index-cjs.d.ts +10 -0
  9. package/dist/index-esm.cjs +36 -10
  10. package/dist/index-esm.cjs.map +1 -1
  11. package/dist/index-esm.d.ts +29 -3
  12. package/dist/index.cjs +142 -10
  13. package/dist/index.cjs.map +1 -1
  14. package/dist/index.d.ts +39 -3
  15. package/dist/iterateJsdoc.cjs +14 -8
  16. package/dist/iterateJsdoc.cjs.map +1 -1
  17. package/dist/iterateJsdoc.d.ts +21 -5
  18. package/dist/jsdocUtils.cjs +0 -3
  19. package/dist/jsdocUtils.cjs.map +1 -1
  20. package/dist/rules/checkParamNames.cjs +1 -1
  21. package/dist/rules/checkParamNames.cjs.map +1 -1
  22. package/dist/rules/checkPropertyNames.cjs +1 -1
  23. package/dist/rules/checkPropertyNames.cjs.map +1 -1
  24. package/dist/rules/informativeDocs.cjs +0 -3
  25. package/dist/rules/informativeDocs.cjs.map +1 -1
  26. package/dist/rules/matchName.cjs +0 -1
  27. package/dist/rules/matchName.cjs.map +1 -1
  28. package/dist/rules/noMultiAsterisks.cjs +0 -2
  29. package/dist/rules/noMultiAsterisks.cjs.map +1 -1
  30. package/dist/rules/requireReturnsCheck.cjs +0 -2
  31. package/dist/rules/requireReturnsCheck.cjs.map +1 -1
  32. package/dist/rules/sortTags.cjs +0 -2
  33. package/dist/rules/sortTags.cjs.map +1 -1
  34. package/dist/rules/tagLines.cjs +0 -2
  35. package/dist/rules/tagLines.cjs.map +1 -1
  36. package/package.json +2 -1
  37. package/src/exportParser.js +0 -6
  38. package/src/index-cjs.js +125 -0
  39. package/src/index-esm.js +43 -13
  40. package/src/index.js +165 -12
  41. package/src/iterateJsdoc.js +17 -8
  42. package/src/jsdocUtils.js +0 -3
  43. package/src/rules/checkParamNames.js +1 -1
  44. package/src/rules/checkPropertyNames.js +1 -1
  45. package/src/rules/informativeDocs.js +0 -3
  46. package/src/rules/matchName.js +0 -1
  47. package/src/rules/noMultiAsterisks.js +0 -1
  48. package/src/rules/requireReturnsCheck.js +0 -1
  49. package/src/rules/sortTags.js +0 -2
  50. package/src/rules/tagLines.js +0 -1
package/dist/index.cjs CHANGED
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.default = void 0;
6
+ exports.default = exports.buildForbidRuleDefinition = void 0;
7
7
  Object.defineProperty(exports, "getJsdocProcessorPlugin", {
8
8
  enumerable: true,
9
9
  get: function () {
@@ -13,6 +13,7 @@ Object.defineProperty(exports, "getJsdocProcessorPlugin", {
13
13
  exports.jsdoc = void 0;
14
14
  var _objectDeepMerge = require("object-deep-merge");
15
15
  var _getJsdocProcessorPlugin = require("./getJsdocProcessorPlugin.cjs");
16
+ var _iterateJsdoc = _interopRequireDefault(require("./iterateJsdoc.cjs"));
16
17
  var _checkAccess = _interopRequireDefault(require("./rules/checkAccess.cjs"));
17
18
  var _checkAlignment = _interopRequireDefault(require("./rules/checkAlignment.cjs"));
18
19
  var _checkExamples = _interopRequireDefault(require("./rules/checkExamples.cjs"));
@@ -75,6 +76,80 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
75
76
  /* AUTO-GENERATED BY build SCRIPT */
76
77
  /* eslint-disable perfectionist/sort-imports -- For auto-generate; Do not remove */
77
78
 
79
+ /**
80
+ * @param {{
81
+ * contexts: (string|{
82
+ * comment: string,
83
+ * context: string,
84
+ * message: string
85
+ * })[],
86
+ * description?: string,
87
+ * contextName?: string
88
+ * url?: string,
89
+ * }} cfg
90
+ * @returns {import('@eslint/core').RuleDefinition<
91
+ * import('@eslint/core').RuleDefinitionTypeOptions
92
+ * >}
93
+ */
94
+ const buildForbidRuleDefinition = ({
95
+ contextName,
96
+ contexts,
97
+ description,
98
+ url
99
+ }) => {
100
+ return (0, _iterateJsdoc.default)(({
101
+ // context,
102
+ info: {
103
+ comment
104
+ },
105
+ report,
106
+ utils
107
+ }) => {
108
+ const {
109
+ contextStr,
110
+ foundContext
111
+ } = utils.findContext(contexts, comment);
112
+
113
+ // We are not on the *particular* matching context/comment, so don't assume
114
+ // we need reporting
115
+ if (!foundContext) {
116
+ return;
117
+ }
118
+ const message = /** @type {import('./iterateJsdoc.js').ContextObject} */foundContext?.message ?? 'Syntax is restricted: {{context}}' + (comment ? ' with {{comment}}' : '');
119
+ report(message, null, null, comment ? {
120
+ comment,
121
+ context: contextStr
122
+ } : {
123
+ context: contextStr
124
+ });
125
+ }, {
126
+ contextSelected: true,
127
+ meta: {
128
+ docs: {
129
+ description: description ?? contextName ?? 'Reports when certain comment structures are present.',
130
+ url: url ?? 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-restricted-syntax.md#repos-sticky-header'
131
+ },
132
+ fixable: 'code',
133
+ schema: [],
134
+ type: 'suggestion'
135
+ },
136
+ modifyContext: context => {
137
+ // Reproduce context object with our own `contexts`
138
+ const propertyDescriptors = Object.getOwnPropertyDescriptors(context);
139
+ return Object.create(Object.getPrototypeOf(context), {
140
+ ...propertyDescriptors,
141
+ options: {
142
+ ...propertyDescriptors.options,
143
+ value: [{
144
+ contexts
145
+ }]
146
+ }
147
+ });
148
+ },
149
+ nonGlobalSettings: true
150
+ });
151
+ };
152
+
78
153
  /* eslint-disable jsdoc/valid-types -- Bug */
79
154
  /**
80
155
  * @typedef {"recommended" | "stylistic" | "contents" | "logical" | "requirements"} ConfigGroups
@@ -85,6 +160,7 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
85
160
  * import('eslint').Linter.Config>
86
161
  * }}
87
162
  */
163
+ exports.buildForbidRuleDefinition = buildForbidRuleDefinition;
88
164
  const index = {};
89
165
  /* eslint-enable jsdoc/valid-types -- Bug */
90
166
  index.configs = {};
@@ -126,6 +202,15 @@ index.rules = {
126
202
  'require-file-overview': _requireFileOverview.default,
127
203
  'require-hyphen-before-param-description': _requireHyphenBeforeParamDescription.default,
128
204
  'require-jsdoc': _requireJsdoc.default,
205
+ 'require-next-type': buildForbidRuleDefinition({
206
+ contexts: [{
207
+ comment: 'JsdocBlock:has(JsdocTag[tag=next]:not([parsedType.type]))',
208
+ context: 'any',
209
+ message: '@next should have a type'
210
+ }],
211
+ description: 'Requires a type for @next tags',
212
+ url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-next-type.md#repos-sticky-header'
213
+ }),
129
214
  'require-param': _requireParam.default,
130
215
  'require-param-description': _requireParamDescription.default,
131
216
  'require-param-name': _requireParamName.default,
@@ -140,8 +225,26 @@ index.rules = {
140
225
  'require-returns-type': _requireReturnsType.default,
141
226
  'require-template': _requireTemplate.default,
142
227
  'require-throws': _requireThrows.default,
228
+ 'require-throws-type': buildForbidRuleDefinition({
229
+ contexts: [{
230
+ comment: 'JsdocBlock:has(JsdocTag[tag=throws]:not([parsedType.type]))',
231
+ context: 'any',
232
+ message: '@throws should have a type'
233
+ }],
234
+ description: 'Requires a type for @throws tags',
235
+ url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-throws-type.md#repos-sticky-header'
236
+ }),
143
237
  'require-yields': _requireYields.default,
144
238
  'require-yields-check': _requireYieldsCheck.default,
239
+ 'require-yields-type': buildForbidRuleDefinition({
240
+ contexts: [{
241
+ comment: 'JsdocBlock:has(JsdocTag[tag=yields]:not([parsedType.type]))',
242
+ context: 'any',
243
+ message: '@yields should have a type'
244
+ }],
245
+ description: 'Requires a type for @yields tags',
246
+ url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-yields-type.md#repos-sticky-header'
247
+ }),
145
248
  'sort-tags': _sortTags.default,
146
249
  'tag-lines': _tagLines.default,
147
250
  'text-escaping': _textEscaping.default,
@@ -201,6 +304,7 @@ const createRecommendedRuleset = (warnOrError, flatName) => {
201
304
  'jsdoc/require-file-overview': 'off',
202
305
  'jsdoc/require-hyphen-before-param-description': 'off',
203
306
  'jsdoc/require-jsdoc': warnOrError,
307
+ 'jsdoc/require-next-type': warnOrError,
204
308
  'jsdoc/require-param': warnOrError,
205
309
  'jsdoc/require-param-description': warnOrError,
206
310
  'jsdoc/require-param-name': warnOrError,
@@ -215,8 +319,10 @@ const createRecommendedRuleset = (warnOrError, flatName) => {
215
319
  'jsdoc/require-returns-type': warnOrError,
216
320
  'jsdoc/require-template': 'off',
217
321
  'jsdoc/require-throws': 'off',
322
+ 'jsdoc/require-throws-type': warnOrError,
218
323
  'jsdoc/require-yields': warnOrError,
219
324
  'jsdoc/require-yields-check': warnOrError,
325
+ 'jsdoc/require-yields-type': warnOrError,
220
326
  'jsdoc/sort-tags': 'off',
221
327
  'jsdoc/tag-lines': warnOrError,
222
328
  'jsdoc/text-escaping': 'off',
@@ -298,7 +404,7 @@ const createContentsTypescriptFlavorRuleset = createStandaloneRulesetFactory(con
298
404
  const logicalRules = ['jsdoc/check-access', 'jsdoc/check-param-names', 'jsdoc/check-property-names', 'jsdoc/check-syntax', 'jsdoc/check-tag-names', 'jsdoc/check-template-names', 'jsdoc/check-types', 'jsdoc/check-values', 'jsdoc/empty-tags', 'jsdoc/implements-on-classes', 'jsdoc/require-returns-check', 'jsdoc/require-yields-check', 'jsdoc/no-bad-blocks', 'jsdoc/no-defaults', 'jsdoc/no-types', 'jsdoc/no-undefined-types', 'jsdoc/valid-types'];
299
405
  const createLogicalTypescriptRuleset = createStandaloneRulesetFactory(logicalRules);
300
406
  const createLogicalTypescriptFlavorRuleset = createStandaloneRulesetFactory(logicalRules);
301
- const requirementsRules = ['jsdoc/require-example', 'jsdoc/require-jsdoc', 'jsdoc/require-param', 'jsdoc/require-param-description', 'jsdoc/require-param-name', 'jsdoc/require-property', 'jsdoc/require-property-description', 'jsdoc/require-property-name', 'jsdoc/require-returns', 'jsdoc/require-returns-description', 'jsdoc/require-yields'];
407
+ const requirementsRules = ['jsdoc/require-example', 'jsdoc/require-jsdoc', 'jsdoc/require-next-type', 'jsdoc/require-param', 'jsdoc/require-param-description', 'jsdoc/require-param-name', 'jsdoc/require-property', 'jsdoc/require-property-description', 'jsdoc/require-property-name', 'jsdoc/require-returns', 'jsdoc/require-returns-description', 'jsdoc/require-throws-type', 'jsdoc/require-yields', 'jsdoc/require-yields-type'];
302
408
  const createRequirementsTypeScriptRuleset = createStandaloneRulesetFactory(requirementsRules);
303
409
  const createRequirementsTypeScriptFlavorRuleset = createStandaloneRulesetFactory([...requirementsRules, 'jsdoc/require-param-type', 'jsdoc/require-property-type', 'jsdoc/require-returns-type', 'jsdoc/require-template']);
304
410
  const stylisticRules = ['jsdoc/check-alignment', 'jsdoc/check-line-alignment', 'jsdoc/lines-before-block', 'jsdoc/multiline-blocks', 'jsdoc/no-multi-asterisks', 'jsdoc/require-asterisk-prefix', ['jsdoc/require-hyphen-before-param-description', 'never'], 'jsdoc/tag-lines'];
@@ -423,10 +529,23 @@ var _default = exports.default = index;
423
529
  /**
424
530
  * @type {((
425
531
  * cfg?: import('eslint').Linter.Config & {
426
- * mergeSettings?: boolean,
427
532
  * config?: `flat/${ConfigGroups}${ConfigVariants}${ErrorLevelVariants}`,
533
+ * mergeSettings?: boolean,
428
534
  * settings?: Partial<import('./iterateJsdoc.js').Settings>,
429
- * rules?: {[key in keyof import('./rules.d.ts').Rules]?: import('eslint').Linter.RuleEntry<import('./rules.d.ts').Rules[key]>}
535
+ * rules?: {[key in keyof import('./rules.d.ts').Rules]?: import('eslint').Linter.RuleEntry<import('./rules.d.ts').Rules[key]>},
536
+ * extraRuleDefinitions?: {
537
+ * forbid: {
538
+ * [contextName: string]: {
539
+ * description?: string,
540
+ * url?: string,
541
+ * contexts: (string|{
542
+ * message: string,
543
+ * context: string,
544
+ * comment: string
545
+ * })[]
546
+ * }
547
+ * }
548
+ * }
430
549
  * }
431
550
  * ) => import('eslint').Linter.Config)}
432
551
  */
@@ -482,6 +601,25 @@ const jsdoc = function (cfg) {
482
601
  if (cfg.processor) {
483
602
  outputConfig.processor = cfg.processor;
484
603
  }
604
+ if (cfg.extraRuleDefinitions) {
605
+ if (!outputConfig.plugins?.jsdoc?.rules) {
606
+ throw new Error('JSDoc plugin required for `extraRuleDefinitions`');
607
+ }
608
+ if (cfg.extraRuleDefinitions.forbid) {
609
+ for (const [contextName, {
610
+ contexts,
611
+ description,
612
+ url
613
+ }] of Object.entries(cfg.extraRuleDefinitions.forbid)) {
614
+ outputConfig.plugins.jsdoc.rules[`forbid-${contextName}`] = buildForbidRuleDefinition({
615
+ contextName,
616
+ contexts,
617
+ description,
618
+ url
619
+ });
620
+ }
621
+ }
622
+ }
485
623
  }
486
624
  outputConfig.settings = {
487
625
  jsdoc: cfg?.mergeSettings === false ? cfg.settings : (0, _objectDeepMerge.merge)({}, cfg?.settings ?? {}, cfg?.config?.includes('recommended') ? {
@@ -490,12 +628,6 @@ const jsdoc = function (cfg) {
490
628
  structuredTags: {
491
629
  next: {
492
630
  required: ['type']
493
- },
494
- throws: {
495
- required: ['type']
496
- },
497
- yields: {
498
- required: ['type']
499
631
  }
500
632
  }
501
633
  } : {})
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["_objectDeepMerge","require","_getJsdocProcessorPlugin","_checkAccess","_interopRequireDefault","_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","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","Object","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","exports","cfg","outputConfig","TypeError","basePath","ignores","language","languageOptions","linterOptions","settings","mergeSettings","merge","includes","structuredTags","next","required","throws","yields"],"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 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/* 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-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-yields': requireYields,\n 'require-yields-check': requireYieldsCheck,\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-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-yields': warnOrError,\n 'jsdoc/require-yields-check': 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-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-yields',\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 * mergeSettings?: boolean,\n * config?: `flat/${ConfigGroups}${ConfigVariants}${ErrorLevelVariants}`,\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 * }\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\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 throws: {\n required: [\n 'type',\n ],\n },\n yields: {\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":[]}
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/rules/no-restricted-syntax.md#repos-sticky-header',\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":[]}
package/dist/index.d.ts CHANGED
@@ -1,19 +1,55 @@
1
+ export function buildForbidRuleDefinition({ contextName, contexts, description, url, }: {
2
+ contexts: (string | {
3
+ comment: string;
4
+ context: string;
5
+ message: string;
6
+ })[];
7
+ description?: string;
8
+ contextName?: string;
9
+ url?: string;
10
+ }): import("@eslint/core").RuleDefinition<import("@eslint/core").RuleDefinitionTypeOptions>;
1
11
  export default index;
2
12
  /**
3
13
  * @type {((
4
14
  * cfg?: import('eslint').Linter.Config & {
5
- * mergeSettings?: boolean,
6
15
  * config?: `flat/${ConfigGroups}${ConfigVariants}${ErrorLevelVariants}`,
16
+ * mergeSettings?: boolean,
7
17
  * settings?: Partial<import('./iterateJsdoc.js').Settings>,
8
- * rules?: {[key in keyof import('./rules.d.ts').Rules]?: import('eslint').Linter.RuleEntry<import('./rules.d.ts').Rules[key]>}
18
+ * rules?: {[key in keyof import('./rules.d.ts').Rules]?: import('eslint').Linter.RuleEntry<import('./rules.d.ts').Rules[key]>},
19
+ * extraRuleDefinitions?: {
20
+ * forbid: {
21
+ * [contextName: string]: {
22
+ * description?: string,
23
+ * url?: string,
24
+ * contexts: (string|{
25
+ * message: string,
26
+ * context: string,
27
+ * comment: string
28
+ * })[]
29
+ * }
30
+ * }
31
+ * }
9
32
  * }
10
33
  * ) => import('eslint').Linter.Config)}
11
34
  */
12
35
  export const jsdoc: ((cfg?: import("eslint").Linter.Config & {
13
- mergeSettings?: boolean;
14
36
  config?: `flat/${ConfigGroups}${ConfigVariants}${ErrorLevelVariants}`;
37
+ mergeSettings?: boolean;
15
38
  settings?: Partial<import("./iterateJsdoc.js").Settings>;
16
39
  rules?: { [key in keyof import("./rules.d.ts").Rules]?: import("eslint").Linter.RuleEntry<import("./rules.d.ts").Rules[key]>; };
40
+ extraRuleDefinitions?: {
41
+ forbid: {
42
+ [contextName: string]: {
43
+ description?: string;
44
+ url?: string;
45
+ contexts: (string | {
46
+ message: string;
47
+ context: string;
48
+ comment: string;
49
+ })[];
50
+ };
51
+ };
52
+ };
17
53
  }) => import("eslint").Linter.Config);
18
54
  export { getJsdocProcessorPlugin } from "./getJsdocProcessorPlugin.js";
19
55
  export type ConfigGroups = "recommended" | "stylistic" | "contents" | "logical" | "requirements";
@@ -550,8 +550,6 @@ const {
550
550
  seedTokens
551
551
  } = _commentParser.util;
552
552
 
553
- // todo: Change these `any` types once importing types properly.
554
-
555
553
  /**
556
554
  * Should use ESLint rule's typing.
557
555
  * @typedef {import('eslint').Rule.RuleMetaData} EslintRuleMeta
@@ -1506,8 +1504,14 @@ const getUtils = (node, jsdoc, jsdocNode, settings, report, context, sc, iterati
1506
1504
  * mode: import('./jsdocUtils.js').ParserMode,
1507
1505
  * preferredTypes: PreferredTypes,
1508
1506
  * structuredTags: StructuredTags,
1509
- * [name: string]: any,
1510
- * contexts?: Context[]
1507
+ * contexts?: Context[],
1508
+ * augmentsExtendsReplacesDocs?: boolean,
1509
+ * ignoreReplacesDocs?: boolean,
1510
+ * implementsReplacesDocs?: boolean,
1511
+ * overrideReplacesDocs?: boolean,
1512
+ * ignoreInternal?: boolean,
1513
+ * ignorePrivate?: boolean,
1514
+ * exemptDestructuredRootsFromChecks?: boolean,
1511
1515
  * }} Settings
1512
1516
  */
1513
1517
 
@@ -1658,7 +1662,7 @@ const makeReport = (context, commentNode) => {
1658
1662
  * settings: Settings,
1659
1663
  * utils: BasicUtils,
1660
1664
  * }
1661
- * ) => any } JsdocVisitorBasic
1665
+ * ) => void } JsdocVisitorBasic
1662
1666
  */
1663
1667
  /**
1664
1668
  * @typedef {(
@@ -1683,7 +1687,7 @@ const makeReport = (context, commentNode) => {
1683
1687
  * settings: Settings,
1684
1688
  * utils: Utils,
1685
1689
  * }
1686
- * ) => any } JsdocVisitor
1690
+ * ) => void } JsdocVisitor
1687
1691
  */
1688
1692
 
1689
1693
  /**
@@ -1777,6 +1781,7 @@ const getIndentAndJSDoc = function (lines, jsdocNode) {
1777
1781
  * @property {EslintRuleMeta} meta ESLint rule meta
1778
1782
  * @property {import('./jsdocUtils.js').DefaultContexts} [contextDefaults] Any default contexts
1779
1783
  * @property {true} [contextSelected] Whether to force a `contexts` check
1784
+ * @property {(context: import('eslint').Rule.RuleContext) => import('eslint').Rule.RuleContext} [modifyContext] Modify the rule's context object
1780
1785
  * @property {true} [iterateAllJsdocs] Whether to iterate all JSDoc blocks by default
1781
1786
  * regardless of context
1782
1787
  * @property {true} [checkPrivate] Whether to check `@private` blocks (normally exempted)
@@ -2003,13 +2008,14 @@ function iterateJsdoc(iterator, ruleConfig) {
2003
2008
  return {
2004
2009
  /**
2005
2010
  * The entrypoint for the JSDoc rule.
2006
- * @param {import('eslint').Rule.RuleContext} context
2011
+ * @param {import('eslint').Rule.RuleContext} ctx
2007
2012
  * a reference to the context which hold all important information
2008
2013
  * like settings and the sourcecode to check.
2009
2014
  * @returns {import('eslint').Rule.RuleListener}
2010
2015
  * a listener with parser callback function.
2011
2016
  */
2012
- create(context) {
2017
+ create(ctx) {
2018
+ const context = ruleConfig.modifyContext ? ruleConfig.modifyContext(ctx) : ctx;
2013
2019
  const settings = getSettings(context);
2014
2020
  if (!settings) {
2015
2021
  return {};