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.
- package/README.md +50 -2
- package/lib/commonjs/config.js.map +1 -1
- package/lib/commonjs/init.js +23 -8
- package/lib/commonjs/init.js.map +1 -1
- package/lib/commonjs/links.js +561 -61
- package/lib/commonjs/links.js.map +1 -1
- package/lib/commonjs/track.js +241 -76
- package/lib/commonjs/track.js.map +1 -1
- package/lib/module/config.js.map +1 -1
- package/lib/module/init.js +24 -9
- package/lib/module/init.js.map +1 -1
- package/lib/module/links.js +561 -61
- package/lib/module/links.js.map +1 -1
- package/lib/module/track.js +240 -76
- package/lib/module/track.js.map +1 -1
- package/lib/typescript/config.d.ts +6 -0
- package/lib/typescript/config.d.ts.map +1 -1
- package/lib/typescript/init.d.ts +15 -6
- package/lib/typescript/init.d.ts.map +1 -1
- package/lib/typescript/links.d.ts +49 -0
- package/lib/typescript/links.d.ts.map +1 -1
- package/lib/typescript/track.d.ts +29 -7
- package/lib/typescript/track.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/config.ts +6 -0
- package/src/init.ts +33 -7
- package/src/links.ts +810 -40
- package/src/track.ts +348 -83
package/lib/module/track.js
CHANGED
|
@@ -26,13 +26,17 @@ const DEFAULT_MAX_QUEUE = 500;
|
|
|
26
26
|
const DEFAULT_TIMEOUT_MS = 10_000;
|
|
27
27
|
const DEFAULT_MAX_ATTEMPTS = 10;
|
|
28
28
|
const DEFAULT_STORAGE_KEY = 'pulse.events.v1';
|
|
29
|
+
const ANALYTICS_INSTALLATION_ID_SUFFIX = '.analytics-installation-id';
|
|
30
|
+
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;
|
|
29
31
|
let options = null;
|
|
30
32
|
let queue = [];
|
|
33
|
+
let analyticsInstallationId = '';
|
|
31
34
|
let timer = null;
|
|
32
35
|
let sending = false;
|
|
33
36
|
let nextAttemptAt = 0;
|
|
34
37
|
let lifecycleSubscription = null;
|
|
35
38
|
let trackingGeneration = 0;
|
|
39
|
+
const asynchronousStorageAdapters = new WeakSet();
|
|
36
40
|
|
|
37
41
|
/** Turns a config url into the track url; leaves an explicit track url alone. */
|
|
38
42
|
function trackUrl(url) {
|
|
@@ -43,6 +47,7 @@ export function configureTracking(opts) {
|
|
|
43
47
|
disposeTracking();
|
|
44
48
|
options = opts;
|
|
45
49
|
queue = readQueue(opts);
|
|
50
|
+
analyticsInstallationId = opts.identityMode === 'anonymous_installation' ? resolveAnalyticsInstallationId(opts) : '';
|
|
46
51
|
nextAttemptAt = 0;
|
|
47
52
|
startTimer();
|
|
48
53
|
lifecycleSubscription = opts.appState?.addEventListener('change', state => {
|
|
@@ -56,10 +61,37 @@ export function configureTracking(opts) {
|
|
|
56
61
|
* caller has to wrap.
|
|
57
62
|
*/
|
|
58
63
|
export function track(event, props, time) {
|
|
59
|
-
|
|
60
|
-
|
|
64
|
+
void enqueueEvent(randomEventId(), event, props, time, false);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Durably enqueue one logical event with a caller-owned UUID. Replaying the same id is safe:
|
|
69
|
+
* Pulse's server/read model deduplicates it, while the local outbox avoids duplicate rows that
|
|
70
|
+
* are still pending. `true` means the event is present in persistent storage, not delivered yet;
|
|
71
|
+
* once acknowledged, Track keeps it in that outbox through retries and process restarts until a
|
|
72
|
+
* successful server response removes it transactionally.
|
|
73
|
+
*/
|
|
74
|
+
export function trackIdempotent(eventId, event, props, time) {
|
|
75
|
+
const normalizedId = eventId.trim().toLowerCase();
|
|
76
|
+
if (!UUID_PATTERN.test(normalizedId)) return false;
|
|
77
|
+
return enqueueEvent(normalizedId, event, props, time, true);
|
|
78
|
+
}
|
|
79
|
+
function enqueueEvent(eventId, event, props, time, requirePersistentAck) {
|
|
80
|
+
if (!options || !event) return false;
|
|
81
|
+
try {
|
|
82
|
+
if (options.hasConsent?.() === false) {
|
|
83
|
+
options.onDropped?.(1, 'no-consent');
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
86
|
+
} catch {
|
|
61
87
|
options.onDropped?.(1, 'no-consent');
|
|
62
|
-
return;
|
|
88
|
+
return false;
|
|
89
|
+
}
|
|
90
|
+
if (requirePersistentAck) {
|
|
91
|
+
// Probe with the unchanged queue before accepting caller-owned data. This discovers custom
|
|
92
|
+
// adapters that secretly return a Promise without ever placing the terminal event in Track;
|
|
93
|
+
// the upstream Links outbox remains the single source of truth.
|
|
94
|
+
if (!options.storage || !supportsDurableSyncWrites(options.storage) || !persistQueue()) return false;
|
|
63
95
|
}
|
|
64
96
|
const flat = {};
|
|
65
97
|
const allow = options.propertyAllowlist ? new Set(options.propertyAllowlist) : null;
|
|
@@ -69,43 +101,90 @@ export function track(event, props, time) {
|
|
|
69
101
|
if (allow && !allow.has(key)) continue;
|
|
70
102
|
flat[key] = redact.has(key) ? '[REDACTED]' : typeof value === 'string' ? value : String(value);
|
|
71
103
|
}
|
|
104
|
+
let occurredAt;
|
|
105
|
+
try {
|
|
106
|
+
occurredAt = (time ?? new Date()).toISOString();
|
|
107
|
+
} catch {
|
|
108
|
+
return false;
|
|
109
|
+
}
|
|
110
|
+
const existing = queue.find(queued => queued.id === eventId);
|
|
111
|
+
if (existing) {
|
|
112
|
+
const sameLogicalEvent = existing.event === event && existing.time === occurredAt && JSON.stringify(existing.props) === JSON.stringify(flat);
|
|
113
|
+
if (!sameLogicalEvent) return false;
|
|
114
|
+
if (requirePersistentAck && existing.durable !== true) {
|
|
115
|
+
existing.durable = true;
|
|
116
|
+
if (!persistQueue()) {
|
|
117
|
+
delete existing.durable;
|
|
118
|
+
persistQueue();
|
|
119
|
+
return false;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
return true;
|
|
123
|
+
}
|
|
124
|
+
const queueBeforeDurableEnqueue = requirePersistentAck ? [...queue] : null;
|
|
72
125
|
queue.push({
|
|
73
|
-
id:
|
|
126
|
+
id: eventId,
|
|
74
127
|
event,
|
|
75
|
-
time:
|
|
128
|
+
time: occurredAt,
|
|
76
129
|
props: flat,
|
|
77
|
-
attempts: 0
|
|
130
|
+
attempts: 0,
|
|
131
|
+
...(requirePersistentAck ? {
|
|
132
|
+
durable: true
|
|
133
|
+
} : {})
|
|
78
134
|
});
|
|
79
|
-
const maxQueue = options.maxQueue ?? DEFAULT_MAX_QUEUE;
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
135
|
+
const maxQueue = Math.max(0, options.maxQueue ?? DEFAULT_MAX_QUEUE);
|
|
136
|
+
let dropped = 0;
|
|
137
|
+
while (queue.length > maxQueue) {
|
|
138
|
+
// Never evict a previously acknowledged durable event to make room. When every queued row
|
|
139
|
+
// is durable, the newest enqueue is refused and its upstream outbox remains authoritative.
|
|
140
|
+
const bestEffortIndex = queue.findIndex(queued => queued.durable !== true);
|
|
141
|
+
if (bestEffortIndex < 0) {
|
|
142
|
+
// The queue can already exceed a newly lowered max after restart. Refuse only the newest
|
|
143
|
+
// durable enqueue; previously acknowledged records must still reach the server.
|
|
144
|
+
const newestIndex = queue.findIndex(queued => queued.id === eventId);
|
|
145
|
+
if (newestIndex >= 0) {
|
|
146
|
+
queue.splice(newestIndex, 1);
|
|
147
|
+
dropped += 1;
|
|
148
|
+
}
|
|
149
|
+
break;
|
|
150
|
+
}
|
|
151
|
+
const index = bestEffortIndex;
|
|
152
|
+
queue.splice(index, 1);
|
|
153
|
+
dropped += 1;
|
|
84
154
|
}
|
|
85
|
-
|
|
155
|
+
const retained = queue.some(queued => queued.id === eventId);
|
|
156
|
+
const persisted = persistQueue();
|
|
157
|
+
if (requirePersistentAck && (!retained || !persisted)) {
|
|
158
|
+
queue = queueBeforeDurableEnqueue ?? queue;
|
|
159
|
+
// If an adapter revealed itself as asynchronous only on the second write, schedule a
|
|
160
|
+
// compensating best-effort mirror without the caller-owned event.
|
|
161
|
+
persistQueue();
|
|
162
|
+
return false;
|
|
163
|
+
}
|
|
164
|
+
if (dropped > 0) options.onDropped?.(dropped, 'queue-full');
|
|
86
165
|
if (queue.length >= (options.maxBatch ?? DEFAULT_MAX_BATCH)) void flushEvents();
|
|
166
|
+
return retained && (!requirePersistentAck || persisted);
|
|
87
167
|
}
|
|
88
168
|
|
|
89
169
|
/**
|
|
90
170
|
* Send what is queued. Returns how many events the server accepted.
|
|
91
171
|
*
|
|
92
|
-
*
|
|
93
|
-
*
|
|
94
|
-
* after
|
|
172
|
+
* The batch remains in the durable queue while HTTP is in flight and is removed only after a
|
|
173
|
+
* successful response is also persisted locally. This intentionally permits duplicate replay
|
|
174
|
+
* after a crash, while a caller-owned event id lets the server/read model deduplicate it.
|
|
95
175
|
*/
|
|
96
176
|
export async function flushEvents() {
|
|
97
177
|
if (!options || sending || queue.length === 0 || Date.now() < nextAttemptAt) return 0;
|
|
98
178
|
const opts = options;
|
|
99
179
|
const requestGeneration = trackingGeneration;
|
|
100
180
|
const ctx = opts.getContext?.() ?? {};
|
|
181
|
+
const anonymousInstallation = opts.identityMode === 'anonymous_installation';
|
|
101
182
|
|
|
102
|
-
//
|
|
103
|
-
//
|
|
104
|
-
|
|
105
|
-
|
|
183
|
+
// The legacy/default mode intentionally preserves the original experiment-event
|
|
184
|
+
// contract. Anonymous campaign events opt into a separate identity explicitly.
|
|
185
|
+
if (!anonymousInstallation && !ctx.deviceId) return 0;
|
|
186
|
+
const requestDeviceId = anonymousInstallation ? analyticsInstallationId : ctx.deviceId;
|
|
106
187
|
const batch = queue.slice(0, opts.maxBatch ?? DEFAULT_MAX_BATCH);
|
|
107
|
-
queue = queue.slice(batch.length);
|
|
108
|
-
persistQueue();
|
|
109
188
|
sending = true;
|
|
110
189
|
const controller = typeof AbortController !== 'undefined' ? new AbortController() : null;
|
|
111
190
|
const timeout = controller ? setTimeout(() => controller.abort(), opts.timeoutMs ?? DEFAULT_TIMEOUT_MS) : null;
|
|
@@ -116,8 +195,12 @@ export async function flushEvents() {
|
|
|
116
195
|
'Content-Type': 'application/json'
|
|
117
196
|
},
|
|
118
197
|
body: JSON.stringify({
|
|
119
|
-
deviceId:
|
|
120
|
-
|
|
198
|
+
deviceId: requestDeviceId,
|
|
199
|
+
// Anonymous mode deliberately omits the property rather than serializing an
|
|
200
|
+
// empty identifier. Context mode remains backwards compatible.
|
|
201
|
+
...(anonymousInstallation ? {} : {
|
|
202
|
+
userId: ctx.userId
|
|
203
|
+
}),
|
|
121
204
|
platform: ctx.platform,
|
|
122
205
|
appVersion: ctx.appVersion,
|
|
123
206
|
events: batch.map(e => ({
|
|
@@ -130,11 +213,9 @@ export async function flushEvents() {
|
|
|
130
213
|
signal: controller?.signal
|
|
131
214
|
});
|
|
132
215
|
if (!response.ok) {
|
|
133
|
-
// Rate limited or briefly down:
|
|
216
|
+
// Rate limited or briefly down: the batch never left the durable queue.
|
|
134
217
|
if (requestGeneration === trackingGeneration && options === opts) {
|
|
135
|
-
|
|
136
|
-
} else {
|
|
137
|
-
restoreStaleBatch(opts, batch, response.status);
|
|
218
|
+
markBatchForRetry(batch, response.status);
|
|
138
219
|
}
|
|
139
220
|
if (response.status !== 429) opts.onError?.(new Error(`Pulse track failed: ${response.status}`));
|
|
140
221
|
return 0;
|
|
@@ -143,10 +224,15 @@ export async function flushEvents() {
|
|
|
143
224
|
if (requestGeneration !== trackingGeneration || options !== opts) return body.accepted ?? 0;
|
|
144
225
|
if (body.ignored && body.ignored.length > 0) opts.onIgnored?.(body.ignored);
|
|
145
226
|
nextAttemptAt = 0;
|
|
146
|
-
|
|
227
|
+
if (!acknowledgeBatch(opts, batch)) {
|
|
228
|
+
// The server may already have accepted the ids. Keep and replay them rather than creating
|
|
229
|
+
// the loss window between remote ACK and local deletion.
|
|
230
|
+
nextAttemptAt = Date.now() + retryDelayFor(batch);
|
|
231
|
+
opts.onError?.(new Error('Pulse track acknowledgement was not persisted'));
|
|
232
|
+
}
|
|
147
233
|
return body.accepted ?? 0;
|
|
148
234
|
} catch (error) {
|
|
149
|
-
if (requestGeneration === trackingGeneration && options === opts)
|
|
235
|
+
if (requestGeneration === trackingGeneration && options === opts) markBatchForRetry(batch);
|
|
150
236
|
opts.onError?.(error);
|
|
151
237
|
return 0;
|
|
152
238
|
} finally {
|
|
@@ -182,6 +268,7 @@ export function stopTracking() {
|
|
|
182
268
|
disposeTracking();
|
|
183
269
|
options = null;
|
|
184
270
|
queue = [];
|
|
271
|
+
analyticsInstallationId = '';
|
|
185
272
|
sending = false;
|
|
186
273
|
nextAttemptAt = 0;
|
|
187
274
|
}
|
|
@@ -193,64 +280,94 @@ function startTimer() {
|
|
|
193
280
|
// and a CLI importing this should still be able to exit.
|
|
194
281
|
timer.unref?.();
|
|
195
282
|
}
|
|
196
|
-
function
|
|
283
|
+
function markBatchForRetry(batch, status) {
|
|
197
284
|
if (!options) return;
|
|
198
285
|
const maxAttempts = options.maxAttempts ?? DEFAULT_MAX_ATTEMPTS;
|
|
199
|
-
const
|
|
286
|
+
const batchIds = new Set(batch.map(event => event.id));
|
|
200
287
|
let dropped = 0;
|
|
201
|
-
|
|
288
|
+
queue = queue.flatMap(event => {
|
|
289
|
+
if (!batchIds.has(event.id)) return [event];
|
|
202
290
|
const next = {
|
|
203
291
|
...event,
|
|
204
|
-
attempts: event.attempts + 1
|
|
292
|
+
attempts: Math.min(event.attempts + 1, 100_000)
|
|
205
293
|
};
|
|
206
|
-
if (next.attempts >= maxAttempts && status !== 429)
|
|
207
|
-
|
|
208
|
-
|
|
294
|
+
if (next.durable !== true && next.attempts >= maxAttempts && status !== 429) {
|
|
295
|
+
dropped += 1;
|
|
296
|
+
return [];
|
|
297
|
+
}
|
|
298
|
+
return [next];
|
|
299
|
+
});
|
|
209
300
|
if (dropped > 0) options.onDropped?.(dropped, 'max-attempts');
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
301
|
+
nextAttemptAt = Date.now() + retryDelayFor(batch.map(event => ({
|
|
302
|
+
...event,
|
|
303
|
+
attempts: Math.min(event.attempts + 1, 100_000)
|
|
304
|
+
})));
|
|
213
305
|
persistQueue();
|
|
214
306
|
}
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
*/
|
|
222
|
-
function restoreStaleBatch(opts, batch, status) {
|
|
223
|
-
const maxAttempts = opts.maxAttempts ?? DEFAULT_MAX_ATTEMPTS;
|
|
224
|
-
const retryable = [];
|
|
225
|
-
let dropped = 0;
|
|
226
|
-
for (const event of batch) {
|
|
227
|
-
const next = {
|
|
228
|
-
...event,
|
|
229
|
-
attempts: event.attempts + 1
|
|
230
|
-
};
|
|
231
|
-
if (next.attempts >= maxAttempts && status !== 429) dropped++;else retryable.push(next);
|
|
307
|
+
function acknowledgeBatch(opts, batch) {
|
|
308
|
+
const acknowledgedIds = new Set(batch.map(event => event.id));
|
|
309
|
+
const remaining = queue.filter(event => !acknowledgedIds.has(event.id));
|
|
310
|
+
if (!opts.storage) {
|
|
311
|
+
queue = remaining;
|
|
312
|
+
return true;
|
|
232
313
|
}
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
if (
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
314
|
+
const includesDurable = batch.some(event => event.durable === true);
|
|
315
|
+
// Never schedule a destructive outbox write through an adapter already known to be async.
|
|
316
|
+
// The server may have accepted this batch, but retaining it for a deduplicated replay is safer
|
|
317
|
+
// than losing it during the gap before an asynchronous deletion reaches disk.
|
|
318
|
+
if (!supportsDurableSyncWrites(opts.storage)) {
|
|
319
|
+
if (includesDurable) return false;
|
|
320
|
+
queue = remaining;
|
|
321
|
+
// Best-effort events keep the historical AsyncStorage behavior: the in-memory batch drains
|
|
322
|
+
// after 2xx and the mirror may replay after a crash, but it cannot block or resend forever.
|
|
323
|
+
writeStorageValue(opts.storage, storageKey(opts), JSON.stringify(remaining), opts.onError, true);
|
|
324
|
+
return true;
|
|
241
325
|
}
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
326
|
+
const persisted = writeStorageValue(opts.storage, storageKey(opts), JSON.stringify(remaining), opts.onError, false);
|
|
327
|
+
if (!persisted) {
|
|
328
|
+
if (!includesDurable && !supportsDurableSyncWrites(opts.storage)) {
|
|
329
|
+
queue = remaining;
|
|
330
|
+
writeStorageValue(opts.storage, storageKey(opts), JSON.stringify(remaining), opts.onError, true);
|
|
331
|
+
return true;
|
|
332
|
+
}
|
|
333
|
+
if (!supportsDurableSyncWrites(opts.storage)) {
|
|
334
|
+
// A conditional thenable may already have scheduled deletion. Immediately schedule the
|
|
335
|
+
// unchanged durable outbox behind it so a normal ordered async adapter restores the record.
|
|
336
|
+
writeStorageValue(opts.storage, storageKey(opts), JSON.stringify(queue), opts.onError, true);
|
|
337
|
+
}
|
|
338
|
+
return false;
|
|
249
339
|
}
|
|
340
|
+
queue = remaining;
|
|
341
|
+
return true;
|
|
342
|
+
}
|
|
343
|
+
function retryDelayFor(batch) {
|
|
344
|
+
const attempts = batch.reduce((max, event) => Math.max(max, event.attempts), 1);
|
|
345
|
+
const base = Math.min(60_000, 1_000 * 2 ** Math.min(Math.max(attempts - 1, 0), 6));
|
|
346
|
+
return base + Math.floor(Math.random() * Math.max(1, base / 4));
|
|
250
347
|
}
|
|
251
348
|
function storageKey(opts) {
|
|
252
349
|
return opts.storageKey?.trim() || DEFAULT_STORAGE_KEY;
|
|
253
350
|
}
|
|
351
|
+
function analyticsInstallationIdStorageKey(opts) {
|
|
352
|
+
return `${storageKey(opts)}${ANALYTICS_INSTALLATION_ID_SUFFIX}`;
|
|
353
|
+
}
|
|
354
|
+
function resolveAnalyticsInstallationId(opts) {
|
|
355
|
+
if (opts.storage) {
|
|
356
|
+
try {
|
|
357
|
+
const stored = opts.storage.getString(analyticsInstallationIdStorageKey(opts))?.trim();
|
|
358
|
+
if (stored && UUID_PATTERN.test(stored)) return stored.toLowerCase();
|
|
359
|
+
} catch {
|
|
360
|
+
// A telemetry identifier can stay memory-only when storage is unavailable.
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
const generated = randomAnalyticsInstallationId();
|
|
364
|
+
if (opts.storage) {
|
|
365
|
+
// This identifier does not acknowledge delivery, so asynchronous best-effort persistence is
|
|
366
|
+
// acceptable. The helper still observes rejections and marks accidental thenable adapters.
|
|
367
|
+
writeStorageValue(opts.storage, analyticsInstallationIdStorageKey(opts), generated, opts.onError, true);
|
|
368
|
+
}
|
|
369
|
+
return generated;
|
|
370
|
+
}
|
|
254
371
|
function readQueue(opts) {
|
|
255
372
|
if (!opts.storage) return [];
|
|
256
373
|
try {
|
|
@@ -258,22 +375,69 @@ function readQueue(opts) {
|
|
|
258
375
|
if (!raw) return [];
|
|
259
376
|
const parsed = JSON.parse(raw);
|
|
260
377
|
if (!Array.isArray(parsed)) return [];
|
|
261
|
-
|
|
378
|
+
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)));
|
|
379
|
+
const maxQueue = Math.max(0, opts.maxQueue ?? DEFAULT_MAX_QUEUE);
|
|
380
|
+
if (restored.length <= maxQueue) return restored;
|
|
381
|
+
const selected = new Set();
|
|
382
|
+
restored.forEach((event, index) => {
|
|
383
|
+
if (event.durable === true) selected.add(index);
|
|
384
|
+
});
|
|
385
|
+
// A lower max in a later app version may not erase already-ACKed durable rows. Fill any
|
|
386
|
+
// remaining capacity with the newest best-effort events, retaining original send order.
|
|
387
|
+
for (let index = restored.length - 1; index >= 0 && selected.size < maxQueue; index -= 1) {
|
|
388
|
+
if (restored[index]?.durable !== true) selected.add(index);
|
|
389
|
+
}
|
|
390
|
+
return restored.filter((_event, index) => selected.has(index));
|
|
262
391
|
} catch {
|
|
263
392
|
return [];
|
|
264
393
|
}
|
|
265
394
|
}
|
|
266
395
|
function persistQueue() {
|
|
267
|
-
if (!options?.storage) return;
|
|
396
|
+
if (!options?.storage) return false;
|
|
397
|
+
// Best-effort track() still mirrors through AsyncStorage, but the return value stays false so
|
|
398
|
+
// trackIdempotent() cannot claim synchronous durability that the adapter has not provided.
|
|
399
|
+
return writeStorageValue(options.storage, storageKey(options), JSON.stringify(queue), options.onError, true);
|
|
400
|
+
}
|
|
401
|
+
function supportsDurableSyncWrites(storage) {
|
|
402
|
+
return storage.supportsDurableSyncWrites !== false && !asynchronousStorageAdapters.has(storage);
|
|
403
|
+
}
|
|
404
|
+
function writeStorageValue(storage, key, value, onError, allowKnownAsyncBestEffort) {
|
|
405
|
+
const declaredOrObservedAsync = !supportsDurableSyncWrites(storage);
|
|
406
|
+
if (declaredOrObservedAsync && !allowKnownAsyncBestEffort) return false;
|
|
268
407
|
try {
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
408
|
+
const result = storage.set(key, value);
|
|
409
|
+
if (isThenable(result)) {
|
|
410
|
+
asynchronousStorageAdapters.add(storage);
|
|
411
|
+
void Promise.resolve(result).catch(error => reportStorageError(onError, error));
|
|
412
|
+
return false;
|
|
413
|
+
}
|
|
414
|
+
return !declaredOrObservedAsync;
|
|
415
|
+
} catch (error) {
|
|
416
|
+
reportStorageError(onError, error);
|
|
417
|
+
return false;
|
|
272
418
|
}
|
|
273
419
|
}
|
|
420
|
+
function isThenable(value) {
|
|
421
|
+
return typeof value === 'object' && value !== null || typeof value === 'function' ? typeof value.then === 'function' : false;
|
|
422
|
+
}
|
|
423
|
+
function reportStorageError(onError, error) {
|
|
424
|
+
try {
|
|
425
|
+
onError?.(error);
|
|
426
|
+
} catch {/* telemetry diagnostics never become an app failure */}
|
|
427
|
+
}
|
|
274
428
|
function randomEventId() {
|
|
275
429
|
const cryptoLike = globalThis.crypto;
|
|
276
430
|
if (typeof cryptoLike?.randomUUID === 'function') return cryptoLike.randomUUID();
|
|
277
431
|
return `evt-${Date.now()}-${Math.random().toString(36).slice(2, 14)}`;
|
|
278
432
|
}
|
|
433
|
+
function randomAnalyticsInstallationId() {
|
|
434
|
+
const cryptoLike = globalThis.crypto;
|
|
435
|
+
if (typeof cryptoLike?.randomUUID === 'function') return cryptoLike.randomUUID().toLowerCase();
|
|
436
|
+
const bytes = new Uint8Array(16);
|
|
437
|
+
if (typeof cryptoLike?.getRandomValues === 'function') cryptoLike.getRandomValues(bytes);else for (let i = 0; i < bytes.length; i++) bytes[i] = Math.floor(Math.random() * 256);
|
|
438
|
+
bytes[6] = (bytes[6] ?? 0) & 0x0f | 0x40;
|
|
439
|
+
bytes[8] = (bytes[8] ?? 0) & 0x3f | 0x80;
|
|
440
|
+
const hex = Array.from(bytes, value => value.toString(16).padStart(2, '0')).join('');
|
|
441
|
+
return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`;
|
|
442
|
+
}
|
|
279
443
|
//# sourceMappingURL=track.js.map
|
package/lib/module/track.js.map
CHANGED
|
@@ -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":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAuEA,MAAMA,gBAAgB,GAAG,MAAM;AAC/B,MAAMC,iBAAiB,GAAG,GAAG;AAC7B,MAAMC,iBAAiB,GAAG,GAAG;AAC7B,MAAMC,kBAAkB,GAAG,MAAM;AACjC,MAAMC,oBAAoB,GAAG,EAAE;AAC/B,MAAMC,mBAAmB,GAAG,iBAAiB;AAE7C,IAAIC,OAA4B,GAAG,IAAI;AACvC,IAAIC,KAAoB,GAAG,EAAE;AAC7B,IAAIC,KAA4C,GAAG,IAAI;AACvD,IAAIC,OAAO,GAAG,KAAK;AACnB,IAAIC,aAAa,GAAG,CAAC;AACrB,IAAIC,qBAAoD,GAAG,IAAI;AAC/D,IAAIC,kBAAkB,GAAG,CAAC;;AAE1B;AACA,SAASC,QAAQA,CAACC,GAAW,EAAU;EACrC,MAAMC,OAAO,GAAGD,GAAG,CAACE,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;EACvC,OAAOD,OAAO,CAACE,QAAQ,CAAC,gBAAgB,CAAC,GACrCF,OAAO,CAACC,OAAO,CAAC,gBAAgB,EAAE,eAAe,CAAC,GAClDD,OAAO;AACb;AAEA,OAAO,SAASG,iBAAiBA,CAACC,IAAkB,EAAQ;EAC1DC,eAAe,CAAC,CAAC;EACjBd,OAAO,GAAGa,IAAI;EACdZ,KAAK,GAAGc,SAAS,CAACF,IAAI,CAAC;EACvBT,aAAa,GAAG,CAAC;EACjBY,UAAU,CAAC,CAAC;EACZX,qBAAqB,GAAGQ,IAAI,CAACI,QAAQ,EAAEC,gBAAgB,CAAC,QAAQ,EAAGC,KAAK,IAAK;IAC3E,IAAIA,KAAK,KAAK,QAAQ,EAAE,KAAKC,WAAW,CAAC,CAAC;EAC5C,CAAC,CAAC,IAAI,IAAI;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,KAAKA,CAACC,KAAa,EAAEC,KAAkC,EAAEC,IAAW,EAAQ;EAC1F,IAAI,CAACxB,OAAO,IAAI,CAACsB,KAAK,EAAE;EACxB,IAAItB,OAAO,CAACyB,UAAU,GAAG,CAAC,KAAK,KAAK,EAAE;IACpCzB,OAAO,CAAC0B,SAAS,GAAG,CAAC,EAAE,YAAY,CAAC;IACpC;EACF;EAEA,MAAMC,IAA4B,GAAG,CAAC,CAAC;EACvC,MAAMC,KAAK,GAAG5B,OAAO,CAAC6B,iBAAiB,GAAG,IAAIC,GAAG,CAAC9B,OAAO,CAAC6B,iBAAiB,CAAC,GAAG,IAAI;EACnF,MAAME,MAAM,GAAG,IAAID,GAAG,CAAC9B,OAAO,CAACgC,gBAAgB,IAAI,EAAE,CAAC;EACtD,KAAK,MAAM,CAACC,GAAG,EAAEC,KAAK,CAAC,IAAIC,MAAM,CAACC,OAAO,CAACb,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE;IACtD,IAAIW,KAAK,KAAK,IAAI,IAAIA,KAAK,KAAKG,SAAS,EAAE;IAC3C,IAAIT,KAAK,IAAI,CAACA,KAAK,CAACU,GAAG,CAACL,GAAG,CAAC,EAAE;IAC9BN,IAAI,CAACM,GAAG,CAAC,GAAGF,MAAM,CAACO,GAAG,CAACL,GAAG,CAAC,GAAG,YAAY,GAAI,OAAOC,KAAK,KAAK,QAAQ,GAAGA,KAAK,GAAGK,MAAM,CAACL,KAAK,CAAE;EAClG;EAEAjC,KAAK,CAACuC,IAAI,CAAC;IAAEC,EAAE,EAAEC,aAAa,CAAC,CAAC;IAAEpB,KAAK;IAAEE,IAAI,EAAE,CAACA,IAAI,IAAI,IAAImB,IAAI,CAAC,CAAC,EAAEC,WAAW,CAAC,CAAC;IAAErB,KAAK,EAAEI,IAAI;IAAEkB,QAAQ,EAAE;EAAE,CAAC,CAAC;EAE9G,MAAMC,QAAQ,GAAG9C,OAAO,CAAC8C,QAAQ,IAAIlD,iBAAiB;EACtD,IAAIK,KAAK,CAAC8C,MAAM,GAAGD,QAAQ,EAAE;IAC3B,MAAME,OAAO,GAAG/C,KAAK,CAAC8C,MAAM,GAAGD,QAAQ;IACvC7C,KAAK,GAAGA,KAAK,CAACgD,KAAK,CAACD,OAAO,CAAC;IAC5BhD,OAAO,CAAC0B,SAAS,GAAGsB,OAAO,EAAE,YAAY,CAAC;EAC5C;EACAE,YAAY,CAAC,CAAC;EAEd,IAAIjD,KAAK,CAAC8C,MAAM,KAAK/C,OAAO,CAACmD,QAAQ,IAAIxD,iBAAiB,CAAC,EAAE,KAAKyB,WAAW,CAAC,CAAC;AACjF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAeA,WAAWA,CAAA,EAAoB;EACnD,IAAI,CAACpB,OAAO,IAAIG,OAAO,IAAIF,KAAK,CAAC8C,MAAM,KAAK,CAAC,IAAIJ,IAAI,CAACS,GAAG,CAAC,CAAC,GAAGhD,aAAa,EAAE,OAAO,CAAC;EAErF,MAAMS,IAAI,GAAGb,OAAO;EACpB,MAAMqD,iBAAiB,GAAG/C,kBAAkB;EAC5C,MAAMgD,GAAG,GAAGzC,IAAI,CAAC0C,UAAU,GAAG,CAAC,IAAI,CAAC,CAAC;;EAErC;EACA;EACA;EACA,IAAI,CAACD,GAAG,CAACE,QAAQ,EAAE,OAAO,CAAC;EAE3B,MAAMC,KAAK,GAAGxD,KAAK,CAACgD,KAAK,CAAC,CAAC,EAAEpC,IAAI,CAACsC,QAAQ,IAAIxD,iBAAiB,CAAC;EAChEM,KAAK,GAAGA,KAAK,CAACgD,KAAK,CAACQ,KAAK,CAACV,MAAM,CAAC;EACjCG,YAAY,CAAC,CAAC;EACd/C,OAAO,GAAG,IAAI;EAEd,MAAMuD,UAAU,GAAG,OAAOC,eAAe,KAAK,WAAW,GAAG,IAAIA,eAAe,CAAC,CAAC,GAAG,IAAI;EACxF,MAAMC,OAAO,GAAGF,UAAU,GACtBG,UAAU,CAAC,MAAMH,UAAU,CAACI,KAAK,CAAC,CAAC,EAAEjD,IAAI,CAACkD,SAAS,IAAIlE,kBAAkB,CAAC,GAC1E,IAAI;EAER,IAAI;IACF,MAAMmE,QAAQ,GAAG,MAAMC,KAAK,CAAC1D,QAAQ,CAACM,IAAI,CAACL,GAAG,CAAC,EAAE;MAC/C0D,MAAM,EAAE,MAAM;MACdC,OAAO,EAAE;QAAE,cAAc,EAAE;MAAmB,CAAC;MAC/CC,IAAI,EAAEC,IAAI,CAACC,SAAS,CAAC;QACnBd,QAAQ,EAAEF,GAAG,CAACE,QAAQ;QACtBe,MAAM,EAAEjB,GAAG,CAACiB,MAAM;QAClBC,QAAQ,EAAElB,GAAG,CAACkB,QAAQ;QACtBC,UAAU,EAAEnB,GAAG,CAACmB,UAAU;QAC1BC,MAAM,EAAEjB,KAAK,CAACkB,GAAG,CAAEC,CAAC,KAAM;UAAEnC,EAAE,EAAEmC,CAAC,CAACnC,EAAE;UAAEnB,KAAK,EAAEsD,CAAC,CAACtD,KAAK;UAAEE,IAAI,EAAEoD,CAAC,CAACpD,IAAI;UAAED,KAAK,EAAEqD,CAAC,CAACrD;QAAM,CAAC,CAAC;MACvF,CAAC,CAAC;MACFsD,MAAM,EAAEnB,UAAU,EAAEmB;IACtB,CAAC,CAAC;IAEF,IAAI,CAACb,QAAQ,CAACc,EAAE,EAAE;MAChB;MACA,IAAIzB,iBAAiB,KAAK/C,kBAAkB,IAAIN,OAAO,KAAKa,IAAI,EAAE;QAChEkE,kBAAkB,CAACtB,KAAK,EAAEO,QAAQ,CAACgB,MAAM,CAAC;MAC5C,CAAC,MAAM;QACLC,iBAAiB,CAACpE,IAAI,EAAE4C,KAAK,EAAEO,QAAQ,CAACgB,MAAM,CAAC;MACjD;MACA,IAAIhB,QAAQ,CAACgB,MAAM,KAAK,GAAG,EAAEnE,IAAI,CAACqE,OAAO,GAAG,IAAIC,KAAK,CAAC,uBAAuBnB,QAAQ,CAACgB,MAAM,EAAE,CAAC,CAAC;MAChG,OAAO,CAAC;IACV;IAEA,MAAMZ,IAAI,GAAI,MAAMJ,QAAQ,CAACoB,IAAI,CAAC,CAA+C;IACjF,IAAI/B,iBAAiB,KAAK/C,kBAAkB,IAAIN,OAAO,KAAKa,IAAI,EAAE,OAAOuD,IAAI,CAACiB,QAAQ,IAAI,CAAC;IAC3F,IAAIjB,IAAI,CAACkB,OAAO,IAAIlB,IAAI,CAACkB,OAAO,CAACvC,MAAM,GAAG,CAAC,EAAElC,IAAI,CAAC0E,SAAS,GAAGnB,IAAI,CAACkB,OAAO,CAAC;IAC3ElF,aAAa,GAAG,CAAC;IACjB8C,YAAY,CAAC,CAAC;IACd,OAAOkB,IAAI,CAACiB,QAAQ,IAAI,CAAC;EAC3B,CAAC,CAAC,OAAOG,KAAK,EAAE;IACd,IAAInC,iBAAiB,KAAK/C,kBAAkB,IAAIN,OAAO,KAAKa,IAAI,EAAEkE,kBAAkB,CAACtB,KAAK,CAAC,CAAC,KACvFwB,iBAAiB,CAACpE,IAAI,EAAE4C,KAAK,CAAC;IACnC5C,IAAI,CAACqE,OAAO,GAAGM,KAAK,CAAC;IACrB,OAAO,CAAC;EACV,CAAC,SAAS;IACR,IAAI5B,OAAO,EAAE6B,YAAY,CAAC7B,OAAO,CAAC;IAClC,IAAIP,iBAAiB,KAAK/C,kBAAkB,EAAEH,OAAO,GAAG,KAAK;EAC/D;AACF;;AAEA;AACA,OAAO,SAASuF,iBAAiBA,CAAA,EAAW;EAC1C,OAAOzF,KAAK,CAAC8C,MAAM;AACrB;AAEA,OAAO,SAAS4C,eAAeA,CAAA,EAI7B;EACA,OAAO;IAAEC,UAAU,EAAE3F,KAAK,CAAC8C,MAAM;IAAE5C,OAAO;IAAEC;EAAc,CAAC;AAC7D;;AAEA;AACA,OAAO,SAASU,eAAeA,CAAA,EAAS;EACtCR,kBAAkB,IAAI,CAAC;EACvB,IAAIJ,KAAK,EAAE2F,aAAa,CAAC3F,KAAK,CAAC;EAC/BA,KAAK,GAAG,IAAI;EACZG,qBAAqB,EAAEyF,MAAM,CAAC,CAAC;EAC/BzF,qBAAqB,GAAG,IAAI;EAC5B6C,YAAY,CAAC,CAAC;EACdlD,OAAO,GAAG,IAAI;EACdG,OAAO,GAAG,KAAK;AACjB;AAEA,OAAO,SAAS4F,YAAYA,CAAA,EAAS;EACnCjF,eAAe,CAAC,CAAC;EACjBd,OAAO,GAAG,IAAI;EACdC,KAAK,GAAG,EAAE;EACVE,OAAO,GAAG,KAAK;EACfC,aAAa,GAAG,CAAC;AACnB;AAEA,SAASY,UAAUA,CAAA,EAAS;EAC1B,IAAId,KAAK,EAAE2F,aAAa,CAAC3F,KAAK,CAAC;EAC/B,MAAM8F,KAAK,GAAGhG,OAAO,EAAEiG,eAAe,IAAIvG,gBAAgB;EAC1DQ,KAAK,GAAGgG,WAAW,CAAC,MAAM,KAAK9E,WAAW,CAAC,CAAC,EAAE4E,KAAK,CAAC;EACpD;EACA;EACC9F,KAAK,CAAuCiG,KAAK,GAAG,CAAC;AACxD;AAEA,SAASpB,kBAAkBA,CAACtB,KAAoB,EAAEuB,MAAe,EAAQ;EACvE,IAAI,CAAChF,OAAO,EAAE;EACd,MAAMoG,WAAW,GAAGpG,OAAO,CAACoG,WAAW,IAAItG,oBAAoB;EAC/D,MAAMuG,SAAwB,GAAG,EAAE;EACnC,IAAIrD,OAAO,GAAG,CAAC;EACf,KAAK,MAAM1B,KAAK,IAAImC,KAAK,EAAE;IACzB,MAAM6C,IAAI,GAAG;MAAE,GAAGhF,KAAK;MAAEuB,QAAQ,EAAEvB,KAAK,CAACuB,QAAQ,GAAG;IAAE,CAAC;IACvD,IAAIyD,IAAI,CAACzD,QAAQ,IAAIuD,WAAW,IAAIpB,MAAM,KAAK,GAAG,EAAEhC,OAAO,EAAE,CAAC,KACzDqD,SAAS,CAAC7D,IAAI,CAAC8D,IAAI,CAAC;EAC3B;EACArG,KAAK,GAAG,CAAC,GAAGoG,SAAS,EAAE,GAAGpG,KAAK,CAAC;EAChC,IAAI+C,OAAO,GAAG,CAAC,EAAEhD,OAAO,CAAC0B,SAAS,GAAGsB,OAAO,EAAE,cAAc,CAAC;EAC7D,MAAMH,QAAQ,GAAGwD,SAAS,CAACE,MAAM,CAAC,CAACC,GAAG,EAAElF,KAAK,KAAKmF,IAAI,CAACD,GAAG,CAACA,GAAG,EAAElF,KAAK,CAACuB,QAAQ,CAAC,EAAE,CAAC,CAAC;EACnF,MAAM6D,IAAI,GAAGD,IAAI,CAACE,GAAG,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC,IAAIF,IAAI,CAACE,GAAG,CAAC9D,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;EACrEzC,aAAa,GAAGuC,IAAI,CAACS,GAAG,CAAC,CAAC,GAAGsD,IAAI,GAAGD,IAAI,CAACG,KAAK,CAACH,IAAI,CAACI,MAAM,CAAC,CAAC,GAAGJ,IAAI,CAACD,GAAG,CAAC,CAAC,EAAEE,IAAI,GAAG,CAAC,CAAC,CAAC;EACrFxD,YAAY,CAAC,CAAC;AAChB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS+B,iBAAiBA,CAACpE,IAAkB,EAAE4C,KAAoB,EAAEuB,MAAe,EAAQ;EAC1F,MAAMoB,WAAW,GAAGvF,IAAI,CAACuF,WAAW,IAAItG,oBAAoB;EAC5D,MAAMuG,SAAwB,GAAG,EAAE;EACnC,IAAIrD,OAAO,GAAG,CAAC;EACf,KAAK,MAAM1B,KAAK,IAAImC,KAAK,EAAE;IACzB,MAAM6C,IAAI,GAAG;MAAE,GAAGhF,KAAK;MAAEuB,QAAQ,EAAEvB,KAAK,CAACuB,QAAQ,GAAG;IAAE,CAAC;IACvD,IAAIyD,IAAI,CAACzD,QAAQ,IAAIuD,WAAW,IAAIpB,MAAM,KAAK,GAAG,EAAEhC,OAAO,EAAE,CAAC,KACzDqD,SAAS,CAAC7D,IAAI,CAAC8D,IAAI,CAAC;EAC3B;EACA,IAAItD,OAAO,GAAG,CAAC,EAAEnC,IAAI,CAACa,SAAS,GAAGsB,OAAO,EAAE,cAAc,CAAC;EAC1D,IAAIqD,SAAS,CAACtD,MAAM,KAAK,CAAC,EAAE;EAE5B,MAAM+D,cAAc,GAAG9G,OAAO;EAC9B,MAAM+G,UAAU,GAAGD,cAAc,EAAEE,OAAO,KAAKnG,IAAI,CAACmG,OAAO,IACzDF,cAAc,KAAK,IAAI,IAAIG,UAAU,CAACH,cAAc,CAAC,KAAKG,UAAU,CAACpG,IAAI,CAAC;EAC5E,IAAIkG,UAAU,EAAE;IACd9G,KAAK,GAAG,CAAC,GAAGoG,SAAS,EAAE,GAAGpG,KAAK,CAAC,CAACgD,KAAK,CAAC,EAAEjD,OAAO,EAAE8C,QAAQ,IAAIlD,iBAAiB,CAAC,CAAC;IACjFsD,YAAY,CAAC,CAAC;IACd;EACF;EAEA,IAAI,CAACrC,IAAI,CAACmG,OAAO,EAAE;EACnB,IAAI;IACF,MAAME,MAAM,GAAGnG,SAAS,CAACF,IAAI,CAAC;IAC9B,MAAMsG,QAAQ,GAAG,CAAC,GAAGd,SAAS,EAAE,GAAGa,MAAM,CAAC,CAACjE,KAAK,CAAC,EAAEpC,IAAI,CAACiC,QAAQ,IAAIlD,iBAAiB,CAAC,CAAC;IACvFiB,IAAI,CAACmG,OAAO,CAACI,GAAG,CAACH,UAAU,CAACpG,IAAI,CAAC,EAAEwD,IAAI,CAACC,SAAS,CAAC6C,QAAQ,CAAC,CAAC;EAC9D,CAAC,CAAC,MAAM;IACN;EAAA;AAEJ;AAEA,SAASF,UAAUA,CAACpG,IAAkB,EAAU;EAC9C,OAAOA,IAAI,CAACoG,UAAU,EAAEI,IAAI,CAAC,CAAC,IAAItH,mBAAmB;AACvD;AAEA,SAASgB,SAASA,CAACF,IAAkB,EAAiB;EACpD,IAAI,CAACA,IAAI,CAACmG,OAAO,EAAE,OAAO,EAAE;EAC5B,IAAI;IACF,MAAMM,GAAG,GAAGzG,IAAI,CAACmG,OAAO,CAACO,SAAS,CAACN,UAAU,CAACpG,IAAI,CAAC,CAAC;IACpD,IAAI,CAACyG,GAAG,EAAE,OAAO,EAAE;IACnB,MAAME,MAAM,GAAGnD,IAAI,CAACoD,KAAK,CAACH,GAAG,CAAY;IACzC,IAAI,CAACI,KAAK,CAACC,OAAO,CAACH,MAAM,CAAC,EAAE,OAAO,EAAE;IACrC,OAAOA,MAAM,CAACI,MAAM,CAAEC,IAAI,IAA0BC,OAAO,CACzDD,IAAI,IAAI,OAAOA,IAAI,KAAK,QAAQ,IAAI,OAAOA,IAAI,CAACpF,EAAE,KAAK,QAAQ,IAC/D,OAAOoF,IAAI,CAACvG,KAAK,KAAK,QAAQ,IAAI,OAAOuG,IAAI,CAACrG,IAAI,KAAK,QAAQ,IAC/D,OAAOqG,IAAI,CAACtG,KAAK,KAAK,QAAQ,IAAI,OAAOsG,IAAI,CAAChF,QAAQ,KAAK,QAC7D,CAAC,CAAC,CAACI,KAAK,CAAC,EAAEpC,IAAI,CAACiC,QAAQ,IAAIlD,iBAAiB,CAAC,CAAC;EACjD,CAAC,CAAC,MAAM;IACN,OAAO,EAAE;EACX;AACF;AAEA,SAASsD,YAAYA,CAAA,EAAS;EAC5B,IAAI,CAAClD,OAAO,EAAEgH,OAAO,EAAE;EACvB,IAAI;IACFhH,OAAO,CAACgH,OAAO,CAACI,GAAG,CAACH,UAAU,CAACjH,OAAO,CAAC,EAAEqE,IAAI,CAACC,SAAS,CAACrE,KAAK,CAAC,CAAC;EACjE,CAAC,CAAC,MAAM;IACN;EAAA;AAEJ;AAEA,SAASyC,aAAaA,CAAA,EAAW;EAC/B,MAAMqF,UAAU,GAAGC,UAAU,CAACC,MAAmD;EACjF,IAAI,OAAOF,UAAU,EAAEG,UAAU,KAAK,UAAU,EAAE,OAAOH,UAAU,CAACG,UAAU,CAAC,CAAC;EAChF,OAAO,OAAOvF,IAAI,CAACS,GAAG,CAAC,CAAC,IAAIqD,IAAI,CAACI,MAAM,CAAC,CAAC,CAACsB,QAAQ,CAAC,EAAE,CAAC,CAAClF,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;AACvE","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":[]}
|
|
@@ -43,6 +43,12 @@ export type ConfigSignatureStatus = 'not-configured' | 'verified' | 'cached-veri
|
|
|
43
43
|
export interface ConfigStorage {
|
|
44
44
|
getString(key: string): string | null | undefined;
|
|
45
45
|
set(key: string, value: string): void;
|
|
46
|
+
/**
|
|
47
|
+
* False when `set` only mirrors a write and schedules asynchronous persistence. Durable
|
|
48
|
+
* acknowledgement APIs must fail closed because process death may still lose that write.
|
|
49
|
+
* Omitted means the historical synchronous-storage contract.
|
|
50
|
+
*/
|
|
51
|
+
readonly supportsDurableSyncWrites?: boolean;
|
|
46
52
|
}
|
|
47
53
|
/**
|
|
48
54
|
* Everything the server may ever want to target on. Sent on every request even when
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC;AAEpE;;;;;;;GAOG;AACH,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,6FAA6F;IAC7F,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,qBAAqB,GAAG,gBAAgB,GAAG,UAAU,GAAG,iBAAiB,GAAG,UAAU,GAAG,SAAS,CAAC;AAE/G,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAClD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"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"}
|
package/lib/typescript/init.d.ts
CHANGED
|
@@ -14,9 +14,10 @@
|
|
|
14
14
|
* - the urls, from the base url and the slug, which is what stops the two halves
|
|
15
15
|
* from ever addressing different apps;
|
|
16
16
|
* - platform and OS version, from React Native;
|
|
17
|
-
* - the
|
|
18
|
-
* identifier of its own
|
|
19
|
-
*
|
|
17
|
+
* - the config/experiment id, minted and persisted on first launch — an app that has
|
|
18
|
+
* a stable identifier of its own may pass it. Event tracking keeps the original
|
|
19
|
+
* context identity by default; privacy-sensitive campaign events can explicitly
|
|
20
|
+
* opt into a separate random app-scoped analytics installation UUID.
|
|
20
21
|
*
|
|
21
22
|
* Deliberately not automatic: the app version. Nothing here can read the store build
|
|
22
23
|
* reliably on both platforms, and a version guessed wrong aims a rollout at the wrong
|
|
@@ -58,6 +59,12 @@ export interface InitPulseOptions {
|
|
|
58
59
|
/** Privacy guardrails applied to every track() call. */
|
|
59
60
|
eventPropertyAllowlist?: readonly string[];
|
|
60
61
|
redactEventProperties?: readonly string[];
|
|
62
|
+
/**
|
|
63
|
+
* Event-envelope identity. Defaults to the backwards-compatible config context.
|
|
64
|
+
* Use `anonymous_installation` for events that carry their own experiment/variant
|
|
65
|
+
* dimensions and must never transmit the app's device or account identifier.
|
|
66
|
+
*/
|
|
67
|
+
eventIdentityMode?: 'context' | 'anonymous_installation';
|
|
61
68
|
/** Signed config uses the same Ed25519 public key as OTA updates. */
|
|
62
69
|
signingPublicKey?: string;
|
|
63
70
|
signingKeyId?: string;
|
|
@@ -92,6 +99,7 @@ export interface PulseClient {
|
|
|
92
99
|
configUrl: string;
|
|
93
100
|
trackUrl: string;
|
|
94
101
|
track: (event: string, props?: TrackedEventInput['props'], time?: Date) => void;
|
|
102
|
+
trackIdempotent: (eventId: string, event: string, props?: TrackedEventInput['props'], time?: Date) => boolean;
|
|
95
103
|
flush: () => Promise<number>;
|
|
96
104
|
setUser: (userId?: string, attributes?: Record<string, string>) => void;
|
|
97
105
|
clearUser: () => void;
|
|
@@ -111,11 +119,12 @@ export interface AsyncPulseStorage {
|
|
|
111
119
|
getItem(key: string): Promise<string | null>;
|
|
112
120
|
setItem(key: string, value: string): Promise<void>;
|
|
113
121
|
}
|
|
114
|
-
/** Wires config and events
|
|
122
|
+
/** Wires config and events with an explicit event-envelope identity policy. */
|
|
115
123
|
export declare function initPulse(opts: InitPulseOptions): PulseClient;
|
|
116
124
|
/**
|
|
117
|
-
* AsyncStorage-friendly one-call setup. It preloads only Pulse's
|
|
118
|
-
* records, then exposes the same
|
|
125
|
+
* AsyncStorage-friendly one-call setup. It preloads only Pulse's app-scoped config,
|
|
126
|
+
* event, analytics-installation and exposure records, then exposes the same
|
|
127
|
+
* synchronous hot-path API as initPulse.
|
|
119
128
|
*/
|
|
120
129
|
export declare function initPulseAsync(opts: Omit<InitPulseOptions, 'storage'> & {
|
|
121
130
|
storage: AsyncPulseStorage;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/init.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/init.ts"],"names":[],"mappings":"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"}
|