@statsig/client-core 0.0.1-beta.7 → 0.0.1-beta.9
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/EventLogger.js +31 -20
- package/src/NetworkCore.d.ts +2 -1
- package/src/NetworkCore.js +35 -13
- package/src/StatsigClientEventEmitter.d.ts +21 -1
- package/src/StatsigMetadata.js +1 -1
- package/src/index.js +2 -1
package/README.md
CHANGED
package/package.json
CHANGED
package/src/EventLogger.js
CHANGED
|
@@ -189,17 +189,19 @@ var EventLogger = /** @class */ (function () {
|
|
|
189
189
|
return __generator(this, function (_e) {
|
|
190
190
|
switch (_e.label) {
|
|
191
191
|
case 0:
|
|
192
|
-
_e.trys.push([0,
|
|
192
|
+
_e.trys.push([0, 5, , 6]);
|
|
193
193
|
isInForeground = VisibilityChangeObserver_1.VisibilityChangeObserver.isCurrentlyVisible();
|
|
194
194
|
api = (_b = (_a = this._options) === null || _a === void 0 ? void 0 : _a.api) !== null && _b !== void 0 ? _b : DEFAULT_API;
|
|
195
|
-
if (!(!isInForeground && this._isBeaconSupported())) return [3 /*break*/,
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
case 1: return [4 /*yield*/, this._sendEventsViaPost(api, events)];
|
|
199
|
-
case 2:
|
|
195
|
+
if (!(!isInForeground && this._isBeaconSupported())) return [3 /*break*/, 2];
|
|
196
|
+
return [4 /*yield*/, this._sendEventsViaBeacon(api, events)];
|
|
197
|
+
case 1:
|
|
200
198
|
_c = _e.sent();
|
|
201
|
-
|
|
199
|
+
return [3 /*break*/, 4];
|
|
200
|
+
case 2: return [4 /*yield*/, this._sendEventsViaPost(api, events)];
|
|
202
201
|
case 3:
|
|
202
|
+
_c = _e.sent();
|
|
203
|
+
_e.label = 4;
|
|
204
|
+
case 4:
|
|
203
205
|
response = _c;
|
|
204
206
|
if (response.success) {
|
|
205
207
|
this._emitter({
|
|
@@ -210,12 +212,12 @@ var EventLogger = /** @class */ (function () {
|
|
|
210
212
|
else {
|
|
211
213
|
this._saveFailedLogsToStorage(events);
|
|
212
214
|
}
|
|
213
|
-
return [3 /*break*/,
|
|
214
|
-
case
|
|
215
|
+
return [3 /*break*/, 6];
|
|
216
|
+
case 5:
|
|
215
217
|
_d = _e.sent();
|
|
216
218
|
Log_1.Log.warn('Failed to flush events.');
|
|
217
|
-
return [3 /*break*/,
|
|
218
|
-
case
|
|
219
|
+
return [3 /*break*/, 6];
|
|
220
|
+
case 6: return [2 /*return*/];
|
|
219
221
|
}
|
|
220
222
|
});
|
|
221
223
|
});
|
|
@@ -248,15 +250,24 @@ var EventLogger = /** @class */ (function () {
|
|
|
248
250
|
});
|
|
249
251
|
};
|
|
250
252
|
EventLogger.prototype._sendEventsViaBeacon = function (api, events) {
|
|
251
|
-
return {
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
253
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
254
|
+
var _a;
|
|
255
|
+
return __generator(this, function (_b) {
|
|
256
|
+
switch (_b.label) {
|
|
257
|
+
case 0:
|
|
258
|
+
_a = {};
|
|
259
|
+
return [4 /*yield*/, this._network.beacon({
|
|
260
|
+
sdkKey: this._sdkKey,
|
|
261
|
+
data: {
|
|
262
|
+
events: events,
|
|
263
|
+
},
|
|
264
|
+
url: "".concat(api, "/log_event_beacon"),
|
|
265
|
+
})];
|
|
266
|
+
case 1: return [2 /*return*/, (_a.success = _b.sent(),
|
|
267
|
+
_a)];
|
|
268
|
+
}
|
|
269
|
+
});
|
|
270
|
+
});
|
|
260
271
|
};
|
|
261
272
|
EventLogger.prototype._isBeaconSupported = function () {
|
|
262
273
|
return (typeof navigator !== 'undefined' &&
|
package/src/NetworkCore.d.ts
CHANGED
|
@@ -22,8 +22,9 @@ export declare class NetworkCore {
|
|
|
22
22
|
constructor(_options: StatsigOptionsCommon | null, _emitter?: StatsigClientEmitEventFunc | undefined);
|
|
23
23
|
post(args: RequestArgsWithData): Promise<NetworkResponse | null>;
|
|
24
24
|
get(args: RequestArgs): Promise<NetworkResponse | null>;
|
|
25
|
-
beacon(args: RequestArgsWithData): boolean
|
|
25
|
+
beacon(args: RequestArgsWithData): Promise<boolean>;
|
|
26
26
|
private _sendRequest;
|
|
27
27
|
private _getPopulatedURL;
|
|
28
|
+
private _getPopulatedBody;
|
|
28
29
|
}
|
|
29
30
|
export {};
|
package/src/NetworkCore.js
CHANGED
|
@@ -87,16 +87,12 @@ var NetworkCore = /** @class */ (function () {
|
|
|
87
87
|
}
|
|
88
88
|
NetworkCore.prototype.post = function (args) {
|
|
89
89
|
return __awaiter(this, void 0, void 0, function () {
|
|
90
|
-
var
|
|
90
|
+
var body;
|
|
91
91
|
return __generator(this, function (_a) {
|
|
92
92
|
switch (_a.label) {
|
|
93
|
-
case 0:
|
|
94
|
-
data = args.data;
|
|
95
|
-
return [4 /*yield*/, StableID_1.StableID.get(args.sdkKey)];
|
|
93
|
+
case 0: return [4 /*yield*/, this._getPopulatedBody(args)];
|
|
96
94
|
case 1:
|
|
97
|
-
|
|
98
|
-
sessionID = SessionID_1.SessionID.get(args.sdkKey);
|
|
99
|
-
body = JSON.stringify(__assign(__assign({}, data), { statsigMetadata: __assign(__assign({}, StatsigMetadata_1.StatsigMetadataProvider.get()), { stableID: stableID, sessionID: sessionID }) }));
|
|
95
|
+
body = _a.sent();
|
|
100
96
|
return [2 /*return*/, this._sendRequest(__assign({ method: 'POST', body: body }, args))];
|
|
101
97
|
}
|
|
102
98
|
});
|
|
@@ -110,14 +106,24 @@ var NetworkCore = /** @class */ (function () {
|
|
|
110
106
|
});
|
|
111
107
|
};
|
|
112
108
|
NetworkCore.prototype.beacon = function (args) {
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
109
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
110
|
+
var url, body;
|
|
111
|
+
return __generator(this, function (_a) {
|
|
112
|
+
switch (_a.label) {
|
|
113
|
+
case 0:
|
|
114
|
+
url = this._getPopulatedURL(args);
|
|
115
|
+
return [4 /*yield*/, this._getPopulatedBody(args)];
|
|
116
|
+
case 1:
|
|
117
|
+
body = _a.sent();
|
|
118
|
+
return [2 /*return*/, navigator.sendBeacon(url, body)];
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
});
|
|
116
122
|
};
|
|
117
123
|
NetworkCore.prototype._sendRequest = function (args) {
|
|
118
124
|
var _a;
|
|
119
125
|
return __awaiter(this, void 0, void 0, function () {
|
|
120
|
-
var method, body, retries, controller, handle, response,
|
|
126
|
+
var method, body, retries, controller, handle, response, url, text, error_1, errorMessage;
|
|
121
127
|
var _this = this;
|
|
122
128
|
return __generator(this, function (_b) {
|
|
123
129
|
switch (_b.label) {
|
|
@@ -129,8 +135,8 @@ var NetworkCore = /** @class */ (function () {
|
|
|
129
135
|
_b.label = 1;
|
|
130
136
|
case 1:
|
|
131
137
|
_b.trys.push([1, 4, , 5]);
|
|
132
|
-
|
|
133
|
-
return [4 /*yield*/, fetch(
|
|
138
|
+
url = this._getPopulatedURL(args);
|
|
139
|
+
return [4 /*yield*/, fetch(url, {
|
|
134
140
|
method: method,
|
|
135
141
|
body: body,
|
|
136
142
|
headers: __assign({}, args.headers),
|
|
@@ -188,6 +194,22 @@ var NetworkCore = /** @class */ (function () {
|
|
|
188
194
|
}
|
|
189
195
|
return url.toString();
|
|
190
196
|
};
|
|
197
|
+
NetworkCore.prototype._getPopulatedBody = function (args) {
|
|
198
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
199
|
+
var data, stableID, sessionID;
|
|
200
|
+
return __generator(this, function (_a) {
|
|
201
|
+
switch (_a.label) {
|
|
202
|
+
case 0:
|
|
203
|
+
data = args.data;
|
|
204
|
+
return [4 /*yield*/, StableID_1.StableID.get(args.sdkKey)];
|
|
205
|
+
case 1:
|
|
206
|
+
stableID = _a.sent();
|
|
207
|
+
sessionID = SessionID_1.SessionID.get(args.sdkKey);
|
|
208
|
+
return [2 /*return*/, JSON.stringify(__assign(__assign({}, data), { statsigMetadata: __assign(__assign({}, StatsigMetadata_1.StatsigMetadataProvider.get()), { stableID: stableID, sessionID: sessionID }) }))];
|
|
209
|
+
}
|
|
210
|
+
});
|
|
211
|
+
});
|
|
212
|
+
};
|
|
191
213
|
return NetworkCore;
|
|
192
214
|
}());
|
|
193
215
|
exports.NetworkCore = NetworkCore;
|
|
@@ -1,6 +1,26 @@
|
|
|
1
1
|
import { DynamicConfig, Experiment, FeatureGate, Layer } from './StatsigTypes';
|
|
2
|
-
export type StatsigLoadingStatus = 'Uninitialized' | 'Loading' | 'Ready'
|
|
2
|
+
export type StatsigLoadingStatus = 'Uninitialized' | 'Loading' | 'Ready';
|
|
3
|
+
/**
|
|
4
|
+
* All the possible events emitted from a Statsig client.
|
|
5
|
+
*
|
|
6
|
+
* `status_change` - When the Statsig clients internal values change as the result of an initialize/update operation.
|
|
7
|
+
*
|
|
8
|
+
* `error` - When an unexpected error occurs within the Statsig client.
|
|
9
|
+
*
|
|
10
|
+
* `logs_flushed` - When queued StatsigEvents are flushed to Statsig servers.
|
|
11
|
+
*
|
|
12
|
+
* `gate_evaluation` - Fired when any gate is checked from the Statsig client.
|
|
13
|
+
*
|
|
14
|
+
* `dynamic_config_evaluation` - Fired when any dyanamic config is checked from the Statsig client.
|
|
15
|
+
*
|
|
16
|
+
* `experiment_evaluation` - Fired when any experiment is checked from the Statsig client.
|
|
17
|
+
*
|
|
18
|
+
* `layer_evaluation` - Fired when any layer is checked from the Statsig client.
|
|
19
|
+
*/
|
|
3
20
|
export type StatsigClientEvent = 'status_change' | 'error' | 'logs_flushed' | 'gate_evaluation' | 'dynamic_config_evaluation' | 'experiment_evaluation' | 'layer_evaluation';
|
|
21
|
+
/**
|
|
22
|
+
* Type representing various events emitted by a Statsig client.
|
|
23
|
+
*/
|
|
4
24
|
export type StatsigClientEventData = {
|
|
5
25
|
event: StatsigClientEvent;
|
|
6
26
|
} | {
|
package/src/StatsigMetadata.js
CHANGED
|
@@ -12,7 +12,7 @@ var __assign = (this && this.__assign) || function () {
|
|
|
12
12
|
};
|
|
13
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
14
|
exports.StatsigMetadataProvider = void 0;
|
|
15
|
-
var SDK_VERSION = '0.0.1-beta.
|
|
15
|
+
var SDK_VERSION = '0.0.1-beta.9';
|
|
16
16
|
var metadata = {
|
|
17
17
|
sdkVersion: SDK_VERSION,
|
|
18
18
|
sdkType: 'js-mono', // js-mono is overwritten by Precomp and OnDevice clients
|
package/src/index.js
CHANGED
|
@@ -30,6 +30,7 @@ exports.EventLogger = void 0;
|
|
|
30
30
|
require("./$_StatsigGlobal");
|
|
31
31
|
var EventLogger_1 = require("./EventLogger");
|
|
32
32
|
Object.defineProperty(exports, "EventLogger", { enumerable: true, get: function () { return EventLogger_1.EventLogger; } });
|
|
33
|
+
var Log_1 = require("./Log");
|
|
33
34
|
__exportStar(require("./$_StatsigGlobal"), exports);
|
|
34
35
|
__exportStar(require("./ClientInterfaces"), exports);
|
|
35
36
|
__exportStar(require("./ErrorBoundary"), exports);
|
|
@@ -49,4 +50,4 @@ __exportStar(require("./StatsigTypes"), exports);
|
|
|
49
50
|
__exportStar(require("./StatsigUser"), exports);
|
|
50
51
|
__exportStar(require("./UUID"), exports);
|
|
51
52
|
__exportStar(require("./VisibilityChangeObserver"), exports);
|
|
52
|
-
__STATSIG__ = __assign(__assign({}, (__STATSIG__ !== null && __STATSIG__ !== void 0 ? __STATSIG__ : {})), { EventLogger: EventLogger_1.EventLogger });
|
|
53
|
+
__STATSIG__ = __assign(__assign({}, (__STATSIG__ !== null && __STATSIG__ !== void 0 ? __STATSIG__ : {})), { EventLogger: EventLogger_1.EventLogger, Log: Log_1.Log });
|