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.
- package/package.json +1 -1
- 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.
|
|
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.
|
|
115
|
-
|
|
116
|
-
|
|
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
|
-
|
|
999
|
-
|
|
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
|
-
|
|
1003
|
-
this.cache.set(sigmaProfileId, String(value).trim());
|
|
1009
|
+
this.cache.set(sigmaProfileId, String(value).trim());
|
|
1004
1010
|
break;
|
|
1005
1011
|
case "deviceId":
|
|
1006
|
-
|
|
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
|
-
|
|
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
|
|
1475
|
+
return null;
|
|
1467
1476
|
let result = "";
|
|
1468
1477
|
for (let i in sigmaDataLs.experiments) {
|
|
1469
1478
|
let layer = null;
|