flagsmith-nodejs 2.4.0 → 2.5.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/.vscode/launch.json +18 -0
- package/build/flagsmith-engine/segments/constants.d.ts +2 -0
- package/build/flagsmith-engine/segments/constants.js +4 -2
- package/build/flagsmith-engine/segments/models.js +6 -1
- package/build/sdk/analytics.d.ts +3 -0
- package/build/sdk/analytics.js +15 -1
- package/build/sdk/index.d.ts +2 -0
- package/build/sdk/index.js +10 -2
- package/build/sdk/types.d.ts +2 -0
- package/examples/api-proxy/package-lock.json +19 -25
- package/examples/basic/package-lock.json +29 -32
- package/examples/caching/package-lock.json +158 -78
- package/examples/custom-fetch-agent/package-lock.json +7 -13
- package/examples/local-evaluation/package-lock.json +7 -13
- package/flagsmith-engine/segments/constants.ts +3 -1
- package/flagsmith-engine/segments/models.ts +6 -1
- package/package.json +2 -1
- package/sdk/analytics.ts +23 -12
- package/sdk/index.ts +8 -2
- package/sdk/types.ts +2 -0
- package/tests/engine/unit/segments/segments_model.test.ts +10 -3
- package/tests/sdk/analytics.test.ts +21 -1
- package/tests/sdk/data/environment.json +23 -1
- package/tests/sdk/flagsmith-identity-flags.test.ts +18 -1
- package/tests/sdk/flagsmith.test.ts +25 -9
|
@@ -1078,15 +1078,19 @@
|
|
|
1078
1078
|
}
|
|
1079
1079
|
},
|
|
1080
1080
|
"node_modules/ajv": {
|
|
1081
|
-
"version": "6.
|
|
1082
|
-
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.
|
|
1083
|
-
"integrity": "sha512-
|
|
1081
|
+
"version": "6.12.6",
|
|
1082
|
+
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
|
|
1083
|
+
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
|
|
1084
1084
|
"dev": true,
|
|
1085
1085
|
"dependencies": {
|
|
1086
|
-
"fast-deep-equal": "^
|
|
1086
|
+
"fast-deep-equal": "^3.1.1",
|
|
1087
1087
|
"fast-json-stable-stringify": "^2.0.0",
|
|
1088
1088
|
"json-schema-traverse": "^0.4.1",
|
|
1089
1089
|
"uri-js": "^4.2.2"
|
|
1090
|
+
},
|
|
1091
|
+
"funding": {
|
|
1092
|
+
"type": "github",
|
|
1093
|
+
"url": "https://github.com/sponsors/epoberezkin"
|
|
1090
1094
|
}
|
|
1091
1095
|
},
|
|
1092
1096
|
"node_modules/ansi-escapes": {
|
|
@@ -1099,9 +1103,9 @@
|
|
|
1099
1103
|
}
|
|
1100
1104
|
},
|
|
1101
1105
|
"node_modules/ansi-regex": {
|
|
1102
|
-
"version": "3.0.
|
|
1103
|
-
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.
|
|
1104
|
-
"integrity": "
|
|
1106
|
+
"version": "3.0.1",
|
|
1107
|
+
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz",
|
|
1108
|
+
"integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==",
|
|
1105
1109
|
"dev": true,
|
|
1106
1110
|
"engines": {
|
|
1107
1111
|
"node": ">=4"
|
|
@@ -1235,17 +1239,31 @@
|
|
|
1235
1239
|
}
|
|
1236
1240
|
},
|
|
1237
1241
|
"node_modules/browserslist": {
|
|
1238
|
-
"version": "4.
|
|
1239
|
-
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.
|
|
1240
|
-
"integrity": "sha512-
|
|
1242
|
+
"version": "4.21.4",
|
|
1243
|
+
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz",
|
|
1244
|
+
"integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==",
|
|
1241
1245
|
"dev": true,
|
|
1246
|
+
"funding": [
|
|
1247
|
+
{
|
|
1248
|
+
"type": "opencollective",
|
|
1249
|
+
"url": "https://opencollective.com/browserslist"
|
|
1250
|
+
},
|
|
1251
|
+
{
|
|
1252
|
+
"type": "tidelift",
|
|
1253
|
+
"url": "https://tidelift.com/funding/github/npm/browserslist"
|
|
1254
|
+
}
|
|
1255
|
+
],
|
|
1242
1256
|
"dependencies": {
|
|
1243
|
-
"caniuse-lite": "^1.0.
|
|
1244
|
-
"electron-to-chromium": "^1.
|
|
1245
|
-
"node-releases": "^
|
|
1257
|
+
"caniuse-lite": "^1.0.30001400",
|
|
1258
|
+
"electron-to-chromium": "^1.4.251",
|
|
1259
|
+
"node-releases": "^2.0.6",
|
|
1260
|
+
"update-browserslist-db": "^1.0.9"
|
|
1246
1261
|
},
|
|
1247
1262
|
"bin": {
|
|
1248
1263
|
"browserslist": "cli.js"
|
|
1264
|
+
},
|
|
1265
|
+
"engines": {
|
|
1266
|
+
"node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
|
|
1249
1267
|
}
|
|
1250
1268
|
},
|
|
1251
1269
|
"node_modules/bytes": {
|
|
@@ -1280,10 +1298,20 @@
|
|
|
1280
1298
|
}
|
|
1281
1299
|
},
|
|
1282
1300
|
"node_modules/caniuse-lite": {
|
|
1283
|
-
"version": "1.0.
|
|
1284
|
-
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.
|
|
1285
|
-
"integrity": "sha512-
|
|
1286
|
-
"dev": true
|
|
1301
|
+
"version": "1.0.30001429",
|
|
1302
|
+
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001429.tgz",
|
|
1303
|
+
"integrity": "sha512-511ThLu1hF+5RRRt0zYCf2U2yRr9GPF6m5y90SBCWsvSoYoW7yAGlv/elyPaNfvGCkp6kj/KFZWU0BMA69Prsg==",
|
|
1304
|
+
"dev": true,
|
|
1305
|
+
"funding": [
|
|
1306
|
+
{
|
|
1307
|
+
"type": "opencollective",
|
|
1308
|
+
"url": "https://opencollective.com/browserslist"
|
|
1309
|
+
},
|
|
1310
|
+
{
|
|
1311
|
+
"type": "tidelift",
|
|
1312
|
+
"url": "https://tidelift.com/funding/github/npm/caniuse-lite"
|
|
1313
|
+
}
|
|
1314
|
+
]
|
|
1287
1315
|
},
|
|
1288
1316
|
"node_modules/chalk": {
|
|
1289
1317
|
"version": "2.4.2",
|
|
@@ -1569,9 +1597,9 @@
|
|
|
1569
1597
|
"dev": true
|
|
1570
1598
|
},
|
|
1571
1599
|
"node_modules/electron-to-chromium": {
|
|
1572
|
-
"version": "1.
|
|
1573
|
-
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.
|
|
1574
|
-
"integrity": "sha512-
|
|
1600
|
+
"version": "1.4.284",
|
|
1601
|
+
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz",
|
|
1602
|
+
"integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==",
|
|
1575
1603
|
"dev": true
|
|
1576
1604
|
},
|
|
1577
1605
|
"node_modules/emoji-regex": {
|
|
@@ -1589,6 +1617,15 @@
|
|
|
1589
1617
|
"node": ">= 0.8"
|
|
1590
1618
|
}
|
|
1591
1619
|
},
|
|
1620
|
+
"node_modules/escalade": {
|
|
1621
|
+
"version": "3.1.1",
|
|
1622
|
+
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
|
|
1623
|
+
"integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
|
|
1624
|
+
"dev": true,
|
|
1625
|
+
"engines": {
|
|
1626
|
+
"node": ">=6"
|
|
1627
|
+
}
|
|
1628
|
+
},
|
|
1592
1629
|
"node_modules/escape-html": {
|
|
1593
1630
|
"version": "1.0.3",
|
|
1594
1631
|
"resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
|
|
@@ -1900,9 +1937,9 @@
|
|
|
1900
1937
|
}
|
|
1901
1938
|
},
|
|
1902
1939
|
"node_modules/fast-deep-equal": {
|
|
1903
|
-
"version": "
|
|
1904
|
-
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-
|
|
1905
|
-
"integrity": "
|
|
1940
|
+
"version": "3.1.3",
|
|
1941
|
+
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
|
|
1942
|
+
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
|
|
1906
1943
|
"dev": true
|
|
1907
1944
|
},
|
|
1908
1945
|
"node_modules/fast-diff": {
|
|
@@ -2420,13 +2457,10 @@
|
|
|
2420
2457
|
"dev": true
|
|
2421
2458
|
},
|
|
2422
2459
|
"node_modules/json5": {
|
|
2423
|
-
"version": "2.
|
|
2424
|
-
"resolved": "https://registry.npmjs.org/json5/-/json5-2.
|
|
2425
|
-
"integrity": "sha512-
|
|
2460
|
+
"version": "2.2.3",
|
|
2461
|
+
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
|
|
2462
|
+
"integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
|
|
2426
2463
|
"dev": true,
|
|
2427
|
-
"dependencies": {
|
|
2428
|
-
"minimist": "^1.2.0"
|
|
2429
|
-
},
|
|
2430
2464
|
"bin": {
|
|
2431
2465
|
"json5": "lib/cli.js"
|
|
2432
2466
|
},
|
|
@@ -2659,13 +2693,10 @@
|
|
|
2659
2693
|
}
|
|
2660
2694
|
},
|
|
2661
2695
|
"node_modules/node-releases": {
|
|
2662
|
-
"version": "
|
|
2663
|
-
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-
|
|
2664
|
-
"integrity": "sha512-
|
|
2665
|
-
"dev": true
|
|
2666
|
-
"dependencies": {
|
|
2667
|
-
"semver": "^5.3.0"
|
|
2668
|
-
}
|
|
2696
|
+
"version": "2.0.6",
|
|
2697
|
+
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz",
|
|
2698
|
+
"integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==",
|
|
2699
|
+
"dev": true
|
|
2669
2700
|
},
|
|
2670
2701
|
"node_modules/nodemon": {
|
|
2671
2702
|
"version": "2.0.19",
|
|
@@ -2878,6 +2909,12 @@
|
|
|
2878
2909
|
"integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==",
|
|
2879
2910
|
"dev": true
|
|
2880
2911
|
},
|
|
2912
|
+
"node_modules/picocolors": {
|
|
2913
|
+
"version": "1.0.0",
|
|
2914
|
+
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
|
|
2915
|
+
"integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
|
|
2916
|
+
"dev": true
|
|
2917
|
+
},
|
|
2881
2918
|
"node_modules/picomatch": {
|
|
2882
2919
|
"version": "2.3.1",
|
|
2883
2920
|
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
|
|
@@ -3404,9 +3441,9 @@
|
|
|
3404
3441
|
}
|
|
3405
3442
|
},
|
|
3406
3443
|
"node_modules/strip-ansi/node_modules/ansi-regex": {
|
|
3407
|
-
"version": "4.1.
|
|
3408
|
-
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.
|
|
3409
|
-
"integrity": "sha512-
|
|
3444
|
+
"version": "4.1.1",
|
|
3445
|
+
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
|
|
3446
|
+
"integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
|
|
3410
3447
|
"dev": true,
|
|
3411
3448
|
"engines": {
|
|
3412
3449
|
"node": ">=6"
|
|
@@ -3628,6 +3665,32 @@
|
|
|
3628
3665
|
"node": ">= 0.8"
|
|
3629
3666
|
}
|
|
3630
3667
|
},
|
|
3668
|
+
"node_modules/update-browserslist-db": {
|
|
3669
|
+
"version": "1.0.10",
|
|
3670
|
+
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz",
|
|
3671
|
+
"integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==",
|
|
3672
|
+
"dev": true,
|
|
3673
|
+
"funding": [
|
|
3674
|
+
{
|
|
3675
|
+
"type": "opencollective",
|
|
3676
|
+
"url": "https://opencollective.com/browserslist"
|
|
3677
|
+
},
|
|
3678
|
+
{
|
|
3679
|
+
"type": "tidelift",
|
|
3680
|
+
"url": "https://tidelift.com/funding/github/npm/browserslist"
|
|
3681
|
+
}
|
|
3682
|
+
],
|
|
3683
|
+
"dependencies": {
|
|
3684
|
+
"escalade": "^3.1.1",
|
|
3685
|
+
"picocolors": "^1.0.0"
|
|
3686
|
+
},
|
|
3687
|
+
"bin": {
|
|
3688
|
+
"browserslist-lint": "cli.js"
|
|
3689
|
+
},
|
|
3690
|
+
"peerDependencies": {
|
|
3691
|
+
"browserslist": ">= 4.21.0"
|
|
3692
|
+
}
|
|
3693
|
+
},
|
|
3631
3694
|
"node_modules/uri-js": {
|
|
3632
3695
|
"version": "4.2.2",
|
|
3633
3696
|
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
|
|
@@ -4612,12 +4675,12 @@
|
|
|
4612
4675
|
"requires": {}
|
|
4613
4676
|
},
|
|
4614
4677
|
"ajv": {
|
|
4615
|
-
"version": "6.
|
|
4616
|
-
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.
|
|
4617
|
-
"integrity": "sha512-
|
|
4678
|
+
"version": "6.12.6",
|
|
4679
|
+
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
|
|
4680
|
+
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
|
|
4618
4681
|
"dev": true,
|
|
4619
4682
|
"requires": {
|
|
4620
|
-
"fast-deep-equal": "^
|
|
4683
|
+
"fast-deep-equal": "^3.1.1",
|
|
4621
4684
|
"fast-json-stable-stringify": "^2.0.0",
|
|
4622
4685
|
"json-schema-traverse": "^0.4.1",
|
|
4623
4686
|
"uri-js": "^4.2.2"
|
|
@@ -4630,9 +4693,9 @@
|
|
|
4630
4693
|
"dev": true
|
|
4631
4694
|
},
|
|
4632
4695
|
"ansi-regex": {
|
|
4633
|
-
"version": "3.0.
|
|
4634
|
-
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.
|
|
4635
|
-
"integrity": "
|
|
4696
|
+
"version": "3.0.1",
|
|
4697
|
+
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz",
|
|
4698
|
+
"integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==",
|
|
4636
4699
|
"dev": true
|
|
4637
4700
|
},
|
|
4638
4701
|
"ansi-styles": {
|
|
@@ -4741,14 +4804,15 @@
|
|
|
4741
4804
|
}
|
|
4742
4805
|
},
|
|
4743
4806
|
"browserslist": {
|
|
4744
|
-
"version": "4.
|
|
4745
|
-
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.
|
|
4746
|
-
"integrity": "sha512-
|
|
4807
|
+
"version": "4.21.4",
|
|
4808
|
+
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz",
|
|
4809
|
+
"integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==",
|
|
4747
4810
|
"dev": true,
|
|
4748
4811
|
"requires": {
|
|
4749
|
-
"caniuse-lite": "^1.0.
|
|
4750
|
-
"electron-to-chromium": "^1.
|
|
4751
|
-
"node-releases": "^
|
|
4812
|
+
"caniuse-lite": "^1.0.30001400",
|
|
4813
|
+
"electron-to-chromium": "^1.4.251",
|
|
4814
|
+
"node-releases": "^2.0.6",
|
|
4815
|
+
"update-browserslist-db": "^1.0.9"
|
|
4752
4816
|
}
|
|
4753
4817
|
},
|
|
4754
4818
|
"bytes": {
|
|
@@ -4774,9 +4838,9 @@
|
|
|
4774
4838
|
"dev": true
|
|
4775
4839
|
},
|
|
4776
4840
|
"caniuse-lite": {
|
|
4777
|
-
"version": "1.0.
|
|
4778
|
-
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.
|
|
4779
|
-
"integrity": "sha512-
|
|
4841
|
+
"version": "1.0.30001429",
|
|
4842
|
+
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001429.tgz",
|
|
4843
|
+
"integrity": "sha512-511ThLu1hF+5RRRt0zYCf2U2yRr9GPF6m5y90SBCWsvSoYoW7yAGlv/elyPaNfvGCkp6kj/KFZWU0BMA69Prsg==",
|
|
4780
4844
|
"dev": true
|
|
4781
4845
|
},
|
|
4782
4846
|
"chalk": {
|
|
@@ -4996,9 +5060,9 @@
|
|
|
4996
5060
|
"dev": true
|
|
4997
5061
|
},
|
|
4998
5062
|
"electron-to-chromium": {
|
|
4999
|
-
"version": "1.
|
|
5000
|
-
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.
|
|
5001
|
-
"integrity": "sha512-
|
|
5063
|
+
"version": "1.4.284",
|
|
5064
|
+
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz",
|
|
5065
|
+
"integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==",
|
|
5002
5066
|
"dev": true
|
|
5003
5067
|
},
|
|
5004
5068
|
"emoji-regex": {
|
|
@@ -5013,6 +5077,12 @@
|
|
|
5013
5077
|
"integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
|
|
5014
5078
|
"dev": true
|
|
5015
5079
|
},
|
|
5080
|
+
"escalade": {
|
|
5081
|
+
"version": "3.1.1",
|
|
5082
|
+
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
|
|
5083
|
+
"integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
|
|
5084
|
+
"dev": true
|
|
5085
|
+
},
|
|
5016
5086
|
"escape-html": {
|
|
5017
5087
|
"version": "1.0.3",
|
|
5018
5088
|
"resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
|
|
@@ -5248,9 +5318,9 @@
|
|
|
5248
5318
|
}
|
|
5249
5319
|
},
|
|
5250
5320
|
"fast-deep-equal": {
|
|
5251
|
-
"version": "
|
|
5252
|
-
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-
|
|
5253
|
-
"integrity": "
|
|
5321
|
+
"version": "3.1.3",
|
|
5322
|
+
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
|
|
5323
|
+
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
|
|
5254
5324
|
"dev": true
|
|
5255
5325
|
},
|
|
5256
5326
|
"fast-diff": {
|
|
@@ -5658,13 +5728,10 @@
|
|
|
5658
5728
|
"dev": true
|
|
5659
5729
|
},
|
|
5660
5730
|
"json5": {
|
|
5661
|
-
"version": "2.
|
|
5662
|
-
"resolved": "https://registry.npmjs.org/json5/-/json5-2.
|
|
5663
|
-
"integrity": "sha512-
|
|
5664
|
-
"dev": true
|
|
5665
|
-
"requires": {
|
|
5666
|
-
"minimist": "^1.2.0"
|
|
5667
|
-
}
|
|
5731
|
+
"version": "2.2.3",
|
|
5732
|
+
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
|
|
5733
|
+
"integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
|
|
5734
|
+
"dev": true
|
|
5668
5735
|
},
|
|
5669
5736
|
"levn": {
|
|
5670
5737
|
"version": "0.3.0",
|
|
@@ -5835,13 +5902,10 @@
|
|
|
5835
5902
|
}
|
|
5836
5903
|
},
|
|
5837
5904
|
"node-releases": {
|
|
5838
|
-
"version": "
|
|
5839
|
-
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-
|
|
5840
|
-
"integrity": "sha512-
|
|
5841
|
-
"dev": true
|
|
5842
|
-
"requires": {
|
|
5843
|
-
"semver": "^5.3.0"
|
|
5844
|
-
}
|
|
5905
|
+
"version": "2.0.6",
|
|
5906
|
+
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz",
|
|
5907
|
+
"integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==",
|
|
5908
|
+
"dev": true
|
|
5845
5909
|
},
|
|
5846
5910
|
"nodemon": {
|
|
5847
5911
|
"version": "2.0.19",
|
|
@@ -6003,6 +6067,12 @@
|
|
|
6003
6067
|
"integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==",
|
|
6004
6068
|
"dev": true
|
|
6005
6069
|
},
|
|
6070
|
+
"picocolors": {
|
|
6071
|
+
"version": "1.0.0",
|
|
6072
|
+
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
|
|
6073
|
+
"integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
|
|
6074
|
+
"dev": true
|
|
6075
|
+
},
|
|
6006
6076
|
"picomatch": {
|
|
6007
6077
|
"version": "2.3.1",
|
|
6008
6078
|
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
|
|
@@ -6411,9 +6481,9 @@
|
|
|
6411
6481
|
},
|
|
6412
6482
|
"dependencies": {
|
|
6413
6483
|
"ansi-regex": {
|
|
6414
|
-
"version": "4.1.
|
|
6415
|
-
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.
|
|
6416
|
-
"integrity": "sha512-
|
|
6484
|
+
"version": "4.1.1",
|
|
6485
|
+
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
|
|
6486
|
+
"integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
|
|
6417
6487
|
"dev": true
|
|
6418
6488
|
}
|
|
6419
6489
|
}
|
|
@@ -6585,6 +6655,16 @@
|
|
|
6585
6655
|
"integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
|
|
6586
6656
|
"dev": true
|
|
6587
6657
|
},
|
|
6658
|
+
"update-browserslist-db": {
|
|
6659
|
+
"version": "1.0.10",
|
|
6660
|
+
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz",
|
|
6661
|
+
"integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==",
|
|
6662
|
+
"dev": true,
|
|
6663
|
+
"requires": {
|
|
6664
|
+
"escalade": "^3.1.1",
|
|
6665
|
+
"picocolors": "^1.0.0"
|
|
6666
|
+
}
|
|
6667
|
+
},
|
|
6588
6668
|
"uri-js": {
|
|
6589
6669
|
"version": "4.2.2",
|
|
6590
6670
|
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
|
|
@@ -2457,13 +2457,10 @@
|
|
|
2457
2457
|
"dev": true
|
|
2458
2458
|
},
|
|
2459
2459
|
"node_modules/json5": {
|
|
2460
|
-
"version": "2.
|
|
2461
|
-
"resolved": "https://registry.npmjs.org/json5/-/json5-2.
|
|
2462
|
-
"integrity": "sha512-
|
|
2460
|
+
"version": "2.2.3",
|
|
2461
|
+
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
|
|
2462
|
+
"integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
|
|
2463
2463
|
"dev": true,
|
|
2464
|
-
"dependencies": {
|
|
2465
|
-
"minimist": "^1.2.0"
|
|
2466
|
-
},
|
|
2467
2464
|
"bin": {
|
|
2468
2465
|
"json5": "lib/cli.js"
|
|
2469
2466
|
},
|
|
@@ -5731,13 +5728,10 @@
|
|
|
5731
5728
|
"dev": true
|
|
5732
5729
|
},
|
|
5733
5730
|
"json5": {
|
|
5734
|
-
"version": "2.
|
|
5735
|
-
"resolved": "https://registry.npmjs.org/json5/-/json5-2.
|
|
5736
|
-
"integrity": "sha512-
|
|
5737
|
-
"dev": true
|
|
5738
|
-
"requires": {
|
|
5739
|
-
"minimist": "^1.2.0"
|
|
5740
|
-
}
|
|
5731
|
+
"version": "2.2.3",
|
|
5732
|
+
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
|
|
5733
|
+
"integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
|
|
5734
|
+
"dev": true
|
|
5741
5735
|
},
|
|
5742
5736
|
"levn": {
|
|
5743
5737
|
"version": "0.3.0",
|
|
@@ -2424,13 +2424,10 @@
|
|
|
2424
2424
|
"dev": true
|
|
2425
2425
|
},
|
|
2426
2426
|
"node_modules/json5": {
|
|
2427
|
-
"version": "2.
|
|
2428
|
-
"resolved": "https://registry.npmjs.org/json5/-/json5-2.
|
|
2429
|
-
"integrity": "sha512-
|
|
2427
|
+
"version": "2.2.3",
|
|
2428
|
+
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
|
|
2429
|
+
"integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
|
|
2430
2430
|
"dev": true,
|
|
2431
|
-
"dependencies": {
|
|
2432
|
-
"minimist": "^1.2.0"
|
|
2433
|
-
},
|
|
2434
2431
|
"bin": {
|
|
2435
2432
|
"json5": "lib/cli.js"
|
|
2436
2433
|
},
|
|
@@ -5662,13 +5659,10 @@
|
|
|
5662
5659
|
"dev": true
|
|
5663
5660
|
},
|
|
5664
5661
|
"json5": {
|
|
5665
|
-
"version": "2.
|
|
5666
|
-
"resolved": "https://registry.npmjs.org/json5/-/json5-2.
|
|
5667
|
-
"integrity": "sha512-
|
|
5668
|
-
"dev": true
|
|
5669
|
-
"requires": {
|
|
5670
|
-
"minimist": "^1.2.0"
|
|
5671
|
-
}
|
|
5662
|
+
"version": "2.2.3",
|
|
5663
|
+
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
|
|
5664
|
+
"integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
|
|
5665
|
+
"dev": true
|
|
5672
5666
|
},
|
|
5673
5667
|
"levn": {
|
|
5674
5668
|
"version": "0.3.0",
|
|
@@ -19,6 +19,7 @@ export const PERCENTAGE_SPLIT = 'PERCENTAGE_SPLIT';
|
|
|
19
19
|
export const IS_SET = 'IS_SET';
|
|
20
20
|
export const IS_NOT_SET = 'IS_NOT_SET';
|
|
21
21
|
export const MODULO = 'MODULO';
|
|
22
|
+
export const IN = 'IN';
|
|
22
23
|
|
|
23
24
|
export const CONDITION_OPERATORS = {
|
|
24
25
|
EQUAL,
|
|
@@ -33,5 +34,6 @@ export const CONDITION_OPERATORS = {
|
|
|
33
34
|
PERCENTAGE_SPLIT,
|
|
34
35
|
IS_SET,
|
|
35
36
|
IS_NOT_SET,
|
|
36
|
-
MODULO
|
|
37
|
+
MODULO,
|
|
38
|
+
IN
|
|
37
39
|
};
|
|
@@ -9,6 +9,7 @@ import {
|
|
|
9
9
|
NOT_CONTAINS,
|
|
10
10
|
REGEX,
|
|
11
11
|
MODULO,
|
|
12
|
+
IN,
|
|
12
13
|
CONDITION_OPERATORS
|
|
13
14
|
} from './constants';
|
|
14
15
|
import { isSemver } from './util';
|
|
@@ -47,6 +48,7 @@ export class SegmentConditionModel {
|
|
|
47
48
|
[NOT_CONTAINS]: 'evaluateNotContains',
|
|
48
49
|
[REGEX]: 'evaluateRegex',
|
|
49
50
|
[MODULO]: 'evaluateModulo',
|
|
51
|
+
[IN]: 'evaluateIn'
|
|
50
52
|
};
|
|
51
53
|
|
|
52
54
|
operator: string;
|
|
@@ -74,7 +76,10 @@ export class SegmentConditionModel {
|
|
|
74
76
|
const parts = (this.value).split("|");
|
|
75
77
|
const [divisor, reminder] = [parseFloat(parts[0]), parseFloat(parts[1])];
|
|
76
78
|
return traitValue % divisor === reminder
|
|
77
|
-
}
|
|
79
|
+
},
|
|
80
|
+
evaluateIn: (traitValue: any) => {
|
|
81
|
+
return this.value?.split(',').includes(traitValue.toString())
|
|
82
|
+
},
|
|
78
83
|
};
|
|
79
84
|
|
|
80
85
|
// TODO: move this logic to the evaluator module
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "flagsmith-nodejs",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.5.0",
|
|
4
4
|
"description": "Flagsmith lets you manage features flags and remote config across web, mobile and server side applications. Deliver true Continuous Integration. Get builds out faster. Control who has access to new features.",
|
|
5
5
|
"main": "build/index.js",
|
|
6
6
|
"repository": {
|
|
@@ -54,6 +54,7 @@
|
|
|
54
54
|
"big-integer": "^1.6.51",
|
|
55
55
|
"md5": "^2.3.0",
|
|
56
56
|
"node-fetch": "^2.1.2",
|
|
57
|
+
"pino": "^8.8.0",
|
|
57
58
|
"semver": "^7.3.7",
|
|
58
59
|
"uuid": "^8.3.2"
|
|
59
60
|
},
|
package/sdk/analytics.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import fetch from 'node-fetch';
|
|
2
|
+
import pino, { Logger } from 'pino';
|
|
2
3
|
|
|
3
4
|
const ANALYTICS_ENDPOINT = 'analytics/flags/';
|
|
4
5
|
|
|
@@ -11,21 +12,24 @@ export class AnalyticsProcessor {
|
|
|
11
12
|
private lastFlushed: number;
|
|
12
13
|
analyticsData: { [key: string]: any };
|
|
13
14
|
private requestTimeoutMs: number = 3000;
|
|
15
|
+
private logger: Logger;
|
|
16
|
+
|
|
14
17
|
/**
|
|
15
|
-
* AnalyticsProcessor is used to track how often individual Flags are evaluated within
|
|
18
|
+
* AnalyticsProcessor is used to track how often individual Flags are evaluated within
|
|
16
19
|
* the Flagsmith SDK. Docs: https://docs.flagsmith.com/advanced-use/flag-analytics.
|
|
17
|
-
*
|
|
20
|
+
*
|
|
18
21
|
* @param data.environmentKey environment key obtained from the Flagsmith UI
|
|
19
22
|
* @param data.baseApiUrl base api url to override when using self hosted version
|
|
20
23
|
* @param data.requestTimeoutMs used to tell requests to stop waiting for a response after a
|
|
21
24
|
given number of milliseconds
|
|
22
25
|
*/
|
|
23
|
-
constructor(data: { environmentKey: string; baseApiUrl: string; requestTimeoutMs?: number }) {
|
|
26
|
+
constructor(data: { environmentKey: string; baseApiUrl: string; requestTimeoutMs?: number, logger?: Logger }) {
|
|
24
27
|
this.analyticsEndpoint = data.baseApiUrl + ANALYTICS_ENDPOINT;
|
|
25
28
|
this.environmentKey = data.environmentKey;
|
|
26
29
|
this.lastFlushed = Date.now();
|
|
27
30
|
this.analyticsData = {};
|
|
28
31
|
this.requestTimeoutMs = data.requestTimeoutMs || this.requestTimeoutMs;
|
|
32
|
+
this.logger = data.logger || pino();
|
|
29
33
|
}
|
|
30
34
|
/**
|
|
31
35
|
* Sends all the collected data to the api asynchronously and resets the timer
|
|
@@ -35,15 +39,22 @@ export class AnalyticsProcessor {
|
|
|
35
39
|
return;
|
|
36
40
|
}
|
|
37
41
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
42
|
+
try {
|
|
43
|
+
await fetch(this.analyticsEndpoint, {
|
|
44
|
+
method: 'POST',
|
|
45
|
+
body: JSON.stringify(this.analyticsData),
|
|
46
|
+
timeout: this.requestTimeoutMs,
|
|
47
|
+
headers: {
|
|
48
|
+
'Content-Type': 'application/json',
|
|
49
|
+
'X-Environment-Key': this.environmentKey
|
|
50
|
+
}
|
|
51
|
+
})
|
|
52
|
+
} catch (error) {
|
|
53
|
+
// We don't want failing to write analytics to cause any exceptions in the main
|
|
54
|
+
// thread so we just swallow them here.
|
|
55
|
+
this.logger.warn('Failed to post analytics to Flagsmith API. Not clearing data, will retry.')
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
47
58
|
|
|
48
59
|
this.analyticsData = {};
|
|
49
60
|
this.lastFlushed = Date.now();
|