@statsig/client-core 0.0.1-beta.3 → 0.0.1-beta.31
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/README.md +1 -1
- package/package.json +1 -1
- package/src/$_StatsigGlobal.d.ts +8 -1
- package/src/$_StatsigGlobal.js +22 -12
- package/src/ClientInterfaces.d.ts +47 -14
- package/src/DataAdapterCore.d.ts +32 -0
- package/src/DataAdapterCore.js +167 -0
- package/src/Diagnostics.js +24 -26
- package/src/DownloadConfigSpecsResponse.d.ts +41 -0
- package/src/ErrorBoundary.d.ts +1 -0
- package/src/ErrorBoundary.js +41 -86
- package/src/EvaluationOptions.d.ts +20 -0
- package/src/EvaluationOptions.js +2 -0
- package/src/EvaluationTypes.d.ts +39 -0
- package/src/EvaluationTypes.js +2 -0
- package/src/EventLogger.d.ts +21 -8
- package/src/EventLogger.js +206 -228
- package/src/Hashing.d.ts +2 -1
- package/src/Hashing.js +25 -6
- package/src/InitializeResponse.d.ts +18 -0
- package/src/InitializeResponse.js +2 -0
- package/src/Log.js +15 -34
- package/src/Monitoring.d.ts +1 -2
- package/src/Monitoring.js +68 -27
- package/src/NetworkCore.d.ts +17 -6
- package/src/NetworkCore.js +128 -166
- package/src/NetworkDefaults.d.ts +5 -0
- package/src/NetworkDefaults.js +8 -0
- package/src/NetworkParams.d.ts +9 -0
- package/src/NetworkParams.js +13 -0
- package/src/OverrideAdapter.d.ts +9 -0
- package/src/OverrideAdapter.js +2 -0
- package/src/SDKType.d.ts +8 -0
- package/src/SDKType.js +19 -0
- package/src/SafeJs.d.ts +4 -0
- package/src/SafeJs.js +27 -0
- package/src/SessionID.d.ts +10 -1
- package/src/SessionID.js +86 -6
- package/src/StableID.js +24 -53
- package/src/StatsigClientBase.d.ts +57 -28
- package/src/StatsigClientBase.js +114 -238
- package/src/StatsigClientEventEmitter.d.ts +65 -28
- package/src/StatsigDataAdapter.d.ts +89 -0
- package/src/StatsigDataAdapter.js +4 -0
- package/src/StatsigEvent.d.ts +10 -19
- package/src/StatsigEvent.js +50 -41
- package/src/StatsigMetadata.d.ts +1 -1
- package/src/StatsigMetadata.js +7 -18
- package/src/StatsigOptionsCommon.d.ts +68 -17
- package/src/StatsigTypeFactories.d.ts +6 -0
- package/src/StatsigTypeFactories.js +50 -0
- package/src/StatsigTypes.d.ts +29 -18
- package/src/StatsigTypes.js +0 -29
- package/src/StatsigUser.d.ts +2 -5
- package/src/StatsigUser.js +10 -18
- package/src/StorageProvider.d.ts +12 -7
- package/src/StorageProvider.js +58 -67
- package/src/TypedJsonParse.d.ts +8 -0
- package/src/TypedJsonParse.js +27 -0
- package/src/UUID.js +9 -5
- package/src/UrlOverrides.d.ts +1 -0
- package/src/UrlOverrides.js +15 -0
- package/src/UtitlityTypes.d.ts +3 -0
- package/src/UtitlityTypes.js +2 -0
- package/src/VisibilityObserving.d.ts +8 -0
- package/src/VisibilityObserving.js +30 -0
- package/src/index.d.ts +21 -4
- package/src/index.js +31 -17
- package/src/StatsigDataProvider.d.ts +0 -9
- package/src/VisibilityChangeObserver.d.ts +0 -13
- package/src/VisibilityChangeObserver.js +0 -48
- package/src/__tests__/MockLocalStorage.d.ts +0 -9
- package/src/__tests__/MockLocalStorage.js +0 -37
- /package/src/{StatsigDataProvider.js → DownloadConfigSpecsResponse.js} +0 -0
package/src/SafeJs.d.ts
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare const _getWindowSafe: () => Window | null;
|
|
2
|
+
export declare const _getDocumentSafe: () => Document | null;
|
|
3
|
+
export declare const _addWindowEventListenerSafe: (key: string, listener: () => void) => void;
|
|
4
|
+
export declare const _addDocumentEventListenerSafe: (key: string, listener: () => void) => void;
|
package/src/SafeJs.js
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports._addDocumentEventListenerSafe = exports._addWindowEventListenerSafe = exports._getDocumentSafe = exports._getWindowSafe = void 0;
|
|
4
|
+
const _getWindowSafe = () => {
|
|
5
|
+
return typeof window !== 'undefined' ? window : null;
|
|
6
|
+
};
|
|
7
|
+
exports._getWindowSafe = _getWindowSafe;
|
|
8
|
+
const _getDocumentSafe = () => {
|
|
9
|
+
var _a;
|
|
10
|
+
const win = (0, exports._getWindowSafe)();
|
|
11
|
+
return (_a = win === null || win === void 0 ? void 0 : win.document) !== null && _a !== void 0 ? _a : null;
|
|
12
|
+
};
|
|
13
|
+
exports._getDocumentSafe = _getDocumentSafe;
|
|
14
|
+
const _addWindowEventListenerSafe = (key, listener) => {
|
|
15
|
+
const win = (0, exports._getWindowSafe)();
|
|
16
|
+
if (typeof (win === null || win === void 0 ? void 0 : win.addEventListener) === 'function') {
|
|
17
|
+
win.addEventListener(key, listener);
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
exports._addWindowEventListenerSafe = _addWindowEventListenerSafe;
|
|
21
|
+
const _addDocumentEventListenerSafe = (key, listener) => {
|
|
22
|
+
const doc = (0, exports._getDocumentSafe)();
|
|
23
|
+
if (typeof (doc === null || doc === void 0 ? void 0 : doc.addEventListener) === 'function') {
|
|
24
|
+
doc.addEventListener(key, listener);
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
exports._addDocumentEventListenerSafe = _addDocumentEventListenerSafe;
|
package/src/SessionID.d.ts
CHANGED
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
type SessionState = {
|
|
2
|
+
emitFunction: () => void;
|
|
3
|
+
ageTimeoutID: ReturnType<typeof setTimeout> | null;
|
|
4
|
+
idleTimeoutID: ReturnType<typeof setTimeout> | null;
|
|
5
|
+
};
|
|
1
6
|
export declare const SessionID: {
|
|
2
|
-
get: (sdkKey: string) => string
|
|
7
|
+
get: (sdkKey: string) => Promise<string>;
|
|
8
|
+
_getPromise: (sdkKey: string) => Promise<string>;
|
|
9
|
+
_setEmitFunction: (eFunction: () => void, sdkKey: string) => void;
|
|
10
|
+
_resetTimeout: (sessionState: SessionState, timeoutID: ReturnType<typeof setTimeout> | null, duration: number) => ReturnType<typeof setTimeout> | null;
|
|
3
11
|
};
|
|
12
|
+
export {};
|
package/src/SessionID.js
CHANGED
|
@@ -1,13 +1,93 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
2
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
12
|
exports.SessionID = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
13
|
+
const Hashing_1 = require("./Hashing");
|
|
14
|
+
const Log_1 = require("./Log");
|
|
15
|
+
const StorageProvider_1 = require("./StorageProvider");
|
|
16
|
+
const UUID_1 = require("./UUID");
|
|
17
|
+
const SESSION_ID_MAP = {};
|
|
18
|
+
const SESSION_STATE_MAP = {};
|
|
19
|
+
const PROMISE_MAP = {};
|
|
20
|
+
const MAX_SESSION_IDLE_TIME = 30 * 60 * 1000; // 30 minutes
|
|
21
|
+
const MAX_SESSION_AGE = 4 * 60 * 60 * 1000; // 4 hours
|
|
6
22
|
exports.SessionID = {
|
|
7
|
-
get:
|
|
8
|
-
if (
|
|
9
|
-
|
|
23
|
+
get: (sdkKey) => {
|
|
24
|
+
if (PROMISE_MAP[sdkKey] != null) {
|
|
25
|
+
return PROMISE_MAP[sdkKey];
|
|
26
|
+
}
|
|
27
|
+
return (PROMISE_MAP[sdkKey] = exports.SessionID._getPromise(sdkKey));
|
|
28
|
+
},
|
|
29
|
+
_getPromise: (sdkKey) => __awaiter(void 0, void 0, void 0, function* () {
|
|
30
|
+
var _a;
|
|
31
|
+
let session = SESSION_ID_MAP[sdkKey];
|
|
32
|
+
const now = Date.now();
|
|
33
|
+
if (session == null) {
|
|
34
|
+
let tempSession = yield _loadFromStorage(sdkKey);
|
|
35
|
+
if (tempSession == null) {
|
|
36
|
+
tempSession = {
|
|
37
|
+
sessionID: (0, UUID_1.getUUID)(),
|
|
38
|
+
startTime: now,
|
|
39
|
+
lastUpdate: now,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
session = tempSession;
|
|
43
|
+
SESSION_ID_MAP[sdkKey] = session;
|
|
10
44
|
}
|
|
11
|
-
|
|
45
|
+
const sessionState = (_a = SESSION_STATE_MAP[sdkKey]) !== null && _a !== void 0 ? _a : {
|
|
46
|
+
ageTimeoutID: null,
|
|
47
|
+
idleTimeoutID: null,
|
|
48
|
+
emitFunction: () => {
|
|
49
|
+
return;
|
|
50
|
+
},
|
|
51
|
+
};
|
|
52
|
+
if (now - session.startTime > MAX_SESSION_AGE ||
|
|
53
|
+
now - session.lastUpdate > MAX_SESSION_IDLE_TIME) {
|
|
54
|
+
session.sessionID = (0, UUID_1.getUUID)();
|
|
55
|
+
session.startTime = now;
|
|
56
|
+
}
|
|
57
|
+
session.lastUpdate = now;
|
|
58
|
+
_persistToStorage(session, sdkKey);
|
|
59
|
+
sessionState.idleTimeoutID = exports.SessionID._resetTimeout(sessionState, sessionState.idleTimeoutID, MAX_SESSION_IDLE_TIME);
|
|
60
|
+
sessionState.ageTimeoutID = exports.SessionID._resetTimeout(sessionState, sessionState.ageTimeoutID, MAX_SESSION_AGE - (now - session.startTime));
|
|
61
|
+
SESSION_ID_MAP[sdkKey] = session;
|
|
62
|
+
SESSION_STATE_MAP[sdkKey] = sessionState;
|
|
63
|
+
PROMISE_MAP[sdkKey] = null;
|
|
64
|
+
return session.sessionID;
|
|
65
|
+
}),
|
|
66
|
+
_setEmitFunction: (eFunction, sdkKey) => {
|
|
67
|
+
var _a;
|
|
68
|
+
const sessionState = (_a = SESSION_STATE_MAP[sdkKey]) !== null && _a !== void 0 ? _a : {
|
|
69
|
+
ageTimeoutID: null,
|
|
70
|
+
idleTimeoutID: null,
|
|
71
|
+
emitFunction: eFunction,
|
|
72
|
+
};
|
|
73
|
+
sessionState.emitFunction = eFunction;
|
|
74
|
+
SESSION_STATE_MAP[sdkKey] = sessionState;
|
|
75
|
+
},
|
|
76
|
+
_resetTimeout: (sessionState, timeoutID, duration) => {
|
|
77
|
+
clearTimeout(timeoutID !== null && timeoutID !== void 0 ? timeoutID : undefined);
|
|
78
|
+
return setTimeout(sessionState.emitFunction, duration);
|
|
12
79
|
},
|
|
13
80
|
};
|
|
81
|
+
function _getSessionIDStorageKey(sdkKey) {
|
|
82
|
+
return `statsig.session_id.${(0, Hashing_1.DJB2)(sdkKey)}`;
|
|
83
|
+
}
|
|
84
|
+
function _persistToStorage(session, sdkKey) {
|
|
85
|
+
const storageKey = _getSessionIDStorageKey(sdkKey);
|
|
86
|
+
(0, StorageProvider_1._setObjectInStorage)(storageKey, session).catch(() => {
|
|
87
|
+
Log_1.Log.warn('Failed to save SessionID');
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
function _loadFromStorage(sdkKey) {
|
|
91
|
+
const storageKey = _getSessionIDStorageKey(sdkKey);
|
|
92
|
+
return (0, StorageProvider_1._getObjectFromStorage)(storageKey);
|
|
93
|
+
}
|
package/src/StableID.js
CHANGED
|
@@ -8,71 +8,42 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
-
function step(op) {
|
|
16
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
-
switch (op[0]) {
|
|
21
|
-
case 0: case 1: t = op; break;
|
|
22
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
-
default:
|
|
26
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
-
if (t[2]) _.ops.pop();
|
|
31
|
-
_.trys.pop(); continue;
|
|
32
|
-
}
|
|
33
|
-
op = body.call(thisArg, _);
|
|
34
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
12
|
exports.StableID = void 0;
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
13
|
+
const Hashing_1 = require("./Hashing");
|
|
14
|
+
const Log_1 = require("./Log");
|
|
15
|
+
const StorageProvider_1 = require("./StorageProvider");
|
|
16
|
+
const UUID_1 = require("./UUID");
|
|
17
|
+
const PROMISE_MAP = {};
|
|
45
18
|
exports.StableID = {
|
|
46
|
-
get:
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
}); },
|
|
61
|
-
setOverride: function (override, sdkKey) {
|
|
19
|
+
get: (sdkKey) => __awaiter(void 0, void 0, void 0, function* () {
|
|
20
|
+
if (PROMISE_MAP[sdkKey] == null) {
|
|
21
|
+
PROMISE_MAP[sdkKey] = _loadFromStorage(sdkKey).then((stableID) => {
|
|
22
|
+
if (stableID != null) {
|
|
23
|
+
return stableID;
|
|
24
|
+
}
|
|
25
|
+
const newStableID = (0, UUID_1.getUUID)();
|
|
26
|
+
_persistToStorage(newStableID, sdkKey);
|
|
27
|
+
return newStableID;
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
return PROMISE_MAP[sdkKey];
|
|
31
|
+
}),
|
|
32
|
+
setOverride: (override, sdkKey) => {
|
|
62
33
|
PROMISE_MAP[sdkKey] = Promise.resolve(override);
|
|
63
34
|
_persistToStorage(override, sdkKey);
|
|
64
35
|
},
|
|
65
36
|
};
|
|
66
37
|
function _getStableIDStorageKey(sdkKey) {
|
|
67
|
-
return
|
|
38
|
+
return `statsig.stable_id.${(0, Hashing_1.DJB2)(sdkKey)}`;
|
|
68
39
|
}
|
|
69
40
|
function _persistToStorage(stableID, sdkKey) {
|
|
70
|
-
|
|
71
|
-
(0, StorageProvider_1.
|
|
41
|
+
const storageKey = _getStableIDStorageKey(sdkKey);
|
|
42
|
+
(0, StorageProvider_1._setObjectInStorage)(storageKey, stableID).catch(() => {
|
|
72
43
|
Log_1.Log.warn('Failed to save StableID');
|
|
73
44
|
});
|
|
74
45
|
}
|
|
75
46
|
function _loadFromStorage(sdkKey) {
|
|
76
|
-
|
|
77
|
-
return (0, StorageProvider_1.
|
|
47
|
+
const storageKey = _getStableIDStorageKey(sdkKey);
|
|
48
|
+
return (0, StorageProvider_1._getObjectFromStorage)(storageKey);
|
|
78
49
|
}
|
|
@@ -1,37 +1,66 @@
|
|
|
1
1
|
import './$_StatsigGlobal';
|
|
2
2
|
import { ErrorBoundary } from './ErrorBoundary';
|
|
3
|
+
import { EvaluationOptionsCommon } from './EvaluationOptions';
|
|
3
4
|
import { EventLogger } from './EventLogger';
|
|
4
5
|
import { NetworkCore } from './NetworkCore';
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
6
|
+
import { OverrideAdapter } from './OverrideAdapter';
|
|
7
|
+
import { AnyStatsigClientEvent, StatsigClientEventCallback, StatsigClientEventEmitterInterface, StatsigClientEventName, StatsigLoadingStatus } from './StatsigClientEventEmitter';
|
|
8
|
+
import { DataAdapterResult, EvaluationsDataAdapter, SpecsDataAdapter } from './StatsigDataAdapter';
|
|
7
9
|
import { StatsigEventInternal } from './StatsigEvent';
|
|
8
|
-
import {
|
|
9
|
-
|
|
10
|
-
type
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
import { AnyStatsigOptions, StatsigRuntimeMutableOptions } from './StatsigOptionsCommon';
|
|
11
|
+
export type StatsigClientEmitEventFunc = (event: AnyStatsigClientEvent) => void;
|
|
12
|
+
export type StatsigContext = {
|
|
13
|
+
sdkKey: string;
|
|
14
|
+
options: AnyStatsigOptions;
|
|
15
|
+
sessionID: string;
|
|
16
|
+
values: unknown;
|
|
13
17
|
};
|
|
14
|
-
export
|
|
15
|
-
disableExposureLog?: boolean;
|
|
16
|
-
};
|
|
17
|
-
export declare const DEFAULT_EVAL_OPTIONS: EvaluationOptions;
|
|
18
|
-
export type StatsigClientEmitEventFunc = (data: StatsigClientEventData) => void;
|
|
19
|
-
export declare class StatsigClientBase implements StatsigClientEventEmitterInterface {
|
|
18
|
+
export declare abstract class StatsigClientBase<TAdapter extends EvaluationsDataAdapter | SpecsDataAdapter> implements StatsigClientEventEmitterInterface {
|
|
20
19
|
loadingStatus: StatsigLoadingStatus;
|
|
21
|
-
|
|
22
|
-
protected
|
|
23
|
-
protected
|
|
24
|
-
protected
|
|
20
|
+
readonly dataAdapter: TAdapter;
|
|
21
|
+
protected readonly _sdkKey: string;
|
|
22
|
+
protected readonly _options: AnyStatsigOptions;
|
|
23
|
+
protected readonly _errorBoundary: ErrorBoundary;
|
|
24
|
+
protected readonly _logger: EventLogger;
|
|
25
|
+
protected readonly _overrideAdapter: OverrideAdapter | null;
|
|
25
26
|
private _listeners;
|
|
26
|
-
constructor(sdkKey: string, network: NetworkCore, options:
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
27
|
+
constructor(sdkKey: string, adapter: TAdapter, network: NetworkCore, options: AnyStatsigOptions | null);
|
|
28
|
+
/**
|
|
29
|
+
* Updates runtime configuration options for the SDK, allowing toggling of certain behaviors such as logging and storage to comply with user preferences or regulations such as GDPR.
|
|
30
|
+
*
|
|
31
|
+
* @param {StatsigRuntimeMutableOptions} options - The configuration options that dictate the runtime behavior of the SDK.
|
|
32
|
+
*/
|
|
33
|
+
updateRuntimeOptions(options: StatsigRuntimeMutableOptions): void;
|
|
34
|
+
/**
|
|
35
|
+
* Flushes any currently queued events.
|
|
36
|
+
*/
|
|
37
|
+
flush(): Promise<void>;
|
|
38
|
+
/**
|
|
39
|
+
* Gracefully shuts down the SDK, ensuring that all pending events are send before the SDK stops.
|
|
40
|
+
* This function emits a 'pre_shutdown' event and then waits for the logger to complete its shutdown process.
|
|
41
|
+
*
|
|
42
|
+
* @returns {Promise<void>} A promise that resolves when all shutdown procedures, including logging shutdown, have been completed.
|
|
43
|
+
*/
|
|
44
|
+
shutdown(): Promise<void>;
|
|
45
|
+
/**
|
|
46
|
+
* Subscribes a callback function to a specific {@link StatsigClientEvent} or all StatsigClientEvents if the wildcard '*' is used.
|
|
47
|
+
* Once subscribed, the listener callback will be invoked whenever the specified event is emitted.
|
|
48
|
+
*
|
|
49
|
+
* @param {StatsigClientEventName} event - The name of the event to subscribe to, or '*' to subscribe to all events.
|
|
50
|
+
* @param {StatsigClientEventCallback<T>} listener - The callback function to execute when the event occurs. The function receives event-specific data as its parameter.
|
|
51
|
+
* @see {@link off} for unsubscribing from events.
|
|
52
|
+
*/
|
|
53
|
+
on<T extends StatsigClientEventName>(event: T, listener: StatsigClientEventCallback<T>): void;
|
|
54
|
+
/**
|
|
55
|
+
* Unsubscribes a previously registered callback function from a specific {@link StatsigClientEvent} or all StatsigClientEvents if the wildcard '*' is used.
|
|
56
|
+
*
|
|
57
|
+
* @param {StatsigClientEventName} event - The name of the event from which to unsubscribe, or '*' to unsubscribe from all events.
|
|
58
|
+
* @param {StatsigClientEventCallback<T>} listener - The callback function to remove from the event's notification list.
|
|
59
|
+
* @see {@link on} for subscribing to events.
|
|
60
|
+
*/
|
|
61
|
+
off<T extends StatsigClientEventName>(event: T, listener: StatsigClientEventCallback<T>): void;
|
|
62
|
+
__on<T extends StatsigClientEventName>(event: T, listener: StatsigClientEventCallback<T>): void;
|
|
63
|
+
protected _emit(event: AnyStatsigClientEvent): void;
|
|
64
|
+
protected _setStatus(newStatus: StatsigLoadingStatus, values: DataAdapterResult | null): void;
|
|
65
|
+
protected _enqueueExposure(name: string, exposure: StatsigEventInternal, options?: EvaluationOptionsCommon): void;
|
|
36
66
|
}
|
|
37
|
-
export {};
|