@adobe/alloy 2.20.0-alpha.1 → 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 +7 -14
- 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/StreamingMedia/configValidators.js +24 -0
- package/libEs5/components/{MediaCollection → StreamingMedia}/constants/eventTypes.js +14 -5
- package/{libEs6/utils/debounce.js → libEs5/components/StreamingMedia/constants/playbackState.js} +9 -12
- package/libEs5/components/{MediaCollection → StreamingMedia}/createMediaEventManager.js +27 -24
- package/libEs5/components/{MediaCollection → StreamingMedia}/createMediaRequest.js +2 -3
- package/libEs5/components/StreamingMedia/createMediaResponseHandler.js +57 -0
- package/libEs5/components/{MediaCollection → StreamingMedia}/createMediaSessionCacheManager.js +21 -25
- 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 +84 -92
- package/libEs5/utils/validation/integerValidator.js +2 -3
- package/libEs5/utils/validation/matchesRegexpValidator.js +2 -3
- 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 +3 -2
- package/libEs6/components/LegacyMediaAnalytics/createGetInstance.js +240 -0
- package/libEs6/components/LegacyMediaAnalytics/createLegacyMediaComponent.js +85 -0
- package/libEs6/components/LegacyMediaAnalytics/createMediaHelper.js +5 -11
- 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/Personalization/createHandleConsentFlicker.js +26 -0
- 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/{MediaCollection/constants/eventTypes.js → StreamingMedia/constants/playbackState.js} +4 -9
- package/libEs6/components/{MediaCollection → StreamingMedia}/createMediaEventManager.js +23 -16
- package/libEs6/components/StreamingMedia/createMediaResponseHandler.js +58 -0
- package/libEs6/components/{MediaCollection → StreamingMedia}/createMediaSessionCacheManager.js +15 -19
- 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/package.json +19 -4
- package/libEs5/components/LegacyMediaAnalytics/createMediaAnalyticsTracker.js +0 -272
- package/libEs5/components/MediaCollection/createHeartbeatEngine.js +0 -63
- package/libEs5/components/MediaCollection/createUpdateMediaSessionState.js +0 -31
- package/libEs5/components/MediaCollection/index.js +0 -165
- package/libEs5/components/MediaCollection/validateMediaEventOptions.js +0 -35
- package/libEs6/components/LegacyMediaAnalytics/createMediaAnalyticsTracker.js +0 -276
- package/libEs6/components/MediaCollection/createHeartbeatEngine.js +0 -64
- package/libEs6/components/MediaCollection/createUpdateMediaSessionState.js +0 -30
- package/libEs6/components/MediaCollection/index.js +0 -164
- /package/libEs6/components/LegacyMediaAnalytics/{media → constants}/mediaKeysToXdmConverter.js +0 -0
- /package/libEs6/components/{MediaCollection → StreamingMedia}/createMediaRequest.js +0 -0
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
exports.VIDEO_METADATA_KEYS = exports.STREAM_TYPE = exports.PLAYER_STATE = exports.MEDIA_TYPE = exports.MEDIA_OBJECT_KEYS = exports.
|
|
4
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
5
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
6
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
3
|
+
exports.VIDEO_METADATA_KEYS = exports.STREAM_TYPE = exports.PLAYER_STATE = exports.MEDIA_TYPE = exports.MEDIA_OBJECT_KEYS = exports.MEDIA_EVENTS_INTERNAL = exports.EVENT = exports.AUDIO_METADATA_KEYS = exports.AD_METADATA_KEYS = void 0;
|
|
7
4
|
/*
|
|
8
5
|
Copyright 2023 Adobe. All rights reserved.
|
|
9
6
|
This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
@@ -16,12 +13,11 @@ OF ANY KIND, either express or implied. See the License for the specific languag
|
|
|
16
13
|
governing permissions and limitations under the License.
|
|
17
14
|
*/
|
|
18
15
|
|
|
19
|
-
var MEDIA_TYPE = {
|
|
16
|
+
var MEDIA_TYPE = exports.MEDIA_TYPE = {
|
|
20
17
|
Video: "video",
|
|
21
18
|
Audio: "audio"
|
|
22
19
|
};
|
|
23
|
-
exports.
|
|
24
|
-
var STREAM_TYPE = {
|
|
20
|
+
var STREAM_TYPE = exports.STREAM_TYPE = {
|
|
25
21
|
VOD: "vod",
|
|
26
22
|
Live: "live",
|
|
27
23
|
Linear: "linear",
|
|
@@ -29,16 +25,14 @@ var STREAM_TYPE = {
|
|
|
29
25
|
Audiobook: "audiobook",
|
|
30
26
|
AOD: "aod"
|
|
31
27
|
};
|
|
32
|
-
exports.
|
|
33
|
-
var PLAYER_STATE = {
|
|
28
|
+
var PLAYER_STATE = exports.PLAYER_STATE = {
|
|
34
29
|
FullScreen: "fullScreen",
|
|
35
30
|
ClosedCaption: "closedCaptioning",
|
|
36
31
|
Mute: "mute",
|
|
37
32
|
PictureInPicture: "pictureInPicture",
|
|
38
33
|
InFocus: "inFocus"
|
|
39
34
|
};
|
|
40
|
-
exports.
|
|
41
|
-
var EVENT = {
|
|
35
|
+
var EVENT = exports.EVENT = {
|
|
42
36
|
/**
|
|
43
37
|
* Constant defining event type for AdBreak start
|
|
44
38
|
*/
|
|
@@ -100,21 +94,20 @@ var EVENT = {
|
|
|
100
94
|
*/
|
|
101
95
|
StateEnd: "stateEnd"
|
|
102
96
|
};
|
|
103
|
-
exports.
|
|
104
|
-
var MEDIA_EVENTS = _objectSpread({
|
|
97
|
+
var MEDIA_EVENTS_INTERNAL = exports.MEDIA_EVENTS_INTERNAL = {
|
|
105
98
|
SessionStart: "sessionStart",
|
|
106
99
|
SessionEnd: "sessionEnd",
|
|
107
100
|
SessionComplete: "sessionComplete",
|
|
108
101
|
Play: "play",
|
|
109
|
-
Pause: "pauseStart"
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
102
|
+
Pause: "pauseStart",
|
|
103
|
+
Error: "error",
|
|
104
|
+
StateUpdate: "statesUpdate"
|
|
105
|
+
};
|
|
106
|
+
var MEDIA_OBJECT_KEYS = exports.MEDIA_OBJECT_KEYS = {
|
|
113
107
|
MediaResumed: "media.resumed",
|
|
114
108
|
GranularAdTracking: "media.granularadtracking"
|
|
115
109
|
};
|
|
116
|
-
exports.
|
|
117
|
-
var VIDEO_METADATA_KEYS = {
|
|
110
|
+
var VIDEO_METADATA_KEYS = exports.VIDEO_METADATA_KEYS = {
|
|
118
111
|
Show: "a.media.show",
|
|
119
112
|
Season: "a.media.season",
|
|
120
113
|
Episode: "a.media.episode",
|
|
@@ -133,8 +126,7 @@ var VIDEO_METADATA_KEYS = {
|
|
|
133
126
|
Feed: "a.media.feed",
|
|
134
127
|
StreamFormat: "a.media.format"
|
|
135
128
|
};
|
|
136
|
-
exports.
|
|
137
|
-
var AUDIO_METADATA_KEYS = {
|
|
129
|
+
var AUDIO_METADATA_KEYS = exports.AUDIO_METADATA_KEYS = {
|
|
138
130
|
Artist: "a.media.artist",
|
|
139
131
|
Album: "a.media.album",
|
|
140
132
|
Label: "a.media.label",
|
|
@@ -142,13 +134,11 @@ var AUDIO_METADATA_KEYS = {
|
|
|
142
134
|
Station: "a.media.station",
|
|
143
135
|
Publisher: "a.media.publisher"
|
|
144
136
|
};
|
|
145
|
-
exports.
|
|
146
|
-
var AD_METADATA_KEYS = {
|
|
137
|
+
var AD_METADATA_KEYS = exports.AD_METADATA_KEYS = {
|
|
147
138
|
Advertiser: "a.media.ad.advertiser",
|
|
148
139
|
CampaignId: "a.media.ad.campaign",
|
|
149
140
|
CreativeId: "a.media.ad.creative",
|
|
150
141
|
PlacementId: "a.media.ad.placement",
|
|
151
142
|
SiteId: "a.media.ad.site",
|
|
152
143
|
CreativeUrl: "a.media.ad.creativeURL"
|
|
153
|
-
};
|
|
154
|
-
exports.AD_METADATA_KEYS = AD_METADATA_KEYS;
|
|
144
|
+
};
|
package/libEs5/components/LegacyMediaAnalytics/{media → constants}/mediaKeysToXdmConverter.js
RENAMED
|
@@ -13,7 +13,7 @@ OF ANY KIND, either express or implied. See the License for the specific languag
|
|
|
13
13
|
governing permissions and limitations under the License.
|
|
14
14
|
*/
|
|
15
15
|
|
|
16
|
-
var mediaToXdmKeys = {
|
|
16
|
+
var mediaToXdmKeys = exports.mediaToXdmKeys = {
|
|
17
17
|
"a.media.show": "show",
|
|
18
18
|
"a.media.season": "season",
|
|
19
19
|
"a.media.episode": "episode",
|
|
@@ -39,13 +39,11 @@ var mediaToXdmKeys = {
|
|
|
39
39
|
"a.media.publisher": "publisher",
|
|
40
40
|
"media.resumed": "hasResume"
|
|
41
41
|
};
|
|
42
|
-
exports.
|
|
43
|
-
var adsToXdmKeys = {
|
|
42
|
+
var adsToXdmKeys = exports.adsToXdmKeys = {
|
|
44
43
|
"a.media.ad.advertiser": "advertiser",
|
|
45
44
|
"a.media.ad.campaign": "campaignID",
|
|
46
45
|
"a.media.ad.creative": "creativeID",
|
|
47
46
|
"a.media.ad.placement": "placementID",
|
|
48
47
|
"a.media.ad.site": "siteID",
|
|
49
48
|
"a.media.ad.creativeURL": "creativeURL"
|
|
50
|
-
};
|
|
51
|
-
exports.adsToXdmKeys = adsToXdmKeys;
|
|
49
|
+
};
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.default = void 0;
|
|
4
|
+
var _constants = require("./constants/constants");
|
|
5
|
+
var _utils = require("../../utils");
|
|
6
|
+
var _mediaKeysToXdmConverter = require("./constants/mediaKeysToXdmConverter");
|
|
7
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
8
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
9
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
10
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
11
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
12
|
+
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } /*
|
|
13
|
+
Copyright 2024 Adobe. All rights reserved.
|
|
14
|
+
This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
15
|
+
you may not use this file except in compliance with the License. You may obtain a copy
|
|
16
|
+
of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
17
|
+
|
|
18
|
+
Unless required by applicable law or agreed to in writing, software distributed under
|
|
19
|
+
the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
|
|
20
|
+
OF ANY KIND, either express or implied. See the License for the specific language
|
|
21
|
+
governing permissions and limitations under the License.
|
|
22
|
+
*/
|
|
23
|
+
var _default = exports.default = function _default(_ref) {
|
|
24
|
+
var logger = _ref.logger,
|
|
25
|
+
trackMediaSession = _ref.trackMediaSession,
|
|
26
|
+
trackMediaEvent = _ref.trackMediaEvent,
|
|
27
|
+
uuid = _ref.uuid;
|
|
28
|
+
var trackerState = {
|
|
29
|
+
qoe: null,
|
|
30
|
+
lastPlayhead: 0,
|
|
31
|
+
playerId: uuid()
|
|
32
|
+
};
|
|
33
|
+
var getEventType = function getEventType(_ref2) {
|
|
34
|
+
var eventType = _ref2.eventType;
|
|
35
|
+
if (eventType === _constants.EVENT.BufferComplete || eventType === _constants.EVENT.SeekComplete) {
|
|
36
|
+
return _constants.MEDIA_EVENTS_INTERNAL.Play;
|
|
37
|
+
}
|
|
38
|
+
if (eventType === _constants.EVENT.StateStart || eventType === _constants.EVENT.StateEnd) {
|
|
39
|
+
return _constants.MEDIA_EVENTS_INTERNAL.StateUpdate;
|
|
40
|
+
}
|
|
41
|
+
if (eventType === _constants.EVENT.SeekStart) {
|
|
42
|
+
return _constants.MEDIA_EVENTS_INTERNAL.Pause;
|
|
43
|
+
}
|
|
44
|
+
return eventType;
|
|
45
|
+
};
|
|
46
|
+
var createXdmObject = function createXdmObject(_ref3) {
|
|
47
|
+
var eventType = _ref3.eventType,
|
|
48
|
+
_ref3$mediaDetails = _ref3.mediaDetails,
|
|
49
|
+
mediaDetails = _ref3$mediaDetails === void 0 ? {} : _ref3$mediaDetails,
|
|
50
|
+
_ref3$contextData = _ref3.contextData,
|
|
51
|
+
contextData = _ref3$contextData === void 0 ? [] : _ref3$contextData;
|
|
52
|
+
var action = getEventType({
|
|
53
|
+
eventType: eventType
|
|
54
|
+
});
|
|
55
|
+
if (eventType === _constants.EVENT.StateStart) {
|
|
56
|
+
var _xdm = {
|
|
57
|
+
eventType: "media." + action,
|
|
58
|
+
mediaCollection: {
|
|
59
|
+
statesStart: [mediaDetails]
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
return _xdm;
|
|
63
|
+
}
|
|
64
|
+
if (eventType === _constants.EVENT.StateEnd) {
|
|
65
|
+
var _xdm2 = {
|
|
66
|
+
eventType: "media." + action,
|
|
67
|
+
mediaCollection: {
|
|
68
|
+
statesEnd: [mediaDetails]
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
return _xdm2;
|
|
72
|
+
}
|
|
73
|
+
var xdm = {
|
|
74
|
+
eventType: "media." + action,
|
|
75
|
+
mediaCollection: _objectSpread({}, mediaDetails)
|
|
76
|
+
};
|
|
77
|
+
var customMetadata = [];
|
|
78
|
+
Object.keys(contextData).forEach(function (key) {
|
|
79
|
+
if (_mediaKeysToXdmConverter.mediaToXdmKeys[key]) {
|
|
80
|
+
xdm.mediaCollection.sessionDetails[_mediaKeysToXdmConverter.mediaToXdmKeys[key]] = contextData[key];
|
|
81
|
+
} else if (_mediaKeysToXdmConverter.adsToXdmKeys[key]) {
|
|
82
|
+
xdm.mediaCollection.advertisingDetails[_mediaKeysToXdmConverter.adsToXdmKeys[key]] = contextData[key];
|
|
83
|
+
} else {
|
|
84
|
+
customMetadata.push({
|
|
85
|
+
name: key,
|
|
86
|
+
value: contextData[key]
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
if ((0, _utils.isNonEmptyArray)(customMetadata)) {
|
|
91
|
+
xdm.mediaCollection.customMetadata = customMetadata;
|
|
92
|
+
}
|
|
93
|
+
return xdm;
|
|
94
|
+
};
|
|
95
|
+
return {
|
|
96
|
+
trackSessionStart: function trackSessionStart(mediaObject) {
|
|
97
|
+
var contextData = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
98
|
+
if ((0, _utils.isEmptyObject)(mediaObject)) {
|
|
99
|
+
logger.warn("Invalid media object");
|
|
100
|
+
return {};
|
|
101
|
+
}
|
|
102
|
+
if (trackerState === null) {
|
|
103
|
+
logger.warn("The Media Session was completed. Restarting a new session.");
|
|
104
|
+
trackerState = {
|
|
105
|
+
qoe: null,
|
|
106
|
+
lastPlayhead: 0,
|
|
107
|
+
playerId: uuid()
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
var xdm = createXdmObject({
|
|
111
|
+
eventType: _constants.MEDIA_EVENTS_INTERNAL.SessionStart,
|
|
112
|
+
mediaDetails: mediaObject,
|
|
113
|
+
contextData: contextData
|
|
114
|
+
});
|
|
115
|
+
return trackMediaSession({
|
|
116
|
+
playerId: trackerState.playerId,
|
|
117
|
+
getPlayerDetails: function getPlayerDetails() {
|
|
118
|
+
return {
|
|
119
|
+
playhead: trackerState.lastPlayhead,
|
|
120
|
+
qoeDataDetails: trackerState.qoe
|
|
121
|
+
};
|
|
122
|
+
},
|
|
123
|
+
xdm: xdm
|
|
124
|
+
});
|
|
125
|
+
},
|
|
126
|
+
trackPlay: function trackPlay() {
|
|
127
|
+
if (trackerState === null) {
|
|
128
|
+
logger.warn("The Media Session was completed.");
|
|
129
|
+
return {};
|
|
130
|
+
}
|
|
131
|
+
var xdm = createXdmObject({
|
|
132
|
+
eventType: _constants.MEDIA_EVENTS_INTERNAL.Play
|
|
133
|
+
});
|
|
134
|
+
return trackMediaEvent({
|
|
135
|
+
playerId: trackerState.playerId,
|
|
136
|
+
xdm: xdm
|
|
137
|
+
});
|
|
138
|
+
},
|
|
139
|
+
trackPause: function trackPause() {
|
|
140
|
+
if (trackerState === null) {
|
|
141
|
+
logger.warn("The Media Session was completed.");
|
|
142
|
+
return {};
|
|
143
|
+
}
|
|
144
|
+
var xdm = createXdmObject({
|
|
145
|
+
eventType: _constants.MEDIA_EVENTS_INTERNAL.Pause
|
|
146
|
+
});
|
|
147
|
+
return trackMediaEvent({
|
|
148
|
+
playerId: trackerState.playerId,
|
|
149
|
+
xdm: xdm
|
|
150
|
+
});
|
|
151
|
+
},
|
|
152
|
+
trackSessionEnd: function trackSessionEnd() {
|
|
153
|
+
if (trackerState === null) {
|
|
154
|
+
logger.warn("The Media Session was completed.");
|
|
155
|
+
return {};
|
|
156
|
+
}
|
|
157
|
+
var xdm = createXdmObject({
|
|
158
|
+
eventType: _constants.MEDIA_EVENTS_INTERNAL.SessionEnd
|
|
159
|
+
});
|
|
160
|
+
return trackMediaEvent({
|
|
161
|
+
playerId: trackerState.playerId,
|
|
162
|
+
xdm: xdm
|
|
163
|
+
});
|
|
164
|
+
},
|
|
165
|
+
trackComplete: function trackComplete() {
|
|
166
|
+
if (trackerState === null) {
|
|
167
|
+
logger.warn("The Media Session was completed.");
|
|
168
|
+
return {};
|
|
169
|
+
}
|
|
170
|
+
var xdm = createXdmObject({
|
|
171
|
+
eventType: _constants.MEDIA_EVENTS_INTERNAL.SessionComplete
|
|
172
|
+
});
|
|
173
|
+
return trackMediaEvent({
|
|
174
|
+
playerId: trackerState.playerId,
|
|
175
|
+
xdm: xdm
|
|
176
|
+
});
|
|
177
|
+
},
|
|
178
|
+
trackError: function trackError(errorId) {
|
|
179
|
+
logger.warn("trackError(" + errorId + ")");
|
|
180
|
+
if (trackerState === null) {
|
|
181
|
+
logger.warn("The Media Session was completed.");
|
|
182
|
+
return {};
|
|
183
|
+
}
|
|
184
|
+
var errorDetails = {
|
|
185
|
+
name: errorId,
|
|
186
|
+
source: "player"
|
|
187
|
+
};
|
|
188
|
+
var xdm = createXdmObject({
|
|
189
|
+
eventType: _constants.MEDIA_EVENTS_INTERNAL.Error,
|
|
190
|
+
mediaDetails: {
|
|
191
|
+
errorDetails: errorDetails
|
|
192
|
+
}
|
|
193
|
+
});
|
|
194
|
+
return trackMediaEvent({
|
|
195
|
+
playerId: trackerState.playerId,
|
|
196
|
+
xdm: xdm
|
|
197
|
+
});
|
|
198
|
+
},
|
|
199
|
+
trackEvent: function trackEvent(eventType, info, context) {
|
|
200
|
+
if ((0, _utils.isEmptyObject)(info)) {
|
|
201
|
+
logger.warn("Invalid media object.");
|
|
202
|
+
return {};
|
|
203
|
+
}
|
|
204
|
+
if (trackerState === null) {
|
|
205
|
+
logger.warn("The Media Session was completed.");
|
|
206
|
+
return {};
|
|
207
|
+
}
|
|
208
|
+
if (!(0, _utils.includes)(Object.values(_constants.EVENT), eventType)) {
|
|
209
|
+
logger.warn("Invalid event type");
|
|
210
|
+
return {};
|
|
211
|
+
}
|
|
212
|
+
var xdm = createXdmObject({
|
|
213
|
+
eventType: eventType,
|
|
214
|
+
mediaDetails: info,
|
|
215
|
+
contextData: context
|
|
216
|
+
});
|
|
217
|
+
return trackMediaEvent({
|
|
218
|
+
playerId: trackerState.playerId,
|
|
219
|
+
xdm: xdm
|
|
220
|
+
});
|
|
221
|
+
},
|
|
222
|
+
updatePlayhead: function updatePlayhead(time) {
|
|
223
|
+
if (trackerState === null) {
|
|
224
|
+
logger.warn("The Media Session was completed.");
|
|
225
|
+
return;
|
|
226
|
+
}
|
|
227
|
+
if ((0, _utils.isNumber)(time)) {
|
|
228
|
+
trackerState.lastPlayhead = parseInt(time, 10);
|
|
229
|
+
}
|
|
230
|
+
},
|
|
231
|
+
updateQoEObject: function updateQoEObject(qoeObject) {
|
|
232
|
+
if (trackerState === null) {
|
|
233
|
+
logger.warn("The Media Session was completed.");
|
|
234
|
+
return;
|
|
235
|
+
}
|
|
236
|
+
if (!qoeObject) {
|
|
237
|
+
return;
|
|
238
|
+
}
|
|
239
|
+
trackerState.qoe = qoeObject;
|
|
240
|
+
},
|
|
241
|
+
destroy: function destroy() {
|
|
242
|
+
logger.warn("Destroy called, destroying the tracker.");
|
|
243
|
+
trackerState = null;
|
|
244
|
+
}
|
|
245
|
+
};
|
|
246
|
+
};
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.default = void 0;
|
|
4
|
+
var _utils = require("../../utils");
|
|
5
|
+
var _constants = require("./constants/constants");
|
|
6
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
7
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
8
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
9
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
10
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
11
|
+
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } /*
|
|
12
|
+
Copyright 2024 Adobe. All rights reserved.
|
|
13
|
+
This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
14
|
+
you may not use this file except in compliance with the License. You may obtain a copy
|
|
15
|
+
of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
16
|
+
|
|
17
|
+
Unless required by applicable law or agreed to in writing, software distributed under
|
|
18
|
+
the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
|
|
19
|
+
OF ANY KIND, either express or implied. See the License for the specific language
|
|
20
|
+
governing permissions and limitations under the License.
|
|
21
|
+
*/
|
|
22
|
+
var _default = exports.default = function _default(_ref) {
|
|
23
|
+
var trackMediaEvent = _ref.trackMediaEvent,
|
|
24
|
+
trackMediaSession = _ref.trackMediaSession,
|
|
25
|
+
mediaResponseHandler = _ref.mediaResponseHandler,
|
|
26
|
+
logger = _ref.logger,
|
|
27
|
+
createMediaHelper = _ref.createMediaHelper,
|
|
28
|
+
createGetInstance = _ref.createGetInstance,
|
|
29
|
+
config = _ref.config;
|
|
30
|
+
return {
|
|
31
|
+
lifecycle: {
|
|
32
|
+
onBeforeEvent: function onBeforeEvent(_ref2) {
|
|
33
|
+
var mediaOptions = _ref2.mediaOptions,
|
|
34
|
+
_ref2$onResponse = _ref2.onResponse,
|
|
35
|
+
onResponse = _ref2$onResponse === void 0 ? _utils.noop : _ref2$onResponse;
|
|
36
|
+
if (!mediaOptions) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
var legacy = mediaOptions.legacy,
|
|
40
|
+
playerId = mediaOptions.playerId,
|
|
41
|
+
getPlayerDetails = mediaOptions.getPlayerDetails;
|
|
42
|
+
if (!legacy) {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
onResponse(function (_ref3) {
|
|
46
|
+
var response = _ref3.response;
|
|
47
|
+
return mediaResponseHandler({
|
|
48
|
+
playerId: playerId,
|
|
49
|
+
getPlayerDetails: getPlayerDetails,
|
|
50
|
+
response: response
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
commands: {
|
|
56
|
+
getMediaAnalyticsTracker: {
|
|
57
|
+
run: function run() {
|
|
58
|
+
if (!config.streamingMedia) {
|
|
59
|
+
return Promise.reject(new Error("Streaming media is not configured."));
|
|
60
|
+
}
|
|
61
|
+
logger.info("Streaming media is configured in legacy mode.");
|
|
62
|
+
var mediaAnalyticsHelper = createMediaHelper({
|
|
63
|
+
logger: logger
|
|
64
|
+
});
|
|
65
|
+
return Promise.resolve(_objectSpread({
|
|
66
|
+
getInstance: function getInstance() {
|
|
67
|
+
return createGetInstance({
|
|
68
|
+
logger: logger,
|
|
69
|
+
trackMediaEvent: trackMediaEvent,
|
|
70
|
+
trackMediaSession: trackMediaSession,
|
|
71
|
+
uuid: _utils.uuid
|
|
72
|
+
});
|
|
73
|
+
},
|
|
74
|
+
Event: _constants.EVENT,
|
|
75
|
+
MediaType: _constants.MEDIA_TYPE,
|
|
76
|
+
PlayerState: _constants.PLAYER_STATE,
|
|
77
|
+
StreamType: _constants.STREAM_TYPE,
|
|
78
|
+
MediaObjectKey: _constants.MEDIA_OBJECT_KEYS,
|
|
79
|
+
VideoMetadataKeys: _constants.VIDEO_METADATA_KEYS,
|
|
80
|
+
AudioMetadataKeys: _constants.AUDIO_METADATA_KEYS,
|
|
81
|
+
AdMetadataKeys: _constants.AD_METADATA_KEYS
|
|
82
|
+
}, mediaAnalyticsHelper));
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
};
|
|
@@ -13,7 +13,7 @@ the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTA
|
|
|
13
13
|
OF ANY KIND, either express or implied. See the License for the specific language
|
|
14
14
|
governing permissions and limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
var _default = function _default(_ref) {
|
|
16
|
+
var _default = exports.default = function _default(_ref) {
|
|
17
17
|
var logger = _ref.logger;
|
|
18
18
|
var createMediaObject = function createMediaObject(friendlyName, name, length, contentType, streamType) {
|
|
19
19
|
var mediaObject = {
|
|
@@ -132,15 +132,12 @@ var _default = function _default(_ref) {
|
|
|
132
132
|
}
|
|
133
133
|
};
|
|
134
134
|
var createStateObject = function createStateObject(stateName) {
|
|
135
|
-
var STATE_NAME_REGEX = "^[a-zA-Z0-9_]{1,64}$";
|
|
135
|
+
var STATE_NAME_REGEX = new RegExp("^[a-zA-Z0-9_]{1,64}$");
|
|
136
136
|
var validator = (0, _validation.string)().matches(STATE_NAME_REGEX, "This is not a valid state name.");
|
|
137
137
|
try {
|
|
138
138
|
var result = validator(stateName);
|
|
139
|
-
var stateDetails = {
|
|
140
|
-
name: result
|
|
141
|
-
};
|
|
142
139
|
return {
|
|
143
|
-
|
|
140
|
+
name: result
|
|
144
141
|
};
|
|
145
142
|
} catch (error) {
|
|
146
143
|
logger.warn("An error occurred while creating the State Object.", error);
|
|
@@ -162,14 +159,11 @@ var _default = function _default(_ref) {
|
|
|
162
159
|
});
|
|
163
160
|
try {
|
|
164
161
|
var result = validator(qoeObject);
|
|
165
|
-
|
|
162
|
+
return {
|
|
166
163
|
bitrate: result.bitrate,
|
|
167
164
|
droppedFrames: result.droppedFrames,
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
};
|
|
171
|
-
return {
|
|
172
|
-
qoeDetails: qoeDetails
|
|
165
|
+
framesPerSecond: result.fps,
|
|
166
|
+
timeToStart: result.startupTime
|
|
173
167
|
};
|
|
174
168
|
} catch (error) {
|
|
175
169
|
logger.warn("An error occurred while creating the QOE Object.", error);
|
|
@@ -184,5 +178,4 @@ var _default = function _default(_ref) {
|
|
|
184
178
|
createStateObject: createStateObject,
|
|
185
179
|
createQoEObject: createQoEObject
|
|
186
180
|
};
|
|
187
|
-
};
|
|
188
|
-
exports.default = _default;
|
|
181
|
+
};
|
|
@@ -1,10 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
exports.default = void 0;
|
|
4
|
-
var
|
|
5
|
-
var
|
|
4
|
+
var _createMediaEventManager = require("../StreamingMedia/createMediaEventManager");
|
|
5
|
+
var _createMediaSessionCacheManager = require("../StreamingMedia/createMediaSessionCacheManager");
|
|
6
|
+
var _createTrackMediaEvent = require("../StreamingMedia/createTrackMediaEvent");
|
|
7
|
+
var _createTrackMediaSession = require("../StreamingMedia/createTrackMediaSession");
|
|
8
|
+
var _createMediaResponseHandler = require("../StreamingMedia/createMediaResponseHandler");
|
|
9
|
+
var _createLegacyMediaComponent = require("./createLegacyMediaComponent");
|
|
10
|
+
var _createMediaHelper = require("./createMediaHelper");
|
|
11
|
+
var _createGetInstance = require("./createGetInstance");
|
|
12
|
+
var _injectTimestamp = require("../Context/injectTimestamp");
|
|
6
13
|
/*
|
|
7
|
-
Copyright
|
|
14
|
+
Copyright 2024 Adobe. All rights reserved.
|
|
8
15
|
This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
9
16
|
you may not use this file except in compliance with the License. You may obtain a copy
|
|
10
17
|
of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
@@ -22,27 +29,43 @@ var createLegacyMediaAnalytics = function createLegacyMediaAnalytics(_ref) {
|
|
|
22
29
|
config = _ref.config,
|
|
23
30
|
logger = _ref.logger,
|
|
24
31
|
consent = _ref.consent;
|
|
32
|
+
var mediaSessionCacheManager = (0, _createMediaSessionCacheManager.default)({
|
|
33
|
+
config: config
|
|
34
|
+
});
|
|
25
35
|
var mediaEventManager = (0, _createMediaEventManager.default)({
|
|
26
36
|
sendEdgeNetworkRequest: sendEdgeNetworkRequest,
|
|
27
37
|
config: config,
|
|
28
|
-
logger: logger,
|
|
29
38
|
consent: consent,
|
|
30
|
-
eventManager: eventManager
|
|
39
|
+
eventManager: eventManager,
|
|
40
|
+
setTimestamp: (0, _injectTimestamp.default)(function () {
|
|
41
|
+
return new Date();
|
|
42
|
+
})
|
|
43
|
+
});
|
|
44
|
+
var trackMediaEvent = (0, _createTrackMediaEvent.default)({
|
|
45
|
+
mediaSessionCacheManager: mediaSessionCacheManager,
|
|
46
|
+
mediaEventManager: mediaEventManager,
|
|
47
|
+
config: config
|
|
48
|
+
});
|
|
49
|
+
var trackMediaSession = (0, _createTrackMediaSession.default)({
|
|
50
|
+
config: config,
|
|
51
|
+
mediaEventManager: mediaEventManager,
|
|
52
|
+
mediaSessionCacheManager: mediaSessionCacheManager,
|
|
53
|
+
legacy: true
|
|
54
|
+
});
|
|
55
|
+
var mediaResponseHandler = (0, _createMediaResponseHandler.default)({
|
|
56
|
+
mediaSessionCacheManager: mediaSessionCacheManager,
|
|
57
|
+
config: config,
|
|
58
|
+
trackMediaEvent: trackMediaEvent
|
|
59
|
+
});
|
|
60
|
+
return (0, _createLegacyMediaComponent.default)({
|
|
61
|
+
mediaResponseHandler: mediaResponseHandler,
|
|
62
|
+
trackMediaSession: trackMediaSession,
|
|
63
|
+
trackMediaEvent: trackMediaEvent,
|
|
64
|
+
createMediaHelper: _createMediaHelper.default,
|
|
65
|
+
createGetInstance: _createGetInstance.default,
|
|
66
|
+
logger: logger,
|
|
67
|
+
config: config
|
|
31
68
|
});
|
|
32
|
-
return {
|
|
33
|
-
commands: {
|
|
34
|
-
getMediaAnalyticsTracker: {
|
|
35
|
-
run: function run() {
|
|
36
|
-
return (0, _createMediaAnalyticsTracker.createMediaAnalyticsTracker)({
|
|
37
|
-
config: config,
|
|
38
|
-
logger: logger,
|
|
39
|
-
mediaEventManager: mediaEventManager
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
};
|
|
45
69
|
};
|
|
46
70
|
createLegacyMediaAnalytics.namespace = "Legacy Media Analytics";
|
|
47
|
-
var _default = createLegacyMediaAnalytics;
|
|
48
|
-
exports.default = _default;
|
|
71
|
+
var _default = exports.default = createLegacyMediaAnalytics;
|
|
@@ -1,27 +1,30 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
3
4
|
exports.default = void 0;
|
|
4
5
|
var _libraryVersion = require("../../constants/libraryVersion");
|
|
5
6
|
var _coreCommands = require("../../constants/coreCommands");
|
|
6
|
-
function ownKeys(
|
|
7
|
-
function _objectSpread(
|
|
8
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
7
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
8
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
9
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
10
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
11
|
+
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
9
12
|
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
10
13
|
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
11
14
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
12
15
|
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
13
16
|
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
14
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++)
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
17
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } /*
|
|
18
|
+
Copyright 2019 Adobe. All rights reserved.
|
|
19
|
+
This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
20
|
+
you may not use this file except in compliance with the License. You may obtain a copy
|
|
21
|
+
of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
22
|
+
|
|
23
|
+
Unless required by applicable law or agreed to in writing, software distributed under
|
|
24
|
+
the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
|
|
25
|
+
OF ANY KIND, either express or implied. See the License for the specific language
|
|
26
|
+
governing permissions and limitations under the License.
|
|
27
|
+
*/
|
|
25
28
|
var prepareLibraryInfo = function prepareLibraryInfo(_ref) {
|
|
26
29
|
var config = _ref.config,
|
|
27
30
|
componentRegistry = _ref.componentRegistry;
|
|
@@ -34,10 +37,12 @@ var prepareLibraryInfo = function prepareLibraryInfo(_ref) {
|
|
|
34
37
|
}
|
|
35
38
|
resultConfig[key] = value.toString();
|
|
36
39
|
});
|
|
40
|
+
var components = componentRegistry.getComponentNames();
|
|
37
41
|
return {
|
|
38
42
|
version: _libraryVersion.default,
|
|
39
43
|
configs: resultConfig,
|
|
40
|
-
commands: allCommands
|
|
44
|
+
commands: allCommands,
|
|
45
|
+
components: components
|
|
41
46
|
};
|
|
42
47
|
};
|
|
43
48
|
var createLibraryInfo = function createLibraryInfo(_ref2) {
|
|
@@ -60,5 +65,4 @@ var createLibraryInfo = function createLibraryInfo(_ref2) {
|
|
|
60
65
|
};
|
|
61
66
|
};
|
|
62
67
|
createLibraryInfo.namespace = "LibraryInfo";
|
|
63
|
-
var _default = createLibraryInfo;
|
|
64
|
-
exports.default = _default;
|
|
68
|
+
var _default = exports.default = createLibraryInfo;
|