@adobe/alloy 2.19.0-beta.1 → 2.19.0-beta.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/libEs5/components/DataCollector/index.js +12 -21
- package/libEs5/components/DataCollector/validateApplyResponse.js +2 -2
- package/libEs5/components/DataCollector/validateUserEventOptions.js +6 -4
- package/libEs5/components/Personalization/constants/scopeType.js +6 -2
- package/libEs5/components/Personalization/createApplyPropositions.js +6 -2
- package/libEs5/components/Personalization/createClickStorage.js +21 -13
- package/libEs5/components/Personalization/createComponent.js +21 -10
- package/libEs5/components/Personalization/createFetchDataHandler.js +13 -12
- package/libEs5/components/Personalization/createOnClickHandler.js +4 -5
- package/libEs5/components/Personalization/createPersonalizationDetails.js +6 -6
- package/libEs5/components/Personalization/createViewCacheManager.js +11 -11
- package/libEs5/components/Personalization/createViewChangeHandler.js +1 -6
- package/libEs5/components/Personalization/dom-actions/clicks/collectClicks.js +43 -23
- package/libEs5/components/Personalization/{utils/isPageWideScope.js → dom-actions/createRedirect.js} +10 -5
- package/libEs5/components/Personalization/handlers/createProcessDomAction.js +19 -4
- package/libEs5/components/Personalization/handlers/createProcessHtmlContent.js +8 -2
- package/libEs5/components/Personalization/handlers/createProcessPropositions.js +2 -2
- package/libEs5/components/Personalization/handlers/createProcessRedirect.js +7 -3
- package/libEs5/components/Personalization/handlers/injectCreateProposition.js +13 -15
- package/libEs5/components/Personalization/index.js +8 -13
- package/libEs5/constants/libraryVersion.js +1 -1
- package/libEs5/core/createEvent.js +1 -1
- package/libEs5/core/createEventManager.js +19 -26
- package/libEs5/utils/dom/selectNodesWithShadow.js +10 -3
- package/libEs6/components/DataCollector/index.js +7 -15
- package/libEs6/components/DataCollector/validateApplyResponse.js +2 -2
- package/libEs6/components/DataCollector/validateUserEventOptions.js +6 -4
- package/libEs6/components/Personalization/constants/scopeType.js +3 -1
- package/libEs6/components/Personalization/createApplyPropositions.js +7 -3
- package/libEs6/components/Personalization/createClickStorage.js +18 -10
- package/libEs6/components/Personalization/createComponent.js +20 -11
- package/libEs6/components/Personalization/createFetchDataHandler.js +13 -12
- package/libEs6/components/Personalization/createOnClickHandler.js +5 -6
- package/libEs6/components/Personalization/createPersonalizationDetails.js +6 -6
- package/libEs6/components/Personalization/createViewCacheManager.js +8 -10
- package/libEs6/components/Personalization/createViewChangeHandler.js +0 -5
- package/libEs6/components/Personalization/dom-actions/clicks/collectClicks.js +28 -12
- package/libEs6/components/Personalization/{utils/isPageWideScope.js → dom-actions/createRedirect.js} +7 -4
- package/libEs6/components/Personalization/handlers/createProcessDomAction.js +17 -4
- package/libEs6/components/Personalization/handlers/createProcessHtmlContent.js +8 -2
- package/libEs6/components/Personalization/handlers/createProcessPropositions.js +2 -2
- package/libEs6/components/Personalization/handlers/createProcessRedirect.js +7 -3
- package/libEs6/components/Personalization/handlers/injectCreateProposition.js +12 -15
- package/libEs6/components/Personalization/index.js +8 -11
- package/libEs6/constants/libraryVersion.js +1 -1
- package/libEs6/core/createEvent.js +1 -1
- package/libEs6/core/createEventManager.js +9 -19
- package/libEs6/utils/dom/selectNodesWithShadow.js +10 -3
- package/package.json +3 -3
- package/libEs5/components/Personalization/createPendingNotificationsHandler.js +0 -26
- package/libEs6/components/Personalization/createPendingNotificationsHandler.js +0 -22
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
exports.default = void 0;
|
|
4
|
+
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; }
|
|
5
|
+
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; }
|
|
6
|
+
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; }
|
|
4
7
|
/*
|
|
5
8
|
Copyright 2023 Adobe. All rights reserved.
|
|
6
9
|
This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
@@ -22,16 +25,25 @@ var _default = function _default(_ref) {
|
|
|
22
25
|
selector = _ref2.selector;
|
|
23
26
|
if (!type) {
|
|
24
27
|
logger.warn("Invalid DOM action data: missing type.", item.getData());
|
|
25
|
-
return {
|
|
28
|
+
return {
|
|
29
|
+
setRenderAttempted: false,
|
|
30
|
+
includeInNotification: false
|
|
31
|
+
};
|
|
26
32
|
}
|
|
27
33
|
if (type === "click") {
|
|
28
34
|
if (!selector) {
|
|
29
35
|
logger.warn("Invalid DOM action data: missing selector.", item.getData());
|
|
30
|
-
return {
|
|
36
|
+
return {
|
|
37
|
+
setRenderAttempted: false,
|
|
38
|
+
includeInNotification: false
|
|
39
|
+
};
|
|
31
40
|
}
|
|
32
41
|
storeClickMetrics({
|
|
33
42
|
selector: selector,
|
|
34
|
-
meta: item.
|
|
43
|
+
meta: _objectSpread(_objectSpread({}, item.getProposition().getNotification()), {}, {
|
|
44
|
+
trackingLabel: item.getTrackingLabel(),
|
|
45
|
+
scopeType: item.getProposition().getScopeType()
|
|
46
|
+
})
|
|
35
47
|
});
|
|
36
48
|
return {
|
|
37
49
|
setRenderAttempted: true,
|
|
@@ -40,7 +52,10 @@ var _default = function _default(_ref) {
|
|
|
40
52
|
}
|
|
41
53
|
if (!modules[type]) {
|
|
42
54
|
logger.warn("Invalid DOM action data: unknown type.", item.getData());
|
|
43
|
-
return {
|
|
55
|
+
return {
|
|
56
|
+
setRenderAttempted: false,
|
|
57
|
+
includeInNotification: false
|
|
58
|
+
};
|
|
44
59
|
}
|
|
45
60
|
return {
|
|
46
61
|
render: function render() {
|
|
@@ -20,11 +20,17 @@ var _default = function _default(_ref) {
|
|
|
20
20
|
type = _ref2.type,
|
|
21
21
|
selector = _ref2.selector;
|
|
22
22
|
if (!selector || !type) {
|
|
23
|
-
return {
|
|
23
|
+
return {
|
|
24
|
+
setRenderAttempted: false,
|
|
25
|
+
includeInNotification: false
|
|
26
|
+
};
|
|
24
27
|
}
|
|
25
28
|
if (!modules[type]) {
|
|
26
29
|
logger.warn("Invalid HTML content data", item.getData());
|
|
27
|
-
return {
|
|
30
|
+
return {
|
|
31
|
+
setRenderAttempted: false,
|
|
32
|
+
includeInNotification: false
|
|
33
|
+
};
|
|
28
34
|
}
|
|
29
35
|
return {
|
|
30
36
|
render: function render() {
|
|
@@ -32,8 +32,8 @@ var _default = function _default(_ref) {
|
|
|
32
32
|
if (logger.enabled) {
|
|
33
33
|
var message = error.message,
|
|
34
34
|
stack = error.stack;
|
|
35
|
-
var
|
|
36
|
-
logger.
|
|
35
|
+
var warning = "Failed to execute action " + item.toString() + ". " + message + " " + stack;
|
|
36
|
+
logger.warn(warning);
|
|
37
37
|
}
|
|
38
38
|
return false;
|
|
39
39
|
});
|
|
@@ -25,10 +25,14 @@ var _default = function _default(_ref) {
|
|
|
25
25
|
}
|
|
26
26
|
var render = function render() {
|
|
27
27
|
return collect({
|
|
28
|
-
decisionsMeta: [item.
|
|
28
|
+
decisionsMeta: [item.getProposition().getNotification()],
|
|
29
|
+
documentMayUnload: true
|
|
29
30
|
}).then(function () {
|
|
30
|
-
executeRedirect(content);
|
|
31
|
-
//
|
|
31
|
+
return executeRedirect(content);
|
|
32
|
+
// Execute redirect will never resolve. If there are bottom of page events that are waiting
|
|
33
|
+
// for display notifications from this request, they will never run because this promise will
|
|
34
|
+
// not resolve. This is intentional because we don't want to run bottom of page events if
|
|
35
|
+
// there is a redirect.
|
|
32
36
|
});
|
|
33
37
|
};
|
|
34
38
|
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
exports.default = void 0;
|
|
4
4
|
var _pageWideScope = require("../../../constants/pageWideScope");
|
|
5
|
+
var _scopeType = require("../constants/scopeType");
|
|
5
6
|
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; }
|
|
6
7
|
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; }
|
|
7
8
|
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; } /*
|
|
@@ -18,16 +19,13 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
|
|
|
18
19
|
var _default = function _default(_ref) {
|
|
19
20
|
var preprocess = _ref.preprocess,
|
|
20
21
|
isPageWideSurface = _ref.isPageWideSurface;
|
|
21
|
-
var createItem = function createItem(item,
|
|
22
|
+
var createItem = function createItem(item, proposition) {
|
|
22
23
|
var schema = item.schema,
|
|
23
24
|
data = item.data,
|
|
24
25
|
_item$characteristics = item.characteristics;
|
|
25
26
|
_item$characteristics = _item$characteristics === void 0 ? {} : _item$characteristics;
|
|
26
27
|
var trackingLabel = _item$characteristics.trackingLabel;
|
|
27
28
|
var processedData = preprocess(data);
|
|
28
|
-
if (trackingLabel) {
|
|
29
|
-
meta.trackingLabel = trackingLabel;
|
|
30
|
-
}
|
|
31
29
|
return {
|
|
32
30
|
getSchema: function getSchema() {
|
|
33
31
|
return schema;
|
|
@@ -35,8 +33,11 @@ var _default = function _default(_ref) {
|
|
|
35
33
|
getData: function getData() {
|
|
36
34
|
return processedData;
|
|
37
35
|
},
|
|
38
|
-
|
|
39
|
-
return
|
|
36
|
+
getProposition: function getProposition() {
|
|
37
|
+
return proposition;
|
|
38
|
+
},
|
|
39
|
+
getTrackingLabel: function getTrackingLabel() {
|
|
40
|
+
return trackingLabel;
|
|
40
41
|
},
|
|
41
42
|
getOriginalItem: function getOriginalItem() {
|
|
42
43
|
return item;
|
|
@@ -69,20 +70,17 @@ var _default = function _default(_ref) {
|
|
|
69
70
|
},
|
|
70
71
|
getScopeType: function getScopeType() {
|
|
71
72
|
if (scope === _pageWideScope.default || isPageWideSurface(scope)) {
|
|
72
|
-
return
|
|
73
|
+
return _scopeType.PAGE_SCOPE_TYPE;
|
|
73
74
|
}
|
|
74
|
-
if (scopeType ===
|
|
75
|
-
return
|
|
75
|
+
if (scopeType === _scopeType.VIEW_SCOPE_TYPE) {
|
|
76
|
+
return _scopeType.VIEW_SCOPE_TYPE;
|
|
76
77
|
}
|
|
77
|
-
return
|
|
78
|
+
return _scopeType.PROPOSITION_SCOPE_TYPE;
|
|
78
79
|
},
|
|
79
80
|
getItems: function getItems() {
|
|
81
|
+
var _this = this;
|
|
80
82
|
return items.map(function (item) {
|
|
81
|
-
return createItem(item,
|
|
82
|
-
id: id,
|
|
83
|
-
scope: scope,
|
|
84
|
-
scopeDetails: scopeDetails
|
|
85
|
-
});
|
|
83
|
+
return createItem(item, _this);
|
|
86
84
|
});
|
|
87
85
|
},
|
|
88
86
|
getNotification: function getNotification() {
|
|
@@ -22,7 +22,6 @@ var _remapHeadOffers = require("./dom-actions/remapHeadOffers");
|
|
|
22
22
|
var _createPreprocess = require("./dom-actions/createPreprocess");
|
|
23
23
|
var _injectCreateProposition = require("./handlers/injectCreateProposition");
|
|
24
24
|
var _createAsyncArray = require("./utils/createAsyncArray");
|
|
25
|
-
var _createPendingNotificationsHandler = require("./createPendingNotificationsHandler");
|
|
26
25
|
var schema = require("./constants/schema");
|
|
27
26
|
var _processDefaultContent = require("./handlers/processDefaultContent");
|
|
28
27
|
var _surfaceUtils = require("./utils/surfaceUtils");
|
|
@@ -30,6 +29,7 @@ var _createProcessDomAction = require("./handlers/createProcessDomAction");
|
|
|
30
29
|
var _createProcessHtmlContent = require("./handlers/createProcessHtmlContent");
|
|
31
30
|
var _createProcessRedirect = require("./handlers/createProcessRedirect");
|
|
32
31
|
var _createProcessPropositions = require("./handlers/createProcessPropositions");
|
|
32
|
+
var _createRedirect = require("./dom-actions/createRedirect");
|
|
33
33
|
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; } /*
|
|
34
34
|
Copyright 2019 Adobe. All rights reserved.
|
|
35
35
|
This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
@@ -68,6 +68,7 @@ var createPersonalization = function createPersonalization(_ref) {
|
|
|
68
68
|
var viewCache = (0, _createViewCacheManager.default)({
|
|
69
69
|
createProposition: createProposition
|
|
70
70
|
});
|
|
71
|
+
var executeRedirect = (0, _createRedirect.default)(window);
|
|
71
72
|
var schemaProcessors = (_schemaProcessors = {}, _defineProperty(_schemaProcessors, schema.DEFAULT_CONTENT_ITEM, _processDefaultContent.default), _defineProperty(_schemaProcessors, schema.DOM_ACTION, (0, _createProcessDomAction.default)({
|
|
72
73
|
modules: modules,
|
|
73
74
|
logger: logger,
|
|
@@ -77,20 +78,14 @@ var createPersonalization = function createPersonalization(_ref) {
|
|
|
77
78
|
logger: logger
|
|
78
79
|
})), _defineProperty(_schemaProcessors, schema.REDIRECT_ITEM, (0, _createProcessRedirect.default)({
|
|
79
80
|
logger: logger,
|
|
80
|
-
executeRedirect:
|
|
81
|
-
return window.location.replace(url);
|
|
82
|
-
},
|
|
81
|
+
executeRedirect: executeRedirect,
|
|
83
82
|
collect: collect
|
|
84
83
|
})), _schemaProcessors);
|
|
85
84
|
var processPropositions = (0, _createProcessPropositions.default)({
|
|
86
85
|
schemaProcessors: schemaProcessors,
|
|
87
86
|
logger: logger
|
|
88
87
|
});
|
|
89
|
-
var
|
|
90
|
-
var pendingNotificationsHandler = (0, _createPendingNotificationsHandler.default)({
|
|
91
|
-
pendingDisplayNotifications: pendingDisplayNotifications,
|
|
92
|
-
mergeDecisionsMeta: _event.mergeDecisionsMeta
|
|
93
|
-
});
|
|
88
|
+
var renderedPropositions = (0, _createAsyncArray.default)();
|
|
94
89
|
var fetchDataHandler = (0, _createFetchDataHandler.default)({
|
|
95
90
|
prehidingStyle: prehidingStyle,
|
|
96
91
|
showContainers: _flicker.showContainers,
|
|
@@ -99,7 +94,7 @@ var createPersonalization = function createPersonalization(_ref) {
|
|
|
99
94
|
collect: collect,
|
|
100
95
|
processPropositions: processPropositions,
|
|
101
96
|
createProposition: createProposition,
|
|
102
|
-
|
|
97
|
+
renderedPropositions: renderedPropositions
|
|
103
98
|
});
|
|
104
99
|
var onClickHandler = (0, _createOnClickHandler.default)({
|
|
105
100
|
mergeDecisionsMeta: _event.mergeDecisionsMeta,
|
|
@@ -108,14 +103,13 @@ var createPersonalization = function createPersonalization(_ref) {
|
|
|
108
103
|
getClickMetasBySelector: getClickMetasBySelector
|
|
109
104
|
});
|
|
110
105
|
var viewChangeHandler = (0, _createViewChangeHandler.default)({
|
|
111
|
-
mergeDecisionsMeta: _event.mergeDecisionsMeta,
|
|
112
106
|
processPropositions: processPropositions,
|
|
113
107
|
viewCache: viewCache
|
|
114
108
|
});
|
|
115
109
|
var applyPropositions = (0, _createApplyPropositions.default)({
|
|
116
110
|
processPropositions: processPropositions,
|
|
117
111
|
createProposition: createProposition,
|
|
118
|
-
|
|
112
|
+
renderedPropositions: renderedPropositions,
|
|
119
113
|
viewCache: viewCache
|
|
120
114
|
});
|
|
121
115
|
var setTargetMigration = (0, _createSetTargetMigration.default)({
|
|
@@ -133,7 +127,8 @@ var createPersonalization = function createPersonalization(_ref) {
|
|
|
133
127
|
showContainers: _flicker.showContainers,
|
|
134
128
|
applyPropositions: applyPropositions,
|
|
135
129
|
setTargetMigration: setTargetMigration,
|
|
136
|
-
|
|
130
|
+
mergeDecisionsMeta: _event.mergeDecisionsMeta,
|
|
131
|
+
renderedPropositions: renderedPropositions
|
|
137
132
|
});
|
|
138
133
|
};
|
|
139
134
|
createPersonalization.namespace = "Personalization";
|
|
@@ -14,5 +14,5 @@ governing permissions and limitations under the License.
|
|
|
14
14
|
*/
|
|
15
15
|
// The __VERSION__ keyword will be replace at alloy build time with the package.json version.
|
|
16
16
|
// see babel-plugin-version
|
|
17
|
-
var _default = "2.19.0-beta.
|
|
17
|
+
var _default = "2.19.0-beta.11";
|
|
18
18
|
exports.default = _default;
|
|
@@ -129,7 +129,7 @@ var _default = function _default() {
|
|
|
129
129
|
return shouldSendEvent;
|
|
130
130
|
},
|
|
131
131
|
getViewName: function getViewName() {
|
|
132
|
-
if (!userXdm || !userXdm.web || !userXdm.web.webPageDetails
|
|
132
|
+
if (!userXdm || !userXdm.web || !userXdm.web.webPageDetails) {
|
|
133
133
|
return undefined;
|
|
134
134
|
}
|
|
135
135
|
return userXdm.web.webPageDetails.viewName;
|
|
@@ -4,6 +4,7 @@ exports.default = void 0;
|
|
|
4
4
|
var _pageWideScope = require("../constants/pageWideScope");
|
|
5
5
|
var _utils = require("../utils");
|
|
6
6
|
var _request = require("../utils/request");
|
|
7
|
+
var _excluded = ["edgeConfigOverrides"];
|
|
7
8
|
/*
|
|
8
9
|
Copyright 2019 Adobe. All rights reserved.
|
|
9
10
|
This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
@@ -15,7 +16,11 @@ the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTA
|
|
|
15
16
|
OF ANY KIND, either express or implied. See the License for the specific language
|
|
16
17
|
governing permissions and limitations under the License.
|
|
17
18
|
*/
|
|
18
|
-
|
|
19
|
+
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; }
|
|
20
|
+
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; }
|
|
21
|
+
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; }
|
|
22
|
+
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
23
|
+
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
19
24
|
var EVENT_CANCELLATION_MESSAGE = "Event was canceled because the onBeforeEventSend callback returned false.";
|
|
20
25
|
var _default = function _default(_ref) {
|
|
21
26
|
var config = _ref.config,
|
|
@@ -32,19 +37,13 @@ var _default = function _default(_ref) {
|
|
|
32
37
|
return {
|
|
33
38
|
createEvent: createEvent,
|
|
34
39
|
/**
|
|
35
|
-
* Sends an event. This includes running the event and payload through
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
* @param {Object} event This will be JSON stringified and used inside
|
|
39
|
-
*
|
|
40
|
-
* @param {Object} [options]
|
|
41
|
-
*
|
|
42
|
-
* @param {Array} [options.decisionScopes] Note: this option will soon
|
|
43
|
-
* be deprecated, please use *personalization.decisionScopes* instead
|
|
44
|
-
* @param {Object} [options.personalization]
|
|
45
|
-
* @param {Object} [options.serverState]
|
|
46
|
-
* This will be passed to components
|
|
47
|
-
* so they can take appropriate action.
|
|
40
|
+
* Sends an event. This includes running the event and payload through the
|
|
41
|
+
* appropriate lifecycle hooks, sending the request to the server, and
|
|
42
|
+
* handling the response.
|
|
43
|
+
* @param {Object} event This will be JSON stringified and used inside the
|
|
44
|
+
* request payload.
|
|
45
|
+
* @param {Object} [options] Options to pass on to the onBeforeEvent
|
|
46
|
+
* lifecycle method
|
|
48
47
|
* @param {Object} [options.edgeConfigOverrides] Settings that take
|
|
49
48
|
* precedence over the global datastream configuration, including which
|
|
50
49
|
* datastream to use.
|
|
@@ -52,11 +51,8 @@ var _default = function _default(_ref) {
|
|
|
52
51
|
*/
|
|
53
52
|
sendEvent: function sendEvent(event) {
|
|
54
53
|
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
55
|
-
var
|
|
56
|
-
|
|
57
|
-
decisionScopes = options.decisionScopes,
|
|
58
|
-
localConfigOverrides = options.edgeConfigOverrides,
|
|
59
|
-
personalization = options.personalization;
|
|
54
|
+
var localConfigOverrides = options.edgeConfigOverrides,
|
|
55
|
+
otherOptions = _objectWithoutProperties(options, _excluded);
|
|
60
56
|
var requestParams = (0, _request.createRequestParams)({
|
|
61
57
|
payload: createDataCollectionRequestPayload(),
|
|
62
58
|
localConfigOverrides: localConfigOverrides,
|
|
@@ -65,14 +61,11 @@ var _default = function _default(_ref) {
|
|
|
65
61
|
var request = createDataCollectionRequest(requestParams);
|
|
66
62
|
var onResponseCallbackAggregator = (0, _utils.createCallbackAggregator)();
|
|
67
63
|
var onRequestFailureCallbackAggregator = (0, _utils.createCallbackAggregator)();
|
|
68
|
-
return lifecycle.onBeforeEvent({
|
|
64
|
+
return lifecycle.onBeforeEvent(_objectSpread(_objectSpread({}, otherOptions), {}, {
|
|
69
65
|
event: event,
|
|
70
|
-
renderDecisions: renderDecisions,
|
|
71
|
-
decisionScopes: decisionScopes,
|
|
72
|
-
personalization: personalization,
|
|
73
66
|
onResponse: onResponseCallbackAggregator.add,
|
|
74
67
|
onRequestFailure: onRequestFailureCallbackAggregator.add
|
|
75
|
-
}).then(function () {
|
|
68
|
+
})).then(function () {
|
|
76
69
|
requestParams.payload.addEvent(event);
|
|
77
70
|
return consent.awaitConsent();
|
|
78
71
|
}).then(function () {
|
|
@@ -110,8 +103,8 @@ var _default = function _default(_ref) {
|
|
|
110
103
|
},
|
|
111
104
|
applyResponse: function applyResponse(event) {
|
|
112
105
|
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
113
|
-
var _options$
|
|
114
|
-
renderDecisions = _options$
|
|
106
|
+
var _options$renderDecisi = options.renderDecisions,
|
|
107
|
+
renderDecisions = _options$renderDecisi === void 0 ? false : _options$renderDecisi,
|
|
115
108
|
_options$responseHead = options.responseHeaders,
|
|
116
109
|
responseHeaders = _options$responseHead === void 0 ? {} : _options$responseHead,
|
|
117
110
|
_options$responseBody = options.responseBody,
|
|
@@ -20,7 +20,7 @@ var splitWithShadow = function splitWithShadow(selector) {
|
|
|
20
20
|
return selector.split(_shadowSeparator.default);
|
|
21
21
|
};
|
|
22
22
|
var transformPrefix = function transformPrefix(parent, selector) {
|
|
23
|
-
var result = selector
|
|
23
|
+
var result = selector;
|
|
24
24
|
var hasChildCombinatorPrefix = (0, _startsWith.default)(result, ">");
|
|
25
25
|
if (!hasChildCombinatorPrefix) {
|
|
26
26
|
return result;
|
|
@@ -48,8 +48,15 @@ var _default = function _default(context, selector) {
|
|
|
48
48
|
// find each subselector element based on the previously selected node's shadowRoot
|
|
49
49
|
var parent = context;
|
|
50
50
|
for (var i = 0; i < parts.length; i += 1) {
|
|
51
|
-
var part =
|
|
52
|
-
|
|
51
|
+
var part = parts[i].trim();
|
|
52
|
+
// if part is empty, it means there's a chained :eq:shadow selector
|
|
53
|
+
if (part === "" && parent.shadowRoot) {
|
|
54
|
+
parent = parent.shadowRoot;
|
|
55
|
+
// eslint-disable-next-line no-continue
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
var prefixed = transformPrefix(parent, part);
|
|
59
|
+
var partNode = (0, _querySelectorAll.default)(parent, prefixed);
|
|
53
60
|
if (partNode.length === 0 || !partNode[0] || !partNode[0].shadowRoot) {
|
|
54
61
|
return partNode;
|
|
55
62
|
}
|
|
@@ -30,15 +30,12 @@ const createDataCollector = ({
|
|
|
30
30
|
const {
|
|
31
31
|
xdm,
|
|
32
32
|
data,
|
|
33
|
-
documentUnloading
|
|
33
|
+
documentUnloading,
|
|
34
34
|
type,
|
|
35
35
|
mergeId,
|
|
36
|
-
renderDecisions = false,
|
|
37
|
-
decisionScopes = [],
|
|
38
|
-
// Note: this option will soon be deprecated, please use personalization.decisionScopes instead
|
|
39
|
-
personalization = {},
|
|
40
36
|
datasetId,
|
|
41
|
-
edgeConfigOverrides
|
|
37
|
+
edgeConfigOverrides,
|
|
38
|
+
...eventManagerOptions
|
|
42
39
|
} = options;
|
|
43
40
|
const event = eventManager.createEvent();
|
|
44
41
|
if (documentUnloading) {
|
|
@@ -56,18 +53,13 @@ const createDataCollector = ({
|
|
|
56
53
|
eventMergeId: mergeId
|
|
57
54
|
});
|
|
58
55
|
}
|
|
59
|
-
const sendEventOptions = {
|
|
60
|
-
renderDecisions,
|
|
61
|
-
decisionScopes,
|
|
62
|
-
personalization
|
|
63
|
-
};
|
|
64
56
|
if (edgeConfigOverrides) {
|
|
65
|
-
|
|
57
|
+
eventManagerOptions.edgeConfigOverrides = edgeConfigOverrides;
|
|
66
58
|
}
|
|
67
59
|
if (datasetId) {
|
|
68
60
|
logger.warn("The 'datasetId' option has been deprecated. Please use 'edgeConfigOverrides.com_adobe_experience_platform.datasets.event.datasetId' instead.");
|
|
69
|
-
|
|
70
|
-
deepAssign(
|
|
61
|
+
eventManagerOptions.edgeConfigOverrides = edgeConfigOverrides || {};
|
|
62
|
+
deepAssign(eventManagerOptions.edgeConfigOverrides, {
|
|
71
63
|
com_adobe_experience_platform: {
|
|
72
64
|
datasets: {
|
|
73
65
|
event: {
|
|
@@ -77,7 +69,7 @@ const createDataCollector = ({
|
|
|
77
69
|
}
|
|
78
70
|
});
|
|
79
71
|
}
|
|
80
|
-
return eventManager.sendEvent(event,
|
|
72
|
+
return eventManager.sendEvent(event, eventManagerOptions);
|
|
81
73
|
}
|
|
82
74
|
},
|
|
83
75
|
applyResponse: {
|
|
@@ -23,9 +23,9 @@ export default (({
|
|
|
23
23
|
})).required()
|
|
24
24
|
}).required(),
|
|
25
25
|
personalization: objectOf({
|
|
26
|
-
|
|
26
|
+
sendDisplayEvent: boolean().default(true)
|
|
27
27
|
}).default({
|
|
28
|
-
|
|
28
|
+
sendDisplayEvent: true
|
|
29
29
|
})
|
|
30
30
|
}).noUnknownFields();
|
|
31
31
|
return validator(options);
|
|
@@ -33,14 +33,16 @@ export default (({
|
|
|
33
33
|
personalization: objectOf({
|
|
34
34
|
decisionScopes: arrayOf(string()).uniqueItems(),
|
|
35
35
|
surfaces: arrayOf(string()).uniqueItems(),
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
sendDisplayEvent: boolean().default(true),
|
|
37
|
+
includeRenderedPropositions: boolean().default(false),
|
|
38
|
+
requestPersonalization: boolean()
|
|
38
39
|
}).default({
|
|
39
|
-
|
|
40
|
+
sendDisplayEvent: true
|
|
40
41
|
}),
|
|
41
42
|
datasetId: string(),
|
|
42
43
|
mergeId: string(),
|
|
43
|
-
edgeConfigOverrides: validateConfigOverride
|
|
44
|
+
edgeConfigOverrides: validateConfigOverride,
|
|
45
|
+
initializePersonalization: boolean()
|
|
44
46
|
}).required().noUnknownFields();
|
|
45
47
|
return eventOptionsValidator(options);
|
|
46
48
|
});
|
|
@@ -10,4 +10,6 @@ OF ANY KIND, either express or implied. See the License for the specific languag
|
|
|
10
10
|
governing permissions and limitations under the License.
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
|
-
export const VIEW_SCOPE_TYPE = "view";
|
|
13
|
+
export const VIEW_SCOPE_TYPE = "view";
|
|
14
|
+
export const PAGE_SCOPE_TYPE = "page";
|
|
15
|
+
export const PROPOSITION_SCOPE_TYPE = "proposition";
|
|
@@ -10,14 +10,14 @@ OF ANY KIND, either express or implied. See the License for the specific languag
|
|
|
10
10
|
governing permissions and limitations under the License.
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
|
-
import { isNonEmptyArray, isObject } from "../../utils";
|
|
13
|
+
import { isNonEmptyArray, isObject, defer } from "../../utils";
|
|
14
14
|
import { DOM_ACTION, HTML_CONTENT_ITEM } from "./constants/schema";
|
|
15
15
|
import PAGE_WIDE_SCOPE from "../../constants/pageWideScope";
|
|
16
16
|
const SUPPORTED_SCHEMAS = [DOM_ACTION, HTML_CONTENT_ITEM];
|
|
17
17
|
export default (({
|
|
18
18
|
processPropositions,
|
|
19
19
|
createProposition,
|
|
20
|
-
|
|
20
|
+
renderedPropositions,
|
|
21
21
|
viewCache
|
|
22
22
|
}) => {
|
|
23
23
|
const filterItemsPredicate = item => SUPPORTED_SCHEMAS.indexOf(item.schema) > -1;
|
|
@@ -76,6 +76,10 @@ export default (({
|
|
|
76
76
|
metadata = {},
|
|
77
77
|
viewName
|
|
78
78
|
}) => {
|
|
79
|
+
// We need to immediately call concat so that subsequent sendEvent
|
|
80
|
+
// calls will wait for applyPropositions to complete before executing.
|
|
81
|
+
const renderedPropositionsDeferred = defer();
|
|
82
|
+
renderedPropositions.concat(renderedPropositionsDeferred.promise);
|
|
79
83
|
const propositionsToExecute = preparePropositions({
|
|
80
84
|
propositions,
|
|
81
85
|
metadata
|
|
@@ -90,7 +94,7 @@ export default (({
|
|
|
90
94
|
render,
|
|
91
95
|
returnedPropositions
|
|
92
96
|
} = processPropositions([...propositionsToExecute, ...additionalPropositions]);
|
|
93
|
-
|
|
97
|
+
render().then(renderedPropositionsDeferred.resolve);
|
|
94
98
|
return {
|
|
95
99
|
propositions: returnedPropositions
|
|
96
100
|
};
|
|
@@ -14,22 +14,30 @@ const metasToArray = metas => {
|
|
|
14
14
|
return Object.keys(metas).map(key => {
|
|
15
15
|
return {
|
|
16
16
|
id: key,
|
|
17
|
-
|
|
18
|
-
scopeDetails: metas[key].scopeDetails,
|
|
19
|
-
trackingLabel: metas[key].trackingLabel
|
|
17
|
+
...metas[key]
|
|
20
18
|
};
|
|
21
19
|
});
|
|
22
20
|
};
|
|
23
21
|
export default (() => {
|
|
24
22
|
const clickStorage = {};
|
|
25
|
-
const storeClickMetrics =
|
|
26
|
-
|
|
27
|
-
|
|
23
|
+
const storeClickMetrics = ({
|
|
24
|
+
selector,
|
|
25
|
+
meta: {
|
|
26
|
+
id,
|
|
27
|
+
scope,
|
|
28
|
+
scopeDetails,
|
|
29
|
+
trackingLabel,
|
|
30
|
+
scopeType
|
|
28
31
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
32
|
+
}) => {
|
|
33
|
+
if (!clickStorage[selector]) {
|
|
34
|
+
clickStorage[selector] = {};
|
|
35
|
+
}
|
|
36
|
+
clickStorage[selector][id] = {
|
|
37
|
+
scope,
|
|
38
|
+
scopeDetails,
|
|
39
|
+
trackingLabel,
|
|
40
|
+
scopeType
|
|
33
41
|
};
|
|
34
42
|
};
|
|
35
43
|
const getClickSelectors = () => {
|
|
@@ -10,10 +10,11 @@ OF ANY KIND, either express or implied. See the License for the specific languag
|
|
|
10
10
|
governing permissions and limitations under the License.
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
|
-
import { noop } from "../../utils";
|
|
13
|
+
import { noop, flatMap, isNonEmptyArray } from "../../utils";
|
|
14
14
|
import createPersonalizationDetails from "./createPersonalizationDetails";
|
|
15
15
|
import { AUTHORING_ENABLED } from "./constants/loggerMessage";
|
|
16
16
|
import validateApplyPropositionsOptions from "./validateApplyPropositionsOptions";
|
|
17
|
+
import { PropositionEventType } from "./constants/propositionEventType";
|
|
17
18
|
export default (({
|
|
18
19
|
getPageLocation,
|
|
19
20
|
logger,
|
|
@@ -26,7 +27,8 @@ export default (({
|
|
|
26
27
|
showContainers,
|
|
27
28
|
applyPropositions,
|
|
28
29
|
setTargetMigration,
|
|
29
|
-
|
|
30
|
+
mergeDecisionsMeta,
|
|
31
|
+
renderedPropositions
|
|
30
32
|
}) => {
|
|
31
33
|
return {
|
|
32
34
|
lifecycle: {
|
|
@@ -67,11 +69,9 @@ export default (({
|
|
|
67
69
|
isCacheInitialized: viewCache.isInitialized(),
|
|
68
70
|
logger
|
|
69
71
|
});
|
|
70
|
-
const
|
|
71
|
-
if (personalizationDetails.
|
|
72
|
-
|
|
73
|
-
event
|
|
74
|
-
}));
|
|
72
|
+
const decisionsMetaPromises = [];
|
|
73
|
+
if (personalizationDetails.shouldIncludeRenderedPropositions()) {
|
|
74
|
+
decisionsMetaPromises.push(renderedPropositions.clear());
|
|
75
75
|
}
|
|
76
76
|
if (personalizationDetails.shouldFetchData()) {
|
|
77
77
|
const cacheUpdate = viewCache.createCacheUpdate(personalizationDetails.getViewName());
|
|
@@ -84,16 +84,25 @@ export default (({
|
|
|
84
84
|
});
|
|
85
85
|
} else if (personalizationDetails.shouldUseCachedData()) {
|
|
86
86
|
// eslint-disable-next-line consistent-return
|
|
87
|
-
|
|
87
|
+
decisionsMetaPromises.push(viewChangeHandler({
|
|
88
88
|
personalizationDetails,
|
|
89
89
|
event,
|
|
90
90
|
onResponse,
|
|
91
91
|
onRequestFailure
|
|
92
92
|
}));
|
|
93
93
|
}
|
|
94
|
-
|
|
95
|
-
// the
|
|
96
|
-
|
|
94
|
+
|
|
95
|
+
// This promise.all waits for both the pending display notifications to be resolved
|
|
96
|
+
// (i.e. the top of page call to finish rendering) and the view change handler to
|
|
97
|
+
// finish rendering anything for this view.
|
|
98
|
+
return Promise.all(decisionsMetaPromises).then(decisionsMetas => {
|
|
99
|
+
// We only want to call mergeDecisionsMeta once, but we can get the propositions
|
|
100
|
+
// from two places: the pending display notifications and the view change handler.
|
|
101
|
+
const decisionsMeta = flatMap(decisionsMetas, dms => dms);
|
|
102
|
+
if (isNonEmptyArray(decisionsMeta)) {
|
|
103
|
+
mergeDecisionsMeta(event, decisionsMeta, PropositionEventType.DISPLAY);
|
|
104
|
+
}
|
|
105
|
+
});
|
|
97
106
|
},
|
|
98
107
|
onClick({
|
|
99
108
|
event,
|