@usertour/helpers 0.0.20 → 0.0.21

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.
@@ -2,7 +2,7 @@ import {
2
2
  activedRulesConditions,
3
3
  filterConditionsByType,
4
4
  isConditionsActived
5
- } from "../chunk-TB7JGI2Q.js";
5
+ } from "../chunk-UNXDVBM3.js";
6
6
  import "../chunk-YYIGUZNZ.js";
7
7
  import "../chunk-PAESAL23.js";
8
8
  import "../chunk-PBZSPV5R.js";
@@ -93,5 +93,6 @@ export {
93
93
  conditionsIsSame,
94
94
  isConditionsActived,
95
95
  filterConditionsByType,
96
+ evaluateRule,
96
97
  activedRulesConditions
97
98
  };
@@ -32,6 +32,7 @@ var condition_exports = {};
32
32
  __export(condition_exports, {
33
33
  activedRulesConditions: () => activedRulesConditions,
34
34
  conditionsIsSame: () => conditionsIsSame,
35
+ evaluateRule: () => evaluateRule,
35
36
  filterConditionsByType: () => filterConditionsByType,
36
37
  isConditionsActived: () => isConditionsActived,
37
38
  isEqual: () => import_fast_deep_equal.default
@@ -410,6 +411,7 @@ var activedRulesConditions = (conditions, options = {}) => {
410
411
  0 && (module.exports = {
411
412
  activedRulesConditions,
412
413
  conditionsIsSame,
414
+ evaluateRule,
413
415
  filterConditionsByType,
414
416
  isConditionsActived,
415
417
  isEqual
@@ -10,6 +10,31 @@ declare const isConditionsActived: (conditions: RulesCondition[]) => boolean;
10
10
  * @returns Filtered conditions array
11
11
  */
12
12
  declare const filterConditionsByType: (conditions: RulesCondition[], allowedTypes: RulesType[]) => RulesCondition[];
13
+ /**
14
+ * Evaluate and activate rules conditions with enhanced context and type control
15
+ *
16
+ * @param conditions - Array of rules conditions to evaluate
17
+ * @param options - Evaluation options including context, type control, and ID overrides
18
+ *
19
+ * @example
20
+ * const result = await activedRulesConditions(conditions, {
21
+ * clientContext: {
22
+ * page_url: 'https://example.com',
23
+ * viewport_width: 1920,
24
+ * viewport_height: 1080
25
+ * },
26
+ * attributes: userAttributes,
27
+ * userAttributes: userData,
28
+ * typeControl: {
29
+ * [RulesType.CURRENT_PAGE]: true,
30
+ * [RulesType.TIME]: false,
31
+ * [RulesType.USER_ATTR]: true
32
+ * },
33
+ * activatedIds: ['rule-1', 'rule-2'],
34
+ * deactivatedIds: ['rule-3']
35
+ * });
36
+ */
37
+ declare const evaluateRule: (rule: RulesCondition, options: RulesEvaluationOptions) => boolean;
13
38
  declare const activedRulesConditions: (conditions: RulesCondition[], options?: RulesEvaluationOptions) => RulesCondition[];
14
39
 
15
- export { activedRulesConditions, conditionsIsSame, filterConditionsByType, isConditionsActived };
40
+ export { activedRulesConditions, conditionsIsSame, evaluateRule, filterConditionsByType, isConditionsActived };
@@ -10,6 +10,31 @@ declare const isConditionsActived: (conditions: RulesCondition[]) => boolean;
10
10
  * @returns Filtered conditions array
11
11
  */
12
12
  declare const filterConditionsByType: (conditions: RulesCondition[], allowedTypes: RulesType[]) => RulesCondition[];
13
+ /**
14
+ * Evaluate and activate rules conditions with enhanced context and type control
15
+ *
16
+ * @param conditions - Array of rules conditions to evaluate
17
+ * @param options - Evaluation options including context, type control, and ID overrides
18
+ *
19
+ * @example
20
+ * const result = await activedRulesConditions(conditions, {
21
+ * clientContext: {
22
+ * page_url: 'https://example.com',
23
+ * viewport_width: 1920,
24
+ * viewport_height: 1080
25
+ * },
26
+ * attributes: userAttributes,
27
+ * userAttributes: userData,
28
+ * typeControl: {
29
+ * [RulesType.CURRENT_PAGE]: true,
30
+ * [RulesType.TIME]: false,
31
+ * [RulesType.USER_ATTR]: true
32
+ * },
33
+ * activatedIds: ['rule-1', 'rule-2'],
34
+ * deactivatedIds: ['rule-3']
35
+ * });
36
+ */
37
+ declare const evaluateRule: (rule: RulesCondition, options: RulesEvaluationOptions) => boolean;
13
38
  declare const activedRulesConditions: (conditions: RulesCondition[], options?: RulesEvaluationOptions) => RulesCondition[];
14
39
 
15
- export { activedRulesConditions, conditionsIsSame, filterConditionsByType, isConditionsActived };
40
+ export { activedRulesConditions, conditionsIsSame, evaluateRule, filterConditionsByType, isConditionsActived };
@@ -1,10 +1,11 @@
1
1
  import {
2
2
  activedRulesConditions,
3
3
  conditionsIsSame,
4
+ evaluateRule,
4
5
  filterConditionsByType,
5
6
  isConditionsActived,
6
7
  isEqual
7
- } from "../chunk-TB7JGI2Q.js";
8
+ } from "../chunk-UNXDVBM3.js";
8
9
  import "../chunk-YYIGUZNZ.js";
9
10
  import "../chunk-PAESAL23.js";
10
11
  import "../chunk-PBZSPV5R.js";
@@ -13,6 +14,7 @@ import "../chunk-XEO3YXBM.js";
13
14
  export {
14
15
  activedRulesConditions,
15
16
  conditionsIsSame,
17
+ evaluateRule,
16
18
  filterConditionsByType,
17
19
  isConditionsActived,
18
20
  isEqual
@@ -30,8 +30,10 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
30
30
  // src/conditions/index.ts
31
31
  var conditions_exports = {};
32
32
  __export(conditions_exports, {
33
+ activedRulesConditions: () => activedRulesConditions,
33
34
  conditionsIsSame: () => conditionsIsSame,
34
35
  evaluateAttributeCondition: () => evaluateAttributeCondition,
36
+ evaluateRule: () => evaluateRule,
35
37
  evaluateTimeCondition: () => evaluateTimeCondition,
36
38
  evaluateUrlCondition: () => evaluateUrlCondition,
37
39
  filterConditionsByType: () => filterConditionsByType,
@@ -370,10 +372,53 @@ var filterConditionsByType = (conditions, allowedTypes) => {
370
372
  return condition;
371
373
  });
372
374
  };
375
+ var evaluateRule = (rule, options) => {
376
+ var _a;
377
+ const { typeControl = {}, activatedIds, deactivatedIds } = options;
378
+ const ruleId = rule.id;
379
+ if (activatedIds == null ? void 0 : activatedIds.includes(ruleId))
380
+ return true;
381
+ if (deactivatedIds == null ? void 0 : deactivatedIds.includes(ruleId))
382
+ return false;
383
+ if (typeControl[rule.type] === false) {
384
+ return rule.actived || false;
385
+ }
386
+ switch (rule.type) {
387
+ case import_types2.RulesType.CURRENT_PAGE:
388
+ return evaluateUrlCondition(rule, ((_a = options.clientContext) == null ? void 0 : _a.page_url) || "");
389
+ case import_types2.RulesType.TIME:
390
+ return evaluateTimeCondition(rule);
391
+ case import_types2.RulesType.USER_ATTR:
392
+ case import_types2.RulesType.COMPANY_ATTR:
393
+ return evaluateAttributeCondition(
394
+ rule,
395
+ options.attributes || [],
396
+ options.userAttributes || {}
397
+ );
398
+ default:
399
+ return rule.actived || false;
400
+ }
401
+ };
402
+ var activedRulesConditions = (conditions, options = {}) => {
403
+ return conditions.map((rule) => {
404
+ if (rule.type === "group" && rule.conditions) {
405
+ return {
406
+ ...rule,
407
+ conditions: activedRulesConditions(rule.conditions, options)
408
+ };
409
+ }
410
+ return {
411
+ ...rule,
412
+ actived: evaluateRule(rule, options)
413
+ };
414
+ });
415
+ };
373
416
  // Annotate the CommonJS export names for ESM import in node:
374
417
  0 && (module.exports = {
418
+ activedRulesConditions,
375
419
  conditionsIsSame,
376
420
  evaluateAttributeCondition,
421
+ evaluateRule,
377
422
  evaluateTimeCondition,
378
423
  evaluateUrlCondition,
379
424
  filterConditionsByType,
@@ -1,4 +1,4 @@
1
- export { conditionsIsSame, filterConditionsByType, isConditionsActived } from './condition.cjs';
1
+ export { activedRulesConditions, conditionsIsSame, evaluateRule, filterConditionsByType, isConditionsActived } from './condition.cjs';
2
2
  export { evaluateUrlCondition, isMatchUrlPattern } from './url.cjs';
3
3
  export { evaluateTimeCondition } from './time.cjs';
4
4
  export { evaluateAttributeCondition } from './attribute.cjs';
@@ -1,4 +1,4 @@
1
- export { conditionsIsSame, filterConditionsByType, isConditionsActived } from './condition.js';
1
+ export { activedRulesConditions, conditionsIsSame, evaluateRule, filterConditionsByType, isConditionsActived } from './condition.js';
2
2
  export { evaluateUrlCondition, isMatchUrlPattern } from './url.js';
3
3
  export { evaluateTimeCondition } from './time.js';
4
4
  export { evaluateAttributeCondition } from './attribute.js';
@@ -1,10 +1,12 @@
1
1
  import "../chunk-7ODE2AIC.js";
2
2
  import {
3
+ activedRulesConditions,
3
4
  conditionsIsSame,
5
+ evaluateRule,
4
6
  filterConditionsByType,
5
7
  isConditionsActived,
6
8
  isEqual
7
- } from "../chunk-TB7JGI2Q.js";
9
+ } from "../chunk-UNXDVBM3.js";
8
10
  import {
9
11
  evaluateUrlCondition,
10
12
  isMatchUrlPattern
@@ -18,8 +20,10 @@ import {
18
20
  } from "../chunk-CEK3SCQO.js";
19
21
  import "../chunk-XEO3YXBM.js";
20
22
  export {
23
+ activedRulesConditions,
21
24
  conditionsIsSame,
22
25
  evaluateAttributeCondition,
26
+ evaluateRule,
23
27
  evaluateTimeCondition,
24
28
  evaluateUrlCondition,
25
29
  filterConditionsByType,
package/dist/index.cjs CHANGED
@@ -39,6 +39,7 @@ __export(src_exports, {
39
39
  ArrayProto: () => ArrayProto,
40
40
  XMLHttpRequest: () => XMLHttpRequest,
41
41
  absoluteUrl: () => absoluteUrl,
42
+ activedRulesConditions: () => activedRulesConditions,
42
43
  assignableWindow: () => assignableWindow,
43
44
  buildConfig: () => buildConfig,
44
45
  cn: () => cn,
@@ -52,6 +53,7 @@ __export(src_exports, {
52
53
  document: () => document,
53
54
  evalCode: () => evalCode,
54
55
  evaluateAttributeCondition: () => evaluateAttributeCondition,
56
+ evaluateRule: () => evaluateRule,
55
57
  evaluateTimeCondition: () => evaluateTimeCondition,
56
58
  evaluateUrlCondition: () => evaluateUrlCondition,
57
59
  fetch: () => fetch,
@@ -1291,12 +1293,54 @@ var filterConditionsByType = (conditions, allowedTypes) => {
1291
1293
  return condition;
1292
1294
  });
1293
1295
  };
1296
+ var evaluateRule = (rule, options) => {
1297
+ var _a;
1298
+ const { typeControl = {}, activatedIds, deactivatedIds } = options;
1299
+ const ruleId = rule.id;
1300
+ if (activatedIds == null ? void 0 : activatedIds.includes(ruleId))
1301
+ return true;
1302
+ if (deactivatedIds == null ? void 0 : deactivatedIds.includes(ruleId))
1303
+ return false;
1304
+ if (typeControl[rule.type] === false) {
1305
+ return rule.actived || false;
1306
+ }
1307
+ switch (rule.type) {
1308
+ case import_types5.RulesType.CURRENT_PAGE:
1309
+ return evaluateUrlCondition(rule, ((_a = options.clientContext) == null ? void 0 : _a.page_url) || "");
1310
+ case import_types5.RulesType.TIME:
1311
+ return evaluateTimeCondition(rule);
1312
+ case import_types5.RulesType.USER_ATTR:
1313
+ case import_types5.RulesType.COMPANY_ATTR:
1314
+ return evaluateAttributeCondition(
1315
+ rule,
1316
+ options.attributes || [],
1317
+ options.userAttributes || {}
1318
+ );
1319
+ default:
1320
+ return rule.actived || false;
1321
+ }
1322
+ };
1323
+ var activedRulesConditions = (conditions, options = {}) => {
1324
+ return conditions.map((rule) => {
1325
+ if (rule.type === "group" && rule.conditions) {
1326
+ return {
1327
+ ...rule,
1328
+ conditions: activedRulesConditions(rule.conditions, options)
1329
+ };
1330
+ }
1331
+ return {
1332
+ ...rule,
1333
+ actived: evaluateRule(rule, options)
1334
+ };
1335
+ });
1336
+ };
1294
1337
  // Annotate the CommonJS export names for ESM import in node:
1295
1338
  0 && (module.exports = {
1296
1339
  AbortController,
1297
1340
  ArrayProto,
1298
1341
  XMLHttpRequest,
1299
1342
  absoluteUrl,
1343
+ activedRulesConditions,
1300
1344
  assignableWindow,
1301
1345
  buildConfig,
1302
1346
  cn,
@@ -1310,6 +1354,7 @@ var filterConditionsByType = (conditions, allowedTypes) => {
1310
1354
  document,
1311
1355
  evalCode,
1312
1356
  evaluateAttributeCondition,
1357
+ evaluateRule,
1313
1358
  evaluateTimeCondition,
1314
1359
  evaluateUrlCondition,
1315
1360
  fetch,
package/dist/index.d.cts CHANGED
@@ -9,7 +9,7 @@ export { buildConfig, defaultContentConfig, isPublishedAtLeastOneEnvironment, is
9
9
  export { deepClone } from './utils.cjs';
10
10
  export { generateAutoStateColors, hexToHSLString, hexToRGBStr } from './color.cjs';
11
11
  export { absoluteUrl, cn, cuid, evalCode, formatDate, getRandomColor, hexToRgb, isDark, uuidV4 } from './helper.cjs';
12
- export { conditionsIsSame, filterConditionsByType, isConditionsActived } from './conditions/condition.cjs';
12
+ export { activedRulesConditions, conditionsIsSame, evaluateRule, filterConditionsByType, isConditionsActived } from './conditions/condition.cjs';
13
13
  export { evaluateUrlCondition, isMatchUrlPattern } from './conditions/url.cjs';
14
14
  export { evaluateTimeCondition } from './conditions/time.cjs';
15
15
  export { evaluateAttributeCondition } from './conditions/attribute.cjs';
package/dist/index.d.ts CHANGED
@@ -9,7 +9,7 @@ export { buildConfig, defaultContentConfig, isPublishedAtLeastOneEnvironment, is
9
9
  export { deepClone } from './utils.js';
10
10
  export { generateAutoStateColors, hexToHSLString, hexToRGBStr } from './color.js';
11
11
  export { absoluteUrl, cn, cuid, evalCode, formatDate, getRandomColor, hexToRgb, isDark, uuidV4 } from './helper.js';
12
- export { conditionsIsSame, filterConditionsByType, isConditionsActived } from './conditions/condition.js';
12
+ export { activedRulesConditions, conditionsIsSame, evaluateRule, filterConditionsByType, isConditionsActived } from './conditions/condition.js';
13
13
  export { evaluateUrlCondition, isMatchUrlPattern } from './conditions/url.js';
14
14
  export { evaluateTimeCondition } from './conditions/time.js';
15
15
  export { evaluateAttributeCondition } from './conditions/attribute.js';
package/dist/index.js CHANGED
@@ -9,11 +9,13 @@ import {
9
9
  deepClone
10
10
  } from "./chunk-2AEGAICC.js";
11
11
  import {
12
+ activedRulesConditions,
12
13
  conditionsIsSame,
14
+ evaluateRule,
13
15
  filterConditionsByType,
14
16
  isConditionsActived,
15
17
  isEqual
16
- } from "./chunk-TB7JGI2Q.js";
18
+ } from "./chunk-UNXDVBM3.js";
17
19
  import {
18
20
  evaluateUrlCondition,
19
21
  isMatchUrlPattern
@@ -115,6 +117,7 @@ export {
115
117
  ArrayProto,
116
118
  XMLHttpRequest,
117
119
  absoluteUrl,
120
+ activedRulesConditions,
118
121
  assignableWindow,
119
122
  buildConfig,
120
123
  cn,
@@ -128,6 +131,7 @@ export {
128
131
  document,
129
132
  evalCode,
130
133
  evaluateAttributeCondition,
134
+ evaluateRule,
131
135
  evaluateTimeCondition,
132
136
  evaluateUrlCondition,
133
137
  fetch,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@usertour/helpers",
3
- "version": "0.0.20",
3
+ "version": "0.0.21",
4
4
  "type": "module",
5
5
  "description": "Utility functions and helpers shared across the UserTour project",
6
6
  "homepage": "https://www.usertour.io",