UNPKG

1.57 kBJavaScriptView Raw
1"use strict";
2var __importDefault = (this && this.__importDefault) || function (mod) {
3 return (mod && mod.__esModule) ? mod : { "default": mod };
4};
5Object.defineProperty(exports, "__esModule", { value: true });
6exports.scopeCase = void 0;
7const ensure_1 = require("@commitlint/ensure");
8const message_1 = __importDefault(require("@commitlint/message"));
9const negated = (when) => when === 'never';
10const 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) || 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 message_1.default([`scope must`, negated(when) ? `not` : null, `be ${list}`]),
36 ];
37};
38exports.scopeCase = scopeCase;
39//# sourceMappingURL=scope-case.js.map
\No newline at end of file