react-native-nitro-amplitude 0.1.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 (411) hide show
  1. package/.watchmanconfig +6 -0
  2. package/LICENSE +21 -0
  3. package/README.md +139 -0
  4. package/android/CMakeLists.txt +34 -0
  5. package/android/build.gradle +85 -0
  6. package/android/consumer-rules.pro +35 -0
  7. package/android/gradle.properties +4 -0
  8. package/android/src/main/cpp/AndroidAmplitudeAdapterCpp.cpp +126 -0
  9. package/android/src/main/cpp/AndroidAmplitudeAdapterCpp.hpp +48 -0
  10. package/android/src/main/cpp/cpp-adapter.cpp +9 -0
  11. package/android/src/main/java/com/nitroamplitude/AndroidAmplitudeAdapter.kt +147 -0
  12. package/android/src/main/java/com/nitroamplitude/NitroAmplitudePackage.kt +24 -0
  13. package/app.plugin.js +36 -0
  14. package/cpp/bindings/HybridAmplitudeContext.cpp +83 -0
  15. package/cpp/bindings/HybridAmplitudeContext.hpp +29 -0
  16. package/cpp/bindings/HybridAmplitudeStorage.cpp +163 -0
  17. package/cpp/bindings/HybridAmplitudeStorage.hpp +38 -0
  18. package/cpp/bindings/HybridAmplitudeWorker.cpp +162 -0
  19. package/cpp/bindings/HybridAmplitudeWorker.hpp +74 -0
  20. package/cpp/core/NativeAmplitudeAdapter.hpp +44 -0
  21. package/ios/IOSAmplitudeAdapterCpp.hpp +37 -0
  22. package/ios/IOSAmplitudeAdapterCpp.mm +155 -0
  23. package/lib/commonjs/AmplitudeContext.nitro.js +6 -0
  24. package/lib/commonjs/AmplitudeContext.nitro.js.map +1 -0
  25. package/lib/commonjs/AmplitudeStorage.nitro.js +6 -0
  26. package/lib/commonjs/AmplitudeStorage.nitro.js.map +1 -0
  27. package/lib/commonjs/AmplitudeWorker.nitro.js +6 -0
  28. package/lib/commonjs/AmplitudeWorker.nitro.js.map +1 -0
  29. package/lib/commonjs/analytics/campaign/campaign-tracker.js +105 -0
  30. package/lib/commonjs/analytics/campaign/campaign-tracker.js.map +1 -0
  31. package/lib/commonjs/analytics/campaign/types.js +6 -0
  32. package/lib/commonjs/analytics/campaign/types.js.map +1 -0
  33. package/lib/commonjs/analytics/config.js +283 -0
  34. package/lib/commonjs/analytics/config.js.map +1 -0
  35. package/lib/commonjs/analytics/cookie-migration/index.js +59 -0
  36. package/lib/commonjs/analytics/cookie-migration/index.js.map +1 -0
  37. package/lib/commonjs/analytics/index.js +95 -0
  38. package/lib/commonjs/analytics/index.js.map +1 -0
  39. package/lib/commonjs/analytics/migration/remnant-data-migration.js +177 -0
  40. package/lib/commonjs/analytics/migration/remnant-data-migration.js.map +1 -0
  41. package/lib/commonjs/analytics/nitro-transport.js +31 -0
  42. package/lib/commonjs/analytics/nitro-transport.js.map +1 -0
  43. package/lib/commonjs/analytics/plugins/context.js +140 -0
  44. package/lib/commonjs/analytics/plugins/context.js.map +1 -0
  45. package/lib/commonjs/analytics/react-native-client.js +352 -0
  46. package/lib/commonjs/analytics/react-native-client.js.map +1 -0
  47. package/lib/commonjs/analytics/storage/local-storage.js +73 -0
  48. package/lib/commonjs/analytics/storage/local-storage.js.map +1 -0
  49. package/lib/commonjs/analytics/types.js +175 -0
  50. package/lib/commonjs/analytics/types.js.map +1 -0
  51. package/lib/commonjs/analytics/typings/browser-snippet.d.js +6 -0
  52. package/lib/commonjs/analytics/typings/browser-snippet.d.js.map +1 -0
  53. package/lib/commonjs/analytics/typings/ua-parser.d.js +2 -0
  54. package/lib/commonjs/analytics/typings/ua-parser.d.js.map +1 -0
  55. package/lib/commonjs/analytics/utils/platform.js +16 -0
  56. package/lib/commonjs/analytics/utils/platform.js.map +1 -0
  57. package/lib/commonjs/analytics/version.js +8 -0
  58. package/lib/commonjs/analytics/version.js.map +1 -0
  59. package/lib/commonjs/experiment/experimentClient.js +792 -0
  60. package/lib/commonjs/experiment/experimentClient.js.map +1 -0
  61. package/lib/commonjs/experiment/factory.js +77 -0
  62. package/lib/commonjs/experiment/factory.js.map +1 -0
  63. package/lib/commonjs/experiment/gen/version.js +9 -0
  64. package/lib/commonjs/experiment/gen/version.js.map +1 -0
  65. package/lib/commonjs/experiment/index.js +143 -0
  66. package/lib/commonjs/experiment/index.js.map +1 -0
  67. package/lib/commonjs/experiment/integration/NativeExperimentReactNativeClient.js +11 -0
  68. package/lib/commonjs/experiment/integration/NativeExperimentReactNativeClient.js.map +1 -0
  69. package/lib/commonjs/experiment/integration/connector.js +67 -0
  70. package/lib/commonjs/experiment/integration/connector.js.map +1 -0
  71. package/lib/commonjs/experiment/integration/default.js +92 -0
  72. package/lib/commonjs/experiment/integration/default.js.map +1 -0
  73. package/lib/commonjs/experiment/logger/ampLogger.js +80 -0
  74. package/lib/commonjs/experiment/logger/ampLogger.js.map +1 -0
  75. package/lib/commonjs/experiment/logger/consoleLogger.js +60 -0
  76. package/lib/commonjs/experiment/logger/consoleLogger.js.map +1 -0
  77. package/lib/commonjs/experiment/storage/cache.js +197 -0
  78. package/lib/commonjs/experiment/storage/cache.js.map +1 -0
  79. package/lib/commonjs/experiment/storage/local-storage.js +25 -0
  80. package/lib/commonjs/experiment/storage/local-storage.js.map +1 -0
  81. package/lib/commonjs/experiment/stubClient.js +46 -0
  82. package/lib/commonjs/experiment/stubClient.js.map +1 -0
  83. package/lib/commonjs/experiment/transport/http.js +72 -0
  84. package/lib/commonjs/experiment/transport/http.js.map +1 -0
  85. package/lib/commonjs/experiment/types/client.js +6 -0
  86. package/lib/commonjs/experiment/types/client.js.map +1 -0
  87. package/lib/commonjs/experiment/types/config.js +67 -0
  88. package/lib/commonjs/experiment/types/config.js.map +1 -0
  89. package/lib/commonjs/experiment/types/exposure.js +2 -0
  90. package/lib/commonjs/experiment/types/exposure.js.map +1 -0
  91. package/lib/commonjs/experiment/types/logger.js +42 -0
  92. package/lib/commonjs/experiment/types/logger.js.map +1 -0
  93. package/lib/commonjs/experiment/types/source.js +54 -0
  94. package/lib/commonjs/experiment/types/source.js.map +1 -0
  95. package/lib/commonjs/experiment/types/storage.js +2 -0
  96. package/lib/commonjs/experiment/types/storage.js.map +1 -0
  97. package/lib/commonjs/experiment/types/transport.js +2 -0
  98. package/lib/commonjs/experiment/types/transport.js.map +1 -0
  99. package/lib/commonjs/experiment/types/user.js +2 -0
  100. package/lib/commonjs/experiment/types/user.js.map +1 -0
  101. package/lib/commonjs/experiment/types/variant.js +2 -0
  102. package/lib/commonjs/experiment/types/variant.js.map +1 -0
  103. package/lib/commonjs/experiment/util/backoff.js +54 -0
  104. package/lib/commonjs/experiment/util/backoff.js.map +1 -0
  105. package/lib/commonjs/experiment/util/base64.js +23 -0
  106. package/lib/commonjs/experiment/util/base64.js.map +1 -0
  107. package/lib/commonjs/experiment/util/convert.js +78 -0
  108. package/lib/commonjs/experiment/util/convert.js.map +1 -0
  109. package/lib/commonjs/experiment/util/index.js +25 -0
  110. package/lib/commonjs/experiment/util/index.js.map +1 -0
  111. package/lib/commonjs/experiment/util/platform.js +16 -0
  112. package/lib/commonjs/experiment/util/platform.js.map +1 -0
  113. package/lib/commonjs/experiment/util/randomstring.js +16 -0
  114. package/lib/commonjs/experiment/util/randomstring.js.map +1 -0
  115. package/lib/commonjs/experiment/util/userSessionExposureTracker.js +40 -0
  116. package/lib/commonjs/experiment/util/userSessionExposureTracker.js.map +1 -0
  117. package/lib/commonjs/index.js +298 -0
  118. package/lib/commonjs/index.js.map +1 -0
  119. package/lib/commonjs/index.web.js +22 -0
  120. package/lib/commonjs/index.web.js.map +1 -0
  121. package/lib/commonjs/native/context.js +43 -0
  122. package/lib/commonjs/native/context.js.map +1 -0
  123. package/lib/commonjs/native/http.js +62 -0
  124. package/lib/commonjs/native/http.js.map +1 -0
  125. package/lib/commonjs/native/hybrid.js +31 -0
  126. package/lib/commonjs/native/hybrid.js.map +1 -0
  127. package/lib/commonjs/native/storage.js +93 -0
  128. package/lib/commonjs/native/storage.js.map +1 -0
  129. package/lib/commonjs/package.json +1 -0
  130. package/lib/module/AmplitudeContext.nitro.js +4 -0
  131. package/lib/module/AmplitudeContext.nitro.js.map +1 -0
  132. package/lib/module/AmplitudeStorage.nitro.js +4 -0
  133. package/lib/module/AmplitudeStorage.nitro.js.map +1 -0
  134. package/lib/module/AmplitudeWorker.nitro.js +4 -0
  135. package/lib/module/AmplitudeWorker.nitro.js.map +1 -0
  136. package/lib/module/analytics/campaign/campaign-tracker.js +100 -0
  137. package/lib/module/analytics/campaign/campaign-tracker.js.map +1 -0
  138. package/lib/module/analytics/campaign/types.js +4 -0
  139. package/lib/module/analytics/campaign/types.js.map +1 -0
  140. package/lib/module/analytics/config.js +272 -0
  141. package/lib/module/analytics/config.js.map +1 -0
  142. package/lib/module/analytics/cookie-migration/index.js +51 -0
  143. package/lib/module/analytics/cookie-migration/index.js.map +1 -0
  144. package/lib/module/analytics/index.js +34 -0
  145. package/lib/module/analytics/index.js.map +1 -0
  146. package/lib/module/analytics/migration/remnant-data-migration.js +172 -0
  147. package/lib/module/analytics/migration/remnant-data-migration.js.map +1 -0
  148. package/lib/module/analytics/nitro-transport.js +26 -0
  149. package/lib/module/analytics/nitro-transport.js.map +1 -0
  150. package/lib/module/analytics/plugins/context.js +134 -0
  151. package/lib/module/analytics/plugins/context.js.map +1 -0
  152. package/lib/module/analytics/react-native-client.js +346 -0
  153. package/lib/module/analytics/react-native-client.js.map +1 -0
  154. package/lib/module/analytics/storage/local-storage.js +68 -0
  155. package/lib/module/analytics/storage/local-storage.js.map +1 -0
  156. package/lib/module/analytics/types.js +4 -0
  157. package/lib/module/analytics/types.js.map +1 -0
  158. package/lib/module/analytics/typings/browser-snippet.d.js +4 -0
  159. package/lib/module/analytics/typings/browser-snippet.d.js.map +1 -0
  160. package/lib/module/analytics/typings/ua-parser.d.js +2 -0
  161. package/lib/module/analytics/typings/ua-parser.d.js.map +1 -0
  162. package/lib/module/analytics/utils/platform.js +10 -0
  163. package/lib/module/analytics/utils/platform.js.map +1 -0
  164. package/lib/module/analytics/version.js +4 -0
  165. package/lib/module/analytics/version.js.map +1 -0
  166. package/lib/module/experiment/experimentClient.js +788 -0
  167. package/lib/module/experiment/experimentClient.js.map +1 -0
  168. package/lib/module/experiment/factory.js +73 -0
  169. package/lib/module/experiment/factory.js.map +1 -0
  170. package/lib/module/experiment/gen/version.js +5 -0
  171. package/lib/module/experiment/gen/version.js.map +1 -0
  172. package/lib/module/experiment/index.js +16 -0
  173. package/lib/module/experiment/index.js.map +1 -0
  174. package/lib/module/experiment/integration/NativeExperimentReactNativeClient.js +7 -0
  175. package/lib/module/experiment/integration/NativeExperimentReactNativeClient.js.map +1 -0
  176. package/lib/module/experiment/integration/connector.js +61 -0
  177. package/lib/module/experiment/integration/connector.js.map +1 -0
  178. package/lib/module/experiment/integration/default.js +87 -0
  179. package/lib/module/experiment/integration/default.js.map +1 -0
  180. package/lib/module/experiment/logger/ampLogger.js +76 -0
  181. package/lib/module/experiment/logger/ampLogger.js.map +1 -0
  182. package/lib/module/experiment/logger/consoleLogger.js +55 -0
  183. package/lib/module/experiment/logger/consoleLogger.js.map +1 -0
  184. package/lib/module/experiment/storage/cache.js +187 -0
  185. package/lib/module/experiment/storage/cache.js.map +1 -0
  186. package/lib/module/experiment/storage/local-storage.js +19 -0
  187. package/lib/module/experiment/storage/local-storage.js.map +1 -0
  188. package/lib/module/experiment/stubClient.js +41 -0
  189. package/lib/module/experiment/stubClient.js.map +1 -0
  190. package/lib/module/experiment/transport/http.js +66 -0
  191. package/lib/module/experiment/transport/http.js.map +1 -0
  192. package/lib/module/experiment/types/client.js +4 -0
  193. package/lib/module/experiment/types/client.js.map +1 -0
  194. package/lib/module/experiment/types/config.js +64 -0
  195. package/lib/module/experiment/types/config.js.map +1 -0
  196. package/lib/module/experiment/types/exposure.js +2 -0
  197. package/lib/module/experiment/types/exposure.js.map +1 -0
  198. package/lib/module/experiment/types/logger.js +39 -0
  199. package/lib/module/experiment/types/logger.js.map +1 -0
  200. package/lib/module/experiment/types/source.js +51 -0
  201. package/lib/module/experiment/types/source.js.map +1 -0
  202. package/lib/module/experiment/types/storage.js +2 -0
  203. package/lib/module/experiment/types/storage.js.map +1 -0
  204. package/lib/module/experiment/types/transport.js +2 -0
  205. package/lib/module/experiment/types/transport.js.map +1 -0
  206. package/lib/module/experiment/types/user.js +2 -0
  207. package/lib/module/experiment/types/user.js.map +1 -0
  208. package/lib/module/experiment/types/variant.js +2 -0
  209. package/lib/module/experiment/types/variant.js.map +1 -0
  210. package/lib/module/experiment/util/backoff.js +49 -0
  211. package/lib/module/experiment/util/backoff.js.map +1 -0
  212. package/lib/module/experiment/util/base64.js +16 -0
  213. package/lib/module/experiment/util/base64.js.map +1 -0
  214. package/lib/module/experiment/util/convert.js +71 -0
  215. package/lib/module/experiment/util/convert.js.map +1 -0
  216. package/lib/module/experiment/util/index.js +17 -0
  217. package/lib/module/experiment/util/index.js.map +1 -0
  218. package/lib/module/experiment/util/platform.js +10 -0
  219. package/lib/module/experiment/util/platform.js.map +1 -0
  220. package/lib/module/experiment/util/randomstring.js +11 -0
  221. package/lib/module/experiment/util/randomstring.js.map +1 -0
  222. package/lib/module/experiment/util/userSessionExposureTracker.js +35 -0
  223. package/lib/module/experiment/util/userSessionExposureTracker.js.map +1 -0
  224. package/lib/module/index.js +50 -0
  225. package/lib/module/index.js.map +1 -0
  226. package/lib/module/index.web.js +14 -0
  227. package/lib/module/index.web.js.map +1 -0
  228. package/lib/module/native/context.js +35 -0
  229. package/lib/module/native/context.js.map +1 -0
  230. package/lib/module/native/http.js +57 -0
  231. package/lib/module/native/http.js.map +1 -0
  232. package/lib/module/native/hybrid.js +24 -0
  233. package/lib/module/native/hybrid.js.map +1 -0
  234. package/lib/module/native/storage.js +86 -0
  235. package/lib/module/native/storage.js.map +1 -0
  236. package/lib/typescript/AmplitudeContext.nitro.d.ts +17 -0
  237. package/lib/typescript/AmplitudeContext.nitro.d.ts.map +1 -0
  238. package/lib/typescript/AmplitudeStorage.nitro.d.ts +17 -0
  239. package/lib/typescript/AmplitudeStorage.nitro.d.ts.map +1 -0
  240. package/lib/typescript/AmplitudeWorker.nitro.d.ts +11 -0
  241. package/lib/typescript/AmplitudeWorker.nitro.d.ts.map +1 -0
  242. package/lib/typescript/analytics/campaign/campaign-tracker.d.ts +85 -0
  243. package/lib/typescript/analytics/campaign/campaign-tracker.d.ts.map +1 -0
  244. package/lib/typescript/analytics/campaign/types.d.ts +11 -0
  245. package/lib/typescript/analytics/campaign/types.d.ts.map +1 -0
  246. package/lib/typescript/analytics/config.d.ts +68 -0
  247. package/lib/typescript/analytics/config.d.ts.map +1 -0
  248. package/lib/typescript/analytics/cookie-migration/index.d.ts +6 -0
  249. package/lib/typescript/analytics/cookie-migration/index.d.ts.map +1 -0
  250. package/lib/typescript/analytics/index.d.ts +7 -0
  251. package/lib/typescript/analytics/index.d.ts.map +1 -0
  252. package/lib/typescript/analytics/migration/remnant-data-migration.d.ts +20 -0
  253. package/lib/typescript/analytics/migration/remnant-data-migration.d.ts.map +1 -0
  254. package/lib/typescript/analytics/nitro-transport.d.ts +9 -0
  255. package/lib/typescript/analytics/nitro-transport.d.ts.map +1 -0
  256. package/lib/typescript/analytics/plugins/context.d.ts +14 -0
  257. package/lib/typescript/analytics/plugins/context.d.ts.map +1 -0
  258. package/lib/typescript/analytics/react-native-client.d.ts +55 -0
  259. package/lib/typescript/analytics/react-native-client.d.ts.map +1 -0
  260. package/lib/typescript/analytics/storage/local-storage.d.ts +14 -0
  261. package/lib/typescript/analytics/storage/local-storage.d.ts.map +1 -0
  262. package/lib/typescript/analytics/types.d.ts +2 -0
  263. package/lib/typescript/analytics/types.d.ts.map +1 -0
  264. package/lib/typescript/analytics/utils/platform.d.ts +3 -0
  265. package/lib/typescript/analytics/utils/platform.d.ts.map +1 -0
  266. package/lib/typescript/analytics/version.d.ts +2 -0
  267. package/lib/typescript/analytics/version.d.ts.map +1 -0
  268. package/lib/typescript/experiment/experimentClient.d.ts +234 -0
  269. package/lib/typescript/experiment/experimentClient.d.ts.map +1 -0
  270. package/lib/typescript/experiment/factory.d.ts +11 -0
  271. package/lib/typescript/experiment/factory.d.ts.map +1 -0
  272. package/lib/typescript/experiment/gen/version.d.ts +2 -0
  273. package/lib/typescript/experiment/gen/version.d.ts.map +1 -0
  274. package/lib/typescript/experiment/index.d.ts +15 -0
  275. package/lib/typescript/experiment/index.d.ts.map +1 -0
  276. package/lib/typescript/experiment/integration/NativeExperimentReactNativeClient.d.ts +16 -0
  277. package/lib/typescript/experiment/integration/NativeExperimentReactNativeClient.d.ts.map +1 -0
  278. package/lib/typescript/experiment/integration/connector.d.ts +16 -0
  279. package/lib/typescript/experiment/integration/connector.d.ts.map +1 -0
  280. package/lib/typescript/experiment/integration/default.d.ts +20 -0
  281. package/lib/typescript/experiment/integration/default.d.ts.map +1 -0
  282. package/lib/typescript/experiment/logger/ampLogger.d.ts +47 -0
  283. package/lib/typescript/experiment/logger/ampLogger.d.ts.map +1 -0
  284. package/lib/typescript/experiment/logger/consoleLogger.d.ts +40 -0
  285. package/lib/typescript/experiment/logger/consoleLogger.d.ts.map +1 -0
  286. package/lib/typescript/experiment/storage/cache.d.ts +35 -0
  287. package/lib/typescript/experiment/storage/cache.d.ts.map +1 -0
  288. package/lib/typescript/experiment/storage/local-storage.d.ts +11 -0
  289. package/lib/typescript/experiment/storage/local-storage.d.ts.map +1 -0
  290. package/lib/typescript/experiment/stubClient.d.ts +21 -0
  291. package/lib/typescript/experiment/stubClient.d.ts.map +1 -0
  292. package/lib/typescript/experiment/transport/http.d.ts +17 -0
  293. package/lib/typescript/experiment/transport/http.d.ts.map +1 -0
  294. package/lib/typescript/experiment/types/client.d.ts +36 -0
  295. package/lib/typescript/experiment/types/client.d.ts.map +1 -0
  296. package/lib/typescript/experiment/types/config.d.ts +164 -0
  297. package/lib/typescript/experiment/types/config.d.ts.map +1 -0
  298. package/lib/typescript/experiment/types/exposure.d.ts +107 -0
  299. package/lib/typescript/experiment/types/exposure.d.ts.map +1 -0
  300. package/lib/typescript/experiment/types/logger.d.ts +67 -0
  301. package/lib/typescript/experiment/types/logger.d.ts.map +1 -0
  302. package/lib/typescript/experiment/types/source.d.ts +43 -0
  303. package/lib/typescript/experiment/types/source.d.ts.map +1 -0
  304. package/lib/typescript/experiment/types/storage.d.ts +7 -0
  305. package/lib/typescript/experiment/types/storage.d.ts.map +1 -0
  306. package/lib/typescript/experiment/types/transport.d.ts +8 -0
  307. package/lib/typescript/experiment/types/transport.d.ts.map +1 -0
  308. package/lib/typescript/experiment/types/user.d.ts +106 -0
  309. package/lib/typescript/experiment/types/user.d.ts.map +1 -0
  310. package/lib/typescript/experiment/types/variant.d.ts +33 -0
  311. package/lib/typescript/experiment/types/variant.d.ts.map +1 -0
  312. package/lib/typescript/experiment/util/backoff.d.ts +14 -0
  313. package/lib/typescript/experiment/util/backoff.d.ts.map +1 -0
  314. package/lib/typescript/experiment/util/base64.d.ts +3 -0
  315. package/lib/typescript/experiment/util/base64.d.ts.map +1 -0
  316. package/lib/typescript/experiment/util/convert.d.ts +7 -0
  317. package/lib/typescript/experiment/util/convert.d.ts.map +1 -0
  318. package/lib/typescript/experiment/util/index.d.ts +6 -0
  319. package/lib/typescript/experiment/util/index.d.ts.map +1 -0
  320. package/lib/typescript/experiment/util/platform.d.ts +3 -0
  321. package/lib/typescript/experiment/util/platform.d.ts.map +1 -0
  322. package/lib/typescript/experiment/util/randomstring.d.ts +2 -0
  323. package/lib/typescript/experiment/util/randomstring.d.ts.map +1 -0
  324. package/lib/typescript/experiment/util/userSessionExposureTracker.d.ts +16 -0
  325. package/lib/typescript/experiment/util/userSessionExposureTracker.d.ts.map +1 -0
  326. package/lib/typescript/index.d.ts +31 -0
  327. package/lib/typescript/index.d.ts.map +1 -0
  328. package/lib/typescript/index.web.d.ts +12 -0
  329. package/lib/typescript/index.web.d.ts.map +1 -0
  330. package/lib/typescript/native/context.d.ts +29 -0
  331. package/lib/typescript/native/context.d.ts.map +1 -0
  332. package/lib/typescript/native/http.d.ts +6 -0
  333. package/lib/typescript/native/http.d.ts.map +1 -0
  334. package/lib/typescript/native/hybrid.d.ts +8 -0
  335. package/lib/typescript/native/hybrid.d.ts.map +1 -0
  336. package/lib/typescript/native/storage.d.ts +29 -0
  337. package/lib/typescript/native/storage.d.ts.map +1 -0
  338. package/nitro.json +33 -0
  339. package/nitrogen/generated/.gitattributes +1 -0
  340. package/nitrogen/generated/android/NitroAmplitude+autolinking.cmake +83 -0
  341. package/nitrogen/generated/android/NitroAmplitude+autolinking.gradle +27 -0
  342. package/nitrogen/generated/android/NitroAmplitudeOnLoad.cpp +69 -0
  343. package/nitrogen/generated/android/NitroAmplitudeOnLoad.hpp +34 -0
  344. package/nitrogen/generated/android/kotlin/com/margelo/nitro/com/nitroamplitude/NitroAmplitudeOnLoad.kt +35 -0
  345. package/nitrogen/generated/ios/NitroAmplitude+autolinking.rb +62 -0
  346. package/nitrogen/generated/ios/NitroAmplitude-Swift-Cxx-Bridge.cpp +17 -0
  347. package/nitrogen/generated/ios/NitroAmplitude-Swift-Cxx-Bridge.hpp +27 -0
  348. package/nitrogen/generated/ios/NitroAmplitude-Swift-Cxx-Umbrella.hpp +38 -0
  349. package/nitrogen/generated/ios/NitroAmplitudeAutolinking.mm +55 -0
  350. package/nitrogen/generated/ios/NitroAmplitudeAutolinking.swift +16 -0
  351. package/nitrogen/generated/shared/c++/HybridAmplitudeContextSpec.cpp +25 -0
  352. package/nitrogen/generated/shared/c++/HybridAmplitudeContextSpec.hpp +67 -0
  353. package/nitrogen/generated/shared/c++/HybridAmplitudeStorageSpec.cpp +30 -0
  354. package/nitrogen/generated/shared/c++/HybridAmplitudeStorageSpec.hpp +73 -0
  355. package/nitrogen/generated/shared/c++/HybridAmplitudeWorkerSpec.cpp +24 -0
  356. package/nitrogen/generated/shared/c++/HybridAmplitudeWorkerSpec.hpp +66 -0
  357. package/package.json +130 -0
  358. package/react-native-nitro-amplitude.podspec +36 -0
  359. package/src/AmplitudeContext.nitro.ts +21 -0
  360. package/src/AmplitudeStorage.nitro.ts +17 -0
  361. package/src/AmplitudeWorker.nitro.ts +25 -0
  362. package/src/analytics/campaign/campaign-tracker.ts +162 -0
  363. package/src/analytics/campaign/types.ts +18 -0
  364. package/src/analytics/config.ts +373 -0
  365. package/src/analytics/cookie-migration/index.ts +69 -0
  366. package/src/analytics/index.ts +36 -0
  367. package/src/analytics/migration/remnant-data-migration.ts +206 -0
  368. package/src/analytics/nitro-transport.ts +35 -0
  369. package/src/analytics/plugins/context.ts +166 -0
  370. package/src/analytics/react-native-client.ts +573 -0
  371. package/src/analytics/storage/local-storage.ts +76 -0
  372. package/src/analytics/types.ts +30 -0
  373. package/src/analytics/typings/browser-snippet.d.ts +7 -0
  374. package/src/analytics/typings/ua-parser.d.ts +4 -0
  375. package/src/analytics/utils/platform.ts +9 -0
  376. package/src/analytics/version.ts +1 -0
  377. package/src/experiment/experimentClient.ts +987 -0
  378. package/src/experiment/factory.ts +86 -0
  379. package/src/experiment/gen/version.ts +2 -0
  380. package/src/experiment/index.ts +14 -0
  381. package/src/experiment/integration/NativeExperimentReactNativeClient.ts +25 -0
  382. package/src/experiment/integration/connector.ts +82 -0
  383. package/src/experiment/integration/default.ts +107 -0
  384. package/src/experiment/logger/ampLogger.ts +76 -0
  385. package/src/experiment/logger/consoleLogger.ts +54 -0
  386. package/src/experiment/storage/cache.ts +271 -0
  387. package/src/experiment/storage/local-storage.ts +23 -0
  388. package/src/experiment/stubClient.ts +61 -0
  389. package/src/experiment/transport/http.ts +105 -0
  390. package/src/experiment/types/client.ts +38 -0
  391. package/src/experiment/types/config.ts +210 -0
  392. package/src/experiment/types/exposure.ts +107 -0
  393. package/src/experiment/types/logger.ts +71 -0
  394. package/src/experiment/types/source.ts +52 -0
  395. package/src/experiment/types/storage.ts +6 -0
  396. package/src/experiment/types/transport.ts +14 -0
  397. package/src/experiment/types/user.ts +132 -0
  398. package/src/experiment/types/variant.ts +36 -0
  399. package/src/experiment/util/backoff.ts +67 -0
  400. package/src/experiment/util/base64.ts +20 -0
  401. package/src/experiment/util/convert.ts +78 -0
  402. package/src/experiment/util/index.ts +23 -0
  403. package/src/experiment/util/platform.ts +9 -0
  404. package/src/experiment/util/randomstring.ts +12 -0
  405. package/src/experiment/util/userSessionExposureTracker.ts +47 -0
  406. package/src/index.ts +66 -0
  407. package/src/index.web.ts +19 -0
  408. package/src/native/context.ts +73 -0
  409. package/src/native/http.ts +77 -0
  410. package/src/native/hybrid.ts +32 -0
  411. package/src/native/storage.ts +107 -0
@@ -0,0 +1,155 @@
1
+ #import "IOSAmplitudeAdapterCpp.hpp"
2
+ #import <Foundation/Foundation.h>
3
+ #import <UIKit/UIKit.h>
4
+
5
+ namespace NitroAmplitude {
6
+
7
+ static NSString* const kDiskSuiteName = @"com.nitroamplitude.disk";
8
+
9
+ static NSUserDefaults* NitroDiskDefaults() {
10
+ static NSUserDefaults* defaults = [[NSUserDefaults alloc] initWithSuiteName:kDiskSuiteName];
11
+ return defaults ?: [NSUserDefaults standardUserDefaults];
12
+ }
13
+
14
+ IOSAmplitudeAdapterCpp::IOSAmplitudeAdapterCpp() {}
15
+
16
+ void IOSAmplitudeAdapterCpp::prefetchContext() {
17
+ getApplicationContextJson("{}");
18
+ }
19
+
20
+ std::string IOSAmplitudeAdapterCpp::getApplicationContextJson(const std::string& optionsJson) {
21
+ NSData* data = [NSData dataWithBytes:optionsJson.data() length:optionsJson.size()];
22
+ NSDictionary* options = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
23
+ if (![options isKindOfClass:[NSDictionary class]]) {
24
+ options = @{};
25
+ }
26
+
27
+ UIDevice* device = [UIDevice currentDevice];
28
+ NSLocale* locale = [NSLocale currentLocale];
29
+ NSString* version = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"];
30
+ NSMutableDictionary* json = [@{
31
+ @"version": version ?: @"",
32
+ @"platform": @"iOS",
33
+ @"language": locale.languageCode ?: @"",
34
+ @"country": locale.countryCode ?: @"",
35
+ @"osName": device.systemName ?: @"iOS",
36
+ @"osVersion": device.systemVersion ?: @"",
37
+ @"deviceManufacturer": @"Apple",
38
+ @"deviceModel": device.model ?: @"",
39
+ @"deviceBrand": @"Apple",
40
+ } mutableCopy];
41
+
42
+ if ([options[@"carrier"] boolValue]) {
43
+ json[@"carrier"] = @"";
44
+ }
45
+ if ([options[@"idfv"] boolValue]) {
46
+ json[@"idfv"] = [[[UIDevice currentDevice] identifierForVendor] UUIDString] ?: @"";
47
+ }
48
+
49
+ NSData* encoded = [NSJSONSerialization dataWithJSONObject:json options:0 error:nil];
50
+ if (!encoded) {
51
+ return "{}";
52
+ }
53
+ return std::string(static_cast<const char*>(encoded.bytes), encoded.length);
54
+ }
55
+
56
+ std::string IOSAmplitudeAdapterCpp::getLegacySessionDataJson(const std::string& /*instanceName*/) {
57
+ return "{}";
58
+ }
59
+
60
+ std::vector<std::string> IOSAmplitudeAdapterCpp::getLegacyEventsJson(
61
+ const std::string& /*instanceName*/,
62
+ const std::string& /*eventKind*/) {
63
+ return {};
64
+ }
65
+
66
+ void IOSAmplitudeAdapterCpp::removeLegacyEvent(
67
+ const std::string& /*instanceName*/,
68
+ const std::string& /*eventKind*/,
69
+ int64_t /*eventId*/) {}
70
+
71
+ void IOSAmplitudeAdapterCpp::setDisk(const std::string& key, const std::string& value) {
72
+ NSString* nsKey = [NSString stringWithUTF8String:key.c_str()];
73
+ NSString* nsValue = [NSString stringWithUTF8String:value.c_str()];
74
+ [NitroDiskDefaults() setObject:nsValue forKey:nsKey];
75
+ }
76
+
77
+ std::optional<std::string> IOSAmplitudeAdapterCpp::getDisk(const std::string& key) {
78
+ NSString* nsKey = [NSString stringWithUTF8String:key.c_str()];
79
+ NSString* result = [NitroDiskDefaults() stringForKey:nsKey];
80
+ if (!result) {
81
+ return std::nullopt;
82
+ }
83
+ return std::string([result UTF8String]);
84
+ }
85
+
86
+ void IOSAmplitudeAdapterCpp::deleteDisk(const std::string& key) {
87
+ NSString* nsKey = [NSString stringWithUTF8String:key.c_str()];
88
+ [NitroDiskDefaults() removeObjectForKey:nsKey];
89
+ }
90
+
91
+ bool IOSAmplitudeAdapterCpp::hasDisk(const std::string& key) {
92
+ NSString* nsKey = [NSString stringWithUTF8String:key.c_str()];
93
+ return [NitroDiskDefaults() objectForKey:nsKey] != nil;
94
+ }
95
+
96
+ std::vector<std::string> IOSAmplitudeAdapterCpp::getAllDiskKeys() {
97
+ NSDictionary<NSString*, id>* entries = [NitroDiskDefaults() persistentDomainForName:kDiskSuiteName] ?: @{};
98
+ std::vector<std::string> keys;
99
+ keys.reserve(entries.count);
100
+ for (NSString* key in entries) {
101
+ keys.push_back(std::string([key UTF8String]));
102
+ }
103
+ return keys;
104
+ }
105
+
106
+ HttpResult IOSAmplitudeAdapterCpp::performHttpRequest(
107
+ const std::string& url,
108
+ const std::string& method,
109
+ const std::string& headersJson,
110
+ const std::string& body,
111
+ int timeoutMillis) {
112
+ NSURL* nsUrl = [NSURL URLWithString:[NSString stringWithUTF8String:url.c_str()]];
113
+ if (!nsUrl) {
114
+ return HttpResult{.error = "Invalid URL"};
115
+ }
116
+
117
+ NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:nsUrl];
118
+ request.HTTPMethod = [NSString stringWithUTF8String:method.c_str()];
119
+ request.timeoutInterval = timeoutMillis / 1000.0;
120
+ request.HTTPBody = body.empty() ? nil : [NSData dataWithBytes:body.data() length:body.size()];
121
+
122
+ NSData* headerData = [NSData dataWithBytes:headersJson.data() length:headersJson.size()];
123
+ NSDictionary* headers = [NSJSONSerialization JSONObjectWithData:headerData options:0 error:nil];
124
+ if ([headers isKindOfClass:[NSDictionary class]]) {
125
+ for (NSString* key in headers) {
126
+ id value = headers[key];
127
+ if ([value isKindOfClass:[NSString class]]) {
128
+ [request setValue:(NSString*)value forHTTPHeaderField:key];
129
+ }
130
+ }
131
+ }
132
+
133
+ dispatch_semaphore_t semaphore = dispatch_semaphore_create(0);
134
+ __block HttpResult completedResult;
135
+ NSURLSessionDataTask* task = [[NSURLSession sharedSession]
136
+ dataTaskWithRequest:request
137
+ completionHandler:^(NSData* data, NSURLResponse* response, NSError* error) {
138
+ if (error) {
139
+ completedResult.error = std::string([[error localizedDescription] UTF8String]);
140
+ } else if ([response isKindOfClass:[NSHTTPURLResponse class]]) {
141
+ completedResult.statusCode = static_cast<int>(((NSHTTPURLResponse*)response).statusCode);
142
+ if (data) {
143
+ completedResult.body = std::string(static_cast<const char*>(data.bytes), data.length);
144
+ }
145
+ } else {
146
+ completedResult.error = "Invalid HTTP response";
147
+ }
148
+ dispatch_semaphore_signal(semaphore);
149
+ }];
150
+ [task resume];
151
+ dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);
152
+ return completedResult;
153
+ }
154
+
155
+ } // namespace NitroAmplitude
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ //# sourceMappingURL=AmplitudeContext.nitro.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../src","sources":["AmplitudeContext.nitro.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ //# sourceMappingURL=AmplitudeStorage.nitro.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../src","sources":["AmplitudeStorage.nitro.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ //# sourceMappingURL=AmplitudeWorker.nitro.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../src","sources":["AmplitudeWorker.nitro.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.CampaignTracker = void 0;
7
+ var _analyticsCore = require("@amplitude/analytics-core");
8
+ /**
9
+ * @deprecated
10
+ * Campaign tracker has mixed logic from built-in and plugin web attribution
11
+ * features. Do not add more features here. The plan moving foward is to consolidate logic
12
+ * in @amplitude/plugin-web-attribution-browser with backward compatibility.
13
+ */
14
+ class CampaignTracker {
15
+ constructor(apiKey, options) {
16
+ this.storage = options.storage;
17
+ this.storageKey = (0, _analyticsCore.getCookieName)(apiKey, _analyticsCore.MKTG);
18
+ this.parser = new _analyticsCore.CampaignParser();
19
+ this.track = options.track;
20
+ this.onNewCampaign = options.onNewCampaign;
21
+ this.disabled = Boolean(options.disabled);
22
+ this.trackNewCampaigns = Boolean(options.trackNewCampaigns);
23
+ this.trackPageViews = Boolean(options.trackPageViews);
24
+ this.excludeReferrers = options.excludeReferrers ?? [];
25
+ if (typeof location !== "undefined") {
26
+ this.excludeReferrers.unshift(location.hostname);
27
+ }
28
+ this.initialEmptyValue = options.initialEmptyValue ?? _analyticsCore.EMPTY_VALUE;
29
+ }
30
+ isNewCampaign(current, previous, ignoreSubdomainInReferrer = false) {
31
+ const {
32
+ referrer,
33
+ referring_domain,
34
+ ...currentCampaign
35
+ } = current;
36
+ const {
37
+ referrer: _previous_referrer,
38
+ referring_domain: prevReferringDomain,
39
+ ...previousCampaign
40
+ } = previous || {};
41
+ if (current.referring_domain && this.excludeReferrers.includes(current.referring_domain)) {
42
+ return false;
43
+ }
44
+ const hasNewCampaign = JSON.stringify(currentCampaign) !== JSON.stringify(previousCampaign);
45
+ const hasNewDomain = ignoreSubdomainInReferrer ? domainWithoutSubdomain(referring_domain || "") !== domainWithoutSubdomain(prevReferringDomain || "") : referring_domain !== prevReferringDomain;
46
+ return !previous || hasNewCampaign || hasNewDomain;
47
+ }
48
+ async saveCampaignToStorage(campaign) {
49
+ await this.storage.set(this.storageKey, campaign);
50
+ }
51
+ async getCampaignFromStorage() {
52
+ return await this.storage.get(this.storageKey);
53
+ }
54
+ createCampaignEvent(campaign) {
55
+ const campaignParameters = {
56
+ // This object definition allows undefined keys to be iterated on
57
+ // in .reduce() to build indentify object
58
+ ..._analyticsCore.BASE_CAMPAIGN,
59
+ ...campaign
60
+ };
61
+ const identifyEvent = Object.entries(campaignParameters).reduce((identify, [key, value]) => {
62
+ identify.setOnce(`initial_${key}`, value || this.initialEmptyValue);
63
+ if (value) {
64
+ return identify.set(key, value);
65
+ }
66
+ return identify.unset(key);
67
+ }, new _analyticsCore.Identify());
68
+ const pageViewEvent = {
69
+ event_type: "Page View",
70
+ event_properties: {
71
+ page_title: /* istanbul ignore next */typeof document !== "undefined" && document.title || "",
72
+ page_location: /* istanbul ignore next */typeof location !== "undefined" && location.href || "",
73
+ page_path: /* istanbul ignore next */typeof location !== "undefined" && location.pathname || ""
74
+ }
75
+ };
76
+ return {
77
+ ...(0, _analyticsCore.createIdentifyEvent)(identifyEvent),
78
+ ...(this.trackPageViews && pageViewEvent)
79
+ };
80
+ }
81
+ async send(isNewSession) {
82
+ if (this.disabled) {
83
+ return;
84
+ }
85
+ const currentCampaign = await this.parser.parse();
86
+ const previousCampaign = await this.getCampaignFromStorage();
87
+ if (!isNewSession) {
88
+ if (!this.trackNewCampaigns || !this.isNewCampaign(currentCampaign, previousCampaign)) {
89
+ return;
90
+ }
91
+ this.onNewCampaign(currentCampaign);
92
+ }
93
+ await this.track(this.createCampaignEvent(currentCampaign));
94
+ await this.saveCampaignToStorage(currentCampaign);
95
+ }
96
+ }
97
+ exports.CampaignTracker = CampaignTracker;
98
+ const domainWithoutSubdomain = domain => {
99
+ const parts = domain.split(".");
100
+ if (parts.length <= 2) {
101
+ return domain;
102
+ }
103
+ return parts.slice(parts.length - 2, parts.length).join(".");
104
+ };
105
+ //# sourceMappingURL=campaign-tracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_analyticsCore","require","CampaignTracker","constructor","apiKey","options","storage","storageKey","getStorageKey","MKTG","parser","CampaignParser","track","onNewCampaign","disabled","Boolean","trackNewCampaigns","trackPageViews","excludeReferrers","location","unshift","hostname","initialEmptyValue","EMPTY_VALUE","isNewCampaign","current","previous","ignoreSubdomainInReferrer","referrer","referring_domain","currentCampaign","_previous_referrer","prevReferringDomain","previousCampaign","includes","hasNewCampaign","JSON","stringify","hasNewDomain","domainWithoutSubdomain","saveCampaignToStorage","campaign","set","getCampaignFromStorage","get","createCampaignEvent","campaignParameters","BASE_CAMPAIGN","identifyEvent","Object","entries","reduce","identify","key","value","setOnce","unset","Identify","pageViewEvent","event_type","event_properties","page_title","document","title","page_location","href","page_path","pathname","createIdentifyEvent","send","isNewSession","parse","exports","domain","parts","split","length","slice","join"],"sourceRoot":"../../../../src","sources":["analytics/campaign/campaign-tracker.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../../src","sources":["analytics/campaign/types.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,283 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useReactNativeConfig = exports.getTopLevelDomain = exports.getDefaultConfig = exports.createEventsStorage = exports.createCookieStorage = exports.ReactNativeConfig = void 0;
7
+ var _analyticsCore = require("@amplitude/analytics-core");
8
+ var _localStorage = require("./storage/local-storage");
9
+ var _remnantDataMigration = _interopRequireDefault(require("./migration/remnant-data-migration"));
10
+ var _storage = require("../native/storage");
11
+ var _nitroTransport = require("./nitro-transport");
12
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
+ const getDefaultConfig = () => {
14
+ const cookieStorage = new _analyticsCore.MemoryStorage();
15
+ const trackingOptions = {
16
+ adid: true,
17
+ carrier: true,
18
+ deviceManufacturer: true,
19
+ deviceModel: true,
20
+ ipAddress: true,
21
+ language: true,
22
+ osName: true,
23
+ osVersion: true,
24
+ platform: true,
25
+ appSetId: true,
26
+ idfv: true,
27
+ country: false // NOTE: tracking country information would disable server-side IP address lookup to fill other information like region, city, dma, etc.
28
+ };
29
+ return {
30
+ cookieExpiration: 365,
31
+ cookieSameSite: "Lax",
32
+ cookieSecure: false,
33
+ cookieStorage,
34
+ cookieUpgrade: true,
35
+ disableCookies: true,
36
+ domain: "",
37
+ sessionTimeout: 5 * 60 * 1000,
38
+ storageProvider: new _storage.NitroAnalyticsStorage("analytics-events"),
39
+ trackingSessionEvents: false,
40
+ trackingOptions,
41
+ transportProvider: _nitroTransport.nitroTransport
42
+ };
43
+ };
44
+ exports.getDefaultConfig = getDefaultConfig;
45
+ class ReactNativeConfig extends _analyticsCore.Config {
46
+ // NOTE: These protected properties cache user session values in the configured session storage
47
+
48
+ _optOut = false;
49
+ constructor(apiKey, options) {
50
+ const defaultConfig = getDefaultConfig();
51
+ super({
52
+ flushIntervalMillis: 1000,
53
+ flushMaxRetries: 5,
54
+ flushQueueSize: 30,
55
+ transportProvider: defaultConfig.transportProvider,
56
+ ...options,
57
+ apiKey
58
+ });
59
+
60
+ // NOTE: Define `cookieStorage` first to persist user session
61
+ // user session properties expect `cookieStorage` to be defined
62
+ this.cookieStorage = options?.cookieStorage ?? defaultConfig.cookieStorage;
63
+ this.deviceId = options?.deviceId;
64
+ this.lastEventTime = options?.lastEventTime;
65
+ this.optOut = Boolean(options?.optOut);
66
+ this.sessionId = options?.sessionId;
67
+ this.userId = options?.userId;
68
+ this.appVersion = options?.appVersion;
69
+ this.cookieExpiration = options?.cookieExpiration ?? defaultConfig.cookieExpiration;
70
+ this.cookieSameSite = options?.cookieSameSite ?? defaultConfig.cookieSameSite;
71
+ this.cookieSecure = options?.cookieSecure ?? defaultConfig.cookieSecure;
72
+ this.cookieUpgrade = options?.cookieUpgrade ?? defaultConfig.cookieUpgrade;
73
+ this.disableCookies = options?.disableCookies ?? defaultConfig.disableCookies;
74
+ this.domain = options?.domain ?? defaultConfig.domain;
75
+ this.partnerId = options?.partnerId;
76
+ this.sessionTimeout = options?.sessionTimeout ?? defaultConfig.sessionTimeout;
77
+ this.trackingOptions = options?.trackingOptions ?? defaultConfig.trackingOptions;
78
+ this.trackingSessionEvents = options?.trackingSessionEvents ?? defaultConfig.trackingSessionEvents;
79
+ }
80
+ get deviceId() {
81
+ return this._deviceId;
82
+ }
83
+ set deviceId(deviceId) {
84
+ if (this._deviceId !== deviceId) {
85
+ this._deviceId = deviceId;
86
+ this.updateStorage();
87
+ }
88
+ }
89
+ get userId() {
90
+ return this._userId;
91
+ }
92
+ set userId(userId) {
93
+ if (this._userId !== userId) {
94
+ this._userId = userId;
95
+ this.updateStorage();
96
+ }
97
+ }
98
+ get sessionId() {
99
+ return this._sessionId;
100
+ }
101
+ set sessionId(sessionId) {
102
+ if (this._sessionId !== sessionId) {
103
+ this._sessionId = sessionId;
104
+ this.updateStorage();
105
+ }
106
+ }
107
+ get optOut() {
108
+ return this._optOut;
109
+ }
110
+ set optOut(optOut) {
111
+ if (this._optOut !== optOut) {
112
+ this._optOut = optOut;
113
+ this.updateStorage();
114
+ }
115
+ }
116
+ get lastEventTime() {
117
+ return this._lastEventTime;
118
+ }
119
+ set lastEventTime(lastEventTime) {
120
+ if (this._lastEventTime !== lastEventTime) {
121
+ this._lastEventTime = lastEventTime;
122
+ this.updateStorage();
123
+ }
124
+ }
125
+ get lastEventId() {
126
+ return this._lastEventId;
127
+ }
128
+ set lastEventId(lastEventId) {
129
+ if (this._lastEventId !== lastEventId) {
130
+ this._lastEventId = lastEventId;
131
+ this.updateStorage();
132
+ }
133
+ }
134
+ updateStorage() {
135
+ const cache = {
136
+ deviceId: this._deviceId,
137
+ userId: this._userId,
138
+ sessionId: this._sessionId,
139
+ optOut: this._optOut,
140
+ lastEventTime: this._lastEventTime,
141
+ lastEventId: this._lastEventId
142
+ };
143
+ try {
144
+ void this.cookieStorage?.set((0, _analyticsCore.getCookieName)(this.apiKey), cache).catch(error => {
145
+ this.loggerProvider?.error(`Failed to persist user session: ${String(error)}`);
146
+ });
147
+ } catch (error) {
148
+ this.loggerProvider?.error(`Failed to persist user session: ${String(error)}`);
149
+ }
150
+ }
151
+ }
152
+ exports.ReactNativeConfig = ReactNativeConfig;
153
+ const useReactNativeConfig = async (apiKey, options) => {
154
+ const defaultConfig = getDefaultConfig();
155
+
156
+ // create cookie storage
157
+ const disableCookies = options?.disableCookies ?? defaultConfig.disableCookies;
158
+ const domain = disableCookies ? "" : options?.domain ?? (await getTopLevelDomain());
159
+ const cookieStorage = await createCookieStorage({
160
+ ...options,
161
+ disableCookies,
162
+ domain
163
+ });
164
+ const previousCookies = await cookieStorage.get((0, _analyticsCore.getCookieName)(apiKey));
165
+ const queryParams = (0, _analyticsCore.getQueryParams)();
166
+
167
+ // reconcile user session
168
+ let deviceId = options?.deviceId ?? queryParams.deviceId ?? previousCookies?.deviceId;
169
+ let lastEventTime = options?.lastEventTime ?? previousCookies?.lastEventTime;
170
+ const optOut = options?.optOut ?? Boolean(previousCookies?.optOut);
171
+ let sessionId = options?.sessionId ?? previousCookies?.sessionId;
172
+ let userId = options?.userId ?? previousCookies?.userId;
173
+ let lastEventId = previousCookies?.lastEventId;
174
+ const storageProvider = options?.storageProvider ?? (await createEventsStorage(options));
175
+ if (options?.migrateLegacyData !== false) {
176
+ const legacySessionData = await new _remnantDataMigration.default(apiKey, options?.instanceName, storageProvider, previousCookies?.lastEventTime === undefined, options?.loggerProvider).execute();
177
+ deviceId = deviceId ?? legacySessionData.deviceId;
178
+ userId = userId ?? legacySessionData.userId;
179
+ sessionId = sessionId ?? legacySessionData.sessionId;
180
+ lastEventTime = lastEventTime ?? legacySessionData.lastEventTime;
181
+ lastEventId = lastEventId ?? legacySessionData.lastEventId;
182
+ }
183
+ const config = new ReactNativeConfig(apiKey, {
184
+ ...options,
185
+ cookieStorage,
186
+ deviceId: deviceId ?? (0, _analyticsCore.UUID)(),
187
+ domain,
188
+ lastEventTime,
189
+ optOut,
190
+ sessionId,
191
+ storageProvider,
192
+ trackingOptions: {
193
+ ...defaultConfig.trackingOptions,
194
+ ...options?.trackingOptions
195
+ },
196
+ transportProvider: options?.transportProvider ?? new _analyticsCore.FetchTransport(),
197
+ userId
198
+ });
199
+ config.lastEventId = lastEventId;
200
+ config.loggerProvider?.log(`Init: storage=${cookieStorage.constructor.name} restoredSessionId = ${previousCookies?.sessionId ?? "undefined"}, optionsSessionId = ${options?.sessionId ?? "undefined"}`);
201
+ return config;
202
+ };
203
+ exports.useReactNativeConfig = useReactNativeConfig;
204
+ const createCookieStorage = async (overrides, baseConfig = getDefaultConfig()) => {
205
+ const options = {
206
+ ...baseConfig,
207
+ ...overrides
208
+ };
209
+ const cookieStorage = overrides?.cookieStorage;
210
+ if (!cookieStorage || !(await cookieStorage.isEnabled())) {
211
+ return createFlexibleStorage(options);
212
+ }
213
+ return cookieStorage;
214
+ };
215
+ exports.createCookieStorage = createCookieStorage;
216
+ const createFlexibleStorage = async options => {
217
+ let storage;
218
+ if (options.disableCookies) {
219
+ storage = new _localStorage.LocalStorage();
220
+ if (!(await storage.isEnabled())) {
221
+ storage = new _analyticsCore.MemoryStorage();
222
+ }
223
+ return storage;
224
+ }
225
+ storage = new _analyticsCore.CookieStorage({
226
+ domain: options.domain,
227
+ expirationDays: options.cookieExpiration,
228
+ sameSite: options.cookieSameSite,
229
+ secure: options.cookieSecure
230
+ });
231
+ if (!(await storage.isEnabled())) {
232
+ storage = new _localStorage.LocalStorage();
233
+ if (!(await storage.isEnabled())) {
234
+ storage = new _analyticsCore.MemoryStorage();
235
+ }
236
+ }
237
+ return storage;
238
+ };
239
+ const createEventsStorage = async overrides => {
240
+ const hasStorageProviderProperty = overrides && Object.prototype.hasOwnProperty.call(overrides, "storageProvider");
241
+ // If storageProperty is explicitly undefined like `{ storageProperty: undefined }`
242
+ // then storageProvider is undefined
243
+ // If storageProvider is implicitly undefined like `{ }`
244
+ // then storageProvider uses the built-in memory storage
245
+ // Otherwise storageProvider is overriden
246
+ if (!hasStorageProviderProperty || overrides.storageProvider) {
247
+ for (const storage of [overrides?.storageProvider, new _localStorage.LocalStorage()]) {
248
+ if (storage && (await storage.isEnabled())) {
249
+ return storage;
250
+ }
251
+ }
252
+ }
253
+ return undefined;
254
+ };
255
+ exports.createEventsStorage = createEventsStorage;
256
+ const getTopLevelDomain = async url => {
257
+ if (!(await new _analyticsCore.CookieStorage().isEnabled()) || !url && (typeof location === "undefined" || !location.hostname)) {
258
+ return "";
259
+ }
260
+ const host = url ?? location.hostname;
261
+ const parts = host.split(".");
262
+ const levels = [];
263
+ const storageKey = "AMP_TLDTEST";
264
+ for (let i = parts.length - 2; i >= 0; --i) {
265
+ levels.push(parts.slice(i).join("."));
266
+ }
267
+ for (let i = 0; i < levels.length; i++) {
268
+ const domain = levels[i];
269
+ const options = {
270
+ domain: "." + domain
271
+ };
272
+ const storage = new _analyticsCore.CookieStorage(options);
273
+ await storage.set(storageKey, 1);
274
+ const value = await storage.get(storageKey);
275
+ if (value) {
276
+ await storage.remove(storageKey);
277
+ return "." + domain;
278
+ }
279
+ }
280
+ return "";
281
+ };
282
+ exports.getTopLevelDomain = getTopLevelDomain;
283
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_analyticsCore","require","_localStorage","_remnantDataMigration","_interopRequireDefault","_storage","_nitroTransport","e","__esModule","default","getDefaultConfig","cookieStorage","MemoryStorage","trackingOptions","adid","carrier","deviceManufacturer","deviceModel","ipAddress","language","osName","osVersion","platform","appSetId","idfv","country","cookieExpiration","cookieSameSite","cookieSecure","cookieUpgrade","disableCookies","domain","sessionTimeout","storageProvider","NitroAnalyticsStorage","trackingSessionEvents","transportProvider","nitroTransport","exports","ReactNativeConfig","Config","_optOut","constructor","apiKey","options","defaultConfig","flushIntervalMillis","flushMaxRetries","flushQueueSize","deviceId","lastEventTime","optOut","Boolean","sessionId","userId","appVersion","partnerId","_deviceId","updateStorage","_userId","_sessionId","_lastEventTime","lastEventId","_lastEventId","cache","set","getCookieName","catch","error","loggerProvider","String","useReactNativeConfig","getTopLevelDomain","createCookieStorage","previousCookies","get","queryParams","getQueryParams","createEventsStorage","migrateLegacyData","legacySessionData","RemnantDataMigration","instanceName","undefined","execute","config","UUID","FetchTransport","log","name","overrides","baseConfig","isEnabled","createFlexibleStorage","storage","LocalStorage","CookieStorage","expirationDays","sameSite","secure","hasStorageProviderProperty","Object","prototype","hasOwnProperty","call","url","location","hostname","host","parts","split","levels","storageKey","i","length","push","slice","join","value","remove"],"sourceRoot":"../../../src","sources":["analytics/config.ts"],"mappings":"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","ignoreList":[]}