pulse-updates 1.3.6 → 1.3.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -39,6 +39,15 @@ flushed from a persistent outbox in batches. `pulse.health()` exposes config fre
39
39
  signature state, and event backlog. Retention needs nothing further: Pulse counts the install from the
40
40
  config request it already makes.
41
41
 
42
+ Event identity is explicit. The default `eventIdentityMode: 'context'` preserves the
43
+ existing experiment-metric contract by using the config context's `deviceId`/`userId`.
44
+ Set `eventIdentityMode: 'anonymous_installation'` only for an event family that carries
45
+ its own experiment/variant dimensions. In that mode Pulse ignores context `deviceId` and
46
+ `userId`, persists a separate random UUID per app event outbox, and omits `userId`. The
47
+ server's legacy request field is still named `deviceId`, but its value is only that random
48
+ analytics-installation UUID — never IDFA, IDFV, a hardware id, an account id, or the app's
49
+ config identity.
50
+
42
51
  Identity and consent stay explicit and reversible:
43
52
 
44
53
  ```ts
@@ -135,6 +144,12 @@ claims otherwise. A random install-attempt nonce may accompany later determinist
135
144
  outcomes so the server can evaluate a shadow prediction; it is never exposed to the analytics
136
145
  callback.
137
146
 
147
+ The Core integration sends only `app_open_confirmed`, `deferred_link_resolved`, and
148
+ `action_applied` in `anonymous_installation` identity mode. These campaign events must be
149
+ segmented by their explicit `experimentId` and `variantId` properties; they must not be
150
+ implicitly re-bucketed from the legacy request field, because that field contains the
151
+ separate anonymous analytics-installation UUID in this mode.
152
+
138
153
  For the explicit iOS recovery fallback, render `DeferredLinkPasteButton` and pass its validated
139
154
  token to `links.capture(token, 'ios_user_paste')`. It uses the system `UIPasteControl` on iOS 16+
140
155
  and never reads the clipboard passively. Adding Pulse Links native capabilities requires a new
@@ -23,9 +23,10 @@ var _track = require("./track");
23
23
  * - the urls, from the base url and the slug, which is what stops the two halves
24
24
  * from ever addressing different apps;
25
25
  * - platform and OS version, from React Native;
26
- * - the device id, minted and persisted on first launch — an app that has a stable
27
- * identifier of its own (the vendor id, an installation id) should pass it, and an
28
- * app that has none should not have to invent one to be measurable.
26
+ * - the config/experiment id, minted and persisted on first launch — an app that has
27
+ * a stable identifier of its own may pass it. Event tracking keeps the original
28
+ * context identity by default; privacy-sensitive campaign events can explicitly
29
+ * opt into a separate random app-scoped analytics installation UUID.
29
30
  *
30
31
  * Deliberately not automatic: the app version. Nothing here can read the store build
31
32
  * reliably on both platforms, and a version guessed wrong aims a rollout at the wrong
@@ -36,7 +37,7 @@ const DEVICE_ID_KEY = 'pulse.device-id';
36
37
  let activeClient = null;
37
38
  let stopActiveRefresh = null;
38
39
 
39
- /** Wires config and events, and returns the context the two share. */
40
+ /** Wires config and events with an explicit event-envelope identity policy. */
40
41
  function initPulse(opts) {
41
42
  // Reconfiguration is synchronous. Calling the old async dispose without awaiting
42
43
  // it lets its eventual flush tear down the brand-new tracker — exactly the race a
@@ -87,6 +88,7 @@ function initPulse(opts) {
87
88
  (0, _track.configureTracking)({
88
89
  url: trackUrl,
89
90
  getContext,
91
+ identityMode: opts.eventIdentityMode,
90
92
  flushIntervalMs: opts.flushIntervalMs,
91
93
  storage: opts.storage,
92
94
  storageKey: `pulse.${slug}.events.v1`,
@@ -174,12 +176,13 @@ function initPulse(opts) {
174
176
  }
175
177
 
176
178
  /**
177
- * AsyncStorage-friendly one-call setup. It preloads only Pulse's three app-scoped
178
- * records, then exposes the same synchronous hot-path API as initPulse.
179
+ * AsyncStorage-friendly one-call setup. It preloads only Pulse's app-scoped config,
180
+ * event, analytics-installation and exposure records, then exposes the same
181
+ * synchronous hot-path API as initPulse.
179
182
  */
180
183
  async function initPulseAsync(opts) {
181
184
  const slug = opts.appSlug.trim();
182
- const keys = [`pulse.${slug}.device-id`, `pulse.${slug}.config.v1`, `pulse.${slug}.events.v1`, `pulse.${slug}.exposures.v1`, DEVICE_ID_KEY];
185
+ const keys = [`pulse.${slug}.device-id`, `pulse.${slug}.config.v1`, `pulse.${slug}.events.v1`, `pulse.${slug}.events.v1.analytics-installation-id`, `pulse.${slug}.exposures.v1`, DEVICE_ID_KEY];
183
186
  const loaded = await Promise.all(keys.map(async key => [key, await opts.storage.getItem(key)]));
184
187
  const memory = new Map(loaded.filter(entry => entry[1] !== null));
185
188
  const storage = {
@@ -1 +1 @@
1
- {"version":3,"names":["_config","require","_track","DEVICE_ID_KEY","activeClient","stopActiveRefresh","initPulse","opts","disposeTracking","base","apiUrl","replace","slug","appSlug","trim","configUrl","trackUrl","deviceStorageKey","deviceId","resolveDeviceId","storage","platform","detectPlatform","osVersion","detectOsVersion","appVersion","detectAppVersion","language","detectLanguage","userId","userAttributes","consentOverride","analyticsConsent","undefined","hasConsent","getContext","getUserId","getUserAttributes","configureConfig","url","defaults","storageKey","exposureStorageKey","reportExposure","pollIntervalMs","onError","signingPublicKey","signingKeyId","requireSignature","requireConfigSignature","verifySignature","verifyConfigSignature","verifyWithNativeKey","configureTracking","flushIntervalMs","propertyAllowlist","eventPropertyAllowlist","redactProperties","redactEventProperties","appState","onIgnored","onIgnoredEvents","Error","fetchConfig","stopRefresh","startConfigAutoRefresh","client","track","flush","flushEvents","setUser","nextUserId","attributes","sanitizeAttributes","clearUser","setAnalyticsConsent","granted","resetInstallId","randomId","set","health","config","getConfigInfo","events","getTrackingInfo","exposures","getExposureDeliveryInfo","boolean","getConfigBoolean","number","getConfigNumber","string","getConfigString","json","getConfigJson","refresh","dispose","initPulseAsync","keys","loaded","Promise","all","map","key","getItem","memory","Map","filter","entry","getString","get","value","setItem","existing","minted","clean","Object","fromEntries","entries","slice","length","bytes","Uint8Array","crypto","globalThis","getRandomValues","i","Math","floor","random","hex","Array","from","b","toString","padStart","join","rn","Platform","OS","version","Version","String","default","getVersion","canonicalPayload","signature","updates","verifyConfigSignatureAsync","localize","getLocales","languageTag","Intl","DateTimeFormat","resolvedOptions","locale"],"sourceRoot":"../../src","sources":["init.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_config","require","_track","DEVICE_ID_KEY","activeClient","stopActiveRefresh","initPulse","opts","disposeTracking","base","apiUrl","replace","slug","appSlug","trim","configUrl","trackUrl","deviceStorageKey","deviceId","resolveDeviceId","storage","platform","detectPlatform","osVersion","detectOsVersion","appVersion","detectAppVersion","language","detectLanguage","userId","userAttributes","consentOverride","analyticsConsent","undefined","hasConsent","getContext","getUserId","getUserAttributes","configureConfig","url","defaults","storageKey","exposureStorageKey","reportExposure","pollIntervalMs","onError","signingPublicKey","signingKeyId","requireSignature","requireConfigSignature","verifySignature","verifyConfigSignature","verifyWithNativeKey","configureTracking","identityMode","eventIdentityMode","flushIntervalMs","propertyAllowlist","eventPropertyAllowlist","redactProperties","redactEventProperties","appState","onIgnored","onIgnoredEvents","Error","fetchConfig","stopRefresh","startConfigAutoRefresh","client","track","flush","flushEvents","setUser","nextUserId","attributes","sanitizeAttributes","clearUser","setAnalyticsConsent","granted","resetInstallId","randomId","set","health","config","getConfigInfo","events","getTrackingInfo","exposures","getExposureDeliveryInfo","boolean","getConfigBoolean","number","getConfigNumber","string","getConfigString","json","getConfigJson","refresh","dispose","initPulseAsync","keys","loaded","Promise","all","map","key","getItem","memory","Map","filter","entry","getString","get","value","setItem","existing","minted","clean","Object","fromEntries","entries","slice","length","bytes","Uint8Array","crypto","globalThis","getRandomValues","i","Math","floor","random","hex","Array","from","b","toString","padStart","join","rn","Platform","OS","version","Version","String","default","getVersion","canonicalPayload","signature","updates","verifyConfigSignatureAsync","localize","getLocales","languageTag","Intl","DateTimeFormat","resolvedOptions","locale"],"sourceRoot":"../../src","sources":["init.ts"],"mappings":"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","ignoreList":[]}
@@ -38,8 +38,11 @@ const DEFAULT_MAX_QUEUE = 500;
38
38
  const DEFAULT_TIMEOUT_MS = 10_000;
39
39
  const DEFAULT_MAX_ATTEMPTS = 10;
40
40
  const DEFAULT_STORAGE_KEY = 'pulse.events.v1';
41
+ const ANALYTICS_INSTALLATION_ID_SUFFIX = '.analytics-installation-id';
42
+ 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
43
  let options = null;
42
44
  let queue = [];
45
+ let analyticsInstallationId = '';
43
46
  let timer = null;
44
47
  let sending = false;
45
48
  let nextAttemptAt = 0;
@@ -55,6 +58,7 @@ function configureTracking(opts) {
55
58
  disposeTracking();
56
59
  options = opts;
57
60
  queue = readQueue(opts);
61
+ analyticsInstallationId = opts.identityMode === 'anonymous_installation' ? resolveAnalyticsInstallationId(opts) : '';
58
62
  nextAttemptAt = 0;
59
63
  startTimer();
60
64
  lifecycleSubscription = opts.appState?.addEventListener('change', state => {
@@ -110,11 +114,12 @@ async function flushEvents() {
110
114
  const opts = options;
111
115
  const requestGeneration = trackingGeneration;
112
116
  const ctx = opts.getContext?.() ?? {};
117
+ const anonymousInstallation = opts.identityMode === 'anonymous_installation';
113
118
 
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;
119
+ // The legacy/default mode intentionally preserves the original experiment-event
120
+ // contract. Anonymous campaign events opt into a separate identity explicitly.
121
+ if (!anonymousInstallation && !ctx.deviceId) return 0;
122
+ const requestDeviceId = anonymousInstallation ? analyticsInstallationId : ctx.deviceId;
118
123
  const batch = queue.slice(0, opts.maxBatch ?? DEFAULT_MAX_BATCH);
119
124
  queue = queue.slice(batch.length);
120
125
  persistQueue();
@@ -128,8 +133,12 @@ async function flushEvents() {
128
133
  'Content-Type': 'application/json'
129
134
  },
130
135
  body: JSON.stringify({
131
- deviceId: ctx.deviceId,
132
- userId: ctx.userId,
136
+ deviceId: requestDeviceId,
137
+ // Anonymous mode deliberately omits the property rather than serializing an
138
+ // empty identifier. Context mode remains backwards compatible.
139
+ ...(anonymousInstallation ? {} : {
140
+ userId: ctx.userId
141
+ }),
133
142
  platform: ctx.platform,
134
143
  appVersion: ctx.appVersion,
135
144
  events: batch.map(e => ({
@@ -194,6 +203,7 @@ function stopTracking() {
194
203
  disposeTracking();
195
204
  options = null;
196
205
  queue = [];
206
+ analyticsInstallationId = '';
197
207
  sending = false;
198
208
  nextAttemptAt = 0;
199
209
  }
@@ -263,6 +273,28 @@ function restoreStaleBatch(opts, batch, status) {
263
273
  function storageKey(opts) {
264
274
  return opts.storageKey?.trim() || DEFAULT_STORAGE_KEY;
265
275
  }
276
+ function analyticsInstallationIdStorageKey(opts) {
277
+ return `${storageKey(opts)}${ANALYTICS_INSTALLATION_ID_SUFFIX}`;
278
+ }
279
+ function resolveAnalyticsInstallationId(opts) {
280
+ if (opts.storage) {
281
+ try {
282
+ const stored = opts.storage.getString(analyticsInstallationIdStorageKey(opts))?.trim();
283
+ if (stored && UUID_PATTERN.test(stored)) return stored.toLowerCase();
284
+ } catch {
285
+ // A telemetry identifier can stay memory-only when storage is unavailable.
286
+ }
287
+ }
288
+ const generated = randomAnalyticsInstallationId();
289
+ if (opts.storage) {
290
+ try {
291
+ opts.storage.set(analyticsInstallationIdStorageKey(opts), generated);
292
+ } catch {
293
+ // A telemetry identifier can stay memory-only when storage is unavailable.
294
+ }
295
+ }
296
+ return generated;
297
+ }
266
298
  function readQueue(opts) {
267
299
  if (!opts.storage) return [];
268
300
  try {
@@ -288,4 +320,14 @@ function randomEventId() {
288
320
  if (typeof cryptoLike?.randomUUID === 'function') return cryptoLike.randomUUID();
289
321
  return `evt-${Date.now()}-${Math.random().toString(36).slice(2, 14)}`;
290
322
  }
323
+ function randomAnalyticsInstallationId() {
324
+ const cryptoLike = globalThis.crypto;
325
+ if (typeof cryptoLike?.randomUUID === 'function') return cryptoLike.randomUUID().toLowerCase();
326
+ const bytes = new Uint8Array(16);
327
+ if (typeof cryptoLike?.getRandomValues === 'function') cryptoLike.getRandomValues(bytes);else for (let i = 0; i < bytes.length; i++) bytes[i] = Math.floor(Math.random() * 256);
328
+ bytes[6] = (bytes[6] ?? 0) & 0x0f | 0x40;
329
+ bytes[8] = (bytes[8] ?? 0) & 0x3f | 0x80;
330
+ const hex = Array.from(bytes, value => value.toString(16).padStart(2, '0')).join('');
331
+ return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`;
332
+ }
291
333
  //# 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","trackUrl","url","trimmed","replace","includes","configureTracking","opts","disposeTracking","readQueue","identityMode","resolveAnalyticsInstallationId","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","anonymousInstallation","deviceId","requestDeviceId","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","analyticsInstallationIdStorageKey","getString","test","toLowerCase","generated","randomAnalyticsInstallationId","raw","parsed","parse","Array","isArray","filter","item","Boolean","cryptoLike","globalThis","crypto","randomUUID","toString","bytes","Uint8Array","getRandomValues","i","hex","from","padStart","join"],"sourceRoot":"../../src","sources":["track.ts"],"mappings":"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","ignoreList":[]}
@@ -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 device id, minted and persisted on first launch — an app that has a stable
18
- * identifier of its own (the vendor id, an installation id) should pass it, and an
19
- * app that has none should not have to invent one to be measurable.
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
@@ -29,7 +30,7 @@ const DEVICE_ID_KEY = 'pulse.device-id';
29
30
  let activeClient = null;
30
31
  let stopActiveRefresh = null;
31
32
 
32
- /** Wires config and events, and returns the context the two share. */
33
+ /** Wires config and events with an explicit event-envelope identity policy. */
33
34
  export function initPulse(opts) {
34
35
  // Reconfiguration is synchronous. Calling the old async dispose without awaiting
35
36
  // it lets its eventual flush tear down the brand-new tracker — exactly the race a
@@ -80,6 +81,7 @@ export function initPulse(opts) {
80
81
  configureTracking({
81
82
  url: trackUrl,
82
83
  getContext,
84
+ identityMode: opts.eventIdentityMode,
83
85
  flushIntervalMs: opts.flushIntervalMs,
84
86
  storage: opts.storage,
85
87
  storageKey: `pulse.${slug}.events.v1`,
@@ -167,12 +169,13 @@ export function initPulse(opts) {
167
169
  }
168
170
 
169
171
  /**
170
- * AsyncStorage-friendly one-call setup. It preloads only Pulse's three app-scoped
171
- * records, then exposes the same synchronous hot-path API as initPulse.
172
+ * AsyncStorage-friendly one-call setup. It preloads only Pulse's app-scoped config,
173
+ * event, analytics-installation and exposure records, then exposes the same
174
+ * synchronous hot-path API as initPulse.
172
175
  */
173
176
  export async function initPulseAsync(opts) {
174
177
  const slug = opts.appSlug.trim();
175
- const keys = [`pulse.${slug}.device-id`, `pulse.${slug}.config.v1`, `pulse.${slug}.events.v1`, `pulse.${slug}.exposures.v1`, DEVICE_ID_KEY];
178
+ const keys = [`pulse.${slug}.device-id`, `pulse.${slug}.config.v1`, `pulse.${slug}.events.v1`, `pulse.${slug}.events.v1.analytics-installation-id`, `pulse.${slug}.exposures.v1`, DEVICE_ID_KEY];
176
179
  const loaded = await Promise.all(keys.map(async key => [key, await opts.storage.getItem(key)]));
177
180
  const memory = new Map(loaded.filter(entry => entry[1] !== null));
178
181
  const storage = {
@@ -1 +1 @@
1
- {"version":3,"names":["configureConfig","fetchConfig","startConfigAutoRefresh","getConfigInfo","getConfigBoolean","getConfigNumber","getConfigString","getConfigJson","getExposureDeliveryInfo","configureTracking","disposeTracking","flushEvents","getTrackingInfo","track","DEVICE_ID_KEY","activeClient","stopActiveRefresh","initPulse","opts","base","apiUrl","replace","slug","appSlug","trim","configUrl","trackUrl","deviceStorageKey","deviceId","resolveDeviceId","storage","platform","detectPlatform","osVersion","detectOsVersion","appVersion","detectAppVersion","language","detectLanguage","userId","userAttributes","consentOverride","analyticsConsent","undefined","hasConsent","getContext","getUserId","getUserAttributes","url","defaults","storageKey","exposureStorageKey","reportExposure","pollIntervalMs","onError","signingPublicKey","signingKeyId","requireSignature","requireConfigSignature","verifySignature","verifyConfigSignature","verifyWithNativeKey","flushIntervalMs","propertyAllowlist","eventPropertyAllowlist","redactProperties","redactEventProperties","appState","onIgnored","onIgnoredEvents","Error","stopRefresh","client","flush","setUser","nextUserId","attributes","sanitizeAttributes","clearUser","setAnalyticsConsent","granted","resetInstallId","randomId","set","health","config","events","exposures","boolean","number","string","json","refresh","dispose","initPulseAsync","keys","loaded","Promise","all","map","key","getItem","memory","Map","filter","entry","getString","get","value","setItem","existing","minted","clean","Object","fromEntries","entries","slice","length","bytes","Uint8Array","crypto","globalThis","getRandomValues","i","Math","floor","random","hex","Array","from","b","toString","padStart","join","rn","require","Platform","OS","version","Version","String","default","getVersion","canonicalPayload","signature","updates","verifyConfigSignatureAsync","localize","getLocales","languageTag","Intl","DateTimeFormat","resolvedOptions","locale"],"sourceRoot":"../../src","sources":["init.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["configureConfig","fetchConfig","startConfigAutoRefresh","getConfigInfo","getConfigBoolean","getConfigNumber","getConfigString","getConfigJson","getExposureDeliveryInfo","configureTracking","disposeTracking","flushEvents","getTrackingInfo","track","DEVICE_ID_KEY","activeClient","stopActiveRefresh","initPulse","opts","base","apiUrl","replace","slug","appSlug","trim","configUrl","trackUrl","deviceStorageKey","deviceId","resolveDeviceId","storage","platform","detectPlatform","osVersion","detectOsVersion","appVersion","detectAppVersion","language","detectLanguage","userId","userAttributes","consentOverride","analyticsConsent","undefined","hasConsent","getContext","getUserId","getUserAttributes","url","defaults","storageKey","exposureStorageKey","reportExposure","pollIntervalMs","onError","signingPublicKey","signingKeyId","requireSignature","requireConfigSignature","verifySignature","verifyConfigSignature","verifyWithNativeKey","identityMode","eventIdentityMode","flushIntervalMs","propertyAllowlist","eventPropertyAllowlist","redactProperties","redactEventProperties","appState","onIgnored","onIgnoredEvents","Error","stopRefresh","client","flush","setUser","nextUserId","attributes","sanitizeAttributes","clearUser","setAnalyticsConsent","granted","resetInstallId","randomId","set","health","config","events","exposures","boolean","number","string","json","refresh","dispose","initPulseAsync","keys","loaded","Promise","all","map","key","getItem","memory","Map","filter","entry","getString","get","value","setItem","existing","minted","clean","Object","fromEntries","entries","slice","length","bytes","Uint8Array","crypto","globalThis","getRandomValues","i","Math","floor","random","hex","Array","from","b","toString","padStart","join","rn","require","Platform","OS","version","Version","String","default","getVersion","canonicalPayload","signature","updates","verifyConfigSignatureAsync","localize","getLocales","languageTag","Intl","DateTimeFormat","resolvedOptions","locale"],"sourceRoot":"../../src","sources":["init.ts"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SACEA,eAAe,EACfC,WAAW,EACXC,sBAAsB,EAKtBC,aAAa,EACbC,gBAAgB,EAChBC,eAAe,EACfC,eAAe,EACfC,aAAa,EACbC,uBAAuB,QAClB,UAAU;AACjB,SACEC,iBAAiB,EACjBC,eAAe,EACfC,WAAW,EACXC,eAAe,EACfC,KAAK,QAEA,SAAS;AA8EhB,MAAMC,aAAa,GAAG,iBAAiB;AAqCvC,IAAIC,YAAgC,GAAG,IAAI;AAC3C,IAAIC,iBAAsC,GAAG,IAAI;;AAEjD;AACA,OAAO,SAASC,SAASA,CAACC,IAAsB,EAAe;EAC7D;EACA;EACA;EACA;EACAF,iBAAiB,GAAG,CAAC;EACrBN,eAAe,CAAC,CAAC;EACjBK,YAAY,GAAG,IAAI;EACnBC,iBAAiB,GAAG,IAAI;EACxB,MAAMG,IAAI,GAAGD,IAAI,CAACE,MAAM,CAACC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;EAC5C,MAAMC,IAAI,GAAGJ,IAAI,CAACK,OAAO,CAACC,IAAI,CAAC,CAAC;EAChC,MAAMC,SAAS,GAAG,GAAGN,IAAI,iBAAiBG,IAAI,EAAE;EAChD,MAAMI,QAAQ,GAAG,GAAGP,IAAI,gBAAgBG,IAAI,EAAE;EAE9C,MAAMK,gBAAgB,GAAG,SAASL,IAAI,YAAY;EAClD,IAAIM,QAAQ,GAAGV,IAAI,CAACU,QAAQ,EAAEJ,IAAI,CAAC,CAAC,IAAIK,eAAe,CAACX,IAAI,CAACY,OAAO,EAAEH,gBAAgB,CAAC;EACvF,MAAMI,QAAQ,GAAGC,cAAc,CAAC,CAAC;EACjC,MAAMC,SAAS,GAAGC,eAAe,CAAC,CAAC;EACnC,MAAMC,UAAU,GAAGjB,IAAI,CAACiB,UAAU,IAAIC,gBAAgB,CAAC,CAAC;EACxD,MAAMC,QAAQ,GAAGnB,IAAI,CAACmB,QAAQ,IAAIC,cAAc,CAAC,CAAC;EAClD,IAAIC,MAA0B;EAC9B,IAAIC,cAAkD;EACtD,IAAIC,eAAoC,GAAG,OAAOvB,IAAI,CAACwB,gBAAgB,KAAK,SAAS,GACjFxB,IAAI,CAACwB,gBAAgB,GACrBC,SAAS;EAEb,MAAMC,UAAU,GAAGA,CAAA,KAAeH,eAAe,KAC9C,OAAOvB,IAAI,CAACwB,gBAAgB,KAAK,UAAU,GAAGxB,IAAI,CAACwB,gBAAgB,CAAC,CAAC,GAAG,IAAI,CAAC;EAEhF,MAAMG,UAAU,GAAGA,CAAA,MAAsB;IACvCd,QAAQ;IACRE,SAAS;IACTE,UAAU;IACVE,QAAQ;IACRT,QAAQ;IACRW,MAAM,EAAEA,MAAM,IAAIrB,IAAI,CAAC4B,SAAS,GAAG,CAAC;IACpCN,cAAc,EAAEA,cAAc,IAAItB,IAAI,CAAC6B,iBAAiB,GAAG;EAC7D,CAAC,CAAC;EAEF/C,eAAe,CAAC;IACdgD,GAAG,EAAEvB,SAAS;IACdwB,QAAQ,EAAE/B,IAAI,CAAC+B,QAAQ;IACvBnB,OAAO,EAAEZ,IAAI,CAACY,OAAO;IACrBoB,UAAU,EAAE,SAAS5B,IAAI,YAAY;IACrC6B,kBAAkB,EAAE,SAAS7B,IAAI,eAAe;IAChD8B,cAAc,EAAElC,IAAI,CAACkC,cAAc,IAAI,IAAI;IAC3CP,UAAU;IACVQ,cAAc,EAAEnC,IAAI,CAACmC,cAAc;IACnCC,OAAO,EAAEpC,IAAI,CAACoC,OAAO;IACrBC,gBAAgB,EAAErC,IAAI,CAACqC,gBAAgB;IACvCC,YAAY,EAAEtC,IAAI,CAACsC,YAAY;IAC/BC,gBAAgB,EAAEvC,IAAI,CAACwC,sBAAsB;IAC7CC,eAAe,EAAEzC,IAAI,CAAC0C,qBAAqB,KACxC1C,IAAI,CAACwC,sBAAsB,IAAI,CAACxC,IAAI,CAACqC,gBAAgB,GAAGM,mBAAmB,GAAGlB,SAAS;EAC5F,CAAC,CAAC;EAEFlC,iBAAiB,CAAC;IAChBuC,GAAG,EAAEtB,QAAQ;IACbmB,UAAU;IACViB,YAAY,EAAE5C,IAAI,CAAC6C,iBAAiB;IACpCC,eAAe,EAAE9C,IAAI,CAAC8C,eAAe;IACrClC,OAAO,EAAEZ,IAAI,CAACY,OAAO;IACrBoB,UAAU,EAAE,SAAS5B,IAAI,YAAY;IACrCsB,UAAU;IACVqB,iBAAiB,EAAE/C,IAAI,CAACgD,sBAAsB;IAC9CC,gBAAgB,EAAEjD,IAAI,CAACkD,qBAAqB;IAC5CC,QAAQ,EAAEnD,IAAI,CAACmD,QAAQ;IACvBC,SAAS,EAAEpD,IAAI,CAACqD,eAAe;IAC/BjB,OAAO,EAAEpC,IAAI,CAACoC;EAChB,CAAC,CAAC;;EAEF;EACA;EACA;EACA;EACA;EACA,IAAI,CAACnB,UAAU,EAAE;IACfjB,IAAI,CAACoC,OAAO,GAAG,IAAIkB,KAAK,CACtB,+FAA+F,CAAC,CAAC;EACrG;EACA,IAAI,CAACtD,IAAI,CAACY,OAAO,IAAI,CAACZ,IAAI,CAACU,QAAQ,EAAE;IACnCV,IAAI,CAACoC,OAAO,GAAG,IAAIkB,KAAK,CACtB,qGAAqG,CAAC,CAAC;EAC3G;;EAEA;EACA;EACA;EACA,KAAKvE,WAAW,CAAC,CAAC;EAClB,MAAMwE,WAAW,GAAGvE,sBAAsB,CAACgB,IAAI,CAACmD,QAAQ,CAAC;EAEzD,MAAMK,MAAmB,GAAG;IAC1B,IAAI9C,QAAQA,CAAA,EAAG;MAAE,OAAOA,QAAQ;IAAE,CAAC;IACnCH,SAAS;IACTC,QAAQ;IACRb,KAAK;IACL8D,KAAK,EAAEhE,WAAW;IAClBiE,OAAO,EAAEA,CAACC,UAAU,EAAEC,UAAU,KAAK;MACnCvC,MAAM,GAAGsC,UAAU,EAAErD,IAAI,CAAC,CAAC,IAAImB,SAAS;MACxCH,cAAc,GAAGuC,kBAAkB,CAACD,UAAU,CAAC;IACjD,CAAC;IACDE,SAAS,EAAEA,CAAA,KAAM;MACfzC,MAAM,GAAGI,SAAS;MAClBH,cAAc,GAAGG,SAAS;IAC5B,CAAC;IACDsC,mBAAmB,EAAGC,OAAO,IAAK;MAAEzC,eAAe,GAAGyC,OAAO;IAAE,CAAC;IAChEC,cAAc,EAAEA,CAAA,KAAM;MACpBvD,QAAQ,GAAGwD,QAAQ,CAAC,CAAC;MACrB,IAAI;QAAElE,IAAI,CAACY,OAAO,EAAEuD,GAAG,CAAC1D,gBAAgB,EAAEC,QAAQ,CAAC;MAAE,CAAC,CAAC,MAAM,CAAE;MAC/D,OAAOA,QAAQ;IACjB,CAAC;IACD0D,MAAM,EAAEA,CAAA,MAAO;MACb/D,OAAO,EAAED,IAAI;MACbM,QAAQ;MACR2D,MAAM,EAAEpF,aAAa,CAAC,CAAC;MACvBqF,MAAM,EAAE5E,eAAe,CAAC,CAAC;MACzB6E,SAAS,EAAEjF,uBAAuB,CAAC,CAAC;MACpCkC,gBAAgB,EAAEE,UAAU,CAAC;IAC/B,CAAC,CAAC;IACF2C,MAAM,EAAE;MACNG,OAAO,EAAEtF,gBAAgB;MACzBuF,MAAM,EAAEtF,eAAe;MACvBuF,MAAM,EAAEtF,eAAe;MACvBuF,IAAI,EAAEtF,aAAa;MACnBuF,OAAO,EAAE7F;IACX,CAAC;IACD8F,OAAO,EAAE,MAAAA,CAAA,KAAY;MACnBtB,WAAW,CAAC,CAAC;MACb,IAAI1D,YAAY,KAAK2D,MAAM,EAAE;MAC7B,MAAM/D,WAAW,CAAC,CAAC;MACnB;MACA,IAAII,YAAY,KAAK2D,MAAM,EAAE;QAC3BhE,eAAe,CAAC,CAAC;QACjBK,YAAY,GAAG,IAAI;QACnBC,iBAAiB,GAAG,IAAI;MAC1B;IACF;EACF,CAAC;EACDD,YAAY,GAAG2D,MAAM;EACrB1D,iBAAiB,GAAGyD,WAAW;EAC/B,OAAOC,MAAM;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAesB,cAAcA,CAClC9E,IAAwE,EAClD;EACtB,MAAMI,IAAI,GAAGJ,IAAI,CAACK,OAAO,CAACC,IAAI,CAAC,CAAC;EAChC,MAAMyE,IAAI,GAAG,CACX,SAAS3E,IAAI,YAAY,EACzB,SAASA,IAAI,YAAY,EACzB,SAASA,IAAI,YAAY,EACzB,SAASA,IAAI,sCAAsC,EACnD,SAASA,IAAI,eAAe,EAC5BR,aAAa,CACd;EACD,MAAMoF,MAAM,GAAG,MAAMC,OAAO,CAACC,GAAG,CAACH,IAAI,CAACI,GAAG,CAAC,MAAOC,GAAG,IAAK,CAACA,GAAG,EAAE,MAAMpF,IAAI,CAACY,OAAO,CAACyE,OAAO,CAACD,GAAG,CAAC,CAAU,CAAC,CAAC;EAC1G,MAAME,MAAM,GAAG,IAAIC,GAAG,CAACP,MAAM,CAACQ,MAAM,CAAEC,KAAK,IAAyCA,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;EACvG,MAAM7E,OAAsB,GAAG;IAC7B8E,SAAS,EAAGN,GAAG,IAAKE,MAAM,CAACK,GAAG,CAACP,GAAG,CAAC;IACnCjB,GAAG,EAAEA,CAACiB,GAAG,EAAEQ,KAAK,KAAK;MACnBN,MAAM,CAACnB,GAAG,CAACiB,GAAG,EAAEQ,KAAK,CAAC;MACtB,KAAK5F,IAAI,CAACY,OAAO,CAACiF,OAAO,CAACT,GAAG,EAAEQ,KAAK,CAAC;IACvC;EACF,CAAC;EACD,OAAO7F,SAAS,CAAC;IAAE,GAAGC,IAAI;IAAEY;EAAQ,CAAC,CAAC;AACxC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASD,eAAeA,CAACC,OAAuB,EAAEwE,GAAG,GAAGxF,aAAa,EAAU;EAC7E,IAAI,CAACgB,OAAO,EAAE,OAAOsD,QAAQ,CAAC,CAAC;EAE/B,IAAI;IACF,MAAM4B,QAAQ,GAAGlF,OAAO,CAAC8E,SAAS,CAACN,GAAG,CAAC,IAAIxE,OAAO,CAAC8E,SAAS,CAAC9F,aAAa,CAAC;IAC3E,IAAIkG,QAAQ,EAAE,OAAOA,QAAQ;IAC7B,MAAMC,MAAM,GAAG7B,QAAQ,CAAC,CAAC;IACzBtD,OAAO,CAACuD,GAAG,CAACiB,GAAG,EAAEW,MAAM,CAAC;IACxB,OAAOA,MAAM;EACf,CAAC,CAAC,MAAM;IACN,OAAO7B,QAAQ,CAAC,CAAC;EACnB;AACF;AAEA,SAASL,kBAAkBA,CAACD,UAAmC,EAAsC;EACnG,IAAI,CAACA,UAAU,EAAE,OAAOnC,SAAS;EACjC,MAAMuE,KAAK,GAAGC,MAAM,CAACC,WAAW,CAACD,MAAM,CAACE,OAAO,CAACvC,UAAU,CAAC,CACxD4B,MAAM,CAAC,CAAC,CAACJ,GAAG,EAAEQ,KAAK,CAAC,KAAKR,GAAG,CAAC9E,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,OAAOsF,KAAK,KAAK,QAAQ,CAAC,CACxEQ,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;EAChB,OAAOH,MAAM,CAAClB,IAAI,CAACiB,KAAK,CAAC,CAACK,MAAM,GAAG,CAAC,GAAGL,KAAK,GAAGvE,SAAS;AAC1D;AAEA,SAASyC,QAAQA,CAAA,EAAW;EAC1B,MAAMoC,KAAK,GAAG,IAAIC,UAAU,CAAC,EAAE,CAAC;EAChC,MAAMC,MAAM,GAAIC,UAAU,CAAgED,MAAM;EAEhG,IAAIA,MAAM,EAAEE,eAAe,EAAE;IAC3BF,MAAM,CAACE,eAAe,CAACJ,KAAK,CAAC;EAC/B,CAAC,MAAM;IACL;IACA;IACA,KAAK,IAAIK,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGL,KAAK,CAACD,MAAM,EAAEM,CAAC,EAAE,EAAEL,KAAK,CAACK,CAAC,CAAC,GAAGC,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,MAAM,CAAC,CAAC,GAAG,GAAG,CAAC;EACnF;EAEAR,KAAK,CAAC,CAAC,CAAC,GAAI,CAACA,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,GAAI,IAAI;EAC1CA,KAAK,CAAC,CAAC,CAAC,GAAI,CAACA,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,GAAI,IAAI;EAE1C,MAAMS,GAAG,GAAGC,KAAK,CAACC,IAAI,CAACX,KAAK,EAAGY,CAAC,IAAKA,CAAC,CAACC,QAAQ,CAAC,EAAE,CAAC,CAACC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAACC,IAAI,CAAC,EAAE,CAAC;EAC9E,OAAO,GAAGN,GAAG,CAACX,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAIW,GAAG,CAACX,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAIW,GAAG,CAACX,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,IAAIW,GAAG,CAACX,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,IAAIW,GAAG,CAACX,KAAK,CAAC,EAAE,CAAC,EAAE;AAC5G;;AAEA;AACA,SAAStF,cAAcA,CAAA,EAAuB;EAC5C,IAAI;IACF;IACA;IACA;IACA,MAAMwG,EAAE,GAAGC,OAAO,CAAC,cAAc,CAAmC;IACpE,OAAOD,EAAE,EAAEE,QAAQ,EAAEC,EAAE;EACzB,CAAC,CAAC,MAAM;IACN,OAAOhG,SAAS;EAClB;AACF;AAEA,SAAST,eAAeA,CAAA,EAAuB;EAC7C,IAAI;IACF;IACA,MAAMsG,EAAE,GAAGC,OAAO,CAAC,cAAc,CAAiD;IAClF,MAAMG,OAAO,GAAGJ,EAAE,EAAEE,QAAQ,EAAEG,OAAO;IACrC,OAAOD,OAAO,KAAKjG,SAAS,IAAIiG,OAAO,KAAK,IAAI,GAAGjG,SAAS,GAAGmG,MAAM,CAACF,OAAO,CAAC;EAChF,CAAC,CAAC,MAAM;IACN,OAAOjG,SAAS;EAClB;AACF;AAEA,SAASP,gBAAgBA,CAAA,EAAuB;EAC9C,IAAI;IACF;IACA;IACA,MAAM8D,MAAM,GAAGuC,OAAO,CAAC,0BAA0B,CAA2E;IAC5H,OAAOvC,MAAM,CAAC6C,OAAO,EAAEC,UAAU,GAAG,CAAC,IAAI9C,MAAM,CAAC8C,UAAU,GAAG,CAAC;EAChE,CAAC,CAAC,MAAM;IACN,OAAOrG,SAAS;EAClB;AACF;AAEA,eAAekB,mBAAmBA,CAChCoF,gBAAwB,EACxBC,SAA0B,EACR;EAClB,IAAI;IACF;IACA;IACA,MAAMC,OAAO,GAAGV,OAAO,CAAC,gBAAgB,CAEvC;IACD,OAAO,OAAMU,OAAO,CAACC,0BAA0B,GAAGH,gBAAgB,EAAEC,SAAS,CAAC,KAAI,KAAK;EACzF,CAAC,CAAC,MAAM;IACN,OAAO,KAAK;EACd;AACF;AAEA,SAAS5G,cAAcA,CAAA,EAAuB;EAC5C,IAAI;IACF;IACA,MAAM+G,QAAQ,GAAGZ,OAAO,CAAC,uBAAuB,CAA2D;IAC3G,OAAOY,QAAQ,CAACC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,EAAEC,WAAW;EAChD,CAAC,CAAC,MAAM;IACN,IAAI;MACF,OAAOC,IAAI,CAACC,cAAc,CAAC,CAAC,CAACC,eAAe,CAAC,CAAC,CAACC,MAAM;IACvD,CAAC,CAAC,MAAM;MACN,OAAOhH,SAAS;IAClB;EACF;AACF","ignoreList":[]}
@@ -26,8 +26,11 @@ 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;
@@ -43,6 +46,7 @@ export function configureTracking(opts) {
43
46
  disposeTracking();
44
47
  options = opts;
45
48
  queue = readQueue(opts);
49
+ analyticsInstallationId = opts.identityMode === 'anonymous_installation' ? resolveAnalyticsInstallationId(opts) : '';
46
50
  nextAttemptAt = 0;
47
51
  startTimer();
48
52
  lifecycleSubscription = opts.appState?.addEventListener('change', state => {
@@ -98,11 +102,12 @@ export async function flushEvents() {
98
102
  const opts = options;
99
103
  const requestGeneration = trackingGeneration;
100
104
  const ctx = opts.getContext?.() ?? {};
105
+ const anonymousInstallation = opts.identityMode === 'anonymous_installation';
101
106
 
102
- // Without a device id the server cannot put the event in an arm, and an empty id
103
- // would pool every such install into one. Held rather than dropped: the id usually
104
- // arrives a moment after boot.
105
- if (!ctx.deviceId) return 0;
107
+ // The legacy/default mode intentionally preserves the original experiment-event
108
+ // contract. Anonymous campaign events opt into a separate identity explicitly.
109
+ if (!anonymousInstallation && !ctx.deviceId) return 0;
110
+ const requestDeviceId = anonymousInstallation ? analyticsInstallationId : ctx.deviceId;
106
111
  const batch = queue.slice(0, opts.maxBatch ?? DEFAULT_MAX_BATCH);
107
112
  queue = queue.slice(batch.length);
108
113
  persistQueue();
@@ -116,8 +121,12 @@ export async function flushEvents() {
116
121
  'Content-Type': 'application/json'
117
122
  },
118
123
  body: JSON.stringify({
119
- deviceId: ctx.deviceId,
120
- userId: ctx.userId,
124
+ deviceId: requestDeviceId,
125
+ // Anonymous mode deliberately omits the property rather than serializing an
126
+ // empty identifier. Context mode remains backwards compatible.
127
+ ...(anonymousInstallation ? {} : {
128
+ userId: ctx.userId
129
+ }),
121
130
  platform: ctx.platform,
122
131
  appVersion: ctx.appVersion,
123
132
  events: batch.map(e => ({
@@ -182,6 +191,7 @@ export function stopTracking() {
182
191
  disposeTracking();
183
192
  options = null;
184
193
  queue = [];
194
+ analyticsInstallationId = '';
185
195
  sending = false;
186
196
  nextAttemptAt = 0;
187
197
  }
@@ -251,6 +261,28 @@ function restoreStaleBatch(opts, batch, status) {
251
261
  function storageKey(opts) {
252
262
  return opts.storageKey?.trim() || DEFAULT_STORAGE_KEY;
253
263
  }
264
+ function analyticsInstallationIdStorageKey(opts) {
265
+ return `${storageKey(opts)}${ANALYTICS_INSTALLATION_ID_SUFFIX}`;
266
+ }
267
+ function resolveAnalyticsInstallationId(opts) {
268
+ if (opts.storage) {
269
+ try {
270
+ const stored = opts.storage.getString(analyticsInstallationIdStorageKey(opts))?.trim();
271
+ if (stored && UUID_PATTERN.test(stored)) return stored.toLowerCase();
272
+ } catch {
273
+ // A telemetry identifier can stay memory-only when storage is unavailable.
274
+ }
275
+ }
276
+ const generated = randomAnalyticsInstallationId();
277
+ if (opts.storage) {
278
+ try {
279
+ opts.storage.set(analyticsInstallationIdStorageKey(opts), generated);
280
+ } catch {
281
+ // A telemetry identifier can stay memory-only when storage is unavailable.
282
+ }
283
+ }
284
+ return generated;
285
+ }
254
286
  function readQueue(opts) {
255
287
  if (!opts.storage) return [];
256
288
  try {
@@ -276,4 +308,14 @@ function randomEventId() {
276
308
  if (typeof cryptoLike?.randomUUID === 'function') return cryptoLike.randomUUID();
277
309
  return `evt-${Date.now()}-${Math.random().toString(36).slice(2, 14)}`;
278
310
  }
311
+ function randomAnalyticsInstallationId() {
312
+ const cryptoLike = globalThis.crypto;
313
+ if (typeof cryptoLike?.randomUUID === 'function') return cryptoLike.randomUUID().toLowerCase();
314
+ const bytes = new Uint8Array(16);
315
+ if (typeof cryptoLike?.getRandomValues === 'function') cryptoLike.getRandomValues(bytes);else for (let i = 0; i < bytes.length; i++) bytes[i] = Math.floor(Math.random() * 256);
316
+ bytes[6] = (bytes[6] ?? 0) & 0x0f | 0x40;
317
+ bytes[8] = (bytes[8] ?? 0) & 0x3f | 0x80;
318
+ const hex = Array.from(bytes, value => value.toString(16).padStart(2, '0')).join('');
319
+ return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`;
320
+ }
279
321
  //# 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","trackUrl","url","trimmed","replace","includes","configureTracking","opts","disposeTracking","readQueue","identityMode","resolveAnalyticsInstallationId","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","anonymousInstallation","deviceId","requestDeviceId","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","analyticsInstallationIdStorageKey","getString","test","toLowerCase","generated","randomAnalyticsInstallationId","raw","parsed","parse","Array","isArray","filter","item","Boolean","cryptoLike","globalThis","crypto","randomUUID","toString","bytes","Uint8Array","getRandomValues","i","hex","from","padStart","join"],"sourceRoot":"../../src","sources":["track.ts"],"mappings":"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","ignoreList":[]}
@@ -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 device id, minted and persisted on first launch — an app that has a stable
18
- * identifier of its own (the vendor id, an installation id) should pass it, and an
19
- * app that has none should not have to invent one to be measurable.
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;
@@ -111,11 +118,12 @@ export interface AsyncPulseStorage {
111
118
  getItem(key: string): Promise<string | null>;
112
119
  setItem(key: string, value: string): Promise<void>;
113
120
  }
114
- /** Wires config and events, and returns the context the two share. */
121
+ /** Wires config and events with an explicit event-envelope identity policy. */
115
122
  export declare function initPulse(opts: InitPulseOptions): PulseClient;
116
123
  /**
117
- * AsyncStorage-friendly one-call setup. It preloads only Pulse's three app-scoped
118
- * records, then exposes the same synchronous hot-path API as initPulse.
124
+ * AsyncStorage-friendly one-call setup. It preloads only Pulse's app-scoped config,
125
+ * event, analytics-installation and exposure records, then exposes the same
126
+ * synchronous hot-path API as initPulse.
119
127
  */
120
128
  export declare function initPulseAsync(opts: Omit<InitPulseOptions, 'storage'> & {
121
129
  storage: AsyncPulseStorage;
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/init.ts"],"names":[],"mappings":"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"}
@@ -28,8 +28,19 @@ export interface TrackOptions {
28
28
  * app's registry and read as an empty metric on both sides.
29
29
  */
30
30
  url: string;
31
- /** The same context the config uses — identity travels with the batch, once. */
31
+ /**
32
+ * Request context shared with config. `context` identity mode reads deviceId/userId
33
+ * for backwards-compatible experiment metrics; `anonymous_installation` ignores
34
+ * them and reads only platform/appVersion.
35
+ */
32
36
  getContext?: () => ConfigContext;
37
+ /**
38
+ * `context` preserves the original experiment-event contract and sends the context
39
+ * deviceId/userId. `anonymous_installation` is an explicit privacy mode: it ignores
40
+ * both and sends only an SDK-minted app-scoped random UUID under the legacy wire
41
+ * field `deviceId`. Defaults to `context` for backwards compatibility.
42
+ */
43
+ identityMode?: 'context' | 'anonymous_installation';
33
44
  /** How often a non-empty queue is sent. Default 10s. */
34
45
  flushIntervalMs?: number;
35
46
  /** Events per request. The server refuses more than 100. */
@@ -1 +1 @@
1
- {"version":3,"file":"track.d.ts","sourceRoot":"","sources":["../../src/track.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE7D,MAAM,WAAW,YAAY;IAC3B;;;;;OAKG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ,gFAAgF;IAChF,UAAU,CAAC,EAAE,MAAM,aAAa,CAAC;IAEjC,wDAAwD;IACxD,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,0FAA0F;IAC1F,OAAO,CAAC,EAAE,aAAa,CAAC;IAExB,wEAAwE;IACxE,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,wEAAwE;IACxE,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,wFAAwF;IACxF,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC;IAE3B,sDAAsD;IACtD,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAEtC,+DAA+D;IAC/D,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAErC,0EAA0E;IAC1E,QAAQ,CAAC,EAAE;QAAE,gBAAgB,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,KAAK;YAAE,MAAM,EAAE,MAAM,IAAI,CAAA;SAAE,CAAA;KAAE,CAAC;IAE9G,+DAA+D;IAC/D,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAEvC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,cAAc,GAAG,YAAY,KAAK,IAAI,CAAC;IAE1F,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACpC;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;IACrE,IAAI,CAAC,EAAE,IAAI,CAAC;CACb;AAiCD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAS1D;AAED;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,iBAAiB,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CA2B1F;AAED;;;;;;GAMG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,CA8DnD;AAED,2FAA2F;AAC3F,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,wBAAgB,eAAe,IAAI;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;CACvB,CAEA;AAED,qEAAqE;AACrE,wBAAgB,eAAe,IAAI,IAAI,CAStC;AAED,wBAAgB,YAAY,IAAI,IAAI,CAMnC"}
1
+ {"version":3,"file":"track.d.ts","sourceRoot":"","sources":["../../src/track.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE7D,MAAM,WAAW,YAAY;IAC3B;;;;;OAKG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,aAAa,CAAC;IAEjC;;;;;OAKG;IACH,YAAY,CAAC,EAAE,SAAS,GAAG,wBAAwB,CAAC;IAEpD,wDAAwD;IACxD,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,0FAA0F;IAC1F,OAAO,CAAC,EAAE,aAAa,CAAC;IAExB,wEAAwE;IACxE,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,wEAAwE;IACxE,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,wFAAwF;IACxF,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC;IAE3B,sDAAsD;IACtD,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAEtC,+DAA+D;IAC/D,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAErC,0EAA0E;IAC1E,QAAQ,CAAC,EAAE;QAAE,gBAAgB,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,KAAK;YAAE,MAAM,EAAE,MAAM,IAAI,CAAA;SAAE,CAAA;KAAE,CAAC;IAE9G,+DAA+D;IAC/D,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAEvC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,cAAc,GAAG,YAAY,KAAK,IAAI,CAAC;IAE1F,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACpC;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;IACrE,IAAI,CAAC,EAAE,IAAI,CAAC;CACb;AAoCD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAY1D;AAED;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,iBAAiB,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CA2B1F;AAED;;;;;;GAMG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,CAiEnD;AAED,2FAA2F;AAC3F,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,wBAAgB,eAAe,IAAI;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;CACvB,CAEA;AAED,qEAAqE;AACrE,wBAAgB,eAAe,IAAI,IAAI,CAStC;AAED,wBAAgB,YAAY,IAAI,IAAI,CAOnC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pulse-updates",
3
- "version": "1.3.6",
3
+ "version": "1.3.7",
4
4
  "description": "Pulse app-experience SDK for React Native: updates, config, experiments, events, decisions and first-party links",
5
5
  "main": "lib/commonjs/index.js",
6
6
  "module": "lib/module/index.js",
package/src/init.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 device id, minted and persisted on first launch — an app that has a stable
18
- * identifier of its own (the vendor id, an installation id) should pass it, and an
19
- * app that has none should not have to invent one to be measurable.
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
@@ -92,6 +93,13 @@ export interface InitPulseOptions {
92
93
  eventPropertyAllowlist?: readonly string[];
93
94
  redactEventProperties?: readonly string[];
94
95
 
96
+ /**
97
+ * Event-envelope identity. Defaults to the backwards-compatible config context.
98
+ * Use `anonymous_installation` for events that carry their own experiment/variant
99
+ * dimensions and must never transmit the app's device or account identifier.
100
+ */
101
+ eventIdentityMode?: 'context' | 'anonymous_installation';
102
+
95
103
  /** Signed config uses the same Ed25519 public key as OTA updates. */
96
104
  signingPublicKey?: string;
97
105
  signingKeyId?: string;
@@ -156,7 +164,7 @@ export interface AsyncPulseStorage {
156
164
  let activeClient: PulseClient | null = null;
157
165
  let stopActiveRefresh: (() => void) | null = null;
158
166
 
159
- /** Wires config and events, and returns the context the two share. */
167
+ /** Wires config and events with an explicit event-envelope identity policy. */
160
168
  export function initPulse(opts: InitPulseOptions): PulseClient {
161
169
  // Reconfiguration is synchronous. Calling the old async dispose without awaiting
162
170
  // it lets its eventual flush tear down the brand-new tracker — exactly the race a
@@ -216,6 +224,7 @@ export function initPulse(opts: InitPulseOptions): PulseClient {
216
224
  configureTracking({
217
225
  url: trackUrl,
218
226
  getContext,
227
+ identityMode: opts.eventIdentityMode,
219
228
  flushIntervalMs: opts.flushIntervalMs,
220
229
  storage: opts.storage,
221
230
  storageKey: `pulse.${slug}.events.v1`,
@@ -300,8 +309,9 @@ export function initPulse(opts: InitPulseOptions): PulseClient {
300
309
  }
301
310
 
302
311
  /**
303
- * AsyncStorage-friendly one-call setup. It preloads only Pulse's three app-scoped
304
- * records, then exposes the same synchronous hot-path API as initPulse.
312
+ * AsyncStorage-friendly one-call setup. It preloads only Pulse's app-scoped config,
313
+ * event, analytics-installation and exposure records, then exposes the same
314
+ * synchronous hot-path API as initPulse.
305
315
  */
306
316
  export async function initPulseAsync(
307
317
  opts: Omit<InitPulseOptions, 'storage'> & { storage: AsyncPulseStorage },
@@ -311,6 +321,7 @@ export async function initPulseAsync(
311
321
  `pulse.${slug}.device-id`,
312
322
  `pulse.${slug}.config.v1`,
313
323
  `pulse.${slug}.events.v1`,
324
+ `pulse.${slug}.events.v1.analytics-installation-id`,
314
325
  `pulse.${slug}.exposures.v1`,
315
326
  DEVICE_ID_KEY,
316
327
  ];
package/src/track.ts CHANGED
@@ -31,9 +31,21 @@ export interface TrackOptions {
31
31
  */
32
32
  url: string;
33
33
 
34
- /** The same context the config uses — identity travels with the batch, once. */
34
+ /**
35
+ * Request context shared with config. `context` identity mode reads deviceId/userId
36
+ * for backwards-compatible experiment metrics; `anonymous_installation` ignores
37
+ * them and reads only platform/appVersion.
38
+ */
35
39
  getContext?: () => ConfigContext;
36
40
 
41
+ /**
42
+ * `context` preserves the original experiment-event contract and sends the context
43
+ * deviceId/userId. `anonymous_installation` is an explicit privacy mode: it ignores
44
+ * both and sends only an SDK-minted app-scoped random UUID under the legacy wire
45
+ * field `deviceId`. Defaults to `context` for backwards compatibility.
46
+ */
47
+ identityMode?: 'context' | 'anonymous_installation';
48
+
37
49
  /** How often a non-empty queue is sent. Default 10s. */
38
50
  flushIntervalMs?: number;
39
51
 
@@ -95,9 +107,12 @@ const DEFAULT_MAX_QUEUE = 500;
95
107
  const DEFAULT_TIMEOUT_MS = 10_000;
96
108
  const DEFAULT_MAX_ATTEMPTS = 10;
97
109
  const DEFAULT_STORAGE_KEY = 'pulse.events.v1';
110
+ const ANALYTICS_INSTALLATION_ID_SUFFIX = '.analytics-installation-id';
111
+ 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;
98
112
 
99
113
  let options: TrackOptions | null = null;
100
114
  let queue: QueuedEvent[] = [];
115
+ let analyticsInstallationId = '';
101
116
  let timer: ReturnType<typeof setInterval> | null = null;
102
117
  let sending = false;
103
118
  let nextAttemptAt = 0;
@@ -116,6 +131,9 @@ export function configureTracking(opts: TrackOptions): void {
116
131
  disposeTracking();
117
132
  options = opts;
118
133
  queue = readQueue(opts);
134
+ analyticsInstallationId = opts.identityMode === 'anonymous_installation'
135
+ ? resolveAnalyticsInstallationId(opts)
136
+ : '';
119
137
  nextAttemptAt = 0;
120
138
  startTimer();
121
139
  lifecycleSubscription = opts.appState?.addEventListener('change', (state) => {
@@ -170,11 +188,12 @@ export async function flushEvents(): Promise<number> {
170
188
  const opts = options;
171
189
  const requestGeneration = trackingGeneration;
172
190
  const ctx = opts.getContext?.() ?? {};
191
+ const anonymousInstallation = opts.identityMode === 'anonymous_installation';
173
192
 
174
- // Without a device id the server cannot put the event in an arm, and an empty id
175
- // would pool every such install into one. Held rather than dropped: the id usually
176
- // arrives a moment after boot.
177
- if (!ctx.deviceId) return 0;
193
+ // The legacy/default mode intentionally preserves the original experiment-event
194
+ // contract. Anonymous campaign events opt into a separate identity explicitly.
195
+ if (!anonymousInstallation && !ctx.deviceId) return 0;
196
+ const requestDeviceId = anonymousInstallation ? analyticsInstallationId : ctx.deviceId;
178
197
 
179
198
  const batch = queue.slice(0, opts.maxBatch ?? DEFAULT_MAX_BATCH);
180
199
  queue = queue.slice(batch.length);
@@ -191,8 +210,10 @@ export async function flushEvents(): Promise<number> {
191
210
  method: 'POST',
192
211
  headers: { 'Content-Type': 'application/json' },
193
212
  body: JSON.stringify({
194
- deviceId: ctx.deviceId,
195
- userId: ctx.userId,
213
+ deviceId: requestDeviceId,
214
+ // Anonymous mode deliberately omits the property rather than serializing an
215
+ // empty identifier. Context mode remains backwards compatible.
216
+ ...(anonymousInstallation ? {} : { userId: ctx.userId }),
196
217
  platform: ctx.platform,
197
218
  appVersion: ctx.appVersion,
198
219
  events: batch.map((e) => ({ id: e.id, event: e.event, time: e.time, props: e.props })),
@@ -257,6 +278,7 @@ export function stopTracking(): void {
257
278
  disposeTracking();
258
279
  options = null;
259
280
  queue = [];
281
+ analyticsInstallationId = '';
260
282
  sending = false;
261
283
  nextAttemptAt = 0;
262
284
  }
@@ -329,6 +351,31 @@ function storageKey(opts: TrackOptions): string {
329
351
  return opts.storageKey?.trim() || DEFAULT_STORAGE_KEY;
330
352
  }
331
353
 
354
+ function analyticsInstallationIdStorageKey(opts: TrackOptions): string {
355
+ return `${storageKey(opts)}${ANALYTICS_INSTALLATION_ID_SUFFIX}`;
356
+ }
357
+
358
+ function resolveAnalyticsInstallationId(opts: TrackOptions): string {
359
+ if (opts.storage) {
360
+ try {
361
+ const stored = opts.storage.getString(analyticsInstallationIdStorageKey(opts))?.trim();
362
+ if (stored && UUID_PATTERN.test(stored)) return stored.toLowerCase();
363
+ } catch {
364
+ // A telemetry identifier can stay memory-only when storage is unavailable.
365
+ }
366
+ }
367
+
368
+ const generated = randomAnalyticsInstallationId();
369
+ if (opts.storage) {
370
+ try {
371
+ opts.storage.set(analyticsInstallationIdStorageKey(opts), generated);
372
+ } catch {
373
+ // A telemetry identifier can stay memory-only when storage is unavailable.
374
+ }
375
+ }
376
+ return generated;
377
+ }
378
+
332
379
  function readQueue(opts: TrackOptions): QueuedEvent[] {
333
380
  if (!opts.storage) return [];
334
381
  try {
@@ -360,3 +407,19 @@ function randomEventId(): string {
360
407
  if (typeof cryptoLike?.randomUUID === 'function') return cryptoLike.randomUUID();
361
408
  return `evt-${Date.now()}-${Math.random().toString(36).slice(2, 14)}`;
362
409
  }
410
+
411
+ function randomAnalyticsInstallationId(): string {
412
+ const cryptoLike = globalThis.crypto as {
413
+ randomUUID?: () => string;
414
+ getRandomValues?: (values: Uint8Array) => Uint8Array;
415
+ } | undefined;
416
+ if (typeof cryptoLike?.randomUUID === 'function') return cryptoLike.randomUUID().toLowerCase();
417
+
418
+ const bytes = new Uint8Array(16);
419
+ if (typeof cryptoLike?.getRandomValues === 'function') cryptoLike.getRandomValues(bytes);
420
+ else for (let i = 0; i < bytes.length; i++) bytes[i] = Math.floor(Math.random() * 256);
421
+ bytes[6] = ((bytes[6] ?? 0) & 0x0f) | 0x40;
422
+ bytes[8] = ((bytes[8] ?? 0) & 0x3f) | 0x80;
423
+ const hex = Array.from(bytes, (value) => value.toString(16).padStart(2, '0')).join('');
424
+ return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`;
425
+ }