@aws-amplify/analytics 7.0.1-console-preview.f63250a.0 → 7.0.1-console-preview.5dc0b68.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,573 +0,0 @@
1
- // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
- // SPDX-License-Identifier: Apache-2.0
3
- import { __assign, __awaiter, __generator, __rest } from "tslib";
4
- import { ConsoleLogger as Logger, ClientDevice, Credentials, Signer, Hub, transferKeyToLowerCase, transferKeyToUpperCase, AnalyticsAction, Cache, } from '@aws-amplify/core';
5
- import { putEvents, updateEndpoint, } from '@aws-amplify/core/internals/aws-clients/pinpoint';
6
- import { v1 as uuid } from 'uuid';
7
- import { getAnalyticsUserAgentString } from '../utils/UserAgent';
8
- import EventBuffer from './EventBuffer';
9
- var AMPLIFY_SYMBOL = (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function'
10
- ? Symbol.for('amplify_default')
11
- : '@@amplify_default');
12
- var dispatchAnalyticsEvent = function (event, data) {
13
- Hub.dispatch('analytics', { event: event, data: data }, 'Analytics', AMPLIFY_SYMBOL);
14
- };
15
- var logger = new Logger('AWSPinpointProvider');
16
- var RETRYABLE_CODES = [429, 500];
17
- var ACCEPTED_CODES = [202];
18
- var FORBIDDEN_CODE = 403;
19
- var MOBILE_SERVICE_NAME = 'mobiletargeting';
20
- var EXPIRED_TOKEN_CODE = 'ExpiredTokenException';
21
- var UPDATE_ENDPOINT = '_update_endpoint';
22
- var SESSION_START = '_session.start';
23
- var SESSION_STOP = '_session.stop';
24
- var BEACON_SUPPORTED = typeof navigator !== 'undefined' &&
25
- navigator &&
26
- typeof navigator.sendBeacon === 'function';
27
- // events buffer
28
- var BUFFER_SIZE = 1000;
29
- var FLUSH_SIZE = 100;
30
- var FLUSH_INTERVAL = 5 * 1000; // 5s
31
- var RESEND_LIMIT = 5;
32
- // params: { event: {name: , .... }, timeStamp, config, resendLimits }
33
- export var AWSPinpointProvider = /** @class */ (function () {
34
- function AWSPinpointProvider(config) {
35
- this._endpointGenerating = true;
36
- this._endpointUpdateInProgress = false;
37
- this._buffer = null;
38
- this._endpointBuffer = [];
39
- this._config = config ? config : {};
40
- this._config.bufferSize = this._config.bufferSize || BUFFER_SIZE;
41
- this._config.flushSize = this._config.flushSize || FLUSH_SIZE;
42
- this._config.flushInterval = this._config.flushInterval || FLUSH_INTERVAL;
43
- this._config.resendLimit = this._config.resendLimit || RESEND_LIMIT;
44
- this._clientInfo = ClientDevice.clientInfo();
45
- }
46
- /**
47
- * get the category of the plugin
48
- */
49
- AWSPinpointProvider.prototype.getCategory = function () {
50
- return AWSPinpointProvider.category;
51
- };
52
- /**
53
- * get provider name of the plugin
54
- */
55
- AWSPinpointProvider.prototype.getProviderName = function () {
56
- return AWSPinpointProvider.providerName;
57
- };
58
- /**
59
- * configure the plugin
60
- * @param {Object} config - configuration
61
- */
62
- AWSPinpointProvider.prototype.configure = function (config) {
63
- var _this = this;
64
- logger.debug('configure Analytics', config);
65
- var conf = config || {};
66
- this._config = Object.assign({}, this._config, conf);
67
- // If autoSessionRecord is enabled, we need to wait for the endpoint to be
68
- // updated before sending any events. See `sendEvents` in `Analytics.ts`
69
- this._endpointGenerating = !!config['autoSessionRecord'];
70
- if (this._config.appId && !this._config.disabled) {
71
- if (!this._config.endpointId) {
72
- var cacheKey = this.getProviderName() + '_' + this._config.appId;
73
- this._getEndpointId(cacheKey)
74
- .then(function (endpointId) {
75
- logger.debug('setting endpoint id from the cache', endpointId);
76
- _this._config.endpointId = endpointId;
77
- dispatchAnalyticsEvent('pinpointProvider_configured', null);
78
- })
79
- .catch(function (err) {
80
- logger.debug('Failed to generate endpointId', err);
81
- });
82
- }
83
- else {
84
- dispatchAnalyticsEvent('pinpointProvider_configured', null);
85
- }
86
- }
87
- else {
88
- this._flushBuffer();
89
- }
90
- return this._config;
91
- };
92
- /**
93
- * record an event
94
- * @param {Object} params - the params of an event
95
- */
96
- AWSPinpointProvider.prototype.record = function (params, handlers) {
97
- return __awaiter(this, void 0, void 0, function () {
98
- var credentials, timestamp;
99
- return __generator(this, function (_a) {
100
- switch (_a.label) {
101
- case 0:
102
- logger.debug('_public record', params);
103
- return [4 /*yield*/, this._getCredentials()];
104
- case 1:
105
- credentials = _a.sent();
106
- if (!credentials || !this._config.appId || !this._config.region) {
107
- logger.debug('cannot send events without credentials, applicationId or region');
108
- return [2 /*return*/, handlers.reject(new Error('No credentials, applicationId or region'))];
109
- }
110
- this._init(credentials);
111
- timestamp = new Date().getTime();
112
- // attach the session and eventId
113
- this._generateSession(params);
114
- params.event.eventId = uuid();
115
- Object.assign(params, { timestamp: timestamp, config: this._config });
116
- if (params.event.immediate) {
117
- return [2 /*return*/, this._send(params, handlers)];
118
- }
119
- else {
120
- this._putToBuffer(params, handlers);
121
- }
122
- return [2 /*return*/];
123
- }
124
- });
125
- });
126
- };
127
- AWSPinpointProvider.prototype._sendEndpointUpdate = function (endpointObject) {
128
- return __awaiter(this, void 0, void 0, function () {
129
- var next;
130
- return __generator(this, function (_a) {
131
- switch (_a.label) {
132
- case 0:
133
- if (this._endpointUpdateInProgress) {
134
- this._endpointBuffer.push(endpointObject);
135
- return [2 /*return*/];
136
- }
137
- this._endpointUpdateInProgress = true;
138
- return [4 /*yield*/, this._updateEndpoint(endpointObject)];
139
- case 1:
140
- _a.sent();
141
- next = this._endpointBuffer.shift();
142
- this._endpointUpdateInProgress = false;
143
- next && this._sendEndpointUpdate(next);
144
- return [2 /*return*/];
145
- }
146
- });
147
- });
148
- };
149
- /**
150
- * @private
151
- * @param params - params for event recording
152
- * Put events into buffer
153
- */
154
- AWSPinpointProvider.prototype._putToBuffer = function (params, handlers) {
155
- var _a;
156
- if (params.event.name === UPDATE_ENDPOINT) {
157
- this._sendEndpointUpdate({ params: params, handlers: handlers });
158
- return;
159
- }
160
- (_a = this._buffer) === null || _a === void 0 ? void 0 : _a.push({ params: params, handlers: handlers });
161
- };
162
- AWSPinpointProvider.prototype._generateSession = function (params) {
163
- this._sessionId = this._sessionId || uuid();
164
- var event = params.event;
165
- switch (event.name) {
166
- case SESSION_START:
167
- // refresh the session id and session start time
168
- this._sessionStartTimestamp = new Date().getTime();
169
- this._sessionId = uuid();
170
- event.session = {
171
- Id: this._sessionId,
172
- StartTimestamp: new Date(this._sessionStartTimestamp).toISOString(),
173
- };
174
- break;
175
- case SESSION_STOP:
176
- var stopTimestamp = new Date().getTime();
177
- this._sessionStartTimestamp =
178
- this._sessionStartTimestamp || new Date().getTime();
179
- this._sessionId = this._sessionId || uuid();
180
- event.session = {
181
- Id: this._sessionId,
182
- Duration: stopTimestamp - this._sessionStartTimestamp,
183
- StartTimestamp: new Date(this._sessionStartTimestamp).toISOString(),
184
- StopTimestamp: new Date(stopTimestamp).toISOString(),
185
- };
186
- this._sessionId = undefined;
187
- this._sessionStartTimestamp = undefined;
188
- break;
189
- default:
190
- this._sessionStartTimestamp =
191
- this._sessionStartTimestamp || new Date().getTime();
192
- this._sessionId = this._sessionId || uuid();
193
- event.session = {
194
- Id: this._sessionId,
195
- StartTimestamp: new Date(this._sessionStartTimestamp).toISOString(),
196
- };
197
- }
198
- };
199
- AWSPinpointProvider.prototype._send = function (params, handlers) {
200
- return __awaiter(this, void 0, void 0, function () {
201
- var event;
202
- return __generator(this, function (_a) {
203
- event = params.event;
204
- switch (event.name) {
205
- case UPDATE_ENDPOINT:
206
- return [2 /*return*/, this._updateEndpoint({ params: params, handlers: handlers })];
207
- case SESSION_STOP:
208
- return [2 /*return*/, this._pinpointSendStopSession(params, handlers)];
209
- default:
210
- return [2 /*return*/, this._pinpointPutEvents(params, handlers)];
211
- }
212
- return [2 /*return*/];
213
- });
214
- });
215
- };
216
- AWSPinpointProvider.prototype._generateBatchItemContext = function (params) {
217
- var _a, _b;
218
- var event = params.event, timestamp = params.timestamp, config = params.config;
219
- var name = event.name, attributes = event.attributes, metrics = event.metrics, eventId = event.eventId, session = event.session;
220
- var appId = config.appId, endpointId = config.endpointId;
221
- var endpointContext = {};
222
- return {
223
- ApplicationId: appId,
224
- EventsRequest: {
225
- BatchItem: (_a = {},
226
- _a[endpointId] = {
227
- Endpoint: endpointContext,
228
- Events: (_b = {},
229
- _b[eventId] = {
230
- EventType: name,
231
- Timestamp: new Date(timestamp).toISOString(),
232
- Attributes: attributes,
233
- Metrics: metrics,
234
- Session: session,
235
- },
236
- _b),
237
- },
238
- _a),
239
- },
240
- };
241
- };
242
- AWSPinpointProvider.prototype._pinpointPutEvents = function (params, handlers) {
243
- var _a, _b, _c, _d, _e;
244
- return __awaiter(this, void 0, void 0, function () {
245
- var eventId, endpointId, eventParams, credentials, region, data, StatusCode, Message, err_1;
246
- var _f, _g;
247
- return __generator(this, function (_h) {
248
- switch (_h.label) {
249
- case 0:
250
- eventId = params.event.eventId, endpointId = params.config.endpointId;
251
- eventParams = this._generateBatchItemContext(params);
252
- _h.label = 1;
253
- case 1:
254
- _h.trys.push([1, 3, , 4]);
255
- credentials = (_f = this._config, _f.credentials), region = _f.region;
256
- return [4 /*yield*/, putEvents({
257
- credentials: credentials,
258
- region: region,
259
- userAgentValue: getAnalyticsUserAgentString(AnalyticsAction.Record),
260
- }, eventParams)];
261
- case 2:
262
- data = _h.sent();
263
- StatusCode = (_g = (_e = (_d = (_c = (_b = (_a = data.EventsResponse) === null || _a === void 0 ? void 0 : _a.Results) === null || _b === void 0 ? void 0 : _b[endpointId]) === null || _c === void 0 ? void 0 : _c.EventsItemResponse) === null || _d === void 0 ? void 0 : _d[eventId]) !== null && _e !== void 0 ? _e : {}, _g.StatusCode), Message = _g.Message;
264
- if (StatusCode && ACCEPTED_CODES.includes(StatusCode)) {
265
- logger.debug('record event success. ', data);
266
- return [2 /*return*/, handlers.resolve(data)];
267
- }
268
- else if (StatusCode && RETRYABLE_CODES.includes(StatusCode)) {
269
- // TODO: v6 integrate retry to the service handler retryDecider
270
- this._retry(params, handlers);
271
- }
272
- else {
273
- logger.error("Event ".concat(eventId, " is not accepted, the error is ").concat(Message));
274
- return [2 /*return*/, handlers.reject(data)];
275
- }
276
- return [3 /*break*/, 4];
277
- case 3:
278
- err_1 = _h.sent();
279
- this._eventError(err_1);
280
- return [2 /*return*/, handlers.reject(err_1)];
281
- case 4: return [2 /*return*/];
282
- }
283
- });
284
- });
285
- };
286
- AWSPinpointProvider.prototype._pinpointSendStopSession = function (params, handlers) {
287
- if (!BEACON_SUPPORTED) {
288
- this._pinpointPutEvents(params, handlers);
289
- return;
290
- }
291
- var eventParams = this._generateBatchItemContext(params);
292
- var region = this._config.region;
293
- var ApplicationId = eventParams.ApplicationId, EventsRequest = eventParams.EventsRequest;
294
- var accessInfo = {
295
- secret_key: this._config.credentials.secretAccessKey,
296
- access_key: this._config.credentials.accessKeyId,
297
- session_token: this._config.credentials.sessionToken,
298
- };
299
- var url = "https://pinpoint.".concat(region, ".amazonaws.com/v1/apps/").concat(ApplicationId, "/events/legacy");
300
- var body = JSON.stringify(EventsRequest);
301
- var method = 'POST';
302
- var request = {
303
- url: url,
304
- body: body,
305
- method: method,
306
- };
307
- var serviceInfo = { region: region, service: MOBILE_SERVICE_NAME };
308
- var requestUrl = Signer.signUrl(request, accessInfo, serviceInfo);
309
- var success = navigator.sendBeacon(requestUrl, body);
310
- if (success) {
311
- return handlers.resolve('sendBeacon success');
312
- }
313
- return handlers.reject('sendBeacon failure');
314
- };
315
- AWSPinpointProvider.prototype._retry = function (params, handlers) {
316
- var resendLimit = params.config.resendLimit;
317
- // For backward compatibility
318
- params.resendLimit =
319
- typeof params.resendLimit === 'number' ? params.resendLimit : resendLimit;
320
- if (params.resendLimit-- > 0) {
321
- logger.debug("resending event ".concat(params.eventName, " with ").concat(params.resendLimit, " retry times left"));
322
- this._pinpointPutEvents(params, handlers);
323
- }
324
- else {
325
- logger.debug("retry times used up for event ".concat(params.eventName));
326
- }
327
- };
328
- AWSPinpointProvider.prototype._updateEndpoint = function (endpointObject) {
329
- return __awaiter(this, void 0, void 0, function () {
330
- var params, handlers, config, event, appId, endpointId, request, update_params, credentials, region, data, err_2, failureData;
331
- var _a;
332
- return __generator(this, function (_b) {
333
- switch (_b.label) {
334
- case 0:
335
- params = endpointObject.params, handlers = endpointObject.handlers;
336
- config = params.config, event = params.event;
337
- appId = config.appId, endpointId = config.endpointId;
338
- request = this._endpointRequest(config, transferKeyToLowerCase(event, [], ['attributes', 'userAttributes', 'Attributes', 'UserAttributes']));
339
- update_params = {
340
- ApplicationId: appId,
341
- EndpointId: endpointId,
342
- EndpointRequest: request,
343
- };
344
- _b.label = 1;
345
- case 1:
346
- _b.trys.push([1, 3, , 4]);
347
- credentials = (_a = this._config, _a.credentials), region = _a.region;
348
- return [4 /*yield*/, updateEndpoint({
349
- credentials: credentials,
350
- region: region,
351
- userAgentValue: getAnalyticsUserAgentString(AnalyticsAction.UpdateEndpoint),
352
- }, update_params)];
353
- case 2:
354
- data = _b.sent();
355
- logger.debug('updateEndpoint success', data);
356
- this._endpointGenerating = false;
357
- this._resumeBuffer();
358
- handlers.resolve(data);
359
- return [2 /*return*/];
360
- case 3:
361
- err_2 = _b.sent();
362
- failureData = {
363
- err: err_2,
364
- update_params: update_params,
365
- endpointObject: endpointObject,
366
- };
367
- return [2 /*return*/, this._handleEndpointUpdateFailure(failureData)];
368
- case 4: return [2 /*return*/];
369
- }
370
- });
371
- });
372
- };
373
- AWSPinpointProvider.prototype._handleEndpointUpdateFailure = function (failureData) {
374
- return __awaiter(this, void 0, void 0, function () {
375
- var err, endpointObject, statusCode, exponential;
376
- return __generator(this, function (_a) {
377
- err = failureData.err, endpointObject = failureData.endpointObject;
378
- statusCode = err.$metadata && err.$metadata.httpStatusCode;
379
- logger.debug('updateEndpoint error', err);
380
- switch (statusCode) {
381
- case FORBIDDEN_CODE:
382
- return [2 /*return*/, this._handleEndpointUpdateForbidden(failureData)];
383
- default:
384
- if (RETRYABLE_CODES.includes(statusCode)) {
385
- exponential = true;
386
- return [2 /*return*/, this._retryEndpointUpdate(endpointObject, exponential)];
387
- }
388
- logger.error('updateEndpoint failed', err);
389
- endpointObject.handlers.reject(err);
390
- }
391
- return [2 /*return*/];
392
- });
393
- });
394
- };
395
- AWSPinpointProvider.prototype._handleEndpointUpdateForbidden = function (failureData) {
396
- var err = failureData.err, endpointObject = failureData.endpointObject;
397
- var code = err.code, retryable = err.retryable;
398
- if (code !== EXPIRED_TOKEN_CODE && !retryable) {
399
- return endpointObject.handlers.reject(err);
400
- }
401
- this._retryEndpointUpdate(endpointObject);
402
- };
403
- AWSPinpointProvider.prototype._retryEndpointUpdate = function (endpointObject, exponential) {
404
- if (exponential === void 0) { exponential = false; }
405
- logger.debug('_retryEndpointUpdate', endpointObject);
406
- var params = endpointObject.params;
407
- // TODO: implement retry with exp back off once exp function is available
408
- var resendLimit = params.config.resendLimit;
409
- params.resendLimit =
410
- typeof params.resendLimit === 'number' ? params.resendLimit : resendLimit;
411
- if (params.resendLimit-- > 0) {
412
- logger.debug("resending endpoint update ".concat(params.event.eventId, " with ").concat(params.resendLimit, " retry attempts remaining"));
413
- // insert at the front of endpointBuffer
414
- this._endpointBuffer.length
415
- ? this._endpointBuffer.unshift(endpointObject)
416
- : this._updateEndpoint(endpointObject);
417
- return;
418
- }
419
- logger.warn("resending endpoint update ".concat(params.event.eventId, " failed after ").concat(params.config.resendLimit, " attempts"));
420
- if (this._endpointGenerating) {
421
- logger.error('Initial endpoint update failed. ');
422
- }
423
- };
424
- /**
425
- * @private
426
- * @param config
427
- * Configure credentials and init buffer
428
- */
429
- AWSPinpointProvider.prototype._init = function (credentials) {
430
- return __awaiter(this, void 0, void 0, function () {
431
- var identityId;
432
- return __generator(this, function (_a) {
433
- logger.debug('init provider');
434
- if (this._config.credentials &&
435
- this._config.credentials.sessionToken === credentials.sessionToken &&
436
- this._config.credentials.identityId === credentials.identityId) {
437
- logger.debug('no change for aws credentials, directly return from init');
438
- return [2 /*return*/];
439
- }
440
- identityId = this._config.credentials
441
- ? this._config.credentials.identityId
442
- : null;
443
- this._config.credentials = credentials;
444
- if (!this._bufferExists() || identityId !== credentials.identityId) {
445
- // if the identity has changed, flush the buffer and instantiate a new one
446
- // this will cause the old buffer to send any remaining events
447
- // with the old credentials and then stop looping and shortly thereafter get picked up by GC
448
- this._initBuffer();
449
- }
450
- return [2 /*return*/];
451
- });
452
- });
453
- };
454
- AWSPinpointProvider.prototype._bufferExists = function () {
455
- return this._buffer && this._buffer instanceof EventBuffer;
456
- };
457
- AWSPinpointProvider.prototype._initBuffer = function () {
458
- if (this._bufferExists()) {
459
- this._flushBuffer();
460
- }
461
- this._buffer = new EventBuffer(this._config);
462
- // if the first endpoint update hasn't yet resolved pause the buffer to
463
- // prevent race conditions. It will be resumed as soon as that request succeeds
464
- if (this._endpointGenerating) {
465
- this._buffer.pause();
466
- }
467
- };
468
- AWSPinpointProvider.prototype._flushBuffer = function () {
469
- var _a;
470
- if (this._bufferExists()) {
471
- (_a = this._buffer) === null || _a === void 0 ? void 0 : _a.flush();
472
- this._buffer = null;
473
- }
474
- };
475
- AWSPinpointProvider.prototype._resumeBuffer = function () {
476
- var _a;
477
- if (this._bufferExists()) {
478
- (_a = this._buffer) === null || _a === void 0 ? void 0 : _a.resume();
479
- }
480
- };
481
- AWSPinpointProvider.prototype._getEndpointId = function (cacheKey) {
482
- return __awaiter(this, void 0, void 0, function () {
483
- var endpointId, ttl, expiration;
484
- return __generator(this, function (_a) {
485
- switch (_a.label) {
486
- case 0: return [4 /*yield*/, Cache.getItem(cacheKey)];
487
- case 1:
488
- endpointId = _a.sent();
489
- logger.debug('endpointId from cache', endpointId, 'type', typeof endpointId);
490
- if (!endpointId) {
491
- endpointId = uuid();
492
- ttl = 1000 * 60 * 60 * 24 * 365 * 100;
493
- expiration = new Date().getTime() + ttl;
494
- Cache.setItem(cacheKey, endpointId, {
495
- expires: expiration,
496
- priority: 1,
497
- });
498
- }
499
- return [2 /*return*/, endpointId];
500
- }
501
- });
502
- });
503
- };
504
- /**
505
- * EndPoint request
506
- * @return {Object} - The request of updating endpoint
507
- */
508
- AWSPinpointProvider.prototype._endpointRequest = function (config, event) {
509
- var credentials = config.credentials;
510
- var clientInfo = this._clientInfo || {};
511
- var clientContext = config.clientContext || {};
512
- // for now we have three different ways for default endpoint configurations
513
- // clientInfo
514
- // clientContext (deprecated)
515
- // config.endpoint
516
- var defaultEndpointConfig = config.endpoint || {};
517
- var demographicByClientInfo = {
518
- appVersion: clientInfo.appVersion,
519
- make: clientInfo.make,
520
- model: clientInfo.model,
521
- modelVersion: clientInfo.version,
522
- platform: clientInfo.platform,
523
- };
524
- // for backward compatibility
525
- var clientId = clientContext.clientId, appTitle = clientContext.appTitle, appVersionName = clientContext.appVersionName, appVersionCode = clientContext.appVersionCode, appPackageName = clientContext.appPackageName, demographicByClientContext = __rest(clientContext, ["clientId", "appTitle", "appVersionName", "appVersionCode", "appPackageName"]);
526
- var channelType = event.address
527
- ? clientInfo.platform === 'android'
528
- ? 'GCM'
529
- : 'APNS'
530
- : undefined;
531
- var tmp = __assign(__assign(__assign({ channelType: channelType, requestId: uuid(), effectiveDate: new Date().toISOString() }, defaultEndpointConfig), event), { attributes: __assign(__assign({}, defaultEndpointConfig.attributes), event.attributes), demographic: __assign(__assign(__assign(__assign({}, demographicByClientInfo), demographicByClientContext), defaultEndpointConfig.demographic), event.demographic), location: __assign(__assign({}, defaultEndpointConfig.location), event.location), metrics: __assign(__assign({}, defaultEndpointConfig.metrics), event.metrics), user: {
532
- userId: event.userId ||
533
- defaultEndpointConfig.userId ||
534
- credentials.identityId,
535
- userAttributes: __assign(__assign({}, defaultEndpointConfig.userAttributes), event.userAttributes),
536
- } });
537
- // eliminate unnecessary params
538
- var userId = tmp.userId, userAttributes = tmp.userAttributes, name = tmp.name, session = tmp.session, eventId = tmp.eventId, immediate = tmp.immediate, ret = __rest(tmp, ["userId", "userAttributes", "name", "session", "eventId", "immediate"]);
539
- return transferKeyToUpperCase(ret, [], ['metrics', 'userAttributes', 'attributes']);
540
- };
541
- AWSPinpointProvider.prototype._eventError = function (err) {
542
- logger.error('record event failed.', err);
543
- logger.warn("Please ensure you have updated your Pinpoint IAM Policy " +
544
- "with the Action: \"mobiletargeting:PutEvents\" " +
545
- "in order to record events");
546
- };
547
- AWSPinpointProvider.prototype._getCredentials = function () {
548
- return __awaiter(this, void 0, void 0, function () {
549
- var credentials, err_3;
550
- return __generator(this, function (_a) {
551
- switch (_a.label) {
552
- case 0:
553
- _a.trys.push([0, 2, , 3]);
554
- return [4 /*yield*/, Credentials.get()];
555
- case 1:
556
- credentials = _a.sent();
557
- if (!credentials)
558
- return [2 /*return*/, null];
559
- logger.debug('set credentials for analytics', credentials);
560
- return [2 /*return*/, Credentials.shear(credentials)];
561
- case 2:
562
- err_3 = _a.sent();
563
- logger.debug('ensure credentials error', err_3);
564
- return [2 /*return*/, null];
565
- case 3: return [2 /*return*/];
566
- }
567
- });
568
- });
569
- };
570
- AWSPinpointProvider.category = 'Analytics';
571
- AWSPinpointProvider.providerName = 'AWSPinpoint';
572
- return AWSPinpointProvider;
573
- }());
@@ -1,40 +0,0 @@
1
- import { ICredentials } from '@aws-amplify/core';
2
- interface BasePayload {
3
- userId: string;
4
- trackingId: string;
5
- sessionId: string;
6
- }
7
- type Config = {
8
- [key: string]: string | number;
9
- };
10
- type Properties = {
11
- [key: string]: any;
12
- };
13
- export interface RequestParams {
14
- eventData: EventData;
15
- sessionInfo: SessionInfo;
16
- config: Config;
17
- sentAt: number;
18
- credentials: ICredentials;
19
- }
20
- export interface EventData {
21
- eventType: string;
22
- properties: Properties;
23
- }
24
- export interface SessionInfo {
25
- userId: string;
26
- trackingId: string;
27
- sessionId: string;
28
- }
29
- export interface RecordEventPayload {
30
- eventId: string;
31
- eventType: string;
32
- sentAt: number;
33
- properties?: string;
34
- }
35
- export interface RecordEventListPayload extends BasePayload {
36
- eventList: RecordEventPayload[];
37
- config?: Config;
38
- credentials?: ICredentials;
39
- }
40
- export {};
@@ -1,20 +0,0 @@
1
- import { RequestParams } from './DataType';
2
- export declare class MediaAutoTrack {
3
- private _mediaElement;
4
- private _provider;
5
- private _params;
6
- private _started;
7
- private _iframePlayer;
8
- private eventActionMapping;
9
- private _youTubeIframeLoader;
10
- constructor(params: RequestParams, provider: any);
11
- private _initYoutubeFrame;
12
- private _iframeMediaTracker;
13
- private _onPlayerStateChange;
14
- private _html5MediaTracker;
15
- private playEventAction;
16
- private pauseEventAction;
17
- private endedEventAction;
18
- private recordEvent;
19
- private _financial;
20
- }