@ohos-ports/s-ui-segment-wrapper 0.0.0-stage → 5.4.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/README.md +269 -2
  2. package/lib/config.js +20 -0
  3. package/lib/events.js +3 -0
  4. package/lib/index.js +82 -0
  5. package/lib/middlewares/destination/optimizelySiteAttribute.js +17 -0
  6. package/lib/middlewares/source/campaignContext.js +10 -0
  7. package/lib/middlewares/source/defaultContextProperties.js +11 -0
  8. package/lib/middlewares/source/optimizelyUserId.js +15 -0
  9. package/lib/middlewares/source/pageData.js +42 -0
  10. package/lib/middlewares/source/pageReferrer.js +102 -0
  11. package/lib/middlewares/source/userScreenInfo.js +12 -0
  12. package/lib/middlewares/source/userTraits.js +48 -0
  13. package/lib/repositories/googleRepository.js +272 -0
  14. package/lib/repositories/xandrRepository.js +42 -0
  15. package/lib/segmentWrapper.js +364 -0
  16. package/lib/tcf.js +230 -0
  17. package/lib/universalId.js +48 -0
  18. package/lib/utils/checkAnonymousId.js +9 -0
  19. package/lib/utils/cookies.js +50 -0
  20. package/lib/utils/ga4Detection.js +18 -0
  21. package/lib/utils/hashEmail.js +24 -0
  22. package/lib/utils/patchAnalytics.js +36 -0
  23. package/lib/utils/storage.js +17 -0
  24. package/package.json +39 -4
  25. package/src/config.js +25 -0
  26. package/src/events.js +3 -0
  27. package/src/index.js +96 -0
  28. package/src/middlewares/destination/optimizelySiteAttribute.js +22 -0
  29. package/src/middlewares/source/campaignContext.js +12 -0
  30. package/src/middlewares/source/defaultContextProperties.js +15 -0
  31. package/src/middlewares/source/optimizelyUserId.js +20 -0
  32. package/src/middlewares/source/pageData.js +45 -0
  33. package/src/middlewares/source/pageReferrer.js +125 -0
  34. package/src/middlewares/source/userScreenInfo.js +11 -0
  35. package/src/middlewares/source/userTraits.js +41 -0
  36. package/src/repositories/googleRepository.js +251 -0
  37. package/src/repositories/xandrRepository.js +48 -0
  38. package/src/segmentWrapper.js +338 -0
  39. package/src/tcf.js +263 -0
  40. package/src/universalId.js +51 -0
  41. package/src/utils/checkAnonymousId.js +10 -0
  42. package/src/utils/cookies.js +56 -0
  43. package/src/utils/ga4Detection.js +22 -0
  44. package/src/utils/hashEmail.js +33 -0
  45. package/src/utils/patchAnalytics.js +46 -0
  46. package/src/utils/storage.js +18 -0
  47. package/src-umd/index.js +8 -0
  48. package/umd/index.js +1 -0
@@ -0,0 +1,56 @@
1
+ export function readCookie(cookieName) {
2
+ const re = new RegExp(cookieName + '=([^;]+)')
3
+ const value = re.exec(document.cookie)
4
+ return value !== null ? unescape(value[1]) : null
5
+ }
6
+
7
+ const ONE_YEAR = 31_536_000
8
+ const DEFAULT_PATH = '/'
9
+ const DEFAULT_SAME_SITE = 'Lax'
10
+ export function saveCookie(
11
+ cookieName,
12
+ data,
13
+ {maxAge = ONE_YEAR, path = DEFAULT_PATH, reduceDomain = true, sameSite = DEFAULT_SAME_SITE} = {}
14
+ ) {
15
+ const domain = reduceDomain ? toCookieDomain() : window.location.hostname
16
+ const cookieValue = [
17
+ `${cookieName}=${data}`,
18
+ `domain=${domain}`,
19
+ `path=${path}`,
20
+ `max-age=${maxAge}`,
21
+ `SameSite=${sameSite}`
22
+ ].join(';')
23
+ document.cookie = cookieValue
24
+ }
25
+
26
+ export function removeCookie(
27
+ cookieName,
28
+ {path = DEFAULT_PATH, reduceDomain = true, sameSite = DEFAULT_SAME_SITE} = {}
29
+ ) {
30
+ const domain = reduceDomain ? toCookieDomain() : window.location.hostname
31
+ document.cookie = `${cookieName}=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=${path}; domain=${domain}`
32
+ }
33
+
34
+ /**
35
+ * Reduces the domain to main domain name
36
+ * Examples:
37
+ * - www.mywebpage.es -> .mywebpage.es
38
+ * - www.my.newwebpage.net -> .newwebpage.net
39
+ * - www.mywebpage.co.uk -> .mywebpage.co.uk
40
+ *
41
+ * @param {String} domain
42
+ * @returns {String} dot + main domain
43
+ */
44
+ const toCookieDomain = (domain = window.location.hostname || '') => {
45
+ const DOT = '.'
46
+ const hostDomainParts = domain.split(DOT).reverse()
47
+ if (hostDomainParts.length === 1) {
48
+ return hostDomainParts[0]
49
+ }
50
+ const cookieDomainParts = []
51
+ for (const part of hostDomainParts) {
52
+ cookieDomainParts.push(part)
53
+ if (part.length > 3) break
54
+ }
55
+ return `${DOT}${cookieDomainParts.reverse().join(DOT)}`
56
+ }
@@ -0,0 +1,22 @@
1
+ import {getConfig} from '../config.js'
2
+
3
+ /**
4
+ * Check if Google Analytics 4 Web destination is enabled in Segment
5
+ * Simple detection based on googleAnalyticsMeasurementId presence:
6
+ * - If googleAnalyticsMeasurementId is configured → LEGACY mode (manual GA4)
7
+ * - If NOT configured → NEW mode (Segment destination handles GA4)
8
+ * @returns {boolean}
9
+ */
10
+ export const isGA4DestinationEnabled = () => {
11
+ const googleAnalyticsMeasurementId = getConfig('googleAnalyticsMeasurementId')
12
+ // If no measurement ID configured, assume they're using Segment destination
13
+ return !googleAnalyticsMeasurementId
14
+ }
15
+
16
+ /**
17
+ * Reset the cached detection (useful for testing)
18
+ * @deprecated No longer needed as detection is now stateless
19
+ */
20
+ export const resetGA4DetectionCache = () => {
21
+ // No-op: detection is now stateless, no cache to reset
22
+ }
@@ -0,0 +1,33 @@
1
+ import md5 from 'tiny-hashes/md5'
2
+ import sha256 from 'tiny-hashes/sha256'
3
+
4
+ const PLUS_AND_DOT = /\.|\+.*$/g
5
+
6
+ /**
7
+ * Normalize email by lowering case and extracting + and . symbols for gmail
8
+ * @param {string} email
9
+ * @return {string} Normalized email. If not valid, returns and empty string
10
+ */
11
+ export function normalizeEmail(email) {
12
+ if (typeof email !== 'string') return ''
13
+
14
+ email = email.toLowerCase()
15
+ const emailParts = email.split(/@/)
16
+
17
+ if (emailParts.length !== 2) return ''
18
+
19
+ let [username, domain] = emailParts
20
+ username = username.replace(PLUS_AND_DOT, '')
21
+
22
+ return `${username}@${domain}`
23
+ }
24
+
25
+ export function createUniversalId(email) {
26
+ const normalizedEmail = normalizeEmail(email)
27
+ return normalizedEmail ? sha256(normalizedEmail) : ''
28
+ }
29
+
30
+ export function hashEmail(email) {
31
+ const normalizedEmail = normalizeEmail(email)
32
+ return normalizedEmail ? md5(normalizedEmail) : ''
33
+ }
@@ -0,0 +1,46 @@
1
+ import {isClient} from '../config.js'
2
+ import {decorateContextWithNeededData, getDefaultProperties} from '../segmentWrapper.js'
3
+
4
+ const MPI_PATCH_FIELD = '__mpi_patch'
5
+
6
+ function monkeyPatchAnalyticsTrack() {
7
+ const {track: originalTrack} = window.analytics
8
+ window.analytics.track = (...args) => {
9
+ const [event, properties, contextFromArgs, fn] = args
10
+ const newProperties = {
11
+ ...getDefaultProperties(),
12
+ ...properties
13
+ }
14
+ decorateContextWithNeededData({
15
+ context: contextFromArgs,
16
+ event,
17
+ properties: newProperties
18
+ }).then(({context: newContext, properties: decoratedProperties}) => {
19
+ originalTrack.call(
20
+ window.analytics,
21
+ event,
22
+ decoratedProperties,
23
+ {
24
+ ...newContext,
25
+ context: {
26
+ integrations: {
27
+ ...newContext.integrations
28
+ }
29
+ }
30
+ },
31
+ fn
32
+ )
33
+ })
34
+ return window.analytics
35
+ }
36
+ // add a flag to the patched analytics so we don't patch this twice
37
+ window.analytics[MPI_PATCH_FIELD] = true
38
+ }
39
+
40
+ if (isClient) {
41
+ if (!window.analytics) {
42
+ console.warn('Segment Analytics is not loaded so patch is not applied.')
43
+ } else if (!window.analytics[MPI_PATCH_FIELD]) {
44
+ window.analytics.initialized ? monkeyPatchAnalyticsTrack() : window.analytics.ready(monkeyPatchAnalyticsTrack)
45
+ }
46
+ }
@@ -0,0 +1,18 @@
1
+ // @ts-check
2
+
3
+ /**
4
+ * Use this module to store and retrieve data from localStorage or sessionStorage
5
+ * @param {object} params
6
+ * @param {string} params.key
7
+ * @param {'getItem'|'removeItem'|'setItem'=} params.method
8
+ * @param {'localStorage'|'sessionStorage'=} params.type
9
+ * @param {string=} params.value
10
+ * @returns {string|void}
11
+ */
12
+ export const storage = ({type = 'localStorage', method = 'getItem', key, value}) => {
13
+ try {
14
+ return window[type][method](key, value)
15
+ } catch (e) {
16
+ console.error(e)
17
+ }
18
+ }
@@ -0,0 +1,8 @@
1
+ import analytics, {getAdobeMCVisitorID, getAdobeVisitorData} from '../src/index.js'
2
+
3
+ const w = window
4
+
5
+ w.sui = w.sui || {}
6
+ w.sui.analytics = w.sui.analytics || analytics
7
+ w.sui.analytics.getAdobeVisitorData = w.sui.analytics.getAdobeVisitorData || getAdobeVisitorData
8
+ w.sui.analytics.getAdobeMCVisitorID = w.sui.analytics.getAdobeMCVisitorID || getAdobeMCVisitorID
package/umd/index.js ADDED
@@ -0,0 +1 @@
1
+ (()=>{"use strict";function n(){return n=Object.assign?Object.assign.bind():function(n){for(var t=1;t<arguments.length;t++){var e=arguments[t];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r])}return n},n.apply(this,arguments)}var t="__mpi",e="undefined"!=typeof window,r=function(n){var e,r,o=(null==(e=window)||null==(r=e[t])?void 0:r.segmentWrapper)||{};return n?o[n]:o},o=function(n,e){window[t]=window[t]||{},window[t].segmentWrapper=window[t].segmentWrapper||{},window[t].segmentWrapper[n]=e};function i(n,t,e,r,o,i,a){try{var c=n[i](a),u=c.value}catch(n){return void e(n)}c.done?t(u):Promise.resolve(u).then(r,o)}function a(n){return function(){var t=this,e=arguments;return new Promise(function(r,o){var a=n.apply(t,e);function c(n){i(a,r,o,c,u,"next",n)}function u(n){i(a,r,o,c,u,"throw",n)}c(void 0)})}}function c(n){var t,e=n.eventName,r=n.detail,o=void 0===r?{}:r;window.CustomEvent&&"function"==typeof window.CustomEvent?t=new window.CustomEvent(e,{detail:o}):(t=document.createEvent("CustomEvent")).initCustomEvent(e,!0,!0,o),window.document.dispatchEvent(t)}var u="ga4InitEventSent",s=function(){return!r("googleAnalyticsMeasurementId")},l="undefined"!=typeof document?document.referrer:"",d="undefined"!=typeof window?window.location.search:"",f="undefined"!=typeof window?window.location.href:"",v={spaReferrer:"",referrer:l,isFirstPageViewSent:!1},p=function(){var n=window.location;return""+n.origin+n.pathname},g=function(){return"undefined"!=typeof window&&window.location.search&&window.location.search!==d?window.location.search:d},w=function(n){var t=(void 0===n?{}:n).isPageTrack,e=void 0!==t&&t,r=v.referrer,o=v.spaReferrer;return e?r:o||r},y=function(t){var e=t.payload,r=t.next,o=e.obj.context,i=o.isPageTrack,a=w({isPageTrack:i}),c={};i&&!v.isFirstPageViewSent&&(v.isFirstPageViewSent=!0,c={url:f,search:d}),e.obj.context=n({},o,{page:n({},o.page,c,{referrer:a})}),a&&s()&&(e.obj.properties=n({},e.obj.properties,{page_referrer:a})),i&&(v.spaReferrer=w({isPageTrack:!0}),v.referrer=p()),r(e)};function m(){/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */var n,t,e="function"==typeof Symbol?Symbol:{},r=e.iterator||"@@iterator",o=e.toStringTag||"@@toStringTag";function i(e,r,o,i){var u=r&&r.prototype instanceof c?r:c,s=Object.create(u.prototype);return h(s,"_invoke",function(e,r,o){var i,c,u,s=0,l=o||[],d=!1,f={p:0,n:0,v:n,a:v,f:v.bind(n,4),d:function(t,e){return i=t,c=0,u=n,f.n=e,a}};function v(e,r){for(c=e,u=r,t=0;!d&&s&&!o&&t<l.length;t++){var o,i=l[t],v=f.p,p=i[2];e>3?(o=p===r)&&(u=i[(c=i[4])?5:(c=3,3)],i[4]=i[5]=n):i[0]<=v&&((o=e<2&&v<i[1])?(c=0,f.v=r,f.n=i[1]):v<p&&(o=e<3||i[0]>r||r>p)&&(i[4]=e,i[5]=r,f.n=p,c=0))}if(o||e>1)return a;throw d=!0,r}return function(o,l,p){if(s>1)throw TypeError("Generator is already running");for(d&&1===l&&v(l,p),c=l,u=p;(t=c<2?n:u)||!d;){i||(c?c<3?(c>1&&(f.n=-1),v(c,u)):f.n=u:f.v=u);try{if(s=2,i){if(c||(o="next"),t=i[o]){if(!(t=t.call(i,u)))throw TypeError("iterator result is not an object");if(!t.done)return t;u=t.value,c<2&&(c=0)}else 1===c&&(t=i.return)&&t.call(i),c<2&&(u=TypeError("The iterator does not provide a '"+o+"' method"),c=1);i=n}else if((t=(d=f.n<0)?u:e.call(r,f))!==a)break}catch(t){i=n,c=1,u=t}finally{s=1}}return{value:t,done:d}}}(e,o,i),!0),s}var a={};function c(){}function u(){}function s(){}t=Object.getPrototypeOf;var l=[][r]?t(t([][r]())):(h(t={},r,function(){return this}),t),d=s.prototype=c.prototype=Object.create(l);function f(n){return Object.setPrototypeOf?Object.setPrototypeOf(n,s):(n.__proto__=s,h(n,o,"GeneratorFunction")),n.prototype=Object.create(d),n}return u.prototype=s,h(d,"constructor",s),h(s,"constructor",u),u.displayName="GeneratorFunction",h(s,o,"GeneratorFunction"),h(d),h(d,o,"Generator"),h(d,r,function(){return this}),h(d,"toString",function(){return"[object Generator]"}),(m=function(){return{w:i,m:f}})()}function h(n,t,e,r){var o=Object.defineProperty;try{o({},"",{})}catch(n){o=0}h=function(n,t,e,r){function i(t,e){h(n,t,function(n){return this._invoke(t,e,n)})}t?o?o(n,t,{value:e,enumerable:!r,configurable:!r,writable:!r}):n[t]=e:(i("next",0),i("throw",1),i("return",2))},h(n,t,e,r)}var b="client_id",_="session_id",x="dataLayer",S="granted",P="denied",j="stc",I="-",T=":",A="utm_campaign",k="utm_medium",E="utm_source",O="utm_content",G="utm_id",M="utm_term",C={aff:"affiliate",dis:"display",em:"email",met:"paid-metasearch",sem:"paid-search",rt:"retargeting",sm:"social-media",sp:"paid-social",pn:"push-notification",cs:"cross-sites"},D={medium:null,source:null,campaign:null},F=function(){var n=a(m().m(function n(t){return m().w(function(n){for(;;)if(0===n.n)return n.a(2,new Promise(function(n,e){var r=document.createElement("script");r.src=t,r.onload=n,r.onerror=e,document.head.appendChild(r)}))},n)}));return function(t){return n.apply(this,arguments)}}(),R=function(){var n=a(m().m(function n(){var t,e,o;return m().w(function(n){for(;;)switch(n.n){case 0:if(t=r("googleAnalyticsMeasurementId"),e=r("googleAnalyticsDataLayer")||x,t){n.n=1;break}return n.a(2,Promise.resolve(!1));case 1:return o="https://www.googletagmanager.com/gtag/js?id="+t+"&l="+e,n.a(2,F(o))}},n)}));return function(){return n.apply(this,arguments)}}(),V=function(n){var t;if(!s()){var e=null!=(t=r("googleAnalyticsInitEvent"))?t:"sui",o="ga_event_"+e+"_",i=""+o+n;void 0!==window.gtag&&(localStorage.getItem(i)||(window.gtag("event",e),console.log('Sending GA4 event "'+e+'" for the session "'+n+'"'),localStorage.setItem(i,"true"),c({eventName:u,detail:{eventName:e,sessionId:n}})),Object.keys(localStorage).forEach(function(n){n.startsWith(o)&&n!==i&&localStorage.removeItem(n)}))}},N=function(){var n=a(m().m(function n(t){var e;return m().w(function(n){for(;;)switch(n.n){case 0:if(e=r("googleAnalyticsMeasurementId")){n.n=1;break}return n.a(2,Promise.resolve());case 1:return n.a(2,new Promise(function(n){null==window.gtag||window.gtag("get",e,t,n)}))}},n)}));return function(t){return n.apply(this,arguments)}}(),W="utm",L=function(t){var e,o,i=(void 0===t?{}:t).needsTransformation,a=void 0===i||i,c=(e=g(),o=new URLSearchParams(e),r("trackingTagsType")===W?function(n){var t=n.get(G),e=n.get(A),r=n.get(k),o=n.get(E),i=n.get(O),a=n.get(M),c=t?""+t+T+e:e,u=!r||!o||!c;return u&&z(n)?U(n):{campaign:c,medium:r,source:o,content:i,term:a}}(o):U(o)),u=c.medium,s=c.source,l=c.campaign,d=c.content,f=c.term;if(!u||!s||!l)return null;var v=l.split(T),p=v[0],w=v[1];return p||w?{campaign:n({medium:a&&C[u]||u},void 0!==w&&{id:p},{name:null!=w?w:p,source:s},void 0!==d&&"na"!==d&&{content:d},void 0!==f&&{term:f})}:null};function U(n){if(!z(n))return D;var t=n.get(j).split(I);return{medium:t[0],source:t[1],campaign:t[2],content:t[3],term:t[4]}}function z(n){return n.has(j)}var H=function(){var n=a(m().m(function n(){return m().w(function(n){for(;;)if(0===n.n)return n.a(2,N(b))},n)}));return function(){return n.apply(this,arguments)}}(),J=function(){var n=a(m().m(function n(){var t;return m().w(function(n){for(;;)switch(n.n){case 0:return n.n=1,N(_);case 1:return t=n.v,V(t),n.a(2,t)}},n)}));return function(){return n.apply(this,arguments)}}();function $(n){void 0===n&&(n="analytics_storage");try{var t,e,r=null==(t=window.google_tag_data)||null==(e=t.ics)||null==e.getConsentState?void 0:e.getConsentState(n);return 1===r?S:2===r?P:void 0}catch(n){return}}var X=function(){var n;return null!=(n=$())?n:P},Y=function(n){r("googleAnalyticsMeasurementId")&&n&&(null==window.gtag||window.gtag("set","user_id",n))},q=function(n,t){void 0===n&&(n="default"),null==window.gtag||window.gtag("consent",n,t||{analytics_storage:P,ad_user_data:P,ad_personalization:P,ad_storage:P})};function B(n,t){var e="undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(e)return(e=e.call(n)).next.bind(e);if(Array.isArray(n)||(e=function(n,t){if(n){if("string"==typeof n)return K(n,t);var e={}.toString.call(n).slice(8,-1);return"Object"===e&&n.constructor&&(e=n.constructor.name),"Map"===e||"Set"===e?Array.from(n):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?K(n,t):void 0}}(n))||t&&n&&"number"==typeof n.length){e&&(n=e);var r=0;return function(){return r>=n.length?{done:!0}:{done:!1,value:n[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function K(n,t){(null==t||t>n.length)&&(t=n.length);for(var e=0,r=Array(t);e<t;e++)r[e]=n[e];return r}var Q=function(n){void 0===n&&(n=window.location.hostname||"");var t=n.split(".").reverse();if(1===t.length)return t[0];for(var e,r=[],o=B(t);!(e=o()).done;){var i=e.value;if(r.push(i),i.length>3)break}return"."+r.reverse().join(".")},Z={channel:"GDPR"},nn={analytics:[1,8,10],advertising:[3]},tn="tcloaded",en="useractioncomplete",rn="CMP Submitted",on="accepted",an="declined",cn="unknown",un={listeners:[],value:void 0,addListener:function(n){return un.listeners.push(n)},get:function(){return un.value},set:function(n){var t=n||{},e=t.analytics,r=t.advertising;un.value={analytics:e,advertising:r},un.listeners.forEach(function(t){return t(n)}),un.listeners=[]}};var sn=function(){var n=un.get();return void 0!==n?Promise.resolve(n):new Promise(function(n){un.addListener(function(t){return n(t)})})},ln=function(n){return n.analytics===on},dn=function(n){var t,e=(t=n,nn.analytics.every(function(n){return t[""+n]})),r=function(n){return nn.advertising.every(function(t){return n[""+t]})}(n),o=e?on:an,i=r?on:an;return un.set({analytics:o,advertising:i}),{analytics:o,advertising:i}},fn=function(){var n,t=null!==(n=new RegExp("borosTcf"+"=([^;]+)").exec(document.cookie))?unescape(n[1]):null;if(t)try{return JSON.parse(window.atob(t)).purpose.consents}catch(n){console.error(n)}};var vn="https://secure.adnxs.com/getuidj?consent=1",pn="adit-xandr-id";function gn(n){var t,r,i,a,c,u,s,l,d=n.gdprPrivacyValueAdvertising;if(!e)return null;if(d!==on)return t=pn,a=(i=void 0===r?{}:r).path,c=void 0===a?"/":a,u=i.reduceDomain,s=void 0===u||u,i.sameSite,l=s?Q():window.location.hostname,document.cookie=t+"=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path="+c+"; domain="+l,null;var f,v=function(n){var t=new RegExp(n+"=([^;]+)").exec(document.cookie);return null!==t?unescape(t[1]):null}(pn),p=(f=v)&&Number(f)>0;return p||(e?window.fetch(vn,{credentials:"include"}).then(function(n){return n.json()}).then(function(n){return null==n?void 0:n.uid}):Promise.resolve(null)).then(function(n){"string"==typeof n&&function(n,t,e){var r=void 0===e?{}:e,o=r.maxAge,i=void 0===o?31536e3:o,a=r.path,c=void 0===a?"/":a,u=r.reduceDomain,s=void 0===u||u,l=r.sameSite,d=void 0===l?"Lax":l,f=[n+"="+t,"domain="+(s?Q():window.location.hostname),"path="+c,"max-age="+i,"SameSite="+d].join(";");document.cookie=f}(pn,n)}),o("xandrId",v),p?v:null}function wn(){/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */var n,t,e="function"==typeof Symbol?Symbol:{},r=e.iterator||"@@iterator",o=e.toStringTag||"@@toStringTag";function i(e,r,o,i){var u=r&&r.prototype instanceof c?r:c,s=Object.create(u.prototype);return yn(s,"_invoke",function(e,r,o){var i,c,u,s=0,l=o||[],d=!1,f={p:0,n:0,v:n,a:v,f:v.bind(n,4),d:function(t,e){return i=t,c=0,u=n,f.n=e,a}};function v(e,r){for(c=e,u=r,t=0;!d&&s&&!o&&t<l.length;t++){var o,i=l[t],v=f.p,p=i[2];e>3?(o=p===r)&&(u=i[(c=i[4])?5:(c=3,3)],i[4]=i[5]=n):i[0]<=v&&((o=e<2&&v<i[1])?(c=0,f.v=r,f.n=i[1]):v<p&&(o=e<3||i[0]>r||r>p)&&(i[4]=e,i[5]=r,f.n=p,c=0))}if(o||e>1)return a;throw d=!0,r}return function(o,l,p){if(s>1)throw TypeError("Generator is already running");for(d&&1===l&&v(l,p),c=l,u=p;(t=c<2?n:u)||!d;){i||(c?c<3?(c>1&&(f.n=-1),v(c,u)):f.n=u:f.v=u);try{if(s=2,i){if(c||(o="next"),t=i[o]){if(!(t=t.call(i,u)))throw TypeError("iterator result is not an object");if(!t.done)return t;u=t.value,c<2&&(c=0)}else 1===c&&(t=i.return)&&t.call(i),c<2&&(u=TypeError("The iterator does not provide a '"+o+"' method"),c=1);i=n}else if((t=(d=f.n<0)?u:e.call(r,f))!==a)break}catch(t){i=n,c=1,u=t}finally{s=1}}return{value:t,done:d}}}(e,o,i),!0),s}var a={};function c(){}function u(){}function s(){}t=Object.getPrototypeOf;var l=[][r]?t(t([][r]())):(yn(t={},r,function(){return this}),t),d=s.prototype=c.prototype=Object.create(l);function f(n){return Object.setPrototypeOf?Object.setPrototypeOf(n,s):(n.__proto__=s,yn(n,o,"GeneratorFunction")),n.prototype=Object.create(d),n}return u.prototype=s,yn(d,"constructor",s),yn(s,"constructor",u),u.displayName="GeneratorFunction",yn(s,o,"GeneratorFunction"),yn(d),yn(d,o,"Generator"),yn(d,r,function(){return this}),yn(d,"toString",function(){return"[object Generator]"}),(wn=function(){return{w:i,m:f}})()}function yn(n,t,e,r){var o=Object.defineProperty;try{o({},"",{})}catch(n){o=0}yn=function(n,t,e,r){function i(t,e){yn(n,t,function(n){return this._invoke(t,e,n)})}t?o?o(n,t,{value:e,enumerable:!r,configurable:!r,writable:!r}):n[t]=e:(i("next",0),i("throw",1),i("return",2))},yn(n,t,e,r)}var mn={platform:"web"},hn={All:!1},bn={All:!0},_n=function(n){var t=r("userIdPrefix");return t&&("number"==typeof n||"string"==typeof n&&!n.startsWith(t))?""+t+n:n},xn=function(){return n({},mn,r("defaultProperties"))},Sn=function(){var t=a(wn().m(function t(e){var r,o,i,a,c,u,l;return wn().w(function(t){for(;;)switch(t.p=t.n){case 0:if(r=e.gdprPrivacyValue,o=e.event,i=ln(r),a=Pn({isGdprAccepted:i,event:o}),!s()){t.n=1;break}return t.a(2,n({},a,{"Google Analytics 4 Web":!0}));case 1:return t.p=1,t.n=2,J();case 2:return c=t.v,t.n=3,H();case 3:u=t.v,t.n=5;break;case 4:t.p=4,l=t.v,console.error("[segment-wrapper] Failed to retrieve GA4 session/client IDs. Events will be sent without session attribution.",l);case 5:return t.a(2,n({},a,{"Google Analytics 4":!u||!c||{clientId:u,sessionId:c}}))}},t,null,[[1,4]])}));return function(n){return t.apply(this,arguments)}}(),Pn=function(n){var t=n.isGdprAccepted;return"CMP Submitted"===n.event?bn:t?{}:hn},jn=function(n){var t=n.context,e=n.xandrId,o=!1!==r("sendXandrId"),i=e&&0!==parseInt(e);if(!o||!i)return{};var a=[].concat((null==t?void 0:t.externalIds)||[],[{collection:"users",encoding:"none",id:e,type:"xandr_id"}]);return{externalIds:a.filter(function(n,t){var e=n.id,r=n.type;return t===a.findIndex(function(n){var t=n.id,o=n.type;return e===t&&r===o})})}},In=function(n){return n===on?S:P},Tn=function(){var t=a(wn().m(function t(e){var r,o,i,a,c,u,l,d,f,v,p,g,w,y,m,h,b,_,x,S,P,j,I;return wn().w(function(t){for(;;)switch(t.n){case 0:return u=e.event,l=void 0===u?"":u,d=e.context,f=void 0===d?{}:d,v=e.properties,p=void 0===v?{}:v,t.n=1,sn();case 1:return g=t.v,y=(w=g||{}).analytics,m=w.advertising,h=ln(g),b=s(),t.n=2,Promise.all([Sn({gdprPrivacyValue:g,event:l}),gn({gdprPrivacyValueAdvertising:m})]);case 2:return _=t.v,x=_[0],S=_[1],P=h?f.integrations:n({},null!=(r=f.integrations)?r:{},{Personas:!1,Webhooks:!0,Webhook:!0}),j={analytics_storage:b?In(y):null!=(o=$("analytics_storage"))?o:In(y),ad_storage:b?In(m):null!=(i=$("ad_storage"))?i:In(m),ad_user_data:b?In(m):null!=(a=$("ad_user_data"))?a:In(m),ad_personalization:b?In(m):null!=(c=$("ad_personalization"))?c:In(m)},I=n({},f,!h&&{ip:"0.0.0.0"},jn({context:f,xandrId:S}),{clientVersion:"segment-wrapper@"+(null!="5.4.0"?"5.4.0":"0.0.0"),gdpr_privacy:y,gdpr_privacy_advertising:m,integrations:n({},P,x)}),b||(I.analytics_storage=X(),I.google_consents=j),t.a(2,{context:I,properties:b?n({},p,{google_consents:j}):p})}},t)}));return function(n){return t.apply(this,arguments)}}(),An=function(t,e,o,i){return void 0===o&&(o={}),new Promise(function(c){var u=function(){var u=a(wn().m(function u(){var l,d,f,v,p,g,w;return wn().w(function(u){for(;;)switch(u.n){case 0:return l=n({},xn(),e),u.n=1,Tn({context:o,event:t,properties:l});case 1:d=u.v,f=d.context,v=d.properties,p=function(){var n=a(wn().m(function n(){var t,e,r=arguments;return wn().w(function(n){for(;;)switch(n.n){case 0:return i&&i.apply(void 0,r),n.n=1,Promise.all([sn()]);case 1:t=n.v,e=t[0],ln(e)?c.apply(void 0,r):c();case 2:return n.a(2)}},n)}));return function(){return n.apply(this,arguments)}}(),g=s(),w=r("googleAnalyticsConsentManagement"),!g&&w&&t===rn&&q("update",f.google_consents),window.analytics.track(t,v,n({},f,{context:{integrations:n({},f.integrations)}}),p);case 2:return u.a(2)}},u)}));return function(){return u.apply(this,arguments)}}();u()})};const kn={page:function(n,t,e,r){return void 0===e&&(e={}),e.isPageTrack=!0,An(n,t,e,r)},identify:function(){var n=a(wn().m(function n(t,e,r,o){var i,a;return wn().w(function(n){for(;;)switch(n.n){case 0:return n.n=1,sn();case 1:return i=n.v,a=_n(t),s()||Y(a),n.a(2,window.analytics.identify(a,ln(i)?e:{},r,o))}},n)}));return function(t,e,r,o){return n.apply(this,arguments)}}(),track:An,reset:function(){return Promise.resolve(window.analytics.reset())}};var En="__mpi_patch";function On(){var t=window.analytics.track;window.analytics.track=function(){for(var e=arguments.length,r=new Array(e),o=0;o<e;o++)r[o]=arguments[o];var i=r[0],a=r[1],c=r[2],u=r[3],s=n({},xn(),a);return Tn({context:c,event:i,properties:s}).then(function(e){var r=e.context,o=e.properties;t.call(window.analytics,i,o,n({},r,{context:{integrations:n({},r.integrations)}}),u)}),window.analytics},window.analytics[En]=!0}e&&(window.analytics?window.analytics[En]||(window.analytics.initialized?On():window.analytics.ready(On)):console.warn("Segment Analytics is not loaded so patch is not applied."));var Gn,Mn=function(t){var e=t.payload,r=t.next,o=L({needsTransformation:!1});e.obj.context=n({},e.obj.context,o),r(e)},Cn=(Gn=null,function(t){var e=t.payload,r=t.next;try{var o,i=e.obj,a=i.event;if("track"!==i.type)return void r(e);if("string"==typeof a&&a.endsWith("Viewed")){var c=i.properties||{},u=c.page_name,s=c.page_type;return Gn={name:u,type:s},void r(e)}if(!Gn)return void r(e);r(n({},e,{obj:n({},i,{properties:n({},i.properties,{page_name_origin:Gn.name,page_type:(null==(o=i.properties)?void 0:o.page_type)||Gn.type})})}))}catch(n){console.error(n),r(e)}}),Dn={platform:"web"},Fn=function(t){var e=t.payload,o=t.next,i=r("defaultContext")||{};e.obj.context=n({},Dn,i,e.obj.context),o(e)},Rn=function(t){var e=t.payload,r=t.next;e.obj.context=n({},e.obj.context,{screen:{height:window.innerHeight,width:window.innerWidth,density:window.devicePixelRatio}}),r(e)};function Vn(){/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */var n,t,e="function"==typeof Symbol?Symbol:{},r=e.iterator||"@@iterator",o=e.toStringTag||"@@toStringTag";function i(e,r,o,i){var u=r&&r.prototype instanceof c?r:c,s=Object.create(u.prototype);return Nn(s,"_invoke",function(e,r,o){var i,c,u,s=0,l=o||[],d=!1,f={p:0,n:0,v:n,a:v,f:v.bind(n,4),d:function(t,e){return i=t,c=0,u=n,f.n=e,a}};function v(e,r){for(c=e,u=r,t=0;!d&&s&&!o&&t<l.length;t++){var o,i=l[t],v=f.p,p=i[2];e>3?(o=p===r)&&(u=i[(c=i[4])?5:(c=3,3)],i[4]=i[5]=n):i[0]<=v&&((o=e<2&&v<i[1])?(c=0,f.v=r,f.n=i[1]):v<p&&(o=e<3||i[0]>r||r>p)&&(i[4]=e,i[5]=r,f.n=p,c=0))}if(o||e>1)return a;throw d=!0,r}return function(o,l,p){if(s>1)throw TypeError("Generator is already running");for(d&&1===l&&v(l,p),c=l,u=p;(t=c<2?n:u)||!d;){i||(c?c<3?(c>1&&(f.n=-1),v(c,u)):f.n=u:f.v=u);try{if(s=2,i){if(c||(o="next"),t=i[o]){if(!(t=t.call(i,u)))throw TypeError("iterator result is not an object");if(!t.done)return t;u=t.value,c<2&&(c=0)}else 1===c&&(t=i.return)&&t.call(i),c<2&&(u=TypeError("The iterator does not provide a '"+o+"' method"),c=1);i=n}else if((t=(d=f.n<0)?u:e.call(r,f))!==a)break}catch(t){i=n,c=1,u=t}finally{s=1}}return{value:t,done:d}}}(e,o,i),!0),s}var a={};function c(){}function u(){}function s(){}t=Object.getPrototypeOf;var l=[][r]?t(t([][r]())):(Nn(t={},r,function(){return this}),t),d=s.prototype=c.prototype=Object.create(l);function f(n){return Object.setPrototypeOf?Object.setPrototypeOf(n,s):(n.__proto__=s,Nn(n,o,"GeneratorFunction")),n.prototype=Object.create(d),n}return u.prototype=s,Nn(d,"constructor",s),Nn(s,"constructor",u),u.displayName="GeneratorFunction",Nn(s,o,"GeneratorFunction"),Nn(d),Nn(d,o,"Generator"),Nn(d,r,function(){return this}),Nn(d,"toString",function(){return"[object Generator]"}),(Vn=function(){return{w:i,m:f}})()}function Nn(n,t,e,r){var o=Object.defineProperty;try{o({},"",{})}catch(n){o=0}Nn=function(n,t,e,r){function i(t,e){Nn(n,t,function(n){return this._invoke(t,e,n)})}t?o?o(n,t,{value:e,enumerable:!r,configurable:!r,writable:!r}):n[t]=e:(i("next",0),i("throw",1),i("return",2))},Nn(n,t,e,r)}for(var Wn=function(t){var e=r("isUserTraitsEnabled"),o=window.analytics.user(),i=ln(t),a=o.id();return n({anonymousId:o.anonymousId()},a&&{userId:a},i&&e&&o.traits())},Ln=function(){var t=a(Vn().m(function t(e){var r,o,i,a;return Vn().w(function(t){for(;;)switch(t.n){case 0:return r=e.payload,o=e.next,t.n=1,sn();case 1:i=t.v;try{a=Wn(i)}catch(n){console.error(n)}r.obj.context=n({},r.obj.context,{traits:n({},r.obj.context.traits,a)}),o(r);case 2:return t.a(2)}},t)}));return function(n){return t.apply(this,arguments)}}(),Un=[],zn=0;zn<64;)Un[zn]=0|4294967296*Math.sin(++zn%Math.PI);for(var Hn,Jn=18,$n=[],Xn=[];Jn>1;Jn--)for(Hn=Jn;Hn<320;)$n[Hn+=Jn]=1;function Yn(n,t){return 4294967296*Math.pow(n,1/t)|0}for(Hn=0;Hn<64;)$n[++Jn]||(Xn[Hn]=Yn(Jn,2),$n[Hn++]=Yn(Jn,3));function qn(n,t){return n>>>t|n<<-t}var Bn=/\.|\+.*$/g;function Kn(n){if("string"!=typeof n)return"";var t=(n=n.toLowerCase()).split(/@/);if(2!==t.length)return"";var e=t[0],r=t[1];return(e=e.replace(Bn,""))+"@"+r}function Qn(n){var t=Kn(n);return t?function(n){var t=Xn.slice(Jn=Hn=0,8),e=[],r=unescape(encodeURI(n))+"€",o=r.length;for(e[n=--o/4+2|15]=8*o;~o;)e[o>>2]|=r.charCodeAt(o)<<8*~o--;for(o=[];Jn<n;Jn+=16){for(Yn=t.slice();Hn<64;Yn.unshift(r+(qn(r=Yn[0],2)^qn(r,13)^qn(r,22))+(r&Yn[1]^Yn[1]&Yn[2]^Yn[2]&r)))Yn[3]+=r=0|(o[Hn]=Hn<16?~~e[Hn+Jn]:(qn(r=o[Hn-2],17)^qn(r,19)^r>>>10)+o[Hn-7]+(qn(r=o[Hn-15],7)^qn(r,18)^r>>>3)+o[Hn-16])+Yn.pop()+(qn(r=Yn[4],6)^qn(r,11)^qn(r,25))+(r&Yn[5]^~r&Yn[6])+$n[Hn++];for(Hn=8;Hn;)t[--Hn]+=Yn[Hn]}for(r="";Hn<64;)r+=(t[Hn>>3]>>4*(7-Hn++)&15).toString(16);return r}(t):""}var Zn,nt,tt=function(){var n=r("universalId");if(n)return et(),n;var t=r("userEmail");if(t)return n=Qn(t),rt(n),et(),n;et()},et=function(){o("universalIdInitialized",!0)},rt=function(n){return o("universalId",n)};e&&((Zn=fn())&&dn(Zn),function(){var n=fn();o("isFirstVisit",!n)}(),function(){if(r("initialized"))return!1;var n=!!window.__tcfapi;return!n&&console.warn("[tcfTracking] window.__tcfapi is not available on client and TCF won't be tracked."),n}()?(o("initialized",!0),window.__tcfapi("addEventListener",2,function(t,o){var i=t.eventStatus,a=t.purpose;if(!o)return Promise.resolve();if(i===en||i===tn){var c=a.consents,u=dn(c);if(i===en){var s={analytics:u.analytics,advertising:u.advertising};return!(e&&window.sessionStorage.getItem("didomi-migration"))&&function(t){t.eventId;var e=t.gdprPrivacy;return kn.track(rn,n({},Z,r("tcfTrackDefaultProperties")),{gdpr_privacy:e.analytics,gdpr_privacy_advertising:e.advertising})}({gdprPrivacy:s})}}})):void 0===(null==(nt=un.get())?void 0:nt.analytics)&&un.set({analytics:cn,advertising:cn}));try{!function(){if(e){var n=tt(),t=r("userEmail");c({eventName:"USER_DATA_READY",detail:{universalId:n,userEmail:t}})}}()}catch(Yn){console.error("[segment-wrapper] UniversalID couldn't be initialized")}var ot=function(){var n=r("experimentalPageDataMiddleware");window.analytics.addSourceMiddleware(Ln),window.analytics.addSourceMiddleware(Fn),window.analytics.addSourceMiddleware(Mn),window.analytics.addSourceMiddleware(Rn),window.analytics.addSourceMiddleware(y),n&&window.analytics.addSourceMiddleware(Cn)};if(e&&window.analytics){if(!s()){var it=r("googleAnalyticsMeasurementId"),at=r("googleAnalyticsDataLayer")||x,ct=r("googleAnalyticsConsentManagement");if(it){var ut=r("googleAnalyticsConfig");window[at]=window[at]||[],window.gtag=window.gtag||function(){window[at].push(arguments)},window.gtag("js",new Date),ct&&q(),window.gtag("config",it,n({cookie_prefix:"segment",send_page_view:!1},ut,L())),R().catch(function(n){console.error(n)})}}window.analytics.ready(function(){var n,t,e,r=null!=(n=null==(t=window.__SEGMENT_WRAPPER)?void 0:t.SEGMENT_ID_USER_WITHOUT_CONSENTS)?n:"anonymous_user";(null==window.analytics.user||null==(e=window.analytics.user())?void 0:e.anonymousId())===r&&window.analytics.setAnonymousId(null)}),window.analytics.addSourceMiddleware?ot():window.analytics.ready(ot)}const st=kn;var lt=window;lt.sui=lt.sui||{},lt.sui.analytics=lt.sui.analytics||st,lt.sui.analytics.getAdobeVisitorData=lt.sui.analytics.getAdobeVisitorData||function(){return Promise.resolve({trackingServer:"",version:""})},lt.sui.analytics.getAdobeMCVisitorID=lt.sui.analytics.getAdobeMCVisitorID||function(){return Promise.resolve("")}})();