@aws-amplify/analytics 6.5.6-api-v6-models.b3abc9b.0 → 7.0.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 (607) hide show
  1. package/README.md +3 -0
  2. package/kinesis/package.json +7 -0
  3. package/kinesis-firehose/package.json +7 -0
  4. package/lib/apis/disable.d.ts +8 -0
  5. package/lib/apis/disable.js +14 -0
  6. package/lib/apis/enable.d.ts +7 -0
  7. package/lib/apis/enable.js +13 -0
  8. package/lib/apis/index.d.ts +2 -0
  9. package/lib/apis/index.js +9 -0
  10. package/lib/errors/AnalyticsError.d.ts +7 -0
  11. package/lib/errors/AnalyticsError.js +19 -0
  12. package/lib/errors/assertValidationError.d.ts +5 -0
  13. package/lib/errors/assertValidationError.js +21 -0
  14. package/lib/errors/index.d.ts +3 -0
  15. package/lib/errors/index.js +12 -0
  16. package/lib/errors/validation.d.ts +12 -0
  17. package/lib/errors/validation.js +42 -0
  18. package/lib/index.d.ts +3 -3
  19. package/lib/index.js +11 -8
  20. package/lib/providers/kinesis/apis/flushEvents.d.ts +8 -0
  21. package/lib/providers/kinesis/apis/flushEvents.js +35 -0
  22. package/lib/providers/kinesis/apis/index.d.ts +2 -0
  23. package/lib/providers/kinesis/apis/index.js +9 -0
  24. package/lib/providers/kinesis/apis/record.d.ts +2 -0
  25. package/lib/providers/kinesis/apis/record.js +46 -0
  26. package/lib/providers/kinesis/index.d.ts +1 -0
  27. package/lib/providers/kinesis/index.js +8 -0
  28. package/lib/providers/kinesis/types/buffer.d.ts +15 -0
  29. package/lib/providers/kinesis/types/buffer.js +4 -0
  30. package/lib/providers/kinesis/types/index.d.ts +2 -0
  31. package/lib/providers/kinesis/types/index.js +4 -0
  32. package/lib/providers/kinesis/types/inputs.d.ts +6 -0
  33. package/lib/providers/kinesis/types/inputs.js +4 -0
  34. package/lib/providers/kinesis/utils/constants.d.ts +6 -0
  35. package/lib/{utils/AppUtils.js → providers/kinesis/utils/constants.js} +7 -5
  36. package/lib/providers/kinesis/utils/getEventBuffer.d.ts +3 -0
  37. package/lib/providers/kinesis/utils/getEventBuffer.js +72 -0
  38. package/lib/providers/kinesis/utils/resolveConfig.d.ts +7 -0
  39. package/lib/providers/kinesis/utils/resolveConfig.js +25 -0
  40. package/lib/providers/kinesis-firehose/apis/flushEvents.d.ts +8 -0
  41. package/lib/providers/kinesis-firehose/apis/flushEvents.js +34 -0
  42. package/lib/providers/kinesis-firehose/apis/index.d.ts +2 -0
  43. package/lib/providers/kinesis-firehose/apis/index.js +9 -0
  44. package/lib/providers/kinesis-firehose/apis/record.d.ts +2 -0
  45. package/lib/providers/kinesis-firehose/apis/record.js +43 -0
  46. package/lib/providers/kinesis-firehose/index.d.ts +1 -0
  47. package/lib/providers/kinesis-firehose/index.js +8 -0
  48. package/lib/providers/kinesis-firehose/types/buffer.d.ts +15 -0
  49. package/lib/{types/Provider.js → providers/kinesis-firehose/types/buffer.js} +0 -1
  50. package/lib/providers/kinesis-firehose/types/index.d.ts +2 -0
  51. package/lib/providers/kinesis-firehose/types/index.js +4 -0
  52. package/lib/providers/kinesis-firehose/types/inputs.d.ts +5 -0
  53. package/lib/providers/kinesis-firehose/types/inputs.js +4 -0
  54. package/lib/providers/kinesis-firehose/utils/constants.d.ts +6 -0
  55. package/lib/providers/kinesis-firehose/utils/constants.js +11 -0
  56. package/lib/providers/kinesis-firehose/utils/getEventBuffer.d.ts +3 -0
  57. package/lib/providers/kinesis-firehose/utils/getEventBuffer.js +71 -0
  58. package/lib/providers/kinesis-firehose/utils/index.d.ts +2 -0
  59. package/lib/providers/kinesis-firehose/utils/index.js +9 -0
  60. package/lib/providers/kinesis-firehose/utils/resolveConfig.d.ts +7 -0
  61. package/lib/providers/kinesis-firehose/utils/resolveConfig.js +25 -0
  62. package/lib/providers/personalize/apis/flushEvents.d.ts +8 -0
  63. package/lib/providers/personalize/apis/flushEvents.js +33 -0
  64. package/lib/providers/personalize/apis/index.d.ts +2 -0
  65. package/lib/providers/personalize/apis/index.js +9 -0
  66. package/lib/providers/personalize/apis/record.d.ts +2 -0
  67. package/lib/providers/personalize/apis/record.js +71 -0
  68. package/lib/providers/personalize/index.d.ts +1 -0
  69. package/lib/providers/personalize/index.js +8 -0
  70. package/lib/providers/personalize/types/buffer.d.ts +16 -0
  71. package/lib/providers/personalize/types/buffer.js +4 -0
  72. package/lib/providers/personalize/types/index.d.ts +2 -0
  73. package/lib/providers/personalize/types/index.js +4 -0
  74. package/lib/providers/personalize/types/inputs.d.ts +7 -0
  75. package/lib/providers/personalize/types/inputs.js +4 -0
  76. package/lib/providers/personalize/utils/autoTrackMedia.d.ts +10 -0
  77. package/lib/providers/personalize/utils/autoTrackMedia.js +181 -0
  78. package/lib/providers/personalize/utils/cachedSession.d.ts +5 -0
  79. package/lib/providers/personalize/utils/cachedSession.js +49 -0
  80. package/lib/providers/personalize/utils/constants.d.ts +7 -0
  81. package/lib/providers/personalize/utils/constants.js +12 -0
  82. package/lib/providers/personalize/utils/getEventBuffer.d.ts +3 -0
  83. package/lib/providers/personalize/utils/getEventBuffer.js +73 -0
  84. package/lib/providers/personalize/utils/index.d.ts +5 -0
  85. package/lib/providers/personalize/utils/index.js +17 -0
  86. package/lib/providers/personalize/utils/resolveConfig.d.ts +7 -0
  87. package/lib/providers/personalize/utils/resolveConfig.js +26 -0
  88. package/lib/providers/pinpoint/apis/configureAutoTrack.d.ts +15 -0
  89. package/lib/providers/pinpoint/apis/configureAutoTrack.js +35 -0
  90. package/lib/providers/pinpoint/apis/flushEvents.d.ts +8 -0
  91. package/lib/providers/pinpoint/apis/flushEvents.js +25 -0
  92. package/lib/providers/pinpoint/apis/identifyUser.d.ts +47 -0
  93. package/lib/providers/pinpoint/apis/identifyUser.js +71 -0
  94. package/lib/providers/pinpoint/apis/index.d.ts +4 -0
  95. package/lib/providers/pinpoint/apis/index.js +13 -0
  96. package/lib/providers/pinpoint/apis/record.d.ts +30 -0
  97. package/lib/providers/pinpoint/apis/record.js +66 -0
  98. package/lib/providers/pinpoint/index.d.ts +2 -0
  99. package/lib/providers/pinpoint/index.js +10 -0
  100. package/lib/providers/pinpoint/types/index.d.ts +2 -0
  101. package/lib/providers/pinpoint/types/index.js +4 -0
  102. package/lib/providers/pinpoint/types/inputs.d.ts +15 -0
  103. package/lib/providers/pinpoint/types/inputs.js +4 -0
  104. package/lib/providers/pinpoint/types/options.d.ts +5 -0
  105. package/lib/providers/pinpoint/types/options.js +4 -0
  106. package/lib/providers/pinpoint/utils/index.d.ts +2 -0
  107. package/lib/providers/pinpoint/utils/index.js +9 -0
  108. package/lib/providers/pinpoint/utils/resolveConfig.d.ts +7 -0
  109. package/lib/providers/pinpoint/utils/resolveConfig.js +17 -0
  110. package/lib/providers/pinpoint/utils/resolveCredentials.d.ts +7 -0
  111. package/lib/providers/pinpoint/utils/resolveCredentials.js +16 -0
  112. package/lib/setupTests.js +2 -2
  113. package/lib/trackers/EventTracker.d.ts +9 -8
  114. package/lib/trackers/EventTracker.js +87 -88
  115. package/lib/trackers/PageViewTracker.d.ts +17 -11
  116. package/lib/trackers/PageViewTracker.js +98 -144
  117. package/lib/trackers/SessionTracker.d.ts +12 -13
  118. package/lib/trackers/SessionTracker.js +54 -150
  119. package/lib/trackers/SessionTracker.native.d.ts +13 -0
  120. package/lib/trackers/SessionTracker.native.js +67 -0
  121. package/lib/trackers/index.d.ts +1 -1
  122. package/lib/trackers/index.js +6 -6
  123. package/lib/tsconfig.tsbuildinfo +1 -0
  124. package/lib/types/index.d.ts +3 -3
  125. package/lib/types/index.js +0 -1
  126. package/lib/types/inputs.d.ts +35 -0
  127. package/lib/types/inputs.js +4 -0
  128. package/lib/types/kinesis.d.ts +8 -0
  129. package/lib/types/kinesis.js +4 -0
  130. package/lib/types/options.d.ts +4 -0
  131. package/lib/types/options.js +4 -0
  132. package/lib/types/trackers.d.ts +22 -0
  133. package/lib/types/trackers.js +4 -0
  134. package/lib/utils/eventBuffer/EventBuffer.d.ts +16 -0
  135. package/lib/utils/eventBuffer/EventBuffer.js +63 -0
  136. package/lib/utils/eventBuffer/index.d.ts +2 -0
  137. package/lib/utils/eventBuffer/index.js +7 -0
  138. package/lib/utils/eventBuffer/types.d.ts +8 -0
  139. package/lib/utils/eventBuffer/types.js +4 -0
  140. package/lib/utils/groupBy.d.ts +1 -0
  141. package/lib/utils/groupBy.js +12 -0
  142. package/lib/utils/index.d.ts +7 -0
  143. package/lib/utils/index.js +22 -0
  144. package/lib/utils/resolveCredentials.d.ts +4 -0
  145. package/lib/utils/resolveCredentials.js +13 -0
  146. package/lib/utils/statusHelpers.d.ts +6 -0
  147. package/lib/utils/statusHelpers.js +19 -0
  148. package/lib/utils/trackerConfigHelpers.d.ts +5 -0
  149. package/lib/utils/trackerConfigHelpers.js +15 -0
  150. package/lib/utils/trackerConfigHelpers.native.d.ts +5 -0
  151. package/lib/utils/trackerConfigHelpers.native.js +14 -0
  152. package/lib/utils/trackerHelpers.d.ts +9 -0
  153. package/lib/utils/trackerHelpers.js +44 -0
  154. package/lib/utils/{UserAgent.d.ts → userAgent.d.ts} +1 -1
  155. package/lib/utils/{UserAgent.js → userAgent.js} +8 -8
  156. package/lib-esm/apis/disable.d.ts +8 -0
  157. package/lib-esm/apis/disable.js +11 -0
  158. package/lib-esm/apis/enable.d.ts +7 -0
  159. package/lib-esm/apis/enable.js +10 -0
  160. package/lib-esm/apis/index.d.ts +2 -0
  161. package/lib-esm/apis/index.js +4 -0
  162. package/lib-esm/errors/AnalyticsError.d.ts +7 -0
  163. package/lib-esm/errors/AnalyticsError.js +15 -0
  164. package/lib-esm/errors/assertValidationError.d.ts +5 -0
  165. package/lib-esm/errors/assertValidationError.js +17 -0
  166. package/lib-esm/errors/index.d.ts +3 -0
  167. package/lib-esm/errors/index.js +5 -0
  168. package/lib-esm/errors/validation.d.ts +12 -0
  169. package/lib-esm/errors/validation.js +39 -0
  170. package/lib-esm/index.d.ts +3 -3
  171. package/lib-esm/index.js +3 -3
  172. package/lib-esm/providers/kinesis/apis/flushEvents.d.ts +8 -0
  173. package/lib-esm/providers/kinesis/apis/flushEvents.js +31 -0
  174. package/lib-esm/providers/kinesis/apis/index.d.ts +2 -0
  175. package/lib-esm/providers/kinesis/apis/index.js +4 -0
  176. package/lib-esm/providers/kinesis/apis/record.d.ts +2 -0
  177. package/lib-esm/providers/kinesis/apis/record.js +42 -0
  178. package/lib-esm/providers/kinesis/index.d.ts +1 -0
  179. package/lib-esm/providers/kinesis/index.js +3 -0
  180. package/lib-esm/providers/kinesis/types/buffer.d.ts +15 -0
  181. package/lib-esm/providers/kinesis/types/buffer.js +3 -0
  182. package/lib-esm/providers/kinesis/types/index.d.ts +2 -0
  183. package/lib-esm/providers/kinesis/types/index.js +3 -0
  184. package/lib-esm/providers/kinesis/types/inputs.d.ts +6 -0
  185. package/lib-esm/providers/kinesis/types/inputs.js +3 -0
  186. package/lib-esm/providers/kinesis/utils/constants.d.ts +6 -0
  187. package/lib-esm/providers/kinesis/utils/constants.js +8 -0
  188. package/lib-esm/providers/kinesis/utils/getEventBuffer.d.ts +3 -0
  189. package/lib-esm/providers/kinesis/utils/getEventBuffer.js +68 -0
  190. package/lib-esm/providers/kinesis/utils/resolveConfig.d.ts +7 -0
  191. package/lib-esm/providers/kinesis/utils/resolveConfig.js +21 -0
  192. package/lib-esm/providers/kinesis-firehose/apis/flushEvents.d.ts +8 -0
  193. package/lib-esm/providers/kinesis-firehose/apis/flushEvents.js +30 -0
  194. package/lib-esm/providers/kinesis-firehose/apis/index.d.ts +2 -0
  195. package/lib-esm/providers/kinesis-firehose/apis/index.js +4 -0
  196. package/lib-esm/providers/kinesis-firehose/apis/record.d.ts +2 -0
  197. package/lib-esm/providers/kinesis-firehose/apis/record.js +39 -0
  198. package/lib-esm/providers/kinesis-firehose/index.d.ts +1 -0
  199. package/lib-esm/providers/kinesis-firehose/index.js +3 -0
  200. package/lib-esm/providers/kinesis-firehose/types/buffer.d.ts +15 -0
  201. package/lib-esm/{types/Provider.js → providers/kinesis-firehose/types/buffer.js} +1 -1
  202. package/lib-esm/providers/kinesis-firehose/types/index.d.ts +2 -0
  203. package/{src/types/Providers/index.ts → lib-esm/providers/kinesis-firehose/types/index.js} +1 -1
  204. package/lib-esm/providers/kinesis-firehose/types/inputs.d.ts +5 -0
  205. package/lib-esm/providers/kinesis-firehose/types/inputs.js +3 -0
  206. package/lib-esm/providers/kinesis-firehose/utils/constants.d.ts +6 -0
  207. package/lib-esm/providers/kinesis-firehose/utils/constants.js +8 -0
  208. package/lib-esm/providers/kinesis-firehose/utils/getEventBuffer.d.ts +3 -0
  209. package/lib-esm/providers/kinesis-firehose/utils/getEventBuffer.js +67 -0
  210. package/lib-esm/providers/kinesis-firehose/utils/index.d.ts +2 -0
  211. package/lib-esm/providers/kinesis-firehose/utils/index.js +4 -0
  212. package/lib-esm/providers/kinesis-firehose/utils/resolveConfig.d.ts +7 -0
  213. package/lib-esm/providers/kinesis-firehose/utils/resolveConfig.js +21 -0
  214. package/lib-esm/providers/personalize/apis/flushEvents.d.ts +8 -0
  215. package/lib-esm/providers/personalize/apis/flushEvents.js +29 -0
  216. package/lib-esm/providers/personalize/apis/index.d.ts +2 -0
  217. package/lib-esm/providers/personalize/apis/index.js +4 -0
  218. package/lib-esm/providers/personalize/apis/record.d.ts +2 -0
  219. package/lib-esm/providers/personalize/apis/record.js +67 -0
  220. package/lib-esm/providers/personalize/index.d.ts +1 -0
  221. package/lib-esm/providers/personalize/index.js +3 -0
  222. package/lib-esm/providers/personalize/types/buffer.d.ts +16 -0
  223. package/lib-esm/providers/personalize/types/buffer.js +3 -0
  224. package/lib-esm/providers/personalize/types/index.d.ts +2 -0
  225. package/lib-esm/providers/personalize/types/index.js +3 -0
  226. package/lib-esm/providers/personalize/types/inputs.d.ts +7 -0
  227. package/lib-esm/providers/personalize/types/inputs.js +3 -0
  228. package/lib-esm/providers/personalize/utils/autoTrackMedia.d.ts +10 -0
  229. package/lib-esm/providers/personalize/utils/autoTrackMedia.js +177 -0
  230. package/lib-esm/providers/personalize/utils/cachedSession.d.ts +5 -0
  231. package/lib-esm/providers/personalize/utils/cachedSession.js +44 -0
  232. package/lib-esm/providers/personalize/utils/constants.d.ts +7 -0
  233. package/lib-esm/providers/personalize/utils/constants.js +9 -0
  234. package/lib-esm/providers/personalize/utils/getEventBuffer.d.ts +3 -0
  235. package/lib-esm/providers/personalize/utils/getEventBuffer.js +69 -0
  236. package/lib-esm/providers/personalize/utils/index.d.ts +5 -0
  237. package/lib-esm/providers/personalize/utils/index.js +7 -0
  238. package/lib-esm/providers/personalize/utils/resolveConfig.d.ts +7 -0
  239. package/lib-esm/providers/personalize/utils/resolveConfig.js +22 -0
  240. package/lib-esm/providers/pinpoint/apis/configureAutoTrack.d.ts +15 -0
  241. package/lib-esm/providers/pinpoint/apis/configureAutoTrack.js +31 -0
  242. package/lib-esm/providers/pinpoint/apis/flushEvents.d.ts +8 -0
  243. package/lib-esm/providers/pinpoint/apis/flushEvents.js +21 -0
  244. package/lib-esm/providers/pinpoint/apis/identifyUser.d.ts +47 -0
  245. package/lib-esm/providers/pinpoint/apis/identifyUser.js +67 -0
  246. package/lib-esm/providers/pinpoint/apis/index.d.ts +4 -0
  247. package/lib-esm/providers/pinpoint/apis/index.js +6 -0
  248. package/lib-esm/providers/pinpoint/apis/record.d.ts +30 -0
  249. package/lib-esm/providers/pinpoint/apis/record.js +62 -0
  250. package/lib-esm/providers/pinpoint/index.d.ts +2 -0
  251. package/lib-esm/providers/pinpoint/index.js +3 -0
  252. package/lib-esm/providers/pinpoint/types/index.d.ts +2 -0
  253. package/lib-esm/providers/pinpoint/types/index.js +3 -0
  254. package/lib-esm/providers/pinpoint/types/inputs.d.ts +15 -0
  255. package/lib-esm/providers/pinpoint/types/inputs.js +3 -0
  256. package/lib-esm/providers/pinpoint/types/options.d.ts +5 -0
  257. package/lib-esm/providers/pinpoint/types/options.js +3 -0
  258. package/lib-esm/providers/pinpoint/utils/index.d.ts +2 -0
  259. package/lib-esm/providers/pinpoint/utils/index.js +4 -0
  260. package/lib-esm/providers/pinpoint/utils/resolveConfig.d.ts +7 -0
  261. package/lib-esm/providers/pinpoint/utils/resolveConfig.js +13 -0
  262. package/lib-esm/providers/pinpoint/utils/resolveCredentials.d.ts +7 -0
  263. package/lib-esm/providers/pinpoint/utils/resolveCredentials.js +12 -0
  264. package/lib-esm/setupTests.js +2 -2
  265. package/lib-esm/trackers/EventTracker.d.ts +9 -8
  266. package/lib-esm/trackers/EventTracker.js +86 -89
  267. package/lib-esm/trackers/PageViewTracker.d.ts +17 -11
  268. package/lib-esm/trackers/PageViewTracker.js +97 -145
  269. package/lib-esm/trackers/SessionTracker.d.ts +12 -13
  270. package/lib-esm/trackers/SessionTracker.js +53 -151
  271. package/lib-esm/trackers/SessionTracker.native.d.ts +13 -0
  272. package/lib-esm/trackers/SessionTracker.native.js +63 -0
  273. package/lib-esm/trackers/index.d.ts +1 -1
  274. package/lib-esm/trackers/index.js +1 -2
  275. package/lib-esm/tsconfig.tsbuildinfo +1 -0
  276. package/lib-esm/types/index.d.ts +3 -3
  277. package/lib-esm/types/index.js +1 -1
  278. package/lib-esm/types/inputs.d.ts +35 -0
  279. package/lib-esm/types/inputs.js +3 -0
  280. package/lib-esm/types/kinesis.d.ts +8 -0
  281. package/lib-esm/types/kinesis.js +3 -0
  282. package/lib-esm/types/options.d.ts +4 -0
  283. package/lib-esm/types/options.js +3 -0
  284. package/lib-esm/types/trackers.d.ts +22 -0
  285. package/lib-esm/types/trackers.js +3 -0
  286. package/lib-esm/utils/eventBuffer/EventBuffer.d.ts +16 -0
  287. package/lib-esm/utils/eventBuffer/EventBuffer.js +59 -0
  288. package/lib-esm/utils/eventBuffer/index.d.ts +2 -0
  289. package/lib-esm/utils/eventBuffer/index.js +3 -0
  290. package/lib-esm/utils/eventBuffer/types.d.ts +8 -0
  291. package/lib-esm/utils/eventBuffer/types.js +3 -0
  292. package/lib-esm/utils/groupBy.d.ts +1 -0
  293. package/lib-esm/utils/groupBy.js +8 -0
  294. package/lib-esm/utils/index.d.ts +7 -0
  295. package/lib-esm/utils/index.js +9 -0
  296. package/lib-esm/utils/resolveCredentials.d.ts +4 -0
  297. package/lib-esm/utils/resolveCredentials.js +9 -0
  298. package/lib-esm/utils/statusHelpers.d.ts +6 -0
  299. package/lib-esm/utils/statusHelpers.js +13 -0
  300. package/lib-esm/utils/trackerConfigHelpers.d.ts +5 -0
  301. package/lib-esm/utils/trackerConfigHelpers.js +11 -0
  302. package/lib-esm/utils/trackerConfigHelpers.native.d.ts +5 -0
  303. package/lib-esm/utils/trackerConfigHelpers.native.js +10 -0
  304. package/lib-esm/utils/trackerHelpers.d.ts +9 -0
  305. package/lib-esm/utils/trackerHelpers.js +40 -0
  306. package/lib-esm/utils/{UserAgent.d.ts → userAgent.d.ts} +1 -1
  307. package/lib-esm/utils/{UserAgent.js → userAgent.js} +3 -4
  308. package/package.json +74 -49
  309. package/personalize/package.json +7 -0
  310. package/pinpoint/package.json +7 -0
  311. package/src/apis/disable.ts +13 -0
  312. package/src/apis/enable.ts +12 -0
  313. package/src/{utils/AppUtils.ts → apis/index.ts} +2 -4
  314. package/src/errors/AnalyticsError.ts +21 -0
  315. package/src/errors/assertValidationError.ts +25 -0
  316. package/src/errors/index.ts +6 -0
  317. package/src/errors/validation.ts +43 -0
  318. package/src/index.ts +10 -7
  319. package/src/providers/kinesis/apis/flushEvents.ts +40 -0
  320. package/src/providers/kinesis/apis/index.ts +5 -0
  321. package/src/providers/kinesis/apis/record.ts +58 -0
  322. package/src/providers/kinesis/index.ts +4 -0
  323. package/src/providers/kinesis/types/buffer.ts +20 -0
  324. package/src/providers/kinesis/types/index.ts +5 -0
  325. package/src/{types/Providers/AWSKinesisProvider.ts → providers/kinesis/types/inputs.ts} +7 -5
  326. package/src/providers/kinesis/utils/constants.ts +9 -0
  327. package/src/providers/kinesis/utils/getEventBuffer.ts +109 -0
  328. package/src/providers/kinesis/utils/resolveConfig.ts +36 -0
  329. package/src/providers/kinesis-firehose/apis/flushEvents.ts +39 -0
  330. package/src/providers/kinesis-firehose/apis/index.ts +5 -0
  331. package/src/providers/kinesis-firehose/apis/record.ts +51 -0
  332. package/src/providers/kinesis-firehose/index.ts +4 -0
  333. package/src/providers/kinesis-firehose/types/buffer.ts +20 -0
  334. package/src/providers/kinesis-firehose/types/index.ts +9 -0
  335. package/src/providers/kinesis-firehose/types/inputs.ts +9 -0
  336. package/src/providers/kinesis-firehose/utils/constants.ts +9 -0
  337. package/src/providers/kinesis-firehose/utils/getEventBuffer.ts +117 -0
  338. package/src/providers/kinesis-firehose/utils/index.ts +5 -0
  339. package/src/providers/kinesis-firehose/utils/resolveConfig.ts +36 -0
  340. package/src/providers/personalize/apis/flushEvents.ts +37 -0
  341. package/src/providers/personalize/apis/index.ts +5 -0
  342. package/src/providers/personalize/apis/record.ts +102 -0
  343. package/src/providers/personalize/index.ts +4 -0
  344. package/src/providers/personalize/types/buffer.ts +21 -0
  345. package/src/providers/personalize/types/index.ts +5 -0
  346. package/src/providers/personalize/types/inputs.ts +11 -0
  347. package/src/providers/personalize/utils/autoTrackMedia.ts +232 -0
  348. package/src/providers/personalize/utils/cachedSession.ts +68 -0
  349. package/src/providers/personalize/utils/constants.ts +12 -0
  350. package/src/providers/personalize/utils/getEventBuffer.ts +110 -0
  351. package/src/providers/personalize/utils/index.ts +11 -0
  352. package/src/providers/personalize/utils/resolveConfig.ts +41 -0
  353. package/src/providers/pinpoint/apis/configureAutoTrack.ts +49 -0
  354. package/src/providers/pinpoint/apis/flushEvents.ts +32 -0
  355. package/src/providers/pinpoint/apis/identifyUser.ts +78 -0
  356. package/src/providers/pinpoint/apis/index.ts +7 -0
  357. package/src/providers/pinpoint/apis/record.ts +83 -0
  358. package/src/providers/pinpoint/index.ts +9 -0
  359. package/src/providers/pinpoint/types/index.ts +9 -0
  360. package/src/providers/pinpoint/types/inputs.ts +24 -0
  361. package/src/providers/pinpoint/types/options.ts +12 -0
  362. package/src/providers/pinpoint/utils/index.ts +5 -0
  363. package/src/providers/pinpoint/utils/resolveConfig.ts +18 -0
  364. package/src/providers/pinpoint/utils/resolveCredentials.ts +20 -0
  365. package/src/trackers/EventTracker.ts +119 -99
  366. package/src/trackers/PageViewTracker.ts +131 -128
  367. package/src/trackers/SessionTracker.native.ts +105 -0
  368. package/src/trackers/SessionTracker.ts +80 -154
  369. package/src/trackers/index.ts +2 -1
  370. package/src/types/index.ts +8 -3
  371. package/src/types/inputs.ts +52 -0
  372. package/src/types/kinesis.ts +13 -0
  373. package/src/types/options.ts +7 -0
  374. package/src/types/trackers.ts +35 -0
  375. package/src/utils/eventBuffer/EventBuffer.ts +84 -0
  376. package/src/utils/eventBuffer/index.ts +5 -0
  377. package/src/utils/eventBuffer/types.ts +12 -0
  378. package/src/utils/groupBy.ts +12 -0
  379. package/src/utils/index.ts +21 -0
  380. package/src/utils/resolveCredentials.ts +14 -0
  381. package/src/utils/statusHelpers.ts +17 -0
  382. package/src/utils/trackerConfigHelpers.native.ts +18 -0
  383. package/src/utils/trackerConfigHelpers.ts +19 -0
  384. package/src/utils/trackerHelpers.ts +57 -0
  385. package/src/utils/{UserAgent.ts → userAgent.ts} +1 -1
  386. package/lib/.tsbuildinfo +0 -3
  387. package/lib/Analytics.d.ts +0 -87
  388. package/lib/Analytics.js +0 -354
  389. package/lib/Analytics.js.map +0 -1
  390. package/lib/Providers/AWSKinesisFirehoseProvider.d.ts +0 -12
  391. package/lib/Providers/AWSKinesisFirehoseProvider.js +0 -82
  392. package/lib/Providers/AWSKinesisFirehoseProvider.js.map +0 -1
  393. package/lib/Providers/AWSKinesisProvider.d.ts +0 -43
  394. package/lib/Providers/AWSKinesisProvider.js +0 -240
  395. package/lib/Providers/AWSKinesisProvider.js.map +0 -1
  396. package/lib/Providers/AWSPinpointProvider.d.ts +0 -67
  397. package/lib/Providers/AWSPinpointProvider.js +0 -576
  398. package/lib/Providers/AWSPinpointProvider.js.map +0 -1
  399. package/lib/Providers/AmazonPersonalizeHelper/DataType.d.ts +0 -40
  400. package/lib/Providers/AmazonPersonalizeHelper/DataType.js +0 -3
  401. package/lib/Providers/AmazonPersonalizeHelper/DataType.js.map +0 -1
  402. package/lib/Providers/AmazonPersonalizeHelper/MediaAutoTrack.d.ts +0 -20
  403. package/lib/Providers/AmazonPersonalizeHelper/MediaAutoTrack.js +0 -156
  404. package/lib/Providers/AmazonPersonalizeHelper/MediaAutoTrack.js.map +0 -1
  405. package/lib/Providers/AmazonPersonalizeHelper/SessionInfoManager.d.ts +0 -17
  406. package/lib/Providers/AmazonPersonalizeHelper/SessionInfoManager.js +0 -97
  407. package/lib/Providers/AmazonPersonalizeHelper/SessionInfoManager.js.map +0 -1
  408. package/lib/Providers/AmazonPersonalizeHelper/index.d.ts +0 -3
  409. package/lib/Providers/AmazonPersonalizeHelper/index.js +0 -7
  410. package/lib/Providers/AmazonPersonalizeHelper/index.js.map +0 -1
  411. package/lib/Providers/AmazonPersonalizeProvider.d.ts +0 -76
  412. package/lib/Providers/AmazonPersonalizeProvider.js +0 -331
  413. package/lib/Providers/AmazonPersonalizeProvider.js.map +0 -1
  414. package/lib/Providers/EventBuffer.d.ts +0 -28
  415. package/lib/Providers/EventBuffer.js +0 -210
  416. package/lib/Providers/EventBuffer.js.map +0 -1
  417. package/lib/Providers/index.d.ts +0 -4
  418. package/lib/Providers/index.js +0 -13
  419. package/lib/Providers/index.js.map +0 -1
  420. package/lib/index.js.map +0 -1
  421. package/lib/setupTests.js.map +0 -1
  422. package/lib/trackers/EventTracker.js.map +0 -1
  423. package/lib/trackers/PageViewTracker.js.map +0 -1
  424. package/lib/trackers/SessionTracker-rn.d.ts +0 -12
  425. package/lib/trackers/SessionTracker-rn.js +0 -134
  426. package/lib/trackers/SessionTracker-rn.js.map +0 -1
  427. package/lib/trackers/SessionTracker.js.map +0 -1
  428. package/lib/trackers/index.js.map +0 -1
  429. package/lib/trackers/reactnative.d.ts +0 -8
  430. package/lib/trackers/reactnative.js +0 -19
  431. package/lib/trackers/reactnative.js.map +0 -1
  432. package/lib/types/Analytics.d.ts +0 -66
  433. package/lib/types/Analytics.js +0 -3
  434. package/lib/types/Analytics.js.map +0 -1
  435. package/lib/types/Provider.d.ts +0 -10
  436. package/lib/types/Provider.js.map +0 -1
  437. package/lib/types/Providers/AWSKinesisProvider.d.ts +0 -6
  438. package/lib/types/Providers/AWSKinesisProvider.js +0 -3
  439. package/lib/types/Providers/AWSKinesisProvider.js.map +0 -1
  440. package/lib/types/Providers/AWSPinpointProvider.d.ts +0 -50
  441. package/lib/types/Providers/AWSPinpointProvider.js +0 -3
  442. package/lib/types/Providers/AWSPinpointProvider.js.map +0 -1
  443. package/lib/types/Providers/AmazonPersonalizeProvider.d.ts +0 -7
  444. package/lib/types/Providers/AmazonPersonalizeProvider.js +0 -3
  445. package/lib/types/Providers/AmazonPersonalizeProvider.js.map +0 -1
  446. package/lib/types/Providers/index.d.ts +0 -1
  447. package/lib/types/Providers/index.js +0 -3
  448. package/lib/types/Providers/index.js.map +0 -1
  449. package/lib/types/index.js.map +0 -1
  450. package/lib/utils/AppUtils.d.ts +0 -2
  451. package/lib/utils/AppUtils.js.map +0 -1
  452. package/lib/utils/AppUtils.native.d.ts +0 -2
  453. package/lib/utils/AppUtils.native.js +0 -10
  454. package/lib/utils/AppUtils.native.js.map +0 -1
  455. package/lib/utils/MethodEmbed.d.ts +0 -11
  456. package/lib/utils/MethodEmbed.js +0 -43
  457. package/lib/utils/MethodEmbed.js.map +0 -1
  458. package/lib/utils/UserAgent.js.map +0 -1
  459. package/lib/vendor/dom-utils/closest.d.ts +0 -12
  460. package/lib/vendor/dom-utils/closest.js +0 -27
  461. package/lib/vendor/dom-utils/closest.js.map +0 -1
  462. package/lib/vendor/dom-utils/delegate.d.ts +0 -18
  463. package/lib/vendor/dom-utils/delegate.js +0 -51
  464. package/lib/vendor/dom-utils/delegate.js.map +0 -1
  465. package/lib/vendor/dom-utils/dispatch.d.ts +0 -17
  466. package/lib/vendor/dom-utils/dispatch.js +0 -51
  467. package/lib/vendor/dom-utils/dispatch.js.map +0 -1
  468. package/lib/vendor/dom-utils/get-attributes.d.ts +0 -11
  469. package/lib/vendor/dom-utils/get-attributes.js +0 -28
  470. package/lib/vendor/dom-utils/get-attributes.js.map +0 -1
  471. package/lib/vendor/dom-utils/index.d.ts +0 -7
  472. package/lib/vendor/dom-utils/index.js +0 -17
  473. package/lib/vendor/dom-utils/index.js.map +0 -1
  474. package/lib/vendor/dom-utils/matches.d.ts +0 -11
  475. package/lib/vendor/dom-utils/matches.js +0 -69
  476. package/lib/vendor/dom-utils/matches.js.map +0 -1
  477. package/lib/vendor/dom-utils/parents.d.ts +0 -10
  478. package/lib/vendor/dom-utils/parents.js +0 -22
  479. package/lib/vendor/dom-utils/parents.js.map +0 -1
  480. package/lib/vendor/dom-utils/parse-url.d.ts +0 -9
  481. package/lib/vendor/dom-utils/parse-url.js +0 -59
  482. package/lib/vendor/dom-utils/parse-url.js.map +0 -1
  483. package/lib-esm/.tsbuildinfo +0 -3
  484. package/lib-esm/Analytics.d.ts +0 -87
  485. package/lib-esm/Analytics.js +0 -352
  486. package/lib-esm/Analytics.js.map +0 -1
  487. package/lib-esm/Providers/AWSKinesisFirehoseProvider.d.ts +0 -12
  488. package/lib-esm/Providers/AWSKinesisFirehoseProvider.js +0 -80
  489. package/lib-esm/Providers/AWSKinesisFirehoseProvider.js.map +0 -1
  490. package/lib-esm/Providers/AWSKinesisProvider.d.ts +0 -43
  491. package/lib-esm/Providers/AWSKinesisProvider.js +0 -238
  492. package/lib-esm/Providers/AWSKinesisProvider.js.map +0 -1
  493. package/lib-esm/Providers/AWSPinpointProvider.d.ts +0 -67
  494. package/lib-esm/Providers/AWSPinpointProvider.js +0 -574
  495. package/lib-esm/Providers/AWSPinpointProvider.js.map +0 -1
  496. package/lib-esm/Providers/AmazonPersonalizeHelper/DataType.d.ts +0 -40
  497. package/lib-esm/Providers/AmazonPersonalizeHelper/DataType.js +0 -1
  498. package/lib-esm/Providers/AmazonPersonalizeHelper/DataType.js.map +0 -1
  499. package/lib-esm/Providers/AmazonPersonalizeHelper/MediaAutoTrack.d.ts +0 -20
  500. package/lib-esm/Providers/AmazonPersonalizeHelper/MediaAutoTrack.js +0 -154
  501. package/lib-esm/Providers/AmazonPersonalizeHelper/MediaAutoTrack.js.map +0 -1
  502. package/lib-esm/Providers/AmazonPersonalizeHelper/SessionInfoManager.d.ts +0 -17
  503. package/lib-esm/Providers/AmazonPersonalizeHelper/SessionInfoManager.js +0 -94
  504. package/lib-esm/Providers/AmazonPersonalizeHelper/SessionInfoManager.js.map +0 -1
  505. package/lib-esm/Providers/AmazonPersonalizeHelper/index.d.ts +0 -3
  506. package/lib-esm/Providers/AmazonPersonalizeHelper/index.js +0 -3
  507. package/lib-esm/Providers/AmazonPersonalizeHelper/index.js.map +0 -1
  508. package/lib-esm/Providers/AmazonPersonalizeProvider.d.ts +0 -76
  509. package/lib-esm/Providers/AmazonPersonalizeProvider.js +0 -329
  510. package/lib-esm/Providers/AmazonPersonalizeProvider.js.map +0 -1
  511. package/lib-esm/Providers/EventBuffer.d.ts +0 -28
  512. package/lib-esm/Providers/EventBuffer.js +0 -208
  513. package/lib-esm/Providers/EventBuffer.js.map +0 -1
  514. package/lib-esm/Providers/index.d.ts +0 -4
  515. package/lib-esm/Providers/index.js +0 -7
  516. package/lib-esm/Providers/index.js.map +0 -1
  517. package/lib-esm/index.js.map +0 -1
  518. package/lib-esm/setupTests.js.map +0 -1
  519. package/lib-esm/trackers/EventTracker.js.map +0 -1
  520. package/lib-esm/trackers/PageViewTracker.js.map +0 -1
  521. package/lib-esm/trackers/SessionTracker-rn.d.ts +0 -12
  522. package/lib-esm/trackers/SessionTracker-rn.js +0 -132
  523. package/lib-esm/trackers/SessionTracker-rn.js.map +0 -1
  524. package/lib-esm/trackers/SessionTracker.js.map +0 -1
  525. package/lib-esm/trackers/index.js.map +0 -1
  526. package/lib-esm/trackers/reactnative.d.ts +0 -8
  527. package/lib-esm/trackers/reactnative.js +0 -15
  528. package/lib-esm/trackers/reactnative.js.map +0 -1
  529. package/lib-esm/types/Analytics.d.ts +0 -66
  530. package/lib-esm/types/Analytics.js +0 -1
  531. package/lib-esm/types/Analytics.js.map +0 -1
  532. package/lib-esm/types/Provider.d.ts +0 -10
  533. package/lib-esm/types/Provider.js.map +0 -1
  534. package/lib-esm/types/Providers/AWSKinesisProvider.d.ts +0 -6
  535. package/lib-esm/types/Providers/AWSKinesisProvider.js +0 -1
  536. package/lib-esm/types/Providers/AWSKinesisProvider.js.map +0 -1
  537. package/lib-esm/types/Providers/AWSPinpointProvider.d.ts +0 -50
  538. package/lib-esm/types/Providers/AWSPinpointProvider.js +0 -1
  539. package/lib-esm/types/Providers/AWSPinpointProvider.js.map +0 -1
  540. package/lib-esm/types/Providers/AmazonPersonalizeProvider.d.ts +0 -7
  541. package/lib-esm/types/Providers/AmazonPersonalizeProvider.js +0 -1
  542. package/lib-esm/types/Providers/AmazonPersonalizeProvider.js.map +0 -1
  543. package/lib-esm/types/Providers/index.d.ts +0 -1
  544. package/lib-esm/types/Providers/index.js +0 -1
  545. package/lib-esm/types/Providers/index.js.map +0 -1
  546. package/lib-esm/types/index.js.map +0 -1
  547. package/lib-esm/utils/AppUtils.d.ts +0 -2
  548. package/lib-esm/utils/AppUtils.js +0 -7
  549. package/lib-esm/utils/AppUtils.js.map +0 -1
  550. package/lib-esm/utils/AppUtils.native.d.ts +0 -2
  551. package/lib-esm/utils/AppUtils.native.js +0 -8
  552. package/lib-esm/utils/AppUtils.native.js.map +0 -1
  553. package/lib-esm/utils/MethodEmbed.d.ts +0 -11
  554. package/lib-esm/utils/MethodEmbed.js +0 -41
  555. package/lib-esm/utils/MethodEmbed.js.map +0 -1
  556. package/lib-esm/utils/UserAgent.js.map +0 -1
  557. package/lib-esm/vendor/dom-utils/closest.d.ts +0 -12
  558. package/lib-esm/vendor/dom-utils/closest.js +0 -24
  559. package/lib-esm/vendor/dom-utils/closest.js.map +0 -1
  560. package/lib-esm/vendor/dom-utils/delegate.d.ts +0 -18
  561. package/lib-esm/vendor/dom-utils/delegate.js +0 -48
  562. package/lib-esm/vendor/dom-utils/delegate.js.map +0 -1
  563. package/lib-esm/vendor/dom-utils/dispatch.d.ts +0 -17
  564. package/lib-esm/vendor/dom-utils/dispatch.js +0 -48
  565. package/lib-esm/vendor/dom-utils/dispatch.js.map +0 -1
  566. package/lib-esm/vendor/dom-utils/get-attributes.d.ts +0 -11
  567. package/lib-esm/vendor/dom-utils/get-attributes.js +0 -25
  568. package/lib-esm/vendor/dom-utils/get-attributes.js.map +0 -1
  569. package/lib-esm/vendor/dom-utils/index.d.ts +0 -7
  570. package/lib-esm/vendor/dom-utils/index.js +0 -8
  571. package/lib-esm/vendor/dom-utils/index.js.map +0 -1
  572. package/lib-esm/vendor/dom-utils/matches.d.ts +0 -11
  573. package/lib-esm/vendor/dom-utils/matches.js +0 -66
  574. package/lib-esm/vendor/dom-utils/matches.js.map +0 -1
  575. package/lib-esm/vendor/dom-utils/parents.d.ts +0 -10
  576. package/lib-esm/vendor/dom-utils/parents.js +0 -19
  577. package/lib-esm/vendor/dom-utils/parents.js.map +0 -1
  578. package/lib-esm/vendor/dom-utils/parse-url.d.ts +0 -9
  579. package/lib-esm/vendor/dom-utils/parse-url.js +0 -56
  580. package/lib-esm/vendor/dom-utils/parse-url.js.map +0 -1
  581. package/src/Analytics.ts +0 -446
  582. package/src/Providers/AWSKinesisFirehoseProvider.ts +0 -105
  583. package/src/Providers/AWSKinesisProvider.ts +0 -250
  584. package/src/Providers/AWSPinpointProvider.ts +0 -685
  585. package/src/Providers/AmazonPersonalizeHelper/DataType.ts +0 -49
  586. package/src/Providers/AmazonPersonalizeHelper/MediaAutoTrack.ts +0 -196
  587. package/src/Providers/AmazonPersonalizeHelper/SessionInfoManager.ts +0 -122
  588. package/src/Providers/AmazonPersonalizeHelper/index.ts +0 -11
  589. package/src/Providers/AmazonPersonalizeProvider.ts +0 -398
  590. package/src/Providers/EventBuffer.ts +0 -257
  591. package/src/Providers/index.ts +0 -6
  592. package/src/trackers/SessionTracker-rn.ts +0 -134
  593. package/src/trackers/reactnative.ts +0 -13
  594. package/src/types/Analytics.ts +0 -87
  595. package/src/types/Provider.ts +0 -26
  596. package/src/types/Providers/AWSPinpointProvider.ts +0 -60
  597. package/src/types/Providers/AmazonPersonalizeProvider.ts +0 -9
  598. package/src/utils/AppUtils.native.ts +0 -9
  599. package/src/utils/MethodEmbed.ts +0 -49
  600. package/src/vendor/dom-utils/closest.ts +0 -25
  601. package/src/vendor/dom-utils/delegate.ts +0 -51
  602. package/src/vendor/dom-utils/dispatch.ts +0 -59
  603. package/src/vendor/dom-utils/get-attributes.ts +0 -26
  604. package/src/vendor/dom-utils/index.ts +0 -7
  605. package/src/vendor/dom-utils/matches.ts +0 -68
  606. package/src/vendor/dom-utils/parents.ts +0 -19
  607. package/src/vendor/dom-utils/parse-url.ts +0 -66
@@ -1,685 +0,0 @@
1
- // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
- // SPDX-License-Identifier: Apache-2.0
3
-
4
- import { Cache } from '@aws-amplify/cache';
5
- import {
6
- ConsoleLogger as Logger,
7
- ClientDevice,
8
- Credentials,
9
- Signer,
10
- Hub,
11
- transferKeyToLowerCase,
12
- transferKeyToUpperCase,
13
- AnalyticsAction,
14
- } from '@aws-amplify/core';
15
- import {
16
- putEvents,
17
- PutEventsInput,
18
- PutEventsOutput,
19
- updateEndpoint,
20
- UpdateEndpointInput,
21
- UpdateEndpointOutput,
22
- } from '@aws-amplify/core/internals/aws-clients/pinpoint';
23
-
24
- import {
25
- AnalyticsProvider,
26
- PromiseHandlers,
27
- EndpointBuffer,
28
- EventParams,
29
- EventObject,
30
- EndpointFailureData,
31
- } from '../types';
32
- import { v1 as uuid } from 'uuid';
33
- import { getAnalyticsUserAgentString } from '../utils/UserAgent';
34
- import EventBuffer from './EventBuffer';
35
-
36
- const AMPLIFY_SYMBOL = (
37
- typeof Symbol !== 'undefined' && typeof Symbol.for === 'function'
38
- ? Symbol.for('amplify_default')
39
- : '@@amplify_default'
40
- ) as Symbol;
41
-
42
- const dispatchAnalyticsEvent = (event, data) => {
43
- Hub.dispatch('analytics', { event, data }, 'Analytics', AMPLIFY_SYMBOL);
44
- };
45
-
46
- const logger = new Logger('AWSPinpointProvider');
47
- const RETRYABLE_CODES = [429, 500];
48
- const ACCEPTED_CODES = [202];
49
- const FORBIDDEN_CODE = 403;
50
- const MOBILE_SERVICE_NAME = 'mobiletargeting';
51
- const EXPIRED_TOKEN_CODE = 'ExpiredTokenException';
52
- const UPDATE_ENDPOINT = '_update_endpoint';
53
- const SESSION_START = '_session.start';
54
- const SESSION_STOP = '_session.stop';
55
-
56
- const BEACON_SUPPORTED =
57
- typeof navigator !== 'undefined' &&
58
- navigator &&
59
- typeof navigator.sendBeacon === 'function';
60
-
61
- // events buffer
62
- const BUFFER_SIZE = 1000;
63
- const FLUSH_SIZE = 100;
64
- const FLUSH_INTERVAL = 5 * 1000; // 5s
65
- const RESEND_LIMIT = 5;
66
-
67
- // params: { event: {name: , .... }, timeStamp, config, resendLimits }
68
- export class AWSPinpointProvider implements AnalyticsProvider {
69
- static category = 'Analytics';
70
- static providerName = 'AWSPinpoint';
71
-
72
- private _config;
73
- private _sessionId;
74
- private _sessionStartTimestamp;
75
- private _buffer: EventBuffer | null;
76
- private _endpointBuffer: EndpointBuffer;
77
- private _clientInfo;
78
- private _endpointGenerating = true;
79
- private _endpointUpdateInProgress = false;
80
-
81
- constructor(config?) {
82
- this._buffer = null;
83
- this._endpointBuffer = [];
84
- this._config = config ? config : {};
85
- this._config.bufferSize = this._config.bufferSize || BUFFER_SIZE;
86
- this._config.flushSize = this._config.flushSize || FLUSH_SIZE;
87
- this._config.flushInterval = this._config.flushInterval || FLUSH_INTERVAL;
88
- this._config.resendLimit = this._config.resendLimit || RESEND_LIMIT;
89
- this._clientInfo = ClientDevice.clientInfo();
90
- }
91
-
92
- /**
93
- * get the category of the plugin
94
- */
95
- getCategory(): string {
96
- return AWSPinpointProvider.category;
97
- }
98
-
99
- /**
100
- * get provider name of the plugin
101
- */
102
- getProviderName(): string {
103
- return AWSPinpointProvider.providerName;
104
- }
105
-
106
- /**
107
- * configure the plugin
108
- * @param {Object} config - configuration
109
- */
110
- public configure(config): object {
111
- logger.debug('configure Analytics', config);
112
- const conf = config || {};
113
- this._config = Object.assign({}, this._config, conf);
114
-
115
- // If autoSessionRecord is enabled, we need to wait for the endpoint to be
116
- // updated before sending any events. See `sendEvents` in `Analytics.ts`
117
- this._endpointGenerating = !!config['autoSessionRecord'];
118
-
119
- if (this._config.appId && !this._config.disabled) {
120
- if (!this._config.endpointId) {
121
- const cacheKey = this.getProviderName() + '_' + this._config.appId;
122
- this._getEndpointId(cacheKey)
123
- .then(endpointId => {
124
- logger.debug('setting endpoint id from the cache', endpointId);
125
- this._config.endpointId = endpointId;
126
- dispatchAnalyticsEvent('pinpointProvider_configured', null);
127
- })
128
- .catch(err => {
129
- logger.debug('Failed to generate endpointId', err);
130
- });
131
- } else {
132
- dispatchAnalyticsEvent('pinpointProvider_configured', null);
133
- }
134
- } else {
135
- this._flushBuffer();
136
- }
137
- return this._config;
138
- }
139
-
140
- /**
141
- * record an event
142
- * @param {Object} params - the params of an event
143
- */
144
- public async record(params: EventParams, handlers: PromiseHandlers) {
145
- logger.debug('_public record', params);
146
- const credentials = await this._getCredentials();
147
- if (!credentials || !this._config.appId || !this._config.region) {
148
- logger.debug(
149
- 'cannot send events without credentials, applicationId or region'
150
- );
151
- return handlers.reject(
152
- new Error('No credentials, applicationId or region')
153
- );
154
- }
155
-
156
- this._init(credentials);
157
-
158
- const timestamp = new Date().getTime();
159
- // attach the session and eventId
160
- this._generateSession(params);
161
- params.event.eventId = uuid();
162
-
163
- Object.assign(params, { timestamp, config: this._config });
164
-
165
- if (params.event.immediate) {
166
- return this._send(params, handlers);
167
- } else {
168
- this._putToBuffer(params, handlers);
169
- }
170
- }
171
-
172
- private async _sendEndpointUpdate(endpointObject: EventObject) {
173
- if (this._endpointUpdateInProgress) {
174
- this._endpointBuffer.push(endpointObject);
175
- return;
176
- }
177
-
178
- this._endpointUpdateInProgress = true;
179
- await this._updateEndpoint(endpointObject);
180
-
181
- const next = this._endpointBuffer.shift();
182
- this._endpointUpdateInProgress = false;
183
-
184
- next && this._sendEndpointUpdate(next);
185
- }
186
-
187
- /**
188
- * @private
189
- * @param params - params for event recording
190
- * Put events into buffer
191
- */
192
- private _putToBuffer(params, handlers) {
193
- if (params.event.name === UPDATE_ENDPOINT) {
194
- this._sendEndpointUpdate({ params, handlers });
195
- return;
196
- }
197
-
198
- this._buffer?.push({ params, handlers });
199
- }
200
-
201
- private _generateSession(params) {
202
- this._sessionId = this._sessionId || uuid();
203
- const { event } = params;
204
-
205
- switch (event.name) {
206
- case SESSION_START:
207
- // refresh the session id and session start time
208
- this._sessionStartTimestamp = new Date().getTime();
209
- this._sessionId = uuid();
210
- event.session = {
211
- Id: this._sessionId,
212
- StartTimestamp: new Date(this._sessionStartTimestamp).toISOString(),
213
- };
214
- break;
215
- case SESSION_STOP:
216
- const stopTimestamp = new Date().getTime();
217
- this._sessionStartTimestamp =
218
- this._sessionStartTimestamp || new Date().getTime();
219
- this._sessionId = this._sessionId || uuid();
220
- event.session = {
221
- Id: this._sessionId,
222
- Duration: stopTimestamp - this._sessionStartTimestamp,
223
- StartTimestamp: new Date(this._sessionStartTimestamp).toISOString(),
224
- StopTimestamp: new Date(stopTimestamp).toISOString(),
225
- };
226
- this._sessionId = undefined;
227
- this._sessionStartTimestamp = undefined;
228
- break;
229
- default:
230
- this._sessionStartTimestamp =
231
- this._sessionStartTimestamp || new Date().getTime();
232
- this._sessionId = this._sessionId || uuid();
233
- event.session = {
234
- Id: this._sessionId,
235
- StartTimestamp: new Date(this._sessionStartTimestamp).toISOString(),
236
- };
237
- }
238
- }
239
-
240
- private async _send(params, handlers) {
241
- const { event } = params;
242
-
243
- switch (event.name) {
244
- case UPDATE_ENDPOINT:
245
- return this._updateEndpoint({ params, handlers });
246
- case SESSION_STOP:
247
- return this._pinpointSendStopSession(params, handlers);
248
- default:
249
- return this._pinpointPutEvents(params, handlers);
250
- }
251
- }
252
-
253
- private _generateBatchItemContext(params): PutEventsInput {
254
- const { event, timestamp, config } = params;
255
- const { name, attributes, metrics, eventId, session } = event;
256
- const { appId, endpointId } = config;
257
- const endpointContext = {};
258
-
259
- return {
260
- ApplicationId: appId,
261
- EventsRequest: {
262
- BatchItem: {
263
- [endpointId]: {
264
- Endpoint: endpointContext,
265
- Events: {
266
- [eventId]: {
267
- EventType: name,
268
- Timestamp: new Date(timestamp).toISOString(),
269
- Attributes: attributes,
270
- Metrics: metrics,
271
- Session: session,
272
- },
273
- },
274
- },
275
- },
276
- },
277
- };
278
- }
279
-
280
- private async _pinpointPutEvents(params, handlers) {
281
- const {
282
- event: { eventId },
283
- config: { endpointId },
284
- } = params;
285
- const eventParams = this._generateBatchItemContext(params);
286
-
287
- try {
288
- const { credentials, region } = this._config;
289
- const data: PutEventsOutput = await putEvents(
290
- {
291
- credentials,
292
- region,
293
- userAgentValue: getAnalyticsUserAgentString(AnalyticsAction.Record),
294
- },
295
- eventParams
296
- );
297
-
298
- const { StatusCode, Message } =
299
- data.EventsResponse?.Results?.[endpointId]?.EventsItemResponse?.[
300
- eventId
301
- ] ?? {};
302
-
303
- if (StatusCode && ACCEPTED_CODES.includes(StatusCode)) {
304
- logger.debug('record event success. ', data);
305
- return handlers.resolve(data);
306
- } else if (StatusCode && RETRYABLE_CODES.includes(StatusCode)) {
307
- // TODO: v6 integrate retry to the service handler retryDecider
308
- this._retry(params, handlers);
309
- } else {
310
- logger.error(
311
- `Event ${eventId} is not accepted, the error is ${Message}`
312
- );
313
- return handlers.reject(data);
314
- }
315
- } catch (err) {
316
- this._eventError(err);
317
- return handlers.reject(err);
318
- }
319
- }
320
-
321
- private _pinpointSendStopSession(params, handlers): Promise<string> | void {
322
- if (!BEACON_SUPPORTED) {
323
- this._pinpointPutEvents(params, handlers);
324
- return;
325
- }
326
-
327
- const eventParams = this._generateBatchItemContext(params);
328
-
329
- const { region } = this._config;
330
- const { ApplicationId, EventsRequest } = eventParams;
331
-
332
- const accessInfo = {
333
- secret_key: this._config.credentials.secretAccessKey,
334
- access_key: this._config.credentials.accessKeyId,
335
- session_token: this._config.credentials.sessionToken,
336
- };
337
-
338
- const url = `https://pinpoint.${region}.amazonaws.com/v1/apps/${ApplicationId}/events/legacy`;
339
- const body = JSON.stringify(EventsRequest);
340
- const method = 'POST';
341
-
342
- const request = {
343
- url,
344
- body,
345
- method,
346
- };
347
-
348
- const serviceInfo = { region, service: MOBILE_SERVICE_NAME };
349
-
350
- const requestUrl: string = Signer.signUrl(request, accessInfo, serviceInfo);
351
-
352
- const success: boolean = navigator.sendBeacon(requestUrl, body);
353
-
354
- if (success) {
355
- return handlers.resolve('sendBeacon success');
356
- }
357
- return handlers.reject('sendBeacon failure');
358
- }
359
-
360
- private _retry(params, handlers) {
361
- const {
362
- config: { resendLimit },
363
- } = params;
364
- // For backward compatibility
365
- params.resendLimit =
366
- typeof params.resendLimit === 'number' ? params.resendLimit : resendLimit;
367
- if (params.resendLimit-- > 0) {
368
- logger.debug(
369
- `resending event ${params.eventName} with ${params.resendLimit} retry times left`
370
- );
371
- this._pinpointPutEvents(params, handlers);
372
- } else {
373
- logger.debug(`retry times used up for event ${params.eventName}`);
374
- }
375
- }
376
-
377
- private async _updateEndpoint(endpointObject: EventObject) {
378
- const { params, handlers } = endpointObject;
379
- const { config, event } = params;
380
- const { appId, endpointId } = config;
381
-
382
- const request = this._endpointRequest(
383
- config,
384
- transferKeyToLowerCase(
385
- event,
386
- [],
387
- ['attributes', 'userAttributes', 'Attributes', 'UserAttributes']
388
- )
389
- );
390
- const update_params: UpdateEndpointInput = {
391
- ApplicationId: appId,
392
- EndpointId: endpointId,
393
- EndpointRequest: request,
394
- };
395
-
396
- try {
397
- const { credentials, region } = this._config;
398
- const data: UpdateEndpointOutput = await updateEndpoint(
399
- {
400
- credentials,
401
- region,
402
- userAgentValue: getAnalyticsUserAgentString(
403
- AnalyticsAction.UpdateEndpoint
404
- ),
405
- },
406
- update_params
407
- );
408
- logger.debug('updateEndpoint success', data);
409
- this._endpointGenerating = false;
410
- this._resumeBuffer();
411
-
412
- handlers.resolve(data);
413
- return;
414
- } catch (err) {
415
- const failureData: EndpointFailureData = {
416
- err,
417
- update_params,
418
- endpointObject,
419
- };
420
-
421
- return this._handleEndpointUpdateFailure(failureData);
422
- }
423
- }
424
-
425
- private async _handleEndpointUpdateFailure(failureData: EndpointFailureData) {
426
- const { err, endpointObject } = failureData;
427
- const statusCode = err.$metadata && err.$metadata.httpStatusCode;
428
-
429
- logger.debug('updateEndpoint error', err);
430
-
431
- switch (statusCode) {
432
- case FORBIDDEN_CODE:
433
- return this._handleEndpointUpdateForbidden(failureData);
434
- default:
435
- if (RETRYABLE_CODES.includes(statusCode)) {
436
- // Server error. Attempt exponential retry
437
- const exponential = true;
438
- return this._retryEndpointUpdate(endpointObject, exponential);
439
- }
440
- logger.error('updateEndpoint failed', err);
441
- endpointObject.handlers.reject(err);
442
- }
443
- }
444
-
445
- private _handleEndpointUpdateForbidden(failureData: EndpointFailureData) {
446
- const { err, endpointObject } = failureData;
447
-
448
- const { code, retryable } = err;
449
-
450
- if (code !== EXPIRED_TOKEN_CODE && !retryable) {
451
- return endpointObject.handlers.reject(err);
452
- }
453
-
454
- this._retryEndpointUpdate(endpointObject);
455
- }
456
-
457
- private _retryEndpointUpdate(
458
- endpointObject: EventObject,
459
- exponential: boolean = false
460
- ) {
461
- logger.debug('_retryEndpointUpdate', endpointObject);
462
- const { params } = endpointObject;
463
-
464
- // TODO: implement retry with exp back off once exp function is available
465
- const {
466
- config: { resendLimit },
467
- } = params;
468
-
469
- params.resendLimit =
470
- typeof params.resendLimit === 'number' ? params.resendLimit : resendLimit;
471
-
472
- if (params.resendLimit-- > 0) {
473
- logger.debug(
474
- `resending endpoint update ${params.event.eventId} with ${params.resendLimit} retry attempts remaining`
475
- );
476
- // insert at the front of endpointBuffer
477
- this._endpointBuffer.length
478
- ? this._endpointBuffer.unshift(endpointObject)
479
- : this._updateEndpoint(endpointObject);
480
- return;
481
- }
482
-
483
- logger.warn(
484
- `resending endpoint update ${params.event.eventId} failed after ${params.config.resendLimit} attempts`
485
- );
486
-
487
- if (this._endpointGenerating) {
488
- logger.error('Initial endpoint update failed. ');
489
- }
490
- }
491
-
492
- /**
493
- * @private
494
- * @param config
495
- * Configure credentials and init buffer
496
- */
497
- private async _init(credentials) {
498
- logger.debug('init provider');
499
-
500
- if (
501
- this._config.credentials &&
502
- this._config.credentials.sessionToken === credentials.sessionToken &&
503
- this._config.credentials.identityId === credentials.identityId
504
- ) {
505
- logger.debug('no change for aws credentials, directly return from init');
506
- return;
507
- }
508
-
509
- const identityId = this._config.credentials
510
- ? this._config.credentials.identityId
511
- : null;
512
-
513
- this._config.credentials = credentials;
514
-
515
- if (!this._bufferExists() || identityId !== credentials.identityId) {
516
- // if the identity has changed, flush the buffer and instantiate a new one
517
- // this will cause the old buffer to send any remaining events
518
- // with the old credentials and then stop looping and shortly thereafter get picked up by GC
519
- this._initBuffer();
520
- }
521
- }
522
-
523
- private _bufferExists() {
524
- return this._buffer && this._buffer instanceof EventBuffer;
525
- }
526
-
527
- private _initBuffer() {
528
- if (this._bufferExists()) {
529
- this._flushBuffer();
530
- }
531
-
532
- this._buffer = new EventBuffer(this._config);
533
-
534
- // if the first endpoint update hasn't yet resolved pause the buffer to
535
- // prevent race conditions. It will be resumed as soon as that request succeeds
536
- if (this._endpointGenerating) {
537
- this._buffer.pause();
538
- }
539
- }
540
-
541
- private _flushBuffer() {
542
- if (this._bufferExists()) {
543
- this._buffer?.flush();
544
- this._buffer = null;
545
- }
546
- }
547
-
548
- private _resumeBuffer() {
549
- if (this._bufferExists()) {
550
- this._buffer?.resume();
551
- }
552
- }
553
-
554
- private async _getEndpointId(cacheKey) {
555
- // try to get from cache
556
- let endpointId = await Cache.getItem(cacheKey);
557
- logger.debug(
558
- 'endpointId from cache',
559
- endpointId,
560
- 'type',
561
- typeof endpointId
562
- );
563
- if (!endpointId) {
564
- endpointId = uuid();
565
- // set a longer TTL to avoid endpoint id being deleted after the default TTL (3 days)
566
- // also set its priority to the highest to reduce its chance of being deleted when cache is full
567
- const ttl = 1000 * 60 * 60 * 24 * 365 * 100; // 100 years
568
- const expiration = new Date().getTime() + ttl;
569
- Cache.setItem(cacheKey, endpointId, {
570
- expires: expiration,
571
- priority: 1,
572
- });
573
- }
574
- return endpointId;
575
- }
576
-
577
- /**
578
- * EndPoint request
579
- * @return {Object} - The request of updating endpoint
580
- */
581
- private _endpointRequest(config, event) {
582
- const { credentials } = config;
583
- const clientInfo = this._clientInfo || {};
584
- const clientContext = config.clientContext || {};
585
- // for now we have three different ways for default endpoint configurations
586
- // clientInfo
587
- // clientContext (deprecated)
588
- // config.endpoint
589
- const defaultEndpointConfig = config.endpoint || {};
590
- const demographicByClientInfo = {
591
- appVersion: clientInfo.appVersion,
592
- make: clientInfo.make,
593
- model: clientInfo.model,
594
- modelVersion: clientInfo.version,
595
- platform: clientInfo.platform,
596
- };
597
- // for backward compatibility
598
- const {
599
- clientId,
600
- appTitle,
601
- appVersionName,
602
- appVersionCode,
603
- appPackageName,
604
- ...demographicByClientContext
605
- } = clientContext;
606
- const channelType = event.address
607
- ? clientInfo.platform === 'android'
608
- ? 'GCM'
609
- : 'APNS'
610
- : undefined;
611
- const tmp = {
612
- channelType,
613
- requestId: uuid(),
614
- effectiveDate: new Date().toISOString(),
615
- ...defaultEndpointConfig,
616
- ...event,
617
- attributes: {
618
- ...defaultEndpointConfig.attributes,
619
- ...event.attributes,
620
- },
621
- demographic: {
622
- ...demographicByClientInfo,
623
- ...demographicByClientContext,
624
- ...defaultEndpointConfig.demographic,
625
- ...event.demographic,
626
- },
627
- location: {
628
- ...defaultEndpointConfig.location,
629
- ...event.location,
630
- },
631
- metrics: {
632
- ...defaultEndpointConfig.metrics,
633
- ...event.metrics,
634
- },
635
- user: {
636
- userId:
637
- event.userId ||
638
- defaultEndpointConfig.userId ||
639
- credentials.identityId,
640
- userAttributes: {
641
- ...defaultEndpointConfig.userAttributes,
642
- ...event.userAttributes,
643
- },
644
- },
645
- };
646
-
647
- // eliminate unnecessary params
648
- const {
649
- userId,
650
- userAttributes,
651
- name,
652
- session,
653
- eventId,
654
- immediate,
655
- ...ret
656
- } = tmp;
657
- return transferKeyToUpperCase(
658
- ret,
659
- [],
660
- ['metrics', 'userAttributes', 'attributes']
661
- );
662
- }
663
-
664
- private _eventError(err: any) {
665
- logger.error('record event failed.', err);
666
- logger.warn(
667
- `Please ensure you have updated your Pinpoint IAM Policy ` +
668
- `with the Action: "mobiletargeting:PutEvents" ` +
669
- `in order to record events`
670
- );
671
- }
672
-
673
- private async _getCredentials() {
674
- try {
675
- const credentials = await Credentials.get();
676
- if (!credentials) return null;
677
-
678
- logger.debug('set credentials for analytics', credentials);
679
- return Credentials.shear(credentials);
680
- } catch (err) {
681
- logger.debug('ensure credentials error', err);
682
- return null;
683
- }
684
- }
685
- }