@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 @@
1
+ {"version":3,"names":["AmplitudeReactNative","AmplitudeCore","init","apiKey","userId","options","oldCookies","parseOldCookies","reactNativeOptions","useReactNativeConfig","deviceId","sessionId","optOut","lastEventTime","undefined","isNewSession","config","Date","now","sessionTimeout","add","Context","Destination","runAttributionStrategy","attribution","attributionConfig","track","bind","onNewCampaign","setSessionId","storage","createFlexibleStorage","campaignTracker","CampaignTracker","send","getUserId","setUserId","getDeviceId","setDeviceId","regenerateDeviceId","createDeviceId","getSessionId","setOptOut","setTransport","transport","transportProvider","createTransport","identify","eventOptions","isInstanceProxy","queue","_q","convertProxyObjectToRealObject","Identify","groupIdentify","groupType","groupName","revenue","Revenue","client","returnWrapper","remove","logEvent","setGroup"],"sources":["react-native-client.ts"],"sourcesContent":["import { AmplitudeCore, Destination, Identify, Revenue, returnWrapper } from '@amplitude/analytics-core';\nimport {\n ReactNativeConfig,\n Campaign,\n EventOptions,\n Identify as IIdentify,\n Result,\n Revenue as IRevenue,\n TransportType,\n ReactNativeOptions,\n AdditionalReactNativeOptions,\n AttributionReactNativeOptions,\n} from '@amplitude/analytics-types';\nimport { convertProxyObjectToRealObject, isInstanceProxy } from './utils/snippet-helper';\nimport { Context } from './plugins/context';\nimport { useReactNativeConfig, createTransport, createDeviceId, createFlexibleStorage } from './config';\nimport { parseOldCookies } from './cookie-migration';\nimport { CampaignTracker } from './attribution/campaign-tracker';\n\nexport class AmplitudeReactNative extends AmplitudeCore<ReactNativeConfig> {\n async init(apiKey: string, userId?: string, options?: ReactNativeOptions & AdditionalReactNativeOptions) {\n // Step 1: Read cookies stored by old SDK\n const oldCookies = await parseOldCookies(apiKey, options);\n\n // Step 2: Create react native config\n const reactNativeOptions = await useReactNativeConfig(apiKey, userId || oldCookies.userId, {\n ...options,\n deviceId: oldCookies.deviceId ?? options?.deviceId,\n sessionId: oldCookies.sessionId ?? options?.sessionId,\n optOut: options?.optOut ?? oldCookies.optOut,\n lastEventTime: oldCookies.lastEventTime,\n });\n await super.init(undefined, undefined, reactNativeOptions);\n\n // Step 3: Manage session\n let isNewSession = false;\n if (\n !this.config.sessionId ||\n (this.config.lastEventTime && Date.now() - this.config.lastEventTime > this.config.sessionTimeout)\n ) {\n // Either\n // 1) No previous session; or\n // 2) Previous session expired\n this.config.sessionId = Date.now();\n isNewSession = true;\n }\n\n // Step 4: Install plugins\n // Do not track any events before this\n await this.add(new Context());\n await this.add(new Destination());\n\n // Step 5: Track attributions\n await this.runAttributionStrategy(options?.attribution, isNewSession);\n }\n\n async runAttributionStrategy(attributionConfig?: AttributionReactNativeOptions, isNewSession = false) {\n const track = this.track.bind(this);\n const onNewCampaign = this.setSessionId.bind(this, Date.now());\n\n const storage = await createFlexibleStorage<Campaign>(this.config);\n const campaignTracker = new CampaignTracker(this.config.apiKey, {\n ...attributionConfig,\n storage,\n track,\n onNewCampaign,\n });\n\n await campaignTracker.send(isNewSession);\n }\n\n getUserId() {\n return this.config.userId;\n }\n\n setUserId(userId: string | undefined) {\n this.config.userId = userId;\n }\n\n getDeviceId() {\n return this.config.deviceId;\n }\n\n setDeviceId(deviceId: string) {\n this.config.deviceId = deviceId;\n }\n\n regenerateDeviceId() {\n const deviceId = createDeviceId();\n this.setDeviceId(deviceId);\n }\n\n getSessionId() {\n return this.config.sessionId;\n }\n\n setSessionId(sessionId: number) {\n this.config.sessionId = sessionId;\n }\n\n setOptOut(optOut: boolean) {\n this.config.optOut = optOut;\n }\n\n setTransport(transport: TransportType) {\n this.config.transportProvider = createTransport(transport);\n }\n\n identify(identify: IIdentify, eventOptions?: EventOptions): Promise<Result> {\n if (isInstanceProxy(identify)) {\n const queue = identify._q;\n identify._q = [];\n identify = convertProxyObjectToRealObject(new Identify(), queue);\n }\n return super.identify(identify, eventOptions);\n }\n\n groupIdentify(\n groupType: string,\n groupName: string | string[],\n identify: IIdentify,\n eventOptions?: EventOptions,\n ): Promise<Result> {\n if (isInstanceProxy(identify)) {\n const queue = identify._q;\n identify._q = [];\n identify = convertProxyObjectToRealObject(new Identify(), queue);\n }\n return super.groupIdentify(groupType, groupName, identify, eventOptions);\n }\n\n revenue(revenue: IRevenue, eventOptions?: EventOptions) {\n if (isInstanceProxy(revenue)) {\n const queue = revenue._q;\n revenue._q = [];\n revenue = convertProxyObjectToRealObject(new Revenue(), queue);\n }\n return super.revenue(revenue, eventOptions);\n }\n}\n\nconst client = new AmplitudeReactNative();\n\n/**\n * Initializes the Amplitude SDK with your apiKey, userId and optional configurations.\n * This method must be called before any other operations.\n *\n * ```typescript\n * await init(API_KEY, USER_ID, options).promise;\n * ```\n */\nexport const init = returnWrapper(client.init.bind(client));\n\n/**\n * Adds a new plugin.\n *\n * ```typescript\n * const plugin = {...};\n * amplitude.add(plugin);\n * ```\n */\nexport const add = returnWrapper(client.add.bind(client));\n\n/**\n * Removes a plugin.\n *\n * ```typescript\n * amplitude.remove('myPlugin');\n * ```\n */\nexport const remove = returnWrapper(client.remove.bind(client));\n\n/**\n * Tracks user-defined event, with specified type, optional event properties and optional overwrites.\n *\n * ```typescript\n * // event tracking with event type only\n * track('Page Load');\n *\n * // event tracking with event type and additional event properties\n * track('Page Load', { loadTime: 1000 });\n *\n * // event tracking with event type, additional event properties, and overwritten event options\n * track('Page Load', { loadTime: 1000 }, { sessionId: -1 });\n *\n * // alternatively, this tracking method is awaitable\n * const result = await track('Page Load').promise;\n * console.log(result.event); // {...}\n * console.log(result.code); // 200\n * console.log(result.message); // \"Event tracked successfully\"\n * ```\n */\nexport const track = returnWrapper(client.track.bind(client));\n\n/**\n * Alias for track()\n */\nexport const logEvent = returnWrapper(client.logEvent.bind(client));\n\n/**\n * Sends an identify event containing user property operations\n *\n * ```typescript\n * const id = new Identify();\n * id.set('colors', ['rose', 'gold']);\n * identify(id);\n *\n * // alternatively, this tracking method is awaitable\n * const result = await identify(id).promise;\n * console.log(result.event); // {...}\n * console.log(result.code); // 200\n * console.log(result.message); // \"Event tracked successfully\"\n * ```\n */\nexport const identify = returnWrapper(client.identify.bind(client));\n\n/**\n * Sends a group identify event containing group property operations.\n *\n * ```typescript\n * const id = new Identify();\n * id.set('skills', ['js', 'ts']);\n * const groupType = 'org';\n * const groupName = 'engineering';\n * groupIdentify(groupType, groupName, id);\n *\n * // alternatively, this tracking method is awaitable\n * const result = await groupIdentify(groupType, groupName, id).promise;\n * console.log(result.event); // {...}\n * console.log(result.code); // 200\n * console.log(result.message); // \"Event tracked successfully\"\n * ```\n */\nexport const groupIdentify = returnWrapper(client.groupIdentify.bind(client));\nexport const setGroup = returnWrapper(client.setGroup.bind(client));\n\n/**\n * Sends a revenue event containing revenue property operations.\n *\n * ```typescript\n * const rev = new Revenue();\n * rev.setRevenue(100);\n * revenue(rev);\n *\n * // alternatively, this tracking method is awaitable\n * const result = await revenue(rev).promise;\n * console.log(result.event); // {...}\n * console.log(result.code); // 200\n * console.log(result.message); // \"Event tracked successfully\"\n * ```\n */\nexport const revenue = returnWrapper(client.revenue.bind(client));\n\n/**\n * Returns current user ID.\n *\n * ```typescript\n * const userId = getUserId();\n * ```\n */\nexport const getUserId = client.getUserId.bind(client);\n\n/**\n * Sets a new user ID.\n *\n * ```typescript\n * setUserId('userId');\n * ```\n */\nexport const setUserId = client.setUserId.bind(client);\n\n/**\n * Returns current device ID.\n *\n * ```typescript\n * const deviceId = getDeviceId();\n * ```\n */\nexport const getDeviceId = client.getDeviceId.bind(client);\n\n/**\n * Sets a new device ID.\n * When setting a custom device ID, make sure the value is sufficiently unique.\n * A uuid is recommended.\n *\n * ```typescript\n * setDeviceId('deviceId');\n * ```\n */\nexport const setDeviceId = client.setDeviceId.bind(client);\n\n/**\n * Regenerates a new random deviceId for current user. Note: this is not recommended unless you know what you\n * are doing. This can be used in conjunction with `setUserId(undefined)` to anonymize users after they log out.\n * With an `unefined` userId and a completely new deviceId, the current user would appear as a brand new user in dashboard.\n *\n * ```typescript\n * regenerateDeviceId();\n * ```\n */\nexport const regenerateDeviceId = client.regenerateDeviceId.bind(client);\n\n/**\n * Returns current session ID.\n *\n * ```typescript\n * const sessionId = getSessionId();\n * ```\n */\nexport const getSessionId = client.getSessionId.bind(client);\n\n/**\n * Sets a new session ID.\n * When settign a custom session ID, make sure the value is in milliseconds since epoch (Unix Timestamp).\n *\n * ```typescript\n * setSessionId(Date.now());\n * ```\n */\nexport const setSessionId = client.setSessionId.bind(client);\n\n/**\n * Sets a new optOut config value. This toggles event tracking on/off.\n *\n *```typescript\n * // Stops tracking\n * setOptOut(true);\n *\n * // Starts/resumes tracking\n * setOptOut(false);\n * ```\n */\nexport const setOptOut = client.setOptOut.bind(client);\n\n/**\n * Sets the network transport type for events.\n *\n * ```typescript\n * // Use Fetch API\n * setTransport('fetch');\n *\n * // Use XMLHttpRequest API\n * setTransport('xhr');\n *\n * // Use navigator.sendBeacon API\n * setTransport('beacon');\n * ```\n */\nexport const setTransport = client.setTransport.bind(client);\n"],"mappings":";;;;;;;AAAA;;AAaA;;AACA;;AACA;;AACA;;AACA;;AAEO,MAAMA,oBAAN,SAAmCC,4BAAnC,CAAoE;EAC/D,MAAJC,IAAI,CAACC,MAAD,EAAiBC,MAAjB,EAAkCC,OAAlC,EAA+F;IAAA;;IACvG;IACA,MAAMC,UAAU,GAAG,MAAM,IAAAC,gCAAA,EAAgBJ,MAAhB,EAAwBE,OAAxB,CAAzB,CAFuG,CAIvG;;IACA,MAAMG,kBAAkB,GAAG,MAAM,IAAAC,4BAAA,EAAqBN,MAArB,EAA6BC,MAAM,IAAIE,UAAU,CAACF,MAAlD,EAA0D,EACzF,GAAGC,OADsF;MAEzFK,QAAQ,0BAAEJ,UAAU,CAACI,QAAb,uEAAyBL,OAAzB,aAAyBA,OAAzB,uBAAyBA,OAAO,CAAEK,QAF+C;MAGzFC,SAAS,2BAAEL,UAAU,CAACK,SAAb,yEAA0BN,OAA1B,aAA0BA,OAA1B,uBAA0BA,OAAO,CAAEM,SAH6C;MAIzFC,MAAM,qBAAEP,OAAF,aAAEA,OAAF,uBAAEA,OAAO,CAAEO,MAAX,6DAAqBN,UAAU,CAACM,MAJmD;MAKzFC,aAAa,EAAEP,UAAU,CAACO;IAL+D,CAA1D,CAAjC;IAOA,MAAM,MAAMX,IAAN,CAAWY,SAAX,EAAsBA,SAAtB,EAAiCN,kBAAjC,CAAN,CAZuG,CAcvG;;IACA,IAAIO,YAAY,GAAG,KAAnB;;IACA,IACE,CAAC,KAAKC,MAAL,CAAYL,SAAb,IACC,KAAKK,MAAL,CAAYH,aAAZ,IAA6BI,IAAI,CAACC,GAAL,KAAa,KAAKF,MAAL,CAAYH,aAAzB,GAAyC,KAAKG,MAAL,CAAYG,cAFrF,EAGE;MACA;MACA;MACA;MACA,KAAKH,MAAL,CAAYL,SAAZ,GAAwBM,IAAI,CAACC,GAAL,EAAxB;MACAH,YAAY,GAAG,IAAf;IACD,CAzBsG,CA2BvG;IACA;;;IACA,MAAM,KAAKK,GAAL,CAAS,IAAIC,gBAAJ,EAAT,CAAN;IACA,MAAM,KAAKD,GAAL,CAAS,IAAIE,0BAAJ,EAAT,CAAN,CA9BuG,CAgCvG;;IACA,MAAM,KAAKC,sBAAL,CAA4BlB,OAA5B,aAA4BA,OAA5B,uBAA4BA,OAAO,CAAEmB,WAArC,EAAkDT,YAAlD,CAAN;EACD;;EAE2B,MAAtBQ,sBAAsB,CAACE,iBAAD,EAA0E;IAAA,IAAtBV,YAAsB,uEAAP,KAAO;IACpG,MAAMW,KAAK,GAAG,KAAKA,KAAL,CAAWC,IAAX,CAAgB,IAAhB,CAAd;IACA,MAAMC,aAAa,GAAG,KAAKC,YAAL,CAAkBF,IAAlB,CAAuB,IAAvB,EAA6BV,IAAI,CAACC,GAAL,EAA7B,CAAtB;IAEA,MAAMY,OAAO,GAAG,MAAM,IAAAC,6BAAA,EAAgC,KAAKf,MAArC,CAAtB;IACA,MAAMgB,eAAe,GAAG,IAAIC,gCAAJ,CAAoB,KAAKjB,MAAL,CAAYb,MAAhC,EAAwC,EAC9D,GAAGsB,iBAD2D;MAE9DK,OAF8D;MAG9DJ,KAH8D;MAI9DE;IAJ8D,CAAxC,CAAxB;IAOA,MAAMI,eAAe,CAACE,IAAhB,CAAqBnB,YAArB,CAAN;EACD;;EAEDoB,SAAS,GAAG;IACV,OAAO,KAAKnB,MAAL,CAAYZ,MAAnB;EACD;;EAEDgC,SAAS,CAAChC,MAAD,EAA6B;IACpC,KAAKY,MAAL,CAAYZ,MAAZ,GAAqBA,MAArB;EACD;;EAEDiC,WAAW,GAAG;IACZ,OAAO,KAAKrB,MAAL,CAAYN,QAAnB;EACD;;EAED4B,WAAW,CAAC5B,QAAD,EAAmB;IAC5B,KAAKM,MAAL,CAAYN,QAAZ,GAAuBA,QAAvB;EACD;;EAED6B,kBAAkB,GAAG;IACnB,MAAM7B,QAAQ,GAAG,IAAA8B,sBAAA,GAAjB;IACA,KAAKF,WAAL,CAAiB5B,QAAjB;EACD;;EAED+B,YAAY,GAAG;IACb,OAAO,KAAKzB,MAAL,CAAYL,SAAnB;EACD;;EAEDkB,YAAY,CAAClB,SAAD,EAAoB;IAC9B,KAAKK,MAAL,CAAYL,SAAZ,GAAwBA,SAAxB;EACD;;EAED+B,SAAS,CAAC9B,MAAD,EAAkB;IACzB,KAAKI,MAAL,CAAYJ,MAAZ,GAAqBA,MAArB;EACD;;EAED+B,YAAY,CAACC,SAAD,EAA2B;IACrC,KAAK5B,MAAL,CAAY6B,iBAAZ,GAAgC,IAAAC,uBAAA,EAAgBF,SAAhB,CAAhC;EACD;;EAEDG,QAAQ,CAACA,QAAD,EAAsBC,YAAtB,EAAoE;IAC1E,IAAI,IAAAC,8BAAA,EAAgBF,QAAhB,CAAJ,EAA+B;MAC7B,MAAMG,KAAK,GAAGH,QAAQ,CAACI,EAAvB;MACAJ,QAAQ,CAACI,EAAT,GAAc,EAAd;MACAJ,QAAQ,GAAG,IAAAK,6CAAA,EAA+B,IAAIC,uBAAJ,EAA/B,EAA+CH,KAA/C,CAAX;IACD;;IACD,OAAO,MAAMH,QAAN,CAAeA,QAAf,EAAyBC,YAAzB,CAAP;EACD;;EAEDM,aAAa,CACXC,SADW,EAEXC,SAFW,EAGXT,QAHW,EAIXC,YAJW,EAKM;IACjB,IAAI,IAAAC,8BAAA,EAAgBF,QAAhB,CAAJ,EAA+B;MAC7B,MAAMG,KAAK,GAAGH,QAAQ,CAACI,EAAvB;MACAJ,QAAQ,CAACI,EAAT,GAAc,EAAd;MACAJ,QAAQ,GAAG,IAAAK,6CAAA,EAA+B,IAAIC,uBAAJ,EAA/B,EAA+CH,KAA/C,CAAX;IACD;;IACD,OAAO,MAAMI,aAAN,CAAoBC,SAApB,EAA+BC,SAA/B,EAA0CT,QAA1C,EAAoDC,YAApD,CAAP;EACD;;EAEDS,OAAO,CAACA,OAAD,EAAoBT,YAApB,EAAiD;IACtD,IAAI,IAAAC,8BAAA,EAAgBQ,OAAhB,CAAJ,EAA8B;MAC5B,MAAMP,KAAK,GAAGO,OAAO,CAACN,EAAtB;MACAM,OAAO,CAACN,EAAR,GAAa,EAAb;MACAM,OAAO,GAAG,IAAAL,6CAAA,EAA+B,IAAIM,sBAAJ,EAA/B,EAA8CR,KAA9C,CAAV;IACD;;IACD,OAAO,MAAMO,OAAN,CAAcA,OAAd,EAAuBT,YAAvB,CAAP;EACD;;AAvHwE;;;AA0H3E,MAAMW,MAAM,GAAG,IAAI3D,oBAAJ,EAAf;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,MAAME,IAAI,GAAG,IAAA0D,4BAAA,EAAcD,MAAM,CAACzD,IAAP,CAAYyB,IAAZ,CAAiBgC,MAAjB,CAAd,CAAb;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,MAAMvC,GAAG,GAAG,IAAAwC,4BAAA,EAAcD,MAAM,CAACvC,GAAP,CAAWO,IAAX,CAAgBgC,MAAhB,CAAd,CAAZ;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,MAAME,MAAM,GAAG,IAAAD,4BAAA,EAAcD,MAAM,CAACE,MAAP,CAAclC,IAAd,CAAmBgC,MAAnB,CAAd,CAAf;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,MAAMjC,KAAK,GAAG,IAAAkC,4BAAA,EAAcD,MAAM,CAACjC,KAAP,CAAaC,IAAb,CAAkBgC,MAAlB,CAAd,CAAd;AAEP;AACA;AACA;;;AACO,MAAMG,QAAQ,GAAG,IAAAF,4BAAA,EAAcD,MAAM,CAACG,QAAP,CAAgBnC,IAAhB,CAAqBgC,MAArB,CAAd,CAAjB;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,MAAMZ,QAAQ,GAAG,IAAAa,4BAAA,EAAcD,MAAM,CAACZ,QAAP,CAAgBpB,IAAhB,CAAqBgC,MAArB,CAAd,CAAjB;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,MAAML,aAAa,GAAG,IAAAM,4BAAA,EAAcD,MAAM,CAACL,aAAP,CAAqB3B,IAArB,CAA0BgC,MAA1B,CAAd,CAAtB;;AACA,MAAMI,QAAQ,GAAG,IAAAH,4BAAA,EAAcD,MAAM,CAACI,QAAP,CAAgBpC,IAAhB,CAAqBgC,MAArB,CAAd,CAAjB;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,MAAMF,OAAO,GAAG,IAAAG,4BAAA,EAAcD,MAAM,CAACF,OAAP,CAAe9B,IAAf,CAAoBgC,MAApB,CAAd,CAAhB;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,MAAMxB,SAAS,GAAGwB,MAAM,CAACxB,SAAP,CAAiBR,IAAjB,CAAsBgC,MAAtB,CAAlB;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,MAAMvB,SAAS,GAAGuB,MAAM,CAACvB,SAAP,CAAiBT,IAAjB,CAAsBgC,MAAtB,CAAlB;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,MAAMtB,WAAW,GAAGsB,MAAM,CAACtB,WAAP,CAAmBV,IAAnB,CAAwBgC,MAAxB,CAApB;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,MAAMrB,WAAW,GAAGqB,MAAM,CAACrB,WAAP,CAAmBX,IAAnB,CAAwBgC,MAAxB,CAApB;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,MAAMpB,kBAAkB,GAAGoB,MAAM,CAACpB,kBAAP,CAA0BZ,IAA1B,CAA+BgC,MAA/B,CAA3B;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,MAAMlB,YAAY,GAAGkB,MAAM,CAAClB,YAAP,CAAoBd,IAApB,CAAyBgC,MAAzB,CAArB;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,MAAM9B,YAAY,GAAG8B,MAAM,CAAC9B,YAAP,CAAoBF,IAApB,CAAyBgC,MAAzB,CAArB;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,MAAMjB,SAAS,GAAGiB,MAAM,CAACjB,SAAP,CAAiBf,IAAjB,CAAsBgC,MAAtB,CAAlB;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,MAAMhB,YAAY,GAAGgB,MAAM,CAAChB,YAAP,CAAoBhB,IAApB,CAAyBgC,MAAzB,CAArB"}
@@ -0,0 +1,114 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.SessionManager = void 0;
7
+
8
+ var _cookieName = require("./utils/cookie-name");
9
+
10
+ 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; }
11
+
12
+ class SessionManager {
13
+ constructor(storage, apiKey) {
14
+ this.storage = storage;
15
+
16
+ _defineProperty(this, "storageKey", void 0);
17
+
18
+ _defineProperty(this, "cache", void 0);
19
+
20
+ _defineProperty(this, "isSessionCacheValid", true);
21
+
22
+ this.storageKey = (0, _cookieName.getCookieName)(apiKey);
23
+ this.cache = {
24
+ optOut: false
25
+ };
26
+ }
27
+ /**
28
+ * load() must be called immediately after instantation
29
+ *
30
+ * ```ts
31
+ * await new SessionManager(...).load();
32
+ * ```
33
+ */
34
+
35
+
36
+ async load() {
37
+ var _await$this$storage$g;
38
+
39
+ this.cache = (_await$this$storage$g = await this.storage.get(this.storageKey)) !== null && _await$this$storage$g !== void 0 ? _await$this$storage$g : {
40
+ optOut: false
41
+ };
42
+ return this;
43
+ }
44
+
45
+ setSession(session) {
46
+ this.cache = { ...this.cache,
47
+ ...session
48
+ };
49
+ void this.storage.set(this.storageKey, this.cache);
50
+ }
51
+
52
+ getSessionId() {
53
+ this.isSessionCacheValid = true;
54
+ void this.storage.get(this.storageKey).then(userSession => {
55
+ // Checks if session id has been set since the last get
56
+ if (this.isSessionCacheValid) {
57
+ this.cache.sessionId = userSession === null || userSession === void 0 ? void 0 : userSession.sessionId;
58
+ }
59
+ });
60
+ return this.cache.sessionId;
61
+ }
62
+
63
+ setSessionId(sessionId) {
64
+ // Flags session id has been set
65
+ this.isSessionCacheValid = false;
66
+ this.setSession({
67
+ sessionId
68
+ });
69
+ }
70
+
71
+ getDeviceId() {
72
+ return this.cache.deviceId;
73
+ }
74
+
75
+ setDeviceId(deviceId) {
76
+ this.setSession({
77
+ deviceId
78
+ });
79
+ }
80
+
81
+ getUserId() {
82
+ return this.cache.userId;
83
+ }
84
+
85
+ setUserId(userId) {
86
+ this.setSession({
87
+ userId
88
+ });
89
+ }
90
+
91
+ getLastEventTime() {
92
+ return this.cache.lastEventTime;
93
+ }
94
+
95
+ setLastEventTime(lastEventTime) {
96
+ this.setSession({
97
+ lastEventTime
98
+ });
99
+ }
100
+
101
+ getOptOut() {
102
+ return this.cache.optOut;
103
+ }
104
+
105
+ setOptOut(optOut) {
106
+ this.setSession({
107
+ optOut
108
+ });
109
+ }
110
+
111
+ }
112
+
113
+ exports.SessionManager = SessionManager;
114
+ //# sourceMappingURL=session-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["SessionManager","constructor","storage","apiKey","storageKey","getStorageKey","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;;;;AAEO,MAAMA,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,GAAkB,IAAAC,yBAAA,EAAcF,MAAd,CAAlB;IACA,KAAKG,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,KAAKJ,OAAL,CAAaO,GAAb,CAAiB,KAAKL,UAAtB,CAApB,yEAA0D;MACxDG,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,KAAKT,OAAL,CAAaU,GAAb,CAAiB,KAAKR,UAAtB,EAAkC,KAAKE,KAAvC,CAAL;EACD;;EAEDO,YAAY,GAAG;IACb,KAAKC,mBAAL,GAA2B,IAA3B;IACA,KAAK,KAAKZ,OAAL,CAAaO,GAAb,CAAiB,KAAKL,UAAtB,EAAkCW,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,124 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.CookieStorage = void 0;
7
+
8
+ var _platform = require("../utils/platform");
9
+
10
+ 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; }
11
+
12
+ class CookieStorage {
13
+ constructor(options) {
14
+ _defineProperty(this, "options", void 0);
15
+
16
+ this.options = { ...options
17
+ };
18
+ }
19
+
20
+ async isEnabled() {
21
+ if ((0, _platform.isNative)()) {
22
+ return false;
23
+ }
24
+ /* istanbul ignore if */
25
+
26
+
27
+ if (typeof window === 'undefined') {
28
+ return false;
29
+ }
30
+
31
+ const random = String(Date.now());
32
+ const testStrorage = new CookieStorage();
33
+ const testKey = 'AMP_TEST';
34
+
35
+ try {
36
+ await testStrorage.set(testKey, random);
37
+ const value = await testStrorage.get(testKey);
38
+ return value === random;
39
+ } catch {
40
+ /* istanbul ignore next */
41
+ return false;
42
+ } finally {
43
+ await testStrorage.remove(testKey);
44
+ }
45
+ }
46
+
47
+ async get(key) {
48
+ const value = await this.getRaw(key);
49
+
50
+ if (!value) {
51
+ return undefined;
52
+ }
53
+
54
+ try {
55
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
56
+ return JSON.parse(value);
57
+ } catch {
58
+ /* istanbul ignore next */
59
+ return undefined;
60
+ }
61
+ }
62
+
63
+ async getRaw(key) {
64
+ const cookie = window.document.cookie.split('; ');
65
+ const match = cookie.find(c => c.indexOf(key + '=') === 0);
66
+
67
+ if (!match) {
68
+ return undefined;
69
+ }
70
+
71
+ return match.substring(key.length + 1);
72
+ }
73
+
74
+ async set(key, value) {
75
+ try {
76
+ var _this$options$expirat;
77
+
78
+ const expirationDays = (_this$options$expirat = this.options.expirationDays) !== null && _this$options$expirat !== void 0 ? _this$options$expirat : 0;
79
+ const expires = value !== null ? expirationDays : -1;
80
+ let expireDate = undefined;
81
+
82
+ if (expires) {
83
+ const date = new Date();
84
+ date.setTime(date.getTime() + expires * 24 * 60 * 60 * 1000);
85
+ expireDate = date;
86
+ }
87
+
88
+ let str = `${key}=${JSON.stringify(value)}`;
89
+
90
+ if (expireDate) {
91
+ str += `; expires=${expireDate.toUTCString()}`;
92
+ }
93
+
94
+ str += '; path=/';
95
+
96
+ if (this.options.domain) {
97
+ str += `; domain=${this.options.domain}`;
98
+ }
99
+
100
+ if (this.options.secure) {
101
+ str += '; Secure';
102
+ }
103
+
104
+ if (this.options.sameSite) {
105
+ str += `; SameSite=${this.options.sameSite}`;
106
+ }
107
+
108
+ window.document.cookie = str;
109
+ } catch {//
110
+ }
111
+ }
112
+
113
+ async remove(key) {
114
+ await this.set(key, null);
115
+ }
116
+
117
+ async reset() {
118
+ return;
119
+ }
120
+
121
+ }
122
+
123
+ exports.CookieStorage = CookieStorage;
124
+ //# sourceMappingURL=cookie.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["CookieStorage","constructor","options","isEnabled","isNative","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":"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"}
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.LocalStorage = void 0;
7
+
8
+ var _asyncStorage = _interopRequireDefault(require("@react-native-async-storage/async-storage"));
9
+
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+
12
+ class LocalStorage {
13
+ async isEnabled() {
14
+ /* istanbul ignore if */
15
+ if (typeof window === 'undefined') {
16
+ return false;
17
+ }
18
+
19
+ const random = String(Date.now());
20
+ const testStorage = new LocalStorage();
21
+ const testKey = 'AMP_TEST';
22
+
23
+ try {
24
+ await testStorage.set(testKey, random);
25
+ const value = await testStorage.get(testKey);
26
+ return value === random;
27
+ } catch {
28
+ /* istanbul ignore next */
29
+ return false;
30
+ } finally {
31
+ await testStorage.remove(testKey);
32
+ }
33
+ }
34
+
35
+ async get(key) {
36
+ try {
37
+ const value = await this.getRaw(key);
38
+
39
+ if (!value) {
40
+ return undefined;
41
+ } // eslint-disable-next-line @typescript-eslint/no-unsafe-return
42
+
43
+
44
+ return JSON.parse(value);
45
+ } catch {
46
+ /* istanbul ignore next */
47
+ return undefined;
48
+ }
49
+ }
50
+
51
+ async getRaw(key) {
52
+ return (await _asyncStorage.default.getItem(key)) || undefined;
53
+ }
54
+
55
+ async set(key, value) {
56
+ try {
57
+ await _asyncStorage.default.setItem(key, JSON.stringify(value));
58
+ } catch {//
59
+ }
60
+ }
61
+
62
+ async remove(key) {
63
+ try {
64
+ await _asyncStorage.default.removeItem(key);
65
+ } catch {//
66
+ }
67
+ }
68
+
69
+ async reset() {
70
+ try {
71
+ await _asyncStorage.default.clear();
72
+ } catch {//
73
+ }
74
+ }
75
+
76
+ }
77
+
78
+ exports.LocalStorage = LocalStorage;
79
+ //# sourceMappingURL=local-storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["LocalStorage","isEnabled","window","random","String","Date","now","testStorage","testKey","set","value","get","remove","key","getRaw","undefined","JSON","parse","AsyncStorage","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;;;;AAEO,MAAMA,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,MAAMK,qBAAA,CAAaC,OAAb,CAAqBN,GAArB,CAAP,KAAqCE,SAA5C;EACD;;EAEQ,MAAHN,GAAG,CAACI,GAAD,EAAcH,KAAd,EAAuC;IAC9C,IAAI;MACF,MAAMQ,qBAAA,CAAaE,OAAb,CAAqBP,GAArB,EAA0BG,IAAI,CAACK,SAAL,CAAeX,KAAf,CAA1B,CAAN;IACD,CAFD,CAEE,MAAM,CACN;IACD;EACF;;EAEW,MAANE,MAAM,CAACC,GAAD,EAA6B;IACvC,IAAI;MACF,MAAMK,qBAAA,CAAaI,UAAb,CAAwBT,GAAxB,CAAN;IACD,CAFD,CAEE,MAAM,CACN;IACD;EACF;;EAEU,MAALU,KAAK,GAAkB;IAC3B,IAAI;MACF,MAAML,qBAAA,CAAaM,KAAb,EAAN;IACD,CAFD,CAEE,MAAM,CACN;IACD;EACF;;AA9DgD"}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.UTMCookie = void 0;
7
+
8
+ var _cookie = require("./cookie");
9
+
10
+ class UTMCookie extends _cookie.CookieStorage {
11
+ async get(key) {
12
+ try {
13
+ const value = await this.getRaw(key);
14
+
15
+ if (!value) {
16
+ return undefined;
17
+ }
18
+
19
+ const entries = value.split('.').splice(-1)[0].split('|');
20
+ return entries.reduce((acc, curr) => {
21
+ const [key, value = ''] = curr.split('=', 2);
22
+
23
+ if (!value) {
24
+ return acc;
25
+ }
26
+
27
+ acc[key] = decodeURIComponent(value);
28
+ return acc;
29
+ }, {});
30
+ } catch {
31
+ return undefined;
32
+ }
33
+ }
34
+
35
+ async set() {
36
+ return undefined;
37
+ }
38
+
39
+ }
40
+
41
+ exports.UTMCookie = UTMCookie;
42
+ //# sourceMappingURL=utm-cookie.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["UTMCookie","CookieStorage","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;;AAEO,MAAMA,SAAN,SAAwBC,qBAAxB,CAA0E;EACtE,MAAHC,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,34 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.FetchTransport = void 0;
7
+
8
+ var _analyticsCore = require("@amplitude/analytics-core");
9
+
10
+ class FetchTransport extends _analyticsCore.BaseTransport {
11
+ async send(serverUrl, payload) {
12
+ /* istanbul ignore if */
13
+ if (typeof fetch === 'undefined') {
14
+ throw new Error('FetchTransport is not supported');
15
+ }
16
+
17
+ const options = {
18
+ headers: {
19
+ 'Content-Type': 'application/json',
20
+ Accept: '*/*'
21
+ },
22
+ body: JSON.stringify(payload),
23
+ method: 'POST'
24
+ };
25
+ const response = await fetch(serverUrl, options); // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
26
+
27
+ const responsePayload = await response.json();
28
+ return this.buildResponse(responsePayload);
29
+ }
30
+
31
+ }
32
+
33
+ exports.FetchTransport = FetchTransport;
34
+ //# sourceMappingURL=fetch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["FetchTransport","BaseTransport","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;;AAGO,MAAMA,cAAN,SAA6BC,4BAA7B,CAAgE;EAC3D,MAAJC,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,43 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.SendBeaconTransport = void 0;
7
+
8
+ var _analyticsCore = require("@amplitude/analytics-core");
9
+
10
+ class SendBeaconTransport extends _analyticsCore.BaseTransport {
11
+ async send(serverUrl, payload) {
12
+ return new Promise((resolve, reject) => {
13
+ /* istanbul ignore if */
14
+ if (typeof window === 'undefined' || typeof window.navigator === 'undefined' || typeof window.navigator.sendBeacon === 'undefined') {
15
+ throw new Error('SendBeaconTransport is not supported');
16
+ }
17
+
18
+ try {
19
+ const data = JSON.stringify(payload);
20
+ const success = window.navigator.sendBeacon(serverUrl, JSON.stringify(payload));
21
+
22
+ if (success) {
23
+ return resolve(this.buildResponse({
24
+ code: 200,
25
+ events_ingested: payload.events.length,
26
+ payload_size_bytes: data.length,
27
+ server_upload_time: Date.now()
28
+ }));
29
+ }
30
+
31
+ return resolve(this.buildResponse({
32
+ code: 500
33
+ }));
34
+ } catch (e) {
35
+ reject(e);
36
+ }
37
+ });
38
+ }
39
+
40
+ }
41
+
42
+ exports.SendBeaconTransport = SendBeaconTransport;
43
+ //# sourceMappingURL=send-beacon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["SendBeaconTransport","BaseTransport","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;;AAGO,MAAMA,mBAAN,SAAkCC,4BAAlC,CAAqE;EAChE,MAAJC,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,54 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.XHRTransport = void 0;
7
+
8
+ var _analyticsCore = require("@amplitude/analytics-core");
9
+
10
+ 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; }
11
+
12
+ class XHRTransport extends _analyticsCore.BaseTransport {
13
+ constructor() {
14
+ super(...arguments);
15
+
16
+ _defineProperty(this, "state", {
17
+ done: 4
18
+ });
19
+ }
20
+
21
+ async send(serverUrl, payload) {
22
+ return new Promise((resolve, reject) => {
23
+ /* istanbul ignore if */
24
+ if (typeof XMLHttpRequest === 'undefined') {
25
+ reject(new Error('XHRTransport is not supported.'));
26
+ }
27
+
28
+ const xhr = new XMLHttpRequest();
29
+ xhr.open('POST', serverUrl, true);
30
+
31
+ xhr.onreadystatechange = () => {
32
+ if (xhr.readyState === this.state.done) {
33
+ try {
34
+ const responsePayload = xhr.responseText; // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
35
+
36
+ const parsedResponsePayload = JSON.parse(responsePayload);
37
+ const result = this.buildResponse(parsedResponsePayload);
38
+ resolve(result);
39
+ } catch (e) {
40
+ reject(e);
41
+ }
42
+ }
43
+ };
44
+
45
+ xhr.setRequestHeader('Content-Type', 'application/json');
46
+ xhr.setRequestHeader('Accept', '*/*');
47
+ xhr.send(JSON.stringify(payload));
48
+ });
49
+ }
50
+
51
+ }
52
+
53
+ exports.XHRTransport = XHRTransport;
54
+ //# sourceMappingURL=xhr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["XHRTransport","BaseTransport","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;;;;AAGO,MAAMA,YAAN,SAA2BC,4BAA3B,CAA8D;EAAA;IAAA;;IAAA,+BACnD;MACdC,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,6 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ //# 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
+ "use strict";
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,23 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getOldCookieName = exports.getCookieName = void 0;
7
+
8
+ var _analyticsCore = require("@amplitude/analytics-core");
9
+
10
+ const getCookieName = function (apiKey) {
11
+ let postKey = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
12
+ let limit = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 10;
13
+ return [_analyticsCore.AMPLITUDE_PREFIX, postKey, apiKey.substring(0, limit)].filter(Boolean).join('_');
14
+ };
15
+
16
+ exports.getCookieName = getCookieName;
17
+
18
+ const getOldCookieName = apiKey => {
19
+ return `${_analyticsCore.AMPLITUDE_PREFIX.toLowerCase()}_${apiKey.substring(0, 6)}`;
20
+ };
21
+
22
+ exports.getOldCookieName = getOldCookieName;
23
+ //# sourceMappingURL=cookie-name.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getCookieName","apiKey","postKey","limit","AMPLITUDE_PREFIX","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;;AAEO,MAAMA,aAAa,GAAG,UAACC,MAAD,EAA8C;EAAA,IAA7BC,OAA6B,uEAAnB,EAAmB;EAAA,IAAfC,KAAe,uEAAP,EAAO;EACzE,OAAO,CAACC,+BAAD,EAAmBF,OAAnB,EAA4BD,MAAM,CAACI,SAAP,CAAiB,CAAjB,EAAoBF,KAApB,CAA5B,EAAwDG,MAAxD,CAA+DC,OAA/D,EAAwEC,IAAxE,CAA6E,GAA7E,CAAP;AACD,CAFM;;;;AAIA,MAAMC,gBAAgB,GAAIR,MAAD,IAAoB;EAClD,OAAQ,GAAEG,+BAAA,CAAiBM,WAAjB,EAA+B,IAAGT,MAAM,CAACI,SAAP,CAAiB,CAAjB,EAAoB,CAApB,CAAuB,EAAnE;AACD,CAFM"}