@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,28 +0,0 @@
|
|
|
1
|
-
import { EventObject } from '../types';
|
|
2
|
-
type EventsBufferConfig = {
|
|
3
|
-
bufferSize: number;
|
|
4
|
-
flushSize: number;
|
|
5
|
-
flushInterval: number;
|
|
6
|
-
resendLimit: number;
|
|
7
|
-
};
|
|
8
|
-
export default class EventsBuffer {
|
|
9
|
-
private _config;
|
|
10
|
-
private _interval;
|
|
11
|
-
private _buffer;
|
|
12
|
-
private _pause;
|
|
13
|
-
private _flush;
|
|
14
|
-
constructor(config: EventsBufferConfig);
|
|
15
|
-
push(event: EventObject): any;
|
|
16
|
-
pause(): void;
|
|
17
|
-
resume(): void;
|
|
18
|
-
flush(): void;
|
|
19
|
-
private _startLoop;
|
|
20
|
-
private _sendBatch;
|
|
21
|
-
private _putEvents;
|
|
22
|
-
private _generateBatchEventParams;
|
|
23
|
-
private _handlePutEventsFailure;
|
|
24
|
-
private _processPutEventsSuccessResponse;
|
|
25
|
-
private _retry;
|
|
26
|
-
private _bufferToMap;
|
|
27
|
-
}
|
|
28
|
-
export {};
|
|
@@ -1,207 +0,0 @@
|
|
|
1
|
-
import { __awaiter, __generator, __read, __spreadArray } from "tslib";
|
|
2
|
-
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
-
import { AnalyticsAction, ConsoleLogger as Logger } from '@aws-amplify/core';
|
|
5
|
-
import { putEvents, } from '@aws-amplify/core/internals/aws-clients/pinpoint';
|
|
6
|
-
import { isAppInForeground } from '../utils/AppUtils';
|
|
7
|
-
import { getAnalyticsUserAgentString } from '../utils/UserAgent';
|
|
8
|
-
var logger = new Logger('EventsBuffer');
|
|
9
|
-
var RETRYABLE_CODES = [429, 500];
|
|
10
|
-
var ACCEPTED_CODES = [202];
|
|
11
|
-
var EventsBuffer = /** @class */ (function () {
|
|
12
|
-
function EventsBuffer(config) {
|
|
13
|
-
this._pause = false;
|
|
14
|
-
this._flush = false;
|
|
15
|
-
logger.debug('Instantiating buffer with config:', config);
|
|
16
|
-
this._buffer = [];
|
|
17
|
-
this._config = config;
|
|
18
|
-
this._sendBatch = this._sendBatch.bind(this);
|
|
19
|
-
this._startLoop();
|
|
20
|
-
}
|
|
21
|
-
EventsBuffer.prototype.push = function (event) {
|
|
22
|
-
var _a;
|
|
23
|
-
// if the buffer is currently at the configured limit, pushing would exceed it
|
|
24
|
-
if (this._buffer.length >= this._config.bufferSize) {
|
|
25
|
-
logger.debug('Exceeded analytics events buffer size');
|
|
26
|
-
return event.handlers.reject(new Error('Exceeded the size of analytics events buffer'));
|
|
27
|
-
}
|
|
28
|
-
var eventId = event.params.event.eventId;
|
|
29
|
-
var bufferElement = (_a = {}, _a[eventId] = event, _a);
|
|
30
|
-
this._buffer.push(bufferElement);
|
|
31
|
-
};
|
|
32
|
-
EventsBuffer.prototype.pause = function () {
|
|
33
|
-
this._pause = true;
|
|
34
|
-
};
|
|
35
|
-
EventsBuffer.prototype.resume = function () {
|
|
36
|
-
this._pause = false;
|
|
37
|
-
};
|
|
38
|
-
EventsBuffer.prototype.flush = function () {
|
|
39
|
-
this._flush = true;
|
|
40
|
-
};
|
|
41
|
-
EventsBuffer.prototype._startLoop = function () {
|
|
42
|
-
if (this._interval) {
|
|
43
|
-
clearInterval(this._interval);
|
|
44
|
-
}
|
|
45
|
-
var flushInterval = this._config.flushInterval;
|
|
46
|
-
this._interval = setInterval(this._sendBatch, flushInterval);
|
|
47
|
-
};
|
|
48
|
-
EventsBuffer.prototype._sendBatch = function () {
|
|
49
|
-
var bufferLength = this._buffer.length;
|
|
50
|
-
if (this._flush && !bufferLength) {
|
|
51
|
-
clearInterval(this._interval);
|
|
52
|
-
}
|
|
53
|
-
// Do not send the batch of events if
|
|
54
|
-
// the Buffer is paused or is empty or the App is not in the foreground
|
|
55
|
-
// Apps should be in the foreground since
|
|
56
|
-
// the OS may restrict access to the network in the background
|
|
57
|
-
if (this._pause || !bufferLength || !isAppInForeground()) {
|
|
58
|
-
return;
|
|
59
|
-
}
|
|
60
|
-
var flushSize = this._config.flushSize;
|
|
61
|
-
var batchSize = Math.min(flushSize, bufferLength);
|
|
62
|
-
var bufferSubset = this._buffer.splice(0, batchSize);
|
|
63
|
-
this._putEvents(bufferSubset);
|
|
64
|
-
};
|
|
65
|
-
EventsBuffer.prototype._putEvents = function (buffer) {
|
|
66
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
67
|
-
var eventMap, batchEventParams, _a, credentials, region, data, err_1;
|
|
68
|
-
return __generator(this, function (_b) {
|
|
69
|
-
switch (_b.label) {
|
|
70
|
-
case 0:
|
|
71
|
-
eventMap = this._bufferToMap(buffer);
|
|
72
|
-
batchEventParams = this._generateBatchEventParams(eventMap);
|
|
73
|
-
_b.label = 1;
|
|
74
|
-
case 1:
|
|
75
|
-
_b.trys.push([1, 3, , 4]);
|
|
76
|
-
_a = this._config, credentials = _a.credentials, region = _a.region;
|
|
77
|
-
return [4 /*yield*/, putEvents({
|
|
78
|
-
credentials: credentials,
|
|
79
|
-
region: region,
|
|
80
|
-
userAgentValue: getAnalyticsUserAgentString(AnalyticsAction.Record),
|
|
81
|
-
}, batchEventParams)];
|
|
82
|
-
case 2:
|
|
83
|
-
data = _b.sent();
|
|
84
|
-
this._processPutEventsSuccessResponse(data, eventMap);
|
|
85
|
-
return [3 /*break*/, 4];
|
|
86
|
-
case 3:
|
|
87
|
-
err_1 = _b.sent();
|
|
88
|
-
return [2 /*return*/, this._handlePutEventsFailure(err_1, eventMap)];
|
|
89
|
-
case 4: return [2 /*return*/];
|
|
90
|
-
}
|
|
91
|
-
});
|
|
92
|
-
});
|
|
93
|
-
};
|
|
94
|
-
EventsBuffer.prototype._generateBatchEventParams = function (eventMap) {
|
|
95
|
-
var batchEventParams = {
|
|
96
|
-
ApplicationId: '',
|
|
97
|
-
EventsRequest: {
|
|
98
|
-
BatchItem: {},
|
|
99
|
-
},
|
|
100
|
-
};
|
|
101
|
-
Object.values(eventMap).forEach(function (item) {
|
|
102
|
-
var params = item.params;
|
|
103
|
-
var event = params.event, timestamp = params.timestamp, config = params.config;
|
|
104
|
-
var name = event.name, attributes = event.attributes, metrics = event.metrics, eventId = event.eventId, session = event.session;
|
|
105
|
-
var appId = config.appId, endpointId = config.endpointId;
|
|
106
|
-
var batchItem = batchEventParams.EventsRequest.BatchItem;
|
|
107
|
-
batchEventParams.ApplicationId = batchEventParams.ApplicationId || appId;
|
|
108
|
-
if (!batchItem[endpointId]) {
|
|
109
|
-
batchItem[endpointId] = {
|
|
110
|
-
Endpoint: {},
|
|
111
|
-
Events: {},
|
|
112
|
-
};
|
|
113
|
-
}
|
|
114
|
-
batchItem[endpointId].Events[eventId] = {
|
|
115
|
-
EventType: name,
|
|
116
|
-
Timestamp: new Date(timestamp).toISOString(),
|
|
117
|
-
Attributes: attributes,
|
|
118
|
-
Metrics: metrics,
|
|
119
|
-
Session: session,
|
|
120
|
-
};
|
|
121
|
-
});
|
|
122
|
-
return batchEventParams;
|
|
123
|
-
};
|
|
124
|
-
EventsBuffer.prototype._handlePutEventsFailure = function (err, eventMap) {
|
|
125
|
-
logger.debug('_putEvents Failed: ', err);
|
|
126
|
-
var statusCode = err.$metadata && err.$metadata.httpStatusCode;
|
|
127
|
-
if (RETRYABLE_CODES.includes(statusCode)) {
|
|
128
|
-
var retryableEvents = Object.values(eventMap);
|
|
129
|
-
this._retry(retryableEvents);
|
|
130
|
-
return;
|
|
131
|
-
}
|
|
132
|
-
};
|
|
133
|
-
EventsBuffer.prototype._processPutEventsSuccessResponse = function (data, eventMap) {
|
|
134
|
-
var _a;
|
|
135
|
-
var _b = ((_a = data.EventsResponse) !== null && _a !== void 0 ? _a : {}).Results, Results = _b === void 0 ? {} : _b;
|
|
136
|
-
var retryableEvents = [];
|
|
137
|
-
Object.entries(Results).forEach(function (_a) {
|
|
138
|
-
var _b;
|
|
139
|
-
var _c = __read(_a, 2), endpointId = _c[0], endpointValues = _c[1];
|
|
140
|
-
var responses = (_b = endpointValues.EventsItemResponse) !== null && _b !== void 0 ? _b : {};
|
|
141
|
-
Object.entries(responses).forEach(function (_a) {
|
|
142
|
-
var _b, _c;
|
|
143
|
-
var _d = __read(_a, 2), eventId = _d[0], eventValues = _d[1];
|
|
144
|
-
var eventObject = eventMap[eventId];
|
|
145
|
-
if (!eventObject) {
|
|
146
|
-
return;
|
|
147
|
-
}
|
|
148
|
-
var _e = eventValues !== null && eventValues !== void 0 ? eventValues : {}, StatusCode = _e.StatusCode, Message = _e.Message;
|
|
149
|
-
// manually crafting handlers response to keep API consistant
|
|
150
|
-
var response = {
|
|
151
|
-
EventsResponse: {
|
|
152
|
-
Results: (_b = {},
|
|
153
|
-
_b[endpointId] = {
|
|
154
|
-
EventsItemResponse: (_c = {},
|
|
155
|
-
_c[eventId] = { StatusCode: StatusCode, Message: Message },
|
|
156
|
-
_c),
|
|
157
|
-
},
|
|
158
|
-
_b),
|
|
159
|
-
},
|
|
160
|
-
};
|
|
161
|
-
if (StatusCode && ACCEPTED_CODES.includes(StatusCode)) {
|
|
162
|
-
eventObject.handlers.resolve(response);
|
|
163
|
-
return;
|
|
164
|
-
}
|
|
165
|
-
if (StatusCode && RETRYABLE_CODES.includes(StatusCode)) {
|
|
166
|
-
retryableEvents.push(eventObject);
|
|
167
|
-
return;
|
|
168
|
-
}
|
|
169
|
-
var name = eventObject.params.event.name;
|
|
170
|
-
logger.error("event ".concat(eventId, " : ").concat(name, " failed with error: ").concat(Message));
|
|
171
|
-
return eventObject.handlers.reject(response);
|
|
172
|
-
});
|
|
173
|
-
});
|
|
174
|
-
if (retryableEvents.length) {
|
|
175
|
-
this._retry(retryableEvents);
|
|
176
|
-
}
|
|
177
|
-
};
|
|
178
|
-
EventsBuffer.prototype._retry = function (retryableEvents) {
|
|
179
|
-
var _a;
|
|
180
|
-
// retryable events that haven't reached the resendLimit
|
|
181
|
-
var eligibleEvents = [];
|
|
182
|
-
retryableEvents.forEach(function (event) {
|
|
183
|
-
var _a;
|
|
184
|
-
var params = event.params;
|
|
185
|
-
var _b = params.event, eventId = _b.eventId, name = _b.name;
|
|
186
|
-
if (params.resendLimit-- > 0) {
|
|
187
|
-
logger.debug("resending event ".concat(eventId, " : ").concat(name, " with ").concat(params.resendLimit, " retry attempts remaining"));
|
|
188
|
-
eligibleEvents.push((_a = {}, _a[eventId] = event, _a));
|
|
189
|
-
return;
|
|
190
|
-
}
|
|
191
|
-
logger.debug("no retry attempts remaining for event ".concat(eventId, " : ").concat(name));
|
|
192
|
-
});
|
|
193
|
-
// add the events to the front of the buffer
|
|
194
|
-
(_a = this._buffer).unshift.apply(_a, __spreadArray([], __read(eligibleEvents), false));
|
|
195
|
-
};
|
|
196
|
-
// convert buffer to map, i.e. { eventId1: { params, handler }, eventId2: { params, handlers } }
|
|
197
|
-
// this allows us to easily access the handlers after receiving a batch response
|
|
198
|
-
EventsBuffer.prototype._bufferToMap = function (buffer) {
|
|
199
|
-
return buffer.reduce(function (acc, curVal) {
|
|
200
|
-
var _a = __read(Object.entries(curVal), 1), _b = __read(_a[0], 2), key = _b[0], value = _b[1];
|
|
201
|
-
acc[key] = value;
|
|
202
|
-
return acc;
|
|
203
|
-
}, {});
|
|
204
|
-
};
|
|
205
|
-
return EventsBuffer;
|
|
206
|
-
}());
|
|
207
|
-
export default EventsBuffer;
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
export { AWSPinpointProvider } from './AWSPinpointProvider';
|
|
4
|
-
// TODO(v6) Refactor as additional Analytics providers come online
|
|
5
|
-
export { AWSKinesisProvider } from './AWSKinesisProvider';
|
|
6
|
-
export { AWSKinesisFirehoseProvider } from './AWSKinesisFirehoseProvider';
|
|
7
|
-
export { AmazonPersonalizeProvider } from './AmazonPersonalizeProvider';
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
import { __awaiter, __generator } from "tslib";
|
|
4
|
-
import { delegate } from '../vendor/dom-utils';
|
|
5
|
-
import { ConsoleLogger as Logger, browserOrNode } from '@aws-amplify/core';
|
|
6
|
-
var logger = new Logger('EventTracker');
|
|
7
|
-
var defaultOpts = {
|
|
8
|
-
enable: false,
|
|
9
|
-
events: ['click'],
|
|
10
|
-
selectorPrefix: 'data-amplify-analytics-',
|
|
11
|
-
provider: 'AWSPinpoint',
|
|
12
|
-
};
|
|
13
|
-
var EventTracker = /** @class */ (function () {
|
|
14
|
-
function EventTracker(tracker, opts) {
|
|
15
|
-
if (!browserOrNode().isBrowser || !window.addEventListener) {
|
|
16
|
-
logger.debug('not in the supported web environment');
|
|
17
|
-
return;
|
|
18
|
-
}
|
|
19
|
-
this._config = Object.assign({}, defaultOpts, opts);
|
|
20
|
-
this._tracker = tracker;
|
|
21
|
-
this._delegates = {};
|
|
22
|
-
this._trackFunc = this._trackFunc.bind(this);
|
|
23
|
-
logger.debug('initialize pageview tracker with opts', this._config);
|
|
24
|
-
this.configure(this._config);
|
|
25
|
-
}
|
|
26
|
-
EventTracker.prototype.configure = function (opts) {
|
|
27
|
-
var _this = this;
|
|
28
|
-
Object.assign(this._config, opts);
|
|
29
|
-
if (!this._config.enable) {
|
|
30
|
-
Object.keys(this._delegates).forEach(function (key) {
|
|
31
|
-
if (typeof _this._delegates[key].destroy === 'function')
|
|
32
|
-
_this._delegates[key].destroy();
|
|
33
|
-
});
|
|
34
|
-
this._delegates = {};
|
|
35
|
-
}
|
|
36
|
-
else if (this._config.enable &&
|
|
37
|
-
Object.keys(this._delegates).length === 0) {
|
|
38
|
-
var selector_1 = '[' + this._config.selectorPrefix + 'on]';
|
|
39
|
-
this._config.events.forEach(function (evt) {
|
|
40
|
-
_this._delegates[evt] = delegate(document, evt, selector_1, _this._trackFunc, { composed: true, useCapture: true });
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
return this._config;
|
|
44
|
-
};
|
|
45
|
-
EventTracker.prototype._trackFunc = function (event, element) {
|
|
46
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
47
|
-
var customAttrs, events, eventName, attrs, defaultAttrs, _a, attributes;
|
|
48
|
-
return __generator(this, function (_b) {
|
|
49
|
-
switch (_b.label) {
|
|
50
|
-
case 0:
|
|
51
|
-
customAttrs = {};
|
|
52
|
-
events = element
|
|
53
|
-
.getAttribute(this._config.selectorPrefix + 'on')
|
|
54
|
-
.split(/\s*,\s*/);
|
|
55
|
-
eventName = element.getAttribute(this._config.selectorPrefix + 'name');
|
|
56
|
-
attrs = element.getAttribute(this._config.selectorPrefix + 'attrs');
|
|
57
|
-
if (attrs) {
|
|
58
|
-
attrs.split(/\s*,\s*/).forEach(function (attr) {
|
|
59
|
-
var tmp = attr.trim().split(/\s*:\s*/);
|
|
60
|
-
customAttrs[tmp[0]] = tmp[1];
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
if (!(typeof this._config.attributes === 'function')) return [3 /*break*/, 2];
|
|
64
|
-
return [4 /*yield*/, this._config.attributes()];
|
|
65
|
-
case 1:
|
|
66
|
-
_a = _b.sent();
|
|
67
|
-
return [3 /*break*/, 3];
|
|
68
|
-
case 2:
|
|
69
|
-
_a = this._config.attributes;
|
|
70
|
-
_b.label = 3;
|
|
71
|
-
case 3:
|
|
72
|
-
defaultAttrs = _a;
|
|
73
|
-
attributes = Object.assign({
|
|
74
|
-
type: event.type,
|
|
75
|
-
target: "".concat(event.target.localName, " with id ").concat(event.target.id),
|
|
76
|
-
}, defaultAttrs, customAttrs);
|
|
77
|
-
logger.debug('events needed to be recorded', events);
|
|
78
|
-
logger.debug('attributes needed to be attached', customAttrs);
|
|
79
|
-
if (events.indexOf(event.type) < 0) {
|
|
80
|
-
logger.debug("event ".concat(event.type, " is not selected to be recorded"));
|
|
81
|
-
return [2 /*return*/];
|
|
82
|
-
}
|
|
83
|
-
this._tracker({
|
|
84
|
-
name: eventName || 'event',
|
|
85
|
-
attributes: attributes,
|
|
86
|
-
}, this._config.provider).catch(function (e) {
|
|
87
|
-
logger.debug("Failed to record the ".concat(event.type, " event', ").concat(e));
|
|
88
|
-
});
|
|
89
|
-
return [2 /*return*/];
|
|
90
|
-
}
|
|
91
|
-
});
|
|
92
|
-
});
|
|
93
|
-
};
|
|
94
|
-
return EventTracker;
|
|
95
|
-
}());
|
|
96
|
-
export { EventTracker };
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { pageViewTrackOpts } from '../types';
|
|
2
|
-
export declare class PageViewTracker {
|
|
3
|
-
private _config;
|
|
4
|
-
private _tracker;
|
|
5
|
-
private _hasEnabled;
|
|
6
|
-
constructor(tracker: any, opts: any);
|
|
7
|
-
configure(opts?: pageViewTrackOpts): pageViewTrackOpts;
|
|
8
|
-
private _isSameUrl;
|
|
9
|
-
private _pageViewTrackDefault;
|
|
10
|
-
private _trackFunc;
|
|
11
|
-
private _pageViewTrackSPA;
|
|
12
|
-
}
|
|
@@ -1,155 +0,0 @@
|
|
|
1
|
-
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
import { __awaiter, __generator } from "tslib";
|
|
4
|
-
import { MethodEmbed } from '../utils/MethodEmbed';
|
|
5
|
-
import { ConsoleLogger as Logger, browserOrNode } from '@aws-amplify/core';
|
|
6
|
-
var logger = new Logger('PageViewTracker');
|
|
7
|
-
var PREV_URL_KEY = 'aws-amplify-analytics-prevUrl';
|
|
8
|
-
var getUrl = function () {
|
|
9
|
-
if (!browserOrNode().isBrowser)
|
|
10
|
-
return '';
|
|
11
|
-
else
|
|
12
|
-
return window.location.origin + window.location.pathname;
|
|
13
|
-
};
|
|
14
|
-
var defaultOpts = {
|
|
15
|
-
enable: false,
|
|
16
|
-
provider: 'AWSPinpoint',
|
|
17
|
-
getUrl: getUrl,
|
|
18
|
-
};
|
|
19
|
-
var PageViewTracker = /** @class */ (function () {
|
|
20
|
-
function PageViewTracker(tracker, opts) {
|
|
21
|
-
logger.debug('initialize pageview tracker with opts', opts);
|
|
22
|
-
this._config = Object.assign({}, defaultOpts, opts);
|
|
23
|
-
this._tracker = tracker;
|
|
24
|
-
this._hasEnabled = false;
|
|
25
|
-
this._trackFunc = this._trackFunc.bind(this);
|
|
26
|
-
if (this._config.type === 'SPA') {
|
|
27
|
-
this._pageViewTrackSPA();
|
|
28
|
-
}
|
|
29
|
-
else {
|
|
30
|
-
this._pageViewTrackDefault();
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
PageViewTracker.prototype.configure = function (opts) {
|
|
34
|
-
Object.assign(this._config, opts);
|
|
35
|
-
// if spa, need to remove those listeners if disabled
|
|
36
|
-
if (this._config.type === 'SPA') {
|
|
37
|
-
this._pageViewTrackSPA();
|
|
38
|
-
}
|
|
39
|
-
return this._config;
|
|
40
|
-
};
|
|
41
|
-
PageViewTracker.prototype._isSameUrl = function () {
|
|
42
|
-
var prevUrl = sessionStorage.getItem(PREV_URL_KEY);
|
|
43
|
-
var curUrl = this._config.getUrl();
|
|
44
|
-
if (prevUrl === curUrl) {
|
|
45
|
-
logger.debug('the url is same');
|
|
46
|
-
return true;
|
|
47
|
-
}
|
|
48
|
-
else
|
|
49
|
-
return false;
|
|
50
|
-
};
|
|
51
|
-
PageViewTracker.prototype._pageViewTrackDefault = function () {
|
|
52
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
53
|
-
var url, customAttrs, _a, attributes;
|
|
54
|
-
return __generator(this, function (_b) {
|
|
55
|
-
switch (_b.label) {
|
|
56
|
-
case 0:
|
|
57
|
-
if (!browserOrNode().isBrowser ||
|
|
58
|
-
!window.addEventListener ||
|
|
59
|
-
!window.sessionStorage) {
|
|
60
|
-
logger.debug('not in the supported web enviroment');
|
|
61
|
-
return [2 /*return*/];
|
|
62
|
-
}
|
|
63
|
-
url = this._config.getUrl();
|
|
64
|
-
if (!(typeof this._config.attributes === 'function')) return [3 /*break*/, 2];
|
|
65
|
-
return [4 /*yield*/, this._config.attributes()];
|
|
66
|
-
case 1:
|
|
67
|
-
_a = _b.sent();
|
|
68
|
-
return [3 /*break*/, 3];
|
|
69
|
-
case 2:
|
|
70
|
-
_a = this._config.attributes;
|
|
71
|
-
_b.label = 3;
|
|
72
|
-
case 3:
|
|
73
|
-
customAttrs = _a;
|
|
74
|
-
attributes = Object.assign({
|
|
75
|
-
url: url,
|
|
76
|
-
}, customAttrs);
|
|
77
|
-
if (this._config.enable && !this._isSameUrl()) {
|
|
78
|
-
this._tracker({
|
|
79
|
-
name: this._config.eventName || 'pageView',
|
|
80
|
-
attributes: attributes,
|
|
81
|
-
}, this._config.provider).catch(function (e) {
|
|
82
|
-
logger.debug('Failed to record the page view event', e);
|
|
83
|
-
});
|
|
84
|
-
sessionStorage.setItem(PREV_URL_KEY, url);
|
|
85
|
-
}
|
|
86
|
-
return [2 /*return*/];
|
|
87
|
-
}
|
|
88
|
-
});
|
|
89
|
-
});
|
|
90
|
-
};
|
|
91
|
-
PageViewTracker.prototype._trackFunc = function () {
|
|
92
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
93
|
-
var url, customAttrs, _a, attributes;
|
|
94
|
-
return __generator(this, function (_b) {
|
|
95
|
-
switch (_b.label) {
|
|
96
|
-
case 0:
|
|
97
|
-
if (!browserOrNode().isBrowser ||
|
|
98
|
-
!window.addEventListener ||
|
|
99
|
-
!history.pushState ||
|
|
100
|
-
!window.sessionStorage) {
|
|
101
|
-
logger.debug('not in the supported web enviroment');
|
|
102
|
-
return [2 /*return*/];
|
|
103
|
-
}
|
|
104
|
-
url = this._config.getUrl();
|
|
105
|
-
if (!(typeof this._config.attributes === 'function')) return [3 /*break*/, 2];
|
|
106
|
-
return [4 /*yield*/, this._config.attributes()];
|
|
107
|
-
case 1:
|
|
108
|
-
_a = _b.sent();
|
|
109
|
-
return [3 /*break*/, 3];
|
|
110
|
-
case 2:
|
|
111
|
-
_a = this._config.attributes;
|
|
112
|
-
_b.label = 3;
|
|
113
|
-
case 3:
|
|
114
|
-
customAttrs = _a;
|
|
115
|
-
attributes = Object.assign({
|
|
116
|
-
url: url,
|
|
117
|
-
}, customAttrs);
|
|
118
|
-
if (!this._isSameUrl()) {
|
|
119
|
-
this._tracker({
|
|
120
|
-
name: this._config.eventName || 'pageView',
|
|
121
|
-
attributes: attributes,
|
|
122
|
-
}, this._config.provider).catch(function (e) {
|
|
123
|
-
logger.debug('Failed to record the page view event', e);
|
|
124
|
-
});
|
|
125
|
-
sessionStorage.setItem(PREV_URL_KEY, url);
|
|
126
|
-
}
|
|
127
|
-
return [2 /*return*/];
|
|
128
|
-
}
|
|
129
|
-
});
|
|
130
|
-
});
|
|
131
|
-
};
|
|
132
|
-
PageViewTracker.prototype._pageViewTrackSPA = function () {
|
|
133
|
-
if (!browserOrNode().isBrowser ||
|
|
134
|
-
!window.addEventListener ||
|
|
135
|
-
!history.pushState) {
|
|
136
|
-
logger.debug('not in the supported web enviroment');
|
|
137
|
-
return;
|
|
138
|
-
}
|
|
139
|
-
if (this._config.enable && !this._hasEnabled) {
|
|
140
|
-
MethodEmbed.add(history, 'pushState', this._trackFunc);
|
|
141
|
-
MethodEmbed.add(history, 'replaceState', this._trackFunc);
|
|
142
|
-
window.addEventListener('popstate', this._trackFunc);
|
|
143
|
-
this._trackFunc();
|
|
144
|
-
this._hasEnabled = true;
|
|
145
|
-
}
|
|
146
|
-
else {
|
|
147
|
-
MethodEmbed.remove(history, 'pushState');
|
|
148
|
-
MethodEmbed.remove(history, 'replaceState');
|
|
149
|
-
window.removeEventListener('popstate', this._trackFunc);
|
|
150
|
-
this._hasEnabled = false;
|
|
151
|
-
}
|
|
152
|
-
};
|
|
153
|
-
return PageViewTracker;
|
|
154
|
-
}());
|
|
155
|
-
export { PageViewTracker };
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { SessionTrackOpts } from '../types';
|
|
2
|
-
export declare class SessionTracker {
|
|
3
|
-
private _tracker;
|
|
4
|
-
private _hasEnabled;
|
|
5
|
-
private _config;
|
|
6
|
-
private _currentState;
|
|
7
|
-
constructor(tracker: any, opts: any);
|
|
8
|
-
private _envCheck;
|
|
9
|
-
private _trackFunc;
|
|
10
|
-
private _sendInitialEvent;
|
|
11
|
-
configure(opts?: SessionTrackOpts): SessionTrackOpts;
|
|
12
|
-
}
|
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
import { __awaiter, __generator } from "tslib";
|
|
4
|
-
// the session tracker for react native
|
|
5
|
-
import { ConsoleLogger as Logger } from '@aws-amplify/core';
|
|
6
|
-
import { AppState } from 'react-native';
|
|
7
|
-
var logger = new Logger('SessionTracker');
|
|
8
|
-
var defaultOpts = {
|
|
9
|
-
enable: false,
|
|
10
|
-
provider: 'AWSPinpoint',
|
|
11
|
-
};
|
|
12
|
-
var initialEventSent = false;
|
|
13
|
-
var SessionTracker = /** @class */ (function () {
|
|
14
|
-
function SessionTracker(tracker, opts) {
|
|
15
|
-
this._config = Object.assign({}, defaultOpts, opts);
|
|
16
|
-
this._tracker = tracker;
|
|
17
|
-
this._hasEnabled = false;
|
|
18
|
-
this._trackFunc = this._trackFunc.bind(this);
|
|
19
|
-
this._currentState = AppState.currentState;
|
|
20
|
-
this.configure(this._config);
|
|
21
|
-
}
|
|
22
|
-
SessionTracker.prototype._envCheck = function () {
|
|
23
|
-
if (!AppState) {
|
|
24
|
-
logger.debug('not in the supported react native environment');
|
|
25
|
-
return false;
|
|
26
|
-
}
|
|
27
|
-
return true;
|
|
28
|
-
};
|
|
29
|
-
SessionTracker.prototype._trackFunc = function (nextAppState) {
|
|
30
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
31
|
-
var customAttrs, _a, attributes;
|
|
32
|
-
return __generator(this, function (_b) {
|
|
33
|
-
switch (_b.label) {
|
|
34
|
-
case 0:
|
|
35
|
-
if (!(typeof this._config.attributes === 'function')) return [3 /*break*/, 2];
|
|
36
|
-
return [4 /*yield*/, this._config.attributes()];
|
|
37
|
-
case 1:
|
|
38
|
-
_a = _b.sent();
|
|
39
|
-
return [3 /*break*/, 3];
|
|
40
|
-
case 2:
|
|
41
|
-
_a = this._config.attributes;
|
|
42
|
-
_b.label = 3;
|
|
43
|
-
case 3:
|
|
44
|
-
customAttrs = _a;
|
|
45
|
-
attributes = Object.assign({}, customAttrs);
|
|
46
|
-
if (this._currentState.match(/inactive|background/) &&
|
|
47
|
-
nextAppState === 'active') {
|
|
48
|
-
logger.debug('App has come to the foreground, recording start session');
|
|
49
|
-
this._tracker({
|
|
50
|
-
name: '_session.start',
|
|
51
|
-
attributes: attributes,
|
|
52
|
-
immediate: false,
|
|
53
|
-
}, this._config.provider).catch(function (e) {
|
|
54
|
-
logger.debug('record session start event failed.', e);
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
if (this._currentState.match(/active/) &&
|
|
58
|
-
nextAppState.match(/inactive|background/)) {
|
|
59
|
-
logger.debug('App has come to inactive/background, recording stop session');
|
|
60
|
-
this._tracker({
|
|
61
|
-
name: '_session.stop',
|
|
62
|
-
attributes: attributes,
|
|
63
|
-
immediate: false,
|
|
64
|
-
}, this._config.provider).catch(function (e) {
|
|
65
|
-
logger.debug('record session stop event failed.', e);
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
this._currentState = nextAppState;
|
|
69
|
-
return [2 /*return*/];
|
|
70
|
-
}
|
|
71
|
-
});
|
|
72
|
-
});
|
|
73
|
-
};
|
|
74
|
-
// to keep configure a synchronized function
|
|
75
|
-
SessionTracker.prototype._sendInitialEvent = function () {
|
|
76
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
77
|
-
var customAttrs, _a, attributes;
|
|
78
|
-
return __generator(this, function (_b) {
|
|
79
|
-
switch (_b.label) {
|
|
80
|
-
case 0:
|
|
81
|
-
if (initialEventSent) {
|
|
82
|
-
logger.debug('the start session has been sent when the page is loaded');
|
|
83
|
-
return [2 /*return*/];
|
|
84
|
-
}
|
|
85
|
-
else {
|
|
86
|
-
initialEventSent = true;
|
|
87
|
-
}
|
|
88
|
-
if (!(typeof this._config.attributes === 'function')) return [3 /*break*/, 2];
|
|
89
|
-
return [4 /*yield*/, this._config.attributes()];
|
|
90
|
-
case 1:
|
|
91
|
-
_a = _b.sent();
|
|
92
|
-
return [3 /*break*/, 3];
|
|
93
|
-
case 2:
|
|
94
|
-
_a = this._config.attributes;
|
|
95
|
-
_b.label = 3;
|
|
96
|
-
case 3:
|
|
97
|
-
customAttrs = _a;
|
|
98
|
-
attributes = Object.assign({}, customAttrs);
|
|
99
|
-
this._tracker({
|
|
100
|
-
name: '_session.start',
|
|
101
|
-
attributes: attributes,
|
|
102
|
-
immediate: false,
|
|
103
|
-
}, this._config.provider).catch(function (e) {
|
|
104
|
-
logger.debug('record session start event failed.', e);
|
|
105
|
-
});
|
|
106
|
-
return [2 /*return*/];
|
|
107
|
-
}
|
|
108
|
-
});
|
|
109
|
-
});
|
|
110
|
-
};
|
|
111
|
-
SessionTracker.prototype.configure = function (opts) {
|
|
112
|
-
if (!this._envCheck()) {
|
|
113
|
-
return this._config;
|
|
114
|
-
}
|
|
115
|
-
Object.assign(this._config, opts);
|
|
116
|
-
if (this._config.enable && !this._hasEnabled) {
|
|
117
|
-
// send a start session as soon as it's enabled
|
|
118
|
-
this._sendInitialEvent();
|
|
119
|
-
// listen on events
|
|
120
|
-
AppState.addEventListener('change', this._trackFunc, false);
|
|
121
|
-
this._hasEnabled = true;
|
|
122
|
-
}
|
|
123
|
-
else if (!this._config.enable && this._hasEnabled) {
|
|
124
|
-
AppState.removeEventListener('change', this._trackFunc, false);
|
|
125
|
-
this._hasEnabled = false;
|
|
126
|
-
}
|
|
127
|
-
return this._config;
|
|
128
|
-
};
|
|
129
|
-
return SessionTracker;
|
|
130
|
-
}());
|
|
131
|
-
export { SessionTracker };
|