eslint-plugin-jsdoc 63.3.3 → 64.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (269) hide show
  1. package/package.json +23 -48
  2. package/src/index.js +3 -6
  3. package/dist/WarnSettings.cjs +0 -38
  4. package/dist/WarnSettings.cjs.map +0 -1
  5. package/dist/alignTransform.cjs +0 -402
  6. package/dist/alignTransform.cjs.map +0 -1
  7. package/dist/buildForbidRuleDefinition.cjs +0 -101
  8. package/dist/buildForbidRuleDefinition.cjs.map +0 -1
  9. package/dist/buildRejectOrPreferRuleDefinition.cjs +0 -352
  10. package/dist/buildRejectOrPreferRuleDefinition.cjs.map +0 -1
  11. package/dist/cjs/WarnSettings.d.ts +0 -16
  12. package/dist/cjs/alignTransform.d.ts +0 -33
  13. package/dist/cjs/buildForbidRuleDefinition.d.ts +0 -14
  14. package/dist/cjs/buildRejectOrPreferRuleDefinition.d.ts +0 -8
  15. package/dist/cjs/defaultTagOrder.d.ts +0 -4
  16. package/dist/cjs/exportParser.d.ts +0 -40
  17. package/dist/cjs/getDefaultTagStructureForMode.d.ts +0 -10
  18. package/dist/cjs/getJsdocProcessorPlugin.d.cts +0 -5
  19. package/dist/cjs/getJsdocProcessorPlugin.d.ts +0 -66
  20. package/dist/cjs/index-cjs.d.ts +0 -26
  21. package/dist/cjs/index.cjs.d.cts +0 -2
  22. package/dist/cjs/iterateJsdoc.d.cts +0 -7
  23. package/dist/cjs/iterateJsdoc.d.ts +0 -495
  24. package/dist/cjs/jsdocUtils.d.ts +0 -500
  25. package/dist/cjs/rules/checkAccess.d.ts +0 -2
  26. package/dist/cjs/rules/checkAlignment.d.ts +0 -2
  27. package/dist/cjs/rules/checkExamples.d.ts +0 -3
  28. package/dist/cjs/rules/checkIndentation.d.ts +0 -2
  29. package/dist/cjs/rules/checkLineAlignment.d.ts +0 -9
  30. package/dist/cjs/rules/checkParamNames.d.ts +0 -2
  31. package/dist/cjs/rules/checkPropertyNames.d.ts +0 -2
  32. package/dist/cjs/rules/checkSyntax.d.ts +0 -2
  33. package/dist/cjs/rules/checkTagNames.d.ts +0 -2
  34. package/dist/cjs/rules/checkTemplateNames.d.ts +0 -2
  35. package/dist/cjs/rules/checkTypes.d.ts +0 -7
  36. package/dist/cjs/rules/checkValues.d.ts +0 -2
  37. package/dist/cjs/rules/convertToJsdocComments.d.ts +0 -266
  38. package/dist/cjs/rules/emptyTags.d.ts +0 -2
  39. package/dist/cjs/rules/escapeInlineTags.d.ts +0 -2
  40. package/dist/cjs/rules/implementsOnClasses.d.ts +0 -2
  41. package/dist/cjs/rules/importsAsDependencies.d.ts +0 -2
  42. package/dist/cjs/rules/informativeDocs.d.ts +0 -2
  43. package/dist/cjs/rules/linesBeforeBlock.d.ts +0 -2
  44. package/dist/cjs/rules/matchDescription.d.ts +0 -2
  45. package/dist/cjs/rules/matchName.d.ts +0 -2
  46. package/dist/cjs/rules/multilineBlocks.d.ts +0 -2
  47. package/dist/cjs/rules/noBadBlocks.d.ts +0 -2
  48. package/dist/cjs/rules/noBlankBlockDescriptions.d.ts +0 -2
  49. package/dist/cjs/rules/noBlankBlocks.d.ts +0 -2
  50. package/dist/cjs/rules/noDefaults.d.ts +0 -2
  51. package/dist/cjs/rules/noMissingSyntax.d.ts +0 -9
  52. package/dist/cjs/rules/noMultiAsterisks.d.ts +0 -2
  53. package/dist/cjs/rules/noRestrictedSyntax.d.ts +0 -2
  54. package/dist/cjs/rules/noTypes.d.ts +0 -2
  55. package/dist/cjs/rules/noUndefinedTypes.d.ts +0 -2
  56. package/dist/cjs/rules/normalizeSeeLinks.d.ts +0 -2
  57. package/dist/cjs/rules/preferImportTag.d.ts +0 -2
  58. package/dist/cjs/rules/requireAsteriskPrefix.d.ts +0 -2
  59. package/dist/cjs/rules/requireDescription.d.ts +0 -2
  60. package/dist/cjs/rules/requireDescriptionCompleteSentence.d.ts +0 -2
  61. package/dist/cjs/rules/requireExample.d.ts +0 -2
  62. package/dist/cjs/rules/requireFileOverview.d.ts +0 -2
  63. package/dist/cjs/rules/requireHyphenBeforeParamDescription.d.ts +0 -2
  64. package/dist/cjs/rules/requireJsdoc.d.ts +0 -24
  65. package/dist/cjs/rules/requireParam.d.ts +0 -3
  66. package/dist/cjs/rules/requireParamDescription.d.ts +0 -2
  67. package/dist/cjs/rules/requireParamName.d.ts +0 -2
  68. package/dist/cjs/rules/requireParamType.d.ts +0 -2
  69. package/dist/cjs/rules/requireProperty.d.ts +0 -2
  70. package/dist/cjs/rules/requirePropertyDescription.d.ts +0 -2
  71. package/dist/cjs/rules/requirePropertyName.d.ts +0 -2
  72. package/dist/cjs/rules/requirePropertyType.d.ts +0 -2
  73. package/dist/cjs/rules/requireRejects.d.ts +0 -2
  74. package/dist/cjs/rules/requireReturns.d.ts +0 -2
  75. package/dist/cjs/rules/requireReturnsCheck.d.ts +0 -2
  76. package/dist/cjs/rules/requireReturnsDescription.d.ts +0 -2
  77. package/dist/cjs/rules/requireReturnsType.d.ts +0 -2
  78. package/dist/cjs/rules/requireTags.d.ts +0 -2
  79. package/dist/cjs/rules/requireTemplate.d.ts +0 -2
  80. package/dist/cjs/rules/requireThrows.d.ts +0 -2
  81. package/dist/cjs/rules/requireYields.d.ts +0 -2
  82. package/dist/cjs/rules/requireYieldsCheck.d.ts +0 -2
  83. package/dist/cjs/rules/sortTags.d.ts +0 -2
  84. package/dist/cjs/rules/tagLines.d.ts +0 -2
  85. package/dist/cjs/rules/textEscaping.d.ts +0 -2
  86. package/dist/cjs/rules/tsMethodSignatureStyle.d.ts +0 -2
  87. package/dist/cjs/rules/tsNoEmptyObjectType.d.ts +0 -2
  88. package/dist/cjs/rules/tsNoUnnecessaryTemplateExpression.d.ts +0 -2
  89. package/dist/cjs/rules/tsPreferFunctionType.d.ts +0 -2
  90. package/dist/cjs/rules/typeFormatting.d.ts +0 -2
  91. package/dist/cjs/rules/validTypes.d.ts +0 -2
  92. package/dist/cjs/tagNames.d.ts +0 -15
  93. package/dist/cjs/utils/hasReturnValue.d.ts +0 -19
  94. package/dist/defaultTagOrder.cjs +0 -46
  95. package/dist/defaultTagOrder.cjs.map +0 -1
  96. package/dist/exportParser.cjs +0 -732
  97. package/dist/exportParser.cjs.map +0 -1
  98. package/dist/generateDocs.cjs +0 -342
  99. package/dist/generateDocs.cjs.map +0 -1
  100. package/dist/generateOptions.cjs +0 -62
  101. package/dist/generateOptions.cjs.map +0 -1
  102. package/dist/generateRule.cjs +0 -248
  103. package/dist/generateRule.cjs.map +0 -1
  104. package/dist/generateRuleTypes.cjs +0 -24
  105. package/dist/generateRuleTypes.cjs.map +0 -1
  106. package/dist/getDefaultTagStructureForMode.cjs +0 -289
  107. package/dist/getDefaultTagStructureForMode.cjs.map +0 -1
  108. package/dist/getJsdocProcessorPlugin.cjs +0 -587
  109. package/dist/getJsdocProcessorPlugin.cjs.map +0 -1
  110. package/dist/getJsdocProcessorPlugin.cts +0 -5
  111. package/dist/index-cjs.cjs +0 -600
  112. package/dist/index-cjs.cjs.map +0 -1
  113. package/dist/index-cjs.d.ts +0 -27
  114. package/dist/index-esm.cjs +0 -162
  115. package/dist/index-esm.cjs.map +0 -1
  116. package/dist/index-esm.d.ts +0 -72
  117. package/dist/index.cjs +0 -748
  118. package/dist/index.cjs.cts +0 -3
  119. package/dist/index.cjs.map +0 -1
  120. package/dist/iterateJsdoc.cjs +0 -2150
  121. package/dist/iterateJsdoc.cjs.map +0 -1
  122. package/dist/iterateJsdoc.cts +0 -7
  123. package/dist/jsdocUtils.cjs +0 -1786
  124. package/dist/jsdocUtils.cjs.map +0 -1
  125. package/dist/rules/checkAccess.cjs +0 -40
  126. package/dist/rules/checkAccess.cjs.map +0 -1
  127. package/dist/rules/checkAlignment.cjs +0 -78
  128. package/dist/rules/checkAlignment.cjs.map +0 -1
  129. package/dist/rules/checkExamples.cjs +0 -521
  130. package/dist/rules/checkExamples.cjs.map +0 -1
  131. package/dist/rules/checkIndentation.cjs +0 -170
  132. package/dist/rules/checkIndentation.cjs.map +0 -1
  133. package/dist/rules/checkLineAlignment.cjs +0 -398
  134. package/dist/rules/checkLineAlignment.cjs.map +0 -1
  135. package/dist/rules/checkParamNames.cjs +0 -407
  136. package/dist/rules/checkParamNames.cjs.map +0 -1
  137. package/dist/rules/checkPropertyNames.cjs +0 -135
  138. package/dist/rules/checkPropertyNames.cjs.map +0 -1
  139. package/dist/rules/checkSyntax.cjs +0 -38
  140. package/dist/rules/checkSyntax.cjs.map +0 -1
  141. package/dist/rules/checkTagNames.cjs +0 -312
  142. package/dist/rules/checkTagNames.cjs.map +0 -1
  143. package/dist/rules/checkTemplateNames.cjs +0 -192
  144. package/dist/rules/checkTemplateNames.cjs.map +0 -1
  145. package/dist/rules/checkTypes.cjs +0 -111
  146. package/dist/rules/checkTypes.cjs.map +0 -1
  147. package/dist/rules/checkValues.cjs +0 -166
  148. package/dist/rules/checkValues.cjs.map +0 -1
  149. package/dist/rules/convertToJsdocComments.cjs +0 -356
  150. package/dist/rules/convertToJsdocComments.cjs.map +0 -1
  151. package/dist/rules/emptyTags.cjs +0 -98
  152. package/dist/rules/emptyTags.cjs.map +0 -1
  153. package/dist/rules/escapeInlineTags.cjs +0 -234
  154. package/dist/rules/escapeInlineTags.cjs.map +0 -1
  155. package/dist/rules/implementsOnClasses.cjs +0 -74
  156. package/dist/rules/implementsOnClasses.cjs.map +0 -1
  157. package/dist/rules/importsAsDependencies.cjs +0 -104
  158. package/dist/rules/importsAsDependencies.cjs.map +0 -1
  159. package/dist/rules/informativeDocs.cjs +0 -187
  160. package/dist/rules/informativeDocs.cjs.map +0 -1
  161. package/dist/rules/linesBeforeBlock.cjs +0 -120
  162. package/dist/rules/linesBeforeBlock.cjs.map +0 -1
  163. package/dist/rules/matchDescription.cjs +0 -356
  164. package/dist/rules/matchDescription.cjs.map +0 -1
  165. package/dist/rules/matchName.cjs +0 -160
  166. package/dist/rules/matchName.cjs.map +0 -1
  167. package/dist/rules/multilineBlocks.cjs +0 -431
  168. package/dist/rules/multilineBlocks.cjs.map +0 -1
  169. package/dist/rules/noBadBlocks.cjs +0 -100
  170. package/dist/rules/noBadBlocks.cjs.map +0 -1
  171. package/dist/rules/noBlankBlockDescriptions.cjs +0 -63
  172. package/dist/rules/noBlankBlockDescriptions.cjs.map +0 -1
  173. package/dist/rules/noBlankBlocks.cjs +0 -54
  174. package/dist/rules/noBlankBlocks.cjs.map +0 -1
  175. package/dist/rules/noDefaults.cjs +0 -102
  176. package/dist/rules/noDefaults.cjs.map +0 -1
  177. package/dist/rules/noMissingSyntax.cjs +0 -196
  178. package/dist/rules/noMissingSyntax.cjs.map +0 -1
  179. package/dist/rules/noMultiAsterisks.cjs +0 -126
  180. package/dist/rules/noMultiAsterisks.cjs.map +0 -1
  181. package/dist/rules/noRestrictedSyntax.cjs +0 -68
  182. package/dist/rules/noRestrictedSyntax.cjs.map +0 -1
  183. package/dist/rules/noTypes.cjs +0 -101
  184. package/dist/rules/noTypes.cjs.map +0 -1
  185. package/dist/rules/noUndefinedTypes.cjs +0 -616
  186. package/dist/rules/noUndefinedTypes.cjs.map +0 -1
  187. package/dist/rules/normalizeSeeLinks.cjs +0 -271
  188. package/dist/rules/normalizeSeeLinks.cjs.map +0 -1
  189. package/dist/rules/preferImportTag.cjs +0 -362
  190. package/dist/rules/preferImportTag.cjs.map +0 -1
  191. package/dist/rules/requireAsteriskPrefix.cjs +0 -190
  192. package/dist/rules/requireAsteriskPrefix.cjs.map +0 -1
  193. package/dist/rules/requireDescription.cjs +0 -164
  194. package/dist/rules/requireDescription.cjs.map +0 -1
  195. package/dist/rules/requireDescriptionCompleteSentence.cjs +0 -321
  196. package/dist/rules/requireDescriptionCompleteSentence.cjs.map +0 -1
  197. package/dist/rules/requireExample.cjs +0 -136
  198. package/dist/rules/requireExample.cjs.map +0 -1
  199. package/dist/rules/requireFileOverview.cjs +0 -194
  200. package/dist/rules/requireFileOverview.cjs.map +0 -1
  201. package/dist/rules/requireHyphenBeforeParamDescription.cjs +0 -166
  202. package/dist/rules/requireHyphenBeforeParamDescription.cjs.map +0 -1
  203. package/dist/rules/requireJsdoc.cjs +0 -721
  204. package/dist/rules/requireJsdoc.cjs.map +0 -1
  205. package/dist/rules/requireParam.cjs +0 -772
  206. package/dist/rules/requireParam.cjs.map +0 -1
  207. package/dist/rules/requireParamDescription.cjs +0 -105
  208. package/dist/rules/requireParamDescription.cjs.map +0 -1
  209. package/dist/rules/requireParamName.cjs +0 -68
  210. package/dist/rules/requireParamName.cjs.map +0 -1
  211. package/dist/rules/requireParamType.cjs +0 -104
  212. package/dist/rules/requireParamType.cjs.map +0 -1
  213. package/dist/rules/requireProperty.cjs +0 -63
  214. package/dist/rules/requireProperty.cjs.map +0 -1
  215. package/dist/rules/requirePropertyDescription.cjs +0 -29
  216. package/dist/rules/requirePropertyDescription.cjs.map +0 -1
  217. package/dist/rules/requirePropertyName.cjs +0 -29
  218. package/dist/rules/requirePropertyName.cjs.map +0 -1
  219. package/dist/rules/requirePropertyType.cjs +0 -29
  220. package/dist/rules/requirePropertyType.cjs.map +0 -1
  221. package/dist/rules/requireRejects.cjs +0 -226
  222. package/dist/rules/requireRejects.cjs.map +0 -1
  223. package/dist/rules/requireReturns.cjs +0 -262
  224. package/dist/rules/requireReturns.cjs.map +0 -1
  225. package/dist/rules/requireReturnsCheck.cjs +0 -225
  226. package/dist/rules/requireReturnsCheck.cjs.map +0 -1
  227. package/dist/rules/requireReturnsDescription.cjs +0 -72
  228. package/dist/rules/requireReturnsDescription.cjs.map +0 -1
  229. package/dist/rules/requireReturnsType.cjs +0 -68
  230. package/dist/rules/requireReturnsType.cjs.map +0 -1
  231. package/dist/rules/requireTags.cjs +0 -74
  232. package/dist/rules/requireTags.cjs.map +0 -1
  233. package/dist/rules/requireTemplate.cjs +0 -220
  234. package/dist/rules/requireTemplate.cjs.map +0 -1
  235. package/dist/rules/requireThrows.cjs +0 -118
  236. package/dist/rules/requireThrows.cjs.map +0 -1
  237. package/dist/rules/requireYields.cjs +0 -224
  238. package/dist/rules/requireYields.cjs.map +0 -1
  239. package/dist/rules/requireYieldsCheck.cjs +0 -179
  240. package/dist/rules/requireYieldsCheck.cjs.map +0 -1
  241. package/dist/rules/sortTags.cjs +0 -656
  242. package/dist/rules/sortTags.cjs.map +0 -1
  243. package/dist/rules/tagLines.cjs +0 -374
  244. package/dist/rules/tagLines.cjs.map +0 -1
  245. package/dist/rules/textEscaping.cjs +0 -141
  246. package/dist/rules/textEscaping.cjs.map +0 -1
  247. package/dist/rules/tsMethodSignatureStyle.cjs +0 -240
  248. package/dist/rules/tsMethodSignatureStyle.cjs.map +0 -1
  249. package/dist/rules/tsNoEmptyObjectType.cjs +0 -62
  250. package/dist/rules/tsNoEmptyObjectType.cjs.map +0 -1
  251. package/dist/rules/tsNoUnnecessaryTemplateExpression.cjs +0 -104
  252. package/dist/rules/tsNoUnnecessaryTemplateExpression.cjs.map +0 -1
  253. package/dist/rules/tsPreferFunctionType.cjs +0 -110
  254. package/dist/rules/tsPreferFunctionType.cjs.map +0 -1
  255. package/dist/rules/typeFormatting.cjs +0 -607
  256. package/dist/rules/typeFormatting.cjs.map +0 -1
  257. package/dist/rules/validTypes.cjs +0 -324
  258. package/dist/rules/validTypes.cjs.map +0 -1
  259. package/dist/tagNames.cjs +0 -244
  260. package/dist/tagNames.cjs.map +0 -1
  261. package/dist/to-valid-identifier.cjs +0 -263
  262. package/dist/utils/hasReturnValue.cjs +0 -495
  263. package/dist/utils/hasReturnValue.cjs.map +0 -1
  264. package/rollup.config.js +0 -16
  265. package/src/getJsdocProcessorPlugin.cts +0 -5
  266. package/src/index-cjs.js +0 -760
  267. package/src/index-esm.js +0 -196
  268. package/src/index.cjs.cts +0 -3
  269. package/src/iterateJsdoc.cts +0 -7
@@ -1,521 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _iterateJsdoc = _interopRequireDefault(require("../iterateJsdoc.cjs"));
8
- var _eslint = _interopRequireWildcard(require("eslint"));
9
- var _semver = _interopRequireDefault(require("semver"));
10
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
11
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
- const {
13
- // @ts-expect-error Older ESLint
14
- CLIEngine
15
- } = _eslint.default;
16
- const zeroBasedLineIndexAdjust = -1;
17
- const likelyNestedJSDocIndentSpace = 1;
18
- const preTagSpaceLength = 1;
19
-
20
- // If a space is present, we should ignore it
21
- const firstLinePrefixLength = preTagSpaceLength;
22
- const hasCaptionRegex = /^\s*<caption>([\s\S]*?)<\/caption>/v;
23
-
24
- /**
25
- * @param {string} str
26
- * @returns {string}
27
- */
28
- const escapeStringRegexp = str => {
29
- return str.replaceAll(/[.*+?^$\{\}\(\)\|\[\]\\]/gv, '\\$&');
30
- };
31
-
32
- /**
33
- * @param {string} str
34
- * @param {string} ch
35
- * @returns {import('../iterateJsdoc.js').Integer}
36
- */
37
- const countChars = (str, ch) => {
38
- return (str.match(new RegExp(escapeStringRegexp(ch), 'gv')) || []).length;
39
- };
40
-
41
- /** @type {import('eslint').Linter.RulesRecord} */
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,
50
- '@typescript-eslint/no-unused-vars': 0,
51
- // "always" newline rule at end unlikely in sample code
52
- 'eol-last': 0,
53
- // Wouldn't generally expect example paths to resolve relative to JS file
54
- 'import/no-unresolved': 0,
55
- // Snippets likely too short to always include import/export info
56
- 'import/unambiguous': 0,
57
- 'jsdoc/require-file-overview': 0,
58
- // The end of a multiline comment would end the comment the example is in.
59
- 'jsdoc/require-jsdoc': 0,
60
- // See import/no-unresolved
61
- 'n/no-missing-import': 0,
62
- 'n/no-missing-require': 0,
63
- // Unlikely to have inadvertent debugging within examples
64
- 'no-console': 0,
65
- // Often wish to start `@example` code after newline; also may use
66
- // empty lines for spacing
67
- 'no-multiple-empty-lines': 0,
68
- // Many variables in examples will be `undefined`
69
- 'no-undef': 0,
70
- // Common to define variables for clarity without always using them
71
- 'no-unused-vars': 0,
72
- // See import/no-unresolved
73
- 'node/no-missing-import': 0,
74
- 'node/no-missing-require': 0,
75
- // Can generally look nicer to pad a little even if code imposes more stringency
76
- 'padded-blocks': 0
77
- };
78
-
79
- /** @type {import('eslint').Linter.RulesRecord} */
80
- const defaultExpressionRules = {
81
- ...defaultMdRules,
82
- '@stylistic/quotes': ['error', 'double'],
83
- '@stylistic/semi': ['error', 'never'],
84
- '@typescript-eslint/no-unused-expressions': 'off',
85
- 'chai-friendly/no-unused-expressions': 'off',
86
- 'no-empty-function': 'off',
87
- 'no-new': 'off',
88
- 'no-unused-expressions': 'off',
89
- quotes: ['error', 'double'],
90
- semi: ['error', 'never'],
91
- strict: 'off'
92
- };
93
-
94
- /**
95
- * @param {string} text
96
- * @returns {[
97
- * import('../iterateJsdoc.js').Integer,
98
- * import('../iterateJsdoc.js').Integer
99
- * ]}
100
- */
101
- const getLinesCols = text => {
102
- const matchLines = countChars(text, '\n');
103
- const colDelta = matchLines ? text.slice(text.lastIndexOf('\n') + 1).length : text.length;
104
- return [matchLines, colDelta];
105
- };
106
- var _default = exports.default = (0, _iterateJsdoc.default)(({
107
- context,
108
- globalState,
109
- report,
110
- utils
111
- }) => {
112
- if (_semver.default.gte(_eslint.ESLint.version, '8.0.0')) {
113
- report('This rule does not work for ESLint 8+; you should disable this rule and use' + 'the processor mentioned in the docs.', null, {
114
- column: 1,
115
- line: 1
116
- });
117
- return;
118
- }
119
- if (!globalState.has('checkExamples-matchingFileName')) {
120
- globalState.set('checkExamples-matchingFileName', new Map());
121
- }
122
- const matchingFileNameMap = /** @type {Map<string, string>} */
123
- globalState.get('checkExamples-matchingFileName');
124
- const options = context.options[0] || {};
125
- let {
126
- exampleCodeRegex = null,
127
- rejectExampleCodeRegex = null
128
- } = options;
129
- const {
130
- allowInlineConfig = true,
131
- baseConfig = {},
132
- captionRequired = false,
133
- checkDefaults = false,
134
- checkEslintrc = true,
135
- checkParams = false,
136
- checkProperties = false,
137
- configFile,
138
- matchingFileName = null,
139
- matchingFileNameDefaults = null,
140
- matchingFileNameParams = null,
141
- matchingFileNameProperties = null,
142
- noDefaultExampleRules = false,
143
- paddedIndent = 0,
144
- reportUnusedDisableDirectives = true
145
- } = options;
146
-
147
- // Make this configurable?
148
- /**
149
- * @type {never[]}
150
- */
151
- const rulePaths = [];
152
- const mdRules = noDefaultExampleRules ? undefined : defaultMdRules;
153
- const expressionRules = noDefaultExampleRules ? undefined : defaultExpressionRules;
154
- if (exampleCodeRegex) {
155
- exampleCodeRegex = utils.getRegexFromString(exampleCodeRegex);
156
- }
157
- if (rejectExampleCodeRegex) {
158
- rejectExampleCodeRegex = utils.getRegexFromString(rejectExampleCodeRegex);
159
- }
160
-
161
- /**
162
- * @param {{
163
- * filename: string,
164
- * defaultFileName: string|undefined,
165
- * source: string,
166
- * targetTagName: string,
167
- * rules?: import('eslint').Linter.RulesRecord|undefined,
168
- * lines?: import('../iterateJsdoc.js').Integer,
169
- * cols?: import('../iterateJsdoc.js').Integer,
170
- * skipInit?: boolean,
171
- * sources?: {
172
- * nonJSPrefacingCols: import('../iterateJsdoc.js').Integer,
173
- * nonJSPrefacingLines: import('../iterateJsdoc.js').Integer,
174
- * string: string,
175
- * }[],
176
- * tag?: import('comment-parser').Spec & {
177
- * line?: import('../iterateJsdoc.js').Integer,
178
- * }|{
179
- * line: import('../iterateJsdoc.js').Integer,
180
- * }
181
- * }} cfg
182
- */
183
- const checkSource = ({
184
- cols = 0,
185
- defaultFileName,
186
- filename,
187
- lines = 0,
188
- rules = expressionRules,
189
- skipInit,
190
- source,
191
- sources = [],
192
- tag = {
193
- line: 0
194
- },
195
- targetTagName
196
- }) => {
197
- if (!skipInit) {
198
- sources.push({
199
- nonJSPrefacingCols: cols,
200
- nonJSPrefacingLines: lines,
201
- string: source
202
- });
203
- }
204
-
205
- /**
206
- * @param {{
207
- * nonJSPrefacingCols: import('../iterateJsdoc.js').Integer,
208
- * nonJSPrefacingLines: import('../iterateJsdoc.js').Integer,
209
- * string: string
210
- * }} cfg
211
- */
212
- const checkRules = function ({
213
- nonJSPrefacingCols,
214
- nonJSPrefacingLines,
215
- string
216
- }) {
217
- const cliConfig = {
218
- allowInlineConfig,
219
- baseConfig,
220
- configFile,
221
- reportUnusedDisableDirectives,
222
- rulePaths,
223
- rules,
224
- useEslintrc: checkEslintrc
225
- };
226
- const cliConfigStr = JSON.stringify(cliConfig);
227
- const src = paddedIndent ? string.replaceAll(new RegExp(`(^|\n) {${paddedIndent}}(?!$)`, 'gv'), '\n') : string;
228
-
229
- // Programmatic ESLint API: https://eslint.org/docs/developer-guide/nodejs-api
230
- const fileNameMapKey = filename ? 'a' + cliConfigStr + filename : 'b' + cliConfigStr + defaultFileName;
231
- const file = filename || defaultFileName;
232
- let cliFile;
233
- if (matchingFileNameMap.has(fileNameMapKey)) {
234
- cliFile = matchingFileNameMap.get(fileNameMapKey);
235
- } else {
236
- const cli = new CLIEngine(cliConfig);
237
- let config;
238
- if (filename || checkEslintrc) {
239
- config = cli.getConfigForFile(file);
240
- }
241
-
242
- // We need a new instance to ensure that the rules that may only
243
- // be available to `file` (if it has its own `.eslintrc`),
244
- // will be defined.
245
- cliFile = new CLIEngine({
246
- allowInlineConfig,
247
- baseConfig: {
248
- ...baseConfig,
249
- ...config
250
- },
251
- configFile,
252
- reportUnusedDisableDirectives,
253
- rulePaths,
254
- rules,
255
- useEslintrc: false
256
- });
257
- matchingFileNameMap.set(fileNameMapKey, cliFile);
258
- }
259
- const {
260
- results: [{
261
- messages
262
- }]
263
- } = cliFile.executeOnText(src);
264
- if (!('line' in tag)) {
265
- tag.line = tag.source[0].number;
266
- }
267
-
268
- // NOTE: `tag.line` can be 0 if of form `/** @tag ... */`
269
- const codeStartLine =
270
- /**
271
- * @type {import('comment-parser').Spec & {
272
- * line: import('../iterateJsdoc.js').Integer,
273
- * }}
274
- */
275
- tag.line + nonJSPrefacingLines;
276
- const codeStartCol = likelyNestedJSDocIndentSpace;
277
- for (const {
278
- column,
279
- line,
280
- message,
281
- ruleId,
282
- severity
283
- } of messages) {
284
- const startLine = codeStartLine + line + zeroBasedLineIndexAdjust;
285
- const startCol = codeStartCol + (
286
- // This might not work for line 0, but line 0 is unlikely for examples
287
- line <= 1 ? nonJSPrefacingCols + firstLinePrefixLength : preTagSpaceLength) + column;
288
- report('@' + targetTagName + ' ' + (severity === 2 ? 'error' : 'warning') + (ruleId ? ' (' + ruleId + ')' : '') + ': ' + message, null, {
289
- column: startCol,
290
- line: startLine
291
- });
292
- }
293
- };
294
- for (const targetSource of sources) {
295
- checkRules(targetSource);
296
- }
297
- };
298
-
299
- /**
300
- *
301
- * @param {string} filename
302
- * @param {string} [ext] Since `eslint-plugin-markdown` v2, and
303
- * ESLint 7, this is the default which other JS-fenced rules will used.
304
- * Formerly "md" was the default.
305
- * @returns {{defaultFileName: string|undefined, filename: string}}
306
- */
307
- const getFilenameInfo = (filename, ext = 'md/*.js') => {
308
- let defaultFileName;
309
- if (!filename) {
310
- // @ts-expect-error ESLint < 10
311
- const jsFileName = context.getFilename();
312
- if (typeof jsFileName === 'string' && jsFileName.includes('.')) {
313
- defaultFileName = jsFileName.replace(/\.[^.]*$/v, `.${ext}`);
314
- } else {
315
- defaultFileName = `dummy.${ext}`;
316
- }
317
- }
318
- return {
319
- defaultFileName,
320
- filename
321
- };
322
- };
323
- if (checkDefaults) {
324
- const filenameInfo = getFilenameInfo(matchingFileNameDefaults, 'jsdoc-defaults');
325
- utils.forEachPreferredTag('default', (tag, targetTagName) => {
326
- if (!tag.description.trim()) {
327
- return;
328
- }
329
- checkSource({
330
- source: `(${utils.getTagDescription(tag)})`,
331
- targetTagName,
332
- ...filenameInfo
333
- });
334
- });
335
- }
336
- if (checkParams) {
337
- const filenameInfo = getFilenameInfo(matchingFileNameParams, 'jsdoc-params');
338
- utils.forEachPreferredTag('param', (tag, targetTagName) => {
339
- if (!tag.default || !tag.default.trim()) {
340
- return;
341
- }
342
- checkSource({
343
- source: `(${tag.default})`,
344
- targetTagName,
345
- ...filenameInfo
346
- });
347
- });
348
- }
349
- if (checkProperties) {
350
- const filenameInfo = getFilenameInfo(matchingFileNameProperties, 'jsdoc-properties');
351
- utils.forEachPreferredTag('property', (tag, targetTagName) => {
352
- if (!tag.default || !tag.default.trim()) {
353
- return;
354
- }
355
- checkSource({
356
- source: `(${tag.default})`,
357
- targetTagName,
358
- ...filenameInfo
359
- });
360
- });
361
- }
362
- const tagName = /** @type {string} */utils.getPreferredTagName({
363
- tagName: 'example'
364
- });
365
- if (!utils.hasTag(tagName)) {
366
- return;
367
- }
368
- const matchingFilenameInfo = getFilenameInfo(matchingFileName);
369
- utils.forEachPreferredTag('example', (tag, targetTagName) => {
370
- let source = /** @type {string} */utils.getTagDescription(tag);
371
- const match = source.match(hasCaptionRegex);
372
- if (captionRequired && (!match || !match[1].trim())) {
373
- report('Caption is expected for examples.', null, tag);
374
- }
375
- source = source.replace(hasCaptionRegex, '');
376
- const [lines, cols] = match ? getLinesCols(match[0]) : [0, 0];
377
- if (exampleCodeRegex && !exampleCodeRegex.test(source) || rejectExampleCodeRegex && rejectExampleCodeRegex.test(source)) {
378
- return;
379
- }
380
- const sources = [];
381
- let skipInit = false;
382
- if (exampleCodeRegex) {
383
- let nonJSPrefacingCols = 0;
384
- let nonJSPrefacingLines = 0;
385
- let startingIndex = 0;
386
- let lastStringCount = 0;
387
- let exampleCode;
388
- exampleCodeRegex.lastIndex = 0;
389
- while ((exampleCode = exampleCodeRegex.exec(source)) !== null) {
390
- const {
391
- '0': n0,
392
- '1': n1,
393
- index
394
- } = exampleCode;
395
-
396
- // Count anything preceding user regex match (can affect line numbering)
397
- const preMatch = source.slice(startingIndex, index);
398
- const [preMatchLines, colDelta] = getLinesCols(preMatch);
399
- let nonJSPreface;
400
- let nonJSPrefaceLineCount;
401
- if (n1) {
402
- const idx = n0.indexOf(n1);
403
- nonJSPreface = n0.slice(0, idx);
404
- nonJSPrefaceLineCount = countChars(nonJSPreface, '\n');
405
- } else {
406
- nonJSPreface = '';
407
- nonJSPrefaceLineCount = 0;
408
- }
409
- nonJSPrefacingLines += lastStringCount + preMatchLines + nonJSPrefaceLineCount;
410
-
411
- // Ignore `preMatch` delta if newlines here
412
- if (nonJSPrefaceLineCount) {
413
- const charsInLastLine = nonJSPreface.slice(nonJSPreface.lastIndexOf('\n') + 1).length;
414
- nonJSPrefacingCols += charsInLastLine;
415
- } else {
416
- nonJSPrefacingCols += colDelta + nonJSPreface.length;
417
- }
418
- const string = n1 || n0;
419
- sources.push({
420
- nonJSPrefacingCols,
421
- nonJSPrefacingLines,
422
- string
423
- });
424
- startingIndex = exampleCodeRegex.lastIndex;
425
- lastStringCount = countChars(string, '\n');
426
- if (!exampleCodeRegex.global) {
427
- break;
428
- }
429
- }
430
- skipInit = true;
431
- }
432
- checkSource({
433
- cols,
434
- lines,
435
- rules: mdRules,
436
- skipInit,
437
- source,
438
- sources,
439
- tag,
440
- targetTagName,
441
- ...matchingFilenameInfo
442
- });
443
- });
444
- }, {
445
- iterateAllJsdocs: true,
446
- meta: {
447
- docs: {
448
- description: '@deprecated - Use `getJsdocProcessorPlugin` processor; ensures that (JavaScript) samples within `@example` tags adhere to ESLint rules.',
449
- url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-examples.md#repos-sticky-header'
450
- },
451
- schema: [{
452
- additionalProperties: false,
453
- properties: {
454
- allowInlineConfig: {
455
- default: true,
456
- type: 'boolean'
457
- },
458
- baseConfig: {
459
- type: 'object'
460
- },
461
- captionRequired: {
462
- default: false,
463
- type: 'boolean'
464
- },
465
- checkDefaults: {
466
- default: false,
467
- type: 'boolean'
468
- },
469
- checkEslintrc: {
470
- default: true,
471
- type: 'boolean'
472
- },
473
- checkParams: {
474
- default: false,
475
- type: 'boolean'
476
- },
477
- checkProperties: {
478
- default: false,
479
- type: 'boolean'
480
- },
481
- configFile: {
482
- type: 'string'
483
- },
484
- exampleCodeRegex: {
485
- type: 'string'
486
- },
487
- matchingFileName: {
488
- type: 'string'
489
- },
490
- matchingFileNameDefaults: {
491
- type: 'string'
492
- },
493
- matchingFileNameParams: {
494
- type: 'string'
495
- },
496
- matchingFileNameProperties: {
497
- type: 'string'
498
- },
499
- noDefaultExampleRules: {
500
- default: false,
501
- type: 'boolean'
502
- },
503
- paddedIndent: {
504
- default: 0,
505
- type: 'integer'
506
- },
507
- rejectExampleCodeRegex: {
508
- type: 'string'
509
- },
510
- reportUnusedDisableDirectives: {
511
- default: true,
512
- type: 'boolean'
513
- }
514
- },
515
- type: 'object'
516
- }],
517
- type: 'suggestion'
518
- }
519
- });
520
- module.exports = exports.default;
521
- //# sourceMappingURL=checkExamples.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"checkExamples.cjs","names":["eslint","iterateJsdoc","semver","ESLint"],"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 '@typescript-eslint/no-unused-vars': 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 // @ts-expect-error ESLint < 10\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: '@deprecated - Use `getJsdocProcessorPlugin` processor; ensures that (JavaScript) samples within `@example` tags 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":[]}