@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
package/libEs6/baseCode/index.js
CHANGED
|
@@ -11,13 +11,9 @@ governing permissions and limitations under the License.
|
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
13
|
/* eslint no-param-reassign: 0 */
|
|
14
|
-
|
|
15
14
|
/* eslint no-underscore-dangle: 0 */
|
|
16
|
-
|
|
17
15
|
/* eslint prefer-rest-params: 0 */
|
|
18
|
-
|
|
19
16
|
/* eslint no-var: 0 */
|
|
20
|
-
|
|
21
17
|
/* eslint-disable func-names */
|
|
22
18
|
|
|
23
19
|
/**
|
|
@@ -36,6 +32,7 @@ governing permissions and limitations under the License.
|
|
|
36
32
|
* Take particular care to write well-minifiable code, as consumers are
|
|
37
33
|
* particularly sensitive to base code size.
|
|
38
34
|
*/
|
|
35
|
+
|
|
39
36
|
export default ((window, instanceNames) => {
|
|
40
37
|
instanceNames.forEach(function (instanceName) {
|
|
41
38
|
if (!window[instanceName]) {
|
|
@@ -45,11 +42,10 @@ export default ((window, instanceNames) => {
|
|
|
45
42
|
// which global functions have been set up so that is can connect them to
|
|
46
43
|
// the library's command processing pipeline.
|
|
47
44
|
(window.__alloyNS = window.__alloyNS || []).push(instanceName);
|
|
48
|
-
|
|
49
45
|
window[instanceName] = function () {
|
|
50
|
-
var userProvidedArgs = arguments;
|
|
46
|
+
var userProvidedArgs = arguments;
|
|
47
|
+
// Always return a promise, because the command may be executed
|
|
51
48
|
// asynchronously, especially if the Alloy library has not yet loaded.
|
|
52
|
-
|
|
53
49
|
return new Promise(function (resolve, reject) {
|
|
54
50
|
// Push required call information into the queue. Once the Alloy
|
|
55
51
|
// library is loaded, it will process this queue and resolve/reject
|
|
@@ -59,7 +55,6 @@ export default ((window, instanceNames) => {
|
|
|
59
55
|
window[instanceName].q.push([resolve, reject, userProvidedArgs]);
|
|
60
56
|
});
|
|
61
57
|
};
|
|
62
|
-
|
|
63
58
|
window[instanceName].q = [];
|
|
64
59
|
}
|
|
65
60
|
});
|
|
@@ -9,8 +9,8 @@ the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTA
|
|
|
9
9
|
OF ANY KIND, either express or implied. See the License for the specific language
|
|
10
10
|
governing permissions and limitations under the License.
|
|
11
11
|
*/
|
|
12
|
-
import { noop } from "../../utils";
|
|
13
12
|
|
|
13
|
+
import { noop } from "../../utils";
|
|
14
14
|
const createClickHandler = ({
|
|
15
15
|
eventManager,
|
|
16
16
|
lifecycle,
|
|
@@ -19,8 +19,8 @@ const createClickHandler = ({
|
|
|
19
19
|
return clickEvent => {
|
|
20
20
|
// TODO: Consider safeguarding from the same object being clicked multiple times in rapid succession?
|
|
21
21
|
const clickedElement = clickEvent.target;
|
|
22
|
-
const event = eventManager.createEvent();
|
|
23
|
-
|
|
22
|
+
const event = eventManager.createEvent();
|
|
23
|
+
// this is to make sure a exit link personalization metric use send beacon
|
|
24
24
|
event.documentMayUnload();
|
|
25
25
|
return lifecycle.onClick({
|
|
26
26
|
event,
|
|
@@ -29,16 +29,15 @@ const createClickHandler = ({
|
|
|
29
29
|
if (event.isEmpty()) {
|
|
30
30
|
return Promise.resolve();
|
|
31
31
|
}
|
|
32
|
-
|
|
33
32
|
return eventManager.sendEvent(event);
|
|
34
|
-
})
|
|
33
|
+
})
|
|
34
|
+
// eventManager.sendEvent() will return a promise resolved to an
|
|
35
35
|
// object and we want to avoid returning any value to the customer
|
|
36
36
|
.then(noop).catch(error => {
|
|
37
37
|
handleError(error, "click collection");
|
|
38
38
|
});
|
|
39
39
|
};
|
|
40
40
|
};
|
|
41
|
-
|
|
42
41
|
export default (({
|
|
43
42
|
eventManager,
|
|
44
43
|
lifecycle,
|
|
@@ -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 { boolean, callback, objectOf, string } from "../../utils/validation";
|
|
13
14
|
export const downloadLinkQualifier = string().regexp().default("\\.(exe|zip|wav|mp3|mov|mpg|avi|wmv|pdf|doc|docx|xls|xlsx|ppt|pptx)$");
|
|
14
15
|
export default objectOf({
|
|
@@ -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
|
export default (({
|
|
13
14
|
window,
|
|
14
15
|
getLinkName,
|
|
@@ -23,19 +24,15 @@ export default (({
|
|
|
23
24
|
logger
|
|
24
25
|
}) => {
|
|
25
26
|
const anchorElement = findSupportedAnchorElement(targetElement);
|
|
26
|
-
|
|
27
27
|
if (!anchorElement) {
|
|
28
28
|
logger.info("This link click event is not triggered because the HTML element is not an anchor.");
|
|
29
29
|
return undefined;
|
|
30
30
|
}
|
|
31
|
-
|
|
32
31
|
const linkUrl = getAbsoluteUrlFromAnchorElement(window, anchorElement);
|
|
33
|
-
|
|
34
32
|
if (!linkUrl) {
|
|
35
33
|
logger.info("This link click event is not triggered because the HTML element doesn't have an URL.");
|
|
36
34
|
return undefined;
|
|
37
35
|
}
|
|
38
|
-
|
|
39
36
|
const linkType = determineLinkType(window, config, linkUrl, anchorElement);
|
|
40
37
|
const linkRegion = getLinkRegion(anchorElement);
|
|
41
38
|
const linkName = getLinkName(anchorElement);
|
|
@@ -60,17 +57,13 @@ export default (({
|
|
|
60
57
|
data: {},
|
|
61
58
|
clickedElement: targetElement
|
|
62
59
|
};
|
|
63
|
-
|
|
64
60
|
if (!onBeforeLinkClickSend) {
|
|
65
61
|
return options;
|
|
66
62
|
}
|
|
67
|
-
|
|
68
63
|
const shouldEventBeTracked = onBeforeLinkClickSend(options);
|
|
69
|
-
|
|
70
64
|
if (shouldEventBeTracked !== false) {
|
|
71
65
|
return options;
|
|
72
66
|
}
|
|
73
|
-
|
|
74
67
|
logger.info("This link click event is not triggered because it was canceled in onBeforeLinkClickSend.");
|
|
75
68
|
return undefined;
|
|
76
69
|
};
|
|
@@ -17,11 +17,9 @@ export default (({
|
|
|
17
17
|
const {
|
|
18
18
|
clickCollectionEnabled
|
|
19
19
|
} = config;
|
|
20
|
-
|
|
21
20
|
if (!clickCollectionEnabled) {
|
|
22
21
|
return () => undefined;
|
|
23
22
|
}
|
|
24
|
-
|
|
25
23
|
return ({
|
|
26
24
|
targetElement,
|
|
27
25
|
event
|
|
@@ -31,7 +29,6 @@ export default (({
|
|
|
31
29
|
config,
|
|
32
30
|
logger
|
|
33
31
|
});
|
|
34
|
-
|
|
35
32
|
if (linkDetails) {
|
|
36
33
|
event.mergeXdm(linkDetails.xdm);
|
|
37
34
|
event.setUserData(linkDetails.data);
|
|
@@ -9,38 +9,35 @@ 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 { truncateWhiteSpace } from "./utils";
|
|
13
14
|
const unsupportedNodeNames = /^(SCRIPT|STYLE|LINK|CANVAS|NOSCRIPT|#COMMENT)$/i;
|
|
15
|
+
|
|
14
16
|
/**
|
|
15
17
|
* Determines if a node qualifies as a supported link text node.
|
|
16
18
|
* @param {*} node Node to determine support for.
|
|
17
19
|
* @returns {boolean}
|
|
18
20
|
*/
|
|
19
|
-
|
|
20
21
|
const isSupportedTextNode = node => {
|
|
21
22
|
if (node && node.nodeName) {
|
|
22
23
|
if (node.nodeName.match(unsupportedNodeNames)) {
|
|
23
24
|
return false;
|
|
24
25
|
}
|
|
25
26
|
}
|
|
26
|
-
|
|
27
27
|
return true;
|
|
28
28
|
};
|
|
29
|
+
|
|
29
30
|
/**
|
|
30
31
|
* Orders and returns specified node and its child nodes in arrays of supported
|
|
31
32
|
* and unsupported nodes.
|
|
32
33
|
* @param {*} node The node to extract supported and unsupported nodes from.
|
|
33
34
|
* @returns {{supportedNodes: Array, includesUnsupportedNodes: boolean}} Node support object.
|
|
34
35
|
*/
|
|
35
|
-
|
|
36
|
-
|
|
37
36
|
const extractSupportedNodes = node => {
|
|
38
37
|
let supportedNodes = [];
|
|
39
38
|
let includesUnsupportedNodes = false;
|
|
40
|
-
|
|
41
39
|
if (isSupportedTextNode(node)) {
|
|
42
40
|
supportedNodes.push(node);
|
|
43
|
-
|
|
44
41
|
if (node.childNodes) {
|
|
45
42
|
const childNodes = Array.prototype.slice.call(node.childNodes);
|
|
46
43
|
childNodes.forEach(childNode => {
|
|
@@ -52,12 +49,12 @@ const extractSupportedNodes = node => {
|
|
|
52
49
|
} else {
|
|
53
50
|
includesUnsupportedNodes = true;
|
|
54
51
|
}
|
|
55
|
-
|
|
56
52
|
return {
|
|
57
53
|
supportedNodes,
|
|
58
54
|
includesUnsupportedNodes
|
|
59
55
|
};
|
|
60
56
|
};
|
|
57
|
+
|
|
61
58
|
/**
|
|
62
59
|
* Returns the value of a node attribute.
|
|
63
60
|
* @param {*} node The node holding the attribute.
|
|
@@ -65,24 +62,19 @@ const extractSupportedNodes = node => {
|
|
|
65
62
|
* @param {string} nodeName Optional node name constraint.
|
|
66
63
|
* @returns {string} Attribute value or undefined.
|
|
67
64
|
*/
|
|
68
|
-
|
|
69
|
-
|
|
70
65
|
const getNodeAttributeValue = (node, attributeName, nodeName) => {
|
|
71
66
|
let attributeValue;
|
|
72
|
-
|
|
73
67
|
if (!nodeName || nodeName === node.nodeName.toUpperCase()) {
|
|
74
68
|
attributeValue = node.getAttribute(attributeName);
|
|
75
69
|
}
|
|
76
|
-
|
|
77
70
|
return attributeValue;
|
|
78
71
|
};
|
|
72
|
+
|
|
79
73
|
/**
|
|
80
74
|
* Extracts the children supported nodes attributes map
|
|
81
75
|
* @param {*} nodes The nodes array holding the children nodes.
|
|
82
76
|
* The returned map contains the supported not empty children attributes values.
|
|
83
77
|
* */
|
|
84
|
-
|
|
85
|
-
|
|
86
78
|
const getChildrenAttributes = nodes => {
|
|
87
79
|
const attributes = {
|
|
88
80
|
texts: []
|
|
@@ -92,26 +84,23 @@ const getChildrenAttributes = nodes => {
|
|
|
92
84
|
if (!attributes.alt) {
|
|
93
85
|
attributes.alt = truncateWhiteSpace(supportedNode.getAttribute("alt"));
|
|
94
86
|
}
|
|
95
|
-
|
|
96
87
|
if (!attributes.title) {
|
|
97
88
|
attributes.title = truncateWhiteSpace(supportedNode.getAttribute("title"));
|
|
98
89
|
}
|
|
99
|
-
|
|
100
90
|
if (!attributes.inputValue) {
|
|
101
91
|
attributes.inputValue = truncateWhiteSpace(getNodeAttributeValue(supportedNode, "value", "INPUT"));
|
|
102
92
|
}
|
|
103
|
-
|
|
104
93
|
if (!attributes.imgSrc) {
|
|
105
94
|
attributes.imgSrc = truncateWhiteSpace(getNodeAttributeValue(supportedNode, "src", "IMG"));
|
|
106
95
|
}
|
|
107
96
|
}
|
|
108
|
-
|
|
109
97
|
if (supportedNode.nodeValue) {
|
|
110
98
|
attributes.texts.push(supportedNode.nodeValue);
|
|
111
99
|
}
|
|
112
100
|
});
|
|
113
101
|
return attributes;
|
|
114
102
|
};
|
|
103
|
+
|
|
115
104
|
/**
|
|
116
105
|
* Extracts a link-name from a given node.
|
|
117
106
|
*
|
|
@@ -132,20 +121,16 @@ const getChildrenAttributes = nodes => {
|
|
|
132
121
|
* @param {*} node The node to find link text for.
|
|
133
122
|
* @returns {string} link-name or an empty string if not link-name is found.
|
|
134
123
|
*/
|
|
135
|
-
|
|
136
|
-
|
|
137
124
|
export default (node => {
|
|
138
125
|
let nodeText = truncateWhiteSpace(node.innerText || node.textContent);
|
|
139
|
-
const nodes = extractSupportedNodes(node);
|
|
140
|
-
|
|
126
|
+
const nodes = extractSupportedNodes(node);
|
|
127
|
+
// if contains unsupported nodes we want children node attributes
|
|
141
128
|
if (!nodeText || nodes.includesUnsupportedNodes) {
|
|
142
129
|
const attributesMap = getChildrenAttributes(nodes);
|
|
143
130
|
nodeText = truncateWhiteSpace(attributesMap.texts.join(""));
|
|
144
|
-
|
|
145
131
|
if (!nodeText) {
|
|
146
132
|
nodeText = attributesMap.alt || attributesMap.title || attributesMap.inputValue || attributesMap.imgSrc;
|
|
147
133
|
}
|
|
148
134
|
}
|
|
149
|
-
|
|
150
135
|
return nodeText || "";
|
|
151
136
|
});
|
|
@@ -9,31 +9,27 @@ 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 { truncateWhiteSpace } from "./utils";
|
|
13
14
|
import { isNonEmptyString } from "../../utils";
|
|
14
15
|
const semanticElements = /^(HEADER|MAIN|FOOTER|NAV)$/i;
|
|
15
|
-
|
|
16
16
|
const getAriaRegionLabel = node => {
|
|
17
17
|
let regionLabel;
|
|
18
|
-
|
|
19
18
|
if (node.role === "region" && isNonEmptyString(node["aria-label"])) {
|
|
20
19
|
regionLabel = node["aria-label"];
|
|
21
20
|
}
|
|
22
|
-
|
|
23
21
|
return regionLabel;
|
|
24
22
|
};
|
|
25
|
-
|
|
26
23
|
const getSectionNodeName = node => {
|
|
27
24
|
let nodeName;
|
|
28
|
-
|
|
29
25
|
if (node && node.nodeName) {
|
|
30
26
|
if (node.nodeName.match(semanticElements)) {
|
|
31
27
|
nodeName = node.nodeName;
|
|
32
28
|
}
|
|
33
29
|
}
|
|
34
|
-
|
|
35
30
|
return nodeName;
|
|
36
31
|
};
|
|
32
|
+
|
|
37
33
|
/**
|
|
38
34
|
* Extracts a node link-region.
|
|
39
35
|
*
|
|
@@ -48,21 +44,15 @@ const getSectionNodeName = node => {
|
|
|
48
44
|
* @param {*} node The node to find link region for.
|
|
49
45
|
* @returns {string} link-region.
|
|
50
46
|
*/
|
|
51
|
-
|
|
52
|
-
|
|
53
47
|
export default (node => {
|
|
54
48
|
let linkParentNode = node.parentNode;
|
|
55
49
|
let regionName;
|
|
56
|
-
|
|
57
50
|
while (linkParentNode) {
|
|
58
51
|
regionName = truncateWhiteSpace(linkParentNode.id || getAriaRegionLabel(linkParentNode) || getSectionNodeName(linkParentNode));
|
|
59
|
-
|
|
60
52
|
if (regionName) {
|
|
61
53
|
return regionName;
|
|
62
54
|
}
|
|
63
|
-
|
|
64
55
|
linkParentNode = linkParentNode.parentNode;
|
|
65
56
|
}
|
|
66
|
-
|
|
67
57
|
return "BODY";
|
|
68
58
|
});
|
|
@@ -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 attachClickActivityCollector from "./attachClickActivityCollector";
|
|
13
14
|
import configValidators from "./configValidators";
|
|
14
15
|
import createLinkClick from "./createLinkClick";
|
|
@@ -24,7 +25,6 @@ const getLinkDetails = createGetLinkDetails({
|
|
|
24
25
|
findSupportedAnchorElement,
|
|
25
26
|
determineLinkType
|
|
26
27
|
});
|
|
27
|
-
|
|
28
28
|
const createActivityCollector = ({
|
|
29
29
|
config,
|
|
30
30
|
eventManager,
|
|
@@ -46,7 +46,8 @@ const createActivityCollector = ({
|
|
|
46
46
|
eventManager,
|
|
47
47
|
lifecycle,
|
|
48
48
|
handleError
|
|
49
|
-
});
|
|
49
|
+
});
|
|
50
|
+
// TODO: createScrollActivityCollector ...
|
|
50
51
|
},
|
|
51
52
|
|
|
52
53
|
onClick({
|
|
@@ -58,14 +59,11 @@ const createActivityCollector = ({
|
|
|
58
59
|
event
|
|
59
60
|
});
|
|
60
61
|
}
|
|
61
|
-
|
|
62
62
|
}
|
|
63
63
|
};
|
|
64
64
|
};
|
|
65
|
-
|
|
66
65
|
createActivityCollector.namespace = "ActivityCollector";
|
|
67
66
|
createActivityCollector.configValidators = configValidators;
|
|
68
|
-
|
|
69
67
|
createActivityCollector.buildOnInstanceConfiguredExtraParams = ({
|
|
70
68
|
config,
|
|
71
69
|
logger
|
|
@@ -80,5 +78,4 @@ createActivityCollector.buildOnInstanceConfiguredExtraParams = ({
|
|
|
80
78
|
}
|
|
81
79
|
};
|
|
82
80
|
};
|
|
83
|
-
|
|
84
81
|
export default createActivityCollector;
|
|
@@ -9,10 +9,10 @@ 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
|
const urlStartsWithScheme = url => {
|
|
13
14
|
return url && /^[a-z0-9]+:\/\//i.test(url);
|
|
14
15
|
};
|
|
15
|
-
|
|
16
16
|
const getAbsoluteUrlFromAnchorElement = (window, element) => {
|
|
17
17
|
const loc = window.location;
|
|
18
18
|
let url = element.href ? element.href : "";
|
|
@@ -20,71 +20,55 @@ const getAbsoluteUrlFromAnchorElement = (window, element) => {
|
|
|
20
20
|
protocol,
|
|
21
21
|
host
|
|
22
22
|
} = element;
|
|
23
|
-
|
|
24
23
|
if (!urlStartsWithScheme(url)) {
|
|
25
24
|
if (!protocol) {
|
|
26
25
|
protocol = loc.protocol ? loc.protocol : "";
|
|
27
26
|
}
|
|
28
|
-
|
|
29
27
|
protocol = protocol ? `${protocol}//` : "";
|
|
30
|
-
|
|
31
28
|
if (!host) {
|
|
32
29
|
host = loc.host ? loc.host : "";
|
|
33
30
|
}
|
|
34
|
-
|
|
35
31
|
let path = "";
|
|
36
|
-
|
|
37
32
|
if (url.substring(0, 1) !== "/") {
|
|
38
33
|
let indx = loc.pathname.lastIndexOf("/");
|
|
39
34
|
indx = indx < 0 ? 0 : indx;
|
|
40
35
|
path = loc.pathname.substring(0, indx);
|
|
41
36
|
}
|
|
42
|
-
|
|
43
37
|
url = `${protocol}${host}${path}/${url}`;
|
|
44
38
|
}
|
|
45
|
-
|
|
46
39
|
return url;
|
|
47
40
|
};
|
|
48
|
-
|
|
49
41
|
const isSupportedAnchorElement = element => {
|
|
50
42
|
if (element.href && (element.tagName === "A" || element.tagName === "AREA") && (!element.onclick || !element.protocol || element.protocol.toLowerCase().indexOf("javascript") < 0)) {
|
|
51
43
|
return true;
|
|
52
44
|
}
|
|
53
|
-
|
|
54
45
|
return false;
|
|
55
46
|
};
|
|
56
|
-
|
|
57
47
|
const trimQueryFromUrl = url => {
|
|
58
48
|
const questionMarkIndex = url.indexOf("?");
|
|
59
49
|
const hashIndex = url.indexOf("#");
|
|
60
|
-
|
|
61
50
|
if (questionMarkIndex >= 0 && (questionMarkIndex < hashIndex || hashIndex < 0)) {
|
|
62
51
|
return url.substring(0, questionMarkIndex);
|
|
63
52
|
}
|
|
64
|
-
|
|
65
53
|
if (hashIndex >= 0) {
|
|
66
54
|
return url.substring(0, hashIndex);
|
|
67
55
|
}
|
|
68
|
-
|
|
69
56
|
return url;
|
|
70
57
|
};
|
|
71
|
-
|
|
72
58
|
const isDownloadLink = (downloadLinkQualifier, linkUrl, clickedObj) => {
|
|
73
59
|
const re = new RegExp(downloadLinkQualifier);
|
|
74
60
|
const trimmedLinkUrl = trimQueryFromUrl(linkUrl).toLowerCase();
|
|
75
61
|
return clickedObj.download ? true : re.test(trimmedLinkUrl);
|
|
76
62
|
};
|
|
77
|
-
|
|
78
63
|
const isExitLink = (window, linkUrl) => {
|
|
79
64
|
const currentHostname = window.location.hostname.toLowerCase();
|
|
80
65
|
const trimmedLinkUrl = trimQueryFromUrl(linkUrl).toLowerCase();
|
|
81
|
-
|
|
82
66
|
if (trimmedLinkUrl.indexOf(currentHostname) >= 0) {
|
|
83
67
|
return false;
|
|
84
68
|
}
|
|
85
|
-
|
|
86
69
|
return true;
|
|
87
70
|
};
|
|
71
|
+
|
|
88
72
|
/**
|
|
89
73
|
* Reduces repeated whitespace within a string. Whitespace surrounding the string
|
|
90
74
|
* is trimmed and any occurrence of whitespace within the string is replaced with
|
|
@@ -92,40 +76,29 @@ const isExitLink = (window, linkUrl) => {
|
|
|
92
76
|
* @param {string} str String to be formatted.
|
|
93
77
|
* @returns {string} Formatted string.
|
|
94
78
|
*/
|
|
95
|
-
|
|
96
|
-
|
|
97
79
|
const truncateWhiteSpace = str => {
|
|
98
80
|
return str && str.replace(/\s+/g, " ").trim();
|
|
99
81
|
};
|
|
100
|
-
|
|
101
82
|
const isEmptyString = str => {
|
|
102
83
|
return !str || str.length === 0;
|
|
103
84
|
};
|
|
104
|
-
|
|
105
85
|
const determineLinkType = (window, config, linkUrl, clickedObj) => {
|
|
106
86
|
let linkType = "other";
|
|
107
|
-
|
|
108
87
|
if (isDownloadLink(config.downloadLinkQualifier, linkUrl, clickedObj)) {
|
|
109
88
|
linkType = "download";
|
|
110
89
|
} else if (isExitLink(window, linkUrl)) {
|
|
111
90
|
linkType = "exit";
|
|
112
91
|
}
|
|
113
|
-
|
|
114
92
|
return linkType;
|
|
115
93
|
};
|
|
116
|
-
|
|
117
94
|
const findSupportedAnchorElement = targetElement => {
|
|
118
95
|
let node = targetElement;
|
|
119
|
-
|
|
120
96
|
while (node) {
|
|
121
97
|
if (isSupportedAnchorElement(node)) {
|
|
122
98
|
return node;
|
|
123
99
|
}
|
|
124
|
-
|
|
125
100
|
node = node.parentNode;
|
|
126
101
|
}
|
|
127
|
-
|
|
128
102
|
return null;
|
|
129
103
|
};
|
|
130
|
-
|
|
131
104
|
export { urlStartsWithScheme, getAbsoluteUrlFromAnchorElement, isSupportedAnchorElement, isDownloadLink, isEmptyString, isExitLink, trimQueryFromUrl, truncateWhiteSpace, findSupportedAnchorElement, determineLinkType };
|
|
@@ -9,10 +9,10 @@ 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 { createLoggingCookieJar, cookieJar } from "../../utils";
|
|
13
14
|
import injectProcessDestinations from "./injectProcessDestinations";
|
|
14
15
|
import injectProcessResponse from "./injectProcessResponse";
|
|
15
|
-
|
|
16
16
|
const createAudiences = ({
|
|
17
17
|
logger,
|
|
18
18
|
fireReferrerHideableImage
|
|
@@ -43,6 +43,5 @@ const createAudiences = ({
|
|
|
43
43
|
commands: {}
|
|
44
44
|
};
|
|
45
45
|
};
|
|
46
|
-
|
|
47
46
|
createAudiences.namespace = "Audiences";
|
|
48
47
|
export default createAudiences;
|
|
@@ -9,12 +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
|
-
import { noop } from "../../utils";
|
|
13
12
|
|
|
13
|
+
import { noop } from "../../utils";
|
|
14
14
|
const createResultLogMessage = (urlDestination, success) => {
|
|
15
15
|
return `URL destination ${success ? "succeeded" : "failed"}: ${urlDestination.spec.url}`;
|
|
16
16
|
};
|
|
17
|
-
|
|
18
17
|
export default (({
|
|
19
18
|
fireReferrerHideableImage,
|
|
20
19
|
logger,
|
|
@@ -25,7 +24,6 @@ export default (({
|
|
|
25
24
|
sameSite: "none",
|
|
26
25
|
secure: true
|
|
27
26
|
} : {};
|
|
28
|
-
|
|
29
27
|
const processCookies = destinations => {
|
|
30
28
|
const cookieDestinations = destinations.filter(dest => dest.type === "cookie");
|
|
31
29
|
cookieDestinations.forEach(dest => {
|
|
@@ -43,19 +41,18 @@ export default (({
|
|
|
43
41
|
});
|
|
44
42
|
});
|
|
45
43
|
};
|
|
46
|
-
|
|
47
44
|
const processUrls = destinations => {
|
|
48
45
|
const urlDestinations = destinations.filter(dest => dest.type === "url");
|
|
49
46
|
return Promise.all(urlDestinations.map(urlDestination => {
|
|
50
47
|
return fireReferrerHideableImage(urlDestination.spec).then(() => {
|
|
51
48
|
logger.info(createResultLogMessage(urlDestination, true));
|
|
52
|
-
}).catch(() => {
|
|
49
|
+
}).catch(() => {
|
|
50
|
+
// We intentionally do not throw an error if destinations fail. We
|
|
53
51
|
// consider it a non-critical failure and therefore do not want it to
|
|
54
52
|
// reject the promise handed back to the customer.
|
|
55
53
|
});
|
|
56
54
|
})).then(noop);
|
|
57
55
|
};
|
|
58
|
-
|
|
59
56
|
return destinations => {
|
|
60
57
|
processCookies(destinations);
|
|
61
58
|
return processUrls(destinations);
|
|
@@ -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
|
export default (({
|
|
13
14
|
processDestinations
|
|
14
15
|
}) => {
|
|
@@ -18,7 +19,6 @@ export default (({
|
|
|
18
19
|
const destinations = response.getPayloadsByType("activation:push");
|
|
19
20
|
return processDestinations(destinations);
|
|
20
21
|
};
|
|
21
|
-
|
|
22
22
|
const retrievePullDestinations = ({
|
|
23
23
|
response
|
|
24
24
|
}) => {
|
|
@@ -26,7 +26,6 @@ export default (({
|
|
|
26
26
|
destinations: response.getPayloadsByType("activation:pull")
|
|
27
27
|
};
|
|
28
28
|
};
|
|
29
|
-
|
|
30
29
|
return ({
|
|
31
30
|
response
|
|
32
31
|
}) => {
|
|
@@ -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 { flatMap } from "../../utils";
|
|
13
14
|
export default ((config, logger, optionalContexts, requiredContexts) => {
|
|
14
15
|
const configuredContexts = config.context;
|
|
@@ -16,7 +17,6 @@ export default ((config, logger, optionalContexts, requiredContexts) => {
|
|
|
16
17
|
if (optionalContexts[context]) {
|
|
17
18
|
return [optionalContexts[context]];
|
|
18
19
|
}
|
|
19
|
-
|
|
20
20
|
logger.warn(`Invalid context[${i}]: '${context}' is not available.`);
|
|
21
21
|
return [];
|
|
22
22
|
}).concat(requiredContexts);
|
|
@@ -29,7 +29,6 @@ export default ((config, logger, optionalContexts, requiredContexts) => {
|
|
|
29
29
|
const xdm = {};
|
|
30
30
|
return Promise.all(contexts.map(context => Promise.resolve(context(xdm, logger)))).then(() => event.mergeXdm(xdm));
|
|
31
31
|
}
|
|
32
|
-
|
|
33
32
|
}
|
|
34
33
|
};
|
|
35
34
|
});
|
|
@@ -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 injectWeb from "./injectWeb";
|
|
13
14
|
import injectDevice from "./injectDevice";
|
|
14
15
|
import injectEnvironment from "./injectEnvironment";
|
|
@@ -33,18 +34,17 @@ const defaultEnabledContexts = {
|
|
|
33
34
|
const defaultDisabledContexts = {
|
|
34
35
|
highEntropyUserAgentHints
|
|
35
36
|
};
|
|
36
|
-
const optionalContexts = {
|
|
37
|
+
const optionalContexts = {
|
|
38
|
+
...defaultEnabledContexts,
|
|
37
39
|
...defaultDisabledContexts
|
|
38
40
|
};
|
|
39
41
|
const requiredContexts = [timestamp, implementationDetails];
|
|
40
|
-
|
|
41
42
|
const createContext = ({
|
|
42
43
|
config,
|
|
43
44
|
logger
|
|
44
45
|
}) => {
|
|
45
46
|
return createComponent(config, logger, optionalContexts, requiredContexts);
|
|
46
47
|
};
|
|
47
|
-
|
|
48
48
|
createContext.namespace = "Context";
|
|
49
49
|
createContext.configValidators = objectOf({
|
|
50
50
|
context: arrayOf(string()).default(Object.keys(defaultEnabledContexts))
|