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
8
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.143 to 12.2.1-alpha.170

2

dist/index.esm.js

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

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};
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)/864e5),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 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});
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)/864e5),$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 Pe=require("uuid"),Ee="scopeStrategy",j=n=>{let t=()=>({id:(0,Pe.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:Ee,message:`Scope ${r} is expired, data cleared.`}),s=void 0),!s){a({level:"verbose",region:Ee,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.143+b54f3127",
"version": "12.2.1-alpha.170+899ea147",
"description": "Uniform Optimize tracker",

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

"dependencies": {
"@uniformdev/optimize-common": "^12.2.1-alpha.143+b54f3127",
"@uniformdev/optimize-tracker-common": "^12.2.1-alpha.143+b54f3127",
"@uniformdev/optimize-common": "^12.2.1-alpha.170+899ea147",
"@uniformdev/optimize-tracker-common": "^12.2.1-alpha.170+899ea147",
"uuid": ">=7.0.0"

@@ -35,12 +35,12 @@ },

"@types/jest": "27.4.0",
"@types/node": "16.11.21",
"@types/node": "16.11.24",
"@types/uuid": "8.3.4",
"eslint": "8.7.0",
"eslint": "8.8.0",
"eslint-plugin-react": "7.28.0",
"eslint-plugin-react-hooks": "4.3.0",
"jest": "27.4.7",
"jest": "27.5.1",
"npm-run-all": "4.1.5",
"rimraf": "3.0.2",
"ts-jest": "27.1.3",
"tsup": "5.11.11"
"tsup": "5.11.13"
},

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

},
"gitHead": "b54f3127570a6a8232fda786952b3abfc0963a49"
"gitHead": "899ea147cdea482a014e02911fc9554c81dd2cbc"
}

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