@statsig/client-core 3.14.1 → 3.15.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 +8 -1
- package/src/EventLogger.js +1 -0
- package/src/NetworkCore.d.ts +1 -0
- package/src/StableID.d.ts +3 -0
- package/src/StableID.js +49 -8
- package/src/StatsigClientBase.js +7 -0
- package/src/StatsigMetadata.d.ts +1 -1
- package/src/StatsigMetadata.js +1 -1
- package/src/StatsigOptionsCommon.d.ts +4 -0
package/package.json
CHANGED
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@statsig/client-core",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.15.0",
|
|
4
|
+
"license": "ISC",
|
|
5
|
+
"homepage": "https://github.com/statsig-io/js-client-monorepo",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "github:statsig-io/js-client-monorepo",
|
|
9
|
+
"directory": "packages/client-core"
|
|
10
|
+
},
|
|
4
11
|
"dependencies": {},
|
|
5
12
|
"type": "commonjs",
|
|
6
13
|
"main": "./src/index.js",
|
package/src/EventLogger.js
CHANGED
package/src/NetworkCore.d.ts
CHANGED
package/src/StableID.d.ts
CHANGED
package/src/StableID.js
CHANGED
|
@@ -3,24 +3,41 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.StableID = void 0;
|
|
4
4
|
const CacheKey_1 = require("./CacheKey");
|
|
5
5
|
const Log_1 = require("./Log");
|
|
6
|
+
const SafeJs_1 = require("./SafeJs");
|
|
6
7
|
const StorageProvider_1 = require("./StorageProvider");
|
|
7
8
|
const UUID_1 = require("./UUID");
|
|
8
9
|
const PROMISE_MAP = {};
|
|
10
|
+
const COOKIE_ENABLED_MAP = {};
|
|
9
11
|
exports.StableID = {
|
|
12
|
+
cookiesEnabled: false,
|
|
13
|
+
randomID: Math.random().toString(36),
|
|
10
14
|
get: (sdkKey) => {
|
|
11
|
-
if (PROMISE_MAP[sdkKey]
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
if (PROMISE_MAP[sdkKey] != null) {
|
|
16
|
+
return PROMISE_MAP[sdkKey];
|
|
17
|
+
}
|
|
18
|
+
let stableID = null;
|
|
19
|
+
stableID = _loadFromCookie(sdkKey);
|
|
20
|
+
if (stableID != null) {
|
|
17
21
|
PROMISE_MAP[sdkKey] = stableID;
|
|
22
|
+
_persistToStorage(stableID, sdkKey);
|
|
23
|
+
return stableID;
|
|
24
|
+
}
|
|
25
|
+
stableID = _loadFromStorage(sdkKey);
|
|
26
|
+
if (stableID == null) {
|
|
27
|
+
stableID = (0, UUID_1.getUUID)();
|
|
18
28
|
}
|
|
19
|
-
|
|
29
|
+
_persistToStorage(stableID, sdkKey);
|
|
30
|
+
_persistToCookie(stableID, sdkKey);
|
|
31
|
+
PROMISE_MAP[sdkKey] = stableID;
|
|
32
|
+
return stableID;
|
|
20
33
|
},
|
|
21
34
|
setOverride: (override, sdkKey) => {
|
|
22
35
|
PROMISE_MAP[sdkKey] = override;
|
|
23
36
|
_persistToStorage(override, sdkKey);
|
|
37
|
+
_persistToCookie(override, sdkKey);
|
|
38
|
+
},
|
|
39
|
+
_setCookiesEnabled: (sdkKey, cookiesEnabled) => {
|
|
40
|
+
COOKIE_ENABLED_MAP[sdkKey] = cookiesEnabled;
|
|
24
41
|
},
|
|
25
42
|
};
|
|
26
43
|
function _getStableIDStorageKey(sdkKey) {
|
|
@@ -32,10 +49,34 @@ function _persistToStorage(stableID, sdkKey) {
|
|
|
32
49
|
(0, StorageProvider_1._setObjectInStorage)(storageKey, stableID);
|
|
33
50
|
}
|
|
34
51
|
catch (e) {
|
|
35
|
-
Log_1.Log.warn('Failed to save StableID');
|
|
52
|
+
Log_1.Log.warn('Failed to save StableID to storage');
|
|
36
53
|
}
|
|
37
54
|
}
|
|
38
55
|
function _loadFromStorage(sdkKey) {
|
|
39
56
|
const storageKey = _getStableIDStorageKey(sdkKey);
|
|
40
57
|
return (0, StorageProvider_1._getObjectFromStorage)(storageKey);
|
|
41
58
|
}
|
|
59
|
+
function _loadFromCookie(sdkKey) {
|
|
60
|
+
if (!COOKIE_ENABLED_MAP[sdkKey] || (0, SafeJs_1._getDocumentSafe)() == null) {
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
const cookies = document.cookie.split(';');
|
|
64
|
+
for (const cookie of cookies) {
|
|
65
|
+
const [key, value] = cookie.trim().split('=');
|
|
66
|
+
if (key === _getCookieName(sdkKey)) {
|
|
67
|
+
return decodeURIComponent(value);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
function _persistToCookie(stableID, sdkKey) {
|
|
73
|
+
if (!COOKIE_ENABLED_MAP[sdkKey] || !document) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
const expiryDate = new Date();
|
|
77
|
+
expiryDate.setFullYear(expiryDate.getFullYear() + 1);
|
|
78
|
+
document.cookie = `${_getCookieName(sdkKey)}=${encodeURIComponent(stableID)}; expires=${expiryDate.toUTCString()}; path=/`;
|
|
79
|
+
}
|
|
80
|
+
function _getCookieName(sdkKey) {
|
|
81
|
+
return `statsig.stable_id.${(0, CacheKey_1._getStorageKey)(sdkKey)}`;
|
|
82
|
+
}
|
package/src/StatsigClientBase.js
CHANGED
|
@@ -18,6 +18,7 @@ const Log_1 = require("./Log");
|
|
|
18
18
|
const MemoKey_1 = require("./MemoKey");
|
|
19
19
|
const SafeJs_1 = require("./SafeJs");
|
|
20
20
|
const SessionID_1 = require("./SessionID");
|
|
21
|
+
const StableID_1 = require("./StableID");
|
|
21
22
|
const StorageProvider_1 = require("./StorageProvider");
|
|
22
23
|
const MAX_MEMO_CACHE_SIZE = 3000;
|
|
23
24
|
class StatsigClientBase {
|
|
@@ -32,6 +33,8 @@ class StatsigClientBase {
|
|
|
32
33
|
(options === null || options === void 0 ? void 0 : options.initialSessionID) &&
|
|
33
34
|
SessionID_1.StatsigSession.overrideInitialSessionID(options.initialSessionID, sdkKey);
|
|
34
35
|
(options === null || options === void 0 ? void 0 : options.storageProvider) && StorageProvider_1.Storage._setProvider(options.storageProvider);
|
|
36
|
+
(options === null || options === void 0 ? void 0 : options.enableCookies) &&
|
|
37
|
+
this.updateRuntimeOptions({ enableCookies: options.enableCookies });
|
|
35
38
|
this._sdkKey = sdkKey;
|
|
36
39
|
this._options = options !== null && options !== void 0 ? options : {};
|
|
37
40
|
this._memoCache = {};
|
|
@@ -62,6 +65,10 @@ class StatsigClientBase {
|
|
|
62
65
|
this._options.disableStorage = options.disableStorage;
|
|
63
66
|
StorageProvider_1.Storage._setDisabled(options.disableStorage);
|
|
64
67
|
}
|
|
68
|
+
if (options.enableCookies != null) {
|
|
69
|
+
this._options.enableCookies = options.enableCookies;
|
|
70
|
+
StableID_1.StableID._setCookiesEnabled(this._sdkKey, options.enableCookies);
|
|
71
|
+
}
|
|
65
72
|
}
|
|
66
73
|
/**
|
|
67
74
|
* Flushes any currently queued events.
|
package/src/StatsigMetadata.d.ts
CHANGED
package/src/StatsigMetadata.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.StatsigMetadataProvider = exports.SDK_VERSION = void 0;
|
|
4
|
-
exports.SDK_VERSION = '3.
|
|
4
|
+
exports.SDK_VERSION = '3.15.0';
|
|
5
5
|
let metadata = {
|
|
6
6
|
sdkVersion: exports.SDK_VERSION,
|
|
7
7
|
sdkType: 'js-mono', // js-mono is overwritten by Precomp and OnDevice clients
|