@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/index.cjs CHANGED
@@ -39,6 +39,8 @@ __export(src_exports, {
39
39
  ArrayProto: () => ArrayProto,
40
40
  XMLHttpRequest: () => XMLHttpRequest,
41
41
  absoluteUrl: () => absoluteUrl,
42
+ allConditionsHaveIds: () => allConditionsHaveIds,
43
+ assignConditionIds: () => assignConditionIds,
42
44
  assignableWindow: () => assignableWindow,
43
45
  buildConfig: () => buildConfig,
44
46
  cn: () => cn,
@@ -110,6 +112,7 @@ __export(src_exports, {
110
112
  nativeIndexOf: () => nativeIndexOf,
111
113
  navigator: () => navigator,
112
114
  parseUrlParams: () => parseUrlParams,
115
+ regenerateConditionIds: () => regenerateConditionIds,
113
116
  removeAuthToken: () => removeAuthToken,
114
117
  setAuthToken: () => setAuthToken,
115
118
  storage: () => storage,
@@ -836,25 +839,24 @@ function isUrl(string) {
836
839
  var import_types3 = require("@usertour/types");
837
840
  var import_deepmerge_ts2 = require("deepmerge-ts");
838
841
  var isPublishedInAllEnvironments = (content, environmentList, version) => {
839
- const isPublishedInAllEnvironments2 = environmentList == null ? void 0 : environmentList.every(
842
+ var _a;
843
+ 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)) {
844
+ return false;
845
+ }
846
+ return environmentList.every(
840
847
  (env) => {
841
- var _a;
842
- return (_a = content == null ? void 0 : content.contentOnEnvironments) == null ? void 0 : _a.find(
843
- (item) => item.published && item.publishedVersionId === (version == null ? void 0 : version.id) && item.environment.id === env.id
848
+ var _a2;
849
+ return (_a2 = content == null ? void 0 : content.contentOnEnvironments) == null ? void 0 : _a2.some(
850
+ (item) => item.published && item.publishedVersionId === version.id && item.environment.id === env.id
844
851
  );
845
852
  }
846
853
  );
847
- 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;
848
- return (content == null ? void 0 : content.contentOnEnvironments) && (content == null ? void 0 : content.contentOnEnvironments.length) > 0 ? Boolean(isPublishedInAllEnvironments2) : Boolean(isPublishedInOneEnvironment);
849
854
  };
850
855
  var isPublishedAtLeastOneEnvironment = (content) => {
851
856
  var _a;
852
857
  if ((content == null ? void 0 : content.contentOnEnvironments) && ((_a = content == null ? void 0 : content.contentOnEnvironments) == null ? void 0 : _a.length) > 0) {
853
858
  return true;
854
859
  }
855
- if ((content == null ? void 0 : content.published) && (content == null ? void 0 : content.publishedVersionId)) {
856
- return true;
857
- }
858
860
  return false;
859
861
  };
860
862
  var rulesSetting = {
@@ -1127,20 +1129,27 @@ var evaluateTimeCondition = (rules) => {
1127
1129
  // src/conditions/attribute.ts
1128
1130
  var import_types4 = require("@usertour/types");
1129
1131
  var import_date_fns2 = require("date-fns");
1130
- function evaluateAttributeCondition(condition, attributes, userAttributes) {
1132
+ function evaluateAttributeCondition(condition, options) {
1131
1133
  const { data } = condition;
1132
1134
  if (!data) {
1133
1135
  return false;
1134
1136
  }
1135
1137
  const { logic, value, attrId, value2, listValues = [] } = data;
1136
- if (!attrId) {
1138
+ const {
1139
+ attributes,
1140
+ userAttributes = {},
1141
+ companyAttributes = {},
1142
+ membershipAttributes = {}
1143
+ } = options;
1144
+ if (!attrId || !attributes) {
1137
1145
  return false;
1138
1146
  }
1139
1147
  const attr = attributes.find((attr2) => attr2.id === attrId);
1140
1148
  if (!attr) {
1141
1149
  return false;
1142
1150
  }
1143
- const actualValue = getAttributeValue(attr.codeName, userAttributes);
1151
+ const bizAttributes = attr.bizType === import_types4.AttributeBizTypes.Company ? companyAttributes : attr.bizType === import_types4.AttributeBizTypes.Membership ? membershipAttributes : userAttributes;
1152
+ const actualValue = getAttributeValue(attr.codeName, bizAttributes);
1144
1153
  if (attr.dataType === import_types4.BizAttributeTypes.String) {
1145
1154
  return evaluateStringCondition(logic, actualValue, value);
1146
1155
  }
@@ -1158,8 +1167,8 @@ function evaluateAttributeCondition(condition, attributes, userAttributes) {
1158
1167
  }
1159
1168
  return false;
1160
1169
  }
1161
- function getAttributeValue(codeName, userAttributes) {
1162
- return userAttributes == null ? void 0 : userAttributes[codeName];
1170
+ function getAttributeValue(codeName, attributes) {
1171
+ return attributes == null ? void 0 : attributes[codeName];
1163
1172
  }
1164
1173
  function evaluateStringCondition(logic, actualValue, expectedValue) {
1165
1174
  const stringValue = actualValue === null || actualValue === void 0 ? "" : String(actualValue);
@@ -1360,11 +1369,7 @@ var evaluateRule = async (condition, options) => {
1360
1369
  case import_types5.RulesType.TIME:
1361
1370
  return evaluateTimeCondition(condition);
1362
1371
  case import_types5.RulesType.USER_ATTR:
1363
- return evaluateAttributeCondition(
1364
- condition,
1365
- options.attributes || [],
1366
- options.userAttributes || {}
1367
- );
1372
+ return evaluateAttributeCondition(condition, options);
1368
1373
  default:
1369
1374
  return condition.actived || false;
1370
1375
  }
@@ -1386,12 +1391,46 @@ var evaluateRulesConditions = async (conditions, options = {}) => {
1386
1391
  }
1387
1392
  return results;
1388
1393
  };
1394
+ var regenerateConditionIds = (conditions) => {
1395
+ return conditions.map((condition) => ({
1396
+ ...condition,
1397
+ id: cuid(),
1398
+ conditions: condition.conditions ? regenerateConditionIds(condition.conditions) : void 0
1399
+ }));
1400
+ };
1401
+ var assignConditionIds = (conditions) => {
1402
+ return conditions.map((condition) => {
1403
+ var _a;
1404
+ return {
1405
+ ...condition,
1406
+ id: (_a = condition.id) != null ? _a : cuid(),
1407
+ conditions: condition.conditions ? assignConditionIds(condition.conditions) : void 0
1408
+ };
1409
+ });
1410
+ };
1411
+ var allConditionsHaveIds = (conditions) => {
1412
+ if (!conditions || conditions.length === 0)
1413
+ return true;
1414
+ for (const condition of conditions) {
1415
+ if (!condition.id) {
1416
+ return false;
1417
+ }
1418
+ if (condition.type === "group" && condition.conditions) {
1419
+ if (!allConditionsHaveIds(condition.conditions)) {
1420
+ return false;
1421
+ }
1422
+ }
1423
+ }
1424
+ return true;
1425
+ };
1389
1426
  // Annotate the CommonJS export names for ESM import in node:
1390
1427
  0 && (module.exports = {
1391
1428
  AbortController,
1392
1429
  ArrayProto,
1393
1430
  XMLHttpRequest,
1394
1431
  absoluteUrl,
1432
+ allConditionsHaveIds,
1433
+ assignConditionIds,
1395
1434
  assignableWindow,
1396
1435
  buildConfig,
1397
1436
  cn,
@@ -1463,6 +1502,7 @@ var evaluateRulesConditions = async (conditions, options = {}) => {
1463
1502
  nativeIndexOf,
1464
1503
  navigator,
1465
1504
  parseUrlParams,
1505
+ regenerateConditionIds,
1466
1506
  removeAuthToken,
1467
1507
  setAuthToken,
1468
1508
  storage,
package/dist/index.d.cts CHANGED
@@ -9,7 +9,7 @@ export { buildConfig, defaultContentConfig, isPublishedAtLeastOneEnvironment, is
9
9
  export { deepClone, parseUrlParams, wait } 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, evaluateRule, evaluateRulesConditions, filterConditionsByType, isConditionsActived } from './conditions/condition.cjs';
12
+ export { allConditionsHaveIds, assignConditionIds, conditionsIsSame, evaluateRule, evaluateRulesConditions, filterConditionsByType, isConditionsActived, regenerateConditionIds } 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, parseUrlParams, wait } 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, evaluateRule, evaluateRulesConditions, filterConditionsByType, isConditionsActived } from './conditions/condition.js';
12
+ export { allConditionsHaveIds, assignConditionIds, conditionsIsSame, evaluateRule, evaluateRulesConditions, filterConditionsByType, isConditionsActived, regenerateConditionIds } 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
@@ -11,13 +11,16 @@ import {
11
11
  wait
12
12
  } from "./chunk-5C3J4DM2.js";
13
13
  import {
14
+ allConditionsHaveIds,
15
+ assignConditionIds,
14
16
  conditionsIsSame,
15
17
  evaluateRule,
16
18
  evaluateRulesConditions,
17
19
  filterConditionsByType,
18
20
  isConditionsActived,
19
- isEqual
20
- } from "./chunk-E2IJQFKH.js";
21
+ isEqual,
22
+ regenerateConditionIds
23
+ } from "./chunk-VBHUPKP7.js";
21
24
  import {
22
25
  evaluateUrlCondition,
23
26
  isMatchUrlPattern
@@ -25,7 +28,7 @@ import {
25
28
  import "./chunk-PAESAL23.js";
26
29
  import {
27
30
  evaluateAttributeCondition
28
- } from "./chunk-PBZSPV5R.js";
31
+ } from "./chunk-P46FJFKP.js";
29
32
  import {
30
33
  evaluateTimeCondition
31
34
  } from "./chunk-CEK3SCQO.js";
@@ -41,7 +44,7 @@ import {
41
44
  defaultContentConfig,
42
45
  isPublishedAtLeastOneEnvironment,
43
46
  isPublishedInAllEnvironments
44
- } from "./chunk-4LLDSAHJ.js";
47
+ } from "./chunk-VWNWWZCH.js";
45
48
  import {
46
49
  convertSettings,
47
50
  convertToCssVars,
@@ -119,6 +122,8 @@ export {
119
122
  ArrayProto,
120
123
  XMLHttpRequest,
121
124
  absoluteUrl,
125
+ allConditionsHaveIds,
126
+ assignConditionIds,
122
127
  assignableWindow,
123
128
  buildConfig,
124
129
  cn,
@@ -190,6 +195,7 @@ export {
190
195
  nativeIndexOf,
191
196
  navigator,
192
197
  parseUrlParams,
198
+ regenerateConditionIds,
193
199
  removeAuthToken,
194
200
  setAuthToken,
195
201
  storage,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@usertour/helpers",
3
- "version": "0.0.29",
3
+ "version": "0.0.31",
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.17",
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",