New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@uniformdev/optimize-tracker

Package Overview
Dependencies
Maintainers
9
Versions
170
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@uniformdev/optimize-tracker - npm Package Compare versions

Comparing version 12.2.1-alpha.107 to 12.2.1-alpha.121

2

dist/index.esm.js

@@ -1,1 +0,1 @@

import{IntentTagStrength as I,Scope as k,SignalFrequency as ie,SignalType as we}from"@uniformdev/optimize-common";var ye={maxDecay:.95,daysInMonth:30},be=(i,t)=>Math.round((i-t)/(1e3*60*60*24)),Te=(i,t,e)=>{if(!t)return console.warn("[DecayByDay]: daysInMonth is not populated."),null;let r;return e?r=Math.min(e,i/t):r=i/t,1-r},Y=i=>{let t={...ye,...i};return r=>{if(!(r==null?void 0:r.updated)||!r.values)return Promise.resolve(void 0);let{updated:n,values:o}=r,a=t.today||new Date().valueOf(),s=be(a,n!=null?n:0),c=Te(s,t.daysInMonth,t.maxDecay),l={values:{},updated:0,strategy:"?",...r};return c===1?Promise.resolve(void 0):(Object.keys(o).forEach(u=>{var d,S;let g=o[u];typeof g=="number"&&(g=o[u]={str:g});let m=Number((S=(d=o[u])==null?void 0:d.str)!=null?S:0);c&&(l.values[u].str=m*c)}),Promise.resolve(l))}};import{IntentTagStrength as ke}from"@uniformdev/optimize-common";var Z=()=>{let i="cumulative";return({previousValue:e,valueToAdd:r})=>{let n={...e};return Object.keys(r).forEach(a=>{var c,l,u;let s=(c=r[a])==null?void 0:c.str;if(s===ke.Antimatter)delete n[a];else{let g=Number((u=(l=n[a])==null?void 0:l.str)!=null?u:0),m=Number(s!=null?s:0),d=g+m;d>0?n[a]={str:d}:delete n[a]}}),{values:n,strategy:i,updated:new Date().valueOf()}}};var M={error:3,warn:2,info:1,verbose:0},ee=(i,t)=>!(!i||i==="none"||M[i]!==void 0&&M[t]!==void 0&&M[t]<M[i]),z=">",F=(i,t)=>{if(i.includes(z)||t.includes(z))throw`"${z}" is a reserved enrichment character`;return`${i}${z}${t}`},te=i=>{let t=i.split(z);if(t.length===2)return{type:t[0],value:t[1]}},O=(i,t)=>{let e=te(t);if(!!e&&e.type===i)return e.value},re=()=>{if(!(typeof window=="undefined"||typeof document=="undefined"))return{cookies:document.cookie,url:window.location.href,userAgent:navigator.userAgent}};var L=(...i)=>{let t={};return i.forEach(e=>{Object.keys(e).forEach(r=>{t[r]||(t[r]={str:0});let n=e[r];n.str&&(t[r].str=Number(t[r].str)+Number(n.str))})}),t};var ne=(i,t)=>{let e=i!=null?i:{str:0},r=t!=null?t:{str:0};return{str:Number(e.str)-Number(r.str)}},x=(i,t)=>{let e={};return i||(i={}),t||(t={}),Object.keys(i).forEach(r=>{e[r]=ne(i[r],t[r])}),Object.keys(t).forEach(r=>{e[r]||(e[r]=ne(i[r],t[r]))}),Object.keys(e).forEach(r=>{e[r].str===0&&delete e[r]}),e};var D=(i,t)=>{let e=x(i,t);return!(Object.keys(e).length>0)};var j=i=>!i||Object.keys(i).length===0;var Ee=class{constructor(t){this._intentMappings=[];this._behaviorQueue=[];this._behaviorKeys={};this._events=[];this._listeners=[];this._testSettings=[];this._signalEvaluators={};this._initialized=!1;this._lastBroadcastScoring=void 0;var e,r;if(this._intentManifest=t.intentManifest,t.intentManifest&&this.addIntents(t.intentManifest.site.intents),this._plugins=t.plugins,this._storage=t.storage,this._scopeStrategies=t.scopes,this._scoringStrategy=(e=t.scoring)!=null?e:Z(),this._decayStrategy=(r=t.decay)!=null?r:Y(),this._serverState=this.getServerState(),t.testing){let n=Array.isArray(t.testing)?t.testing:[t.testing];this._testSettings.push(...n)}}async initialize(){var t,e;this.log({level:"info",message:"Received intent manifest",region:"initialize",intents:this._intentManifest}),await this.initializeScopes(),await this.loadPlugins(),this._signalEvaluators=this.loadSignalEvaluators(),(e=(t=this._storage.scopes).setScoringValueExternallyUpdatedCallback)==null||e.call(t,async()=>{await this.broadcastScoring()}),this._lastBroadcastScoring=void 0,this._initialized=!0}isInitialized(){return this._initialized}async getIntentStrength(t){let e=this.getScopeNames(t),r={};return await Promise.all(e.map(async o=>{let a=await this.readScoring(o);r[o]=a})),this.combineScoring(r)}async getIntentStrengthSingle(t,e){let r=await this.getIntentStrength(e);return r==null?void 0:r[t]}async addIntentStrength(t,e){let r=await this.readScoring(t);await this.applyScoringStrategy(t,r,e,1),await this.broadcastScoring()}async setIntentStrength(t,e){await this.applyScoringStrategy(t,void 0,e,1),await this.broadcastScoring()}async removeIntent(t,e){let r=this.getScopeNames(e==null?void 0:e.scope),n=typeof t=="string"?[t]:t,o=!1;return await Promise.all(r.map(async a=>{let s=await this._storage.scopes.getScoring(a);if(s){let c={},l=!1;Object.keys(s.values).map(u=>{t&&(n==null?void 0:n.indexOf(u))===-1?c[u]=s.values[u]:(l=!0,o=!0)}),l&&(await this.writeScoring(a,{...s,values:c},s),(e==null?void 0:e.quiet)||await this.broadcastScoring())}})),o}addScoringChangeListener(t){this._listeners.push(t)}removeScoringChangeListener(t){let e=this._listeners.indexOf(t);e>-1&&this._listeners.splice(e,1)}async reevaluateSignals(t){let e="reevaluateSignals";if(this.log({level:"verbose",message:"Signals reevaluating...",region:e}),!this._intentMappings||!this._intentMappings.length)return this.log({level:"warn",message:"Intents list is empty",region:e}),{signalMatches:{}};let r={};await Promise.all(this.getAllScopeStrategies().map(g=>g.get().then(m=>{m&&(r[m==null?void 0:m.type]=m)})));let n=Object.keys(this._behaviorKeys),o=n.length===0?this._behaviorQueue:[...this._behaviorQueue,...n.map(g=>this._behaviorKeys[g])],s=(await Promise.all(this._intentMappings.map(g=>this.reevaluateIntent({intent:g,scopes:r,requestContext:t,behaviorQueue:o})))).flatMap(g=>g),c=s.reduce((g,m)=>{var h;if(!m.statsScope||!m.statistics||!m.signal)return g;let d=m.statsScope.type,S=g[d]=(h=g[d])!=null?h:{};return S[m.signal.id]=m.statistics,g},{});await Promise.all(Object.keys(c).map(g=>{var m;return(m=this.getScopeStrategy(g))==null?void 0:m.save({...r[g],statistics:{...r[g].statistics||{},...c[g]}})}));let l=this.processSignalEvaluations(s),u=await this.applySignalEvaluationSummary(l);return await this.broadcastScoring(u),this.clearBehaviorQueue(),this.clearEventQueue(),this.log({level:"info",message:"Reevaluated signals",region:e,...u}),{scoring:u,signalMatches:Object.keys(l).reduce((g,m)=>(g[m]=l[m].matches,g),{})}}addBehaviorActivity(t,e){this.log({level:"verbose",region:"addBehaviorActivity",message:"Behavior activity added to queue",...t,sourceKey:e}),e?this._behaviorKeys[e]=t:this._behaviorQueue.push(t)}async addEvent(t,e){this._events.push(t),e&&e.quiet!==void 0&&e.quiet||await this.reevaluateSignals()}async getEnrichmentValues(t,e){if(!this.isKnownEnrichment(t))return;let n=await this.getIntentStrength(e==null?void 0:e.scope)||{};return Object.keys(n||{}).reduce((a,s)=>{let c=O(t,s);return c&&n[s].str&&(a[c]=Number(n[s].str||0)),a},{})}async addEnrichment(t,e){var c;let r=(e==null?void 0:e.scope)||k.Visitor,n=Array.isArray(t)?t:[t],o={},a={};for(let l of n)if(this.isKnownEnrichment(l.name)){let g=F(l.name,l.value);(e==null?void 0:e.clearValues)&&(a[l.name]=!0);let m=Number(((c=o[g])==null?void 0:c.str)||0);o[g]={str:m+(l.str||I.Normal)}}for(let l of Object.keys(a))await this.removeEnrichment(l,{scope:r,quiet:!0});let s=await this.readScoring(r);await this.applyScoringStrategy(r,s,o,n.length),(e==null?void 0:e.quiet)||await this.reevaluateSignals()}async removeEnrichment(t,e){let r=(e==null?void 0:e.scope)||k.Visitor,n=await this.getIntentStrength(r)||{},o=Object.keys(n||{}).filter(a=>{if(O(t,a))return a},{});await this.removeIntent(o,{scope:r,quiet:e==null?void 0:e.quiet})}trackPersonalization(t,e){var r;t&&((r=this._plugins)==null||r.track(n=>n(t,e)))}async isInPersonalizationControlGroup(t){var l;let{scope:e,sampleSize:r}=t||{},n=new Date,o=this._testSettings.find(u=>u.strategy&&(!u.endDate||u.endDate>n));if(!o)return!1;let a=e!=null?e:k.Visitor,s=await((l=this.getScopeStrategy(a))==null?void 0:l.get());return o.strategy.isInPersonalizationControlGroup(s,r)}getTestValue(t){var r,n,o,a,s,c;let e=(n=(r=this._intentManifest)==null?void 0:r.site.tests)==null?void 0:n.find(l=>l.name===t);return(e==null?void 0:e.winning_variation_id)?Promise.resolve(e.winning_variation_id):((a=(o=this._serverState)==null?void 0:o.tests)==null?void 0:a[t])?Promise.resolve((c=(s=this._serverState)==null?void 0:s.tests)==null?void 0:c[t]):this._storage.tests.getTestSelection(t)}setTestValue(t,e){var n,o;let r=(o=(n=this._intentManifest)==null?void 0:n.site.tests)==null?void 0:o.find(a=>a.name===t);return(r==null?void 0:r.winning_variation_id)?Promise.resolve():this._storage.tests.setTestSelection(t,e)}isTestEnabled(t){var r,n;return!!((n=(r=this._intentManifest)==null?void 0:r.site.tests)==null?void 0:n.find(o=>o.name===t))}async identify(t){var o;let e=(o=this._storage)==null?void 0:o.scopes.identify;if(!e){this.log({region:"identify",level:"warn",message:"Visitor was identified, but storage did not implement identification"});return}let r=await this._storage.scopes.getScoring(k.Visitor),n=await e(t);n&&(await this.writeScoring(k.Visitor,n,r),await this.broadcastScoring())}async forgetMe(t){await Promise.all([this._storage.scopes.delete(t),this._storage.tests.delete()]),this.log({level:"info",region:"forgetMe",message:`Visitor has been forgotten (allDevices: ${t})`}),await this.broadcastScoring()}log(t){var e;(e=this._plugins)==null||e.log(r=>r(t))}async reevaluateSignal({intent:t,scopes:e,signal:r,requestContext:n,behaviorQueue:o}){var P,y,V;let a="reevaluateSignal",s=await this.resolveFrequencyScope(r,e);if(!await this.determineIfSignalShouldEvaluate(r,s)){this.log({level:"info",message:`Signal ${r.id} will not evaluate`,region:a});return}let l=this._signalEvaluators[r.type];if(!l){this.log({level:"warn",message:`Signal ${r.type} not handled by any plugin. It will be ignored.`,region:a});return}!r.str&&r.str!==I.Antimatter&&(this.log({level:"warn",message:`Strength not defined on signal, setting strength to ${I.Normal}`,region:a}),r.str=I.Normal);let u=await this.resolveScope(r.scope,e),g=this.resolveSignalStorage(u,r),m={intent:t,signal:r,scope:u,statsScope:s},d={signal:r,intent:t,behaviors:o,state:g,requestContext:n||re(),events:this._events,log:this.log.bind(this)},{requestContext:S,log:h,...b}=d,_=l(d),v=await Promise.resolve(_);if(this.log({level:"verbose",message:`${r.type} Signal evaluation result: ${(v==null?void 0:v.strength)?v.strength:"no match"}`,region:a,signal:r,intent:t,result:v}),m.result=v,typeof v=="undefined")return m;if(r.id){let T=await this.resolveFrequencyScope(r,e);return T&&(m.statistics={...(P=T.statistics)==null?void 0:P[r.id],evaluations:(((V=(y=T.statistics)==null?void 0:y[r.id])==null?void 0:V.evaluations)||0)+1}),u&&r.id&&v.state&&(u.state.signals=u.state.signals||{},u.state.signals[r.id]=v.state),m}}async resolveFrequencyScope(t,e){let r=t.freq===ie.OncePerVisit?k.Visit:k.Visitor;return this.resolveScope(r,e)}determineIfSignalShouldEvaluate(t,e){var r,n;return t.id?!t.freq||t.freq===ie.Always||t.type===we.PageViewCount?!0:!((n=(r=e==null?void 0:e.statistics)==null?void 0:r[t.id])==null?void 0:n.evaluations):(this.log({level:"info",region:"determineIfSignalShouldEvaluate",message:"Signal ID is not populated"}),!1)}combineScoring(t){let e=Object.keys(t).map(r=>t[r]).filter(r=>r&&r.values).map(r=>r.values);return L(...e)}processSignalEvaluations(t){let e={};return t.forEach(r=>{let{signal:n,scope:o,result:a,intent:s}=r,{id:c}=s;if(o&&a&&(a.strength||a.strength===I.Antimatter)){let{score:l,matches:u}=e[o.type]=e[o.type]||{matches:[],score:{}},g=l[c]=l[c]||{str:0};g.str=Number(g.str)+Number(a.strength),u.push({intentId:c,signalStrength:a.strength,signalType:n.type})}}),this.log({level:"verbose",message:"Signal evaluation matches",region:"processSignalEvaluations",summary:e}),e}async reevaluateIntent({intent:t,scopes:e,requestContext:r,behaviorQueue:n}){let o="Reevaluate Intent",a=[],{id:s,signals:c}=t;return!c||c.length===0?this.log({level:"warn",message:`Intent ${s} does not define any signals.`,region:o}):await Promise.all(t.signals.map(async l=>{let u=await this.reevaluateSignal({intent:t,scopes:e,signal:l,requestContext:r,behaviorQueue:n});(u==null?void 0:u.result)&&a.push(u)})),a}clearBehaviorQueue(){let t=this._behaviorQueue.length,e=Object.keys(this._behaviorKeys).length;if(t||e){let r=this._behaviorQueue.splice(0,t),n=this._behaviorKeys;this._behaviorKeys={},this.log({level:"verbose",message:"Queue cleared",region:"clearBehaviorQueue",count:t+e,cleared:r,clearedKeys:n})}}clearEventQueue(){if(this._events.length){let t=this._events.splice(0,this._events.length);this.log({level:"verbose",message:"Clearing event queue",region:"clearEventQueue",count:t.length,cleared:t})}}async applySignalEvaluationSummary(t){let e="applySignalEvaluationSummary",r=this.getScopeNames(),n={};await Promise.all(r.map(async a=>{let{score:s,matches:c}=t[a]||{matches:[],score:{}},l=await this.readScoring(a);n[a]=await this.applyScoringStrategy(a,l,s,c.length)})),this.log({level:"verbose",message:"Scoring by scope",region:e,...n});let o=this.combineScoring(n);return this.log({level:"verbose",message:"Combined scope scoring",region:e,...o}),o}getServerState(){if(this._serverState)return this._serverState;if(typeof document=="undefined")return;let t=document.getElementById("__UNIFORM_DATA__");return(t==null?void 0:t.textContent)?JSON.parse(t.textContent):void 0}resolveSignalStorage(t,e){var o,a;let r="resolveSignalStorage",n=e.id?(o=t==null?void 0:t.state.signals)==null?void 0:o[e.id]:{};return e.id&&!((a=t==null?void 0:t.state.signals)==null?void 0:a[e.id])?this.log({level:"verbose",message:`Signal "${e.id}" is using default state`,region:r}):this.log({level:"verbose",message:`Signal "${e.id}" is using stored state`,region:r,...n}),n}async loadPlugins(){if(!this._plugins)return;let t=this._plugins.findPlugins("initialize");await Promise.all(t.map(e=>e.initialize({setIntentStrength:this.setIntentStrength.bind(this),log:this.log.bind(this),manifest:this._intentManifest})))}loadSignalEvaluators(){var e;return(((e=this._plugins)==null?void 0:e.find("signalEvaluatorMapping"))||[]).reduce((r,n)=>{let o=n();return Object.keys(o).forEach(a=>{r[a]&&this.log({level:"warn",region:"loadSignalEvaluators",message:`[Tracker]: Multiple plugins provided signal resolvers for ${a}`}),r[a]=o[a]}),r},{})}addIntents(t){let e=t.map(r=>{let{signals:n}=r;return{...r,signals:n.map(o=>{let{id:a}=o;return{...o,id:a!=null?a:`${r.id}:${JSON.stringify(o)}`}})}});this._intentMappings.push(...e)}async readScoring(t){let e=await this._storage.scopes.getScoring(t);if(e&&this._decayStrategy){let r={...e},n=await this._decayStrategy(e);typeof n!="undefined"&&(e=n),n&&this.log({level:"verbose",message:"Score decay has been applied",region:"readScoring",pre:r,post:e})}return e}getScopeStrategy(t){if(this._scopeStrategies)return this._scopeStrategies[t]}getAllScopeStrategies(){return this._scopeStrategies?Object.keys(this._scopeStrategies).map(t=>this._scopeStrategies[t]):[]}getScopeNames(t){return this._scopeStrategies?t&&this._scopeStrategies[t]?[t]:Object.keys(this._scopeStrategies):[]}async resolveScope(t,e){var a;let r="Resolve Scope",n=t||k.Visitor,o=e&&t?e[t]:await((a=this.getScopeStrategy(n))==null?void 0:a.get());return o||this.log({level:"warn",message:`Scope "${t}" returned null or undefined`,region:r}),(o==null?void 0:o.type)!==t&&typeof t!="undefined"&&this.log({level:"warn",message:`Scope "${t}" was requested, but "${o==null?void 0:o.type}" was resolved`,region:r}),o}async initializeScopes(){let t=this.getAllScopeStrategies();await Promise.all(t.map(e=>e.initialize({log:this.log.bind(this),storage:this._storage.scopes})))}applyScoringStrategy(t,e,r,n){let o=this._scoringStrategy({previousValue:(e==null?void 0:e.values)||{},valueToAdd:r,signalCount:n});return this.writeScoring(t,o,e)}async writeScoring(t,e,r){var s,c;let n="writeScoring",o;if(r&&(o=x(e.values,r.values),Object.keys(o).length===0))return this.log({level:"verbose",region:n,message:`Scoring update skipped for scope ${t}; values unchanged`}),e;this.log({level:"verbose",message:`${t} scoring has been updated`,region:n,...j(e.values)?{cleared:!0}:e.values});let a=(c=(s=this._scopeStrategies)==null?void 0:s[t])==null?void 0:c.getExpiration();return await this._storage.scopes.setScoring(e,t,a,r,o),e}async broadcastScoring(t){var r;let e=t||await this.getIntentStrength();if(!j(e)&&this._lastBroadcastScoring&&D(this._lastBroadcastScoring,e)){this.log({level:"verbose",region:"broadcastScoring",message:"Skipped broadcasting unchanged scoring",value:e});return}this._lastBroadcastScoring=e,(r=this._plugins)==null||r.scoringChange(n=>n(e||null)),this._listeners.forEach(n=>n(e||null))}isKnownEnrichment(t){var r,n;return!!((n=(r=this._intentManifest)==null?void 0:r.site.enrichments)==null?void 0:n.find(o=>o.name===t))}};import{MatchFilter as q}from"@uniformdev/optimize-tracker-common";import{getPersonalizationIntents as Pe}from"@uniformdev/optimize-common";function B(i){return Math.sqrt(Object.keys(i).reduce((t,e)=>{var r;return t+=Math.pow(Number((r=i[e].str)!=null?r:0),2)},0))}function oe(i){let t=i.reduce((r,n)=>{var o;return Math.max(r,(o=n.relevancy)!=null?o:0)},0);if(t===0)return;let e=1/t;i.forEach(r=>{typeof r.relevancy!="undefined"&&(r.relevancy=r.relevancy*e)})}var xe=({intentTag:i,intentScores:t})=>{if(!t||!i)return{isDefault:!0,score:0,tagStrength:0};let e=Pe(i);if(!e||Object.keys(e).length===0)return{isDefault:!0,score:0,tagStrength:0};let r={},n={};return Object.keys(i.intents).forEach(o=>{t[o]&&(r[o]=t[o],n[o]=i.intents[o])}),{score:B(r),isDefault:!1,tagStrength:B(n),matches:Object.keys(r)}},Re=(i,t)=>{var n,o,a,s,c,l;let e=Object.keys((a=(o=(n=i.item)==null?void 0:n.intentTag)==null?void 0:o.intents)!=null?a:{}).some(u=>{var g,m,d;return((g=i.matches)==null?void 0:g.includes(u))&&((d=(m=i.item)==null?void 0:m.intentTag)==null?void 0:d.intents[u].override)}),r=Object.keys((l=(c=(s=t.item)==null?void 0:s.intentTag)==null?void 0:c.intents)!=null?l:{}).some(u=>{var g,m,d;return((g=t.matches)==null?void 0:g.includes(u))&&((d=(m=t.item)==null?void 0:m.intentTag)==null?void 0:d.intents[u].override)});return e&&!r?-1:!e&&r?1:0},_e=(i,t)=>{var a,s;let e=t.relevancy-i.relevancy;if(e!==0)return e;let r=t.tagStrength-i.tagStrength;if(r!==0)return r;let n=Number(t.isDefault)-Number(i.isDefault);return n!==0?n:(((a=t.matches)==null?void 0:a.length)||0)-(((s=i.matches)==null?void 0:s.length)||0)},Ve=({list:i,intentScores:t,scorer:e,fallbackSort:r,analyticsEmitter:n,isInPersonalizationControlGroup:o,count:a,matchFilter:s="personalizedOrDefault"})=>{let c=!1,l=e!=null?e:xe,u=[],g={};i.forEach(d=>{var P;if((P=d.intentTag)==null?void 0:P.intents){let y=!0,V=d.intentTag.intents;if(Object.keys(V).forEach(T=>{var H,G,W,X;let $=V[T];if($.threshold){let he=(G=(H=t[T])==null?void 0:H.str)!=null?G:0;$.threshold>he&&(y=!1)}let J=g[T]=(W=g[T])!=null?W:{count:0,max:0};J.count++,y&&(J.max=Math.max((X=$.threshold)!=null?X:0,0))}),!y)return}let{score:S,tagStrength:h,isDefault:b,matches:_}=l({intentTag:d.intentTag,intentScores:t});S>0&&(c=!0);let v={item:d,matches:_,relevancy:S,tagStrength:h,isDefault:b};(s===q.PersonalizedOnly||s==="personalizedOnly")&&v.isDefault||(s===q.PersonalizedOnly||s==="personalizedOnly"||s===q.PersonalizedOrDefault||s==="personalizedOrDefault")&&v.relevancy===0&&!v.isDefault||u.push(v)}),oe(u),u=u.filter(d=>{var h;let S=(h=d.item.intentTag)==null?void 0:h.intents;return S?Object.keys(S).every(b=>{var y;let _=S[b],v=g[b];return v.count===1||v.max===0?!0:((y=_.threshold)!=null?y:0)===v.max}):!0}),c&&!o?u.sort((d,S)=>{let h=Re(d,S);if(h!==0)return h;let b=_e(d,S);return b===0&&r?r(d.item,S.item):b}):u.sort((d,S)=>d.isDefault===S.isDefault?r?r(d.item,S.item):0:Number(S.isDefault)>Number(d.isDefault)?1:-1);let m=u;if(typeof a=="number"&&a>0&&(m=m.slice(0,a)),n){let d=new Set(m.flatMap(S=>{var h;return(h=S.matches)!=null?h:[]}));n==null||n.personalization({matches:Array.from(d),isInPersonalizationControlGroup:o!=null?o:!1,intentScores:t})}return{result:m,personalized:!o&&c,intentScores:t}};var jt=(i="info")=>({name:"console-logger",onLogMessage:({level:t="verbose",message:e,...r})=>{if(!ee(i,t))return;let o="",a=console.log;t==="error"?(a=console.error,o=""):t==="warn"?(a=console.warn,o=""):t==="verbose"&&(o="font-size: 0.8em;");let s=`%c[Uniform] ${e}`;if(r){let{region:c,...l}=r;c&&(s=`%c[Uniform] [${c}] ${e}`),Object.keys(l).length>0?a(s,o,l):a(s,o)}else a(s,o)}});var ae=i=>Object.keys(i).reduce((t,e)=>(t[e]={str:i[e].str},t),{});import{isBehaviorSignal as ze,SignalType as se}from"@uniformdev/optimize-common";var Ie=({signal:i,behaviors:t,intent:e,log:r})=>{let n="behaviorSignalEvaluator";if(!ze(i)){r==null||r({level:"warn",message:"Signal is not a behavior signal",region:n});return}let{id:o}=e,a=i.str,s=0;if(t.forEach((c,l)=>{var g;let u=(g=c[o])==null?void 0:g.str;if(u&&a){let m=(Number(u)+Number(a))/2,d=m/t.length;r==null||r({level:"verbose",message:`Behavior [${l}] ${e.id} strength: ${d} - ((baseFromSignal + baseFromTag) / 2) / behQueueCount`,region:n,baseFromSignal:a,baseFromTag:u,baseTotal:m,behQueueCount:t.length,final:d}),s+=d}}),s===0){t.length>0&&(r==null||r({level:"verbose",message:`No pending behavior for intent '${o}'`,region:n,behaviors:t}));return}return t.length>1&&(r==null||r({level:"verbose",message:"Total Behavior Signal strength",region:n,resultStrength:s})),{strength:s}},Qt=()=>({name:`${se.Behavior}-signal`,signalEvaluatorMapping:()=>({[se.Behavior]:Ie})});import{isCookieSignal as Me,isStringMatch as Oe,SignalType as ce}from"@uniformdev/optimize-common";var Le=(i,t)=>{if(!t||!t.cookies)return;let r=`; ${t.cookies}`.split(`; ${i}=`);if(r.length===2)return r.pop().split(";").shift()},De=({signal:i,requestContext:t,log:e})=>{let r="cookieSignalEvaluator";if(!Me(i)){e==null||e({level:"warn",message:"Signal is not a cookie signal",region:r});return}let n=Le(i.parameter,t);if(!n){e==null||e({level:"verbose",message:`Cookie '${i.parameter}' value is not defined`,region:r});return}if(!Oe(n,i.value)){e==null||e({level:"verbose",message:"Cookie value does not match signal",region:r});return}return e==null||e({level:"verbose",message:"Cookie signal is a match",name:i.parameter,strength:i.str,region:r}),{strength:Number(i.str)}},Ht=()=>({name:`${ce.Cookie}-signal`,signalEvaluatorMapping:()=>({[ce.Cookie]:De})});import{isEventSignal as Ce,isStringMatch as Ne,SignalType as le}from"@uniformdev/optimize-common";var U=(i,t)=>!t||!t.expr?!0:i?Ne(i,t):!1,Ae=({signal:i,events:t,log:e})=>{let r="eventSignalEvaluator";if(!Ce(i)){e==null||e({level:"warn",message:"Signal is not an event signal",region:r});return}if(!t||!t.length){e==null||e({level:"verbose",message:"No events to process",region:r});return}let n=0,o=!1;if(t.forEach(a=>{let s=U(a.label,i.label),c=U(a.category,i.category),l=U(a.value,i.value);s&&c&&l&&(e==null||e({level:"info",message:"Event Match",region:r,event:a,signal:i}),n+=Number(i.str),o=!0)}),!o){e==null||e({level:"verbose",message:"No event matches",region:r,signal:i});return}return{strength:n}},Yt=()=>({name:`${le.Event}-signal`,signalEvaluatorMapping:()=>({[le.Event]:Ae})});import{isLandingPageSignal as $e,isStringMatch as Fe,SignalType as ue}from"@uniformdev/optimize-common";var je=async({signal:i,requestContext:t,log:e})=>{let r="landingPageSignalEvaluator";if(!$e(i)){e==null||e({level:"warn",message:"Signal is not an landing page signal",region:r});return}if(!t||!t.url){e==null||e({level:"verbose",message:"Request context not defined",region:r,requestContext:!!t,url:t==null?void 0:t.url});return}let n=new URL(t.url);e==null||e({level:"verbose",message:"Checking URL",region:r,url:n.toString(),criteria:i.path});let o;return Fe(n.pathname,i.path)?(e==null||e({level:"info",message:"URL is a match",region:r,url:n.toString(),criteria:i.path}),o=Number(i.str)):e==null||e({level:"info",message:"URL is not a match",region:r,url:n.toString(),criteria:i.path}),{strength:o}},tr=()=>({name:`${ue.LandingPage}-signal`,signalEvaluatorMapping:()=>({[ue.LandingPage]:je})});import{isPageViewCountSignal as Be,SignalType as ge}from"@uniformdev/optimize-common";var qe=({signal:i,state:t,log:e})=>{var c,l,u,g;let r="pageViewCountSignalEvaluator";if(!Be(i)){e==null||e({level:"warn",message:"Signal is not a page view count signal",region:r});return}let n=(c=t==null?void 0:t.pageCount)!=null?c:0;e==null||e({level:"warn",message:"Starting page count",region:r,pageCount:n});let o={state:{pageCount:n+1}};e==null||e({level:"verbose",message:"Incrementing page count",region:r,pageCount:(l=o.state)==null?void 0:l.pageCount});let a=(u=i==null?void 0:i.min)!=null?u:0,s=(g=i==null?void 0:i.max)!=null?g:Number.MAX_VALUE;return(s===0||isNaN(s))&&(s=Number.MAX_VALUE),e==null||e({level:"verbose",message:"Checking if page count is in range",region:r,min:a,max:s}),n>=a&&n<=s?(e==null||e({level:"info",message:"Is in range, setting strength",region:r,str:i.str}),o.strength=Number(i.str)):e==null||e({level:"verbose",message:"Is not in range, ignoring.",region:r,str:i.str}),o},ir=()=>({name:`${ge.PageViewCount}-signal`,signalEvaluatorMapping:()=>({[ge.PageViewCount]:qe})});import{isPageVisitedSignal as Ue,isStringMatch as Qe,SignalType as me}from"@uniformdev/optimize-common";var Ke=({signal:i,requestContext:t,log:e})=>{let r="pageVisitedSignalEvaluator";if(!Ue(i)){e==null||e({level:"warn",message:"Signal is not a page visited signal",region:r});return}if(!t||!t.url){e==null||e({level:"verbose",message:"Request context not defined",region:r,requestContext:!!t,url:t==null?void 0:t.url});return}let n=new URL(t.url);e==null||e({level:"verbose",message:"Checking URL",region:r,url:n.toString(),criteria:i.path});let o;if(Qe(n.pathname,i.path))e==null||e({level:"info",message:"URL is a match",region:r,url:n.toString(),criteria:i.path}),o=Number(i.str);else{e==null||e({level:"info",message:"URL is not a match",region:r,url:n.toString(),criteria:i.path});return}return{strength:o}},sr=()=>({name:`${me.PageVisited}-signal`,signalEvaluatorMapping:()=>({[me.PageVisited]:Ke})});import{isQueryStringSignal as Je,isStringMatch as He,SignalType as de}from"@uniformdev/optimize-common";var fe=({signal:i,requestContext:t,log:e})=>{let r="queryStringSignalEvaluator";if(!Je(i)){e==null||e({level:"warn",message:"Signal is not a query string signal",region:r});return}if(!t||!t.url){e==null||e({level:"verbose",message:"Request context not defined",region:r,requestContext:!!t,url:t==null?void 0:t.url});return}let n=new URL(t.url),o=n.searchParams.get(i.parameter);if(!o){e==null||e({level:"verbose",message:`Query string value '${i.parameter}' not defined`,region:r,url:n.toString()});return}if(!He(o,i.value)){e==null||e({level:"verbose",message:`Query string value '${i.parameter}' is not a match`,region:r,parameterValue:o,criteria:i.value});return}return e==null||e({level:"verbose",message:`Query string value '${i.parameter}' matches`,region:r,url:n.toString(),parameter:i.parameter}),{strength:Number(i.str)}},ur=()=>({name:`${de.QueryString}-signal`,signalEvaluatorMapping:()=>({[de.QueryString]:fe,UTM:fe})});var mr=({active:i,options:t})=>!i||typeof window=="undefined"?Ge():We(t),Ge=()=>({personalization:()=>!1,test:()=>!1}),We=({tracker:i,name:t})=>({personalization:({matches:e,isInPersonalizationControlGroup:r,intentScores:n})=>{if(!i||!i.isInitialized())return!1;let o=e&&e.length?e.join(", "):"Default";return i.trackPersonalization(t,{category:"Uniform Personalization",label:o,value:r?1:0,intentScores:n}),!0},test:({testName:e,testSelection:r})=>{if(!i||!i.isInitialized())return!1;let n=typeof document!="undefined"?document.title:"";return i.trackPersonalization(`${e} | ${n}`,{category:"Uniform AB Testing",label:r||"No Variant"}),!0}});var Xe=class{constructor(t){this._pluginMap=this.mapPlugins(t)}log(t){this.find("onLogMessage").forEach(r=>t(r))}track(t){this.find("track").forEach(r=>t(r))}async initialize(t){let r=this.find("initialize").map(n=>t(n));await Promise.all(r)}scoringChange(t){this.find("onScoringChange").forEach(r=>t(r))}mapPlugins(t){let e={};return t.forEach(r=>{Object.keys(r).forEach(n=>{e[n]=e[n]||[],e[n].push({plugin:r,function:r[n]})})}),e}findPlugins(t){return(this._pluginMap[t]||[]).map(r=>r.plugin)}find(t){return(this._pluginMap[t]||[]).map(r=>r.function)}};import{v4 as Ye}from"uuid";var pe="scopeStrategy",C=i=>{let t=()=>({id:Ye(),created:new Date().valueOf(),state:{},type:i.type,random:Math.random()}),e=a=>{if(typeof i.expirationMinutes=="undefined")return!1;let s=i.expirationMinutes*60*1e3,c=new Date().valueOf(),l=a.updated||a.created;return c-l>=s},{type:r}=i,n,o=()=>{};return{type:r,initialize:async({log:a,storage:s})=>{o=a,n=s},get:async()=>{if(!n)throw new Error("call initialize first");let a=await n.getScope(r);if(a&&e(a)&&(o({level:"info",region:pe,message:`Scope ${r} is expired, data cleared.`}),a=void 0),!a){o({level:"verbose",region:pe,message:`Creating scope ${r}`});let c=((i==null?void 0:i.createScope)||t)();return await n.setScope(c),c}return a},save:async a=>{if(!n)throw new Error("call initialize first");await n.setScope(a)},getExpiration:()=>i.expirationMinutes}};import{Scope as Ze}from"@uniformdev/optimize-common";var yr=i=>C({type:Ze.Visit,expirationMinutes:(i==null?void 0:i.expirationMinutes)||20});import{Scope as et}from"@uniformdev/optimize-common";var wr=()=>C({type:et.Visitor});var Pr=i=>{let t={},e={};return{id:"In-memory Scope Storage",delete:()=>(Object.keys(t).forEach(r=>{delete t[r]}),Object.keys(e).forEach(r=>{delete e[r]}),Promise.resolve()),getScope:r=>Promise.resolve(t[r]),setScope:r=>(t[r.type]=r,Promise.resolve()),getScoring:r=>(i==null?void 0:i.scoringStorage)?i.scoringStorage.getScoring(r):Promise.resolve(e[r]),setScoring:(r,n)=>((i==null?void 0:i.scoringStorage)&&i.scoringStorage.setScoring(r,n),e[n]=r,Promise.resolve())}};var Rr=()=>{let i={};return{id:"In-memory Test Storage",getTestSelection:t=>{let e=i[t];return Promise.resolve(e)},setTestSelection:(t,e)=>(typeof e=="undefined"?delete i[t]:i[t]=e,Promise.resolve()),delete:()=>(Object.keys(i).forEach(t=>{delete i[t]}),Promise.resolve())}};var E=async(i,t)=>{for(let e of i)try{let r=await t(e);if(r)return r}catch(r){console.error(r)}},w=async(i,t)=>{for(let e=0;e<i.length;e++){let r=i[e];try{e===0?await t(r):t(r).catch(n=>{console.error(n)})}catch(n){console.error(n)}}},R=async(i,t)=>{await Promise.all(i.map(e=>t(e)))};var Dr=({tiers:i})=>{let t=i,e=[],r;function n(o){return async(a,s)=>{let c=ae(s.values),l=s.updated;e.forEach(g=>{g.time<=s.updated||(g.time>l&&(l=g.time),c=L(c,g.diff))});let u={...s,updated:l,values:c};await Promise.all(o.map(g=>g.storage.setScoring(u,a))),await(r==null?void 0:r(a,u))}}return t.forEach((o,a)=>{var l,u;let s=i.slice(0,a),c=n(s);o.__callback=c,(u=(l=o.storage).setScoringValueExternallyUpdatedCallback)==null||u.call(l,c)}),{id:`Tiered (${i.map(o=>{var a,s;return(s=(a=o.storage)==null?void 0:a.id)!=null?s:"unknown"}).join(", ")})`,delete:async()=>{e=[],await R(i,o=>o.storage.delete())},getScope:async(...o)=>await E(i,a=>a.storage.getScope(...o)),setScope:async(...o)=>{await w(i,a=>a.storage.setScope(...o))},getScoring:async(...o)=>{let a;for(let s=0;s<i.length;s++){let c=t[s];if(a&&!c.loading)return a;if(!a||c.loading==="await"){let u=await c.storage.getScoring(...o);u&&(a=u);continue}let l=a;c.storage.getScoring(o[0]).then(u=>{if(u&&!D(l.values,u.values))return c.__callback(o[0],u)})}return a},setScoring:async(o,a,s,c,l)=>{var m;let u=x(o==null?void 0:o.values,c==null?void 0:c.values);Object.keys(u).length>0&&e.push({time:(m=o==null?void 0:o.updated)!=null?m:new Date().getTime(),diff:u}),await w(i,d=>d.storage.setScoring(o,a,s,c,l))},identify:async o=>{var c;let a=i.filter(l=>l.storage.identify);return a.length===0&&console.warn("Visitor was identified, but no storage tier implemented identification"),(c=(await Promise.all(a.map(l=>l.storage.identify(o)))).filter(l=>l))==null?void 0:c[0]},setScoringValueExternallyUpdatedCallback:o=>r=o}};import{Scope as N}from"@uniformdev/optimize-common";var Ar=({getCookie:i,setCookie:t})=>{let e=a=>JSON.parse(a),r=a=>JSON.stringify(a),n=a=>`uniform_trk_${a.toLocaleLowerCase()}_score`,o={[N.Visit]:n(N.Visit),[N.Visitor]:n(N.Visitor)};return{getScoring:a=>{let s,c=o[a];if(!c)throw new Error(`Unsupported cookie scope ${a}`);let l=i(c);return l&&(s=e(l)),Promise.resolve(s)},setScoring:(a,s,c)=>{let l=a?r(a):"",u=c?c*60:30*24*60*60,g=o[s];if(!g)throw new Error(`Unsupported cookie scope ${s}`);return t(g,l,u),Promise.resolve()},delete:async()=>(Object.keys(o).forEach(a=>{t(o[a],"",-1)}),Promise.resolve())}};var Q="uniform_trk_tests",Se=30*24*60*60,Fr=({getCookie:i,setCookie:t})=>{let e=n=>n?JSON.parse(n):void 0,r=()=>{let n,o=i(Q);return o&&(n=e(o)),n};return{id:"Cookie Test Storage",getTestSelection:n=>{let o=r(),a=o==null?void 0:o[n];return Promise.resolve(a)},setTestSelection:(n,o)=>{let s={...r(),[n]:o},c=JSON.stringify(s);return t(Q,c,Se),Promise.resolve()},delete:()=>(t(Q,"",Se),Promise.resolve())}};var qr=({storage:i})=>{let t;function e(r){return async(n,o,...a)=>{await Promise.all(r.map(s=>s.setScoring(o,n))),await(t==null?void 0:t(n,o,...a))}}return i.forEach((r,n)=>{var s;let o=i.slice(0,n),a=e(o);(s=r.setScoringValueExternallyUpdatedCallback)==null||s.call(r,a)}),{id:`Composite (${i.map(r=>{var n;return(n=r==null?void 0:r.id)!=null?n:"unknown"}).join(", ")})`,delete:async()=>{await R(i,r=>r.delete())},getScope:async(...r)=>await E(i,n=>n.getScope(...r)),setScope:async(...r)=>{await w(i,n=>n.setScope(...r))},getScoring:async(...r)=>await E(i,n=>n.getScoring(...r)),setScoring:async(...r)=>{await w(i,n=>n.setScoring(...r))},identify:async r=>{var a;let n=i.filter(s=>s.identify);return n.length===0&&console.warn("Visitor was identified, but no composite storage implements identification"),(a=(await Promise.all(n.map(s=>s.identify(r)))).filter(s=>s))==null?void 0:a[0]},setScoringValueExternallyUpdatedCallback:r=>t=r}};var Kr=({storage:i})=>({id:`Composite (${i.map(t=>t.id).join(", ")})`,getTestSelection:async(...t)=>await E(i,e=>e.getTestSelection(...t)),setTestSelection:async(...t)=>{await w(i,e=>e.setTestSelection(...t))},delete:async()=>{await R(i,t=>t.delete())}});var Hr=i=>{let t=(i==null?void 0:i.sampleSize)||0;return{isInPersonalizationControlGroup:(e,r)=>e?(typeof r!="undefined"?r:t)>e.random:!1}};import{Scope as ve}from"@uniformdev/optimize-common";import{ExtensionEvents as K,isExtensionSetScoreMessage as tt}from"@uniformdev/optimize-tracker-common";var A=typeof top!="undefined",on=i=>{let t,{disableEventListeners:e}=i||{};return e||A&&window.addEventListener("message",async r=>{if(!!r.data&&tt(r.data)){let n=r.data.score;n&&(console.warn("[Uniform] browser extension has set intent scores. Note that this sets all scores to the visit scope and clears any existing visitor values.",n),await(t==null?void 0:t.setIntentStrength(ve.Visitor,{})),await(t==null?void 0:t.setIntentStrength(ve.Visit,n)))}}),{name:"browser-extension",initialize:r=>{t=r,A&&(top==null||top.postMessage({type:K.Hello,manifest:r.manifest},window.location.origin))},onLogMessage:r=>{A&&(top==null||top.postMessage({type:K.Log,message:r},window.location.origin))},onScoringChange:r=>{!r||A&&(top==null||top.postMessage({type:K.Score,score:r},window.location.origin))}}};var rt=i=>{let{values:t,total:e,missingDistribution:r}=i.reduce((n,o)=>(o.distribution?n.total+=o.distribution:++n.missingDistribution,n.values.push(o.distribution),n),{values:[],total:0,missingDistribution:0});if(e>100)throw`Total distribution ${e} is over the maximum 100.`;if(e<100){let o=(100-e)/r;t.forEach((a,s)=>{typeof a=="undefined"&&(t[s]=o)})}return t},sn=({testName:i,variations:t,random:e,selectedVariantId:r,analyticsEmitter:n})=>{if(e>100||e<0)throw"Random must be between 0 and 100";let o;if(r&&(o=t.find(s=>s.id===r),o||console.warn("Previously selected variant is no longer present.")),!o){let s=rt(t),c=0;o=t.find((l,u)=>{let g=s[u];if(e>c&&e<=c+g)return l;c+=g})}let a=!1;return n==null||n.test({testName:i,testSelection:o==null?void 0:o.id}),{result:o,tracked:a}},cn=()=>Math.floor(Math.random()*100);export{We as AnalyticsEmitter,Ge as NoopAnalyticsEmitter,Xe as OptimizePluginLoader,Ee as OptimizeTracker,Q as TestCookieName,Se as TestExpiration,Qt as addBehaviorSignalPlugin,on as addBrowserExtension,jt as addConsoleLoggerPlugin,Ht as addCookieSignalPlugin,Yt as addEventSignalPlugin,tr as addLandingPageSignalPlugin,ir as addPageViewCountSignalPlugin,sr as addPageVisitedSignalPlugin,ur as addQueryStringSignalPlugin,Ie as behaviorSignalEvaluator,F as calculateEnrichmentIntentName,ae as cloneScore,L as combineScores,qr as compositeScopeStorage,Kr as compositeTestStorage,Ar as cookieScoringStorage,Fr as cookieTestStorage,Hr as createPercentageTestStrategy,yr as createVisitScopeStrategy,wr as createVisitorScopeStrategy,Z as cumulativeScoringStrategy,Y as decayByDayStrategy,x as diffScores,U as doesValueMatchEventProperty,Ae as eventSignalEvaluator,cn as generateRandom,O as getEnrichmentValue,Pr as inMemoryScopeStorage,Rr as inMemoryTestStorage,rt as normalizeVariationDistributions,te as parseEnrichment,Ve as personalizeList,mr as resolveAnalyticsEmitter,C as scopeStrategy,j as scoreIsEmpty,D as scoresAreEqual,sn as testList,Dr as tieredScopeStorage};
import{IntentTagStrength as M,Scope as k,SignalFrequency as ie,SignalType as we}from"@uniformdev/optimize-common";var ye={maxDecay:.95,daysInMonth:30},be=(i,t)=>Math.round((i-t)/(1e3*60*60*24)),Te=(i,t,e)=>{if(!t)return console.warn("[DecayByDay]: daysInMonth is not populated."),null;let r;return e?r=Math.min(e,i/t):r=i/t,1-r},Y=i=>{let t={...ye,...i};return r=>{if(!(r==null?void 0:r.updated)||!r.values)return Promise.resolve(void 0);let{updated:n,values:a}=r,s=t.today||new Date().valueOf(),o=be(s,n!=null?n:0),c=Te(o,t.daysInMonth,t.maxDecay),l={values:{},updated:0,strategy:"?",...r};return c===1?Promise.resolve(void 0):(Object.keys(a).forEach(u=>{var f,S;let g=a[u];typeof g=="number"&&(g=a[u]={str:g});let d=Number((S=(f=a[u])==null?void 0:f.str)!=null?S:0);c&&(l.values[u].str=d*c)}),Promise.resolve(l))}};import{IntentTagStrength as ke}from"@uniformdev/optimize-common";var Z=()=>{let i="cumulative";return({previousValue:e,valueToAdd:r})=>{let n={...e};return Object.keys(r).forEach(s=>{var c,l,u;let o=(c=r[s])==null?void 0:c.str;if(o===ke.Antimatter)delete n[s];else{let g=Number((u=(l=n[s])==null?void 0:l.str)!=null?u:0),d=Number(o!=null?o:0),f=g+d;f>0?n[s]={str:f}:delete n[s]}}),{values:n,strategy:i,updated:new Date().valueOf()}}};var O={error:3,warn:2,info:1,verbose:0},ee=(i,t)=>!(!i||i==="none"||O[i]!==void 0&&O[t]!==void 0&&O[t]<O[i]),I=">",F=(i,t)=>{if(i.includes(I)||t.includes(I))throw`"${I}" is a reserved enrichment character`;return`${i}${I}${t}`},te=i=>{let t=i.split(I);if(t.length===2)return{type:t[0],value:t[1]}},L=(i,t)=>{let e=te(t);if(!!e&&e.type===i)return e.value},re=()=>{if(!(typeof window=="undefined"||typeof document=="undefined"))return{cookies:document.cookie,url:window.location.href,userAgent:navigator.userAgent}};var C=(...i)=>{let t={};return i.forEach(e=>{Object.keys(e).forEach(r=>{t[r]||(t[r]={str:0});let n=e[r];n.str&&(t[r].str=Number(t[r].str)+Number(n.str))})}),t};var ne=(i,t)=>{let e=i!=null?i:{str:0},r=t!=null?t:{str:0};return{str:Number(e.str)-Number(r.str)}},x=(i,t)=>{let e={};return i||(i={}),t||(t={}),Object.keys(i).forEach(r=>{e[r]=ne(i[r],t[r])}),Object.keys(t).forEach(r=>{e[r]||(e[r]=ne(i[r],t[r]))}),Object.keys(e).forEach(r=>{e[r].str===0&&delete e[r]}),e};var D=(i,t)=>{let e=x(i,t);return!(Object.keys(e).length>0)};var j=i=>!i||Object.keys(i).length===0;var Ee=class{constructor(t){this._intentMappings=[];this._behaviorQueue=[];this._behaviorKeys={};this._events=[];this._listeners=[];this._testSettings=[];this._signalEvaluators={};this._initialized=!1;this._lastBroadcastScoring=void 0;var e,r;if(this._intentManifest=t.intentManifest,t.intentManifest&&this.addIntents(t.intentManifest.site.intents),this._plugins=t.plugins,this._storage=t.storage,this._scopeStrategies=t.scopes,this._scoringStrategy=(e=t.scoring)!=null?e:Z(),this._decayStrategy=(r=t.decay)!=null?r:Y(),this._serverState=this.getServerState(),t.testing){let n=Array.isArray(t.testing)?t.testing:[t.testing];this._testSettings.push(...n)}}async initialize(){var t,e;this.log({level:"info",message:"Received intent manifest",region:"initialize",intents:this._intentManifest}),await this.initializeScopes(),await this.loadPlugins(),this._signalEvaluators=this.loadSignalEvaluators(),(e=(t=this._storage.scopes).setScoringValueExternallyUpdatedCallback)==null||e.call(t,async()=>{await this.broadcastScoring()}),this._lastBroadcastScoring=void 0,this._initialized=!0}isInitialized(){return this._initialized}async getIntentStrength(t){let e=this.getScopeNames(t),r={};return await Promise.all(e.map(async a=>{let s=await this.readScoring(a);r[a]=s})),this.combineScoring(r)}async getIntentStrengthSingle(t,e){let r=await this.getIntentStrength(e);return r==null?void 0:r[t]}async addIntentStrength(t,e){let r=await this.readScoring(t);await this.applyScoringStrategy(t,r,e,1),await this.broadcastScoring()}async setIntentStrength(t,e){await this.applyScoringStrategy(t,void 0,e,1),await this.broadcastScoring()}async removeIntent(t,e){let r=this.getScopeNames(e==null?void 0:e.scope),n=typeof t=="string"?[t]:t,a=!1;return await Promise.all(r.map(async s=>{let o=await this._storage.scopes.getScoring(s);if(o){let c={},l=!1;Object.keys(o.values).map(u=>{t&&(n==null?void 0:n.indexOf(u))===-1?c[u]=o.values[u]:(l=!0,a=!0)}),l&&(await this.writeScoring(s,{...o,values:c},o),(e==null?void 0:e.quiet)||await this.broadcastScoring())}})),a}addScoringChangeListener(t){this._listeners.push(t)}removeScoringChangeListener(t){let e=this._listeners.indexOf(t);e>-1&&this._listeners.splice(e,1)}async reevaluateSignals(t){let e="reevaluateSignals";if(this.log({level:"verbose",message:"Signals reevaluating...",region:e}),!this._intentMappings||!this._intentMappings.length)return this.log({level:"warn",message:"Intents list is empty",region:e}),{signalMatches:{}};let r={};await Promise.all(this.getAllScopeStrategies().map(g=>g.get().then(d=>{d&&(r[d==null?void 0:d.type]=d)})));let n=Object.keys(this._behaviorKeys),a=n.length===0?this._behaviorQueue:[...this._behaviorQueue,...n.map(g=>this._behaviorKeys[g])],o=(await Promise.all(this._intentMappings.map(g=>this.reevaluateIntent({intent:g,scopes:r,requestContext:t,behaviorQueue:a})))).flatMap(g=>g),c=o.reduce((g,d)=>{var h;if(!d.statsScope||!d.statistics||!d.signal)return g;let f=d.statsScope.type,S=g[f]=(h=g[f])!=null?h:{};return S[d.signal.id]=d.statistics,g},{});await Promise.all(Object.keys(c).map(g=>{var d;return(d=this.getScopeStrategy(g))==null?void 0:d.save({...r[g],statistics:{...r[g].statistics||{},...c[g]}})}));let l=this.processSignalEvaluations(o),u=await this.applySignalEvaluationSummary(l);return await this.broadcastScoring(u),this.clearBehaviorQueue(),this.clearEventQueue(),this.log({level:"info",message:"Reevaluated signals",region:e,...u}),{scoring:u,signalMatches:Object.keys(l).reduce((g,d)=>(g[d]=l[d].matches,g),{})}}addBehaviorActivity(t,e){this.log({level:"verbose",region:"addBehaviorActivity",message:"Behavior activity added to queue",...t,sourceKey:e}),e?this._behaviorKeys[e]=t:this._behaviorQueue.push(t)}async addEvent(t,e){this._events.push(t),e&&e.quiet!==void 0&&e.quiet||await this.reevaluateSignals()}async getEnrichmentValues(t,e){if(!this.isKnownEnrichment(t))return;let n=await this.getIntentStrength(e==null?void 0:e.scope)||{};return Object.keys(n||{}).reduce((s,o)=>{let c=L(t,o);return c&&n[o].str&&(s[c]=Number(n[o].str||0)),s},{})}async addEnrichment(t,e){var c;let r=(e==null?void 0:e.scope)||k.Visitor,n=Array.isArray(t)?t:[t],a={},s={};for(let l of n)if(this.isKnownEnrichment(l.name)){let g=F(l.name,l.value);(e==null?void 0:e.clearValues)&&(s[l.name]=!0);let d=Number(((c=a[g])==null?void 0:c.str)||0);a[g]={str:d+(l.str||M.Normal)}}for(let l of Object.keys(s))await this.removeEnrichment(l,{scope:r,quiet:!0});let o=await this.readScoring(r);await this.applyScoringStrategy(r,o,a,n.length),(e==null?void 0:e.quiet)||await this.reevaluateSignals()}async removeEnrichment(t,e){let r=(e==null?void 0:e.scope)||k.Visitor,n=await this.getIntentStrength(r)||{},a=Object.keys(n||{}).filter(s=>{if(L(t,s))return s},{});await this.removeIntent(a,{scope:r,quiet:e==null?void 0:e.quiet})}trackPersonalization(t,e){var r;t&&((r=this._plugins)==null||r.track(n=>n(t,e)))}async isInPersonalizationControlGroup(t){var l;let{scope:e,sampleSize:r}=t||{},n=new Date,a=this._testSettings.find(u=>u.strategy&&(!u.endDate||u.endDate>n));if(!a)return!1;let s=e!=null?e:k.Visitor,o=await((l=this.getScopeStrategy(s))==null?void 0:l.get());return a.strategy.isInPersonalizationControlGroup(o,r)}getTestValue(t){var r,n,a,s,o,c;let e=(n=(r=this._intentManifest)==null?void 0:r.site.tests)==null?void 0:n.find(l=>l.name===t);return(e==null?void 0:e.winning_variation_id)?Promise.resolve(e.winning_variation_id):((s=(a=this._serverState)==null?void 0:a.tests)==null?void 0:s[t])?Promise.resolve((c=(o=this._serverState)==null?void 0:o.tests)==null?void 0:c[t]):this._storage.tests.getTestSelection(t)}setTestValue(t,e){var n,a;let r=(a=(n=this._intentManifest)==null?void 0:n.site.tests)==null?void 0:a.find(s=>s.name===t);return(r==null?void 0:r.winning_variation_id)?Promise.resolve():this._storage.tests.setTestSelection(t,e)}isTestEnabled(t){var r,n;return!!((n=(r=this._intentManifest)==null?void 0:r.site.tests)==null?void 0:n.find(a=>a.name===t))}async identify(t){var a;let e=(a=this._storage)==null?void 0:a.scopes.identify;if(!e){this.log({region:"identify",level:"warn",message:"Visitor was identified, but storage did not implement identification"});return}let r=await this._storage.scopes.getScoring(k.Visitor),n=await e(t);n&&(await this.writeScoring(k.Visitor,n,r),await this.broadcastScoring())}async forgetMe(t){await Promise.all([this._storage.scopes.delete(t),this._storage.tests.delete()]),this.log({level:"info",region:"forgetMe",message:`Visitor has been forgotten (allDevices: ${t})`}),await this.broadcastScoring()}log(t){var e;(e=this._plugins)==null||e.log(r=>r(t))}async reevaluateSignal({intent:t,scopes:e,signal:r,requestContext:n,behaviorQueue:a}){var P,y,V;let s="reevaluateSignal",o=await this.resolveFrequencyScope(r,e);if(!await this.determineIfSignalShouldEvaluate(r,o)){this.log({level:"info",message:`Signal ${r.id} will not evaluate`,region:s});return}let l=this._signalEvaluators[r.type];if(!l){this.log({level:"warn",message:`Signal ${r.type} not handled by any plugin. It will be ignored.`,region:s});return}!r.str&&r.str!==M.Antimatter&&(this.log({level:"warn",message:`Strength not defined on signal, setting strength to ${M.Normal}`,region:s}),r.str=M.Normal);let u=await this.resolveScope(r.scope,e),g=this.resolveSignalStorage(u,r),d={intent:t,signal:r,scope:u,statsScope:o},f={signal:r,intent:t,behaviors:a,state:g,requestContext:n||re(),events:this._events,log:this.log.bind(this)},{requestContext:S,log:h,...b}=f,_=l(f),v=await Promise.resolve(_);if(this.log({level:"verbose",message:`${r.type} Signal evaluation result: ${(v==null?void 0:v.strength)?v.strength:"no match"}`,region:s,signal:r,intent:t,result:v}),d.result=v,typeof v=="undefined")return d;if(r.id){let T=await this.resolveFrequencyScope(r,e);return T&&(d.statistics={...(P=T.statistics)==null?void 0:P[r.id],evaluations:(((V=(y=T.statistics)==null?void 0:y[r.id])==null?void 0:V.evaluations)||0)+1}),u&&r.id&&v.state&&(u.state.signals=u.state.signals||{},u.state.signals[r.id]=v.state),d}}async resolveFrequencyScope(t,e){let r=t.freq===ie.OncePerVisit?k.Visit:k.Visitor;return this.resolveScope(r,e)}determineIfSignalShouldEvaluate(t,e){var r,n;return t.id?!t.freq||t.freq===ie.Always||t.type===we.PageViewCount?!0:!((n=(r=e==null?void 0:e.statistics)==null?void 0:r[t.id])==null?void 0:n.evaluations):(this.log({level:"info",region:"determineIfSignalShouldEvaluate",message:"Signal ID is not populated"}),!1)}combineScoring(t){let e=Object.keys(t).map(r=>t[r]).filter(r=>r&&r.values).map(r=>r.values);return C(...e)}processSignalEvaluations(t){let e={};return t.forEach(r=>{let{signal:n,scope:a,result:s,intent:o}=r,{id:c}=o;if(a&&s&&(s.strength||s.strength===M.Antimatter)){let{score:l,matches:u}=e[a.type]=e[a.type]||{matches:[],score:{}},g=l[c]=l[c]||{str:0};g.str=Number(g.str)+Number(s.strength),u.push({intentId:c,signalStrength:s.strength,signalType:n.type})}}),this.log({level:"verbose",message:"Signal evaluation matches",region:"processSignalEvaluations",summary:e}),e}async reevaluateIntent({intent:t,scopes:e,requestContext:r,behaviorQueue:n}){let a="Reevaluate Intent",s=[],{id:o,signals:c}=t;return!c||c.length===0?this.log({level:"warn",message:`Intent ${o} does not define any signals.`,region:a}):await Promise.all(t.signals.map(async l=>{let u=await this.reevaluateSignal({intent:t,scopes:e,signal:l,requestContext:r,behaviorQueue:n});(u==null?void 0:u.result)&&s.push(u)})),s}clearBehaviorQueue(){let t=this._behaviorQueue.length,e=Object.keys(this._behaviorKeys).length;if(t||e){let r=this._behaviorQueue.splice(0,t),n=this._behaviorKeys;this._behaviorKeys={},this.log({level:"verbose",message:"Queue cleared",region:"clearBehaviorQueue",count:t+e,cleared:r,clearedKeys:n})}}clearEventQueue(){if(this._events.length){let t=this._events.splice(0,this._events.length);this.log({level:"verbose",message:"Clearing event queue",region:"clearEventQueue",count:t.length,cleared:t})}}async applySignalEvaluationSummary(t){let e="applySignalEvaluationSummary",r=this.getScopeNames(),n={};await Promise.all(r.map(async s=>{let{score:o,matches:c}=t[s]||{matches:[],score:{}},l=await this.readScoring(s);n[s]=await this.applyScoringStrategy(s,l,o,c.length)})),this.log({level:"verbose",message:"Scoring by scope",region:e,...n});let a=this.combineScoring(n);return this.log({level:"verbose",message:"Combined scope scoring",region:e,...a}),a}getServerState(){if(this._serverState)return this._serverState;if(typeof document=="undefined")return;let t=document.getElementById("__UNIFORM_DATA__");return(t==null?void 0:t.textContent)?JSON.parse(t.textContent):void 0}resolveSignalStorage(t,e){var a,s;let r="resolveSignalStorage",n=e.id?(a=t==null?void 0:t.state.signals)==null?void 0:a[e.id]:{};return e.id&&!((s=t==null?void 0:t.state.signals)==null?void 0:s[e.id])?this.log({level:"verbose",message:`Signal "${e.id}" is using default state`,region:r}):this.log({level:"verbose",message:`Signal "${e.id}" is using stored state`,region:r,...n}),n}async loadPlugins(){if(!this._plugins)return;let t=this._plugins.findPlugins("initialize");await Promise.all(t.map(e=>e.initialize({setIntentStrength:this.setIntentStrength.bind(this),log:this.log.bind(this),manifest:this._intentManifest})))}loadSignalEvaluators(){var e;return(((e=this._plugins)==null?void 0:e.find("signalEvaluatorMapping"))||[]).reduce((r,n)=>{let a=n();return Object.keys(a).forEach(s=>{r[s]&&this.log({level:"warn",region:"loadSignalEvaluators",message:`[Tracker]: Multiple plugins provided signal resolvers for ${s}`}),r[s]=a[s]}),r},{})}addIntents(t){let e=t.map(r=>{let{signals:n}=r;return{...r,signals:n.map(a=>{let{id:s}=a;return{...a,id:s!=null?s:`${r.id}:${JSON.stringify(a)}`}})}});this._intentMappings.push(...e)}async readScoring(t){let e=await this._storage.scopes.getScoring(t);if(e&&this._decayStrategy){let r={...e},n=await this._decayStrategy(e);typeof n!="undefined"&&(e=n),n&&this.log({level:"verbose",message:"Score decay has been applied",region:"readScoring",pre:r,post:e})}return e}getScopeStrategy(t){if(this._scopeStrategies)return this._scopeStrategies[t]}getAllScopeStrategies(){return this._scopeStrategies?Object.keys(this._scopeStrategies).map(t=>this._scopeStrategies[t]):[]}getScopeNames(t){return this._scopeStrategies?t&&this._scopeStrategies[t]?[t]:Object.keys(this._scopeStrategies):[]}async resolveScope(t,e){var s;let r="Resolve Scope",n=t||k.Visitor,a=e&&t?e[t]:await((s=this.getScopeStrategy(n))==null?void 0:s.get());return a||this.log({level:"warn",message:`Scope "${t}" returned null or undefined`,region:r}),(a==null?void 0:a.type)!==t&&typeof t!="undefined"&&this.log({level:"warn",message:`Scope "${t}" was requested, but "${a==null?void 0:a.type}" was resolved`,region:r}),a}async initializeScopes(){let t=this.getAllScopeStrategies();await Promise.all(t.map(e=>e.initialize({log:this.log.bind(this),storage:this._storage.scopes})))}applyScoringStrategy(t,e,r,n){let a=this._scoringStrategy({previousValue:(e==null?void 0:e.values)||{},valueToAdd:r,signalCount:n});return this.writeScoring(t,a,e)}async writeScoring(t,e,r){var o,c;let n="writeScoring",a;if(r&&(a=x(e.values,r.values),Object.keys(a).length===0))return this.log({level:"verbose",region:n,message:`Scoring update skipped for scope ${t}; values unchanged`}),e;this.log({level:"verbose",message:`${t} scoring has been updated`,region:n,...j(e.values)?{cleared:!0}:e.values});let s=(c=(o=this._scopeStrategies)==null?void 0:o[t])==null?void 0:c.getExpiration();return await this._storage.scopes.setScoring(e,t,s,r,a),e}async broadcastScoring(t){var r;let e=t||await this.getIntentStrength();if(!j(e)&&this._lastBroadcastScoring&&D(this._lastBroadcastScoring,e)){this.log({level:"verbose",region:"broadcastScoring",message:"Skipped broadcasting unchanged scoring",value:e});return}this._lastBroadcastScoring=e,(r=this._plugins)==null||r.scoringChange(n=>n(e||null)),this._listeners.forEach(n=>n(e||null))}isKnownEnrichment(t){var r,n;return!!((n=(r=this._intentManifest)==null?void 0:r.site.enrichments)==null?void 0:n.find(a=>a.name===t))}};import{MatchFilter as U}from"@uniformdev/optimize-tracker-common";import{getPersonalizationIntents as Pe}from"@uniformdev/optimize-common";function B(i){return Math.sqrt(Object.keys(i).reduce((t,e)=>{var r;return t+=Math.pow(Number((r=i[e].str)!=null?r:0),2)},0))}function ae(i){let t=i.reduce((r,n)=>{var a;return Math.max(r,(a=n.relevancy)!=null?a:0)},0);if(t===0)return;let e=1/t;i.forEach(r=>{typeof r.relevancy!="undefined"&&(r.relevancy=r.relevancy*e)})}var xe=({intentTag:i,intentScores:t})=>{if(!t||!i)return{isDefault:!0,score:0,tagStrength:0};let e=Pe(i);if(!e||Object.keys(e).length===0)return{isDefault:!0,score:0,tagStrength:0};let r={},n={};return Object.keys(i.intents).forEach(a=>{t[a]&&(r[a]=t[a],n[a]=i.intents[a])}),{score:B(r),isDefault:!1,tagStrength:B(n),matches:Object.keys(r)}},Re=(i,t)=>{var n,a,s,o,c,l;let e=Object.keys((s=(a=(n=i.item)==null?void 0:n.intentTag)==null?void 0:a.intents)!=null?s:{}).some(u=>{var g,d,f;return((g=i.matches)==null?void 0:g.includes(u))&&((f=(d=i.item)==null?void 0:d.intentTag)==null?void 0:f.intents[u].override)}),r=Object.keys((l=(c=(o=t.item)==null?void 0:o.intentTag)==null?void 0:c.intents)!=null?l:{}).some(u=>{var g,d,f;return((g=t.matches)==null?void 0:g.includes(u))&&((f=(d=t.item)==null?void 0:d.intentTag)==null?void 0:f.intents[u].override)});return e&&!r?-1:!e&&r?1:0},_e=(i,t)=>{var s,o;let e=t.relevancy-i.relevancy;if(e!==0)return e;let r=t.tagStrength-i.tagStrength;if(r!==0)return r;let n=Number(t.isDefault)-Number(i.isDefault);return n!==0?n:(((s=t.matches)==null?void 0:s.length)||0)-(((o=i.matches)==null?void 0:o.length)||0)},Ve=({list:i,intentScores:t,scorer:e,fallbackSort:r,analyticsEmitter:n,isInPersonalizationControlGroup:a,count:s,matchFilter:o="personalizedOrDefault"})=>{let c=!1,l=e!=null?e:xe,u=[],g={};i.forEach(f=>{var P;if((P=f.intentTag)==null?void 0:P.intents){let y=!0,V=f.intentTag.intents;if(Object.keys(V).forEach(T=>{var H,G,W,X;let $=V[T];if($.threshold){let he=(G=(H=t[T])==null?void 0:H.str)!=null?G:0;$.threshold>he&&(y=!1)}let J=g[T]=(W=g[T])!=null?W:{count:0,max:0};J.count++,y&&(J.max=Math.max((X=$.threshold)!=null?X:0,0))}),!y)return}let{score:S,tagStrength:h,isDefault:b,matches:_}=l({intentTag:f.intentTag,intentScores:t});S>0&&(c=!0);let v={item:f,matches:_,relevancy:S,tagStrength:h,isDefault:b};(o===U.PersonalizedOnly||o==="personalizedOnly")&&v.isDefault||(o===U.PersonalizedOnly||o==="personalizedOnly"||o===U.PersonalizedOrDefault||o==="personalizedOrDefault")&&v.relevancy===0&&!v.isDefault||u.push(v)}),ae(u),u=u.filter(f=>{var h;let S=(h=f.item.intentTag)==null?void 0:h.intents;return S?Object.keys(S).every(b=>{var y;let _=S[b],v=g[b];return v.count===1||v.max===0?!0:((y=_.threshold)!=null?y:0)===v.max}):!0}),c&&!a?u.sort((f,S)=>{let h=Re(f,S);if(h!==0)return h;let b=_e(f,S);return b===0&&r?r(f.item,S.item):b}):u.sort((f,S)=>f.isDefault===S.isDefault?r?r(f.item,S.item):0:Number(S.isDefault)>Number(f.isDefault)?1:-1);let d=u;if(typeof s=="number"&&s>0&&(d=d.slice(0,s)),n){let f=new Set(d.flatMap(S=>{var h;return(h=S.matches)!=null?h:[]}));n==null||n.personalization({matches:Array.from(f),isInPersonalizationControlGroup:a!=null?a:!1,intentScores:t})}return{result:d,personalized:!a&&c,intentScores:t}};var jt=(i="info")=>({name:"console-logger",onLogMessage:({level:t="verbose",message:e,...r})=>{if(!ee(i,t))return;let a="",s=console.log;t==="error"?(s=console.error,a=""):t==="warn"?(s=console.warn,a=""):t==="verbose"&&(a="font-size: 0.8em;");let o=`%c[Uniform] ${e}`;if(r){let{region:c,...l}=r;c&&(o=`%c[Uniform] [${c}] ${e}`),Object.keys(l).length>0?s(o,a,l):s(o,a)}else s(o,a)}});var se=i=>Object.keys(i).reduce((t,e)=>(t[e]={str:i[e].str},t),{});import{isBehaviorSignal as Ie,SignalType as oe}from"@uniformdev/optimize-common";var Me=({signal:i,behaviors:t,intent:e,log:r})=>{let n="behaviorSignalEvaluator";if(!Ie(i)){r==null||r({level:"warn",message:"Signal is not a behavior signal",region:n});return}let{id:a}=e,s=i.str,o=0;if(t.forEach((c,l)=>{var g;let u=(g=c[a])==null?void 0:g.str;if(u&&s){let d=(Number(u)+Number(s))/2,f=d/t.length;r==null||r({level:"verbose",message:`Behavior [${l}] ${e.id} strength: ${f} - ((baseFromSignal + baseFromTag) / 2) / behQueueCount`,region:n,baseFromSignal:s,baseFromTag:u,baseTotal:d,behQueueCount:t.length,final:f}),o+=f}}),o===0){t.length>0&&(r==null||r({level:"verbose",message:`No pending behavior for intent '${a}'`,region:n,behaviors:t}));return}return t.length>1&&(r==null||r({level:"verbose",message:"Total Behavior Signal strength",region:n,resultStrength:o})),{strength:o}},Qt=()=>({name:`${oe.Behavior}-signal`,signalEvaluatorMapping:()=>({[oe.Behavior]:Me})});import{isCookieSignal as Oe,isStringMatch as Le,SignalType as ce}from"@uniformdev/optimize-common";var Ce=(i,t)=>{if(!t||!t.cookies)return;let r=`; ${t.cookies}`.split(`; ${i}=`);if(r.length===2)return r.pop().split(";").shift()},De=({signal:i,requestContext:t,log:e})=>{let r="cookieSignalEvaluator";if(!Oe(i)){e==null||e({level:"warn",message:"Signal is not a cookie signal",region:r});return}let n=Ce(i.parameter,t);if(!n){e==null||e({level:"verbose",message:`Cookie '${i.parameter}' value is not defined`,region:r});return}if(!Le(n,i.value)){e==null||e({level:"verbose",message:"Cookie value does not match signal",region:r});return}return e==null||e({level:"verbose",message:"Cookie signal is a match",name:i.parameter,strength:i.str,region:r}),{strength:Number(i.str)}},Ht=()=>({name:`${ce.Cookie}-signal`,signalEvaluatorMapping:()=>({[ce.Cookie]:De})});import{isEventSignal as ze,isStringMatch as Ne,SignalType as le}from"@uniformdev/optimize-common";var q=(i,t)=>!t||!t.expr?!0:i?Ne(i,t):!1,Ae=({signal:i,events:t,log:e})=>{let r="eventSignalEvaluator";if(!ze(i)){e==null||e({level:"warn",message:"Signal is not an event signal",region:r});return}if(!t||!t.length){e==null||e({level:"verbose",message:"No events to process",region:r});return}let n=0,a=!1;if(t.forEach(s=>{let o=q(s.label,i.label),c=q(s.category,i.category),l=q(s.value,i.value);o&&c&&l&&(e==null||e({level:"info",message:"Event Match",region:r,event:s,signal:i}),n+=Number(i.str),a=!0)}),!a){e==null||e({level:"verbose",message:"No event matches",region:r,signal:i});return}return{strength:n}},Yt=()=>({name:`${le.Event}-signal`,signalEvaluatorMapping:()=>({[le.Event]:Ae})});import{isLandingPageSignal as $e,isStringMatch as Fe,SignalType as ue}from"@uniformdev/optimize-common";var je=async({signal:i,requestContext:t,log:e})=>{let r="landingPageSignalEvaluator";if(!$e(i)){e==null||e({level:"warn",message:"Signal is not an landing page signal",region:r});return}if(!t||!t.url){e==null||e({level:"verbose",message:"Request context not defined",region:r,requestContext:!!t,url:t==null?void 0:t.url});return}let n=new URL(t.url);e==null||e({level:"verbose",message:"Checking URL",region:r,url:n.toString(),criteria:i.path});let a;return Fe(n.pathname,i.path)?(e==null||e({level:"info",message:"URL is a match",region:r,url:n.toString(),criteria:i.path}),a=Number(i.str)):e==null||e({level:"info",message:"URL is not a match",region:r,url:n.toString(),criteria:i.path}),{strength:a}},tr=()=>({name:`${ue.LandingPage}-signal`,signalEvaluatorMapping:()=>({[ue.LandingPage]:je})});import{isPageViewCountSignal as Be,SignalType as ge}from"@uniformdev/optimize-common";var Ue=({signal:i,state:t,log:e})=>{var c,l,u,g;let r="pageViewCountSignalEvaluator";if(!Be(i)){e==null||e({level:"warn",message:"Signal is not a page view count signal",region:r});return}let n=(c=t==null?void 0:t.pageCount)!=null?c:0;e==null||e({level:"warn",message:"Starting page count",region:r,pageCount:n});let a={state:{pageCount:n+1}};e==null||e({level:"verbose",message:"Incrementing page count",region:r,pageCount:(l=a.state)==null?void 0:l.pageCount});let s=(u=i==null?void 0:i.min)!=null?u:0,o=(g=i==null?void 0:i.max)!=null?g:Number.MAX_VALUE;return(o===0||isNaN(o))&&(o=Number.MAX_VALUE),e==null||e({level:"verbose",message:"Checking if page count is in range",region:r,min:s,max:o}),n>=s&&n<=o?(e==null||e({level:"info",message:"Is in range, setting strength",region:r,str:i.str}),a.strength=Number(i.str)):e==null||e({level:"verbose",message:"Is not in range, ignoring.",region:r,str:i.str}),a},ir=()=>({name:`${ge.PageViewCount}-signal`,signalEvaluatorMapping:()=>({[ge.PageViewCount]:Ue})});import{isPageVisitedSignal as qe,isStringMatch as Qe,SignalType as de}from"@uniformdev/optimize-common";var Ke=({signal:i,requestContext:t,log:e})=>{let r="pageVisitedSignalEvaluator";if(!qe(i)){e==null||e({level:"warn",message:"Signal is not a page visited signal",region:r});return}if(!t||!t.url){e==null||e({level:"verbose",message:"Request context not defined",region:r,requestContext:!!t,url:t==null?void 0:t.url});return}let n=new URL(t.url);e==null||e({level:"verbose",message:"Checking URL",region:r,url:n.toString(),criteria:i.path});let a;if(Qe(n.pathname,i.path))e==null||e({level:"info",message:"URL is a match",region:r,url:n.toString(),criteria:i.path}),a=Number(i.str);else{e==null||e({level:"info",message:"URL is not a match",region:r,url:n.toString(),criteria:i.path});return}return{strength:a}},or=()=>({name:`${de.PageVisited}-signal`,signalEvaluatorMapping:()=>({[de.PageVisited]:Ke})});import{isQueryStringSignal as Je,isStringMatch as He,SignalType as fe}from"@uniformdev/optimize-common";var pe=({signal:i,requestContext:t,log:e})=>{let r="queryStringSignalEvaluator";if(!Je(i)){e==null||e({level:"warn",message:"Signal is not a query string signal",region:r});return}if(!t||!t.url){e==null||e({level:"verbose",message:"Request context not defined",region:r,requestContext:!!t,url:t==null?void 0:t.url});return}let n=new URL(t.url),a=n.searchParams.get(i.parameter);if(!a){e==null||e({level:"verbose",message:`Query string value '${i.parameter}' not defined`,region:r,url:n.toString()});return}if(!He(a,i.value)){e==null||e({level:"verbose",message:`Query string value '${i.parameter}' is not a match`,region:r,parameterValue:a,criteria:i.value});return}return e==null||e({level:"verbose",message:`Query string value '${i.parameter}' matches`,region:r,url:n.toString(),parameter:i.parameter}),{strength:Number(i.str)}},ur=()=>({name:`${fe.QueryString}-signal`,signalEvaluatorMapping:()=>({[fe.QueryString]:pe,UTM:pe})});var dr=({active:i,options:t})=>!i||typeof window=="undefined"?Ge():We(t),Ge=()=>({personalization:()=>!1,test:()=>!1}),We=({tracker:i,name:t})=>({personalization:({matches:e,isInPersonalizationControlGroup:r,intentScores:n})=>{if(!i||!i.isInitialized())return!1;let a=e&&e.length?e.join(", "):"Default";return i.trackPersonalization(t,{category:"Uniform Personalization",label:a,value:r?1:0,intentScores:n}),!0},test:({testName:e,testSelection:r})=>{if(!i||!i.isInitialized())return!1;let n=typeof document!="undefined"?document.title:"";return i.trackPersonalization(`${e} | ${n}`,{category:"Uniform AB Testing",label:r||"No Variant"}),!0}});var Xe=class{constructor(t){this._pluginMap=this.mapPlugins(t)}log(t){this.find("onLogMessage").forEach(r=>t(r))}track(t){this.find("track").forEach(r=>t(r))}async initialize(t){let r=this.find("initialize").map(n=>t(n));await Promise.all(r)}scoringChange(t){this.find("onScoringChange").forEach(r=>t(r))}mapPlugins(t){let e={};return t.forEach(r=>{Object.keys(r).forEach(n=>{e[n]=e[n]||[],e[n].push({plugin:r,function:r[n]})})}),e}findPlugins(t){return(this._pluginMap[t]||[]).map(r=>r.plugin)}find(t){return(this._pluginMap[t]||[]).map(r=>r.function)}};import{v4 as Ye}from"uuid";var me="scopeStrategy",z=i=>{let t=()=>({id:Ye(),created:new Date().valueOf(),state:{},type:i.type,random:Math.random()}),e=s=>{if(typeof i.expirationMinutes=="undefined")return!1;let o=i.expirationMinutes*60*1e3,c=new Date().valueOf(),l=s.updated||s.created;return c-l>=o},{type:r}=i,n,a=()=>{};return{type:r,initialize:async({log:s,storage:o})=>{a=s,n=o},get:async()=>{if(!n)throw new Error("call initialize first");let s=await n.getScope(r);if(s&&e(s)&&(a({level:"info",region:me,message:`Scope ${r} is expired, data cleared.`}),s=void 0),!s){a({level:"verbose",region:me,message:`Creating scope ${r}`});let c=((i==null?void 0:i.createScope)||t)();return await n.setScope(c),c}return s},save:async s=>{if(!n)throw new Error("call initialize first");await n.setScope(s)},getExpiration:()=>i.expirationMinutes}};import{Scope as Ze}from"@uniformdev/optimize-common";var yr=i=>z({type:Ze.Visit,expirationMinutes:(i==null?void 0:i.expirationMinutes)||20});import{Scope as et}from"@uniformdev/optimize-common";var wr=()=>z({type:et.Visitor});var Pr=i=>{let t={},e={};return{id:"In-memory Scope Storage",delete:()=>(Object.keys(t).forEach(r=>{delete t[r]}),Object.keys(e).forEach(r=>{delete e[r]}),Promise.resolve()),getScope:r=>Promise.resolve(t[r]),setScope:r=>(t[r.type]=r,Promise.resolve()),getScoring:r=>(i==null?void 0:i.scoringStorage)?i.scoringStorage.getScoring(r):Promise.resolve(e[r]),setScoring:(r,n)=>((i==null?void 0:i.scoringStorage)&&i.scoringStorage.setScoring(r,n),e[n]=r,Promise.resolve())}};var Rr=()=>{let i={};return{id:"In-memory Test Storage",getTestSelection:t=>{let e=i[t];return Promise.resolve(e)},setTestSelection:(t,e)=>(typeof e=="undefined"?delete i[t]:i[t]=e,Promise.resolve()),delete:()=>(Object.keys(i).forEach(t=>{delete i[t]}),Promise.resolve())}};var E=async(i,t)=>{for(let e of i)try{let r=await t(e);if(r)return r}catch(r){console.error(r)}},w=async(i,t)=>{for(let e=0;e<i.length;e++){let r=i[e];try{e===0?await t(r):t(r).catch(n=>{console.error(n)})}catch(n){console.error(n)}}},R=async(i,t)=>{await Promise.all(i.map(e=>t(e)))};var Dr=({tiers:i})=>{let t=i,e=[],r;function n(a){return async(s,o)=>{let c=se(o.values),l=o.updated;e.forEach(g=>{g.time<=o.updated||(g.time>l&&(l=g.time),c=C(c,g.diff))});let u={...o,updated:l,values:c};await Promise.all(a.map(g=>g.storage.setScoring(u,s))),await(r==null?void 0:r(s,u))}}return t.forEach((a,s)=>{var l,u;let o=i.slice(0,s),c=n(o);a.__callback=c,(u=(l=a.storage).setScoringValueExternallyUpdatedCallback)==null||u.call(l,c)}),{id:`Tiered (${i.map(a=>{var s,o;return(o=(s=a.storage)==null?void 0:s.id)!=null?o:"unknown"}).join(", ")})`,delete:async()=>{e=[],await R(i,a=>a.storage.delete())},getScope:async(...a)=>await E(i,s=>s.storage.getScope(...a)),setScope:async(...a)=>{await w(i,s=>s.storage.setScope(...a))},getScoring:async(...a)=>{let s;for(let o=0;o<i.length;o++){let c=t[o];if(s&&!c.loading)return s;if(!s||c.loading==="await"){let u=await c.storage.getScoring(...a);u&&(s=u);continue}let l=s;c.storage.getScoring(a[0]).then(u=>{if(u&&!D(l.values,u.values))return c.__callback(a[0],u)})}return s},setScoring:async(a,s,o,c,l)=>{var d;let u=x(a==null?void 0:a.values,c==null?void 0:c.values);Object.keys(u).length>0&&e.push({time:(d=a==null?void 0:a.updated)!=null?d:new Date().getTime(),diff:u}),await w(i,f=>f.storage.setScoring(a,s,o,c,l))},identify:async a=>{var c;let s=i.filter(l=>l.storage.identify);return s.length===0&&console.warn("Visitor was identified, but no storage tier implemented identification"),(c=(await Promise.all(s.map(l=>l.storage.identify(a)))).filter(l=>l))==null?void 0:c[0]},setScoringValueExternallyUpdatedCallback:a=>r=a}};import{Scope as N}from"@uniformdev/optimize-common";var Ar=({getCookie:i,setCookie:t})=>{let e=s=>JSON.parse(s),r=s=>JSON.stringify(s),n=s=>`uniform_trk_${s.toLocaleLowerCase()}_score`,a={[N.Visit]:n(N.Visit),[N.Visitor]:n(N.Visitor)};return{getScoring:s=>{let o,c=a[s];if(!c)throw new Error(`Unsupported cookie scope ${s}`);let l=i(c);return l&&(o=e(l)),Promise.resolve(o)},setScoring:(s,o,c)=>{let l=s?r(s):"",u=c?c*60:30*24*60*60,g=a[o];if(!g)throw new Error(`Unsupported cookie scope ${o}`);return t(g,l,u),Promise.resolve()},delete:async()=>(Object.keys(a).forEach(s=>{t(a[s],"",-1)}),Promise.resolve())}};var Q="uniform_trk_tests",Se=30*24*60*60,Fr=({getCookie:i,setCookie:t})=>{let e=n=>n?JSON.parse(n):void 0,r=()=>{let n,a=i(Q);return a&&(n=e(a)),n};return{id:"Cookie Test Storage",getTestSelection:n=>{let a=r(),s=a==null?void 0:a[n];return Promise.resolve(s)},setTestSelection:(n,a)=>{let o={...r(),[n]:a},c=JSON.stringify(o);return t(Q,c,Se),Promise.resolve()},delete:()=>(t(Q,"",Se),Promise.resolve())}};var Ur=({storage:i})=>{let t;function e(r){return async(n,a,...s)=>{await Promise.all(r.map(o=>o.setScoring(a,n))),await(t==null?void 0:t(n,a,...s))}}return i.forEach((r,n)=>{var o;let a=i.slice(0,n),s=e(a);(o=r.setScoringValueExternallyUpdatedCallback)==null||o.call(r,s)}),{id:`Composite (${i.map(r=>{var n;return(n=r==null?void 0:r.id)!=null?n:"unknown"}).join(", ")})`,delete:async()=>{await R(i,r=>r.delete())},getScope:async(...r)=>await E(i,n=>n.getScope(...r)),setScope:async(...r)=>{await w(i,n=>n.setScope(...r))},getScoring:async(...r)=>await E(i,n=>n.getScoring(...r)),setScoring:async(...r)=>{await w(i,n=>n.setScoring(...r))},identify:async r=>{var s;let n=i.filter(o=>o.identify);return n.length===0&&console.warn("Visitor was identified, but no composite storage implements identification"),(s=(await Promise.all(n.map(o=>o.identify(r)))).filter(o=>o))==null?void 0:s[0]},setScoringValueExternallyUpdatedCallback:r=>t=r}};var Kr=({storage:i})=>({id:`Composite (${i.map(t=>t.id).join(", ")})`,getTestSelection:async(...t)=>await E(i,e=>e.getTestSelection(...t)),setTestSelection:async(...t)=>{await w(i,e=>e.setTestSelection(...t))},delete:async()=>{await R(i,t=>t.delete())}});var Hr=i=>{let t=(i==null?void 0:i.sampleSize)||0;return{isInPersonalizationControlGroup:(e,r)=>e?(typeof r!="undefined"?r:t)>e.random:!1}};import{Scope as ve}from"@uniformdev/optimize-common";import{ExtensionEvents as K,isExtensionSetScoreMessage as tt}from"@uniformdev/optimize-tracker-common";var A=typeof top!="undefined",an=i=>{let t,{disableEventListeners:e}=i||{};return e||A&&window.addEventListener("message",async r=>{if(!!r.data&&tt(r.data)){let n=r.data.score;n&&(console.warn("[Uniform] browser extension has set intent scores. Note that this sets all scores to the visit scope and clears any existing visitor values.",n),await(t==null?void 0:t.setIntentStrength(ve.Visitor,{})),await(t==null?void 0:t.setIntentStrength(ve.Visit,n)))}}),{name:"browser-extension",initialize:r=>{t=r,A&&(top==null||top.postMessage({type:K.Hello,manifest:r.manifest},window.location.origin))},onLogMessage:r=>{A&&(top==null||top.postMessage({type:K.Log,message:r},window.location.origin))},onScoringChange:r=>{!r||A&&(top==null||top.postMessage({type:K.Score,score:r},window.location.origin))}}};var rt=i=>{let{values:t,total:e,missingDistribution:r}=i.reduce((n,a)=>(a.distribution?n.total+=a.distribution:++n.missingDistribution,n.values.push(a.distribution),n),{values:[],total:0,missingDistribution:0});if(e>100)throw`Total distribution ${e} is over the maximum 100.`;if(e<100){let a=(100-e)/r;t.forEach((s,o)=>{typeof s=="undefined"&&(t[o]=a)})}return t},on=({testName:i,variations:t,random:e,selectedVariantId:r,analyticsEmitter:n})=>{if(e>100||e<0)throw"Random must be between 0 and 100";let a;if(r&&(a=t.find(o=>o.id===r),a||console.warn("Previously selected variant is no longer present.")),!a){let o=rt(t),c=0;a=t.find((l,u)=>{let g=o[u];if(e>c&&e<=c+g)return l;c+=g})}let s=!1;return n==null||n.test({testName:i,testSelection:a==null?void 0:a.id}),{result:a,tracked:s}},cn=()=>Math.floor(Math.random()*100);export{We as AnalyticsEmitter,Ge as NoopAnalyticsEmitter,Xe as OptimizePluginLoader,Ee as OptimizeTracker,Q as TestCookieName,Se as TestExpiration,Qt as addBehaviorSignalPlugin,an as addBrowserExtension,jt as addConsoleLoggerPlugin,Ht as addCookieSignalPlugin,Yt as addEventSignalPlugin,tr as addLandingPageSignalPlugin,ir as addPageViewCountSignalPlugin,or as addPageVisitedSignalPlugin,ur as addQueryStringSignalPlugin,Me as behaviorSignalEvaluator,F as calculateEnrichmentIntentName,se as cloneScore,C as combineScores,Ur as compositeScopeStorage,Kr as compositeTestStorage,Ar as cookieScoringStorage,Fr as cookieTestStorage,Hr as createPercentageTestStrategy,yr as createVisitScopeStrategy,wr as createVisitorScopeStrategy,Z as cumulativeScoringStrategy,Y as decayByDayStrategy,x as diffScores,q as doesValueMatchEventProperty,Ae as eventSignalEvaluator,cn as generateRandom,L as getEnrichmentValue,Pr as inMemoryScopeStorage,Rr as inMemoryTestStorage,rt as normalizeVariationDistributions,te as parseEnrichment,Ve as personalizeList,dr as resolveAnalyticsEmitter,z as scopeStrategy,j as scoreIsEmpty,D as scoresAreEqual,on as testList,Dr as tieredScopeStorage};

@@ -1,1 +0,1 @@

var Me=Object.create;var U=Object.defineProperty;var Oe=Object.getOwnPropertyDescriptor;var Le=Object.getOwnPropertyNames;var De=Object.getPrototypeOf,Ce=Object.prototype.hasOwnProperty;var ge=n=>U(n,"__esModule",{value:!0});var Ne=(n,t)=>{ge(n);for(var e in t)U(n,e,{get:t[e],enumerable:!0})},Ae=(n,t,e)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of Le(t))!Ce.call(n,r)&&r!=="default"&&U(n,r,{get:()=>t[r],enumerable:!(e=Oe(t,r))||e.enumerable});return n},h=n=>Ae(ge(U(n!=null?Me(De(n)):{},"default",n&&n.__esModule&&"default"in n?{get:()=>n.default,enumerable:!0}:{value:n,enumerable:!0})),n);Ne(exports,{AnalyticsEmitter:()=>Ee,NoopAnalyticsEmitter:()=>we,OptimizePluginLoader:()=>Pe,OptimizeTracker:()=>Se,TestCookieName:()=>W,TestExpiration:()=>ie,addBehaviorSignalPlugin:()=>Ke,addBrowserExtension:()=>pt,addConsoleLoggerPlugin:()=>Qe,addCookieSignalPlugin:()=>Ge,addEventSignalPlugin:()=>We,addLandingPageSignalPlugin:()=>Ye,addPageViewCountSignalPlugin:()=>et,addPageVisitedSignalPlugin:()=>rt,addQueryStringSignalPlugin:()=>nt,behaviorSignalEvaluator:()=>be,calculateEnrichmentIntentName:()=>K,cloneScore:()=>ne,combineScores:()=>A,compositeScopeStorage:()=>mt,compositeTestStorage:()=>dt,cookieScoringStorage:()=>ut,cookieTestStorage:()=>gt,createPercentageTestStrategy:()=>ft,createVisitScopeStrategy:()=>ot,createVisitorScopeStrategy:()=>at,cumulativeScoringStrategy:()=>ee,decayByDayStrategy:()=>Z,diffScores:()=>E,doesValueMatchEventProperty:()=>G,eventSignalEvaluator:()=>Te,generateRandom:()=>vt,getEnrichmentValue:()=>N,inMemoryScopeStorage:()=>st,inMemoryTestStorage:()=>ct,normalizeVariationDistributions:()=>ze,parseEnrichment:()=>te,personalizeList:()=>ye,resolveAnalyticsEmitter:()=>it,scopeStrategy:()=>B,scoreIsEmpty:()=>J,scoresAreEqual:()=>$,testList:()=>St,tieredScopeStorage:()=>lt});var S=h(require("@uniformdev/optimize-common"));var $e={maxDecay:.95,daysInMonth:30},Fe=(n,t)=>Math.round((n-t)/(1e3*60*60*24)),je=(n,t,e)=>{if(!t)return console.warn("[DecayByDay]: daysInMonth is not populated."),null;let r;return e?r=Math.min(e,n/t):r=n/t,1-r},Z=n=>{let t={...$e,...n};return r=>{if(!(r==null?void 0:r.updated)||!r.values)return Promise.resolve(void 0);let{updated:i,values:o}=r,a=t.today||new Date().valueOf(),s=Fe(a,i!=null?i:0),c=je(s,t.daysInMonth,t.maxDecay),l={values:{},updated:0,strategy:"?",...r};return c===1?Promise.resolve(void 0):(Object.keys(o).forEach(u=>{var d,p;let g=o[u];typeof g=="number"&&(g=o[u]={str:g});let m=Number((p=(d=o[u])==null?void 0:d.str)!=null?p:0);c&&(l.values[u].str=m*c)}),Promise.resolve(l))}};var me=h(require("@uniformdev/optimize-common")),ee=()=>{let n="cumulative";return({previousValue:e,valueToAdd:r})=>{let i={...e};return Object.keys(r).forEach(a=>{var c,l,u;let s=(c=r[a])==null?void 0:c.str;if(s===me.IntentTagStrength.Antimatter)delete i[a];else{let g=Number((u=(l=i[a])==null?void 0:l.str)!=null?u:0),m=Number(s!=null?s:0),d=g+m;d>0?i[a]={str:d}:delete i[a]}}),{values:i,strategy:n,updated:new Date().valueOf()}}};var Q={error:3,warn:2,info:1,verbose:0},de=(n,t)=>!(!n||n==="none"||Q[n]!==void 0&&Q[t]!==void 0&&Q[t]<Q[n]),C=">",K=(n,t)=>{if(n.includes(C)||t.includes(C))throw`"${C}" is a reserved enrichment character`;return`${n}${C}${t}`},te=n=>{let t=n.split(C);if(t.length===2)return{type:t[0],value:t[1]}},N=(n,t)=>{let e=te(t);if(!!e&&e.type===n)return e.value},fe=()=>{if(!(typeof window=="undefined"||typeof document=="undefined"))return{cookies:document.cookie,url:window.location.href,userAgent:navigator.userAgent}};var A=(...n)=>{let t={};return n.forEach(e=>{Object.keys(e).forEach(r=>{t[r]||(t[r]={str:0});let i=e[r];i.str&&(t[r].str=Number(t[r].str)+Number(i.str))})}),t};var pe=(n,t)=>{let e=n!=null?n:{str:0},r=t!=null?t:{str:0};return{str:Number(e.str)-Number(r.str)}},E=(n,t)=>{let e={};return n||(n={}),t||(t={}),Object.keys(n).forEach(r=>{e[r]=pe(n[r],t[r])}),Object.keys(t).forEach(r=>{e[r]||(e[r]=pe(n[r],t[r]))}),Object.keys(e).forEach(r=>{e[r].str===0&&delete e[r]}),e};var $=(n,t)=>{let e=E(n,t);return!(Object.keys(e).length>0)};var J=n=>!n||Object.keys(n).length===0;var Se=class{constructor(t){this._intentMappings=[];this._behaviorQueue=[];this._behaviorKeys={};this._events=[];this._listeners=[];this._testSettings=[];this._signalEvaluators={};this._initialized=!1;this._lastBroadcastScoring=void 0;var e,r;if(this._intentManifest=t.intentManifest,t.intentManifest&&this.addIntents(t.intentManifest.site.intents),this._plugins=t.plugins,this._storage=t.storage,this._scopeStrategies=t.scopes,this._scoringStrategy=(e=t.scoring)!=null?e:ee(),this._decayStrategy=(r=t.decay)!=null?r:Z(),this._serverState=this.getServerState(),t.testing){let i=Array.isArray(t.testing)?t.testing:[t.testing];this._testSettings.push(...i)}}async initialize(){var t,e;this.log({level:"info",message:"Received intent manifest",region:"initialize",intents:this._intentManifest}),await this.initializeScopes(),await this.loadPlugins(),this._signalEvaluators=this.loadSignalEvaluators(),(e=(t=this._storage.scopes).setScoringValueExternallyUpdatedCallback)==null||e.call(t,async()=>{await this.broadcastScoring()}),this._lastBroadcastScoring=void 0,this._initialized=!0}isInitialized(){return this._initialized}async getIntentStrength(t){let e=this.getScopeNames(t),r={};return await Promise.all(e.map(async o=>{let a=await this.readScoring(o);r[o]=a})),this.combineScoring(r)}async getIntentStrengthSingle(t,e){let r=await this.getIntentStrength(e);return r==null?void 0:r[t]}async addIntentStrength(t,e){let r=await this.readScoring(t);await this.applyScoringStrategy(t,r,e,1),await this.broadcastScoring()}async setIntentStrength(t,e){await this.applyScoringStrategy(t,void 0,e,1),await this.broadcastScoring()}async removeIntent(t,e){let r=this.getScopeNames(e==null?void 0:e.scope),i=typeof t=="string"?[t]:t,o=!1;return await Promise.all(r.map(async a=>{let s=await this._storage.scopes.getScoring(a);if(s){let c={},l=!1;Object.keys(s.values).map(u=>{t&&(i==null?void 0:i.indexOf(u))===-1?c[u]=s.values[u]:(l=!0,o=!0)}),l&&(await this.writeScoring(a,{...s,values:c},s),(e==null?void 0:e.quiet)||await this.broadcastScoring())}})),o}addScoringChangeListener(t){this._listeners.push(t)}removeScoringChangeListener(t){let e=this._listeners.indexOf(t);e>-1&&this._listeners.splice(e,1)}async reevaluateSignals(t){let e="reevaluateSignals";if(this.log({level:"verbose",message:"Signals reevaluating...",region:e}),!this._intentMappings||!this._intentMappings.length)return this.log({level:"warn",message:"Intents list is empty",region:e}),{signalMatches:{}};let r={};await Promise.all(this.getAllScopeStrategies().map(g=>g.get().then(m=>{m&&(r[m==null?void 0:m.type]=m)})));let i=Object.keys(this._behaviorKeys),o=i.length===0?this._behaviorQueue:[...this._behaviorQueue,...i.map(g=>this._behaviorKeys[g])],s=(await Promise.all(this._intentMappings.map(g=>this.reevaluateIntent({intent:g,scopes:r,requestContext:t,behaviorQueue:o})))).flatMap(g=>g),c=s.reduce((g,m)=>{var y;if(!m.statsScope||!m.statistics||!m.signal)return g;let d=m.statsScope.type,p=g[d]=(y=g[d])!=null?y:{};return p[m.signal.id]=m.statistics,g},{});await Promise.all(Object.keys(c).map(g=>{var m;return(m=this.getScopeStrategy(g))==null?void 0:m.save({...r[g],statistics:{...r[g].statistics||{},...c[g]}})}));let l=this.processSignalEvaluations(s),u=await this.applySignalEvaluationSummary(l);return await this.broadcastScoring(u),this.clearBehaviorQueue(),this.clearEventQueue(),this.log({level:"info",message:"Reevaluated signals",region:e,...u}),{scoring:u,signalMatches:Object.keys(l).reduce((g,m)=>(g[m]=l[m].matches,g),{})}}addBehaviorActivity(t,e){this.log({level:"verbose",region:"addBehaviorActivity",message:"Behavior activity added to queue",...t,sourceKey:e}),e?this._behaviorKeys[e]=t:this._behaviorQueue.push(t)}async addEvent(t,e){this._events.push(t),e&&e.quiet!==void 0&&e.quiet||await this.reevaluateSignals()}async getEnrichmentValues(t,e){if(!this.isKnownEnrichment(t))return;let i=await this.getIntentStrength(e==null?void 0:e.scope)||{};return Object.keys(i||{}).reduce((a,s)=>{let c=N(t,s);return c&&i[s].str&&(a[c]=Number(i[s].str||0)),a},{})}async addEnrichment(t,e){var c;let r=(e==null?void 0:e.scope)||S.Scope.Visitor,i=Array.isArray(t)?t:[t],o={},a={};for(let l of i)if(this.isKnownEnrichment(l.name)){let g=K(l.name,l.value);(e==null?void 0:e.clearValues)&&(a[l.name]=!0);let m=Number(((c=o[g])==null?void 0:c.str)||0);o[g]={str:m+(l.str||S.IntentTagStrength.Normal)}}for(let l of Object.keys(a))await this.removeEnrichment(l,{scope:r,quiet:!0});let s=await this.readScoring(r);await this.applyScoringStrategy(r,s,o,i.length),(e==null?void 0:e.quiet)||await this.reevaluateSignals()}async removeEnrichment(t,e){let r=(e==null?void 0:e.scope)||S.Scope.Visitor,i=await this.getIntentStrength(r)||{},o=Object.keys(i||{}).filter(a=>{if(N(t,a))return a},{});await this.removeIntent(o,{scope:r,quiet:e==null?void 0:e.quiet})}trackPersonalization(t,e){var r;t&&((r=this._plugins)==null||r.track(i=>i(t,e)))}async isInPersonalizationControlGroup(t){var l;let{scope:e,sampleSize:r}=t||{},i=new Date,o=this._testSettings.find(u=>u.strategy&&(!u.endDate||u.endDate>i));if(!o)return!1;let a=e!=null?e:S.Scope.Visitor,s=await((l=this.getScopeStrategy(a))==null?void 0:l.get());return o.strategy.isInPersonalizationControlGroup(s,r)}getTestValue(t){var r,i,o,a,s,c;let e=(i=(r=this._intentManifest)==null?void 0:r.site.tests)==null?void 0:i.find(l=>l.name===t);return(e==null?void 0:e.winning_variation_id)?Promise.resolve(e.winning_variation_id):((a=(o=this._serverState)==null?void 0:o.tests)==null?void 0:a[t])?Promise.resolve((c=(s=this._serverState)==null?void 0:s.tests)==null?void 0:c[t]):this._storage.tests.getTestSelection(t)}setTestValue(t,e){var i,o;let r=(o=(i=this._intentManifest)==null?void 0:i.site.tests)==null?void 0:o.find(a=>a.name===t);return(r==null?void 0:r.winning_variation_id)?Promise.resolve():this._storage.tests.setTestSelection(t,e)}isTestEnabled(t){var r,i;return!!((i=(r=this._intentManifest)==null?void 0:r.site.tests)==null?void 0:i.find(o=>o.name===t))}async identify(t){var o;let e=(o=this._storage)==null?void 0:o.scopes.identify;if(!e){this.log({region:"identify",level:"warn",message:"Visitor was identified, but storage did not implement identification"});return}let r=await this._storage.scopes.getScoring(S.Scope.Visitor),i=await e(t);i&&(await this.writeScoring(S.Scope.Visitor,i,r),await this.broadcastScoring())}async forgetMe(t){await Promise.all([this._storage.scopes.delete(t),this._storage.tests.delete()]),this.log({level:"info",region:"forgetMe",message:`Visitor has been forgotten (allDevices: ${t})`}),await this.broadcastScoring()}log(t){var e;(e=this._plugins)==null||e.log(r=>r(t))}async reevaluateSignal({intent:t,scopes:e,signal:r,requestContext:i,behaviorQueue:o}){var I,b,D;let a="reevaluateSignal",s=await this.resolveFrequencyScope(r,e);if(!await this.determineIfSignalShouldEvaluate(r,s)){this.log({level:"info",message:`Signal ${r.id} will not evaluate`,region:a});return}let l=this._signalEvaluators[r.type];if(!l){this.log({level:"warn",message:`Signal ${r.type} not handled by any plugin. It will be ignored.`,region:a});return}!r.str&&r.str!==S.IntentTagStrength.Antimatter&&(this.log({level:"warn",message:`Strength not defined on signal, setting strength to ${S.IntentTagStrength.Normal}`,region:a}),r.str=S.IntentTagStrength.Normal);let u=await this.resolveScope(r.scope,e),g=this.resolveSignalStorage(u,r),m={intent:t,signal:r,scope:u,statsScope:s},d={signal:r,intent:t,behaviors:o,state:g,requestContext:i||fe(),events:this._events,log:this.log.bind(this)},{requestContext:p,log:y,...T}=d,L=l(d),v=await Promise.resolve(L);if(this.log({level:"verbose",message:`${r.type} Signal evaluation result: ${(v==null?void 0:v.strength)?v.strength:"no match"}`,region:a,signal:r,intent:t,result:v}),m.result=v,typeof v=="undefined")return m;if(r.id){let k=await this.resolveFrequencyScope(r,e);return k&&(m.statistics={...(I=k.statistics)==null?void 0:I[r.id],evaluations:(((D=(b=k.statistics)==null?void 0:b[r.id])==null?void 0:D.evaluations)||0)+1}),u&&r.id&&v.state&&(u.state.signals=u.state.signals||{},u.state.signals[r.id]=v.state),m}}async resolveFrequencyScope(t,e){let r=t.freq===S.SignalFrequency.OncePerVisit?S.Scope.Visit:S.Scope.Visitor;return this.resolveScope(r,e)}determineIfSignalShouldEvaluate(t,e){var r,i;return t.id?!t.freq||t.freq===S.SignalFrequency.Always||t.type===S.SignalType.PageViewCount?!0:!((i=(r=e==null?void 0:e.statistics)==null?void 0:r[t.id])==null?void 0:i.evaluations):(this.log({level:"info",region:"determineIfSignalShouldEvaluate",message:"Signal ID is not populated"}),!1)}combineScoring(t){let e=Object.keys(t).map(r=>t[r]).filter(r=>r&&r.values).map(r=>r.values);return A(...e)}processSignalEvaluations(t){let e={};return t.forEach(r=>{let{signal:i,scope:o,result:a,intent:s}=r,{id:c}=s;if(o&&a&&(a.strength||a.strength===S.IntentTagStrength.Antimatter)){let{score:l,matches:u}=e[o.type]=e[o.type]||{matches:[],score:{}},g=l[c]=l[c]||{str:0};g.str=Number(g.str)+Number(a.strength),u.push({intentId:c,signalStrength:a.strength,signalType:i.type})}}),this.log({level:"verbose",message:"Signal evaluation matches",region:"processSignalEvaluations",summary:e}),e}async reevaluateIntent({intent:t,scopes:e,requestContext:r,behaviorQueue:i}){let o="Reevaluate Intent",a=[],{id:s,signals:c}=t;return!c||c.length===0?this.log({level:"warn",message:`Intent ${s} does not define any signals.`,region:o}):await Promise.all(t.signals.map(async l=>{let u=await this.reevaluateSignal({intent:t,scopes:e,signal:l,requestContext:r,behaviorQueue:i});(u==null?void 0:u.result)&&a.push(u)})),a}clearBehaviorQueue(){let t=this._behaviorQueue.length,e=Object.keys(this._behaviorKeys).length;if(t||e){let r=this._behaviorQueue.splice(0,t),i=this._behaviorKeys;this._behaviorKeys={},this.log({level:"verbose",message:"Queue cleared",region:"clearBehaviorQueue",count:t+e,cleared:r,clearedKeys:i})}}clearEventQueue(){if(this._events.length){let t=this._events.splice(0,this._events.length);this.log({level:"verbose",message:"Clearing event queue",region:"clearEventQueue",count:t.length,cleared:t})}}async applySignalEvaluationSummary(t){let e="applySignalEvaluationSummary",r=this.getScopeNames(),i={};await Promise.all(r.map(async a=>{let{score:s,matches:c}=t[a]||{matches:[],score:{}},l=await this.readScoring(a);i[a]=await this.applyScoringStrategy(a,l,s,c.length)})),this.log({level:"verbose",message:"Scoring by scope",region:e,...i});let o=this.combineScoring(i);return this.log({level:"verbose",message:"Combined scope scoring",region:e,...o}),o}getServerState(){if(this._serverState)return this._serverState;if(typeof document=="undefined")return;let t=document.getElementById("__UNIFORM_DATA__");return(t==null?void 0:t.textContent)?JSON.parse(t.textContent):void 0}resolveSignalStorage(t,e){var o,a;let r="resolveSignalStorage",i=e.id?(o=t==null?void 0:t.state.signals)==null?void 0:o[e.id]:{};return e.id&&!((a=t==null?void 0:t.state.signals)==null?void 0:a[e.id])?this.log({level:"verbose",message:`Signal "${e.id}" is using default state`,region:r}):this.log({level:"verbose",message:`Signal "${e.id}" is using stored state`,region:r,...i}),i}async loadPlugins(){if(!this._plugins)return;let t=this._plugins.findPlugins("initialize");await Promise.all(t.map(e=>e.initialize({setIntentStrength:this.setIntentStrength.bind(this),log:this.log.bind(this),manifest:this._intentManifest})))}loadSignalEvaluators(){var e;return(((e=this._plugins)==null?void 0:e.find("signalEvaluatorMapping"))||[]).reduce((r,i)=>{let o=i();return Object.keys(o).forEach(a=>{r[a]&&this.log({level:"warn",region:"loadSignalEvaluators",message:`[Tracker]: Multiple plugins provided signal resolvers for ${a}`}),r[a]=o[a]}),r},{})}addIntents(t){let e=t.map(r=>{let{signals:i}=r;return{...r,signals:i.map(o=>{let{id:a}=o;return{...o,id:a!=null?a:`${r.id}:${JSON.stringify(o)}`}})}});this._intentMappings.push(...e)}async readScoring(t){let e=await this._storage.scopes.getScoring(t);if(e&&this._decayStrategy){let r={...e},i=await this._decayStrategy(e);typeof i!="undefined"&&(e=i),i&&this.log({level:"verbose",message:"Score decay has been applied",region:"readScoring",pre:r,post:e})}return e}getScopeStrategy(t){if(this._scopeStrategies)return this._scopeStrategies[t]}getAllScopeStrategies(){return this._scopeStrategies?Object.keys(this._scopeStrategies).map(t=>this._scopeStrategies[t]):[]}getScopeNames(t){return this._scopeStrategies?t&&this._scopeStrategies[t]?[t]:Object.keys(this._scopeStrategies):[]}async resolveScope(t,e){var a;let r="Resolve Scope",i=t||S.Scope.Visitor,o=e&&t?e[t]:await((a=this.getScopeStrategy(i))==null?void 0:a.get());return o||this.log({level:"warn",message:`Scope "${t}" returned null or undefined`,region:r}),(o==null?void 0:o.type)!==t&&typeof t!="undefined"&&this.log({level:"warn",message:`Scope "${t}" was requested, but "${o==null?void 0:o.type}" was resolved`,region:r}),o}async initializeScopes(){let t=this.getAllScopeStrategies();await Promise.all(t.map(e=>e.initialize({log:this.log.bind(this),storage:this._storage.scopes})))}applyScoringStrategy(t,e,r,i){let o=this._scoringStrategy({previousValue:(e==null?void 0:e.values)||{},valueToAdd:r,signalCount:i});return this.writeScoring(t,o,e)}async writeScoring(t,e,r){var s,c;let i="writeScoring",o;if(r&&(o=E(e.values,r.values),Object.keys(o).length===0))return this.log({level:"verbose",region:i,message:`Scoring update skipped for scope ${t}; values unchanged`}),e;this.log({level:"verbose",message:`${t} scoring has been updated`,region:i,...J(e.values)?{cleared:!0}:e.values});let a=(c=(s=this._scopeStrategies)==null?void 0:s[t])==null?void 0:c.getExpiration();return await this._storage.scopes.setScoring(e,t,a,r,o),e}async broadcastScoring(t){var r;let e=t||await this.getIntentStrength();if(!J(e)&&this._lastBroadcastScoring&&$(this._lastBroadcastScoring,e)){this.log({level:"verbose",region:"broadcastScoring",message:"Skipped broadcasting unchanged scoring",value:e});return}this._lastBroadcastScoring=e,(r=this._plugins)==null||r.scoringChange(i=>i(e||null)),this._listeners.forEach(i=>i(e||null))}isKnownEnrichment(t){var r,i;return!!((i=(r=this._intentManifest)==null?void 0:r.site.enrichments)==null?void 0:i.find(o=>o.name===t))}};var H=h(require("@uniformdev/optimize-tracker-common")),he=h(require("@uniformdev/optimize-common"));function re(n){return Math.sqrt(Object.keys(n).reduce((t,e)=>{var r;return t+=Math.pow(Number((r=n[e].str)!=null?r:0),2)},0))}function ve(n){let t=n.reduce((r,i)=>{var o;return Math.max(r,(o=i.relevancy)!=null?o:0)},0);if(t===0)return;let e=1/t;n.forEach(r=>{typeof r.relevancy!="undefined"&&(r.relevancy=r.relevancy*e)})}var Be=({intentTag:n,intentScores:t})=>{if(!t||!n)return{isDefault:!0,score:0,tagStrength:0};let e=(0,he.getPersonalizationIntents)(n);if(!e||Object.keys(e).length===0)return{isDefault:!0,score:0,tagStrength:0};let r={},i={};return Object.keys(n.intents).forEach(o=>{t[o]&&(r[o]=t[o],i[o]=n.intents[o])}),{score:re(r),isDefault:!1,tagStrength:re(i),matches:Object.keys(r)}},qe=(n,t)=>{var i,o,a,s,c,l;let e=Object.keys((a=(o=(i=n.item)==null?void 0:i.intentTag)==null?void 0:o.intents)!=null?a:{}).some(u=>{var g,m,d;return((g=n.matches)==null?void 0:g.includes(u))&&((d=(m=n.item)==null?void 0:m.intentTag)==null?void 0:d.intents[u].override)}),r=Object.keys((l=(c=(s=t.item)==null?void 0:s.intentTag)==null?void 0:c.intents)!=null?l:{}).some(u=>{var g,m,d;return((g=t.matches)==null?void 0:g.includes(u))&&((d=(m=t.item)==null?void 0:m.intentTag)==null?void 0:d.intents[u].override)});return e&&!r?-1:!e&&r?1:0},Ue=(n,t)=>{var a,s;let e=t.relevancy-n.relevancy;if(e!==0)return e;let r=t.tagStrength-n.tagStrength;if(r!==0)return r;let i=Number(t.isDefault)-Number(n.isDefault);return i!==0?i:(((a=t.matches)==null?void 0:a.length)||0)-(((s=n.matches)==null?void 0:s.length)||0)},ye=({list:n,intentScores:t,scorer:e,fallbackSort:r,analyticsEmitter:i,isInPersonalizationControlGroup:o,count:a,matchFilter:s="personalizedOrDefault"})=>{let c=!1,l=e!=null?e:Be,u=[],g={};n.forEach(d=>{var I;if((I=d.intentTag)==null?void 0:I.intents){let b=!0,D=d.intentTag.intents;if(Object.keys(D).forEach(k=>{var se,ce,le,ue;let Y=D[k];if(Y.threshold){let Ie=(ce=(se=t[k])==null?void 0:se.str)!=null?ce:0;Y.threshold>Ie&&(b=!1)}let ae=g[k]=(le=g[k])!=null?le:{count:0,max:0};ae.count++,b&&(ae.max=Math.max((ue=Y.threshold)!=null?ue:0,0))}),!b)return}let{score:p,tagStrength:y,isDefault:T,matches:L}=l({intentTag:d.intentTag,intentScores:t});p>0&&(c=!0);let v={item:d,matches:L,relevancy:p,tagStrength:y,isDefault:T};(s===H.MatchFilter.PersonalizedOnly||s==="personalizedOnly")&&v.isDefault||(s===H.MatchFilter.PersonalizedOnly||s==="personalizedOnly"||s===H.MatchFilter.PersonalizedOrDefault||s==="personalizedOrDefault")&&v.relevancy===0&&!v.isDefault||u.push(v)}),ve(u),u=u.filter(d=>{var y;let p=(y=d.item.intentTag)==null?void 0:y.intents;return p?Object.keys(p).every(T=>{var b;let L=p[T],v=g[T];return v.count===1||v.max===0?!0:((b=L.threshold)!=null?b:0)===v.max}):!0}),c&&!o?u.sort((d,p)=>{let y=qe(d,p);if(y!==0)return y;let T=Ue(d,p);return T===0&&r?r(d.item,p.item):T}):u.sort((d,p)=>d.isDefault===p.isDefault?r?r(d.item,p.item):0:Number(p.isDefault)>Number(d.isDefault)?1:-1);let m=u;if(typeof a=="number"&&a>0&&(m=m.slice(0,a)),i){let d=new Set(m.flatMap(p=>{var y;return(y=p.matches)!=null?y:[]}));i==null||i.personalization({matches:Array.from(d),isInPersonalizationControlGroup:o!=null?o:!1,intentScores:t})}return{result:m,personalized:!o&&c,intentScores:t}};var Qe=(n="info")=>({name:"console-logger",onLogMessage:({level:t="verbose",message:e,...r})=>{if(!de(n,t))return;let o="",a=console.log;t==="error"?(a=console.error,o=""):t==="warn"?(a=console.warn,o=""):t==="verbose"&&(o="font-size: 0.8em;");let s=`%c[Uniform] ${e}`;if(r){let{region:c,...l}=r;c&&(s=`%c[Uniform] [${c}] ${e}`),Object.keys(l).length>0?a(s,o,l):a(s,o)}else a(s,o)}});var ne=n=>Object.keys(n).reduce((t,e)=>(t[e]={str:n[e].str},t),{});var F=h(require("@uniformdev/optimize-common")),be=({signal:n,behaviors:t,intent:e,log:r})=>{let i="behaviorSignalEvaluator";if(!(0,F.isBehaviorSignal)(n)){r==null||r({level:"warn",message:"Signal is not a behavior signal",region:i});return}let{id:o}=e,a=n.str,s=0;if(t.forEach((c,l)=>{var g;let u=(g=c[o])==null?void 0:g.str;if(u&&a){let m=(Number(u)+Number(a))/2,d=m/t.length;r==null||r({level:"verbose",message:`Behavior [${l}] ${e.id} strength: ${d} - ((baseFromSignal + baseFromTag) / 2) / behQueueCount`,region:i,baseFromSignal:a,baseFromTag:u,baseTotal:m,behQueueCount:t.length,final:d}),s+=d}}),s===0){t.length>0&&(r==null||r({level:"verbose",message:`No pending behavior for intent '${o}'`,region:i,behaviors:t}));return}return t.length>1&&(r==null||r({level:"verbose",message:"Total Behavior Signal strength",region:i,resultStrength:s})),{strength:s}},Ke=()=>({name:`${F.SignalType.Behavior}-signal`,signalEvaluatorMapping:()=>({[F.SignalType.Behavior]:be})});var P=h(require("@uniformdev/optimize-common")),Je=(n,t)=>{if(!t||!t.cookies)return;let r=`; ${t.cookies}`.split(`; ${n}=`);if(r.length===2)return r.pop().split(";").shift()},He=({signal:n,requestContext:t,log:e})=>{let r="cookieSignalEvaluator";if(!(0,P.isCookieSignal)(n)){e==null||e({level:"warn",message:"Signal is not a cookie signal",region:r});return}let i=Je(n.parameter,t);if(!i){e==null||e({level:"verbose",message:`Cookie '${n.parameter}' value is not defined`,region:r});return}if(!(0,P.isStringMatch)(i,n.value)){e==null||e({level:"verbose",message:"Cookie value does not match signal",region:r});return}return e==null||e({level:"verbose",message:"Cookie signal is a match",name:n.parameter,strength:n.str,region:r}),{strength:Number(n.str)}},Ge=()=>({name:`${P.SignalType.Cookie}-signal`,signalEvaluatorMapping:()=>({[P.SignalType.Cookie]:He})});var x=h(require("@uniformdev/optimize-common")),G=(n,t)=>!t||!t.expr?!0:n?(0,x.isStringMatch)(n,t):!1,Te=({signal:n,events:t,log:e})=>{let r="eventSignalEvaluator";if(!(0,x.isEventSignal)(n)){e==null||e({level:"warn",message:"Signal is not an event signal",region:r});return}if(!t||!t.length){e==null||e({level:"verbose",message:"No events to process",region:r});return}let i=0,o=!1;if(t.forEach(a=>{let s=G(a.label,n.label),c=G(a.category,n.category),l=G(a.value,n.value);s&&c&&l&&(e==null||e({level:"info",message:"Event Match",region:r,event:a,signal:n}),i+=Number(n.str),o=!0)}),!o){e==null||e({level:"verbose",message:"No event matches",region:r,signal:n});return}return{strength:i}},We=()=>({name:`${x.SignalType.Event}-signal`,signalEvaluatorMapping:()=>({[x.SignalType.Event]:Te})});var R=h(require("@uniformdev/optimize-common")),Xe=async({signal:n,requestContext:t,log:e})=>{let r="landingPageSignalEvaluator";if(!(0,R.isLandingPageSignal)(n)){e==null||e({level:"warn",message:"Signal is not an landing page signal",region:r});return}if(!t||!t.url){e==null||e({level:"verbose",message:"Request context not defined",region:r,requestContext:!!t,url:t==null?void 0:t.url});return}let i=new URL(t.url);e==null||e({level:"verbose",message:"Checking URL",region:r,url:i.toString(),criteria:n.path});let o;return(0,R.isStringMatch)(i.pathname,n.path)?(e==null||e({level:"info",message:"URL is a match",region:r,url:i.toString(),criteria:n.path}),o=Number(n.str)):e==null||e({level:"info",message:"URL is not a match",region:r,url:i.toString(),criteria:n.path}),{strength:o}},Ye=()=>({name:`${R.SignalType.LandingPage}-signal`,signalEvaluatorMapping:()=>({[R.SignalType.LandingPage]:Xe})});var j=h(require("@uniformdev/optimize-common")),Ze=({signal:n,state:t,log:e})=>{var c,l,u,g;let r="pageViewCountSignalEvaluator";if(!(0,j.isPageViewCountSignal)(n)){e==null||e({level:"warn",message:"Signal is not a page view count signal",region:r});return}let i=(c=t==null?void 0:t.pageCount)!=null?c:0;e==null||e({level:"warn",message:"Starting page count",region:r,pageCount:i});let o={state:{pageCount:i+1}};e==null||e({level:"verbose",message:"Incrementing page count",region:r,pageCount:(l=o.state)==null?void 0:l.pageCount});let a=(u=n==null?void 0:n.min)!=null?u:0,s=(g=n==null?void 0:n.max)!=null?g:Number.MAX_VALUE;return(s===0||isNaN(s))&&(s=Number.MAX_VALUE),e==null||e({level:"verbose",message:"Checking if page count is in range",region:r,min:a,max:s}),i>=a&&i<=s?(e==null||e({level:"info",message:"Is in range, setting strength",region:r,str:n.str}),o.strength=Number(n.str)):e==null||e({level:"verbose",message:"Is not in range, ignoring.",region:r,str:n.str}),o},et=()=>({name:`${j.SignalType.PageViewCount}-signal`,signalEvaluatorMapping:()=>({[j.SignalType.PageViewCount]:Ze})});var _=h(require("@uniformdev/optimize-common")),tt=({signal:n,requestContext:t,log:e})=>{let r="pageVisitedSignalEvaluator";if(!(0,_.isPageVisitedSignal)(n)){e==null||e({level:"warn",message:"Signal is not a page visited signal",region:r});return}if(!t||!t.url){e==null||e({level:"verbose",message:"Request context not defined",region:r,requestContext:!!t,url:t==null?void 0:t.url});return}let i=new URL(t.url);e==null||e({level:"verbose",message:"Checking URL",region:r,url:i.toString(),criteria:n.path});let o;if((0,_.isStringMatch)(i.pathname,n.path))e==null||e({level:"info",message:"URL is a match",region:r,url:i.toString(),criteria:n.path}),o=Number(n.str);else{e==null||e({level:"info",message:"URL is not a match",region:r,url:i.toString(),criteria:n.path});return}return{strength:o}},rt=()=>({name:`${_.SignalType.PageVisited}-signal`,signalEvaluatorMapping:()=>({[_.SignalType.PageVisited]:tt})});var V=h(require("@uniformdev/optimize-common")),ke=({signal:n,requestContext:t,log:e})=>{let r="queryStringSignalEvaluator";if(!(0,V.isQueryStringSignal)(n)){e==null||e({level:"warn",message:"Signal is not a query string signal",region:r});return}if(!t||!t.url){e==null||e({level:"verbose",message:"Request context not defined",region:r,requestContext:!!t,url:t==null?void 0:t.url});return}let i=new URL(t.url),o=i.searchParams.get(n.parameter);if(!o){e==null||e({level:"verbose",message:`Query string value '${n.parameter}' not defined`,region:r,url:i.toString()});return}if(!(0,V.isStringMatch)(o,n.value)){e==null||e({level:"verbose",message:`Query string value '${n.parameter}' is not a match`,region:r,parameterValue:o,criteria:n.value});return}return e==null||e({level:"verbose",message:`Query string value '${n.parameter}' matches`,region:r,url:i.toString(),parameter:n.parameter}),{strength:Number(n.str)}},nt=()=>({name:`${V.SignalType.QueryString}-signal`,signalEvaluatorMapping:()=>({[V.SignalType.QueryString]:ke,UTM:ke})});var it=({active:n,options:t})=>!n||typeof window=="undefined"?we():Ee(t),we=()=>({personalization:()=>!1,test:()=>!1}),Ee=({tracker:n,name:t})=>({personalization:({matches:e,isInPersonalizationControlGroup:r,intentScores:i})=>{if(!n||!n.isInitialized())return!1;let o=e&&e.length?e.join(", "):"Default";return n.trackPersonalization(t,{category:"Uniform Personalization",label:o,value:r?1:0,intentScores:i}),!0},test:({testName:e,testSelection:r})=>{if(!n||!n.isInitialized())return!1;let i=typeof document!="undefined"?document.title:"";return n.trackPersonalization(`${e} | ${i}`,{category:"Uniform AB Testing",label:r||"No Variant"}),!0}});var Pe=class{constructor(t){this._pluginMap=this.mapPlugins(t)}log(t){this.find("onLogMessage").forEach(r=>t(r))}track(t){this.find("track").forEach(r=>t(r))}async initialize(t){let r=this.find("initialize").map(i=>t(i));await Promise.all(r)}scoringChange(t){this.find("onScoringChange").forEach(r=>t(r))}mapPlugins(t){let e={};return t.forEach(r=>{Object.keys(r).forEach(i=>{e[i]=e[i]||[],e[i].push({plugin:r,function:r[i]})})}),e}findPlugins(t){return(this._pluginMap[t]||[]).map(r=>r.plugin)}find(t){return(this._pluginMap[t]||[]).map(r=>r.function)}};var xe=h(require("uuid")),Re="scopeStrategy",B=n=>{let t=()=>({id:(0,xe.v4)(),created:new Date().valueOf(),state:{},type:n.type,random:Math.random()}),e=a=>{if(typeof n.expirationMinutes=="undefined")return!1;let s=n.expirationMinutes*60*1e3,c=new Date().valueOf(),l=a.updated||a.created;return c-l>=s},{type:r}=n,i,o=()=>{};return{type:r,initialize:async({log:a,storage:s})=>{o=a,i=s},get:async()=>{if(!i)throw new Error("call initialize first");let a=await i.getScope(r);if(a&&e(a)&&(o({level:"info",region:Re,message:`Scope ${r} is expired, data cleared.`}),a=void 0),!a){o({level:"verbose",region:Re,message:`Creating scope ${r}`});let c=((n==null?void 0:n.createScope)||t)();return await i.setScope(c),c}return a},save:async a=>{if(!i)throw new Error("call initialize first");await i.setScope(a)},getExpiration:()=>n.expirationMinutes}};var _e=h(require("@uniformdev/optimize-common"));var ot=n=>B({type:_e.Scope.Visit,expirationMinutes:(n==null?void 0:n.expirationMinutes)||20});var Ve=h(require("@uniformdev/optimize-common"));var at=()=>B({type:Ve.Scope.Visitor});var st=n=>{let t={},e={};return{id:"In-memory Scope Storage",delete:()=>(Object.keys(t).forEach(r=>{delete t[r]}),Object.keys(e).forEach(r=>{delete e[r]}),Promise.resolve()),getScope:r=>Promise.resolve(t[r]),setScope:r=>(t[r.type]=r,Promise.resolve()),getScoring:r=>(n==null?void 0:n.scoringStorage)?n.scoringStorage.getScoring(r):Promise.resolve(e[r]),setScoring:(r,i)=>((n==null?void 0:n.scoringStorage)&&n.scoringStorage.setScoring(r,i),e[i]=r,Promise.resolve())}};var ct=()=>{let n={};return{id:"In-memory Test Storage",getTestSelection:t=>{let e=n[t];return Promise.resolve(e)},setTestSelection:(t,e)=>(typeof e=="undefined"?delete n[t]:n[t]=e,Promise.resolve()),delete:()=>(Object.keys(n).forEach(t=>{delete n[t]}),Promise.resolve())}};var z=async(n,t)=>{for(let e of n)try{let r=await t(e);if(r)return r}catch(r){console.error(r)}},w=async(n,t)=>{for(let e=0;e<n.length;e++){let r=n[e];try{e===0?await t(r):t(r).catch(i=>{console.error(i)})}catch(i){console.error(i)}}},M=async(n,t)=>{await Promise.all(n.map(e=>t(e)))};var lt=({tiers:n})=>{let t=n,e=[],r;function i(o){return async(a,s)=>{let c=ne(s.values),l=s.updated;e.forEach(g=>{g.time<=s.updated||(g.time>l&&(l=g.time),c=A(c,g.diff))});let u={...s,updated:l,values:c};await Promise.all(o.map(g=>g.storage.setScoring(u,a))),await(r==null?void 0:r(a,u))}}return t.forEach((o,a)=>{var l,u;let s=n.slice(0,a),c=i(s);o.__callback=c,(u=(l=o.storage).setScoringValueExternallyUpdatedCallback)==null||u.call(l,c)}),{id:`Tiered (${n.map(o=>{var a,s;return(s=(a=o.storage)==null?void 0:a.id)!=null?s:"unknown"}).join(", ")})`,delete:async()=>{e=[],await M(n,o=>o.storage.delete())},getScope:async(...o)=>await z(n,a=>a.storage.getScope(...o)),setScope:async(...o)=>{await w(n,a=>a.storage.setScope(...o))},getScoring:async(...o)=>{let a;for(let s=0;s<n.length;s++){let c=t[s];if(a&&!c.loading)return a;if(!a||c.loading==="await"){let u=await c.storage.getScoring(...o);u&&(a=u);continue}let l=a;c.storage.getScoring(o[0]).then(u=>{if(u&&!$(l.values,u.values))return c.__callback(o[0],u)})}return a},setScoring:async(o,a,s,c,l)=>{var m;let u=E(o==null?void 0:o.values,c==null?void 0:c.values);Object.keys(u).length>0&&e.push({time:(m=o==null?void 0:o.updated)!=null?m:new Date().getTime(),diff:u}),await w(n,d=>d.storage.setScoring(o,a,s,c,l))},identify:async o=>{var c;let a=n.filter(l=>l.storage.identify);return a.length===0&&console.warn("Visitor was identified, but no storage tier implemented identification"),(c=(await Promise.all(a.map(l=>l.storage.identify(o)))).filter(l=>l))==null?void 0:c[0]},setScoringValueExternallyUpdatedCallback:o=>r=o}};var q=h(require("@uniformdev/optimize-common")),ut=({getCookie:n,setCookie:t})=>{let e=a=>JSON.parse(a),r=a=>JSON.stringify(a),i=a=>`uniform_trk_${a.toLocaleLowerCase()}_score`,o={[q.Scope.Visit]:i(q.Scope.Visit),[q.Scope.Visitor]:i(q.Scope.Visitor)};return{getScoring:a=>{let s,c=o[a];if(!c)throw new Error(`Unsupported cookie scope ${a}`);let l=n(c);return l&&(s=e(l)),Promise.resolve(s)},setScoring:(a,s,c)=>{let l=a?r(a):"",u=c?c*60:30*24*60*60,g=o[s];if(!g)throw new Error(`Unsupported cookie scope ${s}`);return t(g,l,u),Promise.resolve()},delete:async()=>(Object.keys(o).forEach(a=>{t(o[a],"",-1)}),Promise.resolve())}};var W="uniform_trk_tests",ie=30*24*60*60,gt=({getCookie:n,setCookie:t})=>{let e=i=>i?JSON.parse(i):void 0,r=()=>{let i,o=n(W);return o&&(i=e(o)),i};return{id:"Cookie Test Storage",getTestSelection:i=>{let o=r(),a=o==null?void 0:o[i];return Promise.resolve(a)},setTestSelection:(i,o)=>{let s={...r(),[i]:o},c=JSON.stringify(s);return t(W,c,ie),Promise.resolve()},delete:()=>(t(W,"",ie),Promise.resolve())}};var mt=({storage:n})=>{let t;function e(r){return async(i,o,...a)=>{await Promise.all(r.map(s=>s.setScoring(o,i))),await(t==null?void 0:t(i,o,...a))}}return n.forEach((r,i)=>{var s;let o=n.slice(0,i),a=e(o);(s=r.setScoringValueExternallyUpdatedCallback)==null||s.call(r,a)}),{id:`Composite (${n.map(r=>{var i;return(i=r==null?void 0:r.id)!=null?i:"unknown"}).join(", ")})`,delete:async()=>{await M(n,r=>r.delete())},getScope:async(...r)=>await z(n,i=>i.getScope(...r)),setScope:async(...r)=>{await w(n,i=>i.setScope(...r))},getScoring:async(...r)=>await z(n,i=>i.getScoring(...r)),setScoring:async(...r)=>{await w(n,i=>i.setScoring(...r))},identify:async r=>{var a;let i=n.filter(s=>s.identify);return i.length===0&&console.warn("Visitor was identified, but no composite storage implements identification"),(a=(await Promise.all(i.map(s=>s.identify(r)))).filter(s=>s))==null?void 0:a[0]},setScoringValueExternallyUpdatedCallback:r=>t=r}};var dt=({storage:n})=>({id:`Composite (${n.map(t=>t.id).join(", ")})`,getTestSelection:async(...t)=>await z(n,e=>e.getTestSelection(...t)),setTestSelection:async(...t)=>{await w(n,e=>e.setTestSelection(...t))},delete:async()=>{await M(n,t=>t.delete())}});var ft=n=>{let t=(n==null?void 0:n.sampleSize)||0;return{isInPersonalizationControlGroup:(e,r)=>e?(typeof r!="undefined"?r:t)>e.random:!1}};var oe=h(require("@uniformdev/optimize-common")),O=h(require("@uniformdev/optimize-tracker-common")),X=typeof top!="undefined",pt=n=>{let t,{disableEventListeners:e}=n||{};return e||X&&window.addEventListener("message",async r=>{if(!!r.data&&(0,O.isExtensionSetScoreMessage)(r.data)){let i=r.data.score;i&&(console.warn("[Uniform] browser extension has set intent scores. Note that this sets all scores to the visit scope and clears any existing visitor values.",i),await(t==null?void 0:t.setIntentStrength(oe.Scope.Visitor,{})),await(t==null?void 0:t.setIntentStrength(oe.Scope.Visit,i)))}}),{name:"browser-extension",initialize:r=>{t=r,X&&(top==null||top.postMessage({type:O.ExtensionEvents.Hello,manifest:r.manifest},window.location.origin))},onLogMessage:r=>{X&&(top==null||top.postMessage({type:O.ExtensionEvents.Log,message:r},window.location.origin))},onScoringChange:r=>{!r||X&&(top==null||top.postMessage({type:O.ExtensionEvents.Score,score:r},window.location.origin))}}};var ze=n=>{let{values:t,total:e,missingDistribution:r}=n.reduce((i,o)=>(o.distribution?i.total+=o.distribution:++i.missingDistribution,i.values.push(o.distribution),i),{values:[],total:0,missingDistribution:0});if(e>100)throw`Total distribution ${e} is over the maximum 100.`;if(e<100){let o=(100-e)/r;t.forEach((a,s)=>{typeof a=="undefined"&&(t[s]=o)})}return t},St=({testName:n,variations:t,random:e,selectedVariantId:r,analyticsEmitter:i})=>{if(e>100||e<0)throw"Random must be between 0 and 100";let o;if(r&&(o=t.find(s=>s.id===r),o||console.warn("Previously selected variant is no longer present.")),!o){let s=ze(t),c=0;o=t.find((l,u)=>{let g=s[u];if(e>c&&e<=c+g)return l;c+=g})}let a=!1;return i==null||i.test({testName:n,testSelection:o==null?void 0:o.id}),{result:o,tracked:a}},vt=()=>Math.floor(Math.random()*100);0&&(module.exports={AnalyticsEmitter,NoopAnalyticsEmitter,OptimizePluginLoader,OptimizeTracker,TestCookieName,TestExpiration,addBehaviorSignalPlugin,addBrowserExtension,addConsoleLoggerPlugin,addCookieSignalPlugin,addEventSignalPlugin,addLandingPageSignalPlugin,addPageViewCountSignalPlugin,addPageVisitedSignalPlugin,addQueryStringSignalPlugin,behaviorSignalEvaluator,calculateEnrichmentIntentName,cloneScore,combineScores,compositeScopeStorage,compositeTestStorage,cookieScoringStorage,cookieTestStorage,createPercentageTestStrategy,createVisitScopeStrategy,createVisitorScopeStrategy,cumulativeScoringStrategy,decayByDayStrategy,diffScores,doesValueMatchEventProperty,eventSignalEvaluator,generateRandom,getEnrichmentValue,inMemoryScopeStorage,inMemoryTestStorage,normalizeVariationDistributions,parseEnrichment,personalizeList,resolveAnalyticsEmitter,scopeStrategy,scoreIsEmpty,scoresAreEqual,testList,tieredScopeStorage});
var X=Object.defineProperty;var Ie=Object.getOwnPropertyDescriptor;var Me=Object.getOwnPropertyNames;var Oe=Object.prototype.hasOwnProperty;var Le=n=>X(n,"__esModule",{value:!0});var Ce=(n,t)=>{for(var e in t)X(n,e,{get:t[e],enumerable:!0})},De=(n,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of Me(t))!Oe.call(n,i)&&(e||i!=="default")&&X(n,i,{get:()=>t[i],enumerable:!(r=Ie(t,i))||r.enumerable});return n};var ze=(n=>(t,e)=>n&&n.get(t)||(e=De(Le({}),t,1),n&&n.set(t,e),e))(typeof WeakMap!="undefined"?new WeakMap:0);var St={};Ce(St,{AnalyticsEmitter:()=>ke,NoopAnalyticsEmitter:()=>Te,OptimizePluginLoader:()=>we,OptimizeTracker:()=>pe,TestCookieName:()=>H,TestExpiration:()=>ne,addBehaviorSignalPlugin:()=>qe,addBrowserExtension:()=>ft,addConsoleLoggerPlugin:()=>Ue,addCookieSignalPlugin:()=>Je,addEventSignalPlugin:()=>He,addLandingPageSignalPlugin:()=>We,addPageViewCountSignalPlugin:()=>Ye,addPageVisitedSignalPlugin:()=>et,addQueryStringSignalPlugin:()=>tt,behaviorSignalEvaluator:()=>he,calculateEnrichmentIntentName:()=>q,cloneScore:()=>re,combineScores:()=>N,compositeScopeStorage:()=>ut,compositeTestStorage:()=>gt,cookieScoringStorage:()=>ct,cookieTestStorage:()=>lt,createPercentageTestStrategy:()=>dt,createVisitScopeStrategy:()=>nt,createVisitorScopeStrategy:()=>it,cumulativeScoringStrategy:()=>Z,decayByDayStrategy:()=>Y,diffScores:()=>w,doesValueMatchEventProperty:()=>J,eventSignalEvaluator:()=>ye,generateRandom:()=>mt,getEnrichmentValue:()=>z,inMemoryScopeStorage:()=>at,inMemoryTestStorage:()=>st,normalizeVariationDistributions:()=>_e,parseEnrichment:()=>ee,personalizeList:()=>ve,resolveAnalyticsEmitter:()=>rt,scopeStrategy:()=>j,scoreIsEmpty:()=>Q,scoresAreEqual:()=>A,testList:()=>pt,tieredScopeStorage:()=>ot});var S=require("@uniformdev/optimize-common");var Ne={maxDecay:.95,daysInMonth:30},Ae=(n,t)=>Math.round((n-t)/(1e3*60*60*24)),$e=(n,t,e)=>{if(!t)return console.warn("[DecayByDay]: daysInMonth is not populated."),null;let r;return e?r=Math.min(e,n/t):r=n/t,1-r},Y=n=>{let t={...Ne,...n};return r=>{if(!(r==null?void 0:r.updated)||!r.values)return Promise.resolve(void 0);let{updated:i,values:a}=r,s=t.today||new Date().valueOf(),o=Ae(s,i!=null?i:0),c=$e(o,t.daysInMonth,t.maxDecay),l={values:{},updated:0,strategy:"?",...r};return c===1?Promise.resolve(void 0):(Object.keys(a).forEach(u=>{var f,m;let g=a[u];typeof g=="number"&&(g=a[u]={str:g});let d=Number((m=(f=a[u])==null?void 0:f.str)!=null?m:0);c&&(l.values[u].str=d*c)}),Promise.resolve(l))}};var ue=require("@uniformdev/optimize-common"),Z=()=>{let n="cumulative";return({previousValue:e,valueToAdd:r})=>{let i={...e};return Object.keys(r).forEach(s=>{var c,l,u;let o=(c=r[s])==null?void 0:c.str;if(o===ue.IntentTagStrength.Antimatter)delete i[s];else{let g=Number((u=(l=i[s])==null?void 0:l.str)!=null?u:0),d=Number(o!=null?o:0),f=g+d;f>0?i[s]={str:f}:delete i[s]}}),{values:i,strategy:n,updated:new Date().valueOf()}}};var U={error:3,warn:2,info:1,verbose:0},ge=(n,t)=>!(!n||n==="none"||U[n]!==void 0&&U[t]!==void 0&&U[t]<U[n]),D=">",q=(n,t)=>{if(n.includes(D)||t.includes(D))throw`"${D}" is a reserved enrichment character`;return`${n}${D}${t}`},ee=n=>{let t=n.split(D);if(t.length===2)return{type:t[0],value:t[1]}},z=(n,t)=>{let e=ee(t);if(!!e&&e.type===n)return e.value},de=()=>{if(!(typeof window=="undefined"||typeof document=="undefined"))return{cookies:document.cookie,url:window.location.href,userAgent:navigator.userAgent}};var N=(...n)=>{let t={};return n.forEach(e=>{Object.keys(e).forEach(r=>{t[r]||(t[r]={str:0});let i=e[r];i.str&&(t[r].str=Number(t[r].str)+Number(i.str))})}),t};var fe=(n,t)=>{let e=n!=null?n:{str:0},r=t!=null?t:{str:0};return{str:Number(e.str)-Number(r.str)}},w=(n,t)=>{let e={};return n||(n={}),t||(t={}),Object.keys(n).forEach(r=>{e[r]=fe(n[r],t[r])}),Object.keys(t).forEach(r=>{e[r]||(e[r]=fe(n[r],t[r]))}),Object.keys(e).forEach(r=>{e[r].str===0&&delete e[r]}),e};var A=(n,t)=>{let e=w(n,t);return!(Object.keys(e).length>0)};var Q=n=>!n||Object.keys(n).length===0;var pe=class{constructor(t){this._intentMappings=[];this._behaviorQueue=[];this._behaviorKeys={};this._events=[];this._listeners=[];this._testSettings=[];this._signalEvaluators={};this._initialized=!1;this._lastBroadcastScoring=void 0;var e,r;if(this._intentManifest=t.intentManifest,t.intentManifest&&this.addIntents(t.intentManifest.site.intents),this._plugins=t.plugins,this._storage=t.storage,this._scopeStrategies=t.scopes,this._scoringStrategy=(e=t.scoring)!=null?e:Z(),this._decayStrategy=(r=t.decay)!=null?r:Y(),this._serverState=this.getServerState(),t.testing){let i=Array.isArray(t.testing)?t.testing:[t.testing];this._testSettings.push(...i)}}async initialize(){var t,e;this.log({level:"info",message:"Received intent manifest",region:"initialize",intents:this._intentManifest}),await this.initializeScopes(),await this.loadPlugins(),this._signalEvaluators=this.loadSignalEvaluators(),(e=(t=this._storage.scopes).setScoringValueExternallyUpdatedCallback)==null||e.call(t,async()=>{await this.broadcastScoring()}),this._lastBroadcastScoring=void 0,this._initialized=!0}isInitialized(){return this._initialized}async getIntentStrength(t){let e=this.getScopeNames(t),r={};return await Promise.all(e.map(async a=>{let s=await this.readScoring(a);r[a]=s})),this.combineScoring(r)}async getIntentStrengthSingle(t,e){let r=await this.getIntentStrength(e);return r==null?void 0:r[t]}async addIntentStrength(t,e){let r=await this.readScoring(t);await this.applyScoringStrategy(t,r,e,1),await this.broadcastScoring()}async setIntentStrength(t,e){await this.applyScoringStrategy(t,void 0,e,1),await this.broadcastScoring()}async removeIntent(t,e){let r=this.getScopeNames(e==null?void 0:e.scope),i=typeof t=="string"?[t]:t,a=!1;return await Promise.all(r.map(async s=>{let o=await this._storage.scopes.getScoring(s);if(o){let c={},l=!1;Object.keys(o.values).map(u=>{t&&(i==null?void 0:i.indexOf(u))===-1?c[u]=o.values[u]:(l=!0,a=!0)}),l&&(await this.writeScoring(s,{...o,values:c},o),(e==null?void 0:e.quiet)||await this.broadcastScoring())}})),a}addScoringChangeListener(t){this._listeners.push(t)}removeScoringChangeListener(t){let e=this._listeners.indexOf(t);e>-1&&this._listeners.splice(e,1)}async reevaluateSignals(t){let e="reevaluateSignals";if(this.log({level:"verbose",message:"Signals reevaluating...",region:e}),!this._intentMappings||!this._intentMappings.length)return this.log({level:"warn",message:"Intents list is empty",region:e}),{signalMatches:{}};let r={};await Promise.all(this.getAllScopeStrategies().map(g=>g.get().then(d=>{d&&(r[d==null?void 0:d.type]=d)})));let i=Object.keys(this._behaviorKeys),a=i.length===0?this._behaviorQueue:[...this._behaviorQueue,...i.map(g=>this._behaviorKeys[g])],o=(await Promise.all(this._intentMappings.map(g=>this.reevaluateIntent({intent:g,scopes:r,requestContext:t,behaviorQueue:a})))).flatMap(g=>g),c=o.reduce((g,d)=>{var h;if(!d.statsScope||!d.statistics||!d.signal)return g;let f=d.statsScope.type,m=g[f]=(h=g[f])!=null?h:{};return m[d.signal.id]=d.statistics,g},{});await Promise.all(Object.keys(c).map(g=>{var d;return(d=this.getScopeStrategy(g))==null?void 0:d.save({...r[g],statistics:{...r[g].statistics||{},...c[g]}})}));let l=this.processSignalEvaluations(o),u=await this.applySignalEvaluationSummary(l);return await this.broadcastScoring(u),this.clearBehaviorQueue(),this.clearEventQueue(),this.log({level:"info",message:"Reevaluated signals",region:e,...u}),{scoring:u,signalMatches:Object.keys(l).reduce((g,d)=>(g[d]=l[d].matches,g),{})}}addBehaviorActivity(t,e){this.log({level:"verbose",region:"addBehaviorActivity",message:"Behavior activity added to queue",...t,sourceKey:e}),e?this._behaviorKeys[e]=t:this._behaviorQueue.push(t)}async addEvent(t,e){this._events.push(t),e&&e.quiet!==void 0&&e.quiet||await this.reevaluateSignals()}async getEnrichmentValues(t,e){if(!this.isKnownEnrichment(t))return;let i=await this.getIntentStrength(e==null?void 0:e.scope)||{};return Object.keys(i||{}).reduce((s,o)=>{let c=z(t,o);return c&&i[o].str&&(s[c]=Number(i[o].str||0)),s},{})}async addEnrichment(t,e){var c;let r=(e==null?void 0:e.scope)||S.Scope.Visitor,i=Array.isArray(t)?t:[t],a={},s={};for(let l of i)if(this.isKnownEnrichment(l.name)){let g=q(l.name,l.value);(e==null?void 0:e.clearValues)&&(s[l.name]=!0);let d=Number(((c=a[g])==null?void 0:c.str)||0);a[g]={str:d+(l.str||S.IntentTagStrength.Normal)}}for(let l of Object.keys(s))await this.removeEnrichment(l,{scope:r,quiet:!0});let o=await this.readScoring(r);await this.applyScoringStrategy(r,o,a,i.length),(e==null?void 0:e.quiet)||await this.reevaluateSignals()}async removeEnrichment(t,e){let r=(e==null?void 0:e.scope)||S.Scope.Visitor,i=await this.getIntentStrength(r)||{},a=Object.keys(i||{}).filter(s=>{if(z(t,s))return s},{});await this.removeIntent(a,{scope:r,quiet:e==null?void 0:e.quiet})}trackPersonalization(t,e){var r;t&&((r=this._plugins)==null||r.track(i=>i(t,e)))}async isInPersonalizationControlGroup(t){var l;let{scope:e,sampleSize:r}=t||{},i=new Date,a=this._testSettings.find(u=>u.strategy&&(!u.endDate||u.endDate>i));if(!a)return!1;let s=e!=null?e:S.Scope.Visitor,o=await((l=this.getScopeStrategy(s))==null?void 0:l.get());return a.strategy.isInPersonalizationControlGroup(o,r)}getTestValue(t){var r,i,a,s,o,c;let e=(i=(r=this._intentManifest)==null?void 0:r.site.tests)==null?void 0:i.find(l=>l.name===t);return(e==null?void 0:e.winning_variation_id)?Promise.resolve(e.winning_variation_id):((s=(a=this._serverState)==null?void 0:a.tests)==null?void 0:s[t])?Promise.resolve((c=(o=this._serverState)==null?void 0:o.tests)==null?void 0:c[t]):this._storage.tests.getTestSelection(t)}setTestValue(t,e){var i,a;let r=(a=(i=this._intentManifest)==null?void 0:i.site.tests)==null?void 0:a.find(s=>s.name===t);return(r==null?void 0:r.winning_variation_id)?Promise.resolve():this._storage.tests.setTestSelection(t,e)}isTestEnabled(t){var r,i;return!!((i=(r=this._intentManifest)==null?void 0:r.site.tests)==null?void 0:i.find(a=>a.name===t))}async identify(t){var a;let e=(a=this._storage)==null?void 0:a.scopes.identify;if(!e){this.log({region:"identify",level:"warn",message:"Visitor was identified, but storage did not implement identification"});return}let r=await this._storage.scopes.getScoring(S.Scope.Visitor),i=await e(t);i&&(await this.writeScoring(S.Scope.Visitor,i,r),await this.broadcastScoring())}async forgetMe(t){await Promise.all([this._storage.scopes.delete(t),this._storage.tests.delete()]),this.log({level:"info",region:"forgetMe",message:`Visitor has been forgotten (allDevices: ${t})`}),await this.broadcastScoring()}log(t){var e;(e=this._plugins)==null||e.log(r=>r(t))}async reevaluateSignal({intent:t,scopes:e,signal:r,requestContext:i,behaviorQueue:a}){var I,y,C;let s="reevaluateSignal",o=await this.resolveFrequencyScope(r,e);if(!await this.determineIfSignalShouldEvaluate(r,o)){this.log({level:"info",message:`Signal ${r.id} will not evaluate`,region:s});return}let l=this._signalEvaluators[r.type];if(!l){this.log({level:"warn",message:`Signal ${r.type} not handled by any plugin. It will be ignored.`,region:s});return}!r.str&&r.str!==S.IntentTagStrength.Antimatter&&(this.log({level:"warn",message:`Strength not defined on signal, setting strength to ${S.IntentTagStrength.Normal}`,region:s}),r.str=S.IntentTagStrength.Normal);let u=await this.resolveScope(r.scope,e),g=this.resolveSignalStorage(u,r),d={intent:t,signal:r,scope:u,statsScope:o},f={signal:r,intent:t,behaviors:a,state:g,requestContext:i||de(),events:this._events,log:this.log.bind(this)},{requestContext:m,log:h,...b}=f,L=l(f),v=await Promise.resolve(L);if(this.log({level:"verbose",message:`${r.type} Signal evaluation result: ${(v==null?void 0:v.strength)?v.strength:"no match"}`,region:s,signal:r,intent:t,result:v}),d.result=v,typeof v=="undefined")return d;if(r.id){let T=await this.resolveFrequencyScope(r,e);return T&&(d.statistics={...(I=T.statistics)==null?void 0:I[r.id],evaluations:(((C=(y=T.statistics)==null?void 0:y[r.id])==null?void 0:C.evaluations)||0)+1}),u&&r.id&&v.state&&(u.state.signals=u.state.signals||{},u.state.signals[r.id]=v.state),d}}async resolveFrequencyScope(t,e){let r=t.freq===S.SignalFrequency.OncePerVisit?S.Scope.Visit:S.Scope.Visitor;return this.resolveScope(r,e)}determineIfSignalShouldEvaluate(t,e){var r,i;return t.id?!t.freq||t.freq===S.SignalFrequency.Always||t.type===S.SignalType.PageViewCount?!0:!((i=(r=e==null?void 0:e.statistics)==null?void 0:r[t.id])==null?void 0:i.evaluations):(this.log({level:"info",region:"determineIfSignalShouldEvaluate",message:"Signal ID is not populated"}),!1)}combineScoring(t){let e=Object.keys(t).map(r=>t[r]).filter(r=>r&&r.values).map(r=>r.values);return N(...e)}processSignalEvaluations(t){let e={};return t.forEach(r=>{let{signal:i,scope:a,result:s,intent:o}=r,{id:c}=o;if(a&&s&&(s.strength||s.strength===S.IntentTagStrength.Antimatter)){let{score:l,matches:u}=e[a.type]=e[a.type]||{matches:[],score:{}},g=l[c]=l[c]||{str:0};g.str=Number(g.str)+Number(s.strength),u.push({intentId:c,signalStrength:s.strength,signalType:i.type})}}),this.log({level:"verbose",message:"Signal evaluation matches",region:"processSignalEvaluations",summary:e}),e}async reevaluateIntent({intent:t,scopes:e,requestContext:r,behaviorQueue:i}){let a="Reevaluate Intent",s=[],{id:o,signals:c}=t;return!c||c.length===0?this.log({level:"warn",message:`Intent ${o} does not define any signals.`,region:a}):await Promise.all(t.signals.map(async l=>{let u=await this.reevaluateSignal({intent:t,scopes:e,signal:l,requestContext:r,behaviorQueue:i});(u==null?void 0:u.result)&&s.push(u)})),s}clearBehaviorQueue(){let t=this._behaviorQueue.length,e=Object.keys(this._behaviorKeys).length;if(t||e){let r=this._behaviorQueue.splice(0,t),i=this._behaviorKeys;this._behaviorKeys={},this.log({level:"verbose",message:"Queue cleared",region:"clearBehaviorQueue",count:t+e,cleared:r,clearedKeys:i})}}clearEventQueue(){if(this._events.length){let t=this._events.splice(0,this._events.length);this.log({level:"verbose",message:"Clearing event queue",region:"clearEventQueue",count:t.length,cleared:t})}}async applySignalEvaluationSummary(t){let e="applySignalEvaluationSummary",r=this.getScopeNames(),i={};await Promise.all(r.map(async s=>{let{score:o,matches:c}=t[s]||{matches:[],score:{}},l=await this.readScoring(s);i[s]=await this.applyScoringStrategy(s,l,o,c.length)})),this.log({level:"verbose",message:"Scoring by scope",region:e,...i});let a=this.combineScoring(i);return this.log({level:"verbose",message:"Combined scope scoring",region:e,...a}),a}getServerState(){if(this._serverState)return this._serverState;if(typeof document=="undefined")return;let t=document.getElementById("__UNIFORM_DATA__");return(t==null?void 0:t.textContent)?JSON.parse(t.textContent):void 0}resolveSignalStorage(t,e){var a,s;let r="resolveSignalStorage",i=e.id?(a=t==null?void 0:t.state.signals)==null?void 0:a[e.id]:{};return e.id&&!((s=t==null?void 0:t.state.signals)==null?void 0:s[e.id])?this.log({level:"verbose",message:`Signal "${e.id}" is using default state`,region:r}):this.log({level:"verbose",message:`Signal "${e.id}" is using stored state`,region:r,...i}),i}async loadPlugins(){if(!this._plugins)return;let t=this._plugins.findPlugins("initialize");await Promise.all(t.map(e=>e.initialize({setIntentStrength:this.setIntentStrength.bind(this),log:this.log.bind(this),manifest:this._intentManifest})))}loadSignalEvaluators(){var e;return(((e=this._plugins)==null?void 0:e.find("signalEvaluatorMapping"))||[]).reduce((r,i)=>{let a=i();return Object.keys(a).forEach(s=>{r[s]&&this.log({level:"warn",region:"loadSignalEvaluators",message:`[Tracker]: Multiple plugins provided signal resolvers for ${s}`}),r[s]=a[s]}),r},{})}addIntents(t){let e=t.map(r=>{let{signals:i}=r;return{...r,signals:i.map(a=>{let{id:s}=a;return{...a,id:s!=null?s:`${r.id}:${JSON.stringify(a)}`}})}});this._intentMappings.push(...e)}async readScoring(t){let e=await this._storage.scopes.getScoring(t);if(e&&this._decayStrategy){let r={...e},i=await this._decayStrategy(e);typeof i!="undefined"&&(e=i),i&&this.log({level:"verbose",message:"Score decay has been applied",region:"readScoring",pre:r,post:e})}return e}getScopeStrategy(t){if(this._scopeStrategies)return this._scopeStrategies[t]}getAllScopeStrategies(){return this._scopeStrategies?Object.keys(this._scopeStrategies).map(t=>this._scopeStrategies[t]):[]}getScopeNames(t){return this._scopeStrategies?t&&this._scopeStrategies[t]?[t]:Object.keys(this._scopeStrategies):[]}async resolveScope(t,e){var s;let r="Resolve Scope",i=t||S.Scope.Visitor,a=e&&t?e[t]:await((s=this.getScopeStrategy(i))==null?void 0:s.get());return a||this.log({level:"warn",message:`Scope "${t}" returned null or undefined`,region:r}),(a==null?void 0:a.type)!==t&&typeof t!="undefined"&&this.log({level:"warn",message:`Scope "${t}" was requested, but "${a==null?void 0:a.type}" was resolved`,region:r}),a}async initializeScopes(){let t=this.getAllScopeStrategies();await Promise.all(t.map(e=>e.initialize({log:this.log.bind(this),storage:this._storage.scopes})))}applyScoringStrategy(t,e,r,i){let a=this._scoringStrategy({previousValue:(e==null?void 0:e.values)||{},valueToAdd:r,signalCount:i});return this.writeScoring(t,a,e)}async writeScoring(t,e,r){var o,c;let i="writeScoring",a;if(r&&(a=w(e.values,r.values),Object.keys(a).length===0))return this.log({level:"verbose",region:i,message:`Scoring update skipped for scope ${t}; values unchanged`}),e;this.log({level:"verbose",message:`${t} scoring has been updated`,region:i,...Q(e.values)?{cleared:!0}:e.values});let s=(c=(o=this._scopeStrategies)==null?void 0:o[t])==null?void 0:c.getExpiration();return await this._storage.scopes.setScoring(e,t,s,r,a),e}async broadcastScoring(t){var r;let e=t||await this.getIntentStrength();if(!Q(e)&&this._lastBroadcastScoring&&A(this._lastBroadcastScoring,e)){this.log({level:"verbose",region:"broadcastScoring",message:"Skipped broadcasting unchanged scoring",value:e});return}this._lastBroadcastScoring=e,(r=this._plugins)==null||r.scoringChange(i=>i(e||null)),this._listeners.forEach(i=>i(e||null))}isKnownEnrichment(t){var r,i;return!!((i=(r=this._intentManifest)==null?void 0:r.site.enrichments)==null?void 0:i.find(a=>a.name===t))}};var K=require("@uniformdev/optimize-tracker-common"),Se=require("@uniformdev/optimize-common");function te(n){return Math.sqrt(Object.keys(n).reduce((t,e)=>{var r;return t+=Math.pow(Number((r=n[e].str)!=null?r:0),2)},0))}function me(n){let t=n.reduce((r,i)=>{var a;return Math.max(r,(a=i.relevancy)!=null?a:0)},0);if(t===0)return;let e=1/t;n.forEach(r=>{typeof r.relevancy!="undefined"&&(r.relevancy=r.relevancy*e)})}var Fe=({intentTag:n,intentScores:t})=>{if(!t||!n)return{isDefault:!0,score:0,tagStrength:0};let e=(0,Se.getPersonalizationIntents)(n);if(!e||Object.keys(e).length===0)return{isDefault:!0,score:0,tagStrength:0};let r={},i={};return Object.keys(n.intents).forEach(a=>{t[a]&&(r[a]=t[a],i[a]=n.intents[a])}),{score:te(r),isDefault:!1,tagStrength:te(i),matches:Object.keys(r)}},je=(n,t)=>{var i,a,s,o,c,l;let e=Object.keys((s=(a=(i=n.item)==null?void 0:i.intentTag)==null?void 0:a.intents)!=null?s:{}).some(u=>{var g,d,f;return((g=n.matches)==null?void 0:g.includes(u))&&((f=(d=n.item)==null?void 0:d.intentTag)==null?void 0:f.intents[u].override)}),r=Object.keys((l=(c=(o=t.item)==null?void 0:o.intentTag)==null?void 0:c.intents)!=null?l:{}).some(u=>{var g,d,f;return((g=t.matches)==null?void 0:g.includes(u))&&((f=(d=t.item)==null?void 0:d.intentTag)==null?void 0:f.intents[u].override)});return e&&!r?-1:!e&&r?1:0},Be=(n,t)=>{var s,o;let e=t.relevancy-n.relevancy;if(e!==0)return e;let r=t.tagStrength-n.tagStrength;if(r!==0)return r;let i=Number(t.isDefault)-Number(n.isDefault);return i!==0?i:(((s=t.matches)==null?void 0:s.length)||0)-(((o=n.matches)==null?void 0:o.length)||0)},ve=({list:n,intentScores:t,scorer:e,fallbackSort:r,analyticsEmitter:i,isInPersonalizationControlGroup:a,count:s,matchFilter:o="personalizedOrDefault"})=>{let c=!1,l=e!=null?e:Fe,u=[],g={};n.forEach(f=>{var I;if((I=f.intentTag)==null?void 0:I.intents){let y=!0,C=f.intentTag.intents;if(Object.keys(C).forEach(T=>{var se,oe,ce,le;let W=C[T];if(W.threshold){let Ve=(oe=(se=t[T])==null?void 0:se.str)!=null?oe:0;W.threshold>Ve&&(y=!1)}let ae=g[T]=(ce=g[T])!=null?ce:{count:0,max:0};ae.count++,y&&(ae.max=Math.max((le=W.threshold)!=null?le:0,0))}),!y)return}let{score:m,tagStrength:h,isDefault:b,matches:L}=l({intentTag:f.intentTag,intentScores:t});m>0&&(c=!0);let v={item:f,matches:L,relevancy:m,tagStrength:h,isDefault:b};(o===K.MatchFilter.PersonalizedOnly||o==="personalizedOnly")&&v.isDefault||(o===K.MatchFilter.PersonalizedOnly||o==="personalizedOnly"||o===K.MatchFilter.PersonalizedOrDefault||o==="personalizedOrDefault")&&v.relevancy===0&&!v.isDefault||u.push(v)}),me(u),u=u.filter(f=>{var h;let m=(h=f.item.intentTag)==null?void 0:h.intents;return m?Object.keys(m).every(b=>{var y;let L=m[b],v=g[b];return v.count===1||v.max===0?!0:((y=L.threshold)!=null?y:0)===v.max}):!0}),c&&!a?u.sort((f,m)=>{let h=je(f,m);if(h!==0)return h;let b=Be(f,m);return b===0&&r?r(f.item,m.item):b}):u.sort((f,m)=>f.isDefault===m.isDefault?r?r(f.item,m.item):0:Number(m.isDefault)>Number(f.isDefault)?1:-1);let d=u;if(typeof s=="number"&&s>0&&(d=d.slice(0,s)),i){let f=new Set(d.flatMap(m=>{var h;return(h=m.matches)!=null?h:[]}));i==null||i.personalization({matches:Array.from(f),isInPersonalizationControlGroup:a!=null?a:!1,intentScores:t})}return{result:d,personalized:!a&&c,intentScores:t}};var Ue=(n="info")=>({name:"console-logger",onLogMessage:({level:t="verbose",message:e,...r})=>{if(!ge(n,t))return;let a="",s=console.log;t==="error"?(s=console.error,a=""):t==="warn"?(s=console.warn,a=""):t==="verbose"&&(a="font-size: 0.8em;");let o=`%c[Uniform] ${e}`;if(r){let{region:c,...l}=r;c&&(o=`%c[Uniform] [${c}] ${e}`),Object.keys(l).length>0?s(o,a,l):s(o,a)}else s(o,a)}});var re=n=>Object.keys(n).reduce((t,e)=>(t[e]={str:n[e].str},t),{});var $=require("@uniformdev/optimize-common"),he=({signal:n,behaviors:t,intent:e,log:r})=>{let i="behaviorSignalEvaluator";if(!(0,$.isBehaviorSignal)(n)){r==null||r({level:"warn",message:"Signal is not a behavior signal",region:i});return}let{id:a}=e,s=n.str,o=0;if(t.forEach((c,l)=>{var g;let u=(g=c[a])==null?void 0:g.str;if(u&&s){let d=(Number(u)+Number(s))/2,f=d/t.length;r==null||r({level:"verbose",message:`Behavior [${l}] ${e.id} strength: ${f} - ((baseFromSignal + baseFromTag) / 2) / behQueueCount`,region:i,baseFromSignal:s,baseFromTag:u,baseTotal:d,behQueueCount:t.length,final:f}),o+=f}}),o===0){t.length>0&&(r==null||r({level:"verbose",message:`No pending behavior for intent '${a}'`,region:i,behaviors:t}));return}return t.length>1&&(r==null||r({level:"verbose",message:"Total Behavior Signal strength",region:i,resultStrength:o})),{strength:o}},qe=()=>({name:`${$.SignalType.Behavior}-signal`,signalEvaluatorMapping:()=>({[$.SignalType.Behavior]:he})});var E=require("@uniformdev/optimize-common"),Qe=(n,t)=>{if(!t||!t.cookies)return;let r=`; ${t.cookies}`.split(`; ${n}=`);if(r.length===2)return r.pop().split(";").shift()},Ke=({signal:n,requestContext:t,log:e})=>{let r="cookieSignalEvaluator";if(!(0,E.isCookieSignal)(n)){e==null||e({level:"warn",message:"Signal is not a cookie signal",region:r});return}let i=Qe(n.parameter,t);if(!i){e==null||e({level:"verbose",message:`Cookie '${n.parameter}' value is not defined`,region:r});return}if(!(0,E.isStringMatch)(i,n.value)){e==null||e({level:"verbose",message:"Cookie value does not match signal",region:r});return}return e==null||e({level:"verbose",message:"Cookie signal is a match",name:n.parameter,strength:n.str,region:r}),{strength:Number(n.str)}},Je=()=>({name:`${E.SignalType.Cookie}-signal`,signalEvaluatorMapping:()=>({[E.SignalType.Cookie]:Ke})});var P=require("@uniformdev/optimize-common"),J=(n,t)=>!t||!t.expr?!0:n?(0,P.isStringMatch)(n,t):!1,ye=({signal:n,events:t,log:e})=>{let r="eventSignalEvaluator";if(!(0,P.isEventSignal)(n)){e==null||e({level:"warn",message:"Signal is not an event signal",region:r});return}if(!t||!t.length){e==null||e({level:"verbose",message:"No events to process",region:r});return}let i=0,a=!1;if(t.forEach(s=>{let o=J(s.label,n.label),c=J(s.category,n.category),l=J(s.value,n.value);o&&c&&l&&(e==null||e({level:"info",message:"Event Match",region:r,event:s,signal:n}),i+=Number(n.str),a=!0)}),!a){e==null||e({level:"verbose",message:"No event matches",region:r,signal:n});return}return{strength:i}},He=()=>({name:`${P.SignalType.Event}-signal`,signalEvaluatorMapping:()=>({[P.SignalType.Event]:ye})});var x=require("@uniformdev/optimize-common"),Ge=async({signal:n,requestContext:t,log:e})=>{let r="landingPageSignalEvaluator";if(!(0,x.isLandingPageSignal)(n)){e==null||e({level:"warn",message:"Signal is not an landing page signal",region:r});return}if(!t||!t.url){e==null||e({level:"verbose",message:"Request context not defined",region:r,requestContext:!!t,url:t==null?void 0:t.url});return}let i=new URL(t.url);e==null||e({level:"verbose",message:"Checking URL",region:r,url:i.toString(),criteria:n.path});let a;return(0,x.isStringMatch)(i.pathname,n.path)?(e==null||e({level:"info",message:"URL is a match",region:r,url:i.toString(),criteria:n.path}),a=Number(n.str)):e==null||e({level:"info",message:"URL is not a match",region:r,url:i.toString(),criteria:n.path}),{strength:a}},We=()=>({name:`${x.SignalType.LandingPage}-signal`,signalEvaluatorMapping:()=>({[x.SignalType.LandingPage]:Ge})});var F=require("@uniformdev/optimize-common"),Xe=({signal:n,state:t,log:e})=>{var c,l,u,g;let r="pageViewCountSignalEvaluator";if(!(0,F.isPageViewCountSignal)(n)){e==null||e({level:"warn",message:"Signal is not a page view count signal",region:r});return}let i=(c=t==null?void 0:t.pageCount)!=null?c:0;e==null||e({level:"warn",message:"Starting page count",region:r,pageCount:i});let a={state:{pageCount:i+1}};e==null||e({level:"verbose",message:"Incrementing page count",region:r,pageCount:(l=a.state)==null?void 0:l.pageCount});let s=(u=n==null?void 0:n.min)!=null?u:0,o=(g=n==null?void 0:n.max)!=null?g:Number.MAX_VALUE;return(o===0||isNaN(o))&&(o=Number.MAX_VALUE),e==null||e({level:"verbose",message:"Checking if page count is in range",region:r,min:s,max:o}),i>=s&&i<=o?(e==null||e({level:"info",message:"Is in range, setting strength",region:r,str:n.str}),a.strength=Number(n.str)):e==null||e({level:"verbose",message:"Is not in range, ignoring.",region:r,str:n.str}),a},Ye=()=>({name:`${F.SignalType.PageViewCount}-signal`,signalEvaluatorMapping:()=>({[F.SignalType.PageViewCount]:Xe})});var R=require("@uniformdev/optimize-common"),Ze=({signal:n,requestContext:t,log:e})=>{let r="pageVisitedSignalEvaluator";if(!(0,R.isPageVisitedSignal)(n)){e==null||e({level:"warn",message:"Signal is not a page visited signal",region:r});return}if(!t||!t.url){e==null||e({level:"verbose",message:"Request context not defined",region:r,requestContext:!!t,url:t==null?void 0:t.url});return}let i=new URL(t.url);e==null||e({level:"verbose",message:"Checking URL",region:r,url:i.toString(),criteria:n.path});let a;if((0,R.isStringMatch)(i.pathname,n.path))e==null||e({level:"info",message:"URL is a match",region:r,url:i.toString(),criteria:n.path}),a=Number(n.str);else{e==null||e({level:"info",message:"URL is not a match",region:r,url:i.toString(),criteria:n.path});return}return{strength:a}},et=()=>({name:`${R.SignalType.PageVisited}-signal`,signalEvaluatorMapping:()=>({[R.SignalType.PageVisited]:Ze})});var _=require("@uniformdev/optimize-common"),be=({signal:n,requestContext:t,log:e})=>{let r="queryStringSignalEvaluator";if(!(0,_.isQueryStringSignal)(n)){e==null||e({level:"warn",message:"Signal is not a query string signal",region:r});return}if(!t||!t.url){e==null||e({level:"verbose",message:"Request context not defined",region:r,requestContext:!!t,url:t==null?void 0:t.url});return}let i=new URL(t.url),a=i.searchParams.get(n.parameter);if(!a){e==null||e({level:"verbose",message:`Query string value '${n.parameter}' not defined`,region:r,url:i.toString()});return}if(!(0,_.isStringMatch)(a,n.value)){e==null||e({level:"verbose",message:`Query string value '${n.parameter}' is not a match`,region:r,parameterValue:a,criteria:n.value});return}return e==null||e({level:"verbose",message:`Query string value '${n.parameter}' matches`,region:r,url:i.toString(),parameter:n.parameter}),{strength:Number(n.str)}},tt=()=>({name:`${_.SignalType.QueryString}-signal`,signalEvaluatorMapping:()=>({[_.SignalType.QueryString]:be,UTM:be})});var rt=({active:n,options:t})=>!n||typeof window=="undefined"?Te():ke(t),Te=()=>({personalization:()=>!1,test:()=>!1}),ke=({tracker:n,name:t})=>({personalization:({matches:e,isInPersonalizationControlGroup:r,intentScores:i})=>{if(!n||!n.isInitialized())return!1;let a=e&&e.length?e.join(", "):"Default";return n.trackPersonalization(t,{category:"Uniform Personalization",label:a,value:r?1:0,intentScores:i}),!0},test:({testName:e,testSelection:r})=>{if(!n||!n.isInitialized())return!1;let i=typeof document!="undefined"?document.title:"";return n.trackPersonalization(`${e} | ${i}`,{category:"Uniform AB Testing",label:r||"No Variant"}),!0}});var we=class{constructor(t){this._pluginMap=this.mapPlugins(t)}log(t){this.find("onLogMessage").forEach(r=>t(r))}track(t){this.find("track").forEach(r=>t(r))}async initialize(t){let r=this.find("initialize").map(i=>t(i));await Promise.all(r)}scoringChange(t){this.find("onScoringChange").forEach(r=>t(r))}mapPlugins(t){let e={};return t.forEach(r=>{Object.keys(r).forEach(i=>{e[i]=e[i]||[],e[i].push({plugin:r,function:r[i]})})}),e}findPlugins(t){return(this._pluginMap[t]||[]).map(r=>r.plugin)}find(t){return(this._pluginMap[t]||[]).map(r=>r.function)}};var Ee=require("uuid"),Pe="scopeStrategy",j=n=>{let t=()=>({id:(0,Ee.v4)(),created:new Date().valueOf(),state:{},type:n.type,random:Math.random()}),e=s=>{if(typeof n.expirationMinutes=="undefined")return!1;let o=n.expirationMinutes*60*1e3,c=new Date().valueOf(),l=s.updated||s.created;return c-l>=o},{type:r}=n,i,a=()=>{};return{type:r,initialize:async({log:s,storage:o})=>{a=s,i=o},get:async()=>{if(!i)throw new Error("call initialize first");let s=await i.getScope(r);if(s&&e(s)&&(a({level:"info",region:Pe,message:`Scope ${r} is expired, data cleared.`}),s=void 0),!s){a({level:"verbose",region:Pe,message:`Creating scope ${r}`});let c=((n==null?void 0:n.createScope)||t)();return await i.setScope(c),c}return s},save:async s=>{if(!i)throw new Error("call initialize first");await i.setScope(s)},getExpiration:()=>n.expirationMinutes}};var xe=require("@uniformdev/optimize-common");var nt=n=>j({type:xe.Scope.Visit,expirationMinutes:(n==null?void 0:n.expirationMinutes)||20});var Re=require("@uniformdev/optimize-common");var it=()=>j({type:Re.Scope.Visitor});var at=n=>{let t={},e={};return{id:"In-memory Scope Storage",delete:()=>(Object.keys(t).forEach(r=>{delete t[r]}),Object.keys(e).forEach(r=>{delete e[r]}),Promise.resolve()),getScope:r=>Promise.resolve(t[r]),setScope:r=>(t[r.type]=r,Promise.resolve()),getScoring:r=>(n==null?void 0:n.scoringStorage)?n.scoringStorage.getScoring(r):Promise.resolve(e[r]),setScoring:(r,i)=>((n==null?void 0:n.scoringStorage)&&n.scoringStorage.setScoring(r,i),e[i]=r,Promise.resolve())}};var st=()=>{let n={};return{id:"In-memory Test Storage",getTestSelection:t=>{let e=n[t];return Promise.resolve(e)},setTestSelection:(t,e)=>(typeof e=="undefined"?delete n[t]:n[t]=e,Promise.resolve()),delete:()=>(Object.keys(n).forEach(t=>{delete n[t]}),Promise.resolve())}};var V=async(n,t)=>{for(let e of n)try{let r=await t(e);if(r)return r}catch(r){console.error(r)}},k=async(n,t)=>{for(let e=0;e<n.length;e++){let r=n[e];try{e===0?await t(r):t(r).catch(i=>{console.error(i)})}catch(i){console.error(i)}}},M=async(n,t)=>{await Promise.all(n.map(e=>t(e)))};var ot=({tiers:n})=>{let t=n,e=[],r;function i(a){return async(s,o)=>{let c=re(o.values),l=o.updated;e.forEach(g=>{g.time<=o.updated||(g.time>l&&(l=g.time),c=N(c,g.diff))});let u={...o,updated:l,values:c};await Promise.all(a.map(g=>g.storage.setScoring(u,s))),await(r==null?void 0:r(s,u))}}return t.forEach((a,s)=>{var l,u;let o=n.slice(0,s),c=i(o);a.__callback=c,(u=(l=a.storage).setScoringValueExternallyUpdatedCallback)==null||u.call(l,c)}),{id:`Tiered (${n.map(a=>{var s,o;return(o=(s=a.storage)==null?void 0:s.id)!=null?o:"unknown"}).join(", ")})`,delete:async()=>{e=[],await M(n,a=>a.storage.delete())},getScope:async(...a)=>await V(n,s=>s.storage.getScope(...a)),setScope:async(...a)=>{await k(n,s=>s.storage.setScope(...a))},getScoring:async(...a)=>{let s;for(let o=0;o<n.length;o++){let c=t[o];if(s&&!c.loading)return s;if(!s||c.loading==="await"){let u=await c.storage.getScoring(...a);u&&(s=u);continue}let l=s;c.storage.getScoring(a[0]).then(u=>{if(u&&!A(l.values,u.values))return c.__callback(a[0],u)})}return s},setScoring:async(a,s,o,c,l)=>{var d;let u=w(a==null?void 0:a.values,c==null?void 0:c.values);Object.keys(u).length>0&&e.push({time:(d=a==null?void 0:a.updated)!=null?d:new Date().getTime(),diff:u}),await k(n,f=>f.storage.setScoring(a,s,o,c,l))},identify:async a=>{var c;let s=n.filter(l=>l.storage.identify);return s.length===0&&console.warn("Visitor was identified, but no storage tier implemented identification"),(c=(await Promise.all(s.map(l=>l.storage.identify(a)))).filter(l=>l))==null?void 0:c[0]},setScoringValueExternallyUpdatedCallback:a=>r=a}};var B=require("@uniformdev/optimize-common"),ct=({getCookie:n,setCookie:t})=>{let e=s=>JSON.parse(s),r=s=>JSON.stringify(s),i=s=>`uniform_trk_${s.toLocaleLowerCase()}_score`,a={[B.Scope.Visit]:i(B.Scope.Visit),[B.Scope.Visitor]:i(B.Scope.Visitor)};return{getScoring:s=>{let o,c=a[s];if(!c)throw new Error(`Unsupported cookie scope ${s}`);let l=n(c);return l&&(o=e(l)),Promise.resolve(o)},setScoring:(s,o,c)=>{let l=s?r(s):"",u=c?c*60:30*24*60*60,g=a[o];if(!g)throw new Error(`Unsupported cookie scope ${o}`);return t(g,l,u),Promise.resolve()},delete:async()=>(Object.keys(a).forEach(s=>{t(a[s],"",-1)}),Promise.resolve())}};var H="uniform_trk_tests",ne=30*24*60*60,lt=({getCookie:n,setCookie:t})=>{let e=i=>i?JSON.parse(i):void 0,r=()=>{let i,a=n(H);return a&&(i=e(a)),i};return{id:"Cookie Test Storage",getTestSelection:i=>{let a=r(),s=a==null?void 0:a[i];return Promise.resolve(s)},setTestSelection:(i,a)=>{let o={...r(),[i]:a},c=JSON.stringify(o);return t(H,c,ne),Promise.resolve()},delete:()=>(t(H,"",ne),Promise.resolve())}};var ut=({storage:n})=>{let t;function e(r){return async(i,a,...s)=>{await Promise.all(r.map(o=>o.setScoring(a,i))),await(t==null?void 0:t(i,a,...s))}}return n.forEach((r,i)=>{var o;let a=n.slice(0,i),s=e(a);(o=r.setScoringValueExternallyUpdatedCallback)==null||o.call(r,s)}),{id:`Composite (${n.map(r=>{var i;return(i=r==null?void 0:r.id)!=null?i:"unknown"}).join(", ")})`,delete:async()=>{await M(n,r=>r.delete())},getScope:async(...r)=>await V(n,i=>i.getScope(...r)),setScope:async(...r)=>{await k(n,i=>i.setScope(...r))},getScoring:async(...r)=>await V(n,i=>i.getScoring(...r)),setScoring:async(...r)=>{await k(n,i=>i.setScoring(...r))},identify:async r=>{var s;let i=n.filter(o=>o.identify);return i.length===0&&console.warn("Visitor was identified, but no composite storage implements identification"),(s=(await Promise.all(i.map(o=>o.identify(r)))).filter(o=>o))==null?void 0:s[0]},setScoringValueExternallyUpdatedCallback:r=>t=r}};var gt=({storage:n})=>({id:`Composite (${n.map(t=>t.id).join(", ")})`,getTestSelection:async(...t)=>await V(n,e=>e.getTestSelection(...t)),setTestSelection:async(...t)=>{await k(n,e=>e.setTestSelection(...t))},delete:async()=>{await M(n,t=>t.delete())}});var dt=n=>{let t=(n==null?void 0:n.sampleSize)||0;return{isInPersonalizationControlGroup:(e,r)=>e?(typeof r!="undefined"?r:t)>e.random:!1}};var ie=require("@uniformdev/optimize-common"),O=require("@uniformdev/optimize-tracker-common"),G=typeof top!="undefined",ft=n=>{let t,{disableEventListeners:e}=n||{};return e||G&&window.addEventListener("message",async r=>{if(!!r.data&&(0,O.isExtensionSetScoreMessage)(r.data)){let i=r.data.score;i&&(console.warn("[Uniform] browser extension has set intent scores. Note that this sets all scores to the visit scope and clears any existing visitor values.",i),await(t==null?void 0:t.setIntentStrength(ie.Scope.Visitor,{})),await(t==null?void 0:t.setIntentStrength(ie.Scope.Visit,i)))}}),{name:"browser-extension",initialize:r=>{t=r,G&&(top==null||top.postMessage({type:O.ExtensionEvents.Hello,manifest:r.manifest},window.location.origin))},onLogMessage:r=>{G&&(top==null||top.postMessage({type:O.ExtensionEvents.Log,message:r},window.location.origin))},onScoringChange:r=>{!r||G&&(top==null||top.postMessage({type:O.ExtensionEvents.Score,score:r},window.location.origin))}}};var _e=n=>{let{values:t,total:e,missingDistribution:r}=n.reduce((i,a)=>(a.distribution?i.total+=a.distribution:++i.missingDistribution,i.values.push(a.distribution),i),{values:[],total:0,missingDistribution:0});if(e>100)throw`Total distribution ${e} is over the maximum 100.`;if(e<100){let a=(100-e)/r;t.forEach((s,o)=>{typeof s=="undefined"&&(t[o]=a)})}return t},pt=({testName:n,variations:t,random:e,selectedVariantId:r,analyticsEmitter:i})=>{if(e>100||e<0)throw"Random must be between 0 and 100";let a;if(r&&(a=t.find(o=>o.id===r),a||console.warn("Previously selected variant is no longer present.")),!a){let o=_e(t),c=0;a=t.find((l,u)=>{let g=o[u];if(e>c&&e<=c+g)return l;c+=g})}let s=!1;return i==null||i.test({testName:n,testSelection:a==null?void 0:a.id}),{result:a,tracked:s}},mt=()=>Math.floor(Math.random()*100);module.exports=ze(St);0&&(module.exports={AnalyticsEmitter,NoopAnalyticsEmitter,OptimizePluginLoader,OptimizeTracker,TestCookieName,TestExpiration,addBehaviorSignalPlugin,addBrowserExtension,addConsoleLoggerPlugin,addCookieSignalPlugin,addEventSignalPlugin,addLandingPageSignalPlugin,addPageViewCountSignalPlugin,addPageVisitedSignalPlugin,addQueryStringSignalPlugin,behaviorSignalEvaluator,calculateEnrichmentIntentName,cloneScore,combineScores,compositeScopeStorage,compositeTestStorage,cookieScoringStorage,cookieTestStorage,createPercentageTestStrategy,createVisitScopeStrategy,createVisitorScopeStrategy,cumulativeScoringStrategy,decayByDayStrategy,diffScores,doesValueMatchEventProperty,eventSignalEvaluator,generateRandom,getEnrichmentValue,inMemoryScopeStorage,inMemoryTestStorage,normalizeVariationDistributions,parseEnrichment,personalizeList,resolveAnalyticsEmitter,scopeStrategy,scoreIsEmpty,scoresAreEqual,testList,tieredScopeStorage});
{
"name": "@uniformdev/optimize-tracker",
"version": "12.2.1-alpha.107+b30768d5",
"version": "12.2.1-alpha.121+3d33c2be",
"description": "Uniform Optimize tracker",

@@ -28,18 +28,18 @@ "license": "SEE LICENSE IN LICENSE.txt",

"dependencies": {
"@uniformdev/optimize-common": "^12.2.1-alpha.107+b30768d5",
"@uniformdev/optimize-tracker-common": "^12.2.1-alpha.107+b30768d5",
"@uniformdev/optimize-common": "^12.2.1-alpha.121+3d33c2be",
"@uniformdev/optimize-tracker-common": "^12.2.1-alpha.121+3d33c2be",
"uuid": ">=7.0.0"
},
"devDependencies": {
"@types/jest": "27.0.3",
"@types/node": "16.11.18",
"@types/uuid": "8.3.3",
"eslint": "8.4.1",
"eslint-plugin-react": "7.27.1",
"@types/jest": "27.4.0",
"@types/node": "16.11.19",
"@types/uuid": "8.3.4",
"eslint": "8.6.0",
"eslint-plugin-react": "7.28.0",
"eslint-plugin-react-hooks": "4.3.0",
"jest": "27.4.5",
"jest": "27.4.7",
"npm-run-all": "4.1.5",
"rimraf": "3.0.2",
"ts-jest": "27.1.1",
"tsup": "5.11.10"
"ts-jest": "27.1.2",
"tsup": "5.11.11"
},

@@ -52,3 +52,3 @@ "files": [

},
"gitHead": "b30768d5d58d4c75b390274042724d50c1ee1041"
"gitHead": "3d33c2be484210ce3f056e80176fc6f56b69dabc"
}

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc