eslint-plugin-jsdoc 63.0.11 → 63.0.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/WarnSettings.cjs +8 -1
- package/dist/WarnSettings.cjs.map +1 -1
- package/dist/alignTransform.cjs +10 -6
- package/dist/alignTransform.cjs.map +1 -1
- package/dist/buildForbidRuleDefinition.cjs +10 -3
- package/dist/buildForbidRuleDefinition.cjs.map +1 -1
- package/dist/buildRejectOrPreferRuleDefinition.cjs +14 -7
- package/dist/buildRejectOrPreferRuleDefinition.cjs.map +1 -1
- package/dist/defaultTagOrder.cjs +8 -1
- package/dist/defaultTagOrder.cjs.map +1 -1
- package/dist/exportParser.cjs +14 -6
- package/dist/exportParser.cjs.map +1 -1
- package/dist/generateDocs.cjs +44 -36
- package/dist/generateDocs.cjs.map +1 -1
- package/dist/generateOptions.cjs +18 -15
- package/dist/generateOptions.cjs.map +1 -1
- package/dist/generateRule.cjs +24 -24
- package/dist/generateRule.cjs.map +1 -1
- package/dist/generateRuleTypes.cjs +9 -6
- package/dist/generateRuleTypes.cjs.map +1 -1
- package/dist/getDefaultTagStructureForMode.cjs +8 -1
- package/dist/getDefaultTagStructureForMode.cjs.map +1 -1
- package/dist/getJsdocProcessorPlugin.cjs +28 -20
- package/dist/getJsdocProcessorPlugin.cjs.map +1 -1
- package/dist/index-cjs.cjs +159 -152
- package/dist/index-cjs.cjs.map +1 -1
- package/dist/index-esm.cjs +27 -16
- package/dist/index-esm.cjs.map +1 -1
- package/dist/index.cjs +172 -159
- package/dist/index.cjs.map +1 -1
- package/dist/iterateJsdoc.cjs +32 -22
- package/dist/iterateJsdoc.cjs.map +1 -1
- package/dist/jsdocUtils.cjs +86 -18
- package/dist/jsdocUtils.cjs.map +1 -1
- package/dist/rules/checkAccess.cjs +10 -2
- package/dist/rules/checkAccess.cjs.map +1 -1
- package/dist/rules/checkAlignment.cjs +10 -2
- package/dist/rules/checkAlignment.cjs.map +1 -1
- package/dist/rules/checkExamples.cjs +15 -6
- package/dist/rules/checkExamples.cjs.map +1 -1
- package/dist/rules/checkIndentation.cjs +9 -2
- package/dist/rules/checkIndentation.cjs.map +1 -1
- package/dist/rules/checkLineAlignment.cjs +14 -6
- package/dist/rules/checkLineAlignment.cjs.map +1 -1
- package/dist/rules/checkParamNames.cjs +9 -2
- package/dist/rules/checkParamNames.cjs.map +1 -1
- package/dist/rules/checkPropertyNames.cjs +9 -2
- package/dist/rules/checkPropertyNames.cjs.map +1 -1
- package/dist/rules/checkSyntax.cjs +10 -2
- package/dist/rules/checkSyntax.cjs.map +1 -1
- package/dist/rules/checkTagNames.cjs +11 -4
- package/dist/rules/checkTagNames.cjs.map +1 -1
- package/dist/rules/checkTemplateNames.cjs +20 -12
- package/dist/rules/checkTemplateNames.cjs.map +1 -1
- package/dist/rules/checkTypes.cjs +10 -4
- package/dist/rules/checkTypes.cjs.map +1 -1
- package/dist/rules/checkValues.cjs +17 -9
- package/dist/rules/checkValues.cjs.map +1 -1
- package/dist/rules/convertToJsdocComments.cjs +19 -13
- package/dist/rules/convertToJsdocComments.cjs.map +1 -1
- package/dist/rules/emptyTags.cjs +10 -2
- package/dist/rules/emptyTags.cjs.map +1 -1
- package/dist/rules/escapeInlineTags.cjs +10 -2
- package/dist/rules/escapeInlineTags.cjs.map +1 -1
- package/dist/rules/implementsOnClasses.cjs +10 -2
- package/dist/rules/implementsOnClasses.cjs.map +1 -1
- package/dist/rules/importsAsDependencies.cjs +20 -12
- package/dist/rules/importsAsDependencies.cjs.map +1 -1
- package/dist/rules/informativeDocs.cjs +12 -4
- package/dist/rules/informativeDocs.cjs.map +1 -1
- package/dist/rules/linesBeforeBlock.cjs +9 -2
- package/dist/rules/linesBeforeBlock.cjs.map +1 -1
- package/dist/rules/matchDescription.cjs +9 -2
- package/dist/rules/matchDescription.cjs.map +1 -1
- package/dist/rules/matchName.cjs +10 -2
- package/dist/rules/matchName.cjs.map +1 -1
- package/dist/rules/multilineBlocks.cjs +9 -2
- package/dist/rules/multilineBlocks.cjs.map +1 -1
- package/dist/rules/noBadBlocks.cjs +11 -4
- package/dist/rules/noBadBlocks.cjs.map +1 -1
- package/dist/rules/noBlankBlockDescriptions.cjs +10 -2
- package/dist/rules/noBlankBlockDescriptions.cjs.map +1 -1
- package/dist/rules/noBlankBlocks.cjs +10 -2
- package/dist/rules/noBlankBlocks.cjs.map +1 -1
- package/dist/rules/noDefaults.cjs +10 -2
- package/dist/rules/noDefaults.cjs.map +1 -1
- package/dist/rules/noMissingSyntax.cjs +9 -2
- package/dist/rules/noMissingSyntax.cjs.map +1 -1
- package/dist/rules/noMultiAsterisks.cjs +10 -2
- package/dist/rules/noMultiAsterisks.cjs.map +1 -1
- package/dist/rules/noRestrictedSyntax.cjs +9 -2
- package/dist/rules/noRestrictedSyntax.cjs.map +1 -1
- package/dist/rules/noTypes.cjs +9 -2
- package/dist/rules/noTypes.cjs.map +1 -1
- package/dist/rules/noUndefinedTypes.cjs +21 -13
- package/dist/rules/noUndefinedTypes.cjs.map +1 -1
- package/dist/rules/preferImportTag.cjs +28 -21
- package/dist/rules/preferImportTag.cjs.map +1 -1
- package/dist/rules/requireAsteriskPrefix.cjs +10 -2
- package/dist/rules/requireAsteriskPrefix.cjs.map +1 -1
- package/dist/rules/requireDescription.cjs +9 -2
- package/dist/rules/requireDescription.cjs.map +1 -1
- package/dist/rules/requireDescriptionCompleteSentence.cjs +15 -7
- package/dist/rules/requireDescriptionCompleteSentence.cjs.map +1 -1
- package/dist/rules/requireExample.cjs +10 -2
- package/dist/rules/requireExample.cjs.map +1 -1
- package/dist/rules/requireFileOverview.cjs +10 -2
- package/dist/rules/requireFileOverview.cjs.map +1 -1
- package/dist/rules/requireHyphenBeforeParamDescription.cjs +10 -2
- package/dist/rules/requireHyphenBeforeParamDescription.cjs.map +1 -1
- package/dist/rules/requireJsdoc.cjs +24 -17
- package/dist/rules/requireJsdoc.cjs.map +1 -1
- package/dist/rules/requireParam.cjs +9 -2
- package/dist/rules/requireParam.cjs.map +1 -1
- package/dist/rules/requireParamDescription.cjs +10 -2
- package/dist/rules/requireParamDescription.cjs.map +1 -1
- package/dist/rules/requireParamName.cjs +10 -2
- package/dist/rules/requireParamName.cjs.map +1 -1
- package/dist/rules/requireParamType.cjs +10 -2
- package/dist/rules/requireParamType.cjs.map +1 -1
- package/dist/rules/requireProperty.cjs +10 -2
- package/dist/rules/requireProperty.cjs.map +1 -1
- package/dist/rules/requirePropertyDescription.cjs +10 -2
- package/dist/rules/requirePropertyDescription.cjs.map +1 -1
- package/dist/rules/requirePropertyName.cjs +10 -2
- package/dist/rules/requirePropertyName.cjs.map +1 -1
- package/dist/rules/requirePropertyType.cjs +10 -2
- package/dist/rules/requirePropertyType.cjs.map +1 -1
- package/dist/rules/requireRejects.cjs +9 -2
- package/dist/rules/requireRejects.cjs.map +1 -1
- package/dist/rules/requireReturns.cjs +11 -4
- package/dist/rules/requireReturns.cjs.map +1 -1
- package/dist/rules/requireReturnsCheck.cjs +15 -8
- package/dist/rules/requireReturnsCheck.cjs.map +1 -1
- package/dist/rules/requireReturnsDescription.cjs +10 -2
- package/dist/rules/requireReturnsDescription.cjs.map +1 -1
- package/dist/rules/requireReturnsType.cjs +10 -2
- package/dist/rules/requireReturnsType.cjs.map +1 -1
- package/dist/rules/requireTags.cjs +9 -2
- package/dist/rules/requireTags.cjs.map +1 -1
- package/dist/rules/requireTemplate.cjs +13 -5
- package/dist/rules/requireTemplate.cjs.map +1 -1
- package/dist/rules/requireThrows.cjs +9 -2
- package/dist/rules/requireThrows.cjs.map +1 -1
- package/dist/rules/requireYields.cjs +9 -2
- package/dist/rules/requireYields.cjs.map +1 -1
- package/dist/rules/requireYieldsCheck.cjs +9 -2
- package/dist/rules/requireYieldsCheck.cjs.map +1 -1
- package/dist/rules/sortTags.cjs +12 -4
- package/dist/rules/sortTags.cjs.map +1 -1
- package/dist/rules/tagLines.cjs +9 -2
- package/dist/rules/tagLines.cjs.map +1 -1
- package/dist/rules/textEscaping.cjs +9 -2
- package/dist/rules/textEscaping.cjs.map +1 -1
- package/dist/rules/tsMethodSignatureStyle.cjs +18 -10
- package/dist/rules/tsMethodSignatureStyle.cjs.map +1 -1
- package/dist/rules/tsNoEmptyObjectType.cjs +13 -5
- package/dist/rules/tsNoEmptyObjectType.cjs.map +1 -1
- package/dist/rules/tsNoUnnecessaryTemplateExpression.cjs +16 -8
- package/dist/rules/tsNoUnnecessaryTemplateExpression.cjs.map +1 -1
- package/dist/rules/tsPreferFunctionType.cjs +16 -8
- package/dist/rules/tsPreferFunctionType.cjs.map +1 -1
- package/dist/rules/typeFormatting.cjs +17 -9
- package/dist/rules/typeFormatting.cjs.map +1 -1
- package/dist/rules/validTypes.cjs +18 -10
- package/dist/rules/validTypes.cjs.map +1 -1
- package/dist/tagNames.cjs +9 -4
- package/dist/tagNames.cjs.map +1 -1
- package/dist/utils/hasReturnValue.cjs +8 -1
- package/dist/utils/hasReturnValue.cjs.map +1 -1
- package/package.json +1 -1
package/dist/WarnSettings.cjs
CHANGED
|
@@ -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
|
-
|
|
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;
|
|
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":[]}
|
package/dist/alignTransform.cjs
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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":"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","ignoreList":[]}
|
package/dist/defaultTagOrder.cjs
CHANGED
|
@@ -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
|
-
|
|
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;
|
|
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":[]}
|
package/dist/exportParser.cjs
CHANGED
|
@@ -1,6 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
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
|
-
|
|
727
|
+
var _default = exports.default = {
|
|
721
728
|
isUncommentedExport,
|
|
722
729
|
parse
|
|
723
730
|
};
|
|
731
|
+
module.exports = exports.default;
|
|
724
732
|
//# sourceMappingURL=exportParser.cjs.map
|