@amplitude/analytics-react-native 0.2.2 → 0.3.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 (46) hide show
  1. package/android/src/main/java/com/amplitude/reactnative/AmplitudeReactNativeModule.kt +2 -1
  2. package/android/src/main/java/com/amplitude/reactnative/AndroidContextProvider.kt +5 -0
  3. package/lib/commonjs/config.js +12 -15
  4. package/lib/commonjs/config.js.map +1 -1
  5. package/lib/commonjs/index.js +45 -106
  6. package/lib/commonjs/index.js.map +1 -1
  7. package/lib/commonjs/plugins/context.js +4 -0
  8. package/lib/commonjs/plugins/context.js.map +1 -1
  9. package/lib/commonjs/react-native-client.js +40 -228
  10. package/lib/commonjs/react-native-client.js.map +1 -1
  11. package/lib/commonjs/utils/query-params.js +18 -6
  12. package/lib/commonjs/utils/query-params.js.map +1 -1
  13. package/lib/commonjs/version.js +1 -1
  14. package/lib/commonjs/version.js.map +1 -1
  15. package/lib/module/config.js +12 -15
  16. package/lib/module/config.js.map +1 -1
  17. package/lib/module/index.js +23 -1
  18. package/lib/module/index.js.map +1 -1
  19. package/lib/module/plugins/context.js +4 -0
  20. package/lib/module/plugins/context.js.map +1 -1
  21. package/lib/module/react-native-client.js +34 -210
  22. package/lib/module/react-native-client.js.map +1 -1
  23. package/lib/module/utils/query-params.js +14 -4
  24. package/lib/module/utils/query-params.js.map +1 -1
  25. package/lib/module/version.js +1 -1
  26. package/lib/module/version.js.map +1 -1
  27. package/lib/typescript/attribution/campaign-tracker.d.ts +3 -0
  28. package/lib/typescript/attribution/campaign-tracker.d.ts.map +1 -1
  29. package/lib/typescript/config.d.ts +4 -32
  30. package/lib/typescript/config.d.ts.map +1 -1
  31. package/lib/typescript/index.d.ts +2 -1
  32. package/lib/typescript/index.d.ts.map +1 -1
  33. package/lib/typescript/plugins/context.d.ts +1 -0
  34. package/lib/typescript/plugins/context.d.ts.map +1 -1
  35. package/lib/typescript/react-native-client.d.ts +4 -190
  36. package/lib/typescript/react-native-client.d.ts.map +1 -1
  37. package/lib/typescript/utils/query-params.d.ts +1 -0
  38. package/lib/typescript/utils/query-params.d.ts.map +1 -1
  39. package/lib/typescript/version.d.ts +1 -1
  40. package/package.json +4 -4
  41. package/src/config.ts +14 -17
  42. package/src/index.ts +5 -2
  43. package/src/plugins/context.ts +3 -0
  44. package/src/react-native-client.ts +35 -208
  45. package/src/utils/query-params.ts +13 -5
  46. package/src/version.ts +1 -1
@@ -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","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","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 '../utils/language';\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};\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\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 insert_id: UUID(),\n partner_id: this.config.partnerId,\n plan: this.config.plan,\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","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","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 '../utils/language';\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 ...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,4 +1,4 @@
1
- import { AmplitudeCore, Destination, returnWrapper, UUID } from '@amplitude/analytics-core';
1
+ import { AmplitudeCore, Destination, UUID, returnWrapper } from '@amplitude/analytics-core';
2
2
  import { Context } from './plugins/context';
3
3
  import { useReactNativeConfig, createFlexibleStorage } from './config';
4
4
  import { parseOldCookies } from './cookie-migration';
@@ -10,7 +10,13 @@ export class AmplitudeReactNative extends AmplitudeCore {
10
10
  async init(apiKey, userId, options) {
11
11
  var _oldCookies$deviceId, _oldCookies$sessionId, _options$optOut;
12
12
 
13
- // Step 1: Read cookies stored by old SDK
13
+ // Step 0: Block concurrent initialization
14
+ if (this.initializing) {
15
+ return;
16
+ }
17
+
18
+ this.initializing = true; // Step 1: Read cookies stored by old SDK
19
+
14
20
  const oldCookies = await parseOldCookies(apiKey, options); // Step 2: Create react native config
15
21
 
16
22
  const reactNativeOptions = await useReactNativeConfig(apiKey, userId || oldCookies.userId, { ...options,
@@ -46,7 +52,8 @@ export class AmplitudeReactNative extends AmplitudeCore {
46
52
 
47
53
  await this.add(new Context());
48
54
  await this.add(new IdentityEventSender());
49
- await this.add(new Destination()); // Step 5: Set timeline ready for processing events
55
+ await this.add(new Destination());
56
+ this.initializing = false; // Step 5: Set timeline ready for processing events
50
57
  // Send existing events, which might be collected by track before init
51
58
 
52
59
  this.timeline.isReady = true;
@@ -134,211 +141,28 @@ export class AmplitudeReactNative extends AmplitudeCore {
134
141
  }
135
142
 
136
143
  }
137
- const client = new AmplitudeReactNative();
138
- /**
139
- * Initializes the Amplitude SDK with your apiKey, userId and optional configurations.
140
- * This method must be called before any other operations.
141
- *
142
- * ```typescript
143
- * await init(API_KEY, USER_ID, options).promise;
144
- * ```
145
- */
146
-
147
- export const init = returnWrapper(client.init.bind(client));
148
- /**
149
- * Adds a new plugin.
150
- *
151
- * ```typescript
152
- * const plugin = {...};
153
- * amplitude.add(plugin);
154
- * ```
155
- */
156
-
157
- export const add = returnWrapper(client.add.bind(client));
158
- /**
159
- * Removes a plugin.
160
- *
161
- * ```typescript
162
- * amplitude.remove('myPlugin');
163
- * ```
164
- */
165
-
166
- export const remove = returnWrapper(client.remove.bind(client));
167
- /**
168
- * Tracks user-defined event, with specified type, optional event properties and optional overwrites.
169
- *
170
- * ```typescript
171
- * // event tracking with event type only
172
- * track('Page Load');
173
- *
174
- * // event tracking with event type and additional event properties
175
- * track('Page Load', { loadTime: 1000 });
176
- *
177
- * // event tracking with event type, additional event properties, and overwritten event options
178
- * track('Page Load', { loadTime: 1000 }, { sessionId: -1 });
179
- *
180
- * // alternatively, this tracking method is awaitable
181
- * const result = await track('Page Load').promise;
182
- * console.log(result.event); // {...}
183
- * console.log(result.code); // 200
184
- * console.log(result.message); // "Event tracked successfully"
185
- * ```
186
- */
187
-
188
- export const track = returnWrapper(client.track.bind(client));
189
- /**
190
- * Alias for track()
191
- */
192
-
193
- export const logEvent = returnWrapper(client.logEvent.bind(client));
194
- /**
195
- * Sends an identify event containing user property operations
196
- *
197
- * ```typescript
198
- * const id = new Identify();
199
- * id.set('colors', ['rose', 'gold']);
200
- * identify(id);
201
- *
202
- * // alternatively, this tracking method is awaitable
203
- * const result = await identify(id).promise;
204
- * console.log(result.event); // {...}
205
- * console.log(result.code); // 200
206
- * console.log(result.message); // "Event tracked successfully"
207
- * ```
208
- */
209
-
210
- export const identify = returnWrapper(client.identify.bind(client));
211
- /**
212
- * Sends a group identify event containing group property operations.
213
- *
214
- * ```typescript
215
- * const id = new Identify();
216
- * id.set('skills', ['js', 'ts']);
217
- * const groupType = 'org';
218
- * const groupName = 'engineering';
219
- * groupIdentify(groupType, groupName, id);
220
- *
221
- * // alternatively, this tracking method is awaitable
222
- * const result = await groupIdentify(groupType, groupName, id).promise;
223
- * console.log(result.event); // {...}
224
- * console.log(result.code); // 200
225
- * console.log(result.message); // "Event tracked successfully"
226
- * ```
227
- */
228
-
229
- export const groupIdentify = returnWrapper(client.groupIdentify.bind(client));
230
- export const setGroup = returnWrapper(client.setGroup.bind(client));
231
- /**
232
- * Sends a revenue event containing revenue property operations.
233
- *
234
- * ```typescript
235
- * const rev = new Revenue();
236
- * rev.setRevenue(100);
237
- * revenue(rev);
238
- *
239
- * // alternatively, this tracking method is awaitable
240
- * const result = await revenue(rev).promise;
241
- * console.log(result.event); // {...}
242
- * console.log(result.code); // 200
243
- * console.log(result.message); // "Event tracked successfully"
244
- * ```
245
- */
246
-
247
- export const revenue = returnWrapper(client.revenue.bind(client));
248
- /**
249
- * Returns current user ID.
250
- *
251
- * ```typescript
252
- * const userId = getUserId();
253
- * ```
254
- */
255
-
256
- export const getUserId = client.getUserId.bind(client);
257
- /**
258
- * Sets a new user ID.
259
- *
260
- * ```typescript
261
- * setUserId('userId');
262
- * ```
263
- */
264
-
265
- export const setUserId = client.setUserId.bind(client);
266
- /**
267
- * Returns current device ID.
268
- *
269
- * ```typescript
270
- * const deviceId = getDeviceId();
271
- * ```
272
- */
273
-
274
- export const getDeviceId = client.getDeviceId.bind(client);
275
- /**
276
- * Sets a new device ID.
277
- * When setting a custom device ID, make sure the value is sufficiently unique.
278
- * A uuid is recommended.
279
- *
280
- * ```typescript
281
- * setDeviceId('deviceId');
282
- * ```
283
- */
284
-
285
- export const setDeviceId = client.setDeviceId.bind(client);
286
- /**
287
- * reset is a shortcut to anonymize users after they log out, by:
288
- * - setting userId to `undefined`
289
- * - regenerating a new random deviceId
290
- *
291
- * With an `undefined` userId and a completely new deviceId, the current user would appear as a brand new user in dashboard.
292
- *
293
- * ```typescript
294
- * reset();
295
- * ```
296
- */
297
-
298
- export const reset = client.reset.bind(client);
299
- /**
300
- * Returns current session ID.
301
- *
302
- * ```typescript
303
- * const sessionId = getSessionId();
304
- * ```
305
- */
306
-
307
- export const getSessionId = client.getSessionId.bind(client);
308
- /**
309
- * Sets a new session ID.
310
- * When settign a custom session ID, make sure the value is in milliseconds since epoch (Unix Timestamp).
311
- *
312
- * ```typescript
313
- * setSessionId(Date.now());
314
- * ```
315
- */
316
-
317
- export const setSessionId = client.setSessionId.bind(client);
318
- /**
319
- * Sets a new optOut config value. This toggles event tracking on/off.
320
- *
321
- *```typescript
322
- * // Stops tracking
323
- * setOptOut(true);
324
- *
325
- * // Starts/resumes tracking
326
- * setOptOut(false);
327
- * ```
328
- */
329
-
330
- export const setOptOut = client.setOptOut.bind(client);
331
- /**
332
- * Flush and send all the events which haven't been sent.
333
- *
334
- *```typescript
335
- * // Send all the unsent events
336
- * flush();
337
- *
338
- * // alternatively, this tracking method is awaitable
339
- * await flush().promise;
340
- * ```
341
- */
342
-
343
- export const flush = returnWrapper(client.flush.bind(client));
144
+ export const createInstance = () => {
145
+ const client = new AmplitudeReactNative();
146
+ return {
147
+ init: returnWrapper(client.init.bind(client)),
148
+ add: returnWrapper(client.add.bind(client)),
149
+ remove: returnWrapper(client.remove.bind(client)),
150
+ track: returnWrapper(client.track.bind(client)),
151
+ logEvent: returnWrapper(client.logEvent.bind(client)),
152
+ identify: returnWrapper(client.identify.bind(client)),
153
+ groupIdentify: returnWrapper(client.groupIdentify.bind(client)),
154
+ setGroup: returnWrapper(client.setGroup.bind(client)),
155
+ revenue: returnWrapper(client.revenue.bind(client)),
156
+ flush: returnWrapper(client.flush.bind(client)),
157
+ getUserId: client.getUserId.bind(client),
158
+ setUserId: client.setUserId.bind(client),
159
+ getDeviceId: client.getDeviceId.bind(client),
160
+ setDeviceId: client.setDeviceId.bind(client),
161
+ reset: client.reset.bind(client),
162
+ getSessionId: client.getSessionId.bind(client),
163
+ setSessionId: client.setSessionId.bind(client),
164
+ setOptOut: client.setOptOut.bind(client)
165
+ };
166
+ };
167
+ export default createInstance();
344
168
  //# sourceMappingURL=react-native-client.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["AmplitudeCore","Destination","returnWrapper","UUID","Context","useReactNativeConfig","createFlexibleStorage","parseOldCookies","CampaignTracker","isNative","IdentityEventSender","getAnalyticsConnector","AmplitudeReactNative","init","apiKey","userId","options","oldCookies","reactNativeOptions","deviceId","sessionId","optOut","lastEventTime","_init","isNewSession","config","Date","now","sessionTimeout","setSessionId","connector","eventBridge","setEventReceiver","event","track","eventType","eventProperties","identityStore","setIdentity","add","timeline","isReady","scheduleApply","runAttributionStrategy","attribution","attributionConfig","bind","onNewCampaign","storage","campaignTracker","send","getUserId","setUserId","q","push","editIdentity","commit","getDeviceId","setDeviceId","reset","undefined","getSessionId","client","remove","logEvent","identify","groupIdentify","setGroup","revenue","setOptOut","flush"],"sources":["react-native-client.ts"],"sourcesContent":["import { AmplitudeCore, Destination, returnWrapper, UUID } from '@amplitude/analytics-core';\nimport {\n ReactNativeConfig,\n Campaign,\n ReactNativeOptions,\n AdditionalReactNativeOptions,\n AttributionReactNativeOptions,\n} from '@amplitude/analytics-types';\nimport { Context } from './plugins/context';\nimport { useReactNativeConfig, createFlexibleStorage } from './config';\nimport { parseOldCookies } from './cookie-migration';\nimport { CampaignTracker } from './attribution/campaign-tracker';\nimport { isNative } from './utils/platform';\nimport { IdentityEventSender } from './plugins/identity';\nimport { getAnalyticsConnector } from './utils/analytics-connector';\n\nexport class AmplitudeReactNative extends AmplitudeCore<ReactNativeConfig> {\n async init(apiKey: string, userId?: string, options?: ReactNativeOptions & AdditionalReactNativeOptions) {\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 // Step 5: Set timeline ready for processing events\n // Send existing events, which might be collected by track before init\n this.timeline.isReady = true;\n if (!this.config.optOut) {\n this.timeline.scheduleApply(0);\n }\n\n // Step 6: Track attributions\n await this.runAttributionStrategy(options?.attribution, isNewSession);\n }\n\n async runAttributionStrategy(attributionConfig?: AttributionReactNativeOptions, 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 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\nconst client = new AmplitudeReactNative();\n\n/**\n * Initializes the Amplitude SDK with your apiKey, userId and optional configurations.\n * This method must be called before any other operations.\n *\n * ```typescript\n * await init(API_KEY, USER_ID, options).promise;\n * ```\n */\nexport const init = returnWrapper(client.init.bind(client));\n\n/**\n * Adds a new plugin.\n *\n * ```typescript\n * const plugin = {...};\n * amplitude.add(plugin);\n * ```\n */\nexport const add = returnWrapper(client.add.bind(client));\n\n/**\n * Removes a plugin.\n *\n * ```typescript\n * amplitude.remove('myPlugin');\n * ```\n */\nexport const remove = returnWrapper(client.remove.bind(client));\n\n/**\n * Tracks user-defined event, with specified type, optional event properties and optional overwrites.\n *\n * ```typescript\n * // event tracking with event type only\n * track('Page Load');\n *\n * // event tracking with event type and additional event properties\n * track('Page Load', { loadTime: 1000 });\n *\n * // event tracking with event type, additional event properties, and overwritten event options\n * track('Page Load', { loadTime: 1000 }, { sessionId: -1 });\n *\n * // alternatively, this tracking method is awaitable\n * const result = await track('Page Load').promise;\n * console.log(result.event); // {...}\n * console.log(result.code); // 200\n * console.log(result.message); // \"Event tracked successfully\"\n * ```\n */\nexport const track = returnWrapper(client.track.bind(client));\n\n/**\n * Alias for track()\n */\nexport const logEvent = returnWrapper(client.logEvent.bind(client));\n\n/**\n * Sends an identify event containing user property operations\n *\n * ```typescript\n * const id = new Identify();\n * id.set('colors', ['rose', 'gold']);\n * identify(id);\n *\n * // alternatively, this tracking method is awaitable\n * const result = await identify(id).promise;\n * console.log(result.event); // {...}\n * console.log(result.code); // 200\n * console.log(result.message); // \"Event tracked successfully\"\n * ```\n */\nexport const identify = returnWrapper(client.identify.bind(client));\n\n/**\n * Sends a group identify event containing group property operations.\n *\n * ```typescript\n * const id = new Identify();\n * id.set('skills', ['js', 'ts']);\n * const groupType = 'org';\n * const groupName = 'engineering';\n * groupIdentify(groupType, groupName, id);\n *\n * // alternatively, this tracking method is awaitable\n * const result = await groupIdentify(groupType, groupName, id).promise;\n * console.log(result.event); // {...}\n * console.log(result.code); // 200\n * console.log(result.message); // \"Event tracked successfully\"\n * ```\n */\nexport const groupIdentify = returnWrapper(client.groupIdentify.bind(client));\nexport const setGroup = returnWrapper(client.setGroup.bind(client));\n\n/**\n * Sends a revenue event containing revenue property operations.\n *\n * ```typescript\n * const rev = new Revenue();\n * rev.setRevenue(100);\n * revenue(rev);\n *\n * // alternatively, this tracking method is awaitable\n * const result = await revenue(rev).promise;\n * console.log(result.event); // {...}\n * console.log(result.code); // 200\n * console.log(result.message); // \"Event tracked successfully\"\n * ```\n */\nexport const revenue = returnWrapper(client.revenue.bind(client));\n\n/**\n * Returns current user ID.\n *\n * ```typescript\n * const userId = getUserId();\n * ```\n */\nexport const getUserId = client.getUserId.bind(client);\n\n/**\n * Sets a new user ID.\n *\n * ```typescript\n * setUserId('userId');\n * ```\n */\nexport const setUserId = client.setUserId.bind(client);\n\n/**\n * Returns current device ID.\n *\n * ```typescript\n * const deviceId = getDeviceId();\n * ```\n */\nexport const getDeviceId = client.getDeviceId.bind(client);\n\n/**\n * Sets a new device ID.\n * When setting a custom device ID, make sure the value is sufficiently unique.\n * A uuid is recommended.\n *\n * ```typescript\n * setDeviceId('deviceId');\n * ```\n */\nexport const setDeviceId = client.setDeviceId.bind(client);\n\n/**\n * reset is a shortcut to anonymize users after they log out, by:\n * - setting userId to `undefined`\n * - regenerating a new random deviceId\n *\n * With an `undefined` userId and a completely new deviceId, the current user would appear as a brand new user in dashboard.\n *\n * ```typescript\n * reset();\n * ```\n */\nexport const reset = client.reset.bind(client);\n\n/**\n * Returns current session ID.\n *\n * ```typescript\n * const sessionId = getSessionId();\n * ```\n */\nexport const getSessionId = client.getSessionId.bind(client);\n\n/**\n * Sets a new session ID.\n * When settign a custom session ID, make sure the value is in milliseconds since epoch (Unix Timestamp).\n *\n * ```typescript\n * setSessionId(Date.now());\n * ```\n */\nexport const setSessionId = client.setSessionId.bind(client);\n\n/**\n * Sets a new optOut config value. This toggles event tracking on/off.\n *\n *```typescript\n * // Stops tracking\n * setOptOut(true);\n *\n * // Starts/resumes tracking\n * setOptOut(false);\n * ```\n */\nexport const setOptOut = client.setOptOut.bind(client);\n\n/**\n * Flush and send all the events which haven't been sent.\n *\n *```typescript\n * // Send all the unsent events\n * flush();\n *\n * // alternatively, this tracking method is awaitable\n * await flush().promise;\n * ```\n */\nexport const flush = returnWrapper(client.flush.bind(client));\n"],"mappings":"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"}
1
+ {"version":3,"names":["AmplitudeCore","Destination","UUID","returnWrapper","Context","useReactNativeConfig","createFlexibleStorage","parseOldCookies","CampaignTracker","isNative","IdentityEventSender","getAnalyticsConnector","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","timeline","isReady","scheduleApply","runAttributionStrategy","attribution","attributionConfig","bind","onNewCampaign","storage","campaignTracker","send","getUserId","setUserId","q","push","editIdentity","commit","getDeviceId","setDeviceId","reset","undefined","getSessionId","createInstance","client","remove","logEvent","identify","groupIdentify","setGroup","revenue","flush","setOptOut"],"sources":["react-native-client.ts"],"sourcesContent":["import { AmplitudeCore, Destination, UUID, returnWrapper } from '@amplitude/analytics-core';\nimport {\n ReactNativeConfig,\n Campaign,\n ReactNativeOptions,\n AdditionalReactNativeOptions,\n AttributionReactNativeOptions,\n ReactNativeClient,\n} from '@amplitude/analytics-types';\nimport { Context } from './plugins/context';\nimport { useReactNativeConfig, createFlexibleStorage } from './config';\nimport { parseOldCookies } from './cookie-migration';\nimport { CampaignTracker } from './attribution/campaign-tracker';\nimport { isNative } from './utils/platform';\nimport { IdentityEventSender } from './plugins/identity';\nimport { getAnalyticsConnector } from './utils/analytics-connector';\n\nexport class AmplitudeReactNative extends AmplitudeCore<ReactNativeConfig> {\n async init(apiKey: string, userId?: string, options?: ReactNativeOptions & AdditionalReactNativeOptions) {\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: Set timeline ready for processing events\n // Send existing events, which might be collected by track before init\n this.timeline.isReady = true;\n if (!this.config.optOut) {\n this.timeline.scheduleApply(0);\n }\n\n // Step 6: Track attributions\n await this.runAttributionStrategy(options?.attribution, isNewSession);\n }\n\n async runAttributionStrategy(attributionConfig?: AttributionReactNativeOptions, 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 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: returnWrapper(client.init.bind(client)),\n add: returnWrapper(client.add.bind(client)),\n remove: returnWrapper(client.remove.bind(client)),\n track: returnWrapper(client.track.bind(client)),\n logEvent: returnWrapper(client.logEvent.bind(client)),\n identify: returnWrapper(client.identify.bind(client)),\n groupIdentify: returnWrapper(client.groupIdentify.bind(client)),\n setGroup: returnWrapper(client.setGroup.bind(client)),\n revenue: returnWrapper(client.revenue.bind(client)),\n flush: returnWrapper(client.flush.bind(client)),\n getUserId: client.getUserId.bind(client),\n setUserId: client.setUserId.bind(client),\n getDeviceId: client.getDeviceId.bind(client),\n setDeviceId: client.setDeviceId.bind(client),\n reset: client.reset.bind(client),\n getSessionId: client.getSessionId.bind(client),\n setSessionId: client.setSessionId.bind(client),\n setOptOut: client.setOptOut.bind(client),\n };\n};\n\nexport default createInstance();\n"],"mappings":"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"}
@@ -1,21 +1,31 @@
1
- import { isNative } from './platform';
2
1
  export const getQueryParams = () => {
3
2
  /* istanbul ignore if */
4
- if (isNative() || typeof window === 'undefined') {
3
+ if (typeof window === 'undefined') {
5
4
  return {};
6
5
  }
7
6
 
8
7
  const pairs = window.location.search.substring(1).split('&').filter(Boolean);
9
8
  const params = pairs.reduce((acc, curr) => {
10
- const [key, value = ''] = curr.split('=', 2);
9
+ const query = curr.split('=', 2);
10
+ const key = tryDecodeURIComponent(query[0]);
11
+ const value = tryDecodeURIComponent(query[1]);
11
12
 
12
13
  if (!value) {
13
14
  return acc;
14
15
  }
15
16
 
16
- acc[decodeURIComponent(key)] = decodeURIComponent(value);
17
+ acc[key] = value;
17
18
  return acc;
18
19
  }, {});
19
20
  return params;
20
21
  };
22
+ export const tryDecodeURIComponent = function () {
23
+ let value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
24
+
25
+ try {
26
+ return decodeURIComponent(value);
27
+ } catch {
28
+ return '';
29
+ }
30
+ };
21
31
  //# sourceMappingURL=query-params.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["isNative","getQueryParams","window","pairs","location","search","substring","split","filter","Boolean","params","reduce","acc","curr","key","value","decodeURIComponent"],"sources":["query-params.ts"],"sourcesContent":["import { isNative } from './platform';\n\nexport const getQueryParams = (): Record<string, string | undefined> => {\n /* istanbul ignore if */\n if (isNative() || typeof window === 'undefined') {\n return {};\n }\n const pairs = window.location.search.substring(1).split('&').filter(Boolean);\n const params = pairs.reduce<Record<string, string | undefined>>((acc, curr) => {\n const [key, value = ''] = curr.split('=', 2);\n if (!value) {\n return acc;\n }\n acc[decodeURIComponent(key)] = decodeURIComponent(value);\n return acc;\n }, {});\n return params;\n};\n"],"mappings":"AAAA,SAASA,QAAT,QAAyB,YAAzB;AAEA,OAAO,MAAMC,cAAc,GAAG,MAA0C;EACtE;EACA,IAAID,QAAQ,MAAM,OAAOE,MAAP,KAAkB,WAApC,EAAiD;IAC/C,OAAO,EAAP;EACD;;EACD,MAAMC,KAAK,GAAGD,MAAM,CAACE,QAAP,CAAgBC,MAAhB,CAAuBC,SAAvB,CAAiC,CAAjC,EAAoCC,KAApC,CAA0C,GAA1C,EAA+CC,MAA/C,CAAsDC,OAAtD,CAAd;EACA,MAAMC,MAAM,GAAGP,KAAK,CAACQ,MAAN,CAAiD,CAACC,GAAD,EAAMC,IAAN,KAAe;IAC7E,MAAM,CAACC,GAAD,EAAMC,KAAK,GAAG,EAAd,IAAoBF,IAAI,CAACN,KAAL,CAAW,GAAX,EAAgB,CAAhB,CAA1B;;IACA,IAAI,CAACQ,KAAL,EAAY;MACV,OAAOH,GAAP;IACD;;IACDA,GAAG,CAACI,kBAAkB,CAACF,GAAD,CAAnB,CAAH,GAA+BE,kBAAkB,CAACD,KAAD,CAAjD;IACA,OAAOH,GAAP;EACD,CAPc,EAOZ,EAPY,CAAf;EAQA,OAAOF,MAAP;AACD,CAfM"}
1
+ {"version":3,"names":["getQueryParams","window","pairs","location","search","substring","split","filter","Boolean","params","reduce","acc","curr","query","key","tryDecodeURIComponent","value","decodeURIComponent"],"sources":["query-params.ts"],"sourcesContent":["export const getQueryParams = (): Record<string, string | undefined> => {\n /* istanbul ignore if */\n if (typeof window === 'undefined') {\n return {};\n }\n const pairs = window.location.search.substring(1).split('&').filter(Boolean);\n const params = pairs.reduce<Record<string, string | undefined>>((acc, curr) => {\n const query = curr.split('=', 2);\n const key = tryDecodeURIComponent(query[0]);\n const value = tryDecodeURIComponent(query[1]);\n if (!value) {\n return acc;\n }\n acc[key] = value;\n return acc;\n }, {});\n return params;\n};\n\nexport const tryDecodeURIComponent = (value = '') => {\n try {\n return decodeURIComponent(value);\n } catch {\n return '';\n }\n};\n"],"mappings":"AAAA,OAAO,MAAMA,cAAc,GAAG,MAA0C;EACtE;EACA,IAAI,OAAOC,MAAP,KAAkB,WAAtB,EAAmC;IACjC,OAAO,EAAP;EACD;;EACD,MAAMC,KAAK,GAAGD,MAAM,CAACE,QAAP,CAAgBC,MAAhB,CAAuBC,SAAvB,CAAiC,CAAjC,EAAoCC,KAApC,CAA0C,GAA1C,EAA+CC,MAA/C,CAAsDC,OAAtD,CAAd;EACA,MAAMC,MAAM,GAAGP,KAAK,CAACQ,MAAN,CAAiD,CAACC,GAAD,EAAMC,IAAN,KAAe;IAC7E,MAAMC,KAAK,GAAGD,IAAI,CAACN,KAAL,CAAW,GAAX,EAAgB,CAAhB,CAAd;IACA,MAAMQ,GAAG,GAAGC,qBAAqB,CAACF,KAAK,CAAC,CAAD,CAAN,CAAjC;IACA,MAAMG,KAAK,GAAGD,qBAAqB,CAACF,KAAK,CAAC,CAAD,CAAN,CAAnC;;IACA,IAAI,CAACG,KAAL,EAAY;MACV,OAAOL,GAAP;IACD;;IACDA,GAAG,CAACG,GAAD,CAAH,GAAWE,KAAX;IACA,OAAOL,GAAP;EACD,CATc,EASZ,EATY,CAAf;EAUA,OAAOF,MAAP;AACD,CAjBM;AAmBP,OAAO,MAAMM,qBAAqB,GAAG,YAAgB;EAAA,IAAfC,KAAe,uEAAP,EAAO;;EACnD,IAAI;IACF,OAAOC,kBAAkB,CAACD,KAAD,CAAzB;EACD,CAFD,CAEE,MAAM;IACN,OAAO,EAAP;EACD;AACF,CANM"}
@@ -1,2 +1,2 @@
1
- export const VERSION = '0.2.2';
1
+ export const VERSION = '0.3.0';
2
2
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["VERSION"],"sources":["version.ts"],"sourcesContent":["export const VERSION = '0.2.2';\n"],"mappings":"AAAA,OAAO,MAAMA,OAAO,GAAG,OAAhB"}
1
+ {"version":3,"names":["VERSION"],"sources":["version.ts"],"sourcesContent":["export const VERSION = '0.3.0';\n"],"mappings":"AAAA,OAAO,MAAMA,OAAO,GAAG,OAAhB"}
@@ -65,6 +65,9 @@ export declare class CampaignTracker implements ICampaignTracker {
65
65
  insert_id?: string | undefined;
66
66
  plan?: import("@amplitude/analytics-types").Plan | undefined;
67
67
  partner_id?: string | undefined;
68
+ extra?: {
69
+ [key: string]: any;
70
+ } | undefined;
68
71
  };
69
72
  send(isNewSession: boolean): Promise<void>;
70
73
  }
@@ -1 +1 @@
1
- {"version":3,"file":"campaign-tracker.d.ts","sourceRoot":"","sources":["../../../src/attribution/campaign-tracker.ts"],"names":[],"mappings":"AACA,OAAO,EACL,OAAO,EACP,QAAQ,EACR,cAAc,IAAI,eAAe,EACjC,eAAe,IAAI,gBAAgB,EACnC,qBAAqB,EACrB,sBAAsB,EAEvB,MAAM,4BAA4B,CAAC;AAKpC,qBAAa,eAAgB,YAAW,gBAAgB;IACtD,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,eAAe,CAAC;IACxB,KAAK,EAAE,qBAAqB,CAAC;IAC7B,aAAa,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC;IAE/C,QAAQ,EAAE,OAAO,CAAC;IAClB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,cAAc,EAAE,OAAO,CAAC;IACxB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;gBAEd,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB;IAiB3D,aAAa,CAAC,eAAe,EAAE,QAAQ,EAAE,gBAAgB,EAAE,QAAQ;IAe7D,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxD,sBAAsB,IAAI,OAAO,CAAC,QAAQ,CAAC;IAIjD,mBAAmB,CAAC,QAAQ,EAAE,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA6BhC,IAAI,CAAC,YAAY,EAAE,OAAO;CAejC"}
1
+ {"version":3,"file":"campaign-tracker.d.ts","sourceRoot":"","sources":["../../../src/attribution/campaign-tracker.ts"],"names":[],"mappings":"AACA,OAAO,EACL,OAAO,EACP,QAAQ,EACR,cAAc,IAAI,eAAe,EACjC,eAAe,IAAI,gBAAgB,EACnC,qBAAqB,EACrB,sBAAsB,EAEvB,MAAM,4BAA4B,CAAC;AAKpC,qBAAa,eAAgB,YAAW,gBAAgB;IACtD,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,eAAe,CAAC;IACxB,KAAK,EAAE,qBAAqB,CAAC;IAC7B,aAAa,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC;IAE/C,QAAQ,EAAE,OAAO,CAAC;IAClB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,cAAc,EAAE,OAAO,CAAC;IACxB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;gBAEd,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB;IAiB3D,aAAa,CAAC,eAAe,EAAE,QAAQ,EAAE,gBAAgB,EAAE,QAAQ;IAe7D,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxD,sBAAsB,IAAI,OAAO,CAAC,QAAQ,CAAC;IAIjD,mBAAmB,CAAC,QAAQ,EAAE,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA6BhC,IAAI,CAAC,YAAY,EAAE,OAAO;CAejC"}
@@ -1,4 +1,4 @@
1
- import { Event, ReactNativeOptions, ReactNativeConfig as IReactNativeConfig, Storage, TrackingOptions, UserSession, SessionManager as ISessionManager } from '@amplitude/analytics-types';
1
+ import { Event, ReactNativeOptions, ReactNativeConfig as IReactNativeConfig, Storage, ReactNativeTrackingOptions, UserSession, SessionManager as ISessionManager } from '@amplitude/analytics-types';
2
2
  import { Config, MemoryStorage } from '@amplitude/analytics-core';
3
3
  import { FetchTransport } from './transports/fetch';
4
4
  import { SessionManager } from './session-manager';
@@ -12,21 +12,7 @@ export declare const getDefaultConfig: () => {
12
12
  sessionManager: SessionManager;
13
13
  sessionTimeout: number;
14
14
  storageProvider: MemoryStorage<Event[]>;
15
- trackingOptions: {
16
- city: boolean;
17
- country: boolean;
18
- carrier: boolean;
19
- deviceManufacturer: boolean;
20
- deviceModel: boolean;
21
- dma: boolean;
22
- ipAddress: boolean;
23
- language: boolean;
24
- osName: boolean;
25
- osVersion: boolean;
26
- platform: boolean;
27
- region: boolean;
28
- versionName: boolean;
29
- };
15
+ trackingOptions: Required<ReactNativeTrackingOptions>;
30
16
  transportProvider: FetchTransport;
31
17
  };
32
18
  export declare class ReactNativeConfig extends Config implements IReactNativeConfig {
@@ -39,7 +25,7 @@ export declare class ReactNativeConfig extends Config implements IReactNativeCon
39
25
  domain: string;
40
26
  partnerId?: string;
41
27
  sessionTimeout: number;
42
- trackingOptions: TrackingOptions;
28
+ trackingOptions: ReactNativeTrackingOptions;
43
29
  sessionManager: ISessionManager;
44
30
  constructor(apiKey: string, userId?: string, options?: ReactNativeOptions);
45
31
  get deviceId(): string | undefined;
@@ -64,21 +50,7 @@ export declare const createCookieStorage: (overrides?: ReactNativeOptions | unde
64
50
  sessionManager: SessionManager;
65
51
  sessionTimeout: number;
66
52
  storageProvider: MemoryStorage<Event[]>;
67
- trackingOptions: {
68
- city: boolean;
69
- country: boolean;
70
- carrier: boolean;
71
- deviceManufacturer: boolean;
72
- deviceModel: boolean;
73
- dma: boolean;
74
- ipAddress: boolean;
75
- language: boolean;
76
- osName: boolean;
77
- osVersion: boolean;
78
- platform: boolean;
79
- region: boolean;
80
- versionName: boolean;
81
- };
53
+ trackingOptions: Required<ReactNativeTrackingOptions>;
82
54
  transportProvider: FetchTransport;
83
55
  }) => Promise<Storage<UserSession>>;
84
56
  export declare const createFlexibleStorage: <T>(options: ReactNativeOptions) => Promise<Storage<T>>;
@@ -1 +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,eAAe,EACf,WAAW,EACX,cAAc,IAAI,eAAe,EAClC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAQ,MAAM,2BAA2B,CAAC;AAGxE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAIpD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;CA6B5B,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,eAAe,CAAC;IACjC,cAAc,EAAE,eAAe,CAAC;gBAEpB,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB;IA8BzE,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"}
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;AAGxE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAIpD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,eAAO,MAAM,gBAAgB;;;;;;;;;;;;CA0B5B,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;gBAEpB,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB;IA8BzE,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"}
@@ -1,4 +1,5 @@
1
- export { add, flush, getDeviceId, getSessionId, getUserId, groupIdentify, identify, init, logEvent, remove, reset, revenue, setDeviceId, setGroup, setOptOut, setSessionId, setUserId, track, } from './react-native-client';
1
+ export { createInstance } from './react-native-client';
2
+ export declare const add: (plugin: Types.Plugin) => Types.AmplitudeReturn<void>, flush: () => Types.AmplitudeReturn<void>, getDeviceId: () => string | undefined, getSessionId: () => number | undefined, getUserId: () => string | undefined, groupIdentify: (groupType: string, groupName: string | string[], identify: Types.Identify, eventOptions?: Types.EventOptions | undefined) => Types.AmplitudeReturn<Types.Result>, identify: (identify: Types.Identify, eventOptions?: Types.EventOptions | undefined) => Types.AmplitudeReturn<Types.Result>, init: (apiKey: string, userId?: string | undefined, options?: Types.ReactNativeOptions | undefined) => Types.AmplitudeReturn<void>, logEvent: (eventInput: string | Types.BaseEvent, eventProperties?: Record<string, any> | undefined, eventOptions?: Types.EventOptions | undefined) => Types.AmplitudeReturn<Types.Result>, remove: (pluginName: string) => Types.AmplitudeReturn<void>, reset: () => void, revenue: (revenue: Types.Revenue, eventOptions?: Types.EventOptions | undefined) => Types.AmplitudeReturn<Types.Result>, setDeviceId: (deviceId: string) => void, setGroup: (groupType: string, groupName: string | string[], eventOptions?: Types.EventOptions | undefined) => Types.AmplitudeReturn<Types.Result>, setOptOut: (optOut: boolean) => void, setSessionId: (sessionId: number) => void, setUserId: (userId: string) => void, track: (eventInput: string | Types.BaseEvent, eventProperties?: Record<string, any> | undefined, eventOptions?: Types.EventOptions | undefined) => Types.AmplitudeReturn<Types.Result>;
2
3
  export { Revenue, Identify } from '@amplitude/analytics-core';
3
4
  import * as Types from '@amplitude/analytics-types';
4
5
  export { Types };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,GAAG,EACH,KAAK,EACL,WAAW,EACX,YAAY,EACZ,SAAS,EACT,aAAa,EACb,QAAQ,EACR,IAAI,EACJ,QAAQ,EACR,MAAM,EACN,KAAK,EACL,OAAO,EACP,WAAW,EACX,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,SAAS,EACT,KAAK,GACN,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAG9D,OAAO,KAAK,KAAK,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,CAAC"}
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,4BACT,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"}
@@ -10,6 +10,7 @@ declare type NativeContext = {
10
10
  deviceManufacturer: string;
11
11
  deviceModel: string;
12
12
  carrier: string;
13
+ adid: string;
13
14
  };
14
15
  export interface AmplitudeReactNative {
15
16
  getApplicationContext(): Promise<NativeContext>;
@@ -1 +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;CACjB,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;IA6C7C,cAAc;CAKf"}
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;IA+C7C,cAAc;CAKf"}