@amplitude/analytics-react-native 0.5.1 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/lib/commonjs/config.js +6 -2
  2. package/lib/commonjs/config.js.map +1 -1
  3. package/lib/commonjs/plugins/context.js +0 -17
  4. package/lib/commonjs/plugins/context.js.map +1 -1
  5. package/lib/commonjs/react-native-client.js +132 -19
  6. package/lib/commonjs/react-native-client.js.map +1 -1
  7. package/lib/commonjs/version.js +1 -1
  8. package/lib/commonjs/version.js.map +1 -1
  9. package/lib/module/config.js +6 -2
  10. package/lib/module/config.js.map +1 -1
  11. package/lib/module/plugins/context.js +0 -17
  12. package/lib/module/plugins/context.js.map +1 -1
  13. package/lib/module/react-native-client.js +128 -19
  14. package/lib/module/react-native-client.js.map +1 -1
  15. package/lib/module/version.js +1 -1
  16. package/lib/module/version.js.map +1 -1
  17. package/lib/typescript/__mocks__/@react-native-async-storage/async-storage.d.ts +3 -0
  18. package/lib/typescript/__mocks__/@react-native-async-storage/async-storage.d.ts.map +1 -0
  19. package/lib/typescript/{config.d.ts → src/config.d.ts} +3 -0
  20. package/lib/typescript/src/config.d.ts.map +1 -0
  21. package/lib/typescript/{cookie-migration → src/cookie-migration}/index.d.ts +0 -0
  22. package/lib/typescript/src/cookie-migration/index.d.ts.map +1 -0
  23. package/lib/typescript/{index.d.ts → src/index.d.ts} +0 -0
  24. package/lib/typescript/src/index.d.ts.map +1 -0
  25. package/lib/typescript/{plugins → src/plugins}/context.d.ts +0 -1
  26. package/lib/typescript/src/plugins/context.d.ts.map +1 -0
  27. package/lib/typescript/{react-native-client.d.ts → src/react-native-client.d.ts} +13 -2
  28. package/lib/typescript/src/react-native-client.d.ts.map +1 -0
  29. package/lib/typescript/{storage → src/storage}/local-storage.d.ts +0 -0
  30. package/lib/typescript/src/storage/local-storage.d.ts.map +1 -0
  31. package/lib/typescript/{utils → src/utils}/platform.d.ts +0 -0
  32. package/lib/typescript/src/utils/platform.d.ts.map +1 -0
  33. package/lib/typescript/src/version.d.ts +2 -0
  34. package/lib/typescript/src/version.d.ts.map +1 -0
  35. package/package.json +5 -5
  36. package/src/config.ts +3 -0
  37. package/src/plugins/context.ts +0 -15
  38. package/src/react-native-client.ts +113 -17
  39. package/src/version.ts +1 -1
  40. package/lib/typescript/config.d.ts.map +0 -1
  41. package/lib/typescript/cookie-migration/index.d.ts.map +0 -1
  42. package/lib/typescript/index.d.ts.map +0 -1
  43. package/lib/typescript/plugins/context.d.ts.map +0 -1
  44. package/lib/typescript/react-native-client.d.ts.map +0 -1
  45. package/lib/typescript/storage/local-storage.d.ts.map +0 -1
  46. package/lib/typescript/utils/platform.d.ts.map +0 -1
  47. package/lib/typescript/version.d.ts +0 -2
  48. package/lib/typescript/version.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"names":["Config","MemoryStorage","UUID","CookieStorage","getCookieName","getQueryParams","SessionManager","FetchTransport","LocalStorage","getDefaultConfig","cookieStorage","trackingOptions","adid","carrier","deviceManufacturer","deviceModel","ipAddress","language","osName","osVersion","platform","cookieExpiration","cookieSameSite","cookieSecure","disableCookies","domain","sessionManager","sessionTimeout","storageProvider","transportProvider","ReactNativeConfig","constructor","apiKey","userId","options","defaultConfig","flushIntervalMillis","flushMaxRetries","flushQueueSize","appVersion","deviceId","lastEventTime","optOut","Boolean","partnerId","sessionId","getDeviceId","setDeviceId","getUserId","setUserId","getSessionId","setSessionId","getOptOut","setOptOut","getLastEventTime","setLastEventTime","useReactNativeConfig","getTopLevelDomain","createCookieStorage","cookieName","cookies","get","queryParams","load","createDeviceId","createEventsStorage","overrides","baseConfig","isEnabled","createFlexibleStorage","storage","expirationDays","sameSite","secure","hasStorageProviderProperty","Object","prototype","hasOwnProperty","call","undefined","idFromCookies","idFromOptions","idFromQueryParams","url","location","host","hostname","parts","split","levels","storageKey","i","length","push","slice","join","set","value","remove"],"sources":["config.ts"],"sourcesContent":["import {\n Event,\n ReactNativeOptions,\n ReactNativeConfig as IReactNativeConfig,\n Storage,\n ReactNativeTrackingOptions,\n UserSession,\n SessionManager as ISessionManager,\n} from '@amplitude/analytics-types';\nimport { Config, MemoryStorage, UUID } from '@amplitude/analytics-core';\nimport {\n CookieStorage,\n getCookieName,\n getQueryParams,\n SessionManager,\n FetchTransport,\n} from '@amplitude/analytics-client-common';\n\nimport { LocalStorage } from './storage/local-storage';\n\nexport const getDefaultConfig = () => {\n const cookieStorage = new MemoryStorage<UserSession>();\n const trackingOptions: Required<ReactNativeTrackingOptions> = {\n adid: true,\n carrier: true,\n deviceManufacturer: true,\n deviceModel: true,\n ipAddress: true,\n language: true,\n osName: true,\n osVersion: true,\n platform: true,\n };\n return {\n cookieExpiration: 365,\n cookieSameSite: 'Lax',\n cookieSecure: false,\n cookieStorage,\n disableCookies: false,\n domain: '',\n sessionManager: new SessionManager(cookieStorage, ''),\n sessionTimeout: 30 * 60 * 1000,\n storageProvider: new MemoryStorage<Event[]>(),\n trackingOptions,\n transportProvider: new FetchTransport(),\n };\n};\n\nexport class ReactNativeConfig extends Config implements IReactNativeConfig {\n appVersion?: string;\n cookieExpiration: number;\n cookieSameSite: string;\n cookieSecure: boolean;\n cookieStorage: Storage<UserSession>;\n disableCookies: boolean;\n domain: string;\n partnerId?: string;\n sessionTimeout: number;\n trackingOptions: ReactNativeTrackingOptions;\n sessionManager: ISessionManager;\n\n constructor(apiKey: string, userId?: string, options?: ReactNativeOptions) {\n const defaultConfig = getDefaultConfig();\n super({\n flushIntervalMillis: 1000,\n flushMaxRetries: 5,\n flushQueueSize: 30,\n ...options,\n apiKey,\n storageProvider: options?.storageProvider ?? defaultConfig.storageProvider,\n transportProvider: options?.transportProvider ?? defaultConfig.transportProvider,\n });\n this.cookieStorage = options?.cookieStorage ?? defaultConfig.cookieStorage;\n this.sessionManager = options?.sessionManager ?? defaultConfig.sessionManager;\n this.sessionTimeout = options?.sessionTimeout ?? defaultConfig.sessionTimeout;\n\n this.appVersion = options?.appVersion;\n this.cookieExpiration = options?.cookieExpiration ?? defaultConfig.cookieExpiration;\n this.cookieSameSite = options?.cookieSameSite ?? defaultConfig.cookieSameSite;\n this.cookieSecure = options?.cookieSecure ?? defaultConfig.cookieSecure;\n this.deviceId = options?.deviceId;\n this.disableCookies = options?.disableCookies ?? defaultConfig.disableCookies;\n this.domain = options?.domain ?? defaultConfig.domain;\n this.lastEventTime = this.lastEventTime ?? options?.lastEventTime;\n this.optOut = Boolean(options?.optOut);\n this.partnerId = options?.partnerId;\n this.sessionId = options?.sessionId;\n this.trackingOptions = options?.trackingOptions ?? defaultConfig.trackingOptions;\n this.userId = userId;\n }\n\n get deviceId() {\n return this.sessionManager.getDeviceId();\n }\n\n set deviceId(deviceId: string | undefined) {\n this.sessionManager.setDeviceId(deviceId);\n }\n\n get userId() {\n return this.sessionManager.getUserId();\n }\n\n set userId(userId: string | undefined) {\n this.sessionManager.setUserId(userId);\n }\n\n get sessionId() {\n return this.sessionManager.getSessionId();\n }\n\n set sessionId(sessionId: number | undefined) {\n this.sessionManager.setSessionId(sessionId);\n }\n\n get optOut() {\n return this.sessionManager.getOptOut();\n }\n\n set optOut(optOut: boolean) {\n this.sessionManager?.setOptOut(Boolean(optOut));\n }\n\n get lastEventTime() {\n return this.sessionManager.getLastEventTime();\n }\n\n set lastEventTime(lastEventTime: number | undefined) {\n this.sessionManager.setLastEventTime(lastEventTime);\n }\n}\n\nexport const useReactNativeConfig = async (\n apiKey: string,\n userId?: string,\n options?: ReactNativeOptions,\n): Promise<IReactNativeConfig> => {\n const defaultConfig = getDefaultConfig();\n const domain = options?.domain ?? (await getTopLevelDomain());\n const cookieStorage = await createCookieStorage({ ...options, domain });\n const cookieName = getCookieName(apiKey);\n const cookies = await cookieStorage.get(cookieName);\n const queryParams = getQueryParams();\n const sessionManager = await new SessionManager(cookieStorage, apiKey).load();\n\n return new ReactNativeConfig(apiKey, userId ?? cookies?.userId, {\n ...options,\n cookieStorage,\n sessionManager,\n deviceId: createDeviceId(cookies?.deviceId, options?.deviceId, queryParams.deviceId),\n domain,\n optOut: options?.optOut ?? Boolean(cookies?.optOut),\n sessionId: (await cookieStorage.get(cookieName))?.sessionId ?? options?.sessionId,\n storageProvider: await createEventsStorage(options),\n trackingOptions: { ...defaultConfig.trackingOptions, ...options?.trackingOptions },\n transportProvider: options?.transportProvider ?? new FetchTransport(),\n });\n};\n\nexport const createCookieStorage = async (\n overrides?: ReactNativeOptions,\n baseConfig = getDefaultConfig(),\n): Promise<Storage<UserSession>> => {\n const options = { ...baseConfig, ...overrides };\n const cookieStorage = overrides?.cookieStorage;\n if (!cookieStorage || !(await cookieStorage.isEnabled())) {\n return createFlexibleStorage<UserSession>(options);\n }\n return cookieStorage;\n};\n\nexport const createFlexibleStorage = async <T>(options: ReactNativeOptions): Promise<Storage<T>> => {\n let storage: Storage<T> = new CookieStorage({\n domain: options.domain,\n expirationDays: options.cookieExpiration,\n sameSite: options.cookieSameSite,\n secure: options.cookieSecure,\n });\n if (options.disableCookies || !(await storage.isEnabled())) {\n storage = new LocalStorage();\n if (!(await storage.isEnabled())) {\n storage = new MemoryStorage();\n }\n }\n return storage;\n};\n\nexport const createEventsStorage = async (overrides?: ReactNativeOptions): Promise<Storage<Event[]> | undefined> => {\n const hasStorageProviderProperty = overrides && Object.prototype.hasOwnProperty.call(overrides, 'storageProvider');\n // If storageProperty is explicitly undefined like `{ storageProperty: undefined }`\n // then storageProvider is undefined\n // If storageProvider is implicitly undefined like `{ }`\n // then storageProvider is LocalStorage\n // Otherwise storageProvider is overriden\n if (!hasStorageProviderProperty || overrides.storageProvider) {\n for (const storage of [overrides?.storageProvider, new LocalStorage<Event[]>()]) {\n if (storage && (await storage.isEnabled())) {\n return storage;\n }\n }\n }\n return undefined;\n};\n\nexport const createDeviceId = (idFromCookies?: string, idFromOptions?: string, idFromQueryParams?: string) => {\n return idFromOptions || idFromQueryParams || idFromCookies || UUID();\n};\n\nexport const getTopLevelDomain = async (url?: string) => {\n if (!(await new CookieStorage<string>().isEnabled()) || (!url && typeof location === 'undefined')) {\n return '';\n }\n\n const host = url ?? location.hostname;\n const parts = host.split('.');\n const levels = [];\n const storageKey = 'AMP_TLDTEST';\n\n for (let i = parts.length - 2; i >= 0; --i) {\n levels.push(parts.slice(i).join('.'));\n }\n for (let i = 0; i < levels.length; i++) {\n const domain = levels[i];\n const options = { domain: '.' + domain };\n const storage = new CookieStorage<number>(options);\n await storage.set(storageKey, 1);\n const value = await storage.get(storageKey);\n if (value) {\n await storage.remove(storageKey);\n return '.' + domain;\n }\n }\n\n return '';\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["Config","MemoryStorage","UUID","CookieStorage","getCookieName","getQueryParams","SessionManager","FetchTransport","LocalStorage","getDefaultConfig","cookieStorage","trackingOptions","adid","carrier","deviceManufacturer","deviceModel","ipAddress","language","osName","osVersion","platform","cookieExpiration","cookieSameSite","cookieSecure","disableCookies","domain","sessionManager","sessionTimeout","storageProvider","transportProvider","trackingSessionEvents","ReactNativeConfig","constructor","apiKey","userId","options","defaultConfig","flushIntervalMillis","flushMaxRetries","flushQueueSize","appVersion","deviceId","lastEventTime","optOut","Boolean","partnerId","sessionId","getDeviceId","setDeviceId","getUserId","setUserId","getSessionId","setSessionId","getOptOut","setOptOut","getLastEventTime","setLastEventTime","useReactNativeConfig","getTopLevelDomain","createCookieStorage","cookieName","cookies","get","queryParams","load","createDeviceId","createEventsStorage","overrides","baseConfig","isEnabled","createFlexibleStorage","storage","expirationDays","sameSite","secure","hasStorageProviderProperty","Object","prototype","hasOwnProperty","call","undefined","idFromCookies","idFromOptions","idFromQueryParams","url","location","host","hostname","parts","split","levels","storageKey","i","length","push","slice","join","set","value","remove"],"sources":["config.ts"],"sourcesContent":["import {\n Event,\n ReactNativeOptions,\n ReactNativeConfig as IReactNativeConfig,\n Storage,\n ReactNativeTrackingOptions,\n UserSession,\n SessionManager as ISessionManager,\n} from '@amplitude/analytics-types';\nimport { Config, MemoryStorage, UUID } from '@amplitude/analytics-core';\nimport {\n CookieStorage,\n getCookieName,\n getQueryParams,\n SessionManager,\n FetchTransport,\n} from '@amplitude/analytics-client-common';\n\nimport { LocalStorage } from './storage/local-storage';\n\nexport const getDefaultConfig = () => {\n const cookieStorage = new MemoryStorage<UserSession>();\n const trackingOptions: Required<ReactNativeTrackingOptions> = {\n adid: true,\n carrier: true,\n deviceManufacturer: true,\n deviceModel: true,\n ipAddress: true,\n language: true,\n osName: true,\n osVersion: true,\n platform: true,\n };\n return {\n cookieExpiration: 365,\n cookieSameSite: 'Lax',\n cookieSecure: false,\n cookieStorage,\n disableCookies: false,\n domain: '',\n sessionManager: new SessionManager(cookieStorage, ''),\n sessionTimeout: 30 * 60 * 1000,\n storageProvider: new MemoryStorage<Event[]>(),\n trackingOptions,\n transportProvider: new FetchTransport(),\n trackingSessionEvents: false,\n };\n};\n\nexport class ReactNativeConfig extends Config implements IReactNativeConfig {\n appVersion?: string;\n cookieExpiration: number;\n cookieSameSite: string;\n cookieSecure: boolean;\n cookieStorage: Storage<UserSession>;\n disableCookies: boolean;\n domain: string;\n partnerId?: string;\n sessionTimeout: number;\n trackingOptions: ReactNativeTrackingOptions;\n sessionManager: ISessionManager;\n trackingSessionEvents: boolean;\n\n constructor(apiKey: string, userId?: string, options?: ReactNativeOptions) {\n const defaultConfig = getDefaultConfig();\n super({\n flushIntervalMillis: 1000,\n flushMaxRetries: 5,\n flushQueueSize: 30,\n ...options,\n apiKey,\n storageProvider: options?.storageProvider ?? defaultConfig.storageProvider,\n transportProvider: options?.transportProvider ?? defaultConfig.transportProvider,\n });\n this.cookieStorage = options?.cookieStorage ?? defaultConfig.cookieStorage;\n this.sessionManager = options?.sessionManager ?? defaultConfig.sessionManager;\n this.sessionTimeout = options?.sessionTimeout ?? defaultConfig.sessionTimeout;\n\n this.appVersion = options?.appVersion;\n this.cookieExpiration = options?.cookieExpiration ?? defaultConfig.cookieExpiration;\n this.cookieSameSite = options?.cookieSameSite ?? defaultConfig.cookieSameSite;\n this.cookieSecure = options?.cookieSecure ?? defaultConfig.cookieSecure;\n this.deviceId = options?.deviceId;\n this.disableCookies = options?.disableCookies ?? defaultConfig.disableCookies;\n this.domain = options?.domain ?? defaultConfig.domain;\n this.lastEventTime = this.lastEventTime ?? options?.lastEventTime;\n this.optOut = Boolean(options?.optOut);\n this.partnerId = options?.partnerId;\n this.sessionId = options?.sessionId;\n this.trackingOptions = options?.trackingOptions ?? defaultConfig.trackingOptions;\n this.userId = userId;\n this.trackingSessionEvents = options?.trackingSessionEvents ?? defaultConfig.trackingSessionEvents;\n }\n\n get deviceId() {\n return this.sessionManager.getDeviceId();\n }\n\n set deviceId(deviceId: string | undefined) {\n this.sessionManager.setDeviceId(deviceId);\n }\n\n get userId() {\n return this.sessionManager.getUserId();\n }\n\n set userId(userId: string | undefined) {\n this.sessionManager.setUserId(userId);\n }\n\n get sessionId() {\n return this.sessionManager.getSessionId();\n }\n\n set sessionId(sessionId: number | undefined) {\n this.sessionManager.setSessionId(sessionId);\n }\n\n get optOut() {\n return this.sessionManager.getOptOut();\n }\n\n set optOut(optOut: boolean) {\n this.sessionManager?.setOptOut(Boolean(optOut));\n }\n\n get lastEventTime() {\n return this.sessionManager.getLastEventTime();\n }\n\n set lastEventTime(lastEventTime: number | undefined) {\n this.sessionManager.setLastEventTime(lastEventTime);\n }\n}\n\nexport const useReactNativeConfig = async (\n apiKey: string,\n userId?: string,\n options?: ReactNativeOptions,\n): Promise<IReactNativeConfig> => {\n const defaultConfig = getDefaultConfig();\n const domain = options?.domain ?? (await getTopLevelDomain());\n const cookieStorage = await createCookieStorage({ ...options, domain });\n const cookieName = getCookieName(apiKey);\n const cookies = await cookieStorage.get(cookieName);\n const queryParams = getQueryParams();\n const sessionManager = await new SessionManager(cookieStorage, apiKey).load();\n\n return new ReactNativeConfig(apiKey, userId ?? cookies?.userId, {\n ...options,\n cookieStorage,\n sessionManager,\n deviceId: createDeviceId(cookies?.deviceId, options?.deviceId, queryParams.deviceId),\n domain,\n optOut: options?.optOut ?? Boolean(cookies?.optOut),\n sessionId: (await cookieStorage.get(cookieName))?.sessionId ?? options?.sessionId,\n storageProvider: await createEventsStorage(options),\n trackingOptions: { ...defaultConfig.trackingOptions, ...options?.trackingOptions },\n transportProvider: options?.transportProvider ?? new FetchTransport(),\n });\n};\n\nexport const createCookieStorage = async (\n overrides?: ReactNativeOptions,\n baseConfig = getDefaultConfig(),\n): Promise<Storage<UserSession>> => {\n const options = { ...baseConfig, ...overrides };\n const cookieStorage = overrides?.cookieStorage;\n if (!cookieStorage || !(await cookieStorage.isEnabled())) {\n return createFlexibleStorage<UserSession>(options);\n }\n return cookieStorage;\n};\n\nexport const createFlexibleStorage = async <T>(options: ReactNativeOptions): Promise<Storage<T>> => {\n let storage: Storage<T> = new CookieStorage({\n domain: options.domain,\n expirationDays: options.cookieExpiration,\n sameSite: options.cookieSameSite,\n secure: options.cookieSecure,\n });\n if (options.disableCookies || !(await storage.isEnabled())) {\n storage = new LocalStorage();\n if (!(await storage.isEnabled())) {\n storage = new MemoryStorage();\n }\n }\n return storage;\n};\n\nexport const createEventsStorage = async (overrides?: ReactNativeOptions): Promise<Storage<Event[]> | undefined> => {\n const hasStorageProviderProperty = overrides && Object.prototype.hasOwnProperty.call(overrides, 'storageProvider');\n // If storageProperty is explicitly undefined like `{ storageProperty: undefined }`\n // then storageProvider is undefined\n // If storageProvider is implicitly undefined like `{ }`\n // then storageProvider is LocalStorage\n // Otherwise storageProvider is overriden\n if (!hasStorageProviderProperty || overrides.storageProvider) {\n for (const storage of [overrides?.storageProvider, new LocalStorage<Event[]>()]) {\n if (storage && (await storage.isEnabled())) {\n return storage;\n }\n }\n }\n return undefined;\n};\n\nexport const createDeviceId = (idFromCookies?: string, idFromOptions?: string, idFromQueryParams?: string) => {\n return idFromOptions || idFromQueryParams || idFromCookies || UUID();\n};\n\nexport const getTopLevelDomain = async (url?: string) => {\n if (!(await new CookieStorage<string>().isEnabled()) || (!url && typeof location === 'undefined')) {\n return '';\n }\n\n const host = url ?? location.hostname;\n const parts = host.split('.');\n const levels = [];\n const storageKey = 'AMP_TLDTEST';\n\n for (let i = parts.length - 2; i >= 0; --i) {\n levels.push(parts.slice(i).join('.'));\n }\n for (let i = 0; i < levels.length; i++) {\n const domain = levels[i];\n const options = { domain: '.' + domain };\n const storage = new CookieStorage<number>(options);\n await storage.set(storageKey, 1);\n const value = await storage.get(storageKey);\n if (value) {\n await storage.remove(storageKey);\n return '.' + domain;\n }\n }\n\n return '';\n};\n"],"mappings":"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"}
@@ -45,17 +45,6 @@ export class Context {
45
45
  async execute(context) {
46
46
  var _this$nativeModule;
47
47
 
48
- /**
49
- * Manages user session triggered by new events
50
- */
51
- if (!this.isSessionValid()) {
52
- // Creates new session
53
- this.config.sessionId = Date.now();
54
- } // else use previously creates session
55
- // Updates last event time to extend time-based session
56
-
57
-
58
- this.config.lastEventTime = Date.now();
59
48
  const time = new Date().getTime();
60
49
  const nativeContext = await ((_this$nativeModule = this.nativeModule) === null || _this$nativeModule === void 0 ? void 0 : _this$nativeModule.getApplicationContext());
61
50
  const appVersion = (nativeContext === null || nativeContext === void 0 ? void 0 : nativeContext.version) || this.config.appVersion;
@@ -118,11 +107,5 @@ export class Context {
118
107
  return event;
119
108
  }
120
109
 
121
- isSessionValid() {
122
- const lastEventTime = this.config.lastEventTime || Date.now();
123
- const timeSinceLastEvent = Date.now() - lastEventTime;
124
- return timeSinceLastEvent < this.config.sessionTimeout;
125
- }
126
-
127
110
  }
128
111
  //# sourceMappingURL=context.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["PluginType","UAParser","UUID","getLanguage","VERSION","NativeModules","BROWSER_PLATFORM","IP_ADDRESS","Context","constructor","BEFORE","AmplitudeReactNative","agent","navigator","userAgent","uaResult","getResult","setup","config","Promise","resolve","undefined","execute","context","isSessionValid","sessionId","Date","now","lastEventTime","time","getTime","nativeContext","nativeModule","getApplicationContext","appVersion","version","platform","osName","browser","name","osVersion","deviceVendor","deviceManufacturer","device","vendor","deviceModel","model","os","language","carrier","adid","event","user_id","userId","device_id","deviceId","session_id","app_version","trackingOptions","os_name","os_version","device_manufacturer","device_model","ipAddress","ip","insert_id","partner_id","partnerId","plan","ingestionMetadata","ingestion_metadata","source_name","sourceName","source_version","sourceVersion","event_id","eventId","library","timeSinceLastEvent","sessionTimeout"],"sources":["context.ts"],"sourcesContent":["import { BeforePlugin, ReactNativeConfig, Event, PluginType } from '@amplitude/analytics-types';\nimport UAParser from '@amplitude/ua-parser-js';\nimport { UUID } from '@amplitude/analytics-core';\nimport { getLanguage } from '@amplitude/analytics-client-common';\nimport { VERSION } from '../version';\nimport { NativeModules } from 'react-native';\n\nconst BROWSER_PLATFORM = 'Web';\nconst IP_ADDRESS = '$remote';\n\ntype NativeContext = {\n version: string;\n platform: string;\n language: string;\n osName: string;\n osVersion: string;\n deviceBrand: string;\n deviceManufacturer: string;\n deviceModel: string;\n carrier: string;\n adid: string;\n};\n\nexport interface AmplitudeReactNative {\n getApplicationContext(): Promise<NativeContext>;\n}\n\nexport class Context implements BeforePlugin {\n name = 'context';\n type = PluginType.BEFORE as const;\n\n // this.config is defined in setup() which will always be called first\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n config: ReactNativeConfig;\n eventId = 0;\n uaResult: UAParser.IResult;\n nativeModule: AmplitudeReactNative | undefined = NativeModules.AmplitudeReactNative as\n | AmplitudeReactNative\n | undefined;\n library = `amplitude-react-native-ts/${VERSION}`;\n\n constructor() {\n let agent: string | undefined;\n /* istanbul ignore else */\n if (typeof navigator !== 'undefined') {\n agent = navigator.userAgent;\n }\n this.uaResult = new UAParser(agent).getResult();\n }\n\n setup(config: ReactNativeConfig): Promise<undefined> {\n this.config = config;\n return Promise.resolve(undefined);\n }\n\n async execute(context: Event): Promise<Event> {\n /**\n * Manages user session triggered by new events\n */\n if (!this.isSessionValid()) {\n // Creates new session\n this.config.sessionId = Date.now();\n } // else use previously creates session\n // Updates last event time to extend time-based session\n this.config.lastEventTime = Date.now();\n const time = new Date().getTime();\n const nativeContext = await this.nativeModule?.getApplicationContext();\n const appVersion = nativeContext?.version || this.config.appVersion;\n const platform = nativeContext?.platform || BROWSER_PLATFORM;\n const osName = nativeContext?.osName || this.uaResult.browser.name;\n const osVersion = nativeContext?.osVersion || this.uaResult.browser.version;\n const deviceVendor = nativeContext?.deviceManufacturer || this.uaResult.device.vendor;\n const deviceModel = nativeContext?.deviceModel || this.uaResult.device.model || this.uaResult.os.name;\n const language = nativeContext?.language || getLanguage();\n const carrier = nativeContext?.carrier;\n const adid = nativeContext?.adid;\n\n const event: Event = {\n user_id: this.config.userId,\n device_id: this.config.deviceId,\n session_id: this.config.sessionId,\n time,\n ...(this.config.appVersion && { app_version: appVersion }),\n ...(this.config.trackingOptions.platform && { platform: platform }),\n ...(this.config.trackingOptions.osName && { os_name: osName }),\n ...(this.config.trackingOptions.osVersion && { os_version: osVersion }),\n ...(this.config.trackingOptions.deviceManufacturer && { device_manufacturer: deviceVendor }),\n ...(this.config.trackingOptions.deviceModel && { device_model: deviceModel }),\n ...(this.config.trackingOptions.language && { language: language }),\n ...(this.config.trackingOptions.carrier && { carrier: carrier }),\n ...(this.config.trackingOptions.ipAddress && { ip: IP_ADDRESS }),\n ...(this.config.trackingOptions.adid && { adid: adid }),\n insert_id: UUID(),\n partner_id: this.config.partnerId,\n plan: this.config.plan,\n ...(this.config.ingestionMetadata && {\n ingestion_metadata: {\n source_name: this.config.ingestionMetadata.sourceName,\n source_version: this.config.ingestionMetadata.sourceVersion,\n },\n }),\n ...context,\n event_id: this.eventId++,\n library: this.library,\n };\n return event;\n }\n\n isSessionValid() {\n const lastEventTime = this.config.lastEventTime || Date.now();\n const timeSinceLastEvent = Date.now() - lastEventTime;\n return timeSinceLastEvent < this.config.sessionTimeout;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["PluginType","UAParser","UUID","getLanguage","VERSION","NativeModules","BROWSER_PLATFORM","IP_ADDRESS","Context","constructor","BEFORE","AmplitudeReactNative","agent","navigator","userAgent","uaResult","getResult","setup","config","Promise","resolve","undefined","execute","context","time","Date","getTime","nativeContext","nativeModule","getApplicationContext","appVersion","version","platform","osName","browser","name","osVersion","deviceVendor","deviceManufacturer","device","vendor","deviceModel","model","os","language","carrier","adid","event","user_id","userId","device_id","deviceId","session_id","sessionId","app_version","trackingOptions","os_name","os_version","device_manufacturer","device_model","ipAddress","ip","insert_id","partner_id","partnerId","plan","ingestionMetadata","ingestion_metadata","source_name","sourceName","source_version","sourceVersion","event_id","eventId","library"],"sources":["context.ts"],"sourcesContent":["import { BeforePlugin, ReactNativeConfig, Event, PluginType } from '@amplitude/analytics-types';\nimport UAParser from '@amplitude/ua-parser-js';\nimport { UUID } from '@amplitude/analytics-core';\nimport { getLanguage } from '@amplitude/analytics-client-common';\nimport { VERSION } from '../version';\nimport { NativeModules } from 'react-native';\n\nconst BROWSER_PLATFORM = 'Web';\nconst IP_ADDRESS = '$remote';\n\ntype NativeContext = {\n version: string;\n platform: string;\n language: string;\n osName: string;\n osVersion: string;\n deviceBrand: string;\n deviceManufacturer: string;\n deviceModel: string;\n carrier: string;\n adid: string;\n};\n\nexport interface AmplitudeReactNative {\n getApplicationContext(): Promise<NativeContext>;\n}\n\nexport class Context implements BeforePlugin {\n name = 'context';\n type = PluginType.BEFORE as const;\n\n // this.config is defined in setup() which will always be called first\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n config: ReactNativeConfig;\n eventId = 0;\n uaResult: UAParser.IResult;\n nativeModule: AmplitudeReactNative | undefined = NativeModules.AmplitudeReactNative as\n | AmplitudeReactNative\n | undefined;\n library = `amplitude-react-native-ts/${VERSION}`;\n\n constructor() {\n let agent: string | undefined;\n /* istanbul ignore else */\n if (typeof navigator !== 'undefined') {\n agent = navigator.userAgent;\n }\n this.uaResult = new UAParser(agent).getResult();\n }\n\n setup(config: ReactNativeConfig): Promise<undefined> {\n this.config = config;\n return Promise.resolve(undefined);\n }\n\n async execute(context: Event): Promise<Event> {\n const time = new Date().getTime();\n const nativeContext = await this.nativeModule?.getApplicationContext();\n const appVersion = nativeContext?.version || this.config.appVersion;\n const platform = nativeContext?.platform || BROWSER_PLATFORM;\n const osName = nativeContext?.osName || this.uaResult.browser.name;\n const osVersion = nativeContext?.osVersion || this.uaResult.browser.version;\n const deviceVendor = nativeContext?.deviceManufacturer || this.uaResult.device.vendor;\n const deviceModel = nativeContext?.deviceModel || this.uaResult.device.model || this.uaResult.os.name;\n const language = nativeContext?.language || getLanguage();\n const carrier = nativeContext?.carrier;\n const adid = nativeContext?.adid;\n\n const event: Event = {\n user_id: this.config.userId,\n device_id: this.config.deviceId,\n session_id: this.config.sessionId,\n time,\n ...(this.config.appVersion && { app_version: appVersion }),\n ...(this.config.trackingOptions.platform && { platform: platform }),\n ...(this.config.trackingOptions.osName && { os_name: osName }),\n ...(this.config.trackingOptions.osVersion && { os_version: osVersion }),\n ...(this.config.trackingOptions.deviceManufacturer && { device_manufacturer: deviceVendor }),\n ...(this.config.trackingOptions.deviceModel && { device_model: deviceModel }),\n ...(this.config.trackingOptions.language && { language: language }),\n ...(this.config.trackingOptions.carrier && { carrier: carrier }),\n ...(this.config.trackingOptions.ipAddress && { ip: IP_ADDRESS }),\n ...(this.config.trackingOptions.adid && { adid: adid }),\n insert_id: UUID(),\n partner_id: this.config.partnerId,\n plan: this.config.plan,\n ...(this.config.ingestionMetadata && {\n ingestion_metadata: {\n source_name: this.config.ingestionMetadata.sourceName,\n source_version: this.config.ingestionMetadata.sourceVersion,\n },\n }),\n ...context,\n event_id: this.eventId++,\n library: this.library,\n };\n return event;\n }\n}\n"],"mappings":";;AAAA,SAAiDA,UAAjD,QAAmE,4BAAnE;AACA,OAAOC,QAAP,MAAqB,yBAArB;AACA,SAASC,IAAT,QAAqB,2BAArB;AACA,SAASC,WAAT,QAA4B,oCAA5B;AACA,SAASC,OAAT,QAAwB,YAAxB;AACA,SAASC,aAAT,QAA8B,cAA9B;AAEA,MAAMC,gBAAgB,GAAG,KAAzB;AACA,MAAMC,UAAU,GAAG,SAAnB;AAmBA,OAAO,MAAMC,OAAN,CAAsC;EAI3C;EACA;EACA;EASAC,WAAW,GAAG;IAAA,8BAdP,SAcO;;IAAA,8BAbPT,UAAU,CAACU,MAaJ;;IAAA;;IAAA,iCAPJ,CAOI;;IAAA;;IAAA,sCALmCL,aAAa,CAACM,oBAKjD;;IAAA,iCAFH,6BAA4BP,OAAQ,EAEjC;;IACZ,IAAIQ,KAAJ;IACA;;IACA,IAAI,OAAOC,SAAP,KAAqB,WAAzB,EAAsC;MACpCD,KAAK,GAAGC,SAAS,CAACC,SAAlB;IACD;;IACD,KAAKC,QAAL,GAAgB,IAAId,QAAJ,CAAaW,KAAb,EAAoBI,SAApB,EAAhB;EACD;;EAEDC,KAAK,CAACC,MAAD,EAAgD;IACnD,KAAKA,MAAL,GAAcA,MAAd;IACA,OAAOC,OAAO,CAACC,OAAR,CAAgBC,SAAhB,CAAP;EACD;;EAEY,MAAPC,OAAO,CAACC,OAAD,EAAiC;IAAA;;IAC5C,MAAMC,IAAI,GAAG,IAAIC,IAAJ,GAAWC,OAAX,EAAb;IACA,MAAMC,aAAa,GAAG,6BAAM,KAAKC,YAAX,uDAAM,mBAAmBC,qBAAnB,EAAN,CAAtB;IACA,MAAMC,UAAU,GAAG,CAAAH,aAAa,SAAb,IAAAA,aAAa,WAAb,YAAAA,aAAa,CAAEI,OAAf,KAA0B,KAAKb,MAAL,CAAYY,UAAzD;IACA,MAAME,QAAQ,GAAG,CAAAL,aAAa,SAAb,IAAAA,aAAa,WAAb,YAAAA,aAAa,CAAEK,QAAf,KAA2B1B,gBAA5C;IACA,MAAM2B,MAAM,GAAG,CAAAN,aAAa,SAAb,IAAAA,aAAa,WAAb,YAAAA,aAAa,CAAEM,MAAf,KAAyB,KAAKlB,QAAL,CAAcmB,OAAd,CAAsBC,IAA9D;IACA,MAAMC,SAAS,GAAG,CAAAT,aAAa,SAAb,IAAAA,aAAa,WAAb,YAAAA,aAAa,CAAES,SAAf,KAA4B,KAAKrB,QAAL,CAAcmB,OAAd,CAAsBH,OAApE;IACA,MAAMM,YAAY,GAAG,CAAAV,aAAa,SAAb,IAAAA,aAAa,WAAb,YAAAA,aAAa,CAAEW,kBAAf,KAAqC,KAAKvB,QAAL,CAAcwB,MAAd,CAAqBC,MAA/E;IACA,MAAMC,WAAW,GAAG,CAAAd,aAAa,SAAb,IAAAA,aAAa,WAAb,YAAAA,aAAa,CAAEc,WAAf,KAA8B,KAAK1B,QAAL,CAAcwB,MAAd,CAAqBG,KAAnD,IAA4D,KAAK3B,QAAL,CAAc4B,EAAd,CAAiBR,IAAjG;IACA,MAAMS,QAAQ,GAAG,CAAAjB,aAAa,SAAb,IAAAA,aAAa,WAAb,YAAAA,aAAa,CAAEiB,QAAf,KAA2BzC,WAAW,EAAvD;IACA,MAAM0C,OAAO,GAAGlB,aAAH,aAAGA,aAAH,uBAAGA,aAAa,CAAEkB,OAA/B;IACA,MAAMC,IAAI,GAAGnB,aAAH,aAAGA,aAAH,uBAAGA,aAAa,CAAEmB,IAA5B;IAEA,MAAMC,KAAY,GAAG;MACnBC,OAAO,EAAE,KAAK9B,MAAL,CAAY+B,MADF;MAEnBC,SAAS,EAAE,KAAKhC,MAAL,CAAYiC,QAFJ;MAGnBC,UAAU,EAAE,KAAKlC,MAAL,CAAYmC,SAHL;MAInB7B,IAJmB;MAKnB,IAAI,KAAKN,MAAL,CAAYY,UAAZ,IAA0B;QAAEwB,WAAW,EAAExB;MAAf,CAA9B,CALmB;MAMnB,IAAI,KAAKZ,MAAL,CAAYqC,eAAZ,CAA4BvB,QAA5B,IAAwC;QAAEA,QAAQ,EAAEA;MAAZ,CAA5C,CANmB;MAOnB,IAAI,KAAKd,MAAL,CAAYqC,eAAZ,CAA4BtB,MAA5B,IAAsC;QAAEuB,OAAO,EAAEvB;MAAX,CAA1C,CAPmB;MAQnB,IAAI,KAAKf,MAAL,CAAYqC,eAAZ,CAA4BnB,SAA5B,IAAyC;QAAEqB,UAAU,EAAErB;MAAd,CAA7C,CARmB;MASnB,IAAI,KAAKlB,MAAL,CAAYqC,eAAZ,CAA4BjB,kBAA5B,IAAkD;QAAEoB,mBAAmB,EAAErB;MAAvB,CAAtD,CATmB;MAUnB,IAAI,KAAKnB,MAAL,CAAYqC,eAAZ,CAA4Bd,WAA5B,IAA2C;QAAEkB,YAAY,EAAElB;MAAhB,CAA/C,CAVmB;MAWnB,IAAI,KAAKvB,MAAL,CAAYqC,eAAZ,CAA4BX,QAA5B,IAAwC;QAAEA,QAAQ,EAAEA;MAAZ,CAA5C,CAXmB;MAYnB,IAAI,KAAK1B,MAAL,CAAYqC,eAAZ,CAA4BV,OAA5B,IAAuC;QAAEA,OAAO,EAAEA;MAAX,CAA3C,CAZmB;MAanB,IAAI,KAAK3B,MAAL,CAAYqC,eAAZ,CAA4BK,SAA5B,IAAyC;QAAEC,EAAE,EAAEtD;MAAN,CAA7C,CAbmB;MAcnB,IAAI,KAAKW,MAAL,CAAYqC,eAAZ,CAA4BT,IAA5B,IAAoC;QAAEA,IAAI,EAAEA;MAAR,CAAxC,CAdmB;MAenBgB,SAAS,EAAE5D,IAAI,EAfI;MAgBnB6D,UAAU,EAAE,KAAK7C,MAAL,CAAY8C,SAhBL;MAiBnBC,IAAI,EAAE,KAAK/C,MAAL,CAAY+C,IAjBC;MAkBnB,IAAI,KAAK/C,MAAL,CAAYgD,iBAAZ,IAAiC;QACnCC,kBAAkB,EAAE;UAClBC,WAAW,EAAE,KAAKlD,MAAL,CAAYgD,iBAAZ,CAA8BG,UADzB;UAElBC,cAAc,EAAE,KAAKpD,MAAL,CAAYgD,iBAAZ,CAA8BK;QAF5B;MADe,CAArC,CAlBmB;MAwBnB,GAAGhD,OAxBgB;MAyBnBiD,QAAQ,EAAE,KAAKC,OAAL,EAzBS;MA0BnBC,OAAO,EAAE,KAAKA;IA1BK,CAArB;IA4BA,OAAO3B,KAAP;EACD;;AAvE0C"}
@@ -1,12 +1,34 @@
1
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
+
3
+ import { AppState } from 'react-native';
1
4
  import { AmplitudeCore, Destination, UUID, returnWrapper, debugWrapper, getClientLogConfig, getClientStates } from '@amplitude/analytics-core';
2
5
  import { CampaignTracker, IdentityEventSender, getAnalyticsConnector } from '@amplitude/analytics-client-common';
3
6
  import { Context } from './plugins/context';
4
7
  import { useReactNativeConfig, createFlexibleStorage } from './config';
5
8
  import { parseOldCookies } from './cookie-migration';
6
9
  import { isNative } from './utils/platform';
10
+ const START_SESSION_EVENT = 'session_start';
11
+ const END_SESSION_EVENT = 'session_end';
7
12
  export class AmplitudeReactNative extends AmplitudeCore {
13
+ constructor() {
14
+ super(...arguments);
15
+
16
+ _defineProperty(this, "appState", 'background');
17
+
18
+ _defineProperty(this, "explicitSessionId", void 0);
19
+
20
+ _defineProperty(this, "handleAppStateChange", nextAppState => {
21
+ const currentAppState = this.appState;
22
+ this.appState = nextAppState;
23
+
24
+ if (currentAppState !== nextAppState && nextAppState === 'active') {
25
+ this.startNewSessionIfNeeded();
26
+ }
27
+ });
28
+ }
29
+
8
30
  async init() {
9
- var _oldCookies$deviceId, _oldCookies$sessionId, _options$optOut;
31
+ var _oldCookies$deviceId, _options$optOut;
10
32
 
11
33
  let apiKey = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
12
34
  let userId = arguments.length > 1 ? arguments[1] : undefined;
@@ -17,31 +39,21 @@ export class AmplitudeReactNative extends AmplitudeCore {
17
39
  return;
18
40
  }
19
41
 
20
- this.initializing = true; // Step 1: Read cookies stored by old SDK
42
+ this.initializing = true;
43
+ this.explicitSessionId = options === null || options === void 0 ? void 0 : options.sessionId; // Step 1: Read cookies stored by old SDK
21
44
 
22
45
  const oldCookies = await parseOldCookies(apiKey, options); // Step 2: Create react native config
23
46
 
24
47
  const reactNativeOptions = await useReactNativeConfig(apiKey, userId || oldCookies.userId, { ...options,
25
48
  deviceId: (_oldCookies$deviceId = oldCookies.deviceId) !== null && _oldCookies$deviceId !== void 0 ? _oldCookies$deviceId : options === null || options === void 0 ? void 0 : options.deviceId,
26
- sessionId: (_oldCookies$sessionId = oldCookies.sessionId) !== null && _oldCookies$sessionId !== void 0 ? _oldCookies$sessionId : options === null || options === void 0 ? void 0 : options.sessionId,
49
+ sessionId: oldCookies.sessionId,
27
50
  optOut: (_options$optOut = options === null || options === void 0 ? void 0 : options.optOut) !== null && _options$optOut !== void 0 ? _options$optOut : oldCookies.optOut,
28
51
  lastEventTime: oldCookies.lastEventTime
29
52
  });
30
- await super._init(reactNativeOptions); // Step 3: Manage session
31
-
32
- let isNewSession = !this.config.lastEventTime;
33
-
34
- if (!this.config.sessionId || this.config.lastEventTime && Date.now() - this.config.lastEventTime > this.config.sessionTimeout) {
35
- // Either
36
- // 1) No previous session; or
37
- // 2) Previous session expired
38
- this.setSessionId(Date.now());
39
- isNewSession = true;
40
- } // Set up the analytics connector to integrate with the experiment SDK.
53
+ await super._init(reactNativeOptions); // Set up the analytics connector to integrate with the experiment SDK.
41
54
  // Send events from the experiment SDK and forward identifies to the
42
55
  // identity store.
43
56
 
44
-
45
57
  const connector = getAnalyticsConnector();
46
58
  connector.eventBridge.setEventReceiver(event => {
47
59
  void this.track(event.eventType, event.eventProperties);
@@ -49,19 +61,27 @@ export class AmplitudeReactNative extends AmplitudeCore {
49
61
  connector.identityStore.setIdentity({
50
62
  userId: this.config.userId,
51
63
  deviceId: this.config.deviceId
52
- }); // Step 4: Install plugins
64
+ }); // Step 3: Install plugins
53
65
  // Do not track any events before this
54
66
 
55
67
  await this.add(new Context());
56
68
  await this.add(new IdentityEventSender());
57
- await this.add(new Destination());
69
+ await this.add(new Destination()); // Step 4: Manage session
70
+
71
+ this.appState = AppState.currentState;
72
+ const isNewSession = this.startNewSessionIfNeeded();
73
+ AppState.addEventListener('change', this.handleAppStateChange);
58
74
  this.initializing = false; // Step 5: Track attributions
59
75
 
60
- await this.runAttributionStrategy(options === null || options === void 0 ? void 0 : options.attribution, isNewSession); // Step 6: Run queued dispatch functions
76
+ await this.runAttributionStrategy(options === null || options === void 0 ? void 0 : options.attribution, isNewSession); // Step 6: Run queued functions
61
77
 
62
78
  await this.runQueuedFunctions('dispatchQ');
63
79
  }
64
80
 
81
+ shutdown() {
82
+ AppState.removeEventListener('change', this.handleAppStateChange);
83
+ }
84
+
65
85
  async runAttributionStrategy(attributionConfig) {
66
86
  let isNewSession = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
67
87
 
@@ -70,7 +90,7 @@ export class AmplitudeReactNative extends AmplitudeCore {
70
90
  }
71
91
 
72
92
  const track = this.track.bind(this);
73
- const onNewCampaign = this.setSessionId.bind(this, Date.now());
93
+ const onNewCampaign = this.setSessionId.bind(this, this.currentTimeMillis());
74
94
  const storage = await createFlexibleStorage(this.config);
75
95
  const campaignTracker = new CampaignTracker(this.config.apiKey, { ...attributionConfig,
76
96
  storage,
@@ -145,7 +165,96 @@ export class AmplitudeReactNative extends AmplitudeCore {
145
165
  return;
146
166
  }
147
167
 
168
+ this.explicitSessionId = sessionId;
169
+ void this.setSessionIdInternal(sessionId, this.currentTimeMillis());
170
+ }
171
+
172
+ setSessionIdInternal(sessionId, eventTime) {
173
+ const previousSessionId = this.config.sessionId;
174
+
175
+ if (previousSessionId === sessionId) {
176
+ return;
177
+ }
178
+
148
179
  this.config.sessionId = sessionId;
180
+
181
+ if (this.config.trackingSessionEvents) {
182
+ if (previousSessionId !== undefined) {
183
+ const sessionEndEvent = {
184
+ event_type: END_SESSION_EVENT,
185
+ time: this.config.lastEventTime !== undefined ? this.config.lastEventTime + 1 : sessionId,
186
+ // increment lastEventTime to sort events properly in UI - session_end should be the last event in a session
187
+ session_id: previousSessionId
188
+ };
189
+ void this.track(sessionEndEvent);
190
+ }
191
+
192
+ const sessionStartEvent = {
193
+ event_type: START_SESSION_EVENT,
194
+ time: eventTime,
195
+ session_id: sessionId
196
+ };
197
+ void this.track(sessionStartEvent);
198
+ }
199
+
200
+ this.config.lastEventTime = eventTime;
201
+ }
202
+
203
+ async process(event) {
204
+ if (!this.config.optOut) {
205
+ var _event$time;
206
+
207
+ const eventTime = (_event$time = event.time) !== null && _event$time !== void 0 ? _event$time : this.currentTimeMillis();
208
+
209
+ if (event.time === undefined) {
210
+ event = { ...event,
211
+ time: eventTime
212
+ };
213
+ }
214
+
215
+ if (event.event_type != START_SESSION_EVENT && event.event_type != END_SESSION_EVENT) {
216
+ if (this.appState !== 'active') {
217
+ this.startNewSessionIfNeeded(eventTime);
218
+ }
219
+ }
220
+
221
+ this.config.lastEventTime = eventTime;
222
+
223
+ if (event.session_id == undefined) {
224
+ event.session_id = this.getSessionId();
225
+ }
226
+ }
227
+
228
+ return super.process(event);
229
+ }
230
+
231
+ currentTimeMillis() {
232
+ return Date.now();
233
+ }
234
+
235
+ startNewSessionIfNeeded(eventTime) {
236
+ var _eventTime, _this$explicitSession;
237
+
238
+ eventTime = (_eventTime = eventTime) !== null && _eventTime !== void 0 ? _eventTime : this.currentTimeMillis();
239
+ const sessionId = (_this$explicitSession = this.explicitSessionId) !== null && _this$explicitSession !== void 0 ? _this$explicitSession : eventTime;
240
+
241
+ if (this.inSession() && (this.explicitSessionId === this.config.sessionId || this.explicitSessionId === undefined && this.isWithinMinTimeBetweenSessions(sessionId))) {
242
+ this.config.lastEventTime = eventTime;
243
+ return false;
244
+ }
245
+
246
+ this.setSessionIdInternal(sessionId, eventTime);
247
+ return true;
248
+ }
249
+
250
+ isWithinMinTimeBetweenSessions(eventTime) {
251
+ var _this$config$lastEven;
252
+
253
+ return eventTime - ((_this$config$lastEven = this.config.lastEventTime) !== null && _this$config$lastEven !== void 0 ? _this$config$lastEven : 0) < this.config.sessionTimeout;
254
+ }
255
+
256
+ inSession() {
257
+ return this.config.sessionId != undefined;
149
258
  }
150
259
 
151
260
  }
@@ -1 +1 @@
1
- {"version":3,"names":["AmplitudeCore","Destination","UUID","returnWrapper","debugWrapper","getClientLogConfig","getClientStates","CampaignTracker","IdentityEventSender","getAnalyticsConnector","Context","useReactNativeConfig","createFlexibleStorage","parseOldCookies","isNative","AmplitudeReactNative","init","apiKey","userId","options","initializing","oldCookies","reactNativeOptions","deviceId","sessionId","optOut","lastEventTime","_init","isNewSession","config","Date","now","sessionTimeout","setSessionId","connector","eventBridge","setEventReceiver","event","track","eventType","eventProperties","identityStore","setIdentity","add","runAttributionStrategy","attribution","runQueuedFunctions","attributionConfig","bind","onNewCampaign","storage","campaignTracker","send","getUserId","setUserId","q","push","editIdentity","commit","getDeviceId","setDeviceId","identify","eventOptions","user_id","device_id","reset","undefined","getSessionId","createInstance","client","remove","logEvent","groupIdentify","setGroup","revenue","flush","setOptOut"],"sources":["react-native-client.ts"],"sourcesContent":["import {\n AmplitudeCore,\n Destination,\n UUID,\n returnWrapper,\n debugWrapper,\n getClientLogConfig,\n getClientStates,\n} from '@amplitude/analytics-core';\nimport { CampaignTracker, IdentityEventSender, getAnalyticsConnector } from '@amplitude/analytics-client-common';\nimport {\n ReactNativeConfig,\n Campaign,\n ReactNativeOptions,\n AttributionOptions,\n ReactNativeClient,\n Identify as IIdentify,\n EventOptions,\n} from '@amplitude/analytics-types';\nimport { Context } from './plugins/context';\nimport { useReactNativeConfig, createFlexibleStorage } from './config';\nimport { parseOldCookies } from './cookie-migration';\nimport { isNative } from './utils/platform';\n\nexport class AmplitudeReactNative extends AmplitudeCore<ReactNativeConfig> {\n async init(apiKey = '', userId?: string, options?: ReactNativeOptions) {\n // Step 0: Block concurrent initialization\n if (this.initializing) {\n return;\n }\n this.initializing = true;\n\n // Step 1: Read cookies stored by old SDK\n const oldCookies = await parseOldCookies(apiKey, options);\n\n // Step 2: Create react native config\n const reactNativeOptions = await useReactNativeConfig(apiKey, userId || oldCookies.userId, {\n ...options,\n deviceId: oldCookies.deviceId ?? options?.deviceId,\n sessionId: oldCookies.sessionId ?? options?.sessionId,\n optOut: options?.optOut ?? oldCookies.optOut,\n lastEventTime: oldCookies.lastEventTime,\n });\n await super._init(reactNativeOptions);\n\n // Step 3: Manage session\n let isNewSession = !this.config.lastEventTime;\n if (\n !this.config.sessionId ||\n (this.config.lastEventTime && Date.now() - this.config.lastEventTime > this.config.sessionTimeout)\n ) {\n // Either\n // 1) No previous session; or\n // 2) Previous session expired\n this.setSessionId(Date.now());\n isNewSession = true;\n }\n\n // Set up the analytics connector to integrate with the experiment SDK.\n // Send events from the experiment SDK and forward identifies to the\n // identity store.\n const connector = getAnalyticsConnector();\n connector.eventBridge.setEventReceiver((event) => {\n void this.track(event.eventType, event.eventProperties);\n });\n connector.identityStore.setIdentity({\n userId: this.config.userId,\n deviceId: this.config.deviceId,\n });\n\n // Step 4: Install plugins\n // Do not track any events before this\n await this.add(new Context());\n await this.add(new IdentityEventSender());\n await this.add(new Destination());\n\n this.initializing = false;\n\n // Step 5: Track attributions\n await this.runAttributionStrategy(options?.attribution, isNewSession);\n\n // Step 6: Run queued dispatch functions\n await this.runQueuedFunctions('dispatchQ');\n }\n\n async runAttributionStrategy(attributionConfig?: AttributionOptions, isNewSession = false) {\n if (isNative()) {\n return;\n }\n const track = this.track.bind(this);\n const onNewCampaign = this.setSessionId.bind(this, Date.now());\n\n const storage = await createFlexibleStorage<Campaign>(this.config);\n const campaignTracker = new CampaignTracker(this.config.apiKey, {\n ...attributionConfig,\n storage,\n track,\n onNewCampaign,\n });\n\n await campaignTracker.send(isNewSession);\n }\n\n getUserId() {\n return this.config?.userId;\n }\n\n setUserId(userId: string | undefined) {\n if (!this.config) {\n this.q.push(this.setUserId.bind(this, userId));\n return;\n }\n this.config.userId = userId;\n getAnalyticsConnector()\n .identityStore.editIdentity()\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n .setUserId(userId)\n .commit();\n }\n\n getDeviceId() {\n return this.config?.deviceId;\n }\n\n setDeviceId(deviceId: string) {\n if (!this.config) {\n this.q.push(this.setDeviceId.bind(this, deviceId));\n return;\n }\n this.config.deviceId = deviceId;\n getAnalyticsConnector()\n .identityStore.editIdentity()\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n .setDeviceId(deviceId)\n .commit();\n }\n\n identify(identify: IIdentify, eventOptions?: EventOptions) {\n if (eventOptions?.user_id) {\n this.setUserId(eventOptions.user_id);\n }\n if (eventOptions?.device_id) {\n this.setDeviceId(eventOptions.device_id);\n }\n return super.identify(identify, eventOptions);\n }\n\n reset() {\n this.setUserId(undefined);\n this.setDeviceId(UUID());\n }\n\n getSessionId() {\n return this.config?.sessionId;\n }\n\n setSessionId(sessionId: number) {\n if (!this.config) {\n this.q.push(this.setSessionId.bind(this, sessionId));\n return;\n }\n this.config.sessionId = sessionId;\n }\n}\n\nexport const createInstance = (): ReactNativeClient => {\n const client = new AmplitudeReactNative();\n return {\n init: debugWrapper(\n returnWrapper(client.init.bind(client)),\n 'init',\n getClientLogConfig(client),\n getClientStates(client, ['config']),\n ),\n add: debugWrapper(\n returnWrapper(client.add.bind(client)),\n 'add',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.plugins']),\n ),\n remove: debugWrapper(\n returnWrapper(client.remove.bind(client)),\n 'remove',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.plugins']),\n ),\n track: debugWrapper(\n returnWrapper(client.track.bind(client)),\n 'track',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n logEvent: debugWrapper(\n returnWrapper(client.logEvent.bind(client)),\n 'logEvent',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n identify: debugWrapper(\n returnWrapper(client.identify.bind(client)),\n 'identify',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n groupIdentify: debugWrapper(\n returnWrapper(client.groupIdentify.bind(client)),\n 'groupIdentify',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n setGroup: debugWrapper(\n returnWrapper(client.setGroup.bind(client)),\n 'setGroup',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n revenue: debugWrapper(\n returnWrapper(client.revenue.bind(client)),\n 'revenue',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n flush: debugWrapper(\n returnWrapper(client.flush.bind(client)),\n 'flush',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n getUserId: debugWrapper(\n client.getUserId.bind(client),\n 'getUserId',\n getClientLogConfig(client),\n getClientStates(client, ['config', 'config.userId']),\n ),\n setUserId: debugWrapper(\n client.setUserId.bind(client),\n 'setUserId',\n getClientLogConfig(client),\n getClientStates(client, ['config', 'config.userId']),\n ),\n getDeviceId: debugWrapper(\n client.getDeviceId.bind(client),\n 'getDeviceId',\n getClientLogConfig(client),\n getClientStates(client, ['config', 'config.deviceId']),\n ),\n setDeviceId: debugWrapper(\n client.setDeviceId.bind(client),\n 'setDeviceId',\n getClientLogConfig(client),\n getClientStates(client, ['config', 'config.deviceId']),\n ),\n reset: debugWrapper(\n client.reset.bind(client),\n 'reset',\n getClientLogConfig(client),\n getClientStates(client, ['config', 'config.userId', 'config.deviceId']),\n ),\n getSessionId: debugWrapper(\n client.getSessionId.bind(client),\n 'getSessionId',\n getClientLogConfig(client),\n getClientStates(client, ['config']),\n ),\n setSessionId: debugWrapper(\n client.setSessionId.bind(client),\n 'setSessionId',\n getClientLogConfig(client),\n getClientStates(client, ['config']),\n ),\n setOptOut: debugWrapper(\n client.setOptOut.bind(client),\n 'setOptOut',\n getClientLogConfig(client),\n getClientStates(client, ['config']),\n ),\n };\n};\n\nexport default createInstance();\n"],"mappings":"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"}
1
+ {"version":3,"names":["AppState","AmplitudeCore","Destination","UUID","returnWrapper","debugWrapper","getClientLogConfig","getClientStates","CampaignTracker","IdentityEventSender","getAnalyticsConnector","Context","useReactNativeConfig","createFlexibleStorage","parseOldCookies","isNative","START_SESSION_EVENT","END_SESSION_EVENT","AmplitudeReactNative","nextAppState","currentAppState","appState","startNewSessionIfNeeded","init","apiKey","userId","options","initializing","explicitSessionId","sessionId","oldCookies","reactNativeOptions","deviceId","optOut","lastEventTime","_init","connector","eventBridge","setEventReceiver","event","track","eventType","eventProperties","identityStore","setIdentity","config","add","currentState","isNewSession","addEventListener","handleAppStateChange","runAttributionStrategy","attribution","runQueuedFunctions","shutdown","removeEventListener","attributionConfig","bind","onNewCampaign","setSessionId","currentTimeMillis","storage","campaignTracker","send","getUserId","setUserId","q","push","editIdentity","commit","getDeviceId","setDeviceId","identify","eventOptions","user_id","device_id","reset","undefined","getSessionId","setSessionIdInternal","eventTime","previousSessionId","trackingSessionEvents","sessionEndEvent","event_type","time","session_id","sessionStartEvent","process","Date","now","inSession","isWithinMinTimeBetweenSessions","sessionTimeout","createInstance","client","remove","logEvent","groupIdentify","setGroup","revenue","flush","setOptOut"],"sources":["react-native-client.ts"],"sourcesContent":["import { AppState, AppStateStatus } from 'react-native';\nimport {\n AmplitudeCore,\n Destination,\n UUID,\n returnWrapper,\n debugWrapper,\n getClientLogConfig,\n getClientStates,\n} from '@amplitude/analytics-core';\nimport { CampaignTracker, IdentityEventSender, getAnalyticsConnector } from '@amplitude/analytics-client-common';\nimport {\n ReactNativeConfig,\n Campaign,\n ReactNativeOptions,\n AttributionOptions,\n ReactNativeClient,\n Identify as IIdentify,\n EventOptions,\n Event,\n Result,\n} from '@amplitude/analytics-types';\nimport { Context } from './plugins/context';\nimport { useReactNativeConfig, createFlexibleStorage } from './config';\nimport { parseOldCookies } from './cookie-migration';\nimport { isNative } from './utils/platform';\n\nconst START_SESSION_EVENT = 'session_start';\nconst END_SESSION_EVENT = 'session_end';\n\nexport class AmplitudeReactNative extends AmplitudeCore<ReactNativeConfig> {\n appState: AppStateStatus = 'background';\n explicitSessionId: number | undefined;\n\n async init(apiKey = '', userId?: string, options?: ReactNativeOptions) {\n // Step 0: Block concurrent initialization\n if (this.initializing) {\n return;\n }\n this.initializing = true;\n this.explicitSessionId = options?.sessionId;\n\n // Step 1: Read cookies stored by old SDK\n const oldCookies = await parseOldCookies(apiKey, options);\n\n // Step 2: Create react native config\n const reactNativeOptions = await useReactNativeConfig(apiKey, userId || oldCookies.userId, {\n ...options,\n deviceId: oldCookies.deviceId ?? options?.deviceId,\n sessionId: oldCookies.sessionId,\n optOut: options?.optOut ?? oldCookies.optOut,\n lastEventTime: oldCookies.lastEventTime,\n });\n await super._init(reactNativeOptions);\n\n // Set up the analytics connector to integrate with the experiment SDK.\n // Send events from the experiment SDK and forward identifies to the\n // identity store.\n const connector = getAnalyticsConnector();\n connector.eventBridge.setEventReceiver((event) => {\n void this.track(event.eventType, event.eventProperties);\n });\n connector.identityStore.setIdentity({\n userId: this.config.userId,\n deviceId: this.config.deviceId,\n });\n\n // Step 3: Install plugins\n // Do not track any events before this\n await this.add(new Context());\n await this.add(new IdentityEventSender());\n await this.add(new Destination());\n\n // Step 4: Manage session\n this.appState = AppState.currentState;\n const isNewSession = this.startNewSessionIfNeeded();\n AppState.addEventListener('change', this.handleAppStateChange);\n\n this.initializing = false;\n\n // Step 5: Track attributions\n await this.runAttributionStrategy(options?.attribution, isNewSession);\n\n // Step 6: Run queued functions\n await this.runQueuedFunctions('dispatchQ');\n }\n\n shutdown() {\n AppState.removeEventListener('change', this.handleAppStateChange);\n }\n\n async runAttributionStrategy(attributionConfig?: AttributionOptions, isNewSession = false) {\n if (isNative()) {\n return;\n }\n const track = this.track.bind(this);\n const onNewCampaign = this.setSessionId.bind(this, this.currentTimeMillis());\n\n const storage = await createFlexibleStorage<Campaign>(this.config);\n const campaignTracker = new CampaignTracker(this.config.apiKey, {\n ...attributionConfig,\n storage,\n track,\n onNewCampaign,\n });\n\n await campaignTracker.send(isNewSession);\n }\n\n getUserId() {\n return this.config?.userId;\n }\n\n setUserId(userId: string | undefined) {\n if (!this.config) {\n this.q.push(this.setUserId.bind(this, userId));\n return;\n }\n this.config.userId = userId;\n getAnalyticsConnector()\n .identityStore.editIdentity()\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n .setUserId(userId)\n .commit();\n }\n\n getDeviceId() {\n return this.config?.deviceId;\n }\n\n setDeviceId(deviceId: string) {\n if (!this.config) {\n this.q.push(this.setDeviceId.bind(this, deviceId));\n return;\n }\n this.config.deviceId = deviceId;\n getAnalyticsConnector()\n .identityStore.editIdentity()\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n .setDeviceId(deviceId)\n .commit();\n }\n\n identify(identify: IIdentify, eventOptions?: EventOptions) {\n if (eventOptions?.user_id) {\n this.setUserId(eventOptions.user_id);\n }\n if (eventOptions?.device_id) {\n this.setDeviceId(eventOptions.device_id);\n }\n return super.identify(identify, eventOptions);\n }\n\n reset() {\n this.setUserId(undefined);\n this.setDeviceId(UUID());\n }\n\n getSessionId() {\n return this.config?.sessionId;\n }\n\n setSessionId(sessionId: number) {\n if (!this.config) {\n this.q.push(this.setSessionId.bind(this, sessionId));\n return;\n }\n\n this.explicitSessionId = sessionId;\n void this.setSessionIdInternal(sessionId, this.currentTimeMillis());\n }\n\n private setSessionIdInternal(sessionId: number, eventTime: number) {\n const previousSessionId = this.config.sessionId;\n if (previousSessionId === sessionId) {\n return;\n }\n\n this.config.sessionId = sessionId;\n\n if (this.config.trackingSessionEvents) {\n if (previousSessionId !== undefined) {\n const sessionEndEvent: Event = {\n event_type: END_SESSION_EVENT,\n time: this.config.lastEventTime !== undefined ? this.config.lastEventTime + 1 : sessionId, // increment lastEventTime to sort events properly in UI - session_end should be the last event in a session\n session_id: previousSessionId,\n };\n void this.track(sessionEndEvent);\n }\n\n const sessionStartEvent: Event = {\n event_type: START_SESSION_EVENT,\n time: eventTime,\n session_id: sessionId,\n };\n void this.track(sessionStartEvent);\n }\n\n this.config.lastEventTime = eventTime;\n }\n\n async process(event: Event): Promise<Result> {\n if (!this.config.optOut) {\n const eventTime = event.time ?? this.currentTimeMillis();\n if (event.time === undefined) {\n event = { ...event, time: eventTime };\n }\n\n if (event.event_type != START_SESSION_EVENT && event.event_type != END_SESSION_EVENT) {\n if (this.appState !== 'active') {\n this.startNewSessionIfNeeded(eventTime);\n }\n }\n this.config.lastEventTime = eventTime;\n\n if (event.session_id == undefined) {\n event.session_id = this.getSessionId();\n }\n }\n\n return super.process(event);\n }\n\n currentTimeMillis() {\n return Date.now();\n }\n\n private startNewSessionIfNeeded(eventTime?: number): boolean {\n eventTime = eventTime ?? this.currentTimeMillis();\n const sessionId = this.explicitSessionId ?? eventTime;\n\n if (\n this.inSession() &&\n (this.explicitSessionId === this.config.sessionId ||\n (this.explicitSessionId === undefined && this.isWithinMinTimeBetweenSessions(sessionId)))\n ) {\n this.config.lastEventTime = eventTime;\n return false;\n }\n\n this.setSessionIdInternal(sessionId, eventTime);\n return true;\n }\n\n private isWithinMinTimeBetweenSessions(eventTime: number) {\n return eventTime - (this.config.lastEventTime ?? 0) < this.config.sessionTimeout;\n }\n\n private inSession() {\n return this.config.sessionId != undefined;\n }\n\n private readonly handleAppStateChange = (nextAppState: AppStateStatus) => {\n const currentAppState = this.appState;\n this.appState = nextAppState;\n if (currentAppState !== nextAppState && nextAppState === 'active') {\n this.startNewSessionIfNeeded();\n }\n };\n}\n\nexport const createInstance = (): ReactNativeClient => {\n const client = new AmplitudeReactNative();\n return {\n init: debugWrapper(\n returnWrapper(client.init.bind(client)),\n 'init',\n getClientLogConfig(client),\n getClientStates(client, ['config']),\n ),\n add: debugWrapper(\n returnWrapper(client.add.bind(client)),\n 'add',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.plugins']),\n ),\n remove: debugWrapper(\n returnWrapper(client.remove.bind(client)),\n 'remove',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.plugins']),\n ),\n track: debugWrapper(\n returnWrapper(client.track.bind(client)),\n 'track',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n logEvent: debugWrapper(\n returnWrapper(client.logEvent.bind(client)),\n 'logEvent',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n identify: debugWrapper(\n returnWrapper(client.identify.bind(client)),\n 'identify',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n groupIdentify: debugWrapper(\n returnWrapper(client.groupIdentify.bind(client)),\n 'groupIdentify',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n setGroup: debugWrapper(\n returnWrapper(client.setGroup.bind(client)),\n 'setGroup',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n revenue: debugWrapper(\n returnWrapper(client.revenue.bind(client)),\n 'revenue',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n flush: debugWrapper(\n returnWrapper(client.flush.bind(client)),\n 'flush',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n getUserId: debugWrapper(\n client.getUserId.bind(client),\n 'getUserId',\n getClientLogConfig(client),\n getClientStates(client, ['config', 'config.userId']),\n ),\n setUserId: debugWrapper(\n client.setUserId.bind(client),\n 'setUserId',\n getClientLogConfig(client),\n getClientStates(client, ['config', 'config.userId']),\n ),\n getDeviceId: debugWrapper(\n client.getDeviceId.bind(client),\n 'getDeviceId',\n getClientLogConfig(client),\n getClientStates(client, ['config', 'config.deviceId']),\n ),\n setDeviceId: debugWrapper(\n client.setDeviceId.bind(client),\n 'setDeviceId',\n getClientLogConfig(client),\n getClientStates(client, ['config', 'config.deviceId']),\n ),\n reset: debugWrapper(\n client.reset.bind(client),\n 'reset',\n getClientLogConfig(client),\n getClientStates(client, ['config', 'config.userId', 'config.deviceId']),\n ),\n getSessionId: debugWrapper(\n client.getSessionId.bind(client),\n 'getSessionId',\n getClientLogConfig(client),\n getClientStates(client, ['config']),\n ),\n setSessionId: debugWrapper(\n client.setSessionId.bind(client),\n 'setSessionId',\n getClientLogConfig(client),\n getClientStates(client, ['config']),\n ),\n setOptOut: debugWrapper(\n client.setOptOut.bind(client),\n 'setOptOut',\n getClientLogConfig(client),\n getClientStates(client, ['config']),\n ),\n };\n};\n\nexport default createInstance();\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export const VERSION = '0.5.1';
1
+ export const VERSION = '0.6.0';
2
2
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["VERSION"],"sources":["version.ts"],"sourcesContent":["export const VERSION = '0.5.1';\n"],"mappings":"AAAA,OAAO,MAAMA,OAAO,GAAG,OAAhB"}
1
+ {"version":3,"names":["VERSION"],"sources":["version.ts"],"sourcesContent":["export const VERSION = '0.6.0';\n"],"mappings":"AAAA,OAAO,MAAMA,OAAO,GAAG,OAAhB"}
@@ -0,0 +1,3 @@
1
+ import AsyncStorage from '@react-native-async-storage/async-storage/jest/async-storage-mock';
2
+ export default AsyncStorage;
3
+ //# sourceMappingURL=async-storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async-storage.d.ts","sourceRoot":"","sources":["../../../../__mocks__/@react-native-async-storage/async-storage.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,mEAAmE,CAAC;AAC7F,eAAe,YAAY,CAAC"}
@@ -13,6 +13,7 @@ export declare const getDefaultConfig: () => {
13
13
  storageProvider: MemoryStorage<Event[]>;
14
14
  trackingOptions: Required<ReactNativeTrackingOptions>;
15
15
  transportProvider: FetchTransport;
16
+ trackingSessionEvents: boolean;
16
17
  };
17
18
  export declare class ReactNativeConfig extends Config implements IReactNativeConfig {
18
19
  appVersion?: string;
@@ -26,6 +27,7 @@ export declare class ReactNativeConfig extends Config implements IReactNativeCon
26
27
  sessionTimeout: number;
27
28
  trackingOptions: ReactNativeTrackingOptions;
28
29
  sessionManager: ISessionManager;
30
+ trackingSessionEvents: boolean;
29
31
  constructor(apiKey: string, userId?: string, options?: ReactNativeOptions);
30
32
  get deviceId(): string | undefined;
31
33
  set deviceId(deviceId: string | undefined);
@@ -51,6 +53,7 @@ export declare const createCookieStorage: (overrides?: ReactNativeOptions | unde
51
53
  storageProvider: MemoryStorage<Event[]>;
52
54
  trackingOptions: Required<ReactNativeTrackingOptions>;
53
55
  transportProvider: FetchTransport;
56
+ trackingSessionEvents: boolean;
54
57
  }) => Promise<Storage<UserSession>>;
55
58
  export declare const createFlexibleStorage: <T>(options: ReactNativeOptions) => Promise<Storage<T>>;
56
59
  export declare const createEventsStorage: (overrides?: ReactNativeOptions | undefined) => Promise<Storage<Event[]> | undefined>;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,kBAAkB,EAClB,iBAAiB,IAAI,kBAAkB,EACvC,OAAO,EACP,0BAA0B,EAC1B,WAAW,EACX,cAAc,IAAI,eAAe,EAClC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAQ,MAAM,2BAA2B,CAAC;AACxE,OAAO,EAIL,cAAc,EACd,cAAc,EACf,MAAM,oCAAoC,CAAC;AAI5C,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;CA2B5B,CAAC;AAEF,qBAAa,iBAAkB,SAAQ,MAAO,YAAW,kBAAkB;IACzE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IACpC,cAAc,EAAE,OAAO,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,0BAA0B,CAAC;IAC5C,cAAc,EAAE,eAAe,CAAC;IAChC,qBAAqB,EAAE,OAAO,CAAC;gBAEnB,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB;IA+BzE,IAAI,QAAQ,IAIW,MAAM,GAAG,SAAS,CAFxC;IAED,IAAI,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAExC;IAED,IAAI,MAAM,IAIS,MAAM,GAAG,SAAS,CAFpC;IAED,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,EAEpC;IAED,IAAI,SAAS,IAIY,MAAM,GAAG,SAAS,CAF1C;IAED,IAAI,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,EAE1C;IAED,IAAI,MAAM,IAIS,OAAO,CAFzB;IAED,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,EAEzB;IAED,IAAI,aAAa,IAIgB,MAAM,GAAG,SAAS,CAFlD;IAED,IAAI,aAAa,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,EAElD;CACF;AAED,eAAO,MAAM,oBAAoB,WACvB,MAAM,4EAGb,QAAQ,kBAAkB,CAqB5B,CAAC;AAEF,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;MAG7B,QAAQ,QAAQ,WAAW,CAAC,CAO9B,CAAC;AAEF,eAAO,MAAM,qBAAqB,eAAsB,kBAAkB,wBAczE,CAAC;AAEF,eAAO,MAAM,mBAAmB,kDAA2C,QAAQ,QAAQ,KAAK,EAAE,CAAC,GAAG,SAAS,CAe9G,CAAC;AAEF,eAAO,MAAM,cAAc,4HAE1B,CAAC;AAEF,eAAO,MAAM,iBAAiB,+CA0B7B,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/cookie-migration/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAW,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAIlF,eAAO,MAAM,eAAe,WAAkB,MAAM,2CAA6B,QAAQ,WAAW,CA6BnG,CAAC;AAEF,eAAO,MAAM,SAAS,QAAS,MAAM,uBAMpC,CAAC;AAEF,eAAO,MAAM,MAAM,kCAAqB,MAAM,GAAG,SAShD,CAAC"}
File without changes
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,eAAO,MACL,GAAG,yDACH,KAAK,qCACL,WAAW,4BACX,YAAY,4BACZ,SAAS,4BACT,aAAa,qKACb,QAAQ,oHACR,IAAI,gIACJ,QAAQ,mLACR,MAAM,uDACN,KAAK,cACL,OAAO,kHACP,WAAW,8BACX,QAAQ,2IACR,SAAS,6BACT,YAAY,+BACZ,SAAS,wCACT,KAAK,iLACG,CAAC;AACX,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAG9D,OAAO,KAAK,KAAK,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,CAAC"}
@@ -26,7 +26,6 @@ export declare class Context implements BeforePlugin {
26
26
  constructor();
27
27
  setup(config: ReactNativeConfig): Promise<undefined>;
28
28
  execute(context: Event): Promise<Event>;
29
- isSessionValid(): boolean;
30
29
  }
31
30
  export {};
32
31
  //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../src/plugins/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAChG,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAS/C,aAAK,aAAa,GAAG;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,WAAW,oBAAoB;IACnC,qBAAqB,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC;CACjD;AAED,qBAAa,OAAQ,YAAW,YAAY;IAC1C,IAAI,SAAa;IACjB,IAAI,oBAA8B;IAKlC,MAAM,EAAE,iBAAiB,CAAC;IAC1B,OAAO,SAAK;IACZ,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC;IAC3B,YAAY,EAAE,oBAAoB,GAAG,SAAS,CAEhC;IACd,OAAO,SAA0C;;IAWjD,KAAK,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,SAAS,CAAC;IAK9C,OAAO,CAAC,OAAO,EAAE,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;CA2C9C"}
@@ -1,16 +1,27 @@
1
+ import { AppStateStatus } from 'react-native';
1
2
  import { AmplitudeCore } from '@amplitude/analytics-core';
2
- import { ReactNativeConfig, ReactNativeOptions, AttributionOptions, ReactNativeClient, Identify as IIdentify, EventOptions } from '@amplitude/analytics-types';
3
+ import { ReactNativeConfig, ReactNativeOptions, AttributionOptions, ReactNativeClient, Identify as IIdentify, EventOptions, Event, Result } from '@amplitude/analytics-types';
3
4
  export declare class AmplitudeReactNative extends AmplitudeCore<ReactNativeConfig> {
5
+ appState: AppStateStatus;
6
+ explicitSessionId: number | undefined;
4
7
  init(apiKey?: string, userId?: string, options?: ReactNativeOptions): Promise<void>;
8
+ shutdown(): void;
5
9
  runAttributionStrategy(attributionConfig?: AttributionOptions, isNewSession?: boolean): Promise<void>;
6
10
  getUserId(): string | undefined;
7
11
  setUserId(userId: string | undefined): void;
8
12
  getDeviceId(): string | undefined;
9
13
  setDeviceId(deviceId: string): void;
10
- identify(identify: IIdentify, eventOptions?: EventOptions): Promise<import("@amplitude/analytics-types").Result>;
14
+ identify(identify: IIdentify, eventOptions?: EventOptions): Promise<Result>;
11
15
  reset(): void;
12
16
  getSessionId(): number | undefined;
13
17
  setSessionId(sessionId: number): void;
18
+ private setSessionIdInternal;
19
+ process(event: Event): Promise<Result>;
20
+ currentTimeMillis(): number;
21
+ private startNewSessionIfNeeded;
22
+ private isWithinMinTimeBetweenSessions;
23
+ private inSession;
24
+ private readonly handleAppStateChange;
14
25
  }
15
26
  export declare const createInstance: () => ReactNativeClient;
16
27
  declare const _default: ReactNativeClient;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react-native-client.d.ts","sourceRoot":"","sources":["../../../src/react-native-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,cAAc,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EACL,aAAa,EAOd,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,iBAAiB,EAEjB,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,QAAQ,IAAI,SAAS,EACrB,YAAY,EACZ,KAAK,EACL,MAAM,EACP,MAAM,4BAA4B,CAAC;AASpC,qBAAa,oBAAqB,SAAQ,aAAa,CAAC,iBAAiB,CAAC;IACxE,QAAQ,EAAE,cAAc,CAAgB;IACxC,iBAAiB,EAAE,MAAM,GAAG,SAAS,CAAC;IAEhC,IAAI,CAAC,MAAM,SAAK,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB;IAqDrE,QAAQ;IAIF,sBAAsB,CAAC,iBAAiB,CAAC,EAAE,kBAAkB,EAAE,YAAY,UAAQ;IAkBzF,SAAS;IAIT,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS;IAcpC,WAAW;IAIX,WAAW,CAAC,QAAQ,EAAE,MAAM;IAc5B,QAAQ,CAAC,QAAQ,EAAE,SAAS,EAAE,YAAY,CAAC,EAAE,YAAY;IAUzD,KAAK;IAKL,YAAY;IAIZ,YAAY,CAAC,SAAS,EAAE,MAAM;IAU9B,OAAO,CAAC,oBAAoB;IA6BtB,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC;IAsB5C,iBAAiB;IAIjB,OAAO,CAAC,uBAAuB;IAiB/B,OAAO,CAAC,8BAA8B;IAItC,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAMnC;CACH;AAED,eAAO,MAAM,cAAc,QAAO,iBAgHjC,CAAC;;AAEF,wBAAgC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-storage.d.ts","sourceRoot":"","sources":["../../../../src/storage/local-storage.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAGrD,qBAAa,YAAY,CAAC,CAAC,CAAE,YAAW,OAAO,CAAC,CAAC,CAAC;IAC1C,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAqB7B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAcxC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAIhD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAQzC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQlC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAO7B"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../../../../src/utils/platform.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,KAAK,QAAO,OAExB,CAAC;AAEF,eAAO,MAAM,QAAQ,QAAO,OAE3B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const VERSION = "0.6.0";
2
+ //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,UAAU,CAAC"}