MCPcopy
hub / github.com/conventional-changelog/commitlint / scopeCase

Function scopeCase

@commitlint/rules/src/scope-case.ts:14–56  ·  view source on GitHub ↗
(parsed, when = "always", value = [])

Source from the content-addressed store, hash-verified

12 delimiters?: string[];
13 }
14> = (parsed, when = "always", value = []) => {
15 const { scope } = parsed;
16
17 if (!scope) {
18 return [true];
19 }
20 const isObjectBasedConfiguration = !Array.isArray(value) && !(typeof value === "string");
21
22 const checks = (
23 isObjectBasedConfiguration ? value.cases : Array.isArray(value) ? value : [value]
24 ).map((check) => {
25 if (typeof check === "string") {
26 return {
27 when: "always",
28 case: check,
29 };
30 }
31 return check;
32 });
33
34 const delimiters =
35 isObjectBasedConfiguration && value.delimiters?.length ? value.delimiters : ["/", "\\", ","];
36 const delimiterPatterns = delimiters.map((delimiter) => {
37 return delimiter === "," ? ", ?" : delimiter.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
38 });
39 const delimiterRegex = new RegExp(delimiterPatterns.join("|"));
40 const scopeSegments = scope.split(delimiterRegex);
41
42 const result = checks.some((check) => {
43 const r = scopeSegments.every(
44 (segment) => delimiterRegex.test(segment) || ensureCase(segment, check.case),
45 );
46
47 return negated(check.when) ? !r : r;
48 });
49
50 const list = checks.map((c) => c.case).join(", ");
51
52 return [
53 negated(when) ? !result : result,
54 message([`scope must`, negated(when) ? `not` : null, `be ${list}`]),
55 ];
56};

Callers 1

scope-case.test.tsFile · 0.85

Calls 3

ensureCaseFunction · 0.85
messageFunction · 0.85
negatedFunction · 0.70

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…