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,62 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.nitroHttpClient = exports.NitroHttpClient = void 0;
7
+ var _hybrid = require("./hybrid");
8
+ const pendingRequests = new Map();
9
+ let listenerInstalled = false;
10
+ function ensureListener() {
11
+ if (listenerInstalled) {
12
+ return;
13
+ }
14
+ listenerInstalled = true;
15
+ (0, _hybrid.getAmplitudeWorker)().addOnComplete((requestId, statusCode, body, error) => {
16
+ const pending = pendingRequests.get(requestId);
17
+ if (!pending) {
18
+ return;
19
+ }
20
+ pendingRequests.delete(requestId);
21
+ clearTimeout(pending.timeoutId);
22
+ if (error) {
23
+ pending.reject(new Error(error));
24
+ return;
25
+ }
26
+ pending.resolve({
27
+ status: statusCode,
28
+ body
29
+ });
30
+ });
31
+ }
32
+ function createRequestId() {
33
+ return `req_${Date.now()}_${Math.random().toString(36).slice(2, 10)}`;
34
+ }
35
+ class NitroHttpClient {
36
+ async request(requestUrl, method, headers, data, timeoutMillis = 10000) {
37
+ ensureListener();
38
+ const requestId = createRequestId();
39
+ return new Promise((resolve, reject) => {
40
+ const timeoutId = setTimeout(() => {
41
+ pendingRequests.delete(requestId);
42
+ (0, _hybrid.getAmplitudeWorker)().cancel(requestId);
43
+ reject(new Error(`Request timed out after ${timeoutMillis}ms`));
44
+ }, timeoutMillis + 250);
45
+ pendingRequests.set(requestId, {
46
+ resolve,
47
+ reject,
48
+ timeoutId
49
+ });
50
+ try {
51
+ (0, _hybrid.getAmplitudeWorker)().enqueue(requestId, requestUrl, method, JSON.stringify(headers), data ?? "", timeoutMillis);
52
+ } catch (error) {
53
+ pendingRequests.delete(requestId);
54
+ clearTimeout(timeoutId);
55
+ reject(error instanceof Error ? error : new Error(String(error)));
56
+ }
57
+ });
58
+ }
59
+ }
60
+ exports.NitroHttpClient = NitroHttpClient;
61
+ const nitroHttpClient = exports.nitroHttpClient = new NitroHttpClient();
62
+ //# sourceMappingURL=http.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_hybrid","require","pendingRequests","Map","listenerInstalled","ensureListener","getAmplitudeWorker","addOnComplete","requestId","statusCode","body","error","pending","get","delete","clearTimeout","timeoutId","reject","Error","resolve","status","createRequestId","Date","now","Math","random","toString","slice","NitroHttpClient","request","requestUrl","method","headers","data","timeoutMillis","Promise","setTimeout","cancel","set","enqueue","JSON","stringify","String","exports","nitroHttpClient"],"sourceRoot":"../../../src","sources":["native/http.ts"],"mappings":";;;;;;AACA,IAAAA,OAAA,GAAAC,OAAA;AAQA,MAAMC,eAAe,GAAG,IAAIC,GAAG,CAAyB,CAAC;AACzD,IAAIC,iBAAiB,GAAG,KAAK;AAE7B,SAASC,cAAcA,CAAA,EAAS;EAC9B,IAAID,iBAAiB,EAAE;IACrB;EACF;EACAA,iBAAiB,GAAG,IAAI;EACxB,IAAAE,0BAAkB,EAAC,CAAC,CAACC,aAAa,CAAC,CAACC,SAAS,EAAEC,UAAU,EAAEC,IAAI,EAAEC,KAAK,KAAK;IACzE,MAAMC,OAAO,GAAGV,eAAe,CAACW,GAAG,CAACL,SAAS,CAAC;IAC9C,IAAI,CAACI,OAAO,EAAE;MACZ;IACF;IACAV,eAAe,CAACY,MAAM,CAACN,SAAS,CAAC;IACjCO,YAAY,CAACH,OAAO,CAACI,SAAS,CAAC;IAC/B,IAAIL,KAAK,EAAE;MACTC,OAAO,CAACK,MAAM,CAAC,IAAIC,KAAK,CAACP,KAAK,CAAC,CAAC;MAChC;IACF;IACAC,OAAO,CAACO,OAAO,CAAC;MACdC,MAAM,EAAEX,UAAU;MAClBC;IACF,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ;AAEA,SAASW,eAAeA,CAAA,EAAW;EACjC,OAAO,OAAOC,IAAI,CAACC,GAAG,CAAC,CAAC,IAAIC,IAAI,CAACC,MAAM,CAAC,CAAC,CAACC,QAAQ,CAAC,EAAE,CAAC,CAACC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;AACvE;AAEO,MAAMC,eAAe,CAAuB;EACjD,MAAMC,OAAOA,CACXC,UAAkB,EAClBC,MAAc,EACdC,OAA+B,EAC/BC,IAAmB,EACnBC,aAAa,GAAG,KAAK,EACI;IACzB7B,cAAc,CAAC,CAAC;IAChB,MAAMG,SAAS,GAAGa,eAAe,CAAC,CAAC;IACnC,OAAO,IAAIc,OAAO,CAAiB,CAAChB,OAAO,EAAEF,MAAM,KAAK;MACtD,MAAMD,SAAS,GAAGoB,UAAU,CAAC,MAAM;QACjClC,eAAe,CAACY,MAAM,CAACN,SAAS,CAAC;QACjC,IAAAF,0BAAkB,EAAC,CAAC,CAAC+B,MAAM,CAAC7B,SAAS,CAAC;QACtCS,MAAM,CAAC,IAAIC,KAAK,CAAC,2BAA2BgB,aAAa,IAAI,CAAC,CAAC;MACjE,CAAC,EAAEA,aAAa,GAAG,GAAG,CAAC;MAEvBhC,eAAe,CAACoC,GAAG,CAAC9B,SAAS,EAAE;QAAEW,OAAO;QAAEF,MAAM;QAAED;MAAU,CAAC,CAAC;MAE9D,IAAI;QACF,IAAAV,0BAAkB,EAAC,CAAC,CAACiC,OAAO,CAC1B/B,SAAS,EACTsB,UAAU,EACVC,MAAM,EACNS,IAAI,CAACC,SAAS,CAACT,OAAO,CAAC,EACvBC,IAAI,IAAI,EAAE,EACVC,aACF,CAAC;MACH,CAAC,CAAC,OAAOvB,KAAK,EAAE;QACdT,eAAe,CAACY,MAAM,CAACN,SAAS,CAAC;QACjCO,YAAY,CAACC,SAAS,CAAC;QACvBC,MAAM,CAACN,KAAK,YAAYO,KAAK,GAAGP,KAAK,GAAG,IAAIO,KAAK,CAACwB,MAAM,CAAC/B,KAAK,CAAC,CAAC,CAAC;MACnE;IACF,CAAC,CAAC;EACJ;AACF;AAACgC,OAAA,CAAAf,eAAA,GAAAA,eAAA;AAEM,MAAMgB,eAAe,GAAAD,OAAA,CAAAC,eAAA,GAAG,IAAIhB,eAAe,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getAmplitudeContext = getAmplitudeContext;
7
+ exports.getAmplitudeStorage = getAmplitudeStorage;
8
+ exports.getAmplitudeWorker = getAmplitudeWorker;
9
+ exports.resetHybridInstancesForTests = resetHybridInstancesForTests;
10
+ var _reactNativeNitroModules = require("react-native-nitro-modules");
11
+ let contextInstance;
12
+ let storageInstance;
13
+ let workerInstance;
14
+ function getAmplitudeContext() {
15
+ contextInstance ??= _reactNativeNitroModules.NitroModules.createHybridObject("AmplitudeContext");
16
+ return contextInstance;
17
+ }
18
+ function getAmplitudeStorage() {
19
+ storageInstance ??= _reactNativeNitroModules.NitroModules.createHybridObject("AmplitudeStorage");
20
+ return storageInstance;
21
+ }
22
+ function getAmplitudeWorker() {
23
+ workerInstance ??= _reactNativeNitroModules.NitroModules.createHybridObject("AmplitudeWorker");
24
+ return workerInstance;
25
+ }
26
+ function resetHybridInstancesForTests() {
27
+ contextInstance = undefined;
28
+ storageInstance = undefined;
29
+ workerInstance = undefined;
30
+ }
31
+ //# sourceMappingURL=hybrid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactNativeNitroModules","require","contextInstance","storageInstance","workerInstance","getAmplitudeContext","NitroModules","createHybridObject","getAmplitudeStorage","getAmplitudeWorker","resetHybridInstancesForTests","undefined"],"sourceRoot":"../../../src","sources":["native/hybrid.ts"],"mappings":";;;;;;;;;AAAA,IAAAA,wBAAA,GAAAC,OAAA;AAKA,IAAIC,eAA6C;AACjD,IAAIC,eAA6C;AACjD,IAAIC,cAA2C;AAExC,SAASC,mBAAmBA,CAAA,EAAqB;EACtDH,eAAe,KACbI,qCAAY,CAACC,kBAAkB,CAAmB,kBAAkB,CAAC;EACvE,OAAOL,eAAe;AACxB;AAEO,SAASM,mBAAmBA,CAAA,EAAqB;EACtDL,eAAe,KACbG,qCAAY,CAACC,kBAAkB,CAAmB,kBAAkB,CAAC;EACvE,OAAOJ,eAAe;AACxB;AAEO,SAASM,kBAAkBA,CAAA,EAAoB;EACpDL,cAAc,KACZE,qCAAY,CAACC,kBAAkB,CAAkB,iBAAiB,CAAC;EACrE,OAAOH,cAAc;AACvB;AAEO,SAASM,4BAA4BA,CAAA,EAAS;EACnDR,eAAe,GAAGS,SAAS;EAC3BR,eAAe,GAAGQ,SAAS;EAC3BP,cAAc,GAAGO,SAAS;AAC5B","ignoreList":[]}
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.NitroMemoryStorage = exports.NitroExperimentStorage = exports.NitroAnalyticsStorage = void 0;
7
+ var _hybrid = require("./hybrid");
8
+ function namespaceKey(namespace, key) {
9
+ return `${namespace}::${key}`;
10
+ }
11
+ class NitroAnalyticsStorage {
12
+ constructor(namespace) {
13
+ this.namespace = namespace;
14
+ }
15
+ async isEnabled() {
16
+ return true;
17
+ }
18
+ async get(key) {
19
+ const raw = await this.getRaw(key);
20
+ if (!raw) {
21
+ return undefined;
22
+ }
23
+ try {
24
+ return JSON.parse(raw);
25
+ } catch {
26
+ return undefined;
27
+ }
28
+ }
29
+ async getRaw(key) {
30
+ return (0, _hybrid.getAmplitudeStorage)().get(namespaceKey(this.namespace, key), true);
31
+ }
32
+ async set(key, value) {
33
+ (0, _hybrid.getAmplitudeStorage)().set(namespaceKey(this.namespace, key), JSON.stringify(value), true);
34
+ }
35
+ async remove(key) {
36
+ (0, _hybrid.getAmplitudeStorage)().remove(namespaceKey(this.namespace, key), true);
37
+ }
38
+ async reset() {
39
+ const prefix = `${this.namespace}::`;
40
+ const keys = (0, _hybrid.getAmplitudeStorage)().getKeysByPrefix(prefix, true);
41
+ if (keys.length > 0) {
42
+ (0, _hybrid.getAmplitudeStorage)().removeBatch(keys, true);
43
+ }
44
+ }
45
+ }
46
+ exports.NitroAnalyticsStorage = NitroAnalyticsStorage;
47
+ class NitroExperimentStorage {
48
+ constructor(namespace) {
49
+ this.namespace = namespace;
50
+ }
51
+ async get(key) {
52
+ const value = (0, _hybrid.getAmplitudeStorage)().get(namespaceKey(this.namespace, key), true);
53
+ return value ?? null;
54
+ }
55
+ async put(key, value) {
56
+ (0, _hybrid.getAmplitudeStorage)().set(namespaceKey(this.namespace, key), value, true);
57
+ }
58
+ async delete(key) {
59
+ (0, _hybrid.getAmplitudeStorage)().remove(namespaceKey(this.namespace, key), true);
60
+ }
61
+ async reset() {
62
+ const prefix = `${this.namespace}::`;
63
+ const keys = (0, _hybrid.getAmplitudeStorage)().getKeysByPrefix(prefix, true);
64
+ if (keys.length > 0) {
65
+ (0, _hybrid.getAmplitudeStorage)().removeBatch(keys, true);
66
+ }
67
+ }
68
+ }
69
+ exports.NitroExperimentStorage = NitroExperimentStorage;
70
+ class NitroMemoryStorage {
71
+ constructor(namespace) {
72
+ this.namespace = namespace;
73
+ }
74
+ async get(key) {
75
+ const value = (0, _hybrid.getAmplitudeStorage)().get(namespaceKey(this.namespace, key), false);
76
+ return value ?? null;
77
+ }
78
+ async put(key, value) {
79
+ (0, _hybrid.getAmplitudeStorage)().set(namespaceKey(this.namespace, key), value, false);
80
+ }
81
+ async delete(key) {
82
+ (0, _hybrid.getAmplitudeStorage)().remove(namespaceKey(this.namespace, key), false);
83
+ }
84
+ async reset() {
85
+ const prefix = `${this.namespace}::`;
86
+ const keys = (0, _hybrid.getAmplitudeStorage)().getKeysByPrefix(prefix, false);
87
+ if (keys.length > 0) {
88
+ (0, _hybrid.getAmplitudeStorage)().removeBatch(keys, false);
89
+ }
90
+ }
91
+ }
92
+ exports.NitroMemoryStorage = NitroMemoryStorage;
93
+ //# sourceMappingURL=storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_hybrid","require","namespaceKey","namespace","key","NitroAnalyticsStorage","constructor","isEnabled","get","raw","getRaw","undefined","JSON","parse","getAmplitudeStorage","set","value","stringify","remove","reset","prefix","keys","getKeysByPrefix","length","removeBatch","exports","NitroExperimentStorage","put","delete","NitroMemoryStorage"],"sourceRoot":"../../../src","sources":["native/storage.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1 @@
1
+ {"type":"commonjs"}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export {};
4
+ //# sourceMappingURL=AmplitudeContext.nitro.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../src","sources":["AmplitudeContext.nitro.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export {};
4
+ //# sourceMappingURL=AmplitudeStorage.nitro.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../src","sources":["AmplitudeStorage.nitro.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export {};
4
+ //# sourceMappingURL=AmplitudeWorker.nitro.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../src","sources":["AmplitudeWorker.nitro.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+
3
+ import { createIdentifyEvent, Identify, getCookieName as getStorageKey, BASE_CAMPAIGN, EMPTY_VALUE, MKTG, CampaignParser } from "@amplitude/analytics-core";
4
+ /**
5
+ * @deprecated
6
+ * Campaign tracker has mixed logic from built-in and plugin web attribution
7
+ * features. Do not add more features here. The plan moving foward is to consolidate logic
8
+ * in @amplitude/plugin-web-attribution-browser with backward compatibility.
9
+ */
10
+ export class CampaignTracker {
11
+ constructor(apiKey, options) {
12
+ this.storage = options.storage;
13
+ this.storageKey = getStorageKey(apiKey, MKTG);
14
+ this.parser = new CampaignParser();
15
+ this.track = options.track;
16
+ this.onNewCampaign = options.onNewCampaign;
17
+ this.disabled = Boolean(options.disabled);
18
+ this.trackNewCampaigns = Boolean(options.trackNewCampaigns);
19
+ this.trackPageViews = Boolean(options.trackPageViews);
20
+ this.excludeReferrers = options.excludeReferrers ?? [];
21
+ if (typeof location !== "undefined") {
22
+ this.excludeReferrers.unshift(location.hostname);
23
+ }
24
+ this.initialEmptyValue = options.initialEmptyValue ?? EMPTY_VALUE;
25
+ }
26
+ isNewCampaign(current, previous, ignoreSubdomainInReferrer = false) {
27
+ const {
28
+ referrer,
29
+ referring_domain,
30
+ ...currentCampaign
31
+ } = current;
32
+ const {
33
+ referrer: _previous_referrer,
34
+ referring_domain: prevReferringDomain,
35
+ ...previousCampaign
36
+ } = previous || {};
37
+ if (current.referring_domain && this.excludeReferrers.includes(current.referring_domain)) {
38
+ return false;
39
+ }
40
+ const hasNewCampaign = JSON.stringify(currentCampaign) !== JSON.stringify(previousCampaign);
41
+ const hasNewDomain = ignoreSubdomainInReferrer ? domainWithoutSubdomain(referring_domain || "") !== domainWithoutSubdomain(prevReferringDomain || "") : referring_domain !== prevReferringDomain;
42
+ return !previous || hasNewCampaign || hasNewDomain;
43
+ }
44
+ async saveCampaignToStorage(campaign) {
45
+ await this.storage.set(this.storageKey, campaign);
46
+ }
47
+ async getCampaignFromStorage() {
48
+ return await this.storage.get(this.storageKey);
49
+ }
50
+ createCampaignEvent(campaign) {
51
+ const campaignParameters = {
52
+ // This object definition allows undefined keys to be iterated on
53
+ // in .reduce() to build indentify object
54
+ ...BASE_CAMPAIGN,
55
+ ...campaign
56
+ };
57
+ const identifyEvent = Object.entries(campaignParameters).reduce((identify, [key, value]) => {
58
+ identify.setOnce(`initial_${key}`, value || this.initialEmptyValue);
59
+ if (value) {
60
+ return identify.set(key, value);
61
+ }
62
+ return identify.unset(key);
63
+ }, new Identify());
64
+ const pageViewEvent = {
65
+ event_type: "Page View",
66
+ event_properties: {
67
+ page_title: /* istanbul ignore next */typeof document !== "undefined" && document.title || "",
68
+ page_location: /* istanbul ignore next */typeof location !== "undefined" && location.href || "",
69
+ page_path: /* istanbul ignore next */typeof location !== "undefined" && location.pathname || ""
70
+ }
71
+ };
72
+ return {
73
+ ...createIdentifyEvent(identifyEvent),
74
+ ...(this.trackPageViews && pageViewEvent)
75
+ };
76
+ }
77
+ async send(isNewSession) {
78
+ if (this.disabled) {
79
+ return;
80
+ }
81
+ const currentCampaign = await this.parser.parse();
82
+ const previousCampaign = await this.getCampaignFromStorage();
83
+ if (!isNewSession) {
84
+ if (!this.trackNewCampaigns || !this.isNewCampaign(currentCampaign, previousCampaign)) {
85
+ return;
86
+ }
87
+ this.onNewCampaign(currentCampaign);
88
+ }
89
+ await this.track(this.createCampaignEvent(currentCampaign));
90
+ await this.saveCampaignToStorage(currentCampaign);
91
+ }
92
+ }
93
+ const domainWithoutSubdomain = domain => {
94
+ const parts = domain.split(".");
95
+ if (parts.length <= 2) {
96
+ return domain;
97
+ }
98
+ return parts.slice(parts.length - 2, parts.length).join(".");
99
+ };
100
+ //# sourceMappingURL=campaign-tracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createIdentifyEvent","Identify","getCookieName","getStorageKey","BASE_CAMPAIGN","EMPTY_VALUE","MKTG","CampaignParser","CampaignTracker","constructor","apiKey","options","storage","storageKey","parser","track","onNewCampaign","disabled","Boolean","trackNewCampaigns","trackPageViews","excludeReferrers","location","unshift","hostname","initialEmptyValue","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","identifyEvent","Object","entries","reduce","identify","key","value","setOnce","unset","pageViewEvent","event_type","event_properties","page_title","document","title","page_location","href","page_path","pathname","send","isNewSession","parse","domain","parts","split","length","slice","join"],"sourceRoot":"../../../../src","sources":["analytics/campaign/campaign-tracker.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export {};
4
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../../src","sources":["analytics/campaign/types.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,272 @@
1
+ "use strict";
2
+
3
+ import { Config, MemoryStorage, UUID, CookieStorage, getCookieName, getQueryParams, FetchTransport } from "@amplitude/analytics-core";
4
+ import { LocalStorage } from "./storage/local-storage";
5
+ import RemnantDataMigration from "./migration/remnant-data-migration";
6
+ import { NitroAnalyticsStorage } from "../native/storage";
7
+ import { nitroTransport } from "./nitro-transport";
8
+ export const getDefaultConfig = () => {
9
+ const cookieStorage = new MemoryStorage();
10
+ const trackingOptions = {
11
+ adid: true,
12
+ carrier: true,
13
+ deviceManufacturer: true,
14
+ deviceModel: true,
15
+ ipAddress: true,
16
+ language: true,
17
+ osName: true,
18
+ osVersion: true,
19
+ platform: true,
20
+ appSetId: true,
21
+ idfv: true,
22
+ country: false // NOTE: tracking country information would disable server-side IP address lookup to fill other information like region, city, dma, etc.
23
+ };
24
+ return {
25
+ cookieExpiration: 365,
26
+ cookieSameSite: "Lax",
27
+ cookieSecure: false,
28
+ cookieStorage,
29
+ cookieUpgrade: true,
30
+ disableCookies: true,
31
+ domain: "",
32
+ sessionTimeout: 5 * 60 * 1000,
33
+ storageProvider: new NitroAnalyticsStorage("analytics-events"),
34
+ trackingSessionEvents: false,
35
+ trackingOptions,
36
+ transportProvider: nitroTransport
37
+ };
38
+ };
39
+ export class ReactNativeConfig extends Config {
40
+ // NOTE: These protected properties cache user session values in the configured session storage
41
+
42
+ _optOut = false;
43
+ constructor(apiKey, options) {
44
+ const defaultConfig = getDefaultConfig();
45
+ super({
46
+ flushIntervalMillis: 1000,
47
+ flushMaxRetries: 5,
48
+ flushQueueSize: 30,
49
+ transportProvider: defaultConfig.transportProvider,
50
+ ...options,
51
+ apiKey
52
+ });
53
+
54
+ // NOTE: Define `cookieStorage` first to persist user session
55
+ // user session properties expect `cookieStorage` to be defined
56
+ this.cookieStorage = options?.cookieStorage ?? defaultConfig.cookieStorage;
57
+ this.deviceId = options?.deviceId;
58
+ this.lastEventTime = options?.lastEventTime;
59
+ this.optOut = Boolean(options?.optOut);
60
+ this.sessionId = options?.sessionId;
61
+ this.userId = options?.userId;
62
+ this.appVersion = options?.appVersion;
63
+ this.cookieExpiration = options?.cookieExpiration ?? defaultConfig.cookieExpiration;
64
+ this.cookieSameSite = options?.cookieSameSite ?? defaultConfig.cookieSameSite;
65
+ this.cookieSecure = options?.cookieSecure ?? defaultConfig.cookieSecure;
66
+ this.cookieUpgrade = options?.cookieUpgrade ?? defaultConfig.cookieUpgrade;
67
+ this.disableCookies = options?.disableCookies ?? defaultConfig.disableCookies;
68
+ this.domain = options?.domain ?? defaultConfig.domain;
69
+ this.partnerId = options?.partnerId;
70
+ this.sessionTimeout = options?.sessionTimeout ?? defaultConfig.sessionTimeout;
71
+ this.trackingOptions = options?.trackingOptions ?? defaultConfig.trackingOptions;
72
+ this.trackingSessionEvents = options?.trackingSessionEvents ?? defaultConfig.trackingSessionEvents;
73
+ }
74
+ get deviceId() {
75
+ return this._deviceId;
76
+ }
77
+ set deviceId(deviceId) {
78
+ if (this._deviceId !== deviceId) {
79
+ this._deviceId = deviceId;
80
+ this.updateStorage();
81
+ }
82
+ }
83
+ get userId() {
84
+ return this._userId;
85
+ }
86
+ set userId(userId) {
87
+ if (this._userId !== userId) {
88
+ this._userId = userId;
89
+ this.updateStorage();
90
+ }
91
+ }
92
+ get sessionId() {
93
+ return this._sessionId;
94
+ }
95
+ set sessionId(sessionId) {
96
+ if (this._sessionId !== sessionId) {
97
+ this._sessionId = sessionId;
98
+ this.updateStorage();
99
+ }
100
+ }
101
+ get optOut() {
102
+ return this._optOut;
103
+ }
104
+ set optOut(optOut) {
105
+ if (this._optOut !== optOut) {
106
+ this._optOut = optOut;
107
+ this.updateStorage();
108
+ }
109
+ }
110
+ get lastEventTime() {
111
+ return this._lastEventTime;
112
+ }
113
+ set lastEventTime(lastEventTime) {
114
+ if (this._lastEventTime !== lastEventTime) {
115
+ this._lastEventTime = lastEventTime;
116
+ this.updateStorage();
117
+ }
118
+ }
119
+ get lastEventId() {
120
+ return this._lastEventId;
121
+ }
122
+ set lastEventId(lastEventId) {
123
+ if (this._lastEventId !== lastEventId) {
124
+ this._lastEventId = lastEventId;
125
+ this.updateStorage();
126
+ }
127
+ }
128
+ updateStorage() {
129
+ const cache = {
130
+ deviceId: this._deviceId,
131
+ userId: this._userId,
132
+ sessionId: this._sessionId,
133
+ optOut: this._optOut,
134
+ lastEventTime: this._lastEventTime,
135
+ lastEventId: this._lastEventId
136
+ };
137
+ try {
138
+ void this.cookieStorage?.set(getCookieName(this.apiKey), cache).catch(error => {
139
+ this.loggerProvider?.error(`Failed to persist user session: ${String(error)}`);
140
+ });
141
+ } catch (error) {
142
+ this.loggerProvider?.error(`Failed to persist user session: ${String(error)}`);
143
+ }
144
+ }
145
+ }
146
+ export const useReactNativeConfig = async (apiKey, options) => {
147
+ const defaultConfig = getDefaultConfig();
148
+
149
+ // create cookie storage
150
+ const disableCookies = options?.disableCookies ?? defaultConfig.disableCookies;
151
+ const domain = disableCookies ? "" : options?.domain ?? (await getTopLevelDomain());
152
+ const cookieStorage = await createCookieStorage({
153
+ ...options,
154
+ disableCookies,
155
+ domain
156
+ });
157
+ const previousCookies = await cookieStorage.get(getCookieName(apiKey));
158
+ const queryParams = getQueryParams();
159
+
160
+ // reconcile user session
161
+ let deviceId = options?.deviceId ?? queryParams.deviceId ?? previousCookies?.deviceId;
162
+ let lastEventTime = options?.lastEventTime ?? previousCookies?.lastEventTime;
163
+ const optOut = options?.optOut ?? Boolean(previousCookies?.optOut);
164
+ let sessionId = options?.sessionId ?? previousCookies?.sessionId;
165
+ let userId = options?.userId ?? previousCookies?.userId;
166
+ let lastEventId = previousCookies?.lastEventId;
167
+ const storageProvider = options?.storageProvider ?? (await createEventsStorage(options));
168
+ if (options?.migrateLegacyData !== false) {
169
+ const legacySessionData = await new RemnantDataMigration(apiKey, options?.instanceName, storageProvider, previousCookies?.lastEventTime === undefined, options?.loggerProvider).execute();
170
+ deviceId = deviceId ?? legacySessionData.deviceId;
171
+ userId = userId ?? legacySessionData.userId;
172
+ sessionId = sessionId ?? legacySessionData.sessionId;
173
+ lastEventTime = lastEventTime ?? legacySessionData.lastEventTime;
174
+ lastEventId = lastEventId ?? legacySessionData.lastEventId;
175
+ }
176
+ const config = new ReactNativeConfig(apiKey, {
177
+ ...options,
178
+ cookieStorage,
179
+ deviceId: deviceId ?? UUID(),
180
+ domain,
181
+ lastEventTime,
182
+ optOut,
183
+ sessionId,
184
+ storageProvider,
185
+ trackingOptions: {
186
+ ...defaultConfig.trackingOptions,
187
+ ...options?.trackingOptions
188
+ },
189
+ transportProvider: options?.transportProvider ?? new FetchTransport(),
190
+ userId
191
+ });
192
+ config.lastEventId = lastEventId;
193
+ config.loggerProvider?.log(`Init: storage=${cookieStorage.constructor.name} restoredSessionId = ${previousCookies?.sessionId ?? "undefined"}, optionsSessionId = ${options?.sessionId ?? "undefined"}`);
194
+ return config;
195
+ };
196
+ export const createCookieStorage = async (overrides, baseConfig = getDefaultConfig()) => {
197
+ const options = {
198
+ ...baseConfig,
199
+ ...overrides
200
+ };
201
+ const cookieStorage = overrides?.cookieStorage;
202
+ if (!cookieStorage || !(await cookieStorage.isEnabled())) {
203
+ return createFlexibleStorage(options);
204
+ }
205
+ return cookieStorage;
206
+ };
207
+ const createFlexibleStorage = async options => {
208
+ let storage;
209
+ if (options.disableCookies) {
210
+ storage = new LocalStorage();
211
+ if (!(await storage.isEnabled())) {
212
+ storage = new MemoryStorage();
213
+ }
214
+ return storage;
215
+ }
216
+ storage = new CookieStorage({
217
+ domain: options.domain,
218
+ expirationDays: options.cookieExpiration,
219
+ sameSite: options.cookieSameSite,
220
+ secure: options.cookieSecure
221
+ });
222
+ if (!(await storage.isEnabled())) {
223
+ storage = new LocalStorage();
224
+ if (!(await storage.isEnabled())) {
225
+ storage = new MemoryStorage();
226
+ }
227
+ }
228
+ return storage;
229
+ };
230
+ export const createEventsStorage = async overrides => {
231
+ const hasStorageProviderProperty = overrides && Object.prototype.hasOwnProperty.call(overrides, "storageProvider");
232
+ // If storageProperty is explicitly undefined like `{ storageProperty: undefined }`
233
+ // then storageProvider is undefined
234
+ // If storageProvider is implicitly undefined like `{ }`
235
+ // then storageProvider uses the built-in memory storage
236
+ // Otherwise storageProvider is overriden
237
+ if (!hasStorageProviderProperty || overrides.storageProvider) {
238
+ for (const storage of [overrides?.storageProvider, new LocalStorage()]) {
239
+ if (storage && (await storage.isEnabled())) {
240
+ return storage;
241
+ }
242
+ }
243
+ }
244
+ return undefined;
245
+ };
246
+ export const getTopLevelDomain = async url => {
247
+ if (!(await new CookieStorage().isEnabled()) || !url && (typeof location === "undefined" || !location.hostname)) {
248
+ return "";
249
+ }
250
+ const host = url ?? location.hostname;
251
+ const parts = host.split(".");
252
+ const levels = [];
253
+ const storageKey = "AMP_TLDTEST";
254
+ for (let i = parts.length - 2; i >= 0; --i) {
255
+ levels.push(parts.slice(i).join("."));
256
+ }
257
+ for (let i = 0; i < levels.length; i++) {
258
+ const domain = levels[i];
259
+ const options = {
260
+ domain: "." + domain
261
+ };
262
+ const storage = new CookieStorage(options);
263
+ await storage.set(storageKey, 1);
264
+ const value = await storage.get(storageKey);
265
+ if (value) {
266
+ await storage.remove(storageKey);
267
+ return "." + domain;
268
+ }
269
+ }
270
+ return "";
271
+ };
272
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Config","MemoryStorage","UUID","CookieStorage","getCookieName","getQueryParams","FetchTransport","LocalStorage","RemnantDataMigration","NitroAnalyticsStorage","nitroTransport","getDefaultConfig","cookieStorage","trackingOptions","adid","carrier","deviceManufacturer","deviceModel","ipAddress","language","osName","osVersion","platform","appSetId","idfv","country","cookieExpiration","cookieSameSite","cookieSecure","cookieUpgrade","disableCookies","domain","sessionTimeout","storageProvider","trackingSessionEvents","transportProvider","ReactNativeConfig","_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","catch","error","loggerProvider","String","useReactNativeConfig","getTopLevelDomain","createCookieStorage","previousCookies","get","queryParams","createEventsStorage","migrateLegacyData","legacySessionData","instanceName","undefined","execute","config","log","name","overrides","baseConfig","isEnabled","createFlexibleStorage","storage","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":";;AAAA,SACEA,MAAM,EACNC,aAAa,EACbC,IAAI,EAOJC,aAAa,EACbC,aAAa,EACbC,cAAc,EACdC,cAAc,QACT,2BAA2B;AAElC,SAASC,YAAY,QAAQ,yBAAyB;AACtD,OAAOC,oBAAoB,MAAM,oCAAoC;AACrE,SAASC,qBAAqB,QAAQ,mBAAmB;AACzD,SAASC,cAAc,QAAQ,mBAAmB;AAElD,OAAO,MAAMC,gBAAgB,GAAGA,CAAA,KAAM;EACpC,MAAMC,aAAa,GAAG,IAAIX,aAAa,CAAc,CAAC;EACtD,MAAMY,eAAqD,GAAG;IAC5DC,IAAI,EAAE,IAAI;IACVC,OAAO,EAAE,IAAI;IACbC,kBAAkB,EAAE,IAAI;IACxBC,WAAW,EAAE,IAAI;IACjBC,SAAS,EAAE,IAAI;IACfC,QAAQ,EAAE,IAAI;IACdC,MAAM,EAAE,IAAI;IACZC,SAAS,EAAE,IAAI;IACfC,QAAQ,EAAE,IAAI;IACdC,QAAQ,EAAE,IAAI;IACdC,IAAI,EAAE,IAAI;IACVC,OAAO,EAAE,KAAK,CAAE;EAClB,CAAC;EACD,OAAO;IACLC,gBAAgB,EAAE,GAAG;IACrBC,cAAc,EAAE,KAAK;IACrBC,YAAY,EAAE,KAAK;IACnBhB,aAAa;IACbiB,aAAa,EAAE,IAAI;IACnBC,cAAc,EAAE,IAAI;IACpBC,MAAM,EAAE,EAAE;IACVC,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI;IAC7BC,eAAe,EAAE,IAAIxB,qBAAqB,CAAU,kBAAkB,CAAC;IACvEyB,qBAAqB,EAAE,KAAK;IAC5BrB,eAAe;IACfsB,iBAAiB,EAAEzB;EACrB,CAAC;AACH,CAAC;AAED,OAAO,MAAM0B,iBAAiB,SAASpC,MAAM,CAA+B;EAc1E;;EAIUqC,OAAO,GAAG,KAAK;EAIzBC,WAAWA,CAACC,MAAc,EAAEC,OAA4B,EAAE;IACxD,MAAMC,aAAa,GAAG9B,gBAAgB,CAAC,CAAC;IACxC,KAAK,CAAC;MACJ+B,mBAAmB,EAAE,IAAI;MACzBC,eAAe,EAAE,CAAC;MAClBC,cAAc,EAAE,EAAE;MAClBT,iBAAiB,EAAEM,aAAa,CAACN,iBAAiB;MAClD,GAAGK,OAAO;MACVD;IACF,CAAC,CAAC;;IAEF;IACA;IACA,IAAI,CAAC3B,aAAa,GAAG4B,OAAO,EAAE5B,aAAa,IAAI6B,aAAa,CAAC7B,aAAa;IAC1E,IAAI,CAACiC,QAAQ,GAAGL,OAAO,EAAEK,QAAQ;IACjC,IAAI,CAACC,aAAa,GAAGN,OAAO,EAAEM,aAAa;IAC3C,IAAI,CAACC,MAAM,GAAGC,OAAO,CAACR,OAAO,EAAEO,MAAM,CAAC;IACtC,IAAI,CAACE,SAAS,GAAGT,OAAO,EAAES,SAAS;IACnC,IAAI,CAACC,MAAM,GAAGV,OAAO,EAAEU,MAAM;IAE7B,IAAI,CAACC,UAAU,GAAGX,OAAO,EAAEW,UAAU;IACrC,IAAI,CAACzB,gBAAgB,GACnBc,OAAO,EAAEd,gBAAgB,IAAIe,aAAa,CAACf,gBAAgB;IAC7D,IAAI,CAACC,cAAc,GACjBa,OAAO,EAAEb,cAAc,IAAIc,aAAa,CAACd,cAAc;IACzD,IAAI,CAACC,YAAY,GAAGY,OAAO,EAAEZ,YAAY,IAAIa,aAAa,CAACb,YAAY;IACvE,IAAI,CAACC,aAAa,GAAGW,OAAO,EAAEX,aAAa,IAAIY,aAAa,CAACZ,aAAa;IAC1E,IAAI,CAACC,cAAc,GACjBU,OAAO,EAAEV,cAAc,IAAIW,aAAa,CAACX,cAAc;IACzD,IAAI,CAACC,MAAM,GAAGS,OAAO,EAAET,MAAM,IAAIU,aAAa,CAACV,MAAM;IACrD,IAAI,CAACqB,SAAS,GAAGZ,OAAO,EAAEY,SAAS;IACnC,IAAI,CAACpB,cAAc,GACjBQ,OAAO,EAAER,cAAc,IAAIS,aAAa,CAACT,cAAc;IACzD,IAAI,CAACnB,eAAe,GAClB2B,OAAO,EAAE3B,eAAe,IAAI4B,aAAa,CAAC5B,eAAe;IAC3D,IAAI,CAACqB,qBAAqB,GACxBM,OAAO,EAAEN,qBAAqB,IAAIO,aAAa,CAACP,qBAAqB;EACzE;EAEA,IAAIW,QAAQA,CAAA,EAAG;IACb,OAAO,IAAI,CAACQ,SAAS;EACvB;EAEA,IAAIR,QAAQA,CAACA,QAA4B,EAAE;IACzC,IAAI,IAAI,CAACQ,SAAS,KAAKR,QAAQ,EAAE;MAC/B,IAAI,CAACQ,SAAS,GAAGR,QAAQ;MACzB,IAAI,CAACS,aAAa,CAAC,CAAC;IACtB;EACF;EAEA,IAAIJ,MAAMA,CAAA,EAAG;IACX,OAAO,IAAI,CAACK,OAAO;EACrB;EAEA,IAAIL,MAAMA,CAACA,MAA0B,EAAE;IACrC,IAAI,IAAI,CAACK,OAAO,KAAKL,MAAM,EAAE;MAC3B,IAAI,CAACK,OAAO,GAAGL,MAAM;MACrB,IAAI,CAACI,aAAa,CAAC,CAAC;IACtB;EACF;EAEA,IAAIL,SAASA,CAAA,EAAG;IACd,OAAO,IAAI,CAACO,UAAU;EACxB;EAEA,IAAIP,SAASA,CAACA,SAA6B,EAAE;IAC3C,IAAI,IAAI,CAACO,UAAU,KAAKP,SAAS,EAAE;MACjC,IAAI,CAACO,UAAU,GAAGP,SAAS;MAC3B,IAAI,CAACK,aAAa,CAAC,CAAC;IACtB;EACF;EAEA,IAAIP,MAAMA,CAAA,EAAG;IACX,OAAO,IAAI,CAACV,OAAO;EACrB;EAEA,IAAIU,MAAMA,CAACA,MAAe,EAAE;IAC1B,IAAI,IAAI,CAACV,OAAO,KAAKU,MAAM,EAAE;MAC3B,IAAI,CAACV,OAAO,GAAGU,MAAM;MACrB,IAAI,CAACO,aAAa,CAAC,CAAC;IACtB;EACF;EAEA,IAAIR,aAAaA,CAAA,EAAG;IAClB,OAAO,IAAI,CAACW,cAAc;EAC5B;EAEA,IAAIX,aAAaA,CAACA,aAAiC,EAAE;IACnD,IAAI,IAAI,CAACW,cAAc,KAAKX,aAAa,EAAE;MACzC,IAAI,CAACW,cAAc,GAAGX,aAAa;MACnC,IAAI,CAACQ,aAAa,CAAC,CAAC;IACtB;EACF;EAEA,IAAII,WAAWA,CAAA,EAAG;IAChB,OAAO,IAAI,CAACC,YAAY;EAC1B;EAEA,IAAID,WAAWA,CAACA,WAA+B,EAAE;IAC/C,IAAI,IAAI,CAACC,YAAY,KAAKD,WAAW,EAAE;MACrC,IAAI,CAACC,YAAY,GAAGD,WAAW;MAC/B,IAAI,CAACJ,aAAa,CAAC,CAAC;IACtB;EACF;EAEQA,aAAaA,CAAA,EAAG;IACtB,MAAMM,KAAK,GAAG;MACZf,QAAQ,EAAE,IAAI,CAACQ,SAAS;MACxBH,MAAM,EAAE,IAAI,CAACK,OAAO;MACpBN,SAAS,EAAE,IAAI,CAACO,UAAU;MAC1BT,MAAM,EAAE,IAAI,CAACV,OAAO;MACpBS,aAAa,EAAE,IAAI,CAACW,cAAc;MAClCC,WAAW,EAAE,IAAI,CAACC;IACpB,CAAC;IACD,IAAI;MACF,KAAK,IAAI,CAAC/C,aAAa,EACnBiD,GAAG,CAACzD,aAAa,CAAC,IAAI,CAACmC,MAAM,CAAC,EAAEqB,KAAK,CAAC,CACvCE,KAAK,CAAEC,KAAK,IAAK;QAChB,IAAI,CAACC,cAAc,EAAED,KAAK,CACxB,mCAAmCE,MAAM,CAACF,KAAK,CAAC,EAClD,CAAC;MACH,CAAC,CAAC;IACN,CAAC,CAAC,OAAOA,KAAK,EAAE;MACd,IAAI,CAACC,cAAc,EAAED,KAAK,CACxB,mCAAmCE,MAAM,CAACF,KAAK,CAAC,EAClD,CAAC;IACH;EACF;AACF;AAEA,OAAO,MAAMG,oBAAoB,GAAG,MAAAA,CAClC3B,MAAc,EACdC,OAA4B,KACI;EAChC,MAAMC,aAAa,GAAG9B,gBAAgB,CAAC,CAAC;;EAExC;EACA,MAAMmB,cAAc,GAClBU,OAAO,EAAEV,cAAc,IAAIW,aAAa,CAACX,cAAc;EACzD,MAAMC,MAAM,GAAGD,cAAc,GACzB,EAAE,GACDU,OAAO,EAAET,MAAM,KAAK,MAAMoC,iBAAiB,CAAC,CAAC,CAAE;EACpD,MAAMvD,aAAa,GAAG,MAAMwD,mBAAmB,CAAc;IAC3D,GAAG5B,OAAO;IACVV,cAAc;IACdC;EACF,CAAC,CAAC;EACF,MAAMsC,eAAe,GAAG,MAAMzD,aAAa,CAAC0D,GAAG,CAAClE,aAAa,CAACmC,MAAM,CAAC,CAAC;EACtE,MAAMgC,WAAW,GAAGlE,cAAc,CAAC,CAAC;;EAEpC;EACA,IAAIwC,QAAQ,GACVL,OAAO,EAAEK,QAAQ,IAAI0B,WAAW,CAAC1B,QAAQ,IAAIwB,eAAe,EAAExB,QAAQ;EACxE,IAAIC,aAAa,GAAGN,OAAO,EAAEM,aAAa,IAAIuB,eAAe,EAAEvB,aAAa;EAC5E,MAAMC,MAAM,GAAGP,OAAO,EAAEO,MAAM,IAAIC,OAAO,CAACqB,eAAe,EAAEtB,MAAM,CAAC;EAClE,IAAIE,SAAS,GAAGT,OAAO,EAAES,SAAS,IAAIoB,eAAe,EAAEpB,SAAS;EAChE,IAAIC,MAAM,GAAGV,OAAO,EAAEU,MAAM,IAAImB,eAAe,EAAEnB,MAAM;EACvD,IAAIQ,WAAW,GAAGW,eAAe,EAAEX,WAAW;EAE9C,MAAMzB,eAAe,GACnBO,OAAO,EAAEP,eAAe,KAAK,MAAMuC,mBAAmB,CAAChC,OAAO,CAAC,CAAC;EAElE,IAAIA,OAAO,EAAEiC,iBAAiB,KAAK,KAAK,EAAE;IACxC,MAAMC,iBAAiB,GAAG,MAAM,IAAIlE,oBAAoB,CACtD+B,MAAM,EACNC,OAAO,EAAEmC,YAAY,EACrB1C,eAAe,EACfoC,eAAe,EAAEvB,aAAa,KAAK8B,SAAS,EAC5CpC,OAAO,EAAEwB,cACX,CAAC,CAACa,OAAO,CAAC,CAAC;IACXhC,QAAQ,GAAGA,QAAQ,IAAI6B,iBAAiB,CAAC7B,QAAQ;IACjDK,MAAM,GAAGA,MAAM,IAAIwB,iBAAiB,CAACxB,MAAM;IAC3CD,SAAS,GAAGA,SAAS,IAAIyB,iBAAiB,CAACzB,SAAS;IACpDH,aAAa,GAAGA,aAAa,IAAI4B,iBAAiB,CAAC5B,aAAa;IAChEY,WAAW,GAAGA,WAAW,IAAIgB,iBAAiB,CAAChB,WAAW;EAC5D;EAEA,MAAMoB,MAAM,GAAG,IAAI1C,iBAAiB,CAACG,MAAM,EAAE;IAC3C,GAAGC,OAAO;IACV5B,aAAa;IACbiC,QAAQ,EAAEA,QAAQ,IAAI3C,IAAI,CAAC,CAAC;IAC5B6B,MAAM;IACNe,aAAa;IACbC,MAAM;IACNE,SAAS;IACThB,eAAe;IACfpB,eAAe,EAAE;MACf,GAAG4B,aAAa,CAAC5B,eAAe;MAChC,GAAG2B,OAAO,EAAE3B;IACd,CAAC;IACDsB,iBAAiB,EAAEK,OAAO,EAAEL,iBAAiB,IAAI,IAAI7B,cAAc,CAAC,CAAC;IACrE4C;EACF,CAAC,CAAC;EAEF4B,MAAM,CAACpB,WAAW,GAAGA,WAAW;EAEhCoB,MAAM,CAACd,cAAc,EAAEe,GAAG,CACxB,iBAAiBnE,aAAa,CAAC0B,WAAW,CAAC0C,IAAI,wBAC7CX,eAAe,EAAEpB,SAAS,IAAI,WAAW,wBACnBT,OAAO,EAAES,SAAS,IAAI,WAAW,EAC3D,CAAC;EAED,OAAO6B,MAAM;AACf,CAAC;AAED,OAAO,MAAMV,mBAAmB,GAAG,MAAAA,CACjCa,SAA8B,EAC9BC,UAAU,GAAGvE,gBAAgB,CAAC,CAAC,KACP;EACxB,MAAM6B,OAAO,GAAG;IAAE,GAAG0C,UAAU;IAAE,GAAGD;EAAU,CAAC;EAC/C,MAAMrE,aAAa,GAAGqE,SAAS,EAAErE,aAA2B;EAC5D,IAAI,CAACA,aAAa,IAAI,EAAE,MAAMA,aAAa,CAACuE,SAAS,CAAC,CAAC,CAAC,EAAE;IACxD,OAAOC,qBAAqB,CAAI5C,OAAO,CAAC;EAC1C;EACA,OAAO5B,aAAa;AACtB,CAAC;AAED,MAAMwE,qBAAqB,GAAG,MAC5B5C,OAA2B,IACH;EACxB,IAAI6C,OAAmB;EACvB,IAAI7C,OAAO,CAACV,cAAc,EAAE;IAC1BuD,OAAO,GAAG,IAAI9E,YAAY,CAAC,CAAC;IAC5B,IAAI,EAAE,MAAM8E,OAAO,CAACF,SAAS,CAAC,CAAC,CAAC,EAAE;MAChCE,OAAO,GAAG,IAAIpF,aAAa,CAAC,CAAC;IAC/B;IACA,OAAOoF,OAAO;EAChB;EAEAA,OAAO,GAAG,IAAIlF,aAAa,CAAC;IAC1B4B,MAAM,EAAES,OAAO,CAACT,MAAM;IACtBuD,cAAc,EAAE9C,OAAO,CAACd,gBAAgB;IACxC6D,QAAQ,EAAE/C,OAAO,CAACb,cAAc;IAChC6D,MAAM,EAAEhD,OAAO,CAACZ;EAClB,CAAC,CAAC;EACF,IAAI,EAAE,MAAMyD,OAAO,CAACF,SAAS,CAAC,CAAC,CAAC,EAAE;IAChCE,OAAO,GAAG,IAAI9E,YAAY,CAAC,CAAC;IAC5B,IAAI,EAAE,MAAM8E,OAAO,CAACF,SAAS,CAAC,CAAC,CAAC,EAAE;MAChCE,OAAO,GAAG,IAAIpF,aAAa,CAAC,CAAC;IAC/B;EACF;EACA,OAAOoF,OAAO;AAChB,CAAC;AAED,OAAO,MAAMb,mBAAmB,GAAG,MACjCS,SAA8B,IACY;EAC1C,MAAMQ,0BAA0B,GAC9BR,SAAS,IACTS,MAAM,CAACC,SAAS,CAACC,cAAc,CAACC,IAAI,CAACZ,SAAS,EAAE,iBAAiB,CAAC;EACpE;EACA;EACA;EACA;EACA;EACA,IAAI,CAACQ,0BAA0B,IAAIR,SAAS,CAAChD,eAAe,EAAE;IAC5D,KAAK,MAAMoD,OAAO,IAAI,CACpBJ,SAAS,EAAEhD,eAAe,EAC1B,IAAI1B,YAAY,CAAU,CAAC,CAC5B,EAAE;MACD,IAAI8E,OAAO,KAAK,MAAMA,OAAO,CAACF,SAAS,CAAC,CAAC,CAAC,EAAE;QAC1C,OAAOE,OAAO;MAChB;IACF;EACF;EACA,OAAOT,SAAS;AAClB,CAAC;AAED,OAAO,MAAMT,iBAAiB,GAAG,MAAO2B,GAAY,IAAK;EACvD,IACE,EAAE,MAAM,IAAI3F,aAAa,CAAS,CAAC,CAACgF,SAAS,CAAC,CAAC,CAAC,IAC/C,CAACW,GAAG,KAAK,OAAOC,QAAQ,KAAK,WAAW,IAAI,CAACA,QAAQ,CAACC,QAAQ,CAAE,EACjE;IACA,OAAO,EAAE;EACX;EAEA,MAAMC,IAAI,GAAGH,GAAG,IAAIC,QAAQ,CAACC,QAAQ;EACrC,MAAME,KAAK,GAAGD,IAAI,CAACE,KAAK,CAAC,GAAG,CAAC;EAC7B,MAAMC,MAAM,GAAG,EAAE;EACjB,MAAMC,UAAU,GAAG,aAAa;EAEhC,KAAK,IAAIC,CAAC,GAAGJ,KAAK,CAACK,MAAM,GAAG,CAAC,EAAED,CAAC,IAAI,CAAC,EAAE,EAAEA,CAAC,EAAE;IAC1CF,MAAM,CAACI,IAAI,CAACN,KAAK,CAACO,KAAK,CAACH,CAAC,CAAC,CAACI,IAAI,CAAC,GAAG,CAAC,CAAC;EACvC;EACA,KAAK,IAAIJ,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,MAAM,CAACG,MAAM,EAAED,CAAC,EAAE,EAAE;IACtC,MAAMvE,MAAM,GAAGqE,MAAM,CAACE,CAAC,CAAC;IACxB,MAAM9D,OAAO,GAAG;MAAET,MAAM,EAAE,GAAG,GAAGA;IAAO,CAAC;IACxC,MAAMsD,OAAO,GAAG,IAAIlF,aAAa,CAASqC,OAAO,CAAC;IAClD,MAAM6C,OAAO,CAACxB,GAAG,CAACwC,UAAU,EAAE,CAAC,CAAC;IAChC,MAAMM,KAAK,GAAG,MAAMtB,OAAO,CAACf,GAAG,CAAC+B,UAAU,CAAC;IAC3C,IAAIM,KAAK,EAAE;MACT,MAAMtB,OAAO,CAACuB,MAAM,CAACP,UAAU,CAAC;MAChC,OAAO,GAAG,GAAGtE,MAAM;IACrB;EACF;EAEA,OAAO,EAAE;AACX,CAAC","ignoreList":[]}