pulse-updates 1.3.6 → 1.3.8

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.
@@ -10,6 +10,7 @@ exports.getTrackingInfo = getTrackingInfo;
10
10
  exports.pendingEventCount = pendingEventCount;
11
11
  exports.stopTracking = stopTracking;
12
12
  exports.track = track;
13
+ exports.trackIdempotent = trackIdempotent;
13
14
  /**
14
15
  * Pulse Track — the app's own events, sent to Pulse.
15
16
  *
@@ -38,13 +39,17 @@ const DEFAULT_MAX_QUEUE = 500;
38
39
  const DEFAULT_TIMEOUT_MS = 10_000;
39
40
  const DEFAULT_MAX_ATTEMPTS = 10;
40
41
  const DEFAULT_STORAGE_KEY = 'pulse.events.v1';
42
+ const ANALYTICS_INSTALLATION_ID_SUFFIX = '.analytics-installation-id';
43
+ const UUID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
41
44
  let options = null;
42
45
  let queue = [];
46
+ let analyticsInstallationId = '';
43
47
  let timer = null;
44
48
  let sending = false;
45
49
  let nextAttemptAt = 0;
46
50
  let lifecycleSubscription = null;
47
51
  let trackingGeneration = 0;
52
+ const asynchronousStorageAdapters = new WeakSet();
48
53
 
49
54
  /** Turns a config url into the track url; leaves an explicit track url alone. */
50
55
  function trackUrl(url) {
@@ -55,6 +60,7 @@ function configureTracking(opts) {
55
60
  disposeTracking();
56
61
  options = opts;
57
62
  queue = readQueue(opts);
63
+ analyticsInstallationId = opts.identityMode === 'anonymous_installation' ? resolveAnalyticsInstallationId(opts) : '';
58
64
  nextAttemptAt = 0;
59
65
  startTimer();
60
66
  lifecycleSubscription = opts.appState?.addEventListener('change', state => {
@@ -68,10 +74,37 @@ function configureTracking(opts) {
68
74
  * caller has to wrap.
69
75
  */
70
76
  function track(event, props, time) {
71
- if (!options || !event) return;
72
- if (options.hasConsent?.() === false) {
77
+ void enqueueEvent(randomEventId(), event, props, time, false);
78
+ }
79
+
80
+ /**
81
+ * Durably enqueue one logical event with a caller-owned UUID. Replaying the same id is safe:
82
+ * Pulse's server/read model deduplicates it, while the local outbox avoids duplicate rows that
83
+ * are still pending. `true` means the event is present in persistent storage, not delivered yet;
84
+ * once acknowledged, Track keeps it in that outbox through retries and process restarts until a
85
+ * successful server response removes it transactionally.
86
+ */
87
+ function trackIdempotent(eventId, event, props, time) {
88
+ const normalizedId = eventId.trim().toLowerCase();
89
+ if (!UUID_PATTERN.test(normalizedId)) return false;
90
+ return enqueueEvent(normalizedId, event, props, time, true);
91
+ }
92
+ function enqueueEvent(eventId, event, props, time, requirePersistentAck) {
93
+ if (!options || !event) return false;
94
+ try {
95
+ if (options.hasConsent?.() === false) {
96
+ options.onDropped?.(1, 'no-consent');
97
+ return false;
98
+ }
99
+ } catch {
73
100
  options.onDropped?.(1, 'no-consent');
74
- return;
101
+ return false;
102
+ }
103
+ if (requirePersistentAck) {
104
+ // Probe with the unchanged queue before accepting caller-owned data. This discovers custom
105
+ // adapters that secretly return a Promise without ever placing the terminal event in Track;
106
+ // the upstream Links outbox remains the single source of truth.
107
+ if (!options.storage || !supportsDurableSyncWrites(options.storage) || !persistQueue()) return false;
75
108
  }
76
109
  const flat = {};
77
110
  const allow = options.propertyAllowlist ? new Set(options.propertyAllowlist) : null;
@@ -81,43 +114,90 @@ function track(event, props, time) {
81
114
  if (allow && !allow.has(key)) continue;
82
115
  flat[key] = redact.has(key) ? '[REDACTED]' : typeof value === 'string' ? value : String(value);
83
116
  }
117
+ let occurredAt;
118
+ try {
119
+ occurredAt = (time ?? new Date()).toISOString();
120
+ } catch {
121
+ return false;
122
+ }
123
+ const existing = queue.find(queued => queued.id === eventId);
124
+ if (existing) {
125
+ const sameLogicalEvent = existing.event === event && existing.time === occurredAt && JSON.stringify(existing.props) === JSON.stringify(flat);
126
+ if (!sameLogicalEvent) return false;
127
+ if (requirePersistentAck && existing.durable !== true) {
128
+ existing.durable = true;
129
+ if (!persistQueue()) {
130
+ delete existing.durable;
131
+ persistQueue();
132
+ return false;
133
+ }
134
+ }
135
+ return true;
136
+ }
137
+ const queueBeforeDurableEnqueue = requirePersistentAck ? [...queue] : null;
84
138
  queue.push({
85
- id: randomEventId(),
139
+ id: eventId,
86
140
  event,
87
- time: (time ?? new Date()).toISOString(),
141
+ time: occurredAt,
88
142
  props: flat,
89
- attempts: 0
143
+ attempts: 0,
144
+ ...(requirePersistentAck ? {
145
+ durable: true
146
+ } : {})
90
147
  });
91
- const maxQueue = options.maxQueue ?? DEFAULT_MAX_QUEUE;
92
- if (queue.length > maxQueue) {
93
- const dropped = queue.length - maxQueue;
94
- queue = queue.slice(dropped);
95
- options.onDropped?.(dropped, 'queue-full');
148
+ const maxQueue = Math.max(0, options.maxQueue ?? DEFAULT_MAX_QUEUE);
149
+ let dropped = 0;
150
+ while (queue.length > maxQueue) {
151
+ // Never evict a previously acknowledged durable event to make room. When every queued row
152
+ // is durable, the newest enqueue is refused and its upstream outbox remains authoritative.
153
+ const bestEffortIndex = queue.findIndex(queued => queued.durable !== true);
154
+ if (bestEffortIndex < 0) {
155
+ // The queue can already exceed a newly lowered max after restart. Refuse only the newest
156
+ // durable enqueue; previously acknowledged records must still reach the server.
157
+ const newestIndex = queue.findIndex(queued => queued.id === eventId);
158
+ if (newestIndex >= 0) {
159
+ queue.splice(newestIndex, 1);
160
+ dropped += 1;
161
+ }
162
+ break;
163
+ }
164
+ const index = bestEffortIndex;
165
+ queue.splice(index, 1);
166
+ dropped += 1;
96
167
  }
97
- persistQueue();
168
+ const retained = queue.some(queued => queued.id === eventId);
169
+ const persisted = persistQueue();
170
+ if (requirePersistentAck && (!retained || !persisted)) {
171
+ queue = queueBeforeDurableEnqueue ?? queue;
172
+ // If an adapter revealed itself as asynchronous only on the second write, schedule a
173
+ // compensating best-effort mirror without the caller-owned event.
174
+ persistQueue();
175
+ return false;
176
+ }
177
+ if (dropped > 0) options.onDropped?.(dropped, 'queue-full');
98
178
  if (queue.length >= (options.maxBatch ?? DEFAULT_MAX_BATCH)) void flushEvents();
179
+ return retained && (!requirePersistentAck || persisted);
99
180
  }
100
181
 
101
182
  /**
102
183
  * Send what is queued. Returns how many events the server accepted.
103
184
  *
104
- * Failures put the batch back at the front of the queue rather than dropping it: the
105
- * usual cause is a network that is about to come back, and the usual moment is right
106
- * after launch, when the first events of a session are the ones a funnel needs most.
185
+ * The batch remains in the durable queue while HTTP is in flight and is removed only after a
186
+ * successful response is also persisted locally. This intentionally permits duplicate replay
187
+ * after a crash, while a caller-owned event id lets the server/read model deduplicate it.
107
188
  */
108
189
  async function flushEvents() {
109
190
  if (!options || sending || queue.length === 0 || Date.now() < nextAttemptAt) return 0;
110
191
  const opts = options;
111
192
  const requestGeneration = trackingGeneration;
112
193
  const ctx = opts.getContext?.() ?? {};
194
+ const anonymousInstallation = opts.identityMode === 'anonymous_installation';
113
195
 
114
- // Without a device id the server cannot put the event in an arm, and an empty id
115
- // would pool every such install into one. Held rather than dropped: the id usually
116
- // arrives a moment after boot.
117
- if (!ctx.deviceId) return 0;
196
+ // The legacy/default mode intentionally preserves the original experiment-event
197
+ // contract. Anonymous campaign events opt into a separate identity explicitly.
198
+ if (!anonymousInstallation && !ctx.deviceId) return 0;
199
+ const requestDeviceId = anonymousInstallation ? analyticsInstallationId : ctx.deviceId;
118
200
  const batch = queue.slice(0, opts.maxBatch ?? DEFAULT_MAX_BATCH);
119
- queue = queue.slice(batch.length);
120
- persistQueue();
121
201
  sending = true;
122
202
  const controller = typeof AbortController !== 'undefined' ? new AbortController() : null;
123
203
  const timeout = controller ? setTimeout(() => controller.abort(), opts.timeoutMs ?? DEFAULT_TIMEOUT_MS) : null;
@@ -128,8 +208,12 @@ async function flushEvents() {
128
208
  'Content-Type': 'application/json'
129
209
  },
130
210
  body: JSON.stringify({
131
- deviceId: ctx.deviceId,
132
- userId: ctx.userId,
211
+ deviceId: requestDeviceId,
212
+ // Anonymous mode deliberately omits the property rather than serializing an
213
+ // empty identifier. Context mode remains backwards compatible.
214
+ ...(anonymousInstallation ? {} : {
215
+ userId: ctx.userId
216
+ }),
133
217
  platform: ctx.platform,
134
218
  appVersion: ctx.appVersion,
135
219
  events: batch.map(e => ({
@@ -142,11 +226,9 @@ async function flushEvents() {
142
226
  signal: controller?.signal
143
227
  });
144
228
  if (!response.ok) {
145
- // Rate limited or briefly down: keep the events, try on the next tick.
229
+ // Rate limited or briefly down: the batch never left the durable queue.
146
230
  if (requestGeneration === trackingGeneration && options === opts) {
147
- requeueWithBackoff(batch, response.status);
148
- } else {
149
- restoreStaleBatch(opts, batch, response.status);
231
+ markBatchForRetry(batch, response.status);
150
232
  }
151
233
  if (response.status !== 429) opts.onError?.(new Error(`Pulse track failed: ${response.status}`));
152
234
  return 0;
@@ -155,10 +237,15 @@ async function flushEvents() {
155
237
  if (requestGeneration !== trackingGeneration || options !== opts) return body.accepted ?? 0;
156
238
  if (body.ignored && body.ignored.length > 0) opts.onIgnored?.(body.ignored);
157
239
  nextAttemptAt = 0;
158
- persistQueue();
240
+ if (!acknowledgeBatch(opts, batch)) {
241
+ // The server may already have accepted the ids. Keep and replay them rather than creating
242
+ // the loss window between remote ACK and local deletion.
243
+ nextAttemptAt = Date.now() + retryDelayFor(batch);
244
+ opts.onError?.(new Error('Pulse track acknowledgement was not persisted'));
245
+ }
159
246
  return body.accepted ?? 0;
160
247
  } catch (error) {
161
- if (requestGeneration === trackingGeneration && options === opts) requeueWithBackoff(batch);else restoreStaleBatch(opts, batch);
248
+ if (requestGeneration === trackingGeneration && options === opts) markBatchForRetry(batch);
162
249
  opts.onError?.(error);
163
250
  return 0;
164
251
  } finally {
@@ -194,6 +281,7 @@ function stopTracking() {
194
281
  disposeTracking();
195
282
  options = null;
196
283
  queue = [];
284
+ analyticsInstallationId = '';
197
285
  sending = false;
198
286
  nextAttemptAt = 0;
199
287
  }
@@ -205,64 +293,94 @@ function startTimer() {
205
293
  // and a CLI importing this should still be able to exit.
206
294
  timer.unref?.();
207
295
  }
208
- function requeueWithBackoff(batch, status) {
296
+ function markBatchForRetry(batch, status) {
209
297
  if (!options) return;
210
298
  const maxAttempts = options.maxAttempts ?? DEFAULT_MAX_ATTEMPTS;
211
- const retryable = [];
299
+ const batchIds = new Set(batch.map(event => event.id));
212
300
  let dropped = 0;
213
- for (const event of batch) {
301
+ queue = queue.flatMap(event => {
302
+ if (!batchIds.has(event.id)) return [event];
214
303
  const next = {
215
304
  ...event,
216
- attempts: event.attempts + 1
305
+ attempts: Math.min(event.attempts + 1, 100_000)
217
306
  };
218
- if (next.attempts >= maxAttempts && status !== 429) dropped++;else retryable.push(next);
219
- }
220
- queue = [...retryable, ...queue];
307
+ if (next.durable !== true && next.attempts >= maxAttempts && status !== 429) {
308
+ dropped += 1;
309
+ return [];
310
+ }
311
+ return [next];
312
+ });
221
313
  if (dropped > 0) options.onDropped?.(dropped, 'max-attempts');
222
- const attempts = retryable.reduce((max, event) => Math.max(max, event.attempts), 1);
223
- const base = Math.min(60_000, 1_000 * 2 ** Math.min(attempts - 1, 6));
224
- nextAttemptAt = Date.now() + base + Math.floor(Math.random() * Math.max(1, base / 4));
314
+ nextAttemptAt = Date.now() + retryDelayFor(batch.map(event => ({
315
+ ...event,
316
+ attempts: Math.min(event.attempts + 1, 100_000)
317
+ })));
225
318
  persistQueue();
226
319
  }
227
-
228
- /**
229
- * An old request may fail after another app has been configured. Its rows belong in
230
- * the old app's outbox, never in the new app's in-memory queue. When the same app was
231
- * merely reconfigured, merge them back into the live queue so it need not restart to
232
- * see them; otherwise persist directly under the captured app-scoped key.
233
- */
234
- function restoreStaleBatch(opts, batch, status) {
235
- const maxAttempts = opts.maxAttempts ?? DEFAULT_MAX_ATTEMPTS;
236
- const retryable = [];
237
- let dropped = 0;
238
- for (const event of batch) {
239
- const next = {
240
- ...event,
241
- attempts: event.attempts + 1
242
- };
243
- if (next.attempts >= maxAttempts && status !== 429) dropped++;else retryable.push(next);
320
+ function acknowledgeBatch(opts, batch) {
321
+ const acknowledgedIds = new Set(batch.map(event => event.id));
322
+ const remaining = queue.filter(event => !acknowledgedIds.has(event.id));
323
+ if (!opts.storage) {
324
+ queue = remaining;
325
+ return true;
244
326
  }
245
- if (dropped > 0) opts.onDropped?.(dropped, 'max-attempts');
246
- if (retryable.length === 0) return;
247
- const currentOptions = options;
248
- const sameOutbox = currentOptions?.storage === opts.storage && currentOptions !== null && storageKey(currentOptions) === storageKey(opts);
249
- if (sameOutbox) {
250
- queue = [...retryable, ...queue].slice(-(options?.maxQueue ?? DEFAULT_MAX_QUEUE));
251
- persistQueue();
252
- return;
327
+ const includesDurable = batch.some(event => event.durable === true);
328
+ // Never schedule a destructive outbox write through an adapter already known to be async.
329
+ // The server may have accepted this batch, but retaining it for a deduplicated replay is safer
330
+ // than losing it during the gap before an asynchronous deletion reaches disk.
331
+ if (!supportsDurableSyncWrites(opts.storage)) {
332
+ if (includesDurable) return false;
333
+ queue = remaining;
334
+ // Best-effort events keep the historical AsyncStorage behavior: the in-memory batch drains
335
+ // after 2xx and the mirror may replay after a crash, but it cannot block or resend forever.
336
+ writeStorageValue(opts.storage, storageKey(opts), JSON.stringify(remaining), opts.onError, true);
337
+ return true;
253
338
  }
254
- if (!opts.storage) return;
255
- try {
256
- const stored = readQueue(opts);
257
- const restored = [...retryable, ...stored].slice(-(opts.maxQueue ?? DEFAULT_MAX_QUEUE));
258
- opts.storage.set(storageKey(opts), JSON.stringify(restored));
259
- } catch {
260
- // Best effort only; a telemetry recovery must not affect the new app session.
339
+ const persisted = writeStorageValue(opts.storage, storageKey(opts), JSON.stringify(remaining), opts.onError, false);
340
+ if (!persisted) {
341
+ if (!includesDurable && !supportsDurableSyncWrites(opts.storage)) {
342
+ queue = remaining;
343
+ writeStorageValue(opts.storage, storageKey(opts), JSON.stringify(remaining), opts.onError, true);
344
+ return true;
345
+ }
346
+ if (!supportsDurableSyncWrites(opts.storage)) {
347
+ // A conditional thenable may already have scheduled deletion. Immediately schedule the
348
+ // unchanged durable outbox behind it so a normal ordered async adapter restores the record.
349
+ writeStorageValue(opts.storage, storageKey(opts), JSON.stringify(queue), opts.onError, true);
350
+ }
351
+ return false;
261
352
  }
353
+ queue = remaining;
354
+ return true;
355
+ }
356
+ function retryDelayFor(batch) {
357
+ const attempts = batch.reduce((max, event) => Math.max(max, event.attempts), 1);
358
+ const base = Math.min(60_000, 1_000 * 2 ** Math.min(Math.max(attempts - 1, 0), 6));
359
+ return base + Math.floor(Math.random() * Math.max(1, base / 4));
262
360
  }
263
361
  function storageKey(opts) {
264
362
  return opts.storageKey?.trim() || DEFAULT_STORAGE_KEY;
265
363
  }
364
+ function analyticsInstallationIdStorageKey(opts) {
365
+ return `${storageKey(opts)}${ANALYTICS_INSTALLATION_ID_SUFFIX}`;
366
+ }
367
+ function resolveAnalyticsInstallationId(opts) {
368
+ if (opts.storage) {
369
+ try {
370
+ const stored = opts.storage.getString(analyticsInstallationIdStorageKey(opts))?.trim();
371
+ if (stored && UUID_PATTERN.test(stored)) return stored.toLowerCase();
372
+ } catch {
373
+ // A telemetry identifier can stay memory-only when storage is unavailable.
374
+ }
375
+ }
376
+ const generated = randomAnalyticsInstallationId();
377
+ if (opts.storage) {
378
+ // This identifier does not acknowledge delivery, so asynchronous best-effort persistence is
379
+ // acceptable. The helper still observes rejections and marks accidental thenable adapters.
380
+ writeStorageValue(opts.storage, analyticsInstallationIdStorageKey(opts), generated, opts.onError, true);
381
+ }
382
+ return generated;
383
+ }
266
384
  function readQueue(opts) {
267
385
  if (!opts.storage) return [];
268
386
  try {
@@ -270,22 +388,69 @@ function readQueue(opts) {
270
388
  if (!raw) return [];
271
389
  const parsed = JSON.parse(raw);
272
390
  if (!Array.isArray(parsed)) return [];
273
- return parsed.filter(item => Boolean(item && typeof item === 'object' && typeof item.id === 'string' && typeof item.event === 'string' && typeof item.time === 'string' && typeof item.props === 'object' && typeof item.attempts === 'number')).slice(-(opts.maxQueue ?? DEFAULT_MAX_QUEUE));
391
+ const restored = parsed.filter(item => Boolean(item && typeof item === 'object' && typeof item.id === 'string' && typeof item.event === 'string' && typeof item.time === 'string' && item.props && typeof item.props === 'object' && !Array.isArray(item.props) && typeof item.attempts === 'number' && Number.isSafeInteger(item.attempts) && item.attempts >= 0 && item.attempts <= 100_000 && (item.durable === undefined || item.durable === true)));
392
+ const maxQueue = Math.max(0, opts.maxQueue ?? DEFAULT_MAX_QUEUE);
393
+ if (restored.length <= maxQueue) return restored;
394
+ const selected = new Set();
395
+ restored.forEach((event, index) => {
396
+ if (event.durable === true) selected.add(index);
397
+ });
398
+ // A lower max in a later app version may not erase already-ACKed durable rows. Fill any
399
+ // remaining capacity with the newest best-effort events, retaining original send order.
400
+ for (let index = restored.length - 1; index >= 0 && selected.size < maxQueue; index -= 1) {
401
+ if (restored[index]?.durable !== true) selected.add(index);
402
+ }
403
+ return restored.filter((_event, index) => selected.has(index));
274
404
  } catch {
275
405
  return [];
276
406
  }
277
407
  }
278
408
  function persistQueue() {
279
- if (!options?.storage) return;
409
+ if (!options?.storage) return false;
410
+ // Best-effort track() still mirrors through AsyncStorage, but the return value stays false so
411
+ // trackIdempotent() cannot claim synchronous durability that the adapter has not provided.
412
+ return writeStorageValue(options.storage, storageKey(options), JSON.stringify(queue), options.onError, true);
413
+ }
414
+ function supportsDurableSyncWrites(storage) {
415
+ return storage.supportsDurableSyncWrites !== false && !asynchronousStorageAdapters.has(storage);
416
+ }
417
+ function writeStorageValue(storage, key, value, onError, allowKnownAsyncBestEffort) {
418
+ const declaredOrObservedAsync = !supportsDurableSyncWrites(storage);
419
+ if (declaredOrObservedAsync && !allowKnownAsyncBestEffort) return false;
280
420
  try {
281
- options.storage.set(storageKey(options), JSON.stringify(queue));
282
- } catch {
283
- // Telemetry persistence must never become an app failure.
421
+ const result = storage.set(key, value);
422
+ if (isThenable(result)) {
423
+ asynchronousStorageAdapters.add(storage);
424
+ void Promise.resolve(result).catch(error => reportStorageError(onError, error));
425
+ return false;
426
+ }
427
+ return !declaredOrObservedAsync;
428
+ } catch (error) {
429
+ reportStorageError(onError, error);
430
+ return false;
284
431
  }
285
432
  }
433
+ function isThenable(value) {
434
+ return typeof value === 'object' && value !== null || typeof value === 'function' ? typeof value.then === 'function' : false;
435
+ }
436
+ function reportStorageError(onError, error) {
437
+ try {
438
+ onError?.(error);
439
+ } catch {/* telemetry diagnostics never become an app failure */}
440
+ }
286
441
  function randomEventId() {
287
442
  const cryptoLike = globalThis.crypto;
288
443
  if (typeof cryptoLike?.randomUUID === 'function') return cryptoLike.randomUUID();
289
444
  return `evt-${Date.now()}-${Math.random().toString(36).slice(2, 14)}`;
290
445
  }
446
+ function randomAnalyticsInstallationId() {
447
+ const cryptoLike = globalThis.crypto;
448
+ if (typeof cryptoLike?.randomUUID === 'function') return cryptoLike.randomUUID().toLowerCase();
449
+ const bytes = new Uint8Array(16);
450
+ if (typeof cryptoLike?.getRandomValues === 'function') cryptoLike.getRandomValues(bytes);else for (let i = 0; i < bytes.length; i++) bytes[i] = Math.floor(Math.random() * 256);
451
+ bytes[6] = (bytes[6] ?? 0) & 0x0f | 0x40;
452
+ bytes[8] = (bytes[8] ?? 0) & 0x3f | 0x80;
453
+ const hex = Array.from(bytes, value => value.toString(16).padStart(2, '0')).join('');
454
+ return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`;
455
+ }
291
456
  //# sourceMappingURL=track.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["DEFAULT_FLUSH_MS","DEFAULT_MAX_BATCH","DEFAULT_MAX_QUEUE","DEFAULT_TIMEOUT_MS","DEFAULT_MAX_ATTEMPTS","DEFAULT_STORAGE_KEY","options","queue","timer","sending","nextAttemptAt","lifecycleSubscription","trackingGeneration","trackUrl","url","trimmed","replace","includes","configureTracking","opts","disposeTracking","readQueue","startTimer","appState","addEventListener","state","flushEvents","track","event","props","time","hasConsent","onDropped","flat","allow","propertyAllowlist","Set","redact","redactProperties","key","value","Object","entries","undefined","has","String","push","id","randomEventId","Date","toISOString","attempts","maxQueue","length","dropped","slice","persistQueue","maxBatch","now","requestGeneration","ctx","getContext","deviceId","batch","controller","AbortController","timeout","setTimeout","abort","timeoutMs","response","fetch","method","headers","body","JSON","stringify","userId","platform","appVersion","events","map","e","signal","ok","requeueWithBackoff","status","restoreStaleBatch","onError","Error","json","accepted","ignored","onIgnored","error","clearTimeout","pendingEventCount","getTrackingInfo","queueDepth","clearInterval","remove","stopTracking","every","flushIntervalMs","setInterval","unref","maxAttempts","retryable","next","reduce","max","Math","base","min","floor","random","currentOptions","sameOutbox","storage","storageKey","stored","restored","set","trim","raw","getString","parsed","parse","Array","isArray","filter","item","Boolean","cryptoLike","globalThis","crypto","randomUUID","toString"],"sourceRoot":"../../src","sources":["track.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["DEFAULT_FLUSH_MS","DEFAULT_MAX_BATCH","DEFAULT_MAX_QUEUE","DEFAULT_TIMEOUT_MS","DEFAULT_MAX_ATTEMPTS","DEFAULT_STORAGE_KEY","ANALYTICS_INSTALLATION_ID_SUFFIX","UUID_PATTERN","options","queue","analyticsInstallationId","timer","sending","nextAttemptAt","lifecycleSubscription","trackingGeneration","asynchronousStorageAdapters","WeakSet","trackUrl","url","trimmed","replace","includes","configureTracking","opts","disposeTracking","readQueue","identityMode","resolveAnalyticsInstallationId","startTimer","appState","addEventListener","state","flushEvents","track","event","props","time","enqueueEvent","randomEventId","trackIdempotent","eventId","normalizedId","trim","toLowerCase","test","requirePersistentAck","hasConsent","onDropped","storage","supportsDurableSyncWrites","persistQueue","flat","allow","propertyAllowlist","Set","redact","redactProperties","key","value","Object","entries","undefined","has","String","occurredAt","Date","toISOString","existing","find","queued","id","sameLogicalEvent","JSON","stringify","durable","queueBeforeDurableEnqueue","push","attempts","maxQueue","Math","max","dropped","length","bestEffortIndex","findIndex","newestIndex","splice","index","retained","some","persisted","maxBatch","now","requestGeneration","ctx","getContext","anonymousInstallation","deviceId","requestDeviceId","batch","slice","controller","AbortController","timeout","setTimeout","abort","timeoutMs","response","fetch","method","headers","body","userId","platform","appVersion","events","map","e","signal","ok","markBatchForRetry","status","onError","Error","json","accepted","ignored","onIgnored","acknowledgeBatch","retryDelayFor","error","clearTimeout","pendingEventCount","getTrackingInfo","queueDepth","clearInterval","remove","stopTracking","every","flushIntervalMs","setInterval","unref","maxAttempts","batchIds","flatMap","next","min","acknowledgedIds","remaining","filter","includesDurable","writeStorageValue","storageKey","reduce","base","floor","random","analyticsInstallationIdStorageKey","stored","getString","generated","randomAnalyticsInstallationId","raw","parsed","parse","Array","isArray","restored","item","Boolean","Number","isSafeInteger","selected","forEach","add","size","_event","allowKnownAsyncBestEffort","declaredOrObservedAsync","result","set","isThenable","Promise","resolve","catch","reportStorageError","then","cryptoLike","globalThis","crypto","randomUUID","toString","bytes","Uint8Array","getRandomValues","i","hex","from","padStart","join"],"sourceRoot":"../../src","sources":["track.ts"],"mappings":"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","ignoreList":[]}