@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,49 +0,0 @@
1
- // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
- // SPDX-License-Identifier: Apache-2.0
3
- import { ICredentials } from '@aws-amplify/core';
4
-
5
- interface BasePayload {
6
- userId: string;
7
- trackingId: string;
8
- sessionId: string;
9
- }
10
-
11
- type Config = {
12
- [key: string]: string | number;
13
- };
14
-
15
- type Properties = {
16
- [key: string]: any;
17
- };
18
-
19
- export interface RequestParams {
20
- eventData: EventData;
21
- sessionInfo: SessionInfo;
22
- config: Config;
23
- sentAt: number;
24
- credentials: ICredentials;
25
- }
26
-
27
- export interface EventData {
28
- eventType: string;
29
- properties: Properties;
30
- }
31
-
32
- export interface SessionInfo {
33
- userId: string;
34
- trackingId: string;
35
- sessionId: string;
36
- }
37
-
38
- export interface RecordEventPayload {
39
- eventId: string;
40
- eventType: string;
41
- sentAt: number;
42
- properties?: string;
43
- }
44
-
45
- export interface RecordEventListPayload extends BasePayload {
46
- eventList: RecordEventPayload[];
47
- config?: Config;
48
- credentials?: ICredentials;
49
- }
@@ -1,196 +0,0 @@
1
- // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
- // SPDX-License-Identifier: Apache-2.0
3
- import { RequestParams } from './DataType';
4
-
5
- enum HTML5_MEDIA_EVENT {
6
- 'PLAY' = 'play',
7
- 'PAUSE' = 'pause',
8
- 'ENDED' = 'Ended',
9
- }
10
- enum MEDIA_TYPE {
11
- 'IFRAME' = 'IFRAME',
12
- 'VIDEO' = 'VIDEO',
13
- 'AUDIO' = 'AUDIO',
14
- }
15
- enum EVENT_TYPE {
16
- 'PLAY' = 'Play',
17
- 'ENDED' = 'Ended',
18
- 'PAUSE' = 'Pause',
19
- 'TIME_WATCHED' = 'TimeWatched',
20
- }
21
-
22
- export class MediaAutoTrack {
23
- private _mediaElement;
24
- private _provider;
25
- private _params;
26
- private _started;
27
- private _iframePlayer;
28
- private eventActionMapping = {
29
- [EVENT_TYPE.ENDED]: this.endedEventAction.bind(this),
30
- [EVENT_TYPE.PLAY]: this.playEventAction.bind(this),
31
- [EVENT_TYPE.PAUSE]: this.pauseEventAction.bind(this),
32
- };
33
-
34
- private _youTubeIframeLoader;
35
-
36
- constructor(params: RequestParams, provider) {
37
- const { eventData } = params;
38
- this._params = params;
39
- this._mediaElement = document.getElementById(
40
- eventData.properties['domElementId']
41
- );
42
- this._started = false;
43
- this._provider = provider;
44
- const mediaTrackFunMapping = {
45
- IFRAME: this._iframeMediaTracker,
46
- VIDEO: this._html5MediaTracker,
47
- AUDIO: this._html5MediaTracker,
48
- };
49
-
50
- mediaTrackFunMapping[this._mediaElement.tagName].bind(this)();
51
-
52
- this._initYoutubeFrame();
53
- }
54
-
55
- private _initYoutubeFrame() {
56
- this._youTubeIframeLoader = {
57
- src: 'https://www.youtube.com/iframe_api',
58
- loading: false,
59
- loaded: false,
60
- listeners: [],
61
-
62
- load(callback) {
63
- const _this = this;
64
- this.listeners.push(callback);
65
-
66
- if (this.loaded) {
67
- setTimeout(function() {
68
- _this.done();
69
- });
70
- return;
71
- }
72
-
73
- if (this.loading) {
74
- return;
75
- }
76
-
77
- this.loading = true;
78
-
79
- window['onYouTubeIframeAPIReady'] = function() {
80
- _this.loaded = true;
81
- _this.done();
82
- };
83
-
84
- const script = document.createElement('script');
85
- script.type = 'text/javascript';
86
- script.src = this.src;
87
- document.body.appendChild(script);
88
- },
89
-
90
- done() {
91
- delete window['onYouTubeIframeAPIReady'];
92
-
93
- while (this.listeners.length) {
94
- this.listeners.pop()(window['YT']);
95
- }
96
- },
97
- };
98
- }
99
-
100
- private _iframeMediaTracker(): void {
101
- const that = this;
102
- setInterval(function() {
103
- if (that._started) {
104
- that.recordEvent(MEDIA_TYPE.IFRAME, EVENT_TYPE.TIME_WATCHED);
105
- }
106
- }, 3 * 1000);
107
- this._youTubeIframeLoader.load(function(YT) {
108
- that._iframePlayer = new YT.Player(that._mediaElement.id, {
109
- events: { onStateChange: that._onPlayerStateChange.bind(that) },
110
- });
111
- });
112
- }
113
-
114
- private _onPlayerStateChange(event): void {
115
- const iframeEventMapping = {
116
- 0: EVENT_TYPE.ENDED,
117
- 1: EVENT_TYPE.PLAY,
118
- 2: EVENT_TYPE.PAUSE,
119
- };
120
- const eventType = iframeEventMapping[event.data];
121
- if (eventType) {
122
- this.eventActionMapping[eventType](MEDIA_TYPE.IFRAME);
123
- }
124
- }
125
-
126
- private _html5MediaTracker(): void {
127
- const that = this;
128
- setInterval(function() {
129
- if (that._started) {
130
- that.recordEvent(MEDIA_TYPE.VIDEO, EVENT_TYPE.TIME_WATCHED);
131
- }
132
- }, 3 * 1000);
133
- this._mediaElement.addEventListener(
134
- HTML5_MEDIA_EVENT.PLAY,
135
- () => {
136
- that.eventActionMapping[EVENT_TYPE.PLAY](MEDIA_TYPE.VIDEO);
137
- },
138
- false
139
- );
140
- this._mediaElement.addEventListener(
141
- HTML5_MEDIA_EVENT.PAUSE,
142
- () => {
143
- that.eventActionMapping[EVENT_TYPE.PAUSE](MEDIA_TYPE.VIDEO);
144
- },
145
- false
146
- );
147
-
148
- this._mediaElement.addEventListener(
149
- HTML5_MEDIA_EVENT.ENDED,
150
- () => {
151
- that.eventActionMapping[EVENT_TYPE.ENDED](MEDIA_TYPE.VIDEO);
152
- },
153
- false
154
- );
155
- }
156
-
157
- private playEventAction(mediaType) {
158
- this._started = true;
159
- this.recordEvent(mediaType, EVENT_TYPE.PLAY);
160
- }
161
-
162
- private pauseEventAction(mediaType) {
163
- this._started = false;
164
- this.recordEvent(mediaType, EVENT_TYPE.PAUSE);
165
- }
166
-
167
- private endedEventAction(mediaType) {
168
- this._started = false;
169
- this.recordEvent(mediaType, EVENT_TYPE.ENDED);
170
- }
171
-
172
- private recordEvent(mediaType: string, eventType: string): void {
173
- const newParams = Object.assign({}, this._params);
174
- const { eventData } = newParams;
175
- eventData.eventType = eventType;
176
- let currentPlayTime: string;
177
- if (mediaType === MEDIA_TYPE.VIDEO) {
178
- currentPlayTime = this._mediaElement.currentTime;
179
- eventData.properties.duration = this._mediaElement.duration;
180
- } else {
181
- currentPlayTime = this._financial(this._iframePlayer.getCurrentTime());
182
- eventData.properties.duration = this._financial(
183
- this._iframePlayer.getDuration()
184
- );
185
- }
186
- const percentage =
187
- parseFloat(currentPlayTime) / parseFloat(eventData.properties.duration);
188
- eventData.properties.eventValue = Number(percentage.toFixed(4));
189
- delete eventData.properties.domElementId;
190
- this._provider.putToBuffer(newParams);
191
- }
192
-
193
- private _financial(x) {
194
- return Number.parseFloat(x).toFixed(4);
195
- }
196
- }
@@ -1,121 +0,0 @@
1
- // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
- // SPDX-License-Identifier: Apache-2.0
3
- import { SessionInfo } from './DataType';
4
- import isEmpty from 'lodash/isEmpty';
5
- import isEqual from 'lodash/isEqual';
6
- import { v1 as uuid } from 'uuid';
7
- import { ConsoleLogger as Logger, browserOrNode, Cache } from '@aws-amplify/core';
8
-
9
- const PERSONALIZE_CACHE = '_awsct';
10
- const PERSONALIZE_CACHE_USERID = '_awsct_uid';
11
- const PERSONALIZE_CACHE_SESSIONID = '_awsct_sid';
12
- const DEFAULT_CACHE_PREFIX = 'personalize';
13
- const TIMER_INTERVAL = 30 * 1000;
14
- const DELIMITER = '.';
15
- const CACHE_EXPIRY_IN_DAYS = 7;
16
- const logger = new Logger('AmazonPersonalizeProvider');
17
-
18
- export class SessionInfoManager {
19
- private _isBrowser;
20
- private _cache;
21
- private _timer;
22
- private _timerKey;
23
-
24
- constructor(prefixKey = '') {
25
- this._isBrowser = browserOrNode().isBrowser;
26
- this._timerKey = uuid().substr(0, 15);
27
- this._refreshTimer();
28
- }
29
-
30
- private _refreshTimer() {
31
- if (this._timer) {
32
- clearInterval(this._timer);
33
- }
34
- const that = this;
35
- this._timer = setInterval(() => {
36
- that._timerKey = uuid().substr(0, 15);
37
- }, TIMER_INTERVAL);
38
- }
39
-
40
- private storeValue(key: string, value: any): void {
41
- const today = new Date();
42
- const expire = new Date();
43
- expire.setTime(today.getTime() + 3600000 * 24 * CACHE_EXPIRY_IN_DAYS);
44
- Cache.setItem(this._getCachePrefix(key), value, {
45
- expires: expire.getTime(),
46
- });
47
- }
48
-
49
- private retrieveValue(key: string): any {
50
- return Cache.getItem(this._getCachePrefix(key));
51
- }
52
-
53
- private _getCachePrefix(key): string {
54
- if (this._isBrowser) {
55
- return key + DELIMITER + window.location.host;
56
- }
57
- return DEFAULT_CACHE_PREFIX;
58
- }
59
-
60
- public getTimerKey() {
61
- return this._timerKey;
62
- }
63
-
64
- public updateSessionInfo(userId: string, sessionInfo: SessionInfo) {
65
- const existUserId = sessionInfo.userId;
66
- const existSessionId = sessionInfo.sessionId;
67
- if (this._isRequireNewSession(userId, existUserId, existSessionId)) {
68
- const newSessionId = uuid();
69
- this.storeValue(PERSONALIZE_CACHE_USERID, userId);
70
- this.storeValue(PERSONALIZE_CACHE_SESSIONID, newSessionId);
71
- sessionInfo.sessionId = newSessionId;
72
- } else if (
73
- this._isRequireUpdateSessionInfo(userId, existUserId, existSessionId)
74
- ) {
75
- this.storeValue(PERSONALIZE_CACHE_USERID, userId);
76
- }
77
- sessionInfo.userId = userId;
78
- }
79
-
80
- private _isRequireUpdateSessionInfo(
81
- userId: string,
82
- cachedSessionUserId: string,
83
- cachedSessionSessionId: string
84
- ): boolean {
85
- // anonymouse => sign in : hasSession && s_userId == null && curr_userId !=null
86
- const isNoCachedSession: boolean = isEmpty(cachedSessionSessionId);
87
- return (
88
- !isNoCachedSession && isEmpty(cachedSessionUserId) && !isEmpty(userId)
89
- );
90
- }
91
-
92
- public retrieveSessionInfo(trackingId: string): SessionInfo {
93
- const sessionInfo = <SessionInfo>{};
94
- sessionInfo.trackingId = trackingId;
95
- sessionInfo.sessionId = this.retrieveValue(PERSONALIZE_CACHE_SESSIONID);
96
- sessionInfo.userId = this.retrieveValue(PERSONALIZE_CACHE_USERID);
97
- if (isEmpty(sessionInfo.sessionId)) {
98
- sessionInfo.sessionId = uuid();
99
- this.storeValue(PERSONALIZE_CACHE_SESSIONID, sessionInfo.sessionId);
100
- }
101
- this.storeValue(PERSONALIZE_CACHE, trackingId);
102
- return sessionInfo;
103
- }
104
-
105
- private _isRequireNewSession(
106
- userId: string,
107
- cachedSessionUserId: string,
108
- cachedSessionSessionId: string
109
- ): boolean {
110
- // new session => 1. no cached session info 2. signOut: s_userId !=null && curr_userId ==null
111
- // 3. switch account: s_userId !=null && curr_userId !=null && s_userId != curr_userId
112
- const isNoCachedSession: boolean = isEmpty(cachedSessionSessionId);
113
- const isSignoutCase: boolean =
114
- isEmpty(userId) && !isEmpty(cachedSessionUserId);
115
- const isSwitchUserCase: boolean =
116
- !isEmpty(userId) &&
117
- !isEmpty(cachedSessionUserId) &&
118
- !isEqual(userId, cachedSessionUserId);
119
- return isNoCachedSession || isSignoutCase || isSwitchUserCase;
120
- }
121
- }
@@ -1,11 +0,0 @@
1
- // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
- // SPDX-License-Identifier: Apache-2.0
3
- export {
4
- EventData,
5
- RecordEventListPayload,
6
- RecordEventPayload,
7
- RequestParams,
8
- SessionInfo,
9
- } from './DataType';
10
- export { SessionInfoManager } from './SessionInfoManager';
11
- export { MediaAutoTrack } from './MediaAutoTrack';