@usertour/helpers 0.0.29 → 0.0.31
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 +83 -12
- package/dist/__tests__/condition.test.js +10 -5
- package/dist/{chunk-PBZSPV5R.js → chunk-P46FJFKP.js} +20 -10
- package/dist/{chunk-E2IJQFKH.js → chunk-VBHUPKP7.js} +41 -7
- package/dist/{chunk-4LLDSAHJ.js → chunk-VWNWWZCH.js} +8 -9
- 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 +121 -12
- package/dist/conditions/condition.d.cts +19 -1
- package/dist/conditions/condition.d.ts +19 -1
- package/dist/conditions/condition.js +11 -4
- package/dist/conditions/index.cjs +121 -12
- package/dist/conditions/index.d.cts +1 -1
- package/dist/conditions/index.d.ts +1 -1
- package/dist/conditions/index.js +11 -4
- package/dist/content.cjs +8 -9
- package/dist/content.js +1 -1
- package/dist/index.cjs +59 -19
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +10 -4
- 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);
|
|
@@ -320,6 +327,74 @@ function evaluateDateTimeCondition(logic, actualValue, expectedValue) {
|
|
|
320
327
|
}
|
|
321
328
|
}
|
|
322
329
|
|
|
330
|
+
// src/helper.ts
|
|
331
|
+
var import_clsx = require("clsx");
|
|
332
|
+
var import_tailwind_merge = require("tailwind-merge");
|
|
333
|
+
var import_uuid = require("uuid");
|
|
334
|
+
var import_cuid2 = require("@paralleldrive/cuid2");
|
|
335
|
+
function cn(...inputs) {
|
|
336
|
+
return (0, import_tailwind_merge.twMerge)((0, import_clsx.clsx)(inputs));
|
|
337
|
+
}
|
|
338
|
+
var cuid = () => {
|
|
339
|
+
return (0, import_cuid2.createId)();
|
|
340
|
+
};
|
|
341
|
+
function formatDate(input) {
|
|
342
|
+
const date = new Date(input);
|
|
343
|
+
return date.toLocaleDateString("en-US", {
|
|
344
|
+
month: "long",
|
|
345
|
+
day: "numeric",
|
|
346
|
+
year: "numeric"
|
|
347
|
+
});
|
|
348
|
+
}
|
|
349
|
+
function absoluteUrl(path) {
|
|
350
|
+
return `${path}`;
|
|
351
|
+
}
|
|
352
|
+
var uuidV4 = () => {
|
|
353
|
+
return (0, import_uuid.v4)();
|
|
354
|
+
};
|
|
355
|
+
function hexToRgb(hex) {
|
|
356
|
+
const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
|
|
357
|
+
return result ? {
|
|
358
|
+
r: Number.parseInt(result[1], 16),
|
|
359
|
+
g: Number.parseInt(result[2], 16),
|
|
360
|
+
b: Number.parseInt(result[3], 16)
|
|
361
|
+
} : null;
|
|
362
|
+
}
|
|
363
|
+
var isDark = (hex) => {
|
|
364
|
+
const rgb = hexToRgb(hex);
|
|
365
|
+
if (!rgb) {
|
|
366
|
+
return null;
|
|
367
|
+
}
|
|
368
|
+
const { r, g, b } = rgb;
|
|
369
|
+
if (r * 0.299 + g * 0.587 + b * 0.114 > 186) {
|
|
370
|
+
return true;
|
|
371
|
+
}
|
|
372
|
+
return false;
|
|
373
|
+
};
|
|
374
|
+
var evalCode = (code) => {
|
|
375
|
+
try {
|
|
376
|
+
return eval(code);
|
|
377
|
+
} catch (error) {
|
|
378
|
+
console.error("Usertour.js: Error evaluating code:", error);
|
|
379
|
+
return null;
|
|
380
|
+
}
|
|
381
|
+
};
|
|
382
|
+
var getRandomColor = () => {
|
|
383
|
+
const colors = [
|
|
384
|
+
"bg-red-500",
|
|
385
|
+
"bg-orange-500",
|
|
386
|
+
"bg-yellow-500",
|
|
387
|
+
"bg-green-500",
|
|
388
|
+
"bg-teal-500",
|
|
389
|
+
"bg-blue-500",
|
|
390
|
+
"bg-indigo-500",
|
|
391
|
+
"bg-purple-500",
|
|
392
|
+
"bg-pink-500",
|
|
393
|
+
"bg-rose-500"
|
|
394
|
+
];
|
|
395
|
+
return colors[Math.floor(Math.random() * colors.length)];
|
|
396
|
+
};
|
|
397
|
+
|
|
323
398
|
// src/conditions/condition.ts
|
|
324
399
|
var isConditionsActived = (conditions) => {
|
|
325
400
|
if (!conditions || conditions.length === 0) {
|
|
@@ -373,11 +448,7 @@ var evaluateRule = async (condition, options) => {
|
|
|
373
448
|
case import_types2.RulesType.TIME:
|
|
374
449
|
return evaluateTimeCondition(condition);
|
|
375
450
|
case import_types2.RulesType.USER_ATTR:
|
|
376
|
-
return evaluateAttributeCondition(
|
|
377
|
-
condition,
|
|
378
|
-
options.attributes || [],
|
|
379
|
-
options.userAttributes || {}
|
|
380
|
-
);
|
|
451
|
+
return evaluateAttributeCondition(condition, options);
|
|
381
452
|
default:
|
|
382
453
|
return condition.actived || false;
|
|
383
454
|
}
|
|
@@ -649,8 +720,8 @@ describe("evaluateRulesConditions", () => {
|
|
|
649
720
|
{
|
|
650
721
|
id: "email",
|
|
651
722
|
codeName: "email",
|
|
652
|
-
dataType:
|
|
653
|
-
|
|
723
|
+
dataType: import_types3.BizAttributeTypes.String,
|
|
724
|
+
bizType: import_types3.AttributeBizTypes.User
|
|
654
725
|
}
|
|
655
726
|
],
|
|
656
727
|
userAttributes: {
|
|
@@ -2,15 +2,20 @@ import {
|
|
|
2
2
|
evaluateRulesConditions,
|
|
3
3
|
filterConditionsByType,
|
|
4
4
|
isConditionsActived
|
|
5
|
-
} from "../chunk-
|
|
5
|
+
} from "../chunk-VBHUPKP7.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
|
+
import "../chunk-3KG2HTZ3.js";
|
|
10
11
|
import "../chunk-XEO3YXBM.js";
|
|
11
12
|
|
|
12
13
|
// src/__tests__/condition.test.ts
|
|
13
|
-
import {
|
|
14
|
+
import {
|
|
15
|
+
RulesType,
|
|
16
|
+
BizAttributeTypes,
|
|
17
|
+
AttributeBizTypes
|
|
18
|
+
} from "@usertour/types";
|
|
14
19
|
describe("filterConditionsByType", () => {
|
|
15
20
|
test("should return empty array when no conditions provided", () => {
|
|
16
21
|
const result = filterConditionsByType([], [RulesType.CURRENT_PAGE, RulesType.TIME]);
|
|
@@ -259,8 +264,8 @@ describe("evaluateRulesConditions", () => {
|
|
|
259
264
|
{
|
|
260
265
|
id: "email",
|
|
261
266
|
codeName: "email",
|
|
262
|
-
dataType:
|
|
263
|
-
|
|
267
|
+
dataType: BizAttributeTypes.String,
|
|
268
|
+
bizType: AttributeBizTypes.User
|
|
264
269
|
}
|
|
265
270
|
],
|
|
266
271
|
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,10 +3,13 @@ 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";
|
|
10
|
+
import {
|
|
11
|
+
cuid
|
|
12
|
+
} from "./chunk-3KG2HTZ3.js";
|
|
10
13
|
|
|
11
14
|
// src/conditions/condition.ts
|
|
12
15
|
import { RulesType } from "@usertour/types";
|
|
@@ -66,11 +69,7 @@ var evaluateRule = async (condition, options) => {
|
|
|
66
69
|
case RulesType.TIME:
|
|
67
70
|
return evaluateTimeCondition(condition);
|
|
68
71
|
case RulesType.USER_ATTR:
|
|
69
|
-
return evaluateAttributeCondition(
|
|
70
|
-
condition,
|
|
71
|
-
options.attributes || [],
|
|
72
|
-
options.userAttributes || {}
|
|
73
|
-
);
|
|
72
|
+
return evaluateAttributeCondition(condition, options);
|
|
74
73
|
default:
|
|
75
74
|
return condition.actived || false;
|
|
76
75
|
}
|
|
@@ -92,6 +91,38 @@ var evaluateRulesConditions = async (conditions, options = {}) => {
|
|
|
92
91
|
}
|
|
93
92
|
return results;
|
|
94
93
|
};
|
|
94
|
+
var regenerateConditionIds = (conditions) => {
|
|
95
|
+
return conditions.map((condition) => ({
|
|
96
|
+
...condition,
|
|
97
|
+
id: cuid(),
|
|
98
|
+
conditions: condition.conditions ? regenerateConditionIds(condition.conditions) : void 0
|
|
99
|
+
}));
|
|
100
|
+
};
|
|
101
|
+
var assignConditionIds = (conditions) => {
|
|
102
|
+
return conditions.map((condition) => {
|
|
103
|
+
var _a;
|
|
104
|
+
return {
|
|
105
|
+
...condition,
|
|
106
|
+
id: (_a = condition.id) != null ? _a : cuid(),
|
|
107
|
+
conditions: condition.conditions ? assignConditionIds(condition.conditions) : void 0
|
|
108
|
+
};
|
|
109
|
+
});
|
|
110
|
+
};
|
|
111
|
+
var allConditionsHaveIds = (conditions) => {
|
|
112
|
+
if (!conditions || conditions.length === 0)
|
|
113
|
+
return true;
|
|
114
|
+
for (const condition of conditions) {
|
|
115
|
+
if (!condition.id) {
|
|
116
|
+
return false;
|
|
117
|
+
}
|
|
118
|
+
if (condition.type === "group" && condition.conditions) {
|
|
119
|
+
if (!allConditionsHaveIds(condition.conditions)) {
|
|
120
|
+
return false;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return true;
|
|
125
|
+
};
|
|
95
126
|
|
|
96
127
|
export {
|
|
97
128
|
isEqual,
|
|
@@ -99,5 +130,8 @@ export {
|
|
|
99
130
|
isConditionsActived,
|
|
100
131
|
filterConditionsByType,
|
|
101
132
|
evaluateRule,
|
|
102
|
-
evaluateRulesConditions
|
|
133
|
+
evaluateRulesConditions,
|
|
134
|
+
regenerateConditionIds,
|
|
135
|
+
assignConditionIds,
|
|
136
|
+
allConditionsHaveIds
|
|
103
137
|
};
|
|
@@ -4,25 +4,24 @@ import {
|
|
|
4
4
|
} from "@usertour/types";
|
|
5
5
|
import { deepmerge } from "deepmerge-ts";
|
|
6
6
|
var isPublishedInAllEnvironments = (content, environmentList, version) => {
|
|
7
|
-
|
|
7
|
+
var _a;
|
|
8
|
+
if (!((_a = content == null ? void 0 : content.contentOnEnvironments) == null ? void 0 : _a.length) || !(environmentList == null ? void 0 : environmentList.length) || !(version == null ? void 0 : version.id)) {
|
|
9
|
+
return false;
|
|
10
|
+
}
|
|
11
|
+
return environmentList.every(
|
|
8
12
|
(env) => {
|
|
9
|
-
var
|
|
10
|
-
return (
|
|
11
|
-
(item) => item.published && item.publishedVersionId ===
|
|
13
|
+
var _a2;
|
|
14
|
+
return (_a2 = content == null ? void 0 : content.contentOnEnvironments) == null ? void 0 : _a2.some(
|
|
15
|
+
(item) => item.published && item.publishedVersionId === version.id && item.environment.id === env.id
|
|
12
16
|
);
|
|
13
17
|
}
|
|
14
18
|
);
|
|
15
|
-
const isPublishedInOneEnvironment = (content == null ? void 0 : content.published) && (content == null ? void 0 : content.publishedVersionId) === (version == null ? void 0 : version.id) && environmentList && (environmentList == null ? void 0 : environmentList.length) === 1;
|
|
16
|
-
return (content == null ? void 0 : content.contentOnEnvironments) && (content == null ? void 0 : content.contentOnEnvironments.length) > 0 ? Boolean(isPublishedInAllEnvironments2) : Boolean(isPublishedInOneEnvironment);
|
|
17
19
|
};
|
|
18
20
|
var isPublishedAtLeastOneEnvironment = (content) => {
|
|
19
21
|
var _a;
|
|
20
22
|
if ((content == null ? void 0 : content.contentOnEnvironments) && ((_a = content == null ? void 0 : content.contentOnEnvironments) == null ? void 0 : _a.length) > 0) {
|
|
21
23
|
return true;
|
|
22
24
|
}
|
|
23
|
-
if ((content == null ? void 0 : content.published) && (content == null ? void 0 : content.publishedVersionId)) {
|
|
24
|
-
return true;
|
|
25
|
-
}
|
|
26
25
|
return false;
|
|
27
26
|
};
|
|
28
27
|
var rulesSetting = {
|
|
@@ -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 };
|