@aws-amplify/analytics 7.0.1-console-preview.f63250a.0 → 7.0.1-console-preview.e8aa063.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 (254) hide show
  1. package/lib/errors/AnalyticsError.d.ts +7 -0
  2. package/lib/errors/AnalyticsError.js +23 -0
  3. package/lib/errors/assertValidationError.d.ts +5 -0
  4. package/lib/errors/assertValidationError.js +17 -0
  5. package/lib/errors/index.d.ts +3 -0
  6. package/lib/errors/index.js +12 -0
  7. package/lib/errors/validation.d.ts +9 -0
  8. package/lib/errors/validation.js +31 -0
  9. package/lib/index.d.ts +0 -3
  10. package/lib/index.js +0 -15
  11. package/lib/providers/pinpoint/apis/identifyUser.d.ts +10 -0
  12. package/lib/providers/pinpoint/apis/identifyUser.js +44 -0
  13. package/lib/providers/pinpoint/apis/index.d.ts +2 -0
  14. package/lib/providers/pinpoint/apis/index.js +9 -0
  15. package/lib/providers/pinpoint/apis/record.d.ts +11 -0
  16. package/lib/providers/pinpoint/apis/record.js +44 -0
  17. package/lib/providers/pinpoint/index.d.ts +1 -1
  18. package/lib/providers/pinpoint/index.js +1 -7
  19. package/lib/providers/pinpoint/types/errors.d.ts +9 -0
  20. package/lib/providers/pinpoint/types/errors.js +15 -0
  21. package/lib/providers/pinpoint/types/index.d.ts +2 -0
  22. package/lib/providers/pinpoint/types/index.js +7 -0
  23. package/lib/providers/pinpoint/types/parameters.d.ts +18 -0
  24. package/lib/providers/pinpoint/utils/index.d.ts +2 -0
  25. package/lib/providers/pinpoint/utils/index.js +9 -0
  26. package/lib/providers/pinpoint/utils/resolveConfig.d.ts +7 -0
  27. package/lib/providers/pinpoint/utils/resolveConfig.js +18 -0
  28. package/lib/providers/pinpoint/utils/resolveCredentials.d.ts +12 -0
  29. package/lib/providers/pinpoint/utils/resolveCredentials.js +24 -0
  30. package/lib/setupTests.js +1 -0
  31. package/lib/tsconfig.tsbuildinfo +1 -1
  32. package/{lib-esm/types/Analytics.d.ts → lib/types/analytics.d.ts} +0 -8
  33. package/lib/types/index.d.ts +1 -3
  34. package/lib/types/index.js +1 -3
  35. package/lib/utils/{UserAgent.d.ts → userAgent.d.ts} +1 -1
  36. package/lib/utils/{UserAgent.js → userAgent.js} +5 -5
  37. package/lib-esm/errors/AnalyticsError.d.ts +7 -0
  38. package/lib-esm/errors/AnalyticsError.js +20 -0
  39. package/lib-esm/errors/assertValidationError.d.ts +5 -0
  40. package/lib-esm/errors/assertValidationError.js +13 -0
  41. package/lib-esm/errors/index.d.ts +3 -0
  42. package/lib-esm/errors/index.js +5 -0
  43. package/lib-esm/errors/validation.d.ts +9 -0
  44. package/lib-esm/errors/validation.js +28 -0
  45. package/lib-esm/index.d.ts +0 -3
  46. package/lib-esm/index.js +0 -12
  47. package/lib-esm/providers/pinpoint/apis/identifyUser.d.ts +10 -0
  48. package/lib-esm/providers/pinpoint/apis/identifyUser.js +40 -0
  49. package/lib-esm/providers/pinpoint/apis/index.d.ts +2 -0
  50. package/{src/types/providers/index.ts → lib-esm/providers/pinpoint/apis/index.js} +2 -1
  51. package/lib-esm/providers/pinpoint/apis/record.d.ts +11 -0
  52. package/lib-esm/providers/pinpoint/apis/record.js +40 -0
  53. package/lib-esm/providers/pinpoint/index.d.ts +1 -1
  54. package/lib-esm/providers/pinpoint/index.js +1 -6
  55. package/lib-esm/providers/pinpoint/types/errors.d.ts +9 -0
  56. package/lib-esm/providers/pinpoint/types/errors.js +12 -0
  57. package/lib-esm/providers/pinpoint/types/index.d.ts +2 -0
  58. package/lib-esm/{types/providers → providers/pinpoint/types}/index.js +1 -1
  59. package/lib-esm/providers/pinpoint/types/parameters.d.ts +18 -0
  60. package/lib-esm/providers/pinpoint/utils/index.d.ts +2 -0
  61. package/lib-esm/{utils/AppUtils.js → providers/pinpoint/utils/index.js} +2 -4
  62. package/lib-esm/providers/pinpoint/utils/resolveConfig.d.ts +7 -0
  63. package/lib-esm/providers/pinpoint/utils/resolveConfig.js +14 -0
  64. package/lib-esm/providers/pinpoint/utils/resolveCredentials.d.ts +12 -0
  65. package/lib-esm/providers/pinpoint/utils/resolveCredentials.js +20 -0
  66. package/lib-esm/setupTests.js +1 -0
  67. package/lib-esm/tsconfig.tsbuildinfo +1 -1
  68. package/{lib/types/Analytics.d.ts → lib-esm/types/analytics.d.ts} +0 -8
  69. package/lib-esm/types/index.d.ts +1 -3
  70. package/lib-esm/types/index.js +1 -3
  71. package/lib-esm/utils/{UserAgent.d.ts → userAgent.d.ts} +1 -1
  72. package/lib-esm/utils/{UserAgent.js → userAgent.js} +1 -1
  73. package/package.json +11 -29
  74. package/src/errors/AnalyticsError.ts +18 -0
  75. package/src/errors/assertValidationError.ts +19 -0
  76. package/src/errors/index.ts +6 -0
  77. package/src/errors/validation.ts +31 -0
  78. package/src/index.ts +0 -15
  79. package/src/providers/pinpoint/apis/identifyUser.ts +35 -0
  80. package/src/{utils/AppUtils.ts → providers/pinpoint/apis/index.ts} +2 -4
  81. package/src/providers/pinpoint/apis/record.ts +50 -0
  82. package/src/providers/pinpoint/index.ts +1 -3
  83. package/src/providers/pinpoint/types/errors.ts +12 -0
  84. package/src/providers/pinpoint/types/index.ts +5 -0
  85. package/src/providers/pinpoint/types/parameters.ts +24 -0
  86. package/src/providers/pinpoint/utils/index.ts +5 -0
  87. package/src/providers/pinpoint/utils/resolveConfig.ts +18 -0
  88. package/src/providers/pinpoint/utils/resolveCredentials.ts +20 -0
  89. package/src/types/{Analytics.ts → analytics.ts} +1 -10
  90. package/src/types/index.ts +1 -3
  91. package/src/utils/{UserAgent.ts → userAgent.ts} +1 -1
  92. package/lib/Analytics.d.ts +0 -87
  93. package/lib/Analytics.js +0 -354
  94. package/lib/providers/AWSKinesisFirehoseProvider.d.ts +0 -12
  95. package/lib/providers/AWSKinesisFirehoseProvider.js +0 -82
  96. package/lib/providers/AWSKinesisProvider.d.ts +0 -43
  97. package/lib/providers/AWSKinesisProvider.js +0 -240
  98. package/lib/providers/AWSPinpointProvider.d.ts +0 -67
  99. package/lib/providers/AWSPinpointProvider.js +0 -576
  100. package/lib/providers/AmazonPersonalizeHelper/DataType.d.ts +0 -40
  101. package/lib/providers/AmazonPersonalizeHelper/MediaAutoTrack.d.ts +0 -20
  102. package/lib/providers/AmazonPersonalizeHelper/MediaAutoTrack.js +0 -156
  103. package/lib/providers/AmazonPersonalizeHelper/SessionInfoManager.d.ts +0 -17
  104. package/lib/providers/AmazonPersonalizeHelper/SessionInfoManager.js +0 -96
  105. package/lib/providers/AmazonPersonalizeHelper/index.d.ts +0 -3
  106. package/lib/providers/AmazonPersonalizeHelper/index.js +0 -7
  107. package/lib/providers/AmazonPersonalizeProvider.d.ts +0 -76
  108. package/lib/providers/AmazonPersonalizeProvider.js +0 -331
  109. package/lib/providers/EventBuffer.d.ts +0 -28
  110. package/lib/providers/EventBuffer.js +0 -209
  111. package/lib/providers/index.d.ts +0 -4
  112. package/lib/providers/index.js +0 -14
  113. package/lib/trackers/EventTracker.d.ts +0 -9
  114. package/lib/trackers/EventTracker.js +0 -99
  115. package/lib/trackers/PageViewTracker.d.ts +0 -12
  116. package/lib/trackers/PageViewTracker.js +0 -158
  117. package/lib/trackers/SessionTracker-rn.d.ts +0 -12
  118. package/lib/trackers/SessionTracker-rn.js +0 -134
  119. package/lib/trackers/SessionTracker.d.ts +0 -14
  120. package/lib/trackers/SessionTracker.js +0 -163
  121. package/lib/trackers/index.d.ts +0 -3
  122. package/lib/trackers/index.js +0 -11
  123. package/lib/trackers/reactnative.d.ts +0 -8
  124. package/lib/trackers/reactnative.js +0 -19
  125. package/lib/types/Analytics.js +0 -2
  126. package/lib/types/Provider.d.ts +0 -10
  127. package/lib/types/providers/AWSKinesisProvider.d.ts +0 -6
  128. package/lib/types/providers/AWSKinesisProvider.js +0 -2
  129. package/lib/types/providers/AWSPinpointProvider.d.ts +0 -50
  130. package/lib/types/providers/AWSPinpointProvider.js +0 -2
  131. package/lib/types/providers/AmazonPersonalizeProvider.d.ts +0 -7
  132. package/lib/types/providers/AmazonPersonalizeProvider.js +0 -2
  133. package/lib/types/providers/index.d.ts +0 -1
  134. package/lib/types/providers/index.js +0 -6
  135. package/lib/utils/AppUtils.d.ts +0 -2
  136. package/lib/utils/AppUtils.js +0 -9
  137. package/lib/utils/AppUtils.native.d.ts +0 -2
  138. package/lib/utils/AppUtils.native.js +0 -10
  139. package/lib/utils/MethodEmbed.d.ts +0 -11
  140. package/lib/utils/MethodEmbed.js +0 -43
  141. package/lib/vendor/dom-utils/closest.d.ts +0 -12
  142. package/lib/vendor/dom-utils/closest.js +0 -27
  143. package/lib/vendor/dom-utils/delegate.d.ts +0 -18
  144. package/lib/vendor/dom-utils/delegate.js +0 -51
  145. package/lib/vendor/dom-utils/dispatch.d.ts +0 -17
  146. package/lib/vendor/dom-utils/dispatch.js +0 -51
  147. package/lib/vendor/dom-utils/get-attributes.d.ts +0 -11
  148. package/lib/vendor/dom-utils/get-attributes.js +0 -28
  149. package/lib/vendor/dom-utils/index.d.ts +0 -7
  150. package/lib/vendor/dom-utils/index.js +0 -17
  151. package/lib/vendor/dom-utils/matches.d.ts +0 -11
  152. package/lib/vendor/dom-utils/matches.js +0 -69
  153. package/lib/vendor/dom-utils/parents.d.ts +0 -10
  154. package/lib/vendor/dom-utils/parents.js +0 -22
  155. package/lib/vendor/dom-utils/parse-url.d.ts +0 -9
  156. package/lib/vendor/dom-utils/parse-url.js +0 -59
  157. package/lib-esm/Analytics.d.ts +0 -87
  158. package/lib-esm/Analytics.js +0 -351
  159. package/lib-esm/providers/AWSKinesisFirehoseProvider.d.ts +0 -12
  160. package/lib-esm/providers/AWSKinesisFirehoseProvider.js +0 -79
  161. package/lib-esm/providers/AWSKinesisProvider.d.ts +0 -43
  162. package/lib-esm/providers/AWSKinesisProvider.js +0 -237
  163. package/lib-esm/providers/AWSPinpointProvider.d.ts +0 -67
  164. package/lib-esm/providers/AWSPinpointProvider.js +0 -573
  165. package/lib-esm/providers/AmazonPersonalizeHelper/DataType.d.ts +0 -40
  166. package/lib-esm/providers/AmazonPersonalizeHelper/MediaAutoTrack.d.ts +0 -20
  167. package/lib-esm/providers/AmazonPersonalizeHelper/MediaAutoTrack.js +0 -153
  168. package/lib-esm/providers/AmazonPersonalizeHelper/SessionInfoManager.d.ts +0 -17
  169. package/lib-esm/providers/AmazonPersonalizeHelper/SessionInfoManager.js +0 -92
  170. package/lib-esm/providers/AmazonPersonalizeHelper/index.d.ts +0 -3
  171. package/lib-esm/providers/AmazonPersonalizeHelper/index.js +0 -2
  172. package/lib-esm/providers/AmazonPersonalizeProvider.d.ts +0 -76
  173. package/lib-esm/providers/AmazonPersonalizeProvider.js +0 -328
  174. package/lib-esm/providers/EventBuffer.d.ts +0 -28
  175. package/lib-esm/providers/EventBuffer.js +0 -207
  176. package/lib-esm/providers/index.d.ts +0 -4
  177. package/lib-esm/providers/index.js +0 -7
  178. package/lib-esm/trackers/EventTracker.d.ts +0 -9
  179. package/lib-esm/trackers/EventTracker.js +0 -96
  180. package/lib-esm/trackers/PageViewTracker.d.ts +0 -12
  181. package/lib-esm/trackers/PageViewTracker.js +0 -155
  182. package/lib-esm/trackers/SessionTracker-rn.d.ts +0 -12
  183. package/lib-esm/trackers/SessionTracker-rn.js +0 -131
  184. package/lib-esm/trackers/SessionTracker.d.ts +0 -14
  185. package/lib-esm/trackers/SessionTracker.js +0 -160
  186. package/lib-esm/trackers/index.d.ts +0 -3
  187. package/lib-esm/trackers/index.js +0 -5
  188. package/lib-esm/trackers/reactnative.d.ts +0 -8
  189. package/lib-esm/trackers/reactnative.js +0 -14
  190. package/lib-esm/types/Analytics.js +0 -1
  191. package/lib-esm/types/Provider.d.ts +0 -10
  192. package/lib-esm/types/providers/AWSKinesisProvider.d.ts +0 -6
  193. package/lib-esm/types/providers/AWSKinesisProvider.js +0 -1
  194. package/lib-esm/types/providers/AWSPinpointProvider.d.ts +0 -50
  195. package/lib-esm/types/providers/AWSPinpointProvider.js +0 -1
  196. package/lib-esm/types/providers/AmazonPersonalizeProvider.d.ts +0 -7
  197. package/lib-esm/types/providers/AmazonPersonalizeProvider.js +0 -1
  198. package/lib-esm/types/providers/index.d.ts +0 -1
  199. package/lib-esm/utils/AppUtils.d.ts +0 -2
  200. package/lib-esm/utils/AppUtils.native.d.ts +0 -2
  201. package/lib-esm/utils/AppUtils.native.js +0 -7
  202. package/lib-esm/utils/MethodEmbed.d.ts +0 -11
  203. package/lib-esm/utils/MethodEmbed.js +0 -40
  204. package/lib-esm/vendor/dom-utils/closest.d.ts +0 -12
  205. package/lib-esm/vendor/dom-utils/closest.js +0 -23
  206. package/lib-esm/vendor/dom-utils/delegate.d.ts +0 -18
  207. package/lib-esm/vendor/dom-utils/delegate.js +0 -47
  208. package/lib-esm/vendor/dom-utils/dispatch.d.ts +0 -17
  209. package/lib-esm/vendor/dom-utils/dispatch.js +0 -47
  210. package/lib-esm/vendor/dom-utils/get-attributes.d.ts +0 -11
  211. package/lib-esm/vendor/dom-utils/get-attributes.js +0 -24
  212. package/lib-esm/vendor/dom-utils/index.d.ts +0 -7
  213. package/lib-esm/vendor/dom-utils/index.js +0 -7
  214. package/lib-esm/vendor/dom-utils/matches.d.ts +0 -11
  215. package/lib-esm/vendor/dom-utils/matches.js +0 -65
  216. package/lib-esm/vendor/dom-utils/parents.d.ts +0 -10
  217. package/lib-esm/vendor/dom-utils/parents.js +0 -18
  218. package/lib-esm/vendor/dom-utils/parse-url.d.ts +0 -9
  219. package/lib-esm/vendor/dom-utils/parse-url.js +0 -55
  220. package/src/Analytics.ts +0 -446
  221. package/src/providers/AWSKinesisFirehoseProvider.ts +0 -105
  222. package/src/providers/AWSKinesisProvider.ts +0 -250
  223. package/src/providers/AWSPinpointProvider.ts +0 -685
  224. package/src/providers/AmazonPersonalizeHelper/DataType.ts +0 -49
  225. package/src/providers/AmazonPersonalizeHelper/MediaAutoTrack.ts +0 -196
  226. package/src/providers/AmazonPersonalizeHelper/SessionInfoManager.ts +0 -121
  227. package/src/providers/AmazonPersonalizeHelper/index.ts +0 -11
  228. package/src/providers/AmazonPersonalizeProvider.ts +0 -398
  229. package/src/providers/EventBuffer.ts +0 -257
  230. package/src/providers/index.ts +0 -8
  231. package/src/trackers/EventTracker.ts +0 -115
  232. package/src/trackers/PageViewTracker.ts +0 -157
  233. package/src/trackers/SessionTracker-rn.ts +0 -134
  234. package/src/trackers/SessionTracker.ts +0 -179
  235. package/src/trackers/index.ts +0 -5
  236. package/src/trackers/reactnative.ts +0 -13
  237. package/src/types/Provider.ts +0 -26
  238. package/src/types/providers/AWSKinesisProvider.ts +0 -8
  239. package/src/types/providers/AWSPinpointProvider.ts +0 -60
  240. package/src/types/providers/AmazonPersonalizeProvider.ts +0 -9
  241. package/src/utils/AppUtils.native.ts +0 -9
  242. package/src/utils/MethodEmbed.ts +0 -49
  243. package/src/vendor/dom-utils/closest.ts +0 -25
  244. package/src/vendor/dom-utils/delegate.ts +0 -51
  245. package/src/vendor/dom-utils/dispatch.ts +0 -59
  246. package/src/vendor/dom-utils/get-attributes.ts +0 -26
  247. package/src/vendor/dom-utils/index.ts +0 -7
  248. package/src/vendor/dom-utils/matches.ts +0 -68
  249. package/src/vendor/dom-utils/parents.ts +0 -19
  250. package/src/vendor/dom-utils/parse-url.ts +0 -66
  251. /package/lib/{types/Provider.js → providers/pinpoint/types/parameters.js} +0 -0
  252. /package/lib/{providers/AmazonPersonalizeHelper/DataType.js → types/analytics.js} +0 -0
  253. /package/lib-esm/{types/Provider.js → providers/pinpoint/types/parameters.js} +0 -0
  254. /package/lib-esm/{providers/AmazonPersonalizeHelper/DataType.js → types/analytics.js} +0 -0
@@ -1,65 +0,0 @@
1
- /**
2
- * Copyright (c) 2017, Philip Walton <philip@philipwalton.com>
3
- */
4
- import { browserOrNode } from '@aws-amplify/core';
5
- var proto = browserOrNode().isBrowser && window['Element']
6
- ? window['Element'].prototype
7
- : null;
8
- var nativeMatches = proto
9
- ? proto.matches ||
10
- // @ts-ignore
11
- proto.matchesSelector ||
12
- // @ts-ignore
13
- proto.webkitMatchesSelector ||
14
- // @ts-ignore
15
- proto.mozMatchesSelector ||
16
- // @ts-ignore
17
- proto.msMatchesSelector ||
18
- // @ts-ignore
19
- proto.oMatchesSelector
20
- : null;
21
- /**
22
- * Tests if a DOM elements matches any of the test DOM elements or selectors.
23
- * @param {Element} element The DOM element to test.
24
- * @param {Element|string|Array<Element|string>} test A DOM element, a CSS
25
- * selector, or an array of DOM elements or CSS selectors to match against.
26
- * @return {boolean} True of any part of the test matches.
27
- */
28
- export function matches(element, test) {
29
- // Validate input.
30
- if (element && element.nodeType === 1 && test) {
31
- // if test is a string or DOM element test it.
32
- if (typeof test === 'string' || test.nodeType === 1) {
33
- return (element === test || matchesSelector(element, /** @type {string} */ test));
34
- }
35
- else if ('length' in test) {
36
- // if it has a length property iterate over the items
37
- // and return true if any match.
38
- for (var i = 0, item = void 0; (item = test[i]); i++) {
39
- if (element === item || matchesSelector(element, item))
40
- return true;
41
- }
42
- }
43
- }
44
- // Still here? Return false
45
- return false;
46
- }
47
- /**
48
- * Tests whether a DOM element matches a selector. This polyfills the native
49
- * Element.prototype.matches method across browsers.
50
- * @param {!Element} element The DOM element to test.
51
- * @param {string} selector The CSS selector to test element against.
52
- * @return {boolean} True if the selector matches.
53
- */
54
- function matchesSelector(element, selector) {
55
- if (typeof selector !== 'string')
56
- return false;
57
- if (nativeMatches)
58
- return nativeMatches.call(element, selector);
59
- var nodes = element.parentNode.querySelectorAll(selector);
60
- for (var i = 0, node = void 0; (node = nodes[i]); i++) {
61
- if (node === element)
62
- return true;
63
- }
64
- return false;
65
- }
@@ -1,10 +0,0 @@
1
- /**
2
- * Copyright (c) 2017, Philip Walton <philip@philipwalton.com>
3
- */
4
- /**
5
- * Returns an array of a DOM element's parent elements.
6
- * @param {!Element} element The DOM element whose parents to get.
7
- * @return {!Array} An array of all parent elemets, or an empty array if no
8
- * parent elements are found.
9
- */
10
- export declare function parents(ele: any): any[];
@@ -1,18 +0,0 @@
1
- /**
2
- * Copyright (c) 2017, Philip Walton <philip@philipwalton.com>
3
- */
4
- /**
5
- * Returns an array of a DOM element's parent elements.
6
- * @param {!Element} element The DOM element whose parents to get.
7
- * @return {!Array} An array of all parent elemets, or an empty array if no
8
- * parent elements are found.
9
- */
10
- export function parents(ele) {
11
- var list = [];
12
- var element = ele;
13
- while (element && element.parentNode && element.parentNode.nodeType === 1) {
14
- element = /** @type {!Element} */ element.parentNode;
15
- list.push(element);
16
- }
17
- return list;
18
- }
@@ -1,9 +0,0 @@
1
- /**
2
- * Copyright (c) 2017, Philip Walton <philip@philipwalton.com>
3
- */
4
- /**
5
- * Parses the given url and returns an object mimicing a `Location` object.
6
- * @param {string} url The url to parse.
7
- * @return {!Object} An object with the same properties as a `Location`.
8
- */
9
- export declare function parseUrl(u: any): any;
@@ -1,55 +0,0 @@
1
- /**
2
- * Copyright (c) 2017, Philip Walton <philip@philipwalton.com>
3
- */
4
- import { browserOrNode } from '@aws-amplify/core';
5
- var HTTP_PORT = '80';
6
- var HTTPS_PORT = '443';
7
- var DEFAULT_PORT = RegExp(':(' + HTTP_PORT + '|' + HTTPS_PORT + ')$');
8
- var a = browserOrNode().isBrowser ? document.createElement('a') : null;
9
- var cache = {};
10
- /**
11
- * Parses the given url and returns an object mimicing a `Location` object.
12
- * @param {string} url The url to parse.
13
- * @return {!Object} An object with the same properties as a `Location`.
14
- */
15
- export function parseUrl(u) {
16
- var url = u;
17
- // All falsy values (as well as ".") should map to the current URL.
18
- url = !url || url === '.' ? location.href : url;
19
- if (cache[url])
20
- return cache[url];
21
- a.href = url;
22
- // When parsing file relative paths (e.g. `../index.html`), IE will correctly
23
- // resolve the `href` property but will keep the `..` in the `path` property.
24
- // It will also not include the `host` or `hostname` properties. Furthermore,
25
- // IE will sometimes return no protocol or just a colon, especially for things
26
- // like relative protocol URLs (e.g. "//google.com").
27
- // To workaround all of these issues, we reparse with the full URL from the
28
- // `href` property.
29
- if (url.charAt(0) === '.' || url.charAt(0) === '/')
30
- return parseUrl(a.href);
31
- // Don't include default ports.
32
- var port = a.port === HTTP_PORT || a.port === HTTPS_PORT ? '' : a.port;
33
- // PhantomJS sets the port to "0" when using the file: protocol.
34
- port = port === '0' ? '' : port;
35
- // Sometimes IE incorrectly includes a port for default ports
36
- // (e.g. `:80` or `:443`) even when no port is specified in the URL.
37
- // http://bit.ly/1rQNoMg
38
- var host = a.host.replace(DEFAULT_PORT, '');
39
- // Not all browser support `origin` so we have to build it.
40
- var origin = a['origin'] ? a['origin'] : a.protocol + '//' + host;
41
- // Sometimes IE doesn't include the leading slash for pathname.
42
- // http://bit.ly/1rQNoMg
43
- var pathname = a.pathname.charAt(0) === '/' ? a.pathname : '/' + a.pathname;
44
- return (cache[url] = {
45
- hash: a.hash,
46
- host: host,
47
- hostname: a.hostname,
48
- href: a.href,
49
- origin: origin,
50
- pathname: pathname,
51
- port: port,
52
- protocol: a.protocol,
53
- search: a.search,
54
- });
55
- }
package/src/Analytics.ts DELETED
@@ -1,446 +0,0 @@
1
- // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
- // SPDX-License-Identifier: Apache-2.0
3
-
4
- import {
5
- Amplify,
6
- ConsoleLogger as Logger,
7
- Hub,
8
- parseAWSExports,
9
- } from '@aws-amplify/core';
10
- import { AWSPinpointProvider } from './providers/AWSPinpointProvider';
11
-
12
- import {
13
- AnalyticsProvider,
14
- EventAttributes,
15
- EventMetrics,
16
- AnalyticsEvent,
17
- AutoTrackSessionOpts,
18
- AutoTrackPageViewOpts,
19
- AutoTrackEventOpts,
20
- PersonalizeAnalyticsEvent,
21
- KinesisAnalyticsEvent,
22
- } from './types';
23
- import { PageViewTracker, EventTracker, SessionTracker } from './trackers';
24
-
25
- const logger = new Logger('AnalyticsClass');
26
-
27
- const AMPLIFY_SYMBOL = (
28
- typeof Symbol !== 'undefined' && typeof Symbol.for === 'function'
29
- ? Symbol.for('amplify_default')
30
- : '@@amplify_default'
31
- ) as Symbol;
32
-
33
- const dispatchAnalyticsEvent = (event: string, data: any, message: string) => {
34
- Hub.dispatch(
35
- 'analytics',
36
- { event, data, message },
37
- 'Analytics',
38
- AMPLIFY_SYMBOL
39
- );
40
- };
41
-
42
- const trackers = {
43
- pageView: PageViewTracker,
44
- event: EventTracker,
45
- session: SessionTracker,
46
- };
47
-
48
- type TrackerTypes = keyof typeof trackers;
49
- type Trackers = (typeof trackers)[TrackerTypes];
50
- let _instance = null;
51
-
52
- /**
53
- * Provide mobile analytics client functions
54
- */
55
- export class AnalyticsClass {
56
- private _config;
57
- private _pluggables: AnalyticsProvider[];
58
- private _disabled: boolean;
59
- private _trackers: Trackers | {};
60
-
61
- /**
62
- * Initialize Analtyics
63
- * @param config - Configuration of the Analytics
64
- */
65
- constructor() {
66
- this._config = {};
67
- this._pluggables = [];
68
- this._disabled = false;
69
- this._trackers = {};
70
- _instance = this;
71
-
72
- this.record = this.record.bind(this);
73
- Hub.listen('auth', listener);
74
- Hub.listen('storage', listener);
75
- Hub.listen('analytics', listener);
76
- Hub.listen('core', listener);
77
- }
78
-
79
- public getModuleName() {
80
- return 'Analytics';
81
- }
82
- /**
83
- * configure Analytics
84
- * @param {Object} config - Configuration of the Analytics
85
- */
86
- public configure(config?) {
87
- if (!config) return this._config;
88
- logger.debug('configure Analytics', config);
89
- const amplifyConfig = parseAWSExports(config);
90
- this._config = Object.assign(
91
- {},
92
- this._config,
93
- amplifyConfig.Analytics,
94
- config
95
- );
96
-
97
- if (this._config['disabled']) {
98
- this._disabled = true;
99
- }
100
-
101
- // turn on the autoSessionRecord if not specified
102
- if (this._config['autoSessionRecord'] === undefined) {
103
- this._config['autoSessionRecord'] = true;
104
- }
105
-
106
- this._pluggables.forEach(pluggable => {
107
- // for backward compatibility
108
- const providerConfig =
109
- pluggable.getProviderName() === 'AWSPinpoint' &&
110
- !this._config['AWSPinpoint']
111
- ? this._config
112
- : this._config[pluggable.getProviderName()];
113
-
114
- pluggable.configure({
115
- disabled: this._config['disabled'],
116
- autoSessionRecord: this._config['autoSessionRecord'],
117
- ...providerConfig,
118
- });
119
- });
120
-
121
- if (this._pluggables.length === 0) {
122
- this.addPluggable(new AWSPinpointProvider());
123
- }
124
-
125
- dispatchAnalyticsEvent(
126
- 'configured',
127
- null,
128
- `The Analytics category has been configured successfully`
129
- );
130
- logger.debug('current configuration', this._config);
131
- return this._config;
132
- }
133
-
134
- /**
135
- * add plugin into Analytics category
136
- * @param pluggable - an instance of the plugin
137
- */
138
- public addPluggable(pluggable: AnalyticsProvider) {
139
- if (pluggable && pluggable.getCategory() === 'Analytics') {
140
- this._pluggables.push(pluggable);
141
- // for backward compatibility
142
- const providerConfig =
143
- pluggable.getProviderName() === 'AWSPinpoint' &&
144
- !this._config['AWSPinpoint']
145
- ? this._config
146
- : this._config[pluggable.getProviderName()];
147
- const config = { disabled: this._config['disabled'], ...providerConfig };
148
- pluggable.configure(config);
149
- return config;
150
- }
151
- }
152
-
153
- /**
154
- * Get the plugin object
155
- * @param providerName - the name of the provider to be removed
156
- */
157
- public getPluggable(providerName: string): AnalyticsProvider {
158
- for (let i = 0; i < this._pluggables.length; i += 1) {
159
- const pluggable = this._pluggables[i];
160
- if (pluggable.getProviderName() === providerName) {
161
- return pluggable;
162
- }
163
- }
164
-
165
- logger.debug('No plugin found with providerName', providerName);
166
- return null;
167
- }
168
-
169
- /**
170
- * Remove the plugin object
171
- * @param providerName - the name of the provider to be removed
172
- */
173
- public removePluggable(providerName: string): void {
174
- let idx = 0;
175
- while (idx < this._pluggables.length) {
176
- if (this._pluggables[idx].getProviderName() === providerName) {
177
- break;
178
- }
179
- idx += 1;
180
- }
181
-
182
- if (idx === this._pluggables.length) {
183
- logger.debug('No plugin found with providerName', providerName);
184
- return;
185
- } else {
186
- this._pluggables.splice(idx, idx + 1);
187
- return;
188
- }
189
- }
190
-
191
- /**
192
- * stop sending events
193
- */
194
- public disable() {
195
- this._disabled = true;
196
- }
197
-
198
- /**
199
- * start sending events
200
- */
201
- public enable() {
202
- this._disabled = false;
203
- }
204
-
205
- /**
206
- * Record Session start
207
- * @param [provider] - name of the provider.
208
- * @return - A promise which resolves if buffer doesn't overflow
209
- */
210
- public async startSession(provider?: string) {
211
- const event = { name: '_session.start' };
212
- const params = { event, provider };
213
-
214
- dispatchAnalyticsEvent(
215
- 'record',
216
- event,
217
- 'Recording Analytics session start event'
218
- );
219
-
220
- return this._sendEvent(params);
221
- }
222
-
223
- /**
224
- * Record Session stop
225
- * @param [provider] - name of the provider.
226
- * @return - A promise which resolves if buffer doesn't overflow
227
- */
228
- public async stopSession(provider?: string) {
229
- const event = { name: '_session.stop' };
230
- const params = { event, provider };
231
-
232
- dispatchAnalyticsEvent(
233
- 'record',
234
- event,
235
- 'Recording Analytics session stop event'
236
- );
237
-
238
- return this._sendEvent(params);
239
- }
240
-
241
- /**
242
- * Record one analytic event and send it to Pinpoint
243
- * @param event - An object with the name of the event, attributes of the event and event metrics.
244
- * @param [provider] - name of the provider.
245
- */
246
- public async record(
247
- event: AnalyticsEvent | PersonalizeAnalyticsEvent | KinesisAnalyticsEvent,
248
- provider?: string
249
- ) {
250
- const params = { event, provider };
251
-
252
- dispatchAnalyticsEvent('record', params.event, 'Recording Analytics event');
253
-
254
- return this._sendEvent(params);
255
- }
256
-
257
- public async updateEndpoint(
258
- attrs: { [key: string]: any },
259
- provider?: string
260
- ) {
261
- const event = { ...attrs, name: '_update_endpoint' };
262
-
263
- return this.record(event, provider);
264
- }
265
-
266
- private _sendEvent(params: {
267
- event: AnalyticsEvent | PersonalizeAnalyticsEvent | KinesisAnalyticsEvent;
268
- provider?: string;
269
- }) {
270
- if (this._disabled) {
271
- logger.debug('Analytics has been disabled');
272
- return Promise.resolve();
273
- }
274
-
275
- const provider = params.provider ? params.provider : 'AWSPinpoint';
276
- return new Promise((resolve, reject) => {
277
- this._pluggables.forEach(pluggable => {
278
- if (pluggable.getProviderName() === provider) {
279
- pluggable.record(params, { resolve, reject });
280
- }
281
- });
282
- });
283
- }
284
-
285
- /**
286
- * Enable or disable auto tracking
287
- * @param trackerType - The type of tracker to activate.
288
- * @param [opts] - Auto tracking options.
289
- */
290
- public autoTrack(trackerType: 'session', opts: AutoTrackSessionOpts);
291
- public autoTrack(trackerType: 'pageView', opts: AutoTrackPageViewOpts);
292
- public autoTrack(trackerType: 'event', opts: AutoTrackEventOpts);
293
- // ensures backwards compatibility for non-pinpoint provider users
294
- public autoTrack(
295
- trackerType: TrackerTypes,
296
- opts: { provider: string; [key: string]: any }
297
- );
298
- public autoTrack(trackerType: TrackerTypes, opts: { [key: string]: any }) {
299
- if (!trackers[trackerType]) {
300
- logger.debug('invalid tracker type');
301
- return;
302
- }
303
-
304
- // to sync up two different configuration ways of auto session tracking
305
- if (trackerType === 'session') {
306
- this._config['autoSessionRecord'] = opts['enable'];
307
- }
308
-
309
- const tracker = this._trackers[trackerType];
310
- if (!tracker) {
311
- this._trackers[trackerType] = new trackers[trackerType](
312
- this.record,
313
- opts
314
- );
315
- } else {
316
- tracker.configure(opts);
317
- }
318
- }
319
- }
320
-
321
- let endpointUpdated = false;
322
- let authConfigured = false;
323
- let analyticsConfigured = false;
324
- let credentialsConfigured = false;
325
-
326
- const listener = capsule => {
327
- const { channel, payload } = capsule;
328
- logger.debug('on hub capsule ' + channel, payload);
329
-
330
- switch (channel) {
331
- case 'auth':
332
- authEvent(payload);
333
- break;
334
- case 'storage':
335
- storageEvent(payload);
336
- break;
337
- case 'analytics':
338
- analyticsEvent(payload);
339
- break;
340
- case 'core':
341
- coreEvent(payload);
342
- break;
343
- default:
344
- break;
345
- }
346
- };
347
-
348
- const storageEvent = payload => {
349
- const {
350
- data: { attrs, metrics },
351
- } = payload;
352
- if (!attrs) return;
353
-
354
- if (analyticsConfigured) {
355
- _instance
356
- .record({
357
- name: 'Storage',
358
- attributes: attrs,
359
- metrics,
360
- })
361
- .catch(e => {
362
- logger.debug('Failed to send the storage event automatically', e);
363
- });
364
- }
365
- };
366
-
367
- const authEvent = payload => {
368
- const { event } = payload;
369
- if (!event) {
370
- return;
371
- }
372
-
373
- const recordAuthEvent = async eventName => {
374
- if (authConfigured && analyticsConfigured) {
375
- try {
376
- return await _instance.record({ name: `_userauth.${eventName}` });
377
- } catch (err) {
378
- logger.debug(
379
- `Failed to send the ${eventName} event automatically`,
380
- err
381
- );
382
- }
383
- }
384
- };
385
-
386
- switch (event) {
387
- case 'signIn':
388
- return recordAuthEvent('sign_in');
389
- case 'signUp':
390
- return recordAuthEvent('sign_up');
391
- case 'signOut':
392
- return recordAuthEvent('sign_out');
393
- case 'signIn_failure':
394
- return recordAuthEvent('auth_fail');
395
- case 'configured':
396
- authConfigured = true;
397
- if (analyticsConfigured) {
398
- sendEvents();
399
- }
400
- break;
401
- }
402
- };
403
-
404
- const analyticsEvent = payload => {
405
- const { event } = payload;
406
- if (!event) return;
407
-
408
- switch (event) {
409
- case 'pinpointProvider_configured':
410
- analyticsConfigured = true;
411
- if (authConfigured || credentialsConfigured) {
412
- sendEvents();
413
- }
414
- break;
415
- }
416
- };
417
-
418
- const coreEvent = payload => {
419
- const { event } = payload;
420
- if (!event) return;
421
-
422
- switch (event) {
423
- case 'credentials_configured':
424
- credentialsConfigured = true;
425
- if (analyticsConfigured) {
426
- sendEvents();
427
- }
428
- break;
429
- }
430
- };
431
-
432
- const sendEvents = () => {
433
- const config = _instance.configure();
434
- if (!endpointUpdated && config['autoSessionRecord']) {
435
- _instance.updateEndpoint({ immediate: true }).catch(e => {
436
- logger.debug('Failed to update the endpoint', e);
437
- });
438
- endpointUpdated = true;
439
- }
440
- _instance.autoTrack('session', {
441
- enable: config['autoSessionRecord'],
442
- });
443
- };
444
-
445
- export const Analytics = new AnalyticsClass();
446
- Amplify.register(Analytics);
@@ -1,105 +0,0 @@
1
- // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
- // SPDX-License-Identifier: Apache-2.0
3
-
4
- import { AnalyticsAction, ConsoleLogger as Logger } from '@aws-amplify/core';
5
- import { AWSKinesisProvider } from './AWSKinesisProvider';
6
- import {
7
- PutRecordBatchCommand,
8
- FirehoseClient,
9
- } from '@aws-sdk/client-firehose';
10
- import { fromUtf8 } from '@aws-sdk/util-utf8-browser';
11
- import { getAnalyticsUserAgent } from '../utils/UserAgent';
12
-
13
- const logger = new Logger('AWSKineisFirehoseProvider');
14
-
15
- export class AWSKinesisFirehoseProvider extends AWSKinesisProvider {
16
- private _kinesisFirehose: FirehoseClient;
17
-
18
- constructor(config?) {
19
- super(config);
20
- }
21
-
22
- /**
23
- * get provider name of the plugin
24
- */
25
- public getProviderName(): string {
26
- return 'AWSKinesisFirehose';
27
- }
28
-
29
- protected _sendEvents(group) {
30
- if (group.length === 0) {
31
- return;
32
- }
33
-
34
- const { config, credentials } = group[0];
35
-
36
- const initClients = this._init(config, credentials);
37
- if (!initClients) return false;
38
-
39
- const records = {};
40
-
41
- group.map(params => {
42
- // split by streamName
43
- const evt = params.event;
44
- const { streamName, data } = evt;
45
- if (records[streamName] === undefined) {
46
- records[streamName] = [];
47
- }
48
-
49
- const bufferData =
50
- data && typeof data !== 'string' ? JSON.stringify(data) : data;
51
- const Data = fromUtf8(bufferData);
52
- const record = { Data };
53
- records[streamName].push(record);
54
- });
55
-
56
- Object.keys(records).map(streamName => {
57
- logger.debug(
58
- 'putting records to kinesis',
59
- streamName,
60
- 'with records',
61
- records[streamName]
62
- );
63
-
64
- this._kinesisFirehose
65
- .send(
66
- new PutRecordBatchCommand({
67
- Records: records[streamName],
68
- DeliveryStreamName: streamName,
69
- })
70
- )
71
- .then(res => logger.debug('Upload records to stream', streamName))
72
- .catch(err => logger.debug('Failed to upload records to Kinesis', err));
73
- });
74
- }
75
-
76
- protected _init(config, credentials) {
77
- logger.debug('init clients');
78
-
79
- if (
80
- this._kinesisFirehose &&
81
- this._config.credentials &&
82
- this._config.credentials.sessionToken === credentials.sessionToken &&
83
- this._config.credentials.identityId === credentials.identityId
84
- ) {
85
- logger.debug('no change for analytics config, directly return from init');
86
- return true;
87
- }
88
-
89
- this._config.credentials = credentials;
90
- const { region } = config;
91
-
92
- return this._initFirehose(region, credentials);
93
- }
94
-
95
- private _initFirehose(region, credentials) {
96
- logger.debug('initialize kinesis firehose with credentials', credentials);
97
- this._kinesisFirehose = new FirehoseClient({
98
- apiVersion: '2015-08-04',
99
- region,
100
- credentials,
101
- customUserAgent: getAnalyticsUserAgent(AnalyticsAction.Record),
102
- });
103
- return true;
104
- }
105
- }