eslint-plugin-jsdoc 63.0.11 → 63.0.12

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 (171) hide show
  1. package/dist/WarnSettings.cjs +8 -1
  2. package/dist/WarnSettings.cjs.map +1 -1
  3. package/dist/alignTransform.cjs +10 -6
  4. package/dist/alignTransform.cjs.map +1 -1
  5. package/dist/buildForbidRuleDefinition.cjs +10 -3
  6. package/dist/buildForbidRuleDefinition.cjs.map +1 -1
  7. package/dist/buildRejectOrPreferRuleDefinition.cjs +14 -7
  8. package/dist/buildRejectOrPreferRuleDefinition.cjs.map +1 -1
  9. package/dist/defaultTagOrder.cjs +8 -1
  10. package/dist/defaultTagOrder.cjs.map +1 -1
  11. package/dist/exportParser.cjs +14 -6
  12. package/dist/exportParser.cjs.map +1 -1
  13. package/dist/generateDocs.cjs +44 -36
  14. package/dist/generateDocs.cjs.map +1 -1
  15. package/dist/generateOptions.cjs +18 -15
  16. package/dist/generateOptions.cjs.map +1 -1
  17. package/dist/generateRule.cjs +24 -24
  18. package/dist/generateRule.cjs.map +1 -1
  19. package/dist/generateRuleTypes.cjs +9 -6
  20. package/dist/generateRuleTypes.cjs.map +1 -1
  21. package/dist/getDefaultTagStructureForMode.cjs +8 -1
  22. package/dist/getDefaultTagStructureForMode.cjs.map +1 -1
  23. package/dist/getJsdocProcessorPlugin.cjs +28 -20
  24. package/dist/getJsdocProcessorPlugin.cjs.map +1 -1
  25. package/dist/index-cjs.cjs +159 -152
  26. package/dist/index-cjs.cjs.map +1 -1
  27. package/dist/index-esm.cjs +27 -16
  28. package/dist/index-esm.cjs.map +1 -1
  29. package/dist/index.cjs +172 -159
  30. package/dist/index.cjs.map +1 -1
  31. package/dist/iterateJsdoc.cjs +32 -22
  32. package/dist/iterateJsdoc.cjs.map +1 -1
  33. package/dist/jsdocUtils.cjs +86 -18
  34. package/dist/jsdocUtils.cjs.map +1 -1
  35. package/dist/rules/checkAccess.cjs +10 -2
  36. package/dist/rules/checkAccess.cjs.map +1 -1
  37. package/dist/rules/checkAlignment.cjs +10 -2
  38. package/dist/rules/checkAlignment.cjs.map +1 -1
  39. package/dist/rules/checkExamples.cjs +15 -6
  40. package/dist/rules/checkExamples.cjs.map +1 -1
  41. package/dist/rules/checkIndentation.cjs +9 -2
  42. package/dist/rules/checkIndentation.cjs.map +1 -1
  43. package/dist/rules/checkLineAlignment.cjs +14 -6
  44. package/dist/rules/checkLineAlignment.cjs.map +1 -1
  45. package/dist/rules/checkParamNames.cjs +9 -2
  46. package/dist/rules/checkParamNames.cjs.map +1 -1
  47. package/dist/rules/checkPropertyNames.cjs +9 -2
  48. package/dist/rules/checkPropertyNames.cjs.map +1 -1
  49. package/dist/rules/checkSyntax.cjs +10 -2
  50. package/dist/rules/checkSyntax.cjs.map +1 -1
  51. package/dist/rules/checkTagNames.cjs +11 -4
  52. package/dist/rules/checkTagNames.cjs.map +1 -1
  53. package/dist/rules/checkTemplateNames.cjs +20 -12
  54. package/dist/rules/checkTemplateNames.cjs.map +1 -1
  55. package/dist/rules/checkTypes.cjs +10 -4
  56. package/dist/rules/checkTypes.cjs.map +1 -1
  57. package/dist/rules/checkValues.cjs +17 -9
  58. package/dist/rules/checkValues.cjs.map +1 -1
  59. package/dist/rules/convertToJsdocComments.cjs +19 -13
  60. package/dist/rules/convertToJsdocComments.cjs.map +1 -1
  61. package/dist/rules/emptyTags.cjs +10 -2
  62. package/dist/rules/emptyTags.cjs.map +1 -1
  63. package/dist/rules/escapeInlineTags.cjs +10 -2
  64. package/dist/rules/escapeInlineTags.cjs.map +1 -1
  65. package/dist/rules/implementsOnClasses.cjs +10 -2
  66. package/dist/rules/implementsOnClasses.cjs.map +1 -1
  67. package/dist/rules/importsAsDependencies.cjs +20 -12
  68. package/dist/rules/importsAsDependencies.cjs.map +1 -1
  69. package/dist/rules/informativeDocs.cjs +12 -4
  70. package/dist/rules/informativeDocs.cjs.map +1 -1
  71. package/dist/rules/linesBeforeBlock.cjs +9 -2
  72. package/dist/rules/linesBeforeBlock.cjs.map +1 -1
  73. package/dist/rules/matchDescription.cjs +9 -2
  74. package/dist/rules/matchDescription.cjs.map +1 -1
  75. package/dist/rules/matchName.cjs +10 -2
  76. package/dist/rules/matchName.cjs.map +1 -1
  77. package/dist/rules/multilineBlocks.cjs +9 -2
  78. package/dist/rules/multilineBlocks.cjs.map +1 -1
  79. package/dist/rules/noBadBlocks.cjs +11 -4
  80. package/dist/rules/noBadBlocks.cjs.map +1 -1
  81. package/dist/rules/noBlankBlockDescriptions.cjs +10 -2
  82. package/dist/rules/noBlankBlockDescriptions.cjs.map +1 -1
  83. package/dist/rules/noBlankBlocks.cjs +10 -2
  84. package/dist/rules/noBlankBlocks.cjs.map +1 -1
  85. package/dist/rules/noDefaults.cjs +10 -2
  86. package/dist/rules/noDefaults.cjs.map +1 -1
  87. package/dist/rules/noMissingSyntax.cjs +9 -2
  88. package/dist/rules/noMissingSyntax.cjs.map +1 -1
  89. package/dist/rules/noMultiAsterisks.cjs +10 -2
  90. package/dist/rules/noMultiAsterisks.cjs.map +1 -1
  91. package/dist/rules/noRestrictedSyntax.cjs +9 -2
  92. package/dist/rules/noRestrictedSyntax.cjs.map +1 -1
  93. package/dist/rules/noTypes.cjs +9 -2
  94. package/dist/rules/noTypes.cjs.map +1 -1
  95. package/dist/rules/noUndefinedTypes.cjs +21 -13
  96. package/dist/rules/noUndefinedTypes.cjs.map +1 -1
  97. package/dist/rules/preferImportTag.cjs +28 -21
  98. package/dist/rules/preferImportTag.cjs.map +1 -1
  99. package/dist/rules/requireAsteriskPrefix.cjs +10 -2
  100. package/dist/rules/requireAsteriskPrefix.cjs.map +1 -1
  101. package/dist/rules/requireDescription.cjs +9 -2
  102. package/dist/rules/requireDescription.cjs.map +1 -1
  103. package/dist/rules/requireDescriptionCompleteSentence.cjs +15 -7
  104. package/dist/rules/requireDescriptionCompleteSentence.cjs.map +1 -1
  105. package/dist/rules/requireExample.cjs +10 -2
  106. package/dist/rules/requireExample.cjs.map +1 -1
  107. package/dist/rules/requireFileOverview.cjs +10 -2
  108. package/dist/rules/requireFileOverview.cjs.map +1 -1
  109. package/dist/rules/requireHyphenBeforeParamDescription.cjs +10 -2
  110. package/dist/rules/requireHyphenBeforeParamDescription.cjs.map +1 -1
  111. package/dist/rules/requireJsdoc.cjs +24 -17
  112. package/dist/rules/requireJsdoc.cjs.map +1 -1
  113. package/dist/rules/requireParam.cjs +9 -2
  114. package/dist/rules/requireParam.cjs.map +1 -1
  115. package/dist/rules/requireParamDescription.cjs +10 -2
  116. package/dist/rules/requireParamDescription.cjs.map +1 -1
  117. package/dist/rules/requireParamName.cjs +10 -2
  118. package/dist/rules/requireParamName.cjs.map +1 -1
  119. package/dist/rules/requireParamType.cjs +10 -2
  120. package/dist/rules/requireParamType.cjs.map +1 -1
  121. package/dist/rules/requireProperty.cjs +10 -2
  122. package/dist/rules/requireProperty.cjs.map +1 -1
  123. package/dist/rules/requirePropertyDescription.cjs +10 -2
  124. package/dist/rules/requirePropertyDescription.cjs.map +1 -1
  125. package/dist/rules/requirePropertyName.cjs +10 -2
  126. package/dist/rules/requirePropertyName.cjs.map +1 -1
  127. package/dist/rules/requirePropertyType.cjs +10 -2
  128. package/dist/rules/requirePropertyType.cjs.map +1 -1
  129. package/dist/rules/requireRejects.cjs +9 -2
  130. package/dist/rules/requireRejects.cjs.map +1 -1
  131. package/dist/rules/requireReturns.cjs +11 -4
  132. package/dist/rules/requireReturns.cjs.map +1 -1
  133. package/dist/rules/requireReturnsCheck.cjs +15 -8
  134. package/dist/rules/requireReturnsCheck.cjs.map +1 -1
  135. package/dist/rules/requireReturnsDescription.cjs +10 -2
  136. package/dist/rules/requireReturnsDescription.cjs.map +1 -1
  137. package/dist/rules/requireReturnsType.cjs +10 -2
  138. package/dist/rules/requireReturnsType.cjs.map +1 -1
  139. package/dist/rules/requireTags.cjs +9 -2
  140. package/dist/rules/requireTags.cjs.map +1 -1
  141. package/dist/rules/requireTemplate.cjs +13 -5
  142. package/dist/rules/requireTemplate.cjs.map +1 -1
  143. package/dist/rules/requireThrows.cjs +9 -2
  144. package/dist/rules/requireThrows.cjs.map +1 -1
  145. package/dist/rules/requireYields.cjs +9 -2
  146. package/dist/rules/requireYields.cjs.map +1 -1
  147. package/dist/rules/requireYieldsCheck.cjs +9 -2
  148. package/dist/rules/requireYieldsCheck.cjs.map +1 -1
  149. package/dist/rules/sortTags.cjs +12 -4
  150. package/dist/rules/sortTags.cjs.map +1 -1
  151. package/dist/rules/tagLines.cjs +9 -2
  152. package/dist/rules/tagLines.cjs.map +1 -1
  153. package/dist/rules/textEscaping.cjs +9 -2
  154. package/dist/rules/textEscaping.cjs.map +1 -1
  155. package/dist/rules/tsMethodSignatureStyle.cjs +18 -10
  156. package/dist/rules/tsMethodSignatureStyle.cjs.map +1 -1
  157. package/dist/rules/tsNoEmptyObjectType.cjs +13 -5
  158. package/dist/rules/tsNoEmptyObjectType.cjs.map +1 -1
  159. package/dist/rules/tsNoUnnecessaryTemplateExpression.cjs +16 -8
  160. package/dist/rules/tsNoUnnecessaryTemplateExpression.cjs.map +1 -1
  161. package/dist/rules/tsPreferFunctionType.cjs +16 -8
  162. package/dist/rules/tsPreferFunctionType.cjs.map +1 -1
  163. package/dist/rules/typeFormatting.cjs +17 -9
  164. package/dist/rules/typeFormatting.cjs.map +1 -1
  165. package/dist/rules/validTypes.cjs +18 -10
  166. package/dist/rules/validTypes.cjs.map +1 -1
  167. package/dist/tagNames.cjs +9 -4
  168. package/dist/tagNames.cjs.map +1 -1
  169. package/dist/utils/hasReturnValue.cjs +8 -1
  170. package/dist/utils/hasReturnValue.cjs.map +1 -1
  171. package/package.json +1 -1
@@ -1,3 +1,9 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
1
7
  const WarnSettings = function () {
2
8
  /** @type {WeakMap<object, Set<string>>} */
3
9
  const warnedSettings = new WeakMap();
@@ -27,5 +33,6 @@ const WarnSettings = function () {
27
33
  }
28
34
  };
29
35
  };
30
- export default WarnSettings;
36
+ var _default = exports.default = WarnSettings;
37
+ module.exports = exports.default;
31
38
  //# sourceMappingURL=WarnSettings.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"WarnSettings.cjs","names":[],"sources":["../src/WarnSettings.js"],"sourcesContent":["const WarnSettings = function () {\n /** @type {WeakMap<object, Set<string>>} */\n const warnedSettings = new WeakMap();\n\n return {\n /**\n * Warn only once for each context and setting\n * @param {import('eslint').Rule.RuleContext} context\n * @param {string} setting\n * @returns {boolean}\n */\n hasBeenWarned (context, setting) {\n return warnedSettings.has(context) && /** @type {Set<string>} */ (\n warnedSettings.get(context)\n ).has(setting);\n },\n\n /**\n * @param {import('eslint').Rule.RuleContext} context\n * @param {string} setting\n * @returns {void}\n */\n markSettingAsWarned (context, setting) {\n // c8 ignore else\n if (!warnedSettings.has(context)) {\n warnedSettings.set(context, new Set());\n }\n\n /** @type {Set<string>} */ (warnedSettings.get(context)).add(setting);\n },\n };\n};\n\nexport default WarnSettings;\n"],"mappings":"AAAA,MAAM,YAAY,GAAG,YAAY;EAC/B;EACA,MAAM,cAAc,GAAG,IAAI,OAAO,CAAC,CAAC;EAEpC,OAAO;IACL;AACJ;AACA;AACA;AACA;AACA;IACI,aAAa,CAAE,OAAO,EAAE,OAAO,EAAE;MAC/B,OAAO,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,0BACpC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAC3B,GAAG,CAAC,OAAO,CAAC;IAChB,CAAC;IAED;AACJ;AACA;AACA;AACA;IACI,mBAAmB,CAAE,OAAO,EAAE,OAAO,EAAE;MACrC;MACA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;QAChC,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC;MACxC;;MAEA;MAA4B,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAE,GAAG,CAAC,OAAO,CAAC;IACvE;EACF,CAAC;AACH,CAAC;AAED,eAAe,YAAY","ignoreList":[]}
1
+ {"version":3,"file":"WarnSettings.cjs","names":[],"sources":["../src/WarnSettings.js"],"sourcesContent":["const WarnSettings = function () {\n /** @type {WeakMap<object, Set<string>>} */\n const warnedSettings = new WeakMap();\n\n return {\n /**\n * Warn only once for each context and setting\n * @param {import('eslint').Rule.RuleContext} context\n * @param {string} setting\n * @returns {boolean}\n */\n hasBeenWarned (context, setting) {\n return warnedSettings.has(context) && /** @type {Set<string>} */ (\n warnedSettings.get(context)\n ).has(setting);\n },\n\n /**\n * @param {import('eslint').Rule.RuleContext} context\n * @param {string} setting\n * @returns {void}\n */\n markSettingAsWarned (context, setting) {\n // c8 ignore else\n if (!warnedSettings.has(context)) {\n warnedSettings.set(context, new Set());\n }\n\n /** @type {Set<string>} */ (warnedSettings.get(context)).add(setting);\n },\n };\n};\n\nexport default WarnSettings;\n"],"mappings":";;;;;;AAAA,MAAM,YAAY,GAAG,YAAY;EAC/B;EACA,MAAM,cAAc,GAAG,IAAI,OAAO,CAAC,CAAC;EAEpC,OAAO;IACL;AACJ;AACA;AACA;AACA;AACA;IACI,aAAa,CAAE,OAAO,EAAE,OAAO,EAAE;MAC/B,OAAO,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,0BACpC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAC3B,GAAG,CAAC,OAAO,CAAC;IAChB,CAAC;IAED;AACJ;AACA;AACA;AACA;IACI,mBAAmB,CAAE,OAAO,EAAE,OAAO,EAAE;MACrC;MACA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;QAChC,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC;MACxC;;MAEA;MAA4B,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAE,GAAG,CAAC,OAAO,CAAC;IACvE;EACF,CAAC;AACH,CAAC;AAAC,iCAEa,YAAY;AAAA","ignoreList":[]}
@@ -1,13 +1,16 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _commentParser = require("comment-parser");
1
8
  /**
2
9
  * Transform based on https://github.com/syavorsky/comment-parser/blob/master/src/transforms/align.ts
3
10
  *
4
11
  * It contains some customizations to align based on the tags, and some custom options.
5
12
  */
6
13
 
7
- import {
8
- // `comment-parser/primitives` export
9
- util } from 'comment-parser';
10
-
11
14
  /**
12
15
  * Detects if a line starts with a markdown list marker
13
16
  * Supports: -, *, numbered lists (1., 2., etc.)
@@ -39,7 +42,7 @@ const startsWithListMarker = (text, isFirstLineOfTag = false) => {
39
42
 
40
43
  const {
41
44
  rewireSource
42
- } = util;
45
+ } = _commentParser.util;
43
46
 
44
47
  /**
45
48
  * @typedef {{
@@ -394,5 +397,6 @@ const alignTransform = ({
394
397
  });
395
398
  };
396
399
  };
397
- export default alignTransform;
400
+ var _default = exports.default = alignTransform;
401
+ module.exports = exports.default;
398
402
  //# sourceMappingURL=alignTransform.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"alignTransform.cjs","names":[],"sources":["../src/alignTransform.js"],"sourcesContent":["/**\n * Transform based on https://github.com/syavorsky/comment-parser/blob/master/src/transforms/align.ts\n *\n * It contains some customizations to align based on the tags, and some custom options.\n */\n\nimport {\n // `comment-parser/primitives` export\n util,\n} from 'comment-parser';\n\n/**\n * Detects if a line starts with a markdown list marker\n * Supports: -, *, numbered lists (1., 2., etc.)\n * This explicitly excludes hyphens that are part of JSDoc tag syntax\n * @param {string} text - The text to check\n * @param {boolean} isFirstLineOfTag - True if this is the first line (tag line)\n * @returns {boolean} - True if the text starts with a list marker\n */\nconst startsWithListMarker = (text, isFirstLineOfTag = false) => {\n // On the first line of a tag, the hyphen is typically the JSDoc separator,\n // not a list marker\n if (isFirstLineOfTag) {\n return false;\n }\n\n // Match lines that start with optional whitespace, then a list marker\n // - or * followed by a space\n // or a number followed by . or ) and a space\n return /^\\s*(?:[\\-*]|\\d+(?:\\.|\\)))\\s+/v.test(text);\n};\n\n/**\n * @typedef {{\n * hasNoTypes: boolean,\n * maxNamedTagLength: import('./iterateJsdoc.js').Integer,\n * maxUnnamedTagLength: import('./iterateJsdoc.js').Integer\n * }} TypelessInfo\n */\n\nconst {\n rewireSource,\n} = util;\n\n/**\n * @typedef {{\n * name: import('./iterateJsdoc.js').Integer,\n * start: import('./iterateJsdoc.js').Integer,\n * tag: import('./iterateJsdoc.js').Integer,\n * type: import('./iterateJsdoc.js').Integer\n * }} Width\n */\n\n/** @type {Width} */\nconst zeroWidth = {\n name: 0,\n start: 0,\n tag: 0,\n type: 0,\n};\n\n/**\n * @param {string[]} tags\n * @param {import('./iterateJsdoc.js').Integer} index\n * @param {import('comment-parser').Line[]} source\n * @returns {boolean}\n */\nconst shouldAlign = (tags, index, source) => {\n const tag = source[index].tokens.tag.replace('@', '');\n const includesTag = tags.includes(tag);\n\n if (includesTag) {\n return true;\n }\n\n if (tag !== '') {\n return false;\n }\n\n for (let iterator = index; iterator >= 0; iterator--) {\n const previousTag = source[iterator].tokens.tag.replace('@', '');\n\n if (previousTag !== '') {\n if (tags.includes(previousTag)) {\n return true;\n }\n\n return false;\n }\n }\n\n return true;\n};\n\n/**\n * @param {string[]} tags\n * @returns {(\n * width: Width,\n * line: {\n * tokens: import('comment-parser').Tokens\n * },\n * index: import('./iterateJsdoc.js').Integer,\n * source: import('comment-parser').Line[]\n * ) => Width}\n */\nconst getWidth = (tags) => {\n return (width, {\n tokens,\n }, index, source) => {\n if (!shouldAlign(tags, index, source)) {\n return width;\n }\n\n return {\n name: Math.max(width.name, tokens.name.length),\n start: tokens.delimiter === '/**' ? tokens.start.length : width.start,\n tag: Math.max(width.tag, tokens.tag.length),\n type: Math.max(width.type, tokens.type.length),\n };\n };\n};\n\n/**\n * @param {{\n * description: string;\n * tags: import('comment-parser').Spec[];\n * problems: import('comment-parser').Problem[];\n * }} fields\n * @returns {TypelessInfo}\n */\nconst getTypelessInfo = (fields) => {\n const hasNoTypes = fields.tags.every(({\n type,\n }) => {\n return !type;\n });\n const maxNamedTagLength = Math.max(...fields.tags.map(({\n name,\n tag,\n }) => {\n return name.length === 0 ? -1 : tag.length;\n }).filter((length) => {\n return length !== -1;\n })) + 1;\n const maxUnnamedTagLength = Math.max(...fields.tags.map(({\n name,\n tag,\n }) => {\n return name.length === 0 ? tag.length : -1;\n }).filter((length) => {\n return length !== -1;\n })) + 1;\n return {\n hasNoTypes,\n maxNamedTagLength,\n maxUnnamedTagLength,\n };\n};\n\n/**\n * @param {import('./iterateJsdoc.js').Integer} len\n * @returns {string}\n */\nconst space = (len) => {\n return ''.padStart(len, ' ');\n};\n\n/**\n * Check if a tag or any of its lines contain list markers\n * @param {import('./iterateJsdoc.js').Integer} index - Current line index\n * @param {import('comment-parser').Line[]} source - All source lines\n * @returns {{hasListMarker: boolean, tagStartIndex: import('./iterateJsdoc.js').Integer}}\n */\nconst checkForListMarkers = (index, source) => {\n let hasListMarker = false;\n let tagStartIndex = index;\n while (tagStartIndex > 0 && source[tagStartIndex].tokens.tag === '') {\n tagStartIndex--;\n }\n\n for (let idx = tagStartIndex; idx <= index; idx++) {\n const isFirstLine = (idx === tagStartIndex);\n if (source[idx]?.tokens?.description && startsWithListMarker(source[idx].tokens.description, isFirstLine)) {\n hasListMarker = true;\n break;\n }\n }\n\n return {\n hasListMarker,\n tagStartIndex,\n };\n};\n\n/**\n * Calculate extra indentation for list items relative to the first continuation line\n * @param {import('./iterateJsdoc.js').Integer} index - Current line index\n * @param {import('./iterateJsdoc.js').Integer} tagStartIndex - Index of the tag line\n * @param {import('comment-parser').Line[]} source - All source lines\n * @returns {string} - Extra indentation spaces\n */\nconst calculateListExtraIndent = (index, tagStartIndex, source) => {\n // Find the first continuation line to use as baseline\n let firstContinuationIndent = null;\n for (let idx = tagStartIndex + 1; idx < source.length; idx++) {\n if (source[idx].tokens.description && !source[idx].tokens.tag) {\n firstContinuationIndent = source[idx].tokens.postDelimiter.length;\n break;\n }\n }\n\n // Calculate the extra indentation of current line relative to the first continuation line\n const currentOriginalIndent = source[index].tokens.postDelimiter.length;\n const extraIndent = firstContinuationIndent !== null && currentOriginalIndent > firstContinuationIndent ?\n ' '.repeat(currentOriginalIndent - firstContinuationIndent) :\n '';\n\n return extraIndent;\n};\n\n/**\n * @param {{\n * customSpacings: import('../src/rules/checkLineAlignment.js').CustomSpacings,\n * tags: string[],\n * indent: string,\n * preserveMainDescriptionPostDelimiter: boolean,\n * wrapIndent: string,\n * disableWrapIndent: boolean,\n * }} cfg\n * @returns {(\n * block: import('comment-parser').Block\n * ) => import('comment-parser').Block}\n */\nconst alignTransform = ({\n customSpacings,\n disableWrapIndent,\n indent,\n preserveMainDescriptionPostDelimiter,\n tags,\n wrapIndent,\n}) => {\n let intoTags = false;\n /** @type {Width} */\n let width;\n\n /**\n * @param {import('comment-parser').Tokens} tokens\n * @param {TypelessInfo} typelessInfo\n * @returns {import('comment-parser').Tokens}\n */\n const alignTokens = (tokens, typelessInfo) => {\n const nothingAfter = {\n delim: false,\n name: false,\n tag: false,\n type: false,\n };\n\n if (tokens.description === '') {\n nothingAfter.name = true;\n tokens.postName = '';\n\n if (tokens.name === '') {\n nothingAfter.type = true;\n tokens.postType = '';\n\n if (tokens.type === '') {\n nothingAfter.tag = true;\n tokens.postTag = '';\n\n /* c8 ignore next: Never happens because the !intoTags return. But it's here for consistency with the original align transform */\n if (tokens.tag === '') {\n nothingAfter.delim = true;\n }\n }\n }\n }\n\n let untypedNameAdjustment = 0;\n let untypedTypeAdjustment = 0;\n if (typelessInfo.hasNoTypes) {\n nothingAfter.tag = true;\n tokens.postTag = '';\n if (tokens.name === '') {\n untypedNameAdjustment = typelessInfo.maxNamedTagLength - tokens.tag.length;\n } else {\n untypedNameAdjustment = typelessInfo.maxNamedTagLength > typelessInfo.maxUnnamedTagLength ? 0 :\n Math.max(0, typelessInfo.maxUnnamedTagLength - (tokens.tag.length + tokens.name.length + 1));\n untypedTypeAdjustment = typelessInfo.maxNamedTagLength - tokens.tag.length;\n }\n }\n\n // Todo: Avoid fixing alignment of blocks with multiline wrapping of type\n if (tokens.tag === '' && tokens.type) {\n return tokens;\n }\n\n const spacings = {\n postDelimiter: customSpacings?.postDelimiter || 1,\n postName: customSpacings?.postName || 1,\n postTag: customSpacings?.postTag || 1,\n postType: customSpacings?.postType || 1,\n };\n\n tokens.postDelimiter = nothingAfter.delim ? '' : space(spacings.postDelimiter);\n\n if (!nothingAfter.tag) {\n tokens.postTag = space(width.tag - tokens.tag.length + spacings.postTag);\n }\n\n if (!nothingAfter.type) {\n tokens.postType = space(width.type - tokens.type.length + spacings.postType + untypedTypeAdjustment);\n }\n\n if (!nothingAfter.name) {\n // If post name is empty for all lines (name width 0), don't add post name spacing.\n tokens.postName = width.name === 0 ? '' : space(width.name - tokens.name.length + spacings.postName + untypedNameAdjustment);\n }\n\n return tokens;\n };\n\n /**\n * @param {import('comment-parser').Line} line\n * @param {import('./iterateJsdoc.js').Integer} index\n * @param {import('comment-parser').Line[]} source\n * @param {TypelessInfo} typelessInfo\n * @param {string|false} indentTag\n * @returns {import('comment-parser').Line}\n */\n const update = (line, index, source, typelessInfo, indentTag) => {\n /** @type {import('comment-parser').Tokens} */\n const tokens = {\n ...line.tokens,\n };\n\n if (tokens.tag !== '') {\n intoTags = true;\n }\n\n const isEmpty =\n tokens.tag === '' &&\n tokens.name === '' &&\n tokens.type === '' &&\n tokens.description === '';\n\n // dangling '*/'\n if (tokens.end === '*/' && isEmpty) {\n tokens.start = indent + ' ';\n\n return {\n ...line,\n tokens,\n };\n }\n\n switch (tokens.delimiter) {\n case '*':\n tokens.start = indent + ' ';\n break;\n case '/**':\n tokens.start = indent;\n break;\n default:\n tokens.delimiter = '';\n\n // compensate delimiter\n tokens.start = indent + ' ';\n }\n\n if (!intoTags) {\n if (tokens.description === '') {\n tokens.postDelimiter = '';\n } else if (!preserveMainDescriptionPostDelimiter) {\n tokens.postDelimiter = ' ';\n }\n\n return {\n ...line,\n tokens,\n };\n }\n\n const postHyphenSpacing = customSpacings?.postHyphen ?? 1;\n const hyphenSpacing = /^\\s*-\\s+/v;\n tokens.description = tokens.description.replace(\n hyphenSpacing, '-' + ''.padStart(postHyphenSpacing, ' '),\n );\n\n // Not align.\n if (shouldAlign(tags, index, source)) {\n alignTokens(tokens, typelessInfo);\n\n if (!disableWrapIndent && indentTag) {\n const {\n hasListMarker,\n tagStartIndex,\n } = checkForListMarkers(index, source);\n\n if (hasListMarker && index > tagStartIndex) {\n const extraIndent = calculateListExtraIndent(index, tagStartIndex, source);\n tokens.postDelimiter += wrapIndent + extraIndent;\n } else {\n // Normal case: add wrapIndent after the aligned delimiter\n tokens.postDelimiter += wrapIndent;\n }\n }\n }\n\n return {\n ...line,\n tokens,\n };\n };\n\n return ({\n source,\n ...fields\n }) => {\n width = source.reduce(getWidth(tags), {\n ...zeroWidth,\n });\n\n const typelessInfo = getTypelessInfo(fields);\n\n let tagIndentMode = false;\n\n return rewireSource({\n ...fields,\n source: source.map((line, index) => {\n const indentTag = !disableWrapIndent && tagIndentMode && !line.tokens.tag && line.tokens.description;\n const ret = update(line, index, source, typelessInfo, indentTag);\n\n if (!disableWrapIndent && line.tokens.tag) {\n tagIndentMode = true;\n }\n\n return ret;\n }),\n });\n };\n};\n\nexport default alignTransform;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"alignTransform.cjs","names":["util"],"sources":["../src/alignTransform.js"],"sourcesContent":["/**\n * Transform based on https://github.com/syavorsky/comment-parser/blob/master/src/transforms/align.ts\n *\n * It contains some customizations to align based on the tags, and some custom options.\n */\n\nimport {\n // `comment-parser/primitives` export\n util,\n} from 'comment-parser';\n\n/**\n * Detects if a line starts with a markdown list marker\n * Supports: -, *, numbered lists (1., 2., etc.)\n * This explicitly excludes hyphens that are part of JSDoc tag syntax\n * @param {string} text - The text to check\n * @param {boolean} isFirstLineOfTag - True if this is the first line (tag line)\n * @returns {boolean} - True if the text starts with a list marker\n */\nconst startsWithListMarker = (text, isFirstLineOfTag = false) => {\n // On the first line of a tag, the hyphen is typically the JSDoc separator,\n // not a list marker\n if (isFirstLineOfTag) {\n return false;\n }\n\n // Match lines that start with optional whitespace, then a list marker\n // - or * followed by a space\n // or a number followed by . or ) and a space\n return /^\\s*(?:[\\-*]|\\d+(?:\\.|\\)))\\s+/v.test(text);\n};\n\n/**\n * @typedef {{\n * hasNoTypes: boolean,\n * maxNamedTagLength: import('./iterateJsdoc.js').Integer,\n * maxUnnamedTagLength: import('./iterateJsdoc.js').Integer\n * }} TypelessInfo\n */\n\nconst {\n rewireSource,\n} = util;\n\n/**\n * @typedef {{\n * name: import('./iterateJsdoc.js').Integer,\n * start: import('./iterateJsdoc.js').Integer,\n * tag: import('./iterateJsdoc.js').Integer,\n * type: import('./iterateJsdoc.js').Integer\n * }} Width\n */\n\n/** @type {Width} */\nconst zeroWidth = {\n name: 0,\n start: 0,\n tag: 0,\n type: 0,\n};\n\n/**\n * @param {string[]} tags\n * @param {import('./iterateJsdoc.js').Integer} index\n * @param {import('comment-parser').Line[]} source\n * @returns {boolean}\n */\nconst shouldAlign = (tags, index, source) => {\n const tag = source[index].tokens.tag.replace('@', '');\n const includesTag = tags.includes(tag);\n\n if (includesTag) {\n return true;\n }\n\n if (tag !== '') {\n return false;\n }\n\n for (let iterator = index; iterator >= 0; iterator--) {\n const previousTag = source[iterator].tokens.tag.replace('@', '');\n\n if (previousTag !== '') {\n if (tags.includes(previousTag)) {\n return true;\n }\n\n return false;\n }\n }\n\n return true;\n};\n\n/**\n * @param {string[]} tags\n * @returns {(\n * width: Width,\n * line: {\n * tokens: import('comment-parser').Tokens\n * },\n * index: import('./iterateJsdoc.js').Integer,\n * source: import('comment-parser').Line[]\n * ) => Width}\n */\nconst getWidth = (tags) => {\n return (width, {\n tokens,\n }, index, source) => {\n if (!shouldAlign(tags, index, source)) {\n return width;\n }\n\n return {\n name: Math.max(width.name, tokens.name.length),\n start: tokens.delimiter === '/**' ? tokens.start.length : width.start,\n tag: Math.max(width.tag, tokens.tag.length),\n type: Math.max(width.type, tokens.type.length),\n };\n };\n};\n\n/**\n * @param {{\n * description: string;\n * tags: import('comment-parser').Spec[];\n * problems: import('comment-parser').Problem[];\n * }} fields\n * @returns {TypelessInfo}\n */\nconst getTypelessInfo = (fields) => {\n const hasNoTypes = fields.tags.every(({\n type,\n }) => {\n return !type;\n });\n const maxNamedTagLength = Math.max(...fields.tags.map(({\n name,\n tag,\n }) => {\n return name.length === 0 ? -1 : tag.length;\n }).filter((length) => {\n return length !== -1;\n })) + 1;\n const maxUnnamedTagLength = Math.max(...fields.tags.map(({\n name,\n tag,\n }) => {\n return name.length === 0 ? tag.length : -1;\n }).filter((length) => {\n return length !== -1;\n })) + 1;\n return {\n hasNoTypes,\n maxNamedTagLength,\n maxUnnamedTagLength,\n };\n};\n\n/**\n * @param {import('./iterateJsdoc.js').Integer} len\n * @returns {string}\n */\nconst space = (len) => {\n return ''.padStart(len, ' ');\n};\n\n/**\n * Check if a tag or any of its lines contain list markers\n * @param {import('./iterateJsdoc.js').Integer} index - Current line index\n * @param {import('comment-parser').Line[]} source - All source lines\n * @returns {{hasListMarker: boolean, tagStartIndex: import('./iterateJsdoc.js').Integer}}\n */\nconst checkForListMarkers = (index, source) => {\n let hasListMarker = false;\n let tagStartIndex = index;\n while (tagStartIndex > 0 && source[tagStartIndex].tokens.tag === '') {\n tagStartIndex--;\n }\n\n for (let idx = tagStartIndex; idx <= index; idx++) {\n const isFirstLine = (idx === tagStartIndex);\n if (source[idx]?.tokens?.description && startsWithListMarker(source[idx].tokens.description, isFirstLine)) {\n hasListMarker = true;\n break;\n }\n }\n\n return {\n hasListMarker,\n tagStartIndex,\n };\n};\n\n/**\n * Calculate extra indentation for list items relative to the first continuation line\n * @param {import('./iterateJsdoc.js').Integer} index - Current line index\n * @param {import('./iterateJsdoc.js').Integer} tagStartIndex - Index of the tag line\n * @param {import('comment-parser').Line[]} source - All source lines\n * @returns {string} - Extra indentation spaces\n */\nconst calculateListExtraIndent = (index, tagStartIndex, source) => {\n // Find the first continuation line to use as baseline\n let firstContinuationIndent = null;\n for (let idx = tagStartIndex + 1; idx < source.length; idx++) {\n if (source[idx].tokens.description && !source[idx].tokens.tag) {\n firstContinuationIndent = source[idx].tokens.postDelimiter.length;\n break;\n }\n }\n\n // Calculate the extra indentation of current line relative to the first continuation line\n const currentOriginalIndent = source[index].tokens.postDelimiter.length;\n const extraIndent = firstContinuationIndent !== null && currentOriginalIndent > firstContinuationIndent ?\n ' '.repeat(currentOriginalIndent - firstContinuationIndent) :\n '';\n\n return extraIndent;\n};\n\n/**\n * @param {{\n * customSpacings: import('../src/rules/checkLineAlignment.js').CustomSpacings,\n * tags: string[],\n * indent: string,\n * preserveMainDescriptionPostDelimiter: boolean,\n * wrapIndent: string,\n * disableWrapIndent: boolean,\n * }} cfg\n * @returns {(\n * block: import('comment-parser').Block\n * ) => import('comment-parser').Block}\n */\nconst alignTransform = ({\n customSpacings,\n disableWrapIndent,\n indent,\n preserveMainDescriptionPostDelimiter,\n tags,\n wrapIndent,\n}) => {\n let intoTags = false;\n /** @type {Width} */\n let width;\n\n /**\n * @param {import('comment-parser').Tokens} tokens\n * @param {TypelessInfo} typelessInfo\n * @returns {import('comment-parser').Tokens}\n */\n const alignTokens = (tokens, typelessInfo) => {\n const nothingAfter = {\n delim: false,\n name: false,\n tag: false,\n type: false,\n };\n\n if (tokens.description === '') {\n nothingAfter.name = true;\n tokens.postName = '';\n\n if (tokens.name === '') {\n nothingAfter.type = true;\n tokens.postType = '';\n\n if (tokens.type === '') {\n nothingAfter.tag = true;\n tokens.postTag = '';\n\n /* c8 ignore next: Never happens because the !intoTags return. But it's here for consistency with the original align transform */\n if (tokens.tag === '') {\n nothingAfter.delim = true;\n }\n }\n }\n }\n\n let untypedNameAdjustment = 0;\n let untypedTypeAdjustment = 0;\n if (typelessInfo.hasNoTypes) {\n nothingAfter.tag = true;\n tokens.postTag = '';\n if (tokens.name === '') {\n untypedNameAdjustment = typelessInfo.maxNamedTagLength - tokens.tag.length;\n } else {\n untypedNameAdjustment = typelessInfo.maxNamedTagLength > typelessInfo.maxUnnamedTagLength ? 0 :\n Math.max(0, typelessInfo.maxUnnamedTagLength - (tokens.tag.length + tokens.name.length + 1));\n untypedTypeAdjustment = typelessInfo.maxNamedTagLength - tokens.tag.length;\n }\n }\n\n // Todo: Avoid fixing alignment of blocks with multiline wrapping of type\n if (tokens.tag === '' && tokens.type) {\n return tokens;\n }\n\n const spacings = {\n postDelimiter: customSpacings?.postDelimiter || 1,\n postName: customSpacings?.postName || 1,\n postTag: customSpacings?.postTag || 1,\n postType: customSpacings?.postType || 1,\n };\n\n tokens.postDelimiter = nothingAfter.delim ? '' : space(spacings.postDelimiter);\n\n if (!nothingAfter.tag) {\n tokens.postTag = space(width.tag - tokens.tag.length + spacings.postTag);\n }\n\n if (!nothingAfter.type) {\n tokens.postType = space(width.type - tokens.type.length + spacings.postType + untypedTypeAdjustment);\n }\n\n if (!nothingAfter.name) {\n // If post name is empty for all lines (name width 0), don't add post name spacing.\n tokens.postName = width.name === 0 ? '' : space(width.name - tokens.name.length + spacings.postName + untypedNameAdjustment);\n }\n\n return tokens;\n };\n\n /**\n * @param {import('comment-parser').Line} line\n * @param {import('./iterateJsdoc.js').Integer} index\n * @param {import('comment-parser').Line[]} source\n * @param {TypelessInfo} typelessInfo\n * @param {string|false} indentTag\n * @returns {import('comment-parser').Line}\n */\n const update = (line, index, source, typelessInfo, indentTag) => {\n /** @type {import('comment-parser').Tokens} */\n const tokens = {\n ...line.tokens,\n };\n\n if (tokens.tag !== '') {\n intoTags = true;\n }\n\n const isEmpty =\n tokens.tag === '' &&\n tokens.name === '' &&\n tokens.type === '' &&\n tokens.description === '';\n\n // dangling '*/'\n if (tokens.end === '*/' && isEmpty) {\n tokens.start = indent + ' ';\n\n return {\n ...line,\n tokens,\n };\n }\n\n switch (tokens.delimiter) {\n case '*':\n tokens.start = indent + ' ';\n break;\n case '/**':\n tokens.start = indent;\n break;\n default:\n tokens.delimiter = '';\n\n // compensate delimiter\n tokens.start = indent + ' ';\n }\n\n if (!intoTags) {\n if (tokens.description === '') {\n tokens.postDelimiter = '';\n } else if (!preserveMainDescriptionPostDelimiter) {\n tokens.postDelimiter = ' ';\n }\n\n return {\n ...line,\n tokens,\n };\n }\n\n const postHyphenSpacing = customSpacings?.postHyphen ?? 1;\n const hyphenSpacing = /^\\s*-\\s+/v;\n tokens.description = tokens.description.replace(\n hyphenSpacing, '-' + ''.padStart(postHyphenSpacing, ' '),\n );\n\n // Not align.\n if (shouldAlign(tags, index, source)) {\n alignTokens(tokens, typelessInfo);\n\n if (!disableWrapIndent && indentTag) {\n const {\n hasListMarker,\n tagStartIndex,\n } = checkForListMarkers(index, source);\n\n if (hasListMarker && index > tagStartIndex) {\n const extraIndent = calculateListExtraIndent(index, tagStartIndex, source);\n tokens.postDelimiter += wrapIndent + extraIndent;\n } else {\n // Normal case: add wrapIndent after the aligned delimiter\n tokens.postDelimiter += wrapIndent;\n }\n }\n }\n\n return {\n ...line,\n tokens,\n };\n };\n\n return ({\n source,\n ...fields\n }) => {\n width = source.reduce(getWidth(tags), {\n ...zeroWidth,\n });\n\n const typelessInfo = getTypelessInfo(fields);\n\n let tagIndentMode = false;\n\n return rewireSource({\n ...fields,\n source: source.map((line, index) => {\n const indentTag = !disableWrapIndent && tagIndentMode && !line.tokens.tag && line.tokens.description;\n const ret = update(line, index, source, typelessInfo, indentTag);\n\n if (!disableWrapIndent && line.tokens.tag) {\n tagIndentMode = true;\n }\n\n return ret;\n }),\n });\n };\n};\n\nexport default alignTransform;\n"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,11 @@
1
- import iterateJsdoc from './iterateJsdoc.js';
1
+ "use strict";
2
2
 
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.buildForbidRuleDefinition = void 0;
7
+ var _iterateJsdoc = _interopRequireDefault(require("./iterateJsdoc.cjs"));
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
3
9
  /**
4
10
  * @typedef {(string|{
5
11
  * comment: string,
@@ -23,7 +29,7 @@ import iterateJsdoc from './iterateJsdoc.js';
23
29
  * }} cfg
24
30
  * @returns {import('eslint').Rule.RuleModule}
25
31
  */
26
- export const buildForbidRuleDefinition = ({
32
+ const buildForbidRuleDefinition = ({
27
33
  contextName,
28
34
  contexts: cntxts,
29
35
  description,
@@ -32,7 +38,7 @@ export const buildForbidRuleDefinition = ({
32
38
  schema,
33
39
  url
34
40
  }) => {
35
- return iterateJsdoc(({
41
+ return (0, _iterateJsdoc.default)(({
36
42
  context,
37
43
  info: {
38
44
  comment
@@ -91,4 +97,5 @@ export const buildForbidRuleDefinition = ({
91
97
  nonGlobalSettings: true
92
98
  });
93
99
  };
100
+ exports.buildForbidRuleDefinition = buildForbidRuleDefinition;
94
101
  //# sourceMappingURL=buildForbidRuleDefinition.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"buildForbidRuleDefinition.cjs","names":[],"sources":["../src/buildForbidRuleDefinition.js"],"sourcesContent":["import iterateJsdoc from './iterateJsdoc.js';\n\n/**\n * @typedef {(string|{\n * comment: string,\n * context: string,\n * message?: string\n * })[]} Contexts\n */\n\n/**\n * @param {{\n * contexts?: Contexts,\n * description?: string,\n * getContexts?: (\n * ctxt: import('eslint').Rule.RuleContext,\n * report: import('./iterateJsdoc.js').Report\n * ) => Contexts|false,\n * contextName?: string,\n * modifyContext?: (context: import('eslint').Rule.RuleContext) => import('eslint').Rule.RuleContext,\n * schema?: import('eslint').Rule.RuleMetaData['schema']\n * url?: string,\n * }} cfg\n * @returns {import('eslint').Rule.RuleModule}\n */\nexport const buildForbidRuleDefinition = ({\n contextName,\n contexts: cntxts,\n description,\n getContexts,\n modifyContext,\n schema,\n url,\n}) => {\n return iterateJsdoc(({\n context,\n info: {\n comment,\n },\n report,\n utils,\n }) => {\n /** @type {Contexts|boolean|undefined} */\n let contexts = cntxts;\n\n if (getContexts) {\n contexts = getContexts(context, report);\n if (!contexts) {\n return;\n }\n }\n\n const {\n contextStr,\n foundContext,\n } = utils.findContext(/** @type {Contexts} */ (contexts), comment);\n\n // We are not on the *particular* matching context/comment, so don't assume\n // we need reporting\n if (!foundContext) {\n return;\n }\n\n const message = /** @type {import('./iterateJsdoc.js').ContextObject} */ (\n foundContext\n )?.message ??\n 'Syntax is restricted: {{context}}' +\n (comment ? ' with {{comment}}' : '');\n\n report(message, null, null, comment ? {\n comment,\n context: contextStr,\n } : {\n context: contextStr,\n });\n }, {\n contextSelected: true,\n meta: {\n docs: {\n description: description ?? contextName ?? 'Reports when certain comment structures are present.',\n url: url ?? 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/advanced.md#user-content-advanced-creating-your-own-rules',\n },\n schema: schema ?? [],\n type: 'suggestion',\n },\n modifyContext: modifyContext ?? (getContexts ? undefined : (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: cntxts,\n },\n ],\n },\n },\n );\n }),\n nonGlobalSettings: true,\n });\n};\n"],"mappings":"AAAA,OAAO,YAAY,MAAM,mBAAmB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAM,yBAAyB,GAAG,CAAC;EACxC,WAAW;EACX,QAAQ,EAAE,MAAM;EAChB,WAAW;EACX,WAAW;EACX,aAAa;EACb,MAAM;EACN;AACF,CAAC,KAAK;EACJ,OAAO,YAAY,CAAC,CAAC;IACnB,OAAO;IACP,IAAI,EAAE;MACJ;IACF,CAAC;IACD,MAAM;IACN;EACF,CAAC,KAAK;IACJ;IACA,IAAI,QAAQ,GAAG,MAAM;IAErB,IAAI,WAAW,EAAE;MACf,QAAQ,GAAG,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC;MACvC,IAAI,CAAC,QAAQ,EAAE;QACb;MACF;IACF;IAEA,MAAM;MACJ,UAAU;MACV;IACF,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,uBAAyB,QAAQ,EAAG,OAAO,CAAC;;IAElE;IACA;IACA,IAAI,CAAC,YAAY,EAAE;MACjB;IACF;IAEA,MAAM,OAAO,GAAG,wDACd,YAAY,EACX,OAAO,IACR,mCAAmC,IAChC,OAAO,GAAG,mBAAmB,GAAG,EAAE,CAAC;IAExC,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,GAAG;MACpC,OAAO;MACP,OAAO,EAAE;IACX,CAAC,GAAG;MACF,OAAO,EAAE;IACX,CAAC,CAAC;EACJ,CAAC,EAAE;IACD,eAAe,EAAE,IAAI;IACrB,IAAI,EAAE;MACJ,IAAI,EAAE;QACJ,WAAW,EAAE,WAAW,IAAI,WAAW,IAAI,sDAAsD;QACjG,GAAG,EAAE,GAAG,IAAI;MACd,CAAC;MACD,MAAM,EAAE,MAAM,IAAI,EAAE;MACpB,IAAI,EAAE;IACR,CAAC;IACD,aAAa,EAAE,aAAa,KAAK,WAAW,GAAG,SAAS,GAAI,OAAO,IAAK;MACtE;MACA,MAAM,mBAAmB,GAAG,MAAM,CAAC,yBAAyB,CAAC,OAAO,CAAC;MACrE,OAAO,MAAM,CAAC,MAAM,CAClB,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,EAC9B;QACE,GAAG,mBAAmB;QACtB,OAAO,EAAE;UACP,GAAG,mBAAmB,CAAC,OAAO;UAC9B,KAAK,EAAE,CACL;YACE,QAAQ,EAAE;UACZ,CAAC;QAEL;MACF,CACF,CAAC;IACH,CAAC,CAAC;IACF,iBAAiB,EAAE;EACrB,CAAC,CAAC;AACJ,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"buildForbidRuleDefinition.cjs","names":["iterateJsdoc"],"sources":["../src/buildForbidRuleDefinition.js"],"sourcesContent":["import iterateJsdoc from './iterateJsdoc.js';\n\n/**\n * @typedef {(string|{\n * comment: string,\n * context: string,\n * message?: string\n * })[]} Contexts\n */\n\n/**\n * @param {{\n * contexts?: Contexts,\n * description?: string,\n * getContexts?: (\n * ctxt: import('eslint').Rule.RuleContext,\n * report: import('./iterateJsdoc.js').Report\n * ) => Contexts|false,\n * contextName?: string,\n * modifyContext?: (context: import('eslint').Rule.RuleContext) => import('eslint').Rule.RuleContext,\n * schema?: import('eslint').Rule.RuleMetaData['schema']\n * url?: string,\n * }} cfg\n * @returns {import('eslint').Rule.RuleModule}\n */\nexport const buildForbidRuleDefinition = ({\n contextName,\n contexts: cntxts,\n description,\n getContexts,\n modifyContext,\n schema,\n url,\n}) => {\n return iterateJsdoc(({\n context,\n info: {\n comment,\n },\n report,\n utils,\n }) => {\n /** @type {Contexts|boolean|undefined} */\n let contexts = cntxts;\n\n if (getContexts) {\n contexts = getContexts(context, report);\n if (!contexts) {\n return;\n }\n }\n\n const {\n contextStr,\n foundContext,\n } = utils.findContext(/** @type {Contexts} */ (contexts), comment);\n\n // We are not on the *particular* matching context/comment, so don't assume\n // we need reporting\n if (!foundContext) {\n return;\n }\n\n const message = /** @type {import('./iterateJsdoc.js').ContextObject} */ (\n foundContext\n )?.message ??\n 'Syntax is restricted: {{context}}' +\n (comment ? ' with {{comment}}' : '');\n\n report(message, null, null, comment ? {\n comment,\n context: contextStr,\n } : {\n context: contextStr,\n });\n }, {\n contextSelected: true,\n meta: {\n docs: {\n description: description ?? contextName ?? 'Reports when certain comment structures are present.',\n url: url ?? 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/advanced.md#user-content-advanced-creating-your-own-rules',\n },\n schema: schema ?? [],\n type: 'suggestion',\n },\n modifyContext: modifyContext ?? (getContexts ? undefined : (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: cntxts,\n },\n ],\n },\n },\n );\n }),\n nonGlobalSettings: true,\n });\n};\n"],"mappings":";;;;;;AAAA;AAA6C;AAE7C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,yBAAyB,GAAG,CAAC;EACxC,WAAW;EACX,QAAQ,EAAE,MAAM;EAChB,WAAW;EACX,WAAW;EACX,aAAa;EACb,MAAM;EACN;AACF,CAAC,KAAK;EACJ,OAAO,IAAAA,qBAAY,EAAC,CAAC;IACnB,OAAO;IACP,IAAI,EAAE;MACJ;IACF,CAAC;IACD,MAAM;IACN;EACF,CAAC,KAAK;IACJ;IACA,IAAI,QAAQ,GAAG,MAAM;IAErB,IAAI,WAAW,EAAE;MACf,QAAQ,GAAG,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC;MACvC,IAAI,CAAC,QAAQ,EAAE;QACb;MACF;IACF;IAEA,MAAM;MACJ,UAAU;MACV;IACF,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,uBAAyB,QAAQ,EAAG,OAAO,CAAC;;IAElE;IACA;IACA,IAAI,CAAC,YAAY,EAAE;MACjB;IACF;IAEA,MAAM,OAAO,GAAG,wDACd,YAAY,EACX,OAAO,IACR,mCAAmC,IAChC,OAAO,GAAG,mBAAmB,GAAG,EAAE,CAAC;IAExC,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,GAAG;MACpC,OAAO;MACP,OAAO,EAAE;IACX,CAAC,GAAG;MACF,OAAO,EAAE;IACX,CAAC,CAAC;EACJ,CAAC,EAAE;IACD,eAAe,EAAE,IAAI;IACrB,IAAI,EAAE;MACJ,IAAI,EAAE;QACJ,WAAW,EAAE,WAAW,IAAI,WAAW,IAAI,sDAAsD;QACjG,GAAG,EAAE,GAAG,IAAI;MACd,CAAC;MACD,MAAM,EAAE,MAAM,IAAI,EAAE;MACpB,IAAI,EAAE;IACR,CAAC;IACD,aAAa,EAAE,aAAa,KAAK,WAAW,GAAG,SAAS,GAAI,OAAO,IAAK;MACtE;MACA,MAAM,mBAAmB,GAAG,MAAM,CAAC,yBAAyB,CAAC,OAAO,CAAC;MACrE,OAAO,MAAM,CAAC,MAAM,CAClB,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,EAC9B;QACE,GAAG,mBAAmB;QACtB,OAAO,EAAE;UACP,GAAG,mBAAmB,CAAC,OAAO;UAC9B,KAAK,EAAE,CACL;YACE,QAAQ,EAAE;UACZ,CAAC;QAEL;MACF,CACF,CAAC;IACH,CAAC,CAAC;IACF,iBAAiB,EAAE;EACrB,CAAC,CAAC;AACJ,CAAC;AAAC","ignoreList":[]}
@@ -1,6 +1,12 @@
1
- import iterateJsdoc from './iterateJsdoc.js';
2
- import { parse, stringify, traverse, tryParse } from '@es-joy/jsdoccomment';
1
+ "use strict";
3
2
 
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.buildRejectOrPreferRuleDefinition = void 0;
7
+ var _iterateJsdoc = _interopRequireDefault(require("./iterateJsdoc.cjs"));
8
+ var _jsdoccomment = require("@es-joy/jsdoccomment");
9
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
4
10
  /**
5
11
  * Adjusts the parent type node `meta` for generic matches (or type node
6
12
  * `type` for `JsdocTypeAny`) and sets the type node `value`.
@@ -92,7 +98,7 @@ const infoUC = {
92
98
  * }} cfg
93
99
  * @returns {import('eslint').Rule.RuleModule}
94
100
  */
95
- export const buildRejectOrPreferRuleDefinition = ({
101
+ const buildRejectOrPreferRuleDefinition = ({
96
102
  checkNativeTypes = null,
97
103
  typeName,
98
104
  description = typeName ?? 'Reports types deemed invalid (customizable and with defaults, for preventing and/or recommending replacements).',
@@ -100,7 +106,7 @@ export const buildRejectOrPreferRuleDefinition = ({
100
106
  schema = [],
101
107
  url = 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-types.md#repos-sticky-header'
102
108
  }) => {
103
- return iterateJsdoc(({
109
+ return (0, _iterateJsdoc.default)(({
104
110
  context,
105
111
  jsdocNode,
106
112
  report,
@@ -276,7 +282,7 @@ export const buildRejectOrPreferRuleDefinition = ({
276
282
  const invalidTypes = [];
277
283
  let typeAst;
278
284
  try {
279
- typeAst = mode === 'permissive' ? tryParse(jsdocTag.type) : parse(jsdocTag.type, mode);
285
+ typeAst = mode === 'permissive' ? (0, _jsdoccomment.tryParse)(jsdocTag.type) : (0, _jsdoccomment.parse)(jsdocTag.type, mode);
280
286
  } catch {
281
287
  continue;
282
288
  }
@@ -284,7 +290,7 @@ export const buildRejectOrPreferRuleDefinition = ({
284
290
  name: nameInTag,
285
291
  tag: tagName
286
292
  } = jsdocTag;
287
- traverse(typeAst, (node, parentNode, property) => {
293
+ (0, _jsdoccomment.traverse)(typeAst, (node, parentNode, property) => {
288
294
  const {
289
295
  type,
290
296
  value
@@ -299,7 +305,7 @@ export const buildRejectOrPreferRuleDefinition = ({
299
305
  getInvalidTypes(type, value, tagName, nameInTag, idx, property, node, parentNode, invalidTypes);
300
306
  });
301
307
  if (invalidTypes.length) {
302
- const fixedType = stringify(typeAst);
308
+ const fixedType = (0, _jsdoccomment.stringify)(typeAst);
303
309
 
304
310
  /**
305
311
  * @type {import('eslint').Rule.ReportFixer}
@@ -342,4 +348,5 @@ export const buildRejectOrPreferRuleDefinition = ({
342
348
  }
343
349
  });
344
350
  };
351
+ exports.buildRejectOrPreferRuleDefinition = buildRejectOrPreferRuleDefinition;
345
352
  //# sourceMappingURL=buildRejectOrPreferRuleDefinition.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"buildRejectOrPreferRuleDefinition.cjs","names":[],"sources":["../src/buildRejectOrPreferRuleDefinition.js"],"sourcesContent":["import iterateJsdoc from './iterateJsdoc.js';\nimport {\n parse,\n stringify,\n traverse,\n tryParse,\n} from '@es-joy/jsdoccomment';\n\n/**\n * Adjusts the parent type node `meta` for generic matches (or type node\n * `type` for `JsdocTypeAny`) and sets the type node `value`.\n * @param {string} type The actual type\n * @param {string} preferred The preferred type\n * @param {boolean} isGenericMatch\n * @param {string} typeNodeName\n * @param {import('jsdoc-type-pratt-parser').NonRootResult} node\n * @param {import('jsdoc-type-pratt-parser').NonRootResult|undefined} parentNode\n * @returns {void}\n */\nconst adjustNames = (type, preferred, isGenericMatch, typeNodeName, node, parentNode) => {\n let ret = preferred;\n if (isGenericMatch) {\n const parentMeta = /** @type {import('jsdoc-type-pratt-parser').GenericResult} */ (\n parentNode\n ).meta;\n if (preferred === '[]') {\n parentMeta.brackets = 'square';\n parentMeta.dot = false;\n ret = 'Array';\n } else {\n const dotBracketEnd = preferred.match(/\\.(?:<>)?$/v);\n if (dotBracketEnd) {\n parentMeta.brackets = 'angle';\n parentMeta.dot = true;\n ret = preferred.slice(0, -dotBracketEnd[0].length);\n } else {\n const bracketEnd = preferred.endsWith('<>');\n if (bracketEnd) {\n parentMeta.brackets = 'angle';\n parentMeta.dot = false;\n ret = preferred.slice(0, -2);\n } else if (\n parentMeta?.brackets === 'square' &&\n (typeNodeName === '[]' || typeNodeName === 'Array')\n ) {\n parentMeta.brackets = 'angle';\n parentMeta.dot = false;\n }\n }\n }\n } else if (type === 'JsdocTypeAny') {\n node.type = 'JsdocTypeName';\n }\n\n /** @type {import('jsdoc-type-pratt-parser').NameResult} */ (\n node\n ).value = ret.replace(/(?:\\.|<>|\\.<>|\\[\\])$/v, '');\n\n // For bare pseudo-types like `<>`\n if (!ret) {\n /** @type {import('jsdoc-type-pratt-parser').NameResult} */ (\n node\n ).value = typeNodeName;\n }\n};\n\n/**\n * @param {boolean} [upperCase]\n * @returns {string}\n */\nconst getMessage = (upperCase) => {\n return 'Use object shorthand or index signatures instead of ' +\n '`' + (upperCase ? 'O' : 'o') + 'bject`, e.g., `{[key: string]: string}`';\n};\n\n/**\n * @type {{\n * message: string,\n * replacement: false\n * }}\n */\nconst info = {\n message: getMessage(),\n replacement: false,\n};\n\n/**\n * @type {{\n * message: string,\n * replacement: false\n * }}\n */\nconst infoUC = {\n message: getMessage(true),\n replacement: false,\n};\n\n/**\n * @param {{\n * checkNativeTypes?: import('./rules/checkTypes.js').CheckNativeTypes|null\n * overrideSettings?: import('./iterateJsdoc.js').Settings['preferredTypes']|null,\n * description?: string,\n * schema?: import('eslint').Rule.RuleMetaData['schema'],\n * typeName?: string,\n * url?: string,\n * }} cfg\n * @returns {import('eslint').Rule.RuleModule}\n */\nexport const buildRejectOrPreferRuleDefinition = ({\n checkNativeTypes = null,\n typeName,\n description = typeName ?? 'Reports types deemed invalid (customizable and with defaults, for preventing and/or recommending replacements).',\n overrideSettings = null,\n schema = [],\n url = 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-types.md#repos-sticky-header',\n}) => {\n return iterateJsdoc(\n ({\n context,\n jsdocNode,\n report,\n settings,\n sourceCode,\n utils,\n }) => {\n const jsdocTagsWithPossibleType = utils.filterTags((tag) => {\n return Boolean(utils.tagMightHaveTypePosition(tag.tag));\n });\n\n const\n /**\n * @type {{\n * preferredTypes: import('./iterateJsdoc.js').PreferredTypes,\n * structuredTags: import('./iterateJsdoc.js').StructuredTags,\n * mode: import('./jsdocUtils.js').ParserMode\n * }}\n */\n {\n mode,\n preferredTypes: preferredTypesOriginal,\n structuredTags,\n } = overrideSettings ? {\n mode: settings.mode,\n preferredTypes: overrideSettings,\n structuredTags: {},\n } : settings;\n\n const injectObjectPreferredTypes = !overrideSettings &&\n !('Object' in preferredTypesOriginal ||\n 'object' in preferredTypesOriginal ||\n 'object.<>' in preferredTypesOriginal ||\n 'Object.<>' in preferredTypesOriginal ||\n 'object<>' in preferredTypesOriginal);\n\n /** @type {import('./iterateJsdoc.js').PreferredTypes} */\n const typeToInject = mode === 'typescript' ?\n {\n Object: 'object',\n 'object.<>': info,\n 'Object.<>': infoUC,\n 'object<>': info,\n 'Object<>': infoUC,\n } :\n {\n Object: 'object',\n 'object.<>': 'Object<>',\n 'Object.<>': 'Object<>',\n 'object<>': 'Object<>',\n };\n\n /** @type {import('./iterateJsdoc.js').PreferredTypes} */\n const preferredTypes = {\n ...injectObjectPreferredTypes ?\n typeToInject :\n {},\n ...preferredTypesOriginal,\n };\n\n const\n /**\n * @type {{\n * noDefaults: boolean,\n * unifyParentAndChildTypeChecks: boolean,\n * exemptTagContexts: ({\n * tag: string,\n * types: true|string[]\n * })[]\n * }}\n */ {\n exemptTagContexts = [],\n noDefaults,\n unifyParentAndChildTypeChecks,\n } = context.options[0] || {};\n\n /**\n * Gets information about the preferred type: whether there is a matching\n * preferred type, what the type is, and whether it is a match to a generic.\n * @param {string} _type Not currently in use\n * @param {string} typeNodeName\n * @param {import('jsdoc-type-pratt-parser').NonRootResult|undefined} parentNode\n * @param {string|undefined} property\n * @returns {[hasMatchingPreferredType: boolean, typeName: string, isGenericMatch: boolean]}\n */\n const getPreferredTypeInfo = (_type, typeNodeName, parentNode, property) => {\n let hasMatchingPreferredType = false;\n let isGenericMatch = false;\n let typName = typeNodeName;\n\n const isNameOfGeneric = parentNode !== undefined && parentNode.type === 'JsdocTypeGeneric' && property === 'left';\n\n const brackets = /** @type {import('jsdoc-type-pratt-parser').GenericResult} */ (\n parentNode\n )?.meta?.brackets;\n const dot = /** @type {import('jsdoc-type-pratt-parser').GenericResult} */ (\n parentNode\n )?.meta?.dot;\n\n if (brackets === 'angle') {\n const checkPostFixes = dot ? [\n '.', '.<>',\n ] : [\n '<>',\n ];\n isGenericMatch = checkPostFixes.some((checkPostFix) => {\n const preferredType = preferredTypes?.[typeNodeName + checkPostFix];\n\n // Does `unifyParentAndChildTypeChecks` need to be checked here?\n if (\n (unifyParentAndChildTypeChecks || isNameOfGeneric ||\n /* c8 ignore next 2 -- If checking `unifyParentAndChildTypeChecks` */\n (typeof preferredType === 'object' &&\n preferredType?.unifyParentAndChildTypeChecks)\n ) &&\n preferredType !== undefined\n ) {\n typName += checkPostFix;\n\n return true;\n }\n\n return false;\n });\n }\n\n if (\n !isGenericMatch && property &&\n /** @type {import('jsdoc-type-pratt-parser').NonRootResult} */ (\n parentNode\n ).type === 'JsdocTypeGeneric'\n ) {\n const checkPostFixes = dot ? [\n '.', '.<>',\n ] : [\n brackets === 'angle' ? '<>' : '[]',\n ];\n\n isGenericMatch = checkPostFixes.some((checkPostFix) => {\n const preferredType = preferredTypes?.[checkPostFix];\n if (\n // Does `unifyParentAndChildTypeChecks` need to be checked here?\n (unifyParentAndChildTypeChecks || isNameOfGeneric ||\n /* c8 ignore next 2 -- If checking `unifyParentAndChildTypeChecks` */\n (typeof preferredType === 'object' &&\n preferredType?.unifyParentAndChildTypeChecks)) &&\n preferredType !== undefined\n ) {\n typName = checkPostFix;\n\n return true;\n }\n\n return false;\n });\n }\n\n const prefType = preferredTypes?.[typeNodeName];\n const directNameMatch = prefType !== undefined &&\n !Object.values(preferredTypes).includes(typeNodeName);\n const specificUnify = typeof prefType === 'object' &&\n prefType?.unifyParentAndChildTypeChecks;\n const unifiedSyntaxParentMatch = property && directNameMatch && (unifyParentAndChildTypeChecks || specificUnify);\n isGenericMatch = isGenericMatch || Boolean(unifiedSyntaxParentMatch);\n\n hasMatchingPreferredType = isGenericMatch ||\n directNameMatch && !property;\n\n return [\n hasMatchingPreferredType, typName, isGenericMatch,\n ];\n };\n\n /**\n * Collect invalid type info.\n * @param {string} type\n * @param {string} value\n * @param {string} tagName\n * @param {string} nameInTag\n * @param {number} idx\n * @param {string|undefined} property\n * @param {import('jsdoc-type-pratt-parser').NonRootResult} node\n * @param {import('jsdoc-type-pratt-parser').NonRootResult|undefined} parentNode\n * @param {(string|false|undefined)[][]} invalidTypes\n * @returns {void}\n */\n const getInvalidTypes = (type, value, tagName, nameInTag, idx, property, node, parentNode, invalidTypes) => {\n let typeNodeName = type === 'JsdocTypeAny' ? '*' : value;\n\n const [\n hasMatchingPreferredType,\n typName,\n isGenericMatch,\n ] = getPreferredTypeInfo(type, typeNodeName, parentNode, property);\n\n let preferred;\n let types;\n if (hasMatchingPreferredType) {\n const preferredSetting = preferredTypes[typName];\n typeNodeName = typName === '[]' ? typName : typeNodeName;\n\n if (!preferredSetting) {\n invalidTypes.push([\n typeNodeName,\n ]);\n } else if (typeof preferredSetting === 'string') {\n preferred = preferredSetting;\n invalidTypes.push([\n typeNodeName, preferred,\n ]);\n } else if (preferredSetting && typeof preferredSetting === 'object') {\n const nextItem = preferredSetting.skipRootChecking && jsdocTagsWithPossibleType[idx + 1];\n\n if (!nextItem || !nextItem.name.startsWith(`${nameInTag}.`)) {\n preferred = preferredSetting.replacement;\n invalidTypes.push([\n typeNodeName,\n preferred,\n preferredSetting.message,\n ]);\n }\n } else {\n utils.reportSettings(\n 'Invalid `settings.jsdoc.preferredTypes`. Values must be falsy, a string, or an object.',\n );\n\n return;\n }\n } else if (Object.entries(structuredTags).some(([\n tag,\n {\n type: typs,\n },\n ]) => {\n types = typs;\n\n return tag === tagName &&\n Array.isArray(types) &&\n !types.includes(typeNodeName);\n })) {\n invalidTypes.push([\n typeNodeName, types,\n ]);\n } else if (checkNativeTypes && !noDefaults && type === 'JsdocTypeName') {\n preferred = checkNativeTypes(\n preferredTypes, typeNodeName, preferred, parentNode, invalidTypes,\n );\n }\n\n // For fixer\n if (preferred) {\n adjustNames(type, preferred, isGenericMatch, typeNodeName, node, parentNode);\n }\n };\n\n for (const [\n idx,\n jsdocTag,\n ] of jsdocTagsWithPossibleType.entries()) {\n /** @type {(string|false|undefined)[][]} */\n const invalidTypes = [];\n let typeAst;\n\n try {\n typeAst = mode === 'permissive' ? tryParse(jsdocTag.type) : parse(jsdocTag.type, mode);\n } catch {\n continue;\n }\n\n const {\n name: nameInTag,\n tag: tagName,\n } = jsdocTag;\n\n traverse(typeAst, (node, parentNode, property) => {\n const {\n type,\n value,\n } =\n /**\n * @type {import('jsdoc-type-pratt-parser').NameResult}\n */ (node);\n if (![\n 'JsdocTypeAny', 'JsdocTypeName',\n ].includes(type)) {\n return;\n }\n\n getInvalidTypes(type, value, tagName, nameInTag, idx, property, node, parentNode, invalidTypes);\n });\n\n if (invalidTypes.length) {\n const fixedType = stringify(typeAst);\n\n /**\n * @type {import('eslint').Rule.ReportFixer}\n */\n const fix = (fixer) => {\n return fixer.replaceText(\n jsdocNode,\n sourceCode.getText(jsdocNode).replace(\n `{${jsdocTag.type}}`,\n `{${fixedType}}`,\n ),\n );\n };\n\n for (const [\n badType,\n preferredType = '',\n msg,\n ] of invalidTypes) {\n const tagValue = jsdocTag.name ? ` \"${jsdocTag.name}\"` : '';\n if (exemptTagContexts.some(({\n tag,\n types,\n }) => {\n return tag === tagName &&\n (types === true || types.includes(jsdocTag.type));\n })) {\n continue;\n }\n\n report(\n msg ||\n `Invalid JSDoc @${tagName}${tagValue} type \"${badType}\"` +\n (preferredType ? '; ' : '.') +\n (preferredType ? `prefer: ${JSON.stringify(preferredType)}.` : ''),\n preferredType ? fix : null,\n jsdocTag,\n msg ? {\n tagName,\n tagValue,\n } : undefined,\n );\n }\n }\n }\n },\n {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description,\n url,\n },\n ...(!overrideSettings || (Object.values(overrideSettings).some((os) => {\n return os && typeof os === 'object' ?\n /* c8 ignore next -- Ok */\n os.replacement :\n typeof os === 'string';\n })) ?\n {\n fixable: 'code',\n } :\n {}\n ),\n schema,\n type: 'suggestion',\n },\n },\n );\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"buildRejectOrPreferRuleDefinition.cjs","names":["iterateJsdoc","tryParse","parse","traverse","stringify"],"sources":["../src/buildRejectOrPreferRuleDefinition.js"],"sourcesContent":["import iterateJsdoc from './iterateJsdoc.js';\nimport {\n parse,\n stringify,\n traverse,\n tryParse,\n} from '@es-joy/jsdoccomment';\n\n/**\n * Adjusts the parent type node `meta` for generic matches (or type node\n * `type` for `JsdocTypeAny`) and sets the type node `value`.\n * @param {string} type The actual type\n * @param {string} preferred The preferred type\n * @param {boolean} isGenericMatch\n * @param {string} typeNodeName\n * @param {import('jsdoc-type-pratt-parser').NonRootResult} node\n * @param {import('jsdoc-type-pratt-parser').NonRootResult|undefined} parentNode\n * @returns {void}\n */\nconst adjustNames = (type, preferred, isGenericMatch, typeNodeName, node, parentNode) => {\n let ret = preferred;\n if (isGenericMatch) {\n const parentMeta = /** @type {import('jsdoc-type-pratt-parser').GenericResult} */ (\n parentNode\n ).meta;\n if (preferred === '[]') {\n parentMeta.brackets = 'square';\n parentMeta.dot = false;\n ret = 'Array';\n } else {\n const dotBracketEnd = preferred.match(/\\.(?:<>)?$/v);\n if (dotBracketEnd) {\n parentMeta.brackets = 'angle';\n parentMeta.dot = true;\n ret = preferred.slice(0, -dotBracketEnd[0].length);\n } else {\n const bracketEnd = preferred.endsWith('<>');\n if (bracketEnd) {\n parentMeta.brackets = 'angle';\n parentMeta.dot = false;\n ret = preferred.slice(0, -2);\n } else if (\n parentMeta?.brackets === 'square' &&\n (typeNodeName === '[]' || typeNodeName === 'Array')\n ) {\n parentMeta.brackets = 'angle';\n parentMeta.dot = false;\n }\n }\n }\n } else if (type === 'JsdocTypeAny') {\n node.type = 'JsdocTypeName';\n }\n\n /** @type {import('jsdoc-type-pratt-parser').NameResult} */ (\n node\n ).value = ret.replace(/(?:\\.|<>|\\.<>|\\[\\])$/v, '');\n\n // For bare pseudo-types like `<>`\n if (!ret) {\n /** @type {import('jsdoc-type-pratt-parser').NameResult} */ (\n node\n ).value = typeNodeName;\n }\n};\n\n/**\n * @param {boolean} [upperCase]\n * @returns {string}\n */\nconst getMessage = (upperCase) => {\n return 'Use object shorthand or index signatures instead of ' +\n '`' + (upperCase ? 'O' : 'o') + 'bject`, e.g., `{[key: string]: string}`';\n};\n\n/**\n * @type {{\n * message: string,\n * replacement: false\n * }}\n */\nconst info = {\n message: getMessage(),\n replacement: false,\n};\n\n/**\n * @type {{\n * message: string,\n * replacement: false\n * }}\n */\nconst infoUC = {\n message: getMessage(true),\n replacement: false,\n};\n\n/**\n * @param {{\n * checkNativeTypes?: import('./rules/checkTypes.js').CheckNativeTypes|null\n * overrideSettings?: import('./iterateJsdoc.js').Settings['preferredTypes']|null,\n * description?: string,\n * schema?: import('eslint').Rule.RuleMetaData['schema'],\n * typeName?: string,\n * url?: string,\n * }} cfg\n * @returns {import('eslint').Rule.RuleModule}\n */\nexport const buildRejectOrPreferRuleDefinition = ({\n checkNativeTypes = null,\n typeName,\n description = typeName ?? 'Reports types deemed invalid (customizable and with defaults, for preventing and/or recommending replacements).',\n overrideSettings = null,\n schema = [],\n url = 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-types.md#repos-sticky-header',\n}) => {\n return iterateJsdoc(\n ({\n context,\n jsdocNode,\n report,\n settings,\n sourceCode,\n utils,\n }) => {\n const jsdocTagsWithPossibleType = utils.filterTags((tag) => {\n return Boolean(utils.tagMightHaveTypePosition(tag.tag));\n });\n\n const\n /**\n * @type {{\n * preferredTypes: import('./iterateJsdoc.js').PreferredTypes,\n * structuredTags: import('./iterateJsdoc.js').StructuredTags,\n * mode: import('./jsdocUtils.js').ParserMode\n * }}\n */\n {\n mode,\n preferredTypes: preferredTypesOriginal,\n structuredTags,\n } = overrideSettings ? {\n mode: settings.mode,\n preferredTypes: overrideSettings,\n structuredTags: {},\n } : settings;\n\n const injectObjectPreferredTypes = !overrideSettings &&\n !('Object' in preferredTypesOriginal ||\n 'object' in preferredTypesOriginal ||\n 'object.<>' in preferredTypesOriginal ||\n 'Object.<>' in preferredTypesOriginal ||\n 'object<>' in preferredTypesOriginal);\n\n /** @type {import('./iterateJsdoc.js').PreferredTypes} */\n const typeToInject = mode === 'typescript' ?\n {\n Object: 'object',\n 'object.<>': info,\n 'Object.<>': infoUC,\n 'object<>': info,\n 'Object<>': infoUC,\n } :\n {\n Object: 'object',\n 'object.<>': 'Object<>',\n 'Object.<>': 'Object<>',\n 'object<>': 'Object<>',\n };\n\n /** @type {import('./iterateJsdoc.js').PreferredTypes} */\n const preferredTypes = {\n ...injectObjectPreferredTypes ?\n typeToInject :\n {},\n ...preferredTypesOriginal,\n };\n\n const\n /**\n * @type {{\n * noDefaults: boolean,\n * unifyParentAndChildTypeChecks: boolean,\n * exemptTagContexts: ({\n * tag: string,\n * types: true|string[]\n * })[]\n * }}\n */ {\n exemptTagContexts = [],\n noDefaults,\n unifyParentAndChildTypeChecks,\n } = context.options[0] || {};\n\n /**\n * Gets information about the preferred type: whether there is a matching\n * preferred type, what the type is, and whether it is a match to a generic.\n * @param {string} _type Not currently in use\n * @param {string} typeNodeName\n * @param {import('jsdoc-type-pratt-parser').NonRootResult|undefined} parentNode\n * @param {string|undefined} property\n * @returns {[hasMatchingPreferredType: boolean, typeName: string, isGenericMatch: boolean]}\n */\n const getPreferredTypeInfo = (_type, typeNodeName, parentNode, property) => {\n let hasMatchingPreferredType = false;\n let isGenericMatch = false;\n let typName = typeNodeName;\n\n const isNameOfGeneric = parentNode !== undefined && parentNode.type === 'JsdocTypeGeneric' && property === 'left';\n\n const brackets = /** @type {import('jsdoc-type-pratt-parser').GenericResult} */ (\n parentNode\n )?.meta?.brackets;\n const dot = /** @type {import('jsdoc-type-pratt-parser').GenericResult} */ (\n parentNode\n )?.meta?.dot;\n\n if (brackets === 'angle') {\n const checkPostFixes = dot ? [\n '.', '.<>',\n ] : [\n '<>',\n ];\n isGenericMatch = checkPostFixes.some((checkPostFix) => {\n const preferredType = preferredTypes?.[typeNodeName + checkPostFix];\n\n // Does `unifyParentAndChildTypeChecks` need to be checked here?\n if (\n (unifyParentAndChildTypeChecks || isNameOfGeneric ||\n /* c8 ignore next 2 -- If checking `unifyParentAndChildTypeChecks` */\n (typeof preferredType === 'object' &&\n preferredType?.unifyParentAndChildTypeChecks)\n ) &&\n preferredType !== undefined\n ) {\n typName += checkPostFix;\n\n return true;\n }\n\n return false;\n });\n }\n\n if (\n !isGenericMatch && property &&\n /** @type {import('jsdoc-type-pratt-parser').NonRootResult} */ (\n parentNode\n ).type === 'JsdocTypeGeneric'\n ) {\n const checkPostFixes = dot ? [\n '.', '.<>',\n ] : [\n brackets === 'angle' ? '<>' : '[]',\n ];\n\n isGenericMatch = checkPostFixes.some((checkPostFix) => {\n const preferredType = preferredTypes?.[checkPostFix];\n if (\n // Does `unifyParentAndChildTypeChecks` need to be checked here?\n (unifyParentAndChildTypeChecks || isNameOfGeneric ||\n /* c8 ignore next 2 -- If checking `unifyParentAndChildTypeChecks` */\n (typeof preferredType === 'object' &&\n preferredType?.unifyParentAndChildTypeChecks)) &&\n preferredType !== undefined\n ) {\n typName = checkPostFix;\n\n return true;\n }\n\n return false;\n });\n }\n\n const prefType = preferredTypes?.[typeNodeName];\n const directNameMatch = prefType !== undefined &&\n !Object.values(preferredTypes).includes(typeNodeName);\n const specificUnify = typeof prefType === 'object' &&\n prefType?.unifyParentAndChildTypeChecks;\n const unifiedSyntaxParentMatch = property && directNameMatch && (unifyParentAndChildTypeChecks || specificUnify);\n isGenericMatch = isGenericMatch || Boolean(unifiedSyntaxParentMatch);\n\n hasMatchingPreferredType = isGenericMatch ||\n directNameMatch && !property;\n\n return [\n hasMatchingPreferredType, typName, isGenericMatch,\n ];\n };\n\n /**\n * Collect invalid type info.\n * @param {string} type\n * @param {string} value\n * @param {string} tagName\n * @param {string} nameInTag\n * @param {number} idx\n * @param {string|undefined} property\n * @param {import('jsdoc-type-pratt-parser').NonRootResult} node\n * @param {import('jsdoc-type-pratt-parser').NonRootResult|undefined} parentNode\n * @param {(string|false|undefined)[][]} invalidTypes\n * @returns {void}\n */\n const getInvalidTypes = (type, value, tagName, nameInTag, idx, property, node, parentNode, invalidTypes) => {\n let typeNodeName = type === 'JsdocTypeAny' ? '*' : value;\n\n const [\n hasMatchingPreferredType,\n typName,\n isGenericMatch,\n ] = getPreferredTypeInfo(type, typeNodeName, parentNode, property);\n\n let preferred;\n let types;\n if (hasMatchingPreferredType) {\n const preferredSetting = preferredTypes[typName];\n typeNodeName = typName === '[]' ? typName : typeNodeName;\n\n if (!preferredSetting) {\n invalidTypes.push([\n typeNodeName,\n ]);\n } else if (typeof preferredSetting === 'string') {\n preferred = preferredSetting;\n invalidTypes.push([\n typeNodeName, preferred,\n ]);\n } else if (preferredSetting && typeof preferredSetting === 'object') {\n const nextItem = preferredSetting.skipRootChecking && jsdocTagsWithPossibleType[idx + 1];\n\n if (!nextItem || !nextItem.name.startsWith(`${nameInTag}.`)) {\n preferred = preferredSetting.replacement;\n invalidTypes.push([\n typeNodeName,\n preferred,\n preferredSetting.message,\n ]);\n }\n } else {\n utils.reportSettings(\n 'Invalid `settings.jsdoc.preferredTypes`. Values must be falsy, a string, or an object.',\n );\n\n return;\n }\n } else if (Object.entries(structuredTags).some(([\n tag,\n {\n type: typs,\n },\n ]) => {\n types = typs;\n\n return tag === tagName &&\n Array.isArray(types) &&\n !types.includes(typeNodeName);\n })) {\n invalidTypes.push([\n typeNodeName, types,\n ]);\n } else if (checkNativeTypes && !noDefaults && type === 'JsdocTypeName') {\n preferred = checkNativeTypes(\n preferredTypes, typeNodeName, preferred, parentNode, invalidTypes,\n );\n }\n\n // For fixer\n if (preferred) {\n adjustNames(type, preferred, isGenericMatch, typeNodeName, node, parentNode);\n }\n };\n\n for (const [\n idx,\n jsdocTag,\n ] of jsdocTagsWithPossibleType.entries()) {\n /** @type {(string|false|undefined)[][]} */\n const invalidTypes = [];\n let typeAst;\n\n try {\n typeAst = mode === 'permissive' ? tryParse(jsdocTag.type) : parse(jsdocTag.type, mode);\n } catch {\n continue;\n }\n\n const {\n name: nameInTag,\n tag: tagName,\n } = jsdocTag;\n\n traverse(typeAst, (node, parentNode, property) => {\n const {\n type,\n value,\n } =\n /**\n * @type {import('jsdoc-type-pratt-parser').NameResult}\n */ (node);\n if (![\n 'JsdocTypeAny', 'JsdocTypeName',\n ].includes(type)) {\n return;\n }\n\n getInvalidTypes(type, value, tagName, nameInTag, idx, property, node, parentNode, invalidTypes);\n });\n\n if (invalidTypes.length) {\n const fixedType = stringify(typeAst);\n\n /**\n * @type {import('eslint').Rule.ReportFixer}\n */\n const fix = (fixer) => {\n return fixer.replaceText(\n jsdocNode,\n sourceCode.getText(jsdocNode).replace(\n `{${jsdocTag.type}}`,\n `{${fixedType}}`,\n ),\n );\n };\n\n for (const [\n badType,\n preferredType = '',\n msg,\n ] of invalidTypes) {\n const tagValue = jsdocTag.name ? ` \"${jsdocTag.name}\"` : '';\n if (exemptTagContexts.some(({\n tag,\n types,\n }) => {\n return tag === tagName &&\n (types === true || types.includes(jsdocTag.type));\n })) {\n continue;\n }\n\n report(\n msg ||\n `Invalid JSDoc @${tagName}${tagValue} type \"${badType}\"` +\n (preferredType ? '; ' : '.') +\n (preferredType ? `prefer: ${JSON.stringify(preferredType)}.` : ''),\n preferredType ? fix : null,\n jsdocTag,\n msg ? {\n tagName,\n tagValue,\n } : undefined,\n );\n }\n }\n }\n },\n {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description,\n url,\n },\n ...(!overrideSettings || (Object.values(overrideSettings).some((os) => {\n return os && typeof os === 'object' ?\n /* c8 ignore next -- Ok */\n os.replacement :\n typeof os === 'string';\n })) ?\n {\n fixable: 'code',\n } :\n {}\n ),\n schema,\n type: 'suggestion',\n },\n },\n );\n};\n"],"mappings":";;;;;;AAAA;AACA;AAK8B;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,cAAc,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,KAAK;EACvF,IAAI,GAAG,GAAG,SAAS;EACnB,IAAI,cAAc,EAAE;IAClB,MAAM,UAAU,GAAG,8DACjB,UAAU,CACV,IAAI;IACN,IAAI,SAAS,KAAK,IAAI,EAAE;MACtB,UAAU,CAAC,QAAQ,GAAG,QAAQ;MAC9B,UAAU,CAAC,GAAG,GAAG,KAAK;MACtB,GAAG,GAAG,OAAO;IACf,CAAC,MAAM;MACL,MAAM,aAAa,GAAG,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC;MACpD,IAAI,aAAa,EAAE;QACjB,UAAU,CAAC,QAAQ,GAAG,OAAO;QAC7B,UAAU,CAAC,GAAG,GAAG,IAAI;QACrB,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;MACpD,CAAC,MAAM;QACL,MAAM,UAAU,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC;QAC3C,IAAI,UAAU,EAAE;UACd,UAAU,CAAC,QAAQ,GAAG,OAAO;UAC7B,UAAU,CAAC,GAAG,GAAG,KAAK;UACtB,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9B,CAAC,MAAM,IACL,UAAU,EAAE,QAAQ,KAAK,QAAQ,KAChC,YAAY,KAAK,IAAI,IAAI,YAAY,KAAK,OAAO,CAAC,EACnD;UACA,UAAU,CAAC,QAAQ,GAAG,OAAO;UAC7B,UAAU,CAAC,GAAG,GAAG,KAAK;QACxB;MACF;IACF;EACF,CAAC,MAAM,IAAI,IAAI,KAAK,cAAc,EAAE;IAClC,IAAI,CAAC,IAAI,GAAG,eAAe;EAC7B;;EAEA;EACE,IAAI,CACJ,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,uBAAuB,EAAE,EAAE,CAAC;;EAElD;EACA,IAAI,CAAC,GAAG,EAAE;IACR,2DACE,IAAI,CACJ,KAAK,GAAG,YAAY;EACxB;AACF,CAAC;;AAED;AACA;AACA;AACA;AACA,MAAM,UAAU,GAAI,SAAS,IAAK;EAChC,OAAO,sDAAsD,GAC7D,GAAG,IAAI,SAAS,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,yCAAyC;AAC3E,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,IAAI,GAAG;EACX,OAAO,EAAE,UAAU,CAAC,CAAC;EACrB,WAAW,EAAE;AACf,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,MAAM,GAAG;EACb,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC;EACzB,WAAW,EAAE;AACf,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,iCAAiC,GAAG,CAAC;EAChD,gBAAgB,GAAG,IAAI;EACvB,QAAQ;EACR,WAAW,GAAG,QAAQ,IAAI,iHAAiH;EAC3I,gBAAgB,GAAG,IAAI;EACvB,MAAM,GAAG,EAAE;EACX,GAAG,GAAG;AACR,CAAC,KAAK;EACJ,OAAO,IAAAA,qBAAY,EACjB,CAAC;IACC,OAAO;IACP,SAAS;IACT,MAAM;IACN,QAAQ;IACR,UAAU;IACV;EACF,CAAC,KAAK;IACJ,MAAM,yBAAyB,GAAG,KAAK,CAAC,UAAU,CAAE,GAAG,IAAK;MAC1D,OAAO,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACzD,CAAC,CAAC;IAEF;IACE;AACR;AACA;AACA;AACA;AACA;AACA;IACQ;MACE,IAAI;MACJ,cAAc,EAAE,sBAAsB;MACtC;IACF,CAAC,GAAG,gBAAgB,GAAG;MACrB,IAAI,EAAE,QAAQ,CAAC,IAAI;MACnB,cAAc,EAAE,gBAAgB;MAChC,cAAc,EAAE,CAAC;IACnB,CAAC,GAAG,QAAQ;IAEd,MAAM,0BAA0B,GAAG,CAAC,gBAAgB,IAClD,EAAE,QAAQ,IAAI,sBAAsB,IACpC,QAAQ,IAAI,sBAAsB,IAClC,WAAW,IAAI,sBAAsB,IACrC,WAAW,IAAI,sBAAsB,IACrC,UAAU,IAAI,sBAAsB,CAAC;;IAEvC;IACA,MAAM,YAAY,GAAG,IAAI,KAAK,YAAY,GACxC;MACE,MAAM,EAAE,QAAQ;MAChB,WAAW,EAAE,IAAI;MACjB,WAAW,EAAE,MAAM;MACnB,UAAU,EAAE,IAAI;MAChB,UAAU,EAAE;IACd,CAAC,GACD;MACE,MAAM,EAAE,QAAQ;MAChB,WAAW,EAAE,UAAU;MACvB,WAAW,EAAE,UAAU;MACvB,UAAU,EAAE;IACd,CAAC;;IAEH;IACA,MAAM,cAAc,GAAG;MACrB,IAAG,0BAA0B,GAC3B,YAAY,GACZ,CAAC,CAAC;MACJ,GAAG;IACL,CAAC;IAED;IACE;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IAAY;MACF,iBAAiB,GAAG,EAAE;MACtB,UAAU;MACV;IACF,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;;IAE9B;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACM,MAAM,oBAAoB,GAAG,CAAC,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,KAAK;MAC1E,IAAI,wBAAwB,GAAG,KAAK;MACpC,IAAI,cAAc,GAAG,KAAK;MAC1B,IAAI,OAAO,GAAG,YAAY;MAE1B,MAAM,eAAe,GAAG,UAAU,KAAK,SAAS,IAAI,UAAU,CAAC,IAAI,KAAK,kBAAkB,IAAI,QAAQ,KAAK,MAAM;MAEjH,MAAM,QAAQ,GAAG,8DACf,UAAU,EACT,IAAI,EAAE,QAAQ;MACjB,MAAM,GAAG,GAAG,8DACV,UAAU,EACT,IAAI,EAAE,GAAG;MAEZ,IAAI,QAAQ,KAAK,OAAO,EAAE;QACxB,MAAM,cAAc,GAAG,GAAG,GAAG,CAC3B,GAAG,EAAE,KAAK,CACX,GAAG,CACF,IAAI,CACL;QACD,cAAc,GAAG,cAAc,CAAC,IAAI,CAAE,YAAY,IAAK;UACrD,MAAM,aAAa,GAAG,cAAc,GAAG,YAAY,GAAG,YAAY,CAAC;;UAEnE;UACA,IACE,CAAC,6BAA6B,IAAI,eAAe,KAC/C;UACC,OAAO,aAAa,KAAK,QAAQ,IAChC,aAAa,EAAE,6BAA6B,CAAC,KAEjD,aAAa,KAAK,SAAS,EAC3B;YACA,OAAO,IAAI,YAAY;YAEvB,OAAO,IAAI;UACb;UAEA,OAAO,KAAK;QACd,CAAC,CAAC;MACJ;MAEA,IACE,CAAC,cAAc,IAAI,QAAQ,IAC3B,8DACE,UAAU,CACV,IAAI,KAAK,kBAAkB,EAC7B;QACA,MAAM,cAAc,GAAG,GAAG,GAAG,CAC3B,GAAG,EAAE,KAAK,CACX,GAAG,CACF,QAAQ,KAAK,OAAO,GAAG,IAAI,GAAG,IAAI,CACnC;QAED,cAAc,GAAG,cAAc,CAAC,IAAI,CAAE,YAAY,IAAK;UACrD,MAAM,aAAa,GAAG,cAAc,GAAG,YAAY,CAAC;UACpD;UACE;UACA,CAAC,6BAA6B,IAAI,eAAe,KAC/C;UACC,OAAO,aAAa,KAAK,QAAQ,IAClC,aAAa,EAAE,6BAA6B,CAAC,KAC7C,aAAa,KAAK,SAAS,EAC7B;YACA,OAAO,GAAG,YAAY;YAEtB,OAAO,IAAI;UACb;UAEA,OAAO,KAAK;QACd,CAAC,CAAC;MACJ;MAEA,MAAM,QAAQ,GAAG,cAAc,GAAG,YAAY,CAAC;MAC/C,MAAM,eAAe,GAAG,QAAQ,KAAK,SAAS,IAC5C,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC;MACvD,MAAM,aAAa,GAAG,OAAO,QAAQ,KAAK,QAAQ,IAChD,QAAQ,EAAE,6BAA6B;MACzC,MAAM,wBAAwB,GAAG,QAAQ,IAAI,eAAe,KAAK,6BAA6B,IAAI,aAAa,CAAC;MAChH,cAAc,GAAG,cAAc,IAAI,OAAO,CAAC,wBAAwB,CAAC;MAEpE,wBAAwB,GAAG,cAAc,IACvC,eAAe,IAAI,CAAC,QAAQ;MAE9B,OAAO,CACL,wBAAwB,EAAE,OAAO,EAAE,cAAc,CAClD;IACH,CAAC;;IAED;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACM,MAAM,eAAe,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,KAAK;MAC1G,IAAI,YAAY,GAAG,IAAI,KAAK,cAAc,GAAG,GAAG,GAAG,KAAK;MAExD,MAAM,CACJ,wBAAwB,EACxB,OAAO,EACP,cAAc,CACf,GAAG,oBAAoB,CAAC,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,CAAC;MAElE,IAAI,SAAS;MACb,IAAI,KAAK;MACT,IAAI,wBAAwB,EAAE;QAC5B,MAAM,gBAAgB,GAAG,cAAc,CAAC,OAAO,CAAC;QAChD,YAAY,GAAG,OAAO,KAAK,IAAI,GAAG,OAAO,GAAG,YAAY;QAExD,IAAI,CAAC,gBAAgB,EAAE;UACrB,YAAY,CAAC,IAAI,CAAC,CAChB,YAAY,CACb,CAAC;QACJ,CAAC,MAAM,IAAI,OAAO,gBAAgB,KAAK,QAAQ,EAAE;UAC/C,SAAS,GAAG,gBAAgB;UAC5B,YAAY,CAAC,IAAI,CAAC,CAChB,YAAY,EAAE,SAAS,CACxB,CAAC;QACJ,CAAC,MAAM,IAAI,gBAAgB,IAAI,OAAO,gBAAgB,KAAK,QAAQ,EAAE;UACnE,MAAM,QAAQ,GAAG,gBAAgB,CAAC,gBAAgB,IAAI,yBAAyB,CAAC,GAAG,GAAG,CAAC,CAAC;UAExF,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,SAAS,GAAG,CAAC,EAAE;YAC3D,SAAS,GAAG,gBAAgB,CAAC,WAAW;YACxC,YAAY,CAAC,IAAI,CAAC,CAChB,YAAY,EACZ,SAAS,EACT,gBAAgB,CAAC,OAAO,CACzB,CAAC;UACJ;QACF,CAAC,MAAM;UACL,KAAK,CAAC,cAAc,CAClB,wFACF,CAAC;UAED;QACF;MACF,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,CAC9C,GAAG,EACH;QACE,IAAI,EAAE;MACR,CAAC,CACF,KAAK;QACJ,KAAK,GAAG,IAAI;QAEZ,OAAO,GAAG,KAAK,OAAO,IACpB,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IACpB,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC;MACjC,CAAC,CAAC,EAAE;QACF,YAAY,CAAC,IAAI,CAAC,CAChB,YAAY,EAAE,KAAK,CACpB,CAAC;MACJ,CAAC,MAAM,IAAI,gBAAgB,IAAI,CAAC,UAAU,IAAI,IAAI,KAAK,eAAe,EAAE;QACtE,SAAS,GAAG,gBAAgB,CAC1B,cAAc,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,YACvD,CAAC;MACH;;MAEA;MACA,IAAI,SAAS,EAAE;QACb,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,cAAc,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,CAAC;MAC9E;IACF,CAAC;IAED,KAAK,MAAM,CACT,GAAG,EACH,QAAQ,CACT,IAAI,yBAAyB,CAAC,OAAO,CAAC,CAAC,EAAE;MACxC;MACA,MAAM,YAAY,GAAG,EAAE;MACvB,IAAI,OAAO;MAEX,IAAI;QACF,OAAO,GAAG,IAAI,KAAK,YAAY,GAAG,IAAAC,cAAA,QAAQ,EAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAAC,cAAA,KAAK,EAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;MACxF,CAAC,CAAC,MAAM;QACN;MACF;MAEA,MAAM;QACJ,IAAI,EAAE,SAAS;QACf,GAAG,EAAE;MACP,CAAC,GAAG,QAAQ;MAEZ,IAAAC,cAAA,QAAQ,EAAC,OAAO,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,KAAK;QAChD,MAAM;UACJ,IAAI;UACJ;QACF,CAAC;QACC;AACZ;AACA;QAAiB,IAAK;QACZ,IAAI,CAAC,CACH,cAAc,EAAE,eAAe,CAChC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;UAChB;QACF;QAEA,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,CAAC;MACjG,CAAC,CAAC;MAEF,IAAI,YAAY,CAAC,MAAM,EAAE;QACvB,MAAM,SAAS,GAAG,IAAAC,cAAA,SAAS,EAAC,OAAO,CAAC;;QAEpC;AACV;AACA;QACU,MAAM,GAAG,GAAI,KAAK,IAAK;UACrB,OAAO,KAAK,CAAC,WAAW,CACtB,SAAS,EACT,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,CACnC,IAAI,QAAQ,CAAC,IAAI,GAAG,EACpB,IAAI,SAAS,GACf,CACF,CAAC;QACH,CAAC;QAED,KAAK,MAAM,CACT,OAAO,EACP,aAAa,GAAG,EAAE,EAClB,GAAG,CACJ,IAAI,YAAY,EAAE;UACjB,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,GAAG,KAAK,QAAQ,CAAC,IAAI,GAAG,GAAG,EAAE;UAC3D,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAC1B,GAAG;YACH;UACF,CAAC,KAAK;YACJ,OAAO,GAAG,KAAK,OAAO,KACnB,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;UACrD,CAAC,CAAC,EAAE;YACF;UACF;UAEA,MAAM,CACJ,GAAG,IACD,kBAAkB,OAAO,GAAG,QAAQ,UAAU,OAAO,GAAG,IACvD,aAAa,GAAG,IAAI,GAAG,GAAG,CAAC,IAC3B,aAAa,GAAG,WAAW,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,GAAG,EAAE,CAAC,EACpE,aAAa,GAAG,GAAG,GAAG,IAAI,EAC1B,QAAQ,EACR,GAAG,GAAG;YACJ,OAAO;YACP;UACF,CAAC,GAAG,SACN,CAAC;QACH;MACF;IACF;EACF,CAAC,EACD;IACE,gBAAgB,EAAE,IAAI;IACtB,IAAI,EAAE;MACJ,IAAI,EAAE;QACJ,WAAW;QACX;MACF,CAAC;MACD,IAAI,CAAC,gBAAgB,IAAK,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAE,EAAE,IAAK;QACrE,OAAO,EAAE,IAAI,OAAO,EAAE,KAAK,QAAQ,GACjC;QACA,EAAE,CAAC,WAAW,GACd,OAAO,EAAE,KAAK,QAAQ;MAC1B,CAAC,CAAE,GACD;QACE,OAAO,EAAE;MACX,CAAC,GACD,CAAC,CAAC,CACH;MACD,MAAM;MACN,IAAI,EAAE;IACR;EACF,CACF,CAAC;AACH,CAAC;AAAC","ignoreList":[]}
@@ -1,3 +1,9 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
1
7
  const defaultTagOrder = [{
2
8
  tags: [
3
9
  // Brief descriptions
@@ -35,5 +41,6 @@ const defaultTagOrder = [{
35
41
  // Non-Closure metadata
36
42
  'ignore', 'author', 'version', 'variation', 'since', 'deprecated', 'todo']
37
43
  }];
38
- export default defaultTagOrder;
44
+ var _default = exports.default = defaultTagOrder;
45
+ module.exports = exports.default;
39
46
  //# sourceMappingURL=defaultTagOrder.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"defaultTagOrder.cjs","names":[],"sources":["../src/defaultTagOrder.js"],"sourcesContent":["const defaultTagOrder = [\n {\n tags: [\n // Brief descriptions\n 'summary',\n 'typeSummary',\n\n // Module/file-level\n 'module',\n 'exports',\n 'file',\n 'fileoverview',\n 'overview',\n 'import',\n\n // Identifying (name, type)\n 'template',\n 'typedef',\n 'interface',\n 'record',\n 'name',\n 'kind',\n 'type',\n 'alias',\n 'external',\n 'host',\n 'callback',\n 'func',\n 'function',\n 'method',\n 'class',\n 'constructor',\n\n // Relationships\n 'modifies',\n 'mixes',\n 'mixin',\n 'mixinClass',\n 'mixinFunction',\n 'namespace',\n 'borrows',\n 'constructs',\n 'lends',\n 'implements',\n 'requires',\n\n // Long descriptions\n 'desc',\n 'description',\n 'classdesc',\n 'tutorial',\n 'copyright',\n 'license',\n\n // Simple annotations\n\n // TypeScript\n 'internal',\n 'overload',\n\n 'const',\n 'constant',\n 'final',\n 'global',\n 'readonly',\n 'abstract',\n 'virtual',\n 'var',\n 'member',\n 'memberof',\n 'memberof!',\n 'inner',\n 'instance',\n 'inheritdoc',\n 'inheritDoc',\n 'override',\n 'hideconstructor',\n\n // Core function/object info\n 'param',\n 'arg',\n 'argument',\n 'prop',\n 'property',\n 'return',\n 'returns',\n\n // Important behavior details\n 'async',\n 'generator',\n 'default',\n 'defaultvalue',\n 'enum',\n 'augments',\n 'extends',\n 'throws',\n 'exception',\n 'yield',\n 'yields',\n 'event',\n 'fires',\n 'emits',\n 'listens',\n 'this',\n\n // TypeScript\n 'satisfies',\n\n // Access\n 'static',\n 'private',\n 'protected',\n 'public',\n 'access',\n 'package',\n\n '-other',\n\n // Supplementary descriptions\n 'see',\n 'example',\n\n // METADATA\n\n // Other Closure (undocumented) metadata\n 'closurePrimitive',\n 'customElement',\n 'expose',\n 'hidden',\n 'idGenerator',\n 'meaning',\n 'ngInject',\n 'owner',\n 'wizaction',\n\n // Other Closure (documented) metadata\n 'define',\n 'dict',\n 'export',\n 'externs',\n 'implicitCast',\n 'noalias',\n 'nocollapse',\n 'nocompile',\n 'noinline',\n 'nosideeffects',\n 'polymer',\n 'polymerBehavior',\n 'preserve',\n 'struct',\n 'suppress',\n 'unrestricted',\n\n // @homer0/prettier-plugin-jsdoc metadata\n 'category',\n\n // Non-Closure metadata\n 'ignore',\n 'author',\n 'version',\n 'variation',\n 'since',\n 'deprecated',\n 'todo',\n ],\n },\n];\n\nexport default defaultTagOrder;\n"],"mappings":"AAAA,MAAM,eAAe,GAAG,CACtB;EACE,IAAI,EAAE;EACJ;EACA,SAAS,EACT,aAAa;EAEb;EACA,QAAQ,EACR,SAAS,EACT,MAAM,EACN,cAAc,EACd,UAAU,EACV,QAAQ;EAER;EACA,UAAU,EACV,SAAS,EACT,WAAW,EACX,QAAQ,EACR,MAAM,EACN,MAAM,EACN,MAAM,EACN,OAAO,EACP,UAAU,EACV,MAAM,EACN,UAAU,EACV,MAAM,EACN,UAAU,EACV,QAAQ,EACR,OAAO,EACP,aAAa;EAEb;EACA,UAAU,EACV,OAAO,EACP,OAAO,EACP,YAAY,EACZ,eAAe,EACf,WAAW,EACX,SAAS,EACT,YAAY,EACZ,OAAO,EACP,YAAY,EACZ,UAAU;EAEV;EACA,MAAM,EACN,aAAa,EACb,WAAW,EACX,UAAU,EACV,WAAW,EACX,SAAS;EAET;;EAEA;EACA,UAAU,EACV,UAAU,EAEV,OAAO,EACP,UAAU,EACV,OAAO,EACP,QAAQ,EACR,UAAU,EACV,UAAU,EACV,SAAS,EACT,KAAK,EACL,QAAQ,EACR,UAAU,EACV,WAAW,EACX,OAAO,EACP,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,iBAAiB;EAEjB;EACA,OAAO,EACP,KAAK,EACL,UAAU,EACV,MAAM,EACN,UAAU,EACV,QAAQ,EACR,SAAS;EAET;EACA,OAAO,EACP,WAAW,EACX,SAAS,EACT,cAAc,EACd,MAAM,EACN,UAAU,EACV,SAAS,EACT,QAAQ,EACR,WAAW,EACX,OAAO,EACP,QAAQ,EACR,OAAO,EACP,OAAO,EACP,OAAO,EACP,SAAS,EACT,MAAM;EAEN;EACA,WAAW;EAEX;EACA,QAAQ,EACR,SAAS,EACT,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,SAAS,EAET,QAAQ;EAER;EACA,KAAK,EACL,SAAS;EAET;;EAEA;EACA,kBAAkB,EAClB,eAAe,EACf,QAAQ,EACR,QAAQ,EACR,aAAa,EACb,SAAS,EACT,UAAU,EACV,OAAO,EACP,WAAW;EAEX;EACA,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,SAAS,EACT,cAAc,EACd,SAAS,EACT,YAAY,EACZ,WAAW,EACX,UAAU,EACV,eAAe,EACf,SAAS,EACT,iBAAiB,EACjB,UAAU,EACV,QAAQ,EACR,UAAU,EACV,cAAc;EAEd;EACA,UAAU;EAEV;EACA,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,WAAW,EACX,OAAO,EACP,YAAY,EACZ,MAAM;AAEV,CAAC,CACF;AAED,eAAe,eAAe","ignoreList":[]}
1
+ {"version":3,"file":"defaultTagOrder.cjs","names":[],"sources":["../src/defaultTagOrder.js"],"sourcesContent":["const defaultTagOrder = [\n {\n tags: [\n // Brief descriptions\n 'summary',\n 'typeSummary',\n\n // Module/file-level\n 'module',\n 'exports',\n 'file',\n 'fileoverview',\n 'overview',\n 'import',\n\n // Identifying (name, type)\n 'template',\n 'typedef',\n 'interface',\n 'record',\n 'name',\n 'kind',\n 'type',\n 'alias',\n 'external',\n 'host',\n 'callback',\n 'func',\n 'function',\n 'method',\n 'class',\n 'constructor',\n\n // Relationships\n 'modifies',\n 'mixes',\n 'mixin',\n 'mixinClass',\n 'mixinFunction',\n 'namespace',\n 'borrows',\n 'constructs',\n 'lends',\n 'implements',\n 'requires',\n\n // Long descriptions\n 'desc',\n 'description',\n 'classdesc',\n 'tutorial',\n 'copyright',\n 'license',\n\n // Simple annotations\n\n // TypeScript\n 'internal',\n 'overload',\n\n 'const',\n 'constant',\n 'final',\n 'global',\n 'readonly',\n 'abstract',\n 'virtual',\n 'var',\n 'member',\n 'memberof',\n 'memberof!',\n 'inner',\n 'instance',\n 'inheritdoc',\n 'inheritDoc',\n 'override',\n 'hideconstructor',\n\n // Core function/object info\n 'param',\n 'arg',\n 'argument',\n 'prop',\n 'property',\n 'return',\n 'returns',\n\n // Important behavior details\n 'async',\n 'generator',\n 'default',\n 'defaultvalue',\n 'enum',\n 'augments',\n 'extends',\n 'throws',\n 'exception',\n 'yield',\n 'yields',\n 'event',\n 'fires',\n 'emits',\n 'listens',\n 'this',\n\n // TypeScript\n 'satisfies',\n\n // Access\n 'static',\n 'private',\n 'protected',\n 'public',\n 'access',\n 'package',\n\n '-other',\n\n // Supplementary descriptions\n 'see',\n 'example',\n\n // METADATA\n\n // Other Closure (undocumented) metadata\n 'closurePrimitive',\n 'customElement',\n 'expose',\n 'hidden',\n 'idGenerator',\n 'meaning',\n 'ngInject',\n 'owner',\n 'wizaction',\n\n // Other Closure (documented) metadata\n 'define',\n 'dict',\n 'export',\n 'externs',\n 'implicitCast',\n 'noalias',\n 'nocollapse',\n 'nocompile',\n 'noinline',\n 'nosideeffects',\n 'polymer',\n 'polymerBehavior',\n 'preserve',\n 'struct',\n 'suppress',\n 'unrestricted',\n\n // @homer0/prettier-plugin-jsdoc metadata\n 'category',\n\n // Non-Closure metadata\n 'ignore',\n 'author',\n 'version',\n 'variation',\n 'since',\n 'deprecated',\n 'todo',\n ],\n },\n];\n\nexport default defaultTagOrder;\n"],"mappings":";;;;;;AAAA,MAAM,eAAe,GAAG,CACtB;EACE,IAAI,EAAE;EACJ;EACA,SAAS,EACT,aAAa;EAEb;EACA,QAAQ,EACR,SAAS,EACT,MAAM,EACN,cAAc,EACd,UAAU,EACV,QAAQ;EAER;EACA,UAAU,EACV,SAAS,EACT,WAAW,EACX,QAAQ,EACR,MAAM,EACN,MAAM,EACN,MAAM,EACN,OAAO,EACP,UAAU,EACV,MAAM,EACN,UAAU,EACV,MAAM,EACN,UAAU,EACV,QAAQ,EACR,OAAO,EACP,aAAa;EAEb;EACA,UAAU,EACV,OAAO,EACP,OAAO,EACP,YAAY,EACZ,eAAe,EACf,WAAW,EACX,SAAS,EACT,YAAY,EACZ,OAAO,EACP,YAAY,EACZ,UAAU;EAEV;EACA,MAAM,EACN,aAAa,EACb,WAAW,EACX,UAAU,EACV,WAAW,EACX,SAAS;EAET;;EAEA;EACA,UAAU,EACV,UAAU,EAEV,OAAO,EACP,UAAU,EACV,OAAO,EACP,QAAQ,EACR,UAAU,EACV,UAAU,EACV,SAAS,EACT,KAAK,EACL,QAAQ,EACR,UAAU,EACV,WAAW,EACX,OAAO,EACP,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,iBAAiB;EAEjB;EACA,OAAO,EACP,KAAK,EACL,UAAU,EACV,MAAM,EACN,UAAU,EACV,QAAQ,EACR,SAAS;EAET;EACA,OAAO,EACP,WAAW,EACX,SAAS,EACT,cAAc,EACd,MAAM,EACN,UAAU,EACV,SAAS,EACT,QAAQ,EACR,WAAW,EACX,OAAO,EACP,QAAQ,EACR,OAAO,EACP,OAAO,EACP,OAAO,EACP,SAAS,EACT,MAAM;EAEN;EACA,WAAW;EAEX;EACA,QAAQ,EACR,SAAS,EACT,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,SAAS,EAET,QAAQ;EAER;EACA,KAAK,EACL,SAAS;EAET;;EAEA;EACA,kBAAkB,EAClB,eAAe,EACf,QAAQ,EACR,QAAQ,EACR,aAAa,EACb,SAAS,EACT,UAAU,EACV,OAAO,EACP,WAAW;EAEX;EACA,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,SAAS,EACT,cAAc,EACd,SAAS,EACT,YAAY,EACZ,WAAW,EACX,UAAU,EACV,eAAe,EACf,SAAS,EACT,iBAAiB,EACjB,UAAU,EACV,QAAQ,EACR,UAAU,EACV,cAAc;EAEd;EACA,UAAU;EAEV;EACA,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,WAAW,EACX,OAAO,EACP,YAAY,EACZ,MAAM;AAEV,CAAC,CACF;AAAC,iCAEa,eAAe;AAAA","ignoreList":[]}
@@ -1,6 +1,13 @@
1
- import { findJSDocComment } from '@es-joy/jsdoccomment';
2
- import debugModule from 'debug';
3
- const debug = debugModule('requireExportJsdoc');
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _jsdoccomment = require("@es-joy/jsdoccomment");
8
+ var _debug = _interopRequireDefault(require("debug"));
9
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
+ const debug = (0, _debug.default)('requireExportJsdoc');
4
11
 
5
12
  /**
6
13
  * @typedef {{
@@ -701,14 +708,14 @@ const isUncommentedExport = function (node, sourceCode, opt, settings) {
701
708
  const exportNode = getExportAncestor(node);
702
709
 
703
710
  // Is export node comment
704
- if (exportNode && !findJSDocComment(exportNode, sourceCode, settings)) {
711
+ if (exportNode && !(0, _jsdoccomment.findJSDocComment)(exportNode, sourceCode, settings)) {
705
712
  return true;
706
713
  }
707
714
 
708
715
  /**
709
716
  * Some typescript types are not in variable map, but inherit exported (interface property and method)
710
717
  */
711
- if (isExportByAncestor(node) && !findJSDocComment(node, sourceCode, settings)) {
718
+ if (isExportByAncestor(node) && !(0, _jsdoccomment.findJSDocComment)(node, sourceCode, settings)) {
712
719
  return true;
713
720
  }
714
721
  }
@@ -717,8 +724,9 @@ const isUncommentedExport = function (node, sourceCode, opt, settings) {
717
724
  ast, node, opt);
718
725
  return isNodeExported(node, /** @type {CreatedNode} */parseResult.globalVars, opt);
719
726
  };
720
- export default {
727
+ var _default = exports.default = {
721
728
  isUncommentedExport,
722
729
  parse
723
730
  };
731
+ module.exports = exports.default;
724
732
  //# sourceMappingURL=exportParser.cjs.map