| "use strict"; |
| |
| Object.defineProperty(exports, "__esModule", { |
| value: true |
| }); |
| exports.default = void 0; |
| var _iterateJsdoc = _interopRequireDefault(require("../iterateJsdoc")); |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } |
| var _default = (0, _iterateJsdoc.default)(({ |
| context, |
| jsdoc, |
| utils, |
| indent |
| }) => { |
| const [defaultRequireValue = 'always', { |
| tags: tagMap = {} |
| } = {}] = context.options; |
| const { |
| source |
| } = jsdoc; |
| const always = defaultRequireValue === 'always'; |
| const never = defaultRequireValue === 'never'; |
| let currentTag; |
| source.some(({ |
| number, |
| tokens |
| }) => { |
| var _tagMap$any2; |
| const { |
| delimiter, |
| tag, |
| end, |
| description |
| } = tokens; |
| const neverFix = () => { |
| tokens.delimiter = ''; |
| tokens.postDelimiter = ''; |
| }; |
| const checkNever = checkValue => { |
| var _tagMap$always, _tagMap$never; |
| if (delimiter && delimiter !== '/**' && (never && !((_tagMap$always = tagMap.always) !== null && _tagMap$always !== void 0 && _tagMap$always.includes(checkValue)) || (_tagMap$never = tagMap.never) !== null && _tagMap$never !== void 0 && _tagMap$never.includes(checkValue))) { |
| utils.reportJSDoc('Expected JSDoc line to have no prefix.', { |
| column: 0, |
| line: number |
| }, neverFix); |
| return true; |
| } |
| return false; |
| }; |
| const alwaysFix = () => { |
| if (!tokens.start) { |
| tokens.start = indent + ' '; |
| } |
| tokens.delimiter = '*'; |
| tokens.postDelimiter = tag || description ? ' ' : ''; |
| }; |
| const checkAlways = checkValue => { |
| var _tagMap$never2, _tagMap$always2; |
| if (!delimiter && (always && !((_tagMap$never2 = tagMap.never) !== null && _tagMap$never2 !== void 0 && _tagMap$never2.includes(checkValue)) || (_tagMap$always2 = tagMap.always) !== null && _tagMap$always2 !== void 0 && _tagMap$always2.includes(checkValue))) { |
| utils.reportJSDoc('Expected JSDoc line to have the prefix.', { |
| column: 0, |
| line: number |
| }, alwaysFix); |
| return true; |
| } |
| return false; |
| }; |
| if (tag) { |
| // Remove at sign |
| currentTag = tag.slice(1); |
| } |
| if ( |
| // If this is the end but has a tag, the delimiter will also be |
| // populated and will be safely ignored later |
| end && !tag) { |
| return false; |
| } |
| if (!currentTag) { |
| var _tagMap$any; |
| if ((_tagMap$any = tagMap.any) !== null && _tagMap$any !== void 0 && _tagMap$any.includes('*description')) { |
| return false; |
| } |
| if (checkNever('*description')) { |
| return true; |
| } |
| if (checkAlways('*description')) { |
| return true; |
| } |
| return false; |
| } |
| if ((_tagMap$any2 = tagMap.any) !== null && _tagMap$any2 !== void 0 && _tagMap$any2.includes(currentTag)) { |
| return false; |
| } |
| if (checkNever(currentTag)) { |
| return true; |
| } |
| if (checkAlways(currentTag)) { |
| return true; |
| } |
| return false; |
| }); |
| }, { |
| iterateAllJsdocs: true, |
| meta: { |
| fixable: 'code', |
| schema: [{ |
| enum: ['always', 'never', 'any'], |
| type: 'string' |
| }, { |
| additionalProperties: false, |
| properties: { |
| tags: { |
| properties: { |
| always: { |
| items: { |
| type: 'string' |
| }, |
| type: 'array' |
| }, |
| any: { |
| items: { |
| type: 'string' |
| }, |
| type: 'array' |
| }, |
| never: { |
| items: { |
| type: 'string' |
| }, |
| type: 'array' |
| } |
| }, |
| type: 'object' |
| } |
| }, |
| type: 'object' |
| }], |
| type: 'layout' |
| } |
| }); |
| exports.default = _default; |
| module.exports = exports.default; |
| //# sourceMappingURL=requireAsteriskPrefix.js.map |