@walkeros/web-source-cmp-cookiepro 4.1.3-next-1780071196115 → 4.2.0-next-1780420352914

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/CHANGELOG.md CHANGED
@@ -1,13 +1,22 @@
1
1
  # @walkeros/web-source-cmp-cookiepro
2
2
 
3
- ## 4.1.3-next-1780071196115
3
+ ## 4.2.0-next-1780420352914
4
4
 
5
5
  ### Patch Changes
6
6
 
7
+ - 776e5f9: Step examples are no longer bundled into production output. They were
8
+ accidentally exported from the production entry of these packages and pulled
9
+ into bundled JS. Examples remain available via the package `./dev` subpath for
10
+ simulation and testing.
7
11
  - Updated dependencies [908d6f0]
12
+ - Updated dependencies [654ba38]
13
+ - Updated dependencies [f4a9013]
14
+ - Updated dependencies [d65bbde]
15
+ - Updated dependencies [126c0f1]
16
+ - Updated dependencies [654ba38]
8
17
  - Updated dependencies [3eb2467]
9
- - @walkeros/collector@4.1.3-next-1780071196115
10
- - @walkeros/core@4.1.3-next-1780071196115
18
+ - @walkeros/collector@4.2.0-next-1780420352914
19
+ - @walkeros/core@4.2.0-next-1780420352914
11
20
 
12
21
  ## 4.1.2
13
22
 
@@ -1 +1 @@
1
- "use strict";var SourceCookiePro=(()=>{var e=Object.defineProperty,t=Object.getOwnPropertyDescriptor,n=Object.getOwnPropertyNames,o=Object.prototype.hasOwnProperty,r=(t,n)=>{for(var o in n)e(t,o,{get:n[o],enumerable:!0})},s={};r(s,{DEFAULT_CATEGORY_MAP:()=>jt,SourceCookiePro:()=>i,analyticsOnlyConsent:()=>u,analyticsOnlyMapped:()=>v,createMockElbFn:()=>b,createMockOneTrustAPI:()=>O,createTrigger:()=>Ct,customCategoryConsent:()=>p,default:()=>St,emptyConsent:()=>d,fullConsent:()=>a,fullConsentMapped:()=>g,marketingOnlyConsent:()=>f,marketingOnlyMapped:()=>y,minimalConsent:()=>l,minimalConsentMapped:()=>m,noopLogger:()=>k,partialConsent:()=>c,partialConsentMapped:()=>h,sourceCookiePro:()=>At,step:()=>x,trigger:()=>It});var i={},a=",C0001,C0002,C0003,C0004,C0005,",c=",C0001,C0003,",l=",C0001,",u=",C0001,C0002,",f=",C0001,C0004,",d="",p=",C0001,CUSTOM01,CUSTOM02,",g={functional:!0,analytics:!0,marketing:!0},h={functional:!0,analytics:!1,marketing:!1},m={functional:!0,analytics:!1,marketing:!1},v={functional:!0,analytics:!0,marketing:!1},y={functional:!0,analytics:!1,marketing:!0},w=()=>{},b=()=>()=>Promise.resolve({ok:!0}),k={error:w,warn:w,info:w,debug:w,throw:e=>{throw"string"==typeof e?new Error(e):e},json:w,scope:()=>k},O=(e=!1)=>({IsAlertBoxClosed:()=>e}),x={};r(x,{categoryMapOverride:()=>j,fullConsent:()=>C,minimalConsent:()=>I,sdkLoadedDetection:()=>A});var C={title:"Full consent",description:"A CookiePro OptanonConsent cookie listing all groups is translated into a walker consent command with all true.",trigger:{type:"consent"},in:",C0001,C0002,C0003,C0004,C0005,",out:[["elb","walker consent",{functional:!0,analytics:!0,marketing:!0}]]},I={title:"Minimal consent",description:"Only the necessary CookiePro group is granted so analytics and marketing map to false in the walker consent command.",trigger:{type:"consent"},in:",C0001,",out:[["elb","walker consent",{functional:!0,analytics:!1,marketing:!1}]]},j={title:"Category map override",description:"Custom categoryMap remaps C0002 from analytics to statistics",trigger:{type:"consent"},in:",C0001,C0002,",mapping:{categoryMap:{C0002:"statistics"}},out:[["elb","walker consent",{functional:!0,statistics:!0,marketing:!1}]]},A={title:"SDK loaded detection",description:"Immediate detection when OneTrust SDK is already loaded with IsAlertBoxClosed() = true",trigger:{type:"consent"},in:",C0001,C0003,C0004,",out:[["elb","walker consent",{functional:!0,analytics:!1,marketing:!0}]]},S=Object.defineProperty,q=(e,t)=>{for(var n in t)S(e,n,{get:t[n],enumerable:!0})};function E(e,t){if("collector"===e)return"collector";if(!t)throw new Error(`stepId(${e}) requires an id`);return`${e}.${t}`}q({},{stepId:()=>E});function $(e,t){const n=e.destinations[t];if(!n)throw new Error(`Destination not found: ${t}`);return n}q({},{getDestination:()=>$});q({},{Level:()=>M});var T,M=((T=M||{})[T.ERROR=0]="ERROR",T[T.WARN=1]="WARN",T[T.INFO=2]="INFO",T[T.DEBUG=3]="DEBUG",T);function D(e,t){const n=e.transformers[t];if(!n)throw new Error(`Transformer not found: ${t}`);return n}q({},{getTransformer:()=>D});function P(e,t){const n=e.sources[t];if(!n)throw new Error(`Source not found: ${t}`);return n}q({},{getSource:()=>P});function _(e,t){const n=e.stores[t];if(!n)throw new Error(`Store not found: ${t}`);return n}function N(e){return{_meta:{hops:0,path:[e]}}}q({},{getStore:()=>_});var R={merge:!0,shallow:!0,extend:!0};function z(e,t={},n={}){n={...R,...n};const o=Object.entries(t).reduce((t,[o,r])=>{const s=e[o];return n.merge&&Array.isArray(s)&&Array.isArray(r)?t[o]=r.reduce((e,t)=>e.includes(t)?e:[...e,t],[...s]):(n.extend||o in e)&&(t[o]=r),t},{});return n.shallow?{...e,...o}:(Object.assign(e,o),e)}function B(e){return Array.isArray(e)}function K(e){return void 0!==e}function G(e){return"function"==typeof e}function H(e){return"object"==typeof e&&null!==e&&!B(e)&&"[object Object]"===Object.prototype.toString.call(e)}function W(e){return"string"==typeof e}function L(e,t=new WeakMap){if("object"!=typeof e||null===e)return e;if(t.has(e))return t.get(e);const n=Object.prototype.toString.call(e);if("[object Object]"===n){const n={};t.set(e,n);for(const o in e)Object.prototype.hasOwnProperty.call(e,o)&&(n[o]=L(e[o],t));return n}if("[object Array]"===n){const n=[];return t.set(e,n),e.forEach(e=>{n.push(L(e,t))}),n}if("[object Date]"===n)return new Date(e.getTime());if("[object RegExp]"===n){const t=e;return new RegExp(t.source,t.flags)}return e}function F(e,t="",n){const o=t.split(".");let r=e;for(let e=0;e<o.length;e++){const t=o[e];if("*"===t&&B(r)){const t=o.slice(e+1).join("."),s=[];for(const e of r){const o=F(e,t,n);s.push(o)}return s}if(r=H(r)||B(r)?r[t]:void 0,void 0===r)break}return K(r)?r:n}function U(e,t,n){if(!H(e))return e;const o=L(e),r=t.split(".");let s=o;for(let e=0;e<r.length;e++){const t=r[e];e===r.length-1?s[t]=n:(t in s&&"object"==typeof s[t]&&null!==s[t]||(s[t]={}),s=s[t])}return o}function V(e,t){if(!H(e)&&!B(e))return e;const n=L(e),o=t.split(".");let r=n;for(let e=0;e<o.length;e++){const t=o[e],s=e===o.length-1;if(B(r)){const e=Number(t);if(!Number.isInteger(e)||e<0||e>=r.length)return n;if(s)r.splice(e,1);else{const t=r[e];if(!H(t)&&!B(t))return n;r=t}}else if(s)delete r[t];else{const e=r[t];if(!H(e)&&!B(e))return n;r=e}}return n}var Y={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 J(e,t={},n={}){const o={...t,...n},r={};let s=!e||0===Object.keys(e).length;return Object.keys(o).forEach(t=>{o[t]&&(r[t]=!0,e&&e[t]&&(s=!0))}),!!s&&r}function Z(){let e="";for(let t=0;t<16;t++)e+=(16*Math.random()|0).toString(16);return e}function Q(e=6,t){if(t){const n=t.length;let o="";for(let r=0;r<e;r++)o+=t[Math.random()*n|0];return o}let n="";for(let t=36;n.length<e;)n+=(Math.random()*t|0).toString(t);return n}function X(e){return{message:e.message,name:e.name,stack:e.stack,cause:e.cause}}function ee(e,t){let n,o={};return e instanceof Error?(n=e.message,o.error=X(e)):n=e,void 0!==t&&(t instanceof Error?o.error=X(t):"object"==typeof t&&null!==t?(o={...o,...t},"error"in o&&o.error instanceof Error&&(o.error=X(o.error))):o.value=t),{message:n,context:o}}var te=(e,t,n,o)=>{const r=`${M[e]}${o.length>0?` [${o.join(":")}]`:""}`,s=Object.keys(n).length>0,i=0===e?console.error:1===e?console.warn:console.log;s?i(r,t,n):i(r,t)};function ne(e={}){return oe({level:void 0!==e.level?(t=e.level,"string"==typeof t?M[t]:t):0,handler:e.handler,jsonHandler:e.jsonHandler,scope:[]});var t}function oe(e){const{level:t,handler:n,jsonHandler:o,scope:r}=e,s=(e,o,s)=>{if(e<=t){const t=ee(o,s);n?n(e,t.message,t.context,r,te):te(e,t.message,t.context,r)}};return{error:(e,t)=>s(0,e,t),warn:(e,t)=>s(1,e,t),info:(e,t)=>s(2,e,t),debug:(e,t)=>s(3,e,t),throw:(e,t)=>{const o=ee(e,t);throw n?n(0,o.message,o.context,r,te):te(0,o.message,o.context,r),new Error(o.message)},json:e=>{o?o(e):console.log(JSON.stringify(e,null,2))},scope:e=>oe({level:t,handler:n,jsonHandler:o,scope:[...r,e]})}}function re(e){return function(e){return"boolean"==typeof e}(e)||W(e)||function(e){return"number"==typeof e&&!Number.isNaN(e)}(e)||!K(e)||B(e)&&e.every(re)||H(e)&&Object.values(e).every(re)}function se(e){return re(e)?e:void 0}function ie(e,t,n){return function(...o){try{return e(...o)}catch(e){if(!t)return;return t(e)}finally{null==n||n()}}}function ae(e,t,n){return async function(...o){try{return await e(...o)}catch(e){if(!t)return;return await t(e)}finally{await(null==n?void 0:n())}}}var ce=class e extends Error{constructor(t,n){super(t,n),this.name="FatalError",Object.setPrototypeOf(this,e.prototype)}};async function le(e,t={},n={}){var o,r;if(!K(e))return;const s=H(e)&&e.consent||n.consent||(null==(o=n.collector)?void 0:o.consent),i=null!=(r=n.event)?r:H(e)?e:{};if(!n.collector)throw new Error("getMappingValue: context.collector is required");const a={event:i,mapping:t,collector:n.collector,logger:n.collector.logger,consent:s},c=B(t)?t:[t];for(const t of c){const o=await ae(ue,e=>{if(e instanceof ce)throw e;n.collector&&n.collector.status.failed++,a.logger.error("mapping processing failed",{event:i,error:e})})(e,t,{...a,mapping:t});if(K(o))return o}}async function ue(e,t,n){return(B(t)?t:[t]).reduce(async(t,o)=>{const r=await t;if(r)return r;const s=W(o)?{key:o}:o;if(!Object.keys(s).length)return;const{condition:i,consent:a,fn:c,key:l,loop:u,map:f,set:d,validate:p,value:g}=s,h={...n,mapping:o};if(i&&!await ae(i,e=>{if(e instanceof ce)throw e;return h.logger.error("mapping condition failed",{event:h.event,error:e}),!1})(e,h))return;if(a&&!J(a,h.consent))return g;let m=K(g)?g:e;if(c&&(m=await ae(c,e=>{if(e instanceof ce)throw e;h.logger.error("mapping fn failed",{event:h.event,error:e})})(e,h)),l&&(m=F(e,l,g)),u){const[t,n]=u,o="this"===t?[e]:await le(e,t,h);B(o)&&(m=(await Promise.all(o.map(e=>le(e,n,h)))).filter(K))}else f?m=await Object.entries(f).reduce(async(t,[n,o])=>{const r=await t,s=await le(e,o,h);return K(s)&&(r[n]=s),r},Promise.resolve({})):d&&(m=await Promise.all(d.map(t=>ue(e,t,h))));p&&!await ae(p,e=>{if(e instanceof ce)throw e;return h.logger.error("mapping validate failed",{event:h.event,error:e}),!1})(m,h)&&(m=void 0);const v=se(m);return K(v)?v:se(g)},Promise.resolve(void 0))}async function fe(e,t,n){var o;t.policy&&await Promise.all(Object.entries(t.policy).map(async([t,o])=>{const r=await le(e,o,{collector:n,event:e});e=U(e,t,r)}));const{eventMapping:r,mappingKey:s}=await async function(e,t,n){var o;const[r,s]=(e.name||"").split(" ");if(!t||!r||!s)return{};let i,a="",c=r,l=s;const u=t=>{if(t)return(B(t)?t:[t]).find(t=>{if(!t.condition)return!0;if(!n)return Boolean(t.condition(e,void 0));const o={event:e,mapping:t,collector:n,logger:n.logger,consent:H(e)&&e.consent||n.consent};return Boolean(t.condition(e,o))})};t[c]||(c="*");const f=t[c];return f&&(f[l]||(l="*"),i=u(f[l])),i||(c="*",l="*",i=u(null==(o=t[c])?void 0:o[l])),i&&(a=`${c} ${l}`),{eventMapping:i,mappingKey:a}}(e,t.mapping,n);(null==r?void 0:r.policy)&&await Promise.all(Object.entries(r.policy).map(async([t,o])=>{const r=await le(e,o,{collector:n,event:e});e=U(e,t,r)}));let i=t.data&&await le(e,t.data,{collector:n,event:e});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 t=r.data&&await le(e,r.data,{collector:n,event:e});i=H(i)&&H(t)?z(i,t):t}}const c=null!=(o=null==r?void 0:r.include)?o:t.include;if(c&&c.length>0){const t=function(e,t){const n={},o=t.includes("all")?Object.keys(Y):t;for(const t of o){const o=Y[t];if(!o)continue;const r=o(e);if(H(r))for(const[e,o]of Object.entries(r)){if(void 0===o)continue;const r="context"===t&&Array.isArray(o)?o[0]:o;n[`${t}_${e}`]=r}}return n}(e,c);Object.keys(t).length>0&&(i=H(i)?z(t,i):null!=i?i:t)}if((null==r?void 0:r.remove)&&H(i))for(const e of r.remove)i=V(i,e);return{event:e,data:i,mapping:r,mappingKey:s,ignore:!1,silent:a}}function de(e,t,n,o){const r=e;return function(...e){let s;const i="pre"+t,a="post"+t,c=n[i],l=n[a],u=(e,t)=>{o?o.warn(e,{error:t}):console.warn(e,t)};if(c)try{s=c({fn:r},...e)}catch(t){u(`Hook ${String(i)} failed, falling back to original function`,t),s=r(...e)}else s=r(...e);if(l)try{s=l({fn:r,result:s},...e)}catch(e){u(`Hook ${String(a)} failed, keeping original result`,e)}return s}}function pe(e,t){if(0===e.observers.size)return;const n=Array.from(e.observers);for(const e of n)try{e(t)}catch(e){}}function ge(e){if(void 0===e||"*"===e)return()=>!0;if("and"in e){const t=e.and.map(ge);return e=>t.every(t=>t(e))}if("or"in e){const t=e.or.map(ge);return e=>t.some(t=>t(e))}return function(e){const{key:t,operator:n,value:o,not:r}=e,s=function(e,t){switch(e){case"eq":return e=>String(null!=e?e:"")===t;case"contains":return e=>String(null!=e?e:"").includes(t);case"prefix":return e=>String(null!=e?e:"").startsWith(t);case"suffix":return e=>String(null!=e?e:"").endsWith(t);case"regex":{const e=new RegExp(t);return t=>e.test(String(null!=t?t:""))}case"gt":{const e=Number(t);return t=>Number(t)>e}case"lt":{const e=Number(t);return t=>Number(t)<e}case"exists":return e=>null!=e}}(n,o);return e=>{const n=F(e,t),o=s(n);return r?!o:o}}(e)}function he(e){return Array.isArray(e)&&e.length>0&&e.every(e=>function(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)&&("match"in e||"next"in e||"one"in e||"many"in e)}(e))}function me(e){return e.map(e=>{var t,n;if("string"==typeof e)return{match:()=>!0,next:{type:"static",value:e}};if(Array.isArray(e))return{match:()=>!0,next:null!=(t=ve(e))?t:{type:"chain",value:[]}};const o=e;return{match:o.match?ge(o.match):()=>!0,next:null!=(n=ve(o))?n:{type:"chain",value:[]}}})}function ve(e){if(null==e)return;if("string"==typeof e)return{type:"static",value:e};if(Array.isArray(e)){if(0===e.length)return;if(he(e))return ve({one:e});if(e.every(e=>"string"==typeof e))return{type:"chain",value:e};const t=[];for(const n of e){const e=ve(n);void 0!==e&&t.push(e)}if(0===t.length)return;return{type:"sequence",value:t}}const t=e;if("next"in t&&void 0!==t.next)return t.match?{type:"gate",match:ge(t.match),next:ve(t.next)}:ve(t.next);if("one"in t&&t.one){const e=me(t.one);return t.match?{type:"gate",match:ge(t.match),next:{type:"one",routes:e}}:{type:"one",routes:e}}if("many"in t&&t.many){const e=me(t.many);return t.match?{type:"gate",match:ge(t.match),next:{type:"many",routes:e}}:{type:"many",routes:e}}return t.match?{type:"gate",match:ge(t.match)}:void 0}var ye=new WeakMap;function we(e,t={}){if(null==e)return[];let n;if("object"==typeof e){const t=ye.get(e);t?n=t:(n=ve(e),n&&ye.set(e,n))}else n=ve(e);if(!n)return[];const o=be(n,t);return void 0===o?[]:Array.isArray(o)?o:[o]}function be(e,t={}){if(e){if("static"===e.type)return e.value;if("chain"===e.type)return e.value;if("gate"===e.type){if(!e.match(t))return;return be(e.next,t)}if("sequence"===e.type){const n=[];for(const o of e.value){const e=be(o,t);void 0!==e&&(Array.isArray(e)?n.push(...e):n.push(e))}return n.length>0?n:void 0}if("many"===e.type){const n=[];for(const o of e.routes){if(!o.match(t))continue;const e=be(o.next,t);void 0!==e&&(Array.isArray(e)?n.push(...e):n.push(e))}return n.length>0?n:void 0}for(const n of e.routes)if(n.match(t))return be(n.next,t)}}function ke(e,t){const n={ingest:null!=e?e:{}};return void 0!==t&&(n.event=t),n}function Oe(e){var t;return{stop:null!=(t=e.stop)&&t,storeId:e.store,namespace:e.namespace,rules:e.rules.map(e=>({match:e.match?ge(e.match):()=>!0,key:e.key,ttl:e.ttl,update:e.update}))}}async function xe(e,t,n,o){const r=e.rules.find(e=>e.match(n));if(!r)return null;const s=r.key.map(e=>{var t;return String(null!=(t=F(n,e))?t:"")});if(s.every(e=>""===e))return null;const i=s.join(":"),a=null!=o?o:e.namespace,c=a?`${a}:${i}`:i,l=await t.get(c);return void 0!==l?{status:"HIT",key:c,value:l,rule:r}:{status:"MISS",key:c,rule:r}}function Ce(e,t,n,o){e.set(t,n,1e3*o)}async function Ie(e,t,n,o){if(!t)return e;let r=e;for(const[e,s]of Object.entries(t))r=U(r,e,await le(n,s,{collector:o}));return r}function je(e){return B(e)?e:[e]}async function Ae(e,t,n,o){let r=n;for(const n of e)await ae(async()=>{const e=t(n.store);if(!e)return;const s=await le(r,n.key,{collector:o,event:r});if(!W(s))return;const i=n.store?s:`state:${s}`;if("set"===n.mode){const t=await le(r,n.value,{collector:o,event:r});if(!K(t))return;await e.set(i,t)}else{const t=W(a=n.value)?a:H(a)&&W(a.key)?a.key:void 0;if(!t)return;const o=await e.get(i);if(!K(o))return;r=U(r,t,o)}var a},e=>{var t,n;null==(n=null==(t=o.logger)?void 0:t.error)||n.call(t,"[state] operation failed",e)})();return r}var Se={Source:["code","package","import","before","next","cache","state"],Transformer:["code","package","import","before","next","cache","state","mapping"],Destination:["code","package","import","before","next","cache","state"],Store:["code","package","import","cache"]},qe=["config","env","validate","variables","examples","disabled","id","logger","mock","chainMocks"],Ee={Source:["primary"],Transformer:[],Destination:[],Store:[]},$e=/^[A-Za-z_$][A-Za-z0-9_$]*$/;function Te(e,t){const n=(o=t,new Set([...Se[o],...qe,...Ee[o]]));var o;for(const o of Object.keys(e))if(!n.has(o))return{ok:!1,code:"UNKNOWN_KEY",key:o,reason:`Unknown key "${o}" on ${t}. Allowed: ${[...n].sort().join(", ")}.`};const r=void 0!==e.package,s=void 0!==e.import,i=void 0!==e.code;return i&&"string"==typeof e.code?{ok:!1,code:"OBSOLETE_CODE_STRING",key:"code",reason:`code: "<name>" is no longer supported. Use import: "${e.code}" with the package field instead.`}:i&&("object"!=typeof e.code&&"function"!=typeof e.code||null===e.code||Array.isArray(e.code))?{ok:!1,code:"INVALID_CODE_SHAPE",key:"code",reason:"code must be an object ({ push, type?, init? }) or a resolved function value."}:i&&r?{ok:!1,code:"CONFLICT",key:"package",reason:"Cannot specify both `code` and `package`. Use one or the other."}:i&&s?{ok:!1,code:"CONFLICT",key:"import",reason:"Cannot specify both `code` and `import`."}:s&&!r?{ok:!1,code:"MISSING_PACKAGE",key:"import",reason:"`import` requires `package` to be set."}:!s||"string"==typeof e.import&&$e.test(e.import)?{ok:!0}:{ok:!1,code:"INVALID_IMPORT",key:"import",reason:`import must match ${$e.source}. Got: ${JSON.stringify(e.import)}.`}}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 De(e,t){const n=e.status.startedAt;return{flowId:"default",stepId:t.stepId,stepType:t.stepType,phase:t.phase,eventId:t.eventId,timestamp:new Date(t.now).toISOString(),elapsedMs:t.now-n}}function Pe(e,t){return e.storeId&&t.stores[e.storeId]?t.stores[e.storeId]:t.stores.__cache}function _e(e,t){return e?t.stores[e]:t.stores.__cache}function Ne(e){var t;const n={};for(const[o,r]of Object.entries(e)){const e=null==(t=r.config)?void 0:t.next;"string"==typeof e||Array.isArray(e)&&e.every(e=>"string"==typeof e)?n[o]={next:e}:n[o]={}}return n}function Re(e,t){const n=e.config||{},o=e[t];return void 0!==o?{config:{...n,[t]:o},chainValue:o}:{config:n,chainValue:void 0}}function ze(e,t={}){if(!e)return[];if(Array.isArray(e))return e;const n=[],o=new Set;let r=e;for(;r&&t[r]&&!o.has(r);){o.add(r),n.push(r);const e=t[r].next;if(Array.isArray(e)){n.push(...e);break}r=e}return n}async function Be(e,t,n){if(t.init&&!t.config.init){const o=t.type||"unknown",r=e.logger.scope(`transformer:${o}`),s={collector:e,logger:r,id:n,ingest:N(n),config:t.config,env:We(t.config.env)};r.debug("init");const i=await de(t.init,"TransformerInit",e.hooks,e.logger)(s);if(!1===i)return!1;t.config={...i||t.config,env:(null==i?void 0:i.env)||t.config.env,init:!0},r.debug("init done")}return!0}async function Ke(e,t,n,o,r,s){const i=t.type||"unknown",a=e.logger.scope(`transformer:${i}`),c={collector:e,logger:a,id:n,ingest:r,config:t.config,env:{...We(t.config.env),...s?{respond:s}:{}}};a.debug("push",{event:o.name});const l="string"==typeof o.id?o.id:"",u=Date.now();pe(e,De(e,{stepId:E("transformer",n),stepType:"transformer",phase:"in",eventId:l,now:u}));try{const r=await de(t.push,"TransformerPush",e.hooks,e.logger)(o,c),s=Date.now(),i=De(e,{stepId:E("transformer",n),stepType:"transformer",phase:"out",eventId:l,now:s});return i.durationMs=s-u,i.outEvent=r,pe(e,i),a.debug("push done"),r}catch(t){const o=Date.now(),r=De(e,{stepId:E("transformer",n),stepType:"transformer",phase:"error",eventId:l,now:o});throw r.durationMs=o-u,r.error=t instanceof Error?{name:t.name,message:t.message}:{message:String(t)},pe(e,r),t}}function Ge(e,t){return e?{...e,_meta:{...e._meta,path:[...e._meta.path]}}:N(t)}async function He(e,t,n,o,r,s,i){var a,c,l,u,f,d,p,g,h;r||(r=N(null!=(a=n[0])?a:"chain")),i&&r._meta&&(r._meta.chainPath=i);let m=o,v=s;for(const o of n){const s=t[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:v};if(r&&r._meta&&(r._meta.hops++,r._meta.path.push(o)),!await ae(Be,t=>{if(t instanceof ce)throw t;return e.status.failed++,e.logger.scope(`transformer:${s.type||"unknown"}`).error("transformer init failed",{transformer:o,error:t}),!1})(e,s,o))return{event:null,respond:v};if(i&&void 0!==(null==(l=null==(c=s.config)?void 0:c.chainMocks)?void 0:l[i])){const t=s.config.chainMocks[i];e.logger.scope(`transformer:${s.type||"unknown"}`).debug("chainMock",{chain:i}),m=t;continue}if(void 0!==(null==(u=s.config)?void 0:u.mock)){e.logger.scope(`transformer:${s.type||"unknown"}`).debug("mock"),m=s.config.mock;continue}if(null==(f=s.config)?void 0:f.disabled)continue;const a=null==(d=s.config)?void 0:d.cache,y=a?Oe(a):void 0,w=y?Pe(y,e):void 0,b=(null==(p=s.config)?void 0:p.state)?je(s.config.state):void 0,k=null==b?void 0:b.filter(e=>"get"===e.mode),O=null==b?void 0:b.filter(e=>"set"===e.mode);let x;if(y&&w){const e=ke(r,m),t=await xe(y,w,e);if("HIT"===(null==t?void 0:t.status)&&t.value){if(m=t.value,y.stop)return{event:m,respond:v,stopped:!0};continue}"MISS"===(null==t?void 0:t.status)&&(x={key:t.key,ttl:t.rule.ttl})}const C=s.config.before;if(C){const n=we(C,ke(r,m));if(1===n.length){const o=ze(n[0],Ne(t));if(o.length>0){const n=await He(e,t,o,m,r,v,i);if(null===n.event)return{event:null,respond:null!=(g=n.respond)?g:v};if(n.stopped)return{event:Array.isArray(n.event)?n.event[0]:n.event,respond:null!=(h=n.respond)?h:v,stopped:!0};n.respond&&(v=n.respond),m=Array.isArray(n.event)?n.event[0]:n.event}}else n.length>1&&await Promise.all(n.map(n=>ae(He,t=>(e.logger.scope("transformer:many").error(`many branch ${n} failed`,{error:t}),{event:null,respond:void 0}))(e,t,ze(n,Ne(t)),m,Ge(r,n),void 0,i)))}k&&k.length>0&&(m=await Ae(k,t=>_e(t,e),m,e));const I=await ae(Ke,t=>(e.logger.scope(`transformer:${s.type||"unknown"}`).error("Push failed",{error:t}),!1))(e,s,o,m,r,v);if(!1===I)return{event:null,respond:v};if(Array.isArray(I)){const s=n.slice(n.indexOf(o)+1),a=await Promise.all(I.map(async n=>{const o=n.event||m,a=Ge(r,"unknown");if(n.next){const r=we(n.next,ke(a,o));if(0===r.length)return{event:o,respond:v};if(1===r.length){const n=ze(r[0],Ne(t));return n.length>0?He(e,t,n,o,a,v,i):{event:o,respond:v}}return(await Promise.all(r.map(n=>ae(He,t=>(e.logger.scope("transformer:many").error(`many branch ${n} failed`,{error:t}),{event:null,respond:void 0}))(e,t,ze(n,Ne(t)),o,Ge(a,n),void 0,i)))).map(e=>({event:e.event,respond:void 0}))}return s.length>0?He(e,t,s,o,a,v,i):{event:o,respond:v}}));let c=v;const l=[];for(const e of a.flat())if(null!==e)if(e&&"object"==typeof e&&"event"in e){const t=e;if(t.respond&&(c=t.respond),null===t.event)continue;Array.isArray(t.event)?l.push(...t.event):l.push(t.event)}else l.push(e);return 0===l.length?{event:null,respond:c}:1===l.length?{event:l[0],respond:c}:{event:l,respond:c}}if(I&&"object"==typeof I){const{event:n,respond:o,next:s}=I;if(o&&(v=o),void 0!==s){const o=we(s,ke(r,m));if(0===o.length){n&&(m=n);continue}if(1===o.length){const a=ze(o[0],Ne(t));return a.length>0?He(e,t,a,n||m,r,v,i):(e.logger.warn(`Branch target not found: ${JSON.stringify(s)}`),{event:null,respond:v})}return await Promise.all(o.map(o=>ae(He,t=>(e.logger.scope("transformer:many").error(`many branch ${o} failed`,{error:t}),{event:null,respond:void 0}))(e,t,ze(o,Ne(t)),n||m,Ge(r,o),void 0,i))),{event:null,respond:void 0}}n&&(m=n)}O&&O.length>0&&(m=await Ae(O,t=>_e(t,e),m,e)),x&&w&&Ce(w,x.key,m,x.ttl);const j=s.config.next,A="string"==typeof j||Array.isArray(j)&&j.every(e=>"string"==typeof e),S=void 0!==j&&!A;if((!I||"object"==typeof I&&!I.next)&&S){const n=we(s.config.next,ke(r,m));if(1===n.length){const o=ze(n[0],Ne(t));return o.length>0?He(e,t,o,m,r,v,i):{event:m,respond:v}}return n.length>1?(await Promise.all(n.map(n=>ae(He,t=>(e.logger.scope("transformer:many").error(`many branch ${n} failed`,{error:t}),{event:null,respond:void 0}))(e,t,ze(n,Ne(t)),m,Ge(r,n),void 0,i))),{event:null,respond:void 0}):{event:m,respond:v}}}return{event:m,respond:v}}function We(e){return e&&H(e)?e:{}}function Le(e){return"string"==typeof e||!(!Array.isArray(e)||!e.every(e=>"string"==typeof e))}async function Fe(e,t,n){var o,r;if(!t.on||!(null==(o=t.queueOn)?void 0:o.length))return;const s=t.queueOn;t.queueOn=[];const i=n||(null==(r=t.config)?void 0:r.id)||"unknown";for(const{type:n,data:o}of s)await ae(t.on,t=>{if(t instanceof ce)throw t;e.status.failed++,e.logger.scope("source").error("source on flush failed",{sourceId:i,type:n,error:t})})(n,o)}function Ue(e){var t;return Boolean(e.config.init)&&!(null==(t=e.config.require)?void 0:t.length)}async function Ve(e,t,n){var o,r;const{code:s,config:i={},env:a={},primary:c,next:l,before:u,cache:f}=n,d=null!=(o=i.state)?o:n.state,p=d?je(d):void 0,g=f,h=g?Oe({...g,stop:null==(r=g.stop)||r}):void 0,m=Le(l)?ze(l,Ne(e.transformers)):void 0,v=Le(u)?ze(u,Ne(e.transformers)):void 0,y=a.push,w=null!=y?y:e.push,b=Boolean(y),k=async(n,o,r)=>{var s;let a;const c=null!=v?v:void 0!==u?(()=>{const t=we(u,ke(r.ingest));return 0===t.length?[]:ze(1===t.length?t[0]:t,Ne(e.transformers))})():[];let f=[n];if(c.length>0&&e.transformers&&Object.keys(e.transformers).length>0){const o=await He(e,e.transformers,c,n,r.ingest,r.respond,`source.${t}.before`);if(null===o.event)return{ok:!0};if(o.stopped)return o.respond&&(r.respond=o.respond),{ok:!0};o.respond&&(r.respond=o.respond),f=Array.isArray(o.event)?o.event:[o.event]}if(h){const t=Pe(h,e);if(t){const n=ke(r.ingest),o=await xe(h,t,n);if(o){if("HIT"===o.status&&void 0!==o.value&&h.stop){let t=o.value;return o.rule.update&&(t=await Ie(t,o.rule.update,{...n,cache:{status:"HIT"}},e)),null==(s=r.respond)||s.call(r,t),{ok:!0}}if("MISS"===o.status&&h.stop&&r.respond){const s=r.respond,i=o.rule.update,c={...n,cache:{status:"MISS"}},l=o.key,u=o.rule.ttl,f=n=>{Ce(t,l,n,u),i?a=(async()=>{const t=await Ie(n,i,c,e);s(t)})():s(n)};r.respond=f}"MISS"!==o.status||h.stop||Ce(t,o.key,!0,o.rule.ttl)}}}const d=m?{kind:"single",preChain:m}:void 0!==l?(()=>{const t=we(l,ke(r.ingest));return 0===t.length?{kind:"single",preChain:[]}:1===t.length?{kind:"single",preChain:ze(t[0],Ne(e.transformers))}:{kind:"many",branches:t.map(t=>ze(t,Ne(e.transformers)))}})():{kind:"single",preChain:[]};p&&p.length>0&&(f=await Promise.all(f.map(t=>Ae(p,t=>_e(t,e),t,e))));let g={ok:!0};for(const n of f)"many"===d.kind?(await Promise.all(d.branches.map((s,a)=>ae(async()=>b?w(n):w(n,{...o,id:t,ingest:Ge(r.ingest,`${t}.${a}`),respond:void 0,mapping:i,preChain:s}),t=>(e.logger.scope("source:many").error(`many branch ${a} failed`,{error:t}),{ok:!0}))())),g={ok:!0}):g=b?await w(n):await w(n,{...o,id:t,ingest:r.ingest,respond:r.respond,mapping:i,preChain:d.preChain});return a&&await a,g},O=async n=>{const o=N(t);if(!i.ingest||void 0===n)return o;const r=await le(n,i.ingest,{collector:e});return{...o,...r,_meta:o._meta}},x=e.logger.scope("source").scope(t),C={command:e.command,sources:e.sources,elb:e.sources.elb.push,logger:x,...a,push:async(e,n={})=>{const o={ingest:N(t),respond:void 0};return k(e,n,o)}},I={collector:e,logger:x,id:t,config:i,env:C,withScope:async(e,t,n)=>{const o={ingest:await O(e),respond:t};return n({...C,push:(e,t={})=>k(e,t,o),ingest:o.ingest,respond:o.respond})}},j=await ae(s,n=>{if(n instanceof ce)throw n;e.status.failed++,e.logger.scope("source").error("source factory failed",{sourceId:t,error:n})})(I);if(!j)return;const A=j.type||"unknown",S=e.logger.scope(A).scope(t);return C.logger=S,c&&(j.config={...j.config,primary:c}),j}function Ye(e,t,n,o){if(n instanceof ce)throw n;e.logger.scope("on").error("on callback failed",{kind:t,...o,error:n})}function Je(e,t){return{collector:e,logger:e.logger.scope("on").scope(String(t))}}function Ze(e,t,n,o,r){if(!t.on)return;const s=t.type||"unknown",i=e.logger.scope(s).scope("on").scope(o),a={collector:e,logger:i,id:n,config:t.config,data:r,env:gt(t.env,t.config.env)};ie(t.on,t=>Ye(e,"destination",t,{destId:n,type:o}))(o,a)}function Qe(e,t,n,o){let r;switch(t){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(n.length)switch(t){case Me.Consent:!function(e,t,n){const o=n||e.consent,r=Je(e,Me.Consent);t.forEach(t=>{Object.keys(o).filter(e=>e in t).forEach(n=>{ie(t[n],t=>Ye(e,"consent",t,{key:n}))(o,r)})})}(e,n,o);break;case Me.Ready:!function(e,t){if(!e.allowed)return;const n=Je(e,Me.Ready);t.forEach(t=>{ie(t,t=>Ye(e,"ready",t))(void 0,n)})}(e,n);break;case Me.Run:!function(e,t){if(!e.allowed)return;const n=Je(e,Me.Run);t.forEach(t=>{ie(t,t=>Ye(e,"run",t))(void 0,n)})}(e,n);break;case Me.Session:!function(e,t){if(!e.session)return;const n=Je(e,Me.Session);t.forEach(t=>{ie(t,t=>Ye(e,"session",t))(e.session,n)})}(e,n);break;default:{const o=Je(e,t);n.forEach(n=>{"function"==typeof n&&ie(n,n=>Ye(e,"generic",n,{type:t}))(r,o)});break}}}function Xe(e,t,n,o){var r;if(!Number.isFinite(n.max)||n.max<=0)throw new Error(`pushBounded: max must be > 0 (got ${n.max})`);if("dropNewest"===(null!=(r=n.onOverflow)?r:"dropOldest"))return e.length>=n.max?(o&&o([t]),{appended:!1,dropped:1}):(e.push(t),{appended:!0,dropped:0});const s=[];for(;e.length>=n.max;)s.push(e.shift());return e.push(t),s.length>0&&o&&o(s),{appended:!0,dropped:s.length}}var et=new WeakMap;function tt(e,t,n,o){et.get(e)||(et.set(e,!0),t.warn(n,o))}function nt(e){et.delete(e)}var ot=Object.freeze({batched:!0});function rt(e){return e===ot}function st(e){return void 0===e?{}:"number"==typeof e?{wait:e}:{wait:e.wait,size:e.size,age:e.age}}function it(e,t){return e.status.destinations[t]||(e.status.destinations[t]={count:0,failed:0,duration:0,queuePushSize:0,dlqSize:0}),e.status.destinations[t]}function at(e,t,n,o){var r;e.dropped[t]||(e.dropped[t]={});const s=e.dropped[t];return s[n]=(null!=(r=s[n])?r:0)+o,s[n]}function ct(e,t,n){if(!e)return[];if(Array.isArray(e)&&e.every(e=>"string"==typeof e))return ze(e,t);if("string"==typeof e)return ze(e,t);const o=we(e,ke(n));return 0===o.length?[]:1===o.length?ze(o[0],t):ze(o,t)}async function lt(e,t,n={},o){var r,s,i,a,c,l;const{allowed:u,consent:f,globals:d,user:p}=e;if(!u)return dt({ok:!1});if(t){const n=e.config.queueMax;if(void 0===n)throw new Error("Collector.Config.queueMax is undefined; defaults must be seeded by collector()");const o=Xe(e.queue,t,{max:n});if(o.dropped>0){const t=at(e.status,E("collector"),"queue",o.dropped);tt(e.queue,e.logger,"collector.queue overflow; oldest events dropped",{buffer:"queue",cap:n,droppedCount:t})}else e.queue.length<n&&nt(e.queue);e.status.in++}o||(o=e.destinations);const g=e.transformers?Ne(e.transformers):{},h=await Promise.all(Object.entries(o||{}).map(async([o,r])=>{var s,i,a,c,l;if(r.config.disabled)return{id:o,destination:r,skipped:!0};let u=(r.queuePush||[]).map(e=>({...e,consent:f}));r.queuePush=[],t&&u.push(L(t));const h=n.ingest?{...n.ingest,_meta:{...n.ingest._meta,path:[...n.ingest._meta.path]}}:N("unknown");if(!u.length&&!(null==(s=r.queueOn)?void 0:s.length))return{id:o,destination:r,skipped:!0};if(!u.length&&(null==(i=r.queueOn)?void 0:i.length)){let t=!1;try{t=await ut(e,r,o)}catch(t){e.status.failed++;const n=r.type||"unknown";e.logger.scope(n).error("destination init failed",{error:t instanceof Error?t.message:String(t)})}return{id:o,destination:r,skipped:!t}}const m=[],v=u.filter(t=>{const n=J(r.config.consent,f,t.consent);if(n)return t.consent=n,m.push(t),!1;const s=De(e,{stepId:E("destination",o),stepType:"destination",phase:"skip",eventId:"string"==typeof t.id?t.id:"",now:Date.now()});return s.skipReason="consent",f&&(s.consent={...f}),r.config.consent&&(s.meta={required:{...r.config.consent}}),pe(e,s),!0});if(v.length>0){const t=r.queuePush,n=r.config.id||o,s={max:null!=(a=r.config.queueMax)?a:1e3};let i=0;for(const e of v)i+=Xe(t,e,s).dropped;if(i>0){it(e,n);const o=at(e.status,E("destination",n),"queue",i);tt(t,e.logger.scope(r.type||"unknown"),"destination.queuePush overflow; oldest events dropped",{buffer:"queuePush",destination:n,cap:s.max,droppedCount:o})}else t.length<s.max&&nt(t)}if(!m.length)return{id:o,destination:r,queue:u};let y,w,b=!1;try{b=await ut(e,r,o)}catch(t){e.status.failed++;const n=r.type||"unknown";e.logger.scope(n).error("destination init failed",{error:t instanceof Error?t.message:String(t)})}if(!b)return{id:o,destination:r,queue:u};r.dlq||(r.dlq=[]);const k=ct(r.config.before,g,h),O=r.config.next,x=null==(c=r.config)?void 0:c.cache,C=x?Oe(x):void 0,I=C?Pe(C,e):void 0,j=(null==(l=r.config)?void 0:l.state)?je(r.config.state):void 0,A=null==j?void 0:j.filter(e=>"get"===e.mode),S=null==j?void 0:j.filter(e=>"set"===e.mode);let q=0,$=0;return await Promise.all(m.map(async t=>{let s;if(t.globals=z(d,t.globals),t.user=z(p,t.user),(null==C?void 0:C.stop)&&I){const e=ke(h,t),n=await xe(C,I,e);if("HIT"===(null==n?void 0:n.status))return t;"MISS"===(null==n?void 0:n.status)&&(s={key:n.key,ttl:n.rule.ttl})}let i=t,a=n.respond;if(k.length>0&&e.transformers&&Object.keys(e.transformers).length>0){const r=await He(e,e.transformers,k,t,h,n.respond,`destination.${o}.before`);if(null===r.event)return t;r.respond&&(a=r.respond),i=Array.isArray(r.event)?r.event[0]:r.event}if(C&&!C.stop&&I){const e=ke(h,i),n=await xe(C,I,e);if("HIT"===(null==n?void 0:n.status))return t;"MISS"===(null==n?void 0:n.status)&&(s={key:n.key,ttl:n.rule.ttl})}A&&A.length>0&&i&&(i=await Ae(A,t=>_e(t,e),i,e));const c=Date.now();let l=!1;const u=await ae(ft,t=>{var n;const s=r.type||"unknown";e.logger.scope(s).error("Push failed",{error:t,event:i.name}),y=t,l=!0;const a=r.dlq,c=r.config.id||o,u={max:null!=(n=r.config.dlqMax)?n:100},f=Xe(a,[i,t],u);if(f.dropped>0){it(e,c);const t=at(e.status,E("destination",c),"dlq",f.dropped);tt(a,e.logger.scope(r.type||"unknown"),"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:c,cap:u.max,droppedCount:t})}else a.length<u.max&&nt(a)})(e,r,o,i,h,a);if(q+=Date.now()-c,s&&I&&void 0===r.config.mock&&Ce(I,s.key,null==u||u,s.ttl),!l&&S&&S.length>0&&i&&(i=await Ae(S,t=>_e(t,e),i,e)),void 0===u||rt(u)||(w=u),rt(u)&&$++,!l&&O){void 0!==u&&(h._response=u);const t=ct(O,g,h);if(t.length>0&&e.transformers&&Object.keys(e.transformers).length>0){const n=await He(e,e.transformers,t,i,h,a,`destination.${o}.next`);n.respond&&(a=n.respond)}}return t})),{id:o,destination:r,error:y,response:w,totalDuration:q,batchedCount:$,allowedCount:m.length}})),m={},v={},y={};for(const t of h){if(t.skipped)continue;const n=t.destination,o={type:n.type||"unknown",data:t.response};it(e,t.id);const u=e.status.destinations[t.id],f=Date.now();if(u.queuePushSize=null!=(s=null==(r=n.queuePush)?void 0:r.length)?s:0,u.dlqSize=null!=(a=null==(i=n.dlq)?void 0:i.length)?a:0,t.error)o.error=t.error,y[t.id]=o,u.failed++,u.lastAt=f,u.duration+=t.totalDuration||0,e.status.failed++;else if(t.queue&&t.queue.length)v[t.id]=o;else{const n=null!=(c=t.batchedCount)?c:0,r=null!=(l=t.allowedCount)?l:0;(Math.max(0,r-n)>0||0===r)&&(m[t.id]=o,u.count++,u.lastAt=f,u.duration+=t.totalDuration||0,e.status.out++)}}return dt({event:t,...Object.keys(m).length&&{done:m},...Object.keys(v).length&&{queued:v},...Object.keys(y).length&&{failed:y}})}async function ut(e,t,n){var o;if(t.init&&!t.config.init){const r=t.type||"unknown",s=e.logger.scope(r),i={collector:e,logger:s,id:n,config:t.config,env:gt(t.env,t.config.env)};s.debug("init");const a=Date.now();let c;pe(e,De(e,{stepId:E("destination",n),stepType:"destination",phase:"init",eventId:"",now:a}));try{c=await de(t.init,"DestinationInit",e.hooks,e.logger)(i)}catch(t){const o=Date.now(),r=De(e,{stepId:E("destination",n),stepType:"destination",phase:"error",eventId:"",now:o});throw r.durationMs=o-a,r.error=t instanceof Error?{name:t.name,message:t.message}:{message:String(t)},pe(e,r),t}if(!1===c)return c;if(t.config={...c||t.config,init:!0},null==(o=t.queueOn)?void 0:o.length){const o=t.queueOn;t.queueOn=[];for(const{type:r,data:s}of o)Ze(e,t,n,r,s)}s.debug("init done")}return!0}async function ft(e,t,n,o,r,s){var i,a,c,l,u,f,d;const{config:p}=t,g=await fe(o,p,e);if(g.ignore)return!1;const h=t.type||"unknown",m=e.logger.scope(h),v={collector:e,logger:m,id:n,config:p,data:g.data,rule:g.mapping,ingest:r,env:{...gt(t.env,p.env),...s?{respond:s}:{}}};if(void 0!==p.mock)return m.debug("mock",{event:g.event.name}),p.mock;const y=g.mapping,w=g.mappingKey||"* *";if((null==y?void 0:y.batch)&&t.pushBatch&&void 0===p.mock){if(t.batches=t.batches||{},!t.batches[w]){const o={key:w,entries:[],events:[],data:[]},r=st(y.batch),s=st(p.batch),d=null!=(a=null!=(i=r.wait)?i:s.wait)?a:3e4,g=null!=(l=null!=(c=r.size)?c:s.size)?l:1e3,h=null!=(f=null!=(u=r.age)?u:s.age)?f:3e4,v=gt(t.env,p.env),b=function(e,t=1e3,n=!1){const{wait:o,size:r,age:s}=function(e,t){var n;return"number"==typeof e?{wait:e}:e?{wait:null!=(n=e.wait)?n:t,size:e.size,age:e.age}:{wait:t}}(t,1e3);let i,a,c=null,l=null,u=!1,f=[],d=0;const p=()=>{c&&(clearTimeout(c),c=null),l&&(clearTimeout(l),l=null),d=0,a=void 0},g=()=>{const t=a,n=f;if(p(),f=[],t)return i=e(...t),n.forEach(e=>e(i)),i;n.forEach(e=>e(void 0))},h=(...t)=>new Promise(p=>{const h=n&&!u;if(a=t,d+=1,f.push(p),c&&clearTimeout(c),c=setTimeout(()=>{c=null,n&&!u||g()},o),void 0===s||l||(l=setTimeout(()=>{l=null,g()},s)),void 0!==r&&d>=r)g();else if(h){u=!0,i=e(...t);const n=f;f=[],n.forEach(e=>e(i))}});return h.flush=()=>a||0!==f.length?new Promise(e=>{f.push(e),g()}):Promise.resolve(void 0),h.cancel=()=>{const e=f;f=[],p(),e.forEach(e=>e(void 0))},h.size=()=>d,h}(async()=>{var o;const r=t.batches[w].batched;if(0===r.entries.length)return;const s={key:r.key,entries:r.entries,events:r.events,data:r.data};r.entries=[],r.events=[],r.data=[];const i=s.entries[0],a={collector:e,logger:m,id:n,config:p,data:void 0,rule:i.rule,ingest:i.ingest,env:{...v,...i.respond?{respond:i.respond}:{}}};m.debug("push batch",{events:s.entries.length});const c=t.config.id||n,l=it(e,c),u=Date.now(),f=De(e,{stepId:E("destination",n),stepType:"destination",phase:"flush",eventId:"",now:u});f.batch={size:s.entries.length,index:0},pe(e,f);let d=!0;await ae(de(t.pushBatch,"DestinationPushBatch",e.hooks,e.logger),o=>{var r;d=!1;const i=Date.now(),a=De(e,{stepId:E("destination",n),stepType:"destination",phase:"error",eventId:"",now:i});a.durationMs=i-u,a.error=o instanceof Error?{name:o.name,message:o.message}:{message:String(o)},a.batch={size:s.entries.length,index:0},pe(e,a);const f=t.dlq=t.dlq||[],p={max:null!=(r=t.config.dlqMax)?r:100};let g=0;for(const e of s.entries)g+=Xe(f,[e.event,o],p).dropped;if(g>0){const t=at(e.status,E("destination",c),"dlq",g);tt(f,m,"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:c,cap:p.max,droppedCount:t})}else f.length<p.max&&nt(f);l.failed+=s.entries.length,l.dlqSize=f.length,e.status.failed+=s.entries.length,m.error("Push batch failed",{error:o instanceof Error?o.message:String(o),entries:s.entries.length})})(s,a),m.debug("push batch done"),l.inFlightBatch=Math.max(0,(null!=(o=l.inFlightBatch)?o:0)-s.entries.length),d&&(l.count+=s.entries.length,l.lastAt=Date.now(),e.status.out+=s.entries.length)},{wait:d,size:g,age:h});t.batches[w]={batched:o,batchFn:()=>{b()},flush:async()=>{await b.flush()}}}const o=t.batches[w];o.batched.entries.push({event:g.event,ingest:r,respond:s,rule:y,data:g.data}),o.batched.events.push(g.event),K(g.data)&&o.batched.data.push(g.data);const h=t.config.id||n,v=it(e,h);return v.inFlightBatch=(null!=(d=v.inFlightBatch)?d:0)+1,o.batchFn(),ot}{m.debug("push",{event:g.event.name});const o="string"==typeof g.event.id?g.event.id:"",r=Date.now(),s=De(e,{stepId:E("destination",n),stepType:"destination",phase:"in",eventId:o,now:r});g.mappingKey&&(s.mappingKey=g.mappingKey),g.event.consent&&(s.consent={...g.event.consent}),pe(e,s);try{const s=await de(t.push,"DestinationPush",e.hooks,e.logger)(g.event,v),i=Date.now(),a=De(e,{stepId:E("destination",n),stepType:"destination",phase:"out",eventId:o,now:i});return a.durationMs=i-r,a.outEvent=s,g.mappingKey&&(a.mappingKey=g.mappingKey),pe(e,a),m.debug("push done"),s}catch(t){const s=Date.now(),i=De(e,{stepId:E("destination",n),stepType:"destination",phase:"error",eventId:o,now:s});throw i.durationMs=s-r,i.error=t instanceof Error?{name:t.name,message:t.message}:{message:String(t)},g.mappingKey&&(i.mappingKey=g.mappingKey),pe(e,i),t}}}function dt(e){return{ok:!(null==e?void 0:e.failed),...e}}function pt(e){const{code:t,config:n={},env:o={},cache:r,state:s}=e,{config:i}=Re(e,"before"),{config:a}=Re({...e,config:i},"next"),c={...t.config,...n,...a};r&&(c.cache=r),void 0!==s&&void 0===c.state&&(c.state=s);const l=gt(t.env,o);return{...t,config:c,env:l}}function gt(e,t){return e||t?t?e&&H(e)&&H(t)?{...e,...t}:t:e:{}}async function ht(e,t,n){const o=Object.entries(e).map(async([e,o])=>{var r;const s=o.destroy;if(!s)return;const i=o.type||"unknown",a=n.scope(i),c={id:e,config:o.config,env:null!=(r=o.env)?r:{},logger:a};try{await Promise.race([s(c),new Promise((n,o)=>setTimeout(()=>o(new Error(`${t} '${e}' destroy timed out`)),5e3))])}catch(n){a.error(`${t} '${e}' destroy failed: ${n}`)}});await Promise.allSettled(o)}async function mt(e,t,n){let o,r,s=!1;switch(t){case Me.Config:H(n)&&(z(e.config,n,{shallow:!1}),r=n,s=!0);break;case Me.Consent:if(H(n)){const{update:t}=function(e,t){const n={};return Object.entries(t).forEach(([e,t])=>{n[e]=!!t}),e.consent=z(e.consent,n),{update:n}}(e,n);r=t,s=!0}break;case Me.Custom:H(n)&&(e.custom=z(e.custom,n),r=n,s=!0);break;case Me.Destination:H(n)&&"code"in n&&H(n.code)&&(o=await async function(e,t){const{code:n,config:o={},env:r={},before:s,next:i,cache:a,state:c}=t;if(!G(n.push))return dt({ok:!1,failed:{invalid:{type:"invalid",error:"Destination code must have a push method"}}});const l=o||{init:!1};let u=s?{...l,before:s}:{...l};i&&(u={...u,next:i}),a&&(u={...u,cache:a}),void 0!==c&&void 0===u.state&&(u={...u,state:c});const f={...n,config:u,env:gt(n.env,r)};let d=f.config.id;if(!d)do{d=Q(5,"abcdefghijklmnopqrstuvwxyz")}while(e.destinations[d]);return e.destinations[d]=f,!1!==f.config.queue&&(f.queuePush=[...e.queue]),lt(e,void 0,{},{[d]:f})}(e,n));break;case Me.Globals:H(n)&&(e.globals=z(e.globals,n),r=n,s=!0);break;case Me.Hook:if(H(n)&&W(n.name)&&G(n.fn)){const{name:t,fn:o}=n;e.hooks[t]=o,r=n,s=!0}break;case Me.On:if(H(n)&&W(n.type)){const{type:t,rules:o}=n;await async function(e,t,n){const o=e.on,r=o[t]||[],s=B(n)?n:[n];s.forEach(e=>{r.push(e)}),o[t]=r,Qe(e,t,s)}(e,t,o)}break;case Me.Ready:s=!0;break;case Me.Run:o=await async function(e,t){return e.allowed=!0,e.timing=Date.now(),t&&(t.consent&&(e.consent=z(e.consent,t.consent)),t.user&&(e.user=z(e.user,t.user)),t.globals&&(e.globals=z(e.config.globalsStatic||{},t.globals)),t.custom&&(e.custom=z(e.custom,t.custom))),Object.values(e.destinations).forEach(e=>{e.queuePush=[]}),e.queue=[],e.round++,await lt(e)}(e,n),s=!0;break;case Me.Session:s=!0;break;case Me.Shutdown:await async function(e){const t=e.logger;await ht(e.sources,"source",t),await ht(e.destinations,"destination",t),await ht(e.transformers,"transformer",t),await ht(e.stores,"store",t)}(e);break;case Me.User:H(n)&&(z(e.user,n,{shallow:!1}),r=n,s=!0)}return s&&(await async function(e,t,n,o){var r,s;let i,a=n||[];switch(n||(a=e.on[t]||[]),t){case Me.Consent:i=o||e.consent;break;case Me.Session:i=e.session;break;case Me.User:i=o||e.user;break;case Me.Custom:i=o||e.custom;break;case Me.Globals:i=o||e.globals;break;case Me.Config:i=o||e.config;break;case Me.Ready:case Me.Run:default:i=void 0}let c=!1;for(const[n,o]of Object.entries(e.sources)){if(null==(r=o.config.require)?void 0:r.length){const e=o.config.require.indexOf(t);-1!==e&&o.config.require.splice(e,1)}o.on&&(Ue(o)?!1===await ae(o.on,o=>Ye(e,"source",o,{sourceId:n,type:t}))(t,i)&&(c=!0):(o.queueOn=o.queueOn||[],o.queueOn.push({type:t,data:i})))}Object.entries(e.destinations).forEach(([n,o])=>{if(o.on){if(!o.config.init)return o.queueOn=o.queueOn||[],void o.queueOn.push({type:t,data:i});Ze(e,o,n,t,i)}});for(const[t,n]of Object.entries(e.sources))Ue(n)&&(null==(s=n.queueOn)?void 0:s.length)&&await Fe(e,n,t);return Object.keys(e.pending.destinations).length>0&&await async function(e,t){var n;for(const[o,r]of Object.entries(e.pending.destinations)){if(!e.pending.destinations[o]||e.destinations[o])continue;const s=null==(n=r.config)?void 0:n.require;if(!s)continue;const i=s.indexOf(t);if(-1===i)continue;if(s.splice(i,1),s.length>0)continue;delete e.pending.destinations[o];const a=pt(r);!1!==a.config.queue&&(a.queuePush=[...e.queue]),e.destinations[o]=a}}(e,t),Qe(e,t,a,o),!c}(e,t,void 0,r),o=await lt(e)),o||dt({ok:!0})}function vt(e,t){if(!t.name)throw new Error("Event name is required");const[n,o]=t.name.split(" ");if(!n||!o)throw new Error("Event name is invalid");const{timestamp:r=Date.now(),name:s=`${n} ${o}`,data:i={},context:a={},globals:c=e.globals,custom:l={},user:u=e.user,nested:f=[],consent:d=e.consent,id:p=Z(),trigger:g="",entity:h=n,action:m=o,timing:v=0,source:y={type:"collector",schema:"4"}}=t;return{name:s,data:i,context:a,globals:c,custom:l,user:u,nested:f,consent:d,id:p,trigger:g,entity:h,action:m,timestamp:r,timing:v,source:y}}function yt(e={}){var t,n,o;const r=null!=(t=e.maxEntries)?t:1e4,s=null!=(n=e.lowWaterMark)?n:.8,i=null!=(o=e.sweepIntervalMs)?o:6e4,a=Math.floor(r*s),c=new Map,l={hits:0,misses:0,populates:0,writes:0,deletes:0,evictions_entries:0,evictions_ttl:0};let u;return i>0&&(u=setInterval(function(){const e=Date.now();let t=0;for(const[n,o]of c)void 0!==o.expires&&o.expires<=e&&(c.delete(n),t++);l.evictions_ttl+=t},i),u&&"function"==typeof u.unref&&u.unref()),{type:"memory",config:{},get(e){const t=c.get(e);if(t)return void 0!==t.expires&&t.expires<=Date.now()?(c.delete(e),l.evictions_ttl++,void l.misses++):(c.delete(e),c.set(e,t),l.hits++,t.value);l.misses++},set(e,t,n){const o=!c.has(e);o||c.delete(e),c.set(e,{value:t,expires:void 0!==n?Date.now()+n:void 0}),l.writes++,o&&l.populates++,c.size>r&&function(){if(c.size<=r)return;const e=c.size-a;let t=0;for(const n of c.keys()){if(t>=e)break;c.delete(n),t++}l.evictions_entries+=t}()},delete(e){c.delete(e)&&l.deletes++},get counters(){return{...l}},destroy(){void 0!==u&&(clearInterval(u),u=void 0),c.clear()}}}function wt(e,t){const{cacheConfig:n,cacheStore:o,namespace:r,logger:s,storeId:i,collector:a}=t,c=(e,t)=>{if(!a)return;const n=De(a,{stepId:`store.${i}`,stepType:"store",phase:"in",eventId:"",now:Date.now()});n.meta={op:"cache",cached:"hit"===t,status:t,key:e},pe(a,n)},l={hits:0,misses:0,populates:0,writes:0,deletes:0,inflight_dedups:0},u=n.rules.map(e=>({match:e.match?ge(e.match):()=>!0,ttl:e.ttl})),f=e=>`${r}:${e}`;function d(e,t){const n=void 0===t?{key:e}:{key:e,value:t};return u.find(e=>e.match(n))}const p=new Map;return{type:e.type,config:e.config,setup:e.setup,get counters(){return{...l}},async get(t){const n=f(t),r=await o.get(n);if(void 0!==r)return l.hits++,c(t,"hit"),r;const s=p.get(n);if(s)return l.inflight_dedups++,c(t,"hit"),s;l.misses++,c(t,"miss");const i=(async()=>{try{const r=await e.get(t);if(void 0===r)return;const s=d(t,r);if(s)try{await o.set(n,r,1e3*s.ttl),l.populates++}catch(e){g("set",t,e)}return r}finally{p.delete(n)}})();return p.set(n,i),i},async set(t,n,r){l.writes++,await e.set(t,n,r);const s=d(t,n);if(s)try{await o.set(f(t),n,1e3*s.ttl)}catch(e){g("set",t,e)}},async delete(t){l.deletes++,await e.delete(t);try{await o.delete(f(t))}catch(e){g("delete",t,e)}}};function g(e,t,n){const o=`store-cache(${i}): cache ${e} failed for "${t}"; backing succeeded, continuing`;s?s.warn(o,{error:n}):console.warn(o,n)}}function bt(e,t,n){const o=`store.${n}`,r=de(t.get,"StoreGet",e.hooks,e.logger),s=de(t.set,"StoreSet",e.hooks,e.logger),i=de(t.delete,"StoreDelete",e.hooks,e.logger);t.get=async t=>{const n=Date.now(),s=De(e,{stepId:o,stepType:"store",phase:"in",eventId:"",now:n});s.meta={op:"get",key:t},pe(e,s);try{const s=await r(t),i=Date.now(),a=De(e,{stepId:o,stepType:"store",phase:"out",eventId:"",now:i});return a.durationMs=i-n,a.meta={op:"get",key:t},pe(e,a),s}catch(r){const s=Date.now(),i=De(e,{stepId:o,stepType:"store",phase:"error",eventId:"",now:s});throw i.durationMs=s-n,i.meta={op:"get",key:t},i.error=r instanceof Error?{name:r.name,message:r.message}:{message:String(r)},pe(e,i),r}},t.set=async(t,n,r)=>{const i=Date.now(),a=De(e,{stepId:o,stepType:"store",phase:"in",eventId:"",now:i});a.meta={op:"set",key:t},pe(e,a);try{await s(t,n,r);const a=Date.now(),c=De(e,{stepId:o,stepType:"store",phase:"out",eventId:"",now:a});c.durationMs=a-i,c.meta={op:"set",key:t},pe(e,c)}catch(n){const r=Date.now(),s=De(e,{stepId:o,stepType:"store",phase:"error",eventId:"",now:r});throw s.durationMs=r-i,s.meta={op:"set",key:t},s.error=n instanceof Error?{name:n.name,message:n.message}:{message:String(n)},pe(e,s),n}},t.delete=async t=>{const n=Date.now(),r=De(e,{stepId:o,stepType:"store",phase:"in",eventId:"",now:n});r.meta={op:"delete",key:t},pe(e,r);try{await i(t);const r=Date.now(),s=De(e,{stepId:o,stepType:"store",phase:"out",eventId:"",now:r});s.durationMs=r-n,s.meta={op:"delete",key:t},pe(e,s)}catch(r){const s=Date.now(),i=De(e,{stepId:o,stepType:"store",phase:"error",eventId:"",now:s});throw i.durationMs=s-n,i.meta={op:"delete",key:t},i.error=r instanceof Error?{name:r.name,message:r.message}:{message:String(r)},pe(e,i),r}}}async function kt(e){var t,n;const o=z({globalsStatic:{},sessionStatic:{},run:!0,queueMax:1e3},e,{merge:!1,extend:!1}),r=ne({level:null==(t=e.logger)?void 0:t.level,handler:null==(n=e.logger)?void 0:n.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||{},observers:new Set,logger:r,on:{},queue:[],round:0,session:void 0,status:{startedAt:Date.now(),in:0,out:0,failed:0,sources:{},destinations:{},dropped:{}},timing:Date.now(),user:e.user||{},sources:{},pending:{destinations:{}},push:void 0,command:void 0};var a,c;i.push=function(e,t){const n=de(async(n,o={})=>await ae(async()=>{var r;const s=Date.now(),{id:i,ingest:a,respond:c,mapping:l,preChain:u,include:f,exclude:d}=o;let p=c,g=n;const h=f||d?function(e,t,n){let o=e;return t&&(o=Object.fromEntries(Object.entries(o).filter(([e])=>t.includes(e)))),n&&(o=Object.fromEntries(Object.entries(o).filter(([e])=>!n.includes(e)))),o}(e.destinations,f,d):void 0,m=null!=a?a:N(i||"unknown");if(l){const t=await fe(g,l,e);if(t.ignore)return dt({ok:!0});if(l.consent&&!J(l.consent,e.consent,t.event.consent))return dt({ok:!0});g=t.event}if((null==u?void 0:u.length)&&e.transformers&&Object.keys(e.transformers).length>0){const n=await He(e,e.transformers,u,g,m,p,i?`source.${i}.next`:void 0);if(null===n.event)return dt({ok:!0});if(n.stopped)return n.respond&&(p=n.respond),dt({ok:!0});if(n.respond&&(p=n.respond),Array.isArray(n.event)){const o=await Promise.all(n.event.map(async n=>{const o=t(n),r=vt(e,o);return lt(e,r,{id:i,ingest:m,respond:p},h)}));if(i){e.status.sources[i]||(e.status.sources[i]={count:0,duration:0});const t=e.status.sources[i];t.count+=n.event.length,t.lastAt=Date.now(),t.duration+=Date.now()-s}return null!=(r=o[0])?r:dt({ok:!0})}g=n.event}const v=t(g),y=vt(e,v),w=await lt(e,y,{id:i,ingest:m,respond:p},h);if(i){e.status.sources[i]||(e.status.sources[i]={count:0,duration:0});const t=e.status.sources[i];t.count++,t.lastAt=Date.now(),t.duration+=Date.now()-s}return w},t=>{if(t instanceof ce)throw t;return e.status.failed++,e.logger.error("push failed",{event:n,ingest:o.ingest,error:t}),dt({ok:!1})})(),"Push",e.hooks,e.logger);return async(t,o)=>{const r="string"==typeof t.id?t.id:"",s=Date.now();pe(e,De(e,{stepId:"collector.push",stepType:"collector",phase:"in",eventId:r,now:s}));try{const i=await n(t,o),a=Date.now(),c=De(e,{stepId:"collector.push",stepType:"collector",phase:"out",eventId:r,now:a});return c.durationMs=a-s,c.outEvent=i,pe(e,c),i}catch(t){const n=Date.now(),o=De(e,{stepId:"collector.push",stepType:"collector",phase:"error",eventId:r,now:n});throw o.durationMs=n-s,o.error=t instanceof Error?{name:t.name,message:t.message}:{message:String(t)},pe(e,o),t}}}(i,e=>({timing:Math.round((Date.now()-i.timing)/10)/100,source:{type:"collector",schema:"4",version:"4.1.3-next-1780071196115"},...e})),i.command=(c=mt,de(async(e,t,n)=>await ae(async()=>await c(a,e,t,n),n=>{if(n instanceof ce)throw n;return a.status.failed++,a.logger.error("command failed",{command:e,data:t,error:n}),dt({ok:!1})})(),"Command",(a=i).hooks,a.logger));const l=e.stores||{};return i.stores=await async function(e,t={}){var n;const o={};for(const[n,r]of Object.entries(t)){const{code:t,config:s={},env:i={}}=r,a=e.logger.scope("store").scope(n),c={collector:e,logger:a,id:n,config:s,env:i},l=await t(c);o[n]=l}const r=t,s=function(e){const t={};for(const n of Object.keys(e))t[n]="WHITE";const n=[],o=[];function r(s){var i;const a=t[s];if("BLACK"===a)return;if("GRAY"===a){const e=o.indexOf(s),t=o.slice(-1===e?0:e).concat(s).join(" -> ");throw new Error(`Cycle in cache.store chain: ${t}`)}t[s]="GRAY",o.push(s);const c=null==(i=e[s].cache)?void 0:i.store;if(void 0!==c){if(!(c in e))throw new Error(`Store "${s}" cache.store references "${c}", which is not declared in flow.stores`);r(c)}o.pop(),t[s]="BLACK",n.push(s)}for(const n of Object.keys(e))"WHITE"===t[n]&&r(n);return n}(r);for(const t of s){const s=r[t].cache;if(!s)continue;let i,a;void 0!==s.store?(i=o[s.store],a=s.store):(o.__cache||(o.__cache=yt()),i=o.__cache,a="__cache");const c=null!=(n=s.namespace)?n:t;e.logger.scope("store-cache").scope(t).info(`store "${t}" caches with namespace "${c}:" via ${a}`),o[t]=wt(o[t],{storeId:t,cacheConfig:s,cacheStore:i,namespace:c,logger:e.logger.scope("store-cache").scope(t),collector:e})}for(const[t,n]of Object.entries(o))"__cache"!==t&&bt(e,n,t);return o}(i,l),function(e,t,n){const o=new Map;for(const[n,r]of Object.entries(e))t[n]&&o.set(r,t[n]);if(0!==o.size)for(const e of[n.transformers,n.destinations,n.sources])if(e)for(const t of Object.values(e))r(t.env);function r(e){if(e)for(const[t,n]of Object.entries(e))if("object"==typeof n&&null!==n){const r=o.get(n);r&&(e[t]=r)}}}(l,i.stores,e),i.stores.__cache||(i.stores.__cache=yt()),i.destinations=await async function(e,t={}){var n,o;const r={};for(const[s,i]of Object.entries(t))(null==(o=null==(n=i.config)?void 0:n.require)?void 0:o.length)?e.pending.destinations[s]=i:r[s]=pt(i);return r}(i,e.destinations||{}),i.transformers=await async function(e,t={}){var n,o,r,s;const i={};for(const[a,c]of Object.entries(t)){const{code:t,env:l={}}=c,u=Te(c,"Transformer");if(!u.ok){e.logger.warn(`Transformer ${a} invalid (${u.code}): ${u.reason}. Skipping.`);continue}const{config:f}=Re(c,"before"),{config:d}=Re({...c,config:f},"next"),p=Object.keys(l).length>0?{...d,env:l}:d,{cache:g}=c,h=g?{...p,cache:g}:p,{state:m}=c,v=void 0!==m&&void 0===h.state?{...h,state:m}:h,y=e.logger.scope("transformer").scope(a),w={collector:e,logger:y,id:a,ingest:N(a),config:v,env:l},b=null!=t?t:e=>{const t=c.mapping;if(t){const n=[];if(void 0!==t.data&&n.push("data"),t.mapping)for(const[e,o]of Object.entries(t.mapping))if("object"==typeof o&&null!==o)for(const[t,r]of Object.entries(o)){if("object"!=typeof r||null===r)continue;const o=r;void 0!==o.data&&n.push(`mapping[${e}][${t}].data`),void 0!==o.silent&&n.push(`mapping[${e}][${t}].silent`)}return n.length>0&&e.collector.logger.warn(`Transformer ${a}: \`${n.join(", ")}\` ignored at transformer position (only event-mutating fields apply).`),{type:"pass",config:e.config,push:async n=>{const o=await fe(n,t,e.collector);return!o.ignore&&{event:o.event}}}}return{type:"pass",config:e.config,push:e=>({event:e})}},k=await b(w);void 0!==c.before&&void 0===(null==(n=k.config)?void 0:n.before)&&(k.config={...null!=(o=k.config)?o:{},before:c.before}),void 0!==c.next&&void 0===(null==(r=k.config)?void 0:r.next)&&(k.config={...null!=(s=k.config)?s:{},next:c.next}),i[a]=k}return i}(i,e.transformers||{}),i}async function Ot(e){e=e||{};const t=await kt(e),n=(o=t,{type:"elb",config:{},push:async(e,t,n,r,s)=>{if("string"==typeof e&&e.startsWith("walker ")){const n=e.replace("walker ","");return o.command(n,t)}let i;if("string"==typeof e)i={name:e},t&&"object"==typeof t&&!Array.isArray(t)&&(i.data=t);else{if(!e||"object"!=typeof e)return dt({ok:!1});i=e,t&&"object"==typeof t&&!Array.isArray(t)&&(i.data={...i.data||{},...t})}return n&&"object"==typeof n&&(i.context=n),r&&Array.isArray(r)&&(i.nested=r),s&&"object"==typeof s&&(i.custom=s),o.push(i)}});var o;t.sources.elb=n,await async function(e,t={}){var n;const o={};for(const[r,s]of Object.entries(t)){const t=await Ve(e,r,s);if(!t)continue;const i=null==(n=s.config)?void 0:n.require;t.config={...t.config,init:!1,...i?{require:[...i]}:{}},o[r]=t}Object.assign(e.sources,o);for(const t of Object.keys(o)){const n=e.sources[t];let o=!1;n.init&&await ae(n.init.bind(n),n=>{if(n instanceof ce)throw n;o=!0,e.status.failed++,e.logger.scope("source").error("source init failed",{sourceId:t,error:n})})(),o||(n.config.init=!0,Ue(n)&&await Fe(e,n,t))}return o}(t,e.sources||{});const{consent:r,user:s,globals:i,custom:a}=e;r&&await t.command("consent",r),s&&await t.command("user",s),i&&Object.assign(t.globals,i),a&&Object.assign(t.custom,a),t.config.run&&await t.command("run");let c=n.push;const l=Object.values(t.sources).filter(e=>"elb"!==e.type),u=l.find(e=>e.config.primary);return u?c=u.push:l.length>0&&(c=l[0].push),{collector:t,elb:c}}var xt,Ct=async e=>{let t;return{get flow(){return t},trigger:()=>async n=>{var o;const r=window;if(r.OptanonActiveGroups=n,r.OneTrust={IsAlertBoxClosed:()=>!0},!t){const n=await Ot({...e,run:null==(o=e.run)||o});t={collector:n.collector,elb:n.elb}}}}},It=(e,t)=>{const n=t.window;"string"==typeof e&&(n.OptanonActiveGroups=e,n.OneTrust={IsAlertBoxClosed:()=>!0})},jt={C0001:"functional",C0002:"analytics",C0003:"functional",C0004:"marketing",C0005:"marketing"},At=async e=>{var t,n,o,r,s,i,a,c;const{config:l,env:u}=e,{elb:f}=u,d=null!=(t=u.window)?t:void 0!==globalThis.window?globalThis.window:void 0,p={...jt,...null!=(o=null==(n=null==l?void 0:l.settings)?void 0:n.categoryMap)?o:{}},g={};Object.entries(p).forEach(([e,t])=>{g[e.toLowerCase()]=t});const h={categoryMap:p,explicitOnly:null==(s=null==(r=null==l?void 0:l.settings)?void 0:r.explicitOnly)||s,globalName:null!=(a=null==(i=null==l?void 0:l.settings)?void 0:i.globalName)?a:"OneTrust"},m={settings:h};let v,y,w=!1;if(d){const e=null!=(c=h.globalName)?c:"OneTrust",t=new Set(Object.values(g)),n=e=>{const n={};return t.forEach(e=>{n[e]=!1}),e.split(",").filter(e=>e.length>0).forEach(e=>{const t=g[e.toLowerCase()];t&&(n[t]=!0)}),n},o=()=>{const t=d.OptanonActiveGroups;if(null==t)return;if(h.explicitOnly){const t=d[e];if((null==t?void 0:t.IsAlertBoxClosed)&&!t.IsAlertBoxClosed())return}const o=n(t);Object.keys(o).length>0&&f("walker consent",o)},r=d[e];r&&void 0!==d.OptanonActiveGroups&&o(),r||(y=d.OptanonWrapper,w=!0,d.OptanonWrapper=()=>{y&&y(),o(),d.OptanonWrapper=y,w=!1}),v=()=>{o()},d.addEventListener("OneTrustGroupsUpdated",v)}return{type:"cookiepro",config:m,push:f,destroy:async e=>{d&&v&&d.removeEventListener("OneTrustGroupsUpdated",v),d&&w&&(d.OptanonWrapper=y)}}},St=At;return xt=s,((r,s,i,a)=>{if(s&&"object"==typeof s||"function"==typeof s)for(let c of n(s))o.call(r,c)||c===i||e(r,c,{get:()=>s[c],enumerable:!(a=t(s,c))||a.enumerable});return r})(e({},"__esModule",{value:!0}),xt)})();
1
+ "use strict";var SourceCookiePro=(()=>{var e=Object.defineProperty,t=Object.getOwnPropertyDescriptor,n=Object.getOwnPropertyNames,o=Object.prototype.hasOwnProperty,r={};((t,n)=>{for(var o in n)e(t,o,{get:n[o],enumerable:!0})})(r,{DEFAULT_CATEGORY_MAP:()=>i,SourceCookiePro:()=>a,default:()=>c,sourceCookiePro:()=>s});var l,a={},i={C0001:"functional",C0002:"analytics",C0003:"functional",C0004:"marketing",C0005:"marketing"},s=async e=>{var t,n,o,r,l,a,s;const{config:c,env:u}=e,{elb:p}=u,d=null!=(t=u.window)?t:void 0!==globalThis.window?globalThis.window:void 0,v={...i,...null!=(o=null==(n=null==c?void 0:c.settings)?void 0:n.categoryMap)?o:{}},O={};Object.entries(v).forEach(([e,t])=>{O[e.toLowerCase()]=t});const f={categoryMap:v,explicitOnly:null==(l=null==(r=null==c?void 0:c.settings)?void 0:r.explicitOnly)||l,globalName:null!=(s=null==(a=null==c?void 0:c.settings)?void 0:a.globalName)?s:"OneTrust"};let g,y,b=!1;return{type:"cookiepro",config:{settings:f},push:p,init:async()=>{var e;if(!d)return;const t=null!=(e=f.globalName)?e:"OneTrust",n=new Set(Object.values(O)),o=()=>{const e=d.OptanonActiveGroups;if(null==e)return;if(f.explicitOnly){const e=d[t];if((null==e?void 0:e.IsAlertBoxClosed)&&!e.IsAlertBoxClosed())return}const o=(e=>{const t={};return n.forEach(e=>{t[e]=!1}),e.split(",").filter(e=>e.length>0).forEach(e=>{const n=O[e.toLowerCase()];n&&(t[n]=!0)}),t})(e);Object.keys(o).length>0&&p("walker consent",o)},r=d[t];r&&void 0!==d.OptanonActiveGroups&&o(),r||(y=d.OptanonWrapper,b=!0,d.OptanonWrapper=()=>{y&&y(),o(),d.OptanonWrapper=y,b=!1}),g=()=>{o()},d.addEventListener("OneTrustGroupsUpdated",g)},destroy:async e=>{d&&g&&d.removeEventListener("OneTrustGroupsUpdated",g),d&&b&&(d.OptanonWrapper=y)}}},c=s;return l=r,((r,l,a,i)=>{if(l&&"object"==typeof l||"function"==typeof l)for(let s of n(l))o.call(r,s)||s===a||e(r,s,{get:()=>l[s],enumerable:!(i=t(l,s))||i.enumerable});return r})(e({},"__esModule",{value:!0}),l)})();
package/dist/index.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { Source, Elb, WalkerOS, Logger, Flow, Trigger } from '@walkeros/core';
1
+ import { Source, Elb } from '@walkeros/core';
2
2
 
3
3
  declare module '@walkeros/core' {
4
4
  interface SourceMap {
@@ -115,117 +115,6 @@ declare namespace index {
115
115
  export type { index_Config as Config, index_Env as Env, index_InitSettings as InitSettings, index_Mapping as Mapping, index_OneTrustAPI as OneTrustAPI, index_Push as Push, index_Settings as Settings, index_Types as Types };
116
116
  }
117
117
 
118
- /**
119
- * Example CookiePro OptanonActiveGroups strings.
120
- *
121
- * These represent real consent states from CookiePro/OneTrust CMP.
122
- * Format: comma-separated active category IDs with leading/trailing commas.
123
- * Only active groups are listed. Absence means denied.
124
- */
125
- /**
126
- * Full consent - user accepted all categories
127
- */
128
- declare const fullConsent$1 = ",C0001,C0002,C0003,C0004,C0005,";
129
- /**
130
- * Partial consent - necessary + functional only
131
- */
132
- declare const partialConsent = ",C0001,C0003,";
133
- /**
134
- * Minimal consent - only strictly necessary (always active)
135
- */
136
- declare const minimalConsent$1 = ",C0001,";
137
- /**
138
- * Analytics only - necessary + performance
139
- */
140
- declare const analyticsOnlyConsent = ",C0001,C0002,";
141
- /**
142
- * Marketing only - necessary + targeting
143
- */
144
- declare const marketingOnlyConsent = ",C0001,C0004,";
145
- /**
146
- * Empty string - no consent yet or cleared
147
- */
148
- declare const emptyConsent = "";
149
- /**
150
- * Custom category IDs - some installations use custom IDs
151
- */
152
- declare const customCategoryConsent = ",C0001,CUSTOM01,CUSTOM02,";
153
-
154
- /**
155
- * Expected walkerOS consent outputs.
156
- *
157
- * These represent the consent state after parsing OptanonActiveGroups
158
- * and mapping through the default categoryMap.
159
- *
160
- * Default map:
161
- * - C0001 -> functional
162
- * - C0002 -> analytics
163
- * - C0003 -> functional
164
- * - C0004 -> marketing
165
- * - C0005 -> marketing
166
- *
167
- * All mapped walkerOS groups get explicit true/false values.
168
- * Active groups -> true, absent groups -> false.
169
- */
170
- /**
171
- * Full consent mapped to walkerOS groups
172
- */
173
- declare const fullConsentMapped: WalkerOS.Consent;
174
- /**
175
- * Partial consent - necessary + functional mapped
176
- * C0001 -> functional (true), C0003 -> functional (true)
177
- * analytics and marketing absent -> false
178
- */
179
- declare const partialConsentMapped: WalkerOS.Consent;
180
- /**
181
- * Minimal consent - only strictly necessary
182
- * C0001 -> functional (true)
183
- * analytics and marketing absent -> false
184
- */
185
- declare const minimalConsentMapped: WalkerOS.Consent;
186
- /**
187
- * Analytics only - necessary + performance
188
- * C0001 -> functional (true), C0002 -> analytics (true)
189
- * marketing absent -> false
190
- */
191
- declare const analyticsOnlyMapped: WalkerOS.Consent;
192
- /**
193
- * Marketing only - necessary + targeting
194
- * C0001 -> functional (true), C0004 -> marketing (true)
195
- * analytics absent -> false
196
- */
197
- declare const marketingOnlyMapped: WalkerOS.Consent;
198
-
199
- /**
200
- * Create a properly typed elb/push function mock
201
- */
202
- declare const createMockElbFn: () => Elb.Fn;
203
- /**
204
- * Simple no-op logger for demo purposes
205
- */
206
- declare const noopLogger: Logger.Instance;
207
- /**
208
- * Create a mock OneTrust API object
209
- */
210
- declare const createMockOneTrustAPI: (isAlertBoxClosed?: boolean) => OneTrustAPI;
211
-
212
- declare const fullConsent: Flow.StepExample;
213
- declare const minimalConsent: Flow.StepExample;
214
- declare const categoryMapOverride: Flow.StepExample;
215
- declare const sdkLoadedDetection: Flow.StepExample;
216
-
217
- declare const step_categoryMapOverride: typeof categoryMapOverride;
218
- declare const step_fullConsent: typeof fullConsent;
219
- declare const step_minimalConsent: typeof minimalConsent;
220
- declare const step_sdkLoadedDetection: typeof sdkLoadedDetection;
221
- declare namespace step {
222
- export { step_categoryMapOverride as categoryMapOverride, step_fullConsent as fullConsent, step_minimalConsent as minimalConsent, step_sdkLoadedDetection as sdkLoadedDetection };
223
- }
224
-
225
- declare const createTrigger: Trigger.CreateFn<string, void>;
226
- /** Sets OptanonActiveGroups and OneTrust globals before source init. */
227
- declare const trigger: (input: unknown, env: Record<string, unknown>) => void;
228
-
229
118
  /**
230
119
  * Default category mapping from CookiePro/OneTrust to walkerOS consent groups.
231
120
  *
@@ -273,4 +162,4 @@ declare const DEFAULT_CATEGORY_MAP: Record<string, string>;
273
162
  */
274
163
  declare const sourceCookiePro: Source.Init<Types>;
275
164
 
276
- export { DEFAULT_CATEGORY_MAP, index as SourceCookiePro, analyticsOnlyConsent, analyticsOnlyMapped, createMockElbFn, createMockOneTrustAPI, createTrigger, customCategoryConsent, sourceCookiePro as default, emptyConsent, fullConsent$1 as fullConsent, fullConsentMapped, marketingOnlyConsent, marketingOnlyMapped, minimalConsent$1 as minimalConsent, minimalConsentMapped, noopLogger, partialConsent, partialConsentMapped, sourceCookiePro, step, trigger };
165
+ export { DEFAULT_CATEGORY_MAP, index as SourceCookiePro, sourceCookiePro as default, sourceCookiePro };
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Source, Elb, WalkerOS, Logger, Flow, Trigger } from '@walkeros/core';
1
+ import { Source, Elb } from '@walkeros/core';
2
2
 
3
3
  declare module '@walkeros/core' {
4
4
  interface SourceMap {
@@ -115,117 +115,6 @@ declare namespace index {
115
115
  export type { index_Config as Config, index_Env as Env, index_InitSettings as InitSettings, index_Mapping as Mapping, index_OneTrustAPI as OneTrustAPI, index_Push as Push, index_Settings as Settings, index_Types as Types };
116
116
  }
117
117
 
118
- /**
119
- * Example CookiePro OptanonActiveGroups strings.
120
- *
121
- * These represent real consent states from CookiePro/OneTrust CMP.
122
- * Format: comma-separated active category IDs with leading/trailing commas.
123
- * Only active groups are listed. Absence means denied.
124
- */
125
- /**
126
- * Full consent - user accepted all categories
127
- */
128
- declare const fullConsent$1 = ",C0001,C0002,C0003,C0004,C0005,";
129
- /**
130
- * Partial consent - necessary + functional only
131
- */
132
- declare const partialConsent = ",C0001,C0003,";
133
- /**
134
- * Minimal consent - only strictly necessary (always active)
135
- */
136
- declare const minimalConsent$1 = ",C0001,";
137
- /**
138
- * Analytics only - necessary + performance
139
- */
140
- declare const analyticsOnlyConsent = ",C0001,C0002,";
141
- /**
142
- * Marketing only - necessary + targeting
143
- */
144
- declare const marketingOnlyConsent = ",C0001,C0004,";
145
- /**
146
- * Empty string - no consent yet or cleared
147
- */
148
- declare const emptyConsent = "";
149
- /**
150
- * Custom category IDs - some installations use custom IDs
151
- */
152
- declare const customCategoryConsent = ",C0001,CUSTOM01,CUSTOM02,";
153
-
154
- /**
155
- * Expected walkerOS consent outputs.
156
- *
157
- * These represent the consent state after parsing OptanonActiveGroups
158
- * and mapping through the default categoryMap.
159
- *
160
- * Default map:
161
- * - C0001 -> functional
162
- * - C0002 -> analytics
163
- * - C0003 -> functional
164
- * - C0004 -> marketing
165
- * - C0005 -> marketing
166
- *
167
- * All mapped walkerOS groups get explicit true/false values.
168
- * Active groups -> true, absent groups -> false.
169
- */
170
- /**
171
- * Full consent mapped to walkerOS groups
172
- */
173
- declare const fullConsentMapped: WalkerOS.Consent;
174
- /**
175
- * Partial consent - necessary + functional mapped
176
- * C0001 -> functional (true), C0003 -> functional (true)
177
- * analytics and marketing absent -> false
178
- */
179
- declare const partialConsentMapped: WalkerOS.Consent;
180
- /**
181
- * Minimal consent - only strictly necessary
182
- * C0001 -> functional (true)
183
- * analytics and marketing absent -> false
184
- */
185
- declare const minimalConsentMapped: WalkerOS.Consent;
186
- /**
187
- * Analytics only - necessary + performance
188
- * C0001 -> functional (true), C0002 -> analytics (true)
189
- * marketing absent -> false
190
- */
191
- declare const analyticsOnlyMapped: WalkerOS.Consent;
192
- /**
193
- * Marketing only - necessary + targeting
194
- * C0001 -> functional (true), C0004 -> marketing (true)
195
- * analytics absent -> false
196
- */
197
- declare const marketingOnlyMapped: WalkerOS.Consent;
198
-
199
- /**
200
- * Create a properly typed elb/push function mock
201
- */
202
- declare const createMockElbFn: () => Elb.Fn;
203
- /**
204
- * Simple no-op logger for demo purposes
205
- */
206
- declare const noopLogger: Logger.Instance;
207
- /**
208
- * Create a mock OneTrust API object
209
- */
210
- declare const createMockOneTrustAPI: (isAlertBoxClosed?: boolean) => OneTrustAPI;
211
-
212
- declare const fullConsent: Flow.StepExample;
213
- declare const minimalConsent: Flow.StepExample;
214
- declare const categoryMapOverride: Flow.StepExample;
215
- declare const sdkLoadedDetection: Flow.StepExample;
216
-
217
- declare const step_categoryMapOverride: typeof categoryMapOverride;
218
- declare const step_fullConsent: typeof fullConsent;
219
- declare const step_minimalConsent: typeof minimalConsent;
220
- declare const step_sdkLoadedDetection: typeof sdkLoadedDetection;
221
- declare namespace step {
222
- export { step_categoryMapOverride as categoryMapOverride, step_fullConsent as fullConsent, step_minimalConsent as minimalConsent, step_sdkLoadedDetection as sdkLoadedDetection };
223
- }
224
-
225
- declare const createTrigger: Trigger.CreateFn<string, void>;
226
- /** Sets OptanonActiveGroups and OneTrust globals before source init. */
227
- declare const trigger: (input: unknown, env: Record<string, unknown>) => void;
228
-
229
118
  /**
230
119
  * Default category mapping from CookiePro/OneTrust to walkerOS consent groups.
231
120
  *
@@ -273,4 +162,4 @@ declare const DEFAULT_CATEGORY_MAP: Record<string, string>;
273
162
  */
274
163
  declare const sourceCookiePro: Source.Init<Types>;
275
164
 
276
- export { DEFAULT_CATEGORY_MAP, index as SourceCookiePro, analyticsOnlyConsent, analyticsOnlyMapped, createMockElbFn, createMockOneTrustAPI, createTrigger, customCategoryConsent, sourceCookiePro as default, emptyConsent, fullConsent$1 as fullConsent, fullConsentMapped, marketingOnlyConsent, marketingOnlyMapped, minimalConsent$1 as minimalConsent, minimalConsentMapped, noopLogger, partialConsent, partialConsentMapped, sourceCookiePro, step, trigger };
165
+ export { DEFAULT_CATEGORY_MAP, index as SourceCookiePro, sourceCookiePro as default, sourceCookiePro };
package/dist/index.es5.js CHANGED
@@ -1 +1 @@
1
- "use strict";function _array_like_to_array(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];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 _assert_this_initialized(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function asyncGeneratorStep(e,t,n,r,o,a,s){try{var i=e[a](s),c=i.value}catch(e){return void n(e)}i.done?t(c):Promise.resolve(c).then(r,o)}function _async_to_generator(e){return function(){var t=this,n=arguments;return new Promise(function(r,o){var a=e.apply(t,n);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 _call_super(e,t,n){return t=_get_prototype_of(t),_possible_constructor_return(e,_is_native_reflect_construct()?Reflect.construct(t,n||[],_get_prototype_of(e).constructor):t.apply(e,n))}function _class_call_check(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _construct(e,t,n){return _construct=_is_native_reflect_construct()?Reflect.construct:function(e,t,n){var r=[null];r.push.apply(r,t);var o=new(Function.bind.apply(e,r));return n&&_set_prototype_of(o,n.prototype),o},_construct.apply(null,arguments)}function _define_property(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function _get_prototype_of(e){return _get_prototype_of=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},_get_prototype_of(e)}function _inherits(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&_set_prototype_of(e,t)}function _instanceof(e,t){return null!=t&&"undefined"!=typeof Symbol&&t[Symbol.hasInstance]?!!t[Symbol.hasInstance](e):e instanceof t}function _is_native_function(e){return-1!==Function.toString.call(e).indexOf("[native code]")}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,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,a=[],s=!0,i=!1;try{for(n=n.call(e);!(s=(r=n.next()).done)&&(a.push(r.value),!t||a.length!==t);s=!0);}catch(e){i=!0,o=e}finally{try{s||null==n.return||n.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 t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){_define_property(e,t,n[t])})}return e}function ownKeys(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function _object_spread_props(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ownKeys(Object(t)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}),e}function _possible_constructor_return(e,t){return!t||"object"!==_type_of(t)&&"function"!=typeof t?_assert_this_initialized(e):t}function _set_prototype_of(e,t){return _set_prototype_of=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},_set_prototype_of(e,t)}function _sliced_to_array(e,t){return _array_with_holes(e)||_iterable_to_array_limit(e,t)||_unsupported_iterable_to_array(e,t)||_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,t){if(e){if("string"==typeof e)return _array_like_to_array(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(n):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?_array_like_to_array(e,t):void 0}}function _wrap_native_super(e){var t="function"==typeof Map?new Map:void 0;return _wrap_native_super=function(e){if(null===e||!_is_native_function(e))return e;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,n)}function n(){return _construct(e,arguments,_get_prototype_of(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),_set_prototype_of(n,e)},_wrap_native_super(e)}function _is_native_reflect_construct(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(_is_native_reflect_construct=function(){return!!e})()}function _ts_generator(e,t){var n,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(n)throw new TypeError("Generator is already executing.");for(;s&&(s=0,i[0]&&(a=0)),a;)try{if(n=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=t.call(e,a)}catch(e){i=[6,e],r=0}finally{n=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 t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.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(t?"Object is not iterable.":"Symbol.iterator is not defined.")}var SourceCookiePro=function(){var e=function(e,t){if("collector"===e)return"collector";if(!t)throw new Error("stepId(".concat(e,") requires an id"));return"".concat(e,".").concat(t)},t=function(e,t){var n=e.destinations[t];if(!n)throw new Error("Destination not found: ".concat(t));return n},n=function(e,t){var n=e.transformers[t];if(!n)throw new Error("Transformer not found: ".concat(t));return n},r=function(e,t){var n=e.sources[t];if(!n)throw new Error("Source not found: ".concat(t));return n},o=function(e,t){var n=e.stores[t];if(!n)throw new Error("Store not found: ".concat(t));return n},a=function(e){return{_meta:{hops:0,path:[e]}}},s=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};n=_object_spread({},ct,n);var r=Object.entries(t).reduce(function(t,r){var o=_sliced_to_array(r,2),a=o[0],s=o[1],i=e[a];return n.merge&&Array.isArray(i)&&Array.isArray(s)?t[a]=s.reduce(function(e,t){return e.includes(t)?e:_to_consumable_array(e).concat([t])},_to_consumable_array(i)):(n.extend||a in e)&&(t[a]=s),t},{});return n.shallow?_object_spread({},e,r):(Object.assign(e,r),e)},i=function(e){return Array.isArray(e)},c=function(e){return void 0!==e},u=function(e){return"function"==typeof e},l=function(e){return"object"==(void 0===e?"undefined":_type_of(e))&&null!==e&&!i(e)&&"[object Object]"===Object.prototype.toString.call(e)},f=function(e){return"string"==typeof e},d=function(e,t,n){if(!l(e))return e;for(var r=ut(e),o=t.split("."),a=r,s=0;s<o.length;s++){var i=o[s];s===o.length-1?a[i]=n:(i in a&&"object"==_type_of(a[i])&&null!==a[i]||(a[i]={}),a=a[i])}return r},p=function(e,t){if(!l(e)&&!i(e))return e;for(var n=ut(e),r=t.split("."),o=n,a=0;a<r.length;a++){var s=r[a],c=a===r.length-1;if(i(o)){var u=Number(s);if(!Number.isInteger(u)||u<0||u>=o.length)return n;if(c)o.splice(u,1);else{var f=o[u];if(!l(f)&&!i(f))return n;o=f}}else if(c)delete o[s];else{var d=o[s];if(!l(d)&&!i(d))return n;o=d}}return n},_=function(e){var t=_object_spread({},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}),n={},r=!e||0===Object.keys(e).length;return Object.keys(t).forEach(function(o){t[o]&&(n[o]=!0,e&&e[o]&&(r=!0))}),!!r&&n},v=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:6,t=arguments.length>1?arguments[1]:void 0;if(t){for(var n=t.length,r="",o=0;o<e;o++)r+=t[Math.random()*n|0];return r}for(var a="";a.length<e;)a+=(36*Math.random()|0).toString(36);return a},g=function(e){return{message:e.message,name:e.name,stack:e.stack,cause:e.cause}},y=function(e,t){var n,r={};return _instanceof(e,Error)?(n=e.message,r.error=g(e)):n=e,void 0!==t&&(_instanceof(t,Error)?r.error=g(t):"object"==(void 0===t?"undefined":_type_of(t))&&null!==t?"error"in(r=_object_spread({},r,t))&&_instanceof(r.error,Error)&&(r.error=g(r.error)):r.value=t),{message:n,context:r}},h=function(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return pt({level:void 0!==t.level?(e=t.level,"string"==typeof e?it[e]:e):0,handler:t.handler,jsonHandler:t.jsonHandler,scope:[]})},m=function(e){return _t(e)?e:void 0},b=function(e,t,n){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(!t)return;return t(e)}finally{null==n||n()}}},w=function(e,t,n){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(),t?[4,t(r)]:[2];case 4:return[4,null==n?void 0:n()];case 5:return a.sent(),[7];case 6:return[2]}})})()}},k=function(e,t,n){return _async_to_generator(function(){var r,o,a,s,c,u,f,d,p,_;return _ts_generator(this,function(v){return o=_sliced_to_array((e.name||"").split(" "),2),a=o[0],s=o[1],t&&a&&s?(u="",d=s,p=function(t){if(t)return(i(t)?t:[t]).find(function(t){if(!t.condition)return!0;if(!n)return Boolean(t.condition(e,void 0));var r={event:e,mapping:t,collector:n,logger:n.logger,consent:l(e)&&e.consent||n.consent};return Boolean(t.condition(e,r))})},t[f=a]||(f="*"),[2,((_=t[f])&&(_[d]||(d="*"),c=p(_[d])),c||(f="*",d="*",c=p(null===(r=t[f])||void 0===r?void 0:r[d])),c&&(u="".concat(f," ").concat(d)),{eventMapping:c,mappingKey:u})]):[2,{}]})})()},j=function(e){return _async_to_generator(function(e){var t,n,r,o,a,s,u,f,d,p,_,v,g,y,h,m,b=arguments;return _ts_generator(this,function(k){switch(k.label){case 0:if(t=b.length>1&&void 0!==b[1]?b[1]:{},n=b.length>2&&void 0!==b[2]?b[2]:{},!c(e))return[2];if(a=l(e)&&e.consent||n.consent||(null===(o=n.collector)||void 0===o?void 0:o.consent),s=null!==(r=n.event)&&void 0!==r?r:l(e)?e:{},!n.collector)throw new Error("getMappingValue: context.collector is required");u={event:s,mapping:t,collector:n.collector,logger:n.collector.logger,consent:a},f=i(t)?t:[t],d=!0,p=!1,_=void 0,k.label=1;case 1:k.trys.push([1,6,7,8]),v=f[Symbol.iterator](),k.label=2;case 2:return(d=(g=v.next()).done)?[3,5]:(y=g.value,[4,w(gt,function(e){if(_instanceof(e,vt))throw e;n.collector&&n.collector.status.failed++,u.logger.error("mapping processing failed",{event:s,error:e})})(e,y,_object_spread_props(_object_spread({},u),{mapping:y}))]);case 3:if(h=k.sent(),c(h))return[2,h];k.label=4;case 4:return d=!0,[3,2];case 5:return[3,8];case 6:return m=k.sent(),p=!0,_=m,[3,8];case 7:try{d||null==v.return||v.return()}finally{if(p)throw _}return[7];case 8:return[2]}})}).apply(this,arguments)},O=function(e,t,n){return _async_to_generator(function(){var r,o,a,i,c,u,f,_,v,g,y,h,m,b,w,O,x;return _ts_generator(this,function(S){switch(S.label){case 0:return t.policy?[4,Promise.all(Object.entries(t.policy).map(function(t){var r=_sliced_to_array(t,2),o=r[0],a=r[1];return _async_to_generator(function(){var t;return _ts_generator(this,function(r){switch(r.label){case 0:return[4,j(e,a,{collector:n,event:e})];case 1:return t=r.sent(),e=d(e,o,t),[2]}})})()}))]:[3,2];case 1:S.sent(),S.label=2;case 2:return[4,k(e,t.mapping,n)];case 3:return o=S.sent(),a=o.eventMapping,i=o.mappingKey,(null==a?void 0:a.policy)?[4,Promise.all(Object.entries(a.policy).map(function(t){var r=_sliced_to_array(t,2),o=r[0],a=r[1];return _async_to_generator(function(){var t;return _ts_generator(this,function(r){switch(r.label){case 0:return[4,j(e,a,{collector:n,event:e})];case 1:return t=r.sent(),e=d(e,o,t),[2]}})})()}))]:[3,5];case 4:S.sent(),S.label=5;case 5:return(u=t.data)?[4,j(e,t.data,{collector:n,event:e})]:[3,7];case 6:u=S.sent(),S.label=7;case 7:return c=u,f=Boolean(null==a?void 0:a.silent),a?a.ignore?[2,{event:e,data:c,mapping:a,mappingKey:i,ignore:!0,silent:f}]:(a.name&&(e.name=a.name),a.data?(v=a.data)?[4,j(e,a.data,{collector:n,event:e})]:[3,9]:[3,10]):[3,10];case 8:v=S.sent(),S.label=9;case 9:_=v,c=l(c)&&l(_)?s(c,_):_,S.label=10;case 10:if((g=null!==(r=null==a?void 0:a.include)&&void 0!==r?r:t.include)&&g.length>0&&(y=function(e,t){var n={},r=t.includes("all")?Object.keys(ft):t,o=!0,a=!1,s=void 0;try{for(var i,c=r[Symbol.iterator]();!(o=(i=c.next()).done);o=!0){var u=i.value,f=ft[u];if(f){var d=f(e),p=!0,_=!1,v=void 0;if(l(d))try{for(var g,y=Object.entries(d)[Symbol.iterator]();!(p=(g=y.next()).done);p=!0){var h=_sliced_to_array(g.value,2),m=h[0],b=h[1];if(void 0!==b){var w="context"===u&&Array.isArray(b)?b[0]:b;n["".concat(u,"_").concat(m)]=w}}}catch(e){_=!0,v=e}finally{try{p||null==y.return||y.return()}finally{if(_)throw v}}}}}catch(e){a=!0,s=e}finally{try{o||null==c.return||c.return()}finally{if(a)throw s}}return n}(e,g),Object.keys(y).length>0&&(c=l(c)?s(y,c):null!=c?c:y)),h=!0,m=!1,b=void 0,(null==a?void 0:a.remove)&&l(c))try{for(w=a.remove[Symbol.iterator]();!(h=(O=w.next()).done);h=!0)x=O.value,c=p(c,x)}catch(e){m=!0,b=e}finally{try{h||null==w.return||w.return()}finally{if(m)throw b}}return[2,{event:e,data:c,mapping:a,mappingKey:i,ignore:!1,silent:f}]}})})()},x=function(e,t,n,r){var o=e;return function(){for(var e=arguments.length,a=new Array(e),s=0;s<e;s++)a[s]=arguments[s];var i,c="pre"+t,u="post"+t,l=n[c],f=n[u],d=function(e,t){r?r.warn(e,{error:t}):console.warn(e,t)};if(l)try{i=l.apply(void 0,[{fn:o}].concat(_to_consumable_array(a)))}catch(e){d("Hook ".concat(String(c)," failed, falling back to original function"),e),i=o.apply(void 0,_to_consumable_array(a))}else i=o.apply(void 0,_to_consumable_array(a));if(f)try{i=f.apply(void 0,[{fn:o,result:i}].concat(_to_consumable_array(a)))}catch(e){d("Hook ".concat(String(u)," failed, keeping original result"),e)}return i}},S=function(e,t){if(0!==e.observers.size){var n=Array.from(e.observers),r=!0,o=!1,a=void 0;try{for(var s,i=n[Symbol.iterator]();!(r=(s=i.next()).done);r=!0){var c=s.value;try{c(t)}catch(e){}}}catch(e){o=!0,a=e}finally{try{r||null==i.return||i.return()}finally{if(o)throw a}}}},C=function(e){return Array.isArray(e)&&e.length>0&&e.every(function(e){return function(e){return"object"==(void 0===e?"undefined":_type_of(e))&&null!==e&&!Array.isArray(e)&&("match"in e||"next"in e||"one"in e||"many"in e)}(e)})},I=function(e){return e.map(function(e){var t,n;if("string"==typeof e)return{match:function(){return!0},next:{type:"static",value:e}};if(Array.isArray(e))return{match:function(){return!0},next:null!==(t=ht(e))&&void 0!==t?t:{type:"chain",value:[]}};var r=e;return{match:r.match?yt(r.match):function(){return!0},next:null!==(n=ht(r))&&void 0!==n?n:{type:"chain",value:[]}}})},A=function(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(null==e)return[];if("object"==(void 0===e?"undefined":_type_of(e))){var r=mt.get(e);r?t=r:(t=ht(e))&&mt.set(e,t)}else t=ht(e);if(!t)return[];var o=bt(t,n);return void 0===o?[]:Array.isArray(o)?o:[o]},E=function(e,t){var n={ingest:null!=e?e:{}};return void 0!==t&&(n.event=t),n},q=function(e){var t;return{stop:null!==(t=e.stop)&&void 0!==t&&t,storeId:e.store,namespace:e.namespace,rules:e.rules.map(function(e){return{match:e.match?yt(e.match):function(){return!0},key:e.key,ttl:e.ttl,update:e.update}})}},P=function(e,t,n,r){return _async_to_generator(function(){var o,a,s,i,c,u;return _ts_generator(this,function(l){switch(l.label){case 0:return(o=e.rules.find(function(e){return e.match(n)}))?(a=o.key.map(function(e){var t;return String(null!==(t=lt(n,e))&&void 0!==t?t:"")})).every(function(e){return""===e})?[2,null]:(s=a.join(":"),i=null!=r?r:e.namespace,c=i?"".concat(i,":").concat(s):s,[4,t.get(c)]):[2,null];case 1:return[2,void 0!==(u=l.sent())?{status:"HIT",key:c,value:u,rule:o}:{status:"MISS",key:c,rule:o}]}})})()},T=function(e,t,n,r){e.set(t,n,1e3*r)},D=function(e,t,n,r){return _async_to_generator(function(){var o,a,s,i,c,u,l,f,p,_,v;return _ts_generator(this,function(g){switch(g.label){case 0:if(!t)return[2,e];o=e,a=!0,s=!1,i=void 0,g.label=1;case 1:g.trys.push([1,6,7,8]),c=Object.entries(t)[Symbol.iterator](),g.label=2;case 2:return(a=(u=c.next()).done)?[3,5]:(l=_sliced_to_array(u.value,2),f=l[0],p=l[1],_=[o,f],[4,j(n,p,{collector:r})]);case 3:o=d.apply(void 0,_.concat([g.sent()])),g.label=4;case 4:return a=!0,[3,2];case 5:return[3,8];case 6:return v=g.sent(),s=!0,i=v,[3,8];case 7:try{a||null==c.return||c.return()}finally{if(s)throw i}return[7];case 8:return[2,o]}})})()},M=function(e){return i(e)?e:[e]},R=function(e,t,n,r){return _async_to_generator(function(){var o,a,s,i,u,p,_,v;return _ts_generator(this,function(g){switch(g.label){case 0:o=n,a=!0,s=!1,i=void 0,g.label=1;case 1:g.trys.push([1,6,7,8]),u=function(){var e;return _ts_generator(this,function(n){switch(n.label){case 0:return e=_.value,[4,w(function(){return _async_to_generator(function(){var n,a,s,i,u,p,_;return _ts_generator(this,function(v){switch(v.label){case 0:return(n=t(e.store))?[4,j(o,e.key,{collector:r,event:o})]:[2];case 1:return a=v.sent(),f(a)?(s=e.store?a:"state:".concat(a),"set"!==e.mode?[3,4]:[4,j(o,e.value,{collector:r,event:o})]):[2];case 2:return i=v.sent(),c(i)?[4,n.set(s,i)]:[2];case 3:return v.sent(),[3,6];case 4:return(u=f(_=e.value)?_:l(_)&&f(_.key)?_.key:void 0)?[4,n.get(s)]:[2];case 5:if(p=v.sent(),!c(p))return[2];o=d(o,u,p),v.label=6;case 6:return[2]}})})()},function(e){var t,n;null===(n=r.logger)||void 0===n||null===(t=n.error)||void 0===t||t.call(n,"[state] operation failed",e)})()];case 1:return n.sent(),[2]}})},p=e[Symbol.iterator](),g.label=2;case 2:return(a=(_=p.next()).done)?[3,5]:[5,_ts_values(u())];case 3:g.sent(),g.label=4;case 4:return a=!0,[3,2];case 5:return[3,8];case 6:return v=g.sent(),s=!0,i=v,[3,8];case 7:try{a||null==p.return||p.return()}finally{if(s)throw i}return[7];case 8:return[2,o]}})})()},N=function(e,t){var n=e.status.startedAt;return{flowId:"default",stepId:t.stepId,stepType:t.stepType,phase:t.phase,eventId:t.eventId,timestamp:new Date(t.now).toISOString(),elapsedMs:t.now-n}},z=function(e,t){return e.storeId&&t.stores[e.storeId]?t.stores[e.storeId]:t.stores.__cache},B=function(e,t){return e?t.stores[e]:t.stores.__cache},G=function(e){var t={},n=!0,r=!1,o=void 0;try{for(var a,s=Object.entries(e)[Symbol.iterator]();!(n=(a=s.next()).done);n=!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;"string"==typeof l||Array.isArray(l)&&l.every(function(e){return"string"==typeof e})?t[u]={next:l}:t[u]={}}}catch(e){r=!0,o=e}finally{try{n||null==s.return||s.return()}finally{if(r)throw o}}return t},K=function(e,t){var n=e.config||{},r=e[t];return void 0!==r?{config:_object_spread_props(_object_spread({},n),_define_property({},t,r)),chainValue:r}:{config:n,chainValue:void 0}},F=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!e)return[];if(Array.isArray(e))return e;for(var n=[],r=new Set,o=e;o&&t[o]&&!r.has(o);){r.add(o),n.push(o);var a=t[o].next;if(Array.isArray(a)){var s;(s=n).push.apply(s,_to_consumable_array(a));break}o=a}return n},H=function(e,t,n){return _async_to_generator(function(){var r,o,s,i;return _ts_generator(this,function(c){switch(c.label){case 0:return!t.init||t.config.init?[3,2]:(r=t.type||"unknown",o=e.logger.scope("transformer:".concat(r)),s={collector:e,logger:o,id:n,ingest:a(n),config:t.config,env:W(t.config.env)},o.debug("init"),[4,x(t.init,"TransformerInit",e.hooks,e.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}),o.debug("init done"),c.label=2;case 2:return[2,!0]}})})()},L=function(t,n,r,o,a,s){return _async_to_generator(function(){var i,c,u,l,f,d,p,_,v,g,y,h;return _ts_generator(this,function(m){switch(m.label){case 0:i=n.type||"unknown",c=t.logger.scope("transformer:".concat(i)),u={collector:t,logger:c,id:r,ingest:a,config:n.config,env:_object_spread({},W(n.config.env),s?{respond:s}:{})},c.debug("push",{event:o.name}),l="string"==typeof o.id?o.id:"",f=Date.now(),d=N(t,{stepId:e("transformer",r),stepType:"transformer",phase:"in",eventId:l,now:f}),S(t,d),m.label=1;case 1:return m.trys.push([1,3,,4]),[4,x(n.push,"TransformerPush",t.hooks,t.logger)(o,u)];case 2:return p=m.sent(),_=Date.now(),[2,((v=N(t,{stepId:e("transformer",r),stepType:"transformer",phase:"out",eventId:l,now:_})).durationMs=_-f,v.outEvent=p,S(t,v),c.debug("push done"),p)];case 3:throw g=m.sent(),y=Date.now(),(h=N(t,{stepId:e("transformer",r),stepType:"transformer",phase:"error",eventId:l,now:y})).durationMs=y-f,h.error=_instanceof(g,Error)?{name:g.name,message:g.message}:{message:String(g)},S(t,h),g;case 4:return[2]}})})()},U=function(e,t){return e?_object_spread_props(_object_spread({},e),{_meta:_object_spread_props(_object_spread({},e._meta),{path:_to_consumable_array(e._meta.path)})}):a(t)},W=function(e){return e&&l(e)?e:{}},V=function(e){return"string"==typeof e||!(!Array.isArray(e)||!e.every(function(e){return"string"==typeof e}))},Y=function(e,t,n){return _async_to_generator(function(){var r,o,a,s,i,c,u,l,f,d,p;return _ts_generator(this,function(_){switch(_.label){case 0:if(!t.on||!(null===(r=t.queueOn)||void 0===r?void 0:r.length))return[2];a=t.queueOn,t.queueOn=[],s=n||(null===(o=t.config)||void 0===o?void 0:o.id)||"unknown",i=!0,c=!1,u=void 0,_.label=1;case 1:_.trys.push([1,6,7,8]),l=function(){var n,r,o;return _ts_generator(this,function(a){switch(a.label){case 0:return n=d.value,r=n.type,o=n.data,[4,w(t.on,function(t){if(_instanceof(t,vt))throw t;e.status.failed++,e.logger.scope("source").error("source on flush failed",{sourceId:s,type:r,error:t})})(r,o)];case 1:return a.sent(),[2]}})},f=a[Symbol.iterator](),_.label=2;case 2:return(i=(d=f.next()).done)?[3,5]:[5,_ts_values(l())];case 3:_.sent(),_.label=4;case 4:return i=!0,[3,2];case 5:return[3,8];case 6:return p=_.sent(),c=!0,u=p,[3,8];case 7:try{i||null==f.return||f.return()}finally{if(c)throw u}return[7];case 8:return[2]}})})()},$=function(e){var t;return Boolean(e.config.init)&&!(null===(t=e.config.require)||void 0===t?void 0:t.length)},J=function(e,t,n){return _async_to_generator(function(){var r,o,s,i,c,u,l,f,d,p,_,v,g,y,h,m,b,k,O,x,S,C,I,N,K,H,L,W;return _ts_generator(this,function(Y){switch(Y.label){case 0:return s=n.code,i=n.config,c=void 0===i?{}:i,u=n.env,l=void 0===u?{}:u,f=n.primary,d=n.next,p=n.before,_=n.cache,v=null!==(r=c.state)&&void 0!==r?r:n.state,g=v?M(v):void 0,h=(y=_)?q(_object_spread_props(_object_spread({},y),{stop:null===(o=y.stop)||void 0===o||o})):void 0,m=V(d)?F(d,G(e.transformers)):void 0,b=V(p)?F(p,G(e.transformers)):void 0,k=l.push,O=null!=k?k:e.push,x=Boolean(k),S=function(n,r,o){return _async_to_generator(function(){var a,s,i,u,l,f,_,v,y,k,j,S,C,I,q,M,N,K,H,L,W,V,Y,$;return _ts_generator(this,function(J){switch(J.label){case 0:return s=null!=b?b:void 0!==p?function(){var t=A(p,E(o.ingest));return 0===t.length?[]:F(1===t.length?t[0]:t,G(e.transformers))}():[],i=[n],s.length>0&&e.transformers&&Object.keys(e.transformers).length>0?[4,St(e,e.transformers,s,n,o.ingest,o.respond,"source.".concat(t,".before"))]:[3,2];case 1:if(null===(u=J.sent()).event)return[2,{ok:!0}];if(u.stopped)return[2,(u.respond&&(o.respond=u.respond),{ok:!0})];u.respond&&(o.respond=u.respond),i=Array.isArray(u.event)?u.event:[u.event],J.label=2;case 2:return h&&(l=z(h,e))?(f=E(o.ingest),[4,P(h,l,f)]):[3,7];case 3:return(_=J.sent())?"HIT"===_.status&&void 0!==_.value&&h.stop?(y=_.value,_.rule.update?[4,D(y,_.rule.update,_object_spread_props(_object_spread({},f),{cache:{status:"HIT"}}),e)]:[3,5]):[3,6]:[3,7];case 4:y=J.sent(),J.label=5;case 5:return[2,(null===(v=o.respond)||void 0===v||v.call(o,y),{ok:!0})];case 6:"MISS"===_.status&&h.stop&&o.respond&&(k=o.respond,j=_.rule.update,S=_object_spread_props(_object_spread({},f),{cache:{status:"MISS"}}),C=_.key,I=_.rule.ttl,q=function(t){T(l,C,t,I),j?a=_async_to_generator(function(){var n;return _ts_generator(this,function(r){switch(r.label){case 0:return[4,D(t,j,S,e)];case 1:return n=r.sent(),k(n),[2]}})})():k(t)},o.respond=q),"MISS"!==_.status||h.stop||T(l,_.key,!0,_.rule.ttl),J.label=7;case 7:return M=m?{kind:"single",preChain:m}:void 0!==d?function(){var t=A(d,E(o.ingest));return 0===t.length?{kind:"single",preChain:[]}:1===t.length?{kind:"single",preChain:F(t[0],G(e.transformers))}:{kind:"many",branches:t.map(function(t){return F(t,G(e.transformers))})}}():{kind:"single",preChain:[]},g&&g.length>0?[4,Promise.all(i.map(function(t){return R(g,function(t){return B(t,e)},t,e)}))]:[3,9];case 8:i=J.sent(),J.label=9;case 9:N={ok:!0},K=!0,H=!1,L=void 0,J.label=10;case 10:J.trys.push([10,15,16,17]),W=function(){var n,a;return _ts_generator(this,function(s){switch(s.label){case 0:return n=Y.value,"many"!==M.kind?[3,2]:[4,Promise.all(M.branches.map(function(a,s){return w(function(){return _async_to_generator(function(){return _ts_generator(this,function(e){return[2,x?O(n):O(n,_object_spread_props(_object_spread({},r),{id:t,ingest:U(o.ingest,"".concat(t,".").concat(s)),respond:void 0,mapping:c,preChain:a}))]})})()},function(t){return e.logger.scope("source:many").error("many branch ".concat(s," failed"),{error:t}),{ok:!0}})()}))];case 1:return s.sent(),N={ok:!0},[3,7];case 2:return x?[4,O(n)]:[3,4];case 3:return a=s.sent(),[3,6];case 4:return[4,O(n,_object_spread_props(_object_spread({},r),{id:t,ingest:o.ingest,respond:o.respond,mapping:c,preChain:M.preChain}))];case 5:a=s.sent(),s.label=6;case 6:N=a,s.label=7;case 7:return[2]}})},V=i[Symbol.iterator](),J.label=11;case 11:return(K=(Y=V.next()).done)?[3,14]:[5,_ts_values(W())];case 12:J.sent(),J.label=13;case 13:return K=!0,[3,11];case 14:return[3,17];case 15:return $=J.sent(),H=!0,L=$,[3,17];case 16:try{K||null==V.return||V.return()}finally{if(H)throw L}return[7];case 17:return a?[4,a]:[3,19];case 18:J.sent(),J.label=19;case 19:return[2,N]}})})()},C=function(n){return _async_to_generator(function(){var r,o;return _ts_generator(this,function(s){switch(s.label){case 0:return r=a(t),c.ingest&&void 0!==n?[4,j(n,c.ingest,{collector:e})]:[2,r];case 1:return o=s.sent(),[2,_object_spread_props(_object_spread({},r,o),{_meta:r._meta})]}})})()},I=e.logger.scope("source").scope(t),N=_object_spread_props(_object_spread({command:e.command,sources:e.sources,elb:e.sources.elb.push,logger:I},l),{push:function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return _async_to_generator(function(){var r;return _ts_generator(this,function(o){return r={ingest:a(t),respond:void 0},[2,S(e,n,r)]})})()}}),K={collector:e,logger:I,id:t,config:c,env:N,withScope:function(e,t,n){return _async_to_generator(function(){var r,o;return _ts_generator(this,function(a){switch(a.label){case 0:return o={},[4,C(e)];case 1:return o.ingest=a.sent(),o.respond=t,r=o,[2,n(_object_spread_props(_object_spread({},N),{push:function(e){return S(e,arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r)},ingest:r.ingest,respond:r.respond}))]}})})()}},[4,w(s,function(n){if(_instanceof(n,vt))throw n;e.status.failed++,e.logger.scope("source").error("source factory failed",{sourceId:t,error:n})})(K)];case 1:return(H=Y.sent())?(L=H.type||"unknown",W=e.logger.scope(L).scope(t),[2,(N.logger=W,f&&(H.config=_object_spread_props(_object_spread({},H.config),{primary:f})),H)]):[2]}})})()},Z=function(e){return _async_to_generator(function(e){var t,n,r,o,a,s,i,c,u,l,f,d,p,_,v,g,y,h,m,b,k=arguments;return _ts_generator(this,function(j){switch(j.label){case 0:t=k.length>1&&void 0!==k[1]?k[1]:{},n={},r=!0,o=!1,a=void 0,j.label=1;case 1:j.trys.push([1,6,7,8]),s=Object.entries(t)[Symbol.iterator](),j.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],[4,J(e,u,l)]);case 3:if(!(d=j.sent()))return[3,4];p=null===(f=l.config)||void 0===f?void 0:f.require,d.config=_object_spread(_object_spread_props(_object_spread({},d.config),{init:!1}),p?{require:_to_consumable_array(p)}:{}),n[u]=d,j.label=4;case 4:return r=!0,[3,2];case 5:return[3,8];case 6:return b=j.sent(),o=!0,a=b,[3,8];case 7:try{r||null==s.return||s.return()}finally{if(o)throw a}return[7];case 8:Object.assign(e.sources,n),_=!0,v=!1,g=void 0,j.label=9;case 9:j.trys.push([9,14,15,16]),y=function(){var t,n,r,o;return _ts_generator(this,function(a){switch(a.label){case 0:return t=m.value,n=e.sources[t],r=!1,n.init?[4,w(n.init.bind(n),function(n){if(_instanceof(n,vt))throw n;r=!0,e.status.failed++,e.logger.scope("source").error("source init failed",{sourceId:t,error:n})})()]:[3,2];case 1:a.sent(),a.label=2;case 2:return r?[3,5]:(n.config.init=!0,(o=$(n))?[4,Y(e,n,t)]:[3,4]);case 3:o=a.sent(),a.label=4;case 4:a.label=5;case 5:return[2]}})},h=Object.keys(n)[Symbol.iterator](),j.label=10;case 10:return(_=(m=h.next()).done)?[3,13]:[5,_ts_values(y())];case 11:j.sent(),j.label=12;case 12:return _=!0,[3,10];case 13:return[3,16];case 14:return b=j.sent(),v=!0,g=b,[3,16];case 15:try{_||null==h.return||h.return()}finally{if(v)throw g}return[7];case 16:return[2,n]}})}).apply(this,arguments)},Q=function(e,t,n,r){if(_instanceof(n,vt))throw n;e.logger.scope("on").error("on callback failed",_object_spread_props(_object_spread({kind:t},r),{error:n}))},X=function(e,t){return{collector:e,logger:e.logger.scope("on").scope(String(t))}},ee=function(e,t,n){return _async_to_generator(function(){var r,o,a;return _ts_generator(this,function(s){return r=e.on,o=r[t]||[],(a=i(n)?n:[n]).forEach(function(e){o.push(e)}),r[t]=o,ne(e,t,a),[2]})})()},te=function(e,t,n,r,o){if(t.on){var a=t.type||"unknown",s=e.logger.scope(a).scope("on").scope(r),i={collector:e,logger:s,id:n,config:t.config,data:o,env:me(t.env,t.config.env)};b(t.on,function(t){return Q(e,"destination",t,{destId:n,type:r})})(r,i)}},ne=function(e,t,n,r){var o,a,s,i,c;switch(t){case xt.Commands.Consent:o=r||e.consent;break;case xt.Commands.Session:o=e.session;break;case xt.Commands.User:o=r||e.user;break;case xt.Commands.Custom:o=r||e.custom;break;case xt.Commands.Globals:o=r||e.globals;break;case xt.Commands.Config:o=r||e.config;break;case xt.Commands.Ready:case xt.Commands.Run:default:o=void 0}if(n.length)switch(t){case xt.Commands.Consent:a=e,s=n,i=r||a.consent,c=X(a,xt.Commands.Consent),s.forEach(function(e){Object.keys(i).filter(function(t){return t in e}).forEach(function(t){b(e[t],function(e){return Q(a,"consent",e,{key:t})})(i,c)})});break;case xt.Commands.Ready:!function(e,t){if(e.allowed){var n=X(e,xt.Commands.Ready);t.forEach(function(t){b(t,function(t){return Q(e,"ready",t)})(void 0,n)})}}(e,n);break;case xt.Commands.Run:!function(e,t){if(e.allowed){var n=X(e,xt.Commands.Run);t.forEach(function(t){b(t,function(t){return Q(e,"run",t)})(void 0,n)})}}(e,n);break;case xt.Commands.Session:!function(e,t){if(e.session){var n=X(e,xt.Commands.Session);t.forEach(function(t){b(t,function(t){return Q(e,"session",t)})(e.session,n)})}}(e,n);break;default:var u=X(e,t);n.forEach(function(n){"function"==typeof n&&b(n,function(n){return Q(e,"generic",n,{type:t})})(o,u)})}},re=function(e,t,n,r){return _async_to_generator(function(){var o,a,s,i,c,u,l,f,d,p,_,v,g,y,h,m,b,k,j;return _ts_generator(this,function(O){switch(O.label){case 0:switch(s=n||[],n||(s=e.on[t]||[]),t){case xt.Commands.Consent:a=r||e.consent;break;case xt.Commands.Session:a=e.session;break;case xt.Commands.User:a=r||e.user;break;case xt.Commands.Custom:a=r||e.custom;break;case xt.Commands.Globals:a=r||e.globals;break;case xt.Commands.Config:a=r||e.config;break;case xt.Commands.Ready:case xt.Commands.Run:default:a=void 0}i=!1,c=!0,u=!1,l=void 0,O.label=1;case 1:O.trys.push([1,6,7,8]),f=function(){var n,r,o,s,c,u;return _ts_generator(this,function(l){switch(l.label){case 0:return n=_sliced_to_array(p.value,2),r=n[0],o=n[1],(null===(s=o.config.require)||void 0===s?void 0:s.length)&&-1!==(c=o.config.require.indexOf(t))&&o.config.require.splice(c,1),o.on?$(o)?(u=!1,[4,w(o.on,function(n){return Q(e,"source",n,{sourceId:r,type:t})})(t,a)]):[3,2]:[3,3];case 1:return u===l.sent()&&(i=!0),[3,3];case 2:o.queueOn=o.queueOn||[],o.queueOn.push({type:t,data:a}),l.label=3;case 3:return[2]}})},d=Object.entries(e.sources)[Symbol.iterator](),O.label=2;case 2:return(c=(p=d.next()).done)?[3,5]:[5,_ts_values(f())];case 3:O.sent(),O.label=4;case 4:return c=!0,[3,2];case 5:return[3,8];case 6:return j=O.sent(),u=!0,l=j,[3,8];case 7:try{c||null==d.return||d.return()}finally{if(u)throw l}return[7];case 8:Object.entries(e.destinations).forEach(function(n){var r=_sliced_to_array(n,2),o=r[0],s=r[1];if(s.on){if(!s.config.init)return s.queueOn=s.queueOn||[],void s.queueOn.push({type:t,data:a});te(e,s,o,t,a)}}),_=!0,v=!1,g=void 0,O.label=9;case 9:O.trys.push([9,15,16,17]),y=Object.entries(e.sources)[Symbol.iterator](),O.label=10;case 10:return(_=(h=y.next()).done)?[3,14]:(m=_sliced_to_array(h.value,2),b=m[0],k=m[1],$(k)&&(null===(o=k.queueOn)||void 0===o?void 0:o.length)?[4,Y(e,k,b)]:[3,12]);case 11:O.sent(),O.label=12;case 12:O.label=13;case 13:return _=!0,[3,10];case 14:return[3,17];case 15:return j=O.sent(),v=!0,g=j,[3,17];case 16:try{_||null==y.return||y.return()}finally{if(v)throw g}return[7];case 17:return Object.keys(e.pending.destinations).length>0?[4,function(e,t){return _async_to_generator(function(){var n,r,o,a,s,i,c,u,l,f,d,p;return _ts_generator(this,function(_){n=!0,r=!1,o=void 0;try{for(a=Object.entries(e.pending.destinations)[Symbol.iterator]();!(n=(s=a.next()).done);n=!0)i=_sliced_to_array(s.value,2),c=i[0],u=i[1],e.pending.destinations[c]&&!e.destinations[c]&&(f=null===(l=u.config)||void 0===l?void 0:l.require)&&-1!==(d=f.indexOf(t))&&(f.splice(d,1),f.length>0||(delete e.pending.destinations[c],!1!==(p=ye(u)).config.queue&&(p.queuePush=_to_consumable_array(e.queue)),e.destinations[c]=p))}catch(e){r=!0,o=e}finally{try{n||null==a.return||a.return()}finally{if(r)throw o}}return[2]})})()}(e,t)]:[3,19];case 18:O.sent(),O.label=19;case 19:return[2,(ne(e,t,s,r),!i)]}})})()},oe=function(e,t,n,r){var o;if(!Number.isFinite(n.max)||n.max<=0)throw new Error("pushBounded: max must be > 0 (got ".concat(n.max,")"));if("dropNewest"===(null!==(o=n.onOverflow)&&void 0!==o?o:"dropOldest"))return e.length>=n.max?(r&&r([t]),{appended:!1,dropped:1}):(e.push(t),{appended:!0,dropped:0});for(var a=[];e.length>=n.max;)a.push(e.shift());return e.push(t),a.length>0&&r&&r(a),{appended:!0,dropped:a.length}},ae=function(e,t,n,r){It.get(e)||(It.set(e,!0),t.warn(n,r))},se=function(e){It.delete(e)},ie=function(e){return e===At},ce=function(e){return void 0===e?{}:"number"==typeof e?{wait:e}:{wait:e.wait,size:e.size,age:e.age}},ue=function(e,t){return e.status.destinations[t]||(e.status.destinations[t]={count:0,failed:0,duration:0,queuePushSize:0,dlqSize:0}),e.status.destinations[t]},le=function(e,t,n,r){var o;e.dropped[t]||(e.dropped[t]={});var a=e.dropped[t];return a[n]=(null!==(o=a[n])&&void 0!==o?o:0)+r,a[n]},fe=function(e,t,n){if(!e)return[];if(Array.isArray(e)&&e.every(function(e){return"string"==typeof e}))return F(e,t);if("string"==typeof e)return F(e,t);var r=A(e,E(n));return 0===r.length?[]:1===r.length?F(r[0],t):F(r,t)},de=function(e,t){return _async_to_generator(function(){var n,r,o,a,s,i,c,l,f,d,p,_,g;return _ts_generator(this,function(y){if(n=t.code,r=t.config,o=void 0===r?{}:r,a=t.env,s=void 0===a?{}:a,i=t.before,c=t.next,l=t.cache,f=t.state,!u(n.push))return[2,ge({ok:!1,failed:{invalid:{type:"invalid",error:"Destination code must have a push method"}}})];if(d=o||{init:!1},p=i?_object_spread_props(_object_spread({},d),{before:i}):_object_spread({},d),c&&(p=_object_spread_props(_object_spread({},p),{next:c})),l&&(p=_object_spread_props(_object_spread({},p),{cache:l})),void 0!==f&&void 0===p.state&&(p=_object_spread_props(_object_spread({},p),{state:f})),_=_object_spread_props(_object_spread({},n),{config:p,env:me(n.env,s)}),!(g=_.config.id))do{g=v(5,"abcdefghijklmnopqrstuvwxyz")}while(e.destinations[g]);return[2,(e.destinations[g]=_,!1!==_.config.queue&&(_.queuePush=_to_consumable_array(e.queue)),pe(e,void 0,{},_define_property({},g,_)))]})})()},pe=function(t,n,r){return _async_to_generator(function(t,n){var r,o,i,c,u,l,f,d,p,v,g,y,h,m,b,k,j,O,x,C,I,A,D,K,F,H,L,U,W,V,Y,$,J=arguments;return _ts_generator(this,function(Z){switch(Z.label){case 0:if(r=J.length>2&&void 0!==J[2]?J[2]:{},o=J.length>3?J[3]:void 0,i=t.allowed,c=t.consent,u=t.globals,l=t.user,!i)return[2,ge({ok:!1})];if(n){if(void 0===(f=t.config.queueMax))throw new Error("Collector.Config.queueMax is undefined; defaults must be seeded by collector()");(d=oe(t.queue,n,{max:f})).dropped>0?(p=le(t.status,e("collector"),"queue",d.dropped),ae(t.queue,t.logger,"collector.queue overflow; oldest events dropped",{buffer:"queue",cap:f,droppedCount:p})):t.queue.length<f&&se(t.queue),t.status.in++}return o||(o=t.destinations),v=t.transformers?G(t.transformers):{},[4,Promise.all(Object.entries(o||{}).map(function(o){var i=_sliced_to_array(o,2),f=i[0],d=i[1];return _async_to_generator(function(){var o,i,p,g,y,h,m,b,k,j,O,x,C,I,A,D,G,K,F,H,L,U,W,V,Y,$,J,Z,Q,X,ee,te,ne,re,ce,de,pe,ge;return _ts_generator(this,function(ye){switch(ye.label){case 0:if(d.config.disabled)return[2,{id:f,destination:d,skipped:!0}];if(y=(d.queuePush||[]).map(function(e){return _object_spread_props(_object_spread({},e),{consent:c})}),d.queuePush=[],n&&y.push(ut(n)),h=r.ingest?_object_spread_props(_object_spread({},r.ingest),{_meta:_object_spread_props(_object_spread({},r.ingest._meta),{path:_to_consumable_array(r.ingest._meta.path)})}):a("unknown"),!y.length&&!(null===(o=d.queueOn)||void 0===o?void 0:o.length))return[2,{id:f,destination:d,skipped:!0}];if(y.length||!(null===(i=d.queueOn)||void 0===i?void 0:i.length))return[3,5];m=!1,ye.label=1;case 1:return ye.trys.push([1,3,,4]),[4,_e(t,d,f)];case 2:return m=ye.sent(),[3,4];case 3:return b=ye.sent(),t.status.failed++,k=d.type||"unknown",t.logger.scope(k).error("destination init failed",{error:_instanceof(b,Error)?b.message:String(b)}),[3,4];case 4:return[2,{id:f,destination:d,skipped:!m}];case 5:if(j=[],O=y.filter(function(n){var r=_(d.config.consent,c,n.consent);if(r)return n.consent=r,j.push(n),!1;var o=N(t,{stepId:e("destination",f),stepType:"destination",phase:"skip",eventId:"string"==typeof n.id?n.id:"",now:Date.now()});return o.skipReason="consent",c&&(o.consent=_object_spread({},c)),d.config.consent&&(o.meta={required:_object_spread({},d.config.consent)}),S(t,o),!0}),O.length>0){C=d.queuePush,I=d.config.id||f,A={max:null!==(x=d.config.queueMax)&&void 0!==x?x:1e3},D=0,G=!0,K=!1,F=void 0;try{for(H=O[Symbol.iterator]();!(G=(L=H.next()).done);G=!0)U=L.value,D+=oe(C,U,A).dropped}catch(e){K=!0,F=e}finally{try{G||null==H.return||H.return()}finally{if(K)throw F}}D>0?(ue(t,I),W=le(t.status,e("destination",I),"queue",D),ae(C,t.logger.scope(d.type||"unknown"),"destination.queuePush overflow; oldest events dropped",{buffer:"queuePush",destination:I,cap:A.max,droppedCount:W})):C.length<A.max&&se(C)}if(!j.length)return[2,{id:f,destination:d,queue:y}];$=!1,ye.label=6;case 6:return ye.trys.push([6,8,,9]),[4,_e(t,d,f)];case 7:return $=ye.sent(),[3,9];case 8:return J=ye.sent(),t.status.failed++,Z=d.type||"unknown",t.logger.scope(Z).error("destination init failed",{error:_instanceof(J,Error)?J.message:String(J)}),[3,9];case 9:return $?(d.dlq||(d.dlq=[]),Q=fe(d.config.before,v,h),X=d.config.next,ee=null===(p=d.config)||void 0===p?void 0:p.cache,te=ee?q(ee):void 0,ne=te?z(te,t):void 0,re=(null===(g=d.config)||void 0===g?void 0:g.state)?M(d.config.state):void 0,ce=null==re?void 0:re.filter(function(e){return"get"===e.mode}),de=null==re?void 0:re.filter(function(e){return"set"===e.mode}),pe=0,ge=0,[4,Promise.all(j.map(function(n){return _async_to_generator(function(){var o,a,i,c,p,_,g,y,m,b,k,j,O;return _ts_generator(this,function(x){switch(x.label){case 0:return n.globals=s(u,n.globals),n.user=s(l,n.user),(null==te?void 0:te.stop)&&ne?(a=E(h,n),[4,P(te,ne,a)]):[3,2];case 1:if("HIT"===(null==(i=x.sent())?void 0:i.status))return[2,n];"MISS"===(null==i?void 0:i.status)&&(o={key:i.key,ttl:i.rule.ttl}),x.label=2;case 2:return c=n,p=r.respond,Q.length>0&&t.transformers&&Object.keys(t.transformers).length>0?[4,St(t,t.transformers,Q,n,h,r.respond,"destination.".concat(f,".before"))]:[3,4];case 3:if(null===(_=x.sent()).event)return[2,n];_.respond&&(p=_.respond),c=Array.isArray(_.event)?_.event[0]:_.event,x.label=4;case 4:return te&&!te.stop&&ne?(g=E(h,c),[4,P(te,ne,g)]):[3,6];case 5:if("HIT"===(null==(y=x.sent())?void 0:y.status))return[2,n];"MISS"===(null==y?void 0:y.status)&&(o={key:y.key,ttl:y.rule.ttl}),x.label=6;case 6:return ce&&ce.length>0&&c?[4,R(ce,function(e){return B(e,t)},c,t)]:[3,8];case 7:c=x.sent(),x.label=8;case 8:return m=Date.now(),b=!1,[4,w(ve,function(n){var r,o=d.type||"unknown";t.logger.scope(o).error("Push failed",{error:n,event:c.name}),V=n,b=!0;var a=d.dlq,s=d.config.id||f,i={max:null!==(r=d.config.dlqMax)&&void 0!==r?r:100},u=oe(a,[c,n],i);if(u.dropped>0){ue(t,s);var l=le(t.status,e("destination",s),"dlq",u.dropped);ae(a,t.logger.scope(d.type||"unknown"),"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:s,cap:i.max,droppedCount:l})}else a.length<i.max&&se(a)})(t,d,f,c,h,p)];case 9:return k=x.sent(),pe+=Date.now()-m,o&&ne&&void 0===d.config.mock&&T(ne,o.key,null==k||k,o.ttl),!b&&de&&de.length>0&&c?[4,R(de,function(e){return B(e,t)},c,t)]:[3,11];case 10:c=x.sent(),x.label=11;case 11:return void 0===k||ie(k)||(Y=k),ie(k)&&ge++,b||!X?[3,13]:(void 0!==k&&(h._response=k),(j=fe(X,v,h)).length>0&&t.transformers&&Object.keys(t.transformers).length>0?[4,St(t,t.transformers,j,c,h,p,"destination.".concat(f,".next"))]:[3,13]);case 12:(O=x.sent()).respond&&(p=O.respond),x.label=13;case 13:return[2,n]}})})()}))]):[2,{id:f,destination:d,queue:y}];case 10:return[2,(ye.sent(),{id:f,destination:d,error:V,response:Y,totalDuration:pe,batchedCount:ge,allowedCount:j.length})]}})})()}))];case 1:g=Z.sent(),y={},h={},m={},b=!0,k=!1,j=void 0;try{for(O=g[Symbol.iterator]();!(b=(x=O.next()).done);b=!0)(C=x.value).skipped||(F=C.destination,H={type:F.type||"unknown",data:C.response},ue(t,C.id),L=t.status.destinations[C.id],U=Date.now(),L.queuePushSize=null!==(I=null===(D=F.queuePush)||void 0===D?void 0:D.length)&&void 0!==I?I:0,L.dlqSize=null!==(A=null===(K=F.dlq)||void 0===K?void 0:K.length)&&void 0!==A?A:0,C.error?(H.error=C.error,m[C.id]=H,L.failed++,L.lastAt=U,L.duration+=C.totalDuration||0,t.status.failed++):C.queue&&C.queue.length?h[C.id]=H:(Y=null!==(W=C.batchedCount)&&void 0!==W?W:0,$=null!==(V=C.allowedCount)&&void 0!==V?V:0,(Math.max(0,$-Y)>0||0===$)&&(y[C.id]=H,L.count++,L.lastAt=U,L.duration+=C.totalDuration||0,t.status.out++)))}catch(e){k=!0,j=e}finally{try{b||null==O.return||O.return()}finally{if(k)throw j}}return[2,ge(_object_spread({event:n},Object.keys(y).length&&{done:y},Object.keys(h).length&&{queued:h},Object.keys(m).length&&{failed:m}))]}})}).apply(this,arguments)},_e=function(t,n,r){return _async_to_generator(function(){var o,a,s,i,c,u,l,f,d,p,_,v,g,y,h,m,b,w;return _ts_generator(this,function(k){switch(k.label){case 0:if(!n.init||n.config.init)return[3,5];a=n.type||"unknown",s=t.logger.scope(a),i={collector:t,logger:s,id:r,config:n.config,env:me(n.env,n.config.env)},s.debug("init"),c=Date.now(),S(t,N(t,{stepId:e("destination",r),stepType:"destination",phase:"init",eventId:"",now:c})),k.label=1;case 1:return k.trys.push([1,3,,4]),[4,x(n.init,"DestinationInit",t.hooks,t.logger)(i)];case 2:return u=k.sent(),[3,4];case 3:throw l=k.sent(),f=Date.now(),(d=N(t,{stepId:e("destination",r),stepType:"destination",phase:"error",eventId:"",now:f})).durationMs=f-c,d.error=_instanceof(l,Error)?{name:l.name,message:l.message}:{message:String(l)},S(t,d),l;case 4:if(!1===u)return[2,u];if(n.config=_object_spread_props(_object_spread({},u||n.config),{init:!0}),null===(o=n.queueOn)||void 0===o?void 0:o.length){p=n.queueOn,n.queueOn=[],_=!0,v=!1,g=void 0;try{for(y=p[Symbol.iterator]();!(_=(h=y.next()).done);_=!0)m=h.value,b=m.type,w=m.data,te(t,n,r,b,w)}catch(e){v=!0,g=e}finally{try{_||null==y.return||y.return()}finally{if(v)throw g}}}s.debug("init done"),k.label=5;case 5:return[2,!0]}})})()},ve=function(t,n,r,o,a,s){return _async_to_generator(function(){var i,u,l,f,d,p,_,v,g,y,h,m,b,k,j,C,I,A,E,q,P,T,D,M,R,z,B,G,K,F,H,L,U,W;return _ts_generator(this,function(V){switch(V.label){case 0:return i=n.config,[4,O(o,i,t)];case 1:if((u=V.sent()).ignore)return[2,!1];if(l=n.type||"unknown",f=t.logger.scope(l),d={collector:t,logger:f,id:r,config:i,data:u.data,rule:u.mapping,ingest:a,env:_object_spread({},me(n.env,i.env),s?{respond:s}:{})},void 0!==i.mock)return[2,(f.debug("mock",{event:u.event.name}),i.mock)];if(p=u.mapping,_=u.mappingKey||"* *",(null==p?void 0:p.batch)&&n.pushBatch&&void 0===i.mock)return n.batches=n.batches||{},n.batches[_]||(j={key:_,entries:[],events:[],data:[]},C=ce(p.batch),I=ce(i.batch),A=null!==(g=null!==(y=C.wait)&&void 0!==y?y:I.wait)&&void 0!==g?g:3e4,E=null!==(h=null!==(m=C.size)&&void 0!==m?m:I.size)&&void 0!==h?h:1e3,q=null!==(b=null!==(k=C.age)&&void 0!==k?k:I.age)&&void 0!==b?b:3e4,P=me(n.env,i.env),T=function(e){var t,n,r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=function(e,t){var n;return"number"==typeof e?{wait:e}:e?{wait:null!==(n=e.wait)&&void 0!==n?n:t,size:e.size,age:e.age}:{wait:t}}(arguments.length>1&&void 0!==arguments[1]?arguments[1]:1e3,1e3),a=o.wait,s=o.size,i=o.age,c=null,u=null,l=!1,f=[],d=0,p=function(){c&&(clearTimeout(c),c=null),u&&(clearTimeout(u),u=null),d=0,n=void 0},_=function(){var r=n,o=f;if(p(),f=[],r)return t=e.apply(void 0,_to_consumable_array(r)),o.forEach(function(e){return e(t)}),t;o.forEach(function(e){return e(void 0)})},v=function(){for(var o=arguments.length,p=new Array(o),v=0;v<o;v++)p[v]=arguments[v];return new Promise(function(o){var v=r&&!l;if(n=p,d+=1,f.push(o),c&&clearTimeout(c),c=setTimeout(function(){c=null,r&&!l||_()},a),void 0===i||u||(u=setTimeout(function(){u=null,_()},i)),void 0!==s&&d>=s)_();else if(v){l=!0,t=e.apply(void 0,_to_consumable_array(p));var g=f;f=[],g.forEach(function(e){return e(t)})}})};return v.flush=function(){return n||0!==f.length?new Promise(function(e){f.push(e),_()}):Promise.resolve(void 0)},v.cancel=function(){var e=f;f=[],p(),e.forEach(function(e){return e(void 0)})},v.size=function(){return d},v}(function(){return _async_to_generator(function(){var o,a,s,c,u,l,d,p,v,g;return _ts_generator(this,function(y){switch(y.label){case 0:return 0===(a=n.batches[_].batched).entries.length?[2]:(s={key:a.key,entries:a.entries,events:a.events,data:a.data},a.entries=[],a.events=[],a.data=[],c=s.entries[0],u={collector:t,logger:f,id:r,config:i,data:void 0,rule:c.rule,ingest:c.ingest,env:_object_spread({},P,c.respond?{respond:c.respond}:{})},f.debug("push batch",{events:s.entries.length}),l=n.config.id||r,d=ue(t,l),p=Date.now(),(v=N(t,{stepId:e("destination",r),stepType:"destination",phase:"flush",eventId:"",now:p})).batch={size:s.entries.length,index:0},S(t,v),g=!0,[4,w(x(n.pushBatch,"DestinationPushBatch",t.hooks,t.logger),function(o){var a;g=!1;var i=Date.now(),c=N(t,{stepId:e("destination",r),stepType:"destination",phase:"error",eventId:"",now:i});c.durationMs=i-p,c.error=_instanceof(o,Error)?{name:o.name,message:o.message}:{message:String(o)},c.batch={size:s.entries.length,index:0},S(t,c);var u=n.dlq=n.dlq||[],_={max:null!==(a=n.config.dlqMax)&&void 0!==a?a:100},v=0,y=!0,h=!1,m=void 0;try{for(var b,w=s.entries[Symbol.iterator]();!(y=(b=w.next()).done);y=!0){var k=b.value;v+=oe(u,[k.event,o],_).dropped}}catch(e){h=!0,m=e}finally{try{y||null==w.return||w.return()}finally{if(h)throw m}}if(v>0){var j=le(t.status,e("destination",l),"dlq",v);ae(u,f,"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:l,cap:_.max,droppedCount:j})}else u.length<_.max&&se(u);d.failed+=s.entries.length,d.dlqSize=u.length,t.status.failed+=s.entries.length,f.error("Push batch failed",{error:_instanceof(o,Error)?o.message:String(o),entries:s.entries.length})})(s,u)]);case 1:return y.sent(),f.debug("push batch done"),d.inFlightBatch=Math.max(0,(null!==(o=d.inFlightBatch)&&void 0!==o?o:0)-s.entries.length),g&&(d.count+=s.entries.length,d.lastAt=Date.now(),t.status.out+=s.entries.length),[2]}})})()},{wait:A,size:E,age:q}),n.batches[_]={batched:j,batchFn:function(){T()},flush:function(){return _async_to_generator(function(){return _ts_generator(this,function(e){switch(e.label){case 0:return[4,T.flush()];case 1:return e.sent(),[2]}})})()}}),(D=n.batches[_]).batched.entries.push({event:u.event,ingest:a,respond:s,rule:p,data:u.data}),D.batched.events.push(u.event),c(u.data)&&D.batched.data.push(u.data),M=n.config.id||r,[2,((R=ue(t,M)).inFlightBatch=(null!==(v=R.inFlightBatch)&&void 0!==v?v:0)+1,D.batchFn(),At)];f.debug("push",{event:u.event.name}),z="string"==typeof u.event.id?u.event.id:"",B=Date.now(),G=N(t,{stepId:e("destination",r),stepType:"destination",phase:"in",eventId:z,now:B}),u.mappingKey&&(G.mappingKey=u.mappingKey),u.event.consent&&(G.consent=_object_spread({},u.event.consent)),S(t,G),V.label=2;case 2:return V.trys.push([2,4,,5]),[4,x(n.push,"DestinationPush",t.hooks,t.logger)(u.event,d)];case 3:return K=V.sent(),F=Date.now(),[2,((H=N(t,{stepId:e("destination",r),stepType:"destination",phase:"out",eventId:z,now:F})).durationMs=F-B,H.outEvent=K,u.mappingKey&&(H.mappingKey=u.mappingKey),S(t,H),f.debug("push done"),K)];case 4:throw L=V.sent(),U=Date.now(),(W=N(t,{stepId:e("destination",r),stepType:"destination",phase:"error",eventId:z,now:U})).durationMs=U-B,W.error=_instanceof(L,Error)?{name:L.name,message:L.message}:{message:String(L)},u.mappingKey&&(W.mappingKey=u.mappingKey),S(t,W),L;case 5:return[2]}})})()},ge=function(e){return _object_spread({ok:!(null==e?void 0:e.failed)},e)},ye=function(e){var t=e.code,n=e.config,r=void 0===n?{}:n,o=e.env,a=void 0===o?{}:o,s=e.cache,i=e.state,c=K(e,"before").config,u=K(_object_spread_props(_object_spread({},e),{config:c}),"next").config,l=_object_spread({},t.config,r,u);s&&(l.cache=s),void 0!==i&&void 0===l.state&&(l.state=i);var f=me(t.env,a);return _object_spread_props(_object_spread({},t),{config:l,env:f})},he=function(e){return _async_to_generator(function(e){var t,n,r,o,a,s,i,c,u,l,f,d,p=arguments;return _ts_generator(this,function(_){t=p.length>1&&void 0!==p[1]?p[1]:{},o={},a=!0,s=!1,i=void 0;try{for(c=Object.entries(t)[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===(n=r.require)||void 0===n?void 0:n.length)?e.pending.destinations[f]=d:o[f]=ye(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)},me=function(e,t){return e||t?t?e&&l(e)&&l(t)?_object_spread({},e,t):t:e:{}},be=function(e,t,n){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=n.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,n){return setTimeout(function(){return n(new Error("".concat(t," '").concat(o,"' destroy timed out")))},5e3)})])];case 2:return l.sent(),[3,4];case 3:return u=l.sent(),i.error("".concat(t," '").concat(o,"' destroy failed: ").concat(u)),[3,4];case 4:return[2]}})})()}),[4,Promise.allSettled(r)];case 1:return o.sent(),[2]}})})()},we=function(e,t,n){return _async_to_generator(function(){var r,o,a,i,c,d,p,_,v;return _ts_generator(this,function(g){switch(g.label){case 0:switch(a=!1,t){case xt.Commands.Config:return[3,1];case xt.Commands.Consent:return[3,2];case xt.Commands.Custom:return[3,3];case xt.Commands.Destination:return[3,4];case xt.Commands.Globals:return[3,7];case xt.Commands.Hook:return[3,8];case xt.Commands.On:return[3,9];case xt.Commands.Ready:return[3,12];case xt.Commands.Run:return[3,13];case xt.Commands.Session:return[3,15];case xt.Commands.Shutdown:return[3,16];case xt.Commands.User:return[3,18]}return[3,19];case 1:return l(n)&&(s(e.config,n,{shallow:!1}),o=n,a=!0),[3,19];case 2:return l(n)&&(i=function(e,t){var n={};return Object.entries(t).forEach(function(e){var t=_sliced_to_array(e,2),r=t[0],o=t[1];n[r]=!!o}),e.consent=s(e.consent,n),{update:n}}(e,n),c=i.update,o=c,a=!0),[3,19];case 3:return l(n)&&(e.custom=s(e.custom,n),o=n,a=!0),[3,19];case 4:return l(n)&&"code"in n&&l(n.code)?[4,de(e,n)]:[3,6];case 5:r=g.sent(),g.label=6;case 6:return[3,19];case 7:return l(n)&&(e.globals=s(e.globals,n),o=n,a=!0),[3,19];case 8:return l(n)&&f(n.name)&&u(n.fn)&&(d=n.name,p=n.fn,e.hooks[d]=p,o=n,a=!0),[3,19];case 9:return l(n)&&f(n.type)?(_=n.type,v=n.rules,[4,ee(e,_,v)]):[3,11];case 10:g.sent(),g.label=11;case 11:return[3,19];case 12:return a=!0,[3,19];case 13:return[4,je(e,n)];case 14:return r=g.sent(),a=!0,[3,19];case 15:return a=!0,[3,19];case 16:return[4,(y=e,_async_to_generator(function(){var e;return _ts_generator(this,function(t){switch(t.label){case 0:return e=y.logger,[4,be(y.sources,"source",e)];case 1:return t.sent(),[4,be(y.destinations,"destination",e)];case 2:return t.sent(),[4,be(y.transformers,"transformer",e)];case 3:return t.sent(),[4,be(y.stores,"store",e)];case 4:return t.sent(),[2]}})})())];case 17:return g.sent(),[3,19];case 18:l(n)&&(s(e.user,n,{shallow:!1}),o=n,a=!0),g.label=19;case 19:return a?[4,re(e,t,void 0,o)]:[3,22];case 20:return g.sent(),[4,pe(e)];case 21:r=g.sent(),g.label=22;case 22:return[2,r||ge({ok:!0})]}var y})})()},ke=function(e,t){if(!t.name)throw new Error("Event name is required");var n=_sliced_to_array(t.name.split(" "),2),r=n[0],o=n[1];if(!r||!o)throw new Error("Event name is invalid");var a=t.timestamp,s=void 0===a?Date.now():a,i=t.name,c=void 0===i?"".concat(r," ").concat(o):i,u=t.data,l=void 0===u?{}:u,f=t.context,d=void 0===f?{}:f,p=t.globals,_=void 0===p?e.globals:p,v=t.custom,g=void 0===v?{}:v,y=t.user,h=void 0===y?e.user:y,m=t.nested,b=void 0===m?[]:m,w=t.consent,k=void 0===w?e.consent:w,j=t.id,O=void 0===j?function(){for(var e="",t=0;t<16;t++)e+=(16*Math.random()|0).toString(16);return e}():j,x=t.trigger,S=void 0===x?"":x,C=t.entity,I=void 0===C?r:C,A=t.action,E=void 0===A?o:A,q=t.timing,P=void 0===q?0:q,T=t.source;return{name:c,data:l,context:d,globals:_,custom:g,user:h,nested:b,consent:k,id:O,trigger:S,entity:I,action:E,timestamp:s,timing:P,source:void 0===T?{type:"collector",schema:"4"}:T}},je=function(e,t){return _async_to_generator(function(){return _ts_generator(this,function(n){switch(n.label){case 0:return e.allowed=!0,e.timing=Date.now(),t&&(t.consent&&(e.consent=s(e.consent,t.consent)),t.user&&(e.user=s(e.user,t.user)),t.globals&&(e.globals=s(e.config.globalsStatic||{},t.globals)),t.custom&&(e.custom=s(e.custom,t.custom))),Object.values(e.destinations).forEach(function(e){e.queuePush=[]}),e.queue=[],e.round++,[4,pe(e)];case 1:return[2,n.sent()]}})})()},Oe=function(){var e,t,n,r,o=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},a=null!==(e=o.maxEntries)&&void 0!==e?e:1e4,s=null!==(t=o.lowWaterMark)&&void 0!==t?t:.8,i=null!==(n=o.sweepIntervalMs)&&void 0!==n?n:6e4,c=Math.floor(a*s),u=new Map,l={hits:0,misses:0,populates:0,writes:0,deletes:0,evictions_entries:0,evictions_ttl:0};return i>0&&((r=setInterval(function(){var e=Date.now(),t=0,n=!0,r=!1,o=void 0;try{for(var a,s=u[Symbol.iterator]();!(n=(a=s.next()).done);n=!0){var i=_sliced_to_array(a.value,2),c=i[0],f=i[1];void 0!==f.expires&&f.expires<=e&&(u.delete(c),t++)}}catch(e){r=!0,o=e}finally{try{n||null==s.return||s.return()}finally{if(r)throw o}}l.evictions_ttl+=t},i))&&"function"==typeof r.unref&&r.unref()),{type:"memory",config:{},get:function(e){var t=u.get(e);if(t)return void 0!==t.expires&&t.expires<=Date.now()?(u.delete(e),l.evictions_ttl++,void l.misses++):(u.delete(e),u.set(e,t),l.hits++,t.value);l.misses++},set:function(e,t,n){var r=!u.has(e);r||u.delete(e),u.set(e,{value:t,expires:void 0!==n?Date.now()+n:void 0}),l.writes++,r&&l.populates++,u.size>a&&function(){if(!(u.size<=a)){var e=u.size-c,t=0,n=!0,r=!1,o=void 0;try{for(var s,i=u.keys()[Symbol.iterator]();!(n=(s=i.next()).done);n=!0){var f=s.value;if(t>=e)break;u.delete(f),t++}}catch(e){r=!0,o=e}finally{try{n||null==i.return||i.return()}finally{if(r)throw o}}l.evictions_entries+=t}}()},delete:function(e){u.delete(e)&&l.deletes++},get counters(){return _object_spread({},l)},destroy:function(){void 0!==r&&(clearInterval(r),r=void 0),u.clear()}}},xe=function(e,t){var n=t.cacheConfig,r=t.cacheStore,o=t.namespace,a=t.logger,s=t.storeId,i=t.collector,c=function(e,t){if(i){var n=N(i,{stepId:"store.".concat(s),stepType:"store",phase:"in",eventId:"",now:Date.now()});n.meta={op:"cache",cached:"hit"===t,status:t,key:e},S(i,n)}},u={hits:0,misses:0,populates:0,writes:0,deletes:0,inflight_dedups:0},l=n.rules.map(function(e){return{match:e.match?yt(e.match):function(){return!0},ttl:e.ttl}}),f=function(e){return"".concat(o,":").concat(e)};function d(e,t){var n=void 0===t?{key:e}:{key:e,value:t};return l.find(function(e){return e.match(n)})}var p=new Map;return{type:e.type,config:e.config,setup:e.setup,get counters(){return _object_spread({},u)},get:function(t){return _async_to_generator(function(){var n,o,a,s;return _ts_generator(this,function(i){switch(i.label){case 0:return n=f(t),[4,r.get(n)];case 1:return void 0!==(o=i.sent())?[2,(u.hits++,c(t,"hit"),o)]:(a=p.get(n))?[2,(u.inflight_dedups++,c(t,"hit"),a)]:(u.misses++,c(t,"miss"),s=_async_to_generator(function(){var o,a,s;return _ts_generator(this,function(i){switch(i.label){case 0:return i.trys.push([0,,6,7]),[4,e.get(t)];case 1:if(void 0===(o=i.sent()))return[2];if(!(a=d(t,o)))return[3,5];i.label=2;case 2:return i.trys.push([2,4,,5]),[4,r.set(n,o,1e3*a.ttl)];case 3:return i.sent(),u.populates++,[3,5];case 4:return s=i.sent(),_("set",t,s),[3,5];case 5:return[2,o];case 6:return p.delete(n),[7];case 7:return[2]}})})(),[2,(p.set(n,s),s)])}})})()},set:function(t,n,o){return _async_to_generator(function(){var a,s;return _ts_generator(this,function(i){switch(i.label){case 0:return u.writes++,[4,e.set(t,n,o)];case 1:if(i.sent(),!(a=d(t,n)))return[3,5];i.label=2;case 2:return i.trys.push([2,4,,5]),[4,r.set(f(t),n,1e3*a.ttl)];case 3:return i.sent(),[3,5];case 4:return s=i.sent(),_("set",t,s),[3,5];case 5:return[2]}})})()},delete:function(t){return _async_to_generator(function(){var n;return _ts_generator(this,function(o){switch(o.label){case 0:return u.deletes++,[4,e.delete(t)];case 1:o.sent(),o.label=2;case 2:return o.trys.push([2,4,,5]),[4,r.delete(f(t))];case 3:return o.sent(),[3,5];case 4:return n=o.sent(),_("delete",t,n),[3,5];case 5:return[2]}})})()}};function _(e,t,n){var r="store-cache(".concat(s,"): cache ").concat(e,' failed for "').concat(t,'"; backing succeeded, continuing');a?a.warn(r,{error:n}):console.warn(r,n)}},Se=function(e,t,n){var r="store.".concat(n),o=x(t.get,"StoreGet",e.hooks,e.logger),a=x(t.set,"StoreSet",e.hooks,e.logger),s=x(t.delete,"StoreDelete",e.hooks,e.logger);t.get=function(t){return _async_to_generator(function(){var n,a,s,i,c,u,l,f;return _ts_generator(this,function(d){switch(d.label){case 0:n=Date.now(),(a=N(e,{stepId:r,stepType:"store",phase:"in",eventId:"",now:n})).meta={op:"get",key:t},S(e,a),d.label=1;case 1:return d.trys.push([1,3,,4]),[4,o(t)];case 2:return s=d.sent(),i=Date.now(),[2,((c=N(e,{stepId:r,stepType:"store",phase:"out",eventId:"",now:i})).durationMs=i-n,c.meta={op:"get",key:t},S(e,c),s)];case 3:throw u=d.sent(),l=Date.now(),(f=N(e,{stepId:r,stepType:"store",phase:"error",eventId:"",now:l})).durationMs=l-n,f.meta={op:"get",key:t},f.error=_instanceof(u,Error)?{name:u.name,message:u.message}:{message:String(u)},S(e,f),u;case 4:return[2]}})})()},t.set=function(t,n,o){return _async_to_generator(function(){var s,i,c,u,l,f,d;return _ts_generator(this,function(p){switch(p.label){case 0:s=Date.now(),(i=N(e,{stepId:r,stepType:"store",phase:"in",eventId:"",now:s})).meta={op:"set",key:t},S(e,i),p.label=1;case 1:return p.trys.push([1,3,,4]),[4,a(t,n,o)];case 2:return p.sent(),c=Date.now(),(u=N(e,{stepId:r,stepType:"store",phase:"out",eventId:"",now:c})).durationMs=c-s,u.meta={op:"set",key:t},S(e,u),[3,4];case 3:throw l=p.sent(),f=Date.now(),(d=N(e,{stepId:r,stepType:"store",phase:"error",eventId:"",now:f})).durationMs=f-s,d.meta={op:"set",key:t},d.error=_instanceof(l,Error)?{name:l.name,message:l.message}:{message:String(l)},S(e,d),l;case 4:return[2]}})})()},t.delete=function(t){return _async_to_generator(function(){var n,o,a,i,c,u,l;return _ts_generator(this,function(f){switch(f.label){case 0:n=Date.now(),(o=N(e,{stepId:r,stepType:"store",phase:"in",eventId:"",now:n})).meta={op:"delete",key:t},S(e,o),f.label=1;case 1:return f.trys.push([1,3,,4]),[4,s(t)];case 2:return f.sent(),a=Date.now(),(i=N(e,{stepId:r,stepType:"store",phase:"out",eventId:"",now:a})).durationMs=a-n,i.meta={op:"delete",key:t},S(e,i),[3,4];case 3:throw c=f.sent(),u=Date.now(),(l=N(e,{stepId:r,stepType:"store",phase:"error",eventId:"",now:u})).durationMs=u-n,l.meta={op:"delete",key:t},l.error=_instanceof(c,Error)?{name:c.name,message:c.message}:{message:String(c)},S(e,l),c;case 4:return[2]}})})()}},Ce=function(e){return _async_to_generator(function(e){var t,n,r,o,a,s,i,c,u,l,f,d,p,_,v,g,y,h,m,b,w,k,j,O,x,S,C,I,A,E,q,P,T,D,M,R,N,z,B,G=arguments;return _ts_generator(this,function(K){switch(K.label){case 0:t=G.length>1&&void 0!==G[1]?G[1]:{},n={},r=!0,o=!1,a=void 0,K.label=1;case 1:K.trys.push([1,6,7,8]),s=Object.entries(t)[Symbol.iterator](),K.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,p=void 0===d?{}:d,_=l.env,v=void 0===_?{}:_,g=e.logger.scope("store").scope(u),[4,f({collector:e,logger:g,id:u,config:p,env:v})]);case 3:y=K.sent(),n[u]=y,K.label=4;case 4:return r=!0,[3,2];case 5:return[3,8];case 6:return h=K.sent(),o=!0,a=h,[3,8];case 7:try{r||null==s.return||s.return()}finally{if(o)throw a}return[7];case 8:b=function(e){var t={},n=!0,r=!1,o=void 0;try{for(var a,s=Object.keys(e)[Symbol.iterator]();!(n=(a=s.next()).done);n=!0){var i=a.value;t[i]="WHITE"}}catch(e){r=!0,o=e}finally{try{n||null==s.return||s.return()}finally{if(r)throw o}}var c=[],u=[];function l(n){var r,o=t[n];if("BLACK"!==o){if("GRAY"===o){var a=u.indexOf(n),s=u.slice(-1===a?0:a).concat(n).join(" -> ");throw new Error("Cycle in cache.store chain: ".concat(s))}t[n]="GRAY",u.push(n);var i=null===(r=e[n].cache)||void 0===r?void 0:r.store;if(void 0!==i){if(!(i in e))throw new Error('Store "'.concat(n,'" cache.store references "').concat(i,'", which is not declared in flow.stores'));l(i)}u.pop(),t[n]="BLACK",c.push(n)}}var f=!0,d=!1,p=void 0;try{for(var _,v=Object.keys(e)[Symbol.iterator]();!(f=(_=v.next()).done);f=!0){var g=_.value;"WHITE"===t[g]&&l(g)}}catch(e){d=!0,p=e}finally{try{f||null==v.return||v.return()}finally{if(d)throw p}}return c}(m=t),w=!0,k=!1,j=void 0;try{for(O=b[Symbol.iterator]();!(w=(x=O.next()).done);w=!0)S=x.value,(I=m[S].cache)&&(A=void 0,E=void 0,void 0!==I.store?(A=n[I.store],E=I.store):(n.__cache||(n.__cache=Oe()),A=n.__cache,E="__cache"),q=null!==(C=I.namespace)&&void 0!==C?C:S,e.logger.scope("store-cache").scope(S).info('store "'.concat(S,'" caches with namespace "').concat(q,':" via ').concat(E)),n[S]=xe(n[S],{storeId:S,cacheConfig:I,cacheStore:A,namespace:q,logger:e.logger.scope("store-cache").scope(S),collector:e}))}catch(e){k=!0,j=e}finally{try{w||null==O.return||O.return()}finally{if(k)throw j}}P=!0,T=!1,D=void 0;try{for(M=Object.entries(n)[Symbol.iterator]();!(P=(R=M.next()).done);P=!0)N=_sliced_to_array(R.value,2),z=N[0],B=N[1],"__cache"!==z&&Se(e,B,z)}catch(e){T=!0,D=e}finally{try{P||null==M.return||M.return()}finally{if(T)throw D}}return[2,n]}})}).apply(this,arguments)},Ie=function(e){return _async_to_generator(function(){var t,n,r,o,i,c,u,l;return _ts_generator(this,function(f){switch(f.label){case 0:return r=s({globalsStatic:{},sessionStatic:{},run:!0,queueMax:1e3},e,{merge:!1,extend:!1}),o={level:null===(t=e.logger)||void 0===t?void 0:t.level,handler:null===(n=e.logger)||void 0===n?void 0:n.handler},i=h(o),c=_object_spread({},r.globalsStatic,e.globals),(u={allowed:!1,config:r,consent:e.consent||{},custom:e.custom||{},destinations:{},transformers:{},stores:{},globals:c,hooks:e.hooks||{},observers:new Set,logger:i,on:{},queue:[],round:0,session:void 0,status:{startedAt:Date.now(),in:0,out:0,failed:0,sources:{},destinations:{},dropped:{}},timing:Date.now(),user:e.user||{},sources:{},pending:{destinations:{}},push:void 0,command:void 0}).push=function(e,t){var n=x(function(n){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return _async_to_generator(function(){return _ts_generator(this,function(o){switch(o.label){case 0:return[4,w(function(){return _async_to_generator(function(){var o,s,i,c,u,l,f,d,p,v,g,y,h,m,b,w,k,j,x,S,C;return _ts_generator(this,function(I){switch(I.label){case 0:return o=Date.now(),s=r.id,i=r.ingest,c=r.respond,u=r.mapping,l=r.preChain,f=r.include,d=r.exclude,p=c,v=n,g=f||d?function(e,t,n){var r=e;return t&&(r=Object.fromEntries(Object.entries(r).filter(function(e){var n=_sliced_to_array(e,1)[0];return t.includes(n)}))),n&&(r=Object.fromEntries(Object.entries(r).filter(function(e){var t=_sliced_to_array(e,1)[0];return!n.includes(t)}))),r}(e.destinations,f,d):void 0,y=null!=i?i:a(s||"unknown"),u?[4,O(v,u,e)]:[3,2];case 1:if((h=I.sent()).ignore)return[2,ge({ok:!0})];if(u.consent&&!_(u.consent,e.consent,h.event.consent))return[2,ge({ok:!0})];v=h.event,I.label=2;case 2:return(null==l?void 0:l.length)&&e.transformers&&Object.keys(e.transformers).length>0?[4,St(e,e.transformers,l,v,y,p,s?"source.".concat(s,".next"):void 0)]:[3,6];case 3:return null===(m=I.sent()).event?[2,ge({ok:!0})]:m.stopped?[2,(m.respond&&(p=m.respond),ge({ok:!0}))]:(m.respond&&(p=m.respond),Array.isArray(m.event)?[4,Promise.all(m.event.map(function(n){return _async_to_generator(function(){var r,o;return _ts_generator(this,function(a){return r=t(n),o=ke(e,r),[2,pe(e,o,{id:s,ingest:y,respond:p},g)]})})()}))]:[3,5]);case 4:return w=I.sent(),s&&(e.status.sources[s]||(e.status.sources[s]={count:0,duration:0}),(k=e.status.sources[s]).count+=m.event.length,k.lastAt=Date.now(),k.duration+=Date.now()-o),[2,null!==(b=w[0])&&void 0!==b?b:ge({ok:!0})];case 5:v=m.event,I.label=6;case 6:return j=t(v),x=ke(e,j),[4,pe(e,x,{id:s,ingest:y,respond:p},g)];case 7:return S=I.sent(),s&&(e.status.sources[s]||(e.status.sources[s]={count:0,duration:0}),(C=e.status.sources[s]).count++,C.lastAt=Date.now(),C.duration+=Date.now()-o),[2,S]}})})()},function(t){if(_instanceof(t,vt))throw t;return e.status.failed++,e.logger.error("push failed",{event:n,ingest:r.ingest,error:t}),ge({ok:!1})})()];case 1:return[2,o.sent()]}})})()},"Push",e.hooks,e.logger);return function(t,r){return _async_to_generator(function(){var o,a,s,i,c,u,l,f;return _ts_generator(this,function(d){switch(d.label){case 0:o="string"==typeof t.id?t.id:"",a=Date.now(),S(e,N(e,{stepId:"collector.push",stepType:"collector",phase:"in",eventId:o,now:a})),d.label=1;case 1:return d.trys.push([1,3,,4]),[4,n(t,r)];case 2:return s=d.sent(),i=Date.now(),[2,((c=N(e,{stepId:"collector.push",stepType:"collector",phase:"out",eventId:o,now:i})).durationMs=i-a,c.outEvent=s,S(e,c),s)];case 3:throw u=d.sent(),l=Date.now(),(f=N(e,{stepId:"collector.push",stepType:"collector",phase:"error",eventId:o,now:l})).durationMs=l-a,f.error=_instanceof(u,Error)?{name:u.name,message:u.message}:{message:String(u)},S(e,f),u;case 4:return[2]}})})()}}(u,function(e){return _object_spread({timing:Math.round((Date.now()-u.timing)/10)/100,source:{type:"collector",schema:"4",version:"4.1.3-next-1780071196115"}},e)}),u.command=(p=we,x(function(e,t,n){return _async_to_generator(function(){return _ts_generator(this,function(r){switch(r.label){case 0:return[4,w(function(){return _async_to_generator(function(){return _ts_generator(this,function(r){switch(r.label){case 0:return[4,p(d,e,t,n)];case 1:return[2,r.sent()]}})})()},function(n){if(_instanceof(n,vt))throw n;return d.status.failed++,d.logger.error("command failed",{command:e,data:t,error:n}),ge({ok:!1})})()];case 1:return[2,r.sent()]}})})()},"Command",(d=u).hooks,d.logger)),l=e.stores||{},[4,Ce(u,l)];case 1:return u.stores=f.sent(),function(e,t,n){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];t[l]&&r.set(f,t[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,p=!1,_=void 0,v=0,g=[n.transformers,n.destinations,n.sources];v<g.length;v++){var y=g[v];if(y)try{for(var h,m=Object.values(y)[Symbol.iterator]();!(d=(h=m.next()).done);d=!0){b(h.value.env)}}catch(e){p=!0,_=e}finally{try{d||null==m.return||m.return()}finally{if(p)throw _}}}function b(e){if(e){var t=!0,n=!1,o=void 0;try{for(var a,s=Object.entries(e)[Symbol.iterator]();!(t=(a=s.next()).done);t=!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){n=!0,o=e}finally{try{t||null==s.return||s.return()}finally{if(n)throw o}}}}}(l,u.stores,e),u.stores.__cache||(u.stores.__cache=Oe()),[4,he(u,e.destinations||{})];case 2:return u.destinations=f.sent(),[4,function(e){return _async_to_generator(function(e){var t,n,r,o,s,i,c,u,l,f=arguments;return _ts_generator(this,function(d){switch(d.label){case 0:t=f.length>1&&void 0!==f[1]?f[1]:{},n={},r=!0,o=!1,s=void 0,d.label=1;case 1:d.trys.push([1,6,7,8]),i=function(){var t,r,o,s,i,c,l,f,d,p,_,v,g,y,h,m,b,w,k,j,x,S,C,I;return _ts_generator(this,function(A){switch(A.label){case 0:return t=_sliced_to_array(u.value,2),r=t[0],o=t[1],f=o.code,d=o.env,p=void 0===d?{}:d,_=function(e,t){var n,r=(n=t,new Set(_to_consumable_array(wt[n]).concat(_to_consumable_array(kt),_to_consumable_array(jt[n])))),o=!0,a=!1,s=void 0;try{for(var i,c=Object.keys(e)[Symbol.iterator]();!(o=(i=c.next()).done);o=!0){var u=i.value;if(!r.has(u))return{ok:!1,code:"UNKNOWN_KEY",key:u,reason:'Unknown key "'.concat(u,'" on ').concat(t,". Allowed: ").concat(_to_consumable_array(r).sort().join(", "),".")}}}catch(e){a=!0,s=e}finally{try{o||null==c.return||c.return()}finally{if(a)throw s}}var l=void 0!==e.package,f=void 0!==e.import,d=void 0!==e.code;return d&&"string"==typeof e.code?{ok:!1,code:"OBSOLETE_CODE_STRING",key:"code",reason:'code: "<name>" is no longer supported. Use import: "'.concat(e.code,'" with the package field instead.')}:d&&("object"!=_type_of(e.code)&&"function"!=typeof e.code||null===e.code||Array.isArray(e.code))?{ok:!1,code:"INVALID_CODE_SHAPE",key:"code",reason:"code must be an object ({ push, type?, init? }) or a resolved function value."}:d&&l?{ok:!1,code:"CONFLICT",key:"package",reason:"Cannot specify both `code` and `package`. Use one or the other."}:d&&f?{ok:!1,code:"CONFLICT",key:"import",reason:"Cannot specify both `code` and `import`."}:f&&!l?{ok:!1,code:"MISSING_PACKAGE",key:"import",reason:"`import` requires `package` to be set."}:!f||"string"==typeof e.import&&Ot.test(e.import)?{ok:!0}:{ok:!1,code:"INVALID_IMPORT",key:"import",reason:"import must match ".concat(Ot.source,". Got: ").concat(JSON.stringify(e.import),".")}}(o,"Transformer"),_.ok?(v=K(o,"before"),g=v.config,y=K(_object_spread_props(_object_spread({},o),{config:g}),"next"),h=y.config,m=Object.keys(p).length>0?_object_spread_props(_object_spread({},h),{env:p}):h,b=o.cache,w=b?_object_spread_props(_object_spread({},m),{cache:b}):m,k=o.state,j=void 0!==k&&void 0===w.state?_object_spread_props(_object_spread({},w),{state:k}):w,x=e.logger.scope("transformer").scope(r),S={collector:e,logger:x,id:r,ingest:a(r),config:j,env:p},C=null!=f?f:function(e){var t=o.mapping;if(t){var n=[];if(void 0!==t.data&&n.push("data"),t.mapping){var a=!0,s=!1,i=void 0,c=!0,u=!1,l=void 0;try{for(var f,d=Object.entries(t.mapping)[Symbol.iterator]();!(c=(f=d.next()).done);c=!0){var p=_sliced_to_array(f.value,2),_=p[0],v=p[1];if("object"==(void 0===v?"undefined":_type_of(v))&&null!==v)try{for(var g,y=Object.entries(v)[Symbol.iterator]();!(a=(g=y.next()).done);a=!0){var h=_sliced_to_array(g.value,2),m=h[0],b=h[1];if("object"==(void 0===b?"undefined":_type_of(b))&&null!==b){var w=b;void 0!==w.data&&n.push("mapping[".concat(_,"][").concat(m,"].data")),void 0!==w.silent&&n.push("mapping[".concat(_,"][").concat(m,"].silent"))}}}catch(e){s=!0,i=e}finally{try{a||null==y.return||y.return()}finally{if(s)throw i}}}}catch(e){u=!0,l=e}finally{try{c||null==d.return||d.return()}finally{if(u)throw l}}}return n.length>0&&e.collector.logger.warn("Transformer ".concat(r,": `").concat(n.join(", "),"` ignored at transformer position (only event-mutating fields apply).")),{type:"pass",config:e.config,push:function(n){return _async_to_generator(function(){var r;return _ts_generator(this,function(o){switch(o.label){case 0:return[4,O(n,t,e.collector)];case 1:return[2,!(r=o.sent()).ignore&&{event:r.event}]}})})()}}}return{type:"pass",config:e.config,push:function(e){return{event:e}}}},[4,C(S)]):(e.logger.warn("Transformer ".concat(r," invalid (").concat(_.code,"): ").concat(_.reason,". Skipping.")),[2,"continue"]);case 1:return I=A.sent(),void 0!==o.before&&void 0===(null===(c=I.config)||void 0===c?void 0:c.before)&&(I.config=_object_spread_props(_object_spread({},null!==(s=I.config)&&void 0!==s?s:{}),{before:o.before})),void 0!==o.next&&void 0===(null===(l=I.config)||void 0===l?void 0:l.next)&&(I.config=_object_spread_props(_object_spread({},null!==(i=I.config)&&void 0!==i?i:{}),{next:o.next})),n[r]=I,[2]}})},c=Object.entries(t)[Symbol.iterator](),d.label=2;case 2:return(r=(u=c.next()).done)?[3,5]:[5,_ts_values(i())];case 3:d.sent(),d.label=4;case 4:return r=!0,[3,2];case 5:return[3,8];case 6:return l=d.sent(),o=!0,s=l,[3,8];case 7:try{r||null==c.return||c.return()}finally{if(o)throw s}return[7];case 8:return[2,n]}})}).apply(this,arguments)}(u,e.transformers||{})];case 3:return[2,(u.transformers=f.sent(),u)]}var d,p})})()},Ae=function(e){return _async_to_generator(function(){var t,n,r,o,a,s,i,c,u,l;return _ts_generator(this,function(f){switch(f.label){case 0:return[4,Ie(e=e||{})];case 1:return t=f.sent(),r=t,n={type:"elb",config:{},push:function(e,t,n,o,a){return _async_to_generator(function(){var s,i;return _ts_generator(this,function(c){if("string"==typeof e&&e.startsWith("walker "))return s=e.replace("walker ",""),[2,r.command(s,t)];if("string"==typeof e)i={name:e},t&&"object"==(void 0===t?"undefined":_type_of(t))&&!Array.isArray(t)&&(i.data=t);else{if(!e||"object"!=(void 0===e?"undefined":_type_of(e)))return[2,ge({ok:!1})];i=e,t&&"object"==(void 0===t?"undefined":_type_of(t))&&!Array.isArray(t)&&(i.data=_object_spread({},i.data||{},t))}return[2,(n&&"object"==(void 0===n?"undefined":_type_of(n))&&(i.context=n),o&&Array.isArray(o)&&(i.nested=o),a&&"object"==(void 0===a?"undefined":_type_of(a))&&(i.custom=a),r.push(i))]})})()}},t.sources.elb=n,[4,Z(t,e.sources||{})];case 2:return f.sent(),o=e.consent,a=e.user,s=e.globals,i=e.custom,o?[4,t.command("consent",o)]:[3,4];case 3:f.sent(),f.label=4;case 4:return a?[4,t.command("user",a)]:[3,6];case 5:f.sent(),f.label=6;case 6:return s&&Object.assign(t.globals,s),i&&Object.assign(t.custom,i),t.config.run?[4,t.command("run")]:[3,8];case 7:f.sent(),f.label=8;case 8:return c=n.push,u=Object.values(t.sources).filter(function(e){return"elb"!==e.type}),[2,((l=u.find(function(e){return e.config.primary}))?c=l.push:u.length>0&&(c=u[0].push),{collector:t,elb:c})]}})})()},Ee=Object.defineProperty,qe=Object.getOwnPropertyDescriptor,Pe=Object.getOwnPropertyNames,Te=Object.prototype.hasOwnProperty,De=function(e,t){for(var n in t)Ee(e,n,{get:t[n],enumerable:!0})},Me={};De(Me,{DEFAULT_CATEGORY_MAP:function(){return Pt},SourceCookiePro:function(){return Re},analyticsOnlyConsent:function(){return Ge},analyticsOnlyMapped:function(){return Ve},createMockElbFn:function(){return Je},createMockOneTrustAPI:function(){return Qe},createTrigger:function(){return Et},customCategoryConsent:function(){return He},default:function(){return Dt},emptyConsent:function(){return Fe},fullConsent:function(){return Ne},fullConsentMapped:function(){return Le},marketingOnlyConsent:function(){return Ke},marketingOnlyMapped:function(){return Ye},minimalConsent:function(){return Be},minimalConsentMapped:function(){return We},noopLogger:function(){return Ze},partialConsent:function(){return ze},partialConsentMapped:function(){return Ue},sourceCookiePro:function(){return Tt},step:function(){return Xe},trigger:function(){return qt}});var Re={},Ne=",C0001,C0002,C0003,C0004,C0005,",ze=",C0001,C0003,",Be=",C0001,",Ge=",C0001,C0002,",Ke=",C0001,C0004,",Fe="",He=",C0001,CUSTOM01,CUSTOM02,",Le={functional:!0,analytics:!0,marketing:!0},Ue={functional:!0,analytics:!1,marketing:!1},We={functional:!0,analytics:!1,marketing:!1},Ve={functional:!0,analytics:!0,marketing:!1},Ye={functional:!0,analytics:!1,marketing:!0},$e=function(){},Je=function(){return function(){return Promise.resolve({ok:!0})}},Ze={error:$e,warn:$e,info:$e,debug:$e,throw:function(e){throw"string"==typeof e?new Error(e):e},json:$e,scope:function(){return Ze}},Qe=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return{IsAlertBoxClosed:function(){return e}}},Xe={};De(Xe,{categoryMapOverride:function(){return nt},fullConsent:function(){return et},minimalConsent:function(){return tt},sdkLoadedDetection:function(){return rt}});var et={title:"Full consent",description:"A CookiePro OptanonConsent cookie listing all groups is translated into a walker consent command with all true.",trigger:{type:"consent"},in:",C0001,C0002,C0003,C0004,C0005,",out:[["elb","walker consent",{functional:!0,analytics:!0,marketing:!0}]]},tt={title:"Minimal consent",description:"Only the necessary CookiePro group is granted so analytics and marketing map to false in the walker consent command.",trigger:{type:"consent"},in:",C0001,",out:[["elb","walker consent",{functional:!0,analytics:!1,marketing:!1}]]},nt={title:"Category map override",description:"Custom categoryMap remaps C0002 from analytics to statistics",trigger:{type:"consent"},in:",C0001,C0002,",mapping:{categoryMap:{C0002:"statistics"}},out:[["elb","walker consent",{functional:!0,statistics:!0,marketing:!1}]]},rt={title:"SDK loaded detection",description:"Immediate detection when OneTrust SDK is already loaded with IsAlertBoxClosed() = true",trigger:{type:"consent"},in:",C0001,C0003,C0004,",out:[["elb","walker consent",{functional:!0,analytics:!1,marketing:!0}]]},ot=Object.defineProperty,at=function(e,t){for(var n in t)ot(e,n,{get:t[n],enumerable:!0})};at({},{stepId:function(){return e}});at({},{getDestination:function(){return t}});at({},{Level:function(){return it}});var st,it=((st=it||{})[st.ERROR=0]="ERROR",st[st.WARN=1]="WARN",st[st.INFO=2]="INFO",st[st.DEBUG=3]="DEBUG",st);at({},{getTransformer:function(){return n}});at({},{getSource:function(){return r}});at({},{getStore:function(){return o}});var ct={merge:!0,shallow:!0,extend:!0};function ut(e){var t=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(t.has(e))return t.get(e);var n=Object.prototype.toString.call(e);if("[object Object]"===n){var r={};for(var o in t.set(e,r),e)Object.prototype.hasOwnProperty.call(e,o)&&(r[o]=ut(e[o],t));return r}if("[object Array]"===n){var a=[];return t.set(e,a),e.forEach(function(e){a.push(ut(e,t))}),a}if("[object Date]"===n)return new Date(e.getTime());if("[object RegExp]"===n){var s=e;return new RegExp(s.source,s.flags)}return e}function lt(e){for(var t=arguments.length>2?arguments[2]:void 0,n=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:"").split("."),r=e,o=0;o<n.length;o++){var a=n[o];if("*"===a&&i(r)){var s=n.slice(o+1).join("."),u=[],f=!0,d=!1,p=void 0;try{for(var _,v=r[Symbol.iterator]();!(f=(_=v.next()).done);f=!0){var g=lt(_.value,s,t);u.push(g)}}catch(e){d=!0,p=e}finally{try{f||null==v.return||v.return()}finally{if(d)throw p}}return u}if(void 0===(r=l(r)||i(r)?r[a]:void 0))break}return c(r)?r:t}var ft={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}}},dt=function(e,t,n,r){var o="".concat(it[e]).concat(r.length>0?" [".concat(r.join(":"),"]"):""),a=Object.keys(n).length>0,s=0===e?console.error:1===e?console.warn:console.log;a?s(o,t,n):s(o,t)};function pt(e){var t=e.level,n=e.handler,r=e.jsonHandler,o=e.scope,a=function(e,r,a){if(e<=t){var s=y(r,a);n?n(e,s.message,s.context,o,dt):dt(e,s.message,s.context,o)}};return{error:function(e,t){return a(0,e,t)},warn:function(e,t){return a(1,e,t)},info:function(e,t){return a(2,e,t)},debug:function(e,t){return a(3,e,t)},throw:function(e,t){var r=y(e,t);throw n?n(0,r.message,r.context,o,dt):dt(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 pt({level:t,handler:n,jsonHandler:r,scope:_to_consumable_array(o).concat([e])})}}}function _t(e){return function(e){return"boolean"==typeof e}(e)||f(e)||function(e){return"number"==typeof e&&!Number.isNaN(e)}(e)||!c(e)||i(e)&&e.every(_t)||l(e)&&Object.values(e).every(_t)}var vt=function(){function e(t,n){var r;return _class_call_check(this,e),(r=_call_super(this,e,[t,n])).name="FatalError",Object.setPrototypeOf(r,e.prototype),r}return _inherits(e,_wrap_native_super(Error)),e}();function gt(e,t,n){return _async_to_generator(function(){return _ts_generator(this,function(r){return[2,(i(t)?t:[t]).reduce(function(t,r){return _async_to_generator(function(){var o,a,s,u,l,d,p,v,g,y,h,b,k,O,x,S,C,I,A,E,q,P;return _ts_generator(this,function(T){switch(T.label){case 0:return[4,t];case 1:return(o=T.sent())?[2,o]:(a=f(r)?{key:r}:r,Object.keys(a).length?(s=a.condition,u=a.consent,l=a.fn,d=a.key,p=a.loop,v=a.map,g=a.set,y=a.validate,h=a.value,b=_object_spread_props(_object_spread({},n),{mapping:r}),(k=s)?[4,w(s,function(e){if(_instanceof(e,vt))throw e;return b.logger.error("mapping condition failed",{event:b.event,error:e}),!1})(e,b)]:[3,3]):[2]);case 2:k=!T.sent(),T.label=3;case 3:return k?[2]:u&&!_(u,b.consent)?[2,h]:(O=c(h)?h:e,l?[4,w(l,function(e){if(_instanceof(e,vt))throw e;b.logger.error("mapping fn failed",{event:b.event,error:e})})(e,b)]:[3,5]);case 4:O=T.sent(),T.label=5;case 5:return d&&(O=lt(e,d,h)),p?(x=_sliced_to_array(p,2),S=x[0],C=x[1],"this"!==S?[3,6]:(A=[e],[3,8])):[3,11];case 6:return[4,j(e,S,b)];case 7:A=T.sent(),T.label=8;case 8:return i(I=A)?[4,Promise.all(I.map(function(e){return j(e,C,b)}))]:[3,10];case 9:O=T.sent().filter(c),T.label=10;case 10:return[3,17];case 11:return v?[4,Object.entries(v).reduce(function(t,n){var r=_sliced_to_array(n,2),o=r[0],a=r[1];return _async_to_generator(function(){var n,r;return _ts_generator(this,function(s){switch(s.label){case 0:return[4,t];case 1:return n=s.sent(),[4,j(e,a,b)];case 2:return r=s.sent(),[2,(c(r)&&(n[o]=r),n)]}})})()},Promise.resolve({}))]:[3,13];case 12:return O=T.sent(),[3,16];case 13:return(E=g)?[4,Promise.all(g.map(function(t){return gt(e,t,b)}))]:[3,15];case 14:E=O=T.sent(),T.label=15;case 15:T.label=16;case 16:T.label=17;case 17:return(q=y)?[4,w(y,function(e){if(_instanceof(e,vt))throw e;return b.logger.error("mapping validate failed",{event:b.event,error:e}),!1})(O,b)]:[3,19];case 18:q=!T.sent(),T.label=19;case 19:return q&&(O=void 0),P=m(O),[2,c(P)?P:m(h)]}})})()},Promise.resolve(void 0))]})})()}function yt(e){if(void 0===e||"*"===e)return function(){return!0};if("and"in e){var t=e.and.map(yt);return function(e){return t.every(function(t){return t(e)})}}if("or"in e){var n=e.or.map(yt);return function(e){return n.some(function(t){return t(e)})}}return function(e){var t=e.key,n=e.operator,r=e.value,o=e.not,a=function(e,t){switch(e){case"eq":return function(e){return String(null!=e?e:"")===t};case"contains":return function(e){return String(null!=e?e:"").includes(t)};case"prefix":return function(e){return String(null!=e?e:"").startsWith(t)};case"suffix":return function(e){return String(null!=e?e:"").endsWith(t)};case"regex":var n=new RegExp(t);return function(e){return n.test(String(null!=e?e:""))};case"gt":var r=Number(t);return function(e){return Number(e)>r};case"lt":var o=Number(t);return function(e){return Number(e)<o};case"exists":return function(e){return null!=e}}}(n,r);return function(e){var n=lt(e,t),r=a(n);return o?!r:r}}(e)}function ht(e){if(null!=e){if("string"==typeof e)return{type:"static",value:e};if(Array.isArray(e)){if(0===e.length)return;if(C(e))return ht({one:e});if(e.every(function(e){return"string"==typeof e}))return{type:"chain",value:e};var t=[],n=!0,r=!1,o=void 0;try{for(var a,s=e[Symbol.iterator]();!(n=(a=s.next()).done);n=!0){var i=ht(a.value);void 0!==i&&t.push(i)}}catch(e){r=!0,o=e}finally{try{n||null==s.return||s.return()}finally{if(r)throw o}}if(0===t.length)return;return{type:"sequence",value:t}}var c=e;if("next"in c&&void 0!==c.next)return c.match?{type:"gate",match:yt(c.match),next:ht(c.next)}:ht(c.next);if("one"in c&&c.one){var u=I(c.one);return c.match?{type:"gate",match:yt(c.match),next:{type:"one",routes:u}}:{type:"one",routes:u}}if("many"in c&&c.many){var l=I(c.many);return c.match?{type:"gate",match:yt(c.match),next:{type:"many",routes:l}}:{type:"many",routes:l}}return c.match?{type:"gate",match:yt(c.match)}:void 0}}var mt=new WeakMap;function bt(e){var t=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;if("gate"===e.type){if(!e.match(t))return;return bt(e.next,t)}if("sequence"===e.type){var n=[],r=!0,o=!1,a=void 0;try{for(var s,i=e.value[Symbol.iterator]();!(r=(s=i.next()).done);r=!0){var c,u=bt(s.value,t);void 0!==u&&(Array.isArray(u)?(c=n).push.apply(c,_to_consumable_array(u)):n.push(u))}}catch(e){o=!0,a=e}finally{try{r||null==i.return||i.return()}finally{if(o)throw a}}return n.length>0?n:void 0}if("many"===e.type){var l=[],f=!0,d=!1,p=void 0;try{for(var _,v=e.routes[Symbol.iterator]();!(f=(_=v.next()).done);f=!0){var g,y=_.value;if(y.match(t)){var h=bt(y.next,t);void 0!==h&&(Array.isArray(h)?(g=l).push.apply(g,_to_consumable_array(h)):l.push(h))}}}catch(e){d=!0,p=e}finally{try{f||null==v.return||v.return()}finally{if(d)throw p}}return l.length>0?l:void 0}var m=!0,b=!1,w=void 0;try{for(var k,j=e.routes[Symbol.iterator]();!(m=(k=j.next()).done);m=!0){var O=k.value;if(O.match(t))return bt(O.next,t)}}catch(e){b=!0,w=e}finally{try{m||null==j.return||j.return()}finally{if(b)throw w}}}}var wt={Source:["code","package","import","before","next","cache","state"],Transformer:["code","package","import","before","next","cache","state","mapping"],Destination:["code","package","import","before","next","cache","state"],Store:["code","package","import","cache"]},kt=["config","env","validate","variables","examples","disabled","id","logger","mock","chainMocks"],jt={Source:["primary"],Transformer:[],Destination:[],Store:[]},Ot=/^[A-Za-z_$][A-Za-z0-9_$]*$/,xt={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 St(e,t,n,r,o,s,i){return _async_to_generator(function(){var c,u,l,f,d,p,_,v,g,y,h;return _ts_generator(this,function(m){switch(m.label){case 0:o||(o=a(null!==(c=n[0])&&void 0!==c?c:"chain")),i&&o._meta&&(o._meta.chainPath=i),u=r,l=s,f=!0,d=!1,p=void 0,m.label=1;case 1:m.trys.push([1,6,7,8]),_=function(){var r,a,s,c,f,d,p,_,v,y,h,m,b,k,j,O,x,S,C,I,D,N,K,W,V,Y,$,J,Z,Q,X,ee,te,ne,re,oe,ae,se,ie,ce,ue,le,fe,de,pe,_e,ve,ge,ye,he;return _ts_generator(this,function(me){switch(me.label){case 0:return r=g.value,(_=t[r])?o&&o._meta&&o._meta.path.length>256?[2,{v:(e.logger.error("Max path length exceeded at ".concat(r)),{event:null,respond:l})}]:(o&&o._meta&&(o._meta.hops++,o._meta.path.push(r)),[4,w(H,function(t){if(_instanceof(t,vt))throw t;return e.status.failed++,e.logger.scope("transformer:".concat(_.type||"unknown")).error("transformer init failed",{transformer:r,error:t}),!1})(e,_,r)]):(e.logger.warn("Transformer not found: ".concat(r)),[2,"continue"]);case 1:return me.sent()?i&&void 0!==(null===(s=_.config)||void 0===s||null===(a=s.chainMocks)||void 0===a?void 0:a[i])?(v=_.config.chainMocks[i],e.logger.scope("transformer:".concat(_.type||"unknown")).debug("chainMock",{chain:i}),u=v,[2,"continue"]):void 0!==(null===(c=_.config)||void 0===c?void 0:c.mock)?(e.logger.scope("transformer:".concat(_.type||"unknown")).debug("mock"),u=_.config.mock,[2,"continue"]):(null===(f=_.config)||void 0===f?void 0:f.disabled)?[2,"continue"]:(y=null===(d=_.config)||void 0===d?void 0:d.cache,h=y?q(y):void 0,m=h?z(h,e):void 0,b=(null===(p=_.config)||void 0===p?void 0:p.state)?M(_.config.state):void 0,k=null==b?void 0:b.filter(function(e){return"get"===e.mode}),j=null==b?void 0:b.filter(function(e){return"set"===e.mode}),O=void 0,h&&m?(x=E(o,u),[4,P(h,m,x)]):[3,3]):[2,{v:{event:null,respond:l}}];case 2:if("HIT"===(null==(S=me.sent())?void 0:S.status)&&S.value)return u=S.value,h.stop?[2,{v:{event:u,respond:l,stopped:!0}}]:[2,"continue"];"MISS"===(null==S?void 0:S.status)&&(O={key:S.key,ttl:S.rule.ttl}),me.label=3;case 3:return(C=_.config.before)?1!==(I=A(C,E(o,u))).length?[3,6]:(D=F(I[0],G(t))).length>0?[4,St(e,t,D,u,o,l,i)]:[3,5]:[3,9];case 4:if(null===(W=me.sent()).event)return[2,{v:{event:null,respond:null!==(N=W.respond)&&void 0!==N?N:l}}];if(W.stopped)return[2,{v:{event:Array.isArray(W.event)?W.event[0]:W.event,respond:null!==(K=W.respond)&&void 0!==K?K:l,stopped:!0}}];W.respond&&(l=W.respond),u=Array.isArray(W.event)?W.event[0]:W.event,me.label=5;case 5:return[3,9];case 6:return I.length>1?[4,Promise.all(I.map(function(n){return w(St,function(t){return e.logger.scope("transformer:many").error("many branch ".concat(n," failed"),{error:t}),{event:null,respond:void 0}})(e,t,F(n,G(t)),u,U(o,n),void 0,i)}))]:[3,8];case 7:me.sent(),me.label=8;case 8:me.label=9;case 9:return k&&k.length>0?[4,R(k,function(t){return B(t,e)},u,e)]:[3,11];case 10:u=me.sent(),me.label=11;case 11:return[4,w(L,function(t){return e.logger.scope("transformer:".concat(_.type||"unknown")).error("Push failed",{error:t}),!1})(e,_,r,u,o,l)];case 12:return!1===(V=me.sent())?[2,{v:{event:null,respond:l}}]:Array.isArray(V)?(Y=n.slice(n.indexOf(r)+1),[4,Promise.all(V.map(function(n){return _async_to_generator(function(){var r,a,s,c;return _ts_generator(this,function(f){switch(f.label){case 0:return r=n.event||u,a=U(o,"unknown"),n.next?0===(s=A(n.next,E(a,r))).length?[2,{event:r,respond:l}]:1===s.length?[2,(c=F(s[0],G(t))).length>0?St(e,t,c,r,a,l,i):{event:r,respond:l}]:[4,Promise.all(s.map(function(n){return w(St,function(t){return e.logger.scope("transformer:many").error("many branch ".concat(n," failed"),{error:t}),{event:null,respond:void 0}})(e,t,F(n,G(t)),r,U(a,n),void 0,i)}))]:[3,2];case 1:return[2,f.sent().map(function(e){return{event:e.event,respond:void 0}})];case 2:return[2,Y.length>0?St(e,t,Y,r,a,l,i):{event:r,respond:l}]}})})()}))]):[3,14];case 13:$=me.sent(),J=l,Z=[],Q=!0,X=!1,ee=void 0;try{for(te=$.flat()[Symbol.iterator]();!(Q=(ne=te.next()).done);Q=!0)if(null!==(re=ne.value))if(re&&"object"==(void 0===re?"undefined":_type_of(re))&&"event"in re){if((ae=re).respond&&(J=ae.respond),null===ae.event)continue;Array.isArray(ae.event)?(oe=Z).push.apply(oe,_to_consumable_array(ae.event)):Z.push(ae.event)}else Z.push(re)}catch(e){X=!0,ee=e}finally{try{Q||null==te.return||te.return()}finally{if(X)throw ee}}return[2,{v:0===Z.length?{event:null,respond:J}:1===Z.length?{event:Z[0],respond:J}:{event:Z,respond:J}}];case 14:return V&&"object"==(void 0===V?"undefined":_type_of(V))?(se=V.event,ie=V.respond,ce=V.next,ie&&(l=ie),void 0===ce?[3,16]:0===(ue=A(ce,E(o,u))).length?(se&&(u=se),[2,"continue"]):1===ue.length?[2,{v:(le=F(ue[0],G(t))).length>0?St(e,t,le,se||u,o,l,i):(e.logger.warn("Branch target not found: ".concat(JSON.stringify(ce))),{event:null,respond:l})}]:(fe={},[4,Promise.all(ue.map(function(n){return w(St,function(t){return e.logger.scope("transformer:many").error("many branch ".concat(n," failed"),{error:t}),{event:null,respond:void 0}})(e,t,F(n,G(t)),se||u,U(o,n),void 0,i)}))])):[3,17];case 15:return[2,(fe.v=(me.sent(),{event:null,respond:void 0}),fe)];case 16:se&&(u=se),me.label=17;case 17:return j&&j.length>0?[4,R(j,function(t){return B(t,e)},u,e)]:[3,19];case 18:u=me.sent(),me.label=19;case 19:return O&&m&&T(m,O.key,u,O.ttl),de=_.config.next,pe="string"==typeof de||Array.isArray(de)&&de.every(function(e){return"string"==typeof e}),_e=void 0!==de&&!pe,V&&("object"!=(void 0===V?"undefined":_type_of(V))||V.next)||!_e?[3,23]:1===(ve=A(_.config.next,E(o,u))).length?[2,{v:(ge=F(ve[0],G(t))).length>0?St(e,t,ge,u,o,l,i):{event:u,respond:l}}]:(ye={},ve.length>1?[4,Promise.all(ve.map(function(n){return w(St,function(t){return e.logger.scope("transformer:many").error("many branch ".concat(n," failed"),{error:t}),{event:null,respond:void 0}})(e,t,F(n,G(t)),u,U(o,n),void 0,i)}))]:[3,21]);case 20:return me.sent(),he={event:null,respond:void 0},[3,22];case 21:he={event:u,respond:l},me.label=22;case 22:return[2,(ye.v=he,ye)];case 23:return[2]}})},v=n[Symbol.iterator](),m.label=2;case 2:return(f=(g=v.next()).done)?[3,5]:[5,_ts_values(_())];case 3:if("object"===_type_of(y=m.sent()))return[2,y.v];m.label=4;case 4:return f=!0,[3,2];case 5:return[3,8];case 6:return h=m.sent(),d=!0,p=h,[3,8];case 7:try{f||null==v.return||v.return()}finally{if(d)throw p}return[7];case 8:return[2,{event:u,respond:l}]}})})()}var Ct,It=new WeakMap,At=Object.freeze({batched:!0}),Et=function(e){return _async_to_generator(function(){var t,n;return _ts_generator(this,function(r){return n=function(){return function(n){return _async_to_generator(function(){var r,o,a;return _ts_generator(this,function(s){switch(s.label){case 0:return(r=window).OptanonActiveGroups=n,r.OneTrust={IsAlertBoxClosed:function(){return!0}},t?[3,2]:[4,Ae(_object_spread_props(_object_spread({},e),{run:null===(o=e.run)||void 0===o||o}))];case 1:a=s.sent(),t={collector:a.collector,elb:a.elb},s.label=2;case 2:return[2]}})})()}},[2,{get flow(){return t},trigger:n}]})})()},qt=function(e,t){var n=t.window;"string"==typeof e&&(n.OptanonActiveGroups=e,n.OneTrust={IsAlertBoxClosed:function(){return!0}})},Pt={C0001:"functional",C0002:"analytics",C0003:"functional",C0004:"marketing",C0005:"marketing"},Tt=function(e){return _async_to_generator(function(){var t,n,r,o,a,s,i,c,u,l,f,d,p,_,v,g,y,h,m,b,w,k,j,O;return _ts_generator(this,function(x){return c=e.config,u=e.env,l=u.elb,f=null!==(t=u.window)&&void 0!==t?t:void 0!==globalThis.window?globalThis.window:void 0,d=_object_spread({},Pt,null!==(n=null==c||null===(a=c.settings)||void 0===a?void 0:a.categoryMap)&&void 0!==n?n:{}),p={},Object.entries(d).forEach(function(e){var t=_sliced_to_array(e,2),n=t[0],r=t[1];p[n.toLowerCase()]=r}),_={categoryMap:d,explicitOnly:null===(r=null==c||null===(s=c.settings)||void 0===s?void 0:s.explicitOnly)||void 0===r||r,globalName:null!==(o=null==c||null===(i=c.settings)||void 0===i?void 0:i.globalName)&&void 0!==o?o:"OneTrust"},v={settings:_},h=!1,f&&(b=null!==(m=_.globalName)&&void 0!==m?m:"OneTrust",w=new Set(Object.values(p)),k=function(e){var t={};return w.forEach(function(e){t[e]=!1}),e.split(",").filter(function(e){return e.length>0}).forEach(function(e){var n=p[e.toLowerCase()];n&&(t[n]=!0)}),t},j=function(){var e=f.OptanonActiveGroups;if(null!=e){if(_.explicitOnly){var t=f[b];if((null==t?void 0:t.IsAlertBoxClosed)&&!t.IsAlertBoxClosed())return}var n=k(e);Object.keys(n).length>0&&l("walker consent",n)}},(O=f[b])&&void 0!==f.OptanonActiveGroups&&j(),O||(y=f.OptanonWrapper,h=!0,f.OptanonWrapper=function(){y&&y(),j(),f.OptanonWrapper=y,h=!1}),g=function(){j()},f.addEventListener("OneTrustGroupsUpdated",g)),[2,{type:"cookiepro",config:v,push:l,destroy:function(e){return _async_to_generator(function(){return _ts_generator(this,function(e){return f&&g&&f.removeEventListener("OneTrustGroupsUpdated",g),f&&h&&(f.OptanonWrapper=y),[2]})})()}}]})})()},Dt=Tt;return Ct=Me,function(e,t,n,r){if(t&&"object"===(void 0===t?"undefined":_type_of(t))||"function"==typeof t){var o=!0,a=!1,s=void 0;try{for(var i,c=function(){var o=i.value;Te.call(e,o)||o===n||Ee(e,o,{get:function(){return t[o]},enumerable:!(r=qe(t,o))||r.enumerable})},u=Pe(t)[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}(Ee({},"__esModule",{value:!0}),Ct)}();
1
+ "use strict";function _array_like_to_array(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function _array_with_holes(e){if(Array.isArray(e))return e}function asyncGeneratorStep(e,t,r,n,o,a,i){try{var u=e[a](i),l=u.value}catch(e){return void r(e)}u.done?t(l):Promise.resolve(l).then(n,o)}function _async_to_generator(e){return function(){var t=this,r=arguments;return new Promise(function(n,o){var a=e.apply(t,r);function i(e){asyncGeneratorStep(a,n,o,i,u,"next",e)}function u(e){asyncGeneratorStep(a,n,o,i,u,"throw",e)}i(void 0)})}}function _define_property(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function _iterable_to_array_limit(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,a=[],i=!0,u=!1;try{for(r=r.call(e);!(i=(n=r.next()).done)&&(a.push(n.value),!t||a.length!==t);i=!0);}catch(e){u=!0,o=e}finally{try{i||null==r.return||r.return()}finally{if(u)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 _object_spread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){_define_property(e,t,r[t])})}return e}function _sliced_to_array(e,t){return _array_with_holes(e)||_iterable_to_array_limit(e,t)||_unsupported_iterable_to_array(e,t)||_non_iterable_rest()}function _type_of(e){return e&&"undefined"!=typeof Symbol&&e.constructor===Symbol?"symbol":typeof e}function _unsupported_iterable_to_array(e,t){if(e){if("string"==typeof e)return _array_like_to_array(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(r):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?_array_like_to_array(e,t):void 0}}function _ts_generator(e,t){var r,n,o,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},i=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),u=Object.defineProperty;return u(i,"next",{value:l(0)}),u(i,"throw",{value:l(1)}),u(i,"return",{value:l(2)}),"function"==typeof Symbol&&u(i,Symbol.iterator,{value:function(){return this}}),i;function l(u){return function(l){return function(u){if(r)throw new TypeError("Generator is already executing.");for(;i&&(i=0,u[0]&&(a=0)),a;)try{if(r=1,n&&(o=2&u[0]?n.return:u[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,u[1])).done)return o;switch(n=0,o&&(u=[2&u[0],o.value]),u[0]){case 0:case 1:o=u;break;case 4:return a.label++,{value:u[1],done:!1};case 5:a.label++,n=u[1],u=[0];continue;case 7:u=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==u[0]&&2!==u[0])){a=0;continue}if(3===u[0]&&(!o||u[1]>o[0]&&u[1]<o[3])){a.label=u[1];break}if(6===u[0]&&a.label<o[1]){a.label=o[1],o=u;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(u);break}o[2]&&a.ops.pop(),a.trys.pop();continue}u=t.call(e,a)}catch(e){u=[6,e],n=0}finally{r=o=0}if(5&u[0])throw u[1];return{value:u[0]?u[1]:void 0,done:!0}}([u,l])}}}var SourceCookiePro=function(){var e=Object.defineProperty,t=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,n=Object.prototype.hasOwnProperty,o={};!function(t,r){for(var n in r)e(t,n,{get:r[n],enumerable:!0})}(o,{DEFAULT_CATEGORY_MAP:function(){return u},SourceCookiePro:function(){return i},default:function(){return c},sourceCookiePro:function(){return l}});var a,i={},u={C0001:"functional",C0002:"analytics",C0003:"functional",C0004:"marketing",C0005:"marketing"},l=function(e){return _async_to_generator(function(){var t,r,n,o,a,i,l,c,f,s,y,p,_,v,b,d,h,g;return _ts_generator(this,function(O){return c=e.config,f=e.env,s=f.elb,y=null!==(t=f.window)&&void 0!==t?t:void 0!==globalThis.window?globalThis.window:void 0,p=_object_spread({},u,null!==(r=null==c||null===(a=c.settings)||void 0===a?void 0:a.categoryMap)&&void 0!==r?r:{}),_={},Object.entries(p).forEach(function(e){var t=_sliced_to_array(e,2),r=t[0],n=t[1];_[r.toLowerCase()]=n}),v={categoryMap:p,explicitOnly:null===(n=null==c||null===(i=c.settings)||void 0===i?void 0:i.explicitOnly)||void 0===n||n,globalName:null!==(o=null==c||null===(l=c.settings)||void 0===l?void 0:l.globalName)&&void 0!==o?o:"OneTrust"},h=!1,g=function(){return _async_to_generator(function(){var e,t,r,n,o,a;return _ts_generator(this,function(i){return y?(t=null!==(e=v.globalName)&&void 0!==e?e:"OneTrust",r=new Set(Object.values(_)),n=function(e){var t={};return r.forEach(function(e){t[e]=!1}),e.split(",").filter(function(e){return e.length>0}).forEach(function(e){var r=_[e.toLowerCase()];r&&(t[r]=!0)}),t},o=function(){var e=y.OptanonActiveGroups;if(null!=e){if(v.explicitOnly){var r=y[t];if((null==r?void 0:r.IsAlertBoxClosed)&&!r.IsAlertBoxClosed())return}var o=n(e);Object.keys(o).length>0&&s("walker consent",o)}},(a=y[t])&&void 0!==y.OptanonActiveGroups&&o(),a||(d=y.OptanonWrapper,h=!0,y.OptanonWrapper=function(){d&&d(),o(),y.OptanonWrapper=d,h=!1}),b=function(){o()},y.addEventListener("OneTrustGroupsUpdated",b),[2]):[2]})})()},[2,{type:"cookiepro",config:{settings:v},push:s,init:g,destroy:function(e){return _async_to_generator(function(){return _ts_generator(this,function(e){return y&&b&&y.removeEventListener("OneTrustGroupsUpdated",b),y&&h&&(y.OptanonWrapper=d),[2]})})()}}]})})()},c=l;return a=o,function(o,a,i,u){if(a&&"object"===(void 0===a?"undefined":_type_of(a))||"function"==typeof a){var l=!0,c=!1,f=void 0;try{for(var s,y=function(){var r=s.value;n.call(o,r)||r===i||e(o,r,{get:function(){return a[r]},enumerable:!(u=t(a,r))||u.enumerable})},p=r(a)[Symbol.iterator]();!(l=(s=p.next()).done);l=!0)y()}catch(e){c=!0,f=e}finally{try{l||null==p.return||p.return()}finally{if(c)throw f}}}return o}(e({},"__esModule",{value:!0}),a)}();
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";var e,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,r=Object.prototype.hasOwnProperty,a=(e,n)=>{for(var o in n)t(e,o,{get:n[o],enumerable:!0})},l={};a(l,{DEFAULT_CATEGORY_MAP:()=>G,SourceCookiePro:()=>i,analyticsOnlyConsent:()=>u,analyticsOnlyMapped:()=>O,createMockElbFn:()=>v,createMockOneTrustAPI:()=>M,createTrigger:()=>E,customCategoryConsent:()=>d,default:()=>B,emptyConsent:()=>C,fullConsent:()=>s,fullConsentMapped:()=>y,marketingOnlyConsent:()=>g,marketingOnlyMapped:()=>w,minimalConsent:()=>p,minimalConsentMapped:()=>f,noopLogger:()=>b,partialConsent:()=>c,partialConsentMapped:()=>m,sourceCookiePro:()=>L,step:()=>h,trigger:()=>I}),module.exports=(e=l,((e,a,l,i)=>{if(a&&"object"==typeof a||"function"==typeof a)for(let s of o(a))r.call(e,s)||s===l||t(e,s,{get:()=>a[s],enumerable:!(i=n(a,s))||i.enumerable});return e})(t({},"__esModule",{value:!0}),e));var i={},s=",C0001,C0002,C0003,C0004,C0005,",c=",C0001,C0003,",p=",C0001,",u=",C0001,C0002,",g=",C0001,C0004,",C="",d=",C0001,CUSTOM01,CUSTOM02,",y={functional:!0,analytics:!0,marketing:!0},m={functional:!0,analytics:!1,marketing:!1},f={functional:!0,analytics:!1,marketing:!1},O={functional:!0,analytics:!0,marketing:!1},w={functional:!0,analytics:!1,marketing:!0},k=()=>{},v=()=>()=>Promise.resolve({ok:!0}),b={error:k,warn:k,info:k,debug:k,throw:e=>{throw"string"==typeof e?new Error(e):e},json:k,scope:()=>b},M=(e=!1)=>({IsAlertBoxClosed:()=>e}),h={};a(h,{categoryMapOverride:()=>P,fullConsent:()=>A,minimalConsent:()=>T,sdkLoadedDetection:()=>x});var A={title:"Full consent",description:"A CookiePro OptanonConsent cookie listing all groups is translated into a walker consent command with all true.",trigger:{type:"consent"},in:",C0001,C0002,C0003,C0004,C0005,",out:[["elb","walker consent",{functional:!0,analytics:!0,marketing:!0}]]},T={title:"Minimal consent",description:"Only the necessary CookiePro group is granted so analytics and marketing map to false in the walker consent command.",trigger:{type:"consent"},in:",C0001,",out:[["elb","walker consent",{functional:!0,analytics:!1,marketing:!1}]]},P={title:"Category map override",description:"Custom categoryMap remaps C0002 from analytics to statistics",trigger:{type:"consent"},in:",C0001,C0002,",mapping:{categoryMap:{C0002:"statistics"}},out:[["elb","walker consent",{functional:!0,statistics:!0,marketing:!1}]]},x={title:"SDK loaded detection",description:"Immediate detection when OneTrust SDK is already loaded with IsAlertBoxClosed() = true",trigger:{type:"consent"},in:",C0001,C0003,C0004,",out:[["elb","walker consent",{functional:!0,analytics:!1,marketing:!0}]]},j=require("@walkeros/collector"),E=async e=>{let t;return{get flow(){return t},trigger:()=>async n=>{var o;const r=window;if(r.OptanonActiveGroups=n,r.OneTrust={IsAlertBoxClosed:()=>!0},!t){const n=await(0,j.startFlow)({...e,run:null==(o=e.run)||o});t={collector:n.collector,elb:n.elb}}}}},I=(e,t)=>{const n=t.window;"string"==typeof e&&(n.OptanonActiveGroups=e,n.OneTrust={IsAlertBoxClosed:()=>!0})},G={C0001:"functional",C0002:"analytics",C0003:"functional",C0004:"marketing",C0005:"marketing"},L=async e=>{var t,n,o,r,a,l,i,s;const{config:c,env:p}=e,{elb:u}=p,g=null!=(t=p.window)?t:void 0!==globalThis.window?globalThis.window:void 0,C={...G,...null!=(o=null==(n=null==c?void 0:c.settings)?void 0:n.categoryMap)?o:{}},d={};Object.entries(C).forEach(([e,t])=>{d[e.toLowerCase()]=t});const y={categoryMap:C,explicitOnly:null==(a=null==(r=null==c?void 0:c.settings)?void 0:r.explicitOnly)||a,globalName:null!=(i=null==(l=null==c?void 0:c.settings)?void 0:l.globalName)?i:"OneTrust"},m={settings:y};let f,O,w=!1;if(g){const e=null!=(s=y.globalName)?s:"OneTrust",t=new Set(Object.values(d)),n=e=>{const n={};return t.forEach(e=>{n[e]=!1}),e.split(",").filter(e=>e.length>0).forEach(e=>{const t=d[e.toLowerCase()];t&&(n[t]=!0)}),n},o=()=>{const t=g.OptanonActiveGroups;if(null==t)return;if(y.explicitOnly){const t=g[e];if((null==t?void 0:t.IsAlertBoxClosed)&&!t.IsAlertBoxClosed())return}const o=n(t);Object.keys(o).length>0&&u("walker consent",o)},r=g[e];r&&void 0!==g.OptanonActiveGroups&&o(),r||(O=g.OptanonWrapper,w=!0,g.OptanonWrapper=()=>{O&&O(),o(),g.OptanonWrapper=O,w=!1}),f=()=>{o()},g.addEventListener("OneTrustGroupsUpdated",f)}return{type:"cookiepro",config:m,push:u,destroy:async e=>{g&&f&&g.removeEventListener("OneTrustGroupsUpdated",f),g&&w&&(g.OptanonWrapper=O)}}},B=L;//# sourceMappingURL=index.js.map
1
+ "use strict";var e,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,r=Object.prototype.hasOwnProperty,l={};((e,n)=>{for(var o in n)t(e,o,{get:n[o],enumerable:!0})})(l,{DEFAULT_CATEGORY_MAP:()=>i,SourceCookiePro:()=>a,default:()=>c,sourceCookiePro:()=>s}),module.exports=(e=l,((e,l,a,i)=>{if(l&&"object"==typeof l||"function"==typeof l)for(let s of o(l))r.call(e,s)||s===a||t(e,s,{get:()=>l[s],enumerable:!(i=n(l,s))||i.enumerable});return e})(t({},"__esModule",{value:!0}),e));var a={},i={C0001:"functional",C0002:"analytics",C0003:"functional",C0004:"marketing",C0005:"marketing"},s=async e=>{var t,n,o,r,l,a,s;const{config:c,env:u}=e,{elb:p}=u,d=null!=(t=u.window)?t:void 0!==globalThis.window?globalThis.window:void 0,O={...i,...null!=(o=null==(n=null==c?void 0:c.settings)?void 0:n.categoryMap)?o:{}},v={};Object.entries(O).forEach(([e,t])=>{v[e.toLowerCase()]=t});const f={categoryMap:O,explicitOnly:null==(l=null==(r=null==c?void 0:c.settings)?void 0:r.explicitOnly)||l,globalName:null!=(s=null==(a=null==c?void 0:c.settings)?void 0:a.globalName)?s:"OneTrust"};let g,y,b=!1;return{type:"cookiepro",config:{settings:f},push:p,init:async()=>{var e;if(!d)return;const t=null!=(e=f.globalName)?e:"OneTrust",n=new Set(Object.values(v)),o=()=>{const e=d.OptanonActiveGroups;if(null==e)return;if(f.explicitOnly){const e=d[t];if((null==e?void 0:e.IsAlertBoxClosed)&&!e.IsAlertBoxClosed())return}const o=(e=>{const t={};return n.forEach(e=>{t[e]=!1}),e.split(",").filter(e=>e.length>0).forEach(e=>{const n=v[e.toLowerCase()];n&&(t[n]=!0)}),t})(e);Object.keys(o).length>0&&p("walker consent",o)},r=d[t];r&&void 0!==d.OptanonActiveGroups&&o(),r||(y=d.OptanonWrapper,b=!0,d.OptanonWrapper=()=>{y&&y(),o(),d.OptanonWrapper=y,b=!1}),g=()=>{o()},d.addEventListener("OneTrustGroupsUpdated",g)},destroy:async e=>{d&&g&&d.removeEventListener("OneTrustGroupsUpdated",g),d&&b&&(d.OptanonWrapper=y)}}},c=s;//# sourceMappingURL=index.js.map
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 { Types, Settings, OneTrustAPI } from './types';\n\n// Export types for external usage\nexport * as SourceCookiePro from './types';\n\n// Export examples\nexport * from './examples';\n\n/**\n * Default category mapping from CookiePro/OneTrust to walkerOS consent groups.\n *\n * Keys use OneTrust's standard uppercase IDs (as shown in CookiePro dashboard).\n * Lookups are case-insensitive (normalized during init).\n *\n * Maps OneTrust's standard category IDs to walkerOS convention:\n * - C0001 (Strictly Necessary) -> functional\n * - C0002 (Performance) -> analytics\n * - C0003 (Functional) -> functional\n * - C0004 (Targeting) -> marketing\n * - C0005 (Social Media) -> marketing\n */\nexport const DEFAULT_CATEGORY_MAP: Record<string, string> = {\n C0001: 'functional',\n C0002: 'analytics',\n C0003: 'functional',\n C0004: 'marketing',\n C0005: 'marketing',\n};\n\n/**\n * CookiePro/OneTrust consent management source for walkerOS.\n *\n * This source listens to CookiePro/OneTrust CMP events and translates\n * consent states to walkerOS consent commands.\n *\n * Three detection paths:\n * 1. Already loaded: window.OneTrust + window.OptanonActiveGroups\n * 2. Init: Wraps OptanonWrapper (preserves existing)\n * 3. Change: OneTrustGroupsUpdated window event\n *\n * @example\n * ```typescript\n * import { sourceCookiePro } from '@walkeros/web-source-cmp-cookiepro';\n *\n * await startFlow({\n * sources: {\n * consent: {\n * code: sourceCookiePro,\n * config: {\n * settings: {\n * categoryMap: {\n * C0002: 'statistics', // Custom mapping\n * },\n * },\n * },\n * },\n * },\n * });\n * ```\n */\nexport const sourceCookiePro: 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 (user overrides win)\n const mergedCategoryMap = {\n ...DEFAULT_CATEGORY_MAP,\n ...(config?.settings?.categoryMap ?? {}),\n };\n\n // Build normalized (lowercase) lookup map for case-insensitive matching\n const normalizedMap: Record<string, string> = {};\n Object.entries(mergedCategoryMap).forEach(([key, value]) => {\n normalizedMap[key.toLowerCase()] = value;\n });\n\n const settings: Settings = {\n categoryMap: mergedCategoryMap, // Preserves original casing for config\n explicitOnly: config?.settings?.explicitOnly ?? true,\n globalName: config?.settings?.globalName ?? 'OneTrust',\n };\n\n const fullConfig: Source.Config<Types> = { settings };\n\n // Track references for cleanup\n let eventListener: (() => void) | undefined;\n let originalOptanonWrapper: (() => void) | undefined;\n let wrappedOptanonWrapper = false;\n\n if (actualWindow) {\n const globalName = settings.globalName ?? 'OneTrust';\n\n /**\n * Collect all unique walkerOS group names from the normalizedMap.\n * Used to set explicit false for absent groups.\n */\n const allMappedGroups = new Set(Object.values(normalizedMap));\n\n /**\n * Parse OptanonActiveGroups string into walkerOS consent state.\n *\n * OptanonActiveGroups format: \",C0001,C0003,\" (comma-separated, leading/trailing commas)\n * Only active groups are listed. Absence means denied.\n * Uses case-insensitive comparison for category IDs via normalizedMap.\n * Only mapped categories produce consent entries (unmapped IDs are ignored).\n * Sets explicit false for all mapped groups not in the active list.\n */\n const parseActiveGroups = (activeGroups: string): WalkerOS.Consent => {\n const state: WalkerOS.Consent = {};\n\n // Initialize all mapped groups to false\n allMappedGroups.forEach((group) => {\n state[group] = false;\n });\n\n // Set active groups to true (case-insensitive via normalizedMap)\n activeGroups\n .split(',')\n .filter((id) => id.length > 0)\n .forEach((id) => {\n const mapped = normalizedMap[id.toLowerCase()];\n if (mapped) {\n state[mapped] = true;\n }\n });\n\n return state;\n };\n\n /**\n * Handle consent by reading current OptanonActiveGroups from window.\n * Checks explicitOnly against IsAlertBoxClosed when available.\n */\n const handleConsent = () => {\n const activeGroups = actualWindow.OptanonActiveGroups;\n if (activeGroups === undefined || activeGroups === null) return;\n\n // Check explicit consent if required\n if (settings.explicitOnly) {\n const cmp = actualWindow[globalName] as OneTrustAPI | undefined;\n if (cmp?.IsAlertBoxClosed && !cmp.IsAlertBoxClosed()) return;\n }\n\n const state = parseActiveGroups(activeGroups);\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 // --- Detection path 1: Already loaded ---\n const cmp = actualWindow[globalName] as OneTrustAPI | undefined;\n if (cmp && actualWindow.OptanonActiveGroups !== undefined) {\n handleConsent();\n }\n\n // --- Detection path 2: OptanonWrapper ---\n // Only wrap if SDK is not yet loaded (no already-loaded path).\n // Self-unwraps after first call -- the event listener handles all\n // subsequent changes, avoiding double-firing.\n if (!cmp) {\n originalOptanonWrapper = actualWindow.OptanonWrapper;\n wrappedOptanonWrapper = true;\n\n actualWindow.OptanonWrapper = () => {\n // Call original wrapper if it existed\n if (originalOptanonWrapper) originalOptanonWrapper();\n handleConsent();\n // Self-unwrap: restore original after first call (SDK init).\n // The OneTrustGroupsUpdated listener handles all future changes.\n actualWindow.OptanonWrapper = originalOptanonWrapper;\n wrappedOptanonWrapper = false;\n };\n }\n\n // --- Detection path 3: OneTrustGroupsUpdated event ---\n eventListener = () => {\n handleConsent();\n };\n actualWindow.addEventListener('OneTrustGroupsUpdated', eventListener);\n }\n\n return {\n type: 'cookiepro',\n config: fullConfig,\n push: elb,\n destroy: async (_context) => {\n // Remove event listener\n if (actualWindow && eventListener) {\n actualWindow.removeEventListener(\n 'OneTrustGroupsUpdated',\n eventListener,\n );\n }\n // Restore original OptanonWrapper\n if (actualWindow && wrappedOptanonWrapper) {\n actualWindow.OptanonWrapper = originalOptanonWrapper;\n }\n },\n };\n};\n\nexport default sourceCookiePro;\n","import type { Source, Elb } from '@walkeros/core';\n\ndeclare module '@walkeros/core' {\n interface SourceMap {\n cookiepro: { type: 'cookiepro'; platform?: 'web' };\n }\n}\n\n/**\n * OneTrust global API interface.\n *\n * Represents the subset of the OneTrust SDK we interact with.\n * The full SDK is much larger, but we only need consent-related methods.\n */\nexport interface OneTrustAPI {\n /** Returns true if user has made an explicit consent choice */\n IsAlertBoxClosed: () => boolean;\n /** Register a callback for consent changes (callback receives event with detail: string[]) */\n OnConsentChanged?: (fn: (event: { detail: string[] }) => void) => void;\n}\n\ndeclare global {\n interface Window {\n /** OneTrust SDK global object */\n OneTrust?: OneTrustAPI;\n /** Comma-separated string of active consent category IDs (e.g. \",C0001,C0003,\") */\n OptanonActiveGroups?: string;\n /** OneTrust callback function, called on SDK load and consent changes */\n OptanonWrapper?: () => void;\n /** CookiePro legacy alias for OneTrust */\n Optanon?: unknown;\n [key: string]: OneTrustAPI | unknown;\n }\n\n interface WindowEventMap {\n /** event.detail is an array of active group ID strings (e.g. [\"C0001\", \"C0002\"]) */\n OneTrustGroupsUpdated: CustomEvent<string[]>;\n }\n}\n\n/**\n * Settings for CookiePro/OneTrust source\n */\nexport interface Settings {\n /**\n * Map CookiePro category IDs to walkerOS consent groups.\n * Keys: CookiePro category IDs (e.g. 'C0001', 'C0002')\n * Values: walkerOS consent group names\n *\n * Comparison is case-insensitive (keys are normalized to lowercase during init).\n *\n * Default provides sensible mapping for standard OneTrust categories:\n * - C0001 (Strictly Necessary) -> functional\n * - C0002 (Performance) -> analytics\n * - C0003 (Functional) -> functional\n * - C0004 (Targeting) -> marketing\n * - C0005 (Social Media) -> marketing\n */\n categoryMap?: Record<string, string>;\n\n /**\n * Only process explicit consent (user made a choice).\n * When true: Checks OneTrust.IsAlertBoxClosed() -- only processes\n * consent if user has actively interacted with the banner.\n * When false: Processes any consent state including defaults.\n *\n * Default: true\n */\n explicitOnly?: boolean;\n\n /**\n * Custom name for window.OneTrust object.\n * Some implementations use a different global name.\n *\n * Default: 'OneTrust'\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 CookiePro source\n */\nexport interface Env extends Source.BaseEnv {\n window?: Window & typeof globalThis;\n}\n\n/**\n * Types bundle for CookiePro 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","/**\n * Example CookiePro OptanonActiveGroups strings.\n *\n * These represent real consent states from CookiePro/OneTrust CMP.\n * Format: comma-separated active category IDs with leading/trailing commas.\n * Only active groups are listed. Absence means denied.\n */\n\n/**\n * Full consent - user accepted all categories\n */\nexport const fullConsent = ',C0001,C0002,C0003,C0004,C0005,';\n\n/**\n * Partial consent - necessary + functional only\n */\nexport const partialConsent = ',C0001,C0003,';\n\n/**\n * Minimal consent - only strictly necessary (always active)\n */\nexport const minimalConsent = ',C0001,';\n\n/**\n * Analytics only - necessary + performance\n */\nexport const analyticsOnlyConsent = ',C0001,C0002,';\n\n/**\n * Marketing only - necessary + targeting\n */\nexport const marketingOnlyConsent = ',C0001,C0004,';\n\n/**\n * Empty string - no consent yet or cleared\n */\nexport const emptyConsent = '';\n\n/**\n * Custom category IDs - some installations use custom IDs\n */\nexport const customCategoryConsent = ',C0001,CUSTOM01,CUSTOM02,';\n","import type { WalkerOS } from '@walkeros/core';\n\n/**\n * Expected walkerOS consent outputs.\n *\n * These represent the consent state after parsing OptanonActiveGroups\n * and mapping through the default categoryMap.\n *\n * Default map:\n * - C0001 -> functional\n * - C0002 -> analytics\n * - C0003 -> functional\n * - C0004 -> marketing\n * - C0005 -> marketing\n *\n * All mapped walkerOS groups get explicit true/false values.\n * Active groups -> true, absent groups -> false.\n */\n\n/**\n * Full consent mapped to walkerOS groups\n */\nexport const fullConsentMapped: WalkerOS.Consent = {\n functional: true,\n analytics: true,\n marketing: true,\n};\n\n/**\n * Partial consent - necessary + functional mapped\n * C0001 -> functional (true), C0003 -> functional (true)\n * analytics and marketing absent -> false\n */\nexport const partialConsentMapped: WalkerOS.Consent = {\n functional: true,\n analytics: false,\n marketing: false,\n};\n\n/**\n * Minimal consent - only strictly necessary\n * C0001 -> functional (true)\n * analytics and marketing absent -> false\n */\nexport const minimalConsentMapped: WalkerOS.Consent = {\n functional: true,\n analytics: false,\n marketing: false,\n};\n\n/**\n * Analytics only - necessary + performance\n * C0001 -> functional (true), C0002 -> analytics (true)\n * marketing absent -> false\n */\nexport const analyticsOnlyMapped: WalkerOS.Consent = {\n functional: true,\n analytics: true,\n marketing: false,\n};\n\n/**\n * Marketing only - necessary + targeting\n * C0001 -> functional (true), C0004 -> marketing (true)\n * analytics absent -> false\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 { OneTrustAPI } from '../types';\n\n/**\n * Example environment configurations for CookiePro source testing.\n */\n\nconst noop = () => {};\n\n/**\n * Create a properly typed elb/push function mock\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 * Create a mock OneTrust API object\n */\nexport const createMockOneTrustAPI = (\n isAlertBoxClosed = false,\n): OneTrustAPI => ({\n IsAlertBoxClosed: () => isAlertBoxClosed,\n});\n","import type { Flow } from '@walkeros/core';\n\nexport const fullConsent: Flow.StepExample = {\n title: 'Full consent',\n description:\n 'A CookiePro OptanonConsent cookie listing all groups is translated into a walker consent command with all true.',\n trigger: { type: 'consent' },\n in: ',C0001,C0002,C0003,C0004,C0005,',\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 minimalConsent: Flow.StepExample = {\n title: 'Minimal consent',\n description:\n 'Only the necessary CookiePro group is granted so analytics and marketing map to false in the walker consent command.',\n trigger: { type: 'consent' },\n in: ',C0001,',\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: 'Custom categoryMap remaps C0002 from analytics to statistics',\n trigger: { type: 'consent' },\n in: ',C0001,C0002,',\n mapping: { categoryMap: { C0002: 'statistics' } },\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 sdkLoadedDetection: Flow.StepExample = {\n title: 'SDK loaded detection',\n description:\n 'Immediate detection when OneTrust SDK is already loaded with IsAlertBoxClosed() = true',\n trigger: { type: 'consent' },\n in: ',C0001,C0003,C0004,',\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\nconst createTrigger: Trigger.CreateFn<string, void> = async (\n config: Collector.InitConfig,\n) => {\n let flow: Trigger.FlowHandle | undefined;\n\n const trigger: Trigger.Fn<string, void> = () => async (content: string) => {\n // Pre-init: set OneTrust globals (source reads these during init)\n const win = window as unknown as Record<string, unknown>;\n win.OptanonActiveGroups = content;\n win.OneTrust = { IsAlertBoxClosed: () => true };\n\n // Lazy startFlow — source checks globals immediately during init\n if (!flow) {\n const result = await startFlow({ ...config, run: config.run ?? true });\n flow = { collector: result.collector, elb: result.elb };\n }\n };\n\n return {\n get flow() {\n return flow;\n },\n trigger,\n };\n};\n\n/** Sets OptanonActiveGroups and OneTrust globals before source init. */\nconst trigger = (input: unknown, env: Record<string, unknown>): void => {\n const win = env.window as Window & Record<string, unknown>;\n if (typeof input !== 'string') return;\n win.OptanonActiveGroups = input;\n win.OneTrust = { IsAlertBoxClosed: () => true };\n};\n\nexport { createTrigger, trigger };\n"],"mappings":"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","names":["fullConsent","minimalConsent","trigger","cmp"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/types/index.ts"],"sourcesContent":["import type { Source, WalkerOS } from '@walkeros/core';\nimport type { Types, Settings, OneTrustAPI } from './types';\n\n// Export types for external usage\nexport * as SourceCookiePro from './types';\n\n/**\n * Default category mapping from CookiePro/OneTrust to walkerOS consent groups.\n *\n * Keys use OneTrust's standard uppercase IDs (as shown in CookiePro dashboard).\n * Lookups are case-insensitive (normalized during init).\n *\n * Maps OneTrust's standard category IDs to walkerOS convention:\n * - C0001 (Strictly Necessary) -> functional\n * - C0002 (Performance) -> analytics\n * - C0003 (Functional) -> functional\n * - C0004 (Targeting) -> marketing\n * - C0005 (Social Media) -> marketing\n */\nexport const DEFAULT_CATEGORY_MAP: Record<string, string> = {\n C0001: 'functional',\n C0002: 'analytics',\n C0003: 'functional',\n C0004: 'marketing',\n C0005: 'marketing',\n};\n\n/**\n * CookiePro/OneTrust consent management source for walkerOS.\n *\n * This source listens to CookiePro/OneTrust CMP events and translates\n * consent states to walkerOS consent commands.\n *\n * Three detection paths:\n * 1. Already loaded: window.OneTrust + window.OptanonActiveGroups\n * 2. Init: Wraps OptanonWrapper (preserves existing)\n * 3. Change: OneTrustGroupsUpdated window event\n *\n * @example\n * ```typescript\n * import { sourceCookiePro } from '@walkeros/web-source-cmp-cookiepro';\n *\n * await startFlow({\n * sources: {\n * consent: {\n * code: sourceCookiePro,\n * config: {\n * settings: {\n * categoryMap: {\n * C0002: 'statistics', // Custom mapping\n * },\n * },\n * },\n * },\n * },\n * });\n * ```\n */\nexport const sourceCookiePro: 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 (user overrides win)\n const mergedCategoryMap = {\n ...DEFAULT_CATEGORY_MAP,\n ...(config?.settings?.categoryMap ?? {}),\n };\n\n // Build normalized (lowercase) lookup map for case-insensitive matching\n const normalizedMap: Record<string, string> = {};\n Object.entries(mergedCategoryMap).forEach(([key, value]) => {\n normalizedMap[key.toLowerCase()] = value;\n });\n\n const settings: Settings = {\n categoryMap: mergedCategoryMap, // Preserves original casing for config\n explicitOnly: config?.settings?.explicitOnly ?? true,\n globalName: config?.settings?.globalName ?? 'OneTrust',\n };\n\n const fullConfig: Source.Config<Types> = { settings };\n\n // Track references for cleanup\n let eventListener: (() => void) | undefined;\n let originalOptanonWrapper: (() => void) | undefined;\n let wrappedOptanonWrapper = false;\n\n // Attach the CMP listeners / OptanonWrapper and perform the static consent\n // read. Deferred to init() (Pass 2 of initSources) so the factory (Pass 1)\n // stays side-effect free: no listener registration, no OptanonWrapper wrap,\n // and no `elb('walker consent')` emit during construction.\n const init = async (): Promise<void> => {\n if (!actualWindow) return;\n const globalName = settings.globalName ?? 'OneTrust';\n\n /**\n * Collect all unique walkerOS group names from the normalizedMap.\n * Used to set explicit false for absent groups.\n */\n const allMappedGroups = new Set(Object.values(normalizedMap));\n\n /**\n * Parse OptanonActiveGroups string into walkerOS consent state.\n *\n * OptanonActiveGroups format: \",C0001,C0003,\" (comma-separated, leading/trailing commas)\n * Only active groups are listed. Absence means denied.\n * Uses case-insensitive comparison for category IDs via normalizedMap.\n * Only mapped categories produce consent entries (unmapped IDs are ignored).\n * Sets explicit false for all mapped groups not in the active list.\n */\n const parseActiveGroups = (activeGroups: string): WalkerOS.Consent => {\n const state: WalkerOS.Consent = {};\n\n // Initialize all mapped groups to false\n allMappedGroups.forEach((group) => {\n state[group] = false;\n });\n\n // Set active groups to true (case-insensitive via normalizedMap)\n activeGroups\n .split(',')\n .filter((id) => id.length > 0)\n .forEach((id) => {\n const mapped = normalizedMap[id.toLowerCase()];\n if (mapped) {\n state[mapped] = true;\n }\n });\n\n return state;\n };\n\n /**\n * Handle consent by reading current OptanonActiveGroups from window.\n * Checks explicitOnly against IsAlertBoxClosed when available.\n */\n const handleConsent = () => {\n const activeGroups = actualWindow.OptanonActiveGroups;\n if (activeGroups === undefined || activeGroups === null) return;\n\n // Check explicit consent if required\n if (settings.explicitOnly) {\n const cmp = actualWindow[globalName] as OneTrustAPI | undefined;\n if (cmp?.IsAlertBoxClosed && !cmp.IsAlertBoxClosed()) return;\n }\n\n const state = parseActiveGroups(activeGroups);\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 // --- Detection path 1: Already loaded ---\n const cmp = actualWindow[globalName] as OneTrustAPI | undefined;\n if (cmp && actualWindow.OptanonActiveGroups !== undefined) {\n handleConsent();\n }\n\n // --- Detection path 2: OptanonWrapper ---\n // Only wrap if SDK is not yet loaded (no already-loaded path).\n // Self-unwraps after first call -- the event listener handles all\n // subsequent changes, avoiding double-firing.\n if (!cmp) {\n originalOptanonWrapper = actualWindow.OptanonWrapper;\n wrappedOptanonWrapper = true;\n\n actualWindow.OptanonWrapper = () => {\n // Call original wrapper if it existed\n if (originalOptanonWrapper) originalOptanonWrapper();\n handleConsent();\n // Self-unwrap: restore original after first call (SDK init).\n // The OneTrustGroupsUpdated listener handles all future changes.\n actualWindow.OptanonWrapper = originalOptanonWrapper;\n wrappedOptanonWrapper = false;\n };\n }\n\n // --- Detection path 3: OneTrustGroupsUpdated event ---\n eventListener = () => {\n handleConsent();\n };\n actualWindow.addEventListener('OneTrustGroupsUpdated', eventListener);\n };\n\n return {\n type: 'cookiepro',\n config: fullConfig,\n push: elb,\n init,\n destroy: async (_context) => {\n // Remove event listener\n if (actualWindow && eventListener) {\n actualWindow.removeEventListener(\n 'OneTrustGroupsUpdated',\n eventListener,\n );\n }\n // Restore original OptanonWrapper\n if (actualWindow && wrappedOptanonWrapper) {\n actualWindow.OptanonWrapper = originalOptanonWrapper;\n }\n },\n };\n};\n\nexport default sourceCookiePro;\n","import type { Source, Elb } from '@walkeros/core';\n\ndeclare module '@walkeros/core' {\n interface SourceMap {\n cookiepro: { type: 'cookiepro'; platform?: 'web' };\n }\n}\n\n/**\n * OneTrust global API interface.\n *\n * Represents the subset of the OneTrust SDK we interact with.\n * The full SDK is much larger, but we only need consent-related methods.\n */\nexport interface OneTrustAPI {\n /** Returns true if user has made an explicit consent choice */\n IsAlertBoxClosed: () => boolean;\n /** Register a callback for consent changes (callback receives event with detail: string[]) */\n OnConsentChanged?: (fn: (event: { detail: string[] }) => void) => void;\n}\n\ndeclare global {\n interface Window {\n /** OneTrust SDK global object */\n OneTrust?: OneTrustAPI;\n /** Comma-separated string of active consent category IDs (e.g. \",C0001,C0003,\") */\n OptanonActiveGroups?: string;\n /** OneTrust callback function, called on SDK load and consent changes */\n OptanonWrapper?: () => void;\n /** CookiePro legacy alias for OneTrust */\n Optanon?: unknown;\n [key: string]: OneTrustAPI | unknown;\n }\n\n interface WindowEventMap {\n /** event.detail is an array of active group ID strings (e.g. [\"C0001\", \"C0002\"]) */\n OneTrustGroupsUpdated: CustomEvent<string[]>;\n }\n}\n\n/**\n * Settings for CookiePro/OneTrust source\n */\nexport interface Settings {\n /**\n * Map CookiePro category IDs to walkerOS consent groups.\n * Keys: CookiePro category IDs (e.g. 'C0001', 'C0002')\n * Values: walkerOS consent group names\n *\n * Comparison is case-insensitive (keys are normalized to lowercase during init).\n *\n * Default provides sensible mapping for standard OneTrust categories:\n * - C0001 (Strictly Necessary) -> functional\n * - C0002 (Performance) -> analytics\n * - C0003 (Functional) -> functional\n * - C0004 (Targeting) -> marketing\n * - C0005 (Social Media) -> marketing\n */\n categoryMap?: Record<string, string>;\n\n /**\n * Only process explicit consent (user made a choice).\n * When true: Checks OneTrust.IsAlertBoxClosed() -- only processes\n * consent if user has actively interacted with the banner.\n * When false: Processes any consent state including defaults.\n *\n * Default: true\n */\n explicitOnly?: boolean;\n\n /**\n * Custom name for window.OneTrust object.\n * Some implementations use a different global name.\n *\n * Default: 'OneTrust'\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 CookiePro source\n */\nexport interface Env extends Source.BaseEnv {\n window?: Window & typeof globalThis;\n}\n\n/**\n * Types bundle for CookiePro 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"],"mappings":"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","names":["_a","cmp"]}
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- var t=Object.defineProperty,e={},n=",C0001,C0002,C0003,C0004,C0005,",o=",C0001,C0003,",r=",C0001,",a=",C0001,C0002,",i=",C0001,C0004,",l="",s=",C0001,CUSTOM01,CUSTOM02,",c={functional:!0,analytics:!0,marketing:!0},u={functional:!0,analytics:!1,marketing:!1},p={functional:!0,analytics:!1,marketing:!1},d={functional:!0,analytics:!0,marketing:!1},g={functional:!0,analytics:!1,marketing:!0},C=()=>{},y=()=>()=>Promise.resolve({ok:!0}),m={error:C,warn:C,info:C,debug:C,throw:t=>{throw"string"==typeof t?new Error(t):t},json:C,scope:()=>m},f=(t=!1)=>({IsAlertBoxClosed:()=>t}),w={};((e,n)=>{for(var o in n)t(e,o,{get:n[o],enumerable:!0})})(w,{categoryMapOverride:()=>O,fullConsent:()=>k,minimalConsent:()=>v,sdkLoadedDetection:()=>b});var k={title:"Full consent",description:"A CookiePro OptanonConsent cookie listing all groups is translated into a walker consent command with all true.",trigger:{type:"consent"},in:",C0001,C0002,C0003,C0004,C0005,",out:[["elb","walker consent",{functional:!0,analytics:!0,marketing:!0}]]},v={title:"Minimal consent",description:"Only the necessary CookiePro group is granted so analytics and marketing map to false in the walker consent command.",trigger:{type:"consent"},in:",C0001,",out:[["elb","walker consent",{functional:!0,analytics:!1,marketing:!1}]]},O={title:"Category map override",description:"Custom categoryMap remaps C0002 from analytics to statistics",trigger:{type:"consent"},in:",C0001,C0002,",mapping:{categoryMap:{C0002:"statistics"}},out:[["elb","walker consent",{functional:!0,statistics:!0,marketing:!1}]]},b={title:"SDK loaded detection",description:"Immediate detection when OneTrust SDK is already loaded with IsAlertBoxClosed() = true",trigger:{type:"consent"},in:",C0001,C0003,C0004,",out:[["elb","walker consent",{functional:!0,analytics:!1,marketing:!0}]]};import{startFlow as h}from"@walkeros/collector";var A=async t=>{let e;return{get flow(){return e},trigger:()=>async n=>{var o;const r=window;if(r.OptanonActiveGroups=n,r.OneTrust={IsAlertBoxClosed:()=>!0},!e){const n=await h({...t,run:null==(o=t.run)||o});e={collector:n.collector,elb:n.elb}}}}},T=(t,e)=>{const n=e.window;"string"==typeof t&&(n.OptanonActiveGroups=t,n.OneTrust={IsAlertBoxClosed:()=>!0})},x={C0001:"functional",C0002:"analytics",C0003:"functional",C0004:"marketing",C0005:"marketing"},M=async t=>{var e,n,o,r,a,i,l,s;const{config:c,env:u}=t,{elb:p}=u,d=null!=(e=u.window)?e:void 0!==globalThis.window?globalThis.window:void 0,g={...x,...null!=(o=null==(n=null==c?void 0:c.settings)?void 0:n.categoryMap)?o:{}},C={};Object.entries(g).forEach(([t,e])=>{C[t.toLowerCase()]=e});const y={categoryMap:g,explicitOnly:null==(a=null==(r=null==c?void 0:c.settings)?void 0:r.explicitOnly)||a,globalName:null!=(l=null==(i=null==c?void 0:c.settings)?void 0:i.globalName)?l:"OneTrust"},m={settings:y};let f,w,k=!1;if(d){const t=null!=(s=y.globalName)?s:"OneTrust",e=new Set(Object.values(C)),n=t=>{const n={};return e.forEach(t=>{n[t]=!1}),t.split(",").filter(t=>t.length>0).forEach(t=>{const e=C[t.toLowerCase()];e&&(n[e]=!0)}),n},o=()=>{const e=d.OptanonActiveGroups;if(null==e)return;if(y.explicitOnly){const e=d[t];if((null==e?void 0:e.IsAlertBoxClosed)&&!e.IsAlertBoxClosed())return}const o=n(e);Object.keys(o).length>0&&p("walker consent",o)},r=d[t];r&&void 0!==d.OptanonActiveGroups&&o(),r||(w=d.OptanonWrapper,k=!0,d.OptanonWrapper=()=>{w&&w(),o(),d.OptanonWrapper=w,k=!1}),f=()=>{o()},d.addEventListener("OneTrustGroupsUpdated",f)}return{type:"cookiepro",config:m,push:p,destroy:async t=>{d&&f&&d.removeEventListener("OneTrustGroupsUpdated",f),d&&k&&(d.OptanonWrapper=w)}}},I=M;export{x as DEFAULT_CATEGORY_MAP,e as SourceCookiePro,a as analyticsOnlyConsent,d as analyticsOnlyMapped,y as createMockElbFn,f as createMockOneTrustAPI,A as createTrigger,s as customCategoryConsent,I as default,l as emptyConsent,n as fullConsent,c as fullConsentMapped,i as marketingOnlyConsent,g as marketingOnlyMapped,r as minimalConsent,p as minimalConsentMapped,m as noopLogger,o as partialConsent,u as partialConsentMapped,M as sourceCookiePro,w as step,T as trigger};//# sourceMappingURL=index.mjs.map
1
+ var n={},e={C0001:"functional",C0002:"analytics",C0003:"functional",C0004:"marketing",C0005:"marketing"},t=async n=>{var t,o,l,r,a,i,s;const{config:c,env:u}=n,{elb:p}=u,d=null!=(t=u.window)?t:void 0!==globalThis.window?globalThis.window:void 0,v={...e,...null!=(l=null==(o=null==c?void 0:c.settings)?void 0:o.categoryMap)?l:{}},g={};Object.entries(v).forEach(([n,e])=>{g[n.toLowerCase()]=e});const O={categoryMap:v,explicitOnly:null==(a=null==(r=null==c?void 0:c.settings)?void 0:r.explicitOnly)||a,globalName:null!=(s=null==(i=null==c?void 0:c.settings)?void 0:i.globalName)?s:"OneTrust"};let f,y,w=!1;return{type:"cookiepro",config:{settings:O},push:p,init:async()=>{var n;if(!d)return;const e=null!=(n=O.globalName)?n:"OneTrust",t=new Set(Object.values(g)),o=()=>{const n=d.OptanonActiveGroups;if(null==n)return;if(O.explicitOnly){const n=d[e];if((null==n?void 0:n.IsAlertBoxClosed)&&!n.IsAlertBoxClosed())return}const o=(n=>{const e={};return t.forEach(n=>{e[n]=!1}),n.split(",").filter(n=>n.length>0).forEach(n=>{const t=g[n.toLowerCase()];t&&(e[t]=!0)}),e})(n);Object.keys(o).length>0&&p("walker consent",o)},l=d[e];l&&void 0!==d.OptanonActiveGroups&&o(),l||(y=d.OptanonWrapper,w=!0,d.OptanonWrapper=()=>{y&&y(),o(),d.OptanonWrapper=y,w=!1}),f=()=>{o()},d.addEventListener("OneTrustGroupsUpdated",f)},destroy:async n=>{d&&f&&d.removeEventListener("OneTrustGroupsUpdated",f),d&&w&&(d.OptanonWrapper=y)}}},o=t;export{e as DEFAULT_CATEGORY_MAP,n as SourceCookiePro,o as default,t as sourceCookiePro};//# sourceMappingURL=index.mjs.map
@@ -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\ndeclare module '@walkeros/core' {\n interface SourceMap {\n cookiepro: { type: 'cookiepro'; platform?: 'web' };\n }\n}\n\n/**\n * OneTrust global API interface.\n *\n * Represents the subset of the OneTrust SDK we interact with.\n * The full SDK is much larger, but we only need consent-related methods.\n */\nexport interface OneTrustAPI {\n /** Returns true if user has made an explicit consent choice */\n IsAlertBoxClosed: () => boolean;\n /** Register a callback for consent changes (callback receives event with detail: string[]) */\n OnConsentChanged?: (fn: (event: { detail: string[] }) => void) => void;\n}\n\ndeclare global {\n interface Window {\n /** OneTrust SDK global object */\n OneTrust?: OneTrustAPI;\n /** Comma-separated string of active consent category IDs (e.g. \",C0001,C0003,\") */\n OptanonActiveGroups?: string;\n /** OneTrust callback function, called on SDK load and consent changes */\n OptanonWrapper?: () => void;\n /** CookiePro legacy alias for OneTrust */\n Optanon?: unknown;\n [key: string]: OneTrustAPI | unknown;\n }\n\n interface WindowEventMap {\n /** event.detail is an array of active group ID strings (e.g. [\"C0001\", \"C0002\"]) */\n OneTrustGroupsUpdated: CustomEvent<string[]>;\n }\n}\n\n/**\n * Settings for CookiePro/OneTrust source\n */\nexport interface Settings {\n /**\n * Map CookiePro category IDs to walkerOS consent groups.\n * Keys: CookiePro category IDs (e.g. 'C0001', 'C0002')\n * Values: walkerOS consent group names\n *\n * Comparison is case-insensitive (keys are normalized to lowercase during init).\n *\n * Default provides sensible mapping for standard OneTrust categories:\n * - C0001 (Strictly Necessary) -> functional\n * - C0002 (Performance) -> analytics\n * - C0003 (Functional) -> functional\n * - C0004 (Targeting) -> marketing\n * - C0005 (Social Media) -> marketing\n */\n categoryMap?: Record<string, string>;\n\n /**\n * Only process explicit consent (user made a choice).\n * When true: Checks OneTrust.IsAlertBoxClosed() -- only processes\n * consent if user has actively interacted with the banner.\n * When false: Processes any consent state including defaults.\n *\n * Default: true\n */\n explicitOnly?: boolean;\n\n /**\n * Custom name for window.OneTrust object.\n * Some implementations use a different global name.\n *\n * Default: 'OneTrust'\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 CookiePro source\n */\nexport interface Env extends Source.BaseEnv {\n window?: Window & typeof globalThis;\n}\n\n/**\n * Types bundle for CookiePro 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","/**\n * Example CookiePro OptanonActiveGroups strings.\n *\n * These represent real consent states from CookiePro/OneTrust CMP.\n * Format: comma-separated active category IDs with leading/trailing commas.\n * Only active groups are listed. Absence means denied.\n */\n\n/**\n * Full consent - user accepted all categories\n */\nexport const fullConsent = ',C0001,C0002,C0003,C0004,C0005,';\n\n/**\n * Partial consent - necessary + functional only\n */\nexport const partialConsent = ',C0001,C0003,';\n\n/**\n * Minimal consent - only strictly necessary (always active)\n */\nexport const minimalConsent = ',C0001,';\n\n/**\n * Analytics only - necessary + performance\n */\nexport const analyticsOnlyConsent = ',C0001,C0002,';\n\n/**\n * Marketing only - necessary + targeting\n */\nexport const marketingOnlyConsent = ',C0001,C0004,';\n\n/**\n * Empty string - no consent yet or cleared\n */\nexport const emptyConsent = '';\n\n/**\n * Custom category IDs - some installations use custom IDs\n */\nexport const customCategoryConsent = ',C0001,CUSTOM01,CUSTOM02,';\n","import type { WalkerOS } from '@walkeros/core';\n\n/**\n * Expected walkerOS consent outputs.\n *\n * These represent the consent state after parsing OptanonActiveGroups\n * and mapping through the default categoryMap.\n *\n * Default map:\n * - C0001 -> functional\n * - C0002 -> analytics\n * - C0003 -> functional\n * - C0004 -> marketing\n * - C0005 -> marketing\n *\n * All mapped walkerOS groups get explicit true/false values.\n * Active groups -> true, absent groups -> false.\n */\n\n/**\n * Full consent mapped to walkerOS groups\n */\nexport const fullConsentMapped: WalkerOS.Consent = {\n functional: true,\n analytics: true,\n marketing: true,\n};\n\n/**\n * Partial consent - necessary + functional mapped\n * C0001 -> functional (true), C0003 -> functional (true)\n * analytics and marketing absent -> false\n */\nexport const partialConsentMapped: WalkerOS.Consent = {\n functional: true,\n analytics: false,\n marketing: false,\n};\n\n/**\n * Minimal consent - only strictly necessary\n * C0001 -> functional (true)\n * analytics and marketing absent -> false\n */\nexport const minimalConsentMapped: WalkerOS.Consent = {\n functional: true,\n analytics: false,\n marketing: false,\n};\n\n/**\n * Analytics only - necessary + performance\n * C0001 -> functional (true), C0002 -> analytics (true)\n * marketing absent -> false\n */\nexport const analyticsOnlyMapped: WalkerOS.Consent = {\n functional: true,\n analytics: true,\n marketing: false,\n};\n\n/**\n * Marketing only - necessary + targeting\n * C0001 -> functional (true), C0004 -> marketing (true)\n * analytics absent -> false\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 { OneTrustAPI } from '../types';\n\n/**\n * Example environment configurations for CookiePro source testing.\n */\n\nconst noop = () => {};\n\n/**\n * Create a properly typed elb/push function mock\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 * Create a mock OneTrust API object\n */\nexport const createMockOneTrustAPI = (\n isAlertBoxClosed = false,\n): OneTrustAPI => ({\n IsAlertBoxClosed: () => isAlertBoxClosed,\n});\n","import type { Flow } from '@walkeros/core';\n\nexport const fullConsent: Flow.StepExample = {\n title: 'Full consent',\n description:\n 'A CookiePro OptanonConsent cookie listing all groups is translated into a walker consent command with all true.',\n trigger: { type: 'consent' },\n in: ',C0001,C0002,C0003,C0004,C0005,',\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 minimalConsent: Flow.StepExample = {\n title: 'Minimal consent',\n description:\n 'Only the necessary CookiePro group is granted so analytics and marketing map to false in the walker consent command.',\n trigger: { type: 'consent' },\n in: ',C0001,',\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: 'Custom categoryMap remaps C0002 from analytics to statistics',\n trigger: { type: 'consent' },\n in: ',C0001,C0002,',\n mapping: { categoryMap: { C0002: 'statistics' } },\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 sdkLoadedDetection: Flow.StepExample = {\n title: 'SDK loaded detection',\n description:\n 'Immediate detection when OneTrust SDK is already loaded with IsAlertBoxClosed() = true',\n trigger: { type: 'consent' },\n in: ',C0001,C0003,C0004,',\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\nconst createTrigger: Trigger.CreateFn<string, void> = async (\n config: Collector.InitConfig,\n) => {\n let flow: Trigger.FlowHandle | undefined;\n\n const trigger: Trigger.Fn<string, void> = () => async (content: string) => {\n // Pre-init: set OneTrust globals (source reads these during init)\n const win = window as unknown as Record<string, unknown>;\n win.OptanonActiveGroups = content;\n win.OneTrust = { IsAlertBoxClosed: () => true };\n\n // Lazy startFlow — source checks globals immediately during init\n if (!flow) {\n const result = await startFlow({ ...config, run: config.run ?? true });\n flow = { collector: result.collector, elb: result.elb };\n }\n };\n\n return {\n get flow() {\n return flow;\n },\n trigger,\n };\n};\n\n/** Sets OptanonActiveGroups and OneTrust globals before source init. */\nconst trigger = (input: unknown, env: Record<string, unknown>): void => {\n const win = env.window as Window & Record<string, unknown>;\n if (typeof input !== 'string') return;\n win.OptanonActiveGroups = input;\n win.OneTrust = { IsAlertBoxClosed: () => true };\n};\n\nexport { createTrigger, trigger };\n","import type { Source, WalkerOS } from '@walkeros/core';\nimport type { Types, Settings, OneTrustAPI } from './types';\n\n// Export types for external usage\nexport * as SourceCookiePro from './types';\n\n// Export examples\nexport * from './examples';\n\n/**\n * Default category mapping from CookiePro/OneTrust to walkerOS consent groups.\n *\n * Keys use OneTrust's standard uppercase IDs (as shown in CookiePro dashboard).\n * Lookups are case-insensitive (normalized during init).\n *\n * Maps OneTrust's standard category IDs to walkerOS convention:\n * - C0001 (Strictly Necessary) -> functional\n * - C0002 (Performance) -> analytics\n * - C0003 (Functional) -> functional\n * - C0004 (Targeting) -> marketing\n * - C0005 (Social Media) -> marketing\n */\nexport const DEFAULT_CATEGORY_MAP: Record<string, string> = {\n C0001: 'functional',\n C0002: 'analytics',\n C0003: 'functional',\n C0004: 'marketing',\n C0005: 'marketing',\n};\n\n/**\n * CookiePro/OneTrust consent management source for walkerOS.\n *\n * This source listens to CookiePro/OneTrust CMP events and translates\n * consent states to walkerOS consent commands.\n *\n * Three detection paths:\n * 1. Already loaded: window.OneTrust + window.OptanonActiveGroups\n * 2. Init: Wraps OptanonWrapper (preserves existing)\n * 3. Change: OneTrustGroupsUpdated window event\n *\n * @example\n * ```typescript\n * import { sourceCookiePro } from '@walkeros/web-source-cmp-cookiepro';\n *\n * await startFlow({\n * sources: {\n * consent: {\n * code: sourceCookiePro,\n * config: {\n * settings: {\n * categoryMap: {\n * C0002: 'statistics', // Custom mapping\n * },\n * },\n * },\n * },\n * },\n * });\n * ```\n */\nexport const sourceCookiePro: 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 (user overrides win)\n const mergedCategoryMap = {\n ...DEFAULT_CATEGORY_MAP,\n ...(config?.settings?.categoryMap ?? {}),\n };\n\n // Build normalized (lowercase) lookup map for case-insensitive matching\n const normalizedMap: Record<string, string> = {};\n Object.entries(mergedCategoryMap).forEach(([key, value]) => {\n normalizedMap[key.toLowerCase()] = value;\n });\n\n const settings: Settings = {\n categoryMap: mergedCategoryMap, // Preserves original casing for config\n explicitOnly: config?.settings?.explicitOnly ?? true,\n globalName: config?.settings?.globalName ?? 'OneTrust',\n };\n\n const fullConfig: Source.Config<Types> = { settings };\n\n // Track references for cleanup\n let eventListener: (() => void) | undefined;\n let originalOptanonWrapper: (() => void) | undefined;\n let wrappedOptanonWrapper = false;\n\n if (actualWindow) {\n const globalName = settings.globalName ?? 'OneTrust';\n\n /**\n * Collect all unique walkerOS group names from the normalizedMap.\n * Used to set explicit false for absent groups.\n */\n const allMappedGroups = new Set(Object.values(normalizedMap));\n\n /**\n * Parse OptanonActiveGroups string into walkerOS consent state.\n *\n * OptanonActiveGroups format: \",C0001,C0003,\" (comma-separated, leading/trailing commas)\n * Only active groups are listed. Absence means denied.\n * Uses case-insensitive comparison for category IDs via normalizedMap.\n * Only mapped categories produce consent entries (unmapped IDs are ignored).\n * Sets explicit false for all mapped groups not in the active list.\n */\n const parseActiveGroups = (activeGroups: string): WalkerOS.Consent => {\n const state: WalkerOS.Consent = {};\n\n // Initialize all mapped groups to false\n allMappedGroups.forEach((group) => {\n state[group] = false;\n });\n\n // Set active groups to true (case-insensitive via normalizedMap)\n activeGroups\n .split(',')\n .filter((id) => id.length > 0)\n .forEach((id) => {\n const mapped = normalizedMap[id.toLowerCase()];\n if (mapped) {\n state[mapped] = true;\n }\n });\n\n return state;\n };\n\n /**\n * Handle consent by reading current OptanonActiveGroups from window.\n * Checks explicitOnly against IsAlertBoxClosed when available.\n */\n const handleConsent = () => {\n const activeGroups = actualWindow.OptanonActiveGroups;\n if (activeGroups === undefined || activeGroups === null) return;\n\n // Check explicit consent if required\n if (settings.explicitOnly) {\n const cmp = actualWindow[globalName] as OneTrustAPI | undefined;\n if (cmp?.IsAlertBoxClosed && !cmp.IsAlertBoxClosed()) return;\n }\n\n const state = parseActiveGroups(activeGroups);\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 // --- Detection path 1: Already loaded ---\n const cmp = actualWindow[globalName] as OneTrustAPI | undefined;\n if (cmp && actualWindow.OptanonActiveGroups !== undefined) {\n handleConsent();\n }\n\n // --- Detection path 2: OptanonWrapper ---\n // Only wrap if SDK is not yet loaded (no already-loaded path).\n // Self-unwraps after first call -- the event listener handles all\n // subsequent changes, avoiding double-firing.\n if (!cmp) {\n originalOptanonWrapper = actualWindow.OptanonWrapper;\n wrappedOptanonWrapper = true;\n\n actualWindow.OptanonWrapper = () => {\n // Call original wrapper if it existed\n if (originalOptanonWrapper) originalOptanonWrapper();\n handleConsent();\n // Self-unwrap: restore original after first call (SDK init).\n // The OneTrustGroupsUpdated listener handles all future changes.\n actualWindow.OptanonWrapper = originalOptanonWrapper;\n wrappedOptanonWrapper = false;\n };\n }\n\n // --- Detection path 3: OneTrustGroupsUpdated event ---\n eventListener = () => {\n handleConsent();\n };\n actualWindow.addEventListener('OneTrustGroupsUpdated', eventListener);\n }\n\n return {\n type: 'cookiepro',\n config: fullConfig,\n push: elb,\n destroy: async (_context) => {\n // Remove event listener\n if (actualWindow && eventListener) {\n actualWindow.removeEventListener(\n 'OneTrustGroupsUpdated',\n eventListener,\n );\n }\n // Restore original OptanonWrapper\n if (actualWindow && wrappedOptanonWrapper) {\n actualWindow.OptanonWrapper = originalOptanonWrapper;\n }\n },\n };\n};\n\nexport default sourceCookiePro;\n"],"mappings":"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","names":["fullConsent","minimalConsent","trigger","cmp"]}
1
+ {"version":3,"sources":["../src/types/index.ts","../src/index.ts"],"sourcesContent":["import type { Source, Elb } from '@walkeros/core';\n\ndeclare module '@walkeros/core' {\n interface SourceMap {\n cookiepro: { type: 'cookiepro'; platform?: 'web' };\n }\n}\n\n/**\n * OneTrust global API interface.\n *\n * Represents the subset of the OneTrust SDK we interact with.\n * The full SDK is much larger, but we only need consent-related methods.\n */\nexport interface OneTrustAPI {\n /** Returns true if user has made an explicit consent choice */\n IsAlertBoxClosed: () => boolean;\n /** Register a callback for consent changes (callback receives event with detail: string[]) */\n OnConsentChanged?: (fn: (event: { detail: string[] }) => void) => void;\n}\n\ndeclare global {\n interface Window {\n /** OneTrust SDK global object */\n OneTrust?: OneTrustAPI;\n /** Comma-separated string of active consent category IDs (e.g. \",C0001,C0003,\") */\n OptanonActiveGroups?: string;\n /** OneTrust callback function, called on SDK load and consent changes */\n OptanonWrapper?: () => void;\n /** CookiePro legacy alias for OneTrust */\n Optanon?: unknown;\n [key: string]: OneTrustAPI | unknown;\n }\n\n interface WindowEventMap {\n /** event.detail is an array of active group ID strings (e.g. [\"C0001\", \"C0002\"]) */\n OneTrustGroupsUpdated: CustomEvent<string[]>;\n }\n}\n\n/**\n * Settings for CookiePro/OneTrust source\n */\nexport interface Settings {\n /**\n * Map CookiePro category IDs to walkerOS consent groups.\n * Keys: CookiePro category IDs (e.g. 'C0001', 'C0002')\n * Values: walkerOS consent group names\n *\n * Comparison is case-insensitive (keys are normalized to lowercase during init).\n *\n * Default provides sensible mapping for standard OneTrust categories:\n * - C0001 (Strictly Necessary) -> functional\n * - C0002 (Performance) -> analytics\n * - C0003 (Functional) -> functional\n * - C0004 (Targeting) -> marketing\n * - C0005 (Social Media) -> marketing\n */\n categoryMap?: Record<string, string>;\n\n /**\n * Only process explicit consent (user made a choice).\n * When true: Checks OneTrust.IsAlertBoxClosed() -- only processes\n * consent if user has actively interacted with the banner.\n * When false: Processes any consent state including defaults.\n *\n * Default: true\n */\n explicitOnly?: boolean;\n\n /**\n * Custom name for window.OneTrust object.\n * Some implementations use a different global name.\n *\n * Default: 'OneTrust'\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 CookiePro source\n */\nexport interface Env extends Source.BaseEnv {\n window?: Window & typeof globalThis;\n}\n\n/**\n * Types bundle for CookiePro 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 { Source, WalkerOS } from '@walkeros/core';\nimport type { Types, Settings, OneTrustAPI } from './types';\n\n// Export types for external usage\nexport * as SourceCookiePro from './types';\n\n/**\n * Default category mapping from CookiePro/OneTrust to walkerOS consent groups.\n *\n * Keys use OneTrust's standard uppercase IDs (as shown in CookiePro dashboard).\n * Lookups are case-insensitive (normalized during init).\n *\n * Maps OneTrust's standard category IDs to walkerOS convention:\n * - C0001 (Strictly Necessary) -> functional\n * - C0002 (Performance) -> analytics\n * - C0003 (Functional) -> functional\n * - C0004 (Targeting) -> marketing\n * - C0005 (Social Media) -> marketing\n */\nexport const DEFAULT_CATEGORY_MAP: Record<string, string> = {\n C0001: 'functional',\n C0002: 'analytics',\n C0003: 'functional',\n C0004: 'marketing',\n C0005: 'marketing',\n};\n\n/**\n * CookiePro/OneTrust consent management source for walkerOS.\n *\n * This source listens to CookiePro/OneTrust CMP events and translates\n * consent states to walkerOS consent commands.\n *\n * Three detection paths:\n * 1. Already loaded: window.OneTrust + window.OptanonActiveGroups\n * 2. Init: Wraps OptanonWrapper (preserves existing)\n * 3. Change: OneTrustGroupsUpdated window event\n *\n * @example\n * ```typescript\n * import { sourceCookiePro } from '@walkeros/web-source-cmp-cookiepro';\n *\n * await startFlow({\n * sources: {\n * consent: {\n * code: sourceCookiePro,\n * config: {\n * settings: {\n * categoryMap: {\n * C0002: 'statistics', // Custom mapping\n * },\n * },\n * },\n * },\n * },\n * });\n * ```\n */\nexport const sourceCookiePro: 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 (user overrides win)\n const mergedCategoryMap = {\n ...DEFAULT_CATEGORY_MAP,\n ...(config?.settings?.categoryMap ?? {}),\n };\n\n // Build normalized (lowercase) lookup map for case-insensitive matching\n const normalizedMap: Record<string, string> = {};\n Object.entries(mergedCategoryMap).forEach(([key, value]) => {\n normalizedMap[key.toLowerCase()] = value;\n });\n\n const settings: Settings = {\n categoryMap: mergedCategoryMap, // Preserves original casing for config\n explicitOnly: config?.settings?.explicitOnly ?? true,\n globalName: config?.settings?.globalName ?? 'OneTrust',\n };\n\n const fullConfig: Source.Config<Types> = { settings };\n\n // Track references for cleanup\n let eventListener: (() => void) | undefined;\n let originalOptanonWrapper: (() => void) | undefined;\n let wrappedOptanonWrapper = false;\n\n // Attach the CMP listeners / OptanonWrapper and perform the static consent\n // read. Deferred to init() (Pass 2 of initSources) so the factory (Pass 1)\n // stays side-effect free: no listener registration, no OptanonWrapper wrap,\n // and no `elb('walker consent')` emit during construction.\n const init = async (): Promise<void> => {\n if (!actualWindow) return;\n const globalName = settings.globalName ?? 'OneTrust';\n\n /**\n * Collect all unique walkerOS group names from the normalizedMap.\n * Used to set explicit false for absent groups.\n */\n const allMappedGroups = new Set(Object.values(normalizedMap));\n\n /**\n * Parse OptanonActiveGroups string into walkerOS consent state.\n *\n * OptanonActiveGroups format: \",C0001,C0003,\" (comma-separated, leading/trailing commas)\n * Only active groups are listed. Absence means denied.\n * Uses case-insensitive comparison for category IDs via normalizedMap.\n * Only mapped categories produce consent entries (unmapped IDs are ignored).\n * Sets explicit false for all mapped groups not in the active list.\n */\n const parseActiveGroups = (activeGroups: string): WalkerOS.Consent => {\n const state: WalkerOS.Consent = {};\n\n // Initialize all mapped groups to false\n allMappedGroups.forEach((group) => {\n state[group] = false;\n });\n\n // Set active groups to true (case-insensitive via normalizedMap)\n activeGroups\n .split(',')\n .filter((id) => id.length > 0)\n .forEach((id) => {\n const mapped = normalizedMap[id.toLowerCase()];\n if (mapped) {\n state[mapped] = true;\n }\n });\n\n return state;\n };\n\n /**\n * Handle consent by reading current OptanonActiveGroups from window.\n * Checks explicitOnly against IsAlertBoxClosed when available.\n */\n const handleConsent = () => {\n const activeGroups = actualWindow.OptanonActiveGroups;\n if (activeGroups === undefined || activeGroups === null) return;\n\n // Check explicit consent if required\n if (settings.explicitOnly) {\n const cmp = actualWindow[globalName] as OneTrustAPI | undefined;\n if (cmp?.IsAlertBoxClosed && !cmp.IsAlertBoxClosed()) return;\n }\n\n const state = parseActiveGroups(activeGroups);\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 // --- Detection path 1: Already loaded ---\n const cmp = actualWindow[globalName] as OneTrustAPI | undefined;\n if (cmp && actualWindow.OptanonActiveGroups !== undefined) {\n handleConsent();\n }\n\n // --- Detection path 2: OptanonWrapper ---\n // Only wrap if SDK is not yet loaded (no already-loaded path).\n // Self-unwraps after first call -- the event listener handles all\n // subsequent changes, avoiding double-firing.\n if (!cmp) {\n originalOptanonWrapper = actualWindow.OptanonWrapper;\n wrappedOptanonWrapper = true;\n\n actualWindow.OptanonWrapper = () => {\n // Call original wrapper if it existed\n if (originalOptanonWrapper) originalOptanonWrapper();\n handleConsent();\n // Self-unwrap: restore original after first call (SDK init).\n // The OneTrustGroupsUpdated listener handles all future changes.\n actualWindow.OptanonWrapper = originalOptanonWrapper;\n wrappedOptanonWrapper = false;\n };\n }\n\n // --- Detection path 3: OneTrustGroupsUpdated event ---\n eventListener = () => {\n handleConsent();\n };\n actualWindow.addEventListener('OneTrustGroupsUpdated', eventListener);\n };\n\n return {\n type: 'cookiepro',\n config: fullConfig,\n push: elb,\n init,\n destroy: async (_context) => {\n // Remove event listener\n if (actualWindow && eventListener) {\n actualWindow.removeEventListener(\n 'OneTrustGroupsUpdated',\n eventListener,\n );\n }\n // Restore original OptanonWrapper\n if (actualWindow && wrappedOptanonWrapper) {\n actualWindow.OptanonWrapper = originalOptanonWrapper;\n }\n },\n };\n};\n\nexport default sourceCookiePro;\n"],"mappings":"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","names":["_a","cmp"]}
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$meta": {
3
3
  "package": "@walkeros/web-source-cmp-cookiepro",
4
- "version": "4.1.3-next-1780071196115",
4
+ "version": "4.2.0-next-1780420352914",
5
5
  "type": "source",
6
6
  "platform": [
7
7
  "web"
@@ -35,7 +35,6 @@
35
35
  }
36
36
  },
37
37
  "additionalProperties": false,
38
- "id": "CookieProSettings",
39
38
  "title": "Settings",
40
39
  "description": "Settings for the CookiePro / OneTrust CMP source."
41
40
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@walkeros/web-source-cmp-cookiepro",
3
3
  "description": "CookiePro/OneTrust consent management source for walkerOS",
4
- "version": "4.1.3-next-1780071196115",
4
+ "version": "4.2.0-next-1780420352914",
5
5
  "license": "MIT",
6
6
  "walkerOS": {
7
7
  "type": "source",
@@ -46,8 +46,8 @@
46
46
  "update": "npx npm-check-updates -u && npm update"
47
47
  },
48
48
  "dependencies": {
49
- "@walkeros/core": "4.1.3-next-1780071196115",
50
- "@walkeros/collector": "4.1.3-next-1780071196115"
49
+ "@walkeros/core": "4.2.0-next-1780420352914",
50
+ "@walkeros/collector": "4.2.0-next-1780420352914"
51
51
  },
52
52
  "devDependencies": {},
53
53
  "repository": {