scope-case.js 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. "use strict";
  2. var __importDefault = (this && this.__importDefault) || function (mod) {
  3. return (mod && mod.__esModule) ? mod : { "default": mod };
  4. };
  5. Object.defineProperty(exports, "__esModule", { value: true });
  6. exports.scopeCase = void 0;
  7. const ensure_1 = require("@commitlint/ensure");
  8. const message_1 = __importDefault(require("@commitlint/message"));
  9. const negated = (when) => when === 'never';
  10. const scopeCase = (parsed, when = 'always', value = []) => {
  11. const { scope } = parsed;
  12. if (!scope) {
  13. return [true];
  14. }
  15. const checks = (Array.isArray(value) ? value : [value]).map((check) => {
  16. if (typeof check === 'string') {
  17. return {
  18. when: 'always',
  19. case: check,
  20. };
  21. }
  22. return check;
  23. });
  24. // Scopes may contain slash or comma delimiters to separate them and mark them as individual segments.
  25. // This means that each of these segments should be tested separately with `ensure`.
  26. const delimiters = /\/|\\|,/g;
  27. const scopeSegments = scope.split(delimiters);
  28. const result = checks.some((check) => {
  29. const r = scopeSegments.every((segment) => delimiters.test(segment) || (0, ensure_1.case)(segment, check.case));
  30. return negated(check.when) ? !r : r;
  31. });
  32. const list = checks.map((c) => c.case).join(', ');
  33. return [
  34. negated(when) ? !result : result,
  35. (0, message_1.default)([`scope must`, negated(when) ? `not` : null, `be ${list}`]),
  36. ];
  37. };
  38. exports.scopeCase = scopeCase;
  39. //# sourceMappingURL=scope-case.js.map