@adobe/alloy 2.29.0-beta.5 → 2.30.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/ActivityCollector/utils/dom/findClickableElement.js +4 -0
- package/libEs5/components/Advertising/handlers/clickThroughHandler.js +2 -1
- package/libEs5/components/Advertising/handlers/onBeforeSendEventHandler.js +8 -3
- package/libEs5/components/Advertising/handlers/viewThroughHandler.js +2 -1
- package/libEs5/components/Advertising/identities/collectID5Id.js +1 -1
- package/libEs5/components/Advertising/identities/collectRampId.js +1 -1
- package/libEs5/components/Consent/createConsentRequestPayload.js +14 -3
- package/libEs5/components/Consent/types.js +18 -0
- package/libEs5/components/Personalization/dom-actions/action.js +7 -4
- package/libEs5/components/Personalization/dom-actions/initDomActionsModules.js +10 -10
- package/libEs5/components/PushNotifications/helpers/constants.js +19 -0
- package/libEs5/components/PushNotifications/helpers/getPushSubscriptionDetails.js +116 -0
- package/libEs5/components/PushNotifications/helpers/readFromIndexedDb.js +41 -0
- package/libEs5/components/PushNotifications/helpers/saveToIndexedDb.js +50 -0
- package/libEs5/components/PushNotifications/helpers/serviceWorkerNotificationClickListener.js +85 -0
- package/libEs5/components/PushNotifications/helpers/serviceWorkerPushListener.js +70 -0
- package/libEs5/components/PushNotifications/index.js +129 -0
- package/libEs5/components/PushNotifications/request/createSendPushSubscriptionPayload.js +62 -0
- package/libEs5/components/PushNotifications/request/createSendPushSubscriptionRequest.js +35 -0
- package/libEs5/components/PushNotifications/request/makeSendPushSubscriptionRequest.js +93 -0
- package/libEs5/components/PushNotifications/request/makeSendServiceWorkerTrackingData.js +146 -0
- package/libEs5/components/PushNotifications/serviceWorker.js +91 -0
- package/libEs5/components/PushNotifications/types.js +95 -0
- package/libEs5/constants/libraryVersion.js +1 -1
- package/libEs5/core/componentCreators.js +8 -1
- package/libEs5/core/consent/createConsent.js +10 -0
- package/libEs5/core/consent/createConsentStateMachine.js +36 -0
- package/libEs5/core/consent/types.js +24 -0
- package/libEs5/core/edgeNetwork/injectSendEdgeNetworkRequest.js +20 -0
- package/libEs5/core/edgeNetwork/types.js +10 -0
- package/libEs5/core/identity/createIdentity.js +36 -0
- package/libEs5/core/identity/types.js +15 -0
- package/libEs5/core/injectCreateResponse.js +9 -7
- package/libEs5/core/types.js +101 -11
- package/libEs5/utils/bytes.js +12 -1
- package/libEs5/utils/createLoggingCookieJar.js +14 -1
- package/libEs5/utils/createMerger.js +5 -4
- package/libEs5/utils/index.js +19 -0
- package/libEs5/utils/indexedDb.js +73 -0
- package/libEs5/utils/injectStorage.js +19 -0
- package/libEs5/utils/request/createDataCollectionRequestPayload.js +16 -8
- package/libEs5/utils/request/createRequest.js +28 -1
- package/libEs5/utils/request/createRequestPayload.js +15 -2
- package/libEs5/utils/request/types.js +52 -0
- package/libEs5/utils/types.js +39 -0
- package/libEs6/components/ActivityCollector/utils/dom/findClickableElement.js +4 -0
- package/libEs6/components/Advertising/handlers/clickThroughHandler.js +2 -1
- package/libEs6/components/Advertising/handlers/onBeforeSendEventHandler.js +8 -3
- package/libEs6/components/Advertising/handlers/viewThroughHandler.js +2 -1
- package/libEs6/components/Advertising/identities/collectID5Id.js +1 -1
- package/libEs6/components/Advertising/identities/collectRampId.js +1 -1
- package/libEs6/components/Consent/createConsentRequestPayload.js +16 -3
- package/libEs6/components/Consent/types.js +15 -0
- package/libEs6/components/Personalization/dom-actions/action.js +7 -4
- package/libEs6/components/Personalization/dom-actions/initDomActionsModules.js +10 -10
- package/libEs6/components/PushNotifications/helpers/constants.js +16 -0
- package/libEs6/components/PushNotifications/helpers/getPushSubscriptionDetails.js +114 -0
- package/libEs6/components/PushNotifications/helpers/readFromIndexedDb.js +40 -0
- package/libEs6/components/PushNotifications/helpers/saveToIndexedDb.js +48 -0
- package/libEs6/components/PushNotifications/helpers/serviceWorkerNotificationClickListener.js +82 -0
- package/libEs6/components/PushNotifications/helpers/serviceWorkerPushListener.js +69 -0
- package/libEs6/components/PushNotifications/index.js +126 -0
- package/libEs6/components/PushNotifications/request/createSendPushSubscriptionPayload.js +61 -0
- package/libEs6/components/PushNotifications/request/createSendPushSubscriptionRequest.js +34 -0
- package/libEs6/components/PushNotifications/request/makeSendPushSubscriptionRequest.js +89 -0
- package/libEs6/components/PushNotifications/request/makeSendServiceWorkerTrackingData.js +146 -0
- package/libEs6/components/PushNotifications/serviceWorker.js +90 -0
- package/libEs6/components/PushNotifications/types.js +92 -0
- package/libEs6/constants/libraryVersion.js +1 -1
- package/libEs6/core/componentCreators.js +2 -1
- package/libEs6/core/consent/createConsent.js +12 -0
- package/libEs6/core/consent/createConsentStateMachine.js +36 -0
- package/libEs6/core/consent/types.js +21 -0
- package/libEs6/core/edgeNetwork/injectSendEdgeNetworkRequest.js +20 -0
- package/libEs6/core/edgeNetwork/types.js +7 -0
- package/libEs6/core/identity/createIdentity.js +38 -0
- package/libEs6/core/identity/types.js +12 -0
- package/libEs6/core/injectCreateResponse.js +11 -7
- package/libEs6/core/types.js +101 -11
- package/libEs6/utils/bytes.js +12 -1
- package/libEs6/utils/createLoggingCookieJar.js +15 -1
- package/libEs6/utils/createMerger.js +5 -4
- package/libEs6/utils/index.js +1 -0
- package/libEs6/utils/indexedDb.js +67 -0
- package/libEs6/utils/injectStorage.js +20 -0
- package/libEs6/utils/request/createDataCollectionRequestPayload.js +19 -8
- package/libEs6/utils/request/createRequest.js +29 -1
- package/libEs6/utils/request/createRequestPayload.js +15 -2
- package/libEs6/utils/request/types.js +49 -0
- package/libEs6/utils/types.js +36 -0
- package/package.json +45 -52
- package/scripts/alloyBuilder.js +130 -4
- package/types/components/ActivityCollector/utils/dom/findClickableElement.d.ts.map +1 -1
- package/types/components/Advertising/handlers/onBeforeSendEventHandler.d.ts.map +1 -1
- package/types/components/Advertising/handlers/viewThroughHandler.d.ts.map +1 -1
- package/types/components/Consent/createConsentRequest.d.ts +1 -11
- package/types/components/Consent/createConsentRequest.d.ts.map +1 -1
- package/types/components/Consent/createConsentRequestPayload.d.ts +2 -9
- package/types/components/Consent/createConsentRequestPayload.d.ts.map +1 -1
- package/types/components/Consent/types.d.ts +28 -0
- package/types/components/Consent/types.d.ts.map +1 -0
- package/types/components/Identity/getIdentity/createIdentityRequest.d.ts +1 -11
- package/types/components/Identity/getIdentity/createIdentityRequest.d.ts.map +1 -1
- package/types/components/Identity/getIdentity/createIdentityRequestPayload.d.ts +1 -9
- package/types/components/Identity/getIdentity/createIdentityRequestPayload.d.ts.map +1 -1
- package/types/components/Personalization/dom-actions/action.d.ts +1 -1
- package/types/components/Personalization/dom-actions/action.d.ts.map +1 -1
- package/types/components/PushNotifications/helpers/constants.d.ts +5 -0
- package/types/components/PushNotifications/helpers/constants.d.ts.map +1 -0
- package/types/components/PushNotifications/helpers/getPushSubscriptionDetails.d.ts +30 -0
- package/types/components/PushNotifications/helpers/getPushSubscriptionDetails.d.ts.map +1 -0
- package/types/components/PushNotifications/helpers/readFromIndexedDb.d.ts +4 -0
- package/types/components/PushNotifications/helpers/readFromIndexedDb.d.ts.map +1 -0
- package/types/components/PushNotifications/helpers/saveToIndexedDb.d.ts +9 -0
- package/types/components/PushNotifications/helpers/saveToIndexedDb.d.ts.map +1 -0
- package/types/components/PushNotifications/helpers/serviceWorkerNotificationClickListener.d.ts +9 -0
- package/types/components/PushNotifications/helpers/serviceWorkerNotificationClickListener.d.ts.map +1 -0
- package/types/components/PushNotifications/helpers/serviceWorkerPushListener.d.ts +8 -0
- package/types/components/PushNotifications/helpers/serviceWorkerPushListener.d.ts.map +1 -0
- package/types/components/PushNotifications/index.d.ts +51 -0
- package/types/components/PushNotifications/index.d.ts.map +1 -0
- package/types/components/PushNotifications/request/createSendPushSubscriptionPayload.d.ts +10 -0
- package/types/components/PushNotifications/request/createSendPushSubscriptionPayload.d.ts.map +1 -0
- package/types/components/PushNotifications/request/createSendPushSubscriptionRequest.d.ts +7 -0
- package/types/components/PushNotifications/request/createSendPushSubscriptionRequest.d.ts.map +1 -0
- package/types/components/PushNotifications/request/makeSendPushSubscriptionRequest.d.ts +21 -0
- package/types/components/PushNotifications/request/makeSendPushSubscriptionRequest.d.ts.map +1 -0
- package/types/components/PushNotifications/request/makeSendServiceWorkerTrackingData.d.ts +11 -0
- package/types/components/PushNotifications/request/makeSendServiceWorkerTrackingData.d.ts.map +1 -0
- package/types/components/PushNotifications/serviceWorker.d.ts +2 -0
- package/types/components/PushNotifications/serviceWorker.d.ts.map +1 -0
- package/types/components/PushNotifications/types.d.ts +190 -0
- package/types/components/PushNotifications/types.d.ts.map +1 -0
- package/types/components/StreamingMedia/createMediaRequest.d.ts +1 -11
- package/types/components/StreamingMedia/createMediaRequest.d.ts.map +1 -1
- package/types/core/componentCreators.d.ts +1 -0
- package/types/core/consent/createConsent.d.ts +4 -10
- package/types/core/consent/createConsent.d.ts.map +1 -1
- package/types/core/consent/createConsentStateMachine.d.ts +4 -12
- package/types/core/consent/createConsentStateMachine.d.ts.map +1 -1
- package/types/core/consent/types.d.ts +42 -0
- package/types/core/consent/types.d.ts.map +1 -0
- package/types/core/edgeNetwork/injectSendEdgeNetworkRequest.d.ts +15 -13
- package/types/core/edgeNetwork/injectSendEdgeNetworkRequest.d.ts.map +1 -1
- package/types/core/edgeNetwork/types.d.ts +12 -0
- package/types/core/edgeNetwork/types.d.ts.map +1 -0
- package/types/core/identity/createIdentity.d.ts +9 -9
- package/types/core/identity/createIdentity.d.ts.map +1 -1
- package/types/core/identity/types.d.ts +23 -0
- package/types/core/identity/types.d.ts.map +1 -0
- package/types/core/injectCreateResponse.d.ts +3 -27
- package/types/core/injectCreateResponse.d.ts.map +1 -1
- package/types/core/types.d.ts +209 -22
- package/types/core/types.d.ts.map +1 -1
- package/types/utils/bytes.d.ts +3 -1
- package/types/utils/bytes.d.ts.map +1 -1
- package/types/utils/createLoggingCookieJar.d.ts +5 -3
- package/types/utils/createLoggingCookieJar.d.ts.map +1 -1
- package/types/utils/createMerger.d.ts +1 -1
- package/types/utils/createMerger.d.ts.map +1 -1
- package/types/utils/index.d.ts +1 -0
- package/types/utils/indexedDb.d.ts +4 -0
- package/types/utils/indexedDb.d.ts.map +1 -0
- package/types/utils/injectStorage.d.ts +2 -40
- package/types/utils/injectStorage.d.ts.map +1 -1
- package/types/utils/request/createDataCollectionRequest.d.ts +1 -11
- package/types/utils/request/createDataCollectionRequest.d.ts.map +1 -1
- package/types/utils/request/createDataCollectionRequestPayload.d.ts +2 -9
- package/types/utils/request/createDataCollectionRequestPayload.d.ts.map +1 -1
- package/types/utils/request/createRequest.d.ts +13 -11
- package/types/utils/request/createRequest.d.ts.map +1 -1
- package/types/utils/request/createRequestPayload.d.ts +7 -9
- package/types/utils/request/createRequestPayload.d.ts.map +1 -1
- package/types/utils/request/types.d.ts +91 -0
- package/types/utils/request/types.d.ts.map +1 -0
- package/types/utils/types.d.ts +91 -0
- package/types/utils/types.d.ts.map +1 -0
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.default = void 0;
|
|
4
|
+
var _index = require("../../utils/validation/index.js");
|
|
5
|
+
var _index2 = require("../../utils/index.js");
|
|
6
|
+
var _makeSendPushSubscriptionRequest = require("./request/makeSendPushSubscriptionRequest.js");
|
|
7
|
+
var _saveToIndexedDb = require("./helpers/saveToIndexedDb.js");
|
|
8
|
+
/*
|
|
9
|
+
Copyright 2025 Adobe. All rights reserved.
|
|
10
|
+
This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
11
|
+
you may not use this file except in compliance with the License. You may obtain a copy
|
|
12
|
+
of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
13
|
+
|
|
14
|
+
Unless required by applicable law or agreed to in writing, software distributed under
|
|
15
|
+
the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
|
|
16
|
+
OF ANY KIND, either express or implied. See the License for the specific language
|
|
17
|
+
governing permissions and limitations under the License.
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
/** @import { StorageCreator } from '../../utils/types.js' */
|
|
21
|
+
/** @import { EventManager, Logger } from '../../core/types.js' */
|
|
22
|
+
/** @import { IdentityManager } from '../../core/identity/types.js' */
|
|
23
|
+
/** @import { ConsentManager } from '../../core/consent/types.js' */
|
|
24
|
+
/** @import { EdgeRequestExecutor } from '../../core/edgeNetwork/types.js' */
|
|
25
|
+
|
|
26
|
+
const isComponentConfigured = ({
|
|
27
|
+
orgId,
|
|
28
|
+
pushNotifications: {
|
|
29
|
+
vapidPublicKey,
|
|
30
|
+
appId,
|
|
31
|
+
trackingDatasetId
|
|
32
|
+
} = {
|
|
33
|
+
vapidPublicKey: undefined,
|
|
34
|
+
appId: undefined,
|
|
35
|
+
trackingDatasetId: undefined
|
|
36
|
+
}
|
|
37
|
+
}) => orgId && vapidPublicKey && appId && trackingDatasetId;
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* @function
|
|
41
|
+
*
|
|
42
|
+
* @param {Object} options
|
|
43
|
+
* @param {{ orgId: string, datastreamId: string, edgeDomain: string, edgeBasePath: string, pushNotifications: { vapidPublicKey: string, appId: string, trackingDatasetId: string }}} options.config
|
|
44
|
+
* @param {StorageCreator} options.createNamespacedStorage
|
|
45
|
+
* @param {EventManager} options.eventManager
|
|
46
|
+
* @param {Logger} options.logger
|
|
47
|
+
* @param {ConsentManager} options.consent
|
|
48
|
+
* @param {IdentityManager} options.identity
|
|
49
|
+
* @param {function(): string} options.getBrowser
|
|
50
|
+
* @param {EdgeRequestExecutor} options.sendEdgeNetworkRequest
|
|
51
|
+
* @returns {{ lifecycle: object, commands: { sendPushSubscription: object } }}
|
|
52
|
+
*/
|
|
53
|
+
const createPushNotifications = ({
|
|
54
|
+
createNamespacedStorage,
|
|
55
|
+
eventManager,
|
|
56
|
+
config,
|
|
57
|
+
logger,
|
|
58
|
+
consent,
|
|
59
|
+
identity,
|
|
60
|
+
getBrowser,
|
|
61
|
+
sendEdgeNetworkRequest
|
|
62
|
+
}) => {
|
|
63
|
+
return {
|
|
64
|
+
lifecycle: {
|
|
65
|
+
async onComponentsRegistered() {
|
|
66
|
+
if (isComponentConfigured(config)) {
|
|
67
|
+
const {
|
|
68
|
+
datastreamId,
|
|
69
|
+
edgeDomain,
|
|
70
|
+
edgeBasePath,
|
|
71
|
+
pushNotifications: {
|
|
72
|
+
trackingDatasetId
|
|
73
|
+
}
|
|
74
|
+
} = config;
|
|
75
|
+
await (0, _saveToIndexedDb.default)({
|
|
76
|
+
datastreamId,
|
|
77
|
+
edgeDomain,
|
|
78
|
+
edgeBasePath,
|
|
79
|
+
datasetId: trackingDatasetId,
|
|
80
|
+
browser: getBrowser()
|
|
81
|
+
}, logger);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
commands: {
|
|
86
|
+
sendPushSubscription: {
|
|
87
|
+
run: async () => {
|
|
88
|
+
if (!isComponentConfigured(config)) {
|
|
89
|
+
throw new Error("Push notifications module is not configured.");
|
|
90
|
+
}
|
|
91
|
+
const {
|
|
92
|
+
orgId,
|
|
93
|
+
pushNotifications: {
|
|
94
|
+
vapidPublicKey,
|
|
95
|
+
appId
|
|
96
|
+
} = {
|
|
97
|
+
vapidPublicKey: undefined,
|
|
98
|
+
appId: undefined
|
|
99
|
+
}
|
|
100
|
+
} = config || {};
|
|
101
|
+
const storage = createNamespacedStorage((0, _index2.sanitizeOrgIdForCookieName)(orgId) + ".pushNotifications.");
|
|
102
|
+
return (0, _makeSendPushSubscriptionRequest.default)({
|
|
103
|
+
config: {
|
|
104
|
+
vapidPublicKey,
|
|
105
|
+
appId
|
|
106
|
+
},
|
|
107
|
+
storage: storage.persistent,
|
|
108
|
+
logger,
|
|
109
|
+
sendEdgeNetworkRequest,
|
|
110
|
+
consent,
|
|
111
|
+
eventManager,
|
|
112
|
+
identity,
|
|
113
|
+
window
|
|
114
|
+
});
|
|
115
|
+
},
|
|
116
|
+
optionsValidator: (0, _index.objectOf)({}).noUnknownFields()
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
};
|
|
121
|
+
createPushNotifications.namespace = "Push Notifications";
|
|
122
|
+
createPushNotifications.configValidators = (0, _index.objectOf)({
|
|
123
|
+
pushNotifications: (0, _index.objectOf)({
|
|
124
|
+
vapidPublicKey: (0, _index.string)().required(),
|
|
125
|
+
appId: (0, _index.string)().required(),
|
|
126
|
+
trackingDatasetId: (0, _index.string)().required()
|
|
127
|
+
}).noUnknownFields()
|
|
128
|
+
});
|
|
129
|
+
var _default = exports.default = createPushNotifications;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.default = void 0;
|
|
4
|
+
var _createDataCollectionRequestPayload = require("../../../utils/request/createDataCollectionRequestPayload.js");
|
|
5
|
+
/*
|
|
6
|
+
Copyright 2025 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
|
+
/** @import { EventManager } from "../../../core/types.js" */
|
|
17
|
+
/** @import { DataCollectionRequestPayload } from "../../../utils/request/types.js" */
|
|
18
|
+
/**
|
|
19
|
+
* Creates a data collection request payload for sending push subscription details to Adobe Experience Platform.
|
|
20
|
+
*
|
|
21
|
+
* This function constructs an event containing push notification subscription information,
|
|
22
|
+
* including the subscription details, platform information, and identity data. The event
|
|
23
|
+
* is then packaged into a data collection request payload for transmission to the edge network.
|
|
24
|
+
*
|
|
25
|
+
* @async
|
|
26
|
+
* @function
|
|
27
|
+
*
|
|
28
|
+
* @param {Object} options
|
|
29
|
+
* @param {string} options.ecid
|
|
30
|
+
* @param {EventManager} options.eventManager
|
|
31
|
+
* @param {string} options.serializedPushSubscriptionDetails
|
|
32
|
+
* @param {string} options.appId
|
|
33
|
+
*
|
|
34
|
+
* @returns {Promise<DataCollectionRequestPayload>}
|
|
35
|
+
*/
|
|
36
|
+
var _default = async ({
|
|
37
|
+
ecid,
|
|
38
|
+
eventManager,
|
|
39
|
+
serializedPushSubscriptionDetails,
|
|
40
|
+
appId
|
|
41
|
+
}) => {
|
|
42
|
+
const event = eventManager.createEvent();
|
|
43
|
+
event.setUserData({
|
|
44
|
+
pushNotificationDetails: [{
|
|
45
|
+
appID: appId,
|
|
46
|
+
token: serializedPushSubscriptionDetails,
|
|
47
|
+
platform: "web",
|
|
48
|
+
denylisted: false,
|
|
49
|
+
identity: {
|
|
50
|
+
namespace: {
|
|
51
|
+
code: "ECID"
|
|
52
|
+
},
|
|
53
|
+
id: ecid
|
|
54
|
+
}
|
|
55
|
+
}]
|
|
56
|
+
});
|
|
57
|
+
event.finalize();
|
|
58
|
+
const payload = (0, _createDataCollectionRequestPayload.default)();
|
|
59
|
+
payload.addEvent(event);
|
|
60
|
+
return payload;
|
|
61
|
+
};
|
|
62
|
+
exports.default = _default;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.default = void 0;
|
|
4
|
+
var _index = require("../../../utils/request/index.js");
|
|
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
|
+
/** @import { DataCollectionRequestPayload, Request } from '../../../utils/request/types.js' */
|
|
17
|
+
/**
|
|
18
|
+
* @function
|
|
19
|
+
*
|
|
20
|
+
* @param {{ payload: DataCollectionRequestPayload }} options
|
|
21
|
+
*
|
|
22
|
+
* @returns {Request}
|
|
23
|
+
*/
|
|
24
|
+
var _default = ({
|
|
25
|
+
payload
|
|
26
|
+
}) => (0, _index.createRequest)({
|
|
27
|
+
payload,
|
|
28
|
+
getAction() {
|
|
29
|
+
return "interact";
|
|
30
|
+
},
|
|
31
|
+
getUseSendBeacon() {
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
exports.default = _default;
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.default = void 0;
|
|
4
|
+
var _index = require("../../../utils/index.js");
|
|
5
|
+
var _getPushSubscriptionDetails = require("../helpers/getPushSubscriptionDetails.js");
|
|
6
|
+
var _createSendPushSubscriptionRequest = require("./createSendPushSubscriptionRequest.js");
|
|
7
|
+
var _createSendPushSubscriptionPayload = require("./createSendPushSubscriptionPayload.js");
|
|
8
|
+
var _saveToIndexedDb = require("../helpers/saveToIndexedDb.js");
|
|
9
|
+
/*
|
|
10
|
+
Copyright 2025 Adobe. All rights reserved.
|
|
11
|
+
This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
12
|
+
you may not use this file except in compliance with the License. You may obtain a copy
|
|
13
|
+
of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
14
|
+
|
|
15
|
+
Unless required by applicable law or agreed to in writing, software distributed under
|
|
16
|
+
the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
|
|
17
|
+
OF ANY KIND, either express or implied. See the License for the specific language
|
|
18
|
+
governing permissions and limitations under the License.
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
/** @import { Storage } from '../../../utils/types.js' */
|
|
22
|
+
/** @import { EventManager, Logger } from '../../../core/types.js' */
|
|
23
|
+
/** @import { IdentityManager } from '../../../core/identity/types.js' */
|
|
24
|
+
/** @import { ConsentManager } from '../../../core/consent/types.js' */
|
|
25
|
+
/** @import { EdgeRequestExecutor } from '../../../core/edgeNetwork/types.js' */
|
|
26
|
+
|
|
27
|
+
const SUBSCRIPTION_DETAILS = "subscriptionDetails";
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Retrieves and returns push subscription details with sorted object keys.
|
|
31
|
+
*
|
|
32
|
+
* This function gets the push subscription details using the provided VAPID public key
|
|
33
|
+
* and returns the details with all object keys sorted recursively for consistent output.
|
|
34
|
+
*
|
|
35
|
+
* @async
|
|
36
|
+
* @function
|
|
37
|
+
*
|
|
38
|
+
* @param {Object} options
|
|
39
|
+
* @param {{vapidPublicKey: string, appId: string}} options.config
|
|
40
|
+
* @param {Storage} options.storage
|
|
41
|
+
* @param {Logger} options.logger
|
|
42
|
+
* @param {EventManager} options.eventManager
|
|
43
|
+
* @param {IdentityManager} options.identity
|
|
44
|
+
* @param {EdgeRequestExecutor} options.sendEdgeNetworkRequest
|
|
45
|
+
* @param {ConsentManager} options.consent
|
|
46
|
+
* @param {Window} options.window
|
|
47
|
+
*
|
|
48
|
+
* @returns {Promise<void>}
|
|
49
|
+
*/
|
|
50
|
+
var _default = async ({
|
|
51
|
+
config: {
|
|
52
|
+
vapidPublicKey,
|
|
53
|
+
appId
|
|
54
|
+
},
|
|
55
|
+
storage,
|
|
56
|
+
logger,
|
|
57
|
+
sendEdgeNetworkRequest,
|
|
58
|
+
consent,
|
|
59
|
+
eventManager,
|
|
60
|
+
identity,
|
|
61
|
+
window
|
|
62
|
+
}) => {
|
|
63
|
+
await identity.awaitIdentity();
|
|
64
|
+
const ecid = identity.getEcidFromCookie();
|
|
65
|
+
const pushSubscriptionDetails = await (0, _getPushSubscriptionDetails.default)({
|
|
66
|
+
vapidPublicKey,
|
|
67
|
+
window
|
|
68
|
+
});
|
|
69
|
+
const serializedPushSubscriptionDetails = JSON.stringify((0, _index.sortObjectKeysRecursively)(pushSubscriptionDetails));
|
|
70
|
+
const cacheValue = "" + ecid + serializedPushSubscriptionDetails;
|
|
71
|
+
if (cacheValue === storage.getItem(SUBSCRIPTION_DETAILS)) {
|
|
72
|
+
logger.info("Subscription details have not changed. Not sending to the server.");
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
storage.setItem(SUBSCRIPTION_DETAILS, cacheValue);
|
|
76
|
+
const payload = await (0, _createSendPushSubscriptionPayload.default)({
|
|
77
|
+
eventManager,
|
|
78
|
+
ecid,
|
|
79
|
+
serializedPushSubscriptionDetails,
|
|
80
|
+
appId
|
|
81
|
+
});
|
|
82
|
+
const request = (0, _createSendPushSubscriptionRequest.default)({
|
|
83
|
+
payload
|
|
84
|
+
});
|
|
85
|
+
await consent.awaitConsent();
|
|
86
|
+
await sendEdgeNetworkRequest({
|
|
87
|
+
request
|
|
88
|
+
});
|
|
89
|
+
await (0, _saveToIndexedDb.default)({
|
|
90
|
+
ecid
|
|
91
|
+
}, logger);
|
|
92
|
+
};
|
|
93
|
+
exports.default = _default;
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.default = void 0;
|
|
4
|
+
var _readFromIndexedDb = require("../helpers/readFromIndexedDb.js");
|
|
5
|
+
var _uuid = require("../../../utils/uuid.js");
|
|
6
|
+
/*
|
|
7
|
+
Copyright 2025 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 no-underscore-dangle */
|
|
18
|
+
/** @import { ServiceWorkerLogger } from '../types.js' */
|
|
19
|
+
/** @import { TrackingDataPayload } from '../types.js' */
|
|
20
|
+
/**
|
|
21
|
+
* @async
|
|
22
|
+
* @function
|
|
23
|
+
* @param {Object} options
|
|
24
|
+
* @param {Object} options.xdm
|
|
25
|
+
* @param {string} [options.actionLabel]
|
|
26
|
+
* @param {number} [options.applicationLaunches=0]
|
|
27
|
+
* @param {Object} utils
|
|
28
|
+
* @param {ServiceWorkerLogger} utils.logger
|
|
29
|
+
* @param {(url: string, options: object) => Promise<Response>} utils.fetch
|
|
30
|
+
*
|
|
31
|
+
* @returns {Promise<boolean>}
|
|
32
|
+
* @throws {Error}
|
|
33
|
+
*/
|
|
34
|
+
var _default = async ({
|
|
35
|
+
xdm,
|
|
36
|
+
actionLabel,
|
|
37
|
+
applicationLaunches = 0
|
|
38
|
+
}, {
|
|
39
|
+
logger,
|
|
40
|
+
fetch
|
|
41
|
+
}) => {
|
|
42
|
+
const configData = await (0, _readFromIndexedDb.default)(logger);
|
|
43
|
+
const {
|
|
44
|
+
browser,
|
|
45
|
+
ecid,
|
|
46
|
+
edgeDomain,
|
|
47
|
+
edgeBasePath,
|
|
48
|
+
datastreamId,
|
|
49
|
+
datasetId
|
|
50
|
+
} = configData || {};
|
|
51
|
+
let customActionData = {};
|
|
52
|
+
if (actionLabel) {
|
|
53
|
+
customActionData = {
|
|
54
|
+
customAction: {
|
|
55
|
+
actionID: actionLabel
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
const requiredFields = [{
|
|
60
|
+
name: "browser",
|
|
61
|
+
errorField: "Browser"
|
|
62
|
+
}, {
|
|
63
|
+
name: "ecid",
|
|
64
|
+
errorField: "ECID"
|
|
65
|
+
}, {
|
|
66
|
+
name: "edgeDomain",
|
|
67
|
+
errorField: "Edge domain"
|
|
68
|
+
}, {
|
|
69
|
+
name: "edgeBasePath",
|
|
70
|
+
errorField: "Edge base path"
|
|
71
|
+
}, {
|
|
72
|
+
name: "datastreamId",
|
|
73
|
+
errorField: "Datastream ID"
|
|
74
|
+
}, {
|
|
75
|
+
name: "datasetId",
|
|
76
|
+
errorField: "Dataset ID"
|
|
77
|
+
}];
|
|
78
|
+
try {
|
|
79
|
+
for (const field of requiredFields) {
|
|
80
|
+
if (!configData[field.name]) {
|
|
81
|
+
throw new Error("Cannot send tracking call. " + field.errorField + " is missing.");
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
const url = "https://" + edgeDomain + "/" + edgeBasePath + "/v1/interact?configId=" + datastreamId;
|
|
85
|
+
|
|
86
|
+
/** @type {TrackingDataPayload} */
|
|
87
|
+
const payload = {
|
|
88
|
+
events: [{
|
|
89
|
+
xdm: {
|
|
90
|
+
identityMap: {
|
|
91
|
+
ECID: [{
|
|
92
|
+
id: ecid
|
|
93
|
+
}]
|
|
94
|
+
},
|
|
95
|
+
timestamp: new Date().toISOString(),
|
|
96
|
+
pushNotificationTracking: {
|
|
97
|
+
...customActionData,
|
|
98
|
+
pushProviderMessageID: (0, _uuid.default)(),
|
|
99
|
+
pushProvider: browser.toLowerCase()
|
|
100
|
+
},
|
|
101
|
+
application: {
|
|
102
|
+
launches: {
|
|
103
|
+
value: applicationLaunches
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
eventType: actionLabel ? "pushTracking.customAction" : "pushTracking.applicationOpened",
|
|
107
|
+
_experience: {
|
|
108
|
+
...xdm._experience,
|
|
109
|
+
customerJourneyManagement: {
|
|
110
|
+
...xdm._experience.customerJourneyManagement,
|
|
111
|
+
pushChannelContext: {
|
|
112
|
+
platform: "web"
|
|
113
|
+
},
|
|
114
|
+
messageProfile: {
|
|
115
|
+
channel: {
|
|
116
|
+
_id: "https://ns.adobe.com/xdm/channels/push"
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
},
|
|
122
|
+
meta: {
|
|
123
|
+
collect: {
|
|
124
|
+
datasetId
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}]
|
|
128
|
+
};
|
|
129
|
+
const response = await fetch(url, {
|
|
130
|
+
method: "POST",
|
|
131
|
+
headers: {
|
|
132
|
+
"content-type": "text/plain; charset=UTF-8"
|
|
133
|
+
},
|
|
134
|
+
body: JSON.stringify(payload)
|
|
135
|
+
});
|
|
136
|
+
if (!response.ok) {
|
|
137
|
+
logger.error("Tracking call failed: ", response.status, response.statusText);
|
|
138
|
+
return false;
|
|
139
|
+
}
|
|
140
|
+
return true;
|
|
141
|
+
} catch (error) {
|
|
142
|
+
logger.error("Error sending tracking call:", error);
|
|
143
|
+
return false;
|
|
144
|
+
}
|
|
145
|
+
};
|
|
146
|
+
exports.default = _default;
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _serviceWorkerNotificationClickListener = require("./helpers/serviceWorkerNotificationClickListener.js");
|
|
4
|
+
var _serviceWorkerPushListener = require("./helpers/serviceWorkerPushListener.js");
|
|
5
|
+
var _makeSendServiceWorkerTrackingData = require("./request/makeSendServiceWorkerTrackingData.js");
|
|
6
|
+
/*
|
|
7
|
+
Copyright 2025 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
|
+
|
|
18
|
+
/** @import { ServiceWorkerLogger } from './types.js' */
|
|
19
|
+
|
|
20
|
+
/* eslint-disable no-console */
|
|
21
|
+
/* eslint-disable no-underscore-dangle */
|
|
22
|
+
|
|
23
|
+
// @ts-check
|
|
24
|
+
/// <reference lib="webworker" />
|
|
25
|
+
|
|
26
|
+
/** @type {ServiceWorkerGlobalScope} */
|
|
27
|
+
// @ts-ignore
|
|
28
|
+
const sw = self;
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* @type {ServiceWorkerLogger}
|
|
32
|
+
*/
|
|
33
|
+
const logger = {
|
|
34
|
+
namespace: "[alloy][pushNotificationWorker]",
|
|
35
|
+
info: (...args) => console.log(logger.namespace, ...args),
|
|
36
|
+
error: (...args) => console.error(logger.namespace, ...args)
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* @listens install
|
|
41
|
+
*/
|
|
42
|
+
sw.addEventListener("install", () => {
|
|
43
|
+
sw.skipWaiting();
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* @listens activate
|
|
48
|
+
* @param {ExtendableEvent} event
|
|
49
|
+
*/
|
|
50
|
+
sw.addEventListener("activate", event => {
|
|
51
|
+
event.waitUntil(sw.clients.claim());
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* @listens push
|
|
56
|
+
* @param {PushEvent} event
|
|
57
|
+
* @returns {Promise<void>}
|
|
58
|
+
*/
|
|
59
|
+
sw.addEventListener("push", event => (0, _serviceWorkerPushListener.default)({
|
|
60
|
+
event,
|
|
61
|
+
logger,
|
|
62
|
+
sw
|
|
63
|
+
}));
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* @listens notificationclick
|
|
67
|
+
* @param {NotificationEvent} event
|
|
68
|
+
*/
|
|
69
|
+
sw.addEventListener("notificationclick", event => (0, _serviceWorkerNotificationClickListener.default)({
|
|
70
|
+
event,
|
|
71
|
+
sw,
|
|
72
|
+
logger,
|
|
73
|
+
fetch
|
|
74
|
+
}));
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* @listens notificationclose
|
|
78
|
+
* @param {NotificationEvent} event
|
|
79
|
+
*/
|
|
80
|
+
sw.addEventListener("notificationclose", event => {
|
|
81
|
+
const data = event.notification.data;
|
|
82
|
+
(0, _makeSendServiceWorkerTrackingData.default)({
|
|
83
|
+
xdm: data._xdm.mixins,
|
|
84
|
+
actionLabel: "Dismiss"
|
|
85
|
+
}, {
|
|
86
|
+
logger,
|
|
87
|
+
fetch
|
|
88
|
+
}).catch(error => {
|
|
89
|
+
logger.error("Failed to send tracking call:", error);
|
|
90
|
+
});
|
|
91
|
+
});
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.Types = void 0;
|
|
4
|
+
/** @import { Identity } from '../../utils/request/types.js' */
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* @typedef {Object} PushSubscription
|
|
8
|
+
* @property {string} endpoint - The push service endpoint URL
|
|
9
|
+
* @property {Object} keys - The subscription keys object
|
|
10
|
+
* @property {string|null} keys.p256dh - The P-256 ECDH public key as an ArrayBuffer, or null if not available
|
|
11
|
+
* @property {string|null} keys.auth - The authentication secret as an ArrayBuffer, or null if not available
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* @typedef {Object} CustomerJourneyManagement
|
|
16
|
+
* @property {Object} messageExecution
|
|
17
|
+
* @property {string} messageExecution.messageExecutionID
|
|
18
|
+
* @property {string} messageExecution.messageID
|
|
19
|
+
* @property {string} messageExecution.messageType
|
|
20
|
+
* @property {string} messageExecution.campaignID
|
|
21
|
+
* @property {string} messageExecution.campaignVersionID
|
|
22
|
+
* @property {string} messageExecution.batchInstanceID
|
|
23
|
+
* @property {Object} [pushChannelContext]
|
|
24
|
+
* @property {"web"} [pushChannelContext.platform]
|
|
25
|
+
* @property {Object} [messageProfile]
|
|
26
|
+
* @property {Object} [messageProfile.channel]
|
|
27
|
+
* @property {string} [messageProfile.channel._id]
|
|
28
|
+
*/
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* @typedef {Object} Decisioning
|
|
32
|
+
* @property {Object[]} propositions
|
|
33
|
+
* @property {Object} propositions[].scopeDetails
|
|
34
|
+
* @property {string} propositions[].scopeDetails.correlationID
|
|
35
|
+
*/
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* @typedef {Object} XdmTrackingContext
|
|
39
|
+
* @property {Object} _experience
|
|
40
|
+
* @property {CustomerJourneyManagement} _experience.customerJourneyManagement
|
|
41
|
+
* @property {Decisioning} _experience.decisioning
|
|
42
|
+
*/
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* @typedef {Object} PushNotificationData
|
|
46
|
+
* @property {Object} web
|
|
47
|
+
* @property {string} web.title
|
|
48
|
+
* @property {string} web.body
|
|
49
|
+
* @property {string|null} web.media
|
|
50
|
+
* @property {Object} web.interaction
|
|
51
|
+
* @property {string} web.interaction.type
|
|
52
|
+
* @property {string|null} web.interaction.uri
|
|
53
|
+
* @property {Object} web.actions
|
|
54
|
+
* @property {Object[]} web.actions.buttons
|
|
55
|
+
* @property {string} web.actions.buttons[].label
|
|
56
|
+
* @property {string} web.actions.buttons[].type
|
|
57
|
+
* @property {string} web.actions.buttons[].uri
|
|
58
|
+
* @property {string} web.priority
|
|
59
|
+
* @property {Object} web._xdm
|
|
60
|
+
* @property {XdmTrackingContext} web._xdm.mixins
|
|
61
|
+
*/
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* @typedef {Object} TrackingDataPayload
|
|
65
|
+
* @property {Object[]} events
|
|
66
|
+
* @property {Object} events[].xdm
|
|
67
|
+
* @property {Object} events[].xdm.identityMap
|
|
68
|
+
* @property {Object[]} events[].xdm.identityMap.ECID
|
|
69
|
+
* @property {string} events[].xdm.identityMap.ECID[].id
|
|
70
|
+
* @property {string} events[].xdm.timestamp
|
|
71
|
+
* @property {Object} events[].xdm.pushNotificationTracking
|
|
72
|
+
* @property {string} events[].xdm.pushNotificationTracking.pushProviderMessageID
|
|
73
|
+
* @property {string} events[].xdm.pushNotificationTracking.pushProvider
|
|
74
|
+
* @property {Object} [events[].xdm.pushNotificationTracking.customAction]
|
|
75
|
+
* @property {string} [events[].xdm.pushNotificationTracking.customAction.actionID]
|
|
76
|
+
* @property {Object} events[].xdm.application
|
|
77
|
+
* @property {Object} events[].xdm.application.launches
|
|
78
|
+
* @property {number} events[].xdm.application.launches.value
|
|
79
|
+
* @property {string} events[].xdm.eventType
|
|
80
|
+
* @property {Object} events[].xdm._experience
|
|
81
|
+
* @property {CustomerJourneyManagement} events[].xdm._experience.customerJourneyManagement
|
|
82
|
+
* @property {Decisioning} events[].xdm._experience.decisioning
|
|
83
|
+
* @property {Object} events[].meta
|
|
84
|
+
* @property {Object} events[].meta.collect
|
|
85
|
+
* @property {string} events[].meta.collect.datasetId
|
|
86
|
+
*/
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* @typedef {Object} ServiceWorkerLogger
|
|
90
|
+
* @property {string} namespace
|
|
91
|
+
* @property {(...args: any[]) => void} info
|
|
92
|
+
* @property {(...args: any[]) => void} error
|
|
93
|
+
*/
|
|
94
|
+
|
|
95
|
+
const Types = exports.Types = {};
|
|
@@ -14,4 +14,4 @@ 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 = exports.default = "2.
|
|
17
|
+
var _default = exports.default = "2.30.0-beta.0";
|
|
@@ -42,6 +42,12 @@ Object.defineProperty(exports, "personalization", {
|
|
|
42
42
|
return _index6.default;
|
|
43
43
|
}
|
|
44
44
|
});
|
|
45
|
+
Object.defineProperty(exports, "pushNotifications", {
|
|
46
|
+
enumerable: true,
|
|
47
|
+
get: function () {
|
|
48
|
+
return _index0.default;
|
|
49
|
+
}
|
|
50
|
+
});
|
|
45
51
|
Object.defineProperty(exports, "rulesEngine", {
|
|
46
52
|
enumerable: true,
|
|
47
53
|
get: function () {
|
|
@@ -62,4 +68,5 @@ var _index5 = require("../components/MediaAnalyticsBridge/index.js");
|
|
|
62
68
|
var _index6 = require("../components/Personalization/index.js");
|
|
63
69
|
var _index7 = require("../components/RulesEngine/index.js");
|
|
64
70
|
var _index8 = require("../components/StreamingMedia/index.js");
|
|
65
|
-
var _index9 = require("../components/Advertising/index.js");
|
|
71
|
+
var _index9 = require("../components/Advertising/index.js");
|
|
72
|
+
var _index0 = require("../components/PushNotifications/index.js");
|