@adobe/alloy 2.20.0-alpha.0 → 2.20.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/libEs5/baseCode/index.js +2 -3
- package/libEs5/components/ActivityCollector/attachClickActivityCollector.js +2 -3
- package/libEs5/components/ActivityCollector/configValidators.js +3 -5
- package/libEs5/components/ActivityCollector/createGetLinkDetails.js +2 -3
- package/libEs5/components/ActivityCollector/createLinkClick.js +2 -3
- package/libEs5/components/ActivityCollector/getLinkName.js +2 -3
- package/libEs5/components/ActivityCollector/getLinkRegion.js +2 -3
- package/libEs5/components/ActivityCollector/index.js +1 -2
- package/libEs5/components/ActivityCollector/utils.js +11 -21
- package/libEs5/components/Audiences/index.js +1 -2
- package/libEs5/components/Audiences/injectProcessDestinations.js +18 -16
- package/libEs5/components/Audiences/injectProcessResponse.js +2 -3
- package/libEs5/components/Context/createComponent.js +2 -3
- package/libEs5/components/Context/implementationDetails.js +2 -3
- package/libEs5/components/Context/index.js +17 -15
- package/libEs5/components/Context/injectDevice.js +2 -3
- package/libEs5/components/Context/injectEnvironment.js +6 -7
- package/libEs5/components/Context/injectHighEntropyUserAgentHints.js +15 -16
- package/libEs5/components/Context/injectPlaceContext.js +2 -3
- package/libEs5/components/Context/injectTimestamp.js +2 -3
- package/libEs5/components/Context/injectWeb.js +2 -3
- package/libEs5/components/DataCollector/index.js +1 -2
- package/libEs5/components/DataCollector/validateApplyResponse.js +2 -3
- package/libEs5/components/DataCollector/validateUserEventOptions.js +2 -3
- package/libEs5/components/DecisioningEngine/consequenceAdapters/inAppMessageConsequenceAdapter.js +2 -3
- package/libEs5/components/DecisioningEngine/consequenceAdapters/schemaTypeConsequenceAdapter.js +2 -3
- package/libEs5/components/DecisioningEngine/constants.js +4 -7
- package/libEs5/components/DecisioningEngine/createApplyResponse.js +2 -3
- package/libEs5/components/DecisioningEngine/createConsequenceAdapter.js +17 -16
- package/libEs5/components/DecisioningEngine/createContextProvider.js +18 -16
- package/libEs5/components/DecisioningEngine/createDecisionHistory.js +2 -3
- package/libEs5/components/DecisioningEngine/createDecisionProvider.js +2 -3
- package/libEs5/components/DecisioningEngine/createEvaluableRulesetPayload.js +18 -16
- package/libEs5/components/DecisioningEngine/createEvaluateRulesetsCommand.js +2 -3
- package/libEs5/components/DecisioningEngine/createEventRegistry.js +20 -20
- package/libEs5/components/DecisioningEngine/createOnResponseHandler.js +18 -16
- package/libEs5/components/DecisioningEngine/createSubscribeRulesetItems.js +18 -16
- package/libEs5/components/DecisioningEngine/index.js +19 -19
- package/libEs5/components/DecisioningEngine/utils.js +10 -18
- package/libEs5/components/EventMerge/createComponent.js +2 -3
- package/libEs5/components/EventMerge/createEventMergeId.js +2 -3
- package/libEs5/components/EventMerge/index.js +1 -2
- package/libEs5/components/Identity/addEcidQueryToPayload.js +2 -3
- package/libEs5/components/Identity/addEcidToPayload.js +2 -3
- package/libEs5/components/Identity/appendIdentityToUrl/appendIdentityToUrlOptionsValidator.js +2 -3
- package/libEs5/components/Identity/appendIdentityToUrl/injectAppendIdentityToUrl.js +4 -5
- package/libEs5/components/Identity/configValidators.js +1 -2
- package/libEs5/components/Identity/constants/authState.js +3 -6
- package/libEs5/components/Identity/constants/defaultIdSyncTtlMinutes.js +1 -2
- package/libEs5/components/Identity/createComponent.js +2 -3
- package/libEs5/components/Identity/createLegacyIdentity.js +8 -6
- package/libEs5/components/Identity/getEcidFromResponse.js +2 -3
- package/libEs5/components/Identity/getIdentity/createGetIdentity.js +2 -3
- package/libEs5/components/Identity/getIdentity/createIdentityRequest.js +2 -3
- package/libEs5/components/Identity/getIdentity/createIdentityRequestPayload.js +2 -3
- package/libEs5/components/Identity/getIdentity/getIdentityOptionsValidator.js +2 -3
- package/libEs5/components/Identity/index.js +3 -3
- package/libEs5/components/Identity/injectAddLegacyEcidToPayload.js +2 -3
- package/libEs5/components/Identity/injectAddQueryStringIdentityToPayload.js +18 -15
- package/libEs5/components/Identity/injectAwaitIdentityCookie.js +9 -14
- package/libEs5/components/Identity/injectEnsureSingleIdentity.js +8 -6
- package/libEs5/components/Identity/injectHandleResponseForIdSyncs.js +2 -3
- package/libEs5/components/Identity/injectProcessIdSyncs.js +2 -3
- package/libEs5/components/Identity/injectSetDomainForInitialIdentityPayload.js +2 -3
- package/libEs5/components/Identity/visitorService/awaitVisitorOptIn.js +2 -3
- package/libEs5/components/Identity/visitorService/getVisitor.js +2 -3
- package/libEs5/components/Identity/visitorService/injectGetEcidFromVisitor.js +2 -3
- package/libEs5/components/LegacyMediaAnalytics/{media → constants}/constants.js +15 -25
- package/libEs5/components/LegacyMediaAnalytics/{media → constants}/mediaKeysToXdmConverter.js +3 -5
- package/libEs5/components/LegacyMediaAnalytics/createGetInstance.js +246 -0
- package/libEs5/components/LegacyMediaAnalytics/createLegacyMediaComponent.js +87 -0
- package/libEs5/components/LegacyMediaAnalytics/createMediaHelper.js +157 -158
- package/libEs5/components/LegacyMediaAnalytics/index.js +43 -20
- package/libEs5/components/LibraryInfo/index.js +21 -17
- package/libEs5/components/MachineLearning/index.js +1 -2
- package/libEs5/components/MachineLearning/processResponse.js +2 -3
- package/libEs5/components/Personalization/constants/loggerMessage.js +2 -4
- package/libEs5/components/Personalization/constants/scopeType.js +3 -6
- package/libEs5/components/Personalization/constants/surface.js +4 -8
- package/libEs5/components/Personalization/createActionsProvider.js +2 -3
- package/libEs5/components/Personalization/createApplyPropositions.js +19 -17
- package/libEs5/components/Personalization/createClickStorage.js +8 -6
- package/libEs5/components/Personalization/createCollect.js +2 -3
- package/libEs5/components/Personalization/createComponent.js +7 -4
- package/libEs5/components/Personalization/createFetchDataHandler.js +28 -20
- package/libEs5/components/Personalization/createGetPageLocation.js +2 -3
- package/libEs5/{utils/debounce.js → components/Personalization/createHandleConsentFlicker.js} +13 -14
- package/libEs5/components/Personalization/createNotificationHandler.js +10 -5
- package/libEs5/components/Personalization/createOnClickHandler.js +2 -3
- package/libEs5/components/Personalization/createOnDecisionHandler.js +3 -4
- package/libEs5/components/Personalization/createPersonalizationDetails.js +13 -14
- package/libEs5/components/Personalization/createPreprocessors.js +16 -14
- package/libEs5/components/Personalization/createSetTargetMigration.js +2 -3
- package/libEs5/components/Personalization/createViewCacheManager.js +2 -3
- package/libEs5/components/Personalization/createViewChangeHandler.js +2 -3
- package/libEs5/components/Personalization/dom-actions/action.js +2 -3
- package/libEs5/components/Personalization/dom-actions/addNonceToInlineStyleElements.js +2 -3
- package/libEs5/components/Personalization/dom-actions/appendHtml.js +2 -3
- package/libEs5/components/Personalization/dom-actions/clicks/collectClicks.js +3 -4
- package/libEs5/components/Personalization/dom-actions/createPreprocess.js +2 -3
- package/libEs5/components/Personalization/dom-actions/createRedirect.js +2 -3
- package/libEs5/components/Personalization/dom-actions/dom/createFragment.js +2 -3
- package/libEs5/components/Personalization/dom-actions/dom/getAttribute.js +2 -3
- package/libEs5/components/Personalization/dom-actions/dom/getChildNodes.js +2 -3
- package/libEs5/components/Personalization/dom-actions/dom/getChildren.js +2 -3
- package/libEs5/components/Personalization/dom-actions/dom/getElementById.js +2 -3
- package/libEs5/components/Personalization/dom-actions/dom/getFirstChild.js +2 -3
- package/libEs5/components/Personalization/dom-actions/dom/getNextSibling.js +2 -3
- package/libEs5/components/Personalization/dom-actions/dom/getNonce.js +3 -5
- package/libEs5/components/Personalization/dom-actions/dom/getParent.js +2 -3
- package/libEs5/components/Personalization/dom-actions/dom/helperForEq.js +3 -5
- package/libEs5/components/Personalization/dom-actions/dom/insertAfter.js +2 -3
- package/libEs5/components/Personalization/dom-actions/dom/insertBefore.js +2 -3
- package/libEs5/components/Personalization/dom-actions/dom/matchesSelectorWithEq.js +2 -3
- package/libEs5/components/Personalization/dom-actions/dom/removeAttribute.js +2 -3
- package/libEs5/components/Personalization/dom-actions/dom/selectNodesWithEq.js +16 -19
- package/libEs5/components/Personalization/dom-actions/dom/setAttribute.js +2 -3
- package/libEs5/components/Personalization/dom-actions/dom/setStyle.js +2 -3
- package/libEs5/components/Personalization/dom-actions/images.js +4 -7
- package/libEs5/components/Personalization/dom-actions/initDomActionsModules.js +2 -3
- package/libEs5/components/Personalization/dom-actions/insertHtmlAfter.js +2 -3
- package/libEs5/components/Personalization/dom-actions/insertHtmlBefore.js +2 -3
- package/libEs5/components/Personalization/dom-actions/prependHtml.js +2 -3
- package/libEs5/components/Personalization/dom-actions/rearrangeChildren.js +2 -3
- package/libEs5/components/Personalization/dom-actions/remapCustomCodeOffers.js +2 -3
- package/libEs5/components/Personalization/dom-actions/remapHeadOffers.js +2 -3
- package/libEs5/components/Personalization/dom-actions/replaceHtml.js +2 -3
- package/libEs5/components/Personalization/dom-actions/scripts.js +22 -24
- package/libEs5/components/Personalization/dom-actions/setAttributes.js +2 -3
- package/libEs5/components/Personalization/dom-actions/setHtml.js +2 -3
- package/libEs5/components/Personalization/dom-actions/setStyles.js +2 -3
- package/libEs5/components/Personalization/dom-actions/setText.js +2 -3
- package/libEs5/components/Personalization/dom-actions/swapImage.js +2 -3
- package/libEs5/components/Personalization/event.js +19 -18
- package/libEs5/components/Personalization/flicker/index.js +21 -22
- package/libEs5/components/Personalization/handlers/createProcessDomAction.js +8 -6
- package/libEs5/components/Personalization/handlers/createProcessHtmlContent.js +2 -3
- package/libEs5/components/Personalization/handlers/createProcessInAppMessage.js +18 -16
- package/libEs5/components/Personalization/handlers/createProcessPropositions.js +3 -4
- package/libEs5/components/Personalization/handlers/createProcessRedirect.js +2 -4
- package/libEs5/components/Personalization/handlers/injectCreateProposition.js +24 -22
- package/libEs5/components/Personalization/handlers/processDefaultContent.js +2 -3
- package/libEs5/components/Personalization/in-app-message-actions/actions/displayIframeContent.js +25 -29
- package/libEs5/components/Personalization/in-app-message-actions/initInAppMessageActionsModules.js +2 -3
- package/libEs5/components/Personalization/in-app-message-actions/utils.js +3 -5
- package/libEs5/components/Personalization/index.js +31 -22
- package/libEs5/components/Personalization/utils/addRenderAttemptedToDecisions.js +2 -3
- package/libEs5/components/Personalization/utils/createAsyncArray.js +2 -3
- package/libEs5/components/Personalization/utils/isAuthoringModeEnabled.js +2 -3
- package/libEs5/components/Personalization/utils/surfaceUtils.js +4 -7
- package/libEs5/components/Personalization/validateApplyPropositionsOptions.js +3 -5
- package/libEs5/components/Privacy/computeConsentHash.js +13 -14
- package/libEs5/components/Privacy/createComponent.js +16 -14
- package/libEs5/components/Privacy/createConsentHashStore.js +2 -3
- package/libEs5/components/Privacy/createConsentRequest.js +2 -3
- package/libEs5/components/Privacy/createConsentRequestPayload.js +2 -3
- package/libEs5/components/Privacy/createStoredConsent.js +2 -3
- package/libEs5/components/Privacy/index.js +1 -2
- package/libEs5/components/Privacy/injectSendSetConsentRequest.js +2 -3
- package/libEs5/components/Privacy/parseConsentCookie.js +4 -5
- package/libEs5/components/Privacy/validateSetConsentOptions.js +2 -3
- package/libEs5/components/{MediaCollection/createMediaRequestPayload.js → StreamingMedia/configValidators.js} +11 -16
- package/libEs5/components/StreamingMedia/constants/eventTypes.js +34 -0
- package/libEs5/components/StreamingMedia/constants/playbackState.js +19 -0
- package/libEs5/components/{MediaCollection → StreamingMedia}/createMediaEventManager.js +46 -53
- package/libEs5/components/{MediaCollection → StreamingMedia}/createMediaRequest.js +2 -3
- package/libEs5/components/StreamingMedia/createMediaResponseHandler.js +57 -0
- package/libEs5/components/{MediaCollection → StreamingMedia}/createMediaSessionCacheManager.js +23 -27
- package/libEs5/components/StreamingMedia/createStreamingMediaComponent.js +72 -0
- package/libEs5/components/StreamingMedia/createTrackMediaEvent.js +90 -0
- package/libEs5/components/StreamingMedia/createTrackMediaSession.js +52 -0
- package/libEs5/components/StreamingMedia/index.js +69 -0
- package/libEs5/components/StreamingMedia/validateMediaEventOptions.js +40 -0
- package/libEs5/components/{MediaCollection → StreamingMedia}/validateMediaSessionOptions.js +3 -4
- package/libEs5/constants/apiVersion.js +1 -2
- package/libEs5/constants/browser.js +7 -14
- package/libEs5/constants/consentPurpose.js +1 -2
- package/libEs5/constants/consentStatus.js +3 -6
- package/libEs5/constants/contentType.js +2 -4
- package/libEs5/constants/cookieNameKey.js +3 -6
- package/libEs5/constants/cookieNamePrefix.js +1 -2
- package/libEs5/constants/coreCommands.js +2 -4
- package/libEs5/constants/debugQueryParam.js +1 -2
- package/libEs5/constants/decisionProvider.js +1 -2
- package/libEs5/constants/domain.js +2 -4
- package/libEs5/constants/ecidNamespace.js +1 -2
- package/libEs5/constants/edgeBasePath.js +1 -2
- package/libEs5/constants/elementAttribute.js +1 -2
- package/libEs5/constants/eventType.js +5 -10
- package/libEs5/constants/handle.js +1 -2
- package/libEs5/constants/highEntropyUserAgentClientHints.js +1 -2
- package/libEs5/constants/httpHeaderNames.js +2 -4
- package/libEs5/constants/httpStatusCode.js +5 -10
- package/libEs5/constants/identityMapAuthenticatedState.js +3 -6
- package/libEs5/constants/legacyCookies.js +3 -6
- package/libEs5/constants/libraryName.js +1 -2
- package/libEs5/constants/libraryVersion.js +1 -2
- package/libEs5/constants/namespace.js +1 -2
- package/libEs5/constants/pageWideScope.js +1 -2
- package/libEs5/constants/propositionEventType.js +20 -21
- package/libEs5/constants/queryStringIdentityParam.js +1 -2
- package/libEs5/constants/schema.js +10 -20
- package/libEs5/constants/shadowSeparator.js +1 -2
- package/libEs5/constants/tagName.js +7 -14
- package/libEs5/core/buildAndValidateConfig.js +19 -17
- package/libEs5/core/componentCreators.js +9 -4
- package/libEs5/core/config/createConfig.js +1 -2
- package/libEs5/core/config/createCoreConfigs.js +2 -3
- package/libEs5/core/consent/createConsent.js +5 -3
- package/libEs5/core/consent/createConsentStateMachine.js +41 -13
- package/libEs5/core/createComponentRegistry.js +5 -3
- package/libEs5/core/createCookieTransfer.js +2 -3
- package/libEs5/core/createEvent.js +13 -14
- package/libEs5/core/createEventManager.js +8 -6
- package/libEs5/core/createInstanceFunction.js +2 -3
- package/libEs5/core/createLifecycle.js +2 -3
- package/libEs5/core/createLogController.js +2 -3
- package/libEs5/core/createLogger.js +2 -3
- package/libEs5/core/edgeNetwork/handleRequestFailure.js +2 -3
- package/libEs5/core/edgeNetwork/injectApplyResponse.js +2 -3
- package/libEs5/core/edgeNetwork/injectExtractEdgeInfo.js +2 -3
- package/libEs5/core/edgeNetwork/injectGetLocationHint.js +2 -3
- package/libEs5/core/edgeNetwork/injectProcessWarningsAndErrors.js +2 -3
- package/libEs5/core/edgeNetwork/injectSendEdgeNetworkRequest.js +2 -3
- package/libEs5/core/edgeNetwork/mergeLifecycleResponses.js +13 -14
- package/libEs5/core/index.js +3 -5
- package/libEs5/core/initializeComponents.js +2 -3
- package/libEs5/core/injectCreateResponse.js +2 -3
- package/libEs5/core/injectExecuteCommand.js +2 -3
- package/libEs5/core/injectHandleError.js +2 -3
- package/libEs5/core/injectShouldTransferCookie.js +2 -3
- package/libEs5/core/network/getRequestRetryDelay.js +2 -3
- package/libEs5/core/network/injectSendNetworkRequest.js +18 -16
- package/libEs5/core/network/isRequestRetryable.js +2 -3
- package/libEs5/core/network/requestMethods/injectSendBeaconRequest.js +2 -3
- package/libEs5/core/network/requestMethods/injectSendFetchRequest.js +2 -3
- package/libEs5/core/network/requestMethods/injectSendXhrRequest.js +2 -3
- package/libEs5/core/validateCommandOptions.js +2 -3
- package/libEs5/index.js +2 -3
- package/libEs5/utils/areThirdPartyCookiesSupportedByDefault.js +2 -3
- package/libEs5/utils/assign.js +1 -2
- package/libEs5/utils/assignConcatArrayValues.js +13 -14
- package/libEs5/utils/assignIf.js +2 -3
- package/libEs5/utils/clone.js +2 -3
- package/libEs5/utils/cookieJar.js +2 -3
- package/libEs5/utils/crc32.js +1 -2
- package/libEs5/utils/createCallbackAggregator.js +2 -3
- package/libEs5/utils/createLoggingCookieJar.js +8 -6
- package/libEs5/utils/createMerger.js +2 -3
- package/libEs5/utils/createSubscription.js +12 -13
- package/libEs5/utils/createTaskQueue.js +2 -3
- package/libEs5/utils/deduplicateArray.js +2 -3
- package/libEs5/utils/deepAssign.js +2 -3
- package/libEs5/utils/defer.js +2 -3
- package/libEs5/utils/dom/appendNode.js +2 -3
- package/libEs5/utils/dom/awaitSelector.js +7 -13
- package/libEs5/utils/dom/createNode.js +2 -3
- package/libEs5/utils/dom/isShadowSelector.js +2 -3
- package/libEs5/utils/dom/matchesSelector.js +2 -3
- package/libEs5/utils/dom/querySelectorAll.js +2 -3
- package/libEs5/utils/dom/removeNode.js +2 -3
- package/libEs5/utils/dom/selectNodes.js +2 -3
- package/libEs5/utils/dom/selectNodesWithShadow.js +2 -3
- package/libEs5/utils/endsWith.js +2 -3
- package/libEs5/utils/filterObject.js +17 -15
- package/libEs5/utils/find.js +2 -3
- package/libEs5/utils/fireImage.js +2 -3
- package/libEs5/utils/flatMap.js +2 -3
- package/libEs5/utils/flattenArray.js +2 -3
- package/libEs5/utils/flattenObject.js +4 -5
- package/libEs5/utils/getApexDomain.js +2 -3
- package/libEs5/utils/getBrowser.js +17 -16
- package/libEs5/utils/getLastArrayItems.js +2 -3
- package/libEs5/utils/getNamespacedCookieName.js +2 -3
- package/libEs5/utils/groupBy.js +2 -3
- package/libEs5/utils/includes.js +2 -3
- package/libEs5/utils/injectDoesIdentityCookieExist.js +2 -3
- package/libEs5/utils/injectFireReferrerHideableImage.js +14 -15
- package/libEs5/utils/injectStorage.js +2 -3
- package/libEs5/utils/intersection.js +2 -3
- package/libEs5/utils/isBlankString.js +2 -3
- package/libEs5/utils/isBoolean.js +2 -3
- package/libEs5/utils/isEmptyObject.js +2 -3
- package/libEs5/utils/isFunction.js +2 -3
- package/libEs5/utils/isInteger.js +2 -3
- package/libEs5/utils/isNamespacedCookieName.js +2 -3
- package/libEs5/utils/isNil.js +2 -3
- package/libEs5/utils/isNonEmptyArray.js +2 -3
- package/libEs5/utils/isNonEmptyString.js +2 -3
- package/libEs5/utils/isNumber.js +2 -3
- package/libEs5/utils/isObject.js +13 -14
- package/libEs5/utils/isString.js +2 -3
- package/libEs5/utils/isUnique.js +2 -3
- package/libEs5/utils/isValidRegExp.js +2 -3
- package/libEs5/utils/memoize.js +2 -3
- package/libEs5/utils/noop.js +1 -2
- package/libEs5/utils/padStart.js +2 -3
- package/libEs5/utils/parseUrl.js +17 -15
- package/libEs5/utils/prepareConfigOverridesForEdge.js +13 -14
- package/libEs5/utils/querystring.js +1 -2
- package/libEs5/utils/request/createAddIdentity.js +2 -3
- package/libEs5/utils/request/createDataCollectionRequest.js +2 -3
- package/libEs5/utils/request/createDataCollectionRequestPayload.js +2 -3
- package/libEs5/utils/request/createGetAssuranceValidationTokenParams.js +2 -3
- package/libEs5/utils/request/createHasIdentity.js +2 -3
- package/libEs5/utils/request/createRequest.js +2 -3
- package/libEs5/utils/request/createRequestParams.js +2 -3
- package/libEs5/utils/request/createRequestPayload.js +2 -3
- package/libEs5/utils/sanitizeOrgIdForCookieName.js +2 -3
- package/libEs5/utils/stackError.js +2 -3
- package/libEs5/utils/startsWith.js +2 -3
- package/libEs5/utils/stringToBoolean.js +2 -3
- package/libEs5/utils/toArray.js +2 -3
- package/libEs5/utils/toError.js +2 -3
- package/libEs5/utils/toISOStringLocal.js +2 -3
- package/libEs5/utils/toInteger.js +2 -3
- package/libEs5/utils/updateErrorMessage.js +2 -3
- package/libEs5/utils/uuid.js +1 -2
- package/libEs5/utils/validateConfigOverride.js +1 -2
- package/libEs5/utils/validateIdentityMap.js +2 -3
- package/libEs5/utils/validation/booleanValidator.js +2 -3
- package/libEs5/utils/validation/callbackValidator.js +2 -3
- package/libEs5/utils/validation/createAnyOfValidator.js +2 -3
- package/libEs5/utils/validation/createArrayOfValidator.js +2 -3
- package/libEs5/utils/validation/createDefaultValidator.js +2 -3
- package/libEs5/utils/validation/createDeprecatedValidator.js +18 -19
- package/libEs5/utils/validation/createLiteralValidator.js +2 -3
- package/libEs5/utils/validation/createMapOfValuesValidator.js +2 -3
- package/libEs5/utils/validation/createMaximumValidator.js +2 -3
- package/libEs5/utils/validation/createMinimumValidator.js +2 -3
- package/libEs5/utils/validation/createNoUnknownFieldsValidator.js +2 -3
- package/libEs5/utils/validation/createNonEmptyValidator.js +2 -3
- package/libEs5/utils/validation/createObjectOfValidator.js +2 -3
- package/libEs5/utils/validation/createUniqueItemsValidator.js +2 -3
- package/libEs5/utils/validation/createUniqueValidator.js +2 -3
- package/libEs5/utils/validation/domainValidator.js +2 -3
- package/libEs5/utils/validation/index.js +90 -93
- package/libEs5/utils/validation/integerValidator.js +2 -3
- package/{libEs6/components/MediaCollection/createMediaRequestPayload.js → libEs5/utils/validation/matchesRegexpValidator.js} +9 -14
- package/libEs5/utils/validation/numberValidator.js +2 -3
- package/libEs5/utils/validation/regexpValidator.js +2 -3
- package/libEs5/utils/validation/requiredValidator.js +2 -3
- package/libEs5/utils/validation/stringValidator.js +2 -3
- package/libEs5/utils/validation/utils.js +5 -9
- package/libEs5/utils/values.js +2 -3
- package/libEs6/components/ActivityCollector/index.js +0 -1
- package/libEs6/components/Identity/index.js +2 -1
- package/libEs6/components/Identity/injectAddQueryStringIdentityToPayload.js +5 -1
- package/libEs6/components/Identity/injectAwaitIdentityCookie.js +7 -11
- package/libEs6/components/Identity/injectEnsureSingleIdentity.js +4 -3
- package/libEs6/components/LegacyMediaAnalytics/{media → constants}/constants.js +11 -10
- package/libEs6/components/LegacyMediaAnalytics/createGetInstance.js +240 -0
- package/libEs6/components/LegacyMediaAnalytics/createLegacyMediaComponent.js +85 -0
- package/libEs6/components/LegacyMediaAnalytics/createMediaHelper.js +157 -150
- package/libEs6/components/LegacyMediaAnalytics/index.js +40 -18
- package/libEs6/components/LibraryInfo/index.js +3 -1
- package/libEs6/components/Personalization/createComponent.js +5 -1
- package/libEs6/components/Personalization/createFetchDataHandler.js +16 -6
- package/libEs6/components/{MediaCollection/createUpdateMediaSessionState.js → Personalization/createHandleConsentFlicker.js} +14 -24
- package/libEs6/components/Personalization/createNotificationHandler.js +6 -2
- package/libEs6/components/Personalization/createOnDecisionHandler.js +1 -1
- package/libEs6/components/Personalization/handlers/createProcessRedirect.js +0 -1
- package/libEs6/components/Personalization/index.js +11 -3
- package/libEs6/components/StreamingMedia/configValidators.js +22 -0
- package/libEs6/components/StreamingMedia/constants/eventTypes.js +31 -0
- package/libEs6/components/StreamingMedia/constants/playbackState.js +16 -0
- package/libEs6/components/{MediaCollection → StreamingMedia}/createMediaEventManager.js +44 -44
- package/libEs6/components/StreamingMedia/createMediaResponseHandler.js +58 -0
- package/libEs6/components/{MediaCollection → StreamingMedia}/createMediaSessionCacheManager.js +17 -21
- package/libEs6/components/StreamingMedia/createStreamingMediaComponent.js +69 -0
- package/libEs6/components/StreamingMedia/createTrackMediaEvent.js +88 -0
- package/libEs6/components/StreamingMedia/createTrackMediaSession.js +51 -0
- package/libEs6/components/StreamingMedia/index.js +64 -0
- package/libEs6/components/{MediaCollection → StreamingMedia}/validateMediaEventOptions.js +4 -3
- package/libEs6/components/{MediaCollection → StreamingMedia}/validateMediaSessionOptions.js +1 -1
- package/libEs6/constants/libraryVersion.js +1 -1
- package/libEs6/core/componentCreators.js +19 -3
- package/libEs6/core/consent/createConsent.js +3 -0
- package/libEs6/core/consent/createConsentStateMachine.js +34 -0
- package/libEs6/core/createComponentRegistry.js +3 -0
- package/libEs6/utils/validation/index.js +6 -1
- package/libEs6/utils/{debounce.js → validation/matchesRegexpValidator.js} +5 -10
- package/package.json +19 -4
- package/libEs5/components/LegacyMediaAnalytics/createMediaAnalyticsTracker.js +0 -272
- package/libEs5/components/MediaCollection/createHeartbeatEngine.js +0 -55
- package/libEs5/components/MediaCollection/createUpdateMediaSessionState.js +0 -35
- package/libEs5/components/MediaCollection/index.js +0 -159
- package/libEs5/components/MediaCollection/mediaConstants/mediaEvents.js +0 -13
- package/libEs5/components/MediaCollection/validateMediaEventOptions.js +0 -35
- package/libEs6/components/LegacyMediaAnalytics/createMediaAnalyticsTracker.js +0 -276
- package/libEs6/components/MediaCollection/createHeartbeatEngine.js +0 -57
- package/libEs6/components/MediaCollection/index.js +0 -158
- package/libEs6/components/MediaCollection/mediaConstants/mediaEvents.js +0 -9
- /package/libEs6/components/LegacyMediaAnalytics/{media → constants}/mediaKeysToXdmConverter.js +0 -0
- /package/libEs6/components/{MediaCollection → StreamingMedia}/createMediaRequest.js +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
Copyright
|
|
2
|
+
Copyright 2024 Adobe. All rights reserved.
|
|
3
3
|
This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
4
4
|
you may not use this file except in compliance with the License. You may obtain a copy
|
|
5
5
|
of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
@@ -11,8 +11,15 @@ governing permissions and limitations under the License.
|
|
|
11
11
|
*/
|
|
12
12
|
/* eslint-disable import/no-restricted-paths */
|
|
13
13
|
|
|
14
|
-
import
|
|
15
|
-
import
|
|
14
|
+
import createMediaEventManager from "../StreamingMedia/createMediaEventManager";
|
|
15
|
+
import createMediaSessionCacheManager from "../StreamingMedia/createMediaSessionCacheManager";
|
|
16
|
+
import createTrackMediaEvent from "../StreamingMedia/createTrackMediaEvent";
|
|
17
|
+
import createTrackMediaSession from "../StreamingMedia/createTrackMediaSession";
|
|
18
|
+
import createMediaResponseHandler from "../StreamingMedia/createMediaResponseHandler";
|
|
19
|
+
import createLegacyMediaComponent from "./createLegacyMediaComponent";
|
|
20
|
+
import createMediaHelper from "./createMediaHelper";
|
|
21
|
+
import createGetInstance from "./createGetInstance";
|
|
22
|
+
import injectTimestamp from "../Context/injectTimestamp";
|
|
16
23
|
const createLegacyMediaAnalytics = ({
|
|
17
24
|
eventManager,
|
|
18
25
|
sendEdgeNetworkRequest,
|
|
@@ -20,26 +27,41 @@ const createLegacyMediaAnalytics = ({
|
|
|
20
27
|
logger,
|
|
21
28
|
consent
|
|
22
29
|
}) => {
|
|
30
|
+
const mediaSessionCacheManager = createMediaSessionCacheManager({
|
|
31
|
+
config
|
|
32
|
+
});
|
|
23
33
|
const mediaEventManager = createMediaEventManager({
|
|
24
34
|
sendEdgeNetworkRequest,
|
|
25
35
|
config,
|
|
26
|
-
logger,
|
|
27
36
|
consent,
|
|
28
|
-
eventManager
|
|
37
|
+
eventManager,
|
|
38
|
+
setTimestamp: injectTimestamp(() => new Date())
|
|
39
|
+
});
|
|
40
|
+
const trackMediaEvent = createTrackMediaEvent({
|
|
41
|
+
mediaSessionCacheManager,
|
|
42
|
+
mediaEventManager,
|
|
43
|
+
config
|
|
44
|
+
});
|
|
45
|
+
const trackMediaSession = createTrackMediaSession({
|
|
46
|
+
config,
|
|
47
|
+
mediaEventManager,
|
|
48
|
+
mediaSessionCacheManager,
|
|
49
|
+
legacy: true
|
|
50
|
+
});
|
|
51
|
+
const mediaResponseHandler = createMediaResponseHandler({
|
|
52
|
+
mediaSessionCacheManager,
|
|
53
|
+
config,
|
|
54
|
+
trackMediaEvent
|
|
55
|
+
});
|
|
56
|
+
return createLegacyMediaComponent({
|
|
57
|
+
mediaResponseHandler,
|
|
58
|
+
trackMediaSession,
|
|
59
|
+
trackMediaEvent,
|
|
60
|
+
createMediaHelper,
|
|
61
|
+
createGetInstance,
|
|
62
|
+
logger,
|
|
63
|
+
config
|
|
29
64
|
});
|
|
30
|
-
return {
|
|
31
|
-
commands: {
|
|
32
|
-
getMediaAnalyticsTracker: {
|
|
33
|
-
run: () => {
|
|
34
|
-
return createMediaAnalyticsTracker({
|
|
35
|
-
config,
|
|
36
|
-
logger,
|
|
37
|
-
mediaEventManager
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
};
|
|
43
65
|
};
|
|
44
66
|
createLegacyMediaAnalytics.namespace = "Legacy Media Analytics";
|
|
45
67
|
export default createLegacyMediaAnalytics;
|
|
@@ -27,10 +27,12 @@ const prepareLibraryInfo = ({
|
|
|
27
27
|
}
|
|
28
28
|
resultConfig[key] = value.toString();
|
|
29
29
|
});
|
|
30
|
+
const components = componentRegistry.getComponentNames();
|
|
30
31
|
return {
|
|
31
32
|
version: libraryVersion,
|
|
32
33
|
configs: resultConfig,
|
|
33
|
-
commands: allCommands
|
|
34
|
+
commands: allCommands,
|
|
35
|
+
components
|
|
34
36
|
};
|
|
35
37
|
};
|
|
36
38
|
const createLibraryInfo = ({
|
|
@@ -29,10 +29,14 @@ export default (({
|
|
|
29
29
|
setTargetMigration,
|
|
30
30
|
mergeDecisionsMeta,
|
|
31
31
|
renderedPropositions,
|
|
32
|
-
onDecisionHandler
|
|
32
|
+
onDecisionHandler,
|
|
33
|
+
handleConsentFlicker
|
|
33
34
|
}) => {
|
|
34
35
|
return {
|
|
35
36
|
lifecycle: {
|
|
37
|
+
onComponentsRegistered() {
|
|
38
|
+
handleConsentFlicker();
|
|
39
|
+
},
|
|
36
40
|
onDecision: onDecisionHandler,
|
|
37
41
|
onBeforeRequest({
|
|
38
42
|
request
|
|
@@ -18,7 +18,8 @@ export default (({
|
|
|
18
18
|
mergeQuery,
|
|
19
19
|
processPropositions,
|
|
20
20
|
createProposition,
|
|
21
|
-
notificationHandler
|
|
21
|
+
notificationHandler,
|
|
22
|
+
consent
|
|
22
23
|
}) => {
|
|
23
24
|
return ({
|
|
24
25
|
cacheUpdate,
|
|
@@ -26,13 +27,22 @@ export default (({
|
|
|
26
27
|
event,
|
|
27
28
|
onResponse
|
|
28
29
|
}) => {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
30
|
+
const {
|
|
31
|
+
state,
|
|
32
|
+
wasSet
|
|
33
|
+
} = consent.current();
|
|
34
|
+
if (!(state === "out" && wasSet)) {
|
|
35
|
+
if (personalizationDetails.isRenderDecisions()) {
|
|
36
|
+
hideContainers(prehidingStyle);
|
|
37
|
+
} else {
|
|
38
|
+
showContainers();
|
|
39
|
+
}
|
|
33
40
|
}
|
|
34
41
|
mergeQuery(event, personalizationDetails.createQueryDetails());
|
|
35
|
-
|
|
42
|
+
|
|
43
|
+
// This needs to be called before the response so that future sendEvent calls
|
|
44
|
+
// can know to wait until this request is complete for pending display notifications.
|
|
45
|
+
const handleNotifications = notificationHandler(personalizationDetails.isRenderDecisions(), personalizationDetails.isSendDisplayEvent(), personalizationDetails.getViewName());
|
|
36
46
|
onResponse(({
|
|
37
47
|
response
|
|
38
48
|
}) => {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
Copyright
|
|
2
|
+
Copyright 2024 Adobe. All rights reserved.
|
|
3
3
|
This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
4
4
|
you may not use this file except in compliance with the License. You may obtain a copy
|
|
5
5
|
of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
@@ -9,28 +9,18 @@ the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTA
|
|
|
9
9
|
OF ANY KIND, either express or implied. See the License for the specific language
|
|
10
10
|
governing permissions and limitations under the License.
|
|
11
11
|
*/
|
|
12
|
-
|
|
13
|
-
import MediaEvents from "./mediaConstants/mediaEvents";
|
|
12
|
+
import { OUT } from "../../constants/consentStatus";
|
|
14
13
|
export default (({
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
if (eventType === MediaEvents.SESSION_COMPLETE || eventType === MediaEvents.SESSION_END) {
|
|
28
|
-
mediaSessionCacheManager.stopHeartbeat({
|
|
29
|
-
playerId
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
mediaSessionCacheManager.updateLastTriggeredEventTS({
|
|
33
|
-
playerId
|
|
34
|
-
});
|
|
35
|
-
};
|
|
14
|
+
showContainers,
|
|
15
|
+
consent
|
|
16
|
+
}) => () => {
|
|
17
|
+
const {
|
|
18
|
+
state,
|
|
19
|
+
wasSet
|
|
20
|
+
} = consent.current();
|
|
21
|
+
if (state === OUT && wasSet) {
|
|
22
|
+
showContainers();
|
|
23
|
+
} else {
|
|
24
|
+
consent.awaitConsent().catch(showContainers);
|
|
25
|
+
}
|
|
36
26
|
});
|
|
@@ -11,8 +11,12 @@ governing permissions and limitations under the License.
|
|
|
11
11
|
*/
|
|
12
12
|
import { defer } from "../../utils";
|
|
13
13
|
export default ((collect, renderedPropositions) => {
|
|
14
|
-
return (
|
|
15
|
-
if (!
|
|
14
|
+
return (isRenderDecisions, isSendDisplayEvent, viewName) => {
|
|
15
|
+
if (!isRenderDecisions) {
|
|
16
|
+
// If we aren't rendering anything, then we don't need to sendDisplayEvents.
|
|
17
|
+
return () => undefined;
|
|
18
|
+
}
|
|
19
|
+
if (!isSendDisplayEvent) {
|
|
16
20
|
const renderedPropositionsDeferred = defer();
|
|
17
21
|
renderedPropositions.concat(renderedPropositionsDeferred.promise);
|
|
18
22
|
return renderedPropositionsDeferred.resolve;
|
|
@@ -33,7 +33,7 @@ export default (({
|
|
|
33
33
|
render,
|
|
34
34
|
returnedPropositions
|
|
35
35
|
} = processPropositions(propositionsToExecute);
|
|
36
|
-
const handleNotifications = notificationHandler(sendDisplayEvent, viewName);
|
|
36
|
+
const handleNotifications = notificationHandler(renderDecisions, sendDisplayEvent, viewName);
|
|
37
37
|
render().then(handleNotifications);
|
|
38
38
|
return Promise.resolve({
|
|
39
39
|
propositions: returnedPropositions
|
|
@@ -43,10 +43,12 @@ import createProcessInAppMessage from "./handlers/createProcessInAppMessage";
|
|
|
43
43
|
import initInAppMessageActionsModules from "./in-app-message-actions/initInAppMessageActionsModules";
|
|
44
44
|
import createRedirect from "./dom-actions/createRedirect";
|
|
45
45
|
import createNotificationHandler from "./createNotificationHandler";
|
|
46
|
+
import createHandleConsentFlicker from "./createHandleConsentFlicker";
|
|
46
47
|
const createPersonalization = ({
|
|
47
48
|
config,
|
|
48
49
|
logger,
|
|
49
|
-
eventManager
|
|
50
|
+
eventManager,
|
|
51
|
+
consent
|
|
50
52
|
}) => {
|
|
51
53
|
const {
|
|
52
54
|
targetMigrationEnabled,
|
|
@@ -108,7 +110,8 @@ const createPersonalization = ({
|
|
|
108
110
|
mergeQuery,
|
|
109
111
|
processPropositions,
|
|
110
112
|
createProposition,
|
|
111
|
-
notificationHandler
|
|
113
|
+
notificationHandler,
|
|
114
|
+
consent
|
|
112
115
|
});
|
|
113
116
|
const onClickHandler = createOnClickHandler({
|
|
114
117
|
mergeDecisionsMeta,
|
|
@@ -134,6 +137,10 @@ const createPersonalization = ({
|
|
|
134
137
|
createProposition,
|
|
135
138
|
notificationHandler
|
|
136
139
|
});
|
|
140
|
+
const handleConsentFlicker = createHandleConsentFlicker({
|
|
141
|
+
showContainers,
|
|
142
|
+
consent
|
|
143
|
+
});
|
|
137
144
|
return createComponent({
|
|
138
145
|
getPageLocation,
|
|
139
146
|
logger,
|
|
@@ -148,7 +155,8 @@ const createPersonalization = ({
|
|
|
148
155
|
setTargetMigration,
|
|
149
156
|
mergeDecisionsMeta,
|
|
150
157
|
renderedPropositions,
|
|
151
|
-
onDecisionHandler
|
|
158
|
+
onDecisionHandler,
|
|
159
|
+
handleConsentFlicker
|
|
152
160
|
});
|
|
153
161
|
};
|
|
154
162
|
createPersonalization.namespace = "Personalization";
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Copyright 2024 Adobe. All rights reserved.
|
|
3
|
+
This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
you may not use this file except in compliance with the License. You may obtain a copy
|
|
5
|
+
of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
6
|
+
|
|
7
|
+
Unless required by applicable law or agreed to in writing, software distributed under
|
|
8
|
+
the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
|
|
9
|
+
OF ANY KIND, either express or implied. See the License for the specific language
|
|
10
|
+
governing permissions and limitations under the License.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import { number, objectOf, string } from "../../utils/validation";
|
|
14
|
+
export default objectOf({
|
|
15
|
+
streamingMedia: objectOf({
|
|
16
|
+
channel: string().nonEmpty().required(),
|
|
17
|
+
playerName: string().nonEmpty().required(),
|
|
18
|
+
appVersion: string(),
|
|
19
|
+
mainPingInterval: number().minimum(10).maximum(50).default(10),
|
|
20
|
+
adPingInterval: number().minimum(1).maximum(10).default(10)
|
|
21
|
+
}).noUnknownFields()
|
|
22
|
+
});
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Copyright 2023 Adobe. All rights reserved.
|
|
3
|
+
This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
you may not use this file except in compliance with the License. You may obtain a copy
|
|
5
|
+
of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
6
|
+
|
|
7
|
+
Unless required by applicable law or agreed to in writing, software distributed under
|
|
8
|
+
the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
|
|
9
|
+
OF ANY KIND, either express or implied. See the License for the specific language
|
|
10
|
+
governing permissions and limitations under the License.
|
|
11
|
+
*/
|
|
12
|
+
export default {
|
|
13
|
+
PAUSE: "media.pauseStart",
|
|
14
|
+
PLAY: "media.play",
|
|
15
|
+
BUFFER_START: "media.bufferStart",
|
|
16
|
+
AD_START: "media.adStart",
|
|
17
|
+
Ad_BREAK_START: "media.adBreakStart",
|
|
18
|
+
SESSION_END: "media.sessionEnd",
|
|
19
|
+
SESSION_START: "media.sessionStart",
|
|
20
|
+
SESSION_COMPLETE: "media.sessionComplete",
|
|
21
|
+
PING: "media.ping",
|
|
22
|
+
AD_BREAK_COMPLETE: "media.adBreakComplete",
|
|
23
|
+
AD_COMPLETE: "media.adComplete",
|
|
24
|
+
AD_SKIP: "media.adSkip",
|
|
25
|
+
BITRATE_CHANGE: "media.bitrateChange",
|
|
26
|
+
CHAPTER_COMPLETE: "media.chapterComplete",
|
|
27
|
+
CHAPTER_SKIP: "media.chapterSkip",
|
|
28
|
+
CHAPTER_START: "media.chapterStart",
|
|
29
|
+
ERROR: "media.error",
|
|
30
|
+
STATES_UPDATE: "media.statesUpdate"
|
|
31
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Copyright 2024 Adobe. All rights reserved.
|
|
3
|
+
This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
you may not use this file except in compliance with the License. You may obtain a copy
|
|
5
|
+
of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
6
|
+
|
|
7
|
+
Unless required by applicable law or agreed to in writing, software distributed under
|
|
8
|
+
the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
|
|
9
|
+
OF ANY KIND, either express or implied. See the License for the specific language
|
|
10
|
+
governing permissions and limitations under the License.
|
|
11
|
+
*/
|
|
12
|
+
export default {
|
|
13
|
+
MAIN: "main",
|
|
14
|
+
AD: "ad",
|
|
15
|
+
COMPLETED: "completed"
|
|
16
|
+
};
|
|
@@ -9,48 +9,59 @@ the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTA
|
|
|
9
9
|
OF ANY KIND, either express or implied. See the License for the specific language
|
|
10
10
|
governing permissions and limitations under the License.
|
|
11
11
|
*/
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
import MediaEvents from "./mediaConstants/mediaEvents";
|
|
15
|
-
import createMediaRequestPayload from "./createMediaRequestPayload";
|
|
12
|
+
import MediaEvents from "./constants/eventTypes";
|
|
16
13
|
import createMediaRequest from "./createMediaRequest";
|
|
17
|
-
import
|
|
18
|
-
import {
|
|
14
|
+
import { toInteger } from "../../utils";
|
|
15
|
+
import { createDataCollectionRequestPayload } from "../../utils/request";
|
|
19
16
|
export default (({
|
|
20
17
|
config,
|
|
21
18
|
eventManager,
|
|
22
19
|
consent,
|
|
23
|
-
sendEdgeNetworkRequest
|
|
20
|
+
sendEdgeNetworkRequest,
|
|
21
|
+
setTimestamp
|
|
24
22
|
}) => {
|
|
25
23
|
return {
|
|
26
24
|
createMediaEvent({
|
|
27
25
|
options
|
|
28
26
|
}) {
|
|
27
|
+
const event = eventManager.createEvent();
|
|
29
28
|
const {
|
|
30
|
-
xdm = {}
|
|
31
|
-
} = options;
|
|
32
|
-
const event = {
|
|
33
29
|
xdm
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
|
|
30
|
+
} = options;
|
|
31
|
+
setTimestamp(xdm);
|
|
32
|
+
event.setUserXdm(xdm);
|
|
33
|
+
if (xdm.eventType === MediaEvents.AD_START) {
|
|
34
|
+
const {
|
|
35
|
+
advertisingDetails
|
|
36
|
+
} = options.xdm.mediaCollection;
|
|
37
|
+
event.mergeXdm({
|
|
38
|
+
mediaCollection: {
|
|
39
|
+
advertisingDetails: {
|
|
40
|
+
playerName: advertisingDetails.playerName || config.streamingMedia.playerName
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
}
|
|
37
45
|
return event;
|
|
38
46
|
},
|
|
39
47
|
createMediaSession(options) {
|
|
40
48
|
const {
|
|
41
49
|
playerName,
|
|
42
50
|
channel,
|
|
43
|
-
|
|
44
|
-
} = config.
|
|
51
|
+
appVersion
|
|
52
|
+
} = config.streamingMedia;
|
|
45
53
|
const event = eventManager.createEvent();
|
|
54
|
+
const {
|
|
55
|
+
sessionDetails
|
|
56
|
+
} = options.xdm.mediaCollection;
|
|
46
57
|
event.setUserXdm(options.xdm);
|
|
47
58
|
event.mergeXdm({
|
|
48
59
|
eventType: MediaEvents.SESSION_START,
|
|
49
60
|
mediaCollection: {
|
|
50
61
|
sessionDetails: {
|
|
51
|
-
playerName:
|
|
52
|
-
channel:
|
|
53
|
-
appVersion:
|
|
62
|
+
playerName: sessionDetails.playerName || playerName,
|
|
63
|
+
channel: sessionDetails.channel || channel,
|
|
64
|
+
appVersion: sessionDetails.appVersion || appVersion
|
|
54
65
|
}
|
|
55
66
|
}
|
|
56
67
|
});
|
|
@@ -59,57 +70,46 @@ export default (({
|
|
|
59
70
|
augmentMediaEvent({
|
|
60
71
|
event,
|
|
61
72
|
playerId,
|
|
62
|
-
|
|
73
|
+
getPlayerDetails,
|
|
63
74
|
sessionID
|
|
64
75
|
}) {
|
|
65
|
-
if (!playerId || !
|
|
76
|
+
if (!playerId || !getPlayerDetails) {
|
|
66
77
|
return event;
|
|
67
78
|
}
|
|
68
79
|
const {
|
|
69
80
|
playhead,
|
|
70
81
|
qoeDataDetails
|
|
71
|
-
} =
|
|
82
|
+
} = getPlayerDetails({
|
|
72
83
|
playerId
|
|
73
84
|
});
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
}
|
|
80
|
-
});
|
|
81
|
-
return event;
|
|
82
|
-
}
|
|
83
|
-
return deepAssign(event, {
|
|
84
|
-
xdm: {
|
|
85
|
-
mediaCollection: {
|
|
86
|
-
playhead: toInteger(playhead),
|
|
87
|
-
qoeDataDetails,
|
|
88
|
-
sessionID
|
|
89
|
-
}
|
|
85
|
+
event.mergeXdm({
|
|
86
|
+
mediaCollection: {
|
|
87
|
+
playhead: toInteger(playhead),
|
|
88
|
+
qoeDataDetails,
|
|
89
|
+
sessionID
|
|
90
90
|
}
|
|
91
91
|
});
|
|
92
|
+
return event;
|
|
92
93
|
},
|
|
93
94
|
trackMediaSession({
|
|
94
95
|
event,
|
|
95
|
-
|
|
96
|
-
onBeforeMediaEvent
|
|
96
|
+
mediaOptions
|
|
97
97
|
}) {
|
|
98
98
|
return eventManager.sendEvent(event, {
|
|
99
|
-
|
|
100
|
-
onBeforeMediaEvent
|
|
99
|
+
mediaOptions
|
|
101
100
|
});
|
|
102
101
|
},
|
|
103
102
|
trackMediaEvent({
|
|
104
|
-
event
|
|
103
|
+
event,
|
|
104
|
+
action
|
|
105
105
|
}) {
|
|
106
|
-
const
|
|
107
|
-
const mediaRequestPayload = createMediaRequestPayload();
|
|
106
|
+
const mediaRequestPayload = createDataCollectionRequestPayload();
|
|
108
107
|
const request = createMediaRequest({
|
|
109
108
|
mediaRequestPayload,
|
|
110
109
|
action
|
|
111
110
|
});
|
|
112
111
|
mediaRequestPayload.addEvent(event);
|
|
112
|
+
event.finalize();
|
|
113
113
|
return consent.awaitConsent().then(() => {
|
|
114
114
|
return sendEdgeNetworkRequest({
|
|
115
115
|
request
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Copyright 2024 Adobe. All rights reserved.
|
|
3
|
+
This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
you may not use this file except in compliance with the License. You may obtain a copy
|
|
5
|
+
of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
6
|
+
|
|
7
|
+
Unless required by applicable law or agreed to in writing, software distributed under
|
|
8
|
+
the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
|
|
9
|
+
OF ANY KIND, either express or implied. See the License for the specific language
|
|
10
|
+
governing permissions and limitations under the License.
|
|
11
|
+
*/
|
|
12
|
+
import isBlankString from "../../utils/isBlankString";
|
|
13
|
+
import MediaEvents from "./constants/eventTypes";
|
|
14
|
+
import { isNonEmptyArray } from "../../utils";
|
|
15
|
+
import PlaybackState from "./constants/playbackState";
|
|
16
|
+
export default (({
|
|
17
|
+
mediaSessionCacheManager,
|
|
18
|
+
config,
|
|
19
|
+
trackMediaEvent
|
|
20
|
+
}) => {
|
|
21
|
+
return ({
|
|
22
|
+
response,
|
|
23
|
+
playerId,
|
|
24
|
+
getPlayerDetails
|
|
25
|
+
}) => {
|
|
26
|
+
const mediaPayload = response.getPayloadsByType("media-analytics:new-session");
|
|
27
|
+
if (isNonEmptyArray(mediaPayload)) {
|
|
28
|
+
const {
|
|
29
|
+
sessionId
|
|
30
|
+
} = mediaPayload[0];
|
|
31
|
+
if (isBlankString(sessionId)) {
|
|
32
|
+
return {};
|
|
33
|
+
}
|
|
34
|
+
if (!playerId || !getPlayerDetails) {
|
|
35
|
+
return {
|
|
36
|
+
sessionId
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
const pingId = setTimeout(() => {
|
|
40
|
+
trackMediaEvent({
|
|
41
|
+
playerId,
|
|
42
|
+
xdm: {
|
|
43
|
+
eventType: MediaEvents.PING
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
}, config.streamingMedia.mainPingInterval * 1000);
|
|
47
|
+
mediaSessionCacheManager.savePing({
|
|
48
|
+
playerId,
|
|
49
|
+
pingId,
|
|
50
|
+
playbackState: PlaybackState.MAIN
|
|
51
|
+
});
|
|
52
|
+
return {
|
|
53
|
+
sessionId
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
return {};
|
|
57
|
+
};
|
|
58
|
+
});
|
package/libEs6/components/{MediaCollection → StreamingMedia}/createMediaSessionCacheManager.js
RENAMED
|
@@ -10,39 +10,36 @@ OF ANY KIND, either express or implied. See the License for the specific languag
|
|
|
10
10
|
governing permissions and limitations under the License.
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
|
+
import PlaybackState from "./constants/playbackState";
|
|
13
14
|
export default (() => {
|
|
14
15
|
let mediaSessionCache;
|
|
15
16
|
const getSession = playerId => {
|
|
16
17
|
return mediaSessionCache[playerId] || {};
|
|
17
18
|
};
|
|
18
|
-
const
|
|
19
|
+
const savePing = ({
|
|
19
20
|
playerId,
|
|
20
|
-
|
|
21
|
+
pingId,
|
|
22
|
+
playbackState
|
|
21
23
|
}) => {
|
|
22
|
-
|
|
23
|
-
if (!mediaSession) {
|
|
24
|
+
if (!mediaSessionCache[playerId]) {
|
|
24
25
|
return;
|
|
25
26
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
const stopHeartbeat = ({
|
|
29
|
-
playerId
|
|
30
|
-
}) => {
|
|
31
|
-
const mediaSession = mediaSessionCache[playerId];
|
|
32
|
-
if (!mediaSession) {
|
|
33
|
-
return;
|
|
27
|
+
if (mediaSessionCache[playerId].pingId) {
|
|
28
|
+
clearTimeout(mediaSessionCache[playerId].pingId);
|
|
34
29
|
}
|
|
35
|
-
|
|
36
|
-
|
|
30
|
+
mediaSessionCache[playerId].pingId = pingId;
|
|
31
|
+
mediaSessionCache[playerId].playbackState = playbackState;
|
|
37
32
|
};
|
|
38
|
-
const
|
|
33
|
+
const stopPing = ({
|
|
39
34
|
playerId
|
|
40
35
|
}) => {
|
|
41
|
-
const
|
|
42
|
-
if (!
|
|
36
|
+
const sessionDetails = mediaSessionCache[playerId];
|
|
37
|
+
if (!sessionDetails) {
|
|
43
38
|
return;
|
|
44
39
|
}
|
|
45
|
-
|
|
40
|
+
clearTimeout(sessionDetails.pingId);
|
|
41
|
+
sessionDetails.pingId = null;
|
|
42
|
+
sessionDetails.playbackState = PlaybackState.COMPLETED;
|
|
46
43
|
};
|
|
47
44
|
const storeSession = ({
|
|
48
45
|
playerId,
|
|
@@ -55,9 +52,8 @@ export default (() => {
|
|
|
55
52
|
};
|
|
56
53
|
return {
|
|
57
54
|
getSession,
|
|
58
|
-
stopHeartbeat,
|
|
59
|
-
updateLastTriggeredEventTS,
|
|
60
55
|
storeSession,
|
|
61
|
-
|
|
56
|
+
stopPing,
|
|
57
|
+
savePing
|
|
62
58
|
};
|
|
63
59
|
});
|