expf-sigma-node.js 3.0.2 → 3.0.3

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.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/public/sigma.js +23 -14
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "expf-sigma-node.js",
3
- "version": "3.0.2",
3
+ "version": "3.0.3",
4
4
  "description": "expf-sigma-node.js lets you manage features flags and remote config across web, server side applications. Deliver true Continuous Integration. Get builds out faster. Control who has access to new features.",
5
5
  "main": "public/sigma.js",
6
6
  "keywords": [
package/public/sigma.js CHANGED
@@ -111,10 +111,13 @@ var SigmaUserData = class {
111
111
  }
112
112
  addFlag(flagName, flagRule) {
113
113
  const { user } = this;
114
- user.featureFlags.push({
115
- name: flagName,
116
- rule: flagRule
117
- });
114
+ const userHasFlag = user.featureFlags.find((item) => item.name === flagName);
115
+ if (!userHasFlag) {
116
+ user.featureFlags.push({
117
+ name: flagName,
118
+ rule: flagRule
119
+ });
120
+ }
118
121
  }
119
122
  clearFlags() {
120
123
  this.user.featureFlags = [];
@@ -245,7 +248,7 @@ function compareVersions(versionA, versionB, strict = true) {
245
248
 
246
249
  // src/helpers/delay.js
247
250
  function delay(ms) {
248
- new Promise((resolve) => setTimeout(() => resolve(void 0), ms));
251
+ return new Promise((resolve) => setTimeout(() => resolve(void 0), ms));
249
252
  }
250
253
 
251
254
  // src/helpers/digestHash.js
@@ -942,12 +945,14 @@ var sigmaDeviceId = "sigmaDeviceId";
942
945
  var sigmaPrivateId = "sigmaPrivateId";
943
946
  var sigmaHash = "sigmaHash";
944
947
  var sigmaDataFileLastUpdate = "sigmaDataFileLastUpdate";
948
+ var sigmaExpiration = "sigmaExpiration";
945
949
  var sigmaDataFile = "sigmaDataFile";
946
950
  var sigmaExperiments = "sigmaExperiments";
947
951
  var max_decimal_64 = 18446744073709552e3;
948
952
  var zeta = 8540717056e4;
949
953
  var SHA256 = new sigmaHashes_default.SHA256();
950
954
  var MD5 = new sigmaHashes_default.MD5();
955
+ var expirationDate = 24 * 60 * 60 * 1e3;
951
956
 
952
957
  // src/sigma.js
953
958
  if (typeof import_node_fetch.default.default !== "undefined")
@@ -993,18 +998,18 @@ var Sigma = class {
993
998
  }
994
999
  setSplitIdsToCache(userData) {
995
1000
  for (let [key, value] of Object.entries(userData)) {
1001
+ if (!value || !String(value).trim().length)
1002
+ continue;
996
1003
  switch (key) {
997
1004
  case "userId":
998
- if (value && String(value).trim().length > 0)
999
- this.cache.set(sigmaUserId, String(value).trim());
1005
+ this.cache.set(sigmaUserId, String(value).trim());
1006
+ this.cache.set(sigmaExpiration, new Date().getTime() + expirationDate);
1000
1007
  break;
1001
1008
  case "profileId":
1002
- if (value && String(value).trim().length > 0)
1003
- this.cache.set(sigmaProfileId, String(value).trim());
1009
+ this.cache.set(sigmaProfileId, String(value).trim());
1004
1010
  break;
1005
1011
  case "deviceId":
1006
- if (value && String(value).trim().length > 0)
1007
- this.cache.set(sigmaDeviceId, String(value).trim());
1012
+ this.cache.set(sigmaDeviceId, String(value).trim());
1008
1013
  break;
1009
1014
  }
1010
1015
  }
@@ -1024,8 +1029,9 @@ var Sigma = class {
1024
1029
  const wrapper = (n) => {
1025
1030
  (0, import_node_fetch.default)(url, fetchOptions).then((res) => resolve(res)).catch((err) => {
1026
1031
  if (n > 0) {
1027
- delay(1e3);
1028
- wrapper(--n);
1032
+ delay(1e3).then(() => {
1033
+ wrapper(--n);
1034
+ });
1029
1035
  } else {
1030
1036
  reject(err);
1031
1037
  }
@@ -1316,6 +1322,9 @@ var Sigma = class {
1316
1322
  switch (experiment.split_by) {
1317
1323
  case "userId":
1318
1324
  id = this.cache.get(sigmaUserId) || null;
1325
+ if (this.cache.get(sigmaExpiration) && parseInt(new Date().getTime()) >= parseInt(this.cache.get(sigmaExpiration))) {
1326
+ id = null;
1327
+ }
1319
1328
  break;
1320
1329
  case "profileId":
1321
1330
  id = this.cache.get(sigmaProfileId) || null;
@@ -1463,7 +1472,7 @@ var Sigma = class {
1463
1472
  await this.updateCache();
1464
1473
  const sigmaDataLs = this.cache.parse(sigmaDataFile);
1465
1474
  if (!sigmaDataLs.experiments.length)
1466
- return false;
1475
+ return null;
1467
1476
  let result = "";
1468
1477
  for (let i in sigmaDataLs.experiments) {
1469
1478
  let layer = null;