@analyticscli/sdk 0.1.0-preview.4 → 0.1.0-preview.6

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/dist/index.d.ts CHANGED
@@ -34,30 +34,24 @@ declare const PURCHASE_SUCCESS_EVENT_CANDIDATES: readonly ["purchase:success"];
34
34
  * Arbitrary key/value payload sent with an event.
35
35
  */
36
36
  type EventProperties = Record<string, unknown>;
37
+ type StorageGetItemCallback = (error?: Error | null, value?: string | null) => void;
38
+ type StorageMutationCallback = (error?: Error | null) => void;
37
39
  type AnalyticsStorageAdapter = {
38
40
  /**
39
41
  * Storage APIs can be sync or async.
40
- * This allows plugging in AsyncStorage (React Native), MMKV wrappers, or custom secure stores.
42
+ * This allows passing AsyncStorage/localStorage directly, or custom adapters.
41
43
  */
42
- getItem: (key: string) => string | null | Promise<string | null>;
43
- setItem: (key: string, value: string) => void | Promise<void>;
44
- removeItem?: (key: string) => void | Promise<void>;
44
+ getItem: (key: string, callback?: StorageGetItemCallback) => string | null | Promise<string | null>;
45
+ setItem: (key: string, value: string, callback?: StorageMutationCallback) => void | Promise<void>;
46
+ removeItem?: (key: string, callback?: StorageMutationCallback) => void | Promise<void>;
45
47
  };
46
48
  type EventContext = {
47
49
  appBuild?: string;
48
50
  osName?: string;
49
51
  osVersion?: string;
50
- deviceModel?: string;
51
- deviceManufacturer?: string;
52
- deviceType?: string;
53
- locale?: string;
54
52
  country?: string;
55
53
  region?: string;
56
54
  city?: string;
57
- timezone?: string;
58
- networkType?: string;
59
- carrier?: string;
60
- installSource?: string;
61
55
  };
62
56
  type OnboardingEventProperties = EventProperties & {
63
57
  isNewUser?: boolean;
@@ -134,88 +128,115 @@ type PaywallTracker = {
134
128
  purchaseFailed: (properties?: PaywallTrackerProperties) => void;
135
129
  purchaseCancel: (properties?: PaywallTrackerProperties) => void;
136
130
  };
131
+ type AnalyticsConsentState = 'granted' | 'denied' | 'unknown';
132
+ type IdentityTrackingMode = 'strict' | 'consent_gated' | 'always_on';
133
+ type SetConsentOptions = {
134
+ /**
135
+ * Whether consent state should be persisted to storage when enabled.
136
+ */
137
+ persist?: boolean;
138
+ };
137
139
  type AnalyticsClientOptions = {
138
140
  /**
139
- * Write key (long API key).
141
+ * Publishable ingest API key.
140
142
  * If omitted, the client becomes a safe no-op until a valid key is provided.
141
143
  */
142
- apiKey?: string;
144
+ apiKey?: string | null;
143
145
  /**
144
146
  * Optional collector override reserved for SDK/internal testing.
145
147
  * Host app integrations should not set this option.
146
148
  */
147
- endpoint?: string;
148
- batchSize?: number;
149
- flushIntervalMs?: number;
150
- maxRetries?: number;
149
+ endpoint?: string | null;
150
+ batchSize?: number | null;
151
+ flushIntervalMs?: number | null;
152
+ maxRetries?: number | null;
151
153
  /**
152
154
  * Enables SDK debug logs (`console.debug`).
153
155
  * Defaults to `false`.
154
156
  *
155
157
  * React Native/Expo recommendation:
156
- * `debug: typeof __DEV__ === 'boolean' ? __DEV__ : false`
158
+ * `debug: __DEV__`
157
159
  */
158
- debug?: boolean;
159
- platform?: string;
160
- appVersion?: string;
161
- context?: EventContext;
160
+ debug?: boolean | null;
162
161
  /**
163
- * Optional custom persistence adapter.
164
- * If omitted, browser storage/cookies are used when available; otherwise in-memory IDs are used.
162
+ * Optional platform hint.
163
+ * React Native/Expo: passing `Platform.OS` directly is supported.
165
164
  */
166
- storage?: AnalyticsStorageAdapter;
167
- anonId?: string;
168
- sessionId?: string;
169
- sessionTimeoutMs?: number;
165
+ platform?: string | null;
170
166
  /**
171
- * Drops duplicate `onboarding:step_view` events for the same step within one session.
172
- * This only affects the dedicated onboarding step-view event, not `screen(...)` or paywall events.
167
+ * Optional app version hint.
168
+ * Accepts nullable runtime values (for example Expo's `nativeApplicationVersion`).
173
169
  */
174
- dedupeOnboardingStepViewsPerSession?: boolean;
170
+ appVersion?: string | null;
175
171
  /**
176
- * Optional cookie domain to persist device/session ids across subdomains.
177
- * Example: `.analyticscli.com`
172
+ * Optional project surface hint to separate product surfaces/channels
173
+ * (for example `landing`, `dashboard`, `app`) from runtime `platform`.
178
174
  */
179
- cookieDomain?: string;
180
- cookieMaxAgeSeconds?: number;
175
+ projectSurface?: string | null;
181
176
  /**
182
- * Enables cookie-backed id/session persistence.
183
- * Defaults to true when `cookieDomain` is provided, otherwise false.
177
+ * Initial event-collection consent state.
178
+ * Defaults to `true` when `apiKey` is present.
179
+ * Set to `false` to enforce explicit `optIn()` / `setConsent(true)` before event collection.
184
180
  */
185
- useCookieStorage?: boolean;
186
- };
187
- type InitOptions = AnalyticsClientOptions;
188
- type InitFromEnvMissingConfigMode = 'noop' | 'throw';
189
- type InitFromEnvMissingConfig = {
190
- missingApiKey: boolean;
191
- searchedApiKeyEnvKeys: string[];
192
- };
193
- type InitFromEnvOptions = Omit<AnalyticsClientOptions, 'apiKey'> & {
181
+ initialConsentGranted?: boolean | null;
182
+ /**
183
+ * Controls identity persistence behavior.
184
+ * - `consent_gated` (default): starts in strict mode and enables persistence only after consent
185
+ * - `always_on`: enables persistence immediately
186
+ * - `strict`: disables persistence and identity linkage
187
+ */
188
+ identityTrackingMode?: IdentityTrackingMode | null;
194
189
  /**
195
- * Optional environment-like object.
196
- * Defaults to `globalThis.process?.env` when available.
190
+ * Boolean shortcut for `identityTrackingMode: 'always_on'`.
191
+ * Kept for host-app ergonomics.
197
192
  */
198
- env?: Record<string, unknown>;
193
+ enableFullTrackingWithoutConsent?: boolean | null;
199
194
  /**
200
- * Explicit api key override.
195
+ * Initial consent state for identity persistence when `identityTrackingMode='consent_gated'`.
196
+ * Defaults to `false`.
197
+ */
198
+ initialFullTrackingConsentGranted?: boolean | null;
199
+ /**
200
+ * Persist full-tracking consent in configured storage.
201
201
  */
202
- apiKey?: string;
202
+ persistConsentState?: boolean | null;
203
203
  /**
204
- * Candidate env keys resolved in order.
204
+ * Storage key for persisted full-tracking consent state.
205
+ * Defaults to `analyticscli:consent:v1`.
205
206
  */
206
- apiKeyEnvKeys?: string[];
207
+ consentStorageKey?: string | null;
208
+ context?: EventContext | null;
207
209
  /**
208
- * How missing config is handled.
209
- * - `noop` (default): returns a safe no-op client
210
- * - `throw`: throws when required config is missing
210
+ * Optional custom persistence adapter used when identity persistence is active.
211
+ */
212
+ storage?: AnalyticsStorageAdapter | null;
213
+ /**
214
+ * Optional explicit anonymous device id when identity persistence is active.
215
+ */
216
+ anonId?: string | null;
217
+ /**
218
+ * Optional explicit session id when identity persistence is active.
219
+ */
220
+ sessionId?: string | null;
221
+ sessionTimeoutMs?: number | null;
222
+ /**
223
+ * Drops duplicate `onboarding:step_view` events for the same step within one session.
224
+ * This only affects the dedicated onboarding step-view event, not `screen(...)` or paywall events.
225
+ * Defaults to `true`. Set to `false` to disable this behavior.
211
226
  */
212
- missingConfigMode?: InitFromEnvMissingConfigMode;
227
+ dedupeOnboardingStepViewsPerSession?: boolean | null;
213
228
  /**
214
- * Optional callback for custom logging when config is missing.
229
+ * Cookie domain for optional cookie-backed persistence.
215
230
  */
216
- onMissingConfig?: (details: InitFromEnvMissingConfig) => void;
231
+ cookieDomain?: string | null;
232
+ cookieMaxAgeSeconds?: number | null;
233
+ /**
234
+ * Enables cookie-backed persistence in browsers.
235
+ */
236
+ useCookieStorage?: boolean | null;
217
237
  };
218
- type InitInput = InitOptions | string;
238
+ type InitOptions = AnalyticsClientOptions;
239
+ type InitInput = InitOptions | string | null | undefined;
219
240
 
220
241
  declare class AnalyticsClient {
221
242
  private readonly apiKey;
@@ -226,10 +247,17 @@ declare class AnalyticsClient {
226
247
  private readonly maxRetries;
227
248
  private readonly debug;
228
249
  private readonly platform;
250
+ private readonly projectSurface;
229
251
  private readonly appVersion;
252
+ private readonly identityTrackingMode;
230
253
  private context;
231
- private readonly storage;
232
- private readonly storageReadsAreAsync;
254
+ private readonly configuredStorage;
255
+ private storage;
256
+ private storageReadsAreAsync;
257
+ private readonly persistConsentState;
258
+ private readonly consentStorageKey;
259
+ private readonly hasExplicitInitialConsent;
260
+ private readonly hasExplicitInitialFullTrackingConsent;
233
261
  private readonly sessionTimeoutMs;
234
262
  private readonly dedupeOnboardingStepViewsPerSession;
235
263
  private readonly runtimeEnv;
@@ -240,6 +268,7 @@ declare class AnalyticsClient {
240
268
  private flushTimer;
241
269
  private isFlushing;
242
270
  private consentGranted;
271
+ private fullTrackingConsentGranted;
243
272
  private userId;
244
273
  private anonId;
245
274
  private sessionId;
@@ -251,17 +280,18 @@ declare class AnalyticsClient {
251
280
  private onboardingStepViewsSeen;
252
281
  constructor(options: AnalyticsClientOptions);
253
282
  /**
254
- * Resolves once any async storage adapter hydration completes.
255
- * Useful in React Native when using async persistence (for example AsyncStorage).
283
+ * Resolves once client initialization work completes.
256
284
  */
257
285
  ready(): Promise<void>;
258
286
  /**
259
287
  * Enables or disables event collection.
260
288
  * When disabled, queued events are dropped immediately.
261
289
  */
262
- setConsent(granted: boolean): void;
263
- optIn(): void;
264
- optOut(): void;
290
+ setConsent(granted: boolean, options?: SetConsentOptions): void;
291
+ optIn(options?: SetConsentOptions): void;
292
+ optOut(options?: SetConsentOptions): void;
293
+ getConsent(): boolean;
294
+ getConsentState(): AnalyticsConsentState;
265
295
  /**
266
296
  * Sets or updates shared event context fields (useful for mobile device/app metadata).
267
297
  */
@@ -277,6 +307,14 @@ declare class AnalyticsClient {
277
307
  * - pass null/undefined/empty string to clear user linkage
278
308
  */
279
309
  setUser(userId: string | null | undefined, traits?: EventProperties): void;
310
+ /**
311
+ * Sets consent specifically for persistent identity tracking.
312
+ * In `consent_gated` mode this toggles strict-vs-full identity behavior while generic event tracking can stay enabled.
313
+ */
314
+ setFullTrackingConsent(granted: boolean, options?: SetConsentOptions): void;
315
+ optInFullTracking(options?: SetConsentOptions): void;
316
+ optOutFullTracking(options?: SetConsentOptions): void;
317
+ isFullTrackingEnabled(): boolean;
280
318
  /**
281
319
  * Clears the current identified user from in-memory SDK state.
282
320
  */
@@ -297,6 +335,8 @@ declare class AnalyticsClient {
297
335
  /**
298
336
  * Creates a scoped paywall tracker that applies shared paywall defaults to every journey event.
299
337
  * Useful when a flow has a stable `source`, `paywallId`, `offering`, or experiment metadata.
338
+ * Reuse the returned tracker for that flow context; creating a new tracker per event resets
339
+ * paywall entry correlation.
300
340
  */
301
341
  createPaywallTracker(defaults: PaywallTrackerDefaults): PaywallTracker;
302
342
  /**
@@ -333,6 +373,10 @@ declare class AnalyticsClient {
333
373
  private enqueue;
334
374
  private scheduleFlush;
335
375
  private sendWithRetry;
376
+ private parsePersistedConsent;
377
+ private readPersistedConsentSync;
378
+ private readPersistedConsentAsync;
379
+ private writePersistedConsent;
336
380
  private startAutoFlush;
337
381
  private ensureDeviceId;
338
382
  private ensureSessionId;
@@ -356,47 +400,93 @@ declare class AnalyticsClient {
356
400
  private hydrateOnboardingStepViewState;
357
401
  private persistOnboardingStepViewState;
358
402
  private parseOnboardingStepViewState;
403
+ private resolveIdentityTrackingModeOption;
404
+ private resolveConfiguredStorage;
405
+ private normalizeCookieMaxAgeSeconds;
406
+ private isFullTrackingActive;
407
+ private applyIdentityTrackingState;
408
+ private getEventUserId;
359
409
  private withEventContext;
360
410
  private normalizeOptions;
361
411
  private readRequiredStringOption;
362
412
  private normalizePlatformOption;
413
+ private normalizeProjectSurfaceOption;
363
414
  private log;
364
415
  private reportMissingApiKey;
365
416
  }
366
417
 
367
- declare const DEFAULT_API_KEY_ENV_KEYS: readonly ["ANALYTICSCLI_WRITE_KEY", "NEXT_PUBLIC_ANALYTICSCLI_WRITE_KEY", "EXPO_PUBLIC_ANALYTICSCLI_WRITE_KEY", "VITE_ANALYTICSCLI_WRITE_KEY"];
418
+ type ContextClientInput = InitInput | AnalyticsClient | null | undefined;
419
+ type AnalyticsContextConsentControls = {
420
+ get: () => boolean;
421
+ getState: () => AnalyticsConsentState;
422
+ set: (granted: boolean, options?: SetConsentOptions) => void;
423
+ optIn: (options?: SetConsentOptions) => void;
424
+ optOut: (options?: SetConsentOptions) => void;
425
+ setFullTracking: (granted: boolean, options?: SetConsentOptions) => void;
426
+ optInFullTracking: (options?: SetConsentOptions) => void;
427
+ optOutFullTracking: (options?: SetConsentOptions) => void;
428
+ isFullTrackingEnabled: () => boolean;
429
+ };
430
+ type AnalyticsContextUserControls = {
431
+ identify: (userId: string, traits?: EventProperties) => void;
432
+ set: (userId: string | null | undefined, traits?: EventProperties) => void;
433
+ clear: () => void;
434
+ };
435
+ type AnalyticsContext = {
436
+ client: AnalyticsClient;
437
+ onboarding: OnboardingTracker;
438
+ paywall: PaywallTracker | null;
439
+ consent: AnalyticsContextConsentControls;
440
+ user: AnalyticsContextUserControls;
441
+ track: (eventName: string, properties?: EventProperties) => void;
442
+ trackOnboardingEvent: (eventName: OnboardingEventName, properties?: OnboardingEventProperties) => void;
443
+ trackOnboardingSurveyResponse: (input: OnboardingSurveyResponseInput, eventName?: OnboardingSurveyEventName) => void;
444
+ trackPaywallEvent: (eventName: PaywallJourneyEventName, properties: PaywallEventProperties) => void;
445
+ screen: (name: string, properties?: EventProperties) => void;
446
+ page: (name: string, properties?: EventProperties) => void;
447
+ feedback: (message: string, rating?: number, properties?: EventProperties) => void;
448
+ setContext: (context: EventContext) => void;
449
+ createOnboarding: (defaults: OnboardingTrackerDefaults) => OnboardingTracker;
450
+ createPaywall: (defaults: PaywallTrackerDefaults) => PaywallTracker;
451
+ configureOnboarding: (defaults: OnboardingTrackerDefaults) => OnboardingTracker;
452
+ configurePaywall: (defaults: PaywallTrackerDefaults) => PaywallTracker;
453
+ ready: () => Promise<void>;
454
+ flush: () => Promise<void>;
455
+ shutdown: () => void;
456
+ };
457
+ type CreateAnalyticsContextOptions = {
458
+ /**
459
+ * Either an existing client instance or standard `init(...)` input.
460
+ */
461
+ client?: ContextClientInput;
462
+ /**
463
+ * Defaults used for the exported `context.onboarding` tracker instance.
464
+ */
465
+ onboarding?: OnboardingTrackerDefaults | null;
466
+ /**
467
+ * Optional defaults used for the exported `context.paywall` tracker instance.
468
+ */
469
+ paywall?: PaywallTrackerDefaults | null;
470
+ };
368
471
  /**
369
- * Minimal host-app bootstrap helper.
370
- * Resolves `apiKey` (required) from explicit options or env-like objects.
472
+ * Host-app friendly SDK context with low boilerplate and rich defaults.
473
+ * Provides pre-wired onboarding + consent/user controls and optional paywall tracker binding.
371
474
  */
372
- declare const initFromEnv: (options?: InitFromEnvOptions) => AnalyticsClient;
475
+ declare const createAnalyticsContext: (options?: CreateAnalyticsContextOptions) => AnalyticsContext;
373
476
 
374
477
  /**
375
478
  * Creates a browser analytics client instance.
376
479
  */
377
480
  declare const init: (input?: InitInput) => AnalyticsClient;
378
481
  /**
379
- * Creates an analytics client and waits for async storage hydration.
380
- * Prefer this in React Native when using async persistence (for example AsyncStorage).
381
- */
382
- declare const initAsync: (input?: InitInput) => Promise<AnalyticsClient>;
383
- declare const BROWSER_API_KEY_ENV_KEYS: readonly ["ANALYTICSCLI_WRITE_KEY", "NEXT_PUBLIC_ANALYTICSCLI_WRITE_KEY", "PUBLIC_ANALYTICSCLI_WRITE_KEY", "VITE_ANALYTICSCLI_WRITE_KEY", "EXPO_PUBLIC_ANALYTICSCLI_WRITE_KEY"];
384
- declare const REACT_NATIVE_API_KEY_ENV_KEYS: readonly ["ANALYTICSCLI_WRITE_KEY", "EXPO_PUBLIC_ANALYTICSCLI_WRITE_KEY"];
385
- type BrowserInitFromEnvOptions = Omit<InitFromEnvOptions, 'apiKeyEnvKeys'> & {
386
- apiKeyEnvKeys?: readonly string[];
387
- };
388
- type ReactNativeInitFromEnvOptions = Omit<InitFromEnvOptions, 'apiKeyEnvKeys'> & {
389
- apiKeyEnvKeys?: readonly string[];
390
- };
391
- /**
392
- * Browser-focused env bootstrap.
393
- * Supports common env prefixes across Next.js, Astro/Vite and Expo web.
482
+ * Creates an analytics client with consent-first defaults.
483
+ * Tracking stays disabled until `optIn()` / `setConsent(true)` is called.
394
484
  */
395
- declare const initBrowserFromEnv: (options?: BrowserInitFromEnvOptions) => AnalyticsClient;
485
+ declare const initConsentFirst: (input?: InitInput) => AnalyticsClient;
396
486
  /**
397
- * React Native-focused env bootstrap.
398
- * Defaults to native-friendly env keys while still allowing explicit overrides.
487
+ * Creates an analytics client and resolves once client initialization completes.
399
488
  */
400
- declare const initReactNativeFromEnv: (options?: ReactNativeInitFromEnvOptions) => AnalyticsClient;
489
+ declare const initAsync: (input?: InitInput) => Promise<AnalyticsClient>;
490
+ declare const initConsentFirstAsync: (input?: InitInput) => Promise<AnalyticsClient>;
401
491
 
402
- export { AnalyticsClient, type AnalyticsClientOptions, type AnalyticsStorageAdapter, BROWSER_API_KEY_ENV_KEYS, type BrowserInitFromEnvOptions, DEFAULT_API_KEY_ENV_KEYS, type EventContext, type EventProperties, type InitFromEnvMissingConfig, type InitFromEnvMissingConfigMode, type InitFromEnvOptions, type InitInput, type InitOptions, ONBOARDING_EVENTS, ONBOARDING_PROGRESS_EVENT_ORDER, ONBOARDING_SCREEN_EVENT_PREFIXES, ONBOARDING_SURVEY_EVENTS, type OnboardingEventName, type OnboardingEventProperties, type OnboardingStepTracker, type OnboardingSurveyAnswerType, type OnboardingSurveyEventName, type OnboardingSurveyResponseInput, type OnboardingTracker, type OnboardingTrackerDefaults, type OnboardingTrackerSurveyInput, PAYWALL_ANCHOR_EVENT_CANDIDATES, PAYWALL_EVENTS, PAYWALL_JOURNEY_EVENT_ORDER, PAYWALL_SKIP_EVENT_CANDIDATES, PURCHASE_EVENTS, PURCHASE_SUCCESS_EVENT_CANDIDATES, type PaywallEventName, type PaywallEventProperties, type PaywallJourneyEventName, type PaywallTracker, type PaywallTrackerDefaults, type PaywallTrackerProperties, type PurchaseEventName, REACT_NATIVE_API_KEY_ENV_KEYS, type ReactNativeInitFromEnvOptions, init, initAsync, initBrowserFromEnv, initFromEnv, initReactNativeFromEnv };
492
+ export { AnalyticsClient, type AnalyticsClientOptions, type AnalyticsConsentState, type AnalyticsContext, type AnalyticsContextConsentControls, type AnalyticsContextUserControls, type AnalyticsStorageAdapter, type CreateAnalyticsContextOptions, type EventContext, type EventProperties, type IdentityTrackingMode, type InitInput, type InitOptions, ONBOARDING_EVENTS, ONBOARDING_PROGRESS_EVENT_ORDER, ONBOARDING_SCREEN_EVENT_PREFIXES, ONBOARDING_SURVEY_EVENTS, type OnboardingEventName, type OnboardingEventProperties, type OnboardingStepTracker, type OnboardingSurveyAnswerType, type OnboardingSurveyEventName, type OnboardingSurveyResponseInput, type OnboardingTracker, type OnboardingTrackerDefaults, type OnboardingTrackerSurveyInput, PAYWALL_ANCHOR_EVENT_CANDIDATES, PAYWALL_EVENTS, PAYWALL_JOURNEY_EVENT_ORDER, PAYWALL_SKIP_EVENT_CANDIDATES, PURCHASE_EVENTS, PURCHASE_SUCCESS_EVENT_CANDIDATES, type PaywallEventName, type PaywallEventProperties, type PaywallJourneyEventName, type PaywallTracker, type PaywallTrackerDefaults, type PaywallTrackerProperties, type PurchaseEventName, type SetConsentOptions, createAnalyticsContext, init, initAsync, initConsentFirst, initConsentFirstAsync };
package/dist/index.js CHANGED
@@ -1,7 +1,5 @@
1
1
  import {
2
2
  AnalyticsClient,
3
- BROWSER_API_KEY_ENV_KEYS,
4
- DEFAULT_API_KEY_ENV_KEYS,
5
3
  ONBOARDING_EVENTS,
6
4
  ONBOARDING_PROGRESS_EVENT_ORDER,
7
5
  ONBOARDING_SCREEN_EVENT_PREFIXES,
@@ -12,17 +10,14 @@ import {
12
10
  PAYWALL_SKIP_EVENT_CANDIDATES,
13
11
  PURCHASE_EVENTS,
14
12
  PURCHASE_SUCCESS_EVENT_CANDIDATES,
15
- REACT_NATIVE_API_KEY_ENV_KEYS,
13
+ createAnalyticsContext,
16
14
  init,
17
15
  initAsync,
18
- initBrowserFromEnv,
19
- initFromEnv,
20
- initReactNativeFromEnv
21
- } from "./chunk-UILQQPVJ.js";
16
+ initConsentFirst,
17
+ initConsentFirstAsync
18
+ } from "./chunk-RGEYDN6A.js";
22
19
  export {
23
20
  AnalyticsClient,
24
- BROWSER_API_KEY_ENV_KEYS,
25
- DEFAULT_API_KEY_ENV_KEYS,
26
21
  ONBOARDING_EVENTS,
27
22
  ONBOARDING_PROGRESS_EVENT_ORDER,
28
23
  ONBOARDING_SCREEN_EVENT_PREFIXES,
@@ -33,10 +28,9 @@ export {
33
28
  PAYWALL_SKIP_EVENT_CANDIDATES,
34
29
  PURCHASE_EVENTS,
35
30
  PURCHASE_SUCCESS_EVENT_CANDIDATES,
36
- REACT_NATIVE_API_KEY_ENV_KEYS,
31
+ createAnalyticsContext,
37
32
  init,
38
33
  initAsync,
39
- initBrowserFromEnv,
40
- initFromEnv,
41
- initReactNativeFromEnv
34
+ initConsentFirst,
35
+ initConsentFirstAsync
42
36
  };