@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 CHANGED
@@ -1,3 +1,2 @@
1
- import jsonLogic from "@legalplace/json-logic-js";
2
- declare const LpLogic: typeof jsonLogic.apply;
1
+ declare const LpLogic: (logic: any, data?: any) => any;
3
2
  export default LpLogic;
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
- if (!isNaN(comparator)) {
9
- if (!isNaN(value)) {
10
- return parseFloat(value) === parseFloat(comparator);
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 (value, comparator) {
20
- if (!Array.isArray(value)) {
21
- return safeEqual(value, comparator);
22
- }
23
- var filter = value.filter(function (_value) { return safeEqual(_value, comparator); });
24
- return value.length === filter.length;
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 (value, comparator) {
27
- if (!Array.isArray(value)) {
28
- return !safeEqual(value, comparator);
29
- }
30
- var filter = value.filter(function (_value) { return !safeEqual(_value, comparator); });
31
- return value.length === filter.length;
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 (value, comparator) {
34
- if (!Array.isArray(value)) {
35
- return value === comparator;
36
- }
37
- var filter = value.filter(function (_value) { return _value === comparator; });
38
- return value.length === filter.length;
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 (value, c) {
41
- var comparator = typeof c === "number" ? c : parseFloat(c);
42
- if (!Array.isArray(value)) {
43
- return value >= comparator;
44
- }
45
- var filter = value.filter(function (_value) { return _value >= comparator; });
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 (value, c) {
49
- var comparator = typeof c === "number" ? c : parseFloat(c);
50
- if (!Array.isArray(value)) {
51
- return value >= comparator;
52
- }
53
- var filter = value.filter(function (_value) { return _value <= comparator; });
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 (value, c) {
57
- var comparator = typeof c === "number" ? c : parseFloat(c);
58
- if (!Array.isArray(value)) {
59
- return value > comparator;
60
- }
61
- var filter = value.filter(function (_value) { return _value > comparator; });
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 (value, c) {
65
- var comparator = typeof c === "number" ? c : parseFloat(c);
66
- if (!Array.isArray(value)) {
67
- return value < comparator;
68
- }
69
- var filter = value.filter(function (_value) { return _value < comparator; });
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 (value) {
73
- if (!Array.isArray(value)) {
74
- return value === true;
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 (value) {
80
- if (!Array.isArray(value)) {
81
- return value !== true;
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 (value) {
87
- if (!Array.isArray(value))
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 value.length === 1;
104
+ return reducedValue.length === 1;
90
105
  });
91
- json_logic_js_1.default.add_operation("at-least-one", function (value) {
92
- if (!Array.isArray(value))
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 value.includes(true);
110
+ return reducedValue.includes(true);
95
111
  });
96
- json_logic_js_1.default.add_operation("has-many", function (value) {
97
- if (!Array.isArray(value))
98
- return false;
99
- return value.length > 1;
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 (value, comparator) {
102
- if (!Array.isArray(value)) {
103
- var cleanValue = (typeof value === "number" ? value.toString() : value).toLowerCase();
104
- var cleanComparator = (typeof comparator === "number" ? comparator.toString() : comparator).toLowerCase();
105
- return cleanValue === cleanComparator;
106
- }
107
- var filter = value.filter(function (_value) { return is(_value, comparator); });
108
- return value.length === filter.length;
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 (value, comparator) {
113
- if (!Array.isArray(value)) {
114
- var cleanValue = (typeof value === "number" ? value.toString() : value).toLowerCase();
115
- var cleanComparator = (typeof comparator === "number" ? comparator.toString() : comparator).toLowerCase();
116
- return cleanValue !== cleanComparator;
117
- }
118
- var filter = value.filter(function (_value) { return not(_value, comparator); });
119
- return value.length === filter.length;
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 (value) {
124
- if (!Array.isArray(value)) {
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
- return value.length === filter.length;
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 (value) {
135
- if (!Array.isArray(value)) {
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
- return value.length === filter.length;
161
+ var filter = reducedValues.filter(function (_value) { return _value === true; });
162
+ return reducedValues.length === filter.length;
144
163
  });
145
- var like = function (value, comparator) {
146
- if (!Array.isArray(value)) {
147
- var cleanValue = (typeof value === "number" ? value.toString() : value).toLowerCase();
148
- var cleanComparator = (typeof comparator === "number" ? comparator.toString() : comparator).toLowerCase();
149
- return new RegExp(cleanComparator).test(cleanValue);
150
- }
151
- var filter = value.filter(function (_value) { return like(_value, comparator); });
152
- return value.length === filter.length;
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 (value, comparator) {
156
- if (!Array.isArray(value)) {
157
- var cleanValue = (typeof value === "number" ? value.toString() : value).toLowerCase();
158
- var cleanComparator = (typeof comparator === "number" ? comparator.toString() : comparator).toLowerCase();
159
- return !new RegExp(cleanComparator).test(cleanValue);
160
- }
161
- var filter = value.filter(function (_value) { return notLike(_value, comparator); });
162
- return value.length === filter.length;
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 = json_logic_js_1.default.apply;
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",
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.1.0",
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.1.0":
355
- version "3.1.1"
356
- resolved "https://registry.yarnpkg.com/@legalplace/models-v3-types/-/models-v3-types-3.1.1.tgz#433a2f6d93a99e9a61d040457627772a2167a7ee"
357
- integrity sha512-+c0EFH4bBQw7xB239PLtn1p83t4R1ygWrZwwuvFJnRGWuVle0w/RFkQ+gfwQZApvSx06U/vhNu8doRn/PVd3KQ==
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"