eslint-plugin-jsdoc 63.3.3 → 64.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 (270) hide show
  1. package/dist/index.d.ts +14 -0
  2. package/package.json +23 -48
  3. package/src/index.js +22 -6
  4. package/dist/WarnSettings.cjs +0 -38
  5. package/dist/WarnSettings.cjs.map +0 -1
  6. package/dist/alignTransform.cjs +0 -402
  7. package/dist/alignTransform.cjs.map +0 -1
  8. package/dist/buildForbidRuleDefinition.cjs +0 -101
  9. package/dist/buildForbidRuleDefinition.cjs.map +0 -1
  10. package/dist/buildRejectOrPreferRuleDefinition.cjs +0 -352
  11. package/dist/buildRejectOrPreferRuleDefinition.cjs.map +0 -1
  12. package/dist/cjs/WarnSettings.d.ts +0 -16
  13. package/dist/cjs/alignTransform.d.ts +0 -33
  14. package/dist/cjs/buildForbidRuleDefinition.d.ts +0 -14
  15. package/dist/cjs/buildRejectOrPreferRuleDefinition.d.ts +0 -8
  16. package/dist/cjs/defaultTagOrder.d.ts +0 -4
  17. package/dist/cjs/exportParser.d.ts +0 -40
  18. package/dist/cjs/getDefaultTagStructureForMode.d.ts +0 -10
  19. package/dist/cjs/getJsdocProcessorPlugin.d.cts +0 -5
  20. package/dist/cjs/getJsdocProcessorPlugin.d.ts +0 -66
  21. package/dist/cjs/index-cjs.d.ts +0 -26
  22. package/dist/cjs/index.cjs.d.cts +0 -2
  23. package/dist/cjs/iterateJsdoc.d.cts +0 -7
  24. package/dist/cjs/iterateJsdoc.d.ts +0 -495
  25. package/dist/cjs/jsdocUtils.d.ts +0 -500
  26. package/dist/cjs/rules/checkAccess.d.ts +0 -2
  27. package/dist/cjs/rules/checkAlignment.d.ts +0 -2
  28. package/dist/cjs/rules/checkExamples.d.ts +0 -3
  29. package/dist/cjs/rules/checkIndentation.d.ts +0 -2
  30. package/dist/cjs/rules/checkLineAlignment.d.ts +0 -9
  31. package/dist/cjs/rules/checkParamNames.d.ts +0 -2
  32. package/dist/cjs/rules/checkPropertyNames.d.ts +0 -2
  33. package/dist/cjs/rules/checkSyntax.d.ts +0 -2
  34. package/dist/cjs/rules/checkTagNames.d.ts +0 -2
  35. package/dist/cjs/rules/checkTemplateNames.d.ts +0 -2
  36. package/dist/cjs/rules/checkTypes.d.ts +0 -7
  37. package/dist/cjs/rules/checkValues.d.ts +0 -2
  38. package/dist/cjs/rules/convertToJsdocComments.d.ts +0 -266
  39. package/dist/cjs/rules/emptyTags.d.ts +0 -2
  40. package/dist/cjs/rules/escapeInlineTags.d.ts +0 -2
  41. package/dist/cjs/rules/implementsOnClasses.d.ts +0 -2
  42. package/dist/cjs/rules/importsAsDependencies.d.ts +0 -2
  43. package/dist/cjs/rules/informativeDocs.d.ts +0 -2
  44. package/dist/cjs/rules/linesBeforeBlock.d.ts +0 -2
  45. package/dist/cjs/rules/matchDescription.d.ts +0 -2
  46. package/dist/cjs/rules/matchName.d.ts +0 -2
  47. package/dist/cjs/rules/multilineBlocks.d.ts +0 -2
  48. package/dist/cjs/rules/noBadBlocks.d.ts +0 -2
  49. package/dist/cjs/rules/noBlankBlockDescriptions.d.ts +0 -2
  50. package/dist/cjs/rules/noBlankBlocks.d.ts +0 -2
  51. package/dist/cjs/rules/noDefaults.d.ts +0 -2
  52. package/dist/cjs/rules/noMissingSyntax.d.ts +0 -9
  53. package/dist/cjs/rules/noMultiAsterisks.d.ts +0 -2
  54. package/dist/cjs/rules/noRestrictedSyntax.d.ts +0 -2
  55. package/dist/cjs/rules/noTypes.d.ts +0 -2
  56. package/dist/cjs/rules/noUndefinedTypes.d.ts +0 -2
  57. package/dist/cjs/rules/normalizeSeeLinks.d.ts +0 -2
  58. package/dist/cjs/rules/preferImportTag.d.ts +0 -2
  59. package/dist/cjs/rules/requireAsteriskPrefix.d.ts +0 -2
  60. package/dist/cjs/rules/requireDescription.d.ts +0 -2
  61. package/dist/cjs/rules/requireDescriptionCompleteSentence.d.ts +0 -2
  62. package/dist/cjs/rules/requireExample.d.ts +0 -2
  63. package/dist/cjs/rules/requireFileOverview.d.ts +0 -2
  64. package/dist/cjs/rules/requireHyphenBeforeParamDescription.d.ts +0 -2
  65. package/dist/cjs/rules/requireJsdoc.d.ts +0 -24
  66. package/dist/cjs/rules/requireParam.d.ts +0 -3
  67. package/dist/cjs/rules/requireParamDescription.d.ts +0 -2
  68. package/dist/cjs/rules/requireParamName.d.ts +0 -2
  69. package/dist/cjs/rules/requireParamType.d.ts +0 -2
  70. package/dist/cjs/rules/requireProperty.d.ts +0 -2
  71. package/dist/cjs/rules/requirePropertyDescription.d.ts +0 -2
  72. package/dist/cjs/rules/requirePropertyName.d.ts +0 -2
  73. package/dist/cjs/rules/requirePropertyType.d.ts +0 -2
  74. package/dist/cjs/rules/requireRejects.d.ts +0 -2
  75. package/dist/cjs/rules/requireReturns.d.ts +0 -2
  76. package/dist/cjs/rules/requireReturnsCheck.d.ts +0 -2
  77. package/dist/cjs/rules/requireReturnsDescription.d.ts +0 -2
  78. package/dist/cjs/rules/requireReturnsType.d.ts +0 -2
  79. package/dist/cjs/rules/requireTags.d.ts +0 -2
  80. package/dist/cjs/rules/requireTemplate.d.ts +0 -2
  81. package/dist/cjs/rules/requireThrows.d.ts +0 -2
  82. package/dist/cjs/rules/requireYields.d.ts +0 -2
  83. package/dist/cjs/rules/requireYieldsCheck.d.ts +0 -2
  84. package/dist/cjs/rules/sortTags.d.ts +0 -2
  85. package/dist/cjs/rules/tagLines.d.ts +0 -2
  86. package/dist/cjs/rules/textEscaping.d.ts +0 -2
  87. package/dist/cjs/rules/tsMethodSignatureStyle.d.ts +0 -2
  88. package/dist/cjs/rules/tsNoEmptyObjectType.d.ts +0 -2
  89. package/dist/cjs/rules/tsNoUnnecessaryTemplateExpression.d.ts +0 -2
  90. package/dist/cjs/rules/tsPreferFunctionType.d.ts +0 -2
  91. package/dist/cjs/rules/typeFormatting.d.ts +0 -2
  92. package/dist/cjs/rules/validTypes.d.ts +0 -2
  93. package/dist/cjs/tagNames.d.ts +0 -15
  94. package/dist/cjs/utils/hasReturnValue.d.ts +0 -19
  95. package/dist/defaultTagOrder.cjs +0 -46
  96. package/dist/defaultTagOrder.cjs.map +0 -1
  97. package/dist/exportParser.cjs +0 -732
  98. package/dist/exportParser.cjs.map +0 -1
  99. package/dist/generateDocs.cjs +0 -342
  100. package/dist/generateDocs.cjs.map +0 -1
  101. package/dist/generateOptions.cjs +0 -62
  102. package/dist/generateOptions.cjs.map +0 -1
  103. package/dist/generateRule.cjs +0 -248
  104. package/dist/generateRule.cjs.map +0 -1
  105. package/dist/generateRuleTypes.cjs +0 -24
  106. package/dist/generateRuleTypes.cjs.map +0 -1
  107. package/dist/getDefaultTagStructureForMode.cjs +0 -289
  108. package/dist/getDefaultTagStructureForMode.cjs.map +0 -1
  109. package/dist/getJsdocProcessorPlugin.cjs +0 -587
  110. package/dist/getJsdocProcessorPlugin.cjs.map +0 -1
  111. package/dist/getJsdocProcessorPlugin.cts +0 -5
  112. package/dist/index-cjs.cjs +0 -600
  113. package/dist/index-cjs.cjs.map +0 -1
  114. package/dist/index-cjs.d.ts +0 -27
  115. package/dist/index-esm.cjs +0 -162
  116. package/dist/index-esm.cjs.map +0 -1
  117. package/dist/index-esm.d.ts +0 -72
  118. package/dist/index.cjs +0 -748
  119. package/dist/index.cjs.cts +0 -3
  120. package/dist/index.cjs.map +0 -1
  121. package/dist/iterateJsdoc.cjs +0 -2150
  122. package/dist/iterateJsdoc.cjs.map +0 -1
  123. package/dist/iterateJsdoc.cts +0 -7
  124. package/dist/jsdocUtils.cjs +0 -1786
  125. package/dist/jsdocUtils.cjs.map +0 -1
  126. package/dist/rules/checkAccess.cjs +0 -40
  127. package/dist/rules/checkAccess.cjs.map +0 -1
  128. package/dist/rules/checkAlignment.cjs +0 -78
  129. package/dist/rules/checkAlignment.cjs.map +0 -1
  130. package/dist/rules/checkExamples.cjs +0 -521
  131. package/dist/rules/checkExamples.cjs.map +0 -1
  132. package/dist/rules/checkIndentation.cjs +0 -170
  133. package/dist/rules/checkIndentation.cjs.map +0 -1
  134. package/dist/rules/checkLineAlignment.cjs +0 -398
  135. package/dist/rules/checkLineAlignment.cjs.map +0 -1
  136. package/dist/rules/checkParamNames.cjs +0 -407
  137. package/dist/rules/checkParamNames.cjs.map +0 -1
  138. package/dist/rules/checkPropertyNames.cjs +0 -135
  139. package/dist/rules/checkPropertyNames.cjs.map +0 -1
  140. package/dist/rules/checkSyntax.cjs +0 -38
  141. package/dist/rules/checkSyntax.cjs.map +0 -1
  142. package/dist/rules/checkTagNames.cjs +0 -312
  143. package/dist/rules/checkTagNames.cjs.map +0 -1
  144. package/dist/rules/checkTemplateNames.cjs +0 -192
  145. package/dist/rules/checkTemplateNames.cjs.map +0 -1
  146. package/dist/rules/checkTypes.cjs +0 -111
  147. package/dist/rules/checkTypes.cjs.map +0 -1
  148. package/dist/rules/checkValues.cjs +0 -166
  149. package/dist/rules/checkValues.cjs.map +0 -1
  150. package/dist/rules/convertToJsdocComments.cjs +0 -356
  151. package/dist/rules/convertToJsdocComments.cjs.map +0 -1
  152. package/dist/rules/emptyTags.cjs +0 -98
  153. package/dist/rules/emptyTags.cjs.map +0 -1
  154. package/dist/rules/escapeInlineTags.cjs +0 -234
  155. package/dist/rules/escapeInlineTags.cjs.map +0 -1
  156. package/dist/rules/implementsOnClasses.cjs +0 -74
  157. package/dist/rules/implementsOnClasses.cjs.map +0 -1
  158. package/dist/rules/importsAsDependencies.cjs +0 -104
  159. package/dist/rules/importsAsDependencies.cjs.map +0 -1
  160. package/dist/rules/informativeDocs.cjs +0 -187
  161. package/dist/rules/informativeDocs.cjs.map +0 -1
  162. package/dist/rules/linesBeforeBlock.cjs +0 -120
  163. package/dist/rules/linesBeforeBlock.cjs.map +0 -1
  164. package/dist/rules/matchDescription.cjs +0 -356
  165. package/dist/rules/matchDescription.cjs.map +0 -1
  166. package/dist/rules/matchName.cjs +0 -160
  167. package/dist/rules/matchName.cjs.map +0 -1
  168. package/dist/rules/multilineBlocks.cjs +0 -431
  169. package/dist/rules/multilineBlocks.cjs.map +0 -1
  170. package/dist/rules/noBadBlocks.cjs +0 -100
  171. package/dist/rules/noBadBlocks.cjs.map +0 -1
  172. package/dist/rules/noBlankBlockDescriptions.cjs +0 -63
  173. package/dist/rules/noBlankBlockDescriptions.cjs.map +0 -1
  174. package/dist/rules/noBlankBlocks.cjs +0 -54
  175. package/dist/rules/noBlankBlocks.cjs.map +0 -1
  176. package/dist/rules/noDefaults.cjs +0 -102
  177. package/dist/rules/noDefaults.cjs.map +0 -1
  178. package/dist/rules/noMissingSyntax.cjs +0 -196
  179. package/dist/rules/noMissingSyntax.cjs.map +0 -1
  180. package/dist/rules/noMultiAsterisks.cjs +0 -126
  181. package/dist/rules/noMultiAsterisks.cjs.map +0 -1
  182. package/dist/rules/noRestrictedSyntax.cjs +0 -68
  183. package/dist/rules/noRestrictedSyntax.cjs.map +0 -1
  184. package/dist/rules/noTypes.cjs +0 -101
  185. package/dist/rules/noTypes.cjs.map +0 -1
  186. package/dist/rules/noUndefinedTypes.cjs +0 -616
  187. package/dist/rules/noUndefinedTypes.cjs.map +0 -1
  188. package/dist/rules/normalizeSeeLinks.cjs +0 -271
  189. package/dist/rules/normalizeSeeLinks.cjs.map +0 -1
  190. package/dist/rules/preferImportTag.cjs +0 -362
  191. package/dist/rules/preferImportTag.cjs.map +0 -1
  192. package/dist/rules/requireAsteriskPrefix.cjs +0 -190
  193. package/dist/rules/requireAsteriskPrefix.cjs.map +0 -1
  194. package/dist/rules/requireDescription.cjs +0 -164
  195. package/dist/rules/requireDescription.cjs.map +0 -1
  196. package/dist/rules/requireDescriptionCompleteSentence.cjs +0 -321
  197. package/dist/rules/requireDescriptionCompleteSentence.cjs.map +0 -1
  198. package/dist/rules/requireExample.cjs +0 -136
  199. package/dist/rules/requireExample.cjs.map +0 -1
  200. package/dist/rules/requireFileOverview.cjs +0 -194
  201. package/dist/rules/requireFileOverview.cjs.map +0 -1
  202. package/dist/rules/requireHyphenBeforeParamDescription.cjs +0 -166
  203. package/dist/rules/requireHyphenBeforeParamDescription.cjs.map +0 -1
  204. package/dist/rules/requireJsdoc.cjs +0 -721
  205. package/dist/rules/requireJsdoc.cjs.map +0 -1
  206. package/dist/rules/requireParam.cjs +0 -772
  207. package/dist/rules/requireParam.cjs.map +0 -1
  208. package/dist/rules/requireParamDescription.cjs +0 -105
  209. package/dist/rules/requireParamDescription.cjs.map +0 -1
  210. package/dist/rules/requireParamName.cjs +0 -68
  211. package/dist/rules/requireParamName.cjs.map +0 -1
  212. package/dist/rules/requireParamType.cjs +0 -104
  213. package/dist/rules/requireParamType.cjs.map +0 -1
  214. package/dist/rules/requireProperty.cjs +0 -63
  215. package/dist/rules/requireProperty.cjs.map +0 -1
  216. package/dist/rules/requirePropertyDescription.cjs +0 -29
  217. package/dist/rules/requirePropertyDescription.cjs.map +0 -1
  218. package/dist/rules/requirePropertyName.cjs +0 -29
  219. package/dist/rules/requirePropertyName.cjs.map +0 -1
  220. package/dist/rules/requirePropertyType.cjs +0 -29
  221. package/dist/rules/requirePropertyType.cjs.map +0 -1
  222. package/dist/rules/requireRejects.cjs +0 -226
  223. package/dist/rules/requireRejects.cjs.map +0 -1
  224. package/dist/rules/requireReturns.cjs +0 -262
  225. package/dist/rules/requireReturns.cjs.map +0 -1
  226. package/dist/rules/requireReturnsCheck.cjs +0 -225
  227. package/dist/rules/requireReturnsCheck.cjs.map +0 -1
  228. package/dist/rules/requireReturnsDescription.cjs +0 -72
  229. package/dist/rules/requireReturnsDescription.cjs.map +0 -1
  230. package/dist/rules/requireReturnsType.cjs +0 -68
  231. package/dist/rules/requireReturnsType.cjs.map +0 -1
  232. package/dist/rules/requireTags.cjs +0 -74
  233. package/dist/rules/requireTags.cjs.map +0 -1
  234. package/dist/rules/requireTemplate.cjs +0 -220
  235. package/dist/rules/requireTemplate.cjs.map +0 -1
  236. package/dist/rules/requireThrows.cjs +0 -118
  237. package/dist/rules/requireThrows.cjs.map +0 -1
  238. package/dist/rules/requireYields.cjs +0 -224
  239. package/dist/rules/requireYields.cjs.map +0 -1
  240. package/dist/rules/requireYieldsCheck.cjs +0 -179
  241. package/dist/rules/requireYieldsCheck.cjs.map +0 -1
  242. package/dist/rules/sortTags.cjs +0 -656
  243. package/dist/rules/sortTags.cjs.map +0 -1
  244. package/dist/rules/tagLines.cjs +0 -374
  245. package/dist/rules/tagLines.cjs.map +0 -1
  246. package/dist/rules/textEscaping.cjs +0 -141
  247. package/dist/rules/textEscaping.cjs.map +0 -1
  248. package/dist/rules/tsMethodSignatureStyle.cjs +0 -240
  249. package/dist/rules/tsMethodSignatureStyle.cjs.map +0 -1
  250. package/dist/rules/tsNoEmptyObjectType.cjs +0 -62
  251. package/dist/rules/tsNoEmptyObjectType.cjs.map +0 -1
  252. package/dist/rules/tsNoUnnecessaryTemplateExpression.cjs +0 -104
  253. package/dist/rules/tsNoUnnecessaryTemplateExpression.cjs.map +0 -1
  254. package/dist/rules/tsPreferFunctionType.cjs +0 -110
  255. package/dist/rules/tsPreferFunctionType.cjs.map +0 -1
  256. package/dist/rules/typeFormatting.cjs +0 -607
  257. package/dist/rules/typeFormatting.cjs.map +0 -1
  258. package/dist/rules/validTypes.cjs +0 -324
  259. package/dist/rules/validTypes.cjs.map +0 -1
  260. package/dist/tagNames.cjs +0 -244
  261. package/dist/tagNames.cjs.map +0 -1
  262. package/dist/to-valid-identifier.cjs +0 -263
  263. package/dist/utils/hasReturnValue.cjs +0 -495
  264. package/dist/utils/hasReturnValue.cjs.map +0 -1
  265. package/rollup.config.js +0 -16
  266. package/src/getJsdocProcessorPlugin.cts +0 -5
  267. package/src/index-cjs.js +0 -760
  268. package/src/index-esm.js +0 -196
  269. package/src/index.cjs.cts +0 -3
  270. 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":[]}