@degenerate/rules 0.0.9 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/__testdata__/conditions/current-conditions.test-data.d.ts +1 -0
- package/dist/__testdata__/conditions/current-conditions.test-data.d.ts.map +1 -0
- package/dist/__testdata__/conditions/current-conditions.test-data.js +339 -0
- package/dist/__testdata__/rules/rules.test-data.d.ts +24 -0
- package/dist/__testdata__/rules/rules.test-data.d.ts.map +1 -0
- package/dist/__testdata__/rules/rules.test-data.js +339 -0
- package/dist/create/conditions/create-boolean-conditions.d.ts +12 -0
- package/dist/create/conditions/create-boolean-conditions.d.ts.map +1 -0
- package/dist/create/conditions/create-boolean-conditions.js +20 -0
- package/dist/create/conditions/create-contains-conditions.d.ts +12 -0
- package/dist/create/conditions/create-contains-conditions.d.ts.map +1 -0
- package/dist/create/conditions/create-contains-conditions.js +21 -0
- package/dist/create/conditions/create-empty-conditions.d.ts +11 -0
- package/dist/create/conditions/create-empty-conditions.d.ts.map +1 -0
- package/dist/create/conditions/create-empty-conditions.js +19 -0
- package/dist/create/conditions/create-equality-conditions.d.ts +12 -0
- package/dist/create/conditions/create-equality-conditions.d.ts.map +1 -0
- package/dist/create/conditions/create-equality-conditions.js +21 -0
- package/dist/create/conditions/create-null-conditions.d.ts +11 -0
- package/dist/create/conditions/create-null-conditions.d.ts.map +1 -0
- package/dist/create/conditions/create-null-conditions.js +19 -0
- package/dist/create/conditions/create-range-conditions.d.ts +13 -0
- package/dist/create/conditions/create-range-conditions.d.ts.map +1 -0
- package/dist/create/conditions/create-range-conditions.js +22 -0
- package/dist/create/conditions/create-special-conditions.d.ts +12 -0
- package/dist/create/conditions/create-special-conditions.d.ts.map +1 -0
- package/dist/create/conditions/create-special-conditions.js +21 -0
- package/dist/create/conditions/create-starts-end-with-conditions.d.ts +13 -0
- package/dist/create/conditions/create-starts-end-with-conditions.d.ts.map +1 -0
- package/dist/create/conditions/create-starts-end-with-conditions.js +22 -0
- package/dist/create/conditions/create-typeof-conditions.d.ts +12 -0
- package/dist/create/conditions/create-typeof-conditions.d.ts.map +1 -0
- package/dist/create/conditions/create-typeof-conditions.js +21 -0
- package/dist/create/create-share-rule-applied.d.ts +11 -0
- package/dist/create/create-share-rule-applied.d.ts.map +1 -0
- package/dist/create/create-share-rule-applied.js +17 -0
- package/dist/create/create-share-rule-id.d.ts +11 -0
- package/dist/create/create-share-rule-id.d.ts.map +1 -0
- package/dist/create/create-share-rule-id.js +25 -0
- package/dist/create/create-share-rule.d.ts +11 -0
- package/dist/create/create-share-rule.d.ts.map +1 -0
- package/dist/create/create-share-rule.js +28 -0
- package/dist/create/index.d.ts +13 -0
- package/dist/create/index.d.ts.map +1 -0
- package/dist/create/index.js +30 -0
- package/dist/evaluation/conditions/boolean-conditions.d.ts +2 -2
- package/dist/evaluation/conditions/boolean-conditions.d.ts.map +1 -1
- package/dist/evaluation/conditions/boolean-conditions.js +9 -8
- package/dist/evaluation/conditions/contains-conditions.d.ts +2 -2
- package/dist/evaluation/conditions/contains-conditions.d.ts.map +1 -1
- package/dist/evaluation/conditions/contains-conditions.js +2 -2
- package/dist/evaluation/conditions/empty-conditions.d.ts +2 -2
- package/dist/evaluation/conditions/empty-conditions.d.ts.map +1 -1
- package/dist/evaluation/conditions/empty-conditions.js +4 -13
- package/dist/evaluation/conditions/equality-conditions.d.ts +2 -2
- package/dist/evaluation/conditions/equality-conditions.d.ts.map +1 -1
- package/dist/evaluation/conditions/equality-conditions.js +4 -7
- package/dist/evaluation/conditions/null-conditions.d.ts +2 -2
- package/dist/evaluation/conditions/null-conditions.d.ts.map +1 -1
- package/dist/evaluation/conditions/null-conditions.js +4 -7
- package/dist/evaluation/conditions/range-conditions.d.ts +2 -2
- package/dist/evaluation/conditions/range-conditions.d.ts.map +1 -1
- package/dist/evaluation/conditions/range-conditions.js +16 -5
- package/dist/evaluation/conditions/special-conditions.d.ts +2 -2
- package/dist/evaluation/conditions/special-conditions.d.ts.map +1 -1
- package/dist/evaluation/conditions/special-conditions.js +11 -8
- package/dist/evaluation/conditions/starts-end-with-conditions.d.ts +2 -2
- package/dist/evaluation/conditions/starts-end-with-conditions.d.ts.map +1 -1
- package/dist/evaluation/conditions/starts-end-with-conditions.js +5 -3
- package/dist/evaluation/conditions/{typeof-rule-conditions.d.ts → typeof-conditions.d.ts} +3 -3
- package/dist/evaluation/conditions/typeof-conditions.d.ts.map +1 -0
- package/dist/evaluation/conditions/{typeof-rule-conditions.js → typeof-conditions.js} +2 -2
- package/dist/evaluation/evaluate-rule-conditions.d.ts.map +1 -1
- package/dist/evaluation/evaluate-rule-conditions.js +19 -22
- package/dist/evaluation/evaluate-rules.js +3 -5
- package/dist/evaluation/index.d.ts +1 -1
- package/dist/evaluation/index.d.ts.map +1 -1
- package/dist/evaluation/index.js +1 -1
- package/package.json +4 -4
- package/dist/evaluation/conditions/typeof-rule-conditions.d.ts.map +0 -1
|
@@ -14,7 +14,7 @@ const generic_1 = require("@degenerate/generic");
|
|
|
14
14
|
*
|
|
15
15
|
* @returns
|
|
16
16
|
*/
|
|
17
|
-
const isValidStartEndWithValue = (dataValue, conditionValue, conditionType) => {
|
|
17
|
+
const isValidStartEndWithValue = (dataValue, conditionValue, conditionType, conditionTypeQualifier) => {
|
|
18
18
|
// Make sure the data type is correct
|
|
19
19
|
if (!(typeof dataValue === 'string' || typeof dataValue === 'number' || (0, generic_1.validateArray)(dataValue, 1))) {
|
|
20
20
|
throw new generic_1.SafeRuleEvaluationConditionDataValueError(dataValue, conditionValue, conditionType);
|
|
@@ -22,12 +22,14 @@ const isValidStartEndWithValue = (dataValue, conditionValue, conditionType) => {
|
|
|
22
22
|
if (!(typeof conditionValue === 'string' || typeof conditionValue === 'number' || (0, generic_1.validateArray)(conditionValue, 1))) {
|
|
23
23
|
throw new generic_1.SafeRuleEvaluationConditionValueError(dataValue, conditionValue, conditionType);
|
|
24
24
|
}
|
|
25
|
+
let result = false;
|
|
25
26
|
if ((typeof dataValue === 'string' || typeof dataValue === 'number') && (typeof conditionValue === 'string' || typeof conditionValue === 'number')) {
|
|
26
|
-
|
|
27
|
+
result = isValidStartEndWithStringNumberValue(dataValue, conditionValue, conditionType);
|
|
27
28
|
}
|
|
28
29
|
else {
|
|
29
|
-
|
|
30
|
+
result = isValidStartEndWithArrayValue(dataValue, conditionValue, conditionType);
|
|
30
31
|
}
|
|
32
|
+
return (conditionTypeQualifier === generic_1.ConditionTypeQualifier.IS) ? result : !result;
|
|
31
33
|
};
|
|
32
34
|
exports.isValidStartEndWithValue = isValidStartEndWithValue;
|
|
33
35
|
//#region internal functions
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* This file contains the functions for checking that the data is the proper type of data.
|
|
3
3
|
*/
|
|
4
|
-
import { ConditionTypeOf,
|
|
4
|
+
import { ConditionTypeOf, ConditionTypeQualifier } from '@degenerate/generic';
|
|
5
5
|
/**
|
|
6
6
|
* This takes a value and checks if it is the proper type of value.
|
|
7
7
|
*
|
|
@@ -11,6 +11,6 @@ import { ConditionTypeOf, ConditionTypeTypeOf } from '@degenerate/generic';
|
|
|
11
11
|
*
|
|
12
12
|
* @returns
|
|
13
13
|
*/
|
|
14
|
-
declare const isValidTypeOfValue: (dataValue: unknown, typeofValue: ConditionTypeOf,
|
|
14
|
+
declare const isValidTypeOfValue: (dataValue: unknown, typeofValue: ConditionTypeOf, conditionTypeQualifier: ConditionTypeQualifier) => boolean;
|
|
15
15
|
export { isValidTypeOfValue };
|
|
16
|
-
//# sourceMappingURL=typeof-
|
|
16
|
+
//# sourceMappingURL=typeof-conditions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typeof-conditions.d.ts","sourceRoot":"","sources":["../../../src/evaluation/conditions/typeof-conditions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAE9E;;;;;;;;GAQG;AACH,QAAA,MAAM,kBAAkB,cAAe,OAAO,eAAe,eAAe,0BAChD,sBAAsB,KAAG,OAGpD,CAAC;AAsCF,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
|
|
@@ -14,9 +14,9 @@ const generic_1 = require("@degenerate/generic");
|
|
|
14
14
|
*
|
|
15
15
|
* @returns
|
|
16
16
|
*/
|
|
17
|
-
const isValidTypeOfValue = (dataValue, typeofValue,
|
|
17
|
+
const isValidTypeOfValue = (dataValue, typeofValue, conditionTypeQualifier) => {
|
|
18
18
|
const initialResult = checkType(dataValue, typeofValue);
|
|
19
|
-
return (
|
|
19
|
+
return (conditionTypeQualifier === generic_1.ConditionTypeQualifier.IS) ? initialResult : !initialResult;
|
|
20
20
|
};
|
|
21
21
|
exports.isValidTypeOfValue = isValidTypeOfValue;
|
|
22
22
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evaluate-rule-conditions.d.ts","sourceRoot":"","sources":["../../src/evaluation/evaluate-rule-conditions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"evaluate-rule-conditions.d.ts","sourceRoot":"","sources":["../../src/evaluation/evaluate-rule-conditions.ts"],"names":[],"mappings":"AACA,OAAO,EAMH,UAAU,EACV,aAAa,EAChB,MAAM,qBAAqB,CAAC;AAW7B;;;;;GAKG;AACH,QAAA,MAAM,sBAAsB,iBAAkB,aAAa,aAAa,UAAU,KAAG,OA+BpF,CAAC;AAGF,OAAO,EAAE,sBAAsB,EAAE,CAAC"}
|
|
@@ -10,7 +10,7 @@ const null_conditions_1 = require("./conditions/null-conditions");
|
|
|
10
10
|
const range_conditions_1 = require("./conditions/range-conditions");
|
|
11
11
|
const special_conditions_1 = require("./conditions/special-conditions");
|
|
12
12
|
const starts_end_with_conditions_1 = require("./conditions/starts-end-with-conditions");
|
|
13
|
-
const
|
|
13
|
+
const typeof_conditions_1 = require("./conditions/typeof-conditions");
|
|
14
14
|
/**
|
|
15
15
|
* This evaluates the conditions for the rule.
|
|
16
16
|
*
|
|
@@ -21,34 +21,31 @@ const evaluateRuleConditions = (targetObject, condition) => {
|
|
|
21
21
|
const splitProperties = condition.targettedProperty.split('.');
|
|
22
22
|
const targetValue = getNestedProperty(targetObject, splitProperties);
|
|
23
23
|
switch (condition.conditionType) {
|
|
24
|
-
case generic_1.
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
case generic_1.ConditionTypeEquality.NOT_EQUAL:
|
|
29
|
-
return (0, equality_conditions_1.isValidEqualityValue)(targetValue, condition.conditionValue, condition.conditionType);
|
|
24
|
+
case generic_1.ConditionTypeSingle.TYPEOF:
|
|
25
|
+
return (0, typeof_conditions_1.isValidTypeOfValue)(targetValue, condition.conditionValue, condition.conditionTypeQualifier);
|
|
26
|
+
case generic_1.ConditionTypeSingle.EQUAL:
|
|
27
|
+
return (0, equality_conditions_1.isValidEqualityValue)(targetValue, condition.conditionValue, condition.conditionTypeQualifier);
|
|
30
28
|
case generic_1.ConditionTypeRange.GREATER_THAN:
|
|
31
29
|
case generic_1.ConditionTypeRange.LESS_THAN:
|
|
32
30
|
case generic_1.ConditionTypeRange.GREATER_THAN_OR_EQUAL:
|
|
33
31
|
case generic_1.ConditionTypeRange.LESS_THAN_OR_EQUAL:
|
|
34
|
-
return (0, range_conditions_1.isValidRangeValue)(targetValue, condition.conditionValue, condition.conditionType);
|
|
35
|
-
case generic_1.
|
|
36
|
-
|
|
37
|
-
return (0, contains_conditions_1.isValidContainsValue)(targetValue, condition.conditionValue, condition.conditionType);
|
|
32
|
+
return (0, range_conditions_1.isValidRangeValue)(targetValue, condition.conditionValue, condition.conditionType, condition.conditionTypeQualifier);
|
|
33
|
+
case generic_1.ConditionTypeSingle.CONTAINS:
|
|
34
|
+
return (0, contains_conditions_1.isValidContainsValue)(targetValue, condition.conditionValue, condition.conditionTypeQualifier);
|
|
38
35
|
case generic_1.ConditionTypeStartsEndsWith.STARTS_WITH:
|
|
39
36
|
case generic_1.ConditionTypeStartsEndsWith.ENDS_WITH:
|
|
40
|
-
return (0, starts_end_with_conditions_1.isValidStartEndWithValue)(targetValue, condition.conditionValue, condition.conditionType);
|
|
41
|
-
case generic_1.
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
case generic_1.ConditionTypeBoolean.
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
case generic_1.ConditionTypeEmpty.IS_NOT_EMPTY:
|
|
49
|
-
return (0, empty_conditions_1.isValidEmptyValue)(targetValue, condition.conditionType);
|
|
37
|
+
return (0, starts_end_with_conditions_1.isValidStartEndWithValue)(targetValue, condition.conditionValue, condition.conditionType, condition.conditionTypeQualifier);
|
|
38
|
+
case generic_1.ConditionTypeSingle.NULL:
|
|
39
|
+
return (0, null_conditions_1.isValidNullValue)(targetValue, condition.conditionTypeQualifier);
|
|
40
|
+
case generic_1.ConditionTypeBoolean.TRUE:
|
|
41
|
+
case generic_1.ConditionTypeBoolean.FALSE:
|
|
42
|
+
return (0, boolean_conditions_1.isValidBooleanValue)(targetValue, condition.conditionType, condition.conditionTypeQualifier);
|
|
43
|
+
case generic_1.ConditionTypeSingle.EMPTY:
|
|
44
|
+
return (0, empty_conditions_1.isValidEmptyValue)(targetValue, condition.conditionTypeQualifier);
|
|
50
45
|
case generic_1.ConditionTypeSpecial.PATTERN:
|
|
51
|
-
return (0, special_conditions_1.isValidSpecialValue)(
|
|
46
|
+
return (0, special_conditions_1.isValidSpecialValue)(targetValue, condition.conditionValue, condition.conditionType, condition.conditionTypeQualifier);
|
|
47
|
+
default:
|
|
48
|
+
return false;
|
|
52
49
|
}
|
|
53
50
|
// return false;
|
|
54
51
|
};
|
|
@@ -24,17 +24,15 @@ const evaluateRules = (rootParam, appliedRules, shareDataCurrent, shareDataPropo
|
|
|
24
24
|
const ruleEvaluationResult = (0, evaluate_rule_1.evaluateRule)(rule, shareDataCurrent, shareDataProposed, logInfo);
|
|
25
25
|
// check if the rule passed
|
|
26
26
|
const passedRuleCheck = checkIfPassedRules(ruleEvaluationResult);
|
|
27
|
+
if (logInfo) { // add in the logging information if it's been requested
|
|
28
|
+
shareRulesEvaluationResults.shareRuleEvalutionResults.push(ruleEvaluationResult);
|
|
29
|
+
}
|
|
27
30
|
if (passedRuleCheck) {
|
|
28
31
|
shareRulesEvaluationResults.passedRuleCheck = true;
|
|
29
32
|
shareRulesEvaluationResults.passedRuleId = rule.ruleId;
|
|
30
33
|
if (!logInfo)
|
|
31
34
|
break;
|
|
32
35
|
}
|
|
33
|
-
else {
|
|
34
|
-
if (logInfo) {
|
|
35
|
-
shareRulesEvaluationResults.shareRuleEvalutionResults.push(ruleEvaluationResult);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
36
|
}
|
|
39
37
|
return shareRulesEvaluationResults;
|
|
40
38
|
};
|
|
@@ -6,7 +6,7 @@ export * from './conditions/null-conditions';
|
|
|
6
6
|
export * from './conditions/range-conditions';
|
|
7
7
|
export * from './conditions/special-conditions';
|
|
8
8
|
export * from './conditions/starts-end-with-conditions';
|
|
9
|
-
export * from './conditions/typeof-
|
|
9
|
+
export * from './conditions/typeof-conditions';
|
|
10
10
|
export * from './check-function-integrity';
|
|
11
11
|
export * from './check-if-proposal-is-valid';
|
|
12
12
|
export * from './determine-if-data-has-changed';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/evaluation/index.ts"],"names":[],"mappings":"AAEA,cAAc,iCAAiC,CAAC;AAChD,cAAc,kCAAkC,CAAC;AACjD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kCAAkC,CAAC;AACjD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,iCAAiC,CAAC;AAChD,cAAc,yCAAyC,CAAC;AACxD,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/evaluation/index.ts"],"names":[],"mappings":"AAEA,cAAc,iCAAiC,CAAC;AAChD,cAAc,kCAAkC,CAAC;AACjD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kCAAkC,CAAC;AACjD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,iCAAiC,CAAC;AAChD,cAAc,yCAAyC,CAAC;AACxD,cAAc,gCAAgC,CAAC;AAI/C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iCAAiC,CAAC;AAChD,cAAc,iBAAiB,CAAC;AAChC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kBAAkB,CAAC;AACjC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC"}
|
package/dist/evaluation/index.js
CHANGED
|
@@ -23,7 +23,7 @@ __exportStar(require("./conditions/null-conditions"), exports);
|
|
|
23
23
|
__exportStar(require("./conditions/range-conditions"), exports);
|
|
24
24
|
__exportStar(require("./conditions/special-conditions"), exports);
|
|
25
25
|
__exportStar(require("./conditions/starts-end-with-conditions"), exports);
|
|
26
|
-
__exportStar(require("./conditions/typeof-
|
|
26
|
+
__exportStar(require("./conditions/typeof-conditions"), exports);
|
|
27
27
|
//#endregion Conditional Functions
|
|
28
28
|
__exportStar(require("./check-function-integrity"), exports);
|
|
29
29
|
__exportStar(require("./check-if-proposal-is-valid"), exports);
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@degenerate/rules",
|
|
3
3
|
"description": "This contains the rules information needed for the ShareData Adaptive Framework Ecosystem (SAFE) network.",
|
|
4
|
-
"version": "0.0
|
|
4
|
+
"version": "0.1.0",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
7
|
"devDependencies": {
|
|
@@ -35,8 +35,8 @@
|
|
|
35
35
|
"homepage": "https://github.com/syncrude/safe#readme",
|
|
36
36
|
"author": "Degenerate Inc.",
|
|
37
37
|
"license": "ISC",
|
|
38
|
+
"gitHead": "608fbf8b2b80f30464af3898f08f7ad8db9b543c",
|
|
38
39
|
"dependencies": {
|
|
39
|
-
"@degenerate/generic": "^0.0
|
|
40
|
-
}
|
|
41
|
-
"gitHead": "0e8f76c14364f6d23ab66cdb9547d4e486fad9a4"
|
|
40
|
+
"@degenerate/generic": "^0.1.0"
|
|
41
|
+
}
|
|
42
42
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"typeof-rule-conditions.d.ts","sourceRoot":"","sources":["../../../src/evaluation/conditions/typeof-rule-conditions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE3E;;;;;;;;GAQG;AACH,QAAA,MAAM,kBAAkB,cAAe,OAAO,eAAe,eAAe,iBAAiB,mBAAmB,KAAG,OAGlH,CAAC;AAsCF,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
|