@aws-amplify/analytics 0.0.0-unstable-1ca644b-20260128091132

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 (456) hide show
  1. package/README.md +3 -0
  2. package/dist/cjs/apis/disable.js +16 -0
  3. package/dist/cjs/apis/disable.js.map +1 -0
  4. package/dist/cjs/apis/enable.js +15 -0
  5. package/dist/cjs/apis/enable.js.map +1 -0
  6. package/dist/cjs/apis/index.js +11 -0
  7. package/dist/cjs/apis/index.js.map +1 -0
  8. package/dist/cjs/errors/AnalyticsError.js +21 -0
  9. package/dist/cjs/errors/AnalyticsError.js.map +1 -0
  10. package/dist/cjs/errors/assertValidationError.js +22 -0
  11. package/dist/cjs/errors/assertValidationError.js.map +1 -0
  12. package/dist/cjs/errors/index.js +14 -0
  13. package/dist/cjs/errors/index.js.map +1 -0
  14. package/dist/cjs/errors/validation.js +44 -0
  15. package/dist/cjs/errors/validation.js.map +1 -0
  16. package/dist/cjs/index.js +17 -0
  17. package/dist/cjs/index.js.map +1 -0
  18. package/dist/cjs/providers/kinesis/apis/flushEvents.js +39 -0
  19. package/dist/cjs/providers/kinesis/apis/flushEvents.js.map +1 -0
  20. package/dist/cjs/providers/kinesis/apis/index.js +11 -0
  21. package/dist/cjs/providers/kinesis/apis/index.js.map +1 -0
  22. package/dist/cjs/providers/kinesis/apis/record.js +69 -0
  23. package/dist/cjs/providers/kinesis/apis/record.js.map +1 -0
  24. package/dist/cjs/providers/kinesis/index.js +10 -0
  25. package/dist/cjs/providers/kinesis/index.js.map +1 -0
  26. package/dist/cjs/providers/kinesis/types/buffer.js +6 -0
  27. package/dist/cjs/providers/kinesis/types/buffer.js.map +1 -0
  28. package/dist/cjs/providers/kinesis/types/index.js +6 -0
  29. package/dist/cjs/providers/kinesis/types/index.js.map +1 -0
  30. package/dist/cjs/providers/kinesis/types/inputs.js +6 -0
  31. package/dist/cjs/providers/kinesis/types/inputs.js.map +1 -0
  32. package/dist/cjs/providers/kinesis/utils/constants.js +13 -0
  33. package/dist/cjs/providers/kinesis/utils/constants.js.map +1 -0
  34. package/dist/cjs/providers/kinesis/utils/getEventBuffer.js +85 -0
  35. package/dist/cjs/providers/kinesis/utils/getEventBuffer.js.map +1 -0
  36. package/dist/cjs/providers/kinesis/utils/resolveConfig.js +27 -0
  37. package/dist/cjs/providers/kinesis/utils/resolveConfig.js.map +1 -0
  38. package/dist/cjs/providers/kinesis-firehose/apis/flushEvents.js +38 -0
  39. package/dist/cjs/providers/kinesis-firehose/apis/flushEvents.js.map +1 -0
  40. package/dist/cjs/providers/kinesis-firehose/apis/index.js +11 -0
  41. package/dist/cjs/providers/kinesis-firehose/apis/index.js.map +1 -0
  42. package/dist/cjs/providers/kinesis-firehose/apis/record.js +62 -0
  43. package/dist/cjs/providers/kinesis-firehose/apis/record.js.map +1 -0
  44. package/dist/cjs/providers/kinesis-firehose/index.js +10 -0
  45. package/dist/cjs/providers/kinesis-firehose/index.js.map +1 -0
  46. package/dist/cjs/providers/kinesis-firehose/types/buffer.js +6 -0
  47. package/dist/cjs/providers/kinesis-firehose/types/buffer.js.map +1 -0
  48. package/dist/cjs/providers/kinesis-firehose/types/index.js +6 -0
  49. package/dist/cjs/providers/kinesis-firehose/types/index.js.map +1 -0
  50. package/dist/cjs/providers/kinesis-firehose/types/inputs.js +6 -0
  51. package/dist/cjs/providers/kinesis-firehose/types/inputs.js.map +1 -0
  52. package/dist/cjs/providers/kinesis-firehose/utils/constants.js +13 -0
  53. package/dist/cjs/providers/kinesis-firehose/utils/constants.js.map +1 -0
  54. package/dist/cjs/providers/kinesis-firehose/utils/getEventBuffer.js +83 -0
  55. package/dist/cjs/providers/kinesis-firehose/utils/getEventBuffer.js.map +1 -0
  56. package/dist/cjs/providers/kinesis-firehose/utils/index.js +11 -0
  57. package/dist/cjs/providers/kinesis-firehose/utils/index.js.map +1 -0
  58. package/dist/cjs/providers/kinesis-firehose/utils/resolveConfig.js +27 -0
  59. package/dist/cjs/providers/kinesis-firehose/utils/resolveConfig.js.map +1 -0
  60. package/dist/cjs/providers/personalize/apis/flushEvents.js +37 -0
  61. package/dist/cjs/providers/personalize/apis/flushEvents.js.map +1 -0
  62. package/dist/cjs/providers/personalize/apis/index.js +11 -0
  63. package/dist/cjs/providers/personalize/apis/index.js.map +1 -0
  64. package/dist/cjs/providers/personalize/apis/record.js +98 -0
  65. package/dist/cjs/providers/personalize/apis/record.js.map +1 -0
  66. package/dist/cjs/providers/personalize/index.js +10 -0
  67. package/dist/cjs/providers/personalize/index.js.map +1 -0
  68. package/dist/cjs/providers/personalize/types/buffer.js +6 -0
  69. package/dist/cjs/providers/personalize/types/buffer.js.map +1 -0
  70. package/dist/cjs/providers/personalize/types/index.js +6 -0
  71. package/dist/cjs/providers/personalize/types/index.js.map +1 -0
  72. package/dist/cjs/providers/personalize/types/inputs.js +6 -0
  73. package/dist/cjs/providers/personalize/types/inputs.js.map +1 -0
  74. package/dist/cjs/providers/personalize/utils/autoTrackMedia.js +183 -0
  75. package/dist/cjs/providers/personalize/utils/autoTrackMedia.js.map +1 -0
  76. package/dist/cjs/providers/personalize/utils/cachedSession.js +51 -0
  77. package/dist/cjs/providers/personalize/utils/cachedSession.js.map +1 -0
  78. package/dist/cjs/providers/personalize/utils/constants.js +14 -0
  79. package/dist/cjs/providers/personalize/utils/constants.js.map +1 -0
  80. package/dist/cjs/providers/personalize/utils/getEventBuffer.js +86 -0
  81. package/dist/cjs/providers/personalize/utils/getEventBuffer.js.map +1 -0
  82. package/dist/cjs/providers/personalize/utils/index.js +19 -0
  83. package/dist/cjs/providers/personalize/utils/index.js.map +1 -0
  84. package/dist/cjs/providers/personalize/utils/resolveConfig.js +28 -0
  85. package/dist/cjs/providers/personalize/utils/resolveConfig.js.map +1 -0
  86. package/dist/cjs/providers/pinpoint/apis/configureAutoTrack.js +39 -0
  87. package/dist/cjs/providers/pinpoint/apis/configureAutoTrack.js.map +1 -0
  88. package/dist/cjs/providers/pinpoint/apis/flushEvents.js +43 -0
  89. package/dist/cjs/providers/pinpoint/apis/flushEvents.js.map +1 -0
  90. package/dist/cjs/providers/pinpoint/apis/identifyUser.js +75 -0
  91. package/dist/cjs/providers/pinpoint/apis/identifyUser.js.map +1 -0
  92. package/dist/cjs/providers/pinpoint/apis/index.js +15 -0
  93. package/dist/cjs/providers/pinpoint/apis/index.js.map +1 -0
  94. package/dist/cjs/providers/pinpoint/apis/record.js +74 -0
  95. package/dist/cjs/providers/pinpoint/apis/record.js.map +1 -0
  96. package/dist/cjs/providers/pinpoint/index.js +12 -0
  97. package/dist/cjs/providers/pinpoint/index.js.map +1 -0
  98. package/dist/cjs/providers/pinpoint/types/index.js +6 -0
  99. package/dist/cjs/providers/pinpoint/types/index.js.map +1 -0
  100. package/dist/cjs/providers/pinpoint/types/inputs.js +6 -0
  101. package/dist/cjs/providers/pinpoint/types/inputs.js.map +1 -0
  102. package/dist/cjs/providers/pinpoint/types/options.js +6 -0
  103. package/dist/cjs/providers/pinpoint/types/options.js.map +1 -0
  104. package/dist/cjs/providers/pinpoint/utils/index.js +11 -0
  105. package/dist/cjs/providers/pinpoint/utils/index.js.map +1 -0
  106. package/dist/cjs/providers/pinpoint/utils/resolveConfig.js +19 -0
  107. package/dist/cjs/providers/pinpoint/utils/resolveConfig.js.map +1 -0
  108. package/dist/cjs/providers/pinpoint/utils/resolveCredentials.js +18 -0
  109. package/dist/cjs/providers/pinpoint/utils/resolveCredentials.js.map +1 -0
  110. package/dist/cjs/trackers/EventTracker.js +100 -0
  111. package/dist/cjs/trackers/EventTracker.js.map +1 -0
  112. package/dist/cjs/trackers/PageViewTracker.js +112 -0
  113. package/dist/cjs/trackers/PageViewTracker.js.map +1 -0
  114. package/dist/cjs/trackers/SessionTracker.js +69 -0
  115. package/dist/cjs/trackers/SessionTracker.js.map +1 -0
  116. package/dist/cjs/trackers/SessionTracker.native.js +69 -0
  117. package/dist/cjs/trackers/SessionTracker.native.js.map +1 -0
  118. package/dist/cjs/trackers/index.js +13 -0
  119. package/dist/cjs/trackers/index.js.map +1 -0
  120. package/dist/cjs/types/index.js +6 -0
  121. package/dist/cjs/types/index.js.map +1 -0
  122. package/dist/cjs/types/inputs.js +6 -0
  123. package/dist/cjs/types/inputs.js.map +1 -0
  124. package/dist/cjs/types/kinesis.js +6 -0
  125. package/dist/cjs/types/kinesis.js.map +1 -0
  126. package/dist/cjs/types/options.js +6 -0
  127. package/dist/cjs/types/options.js.map +1 -0
  128. package/dist/cjs/types/trackers.js +6 -0
  129. package/dist/cjs/types/trackers.js.map +1 -0
  130. package/dist/cjs/utils/eventBuffer/EventBuffer.js +65 -0
  131. package/dist/cjs/utils/eventBuffer/EventBuffer.js.map +1 -0
  132. package/dist/cjs/utils/eventBuffer/index.js +9 -0
  133. package/dist/cjs/utils/eventBuffer/index.js.map +1 -0
  134. package/dist/cjs/utils/eventBuffer/types.js +6 -0
  135. package/dist/cjs/utils/eventBuffer/types.js.map +1 -0
  136. package/dist/cjs/utils/groupBy.js +14 -0
  137. package/dist/cjs/utils/groupBy.js.map +1 -0
  138. package/dist/cjs/utils/index.js +24 -0
  139. package/dist/cjs/utils/index.js.map +1 -0
  140. package/dist/cjs/utils/resolveCredentials.js +15 -0
  141. package/dist/cjs/utils/resolveCredentials.js.map +1 -0
  142. package/dist/cjs/utils/statusHelpers.js +21 -0
  143. package/dist/cjs/utils/statusHelpers.js.map +1 -0
  144. package/dist/cjs/utils/trackerConfigHelpers.js +17 -0
  145. package/dist/cjs/utils/trackerConfigHelpers.js.map +1 -0
  146. package/dist/cjs/utils/trackerConfigHelpers.native.js +16 -0
  147. package/dist/cjs/utils/trackerConfigHelpers.native.js.map +1 -0
  148. package/dist/cjs/utils/trackerHelpers.js +46 -0
  149. package/dist/cjs/utils/trackerHelpers.js.map +1 -0
  150. package/dist/cjs/utils/userAgent.js +21 -0
  151. package/dist/cjs/utils/userAgent.js.map +1 -0
  152. package/dist/esm/apis/disable.d.ts +8 -0
  153. package/dist/esm/apis/disable.mjs +22 -0
  154. package/dist/esm/apis/disable.mjs.map +1 -0
  155. package/dist/esm/apis/enable.d.ts +7 -0
  156. package/dist/esm/apis/enable.mjs +21 -0
  157. package/dist/esm/apis/enable.mjs.map +1 -0
  158. package/dist/esm/apis/index.d.ts +2 -0
  159. package/dist/esm/apis/index.mjs +3 -0
  160. package/dist/esm/apis/index.mjs.map +1 -0
  161. package/dist/esm/errors/AnalyticsError.d.ts +7 -0
  162. package/dist/esm/errors/AnalyticsError.mjs +19 -0
  163. package/dist/esm/errors/AnalyticsError.mjs.map +1 -0
  164. package/dist/esm/errors/assertValidationError.d.ts +5 -0
  165. package/dist/esm/errors/assertValidationError.mjs +21 -0
  166. package/dist/esm/errors/assertValidationError.mjs.map +1 -0
  167. package/dist/esm/errors/index.d.ts +3 -0
  168. package/dist/esm/errors/index.mjs +4 -0
  169. package/dist/esm/errors/index.mjs.map +1 -0
  170. package/dist/esm/errors/validation.d.ts +12 -0
  171. package/dist/esm/errors/validation.mjs +42 -0
  172. package/dist/esm/errors/validation.mjs.map +1 -0
  173. package/dist/esm/index.d.ts +3 -0
  174. package/dist/esm/index.mjs +9 -0
  175. package/dist/esm/index.mjs.map +1 -0
  176. package/dist/esm/providers/kinesis/apis/flushEvents.d.ts +8 -0
  177. package/dist/esm/providers/kinesis/apis/flushEvents.mjs +43 -0
  178. package/dist/esm/providers/kinesis/apis/flushEvents.mjs.map +1 -0
  179. package/dist/esm/providers/kinesis/apis/index.d.ts +2 -0
  180. package/dist/esm/providers/kinesis/apis/index.mjs +3 -0
  181. package/dist/esm/providers/kinesis/apis/index.mjs.map +1 -0
  182. package/dist/esm/providers/kinesis/apis/record.d.ts +23 -0
  183. package/dist/esm/providers/kinesis/apis/record.mjs +74 -0
  184. package/dist/esm/providers/kinesis/apis/record.mjs.map +1 -0
  185. package/dist/esm/providers/kinesis/index.d.ts +1 -0
  186. package/dist/esm/providers/kinesis/index.mjs +3 -0
  187. package/dist/esm/providers/kinesis/index.mjs.map +1 -0
  188. package/dist/esm/providers/kinesis/types/buffer.d.ts +15 -0
  189. package/dist/esm/providers/kinesis/types/buffer.mjs +2 -0
  190. package/dist/esm/providers/kinesis/types/buffer.mjs.map +1 -0
  191. package/dist/esm/providers/kinesis/types/index.d.ts +2 -0
  192. package/dist/esm/providers/kinesis/types/index.mjs +2 -0
  193. package/dist/esm/providers/kinesis/types/index.mjs.map +1 -0
  194. package/dist/esm/providers/kinesis/types/inputs.d.ts +6 -0
  195. package/dist/esm/providers/kinesis/types/inputs.mjs +2 -0
  196. package/dist/esm/providers/kinesis/types/inputs.mjs.map +1 -0
  197. package/dist/esm/providers/kinesis/utils/constants.d.ts +6 -0
  198. package/dist/esm/providers/kinesis/utils/constants.mjs +11 -0
  199. package/dist/esm/providers/kinesis/utils/constants.mjs.map +1 -0
  200. package/dist/esm/providers/kinesis/utils/getEventBuffer.d.ts +3 -0
  201. package/dist/esm/providers/kinesis/utils/getEventBuffer.mjs +89 -0
  202. package/dist/esm/providers/kinesis/utils/getEventBuffer.mjs.map +1 -0
  203. package/dist/esm/providers/kinesis/utils/resolveConfig.d.ts +7 -0
  204. package/dist/esm/providers/kinesis/utils/resolveConfig.mjs +27 -0
  205. package/dist/esm/providers/kinesis/utils/resolveConfig.mjs.map +1 -0
  206. package/dist/esm/providers/kinesis-firehose/apis/flushEvents.d.ts +8 -0
  207. package/dist/esm/providers/kinesis-firehose/apis/flushEvents.mjs +43 -0
  208. package/dist/esm/providers/kinesis-firehose/apis/flushEvents.mjs.map +1 -0
  209. package/dist/esm/providers/kinesis-firehose/apis/index.d.ts +2 -0
  210. package/dist/esm/providers/kinesis-firehose/apis/index.mjs +3 -0
  211. package/dist/esm/providers/kinesis-firehose/apis/index.mjs.map +1 -0
  212. package/dist/esm/providers/kinesis-firehose/apis/record.d.ts +19 -0
  213. package/dist/esm/providers/kinesis-firehose/apis/record.mjs +68 -0
  214. package/dist/esm/providers/kinesis-firehose/apis/record.mjs.map +1 -0
  215. package/dist/esm/providers/kinesis-firehose/index.d.ts +1 -0
  216. package/dist/esm/providers/kinesis-firehose/index.mjs +3 -0
  217. package/dist/esm/providers/kinesis-firehose/index.mjs.map +1 -0
  218. package/dist/esm/providers/kinesis-firehose/types/buffer.d.ts +15 -0
  219. package/dist/esm/providers/kinesis-firehose/types/buffer.mjs +2 -0
  220. package/dist/esm/providers/kinesis-firehose/types/buffer.mjs.map +1 -0
  221. package/dist/esm/providers/kinesis-firehose/types/index.d.ts +2 -0
  222. package/dist/esm/providers/kinesis-firehose/types/index.mjs +2 -0
  223. package/dist/esm/providers/kinesis-firehose/types/index.mjs.map +1 -0
  224. package/dist/esm/providers/kinesis-firehose/types/inputs.d.ts +5 -0
  225. package/dist/esm/providers/kinesis-firehose/types/inputs.mjs +2 -0
  226. package/dist/esm/providers/kinesis-firehose/types/inputs.mjs.map +1 -0
  227. package/dist/esm/providers/kinesis-firehose/utils/constants.d.ts +6 -0
  228. package/dist/esm/providers/kinesis-firehose/utils/constants.mjs +11 -0
  229. package/dist/esm/providers/kinesis-firehose/utils/constants.mjs.map +1 -0
  230. package/dist/esm/providers/kinesis-firehose/utils/getEventBuffer.d.ts +3 -0
  231. package/dist/esm/providers/kinesis-firehose/utils/getEventBuffer.mjs +87 -0
  232. package/dist/esm/providers/kinesis-firehose/utils/getEventBuffer.mjs.map +1 -0
  233. package/dist/esm/providers/kinesis-firehose/utils/index.d.ts +2 -0
  234. package/dist/esm/providers/kinesis-firehose/utils/index.mjs +3 -0
  235. package/dist/esm/providers/kinesis-firehose/utils/index.mjs.map +1 -0
  236. package/dist/esm/providers/kinesis-firehose/utils/resolveConfig.d.ts +7 -0
  237. package/dist/esm/providers/kinesis-firehose/utils/resolveConfig.mjs +27 -0
  238. package/dist/esm/providers/kinesis-firehose/utils/resolveConfig.mjs.map +1 -0
  239. package/dist/esm/providers/personalize/apis/flushEvents.d.ts +8 -0
  240. package/dist/esm/providers/personalize/apis/flushEvents.mjs +43 -0
  241. package/dist/esm/providers/personalize/apis/flushEvents.mjs.map +1 -0
  242. package/dist/esm/providers/personalize/apis/index.d.ts +2 -0
  243. package/dist/esm/providers/personalize/apis/index.mjs +3 -0
  244. package/dist/esm/providers/personalize/apis/index.mjs.map +1 -0
  245. package/dist/esm/providers/personalize/apis/record.d.ts +27 -0
  246. package/dist/esm/providers/personalize/apis/record.mjs +106 -0
  247. package/dist/esm/providers/personalize/apis/record.mjs.map +1 -0
  248. package/dist/esm/providers/personalize/index.d.ts +1 -0
  249. package/dist/esm/providers/personalize/index.mjs +3 -0
  250. package/dist/esm/providers/personalize/index.mjs.map +1 -0
  251. package/dist/esm/providers/personalize/types/buffer.d.ts +16 -0
  252. package/dist/esm/providers/personalize/types/buffer.mjs +2 -0
  253. package/dist/esm/providers/personalize/types/buffer.mjs.map +1 -0
  254. package/dist/esm/providers/personalize/types/index.d.ts +2 -0
  255. package/dist/esm/providers/personalize/types/index.mjs +2 -0
  256. package/dist/esm/providers/personalize/types/index.mjs.map +1 -0
  257. package/dist/esm/providers/personalize/types/inputs.d.ts +7 -0
  258. package/dist/esm/providers/personalize/types/inputs.mjs +2 -0
  259. package/dist/esm/providers/personalize/types/inputs.mjs.map +1 -0
  260. package/dist/esm/providers/personalize/utils/autoTrackMedia.d.ts +10 -0
  261. package/dist/esm/providers/personalize/utils/autoTrackMedia.mjs +181 -0
  262. package/dist/esm/providers/personalize/utils/autoTrackMedia.mjs.map +1 -0
  263. package/dist/esm/providers/personalize/utils/cachedSession.d.ts +5 -0
  264. package/dist/esm/providers/personalize/utils/cachedSession.mjs +48 -0
  265. package/dist/esm/providers/personalize/utils/cachedSession.mjs.map +1 -0
  266. package/dist/esm/providers/personalize/utils/constants.d.ts +7 -0
  267. package/dist/esm/providers/personalize/utils/constants.mjs +12 -0
  268. package/dist/esm/providers/personalize/utils/constants.mjs.map +1 -0
  269. package/dist/esm/providers/personalize/utils/getEventBuffer.d.ts +3 -0
  270. package/dist/esm/providers/personalize/utils/getEventBuffer.mjs +90 -0
  271. package/dist/esm/providers/personalize/utils/getEventBuffer.mjs.map +1 -0
  272. package/dist/esm/providers/personalize/utils/index.d.ts +5 -0
  273. package/dist/esm/providers/personalize/utils/index.mjs +6 -0
  274. package/dist/esm/providers/personalize/utils/index.mjs.map +1 -0
  275. package/dist/esm/providers/personalize/utils/resolveConfig.d.ts +7 -0
  276. package/dist/esm/providers/personalize/utils/resolveConfig.mjs +28 -0
  277. package/dist/esm/providers/personalize/utils/resolveConfig.mjs.map +1 -0
  278. package/dist/esm/providers/pinpoint/apis/configureAutoTrack.d.ts +17 -0
  279. package/dist/esm/providers/pinpoint/apis/configureAutoTrack.mjs +42 -0
  280. package/dist/esm/providers/pinpoint/apis/configureAutoTrack.mjs.map +1 -0
  281. package/dist/esm/providers/pinpoint/apis/flushEvents.d.ts +10 -0
  282. package/dist/esm/providers/pinpoint/apis/flushEvents.mjs +47 -0
  283. package/dist/esm/providers/pinpoint/apis/flushEvents.mjs.map +1 -0
  284. package/dist/esm/providers/pinpoint/apis/identifyUser.d.ts +49 -0
  285. package/dist/esm/providers/pinpoint/apis/identifyUser.mjs +80 -0
  286. package/dist/esm/providers/pinpoint/apis/identifyUser.mjs.map +1 -0
  287. package/dist/esm/providers/pinpoint/apis/index.d.ts +4 -0
  288. package/dist/esm/providers/pinpoint/apis/index.mjs +5 -0
  289. package/dist/esm/providers/pinpoint/apis/index.mjs.map +1 -0
  290. package/dist/esm/providers/pinpoint/apis/record.d.ts +32 -0
  291. package/dist/esm/providers/pinpoint/apis/record.mjs +79 -0
  292. package/dist/esm/providers/pinpoint/apis/record.mjs.map +1 -0
  293. package/dist/esm/providers/pinpoint/index.d.ts +2 -0
  294. package/dist/esm/providers/pinpoint/index.mjs +5 -0
  295. package/dist/esm/providers/pinpoint/index.mjs.map +1 -0
  296. package/dist/esm/providers/pinpoint/types/index.d.ts +2 -0
  297. package/dist/esm/providers/pinpoint/types/index.mjs +2 -0
  298. package/dist/esm/providers/pinpoint/types/index.mjs.map +1 -0
  299. package/dist/esm/providers/pinpoint/types/inputs.d.ts +15 -0
  300. package/dist/esm/providers/pinpoint/types/inputs.mjs +2 -0
  301. package/dist/esm/providers/pinpoint/types/inputs.mjs.map +1 -0
  302. package/dist/esm/providers/pinpoint/types/options.d.ts +5 -0
  303. package/dist/esm/providers/pinpoint/types/options.mjs +2 -0
  304. package/dist/esm/providers/pinpoint/types/options.mjs.map +1 -0
  305. package/dist/esm/providers/pinpoint/utils/index.d.ts +2 -0
  306. package/dist/esm/providers/pinpoint/utils/index.mjs +3 -0
  307. package/dist/esm/providers/pinpoint/utils/index.mjs.map +1 -0
  308. package/dist/esm/providers/pinpoint/utils/resolveConfig.d.ts +11 -0
  309. package/dist/esm/providers/pinpoint/utils/resolveConfig.mjs +19 -0
  310. package/dist/esm/providers/pinpoint/utils/resolveConfig.mjs.map +1 -0
  311. package/dist/esm/providers/pinpoint/utils/resolveCredentials.d.ts +7 -0
  312. package/dist/esm/providers/pinpoint/utils/resolveCredentials.mjs +18 -0
  313. package/dist/esm/providers/pinpoint/utils/resolveCredentials.mjs.map +1 -0
  314. package/dist/esm/trackers/EventTracker.d.ts +10 -0
  315. package/dist/esm/trackers/EventTracker.mjs +98 -0
  316. package/dist/esm/trackers/EventTracker.mjs.map +1 -0
  317. package/dist/esm/trackers/PageViewTracker.d.ts +18 -0
  318. package/dist/esm/trackers/PageViewTracker.mjs +110 -0
  319. package/dist/esm/trackers/PageViewTracker.mjs.map +1 -0
  320. package/dist/esm/trackers/SessionTracker.d.ts +13 -0
  321. package/dist/esm/trackers/SessionTracker.mjs +67 -0
  322. package/dist/esm/trackers/SessionTracker.mjs.map +1 -0
  323. package/dist/esm/trackers/SessionTracker.native.d.ts +13 -0
  324. package/dist/esm/trackers/SessionTracker.native.mjs +67 -0
  325. package/dist/esm/trackers/SessionTracker.native.mjs.map +1 -0
  326. package/dist/esm/trackers/index.d.ts +3 -0
  327. package/dist/esm/trackers/index.mjs +4 -0
  328. package/dist/esm/trackers/index.mjs.map +1 -0
  329. package/dist/esm/types/index.d.ts +3 -0
  330. package/dist/esm/types/index.mjs +2 -0
  331. package/dist/esm/types/index.mjs.map +1 -0
  332. package/dist/esm/types/inputs.d.ts +35 -0
  333. package/dist/esm/types/inputs.mjs +2 -0
  334. package/dist/esm/types/inputs.mjs.map +1 -0
  335. package/dist/esm/types/kinesis.d.ts +8 -0
  336. package/dist/esm/types/kinesis.mjs +2 -0
  337. package/dist/esm/types/kinesis.mjs.map +1 -0
  338. package/dist/esm/types/options.d.ts +4 -0
  339. package/dist/esm/types/options.mjs +2 -0
  340. package/dist/esm/types/options.mjs.map +1 -0
  341. package/dist/esm/types/trackers.d.ts +22 -0
  342. package/dist/esm/types/trackers.mjs +2 -0
  343. package/dist/esm/types/trackers.mjs.map +1 -0
  344. package/dist/esm/utils/eventBuffer/EventBuffer.d.ts +16 -0
  345. package/dist/esm/utils/eventBuffer/EventBuffer.mjs +63 -0
  346. package/dist/esm/utils/eventBuffer/EventBuffer.mjs.map +1 -0
  347. package/dist/esm/utils/eventBuffer/index.d.ts +2 -0
  348. package/dist/esm/utils/eventBuffer/index.mjs +2 -0
  349. package/dist/esm/utils/eventBuffer/index.mjs.map +1 -0
  350. package/dist/esm/utils/eventBuffer/types.d.ts +6 -0
  351. package/dist/esm/utils/eventBuffer/types.mjs +2 -0
  352. package/dist/esm/utils/eventBuffer/types.mjs.map +1 -0
  353. package/dist/esm/utils/groupBy.d.ts +1 -0
  354. package/dist/esm/utils/groupBy.mjs +11 -0
  355. package/dist/esm/utils/groupBy.mjs.map +1 -0
  356. package/dist/esm/utils/index.d.ts +7 -0
  357. package/dist/esm/utils/index.mjs +8 -0
  358. package/dist/esm/utils/index.mjs.map +1 -0
  359. package/dist/esm/utils/resolveCredentials.d.ts +4 -0
  360. package/dist/esm/utils/resolveCredentials.mjs +15 -0
  361. package/dist/esm/utils/resolveCredentials.mjs.map +1 -0
  362. package/dist/esm/utils/statusHelpers.d.ts +6 -0
  363. package/dist/esm/utils/statusHelpers.mjs +16 -0
  364. package/dist/esm/utils/statusHelpers.mjs.map +1 -0
  365. package/dist/esm/utils/trackerConfigHelpers.d.ts +5 -0
  366. package/dist/esm/utils/trackerConfigHelpers.mjs +17 -0
  367. package/dist/esm/utils/trackerConfigHelpers.mjs.map +1 -0
  368. package/dist/esm/utils/trackerConfigHelpers.native.d.ts +5 -0
  369. package/dist/esm/utils/trackerConfigHelpers.native.mjs +16 -0
  370. package/dist/esm/utils/trackerConfigHelpers.native.mjs.map +1 -0
  371. package/dist/esm/utils/trackerHelpers.d.ts +9 -0
  372. package/dist/esm/utils/trackerHelpers.mjs +46 -0
  373. package/dist/esm/utils/trackerHelpers.mjs.map +1 -0
  374. package/dist/esm/utils/userAgent.d.ts +4 -0
  375. package/dist/esm/utils/userAgent.mjs +19 -0
  376. package/dist/esm/utils/userAgent.mjs.map +1 -0
  377. package/kinesis/package.json +8 -0
  378. package/kinesis-firehose/package.json +8 -0
  379. package/package.json +110 -0
  380. package/personalize/package.json +8 -0
  381. package/pinpoint/package.json +8 -0
  382. package/src/apis/disable.ts +13 -0
  383. package/src/apis/enable.ts +12 -0
  384. package/src/apis/index.ts +5 -0
  385. package/src/errors/AnalyticsError.ts +21 -0
  386. package/src/errors/assertValidationError.ts +25 -0
  387. package/src/errors/index.ts +6 -0
  388. package/src/errors/validation.ts +43 -0
  389. package/src/index.ts +14 -0
  390. package/src/providers/kinesis/apis/flushEvents.ts +43 -0
  391. package/src/providers/kinesis/apis/index.ts +5 -0
  392. package/src/providers/kinesis/apis/record.ts +82 -0
  393. package/src/providers/kinesis/index.ts +4 -0
  394. package/src/providers/kinesis/types/buffer.ts +21 -0
  395. package/src/providers/kinesis/types/index.ts +5 -0
  396. package/src/providers/kinesis/types/inputs.ts +10 -0
  397. package/src/providers/kinesis/utils/constants.ts +9 -0
  398. package/src/providers/kinesis/utils/getEventBuffer.ts +130 -0
  399. package/src/providers/kinesis/utils/resolveConfig.ts +39 -0
  400. package/src/providers/kinesis-firehose/apis/flushEvents.ts +42 -0
  401. package/src/providers/kinesis-firehose/apis/index.ts +5 -0
  402. package/src/providers/kinesis-firehose/apis/record.ts +71 -0
  403. package/src/providers/kinesis-firehose/index.ts +4 -0
  404. package/src/providers/kinesis-firehose/types/buffer.ts +21 -0
  405. package/src/providers/kinesis-firehose/types/index.ts +9 -0
  406. package/src/providers/kinesis-firehose/types/inputs.ts +9 -0
  407. package/src/providers/kinesis-firehose/utils/constants.ts +9 -0
  408. package/src/providers/kinesis-firehose/utils/getEventBuffer.ts +138 -0
  409. package/src/providers/kinesis-firehose/utils/index.ts +5 -0
  410. package/src/providers/kinesis-firehose/utils/resolveConfig.ts +39 -0
  411. package/src/providers/personalize/apis/flushEvents.ts +40 -0
  412. package/src/providers/personalize/apis/index.ts +5 -0
  413. package/src/providers/personalize/apis/record.ts +130 -0
  414. package/src/providers/personalize/index.ts +4 -0
  415. package/src/providers/personalize/types/buffer.ts +23 -0
  416. package/src/providers/personalize/types/index.ts +5 -0
  417. package/src/providers/personalize/types/inputs.ts +11 -0
  418. package/src/providers/personalize/utils/autoTrackMedia.ts +240 -0
  419. package/src/providers/personalize/utils/cachedSession.ts +68 -0
  420. package/src/providers/personalize/utils/constants.ts +12 -0
  421. package/src/providers/personalize/utils/getEventBuffer.ts +135 -0
  422. package/src/providers/personalize/utils/index.ts +11 -0
  423. package/src/providers/personalize/utils/resolveConfig.ts +46 -0
  424. package/src/providers/pinpoint/apis/configureAutoTrack.ts +54 -0
  425. package/src/providers/pinpoint/apis/flushEvents.ts +42 -0
  426. package/src/providers/pinpoint/apis/identifyUser.ts +81 -0
  427. package/src/providers/pinpoint/apis/index.ts +7 -0
  428. package/src/providers/pinpoint/apis/record.ts +92 -0
  429. package/src/providers/pinpoint/index.ts +9 -0
  430. package/src/providers/pinpoint/types/index.ts +9 -0
  431. package/src/providers/pinpoint/types/inputs.ts +26 -0
  432. package/src/providers/pinpoint/types/options.ts +12 -0
  433. package/src/providers/pinpoint/utils/index.ts +5 -0
  434. package/src/providers/pinpoint/utils/resolveConfig.ts +21 -0
  435. package/src/providers/pinpoint/utils/resolveCredentials.ts +22 -0
  436. package/src/trackers/EventTracker.ts +136 -0
  437. package/src/trackers/PageViewTracker.ts +155 -0
  438. package/src/trackers/SessionTracker.native.ts +106 -0
  439. package/src/trackers/SessionTracker.ts +106 -0
  440. package/src/trackers/index.ts +6 -0
  441. package/src/types/index.ts +11 -0
  442. package/src/types/inputs.ts +53 -0
  443. package/src/types/kinesis.ts +13 -0
  444. package/src/types/options.ts +7 -0
  445. package/src/types/trackers.ts +35 -0
  446. package/src/utils/eventBuffer/EventBuffer.ts +85 -0
  447. package/src/utils/eventBuffer/index.ts +5 -0
  448. package/src/utils/eventBuffer/types.ts +10 -0
  449. package/src/utils/groupBy.ts +16 -0
  450. package/src/utils/index.ts +21 -0
  451. package/src/utils/resolveCredentials.ts +16 -0
  452. package/src/utils/statusHelpers.ts +17 -0
  453. package/src/utils/trackerConfigHelpers.native.ts +18 -0
  454. package/src/utils/trackerConfigHelpers.ts +19 -0
  455. package/src/utils/trackerHelpers.ts +56 -0
  456. package/src/utils/userAgent.ts +23 -0
@@ -0,0 +1,54 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import { UpdateEndpointException } from '@aws-amplify/core/internals/providers/pinpoint';
5
+
6
+ import { AnalyticsValidationErrorCode } from '../../../errors';
7
+ import {
8
+ TrackerAttributes,
9
+ TrackerInterface,
10
+ TrackerType,
11
+ } from '../../../types/trackers';
12
+ import {
13
+ updateProviderTrackers,
14
+ validateTrackerConfiguration,
15
+ } from '../../../utils';
16
+ import { ConfigureAutoTrackInput } from '../types';
17
+
18
+ import { record } from './record';
19
+
20
+ // Configured Tracker instances for Pinpoint
21
+ const configuredTrackers: Partial<Record<TrackerType, TrackerInterface>> = {};
22
+
23
+ // Callback that will emit an appropriate event to Pinpoint when required by the Tracker
24
+ const emitTrackingEvent = (
25
+ eventName: string,
26
+ attributes: TrackerAttributes,
27
+ ) => {
28
+ record({
29
+ name: eventName,
30
+ attributes,
31
+ });
32
+ };
33
+
34
+ /**
35
+ * Configures automatic event tracking for Pinpoint. This API will automatically transmit an analytic event when
36
+ * configured events are detected within your application. This can include: DOM element events (via the `event`
37
+ * tracker), session events (via the `session` tracker), and page view events (via the `pageView` tracker).
38
+ *
39
+ * @deprecated AWS will end support for Amazon Pinpoint on October 30, 2026.
40
+ *
41
+ * @remark Only session tracking is currently supported on React Native.
42
+ *
43
+ * @param {ConfigureAutoTrackInput} params The input object to configure auto track behavior.
44
+ *
45
+ * @throws service: {@link UpdateEndpointException} - Thrown when the underlying Pinpoint service returns an error.
46
+ * @throws validation: {@link AnalyticsValidationErrorCode} - Thrown when the provided parameters or library
47
+ * configuration is incorrect.
48
+ */
49
+ export const configureAutoTrack = (input: ConfigureAutoTrackInput): void => {
50
+ validateTrackerConfiguration(input);
51
+
52
+ // Initialize or update this provider's trackers
53
+ updateProviderTrackers(input, emitTrackingEvent, configuredTrackers);
54
+ };
@@ -0,0 +1,42 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import { flushEvents as flushEventsCore } from '@aws-amplify/core/internals/providers/pinpoint';
5
+ import { AnalyticsAction } from '@aws-amplify/core/internals/utils';
6
+ import { ConsoleLogger } from '@aws-amplify/core';
7
+
8
+ import { resolveConfig, resolveCredentials } from '../utils';
9
+ import { getAnalyticsUserAgentString } from '../../../utils';
10
+
11
+ const logger = new ConsoleLogger('Analytics');
12
+
13
+ /**
14
+ * Flushes all buffered Pinpoint events to the service.
15
+ *
16
+ * @deprecated AWS will end support for Amazon Pinpoint on October 30, 2026.
17
+ *
18
+ * @note
19
+ * This API will make a best-effort attempt to flush events from the buffer. Events recorded immediately after invoking
20
+ * this API may not be included in the flush.
21
+ */
22
+ export const flushEvents = () => {
23
+ const { appId, region, bufferSize, flushSize, flushInterval, resendLimit } =
24
+ resolveConfig();
25
+ resolveCredentials()
26
+ .then(({ credentials, identityId }) => {
27
+ flushEventsCore({
28
+ appId,
29
+ region,
30
+ credentials,
31
+ identityId,
32
+ bufferSize,
33
+ flushSize,
34
+ flushInterval,
35
+ resendLimit,
36
+ userAgentValue: getAnalyticsUserAgentString(AnalyticsAction.Record),
37
+ });
38
+ })
39
+ .catch(e => {
40
+ logger.warn('Failed to flush events', e);
41
+ });
42
+ };
@@ -0,0 +1,81 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import { AnalyticsAction } from '@aws-amplify/core/internals/utils';
5
+ import {
6
+ UpdateEndpointException,
7
+ updateEndpoint,
8
+ } from '@aws-amplify/core/internals/providers/pinpoint';
9
+
10
+ import { AnalyticsValidationErrorCode } from '../../../errors';
11
+ import { getAnalyticsUserAgentString } from '../../../utils';
12
+ import { IdentifyUserInput } from '../types';
13
+ import { resolveConfig, resolveCredentials } from '../utils';
14
+
15
+ /**
16
+ * Sends information about a user to Pinpoint. Sending user information allows you to associate a user to their user
17
+ * profile and activities or actions in your application. Activity can be tracked across devices & platforms by using
18
+ * the same `userId`.
19
+ *
20
+ * @deprecated AWS will end support for Amazon Pinpoint on October 30, 2026.
21
+ *
22
+ * @param {IdentifyUserInput} params The input object used to construct requests sent to Pinpoint's UpdateEndpoint
23
+ * API.
24
+ *
25
+ * @throws service: {@link UpdateEndpointException} - Thrown when the underlying Pinpoint service returns an error.
26
+ * @throws validation: {@link AnalyticsValidationErrorCode} - Thrown when the provided parameters or library
27
+ * configuration is incorrect.
28
+ *
29
+ * @returns A promise that will resolve when the operation is complete.
30
+ *
31
+ * @example
32
+ * ```ts
33
+ * // Identify a user with Pinpoint
34
+ * await identifyUser({
35
+ * userId,
36
+ * userProfile: {
37
+ * email: 'userEmail@example.com'
38
+ * customProperties: {
39
+ * phoneNumber: ['555-555-5555'],
40
+ * },
41
+ * }
42
+ * });
43
+ * ```
44
+ *
45
+ * @example
46
+ * ```ts
47
+ * // Identify a user with Pinpoint with some additional demographics
48
+ * await identifyUser({
49
+ * userId,
50
+ * userProfile: {
51
+ * email: 'userEmail@example.com'
52
+ * customProperties: {
53
+ * phoneNumber: ['555-555-5555'],
54
+ * },
55
+ * demographic: {
56
+ * platform: 'ios',
57
+ * timezone: 'America/Los_Angeles'
58
+ * }
59
+ * }
60
+ * });
61
+ */
62
+ export const identifyUser = async ({
63
+ userId,
64
+ userProfile,
65
+ options,
66
+ }: IdentifyUserInput): Promise<void> => {
67
+ const { credentials, identityId } = await resolveCredentials();
68
+ const { appId, region } = resolveConfig();
69
+ const { userAttributes } = options ?? {};
70
+ await updateEndpoint({
71
+ appId,
72
+ category: 'Analytics',
73
+ credentials,
74
+ identityId,
75
+ region,
76
+ userAttributes,
77
+ userId,
78
+ userProfile,
79
+ userAgentValue: getAnalyticsUserAgentString(AnalyticsAction.IdentifyUser),
80
+ });
81
+ };
@@ -0,0 +1,7 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ export { record } from './record';
5
+ export { identifyUser } from './identifyUser';
6
+ export { configureAutoTrack } from './configureAutoTrack';
7
+ export { flushEvents } from './flushEvents';
@@ -0,0 +1,92 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import { ConsoleLogger, Hub } from '@aws-amplify/core';
5
+ import {
6
+ AMPLIFY_SYMBOL,
7
+ AnalyticsAction,
8
+ } from '@aws-amplify/core/internals/utils';
9
+ import { record as recordCore } from '@aws-amplify/core/internals/providers/pinpoint';
10
+
11
+ import {
12
+ AnalyticsValidationErrorCode,
13
+ assertValidationError,
14
+ } from '../../../errors';
15
+ import {
16
+ getAnalyticsUserAgentString,
17
+ isAnalyticsEnabled,
18
+ } from '../../../utils';
19
+ import { RecordInput } from '../types';
20
+ import { resolveConfig, resolveCredentials } from '../utils';
21
+
22
+ const logger = new ConsoleLogger('Analytics');
23
+
24
+ /**
25
+ * Records an Analytic event to Pinpoint. Events will be buffered and periodically sent to Pinpoint.
26
+ *
27
+ * @deprecated AWS will end support for Amazon Pinpoint on October 30, 2026.
28
+ *
29
+ * @param params The input object used to construct the request.
30
+ *
31
+ * @throws validation: {@link AnalyticsValidationErrorCode} - Thrown when the provided parameters or library
32
+ * configuration is incorrect.
33
+ *
34
+ * @example
35
+ * ```ts
36
+ * // Send an event to Pinpoint
37
+ * record({ name: eventName })
38
+ * ```
39
+ *
40
+ * @example
41
+ * ```ts
42
+ * // Send an event to Pinpoint with metrics & custom attributes
43
+ * record({
44
+ * name: eventName,
45
+ * attributes: {
46
+ * 'my-attribute': attributeValue
47
+ * },
48
+ * metrics: {
49
+ * 'my-metric': metricValue
50
+ * }
51
+ * })
52
+ * ```
53
+ */
54
+ export const record = (input: RecordInput): void => {
55
+ const { appId, region, bufferSize, flushSize, flushInterval, resendLimit } =
56
+ resolveConfig();
57
+
58
+ if (!isAnalyticsEnabled()) {
59
+ logger.debug('Analytics is disabled, event will not be recorded.');
60
+
61
+ return;
62
+ }
63
+
64
+ assertValidationError(!!input.name, AnalyticsValidationErrorCode.NoEventName);
65
+
66
+ resolveCredentials()
67
+ .then(({ credentials, identityId }) => {
68
+ Hub.dispatch(
69
+ 'analytics',
70
+ { event: 'record', data: input, message: 'Recording Analytics event' },
71
+ 'Analytics',
72
+ AMPLIFY_SYMBOL,
73
+ );
74
+ recordCore({
75
+ appId,
76
+ category: 'Analytics',
77
+ credentials,
78
+ event: input,
79
+ identityId,
80
+ region,
81
+ userAgentValue: getAnalyticsUserAgentString(AnalyticsAction.Record),
82
+ bufferSize,
83
+ flushSize,
84
+ flushInterval,
85
+ resendLimit,
86
+ });
87
+ })
88
+ .catch(e => {
89
+ // An error occured while fetching credentials or persisting the event to the buffer
90
+ logger.warn('Failed to record event.', e);
91
+ });
92
+ };
@@ -0,0 +1,9 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ export { record, identifyUser, flushEvents, configureAutoTrack } from './apis';
5
+ export {
6
+ RecordInput,
7
+ IdentifyUserInput,
8
+ ConfigureAutoTrackInput,
9
+ } from './types/inputs';
@@ -0,0 +1,9 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ export {
5
+ RecordInput,
6
+ IdentifyUserInput,
7
+ ConfigureAutoTrackInput,
8
+ } from './inputs';
9
+ export { IdentifyUserOptions } from './options';
@@ -0,0 +1,26 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import { PinpointAnalyticsEvent } from '@aws-amplify/core/internals/providers/pinpoint';
5
+
6
+ import {
7
+ AnalyticsConfigureAutoTrackInput,
8
+ AnalyticsIdentifyUserInput,
9
+ } from '../../../types';
10
+
11
+ import { IdentifyUserOptions } from './options';
12
+
13
+ /**
14
+ * Input type for Pinpoint record API.
15
+ */
16
+ export type RecordInput = PinpointAnalyticsEvent;
17
+
18
+ /**
19
+ * Input type for Pinpoint identifyUser API.
20
+ */
21
+ export type IdentifyUserInput = AnalyticsIdentifyUserInput<IdentifyUserOptions>;
22
+
23
+ /**
24
+ * Input type for Pinpoint configureAutoTrack API.
25
+ */
26
+ export type ConfigureAutoTrackInput = AnalyticsConfigureAutoTrackInput;
@@ -0,0 +1,12 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import { PinpointServiceOptions } from '@aws-amplify/core/internals/providers/pinpoint';
5
+
6
+ /**
7
+ * Options specific to Pinpoint identityUser.
8
+ */
9
+ export type IdentifyUserOptions = Pick<
10
+ PinpointServiceOptions,
11
+ 'userAttributes'
12
+ >;
@@ -0,0 +1,5 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ export { resolveConfig } from './resolveConfig';
5
+ export { resolveCredentials } from './resolveCredentials';
@@ -0,0 +1,21 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import { Amplify } from '@aws-amplify/core';
5
+
6
+ import {
7
+ AnalyticsValidationErrorCode,
8
+ assertValidationError,
9
+ } from '../../../errors';
10
+
11
+ /**
12
+ * @internal
13
+ */
14
+ export const resolveConfig = () => {
15
+ const { appId, region, bufferSize, flushSize, flushInterval, resendLimit } =
16
+ Amplify.getConfig().Analytics?.Pinpoint ?? {};
17
+ assertValidationError(!!appId, AnalyticsValidationErrorCode.NoAppId);
18
+ assertValidationError(!!region, AnalyticsValidationErrorCode.NoRegion);
19
+
20
+ return { appId, region, bufferSize, flushSize, flushInterval, resendLimit };
21
+ };
@@ -0,0 +1,22 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import { fetchAuthSession } from '@aws-amplify/core';
5
+
6
+ import {
7
+ AnalyticsValidationErrorCode,
8
+ assertValidationError,
9
+ } from '../../../errors';
10
+
11
+ /**
12
+ * @internal
13
+ */
14
+ export const resolveCredentials = async () => {
15
+ const { credentials, identityId } = await fetchAuthSession();
16
+ assertValidationError(
17
+ !!credentials,
18
+ AnalyticsValidationErrorCode.NoCredentials,
19
+ );
20
+
21
+ return { credentials, identityId };
22
+ };
@@ -0,0 +1,136 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import { ConsoleLogger } from '@aws-amplify/core';
5
+ import { isBrowser } from '@aws-amplify/core/internals/utils';
6
+
7
+ import {
8
+ DOMEvent,
9
+ EventTrackingOptions,
10
+ TrackerEventRecorder,
11
+ TrackerInterface,
12
+ } from '../types/trackers';
13
+
14
+ const DEFAULT_EVENTS = ['click'] as DOMEvent[];
15
+ const DEFAULT_SELECTOR_PREFIX = 'data-amplify-analytics-';
16
+ const DEFAULT_EVENT_NAME = 'event'; // Default event name as sent to the analytics provider
17
+
18
+ const logger = new ConsoleLogger('EventTracker');
19
+
20
+ export class EventTracker implements TrackerInterface {
21
+ private trackerActive: boolean;
22
+ private options: EventTrackingOptions;
23
+ private eventRecorder: TrackerEventRecorder;
24
+
25
+ constructor(
26
+ eventRecorder: TrackerEventRecorder,
27
+ options?: EventTrackingOptions,
28
+ ) {
29
+ this.options = {};
30
+ this.trackerActive = false;
31
+ this.eventRecorder = eventRecorder;
32
+ this.handleDocEvent = this.handleDocEvent.bind(this);
33
+
34
+ this.configure(eventRecorder, options);
35
+ }
36
+
37
+ public configure(
38
+ eventRecorder: TrackerEventRecorder,
39
+ options?: EventTrackingOptions,
40
+ ) {
41
+ this.eventRecorder = eventRecorder;
42
+
43
+ // Clean up any existing listeners
44
+ this.cleanup();
45
+
46
+ // Apply defaults
47
+ this.options = {
48
+ attributes: options?.attributes ?? undefined,
49
+ events: options?.events ?? DEFAULT_EVENTS,
50
+ selectorPrefix: options?.selectorPrefix ?? DEFAULT_SELECTOR_PREFIX,
51
+ };
52
+
53
+ // Register event listeners
54
+ if (isBrowser()) {
55
+ this.options.events?.forEach(targetEvent => {
56
+ document.addEventListener(targetEvent, this.handleDocEvent, {
57
+ capture: true,
58
+ });
59
+ });
60
+
61
+ this.trackerActive = true;
62
+ }
63
+ }
64
+
65
+ public cleanup() {
66
+ // No-op if document listener is not active
67
+ if (!this.trackerActive) {
68
+ return;
69
+ }
70
+
71
+ // Clean up event listeners
72
+ this.options.events?.forEach(targetEvent => {
73
+ document.removeEventListener(targetEvent, this.handleDocEvent, {
74
+ capture: true,
75
+ });
76
+ });
77
+ }
78
+
79
+ private handleDocEvent(event: Event) {
80
+ /**
81
+ * Example DOM element:
82
+ *
83
+ * ```
84
+ * <button
85
+ * data-amplify-analytics-on="click"
86
+ * data-amplify-analytics-name="click"
87
+ * data-amplify-analytics-attrs="attr1:attr1_value,attr2:attr2_value"
88
+ * />
89
+ * ```
90
+ */
91
+ const triggerSelector = `[${this.options.selectorPrefix}on]`;
92
+ const attrSelector = `${this.options.selectorPrefix}attrs`;
93
+ const eventNameSelector = `${this.options.selectorPrefix}name`;
94
+ const eventSource = event.target;
95
+
96
+ // Validate that the triggering event type is being tracked
97
+ if (!this.options.events?.includes(event.type as DOMEvent)) {
98
+ return;
99
+ }
100
+
101
+ if (eventSource instanceof HTMLElement) {
102
+ const target = eventSource.closest(triggerSelector);
103
+
104
+ if (target) {
105
+ // Parse event name from the element
106
+ const eventName =
107
+ target.getAttribute(eventNameSelector) || DEFAULT_EVENT_NAME;
108
+
109
+ // Parse attributes from the element
110
+ const elementAttributes: Record<string, string> = {};
111
+ const rawElementAttributes = target.getAttribute(attrSelector);
112
+ rawElementAttributes?.split(/\s*,\s*/).forEach(attr => {
113
+ const tmp = attr.trim().split(/\s*:\s*/);
114
+ elementAttributes[tmp[0]] = tmp[1];
115
+ });
116
+
117
+ // Assemble final list of attributes
118
+ const attributes = Object.assign(
119
+ {
120
+ type: event.type,
121
+ target: `${target.localName} with id ${target.id}`,
122
+ },
123
+ this.options.attributes,
124
+ elementAttributes,
125
+ );
126
+
127
+ logger.debug('Recording automatically tracked DOM event', {
128
+ eventName,
129
+ attributes,
130
+ });
131
+
132
+ this.eventRecorder(eventName, attributes);
133
+ }
134
+ }
135
+ }
136
+ }
@@ -0,0 +1,155 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import { ConsoleLogger } from '@aws-amplify/core';
5
+ import { isBrowser } from '@aws-amplify/core/internals/utils';
6
+
7
+ import {
8
+ PageViewTrackingOptions,
9
+ TrackerEventRecorder,
10
+ TrackerInterface,
11
+ } from '../types/trackers';
12
+
13
+ const logger = new ConsoleLogger('PageViewTracker');
14
+
15
+ const DEFAULT_EVENT_NAME = 'pageView';
16
+ const DEFAULT_APP_TYPE = 'singlePage';
17
+ const DEFAULT_URL_PROVIDER = () => {
18
+ return window.location.origin + window.location.pathname;
19
+ };
20
+ const PREV_URL_STORAGE_KEY = 'aws-amplify-analytics-prevUrl';
21
+
22
+ export class PageViewTracker implements TrackerInterface {
23
+ private trackerActive: boolean;
24
+ private options: PageViewTrackingOptions;
25
+ private eventRecorder: TrackerEventRecorder;
26
+
27
+ // SPA tracking helpers
28
+ private spaTrackingActive: boolean;
29
+ private pushStateProxy?: any;
30
+ private replaceStateProxy?: any;
31
+ private originalPushState: any;
32
+ private originalReplaceState: any;
33
+
34
+ constructor(
35
+ eventRecorder: TrackerEventRecorder,
36
+ options?: PageViewTrackingOptions,
37
+ ) {
38
+ this.options = {};
39
+ this.trackerActive = true;
40
+ this.eventRecorder = eventRecorder;
41
+ this.spaTrackingActive = false;
42
+ this.handleLocationChange = this.handleLocationChange.bind(this);
43
+
44
+ this.configure(eventRecorder, options);
45
+ }
46
+
47
+ public configure(
48
+ eventRecorder: TrackerEventRecorder,
49
+ options?: PageViewTrackingOptions,
50
+ ) {
51
+ this.eventRecorder = eventRecorder;
52
+
53
+ // Clean up any existing listeners
54
+ this.cleanup();
55
+
56
+ // Apply defaults
57
+ this.options = {
58
+ appType: options?.appType ?? DEFAULT_APP_TYPE,
59
+ attributes: options?.attributes ?? undefined,
60
+ eventName: options?.eventName ?? DEFAULT_EVENT_NAME,
61
+ urlProvider: options?.urlProvider ?? DEFAULT_URL_PROVIDER,
62
+ };
63
+
64
+ // Configure SPA or MPA page view tracking
65
+ if (isBrowser()) {
66
+ if (this.options.appType === 'singlePage') {
67
+ this.setupSPATracking();
68
+ } else {
69
+ this.setupMPATracking();
70
+ }
71
+
72
+ this.trackerActive = true;
73
+ }
74
+ }
75
+
76
+ public cleanup() {
77
+ // No-op if document listener is not active
78
+ if (!this.trackerActive) {
79
+ return;
80
+ }
81
+
82
+ // Clean up SPA page view listeners
83
+ if (this.spaTrackingActive) {
84
+ window.history.pushState = this.originalPushState;
85
+ window.history.replaceState = this.originalReplaceState;
86
+ this.pushStateProxy?.revoke();
87
+ this.replaceStateProxy?.revoke();
88
+ window.removeEventListener('popstate', this.handleLocationChange);
89
+
90
+ this.spaTrackingActive = false;
91
+ }
92
+ }
93
+
94
+ private setupSPATracking() {
95
+ if (!this.spaTrackingActive) {
96
+ // Configure proxies on History APIs
97
+ this.pushStateProxy = Proxy.revocable(window.history.pushState, {
98
+ apply: (target, thisArg, args) => {
99
+ target.apply(thisArg, args as any);
100
+ this.handleLocationChange();
101
+ },
102
+ });
103
+ this.replaceStateProxy = Proxy.revocable(window.history.replaceState, {
104
+ apply: (target, thisArg, args) => {
105
+ target.apply(thisArg, args as any);
106
+ this.handleLocationChange();
107
+ },
108
+ });
109
+
110
+ this.originalPushState = window.history.pushState;
111
+ this.originalReplaceState = window.history.replaceState;
112
+ window.history.pushState = this.pushStateProxy.proxy;
113
+ window.history.replaceState = this.replaceStateProxy.proxy;
114
+ window.addEventListener('popstate', this.handleLocationChange);
115
+ sessionStorage.removeItem(PREV_URL_STORAGE_KEY);
116
+
117
+ this.spaTrackingActive = true;
118
+ }
119
+ }
120
+
121
+ private setupMPATracking() {
122
+ this.handleLocationChange();
123
+ }
124
+
125
+ private handleLocationChange() {
126
+ const currentUrl = this.options.urlProvider!();
127
+ const eventName = this.options.eventName || DEFAULT_EVENT_NAME;
128
+
129
+ if (this.urlHasChanged()) {
130
+ sessionStorage.setItem(PREV_URL_STORAGE_KEY, currentUrl);
131
+
132
+ // Assemble attribute list
133
+ const attributes = Object.assign(
134
+ {
135
+ url: currentUrl,
136
+ },
137
+ this.options.attributes,
138
+ );
139
+
140
+ logger.debug('Recording automatically tracked page view event', {
141
+ eventName,
142
+ attributes,
143
+ });
144
+
145
+ this.eventRecorder(eventName, attributes);
146
+ }
147
+ }
148
+
149
+ private urlHasChanged() {
150
+ const prevUrl = sessionStorage.getItem(PREV_URL_STORAGE_KEY);
151
+ const currUrl = this.options.urlProvider!();
152
+
153
+ return currUrl !== prevUrl;
154
+ }
155
+ }