@adobe/alloy 2.21.1 → 2.22.0-alpha.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.
Files changed (436) hide show
  1. package/babel.config.cjs +0 -1
  2. package/libEs5/baseCode/index.js +3 -2
  3. package/libEs5/components/ActivityCollector/attachClickActivityCollector.js +23 -20
  4. package/libEs5/components/ActivityCollector/configValidators.js +2 -2
  5. package/libEs5/components/ActivityCollector/createClickActivityStorage.js +11 -9
  6. package/libEs5/components/ActivityCollector/createClickedElementProperties.js +39 -32
  7. package/libEs5/components/ActivityCollector/createGetClickedElementProperties.js +28 -20
  8. package/libEs5/components/ActivityCollector/createInjectClickedElementProperties.js +24 -21
  9. package/libEs5/components/ActivityCollector/createRecallAndInjectClickedElementProperties.js +10 -8
  10. package/libEs5/components/ActivityCollector/createStorePageViewProperties.js +6 -4
  11. package/libEs5/components/ActivityCollector/getLinkName.js +19 -18
  12. package/libEs5/components/ActivityCollector/getLinkRegion.js +10 -9
  13. package/libEs5/components/ActivityCollector/index.js +61 -45
  14. package/libEs5/components/ActivityCollector/utils/activityMapExtensionEnabled.js +3 -5
  15. package/libEs5/components/ActivityCollector/utils/createTransientStorage.js +7 -6
  16. package/libEs5/components/ActivityCollector/utils/determineLinkType.js +4 -3
  17. package/libEs5/components/ActivityCollector/utils/dom/elementHasClickHandler.js +3 -2
  18. package/libEs5/components/ActivityCollector/utils/dom/extractDomain.js +5 -4
  19. package/libEs5/components/ActivityCollector/utils/dom/findClickableElement.js +4 -3
  20. package/libEs5/components/ActivityCollector/utils/dom/getAbsoluteUrlFromAnchorElement.js +11 -8
  21. package/libEs5/components/ActivityCollector/utils/dom/isButtonSubmitElement.js +3 -2
  22. package/libEs5/components/ActivityCollector/utils/dom/isDownloadLink.js +6 -5
  23. package/libEs5/components/ActivityCollector/utils/dom/isExitLink.js +6 -5
  24. package/libEs5/components/ActivityCollector/utils/dom/isInputSubmitElement.js +4 -3
  25. package/libEs5/components/ActivityCollector/utils/dom/isSupportedAnchorElement.js +3 -2
  26. package/libEs5/components/ActivityCollector/utils/dom/isSupportedTextNode.js +4 -3
  27. package/libEs5/components/ActivityCollector/utils/hasPageName.js +4 -3
  28. package/libEs5/components/ActivityCollector/utils/isDifferentDomains.js +5 -4
  29. package/libEs5/components/ActivityCollector/utils/trimQueryFromUrl.js +5 -4
  30. package/libEs5/components/ActivityCollector/utils/truncateWhiteSpace.js +3 -2
  31. package/libEs5/components/ActivityCollector/utils/urlStartsWithScheme.js +3 -2
  32. package/libEs5/components/Audiences/index.js +13 -12
  33. package/libEs5/components/Audiences/injectProcessDestinations.js +32 -35
  34. package/libEs5/components/Audiences/injectProcessResponse.js +19 -16
  35. package/libEs5/components/Context/createComponent.js +10 -13
  36. package/libEs5/components/Context/implementationDetails.js +5 -4
  37. package/libEs5/components/Context/index.js +24 -28
  38. package/libEs5/components/Context/injectDevice.js +23 -15
  39. package/libEs5/components/Context/injectEnvironment.js +17 -12
  40. package/libEs5/components/Context/injectHighEntropyUserAgentHints.js +12 -21
  41. package/libEs5/components/Context/injectPlaceContext.js +8 -7
  42. package/libEs5/components/Context/injectTimestamp.js +6 -5
  43. package/libEs5/components/Context/injectWeb.js +6 -5
  44. package/libEs5/components/DataCollector/index.js +37 -38
  45. package/libEs5/components/DataCollector/validateApplyResponse.js +6 -4
  46. package/libEs5/components/DataCollector/validateUserEventOptions.js +6 -4
  47. package/libEs5/components/DecisioningEngine/consequenceAdapters/inAppMessageConsequenceAdapter.js +11 -8
  48. package/libEs5/components/DecisioningEngine/consequenceAdapters/schemaTypeConsequenceAdapter.js +10 -7
  49. package/libEs5/components/DecisioningEngine/constants.js +3 -3
  50. package/libEs5/components/DecisioningEngine/createApplyResponse.js +15 -15
  51. package/libEs5/components/DecisioningEngine/createConsequenceAdapter.js +17 -13
  52. package/libEs5/components/DecisioningEngine/createContextProvider.js +48 -44
  53. package/libEs5/components/DecisioningEngine/createDecisionHistory.js +7 -5
  54. package/libEs5/components/DecisioningEngine/createDecisionProvider.js +16 -21
  55. package/libEs5/components/DecisioningEngine/createEvaluableRulesetPayload.js +39 -37
  56. package/libEs5/components/DecisioningEngine/createEvaluateRulesetsCommand.js +21 -19
  57. package/libEs5/components/DecisioningEngine/createEventRegistry.js +63 -67
  58. package/libEs5/components/DecisioningEngine/createOnResponseHandler.js +23 -22
  59. package/libEs5/components/DecisioningEngine/createSubscribeRulesetItems.js +100 -55
  60. package/libEs5/components/DecisioningEngine/index.js +83 -54
  61. package/libEs5/components/DecisioningEngine/utils.js +43 -38
  62. package/libEs5/components/EventMerge/createComponent.js +5 -3
  63. package/libEs5/components/EventMerge/createEventMergeId.js +3 -2
  64. package/libEs5/components/EventMerge/index.js +1 -1
  65. package/libEs5/components/Identity/addEcidQueryToPayload.js +3 -2
  66. package/libEs5/components/Identity/addEcidToPayload.js +3 -2
  67. package/libEs5/components/Identity/appendIdentityToUrl/injectAppendIdentityToUrl.js +13 -23
  68. package/libEs5/components/Identity/configValidators.js +1 -1
  69. package/libEs5/components/Identity/constants/authState.js +3 -3
  70. package/libEs5/components/Identity/createComponent.js +39 -33
  71. package/libEs5/components/Identity/createLegacyIdentity.js +29 -29
  72. package/libEs5/components/Identity/getEcidFromResponse.js +5 -7
  73. package/libEs5/components/Identity/getIdentity/createGetIdentity.js +17 -15
  74. package/libEs5/components/Identity/getIdentity/createIdentityRequest.js +10 -8
  75. package/libEs5/components/Identity/getIdentity/createIdentityRequestPayload.js +5 -4
  76. package/libEs5/components/Identity/index.js +61 -62
  77. package/libEs5/components/Identity/injectAddLegacyEcidToPayload.js +8 -6
  78. package/libEs5/components/Identity/injectAddQueryStringIdentityToPayload.js +46 -52
  79. package/libEs5/components/Identity/injectAwaitIdentityCookie.js +14 -11
  80. package/libEs5/components/Identity/injectEnsureSingleIdentity.js +25 -24
  81. package/libEs5/components/Identity/injectHandleResponseForIdSyncs.js +6 -4
  82. package/libEs5/components/Identity/injectProcessIdSyncs.js +20 -22
  83. package/libEs5/components/Identity/injectSetDomainForInitialIdentityPayload.js +7 -5
  84. package/libEs5/components/Identity/visitorService/awaitVisitorOptIn.js +8 -6
  85. package/libEs5/components/Identity/visitorService/getVisitor.js +4 -3
  86. package/libEs5/components/Identity/visitorService/injectGetEcidFromVisitor.js +15 -13
  87. package/libEs5/components/LegacyMediaAnalytics/constants/constants.js +9 -9
  88. package/libEs5/components/LegacyMediaAnalytics/constants/mediaKeysToXdmConverter.js +2 -2
  89. package/libEs5/components/LegacyMediaAnalytics/createGetInstance.js +61 -63
  90. package/libEs5/components/LegacyMediaAnalytics/createLegacyMediaComponent.js +38 -37
  91. package/libEs5/components/LegacyMediaAnalytics/createMediaHelper.js +54 -52
  92. package/libEs5/components/LegacyMediaAnalytics/index.js +32 -33
  93. package/libEs5/components/LibraryInfo/index.js +23 -30
  94. package/libEs5/components/MachineLearning/index.js +1 -1
  95. package/libEs5/components/MachineLearning/processResponse.js +5 -3
  96. package/libEs5/components/Personalization/constants/loggerMessage.js +2 -2
  97. package/libEs5/components/Personalization/constants/scopeType.js +3 -3
  98. package/libEs5/components/Personalization/constants/surface.js +4 -4
  99. package/libEs5/components/Personalization/createActionsProvider.js +37 -32
  100. package/libEs5/components/Personalization/createApplyPropositions.js +71 -81
  101. package/libEs5/components/Personalization/createClickStorage.js +30 -32
  102. package/libEs5/components/Personalization/createComponent.js +65 -74
  103. package/libEs5/components/Personalization/createFetchDataHandler.js +49 -52
  104. package/libEs5/components/Personalization/createGetPageLocation.js +6 -6
  105. package/libEs5/components/Personalization/createHandleConsentFlicker.js +15 -14
  106. package/libEs5/components/Personalization/createInteractionStorage.js +25 -39
  107. package/libEs5/components/Personalization/createNotificationHandler.js +9 -10
  108. package/libEs5/components/Personalization/createOnClickHandler.js +29 -25
  109. package/libEs5/components/Personalization/createOnDecisionHandler.js +23 -21
  110. package/libEs5/components/Personalization/createPersonalizationDetails.js +39 -45
  111. package/libEs5/components/Personalization/createPreprocessors.js +7 -7
  112. package/libEs5/components/Personalization/createSetTargetMigration.js +6 -4
  113. package/libEs5/components/Personalization/createViewCacheManager.js +29 -32
  114. package/libEs5/components/Personalization/createViewChangeHandler.js +25 -20
  115. package/libEs5/components/Personalization/dom-actions/action.js +24 -25
  116. package/libEs5/components/Personalization/dom-actions/addNonceToInlineStyleElements.js +12 -13
  117. package/libEs5/components/Personalization/dom-actions/appendHtml.js +8 -7
  118. package/libEs5/components/Personalization/dom-actions/clicks/collectClicks.js +28 -33
  119. package/libEs5/components/Personalization/dom-actions/clicks/collectInteractions.js +37 -40
  120. package/libEs5/components/Personalization/dom-actions/collectInteractions.js +3 -2
  121. package/libEs5/components/Personalization/dom-actions/createPreprocess.js +10 -11
  122. package/libEs5/components/Personalization/dom-actions/createRedirect.js +11 -13
  123. package/libEs5/components/Personalization/dom-actions/dom/createFragment.js +3 -2
  124. package/libEs5/components/Personalization/dom-actions/dom/getAttribute.js +3 -2
  125. package/libEs5/components/Personalization/dom-actions/dom/getChildNodes.js +6 -3
  126. package/libEs5/components/Personalization/dom-actions/dom/getChildren.js +6 -3
  127. package/libEs5/components/Personalization/dom-actions/dom/getElementById.js +3 -3
  128. package/libEs5/components/Personalization/dom-actions/dom/getFirstChild.js +3 -2
  129. package/libEs5/components/Personalization/dom-actions/dom/getNextSibling.js +3 -2
  130. package/libEs5/components/Personalization/dom-actions/dom/getNonce.js +7 -6
  131. package/libEs5/components/Personalization/dom-actions/dom/getParent.js +3 -2
  132. package/libEs5/components/Personalization/dom-actions/dom/helperForEq.js +7 -7
  133. package/libEs5/components/Personalization/dom-actions/dom/index.js +14 -14
  134. package/libEs5/components/Personalization/dom-actions/dom/insertAfter.js +4 -3
  135. package/libEs5/components/Personalization/dom-actions/dom/insertBefore.js +4 -3
  136. package/libEs5/components/Personalization/dom-actions/dom/isDomElement.js +2 -3
  137. package/libEs5/components/Personalization/dom-actions/dom/matchesSelectorWithEq.js +6 -5
  138. package/libEs5/components/Personalization/dom-actions/dom/removeAttribute.js +3 -2
  139. package/libEs5/components/Personalization/dom-actions/dom/selectNodesWithEq.js +39 -38
  140. package/libEs5/components/Personalization/dom-actions/dom/setAttribute.js +3 -2
  141. package/libEs5/components/Personalization/dom-actions/dom/setStyle.js +4 -3
  142. package/libEs5/components/Personalization/dom-actions/images.js +10 -9
  143. package/libEs5/components/Personalization/dom-actions/index.js +1 -1
  144. package/libEs5/components/Personalization/dom-actions/initDomActionsModules.js +40 -25
  145. package/libEs5/components/Personalization/dom-actions/insertHtmlAfter.js +9 -8
  146. package/libEs5/components/Personalization/dom-actions/insertHtmlBefore.js +8 -7
  147. package/libEs5/components/Personalization/dom-actions/prependHtml.js +13 -10
  148. package/libEs5/components/Personalization/dom-actions/rearrangeChildren.js +9 -7
  149. package/libEs5/components/Personalization/dom-actions/remapCustomCodeOffers.js +14 -9
  150. package/libEs5/components/Personalization/dom-actions/remapHeadOffers.js +16 -14
  151. package/libEs5/components/Personalization/dom-actions/replaceHtml.js +4 -3
  152. package/libEs5/components/Personalization/dom-actions/scripts.js +58 -38
  153. package/libEs5/components/Personalization/dom-actions/setAttributes.js +4 -3
  154. package/libEs5/components/Personalization/dom-actions/setHtml.js +5 -4
  155. package/libEs5/components/Personalization/dom-actions/setStyles.js +8 -8
  156. package/libEs5/components/Personalization/dom-actions/setText.js +3 -2
  157. package/libEs5/components/Personalization/dom-actions/swapImage.js +3 -2
  158. package/libEs5/components/Personalization/flicker/index.js +34 -31
  159. package/libEs5/components/Personalization/handlers/createDecorateProposition.js +16 -13
  160. package/libEs5/components/Personalization/handlers/createProcessDomAction.js +45 -50
  161. package/libEs5/components/Personalization/handlers/createProcessHtmlContent.js +30 -29
  162. package/libEs5/components/Personalization/handlers/createProcessInAppMessage.js +35 -31
  163. package/libEs5/components/Personalization/handlers/createProcessPropositions.js +91 -107
  164. package/libEs5/components/Personalization/handlers/createProcessRedirect.js +30 -29
  165. package/libEs5/components/Personalization/handlers/injectCreateProposition.js +59 -64
  166. package/libEs5/components/Personalization/handlers/processDefaultContent.js +3 -2
  167. package/libEs5/components/Personalization/in-app-message-actions/actions/displayIframeContent.js +140 -121
  168. package/libEs5/components/Personalization/in-app-message-actions/initInAppMessageActionsModules.js +4 -5
  169. package/libEs5/components/Personalization/in-app-message-actions/utils.js +23 -19
  170. package/libEs5/components/Personalization/index.js +112 -99
  171. package/libEs5/components/Personalization/utils/addRenderAttemptedToDecisions.js +10 -10
  172. package/libEs5/components/Personalization/utils/createAsyncArray.js +10 -9
  173. package/libEs5/components/Personalization/utils/isAuthoringModeEnabled.js +3 -3
  174. package/libEs5/components/Personalization/utils/metaUtils.js +14 -19
  175. package/libEs5/components/Personalization/utils/surfaceUtils.js +27 -46
  176. package/libEs5/components/Personalization/validateApplyPropositionsOptions.js +8 -6
  177. package/libEs5/components/Privacy/computeConsentHash.js +9 -9
  178. package/libEs5/components/Privacy/createComponent.js +32 -32
  179. package/libEs5/components/Privacy/createConsentHashStore.js +27 -24
  180. package/libEs5/components/Privacy/createConsentRequest.js +10 -8
  181. package/libEs5/components/Privacy/createConsentRequestPayload.js +9 -8
  182. package/libEs5/components/Privacy/createStoredConsent.js +11 -9
  183. package/libEs5/components/Privacy/index.js +26 -23
  184. package/libEs5/components/Privacy/injectSendSetConsentRequest.js +30 -29
  185. package/libEs5/components/Privacy/parseConsentCookie.js +6 -14
  186. package/libEs5/components/StreamingMedia/createMediaEventManager.js +59 -45
  187. package/libEs5/components/StreamingMedia/createMediaRequest.js +8 -6
  188. package/libEs5/components/StreamingMedia/createMediaResponseHandler.js +22 -17
  189. package/libEs5/components/StreamingMedia/createMediaSessionCacheManager.js +22 -18
  190. package/libEs5/components/StreamingMedia/createStreamingMediaComponent.js +30 -29
  191. package/libEs5/components/StreamingMedia/createTrackMediaEvent.js +41 -36
  192. package/libEs5/components/StreamingMedia/createTrackMediaSession.js +25 -22
  193. package/libEs5/components/StreamingMedia/index.js +33 -34
  194. package/libEs5/components/StreamingMedia/validateMediaEventOptions.js +9 -12
  195. package/libEs5/components/StreamingMedia/validateMediaSessionOptions.js +6 -4
  196. package/libEs5/constants/browser.js +7 -7
  197. package/libEs5/constants/consentPurpose.js +1 -1
  198. package/libEs5/constants/consentStatus.js +3 -3
  199. package/libEs5/constants/contentType.js +2 -2
  200. package/libEs5/constants/cookieNameKey.js +3 -3
  201. package/libEs5/constants/coreCommands.js +2 -2
  202. package/libEs5/constants/decisionProvider.js +4 -3
  203. package/libEs5/constants/domain.js +2 -2
  204. package/libEs5/constants/elementAttribute.js +1 -1
  205. package/libEs5/constants/eventType.js +5 -5
  206. package/libEs5/constants/handle.js +1 -1
  207. package/libEs5/constants/httpHeaderNames.js +2 -2
  208. package/libEs5/constants/httpStatusCode.js +5 -5
  209. package/libEs5/constants/identityMapAuthenticatedState.js +3 -3
  210. package/libEs5/constants/legacyCookies.js +3 -3
  211. package/libEs5/constants/libraryVersion.js +1 -1
  212. package/libEs5/constants/propositionEventType.js +18 -12
  213. package/libEs5/constants/propositionInteractionType.js +4 -4
  214. package/libEs5/constants/schema.js +11 -11
  215. package/libEs5/constants/sessionDataKeys.js +1 -1
  216. package/libEs5/constants/tagName.js +7 -7
  217. package/libEs5/core/buildAndValidateConfig.js +55 -69
  218. package/libEs5/core/componentCreators.js +70 -41
  219. package/libEs5/core/config/createConfig.js +4 -3
  220. package/libEs5/core/config/createCoreConfigs.js +11 -12
  221. package/libEs5/core/consent/createConsent.js +16 -14
  222. package/libEs5/core/consent/createConsentStateMachine.js +27 -35
  223. package/libEs5/core/createComponentRegistry.js +28 -27
  224. package/libEs5/core/createCookieTransfer.js +18 -18
  225. package/libEs5/core/createEvent.js +39 -44
  226. package/libEs5/core/createEventManager.js +64 -69
  227. package/libEs5/core/createInstanceFunction.js +4 -11
  228. package/libEs5/core/createLifecycle.js +14 -19
  229. package/libEs5/core/createLogController.js +30 -29
  230. package/libEs5/core/createLogger.js +28 -27
  231. package/libEs5/core/edgeNetwork/handleRequestFailure.js +6 -5
  232. package/libEs5/core/edgeNetwork/injectApplyResponse.js +29 -32
  233. package/libEs5/core/edgeNetwork/injectExtractEdgeInfo.js +19 -25
  234. package/libEs5/core/edgeNetwork/injectGetLocationHint.js +11 -11
  235. package/libEs5/core/edgeNetwork/injectProcessWarningsAndErrors.js +20 -16
  236. package/libEs5/core/edgeNetwork/injectSendEdgeNetworkRequest.js +42 -38
  237. package/libEs5/core/edgeNetwork/mergeLifecycleResponses.js +8 -12
  238. package/libEs5/core/index.js +137 -133
  239. package/libEs5/core/initializeComponents.js +17 -15
  240. package/libEs5/core/injectCreateResponse.js +47 -53
  241. package/libEs5/core/injectExecuteCommand.js +39 -40
  242. package/libEs5/core/injectHandleError.js +19 -19
  243. package/libEs5/core/injectShouldTransferCookie.js +12 -12
  244. package/libEs5/core/network/getRequestRetryDelay.js +20 -18
  245. package/libEs5/core/network/injectSendNetworkRequest.js +46 -49
  246. package/libEs5/core/network/isRequestRetryable.js +9 -8
  247. package/libEs5/core/network/requestMethods/injectSendBeaconRequest.js +10 -8
  248. package/libEs5/core/network/requestMethods/injectSendFetchRequest.js +18 -19
  249. package/libEs5/core/requiredComponentCreators.js +23 -0
  250. package/libEs5/core/validateCommandOptions.js +14 -11
  251. package/libEs5/index.js +43 -22
  252. package/libEs5/standalone.js +6 -1
  253. package/libEs5/utils/areThirdPartyCookiesSupportedByDefault.js +3 -5
  254. package/libEs5/utils/assignConcatArrayValues.js +9 -18
  255. package/libEs5/utils/clone.js +2 -3
  256. package/libEs5/utils/cookieJar.js +4 -4
  257. package/libEs5/utils/crc32.js +8 -8
  258. package/libEs5/utils/createCallbackAggregator.js +7 -11
  259. package/libEs5/utils/createCollect.js +52 -0
  260. package/libEs5/utils/createLoggingCookieJar.js +14 -16
  261. package/libEs5/utils/createMerger.js +9 -10
  262. package/libEs5/utils/createSubscription.js +48 -48
  263. package/libEs5/utils/createTaskQueue.js +8 -7
  264. package/libEs5/utils/deduplicateArray.js +7 -11
  265. package/libEs5/utils/deepAssign.js +7 -11
  266. package/libEs5/utils/defer.js +5 -4
  267. package/libEs5/utils/dom/appendNode.js +3 -2
  268. package/libEs5/utils/dom/awaitSelector.js +36 -34
  269. package/libEs5/utils/dom/createNode.js +10 -15
  270. package/libEs5/utils/dom/index.js +8 -8
  271. package/libEs5/utils/dom/isShadowSelector.js +2 -3
  272. package/libEs5/utils/dom/matchesSelector.js +3 -2
  273. package/libEs5/utils/dom/querySelectorAll.js +5 -13
  274. package/libEs5/utils/dom/removeNode.js +4 -3
  275. package/libEs5/utils/dom/selectNodes.js +3 -3
  276. package/libEs5/utils/dom/selectNodesWithShadow.js +14 -23
  277. package/libEs5/utils/event.js +49 -0
  278. package/libEs5/utils/filterObject.js +14 -12
  279. package/libEs5/utils/fireImage.js +10 -9
  280. package/libEs5/utils/flattenArray.js +4 -11
  281. package/libEs5/utils/flattenObject.js +8 -18
  282. package/libEs5/utils/getApexDomain.js +7 -6
  283. package/libEs5/utils/getBrowser.js +45 -12
  284. package/libEs5/utils/getLastArrayItems.js +2 -3
  285. package/libEs5/utils/getNamespacedCookieName.js +2 -3
  286. package/libEs5/utils/groupBy.js +6 -5
  287. package/libEs5/utils/index.js +50 -113
  288. package/libEs5/utils/injectDoesIdentityCookieExist.js +7 -7
  289. package/libEs5/utils/injectFireReferrerHideableImage.js +28 -34
  290. package/libEs5/utils/injectStorage.js +13 -15
  291. package/libEs5/utils/intersection.js +2 -6
  292. package/libEs5/utils/isBlankString.js +2 -3
  293. package/libEs5/utils/isBoolean.js +2 -3
  294. package/libEs5/utils/isEmptyObject.js +2 -3
  295. package/libEs5/utils/isFunction.js +2 -3
  296. package/libEs5/utils/isInteger.js +4 -3
  297. package/libEs5/utils/isNamespacedCookieName.js +2 -3
  298. package/libEs5/utils/isNil.js +2 -3
  299. package/libEs5/utils/isNonEmptyArray.js +2 -3
  300. package/libEs5/utils/isNonEmptyString.js +2 -3
  301. package/libEs5/utils/isNumber.js +2 -4
  302. package/libEs5/utils/isObject.js +3 -4
  303. package/libEs5/utils/isString.js +2 -3
  304. package/libEs5/utils/isUnique.js +6 -5
  305. package/libEs5/utils/isValidRegExp.js +3 -2
  306. package/libEs5/utils/memoize.js +7 -6
  307. package/libEs5/utils/noop.js +2 -1
  308. package/libEs5/utils/parseUrl.js +19 -25
  309. package/libEs5/utils/prepareConfigOverridesForEdge.js +6 -5
  310. package/libEs5/utils/request/createAddIdentity.js +4 -3
  311. package/libEs5/utils/request/createDataCollectionRequest.js +15 -11
  312. package/libEs5/utils/request/createDataCollectionRequestPayload.js +9 -10
  313. package/libEs5/utils/request/createGetAssuranceValidationTokenParams.js +17 -15
  314. package/libEs5/utils/request/createHasIdentity.js +4 -5
  315. package/libEs5/utils/request/createRequest.js +26 -23
  316. package/libEs5/utils/request/createRequestParams.js +13 -13
  317. package/libEs5/utils/request/createRequestPayload.js +13 -12
  318. package/libEs5/utils/request/index.js +8 -8
  319. package/libEs5/utils/sanitizeOrgIdForCookieName.js +2 -3
  320. package/libEs5/utils/stackError.js +8 -6
  321. package/libEs5/utils/stringToBoolean.js +3 -2
  322. package/libEs5/utils/toArray.js +3 -2
  323. package/libEs5/utils/toError.js +3 -2
  324. package/libEs5/utils/toISOStringLocal.js +29 -14
  325. package/libEs5/utils/toInteger.js +5 -5
  326. package/libEs5/utils/updateErrorMessage.js +6 -4
  327. package/libEs5/utils/validation/booleanValidator.js +3 -2
  328. package/libEs5/utils/validation/callbackValidator.js +3 -2
  329. package/libEs5/utils/validation/createAnyOfValidator.js +14 -17
  330. package/libEs5/utils/validation/createArrayOfValidator.js +16 -18
  331. package/libEs5/utils/validation/createDefaultValidator.js +7 -8
  332. package/libEs5/utils/validation/createDeprecatedValidator.js +12 -14
  333. package/libEs5/utils/validation/createLiteralValidator.js +5 -6
  334. package/libEs5/utils/validation/createMapOfValuesValidator.js +20 -22
  335. package/libEs5/utils/validation/createMaximumValidator.js +5 -6
  336. package/libEs5/utils/validation/createMinimumValidator.js +5 -6
  337. package/libEs5/utils/validation/createNoUnknownFieldsValidator.js +13 -14
  338. package/libEs5/utils/validation/createNonEmptyValidator.js +9 -10
  339. package/libEs5/utils/validation/createObjectOfValidator.js +27 -29
  340. package/libEs5/utils/validation/createRenamedValidator.js +24 -27
  341. package/libEs5/utils/validation/createUniqueItemsValidator.js +4 -3
  342. package/libEs5/utils/validation/createUniqueValidator.js +5 -4
  343. package/libEs5/utils/validation/domainValidator.js +4 -3
  344. package/libEs5/utils/validation/index.js +66 -72
  345. package/libEs5/utils/validation/integerValidator.js +3 -2
  346. package/libEs5/utils/validation/matchesRegexpValidator.js +5 -6
  347. package/libEs5/utils/validation/numberValidator.js +3 -2
  348. package/libEs5/utils/validation/regexpValidator.js +3 -2
  349. package/libEs5/utils/validation/requiredValidator.js +3 -2
  350. package/libEs5/utils/validation/stringValidator.js +3 -2
  351. package/libEs5/utils/validation/utils.js +29 -35
  352. package/libEs6/components/ActivityCollector/index.js +18 -8
  353. package/libEs6/components/Context/createComponent.js +1 -3
  354. package/libEs6/components/DecisioningEngine/createApplyResponse.js +1 -1
  355. package/libEs6/components/DecisioningEngine/createSubscribeRulesetItems.js +78 -28
  356. package/libEs6/components/DecisioningEngine/index.js +22 -2
  357. package/libEs6/components/DecisioningEngine/utils.js +2 -9
  358. package/libEs6/components/Identity/createComponent.js +4 -2
  359. package/libEs6/components/Identity/getEcidFromResponse.js +1 -3
  360. package/libEs6/components/LegacyMediaAnalytics/createGetInstance.js +2 -2
  361. package/libEs6/components/LibraryInfo/index.js +4 -5
  362. package/libEs6/components/Personalization/createActionsProvider.js +4 -2
  363. package/libEs6/components/Personalization/createComponent.js +2 -2
  364. package/libEs6/components/Personalization/createPersonalizationDetails.js +6 -6
  365. package/libEs6/components/Personalization/createViewCacheManager.js +5 -2
  366. package/libEs6/components/Personalization/dom-actions/createPreprocess.js +5 -2
  367. package/libEs6/components/Personalization/dom-actions/dom/selectNodesWithEq.js +1 -3
  368. package/libEs6/components/Personalization/dom-actions/remapCustomCodeOffers.js +6 -4
  369. package/libEs6/components/Personalization/dom-actions/remapHeadOffers.js +3 -2
  370. package/libEs6/components/Personalization/dom-actions/scripts.js +18 -2
  371. package/libEs6/components/Personalization/handlers/createDecorateProposition.js +2 -2
  372. package/libEs6/components/Personalization/in-app-message-actions/actions/displayIframeContent.js +8 -5
  373. package/libEs6/components/Personalization/in-app-message-actions/utils.js +2 -2
  374. package/libEs6/components/Personalization/index.js +2 -2
  375. package/libEs6/components/Personalization/utils/addRenderAttemptedToDecisions.js +4 -4
  376. package/libEs6/components/Personalization/utils/surfaceUtils.js +3 -3
  377. package/libEs6/constants/decisionProvider.js +1 -0
  378. package/libEs6/constants/libraryVersion.js +1 -1
  379. package/libEs6/constants/schema.js +1 -1
  380. package/libEs6/core/buildAndValidateConfig.js +8 -5
  381. package/libEs6/core/componentCreators.js +14 -43
  382. package/libEs6/core/config/createConfig.js +3 -2
  383. package/libEs6/core/createCookieTransfer.js +1 -3
  384. package/libEs6/core/createInstanceFunction.js +1 -9
  385. package/libEs6/core/createLogger.js +4 -2
  386. package/libEs6/core/edgeNetwork/injectExtractEdgeInfo.js +1 -7
  387. package/libEs6/core/index.js +11 -10
  388. package/libEs6/core/injectCreateResponse.js +1 -3
  389. package/libEs6/core/network/isRequestRetryable.js +1 -2
  390. package/libEs6/core/network/requestMethods/injectSendFetchRequest.js +1 -2
  391. package/libEs6/{utils/assignIf.js → core/requiredComponentCreators.js} +4 -8
  392. package/libEs6/index.js +26 -6
  393. package/libEs6/standalone.js +7 -1
  394. package/libEs6/utils/areThirdPartyCookiesSupportedByDefault.js +1 -2
  395. package/libEs6/utils/assignConcatArrayValues.js +1 -2
  396. package/libEs6/utils/cookieJar.js +4 -4
  397. package/libEs6/{components/Personalization → utils}/createCollect.js +3 -3
  398. package/libEs6/utils/createSubscription.js +20 -3
  399. package/libEs6/utils/dom/querySelectorAll.js +1 -10
  400. package/libEs6/utils/dom/selectNodesWithShadow.js +2 -12
  401. package/libEs6/{components/Personalization → utils}/event.js +1 -1
  402. package/libEs6/utils/index.js +1 -10
  403. package/libEs6/utils/injectStorage.js +1 -2
  404. package/libEs6/utils/intersection.js +1 -4
  405. package/libEs6/utils/isNumber.js +1 -2
  406. package/libEs6/utils/toISOStringLocal.js +14 -1
  407. package/libEs6/utils/toInteger.js +1 -2
  408. package/libEs6/utils/validation/createAnyOfValidator.js +1 -2
  409. package/libEs6/utils/validation/utils.js +3 -6
  410. package/package.json +35 -37
  411. package/rollup.config.js +115 -7
  412. package/scripts/alloyBuilder.js +89 -55
  413. package/scripts/helpers/entryPointGeneratorBabelPlugin.js +39 -0
  414. package/libEs5/components/Personalization/createCollect.js +0 -53
  415. package/libEs5/components/Personalization/event.js +0 -49
  416. package/libEs5/core/network/requestMethods/injectSendXhrRequest.js +0 -50
  417. package/libEs5/utils/assign.js +0 -16
  418. package/libEs5/utils/assignIf.js +0 -21
  419. package/libEs5/utils/endsWith.js +0 -23
  420. package/libEs5/utils/find.js +0 -30
  421. package/libEs5/utils/flatMap.js +0 -17
  422. package/libEs5/utils/includes.js +0 -23
  423. package/libEs5/utils/padStart.js +0 -27
  424. package/libEs5/utils/startsWith.js +0 -23
  425. package/libEs5/utils/values.js +0 -25
  426. package/libEs6/core/network/requestMethods/injectSendXhrRequest.js +0 -49
  427. package/libEs6/utils/assign.js +0 -14
  428. package/libEs6/utils/endsWith.js +0 -19
  429. package/libEs6/utils/find.js +0 -28
  430. package/libEs6/utils/flatMap.js +0 -14
  431. package/libEs6/utils/includes.js +0 -21
  432. package/libEs6/utils/padStart.js +0 -25
  433. package/libEs6/utils/startsWith.js +0 -19
  434. package/libEs6/utils/values.js +0 -21
  435. package/scripts/helpers/alloyComponents.js +0 -63
  436. package/scripts/helpers/conditionalBuildBabelPlugin.js +0 -57
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
 
3
3
  exports.reverseNullSafeChainJoinErrors = exports.nullSafeChain = exports.chain = exports.assertValid = void 0;
4
- var _assign = require("../assign.js");
5
4
  /*
6
5
  Copyright 2023 Adobe. All rights reserved.
7
6
  This file is licensed to you under the Apache License, Version 2.0 (the "License");
@@ -14,18 +13,14 @@ OF ANY KIND, either express or implied. See the License for the specific languag
14
13
  governing permissions and limitations under the License.
15
14
  */
16
15
 
17
- // This is used to add methods onto a function.
18
-
19
16
  /**
20
17
  * Wraps a validator returning the value if it is null or undefined, otherwise
21
18
  * it will call the original validator and return the result.
22
19
  *
23
20
  * @param {function} validator - the validator to call if the value is not null
24
21
  */
25
- var skipIfNull = function skipIfNull(validator) {
26
- return function skipIfNullValidator(value, path) {
27
- return value == null ? value : validator.call(this, value, path);
28
- };
22
+ const skipIfNull = validator => function skipIfNullValidator(value, path) {
23
+ return value == null ? value : validator.call(this, value, path);
29
24
  };
30
25
 
31
26
  /**
@@ -37,10 +32,8 @@ var skipIfNull = function skipIfNull(validator) {
37
32
  * @param {function} secondValidator - validator to call second
38
33
  * @returns {function} - a new validator that calls the first and second validators
39
34
  */
40
- var callSequentially = function callSequentially(firstValidator, secondValidator) {
41
- return function callSequentiallyValidator(value, path) {
42
- return secondValidator.call(this, firstValidator.call(this, value, path), path);
43
- };
35
+ const callSequentially = (firstValidator, secondValidator) => function callSequentiallyValidator(value, path) {
36
+ return secondValidator.call(this, firstValidator.call(this, value, path), path);
44
37
  };
45
38
 
46
39
  /**
@@ -51,23 +44,20 @@ var callSequentially = function callSequentially(firstValidator, secondValidator
51
44
  * @param {function} secondValidator
52
45
  * @returns {function}
53
46
  */
54
- var callSequentiallyJoinErrors = function callSequentiallyJoinErrors(firstValidator, secondValidator) {
55
- return function callSequentiallyJoinErrorsValidator(value, path) {
56
- var _this = this;
57
- var errors = [];
58
- var newValue = [firstValidator, secondValidator].reduce(function (memo, validator) {
59
- try {
60
- return validator.call(_this, memo, path);
61
- } catch (e) {
62
- errors.push(e);
63
- return memo;
64
- }
65
- }, value);
66
- if (errors.length) {
67
- throw new Error(errors.join("\n"));
47
+ const callSequentiallyJoinErrors = (firstValidator, secondValidator) => function callSequentiallyJoinErrorsValidator(value, path) {
48
+ const errors = [];
49
+ const newValue = [firstValidator, secondValidator].reduce((memo, validator) => {
50
+ try {
51
+ return validator.call(this, memo, path);
52
+ } catch (e) {
53
+ errors.push(e);
54
+ return memo;
68
55
  }
69
- return newValue;
70
- };
56
+ }, value);
57
+ if (errors.length) {
58
+ throw new Error(errors.join("\n"));
59
+ }
60
+ return newValue;
71
61
  };
72
62
 
73
63
  /**
@@ -82,8 +72,8 @@ var callSequentiallyJoinErrors = function callSequentiallyJoinErrors(firstValida
82
72
  * validator.
83
73
  * @returns {function}
84
74
  */
85
- var chain = exports.chain = function chain(baseValidator, newValidator, additionalMethods) {
86
- return (0, _assign.default)(callSequentially(baseValidator, newValidator), baseValidator, additionalMethods);
75
+ const chain = (baseValidator, newValidator, additionalMethods) => {
76
+ return Object.assign(callSequentially(baseValidator, newValidator), baseValidator, additionalMethods);
87
77
  };
88
78
 
89
79
  /**
@@ -101,8 +91,9 @@ var chain = exports.chain = function chain(baseValidator, newValidator, addition
101
91
  * validator.
102
92
  * @returns {function}
103
93
  */
104
- var nullSafeChain = exports.nullSafeChain = function nullSafeChain(baseValidator, newValidator, additionalMethods) {
105
- return (0, _assign.default)(callSequentially(baseValidator, skipIfNull(newValidator)), baseValidator, additionalMethods);
94
+ exports.chain = chain;
95
+ const nullSafeChain = (baseValidator, newValidator, additionalMethods) => {
96
+ return Object.assign(callSequentially(baseValidator, skipIfNull(newValidator)), baseValidator, additionalMethods);
106
97
  };
107
98
 
108
99
  /**
@@ -116,8 +107,9 @@ var nullSafeChain = exports.nullSafeChain = function nullSafeChain(baseValidator
116
107
  * validator.
117
108
  * @returns {function}
118
109
  */
119
- var reverseNullSafeChainJoinErrors = exports.reverseNullSafeChainJoinErrors = function reverseNullSafeChainJoinErrors(baseValidator, newValidator, additionalMethods) {
120
- return (0, _assign.default)(callSequentiallyJoinErrors(skipIfNull(newValidator), baseValidator), baseValidator, additionalMethods);
110
+ exports.nullSafeChain = nullSafeChain;
111
+ const reverseNullSafeChainJoinErrors = (baseValidator, newValidator, additionalMethods) => {
112
+ return Object.assign(callSequentiallyJoinErrors(skipIfNull(newValidator), baseValidator), baseValidator, additionalMethods);
121
113
  };
122
114
 
123
115
  /**
@@ -130,8 +122,10 @@ var reverseNullSafeChainJoinErrors = exports.reverseNullSafeChainJoinErrors = fu
130
122
  * @throws {Error} - Throws an error if the value is not valid.
131
123
  * @returns {void}
132
124
  */
133
- var assertValid = exports.assertValid = function assertValid(isValid, value, path, message) {
125
+ exports.reverseNullSafeChainJoinErrors = reverseNullSafeChainJoinErrors;
126
+ const assertValid = (isValid, value, path, message) => {
134
127
  if (!isValid) {
135
128
  throw new Error("'" + path + "': Expected " + message + ", but got " + JSON.stringify(value) + ".");
136
129
  }
137
- };
130
+ };
131
+ exports.assertValid = assertValid;
@@ -34,6 +34,18 @@ const getClickedElementProperties = createGetClickedElementProperties({
34
34
  determineLinkType
35
35
  });
36
36
  let clickActivityStorage;
37
+ const initClickActivityStorage = config => {
38
+ if (!clickActivityStorage) {
39
+ const createNamespacedStorage = injectStorage(window);
40
+ const nameSpacedStorage = createNamespacedStorage(config.orgId || "");
41
+ // Use transient in-memory if sessionStorage is disabled
42
+ const transientStorage = createTransientStorage();
43
+ const storage = config.clickCollection.sessionStorageEnabled ? nameSpacedStorage.session : transientStorage;
44
+ clickActivityStorage = createClickActivityStorage({
45
+ storage
46
+ });
47
+ }
48
+ };
37
49
  const createActivityCollector = ({
38
50
  config,
39
51
  eventManager,
@@ -41,14 +53,9 @@ const createActivityCollector = ({
41
53
  logger
42
54
  }) => {
43
55
  const clickCollection = config.clickCollection;
44
- const createNamespacedStorage = injectStorage(window);
45
- const nameSpacedStorage = createNamespacedStorage(config.orgId || "");
46
- // Use transient in-memory if sessionStorage is disabled
47
- const transientStorage = createTransientStorage();
48
- const storage = clickCollection.sessionStorageEnabled ? nameSpacedStorage.session : transientStorage;
49
- clickActivityStorage = createClickActivityStorage({
50
- storage
51
- });
56
+ if (!clickActivityStorage) {
57
+ initClickActivityStorage(config);
58
+ }
52
59
  const injectClickedElementProperties = createInjectClickedElementProperties({
53
60
  config,
54
61
  logger,
@@ -102,6 +109,9 @@ createActivityCollector.buildOnInstanceConfiguredExtraParams = ({
102
109
  config,
103
110
  logger
104
111
  }) => {
112
+ if (!clickActivityStorage) {
113
+ initClickActivityStorage(config);
114
+ }
105
115
  return {
106
116
  getLinkDetails: targetElement => {
107
117
  return getClickedElementProperties({
@@ -9,11 +9,9 @@ the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTA
9
9
  OF ANY KIND, either express or implied. See the License for the specific language
10
10
  governing permissions and limitations under the License.
11
11
  */
12
-
13
- import { flatMap } from "../../utils/index.js";
14
12
  export default ((config, logger, optionalContexts, requiredContexts) => {
15
13
  const configuredContexts = config.context;
16
- const contexts = flatMap(configuredContexts, (context, i) => {
14
+ const contexts = configuredContexts.flatMap((context, i) => {
17
15
  if (optionalContexts[context]) {
18
16
  return [optionalContexts[context]];
19
17
  }
@@ -16,7 +16,7 @@ export default (lifecycle => {
16
16
  event,
17
17
  personalization
18
18
  }) => {
19
- if (propositions.length > 0 && lifecycle) {
19
+ if (lifecycle) {
20
20
  lifecycle.onDecision({
21
21
  renderDecisions,
22
22
  propositions,
@@ -11,7 +11,7 @@ governing permissions and limitations under the License.
11
11
  */
12
12
  import { arrayOf, callback as callbackType, objectOf, string } from "../../utils/validation/index.js";
13
13
  import createSubscription from "../../utils/createSubscription.js";
14
- import { includes } from "../../utils/index.js";
14
+ import { getEventType, PropositionEventType } from "../../constants/propositionEventType.js";
15
15
  const validateOptions = ({
16
16
  options
17
17
  }) => {
@@ -22,40 +22,86 @@ const validateOptions = ({
22
22
  }).noUnknownFields();
23
23
  return validator(options);
24
24
  };
25
- const emissionPreprocessor = (params, propositions) => {
25
+ const getAnalyticsDetail = proposition => {
26
26
  const {
27
- surfacesFilter,
28
- schemasFilter
29
- } = params;
30
- const result = {
31
- propositions: propositions.filter(payload => surfacesFilter ? includes(surfacesFilter, payload.scope) : true).map(payload => {
32
- const {
33
- items = []
34
- } = payload;
35
- return {
36
- ...payload,
37
- items: items.filter(item => schemasFilter ? includes(schemasFilter, item.schema) : true)
38
- };
39
- }).filter(payload => payload.items.length > 0)
27
+ id,
28
+ scope,
29
+ scopeDetails
30
+ } = proposition;
31
+ return {
32
+ id,
33
+ scope,
34
+ scopeDetails
40
35
  };
41
- return [result];
42
- };
43
- const emissionCondition = (params, result) => {
44
- return result.propositions.length > 0;
45
36
  };
46
- export default (() => {
47
- const subscription = createSubscription();
48
- subscription.setEmissionPreprocessor(emissionPreprocessor);
49
- subscription.setEmissionCondition(emissionCondition);
37
+ export default (({
38
+ collect
39
+ }) => {
40
+ let emitPropositions = () => undefined;
41
+ const collectedEventsThisSession = new Set();
42
+ const shouldAlwaysCollect = propositionEventType => [PropositionEventType.INTERACT, PropositionEventType.DISMISS].includes(propositionEventType);
43
+ const shouldCollect = (propositionEventType, analyticsMetaId, collectedEventsThisRequest) => {
44
+ const eventId = [propositionEventType, analyticsMetaId].join("-");
45
+ const result = !collectedEventsThisRequest.has(eventId) && (shouldAlwaysCollect(propositionEventType) || !collectedEventsThisSession.has(eventId));
46
+ collectedEventsThisRequest.add(eventId);
47
+ collectedEventsThisSession.add(eventId);
48
+ return result;
49
+ };
50
+ const collectEvent = (propositionEventType, propositions = []) => {
51
+ if (!(propositions instanceof Array)) {
52
+ return Promise.resolve();
53
+ }
54
+ if (!Object.values(PropositionEventType).includes(propositionEventType)) {
55
+ return Promise.resolve();
56
+ }
57
+ const decisionsMeta = [];
58
+ const collectedEventsThisRequest = new Set();
59
+ propositions.forEach(proposition => {
60
+ const analyticsMeta = getAnalyticsDetail(proposition);
61
+ if (!shouldCollect(propositionEventType, analyticsMeta.id, collectedEventsThisRequest)) {
62
+ return;
63
+ }
64
+ decisionsMeta.push(analyticsMeta);
65
+ });
66
+ return decisionsMeta.length > 0 ? collect({
67
+ decisionsMeta,
68
+ eventType: getEventType(propositionEventType),
69
+ documentMayUnload: true
70
+ }) : Promise.resolve();
71
+ };
72
+ const subscriptions = createSubscription();
73
+ const emissionPreprocessor = (params, propositions) => {
74
+ const {
75
+ surfacesFilter,
76
+ schemasFilter
77
+ } = params;
78
+ const result = {
79
+ propositions: propositions.filter(payload => surfacesFilter ? surfacesFilter.includes(payload.scope) : true).map(payload => {
80
+ const {
81
+ items = []
82
+ } = payload;
83
+ return {
84
+ ...payload,
85
+ items: items.filter(item => schemasFilter ? schemasFilter.includes(item.schema) : true)
86
+ };
87
+ }).filter(payload => payload.items.length > 0)
88
+ };
89
+ return [result, collectEvent];
90
+ };
91
+ subscriptions.setEmissionPreprocessor(emissionPreprocessor);
50
92
  const run = ({
51
93
  surfaces,
52
94
  schemas,
53
95
  callback
54
96
  }) => {
55
- const unsubscribe = subscription.add(callback, {
97
+ const {
98
+ id,
99
+ unsubscribe
100
+ } = subscriptions.add(callback, {
56
101
  surfacesFilter: surfaces instanceof Array ? surfaces : undefined,
57
102
  schemasFilter: schemas instanceof Array ? schemas : undefined
58
103
  });
104
+ emitPropositions(id);
59
105
  return Promise.resolve({
60
106
  unsubscribe
61
107
  });
@@ -64,10 +110,14 @@ export default (() => {
64
110
  options
65
111
  });
66
112
  const refresh = propositions => {
67
- if (!subscription.hasSubscriptions()) {
68
- return;
69
- }
70
- subscription.emit(propositions);
113
+ emitPropositions = subscriptionId => {
114
+ if (subscriptionId) {
115
+ subscriptions.emitOne(subscriptionId, propositions);
116
+ return;
117
+ }
118
+ subscriptions.emit(propositions);
119
+ };
120
+ emitPropositions();
71
121
  };
72
122
  return {
73
123
  refresh,
@@ -20,8 +20,11 @@ import { CONTEXT_KEY, CONTEXT_EVENT_SOURCE, CONTEXT_EVENT_TYPE } from "./constan
20
20
  import createEvaluateRulesetsCommand from "./createEvaluateRulesetsCommand.js";
21
21
  import { clearLocalStorage, createInMemoryStorage } from "./utils.js";
22
22
  import { objectOf, boolean } from "../../utils/validation/index.js";
23
+ import createCollect from "../../utils/createCollect.js";
24
+ import { mergeDecisionsMeta } from "../../utils/event.js";
23
25
  const createDecisioningEngine = ({
24
26
  config,
27
+ eventManager,
25
28
  createNamespacedStorage,
26
29
  consent
27
30
  }) => {
@@ -29,6 +32,10 @@ const createDecisioningEngine = ({
29
32
  orgId,
30
33
  personalizationStorageEnabled
31
34
  } = config;
35
+ const collect = createCollect({
36
+ eventManager,
37
+ mergeDecisionsMeta
38
+ });
32
39
  const storage = createNamespacedStorage(`${sanitizeOrgIdForCookieName(orgId)}.decisioning.`);
33
40
  if (!personalizationStorageEnabled) {
34
41
  clearLocalStorage(storage.persistent);
@@ -47,7 +54,9 @@ const createDecisioningEngine = ({
47
54
  contextProvider,
48
55
  decisionProvider
49
56
  });
50
- const subscribeRulesetItems = createSubscribeRulesetItems();
57
+ const subscribeRulesetItems = createSubscribeRulesetItems({
58
+ collect
59
+ });
51
60
  let applyResponse;
52
61
  return {
53
62
  lifecycle: {
@@ -89,7 +98,18 @@ const createDecisioningEngine = ({
89
98
  ...decisionContext
90
99
  })
91
100
  }));
92
- eventRegistry.addExperienceEdgeEvent(event);
101
+ },
102
+ onBeforeRequest({
103
+ request
104
+ }) {
105
+ const payload = request.getPayload().toJSON();
106
+ const {
107
+ events = []
108
+ } = payload;
109
+ if (events.length === 0) {
110
+ return;
111
+ }
112
+ events.forEach(event => eventRegistry.addExperienceEdgeEvent(event));
93
113
  }
94
114
  },
95
115
  commands: {
@@ -59,18 +59,11 @@ export const createInMemoryStorage = () => {
59
59
  export const clearLocalStorage = storage => {
60
60
  storage.clear();
61
61
  };
62
- export const hasExperienceData = xdm => {
62
+ export const hasExperienceData = (xdm = {}) => {
63
63
  const {
64
- eventType = "",
65
64
  _experience
66
65
  } = xdm;
67
- if (!eventType || eventType === "") {
68
- return false;
69
- }
70
- if (!_experience || typeof _experience !== "object") {
71
- return false;
72
- }
73
- return true;
66
+ return !(!_experience || typeof _experience !== "object");
74
67
  };
75
68
  export const getDecisionProvider = proposition => {
76
69
  const {
@@ -9,7 +9,6 @@ the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTA
9
9
  OF ANY KIND, either express or implied. See the License for the specific language
10
10
  governing permissions and limitations under the License.
11
11
  */
12
- import { assign } from "../../utils/index.js";
13
12
  import getIdentityOptionsValidator from "./getIdentity/getIdentityOptionsValidator.js";
14
13
  import appendIdentityToUrlOptionsValidator from "./appendIdentityToUrl/appendIdentityToUrlOptionsValidator.js";
15
14
  export default (({
@@ -57,7 +56,10 @@ export default (({
57
56
  }
58
57
  // For sendBeacon requests, getEdge() will return {}, so we are using assign here
59
58
  // so that sendBeacon requests don't override the edge info from before.
60
- edge = assign(edge, response.getEdge());
59
+ edge = {
60
+ ...edge,
61
+ ...response.getEdge()
62
+ };
61
63
  return handleResponseForIdSyncs(response);
62
64
  }
63
65
  },
@@ -9,11 +9,9 @@ the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTA
9
9
  OF ANY KIND, either express or implied. See the License for the specific language
10
10
  governing permissions and limitations under the License.
11
11
  */
12
-
13
- import { find } from "../../utils/index.js";
14
12
  import ecidNamespace from "../../constants/ecidNamespace.js";
15
13
  export default (response => {
16
14
  const identityResultPayloads = response.getPayloadsByType("identity:result");
17
- const ecidPayload = find(identityResultPayloads, payload => payload.namespace && payload.namespace.code === ecidNamespace);
15
+ const ecidPayload = identityResultPayloads.find(payload => payload.namespace && payload.namespace.code === ecidNamespace);
18
16
  return ecidPayload ? ecidPayload.id : undefined;
19
17
  });
@@ -10,7 +10,7 @@ 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
  import { EVENT, MEDIA_EVENTS_INTERNAL } from "./constants/constants.js";
13
- import { includes, isEmptyObject, isNil, isNonEmptyArray, isNumber } from "../../utils/index.js";
13
+ import { isEmptyObject, isNil, isNonEmptyArray, isNumber } from "../../utils/index.js";
14
14
  import { adsToXdmKeys, mediaToXdmKeys } from "./constants/mediaKeysToXdmConverter.js";
15
15
  export default (({
16
16
  logger,
@@ -198,7 +198,7 @@ export default (({
198
198
  logger.warn("The Media Session was completed.");
199
199
  return {};
200
200
  }
201
- if (!includes(Object.values(EVENT), eventType)) {
201
+ if (!Object.values(EVENT).includes(eventType)) {
202
202
  logger.warn("Invalid event type");
203
203
  return {};
204
204
  }
@@ -39,16 +39,15 @@ const createLibraryInfo = ({
39
39
  config,
40
40
  componentRegistry
41
41
  }) => {
42
- const libraryInfo = prepareLibraryInfo({
43
- config,
44
- componentRegistry
45
- });
46
42
  return {
47
43
  commands: {
48
44
  getLibraryInfo: {
49
45
  run: () => {
50
46
  return {
51
- libraryInfo
47
+ libraryInfo: prepareLibraryInfo({
48
+ config,
49
+ componentRegistry
50
+ })
52
51
  };
53
52
  }
54
53
  }
@@ -10,7 +10,6 @@ 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
  import createPreprocessors from "./createPreprocessors.js";
13
- import { assign } from "../../utils/index.js";
14
13
  export default (({
15
14
  modules,
16
15
  preprocessors = createPreprocessors(),
@@ -47,7 +46,10 @@ export default (({
47
46
  if (!schema || !(preprocessorsList instanceof Array) || preprocessorsList.length === 0) {
48
47
  return action;
49
48
  }
50
- return preprocessorsList.reduce((processed, fn) => assign(processed, fn(processed)), action);
49
+ return preprocessorsList.reduce((processed, fn) => ({
50
+ ...processed,
51
+ ...fn(processed)
52
+ }), action);
51
53
  };
52
54
  const executeAction = action => {
53
55
  const processedAction = applyPreprocessors(action);
@@ -10,7 +10,7 @@ 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 { noop, flatMap, isNonEmptyArray } from "../../utils/index.js";
13
+ import { noop, isNonEmptyArray } from "../../utils/index.js";
14
14
  import createPersonalizationDetails from "./createPersonalizationDetails.js";
15
15
  import { AUTHORING_ENABLED } from "./constants/loggerMessage.js";
16
16
  import { PropositionEventType } from "../../constants/propositionEventType.js";
@@ -104,7 +104,7 @@ export default (({
104
104
  return Promise.all(decisionsMetaPromises).then(decisionsMetas => {
105
105
  // We only want to call mergeDecisionsMeta once, but we can get the propositions
106
106
  // from two places: the pending display notifications and the view change handler.
107
- const decisionsMeta = flatMap(decisionsMetas, dms => dms);
107
+ const decisionsMeta = decisionsMetas.flatMap(dms => dms);
108
108
  if (isNonEmptyArray(decisionsMeta)) {
109
109
  mergeDecisionsMeta(event, decisionsMeta, [PropositionEventType.DISPLAY]);
110
110
  }
@@ -10,18 +10,18 @@ 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 { includes, isNonEmptyString, isNonEmptyArray } from "../../utils/index.js";
13
+ import { isNonEmptyString, isNonEmptyArray } from "../../utils/index.js";
14
14
  import { buildPageSurface, normalizeSurfaces } from "./utils/surfaceUtils.js";
15
15
  import PAGE_WIDE_SCOPE from "../../constants/pageWideScope.js";
16
- import { DEFAULT_CONTENT_ITEM, DOM_ACTION, HTML_CONTENT_ITEM, MESSAGE_IN_APP, JSON_CONTENT_ITEM, REDIRECT_ITEM, RULESET_ITEM, MESSAGE_FEED_ITEM } from "../../constants/schema.js";
16
+ import { DEFAULT_CONTENT_ITEM, DOM_ACTION, HTML_CONTENT_ITEM, MESSAGE_IN_APP, JSON_CONTENT_ITEM, REDIRECT_ITEM, RULESET_ITEM, MESSAGE_CONTENT_CARD } from "../../constants/schema.js";
17
17
  const addPageWideScope = scopes => {
18
- if (!includes(scopes, PAGE_WIDE_SCOPE)) {
18
+ if (!scopes.includes(PAGE_WIDE_SCOPE)) {
19
19
  scopes.push(PAGE_WIDE_SCOPE);
20
20
  }
21
21
  };
22
22
  const addPageSurface = (surfaces, getPageLocation) => {
23
23
  const pageSurface = buildPageSurface(getPageLocation);
24
- if (!includes(surfaces, pageSurface)) {
24
+ if (!surfaces.includes(pageSurface)) {
25
25
  surfaces.push(pageSurface);
26
26
  }
27
27
  };
@@ -68,8 +68,8 @@ export default (({
68
68
  addPageWideScope(scopes);
69
69
  addPageSurface(eventSurfaces, getPageLocation);
70
70
  }
71
- const schemas = [DEFAULT_CONTENT_ITEM, HTML_CONTENT_ITEM, JSON_CONTENT_ITEM, REDIRECT_ITEM, RULESET_ITEM, MESSAGE_IN_APP, MESSAGE_FEED_ITEM];
72
- if (includes(scopes, PAGE_WIDE_SCOPE)) {
71
+ const schemas = [DEFAULT_CONTENT_ITEM, HTML_CONTENT_ITEM, JSON_CONTENT_ITEM, REDIRECT_ITEM, RULESET_ITEM, MESSAGE_IN_APP, MESSAGE_CONTENT_CARD];
72
+ if (scopes.includes(PAGE_WIDE_SCOPE)) {
73
73
  schemas.push(DOM_ACTION);
74
74
  }
75
75
  return {
@@ -10,7 +10,7 @@ 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 { assign, groupBy } from "../../utils/index.js";
13
+ import { groupBy } from "../../utils/index.js";
14
14
  import defer from "../../utils/defer.js";
15
15
  import { DEFAULT_CONTENT_ITEM } from "../../constants/schema.js";
16
16
  import { VIEW_SCOPE_TYPE } from "./constants/scopeType.js";
@@ -49,7 +49,10 @@ export default (({
49
49
  // propositions the old "cart" view propositions will remain.
50
50
  viewStoragePromise = viewStoragePromise.then(oldViewStorage => {
51
51
  return updateCacheDeferred.promise.then(newViewStorage => {
52
- return assign({}, oldViewStorage, newViewStorage);
52
+ return {
53
+ ...oldViewStorage,
54
+ ...newViewStorage
55
+ };
53
56
  }).catch(() => oldViewStorage);
54
57
  });
55
58
  return {
@@ -9,10 +9,13 @@ the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTA
9
9
  OF ANY KIND, either express or implied. See the License for the specific language
10
10
  governing permissions and limitations under the License.
11
11
  */
12
- import { assign } from "../../../utils/index.js";
12
+
13
13
  export default (preprocessors => action => {
14
14
  if (!action) {
15
15
  return action;
16
16
  }
17
- return preprocessors.reduce((processed, fn) => assign(processed, fn(processed)), action);
17
+ return preprocessors.reduce((processed, fn) => ({
18
+ ...processed,
19
+ ...fn(processed)
20
+ }), action);
18
21
  });
@@ -10,7 +10,6 @@ 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 escape from "css.escape";
14
13
  import { selectNodes } from "../../../../utils/dom/index.js";
15
14
  import { isNotEqSelector, splitWithEq } from "./helperForEq.js";
16
15
 
@@ -19,8 +18,7 @@ const CSS_IDENTIFIER_PATTERN = /(#|\.)(-?\w+)/g;
19
18
  // Here we use CSS.escape() to make sure we get
20
19
  // correct values for ID and CSS class
21
20
  // Please check: https://www.w3.org/TR/css-syntax-3/#escaping
22
- // CSS.escape() polyfill can be found here: https://github.com/mathiasbynens/CSS.escape
23
- const replaceIdentifier = (_, $1, $2) => `${$1}${escape($2)}`;
21
+ const replaceIdentifier = (_, $1, $2) => `${$1}${CSS.escape($2)}`;
24
22
  export const escapeIdentifiersInSelector = selector => {
25
23
  return selector.replace(CSS_IDENTIFIER_PATTERN, replaceIdentifier);
26
24
  };
@@ -14,7 +14,6 @@ governing permissions and limitations under the License.
14
14
  * Preprocess customCode actions before rendering, so that offer selectors are remapped appropriately for
15
15
  * target offers, to align with the way it works in at.js.
16
16
  */
17
- import { assign } from "../../../utils/index.js";
18
17
  import { DOM_ACTION_CUSTOM_CODE } from "./initDomActionsModules.js";
19
18
  const TARGET_BODY_SELECTOR = "BODY > *:eq(0)";
20
19
  export default (action => {
@@ -28,7 +27,10 @@ export default (action => {
28
27
  if (selector !== TARGET_BODY_SELECTOR) {
29
28
  return action;
30
29
  }
31
- return assign({}, action, {
32
- selector: "BODY"
33
- });
30
+ return {
31
+ ...action,
32
+ ...{
33
+ selector: "BODY"
34
+ }
35
+ };
34
36
  });
@@ -19,7 +19,6 @@ governing permissions and limitations under the License.
19
19
  import { selectNodes } from "../../../utils/dom/index.js";
20
20
  import { is } from "./scripts.js";
21
21
  import { createFragment, selectNodesWithEq } from "./dom/index.js";
22
- import { assign } from "../../../utils/index.js";
23
22
  import isBlankString from "../../../utils/isBlankString.js";
24
23
  import { HEAD } from "../../../constants/tagName.js";
25
24
  import { DOM_ACTION_APPEND_HTML } from "./initDomActionsModules.js";
@@ -30,7 +29,9 @@ const filterHeadContent = content => {
30
29
  return headNodes.map(node => node.outerHTML).join("");
31
30
  };
32
31
  export default (action => {
33
- const result = assign({}, action);
32
+ const result = {
33
+ ...action
34
+ };
34
35
  const {
35
36
  content,
36
37
  selector