@adobe/alloy 2.19.0-beta.0 → 2.19.0-beta.10

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 (561) hide show
  1. package/libEs5/baseCode/index.js +2 -12
  2. package/libEs5/components/ActivityCollector/attachClickActivityCollector.js +9 -12
  3. package/libEs5/components/ActivityCollector/configValidators.js +1 -4
  4. package/libEs5/components/ActivityCollector/createGetLinkDetails.js +7 -17
  5. package/libEs5/components/ActivityCollector/createLinkClick.js +3 -8
  6. package/libEs5/components/ActivityCollector/getLinkName.js +8 -26
  7. package/libEs5/components/ActivityCollector/getLinkRegion.js +2 -16
  8. package/libEs5/components/ActivityCollector/index.js +8 -18
  9. package/libEs5/components/ActivityCollector/utils.js +3 -40
  10. package/libEs5/components/Audiences/index.js +2 -8
  11. package/libEs5/components/Audiences/injectProcessDestinations.js +20 -19
  12. package/libEs5/components/Audiences/injectProcessResponse.js +0 -5
  13. package/libEs5/components/Context/createComponent.js +0 -4
  14. package/libEs5/components/Context/implementationDetails.js +0 -5
  15. package/libEs5/components/Context/index.js +12 -19
  16. package/libEs5/components/Context/injectDevice.js +3 -20
  17. package/libEs5/components/Context/injectEnvironment.js +1 -8
  18. package/libEs5/components/Context/injectHighEntropyUserAgentHints.js +14 -21
  19. package/libEs5/components/Context/injectPlaceContext.js +2 -8
  20. package/libEs5/components/Context/injectTimestamp.js +0 -3
  21. package/libEs5/components/Context/injectWeb.js +0 -3
  22. package/libEs5/components/DataCollector/index.js +24 -45
  23. package/libEs5/components/DataCollector/validateApplyResponse.js +2 -5
  24. package/libEs5/components/DataCollector/validateUserEventOptions.js +6 -9
  25. package/libEs5/components/EventMerge/createComponent.js +0 -2
  26. package/libEs5/components/EventMerge/createEventMergeId.js +0 -3
  27. package/libEs5/components/EventMerge/index.js +1 -4
  28. package/libEs5/components/Identity/addEcidQueryToPayload.js +0 -3
  29. package/libEs5/components/Identity/addEcidToPayload.js +0 -3
  30. package/libEs5/components/Identity/appendIdentityToUrl/appendIdentityToUrlOptionsValidator.js +0 -5
  31. package/libEs5/components/Identity/appendIdentityToUrl/injectAppendIdentityToUrl.js +5 -19
  32. package/libEs5/components/Identity/configValidators.js +1 -2
  33. package/libEs5/components/Identity/constants/authState.js +1 -1
  34. package/libEs5/components/Identity/constants/defaultIdSyncTtlMinutes.js +0 -2
  35. package/libEs5/components/Identity/createComponent.js +16 -22
  36. package/libEs5/components/Identity/createLegacyIdentity.js +5 -19
  37. package/libEs5/components/Identity/getEcidFromResponse.js +0 -4
  38. package/libEs5/components/Identity/getIdentity/createGetIdentity.js +5 -9
  39. package/libEs5/components/Identity/getIdentity/createIdentityRequest.js +1 -4
  40. package/libEs5/components/Identity/getIdentity/createIdentityRequestPayload.js +0 -3
  41. package/libEs5/components/Identity/getIdentity/getIdentityOptionsValidator.js +0 -5
  42. package/libEs5/components/Identity/index.js +8 -29
  43. package/libEs5/components/Identity/injectAddLegacyEcidToPayload.js +1 -5
  44. package/libEs5/components/Identity/injectAddQueryStringIdentityToPayload.js +22 -28
  45. package/libEs5/components/Identity/injectAwaitIdentityCookie.js +7 -8
  46. package/libEs5/components/Identity/injectEnsureSingleIdentity.js +17 -20
  47. package/libEs5/components/Identity/injectHandleResponseForIdSyncs.js +0 -2
  48. package/libEs5/components/Identity/injectProcessIdSyncs.js +2 -7
  49. package/libEs5/components/Identity/injectSetDomainForInitialIdentityPayload.js +1 -4
  50. package/libEs5/components/Identity/visitorService/awaitVisitorOptIn.js +0 -3
  51. package/libEs5/components/Identity/visitorService/getVisitor.js +0 -3
  52. package/libEs5/components/Identity/visitorService/injectGetEcidFromVisitor.js +2 -7
  53. package/libEs5/components/LibraryInfo/index.js +13 -21
  54. package/libEs5/components/MachineLearning/index.js +1 -3
  55. package/libEs5/components/MachineLearning/processResponse.js +0 -2
  56. package/libEs5/components/Personalization/constants/eventType.js +1 -1
  57. package/libEs5/components/Personalization/constants/loggerMessage.js +0 -1
  58. package/libEs5/components/Personalization/constants/propositionEventType.js +1 -1
  59. package/libEs5/components/Personalization/constants/schema.js +1 -1
  60. package/libEs5/components/Personalization/constants/scopeType.js +7 -3
  61. package/libEs5/components/Personalization/constants/surface.js +1 -1
  62. package/libEs5/components/Personalization/createApplyPropositions.js +29 -40
  63. package/libEs5/components/Personalization/createClickStorage.js +22 -23
  64. package/libEs5/components/Personalization/createCollect.js +5 -15
  65. package/libEs5/components/Personalization/createComponent.js +43 -42
  66. package/libEs5/components/Personalization/createFetchDataHandler.js +41 -50
  67. package/libEs5/components/Personalization/createGetPageLocation.js +0 -2
  68. package/libEs5/components/Personalization/createOnClickHandler.js +9 -20
  69. package/libEs5/components/Personalization/createPersonalizationDetails.js +23 -35
  70. package/libEs5/components/Personalization/createSetTargetMigration.js +0 -5
  71. package/libEs5/components/Personalization/createViewCacheManager.js +13 -26
  72. package/libEs5/components/Personalization/createViewChangeHandler.js +3 -15
  73. package/libEs5/components/Personalization/dom-actions/action.js +3 -19
  74. package/libEs5/components/Personalization/dom-actions/addNonceToInlineStyleElements.js +1 -13
  75. package/libEs5/components/Personalization/dom-actions/appendHtml.js +0 -7
  76. package/libEs5/components/Personalization/dom-actions/clicks/collectClicks.js +46 -37
  77. package/libEs5/components/Personalization/dom-actions/createPreprocess.js +0 -4
  78. package/libEs5/components/Personalization/{utils/isPageWideScope.js → dom-actions/createRedirect.js} +10 -9
  79. package/libEs5/components/Personalization/dom-actions/dom/createFragment.js +0 -4
  80. package/libEs5/components/Personalization/dom-actions/dom/getAttribute.js +0 -2
  81. package/libEs5/components/Personalization/dom-actions/dom/getChildNodes.js +0 -5
  82. package/libEs5/components/Personalization/dom-actions/dom/getChildren.js +0 -5
  83. package/libEs5/components/Personalization/dom-actions/dom/getElementById.js +0 -3
  84. package/libEs5/components/Personalization/dom-actions/dom/getFirstChild.js +0 -2
  85. package/libEs5/components/Personalization/dom-actions/dom/getNextSibling.js +0 -2
  86. package/libEs5/components/Personalization/dom-actions/dom/getNonce.js +4 -10
  87. package/libEs5/components/Personalization/dom-actions/dom/getParent.js +0 -2
  88. package/libEs5/components/Personalization/dom-actions/dom/helperForEq.js +1 -6
  89. package/libEs5/components/Personalization/dom-actions/dom/index.js +0 -14
  90. package/libEs5/components/Personalization/dom-actions/dom/insertAfter.js +0 -6
  91. package/libEs5/components/Personalization/dom-actions/dom/insertBefore.js +0 -5
  92. package/libEs5/components/Personalization/dom-actions/dom/matchesSelectorWithEq.js +6 -11
  93. package/libEs5/components/Personalization/dom-actions/dom/removeAttribute.js +0 -2
  94. package/libEs5/components/Personalization/dom-actions/dom/selectNodesWithEq.js +16 -36
  95. package/libEs5/components/Personalization/dom-actions/dom/setAttribute.js +0 -2
  96. package/libEs5/components/Personalization/dom-actions/dom/setStyle.js +0 -4
  97. package/libEs5/components/Personalization/dom-actions/images.js +1 -11
  98. package/libEs5/components/Personalization/dom-actions/index.js +0 -1
  99. package/libEs5/components/Personalization/dom-actions/initDomActionsModules.js +0 -4
  100. package/libEs5/components/Personalization/dom-actions/insertHtmlAfter.js +0 -6
  101. package/libEs5/components/Personalization/dom-actions/insertHtmlBefore.js +0 -6
  102. package/libEs5/components/Personalization/dom-actions/prependHtml.js +4 -12
  103. package/libEs5/components/Personalization/dom-actions/rearrangeChildren.js +1 -6
  104. package/libEs5/components/Personalization/dom-actions/remapCustomCodeOffers.js +2 -8
  105. package/libEs5/components/Personalization/dom-actions/remapHeadOffers.js +2 -16
  106. package/libEs5/components/Personalization/dom-actions/replaceHtml.js +0 -4
  107. package/libEs5/components/Personalization/dom-actions/scripts.js +13 -35
  108. package/libEs5/components/Personalization/dom-actions/setAttributes.js +0 -3
  109. package/libEs5/components/Personalization/dom-actions/setHtml.js +1 -6
  110. package/libEs5/components/Personalization/dom-actions/setStyles.js +12 -8
  111. package/libEs5/components/Personalization/dom-actions/setText.js +0 -2
  112. package/libEs5/components/Personalization/dom-actions/swapImage.js +6 -9
  113. package/libEs5/components/Personalization/event.js +2 -10
  114. package/libEs5/components/Personalization/flicker/index.js +17 -31
  115. package/libEs5/components/Personalization/handlers/createProcessDomAction.js +23 -15
  116. package/libEs5/components/Personalization/handlers/createProcessHtmlContent.js +11 -10
  117. package/libEs5/components/Personalization/handlers/createProcessPropositions.js +8 -53
  118. package/libEs5/components/Personalization/handlers/createProcessRedirect.js +10 -9
  119. package/libEs5/components/Personalization/handlers/injectCreateProposition.js +32 -40
  120. package/libEs5/components/Personalization/handlers/processDefaultContent.js +0 -2
  121. package/libEs5/components/Personalization/index.js +25 -55
  122. package/libEs5/components/Personalization/utils/addRenderAttemptedToDecisions.js +1 -4
  123. package/libEs5/components/Personalization/utils/createAsyncArray.js +0 -3
  124. package/libEs5/components/Personalization/utils/isAuthoringModeEnabled.js +0 -2
  125. package/libEs5/components/Personalization/utils/surfaceUtils.js +1 -27
  126. package/libEs5/components/Personalization/validateApplyPropositionsOptions.js +2 -6
  127. package/libEs5/components/Privacy/computeConsentHash.js +11 -8
  128. package/libEs5/components/Privacy/createComponent.js +24 -26
  129. package/libEs5/components/Privacy/createConsentHashStore.js +14 -15
  130. package/libEs5/components/Privacy/createConsentRequest.js +1 -4
  131. package/libEs5/components/Privacy/createConsentRequestPayload.js +0 -5
  132. package/libEs5/components/Privacy/createStoredConsent.js +2 -6
  133. package/libEs5/components/Privacy/index.js +5 -15
  134. package/libEs5/components/Privacy/injectSendSetConsentRequest.js +7 -12
  135. package/libEs5/components/Privacy/parseConsentCookie.js +3 -13
  136. package/libEs5/components/Privacy/validateSetConsentOptions.js +0 -4
  137. package/libEs5/constants/apiVersion.js +0 -1
  138. package/libEs5/constants/browser.js +1 -1
  139. package/libEs5/constants/consentPurpose.js +1 -1
  140. package/libEs5/constants/consentStatus.js +1 -1
  141. package/libEs5/constants/cookieNameKey.js +1 -1
  142. package/libEs5/constants/cookieNamePrefix.js +0 -1
  143. package/libEs5/constants/coreCommands.js +1 -1
  144. package/libEs5/constants/debugQueryParam.js +0 -1
  145. package/libEs5/constants/domain.js +1 -1
  146. package/libEs5/constants/ecidNamespace.js +0 -1
  147. package/libEs5/constants/edgeBasePath.js +0 -1
  148. package/libEs5/constants/elementAttribute.js +1 -1
  149. package/libEs5/constants/highEntropyUserAgentClientHints.js +0 -1
  150. package/libEs5/constants/httpHeaderNames.js +1 -1
  151. package/libEs5/constants/httpStatusCode.js +1 -1
  152. package/libEs5/constants/identityMapAuthenticatedState.js +0 -1
  153. package/libEs5/constants/legacyCookies.js +1 -1
  154. package/libEs5/constants/libraryName.js +0 -1
  155. package/libEs5/constants/libraryVersion.js +1 -2
  156. package/libEs5/constants/namespace.js +0 -1
  157. package/libEs5/constants/pageWideScope.js +0 -1
  158. package/libEs5/constants/queryStringIdentityParam.js +0 -1
  159. package/libEs5/constants/shadowSeparator.js +0 -1
  160. package/libEs5/constants/tagName.js +1 -1
  161. package/libEs5/core/buildAndValidateConfig.js +21 -32
  162. package/libEs5/core/componentCreators.js +0 -12
  163. package/libEs5/core/config/createConfig.js +1 -3
  164. package/libEs5/core/config/createCoreConfigs.js +0 -7
  165. package/libEs5/core/consent/createConsent.js +1 -11
  166. package/libEs5/core/consent/createConsentStateMachine.js +1 -18
  167. package/libEs5/core/createComponentRegistry.js +4 -14
  168. package/libEs5/core/createCookieTransfer.js +9 -18
  169. package/libEs5/core/createEvent.js +25 -34
  170. package/libEs5/core/createEventManager.js +39 -53
  171. package/libEs5/core/createInstanceFunction.js +0 -2
  172. package/libEs5/core/createLifecycle.js +14 -14
  173. package/libEs5/core/createLogController.js +5 -17
  174. package/libEs5/core/createLogger.js +3 -17
  175. package/libEs5/core/edgeNetwork/handleRequestFailure.js +0 -3
  176. package/libEs5/core/edgeNetwork/injectApplyResponse.js +12 -18
  177. package/libEs5/core/edgeNetwork/injectExtractEdgeInfo.js +4 -8
  178. package/libEs5/core/edgeNetwork/injectGetLocationHint.js +1 -11
  179. package/libEs5/core/edgeNetwork/injectProcessWarningsAndErrors.js +6 -11
  180. package/libEs5/core/edgeNetwork/injectSendEdgeNetworkRequest.js +18 -26
  181. package/libEs5/core/edgeNetwork/mergeLifecycleResponses.js +11 -10
  182. package/libEs5/core/index.js +12 -54
  183. package/libEs5/core/initializeComponents.js +5 -10
  184. package/libEs5/core/injectCreateResponse.js +8 -16
  185. package/libEs5/core/injectExecuteCommand.js +8 -19
  186. package/libEs5/core/injectHandleError.js +4 -8
  187. package/libEs5/core/injectShouldTransferCookie.js +1 -5
  188. package/libEs5/core/network/getRequestRetryDelay.js +10 -17
  189. package/libEs5/core/network/injectSendNetworkRequest.js +20 -22
  190. package/libEs5/core/network/isRequestRetryable.js +5 -7
  191. package/libEs5/core/network/requestMethods/injectSendBeaconRequest.js +5 -8
  192. package/libEs5/core/network/requestMethods/injectSendFetchRequest.js +0 -2
  193. package/libEs5/core/network/requestMethods/injectSendXhrRequest.js +0 -5
  194. package/libEs5/core/validateCommandOptions.js +5 -9
  195. package/libEs5/index.js +7 -15
  196. package/libEs5/utils/areThirdPartyCookiesSupportedByDefault.js +1 -5
  197. package/libEs5/utils/assign.js +0 -2
  198. package/libEs5/utils/assignIf.js +0 -4
  199. package/libEs5/utils/clone.js +0 -3
  200. package/libEs5/utils/cookieJar.js +0 -2
  201. package/libEs5/utils/crc32.js +0 -8
  202. package/libEs5/utils/createCallbackAggregator.js +0 -4
  203. package/libEs5/utils/createLoggingCookieJar.js +1 -6
  204. package/libEs5/utils/createMerger.js +0 -4
  205. package/libEs5/utils/createTaskQueue.js +0 -7
  206. package/libEs5/utils/deduplicateArray.js +0 -5
  207. package/libEs5/utils/deepAssign.js +2 -10
  208. package/libEs5/utils/defer.js +0 -3
  209. package/libEs5/utils/dom/appendNode.js +0 -2
  210. package/libEs5/utils/dom/awaitSelector.js +1 -29
  211. package/libEs5/utils/dom/createNode.js +1 -5
  212. package/libEs5/utils/dom/index.js +0 -8
  213. package/libEs5/utils/dom/isShadowSelector.js +0 -3
  214. package/libEs5/utils/dom/matchesSelector.js +2 -5
  215. package/libEs5/utils/dom/querySelectorAll.js +3 -6
  216. package/libEs5/utils/dom/removeNode.js +0 -4
  217. package/libEs5/utils/dom/selectNodes.js +0 -8
  218. package/libEs5/utils/dom/selectNodesWithShadow.js +6 -20
  219. package/libEs5/utils/endsWith.js +0 -3
  220. package/libEs5/utils/filterObject.js +13 -17
  221. package/libEs5/utils/find.js +0 -5
  222. package/libEs5/utils/fireImage.js +2 -7
  223. package/libEs5/utils/flatMap.js +0 -2
  224. package/libEs5/utils/getApexDomain.js +4 -8
  225. package/libEs5/utils/getBrowser.js +11 -11
  226. package/libEs5/utils/getLastArrayItems.js +0 -3
  227. package/libEs5/utils/getNamespacedCookieName.js +0 -4
  228. package/libEs5/utils/groupBy.js +0 -5
  229. package/libEs5/utils/includes.js +0 -3
  230. package/libEs5/utils/index.js +0 -56
  231. package/libEs5/utils/injectDoesIdentityCookieExist.js +0 -6
  232. package/libEs5/utils/injectFireReferrerHideableImage.js +21 -29
  233. package/libEs5/utils/injectStorage.js +1 -7
  234. package/libEs5/utils/intersection.js +0 -4
  235. package/libEs5/utils/isBlankString.js +0 -4
  236. package/libEs5/utils/isBoolean.js +0 -3
  237. package/libEs5/utils/isEmptyObject.js +0 -4
  238. package/libEs5/utils/isFunction.js +0 -3
  239. package/libEs5/utils/isInteger.js +0 -4
  240. package/libEs5/utils/isNamespacedCookieName.js +0 -5
  241. package/libEs5/utils/isNil.js +0 -3
  242. package/libEs5/utils/isNonEmptyArray.js +0 -3
  243. package/libEs5/utils/isNonEmptyString.js +0 -4
  244. package/libEs5/utils/isNumber.js +0 -3
  245. package/libEs5/utils/isObject.js +11 -5
  246. package/libEs5/utils/isString.js +0 -3
  247. package/libEs5/utils/isUnique.js +0 -7
  248. package/libEs5/utils/isValidRegExp.js +0 -3
  249. package/libEs5/utils/memoize.js +0 -5
  250. package/libEs5/utils/noop.js +0 -3
  251. package/libEs5/utils/padStart.js +0 -6
  252. package/libEs5/utils/prepareConfigOverridesForEdge.js +13 -21
  253. package/libEs5/utils/querystring.js +0 -2
  254. package/libEs5/utils/request/createAddIdentity.js +0 -2
  255. package/libEs5/utils/request/createDataCollectionRequest.js +1 -6
  256. package/libEs5/utils/request/createDataCollectionRequestPayload.js +0 -8
  257. package/libEs5/utils/request/createGetAssuranceValidationTokenParams.js +2 -11
  258. package/libEs5/utils/request/createHasIdentity.js +0 -2
  259. package/libEs5/utils/request/createRequest.js +3 -6
  260. package/libEs5/utils/request/createRequestParams.js +4 -12
  261. package/libEs5/utils/request/createRequestPayload.js +2 -7
  262. package/libEs5/utils/request/index.js +0 -8
  263. package/libEs5/utils/sanitizeOrgIdForCookieName.js +0 -2
  264. package/libEs5/utils/stackError.js +1 -6
  265. package/libEs5/utils/startsWith.js +0 -3
  266. package/libEs5/utils/stringToBoolean.js +0 -3
  267. package/libEs5/utils/toArray.js +0 -4
  268. package/libEs5/utils/toError.js +0 -3
  269. package/libEs5/utils/toISOStringLocal.js +3 -7
  270. package/libEs5/utils/toInteger.js +2 -8
  271. package/libEs5/utils/updateErrorMessage.js +3 -5
  272. package/libEs5/utils/uuid.js +0 -2
  273. package/libEs5/utils/validateConfigOverride.js +0 -3
  274. package/libEs5/utils/validateIdentityMap.js +0 -4
  275. package/libEs5/utils/validation/booleanValidator.js +0 -4
  276. package/libEs5/utils/validation/callbackValidator.js +0 -4
  277. package/libEs5/utils/validation/createAnyOfValidator.js +0 -5
  278. package/libEs5/utils/validation/createArrayOfValidator.js +0 -6
  279. package/libEs5/utils/validation/createDefaultValidator.js +0 -3
  280. package/libEs5/utils/validation/createDeprecatedValidator.js +13 -21
  281. package/libEs5/utils/validation/createLiteralValidator.js +0 -3
  282. package/libEs5/utils/validation/createMapOfValuesValidator.js +0 -9
  283. package/libEs5/utils/validation/createMinimumValidator.js +0 -3
  284. package/libEs5/utils/validation/createNoUnknownFieldsValidator.js +0 -4
  285. package/libEs5/utils/validation/createNonEmptyValidator.js +0 -6
  286. package/libEs5/utils/validation/createObjectOfValidator.js +2 -10
  287. package/libEs5/utils/validation/createUniqueItemsValidator.js +0 -4
  288. package/libEs5/utils/validation/createUniqueValidator.js +0 -3
  289. package/libEs5/utils/validation/domainValidator.js +1 -4
  290. package/libEs5/utils/validation/index.js +76 -59
  291. package/libEs5/utils/validation/integerValidator.js +0 -4
  292. package/libEs5/utils/validation/numberValidator.js +0 -4
  293. package/libEs5/utils/validation/regexpValidator.js +0 -4
  294. package/libEs5/utils/validation/requiredValidator.js +0 -3
  295. package/libEs5/utils/validation/stringValidator.js +0 -4
  296. package/libEs5/utils/validation/utils.js +7 -21
  297. package/libEs5/utils/values.js +0 -3
  298. package/libEs6/baseCode/index.js +3 -8
  299. package/libEs6/components/ActivityCollector/attachClickActivityCollector.js +5 -6
  300. package/libEs6/components/ActivityCollector/configValidators.js +1 -0
  301. package/libEs6/components/ActivityCollector/createGetLinkDetails.js +1 -8
  302. package/libEs6/components/ActivityCollector/createLinkClick.js +0 -3
  303. package/libEs6/components/ActivityCollector/getLinkName.js +8 -23
  304. package/libEs6/components/ActivityCollector/getLinkRegion.js +2 -12
  305. package/libEs6/components/ActivityCollector/index.js +3 -6
  306. package/libEs6/components/ActivityCollector/utils.js +2 -29
  307. package/libEs6/components/Audiences/index.js +1 -2
  308. package/libEs6/components/Audiences/injectProcessDestinations.js +3 -6
  309. package/libEs6/components/Audiences/injectProcessResponse.js +1 -2
  310. package/libEs6/components/Context/createComponent.js +1 -2
  311. package/libEs6/components/Context/index.js +3 -3
  312. package/libEs6/components/Context/injectDevice.js +1 -16
  313. package/libEs6/components/Context/injectEnvironment.js +1 -4
  314. package/libEs6/components/Context/injectHighEntropyUserAgentHints.js +2 -5
  315. package/libEs6/components/Context/injectPlaceContext.js +2 -5
  316. package/libEs6/components/Context/injectTimestamp.js +1 -0
  317. package/libEs6/components/Context/injectWeb.js +1 -0
  318. package/libEs6/components/DataCollector/index.js +8 -25
  319. package/libEs6/components/DataCollector/validateApplyResponse.js +2 -2
  320. package/libEs6/components/DataCollector/validateUserEventOptions.js +7 -5
  321. package/libEs6/components/EventMerge/createComponent.js +1 -0
  322. package/libEs6/components/EventMerge/createEventMergeId.js +1 -0
  323. package/libEs6/components/EventMerge/index.js +1 -2
  324. package/libEs6/components/Identity/addEcidQueryToPayload.js +1 -0
  325. package/libEs6/components/Identity/addEcidToPayload.js +1 -0
  326. package/libEs6/components/Identity/appendIdentityToUrl/appendIdentityToUrlOptionsValidator.js +1 -1
  327. package/libEs6/components/Identity/appendIdentityToUrl/injectAppendIdentityToUrl.js +0 -4
  328. package/libEs6/components/Identity/configValidators.js +1 -0
  329. package/libEs6/components/Identity/constants/authState.js +1 -0
  330. package/libEs6/components/Identity/constants/defaultIdSyncTtlMinutes.js +1 -0
  331. package/libEs6/components/Identity/createComponent.js +5 -7
  332. package/libEs6/components/Identity/createLegacyIdentity.js +0 -10
  333. package/libEs6/components/Identity/getEcidFromResponse.js +1 -0
  334. package/libEs6/components/Identity/getIdentity/createGetIdentity.js +1 -0
  335. package/libEs6/components/Identity/getIdentity/createIdentityRequest.js +1 -3
  336. package/libEs6/components/Identity/getIdentity/createIdentityRequestPayload.js +1 -0
  337. package/libEs6/components/Identity/getIdentity/getIdentityOptionsValidator.js +1 -1
  338. package/libEs6/components/Identity/index.js +1 -2
  339. package/libEs6/components/Identity/injectAddLegacyEcidToPayload.js +1 -1
  340. package/libEs6/components/Identity/injectAddQueryStringIdentityToPayload.js +5 -7
  341. package/libEs6/components/Identity/injectAwaitIdentityCookie.js +6 -3
  342. package/libEs6/components/Identity/injectEnsureSingleIdentity.js +12 -11
  343. package/libEs6/components/Identity/injectHandleResponseForIdSyncs.js +1 -0
  344. package/libEs6/components/Identity/injectProcessIdSyncs.js +0 -4
  345. package/libEs6/components/Identity/injectSetDomainForInitialIdentityPayload.js +1 -0
  346. package/libEs6/components/Identity/visitorService/awaitVisitorOptIn.js +1 -0
  347. package/libEs6/components/Identity/visitorService/getVisitor.js +1 -0
  348. package/libEs6/components/Identity/visitorService/injectGetEcidFromVisitor.js +1 -2
  349. package/libEs6/components/LibraryInfo/index.js +3 -6
  350. package/libEs6/components/MachineLearning/index.js +1 -2
  351. package/libEs6/components/MachineLearning/processResponse.js +1 -0
  352. package/libEs6/components/Personalization/constants/eventType.js +1 -0
  353. package/libEs6/components/Personalization/constants/propositionEventType.js +1 -0
  354. package/libEs6/components/Personalization/constants/schema.js +1 -0
  355. package/libEs6/components/Personalization/constants/scopeType.js +4 -1
  356. package/libEs6/components/Personalization/constants/surface.js +1 -0
  357. package/libEs6/components/Personalization/createApplyPropositions.js +14 -14
  358. package/libEs6/components/Personalization/createClickStorage.js +19 -18
  359. package/libEs6/components/Personalization/createCollect.js +0 -5
  360. package/libEs6/components/Personalization/createComponent.js +23 -20
  361. package/libEs6/components/Personalization/createFetchDataHandler.js +13 -17
  362. package/libEs6/components/Personalization/createGetPageLocation.js +1 -0
  363. package/libEs6/components/Personalization/createOnClickHandler.js +6 -10
  364. package/libEs6/components/Personalization/createPersonalizationDetails.js +7 -28
  365. package/libEs6/components/Personalization/createSetTargetMigration.js +1 -1
  366. package/libEs6/components/Personalization/createViewCacheManager.js +11 -22
  367. package/libEs6/components/Personalization/createViewChangeHandler.js +1 -7
  368. package/libEs6/components/Personalization/dom-actions/action.js +1 -2
  369. package/libEs6/components/Personalization/dom-actions/addNonceToInlineStyleElements.js +1 -8
  370. package/libEs6/components/Personalization/dom-actions/appendHtml.js +1 -0
  371. package/libEs6/components/Personalization/dom-actions/clicks/collectClicks.js +30 -26
  372. package/libEs6/components/Personalization/dom-actions/createPreprocess.js +0 -1
  373. package/libEs6/components/Personalization/{utils/isPageWideScope.js → dom-actions/createRedirect.js} +8 -4
  374. package/libEs6/components/Personalization/dom-actions/dom/createFragment.js +1 -0
  375. package/libEs6/components/Personalization/dom-actions/dom/getAttribute.js +1 -0
  376. package/libEs6/components/Personalization/dom-actions/dom/getChildNodes.js +1 -2
  377. package/libEs6/components/Personalization/dom-actions/dom/getChildren.js +1 -2
  378. package/libEs6/components/Personalization/dom-actions/dom/getFirstChild.js +1 -0
  379. package/libEs6/components/Personalization/dom-actions/dom/getNextSibling.js +1 -0
  380. package/libEs6/components/Personalization/dom-actions/dom/getNonce.js +6 -5
  381. package/libEs6/components/Personalization/dom-actions/dom/getParent.js +1 -0
  382. package/libEs6/components/Personalization/dom-actions/dom/helperForEq.js +1 -0
  383. package/libEs6/components/Personalization/dom-actions/dom/index.js +1 -0
  384. package/libEs6/components/Personalization/dom-actions/dom/insertAfter.js +1 -2
  385. package/libEs6/components/Personalization/dom-actions/dom/insertBefore.js +1 -2
  386. package/libEs6/components/Personalization/dom-actions/dom/matchesSelectorWithEq.js +7 -6
  387. package/libEs6/components/Personalization/dom-actions/dom/removeAttribute.js +1 -0
  388. package/libEs6/components/Personalization/dom-actions/dom/selectNodesWithEq.js +6 -18
  389. package/libEs6/components/Personalization/dom-actions/dom/setAttribute.js +1 -0
  390. package/libEs6/components/Personalization/dom-actions/dom/setStyle.js +1 -2
  391. package/libEs6/components/Personalization/dom-actions/images.js +1 -1
  392. package/libEs6/components/Personalization/dom-actions/index.js +1 -0
  393. package/libEs6/components/Personalization/dom-actions/initDomActionsModules.js +1 -0
  394. package/libEs6/components/Personalization/dom-actions/insertHtmlAfter.js +1 -0
  395. package/libEs6/components/Personalization/dom-actions/insertHtmlBefore.js +1 -0
  396. package/libEs6/components/Personalization/dom-actions/prependHtml.js +5 -5
  397. package/libEs6/components/Personalization/dom-actions/rearrangeChildren.js +1 -2
  398. package/libEs6/components/Personalization/dom-actions/remapCustomCodeOffers.js +0 -3
  399. package/libEs6/components/Personalization/dom-actions/remapHeadOffers.js +1 -7
  400. package/libEs6/components/Personalization/dom-actions/replaceHtml.js +1 -0
  401. package/libEs6/components/Personalization/dom-actions/scripts.js +5 -16
  402. package/libEs6/components/Personalization/dom-actions/setAttributes.js +1 -0
  403. package/libEs6/components/Personalization/dom-actions/setHtml.js +1 -2
  404. package/libEs6/components/Personalization/dom-actions/setStyles.js +1 -0
  405. package/libEs6/components/Personalization/dom-actions/setText.js +1 -0
  406. package/libEs6/components/Personalization/dom-actions/swapImage.js +7 -4
  407. package/libEs6/components/Personalization/event.js +4 -4
  408. package/libEs6/components/Personalization/flicker/index.js +9 -12
  409. package/libEs6/components/Personalization/handlers/createProcessDomAction.js +17 -9
  410. package/libEs6/components/Personalization/handlers/createProcessHtmlContent.js +8 -5
  411. package/libEs6/components/Personalization/handlers/createProcessPropositions.js +3 -30
  412. package/libEs6/components/Personalization/handlers/createProcessRedirect.js +7 -4
  413. package/libEs6/components/Personalization/handlers/injectCreateProposition.js +17 -36
  414. package/libEs6/components/Personalization/index.js +9 -13
  415. package/libEs6/components/Personalization/utils/addRenderAttemptedToDecisions.js +1 -0
  416. package/libEs6/components/Personalization/utils/createAsyncArray.js +0 -2
  417. package/libEs6/components/Personalization/utils/isAuthoringModeEnabled.js +1 -0
  418. package/libEs6/components/Personalization/utils/surfaceUtils.js +1 -20
  419. package/libEs6/components/Personalization/validateApplyPropositionsOptions.js +0 -1
  420. package/libEs6/components/Privacy/computeConsentHash.js +3 -4
  421. package/libEs6/components/Privacy/createComponent.js +5 -10
  422. package/libEs6/components/Privacy/createConsentHashStore.js +0 -10
  423. package/libEs6/components/Privacy/createConsentRequest.js +1 -3
  424. package/libEs6/components/Privacy/createConsentRequestPayload.js +1 -2
  425. package/libEs6/components/Privacy/createStoredConsent.js +1 -2
  426. package/libEs6/components/Privacy/index.js +1 -2
  427. package/libEs6/components/Privacy/injectSendSetConsentRequest.js +3 -3
  428. package/libEs6/constants/browser.js +1 -0
  429. package/libEs6/constants/consentPurpose.js +1 -0
  430. package/libEs6/constants/consentStatus.js +1 -0
  431. package/libEs6/constants/cookieNameKey.js +1 -0
  432. package/libEs6/constants/cookieNamePrefix.js +1 -0
  433. package/libEs6/constants/coreCommands.js +1 -0
  434. package/libEs6/constants/debugQueryParam.js +1 -0
  435. package/libEs6/constants/domain.js +1 -0
  436. package/libEs6/constants/ecidNamespace.js +1 -0
  437. package/libEs6/constants/elementAttribute.js +1 -0
  438. package/libEs6/constants/highEntropyUserAgentClientHints.js +1 -0
  439. package/libEs6/constants/httpHeaderNames.js +1 -0
  440. package/libEs6/constants/httpStatusCode.js +1 -0
  441. package/libEs6/constants/legacyCookies.js +1 -0
  442. package/libEs6/constants/libraryName.js +1 -0
  443. package/libEs6/constants/libraryVersion.js +3 -1
  444. package/libEs6/constants/namespace.js +1 -0
  445. package/libEs6/constants/pageWideScope.js +1 -0
  446. package/libEs6/constants/queryStringIdentityParam.js +1 -0
  447. package/libEs6/constants/shadowSeparator.js +1 -0
  448. package/libEs6/constants/tagName.js +1 -0
  449. package/libEs6/core/buildAndValidateConfig.js +4 -10
  450. package/libEs6/core/componentCreators.js +3 -3
  451. package/libEs6/core/config/createConfig.js +1 -2
  452. package/libEs6/core/config/createCoreConfigs.js +1 -0
  453. package/libEs6/core/consent/createConsent.js +1 -9
  454. package/libEs6/core/consent/createConsentStateMachine.js +1 -20
  455. package/libEs6/core/createComponentRegistry.js +3 -15
  456. package/libEs6/core/createCookieTransfer.js +6 -12
  457. package/libEs6/core/createEvent.js +15 -37
  458. package/libEs6/core/createEventManager.js +14 -27
  459. package/libEs6/core/createInstanceFunction.js +1 -0
  460. package/libEs6/core/createLifecycle.js +14 -10
  461. package/libEs6/core/createLogController.js +1 -7
  462. package/libEs6/core/createLogger.js +1 -17
  463. package/libEs6/core/edgeNetwork/handleRequestFailure.js +0 -1
  464. package/libEs6/core/edgeNetwork/injectApplyResponse.js +2 -3
  465. package/libEs6/core/edgeNetwork/injectExtractEdgeInfo.js +5 -6
  466. package/libEs6/core/edgeNetwork/injectGetLocationHint.js +1 -5
  467. package/libEs6/core/edgeNetwork/injectProcessWarningsAndErrors.js +1 -2
  468. package/libEs6/core/edgeNetwork/injectSendEdgeNetworkRequest.js +5 -5
  469. package/libEs6/core/index.js +4 -10
  470. package/libEs6/core/initializeComponents.js +3 -4
  471. package/libEs6/core/injectCreateResponse.js +3 -7
  472. package/libEs6/core/injectExecuteCommand.js +5 -11
  473. package/libEs6/core/injectHandleError.js +4 -3
  474. package/libEs6/core/injectShouldTransferCookie.js +1 -0
  475. package/libEs6/core/network/getRequestRetryDelay.js +11 -13
  476. package/libEs6/core/network/injectSendNetworkRequest.js +3 -7
  477. package/libEs6/core/network/isRequestRetryable.js +4 -2
  478. package/libEs6/core/network/requestMethods/injectSendBeaconRequest.js +4 -6
  479. package/libEs6/core/network/requestMethods/injectSendFetchRequest.js +1 -2
  480. package/libEs6/core/network/requestMethods/injectSendXhrRequest.js +1 -5
  481. package/libEs6/core/validateCommandOptions.js +1 -2
  482. package/libEs6/index.js +5 -3
  483. package/libEs6/utils/areThirdPartyCookiesSupportedByDefault.js +4 -2
  484. package/libEs6/utils/assign.js +1 -0
  485. package/libEs6/utils/assignIf.js +1 -1
  486. package/libEs6/utils/cookieJar.js +1 -0
  487. package/libEs6/utils/crc32.js +0 -7
  488. package/libEs6/utils/createCallbackAggregator.js +0 -2
  489. package/libEs6/utils/createLoggingCookieJar.js +3 -3
  490. package/libEs6/utils/createMerger.js +2 -1
  491. package/libEs6/utils/createTaskQueue.js +0 -4
  492. package/libEs6/utils/deduplicateArray.js +0 -3
  493. package/libEs6/utils/deepAssign.js +2 -5
  494. package/libEs6/utils/dom/appendNode.js +1 -0
  495. package/libEs6/utils/dom/awaitSelector.js +1 -14
  496. package/libEs6/utils/dom/createNode.js +1 -2
  497. package/libEs6/utils/dom/index.js +1 -0
  498. package/libEs6/utils/dom/isShadowSelector.js +1 -0
  499. package/libEs6/utils/dom/matchesSelector.js +2 -2
  500. package/libEs6/utils/dom/querySelectorAll.js +3 -2
  501. package/libEs6/utils/dom/removeNode.js +1 -2
  502. package/libEs6/utils/dom/selectNodes.js +2 -2
  503. package/libEs6/utils/dom/selectNodesWithShadow.js +6 -16
  504. package/libEs6/utils/filterObject.js +8 -12
  505. package/libEs6/utils/find.js +0 -2
  506. package/libEs6/utils/fireImage.js +2 -1
  507. package/libEs6/utils/getApexDomain.js +4 -4
  508. package/libEs6/utils/getBrowser.js +1 -7
  509. package/libEs6/utils/getNamespacedCookieName.js +1 -0
  510. package/libEs6/utils/groupBy.js +0 -2
  511. package/libEs6/utils/index.js +1 -0
  512. package/libEs6/utils/injectDoesIdentityCookieExist.js +1 -1
  513. package/libEs6/utils/injectFireReferrerHideableImage.js +1 -4
  514. package/libEs6/utils/injectStorage.js +1 -5
  515. package/libEs6/utils/intersection.js +2 -1
  516. package/libEs6/utils/isBlankString.js +2 -1
  517. package/libEs6/utils/isEmptyObject.js +2 -1
  518. package/libEs6/utils/isInteger.js +2 -1
  519. package/libEs6/utils/isNamespacedCookieName.js +2 -1
  520. package/libEs6/utils/isNonEmptyString.js +2 -1
  521. package/libEs6/utils/isObject.js +2 -1
  522. package/libEs6/utils/isUnique.js +0 -5
  523. package/libEs6/utils/memoize.js +0 -2
  524. package/libEs6/utils/padStart.js +1 -4
  525. package/libEs6/utils/prepareConfigOverridesForEdge.js +5 -12
  526. package/libEs6/utils/querystring.js +1 -0
  527. package/libEs6/utils/request/createDataCollectionRequest.js +1 -3
  528. package/libEs6/utils/request/createDataCollectionRequestPayload.js +0 -3
  529. package/libEs6/utils/request/createGetAssuranceValidationTokenParams.js +1 -6
  530. package/libEs6/utils/request/createHasIdentity.js +1 -0
  531. package/libEs6/utils/request/createRequest.js +3 -9
  532. package/libEs6/utils/request/createRequestParams.js +0 -3
  533. package/libEs6/utils/request/createRequestPayload.js +4 -4
  534. package/libEs6/utils/request/index.js +1 -0
  535. package/libEs6/utils/sanitizeOrgIdForCookieName.js +1 -0
  536. package/libEs6/utils/stackError.js +2 -1
  537. package/libEs6/utils/toArray.js +1 -2
  538. package/libEs6/utils/toISOStringLocal.js +4 -3
  539. package/libEs6/utils/toInteger.js +4 -4
  540. package/libEs6/utils/updateErrorMessage.js +3 -1
  541. package/libEs6/utils/uuid.js +1 -0
  542. package/libEs6/utils/validateConfigOverride.js +1 -0
  543. package/libEs6/utils/validateIdentityMap.js +1 -0
  544. package/libEs6/utils/validation/booleanValidator.js +1 -0
  545. package/libEs6/utils/validation/createArrayOfValidator.js +0 -2
  546. package/libEs6/utils/validation/createDefaultValidator.js +1 -1
  547. package/libEs6/utils/validation/createDeprecatedValidator.js +0 -4
  548. package/libEs6/utils/validation/createMapOfValuesValidator.js +1 -4
  549. package/libEs6/utils/validation/createNoUnknownFieldsValidator.js +1 -2
  550. package/libEs6/utils/validation/createNonEmptyValidator.js +1 -1
  551. package/libEs6/utils/validation/createObjectOfValidator.js +3 -5
  552. package/libEs6/utils/validation/createUniqueValidator.js +1 -0
  553. package/libEs6/utils/validation/index.js +14 -32
  554. package/libEs6/utils/validation/integerValidator.js +1 -0
  555. package/libEs6/utils/validation/numberValidator.js +1 -0
  556. package/libEs6/utils/validation/regexpValidator.js +1 -0
  557. package/libEs6/utils/validation/requiredValidator.js +1 -1
  558. package/libEs6/utils/validation/utils.js +8 -12
  559. package/package.json +3 -3
  560. package/libEs5/components/Personalization/createPendingNotificationsHandler.js +0 -29
  561. package/libEs6/components/Personalization/createPendingNotificationsHandler.js +0 -22
@@ -9,6 +9,7 @@ the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTA
9
9
  OF ANY KIND, either express or implied. See the License for the specific language
10
10
  governing permissions and limitations under the License.
11
11
  */
12
+
12
13
  export default (({
13
14
  doesIdentityCookieExist,
14
15
  orgId
@@ -29,13 +30,15 @@ export default (({
29
30
  } else {
30
31
  // This logic assumes that the code setting the cookie is working as expected and that
31
32
  // the cookie was missing from the response.
32
- const noIdentityCookieError = new Error(`An identity was not set properly. Please verify that the org ID ${orgId} configured in Alloy matches the org ID specified in the edge configuration.`); // Rejecting the promise will reject commands that were queued
33
+ const noIdentityCookieError = new Error(`An identity was not set properly. Please verify that the org ID ${orgId} configured in Alloy matches the org ID specified in the edge configuration.`);
34
+
35
+ // Rejecting the promise will reject commands that were queued
33
36
  // by the Identity component while waiting on the response to
34
37
  // the initial request.
38
+ reject(noIdentityCookieError);
35
39
 
36
- reject(noIdentityCookieError); // Throwing an error will reject the event command that initiated
40
+ // Throwing an error will reject the event command that initiated
37
41
  // the request.
38
-
39
42
  throw noIdentityCookieError;
40
43
  }
41
44
  });
@@ -9,6 +9,7 @@ the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTA
9
9
  OF ANY KIND, either express or implied. See the License for the specific language
10
10
  governing permissions and limitations under the License.
11
11
  */
12
+
12
13
  // TO-DOCUMENT: We queue subsequent requests until we have an identity cookie.
13
14
  export default (({
14
15
  doesIdentityCookieExist,
@@ -18,11 +19,11 @@ export default (({
18
19
  logger
19
20
  }) => {
20
21
  let obtainedIdentityPromise;
21
-
22
22
  const allowRequestToGoWithoutIdentity = request => {
23
23
  setDomainForInitialIdentityPayload(request);
24
24
  return addLegacyEcidToPayload(request.getPayload());
25
25
  };
26
+
26
27
  /**
27
28
  * Ensures that if no identity cookie exists, we only let one request at a
28
29
  * time without an identity until its response returns. In the meantime,
@@ -42,8 +43,6 @@ export default (({
42
43
  * an identity is to prevent a single malformed request causing all other
43
44
  * requests to never send.
44
45
  */
45
-
46
-
47
46
  return ({
48
47
  request,
49
48
  onResponse,
@@ -53,7 +52,6 @@ export default (({
53
52
  request.setIsIdentityEstablished();
54
53
  return Promise.resolve();
55
54
  }
56
-
57
55
  if (obtainedIdentityPromise) {
58
56
  // We don't have an identity cookie, but at least one request has
59
57
  // been sent to get it. Konductor may set the identity cookie in the
@@ -61,32 +59,35 @@ export default (({
61
59
  // requiring identity returns and awaitIdentityCookie confirms the
62
60
  // identity was set.
63
61
  logger.info("Delaying request while retrieving ECID from server.");
64
- const previousObtainedIdentityPromise = obtainedIdentityPromise; // This promise resolves when we have an identity cookie. Additional
62
+ const previousObtainedIdentityPromise = obtainedIdentityPromise;
63
+
64
+ // This promise resolves when we have an identity cookie. Additional
65
65
  // requests are chained together so that only one is sent at a time
66
66
  // until we have the identity cookie.
67
-
68
67
  obtainedIdentityPromise = previousObtainedIdentityPromise.catch(() => {
69
68
  return awaitIdentityCookie({
70
69
  onResponse,
71
70
  onRequestFailure
72
71
  });
73
- }); // When this returned promise resolves, the request will go out.
72
+ });
74
73
 
74
+ // When this returned promise resolves, the request will go out.
75
75
  return previousObtainedIdentityPromise.then(() => {
76
76
  logger.info("Resuming previously delayed request.");
77
77
  request.setIsIdentityEstablished();
78
- }) // If Konductor did not set the identity cookie on the previous
78
+ })
79
+ // If Konductor did not set the identity cookie on the previous
79
80
  // request, then awaitIdentityCookie will reject its promise.
80
81
  // Catch the rejection here and allow this request to go out.
81
82
  .catch(() => {
82
83
  return allowRequestToGoWithoutIdentity(request);
83
84
  });
84
- } // For Alloy+Konductor communication to be as robust as possible and
85
+ }
86
+
87
+ // For Alloy+Konductor communication to be as robust as possible and
85
88
  // to ensure we don't mint new ECIDs for requests that would otherwise
86
89
  // be sent in parallel, we'll let this request go out to fetch the
87
90
  // cookie
88
-
89
-
90
91
  obtainedIdentityPromise = awaitIdentityCookie({
91
92
  onResponse,
92
93
  onRequestFailure
@@ -9,6 +9,7 @@ the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTA
9
9
  OF ANY KIND, either express or implied. See the License for the specific language
10
10
  governing permissions and limitations under the License.
11
11
  */
12
+
12
13
  export default (({
13
14
  processIdSyncs
14
15
  }) => {
@@ -10,21 +10,17 @@ 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 { noop } from "../../utils";
13
-
14
13
  const createResultLogMessage = (idSync, success) => {
15
14
  return `ID sync ${success ? "succeeded" : "failed"}: ${idSync.spec.url}`;
16
15
  };
17
-
18
16
  export default (({
19
17
  fireReferrerHideableImage,
20
18
  logger
21
19
  }) => idSyncs => {
22
20
  const urlIdSyncs = idSyncs.filter(idSync => idSync.type === "url");
23
-
24
21
  if (!urlIdSyncs.length) {
25
22
  return Promise.resolve();
26
23
  }
27
-
28
24
  return Promise.all(urlIdSyncs.map(idSync => {
29
25
  return fireReferrerHideableImage(idSync.spec).then(() => {
30
26
  logger.info(createResultLogMessage(idSync, true));
@@ -9,6 +9,7 @@ the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTA
9
9
  OF ANY KIND, either express or implied. See the License for the specific language
10
10
  governing permissions and limitations under the License.
11
11
  */
12
+
12
13
  import getBrowser from "../../utils/getBrowser";
13
14
  export default (({
14
15
  thirdPartyCookiesEnabled,
@@ -9,6 +9,7 @@ the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTA
9
9
  OF ANY KIND, either express or implied. See the License for the specific language
10
10
  governing permissions and limitations under the License.
11
11
  */
12
+
12
13
  import { isObject } from "../../../utils";
13
14
  export default (({
14
15
  logger
@@ -9,6 +9,7 @@ the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTA
9
9
  OF ANY KIND, either express or implied. See the License for the specific language
10
10
  governing permissions and limitations under the License.
11
11
  */
12
+
12
13
  import { isFunction } from "../../../utils";
13
14
  export default (window => {
14
15
  const Visitor = window.Visitor;
@@ -9,6 +9,7 @@ the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTA
9
9
  OF ANY KIND, either express or implied. See the License for the specific language
10
10
  governing permissions and limitations under the License.
11
11
  */
12
+
12
13
  import getVisitor from "./getVisitor";
13
14
  export default (({
14
15
  logger,
@@ -17,7 +18,6 @@ export default (({
17
18
  }) => {
18
19
  return () => {
19
20
  const Visitor = getVisitor(window);
20
-
21
21
  if (Visitor) {
22
22
  // Need to explicitly wait for optIn because visitor will call callback
23
23
  // with invalid values prior to optIn being approved
@@ -43,7 +43,6 @@ export default (({
43
43
  }
44
44
  });
45
45
  }
46
-
47
46
  return Promise.resolve();
48
47
  };
49
48
  });
@@ -9,23 +9,22 @@ the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTA
9
9
  OF ANY KIND, either express or implied. See the License for the specific language
10
10
  governing permissions and limitations under the License.
11
11
  */
12
+
12
13
  import libraryVersion from "../../constants/libraryVersion";
13
14
  import { CONFIGURE, SET_DEBUG } from "../../constants/coreCommands";
14
-
15
15
  const prepareLibraryInfo = ({
16
16
  config,
17
17
  componentRegistry
18
18
  }) => {
19
19
  const allCommands = [...componentRegistry.getCommandNames(), CONFIGURE, SET_DEBUG].sort();
20
- const resultConfig = { ...config
20
+ const resultConfig = {
21
+ ...config
21
22
  };
22
23
  Object.keys(config).forEach(key => {
23
24
  const value = config[key];
24
-
25
25
  if (typeof value !== "function") {
26
26
  return;
27
27
  }
28
-
29
28
  resultConfig[key] = value.toString();
30
29
  });
31
30
  return {
@@ -34,7 +33,6 @@ const prepareLibraryInfo = ({
34
33
  commands: allCommands
35
34
  };
36
35
  };
37
-
38
36
  const createLibraryInfo = ({
39
37
  config,
40
38
  componentRegistry
@@ -55,6 +53,5 @@ const createLibraryInfo = ({
55
53
  }
56
54
  };
57
55
  };
58
-
59
56
  createLibraryInfo.namespace = "LibraryInfo";
60
57
  export default createLibraryInfo;
@@ -9,8 +9,8 @@ the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTA
9
9
  OF ANY KIND, either express or implied. See the License for the specific language
10
10
  governing permissions and limitations under the License.
11
11
  */
12
- import processResponse from "./processResponse";
13
12
 
13
+ import processResponse from "./processResponse";
14
14
  const createMachineLearning = () => {
15
15
  return {
16
16
  lifecycle: {
@@ -19,6 +19,5 @@ const createMachineLearning = () => {
19
19
  commands: {}
20
20
  };
21
21
  };
22
-
23
22
  createMachineLearning.namespace = "MachineLearning";
24
23
  export default createMachineLearning;
@@ -8,6 +8,7 @@ the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTA
8
8
  OF ANY KIND, either express or implied. See the License for the specific language
9
9
  governing permissions and limitations under the License.
10
10
  */
11
+
11
12
  export default (({
12
13
  response
13
14
  }) => {
@@ -9,5 +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
+
12
13
  export const DISPLAY = "decisioning.propositionDisplay";
13
14
  export const INTERACT = "decisioning.propositionInteract";
@@ -9,6 +9,7 @@ the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTA
9
9
  OF ANY KIND, either express or implied. See the License for the specific language
10
10
  governing permissions and limitations under the License.
11
11
  */
12
+
12
13
  export const PropositionEventType = {
13
14
  DISPLAY: "display",
14
15
  INTERACT: "interact"
@@ -9,6 +9,7 @@ the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTA
9
9
  OF ANY KIND, either express or implied. See the License for the specific language
10
10
  governing permissions and limitations under the License.
11
11
  */
12
+
12
13
  export const DEFAULT_CONTENT_ITEM = "https://ns.adobe.com/personalization/default-content-item";
13
14
  export const DOM_ACTION = "https://ns.adobe.com/personalization/dom-action";
14
15
  export const HTML_CONTENT_ITEM = "https://ns.adobe.com/personalization/html-content-item";
@@ -9,4 +9,7 @@ the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTA
9
9
  OF ANY KIND, either express or implied. See the License for the specific language
10
10
  governing permissions and limitations under the License.
11
11
  */
12
- export const VIEW_SCOPE_TYPE = "view";
12
+
13
+ export const VIEW_SCOPE_TYPE = "view";
14
+ export const PAGE_SCOPE_TYPE = "page";
15
+ export const PROPOSITION_SCOPE_TYPE = "proposition";
@@ -9,6 +9,7 @@ the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTA
9
9
  OF ANY KIND, either express or implied. See the License for the specific language
10
10
  governing permissions and limitations under the License.
11
11
  */
12
+
12
13
  export const WEB = "web";
13
14
  export const WEBAPP = "webapp";
14
15
  export const SURFACE_TYPE_DELIMITER = "://";
@@ -9,45 +9,44 @@ 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 { isNonEmptyArray, isObject } from "../../utils";
12
+
13
+ import { isNonEmptyArray, isObject, defer } from "../../utils";
13
14
  import { DOM_ACTION, HTML_CONTENT_ITEM } from "./constants/schema";
14
15
  import PAGE_WIDE_SCOPE from "../../constants/pageWideScope";
15
16
  const SUPPORTED_SCHEMAS = [DOM_ACTION, HTML_CONTENT_ITEM];
16
17
  export default (({
17
18
  processPropositions,
18
19
  createProposition,
19
- pendingDisplayNotifications,
20
+ renderedPropositions,
20
21
  viewCache
21
22
  }) => {
22
23
  const filterItemsPredicate = item => SUPPORTED_SCHEMAS.indexOf(item.schema) > -1;
23
-
24
24
  const updatePropositionItems = ({
25
25
  items,
26
26
  metadataForScope
27
27
  }) => {
28
28
  return items.filter(filterItemsPredicate).map(item => {
29
29
  if (item.schema !== HTML_CONTENT_ITEM) {
30
- return { ...item
30
+ return {
31
+ ...item
31
32
  };
32
33
  }
33
-
34
34
  if (isObject(metadataForScope)) {
35
- return { ...item,
36
- data: { ...item.data,
35
+ return {
36
+ ...item,
37
+ data: {
38
+ ...item.data,
37
39
  selector: metadataForScope.selector,
38
40
  type: metadataForScope.actionType
39
41
  }
40
42
  };
41
43
  }
42
-
43
44
  return undefined;
44
45
  }).filter(item => item);
45
46
  };
46
-
47
47
  const filterPropositionsPredicate = proposition => {
48
48
  return !(proposition.scope === PAGE_WIDE_SCOPE && proposition.renderAttempted);
49
49
  };
50
-
51
50
  const preparePropositions = ({
52
51
  propositions,
53
52
  metadata
@@ -69,16 +68,18 @@ export default (({
69
68
  })
70
69
  };
71
70
  }
72
-
73
71
  return proposition;
74
72
  }).filter(proposition => isNonEmptyArray(proposition.items));
75
73
  };
76
-
77
74
  return ({
78
75
  propositions = [],
79
76
  metadata = {},
80
77
  viewName
81
78
  }) => {
79
+ // We need to immediately call concat so that subsequent sendEvent
80
+ // calls will wait for applyPropositions to complete before executing.
81
+ const renderedPropositionsDeferred = defer();
82
+ renderedPropositions.concat(renderedPropositionsDeferred.promise);
82
83
  const propositionsToExecute = preparePropositions({
83
84
  propositions,
84
85
  metadata
@@ -87,14 +88,13 @@ export default (({
87
88
  if (viewName) {
88
89
  return viewCache.getView(viewName);
89
90
  }
90
-
91
91
  return [];
92
92
  }).then(additionalPropositions => {
93
93
  const {
94
94
  render,
95
95
  returnedPropositions
96
96
  } = processPropositions([...propositionsToExecute, ...additionalPropositions]);
97
- pendingDisplayNotifications.concat(render());
97
+ render().then(renderedPropositionsDeferred.resolve);
98
98
  return {
99
99
  propositions: returnedPropositions
100
100
  };
@@ -9,46 +9,47 @@ the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTA
9
9
  OF ANY KIND, either express or implied. See the License for the specific language
10
10
  governing permissions and limitations under the License.
11
11
  */
12
+
12
13
  const metasToArray = metas => {
13
14
  return Object.keys(metas).map(key => {
14
15
  return {
15
16
  id: key,
16
- scope: metas[key].scope,
17
- scopeDetails: metas[key].scopeDetails,
18
- trackingLabel: metas[key].trackingLabel
17
+ ...metas[key]
19
18
  };
20
19
  });
21
20
  };
22
-
23
21
  export default (() => {
24
22
  const clickStorage = {};
25
-
26
- const storeClickMetrics = value => {
27
- if (!clickStorage[value.selector]) {
28
- clickStorage[value.selector] = {};
23
+ const storeClickMetrics = ({
24
+ selector,
25
+ meta: {
26
+ id,
27
+ scope,
28
+ scopeDetails,
29
+ trackingLabel,
30
+ scopeType
29
31
  }
30
-
31
- clickStorage[value.selector][value.meta.id] = {
32
- scope: value.meta.scope,
33
- scopeDetails: value.meta.scopeDetails,
34
- trackingLabel: value.meta.trackingLabel
32
+ }) => {
33
+ if (!clickStorage[selector]) {
34
+ clickStorage[selector] = {};
35
+ }
36
+ clickStorage[selector][id] = {
37
+ scope,
38
+ scopeDetails,
39
+ trackingLabel,
40
+ scopeType
35
41
  };
36
42
  };
37
-
38
43
  const getClickSelectors = () => {
39
44
  return Object.keys(clickStorage);
40
45
  };
41
-
42
46
  const getClickMetasBySelector = selector => {
43
47
  const metas = clickStorage[selector];
44
-
45
48
  if (!metas) {
46
49
  return {};
47
50
  }
48
-
49
51
  return metasToArray(clickStorage[selector]);
50
52
  };
51
-
52
53
  return {
53
54
  storeClickMetrics,
54
55
  getClickSelectors,
@@ -26,7 +26,6 @@ export default (({
26
26
  const data = {
27
27
  eventType: DISPLAY
28
28
  };
29
-
30
29
  if (viewName) {
31
30
  data.web = {
32
31
  webPageDetails: {
@@ -34,17 +33,13 @@ export default (({
34
33
  }
35
34
  };
36
35
  }
37
-
38
36
  if (isNonEmptyArray(decisionsMeta)) {
39
37
  mergeDecisionsMeta(event, decisionsMeta, PropositionEventType.DISPLAY);
40
38
  }
41
-
42
39
  event.mergeXdm(data);
43
-
44
40
  if (documentMayUnload) {
45
41
  event.documentMayUnload();
46
42
  }
47
-
48
43
  return eventManager.sendEvent(event);
49
44
  };
50
45
  });
@@ -9,10 +9,12 @@ the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTA
9
9
  OF ANY KIND, either express or implied. See the License for the specific language
10
10
  governing permissions and limitations under the License.
11
11
  */
12
- import { noop } from "../../utils";
12
+
13
+ import { noop, flatMap, isNonEmptyArray } from "../../utils";
13
14
  import createPersonalizationDetails from "./createPersonalizationDetails";
14
15
  import { AUTHORING_ENABLED } from "./constants/loggerMessage";
15
16
  import validateApplyPropositionsOptions from "./validateApplyPropositionsOptions";
17
+ import { PropositionEventType } from "./constants/propositionEventType";
16
18
  export default (({
17
19
  getPageLocation,
18
20
  logger,
@@ -25,7 +27,8 @@ export default (({
25
27
  showContainers,
26
28
  applyPropositions,
27
29
  setTargetMigration,
28
- pendingNotificationsHandler
30
+ mergeDecisionsMeta,
31
+ renderedPropositions
29
32
  }) => {
30
33
  return {
31
34
  lifecycle: {
@@ -35,7 +38,6 @@ export default (({
35
38
  setTargetMigration(request);
36
39
  return Promise.resolve();
37
40
  },
38
-
39
41
  onBeforeEvent({
40
42
  event,
41
43
  renderDecisions,
@@ -49,16 +51,15 @@ export default (({
49
51
  propositions: []
50
52
  }));
51
53
  onRequestFailure(() => showContainers());
52
-
53
54
  if (isAuthoringModeEnabled()) {
54
- logger.warn(AUTHORING_ENABLED); // If we are in authoring mode we disable personalization
55
+ logger.warn(AUTHORING_ENABLED);
55
56
 
57
+ // If we are in authoring mode we disable personalization
56
58
  mergeQuery(event, {
57
59
  enabled: false
58
60
  });
59
61
  return Promise.resolve();
60
62
  }
61
-
62
63
  const personalizationDetails = createPersonalizationDetails({
63
64
  getPageLocation,
64
65
  renderDecisions,
@@ -68,14 +69,10 @@ export default (({
68
69
  isCacheInitialized: viewCache.isInitialized(),
69
70
  logger
70
71
  });
71
- const handlerPromises = [];
72
-
73
- if (personalizationDetails.shouldAddPendingDisplayNotifications()) {
74
- handlerPromises.push(pendingNotificationsHandler({
75
- event
76
- }));
72
+ const decisionsMetaPromises = [];
73
+ if (personalizationDetails.shouldIncludeRenderedPropositions()) {
74
+ decisionsMetaPromises.push(renderedPropositions.clear());
77
75
  }
78
-
79
76
  if (personalizationDetails.shouldFetchData()) {
80
77
  const cacheUpdate = viewCache.createCacheUpdate(personalizationDetails.getViewName());
81
78
  onRequestFailure(() => cacheUpdate.cancel());
@@ -87,19 +84,26 @@ export default (({
87
84
  });
88
85
  } else if (personalizationDetails.shouldUseCachedData()) {
89
86
  // eslint-disable-next-line consistent-return
90
- handlerPromises.push(viewChangeHandler({
87
+ decisionsMetaPromises.push(viewChangeHandler({
91
88
  personalizationDetails,
92
89
  event,
93
90
  onResponse,
94
91
  onRequestFailure
95
92
  }));
96
- } // We can wait for personalization to be applied and for
97
- // the fetch data request to complete in parallel.
98
-
93
+ }
99
94
 
100
- return Promise.all(handlerPromises);
95
+ // This promise.all waits for both the pending display notifications to be resolved
96
+ // (i.e. the top of page call to finish rendering) and the view change handler to
97
+ // finish rendering anything for this view.
98
+ return Promise.all(decisionsMetaPromises).then(decisionsMetas => {
99
+ // We only want to call mergeDecisionsMeta once, but we can get the propositions
100
+ // from two places: the pending display notifications and the view change handler.
101
+ const decisionsMeta = flatMap(decisionsMetas, dms => dms);
102
+ if (isNonEmptyArray(decisionsMeta)) {
103
+ mergeDecisionsMeta(event, decisionsMeta, PropositionEventType.DISPLAY);
104
+ }
105
+ });
101
106
  },
102
-
103
107
  onClick({
104
108
  event,
105
109
  clickedElement
@@ -109,7 +113,6 @@ export default (({
109
113
  clickedElement
110
114
  });
111
115
  }
112
-
113
116
  },
114
117
  commands: {
115
118
  applyPropositions: {
@@ -19,7 +19,7 @@ export default (({
19
19
  collect,
20
20
  processPropositions,
21
21
  createProposition,
22
- pendingDisplayNotifications
22
+ renderedPropositions
23
23
  }) => {
24
24
  return ({
25
25
  cacheUpdate,
@@ -29,12 +29,12 @@ export default (({
29
29
  }) => {
30
30
  if (personalizationDetails.isRenderDecisions()) {
31
31
  hideContainers(prehidingStyle);
32
+ } else {
33
+ showContainers();
32
34
  }
33
-
34
35
  mergeQuery(event, personalizationDetails.createQueryDetails());
35
36
  let handleNotifications;
36
-
37
- if (personalizationDetails.isSendDisplayNotifications()) {
37
+ if (personalizationDetails.isSendDisplayEvent()) {
38
38
  handleNotifications = decisionsMeta => {
39
39
  if (decisionsMeta.length > 0) {
40
40
  collect({
@@ -44,11 +44,10 @@ export default (({
44
44
  }
45
45
  };
46
46
  } else {
47
- const displayNotificationsDeferred = defer();
48
- pendingDisplayNotifications.concat(displayNotificationsDeferred.promise);
49
- handleNotifications = displayNotificationsDeferred.resolve;
47
+ const renderedPropositionsDeferred = defer();
48
+ renderedPropositions.concat(renderedPropositionsDeferred.promise);
49
+ handleNotifications = renderedPropositionsDeferred.resolve;
50
50
  }
51
-
52
51
  onResponse(({
53
52
  response
54
53
  }) => {
@@ -63,27 +62,24 @@ export default (({
63
62
  let render;
64
63
  let returnedPropositions;
65
64
  let returnedDecisions;
66
-
67
65
  if (personalizationDetails.isRenderDecisions()) {
68
66
  ({
69
67
  render,
70
68
  returnedPropositions,
71
69
  returnedDecisions
72
70
  } = processPropositions([...pagePropositions, ...currentViewPropositions], nonRenderedPropositions));
73
- render().then(decisionsMeta => {
74
- showContainers();
75
- handleNotifications(decisionsMeta);
76
- }).catch(e => {
77
- showContainers();
78
- throw e;
79
- });
71
+ render().then(handleNotifications);
72
+
73
+ // Render could take a long time especially if one of the renders
74
+ // is waiting for html to appear on the page. We show the containers
75
+ // immediately, and whatever renders quickly will not have flicker.
76
+ showContainers();
80
77
  } else {
81
78
  ({
82
79
  returnedPropositions,
83
80
  returnedDecisions
84
81
  } = processPropositions([], [...pagePropositions, ...currentViewPropositions, ...nonRenderedPropositions]));
85
82
  }
86
-
87
83
  return {
88
84
  propositions: returnedPropositions,
89
85
  decisions: returnedDecisions