@usertour/helpers 0.0.29 → 0.0.30
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/__tests__/attribute.test.cjs +505 -67
- package/dist/__tests__/attribute.test.js +495 -60
- package/dist/__tests__/condition.test.cjs +15 -12
- package/dist/__tests__/condition.test.js +9 -5
- package/dist/{chunk-PBZSPV5R.js → chunk-P46FJFKP.js} +20 -10
- package/dist/{chunk-E2IJQFKH.js → chunk-RVCKVUQF.js} +2 -6
- package/dist/conditions/attribute.cjs +16 -9
- package/dist/conditions/attribute.d.cts +5 -7
- package/dist/conditions/attribute.d.ts +5 -7
- package/dist/conditions/attribute.js +1 -1
- package/dist/conditions/condition.cjs +13 -10
- package/dist/conditions/condition.js +2 -2
- package/dist/conditions/index.cjs +13 -10
- package/dist/conditions/index.js +2 -2
- package/dist/index.cjs +13 -10
- package/dist/index.js +2 -2
- package/package.json +2 -2
|
@@ -143,20 +143,27 @@ var evaluateTimeCondition = (rules) => {
|
|
|
143
143
|
// src/conditions/attribute.ts
|
|
144
144
|
var import_types = require("@usertour/types");
|
|
145
145
|
var import_date_fns2 = require("date-fns");
|
|
146
|
-
function evaluateAttributeCondition(condition,
|
|
146
|
+
function evaluateAttributeCondition(condition, options) {
|
|
147
147
|
const { data } = condition;
|
|
148
148
|
if (!data) {
|
|
149
149
|
return false;
|
|
150
150
|
}
|
|
151
151
|
const { logic, value, attrId, value2, listValues = [] } = data;
|
|
152
|
-
|
|
152
|
+
const {
|
|
153
|
+
attributes,
|
|
154
|
+
userAttributes = {},
|
|
155
|
+
companyAttributes = {},
|
|
156
|
+
membershipAttributes = {}
|
|
157
|
+
} = options;
|
|
158
|
+
if (!attrId || !attributes) {
|
|
153
159
|
return false;
|
|
154
160
|
}
|
|
155
161
|
const attr = attributes.find((attr2) => attr2.id === attrId);
|
|
156
162
|
if (!attr) {
|
|
157
163
|
return false;
|
|
158
164
|
}
|
|
159
|
-
const
|
|
165
|
+
const bizAttributes = attr.bizType === import_types.AttributeBizTypes.Company ? companyAttributes : attr.bizType === import_types.AttributeBizTypes.Membership ? membershipAttributes : userAttributes;
|
|
166
|
+
const actualValue = getAttributeValue(attr.codeName, bizAttributes);
|
|
160
167
|
if (attr.dataType === import_types.BizAttributeTypes.String) {
|
|
161
168
|
return evaluateStringCondition(logic, actualValue, value);
|
|
162
169
|
}
|
|
@@ -174,8 +181,8 @@ function evaluateAttributeCondition(condition, attributes, userAttributes) {
|
|
|
174
181
|
}
|
|
175
182
|
return false;
|
|
176
183
|
}
|
|
177
|
-
function getAttributeValue(codeName,
|
|
178
|
-
return
|
|
184
|
+
function getAttributeValue(codeName, attributes) {
|
|
185
|
+
return attributes == null ? void 0 : attributes[codeName];
|
|
179
186
|
}
|
|
180
187
|
function evaluateStringCondition(logic, actualValue, expectedValue) {
|
|
181
188
|
const stringValue = actualValue === null || actualValue === void 0 ? "" : String(actualValue);
|
|
@@ -373,11 +380,7 @@ var evaluateRule = async (condition, options) => {
|
|
|
373
380
|
case import_types2.RulesType.TIME:
|
|
374
381
|
return evaluateTimeCondition(condition);
|
|
375
382
|
case import_types2.RulesType.USER_ATTR:
|
|
376
|
-
return evaluateAttributeCondition(
|
|
377
|
-
condition,
|
|
378
|
-
options.attributes || [],
|
|
379
|
-
options.userAttributes || {}
|
|
380
|
-
);
|
|
383
|
+
return evaluateAttributeCondition(condition, options);
|
|
381
384
|
default:
|
|
382
385
|
return condition.actived || false;
|
|
383
386
|
}
|
|
@@ -649,8 +652,8 @@ describe("evaluateRulesConditions", () => {
|
|
|
649
652
|
{
|
|
650
653
|
id: "email",
|
|
651
654
|
codeName: "email",
|
|
652
|
-
dataType:
|
|
653
|
-
|
|
655
|
+
dataType: import_types3.BizAttributeTypes.String,
|
|
656
|
+
bizType: import_types3.AttributeBizTypes.User
|
|
654
657
|
}
|
|
655
658
|
],
|
|
656
659
|
userAttributes: {
|
|
@@ -2,15 +2,19 @@ import {
|
|
|
2
2
|
evaluateRulesConditions,
|
|
3
3
|
filterConditionsByType,
|
|
4
4
|
isConditionsActived
|
|
5
|
-
} from "../chunk-
|
|
5
|
+
} from "../chunk-RVCKVUQF.js";
|
|
6
6
|
import "../chunk-YYIGUZNZ.js";
|
|
7
7
|
import "../chunk-PAESAL23.js";
|
|
8
|
-
import "../chunk-
|
|
8
|
+
import "../chunk-P46FJFKP.js";
|
|
9
9
|
import "../chunk-CEK3SCQO.js";
|
|
10
10
|
import "../chunk-XEO3YXBM.js";
|
|
11
11
|
|
|
12
12
|
// src/__tests__/condition.test.ts
|
|
13
|
-
import {
|
|
13
|
+
import {
|
|
14
|
+
RulesType,
|
|
15
|
+
BizAttributeTypes,
|
|
16
|
+
AttributeBizTypes
|
|
17
|
+
} from "@usertour/types";
|
|
14
18
|
describe("filterConditionsByType", () => {
|
|
15
19
|
test("should return empty array when no conditions provided", () => {
|
|
16
20
|
const result = filterConditionsByType([], [RulesType.CURRENT_PAGE, RulesType.TIME]);
|
|
@@ -259,8 +263,8 @@ describe("evaluateRulesConditions", () => {
|
|
|
259
263
|
{
|
|
260
264
|
id: "email",
|
|
261
265
|
codeName: "email",
|
|
262
|
-
dataType:
|
|
263
|
-
|
|
266
|
+
dataType: BizAttributeTypes.String,
|
|
267
|
+
bizType: AttributeBizTypes.User
|
|
264
268
|
}
|
|
265
269
|
],
|
|
266
270
|
userAttributes: {
|
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
// src/conditions/attribute.ts
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
BizAttributeTypes,
|
|
4
|
+
AttributeBizTypes
|
|
5
|
+
} from "@usertour/types";
|
|
3
6
|
import { subDays, startOfDay, endOfDay } from "date-fns";
|
|
4
|
-
function evaluateFilterConditions(conditions,
|
|
7
|
+
function evaluateFilterConditions(conditions, options) {
|
|
5
8
|
if (!conditions || !conditions.length) {
|
|
6
9
|
return true;
|
|
7
10
|
}
|
|
8
|
-
const result = evaluateAttributeConditionsGroup(conditions,
|
|
11
|
+
const result = evaluateAttributeConditionsGroup(conditions, options);
|
|
9
12
|
return evaluateFilterResult(result);
|
|
10
13
|
}
|
|
11
|
-
function evaluateAttributeConditionsGroup(conditions,
|
|
14
|
+
function evaluateAttributeConditionsGroup(conditions, options) {
|
|
12
15
|
if (!conditions || !conditions.length) {
|
|
13
16
|
return false;
|
|
14
17
|
}
|
|
@@ -16,7 +19,7 @@ function evaluateAttributeConditionsGroup(conditions, attributes, userAttributes
|
|
|
16
19
|
const OR = [];
|
|
17
20
|
for (const condition of conditions) {
|
|
18
21
|
const { operators } = condition;
|
|
19
|
-
const item = condition.type !== "group" ? evaluateAttributeCondition(condition,
|
|
22
|
+
const item = condition.type !== "group" ? evaluateAttributeCondition(condition, options) : evaluateAttributeConditionsGroup(condition.conditions || [], options);
|
|
20
23
|
if (!item) {
|
|
21
24
|
continue;
|
|
22
25
|
}
|
|
@@ -38,20 +41,27 @@ function evaluateAttributeConditionsGroup(conditions, attributes, userAttributes
|
|
|
38
41
|
}
|
|
39
42
|
return filter;
|
|
40
43
|
}
|
|
41
|
-
function evaluateAttributeCondition(condition,
|
|
44
|
+
function evaluateAttributeCondition(condition, options) {
|
|
42
45
|
const { data } = condition;
|
|
43
46
|
if (!data) {
|
|
44
47
|
return false;
|
|
45
48
|
}
|
|
46
49
|
const { logic, value, attrId, value2, listValues = [] } = data;
|
|
47
|
-
|
|
50
|
+
const {
|
|
51
|
+
attributes,
|
|
52
|
+
userAttributes = {},
|
|
53
|
+
companyAttributes = {},
|
|
54
|
+
membershipAttributes = {}
|
|
55
|
+
} = options;
|
|
56
|
+
if (!attrId || !attributes) {
|
|
48
57
|
return false;
|
|
49
58
|
}
|
|
50
59
|
const attr = attributes.find((attr2) => attr2.id === attrId);
|
|
51
60
|
if (!attr) {
|
|
52
61
|
return false;
|
|
53
62
|
}
|
|
54
|
-
const
|
|
63
|
+
const bizAttributes = attr.bizType === AttributeBizTypes.Company ? companyAttributes : attr.bizType === AttributeBizTypes.Membership ? membershipAttributes : userAttributes;
|
|
64
|
+
const actualValue = getAttributeValue(attr.codeName, bizAttributes);
|
|
55
65
|
if (attr.dataType === BizAttributeTypes.String) {
|
|
56
66
|
return evaluateStringCondition(logic, actualValue, value);
|
|
57
67
|
}
|
|
@@ -69,8 +79,8 @@ function evaluateAttributeCondition(condition, attributes, userAttributes) {
|
|
|
69
79
|
}
|
|
70
80
|
return false;
|
|
71
81
|
}
|
|
72
|
-
function getAttributeValue(codeName,
|
|
73
|
-
return
|
|
82
|
+
function getAttributeValue(codeName, attributes) {
|
|
83
|
+
return attributes == null ? void 0 : attributes[codeName];
|
|
74
84
|
}
|
|
75
85
|
function evaluateStringCondition(logic, actualValue, expectedValue) {
|
|
76
86
|
const stringValue = actualValue === null || actualValue === void 0 ? "" : String(actualValue);
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
} from "./chunk-YYIGUZNZ.js";
|
|
4
4
|
import {
|
|
5
5
|
evaluateAttributeCondition
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-P46FJFKP.js";
|
|
7
7
|
import {
|
|
8
8
|
evaluateTimeCondition
|
|
9
9
|
} from "./chunk-CEK3SCQO.js";
|
|
@@ -66,11 +66,7 @@ var evaluateRule = async (condition, options) => {
|
|
|
66
66
|
case RulesType.TIME:
|
|
67
67
|
return evaluateTimeCondition(condition);
|
|
68
68
|
case RulesType.USER_ATTR:
|
|
69
|
-
return evaluateAttributeCondition(
|
|
70
|
-
condition,
|
|
71
|
-
options.attributes || [],
|
|
72
|
-
options.userAttributes || {}
|
|
73
|
-
);
|
|
69
|
+
return evaluateAttributeCondition(condition, options);
|
|
74
70
|
default:
|
|
75
71
|
return condition.actived || false;
|
|
76
72
|
}
|
|
@@ -26,14 +26,14 @@ __export(attribute_exports, {
|
|
|
26
26
|
module.exports = __toCommonJS(attribute_exports);
|
|
27
27
|
var import_types = require("@usertour/types");
|
|
28
28
|
var import_date_fns = require("date-fns");
|
|
29
|
-
function evaluateFilterConditions(conditions,
|
|
29
|
+
function evaluateFilterConditions(conditions, options) {
|
|
30
30
|
if (!conditions || !conditions.length) {
|
|
31
31
|
return true;
|
|
32
32
|
}
|
|
33
|
-
const result = evaluateAttributeConditionsGroup(conditions,
|
|
33
|
+
const result = evaluateAttributeConditionsGroup(conditions, options);
|
|
34
34
|
return evaluateFilterResult(result);
|
|
35
35
|
}
|
|
36
|
-
function evaluateAttributeConditionsGroup(conditions,
|
|
36
|
+
function evaluateAttributeConditionsGroup(conditions, options) {
|
|
37
37
|
if (!conditions || !conditions.length) {
|
|
38
38
|
return false;
|
|
39
39
|
}
|
|
@@ -41,7 +41,7 @@ function evaluateAttributeConditionsGroup(conditions, attributes, userAttributes
|
|
|
41
41
|
const OR = [];
|
|
42
42
|
for (const condition of conditions) {
|
|
43
43
|
const { operators } = condition;
|
|
44
|
-
const item = condition.type !== "group" ? evaluateAttributeCondition(condition,
|
|
44
|
+
const item = condition.type !== "group" ? evaluateAttributeCondition(condition, options) : evaluateAttributeConditionsGroup(condition.conditions || [], options);
|
|
45
45
|
if (!item) {
|
|
46
46
|
continue;
|
|
47
47
|
}
|
|
@@ -63,20 +63,27 @@ function evaluateAttributeConditionsGroup(conditions, attributes, userAttributes
|
|
|
63
63
|
}
|
|
64
64
|
return filter;
|
|
65
65
|
}
|
|
66
|
-
function evaluateAttributeCondition(condition,
|
|
66
|
+
function evaluateAttributeCondition(condition, options) {
|
|
67
67
|
const { data } = condition;
|
|
68
68
|
if (!data) {
|
|
69
69
|
return false;
|
|
70
70
|
}
|
|
71
71
|
const { logic, value, attrId, value2, listValues = [] } = data;
|
|
72
|
-
|
|
72
|
+
const {
|
|
73
|
+
attributes,
|
|
74
|
+
userAttributes = {},
|
|
75
|
+
companyAttributes = {},
|
|
76
|
+
membershipAttributes = {}
|
|
77
|
+
} = options;
|
|
78
|
+
if (!attrId || !attributes) {
|
|
73
79
|
return false;
|
|
74
80
|
}
|
|
75
81
|
const attr = attributes.find((attr2) => attr2.id === attrId);
|
|
76
82
|
if (!attr) {
|
|
77
83
|
return false;
|
|
78
84
|
}
|
|
79
|
-
const
|
|
85
|
+
const bizAttributes = attr.bizType === import_types.AttributeBizTypes.Company ? companyAttributes : attr.bizType === import_types.AttributeBizTypes.Membership ? membershipAttributes : userAttributes;
|
|
86
|
+
const actualValue = getAttributeValue(attr.codeName, bizAttributes);
|
|
80
87
|
if (attr.dataType === import_types.BizAttributeTypes.String) {
|
|
81
88
|
return evaluateStringCondition(logic, actualValue, value);
|
|
82
89
|
}
|
|
@@ -94,8 +101,8 @@ function evaluateAttributeCondition(condition, attributes, userAttributes) {
|
|
|
94
101
|
}
|
|
95
102
|
return false;
|
|
96
103
|
}
|
|
97
|
-
function getAttributeValue(codeName,
|
|
98
|
-
return
|
|
104
|
+
function getAttributeValue(codeName, attributes) {
|
|
105
|
+
return attributes == null ? void 0 : attributes[codeName];
|
|
99
106
|
}
|
|
100
107
|
function evaluateStringCondition(logic, actualValue, expectedValue) {
|
|
101
108
|
const stringValue = actualValue === null || actualValue === void 0 ? "" : String(actualValue);
|
|
@@ -1,20 +1,18 @@
|
|
|
1
|
-
import { RulesCondition,
|
|
1
|
+
import { RulesCondition, RulesEvaluationOptions } from '@usertour/types';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Evaluate filter conditions and return boolean result
|
|
5
5
|
* @param conditions - Filter conditions to evaluate
|
|
6
|
-
* @param
|
|
7
|
-
* @param context - Filter context with user attributes
|
|
6
|
+
* @param options - Evaluation options including attributes, user attributes, company attributes, and membership attributes
|
|
8
7
|
* @returns boolean indicating if conditions are met
|
|
9
8
|
*/
|
|
10
|
-
declare function evaluateFilterConditions(conditions: RulesCondition[],
|
|
9
|
+
declare function evaluateFilterConditions(conditions: RulesCondition[], options: Pick<RulesEvaluationOptions, 'attributes' | 'userAttributes' | 'companyAttributes' | 'membershipAttributes'>): boolean;
|
|
11
10
|
/**
|
|
12
11
|
* Evaluate a single attribute condition
|
|
13
12
|
* @param condition - Single attribute filter condition
|
|
14
|
-
* @param
|
|
15
|
-
* @param context - Filter context with user attributes
|
|
13
|
+
* @param options - Evaluation options including attributes, user attributes, company attributes, and membership attributes
|
|
16
14
|
* @returns Evaluation result (boolean or complex structure)
|
|
17
15
|
*/
|
|
18
|
-
declare function evaluateAttributeCondition(condition: RulesCondition,
|
|
16
|
+
declare function evaluateAttributeCondition(condition: RulesCondition, options: RulesEvaluationOptions): any;
|
|
19
17
|
|
|
20
18
|
export { evaluateAttributeCondition, evaluateFilterConditions };
|
|
@@ -1,20 +1,18 @@
|
|
|
1
|
-
import { RulesCondition,
|
|
1
|
+
import { RulesCondition, RulesEvaluationOptions } from '@usertour/types';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Evaluate filter conditions and return boolean result
|
|
5
5
|
* @param conditions - Filter conditions to evaluate
|
|
6
|
-
* @param
|
|
7
|
-
* @param context - Filter context with user attributes
|
|
6
|
+
* @param options - Evaluation options including attributes, user attributes, company attributes, and membership attributes
|
|
8
7
|
* @returns boolean indicating if conditions are met
|
|
9
8
|
*/
|
|
10
|
-
declare function evaluateFilterConditions(conditions: RulesCondition[],
|
|
9
|
+
declare function evaluateFilterConditions(conditions: RulesCondition[], options: Pick<RulesEvaluationOptions, 'attributes' | 'userAttributes' | 'companyAttributes' | 'membershipAttributes'>): boolean;
|
|
11
10
|
/**
|
|
12
11
|
* Evaluate a single attribute condition
|
|
13
12
|
* @param condition - Single attribute filter condition
|
|
14
|
-
* @param
|
|
15
|
-
* @param context - Filter context with user attributes
|
|
13
|
+
* @param options - Evaluation options including attributes, user attributes, company attributes, and membership attributes
|
|
16
14
|
* @returns Evaluation result (boolean or complex structure)
|
|
17
15
|
*/
|
|
18
|
-
declare function evaluateAttributeCondition(condition: RulesCondition,
|
|
16
|
+
declare function evaluateAttributeCondition(condition: RulesCondition, options: RulesEvaluationOptions): any;
|
|
19
17
|
|
|
20
18
|
export { evaluateAttributeCondition, evaluateFilterConditions };
|
|
@@ -155,20 +155,27 @@ var evaluateTimeCondition = (rules) => {
|
|
|
155
155
|
// src/conditions/attribute.ts
|
|
156
156
|
var import_types = require("@usertour/types");
|
|
157
157
|
var import_date_fns2 = require("date-fns");
|
|
158
|
-
function evaluateAttributeCondition(condition,
|
|
158
|
+
function evaluateAttributeCondition(condition, options) {
|
|
159
159
|
const { data } = condition;
|
|
160
160
|
if (!data) {
|
|
161
161
|
return false;
|
|
162
162
|
}
|
|
163
163
|
const { logic, value, attrId, value2, listValues = [] } = data;
|
|
164
|
-
|
|
164
|
+
const {
|
|
165
|
+
attributes,
|
|
166
|
+
userAttributes = {},
|
|
167
|
+
companyAttributes = {},
|
|
168
|
+
membershipAttributes = {}
|
|
169
|
+
} = options;
|
|
170
|
+
if (!attrId || !attributes) {
|
|
165
171
|
return false;
|
|
166
172
|
}
|
|
167
173
|
const attr = attributes.find((attr2) => attr2.id === attrId);
|
|
168
174
|
if (!attr) {
|
|
169
175
|
return false;
|
|
170
176
|
}
|
|
171
|
-
const
|
|
177
|
+
const bizAttributes = attr.bizType === import_types.AttributeBizTypes.Company ? companyAttributes : attr.bizType === import_types.AttributeBizTypes.Membership ? membershipAttributes : userAttributes;
|
|
178
|
+
const actualValue = getAttributeValue(attr.codeName, bizAttributes);
|
|
172
179
|
if (attr.dataType === import_types.BizAttributeTypes.String) {
|
|
173
180
|
return evaluateStringCondition(logic, actualValue, value);
|
|
174
181
|
}
|
|
@@ -186,8 +193,8 @@ function evaluateAttributeCondition(condition, attributes, userAttributes) {
|
|
|
186
193
|
}
|
|
187
194
|
return false;
|
|
188
195
|
}
|
|
189
|
-
function getAttributeValue(codeName,
|
|
190
|
-
return
|
|
196
|
+
function getAttributeValue(codeName, attributes) {
|
|
197
|
+
return attributes == null ? void 0 : attributes[codeName];
|
|
191
198
|
}
|
|
192
199
|
function evaluateStringCondition(logic, actualValue, expectedValue) {
|
|
193
200
|
const stringValue = actualValue === null || actualValue === void 0 ? "" : String(actualValue);
|
|
@@ -388,11 +395,7 @@ var evaluateRule = async (condition, options) => {
|
|
|
388
395
|
case import_types2.RulesType.TIME:
|
|
389
396
|
return evaluateTimeCondition(condition);
|
|
390
397
|
case import_types2.RulesType.USER_ATTR:
|
|
391
|
-
return evaluateAttributeCondition(
|
|
392
|
-
condition,
|
|
393
|
-
options.attributes || [],
|
|
394
|
-
options.userAttributes || {}
|
|
395
|
-
);
|
|
398
|
+
return evaluateAttributeCondition(condition, options);
|
|
396
399
|
default:
|
|
397
400
|
return condition.actived || false;
|
|
398
401
|
}
|
|
@@ -5,10 +5,10 @@ import {
|
|
|
5
5
|
filterConditionsByType,
|
|
6
6
|
isConditionsActived,
|
|
7
7
|
isEqual
|
|
8
|
-
} from "../chunk-
|
|
8
|
+
} from "../chunk-RVCKVUQF.js";
|
|
9
9
|
import "../chunk-YYIGUZNZ.js";
|
|
10
10
|
import "../chunk-PAESAL23.js";
|
|
11
|
-
import "../chunk-
|
|
11
|
+
import "../chunk-P46FJFKP.js";
|
|
12
12
|
import "../chunk-CEK3SCQO.js";
|
|
13
13
|
import "../chunk-XEO3YXBM.js";
|
|
14
14
|
export {
|
|
@@ -161,20 +161,27 @@ var evaluateTimeCondition = (rules) => {
|
|
|
161
161
|
// src/conditions/attribute.ts
|
|
162
162
|
var import_types = require("@usertour/types");
|
|
163
163
|
var import_date_fns2 = require("date-fns");
|
|
164
|
-
function evaluateAttributeCondition(condition,
|
|
164
|
+
function evaluateAttributeCondition(condition, options) {
|
|
165
165
|
const { data } = condition;
|
|
166
166
|
if (!data) {
|
|
167
167
|
return false;
|
|
168
168
|
}
|
|
169
169
|
const { logic, value, attrId, value2, listValues = [] } = data;
|
|
170
|
-
|
|
170
|
+
const {
|
|
171
|
+
attributes,
|
|
172
|
+
userAttributes = {},
|
|
173
|
+
companyAttributes = {},
|
|
174
|
+
membershipAttributes = {}
|
|
175
|
+
} = options;
|
|
176
|
+
if (!attrId || !attributes) {
|
|
171
177
|
return false;
|
|
172
178
|
}
|
|
173
179
|
const attr = attributes.find((attr2) => attr2.id === attrId);
|
|
174
180
|
if (!attr) {
|
|
175
181
|
return false;
|
|
176
182
|
}
|
|
177
|
-
const
|
|
183
|
+
const bizAttributes = attr.bizType === import_types.AttributeBizTypes.Company ? companyAttributes : attr.bizType === import_types.AttributeBizTypes.Membership ? membershipAttributes : userAttributes;
|
|
184
|
+
const actualValue = getAttributeValue(attr.codeName, bizAttributes);
|
|
178
185
|
if (attr.dataType === import_types.BizAttributeTypes.String) {
|
|
179
186
|
return evaluateStringCondition(logic, actualValue, value);
|
|
180
187
|
}
|
|
@@ -192,8 +199,8 @@ function evaluateAttributeCondition(condition, attributes, userAttributes) {
|
|
|
192
199
|
}
|
|
193
200
|
return false;
|
|
194
201
|
}
|
|
195
|
-
function getAttributeValue(codeName,
|
|
196
|
-
return
|
|
202
|
+
function getAttributeValue(codeName, attributes) {
|
|
203
|
+
return attributes == null ? void 0 : attributes[codeName];
|
|
197
204
|
}
|
|
198
205
|
function evaluateStringCondition(logic, actualValue, expectedValue) {
|
|
199
206
|
const stringValue = actualValue === null || actualValue === void 0 ? "" : String(actualValue);
|
|
@@ -394,11 +401,7 @@ var evaluateRule = async (condition, options) => {
|
|
|
394
401
|
case import_types2.RulesType.TIME:
|
|
395
402
|
return evaluateTimeCondition(condition);
|
|
396
403
|
case import_types2.RulesType.USER_ATTR:
|
|
397
|
-
return evaluateAttributeCondition(
|
|
398
|
-
condition,
|
|
399
|
-
options.attributes || [],
|
|
400
|
-
options.userAttributes || {}
|
|
401
|
-
);
|
|
404
|
+
return evaluateAttributeCondition(condition, options);
|
|
402
405
|
default:
|
|
403
406
|
return condition.actived || false;
|
|
404
407
|
}
|
package/dist/conditions/index.js
CHANGED
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
filterConditionsByType,
|
|
7
7
|
isConditionsActived,
|
|
8
8
|
isEqual
|
|
9
|
-
} from "../chunk-
|
|
9
|
+
} from "../chunk-RVCKVUQF.js";
|
|
10
10
|
import {
|
|
11
11
|
evaluateUrlCondition,
|
|
12
12
|
isMatchUrlPattern
|
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
import "../chunk-PAESAL23.js";
|
|
15
15
|
import {
|
|
16
16
|
evaluateAttributeCondition
|
|
17
|
-
} from "../chunk-
|
|
17
|
+
} from "../chunk-P46FJFKP.js";
|
|
18
18
|
import {
|
|
19
19
|
evaluateTimeCondition
|
|
20
20
|
} from "../chunk-CEK3SCQO.js";
|
package/dist/index.cjs
CHANGED
|
@@ -1127,20 +1127,27 @@ var evaluateTimeCondition = (rules) => {
|
|
|
1127
1127
|
// src/conditions/attribute.ts
|
|
1128
1128
|
var import_types4 = require("@usertour/types");
|
|
1129
1129
|
var import_date_fns2 = require("date-fns");
|
|
1130
|
-
function evaluateAttributeCondition(condition,
|
|
1130
|
+
function evaluateAttributeCondition(condition, options) {
|
|
1131
1131
|
const { data } = condition;
|
|
1132
1132
|
if (!data) {
|
|
1133
1133
|
return false;
|
|
1134
1134
|
}
|
|
1135
1135
|
const { logic, value, attrId, value2, listValues = [] } = data;
|
|
1136
|
-
|
|
1136
|
+
const {
|
|
1137
|
+
attributes,
|
|
1138
|
+
userAttributes = {},
|
|
1139
|
+
companyAttributes = {},
|
|
1140
|
+
membershipAttributes = {}
|
|
1141
|
+
} = options;
|
|
1142
|
+
if (!attrId || !attributes) {
|
|
1137
1143
|
return false;
|
|
1138
1144
|
}
|
|
1139
1145
|
const attr = attributes.find((attr2) => attr2.id === attrId);
|
|
1140
1146
|
if (!attr) {
|
|
1141
1147
|
return false;
|
|
1142
1148
|
}
|
|
1143
|
-
const
|
|
1149
|
+
const bizAttributes = attr.bizType === import_types4.AttributeBizTypes.Company ? companyAttributes : attr.bizType === import_types4.AttributeBizTypes.Membership ? membershipAttributes : userAttributes;
|
|
1150
|
+
const actualValue = getAttributeValue(attr.codeName, bizAttributes);
|
|
1144
1151
|
if (attr.dataType === import_types4.BizAttributeTypes.String) {
|
|
1145
1152
|
return evaluateStringCondition(logic, actualValue, value);
|
|
1146
1153
|
}
|
|
@@ -1158,8 +1165,8 @@ function evaluateAttributeCondition(condition, attributes, userAttributes) {
|
|
|
1158
1165
|
}
|
|
1159
1166
|
return false;
|
|
1160
1167
|
}
|
|
1161
|
-
function getAttributeValue(codeName,
|
|
1162
|
-
return
|
|
1168
|
+
function getAttributeValue(codeName, attributes) {
|
|
1169
|
+
return attributes == null ? void 0 : attributes[codeName];
|
|
1163
1170
|
}
|
|
1164
1171
|
function evaluateStringCondition(logic, actualValue, expectedValue) {
|
|
1165
1172
|
const stringValue = actualValue === null || actualValue === void 0 ? "" : String(actualValue);
|
|
@@ -1360,11 +1367,7 @@ var evaluateRule = async (condition, options) => {
|
|
|
1360
1367
|
case import_types5.RulesType.TIME:
|
|
1361
1368
|
return evaluateTimeCondition(condition);
|
|
1362
1369
|
case import_types5.RulesType.USER_ATTR:
|
|
1363
|
-
return evaluateAttributeCondition(
|
|
1364
|
-
condition,
|
|
1365
|
-
options.attributes || [],
|
|
1366
|
-
options.userAttributes || {}
|
|
1367
|
-
);
|
|
1370
|
+
return evaluateAttributeCondition(condition, options);
|
|
1368
1371
|
default:
|
|
1369
1372
|
return condition.actived || false;
|
|
1370
1373
|
}
|
package/dist/index.js
CHANGED
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
filterConditionsByType,
|
|
18
18
|
isConditionsActived,
|
|
19
19
|
isEqual
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-RVCKVUQF.js";
|
|
21
21
|
import {
|
|
22
22
|
evaluateUrlCondition,
|
|
23
23
|
isMatchUrlPattern
|
|
@@ -25,7 +25,7 @@ import {
|
|
|
25
25
|
import "./chunk-PAESAL23.js";
|
|
26
26
|
import {
|
|
27
27
|
evaluateAttributeCondition
|
|
28
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-P46FJFKP.js";
|
|
29
29
|
import {
|
|
30
30
|
evaluateTimeCondition
|
|
31
31
|
} from "./chunk-CEK3SCQO.js";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@usertour/helpers",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.30",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Utility functions and helpers shared across the UserTour project",
|
|
6
6
|
"homepage": "https://www.usertour.io",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
31
|
"@paralleldrive/cuid2": "^2.2.2",
|
|
32
|
-
"@usertour/types": "^0.0.
|
|
32
|
+
"@usertour/types": "^0.0.19",
|
|
33
33
|
"chroma-js": "^3.1.2",
|
|
34
34
|
"class-variance-authority": "^0.4.0",
|
|
35
35
|
"clsx": "^1.2.1",
|