checkParamNames.js 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.default = void 0;
  6. var _lodash = _interopRequireDefault(require("lodash"));
  7. var _iterateJsdoc = _interopRequireDefault(require("../iterateJsdoc"));
  8. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  9. var validateParameterNames = function validateParameterNames(targetTagName, functionParameterNames, jsdocParameterNames, report) {
  10. return _lodash.default.some(jsdocParameterNames, function (jsdocParameterName, index) {
  11. var functionParameterName = functionParameterNames[index];
  12. if (!functionParameterName) {
  13. report('@' + targetTagName + ' "' + jsdocParameterName + '" does not match an existing function parameter.');
  14. return true;
  15. }
  16. if (functionParameterName === '<ObjectPattern>' || functionParameterName === '<ArrayPattern>') {
  17. return false;
  18. }
  19. if (functionParameterName !== jsdocParameterName) {
  20. report('Expected @' + targetTagName + ' names to be "' + functionParameterNames.join(', ') + '". Got "' + jsdocParameterNames.join(', ') + '".');
  21. return true;
  22. }
  23. return false;
  24. });
  25. };
  26. var validateParameterNamesDeep = function validateParameterNamesDeep(targetTagName, jsdocParameterNames, report) {
  27. var lastRealParameter;
  28. return _lodash.default.some(jsdocParameterNames, function (jsdocParameterName) {
  29. var isPropertyPath = _lodash.default.includes(jsdocParameterName, '.');
  30. if (isPropertyPath) {
  31. if (!lastRealParameter) {
  32. report('@' + targetTagName + ' path declaration ("' + jsdocParameterName + '") appears before any real parameter.');
  33. return true;
  34. }
  35. var pathRootNodeName = jsdocParameterName.slice(0, jsdocParameterName.indexOf('.'));
  36. if (pathRootNodeName.endsWith('[]')) {
  37. pathRootNodeName = pathRootNodeName.slice(0, -2);
  38. }
  39. if (pathRootNodeName !== lastRealParameter) {
  40. report('@' + targetTagName + ' path declaration ("' + jsdocParameterName + '") root node name ("' + pathRootNodeName + '") does not match previous real parameter name ("' + lastRealParameter + '").');
  41. return true;
  42. }
  43. } else {
  44. lastRealParameter = jsdocParameterName;
  45. }
  46. return false;
  47. });
  48. };
  49. var _default = (0, _iterateJsdoc.default)(function (_ref) {
  50. var report = _ref.report,
  51. utils = _ref.utils;
  52. var functionParameterNames = utils.getFunctionParameterNames();
  53. var jsdocParameterNames = utils.getJsdocParameterNames();
  54. var jsdocParameterNamesDeep = utils.getJsdocParameterNamesDeep();
  55. var targetTagName = utils.getPreferredTagName('param');
  56. var isError = validateParameterNames(targetTagName, functionParameterNames, jsdocParameterNames, report);
  57. if (isError) {
  58. return;
  59. }
  60. validateParameterNamesDeep(targetTagName, jsdocParameterNamesDeep, report);
  61. });
  62. exports.default = _default;
  63. module.exports = exports.default;
  64. //# sourceMappingURL=checkParamNames.js.map