@adobe/alloy 2.19.0-beta.0 → 2.19.0-beta.2
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 +23 -35
- package/libEs5/components/DataCollector/validateApplyResponse.js +0 -3
- package/libEs5/components/DataCollector/validateUserEventOptions.js +0 -5
- 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 +24 -39
- package/libEs5/components/Personalization/createClickStorage.js +1 -10
- package/libEs5/components/Personalization/createCollect.js +5 -15
- package/libEs5/components/Personalization/createComponent.js +25 -35
- package/libEs5/components/Personalization/createFetchDataHandler.js +35 -46
- package/libEs5/components/Personalization/createGetPageLocation.js +0 -2
- package/libEs5/components/Personalization/createOnClickHandler.js +6 -16
- package/libEs5/components/Personalization/createPendingNotificationsHandler.js +1 -4
- package/libEs5/components/Personalization/createPersonalizationDetails.js +17 -29
- package/libEs5/components/Personalization/createSetTargetMigration.js +0 -5
- package/libEs5/components/Personalization/createViewCacheManager.js +2 -15
- package/libEs5/components/Personalization/createViewChangeHandler.js +4 -11
- package/libEs5/components/Personalization/dom-actions/action.js +3 -19
- 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/libEs5/components/Personalization/dom-actions/createPreprocess.js +0 -4
- 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 +0 -1
- package/libEs5/components/Personalization/dom-actions/initDomActionsModules.js +0 -4
- 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 +2 -16
- 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 +4 -11
- package/libEs5/components/Personalization/handlers/createProcessHtmlContent.js +3 -8
- package/libEs5/components/Personalization/handlers/createProcessPropositions.js +6 -51
- package/libEs5/components/Personalization/handlers/createProcessRedirect.js +5 -8
- package/libEs5/components/Personalization/handlers/injectCreateProposition.js +19 -25
- package/libEs5/components/Personalization/handlers/processDefaultContent.js +0 -2
- package/libEs5/components/Personalization/index.js +17 -42
- package/libEs5/components/Personalization/utils/addRenderAttemptedToDecisions.js +1 -4
- package/libEs5/components/Personalization/utils/createAsyncArray.js +0 -3
- 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 +2 -6
- 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 +24 -33
- package/libEs5/core/createEventManager.js +26 -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 +0 -5
- 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 +0 -56
- 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 +1 -10
- package/libEs6/components/DataCollector/validateUserEventOptions.js +1 -1
- 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 +7 -11
- package/libEs6/components/Personalization/createClickStorage.js +1 -8
- package/libEs6/components/Personalization/createCollect.js +0 -5
- package/libEs6/components/Personalization/createComponent.js +5 -11
- package/libEs6/components/Personalization/createFetchDataHandler.js +6 -12
- package/libEs6/components/Personalization/createGetPageLocation.js +1 -0
- package/libEs6/components/Personalization/createOnClickHandler.js +1 -4
- package/libEs6/components/Personalization/createPersonalizationDetails.js +1 -22
- package/libEs6/components/Personalization/createSetTargetMigration.js +1 -1
- package/libEs6/components/Personalization/createViewCacheManager.js +3 -12
- package/libEs6/components/Personalization/createViewChangeHandler.js +1 -2
- package/libEs6/components/Personalization/dom-actions/action.js +1 -2
- 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/createPreprocess.js +0 -1
- 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 +1 -0
- package/libEs6/components/Personalization/dom-actions/initDomActionsModules.js +1 -0
- 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 +1 -7
- 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 +0 -5
- package/libEs6/components/Personalization/handlers/createProcessHtmlContent.js +0 -3
- package/libEs6/components/Personalization/handlers/createProcessPropositions.js +1 -28
- package/libEs6/components/Personalization/handlers/createProcessRedirect.js +2 -3
- package/libEs6/components/Personalization/handlers/injectCreateProposition.js +5 -21
- package/libEs6/components/Personalization/index.js +1 -2
- package/libEs6/components/Personalization/utils/addRenderAttemptedToDecisions.js +1 -0
- package/libEs6/components/Personalization/utils/createAsyncArray.js +0 -2
- 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 +0 -1
- 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 +14 -36
- package/libEs6/core/createEventManager.js +5 -8
- 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 +0 -3
- 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 +1 -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
|
@@ -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
|
getDebugEnabled,
|
|
@@ -17,14 +18,11 @@ export default (({
|
|
|
17
18
|
context
|
|
18
19
|
}) => {
|
|
19
20
|
let prefix = `[${context.instanceName}]`;
|
|
20
|
-
|
|
21
21
|
if (context.componentName) {
|
|
22
22
|
prefix += ` [${context.componentName}]`;
|
|
23
23
|
}
|
|
24
|
-
|
|
25
24
|
const notifyMonitors = (method, data) => {
|
|
26
25
|
const monitors = getMonitors();
|
|
27
|
-
|
|
28
26
|
if (monitors.length > 0) {
|
|
29
27
|
const dataWithContext = assign({}, context, data);
|
|
30
28
|
monitors.forEach(monitor => {
|
|
@@ -34,64 +32,52 @@ export default (({
|
|
|
34
32
|
});
|
|
35
33
|
}
|
|
36
34
|
};
|
|
37
|
-
|
|
38
35
|
const log = (level, ...rest) => {
|
|
39
36
|
notifyMonitors("onBeforeLog", {
|
|
40
37
|
level,
|
|
41
38
|
arguments: rest
|
|
42
39
|
});
|
|
43
|
-
|
|
44
40
|
if (getDebugEnabled()) {
|
|
45
41
|
console[level](prefix, ...rest);
|
|
46
42
|
}
|
|
47
43
|
};
|
|
48
|
-
|
|
49
44
|
return {
|
|
50
45
|
get enabled() {
|
|
51
46
|
return getMonitors().length > 0 || getDebugEnabled();
|
|
52
47
|
},
|
|
53
|
-
|
|
54
48
|
logOnInstanceCreated(data) {
|
|
55
49
|
notifyMonitors("onInstanceCreated", data);
|
|
56
50
|
log("info", "Instance initialized.");
|
|
57
51
|
},
|
|
58
|
-
|
|
59
52
|
logOnInstanceConfigured(data) {
|
|
60
53
|
notifyMonitors("onInstanceConfigured", data);
|
|
61
54
|
log("info", "Instance configured. Computed configuration:", data.config);
|
|
62
55
|
},
|
|
63
|
-
|
|
64
56
|
logOnBeforeCommand(data) {
|
|
65
57
|
notifyMonitors("onBeforeCommand", data);
|
|
66
58
|
log("info", `Executing ${data.commandName} command. Options:`, data.options);
|
|
67
59
|
},
|
|
68
|
-
|
|
69
60
|
logOnCommandResolved(data) {
|
|
70
61
|
notifyMonitors("onCommandResolved", data);
|
|
71
62
|
log("info", `${data.commandName} command resolved. Result:`, data.result);
|
|
72
63
|
},
|
|
73
|
-
|
|
74
64
|
logOnCommandRejected(data) {
|
|
75
65
|
notifyMonitors("onCommandRejected", data);
|
|
76
66
|
log("error", `${data.commandName} command was rejected. Error:`, data.error);
|
|
77
67
|
},
|
|
78
|
-
|
|
79
68
|
logOnBeforeNetworkRequest(data) {
|
|
80
69
|
notifyMonitors("onBeforeNetworkRequest", data);
|
|
81
70
|
log("info", `Request ${data.requestId}: Sending request.`, data.payload);
|
|
82
71
|
},
|
|
83
|
-
|
|
84
72
|
logOnNetworkResponse(data) {
|
|
85
73
|
notifyMonitors("onNetworkResponse", data);
|
|
86
74
|
const messagesSuffix = data.parsedBody || data.body ? `response body:` : `no response body.`;
|
|
87
75
|
log("info", `Request ${data.requestId}: Received response with status code ${data.statusCode} and ${messagesSuffix}`, data.parsedBody || data.body);
|
|
88
76
|
},
|
|
89
|
-
|
|
90
77
|
logOnNetworkError(data) {
|
|
91
78
|
notifyMonitors("onNetworkError", data);
|
|
92
79
|
log("error", `Request ${data.requestId}: Network request failed.`, data.error);
|
|
93
80
|
},
|
|
94
|
-
|
|
95
81
|
/**
|
|
96
82
|
* Outputs informational message to the web console. In some
|
|
97
83
|
* browsers a small "i" icon is displayed next to these items
|
|
@@ -99,13 +85,11 @@ export default (({
|
|
|
99
85
|
* @param {...*} arg Any argument to be logged.
|
|
100
86
|
*/
|
|
101
87
|
info: log.bind(null, "info"),
|
|
102
|
-
|
|
103
88
|
/**
|
|
104
89
|
* Outputs a warning message to the web console.
|
|
105
90
|
* @param {...*} arg Any argument to be logged.
|
|
106
91
|
*/
|
|
107
92
|
warn: log.bind(null, "warn"),
|
|
108
|
-
|
|
109
93
|
/**
|
|
110
94
|
* Outputs an error message to the web console.
|
|
111
95
|
* @param {...*} arg Any argument to be logged.
|
|
@@ -32,9 +32,7 @@ export default (({
|
|
|
32
32
|
const onRequestFailureCallbackAggregator = createCallbackAggregator();
|
|
33
33
|
onRequestFailureCallbackAggregator.add(lifecycle.onRequestFailure);
|
|
34
34
|
onRequestFailureCallbackAggregator.add(runOnRequestFailureCallbacks);
|
|
35
|
-
|
|
36
35
|
const getHeader = key => responseHeaders[key];
|
|
37
|
-
|
|
38
36
|
return lifecycle.onBeforeRequest({
|
|
39
37
|
request,
|
|
40
38
|
onResponse: onResponseCallbackAggregator.add,
|
|
@@ -48,8 +46,9 @@ export default (({
|
|
|
48
46
|
const response = createResponse({
|
|
49
47
|
content: responseBody,
|
|
50
48
|
getHeader
|
|
51
|
-
});
|
|
49
|
+
});
|
|
52
50
|
|
|
51
|
+
// This will clobber any cookies set via HTTP from the server. So care should be given to remove any state:store handles if that is not desirable
|
|
53
52
|
cookieTransfer.responseToCookies(response);
|
|
54
53
|
return onResponseCallbackAggregator.call({
|
|
55
54
|
response
|
|
@@ -9,32 +9,31 @@ 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
|
logger
|
|
14
15
|
}) => adobeEdgeHeader => {
|
|
15
16
|
if (adobeEdgeHeader) {
|
|
16
17
|
const headerParts = adobeEdgeHeader.split(";");
|
|
17
|
-
|
|
18
18
|
if (headerParts.length >= 2 && headerParts[1].length > 0) {
|
|
19
19
|
try {
|
|
20
|
-
const regionId = parseInt(headerParts[1], 10);
|
|
20
|
+
const regionId = parseInt(headerParts[1], 10);
|
|
21
|
+
// eslint recommends using Number.isNaN instead, but this function is
|
|
21
22
|
// not available in Internet Explorer. Number.isNaN is more robust to
|
|
22
23
|
// non-numeric parameters. Since we already know regionId will be an
|
|
23
24
|
// integer, using isNaN is okay.
|
|
24
25
|
// https://github.com/airbnb/javascript#standard-library--isnan
|
|
25
26
|
// eslint-disable-next-line no-restricted-globals
|
|
26
|
-
|
|
27
27
|
if (!isNaN(regionId)) {
|
|
28
28
|
return {
|
|
29
29
|
regionId
|
|
30
30
|
};
|
|
31
31
|
}
|
|
32
|
-
} catch (e) {
|
|
32
|
+
} catch (e) {
|
|
33
|
+
// No need to do anything. The log statement below will log an error
|
|
33
34
|
}
|
|
34
35
|
}
|
|
35
|
-
|
|
36
36
|
logger.warn(`Invalid adobe edge: "${adobeEdgeHeader}"`);
|
|
37
37
|
}
|
|
38
|
-
|
|
39
38
|
return {};
|
|
40
39
|
});
|
|
@@ -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 { getNamespacedCookieName } from "../../utils";
|
|
13
14
|
import { CLUSTER } from "../../constants/cookieNameKey";
|
|
14
15
|
import { MBOX_EDGE_CLUSTER } from "../../constants/legacyCookies";
|
|
@@ -17,19 +18,14 @@ export default (({
|
|
|
17
18
|
cookieJar
|
|
18
19
|
}) => {
|
|
19
20
|
const clusterCookieName = getNamespacedCookieName(orgId, CLUSTER);
|
|
20
|
-
|
|
21
21
|
const fromClusterCookie = () => cookieJar.get(clusterCookieName);
|
|
22
|
-
|
|
23
22
|
const fromTarget = () => {
|
|
24
23
|
const mboxEdgeCluster = cookieJar.get(MBOX_EDGE_CLUSTER);
|
|
25
|
-
|
|
26
24
|
if (mboxEdgeCluster) {
|
|
27
25
|
return `t${mboxEdgeCluster}`;
|
|
28
26
|
}
|
|
29
|
-
|
|
30
27
|
return undefined;
|
|
31
28
|
};
|
|
32
|
-
|
|
33
29
|
return () => {
|
|
34
30
|
return fromClusterCookie() || fromTarget();
|
|
35
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 { NO_CONTENT } from "../../constants/httpStatusCode";
|
|
13
14
|
const MESSAGE_PREFIX = "The server responded with a";
|
|
14
15
|
export default (({
|
|
@@ -20,13 +21,11 @@ export default (({
|
|
|
20
21
|
body,
|
|
21
22
|
parsedBody
|
|
22
23
|
} = networkResponse;
|
|
23
|
-
|
|
24
24
|
if (statusCode < 200 || statusCode >= 300 || !parsedBody && statusCode !== NO_CONTENT || parsedBody && !Array.isArray(parsedBody.handle)) {
|
|
25
25
|
const bodyToLog = parsedBody ? JSON.stringify(parsedBody, null, 2) : body;
|
|
26
26
|
const messageSuffix = bodyToLog ? `response body:\n${bodyToLog}` : `no response body.`;
|
|
27
27
|
throw new Error(`${MESSAGE_PREFIX} status code ${statusCode} and ${messageSuffix}`);
|
|
28
28
|
}
|
|
29
|
-
|
|
30
29
|
if (parsedBody) {
|
|
31
30
|
const {
|
|
32
31
|
warnings = [],
|
|
@@ -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 { ID_THIRD_PARTY as ID_THIRD_PARTY_DOMAIN } from "../../constants/domain";
|
|
13
14
|
import apiVersion from "../../constants/apiVersion";
|
|
14
15
|
import { createCallbackAggregator, noop } from "../../utils";
|
|
@@ -29,11 +30,11 @@ export default (({
|
|
|
29
30
|
edgeBasePath,
|
|
30
31
|
datastreamId
|
|
31
32
|
} = config;
|
|
33
|
+
|
|
32
34
|
/**
|
|
33
35
|
* Sends a network request that is aware of payload interfaces,
|
|
34
36
|
* lifecycle methods, configured edge domains, response structures, etc.
|
|
35
37
|
*/
|
|
36
|
-
|
|
37
38
|
return ({
|
|
38
39
|
request,
|
|
39
40
|
runOnResponseCallbacks = noop,
|
|
@@ -55,7 +56,6 @@ export default (({
|
|
|
55
56
|
const edgeBasePathWithLocationHint = locationHint ? `${edgeBasePath}/${locationHint}` : edgeBasePath;
|
|
56
57
|
const configId = request.getDatastreamIdOverride() || datastreamId;
|
|
57
58
|
const payload = request.getPayload();
|
|
58
|
-
|
|
59
59
|
if (configId !== datastreamId) {
|
|
60
60
|
payload.mergeMeta({
|
|
61
61
|
sdkConfig: {
|
|
@@ -65,7 +65,6 @@ export default (({
|
|
|
65
65
|
}
|
|
66
66
|
});
|
|
67
67
|
}
|
|
68
|
-
|
|
69
68
|
const url = `https://${endpointDomain}/${edgeBasePathWithLocationHint}/${apiVersion}/${request.getAction()}?configId=${configId}&requestId=${request.getId()}${getAssuranceValidationTokenParams()}`;
|
|
70
69
|
cookieTransfer.cookiesToPayload(payload, endpointDomain);
|
|
71
70
|
return sendNetworkRequest({
|
|
@@ -87,11 +86,12 @@ export default (({
|
|
|
87
86
|
content: parsedBody,
|
|
88
87
|
getHeader
|
|
89
88
|
});
|
|
90
|
-
cookieTransfer.responseToCookies(response);
|
|
89
|
+
cookieTransfer.responseToCookies(response);
|
|
90
|
+
|
|
91
|
+
// Notice we're calling the onResponse lifecycle method even if there are errors
|
|
91
92
|
// inside the response body. This is because the full request didn't actually fail--
|
|
92
93
|
// only portions of it that are considered non-fatal (a specific, non-critical
|
|
93
94
|
// Konductor plugin, for example).
|
|
94
|
-
|
|
95
95
|
return onResponseCallbackAggregator.call({
|
|
96
96
|
response
|
|
97
97
|
}).then(mergeLifecycleResponses);
|
package/libEs6/core/index.js
CHANGED
|
@@ -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 createInstanceFunction from "./createInstanceFunction";
|
|
13
14
|
import { getApexDomain, injectStorage, cookieJar, isFunction, createLoggingCookieJar, injectFireReferrerHideableImage } from "../utils";
|
|
14
15
|
import createLogController from "./createLogController";
|
|
@@ -48,11 +49,11 @@ const {
|
|
|
48
49
|
fetch,
|
|
49
50
|
navigator,
|
|
50
51
|
XMLHttpRequest
|
|
51
|
-
} = window;
|
|
52
|
-
// eslint-disable-next-line no-underscore-dangle
|
|
52
|
+
} = window;
|
|
53
53
|
|
|
54
|
+
// set this up as a function so that monitors can be added at anytime
|
|
55
|
+
// eslint-disable-next-line no-underscore-dangle
|
|
54
56
|
const getMonitors = () => window.__alloyMonitors || [];
|
|
55
|
-
|
|
56
57
|
const coreConfigValidators = createCoreConfigs();
|
|
57
58
|
const apexDomain = getApexDomain(window, cookieJar);
|
|
58
59
|
const sendFetchRequest = isFunction(fetch) ? injectSendFetchRequest({
|
|
@@ -75,18 +76,15 @@ export const createExecuteCommand = ({
|
|
|
75
76
|
}) => {
|
|
76
77
|
const componentRegistry = createComponentRegistry();
|
|
77
78
|
const lifecycle = createLifecycle(componentRegistry);
|
|
78
|
-
|
|
79
79
|
const setDebugCommand = options => {
|
|
80
80
|
setDebugEnabled(options.enabled, {
|
|
81
81
|
fromConfig: false
|
|
82
82
|
});
|
|
83
83
|
};
|
|
84
|
-
|
|
85
84
|
const loggingCookieJar = createLoggingCookieJar({
|
|
86
85
|
logger,
|
|
87
86
|
cookieJar
|
|
88
87
|
});
|
|
89
|
-
|
|
90
88
|
const configureCommand = options => {
|
|
91
89
|
const config = buildAndValidateConfig({
|
|
92
90
|
options,
|
|
@@ -175,7 +173,6 @@ export const createExecuteCommand = ({
|
|
|
175
173
|
componentCreators,
|
|
176
174
|
lifecycle,
|
|
177
175
|
componentRegistry,
|
|
178
|
-
|
|
179
176
|
getImmediatelyAvailableTools(componentName) {
|
|
180
177
|
const componentLogger = createComponentLogger(componentName);
|
|
181
178
|
return {
|
|
@@ -195,10 +192,8 @@ export const createExecuteCommand = ({
|
|
|
195
192
|
apexDomain
|
|
196
193
|
};
|
|
197
194
|
}
|
|
198
|
-
|
|
199
195
|
});
|
|
200
196
|
};
|
|
201
|
-
|
|
202
197
|
const handleError = injectHandleError({
|
|
203
198
|
errorPrefix: `[${instanceName}]`,
|
|
204
199
|
logger
|
|
@@ -215,7 +210,6 @@ export const createExecuteCommand = ({
|
|
|
215
210
|
export default (() => {
|
|
216
211
|
// eslint-disable-next-line no-underscore-dangle
|
|
217
212
|
const instanceNames = window.__alloyNS;
|
|
218
|
-
|
|
219
213
|
if (instanceNames) {
|
|
220
214
|
instanceNames.forEach(instanceName => {
|
|
221
215
|
const logController = createLogController({
|
|
@@ -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 { stackError } from "../utils";
|
|
13
14
|
export default (({
|
|
14
15
|
componentCreators,
|
|
@@ -19,11 +20,10 @@ export default (({
|
|
|
19
20
|
componentCreators.forEach(createComponent => {
|
|
20
21
|
const {
|
|
21
22
|
namespace
|
|
22
|
-
} = createComponent;
|
|
23
|
-
|
|
23
|
+
} = createComponent;
|
|
24
|
+
// TO-DOCUMENT: Helpers that we inject into factories.
|
|
24
25
|
const tools = getImmediatelyAvailableTools(namespace);
|
|
25
26
|
let component;
|
|
26
|
-
|
|
27
27
|
try {
|
|
28
28
|
component = createComponent(tools);
|
|
29
29
|
} catch (error) {
|
|
@@ -32,7 +32,6 @@ export default (({
|
|
|
32
32
|
message: `[${namespace}] An error occurred during component creation.`
|
|
33
33
|
});
|
|
34
34
|
}
|
|
35
|
-
|
|
36
35
|
componentRegistry.register(namespace, component);
|
|
37
36
|
});
|
|
38
37
|
return lifecycle.onComponentsRegistered({
|
|
@@ -9,14 +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 { flatMap } from "../utils";
|
|
13
14
|
import { ADOBE_EDGE } from "../constants/httpHeaderNames";
|
|
15
|
+
|
|
14
16
|
/**
|
|
15
17
|
* Creates a representation of a gateway response with the addition of
|
|
16
18
|
* helper methods.
|
|
17
19
|
* @returns Response
|
|
18
20
|
*/
|
|
19
|
-
|
|
20
21
|
export default (({
|
|
21
22
|
extractEdgeInfo
|
|
22
23
|
}) => ({
|
|
@@ -28,11 +29,11 @@ export default (({
|
|
|
28
29
|
errors = [],
|
|
29
30
|
warnings = []
|
|
30
31
|
} = content;
|
|
32
|
+
|
|
31
33
|
/**
|
|
32
34
|
* Response object.
|
|
33
35
|
* @typedef {Object} Response
|
|
34
36
|
*/
|
|
35
|
-
|
|
36
37
|
return {
|
|
37
38
|
/**
|
|
38
39
|
* Returns matching fragments of the response by type.
|
|
@@ -44,31 +45,26 @@ export default (({
|
|
|
44
45
|
getPayloadsByType(type) {
|
|
45
46
|
return flatMap(handle.filter(fragment => fragment.type === type), fragment => fragment.payload);
|
|
46
47
|
},
|
|
47
|
-
|
|
48
48
|
/**
|
|
49
49
|
* Returns all errors.
|
|
50
50
|
*/
|
|
51
51
|
getErrors() {
|
|
52
52
|
return errors;
|
|
53
53
|
},
|
|
54
|
-
|
|
55
54
|
/**
|
|
56
55
|
* Returns all warnings.
|
|
57
56
|
*/
|
|
58
57
|
getWarnings() {
|
|
59
58
|
return warnings;
|
|
60
59
|
},
|
|
61
|
-
|
|
62
60
|
/**
|
|
63
61
|
* Returns an object containing the regionId from the x-adobe-edge header
|
|
64
62
|
*/
|
|
65
63
|
getEdge() {
|
|
66
64
|
return extractEdgeInfo(getHeader(ADOBE_EDGE));
|
|
67
65
|
},
|
|
68
|
-
|
|
69
66
|
toJSON() {
|
|
70
67
|
return content;
|
|
71
68
|
}
|
|
72
|
-
|
|
73
69
|
};
|
|
74
70
|
});
|
|
@@ -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 { isFunction, isObject } from "../utils";
|
|
13
14
|
import { CONFIGURE, SET_DEBUG } from "../constants/coreCommands";
|
|
14
15
|
export default (({
|
|
@@ -19,60 +20,53 @@ export default (({
|
|
|
19
20
|
validateCommandOptions
|
|
20
21
|
}) => {
|
|
21
22
|
let configurePromise;
|
|
22
|
-
|
|
23
23
|
const getExecutor = (commandName, options) => {
|
|
24
24
|
let executor;
|
|
25
|
-
|
|
26
25
|
if (commandName === CONFIGURE) {
|
|
27
26
|
if (configurePromise) {
|
|
28
27
|
throw new Error("The library has already been configured and may only be configured once.");
|
|
29
28
|
}
|
|
30
|
-
|
|
31
29
|
executor = () => {
|
|
32
30
|
configurePromise = configureCommand(options);
|
|
33
|
-
return configurePromise.then(() => {
|
|
31
|
+
return configurePromise.then(() => {
|
|
32
|
+
// Don't expose internals to the user.
|
|
34
33
|
});
|
|
35
34
|
};
|
|
36
35
|
} else {
|
|
37
36
|
if (!configurePromise) {
|
|
38
37
|
throw new Error(`The library must be configured first. Please do so by executing the configure command.`);
|
|
39
38
|
}
|
|
40
|
-
|
|
41
39
|
if (commandName === SET_DEBUG) {
|
|
42
40
|
executor = () => setDebugCommand(options);
|
|
43
41
|
} else {
|
|
44
42
|
executor = () => {
|
|
45
43
|
return configurePromise.then(componentRegistry => {
|
|
46
44
|
const command = componentRegistry.getCommand(commandName);
|
|
47
|
-
|
|
48
45
|
if (!command || !isFunction(command.run)) {
|
|
49
46
|
const commandNames = [CONFIGURE, SET_DEBUG].concat(componentRegistry.getCommandNames()).join(", ");
|
|
50
47
|
throw new Error(`The ${commandName} command does not exist. List of available commands: ${commandNames}.`);
|
|
51
48
|
}
|
|
52
|
-
|
|
53
49
|
const validatedOptions = validateCommandOptions({
|
|
54
50
|
command,
|
|
55
51
|
options
|
|
56
52
|
});
|
|
57
53
|
return command.run(validatedOptions);
|
|
58
54
|
}, () => {
|
|
59
|
-
logger.warn(`An error during configuration is preventing the ${commandName} command from executing.`);
|
|
55
|
+
logger.warn(`An error during configuration is preventing the ${commandName} command from executing.`);
|
|
56
|
+
// If configuration failed, we prevent the configuration
|
|
60
57
|
// error from bubbling here because we don't want the
|
|
61
58
|
// configuration error to be reported in the console every
|
|
62
59
|
// time any command is executed. Only having it bubble
|
|
63
60
|
// once when the configure command runs is sufficient.
|
|
64
61
|
// Instead, for this command, we'll just return a promise
|
|
65
62
|
// that never gets resolved.
|
|
66
|
-
|
|
67
63
|
return new Promise(() => {});
|
|
68
64
|
});
|
|
69
65
|
};
|
|
70
66
|
}
|
|
71
67
|
}
|
|
72
|
-
|
|
73
68
|
return executor;
|
|
74
69
|
};
|
|
75
|
-
|
|
76
70
|
return (commandName, options = {}) => {
|
|
77
71
|
return new Promise(resolve => {
|
|
78
72
|
// We have to wrap the getExecutor() call in the promise so the promise
|
|
@@ -9,21 +9,22 @@ 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 { toError, updateErrorMessage } from "../utils";
|
|
13
14
|
import { DECLINED_CONSENT_ERROR_CODE } from "./consent/createConsentStateMachine";
|
|
14
15
|
export default (({
|
|
15
16
|
errorPrefix,
|
|
16
17
|
logger
|
|
17
18
|
}) => (error, operation) => {
|
|
18
|
-
const err = toError(error);
|
|
19
|
+
const err = toError(error);
|
|
20
|
+
|
|
21
|
+
// In the case of declined consent, we've opted to not reject the promise
|
|
19
22
|
// returned to the customer, but instead resolve the promise with an
|
|
20
23
|
// empty result object.
|
|
21
|
-
|
|
22
24
|
if (err.code === DECLINED_CONSENT_ERROR_CODE) {
|
|
23
25
|
logger.warn(`The ${operation} could not fully complete. ${err.message}`);
|
|
24
26
|
return {};
|
|
25
27
|
}
|
|
26
|
-
|
|
27
28
|
updateErrorMessage({
|
|
28
29
|
error: err,
|
|
29
30
|
message: `${errorPrefix} ${err.message}`
|
|
@@ -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 { isNamespacedCookieName } from "../utils";
|
|
13
14
|
import { AT_QA_MODE, MBOX } from "../constants/legacyCookies";
|
|
14
15
|
export default (({
|
|
@@ -9,14 +9,16 @@ 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 { RETRY_AFTER } from "../../constants/httpHeaderNames";
|
|
13
|
-
import { isInteger } from "../../utils";
|
|
14
|
+
import { isInteger } from "../../utils";
|
|
14
15
|
|
|
16
|
+
// The retry gets incrementally (but not exponentially) longer for each retry.
|
|
15
17
|
const FIRST_DELAY_MILLIS = 1000;
|
|
16
|
-
const INCREMENTAL_DELAY_MILLIS = 1000;
|
|
18
|
+
const INCREMENTAL_DELAY_MILLIS = 1000;
|
|
17
19
|
|
|
20
|
+
// When the target delay is randomized, make it within the range of this percentage above or below the target delay.
|
|
18
21
|
const MAX_RANDOM_VARIANCE_PERCENTAGE = 0.3;
|
|
19
|
-
|
|
20
22
|
const calculateRetryDelay = retriesAttempted => {
|
|
21
23
|
const targetDelay = FIRST_DELAY_MILLIS + retriesAttempted * INCREMENTAL_DELAY_MILLIS;
|
|
22
24
|
const maxVariance = targetDelay * MAX_RANDOM_VARIANCE_PERCENTAGE;
|
|
@@ -25,7 +27,6 @@ const calculateRetryDelay = retriesAttempted => {
|
|
|
25
27
|
const randomizedDelayWithinRange = Math.round(minDelay + Math.random() * (maxDelay - minDelay));
|
|
26
28
|
return randomizedDelayWithinRange;
|
|
27
29
|
};
|
|
28
|
-
|
|
29
30
|
const getDelayFromHeader = response => {
|
|
30
31
|
// According to the HTTP spec, if the header is defined, its value will be a string that
|
|
31
32
|
// represents either:
|
|
@@ -36,39 +37,36 @@ const getDelayFromHeader = response => {
|
|
|
36
37
|
// toGMTString() returns.
|
|
37
38
|
const headerValue = response.getHeader(RETRY_AFTER);
|
|
38
39
|
let delayInMillis;
|
|
39
|
-
|
|
40
40
|
if (headerValue) {
|
|
41
41
|
const headerValueInt = parseInt(headerValue, 10);
|
|
42
|
-
|
|
43
42
|
if (isInteger(headerValueInt)) {
|
|
44
43
|
delayInMillis = headerValueInt * 1000;
|
|
45
44
|
} else {
|
|
46
45
|
delayInMillis = Math.max(0, new Date(headerValue).getTime() - new Date().getTime());
|
|
47
46
|
}
|
|
48
47
|
}
|
|
49
|
-
|
|
50
48
|
return delayInMillis;
|
|
51
|
-
};
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
// These rules are in accordance with
|
|
52
52
|
// https://git.corp.adobe.com/pages/experience-edge/konductor/#/apis/errors?id=handling-4xx-and-5xx-responses
|
|
53
53
|
// For retry delays that don't come from a Retry-After response header, we try to stick with the following best
|
|
54
54
|
// practices outlined in https://docs.microsoft.com/en-us/azure/architecture/best-practices/transient-faults:
|
|
55
55
|
// * Incremental retry
|
|
56
56
|
// * Random interval
|
|
57
|
-
|
|
58
|
-
|
|
59
57
|
export default (({
|
|
60
58
|
response,
|
|
61
59
|
retriesAttempted
|
|
62
60
|
}) => {
|
|
63
61
|
// Technically, only 429 or 503 responses should have a Retry-After header, but we'll respect the
|
|
64
62
|
// header if we find it on any response.
|
|
65
|
-
let delayInMillis = getDelayFromHeader(response);
|
|
63
|
+
let delayInMillis = getDelayFromHeader(response);
|
|
64
|
+
|
|
65
|
+
// Note that the value of delay may be 0 at this point, which would be a valid delay we want to use
|
|
66
66
|
// and not override, which is why we don't do:
|
|
67
67
|
// if (!delay) { ... }
|
|
68
|
-
|
|
69
68
|
if (delayInMillis === undefined) {
|
|
70
69
|
delayInMillis = calculateRetryDelay(retriesAttempted);
|
|
71
70
|
}
|
|
72
|
-
|
|
73
71
|
return delayInMillis;
|
|
74
72
|
});
|
|
@@ -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 { stackError } from "../../utils";
|
|
13
14
|
export default (({
|
|
14
15
|
logger,
|
|
@@ -39,7 +40,6 @@ export default (({
|
|
|
39
40
|
requestId,
|
|
40
41
|
payload: parsedPayload
|
|
41
42
|
});
|
|
42
|
-
|
|
43
43
|
const executeRequest = (retriesAttempted = 0) => {
|
|
44
44
|
const requestMethod = useSendBeacon ? sendBeaconRequest : sendFetchRequest;
|
|
45
45
|
return requestMethod(url, stringifiedPayload).then(response => {
|
|
@@ -47,7 +47,6 @@ export default (({
|
|
|
47
47
|
response,
|
|
48
48
|
retriesAttempted
|
|
49
49
|
});
|
|
50
|
-
|
|
51
50
|
if (requestIsRetryable) {
|
|
52
51
|
const requestRetryDelay = getRequestRetryDelay({
|
|
53
52
|
response,
|
|
@@ -59,14 +58,12 @@ export default (({
|
|
|
59
58
|
}, requestRetryDelay);
|
|
60
59
|
});
|
|
61
60
|
}
|
|
62
|
-
|
|
63
61
|
let parsedBody;
|
|
64
|
-
|
|
65
62
|
try {
|
|
66
63
|
parsedBody = JSON.parse(response.body);
|
|
67
|
-
} catch (e) {
|
|
64
|
+
} catch (e) {
|
|
65
|
+
// Non-JSON. Something went wrong.
|
|
68
66
|
}
|
|
69
|
-
|
|
70
67
|
logger.logOnNetworkResponse({
|
|
71
68
|
requestId,
|
|
72
69
|
url,
|
|
@@ -83,7 +80,6 @@ export default (({
|
|
|
83
80
|
};
|
|
84
81
|
});
|
|
85
82
|
};
|
|
86
|
-
|
|
87
83
|
return executeRequest().catch(error => {
|
|
88
84
|
logger.logOnNetworkError({
|
|
89
85
|
requestId,
|
|
@@ -9,12 +9,14 @@ 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 { TOO_MANY_REQUESTS, SERVICE_UNAVAILABLE, BAD_GATEWAY, GATEWAY_TIMEOUT } from "../../constants/httpStatusCode";
|
|
13
14
|
import { includes } from "../../utils";
|
|
14
15
|
const MAX_RETRIES = 3;
|
|
15
|
-
const RETRYABLE_STATUS_CODES = [TOO_MANY_REQUESTS, SERVICE_UNAVAILABLE, BAD_GATEWAY, GATEWAY_TIMEOUT];
|
|
16
|
-
// https://git.corp.adobe.com/pages/experience-edge/konductor/#/apis/errors?id=handling-4xx-and-5xx-responses
|
|
16
|
+
const RETRYABLE_STATUS_CODES = [TOO_MANY_REQUESTS, SERVICE_UNAVAILABLE, BAD_GATEWAY, GATEWAY_TIMEOUT];
|
|
17
17
|
|
|
18
|
+
// These rules are in accordance with
|
|
19
|
+
// https://git.corp.adobe.com/pages/experience-edge/konductor/#/apis/errors?id=handling-4xx-and-5xx-responses
|
|
18
20
|
export default (({
|
|
19
21
|
response,
|
|
20
22
|
retriesAttempted
|