@amplitude/analytics-react-native 0.0.1-dev.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 (180) hide show
  1. package/README.md +0 -0
  2. package/amplitude-react-native.podspec +21 -0
  3. package/android/build.gradle +61 -0
  4. package/android/gradle.properties +3 -0
  5. package/android/src/main/AndroidManifest.xml +4 -0
  6. package/android/src/main/java/com/amplitude/reactnative/AmplitudeReactNativeModule.kt +36 -0
  7. package/android/src/main/java/com/amplitude/reactnative/AmplitudeReactNativePackage.java +28 -0
  8. package/android/src/main/java/com/amplitude/reactnative/AndroidContextProvider.kt +415 -0
  9. package/android/src/main/java/com/amplitude/reactnative/AndroidLogger.kt +56 -0
  10. package/android/src/main/java/com/amplitude/reactnative/Utils.kt +34 -0
  11. package/ios/AmplitudeReactNative-Bridging-Header.h +5 -0
  12. package/ios/AmplitudeReactNative.m +7 -0
  13. package/ios/AmplitudeReactNative.swift +29 -0
  14. package/ios/AmplitudeReactNative.xcodeproj/project.pbxproj +293 -0
  15. package/ios/AppleContextProvider.swift +219 -0
  16. package/lib/commonjs/attribution/campaign-parser.js +74 -0
  17. package/lib/commonjs/attribution/campaign-parser.js.map +1 -0
  18. package/lib/commonjs/attribution/campaign-tracker.js +133 -0
  19. package/lib/commonjs/attribution/campaign-tracker.js.map +1 -0
  20. package/lib/commonjs/attribution/constants.js +47 -0
  21. package/lib/commonjs/attribution/constants.js.map +1 -0
  22. package/lib/commonjs/config.js +257 -0
  23. package/lib/commonjs/config.js.map +1 -0
  24. package/lib/commonjs/constants.js +31 -0
  25. package/lib/commonjs/constants.js.map +1 -0
  26. package/lib/commonjs/cookie-migration/index.js +74 -0
  27. package/lib/commonjs/cookie-migration/index.js.map +1 -0
  28. package/lib/commonjs/index.js +141 -0
  29. package/lib/commonjs/index.js.map +1 -0
  30. package/lib/commonjs/plugins/context.js +136 -0
  31. package/lib/commonjs/plugins/context.js.map +1 -0
  32. package/lib/commonjs/react-native-client.js +362 -0
  33. package/lib/commonjs/react-native-client.js.map +1 -0
  34. package/lib/commonjs/session-manager.js +114 -0
  35. package/lib/commonjs/session-manager.js.map +1 -0
  36. package/lib/commonjs/storage/cookie.js +124 -0
  37. package/lib/commonjs/storage/cookie.js.map +1 -0
  38. package/lib/commonjs/storage/local-storage.js +79 -0
  39. package/lib/commonjs/storage/local-storage.js.map +1 -0
  40. package/lib/commonjs/storage/utm-cookie.js +42 -0
  41. package/lib/commonjs/storage/utm-cookie.js.map +1 -0
  42. package/lib/commonjs/transports/fetch.js +34 -0
  43. package/lib/commonjs/transports/fetch.js.map +1 -0
  44. package/lib/commonjs/transports/send-beacon.js +43 -0
  45. package/lib/commonjs/transports/send-beacon.js.map +1 -0
  46. package/lib/commonjs/transports/xhr.js +54 -0
  47. package/lib/commonjs/transports/xhr.js.map +1 -0
  48. package/lib/commonjs/typings/browser-snippet.d.js +6 -0
  49. package/lib/commonjs/typings/browser-snippet.d.js.map +1 -0
  50. package/lib/commonjs/typings/ua-parser.d.js +2 -0
  51. package/lib/commonjs/typings/ua-parser.d.js.map +1 -0
  52. package/lib/commonjs/utils/cookie-name.js +23 -0
  53. package/lib/commonjs/utils/cookie-name.js.map +1 -0
  54. package/lib/commonjs/utils/language.js +18 -0
  55. package/lib/commonjs/utils/language.js.map +1 -0
  56. package/lib/commonjs/utils/platform.js +21 -0
  57. package/lib/commonjs/utils/platform.js.map +1 -0
  58. package/lib/commonjs/utils/query-params.js +36 -0
  59. package/lib/commonjs/utils/query-params.js.map +1 -0
  60. package/lib/commonjs/utils/snippet-helper.js +56 -0
  61. package/lib/commonjs/utils/snippet-helper.js.map +1 -0
  62. package/lib/commonjs/version.js +9 -0
  63. package/lib/commonjs/version.js.map +1 -0
  64. package/lib/module/attribution/campaign-parser.js +62 -0
  65. package/lib/module/attribution/campaign-parser.js.map +1 -0
  66. package/lib/module/attribution/campaign-tracker.js +120 -0
  67. package/lib/module/attribution/campaign-tracker.js.map +1 -0
  68. package/lib/module/attribution/constants.js +26 -0
  69. package/lib/module/attribution/constants.js.map +1 -0
  70. package/lib/module/config.js +217 -0
  71. package/lib/module/config.js.map +1 -0
  72. package/lib/module/constants.js +13 -0
  73. package/lib/module/constants.js.map +1 -0
  74. package/lib/module/cookie-migration/index.js +56 -0
  75. package/lib/module/cookie-migration/index.js.map +1 -0
  76. package/lib/module/index.js +6 -0
  77. package/lib/module/index.js.map +1 -0
  78. package/lib/module/plugins/context.js +118 -0
  79. package/lib/module/plugins/context.js.map +1 -0
  80. package/lib/module/react-native-client.js +329 -0
  81. package/lib/module/react-native-client.js.map +1 -0
  82. package/lib/module/session-manager.js +104 -0
  83. package/lib/module/session-manager.js.map +1 -0
  84. package/lib/module/storage/cookie.js +114 -0
  85. package/lib/module/storage/cookie.js.map +1 -0
  86. package/lib/module/storage/local-storage.js +67 -0
  87. package/lib/module/storage/local-storage.js.map +1 -0
  88. package/lib/module/storage/utm-cookie.js +32 -0
  89. package/lib/module/storage/utm-cookie.js.map +1 -0
  90. package/lib/module/transports/fetch.js +24 -0
  91. package/lib/module/transports/fetch.js.map +1 -0
  92. package/lib/module/transports/send-beacon.js +33 -0
  93. package/lib/module/transports/send-beacon.js.map +1 -0
  94. package/lib/module/transports/xhr.js +44 -0
  95. package/lib/module/transports/xhr.js.map +1 -0
  96. package/lib/module/typings/browser-snippet.d.js +2 -0
  97. package/lib/module/typings/browser-snippet.d.js.map +1 -0
  98. package/lib/module/typings/ua-parser.d.js +2 -0
  99. package/lib/module/typings/ua-parser.d.js.map +1 -0
  100. package/lib/module/utils/cookie-name.js +10 -0
  101. package/lib/module/utils/cookie-name.js.map +1 -0
  102. package/lib/module/utils/language.js +9 -0
  103. package/lib/module/utils/language.js.map +1 -0
  104. package/lib/module/utils/platform.js +8 -0
  105. package/lib/module/utils/platform.js.map +1 -0
  106. package/lib/module/utils/query-params.js +26 -0
  107. package/lib/module/utils/query-params.js.map +1 -0
  108. package/lib/module/utils/snippet-helper.js +41 -0
  109. package/lib/module/utils/snippet-helper.js.map +1 -0
  110. package/lib/module/version.js +2 -0
  111. package/lib/module/version.js.map +1 -0
  112. package/lib/typescript/attribution/campaign-parser.d.ts +10 -0
  113. package/lib/typescript/attribution/campaign-parser.d.ts.map +1 -0
  114. package/lib/typescript/attribution/campaign-tracker.d.ts +72 -0
  115. package/lib/typescript/attribution/campaign-tracker.d.ts.map +1 -0
  116. package/lib/typescript/attribution/constants.d.ts +17 -0
  117. package/lib/typescript/attribution/constants.d.ts.map +1 -0
  118. package/lib/typescript/config.d.ts +90 -0
  119. package/lib/typescript/config.d.ts.map +1 -0
  120. package/lib/typescript/constants.d.ts +13 -0
  121. package/lib/typescript/constants.d.ts.map +1 -0
  122. package/lib/typescript/cookie-migration/index.d.ts +5 -0
  123. package/lib/typescript/cookie-migration/index.d.ts.map +1 -0
  124. package/lib/typescript/index.d.ts +6 -0
  125. package/lib/typescript/index.d.ts.map +1 -0
  126. package/lib/typescript/plugins/context.d.ts +31 -0
  127. package/lib/typescript/plugins/context.d.ts.map +1 -0
  128. package/lib/typescript/react-native-client.d.ts +209 -0
  129. package/lib/typescript/react-native-client.d.ts.map +1 -0
  130. package/lib/typescript/session-manager.d.ts +28 -0
  131. package/lib/typescript/session-manager.d.ts.map +1 -0
  132. package/lib/typescript/storage/cookie.d.ts +12 -0
  133. package/lib/typescript/storage/cookie.d.ts.map +1 -0
  134. package/lib/typescript/storage/local-storage.d.ts +10 -0
  135. package/lib/typescript/storage/local-storage.d.ts.map +1 -0
  136. package/lib/typescript/storage/utm-cookie.d.ts +6 -0
  137. package/lib/typescript/storage/utm-cookie.d.ts.map +1 -0
  138. package/lib/typescript/transports/fetch.d.ts +6 -0
  139. package/lib/typescript/transports/fetch.d.ts.map +1 -0
  140. package/lib/typescript/transports/send-beacon.d.ts +6 -0
  141. package/lib/typescript/transports/send-beacon.d.ts.map +1 -0
  142. package/lib/typescript/transports/xhr.d.ts +7 -0
  143. package/lib/typescript/transports/xhr.d.ts.map +1 -0
  144. package/lib/typescript/utils/cookie-name.d.ts +3 -0
  145. package/lib/typescript/utils/cookie-name.d.ts.map +1 -0
  146. package/lib/typescript/utils/language.d.ts +2 -0
  147. package/lib/typescript/utils/language.d.ts.map +1 -0
  148. package/lib/typescript/utils/platform.d.ts +3 -0
  149. package/lib/typescript/utils/platform.d.ts.map +1 -0
  150. package/lib/typescript/utils/query-params.d.ts +2 -0
  151. package/lib/typescript/utils/query-params.d.ts.map +1 -0
  152. package/lib/typescript/utils/snippet-helper.d.ts +16 -0
  153. package/lib/typescript/utils/snippet-helper.d.ts.map +1 -0
  154. package/lib/typescript/version.d.ts +2 -0
  155. package/lib/typescript/version.d.ts.map +1 -0
  156. package/package.json +93 -0
  157. package/src/attribution/campaign-parser.ts +78 -0
  158. package/src/attribution/campaign-tracker.ts +112 -0
  159. package/src/attribution/constants.ts +32 -0
  160. package/src/config.ts +210 -0
  161. package/src/constants.ts +14 -0
  162. package/src/cookie-migration/index.ts +54 -0
  163. package/src/index.ts +23 -0
  164. package/src/plugins/context.ts +106 -0
  165. package/src/react-native-client.ts +349 -0
  166. package/src/session-manager.ts +81 -0
  167. package/src/storage/cookie.ts +95 -0
  168. package/src/storage/local-storage.ts +67 -0
  169. package/src/storage/utm-cookie.ts +27 -0
  170. package/src/transports/fetch.ts +23 -0
  171. package/src/transports/send-beacon.ts +34 -0
  172. package/src/transports/xhr.ts +36 -0
  173. package/src/typings/browser-snippet.d.ts +7 -0
  174. package/src/typings/ua-parser.d.ts +4 -0
  175. package/src/utils/cookie-name.ts +9 -0
  176. package/src/utils/language.ts +7 -0
  177. package/src/utils/platform.ts +9 -0
  178. package/src/utils/query-params.ts +21 -0
  179. package/src/utils/snippet-helper.ts +35 -0
  180. package/src/version.ts +1 -0
@@ -0,0 +1,104 @@
1
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
+
3
+ import { getCookieName as getStorageKey } from './utils/cookie-name';
4
+ export class SessionManager {
5
+ constructor(storage, apiKey) {
6
+ this.storage = storage;
7
+
8
+ _defineProperty(this, "storageKey", void 0);
9
+
10
+ _defineProperty(this, "cache", void 0);
11
+
12
+ _defineProperty(this, "isSessionCacheValid", true);
13
+
14
+ this.storageKey = getStorageKey(apiKey);
15
+ this.cache = {
16
+ optOut: false
17
+ };
18
+ }
19
+ /**
20
+ * load() must be called immediately after instantation
21
+ *
22
+ * ```ts
23
+ * await new SessionManager(...).load();
24
+ * ```
25
+ */
26
+
27
+
28
+ async load() {
29
+ var _await$this$storage$g;
30
+
31
+ this.cache = (_await$this$storage$g = await this.storage.get(this.storageKey)) !== null && _await$this$storage$g !== void 0 ? _await$this$storage$g : {
32
+ optOut: false
33
+ };
34
+ return this;
35
+ }
36
+
37
+ setSession(session) {
38
+ this.cache = { ...this.cache,
39
+ ...session
40
+ };
41
+ void this.storage.set(this.storageKey, this.cache);
42
+ }
43
+
44
+ getSessionId() {
45
+ this.isSessionCacheValid = true;
46
+ void this.storage.get(this.storageKey).then(userSession => {
47
+ // Checks if session id has been set since the last get
48
+ if (this.isSessionCacheValid) {
49
+ this.cache.sessionId = userSession === null || userSession === void 0 ? void 0 : userSession.sessionId;
50
+ }
51
+ });
52
+ return this.cache.sessionId;
53
+ }
54
+
55
+ setSessionId(sessionId) {
56
+ // Flags session id has been set
57
+ this.isSessionCacheValid = false;
58
+ this.setSession({
59
+ sessionId
60
+ });
61
+ }
62
+
63
+ getDeviceId() {
64
+ return this.cache.deviceId;
65
+ }
66
+
67
+ setDeviceId(deviceId) {
68
+ this.setSession({
69
+ deviceId
70
+ });
71
+ }
72
+
73
+ getUserId() {
74
+ return this.cache.userId;
75
+ }
76
+
77
+ setUserId(userId) {
78
+ this.setSession({
79
+ userId
80
+ });
81
+ }
82
+
83
+ getLastEventTime() {
84
+ return this.cache.lastEventTime;
85
+ }
86
+
87
+ setLastEventTime(lastEventTime) {
88
+ this.setSession({
89
+ lastEventTime
90
+ });
91
+ }
92
+
93
+ getOptOut() {
94
+ return this.cache.optOut;
95
+ }
96
+
97
+ setOptOut(optOut) {
98
+ this.setSession({
99
+ optOut
100
+ });
101
+ }
102
+
103
+ }
104
+ //# sourceMappingURL=session-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getCookieName","getStorageKey","SessionManager","constructor","storage","apiKey","storageKey","cache","optOut","load","get","setSession","session","set","getSessionId","isSessionCacheValid","then","userSession","sessionId","setSessionId","getDeviceId","deviceId","setDeviceId","getUserId","userId","setUserId","getLastEventTime","lastEventTime","setLastEventTime","getOptOut","setOptOut"],"sources":["session-manager.ts"],"sourcesContent":["import { UserSession, Storage, SessionManager as ISessionManager } from '@amplitude/analytics-types';\nimport { getCookieName as getStorageKey } from './utils/cookie-name';\n\nexport class SessionManager implements ISessionManager {\n storageKey: string;\n cache: UserSession;\n isSessionCacheValid = true;\n\n constructor(private storage: Storage<UserSession>, apiKey: string) {\n this.storageKey = getStorageKey(apiKey);\n this.cache = { optOut: false };\n }\n\n /**\n * load() must be called immediately after instantation\n *\n * ```ts\n * await new SessionManager(...).load();\n * ```\n */\n async load() {\n this.cache = (await this.storage.get(this.storageKey)) ?? {\n optOut: false,\n };\n return this;\n }\n\n setSession(session: Partial<UserSession>) {\n this.cache = { ...this.cache, ...session };\n void this.storage.set(this.storageKey, this.cache);\n }\n\n getSessionId() {\n this.isSessionCacheValid = true;\n void this.storage.get(this.storageKey).then((userSession) => {\n // Checks if session id has been set since the last get\n if (this.isSessionCacheValid) {\n this.cache.sessionId = userSession?.sessionId;\n }\n });\n return this.cache.sessionId;\n }\n\n setSessionId(sessionId: number) {\n // Flags session id has been set\n this.isSessionCacheValid = false;\n this.setSession({ sessionId });\n }\n\n getDeviceId(): string | undefined {\n return this.cache.deviceId;\n }\n\n setDeviceId(deviceId: string): void {\n this.setSession({ deviceId });\n }\n\n getUserId(): string | undefined {\n return this.cache.userId;\n }\n\n setUserId(userId: string): void {\n this.setSession({ userId });\n }\n\n getLastEventTime() {\n return this.cache.lastEventTime;\n }\n\n setLastEventTime(lastEventTime: number) {\n this.setSession({ lastEventTime });\n }\n\n getOptOut(): boolean {\n return this.cache.optOut;\n }\n\n setOptOut(optOut: boolean): void {\n this.setSession({ optOut });\n }\n}\n"],"mappings":";;AACA,SAASA,aAAa,IAAIC,aAA1B,QAA+C,qBAA/C;AAEA,OAAO,MAAMC,cAAN,CAAgD;EAKrDC,WAAW,CAASC,OAAT,EAAwCC,MAAxC,EAAwD;IAAA,KAA/CD,OAA+C,GAA/CA,OAA+C;;IAAA;;IAAA;;IAAA,6CAF7C,IAE6C;;IACjE,KAAKE,UAAL,GAAkBL,aAAa,CAACI,MAAD,CAA/B;IACA,KAAKE,KAAL,GAAa;MAAEC,MAAM,EAAE;IAAV,CAAb;EACD;EAED;AACF;AACA;AACA;AACA;AACA;AACA;;;EACY,MAAJC,IAAI,GAAG;IAAA;;IACX,KAAKF,KAAL,4BAAc,MAAM,KAAKH,OAAL,CAAaM,GAAb,CAAiB,KAAKJ,UAAtB,CAApB,yEAA0D;MACxDE,MAAM,EAAE;IADgD,CAA1D;IAGA,OAAO,IAAP;EACD;;EAEDG,UAAU,CAACC,OAAD,EAAgC;IACxC,KAAKL,KAAL,GAAa,EAAE,GAAG,KAAKA,KAAV;MAAiB,GAAGK;IAApB,CAAb;IACA,KAAK,KAAKR,OAAL,CAAaS,GAAb,CAAiB,KAAKP,UAAtB,EAAkC,KAAKC,KAAvC,CAAL;EACD;;EAEDO,YAAY,GAAG;IACb,KAAKC,mBAAL,GAA2B,IAA3B;IACA,KAAK,KAAKX,OAAL,CAAaM,GAAb,CAAiB,KAAKJ,UAAtB,EAAkCU,IAAlC,CAAwCC,WAAD,IAAiB;MAC3D;MACA,IAAI,KAAKF,mBAAT,EAA8B;QAC5B,KAAKR,KAAL,CAAWW,SAAX,GAAuBD,WAAvB,aAAuBA,WAAvB,uBAAuBA,WAAW,CAAEC,SAApC;MACD;IACF,CALI,CAAL;IAMA,OAAO,KAAKX,KAAL,CAAWW,SAAlB;EACD;;EAEDC,YAAY,CAACD,SAAD,EAAoB;IAC9B;IACA,KAAKH,mBAAL,GAA2B,KAA3B;IACA,KAAKJ,UAAL,CAAgB;MAAEO;IAAF,CAAhB;EACD;;EAEDE,WAAW,GAAuB;IAChC,OAAO,KAAKb,KAAL,CAAWc,QAAlB;EACD;;EAEDC,WAAW,CAACD,QAAD,EAAyB;IAClC,KAAKV,UAAL,CAAgB;MAAEU;IAAF,CAAhB;EACD;;EAEDE,SAAS,GAAuB;IAC9B,OAAO,KAAKhB,KAAL,CAAWiB,MAAlB;EACD;;EAEDC,SAAS,CAACD,MAAD,EAAuB;IAC9B,KAAKb,UAAL,CAAgB;MAAEa;IAAF,CAAhB;EACD;;EAEDE,gBAAgB,GAAG;IACjB,OAAO,KAAKnB,KAAL,CAAWoB,aAAlB;EACD;;EAEDC,gBAAgB,CAACD,aAAD,EAAwB;IACtC,KAAKhB,UAAL,CAAgB;MAAEgB;IAAF,CAAhB;EACD;;EAEDE,SAAS,GAAY;IACnB,OAAO,KAAKtB,KAAL,CAAWC,MAAlB;EACD;;EAEDsB,SAAS,CAACtB,MAAD,EAAwB;IAC/B,KAAKG,UAAL,CAAgB;MAAEH;IAAF,CAAhB;EACD;;AA5EoD"}
@@ -0,0 +1,114 @@
1
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
+
3
+ import { isNative } from '../utils/platform';
4
+ export class CookieStorage {
5
+ constructor(options) {
6
+ _defineProperty(this, "options", void 0);
7
+
8
+ this.options = { ...options
9
+ };
10
+ }
11
+
12
+ async isEnabled() {
13
+ if (isNative()) {
14
+ return false;
15
+ }
16
+ /* istanbul ignore if */
17
+
18
+
19
+ if (typeof window === 'undefined') {
20
+ return false;
21
+ }
22
+
23
+ const random = String(Date.now());
24
+ const testStrorage = new CookieStorage();
25
+ const testKey = 'AMP_TEST';
26
+
27
+ try {
28
+ await testStrorage.set(testKey, random);
29
+ const value = await testStrorage.get(testKey);
30
+ return value === random;
31
+ } catch {
32
+ /* istanbul ignore next */
33
+ return false;
34
+ } finally {
35
+ await testStrorage.remove(testKey);
36
+ }
37
+ }
38
+
39
+ async get(key) {
40
+ const value = await this.getRaw(key);
41
+
42
+ if (!value) {
43
+ return undefined;
44
+ }
45
+
46
+ try {
47
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
48
+ return JSON.parse(value);
49
+ } catch {
50
+ /* istanbul ignore next */
51
+ return undefined;
52
+ }
53
+ }
54
+
55
+ async getRaw(key) {
56
+ const cookie = window.document.cookie.split('; ');
57
+ const match = cookie.find(c => c.indexOf(key + '=') === 0);
58
+
59
+ if (!match) {
60
+ return undefined;
61
+ }
62
+
63
+ return match.substring(key.length + 1);
64
+ }
65
+
66
+ async set(key, value) {
67
+ try {
68
+ var _this$options$expirat;
69
+
70
+ const expirationDays = (_this$options$expirat = this.options.expirationDays) !== null && _this$options$expirat !== void 0 ? _this$options$expirat : 0;
71
+ const expires = value !== null ? expirationDays : -1;
72
+ let expireDate = undefined;
73
+
74
+ if (expires) {
75
+ const date = new Date();
76
+ date.setTime(date.getTime() + expires * 24 * 60 * 60 * 1000);
77
+ expireDate = date;
78
+ }
79
+
80
+ let str = `${key}=${JSON.stringify(value)}`;
81
+
82
+ if (expireDate) {
83
+ str += `; expires=${expireDate.toUTCString()}`;
84
+ }
85
+
86
+ str += '; path=/';
87
+
88
+ if (this.options.domain) {
89
+ str += `; domain=${this.options.domain}`;
90
+ }
91
+
92
+ if (this.options.secure) {
93
+ str += '; Secure';
94
+ }
95
+
96
+ if (this.options.sameSite) {
97
+ str += `; SameSite=${this.options.sameSite}`;
98
+ }
99
+
100
+ window.document.cookie = str;
101
+ } catch {//
102
+ }
103
+ }
104
+
105
+ async remove(key) {
106
+ await this.set(key, null);
107
+ }
108
+
109
+ async reset() {
110
+ return;
111
+ }
112
+
113
+ }
114
+ //# sourceMappingURL=cookie.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["isNative","CookieStorage","constructor","options","isEnabled","window","random","String","Date","now","testStrorage","testKey","set","value","get","remove","key","getRaw","undefined","JSON","parse","cookie","document","split","match","find","c","indexOf","substring","length","expirationDays","expires","expireDate","date","setTime","getTime","str","stringify","toUTCString","domain","secure","sameSite","reset"],"sources":["cookie.ts"],"sourcesContent":["import { Storage, CookieStorageOptions } from '@amplitude/analytics-types';\nimport { isNative } from '../utils/platform';\n\nexport class CookieStorage<T> implements Storage<T> {\n options: CookieStorageOptions;\n\n constructor(options?: CookieStorageOptions) {\n this.options = { ...options };\n }\n\n async isEnabled(): Promise<boolean> {\n if (isNative()) {\n return false;\n }\n /* istanbul ignore if */\n if (typeof window === 'undefined') {\n return false;\n }\n\n const random = String(Date.now());\n const testStrorage = new CookieStorage<string>();\n const testKey = 'AMP_TEST';\n try {\n await testStrorage.set(testKey, random);\n const value = await testStrorage.get(testKey);\n return value === random;\n } catch {\n /* istanbul ignore next */\n return false;\n } finally {\n await testStrorage.remove(testKey);\n }\n }\n\n async get(key: string): Promise<T | undefined> {\n const value = await this.getRaw(key);\n if (!value) {\n return undefined;\n }\n try {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return JSON.parse(value);\n } catch {\n /* istanbul ignore next */\n return undefined;\n }\n }\n\n async getRaw(key: string): Promise<string | undefined> {\n const cookie = window.document.cookie.split('; ');\n const match = cookie.find((c) => c.indexOf(key + '=') === 0);\n if (!match) {\n return undefined;\n }\n return match.substring(key.length + 1);\n }\n\n async set(key: string, value: T | null): Promise<void> {\n try {\n const expirationDays = this.options.expirationDays ?? 0;\n const expires = value !== null ? expirationDays : -1;\n let expireDate: Date | undefined = undefined;\n if (expires) {\n const date = new Date();\n date.setTime(date.getTime() + expires * 24 * 60 * 60 * 1000);\n expireDate = date;\n }\n let str = `${key}=${JSON.stringify(value)}`;\n if (expireDate) {\n str += `; expires=${expireDate.toUTCString()}`;\n }\n str += '; path=/';\n if (this.options.domain) {\n str += `; domain=${this.options.domain}`;\n }\n if (this.options.secure) {\n str += '; Secure';\n }\n if (this.options.sameSite) {\n str += `; SameSite=${this.options.sameSite}`;\n }\n window.document.cookie = str;\n } catch {\n //\n }\n }\n\n async remove(key: string): Promise<void> {\n await this.set(key, null);\n }\n\n async reset(): Promise<void> {\n return;\n }\n}\n"],"mappings":";;AACA,SAASA,QAAT,QAAyB,mBAAzB;AAEA,OAAO,MAAMC,aAAN,CAA6C;EAGlDC,WAAW,CAACC,OAAD,EAAiC;IAAA;;IAC1C,KAAKA,OAAL,GAAe,EAAE,GAAGA;IAAL,CAAf;EACD;;EAEc,MAATC,SAAS,GAAqB;IAClC,IAAIJ,QAAQ,EAAZ,EAAgB;MACd,OAAO,KAAP;IACD;IACD;;;IACA,IAAI,OAAOK,MAAP,KAAkB,WAAtB,EAAmC;MACjC,OAAO,KAAP;IACD;;IAED,MAAMC,MAAM,GAAGC,MAAM,CAACC,IAAI,CAACC,GAAL,EAAD,CAArB;IACA,MAAMC,YAAY,GAAG,IAAIT,aAAJ,EAArB;IACA,MAAMU,OAAO,GAAG,UAAhB;;IACA,IAAI;MACF,MAAMD,YAAY,CAACE,GAAb,CAAiBD,OAAjB,EAA0BL,MAA1B,CAAN;MACA,MAAMO,KAAK,GAAG,MAAMH,YAAY,CAACI,GAAb,CAAiBH,OAAjB,CAApB;MACA,OAAOE,KAAK,KAAKP,MAAjB;IACD,CAJD,CAIE,MAAM;MACN;MACA,OAAO,KAAP;IACD,CAPD,SAOU;MACR,MAAMI,YAAY,CAACK,MAAb,CAAoBJ,OAApB,CAAN;IACD;EACF;;EAEQ,MAAHG,GAAG,CAACE,GAAD,EAAsC;IAC7C,MAAMH,KAAK,GAAG,MAAM,KAAKI,MAAL,CAAYD,GAAZ,CAApB;;IACA,IAAI,CAACH,KAAL,EAAY;MACV,OAAOK,SAAP;IACD;;IACD,IAAI;MACF;MACA,OAAOC,IAAI,CAACC,KAAL,CAAWP,KAAX,CAAP;IACD,CAHD,CAGE,MAAM;MACN;MACA,OAAOK,SAAP;IACD;EACF;;EAEW,MAAND,MAAM,CAACD,GAAD,EAA2C;IACrD,MAAMK,MAAM,GAAGhB,MAAM,CAACiB,QAAP,CAAgBD,MAAhB,CAAuBE,KAAvB,CAA6B,IAA7B,CAAf;IACA,MAAMC,KAAK,GAAGH,MAAM,CAACI,IAAP,CAAaC,CAAD,IAAOA,CAAC,CAACC,OAAF,CAAUX,GAAG,GAAG,GAAhB,MAAyB,CAA5C,CAAd;;IACA,IAAI,CAACQ,KAAL,EAAY;MACV,OAAON,SAAP;IACD;;IACD,OAAOM,KAAK,CAACI,SAAN,CAAgBZ,GAAG,CAACa,MAAJ,GAAa,CAA7B,CAAP;EACD;;EAEQ,MAAHjB,GAAG,CAACI,GAAD,EAAcH,KAAd,EAA8C;IACrD,IAAI;MAAA;;MACF,MAAMiB,cAAc,4BAAG,KAAK3B,OAAL,CAAa2B,cAAhB,yEAAkC,CAAtD;MACA,MAAMC,OAAO,GAAGlB,KAAK,KAAK,IAAV,GAAiBiB,cAAjB,GAAkC,CAAC,CAAnD;MACA,IAAIE,UAA4B,GAAGd,SAAnC;;MACA,IAAIa,OAAJ,EAAa;QACX,MAAME,IAAI,GAAG,IAAIzB,IAAJ,EAAb;QACAyB,IAAI,CAACC,OAAL,CAAaD,IAAI,CAACE,OAAL,KAAiBJ,OAAO,GAAG,EAAV,GAAe,EAAf,GAAoB,EAApB,GAAyB,IAAvD;QACAC,UAAU,GAAGC,IAAb;MACD;;MACD,IAAIG,GAAG,GAAI,GAAEpB,GAAI,IAAGG,IAAI,CAACkB,SAAL,CAAexB,KAAf,CAAsB,EAA1C;;MACA,IAAImB,UAAJ,EAAgB;QACdI,GAAG,IAAK,aAAYJ,UAAU,CAACM,WAAX,EAAyB,EAA7C;MACD;;MACDF,GAAG,IAAI,UAAP;;MACA,IAAI,KAAKjC,OAAL,CAAaoC,MAAjB,EAAyB;QACvBH,GAAG,IAAK,YAAW,KAAKjC,OAAL,CAAaoC,MAAO,EAAvC;MACD;;MACD,IAAI,KAAKpC,OAAL,CAAaqC,MAAjB,EAAyB;QACvBJ,GAAG,IAAI,UAAP;MACD;;MACD,IAAI,KAAKjC,OAAL,CAAasC,QAAjB,EAA2B;QACzBL,GAAG,IAAK,cAAa,KAAKjC,OAAL,CAAasC,QAAS,EAA3C;MACD;;MACDpC,MAAM,CAACiB,QAAP,CAAgBD,MAAhB,GAAyBe,GAAzB;IACD,CAxBD,CAwBE,MAAM,CACN;IACD;EACF;;EAEW,MAANrB,MAAM,CAACC,GAAD,EAA6B;IACvC,MAAM,KAAKJ,GAAL,CAASI,GAAT,EAAc,IAAd,CAAN;EACD;;EAEU,MAAL0B,KAAK,GAAkB;IAC3B;EACD;;AA1FiD"}
@@ -0,0 +1,67 @@
1
+ import AsyncStorage from '@react-native-async-storage/async-storage';
2
+ export class LocalStorage {
3
+ async isEnabled() {
4
+ /* istanbul ignore if */
5
+ if (typeof window === 'undefined') {
6
+ return false;
7
+ }
8
+
9
+ const random = String(Date.now());
10
+ const testStorage = new LocalStorage();
11
+ const testKey = 'AMP_TEST';
12
+
13
+ try {
14
+ await testStorage.set(testKey, random);
15
+ const value = await testStorage.get(testKey);
16
+ return value === random;
17
+ } catch {
18
+ /* istanbul ignore next */
19
+ return false;
20
+ } finally {
21
+ await testStorage.remove(testKey);
22
+ }
23
+ }
24
+
25
+ async get(key) {
26
+ try {
27
+ const value = await this.getRaw(key);
28
+
29
+ if (!value) {
30
+ return undefined;
31
+ } // eslint-disable-next-line @typescript-eslint/no-unsafe-return
32
+
33
+
34
+ return JSON.parse(value);
35
+ } catch {
36
+ /* istanbul ignore next */
37
+ return undefined;
38
+ }
39
+ }
40
+
41
+ async getRaw(key) {
42
+ return (await AsyncStorage.getItem(key)) || undefined;
43
+ }
44
+
45
+ async set(key, value) {
46
+ try {
47
+ await AsyncStorage.setItem(key, JSON.stringify(value));
48
+ } catch {//
49
+ }
50
+ }
51
+
52
+ async remove(key) {
53
+ try {
54
+ await AsyncStorage.removeItem(key);
55
+ } catch {//
56
+ }
57
+ }
58
+
59
+ async reset() {
60
+ try {
61
+ await AsyncStorage.clear();
62
+ } catch {//
63
+ }
64
+ }
65
+
66
+ }
67
+ //# sourceMappingURL=local-storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["AsyncStorage","LocalStorage","isEnabled","window","random","String","Date","now","testStorage","testKey","set","value","get","remove","key","getRaw","undefined","JSON","parse","getItem","setItem","stringify","removeItem","reset","clear"],"sources":["local-storage.ts"],"sourcesContent":["import { Storage } from '@amplitude/analytics-types';\nimport AsyncStorage from '@react-native-async-storage/async-storage';\n\nexport class LocalStorage<T> implements Storage<T> {\n async isEnabled(): Promise<boolean> {\n /* istanbul ignore if */\n if (typeof window === 'undefined') {\n return false;\n }\n\n const random = String(Date.now());\n const testStorage = new LocalStorage<string>();\n const testKey = 'AMP_TEST';\n try {\n await testStorage.set(testKey, random);\n const value = await testStorage.get(testKey);\n return value === random;\n } catch {\n /* istanbul ignore next */\n return false;\n } finally {\n await testStorage.remove(testKey);\n }\n }\n\n async get(key: string): Promise<T | undefined> {\n try {\n const value = await this.getRaw(key);\n if (!value) {\n return undefined;\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return JSON.parse(value);\n } catch {\n /* istanbul ignore next */\n return undefined;\n }\n }\n\n async getRaw(key: string): Promise<string | undefined> {\n return (await AsyncStorage.getItem(key)) || undefined;\n }\n\n async set(key: string, value: T): Promise<void> {\n try {\n await AsyncStorage.setItem(key, JSON.stringify(value));\n } catch {\n //\n }\n }\n\n async remove(key: string): Promise<void> {\n try {\n await AsyncStorage.removeItem(key);\n } catch {\n //\n }\n }\n\n async reset(): Promise<void> {\n try {\n await AsyncStorage.clear();\n } catch {\n //\n }\n }\n}\n"],"mappings":"AACA,OAAOA,YAAP,MAAyB,2CAAzB;AAEA,OAAO,MAAMC,YAAN,CAA4C;EAClC,MAATC,SAAS,GAAqB;IAClC;IACA,IAAI,OAAOC,MAAP,KAAkB,WAAtB,EAAmC;MACjC,OAAO,KAAP;IACD;;IAED,MAAMC,MAAM,GAAGC,MAAM,CAACC,IAAI,CAACC,GAAL,EAAD,CAArB;IACA,MAAMC,WAAW,GAAG,IAAIP,YAAJ,EAApB;IACA,MAAMQ,OAAO,GAAG,UAAhB;;IACA,IAAI;MACF,MAAMD,WAAW,CAACE,GAAZ,CAAgBD,OAAhB,EAAyBL,MAAzB,CAAN;MACA,MAAMO,KAAK,GAAG,MAAMH,WAAW,CAACI,GAAZ,CAAgBH,OAAhB,CAApB;MACA,OAAOE,KAAK,KAAKP,MAAjB;IACD,CAJD,CAIE,MAAM;MACN;MACA,OAAO,KAAP;IACD,CAPD,SAOU;MACR,MAAMI,WAAW,CAACK,MAAZ,CAAmBJ,OAAnB,CAAN;IACD;EACF;;EAEQ,MAAHG,GAAG,CAACE,GAAD,EAAsC;IAC7C,IAAI;MACF,MAAMH,KAAK,GAAG,MAAM,KAAKI,MAAL,CAAYD,GAAZ,CAApB;;MACA,IAAI,CAACH,KAAL,EAAY;QACV,OAAOK,SAAP;MACD,CAJC,CAKF;;;MACA,OAAOC,IAAI,CAACC,KAAL,CAAWP,KAAX,CAAP;IACD,CAPD,CAOE,MAAM;MACN;MACA,OAAOK,SAAP;IACD;EACF;;EAEW,MAAND,MAAM,CAACD,GAAD,EAA2C;IACrD,OAAO,CAAC,MAAMd,YAAY,CAACmB,OAAb,CAAqBL,GAArB,CAAP,KAAqCE,SAA5C;EACD;;EAEQ,MAAHN,GAAG,CAACI,GAAD,EAAcH,KAAd,EAAuC;IAC9C,IAAI;MACF,MAAMX,YAAY,CAACoB,OAAb,CAAqBN,GAArB,EAA0BG,IAAI,CAACI,SAAL,CAAeV,KAAf,CAA1B,CAAN;IACD,CAFD,CAEE,MAAM,CACN;IACD;EACF;;EAEW,MAANE,MAAM,CAACC,GAAD,EAA6B;IACvC,IAAI;MACF,MAAMd,YAAY,CAACsB,UAAb,CAAwBR,GAAxB,CAAN;IACD,CAFD,CAEE,MAAM,CACN;IACD;EACF;;EAEU,MAALS,KAAK,GAAkB;IAC3B,IAAI;MACF,MAAMvB,YAAY,CAACwB,KAAb,EAAN;IACD,CAFD,CAEE,MAAM,CACN;IACD;EACF;;AA9DgD"}
@@ -0,0 +1,32 @@
1
+ import { CookieStorage } from './cookie';
2
+ export class UTMCookie extends CookieStorage {
3
+ async get(key) {
4
+ try {
5
+ const value = await this.getRaw(key);
6
+
7
+ if (!value) {
8
+ return undefined;
9
+ }
10
+
11
+ const entries = value.split('.').splice(-1)[0].split('|');
12
+ return entries.reduce((acc, curr) => {
13
+ const [key, value = ''] = curr.split('=', 2);
14
+
15
+ if (!value) {
16
+ return acc;
17
+ }
18
+
19
+ acc[key] = decodeURIComponent(value);
20
+ return acc;
21
+ }, {});
22
+ } catch {
23
+ return undefined;
24
+ }
25
+ }
26
+
27
+ async set() {
28
+ return undefined;
29
+ }
30
+
31
+ }
32
+ //# sourceMappingURL=utm-cookie.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["CookieStorage","UTMCookie","get","key","value","getRaw","undefined","entries","split","splice","reduce","acc","curr","decodeURIComponent","set"],"sources":["utm-cookie.ts"],"sourcesContent":["import { CookieStorage } from './cookie';\n\nexport class UTMCookie extends CookieStorage<Record<string, string | undefined>> {\n async get(key: string): Promise<Record<string, string | undefined> | undefined> {\n try {\n const value = await this.getRaw(key);\n if (!value) {\n return undefined;\n }\n const entries = value.split('.').splice(-1)[0].split('|');\n return entries.reduce<Record<string, string | undefined>>((acc, curr) => {\n const [key, value = ''] = curr.split('=', 2);\n if (!value) {\n return acc;\n }\n acc[key] = decodeURIComponent(value);\n return acc;\n }, {});\n } catch {\n return undefined;\n }\n }\n\n async set(): Promise<void> {\n return undefined;\n }\n}\n"],"mappings":"AAAA,SAASA,aAAT,QAA8B,UAA9B;AAEA,OAAO,MAAMC,SAAN,SAAwBD,aAAxB,CAA0E;EACtE,MAAHE,GAAG,CAACC,GAAD,EAAuE;IAC9E,IAAI;MACF,MAAMC,KAAK,GAAG,MAAM,KAAKC,MAAL,CAAYF,GAAZ,CAApB;;MACA,IAAI,CAACC,KAAL,EAAY;QACV,OAAOE,SAAP;MACD;;MACD,MAAMC,OAAO,GAAGH,KAAK,CAACI,KAAN,CAAY,GAAZ,EAAiBC,MAAjB,CAAwB,CAAC,CAAzB,EAA4B,CAA5B,EAA+BD,KAA/B,CAAqC,GAArC,CAAhB;MACA,OAAOD,OAAO,CAACG,MAAR,CAAmD,CAACC,GAAD,EAAMC,IAAN,KAAe;QACvE,MAAM,CAACT,GAAD,EAAMC,KAAK,GAAG,EAAd,IAAoBQ,IAAI,CAACJ,KAAL,CAAW,GAAX,EAAgB,CAAhB,CAA1B;;QACA,IAAI,CAACJ,KAAL,EAAY;UACV,OAAOO,GAAP;QACD;;QACDA,GAAG,CAACR,GAAD,CAAH,GAAWU,kBAAkB,CAACT,KAAD,CAA7B;QACA,OAAOO,GAAP;MACD,CAPM,EAOJ,EAPI,CAAP;IAQD,CAdD,CAcE,MAAM;MACN,OAAOL,SAAP;IACD;EACF;;EAEQ,MAAHQ,GAAG,GAAkB;IACzB,OAAOR,SAAP;EACD;;AAvB8E"}
@@ -0,0 +1,24 @@
1
+ import { BaseTransport } from '@amplitude/analytics-core';
2
+ export class FetchTransport extends BaseTransport {
3
+ async send(serverUrl, payload) {
4
+ /* istanbul ignore if */
5
+ if (typeof fetch === 'undefined') {
6
+ throw new Error('FetchTransport is not supported');
7
+ }
8
+
9
+ const options = {
10
+ headers: {
11
+ 'Content-Type': 'application/json',
12
+ Accept: '*/*'
13
+ },
14
+ body: JSON.stringify(payload),
15
+ method: 'POST'
16
+ };
17
+ const response = await fetch(serverUrl, options); // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
18
+
19
+ const responsePayload = await response.json();
20
+ return this.buildResponse(responsePayload);
21
+ }
22
+
23
+ }
24
+ //# sourceMappingURL=fetch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["BaseTransport","FetchTransport","send","serverUrl","payload","fetch","Error","options","headers","Accept","body","JSON","stringify","method","response","responsePayload","json","buildResponse"],"sources":["fetch.ts"],"sourcesContent":["import { BaseTransport } from '@amplitude/analytics-core';\nimport { Payload, Response, Transport } from '@amplitude/analytics-types';\n\nexport class FetchTransport extends BaseTransport implements Transport {\n async send(serverUrl: string, payload: Payload): Promise<Response | null> {\n /* istanbul ignore if */\n if (typeof fetch === 'undefined') {\n throw new Error('FetchTransport is not supported');\n }\n const options: RequestInit = {\n headers: {\n 'Content-Type': 'application/json',\n Accept: '*/*',\n },\n body: JSON.stringify(payload),\n method: 'POST',\n };\n const response = await fetch(serverUrl, options);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const responsePayload: Record<string, any> = await response.json();\n return this.buildResponse(responsePayload);\n }\n}\n"],"mappings":"AAAA,SAASA,aAAT,QAA8B,2BAA9B;AAGA,OAAO,MAAMC,cAAN,SAA6BD,aAA7B,CAAgE;EAC3D,MAAJE,IAAI,CAACC,SAAD,EAAoBC,OAApB,EAAgE;IACxE;IACA,IAAI,OAAOC,KAAP,KAAiB,WAArB,EAAkC;MAChC,MAAM,IAAIC,KAAJ,CAAU,iCAAV,CAAN;IACD;;IACD,MAAMC,OAAoB,GAAG;MAC3BC,OAAO,EAAE;QACP,gBAAgB,kBADT;QAEPC,MAAM,EAAE;MAFD,CADkB;MAK3BC,IAAI,EAAEC,IAAI,CAACC,SAAL,CAAeR,OAAf,CALqB;MAM3BS,MAAM,EAAE;IANmB,CAA7B;IAQA,MAAMC,QAAQ,GAAG,MAAMT,KAAK,CAACF,SAAD,EAAYI,OAAZ,CAA5B,CAbwE,CAcxE;;IACA,MAAMQ,eAAoC,GAAG,MAAMD,QAAQ,CAACE,IAAT,EAAnD;IACA,OAAO,KAAKC,aAAL,CAAmBF,eAAnB,CAAP;EACD;;AAlBoE"}
@@ -0,0 +1,33 @@
1
+ import { BaseTransport } from '@amplitude/analytics-core';
2
+ export class SendBeaconTransport extends BaseTransport {
3
+ async send(serverUrl, payload) {
4
+ return new Promise((resolve, reject) => {
5
+ /* istanbul ignore if */
6
+ if (typeof window === 'undefined' || typeof window.navigator === 'undefined' || typeof window.navigator.sendBeacon === 'undefined') {
7
+ throw new Error('SendBeaconTransport is not supported');
8
+ }
9
+
10
+ try {
11
+ const data = JSON.stringify(payload);
12
+ const success = window.navigator.sendBeacon(serverUrl, JSON.stringify(payload));
13
+
14
+ if (success) {
15
+ return resolve(this.buildResponse({
16
+ code: 200,
17
+ events_ingested: payload.events.length,
18
+ payload_size_bytes: data.length,
19
+ server_upload_time: Date.now()
20
+ }));
21
+ }
22
+
23
+ return resolve(this.buildResponse({
24
+ code: 500
25
+ }));
26
+ } catch (e) {
27
+ reject(e);
28
+ }
29
+ });
30
+ }
31
+
32
+ }
33
+ //# sourceMappingURL=send-beacon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["BaseTransport","SendBeaconTransport","send","serverUrl","payload","Promise","resolve","reject","window","navigator","sendBeacon","Error","data","JSON","stringify","success","buildResponse","code","events_ingested","events","length","payload_size_bytes","server_upload_time","Date","now","e"],"sources":["send-beacon.ts"],"sourcesContent":["import { BaseTransport } from '@amplitude/analytics-core';\nimport { Payload, Response, Transport } from '@amplitude/analytics-types';\n\nexport class SendBeaconTransport extends BaseTransport implements Transport {\n async send(serverUrl: string, payload: Payload): Promise<Response | null> {\n return new Promise((resolve, reject) => {\n /* istanbul ignore if */\n if (\n typeof window === 'undefined' ||\n typeof window.navigator === 'undefined' ||\n typeof window.navigator.sendBeacon === 'undefined'\n ) {\n throw new Error('SendBeaconTransport is not supported');\n }\n try {\n const data = JSON.stringify(payload);\n const success = window.navigator.sendBeacon(serverUrl, JSON.stringify(payload));\n if (success) {\n return resolve(\n this.buildResponse({\n code: 200,\n events_ingested: payload.events.length,\n payload_size_bytes: data.length,\n server_upload_time: Date.now(),\n }),\n );\n }\n return resolve(this.buildResponse({ code: 500 }));\n } catch (e) {\n reject(e);\n }\n });\n }\n}\n"],"mappings":"AAAA,SAASA,aAAT,QAA8B,2BAA9B;AAGA,OAAO,MAAMC,mBAAN,SAAkCD,aAAlC,CAAqE;EAChE,MAAJE,IAAI,CAACC,SAAD,EAAoBC,OAApB,EAAgE;IACxE,OAAO,IAAIC,OAAJ,CAAY,CAACC,OAAD,EAAUC,MAAV,KAAqB;MACtC;MACA,IACE,OAAOC,MAAP,KAAkB,WAAlB,IACA,OAAOA,MAAM,CAACC,SAAd,KAA4B,WAD5B,IAEA,OAAOD,MAAM,CAACC,SAAP,CAAiBC,UAAxB,KAAuC,WAHzC,EAIE;QACA,MAAM,IAAIC,KAAJ,CAAU,sCAAV,CAAN;MACD;;MACD,IAAI;QACF,MAAMC,IAAI,GAAGC,IAAI,CAACC,SAAL,CAAeV,OAAf,CAAb;QACA,MAAMW,OAAO,GAAGP,MAAM,CAACC,SAAP,CAAiBC,UAAjB,CAA4BP,SAA5B,EAAuCU,IAAI,CAACC,SAAL,CAAeV,OAAf,CAAvC,CAAhB;;QACA,IAAIW,OAAJ,EAAa;UACX,OAAOT,OAAO,CACZ,KAAKU,aAAL,CAAmB;YACjBC,IAAI,EAAE,GADW;YAEjBC,eAAe,EAAEd,OAAO,CAACe,MAAR,CAAeC,MAFf;YAGjBC,kBAAkB,EAAET,IAAI,CAACQ,MAHR;YAIjBE,kBAAkB,EAAEC,IAAI,CAACC,GAAL;UAJH,CAAnB,CADY,CAAd;QAQD;;QACD,OAAOlB,OAAO,CAAC,KAAKU,aAAL,CAAmB;UAAEC,IAAI,EAAE;QAAR,CAAnB,CAAD,CAAd;MACD,CAdD,CAcE,OAAOQ,CAAP,EAAU;QACVlB,MAAM,CAACkB,CAAD,CAAN;MACD;IACF,CA1BM,CAAP;EA2BD;;AA7ByE"}
@@ -0,0 +1,44 @@
1
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
+
3
+ import { BaseTransport } from '@amplitude/analytics-core';
4
+ export class XHRTransport extends BaseTransport {
5
+ constructor() {
6
+ super(...arguments);
7
+
8
+ _defineProperty(this, "state", {
9
+ done: 4
10
+ });
11
+ }
12
+
13
+ async send(serverUrl, payload) {
14
+ return new Promise((resolve, reject) => {
15
+ /* istanbul ignore if */
16
+ if (typeof XMLHttpRequest === 'undefined') {
17
+ reject(new Error('XHRTransport is not supported.'));
18
+ }
19
+
20
+ const xhr = new XMLHttpRequest();
21
+ xhr.open('POST', serverUrl, true);
22
+
23
+ xhr.onreadystatechange = () => {
24
+ if (xhr.readyState === this.state.done) {
25
+ try {
26
+ const responsePayload = xhr.responseText; // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
27
+
28
+ const parsedResponsePayload = JSON.parse(responsePayload);
29
+ const result = this.buildResponse(parsedResponsePayload);
30
+ resolve(result);
31
+ } catch (e) {
32
+ reject(e);
33
+ }
34
+ }
35
+ };
36
+
37
+ xhr.setRequestHeader('Content-Type', 'application/json');
38
+ xhr.setRequestHeader('Accept', '*/*');
39
+ xhr.send(JSON.stringify(payload));
40
+ });
41
+ }
42
+
43
+ }
44
+ //# sourceMappingURL=xhr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["BaseTransport","XHRTransport","done","send","serverUrl","payload","Promise","resolve","reject","XMLHttpRequest","Error","xhr","open","onreadystatechange","readyState","state","responsePayload","responseText","parsedResponsePayload","JSON","parse","result","buildResponse","e","setRequestHeader","stringify"],"sources":["xhr.ts"],"sourcesContent":["import { BaseTransport } from '@amplitude/analytics-core';\nimport { Payload, Response, Transport } from '@amplitude/analytics-types';\n\nexport class XHRTransport extends BaseTransport implements Transport {\n private state = {\n done: 4,\n };\n\n async send(serverUrl: string, payload: Payload): Promise<Response | null> {\n return new Promise((resolve, reject) => {\n /* istanbul ignore if */\n if (typeof XMLHttpRequest === 'undefined') {\n reject(new Error('XHRTransport is not supported.'));\n }\n\n const xhr = new XMLHttpRequest();\n xhr.open('POST', serverUrl, true);\n xhr.onreadystatechange = () => {\n if (xhr.readyState === this.state.done) {\n try {\n const responsePayload = xhr.responseText;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const parsedResponsePayload: Record<string, any> = JSON.parse(responsePayload);\n const result = this.buildResponse(parsedResponsePayload);\n resolve(result);\n } catch (e) {\n reject(e);\n }\n }\n };\n xhr.setRequestHeader('Content-Type', 'application/json');\n xhr.setRequestHeader('Accept', '*/*');\n xhr.send(JSON.stringify(payload));\n });\n }\n}\n"],"mappings":";;AAAA,SAASA,aAAT,QAA8B,2BAA9B;AAGA,OAAO,MAAMC,YAAN,SAA2BD,aAA3B,CAA8D;EAAA;IAAA;;IAAA,+BACnD;MACdE,IAAI,EAAE;IADQ,CADmD;EAAA;;EAKzD,MAAJC,IAAI,CAACC,SAAD,EAAoBC,OAApB,EAAgE;IACxE,OAAO,IAAIC,OAAJ,CAAY,CAACC,OAAD,EAAUC,MAAV,KAAqB;MACtC;MACA,IAAI,OAAOC,cAAP,KAA0B,WAA9B,EAA2C;QACzCD,MAAM,CAAC,IAAIE,KAAJ,CAAU,gCAAV,CAAD,CAAN;MACD;;MAED,MAAMC,GAAG,GAAG,IAAIF,cAAJ,EAAZ;MACAE,GAAG,CAACC,IAAJ,CAAS,MAAT,EAAiBR,SAAjB,EAA4B,IAA5B;;MACAO,GAAG,CAACE,kBAAJ,GAAyB,MAAM;QAC7B,IAAIF,GAAG,CAACG,UAAJ,KAAmB,KAAKC,KAAL,CAAWb,IAAlC,EAAwC;UACtC,IAAI;YACF,MAAMc,eAAe,GAAGL,GAAG,CAACM,YAA5B,CADE,CAEF;;YACA,MAAMC,qBAA0C,GAAGC,IAAI,CAACC,KAAL,CAAWJ,eAAX,CAAnD;YACA,MAAMK,MAAM,GAAG,KAAKC,aAAL,CAAmBJ,qBAAnB,CAAf;YACAX,OAAO,CAACc,MAAD,CAAP;UACD,CAND,CAME,OAAOE,CAAP,EAAU;YACVf,MAAM,CAACe,CAAD,CAAN;UACD;QACF;MACF,CAZD;;MAaAZ,GAAG,CAACa,gBAAJ,CAAqB,cAArB,EAAqC,kBAArC;MACAb,GAAG,CAACa,gBAAJ,CAAqB,QAArB,EAA+B,KAA/B;MACAb,GAAG,CAACR,IAAJ,CAASgB,IAAI,CAACM,SAAL,CAAepB,OAAf,CAAT;IACD,CAxBM,CAAP;EAyBD;;AA/BkE"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=browser-snippet.d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["browser-snippet.d.ts"],"sourcesContent":["import { InstanceProxy } from '@amplitude/analytics-types';\n\ndeclare global {\n // globalThis only includes `var` declarations\n // eslint-disable-next-line no-var\n var amplitude: InstanceProxy & { invoked: boolean };\n}\n"],"mappings":""}
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=ua-parser.d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["ua-parser.d.ts"],"sourcesContent":["declare module '@amplitude/ua-parser-js' {\n import UAParser from 'ua-parser-js';\n export = UAParser;\n}\n"],"mappings":""}
@@ -0,0 +1,10 @@
1
+ import { AMPLITUDE_PREFIX } from '@amplitude/analytics-core';
2
+ export const getCookieName = function (apiKey) {
3
+ let postKey = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
4
+ let limit = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 10;
5
+ return [AMPLITUDE_PREFIX, postKey, apiKey.substring(0, limit)].filter(Boolean).join('_');
6
+ };
7
+ export const getOldCookieName = apiKey => {
8
+ return `${AMPLITUDE_PREFIX.toLowerCase()}_${apiKey.substring(0, 6)}`;
9
+ };
10
+ //# sourceMappingURL=cookie-name.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["AMPLITUDE_PREFIX","getCookieName","apiKey","postKey","limit","substring","filter","Boolean","join","getOldCookieName","toLowerCase"],"sources":["cookie-name.ts"],"sourcesContent":["import { AMPLITUDE_PREFIX } from '@amplitude/analytics-core';\n\nexport const getCookieName = (apiKey: string, postKey = '', limit = 10) => {\n return [AMPLITUDE_PREFIX, postKey, apiKey.substring(0, limit)].filter(Boolean).join('_');\n};\n\nexport const getOldCookieName = (apiKey: string) => {\n return `${AMPLITUDE_PREFIX.toLowerCase()}_${apiKey.substring(0, 6)}`;\n};\n"],"mappings":"AAAA,SAASA,gBAAT,QAAiC,2BAAjC;AAEA,OAAO,MAAMC,aAAa,GAAG,UAACC,MAAD,EAA8C;EAAA,IAA7BC,OAA6B,uEAAnB,EAAmB;EAAA,IAAfC,KAAe,uEAAP,EAAO;EACzE,OAAO,CAACJ,gBAAD,EAAmBG,OAAnB,EAA4BD,MAAM,CAACG,SAAP,CAAiB,CAAjB,EAAoBD,KAApB,CAA5B,EAAwDE,MAAxD,CAA+DC,OAA/D,EAAwEC,IAAxE,CAA6E,GAA7E,CAAP;AACD,CAFM;AAIP,OAAO,MAAMC,gBAAgB,GAAIP,MAAD,IAAoB;EAClD,OAAQ,GAAEF,gBAAgB,CAACU,WAAjB,EAA+B,IAAGR,MAAM,CAACG,SAAP,CAAiB,CAAjB,EAAoB,CAApB,CAAuB,EAAnE;AACD,CAFM"}
@@ -0,0 +1,9 @@
1
+ export const getLanguage = () => {
2
+ var _ref, _ref2, _navigator$languages$, _navigator$languages;
3
+
4
+ if (typeof navigator === 'undefined') return ''; // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
5
+
6
+ const userLanguage = navigator.userLanguage;
7
+ return (_ref = (_ref2 = (_navigator$languages$ = (_navigator$languages = navigator.languages) === null || _navigator$languages === void 0 ? void 0 : _navigator$languages[0]) !== null && _navigator$languages$ !== void 0 ? _navigator$languages$ : navigator.language) !== null && _ref2 !== void 0 ? _ref2 : userLanguage) !== null && _ref !== void 0 ? _ref : '';
8
+ };
9
+ //# sourceMappingURL=language.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getLanguage","navigator","userLanguage","languages","language"],"sources":["language.ts"],"sourcesContent":["export const getLanguage = (): string => {\n if (typeof navigator === 'undefined') return '';\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const userLanguage = (navigator as any).userLanguage as string | undefined;\n\n return navigator.languages?.[0] ?? navigator.language ?? userLanguage ?? '';\n};\n"],"mappings":"AAAA,OAAO,MAAMA,WAAW,GAAG,MAAc;EAAA;;EACvC,IAAI,OAAOC,SAAP,KAAqB,WAAzB,EAAsC,OAAO,EAAP,CADC,CAEvC;;EACA,MAAMC,YAAY,GAAID,SAAD,CAAmBC,YAAxC;EAEA,yEAAOD,SAAS,CAACE,SAAjB,yDAAO,qBAAsB,CAAtB,CAAP,yEAAmCF,SAAS,CAACG,QAA7C,yCAAyDF,YAAzD,uCAAyE,EAAzE;AACD,CANM"}
@@ -0,0 +1,8 @@
1
+ import { Platform } from 'react-native';
2
+ export const isWeb = () => {
3
+ return Platform.OS === 'web';
4
+ };
5
+ export const isNative = () => {
6
+ return !isWeb();
7
+ };
8
+ //# sourceMappingURL=platform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Platform","isWeb","OS","isNative"],"sources":["platform.ts"],"sourcesContent":["import { Platform } from 'react-native';\n\nexport const isWeb = (): boolean => {\n return Platform.OS === 'web';\n};\n\nexport const isNative = (): boolean => {\n return !isWeb();\n};\n"],"mappings":"AAAA,SAASA,QAAT,QAAyB,cAAzB;AAEA,OAAO,MAAMC,KAAK,GAAG,MAAe;EAClC,OAAOD,QAAQ,CAACE,EAAT,KAAgB,KAAvB;AACD,CAFM;AAIP,OAAO,MAAMC,QAAQ,GAAG,MAAe;EACrC,OAAO,CAACF,KAAK,EAAb;AACD,CAFM"}
@@ -0,0 +1,26 @@
1
+ import { isNative } from './platform';
2
+ export const getQueryParams = () => {
3
+ if (isNative()) {
4
+ return {};
5
+ }
6
+ /* istanbul ignore if */
7
+
8
+
9
+ if (typeof window === 'undefined') {
10
+ return {};
11
+ }
12
+
13
+ const pairs = window.location.search.substring(1).split('&').filter(Boolean);
14
+ const params = pairs.reduce((acc, curr) => {
15
+ const [key, value = ''] = curr.split('=', 2);
16
+
17
+ if (!value) {
18
+ return acc;
19
+ }
20
+
21
+ acc[decodeURIComponent(key)] = decodeURIComponent(value);
22
+ return acc;
23
+ }, {});
24
+ return params;
25
+ };
26
+ //# sourceMappingURL=query-params.js.map
@@ -0,0 +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 if (isNative()) {\n return {};\n }\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 [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,IAAID,QAAQ,EAAZ,EAAgB;IACd,OAAO,EAAP;EACD;EACD;;;EACA,IAAI,OAAOE,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,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,CAlBM"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Applies the proxied functions on the proxied amplitude snippet to an instance of the real object.
3
+ * @ignore
4
+ */
5
+ export const runQueuedFunctions = (instance, queue) => {
6
+ convertProxyObjectToRealObject(instance, queue);
7
+ };
8
+ /**
9
+ * Applies the proxied functions on the proxied object to an instance of the real object.
10
+ * Used to convert proxied Identify and Revenue objects.
11
+ */
12
+
13
+ export const convertProxyObjectToRealObject = (instance, queue) => {
14
+ for (let i = 0; i < queue.length; i++) {
15
+ const {
16
+ name,
17
+ args,
18
+ resolve
19
+ } = queue[i];
20
+ const fn = instance && instance[name];
21
+
22
+ if (typeof fn === 'function') {
23
+ const result = fn.apply(instance, args);
24
+
25
+ if (typeof resolve === 'function') {
26
+ resolve(result === null || result === void 0 ? void 0 : result.promise);
27
+ }
28
+ }
29
+ }
30
+
31
+ return instance;
32
+ };
33
+ /**
34
+ * Check if the param is snippet proxy
35
+ */
36
+
37
+ export const isInstanceProxy = instance => {
38
+ const instanceProxy = instance;
39
+ return instanceProxy && instanceProxy._q !== undefined;
40
+ };
41
+ //# sourceMappingURL=snippet-helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["runQueuedFunctions","instance","queue","convertProxyObjectToRealObject","i","length","name","args","resolve","fn","result","apply","promise","isInstanceProxy","instanceProxy","_q","undefined"],"sources":["snippet-helper.ts"],"sourcesContent":["import { AmplitudeReturn, InstanceProxy, QueueProxy, Result } from '@amplitude/analytics-types';\n\n/**\n * Applies the proxied functions on the proxied amplitude snippet to an instance of the real object.\n * @ignore\n */\nexport const runQueuedFunctions = (instance: object, queue: QueueProxy) => {\n convertProxyObjectToRealObject(instance, queue);\n};\n\n/**\n * Applies the proxied functions on the proxied object to an instance of the real object.\n * Used to convert proxied Identify and Revenue objects.\n */\nexport const convertProxyObjectToRealObject = <T>(instance: T, queue: QueueProxy): T => {\n for (let i = 0; i < queue.length; i++) {\n const { name, args, resolve } = queue[i];\n const fn = instance && instance[name as keyof T];\n if (typeof fn === 'function') {\n const result = fn.apply(instance, args) as AmplitudeReturn<Result>;\n if (typeof resolve === 'function') {\n resolve(result?.promise);\n }\n }\n }\n return instance;\n};\n\n/**\n * Check if the param is snippet proxy\n */\nexport const isInstanceProxy = (instance: unknown): instance is InstanceProxy => {\n const instanceProxy = instance as InstanceProxy;\n return instanceProxy && instanceProxy._q !== undefined;\n};\n"],"mappings":"AAEA;AACA;AACA;AACA;AACA,OAAO,MAAMA,kBAAkB,GAAG,CAACC,QAAD,EAAmBC,KAAnB,KAAyC;EACzEC,8BAA8B,CAACF,QAAD,EAAWC,KAAX,CAA9B;AACD,CAFM;AAIP;AACA;AACA;AACA;;AACA,OAAO,MAAMC,8BAA8B,GAAG,CAAIF,QAAJ,EAAiBC,KAAjB,KAA0C;EACtF,KAAK,IAAIE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGF,KAAK,CAACG,MAA1B,EAAkCD,CAAC,EAAnC,EAAuC;IACrC,MAAM;MAAEE,IAAF;MAAQC,IAAR;MAAcC;IAAd,IAA0BN,KAAK,CAACE,CAAD,CAArC;IACA,MAAMK,EAAE,GAAGR,QAAQ,IAAIA,QAAQ,CAACK,IAAD,CAA/B;;IACA,IAAI,OAAOG,EAAP,KAAc,UAAlB,EAA8B;MAC5B,MAAMC,MAAM,GAAGD,EAAE,CAACE,KAAH,CAASV,QAAT,EAAmBM,IAAnB,CAAf;;MACA,IAAI,OAAOC,OAAP,KAAmB,UAAvB,EAAmC;QACjCA,OAAO,CAACE,MAAD,aAACA,MAAD,uBAACA,MAAM,CAAEE,OAAT,CAAP;MACD;IACF;EACF;;EACD,OAAOX,QAAP;AACD,CAZM;AAcP;AACA;AACA;;AACA,OAAO,MAAMY,eAAe,GAAIZ,QAAD,IAAkD;EAC/E,MAAMa,aAAa,GAAGb,QAAtB;EACA,OAAOa,aAAa,IAAIA,aAAa,CAACC,EAAd,KAAqBC,SAA7C;AACD,CAHM"}
@@ -0,0 +1,2 @@
1
+ export const VERSION = '0.0.1-dev.0';
2
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["VERSION"],"sources":["version.ts"],"sourcesContent":["export const VERSION = '0.0.1-dev.0';\n"],"mappings":"AAAA,OAAO,MAAMA,OAAO,GAAG,aAAhB"}
@@ -0,0 +1,10 @@
1
+ import { UTMCookie } from '../storage/utm-cookie';
2
+ import { Campaign, CampaignParser as ICampaignParser, ClickIdParameters, ReferrerParameters, UTMParameters } from '@amplitude/analytics-types';
3
+ export declare class CampaignParser implements ICampaignParser {
4
+ utmCookieStorage: UTMCookie;
5
+ parse(): Promise<Campaign>;
6
+ getUtmParam(): Promise<UTMParameters>;
7
+ getReferrer(): ReferrerParameters;
8
+ getClickIds(): ClickIdParameters;
9
+ }
10
+ //# sourceMappingURL=campaign-parser.d.ts.map