@adobe/alloy 2.18.0 → 2.19.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/libEs5/baseCode/index.js +2 -12
- package/libEs5/components/ActivityCollector/attachClickActivityCollector.js +9 -12
- package/libEs5/components/ActivityCollector/configValidators.js +1 -4
- package/libEs5/components/ActivityCollector/createGetLinkDetails.js +7 -17
- package/libEs5/components/ActivityCollector/createLinkClick.js +3 -8
- package/libEs5/components/ActivityCollector/getLinkName.js +8 -26
- package/libEs5/components/ActivityCollector/getLinkRegion.js +2 -16
- package/libEs5/components/ActivityCollector/index.js +8 -18
- package/libEs5/components/ActivityCollector/utils.js +3 -40
- package/libEs5/components/Audiences/index.js +2 -8
- package/libEs5/components/Audiences/injectProcessDestinations.js +20 -19
- package/libEs5/components/Audiences/injectProcessResponse.js +0 -5
- package/libEs5/components/Context/createComponent.js +0 -4
- package/libEs5/components/Context/implementationDetails.js +0 -5
- package/libEs5/components/Context/index.js +12 -19
- package/libEs5/components/Context/injectDevice.js +3 -20
- package/libEs5/components/Context/injectEnvironment.js +1 -8
- package/libEs5/components/Context/injectHighEntropyUserAgentHints.js +14 -21
- package/libEs5/components/Context/injectPlaceContext.js +2 -8
- package/libEs5/components/Context/injectTimestamp.js +0 -3
- package/libEs5/components/Context/injectWeb.js +0 -3
- package/libEs5/components/DataCollector/index.js +25 -35
- package/libEs5/components/DataCollector/validateApplyResponse.js +6 -4
- package/libEs5/components/DataCollector/validateUserEventOptions.js +5 -6
- package/libEs5/components/EventMerge/createComponent.js +0 -2
- package/libEs5/components/EventMerge/createEventMergeId.js +0 -3
- package/libEs5/components/EventMerge/index.js +1 -4
- package/libEs5/components/Identity/addEcidQueryToPayload.js +0 -3
- package/libEs5/components/Identity/addEcidToPayload.js +0 -3
- package/libEs5/components/Identity/appendIdentityToUrl/appendIdentityToUrlOptionsValidator.js +0 -5
- package/libEs5/components/Identity/appendIdentityToUrl/injectAppendIdentityToUrl.js +5 -19
- package/libEs5/components/Identity/configValidators.js +1 -2
- package/libEs5/components/Identity/constants/authState.js +1 -1
- package/libEs5/components/Identity/constants/defaultIdSyncTtlMinutes.js +0 -2
- package/libEs5/components/Identity/createComponent.js +16 -22
- package/libEs5/components/Identity/createLegacyIdentity.js +5 -19
- package/libEs5/components/Identity/getEcidFromResponse.js +0 -4
- package/libEs5/components/Identity/getIdentity/createGetIdentity.js +5 -9
- package/libEs5/components/Identity/getIdentity/createIdentityRequest.js +1 -4
- package/libEs5/components/Identity/getIdentity/createIdentityRequestPayload.js +0 -3
- package/libEs5/components/Identity/getIdentity/getIdentityOptionsValidator.js +0 -5
- package/libEs5/components/Identity/index.js +8 -29
- package/libEs5/components/Identity/injectAddLegacyEcidToPayload.js +1 -5
- package/libEs5/components/Identity/injectAddQueryStringIdentityToPayload.js +22 -28
- package/libEs5/components/Identity/injectAwaitIdentityCookie.js +7 -8
- package/libEs5/components/Identity/injectEnsureSingleIdentity.js +17 -20
- package/libEs5/components/Identity/injectHandleResponseForIdSyncs.js +0 -2
- package/libEs5/components/Identity/injectProcessIdSyncs.js +2 -7
- package/libEs5/components/Identity/injectSetDomainForInitialIdentityPayload.js +1 -4
- package/libEs5/components/Identity/visitorService/awaitVisitorOptIn.js +0 -3
- package/libEs5/components/Identity/visitorService/getVisitor.js +0 -3
- package/libEs5/components/Identity/visitorService/injectGetEcidFromVisitor.js +2 -7
- package/libEs5/components/LibraryInfo/index.js +13 -21
- package/libEs5/components/MachineLearning/index.js +1 -3
- package/libEs5/components/MachineLearning/processResponse.js +0 -2
- package/libEs5/components/Personalization/constants/eventType.js +1 -1
- package/libEs5/components/Personalization/constants/loggerMessage.js +0 -1
- package/libEs5/components/Personalization/constants/propositionEventType.js +1 -1
- package/libEs5/components/Personalization/constants/schema.js +1 -1
- package/libEs5/components/Personalization/constants/scopeType.js +1 -1
- package/libEs5/components/Personalization/constants/surface.js +1 -1
- package/libEs5/components/Personalization/createApplyPropositions.js +47 -49
- package/libEs5/components/Personalization/createClickStorage.js +1 -10
- package/libEs5/components/Personalization/createCollect.js +5 -15
- package/libEs5/components/Personalization/createComponent.js +40 -42
- package/libEs5/components/Personalization/createFetchDataHandler.js +81 -26
- package/libEs5/components/Personalization/createGetPageLocation.js +0 -2
- package/libEs5/components/Personalization/createOnClickHandler.js +8 -18
- package/libEs5/components/Personalization/{utils/composePersonalizationResultingObject.js → createPendingNotificationsHandler.js} +9 -18
- package/libEs5/components/Personalization/createPersonalizationDetails.js +24 -30
- package/libEs5/components/Personalization/createSetTargetMigration.js +0 -5
- package/libEs5/components/Personalization/createViewCacheManager.js +54 -28
- package/libEs5/components/Personalization/createViewChangeHandler.js +25 -37
- package/libEs5/components/Personalization/dom-actions/action.js +6 -37
- package/libEs5/components/Personalization/dom-actions/addNonceToInlineStyleElements.js +1 -13
- package/libEs5/components/Personalization/dom-actions/appendHtml.js +0 -7
- package/libEs5/components/Personalization/dom-actions/clicks/collectClicks.js +16 -27
- package/{libEs6/components/Personalization/utils/composePersonalizationResultingObject.js → libEs5/components/Personalization/dom-actions/createPreprocess.js} +14 -14
- package/libEs5/components/Personalization/dom-actions/dom/createFragment.js +0 -4
- package/libEs5/components/Personalization/dom-actions/dom/getAttribute.js +0 -2
- package/libEs5/components/Personalization/dom-actions/dom/getChildNodes.js +0 -5
- package/libEs5/components/Personalization/dom-actions/dom/getChildren.js +0 -5
- package/libEs5/components/Personalization/dom-actions/dom/getElementById.js +0 -3
- package/libEs5/components/Personalization/dom-actions/dom/getFirstChild.js +0 -2
- package/libEs5/components/Personalization/dom-actions/dom/getNextSibling.js +0 -2
- package/libEs5/components/Personalization/dom-actions/dom/getNonce.js +4 -10
- package/libEs5/components/Personalization/dom-actions/dom/getParent.js +0 -2
- package/libEs5/components/Personalization/dom-actions/dom/helperForEq.js +1 -6
- package/libEs5/components/Personalization/dom-actions/dom/index.js +0 -14
- package/libEs5/components/Personalization/dom-actions/dom/insertAfter.js +0 -6
- package/libEs5/components/Personalization/dom-actions/dom/insertBefore.js +0 -5
- package/libEs5/components/Personalization/dom-actions/dom/matchesSelectorWithEq.js +6 -11
- package/libEs5/components/Personalization/dom-actions/dom/removeAttribute.js +0 -2
- package/libEs5/components/Personalization/dom-actions/dom/selectNodesWithEq.js +16 -36
- package/libEs5/components/Personalization/dom-actions/dom/setAttribute.js +0 -2
- package/libEs5/components/Personalization/dom-actions/dom/setStyle.js +0 -4
- package/libEs5/components/Personalization/dom-actions/images.js +1 -11
- package/libEs5/components/Personalization/dom-actions/index.js +1 -10
- package/libEs5/components/Personalization/dom-actions/initDomActionsModules.js +2 -14
- package/libEs5/components/Personalization/dom-actions/insertHtmlAfter.js +0 -6
- package/libEs5/components/Personalization/dom-actions/insertHtmlBefore.js +0 -6
- package/libEs5/components/Personalization/dom-actions/prependHtml.js +4 -12
- package/libEs5/components/Personalization/dom-actions/rearrangeChildren.js +1 -6
- package/libEs5/components/Personalization/dom-actions/remapCustomCodeOffers.js +2 -8
- package/libEs5/components/Personalization/dom-actions/remapHeadOffers.js +5 -15
- package/libEs5/components/Personalization/dom-actions/replaceHtml.js +0 -4
- package/libEs5/components/Personalization/dom-actions/scripts.js +13 -35
- package/libEs5/components/Personalization/dom-actions/setAttributes.js +0 -3
- package/libEs5/components/Personalization/dom-actions/setHtml.js +1 -6
- package/libEs5/components/Personalization/dom-actions/setStyles.js +12 -8
- package/libEs5/components/Personalization/dom-actions/setText.js +0 -2
- package/libEs5/components/Personalization/dom-actions/swapImage.js +6 -9
- package/libEs5/components/Personalization/event.js +2 -10
- package/libEs5/components/Personalization/flicker/index.js +17 -31
- package/libEs5/components/Personalization/handlers/createProcessDomAction.js +54 -0
- package/libEs5/components/Personalization/handlers/createProcessHtmlContent.js +38 -0
- package/libEs5/components/Personalization/handlers/createProcessPropositions.js +195 -0
- package/libEs5/components/Personalization/handlers/createProcessRedirect.js +42 -0
- package/libEs5/components/Personalization/handlers/injectCreateProposition.js +118 -0
- package/libEs5/components/Personalization/{dom-actions/clicks/index.js → handlers/processDefaultContent.js} +7 -5
- package/libEs5/components/Personalization/index.js +72 -80
- package/libEs5/components/Personalization/utils/addRenderAttemptedToDecisions.js +1 -4
- package/libEs5/components/Personalization/utils/createAsyncArray.js +39 -0
- package/libEs5/components/Personalization/utils/isAuthoringModeEnabled.js +0 -2
- package/libEs5/components/Personalization/utils/isPageWideScope.js +0 -4
- package/libEs5/components/Personalization/utils/surfaceUtils.js +1 -27
- package/libEs5/components/Personalization/validateApplyPropositionsOptions.js +5 -8
- package/libEs5/components/Privacy/computeConsentHash.js +11 -8
- package/libEs5/components/Privacy/createComponent.js +24 -26
- package/libEs5/components/Privacy/createConsentHashStore.js +14 -15
- package/libEs5/components/Privacy/createConsentRequest.js +1 -4
- package/libEs5/components/Privacy/createConsentRequestPayload.js +0 -5
- package/libEs5/components/Privacy/createStoredConsent.js +2 -6
- package/libEs5/components/Privacy/index.js +5 -15
- package/libEs5/components/Privacy/injectSendSetConsentRequest.js +7 -12
- package/libEs5/components/Privacy/parseConsentCookie.js +3 -13
- package/libEs5/components/Privacy/validateSetConsentOptions.js +0 -4
- package/libEs5/constants/apiVersion.js +0 -1
- package/libEs5/constants/browser.js +1 -1
- package/libEs5/constants/consentPurpose.js +1 -1
- package/libEs5/constants/consentStatus.js +1 -1
- package/libEs5/constants/cookieNameKey.js +1 -1
- package/libEs5/constants/cookieNamePrefix.js +0 -1
- package/libEs5/constants/coreCommands.js +1 -1
- package/libEs5/constants/debugQueryParam.js +0 -1
- package/libEs5/constants/domain.js +1 -1
- package/libEs5/constants/ecidNamespace.js +0 -1
- package/libEs5/constants/edgeBasePath.js +0 -1
- package/libEs5/constants/elementAttribute.js +1 -1
- package/libEs5/constants/highEntropyUserAgentClientHints.js +0 -1
- package/libEs5/constants/httpHeaderNames.js +1 -1
- package/libEs5/constants/httpStatusCode.js +1 -1
- package/libEs5/constants/identityMapAuthenticatedState.js +0 -1
- package/libEs5/constants/legacyCookies.js +1 -1
- package/libEs5/constants/libraryName.js +0 -1
- package/libEs5/constants/libraryVersion.js +1 -2
- package/libEs5/constants/namespace.js +0 -1
- package/libEs5/constants/pageWideScope.js +0 -1
- package/libEs5/constants/queryStringIdentityParam.js +0 -1
- package/libEs5/constants/shadowSeparator.js +0 -1
- package/libEs5/constants/tagName.js +1 -1
- package/libEs5/core/buildAndValidateConfig.js +21 -32
- package/libEs5/core/componentCreators.js +0 -12
- package/libEs5/core/config/createConfig.js +1 -3
- package/libEs5/core/config/createCoreConfigs.js +0 -7
- package/libEs5/core/consent/createConsent.js +1 -11
- package/libEs5/core/consent/createConsentStateMachine.js +1 -18
- package/libEs5/core/createComponentRegistry.js +4 -14
- package/libEs5/core/createCookieTransfer.js +9 -18
- package/libEs5/core/createEvent.js +41 -32
- package/libEs5/core/createEventManager.js +27 -33
- package/libEs5/core/createInstanceFunction.js +0 -2
- package/libEs5/core/createLifecycle.js +14 -14
- package/libEs5/core/createLogController.js +5 -17
- package/libEs5/core/createLogger.js +3 -17
- package/libEs5/core/edgeNetwork/handleRequestFailure.js +0 -3
- package/libEs5/core/edgeNetwork/injectApplyResponse.js +12 -18
- package/libEs5/core/edgeNetwork/injectExtractEdgeInfo.js +4 -8
- package/libEs5/core/edgeNetwork/injectGetLocationHint.js +1 -11
- package/libEs5/core/edgeNetwork/injectProcessWarningsAndErrors.js +6 -11
- package/libEs5/core/edgeNetwork/injectSendEdgeNetworkRequest.js +18 -26
- package/libEs5/core/edgeNetwork/mergeLifecycleResponses.js +11 -10
- package/libEs5/core/index.js +12 -54
- package/libEs5/core/initializeComponents.js +5 -10
- package/libEs5/core/injectCreateResponse.js +8 -16
- package/libEs5/core/injectExecuteCommand.js +8 -19
- package/libEs5/core/injectHandleError.js +4 -8
- package/libEs5/core/injectShouldTransferCookie.js +1 -5
- package/libEs5/core/network/getRequestRetryDelay.js +10 -17
- package/libEs5/core/network/injectSendNetworkRequest.js +20 -22
- package/libEs5/core/network/isRequestRetryable.js +5 -7
- package/libEs5/core/network/requestMethods/injectSendBeaconRequest.js +5 -8
- package/libEs5/core/network/requestMethods/injectSendFetchRequest.js +0 -2
- package/libEs5/core/network/requestMethods/injectSendXhrRequest.js +0 -5
- package/libEs5/core/validateCommandOptions.js +5 -9
- package/libEs5/index.js +7 -15
- package/libEs5/utils/areThirdPartyCookiesSupportedByDefault.js +1 -5
- package/libEs5/utils/assign.js +0 -2
- package/libEs5/utils/assignIf.js +0 -4
- package/libEs5/utils/clone.js +0 -3
- package/libEs5/utils/cookieJar.js +0 -2
- package/libEs5/utils/crc32.js +0 -8
- package/libEs5/utils/createCallbackAggregator.js +0 -4
- package/libEs5/utils/createLoggingCookieJar.js +1 -6
- package/libEs5/utils/createMerger.js +0 -4
- package/libEs5/utils/createTaskQueue.js +0 -7
- package/libEs5/utils/deduplicateArray.js +32 -0
- package/libEs5/utils/deepAssign.js +2 -10
- package/libEs5/utils/defer.js +0 -3
- package/libEs5/utils/dom/appendNode.js +0 -2
- package/libEs5/utils/dom/awaitSelector.js +1 -29
- package/libEs5/utils/dom/createNode.js +1 -5
- package/libEs5/utils/dom/index.js +0 -8
- package/libEs5/utils/dom/isShadowSelector.js +0 -3
- package/libEs5/utils/dom/matchesSelector.js +2 -5
- package/libEs5/utils/dom/querySelectorAll.js +3 -6
- package/libEs5/utils/dom/removeNode.js +0 -4
- package/libEs5/utils/dom/selectNodes.js +0 -8
- package/libEs5/utils/dom/selectNodesWithShadow.js +6 -20
- package/libEs5/utils/endsWith.js +0 -3
- package/libEs5/utils/filterObject.js +13 -17
- package/libEs5/utils/find.js +0 -5
- package/libEs5/utils/fireImage.js +2 -7
- package/libEs5/utils/flatMap.js +0 -2
- package/libEs5/utils/getApexDomain.js +4 -8
- package/libEs5/utils/getBrowser.js +11 -11
- package/libEs5/utils/getLastArrayItems.js +0 -3
- package/libEs5/utils/getNamespacedCookieName.js +0 -4
- package/libEs5/utils/groupBy.js +0 -5
- package/libEs5/utils/includes.js +0 -3
- package/libEs5/utils/index.js +7 -55
- package/libEs5/utils/injectDoesIdentityCookieExist.js +0 -6
- package/libEs5/utils/injectFireReferrerHideableImage.js +21 -29
- package/libEs5/utils/injectStorage.js +1 -7
- package/libEs5/utils/intersection.js +0 -4
- package/libEs5/utils/isBlankString.js +0 -4
- package/libEs5/utils/isBoolean.js +0 -3
- package/libEs5/utils/isEmptyObject.js +0 -4
- package/libEs5/utils/isFunction.js +0 -3
- package/libEs5/utils/isInteger.js +0 -4
- package/libEs5/utils/isNamespacedCookieName.js +0 -5
- package/libEs5/utils/isNil.js +0 -3
- package/libEs5/utils/isNonEmptyArray.js +0 -3
- package/libEs5/utils/isNonEmptyString.js +0 -4
- package/libEs5/utils/isNumber.js +0 -3
- package/libEs5/utils/isObject.js +11 -5
- package/libEs5/utils/isString.js +0 -3
- package/libEs5/utils/isUnique.js +0 -7
- package/libEs5/utils/isValidRegExp.js +0 -3
- package/libEs5/utils/memoize.js +0 -5
- package/libEs5/utils/noop.js +0 -3
- package/libEs5/utils/padStart.js +0 -6
- package/libEs5/utils/prepareConfigOverridesForEdge.js +13 -21
- package/libEs5/utils/querystring.js +0 -2
- package/libEs5/utils/request/createAddIdentity.js +0 -2
- package/libEs5/utils/request/createDataCollectionRequest.js +1 -6
- package/libEs5/utils/request/createDataCollectionRequestPayload.js +0 -8
- package/libEs5/utils/request/createGetAssuranceValidationTokenParams.js +2 -11
- package/libEs5/utils/request/createHasIdentity.js +0 -2
- package/libEs5/utils/request/createRequest.js +3 -6
- package/libEs5/utils/request/createRequestParams.js +4 -12
- package/libEs5/utils/request/createRequestPayload.js +2 -7
- package/libEs5/utils/request/index.js +0 -8
- package/libEs5/utils/sanitizeOrgIdForCookieName.js +0 -2
- package/libEs5/utils/stackError.js +1 -6
- package/libEs5/utils/startsWith.js +0 -3
- package/libEs5/utils/stringToBoolean.js +0 -3
- package/libEs5/utils/toArray.js +0 -4
- package/libEs5/utils/toError.js +0 -3
- package/libEs5/utils/toISOStringLocal.js +3 -7
- package/libEs5/utils/toInteger.js +2 -8
- package/libEs5/utils/updateErrorMessage.js +3 -5
- package/libEs5/utils/uuid.js +0 -2
- package/libEs5/utils/validateConfigOverride.js +0 -3
- package/libEs5/utils/validateIdentityMap.js +0 -4
- package/libEs5/utils/validation/booleanValidator.js +0 -4
- package/libEs5/utils/validation/callbackValidator.js +0 -4
- package/libEs5/utils/validation/createAnyOfValidator.js +0 -5
- package/libEs5/utils/validation/createArrayOfValidator.js +0 -6
- package/libEs5/utils/validation/createDefaultValidator.js +0 -3
- package/libEs5/utils/validation/createDeprecatedValidator.js +13 -21
- package/libEs5/utils/validation/createLiteralValidator.js +0 -3
- package/libEs5/utils/validation/createMapOfValuesValidator.js +0 -9
- package/libEs5/utils/validation/createMinimumValidator.js +0 -3
- package/libEs5/utils/validation/createNoUnknownFieldsValidator.js +0 -4
- package/libEs5/utils/validation/createNonEmptyValidator.js +0 -6
- package/libEs5/utils/validation/createObjectOfValidator.js +2 -10
- package/libEs5/utils/validation/createUniqueItemsValidator.js +0 -4
- package/libEs5/utils/validation/createUniqueValidator.js +0 -3
- package/libEs5/utils/validation/domainValidator.js +1 -4
- package/libEs5/utils/validation/index.js +76 -59
- package/libEs5/utils/validation/integerValidator.js +0 -4
- package/libEs5/utils/validation/numberValidator.js +0 -4
- package/libEs5/utils/validation/regexpValidator.js +0 -4
- package/libEs5/utils/validation/requiredValidator.js +0 -3
- package/libEs5/utils/validation/stringValidator.js +0 -4
- package/libEs5/utils/validation/utils.js +7 -21
- package/libEs5/utils/values.js +0 -3
- package/libEs6/baseCode/index.js +3 -8
- package/libEs6/components/ActivityCollector/attachClickActivityCollector.js +5 -6
- package/libEs6/components/ActivityCollector/configValidators.js +1 -0
- package/libEs6/components/ActivityCollector/createGetLinkDetails.js +1 -8
- package/libEs6/components/ActivityCollector/createLinkClick.js +0 -3
- package/libEs6/components/ActivityCollector/getLinkName.js +8 -23
- package/libEs6/components/ActivityCollector/getLinkRegion.js +2 -12
- package/libEs6/components/ActivityCollector/index.js +3 -6
- package/libEs6/components/ActivityCollector/utils.js +2 -29
- package/libEs6/components/Audiences/index.js +1 -2
- package/libEs6/components/Audiences/injectProcessDestinations.js +3 -6
- package/libEs6/components/Audiences/injectProcessResponse.js +1 -2
- package/libEs6/components/Context/createComponent.js +1 -2
- package/libEs6/components/Context/index.js +3 -3
- package/libEs6/components/Context/injectDevice.js +1 -16
- package/libEs6/components/Context/injectEnvironment.js +1 -4
- package/libEs6/components/Context/injectHighEntropyUserAgentHints.js +2 -5
- package/libEs6/components/Context/injectPlaceContext.js +2 -5
- package/libEs6/components/Context/injectTimestamp.js +1 -0
- package/libEs6/components/Context/injectWeb.js +1 -0
- package/libEs6/components/DataCollector/index.js +5 -12
- package/libEs6/components/DataCollector/validateApplyResponse.js +6 -1
- package/libEs6/components/DataCollector/validateUserEventOptions.js +6 -2
- package/libEs6/components/EventMerge/createComponent.js +1 -0
- package/libEs6/components/EventMerge/createEventMergeId.js +1 -0
- package/libEs6/components/EventMerge/index.js +1 -2
- package/libEs6/components/Identity/addEcidQueryToPayload.js +1 -0
- package/libEs6/components/Identity/addEcidToPayload.js +1 -0
- package/libEs6/components/Identity/appendIdentityToUrl/appendIdentityToUrlOptionsValidator.js +1 -1
- package/libEs6/components/Identity/appendIdentityToUrl/injectAppendIdentityToUrl.js +0 -4
- package/libEs6/components/Identity/configValidators.js +1 -0
- package/libEs6/components/Identity/constants/authState.js +1 -0
- package/libEs6/components/Identity/constants/defaultIdSyncTtlMinutes.js +1 -0
- package/libEs6/components/Identity/createComponent.js +5 -7
- package/libEs6/components/Identity/createLegacyIdentity.js +0 -10
- package/libEs6/components/Identity/getEcidFromResponse.js +1 -0
- package/libEs6/components/Identity/getIdentity/createGetIdentity.js +1 -0
- package/libEs6/components/Identity/getIdentity/createIdentityRequest.js +1 -3
- package/libEs6/components/Identity/getIdentity/createIdentityRequestPayload.js +1 -0
- package/libEs6/components/Identity/getIdentity/getIdentityOptionsValidator.js +1 -1
- package/libEs6/components/Identity/index.js +1 -2
- package/libEs6/components/Identity/injectAddLegacyEcidToPayload.js +1 -1
- package/libEs6/components/Identity/injectAddQueryStringIdentityToPayload.js +5 -7
- package/libEs6/components/Identity/injectAwaitIdentityCookie.js +6 -3
- package/libEs6/components/Identity/injectEnsureSingleIdentity.js +12 -11
- package/libEs6/components/Identity/injectHandleResponseForIdSyncs.js +1 -0
- package/libEs6/components/Identity/injectProcessIdSyncs.js +0 -4
- package/libEs6/components/Identity/injectSetDomainForInitialIdentityPayload.js +1 -0
- package/libEs6/components/Identity/visitorService/awaitVisitorOptIn.js +1 -0
- package/libEs6/components/Identity/visitorService/getVisitor.js +1 -0
- package/libEs6/components/Identity/visitorService/injectGetEcidFromVisitor.js +1 -2
- package/libEs6/components/LibraryInfo/index.js +3 -6
- package/libEs6/components/MachineLearning/index.js +1 -2
- package/libEs6/components/MachineLearning/processResponse.js +1 -0
- package/libEs6/components/Personalization/constants/eventType.js +1 -0
- package/libEs6/components/Personalization/constants/propositionEventType.js +1 -0
- package/libEs6/components/Personalization/constants/schema.js +1 -0
- package/libEs6/components/Personalization/constants/scopeType.js +1 -0
- package/libEs6/components/Personalization/constants/surface.js +1 -0
- package/libEs6/components/Personalization/createApplyPropositions.js +31 -34
- package/libEs6/components/Personalization/createClickStorage.js +1 -8
- package/libEs6/components/Personalization/createCollect.js +0 -5
- package/libEs6/components/Personalization/createComponent.js +23 -21
- package/libEs6/components/Personalization/createFetchDataHandler.js +61 -10
- package/libEs6/components/Personalization/createGetPageLocation.js +1 -0
- package/libEs6/components/Personalization/createOnClickHandler.js +4 -7
- package/{libEs5/components/Personalization/dom-actions/click.js → libEs6/components/Personalization/createPendingNotificationsHandler.js} +11 -15
- package/libEs6/components/Personalization/createPersonalizationDetails.js +9 -22
- package/libEs6/components/Personalization/createSetTargetMigration.js +1 -1
- package/libEs6/components/Personalization/createViewCacheManager.js +50 -24
- package/libEs6/components/Personalization/createViewChangeHandler.js +25 -29
- package/libEs6/components/Personalization/dom-actions/action.js +5 -14
- package/libEs6/components/Personalization/dom-actions/addNonceToInlineStyleElements.js +1 -8
- package/libEs6/components/Personalization/dom-actions/appendHtml.js +1 -0
- package/libEs6/components/Personalization/dom-actions/clicks/collectClicks.js +2 -14
- package/libEs6/components/Personalization/dom-actions/{click.js → createPreprocess.js} +7 -11
- package/libEs6/components/Personalization/dom-actions/dom/createFragment.js +1 -0
- package/libEs6/components/Personalization/dom-actions/dom/getAttribute.js +1 -0
- package/libEs6/components/Personalization/dom-actions/dom/getChildNodes.js +1 -2
- package/libEs6/components/Personalization/dom-actions/dom/getChildren.js +1 -2
- package/libEs6/components/Personalization/dom-actions/dom/getFirstChild.js +1 -0
- package/libEs6/components/Personalization/dom-actions/dom/getNextSibling.js +1 -0
- package/libEs6/components/Personalization/dom-actions/dom/getNonce.js +6 -5
- package/libEs6/components/Personalization/dom-actions/dom/getParent.js +1 -0
- package/libEs6/components/Personalization/dom-actions/dom/helperForEq.js +1 -0
- package/libEs6/components/Personalization/dom-actions/dom/index.js +1 -0
- package/libEs6/components/Personalization/dom-actions/dom/insertAfter.js +1 -2
- package/libEs6/components/Personalization/dom-actions/dom/insertBefore.js +1 -2
- package/libEs6/components/Personalization/dom-actions/dom/matchesSelectorWithEq.js +7 -6
- package/libEs6/components/Personalization/dom-actions/dom/removeAttribute.js +1 -0
- package/libEs6/components/Personalization/dom-actions/dom/selectNodesWithEq.js +6 -18
- package/libEs6/components/Personalization/dom-actions/dom/setAttribute.js +1 -0
- package/libEs6/components/Personalization/dom-actions/dom/setStyle.js +1 -2
- package/libEs6/components/Personalization/dom-actions/images.js +1 -1
- package/libEs6/components/Personalization/dom-actions/index.js +2 -2
- package/libEs6/components/Personalization/dom-actions/initDomActionsModules.js +4 -7
- package/libEs6/components/Personalization/dom-actions/insertHtmlAfter.js +1 -0
- package/libEs6/components/Personalization/dom-actions/insertHtmlBefore.js +1 -0
- package/libEs6/components/Personalization/dom-actions/prependHtml.js +5 -5
- package/libEs6/components/Personalization/dom-actions/rearrangeChildren.js +1 -2
- package/libEs6/components/Personalization/dom-actions/remapCustomCodeOffers.js +0 -3
- package/libEs6/components/Personalization/dom-actions/remapHeadOffers.js +4 -6
- package/libEs6/components/Personalization/dom-actions/replaceHtml.js +1 -0
- package/libEs6/components/Personalization/dom-actions/scripts.js +5 -16
- package/libEs6/components/Personalization/dom-actions/setAttributes.js +1 -0
- package/libEs6/components/Personalization/dom-actions/setHtml.js +1 -2
- package/libEs6/components/Personalization/dom-actions/setStyles.js +1 -0
- package/libEs6/components/Personalization/dom-actions/setText.js +1 -0
- package/libEs6/components/Personalization/dom-actions/swapImage.js +7 -4
- package/libEs6/components/Personalization/event.js +4 -4
- package/libEs6/components/Personalization/flicker/index.js +9 -12
- package/libEs6/components/Personalization/handlers/createProcessDomAction.js +48 -0
- package/libEs6/components/Personalization/handlers/createProcessHtmlContent.js +34 -0
- package/libEs6/components/Personalization/handlers/createProcessPropositions.js +175 -0
- package/libEs6/components/Personalization/handlers/createProcessRedirect.js +38 -0
- package/libEs6/components/Personalization/handlers/injectCreateProposition.js +113 -0
- package/libEs6/components/Personalization/{dom-actions/clicks/index.js → handlers/processDefaultContent.js} +7 -3
- package/libEs6/components/Personalization/index.js +61 -42
- package/libEs6/components/Personalization/utils/addRenderAttemptedToDecisions.js +1 -0
- package/libEs6/components/Personalization/utils/createAsyncArray.js +35 -0
- package/libEs6/components/Personalization/utils/isAuthoringModeEnabled.js +1 -0
- package/libEs6/components/Personalization/utils/isPageWideScope.js +1 -0
- package/libEs6/components/Personalization/utils/surfaceUtils.js +1 -20
- package/libEs6/components/Personalization/validateApplyPropositionsOptions.js +4 -4
- package/libEs6/components/Privacy/computeConsentHash.js +3 -4
- package/libEs6/components/Privacy/createComponent.js +5 -10
- package/libEs6/components/Privacy/createConsentHashStore.js +0 -10
- package/libEs6/components/Privacy/createConsentRequest.js +1 -3
- package/libEs6/components/Privacy/createConsentRequestPayload.js +1 -2
- package/libEs6/components/Privacy/createStoredConsent.js +1 -2
- package/libEs6/components/Privacy/index.js +1 -2
- package/libEs6/components/Privacy/injectSendSetConsentRequest.js +3 -3
- package/libEs6/constants/browser.js +1 -0
- package/libEs6/constants/consentPurpose.js +1 -0
- package/libEs6/constants/consentStatus.js +1 -0
- package/libEs6/constants/cookieNameKey.js +1 -0
- package/libEs6/constants/cookieNamePrefix.js +1 -0
- package/libEs6/constants/coreCommands.js +1 -0
- package/libEs6/constants/debugQueryParam.js +1 -0
- package/libEs6/constants/domain.js +1 -0
- package/libEs6/constants/ecidNamespace.js +1 -0
- package/libEs6/constants/elementAttribute.js +1 -0
- package/libEs6/constants/highEntropyUserAgentClientHints.js +1 -0
- package/libEs6/constants/httpHeaderNames.js +1 -0
- package/libEs6/constants/httpStatusCode.js +1 -0
- package/libEs6/constants/legacyCookies.js +1 -0
- package/libEs6/constants/libraryName.js +1 -0
- package/libEs6/constants/libraryVersion.js +3 -1
- package/libEs6/constants/namespace.js +1 -0
- package/libEs6/constants/pageWideScope.js +1 -0
- package/libEs6/constants/queryStringIdentityParam.js +1 -0
- package/libEs6/constants/shadowSeparator.js +1 -0
- package/libEs6/constants/tagName.js +1 -0
- package/libEs6/core/buildAndValidateConfig.js +4 -10
- package/libEs6/core/componentCreators.js +3 -3
- package/libEs6/core/config/createConfig.js +1 -2
- package/libEs6/core/config/createCoreConfigs.js +1 -0
- package/libEs6/core/consent/createConsent.js +1 -9
- package/libEs6/core/consent/createConsentStateMachine.js +1 -20
- package/libEs6/core/createComponentRegistry.js +3 -15
- package/libEs6/core/createCookieTransfer.js +6 -12
- package/libEs6/core/createEvent.js +25 -31
- package/libEs6/core/createEventManager.js +8 -10
- package/libEs6/core/createInstanceFunction.js +1 -0
- package/libEs6/core/createLifecycle.js +14 -10
- package/libEs6/core/createLogController.js +1 -7
- package/libEs6/core/createLogger.js +1 -17
- package/libEs6/core/edgeNetwork/handleRequestFailure.js +0 -1
- package/libEs6/core/edgeNetwork/injectApplyResponse.js +2 -3
- package/libEs6/core/edgeNetwork/injectExtractEdgeInfo.js +5 -6
- package/libEs6/core/edgeNetwork/injectGetLocationHint.js +1 -5
- package/libEs6/core/edgeNetwork/injectProcessWarningsAndErrors.js +1 -2
- package/libEs6/core/edgeNetwork/injectSendEdgeNetworkRequest.js +5 -5
- package/libEs6/core/index.js +4 -10
- package/libEs6/core/initializeComponents.js +3 -4
- package/libEs6/core/injectCreateResponse.js +3 -7
- package/libEs6/core/injectExecuteCommand.js +5 -11
- package/libEs6/core/injectHandleError.js +4 -3
- package/libEs6/core/injectShouldTransferCookie.js +1 -0
- package/libEs6/core/network/getRequestRetryDelay.js +11 -13
- package/libEs6/core/network/injectSendNetworkRequest.js +3 -7
- package/libEs6/core/network/isRequestRetryable.js +4 -2
- package/libEs6/core/network/requestMethods/injectSendBeaconRequest.js +4 -6
- package/libEs6/core/network/requestMethods/injectSendFetchRequest.js +1 -2
- package/libEs6/core/network/requestMethods/injectSendXhrRequest.js +1 -5
- package/libEs6/core/validateCommandOptions.js +1 -2
- package/libEs6/index.js +5 -3
- package/libEs6/utils/areThirdPartyCookiesSupportedByDefault.js +4 -2
- package/libEs6/utils/assign.js +1 -0
- package/libEs6/utils/assignIf.js +1 -1
- package/libEs6/utils/cookieJar.js +1 -0
- package/libEs6/utils/crc32.js +0 -7
- package/libEs6/utils/createCallbackAggregator.js +0 -2
- package/libEs6/utils/createLoggingCookieJar.js +3 -3
- package/libEs6/utils/createMerger.js +2 -1
- package/libEs6/utils/createTaskQueue.js +0 -4
- package/libEs6/utils/deduplicateArray.js +23 -0
- package/libEs6/utils/deepAssign.js +2 -5
- package/libEs6/utils/dom/appendNode.js +1 -0
- package/libEs6/utils/dom/awaitSelector.js +1 -14
- package/libEs6/utils/dom/createNode.js +1 -2
- package/libEs6/utils/dom/index.js +1 -0
- package/libEs6/utils/dom/isShadowSelector.js +1 -0
- package/libEs6/utils/dom/matchesSelector.js +2 -2
- package/libEs6/utils/dom/querySelectorAll.js +3 -2
- package/libEs6/utils/dom/removeNode.js +1 -2
- package/libEs6/utils/dom/selectNodes.js +2 -2
- package/libEs6/utils/dom/selectNodesWithShadow.js +6 -16
- package/libEs6/utils/filterObject.js +8 -12
- package/libEs6/utils/find.js +0 -2
- package/libEs6/utils/fireImage.js +2 -1
- package/libEs6/utils/getApexDomain.js +4 -4
- package/libEs6/utils/getBrowser.js +1 -7
- package/libEs6/utils/getNamespacedCookieName.js +1 -0
- package/libEs6/utils/groupBy.js +0 -2
- package/libEs6/utils/index.js +2 -0
- package/libEs6/utils/injectDoesIdentityCookieExist.js +1 -1
- package/libEs6/utils/injectFireReferrerHideableImage.js +1 -4
- package/libEs6/utils/injectStorage.js +1 -5
- package/libEs6/utils/intersection.js +2 -1
- package/libEs6/utils/isBlankString.js +2 -1
- package/libEs6/utils/isEmptyObject.js +2 -1
- package/libEs6/utils/isInteger.js +2 -1
- package/libEs6/utils/isNamespacedCookieName.js +2 -1
- package/libEs6/utils/isNonEmptyString.js +2 -1
- package/libEs6/utils/isObject.js +2 -1
- package/libEs6/utils/isUnique.js +0 -5
- package/libEs6/utils/memoize.js +0 -2
- package/libEs6/utils/padStart.js +1 -4
- package/libEs6/utils/prepareConfigOverridesForEdge.js +5 -12
- package/libEs6/utils/querystring.js +1 -0
- package/libEs6/utils/request/createDataCollectionRequest.js +1 -3
- package/libEs6/utils/request/createDataCollectionRequestPayload.js +0 -3
- package/libEs6/utils/request/createGetAssuranceValidationTokenParams.js +1 -6
- package/libEs6/utils/request/createHasIdentity.js +1 -0
- package/libEs6/utils/request/createRequest.js +3 -9
- package/libEs6/utils/request/createRequestParams.js +0 -3
- package/libEs6/utils/request/createRequestPayload.js +4 -4
- package/libEs6/utils/request/index.js +1 -0
- package/libEs6/utils/sanitizeOrgIdForCookieName.js +1 -0
- package/libEs6/utils/stackError.js +2 -1
- package/libEs6/utils/toArray.js +1 -2
- package/libEs6/utils/toISOStringLocal.js +4 -3
- package/libEs6/utils/toInteger.js +4 -4
- package/libEs6/utils/updateErrorMessage.js +3 -1
- package/libEs6/utils/uuid.js +1 -0
- package/libEs6/utils/validateConfigOverride.js +1 -0
- package/libEs6/utils/validateIdentityMap.js +1 -0
- package/libEs6/utils/validation/booleanValidator.js +1 -0
- package/libEs6/utils/validation/createArrayOfValidator.js +0 -2
- package/libEs6/utils/validation/createDefaultValidator.js +1 -1
- package/libEs6/utils/validation/createDeprecatedValidator.js +0 -4
- package/libEs6/utils/validation/createMapOfValuesValidator.js +1 -4
- package/libEs6/utils/validation/createNoUnknownFieldsValidator.js +1 -2
- package/libEs6/utils/validation/createNonEmptyValidator.js +1 -1
- package/libEs6/utils/validation/createObjectOfValidator.js +3 -5
- package/libEs6/utils/validation/createUniqueValidator.js +1 -0
- package/libEs6/utils/validation/index.js +14 -32
- package/libEs6/utils/validation/integerValidator.js +1 -0
- package/libEs6/utils/validation/numberValidator.js +1 -0
- package/libEs6/utils/validation/regexpValidator.js +1 -0
- package/libEs6/utils/validation/requiredValidator.js +1 -1
- package/libEs6/utils/validation/utils.js +8 -12
- package/package.json +2 -2
- package/libEs5/components/Personalization/createAutoRenderingHandler.js +0 -92
- package/libEs5/components/Personalization/createExecuteDecisions.js +0 -89
- package/libEs5/components/Personalization/createNonRenderingHandler.js +0 -66
- package/libEs5/components/Personalization/createOnResponseHandler.js +0 -73
- package/libEs5/components/Personalization/createRedirectHandler.js +0 -58
- package/libEs5/components/Personalization/dom-actions/executeActions.js +0 -75
- package/libEs5/components/Personalization/groupDecisions.js +0 -160
- package/libEs6/components/Personalization/createAutoRenderingHandler.js +0 -84
- package/libEs6/components/Personalization/createExecuteDecisions.js +0 -77
- package/libEs6/components/Personalization/createNonRenderingHandler.js +0 -56
- package/libEs6/components/Personalization/createOnResponseHandler.js +0 -68
- package/libEs6/components/Personalization/createRedirectHandler.js +0 -57
- package/libEs6/components/Personalization/dom-actions/executeActions.js +0 -66
- package/libEs6/components/Personalization/groupDecisions.js +0 -131
|
@@ -9,13 +9,15 @@ 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
|
+
|
|
12
13
|
import { createNode, appendNode, removeNode } from "../../../utils/dom";
|
|
13
14
|
import { STYLE } from "../../../constants/tagName";
|
|
14
15
|
import { getElementById, getNonce } from "../dom-actions/dom";
|
|
15
16
|
const PREHIDING_ID = "alloy-prehiding";
|
|
16
|
-
const HIDING_STYLE_DEFINITION = "{ visibility: hidden }";
|
|
17
|
-
// so storing nodes even for multiple Alloy instances is fine
|
|
17
|
+
const HIDING_STYLE_DEFINITION = "{ visibility: hidden }";
|
|
18
18
|
|
|
19
|
+
// Using global is OK since we have a single DOM
|
|
20
|
+
// so storing nodes even for multiple Alloy instances is fine
|
|
19
21
|
const styleNodes = {};
|
|
20
22
|
export const hideElements = prehidingSelector => {
|
|
21
23
|
// if we have different events with the same
|
|
@@ -24,9 +26,9 @@ export const hideElements = prehidingSelector => {
|
|
|
24
26
|
if (styleNodes[prehidingSelector]) {
|
|
25
27
|
return;
|
|
26
28
|
}
|
|
27
|
-
|
|
28
29
|
const nonce = getNonce();
|
|
29
|
-
const attrs = {
|
|
30
|
+
const attrs = {
|
|
31
|
+
...(nonce && {
|
|
30
32
|
nonce
|
|
31
33
|
})
|
|
32
34
|
};
|
|
@@ -39,7 +41,6 @@ export const hideElements = prehidingSelector => {
|
|
|
39
41
|
};
|
|
40
42
|
export const showElements = prehidingSelector => {
|
|
41
43
|
const node = styleNodes[prehidingSelector];
|
|
42
|
-
|
|
43
44
|
if (node) {
|
|
44
45
|
removeNode(node);
|
|
45
46
|
delete styleNodes[prehidingSelector];
|
|
@@ -48,17 +49,15 @@ export const showElements = prehidingSelector => {
|
|
|
48
49
|
export const hideContainers = prehidingStyle => {
|
|
49
50
|
if (!prehidingStyle) {
|
|
50
51
|
return;
|
|
51
|
-
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// If containers prehiding style has been added
|
|
52
55
|
// by customer's prehiding snippet we don't
|
|
53
56
|
// want to add the same node
|
|
54
|
-
|
|
55
|
-
|
|
56
57
|
const node = getElementById(PREHIDING_ID);
|
|
57
|
-
|
|
58
58
|
if (node) {
|
|
59
59
|
return;
|
|
60
60
|
}
|
|
61
|
-
|
|
62
61
|
const nonce = getNonce();
|
|
63
62
|
const attrs = {
|
|
64
63
|
id: PREHIDING_ID,
|
|
@@ -76,10 +75,8 @@ export const showContainers = () => {
|
|
|
76
75
|
// If containers prehiding style exists
|
|
77
76
|
// we will remove it
|
|
78
77
|
const node = getElementById(PREHIDING_ID);
|
|
79
|
-
|
|
80
78
|
if (!node) {
|
|
81
79
|
return;
|
|
82
80
|
}
|
|
83
|
-
|
|
84
81
|
removeNode(node);
|
|
85
82
|
};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Copyright 2023 Adobe. All rights reserved.
|
|
3
|
+
This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
you may not use this file except in compliance with the License. You may obtain a copy
|
|
5
|
+
of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
6
|
+
|
|
7
|
+
Unless required by applicable law or agreed to in writing, software distributed under
|
|
8
|
+
the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
|
|
9
|
+
OF ANY KIND, either express or implied. See the License for the specific language
|
|
10
|
+
governing permissions and limitations under the License.
|
|
11
|
+
*/
|
|
12
|
+
export default (({
|
|
13
|
+
modules,
|
|
14
|
+
logger,
|
|
15
|
+
storeClickMetrics
|
|
16
|
+
}) => item => {
|
|
17
|
+
const {
|
|
18
|
+
type,
|
|
19
|
+
selector
|
|
20
|
+
} = item.getData() || {};
|
|
21
|
+
if (!type) {
|
|
22
|
+
logger.warn("Invalid DOM action data: missing type.", item.getData());
|
|
23
|
+
return {};
|
|
24
|
+
}
|
|
25
|
+
if (type === "click") {
|
|
26
|
+
if (!selector) {
|
|
27
|
+
logger.warn("Invalid DOM action data: missing selector.", item.getData());
|
|
28
|
+
return {};
|
|
29
|
+
}
|
|
30
|
+
storeClickMetrics({
|
|
31
|
+
selector,
|
|
32
|
+
meta: item.getMeta()
|
|
33
|
+
});
|
|
34
|
+
return {
|
|
35
|
+
setRenderAttempted: true,
|
|
36
|
+
includeInNotification: false
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
if (!modules[type]) {
|
|
40
|
+
logger.warn("Invalid DOM action data: unknown type.", item.getData());
|
|
41
|
+
return {};
|
|
42
|
+
}
|
|
43
|
+
return {
|
|
44
|
+
render: () => modules[type](item.getData()),
|
|
45
|
+
setRenderAttempted: true,
|
|
46
|
+
includeInNotification: true
|
|
47
|
+
};
|
|
48
|
+
});
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Copyright 2023 Adobe. All rights reserved.
|
|
3
|
+
This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
you may not use this file except in compliance with the License. You may obtain a copy
|
|
5
|
+
of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
6
|
+
|
|
7
|
+
Unless required by applicable law or agreed to in writing, software distributed under
|
|
8
|
+
the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
|
|
9
|
+
OF ANY KIND, either express or implied. See the License for the specific language
|
|
10
|
+
governing permissions and limitations under the License.
|
|
11
|
+
*/
|
|
12
|
+
export default (({
|
|
13
|
+
modules,
|
|
14
|
+
logger
|
|
15
|
+
}) => item => {
|
|
16
|
+
const {
|
|
17
|
+
type,
|
|
18
|
+
selector
|
|
19
|
+
} = item.getData() || {};
|
|
20
|
+
if (!selector || !type) {
|
|
21
|
+
return {};
|
|
22
|
+
}
|
|
23
|
+
if (!modules[type]) {
|
|
24
|
+
logger.warn("Invalid HTML content data", item.getData());
|
|
25
|
+
return {};
|
|
26
|
+
}
|
|
27
|
+
return {
|
|
28
|
+
render: () => {
|
|
29
|
+
modules[type](item.getData());
|
|
30
|
+
},
|
|
31
|
+
setRenderAttempted: true,
|
|
32
|
+
includeInNotification: true
|
|
33
|
+
};
|
|
34
|
+
});
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Copyright 2023 Adobe. All rights reserved.
|
|
3
|
+
This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
you may not use this file except in compliance with the License. You may obtain a copy
|
|
5
|
+
of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
6
|
+
|
|
7
|
+
Unless required by applicable law or agreed to in writing, software distributed under
|
|
8
|
+
the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
|
|
9
|
+
OF ANY KIND, either express or implied. See the License for the specific language
|
|
10
|
+
governing permissions and limitations under the License.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
export default (({
|
|
14
|
+
schemaProcessors,
|
|
15
|
+
logger
|
|
16
|
+
}) => {
|
|
17
|
+
const wrapRenderWithLogging = (render, item) => () => {
|
|
18
|
+
return Promise.resolve().then(render).then(() => {
|
|
19
|
+
if (logger.enabled) {
|
|
20
|
+
logger.info(`Action ${item.toString()} executed.`);
|
|
21
|
+
}
|
|
22
|
+
return true;
|
|
23
|
+
}).catch(error => {
|
|
24
|
+
if (logger.enabled) {
|
|
25
|
+
const {
|
|
26
|
+
message,
|
|
27
|
+
stack
|
|
28
|
+
} = error;
|
|
29
|
+
const errorMessage = `Failed to execute action ${item.toString()}. ${message} ${stack}`;
|
|
30
|
+
logger.error(errorMessage);
|
|
31
|
+
}
|
|
32
|
+
return false;
|
|
33
|
+
});
|
|
34
|
+
};
|
|
35
|
+
const renderItems = (renderers, meta) => Promise.all(renderers.map(renderer => renderer())).then(successes => {
|
|
36
|
+
// as long as at least one renderer succeeds, we want to add the notification
|
|
37
|
+
// to the display notifications
|
|
38
|
+
if (!successes.includes(true)) {
|
|
39
|
+
return undefined;
|
|
40
|
+
}
|
|
41
|
+
return meta;
|
|
42
|
+
});
|
|
43
|
+
const processItem = item => {
|
|
44
|
+
const processor = schemaProcessors[item.getSchema()];
|
|
45
|
+
if (!processor) {
|
|
46
|
+
return {};
|
|
47
|
+
}
|
|
48
|
+
return processor(item);
|
|
49
|
+
};
|
|
50
|
+
const processItems = ({
|
|
51
|
+
renderers: existingRenderers,
|
|
52
|
+
returnedPropositions: existingReturnedPropositions,
|
|
53
|
+
returnedDecisions: existingReturnedDecisions,
|
|
54
|
+
items,
|
|
55
|
+
proposition
|
|
56
|
+
}) => {
|
|
57
|
+
let renderers = [...existingRenderers];
|
|
58
|
+
let returnedPropositions = [...existingReturnedPropositions];
|
|
59
|
+
let returnedDecisions = [...existingReturnedDecisions];
|
|
60
|
+
let renderedItems = [];
|
|
61
|
+
let nonRenderedItems = [];
|
|
62
|
+
let itemRenderers = [];
|
|
63
|
+
let atLeastOneWithNotification = false;
|
|
64
|
+
let render;
|
|
65
|
+
let setRenderAttempted;
|
|
66
|
+
let includeInNotification;
|
|
67
|
+
let onlyRenderThis = false;
|
|
68
|
+
let i = 0;
|
|
69
|
+
let item;
|
|
70
|
+
while (items.length > i) {
|
|
71
|
+
item = items[i];
|
|
72
|
+
({
|
|
73
|
+
render,
|
|
74
|
+
setRenderAttempted,
|
|
75
|
+
includeInNotification,
|
|
76
|
+
onlyRenderThis
|
|
77
|
+
} = processItem(item));
|
|
78
|
+
if (onlyRenderThis) {
|
|
79
|
+
returnedPropositions = [];
|
|
80
|
+
returnedDecisions = [];
|
|
81
|
+
if (setRenderAttempted) {
|
|
82
|
+
renderedItems = [item];
|
|
83
|
+
nonRenderedItems = [];
|
|
84
|
+
} else {
|
|
85
|
+
renderedItems = [];
|
|
86
|
+
nonRenderedItems = [item];
|
|
87
|
+
}
|
|
88
|
+
renderers = [];
|
|
89
|
+
itemRenderers = [render];
|
|
90
|
+
atLeastOneWithNotification = includeInNotification;
|
|
91
|
+
break;
|
|
92
|
+
}
|
|
93
|
+
if (render) {
|
|
94
|
+
itemRenderers.push(wrapRenderWithLogging(render, item));
|
|
95
|
+
}
|
|
96
|
+
if (includeInNotification) {
|
|
97
|
+
atLeastOneWithNotification = true;
|
|
98
|
+
}
|
|
99
|
+
if (setRenderAttempted) {
|
|
100
|
+
renderedItems.push(item);
|
|
101
|
+
} else {
|
|
102
|
+
nonRenderedItems.push(item);
|
|
103
|
+
}
|
|
104
|
+
i += 1;
|
|
105
|
+
}
|
|
106
|
+
if (itemRenderers.length > 0) {
|
|
107
|
+
const meta = atLeastOneWithNotification ? proposition.getNotification() : undefined;
|
|
108
|
+
renderers.push(() => renderItems(itemRenderers, meta));
|
|
109
|
+
} else if (atLeastOneWithNotification) {
|
|
110
|
+
renderers.push(() => proposition.getNotification());
|
|
111
|
+
}
|
|
112
|
+
if (renderedItems.length > 0) {
|
|
113
|
+
proposition.addToReturnValues(returnedPropositions, returnedDecisions, renderedItems, true);
|
|
114
|
+
}
|
|
115
|
+
if (nonRenderedItems.length > 0) {
|
|
116
|
+
proposition.addToReturnValues(returnedPropositions, returnedDecisions, nonRenderedItems, false);
|
|
117
|
+
}
|
|
118
|
+
return {
|
|
119
|
+
renderers,
|
|
120
|
+
returnedPropositions,
|
|
121
|
+
returnedDecisions,
|
|
122
|
+
onlyRenderThis
|
|
123
|
+
};
|
|
124
|
+
};
|
|
125
|
+
return (renderPropositions, nonRenderPropositions = []) => {
|
|
126
|
+
let renderers = [];
|
|
127
|
+
let returnedPropositions = [];
|
|
128
|
+
let returnedDecisions = [];
|
|
129
|
+
let onlyRenderThis;
|
|
130
|
+
let i = 0;
|
|
131
|
+
let proposition;
|
|
132
|
+
let items;
|
|
133
|
+
while (renderPropositions.length > i) {
|
|
134
|
+
proposition = renderPropositions[i];
|
|
135
|
+
items = proposition.getItems();
|
|
136
|
+
({
|
|
137
|
+
renderers,
|
|
138
|
+
returnedPropositions,
|
|
139
|
+
returnedDecisions,
|
|
140
|
+
onlyRenderThis
|
|
141
|
+
} = processItems({
|
|
142
|
+
renderers,
|
|
143
|
+
returnedPropositions,
|
|
144
|
+
returnedDecisions,
|
|
145
|
+
items,
|
|
146
|
+
proposition
|
|
147
|
+
}));
|
|
148
|
+
if (onlyRenderThis) {
|
|
149
|
+
break;
|
|
150
|
+
}
|
|
151
|
+
i += 1;
|
|
152
|
+
}
|
|
153
|
+
if (onlyRenderThis) {
|
|
154
|
+
// if onlyRenderThis is true, that means returnedPropositions and returnedDecisions
|
|
155
|
+
// only contains the proposition that triggered only rendering this. We need to
|
|
156
|
+
// add the other propositions to the returnedPropositions and returnedDecisions.
|
|
157
|
+
renderPropositions.forEach((p, index) => {
|
|
158
|
+
if (index !== i) {
|
|
159
|
+
p.addToReturnValues(returnedPropositions, returnedDecisions, p.getItems(), false);
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
nonRenderPropositions.forEach(p => {
|
|
164
|
+
p.addToReturnValues(returnedPropositions, returnedDecisions, p.getItems(), false);
|
|
165
|
+
});
|
|
166
|
+
const render = () => {
|
|
167
|
+
return Promise.all(renderers.map(renderer => renderer())).then(metas => metas.filter(meta => meta));
|
|
168
|
+
};
|
|
169
|
+
return {
|
|
170
|
+
returnedPropositions,
|
|
171
|
+
returnedDecisions,
|
|
172
|
+
render
|
|
173
|
+
};
|
|
174
|
+
};
|
|
175
|
+
});
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Copyright 2023 Adobe. All rights reserved.
|
|
3
|
+
This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
you may not use this file except in compliance with the License. You may obtain a copy
|
|
5
|
+
of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
6
|
+
|
|
7
|
+
Unless required by applicable law or agreed to in writing, software distributed under
|
|
8
|
+
the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
|
|
9
|
+
OF ANY KIND, either express or implied. See the License for the specific language
|
|
10
|
+
governing permissions and limitations under the License.
|
|
11
|
+
*/
|
|
12
|
+
export default (({
|
|
13
|
+
logger,
|
|
14
|
+
executeRedirect,
|
|
15
|
+
collect
|
|
16
|
+
}) => item => {
|
|
17
|
+
const {
|
|
18
|
+
content
|
|
19
|
+
} = item.getData() || {};
|
|
20
|
+
if (!content) {
|
|
21
|
+
logger.warn("Invalid Redirect data", item.getData());
|
|
22
|
+
return {};
|
|
23
|
+
}
|
|
24
|
+
const render = () => {
|
|
25
|
+
return collect({
|
|
26
|
+
decisionsMeta: [item.getMeta()]
|
|
27
|
+
}).then(() => {
|
|
28
|
+
executeRedirect(content);
|
|
29
|
+
// We've already sent the display notification, so don't return anything
|
|
30
|
+
});
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
return {
|
|
34
|
+
render,
|
|
35
|
+
setRenderAttempted: true,
|
|
36
|
+
onlyRenderThis: true
|
|
37
|
+
};
|
|
38
|
+
});
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Copyright 2023 Adobe. All rights reserved.
|
|
3
|
+
This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
you may not use this file except in compliance with the License. You may obtain a copy
|
|
5
|
+
of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
6
|
+
|
|
7
|
+
Unless required by applicable law or agreed to in writing, software distributed under
|
|
8
|
+
the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
|
|
9
|
+
OF ANY KIND, either express or implied. See the License for the specific language
|
|
10
|
+
governing permissions and limitations under the License.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import PAGE_WIDE_SCOPE from "../../../constants/pageWideScope";
|
|
14
|
+
export default (({
|
|
15
|
+
preprocess,
|
|
16
|
+
isPageWideSurface
|
|
17
|
+
}) => {
|
|
18
|
+
const createItem = (item, meta) => {
|
|
19
|
+
const {
|
|
20
|
+
schema,
|
|
21
|
+
data,
|
|
22
|
+
characteristics: {
|
|
23
|
+
trackingLabel
|
|
24
|
+
} = {}
|
|
25
|
+
} = item;
|
|
26
|
+
const processedData = preprocess(data);
|
|
27
|
+
if (trackingLabel) {
|
|
28
|
+
meta.trackingLabel = trackingLabel;
|
|
29
|
+
}
|
|
30
|
+
return {
|
|
31
|
+
getSchema() {
|
|
32
|
+
return schema;
|
|
33
|
+
},
|
|
34
|
+
getData() {
|
|
35
|
+
return processedData;
|
|
36
|
+
},
|
|
37
|
+
getMeta() {
|
|
38
|
+
return meta;
|
|
39
|
+
},
|
|
40
|
+
getOriginalItem() {
|
|
41
|
+
return item;
|
|
42
|
+
},
|
|
43
|
+
toString() {
|
|
44
|
+
return JSON.stringify(item);
|
|
45
|
+
},
|
|
46
|
+
toJSON() {
|
|
47
|
+
return item;
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
return (payload, visibleInReturnedItems = true) => {
|
|
52
|
+
const {
|
|
53
|
+
id,
|
|
54
|
+
scope,
|
|
55
|
+
scopeDetails,
|
|
56
|
+
items = []
|
|
57
|
+
} = payload;
|
|
58
|
+
const {
|
|
59
|
+
characteristics: {
|
|
60
|
+
scopeType
|
|
61
|
+
} = {}
|
|
62
|
+
} = scopeDetails || {};
|
|
63
|
+
return {
|
|
64
|
+
getScope() {
|
|
65
|
+
if (!scope) {
|
|
66
|
+
return scope;
|
|
67
|
+
}
|
|
68
|
+
return scope;
|
|
69
|
+
},
|
|
70
|
+
getScopeType() {
|
|
71
|
+
if (scope === PAGE_WIDE_SCOPE || isPageWideSurface(scope)) {
|
|
72
|
+
return "page";
|
|
73
|
+
}
|
|
74
|
+
if (scopeType === "view") {
|
|
75
|
+
return "view";
|
|
76
|
+
}
|
|
77
|
+
return "proposition";
|
|
78
|
+
},
|
|
79
|
+
getItems() {
|
|
80
|
+
return items.map(item => createItem(item, {
|
|
81
|
+
id,
|
|
82
|
+
scope,
|
|
83
|
+
scopeDetails
|
|
84
|
+
}));
|
|
85
|
+
},
|
|
86
|
+
getNotification() {
|
|
87
|
+
return {
|
|
88
|
+
id,
|
|
89
|
+
scope,
|
|
90
|
+
scopeDetails
|
|
91
|
+
};
|
|
92
|
+
},
|
|
93
|
+
toJSON() {
|
|
94
|
+
return payload;
|
|
95
|
+
},
|
|
96
|
+
addToReturnValues(propositions, decisions, includedItems, renderAttempted) {
|
|
97
|
+
if (visibleInReturnedItems) {
|
|
98
|
+
propositions.push({
|
|
99
|
+
...payload,
|
|
100
|
+
items: includedItems.map(i => i.getOriginalItem()),
|
|
101
|
+
renderAttempted
|
|
102
|
+
});
|
|
103
|
+
if (!renderAttempted) {
|
|
104
|
+
decisions.push({
|
|
105
|
+
...payload,
|
|
106
|
+
items: includedItems.map(i => i.getOriginalItem())
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
};
|
|
113
|
+
});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
Copyright
|
|
2
|
+
Copyright 2023 Adobe. All rights reserved.
|
|
3
3
|
This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
4
4
|
you may not use this file except in compliance with the License. You may obtain a copy
|
|
5
5
|
of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
@@ -9,5 +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
|
-
|
|
13
|
-
|
|
12
|
+
export default (() => {
|
|
13
|
+
return {
|
|
14
|
+
setRenderAttempted: true,
|
|
15
|
+
includeInNotification: true
|
|
16
|
+
};
|
|
17
|
+
});
|
|
@@ -9,11 +9,11 @@ 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
|
+
|
|
12
13
|
import { string, boolean, objectOf } from "../../utils/validation";
|
|
13
14
|
import createComponent from "./createComponent";
|
|
14
|
-
import { initDomActionsModules
|
|
15
|
+
import { initDomActionsModules } from "./dom-actions";
|
|
15
16
|
import createCollect from "./createCollect";
|
|
16
|
-
import createExecuteDecisions from "./createExecuteDecisions";
|
|
17
17
|
import { hideContainers, showContainers } from "./flicker";
|
|
18
18
|
import createFetchDataHandler from "./createFetchDataHandler";
|
|
19
19
|
import collectClicks from "./dom-actions/clicks/collectClicks";
|
|
@@ -22,16 +22,23 @@ import { mergeDecisionsMeta, mergeQuery } from "./event";
|
|
|
22
22
|
import createOnClickHandler from "./createOnClickHandler";
|
|
23
23
|
import createViewCacheManager from "./createViewCacheManager";
|
|
24
24
|
import createViewChangeHandler from "./createViewChangeHandler";
|
|
25
|
-
import groupDecisions from "./groupDecisions";
|
|
26
|
-
import createOnResponseHandler from "./createOnResponseHandler";
|
|
27
25
|
import createClickStorage from "./createClickStorage";
|
|
28
|
-
import createRedirectHandler from "./createRedirectHandler";
|
|
29
|
-
import createAutorenderingHandler from "./createAutoRenderingHandler";
|
|
30
|
-
import createNonRenderingHandler from "./createNonRenderingHandler";
|
|
31
26
|
import createApplyPropositions from "./createApplyPropositions";
|
|
32
27
|
import createGetPageLocation from "./createGetPageLocation";
|
|
33
28
|
import createSetTargetMigration from "./createSetTargetMigration";
|
|
34
|
-
|
|
29
|
+
import remapCustomCodeOffers from "./dom-actions/remapCustomCodeOffers";
|
|
30
|
+
import remapHeadOffers from "./dom-actions/remapHeadOffers";
|
|
31
|
+
import createPreprocess from "./dom-actions/createPreprocess";
|
|
32
|
+
import injectCreateProposition from "./handlers/injectCreateProposition";
|
|
33
|
+
import createAsyncArray from "./utils/createAsyncArray";
|
|
34
|
+
import createPendingNotificationsHandler from "./createPendingNotificationsHandler";
|
|
35
|
+
import * as schema from "./constants/schema";
|
|
36
|
+
import processDefaultContent from "./handlers/processDefaultContent";
|
|
37
|
+
import { isPageWideSurface } from "./utils/surfaceUtils";
|
|
38
|
+
import createProcessDomAction from "./handlers/createProcessDomAction";
|
|
39
|
+
import createProcessHtmlContent from "./handlers/createProcessHtmlContent";
|
|
40
|
+
import createProcessRedirect from "./handlers/createProcessRedirect";
|
|
41
|
+
import createProcessPropositions from "./handlers/createProcessPropositions";
|
|
35
42
|
const createPersonalization = ({
|
|
36
43
|
config,
|
|
37
44
|
logger,
|
|
@@ -53,43 +60,50 @@ const createPersonalization = ({
|
|
|
53
60
|
const getPageLocation = createGetPageLocation({
|
|
54
61
|
window
|
|
55
62
|
});
|
|
56
|
-
const
|
|
57
|
-
const
|
|
58
|
-
const
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
executeActions
|
|
62
|
-
});
|
|
63
|
-
const handleRedirectDecisions = createRedirectHandler({
|
|
64
|
-
collect,
|
|
65
|
-
window,
|
|
66
|
-
logger,
|
|
67
|
-
showContainers
|
|
68
|
-
});
|
|
69
|
-
const autoRenderingHandler = createAutorenderingHandler({
|
|
70
|
-
viewCache,
|
|
71
|
-
executeDecisions,
|
|
72
|
-
showContainers,
|
|
73
|
-
collect
|
|
63
|
+
const modules = initDomActionsModules();
|
|
64
|
+
const preprocess = createPreprocess([remapHeadOffers, remapCustomCodeOffers]);
|
|
65
|
+
const createProposition = injectCreateProposition({
|
|
66
|
+
preprocess,
|
|
67
|
+
isPageWideSurface
|
|
74
68
|
});
|
|
75
|
-
const
|
|
76
|
-
|
|
69
|
+
const viewCache = createViewCacheManager({
|
|
70
|
+
createProposition
|
|
77
71
|
});
|
|
78
|
-
const
|
|
79
|
-
|
|
72
|
+
const schemaProcessors = {
|
|
73
|
+
[schema.DEFAULT_CONTENT_ITEM]: processDefaultContent,
|
|
74
|
+
[schema.DOM_ACTION]: createProcessDomAction({
|
|
75
|
+
modules,
|
|
76
|
+
logger,
|
|
77
|
+
storeClickMetrics
|
|
78
|
+
}),
|
|
79
|
+
[schema.HTML_CONTENT_ITEM]: createProcessHtmlContent({
|
|
80
|
+
modules,
|
|
81
|
+
logger
|
|
82
|
+
}),
|
|
83
|
+
[schema.REDIRECT_ITEM]: createProcessRedirect({
|
|
84
|
+
logger,
|
|
85
|
+
executeRedirect: url => window.location.replace(url),
|
|
86
|
+
collect
|
|
87
|
+
})
|
|
88
|
+
};
|
|
89
|
+
const processPropositions = createProcessPropositions({
|
|
90
|
+
schemaProcessors,
|
|
91
|
+
logger
|
|
80
92
|
});
|
|
81
|
-
const
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
handleRedirectDecisions,
|
|
86
|
-
showContainers
|
|
93
|
+
const pendingDisplayNotifications = createAsyncArray();
|
|
94
|
+
const pendingNotificationsHandler = createPendingNotificationsHandler({
|
|
95
|
+
pendingDisplayNotifications,
|
|
96
|
+
mergeDecisionsMeta
|
|
87
97
|
});
|
|
88
98
|
const fetchDataHandler = createFetchDataHandler({
|
|
89
99
|
prehidingStyle,
|
|
90
|
-
|
|
100
|
+
showContainers,
|
|
91
101
|
hideContainers,
|
|
92
|
-
mergeQuery
|
|
102
|
+
mergeQuery,
|
|
103
|
+
collect,
|
|
104
|
+
processPropositions,
|
|
105
|
+
createProposition,
|
|
106
|
+
pendingDisplayNotifications
|
|
93
107
|
});
|
|
94
108
|
const onClickHandler = createOnClickHandler({
|
|
95
109
|
mergeDecisionsMeta,
|
|
@@ -99,8 +113,13 @@ const createPersonalization = ({
|
|
|
99
113
|
});
|
|
100
114
|
const viewChangeHandler = createViewChangeHandler({
|
|
101
115
|
mergeDecisionsMeta,
|
|
102
|
-
|
|
103
|
-
|
|
116
|
+
processPropositions,
|
|
117
|
+
viewCache
|
|
118
|
+
});
|
|
119
|
+
const applyPropositions = createApplyPropositions({
|
|
120
|
+
processPropositions,
|
|
121
|
+
createProposition,
|
|
122
|
+
pendingDisplayNotifications,
|
|
104
123
|
viewCache
|
|
105
124
|
});
|
|
106
125
|
const setTargetMigration = createSetTargetMigration({
|
|
@@ -117,10 +136,10 @@ const createPersonalization = ({
|
|
|
117
136
|
viewCache,
|
|
118
137
|
showContainers,
|
|
119
138
|
applyPropositions,
|
|
120
|
-
setTargetMigration
|
|
139
|
+
setTargetMigration,
|
|
140
|
+
pendingNotificationsHandler
|
|
121
141
|
});
|
|
122
142
|
};
|
|
123
|
-
|
|
124
143
|
createPersonalization.namespace = "Personalization";
|
|
125
144
|
createPersonalization.configValidators = objectOf({
|
|
126
145
|
prehidingStyle: string().nonEmpty(),
|
|
@@ -9,6 +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
|
+
|
|
12
13
|
import { assign } from "../../../utils";
|
|
13
14
|
export default (({
|
|
14
15
|
decisions,
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Copyright 2023 Adobe. All rights reserved.
|
|
3
|
+
This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
you may not use this file except in compliance with the License. You may obtain a copy
|
|
5
|
+
of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
6
|
+
|
|
7
|
+
Unless required by applicable law or agreed to in writing, software distributed under
|
|
8
|
+
the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
|
|
9
|
+
OF ANY KIND, either express or implied. See the License for the specific language
|
|
10
|
+
governing permissions and limitations under the License.
|
|
11
|
+
*/
|
|
12
|
+
export default (() => {
|
|
13
|
+
let latest = Promise.resolve([]);
|
|
14
|
+
return {
|
|
15
|
+
concat(promise) {
|
|
16
|
+
latest = latest.then(existingPropositions => {
|
|
17
|
+
return promise.then(newPropositions => {
|
|
18
|
+
return existingPropositions.concat(newPropositions);
|
|
19
|
+
}).catch(() => {
|
|
20
|
+
return existingPropositions;
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
},
|
|
24
|
+
/**
|
|
25
|
+
* Clears the saved propositions, waiting until the next propositions are resolved and available.
|
|
26
|
+
*
|
|
27
|
+
* @returns {Promise<Array>} A promise that resolves to the latest propositions.
|
|
28
|
+
*/
|
|
29
|
+
clear() {
|
|
30
|
+
const oldLatest = latest;
|
|
31
|
+
latest = Promise.resolve([]);
|
|
32
|
+
return oldLatest;
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
});
|