react-native-nitro-amplitude 0.1.0 → 0.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.
Files changed (176) hide show
  1. package/README.md +547 -55
  2. package/cpp/bindings/HybridAmplitudeWorker.cpp +27 -7
  3. package/lib/commonjs/analytics/config.js +31 -10
  4. package/lib/commonjs/analytics/config.js.map +1 -1
  5. package/lib/commonjs/analytics/index.js +8 -2
  6. package/lib/commonjs/analytics/index.js.map +1 -1
  7. package/lib/commonjs/analytics/network-guarded-fetch-transport.js +16 -0
  8. package/lib/commonjs/analytics/network-guarded-fetch-transport.js.map +1 -0
  9. package/lib/commonjs/analytics/nitro-transport.js +2 -0
  10. package/lib/commonjs/analytics/nitro-transport.js.map +1 -1
  11. package/lib/commonjs/analytics/plugins/context.js +7 -1
  12. package/lib/commonjs/analytics/plugins/context.js.map +1 -1
  13. package/lib/commonjs/analytics/react-native-client.js +155 -9
  14. package/lib/commonjs/analytics/react-native-client.js.map +1 -1
  15. package/lib/commonjs/diagnostics.js +92 -0
  16. package/lib/commonjs/diagnostics.js.map +1 -0
  17. package/lib/commonjs/errors.js +48 -0
  18. package/lib/commonjs/errors.js.map +1 -0
  19. package/lib/commonjs/experiment/experimentClient.js +84 -2
  20. package/lib/commonjs/experiment/experimentClient.js.map +1 -1
  21. package/lib/commonjs/experiment/index.js +12 -0
  22. package/lib/commonjs/experiment/index.js.map +1 -1
  23. package/lib/commonjs/experiment/stubClient.js +25 -0
  24. package/lib/commonjs/experiment/stubClient.js.map +1 -1
  25. package/lib/commonjs/experiment/transport/http.js +8 -2
  26. package/lib/commonjs/experiment/transport/http.js.map +1 -1
  27. package/lib/commonjs/experiment/typed-variants.js +52 -0
  28. package/lib/commonjs/experiment/typed-variants.js.map +1 -0
  29. package/lib/commonjs/experiment/types/config.js +32 -4
  30. package/lib/commonjs/experiment/types/config.js.map +1 -1
  31. package/lib/commonjs/index.js +105 -3
  32. package/lib/commonjs/index.js.map +1 -1
  33. package/lib/commonjs/index.web.js +387 -13
  34. package/lib/commonjs/index.web.js.map +1 -1
  35. package/lib/commonjs/native/context.web.js +26 -0
  36. package/lib/commonjs/native/context.web.js.map +1 -0
  37. package/lib/commonjs/native/http.js +23 -8
  38. package/lib/commonjs/native/http.js.map +1 -1
  39. package/lib/commonjs/native/http.web.js +17 -0
  40. package/lib/commonjs/native/http.web.js.map +1 -0
  41. package/lib/commonjs/native/hybrid.web.js +23 -0
  42. package/lib/commonjs/native/hybrid.web.js.map +1 -0
  43. package/lib/commonjs/native/storage.js +27 -15
  44. package/lib/commonjs/native/storage.js.map +1 -1
  45. package/lib/commonjs/native/storage.web.js +135 -0
  46. package/lib/commonjs/native/storage.web.js.map +1 -0
  47. package/lib/commonjs/network.js +154 -0
  48. package/lib/commonjs/network.js.map +1 -0
  49. package/lib/commonjs/presets.js +118 -0
  50. package/lib/commonjs/presets.js.map +1 -0
  51. package/lib/commonjs/testing.js +166 -0
  52. package/lib/commonjs/testing.js.map +1 -0
  53. package/lib/module/analytics/config.js +32 -11
  54. package/lib/module/analytics/config.js.map +1 -1
  55. package/lib/module/analytics/index.js +4 -1
  56. package/lib/module/analytics/index.js.map +1 -1
  57. package/lib/module/analytics/network-guarded-fetch-transport.js +11 -0
  58. package/lib/module/analytics/network-guarded-fetch-transport.js.map +1 -0
  59. package/lib/module/analytics/nitro-transport.js +2 -0
  60. package/lib/module/analytics/nitro-transport.js.map +1 -1
  61. package/lib/module/analytics/plugins/context.js +7 -1
  62. package/lib/module/analytics/plugins/context.js.map +1 -1
  63. package/lib/module/analytics/react-native-client.js +154 -9
  64. package/lib/module/analytics/react-native-client.js.map +1 -1
  65. package/lib/module/diagnostics.js +85 -0
  66. package/lib/module/diagnostics.js.map +1 -0
  67. package/lib/module/errors.js +41 -0
  68. package/lib/module/errors.js.map +1 -0
  69. package/lib/module/experiment/experimentClient.js +84 -2
  70. package/lib/module/experiment/experimentClient.js.map +1 -1
  71. package/lib/module/experiment/index.js +1 -0
  72. package/lib/module/experiment/index.js.map +1 -1
  73. package/lib/module/experiment/stubClient.js +25 -0
  74. package/lib/module/experiment/stubClient.js.map +1 -1
  75. package/lib/module/experiment/transport/http.js +8 -2
  76. package/lib/module/experiment/transport/http.js.map +1 -1
  77. package/lib/module/experiment/typed-variants.js +43 -0
  78. package/lib/module/experiment/typed-variants.js.map +1 -0
  79. package/lib/module/experiment/types/config.js +31 -4
  80. package/lib/module/experiment/types/config.js.map +1 -1
  81. package/lib/module/index.js +15 -3
  82. package/lib/module/index.js.map +1 -1
  83. package/lib/module/index.web.js +60 -11
  84. package/lib/module/index.web.js.map +1 -1
  85. package/lib/module/native/context.web.js +18 -0
  86. package/lib/module/native/context.web.js.map +1 -0
  87. package/lib/module/native/http.js +23 -8
  88. package/lib/module/native/http.js.map +1 -1
  89. package/lib/module/native/http.web.js +12 -0
  90. package/lib/module/native/http.web.js.map +1 -0
  91. package/lib/module/native/hybrid.web.js +16 -0
  92. package/lib/module/native/hybrid.web.js.map +1 -0
  93. package/lib/module/native/storage.js +27 -15
  94. package/lib/module/native/storage.js.map +1 -1
  95. package/lib/module/native/storage.web.js +128 -0
  96. package/lib/module/native/storage.web.js.map +1 -0
  97. package/lib/module/network.js +138 -0
  98. package/lib/module/network.js.map +1 -0
  99. package/lib/module/presets.js +110 -0
  100. package/lib/module/presets.js.map +1 -0
  101. package/lib/module/testing.js +160 -0
  102. package/lib/module/testing.js.map +1 -0
  103. package/lib/typescript/analytics/config.d.ts +19 -6
  104. package/lib/typescript/analytics/config.d.ts.map +1 -1
  105. package/lib/typescript/analytics/index.d.ts +1 -1
  106. package/lib/typescript/analytics/index.d.ts.map +1 -1
  107. package/lib/typescript/analytics/network-guarded-fetch-transport.d.ts +6 -0
  108. package/lib/typescript/analytics/network-guarded-fetch-transport.d.ts.map +1 -0
  109. package/lib/typescript/analytics/nitro-transport.d.ts.map +1 -1
  110. package/lib/typescript/analytics/plugins/context.d.ts +2 -0
  111. package/lib/typescript/analytics/plugins/context.d.ts.map +1 -1
  112. package/lib/typescript/analytics/react-native-client.d.ts +46 -6
  113. package/lib/typescript/analytics/react-native-client.d.ts.map +1 -1
  114. package/lib/typescript/diagnostics.d.ts +21 -0
  115. package/lib/typescript/diagnostics.d.ts.map +1 -0
  116. package/lib/typescript/errors.d.ts +9 -0
  117. package/lib/typescript/errors.d.ts.map +1 -0
  118. package/lib/typescript/experiment/experimentClient.d.ts +9 -1
  119. package/lib/typescript/experiment/experimentClient.d.ts.map +1 -1
  120. package/lib/typescript/experiment/index.d.ts +1 -0
  121. package/lib/typescript/experiment/index.d.ts.map +1 -1
  122. package/lib/typescript/experiment/stubClient.d.ts +6 -1
  123. package/lib/typescript/experiment/stubClient.d.ts.map +1 -1
  124. package/lib/typescript/experiment/transport/http.d.ts.map +1 -1
  125. package/lib/typescript/experiment/typed-variants.d.ts +9 -0
  126. package/lib/typescript/experiment/typed-variants.d.ts.map +1 -0
  127. package/lib/typescript/experiment/types/client.d.ts +21 -0
  128. package/lib/typescript/experiment/types/client.d.ts.map +1 -1
  129. package/lib/typescript/experiment/types/config.d.ts.map +1 -1
  130. package/lib/typescript/index.d.ts +12 -3
  131. package/lib/typescript/index.d.ts.map +1 -1
  132. package/lib/typescript/index.web.d.ts +37 -8
  133. package/lib/typescript/index.web.d.ts.map +1 -1
  134. package/lib/typescript/native/context.web.d.ts +8 -0
  135. package/lib/typescript/native/context.web.d.ts.map +1 -0
  136. package/lib/typescript/native/http.d.ts.map +1 -1
  137. package/lib/typescript/native/http.web.d.ts +6 -0
  138. package/lib/typescript/native/http.web.d.ts.map +1 -0
  139. package/lib/typescript/native/hybrid.web.d.ts +8 -0
  140. package/lib/typescript/native/hybrid.web.d.ts.map +1 -0
  141. package/lib/typescript/native/storage.d.ts.map +1 -1
  142. package/lib/typescript/native/storage.web.d.ts +30 -0
  143. package/lib/typescript/native/storage.web.d.ts.map +1 -0
  144. package/lib/typescript/network.d.ts +50 -0
  145. package/lib/typescript/network.d.ts.map +1 -0
  146. package/lib/typescript/presets.d.ts +50 -0
  147. package/lib/typescript/presets.d.ts.map +1 -0
  148. package/lib/typescript/testing.d.ts +11 -0
  149. package/lib/typescript/testing.d.ts.map +1 -0
  150. package/package.json +4 -2
  151. package/src/analytics/config.ts +33 -8
  152. package/src/analytics/index.ts +3 -0
  153. package/src/analytics/network-guarded-fetch-transport.ts +10 -0
  154. package/src/analytics/nitro-transport.ts +2 -0
  155. package/src/analytics/plugins/context.ts +10 -1
  156. package/src/analytics/react-native-client.ts +238 -9
  157. package/src/diagnostics.ts +119 -0
  158. package/src/errors.ts +60 -0
  159. package/src/experiment/experimentClient.ts +116 -3
  160. package/src/experiment/index.ts +1 -0
  161. package/src/experiment/stubClient.ts +42 -1
  162. package/src/experiment/transport/http.ts +10 -2
  163. package/src/experiment/typed-variants.ts +68 -0
  164. package/src/experiment/types/client.ts +29 -0
  165. package/src/experiment/types/config.ts +29 -5
  166. package/src/index.ts +28 -2
  167. package/src/index.web.ts +89 -14
  168. package/src/native/context.web.ts +38 -0
  169. package/src/native/http.ts +38 -8
  170. package/src/native/http.web.ts +24 -0
  171. package/src/native/hybrid.web.ts +21 -0
  172. package/src/native/storage.ts +27 -25
  173. package/src/native/storage.web.ts +152 -0
  174. package/src/network.ts +258 -0
  175. package/src/presets.ts +208 -0
  176. package/src/testing.ts +177 -0
@@ -2,6 +2,7 @@
2
2
 
3
3
  import { AppState } from "react-native";
4
4
  import { AmplitudeCore, Destination, UUID, returnWrapper, debugWrapper, getClientLogConfig, getClientStates, IdentityEventSender, getAnalyticsConnector, setConnectorDeviceId, setConnectorUserId, SpecialEventType } from "@amplitude/analytics-core";
5
+ import { healthCheck } from "../diagnostics";
5
6
  import { CampaignTracker } from "./campaign/campaign-tracker";
6
7
  import { Context } from "./plugins/context";
7
8
  import { useReactNativeConfig, createCookieStorage } from "./config";
@@ -10,7 +11,10 @@ import { isNative } from "./utils/platform";
10
11
  const START_SESSION_EVENT = "session_start";
11
12
  const END_SESSION_EVENT = "session_end";
12
13
  let nextConnectorOwnerId = 0;
13
- let activeConnectorOwnerId;
14
+ const activeConnectorOwnerIds = new Map();
15
+ export function getActiveAnalyticsInstanceNames() {
16
+ return Array.from(activeConnectorOwnerIds.keys()).sort();
17
+ }
14
18
  export class AmplitudeReactNative extends AmplitudeCore {
15
19
  appState = "background";
16
20
  connectorOwnerId = ++nextConnectorOwnerId;
@@ -53,7 +57,8 @@ export class AmplitudeReactNative extends AmplitudeCore {
53
57
  // Set up the analytics connector to integrate with the experiment SDK.
54
58
  // Send events from the experiment SDK and forward identifies to the
55
59
  // identity store.
56
- const connector = getAnalyticsConnector();
60
+ const connectorInstanceName = this.getConnectorInstanceName();
61
+ const connector = getAnalyticsConnector(connectorInstanceName);
57
62
  connector.identityStore.setIdentity({
58
63
  userId: this.config.userId,
59
64
  deviceId: this.config.deviceId
@@ -83,7 +88,7 @@ export class AmplitudeReactNative extends AmplitudeCore {
83
88
  connector.eventBridge.setEventReceiver(event => {
84
89
  this.handleInternalTrackPromise(this.track(event.eventType, event.eventProperties).promise);
85
90
  });
86
- activeConnectorOwnerId = this.connectorOwnerId;
91
+ activeConnectorOwnerIds.set(connectorInstanceName, this.connectorOwnerId);
87
92
  } catch (error) {
88
93
  if (appStateHandlerInstalled) {
89
94
  this.appStateChangeHandler?.remove();
@@ -102,11 +107,12 @@ export class AmplitudeReactNative extends AmplitudeCore {
102
107
  this.q = [];
103
108
  this.dispatchQ = [];
104
109
  this.isReady = false;
105
- if (activeConnectorOwnerId === this.connectorOwnerId) {
106
- const connector = getAnalyticsConnector();
110
+ const connectorInstanceName = this.config ? this.getConnectorInstanceName() : undefined;
111
+ if (connectorInstanceName && activeConnectorOwnerIds.get(connectorInstanceName) === this.connectorOwnerId) {
112
+ const connector = getAnalyticsConnector(connectorInstanceName);
107
113
  connector.eventBridge.setEventReceiver(() => undefined);
108
114
  connector.identityStore.setIdentity({});
109
- activeConnectorOwnerId = undefined;
115
+ activeConnectorOwnerIds.delete(connectorInstanceName);
110
116
  }
111
117
  }
112
118
  handleInternalTrackPromise(promise) {
@@ -114,6 +120,9 @@ export class AmplitudeReactNative extends AmplitudeCore {
114
120
  this.config?.loggerProvider?.error(`Internal track call failed: ${String(error)}`);
115
121
  });
116
122
  }
123
+ getConnectorInstanceName() {
124
+ return this.config.instanceName ?? "$default_instance";
125
+ }
117
126
  cancelDestinationFlushes() {
118
127
  this.timeline.plugins.forEach(plugin => {
119
128
  if (plugin.type !== "destination") {
@@ -155,7 +164,7 @@ export class AmplitudeReactNative extends AmplitudeCore {
155
164
  return;
156
165
  }
157
166
  this.config.userId = userId;
158
- setConnectorUserId(userId);
167
+ setConnectorUserId(userId, this.getConnectorInstanceName());
159
168
  }
160
169
  getDeviceId() {
161
170
  return this.config?.deviceId;
@@ -166,7 +175,7 @@ export class AmplitudeReactNative extends AmplitudeCore {
166
175
  return;
167
176
  }
168
177
  this.config.deviceId = deviceId;
169
- setConnectorDeviceId(deviceId);
178
+ setConnectorDeviceId(deviceId, this.getConnectorInstanceName());
170
179
  }
171
180
  identify(identify, eventOptions) {
172
181
  if (eventOptions?.user_id) {
@@ -184,6 +193,84 @@ export class AmplitudeReactNative extends AmplitudeCore {
184
193
  getSessionId() {
185
194
  return this.config?.sessionId;
186
195
  }
196
+ async flushWithResult() {
197
+ const queueSize = this.getQueueSize();
198
+ const collector = this.collectFlushOutcomes();
199
+ const startedAt = Date.now();
200
+ try {
201
+ await this.flush().promise;
202
+ const outcomes = collector.finish();
203
+ this.lastFlushTime = Date.now();
204
+ this.lastFlushDurationMillis = this.lastFlushTime - startedAt;
205
+ const remainingQueueSize = this.getQueueSize();
206
+ const failedOutcomes = outcomes.filter(outcome => !this.isSuccessStatusCode(outcome.code));
207
+ const dropped = failedOutcomes.reduce((total, outcome) => total + outcome.count, 0);
208
+ if (remainingQueueSize > 0) {
209
+ this.lastFlushError = `Flush completed with ${remainingQueueSize} queued event(s) remaining`;
210
+ return {
211
+ ok: false,
212
+ sent: this.countSuccessfulOutcomes(outcomes),
213
+ failed: remainingQueueSize,
214
+ dropped,
215
+ retried: remainingQueueSize,
216
+ reason: this.lastFlushError,
217
+ finishedAt: this.lastFlushTime
218
+ };
219
+ }
220
+ if (dropped > 0) {
221
+ this.lastFlushError = failedOutcomes[0]?.message ?? `Flush dropped ${dropped} event(s) without retry`;
222
+ return {
223
+ ok: false,
224
+ sent: this.countSuccessfulOutcomes(outcomes),
225
+ failed: dropped,
226
+ dropped,
227
+ retried: 0,
228
+ reason: this.lastFlushError,
229
+ finishedAt: this.lastFlushTime
230
+ };
231
+ }
232
+ this.lastFlushError = undefined;
233
+ return {
234
+ ok: true,
235
+ sent: this.countSuccessfulOutcomes(outcomes) || queueSize,
236
+ failed: 0,
237
+ dropped: 0,
238
+ retried: 0,
239
+ finishedAt: this.lastFlushTime
240
+ };
241
+ } catch (error) {
242
+ collector.finish();
243
+ this.lastFlushTime = Date.now();
244
+ this.lastFlushDurationMillis = this.lastFlushTime - startedAt;
245
+ this.lastFlushError = error instanceof Error ? error.message : String(error);
246
+ return {
247
+ ok: false,
248
+ sent: 0,
249
+ failed: queueSize,
250
+ dropped: 0,
251
+ retried: 0,
252
+ reason: this.lastFlushError,
253
+ finishedAt: this.lastFlushTime
254
+ };
255
+ }
256
+ }
257
+ getDiagnostics() {
258
+ return {
259
+ initialized: Boolean(this.config && this.isReady),
260
+ instanceName: this.config?.instanceName,
261
+ userId: this.getUserId(),
262
+ deviceId: this.getDeviceId(),
263
+ sessionId: this.getSessionId(),
264
+ queueSize: this.getQueueSize(),
265
+ lastFlushTime: this.lastFlushTime,
266
+ lastFlushDurationMillis: this.lastFlushDurationMillis,
267
+ lastFlushError: this.lastFlushError,
268
+ activeInstanceNames: getActiveAnalyticsInstanceNames()
269
+ };
270
+ }
271
+ async healthCheck() {
272
+ return healthCheck(this);
273
+ }
187
274
  getIdentity() {
188
275
  return {
189
276
  userId: this.getUserId(),
@@ -209,6 +296,61 @@ export class AmplitudeReactNative extends AmplitudeCore {
209
296
  }
210
297
  this.config.lastEventTime = this.currentTimeMillis();
211
298
  }
299
+ getQueueSize() {
300
+ let queueSize = this.q.length + this.dispatchQ.length + this.timeline.queue.length;
301
+ this.timeline.plugins.forEach(plugin => {
302
+ if (plugin.type !== "destination") {
303
+ return;
304
+ }
305
+ const destination = plugin;
306
+ queueSize += destination.queue?.length ?? 0;
307
+ });
308
+ return queueSize;
309
+ }
310
+ collectFlushOutcomes() {
311
+ const outcomes = [];
312
+ const restorers = [];
313
+ this.timeline.plugins.forEach(plugin => {
314
+ if (plugin.type !== "destination") {
315
+ return;
316
+ }
317
+ const destination = plugin;
318
+ if (!destination.fulfillRequest) {
319
+ return;
320
+ }
321
+ const original = destination.fulfillRequest;
322
+ destination.fulfillRequest = (list, code, message) => {
323
+ outcomes.push({
324
+ code,
325
+ count: list.length,
326
+ message
327
+ });
328
+ return original.call(destination, list, code, message);
329
+ };
330
+ restorers.push(() => {
331
+ destination.fulfillRequest = original;
332
+ });
333
+ });
334
+ return {
335
+ finish: () => {
336
+ while (restorers.length > 0) {
337
+ restorers.pop()?.();
338
+ }
339
+ return outcomes;
340
+ }
341
+ };
342
+ }
343
+ countSuccessfulOutcomes(outcomes) {
344
+ return outcomes.reduce((total, outcome) => {
345
+ if (!this.isSuccessStatusCode(outcome.code)) {
346
+ return total;
347
+ }
348
+ return total + outcome.count;
349
+ }, 0);
350
+ }
351
+ isSuccessStatusCode(code) {
352
+ return code >= 200 && code < 300;
353
+ }
212
354
  setSessionIdInternal(sessionId, eventTime) {
213
355
  const previousSessionId = this.config.sessionId;
214
356
  if (previousSessionId === sessionId) {
@@ -330,6 +472,7 @@ export const createInstance = () => {
330
472
  setGroup: debugWrapper(client.setGroup.bind(client), "setGroup", getClientLogConfig(client), getClientStates(client, ["config.apiKey", "timeline.queue.length"])),
331
473
  revenue: debugWrapper(client.revenue.bind(client), "revenue", getClientLogConfig(client), getClientStates(client, ["config.apiKey", "timeline.queue.length"])),
332
474
  flush: debugWrapper(client.flush.bind(client), "flush", getClientLogConfig(client), getClientStates(client, ["config.apiKey", "timeline.queue.length"])),
475
+ flushWithResult: debugWrapper(client.flushWithResult.bind(client), "flushWithResult", getClientLogConfig(client), getClientStates(client, ["config.apiKey", "timeline.queue.length"])),
333
476
  getUserId: debugWrapper(client.getUserId.bind(client), "getUserId", getClientLogConfig(client), getClientStates(client, ["config", "config.userId"])),
334
477
  setUserId: debugWrapper(client.setUserId.bind(client), "setUserId", getClientLogConfig(client), getClientStates(client, ["config", "config.userId"])),
335
478
  getDeviceId: debugWrapper(client.getDeviceId.bind(client), "getDeviceId", getClientLogConfig(client), getClientStates(client, ["config", "config.deviceId"])),
@@ -339,7 +482,9 @@ export const createInstance = () => {
339
482
  setSessionId: debugWrapper(client.setSessionId.bind(client), "setSessionId", getClientLogConfig(client), getClientStates(client, ["config"])),
340
483
  extendSession: debugWrapper(client.extendSession.bind(client), "extendSession", getClientLogConfig(client), getClientStates(client, ["config"])),
341
484
  setOptOut: debugWrapper(client.setOptOut.bind(client), "setOptOut", getClientLogConfig(client), getClientStates(client, ["config"])),
342
- shutdown: debugWrapper(client.shutdown.bind(client), "shutdown", getClientLogConfig(client), getClientStates(client, ["config", "timeline.plugins"]))
485
+ shutdown: debugWrapper(client.shutdown.bind(client), "shutdown", getClientLogConfig(client), getClientStates(client, ["config", "timeline.plugins"])),
486
+ getDiagnostics: debugWrapper(client.getDiagnostics.bind(client), "getDiagnostics", getClientLogConfig(client), getClientStates(client, ["config", "timeline.plugins"])),
487
+ healthCheck: debugWrapper(client.healthCheck.bind(client), "healthCheck", getClientLogConfig(client), getClientStates(client, ["config", "timeline.plugins"]))
343
488
  };
344
489
  };
345
490
  export default createInstance();
@@ -1 +1 @@
1
- {"version":3,"names":["AppState","AmplitudeCore","Destination","UUID","returnWrapper","debugWrapper","getClientLogConfig","getClientStates","IdentityEventSender","getAnalyticsConnector","setConnectorDeviceId","setConnectorUserId","SpecialEventType","CampaignTracker","Context","useReactNativeConfig","createCookieStorage","parseOldCookies","isNative","START_SESSION_EVENT","END_SESSION_EVENT","nextConnectorOwnerId","activeConnectorOwnerId","AmplitudeReactNative","appState","connectorOwnerId","init","apiKey","userId","options","initPromise","_init","finally","undefined","initializing","explicitSessionId","sessionId","appStateHandlerInstalled","oldCookies","reactNativeOptions","deviceId","optOut","lastEventTime","connector","identityStore","setIdentity","config","add","promise","currentState","isNewSession","startNewSessionIfNeeded","currentTimeMillis","loggerProvider","log","getSessionId","appStateChangeHandler","remove","addEventListener","handleAppStateChange","runAttributionStrategy","attribution","runQueuedFunctions","eventBridge","setEventReceiver","event","handleInternalTrackPromise","track","eventType","eventProperties","error","shutdown","cancelDestinationFlushes","timeline","reset","q","dispatchQ","isReady","catch","String","plugins","forEach","plugin","type","destination","scheduleId","clearTimeout","flushId","resetSchedule","queue","attributionConfig","args","onNewCampaign","setSessionId","bind","storage","campaignTracker","send","getUserId","setUserId","push","getDeviceId","setDeviceId","identify","eventOptions","user_id","device_id","getIdentity","userProperties","getOptOut","setSessionIdInternal","extendSession","eventTime","previousSessionId","trackingSessionEvents","sessionEndEvent","event_type","time","session_id","sessionStartEvent","process","isSessionEvent","isCustomEventSessionId","event_id","eventId","lastEventId","IDENTIFY","user_properties","getOperationAppliedUserProperties","Date","now","timestamp","shouldStartNewSession","inSession","isWithinMinTimeBetweenSessions","sessionTimeout","nextAppState","currentAppState","enterForeground","exitForeground","createInstance","client","logEvent","groupIdentify","setGroup","revenue","flush","setOptOut"],"sourceRoot":"../../../src","sources":["analytics/react-native-client.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["AppState","AmplitudeCore","Destination","UUID","returnWrapper","debugWrapper","getClientLogConfig","getClientStates","IdentityEventSender","getAnalyticsConnector","setConnectorDeviceId","setConnectorUserId","SpecialEventType","healthCheck","CampaignTracker","Context","useReactNativeConfig","createCookieStorage","parseOldCookies","isNative","START_SESSION_EVENT","END_SESSION_EVENT","nextConnectorOwnerId","activeConnectorOwnerIds","Map","getActiveAnalyticsInstanceNames","Array","from","keys","sort","AmplitudeReactNative","appState","connectorOwnerId","init","apiKey","userId","options","initPromise","_init","finally","undefined","initializing","explicitSessionId","sessionId","appStateHandlerInstalled","oldCookies","reactNativeOptions","deviceId","optOut","lastEventTime","connectorInstanceName","getConnectorInstanceName","connector","identityStore","setIdentity","config","add","promise","currentState","isNewSession","startNewSessionIfNeeded","currentTimeMillis","loggerProvider","log","getSessionId","appStateChangeHandler","remove","addEventListener","handleAppStateChange","runAttributionStrategy","attribution","runQueuedFunctions","eventBridge","setEventReceiver","event","handleInternalTrackPromise","track","eventType","eventProperties","set","error","shutdown","cancelDestinationFlushes","timeline","reset","q","dispatchQ","isReady","get","delete","catch","String","instanceName","plugins","forEach","plugin","type","destination","scheduleId","clearTimeout","flushId","resetSchedule","queue","attributionConfig","args","onNewCampaign","setSessionId","bind","storage","campaignTracker","send","getUserId","setUserId","push","getDeviceId","setDeviceId","identify","eventOptions","user_id","device_id","flushWithResult","queueSize","getQueueSize","collector","collectFlushOutcomes","startedAt","Date","now","flush","outcomes","finish","lastFlushTime","lastFlushDurationMillis","remainingQueueSize","failedOutcomes","filter","outcome","isSuccessStatusCode","code","dropped","reduce","total","count","lastFlushError","ok","sent","countSuccessfulOutcomes","failed","retried","reason","finishedAt","message","Error","getDiagnostics","initialized","Boolean","activeInstanceNames","getIdentity","userProperties","getOptOut","setSessionIdInternal","extendSession","length","restorers","fulfillRequest","original","list","call","pop","eventTime","previousSessionId","trackingSessionEvents","sessionEndEvent","event_type","time","session_id","sessionStartEvent","process","isSessionEvent","isCustomEventSessionId","event_id","eventId","lastEventId","IDENTIFY","user_properties","getOperationAppliedUserProperties","timestamp","shouldStartNewSession","inSession","isWithinMinTimeBetweenSessions","sessionTimeout","nextAppState","currentAppState","enterForeground","exitForeground","createInstance","client","logEvent","groupIdentify","setGroup","revenue","setOptOut"],"sourceRoot":"../../../src","sources":["analytics/react-native-client.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+
3
+ import { isNative } from "./analytics/utils/platform";
4
+ import { getAmplitudeErrorCode } from "./errors";
5
+ import { getNetworkEnabled } from "./network";
6
+ let lastNativeError;
7
+ function getHybridModule() {
8
+ if (isNative()) {
9
+ return require("./native/hybrid");
10
+ }
11
+ return require("./native/hybrid.web");
12
+ }
13
+ export function getLastNativeError() {
14
+ return lastNativeError;
15
+ }
16
+ export function getNativeStartupDiagnostics() {
17
+ const result = {
18
+ nitroModulesAvailable: true,
19
+ contextAvailable: false,
20
+ storageAvailable: false,
21
+ workerAvailable: false,
22
+ nativeAvailable: false,
23
+ lastError: lastNativeError
24
+ };
25
+ try {
26
+ const {
27
+ getAmplitudeContext,
28
+ getAmplitudeStorage,
29
+ getAmplitudeWorker
30
+ } = getHybridModule();
31
+ getAmplitudeContext();
32
+ result.contextAvailable = true;
33
+ getAmplitudeStorage();
34
+ result.storageAvailable = true;
35
+ getAmplitudeWorker();
36
+ result.workerAvailable = true;
37
+ result.nativeAvailable = true;
38
+ lastNativeError = undefined;
39
+ result.lastError = undefined;
40
+ } catch (error) {
41
+ lastNativeError = {
42
+ code: getAmplitudeErrorCode(error),
43
+ message: error instanceof Error ? error.message : String(error)
44
+ };
45
+ result.nitroModulesAvailable = false;
46
+ result.lastError = lastNativeError;
47
+ }
48
+ return result;
49
+ }
50
+ export function getAmplitudeDiagnostics(analytics) {
51
+ return {
52
+ ...analytics.getDiagnostics(),
53
+ native: getNativeStartupDiagnostics(),
54
+ networkEnabled: getNetworkEnabled()
55
+ };
56
+ }
57
+ export async function healthCheck(analytics) {
58
+ const errors = [];
59
+ const native = getNativeStartupDiagnostics();
60
+ let storageWritable = false;
61
+ try {
62
+ const {
63
+ getAmplitudeStorage
64
+ } = getHybridModule();
65
+ const storage = getAmplitudeStorage();
66
+ const key = `health::${Date.now()}`;
67
+ storage.set(key, "ok", false);
68
+ storageWritable = storage.get(key, false) === "ok";
69
+ storage.remove(key, false);
70
+ } catch (error) {
71
+ errors.push(error instanceof Error ? error.message : String(error));
72
+ }
73
+ if (!native.nativeAvailable && native.lastError) {
74
+ errors.push(native.lastError.message);
75
+ }
76
+ const analyticsInitialized = analytics ? analytics.getDiagnostics().initialized : false;
77
+ return {
78
+ ok: native.nativeAvailable && storageWritable,
79
+ analyticsInitialized,
80
+ nativeAvailable: native.nativeAvailable,
81
+ storageWritable,
82
+ errors
83
+ };
84
+ }
85
+ //# sourceMappingURL=diagnostics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["isNative","getAmplitudeErrorCode","getNetworkEnabled","lastNativeError","getHybridModule","require","getLastNativeError","getNativeStartupDiagnostics","result","nitroModulesAvailable","contextAvailable","storageAvailable","workerAvailable","nativeAvailable","lastError","getAmplitudeContext","getAmplitudeStorage","getAmplitudeWorker","undefined","error","code","message","Error","String","getAmplitudeDiagnostics","analytics","getDiagnostics","native","networkEnabled","healthCheck","errors","storageWritable","storage","key","Date","now","set","get","remove","push","analyticsInitialized","initialized","ok"],"sourceRoot":"../../src","sources":["diagnostics.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+
3
+ export class AmplitudeError extends Error {
4
+ constructor(code, message, cause) {
5
+ super(message);
6
+ this.name = "AmplitudeError";
7
+ this.code = code;
8
+ this.cause = cause;
9
+ }
10
+ }
11
+ export function createAmplitudeError(code, message, cause) {
12
+ return new AmplitudeError(code, message, cause);
13
+ }
14
+ export function getAmplitudeErrorCode(error) {
15
+ if (error instanceof AmplitudeError) {
16
+ return error.code;
17
+ }
18
+ if (error instanceof Error) {
19
+ const message = error.message.toLowerCase();
20
+ if (message.includes("deployment key")) {
21
+ return "invalid_deployment_key";
22
+ }
23
+ if (message.includes("api key")) {
24
+ return "invalid_api_key";
25
+ }
26
+ if (message.includes("timeout")) {
27
+ return "timeout";
28
+ }
29
+ if (message.includes("network") || message.includes("fetch")) {
30
+ return "network_error";
31
+ }
32
+ if (message.includes("storage")) {
33
+ return "storage_error";
34
+ }
35
+ if (message.includes("nitro") || message.includes("native")) {
36
+ return "native_unavailable";
37
+ }
38
+ }
39
+ return "unknown";
40
+ }
41
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["AmplitudeError","Error","constructor","code","message","cause","name","createAmplitudeError","getAmplitudeErrorCode","error","toLowerCase","includes"],"sourceRoot":"../../src","sources":["errors.ts"],"mappings":";;AAaA,OAAO,MAAMA,cAAc,SAASC,KAAK,CAAC;EAIxCC,WAAWA,CAACC,IAAwB,EAAEC,OAAe,EAAEC,KAAe,EAAE;IACtE,KAAK,CAACD,OAAO,CAAC;IACd,IAAI,CAACE,IAAI,GAAG,gBAAgB;IAC5B,IAAI,CAACH,IAAI,GAAGA,IAAI;IAChB,IAAI,CAACE,KAAK,GAAGA,KAAK;EACpB;AACF;AAEA,OAAO,SAASE,oBAAoBA,CAClCJ,IAAwB,EACxBC,OAAe,EACfC,KAAe,EACC;EAChB,OAAO,IAAIL,cAAc,CAACG,IAAI,EAAEC,OAAO,EAAEC,KAAK,CAAC;AACjD;AAEA,OAAO,SAASG,qBAAqBA,CAACC,KAAc,EAAsB;EACxE,IAAIA,KAAK,YAAYT,cAAc,EAAE;IACnC,OAAOS,KAAK,CAACN,IAAI;EACnB;EACA,IAAIM,KAAK,YAAYR,KAAK,EAAE;IAC1B,MAAMG,OAAO,GAAGK,KAAK,CAACL,OAAO,CAACM,WAAW,CAAC,CAAC;IAC3C,IAAIN,OAAO,CAACO,QAAQ,CAAC,gBAAgB,CAAC,EAAE;MACtC,OAAO,wBAAwB;IACjC;IACA,IAAIP,OAAO,CAACO,QAAQ,CAAC,SAAS,CAAC,EAAE;MAC/B,OAAO,iBAAiB;IAC1B;IACA,IAAIP,OAAO,CAACO,QAAQ,CAAC,SAAS,CAAC,EAAE;MAC/B,OAAO,SAAS;IAClB;IACA,IAAIP,OAAO,CAACO,QAAQ,CAAC,SAAS,CAAC,IAAIP,OAAO,CAACO,QAAQ,CAAC,OAAO,CAAC,EAAE;MAC5D,OAAO,eAAe;IACxB;IACA,IAAIP,OAAO,CAACO,QAAQ,CAAC,SAAS,CAAC,EAAE;MAC/B,OAAO,eAAe;IACxB;IACA,IAAIP,OAAO,CAACO,QAAQ,CAAC,OAAO,CAAC,IAAIP,OAAO,CAACO,QAAQ,CAAC,QAAQ,CAAC,EAAE;MAC3D,OAAO,oBAAoB;IAC7B;EACF;EACA,OAAO,SAAS;AAClB","ignoreList":[]}
@@ -46,7 +46,7 @@ export class ExperimentClient {
46
46
  fetchSequenceNumber = 0;
47
47
  storedFetchSequenceNumber = 0;
48
48
  stopCallbacks = new Set();
49
-
49
+ inFlightFetches = new Map();
50
50
  /**
51
51
  * Creates a new ExperimentClient instance.
52
52
  *
@@ -213,6 +213,33 @@ export class ExperimentClient {
213
213
  }
214
214
  return this;
215
215
  }
216
+ async fetchWithMetadata(user = this.user, options) {
217
+ const startedAt = Date.now();
218
+ const fetchUser = user ?? this.user;
219
+ this.setUser(fetchUser);
220
+ try {
221
+ const variants = await this.fetchWithRetries(fetchUser, options);
222
+ const flagKeys = Object.keys(variants);
223
+ return {
224
+ fetched: true,
225
+ flagKeys,
226
+ cacheHit: false,
227
+ durationMillis: Date.now() - startedAt,
228
+ source: "network"
229
+ };
230
+ } catch (error) {
231
+ const reason = error instanceof Error ? error.message : String(error);
232
+ this.lastFetchFailure = reason;
233
+ return {
234
+ fetched: false,
235
+ flagKeys: options?.flagKeys ?? Object.keys(this.variants.getAll()),
236
+ cacheHit: Object.keys(this.variants.getAll()).length > 0,
237
+ durationMillis: Date.now() - startedAt,
238
+ source: "cache",
239
+ failureReason: reason
240
+ };
241
+ }
242
+ }
216
243
  async fetchOrThrow(user = this.user, options) {
217
244
  const fetchUser = user ?? this.user;
218
245
  this.setUser(fetchUser);
@@ -248,6 +275,33 @@ export class ExperimentClient {
248
275
  this.logger.debug(`[Experiment] variant for ${key} is ${sourceVariant.variant?.value}`);
249
276
  return sourceVariant.variant || {};
250
277
  }
278
+ variantWithMetadata(key, fallback) {
279
+ if (!this.apiKey) {
280
+ return {
281
+ variant: {
282
+ value: undefined
283
+ },
284
+ fallback: true,
285
+ stale: false,
286
+ reason: "missing_flag"
287
+ };
288
+ }
289
+ const sourceVariant = this.variantAndSource(key, fallback);
290
+ if (this.config.automaticExposureTracking) {
291
+ this.exposureInternal(key, sourceVariant);
292
+ }
293
+ this.logger.debug(`[Experiment] variant for ${key} is ${sourceVariant.variant?.value}`);
294
+ const variant = sourceVariant.variant || {};
295
+ const fallbackVariant = isFallback(sourceVariant.source);
296
+ const missingVariant = variant.value === undefined;
297
+ return {
298
+ variant,
299
+ source: sourceVariant.source,
300
+ fallback: fallbackVariant,
301
+ stale: false,
302
+ reason: missingVariant ? this.lastFetchFailure ? "fetch_failure" : fallbackVariant ? "fallback" : "no_assignment" : fallbackVariant ? "fallback" : undefined
303
+ };
304
+ }
251
305
 
252
306
  /**
253
307
  * Track an exposure event for the variant associated with the flag/experiment
@@ -299,6 +353,15 @@ export class ExperimentClient {
299
353
  this.variants.clear();
300
354
  void this.variants.store().catch(e => this.logger.warn(e));
301
355
  }
356
+ clearVariants() {
357
+ this.clear();
358
+ }
359
+ hasCachedVariant(key) {
360
+ return this.variants.get(key) !== undefined;
361
+ }
362
+ getLastFetchTime() {
363
+ return this.lastFetchTime;
364
+ }
302
365
 
303
366
  /**
304
367
  * Get a copy of the internal {@link ExperimentUser} object if it is set.
@@ -635,7 +698,26 @@ export class ExperimentClient {
635
698
  }
636
699
  }
637
700
  async fetchWithRetries(user, options) {
638
- return await this.fetchInternal(user, this.config.fetchTimeoutMillis, this.config.retryFetchOnFailure, options);
701
+ const key = JSON.stringify({
702
+ user,
703
+ flagKeys: options?.flagKeys ?? null
704
+ });
705
+ const inFlightFetch = this.inFlightFetches.get(key);
706
+ if (inFlightFetch) {
707
+ return await inFlightFetch;
708
+ }
709
+ const fetch = this.fetchInternal(user, this.config.fetchTimeoutMillis, this.config.retryFetchOnFailure, options).then(variants => {
710
+ this.lastFetchTime = Date.now();
711
+ this.lastFetchFailure = undefined;
712
+ return variants;
713
+ }).catch(error => {
714
+ this.lastFetchFailure = error instanceof Error ? error.message : String(error);
715
+ throw error;
716
+ }).finally(() => {
717
+ this.inFlightFetches.delete(key);
718
+ });
719
+ this.inFlightFetches.set(key, fetch);
720
+ return await fetch;
639
721
  }
640
722
  async doFetch(user, timeoutMillis, options) {
641
723
  user = await this.addContextOrWait(user, 10000);