@walkeros/web-source-cmp-cookiefirst 3.4.2 → 4.0.0-next-1777463920154

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/dev.d.mts CHANGED
@@ -2,6 +2,14 @@ import { WalkerOS, Elb, Source, Logger, Flow, Trigger } from '@walkeros/core';
2
2
  import * as _walkeros_core_dev from '@walkeros/core/dev';
3
3
  import { z } from '@walkeros/core/dev';
4
4
 
5
+ declare module '@walkeros/core' {
6
+ interface SourceMap {
7
+ cookiefirst: {
8
+ type: 'cookiefirst';
9
+ platform?: 'web';
10
+ };
11
+ }
12
+ }
5
13
  /**
6
14
  * CookieFirst consent object structure
7
15
  */
package/dist/dev.d.ts CHANGED
@@ -2,6 +2,14 @@ import { WalkerOS, Elb, Source, Logger, Flow, Trigger } from '@walkeros/core';
2
2
  import * as _walkeros_core_dev from '@walkeros/core/dev';
3
3
  import { z } from '@walkeros/core/dev';
4
4
 
5
+ declare module '@walkeros/core' {
6
+ interface SourceMap {
7
+ cookiefirst: {
8
+ type: 'cookiefirst';
9
+ platform?: 'web';
10
+ };
11
+ }
12
+ }
5
13
  /**
6
14
  * CookieFirst consent object structure
7
15
  */
@@ -1,5 +1,13 @@
1
1
  import { WalkerOS, Elb, Source, Logger, Flow, Trigger } from '@walkeros/core';
2
2
 
3
+ declare module '@walkeros/core' {
4
+ interface SourceMap {
5
+ cookiefirst: {
6
+ type: 'cookiefirst';
7
+ platform?: 'web';
8
+ };
9
+ }
10
+ }
3
11
  /**
4
12
  * CookieFirst consent object structure
5
13
  */
@@ -1,5 +1,13 @@
1
1
  import { WalkerOS, Elb, Source, Logger, Flow, Trigger } from '@walkeros/core';
2
2
 
3
+ declare module '@walkeros/core' {
4
+ interface SourceMap {
5
+ cookiefirst: {
6
+ type: 'cookiefirst';
7
+ platform?: 'web';
8
+ };
9
+ }
10
+ }
3
11
  /**
4
12
  * CookieFirst consent object structure
5
13
  */
@@ -1 +1 @@
1
- "use strict";var SourceCookieFirst=(()=>{var e=Object.defineProperty,n=Object.getOwnPropertyDescriptor,t=Object.getOwnPropertyNames,o=Object.prototype.hasOwnProperty,r=(n,t)=>{for(var o in t)e(n,o,{get:t[o],enumerable:!0})},s={};r(s,{DEFAULT_CATEGORY_MAP:()=>We,SourceCookieFirst:()=>i,analyticsOnlyConsent:()=>f,analyticsOnlyMapped:()=>y,createMockCookieFirstAPI:()=>k,createMockElbFn:()=>b,createMockWindow:()=>O,createTrigger:()=>Le,default:()=>Ue,fullConsent:()=>a,fullConsentMapped:()=>d,marketingOnlyConsent:()=>g,marketingOnlyMapped:()=>m,minimalConsent:()=>u,minimalConsentMapped:()=>v,mockEnv:()=>j,noConsent:()=>l,noopLogger:()=>w,partialConsent:()=>c,partialConsentMapped:()=>p,sourceCookieFirst:()=>Be,step:()=>x,trigger:()=>Ge});var i={},a={necessary:!0,functional:!0,performance:!0,advertising:!0},c={necessary:!0,functional:!0,performance:!1,advertising:!1},u={necessary:!0,functional:!1,performance:!1,advertising:!1},l=null,f={necessary:!0,functional:!1,performance:!0,advertising:!1},g={necessary:!0,functional:!1,performance:!1,advertising:!0},d={functional:!0,analytics:!0,marketing:!0},p={functional:!0,analytics:!1,marketing:!1},v={functional:!0,analytics:!1,marketing:!1},y={functional:!0,analytics:!0,marketing:!1},m={functional:!0,analytics:!1,marketing:!0},h=()=>{},b=()=>()=>Promise.resolve({ok:!0}),w={error:h,warn:h,info:h,debug:h,throw:e=>{throw"string"==typeof e?new Error(e):e},json:h,scope:()=>w},k=(e=null)=>({consent:e}),O=(e=null)=>({CookieFirst:k(e),addEventListener:h,removeEventListener:h}),j={get push(){return b()},get command(){return b()},get elb(){return b()},get window(){return O()},logger:w},x={};r(x,{categoryMapOverride:()=>E,cfInitDetection:()=>C,fullConsent:()=>A,partialConsent:()=>S});var A={title:"Full consent",description:"CookieFirst reports all categories granted and the source forwards a walker consent command with all groups true.",trigger:{type:"consent"},in:{necessary:!0,functional:!0,performance:!0,advertising:!0},out:[["elb","walker consent",{functional:!0,analytics:!0,marketing:!0}]]},S={title:"Partial consent",description:"A partial CookieFirst grant maps analytics and marketing to false in the emitted walker consent command.",trigger:{type:"consent"},in:{necessary:!0,functional:!0,performance:!1,advertising:!1},out:[["elb","walker consent",{functional:!0,analytics:!1,marketing:!1}]]},E={title:"Category map override",description:"Custom categoryMap remaps performance to statistics instead of analytics",trigger:{type:"consent"},in:{necessary:!0,functional:!1,performance:!0,advertising:!1},mapping:{settings:{categoryMap:{performance:"statistics"}}},out:[["elb","walker consent",{functional:!0,statistics:!0,marketing:!1}]]},C={title:"cf_init detection",description:"CMP detected via cf_init CustomEvent (primary detection path)",trigger:{type:"consent"},in:{necessary:!0,functional:!1,performance:!1,advertising:!0},out:[["elb","walker consent",{functional:!0,analytics:!1,marketing:!0}]]},P=Object.defineProperty;((e,n)=>{for(var t in n)P(e,t,{get:n[t],enumerable:!0})})({},{Level:()=>q});var $,q=(($=q||{})[$.ERROR=0]="ERROR",$[$.WARN=1]="WARN",$[$.INFO=2]="INFO",$[$.DEBUG=3]="DEBUG",$);function _(e){return{_meta:{hops:0,path:[e]}}}var M={merge:!0,shallow:!0,extend:!0};function D(e,n={},t={}){t={...M,...t};const o=Object.entries(n).reduce((n,[o,r])=>{const s=e[o];return t.merge&&Array.isArray(s)&&Array.isArray(r)?n[o]=r.reduce((e,n)=>e.includes(n)?e:[...e,n],[...s]):(t.extend||o in e)&&(n[o]=r),n},{});return t.shallow?{...e,...o}:(Object.assign(e,o),e)}function I(e){return Array.isArray(e)}function R(e){return void 0!==e}function T(e){return"function"==typeof e}function F(e){return"object"==typeof e&&null!==e&&!I(e)&&"[object Object]"===Object.prototype.toString.call(e)}function N(e){return"string"==typeof e}function H(e,n=new WeakMap){if("object"!=typeof e||null===e)return e;if(n.has(e))return n.get(e);const t=Object.prototype.toString.call(e);if("[object Object]"===t){const t={};n.set(e,t);for(const o in e)Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=H(e[o],n));return t}if("[object Array]"===t){const t=[];return n.set(e,t),e.forEach(e=>{t.push(H(e,n))}),t}if("[object Date]"===t)return new Date(e.getTime());if("[object RegExp]"===t){const n=e;return new RegExp(n.source,n.flags)}return e}function L(e,n="",t){const o=n.split(".");let r=e;for(let e=0;e<o.length;e++){const n=o[e];if("*"===n&&I(r)){const n=o.slice(e+1).join("."),s=[];for(const e of r){const o=L(e,n,t);s.push(o)}return s}if(r=r instanceof Object?r[n]:void 0,void 0===r)break}return R(r)?r:t}function G(e,n,t){if(!F(e))return e;const o=H(e),r=n.split(".");let s=o;for(let e=0;e<r.length;e++){const n=r[e];e===r.length-1?s[n]=t:(n in s&&"object"==typeof s[n]&&null!==s[n]||(s[n]={}),s=s[n])}return o}var W={data:e=>e.data,globals:e=>e.globals,context:e=>e.context,user:e=>e.user,source:e=>e.source,version:e=>e.version,event:e=>({entity:e.entity,action:e.action,id:e.id,timestamp:e.timestamp,name:e.name,trigger:e.trigger,group:e.group,count:e.count,timing:e.timing})};function B(e,n={},t={}){const o={...n,...t},r={};let s=!e||0===Object.keys(e).length;return Object.keys(o).forEach(n=>{o[n]&&(r[n]=!0,e&&e[n]&&(s=!0))}),!!s&&r}function U(e=6,n){if(n){const t=n.length;let o="";for(let r=0;r<e;r++)o+=n[Math.random()*t|0];return o}let t="";for(let n=36;t.length<e;)t+=(Math.random()*n|0).toString(n);return t}function K(e,n=1e3,t=!1){let o,r=null,s=!1;return(...i)=>new Promise(a=>{const c=t&&!s;r&&clearTimeout(r),r=setTimeout(()=>{r=null,t&&!s||(o=e(...i),a(o))},n),c&&(s=!0,o=e(...i),a(o))})}function z(e){return{message:e.message,name:e.name,stack:e.stack,cause:e.cause}}function J(e,n){let t,o={};return e instanceof Error?(t=e.message,o.error=z(e)):t=e,void 0!==n&&(n instanceof Error?o.error=z(n):"object"==typeof n&&null!==n?(o={...o,...n},"error"in o&&o.error instanceof Error&&(o.error=z(o.error))):o.value=n),{message:t,context:o}}var V=(e,n,t,o)=>{const r=`${q[e]}${o.length>0?` [${o.join(":")}]`:""}`,s=Object.keys(t).length>0,i=0===e?console.error:1===e?console.warn:console.log;s?i(r,n,t):i(r,n)};function Y(e={}){return Q({level:void 0!==e.level?(n=e.level,"string"==typeof n?q[n]:n):0,handler:e.handler,jsonHandler:e.jsonHandler,scope:[]});var n}function Q(e){const{level:n,handler:t,jsonHandler:o,scope:r}=e,s=(e,o,s)=>{if(e<=n){const n=J(o,s);t?t(e,n.message,n.context,r,V):V(e,n.message,n.context,r)}};return{error:(e,n)=>s(0,e,n),warn:(e,n)=>s(1,e,n),info:(e,n)=>s(2,e,n),debug:(e,n)=>s(3,e,n),throw:(e,n)=>{const o=J(e,n);throw t?t(0,o.message,o.context,r,V):V(0,o.message,o.context,r),new Error(o.message)},json:e=>{o?o(e):console.log(JSON.stringify(e,null,2))},scope:e=>Q({level:n,handler:t,jsonHandler:o,scope:[...r,e]})}}function X(e){return function(e){return"boolean"==typeof e}(e)||N(e)||function(e){return"number"==typeof e&&!Number.isNaN(e)}(e)||!R(e)||I(e)&&e.every(X)||F(e)&&Object.values(e).every(X)}function Z(e){return X(e)?e:void 0}function ee(e,n,t){return function(...o){try{return e(...o)}catch(e){if(!n)return;return n(e)}finally{null==t||t()}}}function ne(e,n,t){return async function(...o){try{return await e(...o)}catch(e){if(!n)return;return await n(e)}finally{await(null==t?void 0:t())}}}async function te(e,n={},t={}){var o;if(!R(e))return;const r=F(e)&&e.consent||t.consent||(null==(o=t.collector)?void 0:o.consent),s=I(n)?n:[n];for(const n of s){const o=await ne(oe)(e,n,{...t,consent:r});if(R(o))return o}}async function oe(e,n,t={}){const{collector:o,consent:r}=t;return(I(n)?n:[n]).reduce(async(n,s)=>{const i=await n;if(i)return i;const a=N(s)?{key:s}:s;if(!Object.keys(a).length)return;const{condition:c,consent:u,fn:l,key:f,loop:g,map:d,set:p,validate:v,value:y}=a;if(c&&!await ne(c)(e,s,o))return;if(u&&!B(u,r))return y;let m=R(y)?y:e;if(l&&(m=await ne(l)(e,s,t)),f&&(m=L(e,f,y)),g){const[n,o]=g,r="this"===n?[e]:await te(e,n,t);I(r)&&(m=(await Promise.all(r.map(e=>te(e,o,t)))).filter(R))}else d?m=await Object.entries(d).reduce(async(n,[o,r])=>{const s=await n,i=await te(e,r,t);return R(i)&&(s[o]=i),s},Promise.resolve({})):p&&(m=await Promise.all(p.map(n=>oe(e,n,t))));v&&!await ne(v)(m)&&(m=void 0);const h=Z(m);return R(h)?h:Z(y)},Promise.resolve(void 0))}async function re(e,n,t){var o;n.policy&&await Promise.all(Object.entries(n.policy).map(async([n,o])=>{const r=await te(e,o,{collector:t});e=G(e,n,r)}));const{eventMapping:r,mappingKey:s}=await async function(e,n){var t;const[o,r]=(e.name||"").split(" ");if(!n||!o||!r)return{};let s,i="",a=o,c=r;const u=n=>{if(n)return(n=I(n)?n:[n]).find(n=>!n.condition||n.condition(e))};n[a]||(a="*");const l=n[a];return l&&(l[c]||(c="*"),s=u(l[c])),s||(a="*",c="*",s=u(null==(t=n[a])?void 0:t[c])),s&&(i=`${a} ${c}`),{eventMapping:s,mappingKey:i}}(e,n.mapping);(null==r?void 0:r.policy)&&await Promise.all(Object.entries(r.policy).map(async([n,o])=>{const r=await te(e,o,{collector:t});e=G(e,n,r)}));let i=n.data&&await te(e,n.data,{collector:t});const a=Boolean(null==r?void 0:r.skip);if(r){if(r.ignore)return{event:e,data:i,mapping:r,mappingKey:s,ignore:!0,skip:a};if(r.name&&(e.name=r.name),r.data){const n=r.data&&await te(e,r.data,{collector:t});i=F(i)&&F(n)?D(i,n):n}}const c=null!=(o=null==r?void 0:r.include)?o:n.include;if(c&&c.length>0){const n=function(e,n){const t={},o=n.includes("all")?Object.keys(W):n;for(const n of o){const o=W[n];if(!o)continue;const r=o(e);if(F(r))for(const[e,o]of Object.entries(r)){if(void 0===o)continue;const r="context"===n&&Array.isArray(o)?o[0]:o;t[`${n}_${e}`]=r}}return t}(e,c);Object.keys(n).length>0&&(i=F(i)?D(n,i):null!=i?i:n)}return{event:e,data:i,mapping:r,mappingKey:s,ignore:!1,skip:a}}function se(e,n,t,o){return function(...r){let s;const i="pre"+n,a="post"+n,c=t[i],u=t[a],l=(e,n)=>{o?o.warn(e,{error:n}):console.warn(e,n)};if(c)try{s=c({fn:e},...r)}catch(n){l(`Hook ${String(i)} failed, falling back to original function`,n),s=e(...r)}else s=e(...r);if(u)try{s=u({fn:e,result:s},...r)}catch(e){l(`Hook ${String(a)} failed, keeping original result`,e)}return s}}function ie(e){if("*"===e)return()=>!0;if("and"in e){const n=e.and.map(ie);return e=>n.every(n=>n(e))}if("or"in e){const n=e.or.map(ie);return e=>n.some(n=>n(e))}return function(e){const{key:n,operator:t,value:o,not:r}=e,s=function(e,n){switch(e){case"eq":return e=>String(null!=e?e:"")===n;case"contains":return e=>String(null!=e?e:"").includes(n);case"prefix":return e=>String(null!=e?e:"").startsWith(n);case"suffix":return e=>String(null!=e?e:"").endsWith(n);case"regex":{const e=new RegExp(n);return n=>e.test(String(null!=n?n:""))}case"gt":{const e=Number(n);return n=>Number(n)>e}case"lt":{const e=Number(n);return n=>Number(n)<e}case"exists":return e=>null!=e}}(t,o);return e=>{const t=L(e,n),o=s(t);return r?!o:o}}(e)}function ae(e){return Array.isArray(e)&&e.length>0&&"object"==typeof e[0]&&null!==e[0]&&"match"in e[0]}function ce(e){if(null!=e){if("string"==typeof e)return{type:"static",value:e};if(Array.isArray(e)){if(0===e.length)return;return ae(e)?{type:"routes",routes:e.map(e=>({match:ie(e.match),next:ce(e.next)}))}:{type:"chain",value:e}}}}function ue(e,n={}){if(e){if("static"===e.type)return e.value;if("chain"===e.type)return e.value;for(const t of e.routes)if(t.match(n))return ue(t.next,n)}}function le(e,n){const t={ingest:null!=e?e:{}};return void 0!==n&&(t.event=n),t}function fe(e){var n;return{full:null!=(n=e.full)&&n,storeId:e.store,rules:e.rules.map(e=>({match:ie(e.match),key:e.key,ttl:e.ttl,update:e.update}))}}function ge(e,n,t,o){const r=e.rules.find(e=>e.match(t));if(!r)return null;const s=r.key.map(e=>{var n;return String(null!=(n=L(t,e))?n:"")});if(s.every(e=>""===e))return null;const i=`${o}:${s.join(":")}`,a=n.get(i);return void 0!==a?{status:"HIT",key:i,value:a,rule:r}:{status:"MISS",key:i,rule:r}}function de(e,n,t,o){e.set(n,t,1e3*o)}async function pe(e,n,t){if(!n)return e;let o=e;for(const[e,r]of Object.entries(n))o=G(o,e,await te(t,r));return o}var ve={Action:"action",Actions:"actions",Config:"config",Consent:"consent",Context:"context",Custom:"custom",Destination:"destination",Elb:"elb",Globals:"globals",Hook:"hook",Init:"init",Link:"link",On:"on",Prefix:"data-elb",Ready:"ready",Run:"run",Session:"session",Shutdown:"shutdown",User:"user",Walker:"walker"};function ye(e,n){return e.storeId&&n.stores[e.storeId]?n.stores[e.storeId]:n.stores.__cache}function me(e){var n;const t={};for(const[o,r]of Object.entries(e)){const e=null==(n=r.config)?void 0:n.next;e&&!ae(e)?t[o]={next:e}:t[o]={}}return t}function he(e,n){const t=e.config||{},o=e[n];return void 0!==o?{config:{...t,[n]:o},chainValue:o}:{config:t,chainValue:void 0}}function be(e,n={}){if(!e)return[];if(Array.isArray(e))return e;const t=[],o=new Set;let r=e;for(;r&&n[r]&&!o.has(r);){o.add(r),t.push(r);const e=n[r].next;if(Array.isArray(e)){t.push(...e);break}r=e}return t}async function we(e,n,t){if(n.init&&!n.config.init){const o=n.type||"unknown",r=e.logger.scope(`transformer:${o}`),s={collector:e,logger:r,id:t,ingest:_(t),config:n.config,env:je(n.config.env)};r.debug("init");const i=await se(n.init,"TransformerInit",e.hooks,e.logger)(s);if(!1===i)return!1;n.config={...i||n.config,env:(null==i?void 0:i.env)||n.config.env,init:!0},r.debug("init done")}return!0}async function ke(e,n,t,o,r,s){const i=n.type||"unknown",a=e.logger.scope(`transformer:${i}`),c={collector:e,logger:a,id:t,ingest:r,config:n.config,env:{...je(n.config.env),...s?{respond:s}:{}}};a.debug("push",{event:o.name});const u=await se(n.push,"TransformerPush",e.hooks,e.logger)(o,c);return a.debug("push done"),u}async function Oe(e,n,t,o,r,s,i){var a,c,u,l,f,g;i&&(null==r?void 0:r._meta)&&(r._meta.chainPath=i);let d=o,p=s;for(const o of t){const s=n[o];if(!s){e.logger.warn(`Transformer not found: ${o}`);continue}if(r&&r._meta&&r._meta.path.length>256)return e.logger.error(`Max path length exceeded at ${o}`),{event:null,respond:p};if(r&&r._meta&&(r._meta.hops++,r._meta.path.push(o)),!await ne(we)(e,s,o))return e.logger.error(`Transformer init failed: ${o}`),{event:null,respond:p};if(i&&void 0!==(null==(c=null==(a=s.config)?void 0:a.chainMocks)?void 0:c[i])){const n=s.config.chainMocks[i];e.logger.scope(`transformer:${s.type||"unknown"}`).debug("chainMock",{chain:i}),d=n;continue}if(void 0!==(null==(u=s.config)?void 0:u.mock)){e.logger.scope(`transformer:${s.type||"unknown"}`).debug("mock"),d=s.config.mock;continue}if(null==(l=s.config)?void 0:l.disabled)continue;const v=null==(f=s.config)?void 0:f.cache,y=v?fe(v):void 0,m=y?ye(y,e):void 0;let h;if(y&&m){const e=ge(y,m,le(r,d),`t:${o}`);if("HIT"===(null==e?void 0:e.status)&&e.value){if(d=e.value,y.full)return{event:d,respond:p};continue}"MISS"===(null==e?void 0:e.status)&&(h={key:e.key,ttl:e.rule.ttl})}const b=s.config.before;if(b){const t=be("string"==typeof b||Array.isArray(b)&&!ae(b)?b:ue(ce(b),le(r,d))||void 0,me(n));if(t.length>0){const o=await Oe(e,n,t,d,r,p,i);if(null===o.event)return{event:null,respond:null!=(g=o.respond)?g:p};o.respond&&(p=o.respond),d=Array.isArray(o.event)?o.event[0]:o.event}}const w=await ne(ke,n=>(e.logger.scope(`transformer:${s.type||"unknown"}`).error("Push failed",{error:n}),!1))(e,s,o,d,r,p);if(!1===w)return{event:null,respond:p};if(Array.isArray(w)){const s=t.slice(t.indexOf(o)+1),a=await Promise.all(w.map(async t=>{const o=t.event||d,a=r?{...r,_meta:{...r._meta,path:[...r._meta.path]}}:_("unknown");if(t.next){let r=t.next;if(ae(t.next)){r=ue(ce(t.next),le(a,o))}if(r){const t=be(r,me(n));if(t.length>0)return Oe(e,n,t,o,a,p,i)}return{event:o,respond:p}}return s.length>0?Oe(e,n,s,o,a,p,i):{event:o,respond:p}}));let c=p;const u=[];for(const e of a.flat())if(null!==e)if(e&&"object"==typeof e&&"event"in e){const n=e;if(n.respond&&(c=n.respond),null===n.event)continue;Array.isArray(n.event)?u.push(...n.event):u.push(n.event)}else u.push(e);return 0===u.length?{event:null,respond:c}:1===u.length?{event:u[0],respond:c}:{event:u,respond:c}}if(w&&"object"==typeof w){const{event:t,respond:o,next:s}=w;if(o&&(p=o),s){let o=s;if(ae(s)){if(o=ue(ce(s),le(r,d)),!o){t&&(d=t);continue}}const a=be(o,me(n));return a.length>0?Oe(e,n,a,t||d,r,p,i):(e.logger.warn(`Branch target not found: ${JSON.stringify(s)}`),{event:null,respond:p})}t&&(d=t)}if(h&&m&&de(m,h.key,d,h.ttl),(!w||"object"==typeof w&&!w.next)&&s.config.next&&ae(s.config.next)){const t=ue(ce(s.config.next),le(r,d));if(t){const o=be(t,me(n));if(o.length>0)return Oe(e,n,o,d,r,p,i)}return{event:d,respond:p}}}return{event:d,respond:p}}function je(e){return e&&F(e)?e:{}}async function xe(e,n,t){var o;const{code:r,config:s={},env:i={},primary:a,next:c,before:u,cache:l}=t;let f,g=_(n);const d=l?fe({...l,full:null==(o=l.full)||o}):void 0,p=ce(c),v=Array.isArray(c)&&ae(c)||!p?void 0:be(ue(p),me(e.transformers)),y=ce(u),m=Array.isArray(u)&&ae(u)||!y?void 0:be(ue(y),me(e.transformers)),h=e.logger.scope("source").scope(n),b={push:async(t,o={})=>{let r,i=t;const a=null!=m?m:y?be(ue(y,le(g)),me(e.transformers)):[];if(a.length>0&&e.transformers&&Object.keys(e.transformers).length>0){const t=await Oe(e,e.transformers,a,i,g,f,`source.${n}.before`);if(null===t.event)return{ok:!0};t.respond&&(f=t.respond),i=Array.isArray(t.event)?t.event[0]:t.event}if(d){const t=ye(d,e);if(t){const e=le(g),o=ge(d,t,e,`s:${n}`);if(o){if("HIT"===o.status&&void 0!==o.value&&d.full){let n=o.value;return o.rule.update&&(n=await pe(n,o.rule.update,{...e,cache:{status:"HIT"}})),null==f||f(n),{ok:!0}}if("MISS"===o.status&&d.full&&f){const n=f,s=o.rule.update,i={...e,cache:{status:"MISS"}},a=o.key,c=o.rule.ttl;f=e=>{de(t,a,e,c),s?r=(async()=>{const t=await pe(e,s,i);n(t)})():n(e)}}"MISS"!==o.status||d.full||de(t,o.key,!0,o.rule.ttl)}}}const c=null!=v?v:p?be(ue(p,le(g)),me(e.transformers)):[],u=await e.push(i,{...o,id:n,ingest:g,respond:f,mapping:s,preChain:c});return r&&await r,u},command:e.command,sources:e.sources,elb:e.sources.elb.push,logger:h,...i},w={collector:e,logger:h,id:n,config:s,env:b,setIngest:async t=>{if(!s.ingest)return void(g=_(n));const o=await te(t,s.ingest,{collector:e}),r=_(n);g={...r,...o,_meta:r._meta}},setRespond:e=>{f=e}},k=await ne(r)(w);if(!k)return;const O=k.type||"unknown",j=e.logger.scope(O).scope(n);return b.logger=j,a&&(k.config={...k.config,primary:a}),k}function Ae(e,n,t,o,r){if(!n.on)return;const s=n.type||"unknown",i=e.logger.scope(s).scope("on").scope(o),a={collector:e,logger:i,id:t,config:n.config,data:r,env:De(n.env,n.config.env)};ee(n.on)(o,a)}function Se(e,n,t,o){let r;switch(n){case ve.Consent:r=o||e.consent;break;case ve.Session:r=e.session;break;case ve.User:r=o||e.user;break;case ve.Custom:r=o||e.custom;break;case ve.Globals:r=o||e.globals;break;case ve.Config:r=o||e.config;break;case ve.Ready:case ve.Run:default:r=void 0}if(t.length)switch(n){case ve.Consent:!function(e,n,t){const o=t||e.consent;n.forEach(n=>{Object.keys(o).filter(e=>e in n).forEach(t=>{ee(n[t])(e,o)})})}(e,t,o);break;case ve.Ready:case ve.Run:i=t,(s=e).allowed&&i.forEach(e=>{ee(e)(s)});break;case ve.Session:!function(e,n){e.session&&n.forEach(n=>{ee(n)(e,e.session)})}(e,t);break;default:t.forEach(n=>{"function"==typeof n&&ee(n)(e,r)})}var s,i}function Ee(e,n,t,o){if(!e)return[];if(n){const e=ue(n,le(o));return e?be(e,me(t)):[]}return be(e,me(t))}async function Ce(e,n,t){const{code:o,config:r={},env:s={},before:i,next:a,cache:c}=n;if(!T(o.push))return _e({ok:!1,failed:{invalid:{type:"invalid",error:"Destination code must have a push method"}}});const u=t||r||{init:!1};let l=i?{...u,before:i}:{...u};a&&(l={...l,next:a}),c&&(l={...l,cache:c});const f={...o,config:l,env:De(o.env,s)};let g=f.config.id;if(!g)do{g=U(5,"abcdefghijklmnopqrstuvwxyz")}while(e.destinations[g]);return e.destinations[g]=f,!1!==f.config.queue&&(f.queuePush=[...e.queue]),Pe(e,void 0,{},{[g]:f})}async function Pe(e,n,t={},o){const{allowed:r,consent:s,globals:i,user:a}=e;if(!r)return _e({ok:!1});n&&(e.queue.push(n),e.status.in++),o||(o=e.destinations);const c=await Promise.all(Object.entries(o||{}).map(async([o,r])=>{var c,u,l;if(r.config.disabled)return{id:o,destination:r,skipped:!0};let f=(r.queuePush||[]).map(e=>({...e,consent:s}));r.queuePush=[],n&&f.push(H(n));const g=t.ingest?{...t.ingest,_meta:{...t.ingest._meta,path:[...t.ingest._meta.path]}}:_("unknown");if(!f.length&&!(null==(c=r.queueOn)?void 0:c.length))return{id:o,destination:r,skipped:!0};if(!f.length&&(null==(u=r.queueOn)?void 0:u.length)){const n=await ne($e)(e,r,o);return{id:o,destination:r,skipped:!n}}const d=[],p=f.filter(e=>{const n=B(r.config.consent,s,e.consent);return!n||(e.consent=n,d.push(e),!1)});if(r.queuePush.push(...p),!d.length)return{id:o,destination:r,queue:f};if(!await ne($e)(e,r,o))return{id:o,destination:r,queue:f};let v,y;r.dlq||(r.dlq=[]);const m=r.config.before,h=Ee(m,m&&ae(m)?ce(m):void 0,e.transformers,g),b=r.config.next,w=b&&ae(b)?ce(b):void 0,k=null==(l=r.config)?void 0:l.cache,O=k?fe(k):void 0,j=O?ye(O,e):void 0;let x=0;return await Promise.all(d.map(async n=>{let s;if(n.globals=D(i,n.globals),n.user=D(a,n.user),(null==O?void 0:O.full)&&j){const e=le(g,n),t=ge(O,j,e,`d:${o}`);if("HIT"===(null==t?void 0:t.status))return n;"MISS"===(null==t?void 0:t.status)&&(s={key:t.key,ttl:t.rule.ttl})}let c=n,u=t.respond;if(h.length>0&&e.transformers&&Object.keys(e.transformers).length>0){const r=await Oe(e,e.transformers,h,n,g,t.respond,`destination.${o}.before`);if(null===r.event)return n;r.respond&&(u=r.respond),c=Array.isArray(r.event)?r.event[0]:r.event}if(O&&!O.full&&j){const e=le(g,c),t=ge(O,j,e,`d:${o}`);if("HIT"===(null==t?void 0:t.status))return n;"MISS"===(null==t?void 0:t.status)&&(s={key:t.key,ttl:t.rule.ttl})}const l=Date.now();let f=!1;const d=await ne(qe,n=>{const t=r.type||"unknown";e.logger.scope(t).error("Push failed",{error:n,event:c.name}),v=n,f=!0,r.dlq.push([c,n])})(e,r,o,c,g,u);if(x+=Date.now()-l,s&&j&&void 0===r.config.mock&&de(j,s.key,null==d||d,s.ttl),void 0!==d&&(y=d),!f&&b){void 0!==d&&(g._response=d);const n=Ee(b,w,e.transformers,g);if(n.length>0&&e.transformers&&Object.keys(e.transformers).length>0){const t=await Oe(e,e.transformers,n,c,g,u,`destination.${o}.next`);t.respond&&(u=t.respond)}}return n})),{id:o,destination:r,error:v,response:y,totalDuration:x}})),u={},l={},f={};for(const n of c){if(n.skipped)continue;const t={type:n.destination.type||"unknown",data:n.response};e.status.destinations[n.id]||(e.status.destinations[n.id]={count:0,failed:0,duration:0});const o=e.status.destinations[n.id],r=Date.now();n.error?(t.error=n.error,f[n.id]=t,o.failed++,o.lastAt=r,o.duration+=n.totalDuration||0,e.status.failed++):n.queue&&n.queue.length?l[n.id]=t:(u[n.id]=t,o.count++,o.lastAt=r,o.duration+=n.totalDuration||0,e.status.out++)}return _e({event:n,...Object.keys(u).length&&{done:u},...Object.keys(l).length&&{queued:l},...Object.keys(f).length&&{failed:f}})}async function $e(e,n,t){var o;if(n.init&&!n.config.init){const r=n.type||"unknown",s=e.logger.scope(r),i={collector:e,logger:s,id:t,config:n.config,env:De(n.env,n.config.env)};s.debug("init");const a=await se(n.init,"DestinationInit",e.hooks,e.logger)(i);if(!1===a)return a;if(n.config={...a||n.config,init:!0},null==(o=n.queueOn)?void 0:o.length){const o=n.queueOn;n.queueOn=[];for(const{type:r,data:s}of o)Ae(e,n,t,r,s)}s.debug("init done")}return!0}async function qe(e,n,t,o,r,s){const{config:i}=n,a=await re(o,i,e);if(a.ignore)return!1;const c=n.type||"unknown",u=e.logger.scope(c),l={collector:e,logger:u,id:t,config:i,data:a.data,rule:a.mapping,ingest:r,env:{...De(n.env,i.env),...s?{respond:s}:{}}};if(void 0!==i.mock)return u.debug("mock",{event:a.event.name}),i.mock;const f=a.mapping,g=a.mappingKey||"* *";if(!(null==f?void 0:f.batch)||!n.pushBatch||void 0!==i.mock){u.debug("push",{event:a.event.name});const t=await se(n.push,"DestinationPush",e.hooks,e.logger)(a.event,l);return u.debug("push done"),t}{if(n.batches=n.batches||{},!n.batches[g]){const o={key:g,events:[],data:[]};n.batches[g]={batched:o,batchFn:K(()=>{const o=n.batches[g].batched,a={collector:e,logger:u,id:t,config:i,data:void 0,rule:f,ingest:r,env:{...De(n.env,i.env),...s?{respond:s}:{}}};u.debug("push batch",{events:o.events.length}),se(n.pushBatch,"DestinationPushBatch",e.hooks,e.logger)(o,a),u.debug("push batch done"),o.events=[],o.data=[]},f.batch)}}const o=n.batches[g];o.batched.events.push(a.event),R(a.data)&&o.batched.data.push(a.data),o.batchFn()}return!0}function _e(e){return{ok:!(null==e?void 0:e.failed),...e}}function Me(e){const{code:n,config:t={},env:o={},cache:r}=e,{config:s}=he(e,"before"),{config:i}=he({...e,config:s},"next"),a={...n.config,...t,...i};r&&(a.cache=r);const c=De(n.env,o);return{...n,config:a,env:c}}function De(e,n){return e||n?n?e&&F(e)&&F(n)?{...e,...n}:n:e:{}}async function Ie(e,n,t){const o=Object.entries(e).map(async([e,o])=>{var r;const s=o.destroy;if(!s)return;const i=o.type||"unknown",a=t.scope(i),c={id:e,config:o.config,env:null!=(r=o.env)?r:{},logger:a};try{await Promise.race([s(c),new Promise((t,o)=>setTimeout(()=>o(new Error(`${n} '${e}' destroy timed out`)),5e3))])}catch(t){a.error(`${n} '${e}' destroy failed: ${t}`)}});await Promise.allSettled(o)}async function Re(e,n,t,o){let r,s,i=!1;switch(n){case ve.Config:F(t)&&(D(e.config,t,{shallow:!1}),s=t,i=!0);break;case ve.Consent:if(F(t)){const{update:n}=function(e,n){const t={};return Object.entries(n).forEach(([e,n])=>{t[e]=!!n}),e.consent=D(e.consent,t),{update:t}}(e,t);s=n,i=!0}break;case ve.Custom:F(t)&&(e.custom=D(e.custom,t),s=t,i=!0);break;case ve.Destination:F(t)&&("code"in t&&F(t.code)?r=await Ce(e,t,o):T(t.push)&&(r=await Ce(e,{code:t},o)));break;case ve.Globals:F(t)&&(e.globals=D(e.globals,t),s=t,i=!0);break;case ve.On:N(t)&&await async function(e,n,t){const o=e.on,r=o[n]||[],s=I(t)?t:[t];s.forEach(e=>{r.push(e)}),o[n]=r,Se(e,n,s)}(e,t,o);break;case ve.Ready:i=!0;break;case ve.Run:r=await async function(e,n){return e.allowed=!0,e.count=0,e.group=U(),e.timing=Date.now(),n&&(n.consent&&(e.consent=D(e.consent,n.consent)),n.user&&(e.user=D(e.user,n.user)),n.globals&&(e.globals=D(e.config.globalsStatic||{},n.globals)),n.custom&&(e.custom=D(e.custom,n.custom))),Object.values(e.destinations).forEach(e=>{e.queuePush=[]}),e.queue=[],e.round++,await Pe(e)}(e,t),i=!0;break;case ve.Session:i=!0;break;case ve.Shutdown:await async function(e){const n=e.logger;await Ie(e.sources,"source",n),await Ie(e.destinations,"destination",n),await Ie(e.transformers,"transformer",n),await Ie(e.stores,"store",n)}(e);break;case ve.User:F(t)&&(D(e.user,t,{shallow:!1}),s=t,i=!0)}return i&&(await async function(e,n,t,o){let r,s=t||[];switch(t||(s=e.on[n]||[]),n){case ve.Consent:r=o||e.consent;break;case ve.Session:r=e.session;break;case ve.User:r=o||e.user;break;case ve.Custom:r=o||e.custom;break;case ve.Globals:r=o||e.globals;break;case ve.Config:r=o||e.config;break;case ve.Ready:case ve.Run:default:r=void 0}let i=!1;for(const t of Object.values(e.sources))t.on&&!1===await ne(t.on)(n,r)&&(i=!0);return Object.entries(e.destinations).forEach(([t,o])=>{if(o.on){if(!o.config.init)return o.queueOn=o.queueOn||[],void o.queueOn.push({type:n,data:r});Ae(e,o,t,n,r)}}),(Object.keys(e.pending.sources).length>0||Object.keys(e.pending.destinations).length>0)&&await async function(e,n){var t,o;for(const[o,r]of Object.entries(e.pending.sources)){if(!e.pending.sources[o]||e.sources[o])continue;const s=null==(t=r.config)?void 0:t.require;if(!s)continue;const i=s.indexOf(n);if(-1===i)continue;if(s.splice(i,1),s.length>0)continue;delete e.pending.sources[o];const a=await xe(e,o,r);a&&(e.sources[o]=a)}for(const[t,r]of Object.entries(e.pending.destinations)){if(!e.pending.destinations[t]||e.destinations[t])continue;const s=null==(o=r.config)?void 0:o.require;if(!s)continue;const i=s.indexOf(n);if(-1===i)continue;if(s.splice(i,1),s.length>0)continue;delete e.pending.destinations[t];const a=Me(r);!1!==a.config.queue&&(a.queuePush=[...e.queue]),e.destinations[t]=a}}(e,n),Se(e,n,s,o),!i}(e,n,void 0,s),r=await Pe(e)),r||_e({ok:!0})}function Te(e,n){if(!n.name)throw new Error("Event name is required");const[t,o]=n.name.split(" ");if(!t||!o)throw new Error("Event name is invalid");++e.count;const{timestamp:r=Date.now(),group:s=e.group,count:i=e.count}=n,{name:a=`${t} ${o}`,data:c={},context:u={},globals:l=e.globals,custom:f={},user:g=e.user,nested:d=[],consent:p=e.consent,id:v=`${r}-${s}-${i}`,trigger:y="",entity:m=t,action:h=o,timing:b=0,version:w={source:e.version,tagging:e.config.tagging||0},source:k={type:"collector",id:"",previous_id:""}}=n;return{name:a,data:c,context:u,globals:l,custom:f,user:g,nested:d,consent:p,id:v,trigger:y,entity:m,action:h,timestamp:r,timing:b,group:s,count:i,version:w,source:k}}async function Fe(e){var n,t;const o=D({globalsStatic:{},sessionStatic:{},tagging:0,run:!0},e,{merge:!1,extend:!1}),r=Y({level:null==(n=e.logger)?void 0:n.level,handler:null==(t=e.logger)?void 0:t.handler}),s={...o.globalsStatic,...e.globals},i={allowed:!1,config:o,consent:e.consent||{},count:0,custom:e.custom||{},destinations:{},transformers:{},stores:{},globals:s,group:"",hooks:e.hooks||{},logger:r,on:{},queue:[],round:0,session:void 0,status:{startedAt:Date.now(),in:0,out:0,failed:0,sources:{},destinations:{}},timing:Date.now(),user:e.user||{},version:"3.4.2",sources:{},pending:{sources:{},destinations:{}},push:void 0,command:void 0};var a,c;i.push=function(e,n){return se(async(t,o={})=>await ne(async()=>{var r;const s=Date.now(),{id:i,ingest:a,respond:c,mapping:u,preChain:l,include:f,exclude:g}=o;let d=c,p=t;const v=f||g?function(e,n,t){let o=e;return n&&(o=Object.fromEntries(Object.entries(o).filter(([e])=>n.includes(e)))),t&&(o=Object.fromEntries(Object.entries(o).filter(([e])=>!t.includes(e)))),o}(e.destinations,f,g):void 0,y=null!=a?a:_(i||"unknown");if(u){const n=await re(p,u,e);if(n.ignore)return _e({ok:!0});if(u.consent&&!B(u.consent,e.consent,n.event.consent))return _e({ok:!0});p=n.event}if((null==l?void 0:l.length)&&e.transformers&&Object.keys(e.transformers).length>0){const t=await Oe(e,e.transformers,l,p,y,d,i?`source.${i}.next`:void 0);if(null===t.event)return _e({ok:!0});if(t.respond&&(d=t.respond),Array.isArray(t.event)){const o=await Promise.all(t.event.map(async t=>{const o=n(t),r=Te(e,o);return Pe(e,r,{id:i,ingest:y,respond:d},v)}));if(i){e.status.sources[i]||(e.status.sources[i]={count:0,duration:0});const n=e.status.sources[i];n.count+=t.event.length,n.lastAt=Date.now(),n.duration+=Date.now()-s}return null!=(r=o[0])?r:_e({ok:!0})}p=t.event}const m=n(p),h=Te(e,m),b=await Pe(e,h,{id:i,ingest:y,respond:d},v);if(i){e.status.sources[i]||(e.status.sources[i]={count:0,duration:0});const n=e.status.sources[i];n.count++,n.lastAt=Date.now(),n.duration+=Date.now()-s}return b},()=>_e({ok:!1}))(),"Push",e.hooks,e.logger)}(i,e=>({timing:Math.round((Date.now()-i.timing)/10)/100,source:{type:"collector",id:"",previous_id:""},...e})),i.command=(c=Re,se(async(e,n,t)=>await ne(async()=>await c(a,e,n,t),()=>_e({ok:!1}))(),"Command",(a=i).hooks,a.logger));const u=e.stores||{};if(i.stores=await async function(e,n={}){const t={};for(const[o,r]of Object.entries(n)){const{code:n,config:s={},env:i={}}=r,a=e.logger.scope("store").scope(o),c={collector:e,logger:a,id:o,config:s,env:i},u=await n(c),l=u.get,f=u.set,g=u.delete;u.get=se(l,"StoreGet",e.hooks,e.logger),u.set=se(f,"StoreSet",e.hooks,e.logger),u.delete=se(g,"StoreDelete",e.hooks,e.logger),t[o]=u}return t}(i,u),function(e,n,t){const o=new Map;for(const[t,r]of Object.entries(e))n[t]&&o.set(r,n[t]);if(0!==o.size)for(const e of[t.transformers,t.destinations,t.sources])if(e)for(const n of Object.values(e))r(n.env);function r(e){if(e)for(const[n,t]of Object.entries(e))if("object"==typeof t&&null!==t){const r=o.get(t);r&&(e[n]=r)}}}(u,i.stores,e),!i.stores.__cache){const e=new Map;i.stores.__cache={type:"memory",config:{},get:n=>{const t=e.get(n);if(t){if(!(t.expires&&Date.now()>t.expires))return t.value;e.delete(n)}},set:(n,t,o)=>{e.set(n,{value:t,expires:o?Date.now()+o:void 0})},delete:n=>{e.delete(n)}}}return i.destinations=await async function(e,n={}){var t,o;const r={};for(const[s,i]of Object.entries(n))(null==(o=null==(t=i.config)?void 0:t.require)?void 0:o.length)?e.pending.destinations[s]=i:r[s]=Me(i);return r}(i,e.destinations||{}),i.transformers=await async function(e,n={}){const t={};for(const[o,r]of Object.entries(n)){const{code:n,env:s={}}=r,{config:i}=he(r,"before"),{config:a}=he({...r,config:i},"next"),c=Object.keys(s).length>0?{...a,env:s}:a,{cache:u}=r,l=u?{...c,cache:u}:c,f=e.logger.scope("transformer").scope(o),g={collector:e,logger:f,id:o,ingest:_(o),config:l,env:s},d=await n(g);t[o]=d}return t}(i,e.transformers||{}),i}async function Ne(e){e=e||{};const n=await Fe(e),t=(o=n,{type:"elb",config:{},push:async(e,n,t,r,s,i)=>{if("string"==typeof e&&e.startsWith("walker ")){const r=e.replace("walker ","");return o.command(r,n,t)}let a;if("string"==typeof e)a={name:e},n&&"object"==typeof n&&!Array.isArray(n)&&(a.data=n);else{if(!e||"object"!=typeof e)return _e({ok:!1});a=e,n&&"object"==typeof n&&!Array.isArray(n)&&(a.data={...a.data||{},...n})}return r&&"object"==typeof r&&(a.context=r),s&&Array.isArray(s)&&(a.nested=s),i&&"object"==typeof i&&(a.custom=i),o.push(a)}});var o;n.sources.elb=t;const r=await async function(e,n={}){const t={};for(const[o,r]of Object.entries(n)){const{config:n={}}=r;if(n.require&&n.require.length>0){e.pending.sources[o]=r;continue}const s=await xe(e,o,r);s&&(t[o]=s)}return t}(n,e.sources||{});Object.assign(n.sources,r);const{consent:s,user:i,globals:a,custom:c}=e;s&&await n.command("consent",s),i&&await n.command("user",i),a&&Object.assign(n.globals,a),c&&Object.assign(n.custom,c),n.config.run&&await n.command("run");let u=t.push;const l=Object.values(n.sources).filter(e=>"elb"!==e.type),f=l.find(e=>e.config.primary);return f?u=f.push:l.length>0&&(u=l[0].push),{collector:n,elb:u}}var He,Le=async e=>{let n;return{get flow(){return n},trigger:()=>async t=>{var o;if(window.CookieFirst={consent:t},!n){const t=await Ne({...e,run:null==(o=e.run)||o});n={collector:t.collector,elb:t.elb}}window.dispatchEvent(new Event("cf_init"))}}},Ge=(e,n)=>{e&&"object"==typeof e&&(n.window.CookieFirst={consent:e})},We={necessary:"functional",functional:"functional",performance:"analytics",advertising:"marketing"},Be=async e=>{var n,t,o,r,s,i,a;const{config:c,env:u}=e,{elb:l}=u,f=null!=(n=u.window)?n:void 0!==globalThis.window?globalThis.window:void 0,g={categoryMap:{...We,...null==(t=null==c?void 0:c.settings)?void 0:t.categoryMap},explicitOnly:null==(r=null==(o=null==c?void 0:c.settings)?void 0:o.explicitOnly)||r,globalName:null!=(i=null==(s=null==c?void 0:c.settings)?void 0:s.globalName)?i:"CookieFirst"},d={settings:g};let p,v;if(f){const e=e=>{if(g.explicitOnly&&!e)return;if(!e)return;const n={};Object.entries(e).forEach(([e,t])=>{var o,r;if("boolean"!=typeof t)return;const s=null!=(r=null==(o=g.categoryMap)?void 0:o[e])?r:e;n[s]=n[s]||t}),Object.keys(n).length>0&&l("walker consent",n)},n=null!=(a=g.globalName)?a:"CookieFirst",t=f[n];(null==t?void 0:t.consent)&&e(t.consent),p=()=>{var t;const o=f[n];e(null!=(t=null==o?void 0:o.consent)?t:null)},f.addEventListener("cf_init",p),v=n=>{e(n.detail)},f.addEventListener("cf_consent",v)}return{type:"cookiefirst",config:d,push:l,destroy:async e=>{f&&p&&f.removeEventListener("cf_init",p),f&&v&&f.removeEventListener("cf_consent",v)}}},Ue=Be;return He=s,((r,s,i,a)=>{if(s&&"object"==typeof s||"function"==typeof s)for(let c of t(s))o.call(r,c)||c===i||e(r,c,{get:()=>s[c],enumerable:!(a=n(s,c))||a.enumerable});return r})(e({},"__esModule",{value:!0}),He)})();
1
+ "use strict";var SourceCookieFirst=(()=>{var e=Object.defineProperty,n=Object.getOwnPropertyDescriptor,t=Object.getOwnPropertyNames,o=Object.prototype.hasOwnProperty,r=(n,t)=>{for(var o in t)e(n,o,{get:t[o],enumerable:!0})},s={};r(s,{DEFAULT_CATEGORY_MAP:()=>Be,SourceCookieFirst:()=>i,analyticsOnlyConsent:()=>f,analyticsOnlyMapped:()=>m,createMockCookieFirstAPI:()=>k,createMockElbFn:()=>b,createMockWindow:()=>O,createTrigger:()=>Ge,default:()=>Ke,fullConsent:()=>a,fullConsentMapped:()=>g,marketingOnlyConsent:()=>d,marketingOnlyMapped:()=>y,minimalConsent:()=>u,minimalConsentMapped:()=>v,mockEnv:()=>j,noConsent:()=>l,noopLogger:()=>w,partialConsent:()=>c,partialConsentMapped:()=>p,sourceCookieFirst:()=>Ue,step:()=>x,trigger:()=>We});var i={},a={necessary:!0,functional:!0,performance:!0,advertising:!0},c={necessary:!0,functional:!0,performance:!1,advertising:!1},u={necessary:!0,functional:!1,performance:!1,advertising:!1},l=null,f={necessary:!0,functional:!1,performance:!0,advertising:!1},d={necessary:!0,functional:!1,performance:!1,advertising:!0},g={functional:!0,analytics:!0,marketing:!0},p={functional:!0,analytics:!1,marketing:!1},v={functional:!0,analytics:!1,marketing:!1},m={functional:!0,analytics:!0,marketing:!1},y={functional:!0,analytics:!1,marketing:!0},h=()=>{},b=()=>()=>Promise.resolve({ok:!0}),w={error:h,warn:h,info:h,debug:h,throw:e=>{throw"string"==typeof e?new Error(e):e},json:h,scope:()=>w},k=(e=null)=>({consent:e}),O=(e=null)=>({CookieFirst:k(e),addEventListener:h,removeEventListener:h}),j={get push(){return b()},get command(){return b()},get elb(){return b()},get window(){return O()},logger:w},x={};r(x,{categoryMapOverride:()=>E,cfInitDetection:()=>C,fullConsent:()=>A,partialConsent:()=>S});var A={title:"Full consent",description:"CookieFirst reports all categories granted and the source forwards a walker consent command with all groups true.",trigger:{type:"consent"},in:{necessary:!0,functional:!0,performance:!0,advertising:!0},out:[["elb","walker consent",{functional:!0,analytics:!0,marketing:!0}]]},S={title:"Partial consent",description:"A partial CookieFirst grant maps analytics and marketing to false in the emitted walker consent command.",trigger:{type:"consent"},in:{necessary:!0,functional:!0,performance:!1,advertising:!1},out:[["elb","walker consent",{functional:!0,analytics:!1,marketing:!1}]]},E={title:"Category map override",description:"Custom categoryMap remaps performance to statistics instead of analytics",trigger:{type:"consent"},in:{necessary:!0,functional:!1,performance:!0,advertising:!1},mapping:{settings:{categoryMap:{performance:"statistics"}}},out:[["elb","walker consent",{functional:!0,statistics:!0,marketing:!1}]]},C={title:"cf_init detection",description:"CMP detected via cf_init CustomEvent (primary detection path)",trigger:{type:"consent"},in:{necessary:!0,functional:!1,performance:!1,advertising:!0},out:[["elb","walker consent",{functional:!0,analytics:!1,marketing:!0}]]},P=Object.defineProperty;((e,n)=>{for(var t in n)P(e,t,{get:n[t],enumerable:!0})})({},{Level:()=>M});var q,M=((q=M||{})[q.ERROR=0]="ERROR",q[q.WARN=1]="WARN",q[q.INFO=2]="INFO",q[q.DEBUG=3]="DEBUG",q);function $(e){return{_meta:{hops:0,path:[e]}}}var _={merge:!0,shallow:!0,extend:!0};function D(e,n={},t={}){t={..._,...t};const o=Object.entries(n).reduce((n,[o,r])=>{const s=e[o];return t.merge&&Array.isArray(s)&&Array.isArray(r)?n[o]=r.reduce((e,n)=>e.includes(n)?e:[...e,n],[...s]):(t.extend||o in e)&&(n[o]=r),n},{});return t.shallow?{...e,...o}:(Object.assign(e,o),e)}function I(e){return Array.isArray(e)}function R(e){return void 0!==e}function T(e){return"function"==typeof e}function F(e){return"object"==typeof e&&null!==e&&!I(e)&&"[object Object]"===Object.prototype.toString.call(e)}function N(e){return"string"==typeof e}function H(e,n=new WeakMap){if("object"!=typeof e||null===e)return e;if(n.has(e))return n.get(e);const t=Object.prototype.toString.call(e);if("[object Object]"===t){const t={};n.set(e,t);for(const o in e)Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=H(e[o],n));return t}if("[object Array]"===t){const t=[];return n.set(e,t),e.forEach(e=>{t.push(H(e,n))}),t}if("[object Date]"===t)return new Date(e.getTime());if("[object RegExp]"===t){const n=e;return new RegExp(n.source,n.flags)}return e}function L(e,n="",t){const o=n.split(".");let r=e;for(let e=0;e<o.length;e++){const n=o[e];if("*"===n&&I(r)){const n=o.slice(e+1).join("."),s=[];for(const e of r){const o=L(e,n,t);s.push(o)}return s}if(r=r instanceof Object?r[n]:void 0,void 0===r)break}return R(r)?r:t}function G(e,n,t){if(!F(e))return e;const o=H(e),r=n.split(".");let s=o;for(let e=0;e<r.length;e++){const n=r[e];e===r.length-1?s[n]=t:(n in s&&"object"==typeof s[n]&&null!==s[n]||(s[n]={}),s=s[n])}return o}var W={data:e=>e.data,globals:e=>e.globals,context:e=>e.context,user:e=>e.user,source:e=>e.source,event:e=>({entity:e.entity,action:e.action,id:e.id,timestamp:e.timestamp,name:e.name,trigger:e.trigger,timing:e.timing})};function B(e,n={},t={}){const o={...n,...t},r={};let s=!e||0===Object.keys(e).length;return Object.keys(o).forEach(n=>{o[n]&&(r[n]=!0,e&&e[n]&&(s=!0))}),!!s&&r}function U(){let e="";for(let n=0;n<16;n++)e+=(16*Math.random()|0).toString(16);return e}function K(e=6,n){if(n){const t=n.length;let o="";for(let r=0;r<e;r++)o+=n[Math.random()*t|0];return o}let t="";for(let n=36;t.length<e;)t+=(Math.random()*n|0).toString(n);return t}function z(e,n=1e3,t=!1){let o,r=null,s=!1;return(...i)=>new Promise(a=>{const c=t&&!s;r&&clearTimeout(r),r=setTimeout(()=>{r=null,t&&!s||(o=e(...i),a(o))},n),c&&(s=!0,o=e(...i),a(o))})}function J(e){return{message:e.message,name:e.name,stack:e.stack,cause:e.cause}}function V(e,n){let t,o={};return e instanceof Error?(t=e.message,o.error=J(e)):t=e,void 0!==n&&(n instanceof Error?o.error=J(n):"object"==typeof n&&null!==n?(o={...o,...n},"error"in o&&o.error instanceof Error&&(o.error=J(o.error))):o.value=n),{message:t,context:o}}var Y=(e,n,t,o)=>{const r=`${M[e]}${o.length>0?` [${o.join(":")}]`:""}`,s=Object.keys(t).length>0,i=0===e?console.error:1===e?console.warn:console.log;s?i(r,n,t):i(r,n)};function Q(e={}){return X({level:void 0!==e.level?(n=e.level,"string"==typeof n?M[n]:n):0,handler:e.handler,jsonHandler:e.jsonHandler,scope:[]});var n}function X(e){const{level:n,handler:t,jsonHandler:o,scope:r}=e,s=(e,o,s)=>{if(e<=n){const n=V(o,s);t?t(e,n.message,n.context,r,Y):Y(e,n.message,n.context,r)}};return{error:(e,n)=>s(0,e,n),warn:(e,n)=>s(1,e,n),info:(e,n)=>s(2,e,n),debug:(e,n)=>s(3,e,n),throw:(e,n)=>{const o=V(e,n);throw t?t(0,o.message,o.context,r,Y):Y(0,o.message,o.context,r),new Error(o.message)},json:e=>{o?o(e):console.log(JSON.stringify(e,null,2))},scope:e=>X({level:n,handler:t,jsonHandler:o,scope:[...r,e]})}}function Z(e){return function(e){return"boolean"==typeof e}(e)||N(e)||function(e){return"number"==typeof e&&!Number.isNaN(e)}(e)||!R(e)||I(e)&&e.every(Z)||F(e)&&Object.values(e).every(Z)}function ee(e){return Z(e)?e:void 0}function ne(e,n,t){return function(...o){try{return e(...o)}catch(e){if(!n)return;return n(e)}finally{null==t||t()}}}function te(e,n,t){return async function(...o){try{return await e(...o)}catch(e){if(!n)return;return await n(e)}finally{await(null==t?void 0:t())}}}async function oe(e,n={},t={}){var o;if(!R(e))return;const r=F(e)&&e.consent||t.consent||(null==(o=t.collector)?void 0:o.consent),s=I(n)?n:[n];for(const n of s){const o=await te(re)(e,n,{...t,consent:r});if(R(o))return o}}async function re(e,n,t={}){const{collector:o,consent:r}=t;return(I(n)?n:[n]).reduce(async(n,s)=>{const i=await n;if(i)return i;const a=N(s)?{key:s}:s;if(!Object.keys(a).length)return;const{condition:c,consent:u,fn:l,key:f,loop:d,map:g,set:p,validate:v,value:m}=a;if(c&&!await te(c)(e,s,o))return;if(u&&!B(u,r))return m;let y=R(m)?m:e;if(l&&(y=await te(l)(e,s,t)),f&&(y=L(e,f,m)),d){const[n,o]=d,r="this"===n?[e]:await oe(e,n,t);I(r)&&(y=(await Promise.all(r.map(e=>oe(e,o,t)))).filter(R))}else g?y=await Object.entries(g).reduce(async(n,[o,r])=>{const s=await n,i=await oe(e,r,t);return R(i)&&(s[o]=i),s},Promise.resolve({})):p&&(y=await Promise.all(p.map(n=>re(e,n,t))));v&&!await te(v)(y)&&(y=void 0);const h=ee(y);return R(h)?h:ee(m)},Promise.resolve(void 0))}async function se(e,n,t){var o;n.policy&&await Promise.all(Object.entries(n.policy).map(async([n,o])=>{const r=await oe(e,o,{collector:t});e=G(e,n,r)}));const{eventMapping:r,mappingKey:s}=await async function(e,n){var t;const[o,r]=(e.name||"").split(" ");if(!n||!o||!r)return{};let s,i="",a=o,c=r;const u=n=>{if(n)return(n=I(n)?n:[n]).find(n=>!n.condition||n.condition(e))};n[a]||(a="*");const l=n[a];return l&&(l[c]||(c="*"),s=u(l[c])),s||(a="*",c="*",s=u(null==(t=n[a])?void 0:t[c])),s&&(i=`${a} ${c}`),{eventMapping:s,mappingKey:i}}(e,n.mapping);(null==r?void 0:r.policy)&&await Promise.all(Object.entries(r.policy).map(async([n,o])=>{const r=await oe(e,o,{collector:t});e=G(e,n,r)}));let i=n.data&&await oe(e,n.data,{collector:t});const a=Boolean(null==r?void 0:r.silent);if(r){if(r.ignore)return{event:e,data:i,mapping:r,mappingKey:s,ignore:!0,silent:a};if(r.name&&(e.name=r.name),r.data){const n=r.data&&await oe(e,r.data,{collector:t});i=F(i)&&F(n)?D(i,n):n}}const c=null!=(o=null==r?void 0:r.include)?o:n.include;if(c&&c.length>0){const n=function(e,n){const t={},o=n.includes("all")?Object.keys(W):n;for(const n of o){const o=W[n];if(!o)continue;const r=o(e);if(F(r))for(const[e,o]of Object.entries(r)){if(void 0===o)continue;const r="context"===n&&Array.isArray(o)?o[0]:o;t[`${n}_${e}`]=r}}return t}(e,c);Object.keys(n).length>0&&(i=F(i)?D(n,i):null!=i?i:n)}return{event:e,data:i,mapping:r,mappingKey:s,ignore:!1,silent:a}}function ie(e,n,t,o){return function(...r){let s;const i="pre"+n,a="post"+n,c=t[i],u=t[a],l=(e,n)=>{o?o.warn(e,{error:n}):console.warn(e,n)};if(c)try{s=c({fn:e},...r)}catch(n){l(`Hook ${String(i)} failed, falling back to original function`,n),s=e(...r)}else s=e(...r);if(u)try{s=u({fn:e,result:s},...r)}catch(e){l(`Hook ${String(a)} failed, keeping original result`,e)}return s}}function ae(e){if("*"===e)return()=>!0;if("and"in e){const n=e.and.map(ae);return e=>n.every(n=>n(e))}if("or"in e){const n=e.or.map(ae);return e=>n.some(n=>n(e))}return function(e){const{key:n,operator:t,value:o,not:r}=e,s=function(e,n){switch(e){case"eq":return e=>String(null!=e?e:"")===n;case"contains":return e=>String(null!=e?e:"").includes(n);case"prefix":return e=>String(null!=e?e:"").startsWith(n);case"suffix":return e=>String(null!=e?e:"").endsWith(n);case"regex":{const e=new RegExp(n);return n=>e.test(String(null!=n?n:""))}case"gt":{const e=Number(n);return n=>Number(n)>e}case"lt":{const e=Number(n);return n=>Number(n)<e}case"exists":return e=>null!=e}}(t,o);return e=>{const t=L(e,n),o=s(t);return r?!o:o}}(e)}function ce(e){return Array.isArray(e)&&e.length>0&&"object"==typeof e[0]&&null!==e[0]&&"match"in e[0]}function ue(e){if(null!=e){if("string"==typeof e)return{type:"static",value:e};if(Array.isArray(e)){if(0===e.length)return;return ce(e)?{type:"routes",routes:e.map(e=>({match:ae(e.match),next:ue(e.next)}))}:{type:"chain",value:e}}}}function le(e,n={}){if(e){if("static"===e.type)return e.value;if("chain"===e.type)return e.value;for(const t of e.routes)if(t.match(n))return le(t.next,n)}}function fe(e,n){const t={ingest:null!=e?e:{}};return void 0!==n&&(t.event=n),t}function de(e){var n;return{full:null!=(n=e.full)&&n,storeId:e.store,rules:e.rules.map(e=>({match:ae(e.match),key:e.key,ttl:e.ttl,update:e.update}))}}function ge(e,n,t,o){const r=e.rules.find(e=>e.match(t));if(!r)return null;const s=r.key.map(e=>{var n;return String(null!=(n=L(t,e))?n:"")});if(s.every(e=>""===e))return null;const i=`${o}:${s.join(":")}`,a=n.get(i);return void 0!==a?{status:"HIT",key:i,value:a,rule:r}:{status:"MISS",key:i,rule:r}}function pe(e,n,t,o){e.set(n,t,1e3*o)}async function ve(e,n,t){if(!n)return e;let o=e;for(const[e,r]of Object.entries(n))o=G(o,e,await oe(t,r));return o}var me={Action:"action",Actions:"actions",Config:"config",Consent:"consent",Context:"context",Custom:"custom",Destination:"destination",Elb:"elb",Globals:"globals",Hook:"hook",Init:"init",Link:"link",On:"on",Prefix:"data-elb",Ready:"ready",Run:"run",Session:"session",Shutdown:"shutdown",User:"user",Walker:"walker"};function ye(e,n){return e.storeId&&n.stores[e.storeId]?n.stores[e.storeId]:n.stores.__cache}function he(e){var n;const t={};for(const[o,r]of Object.entries(e)){const e=null==(n=r.config)?void 0:n.next;e&&!ce(e)?t[o]={next:e}:t[o]={}}return t}function be(e,n){const t=e.config||{},o=e[n];return void 0!==o?{config:{...t,[n]:o},chainValue:o}:{config:t,chainValue:void 0}}function we(e,n={}){if(!e)return[];if(Array.isArray(e))return e;const t=[],o=new Set;let r=e;for(;r&&n[r]&&!o.has(r);){o.add(r),t.push(r);const e=n[r].next;if(Array.isArray(e)){t.push(...e);break}r=e}return t}async function ke(e,n,t){if(n.init&&!n.config.init){const o=n.type||"unknown",r=e.logger.scope(`transformer:${o}`),s={collector:e,logger:r,id:t,ingest:$(t),config:n.config,env:xe(n.config.env)};r.debug("init");const i=await ie(n.init,"TransformerInit",e.hooks,e.logger)(s);if(!1===i)return!1;n.config={...i||n.config,env:(null==i?void 0:i.env)||n.config.env,init:!0},r.debug("init done")}return!0}async function Oe(e,n,t,o,r,s){const i=n.type||"unknown",a=e.logger.scope(`transformer:${i}`),c={collector:e,logger:a,id:t,ingest:r,config:n.config,env:{...xe(n.config.env),...s?{respond:s}:{}}};a.debug("push",{event:o.name});const u=await ie(n.push,"TransformerPush",e.hooks,e.logger)(o,c);return a.debug("push done"),u}async function je(e,n,t,o,r,s,i){var a,c,u,l,f,d;i&&(null==r?void 0:r._meta)&&(r._meta.chainPath=i);let g=o,p=s;for(const o of t){const s=n[o];if(!s){e.logger.warn(`Transformer not found: ${o}`);continue}if(r&&r._meta&&r._meta.path.length>256)return e.logger.error(`Max path length exceeded at ${o}`),{event:null,respond:p};if(r&&r._meta&&(r._meta.hops++,r._meta.path.push(o)),!await te(ke)(e,s,o))return e.logger.error(`Transformer init failed: ${o}`),{event:null,respond:p};if(i&&void 0!==(null==(c=null==(a=s.config)?void 0:a.chainMocks)?void 0:c[i])){const n=s.config.chainMocks[i];e.logger.scope(`transformer:${s.type||"unknown"}`).debug("chainMock",{chain:i}),g=n;continue}if(void 0!==(null==(u=s.config)?void 0:u.mock)){e.logger.scope(`transformer:${s.type||"unknown"}`).debug("mock"),g=s.config.mock;continue}if(null==(l=s.config)?void 0:l.disabled)continue;const v=null==(f=s.config)?void 0:f.cache,m=v?de(v):void 0,y=m?ye(m,e):void 0;let h;if(m&&y){const e=ge(m,y,fe(r,g),`t:${o}`);if("HIT"===(null==e?void 0:e.status)&&e.value){if(g=e.value,m.full)return{event:g,respond:p};continue}"MISS"===(null==e?void 0:e.status)&&(h={key:e.key,ttl:e.rule.ttl})}const b=s.config.before;if(b){const t=we("string"==typeof b||Array.isArray(b)&&!ce(b)?b:le(ue(b),fe(r,g))||void 0,he(n));if(t.length>0){const o=await je(e,n,t,g,r,p,i);if(null===o.event)return{event:null,respond:null!=(d=o.respond)?d:p};o.respond&&(p=o.respond),g=Array.isArray(o.event)?o.event[0]:o.event}}const w=await te(Oe,n=>(e.logger.scope(`transformer:${s.type||"unknown"}`).error("Push failed",{error:n}),!1))(e,s,o,g,r,p);if(!1===w)return{event:null,respond:p};if(Array.isArray(w)){const s=t.slice(t.indexOf(o)+1),a=await Promise.all(w.map(async t=>{const o=t.event||g,a=r?{...r,_meta:{...r._meta,path:[...r._meta.path]}}:$("unknown");if(t.next){let r=t.next;if(ce(t.next)){r=le(ue(t.next),fe(a,o))}if(r){const t=we(r,he(n));if(t.length>0)return je(e,n,t,o,a,p,i)}return{event:o,respond:p}}return s.length>0?je(e,n,s,o,a,p,i):{event:o,respond:p}}));let c=p;const u=[];for(const e of a.flat())if(null!==e)if(e&&"object"==typeof e&&"event"in e){const n=e;if(n.respond&&(c=n.respond),null===n.event)continue;Array.isArray(n.event)?u.push(...n.event):u.push(n.event)}else u.push(e);return 0===u.length?{event:null,respond:c}:1===u.length?{event:u[0],respond:c}:{event:u,respond:c}}if(w&&"object"==typeof w){const{event:t,respond:o,next:s}=w;if(o&&(p=o),s){let o=s;if(ce(s)){if(o=le(ue(s),fe(r,g)),!o){t&&(g=t);continue}}const a=we(o,he(n));return a.length>0?je(e,n,a,t||g,r,p,i):(e.logger.warn(`Branch target not found: ${JSON.stringify(s)}`),{event:null,respond:p})}t&&(g=t)}if(h&&y&&pe(y,h.key,g,h.ttl),(!w||"object"==typeof w&&!w.next)&&s.config.next&&ce(s.config.next)){const t=le(ue(s.config.next),fe(r,g));if(t){const o=we(t,he(n));if(o.length>0)return je(e,n,o,g,r,p,i)}return{event:g,respond:p}}}return{event:g,respond:p}}function xe(e){return e&&F(e)?e:{}}async function Ae(e,n,t){var o;const{code:r,config:s={},env:i={},primary:a,next:c,before:u,cache:l}=t;let f,d=$(n);const g=l?de({...l,full:null==(o=l.full)||o}):void 0,p=ue(c),v=Array.isArray(c)&&ce(c)||!p?void 0:we(le(p),he(e.transformers)),m=ue(u),y=Array.isArray(u)&&ce(u)||!m?void 0:we(le(m),he(e.transformers)),h=e.logger.scope("source").scope(n),b={push:async(t,o={})=>{let r,i=t;const a=null!=y?y:m?we(le(m,fe(d)),he(e.transformers)):[];if(a.length>0&&e.transformers&&Object.keys(e.transformers).length>0){const t=await je(e,e.transformers,a,i,d,f,`source.${n}.before`);if(null===t.event)return{ok:!0};t.respond&&(f=t.respond),i=Array.isArray(t.event)?t.event[0]:t.event}if(g){const t=ye(g,e);if(t){const e=fe(d),o=ge(g,t,e,`s:${n}`);if(o){if("HIT"===o.status&&void 0!==o.value&&g.full){let n=o.value;return o.rule.update&&(n=await ve(n,o.rule.update,{...e,cache:{status:"HIT"}})),null==f||f(n),{ok:!0}}if("MISS"===o.status&&g.full&&f){const n=f,s=o.rule.update,i={...e,cache:{status:"MISS"}},a=o.key,c=o.rule.ttl;f=e=>{pe(t,a,e,c),s?r=(async()=>{const t=await ve(e,s,i);n(t)})():n(e)}}"MISS"!==o.status||g.full||pe(t,o.key,!0,o.rule.ttl)}}}const c=null!=v?v:p?we(le(p,fe(d)),he(e.transformers)):[],u=await e.push(i,{...o,id:n,ingest:d,respond:f,mapping:s,preChain:c});return r&&await r,u},command:e.command,sources:e.sources,elb:e.sources.elb.push,logger:h,...i},w={collector:e,logger:h,id:n,config:s,env:b,setIngest:async t=>{if(!s.ingest)return void(d=$(n));const o=await oe(t,s.ingest,{collector:e}),r=$(n);d={...r,...o,_meta:r._meta}},setRespond:e=>{f=e}},k=await te(r)(w);if(!k)return;const O=k.type||"unknown",j=e.logger.scope(O).scope(n);return b.logger=j,a&&(k.config={...k.config,primary:a}),k}function Se(e,n,t,o,r){if(!n.on)return;const s=n.type||"unknown",i=e.logger.scope(s).scope("on").scope(o),a={collector:e,logger:i,id:t,config:n.config,data:r,env:Ie(n.env,n.config.env)};ne(n.on)(o,a)}function Ee(e,n,t,o){let r;switch(n){case me.Consent:r=o||e.consent;break;case me.Session:r=e.session;break;case me.User:r=o||e.user;break;case me.Custom:r=o||e.custom;break;case me.Globals:r=o||e.globals;break;case me.Config:r=o||e.config;break;case me.Ready:case me.Run:default:r=void 0}if(t.length)switch(n){case me.Consent:!function(e,n,t){const o=t||e.consent;n.forEach(n=>{Object.keys(o).filter(e=>e in n).forEach(t=>{ne(n[t])(e,o)})})}(e,t,o);break;case me.Ready:case me.Run:i=t,(s=e).allowed&&i.forEach(e=>{ne(e)(s)});break;case me.Session:!function(e,n){e.session&&n.forEach(n=>{ne(n)(e,e.session)})}(e,t);break;default:t.forEach(n=>{"function"==typeof n&&ne(n)(e,r)})}var s,i}function Ce(e,n,t,o){if(!e)return[];if(n){const e=le(n,fe(o));return e?we(e,he(t)):[]}return we(e,he(t))}async function Pe(e,n,t){const{code:o,config:r={},env:s={},before:i,next:a,cache:c}=n;if(!T(o.push))return _e({ok:!1,failed:{invalid:{type:"invalid",error:"Destination code must have a push method"}}});const u=t||r||{init:!1};let l=i?{...u,before:i}:{...u};a&&(l={...l,next:a}),c&&(l={...l,cache:c});const f={...o,config:l,env:Ie(o.env,s)};let d=f.config.id;if(!d)do{d=K(5,"abcdefghijklmnopqrstuvwxyz")}while(e.destinations[d]);return e.destinations[d]=f,!1!==f.config.queue&&(f.queuePush=[...e.queue]),qe(e,void 0,{},{[d]:f})}async function qe(e,n,t={},o){const{allowed:r,consent:s,globals:i,user:a}=e;if(!r)return _e({ok:!1});n&&(e.queue.push(n),e.status.in++),o||(o=e.destinations);const c=await Promise.all(Object.entries(o||{}).map(async([o,r])=>{var c,u,l;if(r.config.disabled)return{id:o,destination:r,skipped:!0};let f=(r.queuePush||[]).map(e=>({...e,consent:s}));r.queuePush=[],n&&f.push(H(n));const d=t.ingest?{...t.ingest,_meta:{...t.ingest._meta,path:[...t.ingest._meta.path]}}:$("unknown");if(!f.length&&!(null==(c=r.queueOn)?void 0:c.length))return{id:o,destination:r,skipped:!0};if(!f.length&&(null==(u=r.queueOn)?void 0:u.length)){const n=await te(Me)(e,r,o);return{id:o,destination:r,skipped:!n}}const g=[],p=f.filter(e=>{const n=B(r.config.consent,s,e.consent);return!n||(e.consent=n,g.push(e),!1)});if(r.queuePush.push(...p),!g.length)return{id:o,destination:r,queue:f};if(!await te(Me)(e,r,o))return{id:o,destination:r,queue:f};let v,m;r.dlq||(r.dlq=[]);const y=r.config.before,h=Ce(y,y&&ce(y)?ue(y):void 0,e.transformers,d),b=r.config.next,w=b&&ce(b)?ue(b):void 0,k=null==(l=r.config)?void 0:l.cache,O=k?de(k):void 0,j=O?ye(O,e):void 0;let x=0;return await Promise.all(g.map(async n=>{let s;if(n.globals=D(i,n.globals),n.user=D(a,n.user),(null==O?void 0:O.full)&&j){const e=fe(d,n),t=ge(O,j,e,`d:${o}`);if("HIT"===(null==t?void 0:t.status))return n;"MISS"===(null==t?void 0:t.status)&&(s={key:t.key,ttl:t.rule.ttl})}let c=n,u=t.respond;if(h.length>0&&e.transformers&&Object.keys(e.transformers).length>0){const r=await je(e,e.transformers,h,n,d,t.respond,`destination.${o}.before`);if(null===r.event)return n;r.respond&&(u=r.respond),c=Array.isArray(r.event)?r.event[0]:r.event}if(O&&!O.full&&j){const e=fe(d,c),t=ge(O,j,e,`d:${o}`);if("HIT"===(null==t?void 0:t.status))return n;"MISS"===(null==t?void 0:t.status)&&(s={key:t.key,ttl:t.rule.ttl})}const l=Date.now();let f=!1;const g=await te($e,n=>{const t=r.type||"unknown";e.logger.scope(t).error("Push failed",{error:n,event:c.name}),v=n,f=!0,r.dlq.push([c,n])})(e,r,o,c,d,u);if(x+=Date.now()-l,s&&j&&void 0===r.config.mock&&pe(j,s.key,null==g||g,s.ttl),void 0!==g&&(m=g),!f&&b){void 0!==g&&(d._response=g);const n=Ce(b,w,e.transformers,d);if(n.length>0&&e.transformers&&Object.keys(e.transformers).length>0){const t=await je(e,e.transformers,n,c,d,u,`destination.${o}.next`);t.respond&&(u=t.respond)}}return n})),{id:o,destination:r,error:v,response:m,totalDuration:x}})),u={},l={},f={};for(const n of c){if(n.skipped)continue;const t={type:n.destination.type||"unknown",data:n.response};e.status.destinations[n.id]||(e.status.destinations[n.id]={count:0,failed:0,duration:0});const o=e.status.destinations[n.id],r=Date.now();n.error?(t.error=n.error,f[n.id]=t,o.failed++,o.lastAt=r,o.duration+=n.totalDuration||0,e.status.failed++):n.queue&&n.queue.length?l[n.id]=t:(u[n.id]=t,o.count++,o.lastAt=r,o.duration+=n.totalDuration||0,e.status.out++)}return _e({event:n,...Object.keys(u).length&&{done:u},...Object.keys(l).length&&{queued:l},...Object.keys(f).length&&{failed:f}})}async function Me(e,n,t){var o;if(n.init&&!n.config.init){const r=n.type||"unknown",s=e.logger.scope(r),i={collector:e,logger:s,id:t,config:n.config,env:Ie(n.env,n.config.env)};s.debug("init");const a=await ie(n.init,"DestinationInit",e.hooks,e.logger)(i);if(!1===a)return a;if(n.config={...a||n.config,init:!0},null==(o=n.queueOn)?void 0:o.length){const o=n.queueOn;n.queueOn=[];for(const{type:r,data:s}of o)Se(e,n,t,r,s)}s.debug("init done")}return!0}async function $e(e,n,t,o,r,s){const{config:i}=n,a=await se(o,i,e);if(a.ignore)return!1;const c=n.type||"unknown",u=e.logger.scope(c),l={collector:e,logger:u,id:t,config:i,data:a.data,rule:a.mapping,ingest:r,env:{...Ie(n.env,i.env),...s?{respond:s}:{}}};if(void 0!==i.mock)return u.debug("mock",{event:a.event.name}),i.mock;const f=a.mapping,d=a.mappingKey||"* *";if(!(null==f?void 0:f.batch)||!n.pushBatch||void 0!==i.mock){u.debug("push",{event:a.event.name});const t=await ie(n.push,"DestinationPush",e.hooks,e.logger)(a.event,l);return u.debug("push done"),t}{if(n.batches=n.batches||{},!n.batches[d]){const o={key:d,events:[],data:[]};n.batches[d]={batched:o,batchFn:z(()=>{const o=n.batches[d].batched,a={collector:e,logger:u,id:t,config:i,data:void 0,rule:f,ingest:r,env:{...Ie(n.env,i.env),...s?{respond:s}:{}}};u.debug("push batch",{events:o.events.length}),ie(n.pushBatch,"DestinationPushBatch",e.hooks,e.logger)(o,a),u.debug("push batch done"),o.events=[],o.data=[]},f.batch)}}const o=n.batches[d];o.batched.events.push(a.event),R(a.data)&&o.batched.data.push(a.data),o.batchFn()}return!0}function _e(e){return{ok:!(null==e?void 0:e.failed),...e}}function De(e){const{code:n,config:t={},env:o={},cache:r}=e,{config:s}=be(e,"before"),{config:i}=be({...e,config:s},"next"),a={...n.config,...t,...i};r&&(a.cache=r);const c=Ie(n.env,o);return{...n,config:a,env:c}}function Ie(e,n){return e||n?n?e&&F(e)&&F(n)?{...e,...n}:n:e:{}}async function Re(e,n,t){const o=Object.entries(e).map(async([e,o])=>{var r;const s=o.destroy;if(!s)return;const i=o.type||"unknown",a=t.scope(i),c={id:e,config:o.config,env:null!=(r=o.env)?r:{},logger:a};try{await Promise.race([s(c),new Promise((t,o)=>setTimeout(()=>o(new Error(`${n} '${e}' destroy timed out`)),5e3))])}catch(t){a.error(`${n} '${e}' destroy failed: ${t}`)}});await Promise.allSettled(o)}async function Te(e,n,t,o){let r,s,i=!1;switch(n){case me.Config:F(t)&&(D(e.config,t,{shallow:!1}),s=t,i=!0);break;case me.Consent:if(F(t)){const{update:n}=function(e,n){const t={};return Object.entries(n).forEach(([e,n])=>{t[e]=!!n}),e.consent=D(e.consent,t),{update:t}}(e,t);s=n,i=!0}break;case me.Custom:F(t)&&(e.custom=D(e.custom,t),s=t,i=!0);break;case me.Destination:F(t)&&("code"in t&&F(t.code)?r=await Pe(e,t,o):T(t.push)&&(r=await Pe(e,{code:t},o)));break;case me.Globals:F(t)&&(e.globals=D(e.globals,t),s=t,i=!0);break;case me.On:N(t)&&await async function(e,n,t){const o=e.on,r=o[n]||[],s=I(t)?t:[t];s.forEach(e=>{r.push(e)}),o[n]=r,Ee(e,n,s)}(e,t,o);break;case me.Ready:i=!0;break;case me.Run:r=await async function(e,n){return e.allowed=!0,e.timing=Date.now(),n&&(n.consent&&(e.consent=D(e.consent,n.consent)),n.user&&(e.user=D(e.user,n.user)),n.globals&&(e.globals=D(e.config.globalsStatic||{},n.globals)),n.custom&&(e.custom=D(e.custom,n.custom))),Object.values(e.destinations).forEach(e=>{e.queuePush=[]}),e.queue=[],e.round++,await qe(e)}(e,t),i=!0;break;case me.Session:i=!0;break;case me.Shutdown:await async function(e){const n=e.logger;await Re(e.sources,"source",n),await Re(e.destinations,"destination",n),await Re(e.transformers,"transformer",n),await Re(e.stores,"store",n)}(e);break;case me.User:F(t)&&(D(e.user,t,{shallow:!1}),s=t,i=!0)}return i&&(await async function(e,n,t,o){let r,s=t||[];switch(t||(s=e.on[n]||[]),n){case me.Consent:r=o||e.consent;break;case me.Session:r=e.session;break;case me.User:r=o||e.user;break;case me.Custom:r=o||e.custom;break;case me.Globals:r=o||e.globals;break;case me.Config:r=o||e.config;break;case me.Ready:case me.Run:default:r=void 0}let i=!1;for(const t of Object.values(e.sources))t.on&&!1===await te(t.on)(n,r)&&(i=!0);return Object.entries(e.destinations).forEach(([t,o])=>{if(o.on){if(!o.config.init)return o.queueOn=o.queueOn||[],void o.queueOn.push({type:n,data:r});Se(e,o,t,n,r)}}),(Object.keys(e.pending.sources).length>0||Object.keys(e.pending.destinations).length>0)&&await async function(e,n){var t,o;for(const[o,r]of Object.entries(e.pending.sources)){if(!e.pending.sources[o]||e.sources[o])continue;const s=null==(t=r.config)?void 0:t.require;if(!s)continue;const i=s.indexOf(n);if(-1===i)continue;if(s.splice(i,1),s.length>0)continue;delete e.pending.sources[o];const a=await Ae(e,o,r);a&&(e.sources[o]=a)}for(const[t,r]of Object.entries(e.pending.destinations)){if(!e.pending.destinations[t]||e.destinations[t])continue;const s=null==(o=r.config)?void 0:o.require;if(!s)continue;const i=s.indexOf(n);if(-1===i)continue;if(s.splice(i,1),s.length>0)continue;delete e.pending.destinations[t];const a=De(r);!1!==a.config.queue&&(a.queuePush=[...e.queue]),e.destinations[t]=a}}(e,n),Ee(e,n,s,o),!i}(e,n,void 0,s),r=await qe(e)),r||_e({ok:!0})}function Fe(e,n){if(!n.name)throw new Error("Event name is required");const[t,o]=n.name.split(" ");if(!t||!o)throw new Error("Event name is invalid");const{timestamp:r=Date.now(),name:s=`${t} ${o}`,data:i={},context:a={},globals:c=e.globals,custom:u={},user:l=e.user,nested:f=[],consent:d=e.consent,id:g=U(),trigger:p="",entity:v=t,action:m=o,timing:y=0,source:h={type:"collector",schema:"4"}}=n;return{name:s,data:i,context:a,globals:c,custom:u,user:l,nested:f,consent:d,id:g,trigger:p,entity:v,action:m,timestamp:r,timing:y,source:h}}async function Ne(e){var n,t;const o=D({globalsStatic:{},sessionStatic:{},run:!0},e,{merge:!1,extend:!1}),r=Q({level:null==(n=e.logger)?void 0:n.level,handler:null==(t=e.logger)?void 0:t.handler}),s={...o.globalsStatic,...e.globals},i={allowed:!1,config:o,consent:e.consent||{},custom:e.custom||{},destinations:{},transformers:{},stores:{},globals:s,hooks:e.hooks||{},logger:r,on:{},queue:[],round:0,session:void 0,status:{startedAt:Date.now(),in:0,out:0,failed:0,sources:{},destinations:{}},timing:Date.now(),user:e.user||{},sources:{},pending:{sources:{},destinations:{}},push:void 0,command:void 0};var a,c;i.push=function(e,n){return ie(async(t,o={})=>await te(async()=>{var r;const s=Date.now(),{id:i,ingest:a,respond:c,mapping:u,preChain:l,include:f,exclude:d}=o;let g=c,p=t;const v=f||d?function(e,n,t){let o=e;return n&&(o=Object.fromEntries(Object.entries(o).filter(([e])=>n.includes(e)))),t&&(o=Object.fromEntries(Object.entries(o).filter(([e])=>!t.includes(e)))),o}(e.destinations,f,d):void 0,m=null!=a?a:$(i||"unknown");if(u){const n=await se(p,u,e);if(n.ignore)return _e({ok:!0});if(u.consent&&!B(u.consent,e.consent,n.event.consent))return _e({ok:!0});p=n.event}if((null==l?void 0:l.length)&&e.transformers&&Object.keys(e.transformers).length>0){const t=await je(e,e.transformers,l,p,m,g,i?`source.${i}.next`:void 0);if(null===t.event)return _e({ok:!0});if(t.respond&&(g=t.respond),Array.isArray(t.event)){const o=await Promise.all(t.event.map(async t=>{const o=n(t),r=Fe(e,o);return qe(e,r,{id:i,ingest:m,respond:g},v)}));if(i){e.status.sources[i]||(e.status.sources[i]={count:0,duration:0});const n=e.status.sources[i];n.count+=t.event.length,n.lastAt=Date.now(),n.duration+=Date.now()-s}return null!=(r=o[0])?r:_e({ok:!0})}p=t.event}const y=n(p),h=Fe(e,y),b=await qe(e,h,{id:i,ingest:m,respond:g},v);if(i){e.status.sources[i]||(e.status.sources[i]={count:0,duration:0});const n=e.status.sources[i];n.count++,n.lastAt=Date.now(),n.duration+=Date.now()-s}return b},()=>_e({ok:!1}))(),"Push",e.hooks,e.logger)}(i,e=>({timing:Math.round((Date.now()-i.timing)/10)/100,source:{type:"collector",schema:"4",version:"4.0.0-next-1777463920154"},...e})),i.command=(c=Te,ie(async(e,n,t)=>await te(async()=>await c(a,e,n,t),()=>_e({ok:!1}))(),"Command",(a=i).hooks,a.logger));const u=e.stores||{};if(i.stores=await async function(e,n={}){const t={};for(const[o,r]of Object.entries(n)){const{code:n,config:s={},env:i={}}=r,a=e.logger.scope("store").scope(o),c={collector:e,logger:a,id:o,config:s,env:i},u=await n(c),l=u.get,f=u.set,d=u.delete;u.get=ie(l,"StoreGet",e.hooks,e.logger),u.set=ie(f,"StoreSet",e.hooks,e.logger),u.delete=ie(d,"StoreDelete",e.hooks,e.logger),t[o]=u}return t}(i,u),function(e,n,t){const o=new Map;for(const[t,r]of Object.entries(e))n[t]&&o.set(r,n[t]);if(0!==o.size)for(const e of[t.transformers,t.destinations,t.sources])if(e)for(const n of Object.values(e))r(n.env);function r(e){if(e)for(const[n,t]of Object.entries(e))if("object"==typeof t&&null!==t){const r=o.get(t);r&&(e[n]=r)}}}(u,i.stores,e),!i.stores.__cache){const e=new Map;i.stores.__cache={type:"memory",config:{},get:n=>{const t=e.get(n);if(t){if(!(t.expires&&Date.now()>t.expires))return t.value;e.delete(n)}},set:(n,t,o)=>{e.set(n,{value:t,expires:o?Date.now()+o:void 0})},delete:n=>{e.delete(n)}}}return i.destinations=await async function(e,n={}){var t,o;const r={};for(const[s,i]of Object.entries(n))(null==(o=null==(t=i.config)?void 0:t.require)?void 0:o.length)?e.pending.destinations[s]=i:r[s]=De(i);return r}(i,e.destinations||{}),i.transformers=await async function(e,n={}){const t={};for(const[o,r]of Object.entries(n)){const{code:n,env:s={}}=r,{config:i}=be(r,"before"),{config:a}=be({...r,config:i},"next"),c=Object.keys(s).length>0?{...a,env:s}:a,{cache:u}=r,l=u?{...c,cache:u}:c,f=e.logger.scope("transformer").scope(o),d={collector:e,logger:f,id:o,ingest:$(o),config:l,env:s},g=await n(d);t[o]=g}return t}(i,e.transformers||{}),i}async function He(e){e=e||{};const n=await Ne(e),t=(o=n,{type:"elb",config:{},push:async(e,n,t,r,s,i)=>{if("string"==typeof e&&e.startsWith("walker ")){const r=e.replace("walker ","");return o.command(r,n,t)}let a;if("string"==typeof e)a={name:e},n&&"object"==typeof n&&!Array.isArray(n)&&(a.data=n);else{if(!e||"object"!=typeof e)return _e({ok:!1});a=e,n&&"object"==typeof n&&!Array.isArray(n)&&(a.data={...a.data||{},...n})}return r&&"object"==typeof r&&(a.context=r),s&&Array.isArray(s)&&(a.nested=s),i&&"object"==typeof i&&(a.custom=i),o.push(a)}});var o;n.sources.elb=t;const r=await async function(e,n={}){const t={};for(const[o,r]of Object.entries(n)){const{config:n={}}=r;if(n.require&&n.require.length>0){e.pending.sources[o]=r;continue}const s=await Ae(e,o,r);s&&(t[o]=s)}return t}(n,e.sources||{});Object.assign(n.sources,r);const{consent:s,user:i,globals:a,custom:c}=e;s&&await n.command("consent",s),i&&await n.command("user",i),a&&Object.assign(n.globals,a),c&&Object.assign(n.custom,c),n.config.run&&await n.command("run");let u=t.push;const l=Object.values(n.sources).filter(e=>"elb"!==e.type),f=l.find(e=>e.config.primary);return f?u=f.push:l.length>0&&(u=l[0].push),{collector:n,elb:u}}var Le,Ge=async e=>{let n;return{get flow(){return n},trigger:()=>async t=>{var o;if(window.CookieFirst={consent:t},!n){const t=await He({...e,run:null==(o=e.run)||o});n={collector:t.collector,elb:t.elb}}window.dispatchEvent(new Event("cf_init"))}}},We=(e,n)=>{e&&"object"==typeof e&&(n.window.CookieFirst={consent:e})},Be={necessary:"functional",functional:"functional",performance:"analytics",advertising:"marketing"},Ue=async e=>{var n,t,o,r,s,i,a;const{config:c,env:u}=e,{elb:l}=u,f=null!=(n=u.window)?n:void 0!==globalThis.window?globalThis.window:void 0,d={categoryMap:{...Be,...null==(t=null==c?void 0:c.settings)?void 0:t.categoryMap},explicitOnly:null==(r=null==(o=null==c?void 0:c.settings)?void 0:o.explicitOnly)||r,globalName:null!=(i=null==(s=null==c?void 0:c.settings)?void 0:s.globalName)?i:"CookieFirst"},g={settings:d};let p,v;if(f){const e=e=>{if(d.explicitOnly&&!e)return;if(!e)return;const n={};Object.entries(e).forEach(([e,t])=>{var o,r;if("boolean"!=typeof t)return;const s=null!=(r=null==(o=d.categoryMap)?void 0:o[e])?r:e;n[s]=n[s]||t}),Object.keys(n).length>0&&l("walker consent",n)},n=null!=(a=d.globalName)?a:"CookieFirst",t=f[n];(null==t?void 0:t.consent)&&e(t.consent),p=()=>{var t;const o=f[n];e(null!=(t=null==o?void 0:o.consent)?t:null)},f.addEventListener("cf_init",p),v=n=>{e(n.detail)},f.addEventListener("cf_consent",v)}return{type:"cookiefirst",config:g,push:l,destroy:async e=>{f&&p&&f.removeEventListener("cf_init",p),f&&v&&f.removeEventListener("cf_consent",v)}}},Ke=Ue;return Le=s,((r,s,i,a)=>{if(s&&"object"==typeof s||"function"==typeof s)for(let c of t(s))o.call(r,c)||c===i||e(r,c,{get:()=>s[c],enumerable:!(a=n(s,c))||a.enumerable});return r})(e({},"__esModule",{value:!0}),Le)})();
package/dist/index.d.mts CHANGED
@@ -1,5 +1,13 @@
1
1
  import { Source, Elb, WalkerOS, Logger, Flow, Trigger } from '@walkeros/core';
2
2
 
3
+ declare module '@walkeros/core' {
4
+ interface SourceMap {
5
+ cookiefirst: {
6
+ type: 'cookiefirst';
7
+ platform?: 'web';
8
+ };
9
+ }
10
+ }
3
11
  /**
4
12
  * CookieFirst consent object structure
5
13
  */
package/dist/index.d.ts CHANGED
@@ -1,5 +1,13 @@
1
1
  import { Source, Elb, WalkerOS, Logger, Flow, Trigger } from '@walkeros/core';
2
2
 
3
+ declare module '@walkeros/core' {
4
+ interface SourceMap {
5
+ cookiefirst: {
6
+ type: 'cookiefirst';
7
+ platform?: 'web';
8
+ };
9
+ }
10
+ }
3
11
  /**
4
12
  * CookieFirst consent object structure
5
13
  */
package/dist/index.es5.js CHANGED
@@ -1 +1 @@
1
- "use strict";function _array_like_to_array(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}function _array_with_holes(e){if(Array.isArray(e))return e}function _array_without_holes(e){if(Array.isArray(e))return _array_like_to_array(e)}function asyncGeneratorStep(e,n,t,r,o,a,s){try{var i=e[a](s),c=i.value}catch(e){return void t(e)}i.done?n(c):Promise.resolve(c).then(r,o)}function _async_to_generator(e){return function(){var n=this,t=arguments;return new Promise(function(r,o){var a=e.apply(n,t);function s(e){asyncGeneratorStep(a,r,o,s,i,"next",e)}function i(e){asyncGeneratorStep(a,r,o,s,i,"throw",e)}s(void 0)})}}function _define_property(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function _instanceof(e,n){return null!=n&&"undefined"!=typeof Symbol&&n[Symbol.hasInstance]?!!n[Symbol.hasInstance](e):e instanceof n}function _iterable_to_array(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function _iterable_to_array_limit(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var r,o,a=[],s=!0,i=!1;try{for(t=t.call(e);!(s=(r=t.next()).done)&&(a.push(r.value),!n||a.length!==n);s=!0);}catch(e){i=!0,o=e}finally{try{s||null==t.return||t.return()}finally{if(i)throw o}}return a}}function _non_iterable_rest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _non_iterable_spread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _object_spread(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{},r=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(t).filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.forEach(function(n){_define_property(e,n,t[n])})}return e}function ownKeys(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter(function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable})),t.push.apply(t,r)}return t}function _object_spread_props(e,n){return n=null!=n?n:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ownKeys(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}),e}function _sliced_to_array(e,n){return _array_with_holes(e)||_iterable_to_array_limit(e,n)||_unsupported_iterable_to_array(e,n)||_non_iterable_rest()}function _to_consumable_array(e){return _array_without_holes(e)||_iterable_to_array(e)||_unsupported_iterable_to_array(e)||_non_iterable_spread()}function _type_of(e){return e&&"undefined"!=typeof Symbol&&e.constructor===Symbol?"symbol":typeof e}function _unsupported_iterable_to_array(e,n){if(e){if("string"==typeof e)return _array_like_to_array(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(t):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_array_like_to_array(e,n):void 0}}function _ts_generator(e,n){var t,r,o,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},s=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),i=Object.defineProperty;return i(s,"next",{value:c(0)}),i(s,"throw",{value:c(1)}),i(s,"return",{value:c(2)}),"function"==typeof Symbol&&i(s,Symbol.iterator,{value:function(){return this}}),s;function c(i){return function(c){return function(i){if(t)throw new TypeError("Generator is already executing.");for(;s&&(s=0,i[0]&&(a=0)),a;)try{if(t=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=n.call(e,a)}catch(e){i=[6,e],r=0}finally{t=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,c])}}}function _ts_values(e){var n="function"==typeof Symbol&&Symbol.iterator,t=n&&e[n],r=0;if(t)return t.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(n?"Object is not iterable.":"Symbol.iterator is not defined.")}var SourceCookieFirst=function(){var e=function(e){return{_meta:{hops:0,path:[e]}}},n=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};t=_object_spread({},Me,t);var r=Object.entries(n).reduce(function(n,r){var o=_sliced_to_array(r,2),a=o[0],s=o[1],i=e[a];return t.merge&&Array.isArray(i)&&Array.isArray(s)?n[a]=s.reduce(function(e,n){return e.includes(n)?e:_to_consumable_array(e).concat([n])},_to_consumable_array(i)):(t.extend||a in e)&&(n[a]=s),n},{});return t.shallow?_object_spread({},e,r):(Object.assign(e,r),e)},t=function(e){return Array.isArray(e)},r=function(e){return void 0!==e},o=function(e){return"function"==typeof e},a=function(e){return"object"==(void 0===e?"undefined":_type_of(e))&&null!==e&&!t(e)&&"[object Object]"===Object.prototype.toString.call(e)},s=function(e){return"string"==typeof e},i=function(e,n,t){if(!a(e))return e;for(var r=Ie(e),o=n.split("."),s=r,i=0;i<o.length;i++){var c=o[i];i===o.length-1?s[c]=t:(c in s&&"object"==_type_of(s[c])&&null!==s[c]||(s[c]={}),s=s[c])}return r},c=function(e){var n=_object_spread({},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}),t={},r=!e||0===Object.keys(e).length;return Object.keys(n).forEach(function(o){n[o]&&(t[o]=!0,e&&e[o]&&(r=!0))}),!!r&&t},u=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:6,n=arguments.length>1?arguments[1]:void 0;if(n){for(var t=n.length,r="",o=0;o<e;o++)r+=n[Math.random()*t|0];return r}for(var a="";a.length<e;)a+=(36*Math.random()|0).toString(36);return a},l=function(e){var n,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1e3,r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=null,a=!1;return function(){for(var s=arguments.length,i=new Array(s),c=0;c<s;c++)i[c]=arguments[c];return new Promise(function(s){var c=r&&!a;o&&clearTimeout(o),o=setTimeout(function(){o=null,r&&!a||(n=e.apply(void 0,_to_consumable_array(i)),s(n))},t),c&&(a=!0,n=e.apply(void 0,_to_consumable_array(i)),s(n))})}},f=function(e){return{message:e.message,name:e.name,stack:e.stack,cause:e.cause}},d=function(e,n){var t,r={};return _instanceof(e,Error)?(t=e.message,r.error=f(e)):t=e,void 0!==n&&(_instanceof(n,Error)?r.error=f(n):"object"==(void 0===n?"undefined":_type_of(n))&&null!==n?"error"in(r=_object_spread({},r,n))&&_instanceof(r.error,Error)&&(r.error=f(r.error)):r.value=n),{message:t,context:r}},_=function(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return Ne({level:void 0!==n.level?(e=n.level,"string"==typeof e?De[e]:e):0,handler:n.handler,jsonHandler:n.jsonHandler,scope:[]})},g=function(e){return He(e)?e:void 0},v=function(e,n,t){return function(){for(var r=arguments.length,o=new Array(r),a=0;a<r;a++)o[a]=arguments[a];try{return e.apply(void 0,_to_consumable_array(o))}catch(e){if(!n)return;return n(e)}finally{null==t||t()}}},p=function(e,n,t){return function(){for(var r=arguments.length,o=new Array(r),a=0;a<r;a++)o[a]=arguments[a];return _async_to_generator(function(){var r;return _ts_generator(this,function(a){switch(a.label){case 0:return a.trys.push([0,2,4,6]),[4,e.apply(void 0,_to_consumable_array(o))];case 1:case 3:return[2,a.sent()];case 2:return r=a.sent(),n?[4,n(r)]:[2];case 4:return[4,null==t?void 0:t()];case 5:return a.sent(),[7];case 6:return[2]}})})()}},y=function(e,n){return _async_to_generator(function(){var r,o,a,s,i,c,u,l,f,d;return _ts_generator(this,function(_){return o=_sliced_to_array((e.name||"").split(" "),2),a=o[0],s=o[1],n&&a&&s?(c="",l=s,f=function(n){if(n)return(n=t(n)?n:[n]).find(function(n){return!n.condition||n.condition(e)})},n[u=a]||(u="*"),[2,((d=n[u])&&(d[l]||(l="*"),i=f(d[l])),i||(u="*",l="*",i=f(null===(r=n[u])||void 0===r?void 0:r[l])),i&&(c="".concat(u," ").concat(l)),{eventMapping:i,mappingKey:c})]):[2,{}]})})()},b=function(e){return _async_to_generator(function(e){var n,o,s,i,c,u,l,f,d,_,g,v,y,b=arguments;return _ts_generator(this,function(h){switch(h.label){case 0:if(n=b.length>1&&void 0!==b[1]?b[1]:{},o=b.length>2&&void 0!==b[2]?b[2]:{},!r(e))return[2];i=a(e)&&e.consent||o.consent||(null===(s=o.collector)||void 0===s?void 0:s.consent),c=t(n)?n:[n],u=!0,l=!1,f=void 0,h.label=1;case 1:h.trys.push([1,6,7,8]),d=c[Symbol.iterator](),h.label=2;case 2:return(u=(_=d.next()).done)?[3,5]:(g=_.value,[4,p(Ge)(e,g,_object_spread_props(_object_spread({},o),{consent:i}))]);case 3:if(v=h.sent(),r(v))return[2,v];h.label=4;case 4:return u=!0,[3,2];case 5:return[3,8];case 6:return y=h.sent(),l=!0,f=y,[3,8];case 7:try{u||null==d.return||d.return()}finally{if(l)throw f}return[7];case 8:return[2]}})}).apply(this,arguments)},h=function(e,t,r){return _async_to_generator(function(){var o,s,c,u,l,f,d,_,g,v,p;return _ts_generator(this,function(h){switch(h.label){case 0:return t.policy?[4,Promise.all(Object.entries(t.policy).map(function(n){var t=_sliced_to_array(n,2),o=t[0],a=t[1];return _async_to_generator(function(){var n;return _ts_generator(this,function(t){switch(t.label){case 0:return[4,b(e,a,{collector:r})];case 1:return n=t.sent(),e=i(e,o,n),[2]}})})()}))]:[3,2];case 1:h.sent(),h.label=2;case 2:return[4,y(e,t.mapping)];case 3:return s=h.sent(),c=s.eventMapping,u=s.mappingKey,(null==c?void 0:c.policy)?[4,Promise.all(Object.entries(c.policy).map(function(n){var t=_sliced_to_array(n,2),o=t[0],a=t[1];return _async_to_generator(function(){var n;return _ts_generator(this,function(t){switch(t.label){case 0:return[4,b(e,a,{collector:r})];case 1:return n=t.sent(),e=i(e,o,n),[2]}})})()}))]:[3,5];case 4:h.sent(),h.label=5;case 5:return(f=t.data)?[4,b(e,t.data,{collector:r})]:[3,7];case 6:f=h.sent(),h.label=7;case 7:return l=f,d=Boolean(null==c?void 0:c.skip),c?c.ignore?[2,{event:e,data:l,mapping:c,mappingKey:u,ignore:!0,skip:d}]:(c.name&&(e.name=c.name),c.data?(g=c.data)?[4,b(e,c.data,{collector:r})]:[3,9]:[3,10]):[3,10];case 8:g=h.sent(),h.label=9;case 9:_=g,l=a(l)&&a(_)?n(l,_):_,h.label=10;case 10:return(v=null!==(o=null==c?void 0:c.include)&&void 0!==o?o:t.include)&&v.length>0&&(p=function(e,n){var t={},r=n.includes("all")?Object.keys(Te):n,o=!0,s=!1,i=void 0;try{for(var c,u=r[Symbol.iterator]();!(o=(c=u.next()).done);o=!0){var l=c.value,f=Te[l];if(f){var d=f(e),_=!0,g=!1,v=void 0;if(a(d))try{for(var p,y=Object.entries(d)[Symbol.iterator]();!(_=(p=y.next()).done);_=!0){var b=_sliced_to_array(p.value,2),h=b[0],m=b[1];if(void 0!==m){var w="context"===l&&Array.isArray(m)?m[0]:m;t["".concat(l,"_").concat(h)]=w}}}catch(e){g=!0,v=e}finally{try{_||null==y.return||y.return()}finally{if(g)throw v}}}}}catch(e){s=!0,i=e}finally{try{o||null==u.return||u.return()}finally{if(s)throw i}}return t}(e,v),Object.keys(p).length>0&&(l=a(l)?n(p,l):null!=l?l:p)),[2,{event:e,data:l,mapping:c,mappingKey:u,ignore:!1,skip:d}]}})})()},m=function(e,n,t,r){return function(){for(var o=arguments.length,a=new Array(o),s=0;s<o;s++)a[s]=arguments[s];var i,c="pre"+n,u="post"+n,l=t[c],f=t[u],d=function(e,n){r?r.warn(e,{error:n}):console.warn(e,n)};if(l)try{i=l.apply(void 0,[{fn:e}].concat(_to_consumable_array(a)))}catch(n){d("Hook ".concat(String(c)," failed, falling back to original function"),n),i=e.apply(void 0,_to_consumable_array(a))}else i=e.apply(void 0,_to_consumable_array(a));if(f)try{i=f.apply(void 0,[{fn:e,result:i}].concat(_to_consumable_array(a)))}catch(e){d("Hook ".concat(String(u)," failed, keeping original result"),e)}return i}},w=function(e){return Array.isArray(e)&&e.length>0&&"object"==_type_of(e[0])&&null!==e[0]&&"match"in e[0]},j=function(e,n){var t={ingest:null!=e?e:{}};return void 0!==n&&(t.event=n),t},k=function(e){var n;return{full:null!==(n=e.full)&&void 0!==n&&n,storeId:e.store,rules:e.rules.map(function(e){return{match:Le(e.match),key:e.key,ttl:e.ttl,update:e.update}})}},O=function(e,n,t,r){var o=e.rules.find(function(e){return e.match(t)});if(!o)return null;var a=o.key.map(function(e){var n;return String(null!==(n=Re(t,e))&&void 0!==n?n:"")});if(a.every(function(e){return""===e}))return null;var s="".concat(r,":").concat(a.join(":")),i=n.get(s);return void 0!==i?{status:"HIT",key:s,value:i,rule:o}:{status:"MISS",key:s,rule:o}},S=function(e,n,t,r){e.set(n,t,1e3*r)},x=function(e,n,t){return _async_to_generator(function(){var r,o,a,s,c,u,l,f,d,_,g;return _ts_generator(this,function(v){switch(v.label){case 0:if(!n)return[2,e];r=e,o=!0,a=!1,s=void 0,v.label=1;case 1:v.trys.push([1,6,7,8]),c=Object.entries(n)[Symbol.iterator](),v.label=2;case 2:return(o=(u=c.next()).done)?[3,5]:(l=_sliced_to_array(u.value,2),f=l[0],d=l[1],_=[r,f],[4,b(t,d)]);case 3:r=i.apply(void 0,_.concat([v.sent()])),v.label=4;case 4:return o=!0,[3,2];case 5:return[3,8];case 6:return g=v.sent(),a=!0,s=g,[3,8];case 7:try{o||null==c.return||c.return()}finally{if(a)throw s}return[7];case 8:return[2,r]}})})()},C=function(e,n){return e.storeId&&n.stores[e.storeId]?n.stores[e.storeId]:n.stores.__cache},A=function(e){var n={},t=!0,r=!1,o=void 0;try{for(var a,s=Object.entries(e)[Symbol.iterator]();!(t=(a=s.next()).done);t=!0){var i,c=_sliced_to_array(a.value,2),u=c[0],l=null===(i=c[1].config)||void 0===i?void 0:i.next;l&&!w(l)?n[u]={next:l}:n[u]={}}}catch(e){r=!0,o=e}finally{try{t||null==s.return||s.return()}finally{if(r)throw o}}return n},P=function(e,n){var t=e.config||{},r=e[n];return void 0!==r?{config:_object_spread_props(_object_spread({},t),_define_property({},n,r)),chainValue:r}:{config:t,chainValue:void 0}},E=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!e)return[];if(Array.isArray(e))return e;for(var t=[],r=new Set,o=e;o&&n[o]&&!r.has(o);){r.add(o),t.push(o);var a=n[o].next;if(Array.isArray(a)){var s;(s=t).push.apply(s,_to_consumable_array(a));break}o=a}return t},q=function(n,t,r){return _async_to_generator(function(){var o,a,s,i;return _ts_generator(this,function(c){switch(c.label){case 0:return!t.init||t.config.init?[3,2]:(o=t.type||"unknown",a=n.logger.scope("transformer:".concat(o)),s={collector:n,logger:a,id:r,ingest:e(r),config:t.config,env:M(t.config.env)},a.debug("init"),[4,m(t.init,"TransformerInit",n.hooks,n.logger)(s)]);case 1:if(!1===(i=c.sent()))return[2,!1];t.config=_object_spread_props(_object_spread({},i||t.config),{env:(null==i?void 0:i.env)||t.config.env,init:!0}),a.debug("init done"),c.label=2;case 2:return[2,!0]}})})()},D=function(e,n,t,r,o,a){return _async_to_generator(function(){var s,i,c,u;return _ts_generator(this,function(l){switch(l.label){case 0:return s=n.type||"unknown",i=e.logger.scope("transformer:".concat(s)),c={collector:e,logger:i,id:t,ingest:o,config:n.config,env:_object_spread({},M(n.config.env),a?{respond:a}:{})},i.debug("push",{event:r.name}),[4,m(n.push,"TransformerPush",e.hooks,e.logger)(r,c)];case 1:return u=l.sent(),[2,(i.debug("push done"),u)]}})})()},M=function(e){return e&&a(e)?e:{}},I=function(n,t,r){return _async_to_generator(function(){var o,a,s,i,c,u,l,f,d,_,g,v,y,h,m,P,q,D,M,I,R,T,F;return _ts_generator(this,function(N){switch(N.label){case 0:return a=r.code,s=r.config,i=void 0===s?{}:s,c=r.env,u=void 0===c?{}:c,l=r.primary,f=r.next,d=r.before,_=r.cache,v=e(t),y=_?k(_object_spread_props(_object_spread({},_),{full:null===(o=_.full)||void 0===o||o})):void 0,h=Ue(f),m=Array.isArray(f)&&w(f)||!h?void 0:E(We(h),A(n.transformers)),P=Ue(d),q=Array.isArray(d)&&w(d)||!P?void 0:E(We(P),A(n.transformers)),D=n.logger.scope("source").scope(t),M=_object_spread({push:function(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return _async_to_generator(function(){var o,a,s,c,u,l,f,d,_,p,b,w,k,D,M;return _ts_generator(this,function(I){switch(I.label){case 0:return a=e,(s=null!=q?q:P?E(We(P,j(v)),A(n.transformers)):[]).length>0&&n.transformers&&Object.keys(n.transformers).length>0?[4,Ke(n,n.transformers,s,a,v,g,"source.".concat(t,".before"))]:[3,2];case 1:if(null===(c=I.sent()).event)return[2,{ok:!0}];c.respond&&(g=c.respond),a=Array.isArray(c.event)?c.event[0]:c.event,I.label=2;case 2:return y&&(u=C(y,n))?(l=j(v),(f=O(y,u,l,"s:".concat(t)))?"HIT"===f.status&&void 0!==f.value&&y.full?(d=f.value,f.rule.update?[4,x(d,f.rule.update,_object_spread_props(_object_spread({},l),{cache:{status:"HIT"}}))]:[3,4]):[3,5]:[3,6]):[3,6];case 3:d=I.sent(),I.label=4;case 4:return[2,(null==g||g(d),{ok:!0})];case 5:"MISS"===f.status&&y.full&&g&&(_=g,p=f.rule.update,b=_object_spread_props(_object_spread({},l),{cache:{status:"MISS"}}),w=f.key,k=f.rule.ttl,g=function(e){S(u,w,e,k),p?o=_async_to_generator(function(){var n;return _ts_generator(this,function(t){switch(t.label){case 0:return[4,x(e,p,b)];case 1:return n=t.sent(),_(n),[2]}})})():_(e)}),"MISS"!==f.status||y.full||S(u,f.key,!0,f.rule.ttl),I.label=6;case 6:return D=null!=m?m:h?E(We(h,j(v)),A(n.transformers)):[],[4,n.push(a,_object_spread_props(_object_spread({},r),{id:t,ingest:v,respond:g,mapping:i,preChain:D}))];case 7:return M=I.sent(),o?[4,o]:[3,9];case 8:I.sent(),I.label=9;case 9:return[2,M]}})})()},command:n.command,sources:n.sources,elb:n.sources.elb.push,logger:D},u),I={collector:n,logger:D,id:t,config:i,env:M,setIngest:function(r){return _async_to_generator(function(){var o,a;return _ts_generator(this,function(s){switch(s.label){case 0:return i.ingest?[4,b(r,i.ingest,{collector:n})]:[2,void(v=e(t))];case 1:return o=s.sent(),a=e(t),v=_object_spread_props(_object_spread({},a,o),{_meta:a._meta}),[2]}})})()},setRespond:function(e){g=e}},[4,p(a)(I)];case 1:return(R=N.sent())?(T=R.type||"unknown",F=n.logger.scope(T).scope(t),[2,(M.logger=F,l&&(R.config=_object_spread_props(_object_spread({},R.config),{primary:l})),R)]):[2]}})})()},R=function(e){return _async_to_generator(function(e){var n,t,r,o,a,s,i,c,u,l,f,d,_,g,v=arguments;return _ts_generator(this,function(p){switch(p.label){case 0:n=v.length>1&&void 0!==v[1]?v[1]:{},t={},r=!0,o=!1,a=void 0,p.label=1;case 1:p.trys.push([1,6,7,8]),s=Object.entries(n)[Symbol.iterator](),p.label=2;case 2:return(r=(i=s.next()).done)?[3,5]:(c=_sliced_to_array(i.value,2),u=c[0],l=c[1],f=l.config,(d=void 0===f?{}:f).require&&d.require.length>0?(e.pending.sources[u]=l,[3,4]):[4,I(e,u,l)]);case 3:(_=p.sent())&&(t[u]=_),p.label=4;case 4:return r=!0,[3,2];case 5:return[3,8];case 6:return g=p.sent(),o=!0,a=g,[3,8];case 7:try{r||null==s.return||s.return()}finally{if(o)throw a}return[7];case 8:return[2,t]}})}).apply(this,arguments)},T=function(e,n,r){return _async_to_generator(function(){var o,a,s;return _ts_generator(this,function(i){return o=e.on,a=o[n]||[],(s=t(r)?r:[r]).forEach(function(e){a.push(e)}),o[n]=a,N(e,n,s),[2]})})()},F=function(e,n,t,r,o){if(n.on){var a=n.type||"unknown",s=e.logger.scope(a).scope("on").scope(r),i={collector:e,logger:s,id:t,config:n.config,data:o,env:V(n.env,n.config.env)};v(n.on)(r,i)}},N=function(e,n,t,r){var o,a,s,i;switch(n){case Be.Commands.Consent:o=r||e.consent;break;case Be.Commands.Session:o=e.session;break;case Be.Commands.User:o=r||e.user;break;case Be.Commands.Custom:o=r||e.custom;break;case Be.Commands.Globals:o=r||e.globals;break;case Be.Commands.Config:o=r||e.config;break;case Be.Commands.Ready:case Be.Commands.Run:default:o=void 0}if(t.length)switch(n){case Be.Commands.Consent:a=e,s=t,i=r||a.consent,s.forEach(function(e){Object.keys(i).filter(function(n){return n in e}).forEach(function(n){v(e[n])(a,i)})});break;case Be.Commands.Ready:case Be.Commands.Run:!function(e,n){e.allowed&&n.forEach(function(n){v(n)(e)})}(e,t);break;case Be.Commands.Session:!function(e,n){e.session&&n.forEach(function(n){v(n)(e,e.session)})}(e,t);break;default:t.forEach(function(n){"function"==typeof n&&v(n)(e,o)})}},H=function(e,n,t,r){return _async_to_generator(function(){var o,a,s,i,c,u,l,f,d,_,g;return _ts_generator(this,function(v){switch(v.label){case 0:switch(a=t||[],t||(a=e.on[n]||[]),n){case Be.Commands.Consent:o=r||e.consent;break;case Be.Commands.Session:o=e.session;break;case Be.Commands.User:o=r||e.user;break;case Be.Commands.Custom:o=r||e.custom;break;case Be.Commands.Globals:o=r||e.globals;break;case Be.Commands.Config:o=r||e.config;break;case Be.Commands.Ready:case Be.Commands.Run:default:o=void 0}s=!1,i=!0,c=!1,u=void 0,v.label=1;case 1:v.trys.push([1,6,7,8]),l=Object.values(e.sources)[Symbol.iterator](),v.label=2;case 2:return(i=(f=l.next()).done)?[3,5]:(d=f.value).on?(_=!1,[4,p(d.on)(n,o)]):[3,4];case 3:_===v.sent()&&(s=!0),v.label=4;case 4:return i=!0,[3,2];case 5:return[3,8];case 6:return g=v.sent(),c=!0,u=g,[3,8];case 7:try{i||null==l.return||l.return()}finally{if(c)throw u}return[7];case 8:return Object.entries(e.destinations).forEach(function(t){var r=_sliced_to_array(t,2),a=r[0],s=r[1];if(s.on){if(!s.config.init)return s.queueOn=s.queueOn||[],void s.queueOn.push({type:n,data:o});F(e,s,a,n,o)}}),Object.keys(e.pending.sources).length>0||Object.keys(e.pending.destinations).length>0?[4,(y=e,b=n,_async_to_generator(function(){var e,n,t,r,o,a,s,i,c,u,l,f,d,_,g,v,p,h,m,w,j,k,O,S,x;return _ts_generator(this,function(C){switch(C.label){case 0:e=!0,n=!1,t=void 0,C.label=1;case 1:C.trys.push([1,6,7,8]),r=Object.entries(y.pending.sources)[Symbol.iterator](),C.label=2;case 2:return(e=(o=r.next()).done)?[3,5]:(a=_sliced_to_array(o.value,2),s=a[0],i=a[1],!y.pending.sources[s]||y.sources[s]?[3,4]:(u=null===(c=i.config)||void 0===c?void 0:c.require)?-1===(l=u.indexOf(b))?[3,4]:(u.splice(l,1),u.length>0?[3,4]:(delete y.pending.sources[s],[4,I(y,s,i)])):[3,4]);case 3:(f=C.sent())&&(y.sources[s]=f),C.label=4;case 4:return e=!0,[3,2];case 5:return[3,8];case 6:return d=C.sent(),n=!0,t=d,[3,8];case 7:try{e||null==r.return||r.return()}finally{if(n)throw t}return[7];case 8:_=!0,g=!1,v=void 0;try{for(p=Object.entries(y.pending.destinations)[Symbol.iterator]();!(_=(h=p.next()).done);_=!0)m=_sliced_to_array(h.value,2),w=m[0],j=m[1],y.pending.destinations[w]&&!y.destinations[w]&&(O=null===(k=j.config)||void 0===k?void 0:k.require)&&-1!==(S=O.indexOf(b))&&(O.splice(S,1),O.length>0||(delete y.pending.destinations[w],!1!==(x=z(j)).config.queue&&(x.queuePush=_to_consumable_array(y.queue)),y.destinations[w]=x))}catch(e){g=!0,v=e}finally{try{_||null==p.return||p.return()}finally{if(g)throw v}}return[2]}})})())]:[3,10];case 9:v.sent(),v.label=10;case 10:return[2,(N(e,n,a,r),!s)]}var y,b})})()},G=function(e,n,t,r){if(!e)return[];if(n){var o=We(n,j(r));return o?E(o,A(t)):[]}return E(e,A(t))},L=function(e,n,t){return _async_to_generator(function(){var r,a,s,i,c,l,f,d,_,g,v,p;return _ts_generator(this,function(y){if(r=n.code,a=n.config,s=void 0===a?{}:a,i=n.env,c=void 0===i?{}:i,l=n.before,f=n.next,d=n.cache,!o(r.push))return[2,K({ok:!1,failed:{invalid:{type:"invalid",error:"Destination code must have a push method"}}})];if(_=t||s||{init:!1},g=l?_object_spread_props(_object_spread({},_),{before:l}):_object_spread({},_),f&&(g=_object_spread_props(_object_spread({},g),{next:f})),d&&(g=_object_spread_props(_object_spread({},g),{cache:d})),v=_object_spread_props(_object_spread({},r),{config:g,env:V(r.env,c)}),!(p=v.config.id))do{p=u(5,"abcdefghijklmnopqrstuvwxyz")}while(e.destinations[p]);return[2,(e.destinations[p]=v,!1!==v.config.queue&&(v.queuePush=_to_consumable_array(e.queue)),U(e,void 0,{},_define_property({},p,v)))]})})()},U=function(t,r,o){return _async_to_generator(function(t,r){var o,a,s,i,u,l,f,d,_,g,v,y,b,h,m,x,A,P,E,q=arguments;return _ts_generator(this,function(D){switch(D.label){case 0:return o=q.length>2&&void 0!==q[2]?q[2]:{},a=q.length>3?q[3]:void 0,s=t.allowed,i=t.consent,u=t.globals,l=t.user,s?(r&&(t.queue.push(r),t.status.in++),a||(a=t.destinations),[4,Promise.all(Object.entries(a||{}).map(function(a){var s=_sliced_to_array(a,2),f=s[0],d=s[1];return _async_to_generator(function(){var a,s,_,g,v,y,b,h,m,x,A,P,E,q,D,M,I,R,T;return _ts_generator(this,function(F){switch(F.label){case 0:return d.config.disabled?[2,{id:f,destination:d,skipped:!0}]:(v=(d.queuePush||[]).map(function(e){return _object_spread_props(_object_spread({},e),{consent:i})}),d.queuePush=[],r&&v.push(Ie(r)),y=o.ingest?_object_spread_props(_object_spread({},o.ingest),{_meta:_object_spread_props(_object_spread({},o.ingest._meta),{path:_to_consumable_array(o.ingest._meta.path)})}):e("unknown"),v.length||(null===(s=d.queueOn)||void 0===s?void 0:s.length)?v.length||!(null===(_=d.queueOn)||void 0===_?void 0:_.length)?[3,2]:[4,p(W)(t,d,f)]:[2,{id:f,destination:d,skipped:!0}]);case 1:return b=F.sent(),[2,{id:f,destination:d,skipped:!b}];case 2:return h=[],m=v.filter(function(e){var n=c(d.config.consent,i,e.consent);return!n||(e.consent=n,h.push(e),!1)}),(a=d.queuePush).push.apply(a,_to_consumable_array(m)),h.length?[4,p(W)(t,d,f)]:[2,{id:f,destination:d,queue:v}];case 3:return F.sent()?(d.dlq||(d.dlq=[]),P=d.config.before,E=G(P,P&&w(P)?Ue(P):void 0,t.transformers,y),q=d.config.next,D=q&&w(q)?Ue(q):void 0,M=null===(g=d.config)||void 0===g?void 0:g.cache,I=M?k(M):void 0,R=I?C(I,t):void 0,T=0,[4,Promise.all(h.map(function(e){return _async_to_generator(function(){var r,a,s,i,c,_,g,v,b,h,m,w,k;return _ts_generator(this,function(C){switch(C.label){case 0:if(e.globals=n(u,e.globals),e.user=n(l,e.user),(null==I?void 0:I.full)&&R){if(a=j(y,e),"HIT"===(null==(s=O(I,R,a,"d:".concat(f)))?void 0:s.status))return[2,e];"MISS"===(null==s?void 0:s.status)&&(r={key:s.key,ttl:s.rule.ttl})}return i=e,c=o.respond,E.length>0&&t.transformers&&Object.keys(t.transformers).length>0?[4,Ke(t,t.transformers,E,e,y,o.respond,"destination.".concat(f,".before"))]:[3,2];case 1:if(null===(_=C.sent()).event)return[2,e];_.respond&&(c=_.respond),i=Array.isArray(_.event)?_.event[0]:_.event,C.label=2;case 2:if(I&&!I.full&&R){if(g=j(y,i),"HIT"===(null==(v=O(I,R,g,"d:".concat(f)))?void 0:v.status))return[2,e];"MISS"===(null==v?void 0:v.status)&&(r={key:v.key,ttl:v.rule.ttl})}return b=Date.now(),h=!1,[4,p(B,function(e){var n=d.type||"unknown";t.logger.scope(n).error("Push failed",{error:e,event:i.name}),x=e,h=!0,d.dlq.push([i,e])})(t,d,f,i,y,c)];case 3:return m=C.sent(),T+=Date.now()-b,r&&R&&void 0===d.config.mock&&S(R,r.key,null==m||m,r.ttl),void 0!==m&&(A=m),h||!q?[3,5]:(void 0!==m&&(y._response=m),(w=G(q,D,t.transformers,y)).length>0&&t.transformers&&Object.keys(t.transformers).length>0?[4,Ke(t,t.transformers,w,i,y,c,"destination.".concat(f,".next"))]:[3,5]);case 4:(k=C.sent()).respond&&(c=k.respond),C.label=5;case 5:return[2,e]}})})()}))]):[2,{id:f,destination:d,queue:v}];case 4:return[2,(F.sent(),{id:f,destination:d,error:x,response:A,totalDuration:T})]}})})()}))]):[2,K({ok:!1})];case 1:f=D.sent(),d={},_={},g={},v=!0,y=!1,b=void 0;try{for(h=f[Symbol.iterator]();!(v=(m=h.next()).done);v=!0)(x=m.value).skipped||(A={type:x.destination.type||"unknown",data:x.response},t.status.destinations[x.id]||(t.status.destinations[x.id]={count:0,failed:0,duration:0}),P=t.status.destinations[x.id],E=Date.now(),x.error?(A.error=x.error,g[x.id]=A,P.failed++,P.lastAt=E,P.duration+=x.totalDuration||0,t.status.failed++):x.queue&&x.queue.length?_[x.id]=A:(d[x.id]=A,P.count++,P.lastAt=E,P.duration+=x.totalDuration||0,t.status.out++))}catch(e){y=!0,b=e}finally{try{v||null==h.return||h.return()}finally{if(y)throw b}}return[2,K(_object_spread({event:r},Object.keys(d).length&&{done:d},Object.keys(_).length&&{queued:_},Object.keys(g).length&&{failed:g}))]}})}).apply(this,arguments)},W=function(e,n,t){return _async_to_generator(function(){var r,o,a,s,i,c,u,l,f,d,_,g,v,p;return _ts_generator(this,function(y){switch(y.label){case 0:return!n.init||n.config.init?[3,2]:(o=n.type||"unknown",a=e.logger.scope(o),s={collector:e,logger:a,id:t,config:n.config,env:V(n.env,n.config.env)},a.debug("init"),[4,m(n.init,"DestinationInit",e.hooks,e.logger)(s)]);case 1:if(!1===(i=y.sent()))return[2,i];if(n.config=_object_spread_props(_object_spread({},i||n.config),{init:!0}),null===(r=n.queueOn)||void 0===r?void 0:r.length){c=n.queueOn,n.queueOn=[],u=!0,l=!1,f=void 0;try{for(d=c[Symbol.iterator]();!(u=(_=d.next()).done);u=!0)g=_.value,v=g.type,p=g.data,F(e,n,t,v,p)}catch(e){l=!0,f=e}finally{try{u||null==d.return||d.return()}finally{if(l)throw f}}}a.debug("init done"),y.label=2;case 2:return[2,!0]}})})()},B=function(e,n,t,o,a,s){return _async_to_generator(function(){var i,c,u,f,d,_,g,v,p,y;return _ts_generator(this,function(b){switch(b.label){case 0:return i=n.config,[4,h(o,i,e)];case 1:return(c=b.sent()).ignore?[2,!1]:(u=n.type||"unknown",f=e.logger.scope(u),d={collector:e,logger:f,id:t,config:i,data:c.data,rule:c.mapping,ingest:a,env:_object_spread({},V(n.env,i.env),s?{respond:s}:{})},void 0!==i.mock?[2,(f.debug("mock",{event:c.event.name}),i.mock)]:(_=c.mapping,g=c.mappingKey||"* *",(null==_?void 0:_.batch)&&n.pushBatch&&void 0===i.mock?[3,3]:(f.debug("push",{event:c.event.name}),[4,m(n.push,"DestinationPush",e.hooks,e.logger)(c.event,d)])));case 2:return v=b.sent(),[2,(f.debug("push done"),v)];case 3:return n.batches=n.batches||{},n.batches[g]||(p={key:g,events:[],data:[]},n.batches[g]={batched:p,batchFn:l(function(){var r=n.batches[g].batched,o={collector:e,logger:f,id:t,config:i,data:void 0,rule:_,ingest:a,env:_object_spread({},V(n.env,i.env),s?{respond:s}:{})};f.debug("push batch",{events:r.events.length}),m(n.pushBatch,"DestinationPushBatch",e.hooks,e.logger)(r,o),f.debug("push batch done"),r.events=[],r.data=[]},_.batch)}),(y=n.batches[g]).batched.events.push(c.event),r(c.data)&&y.batched.data.push(c.data),y.batchFn(),[2,!0]}})})()},K=function(e){return _object_spread({ok:!(null==e?void 0:e.failed)},e)},z=function(e){var n=e.code,t=e.config,r=void 0===t?{}:t,o=e.env,a=void 0===o?{}:o,s=e.cache,i=P(e,"before").config,c=P(_object_spread_props(_object_spread({},e),{config:i}),"next").config,u=_object_spread({},n.config,r,c);s&&(u.cache=s);var l=V(n.env,a);return _object_spread_props(_object_spread({},n),{config:u,env:l})},J=function(e){return _async_to_generator(function(e){var n,t,r,o,a,s,i,c,u,l,f,d,_=arguments;return _ts_generator(this,function(g){n=_.length>1&&void 0!==_[1]?_[1]:{},o={},a=!0,s=!1,i=void 0;try{for(c=Object.entries(n)[Symbol.iterator]();!(a=(u=c.next()).done);a=!0)l=_sliced_to_array(u.value,2),f=l[0],d=l[1],(null===(r=d.config)||void 0===r||null===(t=r.require)||void 0===t?void 0:t.length)?e.pending.destinations[f]=d:o[f]=z(d)}catch(e){s=!0,i=e}finally{try{a||null==c.return||c.return()}finally{if(s)throw i}}return[2,o]})}).apply(this,arguments)},V=function(e,n){return e||n?n?e&&a(e)&&a(n)?_object_spread({},e,n):n:e:{}},Y=function(e,n,t){return _async_to_generator(function(){var r;return _ts_generator(this,function(o){switch(o.label){case 0:return r=Object.entries(e).map(function(e){var r=_sliced_to_array(e,2),o=r[0],a=r[1];return _async_to_generator(function(){var e,r,s,i,c,u;return _ts_generator(this,function(l){switch(l.label){case 0:if(!(r=a.destroy))return[2];s=a.type||"unknown",i=t.scope(s),c={id:o,config:a.config,env:null!==(e=a.env)&&void 0!==e?e:{},logger:i},l.label=1;case 1:return l.trys.push([1,3,,4]),[4,Promise.race([r(c),new Promise(function(e,t){return setTimeout(function(){return t(new Error("".concat(n," '").concat(o,"' destroy timed out")))},5e3)})])];case 2:return l.sent(),[3,4];case 3:return u=l.sent(),i.error("".concat(n," '").concat(o,"' destroy failed: ").concat(u)),[3,4];case 4:return[2]}})})()}),[4,Promise.allSettled(r)];case 1:return o.sent(),[2]}})})()},$=function(e,t,r,i){return _async_to_generator(function(){var c,u,l,f,d,_,g;return _ts_generator(this,function(v){switch(v.label){case 0:switch(l=!1,t){case Be.Commands.Config:return[3,1];case Be.Commands.Consent:return[3,2];case Be.Commands.Custom:return[3,3];case Be.Commands.Destination:return[3,4];case Be.Commands.Globals:return[3,11];case Be.Commands.On:return[3,12];case Be.Commands.Ready:return[3,15];case Be.Commands.Run:return[3,16];case Be.Commands.Session:return[3,18];case Be.Commands.Shutdown:return[3,19];case Be.Commands.User:return[3,21]}return[3,22];case 1:return a(r)&&(n(e.config,r,{shallow:!1}),u=r,l=!0),[3,22];case 2:return a(r)&&(f=function(e,t){var r={};return Object.entries(t).forEach(function(e){var n=_sliced_to_array(e,2),t=n[0],o=n[1];r[t]=!!o}),e.consent=n(e.consent,r),{update:r}}(e,r),d=f.update,u=d,l=!0),[3,22];case 3:return a(r)&&(e.custom=n(e.custom,r),u=r,l=!0),[3,22];case 4:return a(r)?"code"in r&&a(r.code)?[4,L(e,r,i)]:[3,6]:[3,10];case 5:return _=c=v.sent(),[3,9];case 6:return(g=o(r.push))?[4,L(e,{code:r},i)]:[3,8];case 7:g=c=v.sent(),v.label=8;case 8:_=g,v.label=9;case 9:v.label=10;case 10:return[3,22];case 11:return a(r)&&(e.globals=n(e.globals,r),u=r,l=!0),[3,22];case 12:return s(r)?[4,T(e,r,i)]:[3,14];case 13:v.sent(),v.label=14;case 14:return[3,22];case 15:return l=!0,[3,22];case 16:return[4,X(e,r)];case 17:return c=v.sent(),l=!0,[3,22];case 18:return l=!0,[3,22];case 19:return[4,(p=e,_async_to_generator(function(){var e;return _ts_generator(this,function(n){switch(n.label){case 0:return e=p.logger,[4,Y(p.sources,"source",e)];case 1:return n.sent(),[4,Y(p.destinations,"destination",e)];case 2:return n.sent(),[4,Y(p.transformers,"transformer",e)];case 3:return n.sent(),[4,Y(p.stores,"store",e)];case 4:return n.sent(),[2]}})})())];case 20:return v.sent(),[3,22];case 21:a(r)&&(n(e.user,r,{shallow:!1}),u=r,l=!0),v.label=22;case 22:return l?[4,H(e,t,void 0,u)]:[3,25];case 23:return v.sent(),[4,U(e)];case 24:c=v.sent(),v.label=25;case 25:return[2,c||K({ok:!0})]}var p})})()},Q=function(e,n){if(!n.name)throw new Error("Event name is required");var t=_sliced_to_array(n.name.split(" "),2),r=t[0],o=t[1];if(!r||!o)throw new Error("Event name is invalid");++e.count;var a=n.timestamp,s=void 0===a?Date.now():a,i=n.group,c=void 0===i?e.group:i,u=n.count,l=void 0===u?e.count:u,f=n.name,d=void 0===f?"".concat(r," ").concat(o):f,_=n.data,g=void 0===_?{}:_,v=n.context,p=void 0===v?{}:v,y=n.globals,b=void 0===y?e.globals:y,h=n.custom,m=void 0===h?{}:h,w=n.user,j=void 0===w?e.user:w,k=n.nested,O=void 0===k?[]:k,S=n.consent,x=void 0===S?e.consent:S,C=n.id,A=void 0===C?"".concat(s,"-").concat(c,"-").concat(l):C,P=n.trigger,E=void 0===P?"":P,q=n.entity,D=void 0===q?r:q,M=n.action,I=void 0===M?o:M,R=n.timing,T=void 0===R?0:R,F=n.version,N=void 0===F?{source:e.version,tagging:e.config.tagging||0}:F,H=n.source;return{name:d,data:g,context:p,globals:b,custom:m,user:j,nested:O,consent:x,id:A,trigger:E,entity:D,action:I,timestamp:s,timing:T,group:c,count:l,version:N,source:void 0===H?{type:"collector",id:"",previous_id:""}:H}},X=function(e,t){return _async_to_generator(function(){return _ts_generator(this,function(r){switch(r.label){case 0:return e.allowed=!0,e.count=0,e.group=u(),e.timing=Date.now(),t&&(t.consent&&(e.consent=n(e.consent,t.consent)),t.user&&(e.user=n(e.user,t.user)),t.globals&&(e.globals=n(e.config.globalsStatic||{},t.globals)),t.custom&&(e.custom=n(e.custom,t.custom))),Object.values(e.destinations).forEach(function(e){e.queuePush=[]}),e.queue=[],e.round++,[4,U(e)];case 1:return[2,r.sent()]}})})()},Z=function(t){return _async_to_generator(function(){var r,o,a,s,i,u,l,f,d;return _ts_generator(this,function(g){switch(g.label){case 0:return a=n({globalsStatic:{},sessionStatic:{},tagging:0,run:!0},t,{merge:!1,extend:!1}),s={level:null===(r=t.logger)||void 0===r?void 0:r.level,handler:null===(o=t.logger)||void 0===o?void 0:o.handler},i=_(s),u=_object_spread({},a.globalsStatic,t.globals),(l={allowed:!1,config:a,consent:t.consent||{},count:0,custom:t.custom||{},destinations:{},transformers:{},stores:{},globals:u,group:"",hooks:t.hooks||{},logger:i,on:{},queue:[],round:0,session:void 0,status:{startedAt:Date.now(),in:0,out:0,failed:0,sources:{},destinations:{}},timing:Date.now(),user:t.user||{},version:"3.4.2",sources:{},pending:{sources:{},destinations:{}},push:void 0,command:void 0}).push=function(n,t){return m(function(r){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return _async_to_generator(function(){return _ts_generator(this,function(a){switch(a.label){case 0:return[4,p(function(){return _async_to_generator(function(){var a,s,i,u,l,f,d,_,g,v,p,y,b,m,w,j,k,O,S,x,C;return _ts_generator(this,function(A){switch(A.label){case 0:return a=Date.now(),s=o.id,i=o.ingest,u=o.respond,l=o.mapping,f=o.preChain,d=o.include,_=o.exclude,g=u,v=r,p=d||_?function(e,n,t){var r=e;return n&&(r=Object.fromEntries(Object.entries(r).filter(function(e){var t=_sliced_to_array(e,1)[0];return n.includes(t)}))),t&&(r=Object.fromEntries(Object.entries(r).filter(function(e){var n=_sliced_to_array(e,1)[0];return!t.includes(n)}))),r}(n.destinations,d,_):void 0,y=null!=i?i:e(s||"unknown"),l?[4,h(v,l,n)]:[3,2];case 1:if((b=A.sent()).ignore)return[2,K({ok:!0})];if(l.consent&&!c(l.consent,n.consent,b.event.consent))return[2,K({ok:!0})];v=b.event,A.label=2;case 2:return(null==f?void 0:f.length)&&n.transformers&&Object.keys(n.transformers).length>0?[4,Ke(n,n.transformers,f,v,y,g,s?"source.".concat(s,".next"):void 0)]:[3,6];case 3:return null===(m=A.sent()).event?[2,K({ok:!0})]:(m.respond&&(g=m.respond),Array.isArray(m.event)?[4,Promise.all(m.event.map(function(e){return _async_to_generator(function(){var r,o;return _ts_generator(this,function(a){return r=t(e),o=Q(n,r),[2,U(n,o,{id:s,ingest:y,respond:g},p)]})})()}))]:[3,5]);case 4:return j=A.sent(),s&&(n.status.sources[s]||(n.status.sources[s]={count:0,duration:0}),(k=n.status.sources[s]).count+=m.event.length,k.lastAt=Date.now(),k.duration+=Date.now()-a),[2,null!==(w=j[0])&&void 0!==w?w:K({ok:!0})];case 5:v=m.event,A.label=6;case 6:return O=t(v),S=Q(n,O),[4,U(n,S,{id:s,ingest:y,respond:g},p)];case 7:return x=A.sent(),s&&(n.status.sources[s]||(n.status.sources[s]={count:0,duration:0}),(C=n.status.sources[s]).count++,C.lastAt=Date.now(),C.duration+=Date.now()-a),[2,x]}})})()},function(){return K({ok:!1})})()];case 1:return[2,a.sent()]}})})()},"Push",n.hooks,n.logger)}(l,function(e){return _object_spread({timing:Math.round((Date.now()-l.timing)/10)/100,source:{type:"collector",id:"",previous_id:""}},e)}),l.command=function(e,n){return m(function(t,r,o){return _async_to_generator(function(){return _ts_generator(this,function(a){switch(a.label){case 0:return[4,p(function(){return _async_to_generator(function(){return _ts_generator(this,function(a){switch(a.label){case 0:return[4,n(e,t,r,o)];case 1:return[2,a.sent()]}})})()},function(){return K({ok:!1})})()];case 1:return[2,a.sent()]}})})()},"Command",e.hooks,e.logger)}(l,$),f=t.stores||{},[4,function(e){return _async_to_generator(function(e){var n,t,r,o,a,s,i,c,u,l,f,d,_,g,v,p,y,b,h,w,j,k=arguments;return _ts_generator(this,function(O){switch(O.label){case 0:n=k.length>1&&void 0!==k[1]?k[1]:{},t={},r=!0,o=!1,a=void 0,O.label=1;case 1:O.trys.push([1,6,7,8]),s=Object.entries(n)[Symbol.iterator](),O.label=2;case 2:return(r=(i=s.next()).done)?[3,5]:(c=_sliced_to_array(i.value,2),u=c[0],l=c[1],f=l.code,d=l.config,_=void 0===d?{}:d,g=l.env,v=void 0===g?{}:g,p=e.logger.scope("store").scope(u),[4,f({collector:e,logger:p,id:u,config:_,env:v})]);case 3:y=O.sent(),b=y.get,h=y.set,w=y.delete,y.get=m(b,"StoreGet",e.hooks,e.logger),y.set=m(h,"StoreSet",e.hooks,e.logger),y.delete=m(w,"StoreDelete",e.hooks,e.logger),t[u]=y,O.label=4;case 4:return r=!0,[3,2];case 5:return[3,8];case 6:return j=O.sent(),o=!0,a=j,[3,8];case 7:try{r||null==s.return||s.return()}finally{if(o)throw a}return[7];case 8:return[2,t]}})}).apply(this,arguments)}(l,f)];case 1:return l.stores=g.sent(),function(e,n,t){var r=new Map,o=!0,a=!1,s=void 0;try{for(var i,c=Object.entries(e)[Symbol.iterator]();!(o=(i=c.next()).done);o=!0){var u=_sliced_to_array(i.value,2),l=u[0],f=u[1];n[l]&&r.set(f,n[l])}}catch(e){a=!0,s=e}finally{try{o||null==c.return||c.return()}finally{if(a)throw s}}if(0!==r.size)for(var d=!0,_=!1,g=void 0,v=0,p=[t.transformers,t.destinations,t.sources];v<p.length;v++){var y=p[v];if(y)try{for(var b,h=Object.values(y)[Symbol.iterator]();!(d=(b=h.next()).done);d=!0){m(b.value.env)}}catch(e){_=!0,g=e}finally{try{d||null==h.return||h.return()}finally{if(_)throw g}}}function m(e){if(e){var n=!0,t=!1,o=void 0;try{for(var a,s=Object.entries(e)[Symbol.iterator]();!(n=(a=s.next()).done);n=!0){var i=_sliced_to_array(a.value,2),c=i[0],u=i[1];if("object"==(void 0===u?"undefined":_type_of(u))&&null!==u){var l=r.get(u);l&&(e[c]=l)}}}catch(e){t=!0,o=e}finally{try{n||null==s.return||s.return()}finally{if(t)throw o}}}}}(f,l.stores,t),l.stores.__cache||(d=new Map,l.stores.__cache={type:"memory",config:{},get:function(e){var n=d.get(e);if(n){if(!(n.expires&&Date.now()>n.expires))return n.value;d.delete(e)}},set:function(e,n,t){d.set(e,{value:n,expires:t?Date.now()+t:void 0})},delete:function(e){d.delete(e)}}),[4,J(l,t.destinations||{})];case 2:return l.destinations=g.sent(),[4,function(n){return _async_to_generator(function(n){var t,r,o,a,s,i,c,u,l,f,d,_,g,v,p,y,b,h,m,w,j,k,O,S,x=arguments;return _ts_generator(this,function(C){switch(C.label){case 0:t=x.length>1&&void 0!==x[1]?x[1]:{},r={},o=!0,a=!1,s=void 0,C.label=1;case 1:C.trys.push([1,6,7,8]),i=Object.entries(t)[Symbol.iterator](),C.label=2;case 2:return(o=(c=i.next()).done)?[3,5]:(u=_sliced_to_array(c.value,2),l=u[0],f=u[1],d=f.code,_=f.env,g=void 0===_?{}:_,v=P(f,"before"),p=v.config,y=P(_object_spread_props(_object_spread({},f),{config:p}),"next"),b=y.config,h=Object.keys(g).length>0?_object_spread_props(_object_spread({},b),{env:g}):b,m=f.cache,w=m?_object_spread_props(_object_spread({},h),{cache:m}):h,j=n.logger.scope("transformer").scope(l),k={collector:n,logger:j,id:l,ingest:e(l),config:w,env:g},[4,d(k)]);case 3:O=C.sent(),r[l]=O,C.label=4;case 4:return o=!0,[3,2];case 5:return[3,8];case 6:return S=C.sent(),a=!0,s=S,[3,8];case 7:try{o||null==i.return||i.return()}finally{if(a)throw s}return[7];case 8:return[2,r]}})}).apply(this,arguments)}(l,t.transformers||{})];case 3:return[2,(l.transformers=g.sent(),l)]}})})()},ee=function(e){return _async_to_generator(function(){var n,t,r,o,a,s,i,c,u,l,f;return _ts_generator(this,function(d){switch(d.label){case 0:return[4,Z(e=e||{})];case 1:return n=d.sent(),r=n,t={type:"elb",config:{},push:function(e,n,t,o,a,s){return _async_to_generator(function(){var i,c;return _ts_generator(this,function(u){if("string"==typeof e&&e.startsWith("walker "))return i=e.replace("walker ",""),[2,r.command(i,n,t)];if("string"==typeof e)c={name:e},n&&"object"==(void 0===n?"undefined":_type_of(n))&&!Array.isArray(n)&&(c.data=n);else{if(!e||"object"!=(void 0===e?"undefined":_type_of(e)))return[2,K({ok:!1})];c=e,n&&"object"==(void 0===n?"undefined":_type_of(n))&&!Array.isArray(n)&&(c.data=_object_spread({},c.data||{},n))}return[2,(o&&"object"==(void 0===o?"undefined":_type_of(o))&&(c.context=o),a&&Array.isArray(a)&&(c.nested=a),s&&"object"==(void 0===s?"undefined":_type_of(s))&&(c.custom=s),r.push(c))]})})()}},n.sources.elb=t,[4,R(n,e.sources||{})];case 2:return o=d.sent(),Object.assign(n.sources,o),a=e.consent,s=e.user,i=e.globals,c=e.custom,a?[4,n.command("consent",a)]:[3,4];case 3:d.sent(),d.label=4;case 4:return s?[4,n.command("user",s)]:[3,6];case 5:d.sent(),d.label=6;case 6:return i&&Object.assign(n.globals,i),c&&Object.assign(n.custom,c),n.config.run?[4,n.command("run")]:[3,8];case 7:d.sent(),d.label=8;case 8:return u=t.push,l=Object.values(n.sources).filter(function(e){return"elb"!==e.type}),[2,((f=l.find(function(e){return e.config.primary}))?u=f.push:l.length>0&&(u=l[0].push),{collector:n,elb:u})]}})})()},ne=Object.defineProperty,te=Object.getOwnPropertyDescriptor,re=Object.getOwnPropertyNames,oe=Object.prototype.hasOwnProperty,ae=function(e,n){for(var t in n)ne(e,t,{get:n[t],enumerable:!0})},se={};ae(se,{DEFAULT_CATEGORY_MAP:function(){return Ye},SourceCookieFirst:function(){return ie},analyticsOnlyConsent:function(){return de},analyticsOnlyMapped:function(){return ye},createMockCookieFirstAPI:function(){return je},createMockElbFn:function(){return me},createMockWindow:function(){return ke},createTrigger:function(){return Je},default:function(){return Qe},fullConsent:function(){return ce},fullConsentMapped:function(){return ge},marketingOnlyConsent:function(){return _e},marketingOnlyMapped:function(){return be},minimalConsent:function(){return le},minimalConsentMapped:function(){return pe},mockEnv:function(){return Oe},noConsent:function(){return fe},noopLogger:function(){return we},partialConsent:function(){return ue},partialConsentMapped:function(){return ve},sourceCookieFirst:function(){return $e},step:function(){return Se},trigger:function(){return Ve}});var ie={},ce={necessary:!0,functional:!0,performance:!0,advertising:!0},ue={necessary:!0,functional:!0,performance:!1,advertising:!1},le={necessary:!0,functional:!1,performance:!1,advertising:!1},fe=null,de={necessary:!0,functional:!1,performance:!0,advertising:!1},_e={necessary:!0,functional:!1,performance:!1,advertising:!0},ge={functional:!0,analytics:!0,marketing:!0},ve={functional:!0,analytics:!1,marketing:!1},pe={functional:!0,analytics:!1,marketing:!1},ye={functional:!0,analytics:!0,marketing:!1},be={functional:!0,analytics:!1,marketing:!0},he=function(){},me=function(){return function(){return Promise.resolve({ok:!0})}},we={error:he,warn:he,info:he,debug:he,throw:function(e){throw"string"==typeof e?new Error(e):e},json:he,scope:function(){return we}},je=function(){return{consent:arguments.length>0&&void 0!==arguments[0]?arguments[0]:null}},ke=function(){return{CookieFirst:je(arguments.length>0&&void 0!==arguments[0]?arguments[0]:null),addEventListener:he,removeEventListener:he}},Oe={get push(){return me()},get command(){return me()},get elb(){return me()},get window(){return ke()},logger:we},Se={};ae(Se,{categoryMapOverride:function(){return Ae},cfInitDetection:function(){return Pe},fullConsent:function(){return xe},partialConsent:function(){return Ce}});var xe={title:"Full consent",description:"CookieFirst reports all categories granted and the source forwards a walker consent command with all groups true.",trigger:{type:"consent"},in:{necessary:!0,functional:!0,performance:!0,advertising:!0},out:[["elb","walker consent",{functional:!0,analytics:!0,marketing:!0}]]},Ce={title:"Partial consent",description:"A partial CookieFirst grant maps analytics and marketing to false in the emitted walker consent command.",trigger:{type:"consent"},in:{necessary:!0,functional:!0,performance:!1,advertising:!1},out:[["elb","walker consent",{functional:!0,analytics:!1,marketing:!1}]]},Ae={title:"Category map override",description:"Custom categoryMap remaps performance to statistics instead of analytics",trigger:{type:"consent"},in:{necessary:!0,functional:!1,performance:!0,advertising:!1},mapping:{settings:{categoryMap:{performance:"statistics"}}},out:[["elb","walker consent",{functional:!0,statistics:!0,marketing:!1}]]},Pe={title:"cf_init detection",description:"CMP detected via cf_init CustomEvent (primary detection path)",trigger:{type:"consent"},in:{necessary:!0,functional:!1,performance:!1,advertising:!0},out:[["elb","walker consent",{functional:!0,analytics:!1,marketing:!0}]]},Ee=Object.defineProperty;!function(e,n){for(var t in n)Ee(e,t,{get:n[t],enumerable:!0})}({},{Level:function(){return De}});var qe,De=((qe=De||{})[qe.ERROR=0]="ERROR",qe[qe.WARN=1]="WARN",qe[qe.INFO=2]="INFO",qe[qe.DEBUG=3]="DEBUG",qe),Me={merge:!0,shallow:!0,extend:!0};function Ie(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new WeakMap;if("object"!=(void 0===e?"undefined":_type_of(e))||null===e)return e;if(n.has(e))return n.get(e);var t=Object.prototype.toString.call(e);if("[object Object]"===t){var r={};for(var o in n.set(e,r),e)Object.prototype.hasOwnProperty.call(e,o)&&(r[o]=Ie(e[o],n));return r}if("[object Array]"===t){var a=[];return n.set(e,a),e.forEach(function(e){a.push(Ie(e,n))}),a}if("[object Date]"===t)return new Date(e.getTime());if("[object RegExp]"===t){var s=e;return new RegExp(s.source,s.flags)}return e}function Re(e){for(var n=arguments.length>2?arguments[2]:void 0,o=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:"").split("."),a=e,s=0;s<o.length;s++){var i=o[s];if("*"===i&&t(a)){var c=o.slice(s+1).join("."),u=[],l=!0,f=!1,d=void 0;try{for(var _,g=a[Symbol.iterator]();!(l=(_=g.next()).done);l=!0){var v=Re(_.value,c,n);u.push(v)}}catch(e){f=!0,d=e}finally{try{l||null==g.return||g.return()}finally{if(f)throw d}}return u}if(void 0===(a=_instanceof(a,Object)?a[i]:void 0))break}return r(a)?a:n}var Te={data:function(e){return e.data},globals:function(e){return e.globals},context:function(e){return e.context},user:function(e){return e.user},source:function(e){return e.source},version:function(e){return e.version},event:function(e){return{entity:e.entity,action:e.action,id:e.id,timestamp:e.timestamp,name:e.name,trigger:e.trigger,group:e.group,count:e.count,timing:e.timing}}},Fe=function(e,n,t,r){var o="".concat(De[e]).concat(r.length>0?" [".concat(r.join(":"),"]"):""),a=Object.keys(t).length>0,s=0===e?console.error:1===e?console.warn:console.log;a?s(o,n,t):s(o,n)};function Ne(e){var n=e.level,t=e.handler,r=e.jsonHandler,o=e.scope,a=function(e,r,a){if(e<=n){var s=d(r,a);t?t(e,s.message,s.context,o,Fe):Fe(e,s.message,s.context,o)}};return{error:function(e,n){return a(0,e,n)},warn:function(e,n){return a(1,e,n)},info:function(e,n){return a(2,e,n)},debug:function(e,n){return a(3,e,n)},throw:function(e,n){var r=d(e,n);throw t?t(0,r.message,r.context,o,Fe):Fe(0,r.message,r.context,o),new Error(r.message)},json:function(e){r?r(e):console.log(JSON.stringify(e,null,2))},scope:function(e){return Ne({level:n,handler:t,jsonHandler:r,scope:_to_consumable_array(o).concat([e])})}}}function He(e){return function(e){return"boolean"==typeof e}(e)||s(e)||function(e){return"number"==typeof e&&!Number.isNaN(e)}(e)||!r(e)||t(e)&&e.every(He)||a(e)&&Object.values(e).every(He)}function Ge(e,n){return _async_to_generator(function(e,n){var o,a,i,u=arguments;return _ts_generator(this,function(l){return a=(o=u.length>2&&void 0!==u[2]?u[2]:{}).collector,i=o.consent,[2,(t(n)?n:[n]).reduce(function(n,u){return _async_to_generator(function(){var l,f,d,_,v,y,h,m,w,j,k,O,S,x,C,A,P,E,q,D,M;return _ts_generator(this,function(I){switch(I.label){case 0:return[4,n];case 1:return(l=I.sent())?[2,l]:(f=s(u)?{key:u}:u,Object.keys(f).length?(d=f.condition,_=f.consent,v=f.fn,y=f.key,h=f.loop,m=f.map,w=f.set,j=f.validate,k=f.value,(O=d)?[4,p(d)(e,u,a)]:[3,3]):[2]);case 2:O=!I.sent(),I.label=3;case 3:return O?[2]:_&&!c(_,i)?[2,k]:(S=r(k)?k:e,v?[4,p(v)(e,u,o)]:[3,5]);case 4:S=I.sent(),I.label=5;case 5:return y&&(S=Re(e,y,k)),h?(x=_sliced_to_array(h,2),C=x[0],A=x[1],"this"!==C?[3,6]:(E=[e],[3,8])):[3,11];case 6:return[4,b(e,C,o)];case 7:E=I.sent(),I.label=8;case 8:return t(P=E)?[4,Promise.all(P.map(function(e){return b(e,A,o)}))]:[3,10];case 9:S=I.sent().filter(r),I.label=10;case 10:return[3,17];case 11:return m?[4,Object.entries(m).reduce(function(n,t){var a=_sliced_to_array(t,2),s=a[0],i=a[1];return _async_to_generator(function(){var t,a;return _ts_generator(this,function(c){switch(c.label){case 0:return[4,n];case 1:return t=c.sent(),[4,b(e,i,o)];case 2:return a=c.sent(),[2,(r(a)&&(t[s]=a),t)]}})})()},Promise.resolve({}))]:[3,13];case 12:return S=I.sent(),[3,16];case 13:return(q=w)?[4,Promise.all(w.map(function(n){return Ge(e,n,o)}))]:[3,15];case 14:q=S=I.sent(),I.label=15;case 15:I.label=16;case 16:I.label=17;case 17:return(D=j)?[4,p(j)(S)]:[3,19];case 18:D=!I.sent(),I.label=19;case 19:return D&&(S=void 0),M=g(S),[2,r(M)?M:g(k)]}})})()},Promise.resolve(void 0))]})}).apply(this,arguments)}function Le(e){if("*"===e)return function(){return!0};if("and"in e){var n=e.and.map(Le);return function(e){return n.every(function(n){return n(e)})}}if("or"in e){var t=e.or.map(Le);return function(e){return t.some(function(n){return n(e)})}}return function(e){var n=e.key,t=e.operator,r=e.value,o=e.not,a=function(e,n){switch(e){case"eq":return function(e){return String(null!=e?e:"")===n};case"contains":return function(e){return String(null!=e?e:"").includes(n)};case"prefix":return function(e){return String(null!=e?e:"").startsWith(n)};case"suffix":return function(e){return String(null!=e?e:"").endsWith(n)};case"regex":var t=new RegExp(n);return function(e){return t.test(String(null!=e?e:""))};case"gt":var r=Number(n);return function(e){return Number(e)>r};case"lt":var o=Number(n);return function(e){return Number(e)<o};case"exists":return function(e){return null!=e}}}(t,r);return function(e){var t=Re(e,n),r=a(t);return o?!r:r}}(e)}function Ue(e){if(null!=e){if("string"==typeof e)return{type:"static",value:e};if(Array.isArray(e)){if(0===e.length)return;return w(e)?{type:"routes",routes:e.map(function(e){return{match:Le(e.match),next:Ue(e.next)}})}:{type:"chain",value:e}}}}function We(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(e){if("static"===e.type)return e.value;if("chain"===e.type)return e.value;var t=!0,r=!1,o=void 0;try{for(var a,s=e.routes[Symbol.iterator]();!(t=(a=s.next()).done);t=!0){var i=a.value;if(i.match(n))return We(i.next,n)}}catch(e){r=!0,o=e}finally{try{t||null==s.return||s.return()}finally{if(r)throw o}}}}var Be={Commands:{Action:"action",Actions:"actions",Config:"config",Consent:"consent",Context:"context",Custom:"custom",Destination:"destination",Elb:"elb",Globals:"globals",Hook:"hook",Init:"init",Link:"link",On:"on",Prefix:"data-elb",Ready:"ready",Run:"run",Session:"session",Shutdown:"shutdown",User:"user",Walker:"walker"},Utils:{Storage:{Cookie:"cookie",Local:"local",Session:"session"}}};function Ke(n,t,r,o,a,s,i){return _async_to_generator(function(){var c,u,l,f,d,_,g,v,y,b;return _ts_generator(this,function(h){switch(h.label){case 0:i&&(null==a?void 0:a._meta)&&(a._meta.chainPath=i),c=o,u=s,l=!0,f=!1,d=void 0,h.label=1;case 1:h.trys.push([1,6,7,8]),_=function(){var o,s,l,f,d,_,g,y,b,h,m,x,P,M,I,R,T,F,N,H,G,L,U,W,B,K,z,J,V,Y,$,Q,X,Z,ee,ne,te,re,oe,ae,se;return _ts_generator(this,function(ie){switch(ie.label){case 0:return o=v.value,(g=t[o])?a&&a._meta&&a._meta.path.length>256?[2,{v:(n.logger.error("Max path length exceeded at ".concat(o)),{event:null,respond:u})}]:(a&&a._meta&&(a._meta.hops++,a._meta.path.push(o)),[4,p(q)(n,g,o)]):(n.logger.warn("Transformer not found: ".concat(o)),[2,"continue"]);case 1:if(!ie.sent())return[2,{v:(n.logger.error("Transformer init failed: ".concat(o)),{event:null,respond:u})}];if(i&&void 0!==(null===(l=g.config)||void 0===l||null===(s=l.chainMocks)||void 0===s?void 0:s[i]))return y=g.config.chainMocks[i],n.logger.scope("transformer:".concat(g.type||"unknown")).debug("chainMock",{chain:i}),c=y,[2,"continue"];if(void 0!==(null===(f=g.config)||void 0===f?void 0:f.mock))return n.logger.scope("transformer:".concat(g.type||"unknown")).debug("mock"),c=g.config.mock,[2,"continue"];if(null===(d=g.config)||void 0===d?void 0:d.disabled)return[2,"continue"];if(b=null===(_=g.config)||void 0===_?void 0:_.cache,h=b?k(b):void 0,m=h?C(h,n):void 0,x=void 0,h&&m){if(P=j(a,c),"HIT"===(null==(M=O(h,m,P,"t:".concat(o)))?void 0:M.status)&&M.value)return c=M.value,h.full?[2,{v:{event:c,respond:u}}]:[2,"continue"];"MISS"===(null==M?void 0:M.status)&&(x={key:M.key,ttl:M.rule.ttl})}return(I=g.config.before)&&(R=E("string"==typeof I||Array.isArray(I)&&!w(I)?I:We(Ue(I),j(a,c))||void 0,A(t))).length>0?[4,Ke(n,t,R,c,a,u,i)]:[3,3];case 2:if(null===(F=ie.sent()).event)return[2,{v:{event:null,respond:null!==(T=F.respond)&&void 0!==T?T:u}}];F.respond&&(u=F.respond),c=Array.isArray(F.event)?F.event[0]:F.event,ie.label=3;case 3:return[4,p(D,function(e){return n.logger.scope("transformer:".concat(g.type||"unknown")).error("Push failed",{error:e}),!1})(n,g,o,c,a,u)];case 4:return!1===(N=ie.sent())?[2,{v:{event:null,respond:u}}]:Array.isArray(N)?(H=r.slice(r.indexOf(o)+1),[4,Promise.all(N.map(function(r){return _async_to_generator(function(){var o,s,l,f,d;return _ts_generator(this,function(_){return o=r.event||c,s=a?_object_spread_props(_object_spread({},a),{_meta:_object_spread_props(_object_spread({},a._meta),{path:_to_consumable_array(a._meta.path)})}):e("unknown"),r.next?(l=r.next,w(r.next)&&(f=Ue(r.next),l=We(f,j(s,o))),l&&(d=E(l,A(t))).length>0?[2,Ke(n,t,d,o,s,u,i)]:[2,{event:o,respond:u}]):[2,H.length>0?Ke(n,t,H,o,s,u,i):{event:o,respond:u}]})})()}))]):[3,6];case 5:G=ie.sent(),L=u,U=[],W=!0,B=!1,K=void 0;try{for(z=G.flat()[Symbol.iterator]();!(W=(J=z.next()).done);W=!0)if(null!==(V=J.value))if(V&&"object"==(void 0===V?"undefined":_type_of(V))&&"event"in V){if(($=V).respond&&(L=$.respond),null===$.event)continue;Array.isArray($.event)?(Y=U).push.apply(Y,_to_consumable_array($.event)):U.push($.event)}else U.push(V)}catch(e){B=!0,K=e}finally{try{W||null==z.return||z.return()}finally{if(B)throw K}}return[2,{v:0===U.length?{event:null,respond:L}:1===U.length?{event:U[0],respond:L}:{event:U,respond:L}}];case 6:if(N&&"object"==(void 0===N?"undefined":_type_of(N))){if(Q=N.event,X=N.respond,Z=N.next,X&&(u=X),Z)return ee=Z,!w(Z)||(ne=Ue(Z),ee=We(ne,j(a,c)))?[2,{v:(te=E(ee,A(t))).length>0?Ke(n,t,te,Q||c,a,u,i):(n.logger.warn("Branch target not found: ".concat(JSON.stringify(Z))),{event:null,respond:u})}]:(Q&&(c=Q),[2,"continue"]);Q&&(c=Q)}return x&&m&&S(m,x.key,c,x.ttl),(!N||"object"==(void 0===N?"undefined":_type_of(N))&&!N.next)&&g.config.next&&w(g.config.next)?(re=g.config.next,oe=Ue(re),(ae=We(oe,j(a,c)))&&(se=E(ae,A(t))).length>0?[2,{v:Ke(n,t,se,c,a,u,i)}]:[2,{v:{event:c,respond:u}}]):[2]}})},g=r[Symbol.iterator](),h.label=2;case 2:return(l=(v=g.next()).done)?[3,5]:[5,_ts_values(_())];case 3:if("object"===_type_of(y=h.sent()))return[2,y.v];h.label=4;case 4:return l=!0,[3,2];case 5:return[3,8];case 6:return b=h.sent(),f=!0,d=b,[3,8];case 7:try{l||null==g.return||g.return()}finally{if(f)throw d}return[7];case 8:return[2,{event:c,respond:u}]}})})()}var ze,Je=function(e){return _async_to_generator(function(){var n,t;return _ts_generator(this,function(r){return t=function(){return function(t){return _async_to_generator(function(){var r,o;return _ts_generator(this,function(a){switch(a.label){case 0:return window.CookieFirst={consent:t},n?[3,2]:[4,ee(_object_spread_props(_object_spread({},e),{run:null===(r=e.run)||void 0===r||r}))];case 1:o=a.sent(),n={collector:o.collector,elb:o.elb},a.label=2;case 2:return window.dispatchEvent(new Event("cf_init")),[2]}})})()}},[2,{get flow(){return n},trigger:t}]})})()},Ve=function(e,n){e&&"object"===(void 0===e?"undefined":_type_of(e))&&(n.window.CookieFirst={consent:e})},Ye={necessary:"functional",functional:"functional",performance:"analytics",advertising:"marketing"},$e=function(e){return _async_to_generator(function(){var n,t,r,o,a,s,i,c,u,l,f,d,_,g,v,p,y,b;return _ts_generator(this,function(h){return i=e.config,c=e.env,u=c.elb,l=null!==(n=c.window)&&void 0!==n?n:void 0!==globalThis.window?globalThis.window:void 0,f={categoryMap:_object_spread({},Ye,null==i||null===(o=i.settings)||void 0===o?void 0:o.categoryMap),explicitOnly:null===(t=null==i||null===(a=i.settings)||void 0===a?void 0:a.explicitOnly)||void 0===t||t,globalName:null!==(r=null==i||null===(s=i.settings)||void 0===s?void 0:s.globalName)&&void 0!==r?r:"CookieFirst"},d={settings:f},l&&(p=function(e){if((!f.explicitOnly||e)&&e){var n={};Object.entries(e).forEach(function(e){var t,r,o=_sliced_to_array(e,2),a=o[0],s=o[1];if("boolean"==typeof s){var i=null!==(t=null===(r=f.categoryMap)||void 0===r?void 0:r[a])&&void 0!==t?t:a;n[i]=n[i]||s}}),Object.keys(n).length>0&&u("walker consent",n)}},y=null!==(v=f.globalName)&&void 0!==v?v:"CookieFirst",(null==(b=l[y])?void 0:b.consent)&&p(b.consent),_=function(){var e,n=l[y];p(null!==(e=null==n?void 0:n.consent)&&void 0!==e?e:null)},l.addEventListener("cf_init",_),g=function(e){p(e.detail)},l.addEventListener("cf_consent",g)),[2,{type:"cookiefirst",config:d,push:u,destroy:function(e){return _async_to_generator(function(){return _ts_generator(this,function(e){return l&&_&&l.removeEventListener("cf_init",_),l&&g&&l.removeEventListener("cf_consent",g),[2]})})()}}]})})()},Qe=$e;return ze=se,function(e,n,t,r){if(n&&"object"===(void 0===n?"undefined":_type_of(n))||"function"==typeof n){var o=!0,a=!1,s=void 0;try{for(var i,c=function(){var o=i.value;oe.call(e,o)||o===t||ne(e,o,{get:function(){return n[o]},enumerable:!(r=te(n,o))||r.enumerable})},u=re(n)[Symbol.iterator]();!(o=(i=u.next()).done);o=!0)c()}catch(e){a=!0,s=e}finally{try{o||null==u.return||u.return()}finally{if(a)throw s}}}return e}(ne({},"__esModule",{value:!0}),ze)}();
1
+ "use strict";function _array_like_to_array(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}function _array_with_holes(e){if(Array.isArray(e))return e}function _array_without_holes(e){if(Array.isArray(e))return _array_like_to_array(e)}function asyncGeneratorStep(e,n,t,r,o,a,s){try{var i=e[a](s),c=i.value}catch(e){return void t(e)}i.done?n(c):Promise.resolve(c).then(r,o)}function _async_to_generator(e){return function(){var n=this,t=arguments;return new Promise(function(r,o){var a=e.apply(n,t);function s(e){asyncGeneratorStep(a,r,o,s,i,"next",e)}function i(e){asyncGeneratorStep(a,r,o,s,i,"throw",e)}s(void 0)})}}function _define_property(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function _instanceof(e,n){return null!=n&&"undefined"!=typeof Symbol&&n[Symbol.hasInstance]?!!n[Symbol.hasInstance](e):e instanceof n}function _iterable_to_array(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function _iterable_to_array_limit(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var r,o,a=[],s=!0,i=!1;try{for(t=t.call(e);!(s=(r=t.next()).done)&&(a.push(r.value),!n||a.length!==n);s=!0);}catch(e){i=!0,o=e}finally{try{s||null==t.return||t.return()}finally{if(i)throw o}}return a}}function _non_iterable_rest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _non_iterable_spread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _object_spread(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{},r=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(t).filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.forEach(function(n){_define_property(e,n,t[n])})}return e}function ownKeys(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter(function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable})),t.push.apply(t,r)}return t}function _object_spread_props(e,n){return n=null!=n?n:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ownKeys(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}),e}function _sliced_to_array(e,n){return _array_with_holes(e)||_iterable_to_array_limit(e,n)||_unsupported_iterable_to_array(e,n)||_non_iterable_rest()}function _to_consumable_array(e){return _array_without_holes(e)||_iterable_to_array(e)||_unsupported_iterable_to_array(e)||_non_iterable_spread()}function _type_of(e){return e&&"undefined"!=typeof Symbol&&e.constructor===Symbol?"symbol":typeof e}function _unsupported_iterable_to_array(e,n){if(e){if("string"==typeof e)return _array_like_to_array(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(t):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_array_like_to_array(e,n):void 0}}function _ts_generator(e,n){var t,r,o,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},s=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),i=Object.defineProperty;return i(s,"next",{value:c(0)}),i(s,"throw",{value:c(1)}),i(s,"return",{value:c(2)}),"function"==typeof Symbol&&i(s,Symbol.iterator,{value:function(){return this}}),s;function c(i){return function(c){return function(i){if(t)throw new TypeError("Generator is already executing.");for(;s&&(s=0,i[0]&&(a=0)),a;)try{if(t=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=n.call(e,a)}catch(e){i=[6,e],r=0}finally{t=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,c])}}}function _ts_values(e){var n="function"==typeof Symbol&&Symbol.iterator,t=n&&e[n],r=0;if(t)return t.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(n?"Object is not iterable.":"Symbol.iterator is not defined.")}var SourceCookieFirst=function(){var e=function(e){return{_meta:{hops:0,path:[e]}}},n=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};t=_object_spread({},De,t);var r=Object.entries(n).reduce(function(n,r){var o=_sliced_to_array(r,2),a=o[0],s=o[1],i=e[a];return t.merge&&Array.isArray(i)&&Array.isArray(s)?n[a]=s.reduce(function(e,n){return e.includes(n)?e:_to_consumable_array(e).concat([n])},_to_consumable_array(i)):(t.extend||a in e)&&(n[a]=s),n},{});return t.shallow?_object_spread({},e,r):(Object.assign(e,r),e)},t=function(e){return Array.isArray(e)},r=function(e){return void 0!==e},o=function(e){return"function"==typeof e},a=function(e){return"object"==(void 0===e?"undefined":_type_of(e))&&null!==e&&!t(e)&&"[object Object]"===Object.prototype.toString.call(e)},s=function(e){return"string"==typeof e},i=function(e,n,t){if(!a(e))return e;for(var r=Ie(e),o=n.split("."),s=r,i=0;i<o.length;i++){var c=o[i];i===o.length-1?s[c]=t:(c in s&&"object"==_type_of(s[c])&&null!==s[c]||(s[c]={}),s=s[c])}return r},c=function(e){var n=_object_spread({},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}),t={},r=!e||0===Object.keys(e).length;return Object.keys(n).forEach(function(o){n[o]&&(t[o]=!0,e&&e[o]&&(r=!0))}),!!r&&t},u=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:6,n=arguments.length>1?arguments[1]:void 0;if(n){for(var t=n.length,r="",o=0;o<e;o++)r+=n[Math.random()*t|0];return r}for(var a="";a.length<e;)a+=(36*Math.random()|0).toString(36);return a},l=function(e){var n,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1e3,r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=null,a=!1;return function(){for(var s=arguments.length,i=new Array(s),c=0;c<s;c++)i[c]=arguments[c];return new Promise(function(s){var c=r&&!a;o&&clearTimeout(o),o=setTimeout(function(){o=null,r&&!a||(n=e.apply(void 0,_to_consumable_array(i)),s(n))},t),c&&(a=!0,n=e.apply(void 0,_to_consumable_array(i)),s(n))})}},f=function(e){return{message:e.message,name:e.name,stack:e.stack,cause:e.cause}},d=function(e,n){var t,r={};return _instanceof(e,Error)?(t=e.message,r.error=f(e)):t=e,void 0!==n&&(_instanceof(n,Error)?r.error=f(n):"object"==(void 0===n?"undefined":_type_of(n))&&null!==n?"error"in(r=_object_spread({},r,n))&&_instanceof(r.error,Error)&&(r.error=f(r.error)):r.value=n),{message:t,context:r}},_=function(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return Ne({level:void 0!==n.level?(e=n.level,"string"==typeof e?qe[e]:e):0,handler:n.handler,jsonHandler:n.jsonHandler,scope:[]})},v=function(e){return He(e)?e:void 0},g=function(e,n,t){return function(){for(var r=arguments.length,o=new Array(r),a=0;a<r;a++)o[a]=arguments[a];try{return e.apply(void 0,_to_consumable_array(o))}catch(e){if(!n)return;return n(e)}finally{null==t||t()}}},p=function(e,n,t){return function(){for(var r=arguments.length,o=new Array(r),a=0;a<r;a++)o[a]=arguments[a];return _async_to_generator(function(){var r;return _ts_generator(this,function(a){switch(a.label){case 0:return a.trys.push([0,2,4,6]),[4,e.apply(void 0,_to_consumable_array(o))];case 1:case 3:return[2,a.sent()];case 2:return r=a.sent(),n?[4,n(r)]:[2];case 4:return[4,null==t?void 0:t()];case 5:return a.sent(),[7];case 6:return[2]}})})()}},y=function(e,n){return _async_to_generator(function(){var r,o,a,s,i,c,u,l,f,d;return _ts_generator(this,function(_){return o=_sliced_to_array((e.name||"").split(" "),2),a=o[0],s=o[1],n&&a&&s?(c="",l=s,f=function(n){if(n)return(n=t(n)?n:[n]).find(function(n){return!n.condition||n.condition(e)})},n[u=a]||(u="*"),[2,((d=n[u])&&(d[l]||(l="*"),i=f(d[l])),i||(u="*",l="*",i=f(null===(r=n[u])||void 0===r?void 0:r[l])),i&&(c="".concat(u," ").concat(l)),{eventMapping:i,mappingKey:c})]):[2,{}]})})()},b=function(e){return _async_to_generator(function(e){var n,o,s,i,c,u,l,f,d,_,v,g,y,b=arguments;return _ts_generator(this,function(h){switch(h.label){case 0:if(n=b.length>1&&void 0!==b[1]?b[1]:{},o=b.length>2&&void 0!==b[2]?b[2]:{},!r(e))return[2];i=a(e)&&e.consent||o.consent||(null===(s=o.collector)||void 0===s?void 0:s.consent),c=t(n)?n:[n],u=!0,l=!1,f=void 0,h.label=1;case 1:h.trys.push([1,6,7,8]),d=c[Symbol.iterator](),h.label=2;case 2:return(u=(_=d.next()).done)?[3,5]:(v=_.value,[4,p(Ge)(e,v,_object_spread_props(_object_spread({},o),{consent:i}))]);case 3:if(g=h.sent(),r(g))return[2,g];h.label=4;case 4:return u=!0,[3,2];case 5:return[3,8];case 6:return y=h.sent(),l=!0,f=y,[3,8];case 7:try{u||null==d.return||d.return()}finally{if(l)throw f}return[7];case 8:return[2]}})}).apply(this,arguments)},h=function(e,t,r){return _async_to_generator(function(){var o,s,c,u,l,f,d,_,v,g,p;return _ts_generator(this,function(h){switch(h.label){case 0:return t.policy?[4,Promise.all(Object.entries(t.policy).map(function(n){var t=_sliced_to_array(n,2),o=t[0],a=t[1];return _async_to_generator(function(){var n;return _ts_generator(this,function(t){switch(t.label){case 0:return[4,b(e,a,{collector:r})];case 1:return n=t.sent(),e=i(e,o,n),[2]}})})()}))]:[3,2];case 1:h.sent(),h.label=2;case 2:return[4,y(e,t.mapping)];case 3:return s=h.sent(),c=s.eventMapping,u=s.mappingKey,(null==c?void 0:c.policy)?[4,Promise.all(Object.entries(c.policy).map(function(n){var t=_sliced_to_array(n,2),o=t[0],a=t[1];return _async_to_generator(function(){var n;return _ts_generator(this,function(t){switch(t.label){case 0:return[4,b(e,a,{collector:r})];case 1:return n=t.sent(),e=i(e,o,n),[2]}})})()}))]:[3,5];case 4:h.sent(),h.label=5;case 5:return(f=t.data)?[4,b(e,t.data,{collector:r})]:[3,7];case 6:f=h.sent(),h.label=7;case 7:return l=f,d=Boolean(null==c?void 0:c.silent),c?c.ignore?[2,{event:e,data:l,mapping:c,mappingKey:u,ignore:!0,silent:d}]:(c.name&&(e.name=c.name),c.data?(v=c.data)?[4,b(e,c.data,{collector:r})]:[3,9]:[3,10]):[3,10];case 8:v=h.sent(),h.label=9;case 9:_=v,l=a(l)&&a(_)?n(l,_):_,h.label=10;case 10:return(g=null!==(o=null==c?void 0:c.include)&&void 0!==o?o:t.include)&&g.length>0&&(p=function(e,n){var t={},r=n.includes("all")?Object.keys(Te):n,o=!0,s=!1,i=void 0;try{for(var c,u=r[Symbol.iterator]();!(o=(c=u.next()).done);o=!0){var l=c.value,f=Te[l];if(f){var d=f(e),_=!0,v=!1,g=void 0;if(a(d))try{for(var p,y=Object.entries(d)[Symbol.iterator]();!(_=(p=y.next()).done);_=!0){var b=_sliced_to_array(p.value,2),h=b[0],m=b[1];if(void 0!==m){var w="context"===l&&Array.isArray(m)?m[0]:m;t["".concat(l,"_").concat(h)]=w}}}catch(e){v=!0,g=e}finally{try{_||null==y.return||y.return()}finally{if(v)throw g}}}}}catch(e){s=!0,i=e}finally{try{o||null==u.return||u.return()}finally{if(s)throw i}}return t}(e,g),Object.keys(p).length>0&&(l=a(l)?n(p,l):null!=l?l:p)),[2,{event:e,data:l,mapping:c,mappingKey:u,ignore:!1,silent:d}]}})})()},m=function(e,n,t,r){return function(){for(var o=arguments.length,a=new Array(o),s=0;s<o;s++)a[s]=arguments[s];var i,c="pre"+n,u="post"+n,l=t[c],f=t[u],d=function(e,n){r?r.warn(e,{error:n}):console.warn(e,n)};if(l)try{i=l.apply(void 0,[{fn:e}].concat(_to_consumable_array(a)))}catch(n){d("Hook ".concat(String(c)," failed, falling back to original function"),n),i=e.apply(void 0,_to_consumable_array(a))}else i=e.apply(void 0,_to_consumable_array(a));if(f)try{i=f.apply(void 0,[{fn:e,result:i}].concat(_to_consumable_array(a)))}catch(e){d("Hook ".concat(String(u)," failed, keeping original result"),e)}return i}},w=function(e){return Array.isArray(e)&&e.length>0&&"object"==_type_of(e[0])&&null!==e[0]&&"match"in e[0]},j=function(e,n){var t={ingest:null!=e?e:{}};return void 0!==n&&(t.event=n),t},k=function(e){var n;return{full:null!==(n=e.full)&&void 0!==n&&n,storeId:e.store,rules:e.rules.map(function(e){return{match:Le(e.match),key:e.key,ttl:e.ttl,update:e.update}})}},O=function(e,n,t,r){var o=e.rules.find(function(e){return e.match(t)});if(!o)return null;var a=o.key.map(function(e){var n;return String(null!==(n=Re(t,e))&&void 0!==n?n:"")});if(a.every(function(e){return""===e}))return null;var s="".concat(r,":").concat(a.join(":")),i=n.get(s);return void 0!==i?{status:"HIT",key:s,value:i,rule:o}:{status:"MISS",key:s,rule:o}},S=function(e,n,t,r){e.set(n,t,1e3*r)},x=function(e,n,t){return _async_to_generator(function(){var r,o,a,s,c,u,l,f,d,_,v;return _ts_generator(this,function(g){switch(g.label){case 0:if(!n)return[2,e];r=e,o=!0,a=!1,s=void 0,g.label=1;case 1:g.trys.push([1,6,7,8]),c=Object.entries(n)[Symbol.iterator](),g.label=2;case 2:return(o=(u=c.next()).done)?[3,5]:(l=_sliced_to_array(u.value,2),f=l[0],d=l[1],_=[r,f],[4,b(t,d)]);case 3:r=i.apply(void 0,_.concat([g.sent()])),g.label=4;case 4:return o=!0,[3,2];case 5:return[3,8];case 6:return v=g.sent(),a=!0,s=v,[3,8];case 7:try{o||null==c.return||c.return()}finally{if(a)throw s}return[7];case 8:return[2,r]}})})()},C=function(e,n){return e.storeId&&n.stores[e.storeId]?n.stores[e.storeId]:n.stores.__cache},A=function(e){var n={},t=!0,r=!1,o=void 0;try{for(var a,s=Object.entries(e)[Symbol.iterator]();!(t=(a=s.next()).done);t=!0){var i,c=_sliced_to_array(a.value,2),u=c[0],l=null===(i=c[1].config)||void 0===i?void 0:i.next;l&&!w(l)?n[u]={next:l}:n[u]={}}}catch(e){r=!0,o=e}finally{try{t||null==s.return||s.return()}finally{if(r)throw o}}return n},P=function(e,n){var t=e.config||{},r=e[n];return void 0!==r?{config:_object_spread_props(_object_spread({},t),_define_property({},n,r)),chainValue:r}:{config:t,chainValue:void 0}},E=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!e)return[];if(Array.isArray(e))return e;for(var t=[],r=new Set,o=e;o&&n[o]&&!r.has(o);){r.add(o),t.push(o);var a=n[o].next;if(Array.isArray(a)){var s;(s=t).push.apply(s,_to_consumable_array(a));break}o=a}return t},M=function(n,t,r){return _async_to_generator(function(){var o,a,s,i;return _ts_generator(this,function(c){switch(c.label){case 0:return!t.init||t.config.init?[3,2]:(o=t.type||"unknown",a=n.logger.scope("transformer:".concat(o)),s={collector:n,logger:a,id:r,ingest:e(r),config:t.config,env:D(t.config.env)},a.debug("init"),[4,m(t.init,"TransformerInit",n.hooks,n.logger)(s)]);case 1:if(!1===(i=c.sent()))return[2,!1];t.config=_object_spread_props(_object_spread({},i||t.config),{env:(null==i?void 0:i.env)||t.config.env,init:!0}),a.debug("init done"),c.label=2;case 2:return[2,!0]}})})()},q=function(e,n,t,r,o,a){return _async_to_generator(function(){var s,i,c,u;return _ts_generator(this,function(l){switch(l.label){case 0:return s=n.type||"unknown",i=e.logger.scope("transformer:".concat(s)),c={collector:e,logger:i,id:t,ingest:o,config:n.config,env:_object_spread({},D(n.config.env),a?{respond:a}:{})},i.debug("push",{event:r.name}),[4,m(n.push,"TransformerPush",e.hooks,e.logger)(r,c)];case 1:return u=l.sent(),[2,(i.debug("push done"),u)]}})})()},D=function(e){return e&&a(e)?e:{}},I=function(n,t,r){return _async_to_generator(function(){var o,a,s,i,c,u,l,f,d,_,v,g,y,h,m,P,M,q,D,I,R,T,F;return _ts_generator(this,function(N){switch(N.label){case 0:return a=r.code,s=r.config,i=void 0===s?{}:s,c=r.env,u=void 0===c?{}:c,l=r.primary,f=r.next,d=r.before,_=r.cache,g=e(t),y=_?k(_object_spread_props(_object_spread({},_),{full:null===(o=_.full)||void 0===o||o})):void 0,h=Ue(f),m=Array.isArray(f)&&w(f)||!h?void 0:E(We(h),A(n.transformers)),P=Ue(d),M=Array.isArray(d)&&w(d)||!P?void 0:E(We(P),A(n.transformers)),q=n.logger.scope("source").scope(t),D=_object_spread({push:function(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return _async_to_generator(function(){var o,a,s,c,u,l,f,d,_,p,b,w,k,q,D;return _ts_generator(this,function(I){switch(I.label){case 0:return a=e,(s=null!=M?M:P?E(We(P,j(g)),A(n.transformers)):[]).length>0&&n.transformers&&Object.keys(n.transformers).length>0?[4,Ke(n,n.transformers,s,a,g,v,"source.".concat(t,".before"))]:[3,2];case 1:if(null===(c=I.sent()).event)return[2,{ok:!0}];c.respond&&(v=c.respond),a=Array.isArray(c.event)?c.event[0]:c.event,I.label=2;case 2:return y&&(u=C(y,n))?(l=j(g),(f=O(y,u,l,"s:".concat(t)))?"HIT"===f.status&&void 0!==f.value&&y.full?(d=f.value,f.rule.update?[4,x(d,f.rule.update,_object_spread_props(_object_spread({},l),{cache:{status:"HIT"}}))]:[3,4]):[3,5]:[3,6]):[3,6];case 3:d=I.sent(),I.label=4;case 4:return[2,(null==v||v(d),{ok:!0})];case 5:"MISS"===f.status&&y.full&&v&&(_=v,p=f.rule.update,b=_object_spread_props(_object_spread({},l),{cache:{status:"MISS"}}),w=f.key,k=f.rule.ttl,v=function(e){S(u,w,e,k),p?o=_async_to_generator(function(){var n;return _ts_generator(this,function(t){switch(t.label){case 0:return[4,x(e,p,b)];case 1:return n=t.sent(),_(n),[2]}})})():_(e)}),"MISS"!==f.status||y.full||S(u,f.key,!0,f.rule.ttl),I.label=6;case 6:return q=null!=m?m:h?E(We(h,j(g)),A(n.transformers)):[],[4,n.push(a,_object_spread_props(_object_spread({},r),{id:t,ingest:g,respond:v,mapping:i,preChain:q}))];case 7:return D=I.sent(),o?[4,o]:[3,9];case 8:I.sent(),I.label=9;case 9:return[2,D]}})})()},command:n.command,sources:n.sources,elb:n.sources.elb.push,logger:q},u),I={collector:n,logger:q,id:t,config:i,env:D,setIngest:function(r){return _async_to_generator(function(){var o,a;return _ts_generator(this,function(s){switch(s.label){case 0:return i.ingest?[4,b(r,i.ingest,{collector:n})]:[2,void(g=e(t))];case 1:return o=s.sent(),a=e(t),g=_object_spread_props(_object_spread({},a,o),{_meta:a._meta}),[2]}})})()},setRespond:function(e){v=e}},[4,p(a)(I)];case 1:return(R=N.sent())?(T=R.type||"unknown",F=n.logger.scope(T).scope(t),[2,(D.logger=F,l&&(R.config=_object_spread_props(_object_spread({},R.config),{primary:l})),R)]):[2]}})})()},R=function(e){return _async_to_generator(function(e){var n,t,r,o,a,s,i,c,u,l,f,d,_,v,g=arguments;return _ts_generator(this,function(p){switch(p.label){case 0:n=g.length>1&&void 0!==g[1]?g[1]:{},t={},r=!0,o=!1,a=void 0,p.label=1;case 1:p.trys.push([1,6,7,8]),s=Object.entries(n)[Symbol.iterator](),p.label=2;case 2:return(r=(i=s.next()).done)?[3,5]:(c=_sliced_to_array(i.value,2),u=c[0],l=c[1],f=l.config,(d=void 0===f?{}:f).require&&d.require.length>0?(e.pending.sources[u]=l,[3,4]):[4,I(e,u,l)]);case 3:(_=p.sent())&&(t[u]=_),p.label=4;case 4:return r=!0,[3,2];case 5:return[3,8];case 6:return v=p.sent(),o=!0,a=v,[3,8];case 7:try{r||null==s.return||s.return()}finally{if(o)throw a}return[7];case 8:return[2,t]}})}).apply(this,arguments)},T=function(e,n,r){return _async_to_generator(function(){var o,a,s;return _ts_generator(this,function(i){return o=e.on,a=o[n]||[],(s=t(r)?r:[r]).forEach(function(e){a.push(e)}),o[n]=a,N(e,n,s),[2]})})()},F=function(e,n,t,r,o){if(n.on){var a=n.type||"unknown",s=e.logger.scope(a).scope("on").scope(r),i={collector:e,logger:s,id:t,config:n.config,data:o,env:V(n.env,n.config.env)};g(n.on)(r,i)}},N=function(e,n,t,r){var o,a,s,i;switch(n){case Be.Commands.Consent:o=r||e.consent;break;case Be.Commands.Session:o=e.session;break;case Be.Commands.User:o=r||e.user;break;case Be.Commands.Custom:o=r||e.custom;break;case Be.Commands.Globals:o=r||e.globals;break;case Be.Commands.Config:o=r||e.config;break;case Be.Commands.Ready:case Be.Commands.Run:default:o=void 0}if(t.length)switch(n){case Be.Commands.Consent:a=e,s=t,i=r||a.consent,s.forEach(function(e){Object.keys(i).filter(function(n){return n in e}).forEach(function(n){g(e[n])(a,i)})});break;case Be.Commands.Ready:case Be.Commands.Run:!function(e,n){e.allowed&&n.forEach(function(n){g(n)(e)})}(e,t);break;case Be.Commands.Session:!function(e,n){e.session&&n.forEach(function(n){g(n)(e,e.session)})}(e,t);break;default:t.forEach(function(n){"function"==typeof n&&g(n)(e,o)})}},H=function(e,n,t,r){return _async_to_generator(function(){var o,a,s,i,c,u,l,f,d,_,v;return _ts_generator(this,function(g){switch(g.label){case 0:switch(a=t||[],t||(a=e.on[n]||[]),n){case Be.Commands.Consent:o=r||e.consent;break;case Be.Commands.Session:o=e.session;break;case Be.Commands.User:o=r||e.user;break;case Be.Commands.Custom:o=r||e.custom;break;case Be.Commands.Globals:o=r||e.globals;break;case Be.Commands.Config:o=r||e.config;break;case Be.Commands.Ready:case Be.Commands.Run:default:o=void 0}s=!1,i=!0,c=!1,u=void 0,g.label=1;case 1:g.trys.push([1,6,7,8]),l=Object.values(e.sources)[Symbol.iterator](),g.label=2;case 2:return(i=(f=l.next()).done)?[3,5]:(d=f.value).on?(_=!1,[4,p(d.on)(n,o)]):[3,4];case 3:_===g.sent()&&(s=!0),g.label=4;case 4:return i=!0,[3,2];case 5:return[3,8];case 6:return v=g.sent(),c=!0,u=v,[3,8];case 7:try{i||null==l.return||l.return()}finally{if(c)throw u}return[7];case 8:return Object.entries(e.destinations).forEach(function(t){var r=_sliced_to_array(t,2),a=r[0],s=r[1];if(s.on){if(!s.config.init)return s.queueOn=s.queueOn||[],void s.queueOn.push({type:n,data:o});F(e,s,a,n,o)}}),Object.keys(e.pending.sources).length>0||Object.keys(e.pending.destinations).length>0?[4,(y=e,b=n,_async_to_generator(function(){var e,n,t,r,o,a,s,i,c,u,l,f,d,_,v,g,p,h,m,w,j,k,O,S,x;return _ts_generator(this,function(C){switch(C.label){case 0:e=!0,n=!1,t=void 0,C.label=1;case 1:C.trys.push([1,6,7,8]),r=Object.entries(y.pending.sources)[Symbol.iterator](),C.label=2;case 2:return(e=(o=r.next()).done)?[3,5]:(a=_sliced_to_array(o.value,2),s=a[0],i=a[1],!y.pending.sources[s]||y.sources[s]?[3,4]:(u=null===(c=i.config)||void 0===c?void 0:c.require)?-1===(l=u.indexOf(b))?[3,4]:(u.splice(l,1),u.length>0?[3,4]:(delete y.pending.sources[s],[4,I(y,s,i)])):[3,4]);case 3:(f=C.sent())&&(y.sources[s]=f),C.label=4;case 4:return e=!0,[3,2];case 5:return[3,8];case 6:return d=C.sent(),n=!0,t=d,[3,8];case 7:try{e||null==r.return||r.return()}finally{if(n)throw t}return[7];case 8:_=!0,v=!1,g=void 0;try{for(p=Object.entries(y.pending.destinations)[Symbol.iterator]();!(_=(h=p.next()).done);_=!0)m=_sliced_to_array(h.value,2),w=m[0],j=m[1],y.pending.destinations[w]&&!y.destinations[w]&&(O=null===(k=j.config)||void 0===k?void 0:k.require)&&-1!==(S=O.indexOf(b))&&(O.splice(S,1),O.length>0||(delete y.pending.destinations[w],!1!==(x=z(j)).config.queue&&(x.queuePush=_to_consumable_array(y.queue)),y.destinations[w]=x))}catch(e){v=!0,g=e}finally{try{_||null==p.return||p.return()}finally{if(v)throw g}}return[2]}})})())]:[3,10];case 9:g.sent(),g.label=10;case 10:return[2,(N(e,n,a,r),!s)]}var y,b})})()},G=function(e,n,t,r){if(!e)return[];if(n){var o=We(n,j(r));return o?E(o,A(t)):[]}return E(e,A(t))},L=function(e,n,t){return _async_to_generator(function(){var r,a,s,i,c,l,f,d,_,v,g,p;return _ts_generator(this,function(y){if(r=n.code,a=n.config,s=void 0===a?{}:a,i=n.env,c=void 0===i?{}:i,l=n.before,f=n.next,d=n.cache,!o(r.push))return[2,K({ok:!1,failed:{invalid:{type:"invalid",error:"Destination code must have a push method"}}})];if(_=t||s||{init:!1},v=l?_object_spread_props(_object_spread({},_),{before:l}):_object_spread({},_),f&&(v=_object_spread_props(_object_spread({},v),{next:f})),d&&(v=_object_spread_props(_object_spread({},v),{cache:d})),g=_object_spread_props(_object_spread({},r),{config:v,env:V(r.env,c)}),!(p=g.config.id))do{p=u(5,"abcdefghijklmnopqrstuvwxyz")}while(e.destinations[p]);return[2,(e.destinations[p]=g,!1!==g.config.queue&&(g.queuePush=_to_consumable_array(e.queue)),U(e,void 0,{},_define_property({},p,g)))]})})()},U=function(t,r,o){return _async_to_generator(function(t,r){var o,a,s,i,u,l,f,d,_,v,g,y,b,h,m,x,A,P,E,M=arguments;return _ts_generator(this,function(q){switch(q.label){case 0:return o=M.length>2&&void 0!==M[2]?M[2]:{},a=M.length>3?M[3]:void 0,s=t.allowed,i=t.consent,u=t.globals,l=t.user,s?(r&&(t.queue.push(r),t.status.in++),a||(a=t.destinations),[4,Promise.all(Object.entries(a||{}).map(function(a){var s=_sliced_to_array(a,2),f=s[0],d=s[1];return _async_to_generator(function(){var a,s,_,v,g,y,b,h,m,x,A,P,E,M,q,D,I,R,T;return _ts_generator(this,function(F){switch(F.label){case 0:return d.config.disabled?[2,{id:f,destination:d,skipped:!0}]:(g=(d.queuePush||[]).map(function(e){return _object_spread_props(_object_spread({},e),{consent:i})}),d.queuePush=[],r&&g.push(Ie(r)),y=o.ingest?_object_spread_props(_object_spread({},o.ingest),{_meta:_object_spread_props(_object_spread({},o.ingest._meta),{path:_to_consumable_array(o.ingest._meta.path)})}):e("unknown"),g.length||(null===(s=d.queueOn)||void 0===s?void 0:s.length)?g.length||!(null===(_=d.queueOn)||void 0===_?void 0:_.length)?[3,2]:[4,p(W)(t,d,f)]:[2,{id:f,destination:d,skipped:!0}]);case 1:return b=F.sent(),[2,{id:f,destination:d,skipped:!b}];case 2:return h=[],m=g.filter(function(e){var n=c(d.config.consent,i,e.consent);return!n||(e.consent=n,h.push(e),!1)}),(a=d.queuePush).push.apply(a,_to_consumable_array(m)),h.length?[4,p(W)(t,d,f)]:[2,{id:f,destination:d,queue:g}];case 3:return F.sent()?(d.dlq||(d.dlq=[]),P=d.config.before,E=G(P,P&&w(P)?Ue(P):void 0,t.transformers,y),M=d.config.next,q=M&&w(M)?Ue(M):void 0,D=null===(v=d.config)||void 0===v?void 0:v.cache,I=D?k(D):void 0,R=I?C(I,t):void 0,T=0,[4,Promise.all(h.map(function(e){return _async_to_generator(function(){var r,a,s,i,c,_,v,g,b,h,m,w,k;return _ts_generator(this,function(C){switch(C.label){case 0:if(e.globals=n(u,e.globals),e.user=n(l,e.user),(null==I?void 0:I.full)&&R){if(a=j(y,e),"HIT"===(null==(s=O(I,R,a,"d:".concat(f)))?void 0:s.status))return[2,e];"MISS"===(null==s?void 0:s.status)&&(r={key:s.key,ttl:s.rule.ttl})}return i=e,c=o.respond,E.length>0&&t.transformers&&Object.keys(t.transformers).length>0?[4,Ke(t,t.transformers,E,e,y,o.respond,"destination.".concat(f,".before"))]:[3,2];case 1:if(null===(_=C.sent()).event)return[2,e];_.respond&&(c=_.respond),i=Array.isArray(_.event)?_.event[0]:_.event,C.label=2;case 2:if(I&&!I.full&&R){if(v=j(y,i),"HIT"===(null==(g=O(I,R,v,"d:".concat(f)))?void 0:g.status))return[2,e];"MISS"===(null==g?void 0:g.status)&&(r={key:g.key,ttl:g.rule.ttl})}return b=Date.now(),h=!1,[4,p(B,function(e){var n=d.type||"unknown";t.logger.scope(n).error("Push failed",{error:e,event:i.name}),x=e,h=!0,d.dlq.push([i,e])})(t,d,f,i,y,c)];case 3:return m=C.sent(),T+=Date.now()-b,r&&R&&void 0===d.config.mock&&S(R,r.key,null==m||m,r.ttl),void 0!==m&&(A=m),h||!M?[3,5]:(void 0!==m&&(y._response=m),(w=G(M,q,t.transformers,y)).length>0&&t.transformers&&Object.keys(t.transformers).length>0?[4,Ke(t,t.transformers,w,i,y,c,"destination.".concat(f,".next"))]:[3,5]);case 4:(k=C.sent()).respond&&(c=k.respond),C.label=5;case 5:return[2,e]}})})()}))]):[2,{id:f,destination:d,queue:g}];case 4:return[2,(F.sent(),{id:f,destination:d,error:x,response:A,totalDuration:T})]}})})()}))]):[2,K({ok:!1})];case 1:f=q.sent(),d={},_={},v={},g=!0,y=!1,b=void 0;try{for(h=f[Symbol.iterator]();!(g=(m=h.next()).done);g=!0)(x=m.value).skipped||(A={type:x.destination.type||"unknown",data:x.response},t.status.destinations[x.id]||(t.status.destinations[x.id]={count:0,failed:0,duration:0}),P=t.status.destinations[x.id],E=Date.now(),x.error?(A.error=x.error,v[x.id]=A,P.failed++,P.lastAt=E,P.duration+=x.totalDuration||0,t.status.failed++):x.queue&&x.queue.length?_[x.id]=A:(d[x.id]=A,P.count++,P.lastAt=E,P.duration+=x.totalDuration||0,t.status.out++))}catch(e){y=!0,b=e}finally{try{g||null==h.return||h.return()}finally{if(y)throw b}}return[2,K(_object_spread({event:r},Object.keys(d).length&&{done:d},Object.keys(_).length&&{queued:_},Object.keys(v).length&&{failed:v}))]}})}).apply(this,arguments)},W=function(e,n,t){return _async_to_generator(function(){var r,o,a,s,i,c,u,l,f,d,_,v,g,p;return _ts_generator(this,function(y){switch(y.label){case 0:return!n.init||n.config.init?[3,2]:(o=n.type||"unknown",a=e.logger.scope(o),s={collector:e,logger:a,id:t,config:n.config,env:V(n.env,n.config.env)},a.debug("init"),[4,m(n.init,"DestinationInit",e.hooks,e.logger)(s)]);case 1:if(!1===(i=y.sent()))return[2,i];if(n.config=_object_spread_props(_object_spread({},i||n.config),{init:!0}),null===(r=n.queueOn)||void 0===r?void 0:r.length){c=n.queueOn,n.queueOn=[],u=!0,l=!1,f=void 0;try{for(d=c[Symbol.iterator]();!(u=(_=d.next()).done);u=!0)v=_.value,g=v.type,p=v.data,F(e,n,t,g,p)}catch(e){l=!0,f=e}finally{try{u||null==d.return||d.return()}finally{if(l)throw f}}}a.debug("init done"),y.label=2;case 2:return[2,!0]}})})()},B=function(e,n,t,o,a,s){return _async_to_generator(function(){var i,c,u,f,d,_,v,g,p,y;return _ts_generator(this,function(b){switch(b.label){case 0:return i=n.config,[4,h(o,i,e)];case 1:return(c=b.sent()).ignore?[2,!1]:(u=n.type||"unknown",f=e.logger.scope(u),d={collector:e,logger:f,id:t,config:i,data:c.data,rule:c.mapping,ingest:a,env:_object_spread({},V(n.env,i.env),s?{respond:s}:{})},void 0!==i.mock?[2,(f.debug("mock",{event:c.event.name}),i.mock)]:(_=c.mapping,v=c.mappingKey||"* *",(null==_?void 0:_.batch)&&n.pushBatch&&void 0===i.mock?[3,3]:(f.debug("push",{event:c.event.name}),[4,m(n.push,"DestinationPush",e.hooks,e.logger)(c.event,d)])));case 2:return g=b.sent(),[2,(f.debug("push done"),g)];case 3:return n.batches=n.batches||{},n.batches[v]||(p={key:v,events:[],data:[]},n.batches[v]={batched:p,batchFn:l(function(){var r=n.batches[v].batched,o={collector:e,logger:f,id:t,config:i,data:void 0,rule:_,ingest:a,env:_object_spread({},V(n.env,i.env),s?{respond:s}:{})};f.debug("push batch",{events:r.events.length}),m(n.pushBatch,"DestinationPushBatch",e.hooks,e.logger)(r,o),f.debug("push batch done"),r.events=[],r.data=[]},_.batch)}),(y=n.batches[v]).batched.events.push(c.event),r(c.data)&&y.batched.data.push(c.data),y.batchFn(),[2,!0]}})})()},K=function(e){return _object_spread({ok:!(null==e?void 0:e.failed)},e)},z=function(e){var n=e.code,t=e.config,r=void 0===t?{}:t,o=e.env,a=void 0===o?{}:o,s=e.cache,i=P(e,"before").config,c=P(_object_spread_props(_object_spread({},e),{config:i}),"next").config,u=_object_spread({},n.config,r,c);s&&(u.cache=s);var l=V(n.env,a);return _object_spread_props(_object_spread({},n),{config:u,env:l})},J=function(e){return _async_to_generator(function(e){var n,t,r,o,a,s,i,c,u,l,f,d,_=arguments;return _ts_generator(this,function(v){n=_.length>1&&void 0!==_[1]?_[1]:{},o={},a=!0,s=!1,i=void 0;try{for(c=Object.entries(n)[Symbol.iterator]();!(a=(u=c.next()).done);a=!0)l=_sliced_to_array(u.value,2),f=l[0],d=l[1],(null===(r=d.config)||void 0===r||null===(t=r.require)||void 0===t?void 0:t.length)?e.pending.destinations[f]=d:o[f]=z(d)}catch(e){s=!0,i=e}finally{try{a||null==c.return||c.return()}finally{if(s)throw i}}return[2,o]})}).apply(this,arguments)},V=function(e,n){return e||n?n?e&&a(e)&&a(n)?_object_spread({},e,n):n:e:{}},Y=function(e,n,t){return _async_to_generator(function(){var r;return _ts_generator(this,function(o){switch(o.label){case 0:return r=Object.entries(e).map(function(e){var r=_sliced_to_array(e,2),o=r[0],a=r[1];return _async_to_generator(function(){var e,r,s,i,c,u;return _ts_generator(this,function(l){switch(l.label){case 0:if(!(r=a.destroy))return[2];s=a.type||"unknown",i=t.scope(s),c={id:o,config:a.config,env:null!==(e=a.env)&&void 0!==e?e:{},logger:i},l.label=1;case 1:return l.trys.push([1,3,,4]),[4,Promise.race([r(c),new Promise(function(e,t){return setTimeout(function(){return t(new Error("".concat(n," '").concat(o,"' destroy timed out")))},5e3)})])];case 2:return l.sent(),[3,4];case 3:return u=l.sent(),i.error("".concat(n," '").concat(o,"' destroy failed: ").concat(u)),[3,4];case 4:return[2]}})})()}),[4,Promise.allSettled(r)];case 1:return o.sent(),[2]}})})()},$=function(e,t,r,i){return _async_to_generator(function(){var c,u,l,f,d,_,v;return _ts_generator(this,function(g){switch(g.label){case 0:switch(l=!1,t){case Be.Commands.Config:return[3,1];case Be.Commands.Consent:return[3,2];case Be.Commands.Custom:return[3,3];case Be.Commands.Destination:return[3,4];case Be.Commands.Globals:return[3,11];case Be.Commands.On:return[3,12];case Be.Commands.Ready:return[3,15];case Be.Commands.Run:return[3,16];case Be.Commands.Session:return[3,18];case Be.Commands.Shutdown:return[3,19];case Be.Commands.User:return[3,21]}return[3,22];case 1:return a(r)&&(n(e.config,r,{shallow:!1}),u=r,l=!0),[3,22];case 2:return a(r)&&(f=function(e,t){var r={};return Object.entries(t).forEach(function(e){var n=_sliced_to_array(e,2),t=n[0],o=n[1];r[t]=!!o}),e.consent=n(e.consent,r),{update:r}}(e,r),d=f.update,u=d,l=!0),[3,22];case 3:return a(r)&&(e.custom=n(e.custom,r),u=r,l=!0),[3,22];case 4:return a(r)?"code"in r&&a(r.code)?[4,L(e,r,i)]:[3,6]:[3,10];case 5:return _=c=g.sent(),[3,9];case 6:return(v=o(r.push))?[4,L(e,{code:r},i)]:[3,8];case 7:v=c=g.sent(),g.label=8;case 8:_=v,g.label=9;case 9:g.label=10;case 10:return[3,22];case 11:return a(r)&&(e.globals=n(e.globals,r),u=r,l=!0),[3,22];case 12:return s(r)?[4,T(e,r,i)]:[3,14];case 13:g.sent(),g.label=14;case 14:return[3,22];case 15:return l=!0,[3,22];case 16:return[4,X(e,r)];case 17:return c=g.sent(),l=!0,[3,22];case 18:return l=!0,[3,22];case 19:return[4,(p=e,_async_to_generator(function(){var e;return _ts_generator(this,function(n){switch(n.label){case 0:return e=p.logger,[4,Y(p.sources,"source",e)];case 1:return n.sent(),[4,Y(p.destinations,"destination",e)];case 2:return n.sent(),[4,Y(p.transformers,"transformer",e)];case 3:return n.sent(),[4,Y(p.stores,"store",e)];case 4:return n.sent(),[2]}})})())];case 20:return g.sent(),[3,22];case 21:a(r)&&(n(e.user,r,{shallow:!1}),u=r,l=!0),g.label=22;case 22:return l?[4,H(e,t,void 0,u)]:[3,25];case 23:return g.sent(),[4,U(e)];case 24:c=g.sent(),g.label=25;case 25:return[2,c||K({ok:!0})]}var p})})()},Q=function(e,n){if(!n.name)throw new Error("Event name is required");var t=_sliced_to_array(n.name.split(" "),2),r=t[0],o=t[1];if(!r||!o)throw new Error("Event name is invalid");var a=n.timestamp,s=void 0===a?Date.now():a,i=n.name,c=void 0===i?"".concat(r," ").concat(o):i,u=n.data,l=void 0===u?{}:u,f=n.context,d=void 0===f?{}:f,_=n.globals,v=void 0===_?e.globals:_,g=n.custom,p=void 0===g?{}:g,y=n.user,b=void 0===y?e.user:y,h=n.nested,m=void 0===h?[]:h,w=n.consent,j=void 0===w?e.consent:w,k=n.id,O=void 0===k?function(){for(var e="",n=0;n<16;n++)e+=(16*Math.random()|0).toString(16);return e}():k,S=n.trigger,x=void 0===S?"":S,C=n.entity,A=void 0===C?r:C,P=n.action,E=void 0===P?o:P,M=n.timing,q=void 0===M?0:M,D=n.source;return{name:c,data:l,context:d,globals:v,custom:p,user:b,nested:m,consent:j,id:O,trigger:x,entity:A,action:E,timestamp:s,timing:q,source:void 0===D?{type:"collector",schema:"4"}:D}},X=function(e,t){return _async_to_generator(function(){return _ts_generator(this,function(r){switch(r.label){case 0:return e.allowed=!0,e.timing=Date.now(),t&&(t.consent&&(e.consent=n(e.consent,t.consent)),t.user&&(e.user=n(e.user,t.user)),t.globals&&(e.globals=n(e.config.globalsStatic||{},t.globals)),t.custom&&(e.custom=n(e.custom,t.custom))),Object.values(e.destinations).forEach(function(e){e.queuePush=[]}),e.queue=[],e.round++,[4,U(e)];case 1:return[2,r.sent()]}})})()},Z=function(t){return _async_to_generator(function(){var r,o,a,s,i,u,l,f,d;return _ts_generator(this,function(v){switch(v.label){case 0:return a=n({globalsStatic:{},sessionStatic:{},run:!0},t,{merge:!1,extend:!1}),s={level:null===(r=t.logger)||void 0===r?void 0:r.level,handler:null===(o=t.logger)||void 0===o?void 0:o.handler},i=_(s),u=_object_spread({},a.globalsStatic,t.globals),(l={allowed:!1,config:a,consent:t.consent||{},custom:t.custom||{},destinations:{},transformers:{},stores:{},globals:u,hooks:t.hooks||{},logger:i,on:{},queue:[],round:0,session:void 0,status:{startedAt:Date.now(),in:0,out:0,failed:0,sources:{},destinations:{}},timing:Date.now(),user:t.user||{},sources:{},pending:{sources:{},destinations:{}},push:void 0,command:void 0}).push=function(n,t){return m(function(r){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return _async_to_generator(function(){return _ts_generator(this,function(a){switch(a.label){case 0:return[4,p(function(){return _async_to_generator(function(){var a,s,i,u,l,f,d,_,v,g,p,y,b,m,w,j,k,O,S,x,C;return _ts_generator(this,function(A){switch(A.label){case 0:return a=Date.now(),s=o.id,i=o.ingest,u=o.respond,l=o.mapping,f=o.preChain,d=o.include,_=o.exclude,v=u,g=r,p=d||_?function(e,n,t){var r=e;return n&&(r=Object.fromEntries(Object.entries(r).filter(function(e){var t=_sliced_to_array(e,1)[0];return n.includes(t)}))),t&&(r=Object.fromEntries(Object.entries(r).filter(function(e){var n=_sliced_to_array(e,1)[0];return!t.includes(n)}))),r}(n.destinations,d,_):void 0,y=null!=i?i:e(s||"unknown"),l?[4,h(g,l,n)]:[3,2];case 1:if((b=A.sent()).ignore)return[2,K({ok:!0})];if(l.consent&&!c(l.consent,n.consent,b.event.consent))return[2,K({ok:!0})];g=b.event,A.label=2;case 2:return(null==f?void 0:f.length)&&n.transformers&&Object.keys(n.transformers).length>0?[4,Ke(n,n.transformers,f,g,y,v,s?"source.".concat(s,".next"):void 0)]:[3,6];case 3:return null===(m=A.sent()).event?[2,K({ok:!0})]:(m.respond&&(v=m.respond),Array.isArray(m.event)?[4,Promise.all(m.event.map(function(e){return _async_to_generator(function(){var r,o;return _ts_generator(this,function(a){return r=t(e),o=Q(n,r),[2,U(n,o,{id:s,ingest:y,respond:v},p)]})})()}))]:[3,5]);case 4:return j=A.sent(),s&&(n.status.sources[s]||(n.status.sources[s]={count:0,duration:0}),(k=n.status.sources[s]).count+=m.event.length,k.lastAt=Date.now(),k.duration+=Date.now()-a),[2,null!==(w=j[0])&&void 0!==w?w:K({ok:!0})];case 5:g=m.event,A.label=6;case 6:return O=t(g),S=Q(n,O),[4,U(n,S,{id:s,ingest:y,respond:v},p)];case 7:return x=A.sent(),s&&(n.status.sources[s]||(n.status.sources[s]={count:0,duration:0}),(C=n.status.sources[s]).count++,C.lastAt=Date.now(),C.duration+=Date.now()-a),[2,x]}})})()},function(){return K({ok:!1})})()];case 1:return[2,a.sent()]}})})()},"Push",n.hooks,n.logger)}(l,function(e){return _object_spread({timing:Math.round((Date.now()-l.timing)/10)/100,source:{type:"collector",schema:"4",version:"4.0.0-next-1777463920154"}},e)}),l.command=function(e,n){return m(function(t,r,o){return _async_to_generator(function(){return _ts_generator(this,function(a){switch(a.label){case 0:return[4,p(function(){return _async_to_generator(function(){return _ts_generator(this,function(a){switch(a.label){case 0:return[4,n(e,t,r,o)];case 1:return[2,a.sent()]}})})()},function(){return K({ok:!1})})()];case 1:return[2,a.sent()]}})})()},"Command",e.hooks,e.logger)}(l,$),f=t.stores||{},[4,function(e){return _async_to_generator(function(e){var n,t,r,o,a,s,i,c,u,l,f,d,_,v,g,p,y,b,h,w,j,k=arguments;return _ts_generator(this,function(O){switch(O.label){case 0:n=k.length>1&&void 0!==k[1]?k[1]:{},t={},r=!0,o=!1,a=void 0,O.label=1;case 1:O.trys.push([1,6,7,8]),s=Object.entries(n)[Symbol.iterator](),O.label=2;case 2:return(r=(i=s.next()).done)?[3,5]:(c=_sliced_to_array(i.value,2),u=c[0],l=c[1],f=l.code,d=l.config,_=void 0===d?{}:d,v=l.env,g=void 0===v?{}:v,p=e.logger.scope("store").scope(u),[4,f({collector:e,logger:p,id:u,config:_,env:g})]);case 3:y=O.sent(),b=y.get,h=y.set,w=y.delete,y.get=m(b,"StoreGet",e.hooks,e.logger),y.set=m(h,"StoreSet",e.hooks,e.logger),y.delete=m(w,"StoreDelete",e.hooks,e.logger),t[u]=y,O.label=4;case 4:return r=!0,[3,2];case 5:return[3,8];case 6:return j=O.sent(),o=!0,a=j,[3,8];case 7:try{r||null==s.return||s.return()}finally{if(o)throw a}return[7];case 8:return[2,t]}})}).apply(this,arguments)}(l,f)];case 1:return l.stores=v.sent(),function(e,n,t){var r=new Map,o=!0,a=!1,s=void 0;try{for(var i,c=Object.entries(e)[Symbol.iterator]();!(o=(i=c.next()).done);o=!0){var u=_sliced_to_array(i.value,2),l=u[0],f=u[1];n[l]&&r.set(f,n[l])}}catch(e){a=!0,s=e}finally{try{o||null==c.return||c.return()}finally{if(a)throw s}}if(0!==r.size)for(var d=!0,_=!1,v=void 0,g=0,p=[t.transformers,t.destinations,t.sources];g<p.length;g++){var y=p[g];if(y)try{for(var b,h=Object.values(y)[Symbol.iterator]();!(d=(b=h.next()).done);d=!0){m(b.value.env)}}catch(e){_=!0,v=e}finally{try{d||null==h.return||h.return()}finally{if(_)throw v}}}function m(e){if(e){var n=!0,t=!1,o=void 0;try{for(var a,s=Object.entries(e)[Symbol.iterator]();!(n=(a=s.next()).done);n=!0){var i=_sliced_to_array(a.value,2),c=i[0],u=i[1];if("object"==(void 0===u?"undefined":_type_of(u))&&null!==u){var l=r.get(u);l&&(e[c]=l)}}}catch(e){t=!0,o=e}finally{try{n||null==s.return||s.return()}finally{if(t)throw o}}}}}(f,l.stores,t),l.stores.__cache||(d=new Map,l.stores.__cache={type:"memory",config:{},get:function(e){var n=d.get(e);if(n){if(!(n.expires&&Date.now()>n.expires))return n.value;d.delete(e)}},set:function(e,n,t){d.set(e,{value:n,expires:t?Date.now()+t:void 0})},delete:function(e){d.delete(e)}}),[4,J(l,t.destinations||{})];case 2:return l.destinations=v.sent(),[4,function(n){return _async_to_generator(function(n){var t,r,o,a,s,i,c,u,l,f,d,_,v,g,p,y,b,h,m,w,j,k,O,S,x=arguments;return _ts_generator(this,function(C){switch(C.label){case 0:t=x.length>1&&void 0!==x[1]?x[1]:{},r={},o=!0,a=!1,s=void 0,C.label=1;case 1:C.trys.push([1,6,7,8]),i=Object.entries(t)[Symbol.iterator](),C.label=2;case 2:return(o=(c=i.next()).done)?[3,5]:(u=_sliced_to_array(c.value,2),l=u[0],f=u[1],d=f.code,_=f.env,v=void 0===_?{}:_,g=P(f,"before"),p=g.config,y=P(_object_spread_props(_object_spread({},f),{config:p}),"next"),b=y.config,h=Object.keys(v).length>0?_object_spread_props(_object_spread({},b),{env:v}):b,m=f.cache,w=m?_object_spread_props(_object_spread({},h),{cache:m}):h,j=n.logger.scope("transformer").scope(l),k={collector:n,logger:j,id:l,ingest:e(l),config:w,env:v},[4,d(k)]);case 3:O=C.sent(),r[l]=O,C.label=4;case 4:return o=!0,[3,2];case 5:return[3,8];case 6:return S=C.sent(),a=!0,s=S,[3,8];case 7:try{o||null==i.return||i.return()}finally{if(a)throw s}return[7];case 8:return[2,r]}})}).apply(this,arguments)}(l,t.transformers||{})];case 3:return[2,(l.transformers=v.sent(),l)]}})})()},ee=function(e){return _async_to_generator(function(){var n,t,r,o,a,s,i,c,u,l,f;return _ts_generator(this,function(d){switch(d.label){case 0:return[4,Z(e=e||{})];case 1:return n=d.sent(),r=n,t={type:"elb",config:{},push:function(e,n,t,o,a,s){return _async_to_generator(function(){var i,c;return _ts_generator(this,function(u){if("string"==typeof e&&e.startsWith("walker "))return i=e.replace("walker ",""),[2,r.command(i,n,t)];if("string"==typeof e)c={name:e},n&&"object"==(void 0===n?"undefined":_type_of(n))&&!Array.isArray(n)&&(c.data=n);else{if(!e||"object"!=(void 0===e?"undefined":_type_of(e)))return[2,K({ok:!1})];c=e,n&&"object"==(void 0===n?"undefined":_type_of(n))&&!Array.isArray(n)&&(c.data=_object_spread({},c.data||{},n))}return[2,(o&&"object"==(void 0===o?"undefined":_type_of(o))&&(c.context=o),a&&Array.isArray(a)&&(c.nested=a),s&&"object"==(void 0===s?"undefined":_type_of(s))&&(c.custom=s),r.push(c))]})})()}},n.sources.elb=t,[4,R(n,e.sources||{})];case 2:return o=d.sent(),Object.assign(n.sources,o),a=e.consent,s=e.user,i=e.globals,c=e.custom,a?[4,n.command("consent",a)]:[3,4];case 3:d.sent(),d.label=4;case 4:return s?[4,n.command("user",s)]:[3,6];case 5:d.sent(),d.label=6;case 6:return i&&Object.assign(n.globals,i),c&&Object.assign(n.custom,c),n.config.run?[4,n.command("run")]:[3,8];case 7:d.sent(),d.label=8;case 8:return u=t.push,l=Object.values(n.sources).filter(function(e){return"elb"!==e.type}),[2,((f=l.find(function(e){return e.config.primary}))?u=f.push:l.length>0&&(u=l[0].push),{collector:n,elb:u})]}})})()},ne=Object.defineProperty,te=Object.getOwnPropertyDescriptor,re=Object.getOwnPropertyNames,oe=Object.prototype.hasOwnProperty,ae=function(e,n){for(var t in n)ne(e,t,{get:n[t],enumerable:!0})},se={};ae(se,{DEFAULT_CATEGORY_MAP:function(){return Ye},SourceCookieFirst:function(){return ie},analyticsOnlyConsent:function(){return de},analyticsOnlyMapped:function(){return ye},createMockCookieFirstAPI:function(){return je},createMockElbFn:function(){return me},createMockWindow:function(){return ke},createTrigger:function(){return Je},default:function(){return Qe},fullConsent:function(){return ce},fullConsentMapped:function(){return ve},marketingOnlyConsent:function(){return _e},marketingOnlyMapped:function(){return be},minimalConsent:function(){return le},minimalConsentMapped:function(){return pe},mockEnv:function(){return Oe},noConsent:function(){return fe},noopLogger:function(){return we},partialConsent:function(){return ue},partialConsentMapped:function(){return ge},sourceCookieFirst:function(){return $e},step:function(){return Se},trigger:function(){return Ve}});var ie={},ce={necessary:!0,functional:!0,performance:!0,advertising:!0},ue={necessary:!0,functional:!0,performance:!1,advertising:!1},le={necessary:!0,functional:!1,performance:!1,advertising:!1},fe=null,de={necessary:!0,functional:!1,performance:!0,advertising:!1},_e={necessary:!0,functional:!1,performance:!1,advertising:!0},ve={functional:!0,analytics:!0,marketing:!0},ge={functional:!0,analytics:!1,marketing:!1},pe={functional:!0,analytics:!1,marketing:!1},ye={functional:!0,analytics:!0,marketing:!1},be={functional:!0,analytics:!1,marketing:!0},he=function(){},me=function(){return function(){return Promise.resolve({ok:!0})}},we={error:he,warn:he,info:he,debug:he,throw:function(e){throw"string"==typeof e?new Error(e):e},json:he,scope:function(){return we}},je=function(){return{consent:arguments.length>0&&void 0!==arguments[0]?arguments[0]:null}},ke=function(){return{CookieFirst:je(arguments.length>0&&void 0!==arguments[0]?arguments[0]:null),addEventListener:he,removeEventListener:he}},Oe={get push(){return me()},get command(){return me()},get elb(){return me()},get window(){return ke()},logger:we},Se={};ae(Se,{categoryMapOverride:function(){return Ae},cfInitDetection:function(){return Pe},fullConsent:function(){return xe},partialConsent:function(){return Ce}});var xe={title:"Full consent",description:"CookieFirst reports all categories granted and the source forwards a walker consent command with all groups true.",trigger:{type:"consent"},in:{necessary:!0,functional:!0,performance:!0,advertising:!0},out:[["elb","walker consent",{functional:!0,analytics:!0,marketing:!0}]]},Ce={title:"Partial consent",description:"A partial CookieFirst grant maps analytics and marketing to false in the emitted walker consent command.",trigger:{type:"consent"},in:{necessary:!0,functional:!0,performance:!1,advertising:!1},out:[["elb","walker consent",{functional:!0,analytics:!1,marketing:!1}]]},Ae={title:"Category map override",description:"Custom categoryMap remaps performance to statistics instead of analytics",trigger:{type:"consent"},in:{necessary:!0,functional:!1,performance:!0,advertising:!1},mapping:{settings:{categoryMap:{performance:"statistics"}}},out:[["elb","walker consent",{functional:!0,statistics:!0,marketing:!1}]]},Pe={title:"cf_init detection",description:"CMP detected via cf_init CustomEvent (primary detection path)",trigger:{type:"consent"},in:{necessary:!0,functional:!1,performance:!1,advertising:!0},out:[["elb","walker consent",{functional:!0,analytics:!1,marketing:!0}]]},Ee=Object.defineProperty;!function(e,n){for(var t in n)Ee(e,t,{get:n[t],enumerable:!0})}({},{Level:function(){return qe}});var Me,qe=((Me=qe||{})[Me.ERROR=0]="ERROR",Me[Me.WARN=1]="WARN",Me[Me.INFO=2]="INFO",Me[Me.DEBUG=3]="DEBUG",Me),De={merge:!0,shallow:!0,extend:!0};function Ie(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new WeakMap;if("object"!=(void 0===e?"undefined":_type_of(e))||null===e)return e;if(n.has(e))return n.get(e);var t=Object.prototype.toString.call(e);if("[object Object]"===t){var r={};for(var o in n.set(e,r),e)Object.prototype.hasOwnProperty.call(e,o)&&(r[o]=Ie(e[o],n));return r}if("[object Array]"===t){var a=[];return n.set(e,a),e.forEach(function(e){a.push(Ie(e,n))}),a}if("[object Date]"===t)return new Date(e.getTime());if("[object RegExp]"===t){var s=e;return new RegExp(s.source,s.flags)}return e}function Re(e){for(var n=arguments.length>2?arguments[2]:void 0,o=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:"").split("."),a=e,s=0;s<o.length;s++){var i=o[s];if("*"===i&&t(a)){var c=o.slice(s+1).join("."),u=[],l=!0,f=!1,d=void 0;try{for(var _,v=a[Symbol.iterator]();!(l=(_=v.next()).done);l=!0){var g=Re(_.value,c,n);u.push(g)}}catch(e){f=!0,d=e}finally{try{l||null==v.return||v.return()}finally{if(f)throw d}}return u}if(void 0===(a=_instanceof(a,Object)?a[i]:void 0))break}return r(a)?a:n}var Te={data:function(e){return e.data},globals:function(e){return e.globals},context:function(e){return e.context},user:function(e){return e.user},source:function(e){return e.source},event:function(e){return{entity:e.entity,action:e.action,id:e.id,timestamp:e.timestamp,name:e.name,trigger:e.trigger,timing:e.timing}}},Fe=function(e,n,t,r){var o="".concat(qe[e]).concat(r.length>0?" [".concat(r.join(":"),"]"):""),a=Object.keys(t).length>0,s=0===e?console.error:1===e?console.warn:console.log;a?s(o,n,t):s(o,n)};function Ne(e){var n=e.level,t=e.handler,r=e.jsonHandler,o=e.scope,a=function(e,r,a){if(e<=n){var s=d(r,a);t?t(e,s.message,s.context,o,Fe):Fe(e,s.message,s.context,o)}};return{error:function(e,n){return a(0,e,n)},warn:function(e,n){return a(1,e,n)},info:function(e,n){return a(2,e,n)},debug:function(e,n){return a(3,e,n)},throw:function(e,n){var r=d(e,n);throw t?t(0,r.message,r.context,o,Fe):Fe(0,r.message,r.context,o),new Error(r.message)},json:function(e){r?r(e):console.log(JSON.stringify(e,null,2))},scope:function(e){return Ne({level:n,handler:t,jsonHandler:r,scope:_to_consumable_array(o).concat([e])})}}}function He(e){return function(e){return"boolean"==typeof e}(e)||s(e)||function(e){return"number"==typeof e&&!Number.isNaN(e)}(e)||!r(e)||t(e)&&e.every(He)||a(e)&&Object.values(e).every(He)}function Ge(e,n){return _async_to_generator(function(e,n){var o,a,i,u=arguments;return _ts_generator(this,function(l){return a=(o=u.length>2&&void 0!==u[2]?u[2]:{}).collector,i=o.consent,[2,(t(n)?n:[n]).reduce(function(n,u){return _async_to_generator(function(){var l,f,d,_,g,y,h,m,w,j,k,O,S,x,C,A,P,E,M,q,D;return _ts_generator(this,function(I){switch(I.label){case 0:return[4,n];case 1:return(l=I.sent())?[2,l]:(f=s(u)?{key:u}:u,Object.keys(f).length?(d=f.condition,_=f.consent,g=f.fn,y=f.key,h=f.loop,m=f.map,w=f.set,j=f.validate,k=f.value,(O=d)?[4,p(d)(e,u,a)]:[3,3]):[2]);case 2:O=!I.sent(),I.label=3;case 3:return O?[2]:_&&!c(_,i)?[2,k]:(S=r(k)?k:e,g?[4,p(g)(e,u,o)]:[3,5]);case 4:S=I.sent(),I.label=5;case 5:return y&&(S=Re(e,y,k)),h?(x=_sliced_to_array(h,2),C=x[0],A=x[1],"this"!==C?[3,6]:(E=[e],[3,8])):[3,11];case 6:return[4,b(e,C,o)];case 7:E=I.sent(),I.label=8;case 8:return t(P=E)?[4,Promise.all(P.map(function(e){return b(e,A,o)}))]:[3,10];case 9:S=I.sent().filter(r),I.label=10;case 10:return[3,17];case 11:return m?[4,Object.entries(m).reduce(function(n,t){var a=_sliced_to_array(t,2),s=a[0],i=a[1];return _async_to_generator(function(){var t,a;return _ts_generator(this,function(c){switch(c.label){case 0:return[4,n];case 1:return t=c.sent(),[4,b(e,i,o)];case 2:return a=c.sent(),[2,(r(a)&&(t[s]=a),t)]}})})()},Promise.resolve({}))]:[3,13];case 12:return S=I.sent(),[3,16];case 13:return(M=w)?[4,Promise.all(w.map(function(n){return Ge(e,n,o)}))]:[3,15];case 14:M=S=I.sent(),I.label=15;case 15:I.label=16;case 16:I.label=17;case 17:return(q=j)?[4,p(j)(S)]:[3,19];case 18:q=!I.sent(),I.label=19;case 19:return q&&(S=void 0),D=v(S),[2,r(D)?D:v(k)]}})})()},Promise.resolve(void 0))]})}).apply(this,arguments)}function Le(e){if("*"===e)return function(){return!0};if("and"in e){var n=e.and.map(Le);return function(e){return n.every(function(n){return n(e)})}}if("or"in e){var t=e.or.map(Le);return function(e){return t.some(function(n){return n(e)})}}return function(e){var n=e.key,t=e.operator,r=e.value,o=e.not,a=function(e,n){switch(e){case"eq":return function(e){return String(null!=e?e:"")===n};case"contains":return function(e){return String(null!=e?e:"").includes(n)};case"prefix":return function(e){return String(null!=e?e:"").startsWith(n)};case"suffix":return function(e){return String(null!=e?e:"").endsWith(n)};case"regex":var t=new RegExp(n);return function(e){return t.test(String(null!=e?e:""))};case"gt":var r=Number(n);return function(e){return Number(e)>r};case"lt":var o=Number(n);return function(e){return Number(e)<o};case"exists":return function(e){return null!=e}}}(t,r);return function(e){var t=Re(e,n),r=a(t);return o?!r:r}}(e)}function Ue(e){if(null!=e){if("string"==typeof e)return{type:"static",value:e};if(Array.isArray(e)){if(0===e.length)return;return w(e)?{type:"routes",routes:e.map(function(e){return{match:Le(e.match),next:Ue(e.next)}})}:{type:"chain",value:e}}}}function We(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(e){if("static"===e.type)return e.value;if("chain"===e.type)return e.value;var t=!0,r=!1,o=void 0;try{for(var a,s=e.routes[Symbol.iterator]();!(t=(a=s.next()).done);t=!0){var i=a.value;if(i.match(n))return We(i.next,n)}}catch(e){r=!0,o=e}finally{try{t||null==s.return||s.return()}finally{if(r)throw o}}}}var Be={Commands:{Action:"action",Actions:"actions",Config:"config",Consent:"consent",Context:"context",Custom:"custom",Destination:"destination",Elb:"elb",Globals:"globals",Hook:"hook",Init:"init",Link:"link",On:"on",Prefix:"data-elb",Ready:"ready",Run:"run",Session:"session",Shutdown:"shutdown",User:"user",Walker:"walker"},Utils:{Storage:{Cookie:"cookie",Local:"local",Session:"session"}}};function Ke(n,t,r,o,a,s,i){return _async_to_generator(function(){var c,u,l,f,d,_,v,g,y,b;return _ts_generator(this,function(h){switch(h.label){case 0:i&&(null==a?void 0:a._meta)&&(a._meta.chainPath=i),c=o,u=s,l=!0,f=!1,d=void 0,h.label=1;case 1:h.trys.push([1,6,7,8]),_=function(){var o,s,l,f,d,_,v,y,b,h,m,x,P,D,I,R,T,F,N,H,G,L,U,W,B,K,z,J,V,Y,$,Q,X,Z,ee,ne,te,re,oe,ae,se;return _ts_generator(this,function(ie){switch(ie.label){case 0:return o=g.value,(v=t[o])?a&&a._meta&&a._meta.path.length>256?[2,{v:(n.logger.error("Max path length exceeded at ".concat(o)),{event:null,respond:u})}]:(a&&a._meta&&(a._meta.hops++,a._meta.path.push(o)),[4,p(M)(n,v,o)]):(n.logger.warn("Transformer not found: ".concat(o)),[2,"continue"]);case 1:if(!ie.sent())return[2,{v:(n.logger.error("Transformer init failed: ".concat(o)),{event:null,respond:u})}];if(i&&void 0!==(null===(l=v.config)||void 0===l||null===(s=l.chainMocks)||void 0===s?void 0:s[i]))return y=v.config.chainMocks[i],n.logger.scope("transformer:".concat(v.type||"unknown")).debug("chainMock",{chain:i}),c=y,[2,"continue"];if(void 0!==(null===(f=v.config)||void 0===f?void 0:f.mock))return n.logger.scope("transformer:".concat(v.type||"unknown")).debug("mock"),c=v.config.mock,[2,"continue"];if(null===(d=v.config)||void 0===d?void 0:d.disabled)return[2,"continue"];if(b=null===(_=v.config)||void 0===_?void 0:_.cache,h=b?k(b):void 0,m=h?C(h,n):void 0,x=void 0,h&&m){if(P=j(a,c),"HIT"===(null==(D=O(h,m,P,"t:".concat(o)))?void 0:D.status)&&D.value)return c=D.value,h.full?[2,{v:{event:c,respond:u}}]:[2,"continue"];"MISS"===(null==D?void 0:D.status)&&(x={key:D.key,ttl:D.rule.ttl})}return(I=v.config.before)&&(R=E("string"==typeof I||Array.isArray(I)&&!w(I)?I:We(Ue(I),j(a,c))||void 0,A(t))).length>0?[4,Ke(n,t,R,c,a,u,i)]:[3,3];case 2:if(null===(F=ie.sent()).event)return[2,{v:{event:null,respond:null!==(T=F.respond)&&void 0!==T?T:u}}];F.respond&&(u=F.respond),c=Array.isArray(F.event)?F.event[0]:F.event,ie.label=3;case 3:return[4,p(q,function(e){return n.logger.scope("transformer:".concat(v.type||"unknown")).error("Push failed",{error:e}),!1})(n,v,o,c,a,u)];case 4:return!1===(N=ie.sent())?[2,{v:{event:null,respond:u}}]:Array.isArray(N)?(H=r.slice(r.indexOf(o)+1),[4,Promise.all(N.map(function(r){return _async_to_generator(function(){var o,s,l,f,d;return _ts_generator(this,function(_){return o=r.event||c,s=a?_object_spread_props(_object_spread({},a),{_meta:_object_spread_props(_object_spread({},a._meta),{path:_to_consumable_array(a._meta.path)})}):e("unknown"),r.next?(l=r.next,w(r.next)&&(f=Ue(r.next),l=We(f,j(s,o))),l&&(d=E(l,A(t))).length>0?[2,Ke(n,t,d,o,s,u,i)]:[2,{event:o,respond:u}]):[2,H.length>0?Ke(n,t,H,o,s,u,i):{event:o,respond:u}]})})()}))]):[3,6];case 5:G=ie.sent(),L=u,U=[],W=!0,B=!1,K=void 0;try{for(z=G.flat()[Symbol.iterator]();!(W=(J=z.next()).done);W=!0)if(null!==(V=J.value))if(V&&"object"==(void 0===V?"undefined":_type_of(V))&&"event"in V){if(($=V).respond&&(L=$.respond),null===$.event)continue;Array.isArray($.event)?(Y=U).push.apply(Y,_to_consumable_array($.event)):U.push($.event)}else U.push(V)}catch(e){B=!0,K=e}finally{try{W||null==z.return||z.return()}finally{if(B)throw K}}return[2,{v:0===U.length?{event:null,respond:L}:1===U.length?{event:U[0],respond:L}:{event:U,respond:L}}];case 6:if(N&&"object"==(void 0===N?"undefined":_type_of(N))){if(Q=N.event,X=N.respond,Z=N.next,X&&(u=X),Z)return ee=Z,!w(Z)||(ne=Ue(Z),ee=We(ne,j(a,c)))?[2,{v:(te=E(ee,A(t))).length>0?Ke(n,t,te,Q||c,a,u,i):(n.logger.warn("Branch target not found: ".concat(JSON.stringify(Z))),{event:null,respond:u})}]:(Q&&(c=Q),[2,"continue"]);Q&&(c=Q)}return x&&m&&S(m,x.key,c,x.ttl),(!N||"object"==(void 0===N?"undefined":_type_of(N))&&!N.next)&&v.config.next&&w(v.config.next)?(re=v.config.next,oe=Ue(re),(ae=We(oe,j(a,c)))&&(se=E(ae,A(t))).length>0?[2,{v:Ke(n,t,se,c,a,u,i)}]:[2,{v:{event:c,respond:u}}]):[2]}})},v=r[Symbol.iterator](),h.label=2;case 2:return(l=(g=v.next()).done)?[3,5]:[5,_ts_values(_())];case 3:if("object"===_type_of(y=h.sent()))return[2,y.v];h.label=4;case 4:return l=!0,[3,2];case 5:return[3,8];case 6:return b=h.sent(),f=!0,d=b,[3,8];case 7:try{l||null==v.return||v.return()}finally{if(f)throw d}return[7];case 8:return[2,{event:c,respond:u}]}})})()}var ze,Je=function(e){return _async_to_generator(function(){var n,t;return _ts_generator(this,function(r){return t=function(){return function(t){return _async_to_generator(function(){var r,o;return _ts_generator(this,function(a){switch(a.label){case 0:return window.CookieFirst={consent:t},n?[3,2]:[4,ee(_object_spread_props(_object_spread({},e),{run:null===(r=e.run)||void 0===r||r}))];case 1:o=a.sent(),n={collector:o.collector,elb:o.elb},a.label=2;case 2:return window.dispatchEvent(new Event("cf_init")),[2]}})})()}},[2,{get flow(){return n},trigger:t}]})})()},Ve=function(e,n){e&&"object"===(void 0===e?"undefined":_type_of(e))&&(n.window.CookieFirst={consent:e})},Ye={necessary:"functional",functional:"functional",performance:"analytics",advertising:"marketing"},$e=function(e){return _async_to_generator(function(){var n,t,r,o,a,s,i,c,u,l,f,d,_,v,g,p,y,b;return _ts_generator(this,function(h){return i=e.config,c=e.env,u=c.elb,l=null!==(n=c.window)&&void 0!==n?n:void 0!==globalThis.window?globalThis.window:void 0,f={categoryMap:_object_spread({},Ye,null==i||null===(o=i.settings)||void 0===o?void 0:o.categoryMap),explicitOnly:null===(t=null==i||null===(a=i.settings)||void 0===a?void 0:a.explicitOnly)||void 0===t||t,globalName:null!==(r=null==i||null===(s=i.settings)||void 0===s?void 0:s.globalName)&&void 0!==r?r:"CookieFirst"},d={settings:f},l&&(p=function(e){if((!f.explicitOnly||e)&&e){var n={};Object.entries(e).forEach(function(e){var t,r,o=_sliced_to_array(e,2),a=o[0],s=o[1];if("boolean"==typeof s){var i=null!==(t=null===(r=f.categoryMap)||void 0===r?void 0:r[a])&&void 0!==t?t:a;n[i]=n[i]||s}}),Object.keys(n).length>0&&u("walker consent",n)}},y=null!==(g=f.globalName)&&void 0!==g?g:"CookieFirst",(null==(b=l[y])?void 0:b.consent)&&p(b.consent),_=function(){var e,n=l[y];p(null!==(e=null==n?void 0:n.consent)&&void 0!==e?e:null)},l.addEventListener("cf_init",_),v=function(e){p(e.detail)},l.addEventListener("cf_consent",v)),[2,{type:"cookiefirst",config:d,push:u,destroy:function(e){return _async_to_generator(function(){return _ts_generator(this,function(e){return l&&_&&l.removeEventListener("cf_init",_),l&&v&&l.removeEventListener("cf_consent",v),[2]})})()}}]})})()},Qe=$e;return ze=se,function(e,n,t,r){if(n&&"object"===(void 0===n?"undefined":_type_of(n))||"function"==typeof n){var o=!0,a=!1,s=void 0;try{for(var i,c=function(){var o=i.value;oe.call(e,o)||o===t||ne(e,o,{get:function(){return n[o]},enumerable:!(r=te(n,o))||r.enumerable})},u=re(n)[Symbol.iterator]();!(o=(i=u.next()).done);o=!0)c()}catch(e){a=!0,s=e}finally{try{o||null==u.return||u.return()}finally{if(a)throw s}}}return e}(ne({},"__esModule",{value:!0}),ze)}();
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/types/index.ts","../src/examples/inputs.ts","../src/examples/outputs.ts","../src/examples/env.ts","../src/examples/step.ts","../src/examples/trigger.ts"],"sourcesContent":["import type { Source, WalkerOS } from '@walkeros/core';\nimport type {\n Types,\n Settings,\n CookieFirstConsent,\n CookieFirstAPI,\n} from './types';\n\n// Export types for external usage\nexport * as SourceCookieFirst from './types';\n\n// Export examples\nexport * from './examples';\n\n/**\n * Default category mapping from CookieFirst to walkerOS consent groups.\n *\n * Maps CookieFirst's standard categories to walkerOS convention:\n * - necessary/functional → functional (essential)\n * - performance → analytics (measurement)\n * - advertising → marketing (ads)\n */\nexport const DEFAULT_CATEGORY_MAP: Record<string, string> = {\n necessary: 'functional',\n functional: 'functional',\n performance: 'analytics',\n advertising: 'marketing',\n};\n\n/**\n * CookieFirst consent management source for walkerOS.\n *\n * This source listens to CookieFirst CMP events and translates\n * consent states to walkerOS consent commands.\n *\n * @example\n * ```typescript\n * import { sourceCookieFirst } from '@walkeros/web-source-cmp-cookiefirst';\n *\n * await startFlow({\n * sources: {\n * consent: {\n * code: sourceCookieFirst,\n * config: {\n * settings: {\n * categoryMap: {\n * performance: 'statistics', // Custom mapping\n * },\n * },\n * },\n * },\n * },\n * });\n * ```\n */\nexport const sourceCookieFirst: Source.Init<Types> = async (context) => {\n const { config, env } = context;\n const { elb } = env;\n\n // Resolve window with fallback to globalThis\n const actualWindow =\n env.window ??\n (typeof globalThis.window !== 'undefined' ? globalThis.window : undefined);\n\n // Merge user settings with defaults\n const settings: Settings = {\n categoryMap: { ...DEFAULT_CATEGORY_MAP, ...config?.settings?.categoryMap },\n explicitOnly: config?.settings?.explicitOnly ?? true,\n globalName: config?.settings?.globalName ?? 'CookieFirst',\n };\n\n const fullConfig: Source.Config<Types> = { settings };\n\n // Track listener references for cleanup\n let initListener: (() => void) | undefined;\n let consentListener: ((e: Event) => void) | undefined;\n\n // Only setup if in browser environment\n if (actualWindow) {\n /**\n * Handle consent state from CookieFirst.\n * Maps CookieFirst categories to walkerOS consent groups and calls elb.\n *\n * When multiple CookieFirst categories map to the same walkerOS group,\n * uses OR logic: if ANY category is true, the group is true.\n */\n const handleConsent = (consent: CookieFirstConsent | null) => {\n // Skip if explicitOnly and no explicit consent given\n if (settings.explicitOnly && !consent) return;\n if (!consent) return;\n\n // Map CookieFirst categories to walkerOS consent groups\n // Use OR logic: if ANY source category is true, the target group is true\n const state: WalkerOS.Consent = {};\n Object.entries(consent).forEach(([category, value]) => {\n if (typeof value !== 'boolean') return;\n const mapped = settings.categoryMap?.[category] ?? category;\n // OR logic: once true, stays true\n state[mapped] = state[mapped] || value;\n });\n\n // Only call if we have consent state to report\n if (Object.keys(state).length > 0) {\n elb('walker consent', state);\n }\n };\n\n const globalName = settings.globalName ?? 'CookieFirst';\n const cmp = actualWindow[globalName] as CookieFirstAPI | undefined;\n\n // Process existing consent if CMP already loaded\n if (cmp?.consent) {\n handleConsent(cmp.consent);\n }\n\n // Listen for CMP initialization\n initListener = () => {\n const cmp = actualWindow[globalName] as CookieFirstAPI | undefined;\n handleConsent(cmp?.consent ?? null);\n };\n actualWindow.addEventListener('cf_init', initListener);\n\n // Listen for consent changes\n consentListener = (e: Event) => {\n const customEvent = e as CustomEvent<CookieFirstConsent>;\n handleConsent(customEvent.detail);\n };\n actualWindow.addEventListener('cf_consent', consentListener);\n }\n\n return {\n type: 'cookiefirst',\n config: fullConfig,\n push: elb,\n destroy: async (_context) => {\n // Remove event listeners on cleanup\n if (actualWindow && initListener) {\n actualWindow.removeEventListener('cf_init', initListener);\n }\n if (actualWindow && consentListener) {\n actualWindow.removeEventListener('cf_consent', consentListener);\n }\n },\n };\n};\n\nexport default sourceCookieFirst;\n","import type { Source, Elb } from '@walkeros/core';\n\n/**\n * CookieFirst consent object structure\n */\nexport interface CookieFirstConsent {\n necessary?: boolean;\n functional?: boolean;\n performance?: boolean;\n advertising?: boolean;\n [category: string]: boolean | undefined;\n}\n\n/**\n * CookieFirst global API interface\n */\nexport interface CookieFirstAPI {\n consent: CookieFirstConsent | null;\n}\n\ndeclare global {\n interface Window {\n CookieFirst?: CookieFirstAPI;\n [key: string]: CookieFirstAPI | unknown;\n }\n\n interface WindowEventMap {\n cf_init: Event;\n cf_consent: CustomEvent<CookieFirstConsent>;\n }\n}\n\n/**\n * Settings for CookieFirst source\n */\nexport interface Settings {\n /**\n * Map CookieFirst categories to walkerOS consent groups.\n * Keys: CookieFirst category names\n * Values: walkerOS consent group names\n *\n * Default maps to standard walkerOS groups:\n * - necessary → functional\n * - functional → functional\n * - performance → analytics\n * - advertising → marketing\n */\n categoryMap?: Record<string, string>;\n\n /**\n * Only process explicit consent (user made a choice).\n * When true: Ignores consent if CookieFirst.consent is null\n * When false: Processes any consent state including defaults\n *\n * Default: true\n */\n explicitOnly?: boolean;\n\n /**\n * Custom name for window.CookieFirst object.\n * Some implementations use a different global name.\n *\n * Default: 'CookieFirst'\n */\n globalName?: string;\n}\n\n/**\n * User input settings (all optional)\n */\nexport type InitSettings = Partial<Settings>;\n\n/**\n * No mapping configuration for this source\n */\nexport interface Mapping {}\n\n/**\n * Push function type - uses elb for consent commands\n */\nexport type Push = Elb.Fn;\n\n/**\n * Environment interface for CookieFirst source\n */\nexport interface Env extends Source.BaseEnv {\n window?: Window & typeof globalThis;\n}\n\n/**\n * Types bundle for CookieFirst source\n */\nexport type Types = Source.Types<Settings, Mapping, Push, Env, InitSettings>;\n\n/**\n * Config type alias\n */\nexport type Config = Source.Config<Types>;\n","import type { CookieFirstConsent } from '../types';\n\n/**\n * Example CookieFirst consent inputs.\n *\n * These represent real consent states from CookieFirst CMP.\n */\n\n/**\n * Full consent - user accepted all categories\n */\nexport const fullConsent: CookieFirstConsent = {\n necessary: true,\n functional: true,\n performance: true,\n advertising: true,\n};\n\n/**\n * Partial consent - user accepted only necessary and functional\n */\nexport const partialConsent: CookieFirstConsent = {\n necessary: true,\n functional: true,\n performance: false,\n advertising: false,\n};\n\n/**\n * Minimal consent - user accepted only necessary (required)\n */\nexport const minimalConsent: CookieFirstConsent = {\n necessary: true,\n functional: false,\n performance: false,\n advertising: false,\n};\n\n/**\n * No consent - user hasn't made a choice yet\n * CookieFirst returns null when no explicit choice has been made\n */\nexport const noConsent: CookieFirstConsent | null = null;\n\n/**\n * Analytics only - user accepted performance tracking\n */\nexport const analyticsOnlyConsent: CookieFirstConsent = {\n necessary: true,\n functional: false,\n performance: true,\n advertising: false,\n};\n\n/**\n * Marketing only - user accepted advertising\n */\nexport const marketingOnlyConsent: CookieFirstConsent = {\n necessary: true,\n functional: false,\n performance: false,\n advertising: true,\n};\n","import type { WalkerOS } from '@walkeros/core';\n\n/**\n * Expected walkerOS consent outputs.\n *\n * These represent the consent state after mapping CookieFirst categories\n * to walkerOS consent groups using the default category map.\n */\n\n/**\n * Full consent mapped to walkerOS groups\n * (necessary + functional → functional, performance → analytics, advertising → marketing)\n */\nexport const fullConsentMapped: WalkerOS.Consent = {\n functional: true,\n analytics: true,\n marketing: true,\n};\n\n/**\n * Partial consent mapped to walkerOS groups\n */\nexport const partialConsentMapped: WalkerOS.Consent = {\n functional: true,\n analytics: false,\n marketing: false,\n};\n\n/**\n * Minimal consent mapped to walkerOS groups\n */\nexport const minimalConsentMapped: WalkerOS.Consent = {\n functional: true,\n analytics: false,\n marketing: false,\n};\n\n/**\n * Analytics only consent mapped to walkerOS groups\n * Note: functional is true because necessary=true maps to functional\n * (OR logic: if ANY source category is true, target group is true)\n */\nexport const analyticsOnlyMapped: WalkerOS.Consent = {\n functional: true,\n analytics: true,\n marketing: false,\n};\n\n/**\n * Marketing only consent mapped to walkerOS groups\n * Note: functional is true because necessary=true maps to functional\n * (OR logic: if ANY source category is true, target group is true)\n */\nexport const marketingOnlyMapped: WalkerOS.Consent = {\n functional: true,\n analytics: false,\n marketing: true,\n};\n","import type { Source, Elb, Logger } from '@walkeros/core';\nimport type { CookieFirstAPI, CookieFirstConsent } from '../types';\n\n/**\n * Example environment configurations for CookieFirst source testing.\n *\n * These provide mock structures for testing consent handling\n * without requiring a real browser environment.\n */\n\n// Simple no-op function for mocking\nconst noop = () => {};\n\n/**\n * Create a properly typed elb/push function mock that returns a promise with PushResult\n */\nexport const createMockElbFn = (): Elb.Fn => {\n const fn = (() =>\n Promise.resolve({\n ok: true,\n })) as Elb.Fn;\n return fn;\n};\n\n/**\n * Simple no-op logger for demo purposes\n */\nexport const noopLogger: Logger.Instance = {\n error: noop,\n warn: noop,\n info: noop,\n debug: noop,\n throw: (message: string | Error) => {\n throw typeof message === 'string' ? new Error(message) : message;\n },\n json: noop,\n scope: () => noopLogger,\n};\n\n/**\n * Environment interface for CookieFirst source\n */\ninterface CookieFirstEnv extends Source.BaseEnv {\n window?: typeof window;\n}\n\n/**\n * Create a mock CookieFirst API object\n */\nexport const createMockCookieFirstAPI = (\n consent: CookieFirstConsent | null = null,\n): CookieFirstAPI => ({\n consent,\n});\n\n/**\n * Create a mock window object with CookieFirst\n */\nexport const createMockWindow = (\n consent: CookieFirstConsent | null = null,\n): Partial<Window> & { CookieFirst: CookieFirstAPI } => ({\n CookieFirst: createMockCookieFirstAPI(consent),\n addEventListener: noop,\n removeEventListener: noop,\n});\n\n/**\n * Standard mock environment for testing CookieFirst source\n *\n * Use this for testing consent handling without requiring\n * a real browser environment.\n */\nexport const mockEnv: CookieFirstEnv = {\n get push() {\n return createMockElbFn();\n },\n get command() {\n return createMockElbFn();\n },\n get elb() {\n return createMockElbFn();\n },\n get window() {\n return createMockWindow() as unknown as typeof window;\n },\n logger: noopLogger,\n};\n","import type { Flow } from '@walkeros/core';\n\nexport const fullConsent: Flow.StepExample = {\n title: 'Full consent',\n description:\n 'CookieFirst reports all categories granted and the source forwards a walker consent command with all groups true.',\n trigger: { type: 'consent' },\n in: {\n necessary: true,\n functional: true,\n performance: true,\n advertising: true,\n },\n out: [\n [\n 'elb',\n 'walker consent',\n {\n functional: true,\n analytics: true,\n marketing: true,\n },\n ],\n ],\n};\n\nexport const partialConsent: Flow.StepExample = {\n title: 'Partial consent',\n description:\n 'A partial CookieFirst grant maps analytics and marketing to false in the emitted walker consent command.',\n trigger: { type: 'consent' },\n in: {\n necessary: true,\n functional: true,\n performance: false,\n advertising: false,\n },\n out: [\n [\n 'elb',\n 'walker consent',\n {\n functional: true,\n analytics: false,\n marketing: false,\n },\n ],\n ],\n};\n\nexport const categoryMapOverride: Flow.StepExample = {\n title: 'Category map override',\n description:\n 'Custom categoryMap remaps performance to statistics instead of analytics',\n trigger: { type: 'consent' },\n in: {\n necessary: true,\n functional: false,\n performance: true,\n advertising: false,\n },\n mapping: {\n settings: {\n categoryMap: {\n performance: 'statistics',\n },\n },\n },\n out: [\n [\n 'elb',\n 'walker consent',\n {\n functional: true,\n statistics: true,\n marketing: false,\n },\n ],\n ],\n};\n\nexport const cfInitDetection: Flow.StepExample = {\n title: 'cf_init detection',\n description: 'CMP detected via cf_init CustomEvent (primary detection path)',\n trigger: { type: 'consent' },\n in: {\n necessary: true,\n functional: false,\n performance: false,\n advertising: true,\n },\n out: [\n [\n 'elb',\n 'walker consent',\n {\n functional: true,\n analytics: false,\n marketing: true,\n },\n ],\n ],\n};\n","import type { Trigger, Collector } from '@walkeros/core';\nimport { startFlow } from '@walkeros/collector';\n\ninterface CookieFirstConsent {\n necessary?: boolean;\n functional?: boolean;\n performance?: boolean;\n advertising?: boolean;\n [category: string]: boolean | undefined;\n}\n\nconst createTrigger: Trigger.CreateFn<CookieFirstConsent, void> = async (\n config: Collector.InitConfig,\n) => {\n let flow: Trigger.FlowHandle | undefined;\n\n const trigger: Trigger.Fn<CookieFirstConsent, void> =\n () => async (content: CookieFirstConsent) => {\n // Pre-init: set CookieFirst global (source reads this during init)\n (window as unknown as Record<string, unknown>).CookieFirst = {\n consent: content,\n };\n\n // Lazy startFlow — source reads global + registers event listeners\n if (!flow) {\n const result = await startFlow({ ...config, run: config.run ?? true });\n flow = { collector: result.collector, elb: result.elb };\n }\n\n // Post-init: dispatch cf_init to trigger consent processing\n window.dispatchEvent(new Event('cf_init'));\n };\n\n return {\n get flow() {\n return flow;\n },\n trigger,\n };\n};\n\n/** Sets window.CookieFirst.consent before source init (legacy). */\nconst trigger = (input: unknown, env: Record<string, unknown>): void => {\n if (!input || typeof input !== 'object') return;\n (env.window as Record<string, unknown>).CookieFirst = { consent: input };\n};\n\nexport { createTrigger, trigger };\n"],"mappings":"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","names":["fullConsent","partialConsent","trigger","_a","_b","cmp"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/types/index.ts","../src/examples/inputs.ts","../src/examples/outputs.ts","../src/examples/env.ts","../src/examples/step.ts","../src/examples/trigger.ts"],"sourcesContent":["import type { Source, WalkerOS } from '@walkeros/core';\nimport type {\n Types,\n Settings,\n CookieFirstConsent,\n CookieFirstAPI,\n} from './types';\n\n// Export types for external usage\nexport * as SourceCookieFirst from './types';\n\n// Export examples\nexport * from './examples';\n\n/**\n * Default category mapping from CookieFirst to walkerOS consent groups.\n *\n * Maps CookieFirst's standard categories to walkerOS convention:\n * - necessary/functional → functional (essential)\n * - performance → analytics (measurement)\n * - advertising → marketing (ads)\n */\nexport const DEFAULT_CATEGORY_MAP: Record<string, string> = {\n necessary: 'functional',\n functional: 'functional',\n performance: 'analytics',\n advertising: 'marketing',\n};\n\n/**\n * CookieFirst consent management source for walkerOS.\n *\n * This source listens to CookieFirst CMP events and translates\n * consent states to walkerOS consent commands.\n *\n * @example\n * ```typescript\n * import { sourceCookieFirst } from '@walkeros/web-source-cmp-cookiefirst';\n *\n * await startFlow({\n * sources: {\n * consent: {\n * code: sourceCookieFirst,\n * config: {\n * settings: {\n * categoryMap: {\n * performance: 'statistics', // Custom mapping\n * },\n * },\n * },\n * },\n * },\n * });\n * ```\n */\nexport const sourceCookieFirst: Source.Init<Types> = async (context) => {\n const { config, env } = context;\n const { elb } = env;\n\n // Resolve window with fallback to globalThis\n const actualWindow =\n env.window ??\n (typeof globalThis.window !== 'undefined' ? globalThis.window : undefined);\n\n // Merge user settings with defaults\n const settings: Settings = {\n categoryMap: { ...DEFAULT_CATEGORY_MAP, ...config?.settings?.categoryMap },\n explicitOnly: config?.settings?.explicitOnly ?? true,\n globalName: config?.settings?.globalName ?? 'CookieFirst',\n };\n\n const fullConfig: Source.Config<Types> = { settings };\n\n // Track listener references for cleanup\n let initListener: (() => void) | undefined;\n let consentListener: ((e: Event) => void) | undefined;\n\n // Only setup if in browser environment\n if (actualWindow) {\n /**\n * Handle consent state from CookieFirst.\n * Maps CookieFirst categories to walkerOS consent groups and calls elb.\n *\n * When multiple CookieFirst categories map to the same walkerOS group,\n * uses OR logic: if ANY category is true, the group is true.\n */\n const handleConsent = (consent: CookieFirstConsent | null) => {\n // Skip if explicitOnly and no explicit consent given\n if (settings.explicitOnly && !consent) return;\n if (!consent) return;\n\n // Map CookieFirst categories to walkerOS consent groups\n // Use OR logic: if ANY source category is true, the target group is true\n const state: WalkerOS.Consent = {};\n Object.entries(consent).forEach(([category, value]) => {\n if (typeof value !== 'boolean') return;\n const mapped = settings.categoryMap?.[category] ?? category;\n // OR logic: once true, stays true\n state[mapped] = state[mapped] || value;\n });\n\n // Only call if we have consent state to report\n if (Object.keys(state).length > 0) {\n elb('walker consent', state);\n }\n };\n\n const globalName = settings.globalName ?? 'CookieFirst';\n const cmp = actualWindow[globalName] as CookieFirstAPI | undefined;\n\n // Process existing consent if CMP already loaded\n if (cmp?.consent) {\n handleConsent(cmp.consent);\n }\n\n // Listen for CMP initialization\n initListener = () => {\n const cmp = actualWindow[globalName] as CookieFirstAPI | undefined;\n handleConsent(cmp?.consent ?? null);\n };\n actualWindow.addEventListener('cf_init', initListener);\n\n // Listen for consent changes\n consentListener = (e: Event) => {\n const customEvent = e as CustomEvent<CookieFirstConsent>;\n handleConsent(customEvent.detail);\n };\n actualWindow.addEventListener('cf_consent', consentListener);\n }\n\n return {\n type: 'cookiefirst',\n config: fullConfig,\n push: elb,\n destroy: async (_context) => {\n // Remove event listeners on cleanup\n if (actualWindow && initListener) {\n actualWindow.removeEventListener('cf_init', initListener);\n }\n if (actualWindow && consentListener) {\n actualWindow.removeEventListener('cf_consent', consentListener);\n }\n },\n };\n};\n\nexport default sourceCookieFirst;\n","import type { Source, Elb } from '@walkeros/core';\n\ndeclare module '@walkeros/core' {\n interface SourceMap {\n cookiefirst: { type: 'cookiefirst'; platform?: 'web' };\n }\n}\n\n/**\n * CookieFirst consent object structure\n */\nexport interface CookieFirstConsent {\n necessary?: boolean;\n functional?: boolean;\n performance?: boolean;\n advertising?: boolean;\n [category: string]: boolean | undefined;\n}\n\n/**\n * CookieFirst global API interface\n */\nexport interface CookieFirstAPI {\n consent: CookieFirstConsent | null;\n}\n\ndeclare global {\n interface Window {\n CookieFirst?: CookieFirstAPI;\n [key: string]: CookieFirstAPI | unknown;\n }\n\n interface WindowEventMap {\n cf_init: Event;\n cf_consent: CustomEvent<CookieFirstConsent>;\n }\n}\n\n/**\n * Settings for CookieFirst source\n */\nexport interface Settings {\n /**\n * Map CookieFirst categories to walkerOS consent groups.\n * Keys: CookieFirst category names\n * Values: walkerOS consent group names\n *\n * Default maps to standard walkerOS groups:\n * - necessary → functional\n * - functional → functional\n * - performance → analytics\n * - advertising → marketing\n */\n categoryMap?: Record<string, string>;\n\n /**\n * Only process explicit consent (user made a choice).\n * When true: Ignores consent if CookieFirst.consent is null\n * When false: Processes any consent state including defaults\n *\n * Default: true\n */\n explicitOnly?: boolean;\n\n /**\n * Custom name for window.CookieFirst object.\n * Some implementations use a different global name.\n *\n * Default: 'CookieFirst'\n */\n globalName?: string;\n}\n\n/**\n * User input settings (all optional)\n */\nexport type InitSettings = Partial<Settings>;\n\n/**\n * No mapping configuration for this source\n */\nexport interface Mapping {}\n\n/**\n * Push function type - uses elb for consent commands\n */\nexport type Push = Elb.Fn;\n\n/**\n * Environment interface for CookieFirst source\n */\nexport interface Env extends Source.BaseEnv {\n window?: Window & typeof globalThis;\n}\n\n/**\n * Types bundle for CookieFirst source\n */\nexport type Types = Source.Types<Settings, Mapping, Push, Env, InitSettings>;\n\n/**\n * Config type alias\n */\nexport type Config = Source.Config<Types>;\n","import type { CookieFirstConsent } from '../types';\n\n/**\n * Example CookieFirst consent inputs.\n *\n * These represent real consent states from CookieFirst CMP.\n */\n\n/**\n * Full consent - user accepted all categories\n */\nexport const fullConsent: CookieFirstConsent = {\n necessary: true,\n functional: true,\n performance: true,\n advertising: true,\n};\n\n/**\n * Partial consent - user accepted only necessary and functional\n */\nexport const partialConsent: CookieFirstConsent = {\n necessary: true,\n functional: true,\n performance: false,\n advertising: false,\n};\n\n/**\n * Minimal consent - user accepted only necessary (required)\n */\nexport const minimalConsent: CookieFirstConsent = {\n necessary: true,\n functional: false,\n performance: false,\n advertising: false,\n};\n\n/**\n * No consent - user hasn't made a choice yet\n * CookieFirst returns null when no explicit choice has been made\n */\nexport const noConsent: CookieFirstConsent | null = null;\n\n/**\n * Analytics only - user accepted performance tracking\n */\nexport const analyticsOnlyConsent: CookieFirstConsent = {\n necessary: true,\n functional: false,\n performance: true,\n advertising: false,\n};\n\n/**\n * Marketing only - user accepted advertising\n */\nexport const marketingOnlyConsent: CookieFirstConsent = {\n necessary: true,\n functional: false,\n performance: false,\n advertising: true,\n};\n","import type { WalkerOS } from '@walkeros/core';\n\n/**\n * Expected walkerOS consent outputs.\n *\n * These represent the consent state after mapping CookieFirst categories\n * to walkerOS consent groups using the default category map.\n */\n\n/**\n * Full consent mapped to walkerOS groups\n * (necessary + functional → functional, performance → analytics, advertising → marketing)\n */\nexport const fullConsentMapped: WalkerOS.Consent = {\n functional: true,\n analytics: true,\n marketing: true,\n};\n\n/**\n * Partial consent mapped to walkerOS groups\n */\nexport const partialConsentMapped: WalkerOS.Consent = {\n functional: true,\n analytics: false,\n marketing: false,\n};\n\n/**\n * Minimal consent mapped to walkerOS groups\n */\nexport const minimalConsentMapped: WalkerOS.Consent = {\n functional: true,\n analytics: false,\n marketing: false,\n};\n\n/**\n * Analytics only consent mapped to walkerOS groups\n * Note: functional is true because necessary=true maps to functional\n * (OR logic: if ANY source category is true, target group is true)\n */\nexport const analyticsOnlyMapped: WalkerOS.Consent = {\n functional: true,\n analytics: true,\n marketing: false,\n};\n\n/**\n * Marketing only consent mapped to walkerOS groups\n * Note: functional is true because necessary=true maps to functional\n * (OR logic: if ANY source category is true, target group is true)\n */\nexport const marketingOnlyMapped: WalkerOS.Consent = {\n functional: true,\n analytics: false,\n marketing: true,\n};\n","import type { Source, Elb, Logger } from '@walkeros/core';\nimport type { CookieFirstAPI, CookieFirstConsent } from '../types';\n\n/**\n * Example environment configurations for CookieFirst source testing.\n *\n * These provide mock structures for testing consent handling\n * without requiring a real browser environment.\n */\n\n// Simple no-op function for mocking\nconst noop = () => {};\n\n/**\n * Create a properly typed elb/push function mock that returns a promise with PushResult\n */\nexport const createMockElbFn = (): Elb.Fn => {\n const fn = (() =>\n Promise.resolve({\n ok: true,\n })) as Elb.Fn;\n return fn;\n};\n\n/**\n * Simple no-op logger for demo purposes\n */\nexport const noopLogger: Logger.Instance = {\n error: noop,\n warn: noop,\n info: noop,\n debug: noop,\n throw: (message: string | Error) => {\n throw typeof message === 'string' ? new Error(message) : message;\n },\n json: noop,\n scope: () => noopLogger,\n};\n\n/**\n * Environment interface for CookieFirst source\n */\ninterface CookieFirstEnv extends Source.BaseEnv {\n window?: typeof window;\n}\n\n/**\n * Create a mock CookieFirst API object\n */\nexport const createMockCookieFirstAPI = (\n consent: CookieFirstConsent | null = null,\n): CookieFirstAPI => ({\n consent,\n});\n\n/**\n * Create a mock window object with CookieFirst\n */\nexport const createMockWindow = (\n consent: CookieFirstConsent | null = null,\n): Partial<Window> & { CookieFirst: CookieFirstAPI } => ({\n CookieFirst: createMockCookieFirstAPI(consent),\n addEventListener: noop,\n removeEventListener: noop,\n});\n\n/**\n * Standard mock environment for testing CookieFirst source\n *\n * Use this for testing consent handling without requiring\n * a real browser environment.\n */\nexport const mockEnv: CookieFirstEnv = {\n get push() {\n return createMockElbFn();\n },\n get command() {\n return createMockElbFn();\n },\n get elb() {\n return createMockElbFn();\n },\n get window() {\n return createMockWindow() as unknown as typeof window;\n },\n logger: noopLogger,\n};\n","import type { Flow } from '@walkeros/core';\n\nexport const fullConsent: Flow.StepExample = {\n title: 'Full consent',\n description:\n 'CookieFirst reports all categories granted and the source forwards a walker consent command with all groups true.',\n trigger: { type: 'consent' },\n in: {\n necessary: true,\n functional: true,\n performance: true,\n advertising: true,\n },\n out: [\n [\n 'elb',\n 'walker consent',\n {\n functional: true,\n analytics: true,\n marketing: true,\n },\n ],\n ],\n};\n\nexport const partialConsent: Flow.StepExample = {\n title: 'Partial consent',\n description:\n 'A partial CookieFirst grant maps analytics and marketing to false in the emitted walker consent command.',\n trigger: { type: 'consent' },\n in: {\n necessary: true,\n functional: true,\n performance: false,\n advertising: false,\n },\n out: [\n [\n 'elb',\n 'walker consent',\n {\n functional: true,\n analytics: false,\n marketing: false,\n },\n ],\n ],\n};\n\nexport const categoryMapOverride: Flow.StepExample = {\n title: 'Category map override',\n description:\n 'Custom categoryMap remaps performance to statistics instead of analytics',\n trigger: { type: 'consent' },\n in: {\n necessary: true,\n functional: false,\n performance: true,\n advertising: false,\n },\n mapping: {\n settings: {\n categoryMap: {\n performance: 'statistics',\n },\n },\n },\n out: [\n [\n 'elb',\n 'walker consent',\n {\n functional: true,\n statistics: true,\n marketing: false,\n },\n ],\n ],\n};\n\nexport const cfInitDetection: Flow.StepExample = {\n title: 'cf_init detection',\n description: 'CMP detected via cf_init CustomEvent (primary detection path)',\n trigger: { type: 'consent' },\n in: {\n necessary: true,\n functional: false,\n performance: false,\n advertising: true,\n },\n out: [\n [\n 'elb',\n 'walker consent',\n {\n functional: true,\n analytics: false,\n marketing: true,\n },\n ],\n ],\n};\n","import type { Trigger, Collector } from '@walkeros/core';\nimport { startFlow } from '@walkeros/collector';\n\ninterface CookieFirstConsent {\n necessary?: boolean;\n functional?: boolean;\n performance?: boolean;\n advertising?: boolean;\n [category: string]: boolean | undefined;\n}\n\nconst createTrigger: Trigger.CreateFn<CookieFirstConsent, void> = async (\n config: Collector.InitConfig,\n) => {\n let flow: Trigger.FlowHandle | undefined;\n\n const trigger: Trigger.Fn<CookieFirstConsent, void> =\n () => async (content: CookieFirstConsent) => {\n // Pre-init: set CookieFirst global (source reads this during init)\n (window as unknown as Record<string, unknown>).CookieFirst = {\n consent: content,\n };\n\n // Lazy startFlow — source reads global + registers event listeners\n if (!flow) {\n const result = await startFlow({ ...config, run: config.run ?? true });\n flow = { collector: result.collector, elb: result.elb };\n }\n\n // Post-init: dispatch cf_init to trigger consent processing\n window.dispatchEvent(new Event('cf_init'));\n };\n\n return {\n get flow() {\n return flow;\n },\n trigger,\n };\n};\n\n/** Sets window.CookieFirst.consent before source init (legacy). */\nconst trigger = (input: unknown, env: Record<string, unknown>): void => {\n if (!input || typeof input !== 'object') return;\n (env.window as Record<string, unknown>).CookieFirst = { consent: input };\n};\n\nexport { createTrigger, trigger };\n"],"mappings":"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","names":["fullConsent","partialConsent","trigger","_a","_b","cmp"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/types/index.ts","../src/examples/inputs.ts","../src/examples/outputs.ts","../src/examples/env.ts","../src/examples/step.ts","../src/examples/trigger.ts","../src/index.ts"],"sourcesContent":["import type { Source, Elb } from '@walkeros/core';\n\n/**\n * CookieFirst consent object structure\n */\nexport interface CookieFirstConsent {\n necessary?: boolean;\n functional?: boolean;\n performance?: boolean;\n advertising?: boolean;\n [category: string]: boolean | undefined;\n}\n\n/**\n * CookieFirst global API interface\n */\nexport interface CookieFirstAPI {\n consent: CookieFirstConsent | null;\n}\n\ndeclare global {\n interface Window {\n CookieFirst?: CookieFirstAPI;\n [key: string]: CookieFirstAPI | unknown;\n }\n\n interface WindowEventMap {\n cf_init: Event;\n cf_consent: CustomEvent<CookieFirstConsent>;\n }\n}\n\n/**\n * Settings for CookieFirst source\n */\nexport interface Settings {\n /**\n * Map CookieFirst categories to walkerOS consent groups.\n * Keys: CookieFirst category names\n * Values: walkerOS consent group names\n *\n * Default maps to standard walkerOS groups:\n * - necessary → functional\n * - functional → functional\n * - performance → analytics\n * - advertising → marketing\n */\n categoryMap?: Record<string, string>;\n\n /**\n * Only process explicit consent (user made a choice).\n * When true: Ignores consent if CookieFirst.consent is null\n * When false: Processes any consent state including defaults\n *\n * Default: true\n */\n explicitOnly?: boolean;\n\n /**\n * Custom name for window.CookieFirst object.\n * Some implementations use a different global name.\n *\n * Default: 'CookieFirst'\n */\n globalName?: string;\n}\n\n/**\n * User input settings (all optional)\n */\nexport type InitSettings = Partial<Settings>;\n\n/**\n * No mapping configuration for this source\n */\nexport interface Mapping {}\n\n/**\n * Push function type - uses elb for consent commands\n */\nexport type Push = Elb.Fn;\n\n/**\n * Environment interface for CookieFirst source\n */\nexport interface Env extends Source.BaseEnv {\n window?: Window & typeof globalThis;\n}\n\n/**\n * Types bundle for CookieFirst source\n */\nexport type Types = Source.Types<Settings, Mapping, Push, Env, InitSettings>;\n\n/**\n * Config type alias\n */\nexport type Config = Source.Config<Types>;\n","import type { CookieFirstConsent } from '../types';\n\n/**\n * Example CookieFirst consent inputs.\n *\n * These represent real consent states from CookieFirst CMP.\n */\n\n/**\n * Full consent - user accepted all categories\n */\nexport const fullConsent: CookieFirstConsent = {\n necessary: true,\n functional: true,\n performance: true,\n advertising: true,\n};\n\n/**\n * Partial consent - user accepted only necessary and functional\n */\nexport const partialConsent: CookieFirstConsent = {\n necessary: true,\n functional: true,\n performance: false,\n advertising: false,\n};\n\n/**\n * Minimal consent - user accepted only necessary (required)\n */\nexport const minimalConsent: CookieFirstConsent = {\n necessary: true,\n functional: false,\n performance: false,\n advertising: false,\n};\n\n/**\n * No consent - user hasn't made a choice yet\n * CookieFirst returns null when no explicit choice has been made\n */\nexport const noConsent: CookieFirstConsent | null = null;\n\n/**\n * Analytics only - user accepted performance tracking\n */\nexport const analyticsOnlyConsent: CookieFirstConsent = {\n necessary: true,\n functional: false,\n performance: true,\n advertising: false,\n};\n\n/**\n * Marketing only - user accepted advertising\n */\nexport const marketingOnlyConsent: CookieFirstConsent = {\n necessary: true,\n functional: false,\n performance: false,\n advertising: true,\n};\n","import type { WalkerOS } from '@walkeros/core';\n\n/**\n * Expected walkerOS consent outputs.\n *\n * These represent the consent state after mapping CookieFirst categories\n * to walkerOS consent groups using the default category map.\n */\n\n/**\n * Full consent mapped to walkerOS groups\n * (necessary + functional → functional, performance → analytics, advertising → marketing)\n */\nexport const fullConsentMapped: WalkerOS.Consent = {\n functional: true,\n analytics: true,\n marketing: true,\n};\n\n/**\n * Partial consent mapped to walkerOS groups\n */\nexport const partialConsentMapped: WalkerOS.Consent = {\n functional: true,\n analytics: false,\n marketing: false,\n};\n\n/**\n * Minimal consent mapped to walkerOS groups\n */\nexport const minimalConsentMapped: WalkerOS.Consent = {\n functional: true,\n analytics: false,\n marketing: false,\n};\n\n/**\n * Analytics only consent mapped to walkerOS groups\n * Note: functional is true because necessary=true maps to functional\n * (OR logic: if ANY source category is true, target group is true)\n */\nexport const analyticsOnlyMapped: WalkerOS.Consent = {\n functional: true,\n analytics: true,\n marketing: false,\n};\n\n/**\n * Marketing only consent mapped to walkerOS groups\n * Note: functional is true because necessary=true maps to functional\n * (OR logic: if ANY source category is true, target group is true)\n */\nexport const marketingOnlyMapped: WalkerOS.Consent = {\n functional: true,\n analytics: false,\n marketing: true,\n};\n","import type { Source, Elb, Logger } from '@walkeros/core';\nimport type { CookieFirstAPI, CookieFirstConsent } from '../types';\n\n/**\n * Example environment configurations for CookieFirst source testing.\n *\n * These provide mock structures for testing consent handling\n * without requiring a real browser environment.\n */\n\n// Simple no-op function for mocking\nconst noop = () => {};\n\n/**\n * Create a properly typed elb/push function mock that returns a promise with PushResult\n */\nexport const createMockElbFn = (): Elb.Fn => {\n const fn = (() =>\n Promise.resolve({\n ok: true,\n })) as Elb.Fn;\n return fn;\n};\n\n/**\n * Simple no-op logger for demo purposes\n */\nexport const noopLogger: Logger.Instance = {\n error: noop,\n warn: noop,\n info: noop,\n debug: noop,\n throw: (message: string | Error) => {\n throw typeof message === 'string' ? new Error(message) : message;\n },\n json: noop,\n scope: () => noopLogger,\n};\n\n/**\n * Environment interface for CookieFirst source\n */\ninterface CookieFirstEnv extends Source.BaseEnv {\n window?: typeof window;\n}\n\n/**\n * Create a mock CookieFirst API object\n */\nexport const createMockCookieFirstAPI = (\n consent: CookieFirstConsent | null = null,\n): CookieFirstAPI => ({\n consent,\n});\n\n/**\n * Create a mock window object with CookieFirst\n */\nexport const createMockWindow = (\n consent: CookieFirstConsent | null = null,\n): Partial<Window> & { CookieFirst: CookieFirstAPI } => ({\n CookieFirst: createMockCookieFirstAPI(consent),\n addEventListener: noop,\n removeEventListener: noop,\n});\n\n/**\n * Standard mock environment for testing CookieFirst source\n *\n * Use this for testing consent handling without requiring\n * a real browser environment.\n */\nexport const mockEnv: CookieFirstEnv = {\n get push() {\n return createMockElbFn();\n },\n get command() {\n return createMockElbFn();\n },\n get elb() {\n return createMockElbFn();\n },\n get window() {\n return createMockWindow() as unknown as typeof window;\n },\n logger: noopLogger,\n};\n","import type { Flow } from '@walkeros/core';\n\nexport const fullConsent: Flow.StepExample = {\n title: 'Full consent',\n description:\n 'CookieFirst reports all categories granted and the source forwards a walker consent command with all groups true.',\n trigger: { type: 'consent' },\n in: {\n necessary: true,\n functional: true,\n performance: true,\n advertising: true,\n },\n out: [\n [\n 'elb',\n 'walker consent',\n {\n functional: true,\n analytics: true,\n marketing: true,\n },\n ],\n ],\n};\n\nexport const partialConsent: Flow.StepExample = {\n title: 'Partial consent',\n description:\n 'A partial CookieFirst grant maps analytics and marketing to false in the emitted walker consent command.',\n trigger: { type: 'consent' },\n in: {\n necessary: true,\n functional: true,\n performance: false,\n advertising: false,\n },\n out: [\n [\n 'elb',\n 'walker consent',\n {\n functional: true,\n analytics: false,\n marketing: false,\n },\n ],\n ],\n};\n\nexport const categoryMapOverride: Flow.StepExample = {\n title: 'Category map override',\n description:\n 'Custom categoryMap remaps performance to statistics instead of analytics',\n trigger: { type: 'consent' },\n in: {\n necessary: true,\n functional: false,\n performance: true,\n advertising: false,\n },\n mapping: {\n settings: {\n categoryMap: {\n performance: 'statistics',\n },\n },\n },\n out: [\n [\n 'elb',\n 'walker consent',\n {\n functional: true,\n statistics: true,\n marketing: false,\n },\n ],\n ],\n};\n\nexport const cfInitDetection: Flow.StepExample = {\n title: 'cf_init detection',\n description: 'CMP detected via cf_init CustomEvent (primary detection path)',\n trigger: { type: 'consent' },\n in: {\n necessary: true,\n functional: false,\n performance: false,\n advertising: true,\n },\n out: [\n [\n 'elb',\n 'walker consent',\n {\n functional: true,\n analytics: false,\n marketing: true,\n },\n ],\n ],\n};\n","import type { Trigger, Collector } from '@walkeros/core';\nimport { startFlow } from '@walkeros/collector';\n\ninterface CookieFirstConsent {\n necessary?: boolean;\n functional?: boolean;\n performance?: boolean;\n advertising?: boolean;\n [category: string]: boolean | undefined;\n}\n\nconst createTrigger: Trigger.CreateFn<CookieFirstConsent, void> = async (\n config: Collector.InitConfig,\n) => {\n let flow: Trigger.FlowHandle | undefined;\n\n const trigger: Trigger.Fn<CookieFirstConsent, void> =\n () => async (content: CookieFirstConsent) => {\n // Pre-init: set CookieFirst global (source reads this during init)\n (window as unknown as Record<string, unknown>).CookieFirst = {\n consent: content,\n };\n\n // Lazy startFlow — source reads global + registers event listeners\n if (!flow) {\n const result = await startFlow({ ...config, run: config.run ?? true });\n flow = { collector: result.collector, elb: result.elb };\n }\n\n // Post-init: dispatch cf_init to trigger consent processing\n window.dispatchEvent(new Event('cf_init'));\n };\n\n return {\n get flow() {\n return flow;\n },\n trigger,\n };\n};\n\n/** Sets window.CookieFirst.consent before source init (legacy). */\nconst trigger = (input: unknown, env: Record<string, unknown>): void => {\n if (!input || typeof input !== 'object') return;\n (env.window as Record<string, unknown>).CookieFirst = { consent: input };\n};\n\nexport { createTrigger, trigger };\n","import type { Source, WalkerOS } from '@walkeros/core';\nimport type {\n Types,\n Settings,\n CookieFirstConsent,\n CookieFirstAPI,\n} from './types';\n\n// Export types for external usage\nexport * as SourceCookieFirst from './types';\n\n// Export examples\nexport * from './examples';\n\n/**\n * Default category mapping from CookieFirst to walkerOS consent groups.\n *\n * Maps CookieFirst's standard categories to walkerOS convention:\n * - necessary/functional → functional (essential)\n * - performance → analytics (measurement)\n * - advertising → marketing (ads)\n */\nexport const DEFAULT_CATEGORY_MAP: Record<string, string> = {\n necessary: 'functional',\n functional: 'functional',\n performance: 'analytics',\n advertising: 'marketing',\n};\n\n/**\n * CookieFirst consent management source for walkerOS.\n *\n * This source listens to CookieFirst CMP events and translates\n * consent states to walkerOS consent commands.\n *\n * @example\n * ```typescript\n * import { sourceCookieFirst } from '@walkeros/web-source-cmp-cookiefirst';\n *\n * await startFlow({\n * sources: {\n * consent: {\n * code: sourceCookieFirst,\n * config: {\n * settings: {\n * categoryMap: {\n * performance: 'statistics', // Custom mapping\n * },\n * },\n * },\n * },\n * },\n * });\n * ```\n */\nexport const sourceCookieFirst: Source.Init<Types> = async (context) => {\n const { config, env } = context;\n const { elb } = env;\n\n // Resolve window with fallback to globalThis\n const actualWindow =\n env.window ??\n (typeof globalThis.window !== 'undefined' ? globalThis.window : undefined);\n\n // Merge user settings with defaults\n const settings: Settings = {\n categoryMap: { ...DEFAULT_CATEGORY_MAP, ...config?.settings?.categoryMap },\n explicitOnly: config?.settings?.explicitOnly ?? true,\n globalName: config?.settings?.globalName ?? 'CookieFirst',\n };\n\n const fullConfig: Source.Config<Types> = { settings };\n\n // Track listener references for cleanup\n let initListener: (() => void) | undefined;\n let consentListener: ((e: Event) => void) | undefined;\n\n // Only setup if in browser environment\n if (actualWindow) {\n /**\n * Handle consent state from CookieFirst.\n * Maps CookieFirst categories to walkerOS consent groups and calls elb.\n *\n * When multiple CookieFirst categories map to the same walkerOS group,\n * uses OR logic: if ANY category is true, the group is true.\n */\n const handleConsent = (consent: CookieFirstConsent | null) => {\n // Skip if explicitOnly and no explicit consent given\n if (settings.explicitOnly && !consent) return;\n if (!consent) return;\n\n // Map CookieFirst categories to walkerOS consent groups\n // Use OR logic: if ANY source category is true, the target group is true\n const state: WalkerOS.Consent = {};\n Object.entries(consent).forEach(([category, value]) => {\n if (typeof value !== 'boolean') return;\n const mapped = settings.categoryMap?.[category] ?? category;\n // OR logic: once true, stays true\n state[mapped] = state[mapped] || value;\n });\n\n // Only call if we have consent state to report\n if (Object.keys(state).length > 0) {\n elb('walker consent', state);\n }\n };\n\n const globalName = settings.globalName ?? 'CookieFirst';\n const cmp = actualWindow[globalName] as CookieFirstAPI | undefined;\n\n // Process existing consent if CMP already loaded\n if (cmp?.consent) {\n handleConsent(cmp.consent);\n }\n\n // Listen for CMP initialization\n initListener = () => {\n const cmp = actualWindow[globalName] as CookieFirstAPI | undefined;\n handleConsent(cmp?.consent ?? null);\n };\n actualWindow.addEventListener('cf_init', initListener);\n\n // Listen for consent changes\n consentListener = (e: Event) => {\n const customEvent = e as CustomEvent<CookieFirstConsent>;\n handleConsent(customEvent.detail);\n };\n actualWindow.addEventListener('cf_consent', consentListener);\n }\n\n return {\n type: 'cookiefirst',\n config: fullConfig,\n push: elb,\n destroy: async (_context) => {\n // Remove event listeners on cleanup\n if (actualWindow && initListener) {\n actualWindow.removeEventListener('cf_init', initListener);\n }\n if (actualWindow && consentListener) {\n actualWindow.removeEventListener('cf_consent', consentListener);\n }\n },\n };\n};\n\nexport default sourceCookieFirst;\n"],"mappings":"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","names":["fullConsent","partialConsent","trigger","_a","_b","cmp"]}
1
+ {"version":3,"sources":["../src/types/index.ts","../src/examples/inputs.ts","../src/examples/outputs.ts","../src/examples/env.ts","../src/examples/step.ts","../src/examples/trigger.ts","../src/index.ts"],"sourcesContent":["import type { Source, Elb } from '@walkeros/core';\n\ndeclare module '@walkeros/core' {\n interface SourceMap {\n cookiefirst: { type: 'cookiefirst'; platform?: 'web' };\n }\n}\n\n/**\n * CookieFirst consent object structure\n */\nexport interface CookieFirstConsent {\n necessary?: boolean;\n functional?: boolean;\n performance?: boolean;\n advertising?: boolean;\n [category: string]: boolean | undefined;\n}\n\n/**\n * CookieFirst global API interface\n */\nexport interface CookieFirstAPI {\n consent: CookieFirstConsent | null;\n}\n\ndeclare global {\n interface Window {\n CookieFirst?: CookieFirstAPI;\n [key: string]: CookieFirstAPI | unknown;\n }\n\n interface WindowEventMap {\n cf_init: Event;\n cf_consent: CustomEvent<CookieFirstConsent>;\n }\n}\n\n/**\n * Settings for CookieFirst source\n */\nexport interface Settings {\n /**\n * Map CookieFirst categories to walkerOS consent groups.\n * Keys: CookieFirst category names\n * Values: walkerOS consent group names\n *\n * Default maps to standard walkerOS groups:\n * - necessary → functional\n * - functional → functional\n * - performance → analytics\n * - advertising → marketing\n */\n categoryMap?: Record<string, string>;\n\n /**\n * Only process explicit consent (user made a choice).\n * When true: Ignores consent if CookieFirst.consent is null\n * When false: Processes any consent state including defaults\n *\n * Default: true\n */\n explicitOnly?: boolean;\n\n /**\n * Custom name for window.CookieFirst object.\n * Some implementations use a different global name.\n *\n * Default: 'CookieFirst'\n */\n globalName?: string;\n}\n\n/**\n * User input settings (all optional)\n */\nexport type InitSettings = Partial<Settings>;\n\n/**\n * No mapping configuration for this source\n */\nexport interface Mapping {}\n\n/**\n * Push function type - uses elb for consent commands\n */\nexport type Push = Elb.Fn;\n\n/**\n * Environment interface for CookieFirst source\n */\nexport interface Env extends Source.BaseEnv {\n window?: Window & typeof globalThis;\n}\n\n/**\n * Types bundle for CookieFirst source\n */\nexport type Types = Source.Types<Settings, Mapping, Push, Env, InitSettings>;\n\n/**\n * Config type alias\n */\nexport type Config = Source.Config<Types>;\n","import type { CookieFirstConsent } from '../types';\n\n/**\n * Example CookieFirst consent inputs.\n *\n * These represent real consent states from CookieFirst CMP.\n */\n\n/**\n * Full consent - user accepted all categories\n */\nexport const fullConsent: CookieFirstConsent = {\n necessary: true,\n functional: true,\n performance: true,\n advertising: true,\n};\n\n/**\n * Partial consent - user accepted only necessary and functional\n */\nexport const partialConsent: CookieFirstConsent = {\n necessary: true,\n functional: true,\n performance: false,\n advertising: false,\n};\n\n/**\n * Minimal consent - user accepted only necessary (required)\n */\nexport const minimalConsent: CookieFirstConsent = {\n necessary: true,\n functional: false,\n performance: false,\n advertising: false,\n};\n\n/**\n * No consent - user hasn't made a choice yet\n * CookieFirst returns null when no explicit choice has been made\n */\nexport const noConsent: CookieFirstConsent | null = null;\n\n/**\n * Analytics only - user accepted performance tracking\n */\nexport const analyticsOnlyConsent: CookieFirstConsent = {\n necessary: true,\n functional: false,\n performance: true,\n advertising: false,\n};\n\n/**\n * Marketing only - user accepted advertising\n */\nexport const marketingOnlyConsent: CookieFirstConsent = {\n necessary: true,\n functional: false,\n performance: false,\n advertising: true,\n};\n","import type { WalkerOS } from '@walkeros/core';\n\n/**\n * Expected walkerOS consent outputs.\n *\n * These represent the consent state after mapping CookieFirst categories\n * to walkerOS consent groups using the default category map.\n */\n\n/**\n * Full consent mapped to walkerOS groups\n * (necessary + functional → functional, performance → analytics, advertising → marketing)\n */\nexport const fullConsentMapped: WalkerOS.Consent = {\n functional: true,\n analytics: true,\n marketing: true,\n};\n\n/**\n * Partial consent mapped to walkerOS groups\n */\nexport const partialConsentMapped: WalkerOS.Consent = {\n functional: true,\n analytics: false,\n marketing: false,\n};\n\n/**\n * Minimal consent mapped to walkerOS groups\n */\nexport const minimalConsentMapped: WalkerOS.Consent = {\n functional: true,\n analytics: false,\n marketing: false,\n};\n\n/**\n * Analytics only consent mapped to walkerOS groups\n * Note: functional is true because necessary=true maps to functional\n * (OR logic: if ANY source category is true, target group is true)\n */\nexport const analyticsOnlyMapped: WalkerOS.Consent = {\n functional: true,\n analytics: true,\n marketing: false,\n};\n\n/**\n * Marketing only consent mapped to walkerOS groups\n * Note: functional is true because necessary=true maps to functional\n * (OR logic: if ANY source category is true, target group is true)\n */\nexport const marketingOnlyMapped: WalkerOS.Consent = {\n functional: true,\n analytics: false,\n marketing: true,\n};\n","import type { Source, Elb, Logger } from '@walkeros/core';\nimport type { CookieFirstAPI, CookieFirstConsent } from '../types';\n\n/**\n * Example environment configurations for CookieFirst source testing.\n *\n * These provide mock structures for testing consent handling\n * without requiring a real browser environment.\n */\n\n// Simple no-op function for mocking\nconst noop = () => {};\n\n/**\n * Create a properly typed elb/push function mock that returns a promise with PushResult\n */\nexport const createMockElbFn = (): Elb.Fn => {\n const fn = (() =>\n Promise.resolve({\n ok: true,\n })) as Elb.Fn;\n return fn;\n};\n\n/**\n * Simple no-op logger for demo purposes\n */\nexport const noopLogger: Logger.Instance = {\n error: noop,\n warn: noop,\n info: noop,\n debug: noop,\n throw: (message: string | Error) => {\n throw typeof message === 'string' ? new Error(message) : message;\n },\n json: noop,\n scope: () => noopLogger,\n};\n\n/**\n * Environment interface for CookieFirst source\n */\ninterface CookieFirstEnv extends Source.BaseEnv {\n window?: typeof window;\n}\n\n/**\n * Create a mock CookieFirst API object\n */\nexport const createMockCookieFirstAPI = (\n consent: CookieFirstConsent | null = null,\n): CookieFirstAPI => ({\n consent,\n});\n\n/**\n * Create a mock window object with CookieFirst\n */\nexport const createMockWindow = (\n consent: CookieFirstConsent | null = null,\n): Partial<Window> & { CookieFirst: CookieFirstAPI } => ({\n CookieFirst: createMockCookieFirstAPI(consent),\n addEventListener: noop,\n removeEventListener: noop,\n});\n\n/**\n * Standard mock environment for testing CookieFirst source\n *\n * Use this for testing consent handling without requiring\n * a real browser environment.\n */\nexport const mockEnv: CookieFirstEnv = {\n get push() {\n return createMockElbFn();\n },\n get command() {\n return createMockElbFn();\n },\n get elb() {\n return createMockElbFn();\n },\n get window() {\n return createMockWindow() as unknown as typeof window;\n },\n logger: noopLogger,\n};\n","import type { Flow } from '@walkeros/core';\n\nexport const fullConsent: Flow.StepExample = {\n title: 'Full consent',\n description:\n 'CookieFirst reports all categories granted and the source forwards a walker consent command with all groups true.',\n trigger: { type: 'consent' },\n in: {\n necessary: true,\n functional: true,\n performance: true,\n advertising: true,\n },\n out: [\n [\n 'elb',\n 'walker consent',\n {\n functional: true,\n analytics: true,\n marketing: true,\n },\n ],\n ],\n};\n\nexport const partialConsent: Flow.StepExample = {\n title: 'Partial consent',\n description:\n 'A partial CookieFirst grant maps analytics and marketing to false in the emitted walker consent command.',\n trigger: { type: 'consent' },\n in: {\n necessary: true,\n functional: true,\n performance: false,\n advertising: false,\n },\n out: [\n [\n 'elb',\n 'walker consent',\n {\n functional: true,\n analytics: false,\n marketing: false,\n },\n ],\n ],\n};\n\nexport const categoryMapOverride: Flow.StepExample = {\n title: 'Category map override',\n description:\n 'Custom categoryMap remaps performance to statistics instead of analytics',\n trigger: { type: 'consent' },\n in: {\n necessary: true,\n functional: false,\n performance: true,\n advertising: false,\n },\n mapping: {\n settings: {\n categoryMap: {\n performance: 'statistics',\n },\n },\n },\n out: [\n [\n 'elb',\n 'walker consent',\n {\n functional: true,\n statistics: true,\n marketing: false,\n },\n ],\n ],\n};\n\nexport const cfInitDetection: Flow.StepExample = {\n title: 'cf_init detection',\n description: 'CMP detected via cf_init CustomEvent (primary detection path)',\n trigger: { type: 'consent' },\n in: {\n necessary: true,\n functional: false,\n performance: false,\n advertising: true,\n },\n out: [\n [\n 'elb',\n 'walker consent',\n {\n functional: true,\n analytics: false,\n marketing: true,\n },\n ],\n ],\n};\n","import type { Trigger, Collector } from '@walkeros/core';\nimport { startFlow } from '@walkeros/collector';\n\ninterface CookieFirstConsent {\n necessary?: boolean;\n functional?: boolean;\n performance?: boolean;\n advertising?: boolean;\n [category: string]: boolean | undefined;\n}\n\nconst createTrigger: Trigger.CreateFn<CookieFirstConsent, void> = async (\n config: Collector.InitConfig,\n) => {\n let flow: Trigger.FlowHandle | undefined;\n\n const trigger: Trigger.Fn<CookieFirstConsent, void> =\n () => async (content: CookieFirstConsent) => {\n // Pre-init: set CookieFirst global (source reads this during init)\n (window as unknown as Record<string, unknown>).CookieFirst = {\n consent: content,\n };\n\n // Lazy startFlow — source reads global + registers event listeners\n if (!flow) {\n const result = await startFlow({ ...config, run: config.run ?? true });\n flow = { collector: result.collector, elb: result.elb };\n }\n\n // Post-init: dispatch cf_init to trigger consent processing\n window.dispatchEvent(new Event('cf_init'));\n };\n\n return {\n get flow() {\n return flow;\n },\n trigger,\n };\n};\n\n/** Sets window.CookieFirst.consent before source init (legacy). */\nconst trigger = (input: unknown, env: Record<string, unknown>): void => {\n if (!input || typeof input !== 'object') return;\n (env.window as Record<string, unknown>).CookieFirst = { consent: input };\n};\n\nexport { createTrigger, trigger };\n","import type { Source, WalkerOS } from '@walkeros/core';\nimport type {\n Types,\n Settings,\n CookieFirstConsent,\n CookieFirstAPI,\n} from './types';\n\n// Export types for external usage\nexport * as SourceCookieFirst from './types';\n\n// Export examples\nexport * from './examples';\n\n/**\n * Default category mapping from CookieFirst to walkerOS consent groups.\n *\n * Maps CookieFirst's standard categories to walkerOS convention:\n * - necessary/functional → functional (essential)\n * - performance → analytics (measurement)\n * - advertising → marketing (ads)\n */\nexport const DEFAULT_CATEGORY_MAP: Record<string, string> = {\n necessary: 'functional',\n functional: 'functional',\n performance: 'analytics',\n advertising: 'marketing',\n};\n\n/**\n * CookieFirst consent management source for walkerOS.\n *\n * This source listens to CookieFirst CMP events and translates\n * consent states to walkerOS consent commands.\n *\n * @example\n * ```typescript\n * import { sourceCookieFirst } from '@walkeros/web-source-cmp-cookiefirst';\n *\n * await startFlow({\n * sources: {\n * consent: {\n * code: sourceCookieFirst,\n * config: {\n * settings: {\n * categoryMap: {\n * performance: 'statistics', // Custom mapping\n * },\n * },\n * },\n * },\n * },\n * });\n * ```\n */\nexport const sourceCookieFirst: Source.Init<Types> = async (context) => {\n const { config, env } = context;\n const { elb } = env;\n\n // Resolve window with fallback to globalThis\n const actualWindow =\n env.window ??\n (typeof globalThis.window !== 'undefined' ? globalThis.window : undefined);\n\n // Merge user settings with defaults\n const settings: Settings = {\n categoryMap: { ...DEFAULT_CATEGORY_MAP, ...config?.settings?.categoryMap },\n explicitOnly: config?.settings?.explicitOnly ?? true,\n globalName: config?.settings?.globalName ?? 'CookieFirst',\n };\n\n const fullConfig: Source.Config<Types> = { settings };\n\n // Track listener references for cleanup\n let initListener: (() => void) | undefined;\n let consentListener: ((e: Event) => void) | undefined;\n\n // Only setup if in browser environment\n if (actualWindow) {\n /**\n * Handle consent state from CookieFirst.\n * Maps CookieFirst categories to walkerOS consent groups and calls elb.\n *\n * When multiple CookieFirst categories map to the same walkerOS group,\n * uses OR logic: if ANY category is true, the group is true.\n */\n const handleConsent = (consent: CookieFirstConsent | null) => {\n // Skip if explicitOnly and no explicit consent given\n if (settings.explicitOnly && !consent) return;\n if (!consent) return;\n\n // Map CookieFirst categories to walkerOS consent groups\n // Use OR logic: if ANY source category is true, the target group is true\n const state: WalkerOS.Consent = {};\n Object.entries(consent).forEach(([category, value]) => {\n if (typeof value !== 'boolean') return;\n const mapped = settings.categoryMap?.[category] ?? category;\n // OR logic: once true, stays true\n state[mapped] = state[mapped] || value;\n });\n\n // Only call if we have consent state to report\n if (Object.keys(state).length > 0) {\n elb('walker consent', state);\n }\n };\n\n const globalName = settings.globalName ?? 'CookieFirst';\n const cmp = actualWindow[globalName] as CookieFirstAPI | undefined;\n\n // Process existing consent if CMP already loaded\n if (cmp?.consent) {\n handleConsent(cmp.consent);\n }\n\n // Listen for CMP initialization\n initListener = () => {\n const cmp = actualWindow[globalName] as CookieFirstAPI | undefined;\n handleConsent(cmp?.consent ?? null);\n };\n actualWindow.addEventListener('cf_init', initListener);\n\n // Listen for consent changes\n consentListener = (e: Event) => {\n const customEvent = e as CustomEvent<CookieFirstConsent>;\n handleConsent(customEvent.detail);\n };\n actualWindow.addEventListener('cf_consent', consentListener);\n }\n\n return {\n type: 'cookiefirst',\n config: fullConfig,\n push: elb,\n destroy: async (_context) => {\n // Remove event listeners on cleanup\n if (actualWindow && initListener) {\n actualWindow.removeEventListener('cf_init', initListener);\n }\n if (actualWindow && consentListener) {\n actualWindow.removeEventListener('cf_consent', consentListener);\n }\n },\n };\n};\n\nexport default sourceCookieFirst;\n"],"mappings":"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","names":["fullConsent","partialConsent","trigger","_a","_b","cmp"]}
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$meta": {
3
3
  "package": "@walkeros/web-source-cmp-cookiefirst",
4
- "version": "3.4.2",
4
+ "version": "4.0.0-next-1777463920154",
5
5
  "type": "source",
6
6
  "platform": [
7
7
  "web"
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@walkeros/web-source-cmp-cookiefirst",
3
3
  "description": "CookieFirst consent management source for walkerOS",
4
- "version": "3.4.2",
4
+ "version": "4.0.0-next-1777463920154",
5
5
  "license": "MIT",
6
6
  "walkerOS": {
7
7
  "type": "source",
@@ -45,8 +45,8 @@
45
45
  "update": "npx npm-check-updates -u && npm update"
46
46
  },
47
47
  "dependencies": {
48
- "@walkeros/core": "3.4.2",
49
- "@walkeros/collector": "3.4.2"
48
+ "@walkeros/core": "4.0.0-next-1777463920154",
49
+ "@walkeros/collector": "4.0.0-next-1777463920154"
50
50
  },
51
51
  "devDependencies": {},
52
52
  "repository": {