expf-sigma-node.js 3.0.5 → 3.1.0
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 +19 -16
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "expf-sigma-node.js",
|
|
3
|
-
"version": "3.0
|
|
3
|
+
"version": "3.1.0",
|
|
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
|
@@ -941,15 +941,15 @@ function generateRandomId() {
|
|
|
941
941
|
}
|
|
942
942
|
|
|
943
943
|
// src/helpers/getUserGroup.js
|
|
944
|
-
function getUserGroup(salt, exposureRate,
|
|
944
|
+
function getUserGroup(salt, exposureRate, controlBucket, forcedExp) {
|
|
945
945
|
let userInGroup = "a";
|
|
946
946
|
let currentDiapason = 0;
|
|
947
947
|
if (Math.abs(salt) / 100 <= parseFloat(exposureRate) * 100 || forcedExp) {
|
|
948
948
|
let bucket = Math.abs(salt) % 100;
|
|
949
|
-
for (let i = 0; i <
|
|
950
|
-
currentDiapason +=
|
|
949
|
+
for (let i = 0; i < controlBucket.length; i++) {
|
|
950
|
+
currentDiapason += controlBucket[i].weight * 100;
|
|
951
951
|
if (bucket <= currentDiapason) {
|
|
952
|
-
return userInGroup =
|
|
952
|
+
return userInGroup = controlBucket[i].name;
|
|
953
953
|
}
|
|
954
954
|
}
|
|
955
955
|
return userInGroup;
|
|
@@ -1313,7 +1313,7 @@ var Sigma = class {
|
|
|
1313
1313
|
}
|
|
1314
1314
|
}
|
|
1315
1315
|
}
|
|
1316
|
-
return
|
|
1316
|
+
return null;
|
|
1317
1317
|
}
|
|
1318
1318
|
getSplitById(experiment) {
|
|
1319
1319
|
if (!experiment)
|
|
@@ -1386,7 +1386,8 @@ var Sigma = class {
|
|
|
1386
1386
|
let experiment = null;
|
|
1387
1387
|
let layer = null;
|
|
1388
1388
|
let bounds = [];
|
|
1389
|
-
let
|
|
1389
|
+
let groupName = null;
|
|
1390
|
+
let groupIndex = null;
|
|
1390
1391
|
let forcedUser = false;
|
|
1391
1392
|
let splitById = null;
|
|
1392
1393
|
for (let i = 0; i < sigmaDataLs.experiments.length; i++) {
|
|
@@ -1397,15 +1398,15 @@ var Sigma = class {
|
|
|
1397
1398
|
if (sigmaDataLs.experiments[i]["name"] === experimentName && !experiment) {
|
|
1398
1399
|
splitById = this.getSplitById(sigmaDataLs.experiments[i]);
|
|
1399
1400
|
forcedUser = checkForcedList(sigmaDataLs.experiments[i].forced_user_list, this.sigmaUserData.user.userId);
|
|
1400
|
-
|
|
1401
|
-
experiment = this.experimentDefinition(sigmaDataLs.experiments[i],
|
|
1401
|
+
groupName = this.findUserInForcedGroup(sigmaDataLs.experiments[i]);
|
|
1402
|
+
experiment = this.experimentDefinition(sigmaDataLs.experiments[i], groupName);
|
|
1402
1403
|
break;
|
|
1403
1404
|
}
|
|
1404
1405
|
}
|
|
1405
1406
|
const localStorageGroupName = `sigma_group_${experimentName}`;
|
|
1406
1407
|
if (experiment) {
|
|
1407
|
-
if (!
|
|
1408
|
-
|
|
1408
|
+
if (!groupName) {
|
|
1409
|
+
groupName = this.calcUserInGroup(
|
|
1409
1410
|
experiment.salt,
|
|
1410
1411
|
experiment.allocation,
|
|
1411
1412
|
experiment.groups,
|
|
@@ -1415,13 +1416,14 @@ var Sigma = class {
|
|
|
1415
1416
|
splitById
|
|
1416
1417
|
);
|
|
1417
1418
|
}
|
|
1418
|
-
this.cache.set(localStorageGroupName,
|
|
1419
|
+
this.cache.set(localStorageGroupName, groupName);
|
|
1420
|
+
groupIndex = experiment.groups.findIndex((i) => i.name == groupName);
|
|
1419
1421
|
}
|
|
1420
1422
|
const getParamValue = (paramName) => {
|
|
1421
1423
|
if (!paramName || !experiment) {
|
|
1422
1424
|
return null;
|
|
1423
1425
|
}
|
|
1424
|
-
const
|
|
1426
|
+
const groupName2 = this.cache.get(localStorageGroupName);
|
|
1425
1427
|
let params = null;
|
|
1426
1428
|
for (let i = 0; i < experiment.params.length; i++) {
|
|
1427
1429
|
if (experiment.params[i]["name"] === paramName) {
|
|
@@ -1434,7 +1436,7 @@ var Sigma = class {
|
|
|
1434
1436
|
}
|
|
1435
1437
|
let paramValue = null;
|
|
1436
1438
|
for (let item in params.values) {
|
|
1437
|
-
if (params.values[item].group ===
|
|
1439
|
+
if (params.values[item].group === groupName2) {
|
|
1438
1440
|
paramValue = doTypeConversion(params.type, params.values[item].value);
|
|
1439
1441
|
}
|
|
1440
1442
|
}
|
|
@@ -1444,7 +1446,7 @@ var Sigma = class {
|
|
|
1444
1446
|
if (!flagName || !experiment) {
|
|
1445
1447
|
return null;
|
|
1446
1448
|
}
|
|
1447
|
-
const
|
|
1449
|
+
const groupName2 = this.cache.get(localStorageGroupName);
|
|
1448
1450
|
let flagExperiment = null;
|
|
1449
1451
|
for (let i = 0; i < experiment.feature_flags.length; i++) {
|
|
1450
1452
|
if (experiment.feature_flags[i]["name"] === flagName) {
|
|
@@ -1456,7 +1458,7 @@ var Sigma = class {
|
|
|
1456
1458
|
return null;
|
|
1457
1459
|
let flag = null;
|
|
1458
1460
|
for (let i = 0; i < flagExperiment.groups.length; i++) {
|
|
1459
|
-
if (flagExperiment.groups[i]["group"] ===
|
|
1461
|
+
if (flagExperiment.groups[i]["group"] === groupName2) {
|
|
1460
1462
|
flag = flagExperiment.groups[i];
|
|
1461
1463
|
break;
|
|
1462
1464
|
}
|
|
@@ -1468,7 +1470,8 @@ var Sigma = class {
|
|
|
1468
1470
|
};
|
|
1469
1471
|
return {
|
|
1470
1472
|
getParamValue,
|
|
1471
|
-
getFeatureValue
|
|
1473
|
+
getFeatureValue,
|
|
1474
|
+
groupIndex
|
|
1472
1475
|
};
|
|
1473
1476
|
}
|
|
1474
1477
|
async getAllUserExperiments() {
|