mirror of
https://github.com/JamesIves/github-pages-deploy-action.git
synced 2023-12-15 20:03:39 +08:00
98 lines
2.6 KiB
JavaScript
98 lines
2.6 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 }; }
|
|
|
|
const validatePropertyNames = (targetTagName, jsdoc, jsdocNode, utils) => {
|
|
const propertyTags = Object.entries(jsdoc.tags).filter(([, tag]) => {
|
|
return tag.tag === targetTagName;
|
|
});
|
|
return propertyTags.some(([, tag], index) => {
|
|
let tagsIndex;
|
|
const dupeTagInfo = propertyTags.find(([tgsIndex, tg], idx) => {
|
|
tagsIndex = tgsIndex;
|
|
return tg.name === tag.name && idx !== index;
|
|
});
|
|
|
|
if (dupeTagInfo) {
|
|
utils.reportJSDoc(`Duplicate @${targetTagName} "${tag.name}"`, dupeTagInfo[1], () => {
|
|
jsdoc.tags.splice(tagsIndex, 1);
|
|
});
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
});
|
|
};
|
|
|
|
const validatePropertyNamesDeep = (targetTagName, jsdocPropertyNames, jsdoc, report) => {
|
|
let lastRealProperty;
|
|
return jsdocPropertyNames.some(({
|
|
name: jsdocPropertyName,
|
|
idx
|
|
}) => {
|
|
const isPropertyPath = jsdocPropertyName.includes('.');
|
|
|
|
if (isPropertyPath) {
|
|
if (!lastRealProperty) {
|
|
report(`@${targetTagName} path declaration ("${jsdocPropertyName}") appears before any real property.`, null, jsdoc.tags[idx]);
|
|
return true;
|
|
}
|
|
|
|
let pathRootNodeName = jsdocPropertyName.slice(0, jsdocPropertyName.indexOf('.'));
|
|
|
|
if (pathRootNodeName.endsWith('[]')) {
|
|
pathRootNodeName = pathRootNodeName.slice(0, -2);
|
|
}
|
|
|
|
if (pathRootNodeName !== lastRealProperty) {
|
|
report(`@${targetTagName} path declaration ("${jsdocPropertyName}") root node name ("${pathRootNodeName}") ` + `does not match previous real property name ("${lastRealProperty}").`, null, jsdoc.tags[idx]);
|
|
return true;
|
|
}
|
|
} else {
|
|
lastRealProperty = jsdocPropertyName;
|
|
}
|
|
|
|
return false;
|
|
});
|
|
};
|
|
|
|
var _default = (0, _iterateJsdoc.default)(({
|
|
jsdoc,
|
|
jsdocNode,
|
|
report,
|
|
utils
|
|
}) => {
|
|
const jsdocPropertyNamesDeep = utils.getJsdocTagsDeep('property');
|
|
|
|
if (!jsdocPropertyNamesDeep.length) {
|
|
return;
|
|
}
|
|
|
|
const targetTagName = utils.getPreferredTagName({
|
|
tagName: 'property'
|
|
});
|
|
const isError = validatePropertyNames(targetTagName, jsdoc, jsdocNode, utils);
|
|
|
|
if (isError) {
|
|
return;
|
|
}
|
|
|
|
validatePropertyNamesDeep(targetTagName, jsdocPropertyNamesDeep, jsdoc, report);
|
|
}, {
|
|
iterateAllJsdocs: true,
|
|
meta: {
|
|
fixable: 'code',
|
|
type: 'suggestion'
|
|
}
|
|
});
|
|
|
|
exports.default = _default;
|
|
module.exports = exports.default;
|
|
//# sourceMappingURL=checkPropertyNames.js.map
|