@amplitude/analytics-react-native 0.5.0 → 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.
- package/lib/commonjs/config.js +6 -2
- package/lib/commonjs/config.js.map +1 -1
- package/lib/commonjs/plugins/context.js +0 -17
- package/lib/commonjs/plugins/context.js.map +1 -1
- package/lib/commonjs/react-native-client.js +132 -19
- package/lib/commonjs/react-native-client.js.map +1 -1
- package/lib/commonjs/version.js +1 -1
- package/lib/commonjs/version.js.map +1 -1
- package/lib/module/config.js +6 -2
- package/lib/module/config.js.map +1 -1
- package/lib/module/plugins/context.js +0 -17
- package/lib/module/plugins/context.js.map +1 -1
- package/lib/module/react-native-client.js +128 -19
- package/lib/module/react-native-client.js.map +1 -1
- package/lib/module/version.js +1 -1
- package/lib/module/version.js.map +1 -1
- package/lib/typescript/__mocks__/@react-native-async-storage/async-storage.d.ts +3 -0
- package/lib/typescript/__mocks__/@react-native-async-storage/async-storage.d.ts.map +1 -0
- package/lib/typescript/{config.d.ts → src/config.d.ts} +3 -0
- package/lib/typescript/src/config.d.ts.map +1 -0
- package/lib/typescript/{cookie-migration → src/cookie-migration}/index.d.ts +0 -0
- package/lib/typescript/src/cookie-migration/index.d.ts.map +1 -0
- package/lib/typescript/{index.d.ts → src/index.d.ts} +0 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/lib/typescript/{plugins → src/plugins}/context.d.ts +0 -1
- package/lib/typescript/src/plugins/context.d.ts.map +1 -0
- package/lib/typescript/{react-native-client.d.ts → src/react-native-client.d.ts} +13 -2
- package/lib/typescript/src/react-native-client.d.ts.map +1 -0
- package/lib/typescript/{storage → src/storage}/local-storage.d.ts +0 -0
- package/lib/typescript/src/storage/local-storage.d.ts.map +1 -0
- package/lib/typescript/{utils → src/utils}/platform.d.ts +0 -0
- package/lib/typescript/src/utils/platform.d.ts.map +1 -0
- package/lib/typescript/src/version.d.ts +2 -0
- package/lib/typescript/src/version.d.ts.map +1 -0
- package/package.json +5 -5
- package/src/config.ts +3 -0
- package/src/plugins/context.ts +0 -15
- package/src/react-native-client.ts +113 -17
- package/src/version.ts +1 -1
- package/lib/typescript/config.d.ts.map +0 -1
- package/lib/typescript/cookie-migration/index.d.ts.map +0 -1
- package/lib/typescript/index.d.ts.map +0 -1
- package/lib/typescript/plugins/context.d.ts.map +0 -1
- package/lib/typescript/react-native-client.d.ts.map +0 -1
- package/lib/typescript/storage/local-storage.d.ts.map +0 -1
- package/lib/typescript/utils/platform.d.ts.map +0 -1
- package/lib/typescript/version.d.ts +0 -2
- package/lib/typescript/version.d.ts.map +0 -1
package/lib/commonjs/config.js
CHANGED
|
@@ -37,7 +37,8 @@ const getDefaultConfig = () => {
|
|
|
37
37
|
sessionTimeout: 30 * 60 * 1000,
|
|
38
38
|
storageProvider: new _analyticsCore.MemoryStorage(),
|
|
39
39
|
trackingOptions,
|
|
40
|
-
transportProvider: new _analyticsClientCommon.FetchTransport()
|
|
40
|
+
transportProvider: new _analyticsClientCommon.FetchTransport(),
|
|
41
|
+
trackingSessionEvents: false
|
|
41
42
|
};
|
|
42
43
|
};
|
|
43
44
|
|
|
@@ -45,7 +46,7 @@ exports.getDefaultConfig = getDefaultConfig;
|
|
|
45
46
|
|
|
46
47
|
class ReactNativeConfig extends _analyticsCore.Config {
|
|
47
48
|
constructor(apiKey, userId, options) {
|
|
48
|
-
var _options$storageProvi, _options$transportPro, _options$cookieStorag, _options$sessionManag, _options$sessionTimeo, _options$cookieExpira, _options$cookieSameSi, _options$cookieSecure, _options$disableCooki, _options$domain, _this$lastEventTime, _options$trackingOpti;
|
|
49
|
+
var _options$storageProvi, _options$transportPro, _options$cookieStorag, _options$sessionManag, _options$sessionTimeo, _options$cookieExpira, _options$cookieSameSi, _options$cookieSecure, _options$disableCooki, _options$domain, _this$lastEventTime, _options$trackingOpti, _options$trackingSess;
|
|
49
50
|
|
|
50
51
|
const defaultConfig = getDefaultConfig();
|
|
51
52
|
super({
|
|
@@ -80,6 +81,8 @@ class ReactNativeConfig extends _analyticsCore.Config {
|
|
|
80
81
|
|
|
81
82
|
_defineProperty(this, "sessionManager", void 0);
|
|
82
83
|
|
|
84
|
+
_defineProperty(this, "trackingSessionEvents", void 0);
|
|
85
|
+
|
|
83
86
|
this.cookieStorage = (_options$cookieStorag = options === null || options === void 0 ? void 0 : options.cookieStorage) !== null && _options$cookieStorag !== void 0 ? _options$cookieStorag : defaultConfig.cookieStorage;
|
|
84
87
|
this.sessionManager = (_options$sessionManag = options === null || options === void 0 ? void 0 : options.sessionManager) !== null && _options$sessionManag !== void 0 ? _options$sessionManag : defaultConfig.sessionManager;
|
|
85
88
|
this.sessionTimeout = (_options$sessionTimeo = options === null || options === void 0 ? void 0 : options.sessionTimeout) !== null && _options$sessionTimeo !== void 0 ? _options$sessionTimeo : defaultConfig.sessionTimeout;
|
|
@@ -96,6 +99,7 @@ class ReactNativeConfig extends _analyticsCore.Config {
|
|
|
96
99
|
this.sessionId = options === null || options === void 0 ? void 0 : options.sessionId;
|
|
97
100
|
this.trackingOptions = (_options$trackingOpti = options === null || options === void 0 ? void 0 : options.trackingOptions) !== null && _options$trackingOpti !== void 0 ? _options$trackingOpti : defaultConfig.trackingOptions;
|
|
98
101
|
this.userId = userId;
|
|
102
|
+
this.trackingSessionEvents = (_options$trackingSess = options === null || options === void 0 ? void 0 : options.trackingSessionEvents) !== null && _options$trackingSess !== void 0 ? _options$trackingSess : defaultConfig.trackingSessionEvents;
|
|
99
103
|
}
|
|
100
104
|
|
|
101
105
|
get deviceId() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getDefaultConfig","cookieStorage","MemoryStorage","trackingOptions","adid","carrier","deviceManufacturer","deviceModel","ipAddress","language","osName","osVersion","platform","cookieExpiration","cookieSameSite","cookieSecure","disableCookies","domain","sessionManager","SessionManager","sessionTimeout","storageProvider","transportProvider","FetchTransport","ReactNativeConfig","Config","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","getCookieName","cookies","get","queryParams","getQueryParams","load","createDeviceId","createEventsStorage","overrides","baseConfig","isEnabled","createFlexibleStorage","storage","CookieStorage","expirationDays","sameSite","secure","LocalStorage","hasStorageProviderProperty","Object","prototype","hasOwnProperty","call","undefined","idFromCookies","idFromOptions","idFromQueryParams","UUID","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":["getDefaultConfig","cookieStorage","MemoryStorage","trackingOptions","adid","carrier","deviceManufacturer","deviceModel","ipAddress","language","osName","osVersion","platform","cookieExpiration","cookieSameSite","cookieSecure","disableCookies","domain","sessionManager","SessionManager","sessionTimeout","storageProvider","transportProvider","FetchTransport","trackingSessionEvents","ReactNativeConfig","Config","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","getCookieName","cookies","get","queryParams","getQueryParams","load","createDeviceId","createEventsStorage","overrides","baseConfig","isEnabled","createFlexibleStorage","storage","CookieStorage","expirationDays","sameSite","secure","LocalStorage","hasStorageProviderProperty","Object","prototype","hasOwnProperty","call","undefined","idFromCookies","idFromOptions","idFromQueryParams","UUID","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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"}
|
|
@@ -61,17 +61,6 @@ class Context {
|
|
|
61
61
|
async execute(context) {
|
|
62
62
|
var _this$nativeModule;
|
|
63
63
|
|
|
64
|
-
/**
|
|
65
|
-
* Manages user session triggered by new events
|
|
66
|
-
*/
|
|
67
|
-
if (!this.isSessionValid()) {
|
|
68
|
-
// Creates new session
|
|
69
|
-
this.config.sessionId = Date.now();
|
|
70
|
-
} // else use previously creates session
|
|
71
|
-
// Updates last event time to extend time-based session
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
this.config.lastEventTime = Date.now();
|
|
75
64
|
const time = new Date().getTime();
|
|
76
65
|
const nativeContext = await ((_this$nativeModule = this.nativeModule) === null || _this$nativeModule === void 0 ? void 0 : _this$nativeModule.getApplicationContext());
|
|
77
66
|
const appVersion = (nativeContext === null || nativeContext === void 0 ? void 0 : nativeContext.version) || this.config.appVersion;
|
|
@@ -134,12 +123,6 @@ class Context {
|
|
|
134
123
|
return event;
|
|
135
124
|
}
|
|
136
125
|
|
|
137
|
-
isSessionValid() {
|
|
138
|
-
const lastEventTime = this.config.lastEventTime || Date.now();
|
|
139
|
-
const timeSinceLastEvent = Date.now() - lastEventTime;
|
|
140
|
-
return timeSinceLastEvent < this.config.sessionTimeout;
|
|
141
|
-
}
|
|
142
|
-
|
|
143
126
|
}
|
|
144
127
|
|
|
145
128
|
exports.Context = Context;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["BROWSER_PLATFORM","IP_ADDRESS","Context","constructor","PluginType","BEFORE","NativeModules","AmplitudeReactNative","VERSION","agent","navigator","userAgent","uaResult","UAParser","getResult","setup","config","Promise","resolve","undefined","execute","context","
|
|
1
|
+
{"version":3,"names":["BROWSER_PLATFORM","IP_ADDRESS","Context","constructor","PluginType","BEFORE","NativeModules","AmplitudeReactNative","VERSION","agent","navigator","userAgent","uaResult","UAParser","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","getLanguage","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","UUID","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":"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"}
|
|
@@ -5,6 +5,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = exports.createInstance = exports.AmplitudeReactNative = void 0;
|
|
7
7
|
|
|
8
|
+
var _reactNative = require("react-native");
|
|
9
|
+
|
|
8
10
|
var _analyticsCore = require("@amplitude/analytics-core");
|
|
9
11
|
|
|
10
12
|
var _analyticsClientCommon = require("@amplitude/analytics-client-common");
|
|
@@ -17,9 +19,31 @@ var _cookieMigration = require("./cookie-migration");
|
|
|
17
19
|
|
|
18
20
|
var _platform = require("./utils/platform");
|
|
19
21
|
|
|
22
|
+
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; }
|
|
23
|
+
|
|
24
|
+
const START_SESSION_EVENT = 'session_start';
|
|
25
|
+
const END_SESSION_EVENT = 'session_end';
|
|
26
|
+
|
|
20
27
|
class AmplitudeReactNative extends _analyticsCore.AmplitudeCore {
|
|
28
|
+
constructor() {
|
|
29
|
+
super(...arguments);
|
|
30
|
+
|
|
31
|
+
_defineProperty(this, "appState", 'background');
|
|
32
|
+
|
|
33
|
+
_defineProperty(this, "explicitSessionId", void 0);
|
|
34
|
+
|
|
35
|
+
_defineProperty(this, "handleAppStateChange", nextAppState => {
|
|
36
|
+
const currentAppState = this.appState;
|
|
37
|
+
this.appState = nextAppState;
|
|
38
|
+
|
|
39
|
+
if (currentAppState !== nextAppState && nextAppState === 'active') {
|
|
40
|
+
this.startNewSessionIfNeeded();
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
|
|
21
45
|
async init() {
|
|
22
|
-
var _oldCookies$deviceId,
|
|
46
|
+
var _oldCookies$deviceId, _options$optOut;
|
|
23
47
|
|
|
24
48
|
let apiKey = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
25
49
|
let userId = arguments.length > 1 ? arguments[1] : undefined;
|
|
@@ -30,31 +54,21 @@ class AmplitudeReactNative extends _analyticsCore.AmplitudeCore {
|
|
|
30
54
|
return;
|
|
31
55
|
}
|
|
32
56
|
|
|
33
|
-
this.initializing = true;
|
|
57
|
+
this.initializing = true;
|
|
58
|
+
this.explicitSessionId = options === null || options === void 0 ? void 0 : options.sessionId; // Step 1: Read cookies stored by old SDK
|
|
34
59
|
|
|
35
60
|
const oldCookies = await (0, _cookieMigration.parseOldCookies)(apiKey, options); // Step 2: Create react native config
|
|
36
61
|
|
|
37
62
|
const reactNativeOptions = await (0, _config.useReactNativeConfig)(apiKey, userId || oldCookies.userId, { ...options,
|
|
38
63
|
deviceId: (_oldCookies$deviceId = oldCookies.deviceId) !== null && _oldCookies$deviceId !== void 0 ? _oldCookies$deviceId : options === null || options === void 0 ? void 0 : options.deviceId,
|
|
39
|
-
sessionId:
|
|
64
|
+
sessionId: oldCookies.sessionId,
|
|
40
65
|
optOut: (_options$optOut = options === null || options === void 0 ? void 0 : options.optOut) !== null && _options$optOut !== void 0 ? _options$optOut : oldCookies.optOut,
|
|
41
66
|
lastEventTime: oldCookies.lastEventTime
|
|
42
67
|
});
|
|
43
|
-
await super._init(reactNativeOptions); //
|
|
44
|
-
|
|
45
|
-
let isNewSession = !this.config.lastEventTime;
|
|
46
|
-
|
|
47
|
-
if (!this.config.sessionId || this.config.lastEventTime && Date.now() - this.config.lastEventTime > this.config.sessionTimeout) {
|
|
48
|
-
// Either
|
|
49
|
-
// 1) No previous session; or
|
|
50
|
-
// 2) Previous session expired
|
|
51
|
-
this.setSessionId(Date.now());
|
|
52
|
-
isNewSession = true;
|
|
53
|
-
} // Set up the analytics connector to integrate with the experiment SDK.
|
|
68
|
+
await super._init(reactNativeOptions); // Set up the analytics connector to integrate with the experiment SDK.
|
|
54
69
|
// Send events from the experiment SDK and forward identifies to the
|
|
55
70
|
// identity store.
|
|
56
71
|
|
|
57
|
-
|
|
58
72
|
const connector = (0, _analyticsClientCommon.getAnalyticsConnector)();
|
|
59
73
|
connector.eventBridge.setEventReceiver(event => {
|
|
60
74
|
void this.track(event.eventType, event.eventProperties);
|
|
@@ -62,19 +76,29 @@ class AmplitudeReactNative extends _analyticsCore.AmplitudeCore {
|
|
|
62
76
|
connector.identityStore.setIdentity({
|
|
63
77
|
userId: this.config.userId,
|
|
64
78
|
deviceId: this.config.deviceId
|
|
65
|
-
}); // Step
|
|
79
|
+
}); // Step 3: Install plugins
|
|
66
80
|
// Do not track any events before this
|
|
67
81
|
|
|
68
82
|
await this.add(new _context.Context());
|
|
69
83
|
await this.add(new _analyticsClientCommon.IdentityEventSender());
|
|
70
|
-
await this.add(new _analyticsCore.Destination());
|
|
84
|
+
await this.add(new _analyticsCore.Destination()); // Step 4: Manage session
|
|
85
|
+
|
|
86
|
+
this.appState = _reactNative.AppState.currentState;
|
|
87
|
+
const isNewSession = this.startNewSessionIfNeeded();
|
|
88
|
+
|
|
89
|
+
_reactNative.AppState.addEventListener('change', this.handleAppStateChange);
|
|
90
|
+
|
|
71
91
|
this.initializing = false; // Step 5: Track attributions
|
|
72
92
|
|
|
73
|
-
await this.runAttributionStrategy(options === null || options === void 0 ? void 0 : options.attribution, isNewSession); // Step 6: Run queued
|
|
93
|
+
await this.runAttributionStrategy(options === null || options === void 0 ? void 0 : options.attribution, isNewSession); // Step 6: Run queued functions
|
|
74
94
|
|
|
75
95
|
await this.runQueuedFunctions('dispatchQ');
|
|
76
96
|
}
|
|
77
97
|
|
|
98
|
+
shutdown() {
|
|
99
|
+
_reactNative.AppState.removeEventListener('change', this.handleAppStateChange);
|
|
100
|
+
}
|
|
101
|
+
|
|
78
102
|
async runAttributionStrategy(attributionConfig) {
|
|
79
103
|
let isNewSession = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
80
104
|
|
|
@@ -83,7 +107,7 @@ class AmplitudeReactNative extends _analyticsCore.AmplitudeCore {
|
|
|
83
107
|
}
|
|
84
108
|
|
|
85
109
|
const track = this.track.bind(this);
|
|
86
|
-
const onNewCampaign = this.setSessionId.bind(this,
|
|
110
|
+
const onNewCampaign = this.setSessionId.bind(this, this.currentTimeMillis());
|
|
87
111
|
const storage = await (0, _config.createFlexibleStorage)(this.config);
|
|
88
112
|
const campaignTracker = new _analyticsClientCommon.CampaignTracker(this.config.apiKey, { ...attributionConfig,
|
|
89
113
|
storage,
|
|
@@ -158,7 +182,96 @@ class AmplitudeReactNative extends _analyticsCore.AmplitudeCore {
|
|
|
158
182
|
return;
|
|
159
183
|
}
|
|
160
184
|
|
|
185
|
+
this.explicitSessionId = sessionId;
|
|
186
|
+
void this.setSessionIdInternal(sessionId, this.currentTimeMillis());
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
setSessionIdInternal(sessionId, eventTime) {
|
|
190
|
+
const previousSessionId = this.config.sessionId;
|
|
191
|
+
|
|
192
|
+
if (previousSessionId === sessionId) {
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
|
|
161
196
|
this.config.sessionId = sessionId;
|
|
197
|
+
|
|
198
|
+
if (this.config.trackingSessionEvents) {
|
|
199
|
+
if (previousSessionId !== undefined) {
|
|
200
|
+
const sessionEndEvent = {
|
|
201
|
+
event_type: END_SESSION_EVENT,
|
|
202
|
+
time: this.config.lastEventTime !== undefined ? this.config.lastEventTime + 1 : sessionId,
|
|
203
|
+
// increment lastEventTime to sort events properly in UI - session_end should be the last event in a session
|
|
204
|
+
session_id: previousSessionId
|
|
205
|
+
};
|
|
206
|
+
void this.track(sessionEndEvent);
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
const sessionStartEvent = {
|
|
210
|
+
event_type: START_SESSION_EVENT,
|
|
211
|
+
time: eventTime,
|
|
212
|
+
session_id: sessionId
|
|
213
|
+
};
|
|
214
|
+
void this.track(sessionStartEvent);
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
this.config.lastEventTime = eventTime;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
async process(event) {
|
|
221
|
+
if (!this.config.optOut) {
|
|
222
|
+
var _event$time;
|
|
223
|
+
|
|
224
|
+
const eventTime = (_event$time = event.time) !== null && _event$time !== void 0 ? _event$time : this.currentTimeMillis();
|
|
225
|
+
|
|
226
|
+
if (event.time === undefined) {
|
|
227
|
+
event = { ...event,
|
|
228
|
+
time: eventTime
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
if (event.event_type != START_SESSION_EVENT && event.event_type != END_SESSION_EVENT) {
|
|
233
|
+
if (this.appState !== 'active') {
|
|
234
|
+
this.startNewSessionIfNeeded(eventTime);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
this.config.lastEventTime = eventTime;
|
|
239
|
+
|
|
240
|
+
if (event.session_id == undefined) {
|
|
241
|
+
event.session_id = this.getSessionId();
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
return super.process(event);
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
currentTimeMillis() {
|
|
249
|
+
return Date.now();
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
startNewSessionIfNeeded(eventTime) {
|
|
253
|
+
var _eventTime, _this$explicitSession;
|
|
254
|
+
|
|
255
|
+
eventTime = (_eventTime = eventTime) !== null && _eventTime !== void 0 ? _eventTime : this.currentTimeMillis();
|
|
256
|
+
const sessionId = (_this$explicitSession = this.explicitSessionId) !== null && _this$explicitSession !== void 0 ? _this$explicitSession : eventTime;
|
|
257
|
+
|
|
258
|
+
if (this.inSession() && (this.explicitSessionId === this.config.sessionId || this.explicitSessionId === undefined && this.isWithinMinTimeBetweenSessions(sessionId))) {
|
|
259
|
+
this.config.lastEventTime = eventTime;
|
|
260
|
+
return false;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
this.setSessionIdInternal(sessionId, eventTime);
|
|
264
|
+
return true;
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
isWithinMinTimeBetweenSessions(eventTime) {
|
|
268
|
+
var _this$config$lastEven;
|
|
269
|
+
|
|
270
|
+
return eventTime - ((_this$config$lastEven = this.config.lastEventTime) !== null && _this$config$lastEven !== void 0 ? _this$config$lastEven : 0) < this.config.sessionTimeout;
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
inSession() {
|
|
274
|
+
return this.config.sessionId != undefined;
|
|
162
275
|
}
|
|
163
276
|
|
|
164
277
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["AmplitudeReactNative","AmplitudeCore","init","apiKey","userId","options","initializing","oldCookies","parseOldCookies","reactNativeOptions","useReactNativeConfig","deviceId","sessionId","optOut","lastEventTime","_init","isNewSession","config","Date","now","sessionTimeout","setSessionId","connector","getAnalyticsConnector","eventBridge","setEventReceiver","event","track","eventType","eventProperties","identityStore","setIdentity","add","Context","IdentityEventSender","Destination","runAttributionStrategy","attribution","runQueuedFunctions","attributionConfig","isNative","bind","onNewCampaign","storage","createFlexibleStorage","campaignTracker","CampaignTracker","send","getUserId","setUserId","q","push","editIdentity","commit","getDeviceId","setDeviceId","identify","eventOptions","user_id","device_id","reset","undefined","UUID","getSessionId","createInstance","client","debugWrapper","returnWrapper","getClientLogConfig","getClientStates","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":["START_SESSION_EVENT","END_SESSION_EVENT","AmplitudeReactNative","AmplitudeCore","nextAppState","currentAppState","appState","startNewSessionIfNeeded","init","apiKey","userId","options","initializing","explicitSessionId","sessionId","oldCookies","parseOldCookies","reactNativeOptions","useReactNativeConfig","deviceId","optOut","lastEventTime","_init","connector","getAnalyticsConnector","eventBridge","setEventReceiver","event","track","eventType","eventProperties","identityStore","setIdentity","config","add","Context","IdentityEventSender","Destination","AppState","currentState","isNewSession","addEventListener","handleAppStateChange","runAttributionStrategy","attribution","runQueuedFunctions","shutdown","removeEventListener","attributionConfig","isNative","bind","onNewCampaign","setSessionId","currentTimeMillis","storage","createFlexibleStorage","campaignTracker","CampaignTracker","send","getUserId","setUserId","q","push","editIdentity","commit","getDeviceId","setDeviceId","identify","eventOptions","user_id","device_id","reset","undefined","UUID","getSessionId","setSessionIdInternal","eventTime","previousSessionId","trackingSessionEvents","sessionEndEvent","event_type","time","session_id","sessionStartEvent","process","Date","now","inSession","isWithinMinTimeBetweenSessions","sessionTimeout","createInstance","client","debugWrapper","returnWrapper","getClientLogConfig","getClientStates","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":";;;;;;;AAAA;;AACA;;AASA;;AAYA;;AACA;;AACA;;AACA;;;;AAEA,MAAMA,mBAAmB,GAAG,eAA5B;AACA,MAAMC,iBAAiB,GAAG,aAA1B;;AAEO,MAAMC,oBAAN,SAAmCC,4BAAnC,CAAoE;EAAA;IAAA;;IAAA,kCAC9C,YAD8C;;IAAA;;IAAA,8CAgOhCC,YAAD,IAAkC;MACxE,MAAMC,eAAe,GAAG,KAAKC,QAA7B;MACA,KAAKA,QAAL,GAAgBF,YAAhB;;MACA,IAAIC,eAAe,KAAKD,YAApB,IAAoCA,YAAY,KAAK,QAAzD,EAAmE;QACjE,KAAKG,uBAAL;MACD;IACF,CAtOwE;EAAA;;EAI/D,MAAJC,IAAI,GAA6D;IAAA;;IAAA,IAA5DC,MAA4D,uEAAnD,EAAmD;IAAA,IAA/CC,MAA+C;IAAA,IAA9BC,OAA8B;;IACrE;IACA,IAAI,KAAKC,YAAT,EAAuB;MACrB;IACD;;IACD,KAAKA,YAAL,GAAoB,IAApB;IACA,KAAKC,iBAAL,GAAyBF,OAAzB,aAAyBA,OAAzB,uBAAyBA,OAAO,CAAEG,SAAlC,CANqE,CAQrE;;IACA,MAAMC,UAAU,GAAG,MAAM,IAAAC,gCAAA,EAAgBP,MAAhB,EAAwBE,OAAxB,CAAzB,CATqE,CAWrE;;IACA,MAAMM,kBAAkB,GAAG,MAAM,IAAAC,4BAAA,EAAqBT,MAArB,EAA6BC,MAAM,IAAIK,UAAU,CAACL,MAAlD,EAA0D,EACzF,GAAGC,OADsF;MAEzFQ,QAAQ,0BAAEJ,UAAU,CAACI,QAAb,uEAAyBR,OAAzB,aAAyBA,OAAzB,uBAAyBA,OAAO,CAAEQ,QAF+C;MAGzFL,SAAS,EAAEC,UAAU,CAACD,SAHmE;MAIzFM,MAAM,qBAAET,OAAF,aAAEA,OAAF,uBAAEA,OAAO,CAAES,MAAX,6DAAqBL,UAAU,CAACK,MAJmD;MAKzFC,aAAa,EAAEN,UAAU,CAACM;IAL+D,CAA1D,CAAjC;IAOA,MAAM,MAAMC,KAAN,CAAYL,kBAAZ,CAAN,CAnBqE,CAqBrE;IACA;IACA;;IACA,MAAMM,SAAS,GAAG,IAAAC,4CAAA,GAAlB;IACAD,SAAS,CAACE,WAAV,CAAsBC,gBAAtB,CAAwCC,KAAD,IAAW;MAChD,KAAK,KAAKC,KAAL,CAAWD,KAAK,CAACE,SAAjB,EAA4BF,KAAK,CAACG,eAAlC,CAAL;IACD,CAFD;IAGAP,SAAS,CAACQ,aAAV,CAAwBC,WAAxB,CAAoC;MAClCtB,MAAM,EAAE,KAAKuB,MAAL,CAAYvB,MADc;MAElCS,QAAQ,EAAE,KAAKc,MAAL,CAAYd;IAFY,CAApC,EA5BqE,CAiCrE;IACA;;IACA,MAAM,KAAKe,GAAL,CAAS,IAAIC,gBAAJ,EAAT,CAAN;IACA,MAAM,KAAKD,GAAL,CAAS,IAAIE,0CAAJ,EAAT,CAAN;IACA,MAAM,KAAKF,GAAL,CAAS,IAAIG,0BAAJ,EAAT,CAAN,CArCqE,CAuCrE;;IACA,KAAK/B,QAAL,GAAgBgC,qBAAA,CAASC,YAAzB;IACA,MAAMC,YAAY,GAAG,KAAKjC,uBAAL,EAArB;;IACA+B,qBAAA,CAASG,gBAAT,CAA0B,QAA1B,EAAoC,KAAKC,oBAAzC;;IAEA,KAAK9B,YAAL,GAAoB,KAApB,CA5CqE,CA8CrE;;IACA,MAAM,KAAK+B,sBAAL,CAA4BhC,OAA5B,aAA4BA,OAA5B,uBAA4BA,OAAO,CAAEiC,WAArC,EAAkDJ,YAAlD,CAAN,CA/CqE,CAiDrE;;IACA,MAAM,KAAKK,kBAAL,CAAwB,WAAxB,CAAN;EACD;;EAEDC,QAAQ,GAAG;IACTR,qBAAA,CAASS,mBAAT,CAA6B,QAA7B,EAAuC,KAAKL,oBAA5C;EACD;;EAE2B,MAAtBC,sBAAsB,CAACK,iBAAD,EAA+D;IAAA,IAAtBR,YAAsB,uEAAP,KAAO;;IACzF,IAAI,IAAAS,kBAAA,GAAJ,EAAgB;MACd;IACD;;IACD,MAAMrB,KAAK,GAAG,KAAKA,KAAL,CAAWsB,IAAX,CAAgB,IAAhB,CAAd;IACA,MAAMC,aAAa,GAAG,KAAKC,YAAL,CAAkBF,IAAlB,CAAuB,IAAvB,EAA6B,KAAKG,iBAAL,EAA7B,CAAtB;IAEA,MAAMC,OAAO,GAAG,MAAM,IAAAC,6BAAA,EAAgC,KAAKtB,MAArC,CAAtB;IACA,MAAMuB,eAAe,GAAG,IAAIC,sCAAJ,CAAoB,KAAKxB,MAAL,CAAYxB,MAAhC,EAAwC,EAC9D,GAAGuC,iBAD2D;MAE9DM,OAF8D;MAG9D1B,KAH8D;MAI9DuB;IAJ8D,CAAxC,CAAxB;IAOA,MAAMK,eAAe,CAACE,IAAhB,CAAqBlB,YAArB,CAAN;EACD;;EAEDmB,SAAS,GAAG;IAAA;;IACV,uBAAO,KAAK1B,MAAZ,iDAAO,aAAavB,MAApB;EACD;;EAEDkD,SAAS,CAAClD,MAAD,EAA6B;IACpC,IAAI,CAAC,KAAKuB,MAAV,EAAkB;MAChB,KAAK4B,CAAL,CAAOC,IAAP,CAAY,KAAKF,SAAL,CAAeV,IAAf,CAAoB,IAApB,EAA0BxC,MAA1B,CAAZ;MACA;IACD;;IACD,KAAKuB,MAAL,CAAYvB,MAAZ,GAAqBA,MAArB;IACA,IAAAc,4CAAA,IACGO,aADH,CACiBgC,YADjB,GAEE;IACA;IAHF,CAIGH,SAJH,CAIalD,MAJb,EAKGsD,MALH;EAMD;;EAEDC,WAAW,GAAG;IAAA;;IACZ,wBAAO,KAAKhC,MAAZ,kDAAO,cAAad,QAApB;EACD;;EAED+C,WAAW,CAAC/C,QAAD,EAAmB;IAC5B,IAAI,CAAC,KAAKc,MAAV,EAAkB;MAChB,KAAK4B,CAAL,CAAOC,IAAP,CAAY,KAAKI,WAAL,CAAiBhB,IAAjB,CAAsB,IAAtB,EAA4B/B,QAA5B,CAAZ;MACA;IACD;;IACD,KAAKc,MAAL,CAAYd,QAAZ,GAAuBA,QAAvB;IACA,IAAAK,4CAAA,IACGO,aADH,CACiBgC,YADjB,GAEE;IACA;IAHF,CAIGG,WAJH,CAIe/C,QAJf,EAKG6C,MALH;EAMD;;EAEDG,QAAQ,CAACA,QAAD,EAAsBC,YAAtB,EAAmD;IACzD,IAAIA,YAAJ,aAAIA,YAAJ,eAAIA,YAAY,CAAEC,OAAlB,EAA2B;MACzB,KAAKT,SAAL,CAAeQ,YAAY,CAACC,OAA5B;IACD;;IACD,IAAID,YAAJ,aAAIA,YAAJ,eAAIA,YAAY,CAAEE,SAAlB,EAA6B;MAC3B,KAAKJ,WAAL,CAAiBE,YAAY,CAACE,SAA9B;IACD;;IACD,OAAO,MAAMH,QAAN,CAAeA,QAAf,EAAyBC,YAAzB,CAAP;EACD;;EAEDG,KAAK,GAAG;IACN,KAAKX,SAAL,CAAeY,SAAf;IACA,KAAKN,WAAL,CAAiB,IAAAO,mBAAA,GAAjB;EACD;;EAEDC,YAAY,GAAG;IAAA;;IACb,wBAAO,KAAKzC,MAAZ,kDAAO,cAAanB,SAApB;EACD;;EAEDsC,YAAY,CAACtC,SAAD,EAAoB;IAC9B,IAAI,CAAC,KAAKmB,MAAV,EAAkB;MAChB,KAAK4B,CAAL,CAAOC,IAAP,CAAY,KAAKV,YAAL,CAAkBF,IAAlB,CAAuB,IAAvB,EAA6BpC,SAA7B,CAAZ;MACA;IACD;;IAED,KAAKD,iBAAL,GAAyBC,SAAzB;IACA,KAAK,KAAK6D,oBAAL,CAA0B7D,SAA1B,EAAqC,KAAKuC,iBAAL,EAArC,CAAL;EACD;;EAEOsB,oBAAoB,CAAC7D,SAAD,EAAoB8D,SAApB,EAAuC;IACjE,MAAMC,iBAAiB,GAAG,KAAK5C,MAAL,CAAYnB,SAAtC;;IACA,IAAI+D,iBAAiB,KAAK/D,SAA1B,EAAqC;MACnC;IACD;;IAED,KAAKmB,MAAL,CAAYnB,SAAZ,GAAwBA,SAAxB;;IAEA,IAAI,KAAKmB,MAAL,CAAY6C,qBAAhB,EAAuC;MACrC,IAAID,iBAAiB,KAAKL,SAA1B,EAAqC;QACnC,MAAMO,eAAsB,GAAG;UAC7BC,UAAU,EAAE/E,iBADiB;UAE7BgF,IAAI,EAAE,KAAKhD,MAAL,CAAYZ,aAAZ,KAA8BmD,SAA9B,GAA0C,KAAKvC,MAAL,CAAYZ,aAAZ,GAA4B,CAAtE,GAA0EP,SAFnD;UAE8D;UAC3FoE,UAAU,EAAEL;QAHiB,CAA/B;QAKA,KAAK,KAAKjD,KAAL,CAAWmD,eAAX,CAAL;MACD;;MAED,MAAMI,iBAAwB,GAAG;QAC/BH,UAAU,EAAEhF,mBADmB;QAE/BiF,IAAI,EAAEL,SAFyB;QAG/BM,UAAU,EAAEpE;MAHmB,CAAjC;MAKA,KAAK,KAAKc,KAAL,CAAWuD,iBAAX,CAAL;IACD;;IAED,KAAKlD,MAAL,CAAYZ,aAAZ,GAA4BuD,SAA5B;EACD;;EAEY,MAAPQ,OAAO,CAACzD,KAAD,EAAgC;IAC3C,IAAI,CAAC,KAAKM,MAAL,CAAYb,MAAjB,EAAyB;MAAA;;MACvB,MAAMwD,SAAS,kBAAGjD,KAAK,CAACsD,IAAT,qDAAiB,KAAK5B,iBAAL,EAAhC;;MACA,IAAI1B,KAAK,CAACsD,IAAN,KAAeT,SAAnB,EAA8B;QAC5B7C,KAAK,GAAG,EAAE,GAAGA,KAAL;UAAYsD,IAAI,EAAEL;QAAlB,CAAR;MACD;;MAED,IAAIjD,KAAK,CAACqD,UAAN,IAAoBhF,mBAApB,IAA2C2B,KAAK,CAACqD,UAAN,IAAoB/E,iBAAnE,EAAsF;QACpF,IAAI,KAAKK,QAAL,KAAkB,QAAtB,EAAgC;UAC9B,KAAKC,uBAAL,CAA6BqE,SAA7B;QACD;MACF;;MACD,KAAK3C,MAAL,CAAYZ,aAAZ,GAA4BuD,SAA5B;;MAEA,IAAIjD,KAAK,CAACuD,UAAN,IAAoBV,SAAxB,EAAmC;QACjC7C,KAAK,CAACuD,UAAN,GAAmB,KAAKR,YAAL,EAAnB;MACD;IACF;;IAED,OAAO,MAAMU,OAAN,CAAczD,KAAd,CAAP;EACD;;EAED0B,iBAAiB,GAAG;IAClB,OAAOgC,IAAI,CAACC,GAAL,EAAP;EACD;;EAEO/E,uBAAuB,CAACqE,SAAD,EAA8B;IAAA;;IAC3DA,SAAS,iBAAGA,SAAH,mDAAgB,KAAKvB,iBAAL,EAAzB;IACA,MAAMvC,SAAS,4BAAG,KAAKD,iBAAR,yEAA6B+D,SAA5C;;IAEA,IACE,KAAKW,SAAL,OACC,KAAK1E,iBAAL,KAA2B,KAAKoB,MAAL,CAAYnB,SAAvC,IACE,KAAKD,iBAAL,KAA2B2D,SAA3B,IAAwC,KAAKgB,8BAAL,CAAoC1E,SAApC,CAF3C,CADF,EAIE;MACA,KAAKmB,MAAL,CAAYZ,aAAZ,GAA4BuD,SAA5B;MACA,OAAO,KAAP;IACD;;IAED,KAAKD,oBAAL,CAA0B7D,SAA1B,EAAqC8D,SAArC;IACA,OAAO,IAAP;EACD;;EAEOY,8BAA8B,CAACZ,SAAD,EAAoB;IAAA;;IACxD,OAAOA,SAAS,6BAAI,KAAK3C,MAAL,CAAYZ,aAAhB,yEAAiC,CAAjC,CAAT,GAA+C,KAAKY,MAAL,CAAYwD,cAAlE;EACD;;EAEOF,SAAS,GAAG;IAClB,OAAO,KAAKtD,MAAL,CAAYnB,SAAZ,IAAyB0D,SAAhC;EACD;;AA9NwE;;;;AAyOpE,MAAMkB,cAAc,GAAG,MAAyB;EACrD,MAAMC,MAAM,GAAG,IAAIzF,oBAAJ,EAAf;EACA,OAAO;IACLM,IAAI,EAAE,IAAAoF,2BAAA,EACJ,IAAAC,4BAAA,EAAcF,MAAM,CAACnF,IAAP,CAAY0C,IAAZ,CAAiByC,MAAjB,CAAd,CADI,EAEJ,MAFI,EAGJ,IAAAG,iCAAA,EAAmBH,MAAnB,CAHI,EAIJ,IAAAI,8BAAA,EAAgBJ,MAAhB,EAAwB,CAAC,QAAD,CAAxB,CAJI,CADD;IAOLzD,GAAG,EAAE,IAAA0D,2BAAA,EACH,IAAAC,4BAAA,EAAcF,MAAM,CAACzD,GAAP,CAAWgB,IAAX,CAAgByC,MAAhB,CAAd,CADG,EAEH,KAFG,EAGH,IAAAG,iCAAA,EAAmBH,MAAnB,CAHG,EAIH,IAAAI,8BAAA,EAAgBJ,MAAhB,EAAwB,CAAC,eAAD,EAAkB,kBAAlB,CAAxB,CAJG,CAPA;IAaLK,MAAM,EAAE,IAAAJ,2BAAA,EACN,IAAAC,4BAAA,EAAcF,MAAM,CAACK,MAAP,CAAc9C,IAAd,CAAmByC,MAAnB,CAAd,CADM,EAEN,QAFM,EAGN,IAAAG,iCAAA,EAAmBH,MAAnB,CAHM,EAIN,IAAAI,8BAAA,EAAgBJ,MAAhB,EAAwB,CAAC,eAAD,EAAkB,kBAAlB,CAAxB,CAJM,CAbH;IAmBL/D,KAAK,EAAE,IAAAgE,2BAAA,EACL,IAAAC,4BAAA,EAAcF,MAAM,CAAC/D,KAAP,CAAasB,IAAb,CAAkByC,MAAlB,CAAd,CADK,EAEL,OAFK,EAGL,IAAAG,iCAAA,EAAmBH,MAAnB,CAHK,EAIL,IAAAI,8BAAA,EAAgBJ,MAAhB,EAAwB,CAAC,eAAD,EAAkB,uBAAlB,CAAxB,CAJK,CAnBF;IAyBLM,QAAQ,EAAE,IAAAL,2BAAA,EACR,IAAAC,4BAAA,EAAcF,MAAM,CAACM,QAAP,CAAgB/C,IAAhB,CAAqByC,MAArB,CAAd,CADQ,EAER,UAFQ,EAGR,IAAAG,iCAAA,EAAmBH,MAAnB,CAHQ,EAIR,IAAAI,8BAAA,EAAgBJ,MAAhB,EAAwB,CAAC,eAAD,EAAkB,uBAAlB,CAAxB,CAJQ,CAzBL;IA+BLxB,QAAQ,EAAE,IAAAyB,2BAAA,EACR,IAAAC,4BAAA,EAAcF,MAAM,CAACxB,QAAP,CAAgBjB,IAAhB,CAAqByC,MAArB,CAAd,CADQ,EAER,UAFQ,EAGR,IAAAG,iCAAA,EAAmBH,MAAnB,CAHQ,EAIR,IAAAI,8BAAA,EAAgBJ,MAAhB,EAAwB,CAAC,eAAD,EAAkB,uBAAlB,CAAxB,CAJQ,CA/BL;IAqCLO,aAAa,EAAE,IAAAN,2BAAA,EACb,IAAAC,4BAAA,EAAcF,MAAM,CAACO,aAAP,CAAqBhD,IAArB,CAA0ByC,MAA1B,CAAd,CADa,EAEb,eAFa,EAGb,IAAAG,iCAAA,EAAmBH,MAAnB,CAHa,EAIb,IAAAI,8BAAA,EAAgBJ,MAAhB,EAAwB,CAAC,eAAD,EAAkB,uBAAlB,CAAxB,CAJa,CArCV;IA2CLQ,QAAQ,EAAE,IAAAP,2BAAA,EACR,IAAAC,4BAAA,EAAcF,MAAM,CAACQ,QAAP,CAAgBjD,IAAhB,CAAqByC,MAArB,CAAd,CADQ,EAER,UAFQ,EAGR,IAAAG,iCAAA,EAAmBH,MAAnB,CAHQ,EAIR,IAAAI,8BAAA,EAAgBJ,MAAhB,EAAwB,CAAC,eAAD,EAAkB,uBAAlB,CAAxB,CAJQ,CA3CL;IAiDLS,OAAO,EAAE,IAAAR,2BAAA,EACP,IAAAC,4BAAA,EAAcF,MAAM,CAACS,OAAP,CAAelD,IAAf,CAAoByC,MAApB,CAAd,CADO,EAEP,SAFO,EAGP,IAAAG,iCAAA,EAAmBH,MAAnB,CAHO,EAIP,IAAAI,8BAAA,EAAgBJ,MAAhB,EAAwB,CAAC,eAAD,EAAkB,uBAAlB,CAAxB,CAJO,CAjDJ;IAuDLU,KAAK,EAAE,IAAAT,2BAAA,EACL,IAAAC,4BAAA,EAAcF,MAAM,CAACU,KAAP,CAAanD,IAAb,CAAkByC,MAAlB,CAAd,CADK,EAEL,OAFK,EAGL,IAAAG,iCAAA,EAAmBH,MAAnB,CAHK,EAIL,IAAAI,8BAAA,EAAgBJ,MAAhB,EAAwB,CAAC,eAAD,EAAkB,uBAAlB,CAAxB,CAJK,CAvDF;IA6DLhC,SAAS,EAAE,IAAAiC,2BAAA,EACTD,MAAM,CAAChC,SAAP,CAAiBT,IAAjB,CAAsByC,MAAtB,CADS,EAET,WAFS,EAGT,IAAAG,iCAAA,EAAmBH,MAAnB,CAHS,EAIT,IAAAI,8BAAA,EAAgBJ,MAAhB,EAAwB,CAAC,QAAD,EAAW,eAAX,CAAxB,CAJS,CA7DN;IAmEL/B,SAAS,EAAE,IAAAgC,2BAAA,EACTD,MAAM,CAAC/B,SAAP,CAAiBV,IAAjB,CAAsByC,MAAtB,CADS,EAET,WAFS,EAGT,IAAAG,iCAAA,EAAmBH,MAAnB,CAHS,EAIT,IAAAI,8BAAA,EAAgBJ,MAAhB,EAAwB,CAAC,QAAD,EAAW,eAAX,CAAxB,CAJS,CAnEN;IAyEL1B,WAAW,EAAE,IAAA2B,2BAAA,EACXD,MAAM,CAAC1B,WAAP,CAAmBf,IAAnB,CAAwByC,MAAxB,CADW,EAEX,aAFW,EAGX,IAAAG,iCAAA,EAAmBH,MAAnB,CAHW,EAIX,IAAAI,8BAAA,EAAgBJ,MAAhB,EAAwB,CAAC,QAAD,EAAW,iBAAX,CAAxB,CAJW,CAzER;IA+ELzB,WAAW,EAAE,IAAA0B,2BAAA,EACXD,MAAM,CAACzB,WAAP,CAAmBhB,IAAnB,CAAwByC,MAAxB,CADW,EAEX,aAFW,EAGX,IAAAG,iCAAA,EAAmBH,MAAnB,CAHW,EAIX,IAAAI,8BAAA,EAAgBJ,MAAhB,EAAwB,CAAC,QAAD,EAAW,iBAAX,CAAxB,CAJW,CA/ER;IAqFLpB,KAAK,EAAE,IAAAqB,2BAAA,EACLD,MAAM,CAACpB,KAAP,CAAarB,IAAb,CAAkByC,MAAlB,CADK,EAEL,OAFK,EAGL,IAAAG,iCAAA,EAAmBH,MAAnB,CAHK,EAIL,IAAAI,8BAAA,EAAgBJ,MAAhB,EAAwB,CAAC,QAAD,EAAW,eAAX,EAA4B,iBAA5B,CAAxB,CAJK,CArFF;IA2FLjB,YAAY,EAAE,IAAAkB,2BAAA,EACZD,MAAM,CAACjB,YAAP,CAAoBxB,IAApB,CAAyByC,MAAzB,CADY,EAEZ,cAFY,EAGZ,IAAAG,iCAAA,EAAmBH,MAAnB,CAHY,EAIZ,IAAAI,8BAAA,EAAgBJ,MAAhB,EAAwB,CAAC,QAAD,CAAxB,CAJY,CA3FT;IAiGLvC,YAAY,EAAE,IAAAwC,2BAAA,EACZD,MAAM,CAACvC,YAAP,CAAoBF,IAApB,CAAyByC,MAAzB,CADY,EAEZ,cAFY,EAGZ,IAAAG,iCAAA,EAAmBH,MAAnB,CAHY,EAIZ,IAAAI,8BAAA,EAAgBJ,MAAhB,EAAwB,CAAC,QAAD,CAAxB,CAJY,CAjGT;IAuGLW,SAAS,EAAE,IAAAV,2BAAA,EACTD,MAAM,CAACW,SAAP,CAAiBpD,IAAjB,CAAsByC,MAAtB,CADS,EAET,WAFS,EAGT,IAAAG,iCAAA,EAAmBH,MAAnB,CAHS,EAIT,IAAAI,8BAAA,EAAgBJ,MAAhB,EAAwB,CAAC,QAAD,CAAxB,CAJS;EAvGN,CAAP;AA8GD,CAhHM;;;;eAkHQD,cAAc,E"}
|
package/lib/commonjs/version.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["VERSION"],"sources":["version.ts"],"sourcesContent":["export const VERSION = '0.
|
|
1
|
+
{"version":3,"names":["VERSION"],"sources":["version.ts"],"sourcesContent":["export const VERSION = '0.6.0';\n"],"mappings":";;;;;;AAAO,MAAMA,OAAO,GAAG,OAAhB"}
|
package/lib/module/config.js
CHANGED
|
@@ -27,12 +27,13 @@ export const getDefaultConfig = () => {
|
|
|
27
27
|
sessionTimeout: 30 * 60 * 1000,
|
|
28
28
|
storageProvider: new MemoryStorage(),
|
|
29
29
|
trackingOptions,
|
|
30
|
-
transportProvider: new FetchTransport()
|
|
30
|
+
transportProvider: new FetchTransport(),
|
|
31
|
+
trackingSessionEvents: false
|
|
31
32
|
};
|
|
32
33
|
};
|
|
33
34
|
export class ReactNativeConfig extends Config {
|
|
34
35
|
constructor(apiKey, userId, options) {
|
|
35
|
-
var _options$storageProvi, _options$transportPro, _options$cookieStorag, _options$sessionManag, _options$sessionTimeo, _options$cookieExpira, _options$cookieSameSi, _options$cookieSecure, _options$disableCooki, _options$domain, _this$lastEventTime, _options$trackingOpti;
|
|
36
|
+
var _options$storageProvi, _options$transportPro, _options$cookieStorag, _options$sessionManag, _options$sessionTimeo, _options$cookieExpira, _options$cookieSameSi, _options$cookieSecure, _options$disableCooki, _options$domain, _this$lastEventTime, _options$trackingOpti, _options$trackingSess;
|
|
36
37
|
|
|
37
38
|
const defaultConfig = getDefaultConfig();
|
|
38
39
|
super({
|
|
@@ -67,6 +68,8 @@ export class ReactNativeConfig extends Config {
|
|
|
67
68
|
|
|
68
69
|
_defineProperty(this, "sessionManager", void 0);
|
|
69
70
|
|
|
71
|
+
_defineProperty(this, "trackingSessionEvents", void 0);
|
|
72
|
+
|
|
70
73
|
this.cookieStorage = (_options$cookieStorag = options === null || options === void 0 ? void 0 : options.cookieStorage) !== null && _options$cookieStorag !== void 0 ? _options$cookieStorag : defaultConfig.cookieStorage;
|
|
71
74
|
this.sessionManager = (_options$sessionManag = options === null || options === void 0 ? void 0 : options.sessionManager) !== null && _options$sessionManag !== void 0 ? _options$sessionManag : defaultConfig.sessionManager;
|
|
72
75
|
this.sessionTimeout = (_options$sessionTimeo = options === null || options === void 0 ? void 0 : options.sessionTimeout) !== null && _options$sessionTimeo !== void 0 ? _options$sessionTimeo : defaultConfig.sessionTimeout;
|
|
@@ -83,6 +86,7 @@ export class ReactNativeConfig extends Config {
|
|
|
83
86
|
this.sessionId = options === null || options === void 0 ? void 0 : options.sessionId;
|
|
84
87
|
this.trackingOptions = (_options$trackingOpti = options === null || options === void 0 ? void 0 : options.trackingOptions) !== null && _options$trackingOpti !== void 0 ? _options$trackingOpti : defaultConfig.trackingOptions;
|
|
85
88
|
this.userId = userId;
|
|
89
|
+
this.trackingSessionEvents = (_options$trackingSess = options === null || options === void 0 ? void 0 : options.trackingSessionEvents) !== null && _options$trackingSess !== void 0 ? _options$trackingSess : defaultConfig.trackingSessionEvents;
|
|
86
90
|
}
|
|
87
91
|
|
|
88
92
|
get deviceId() {
|