-
Notifications
You must be signed in to change notification settings - Fork 249
/
rule-set.mjs
55 lines (53 loc) · 1.7 KB
/
rule-set.mjs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
/**
* Finds the first rule in the rule set that has name pName,
* and undefined if no such rule exists/ the rule is an 'allowed'
* rule.
*
* (this thing probably belongs in a model-like folder and not in utl)
*
* @param {import("../../types/dependency-cruiser").IFlattenedRuleSet} pRuleSet - The rule set to search in
* @param {string} pName - The rule name to look for
* @return {import("../../types/rule-set").IForbiddenRuleType|undefined} - a rule (or 'undefined' if nothing found)
*/
export function findRuleByName(pRuleSet, pName) {
const lNamedRules = (pRuleSet?.forbidden ?? []).concat(
pRuleSet?.required ?? [],
);
return lNamedRules.find((pRule) => pRule.name === pName);
}
function ruleHasALicenseLikeAttribute(pRule) {
return (
Object.hasOwn(pRule?.to ?? {}, "license") ||
Object.hasOwn(pRule?.to ?? {}, "licenseNot")
);
}
/**
* Returns true if the rule set has a rule that uses the 'license' or
* 'licenseNot' attribute.
*
* Returns false in all other cases
*
* @param {import('../../types/dependency-cruiser').IFlattenedRuleSet} pRuleSet
* @return {boolean}
*/
export function ruleSetHasLicenseRule(pRuleSet) {
return (
(pRuleSet?.forbidden ?? []).some(ruleHasALicenseLikeAttribute) ||
(pRuleSet?.allowed ?? []).some(ruleHasALicenseLikeAttribute)
);
}
/**
*
* @param {import('../../types/dependency-cruiser').IFlattenedRuleSet} pRuleSet
* @return {boolean}
*/
export function ruleSetHasDeprecationRule(pRuleSet) {
return (
(pRuleSet?.forbidden ?? []).some((pRule) =>
(pRule?.to?.dependencyTypes ?? []).includes("deprecated"),
) ||
(pRuleSet?.allowed ?? []).some((pRule) =>
(pRule?.to?.dependencyTypes ?? []).includes("deprecated"),
)
);
}