mirror of
https://github.com/JamesIves/github-pages-deploy-action.git
synced 2023-12-15 20:03:39 +08:00
120 lines
2.7 KiB
JavaScript
120 lines
2.7 KiB
JavaScript
|
"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)(({
|
||
|
jsdoc,
|
||
|
utils
|
||
|
}) => {
|
||
|
const functionParameterNames = utils.getFunctionParameterNames();
|
||
|
const jsdocParameterNames = utils.getJsdocTags('param');
|
||
|
|
||
|
if (!jsdocParameterNames) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
if (utils.avoidDocs()) {
|
||
|
return;
|
||
|
} // Param type is specified by type in @type
|
||
|
|
||
|
|
||
|
if (utils.hasTag('type')) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
const preferredTagName = utils.getPreferredTagName({
|
||
|
tagName: 'param'
|
||
|
});
|
||
|
|
||
|
const findExpectedIndex = (jsdocTags, indexAtFunctionParams) => {
|
||
|
const functionTags = jsdocTags.filter(({
|
||
|
tag
|
||
|
}) => {
|
||
|
return tag === preferredTagName;
|
||
|
});
|
||
|
let expectedIndex = jsdocTags.length;
|
||
|
jsdocTags.forEach((tag, index) => {
|
||
|
if (tag.tag === preferredTagName) {
|
||
|
expectedIndex = index;
|
||
|
|
||
|
if (functionTags.indexOf(tag) < indexAtFunctionParams) {
|
||
|
expectedIndex += 1;
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
return expectedIndex;
|
||
|
};
|
||
|
|
||
|
const missingTags = [];
|
||
|
functionParameterNames.forEach((functionParameterName, functionParameterIdx) => {
|
||
|
if (['<ObjectPattern>', '<ArrayPattern>'].includes(functionParameterName)) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
if (jsdocParameterNames && !jsdocParameterNames.find(({
|
||
|
name
|
||
|
}) => {
|
||
|
return name === functionParameterName;
|
||
|
})) {
|
||
|
missingTags.push({
|
||
|
functionParameterIdx,
|
||
|
functionParameterName
|
||
|
});
|
||
|
}
|
||
|
});
|
||
|
|
||
|
const fixAll = (missings, tags) => {
|
||
|
missings.forEach(({
|
||
|
functionParameterIdx,
|
||
|
functionParameterName
|
||
|
}) => {
|
||
|
const expectedIdx = findExpectedIndex(tags, functionParameterIdx);
|
||
|
tags.splice(expectedIdx, 0, {
|
||
|
name: functionParameterName,
|
||
|
tag: preferredTagName
|
||
|
});
|
||
|
});
|
||
|
};
|
||
|
|
||
|
missingTags.forEach(({
|
||
|
functionParameterName
|
||
|
}, index) => {
|
||
|
// Fix all missing tags the first time.
|
||
|
const fixer = index > 0 ? null : () => {
|
||
|
if (!jsdoc.tags) {
|
||
|
jsdoc.tags = [];
|
||
|
}
|
||
|
|
||
|
fixAll(missingTags, jsdoc.tags);
|
||
|
};
|
||
|
utils.reportJSDoc(`Missing JSDoc @${preferredTagName} "${functionParameterName}" declaration.`, null, fixer);
|
||
|
});
|
||
|
}, {
|
||
|
meta: {
|
||
|
fixable: 'code',
|
||
|
schema: [{
|
||
|
additionalProperties: false,
|
||
|
properties: {
|
||
|
exemptedBy: {
|
||
|
items: {
|
||
|
type: 'string'
|
||
|
},
|
||
|
type: 'array'
|
||
|
}
|
||
|
},
|
||
|
type: 'object'
|
||
|
}],
|
||
|
type: 'suggestion'
|
||
|
}
|
||
|
});
|
||
|
|
||
|
exports.default = _default;
|
||
|
module.exports = exports.default;
|
||
|
//# sourceMappingURL=requireParam.js.map
|