@adobe/alloy 2.9.0 → 2.10.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/libEs5/components/Audiences/index.js +3 -4
- package/libEs5/components/Identity/index.js +4 -3
- package/libEs5/components/Identity/injectAwaitIdentityCookie.js +2 -2
- package/libEs5/components/Personalization/constants/schema.js +4 -2
- package/libEs5/components/Personalization/groupDecisions.js +34 -5
- package/libEs5/constants/libraryVersion.js +1 -1
- package/libEs5/core/index.js +2 -0
- package/libEs5/utils/index.js +7 -7
- package/libEs5/utils/{fireReferrerHideableImage.js → injectFireReferrerHideableImage.js} +35 -19
- package/libEs6/components/Audiences/index.js +2 -2
- package/libEs6/components/Identity/index.js +4 -3
- package/libEs6/components/Identity/injectAwaitIdentityCookie.js +2 -2
- package/libEs6/components/Personalization/constants/schema.js +2 -1
- package/libEs6/components/Personalization/groupDecisions.js +23 -4
- package/libEs6/constants/libraryVersion.js +1 -1
- package/libEs6/core/index.js +3 -1
- package/libEs6/utils/index.js +1 -1
- package/libEs6/utils/{fireReferrerHideableImage.js → injectFireReferrerHideableImage.js} +28 -17
- package/package.json +2 -2
|
@@ -2,8 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
exports.default = void 0;
|
|
4
4
|
|
|
5
|
-
var _utils = require("../../utils");
|
|
6
|
-
|
|
7
5
|
var _injectProcessDestinations = require("./injectProcessDestinations");
|
|
8
6
|
|
|
9
7
|
var _injectProcessResponse = require("./injectProcessResponse");
|
|
@@ -20,9 +18,10 @@ OF ANY KIND, either express or implied. See the License for the specific languag
|
|
|
20
18
|
governing permissions and limitations under the License.
|
|
21
19
|
*/
|
|
22
20
|
var createAudiences = function createAudiences(_ref) {
|
|
23
|
-
var logger = _ref.logger
|
|
21
|
+
var logger = _ref.logger,
|
|
22
|
+
fireReferrerHideableImage = _ref.fireReferrerHideableImage;
|
|
24
23
|
var processDestinations = (0, _injectProcessDestinations.default)({
|
|
25
|
-
fireReferrerHideableImage:
|
|
24
|
+
fireReferrerHideableImage: fireReferrerHideableImage,
|
|
26
25
|
logger: logger
|
|
27
26
|
});
|
|
28
27
|
var processResponse = (0, _injectProcessResponse.default)({
|
|
@@ -53,6 +53,7 @@ var createIdentity = function createIdentity(_ref) {
|
|
|
53
53
|
var config = _ref.config,
|
|
54
54
|
logger = _ref.logger,
|
|
55
55
|
consent = _ref.consent,
|
|
56
|
+
fireReferrerHideableImage = _ref.fireReferrerHideableImage,
|
|
56
57
|
sendEdgeNetworkRequest = _ref.sendEdgeNetworkRequest;
|
|
57
58
|
var orgId = config.orgId,
|
|
58
59
|
thirdPartyCookiesEnabled = config.thirdPartyCookiesEnabled;
|
|
@@ -82,8 +83,8 @@ var createIdentity = function createIdentity(_ref) {
|
|
|
82
83
|
addEcidToPayload: _addEcidToPayload.default
|
|
83
84
|
});
|
|
84
85
|
var awaitIdentityCookie = (0, _injectAwaitIdentityCookie.default)({
|
|
85
|
-
|
|
86
|
-
|
|
86
|
+
doesIdentityCookieExist: doesIdentityCookieExist,
|
|
87
|
+
orgId: orgId
|
|
87
88
|
});
|
|
88
89
|
var ensureSingleIdentity = (0, _injectEnsureSingleIdentity.default)({
|
|
89
90
|
doesIdentityCookieExist: doesIdentityCookieExist,
|
|
@@ -93,7 +94,7 @@ var createIdentity = function createIdentity(_ref) {
|
|
|
93
94
|
logger: logger
|
|
94
95
|
});
|
|
95
96
|
var processIdSyncs = (0, _injectProcessIdSyncs.default)({
|
|
96
|
-
fireReferrerHideableImage:
|
|
97
|
+
fireReferrerHideableImage: fireReferrerHideableImage,
|
|
97
98
|
logger: logger
|
|
98
99
|
});
|
|
99
100
|
var handleResponseForIdSyncs = (0, _injectHandleResponseForIdSyncs.default)({
|
|
@@ -14,8 +14,8 @@ OF ANY KIND, either express or implied. See the License for the specific languag
|
|
|
14
14
|
governing permissions and limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
var _default = function _default(_ref) {
|
|
17
|
-
var
|
|
18
|
-
|
|
17
|
+
var doesIdentityCookieExist = _ref.doesIdentityCookieExist,
|
|
18
|
+
orgId = _ref.orgId;
|
|
19
19
|
|
|
20
20
|
/**
|
|
21
21
|
* Returns a promise that will be resolved once an identity cookie exists.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
exports.REDIRECT_ITEM = exports.JSON_CONTENT_ITEM = exports.HTML_CONTENT_ITEM = exports.DOM_ACTION = exports.DEFAULT_CONTENT_ITEM = void 0;
|
|
3
|
+
exports.REDIRECT_ITEM = exports.MEASUREMENT_SCHEMA = exports.JSON_CONTENT_ITEM = exports.HTML_CONTENT_ITEM = exports.DOM_ACTION = exports.DEFAULT_CONTENT_ITEM = void 0;
|
|
4
4
|
|
|
5
5
|
/*
|
|
6
6
|
Copyright 2019 Adobe. All rights reserved.
|
|
@@ -22,4 +22,6 @@ exports.HTML_CONTENT_ITEM = HTML_CONTENT_ITEM;
|
|
|
22
22
|
var JSON_CONTENT_ITEM = "https://ns.adobe.com/personalization/json-content-item";
|
|
23
23
|
exports.JSON_CONTENT_ITEM = JSON_CONTENT_ITEM;
|
|
24
24
|
var REDIRECT_ITEM = "https://ns.adobe.com/personalization/redirect-item";
|
|
25
|
-
exports.REDIRECT_ITEM = REDIRECT_ITEM;
|
|
25
|
+
exports.REDIRECT_ITEM = REDIRECT_ITEM;
|
|
26
|
+
var MEASUREMENT_SCHEMA = "https://ns.adobe.com/personalization/measurement";
|
|
27
|
+
exports.MEASUREMENT_SCHEMA = MEASUREMENT_SCHEMA;
|
|
@@ -10,6 +10,14 @@ var _scopeType = require("./constants/scopeType");
|
|
|
10
10
|
|
|
11
11
|
var _scope = require("./constants/scope");
|
|
12
12
|
|
|
13
|
+
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
14
|
+
|
|
15
|
+
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
16
|
+
|
|
17
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
18
|
+
|
|
19
|
+
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
20
|
+
|
|
13
21
|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
14
22
|
|
|
15
23
|
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
@@ -44,6 +52,23 @@ var createDecision = function createDecision(decision, items) {
|
|
|
44
52
|
};
|
|
45
53
|
};
|
|
46
54
|
|
|
55
|
+
var splitMergedMetricDecisions = function splitMergedMetricDecisions(decisions) {
|
|
56
|
+
var matchedDecisions = decisions.filter(function (decision) {
|
|
57
|
+
var _decision$items = decision.items,
|
|
58
|
+
items = _decision$items === void 0 ? [] : _decision$items;
|
|
59
|
+
return items.some(function (item) {
|
|
60
|
+
return item.schema === _schema.MEASUREMENT_SCHEMA;
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
var unmatchedDecisions = decisions.filter(function (decision) {
|
|
64
|
+
return !(0, _utils.includes)(matchedDecisions, decision);
|
|
65
|
+
});
|
|
66
|
+
return {
|
|
67
|
+
matchedDecisions: matchedDecisions,
|
|
68
|
+
unmatchedDecisions: unmatchedDecisions
|
|
69
|
+
};
|
|
70
|
+
};
|
|
71
|
+
|
|
47
72
|
var splitDecisions = function splitDecisions(decisions) {
|
|
48
73
|
for (var _len = arguments.length, schemas = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
|
49
74
|
schemas[_key - 1] = arguments[_key];
|
|
@@ -52,8 +77,8 @@ var splitDecisions = function splitDecisions(decisions) {
|
|
|
52
77
|
var matchedDecisions = [];
|
|
53
78
|
var unmatchedDecisions = [];
|
|
54
79
|
decisions.forEach(function (decision) {
|
|
55
|
-
var _decision$
|
|
56
|
-
items = _decision$
|
|
80
|
+
var _decision$items2 = decision.items,
|
|
81
|
+
items = _decision$items2 === void 0 ? [] : _decision$items2;
|
|
57
82
|
|
|
58
83
|
var _splitItems = splitItems(items, schemas),
|
|
59
84
|
_splitItems2 = _slicedToArray(_splitItems, 2),
|
|
@@ -111,8 +136,12 @@ var extractDecisionsByScope = function extractDecisionsByScope(decisions) {
|
|
|
111
136
|
};
|
|
112
137
|
|
|
113
138
|
var groupDecisions = function groupDecisions(unprocessedDecisions) {
|
|
114
|
-
|
|
115
|
-
var
|
|
139
|
+
// split redirect decisions
|
|
140
|
+
var decisionsGroupedByRedirectItemSchema = splitDecisions(unprocessedDecisions, _schema.REDIRECT_ITEM); // split merged measurement decisions
|
|
141
|
+
|
|
142
|
+
var mergedMetricDecisions = splitMergedMetricDecisions(decisionsGroupedByRedirectItemSchema.unmatchedDecisions); // split renderable decisions
|
|
143
|
+
|
|
144
|
+
var decisionsGroupedByRenderableSchemas = splitDecisions(mergedMetricDecisions.unmatchedDecisions, _schema.DOM_ACTION, _schema.DEFAULT_CONTENT_ITEM); // group renderable decisions by scope
|
|
116
145
|
|
|
117
146
|
var _extractDecisionsBySc = extractDecisionsByScope(decisionsGroupedByRenderableSchemas.matchedDecisions),
|
|
118
147
|
pageWideScopeDecisions = _extractDecisionsBySc.pageWideScopeDecisions,
|
|
@@ -123,7 +152,7 @@ var groupDecisions = function groupDecisions(unprocessedDecisions) {
|
|
|
123
152
|
redirectDecisions: decisionsGroupedByRedirectItemSchema.matchedDecisions,
|
|
124
153
|
pageWideScopeDecisions: pageWideScopeDecisions,
|
|
125
154
|
viewDecisions: viewScopeDecisions,
|
|
126
|
-
nonAutoRenderableDecisions: decisionsGroupedByRenderableSchemas.unmatchedDecisions
|
|
155
|
+
nonAutoRenderableDecisions: [].concat(_toConsumableArray(mergedMetricDecisions.matchedDecisions), _toConsumableArray(decisionsGroupedByRenderableSchemas.unmatchedDecisions), _toConsumableArray(nonPageWideScopeDecisions))
|
|
127
156
|
};
|
|
128
157
|
};
|
|
129
158
|
|
|
@@ -15,5 +15,5 @@ governing permissions and limitations under the License.
|
|
|
15
15
|
*/
|
|
16
16
|
// The __VERSION__ keyword will be replace at alloy build time with the package.json version.
|
|
17
17
|
// see babel-plugin-version
|
|
18
|
-
var _default = "2.
|
|
18
|
+
var _default = "2.10.0-beta.0";
|
|
19
19
|
exports.default = _default;
|
package/libEs5/core/index.js
CHANGED
|
@@ -92,6 +92,7 @@ var sendFetchRequest = (0, _utils.isFunction)(fetch) ? (0, _injectSendFetchReque
|
|
|
92
92
|
}) : (0, _injectSendXhrRequest.default)({
|
|
93
93
|
XMLHttpRequest: XMLHttpRequest
|
|
94
94
|
});
|
|
95
|
+
var fireReferrerHideableImage = (0, _utils.injectFireReferrerHideableImage)();
|
|
95
96
|
|
|
96
97
|
var createExecuteCommand = function createExecuteCommand(_ref) {
|
|
97
98
|
var instanceName = _ref.instanceName,
|
|
@@ -180,6 +181,7 @@ var createExecuteCommand = function createExecuteCommand(_ref) {
|
|
|
180
181
|
config: config,
|
|
181
182
|
consent: consent,
|
|
182
183
|
eventManager: eventManager,
|
|
184
|
+
fireReferrerHideableImage: fireReferrerHideableImage,
|
|
183
185
|
logger: componentLogger,
|
|
184
186
|
lifecycle: lifecycle,
|
|
185
187
|
sendEdgeNetworkRequest: sendEdgeNetworkRequest,
|
package/libEs5/utils/index.js
CHANGED
|
@@ -90,12 +90,6 @@ Object.defineProperty(exports, "fireImage", {
|
|
|
90
90
|
return _fireImage.default;
|
|
91
91
|
}
|
|
92
92
|
});
|
|
93
|
-
Object.defineProperty(exports, "fireReferrerHideableImage", {
|
|
94
|
-
enumerable: true,
|
|
95
|
-
get: function get() {
|
|
96
|
-
return _fireReferrerHideableImage.default;
|
|
97
|
-
}
|
|
98
|
-
});
|
|
99
93
|
Object.defineProperty(exports, "flatMap", {
|
|
100
94
|
enumerable: true,
|
|
101
95
|
get: function get() {
|
|
@@ -138,6 +132,12 @@ Object.defineProperty(exports, "injectDoesIdentityCookieExist", {
|
|
|
138
132
|
return _injectDoesIdentityCookieExist.default;
|
|
139
133
|
}
|
|
140
134
|
});
|
|
135
|
+
Object.defineProperty(exports, "injectFireReferrerHideableImage", {
|
|
136
|
+
enumerable: true,
|
|
137
|
+
get: function get() {
|
|
138
|
+
return _injectFireReferrerHideableImage.default;
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
141
|
Object.defineProperty(exports, "injectStorage", {
|
|
142
142
|
enumerable: true,
|
|
143
143
|
get: function get() {
|
|
@@ -337,7 +337,7 @@ var _find = require("./find");
|
|
|
337
337
|
|
|
338
338
|
var _fireImage = require("./fireImage");
|
|
339
339
|
|
|
340
|
-
var
|
|
340
|
+
var _injectFireReferrerHideableImage = require("./injectFireReferrerHideableImage");
|
|
341
341
|
|
|
342
342
|
var _flatMap = require("./flatMap");
|
|
343
343
|
|
|
@@ -20,7 +20,6 @@ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Sy
|
|
|
20
20
|
|
|
21
21
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
22
22
|
|
|
23
|
-
var fireOnPage = _fireImage.default;
|
|
24
23
|
var IFRAME_ATTRS = {
|
|
25
24
|
name: "Adobe Alloy"
|
|
26
25
|
};
|
|
@@ -32,37 +31,54 @@ var IFRAME_PROPS = {
|
|
|
32
31
|
}
|
|
33
32
|
};
|
|
34
33
|
|
|
35
|
-
var _default = function _default(
|
|
34
|
+
var _default = function _default() {
|
|
35
|
+
var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
|
36
|
+
_ref$appendNode = _ref.appendNode,
|
|
37
|
+
appendNode = _ref$appendNode === void 0 ? _dom.appendNode : _ref$appendNode,
|
|
38
|
+
_ref$awaitSelector = _ref.awaitSelector,
|
|
39
|
+
awaitSelector = _ref$awaitSelector === void 0 ? _dom.awaitSelector : _ref$awaitSelector,
|
|
40
|
+
_ref$createNode = _ref.createNode,
|
|
41
|
+
createNode = _ref$createNode === void 0 ? _dom.createNode : _ref$createNode,
|
|
42
|
+
_ref$fireImage = _ref.fireImage,
|
|
43
|
+
fireImage = _ref$fireImage === void 0 ? _fireImage.default : _ref$fireImage;
|
|
44
|
+
|
|
45
|
+
var fireOnPage = fireImage;
|
|
46
|
+
var hiddenIframe;
|
|
47
|
+
|
|
36
48
|
var createIframe = function createIframe() {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
49
|
+
if (hiddenIframe) {
|
|
50
|
+
return Promise.resolve(hiddenIframe);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
return awaitSelector(_tagName.BODY).then(function (_ref2) {
|
|
54
|
+
var _ref3 = _slicedToArray(_ref2, 1),
|
|
55
|
+
body = _ref3[0];
|
|
40
56
|
|
|
41
|
-
|
|
42
|
-
return
|
|
57
|
+
hiddenIframe = createNode(_tagName.IFRAME, IFRAME_ATTRS, IFRAME_PROPS);
|
|
58
|
+
return appendNode(body, hiddenIframe);
|
|
43
59
|
});
|
|
44
60
|
};
|
|
45
61
|
|
|
46
|
-
var fireInIframe = function fireInIframe(
|
|
47
|
-
var src =
|
|
62
|
+
var fireInIframe = function fireInIframe(_ref4) {
|
|
63
|
+
var src = _ref4.src;
|
|
48
64
|
return createIframe().then(function (iframe) {
|
|
49
65
|
var currentDocument = iframe.contentWindow.document;
|
|
50
|
-
return (
|
|
66
|
+
return fireImage({
|
|
51
67
|
src: src,
|
|
52
68
|
currentDocument: currentDocument
|
|
53
|
-
}).then(function () {
|
|
54
|
-
(0, _dom.removeNode)(iframe);
|
|
55
69
|
});
|
|
56
70
|
});
|
|
57
71
|
};
|
|
58
72
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
73
|
+
return function (request) {
|
|
74
|
+
var hideReferrer = request.hideReferrer,
|
|
75
|
+
url = request.url;
|
|
76
|
+
return hideReferrer ? fireInIframe({
|
|
77
|
+
src: url
|
|
78
|
+
}) : fireOnPage({
|
|
79
|
+
src: url
|
|
80
|
+
});
|
|
81
|
+
};
|
|
66
82
|
};
|
|
67
83
|
|
|
68
84
|
exports.default = _default;
|
|
@@ -9,12 +9,12 @@ the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTA
|
|
|
9
9
|
OF ANY KIND, either express or implied. See the License for the specific language
|
|
10
10
|
governing permissions and limitations under the License.
|
|
11
11
|
*/
|
|
12
|
-
import { fireReferrerHideableImage } from "../../utils";
|
|
13
12
|
import injectProcessDestinations from "./injectProcessDestinations";
|
|
14
13
|
import injectProcessResponse from "./injectProcessResponse";
|
|
15
14
|
|
|
16
15
|
const createAudiences = ({
|
|
17
|
-
logger
|
|
16
|
+
logger,
|
|
17
|
+
fireReferrerHideableImage
|
|
18
18
|
}) => {
|
|
19
19
|
const processDestinations = injectProcessDestinations({
|
|
20
20
|
fireReferrerHideableImage,
|
|
@@ -9,7 +9,7 @@ the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTA
|
|
|
9
9
|
OF ANY KIND, either express or implied. See the License for the specific language
|
|
10
10
|
governing permissions and limitations under the License.
|
|
11
11
|
*/
|
|
12
|
-
import {
|
|
12
|
+
import { areThirdPartyCookiesSupportedByDefault, injectDoesIdentityCookieExist } from "../../utils";
|
|
13
13
|
import injectProcessIdSyncs from "./injectProcessIdSyncs";
|
|
14
14
|
import configValidators from "./configValidators";
|
|
15
15
|
import createComponent from "./createComponent";
|
|
@@ -32,6 +32,7 @@ const createIdentity = ({
|
|
|
32
32
|
config,
|
|
33
33
|
logger,
|
|
34
34
|
consent,
|
|
35
|
+
fireReferrerHideableImage,
|
|
35
36
|
sendEdgeNetworkRequest
|
|
36
37
|
}) => {
|
|
37
38
|
const {
|
|
@@ -64,8 +65,8 @@ const createIdentity = ({
|
|
|
64
65
|
addEcidToPayload
|
|
65
66
|
});
|
|
66
67
|
const awaitIdentityCookie = injectAwaitIdentityCookie({
|
|
67
|
-
|
|
68
|
-
|
|
68
|
+
doesIdentityCookieExist,
|
|
69
|
+
orgId
|
|
69
70
|
});
|
|
70
71
|
const ensureSingleIdentity = injectEnsureSingleIdentity({
|
|
71
72
|
doesIdentityCookieExist,
|
|
@@ -10,8 +10,8 @@ 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
|
export default (({
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
doesIdentityCookieExist,
|
|
14
|
+
orgId
|
|
15
15
|
}) => {
|
|
16
16
|
/**
|
|
17
17
|
* Returns a promise that will be resolved once an identity cookie exists.
|
|
@@ -13,4 +13,5 @@ export const DEFAULT_CONTENT_ITEM = "https://ns.adobe.com/personalization/defaul
|
|
|
13
13
|
export const DOM_ACTION = "https://ns.adobe.com/personalization/dom-action";
|
|
14
14
|
export const HTML_CONTENT_ITEM = "https://ns.adobe.com/personalization/html-content-item";
|
|
15
15
|
export const JSON_CONTENT_ITEM = "https://ns.adobe.com/personalization/json-content-item";
|
|
16
|
-
export const REDIRECT_ITEM = "https://ns.adobe.com/personalization/redirect-item";
|
|
16
|
+
export const REDIRECT_ITEM = "https://ns.adobe.com/personalization/redirect-item";
|
|
17
|
+
export const MEASUREMENT_SCHEMA = "https://ns.adobe.com/personalization/measurement";
|
|
@@ -10,7 +10,7 @@ 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
|
import { isNonEmptyArray, includes } from "../../utils";
|
|
13
|
-
import { DOM_ACTION, REDIRECT_ITEM, DEFAULT_CONTENT_ITEM } from "./constants/schema";
|
|
13
|
+
import { DOM_ACTION, REDIRECT_ITEM, DEFAULT_CONTENT_ITEM, MEASUREMENT_SCHEMA } from "./constants/schema";
|
|
14
14
|
import { VIEW_SCOPE_TYPE } from "./constants/scopeType";
|
|
15
15
|
import PAGE_WIDE_SCOPE from "./constants/scope";
|
|
16
16
|
|
|
@@ -36,6 +36,20 @@ const createDecision = (decision, items) => {
|
|
|
36
36
|
};
|
|
37
37
|
};
|
|
38
38
|
|
|
39
|
+
const splitMergedMetricDecisions = decisions => {
|
|
40
|
+
const matchedDecisions = decisions.filter(decision => {
|
|
41
|
+
const {
|
|
42
|
+
items = []
|
|
43
|
+
} = decision;
|
|
44
|
+
return items.some(item => item.schema === MEASUREMENT_SCHEMA);
|
|
45
|
+
});
|
|
46
|
+
const unmatchedDecisions = decisions.filter(decision => !includes(matchedDecisions, decision));
|
|
47
|
+
return {
|
|
48
|
+
matchedDecisions,
|
|
49
|
+
unmatchedDecisions
|
|
50
|
+
};
|
|
51
|
+
};
|
|
52
|
+
|
|
39
53
|
const splitDecisions = (decisions, ...schemas) => {
|
|
40
54
|
const matchedDecisions = [];
|
|
41
55
|
const unmatchedDecisions = [];
|
|
@@ -94,8 +108,13 @@ const extractDecisionsByScope = decisions => {
|
|
|
94
108
|
};
|
|
95
109
|
|
|
96
110
|
const groupDecisions = unprocessedDecisions => {
|
|
97
|
-
|
|
98
|
-
const
|
|
111
|
+
// split redirect decisions
|
|
112
|
+
const decisionsGroupedByRedirectItemSchema = splitDecisions(unprocessedDecisions, REDIRECT_ITEM); // split merged measurement decisions
|
|
113
|
+
|
|
114
|
+
const mergedMetricDecisions = splitMergedMetricDecisions(decisionsGroupedByRedirectItemSchema.unmatchedDecisions); // split renderable decisions
|
|
115
|
+
|
|
116
|
+
const decisionsGroupedByRenderableSchemas = splitDecisions(mergedMetricDecisions.unmatchedDecisions, DOM_ACTION, DEFAULT_CONTENT_ITEM); // group renderable decisions by scope
|
|
117
|
+
|
|
99
118
|
const {
|
|
100
119
|
pageWideScopeDecisions,
|
|
101
120
|
nonPageWideScopeDecisions,
|
|
@@ -105,7 +124,7 @@ const groupDecisions = unprocessedDecisions => {
|
|
|
105
124
|
redirectDecisions: decisionsGroupedByRedirectItemSchema.matchedDecisions,
|
|
106
125
|
pageWideScopeDecisions,
|
|
107
126
|
viewDecisions: viewScopeDecisions,
|
|
108
|
-
nonAutoRenderableDecisions: decisionsGroupedByRenderableSchemas.unmatchedDecisions
|
|
127
|
+
nonAutoRenderableDecisions: [...mergedMetricDecisions.matchedDecisions, ...decisionsGroupedByRenderableSchemas.unmatchedDecisions, ...nonPageWideScopeDecisions]
|
|
109
128
|
};
|
|
110
129
|
};
|
|
111
130
|
|
package/libEs6/core/index.js
CHANGED
|
@@ -10,7 +10,7 @@ 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
|
import createInstanceFunction from "./createInstanceFunction";
|
|
13
|
-
import { getApexDomain, injectStorage, cookieJar, isFunction } from "../utils";
|
|
13
|
+
import { getApexDomain, injectStorage, cookieJar, isFunction, injectFireReferrerHideableImage } from "../utils";
|
|
14
14
|
import createLogController from "./createLogController";
|
|
15
15
|
import createLifecycle from "./createLifecycle";
|
|
16
16
|
import createComponentRegistry from "./createComponentRegistry";
|
|
@@ -57,6 +57,7 @@ const sendFetchRequest = isFunction(fetch) ? injectSendFetchRequest({
|
|
|
57
57
|
}) : injectSendXhrRequest({
|
|
58
58
|
XMLHttpRequest
|
|
59
59
|
});
|
|
60
|
+
const fireReferrerHideableImage = injectFireReferrerHideableImage();
|
|
60
61
|
export const createExecuteCommand = ({
|
|
61
62
|
instanceName,
|
|
62
63
|
logController: {
|
|
@@ -147,6 +148,7 @@ export const createExecuteCommand = ({
|
|
|
147
148
|
config,
|
|
148
149
|
consent,
|
|
149
150
|
eventManager,
|
|
151
|
+
fireReferrerHideableImage,
|
|
150
152
|
logger: componentLogger,
|
|
151
153
|
lifecycle,
|
|
152
154
|
sendEdgeNetworkRequest,
|
package/libEs6/utils/index.js
CHANGED
|
@@ -25,7 +25,7 @@ export { default as deepAssign } from "./deepAssign";
|
|
|
25
25
|
export { default as endsWith } from "./endsWith";
|
|
26
26
|
export { default as find } from "./find";
|
|
27
27
|
export { default as fireImage } from "./fireImage";
|
|
28
|
-
export { default as
|
|
28
|
+
export { default as injectFireReferrerHideableImage } from "./injectFireReferrerHideableImage";
|
|
29
29
|
export { default as flatMap } from "./flatMap";
|
|
30
30
|
export { default as getApexDomain } from "./getApexDomain";
|
|
31
31
|
export { default as getLastArrayItems } from "./getLastArrayItems";
|
|
@@ -9,10 +9,9 @@ the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTA
|
|
|
9
9
|
OF ANY KIND, either express or implied. See the License for the specific language
|
|
10
10
|
governing permissions and limitations under the License.
|
|
11
11
|
*/
|
|
12
|
-
import
|
|
13
|
-
import { appendNode, awaitSelector, createNode
|
|
12
|
+
import fireImageInDocument from "./fireImage";
|
|
13
|
+
import { appendNode as appendNodeToDocument, awaitSelector as awaitSelectorInDocument, createNode as createNodeInDocument } from "./dom";
|
|
14
14
|
import { BODY, IFRAME } from "../constants/tagName";
|
|
15
|
-
const fireOnPage = fireImage;
|
|
16
15
|
const IFRAME_ATTRS = {
|
|
17
16
|
name: "Adobe Alloy"
|
|
18
17
|
};
|
|
@@ -23,11 +22,23 @@ const IFRAME_PROPS = {
|
|
|
23
22
|
height: 0
|
|
24
23
|
}
|
|
25
24
|
};
|
|
26
|
-
export default (
|
|
25
|
+
export default (({
|
|
26
|
+
appendNode = appendNodeToDocument,
|
|
27
|
+
awaitSelector = awaitSelectorInDocument,
|
|
28
|
+
createNode = createNodeInDocument,
|
|
29
|
+
fireImage = fireImageInDocument
|
|
30
|
+
} = {}) => {
|
|
31
|
+
const fireOnPage = fireImage;
|
|
32
|
+
let hiddenIframe;
|
|
33
|
+
|
|
27
34
|
const createIframe = () => {
|
|
35
|
+
if (hiddenIframe) {
|
|
36
|
+
return Promise.resolve(hiddenIframe);
|
|
37
|
+
}
|
|
38
|
+
|
|
28
39
|
return awaitSelector(BODY).then(([body]) => {
|
|
29
|
-
|
|
30
|
-
return appendNode(body,
|
|
40
|
+
hiddenIframe = createNode(IFRAME, IFRAME_ATTRS, IFRAME_PROPS);
|
|
41
|
+
return appendNode(body, hiddenIframe);
|
|
31
42
|
});
|
|
32
43
|
};
|
|
33
44
|
|
|
@@ -39,19 +50,19 @@ export default (request => {
|
|
|
39
50
|
return fireImage({
|
|
40
51
|
src,
|
|
41
52
|
currentDocument
|
|
42
|
-
}).then(() => {
|
|
43
|
-
removeNode(iframe);
|
|
44
53
|
});
|
|
45
54
|
});
|
|
46
55
|
};
|
|
47
56
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
+
return request => {
|
|
58
|
+
const {
|
|
59
|
+
hideReferrer,
|
|
60
|
+
url
|
|
61
|
+
} = request;
|
|
62
|
+
return hideReferrer ? fireInIframe({
|
|
63
|
+
src: url
|
|
64
|
+
}) : fireOnPage({
|
|
65
|
+
src: url
|
|
66
|
+
});
|
|
67
|
+
};
|
|
57
68
|
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@adobe/alloy",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.10.0-beta.0",
|
|
4
4
|
"description": "Adobe Experience Platform Web SDK",
|
|
5
5
|
"main": "libEs5/index.js",
|
|
6
6
|
"module": "libEs6/index.js",
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
"uuid": "^3.3.2"
|
|
65
65
|
},
|
|
66
66
|
"devDependencies": {
|
|
67
|
-
"@adobe/alloy": "^2.9.0
|
|
67
|
+
"@adobe/alloy": "^2.9.0",
|
|
68
68
|
"@babel/cli": "^7.12.8",
|
|
69
69
|
"@babel/core": "^7.2.2",
|
|
70
70
|
"@babel/plugin-proposal-object-rest-spread": "^7.3.2",
|