@adobe/alloy 2.19.2 → 2.20.0-alpha.1

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 (59) hide show
  1. package/libEs5/components/Identity/index.js +1 -2
  2. package/libEs5/components/Identity/injectAddQueryStringIdentityToPayload.js +0 -4
  3. package/libEs5/components/Identity/injectAwaitIdentityCookie.js +11 -7
  4. package/libEs5/components/Identity/injectEnsureSingleIdentity.js +3 -6
  5. package/libEs5/components/LegacyMediaAnalytics/createMediaAnalyticsTracker.js +272 -0
  6. package/libEs5/components/LegacyMediaAnalytics/createMediaHelper.js +188 -0
  7. package/libEs5/components/LegacyMediaAnalytics/index.js +48 -0
  8. package/libEs5/components/LegacyMediaAnalytics/media/constants.js +154 -0
  9. package/libEs5/components/LegacyMediaAnalytics/media/mediaKeysToXdmConverter.js +51 -0
  10. package/libEs5/components/MediaCollection/constants/eventTypes.js +25 -0
  11. package/libEs5/components/MediaCollection/createHeartbeatEngine.js +63 -0
  12. package/libEs5/components/MediaCollection/createMediaEventManager.js +109 -0
  13. package/libEs5/components/MediaCollection/createMediaRequest.js +30 -0
  14. package/libEs5/components/MediaCollection/createMediaSessionCacheManager.js +62 -0
  15. package/libEs5/components/MediaCollection/createUpdateMediaSessionState.js +31 -0
  16. package/libEs5/components/MediaCollection/index.js +165 -0
  17. package/libEs5/components/MediaCollection/validateMediaEventOptions.js +35 -0
  18. package/libEs5/components/MediaCollection/validateMediaSessionOptions.js +36 -0
  19. package/libEs5/components/Personalization/createFetchDataHandler.js +1 -4
  20. package/libEs5/components/Personalization/createNotificationHandler.js +2 -8
  21. package/libEs5/components/Personalization/createOnDecisionHandler.js +1 -1
  22. package/libEs5/constants/libraryVersion.js +1 -1
  23. package/libEs5/core/componentCreators.js +3 -1
  24. package/libEs5/core/edgeNetwork/injectSendEdgeNetworkRequest.js +1 -1
  25. package/libEs5/utils/debounce.js +30 -0
  26. package/libEs5/utils/request/createRequest.js +8 -1
  27. package/libEs5/utils/validation/createMaximumValidator.js +22 -0
  28. package/libEs5/utils/validation/index.js +11 -1
  29. package/libEs5/utils/validation/matchesRegexpValidator.js +22 -0
  30. package/libEs6/components/Identity/index.js +1 -2
  31. package/libEs6/components/Identity/injectAddQueryStringIdentityToPayload.js +1 -5
  32. package/libEs6/components/Identity/injectAwaitIdentityCookie.js +11 -7
  33. package/libEs6/components/Identity/injectEnsureSingleIdentity.js +3 -4
  34. package/libEs6/components/LegacyMediaAnalytics/createMediaAnalyticsTracker.js +276 -0
  35. package/libEs6/components/LegacyMediaAnalytics/createMediaHelper.js +186 -0
  36. package/libEs6/components/LegacyMediaAnalytics/index.js +45 -0
  37. package/libEs6/components/LegacyMediaAnalytics/media/constants.js +140 -0
  38. package/libEs6/components/LegacyMediaAnalytics/media/mediaKeysToXdmConverter.js +46 -0
  39. package/libEs6/components/MediaCollection/constants/eventTypes.js +21 -0
  40. package/libEs6/components/MediaCollection/createHeartbeatEngine.js +64 -0
  41. package/libEs6/components/MediaCollection/createMediaEventManager.js +115 -0
  42. package/libEs6/components/MediaCollection/createMediaRequest.js +28 -0
  43. package/libEs6/components/MediaCollection/createMediaSessionCacheManager.js +63 -0
  44. package/libEs6/components/MediaCollection/createUpdateMediaSessionState.js +30 -0
  45. package/libEs6/components/MediaCollection/index.js +164 -0
  46. package/libEs6/components/MediaCollection/validateMediaEventOptions.js +32 -0
  47. package/libEs6/components/MediaCollection/validateMediaSessionOptions.js +34 -0
  48. package/libEs6/components/Personalization/createFetchDataHandler.js +1 -4
  49. package/libEs6/components/Personalization/createNotificationHandler.js +2 -6
  50. package/libEs6/components/Personalization/createOnDecisionHandler.js +1 -1
  51. package/libEs6/constants/libraryVersion.js +1 -1
  52. package/libEs6/core/componentCreators.js +3 -1
  53. package/libEs6/core/edgeNetwork/injectSendEdgeNetworkRequest.js +1 -1
  54. package/libEs6/utils/debounce.js +22 -0
  55. package/libEs6/utils/request/createRequest.js +8 -1
  56. package/libEs6/utils/validation/createMaximumValidator.js +16 -0
  57. package/libEs6/utils/validation/index.js +11 -1
  58. package/libEs6/utils/validation/matchesRegexpValidator.js +17 -0
  59. package/package.json +3 -8
@@ -86,8 +86,7 @@ var createIdentity = function createIdentity(_ref) {
86
86
  });
87
87
  var awaitIdentityCookie = (0, _injectAwaitIdentityCookie.default)({
88
88
  doesIdentityCookieExist: doesIdentityCookieExist,
89
- orgId: orgId,
90
- logger: logger
89
+ orgId: orgId
91
90
  });
92
91
  var ensureSingleIdentity = (0, _injectEnsureSingleIdentity.default)({
93
92
  doesIdentityCookieExist: doesIdentityCookieExist,
@@ -37,10 +37,6 @@ var _default = function _default(_ref) {
37
37
  if (queryStringValue === undefined) {
38
38
  return;
39
39
  }
40
- if (Array.isArray(queryStringValue)) {
41
- logger.warn("Found multiple adobe_mc query string paramters, only using the last one.");
42
- queryStringValue = queryStringValue[queryStringValue.length - 1];
43
- }
44
40
  var properties = queryStringValue.split("|").reduce(function (memo, keyValue) {
45
41
  var _keyValue$split = keyValue.split("="),
46
42
  _keyValue$split2 = _slicedToArray(_keyValue$split, 2),
@@ -14,8 +14,7 @@ governing permissions and limitations under the License.
14
14
  */
15
15
  var _default = function _default(_ref) {
16
16
  var doesIdentityCookieExist = _ref.doesIdentityCookieExist,
17
- orgId = _ref.orgId,
18
- logger = _ref.logger;
17
+ orgId = _ref.orgId;
19
18
  /**
20
19
  * Returns a promise that will be resolved once an identity cookie exists.
21
20
  * If an identity cookie doesn't already exist, it should always exist after
@@ -31,11 +30,16 @@ var _default = function _default(_ref) {
31
30
  } else {
32
31
  // This logic assumes that the code setting the cookie is working as expected and that
33
32
  // the cookie was missing from the response.
34
- logger.warn("Identity cookie not found. This could be caused by any of the following issues:\n" + ("\t* The org ID " + orgId + " configured in Alloy doesn't match the org ID specified in the edge configuration.\n") + "\t* Experience edge was not able to set the identity cookie due to domain or cookie restrictions.\n" + "\t* The request was canceled by the browser and not fully processed.");
33
+ var noIdentityCookieError = new Error("An identity was not set properly. Please verify that the org ID " + orgId + " configured in Alloy matches the org ID specified in the edge configuration.");
35
34
 
36
- // Rejecting the promise will tell queued events to still go out
37
- // one at a time.
38
- reject(new Error("Identity cookie not found."));
35
+ // Rejecting the promise will reject commands that were queued
36
+ // by the Identity component while waiting on the response to
37
+ // the initial request.
38
+ reject(noIdentityCookieError);
39
+
40
+ // Throwing an error will reject the event command that initiated
41
+ // the request.
42
+ throw noIdentityCookieError;
39
43
  }
40
44
  });
41
45
  onRequestFailure(function () {
@@ -44,7 +48,7 @@ var _default = function _default(_ref) {
44
48
  } else {
45
49
  // The error from the request failure will be logged separately. Rejecting this here
46
50
  // will tell ensureSingleIdentity to send the next request without identity
47
- reject(new Error("Identity cookie not found."));
51
+ reject(new Error("No identity was set on response."));
48
52
  }
49
53
  });
50
54
  });
@@ -55,8 +55,9 @@ var _default = function _default(_ref) {
55
55
  if (obtainedIdentityPromise) {
56
56
  // We don't have an identity cookie, but at least one request has
57
57
  // been sent to get it. Konductor may set the identity cookie in the
58
- // response. We will hold up this request until the previous request
59
- // returns and awaitIdentityCookie confirms the identity was set.
58
+ // response. We will hold up this request until the last request
59
+ // requiring identity returns and awaitIdentityCookie confirms the
60
+ // identity was set.
60
61
  logger.info("Delaying request while retrieving ECID from server.");
61
62
  var previousObtainedIdentityPromise = obtainedIdentityPromise;
62
63
 
@@ -91,10 +92,6 @@ var _default = function _default(_ref) {
91
92
  onResponse: onResponse,
92
93
  onRequestFailure: onRequestFailure
93
94
  });
94
- // This prevents an un-caught promise in the console when the identity isn't set.
95
- obtainedIdentityPromise.catch(function () {
96
- return undefined;
97
- });
98
95
  return allowRequestToGoWithoutIdentity(request);
99
96
  };
100
97
  };
@@ -0,0 +1,272 @@
1
+ "use strict";
2
+
3
+ exports.createMediaAnalyticsTracker = void 0;
4
+ var _defer = require("../../utils/defer");
5
+ var _constants = require("./media/constants");
6
+ var _utils = require("../../utils");
7
+ var _mediaKeysToXdmConverter = require("./media/mediaKeysToXdmConverter");
8
+ var _createMediaHelper = require("./createMediaHelper");
9
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
10
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
11
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } /*
12
+ Copyright 2023 Adobe. All rights reserved.
13
+ This file is licensed to you under the Apache License, Version 2.0 (the "License");
14
+ you may not use this file except in compliance with the License. You may obtain a copy
15
+ of the License at http://www.apache.org/licenses/LICENSE-2.0
16
+
17
+ Unless required by applicable law or agreed to in writing, software distributed under
18
+ the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
19
+ OF ANY KIND, either express or implied. See the License for the specific language
20
+ governing permissions and limitations under the License.
21
+ */
22
+ var convertSessionDetailsMetadataToXDM = function convertSessionDetailsMetadataToXDM(contextData) {
23
+ var customMetadata = [];
24
+ var sessionDetails = {};
25
+ Object.keys(contextData).forEach(function (key) {
26
+ if (_mediaKeysToXdmConverter.mediaToXdmKeys[key]) {
27
+ sessionDetails[_mediaKeysToXdmConverter.mediaToXdmKeys[key]] = contextData[key];
28
+ } else {
29
+ customMetadata.push({
30
+ name: key,
31
+ value: contextData[key]
32
+ });
33
+ }
34
+ });
35
+ return {
36
+ sessionDetails: sessionDetails,
37
+ customMetadata: customMetadata
38
+ };
39
+ };
40
+ var createMediaDetailsObject = function createMediaDetailsObject(_ref) {
41
+ var eventType = _ref.eventType,
42
+ info = _ref.info,
43
+ context = _ref.context;
44
+ var mediaDetails = info;
45
+ var customMetadata = [];
46
+ if (context && !(0, _utils.isEmptyObject)(context)) {
47
+ if (eventType === _constants.MEDIA_EVENTS.AdStart) {
48
+ Object.keys(context).forEach(function (key) {
49
+ if (_mediaKeysToXdmConverter.adsToXdmKeys[key]) {
50
+ mediaDetails.advertisingDetails[_mediaKeysToXdmConverter.mediaToXdmKeys[key]] = context[key];
51
+ } else {
52
+ customMetadata.push({
53
+ name: key,
54
+ value: context[key]
55
+ });
56
+ }
57
+ });
58
+ } else {
59
+ Object.keys(context).forEach(function (key) {
60
+ customMetadata.push({
61
+ name: key,
62
+ value: context[key]
63
+ });
64
+ });
65
+ }
66
+ mediaDetails.customMetadata = customMetadata;
67
+ }
68
+ return mediaDetails;
69
+ };
70
+ var createHeartbeat = function createHeartbeat(_ref2) {
71
+ var mainPingInterval = _ref2.mainPingInterval,
72
+ playerState = _ref2.playerState,
73
+ trackEvent = _ref2.trackEvent;
74
+ // eslint-disable-next-line consistent-return
75
+ return function () {
76
+ var currentTime = Date.now();
77
+ if (Math.abs(currentTime - playerState.latestTriggeredEvent) / 1000 > mainPingInterval) {
78
+ return trackEvent({
79
+ eventType: "ping"
80
+ });
81
+ }
82
+ };
83
+ };
84
+ var createGetInstance = function createGetInstance(_ref3) {
85
+ var config = _ref3.config,
86
+ logger = _ref3.logger,
87
+ mediaEventManager = _ref3.mediaEventManager;
88
+ var mainPingInterval = config.mediaCollection.mainPingInterval;
89
+ var trackerState = {
90
+ qoe: null,
91
+ lastPlayhead: 0,
92
+ latestTriggeredEvent: null
93
+ };
94
+ var ticker;
95
+ var deferSession = (0, _defer.default)();
96
+ var updateLastTimeEventTriggered = function updateLastTimeEventTriggered() {
97
+ trackerState.latestTriggeredEvent = Date.now();
98
+ };
99
+ var getEventType = function getEventType(_ref4) {
100
+ var eventType = _ref4.eventType;
101
+ if (eventType === _constants.MEDIA_EVENTS.BufferComplete) {
102
+ return _constants.MEDIA_EVENTS.Play;
103
+ }
104
+ return eventType;
105
+ };
106
+ var _trackEvent = function trackEvent(_ref5) {
107
+ var eventType = _ref5.eventType,
108
+ mediaDetails = _ref5.mediaDetails;
109
+ return deferSession.promise.then(function (sessionID) {
110
+ var action = getEventType({
111
+ eventType: eventType
112
+ });
113
+ var xdm = {
114
+ eventType: "media." + action,
115
+ mediaCollection: {
116
+ sessionID: sessionID,
117
+ playhead: trackerState.lastPlayhead
118
+ }
119
+ };
120
+ (0, _utils.deepAssign)(xdm.mediaCollection, mediaDetails);
121
+ var event = mediaEventManager.createMediaEvent({
122
+ options: {
123
+ xdm: xdm
124
+ }
125
+ });
126
+ return mediaEventManager.trackMediaEvent({
127
+ event: event,
128
+ action: action
129
+ }).then(function () {
130
+ updateLastTimeEventTriggered();
131
+ });
132
+ }).catch(function (error) {
133
+ logger.warn("An error occurred while sending " + eventType + " Media Event.", error);
134
+ });
135
+ };
136
+ var heartbeatEngine = createHeartbeat({
137
+ mainPingInterval: mainPingInterval,
138
+ deferSession: deferSession,
139
+ playerState: trackerState,
140
+ trackEvent: _trackEvent
141
+ });
142
+ return {
143
+ trackSessionStart: function trackSessionStart(mediaObject) {
144
+ var contextData = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
145
+ if ((0, _utils.isEmptyObject)(mediaObject)) {
146
+ deferSession.reject("invalid media object");
147
+ return {};
148
+ }
149
+ var mediaCollection = {
150
+ playhead: 0
151
+ };
152
+ var _convertSessionDetail = convertSessionDetailsMetadataToXDM(contextData),
153
+ sessionDetails = _convertSessionDetail.sessionDetails,
154
+ customMetadata = _convertSessionDetail.customMetadata;
155
+ (0, _utils.deepAssign)(mediaCollection, mediaObject, {
156
+ sessionDetails: sessionDetails
157
+ }, {
158
+ customMetadata: customMetadata
159
+ });
160
+ var event = mediaEventManager.createMediaSession({
161
+ xdm: {
162
+ mediaCollection: mediaCollection
163
+ }
164
+ });
165
+ return mediaEventManager.trackMediaSession({
166
+ event: event
167
+ }).then(function (result) {
168
+ updateLastTimeEventTriggered();
169
+ deferSession.resolve(result.sessionId);
170
+ ticker = setInterval(function () {
171
+ heartbeatEngine();
172
+ }, 1000);
173
+ });
174
+ },
175
+ trackPlay: function trackPlay() {
176
+ return _trackEvent({
177
+ eventType: _constants.MEDIA_EVENTS.Play
178
+ });
179
+ },
180
+ trackPause: function trackPause() {
181
+ return _trackEvent({
182
+ eventType: _constants.MEDIA_EVENTS.Pause
183
+ });
184
+ },
185
+ trackSessionEnd: function trackSessionEnd() {
186
+ clearInterval(ticker);
187
+ return _trackEvent({
188
+ eventType: _constants.MEDIA_EVENTS.SessionEnd
189
+ }).then(function () {
190
+ deferSession = null;
191
+ });
192
+ },
193
+ trackComplete: function trackComplete() {
194
+ clearInterval(ticker);
195
+ return _trackEvent({
196
+ eventType: _constants.MEDIA_EVENTS.SessionComplete
197
+ });
198
+ },
199
+ trackError: function trackError(errorId) {
200
+ logger.info("trackError(" + errorId + ")");
201
+ var errorDetails = {
202
+ name: errorId,
203
+ source: "player"
204
+ };
205
+ var mediaDetails = {
206
+ errorDetails: errorDetails
207
+ };
208
+ return _trackEvent({
209
+ eventType: _constants.MEDIA_EVENTS.SessionEnd,
210
+ mediaDetails: mediaDetails
211
+ });
212
+ },
213
+ trackEvent: function trackEvent(eventType, info, context) {
214
+ if ((0, _utils.isEmptyObject)(info)) {
215
+ logger.info("invalid media object");
216
+ return {};
217
+ }
218
+ var mediaDetails = createMediaDetailsObject({
219
+ eventType: eventType,
220
+ info: info,
221
+ context: context
222
+ });
223
+ return _trackEvent({
224
+ eventType: eventType,
225
+ mediaDetails: mediaDetails
226
+ });
227
+ },
228
+ updatePlayhead: function updatePlayhead(time) {
229
+ if ((0, _utils.isNumber)(time)) {
230
+ trackerState.lastPlayhead = parseInt(time, 10);
231
+ }
232
+ },
233
+ updateQoEObject: function updateQoEObject(qoeObject) {
234
+ if (!qoeObject) {
235
+ return;
236
+ }
237
+ trackerState.qoe = qoeObject;
238
+ },
239
+ destroy: function destroy() {
240
+ logger.info("Destroy called, destroying the tracker");
241
+ clearInterval(ticker);
242
+ deferSession = null;
243
+ }
244
+ };
245
+ };
246
+ var createMediaAnalyticsTracker = function createMediaAnalyticsTracker(_ref6) {
247
+ var config = _ref6.config,
248
+ logger = _ref6.logger,
249
+ mediaEventManager = _ref6.mediaEventManager;
250
+ logger.info("Media Analytics Component was configured");
251
+ var mediaAnalyticsHelper = (0, _createMediaHelper.default)({
252
+ logger: logger
253
+ });
254
+ return _objectSpread({
255
+ getInstance: function getInstance() {
256
+ return createGetInstance({
257
+ config: config,
258
+ logger: logger,
259
+ mediaEventManager: mediaEventManager
260
+ });
261
+ },
262
+ Event: _constants.EVENT,
263
+ MediaType: _constants.MEDIA_TYPE,
264
+ PlayerState: _constants.PLAYER_STATE,
265
+ StreamType: _constants.STREAM_TYPE,
266
+ MediaObjectKey: _constants.MEDIA_OBJECT_KEYS,
267
+ VideoMetadataKeys: _constants.VIDEO_METADATA_KEYS,
268
+ AudioMetadataKeys: _constants.AUDIO_METADATA_KEYS,
269
+ AdMetadataKeys: _constants.AD_METADATA_KEYS
270
+ }, mediaAnalyticsHelper);
271
+ };
272
+ exports.createMediaAnalyticsTracker = createMediaAnalyticsTracker;
@@ -0,0 +1,188 @@
1
+ "use strict";
2
+
3
+ exports.default = void 0;
4
+ var _validation = require("../../utils/validation");
5
+ /*
6
+ Copyright 2023 Adobe. All rights reserved.
7
+ This file is licensed to you under the Apache License, Version 2.0 (the "License");
8
+ you may not use this file except in compliance with the License. You may obtain a copy
9
+ of the License at http://www.apache.org/licenses/LICENSE-2.0
10
+
11
+ Unless required by applicable law or agreed to in writing, software distributed under
12
+ the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
13
+ OF ANY KIND, either express or implied. See the License for the specific language
14
+ governing permissions and limitations under the License.
15
+ */
16
+ var _default = function _default(_ref) {
17
+ var logger = _ref.logger;
18
+ var createMediaObject = function createMediaObject(friendlyName, name, length, contentType, streamType) {
19
+ var mediaObject = {
20
+ friendlyName: friendlyName,
21
+ name: name,
22
+ length: length,
23
+ streamType: streamType,
24
+ contentType: contentType
25
+ };
26
+ var validate = (0, _validation.objectOf)({
27
+ friendlyName: (0, _validation.string)().nonEmpty(),
28
+ name: (0, _validation.string)().nonEmpty(),
29
+ length: (0, _validation.number)().required(),
30
+ streamType: (0, _validation.string)().nonEmpty(),
31
+ contentType: (0, _validation.string)().nonEmpty()
32
+ });
33
+ try {
34
+ var result = validate(mediaObject);
35
+ var sessionDetails = {
36
+ name: result.name,
37
+ friendlyName: result.friendlyName,
38
+ length: result.length,
39
+ streamType: result.streamType,
40
+ contentType: result.contentType
41
+ };
42
+ return {
43
+ sessionDetails: sessionDetails
44
+ };
45
+ } catch (error) {
46
+ logger.warn("An error occurred while creating the Media Object.", error);
47
+ return {};
48
+ }
49
+ };
50
+ var createAdBreakObject = function createAdBreakObject(name, position, startTime) {
51
+ var adBreakObject = {
52
+ friendlyName: name,
53
+ offset: position,
54
+ index: startTime
55
+ };
56
+ var validator = (0, _validation.objectOf)({
57
+ friendlyName: (0, _validation.string)().nonEmpty(),
58
+ offset: (0, _validation.number)(),
59
+ index: (0, _validation.number)()
60
+ });
61
+ try {
62
+ var result = validator(adBreakObject);
63
+ var advertisingPodDetails = {
64
+ friendlyName: result.friendlyName,
65
+ offset: result.offset,
66
+ index: result.index
67
+ };
68
+ return {
69
+ advertisingPodDetails: advertisingPodDetails
70
+ };
71
+ } catch (error) {
72
+ logger.warn("An error occurred while creating the Ad Break Object.", error);
73
+ return {};
74
+ }
75
+ };
76
+ var createAdObject = function createAdObject(name, id, position, length) {
77
+ var adObject = {
78
+ friendlyName: name,
79
+ name: id,
80
+ podPosition: position,
81
+ length: length
82
+ };
83
+ var validator = (0, _validation.objectOf)({
84
+ friendlyName: (0, _validation.string)().nonEmpty(),
85
+ name: (0, _validation.string)().nonEmpty(),
86
+ podPosition: (0, _validation.number)(),
87
+ length: (0, _validation.number)()
88
+ });
89
+ try {
90
+ var result = validator(adObject);
91
+ var advertisingDetails = {
92
+ friendlyName: result.friendlyName,
93
+ name: result.name,
94
+ podPosition: result.podPosition,
95
+ length: result.length
96
+ };
97
+ return {
98
+ advertisingDetails: advertisingDetails
99
+ };
100
+ } catch (error) {
101
+ logger.warn("An error occurred while creating the Advertising Object.", error);
102
+ return {};
103
+ }
104
+ };
105
+ var createChapterObject = function createChapterObject(name, position, length, startTime) {
106
+ var chapterDetailsObject = {
107
+ friendlyName: name,
108
+ offset: position,
109
+ length: length,
110
+ index: startTime
111
+ };
112
+ var validator = (0, _validation.objectOf)({
113
+ friendlyName: (0, _validation.string)().nonEmpty(),
114
+ offset: (0, _validation.number)(),
115
+ length: (0, _validation.number)(),
116
+ index: (0, _validation.number)()
117
+ });
118
+ try {
119
+ var result = validator(chapterDetailsObject);
120
+ var chapterDetails = {
121
+ friendlyName: result.friendlyName,
122
+ offset: result.offset,
123
+ index: result.index,
124
+ length: result.length
125
+ };
126
+ return {
127
+ chapterDetails: chapterDetails
128
+ };
129
+ } catch (error) {
130
+ logger.warn("An error occurred while creating the Chapter Object.", error);
131
+ return {};
132
+ }
133
+ };
134
+ var createStateObject = function createStateObject(stateName) {
135
+ var STATE_NAME_REGEX = "^[a-zA-Z0-9_]{1,64}$";
136
+ var validator = (0, _validation.string)().matches(STATE_NAME_REGEX, "This is not a valid state name.");
137
+ try {
138
+ var result = validator(stateName);
139
+ var stateDetails = {
140
+ name: result
141
+ };
142
+ return {
143
+ stateDetails: stateDetails
144
+ };
145
+ } catch (error) {
146
+ logger.warn("An error occurred while creating the State Object.", error);
147
+ return {};
148
+ }
149
+ };
150
+ var createQoEObject = function createQoEObject(bitrate, droppedFrames, fps, startupTime) {
151
+ var qoeObject = {
152
+ bitrate: bitrate,
153
+ droppedFrames: droppedFrames,
154
+ fps: fps,
155
+ startupTime: startupTime
156
+ };
157
+ var validator = (0, _validation.objectOf)({
158
+ bitrate: (0, _validation.number)(),
159
+ droppedFrames: (0, _validation.number)(),
160
+ fps: (0, _validation.number)(),
161
+ startupTime: (0, _validation.number)()
162
+ });
163
+ try {
164
+ var result = validator(qoeObject);
165
+ var qoeDetails = {
166
+ bitrate: result.bitrate,
167
+ droppedFrames: result.droppedFrames,
168
+ fps: result.fps,
169
+ startupTime: result.startupTime
170
+ };
171
+ return {
172
+ qoeDetails: qoeDetails
173
+ };
174
+ } catch (error) {
175
+ logger.warn("An error occurred while creating the QOE Object.", error);
176
+ return {};
177
+ }
178
+ };
179
+ return {
180
+ createMediaObject: createMediaObject,
181
+ createAdBreakObject: createAdBreakObject,
182
+ createAdObject: createAdObject,
183
+ createChapterObject: createChapterObject,
184
+ createStateObject: createStateObject,
185
+ createQoEObject: createQoEObject
186
+ };
187
+ };
188
+ exports.default = _default;
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+
3
+ exports.default = void 0;
4
+ var _createMediaAnalyticsTracker = require("./createMediaAnalyticsTracker");
5
+ var _createMediaEventManager = require("../MediaCollection/createMediaEventManager");
6
+ /*
7
+ Copyright 2023 Adobe. All rights reserved.
8
+ This file is licensed to you under the Apache License, Version 2.0 (the "License");
9
+ you may not use this file except in compliance with the License. You may obtain a copy
10
+ of the License at http://www.apache.org/licenses/LICENSE-2.0
11
+
12
+ Unless required by applicable law or agreed to in writing, software distributed under
13
+ the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
14
+ OF ANY KIND, either express or implied. See the License for the specific language
15
+ governing permissions and limitations under the License.
16
+ */
17
+ /* eslint-disable import/no-restricted-paths */
18
+
19
+ var createLegacyMediaAnalytics = function createLegacyMediaAnalytics(_ref) {
20
+ var eventManager = _ref.eventManager,
21
+ sendEdgeNetworkRequest = _ref.sendEdgeNetworkRequest,
22
+ config = _ref.config,
23
+ logger = _ref.logger,
24
+ consent = _ref.consent;
25
+ var mediaEventManager = (0, _createMediaEventManager.default)({
26
+ sendEdgeNetworkRequest: sendEdgeNetworkRequest,
27
+ config: config,
28
+ logger: logger,
29
+ consent: consent,
30
+ eventManager: eventManager
31
+ });
32
+ return {
33
+ commands: {
34
+ getMediaAnalyticsTracker: {
35
+ run: function run() {
36
+ return (0, _createMediaAnalyticsTracker.createMediaAnalyticsTracker)({
37
+ config: config,
38
+ logger: logger,
39
+ mediaEventManager: mediaEventManager
40
+ });
41
+ }
42
+ }
43
+ }
44
+ };
45
+ };
46
+ createLegacyMediaAnalytics.namespace = "Legacy Media Analytics";
47
+ var _default = createLegacyMediaAnalytics;
48
+ exports.default = _default;