@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.
- package/lib/errors/AnalyticsError.d.ts +7 -0
- package/lib/errors/AnalyticsError.js +23 -0
- package/lib/errors/assertValidationError.d.ts +5 -0
- package/lib/errors/assertValidationError.js +17 -0
- package/lib/errors/index.d.ts +3 -0
- package/lib/errors/index.js +12 -0
- package/lib/errors/validation.d.ts +9 -0
- package/lib/errors/validation.js +31 -0
- package/lib/index.d.ts +0 -3
- package/lib/index.js +0 -15
- package/lib/providers/pinpoint/apis/identifyUser.d.ts +10 -0
- package/lib/providers/pinpoint/apis/identifyUser.js +44 -0
- package/lib/providers/pinpoint/apis/index.d.ts +2 -0
- package/lib/providers/pinpoint/apis/index.js +9 -0
- package/lib/providers/pinpoint/apis/record.d.ts +11 -0
- package/lib/providers/pinpoint/apis/record.js +44 -0
- package/lib/providers/pinpoint/index.d.ts +1 -1
- package/lib/providers/pinpoint/index.js +1 -7
- package/lib/providers/pinpoint/types/errors.d.ts +9 -0
- package/lib/providers/pinpoint/types/errors.js +15 -0
- package/lib/providers/pinpoint/types/index.d.ts +2 -0
- package/lib/providers/pinpoint/types/index.js +7 -0
- package/lib/providers/pinpoint/types/parameters.d.ts +18 -0
- package/lib/providers/pinpoint/utils/index.d.ts +2 -0
- package/lib/providers/pinpoint/utils/index.js +9 -0
- package/lib/providers/pinpoint/utils/resolveConfig.d.ts +7 -0
- package/lib/providers/pinpoint/utils/resolveConfig.js +18 -0
- package/lib/providers/pinpoint/utils/resolveCredentials.d.ts +12 -0
- package/lib/providers/pinpoint/utils/resolveCredentials.js +24 -0
- package/lib/setupTests.js +1 -0
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/{lib-esm/types/Analytics.d.ts → lib/types/analytics.d.ts} +0 -8
- package/lib/types/index.d.ts +1 -3
- package/lib/types/index.js +1 -3
- package/lib/utils/{UserAgent.d.ts → userAgent.d.ts} +1 -1
- package/lib/utils/{UserAgent.js → userAgent.js} +5 -5
- package/lib-esm/errors/AnalyticsError.d.ts +7 -0
- package/lib-esm/errors/AnalyticsError.js +20 -0
- package/lib-esm/errors/assertValidationError.d.ts +5 -0
- package/lib-esm/errors/assertValidationError.js +13 -0
- package/lib-esm/errors/index.d.ts +3 -0
- package/lib-esm/errors/index.js +5 -0
- package/lib-esm/errors/validation.d.ts +9 -0
- package/lib-esm/errors/validation.js +28 -0
- package/lib-esm/index.d.ts +0 -3
- package/lib-esm/index.js +0 -12
- package/lib-esm/providers/pinpoint/apis/identifyUser.d.ts +10 -0
- package/lib-esm/providers/pinpoint/apis/identifyUser.js +40 -0
- package/lib-esm/providers/pinpoint/apis/index.d.ts +2 -0
- package/{src/types/providers/index.ts → lib-esm/providers/pinpoint/apis/index.js} +2 -1
- package/lib-esm/providers/pinpoint/apis/record.d.ts +11 -0
- package/lib-esm/providers/pinpoint/apis/record.js +40 -0
- package/lib-esm/providers/pinpoint/index.d.ts +1 -1
- package/lib-esm/providers/pinpoint/index.js +1 -6
- package/lib-esm/providers/pinpoint/types/errors.d.ts +9 -0
- package/lib-esm/providers/pinpoint/types/errors.js +12 -0
- package/lib-esm/providers/pinpoint/types/index.d.ts +2 -0
- package/lib-esm/{types/providers → providers/pinpoint/types}/index.js +1 -1
- package/lib-esm/providers/pinpoint/types/parameters.d.ts +18 -0
- package/lib-esm/providers/pinpoint/utils/index.d.ts +2 -0
- package/lib-esm/{utils/AppUtils.js → providers/pinpoint/utils/index.js} +2 -4
- package/lib-esm/providers/pinpoint/utils/resolveConfig.d.ts +7 -0
- package/lib-esm/providers/pinpoint/utils/resolveConfig.js +14 -0
- package/lib-esm/providers/pinpoint/utils/resolveCredentials.d.ts +12 -0
- package/lib-esm/providers/pinpoint/utils/resolveCredentials.js +20 -0
- package/lib-esm/setupTests.js +1 -0
- package/lib-esm/tsconfig.tsbuildinfo +1 -1
- package/{lib/types/Analytics.d.ts → lib-esm/types/analytics.d.ts} +0 -8
- package/lib-esm/types/index.d.ts +1 -3
- package/lib-esm/types/index.js +1 -3
- package/lib-esm/utils/{UserAgent.d.ts → userAgent.d.ts} +1 -1
- package/lib-esm/utils/{UserAgent.js → userAgent.js} +1 -1
- package/package.json +11 -29
- package/src/errors/AnalyticsError.ts +18 -0
- package/src/errors/assertValidationError.ts +19 -0
- package/src/errors/index.ts +6 -0
- package/src/errors/validation.ts +31 -0
- package/src/index.ts +0 -15
- package/src/providers/pinpoint/apis/identifyUser.ts +35 -0
- package/src/{utils/AppUtils.ts → providers/pinpoint/apis/index.ts} +2 -4
- package/src/providers/pinpoint/apis/record.ts +50 -0
- package/src/providers/pinpoint/index.ts +1 -3
- package/src/providers/pinpoint/types/errors.ts +12 -0
- package/src/providers/pinpoint/types/index.ts +5 -0
- package/src/providers/pinpoint/types/parameters.ts +24 -0
- package/src/providers/pinpoint/utils/index.ts +5 -0
- package/src/providers/pinpoint/utils/resolveConfig.ts +18 -0
- package/src/providers/pinpoint/utils/resolveCredentials.ts +20 -0
- package/src/types/{Analytics.ts → analytics.ts} +1 -10
- package/src/types/index.ts +1 -3
- package/src/utils/{UserAgent.ts → userAgent.ts} +1 -1
- package/lib/Analytics.d.ts +0 -87
- package/lib/Analytics.js +0 -354
- package/lib/providers/AWSKinesisFirehoseProvider.d.ts +0 -12
- package/lib/providers/AWSKinesisFirehoseProvider.js +0 -82
- package/lib/providers/AWSKinesisProvider.d.ts +0 -43
- package/lib/providers/AWSKinesisProvider.js +0 -240
- package/lib/providers/AWSPinpointProvider.d.ts +0 -67
- package/lib/providers/AWSPinpointProvider.js +0 -576
- package/lib/providers/AmazonPersonalizeHelper/DataType.d.ts +0 -40
- package/lib/providers/AmazonPersonalizeHelper/MediaAutoTrack.d.ts +0 -20
- package/lib/providers/AmazonPersonalizeHelper/MediaAutoTrack.js +0 -156
- package/lib/providers/AmazonPersonalizeHelper/SessionInfoManager.d.ts +0 -17
- package/lib/providers/AmazonPersonalizeHelper/SessionInfoManager.js +0 -96
- package/lib/providers/AmazonPersonalizeHelper/index.d.ts +0 -3
- package/lib/providers/AmazonPersonalizeHelper/index.js +0 -7
- package/lib/providers/AmazonPersonalizeProvider.d.ts +0 -76
- package/lib/providers/AmazonPersonalizeProvider.js +0 -331
- package/lib/providers/EventBuffer.d.ts +0 -28
- package/lib/providers/EventBuffer.js +0 -209
- package/lib/providers/index.d.ts +0 -4
- package/lib/providers/index.js +0 -14
- package/lib/trackers/EventTracker.d.ts +0 -9
- package/lib/trackers/EventTracker.js +0 -99
- package/lib/trackers/PageViewTracker.d.ts +0 -12
- package/lib/trackers/PageViewTracker.js +0 -158
- package/lib/trackers/SessionTracker-rn.d.ts +0 -12
- package/lib/trackers/SessionTracker-rn.js +0 -134
- package/lib/trackers/SessionTracker.d.ts +0 -14
- package/lib/trackers/SessionTracker.js +0 -163
- package/lib/trackers/index.d.ts +0 -3
- package/lib/trackers/index.js +0 -11
- package/lib/trackers/reactnative.d.ts +0 -8
- package/lib/trackers/reactnative.js +0 -19
- package/lib/types/Analytics.js +0 -2
- package/lib/types/Provider.d.ts +0 -10
- package/lib/types/providers/AWSKinesisProvider.d.ts +0 -6
- package/lib/types/providers/AWSKinesisProvider.js +0 -2
- package/lib/types/providers/AWSPinpointProvider.d.ts +0 -50
- package/lib/types/providers/AWSPinpointProvider.js +0 -2
- package/lib/types/providers/AmazonPersonalizeProvider.d.ts +0 -7
- package/lib/types/providers/AmazonPersonalizeProvider.js +0 -2
- package/lib/types/providers/index.d.ts +0 -1
- package/lib/types/providers/index.js +0 -6
- package/lib/utils/AppUtils.d.ts +0 -2
- package/lib/utils/AppUtils.js +0 -9
- package/lib/utils/AppUtils.native.d.ts +0 -2
- package/lib/utils/AppUtils.native.js +0 -10
- package/lib/utils/MethodEmbed.d.ts +0 -11
- package/lib/utils/MethodEmbed.js +0 -43
- package/lib/vendor/dom-utils/closest.d.ts +0 -12
- package/lib/vendor/dom-utils/closest.js +0 -27
- package/lib/vendor/dom-utils/delegate.d.ts +0 -18
- package/lib/vendor/dom-utils/delegate.js +0 -51
- package/lib/vendor/dom-utils/dispatch.d.ts +0 -17
- package/lib/vendor/dom-utils/dispatch.js +0 -51
- package/lib/vendor/dom-utils/get-attributes.d.ts +0 -11
- package/lib/vendor/dom-utils/get-attributes.js +0 -28
- package/lib/vendor/dom-utils/index.d.ts +0 -7
- package/lib/vendor/dom-utils/index.js +0 -17
- package/lib/vendor/dom-utils/matches.d.ts +0 -11
- package/lib/vendor/dom-utils/matches.js +0 -69
- package/lib/vendor/dom-utils/parents.d.ts +0 -10
- package/lib/vendor/dom-utils/parents.js +0 -22
- package/lib/vendor/dom-utils/parse-url.d.ts +0 -9
- package/lib/vendor/dom-utils/parse-url.js +0 -59
- package/lib-esm/Analytics.d.ts +0 -87
- package/lib-esm/Analytics.js +0 -351
- package/lib-esm/providers/AWSKinesisFirehoseProvider.d.ts +0 -12
- package/lib-esm/providers/AWSKinesisFirehoseProvider.js +0 -79
- package/lib-esm/providers/AWSKinesisProvider.d.ts +0 -43
- package/lib-esm/providers/AWSKinesisProvider.js +0 -237
- package/lib-esm/providers/AWSPinpointProvider.d.ts +0 -67
- package/lib-esm/providers/AWSPinpointProvider.js +0 -573
- package/lib-esm/providers/AmazonPersonalizeHelper/DataType.d.ts +0 -40
- package/lib-esm/providers/AmazonPersonalizeHelper/MediaAutoTrack.d.ts +0 -20
- package/lib-esm/providers/AmazonPersonalizeHelper/MediaAutoTrack.js +0 -153
- package/lib-esm/providers/AmazonPersonalizeHelper/SessionInfoManager.d.ts +0 -17
- package/lib-esm/providers/AmazonPersonalizeHelper/SessionInfoManager.js +0 -92
- package/lib-esm/providers/AmazonPersonalizeHelper/index.d.ts +0 -3
- package/lib-esm/providers/AmazonPersonalizeHelper/index.js +0 -2
- package/lib-esm/providers/AmazonPersonalizeProvider.d.ts +0 -76
- package/lib-esm/providers/AmazonPersonalizeProvider.js +0 -328
- package/lib-esm/providers/EventBuffer.d.ts +0 -28
- package/lib-esm/providers/EventBuffer.js +0 -207
- package/lib-esm/providers/index.d.ts +0 -4
- package/lib-esm/providers/index.js +0 -7
- package/lib-esm/trackers/EventTracker.d.ts +0 -9
- package/lib-esm/trackers/EventTracker.js +0 -96
- package/lib-esm/trackers/PageViewTracker.d.ts +0 -12
- package/lib-esm/trackers/PageViewTracker.js +0 -155
- package/lib-esm/trackers/SessionTracker-rn.d.ts +0 -12
- package/lib-esm/trackers/SessionTracker-rn.js +0 -131
- package/lib-esm/trackers/SessionTracker.d.ts +0 -14
- package/lib-esm/trackers/SessionTracker.js +0 -160
- package/lib-esm/trackers/index.d.ts +0 -3
- package/lib-esm/trackers/index.js +0 -5
- package/lib-esm/trackers/reactnative.d.ts +0 -8
- package/lib-esm/trackers/reactnative.js +0 -14
- package/lib-esm/types/Analytics.js +0 -1
- package/lib-esm/types/Provider.d.ts +0 -10
- package/lib-esm/types/providers/AWSKinesisProvider.d.ts +0 -6
- package/lib-esm/types/providers/AWSKinesisProvider.js +0 -1
- package/lib-esm/types/providers/AWSPinpointProvider.d.ts +0 -50
- package/lib-esm/types/providers/AWSPinpointProvider.js +0 -1
- package/lib-esm/types/providers/AmazonPersonalizeProvider.d.ts +0 -7
- package/lib-esm/types/providers/AmazonPersonalizeProvider.js +0 -1
- package/lib-esm/types/providers/index.d.ts +0 -1
- package/lib-esm/utils/AppUtils.d.ts +0 -2
- package/lib-esm/utils/AppUtils.native.d.ts +0 -2
- package/lib-esm/utils/AppUtils.native.js +0 -7
- package/lib-esm/utils/MethodEmbed.d.ts +0 -11
- package/lib-esm/utils/MethodEmbed.js +0 -40
- package/lib-esm/vendor/dom-utils/closest.d.ts +0 -12
- package/lib-esm/vendor/dom-utils/closest.js +0 -23
- package/lib-esm/vendor/dom-utils/delegate.d.ts +0 -18
- package/lib-esm/vendor/dom-utils/delegate.js +0 -47
- package/lib-esm/vendor/dom-utils/dispatch.d.ts +0 -17
- package/lib-esm/vendor/dom-utils/dispatch.js +0 -47
- package/lib-esm/vendor/dom-utils/get-attributes.d.ts +0 -11
- package/lib-esm/vendor/dom-utils/get-attributes.js +0 -24
- package/lib-esm/vendor/dom-utils/index.d.ts +0 -7
- package/lib-esm/vendor/dom-utils/index.js +0 -7
- package/lib-esm/vendor/dom-utils/matches.d.ts +0 -11
- package/lib-esm/vendor/dom-utils/matches.js +0 -65
- package/lib-esm/vendor/dom-utils/parents.d.ts +0 -10
- package/lib-esm/vendor/dom-utils/parents.js +0 -18
- package/lib-esm/vendor/dom-utils/parse-url.d.ts +0 -9
- package/lib-esm/vendor/dom-utils/parse-url.js +0 -55
- package/src/Analytics.ts +0 -446
- package/src/providers/AWSKinesisFirehoseProvider.ts +0 -105
- package/src/providers/AWSKinesisProvider.ts +0 -250
- package/src/providers/AWSPinpointProvider.ts +0 -685
- package/src/providers/AmazonPersonalizeHelper/DataType.ts +0 -49
- package/src/providers/AmazonPersonalizeHelper/MediaAutoTrack.ts +0 -196
- package/src/providers/AmazonPersonalizeHelper/SessionInfoManager.ts +0 -121
- package/src/providers/AmazonPersonalizeHelper/index.ts +0 -11
- package/src/providers/AmazonPersonalizeProvider.ts +0 -398
- package/src/providers/EventBuffer.ts +0 -257
- package/src/providers/index.ts +0 -8
- package/src/trackers/EventTracker.ts +0 -115
- package/src/trackers/PageViewTracker.ts +0 -157
- package/src/trackers/SessionTracker-rn.ts +0 -134
- package/src/trackers/SessionTracker.ts +0 -179
- package/src/trackers/index.ts +0 -5
- package/src/trackers/reactnative.ts +0 -13
- package/src/types/Provider.ts +0 -26
- package/src/types/providers/AWSKinesisProvider.ts +0 -8
- package/src/types/providers/AWSPinpointProvider.ts +0 -60
- package/src/types/providers/AmazonPersonalizeProvider.ts +0 -9
- package/src/utils/AppUtils.native.ts +0 -9
- package/src/utils/MethodEmbed.ts +0 -49
- package/src/vendor/dom-utils/closest.ts +0 -25
- package/src/vendor/dom-utils/delegate.ts +0 -51
- package/src/vendor/dom-utils/dispatch.ts +0 -59
- package/src/vendor/dom-utils/get-attributes.ts +0 -26
- package/src/vendor/dom-utils/index.ts +0 -7
- package/src/vendor/dom-utils/matches.ts +0 -68
- package/src/vendor/dom-utils/parents.ts +0 -19
- package/src/vendor/dom-utils/parse-url.ts +0 -66
- /package/lib/{types/Provider.js → providers/pinpoint/types/parameters.js} +0 -0
- /package/lib/{providers/AmazonPersonalizeHelper/DataType.js → types/analytics.js} +0 -0
- /package/lib-esm/{types/Provider.js → providers/pinpoint/types/parameters.js} +0 -0
- /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
|
-
}
|