@evlop/commons 1.0.304 → 1.0.305

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.
Files changed (31) hide show
  1. package/dist/cjs/src/helpers/conditionHelper.d.ts +19 -0
  2. package/dist/cjs/src/helpers/conditionHelper.d.ts.map +1 -0
  3. package/dist/cjs/src/helpers/conditionHelper.js +95 -0
  4. package/dist/cjs/src/helpers/conditionHelper.js.map +1 -0
  5. package/dist/cjs/src/helpers/conditionHelper.test.d.ts +2 -0
  6. package/dist/cjs/src/helpers/conditionHelper.test.d.ts.map +1 -0
  7. package/dist/cjs/src/helpers/conditionHelper.test.js +171 -0
  8. package/dist/cjs/src/helpers/conditionHelper.test.js.map +1 -0
  9. package/dist/cjs/src/helpers/index.d.ts +1 -0
  10. package/dist/cjs/src/helpers/index.d.ts.map +1 -1
  11. package/dist/cjs/src/helpers/index.js +1 -0
  12. package/dist/cjs/src/helpers/index.js.map +1 -1
  13. package/dist/esm/src/helpers/conditionHelper.d.ts +19 -0
  14. package/dist/esm/src/helpers/conditionHelper.d.ts.map +1 -0
  15. package/dist/esm/src/helpers/conditionHelper.js +91 -0
  16. package/dist/esm/src/helpers/conditionHelper.js.map +1 -0
  17. package/dist/esm/src/helpers/conditionHelper.test.d.ts +2 -0
  18. package/dist/esm/src/helpers/conditionHelper.test.d.ts.map +1 -0
  19. package/dist/esm/src/helpers/conditionHelper.test.js +169 -0
  20. package/dist/esm/src/helpers/conditionHelper.test.js.map +1 -0
  21. package/dist/esm/src/helpers/index.d.ts +1 -0
  22. package/dist/esm/src/helpers/index.d.ts.map +1 -1
  23. package/dist/esm/src/helpers/index.js +1 -0
  24. package/dist/esm/src/helpers/index.js.map +1 -1
  25. package/dist/types/src/helpers/conditionHelper.d.ts +19 -0
  26. package/dist/types/src/helpers/conditionHelper.d.ts.map +1 -0
  27. package/dist/types/src/helpers/conditionHelper.test.d.ts +2 -0
  28. package/dist/types/src/helpers/conditionHelper.test.d.ts.map +1 -0
  29. package/dist/types/src/helpers/index.d.ts +1 -0
  30. package/dist/types/src/helpers/index.d.ts.map +1 -1
  31. package/package.json +1 -1
@@ -0,0 +1,19 @@
1
+ declare type PrimitiveValue = string | number | boolean | null | undefined;
2
+ declare type PredicateForSingleAgainstArray = 'isOneOf' | 'isIn' | 'isNotOneOf' | 'isNotIn';
3
+ declare type PredicateForArrayAgainstArray = 'containsSomeOf' | 'containsNoneOf' | 'containsAllOf';
4
+ declare type PredicateForUnary = 'isEmpty' | 'isNotEmpty' | 'isTruthy' | 'isFalsy';
5
+ declare type PredicateForStringAgainstString = 'startsWith' | 'endsWith' | 'contains' | 'doesNotContain';
6
+ declare type PredicateForNumberRange = 'isBetween' | 'isNotBetween';
7
+ declare type PredicateForAnyAgainstAny = '=' | 'isEqualTo' | '!=' | 'isNotEqualTo' | '<' | 'isLessThan' | '>' | 'isGreaterThan' | '>=' | 'isGreaterThanOrEqualTo' | '<=' | 'isLessThanOrEqualTo';
8
+ declare type Predicate = PredicateForSingleAgainstArray | PredicateForArrayAgainstArray | PredicateForUnary | PredicateForStringAgainstString | PredicateForNumberRange | PredicateForAnyAgainstAny;
9
+ declare type CompareValueForPredicate<T = Predicate> = T extends PredicateForSingleAgainstArray ? PrimitiveValue[] : T extends PredicateForArrayAgainstArray ? PrimitiveValue[] : T extends PredicateForUnary ? void : T extends PredicateForStringAgainstString ? string : T extends PredicateForNumberRange ? [number, number] : T extends PredicateForAnyAgainstAny ? PrimitiveValue : never;
10
+ declare type SimpleCondition<T = Predicate> = T extends PredicateForSingleAgainstArray ? [string, T, CompareValueForPredicate<T>] : T extends PredicateForArrayAgainstArray ? [string, T, CompareValueForPredicate<T>] : T extends PredicateForUnary ? [string, T] : T extends PredicateForStringAgainstString ? [string, T, CompareValueForPredicate<T>] : T extends PredicateForAnyAgainstAny ? [string, T, CompareValueForPredicate<T>] : never;
11
+ declare type ConditionMatchType = 'all' | 'none' | 'any';
12
+ interface ComplexCondition {
13
+ matchType: ConditionMatchType;
14
+ rules: Condition[];
15
+ }
16
+ export declare type Condition<T = Predicate> = SimpleCondition<T> | ComplexCondition | boolean;
17
+ export declare function checkCondition(object: any, condition: Condition, defaultValue?: boolean): boolean;
18
+ export {};
19
+ //# sourceMappingURL=conditionHelper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conditionHelper.d.ts","sourceRoot":"","sources":["../../../../src/helpers/conditionHelper.ts"],"names":[],"mappings":"AAEA,aAAK,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;AAEnE,aAAK,8BAA8B,GAAG,SAAS,GAAC,MAAM,GAAC,YAAY,GAAC,SAAS,CAAC;AAC9E,aAAK,6BAA6B,GAAI,gBAAgB,GAAC,gBAAgB,GAAC,eAAe,CAAC;AACxF,aAAK,iBAAiB,GAAG,SAAS,GAAC,YAAY,GAAC,UAAU,GAAC,SAAS,CAAC;AACrE,aAAK,+BAA+B,GAAG,YAAY,GAAC,UAAU,GAAC,UAAU,GAAC,gBAAgB,CAAC;AAC3F,aAAK,uBAAuB,GAAG,WAAW,GAAC,cAAc,CAAC;AAC1D,aAAK,yBAAyB,GAAG,GAAG,GAAC,WAAW,GAAC,IAAI,GAAC,cAAc,GAAC,GAAG,GAAC,YAAY,GAAC,GAAG,GAAC,eAAe,GAAC,IAAI,GAAC,wBAAwB,GAAC,IAAI,GAAC,qBAAqB,CAAC;AACnK,aAAK,SAAS,GAAG,8BAA8B,GAAG,6BAA6B,GAAG,iBAAiB,GAAG,+BAA+B,GAAG,uBAAuB,GAAG,yBAAyB,CAAC;AAE5L,aAAK,wBAAwB,CAAC,CAAC,GAAG,SAAS,IAAI,CAAC,SAAS,8BAA8B,GAAG,cAAc,EAAE,GACtG,CAAC,SAAS,6BAA6B,GAAG,cAAc,EAAE,GAC1D,CAAC,SAAS,iBAAiB,GAAG,IAAI,GAClC,CAAC,SAAS,+BAA+B,GAAG,MAAM,GAClD,CAAC,SAAS,uBAAuB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GACpD,CAAC,SAAS,yBAAyB,GAAG,cAAc,GAAG,KAAK,CAAC;AASjE,aAAK,eAAe,CAAC,CAAC,GAAG,SAAS,IAAK,CAAC,SAAS,8BAA8B,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,wBAAwB,CAAC,CAAC,CAAC,CAAC,GACtH,CAAC,SAAS,6BAA6B,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,wBAAwB,CAAC,CAAC,CAAC,CAAC,GAClF,CAAC,SAAS,iBAAiB,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,GACzC,CAAC,SAAS,+BAA+B,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,wBAAwB,CAAC,CAAC,CAAC,CAAC,GACpF,CAAC,SAAS,yBAAyB,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,wBAAwB,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;AAS3F,aAAK,kBAAkB,GAAG,KAAK,GAAC,MAAM,GAAC,KAAK,CAAC;AAE7C,UAAU,gBAAgB;IACtB,SAAS,EAAE,kBAAkB,CAAC;IAC9B,KAAK,EAAE,SAAS,EAAE,CAAC;CACtB;AAED,oBAAY,SAAS,CAAC,CAAC,GAAG,SAAS,IAAI,eAAe,CAAC,CAAC,CAAC,GAAG,gBAAgB,GAAG,OAAO,CAAC;AAEvF,wBAAgB,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,GAAE,OAAe,GAAG,OAAO,CAexG"}
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.checkCondition = void 0;
4
+ const lodash_1 = require("lodash");
5
+ function checkCondition(object, condition, defaultValue = false) {
6
+ if (typeof condition === 'boolean')
7
+ return condition;
8
+ // as we already checked for boolean, we can safely return defaultValue if condition is falsy
9
+ if (!condition)
10
+ return defaultValue;
11
+ if (Array.isArray(condition))
12
+ return _checkCondition(object, condition);
13
+ switch (condition.matchType) {
14
+ case 'none':
15
+ return !lodash_1.some(condition.rules, condition => checkCondition(object, condition));
16
+ case 'any':
17
+ return lodash_1.some(condition.rules, condition => checkCondition(object, condition));
18
+ case 'all':
19
+ default:
20
+ return lodash_1.every(condition.rules, condition => checkCondition(object, condition));
21
+ }
22
+ }
23
+ exports.checkCondition = checkCondition;
24
+ function checkConditionWithSingleValue([currentValue, predicate, comparAgainstValue]) {
25
+ switch (predicate) {
26
+ case '=':
27
+ case 'isEqualTo':
28
+ return currentValue == comparAgainstValue;
29
+ case '!=':
30
+ case 'isNotEqualTo':
31
+ return currentValue != comparAgainstValue;
32
+ case '>':
33
+ case 'isGreaterThan':
34
+ return currentValue > comparAgainstValue;
35
+ case '<':
36
+ case 'isLessThan':
37
+ return currentValue < comparAgainstValue;
38
+ case '>=':
39
+ case 'isGreaterThanOrEqualTo':
40
+ return currentValue >= comparAgainstValue;
41
+ case '<=':
42
+ case 'isLessThanOrEqualTo':
43
+ return currentValue <= comparAgainstValue;
44
+ case 'isBetween':
45
+ return currentValue >= comparAgainstValue?.[0] && currentValue <= comparAgainstValue?.[1];
46
+ case 'isNotBetween':
47
+ return currentValue < comparAgainstValue?.[0] || currentValue > comparAgainstValue?.[1];
48
+ case 'startsWith':
49
+ return typeof currentValue === 'string' && currentValue?.startsWith?.(comparAgainstValue);
50
+ case 'endsWith':
51
+ return typeof currentValue === 'string' && lodash_1.endsWith(currentValue, comparAgainstValue);
52
+ case 'contains':
53
+ return typeof currentValue === 'string' && lodash_1.includes(currentValue, comparAgainstValue);
54
+ case 'doesNotContain':
55
+ return typeof currentValue === 'string' && !lodash_1.includes(currentValue, comparAgainstValue);
56
+ case 'containsSomeOf':
57
+ return Array.isArray(comparAgainstValue) && comparAgainstValue.some((item) => lodash_1.includes(currentValue, item));
58
+ case 'containsNoneOf':
59
+ return Array.isArray(comparAgainstValue) && !comparAgainstValue.some((item) => lodash_1.includes(currentValue, item));
60
+ case 'containsAllOf':
61
+ return Array.isArray(comparAgainstValue) && comparAgainstValue.every((item) => lodash_1.includes(currentValue, item));
62
+ case 'isOneOf':
63
+ case 'isIn':
64
+ return Array.isArray(comparAgainstValue) && lodash_1.includes(comparAgainstValue, currentValue);
65
+ case 'isNotOneOf':
66
+ case 'isNotIn':
67
+ return Array.isArray(comparAgainstValue) && !lodash_1.includes(comparAgainstValue, currentValue);
68
+ case 'isEmpty':
69
+ return lodash_1.isEmpty(currentValue);
70
+ case 'isNotEmpty':
71
+ return !lodash_1.isEmpty(currentValue);
72
+ case 'isTruthy':
73
+ return !!currentValue;
74
+ case 'isFalsy':
75
+ return !currentValue;
76
+ default:
77
+ return false;
78
+ }
79
+ }
80
+ const valueAccessors = {};
81
+ function getValueAccessor(path) {
82
+ let accessor = valueAccessors[path];
83
+ if (accessor)
84
+ return accessor;
85
+ const keys = lodash_1.toPath(path);
86
+ accessor = new Function('object', `return object?.${keys.map(key => `['${key}']`).join('?.')}`);
87
+ valueAccessors[path] = accessor;
88
+ return accessor;
89
+ }
90
+ function _checkCondition(object, condition) {
91
+ const [key, predicate, value] = condition;
92
+ const currentValue = getValueAccessor(key)(object);
93
+ return checkConditionWithSingleValue([currentValue, predicate, value]);
94
+ }
95
+ //# sourceMappingURL=conditionHelper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conditionHelper.js","sourceRoot":"","sources":["../../../../src/helpers/conditionHelper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=conditionHelper.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conditionHelper.test.d.ts","sourceRoot":"","sources":["../../../../src/helpers/conditionHelper.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,171 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const chai_1 = require("chai");
4
+ const conditionHelper_1 = require("./conditionHelper");
5
+ describe('conditionHelper', () => {
6
+ describe('Simple Conditions', () => {
7
+ it('should handle boolean conditions', () => {
8
+ chai_1.expect(conditionHelper_1.checkCondition({}, true)).to.eq(true);
9
+ chai_1.expect(conditionHelper_1.checkCondition({}, false)).to.eq(false);
10
+ });
11
+ it('should handle equality conditions', () => {
12
+ const object = { name: 'John', age: 30 };
13
+ chai_1.expect(conditionHelper_1.checkCondition(object, ['name', '=', 'John'])).to.eq(true);
14
+ chai_1.expect(conditionHelper_1.checkCondition(object, ['age', '=', 30])).to.eq(true);
15
+ chai_1.expect(conditionHelper_1.checkCondition(object, ['name', '!=', 'Jane'])).to.eq(true);
16
+ chai_1.expect(conditionHelper_1.checkCondition(object, ['age', '!=', 25])).to.eq(true);
17
+ });
18
+ it('should handle comparison conditions', () => {
19
+ const object = { age: 30, score: 85 };
20
+ chai_1.expect(conditionHelper_1.checkCondition(object, ['age', '>', 25])).to.eq(true);
21
+ chai_1.expect(conditionHelper_1.checkCondition(object, ['age', '<', 35])).to.eq(true);
22
+ chai_1.expect(conditionHelper_1.checkCondition(object, ['score', '>', 80])).to.eq(true);
23
+ });
24
+ it('should handle string conditions', () => {
25
+ const object = { name: 'John Doe', email: 'john@example.com' };
26
+ chai_1.expect(conditionHelper_1.checkCondition(object, ['name', 'startsWith', 'John'])).to.eq(true);
27
+ chai_1.expect(conditionHelper_1.checkCondition(object, ['email', 'endsWith', '.com'])).to.eq(true);
28
+ chai_1.expect(conditionHelper_1.checkCondition(object, ['name', 'contains', 'Doe'])).to.eq(true);
29
+ chai_1.expect(conditionHelper_1.checkCondition(object, ['name', 'doesNotContain', 'Smith'])).to.eq(true);
30
+ });
31
+ it('should handle array conditions', () => {
32
+ const object = { tags: ['react', 'typescript', 'node'], roles: ['admin', 'user'] };
33
+ chai_1.expect(conditionHelper_1.checkCondition(object, ['tags', 'containsSomeOf', ['react', 'angular']]), 'tags contains some of react and angular').to.eq(true);
34
+ chai_1.expect(conditionHelper_1.checkCondition(object, ['roles', 'containsNoneOf', ['guest']]), 'roles contains none of guest').to.eq(true);
35
+ chai_1.expect(conditionHelper_1.checkCondition(object, ['tags', 'containsAllOf', ['react', 'typescript']]), 'tags contains all of react and typescript').to.eq(true);
36
+ chai_1.expect(conditionHelper_1.checkCondition(object, ['roles', 'containsNoneOf', ['superuser']]), 'roles contains none of superuser').to.eq(true);
37
+ });
38
+ it('should handle empty checks', () => {
39
+ const object = { name: '', tags: [], description: 'Some text' };
40
+ chai_1.expect(conditionHelper_1.checkCondition(object, ['name', 'isEmpty',])).to.eq(true);
41
+ chai_1.expect(conditionHelper_1.checkCondition(object, ['tags', 'isEmpty'])).to.eq(true);
42
+ chai_1.expect(conditionHelper_1.checkCondition(object, ['description', 'isNotEmpty'])).to.eq(true);
43
+ });
44
+ it('should handle truthy/falsy checks', () => {
45
+ const object = { active: true, count: 0, name: '', value: null };
46
+ chai_1.expect(conditionHelper_1.checkCondition(object, ['active', 'isTruthy'])).to.eq(true);
47
+ chai_1.expect(conditionHelper_1.checkCondition(object, ['count', 'isFalsy'])).to.eq(true);
48
+ chai_1.expect(conditionHelper_1.checkCondition(object, ['name', 'isFalsy'])).to.eq(true);
49
+ chai_1.expect(conditionHelper_1.checkCondition(object, ['value', 'isFalsy'])).to.eq(true);
50
+ });
51
+ });
52
+ describe('Complex Conditions', () => {
53
+ it('should handle "all" match type', () => {
54
+ const object = { name: 'John', age: 30, active: true };
55
+ const condition = {
56
+ matchType: 'all',
57
+ rules: [
58
+ ['name', '=', 'John'],
59
+ ['age', '>', 25],
60
+ ['active', 'isTruthy']
61
+ ]
62
+ };
63
+ chai_1.expect(conditionHelper_1.checkCondition(object, condition)).to.eq(true);
64
+ });
65
+ it('should handle "any" match type', () => {
66
+ const object = { name: 'John', age: 20 };
67
+ const condition = {
68
+ matchType: 'any',
69
+ rules: [
70
+ ['name', '=', 'Jane'],
71
+ ['age', '>', 25],
72
+ ['name', '=', 'John']
73
+ ]
74
+ };
75
+ chai_1.expect(conditionHelper_1.checkCondition(object, condition)).to.eq(true);
76
+ });
77
+ it('should handle "none" match type', () => {
78
+ const object = { name: 'John', age: 20 };
79
+ const condition = {
80
+ matchType: 'none',
81
+ rules: [
82
+ ['name', '=', 'Jane'],
83
+ ['age', '>', 25]
84
+ ]
85
+ };
86
+ chai_1.expect(conditionHelper_1.checkCondition(object, condition)).to.eq(true);
87
+ });
88
+ it('should handle nested complex conditions', () => {
89
+ const object = { name: 'John', age: 30, tags: ['react', 'typescript'] };
90
+ const condition = {
91
+ matchType: 'all',
92
+ rules: [
93
+ ['name', '=', 'John'],
94
+ {
95
+ matchType: 'any',
96
+ rules: [
97
+ ['age', '>', 35],
98
+ ['tags', 'containsAllOf', ['react', 'typescript']]
99
+ ]
100
+ }
101
+ ]
102
+ };
103
+ chai_1.expect(conditionHelper_1.checkCondition(object, condition)).to.eq(true);
104
+ });
105
+ });
106
+ describe('Edge Cases', () => {
107
+ it('should handle undefined and null values', () => {
108
+ const object = { name: undefined, age: null };
109
+ chai_1.expect(conditionHelper_1.checkCondition(object, ['name', 'isFalsy'])).to.eq(true);
110
+ chai_1.expect(conditionHelper_1.checkCondition(object, ['age', 'isFalsy'])).to.eq(true);
111
+ });
112
+ it('should handle nested object paths', () => {
113
+ const object = { user: { profile: { name: 'John' } } };
114
+ chai_1.expect(conditionHelper_1.checkCondition(object, ['user.profile.name', '=', 'John'])).to.eq(true);
115
+ });
116
+ it('should handle non-existent paths', () => {
117
+ const object = { name: 'John' };
118
+ chai_1.expect(conditionHelper_1.checkCondition(object, ['age', '=', 30])).to.eq(false);
119
+ chai_1.expect(conditionHelper_1.checkCondition(object, ['user.profile.name', '=', 'John'])).to.eq(false);
120
+ });
121
+ it('should handle mixed type comparisons', () => {
122
+ const object = { value: 42, text: '42' };
123
+ chai_1.expect(conditionHelper_1.checkCondition(object, ['value', '=', 42])).to.eq(true);
124
+ chai_1.expect(conditionHelper_1.checkCondition(object, ['text', '=', '42'])).to.eq(true);
125
+ chai_1.expect(conditionHelper_1.checkCondition(object, ['value', '!=', '42'])).to.eq(false);
126
+ });
127
+ it('should handle complex nested conditions with multiple levels', () => {
128
+ const object = {
129
+ user: {
130
+ profile: {
131
+ name: 'John',
132
+ age: 30,
133
+ tags: ['admin', 'user']
134
+ }
135
+ }
136
+ };
137
+ const condition = {
138
+ matchType: 'all',
139
+ rules: [
140
+ ['user.profile.name', '=', 'John'],
141
+ {
142
+ matchType: 'any',
143
+ rules: [
144
+ ['user.profile.age', '>', 25],
145
+ {
146
+ matchType: 'all',
147
+ rules: [
148
+ ['user.profile.tags', 'containsAllOf', ['admin']],
149
+ ['user.profile.tags', 'containsNoneOf', ['guest']]
150
+ ]
151
+ }
152
+ ]
153
+ }
154
+ ]
155
+ };
156
+ chai_1.expect(conditionHelper_1.checkCondition(object, condition)).to.eq(true);
157
+ });
158
+ it('should handle empty arrays and strings in array conditions', () => {
159
+ const object = { tags: [], name: '' };
160
+ chai_1.expect(conditionHelper_1.checkCondition(object, ['tags', 'containsAllOf', []])).to.eq(true);
161
+ chai_1.expect(conditionHelper_1.checkCondition(object, ['tags', 'containsNoneOf', []])).to.eq(true);
162
+ chai_1.expect(conditionHelper_1.checkCondition(object, ['name', 'containsAllOf', ['']])).to.eq(true);
163
+ });
164
+ it('should handle invalid predicate types gracefully', () => {
165
+ const object = { name: 'John' };
166
+ // @ts-ignore - Testing invalid predicate
167
+ chai_1.expect(conditionHelper_1.checkCondition(object, ['name', 'invalidPredicate', 'John'])).to.eq(false);
168
+ });
169
+ });
170
+ });
171
+ //# sourceMappingURL=conditionHelper.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conditionHelper.test.js","sourceRoot":"","sources":["../../../../src/helpers/conditionHelper.test.ts"],"names":[],"mappings":";;AAAA,+BAA8B;AAC9B,uDAAmD;AAInD,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QACjC,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;YAC1C,aAAM,CAAC,gCAAc,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;YAC7C,aAAM,CAAC,gCAAc,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;YAC3C,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;YACzC,aAAM,CAAC,gCAAc,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;YAClE,aAAM,CAAC,gCAAc,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;YAC7D,aAAM,CAAC,gCAAc,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;YACnE,aAAM,CAAC,gCAAc,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC7C,MAAM,MAAM,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;YACtC,aAAM,CAAC,gCAAc,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;YAC7D,aAAM,CAAC,gCAAc,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;YAC7D,aAAM,CAAC,gCAAc,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;YACzC,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC;YAC/D,aAAM,CAAC,gCAAc,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;YAC3E,aAAM,CAAC,gCAAc,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;YAC1E,aAAM,CAAC,gCAAc,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;YACxE,aAAM,CAAC,gCAAc,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,gBAAgB,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAClF,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;YACxC,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC;YACnF,aAAM,CAAC,gCAAc,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,yCAAyC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;YACvI,aAAM,CAAC,gCAAc,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,gBAAgB,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,8BAA8B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;YACnH,aAAM,CAAC,gCAAc,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,eAAe,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,2CAA2C,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;YAC5I,aAAM,CAAC,gCAAc,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,gBAAgB,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,kCAAkC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAC7H,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;YACpC,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC;YAChE,aAAM,CAAC,gCAAc,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;YACjE,aAAM,CAAC,gCAAc,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;YAChE,aAAM,CAAC,gCAAc,CAAC,MAAM,EAAE,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAC5E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;YAC3C,MAAM,MAAM,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;YACjE,aAAM,CAAC,gCAAc,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;YACnE,aAAM,CAAC,gCAAc,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;YACjE,aAAM,CAAC,gCAAc,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;YAChE,aAAM,CAAC,gCAAc,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAClC,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;YACxC,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;YACvD,MAAM,SAAS,GAAG;gBAChB,SAAS,EAAE,KAAK;gBAChB,KAAK,EAAE;oBACL,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC;oBACrB,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC;oBAChB,CAAC,QAAQ,EAAE,UAAU,CAAC;iBACvB;aACF,CAAC;YACF,aAAM,CAAC,gCAAc,CAAC,MAAM,EAAE,SAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;YACxC,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;YACzC,MAAM,SAAS,GAAG;gBAChB,SAAS,EAAE,KAAK;gBAChB,KAAK,EAAE;oBACL,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC;oBACrB,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC;oBAChB,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC;iBACtB;aACF,CAAC;YACF,aAAM,CAAC,gCAAc,CAAC,MAAM,EAAE,SAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;YACzC,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;YACzC,MAAM,SAAS,GAAG;gBAChB,SAAS,EAAE,MAAM;gBACjB,KAAK,EAAE;oBACL,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC;oBACrB,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC;iBACjB;aACF,CAAC;YACF,aAAM,CAAC,gCAAc,CAAC,MAAM,EAAE,SAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;YACjD,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC,EAAE,CAAC;YACxE,MAAM,SAAS,GAAG;gBAChB,SAAS,EAAE,KAAK;gBAChB,KAAK,EAAE;oBACL,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC;oBACrB;wBACE,SAAS,EAAE,KAAK;wBAChB,KAAK,EAAE;4BACL,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC;4BAChB,CAAC,MAAM,EAAE,eAAe,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;yBACnD;qBACF;iBACF;aACF,CAAC;YACF,aAAM,CAAC,gCAAc,CAAC,MAAM,EAAE,SAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;YACjD,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;YAC9C,aAAM,CAAC,gCAAc,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;YAChE,aAAM,CAAC,gCAAc,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;YAC3C,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;YACvD,aAAM,CAAC,gCAAc,CAAC,MAAM,EAAE,CAAC,mBAAmB,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QACjF,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;YAC1C,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;YAChC,aAAM,CAAC,gCAAc,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;YAC9D,aAAM,CAAC,gCAAc,CAAC,MAAM,EAAE,CAAC,mBAAmB,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QAClF,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;YAC9C,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YACzC,aAAM,CAAC,gCAAc,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;YAC/D,aAAM,CAAC,gCAAc,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;YAChE,aAAM,CAAC,gCAAc,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QACrE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;YACtE,MAAM,MAAM,GAAG;gBACb,IAAI,EAAE;oBACJ,OAAO,EAAE;wBACP,IAAI,EAAE,MAAM;wBACZ,GAAG,EAAE,EAAE;wBACP,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;qBACxB;iBACF;aACF,CAAC;YACF,MAAM,SAAS,GAAG;gBAChB,SAAS,EAAE,KAAK;gBAChB,KAAK,EAAE;oBACL,CAAC,mBAAmB,EAAE,GAAG,EAAE,MAAM,CAAC;oBAClC;wBACE,SAAS,EAAE,KAAK;wBAChB,KAAK,EAAE;4BACL,CAAC,kBAAkB,EAAE,GAAG,EAAE,EAAE,CAAC;4BAC7B;gCACE,SAAS,EAAE,KAAK;gCAChB,KAAK,EAAE;oCACL,CAAC,mBAAmB,EAAE,eAAe,EAAE,CAAC,OAAO,CAAC,CAAC;oCACjD,CAAC,mBAAmB,EAAE,gBAAgB,EAAE,CAAC,OAAO,CAAC,CAAC;iCACnD;6BACF;yBACF;qBACF;iBACF;aACF,CAAC;YACF,aAAM,CAAC,gCAAc,CAAC,MAAM,EAAE,SAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;YACpE,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;YACtC,aAAM,CAAC,gCAAc,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,eAAe,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;YAC1E,aAAM,CAAC,gCAAc,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,gBAAgB,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;YAC3E,aAAM,CAAC,gCAAc,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,eAAe,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAC9E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;YAC1D,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;YAChC,yCAAyC;YACzC,aAAM,CAAC,gCAAc,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,kBAAkB,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QACpF,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -11,4 +11,5 @@ export * from './remoteAction';
11
11
  export * from './pathHelper';
12
12
  export * from './iconHelper';
13
13
  export * from './i18ninstance';
14
+ export * from './conditionHelper';
14
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/helpers/index.tsx"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/helpers/index.tsx"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC"}
@@ -23,4 +23,5 @@ __exportStar(require("./remoteAction"), exports);
23
23
  __exportStar(require("./pathHelper"), exports);
24
24
  __exportStar(require("./iconHelper"), exports);
25
25
  __exportStar(require("./i18ninstance"), exports);
26
+ __exportStar(require("./conditionHelper"), exports);
26
27
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/helpers/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8DAA4C;AAC5C,qDAAmC;AACnC,8CAA4B;AAC5B,iDAA+B;AAC/B,iDAA+B;AAC/B,2CAAyB;AACzB,gDAA8B;AAC9B,gDAA8B;AAC9B,8CAA4B;AAC5B,iDAA+B;AAC/B,+CAA6B;AAC7B,+CAA6B;AAC7B,iDAA+B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/helpers/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8DAA4C;AAC5C,qDAAmC;AACnC,8CAA4B;AAC5B,iDAA+B;AAC/B,iDAA+B;AAC/B,2CAAyB;AACzB,gDAA8B;AAC9B,gDAA8B;AAC9B,8CAA4B;AAC5B,iDAA+B;AAC/B,+CAA6B;AAC7B,+CAA6B;AAC7B,iDAA+B;AAC/B,oDAAkC"}
@@ -0,0 +1,19 @@
1
+ declare type PrimitiveValue = string | number | boolean | null | undefined;
2
+ declare type PredicateForSingleAgainstArray = 'isOneOf' | 'isIn' | 'isNotOneOf' | 'isNotIn';
3
+ declare type PredicateForArrayAgainstArray = 'containsSomeOf' | 'containsNoneOf' | 'containsAllOf';
4
+ declare type PredicateForUnary = 'isEmpty' | 'isNotEmpty' | 'isTruthy' | 'isFalsy';
5
+ declare type PredicateForStringAgainstString = 'startsWith' | 'endsWith' | 'contains' | 'doesNotContain';
6
+ declare type PredicateForNumberRange = 'isBetween' | 'isNotBetween';
7
+ declare type PredicateForAnyAgainstAny = '=' | 'isEqualTo' | '!=' | 'isNotEqualTo' | '<' | 'isLessThan' | '>' | 'isGreaterThan' | '>=' | 'isGreaterThanOrEqualTo' | '<=' | 'isLessThanOrEqualTo';
8
+ declare type Predicate = PredicateForSingleAgainstArray | PredicateForArrayAgainstArray | PredicateForUnary | PredicateForStringAgainstString | PredicateForNumberRange | PredicateForAnyAgainstAny;
9
+ declare type CompareValueForPredicate<T = Predicate> = T extends PredicateForSingleAgainstArray ? PrimitiveValue[] : T extends PredicateForArrayAgainstArray ? PrimitiveValue[] : T extends PredicateForUnary ? void : T extends PredicateForStringAgainstString ? string : T extends PredicateForNumberRange ? [number, number] : T extends PredicateForAnyAgainstAny ? PrimitiveValue : never;
10
+ declare type SimpleCondition<T = Predicate> = T extends PredicateForSingleAgainstArray ? [string, T, CompareValueForPredicate<T>] : T extends PredicateForArrayAgainstArray ? [string, T, CompareValueForPredicate<T>] : T extends PredicateForUnary ? [string, T] : T extends PredicateForStringAgainstString ? [string, T, CompareValueForPredicate<T>] : T extends PredicateForAnyAgainstAny ? [string, T, CompareValueForPredicate<T>] : never;
11
+ declare type ConditionMatchType = 'all' | 'none' | 'any';
12
+ interface ComplexCondition {
13
+ matchType: ConditionMatchType;
14
+ rules: Condition[];
15
+ }
16
+ export declare type Condition<T = Predicate> = SimpleCondition<T> | ComplexCondition | boolean;
17
+ export declare function checkCondition(object: any, condition: Condition, defaultValue?: boolean): boolean;
18
+ export {};
19
+ //# sourceMappingURL=conditionHelper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conditionHelper.d.ts","sourceRoot":"","sources":["../../../../src/helpers/conditionHelper.ts"],"names":[],"mappings":"AAEA,aAAK,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;AAEnE,aAAK,8BAA8B,GAAG,SAAS,GAAC,MAAM,GAAC,YAAY,GAAC,SAAS,CAAC;AAC9E,aAAK,6BAA6B,GAAI,gBAAgB,GAAC,gBAAgB,GAAC,eAAe,CAAC;AACxF,aAAK,iBAAiB,GAAG,SAAS,GAAC,YAAY,GAAC,UAAU,GAAC,SAAS,CAAC;AACrE,aAAK,+BAA+B,GAAG,YAAY,GAAC,UAAU,GAAC,UAAU,GAAC,gBAAgB,CAAC;AAC3F,aAAK,uBAAuB,GAAG,WAAW,GAAC,cAAc,CAAC;AAC1D,aAAK,yBAAyB,GAAG,GAAG,GAAC,WAAW,GAAC,IAAI,GAAC,cAAc,GAAC,GAAG,GAAC,YAAY,GAAC,GAAG,GAAC,eAAe,GAAC,IAAI,GAAC,wBAAwB,GAAC,IAAI,GAAC,qBAAqB,CAAC;AACnK,aAAK,SAAS,GAAG,8BAA8B,GAAG,6BAA6B,GAAG,iBAAiB,GAAG,+BAA+B,GAAG,uBAAuB,GAAG,yBAAyB,CAAC;AAE5L,aAAK,wBAAwB,CAAC,CAAC,GAAG,SAAS,IAAI,CAAC,SAAS,8BAA8B,GAAG,cAAc,EAAE,GACtG,CAAC,SAAS,6BAA6B,GAAG,cAAc,EAAE,GAC1D,CAAC,SAAS,iBAAiB,GAAG,IAAI,GAClC,CAAC,SAAS,+BAA+B,GAAG,MAAM,GAClD,CAAC,SAAS,uBAAuB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GACpD,CAAC,SAAS,yBAAyB,GAAG,cAAc,GAAG,KAAK,CAAC;AASjE,aAAK,eAAe,CAAC,CAAC,GAAG,SAAS,IAAK,CAAC,SAAS,8BAA8B,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,wBAAwB,CAAC,CAAC,CAAC,CAAC,GACtH,CAAC,SAAS,6BAA6B,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,wBAAwB,CAAC,CAAC,CAAC,CAAC,GAClF,CAAC,SAAS,iBAAiB,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,GACzC,CAAC,SAAS,+BAA+B,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,wBAAwB,CAAC,CAAC,CAAC,CAAC,GACpF,CAAC,SAAS,yBAAyB,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,wBAAwB,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;AAS3F,aAAK,kBAAkB,GAAG,KAAK,GAAC,MAAM,GAAC,KAAK,CAAC;AAE7C,UAAU,gBAAgB;IACtB,SAAS,EAAE,kBAAkB,CAAC;IAC9B,KAAK,EAAE,SAAS,EAAE,CAAC;CACtB;AAED,oBAAY,SAAS,CAAC,CAAC,GAAG,SAAS,IAAI,eAAe,CAAC,CAAC,CAAC,GAAG,gBAAgB,GAAG,OAAO,CAAC;AAEvF,wBAAgB,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,GAAE,OAAe,GAAG,OAAO,CAexG"}
@@ -0,0 +1,91 @@
1
+ import { endsWith, every, includes, isEmpty, some, toPath } from 'lodash';
2
+ export function checkCondition(object, condition, defaultValue = false) {
3
+ if (typeof condition === 'boolean')
4
+ return condition;
5
+ // as we already checked for boolean, we can safely return defaultValue if condition is falsy
6
+ if (!condition)
7
+ return defaultValue;
8
+ if (Array.isArray(condition))
9
+ return _checkCondition(object, condition);
10
+ switch (condition.matchType) {
11
+ case 'none':
12
+ return !some(condition.rules, condition => checkCondition(object, condition));
13
+ case 'any':
14
+ return some(condition.rules, condition => checkCondition(object, condition));
15
+ case 'all':
16
+ default:
17
+ return every(condition.rules, condition => checkCondition(object, condition));
18
+ }
19
+ }
20
+ function checkConditionWithSingleValue([currentValue, predicate, comparAgainstValue]) {
21
+ switch (predicate) {
22
+ case '=':
23
+ case 'isEqualTo':
24
+ return currentValue == comparAgainstValue;
25
+ case '!=':
26
+ case 'isNotEqualTo':
27
+ return currentValue != comparAgainstValue;
28
+ case '>':
29
+ case 'isGreaterThan':
30
+ return currentValue > comparAgainstValue;
31
+ case '<':
32
+ case 'isLessThan':
33
+ return currentValue < comparAgainstValue;
34
+ case '>=':
35
+ case 'isGreaterThanOrEqualTo':
36
+ return currentValue >= comparAgainstValue;
37
+ case '<=':
38
+ case 'isLessThanOrEqualTo':
39
+ return currentValue <= comparAgainstValue;
40
+ case 'isBetween':
41
+ return currentValue >= comparAgainstValue?.[0] && currentValue <= comparAgainstValue?.[1];
42
+ case 'isNotBetween':
43
+ return currentValue < comparAgainstValue?.[0] || currentValue > comparAgainstValue?.[1];
44
+ case 'startsWith':
45
+ return typeof currentValue === 'string' && currentValue?.startsWith?.(comparAgainstValue);
46
+ case 'endsWith':
47
+ return typeof currentValue === 'string' && endsWith(currentValue, comparAgainstValue);
48
+ case 'contains':
49
+ return typeof currentValue === 'string' && includes(currentValue, comparAgainstValue);
50
+ case 'doesNotContain':
51
+ return typeof currentValue === 'string' && !includes(currentValue, comparAgainstValue);
52
+ case 'containsSomeOf':
53
+ return Array.isArray(comparAgainstValue) && comparAgainstValue.some((item) => includes(currentValue, item));
54
+ case 'containsNoneOf':
55
+ return Array.isArray(comparAgainstValue) && !comparAgainstValue.some((item) => includes(currentValue, item));
56
+ case 'containsAllOf':
57
+ return Array.isArray(comparAgainstValue) && comparAgainstValue.every((item) => includes(currentValue, item));
58
+ case 'isOneOf':
59
+ case 'isIn':
60
+ return Array.isArray(comparAgainstValue) && includes(comparAgainstValue, currentValue);
61
+ case 'isNotOneOf':
62
+ case 'isNotIn':
63
+ return Array.isArray(comparAgainstValue) && !includes(comparAgainstValue, currentValue);
64
+ case 'isEmpty':
65
+ return isEmpty(currentValue);
66
+ case 'isNotEmpty':
67
+ return !isEmpty(currentValue);
68
+ case 'isTruthy':
69
+ return !!currentValue;
70
+ case 'isFalsy':
71
+ return !currentValue;
72
+ default:
73
+ return false;
74
+ }
75
+ }
76
+ const valueAccessors = {};
77
+ function getValueAccessor(path) {
78
+ let accessor = valueAccessors[path];
79
+ if (accessor)
80
+ return accessor;
81
+ const keys = toPath(path);
82
+ accessor = new Function('object', `return object?.${keys.map(key => `['${key}']`).join('?.')}`);
83
+ valueAccessors[path] = accessor;
84
+ return accessor;
85
+ }
86
+ function _checkCondition(object, condition) {
87
+ const [key, predicate, value] = condition;
88
+ const currentValue = getValueAccessor(key)(object);
89
+ return checkConditionWithSingleValue([currentValue, predicate, value]);
90
+ }
91
+ //# sourceMappingURL=conditionHelper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conditionHelper.js","sourceRoot":"","sources":["../../../../src/helpers/conditionHelper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=conditionHelper.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conditionHelper.test.d.ts","sourceRoot":"","sources":["../../../../src/helpers/conditionHelper.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,169 @@
1
+ import { expect } from 'chai';
2
+ import { checkCondition } from './conditionHelper';
3
+ describe('conditionHelper', () => {
4
+ describe('Simple Conditions', () => {
5
+ it('should handle boolean conditions', () => {
6
+ expect(checkCondition({}, true)).to.eq(true);
7
+ expect(checkCondition({}, false)).to.eq(false);
8
+ });
9
+ it('should handle equality conditions', () => {
10
+ const object = { name: 'John', age: 30 };
11
+ expect(checkCondition(object, ['name', '=', 'John'])).to.eq(true);
12
+ expect(checkCondition(object, ['age', '=', 30])).to.eq(true);
13
+ expect(checkCondition(object, ['name', '!=', 'Jane'])).to.eq(true);
14
+ expect(checkCondition(object, ['age', '!=', 25])).to.eq(true);
15
+ });
16
+ it('should handle comparison conditions', () => {
17
+ const object = { age: 30, score: 85 };
18
+ expect(checkCondition(object, ['age', '>', 25])).to.eq(true);
19
+ expect(checkCondition(object, ['age', '<', 35])).to.eq(true);
20
+ expect(checkCondition(object, ['score', '>', 80])).to.eq(true);
21
+ });
22
+ it('should handle string conditions', () => {
23
+ const object = { name: 'John Doe', email: 'john@example.com' };
24
+ expect(checkCondition(object, ['name', 'startsWith', 'John'])).to.eq(true);
25
+ expect(checkCondition(object, ['email', 'endsWith', '.com'])).to.eq(true);
26
+ expect(checkCondition(object, ['name', 'contains', 'Doe'])).to.eq(true);
27
+ expect(checkCondition(object, ['name', 'doesNotContain', 'Smith'])).to.eq(true);
28
+ });
29
+ it('should handle array conditions', () => {
30
+ const object = { tags: ['react', 'typescript', 'node'], roles: ['admin', 'user'] };
31
+ expect(checkCondition(object, ['tags', 'containsSomeOf', ['react', 'angular']]), 'tags contains some of react and angular').to.eq(true);
32
+ expect(checkCondition(object, ['roles', 'containsNoneOf', ['guest']]), 'roles contains none of guest').to.eq(true);
33
+ expect(checkCondition(object, ['tags', 'containsAllOf', ['react', 'typescript']]), 'tags contains all of react and typescript').to.eq(true);
34
+ expect(checkCondition(object, ['roles', 'containsNoneOf', ['superuser']]), 'roles contains none of superuser').to.eq(true);
35
+ });
36
+ it('should handle empty checks', () => {
37
+ const object = { name: '', tags: [], description: 'Some text' };
38
+ expect(checkCondition(object, ['name', 'isEmpty',])).to.eq(true);
39
+ expect(checkCondition(object, ['tags', 'isEmpty'])).to.eq(true);
40
+ expect(checkCondition(object, ['description', 'isNotEmpty'])).to.eq(true);
41
+ });
42
+ it('should handle truthy/falsy checks', () => {
43
+ const object = { active: true, count: 0, name: '', value: null };
44
+ expect(checkCondition(object, ['active', 'isTruthy'])).to.eq(true);
45
+ expect(checkCondition(object, ['count', 'isFalsy'])).to.eq(true);
46
+ expect(checkCondition(object, ['name', 'isFalsy'])).to.eq(true);
47
+ expect(checkCondition(object, ['value', 'isFalsy'])).to.eq(true);
48
+ });
49
+ });
50
+ describe('Complex Conditions', () => {
51
+ it('should handle "all" match type', () => {
52
+ const object = { name: 'John', age: 30, active: true };
53
+ const condition = {
54
+ matchType: 'all',
55
+ rules: [
56
+ ['name', '=', 'John'],
57
+ ['age', '>', 25],
58
+ ['active', 'isTruthy']
59
+ ]
60
+ };
61
+ expect(checkCondition(object, condition)).to.eq(true);
62
+ });
63
+ it('should handle "any" match type', () => {
64
+ const object = { name: 'John', age: 20 };
65
+ const condition = {
66
+ matchType: 'any',
67
+ rules: [
68
+ ['name', '=', 'Jane'],
69
+ ['age', '>', 25],
70
+ ['name', '=', 'John']
71
+ ]
72
+ };
73
+ expect(checkCondition(object, condition)).to.eq(true);
74
+ });
75
+ it('should handle "none" match type', () => {
76
+ const object = { name: 'John', age: 20 };
77
+ const condition = {
78
+ matchType: 'none',
79
+ rules: [
80
+ ['name', '=', 'Jane'],
81
+ ['age', '>', 25]
82
+ ]
83
+ };
84
+ expect(checkCondition(object, condition)).to.eq(true);
85
+ });
86
+ it('should handle nested complex conditions', () => {
87
+ const object = { name: 'John', age: 30, tags: ['react', 'typescript'] };
88
+ const condition = {
89
+ matchType: 'all',
90
+ rules: [
91
+ ['name', '=', 'John'],
92
+ {
93
+ matchType: 'any',
94
+ rules: [
95
+ ['age', '>', 35],
96
+ ['tags', 'containsAllOf', ['react', 'typescript']]
97
+ ]
98
+ }
99
+ ]
100
+ };
101
+ expect(checkCondition(object, condition)).to.eq(true);
102
+ });
103
+ });
104
+ describe('Edge Cases', () => {
105
+ it('should handle undefined and null values', () => {
106
+ const object = { name: undefined, age: null };
107
+ expect(checkCondition(object, ['name', 'isFalsy'])).to.eq(true);
108
+ expect(checkCondition(object, ['age', 'isFalsy'])).to.eq(true);
109
+ });
110
+ it('should handle nested object paths', () => {
111
+ const object = { user: { profile: { name: 'John' } } };
112
+ expect(checkCondition(object, ['user.profile.name', '=', 'John'])).to.eq(true);
113
+ });
114
+ it('should handle non-existent paths', () => {
115
+ const object = { name: 'John' };
116
+ expect(checkCondition(object, ['age', '=', 30])).to.eq(false);
117
+ expect(checkCondition(object, ['user.profile.name', '=', 'John'])).to.eq(false);
118
+ });
119
+ it('should handle mixed type comparisons', () => {
120
+ const object = { value: 42, text: '42' };
121
+ expect(checkCondition(object, ['value', '=', 42])).to.eq(true);
122
+ expect(checkCondition(object, ['text', '=', '42'])).to.eq(true);
123
+ expect(checkCondition(object, ['value', '!=', '42'])).to.eq(false);
124
+ });
125
+ it('should handle complex nested conditions with multiple levels', () => {
126
+ const object = {
127
+ user: {
128
+ profile: {
129
+ name: 'John',
130
+ age: 30,
131
+ tags: ['admin', 'user']
132
+ }
133
+ }
134
+ };
135
+ const condition = {
136
+ matchType: 'all',
137
+ rules: [
138
+ ['user.profile.name', '=', 'John'],
139
+ {
140
+ matchType: 'any',
141
+ rules: [
142
+ ['user.profile.age', '>', 25],
143
+ {
144
+ matchType: 'all',
145
+ rules: [
146
+ ['user.profile.tags', 'containsAllOf', ['admin']],
147
+ ['user.profile.tags', 'containsNoneOf', ['guest']]
148
+ ]
149
+ }
150
+ ]
151
+ }
152
+ ]
153
+ };
154
+ expect(checkCondition(object, condition)).to.eq(true);
155
+ });
156
+ it('should handle empty arrays and strings in array conditions', () => {
157
+ const object = { tags: [], name: '' };
158
+ expect(checkCondition(object, ['tags', 'containsAllOf', []])).to.eq(true);
159
+ expect(checkCondition(object, ['tags', 'containsNoneOf', []])).to.eq(true);
160
+ expect(checkCondition(object, ['name', 'containsAllOf', ['']])).to.eq(true);
161
+ });
162
+ it('should handle invalid predicate types gracefully', () => {
163
+ const object = { name: 'John' };
164
+ // @ts-ignore - Testing invalid predicate
165
+ expect(checkCondition(object, ['name', 'invalidPredicate', 'John'])).to.eq(false);
166
+ });
167
+ });
168
+ });
169
+ //# sourceMappingURL=conditionHelper.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conditionHelper.test.js","sourceRoot":"","sources":["../../../../src/helpers/conditionHelper.test.ts"],"names":[],"mappings":"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"}
@@ -11,4 +11,5 @@ export * from './remoteAction';
11
11
  export * from './pathHelper';
12
12
  export * from './iconHelper';
13
13
  export * from './i18ninstance';
14
+ export * from './conditionHelper';
14
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/helpers/index.tsx"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/helpers/index.tsx"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC"}
@@ -11,4 +11,5 @@ export * from './remoteAction';
11
11
  export * from './pathHelper';
12
12
  export * from './iconHelper';
13
13
  export * from './i18ninstance';
14
+ export * from './conditionHelper';
14
15
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/helpers/index.tsx"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/helpers/index.tsx"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,19 @@
1
+ declare type PrimitiveValue = string | number | boolean | null | undefined;
2
+ declare type PredicateForSingleAgainstArray = 'isOneOf' | 'isIn' | 'isNotOneOf' | 'isNotIn';
3
+ declare type PredicateForArrayAgainstArray = 'containsSomeOf' | 'containsNoneOf' | 'containsAllOf';
4
+ declare type PredicateForUnary = 'isEmpty' | 'isNotEmpty' | 'isTruthy' | 'isFalsy';
5
+ declare type PredicateForStringAgainstString = 'startsWith' | 'endsWith' | 'contains' | 'doesNotContain';
6
+ declare type PredicateForNumberRange = 'isBetween' | 'isNotBetween';
7
+ declare type PredicateForAnyAgainstAny = '=' | 'isEqualTo' | '!=' | 'isNotEqualTo' | '<' | 'isLessThan' | '>' | 'isGreaterThan' | '>=' | 'isGreaterThanOrEqualTo' | '<=' | 'isLessThanOrEqualTo';
8
+ declare type Predicate = PredicateForSingleAgainstArray | PredicateForArrayAgainstArray | PredicateForUnary | PredicateForStringAgainstString | PredicateForNumberRange | PredicateForAnyAgainstAny;
9
+ declare type CompareValueForPredicate<T = Predicate> = T extends PredicateForSingleAgainstArray ? PrimitiveValue[] : T extends PredicateForArrayAgainstArray ? PrimitiveValue[] : T extends PredicateForUnary ? void : T extends PredicateForStringAgainstString ? string : T extends PredicateForNumberRange ? [number, number] : T extends PredicateForAnyAgainstAny ? PrimitiveValue : never;
10
+ declare type SimpleCondition<T = Predicate> = T extends PredicateForSingleAgainstArray ? [string, T, CompareValueForPredicate<T>] : T extends PredicateForArrayAgainstArray ? [string, T, CompareValueForPredicate<T>] : T extends PredicateForUnary ? [string, T] : T extends PredicateForStringAgainstString ? [string, T, CompareValueForPredicate<T>] : T extends PredicateForAnyAgainstAny ? [string, T, CompareValueForPredicate<T>] : never;
11
+ declare type ConditionMatchType = 'all' | 'none' | 'any';
12
+ interface ComplexCondition {
13
+ matchType: ConditionMatchType;
14
+ rules: Condition[];
15
+ }
16
+ export declare type Condition<T = Predicate> = SimpleCondition<T> | ComplexCondition | boolean;
17
+ export declare function checkCondition(object: any, condition: Condition, defaultValue?: boolean): boolean;
18
+ export {};
19
+ //# sourceMappingURL=conditionHelper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conditionHelper.d.ts","sourceRoot":"","sources":["../../../../src/helpers/conditionHelper.ts"],"names":[],"mappings":"AAEA,aAAK,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;AAEnE,aAAK,8BAA8B,GAAG,SAAS,GAAC,MAAM,GAAC,YAAY,GAAC,SAAS,CAAC;AAC9E,aAAK,6BAA6B,GAAI,gBAAgB,GAAC,gBAAgB,GAAC,eAAe,CAAC;AACxF,aAAK,iBAAiB,GAAG,SAAS,GAAC,YAAY,GAAC,UAAU,GAAC,SAAS,CAAC;AACrE,aAAK,+BAA+B,GAAG,YAAY,GAAC,UAAU,GAAC,UAAU,GAAC,gBAAgB,CAAC;AAC3F,aAAK,uBAAuB,GAAG,WAAW,GAAC,cAAc,CAAC;AAC1D,aAAK,yBAAyB,GAAG,GAAG,GAAC,WAAW,GAAC,IAAI,GAAC,cAAc,GAAC,GAAG,GAAC,YAAY,GAAC,GAAG,GAAC,eAAe,GAAC,IAAI,GAAC,wBAAwB,GAAC,IAAI,GAAC,qBAAqB,CAAC;AACnK,aAAK,SAAS,GAAG,8BAA8B,GAAG,6BAA6B,GAAG,iBAAiB,GAAG,+BAA+B,GAAG,uBAAuB,GAAG,yBAAyB,CAAC;AAE5L,aAAK,wBAAwB,CAAC,CAAC,GAAG,SAAS,IAAI,CAAC,SAAS,8BAA8B,GAAG,cAAc,EAAE,GACtG,CAAC,SAAS,6BAA6B,GAAG,cAAc,EAAE,GAC1D,CAAC,SAAS,iBAAiB,GAAG,IAAI,GAClC,CAAC,SAAS,+BAA+B,GAAG,MAAM,GAClD,CAAC,SAAS,uBAAuB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GACpD,CAAC,SAAS,yBAAyB,GAAG,cAAc,GAAG,KAAK,CAAC;AASjE,aAAK,eAAe,CAAC,CAAC,GAAG,SAAS,IAAK,CAAC,SAAS,8BAA8B,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,wBAAwB,CAAC,CAAC,CAAC,CAAC,GACtH,CAAC,SAAS,6BAA6B,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,wBAAwB,CAAC,CAAC,CAAC,CAAC,GAClF,CAAC,SAAS,iBAAiB,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,GACzC,CAAC,SAAS,+BAA+B,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,wBAAwB,CAAC,CAAC,CAAC,CAAC,GACpF,CAAC,SAAS,yBAAyB,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,wBAAwB,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;AAS3F,aAAK,kBAAkB,GAAG,KAAK,GAAC,MAAM,GAAC,KAAK,CAAC;AAE7C,UAAU,gBAAgB;IACtB,SAAS,EAAE,kBAAkB,CAAC;IAC9B,KAAK,EAAE,SAAS,EAAE,CAAC;CACtB;AAED,oBAAY,SAAS,CAAC,CAAC,GAAG,SAAS,IAAI,eAAe,CAAC,CAAC,CAAC,GAAG,gBAAgB,GAAG,OAAO,CAAC;AAEvF,wBAAgB,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,GAAE,OAAe,GAAG,OAAO,CAexG"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=conditionHelper.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conditionHelper.test.d.ts","sourceRoot":"","sources":["../../../../src/helpers/conditionHelper.test.ts"],"names":[],"mappings":""}
@@ -11,4 +11,5 @@ export * from './remoteAction';
11
11
  export * from './pathHelper';
12
12
  export * from './iconHelper';
13
13
  export * from './i18ninstance';
14
+ export * from './conditionHelper';
14
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/helpers/index.tsx"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/helpers/index.tsx"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@evlop/commons",
3
- "version": "1.0.304",
3
+ "version": "1.0.305",
4
4
  "description": "",
5
5
  "main": "dist/cjs/main.js",
6
6
  "module": "dist/esm/main.js",