@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 CHANGED
@@ -5,4 +5,4 @@
5
5
 
6
6
  The package that contains all the common logic shared by the various Statsig Javascript packages.
7
7
 
8
- Learn more by visiting: https://docs.statsig.com/client/jsClientSDK
8
+ Learn more by visiting: https://docs.statsig.com/client/javascript-sdk
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@statsig/client-core",
3
- "version": "0.0.1-beta.7",
3
+ "version": "0.0.1-beta.9",
4
4
  "dependencies": {},
5
5
  "type": "commonjs",
6
6
  "main": "./src/index.js",
@@ -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, 4, , 5]);
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*/, 1];
196
- _c = this._sendEventsViaBeacon(api, events);
197
- return [3 /*break*/, 3];
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
- _e.label = 3;
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*/, 5];
214
- case 4:
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*/, 5];
218
- case 5: return [2 /*return*/];
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
- success: this._network.beacon({
253
- sdkKey: this._sdkKey,
254
- data: {
255
- events: events,
256
- },
257
- url: "".concat(api, "/log_event_beacon"),
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' &&
@@ -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 {};
@@ -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 data, stableID, sessionID, body;
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
- stableID = _a.sent();
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
- var url = new URL(args.url);
114
- url.searchParams.append('k', args.sdkKey);
115
- return navigator.sendBeacon(url, JSON.stringify(args.data));
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, fullUrl, text, error_1, errorMessage;
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
- fullUrl = this._getPopulatedURL(args);
133
- return [4 /*yield*/, fetch(fullUrl, {
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' | 'Error';
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
  } | {
@@ -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.7';
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 });