@legalplace/lplogic 2.0.3 → 2.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/LpLogic.d.ts +1 -2
- package/dist/LpLogic.js +158 -127
- package/package.json +2 -2
- package/yarn.lock +4 -4
package/dist/LpLogic.d.ts
CHANGED
package/dist/LpLogic.js
CHANGED
|
@@ -4,163 +4,194 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
var json_logic_js_1 = __importDefault(require("@legalplace/json-logic-js"));
|
|
7
|
+
var reduceParents = function (parents, length) {
|
|
8
|
+
var reducedParents = [];
|
|
9
|
+
parents.sort(function (a, b) { return b.length - a.length; });
|
|
10
|
+
var _loop_1 = function (index) {
|
|
11
|
+
var currentIndexResult = parents.reduce(function (previousValue, currentValue) {
|
|
12
|
+
if (currentValue.length === 1)
|
|
13
|
+
return previousValue && currentValue[0];
|
|
14
|
+
if (currentValue[index] === undefined)
|
|
15
|
+
return false;
|
|
16
|
+
return previousValue && currentValue[index];
|
|
17
|
+
}, true);
|
|
18
|
+
reducedParents[index] = currentIndexResult;
|
|
19
|
+
};
|
|
20
|
+
for (var index = 0; index < length; index += 1) {
|
|
21
|
+
_loop_1(index);
|
|
22
|
+
}
|
|
23
|
+
return reducedParents;
|
|
24
|
+
};
|
|
25
|
+
var reduceValues = function (values, parents, compareFunction) {
|
|
26
|
+
if (parents === undefined || parents.length === 0) {
|
|
27
|
+
return values.map(function (currentValue) {
|
|
28
|
+
return compareFunction(currentValue, true);
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
var reducedParents = reduceParents(parents, values.length);
|
|
32
|
+
return values.map(function (currentValue, index) {
|
|
33
|
+
return compareFunction(currentValue, reducedParents[index]);
|
|
34
|
+
});
|
|
35
|
+
};
|
|
7
36
|
var safeEqual = function (value, comparator) {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
}
|
|
12
|
-
return false;
|
|
13
|
-
}
|
|
14
|
-
if (!isNaN(value)) {
|
|
15
|
-
return false;
|
|
16
|
-
}
|
|
17
|
-
return value === comparator;
|
|
37
|
+
var parsedValue = typeof value === "number" ? value : parseFloat(value);
|
|
38
|
+
var parsedComparator = typeof comparator === "number" ? comparator : parseFloat(comparator);
|
|
39
|
+
return parsedValue === parsedComparator;
|
|
18
40
|
};
|
|
19
|
-
json_logic_js_1.default.add_operation("=", function (
|
|
20
|
-
|
|
21
|
-
return safeEqual(value, comparator);
|
|
22
|
-
}
|
|
23
|
-
var filter =
|
|
24
|
-
return
|
|
41
|
+
json_logic_js_1.default.add_operation("=", function (values, comparator, parents) {
|
|
42
|
+
var reducedValues = reduceValues(values, parents, function (value, parent) {
|
|
43
|
+
return safeEqual(value, comparator) && parent;
|
|
44
|
+
});
|
|
45
|
+
var filter = reducedValues.filter(function (_value) { return _value === true; });
|
|
46
|
+
return reducedValues.length === filter.length;
|
|
25
47
|
});
|
|
26
|
-
json_logic_js_1.default.add_operation("<>", function (
|
|
27
|
-
|
|
28
|
-
return !safeEqual(value, comparator);
|
|
29
|
-
}
|
|
30
|
-
var filter =
|
|
31
|
-
return
|
|
48
|
+
json_logic_js_1.default.add_operation("<>", function (values, comparator, parents) {
|
|
49
|
+
var reducedValues = reduceValues(values, parents, function (value, parent) {
|
|
50
|
+
return !safeEqual(value, comparator) && parent;
|
|
51
|
+
});
|
|
52
|
+
var filter = reducedValues.filter(function (_value) { return _value === true; });
|
|
53
|
+
return reducedValues.length === filter.length;
|
|
32
54
|
});
|
|
33
|
-
json_logic_js_1.default.add_operation("==", function (
|
|
34
|
-
|
|
35
|
-
return value === comparator;
|
|
36
|
-
}
|
|
37
|
-
var filter =
|
|
38
|
-
return
|
|
55
|
+
json_logic_js_1.default.add_operation("==", function (values, comparator, parents) {
|
|
56
|
+
var reducedValues = reduceValues(values, parents, function (value, parent) {
|
|
57
|
+
return value === comparator && parent;
|
|
58
|
+
});
|
|
59
|
+
var filter = reducedValues.filter(function (_value) { return _value === true; });
|
|
60
|
+
return reducedValues.length === filter.length;
|
|
39
61
|
});
|
|
40
|
-
json_logic_js_1.default.add_operation(">=", function (
|
|
41
|
-
var
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
return value.length === filter.length;
|
|
62
|
+
json_logic_js_1.default.add_operation(">=", function (values, comparator, parents) {
|
|
63
|
+
var reducedValues = reduceValues(values, parents, function (value, parent) {
|
|
64
|
+
return value >= comparator && parent;
|
|
65
|
+
});
|
|
66
|
+
var filter = reducedValues.filter(function (_value) { return _value === true; });
|
|
67
|
+
return reducedValues.length === filter.length;
|
|
47
68
|
});
|
|
48
|
-
json_logic_js_1.default.add_operation("<=", function (
|
|
49
|
-
var
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
return value.length === filter.length;
|
|
69
|
+
json_logic_js_1.default.add_operation("<=", function (values, comparator, parents) {
|
|
70
|
+
var reducedValues = reduceValues(values, parents, function (value, parent) {
|
|
71
|
+
return value <= comparator && parent;
|
|
72
|
+
});
|
|
73
|
+
var filter = reducedValues.filter(function (_value) { return _value === true; });
|
|
74
|
+
return reducedValues.length === filter.length;
|
|
55
75
|
});
|
|
56
|
-
json_logic_js_1.default.add_operation(">", function (
|
|
57
|
-
var
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
return value.length === filter.length;
|
|
76
|
+
json_logic_js_1.default.add_operation(">", function (values, comparator, parents) {
|
|
77
|
+
var reducedValues = reduceValues(values, parents, function (value, parent) {
|
|
78
|
+
return value > comparator && parent;
|
|
79
|
+
});
|
|
80
|
+
var filter = reducedValues.filter(function (_value) { return _value === true; });
|
|
81
|
+
return reducedValues.length === filter.length;
|
|
63
82
|
});
|
|
64
|
-
json_logic_js_1.default.add_operation("<", function (
|
|
65
|
-
var
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
return value.length === filter.length;
|
|
83
|
+
json_logic_js_1.default.add_operation("<", function (values, comparator, parents) {
|
|
84
|
+
var reducedValues = reduceValues(values, parents, function (value, parent) {
|
|
85
|
+
return value < comparator && parent;
|
|
86
|
+
});
|
|
87
|
+
var filter = reducedValues.filter(function (_value) { return _value === true; });
|
|
88
|
+
return reducedValues.length === filter.length;
|
|
71
89
|
});
|
|
72
|
-
json_logic_js_1.default.add_operation("selected", function (
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
var filter = value.filter(function (_value) { return _value === true; });
|
|
77
|
-
return value.length === filter.length;
|
|
90
|
+
json_logic_js_1.default.add_operation("selected", function (values, comparator, parents) {
|
|
91
|
+
var reducedValue = reduceValues(values, parents, function (value, parent) { return value && parent; });
|
|
92
|
+
var filter = reducedValue.filter(function (_value) { return _value === true; });
|
|
93
|
+
return reducedValue.length === filter.length;
|
|
78
94
|
});
|
|
79
|
-
json_logic_js_1.default.add_operation("not-selected", function (
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
var filter = value.filter(function (_value) { return _value !== true; });
|
|
84
|
-
return value.length === filter.length;
|
|
95
|
+
json_logic_js_1.default.add_operation("not-selected", function (values, comparator, parents) {
|
|
96
|
+
var reducedValue = reduceValues(values, parents, function (value, parent) { return value && parent; });
|
|
97
|
+
var filter = reducedValue.filter(function (_value) { return _value !== true; });
|
|
98
|
+
return reducedValue.length === filter.length;
|
|
85
99
|
});
|
|
86
|
-
json_logic_js_1.default.add_operation("has-one", function (
|
|
87
|
-
|
|
100
|
+
json_logic_js_1.default.add_operation("has-one", function (values, comparator, parents) {
|
|
101
|
+
var reducedValue = reduceValues(values, parents, function (value, parent) { return value && parent; });
|
|
102
|
+
if (!Array.isArray(reducedValue))
|
|
88
103
|
return true;
|
|
89
|
-
return
|
|
104
|
+
return reducedValue.length === 1;
|
|
90
105
|
});
|
|
91
|
-
json_logic_js_1.default.add_operation("at-least-one", function (
|
|
92
|
-
|
|
106
|
+
json_logic_js_1.default.add_operation("at-least-one", function (values, comparator, parents) {
|
|
107
|
+
var reducedValue = reduceValues(values, parents, function (value, parent) { return value && parent; });
|
|
108
|
+
if (!Array.isArray(reducedValue))
|
|
93
109
|
return false;
|
|
94
|
-
return
|
|
110
|
+
return reducedValue.includes(true);
|
|
95
111
|
});
|
|
96
|
-
json_logic_js_1.default.add_operation("has-many", function (
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
112
|
+
json_logic_js_1.default.add_operation("has-many", function (values, comparator, parents) {
|
|
113
|
+
var reducedValue = reduceValues(values, parents, function (value, parent) { return value && parent; });
|
|
114
|
+
if (!Array.isArray(reducedValue))
|
|
115
|
+
return true;
|
|
116
|
+
return reducedValue.length > 1;
|
|
100
117
|
});
|
|
101
|
-
var is = function (
|
|
102
|
-
|
|
103
|
-
var cleanValue = (typeof value === "number"
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
118
|
+
var is = function (values, comparator, parents) {
|
|
119
|
+
var reducedValues = reduceValues(values, parents, function (value, parent) {
|
|
120
|
+
var cleanValue = (typeof value === "number"
|
|
121
|
+
? value.toString()
|
|
122
|
+
: value).toLowerCase();
|
|
123
|
+
var cleanComparator = (typeof comparator === "number"
|
|
124
|
+
? comparator.toString()
|
|
125
|
+
: comparator).toLowerCase();
|
|
126
|
+
return cleanValue === cleanComparator && parent;
|
|
127
|
+
});
|
|
128
|
+
var filter = reducedValues.filter(function (_value) { return _value === true; });
|
|
129
|
+
return reducedValues.length === filter.length;
|
|
109
130
|
};
|
|
110
131
|
json_logic_js_1.default.add_operation("is", is);
|
|
111
132
|
json_logic_js_1.default.add_operation("contains", is);
|
|
112
|
-
var not = function (
|
|
113
|
-
|
|
114
|
-
var cleanValue = (typeof value === "number"
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
133
|
+
var not = function (values, comparator, parents) {
|
|
134
|
+
var reducedValues = reduceValues(values, parents, function (value, parent) {
|
|
135
|
+
var cleanValue = (typeof value === "number"
|
|
136
|
+
? value.toString()
|
|
137
|
+
: value).toLowerCase();
|
|
138
|
+
var cleanComparator = (typeof comparator === "number"
|
|
139
|
+
? comparator.toString()
|
|
140
|
+
: comparator).toLowerCase();
|
|
141
|
+
return cleanValue !== cleanComparator && parent;
|
|
142
|
+
});
|
|
143
|
+
var filter = reducedValues.filter(function (_value) { return _value === true; });
|
|
144
|
+
return reducedValues.length === filter.length;
|
|
120
145
|
};
|
|
121
146
|
json_logic_js_1.default.add_operation("not", not);
|
|
122
147
|
json_logic_js_1.default.add_operation("does-not-contain", not);
|
|
123
|
-
json_logic_js_1.default.add_operation("empty", function (
|
|
124
|
-
|
|
148
|
+
json_logic_js_1.default.add_operation("empty", function (values, comparator, parents) {
|
|
149
|
+
var reducedValues = reduceValues(values, parents, function (value, parent) {
|
|
125
150
|
var stringValue = typeof value === "number" ? value.toString() : value;
|
|
126
|
-
return stringValue.trim().length === 0;
|
|
127
|
-
}
|
|
128
|
-
var filter = value.filter(function (_value) {
|
|
129
|
-
var stringValue = typeof _value === "number" ? _value.toString() : _value;
|
|
130
|
-
return stringValue.trim().length === 0;
|
|
151
|
+
return stringValue.trim().length === 0 && parent;
|
|
131
152
|
});
|
|
132
|
-
|
|
153
|
+
var filter = reducedValues.filter(function (_value) { return _value === true; });
|
|
154
|
+
return reducedValues.length === filter.length;
|
|
133
155
|
});
|
|
134
|
-
json_logic_js_1.default.add_operation("not-empty", function (
|
|
135
|
-
|
|
156
|
+
json_logic_js_1.default.add_operation("not-empty", function (values, comparator, parents) {
|
|
157
|
+
var reducedValues = reduceValues(values, parents, function (value, parent) {
|
|
136
158
|
var stringValue = typeof value === "number" ? value.toString() : value;
|
|
137
|
-
return stringValue.trim().length > 0;
|
|
138
|
-
}
|
|
139
|
-
var filter = value.filter(function (_value) {
|
|
140
|
-
var stringValue = typeof _value === "number" ? _value.toString() : _value;
|
|
141
|
-
return stringValue.trim().length > 0;
|
|
159
|
+
return stringValue.trim().length > 0 && parent;
|
|
142
160
|
});
|
|
143
|
-
|
|
161
|
+
var filter = reducedValues.filter(function (_value) { return _value === true; });
|
|
162
|
+
return reducedValues.length === filter.length;
|
|
144
163
|
});
|
|
145
|
-
var like = function (
|
|
146
|
-
|
|
147
|
-
var cleanValue = (typeof value === "number"
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
164
|
+
var like = function (values, comparator, parents) {
|
|
165
|
+
var reducedValues = reduceValues(values, parents, function (value, parent) {
|
|
166
|
+
var cleanValue = (typeof value === "number"
|
|
167
|
+
? value.toString()
|
|
168
|
+
: value).toLowerCase();
|
|
169
|
+
var cleanComparator = (typeof comparator === "number"
|
|
170
|
+
? comparator.toString()
|
|
171
|
+
: comparator).toLowerCase();
|
|
172
|
+
return (new RegExp("( |^)" + cleanComparator + "( |$)", "i").test(cleanValue) && parent);
|
|
173
|
+
});
|
|
174
|
+
var filter = reducedValues.filter(function (_value) { return _value === true; });
|
|
175
|
+
return reducedValues.length === filter.length;
|
|
153
176
|
};
|
|
154
177
|
json_logic_js_1.default.add_operation("like", like);
|
|
155
|
-
var notLike = function (
|
|
156
|
-
|
|
157
|
-
var cleanValue = (typeof value === "number"
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
178
|
+
var notLike = function (values, comparator, parents) {
|
|
179
|
+
var reducedValues = reduceValues(values, parents, function (value, parent) {
|
|
180
|
+
var cleanValue = (typeof value === "number"
|
|
181
|
+
? value.toString()
|
|
182
|
+
: value).toLowerCase();
|
|
183
|
+
var cleanComparator = (typeof comparator === "number"
|
|
184
|
+
? comparator.toString()
|
|
185
|
+
: comparator).toLowerCase();
|
|
186
|
+
return (!new RegExp("( |^)" + cleanComparator + "( |$)", "i").test(cleanValue) &&
|
|
187
|
+
parent);
|
|
188
|
+
});
|
|
189
|
+
var filter = reducedValues.filter(function (_value) { return _value === true; });
|
|
190
|
+
return reducedValues.length === filter.length;
|
|
163
191
|
};
|
|
164
192
|
json_logic_js_1.default.add_operation("not-like", notLike);
|
|
165
|
-
var LpLogic =
|
|
193
|
+
var LpLogic = function (logic, data) {
|
|
194
|
+
console.log("Condition", { logic: logic, data: data });
|
|
195
|
+
return json_logic_js_1.default.apply(logic, data);
|
|
196
|
+
};
|
|
166
197
|
exports.default = LpLogic;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@legalplace/lplogic",
|
|
3
|
-
"version": "2.0
|
|
3
|
+
"version": "2.1.0",
|
|
4
4
|
"description": "LegalPlace LpLogic",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"devDependencies": {
|
|
15
15
|
"@babel/core": "^7.7.2",
|
|
16
16
|
"@babel/preset-typescript": "^7.7.2",
|
|
17
|
-
"@legalplace/models-v3-types": "^3.
|
|
17
|
+
"@legalplace/models-v3-types": "^3.4.0",
|
|
18
18
|
"@types/jest": "^24.0.15",
|
|
19
19
|
"@types/node": "^12.6.1",
|
|
20
20
|
"@typescript-eslint/eslint-plugin": "^2.6.1",
|
package/yarn.lock
CHANGED
|
@@ -351,10 +351,10 @@
|
|
|
351
351
|
resolved "https://registry.yarnpkg.com/@legalplace/json-logic-js/-/json-logic-js-1.2.3.tgz#c8921dc4e485157c26740c536699fd10bb18b84e"
|
|
352
352
|
integrity sha512-hyqkk3QqpDYZyEEupd6fyQEMUa3NuzlpaLiIu81z2/Wrb4z/5lw11wGTkIlTewuKq8UCxpJ7KpJXzwqq5smqXA==
|
|
353
353
|
|
|
354
|
-
"@legalplace/models-v3-types@^3.
|
|
355
|
-
version "3.
|
|
356
|
-
resolved "https://registry.yarnpkg.com/@legalplace/models-v3-types/-/models-v3-types-3.
|
|
357
|
-
integrity sha512
|
|
354
|
+
"@legalplace/models-v3-types@^3.4.0":
|
|
355
|
+
version "3.4.0"
|
|
356
|
+
resolved "https://registry.yarnpkg.com/@legalplace/models-v3-types/-/models-v3-types-3.4.0.tgz#9cd0aa02d41cfa52c3682936d78d586e963f63a3"
|
|
357
|
+
integrity sha512-m6DRfxhxlAQZDgXUwSyI6HIWb7gLn7OEozsMNqUUoLslcrq4g9iOHkKAwnp30K2H6JgbS17ybhjSObVMinVirg==
|
|
358
358
|
|
|
359
359
|
"@types/babel__core@^7.1.0":
|
|
360
360
|
version "7.1.3"
|