@amplitude/analytics-react-native 0.0.1-dev.0 → 0.0.1-dev.11

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 (101) hide show
  1. package/README.md +150 -0
  2. package/android/build.gradle +7 -9
  3. package/android/src/main/java/com/amplitude/reactnative/AmplitudeReactNativeModule.kt +5 -5
  4. package/ios/AmplitudeReactNative-Bridging-Header.h +0 -4
  5. package/ios/AmplitudeReactNative.swift +5 -4
  6. package/ios/AppleContextProvider.swift +1 -1
  7. package/lib/commonjs/attribution/campaign-tracker.js +1 -1
  8. package/lib/commonjs/attribution/campaign-tracker.js.map +1 -1
  9. package/lib/commonjs/config.js +35 -17
  10. package/lib/commonjs/config.js.map +1 -1
  11. package/lib/commonjs/index.js +6 -14
  12. package/lib/commonjs/index.js.map +1 -1
  13. package/lib/commonjs/plugins/context.js +5 -5
  14. package/lib/commonjs/plugins/context.js.map +1 -1
  15. package/lib/commonjs/plugins/identity.js +40 -0
  16. package/lib/commonjs/plugins/identity.js.map +1 -0
  17. package/lib/commonjs/react-native-client.js +37 -50
  18. package/lib/commonjs/react-native-client.js.map +1 -1
  19. package/lib/commonjs/storage/cookie.js +9 -9
  20. package/lib/commonjs/storage/cookie.js.map +1 -1
  21. package/lib/commonjs/utils/analytics-connector.js +15 -0
  22. package/lib/commonjs/utils/analytics-connector.js.map +1 -0
  23. package/lib/commonjs/utils/query-params.js +1 -6
  24. package/lib/commonjs/utils/query-params.js.map +1 -1
  25. package/lib/commonjs/version.js +1 -1
  26. package/lib/commonjs/version.js.map +1 -1
  27. package/lib/module/attribution/campaign-tracker.js +1 -1
  28. package/lib/module/attribution/campaign-tracker.js.map +1 -1
  29. package/lib/module/config.js +33 -12
  30. package/lib/module/config.js.map +1 -1
  31. package/lib/module/index.js +4 -3
  32. package/lib/module/index.js.map +1 -1
  33. package/lib/module/plugins/context.js +5 -5
  34. package/lib/module/plugins/context.js.map +1 -1
  35. package/lib/module/plugins/identity.js +29 -0
  36. package/lib/module/plugins/identity.js.map +1 -0
  37. package/lib/module/react-native-client.js +34 -49
  38. package/lib/module/react-native-client.js.map +1 -1
  39. package/lib/module/storage/cookie.js +9 -9
  40. package/lib/module/storage/cookie.js.map +1 -1
  41. package/lib/module/utils/analytics-connector.js +5 -0
  42. package/lib/module/utils/analytics-connector.js.map +1 -0
  43. package/lib/module/utils/query-params.js +1 -6
  44. package/lib/module/utils/query-params.js.map +1 -1
  45. package/lib/module/version.js +1 -1
  46. package/lib/module/version.js.map +1 -1
  47. package/lib/typescript/config.d.ts +2 -4
  48. package/lib/typescript/config.d.ts.map +1 -1
  49. package/lib/typescript/index.d.ts +1 -2
  50. package/lib/typescript/index.d.ts.map +1 -1
  51. package/lib/typescript/plugins/context.d.ts +5 -5
  52. package/lib/typescript/plugins/context.d.ts.map +1 -1
  53. package/lib/typescript/plugins/identity.d.ts +9 -0
  54. package/lib/typescript/plugins/identity.d.ts.map +1 -0
  55. package/lib/typescript/react-native-client.d.ts +17 -24
  56. package/lib/typescript/react-native-client.d.ts.map +1 -1
  57. package/lib/typescript/storage/cookie.d.ts.map +1 -1
  58. package/lib/typescript/utils/analytics-connector.d.ts +3 -0
  59. package/lib/typescript/utils/analytics-connector.d.ts.map +1 -0
  60. package/lib/typescript/utils/query-params.d.ts.map +1 -1
  61. package/lib/typescript/version.d.ts +1 -1
  62. package/lib/typescript/version.d.ts.map +1 -1
  63. package/package.json +3 -4
  64. package/src/attribution/campaign-tracker.ts +1 -1
  65. package/src/config.ts +28 -11
  66. package/src/index.ts +3 -2
  67. package/src/plugins/context.ts +10 -10
  68. package/src/plugins/identity.ts +21 -0
  69. package/src/react-native-client.ts +37 -54
  70. package/src/storage/cookie.ts +8 -6
  71. package/src/utils/analytics-connector.ts +5 -0
  72. package/src/utils/query-params.ts +1 -4
  73. package/src/version.ts +1 -1
  74. package/lib/commonjs/constants.js +0 -31
  75. package/lib/commonjs/constants.js.map +0 -1
  76. package/lib/commonjs/transports/send-beacon.js +0 -43
  77. package/lib/commonjs/transports/send-beacon.js.map +0 -1
  78. package/lib/commonjs/transports/xhr.js +0 -54
  79. package/lib/commonjs/transports/xhr.js.map +0 -1
  80. package/lib/commonjs/utils/snippet-helper.js +0 -56
  81. package/lib/commonjs/utils/snippet-helper.js.map +0 -1
  82. package/lib/module/constants.js +0 -13
  83. package/lib/module/constants.js.map +0 -1
  84. package/lib/module/transports/send-beacon.js +0 -33
  85. package/lib/module/transports/send-beacon.js.map +0 -1
  86. package/lib/module/transports/xhr.js +0 -44
  87. package/lib/module/transports/xhr.js.map +0 -1
  88. package/lib/module/utils/snippet-helper.js +0 -41
  89. package/lib/module/utils/snippet-helper.js.map +0 -1
  90. package/lib/typescript/constants.d.ts +0 -13
  91. package/lib/typescript/constants.d.ts.map +0 -1
  92. package/lib/typescript/transports/send-beacon.d.ts +0 -6
  93. package/lib/typescript/transports/send-beacon.d.ts.map +0 -1
  94. package/lib/typescript/transports/xhr.d.ts +0 -7
  95. package/lib/typescript/transports/xhr.d.ts.map +0 -1
  96. package/lib/typescript/utils/snippet-helper.d.ts +0 -16
  97. package/lib/typescript/utils/snippet-helper.d.ts.map +0 -1
  98. package/src/constants.ts +0 -14
  99. package/src/transports/send-beacon.ts +0 -34
  100. package/src/transports/xhr.ts +0 -36
  101. package/src/utils/snippet-helper.ts +0 -35
package/README.md CHANGED
@@ -0,0 +1,150 @@
1
+ <p align="center">
2
+ <a href="https://amplitude.com" target="_blank" align="center">
3
+ <img src="https://static.amplitude.com/lightning/46c85bfd91905de8047f1ee65c7c93d6fa9ee6ea/static/media/amplitude-logo-with-text.4fb9e463.svg" width="280">
4
+ </a>
5
+ <br />
6
+ </p>
7
+
8
+ # @amplitude/analytics-react-native
9
+
10
+ Official Amplitude SDK for React Native (Beta)
11
+
12
+ ## Installation
13
+
14
+ To get started with using Amplitude React Native SDK, install the package to your project via NPM. In addition, this package relies on `@react-native-async-storage/async-storage`, which must also be installed.
15
+
16
+ ```sh
17
+ # npm
18
+ npm install @amplitude/analytics-react-native
19
+ npm install @react-native-async-storage/async-storage
20
+
21
+ # yarn
22
+ yarn add @amplitude/analytics-react-native
23
+ yarn add @react-native-async-storage/async-storage
24
+ ```
25
+
26
+ ## Usage
27
+
28
+ ### Initializing SDK
29
+
30
+ Initialization is necessary before any instrumentation is done. The API key for your Amplitude project is required.
31
+
32
+ ```typescript
33
+ amplitude.init(API_KEY)
34
+ ```
35
+
36
+ ### Tracking an Event
37
+
38
+ Events represent how users interact with your application. For example, “Button Clicked” may be an action you want to note.
39
+
40
+ ```typescript
41
+ import { track } from '@amplitude/analytics-react-native';
42
+
43
+ // Track a basic event
44
+ track('Button Clicked');
45
+
46
+ // Track events with additional properties
47
+ const eventProperties = {
48
+ selectedColors: ['red', 'blue'],
49
+ };
50
+ track('Button Clicked', eventProperties);
51
+ ```
52
+
53
+ ### User Properties
54
+
55
+ User properties help you understand your users at the time they performed some action within your app such as their device details, their preferences, or language.
56
+
57
+ ```typescript
58
+ import { Identify, identify } from '@amplitude/analytics-react-native';
59
+
60
+ const event = new Identify();
61
+
62
+ // sets the value of a user property
63
+ event.set('key1', 'value1');
64
+
65
+ // sets the value of a user property only once
66
+ event.setOnce('key1', 'value1');
67
+
68
+ // increments a user property by some numerical value.
69
+ event.add('value1', 10);
70
+
71
+ // pre inserts a value or values to a user property
72
+ event.preInsert('ab-tests', 'new-user-test');
73
+
74
+ // post inserts a value or values to a user property
75
+ event.postInsert('ab-tests', 'new-user-test');
76
+
77
+ // removes a value or values to a user property
78
+ event.remove('ab-tests', 'new-user-test')
79
+
80
+ // sends identify event
81
+ identify(event);
82
+ ```
83
+
84
+ ### prepend/append
85
+
86
+ * append will append a value or values to a user property array.
87
+ * prepend will prepend a value or values to a user property.
88
+
89
+ ### User Groups
90
+
91
+ ```typescript
92
+ import { setGroup } from '@amplitude/analytics-react-native';
93
+
94
+ // set group with single group name
95
+ setGroup('orgId', '15');
96
+
97
+ // set group with multiple group names
98
+ setGroup('sport', ['soccer', 'tennis']);
99
+ ```
100
+
101
+ ### Group Identify
102
+
103
+ This feature is only available to Growth and Enterprise customers who have purchased the [Accounts add-on](https://amplitude.zendesk.com/hc/en-us/articles/115001765532).
104
+
105
+ Use the Group Identify API to set or update properties of particular groups. However, these updates will only affect events going forward.
106
+
107
+ ```typescript
108
+ import { Identify, groupIdentify } from '@amplitude/analytics-react-native';
109
+
110
+ const groupType = 'plan';
111
+ const groupName = 'enterprise';
112
+ const event = new Identify()
113
+ event.set('key1', 'value1');
114
+
115
+ groupIdentify(groupType, groupName, identify);
116
+ ```
117
+
118
+ ### Track Revenue
119
+
120
+ Revenue instances will store each revenue transaction and allow you to define several special revenue properties (such as 'revenueType', 'productIdentifier', etc.) that are used in Amplitude's Event Segmentation and Revenue LTV charts. These Revenue instance objects are then passed into `revenue` to send as revenue events to Amplitude. This allows us to automatically display data relevant to revenue in the platform. You can use this to track both in-app and non-in-app purchases.
121
+
122
+ ```typescript
123
+ import { Revenue, revenue } from '@amplitude/analytics-react-native';
124
+
125
+ const event = new Revenue()
126
+ .setProductId('com.company.productId')
127
+ .setPrice(3.99)
128
+ .setQuantity(3);
129
+
130
+ revenue(event);
131
+ ```
132
+
133
+ ### Callback
134
+
135
+ All asynchronous API are optionally awaitable through a specific Promise interface. This also serves as callback interface.
136
+
137
+ ```typescript
138
+ // Using async/await
139
+ const results = await track('Button Clicked').promise;
140
+ result.event; // {...} (The final event object sent to Amplitude)
141
+ result.code; // 200 (The HTTP response status code of the request.
142
+ result.message; // "Event tracked successfully" (The response message)
143
+
144
+ // Using promises
145
+ track('Button Clicked').promise.then((result) => {
146
+ result.event; // {...} (The final event object sent to Amplitude)
147
+ result.code; // 200 (The HTTP response status code of the request.
148
+ result.message; // "Event tracked successfully" (The response message)
149
+ });
150
+ ```
@@ -1,15 +1,13 @@
1
1
  buildscript {
2
2
  ext.kotlinVersion = "1.5.30"
3
- if (project == rootProject) {
4
- repositories {
5
- google()
6
- jcenter()
7
- }
3
+ repositories {
4
+ google()
5
+ jcenter()
6
+ }
8
7
 
9
- dependencies {
10
- classpath 'com.android.tools.build:gradle:3.5.3'
11
- classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
12
- }
8
+ dependencies {
9
+ classpath 'com.android.tools.build:gradle:3.5.3'
10
+ classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
13
11
  }
14
12
  }
15
13
 
@@ -25,11 +25,11 @@ class AmplitudeReactNativeModule(private val reactContext: ReactApplicationConte
25
25
  putString("version", androidContextProvider.versionName)
26
26
  putString("platform", androidContextProvider.osName)
27
27
  putString("language", androidContextProvider.language)
28
- putString("os_name", androidContextProvider.osName)
29
- putString("os_version", androidContextProvider.osVersion)
30
- putString("device_brand", androidContextProvider.brand)
31
- putString("device_manufacturer", androidContextProvider.manufacturer)
32
- putString("device_model", androidContextProvider.model)
28
+ putString("osName", androidContextProvider.osName)
29
+ putString("osVersion", androidContextProvider.osVersion)
30
+ putString("deviceBrand", androidContextProvider.brand)
31
+ putString("deviceManufacturer", androidContextProvider.manufacturer)
32
+ putString("deviceModel", androidContextProvider.model)
33
33
  putString("carrier", androidContextProvider.carrier)
34
34
  })
35
35
  }
@@ -1,5 +1 @@
1
- #if __has_include("RCTBridgeModule.h")
2
- #import "RCTBridgeModule.h"
3
- #else
4
1
  #import <React/RCTBridgeModule.h>
5
- #endif
@@ -1,4 +1,5 @@
1
1
  import Foundation
2
+ import React
2
3
 
3
4
  @objc(AmplitudeReactNative)
4
5
  class ReactNative: NSObject {
@@ -19,10 +20,10 @@ class ReactNative: NSObject {
19
20
  "version": appleContextProvider.version,
20
21
  "platform": appleContextProvider.platform,
21
22
  "language": appleContextProvider.language,
22
- "os_name": appleContextProvider.osName,
23
- "os_version": appleContextProvider.osVersion,
24
- "device_manufacturer": appleContextProvider.deviceManufacturer,
25
- "device_model": appleContextProvider.deviceModel,
23
+ "osName": appleContextProvider.osName,
24
+ "osVersion": appleContextProvider.osVersion,
25
+ "deviceManufacturer": appleContextProvider.deviceManufacturer,
26
+ "deviceModel": appleContextProvider.deviceModel,
26
27
  ]
27
28
  resolve(applicationContext)
28
29
  }
@@ -28,7 +28,7 @@ import Foundation
28
28
 
29
29
  private static func getOsVersion() -> String {
30
30
  let systemVersion = ProcessInfo.processInfo.operatingSystemVersion
31
- return "\(systemVersion.majorVersion).\(systemVersion.minorVersion).\(systemVersion.patchVersion)."
31
+ return "\(systemVersion.majorVersion).\(systemVersion.minorVersion).\(systemVersion.patchVersion)"
32
32
  }
33
33
 
34
34
  private static func getDeviceManufacturer() -> String {
@@ -46,7 +46,7 @@ class CampaignTracker {
46
46
  this.onNewCampaign = options.onNewCampaign;
47
47
  this.disabled = Boolean(options.disabled);
48
48
  this.trackNewCampaigns = Boolean(options.trackNewCampaigns);
49
- this.trackPageViews = options.trackPageViews === undefined || Boolean(options.trackPageViews);
49
+ this.trackPageViews = Boolean(options.trackPageViews);
50
50
  this.excludeReferrers = (_options$excludeRefer = options.excludeReferrers) !== null && _options$excludeRefer !== void 0 ? _options$excludeRefer : [];
51
51
 
52
52
  if (typeof location !== 'undefined') {
@@ -1 +1 @@
1
- {"version":3,"names":["CampaignTracker","constructor","apiKey","options","storage","storageKey","getStorageKey","MKTG","parser","CampaignParser","track","onNewCampaign","disabled","Boolean","trackNewCampaigns","trackPageViews","undefined","excludeReferrers","location","unshift","hostname","initialEmptyValue","EMPTY_VALUE","isNewCampaign","currentCampaign","previousCampaign","isReferrerExcluded","referring_domain","includes","hasNewUtm","utm_campaign","utm_source","utm_medium","utm_term","utm_content","hasNewReferrer","saveCampaignToStorage","campaign","set","getCampaignFromStorage","get","BASE_CAMPAIGN","createCampaignEvent","campaignParameters","identifyEvent","Object","entries","reduce","identify","key","value","setOnce","unset","Identify","pageViewEvent","event_type","event_properties","page_title","document","title","page_location","href","page_path","pathname","createIdentifyEvent","send","isNewSession","parse"],"sources":["campaign-tracker.ts"],"sourcesContent":["import { createIdentifyEvent, Identify } from '@amplitude/analytics-core';\nimport {\n Storage,\n Campaign,\n CampaignParser as ICampaignParser,\n CampaignTracker as ICampaignTracker,\n CampaignTrackFunction,\n CampaignTrackerOptions,\n BaseEvent,\n} from '@amplitude/analytics-types';\nimport { getCookieName as getStorageKey } from '../utils/cookie-name';\nimport { CampaignParser } from './campaign-parser';\nimport { BASE_CAMPAIGN, EMPTY_VALUE, MKTG } from './constants';\n\nexport class CampaignTracker implements ICampaignTracker {\n storage: Storage<Campaign>;\n storageKey: string;\n parser: ICampaignParser;\n track: CampaignTrackFunction;\n onNewCampaign: (campaign: Campaign) => unknown;\n\n disabled: boolean;\n trackNewCampaigns: boolean;\n trackPageViews: boolean;\n excludeReferrers: string[];\n initialEmptyValue: string;\n\n constructor(apiKey: string, options: CampaignTrackerOptions) {\n this.storage = options.storage;\n this.storageKey = getStorageKey(apiKey, MKTG);\n this.parser = new CampaignParser();\n this.track = options.track;\n this.onNewCampaign = options.onNewCampaign;\n\n this.disabled = Boolean(options.disabled);\n this.trackNewCampaigns = Boolean(options.trackNewCampaigns);\n this.trackPageViews = options.trackPageViews === undefined || Boolean(options.trackPageViews);\n this.excludeReferrers = options.excludeReferrers ?? [];\n if (typeof location !== 'undefined') {\n this.excludeReferrers.unshift(location.hostname);\n }\n this.initialEmptyValue = options.initialEmptyValue ?? EMPTY_VALUE;\n }\n\n isNewCampaign(currentCampaign: Campaign, previousCampaign: Campaign) {\n const isReferrerExcluded = Boolean(\n currentCampaign.referring_domain && this.excludeReferrers.includes(currentCampaign.referring_domain),\n );\n const hasNewUtm =\n previousCampaign.utm_campaign !== currentCampaign.utm_campaign ||\n previousCampaign.utm_source !== currentCampaign.utm_source ||\n previousCampaign.utm_medium !== currentCampaign.utm_medium ||\n previousCampaign.utm_term !== currentCampaign.utm_term ||\n previousCampaign.utm_content !== currentCampaign.utm_content;\n const hasNewReferrer = previousCampaign.referring_domain !== currentCampaign.referring_domain;\n\n return !isReferrerExcluded && (hasNewUtm || hasNewReferrer);\n }\n\n async saveCampaignToStorage(campaign: Campaign): Promise<void> {\n await this.storage.set(this.storageKey, campaign);\n }\n\n async getCampaignFromStorage(): Promise<Campaign> {\n return (await this.storage.get(this.storageKey)) || { ...BASE_CAMPAIGN };\n }\n\n createCampaignEvent(campaign: Campaign) {\n const campaignParameters: Campaign = {\n // This object definition allows undefined keys to be iterated on\n // in .reduce() to build indentify object\n ...BASE_CAMPAIGN,\n ...campaign,\n };\n const identifyEvent = Object.entries(campaignParameters).reduce((identify, [key, value]) => {\n identify.setOnce(`initial_${key}`, value || this.initialEmptyValue);\n if (value) {\n return identify.set(key, value);\n }\n return identify.unset(key);\n }, new Identify());\n\n const pageViewEvent: BaseEvent = {\n event_type: 'Page View',\n event_properties: {\n page_title: /* istanbul ignore next */ (typeof document !== 'undefined' && document.title) || '',\n page_location: /* istanbul ignore next */ (typeof location !== 'undefined' && location.href) || '',\n page_path: /* istanbul ignore next */ (typeof location !== 'undefined' && location.pathname) || '',\n },\n };\n return {\n ...createIdentifyEvent(identifyEvent),\n ...(this.trackPageViews && pageViewEvent),\n };\n }\n\n async send(isNewSession: boolean) {\n if (this.disabled) {\n return;\n }\n const currentCampaign = await this.parser.parse();\n const previousCampaign = await this.getCampaignFromStorage();\n if (!isNewSession) {\n if (!this.trackNewCampaigns || !this.isNewCampaign(currentCampaign, previousCampaign)) {\n return;\n }\n this.onNewCampaign(currentCampaign);\n }\n await this.track(this.createCampaignEvent(currentCampaign));\n await this.saveCampaignToStorage(currentCampaign);\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["CampaignTracker","constructor","apiKey","options","storage","storageKey","getStorageKey","MKTG","parser","CampaignParser","track","onNewCampaign","disabled","Boolean","trackNewCampaigns","trackPageViews","excludeReferrers","location","unshift","hostname","initialEmptyValue","EMPTY_VALUE","isNewCampaign","currentCampaign","previousCampaign","isReferrerExcluded","referring_domain","includes","hasNewUtm","utm_campaign","utm_source","utm_medium","utm_term","utm_content","hasNewReferrer","saveCampaignToStorage","campaign","set","getCampaignFromStorage","get","BASE_CAMPAIGN","createCampaignEvent","campaignParameters","identifyEvent","Object","entries","reduce","identify","key","value","setOnce","unset","Identify","pageViewEvent","event_type","event_properties","page_title","document","title","page_location","href","page_path","pathname","createIdentifyEvent","send","isNewSession","parse"],"sources":["campaign-tracker.ts"],"sourcesContent":["import { createIdentifyEvent, Identify } from '@amplitude/analytics-core';\nimport {\n Storage,\n Campaign,\n CampaignParser as ICampaignParser,\n CampaignTracker as ICampaignTracker,\n CampaignTrackFunction,\n CampaignTrackerOptions,\n BaseEvent,\n} from '@amplitude/analytics-types';\nimport { getCookieName as getStorageKey } from '../utils/cookie-name';\nimport { CampaignParser } from './campaign-parser';\nimport { BASE_CAMPAIGN, EMPTY_VALUE, MKTG } from './constants';\n\nexport class CampaignTracker implements ICampaignTracker {\n storage: Storage<Campaign>;\n storageKey: string;\n parser: ICampaignParser;\n track: CampaignTrackFunction;\n onNewCampaign: (campaign: Campaign) => unknown;\n\n disabled: boolean;\n trackNewCampaigns: boolean;\n trackPageViews: boolean;\n excludeReferrers: string[];\n initialEmptyValue: string;\n\n constructor(apiKey: string, options: CampaignTrackerOptions) {\n this.storage = options.storage;\n this.storageKey = getStorageKey(apiKey, MKTG);\n this.parser = new CampaignParser();\n this.track = options.track;\n this.onNewCampaign = options.onNewCampaign;\n\n this.disabled = Boolean(options.disabled);\n this.trackNewCampaigns = Boolean(options.trackNewCampaigns);\n this.trackPageViews = Boolean(options.trackPageViews);\n this.excludeReferrers = options.excludeReferrers ?? [];\n if (typeof location !== 'undefined') {\n this.excludeReferrers.unshift(location.hostname);\n }\n this.initialEmptyValue = options.initialEmptyValue ?? EMPTY_VALUE;\n }\n\n isNewCampaign(currentCampaign: Campaign, previousCampaign: Campaign) {\n const isReferrerExcluded = Boolean(\n currentCampaign.referring_domain && this.excludeReferrers.includes(currentCampaign.referring_domain),\n );\n const hasNewUtm =\n previousCampaign.utm_campaign !== currentCampaign.utm_campaign ||\n previousCampaign.utm_source !== currentCampaign.utm_source ||\n previousCampaign.utm_medium !== currentCampaign.utm_medium ||\n previousCampaign.utm_term !== currentCampaign.utm_term ||\n previousCampaign.utm_content !== currentCampaign.utm_content;\n const hasNewReferrer = previousCampaign.referring_domain !== currentCampaign.referring_domain;\n\n return !isReferrerExcluded && (hasNewUtm || hasNewReferrer);\n }\n\n async saveCampaignToStorage(campaign: Campaign): Promise<void> {\n await this.storage.set(this.storageKey, campaign);\n }\n\n async getCampaignFromStorage(): Promise<Campaign> {\n return (await this.storage.get(this.storageKey)) || { ...BASE_CAMPAIGN };\n }\n\n createCampaignEvent(campaign: Campaign) {\n const campaignParameters: Campaign = {\n // This object definition allows undefined keys to be iterated on\n // in .reduce() to build indentify object\n ...BASE_CAMPAIGN,\n ...campaign,\n };\n const identifyEvent = Object.entries(campaignParameters).reduce((identify, [key, value]) => {\n identify.setOnce(`initial_${key}`, value || this.initialEmptyValue);\n if (value) {\n return identify.set(key, value);\n }\n return identify.unset(key);\n }, new Identify());\n\n const pageViewEvent: BaseEvent = {\n event_type: 'Page View',\n event_properties: {\n page_title: /* istanbul ignore next */ (typeof document !== 'undefined' && document.title) || '',\n page_location: /* istanbul ignore next */ (typeof location !== 'undefined' && location.href) || '',\n page_path: /* istanbul ignore next */ (typeof location !== 'undefined' && location.pathname) || '',\n },\n };\n return {\n ...createIdentifyEvent(identifyEvent),\n ...(this.trackPageViews && pageViewEvent),\n };\n }\n\n async send(isNewSession: boolean) {\n if (this.disabled) {\n return;\n }\n const currentCampaign = await this.parser.parse();\n const previousCampaign = await this.getCampaignFromStorage();\n if (!isNewSession) {\n if (!this.trackNewCampaigns || !this.isNewCampaign(currentCampaign, previousCampaign)) {\n return;\n }\n this.onNewCampaign(currentCampaign);\n }\n await this.track(this.createCampaignEvent(currentCampaign));\n await this.saveCampaignToStorage(currentCampaign);\n }\n}\n"],"mappings":"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"}
@@ -3,9 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.useReactNativeConfig = exports.getDefaultConfig = exports.createTransport = exports.createFlexibleStorage = exports.createEventsStorage = exports.createDeviceId = exports.createCookieStorage = exports.ReactNativeConfig = void 0;
7
-
8
- var _analyticsTypes = require("@amplitude/analytics-types");
6
+ exports.useReactNativeConfig = exports.getTopLevelDomain = exports.getDefaultConfig = exports.createFlexibleStorage = exports.createEventsStorage = exports.createDeviceId = exports.createCookieStorage = exports.ReactNativeConfig = void 0;
9
7
 
10
8
  var _analyticsCore = require("@amplitude/analytics-core");
11
9
 
@@ -19,10 +17,6 @@ var _cookieName = require("./utils/cookie-name");
19
17
 
20
18
  var _queryParams = require("./utils/query-params");
21
19
 
22
- var _xhr = require("./transports/xhr");
23
-
24
- var _sendBeacon = require("./transports/send-beacon");
25
-
26
20
  var _sessionManager = require("./session-manager");
27
21
 
28
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; }
@@ -158,10 +152,13 @@ class ReactNativeConfig extends _analyticsCore.Config {
158
152
  exports.ReactNativeConfig = ReactNativeConfig;
159
153
 
160
154
  const useReactNativeConfig = async (apiKey, userId, options) => {
161
- var _options$optOut, _await$cookieStorage$, _await$cookieStorage$2, _options$transportPro2;
155
+ var _options$domain2, _options$optOut, _await$cookieStorage$, _await$cookieStorage$2, _options$transportPro2;
162
156
 
163
157
  const defaultConfig = getDefaultConfig();
164
- const cookieStorage = await createCookieStorage(options);
158
+ const domain = (_options$domain2 = options === null || options === void 0 ? void 0 : options.domain) !== null && _options$domain2 !== void 0 ? _options$domain2 : await getTopLevelDomain();
159
+ const cookieStorage = await createCookieStorage({ ...options,
160
+ domain
161
+ });
165
162
  const cookieName = (0, _cookieName.getCookieName)(apiKey);
166
163
  const cookies = await cookieStorage.get(cookieName);
167
164
  const queryParams = (0, _queryParams.getQueryParams)();
@@ -170,13 +167,14 @@ const useReactNativeConfig = async (apiKey, userId, options) => {
170
167
  cookieStorage,
171
168
  sessionManager,
172
169
  deviceId: createDeviceId(cookies === null || cookies === void 0 ? void 0 : cookies.deviceId, options === null || options === void 0 ? void 0 : options.deviceId, queryParams.deviceId),
170
+ domain,
173
171
  optOut: (_options$optOut = options === null || options === void 0 ? void 0 : options.optOut) !== null && _options$optOut !== void 0 ? _options$optOut : Boolean(cookies === null || cookies === void 0 ? void 0 : cookies.optOut),
174
172
  sessionId: (_await$cookieStorage$ = (_await$cookieStorage$2 = await cookieStorage.get(cookieName)) === null || _await$cookieStorage$2 === void 0 ? void 0 : _await$cookieStorage$2.sessionId) !== null && _await$cookieStorage$ !== void 0 ? _await$cookieStorage$ : options === null || options === void 0 ? void 0 : options.sessionId,
175
173
  storageProvider: await createEventsStorage(options),
176
174
  trackingOptions: { ...defaultConfig.trackingOptions,
177
175
  ...(options === null || options === void 0 ? void 0 : options.trackingOptions)
178
176
  },
179
- transportProvider: (_options$transportPro2 = options === null || options === void 0 ? void 0 : options.transportProvider) !== null && _options$transportPro2 !== void 0 ? _options$transportPro2 : createTransport(options === null || options === void 0 ? void 0 : options.transport)
177
+ transportProvider: (_options$transportPro2 = options === null || options === void 0 ? void 0 : options.transportProvider) !== null && _options$transportPro2 !== void 0 ? _options$transportPro2 : new _fetch.FetchTransport()
180
178
  });
181
179
  };
182
180
 
@@ -241,17 +239,37 @@ const createDeviceId = (idFromCookies, idFromOptions, idFromQueryParams) => {
241
239
 
242
240
  exports.createDeviceId = createDeviceId;
243
241
 
244
- const createTransport = transport => {
245
- if (transport === _analyticsTypes.TransportType.XHR) {
246
- return new _xhr.XHRTransport();
242
+ const getTopLevelDomain = async url => {
243
+ if (!(await new _cookie.CookieStorage().isEnabled()) || !url && typeof location === 'undefined') {
244
+ return '';
247
245
  }
248
246
 
249
- if (transport === _analyticsTypes.TransportType.SendBeacon) {
250
- return new _sendBeacon.SendBeaconTransport();
247
+ const host = url !== null && url !== void 0 ? url : location.hostname;
248
+ const parts = host.split('.');
249
+ const levels = [];
250
+ const storageKey = 'AMP_TLDTEST';
251
+
252
+ for (let i = parts.length - 2; i >= 0; --i) {
253
+ levels.push(parts.slice(i).join('.'));
254
+ }
255
+
256
+ for (let i = 0; i < levels.length; i++) {
257
+ const domain = levels[i];
258
+ const options = {
259
+ domain: '.' + domain
260
+ };
261
+ const storage = new _cookie.CookieStorage(options);
262
+ await storage.set(storageKey, 1);
263
+ const value = await storage.get(storageKey);
264
+
265
+ if (value) {
266
+ await storage.remove(storageKey);
267
+ return '.' + domain;
268
+ }
251
269
  }
252
270
 
253
- return getDefaultConfig().transportProvider;
271
+ return '';
254
272
  };
255
273
 
256
- exports.createTransport = createTransport;
274
+ exports.getTopLevelDomain = getTopLevelDomain;
257
275
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["getDefaultConfig","cookieStorage","MemoryStorage","cookieExpiration","cookieSameSite","cookieSecure","disableCookies","domain","sessionManager","SessionManager","sessionTimeout","storageProvider","trackingOptions","city","country","carrier","deviceManufacturer","deviceModel","dma","ipAddress","language","osName","osVersion","platform","region","versionName","transportProvider","FetchTransport","ReactNativeConfig","Config","constructor","apiKey","userId","options","defaultConfig","appVersion","deviceId","lastEventTime","optOut","Boolean","partnerId","sessionId","getDeviceId","setDeviceId","getUserId","setUserId","getSessionId","setSessionId","getOptOut","setOptOut","getLastEventTime","setLastEventTime","useReactNativeConfig","createCookieStorage","cookieName","getCookieName","cookies","get","queryParams","getQueryParams","load","createDeviceId","createEventsStorage","createTransport","transport","overrides","baseConfig","isEnabled","createFlexibleStorage","storage","CookieStorage","expirationDays","sameSite","secure","LocalStorage","eventsStorage","idFromCookies","idFromOptions","idFromQueryParams","UUID","TransportType","XHR","XHRTransport","SendBeacon","SendBeaconTransport"],"sources":["config.ts"],"sourcesContent":["import {\n Event,\n ReactNativeOptions,\n ReactNativeConfig as IReactNativeConfig,\n Storage,\n TrackingOptions,\n TransportType,\n UserSession,\n SessionManager as ISessionManager,\n} from '@amplitude/analytics-types';\nimport { Config, MemoryStorage, UUID } from '@amplitude/analytics-core';\n\nimport { CookieStorage } from './storage/cookie';\nimport { FetchTransport } from './transports/fetch';\nimport { LocalStorage } from './storage/local-storage';\nimport { getCookieName } from './utils/cookie-name';\nimport { getQueryParams } from './utils/query-params';\nimport { XHRTransport } from './transports/xhr';\nimport { SendBeaconTransport } from './transports/send-beacon';\nimport { SessionManager } from './session-manager';\n\nexport const getDefaultConfig = () => {\n const cookieStorage = new MemoryStorage<UserSession>();\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 city: true,\n country: true,\n carrier: true,\n deviceManufacturer: true,\n deviceModel: true,\n dma: true,\n ipAddress: true,\n language: true,\n osName: true,\n osVersion: true,\n platform: true,\n region: true,\n versionName: true,\n },\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: TrackingOptions;\n sessionManager: ISessionManager;\n\n constructor(apiKey: string, userId?: string, options?: ReactNativeOptions) {\n const defaultConfig = getDefaultConfig();\n super({\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 cookieStorage = await createCookieStorage(options);\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 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 ?? createTransport(options?.transport),\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[]>> => {\n let eventsStorage = overrides?.storageProvider;\n if (!eventsStorage || !(await eventsStorage.isEnabled())) {\n eventsStorage = new LocalStorage();\n if (!(await eventsStorage.isEnabled())) {\n eventsStorage = new MemoryStorage();\n }\n }\n return eventsStorage;\n};\n\nexport const createDeviceId = (idFromCookies?: string, idFromOptions?: string, idFromQueryParams?: string) => {\n return idFromOptions || idFromQueryParams || idFromCookies || UUID();\n};\n\nexport const createTransport = (transport?: TransportType) => {\n if (transport === TransportType.XHR) {\n return new XHRTransport();\n }\n if (transport === TransportType.SendBeacon) {\n return new SendBeaconTransport();\n }\n return getDefaultConfig().transportProvider;\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["getDefaultConfig","cookieStorage","MemoryStorage","cookieExpiration","cookieSameSite","cookieSecure","disableCookies","domain","sessionManager","SessionManager","sessionTimeout","storageProvider","trackingOptions","city","country","carrier","deviceManufacturer","deviceModel","dma","ipAddress","language","osName","osVersion","platform","region","versionName","transportProvider","FetchTransport","ReactNativeConfig","Config","constructor","apiKey","userId","options","defaultConfig","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","eventsStorage","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 TrackingOptions,\n UserSession,\n SessionManager as ISessionManager,\n} from '@amplitude/analytics-types';\nimport { Config, MemoryStorage, UUID } from '@amplitude/analytics-core';\n\nimport { CookieStorage } from './storage/cookie';\nimport { FetchTransport } from './transports/fetch';\nimport { LocalStorage } from './storage/local-storage';\nimport { getCookieName } from './utils/cookie-name';\nimport { getQueryParams } from './utils/query-params';\nimport { SessionManager } from './session-manager';\n\nexport const getDefaultConfig = () => {\n const cookieStorage = new MemoryStorage<UserSession>();\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 city: true,\n country: true,\n carrier: true,\n deviceManufacturer: true,\n deviceModel: true,\n dma: true,\n ipAddress: true,\n language: true,\n osName: true,\n osVersion: true,\n platform: true,\n region: true,\n versionName: true,\n },\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: TrackingOptions;\n sessionManager: ISessionManager;\n\n constructor(apiKey: string, userId?: string, options?: ReactNativeOptions) {\n const defaultConfig = getDefaultConfig();\n super({\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[]>> => {\n let eventsStorage = overrides?.storageProvider;\n if (!eventsStorage || !(await eventsStorage.isEnabled())) {\n eventsStorage = new LocalStorage();\n if (!(await eventsStorage.isEnabled())) {\n eventsStorage = new MemoryStorage();\n }\n }\n return eventsStorage;\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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"}
@@ -22,6 +22,12 @@ Object.defineProperty(exports, "add", {
22
22
  return _reactNativeClient.add;
23
23
  }
24
24
  });
25
+ Object.defineProperty(exports, "flush", {
26
+ enumerable: true,
27
+ get: function () {
28
+ return _reactNativeClient.flush;
29
+ }
30
+ });
25
31
  Object.defineProperty(exports, "getDeviceId", {
26
32
  enumerable: true,
27
33
  get: function () {
@@ -76,12 +82,6 @@ Object.defineProperty(exports, "revenue", {
76
82
  return _reactNativeClient.revenue;
77
83
  }
78
84
  });
79
- Object.defineProperty(exports, "runQueuedFunctions", {
80
- enumerable: true,
81
- get: function () {
82
- return _snippetHelper.runQueuedFunctions;
83
- }
84
- });
85
85
  Object.defineProperty(exports, "setDeviceId", {
86
86
  enumerable: true,
87
87
  get: function () {
@@ -106,12 +106,6 @@ Object.defineProperty(exports, "setSessionId", {
106
106
  return _reactNativeClient.setSessionId;
107
107
  }
108
108
  });
109
- Object.defineProperty(exports, "setTransport", {
110
- enumerable: true,
111
- get: function () {
112
- return _reactNativeClient.setTransport;
113
- }
114
- });
115
109
  Object.defineProperty(exports, "setUserId", {
116
110
  enumerable: true,
117
111
  get: function () {
@@ -127,8 +121,6 @@ Object.defineProperty(exports, "track", {
127
121
 
128
122
  var _reactNativeClient = require("./react-native-client");
129
123
 
130
- var _snippetHelper = require("./utils/snippet-helper");
131
-
132
124
  var _analyticsCore = require("@amplitude/analytics-core");
133
125
 
134
126
  var Types = _interopRequireWildcard(require("@amplitude/analytics-types"));
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export {\n add,\n getDeviceId,\n getSessionId,\n getUserId,\n groupIdentify,\n identify,\n init,\n logEvent,\n remove,\n revenue,\n setDeviceId,\n setGroup,\n setOptOut,\n setSessionId,\n setTransport,\n setUserId,\n track,\n} from './react-native-client';\nexport { runQueuedFunctions } from './utils/snippet-helper';\nexport { Revenue, Identify } from '@amplitude/analytics-core';\nimport * as Types from '@amplitude/analytics-types';\nexport { Types };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAmBA;;AACA;;AACA"}
1
+ {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export {\n add,\n flush,\n getDeviceId,\n getSessionId,\n getUserId,\n groupIdentify,\n identify,\n init,\n logEvent,\n remove,\n revenue,\n setDeviceId,\n setGroup,\n setOptOut,\n setSessionId,\n setUserId,\n track,\n} from './react-native-client';\nexport { Revenue, Identify } from '@amplitude/analytics-core';\n// Hack - react-native apps have trouble with:\n// export * as Types from '@amplitude/analytics-types\nimport * as Types from '@amplitude/analytics-types';\nexport { Types };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAmBA;;AAGA"}
@@ -41,7 +41,7 @@ class Context {
41
41
 
42
42
  _defineProperty(this, "nativeModule", _reactNative.NativeModules.AmplitudeReactNative);
43
43
 
44
- _defineProperty(this, "library", `amplitude-ts/${_version.VERSION}`);
44
+ _defineProperty(this, "library", `amplitude-react-native-ts/${_version.VERSION}`);
45
45
 
46
46
  let agent;
47
47
  /* istanbul ignore else */
@@ -76,10 +76,10 @@ class Context {
76
76
  const nativeContext = await ((_this$nativeModule = this.nativeModule) === null || _this$nativeModule === void 0 ? void 0 : _this$nativeModule.getApplicationContext());
77
77
  const appVersion = (nativeContext === null || nativeContext === void 0 ? void 0 : nativeContext.version) || this.config.appVersion;
78
78
  const platform = (nativeContext === null || nativeContext === void 0 ? void 0 : nativeContext.platform) || BROWSER_PLATFORM;
79
- const osName = (nativeContext === null || nativeContext === void 0 ? void 0 : nativeContext.os_name) || this.uaResult.browser.name;
80
- const osVersion = (nativeContext === null || nativeContext === void 0 ? void 0 : nativeContext.os_version) || this.uaResult.browser.version;
81
- const deviceVendor = (nativeContext === null || nativeContext === void 0 ? void 0 : nativeContext.device_manufacturer) || this.uaResult.device.vendor;
82
- const deviceModel = (nativeContext === null || nativeContext === void 0 ? void 0 : nativeContext.device_model) || this.uaResult.device.model || this.uaResult.os.name;
79
+ const osName = (nativeContext === null || nativeContext === void 0 ? void 0 : nativeContext.osName) || this.uaResult.browser.name;
80
+ const osVersion = (nativeContext === null || nativeContext === void 0 ? void 0 : nativeContext.osVersion) || this.uaResult.browser.version;
81
+ const deviceVendor = (nativeContext === null || nativeContext === void 0 ? void 0 : nativeContext.deviceManufacturer) || this.uaResult.device.vendor;
82
+ const deviceModel = (nativeContext === null || nativeContext === void 0 ? void 0 : nativeContext.deviceModel) || this.uaResult.device.model || this.uaResult.os.name;
83
83
  const language = (nativeContext === null || nativeContext === void 0 ? void 0 : nativeContext.language) || (0, _language.getLanguage)();
84
84
  const carrier = nativeContext === null || nativeContext === void 0 ? void 0 : nativeContext.carrier;
85
85
  const event = {
@@ -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","isSessionValid","sessionId","Date","now","lastEventTime","time","getTime","nativeContext","nativeModule","getApplicationContext","appVersion","version","platform","osName","os_name","browser","name","osVersion","os_version","deviceVendor","device_manufacturer","device","vendor","deviceModel","device_model","model","os","language","getLanguage","carrier","event","user_id","userId","device_id","deviceId","session_id","app_version","trackingOptions","deviceManufacturer","ipAddress","ip","insert_id","UUID","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 os_name: string;\n os_version: string;\n device_brand: string;\n device_manufacturer: string;\n device_model: 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-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?.os_name || this.uaResult.browser.name;\n const osVersion = nativeContext?.os_version || this.uaResult.browser.version;\n const deviceVendor = nativeContext?.device_manufacturer || this.uaResult.device.vendor;\n const deviceModel = nativeContext?.device_model || 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":["BROWSER_PLATFORM","IP_ADDRESS","Context","constructor","PluginType","BEFORE","NativeModules","AmplitudeReactNative","VERSION","agent","navigator","userAgent","uaResult","UAParser","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","getLanguage","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","UUID","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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"}
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.IdentityEventSender = void 0;
7
+
8
+ var _analyticsTypes = require("@amplitude/analytics-types");
9
+
10
+ var _analyticsConnector = require("../utils/analytics-connector");
11
+
12
+ 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; }
13
+
14
+ class IdentityEventSender {
15
+ constructor() {
16
+ _defineProperty(this, "name", 'identity');
17
+
18
+ _defineProperty(this, "type", _analyticsTypes.PluginType.BEFORE);
19
+
20
+ _defineProperty(this, "identityStore", (0, _analyticsConnector.getAnalyticsConnector)().identityStore);
21
+ }
22
+
23
+ async execute(context) {
24
+ const userProperties = context.user_properties;
25
+
26
+ if (userProperties) {
27
+ this.identityStore.editIdentity().updateUserProperties(userProperties).commit();
28
+ }
29
+
30
+ return context;
31
+ }
32
+
33
+ setup(_) {
34
+ return Promise.resolve(undefined);
35
+ }
36
+
37
+ }
38
+
39
+ exports.IdentityEventSender = IdentityEventSender;
40
+ //# sourceMappingURL=identity.js.map