@jitsu/js 1.11.0-beta.1 → 1.11.0-beta.10
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/LICENSE +21 -0
- package/dist/analytics-plugin.d.ts +29 -0
- package/dist/browser.d.ts +10 -0
- package/dist/destination-plugins/ga4.d.ts +8 -0
- package/dist/destination-plugins/gtm.d.ts +6 -0
- package/dist/destination-plugins/index.d.ts +15 -0
- package/dist/destination-plugins/logrocket.d.ts +6 -0
- package/dist/destination-plugins/no-destination-plugins.d.ts +8 -0
- package/dist/destination-plugins/tag.d.ts +5 -0
- package/dist/index.d.ts +6 -0
- package/dist/jitsu-no-ext.cjs.js +3440 -1555
- package/dist/jitsu-no-ext.es.js +3087 -1525
- package/dist/jitsu.cjs.js +3405 -1928
- package/dist/jitsu.es.js +3053 -1899
- package/dist/method-queue.d.ts +9 -0
- package/dist/script-loader.d.ts +8 -0
- package/dist/tlds.d.ts +3 -0
- package/dist/version.d.ts +3 -0
- package/dist/web/p.js.txt +8 -2270
- package/package.json +29 -36
- package/dist/jitsu-no-ext.cjs.d.ts +0 -38
- package/dist/jitsu-no-ext.es.d.ts +0 -38
- package/dist/jitsu.d.ts +0 -38
package/dist/web/p.js.txt
CHANGED
|
@@ -1,2270 +1,8 @@
|
|
|
1
|
-
(function () {
|
|
2
|
-
'use strict';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
var l="global",o=j$1+"global"+j$1,n=typeof self===o$1&&self.self===self&&self||typeof global===o$1&&global.global===global&&global||void 0;function a$2(t){return n[o][t]}function f(t,e){return n[o][t]=e}function i$2(t){delete n[o][t];}function u$1(t,e,r){var l;try{if(b$2(t)){var o=window[t];l=o[e].bind(o);}}catch(t){}return l||r}n[o]||(n[o]={});var c$1={};function b$2(t){if(typeof c$1[t]!==e)return c$1[t];try{var e$1=window[t];e$1.setItem(e,e),e$1.removeItem(e);}catch(e){return c$1[t]=!1}return c$1[t]=!0}
|
|
11
|
-
|
|
12
|
-
function g$1(){return g$1=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r]);}return e},g$1.apply(this,arguments)}var h$1="function",v="undefined",y="@@redux/"+Math.random().toString(36),b$1=/* #__PURE__ */function(){return typeof Symbol===h$1&&Symbol.observable||"@@observable"}(),I$1=" != "+h$1;function w(e,t,n){var r;if(typeof t===h$1&&typeof n===v&&(n=t,t=void 0),typeof n!==v){if(typeof n!==h$1)throw new Error("enhancer"+I$1);return n(w)(e,t)}if(typeof e!==h$1)throw new Error("reducer"+I$1);var i=e,a=t,o=[],u=o,s=!1;function l(){u===o&&(u=o.slice());}function f(){return a}function d(e){if(typeof e!==h$1)throw new Error("Listener"+I$1);var t=!0;return l(),u.push(e),function(){if(t){t=!1,l();var n=u.indexOf(e);u.splice(n,1);}}}function p(e){if(!on(e))throw new Error("Act != obj");if(typeof e.type===v)throw new Error("ActType "+v);if(s)throw new Error("Dispatch in reducer");try{s=!0,a=i(a,e);}finally{s=!1;}for(var t=o=u,n=0;n<t.length;n++)(0, t[n])();return e}return p({type:"@@redux/INIT"}),(r={dispatch:p,subscribe:d,getState:f,replaceReducer:function(e){if(typeof e!==h$1)throw new Error("next reducer"+I$1);i=e,p({type:"@@redux/INIT"});}})[b$1]=function(){var e,t=d;return (e={subscribe:function(e){if("object"!=typeof e)throw new TypeError("Observer != obj");function n(){e.next&&e.next(f());}return n(),{unsubscribe:t(n)}}})[b$1]=function(){return this},e},r}function E$1(e,t){var n=t&&t.type;return "action "+(n&&n.toString()||"?")+"reducer "+e+" returns "+v}function P(){var e=[].slice.call(arguments);return 0===e.length?function(e){return e}:1===e.length?e[0]:e.reduce(function(e,t){return function(){return e(t.apply(void 0,[].slice.call(arguments)))}})}function S(){var e=arguments;return function(t){return function(n,r,i){var a,o=t(n,r,i),u=o.dispatch,c={getState:o.getState,dispatch:function(e){return u(e)}};return a=[].slice.call(e).map(function(e){return e(c)}),g$1({},o,{dispatch:u=P.apply(void 0,a)(o.dispatch)})}}}var N$1=j$1+"anon_id",A$1=j$1+"user_id",_=j$1+"user_traits",j="userId",k$1="anonymousId",x$1=["bootstrap","params","campaign","initializeStart","initialize","initializeEnd","ready","resetStart","reset","resetEnd","pageStart","page","pageEnd","pageAborted","trackStart","track","trackEnd","trackAborted","identifyStart","identify","identifyEnd","identifyAborted","userIdChanged","registerPlugins","enablePlugin","disablePlugin","online","offline","setItemStart","setItem","setItemEnd","setItemAborted","removeItemStart","removeItem","removeItemEnd","removeItemAborted"],T=["name","EVENTS","config","loaded"],z=x$1.reduce(function(e,t){return e[t]=t,e},{registerPluginType:function(e){return "registerPlugin:"+e},pluginReadyType:function(e){return "ready:"+e}}),M=/^utm_/,q=/^an_prop_/,V=/^an_trait_/;function C$1(e){var t=e.storage.setItem;return function(n){return function(r){return function(i){if(i.type===z.bootstrap){var a=i.params,o=i.user,u=i.persistedUser,c=i.initialUser,s=u.userId===o.userId;u.anonymousId!==o.anonymousId&&t(N$1,o.anonymousId),s||t(A$1,o.userId),c.traits&&t(_,g$1({},s&&u.traits?u.traits:{},c.traits));var l=Object.keys(i.params);if(l.length){var f=a.an_uid,d=a.an_event,p=l.reduce(function(e,t){if(t.match(M)||t.match(/^(d|g)clid/)){var n=t.replace(M,"");e.campaign["campaign"===n?"name":n]=a[t];}return t.match(q)&&(e.props[t.replace(q,"")]=a[t]),t.match(V)&&(e.traits[t.replace(V,"")]=a[t]),e},{campaign:{},props:{},traits:{}});n.dispatch(g$1({type:z.params,raw:a},p,f?{userId:f}:{})),f&&setTimeout(function(){return e.identify(f,p.traits)},0),d&&setTimeout(function(){return e.track(d,p.props)},0),Object.keys(p.campaign).length&&n.dispatch({type:z.campaign,campaign:p.campaign});}}return r(i)}}}}function U(e){return function(t,n){if(void 0===t&&(t={}),void 0===n&&(n={}),n.type===z.setItemEnd){if(n.key===N$1)return g$1({},t,{anonymousId:n.value});if(n.key===A$1)return g$1({},t,{userId:n.value})}switch(n.type){case z.identify:return Object.assign({},t,{userId:n.userId,traits:g$1({},t.traits,n.traits)});case z.reset:return [A$1,N$1,_].forEach(function(t){e.removeItem(t);}),Object.assign({},t,{userId:null,anonymousId:null,traits:{}});default:return t}}}function R(e){return {userId:e.getItem(A$1),anonymousId:e.getItem(N$1),traits:e.getItem(_)}}var $=function(e){return j$1+"TEMP"+j$1+e};function D(t){var n=t.storage,r=n.setItem,a=n.removeItem,o=n.getItem;return function(t){return function(n){return function(u){var c=u.userId,s=u.traits,l=u.options;if(u.type===z.reset&&([A$1,_,N$1].forEach(function(e){a(e);}),[j,k$1,"traits"].forEach(function(e){i$2($(e));})),u.type===z.identify){o(N$1)||r(N$1,y$1());var f=o(A$1),d=o(_)||{};f&&f!==c&&t.dispatch({type:z.userIdChanged,old:{userId:f,traits:d},new:{userId:c,traits:s},options:l}),c&&r(A$1,c),s&&r(_,g$1({},d,s));}return n(u)}}}}var B={};function L$1(e,t){B[e]&&W$1(B[e])&&(B[e](t),delete B[e]);}function J$1(e,t,n){return new Promise(function(r,i){return t()?r(e):n<1?i(g$1({},e,{queue:!0})):new Promise(function(e){return setTimeout(e,10)}).then(function(a){return J$1(e,t,n-10).then(r,i)})})}function X(e){return {abort:e}}var H=function(e){var t=e.data,n=e.action,r=e.instance,i=e.state,a=e.allPlugins,o=e.allMatches,u=e.store,s=e.EVENTS;try{var f=i.plugins,d=i.context,p=n.type,m=p.match(W),h=t.exact.map(function(e){return e.pluginName});m&&(h=o.during.map(function(e){return e.pluginName}));var v=function(e,t){return function(n,r,i){var a=r.config,o=r.name,u=o+"."+n.type;i&&(u=i.event);var c=n.type.match(W)?function(e,t,n,r,i){return function(a,o){var u=r?r.name:e,c=o&&ne(o)?o:n;if(r&&(!(c=o&&ne(o)?o:[e]).includes(e)||1!==c.length))throw new Error("Method "+t+" can only abort "+e+" plugin. "+JSON.stringify(c)+" input valid");return g$1({},i,{abort:{reason:a,plugins:c,caller:t,_:u}})}}(o,u,t,i,n):function(e,t){return function(){throw new Error(e.type+" action not cancellable. Remove abort in "+t)}}(n,u);return {payload:ae(n),instance:e,config:a||{},abort:c}}}(r,h),y=t.exact.reduce(function(e,t){var n=t.pluginName,r=t.methodName,i=!1;return r.match(/^initialize/)||r.match(/^reset/)||(i=!f[n].loaded),d.offline&&r.match(/^(page|track|identify)/)&&(i=!0),e[""+n]=i,e},{});return Promise.resolve(t.exact.reduce(function(e,i,o){try{var u=i.pluginName;return Promise.resolve(e).then(function(e){function i(){return Promise.resolve(e)}var o=function(){if(t.namespaced&&t.namespaced[u])return Promise.resolve(t.namespaced[u].reduce(function(e,t,n){try{return Promise.resolve(e).then(function(e){return t.method&&W$1(t.method)?(function(e,t){var n=ie(e);if(n&&n.name===t){var r=ie(n.method);throw new Error([t+" plugin is calling method "+e,"Plugins cant call self","Use "+n.method+" "+(r?"or "+r.method:"")+" in "+t+" plugin insteadof "+e].join("\n"))}}(t.methodName,t.pluginName),Promise.resolve(t.method({payload:e,instance:r,abort:(n=e,i=u,o=t.pluginName,function(e,t){return g$1({},n,{abort:{reason:e,plugins:t||[i],caller:p,from:o||i}})}),config:Q(t.pluginName,f,a),plugins:f})).then(function(t){var n=on(t)?t:{};return Promise.resolve(g$1({},e,n))})):e;var n,i,o;})}catch(e){return Promise.reject(e)}},Promise.resolve(n))).then(function(t){e[u]=t;});e[u]=n;}();return o&&o.then?o.then(i):i()})}catch(e){return Promise.reject(e)}},Promise.resolve({}))).then(function(e){return Promise.resolve(t.exact.reduce(function(n,i,o){try{var s=t.exact.length===o+1,l=i.pluginName,d=a[l];return Promise.resolve(n).then(function(t){var n=e[l]?e[l]:{};if(m&&(n=t),ee(n,l))return K({data:n,method:p,instance:r,pluginName:l,store:u}),Promise.resolve(t);if(ee(t,l))return s&&K({data:t,method:p,instance:r,store:u}),Promise.resolve(t);if(y.hasOwnProperty(l)&&!0===y[l])return u.dispatch({type:"queue",plugin:l,payload:n,_:{called:"queue",from:"queueMechanism"}}),Promise.resolve(t);var i=v(e[l],a[l]);return Promise.resolve(d[p]({abort:i.abort,payload:n,instance:r,config:Q(l,f,a),plugins:f})).then(function(i){var a=on(i)?i:{},o=g$1({},t,a),s=e[l];if(ee(s,l))K({data:s,method:p,instance:r,pluginName:l,store:u});else {var f=p+":"+l;(f.match(/:/g)||[]).length<2&&!p.match(F$1)&&!p.match(G$1)&&r.dispatch(g$1({},m?o:n,{type:f,_:{called:f,from:"submethod"}}));}return Promise.resolve(o)})})}catch(e){return Promise.reject(e)}},Promise.resolve(n))).then(function(e){if(!(p.match(W)||p.match(/^registerPlugin/)||p.match(G$1)||p.match(F$1)||p.match(/^params/)||p.match(/^userIdChanged/))){if(s.plugins.includes(p),e._&&e._.originalAction===p)return e;var n=g$1({},e,{_:{originalAction:e.type,called:e.type,from:"engineEnd"}});te(e,t.exact.length)&&!p.match(/End$/)&&(n=g$1({},n,{type:e.type+"Aborted"})),u.dispatch(n);}return e})})}catch(e){return Promise.reject(e)}},W=/Start$/,F$1=/^bootstrap/,G$1=/^ready/;function K(e){var t=e.pluginName,n=e.method+"Aborted"+(t?":"+t:"");e.store.dispatch(g$1({},e.data,{type:n,_:{called:n,from:"abort"}}));}function Q(e,t,n){var r=t[e]||n[e];return r&&r.config?r.config:{}}function Y(e,t){return t.reduce(function(t,n){return n[e]?t.concat({methodName:e,pluginName:n.name,method:n[e]}):t},[])}function Z(e,t){var n=e.replace(W,""),r=t?":"+t:"";return [""+e+r,""+n+r,n+"End"+r]}function ee(e,t){var n=e.abort;return !!n&&(!0===n||re(n,t)||n&&re(n.plugins,t))}function te(e,t){var n=e.abort;if(!n)return !1;if(!0===n||q$1(n))return !0;var r=n.plugins;return ne(n)&&n.length===t||ne(r)&&r.length===t}function ne(e){return Array.isArray(e)}function re(e,t){return !(!e||!ne(e))&&e.includes(t)}function ie(e){var t=e.match(/(.*):(.*)/);return !!t&&{method:t[1],name:t[2]}}function ae(e){return Object.keys(e).reduce(function(t,n){return "type"===n||(t[n]=on(e[n])?Object.assign({},e[n]):e[n]),t},{})}function oe(e,t,n){var r={};return function(i){return function(a){return function(o){try{var u,s=function(e){return u?e:a(m)},d=o.type,p=o.plugins,m=o;if(o.abort)return Promise.resolve(a(o));if(d===z.enablePlugin&&i.dispatch({type:z.initializeStart,plugins:p,disabled:[],fromEnable:!0,meta:o.meta}),d===z.disablePlugin&&setTimeout(function(){return L$1(o.meta.rid,{payload:o})},0),d===z.initializeEnd){var h=t(),v=Object.keys(h),y=v.filter(function(e){return p.includes(e)}).map(function(e){return h[e]}),b=[],I=[],w=o.disabled,E=y.map(function(e){var t=e.loaded,n=e.name,a=e.config;return J$1(e,function(){return t({config:a})},1e4).then(function(t){return r[n]||(i.dispatch({type:z.pluginReadyType(n),name:n,events:Object.keys(e).filter(function(e){return !T.includes(e)})}),r[n]=!0),b=b.concat(n),e}).catch(function(e){if(e instanceof Error)throw new Error(e);return I=I.concat(e.name),e})});Promise.all(E).then(function(e){var t={plugins:b,failed:I,disabled:w};setTimeout(function(){v.length===E.length+w.length&&i.dispatch(g$1({},{type:z.ready},t));},0);});}var P=function(){if(d!==z.bootstrap)return /^ready:([^:]*)$/.test(d)&&setTimeout(function(){return function(e,t,n){var r={},i=t(),a=e.getState(),o=a.plugins,u=a.queue,s=a.user;if(!a.context.offline&&u&&u.actions&&u.actions.length){var f=u.actions.reduce(function(e,t,n){return o[t.plugin].loaded?(e.process.push(t),e.processIndex.push(n)):(e.requeue.push(t),e.requeueIndex.push(n)),e},{processIndex:[],process:[],requeue:[],requeueIndex:[]});if(f.processIndex&&f.processIndex.length){f.processIndex.forEach(function(t){var a=u.actions[t],f=a.plugin,d=a.payload.type,p=i[f][d];if(p&&W$1(p)){var m,h=function(e,t){return void 0===e&&(e={}),void 0===t&&(t={}),[j,k$1].reduce(function(n,r){return e.hasOwnProperty(r)&&t[r]&&t[r]!==e[r]&&(n[r]=t[r]),n},e)}(a.payload,s),v=r[h.meta.rid];if(!v&&(m=p({payload:h,config:o[f].config,instance:n,abort:X}))&&on(m)&&m.abort)return void(r[h.meta.rid]=!0);if(!v){var y=d+":"+f;e.dispatch(g$1({},h,{type:y,_:{called:y,from:"queueDrain"}}));}}});var d=u.actions.filter(function(e,t){return !~f.processIndex.indexOf(t)});u.actions=d;}}}(i,t,e)},0),Promise.resolve(function(e,t,n,r,i){try{var a=W$1(t)?t():t,o=e.type,u=o.replace(W,"");if(e._&&e._.called)return Promise.resolve(e);var c=n.getState(),s=(m=a,void 0===(h=c.plugins)&&(h={}),void 0===(v=e.options)&&(v={}),Object.keys(m).filter(function(e){var t=v.plugins||{};return Q$1(t[e])?t[e]:!1!==t.all&&(!h[e]||!1!==h[e].enabled)}).map(function(e){return m[e]}));o===z.initializeStart&&e.fromEnable&&(s=Object.keys(c.plugins).filter(function(t){var n=c.plugins[t];return e.plugins.includes(t)&&!n.initialized}).map(function(e){return a[e]}));var d=s.map(function(e){return e.name}),p=function(e,t,n){var r=Z(e).map(function(e){return Y(e,t)});return t.reduce(function(n,r){var i=r.name,a=Z(e,i).map(function(e){return Y(e,t)}),o=a[0],u=a[1],c=a[2];return o.length&&(n.beforeNS[i]=o),u.length&&(n.duringNS[i]=u),c.length&&(n.afterNS[i]=c),n},{before:r[0],beforeNS:{},during:r[1],duringNS:{},after:r[2],afterNS:{}})}(o,s);return Promise.resolve(H({action:e,data:{exact:p.before,namespaced:p.beforeNS},state:c,allPlugins:a,allMatches:p,instance:n,store:r,EVENTS:i})).then(function(e){function t(){var t=function(){if(o.match(W))return Promise.resolve(H({action:g$1({},s,{type:u+"End"}),data:{exact:p.after,namespaced:p.afterNS},state:c,allPlugins:a,allMatches:p,instance:n,store:r,EVENTS:i})).then(function(e){e.meta&&e.meta.hasCallback&&L$1(e.meta.rid,{payload:e});})}();return t&&t.then?t.then(function(){return e}):e}if(te(e,d.length))return e;var s,l=function(){if(o!==u)return Promise.resolve(H({action:g$1({},e,{type:u}),data:{exact:p.during,namespaced:p.duringNS},state:c,allPlugins:a,allMatches:p,instance:n,store:r,EVENTS:i})).then(function(e){s=e;});s=e;}();return l&&l.then?l.then(t):t()})}catch(e){return Promise.reject(e)}var m,h,v;}(o,t,e,i,n)).then(function(e){return u=1,a(e)})}();return Promise.resolve(P&&P.then?P.then(s):s(P))}catch(e){return Promise.reject(e)}}}}}function ue(e){return function(t){return function(t){return function(n){var r=n.type,i=n.key,a=n.value,o=n.options;if(r===z.setItem||r===z.removeItem){if(n.abort)return t(n);r===z.setItem?e.setItem(i,a,o):e.removeItem(i,o);}return t(n)}}}}var ce=function(){var e=this;this.before=[],this.after=[],this.addMiddleware=function(t,n){e[n]=e[n].concat(t);},this.removeMiddleware=function(t,n){var r=e[n].findIndex(function(e){return e===t});-1!==r&&(e[n]=[].concat(e[n].slice(0,r),e[n].slice(r+1)));},this.dynamicMiddlewares=function(t){return function(n){return function(r){return function(i){var a={getState:n.getState,dispatch:function(e){return n.dispatch(e)}},o=e[t].map(function(e){return e(a)});return P.apply(void 0,o)(r)(i)}}}};};function se(e){return function(t,n){void 0===t&&(t={});var r={};if("initialize:aborted"===n.type)return t;if(/^registerPlugin:([^:]*)$/.test(n.type)){var i=le(n.type,"registerPlugin"),a=e()[i];if(!a||!i)return t;var o=n.enabled,u=a.config;return r[i]={enabled:o,initialized:!!o&&Boolean(!a.initialize),loaded:!!o&&Boolean(a.loaded({config:u})),config:u},g$1({},t,r)}if(/^initialize:([^:]*)$/.test(n.type)){var c=le(n.type,z.initialize),s=e()[c];return s&&c?(r[c]=g$1({},t[c],{initialized:!0,loaded:Boolean(s.loaded({config:s.config}))}),g$1({},t,r)):t}if(/^ready:([^:]*)$/.test(n.type))return r[n.name]=g$1({},t[n.name],{loaded:!0}),g$1({},t,r);switch(n.type){case z.disablePlugin:return g$1({},t,fe(n.plugins,!1,t));case z.enablePlugin:return g$1({},t,fe(n.plugins,!0,t));default:return t}}}function le(e,t){return e.substring(t.length+1,e.length)}function fe(e,t,n){return e.reduce(function(e,r){return e[r]=g$1({},n[r],{enabled:t}),e},n)}function de(e){try{return JSON.parse(JSON.stringify(e))}catch(e){}return e}var pe={last:{},history:[]};function me(e,t){void 0===e&&(e=pe);var n=t.options,r=t.meta;if(t.type===z.track){var i=de(g$1({event:t.event,properties:t.properties},Object.keys(n).length&&{options:n},{meta:r}));return g$1({},e,{last:i,history:e.history.concat(i)})}return e}var ge={actions:[]};function he(e,t){void 0===e&&(e=ge);var n=t.payload;switch(t.type){case"queue":var r;return r=n&&n.type&&n.type===z.identify?[t].concat(e.actions):e.actions.concat(t),g$1({},e,{actions:r});case"dequeue":return [];default:return e}}var ve=/#.*$/;function ye(e){var t=/(http[s]?:\/\/)?([^\/\s]+\/)(.*)/g.exec(e);return "/"+(t&&t[3]?t[3].split("?")[0].replace(ve,""):"")}var be,Ie=function(e){if(void 0===e&&(e={}),!$$1)return e;var t=document,n=t.title,r=t.referrer,i=window,a=i.location,o=i.innerWidth,u=i.innerHeight,c=a.hash,s=a.search,l=function(e){var t=function(){if($$1)for(var e,t=document.getElementsByTagName("link"),n=0;e=t[n];n++)if("canonical"===e.getAttribute("rel"))return e.getAttribute("href")}();return t?t.match(/\?/)?t:t+e:window.location.href.replace(ve,"")}(s),f={title:n,url:l,path:ye(l),hash:c,search:s,width:o,height:u};return r&&""!==r&&(f.referrer=r),g$1({},f,e)},we={last:{},history:[]};function Ee(e,t){void 0===e&&(e=we);var n=t.options;if(t.type===z.page){var r=de(g$1({properties:t.properties,meta:t.meta},Object.keys(n).length&&{options:n}));return g$1({},e,{last:r,history:e.history.concat(r)})}return e}be={};var Pe={initialized:!1,sessionId:y$1(),app:null,version:null,debug:!1,offline:!!$$1&&!navigator.onLine,os:{name:"na"},userAgent:$$1?navigator.userAgent:"node",library:{name:"analytics",version:"0.12.14"},timezone:void 0,locale:void 0,campaign:{},referrer:be};function Se(e,t){void 0===e&&(e=Pe);var n=e.initialized,r=t.campaign;switch(t.type){case z.campaign:return g$1({},e,{campaign:r});case z.offline:return g$1({},e,{offline:!0});case z.online:return g$1({},e,{offline:!1});default:return n?e:g$1({},Pe,e,{initialized:!0})}}var Ne=["plugins","reducers","storage"];function Ae(){return f("analytics",[]),function(e){return function(t,n$1,r){var i=e(t,n$1,r),a=i.dispatch;return Object.assign(i,{dispatch:function(e){return n[o].analytics.push(e.action||e),a(e)}})}}}function _e(e){return function(){return P(P.apply(null,arguments),Ae())}}function Oe(e){return e?rn(e)?e:[e]:[]}function je(t,n,r){void 0===t&&(t={});var i,a,o=y$1();return n&&(B[o]=(i=n,a=function(e){for(var t,n=e||Array.prototype.slice.call(arguments),r=0;r<n.length;r++)if(W$1(n[r])){t=n[r];break}return t}(r),function(e){a&&a(e),i(e);})),g$1({},t,{rid:o,ts:(new Date).getTime()},n?{hasCallback:!0}:{})}function ke(o){void 0===o&&(o={});var u=o.reducers||{},s$1=o.initialUser||{},f$1=(o.plugins||[]).reduce(function(e,t){if(W$1(t))return e.middlewares=e.middlewares.concat(t),e;if(t.NAMESPACE&&(t.name=t.NAMESPACE),!t.name)throw new Error("https://lytics.dev/errors/1");t.config||(t.config={});var n=t.EVENTS?Object.keys(t.EVENTS).map(function(e){return t.EVENTS[e]}):[];e.pluginEnabled[t.name]=!(!1===t.enabled||!1===t.config.enabled),delete t.enabled,t.methods&&(e.methods[t.name]=Object.keys(t.methods).reduce(function(e,n){var r;return e[n]=(r=t.methods[n],function(){for(var e=Array.prototype.slice.call(arguments),t=new Array(r.length),n=0;n<e.length;n++)t[n]=e[n];return t[t.length]=K,r.apply({instance:K},t)}),e},{}),delete t.methods);var r=Object.keys(t).concat(n),i=new Set(e.events.concat(r));if(e.events=Array.from(i),e.pluginsArray=e.pluginsArray.concat(t),e.plugins[t.name])throw new Error(t.name+"AlreadyLoaded");return e.plugins[t.name]=t,e.plugins[t.name].loaded||(e.plugins[t.name].loaded=function(){return !0}),e},{plugins:{},pluginEnabled:{},methods:{},pluginsArray:[],middlewares:[],events:[]}),m=o.storage?o.storage:{getItem:a$2,setItem:f,removeItem:i$2},b=function(e){return function(t,n,i){return n.getState("user")[t]||(i&&on(i)&&i[t]?i[t]:R(e)[t]||a$2($(t))||null)}}(m),I=f$1.plugins,A=f$1.events.filter(function(e){return !T.includes(e)}).sort(),_=new Set(A.concat(x$1).filter(function(e){return !T.includes(e)})),O=Array.from(_).sort(),M=function(){return I},q=new ce,V=q.addMiddleware,B=q.removeMiddleware,L=q.dynamicMiddlewares,J=function(){throw new Error("Abort disabled inListener")},X=s(),H=R(m),W=g$1({},H,s$1,X.an_uid?{userId:X.an_uid}:{},X.an_aid?{anonymousId:X.an_aid}:{});W.anonymousId||(W.anonymousId=y$1());var F=g$1({enable:function(e,t){return new Promise(function(n){le.dispatch({type:z.enablePlugin,plugins:Oe(e),_:{originalAction:z.enablePlugin}},n,[t]);})},disable:function(e,t){return new Promise(function(n){le.dispatch({type:z.disablePlugin,plugins:Oe(e),_:{originalAction:z.disablePlugin}},n,[t]);})}},f$1.methods),G=!1,K={identify:function(e,t,n,r){try{var i=q$1(e)?e:null,o=on(e)?e:t,u=n||{},s=K.user();f($(j),i);var l=i||o.userId||b(j,K,o);return Promise.resolve(new Promise(function(e){le.dispatch(g$1({type:z.identifyStart,userId:l,traits:o||{},options:u,anonymousId:s.anonymousId},s.id&&s.id!==i&&{previousId:s.id}),e,[t,n,r]);}))}catch(e){return Promise.reject(e)}},track:function(e,t,n,r){try{var i=on(e)?e.event:e;if(!i||!q$1(i))throw new Error("EventMissing");var a=on(e)?e:t||{},o=on(n)?n:{};return Promise.resolve(new Promise(function(e){le.dispatch({type:z.trackStart,event:i,properties:a,options:o,userId:b(j,K,t),anonymousId:b(k$1,K,t)},e,[t,n,r]);}))}catch(e){return Promise.reject(e)}},page:function(e,t,n){try{var r=on(e)?e:{},i=on(t)?t:{};return Promise.resolve(new Promise(function(a){le.dispatch({type:z.pageStart,properties:Ie(r),options:i,userId:b(j,K,r),anonymousId:b(k$1,K,r)},a,[e,t,n]);}))}catch(e){return Promise.reject(e)}},user:function(e){if(e===j||"id"===e)return b(j,K);if(e===k$1||"anonId"===e)return b(k$1,K);var t=K.getState("user");return e?n$2(t,e):t},reset:function(e){return new Promise(function(t){le.dispatch({type:z.resetStart},t,e);})},ready:function(e){return G&&e({plugins:F,instance:K}),K.on(z.ready,function(t){e(t),G=!0;})},on:function(e,t){if(!e||!W$1(t))return !1;if(e===z.bootstrap)throw new Error(".on disabled for "+e);var n=/Start$|Start:/;if("*"===e){var r=function(e){return function(e){return function(r){return r.type.match(n)&&t({payload:r,instance:K,plugins:I}),e(r)}}},i=function(e){return function(e){return function(r){return r.type.match(n)||t({payload:r,instance:K,plugins:I}),e(r)}}};return V(r,xe),V(i,Te),function(){B(r,xe),B(i,Te);}}var a=e.match(n)?xe:Te,o=function(n){return function(n){return function(r){return r.type===e&&t({payload:r,instance:K,plugins:I,abort:J}),n(r)}}};return V(o,a),function(){return B(o,a)}},once:function(e,t){if(!e||!W$1(t))return !1;if(e===z.bootstrap)throw new Error(".once disabled for "+e);var n=K.on(e,function(e){t({payload:e.payload,instance:K,plugins:I,abort:J}),n();});return n},getState:function(e){var t=le.getState();return e?n$2(t,e):Object.assign({},t)},dispatch:function(e){var t=q$1(e)?{type:e}:e;if(x$1.includes(t.type))throw new Error("reserved action "+t.type);var n=g$1({},t,{_:g$1({originalAction:t.type},e._||{})});le.dispatch(n);},enablePlugin:F.enable,disablePlugin:F.disable,plugins:F,storage:{getItem:m.getItem,setItem:function(e,t,n){le.dispatch({type:z.setItemStart,key:e,value:t,options:n});},removeItem:function(e,t){le.dispatch({type:z.removeItemStart,key:e,options:t});}},setAnonymousId:function(e,t){K.storage.setItem(N$1,e,t);},events:{core:x$1,plugins:A}},Q=f$1.middlewares.concat([function(e){return function(e){return function(t){return t.meta||(t.meta=je()),e(t)}}},L(xe),oe(K,M,{all:O,plugins:A}),ue(m),C$1(K),D(K),L(Te)]),Y={context:Se,user:U(m),page:Ee,track:me,plugins:se(M),queue:he},Z=P,ee=P;if($$1&&o.debug){var te=window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__;te&&(Z=te({trace:!0,traceLimit:25})),ee=function(){return 0===arguments.length?Ae():on(typeof arguments[0])?_e():_e().apply(null,arguments)};}var ne,re=function(e){return Object.keys(e).reduce(function(t,n){return Ne.includes(n)||(t[n]=e[n]),t},{})}(o),ie=f$1.pluginsArray.reduce(function(e,t){var n=t.name,r=t.config,i=t.loaded,a=f$1.pluginEnabled[n];return e[n]={enabled:a,initialized:!!a&&Boolean(!t.initialize),loaded:Boolean(i({config:r})),config:r},e},{}),ae={context:re,user:W,plugins:ie},le=w(function(e){for(var t=Object.keys(e),n={},r=0;r<t.length;r++){var i=t[r];typeof e[i]===h$1&&(n[i]=e[i]);}var a,o=Object.keys(n);try{!function(e){Object.keys(e).forEach(function(t){var n=e[t];if(typeof n(void 0,{type:"@@redux/INIT"})===v||typeof n(void 0,{type:y})===v)throw new Error("reducer "+t+" "+v)});}(n);}catch(e){a=e;}return function(e,t){if(void 0===e&&(e={}),a)throw a;for(var r=!1,i={},u=0;u<o.length;u++){var c=o[u],s=e[c],l=(0, n[c])(s,t);if(typeof l===v){var f=E$1(c,t);throw new Error(f)}i[c]=l,r=r||l!==s;}return r?i:e}}(g$1({},Y,u)),ae,ee(Z(S.apply(void 0,Q))));le.dispatch=(ne=le.dispatch,function(e,t,n){var r=g$1({},e,{meta:je(e.meta,t,Oe(n))});return ne.apply(null,[r])});var fe=Object.keys(I);le.dispatch({type:z.bootstrap,plugins:fe,config:re,params:X,user:W,initialUser:s$1,persistedUser:H});var de=fe.filter(function(e){return f$1.pluginEnabled[e]}),pe=fe.filter(function(e){return !f$1.pluginEnabled[e]});return le.dispatch({type:z.registerPlugins,plugins:fe,enabled:f$1.pluginEnabled}),f$1.pluginsArray.map(function(e,t){var n=e.bootstrap,r=e.config,i=e.name;n&&W$1(n)&&n({instance:K,config:r,payload:e}),le.dispatch({type:z.registerPluginType(i),name:i,enabled:f$1.pluginEnabled[i],plugin:e}),f$1.pluginsArray.length===t+1&&le.dispatch({type:z.initializeStart,plugins:de,disabled:pe});}),K}var xe="before",Te="after";
|
|
13
|
-
|
|
14
|
-
var t="cookie",i$1=a$1(),r$1=d$1,c=d$1;function u(o){return i$1?d$1(o,"",-1):i$2(o)}function a$1(){if(void 0!==i$1)return i$1;var e="cookiecookie";try{d$1(e,e),i$1=-1!==document.cookie.indexOf(e),u(e);}catch(e){i$1=!1;}return i$1}function d$1(e,t,r,c,u,a){if("undefined"!=typeof window){var d=arguments.length>1;return !1===i$1&&(d?f(e,t):a$2(e)),d?document.cookie=e+"="+encodeURIComponent(t)+(r?"; expires="+new Date(+new Date+1e3*r).toUTCString()+(c?"; path="+c:"")+(u?"; domain="+u:"")+(a?"; secure":""):""):decodeURIComponent((("; "+document.cookie).split("; "+e+"=")[1]||"").split(";")[0])}}
|
|
15
|
-
|
|
16
|
-
var r="localStorage",g=b$2.bind(null,"localStorage");u$1("localStorage","getItem",a$2);u$1("localStorage","setItem",f);u$1("localStorage","removeItem",i$2);
|
|
17
|
-
|
|
18
|
-
var a="sessionStorage",i=b$2.bind(null,"sessionStorage");u$1("sessionStorage","getItem",a$2);u$1("sessionStorage","setItem",f);u$1("sessionStorage","removeItem",i$2);
|
|
19
|
-
|
|
20
|
-
function I(t){var o=t;try{if("true"===(o=JSON.parse(t)))return !0;if("false"===o)return !1;if(on(o))return o;parseFloat(o)===o&&(o=parseFloat(o));}catch(t){}if(null!==o&&""!==o)return o}var k=g(),O=i(),x=a$1();function C(o,e){if(o){var r=A(e),a=!N(r),i=d(r)?I(localStorage.getItem(o)):void 0;if(a&&!I$2(i))return i;var n=h(r)?I(r$1(o)):void 0;if(a&&n)return n;var l=E(r)?I(sessionStorage.getItem(o)):void 0;if(a&&l)return l;var u=a$2(o);return a?u:{localStorage:i,sessionStorage:l,cookie:n,global:u}}}function L(r$2,a$1,l$1){if(r$2&&!I$2(a$1)){var u={},g=A(l$1),m=JSON.stringify(a$1),S=!N(g);return d(g)&&(u[r]=F(r,a$1,I(localStorage.getItem(r$2))),localStorage.setItem(r$2,m),S)?u[r]:h(g)&&(u[t]=F(t,a$1,I(r$1(r$2))),c(r$2,m),S)?u[t]:E(g)&&(u[a]=F(a,a$1,I(sessionStorage.getItem(r$2))),sessionStorage.setItem(r$2,m),S)?u[a]:(u[l]=F(l,a$1,a$2(r$2)),f(r$2,a$1),S?u[l]:u)}}function b(t$1,e){if(t$1){var a$1=A(e),s=C(t$1,m$1),n={};return !I$2(s.localStorage)&&d(a$1)&&(localStorage.removeItem(t$1),n[r]=s.localStorage),!I$2(s.cookie)&&h(a$1)&&(u(t$1),n[t]=s.cookie),!I$2(s.sessionStorage)&&E(a$1)&&(sessionStorage.removeItem(t$1),n[a]=s.sessionStorage),!I$2(s.global)&&G(a$1,l)&&(i$2(t$1),n[l]=s.global),n}}function A(t){return t?q$1(t)?t:t.storage:b$3}function d(t){return k&&G(t,r)}function h(t$1){return x&&G(t$1,t)}function E(t){return O&&G(t,a)}function N(t){return t===m$1||"all"===t}function G(t,o){return t===b$3||t===o||N(t)}function F(t,o,e){return {location:t,current:o,previous:e}}var J={setItem:L,getItem:C,removeItem:b};
|
|
21
|
-
|
|
22
|
-
function _defineProperty(obj, key, value) {
|
|
23
|
-
if (key in obj) {
|
|
24
|
-
Object.defineProperty(obj, key, {
|
|
25
|
-
value: value,
|
|
26
|
-
enumerable: true,
|
|
27
|
-
configurable: true,
|
|
28
|
-
writable: true
|
|
29
|
-
});
|
|
30
|
-
} else {
|
|
31
|
-
obj[key] = value;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
return obj;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
function ownKeys(object, enumerableOnly) {
|
|
38
|
-
var keys = Object.keys(object);
|
|
39
|
-
|
|
40
|
-
if (Object.getOwnPropertySymbols) {
|
|
41
|
-
var symbols = Object.getOwnPropertySymbols(object);
|
|
42
|
-
enumerableOnly && (symbols = symbols.filter(function (sym) {
|
|
43
|
-
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
|
|
44
|
-
})), keys.push.apply(keys, symbols);
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
return keys;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
function _objectSpread2(target) {
|
|
51
|
-
for (var i = 1; i < arguments.length; i++) {
|
|
52
|
-
var source = null != arguments[i] ? arguments[i] : {};
|
|
53
|
-
i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {
|
|
54
|
-
_defineProperty(target, key, source[key]);
|
|
55
|
-
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {
|
|
56
|
-
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
return target;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
function analyticsLib() {
|
|
64
|
-
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
65
|
-
var defaultSettings = {
|
|
66
|
-
storage: J
|
|
67
|
-
};
|
|
68
|
-
return ke(_objectSpread2(_objectSpread2({}, defaultSettings), opts));
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
function findScript(src) {
|
|
72
|
-
const scripts = Array.prototype.slice.call(window.document.querySelectorAll("script"));
|
|
73
|
-
return scripts.find(s => s.src === src);
|
|
74
|
-
}
|
|
75
|
-
function buildScriptSrc(src, options) {
|
|
76
|
-
let result = src;
|
|
77
|
-
if (!result.startsWith("http")) {
|
|
78
|
-
result = `https://${(options === null || options === void 0 ? void 0 : options.www) ? "www." : ""}${result}`;
|
|
79
|
-
}
|
|
80
|
-
if (options === null || options === void 0 ? void 0 : options.min) {
|
|
81
|
-
result = result + ".min.js";
|
|
82
|
-
}
|
|
83
|
-
else if (options === null || options === void 0 ? void 0 : options.js) {
|
|
84
|
-
result = result + ".js";
|
|
85
|
-
}
|
|
86
|
-
if (options === null || options === void 0 ? void 0 : options.query) {
|
|
87
|
-
result += "?" + options.query;
|
|
88
|
-
}
|
|
89
|
-
return result;
|
|
90
|
-
}
|
|
91
|
-
function loadScript(src, options) {
|
|
92
|
-
const found = findScript(src);
|
|
93
|
-
if (found !== undefined) {
|
|
94
|
-
const status = found === null || found === void 0 ? void 0 : found.getAttribute("status");
|
|
95
|
-
if (status === "loaded") {
|
|
96
|
-
return Promise.resolve(found);
|
|
97
|
-
}
|
|
98
|
-
if (status === "loading") {
|
|
99
|
-
return new Promise((resolve, reject) => {
|
|
100
|
-
found.addEventListener("load", () => resolve(found));
|
|
101
|
-
found.addEventListener("error", err => reject(err));
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
return new Promise((resolve, reject) => {
|
|
106
|
-
var _a, _b;
|
|
107
|
-
const script = window.document.createElement("script");
|
|
108
|
-
script.type = "text/javascript";
|
|
109
|
-
script.src = buildScriptSrc(src, options);
|
|
110
|
-
script.async = true;
|
|
111
|
-
script.setAttribute("status", "loading");
|
|
112
|
-
for (const [k, v] of Object.entries((_a = options === null || options === void 0 ? void 0 : options.attributes) !== null && _a !== void 0 ? _a : {})) {
|
|
113
|
-
script.setAttribute(k, v);
|
|
114
|
-
}
|
|
115
|
-
script.onload = () => {
|
|
116
|
-
script.onerror = script.onload = null;
|
|
117
|
-
script.setAttribute("status", "loaded");
|
|
118
|
-
resolve(script);
|
|
119
|
-
};
|
|
120
|
-
script.onerror = () => {
|
|
121
|
-
script.onerror = script.onload = null;
|
|
122
|
-
script.setAttribute("status", "error");
|
|
123
|
-
reject(new Error(`Failed to load ${src}`));
|
|
124
|
-
};
|
|
125
|
-
const tag = window.document.getElementsByTagName("script")[0];
|
|
126
|
-
(_b = tag.parentElement) === null || _b === void 0 ? void 0 : _b.insertBefore(script, tag);
|
|
127
|
-
});
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
var __awaiter$5 = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
131
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
132
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
133
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
134
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
135
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
136
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
137
|
-
});
|
|
138
|
-
};
|
|
139
|
-
const tagPlugin = {
|
|
140
|
-
id: "tag",
|
|
141
|
-
handle(config, payload) {
|
|
142
|
-
return __awaiter$5(this, void 0, void 0, function* () {
|
|
143
|
-
if (!applyFilters(payload, config)) {
|
|
144
|
-
return;
|
|
145
|
-
}
|
|
146
|
-
insertTags(config.code, payload);
|
|
147
|
-
});
|
|
148
|
-
},
|
|
149
|
-
};
|
|
150
|
-
function insertTags(code, event, opts = {}) {
|
|
151
|
-
let tag;
|
|
152
|
-
try {
|
|
153
|
-
tag = JSON.parse(code);
|
|
154
|
-
}
|
|
155
|
-
catch (e) {
|
|
156
|
-
tag = { code, lang: "javascript" };
|
|
157
|
-
}
|
|
158
|
-
const debug = opts.debug || false;
|
|
159
|
-
if (isInBrowser()) {
|
|
160
|
-
if (tag.lang === "javascript") {
|
|
161
|
-
execJs(tag.code, event);
|
|
162
|
-
}
|
|
163
|
-
else {
|
|
164
|
-
const codeHolder = document.createElement("span");
|
|
165
|
-
codeHolder.innerHTML = replaceMacro(tag.code, event);
|
|
166
|
-
document.body.insertAdjacentElement("beforeend", codeHolder);
|
|
167
|
-
const scripts = codeHolder.querySelectorAll("script");
|
|
168
|
-
scripts.forEach(script => {
|
|
169
|
-
const scriptClone = document.createElement("script");
|
|
170
|
-
scriptClone.type = scriptClone.type || "text/javascript";
|
|
171
|
-
if (script.hasAttribute("src")) {
|
|
172
|
-
scriptClone.src = script.src;
|
|
173
|
-
}
|
|
174
|
-
scriptClone.text = script.text;
|
|
175
|
-
if (debug) {
|
|
176
|
-
console.log(`[JITSU] Executing script${script.hasAttribute("src") ? ` ${script.src}` : ""}`, scriptClone.text);
|
|
177
|
-
}
|
|
178
|
-
document.head.appendChild(scriptClone);
|
|
179
|
-
document.head.removeChild(scriptClone);
|
|
180
|
-
});
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
else {
|
|
184
|
-
if (debug) {
|
|
185
|
-
console.log(`[JITSU] insertTags(): cannot insert tags in non-browser environment`);
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
let al = "al";
|
|
190
|
-
let ev = "ve".split("").reverse().join("");
|
|
191
|
-
const execF = globalThis[ev + al];
|
|
192
|
-
function execJs(code, event) {
|
|
193
|
-
const varName = `jitsu_event_${randomId()}`;
|
|
194
|
-
window[varName] = event;
|
|
195
|
-
const iif = `(function(){
|
|
196
|
-
const event = ${varName};
|
|
197
|
-
${code}
|
|
198
|
-
})()`;
|
|
199
|
-
try {
|
|
200
|
-
execF(iif);
|
|
201
|
-
}
|
|
202
|
-
catch (e) {
|
|
203
|
-
console.error(`[JITSU] Error executing JS code: ${e.message}. Code: `, iif);
|
|
204
|
-
}
|
|
205
|
-
finally {
|
|
206
|
-
delete window[varName];
|
|
207
|
-
}
|
|
208
|
-
return iif;
|
|
209
|
-
}
|
|
210
|
-
function replaceMacro(code, event) {
|
|
211
|
-
return code.replace(/{{\s*event\s*}}/g, JSON.stringify(event));
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
var __awaiter$4 = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
215
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
216
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
217
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
218
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
219
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
220
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
221
|
-
});
|
|
222
|
-
};
|
|
223
|
-
const cdn = "cdn.lr-ingest.io/";
|
|
224
|
-
const logrocketPlugin = {
|
|
225
|
-
id: "logrocket",
|
|
226
|
-
handle(config, payload) {
|
|
227
|
-
return __awaiter$4(this, void 0, void 0, function* () {
|
|
228
|
-
if (!applyFilters(payload, config)) {
|
|
229
|
-
return;
|
|
230
|
-
}
|
|
231
|
-
initLogrocketIfNeeded(config.appId);
|
|
232
|
-
const action = logRocket => {
|
|
233
|
-
if (payload.type === "identify" && payload.userId) {
|
|
234
|
-
logRocket.identify(payload.userId, payload.traits || {});
|
|
235
|
-
}
|
|
236
|
-
};
|
|
237
|
-
getLogRocketQueue().push(action);
|
|
238
|
-
if (getLogRocketState() === "loaded") {
|
|
239
|
-
flushLogRocketQueue(window["LogRocket"]);
|
|
240
|
-
}
|
|
241
|
-
});
|
|
242
|
-
},
|
|
243
|
-
};
|
|
244
|
-
function getLogRocketState() {
|
|
245
|
-
return window["__jitsuLrState"] || "fresh";
|
|
246
|
-
}
|
|
247
|
-
function setLogRocketState(s) {
|
|
248
|
-
window["__jitsuLrState"] = s;
|
|
249
|
-
}
|
|
250
|
-
function getLogRocketQueue() {
|
|
251
|
-
return window["__jitsuLrQueue"] || (window["__jitsuLrQueue"] = []);
|
|
252
|
-
}
|
|
253
|
-
function flushLogRocketQueue(lr) {
|
|
254
|
-
const queue = getLogRocketQueue();
|
|
255
|
-
while (queue.length > 0) {
|
|
256
|
-
const method = queue.shift();
|
|
257
|
-
try {
|
|
258
|
-
const res = method(lr);
|
|
259
|
-
if (res) {
|
|
260
|
-
res.catch(e => console.warn(`Async LogRocket method failed: ${e.message}`, e));
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
catch (e) {
|
|
264
|
-
console.warn(`LogRocket method failed: ${e.message}`, e);
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
}
|
|
268
|
-
function initLogrocketIfNeeded(appId) {
|
|
269
|
-
return __awaiter$4(this, void 0, void 0, function* () {
|
|
270
|
-
if (getLogRocketState() !== "fresh") {
|
|
271
|
-
return;
|
|
272
|
-
}
|
|
273
|
-
setLogRocketState("loading");
|
|
274
|
-
loadScript(`${cdn}LogRocket`, { min: true, attributes: { crossOrigin: "anonymous" } })
|
|
275
|
-
.then(() => {
|
|
276
|
-
if (window["LogRocket"]) {
|
|
277
|
-
try {
|
|
278
|
-
window["LogRocket"].init(appId);
|
|
279
|
-
}
|
|
280
|
-
catch (e) {
|
|
281
|
-
console.warn(`LogRocket (id=${appId}) init failed: ${e.message}`, e);
|
|
282
|
-
setLogRocketState("failed");
|
|
283
|
-
}
|
|
284
|
-
setLogRocketState("loaded");
|
|
285
|
-
flushLogRocketQueue(window["LogRocket"]);
|
|
286
|
-
}
|
|
287
|
-
})
|
|
288
|
-
.catch(e => {
|
|
289
|
-
console.warn(`LogRocket (id=${appId}) init failed: ${e.message}`, e);
|
|
290
|
-
setLogRocketState("failed");
|
|
291
|
-
});
|
|
292
|
-
});
|
|
293
|
-
}
|
|
294
|
-
|
|
295
|
-
var __awaiter$3 = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
296
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
297
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
298
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
299
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
300
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
301
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
302
|
-
});
|
|
303
|
-
};
|
|
304
|
-
function omit(obj, ...keys) {
|
|
305
|
-
return Object.fromEntries(Object.entries(obj).filter(([k]) => !keys.includes(k)));
|
|
306
|
-
}
|
|
307
|
-
const gtmPlugin = {
|
|
308
|
-
id: "gtm",
|
|
309
|
-
handle(config, payload) {
|
|
310
|
-
return __awaiter$3(this, void 0, void 0, function* () {
|
|
311
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
|
|
312
|
-
const debug = !!config.debug;
|
|
313
|
-
if (!applyFilters(payload, config)) {
|
|
314
|
-
return;
|
|
315
|
-
}
|
|
316
|
-
yield initGtmIfNeeded(config, payload);
|
|
317
|
-
const dataLayer = window[config.dataLayerName || "dataLayer"];
|
|
318
|
-
const traits = Object.assign(Object.assign({}, ((payload === null || payload === void 0 ? void 0 : payload.traits) || {})), (((_a = payload === null || payload === void 0 ? void 0 : payload.context) === null || _a === void 0 ? void 0 : _a.traits) || {}));
|
|
319
|
-
const idsFromTraits = omit(traits, "id", "userId", "user_id", "anonymousId", "userId");
|
|
320
|
-
if (debug) {
|
|
321
|
-
console.debug("GTM plugin will be applied to following payload", payload);
|
|
322
|
-
}
|
|
323
|
-
const userData = {
|
|
324
|
-
email_address: traits.email,
|
|
325
|
-
};
|
|
326
|
-
const ids = Object.assign(Object.assign(Object.assign(Object.assign({}, (payload.userId ? { user_id: payload.userId, userId: payload.userId } : {})), (payload.anonymousId ? { anonymousId: payload.anonymousId } : {})), idsFromTraits), { user_data: Object.keys(userData).length > 0 ? userData : undefined });
|
|
327
|
-
if (debug) {
|
|
328
|
-
console.debug("GTM plugin will set following user-related data layer vars", ids);
|
|
329
|
-
}
|
|
330
|
-
const pageProperties = payload.properties || {};
|
|
331
|
-
const pageVariables = {
|
|
332
|
-
page_location: pageProperties.url || ((_c = (_b = payload.context) === null || _b === void 0 ? void 0 : _b.page) === null || _c === void 0 ? void 0 : _c.url),
|
|
333
|
-
page_title: pageProperties.title || ((_e = (_d = payload.context) === null || _d === void 0 ? void 0 : _d.page) === null || _e === void 0 ? void 0 : _e.title),
|
|
334
|
-
page_path: pageProperties.path || ((_g = (_f = payload.context) === null || _f === void 0 ? void 0 : _f.page) === null || _g === void 0 ? void 0 : _g.path),
|
|
335
|
-
page_hash: pageProperties.hash || ((_j = (_h = payload.context) === null || _h === void 0 ? void 0 : _h.page) === null || _j === void 0 ? void 0 : _j.hash),
|
|
336
|
-
page_search: pageProperties.search || ((_l = (_k = payload.context) === null || _k === void 0 ? void 0 : _k.page) === null || _l === void 0 ? void 0 : _l.search),
|
|
337
|
-
page_referrer: (_p = (_o = (_m = payload === null || payload === void 0 ? void 0 : payload.context) === null || _m === void 0 ? void 0 : _m.page) === null || _o === void 0 ? void 0 : _o.referrer) !== null && _p !== void 0 ? _p : "",
|
|
338
|
-
};
|
|
339
|
-
if (debug) {
|
|
340
|
-
console.debug("GTM plugin will set following context (page) related data layer vars", ids);
|
|
341
|
-
}
|
|
342
|
-
const pushToDataLayer = (data) => {
|
|
343
|
-
dataLayer.push(data);
|
|
344
|
-
if (debug) {
|
|
345
|
-
console.debug("GTM plugin will push following data to dataLayer", data);
|
|
346
|
-
}
|
|
347
|
-
};
|
|
348
|
-
switch (payload.type) {
|
|
349
|
-
case "page":
|
|
350
|
-
const pageEvent = Object.assign(Object.assign({ event: "page_view" }, pageVariables), ids);
|
|
351
|
-
pushToDataLayer(pageEvent);
|
|
352
|
-
break;
|
|
353
|
-
case "track":
|
|
354
|
-
const { properties: trackProperties } = payload;
|
|
355
|
-
const trackEvent = Object.assign(Object.assign(Object.assign({ event: payload.event }, pageVariables), trackProperties), ids);
|
|
356
|
-
pushToDataLayer(trackEvent);
|
|
357
|
-
break;
|
|
358
|
-
case "identify":
|
|
359
|
-
const { traits } = payload;
|
|
360
|
-
const identifyEvent = Object.assign(Object.assign(Object.assign({ event: "identify" }, pageVariables), traits), ids);
|
|
361
|
-
pushToDataLayer(identifyEvent);
|
|
362
|
-
break;
|
|
363
|
-
}
|
|
364
|
-
dataLayer.push(function () {
|
|
365
|
-
this.reset();
|
|
366
|
-
});
|
|
367
|
-
});
|
|
368
|
-
},
|
|
369
|
-
};
|
|
370
|
-
function getGtmState() {
|
|
371
|
-
return window["__jitsuGtmState"] || "fresh";
|
|
372
|
-
}
|
|
373
|
-
function setGtmState(s) {
|
|
374
|
-
window["__jitsuGtmState"] = s;
|
|
375
|
-
}
|
|
376
|
-
function initGtmIfNeeded(config, payload) {
|
|
377
|
-
return __awaiter$3(this, void 0, void 0, function* () {
|
|
378
|
-
if (getGtmState() !== "fresh") {
|
|
379
|
-
return;
|
|
380
|
-
}
|
|
381
|
-
setGtmState("loading");
|
|
382
|
-
const dlName = config.dataLayerName || "dataLayer";
|
|
383
|
-
const tagId = config.containerId;
|
|
384
|
-
(function (w, l, i) {
|
|
385
|
-
w[l] = w[l] || [];
|
|
386
|
-
w[l].push({
|
|
387
|
-
user_id: payload.userId,
|
|
388
|
-
});
|
|
389
|
-
w[l].push({
|
|
390
|
-
"gtm.start": new Date().getTime(),
|
|
391
|
-
event: "gtm.js",
|
|
392
|
-
});
|
|
393
|
-
const dl = l != "dataLayer" ? "&l=" + l : "";
|
|
394
|
-
const scriptSrc = "googletagmanager.com/gtm";
|
|
395
|
-
loadScript(scriptSrc, { www: true, js: true, query: "id=" + i + dl })
|
|
396
|
-
.then(() => {
|
|
397
|
-
setGtmState("loaded");
|
|
398
|
-
})
|
|
399
|
-
.catch(e => {
|
|
400
|
-
console.warn(`GTM (containerId=${tagId}) init failed: ${e.message}`, e);
|
|
401
|
-
setGtmState("failed");
|
|
402
|
-
});
|
|
403
|
-
})(window, dlName, tagId);
|
|
404
|
-
});
|
|
405
|
-
}
|
|
406
|
-
|
|
407
|
-
var __awaiter$2 = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
408
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
409
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
410
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
411
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
412
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
413
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
414
|
-
});
|
|
415
|
-
};
|
|
416
|
-
const urlData = [
|
|
417
|
-
new Uint8Array([109, 111, 99, 46, 114, 101, 103, 97, 110, 97, 109, 103, 97, 116, 101, 108, 103, 111, 111, 103]),
|
|
418
|
-
new Uint8Array([103, 97, 116, 103]),
|
|
419
|
-
new Uint8Array([115, 106]),
|
|
420
|
-
];
|
|
421
|
-
function byteArrayToString(byteArray) {
|
|
422
|
-
const decoder = new TextDecoder();
|
|
423
|
-
return decoder.decode(byteArray);
|
|
424
|
-
}
|
|
425
|
-
function buildTagUrl() {
|
|
426
|
-
return urlData
|
|
427
|
-
.map(d => d.reverse())
|
|
428
|
-
.map(byteArrayToString)
|
|
429
|
-
.join("/");
|
|
430
|
-
}
|
|
431
|
-
const ga4Plugin = {
|
|
432
|
-
id: "ga4-tag",
|
|
433
|
-
handle(config, payload) {
|
|
434
|
-
return __awaiter$2(this, void 0, void 0, function* () {
|
|
435
|
-
var _a, _b;
|
|
436
|
-
if (!applyFilters(payload, config)) {
|
|
437
|
-
return;
|
|
438
|
-
}
|
|
439
|
-
yield initGa4IfNeeded(config, payload);
|
|
440
|
-
const dataLayer = window[config.dataLayerName || "dataLayer"];
|
|
441
|
-
const gtag = function () {
|
|
442
|
-
dataLayer.push(arguments);
|
|
443
|
-
};
|
|
444
|
-
const ids = Object.assign(Object.assign({}, (payload.userId ? { user_id: payload.userId, userId: payload.userId } : {})), (payload.anonymousId ? { anonymousId: payload.anonymousId } : {}));
|
|
445
|
-
if (payload.userId) {
|
|
446
|
-
gtag("set", { user_id: payload.userId });
|
|
447
|
-
}
|
|
448
|
-
switch (payload.type) {
|
|
449
|
-
case "page":
|
|
450
|
-
if (config.autoPageView) {
|
|
451
|
-
console.log("autoPageView");
|
|
452
|
-
break;
|
|
453
|
-
}
|
|
454
|
-
const { properties: pageProperties, context } = payload;
|
|
455
|
-
const pageEvent = Object.assign({ page_location: pageProperties.url, page_title: pageProperties.title, page_path: pageProperties.path, page_hash: pageProperties.hash, page_search: pageProperties.search, page_referrer: (_b = (_a = context === null || context === void 0 ? void 0 : context.page) === null || _a === void 0 ? void 0 : _a.referrer) !== null && _b !== void 0 ? _b : "" }, ids);
|
|
456
|
-
gtag("event", "page_view", pageEvent);
|
|
457
|
-
break;
|
|
458
|
-
case "track":
|
|
459
|
-
const { properties: trackProperties } = payload;
|
|
460
|
-
const trackEvent = Object.assign(Object.assign({}, trackProperties), ids);
|
|
461
|
-
gtag("event", payload.event, trackEvent);
|
|
462
|
-
break;
|
|
463
|
-
case "identify":
|
|
464
|
-
const { traits } = payload;
|
|
465
|
-
const identifyEvent = Object.assign(Object.assign({}, traits), ids);
|
|
466
|
-
gtag("event", "identify", identifyEvent);
|
|
467
|
-
break;
|
|
468
|
-
}
|
|
469
|
-
});
|
|
470
|
-
},
|
|
471
|
-
};
|
|
472
|
-
function getGa4State() {
|
|
473
|
-
return window["__jitsuGa4State"] || "fresh";
|
|
474
|
-
}
|
|
475
|
-
function setGa4State(s) {
|
|
476
|
-
window["__jitsuGa4State"] = s;
|
|
477
|
-
}
|
|
478
|
-
function initGa4IfNeeded(config, payload) {
|
|
479
|
-
return __awaiter$2(this, void 0, void 0, function* () {
|
|
480
|
-
if (getGa4State() !== "fresh") {
|
|
481
|
-
return;
|
|
482
|
-
}
|
|
483
|
-
setGa4State("loading");
|
|
484
|
-
const dlName = config.dataLayerName || "dataLayer";
|
|
485
|
-
const dlParam = dlName !== "dataLayer" ? "&l=" + dlName : "";
|
|
486
|
-
const tagId = config.measurementIds;
|
|
487
|
-
window[dlName] = window[dlName] || [];
|
|
488
|
-
const gtag = function () {
|
|
489
|
-
window[dlName].push(arguments);
|
|
490
|
-
};
|
|
491
|
-
gtag("js", new Date());
|
|
492
|
-
gtag("config", tagId, Object.assign(Object.assign({}, (payload.userId ? { user_id: payload.userId } : {})), (!config.autoPageView ? { send_page_view: false } : {})));
|
|
493
|
-
loadScript(buildTagUrl(), { query: `id=${tagId}${dlParam}`, www: true })
|
|
494
|
-
.then(() => {
|
|
495
|
-
setGa4State("loaded");
|
|
496
|
-
})
|
|
497
|
-
.catch(e => {
|
|
498
|
-
console.warn(`GA4 (containerId=${config.measurementIds}) init failed: ${e.message}`, e);
|
|
499
|
-
setGa4State("failed");
|
|
500
|
-
});
|
|
501
|
-
});
|
|
502
|
-
}
|
|
503
|
-
|
|
504
|
-
function satisfyFilter(filter, subject) {
|
|
505
|
-
return filter === "*" || filter.toLowerCase().trim() === (subject || "").trim().toLowerCase();
|
|
506
|
-
}
|
|
507
|
-
function satisfyDomainFilter(filter, subject) {
|
|
508
|
-
if (filter === "*") {
|
|
509
|
-
return true;
|
|
510
|
-
}
|
|
511
|
-
subject = subject || "";
|
|
512
|
-
if (filter.startsWith("*.")) {
|
|
513
|
-
return subject.endsWith(filter.substring(1));
|
|
514
|
-
}
|
|
515
|
-
else {
|
|
516
|
-
return filter === subject;
|
|
517
|
-
}
|
|
518
|
-
}
|
|
519
|
-
function applyFilters(event, creds) {
|
|
520
|
-
const { hosts = "*", events = "*" } = creds;
|
|
521
|
-
try {
|
|
522
|
-
const eventsArray = Array.isArray(events) ? events : events.split("\n");
|
|
523
|
-
const hostsArray = Array.isArray(hosts) ? hosts : hosts.split("\n");
|
|
524
|
-
return (!!hostsArray.find(hostFilter => { var _a, _b; return satisfyDomainFilter(hostFilter, (_b = (_a = event.context) === null || _a === void 0 ? void 0 : _a.page) === null || _b === void 0 ? void 0 : _b.host); }) &&
|
|
525
|
-
(!!eventsArray.find(eventFilter => satisfyFilter(eventFilter, event.type)) ||
|
|
526
|
-
!!eventsArray.find(eventFilter => satisfyFilter(eventFilter, event.event))));
|
|
527
|
-
}
|
|
528
|
-
catch (e) {
|
|
529
|
-
console.warn(`Failed to apply filters: ${e.message}. Typeof events: ${typeof events}, typeof hosts: ${typeof hosts}. Values`, events, hosts);
|
|
530
|
-
throw new Error(`Failed to apply filters: ${e.message}. Typeof events: ${typeof events}, typeof hosts: ${typeof hosts}`);
|
|
531
|
-
}
|
|
532
|
-
}
|
|
533
|
-
const internalDestinationPlugins = {
|
|
534
|
-
[tagPlugin.id]: tagPlugin,
|
|
535
|
-
[gtmPlugin.id]: gtmPlugin,
|
|
536
|
-
[ga4Plugin.id]: ga4Plugin,
|
|
537
|
-
[logrocketPlugin.id]: logrocketPlugin,
|
|
538
|
-
};
|
|
539
|
-
|
|
540
|
-
var name = "@jitsu/js";
|
|
541
|
-
var version = "1.11.0-beta.1";
|
|
542
|
-
var description = "";
|
|
543
|
-
var author = "Jitsu Dev Team <dev@jitsu.com>";
|
|
544
|
-
var main = "dist/jitsu.cjs.js";
|
|
545
|
-
var files = [
|
|
546
|
-
"dist"
|
|
547
|
-
];
|
|
548
|
-
var module = "dist/jitsu.es.js";
|
|
549
|
-
var types = "dist/jitsu.d.ts";
|
|
550
|
-
var publishConfig = {
|
|
551
|
-
access: "public"
|
|
552
|
-
};
|
|
553
|
-
var license = "MIT";
|
|
554
|
-
var scripts = {
|
|
555
|
-
clean: "rm -rf ./dist ./compiled",
|
|
556
|
-
"test:node": "vitest run",
|
|
557
|
-
"test:playwright": "playwright test ./__tests__/playwright",
|
|
558
|
-
test: "pnpm run test:node",
|
|
559
|
-
"//typecheck": "Build is required because types are generated during build",
|
|
560
|
-
typecheck: "pnpm run build",
|
|
561
|
-
build: "pnpm run clean && tsc -p . && rollup -c",
|
|
562
|
-
"//build-deps": "Required by turbo ^build-deps - builds dist/ for workspace packages that import this",
|
|
563
|
-
"build-deps": "pnpm run build"
|
|
564
|
-
};
|
|
565
|
-
var devDependencies = {
|
|
566
|
-
"@jitsu/common-config": "workspace:*",
|
|
567
|
-
tslib: "catalog:",
|
|
568
|
-
"@playwright/test": "1.39.0",
|
|
569
|
-
"@rollup/plugin-commonjs": "^28.0.2",
|
|
570
|
-
"rollup-plugin-dts": "^6.2.1",
|
|
571
|
-
"@rollup/plugin-json": "^5.0.1",
|
|
572
|
-
"@rollup/plugin-multi-entry": "^6.0.0",
|
|
573
|
-
"@rollup/plugin-node-resolve": "^16.0.0",
|
|
574
|
-
"@rollup/plugin-replace": "^5.0.1",
|
|
575
|
-
"@rollup/plugin-terser": "^0.1.0",
|
|
576
|
-
"@segment/analytics-next": "^1.75.0",
|
|
577
|
-
"@types/chalk": "^2.2.0",
|
|
578
|
-
"@types/node": "catalog:",
|
|
579
|
-
"@vitest/ui": "catalog:",
|
|
580
|
-
chalk: "^4.1.2",
|
|
581
|
-
"cookie-parser": "^1.4.7",
|
|
582
|
-
ejs: "^3.1.8",
|
|
583
|
-
express: "^4.21.2",
|
|
584
|
-
"node-fetch-commonjs": "^3.3.2",
|
|
585
|
-
"node-forge": "^1.3.1",
|
|
586
|
-
"raw-loader": "^4.0.2",
|
|
587
|
-
rollup: "^3.29.5",
|
|
588
|
-
typescript: "catalog:",
|
|
589
|
-
vitest: "catalog:",
|
|
590
|
-
jsondiffpatch: "workspace:*"
|
|
591
|
-
};
|
|
592
|
-
var peerDependencies = {
|
|
593
|
-
"@jitsu/protocols": "workspace:*"
|
|
594
|
-
};
|
|
595
|
-
var dependencies = {
|
|
596
|
-
analytics: "0.8.9"
|
|
597
|
-
};
|
|
598
|
-
var pkg = {
|
|
599
|
-
name: name,
|
|
600
|
-
version: version,
|
|
601
|
-
description: description,
|
|
602
|
-
author: author,
|
|
603
|
-
main: main,
|
|
604
|
-
files: files,
|
|
605
|
-
module: module,
|
|
606
|
-
types: types,
|
|
607
|
-
publishConfig: publishConfig,
|
|
608
|
-
license: license,
|
|
609
|
-
"private": false,
|
|
610
|
-
scripts: scripts,
|
|
611
|
-
devDependencies: devDependencies,
|
|
612
|
-
peerDependencies: peerDependencies,
|
|
613
|
-
dependencies: dependencies
|
|
614
|
-
};
|
|
615
|
-
|
|
616
|
-
const jitsuVersion = pkg.version ;
|
|
617
|
-
const jitsuLibraryName = "@jitsu/js";
|
|
618
|
-
|
|
619
|
-
const publicSuffixes = "webflow.io,vercel.app,myshopify.com,ac,com.ac,edu.ac,gov.ac,net.ac,mil.ac,org.ac,ad,nom.ad,ae,co.ae,net.ae,org.ae,sch.ae,ac.ae,gov.ae,mil.ae,aero,af,gov.af,com.af,org.af,net.af,edu.af,ag,com.ag,org.ag,net.ag,co.ag,nom.ag,ai,off.ai,com.ai,net.ai,org.ai,al,com.al,edu.al,gov.al,mil.al,net.al,org.al,am,co.am,com.am,commune.am,net.am,org.am,ao,ed.ao,gv.ao,og.ao,co.ao,pb.ao,it.ao,aq,ar,bet.ar,com.ar,coop.ar,edu.ar,gob.ar,gov.ar,int.ar,mil.ar,musica.ar,mutual.ar,net.ar,org.ar,senasa.ar,tur.ar,arpa,e164.arpa,in-addr.arpa,ip6.arpa,iris.arpa,uri.arpa,urn.arpa,as,gov.as,asia,at,ac.at,co.at,gv.at,or.at,sth.ac.at,au,com.au,net.au,org.au,edu.au,gov.au,asn.au,id.au,act.au,nsw.au,nt.au,qld.au,sa.au,tas.au,vic.au,wa.au,aw,com.aw,ax,az,com.az,net.az,int.az,gov.az,org.az,edu.az,info.az,pp.az,mil.az,name.az,pro.az,biz.az,ba,com.ba,edu.ba,gov.ba,mil.ba,net.ba,org.ba,bb,biz.bb,co.bb,com.bb,edu.bb,gov.bb,info.bb,net.bb,org.bb,store.bb,tv.bb,bd,be,ac.be,bf,gov.bf,bg,a.bg,b.bg,c.bg,d.bg,e.bg,f.bg,g.bg,h.bg,i.bg,j.bg,k.bg,l.bg,m.bg,n.bg,o.bg,p.bg,q.bg,r.bg,s.bg,t.bg,u.bg,v.bg,w.bg,x.bg,y.bg,z.bg,0.bg,1.bg,2.bg,3.bg,4.bg,5.bg,6.bg,7.bg,8.bg,9.bg,bh,com.bh,edu.bh,net.bh,org.bh,gov.bh,bi,co.bi,com.bi,edu.bi,or.bi,org.bi,biz,bj,africa.bj,agro.bj,architectes.bj,assur.bj,avocats.bj,co.bj,com.bj,eco.bj,econo.bj,edu.bj,info.bj,loisirs.bj,money.bj,net.bj,org.bj,ote.bj,resto.bj,restaurant.bj,tourism.bj,univ.bj,bm,com.bm,edu.bm,gov.bm,net.bm,org.bm,bn,com.bn,edu.bn,gov.bn,net.bn,org.bn,bo,com.bo,edu.bo,gob.bo,int.bo,org.bo,net.bo,mil.bo,tv.bo,web.bo,br,9guacu.br,abc.br,adm.br,adv.br,agr.br,aju.br,am.br,anani.br,aparecida.br,app.br,arq.br,art.br,ato.br,b.br,barueri.br,belem.br,bhz.br,bib.br,bio.br,blog.br,bmd.br,boavista.br,bsb.br,campinagrande.br,campinas.br,caxias.br,cim.br,cng.br,cnt.br,com.br,contagem.br,coop.br,coz.br,cri.br,cuiaba.br,curitiba.br,def.br,des.br,det.br,dev.br,ecn.br,eco.br,edu.br,emp.br,enf.br,eng.br,esp.br,etc.br,eti.br,far.br,feira.br,flog.br,floripa.br,fm.br,fnd.br,fortal.br,fot.br,foz.br,fst.br,g12.br,geo.br,ggf.br,goiania.br,gov.br,gru.br,imb.br,ind.br,inf.br,jab.br,jampa.br,jdf.br,joinville.br,jor.br,jus.br,leg.br,lel.br,log.br,londrina.br,macapa.br,maceio.br,manaus.br,maringa.br,mat.br,med.br,mil.br,morena.br,mp.br,mus.br,natal.br,net.br,niteroi.br,nom.br,not.br,ntr.br,odo.br,ong.br,org.br,osasco.br,palmas.br,poa.br,ppg.br,pro.br,psc.br,psi.br,pvh.br,qsl.br,radio.br,rec.br,recife.br,rep.br,ribeirao.br,rio.br,riobranco.br,riopreto.br,salvador.br,sampa.br,santamaria.br,santoandre.br,saobernardo.br,saogonca.br,seg.br,sjc.br,slg.br,slz.br,sorocaba.br,srv.br,taxi.br,tc.br,tec.br,teo.br,the.br,tmp.br,trd.br,tur.br,tv.br,udi.br,vet.br,vix.br,vlog.br,wiki.br,zlg.br,bs,com.bs,net.bs,org.bs,edu.bs,gov.bs,bt,com.bt,edu.bt,gov.bt,net.bt,org.bt,bv,bw,co.bw,org.bw,by,gov.by,mil.by,com.by,of.by,bz,com.bz,net.bz,org.bz,edu.bz,gov.bz,ca,ab.ca,bc.ca,mb.ca,nb.ca,nf.ca,nl.ca,ns.ca,nt.ca,nu.ca,on.ca,pe.ca,qc.ca,sk.ca,yk.ca,gc.ca,cat,cc,cd,gov.cd,cf,cg,ch,ci,org.ci,or.ci,com.ci,co.ci,edu.ci,ed.ci,ac.ci,net.ci,go.ci,asso.ci,aéroport.ci,int.ci,presse.ci,md.ci,gouv.ci,ck,cl,co.cl,gob.cl,gov.cl,mil.cl,cm,co.cm,com.cm,gov.cm,net.cm,cn,ac.cn,com.cn,edu.cn,gov.cn,net.cn,org.cn,mil.cn,co,arts.co,com.co,edu.co,firm.co,gov.co,info.co,int.co,mil.co,net.co,nom.co,org.co,rec.co,web.co,com,coop,cr,ac.cr,co.cr,ed.cr,fi.cr,go.cr,or.cr,sa.cr,cu,com.cu,edu.cu,org.cu,net.cu,gov.cu,inf.cu,cv,com.cv,edu.cv,int.cv,nome.cv,org.cv,cw,com.cw,edu.cw,net.cw,org.cw,cx,gov.cx,cy,ac.cy,biz.cy,com.cy,ekloges.cy,gov.cy,ltd.cy,mil.cy,net.cy,org.cy,press.cy,pro.cy,tm.cy,cz,de,dj,dk,dm,com.dm,net.dm,org.dm,edu.dm,gov.dm,do,art.do,com.do,edu.do,gob.do,gov.do,mil.do,net.do,org.do,sld.do,web.do,dz,art.dz,asso.dz,com.dz,edu.dz,gov.dz,org.dz,net.dz,pol.dz,soc.dz,tm.dz,ec,com.ec,info.ec,net.ec,fin.ec,k12.ec,med.ec,pro.ec,org.ec,edu.ec,gov.ec,gob.ec,mil.ec,edu,ee,edu.ee,gov.ee,riik.ee,lib.ee,med.ee,com.ee,pri.ee,aip.ee,org.ee,fie.ee,eg,com.eg,edu.eg,eun.eg,gov.eg,mil.eg,name.eg,net.eg,org.eg,sci.eg,er,es,com.es,nom.es,org.es,gob.es,edu.es,et,com.et,gov.et,org.et,edu.et,biz.et,name.et,info.et,net.et,eu,fi,aland.fi,fj,ac.fj,biz.fj,com.fj,gov.fj,info.fj,mil.fj,name.fj,net.fj,org.fj,pro.fj,fk,com.fm,edu.fm,net.fm,org.fm,fm,fo,fr,asso.fr,com.fr,gouv.fr,nom.fr,prd.fr,tm.fr,aeroport.fr,avocat.fr,avoues.fr,cci.fr,chambagri.fr,chirurgiens-dentistes.fr,experts-comptables.fr,geometre-expert.fr,greta.fr,huissier-justice.fr,medecin.fr,notaires.fr,pharmacien.fr,port.fr,veterinaire.fr,ga,gb,edu.gd,gov.gd,gd,ge,com.ge,edu.ge,gov.ge,org.ge,mil.ge,net.ge,pvt.ge,gf,gg,co.gg,net.gg,org.gg,gh,com.gh,edu.gh,gov.gh,org.gh,mil.gh,gi,com.gi,ltd.gi,gov.gi,mod.gi,edu.gi,org.gi,gl,co.gl,com.gl,edu.gl,net.gl,org.gl,gm,gn,ac.gn,com.gn,edu.gn,gov.gn,org.gn,net.gn,gov,gp,com.gp,net.gp,mobi.gp,edu.gp,org.gp,asso.gp,gq,gr,com.gr,edu.gr,net.gr,org.gr,gov.gr,gs,gt,com.gt,edu.gt,gob.gt,ind.gt,mil.gt,net.gt,org.gt,gu,com.gu,edu.gu,gov.gu,guam.gu,info.gu,net.gu,org.gu,web.gu,gw,gy,co.gy,com.gy,edu.gy,gov.gy,net.gy,org.gy,hk,com.hk,edu.hk,gov.hk,idv.hk,net.hk,org.hk,hm,hn,com.hn,edu.hn,org.hn,net.hn,mil.hn,gob.hn,hr,iz.hr,from.hr,name.hr,com.hr,ht,com.ht,shop.ht,firm.ht,info.ht,adult.ht,net.ht,pro.ht,org.ht,med.ht,art.ht,coop.ht,pol.ht,asso.ht,edu.ht,rel.ht,gouv.ht,perso.ht,hu,co.hu,info.hu,org.hu,priv.hu,sport.hu,tm.hu,2000.hu,agrar.hu,bolt.hu,casino.hu,city.hu,erotica.hu,erotika.hu,film.hu,forum.hu,games.hu,hotel.hu,ingatlan.hu,jogasz.hu,konyvelo.hu,lakas.hu,media.hu,news.hu,reklam.hu,sex.hu,shop.hu,suli.hu,szex.hu,tozsde.hu,utazas.hu,video.hu,id,ac.id,biz.id,co.id,desa.id,go.id,mil.id,my.id,net.id,or.id,ponpes.id,sch.id,web.id,ie,gov.ie,il,ac.il,co.il,gov.il,idf.il,k12.il,muni.il,net.il,org.il,im,ac.im,co.im,com.im,ltd.co.im,net.im,org.im,plc.co.im,tt.im,tv.im,in,5g.in,6g.in,ac.in,ai.in,am.in,bihar.in,biz.in,business.in,ca.in,cn.in,co.in,com.in,coop.in,cs.in,delhi.in,dr.in,edu.in,er.in,firm.in,gen.in,gov.in,gujarat.in,ind.in,info.in,int.in,internet.in,io.in,me.in,mil.in,net.in,nic.in,org.in,pg.in,post.in,pro.in,res.in,travel.in,tv.in,uk.in,up.in,us.in,info,int,eu.int,io,com.io,iq,gov.iq,edu.iq,mil.iq,com.iq,org.iq,net.iq,ir,ac.ir,co.ir,gov.ir,id.ir,net.ir,org.ir,sch.ir,is,net.is,com.is,edu.is,gov.is,org.is,int.is,it,gov.it,edu.it,je,co.je,net.je,org.je,jm,jo,com.jo,org.jo,net.jo,edu.jo,sch.jo,gov.jo,mil.jo,name.jo,jobs,jp,ac.jp,ad.jp,co.jp,ed.jp,go.jp,gr.jp,lg.jp,ne.jp,or.jp,ke,ac.ke,co.ke,go.ke,info.ke,me.ke,mobi.ke,ne.ke,or.ke,sc.ke,kg,org.kg,net.kg,com.kg,edu.kg,gov.kg,mil.kg,kh,ki,edu.ki,biz.ki,net.ki,org.ki,gov.ki,info.ki,com.ki,km,org.km,nom.km,gov.km,prd.km,tm.km,edu.km,mil.km,ass.km,com.km,kn,net.kn,org.kn,edu.kn,gov.kn,kp,com.kp,edu.kp,gov.kp,org.kp,rep.kp,tra.kp,kr,ac.kr,co.kr,es.kr,go.kr,hs.kr,kg.kr,mil.kr,ms.kr,ne.kr,or.kr,pe.kr,re.kr,sc.kr,kw,com.kw,edu.kw,emb.kw,gov.kw,ind.kw,net.kw,org.kw,ky,com.ky,edu.ky,net.ky,org.ky,kz,org.kz,edu.kz,net.kz,gov.kz,mil.kz,com.kz,la,int.la,net.la,info.la,edu.la,gov.la,per.la,com.la,org.la,lb,com.lb,edu.lb,gov.lb,net.lb,org.lb,lc,com.lc,net.lc,co.lc,org.lc,edu.lc,gov.lc,li,lk,gov.lk,sch.lk,net.lk,int.lk,com.lk,org.lk,edu.lk,ngo.lk,soc.lk,web.lk,ltd.lk,assn.lk,grp.lk,hotel.lk,ac.lk,lr,com.lr,edu.lr,gov.lr,org.lr,net.lr,ls,ac.ls,biz.ls,co.ls,edu.ls,gov.ls,info.ls,net.ls,org.ls,sc.ls,lt,gov.lt,lu,lv,com.lv,edu.lv,gov.lv,org.lv,mil.lv,id.lv,net.lv,asn.lv,conf.lv,ly,com.ly,net.ly,gov.ly,plc.ly,edu.ly,sch.ly,med.ly,org.ly,id.ly,ma,co.ma,net.ma,gov.ma,org.ma,ac.ma,press.ma,mc,tm.mc,asso.mc,md,me,co.me,net.me,org.me,edu.me,ac.me,gov.me,its.me,priv.me,mg,org.mg,nom.mg,gov.mg,prd.mg,tm.mg,edu.mg,mil.mg,com.mg,co.mg,mh,mil,mk,com.mk,org.mk,net.mk,edu.mk,gov.mk,inf.mk,name.mk,ml,com.ml,edu.ml,gouv.ml,gov.ml,net.ml,org.ml,presse.ml,mm,mn,gov.mn,edu.mn,org.mn,mo,com.mo,net.mo,org.mo,edu.mo,gov.mo,mobi,mp,mq,mr,gov.mr,ms,com.ms,edu.ms,gov.ms,net.ms,org.ms,mt,com.mt,edu.mt,net.mt,org.mt,mu,com.mu,net.mu,org.mu,gov.mu,ac.mu,co.mu,or.mu,museum,mv,aero.mv,biz.mv,com.mv,coop.mv,edu.mv,gov.mv,info.mv,int.mv,mil.mv,museum.mv,name.mv,net.mv,org.mv,pro.mv,mw,ac.mw,biz.mw,co.mw,com.mw,coop.mw,edu.mw,gov.mw,int.mw,museum.mw,net.mw,org.mw,mx,com.mx,org.mx,gob.mx,edu.mx,net.mx,my,biz.my,com.my,edu.my,gov.my,mil.my,name.my,net.my,org.my,mz,ac.mz,adv.mz,co.mz,edu.mz,gov.mz,mil.mz,net.mz,org.mz,na,info.na,pro.na,name.na,school.na,or.na,dr.na,us.na,mx.na,ca.na,in.na,cc.na,tv.na,ws.na,mobi.na,co.na,com.na,org.na,name,nc,asso.nc,nom.nc,ne,net,nf,com.nf,net.nf,per.nf,rec.nf,web.nf,arts.nf,firm.nf,info.nf,other.nf,store.nf,ng,com.ng,edu.ng,gov.ng,i.ng,mil.ng,mobi.ng,name.ng,net.ng,org.ng,sch.ng,ni,ac.ni,biz.ni,co.ni,com.ni,edu.ni,gob.ni,in.ni,info.ni,int.ni,mil.ni,net.ni,nom.ni,org.ni,web.ni,nl,no,fhs.no,vgs.no,fylkesbibl.no,folkebibl.no,museum.no,idrett.no,priv.no,mil.no,stat.no,dep.no,kommune.no,herad.no,np,nr,biz.nr,info.nr,gov.nr,edu.nr,org.nr,net.nr,com.nr,nu,nz,ac.nz,co.nz,cri.nz,geek.nz,gen.nz,govt.nz,health.nz,iwi.nz,kiwi.nz,maori.nz,mil.nz,māori.nz,net.nz,org.nz,parliament.nz,school.nz,om,co.om,com.om,edu.om,gov.om,med.om,museum.om,net.om,org.om,pro.om,onion,org,pa,ac.pa,gob.pa,com.pa,org.pa,sld.pa,edu.pa,net.pa,ing.pa,abo.pa,med.pa,nom.pa,pe,edu.pe,gob.pe,nom.pe,mil.pe,org.pe,com.pe,net.pe,pf,com.pf,org.pf,edu.pf,pg,ph,com.ph,net.ph,org.ph,gov.ph,edu.ph,ngo.ph,mil.ph,i.ph,pk,com.pk,net.pk,edu.pk,org.pk,fam.pk,biz.pk,web.pk,gov.pk,gob.pk,gok.pk,gon.pk,gop.pk,gos.pk,info.pk,pl,com.pl,net.pl,org.pl,aid.pl,agro.pl,atm.pl,auto.pl,biz.pl,edu.pl,gmina.pl,gsm.pl,info.pl,mail.pl,miasta.pl,media.pl,mil.pl,nieruchomosci.pl,nom.pl,pc.pl,powiat.pl,priv.pl,realestate.pl,rel.pl,sex.pl,shop.pl,sklep.pl,sos.pl,szkola.pl,targi.pl,tm.pl,tourism.pl,travel.pl,turystyka.pl,pm,pn,gov.pn,co.pn,org.pn,edu.pn,net.pn,post,pr,com.pr,net.pr,org.pr,gov.pr,edu.pr,isla.pr,pro.pr,biz.pr,info.pr,name.pr,est.pr,prof.pr,ac.pr,pro,aaa.pro,aca.pro,acct.pro,avocat.pro,bar.pro,cpa.pro,eng.pro,jur.pro,law.pro,med.pro,recht.pro,ps,edu.ps,gov.ps,sec.ps,plo.ps,com.ps,org.ps,net.ps,pt,net.pt,gov.pt,org.pt,edu.pt,int.pt,publ.pt,com.pt,nome.pt,pw,co.pw,ne.pw,or.pw,ed.pw,go.pw,belau.pw,py,com.py,coop.py,edu.py,gov.py,mil.py,net.py,org.py,qa,com.qa,edu.qa,gov.qa,mil.qa,name.qa,net.qa,org.qa,sch.qa,re,asso.re,com.re,nom.re,ro,arts.ro,com.ro,firm.ro,info.ro,nom.ro,nt.ro,org.ro,rec.ro,store.ro,tm.ro,www.ro,rs,ac.rs,co.rs,edu.rs,gov.rs,in.rs,org.rs,ru,rw,ac.rw,co.rw,coop.rw,gov.rw,mil.rw,net.rw,org.rw,sa,com.sa,net.sa,org.sa,gov.sa,med.sa,pub.sa,edu.sa,sch.sa,sb,com.sb,edu.sb,gov.sb,net.sb,org.sb,sc,com.sc,gov.sc,net.sc,org.sc,edu.sc,sd,com.sd,net.sd,org.sd,edu.sd,med.sd,tv.sd,gov.sd,info.sd,se,a.se,ac.se,b.se,bd.se,brand.se,c.se,d.se,e.se,f.se,fh.se,fhsk.se,fhv.se,g.se,h.se,i.se,k.se,komforb.se,kommunalforbund.se,komvux.se,l.se,lanbib.se,m.se,n.se,naturbruksgymn.se,o.se,org.se,p.se,parti.se,pp.se,press.se,r.se,s.se,t.se,tm.se,u.se,w.se,x.se,y.se,z.se,sg,com.sg,net.sg,org.sg,gov.sg,edu.sg,per.sg,sh,com.sh,net.sh,gov.sh,org.sh,mil.sh,si,sj,sk,sl,com.sl,net.sl,edu.sl,gov.sl,org.sl,sm,sn,art.sn,com.sn,edu.sn,gouv.sn,org.sn,perso.sn,univ.sn,so,com.so,edu.so,gov.so,me.so,net.so,org.so,sr,ss,biz.ss,com.ss,edu.ss,gov.ss,me.ss,net.ss,org.ss,sch.ss,st,co.st,com.st,consulado.st,edu.st,embaixada.st,mil.st,net.st,org.st,principe.st,saotome.st,store.st,su,sv,com.sv,edu.sv,gob.sv,org.sv,red.sv,sx,gov.sx,sy,edu.sy,gov.sy,net.sy,mil.sy,com.sy,org.sy,sz,co.sz,ac.sz,org.sz,tc,td,tel,tf,tg,th,ac.th,co.th,go.th,in.th,mi.th,net.th,or.th,tj,ac.tj,biz.tj,co.tj,com.tj,edu.tj,go.tj,gov.tj,int.tj,mil.tj,name.tj,net.tj,nic.tj,org.tj,test.tj,web.tj,tk,tl,gov.tl,tm,com.tm,co.tm,org.tm,net.tm,nom.tm,gov.tm,mil.tm,edu.tm,tn,com.tn,ens.tn,fin.tn,gov.tn,ind.tn,info.tn,intl.tn,mincom.tn,nat.tn,net.tn,org.tn,perso.tn,tourism.tn,to,com.to,gov.to,net.to,org.to,edu.to,mil.to,tr,av.tr,bbs.tr,bel.tr,biz.tr,com.tr,dr.tr,edu.tr,gen.tr,gov.tr,info.tr,mil.tr,k12.tr,kep.tr,name.tr,net.tr,org.tr,pol.tr,tel.tr,tsk.tr,tv.tr,web.tr,nc.tr,tt,co.tt,com.tt,org.tt,net.tt,biz.tt,info.tt,pro.tt,int.tt,coop.tt,jobs.tt,mobi.tt,travel.tt,museum.tt,aero.tt,name.tt,gov.tt,edu.tt,tv,tw,edu.tw,gov.tw,mil.tw,com.tw,net.tw,org.tw,idv.tw,game.tw,ebiz.tw,club.tw,tz,ac.tz,co.tz,go.tz,hotel.tz,info.tz,me.tz,mil.tz,mobi.tz,ne.tz,or.tz,sc.tz,tv.tz,ua,com.ua,edu.ua,gov.ua,in.ua,net.ua,org.ua,ug,co.ug,or.ug,ac.ug,sc.ug,go.ug,ne.ug,com.ug,org.ug,uk,ac.uk,co.uk,gov.uk,ltd.uk,me.uk,net.uk,nhs.uk,org.uk,plc.uk,police.uk,us,dni.us,fed.us,isa.us,kids.us,nsn.us,ak.us,al.us,ar.us,as.us,az.us,ca.us,co.us,ct.us,dc.us,de.us,fl.us,ga.us,gu.us,hi.us,ia.us,id.us,il.us,in.us,ks.us,ky.us,la.us,ma.us,md.us,me.us,mi.us,mn.us,mo.us,ms.us,mt.us,nc.us,nd.us,ne.us,nh.us,nj.us,nm.us,nv.us,ny.us,oh.us,ok.us,or.us,pa.us,pr.us,ri.us,sc.us,sd.us,tn.us,tx.us,ut.us,vi.us,vt.us,va.us,wa.us,wi.us,wv.us,wy.us,uy,com.uy,edu.uy,gub.uy,mil.uy,net.uy,org.uy,uz,co.uz,com.uz,net.uz,org.uz,va,vc,com.vc,net.vc,org.vc,gov.vc,mil.vc,edu.vc,ve,arts.ve,bib.ve,co.ve,com.ve,e12.ve,edu.ve,firm.ve,gob.ve,gov.ve,info.ve,int.ve,mil.ve,net.ve,nom.ve,org.ve,rar.ve,rec.ve,store.ve,tec.ve,web.ve,vg,vi,co.vi,com.vi,k12.vi,net.vi,org.vi,vn,ac.vn,ai.vn,biz.vn,com.vn,edu.vn,gov.vn,health.vn,id.vn,info.vn,int.vn,io.vn,name.vn,net.vn,org.vn,pro.vn,vu,com.vu,edu.vu,net.vu,org.vu,wf,ws,com.ws,net.ws,org.ws,gov.ws,edu.ws,yt,ye,com.ye,edu.ye,gov.ye,net.ye,mil.ye,org.ye,ac.za,agric.za,alt.za,co.za,edu.za,gov.za,grondar.za,law.za,mil.za,net.za,ngo.za,nic.za,nis.za,nom.za,org.za,school.za,tm.za,web.za,zm,ac.zm,biz.zm,co.zm,com.zm,edu.zm,gov.zm,info.zm,mil.zm,net.zm,org.zm,sch.zm,zw,ac.zw,co.zw,gov.zw,mil.zw,org.zw".split(",");
|
|
620
|
-
const _publicSuffixesMap = {};
|
|
621
|
-
publicSuffixes.forEach(tld => {
|
|
622
|
-
_publicSuffixesMap[tld] = true;
|
|
623
|
-
});
|
|
624
|
-
const publicSuffixesMap = _publicSuffixesMap;
|
|
625
|
-
function getTopLevelDomain(hostname) {
|
|
626
|
-
const [domain] = hostname.split(":");
|
|
627
|
-
const parts = domain.split(".");
|
|
628
|
-
if (parts[parts.length - 1] === "localhost" || parts.length < 2) {
|
|
629
|
-
return parts[parts.length - 1];
|
|
630
|
-
}
|
|
631
|
-
else {
|
|
632
|
-
const d = parts[parts.length - 2] + "." + parts[parts.length - 1];
|
|
633
|
-
if (parts.length > 2 && publicSuffixesMap[d]) {
|
|
634
|
-
return parts[parts.length - 3] + "." + d;
|
|
635
|
-
}
|
|
636
|
-
else {
|
|
637
|
-
return d;
|
|
638
|
-
}
|
|
639
|
-
}
|
|
640
|
-
}
|
|
641
|
-
|
|
642
|
-
class Processor {
|
|
643
|
-
constructor(options) {
|
|
644
|
-
this.selfOptions = options || {};
|
|
645
|
-
this.pipes = {};
|
|
646
|
-
}
|
|
647
|
-
options(options) {
|
|
648
|
-
if (options) {
|
|
649
|
-
this.selfOptions = options;
|
|
650
|
-
}
|
|
651
|
-
return this.selfOptions;
|
|
652
|
-
}
|
|
653
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
654
|
-
pipe(name, pipeArg) {
|
|
655
|
-
let pipe = pipeArg;
|
|
656
|
-
if (typeof name === "string") {
|
|
657
|
-
if (typeof pipe === "undefined") {
|
|
658
|
-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
|
|
659
|
-
return this.pipes[name];
|
|
660
|
-
}
|
|
661
|
-
else {
|
|
662
|
-
this.pipes[name] = pipe;
|
|
663
|
-
}
|
|
664
|
-
}
|
|
665
|
-
if (name && name.name) {
|
|
666
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
667
|
-
pipe = name;
|
|
668
|
-
if (pipe.processor === this) {
|
|
669
|
-
return pipe;
|
|
670
|
-
}
|
|
671
|
-
this.pipes[pipe.name] = pipe;
|
|
672
|
-
}
|
|
673
|
-
pipe.processor = this;
|
|
674
|
-
return pipe;
|
|
675
|
-
}
|
|
676
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
677
|
-
process(input, pipe) {
|
|
678
|
-
let context = input;
|
|
679
|
-
context.options = this.options();
|
|
680
|
-
let nextPipe = pipe || input.pipe || "default";
|
|
681
|
-
let lastPipe;
|
|
682
|
-
while (nextPipe) {
|
|
683
|
-
if (typeof context.nextAfterChildren !== "undefined") {
|
|
684
|
-
// children processed and coming back to parent
|
|
685
|
-
context.next = context.nextAfterChildren;
|
|
686
|
-
context.nextAfterChildren = null;
|
|
687
|
-
}
|
|
688
|
-
if (typeof nextPipe === "string") {
|
|
689
|
-
nextPipe = this.pipe(nextPipe);
|
|
690
|
-
}
|
|
691
|
-
nextPipe.process(context);
|
|
692
|
-
lastPipe = nextPipe;
|
|
693
|
-
nextPipe = null;
|
|
694
|
-
if (context) {
|
|
695
|
-
if (context.next) {
|
|
696
|
-
context = context.next;
|
|
697
|
-
nextPipe = context.pipe || lastPipe;
|
|
698
|
-
}
|
|
699
|
-
}
|
|
700
|
-
}
|
|
701
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
702
|
-
return context.hasResult ? context.result : undefined;
|
|
703
|
-
}
|
|
704
|
-
}
|
|
705
|
-
|
|
706
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
707
|
-
class Pipe {
|
|
708
|
-
constructor(name) {
|
|
709
|
-
this.name = name;
|
|
710
|
-
this.filters = [];
|
|
711
|
-
}
|
|
712
|
-
process(input) {
|
|
713
|
-
if (!this.processor) {
|
|
714
|
-
throw new Error("add this pipe to a processor before using it");
|
|
715
|
-
}
|
|
716
|
-
const debug = this.debug;
|
|
717
|
-
const length = this.filters.length;
|
|
718
|
-
const context = input;
|
|
719
|
-
for (let index = 0; index < length; index++) {
|
|
720
|
-
const filter = this.filters[index];
|
|
721
|
-
if (debug) {
|
|
722
|
-
this.log(`filter: ${filter.filterName}`);
|
|
723
|
-
}
|
|
724
|
-
filter(context);
|
|
725
|
-
if (typeof context === "object" && context.exiting) {
|
|
726
|
-
context.exiting = false;
|
|
727
|
-
break;
|
|
728
|
-
}
|
|
729
|
-
}
|
|
730
|
-
if (!context.next && this.resultCheck) {
|
|
731
|
-
this.resultCheck(context);
|
|
732
|
-
}
|
|
733
|
-
}
|
|
734
|
-
log(msg) {
|
|
735
|
-
console.log(`[jsondiffpatch] ${this.name} pipe, ${msg}`);
|
|
736
|
-
}
|
|
737
|
-
append(...args) {
|
|
738
|
-
this.filters.push(...args);
|
|
739
|
-
return this;
|
|
740
|
-
}
|
|
741
|
-
prepend(...args) {
|
|
742
|
-
this.filters.unshift(...args);
|
|
743
|
-
return this;
|
|
744
|
-
}
|
|
745
|
-
indexOf(filterName) {
|
|
746
|
-
if (!filterName) {
|
|
747
|
-
throw new Error("a filter name is required");
|
|
748
|
-
}
|
|
749
|
-
for (let index = 0; index < this.filters.length; index++) {
|
|
750
|
-
const filter = this.filters[index];
|
|
751
|
-
if (filter.filterName === filterName) {
|
|
752
|
-
return index;
|
|
753
|
-
}
|
|
754
|
-
}
|
|
755
|
-
throw new Error(`filter not found: ${filterName}`);
|
|
756
|
-
}
|
|
757
|
-
list() {
|
|
758
|
-
return this.filters.map(f => f.filterName);
|
|
759
|
-
}
|
|
760
|
-
after(filterName, ...params) {
|
|
761
|
-
const index = this.indexOf(filterName);
|
|
762
|
-
this.filters.splice(index + 1, 0, ...params);
|
|
763
|
-
return this;
|
|
764
|
-
}
|
|
765
|
-
before(filterName, ...params) {
|
|
766
|
-
const index = this.indexOf(filterName);
|
|
767
|
-
this.filters.splice(index, 0, ...params);
|
|
768
|
-
return this;
|
|
769
|
-
}
|
|
770
|
-
replace(filterName, ...params) {
|
|
771
|
-
const index = this.indexOf(filterName);
|
|
772
|
-
this.filters.splice(index, 1, ...params);
|
|
773
|
-
return this;
|
|
774
|
-
}
|
|
775
|
-
remove(filterName) {
|
|
776
|
-
const index = this.indexOf(filterName);
|
|
777
|
-
this.filters.splice(index, 1);
|
|
778
|
-
return this;
|
|
779
|
-
}
|
|
780
|
-
clear() {
|
|
781
|
-
this.filters.length = 0;
|
|
782
|
-
return this;
|
|
783
|
-
}
|
|
784
|
-
shouldHaveResult(should) {
|
|
785
|
-
if (should === false) {
|
|
786
|
-
this.resultCheck = null;
|
|
787
|
-
return;
|
|
788
|
-
}
|
|
789
|
-
if (this.resultCheck) {
|
|
790
|
-
return;
|
|
791
|
-
}
|
|
792
|
-
this.resultCheck = context => {
|
|
793
|
-
if (!context.hasResult) {
|
|
794
|
-
console.log(context);
|
|
795
|
-
const error = new Error(`${this.name} failed`);
|
|
796
|
-
error.noResult = true;
|
|
797
|
-
throw error;
|
|
798
|
-
}
|
|
799
|
-
};
|
|
800
|
-
return this;
|
|
801
|
-
}
|
|
802
|
-
}
|
|
803
|
-
|
|
804
|
-
class Context {
|
|
805
|
-
setResult(result) {
|
|
806
|
-
this.result = result;
|
|
807
|
-
this.hasResult = true;
|
|
808
|
-
return this;
|
|
809
|
-
}
|
|
810
|
-
exit() {
|
|
811
|
-
this.exiting = true;
|
|
812
|
-
return this;
|
|
813
|
-
}
|
|
814
|
-
push(child, name) {
|
|
815
|
-
child.parent = this;
|
|
816
|
-
if (typeof name !== "undefined") {
|
|
817
|
-
child.childName = name;
|
|
818
|
-
}
|
|
819
|
-
child.root = this.root || this;
|
|
820
|
-
child.options = child.options || this.options;
|
|
821
|
-
if (!this.children) {
|
|
822
|
-
this.children = [child];
|
|
823
|
-
this.nextAfterChildren = this.next || null;
|
|
824
|
-
this.next = child;
|
|
825
|
-
}
|
|
826
|
-
else {
|
|
827
|
-
this.children[this.children.length - 1].next = child;
|
|
828
|
-
this.children.push(child);
|
|
829
|
-
}
|
|
830
|
-
child.next = this;
|
|
831
|
-
return this;
|
|
832
|
-
}
|
|
833
|
-
}
|
|
834
|
-
|
|
835
|
-
class DiffContext extends Context {
|
|
836
|
-
constructor(left, right) {
|
|
837
|
-
super();
|
|
838
|
-
this.left = left;
|
|
839
|
-
this.right = right;
|
|
840
|
-
this.pipe = "diff";
|
|
841
|
-
}
|
|
842
|
-
setResult(result) {
|
|
843
|
-
return super.setResult(result);
|
|
844
|
-
}
|
|
845
|
-
}
|
|
846
|
-
|
|
847
|
-
class PatchContext extends Context {
|
|
848
|
-
constructor(left, delta) {
|
|
849
|
-
super();
|
|
850
|
-
this.left = left;
|
|
851
|
-
this.delta = delta;
|
|
852
|
-
this.pipe = "patch";
|
|
853
|
-
}
|
|
854
|
-
}
|
|
855
|
-
|
|
856
|
-
function arrayEquals(a, b) {
|
|
857
|
-
if (a.length !== b.length) {
|
|
858
|
-
return false;
|
|
859
|
-
}
|
|
860
|
-
for (let i = 0; i < a.length; i++) {
|
|
861
|
-
if (a[i] !== b[i]) {
|
|
862
|
-
return false;
|
|
863
|
-
}
|
|
864
|
-
}
|
|
865
|
-
return true;
|
|
866
|
-
}
|
|
867
|
-
const diffFilter$1 = function trivialMatchesDiffFilter(context) {
|
|
868
|
-
if (context.left === context.right) {
|
|
869
|
-
context.setResult(undefined).exit();
|
|
870
|
-
return;
|
|
871
|
-
}
|
|
872
|
-
if (typeof context.left === "undefined") {
|
|
873
|
-
if (typeof context.right === "function") {
|
|
874
|
-
throw new Error("functions are not supported");
|
|
875
|
-
}
|
|
876
|
-
context.setResult([context.right]).exit();
|
|
877
|
-
return;
|
|
878
|
-
}
|
|
879
|
-
if (typeof context.right === "undefined") {
|
|
880
|
-
context.setResult([context.left, 0, 0]).exit();
|
|
881
|
-
return;
|
|
882
|
-
}
|
|
883
|
-
if (typeof context.left === "function" || typeof context.right === "function") {
|
|
884
|
-
throw new Error("functions are not supported");
|
|
885
|
-
}
|
|
886
|
-
context.leftType = context.left === null ? "null" : typeof context.left;
|
|
887
|
-
context.rightType = context.right === null ? "null" : typeof context.right;
|
|
888
|
-
if (context.leftType !== context.rightType) {
|
|
889
|
-
context.setResult([context.left, context.right]).exit();
|
|
890
|
-
return;
|
|
891
|
-
}
|
|
892
|
-
if (context.leftType === "boolean" || context.leftType === "number" || context.leftType === "string") {
|
|
893
|
-
context.setResult([context.left, context.right]).exit();
|
|
894
|
-
return;
|
|
895
|
-
}
|
|
896
|
-
if (context.leftType === "object") {
|
|
897
|
-
context.leftIsArray = Array.isArray(context.left);
|
|
898
|
-
}
|
|
899
|
-
if (context.rightType === "object") {
|
|
900
|
-
context.rightIsArray = Array.isArray(context.right);
|
|
901
|
-
}
|
|
902
|
-
if (context.leftIsArray !== context.rightIsArray) {
|
|
903
|
-
context.setResult([context.left, context.right]).exit();
|
|
904
|
-
return;
|
|
905
|
-
}
|
|
906
|
-
if (context.leftIsArray && context.rightIsArray) {
|
|
907
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
|
|
908
|
-
if (arrayEquals(context.left, context.right)) {
|
|
909
|
-
context.setResult(undefined).exit();
|
|
910
|
-
return;
|
|
911
|
-
}
|
|
912
|
-
else {
|
|
913
|
-
context.setResult([context.left, context.right]).exit();
|
|
914
|
-
return;
|
|
915
|
-
}
|
|
916
|
-
}
|
|
917
|
-
if (context.left instanceof RegExp) {
|
|
918
|
-
if (context.right instanceof RegExp) {
|
|
919
|
-
context.setResult([context.left.toString(), context.right.toString()]).exit();
|
|
920
|
-
}
|
|
921
|
-
else {
|
|
922
|
-
context.setResult([context.left, context.right]).exit();
|
|
923
|
-
}
|
|
924
|
-
}
|
|
925
|
-
};
|
|
926
|
-
diffFilter$1.filterName = "trivial";
|
|
927
|
-
const patchFilter$1 = function trivialMatchesPatchFilter(context) {
|
|
928
|
-
if (typeof context.delta === "undefined") {
|
|
929
|
-
context.setResult(context.left).exit();
|
|
930
|
-
return;
|
|
931
|
-
}
|
|
932
|
-
context.nested = !Array.isArray(context.delta);
|
|
933
|
-
if (context.nested) {
|
|
934
|
-
return;
|
|
935
|
-
}
|
|
936
|
-
const nonNestedDelta = context.delta;
|
|
937
|
-
if (nonNestedDelta.length === 1) {
|
|
938
|
-
context.setResult(nonNestedDelta[0]).exit();
|
|
939
|
-
return;
|
|
940
|
-
}
|
|
941
|
-
if (nonNestedDelta.length === 2) {
|
|
942
|
-
if (context.left instanceof RegExp) {
|
|
943
|
-
const regexArgs = /^\/(.*)\/([gimyu]+)$/.exec(nonNestedDelta[1]);
|
|
944
|
-
if (regexArgs) {
|
|
945
|
-
context.setResult(new RegExp(regexArgs[1], regexArgs[2])).exit();
|
|
946
|
-
return;
|
|
947
|
-
}
|
|
948
|
-
}
|
|
949
|
-
context.setResult(nonNestedDelta[1]).exit();
|
|
950
|
-
return;
|
|
951
|
-
}
|
|
952
|
-
if (nonNestedDelta.length === 3 && nonNestedDelta[2] === 0) {
|
|
953
|
-
context.setResult(undefined).exit();
|
|
954
|
-
}
|
|
955
|
-
};
|
|
956
|
-
patchFilter$1.filterName = "trivial";
|
|
957
|
-
|
|
958
|
-
const collectChildrenDiffFilter = context => {
|
|
959
|
-
if (!context || !context.children) {
|
|
960
|
-
return;
|
|
961
|
-
}
|
|
962
|
-
const length = context.children.length;
|
|
963
|
-
let child;
|
|
964
|
-
let result = context.result;
|
|
965
|
-
for (let index = 0; index < length; index++) {
|
|
966
|
-
child = context.children[index];
|
|
967
|
-
if (typeof child.result === "undefined") {
|
|
968
|
-
continue;
|
|
969
|
-
}
|
|
970
|
-
result = result || {};
|
|
971
|
-
result[child.childName] = child.result;
|
|
972
|
-
}
|
|
973
|
-
if (result && context.leftIsArray) {
|
|
974
|
-
result._t = "a";
|
|
975
|
-
}
|
|
976
|
-
context.setResult(result).exit();
|
|
977
|
-
};
|
|
978
|
-
collectChildrenDiffFilter.filterName = "collectChildren";
|
|
979
|
-
const objectsDiffFilter = context => {
|
|
980
|
-
if (context.leftIsArray || context.leftType !== "object") {
|
|
981
|
-
return;
|
|
982
|
-
}
|
|
983
|
-
const left = context.left;
|
|
984
|
-
const right = context.right;
|
|
985
|
-
let name;
|
|
986
|
-
let child;
|
|
987
|
-
const propertyFilter = context.options.propertyFilter;
|
|
988
|
-
for (name in left) {
|
|
989
|
-
if (!Object.prototype.hasOwnProperty.call(left, name)) {
|
|
990
|
-
continue;
|
|
991
|
-
}
|
|
992
|
-
if (propertyFilter && !propertyFilter(name, context)) {
|
|
993
|
-
continue;
|
|
994
|
-
}
|
|
995
|
-
child = new DiffContext(left[name], right[name]);
|
|
996
|
-
context.push(child, name);
|
|
997
|
-
}
|
|
998
|
-
for (name in right) {
|
|
999
|
-
if (!Object.prototype.hasOwnProperty.call(right, name)) {
|
|
1000
|
-
continue;
|
|
1001
|
-
}
|
|
1002
|
-
if (propertyFilter && !propertyFilter(name, context)) {
|
|
1003
|
-
continue;
|
|
1004
|
-
}
|
|
1005
|
-
if (typeof left[name] === "undefined") {
|
|
1006
|
-
child = new DiffContext(undefined, right[name]);
|
|
1007
|
-
context.push(child, name);
|
|
1008
|
-
}
|
|
1009
|
-
}
|
|
1010
|
-
if (!context.children || context.children.length === 0) {
|
|
1011
|
-
context.setResult(undefined).exit();
|
|
1012
|
-
return;
|
|
1013
|
-
}
|
|
1014
|
-
context.exit();
|
|
1015
|
-
};
|
|
1016
|
-
objectsDiffFilter.filterName = "objects";
|
|
1017
|
-
const patchFilter = function nestedPatchFilter(context) {
|
|
1018
|
-
if (!context.nested) {
|
|
1019
|
-
return;
|
|
1020
|
-
}
|
|
1021
|
-
const nestedDelta = context.delta;
|
|
1022
|
-
if (nestedDelta._t) {
|
|
1023
|
-
return;
|
|
1024
|
-
}
|
|
1025
|
-
const objectDelta = nestedDelta;
|
|
1026
|
-
let name;
|
|
1027
|
-
let child;
|
|
1028
|
-
for (name in objectDelta) {
|
|
1029
|
-
child = new PatchContext(context.left[name], objectDelta[name]);
|
|
1030
|
-
context.push(child, name);
|
|
1031
|
-
}
|
|
1032
|
-
context.exit();
|
|
1033
|
-
};
|
|
1034
|
-
patchFilter.filterName = "objects";
|
|
1035
|
-
const collectChildrenPatchFilter = function collectChildrenPatchFilter(context) {
|
|
1036
|
-
if (!context || !context.children) {
|
|
1037
|
-
return;
|
|
1038
|
-
}
|
|
1039
|
-
const deltaWithChildren = context.delta;
|
|
1040
|
-
if (deltaWithChildren._t) {
|
|
1041
|
-
return;
|
|
1042
|
-
}
|
|
1043
|
-
const object = context.left;
|
|
1044
|
-
const length = context.children.length;
|
|
1045
|
-
let child;
|
|
1046
|
-
for (let index = 0; index < length; index++) {
|
|
1047
|
-
child = context.children[index];
|
|
1048
|
-
const property = child.childName;
|
|
1049
|
-
if (Object.prototype.hasOwnProperty.call(context.left, property) && child.result === undefined) {
|
|
1050
|
-
delete object[property];
|
|
1051
|
-
}
|
|
1052
|
-
else if (object[property] !== child.result) {
|
|
1053
|
-
object[property] = child.result;
|
|
1054
|
-
}
|
|
1055
|
-
}
|
|
1056
|
-
context.setResult(object).exit();
|
|
1057
|
-
};
|
|
1058
|
-
collectChildrenPatchFilter.filterName = "collectChildren";
|
|
1059
|
-
|
|
1060
|
-
const diffFilter = function datesDiffFilter(context) {
|
|
1061
|
-
if (context.left instanceof Date) {
|
|
1062
|
-
if (context.right instanceof Date) {
|
|
1063
|
-
if (context.left.getTime() !== context.right.getTime()) {
|
|
1064
|
-
context.setResult([context.left, context.right]);
|
|
1065
|
-
}
|
|
1066
|
-
else {
|
|
1067
|
-
context.setResult(undefined);
|
|
1068
|
-
}
|
|
1069
|
-
}
|
|
1070
|
-
else {
|
|
1071
|
-
context.setResult([context.left, context.right]);
|
|
1072
|
-
}
|
|
1073
|
-
context.exit();
|
|
1074
|
-
}
|
|
1075
|
-
else if (context.right instanceof Date) {
|
|
1076
|
-
context.setResult([context.left, context.right]).exit();
|
|
1077
|
-
}
|
|
1078
|
-
};
|
|
1079
|
-
diffFilter.filterName = "dates";
|
|
1080
|
-
|
|
1081
|
-
class DiffPatcher {
|
|
1082
|
-
constructor(options) {
|
|
1083
|
-
this.processor = new Processor(options);
|
|
1084
|
-
this.processor.pipe(new Pipe("diff")
|
|
1085
|
-
.append(collectChildrenDiffFilter, diffFilter$1, diffFilter, objectsDiffFilter)
|
|
1086
|
-
.shouldHaveResult());
|
|
1087
|
-
this.processor.pipe(new Pipe("patch")
|
|
1088
|
-
.append(collectChildrenPatchFilter, patchFilter$1, patchFilter)
|
|
1089
|
-
.shouldHaveResult());
|
|
1090
|
-
}
|
|
1091
|
-
options(options) {
|
|
1092
|
-
return this.processor.options(options);
|
|
1093
|
-
}
|
|
1094
|
-
diff(left, right) {
|
|
1095
|
-
return this.processor.process(new DiffContext(left, right));
|
|
1096
|
-
}
|
|
1097
|
-
patch(left, delta) {
|
|
1098
|
-
return this.processor.process(new PatchContext(left, delta));
|
|
1099
|
-
}
|
|
1100
|
-
}
|
|
1101
|
-
|
|
1102
|
-
function create(options) {
|
|
1103
|
-
return new DiffPatcher(options);
|
|
1104
|
-
}
|
|
1105
|
-
|
|
1106
|
-
var __awaiter$1 = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
1107
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
1108
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
1109
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
1110
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
1111
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
1112
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
1113
|
-
});
|
|
1114
|
-
};
|
|
1115
|
-
const diff = create();
|
|
1116
|
-
const defaultConfig = {
|
|
1117
|
-
writeKey: null,
|
|
1118
|
-
host: null,
|
|
1119
|
-
debug: false,
|
|
1120
|
-
fetch: null,
|
|
1121
|
-
echoEvents: false,
|
|
1122
|
-
cookieDomain: undefined,
|
|
1123
|
-
cookieNames: {},
|
|
1124
|
-
cookieCapture: {},
|
|
1125
|
-
runtime: undefined,
|
|
1126
|
-
fetchTimeoutMs: undefined,
|
|
1127
|
-
s2s: undefined,
|
|
1128
|
-
idEndpoint: undefined,
|
|
1129
|
-
errorPolicy: "log",
|
|
1130
|
-
defaultPayloadContext: {},
|
|
1131
|
-
privacy: {
|
|
1132
|
-
dontSend: false,
|
|
1133
|
-
disableUserIds: false,
|
|
1134
|
-
ipPolicy: "keep",
|
|
1135
|
-
consentCategories: {},
|
|
1136
|
-
},
|
|
1137
|
-
};
|
|
1138
|
-
const mergeConfig = (current, newConfig) => {
|
|
1139
|
-
for (const key of Object.keys(defaultConfig)) {
|
|
1140
|
-
const value = newConfig[key];
|
|
1141
|
-
if (key === "privacy") {
|
|
1142
|
-
if (typeof value === "object") {
|
|
1143
|
-
current.privacy = Object.assign(Object.assign(Object.assign(Object.assign({}, defaultConfig.privacy), { consentCategories: Object.assign({}, defaultConfig.privacy.consentCategories) }), current.privacy), value);
|
|
1144
|
-
}
|
|
1145
|
-
else if (typeof value === "undefined") {
|
|
1146
|
-
if (newConfig.hasOwnProperty("privacy") || !current.hasOwnProperty("privacy")) {
|
|
1147
|
-
current.privacy = Object.assign(Object.assign({}, defaultConfig.privacy), { consentCategories: Object.assign({}, defaultConfig.privacy.consentCategories) });
|
|
1148
|
-
}
|
|
1149
|
-
}
|
|
1150
|
-
}
|
|
1151
|
-
else if (typeof value === "undefined") {
|
|
1152
|
-
if (newConfig.hasOwnProperty(key) || !current.hasOwnProperty(key)) {
|
|
1153
|
-
current[key] = defaultConfig[key];
|
|
1154
|
-
}
|
|
1155
|
-
}
|
|
1156
|
-
else {
|
|
1157
|
-
current[key] = value;
|
|
1158
|
-
}
|
|
1159
|
-
}
|
|
1160
|
-
};
|
|
1161
|
-
const parseQuery = (qs) => {
|
|
1162
|
-
if (!qs) {
|
|
1163
|
-
return {};
|
|
1164
|
-
}
|
|
1165
|
-
let queryString = qs.length > 0 && qs.charAt(0) === "?" ? qs.substring(1) : qs;
|
|
1166
|
-
let query = {};
|
|
1167
|
-
let pairs = (queryString[0] === "?" ? queryString.substr(1) : queryString).split("&");
|
|
1168
|
-
for (let i = 0; i < pairs.length; i++) {
|
|
1169
|
-
let pair = pairs[i].split("=");
|
|
1170
|
-
query[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1] || "");
|
|
1171
|
-
}
|
|
1172
|
-
return query;
|
|
1173
|
-
};
|
|
1174
|
-
function utmToKey(key) {
|
|
1175
|
-
const name = key.substring("utm_".length);
|
|
1176
|
-
return name === "campaign" ? "name" : name;
|
|
1177
|
-
}
|
|
1178
|
-
function parseUtms(query) {
|
|
1179
|
-
return Object.entries(query)
|
|
1180
|
-
.filter(([key]) => key.indexOf("utm_") === 0)
|
|
1181
|
-
.reduce((acc, [key, value]) => (Object.assign(Object.assign({}, acc), { [utmToKey(key)]: value })), {});
|
|
1182
|
-
}
|
|
1183
|
-
function safeCall(f, defaultVal) {
|
|
1184
|
-
try {
|
|
1185
|
-
return f();
|
|
1186
|
-
}
|
|
1187
|
-
catch (e) {
|
|
1188
|
-
return defaultVal;
|
|
1189
|
-
}
|
|
1190
|
-
}
|
|
1191
|
-
function restoreTraits(storage) {
|
|
1192
|
-
let val = storage.getItem("__user_traits");
|
|
1193
|
-
if (typeof val === "string") {
|
|
1194
|
-
val = safeCall(() => JSON.parse(val), {});
|
|
1195
|
-
}
|
|
1196
|
-
if (typeof val !== "object" || val === null || Array.isArray(val)) {
|
|
1197
|
-
val = {};
|
|
1198
|
-
}
|
|
1199
|
-
let groupVal = storage.getItem("__group_traits");
|
|
1200
|
-
if (typeof groupVal === "string") {
|
|
1201
|
-
groupVal = safeCall(() => JSON.parse(groupVal), {});
|
|
1202
|
-
}
|
|
1203
|
-
if (typeof groupVal !== "object" || groupVal === null || Array.isArray(groupVal)) {
|
|
1204
|
-
groupVal = {};
|
|
1205
|
-
}
|
|
1206
|
-
return Object.assign(Object.assign({}, (groupVal || {})), (val || {}));
|
|
1207
|
-
}
|
|
1208
|
-
function getCookie(name) {
|
|
1209
|
-
const value = `; ${document.cookie}`;
|
|
1210
|
-
const parts = value.split(`; ${name}=`);
|
|
1211
|
-
return parts.length === 2 ? parts.pop().split(";").shift() : undefined;
|
|
1212
|
-
}
|
|
1213
|
-
function getClientIds(runtime, customCookieCapture) {
|
|
1214
|
-
const cookieCapture = Object.assign({ fbc: "_fbc", fbp: "_fbp" }, customCookieCapture);
|
|
1215
|
-
const clientIds = Object.entries(cookieCapture).reduce((acc, [key, cookieName]) => {
|
|
1216
|
-
acc[key] = runtime.getCookie(cookieName);
|
|
1217
|
-
return acc;
|
|
1218
|
-
}, {});
|
|
1219
|
-
return Object.assign(Object.assign({}, clientIds), getGa4Ids(runtime));
|
|
1220
|
-
}
|
|
1221
|
-
function parseGa4SessionId(cookieValue) {
|
|
1222
|
-
if (typeof cookieValue !== "string") {
|
|
1223
|
-
return undefined;
|
|
1224
|
-
}
|
|
1225
|
-
if (cookieValue.startsWith("GA1") || cookieValue.startsWith("GS1")) {
|
|
1226
|
-
return cookieValue.split(".")[2];
|
|
1227
|
-
}
|
|
1228
|
-
else {
|
|
1229
|
-
const match = cookieValue.match(/^GS\d+\.\d+\.(?:[\w_-]+[$])*s(\d+)(?:$|[$])/);
|
|
1230
|
-
return match ? match[1] : undefined;
|
|
1231
|
-
}
|
|
1232
|
-
}
|
|
1233
|
-
function getGa4Ids(runtime) {
|
|
1234
|
-
var _a;
|
|
1235
|
-
const allCookies = runtime.getCookies();
|
|
1236
|
-
const clientId = (_a = allCookies["_ga"]) === null || _a === void 0 ? void 0 : _a.split(".").slice(-2).join(".");
|
|
1237
|
-
const gaSessionCookies = Object.entries(allCookies).filter(([key]) => key.startsWith("_ga_"));
|
|
1238
|
-
const sessionIds = gaSessionCookies.length > 0
|
|
1239
|
-
? Object.fromEntries(gaSessionCookies
|
|
1240
|
-
.map(([key, value]) => {
|
|
1241
|
-
const sessionId = parseGa4SessionId(value);
|
|
1242
|
-
if (!sessionId) {
|
|
1243
|
-
return null;
|
|
1244
|
-
}
|
|
1245
|
-
return [key.substring("_ga_".length), sessionId];
|
|
1246
|
-
})
|
|
1247
|
-
.filter(v => v !== null))
|
|
1248
|
-
: undefined;
|
|
1249
|
-
if (clientId || sessionIds) {
|
|
1250
|
-
return { ga4: { clientId, sessionIds } };
|
|
1251
|
-
}
|
|
1252
|
-
else {
|
|
1253
|
-
return undefined;
|
|
1254
|
-
}
|
|
1255
|
-
}
|
|
1256
|
-
function removeCookie(name, { domain, secure }) {
|
|
1257
|
-
document.cookie =
|
|
1258
|
-
name +
|
|
1259
|
-
"=;domain=" +
|
|
1260
|
-
domain +
|
|
1261
|
-
";path=/" +
|
|
1262
|
-
";expires=Thu, 01 Jan 1970 00:00:01 GMT;SameSite=" +
|
|
1263
|
-
(secure ? "None" : "Lax") +
|
|
1264
|
-
(secure ? ";secure" : "");
|
|
1265
|
-
}
|
|
1266
|
-
function setCookie(name, val, { domain, secure }) {
|
|
1267
|
-
document.cookie =
|
|
1268
|
-
name +
|
|
1269
|
-
"=" +
|
|
1270
|
-
val +
|
|
1271
|
-
";domain=" +
|
|
1272
|
-
domain +
|
|
1273
|
-
";path=/" +
|
|
1274
|
-
";expires=" +
|
|
1275
|
-
new Date(new Date().getTime() + 1000 * 60 * 60 * 24 * 365 * 5).toUTCString() +
|
|
1276
|
-
";SameSite=" +
|
|
1277
|
-
(secure ? "None" : "Lax") +
|
|
1278
|
-
(secure ? ";secure" : "");
|
|
1279
|
-
}
|
|
1280
|
-
const defaultCookie2Key = {
|
|
1281
|
-
__anon_id: "__eventn_id",
|
|
1282
|
-
__user_id: "__eventn_uid",
|
|
1283
|
-
__user_traits: "__eventn_id_usr",
|
|
1284
|
-
__group_id: "__group_id",
|
|
1285
|
-
__group_traits: "__group_traits",
|
|
1286
|
-
};
|
|
1287
|
-
const cookieStorage = (cookieDomain, key2cookie) => {
|
|
1288
|
-
return {
|
|
1289
|
-
setItem(key, val) {
|
|
1290
|
-
const cookieName = key2cookie(key) || key;
|
|
1291
|
-
if (typeof val === "undefined") {
|
|
1292
|
-
removeCookie(cookieName, {
|
|
1293
|
-
domain: cookieDomain,
|
|
1294
|
-
secure: window.location.protocol === "https:",
|
|
1295
|
-
});
|
|
1296
|
-
return;
|
|
1297
|
-
}
|
|
1298
|
-
const strVal = typeof val === "object" && val !== null ? encodeURIComponent(JSON.stringify(val)) : val;
|
|
1299
|
-
setCookie(cookieName, strVal, {
|
|
1300
|
-
domain: cookieDomain,
|
|
1301
|
-
secure: window.location.protocol === "https:",
|
|
1302
|
-
});
|
|
1303
|
-
},
|
|
1304
|
-
getItem(key) {
|
|
1305
|
-
const cookieName = key2cookie(key) || key;
|
|
1306
|
-
const result = getCookie(cookieName);
|
|
1307
|
-
if (key === "__anon_id") {
|
|
1308
|
-
return result;
|
|
1309
|
-
}
|
|
1310
|
-
if (typeof result === "undefined" && key === "__user_id") {
|
|
1311
|
-
const traits = parse(getCookie(key2cookie("__user_traits") || "__eventn_id_usr")) || {};
|
|
1312
|
-
return traits.internal_id || traits.user_id || traits.id || traits.userId;
|
|
1313
|
-
}
|
|
1314
|
-
return parse(result);
|
|
1315
|
-
},
|
|
1316
|
-
removeItem(key) {
|
|
1317
|
-
removeCookie(key2cookie(key) || key, {
|
|
1318
|
-
domain: cookieDomain,
|
|
1319
|
-
secure: window.location.protocol === "https:",
|
|
1320
|
-
});
|
|
1321
|
-
},
|
|
1322
|
-
reset() {
|
|
1323
|
-
for (const key of Object.keys(defaultCookie2Key)) {
|
|
1324
|
-
removeCookie(key2cookie(key) || key, {
|
|
1325
|
-
domain: cookieDomain,
|
|
1326
|
-
secure: window.location.protocol === "https:",
|
|
1327
|
-
});
|
|
1328
|
-
}
|
|
1329
|
-
},
|
|
1330
|
-
};
|
|
1331
|
-
};
|
|
1332
|
-
function windowRuntime(opts) {
|
|
1333
|
-
const key2Cookie = (key) => {
|
|
1334
|
-
var _a, _b, _c, _d, _e;
|
|
1335
|
-
switch (key) {
|
|
1336
|
-
case "__anon_id":
|
|
1337
|
-
return ((_a = opts.cookieNames) === null || _a === void 0 ? void 0 : _a.anonymousId) || defaultCookie2Key.__anon_id;
|
|
1338
|
-
case "__user_id":
|
|
1339
|
-
return ((_b = opts.cookieNames) === null || _b === void 0 ? void 0 : _b.userId) || defaultCookie2Key.__user_id;
|
|
1340
|
-
case "__user_traits":
|
|
1341
|
-
return ((_c = opts.cookieNames) === null || _c === void 0 ? void 0 : _c.userTraits) || defaultCookie2Key.__user_traits;
|
|
1342
|
-
case "__group_id":
|
|
1343
|
-
return ((_d = opts.cookieNames) === null || _d === void 0 ? void 0 : _d.groupId) || defaultCookie2Key.__group_id;
|
|
1344
|
-
case "__group_traits":
|
|
1345
|
-
return ((_e = opts.cookieNames) === null || _e === void 0 ? void 0 : _e.groupTraits) || defaultCookie2Key.__group_traits;
|
|
1346
|
-
default:
|
|
1347
|
-
return key;
|
|
1348
|
-
}
|
|
1349
|
-
};
|
|
1350
|
-
return {
|
|
1351
|
-
getCookie(name) {
|
|
1352
|
-
const value = `; ${document.cookie}`;
|
|
1353
|
-
const parts = value.split(`; ${name}=`);
|
|
1354
|
-
return parts.length === 2 ? parts.pop().split(";").shift() : undefined;
|
|
1355
|
-
},
|
|
1356
|
-
getCookies() {
|
|
1357
|
-
const value = `; ${document.cookie}`;
|
|
1358
|
-
const cookies = {};
|
|
1359
|
-
const matches = value.matchAll(/(\w+)=([^;]+)/g);
|
|
1360
|
-
for (const match of matches) {
|
|
1361
|
-
cookies[match[1]] = match[2];
|
|
1362
|
-
}
|
|
1363
|
-
return cookies;
|
|
1364
|
-
},
|
|
1365
|
-
documentEncoding() {
|
|
1366
|
-
return window.document.characterSet;
|
|
1367
|
-
},
|
|
1368
|
-
timezoneOffset() {
|
|
1369
|
-
return new Date().getTimezoneOffset();
|
|
1370
|
-
},
|
|
1371
|
-
store() {
|
|
1372
|
-
return cookieStorage(opts.cookieDomain || getTopLevelDomain(window.location.hostname), key2Cookie);
|
|
1373
|
-
},
|
|
1374
|
-
language() {
|
|
1375
|
-
return window.navigator.language;
|
|
1376
|
-
},
|
|
1377
|
-
pageTitle() {
|
|
1378
|
-
return window.document.title;
|
|
1379
|
-
},
|
|
1380
|
-
pageUrl() {
|
|
1381
|
-
return window.location.href;
|
|
1382
|
-
},
|
|
1383
|
-
referrer() {
|
|
1384
|
-
return window.document.referrer;
|
|
1385
|
-
},
|
|
1386
|
-
screen() {
|
|
1387
|
-
return {
|
|
1388
|
-
width: window.screen.width,
|
|
1389
|
-
height: window.screen.height,
|
|
1390
|
-
innerWidth: window.innerWidth,
|
|
1391
|
-
innerHeight: window.innerHeight,
|
|
1392
|
-
density: Math.floor(window.devicePixelRatio),
|
|
1393
|
-
};
|
|
1394
|
-
},
|
|
1395
|
-
userAgent() {
|
|
1396
|
-
return window.navigator.userAgent;
|
|
1397
|
-
},
|
|
1398
|
-
};
|
|
1399
|
-
}
|
|
1400
|
-
function createInMemoryStorage(debug) {
|
|
1401
|
-
const storage = {};
|
|
1402
|
-
return {
|
|
1403
|
-
reset() {
|
|
1404
|
-
Object.keys(storage).forEach(key => delete storage[key]);
|
|
1405
|
-
},
|
|
1406
|
-
setItem(key, val) {
|
|
1407
|
-
if (debug) {
|
|
1408
|
-
console.log(`[JITSU EMPTY RUNTIME] Set storage item ${key}=${JSON.stringify(val)}`);
|
|
1409
|
-
}
|
|
1410
|
-
if (typeof val === "undefined") {
|
|
1411
|
-
delete storage[key];
|
|
1412
|
-
}
|
|
1413
|
-
else {
|
|
1414
|
-
storage[key] = val;
|
|
1415
|
-
}
|
|
1416
|
-
},
|
|
1417
|
-
getItem(key) {
|
|
1418
|
-
const val = storage[key];
|
|
1419
|
-
if (debug) {
|
|
1420
|
-
console.log(`[JITSU EMPTY RUNTIME] Get storage item ${key}=${JSON.stringify(val)}`);
|
|
1421
|
-
}
|
|
1422
|
-
return val;
|
|
1423
|
-
},
|
|
1424
|
-
removeItem(key) {
|
|
1425
|
-
if (debug) {
|
|
1426
|
-
console.log(`[JITSU EMPTY RUNTIME] Get storage item ${key}=${storage[key]}`);
|
|
1427
|
-
}
|
|
1428
|
-
delete storage[key];
|
|
1429
|
-
},
|
|
1430
|
-
};
|
|
1431
|
-
}
|
|
1432
|
-
const emptyRuntime = (config) => ({
|
|
1433
|
-
documentEncoding() {
|
|
1434
|
-
return undefined;
|
|
1435
|
-
},
|
|
1436
|
-
timezoneOffset() {
|
|
1437
|
-
return undefined;
|
|
1438
|
-
},
|
|
1439
|
-
getCookie(name) {
|
|
1440
|
-
return undefined;
|
|
1441
|
-
},
|
|
1442
|
-
getCookies() {
|
|
1443
|
-
return {};
|
|
1444
|
-
},
|
|
1445
|
-
store() {
|
|
1446
|
-
return createInMemoryStorage(config.debug);
|
|
1447
|
-
},
|
|
1448
|
-
language() {
|
|
1449
|
-
return undefined;
|
|
1450
|
-
},
|
|
1451
|
-
pageTitle() {
|
|
1452
|
-
return undefined;
|
|
1453
|
-
},
|
|
1454
|
-
pageUrl() {
|
|
1455
|
-
return undefined;
|
|
1456
|
-
},
|
|
1457
|
-
referrer() {
|
|
1458
|
-
return undefined;
|
|
1459
|
-
},
|
|
1460
|
-
screen() {
|
|
1461
|
-
return undefined;
|
|
1462
|
-
},
|
|
1463
|
-
userAgent() {
|
|
1464
|
-
return undefined;
|
|
1465
|
-
},
|
|
1466
|
-
});
|
|
1467
|
-
function deepCopy(o) {
|
|
1468
|
-
if (typeof o !== "object") {
|
|
1469
|
-
return o;
|
|
1470
|
-
}
|
|
1471
|
-
if (!o) {
|
|
1472
|
-
return o;
|
|
1473
|
-
}
|
|
1474
|
-
return JSON.parse(JSON.stringify(o));
|
|
1475
|
-
}
|
|
1476
|
-
function deepMerge(target, source) {
|
|
1477
|
-
if (typeof source !== "object" || source === null) {
|
|
1478
|
-
return source;
|
|
1479
|
-
}
|
|
1480
|
-
if (typeof target !== "object" || target === null) {
|
|
1481
|
-
return source;
|
|
1482
|
-
}
|
|
1483
|
-
return Object.entries(source).reduce((acc, [key, value]) => {
|
|
1484
|
-
acc[key] = deepMerge(target[key], value);
|
|
1485
|
-
return acc;
|
|
1486
|
-
}, target);
|
|
1487
|
-
}
|
|
1488
|
-
function isInBrowser() {
|
|
1489
|
-
return typeof document !== "undefined" && typeof window !== "undefined";
|
|
1490
|
-
}
|
|
1491
|
-
function fixPath(path) {
|
|
1492
|
-
if (path.indexOf("//") === 0 && path.lastIndexOf("/") === 1) {
|
|
1493
|
-
return "/";
|
|
1494
|
-
}
|
|
1495
|
-
return path;
|
|
1496
|
-
}
|
|
1497
|
-
const hashRegex = /#.*$/;
|
|
1498
|
-
function urlPath(url) {
|
|
1499
|
-
const regex = /(http[s]?:\/\/)?([^\/\s]+\/)(.*)/g;
|
|
1500
|
-
const matches = regex.exec(url);
|
|
1501
|
-
const pathMatch = matches && matches[3] ? matches[3].split("?")[0].replace(hashRegex, "") : "";
|
|
1502
|
-
return "/" + pathMatch;
|
|
1503
|
-
}
|
|
1504
|
-
function canonicalUrl() {
|
|
1505
|
-
if (!isInBrowser())
|
|
1506
|
-
return;
|
|
1507
|
-
const tags = document.getElementsByTagName("link");
|
|
1508
|
-
for (var i = 0, tag; (tag = tags[i]); i++) {
|
|
1509
|
-
if (tag.getAttribute("rel") === "canonical") {
|
|
1510
|
-
return tag.getAttribute("href");
|
|
1511
|
-
}
|
|
1512
|
-
}
|
|
1513
|
-
}
|
|
1514
|
-
function analyticsJsUrl() {
|
|
1515
|
-
if (!isInBrowser())
|
|
1516
|
-
return;
|
|
1517
|
-
const canonical = canonicalUrl();
|
|
1518
|
-
if (!canonical)
|
|
1519
|
-
return window.location.href.replace(hashRegex, "");
|
|
1520
|
-
return canonical.match(/\?/) ? canonical : canonical + window.location.search;
|
|
1521
|
-
}
|
|
1522
|
-
function adjustPayload(payload, config, storage, s2s) {
|
|
1523
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
|
|
1524
|
-
const runtime = config.runtime || (isInBrowser() ? windowRuntime(config) : emptyRuntime(config));
|
|
1525
|
-
const url = runtime.pageUrl();
|
|
1526
|
-
const parsedUrl = safeCall(() => new URL(url), undefined);
|
|
1527
|
-
const query = parsedUrl ? parseQuery(parsedUrl.search) : {};
|
|
1528
|
-
const properties = payload.properties || {};
|
|
1529
|
-
if (payload.type === "page" && (properties.url || url)) {
|
|
1530
|
-
let targetUrl = url || properties.url;
|
|
1531
|
-
if (properties.url && properties.url !== analyticsJsUrl()) {
|
|
1532
|
-
targetUrl = properties.url;
|
|
1533
|
-
}
|
|
1534
|
-
properties.url = targetUrl.replace(hashRegex, "");
|
|
1535
|
-
properties.path = fixPath(urlPath(targetUrl));
|
|
1536
|
-
}
|
|
1537
|
-
const customContext = deepMerge(config.defaultPayloadContext, ((_a = payload.properties) === null || _a === void 0 ? void 0 : _a.context) || ((_b = payload.options) === null || _b === void 0 ? void 0 : _b.context) || {});
|
|
1538
|
-
(_c = payload.properties) === null || _c === void 0 ? true : delete _c.context;
|
|
1539
|
-
const referrer = runtime.referrer();
|
|
1540
|
-
const context = {
|
|
1541
|
-
library: {
|
|
1542
|
-
name: jitsuLibraryName,
|
|
1543
|
-
version: jitsuVersion,
|
|
1544
|
-
env: isInBrowser() ? "browser" : "node",
|
|
1545
|
-
},
|
|
1546
|
-
consent: typeof ((_d = config.privacy) === null || _d === void 0 ? void 0 : _d.consentCategories) === "object" && Object.keys((_e = config.privacy) === null || _e === void 0 ? void 0 : _e.consentCategories).length
|
|
1547
|
-
? {
|
|
1548
|
-
categoryPreferences: config.privacy.consentCategories,
|
|
1549
|
-
}
|
|
1550
|
-
: undefined,
|
|
1551
|
-
userAgent: (_f = runtime.userAgent) === null || _f === void 0 ? void 0 : _f.call(runtime),
|
|
1552
|
-
locale: (_g = runtime.language) === null || _g === void 0 ? void 0 : _g.call(runtime),
|
|
1553
|
-
screen: (_h = runtime.screen) === null || _h === void 0 ? void 0 : _h.call(runtime),
|
|
1554
|
-
ip: (_j = runtime === null || runtime === void 0 ? void 0 : runtime.ip) === null || _j === void 0 ? void 0 : _j.call(runtime),
|
|
1555
|
-
traits: payload.type != "identify" && payload.type != "group"
|
|
1556
|
-
? Object.assign(Object.assign({}, (restoreTraits(storage) || {})), (((_k = payload === null || payload === void 0 ? void 0 : payload.options) === null || _k === void 0 ? void 0 : _k.traits) || {})) : undefined,
|
|
1557
|
-
page: {
|
|
1558
|
-
path: properties.path || (parsedUrl && parsedUrl.pathname),
|
|
1559
|
-
referrer: referrer,
|
|
1560
|
-
referring_domain: safeCall(() => referrer && new URL(referrer).hostname),
|
|
1561
|
-
host: parsedUrl && parsedUrl.host,
|
|
1562
|
-
search: properties.search || (parsedUrl && parsedUrl.search),
|
|
1563
|
-
title: properties.title || runtime.pageTitle(),
|
|
1564
|
-
url: properties.url || url,
|
|
1565
|
-
encoding: properties.encoding || runtime.documentEncoding(),
|
|
1566
|
-
},
|
|
1567
|
-
clientIds: !((_l = config.privacy) === null || _l === void 0 ? void 0 : _l.disableUserIds) ? getClientIds(runtime, config.cookieCapture) : undefined,
|
|
1568
|
-
campaign: parseUtms(query),
|
|
1569
|
-
};
|
|
1570
|
-
const withContext = Object.assign(Object.assign({}, payload), { userId: ((_m = payload === null || payload === void 0 ? void 0 : payload.options) === null || _m === void 0 ? void 0 : _m.userId) || (payload === null || payload === void 0 ? void 0 : payload.userId), anonymousId: ((_o = payload === null || payload === void 0 ? void 0 : payload.options) === null || _o === void 0 ? void 0 : _o.anonymousId) || (payload === null || payload === void 0 ? void 0 : payload.anonymousId), groupId: ((_p = payload === null || payload === void 0 ? void 0 : payload.options) === null || _p === void 0 ? void 0 : _p.groupId) || storage.getItem("__group_id"), timestamp: new Date().toISOString(), sentAt: new Date().toISOString(), messageId: randomId(properties.path || (parsedUrl && parsedUrl.pathname)), writeKey: maskWriteKey(config.writeKey), context: deepMerge(context, customContext) });
|
|
1571
|
-
delete withContext.meta;
|
|
1572
|
-
delete withContext.options;
|
|
1573
|
-
if ((_q = config.privacy) === null || _q === void 0 ? void 0 : _q.disableUserIds) {
|
|
1574
|
-
delete withContext.userId;
|
|
1575
|
-
delete withContext.anonymousId;
|
|
1576
|
-
delete withContext.context.traits;
|
|
1577
|
-
delete withContext.groupId;
|
|
1578
|
-
}
|
|
1579
|
-
return withContext;
|
|
1580
|
-
}
|
|
1581
|
-
function isDiff(obj) {
|
|
1582
|
-
const keys = Object.keys(obj);
|
|
1583
|
-
return keys.length === 1 && keys[0] === "__diff";
|
|
1584
|
-
}
|
|
1585
|
-
function processDestinations(destinations, method, originalEvent, debug, analyticsInstance) {
|
|
1586
|
-
return __awaiter$1(this, void 0, void 0, function* () {
|
|
1587
|
-
const promises = [];
|
|
1588
|
-
for (const destination of destinations) {
|
|
1589
|
-
let newEvents = [];
|
|
1590
|
-
if (destination.newEvents) {
|
|
1591
|
-
try {
|
|
1592
|
-
newEvents = destination.newEvents.map(e => e === "same" ? deepCopy(originalEvent) : isDiff(e) ? diff.patch(deepCopy(originalEvent), e.__diff) : e);
|
|
1593
|
-
}
|
|
1594
|
-
catch (e) {
|
|
1595
|
-
console.error(`[JITSU] Error applying '${destination.id}' changes to event: ${e === null || e === void 0 ? void 0 : e.message}`, e);
|
|
1596
|
-
}
|
|
1597
|
-
}
|
|
1598
|
-
else {
|
|
1599
|
-
newEvents = [deepCopy(originalEvent)];
|
|
1600
|
-
}
|
|
1601
|
-
const credentials = Object.assign(Object.assign({}, destination.credentials), destination.options);
|
|
1602
|
-
if (destination.deviceOptions.type === "internal-plugin") {
|
|
1603
|
-
const plugin = internalDestinationPlugins[destination.deviceOptions.name];
|
|
1604
|
-
if (plugin) {
|
|
1605
|
-
for (const event of newEvents) {
|
|
1606
|
-
try {
|
|
1607
|
-
promises.push(plugin.handle(Object.assign(Object.assign({}, credentials), { debug }), event));
|
|
1608
|
-
}
|
|
1609
|
-
catch (e) {
|
|
1610
|
-
console.warn(`[JITSU] Error processing event with internal plugin '${destination.deviceOptions.name}': ${e === null || e === void 0 ? void 0 : e.message}`, e);
|
|
1611
|
-
}
|
|
1612
|
-
}
|
|
1613
|
-
}
|
|
1614
|
-
else {
|
|
1615
|
-
console.warn(`[JITSU] Unknown internal plugin '${destination.deviceOptions.name}' for destination '${destination.id}'`);
|
|
1616
|
-
}
|
|
1617
|
-
}
|
|
1618
|
-
else if (destination.deviceOptions.type === "analytics-plugin") {
|
|
1619
|
-
yield loadScript(destination.deviceOptions.packageCdn);
|
|
1620
|
-
const plugin = window[destination.deviceOptions.moduleVarName];
|
|
1621
|
-
if (!plugin) {
|
|
1622
|
-
console.warn(`[JITSU] Broken plugin '${destination.deviceOptions.packageCdn}' for destination '${destination.id}' - it doesn't export '${destination.deviceOptions.moduleVarName}' variable`);
|
|
1623
|
-
}
|
|
1624
|
-
else {
|
|
1625
|
-
let pluginInstance;
|
|
1626
|
-
try {
|
|
1627
|
-
pluginInstance = (typeof plugin === "function" ? plugin : plugin.init)(credentials);
|
|
1628
|
-
}
|
|
1629
|
-
catch (e) {
|
|
1630
|
-
console.warn(`[JITSU] Error creating plugin '${destination.deviceOptions.moduleVarName}@${destination.deviceOptions.packageCdn}' for destination '${destination.id}': ${e === null || e === void 0 ? void 0 : e.message}`, e);
|
|
1631
|
-
}
|
|
1632
|
-
try {
|
|
1633
|
-
if (debug) {
|
|
1634
|
-
console.log(`[JITSU] Plugin '${destination.deviceOptions.moduleVarName}@${destination.deviceOptions.packageCdn}' for destination '${destination.id}' initialized with config:`, pluginInstance.config);
|
|
1635
|
-
}
|
|
1636
|
-
pluginInstance.initialize({ config: pluginInstance.config, instance: analyticsInstance });
|
|
1637
|
-
}
|
|
1638
|
-
catch (e) {
|
|
1639
|
-
console.warn(`[JITSU] Error initializing plugin '${destination.deviceOptions.moduleVarName}@${destination.deviceOptions.packageCdn}' for destination '${destination.id}': ${e === null || e === void 0 ? void 0 : e.message}. Config: ${JSON.stringify(pluginInstance.config)}`, e);
|
|
1640
|
-
continue;
|
|
1641
|
-
}
|
|
1642
|
-
if (pluginInstance[method]) {
|
|
1643
|
-
for (const event of newEvents) {
|
|
1644
|
-
try {
|
|
1645
|
-
pluginInstance[method]({
|
|
1646
|
-
payload: event,
|
|
1647
|
-
config: pluginInstance.config,
|
|
1648
|
-
instance: analyticsInstance,
|
|
1649
|
-
});
|
|
1650
|
-
}
|
|
1651
|
-
catch (e) {
|
|
1652
|
-
console.warn(`[JITSU] Error processing ${method}() with plugin '${destination.deviceOptions.moduleVarName}@${destination.deviceOptions.packageCdn}' for destination '${destination.id}': ${e === null || e === void 0 ? void 0 : e.message}`, e);
|
|
1653
|
-
}
|
|
1654
|
-
}
|
|
1655
|
-
}
|
|
1656
|
-
}
|
|
1657
|
-
}
|
|
1658
|
-
}
|
|
1659
|
-
});
|
|
1660
|
-
}
|
|
1661
|
-
function looksLikeCuid(id) {
|
|
1662
|
-
return id.length === 25 && id.charAt(0) === "c";
|
|
1663
|
-
}
|
|
1664
|
-
function validateWriteKey(writeKey) {
|
|
1665
|
-
if (writeKey) {
|
|
1666
|
-
const [, secret] = writeKey.split(":", 2);
|
|
1667
|
-
if (!secret && !looksLikeCuid(writeKey)) {
|
|
1668
|
-
throw new Error(`Legacy write key detected - ${writeKey}! This format doesn't work anymore, it should be 'key:secret'. Please download a new key from Jitsu UI`);
|
|
1669
|
-
}
|
|
1670
|
-
}
|
|
1671
|
-
return writeKey;
|
|
1672
|
-
}
|
|
1673
|
-
function maskWriteKey(writeKey) {
|
|
1674
|
-
if (writeKey) {
|
|
1675
|
-
const [id, secret] = writeKey.split(":", 2);
|
|
1676
|
-
if (secret) {
|
|
1677
|
-
return `${id}:***`;
|
|
1678
|
-
}
|
|
1679
|
-
else {
|
|
1680
|
-
return "***";
|
|
1681
|
-
}
|
|
1682
|
-
}
|
|
1683
|
-
return writeKey;
|
|
1684
|
-
}
|
|
1685
|
-
function getErrorHandler(opts) {
|
|
1686
|
-
const configuredHandler = opts.errorPolicy || "log";
|
|
1687
|
-
if (typeof configuredHandler === "function") {
|
|
1688
|
-
return configuredHandler;
|
|
1689
|
-
}
|
|
1690
|
-
else if (configuredHandler === "rethrow") {
|
|
1691
|
-
return (msg, ...args) => {
|
|
1692
|
-
throw new Error(msg);
|
|
1693
|
-
};
|
|
1694
|
-
}
|
|
1695
|
-
else {
|
|
1696
|
-
return (msg, ...args) => {
|
|
1697
|
-
console.error(msg, ...args);
|
|
1698
|
-
};
|
|
1699
|
-
}
|
|
1700
|
-
}
|
|
1701
|
-
function send(method, payload, jitsuConfig, instance, store) {
|
|
1702
|
-
return __awaiter$1(this, void 0, void 0, function* () {
|
|
1703
|
-
var _a, _b;
|
|
1704
|
-
const s2s = !!jitsuConfig.s2s;
|
|
1705
|
-
const debugHeader = jitsuConfig.debug ? { "X-Enable-Debug": "true" } : {};
|
|
1706
|
-
const adjustedPayload = adjustPayload(payload, jitsuConfig, store);
|
|
1707
|
-
if (jitsuConfig.echoEvents) {
|
|
1708
|
-
console.log(`[JITSU DEBUG] sending '${method}' event:`, adjustedPayload);
|
|
1709
|
-
return;
|
|
1710
|
-
}
|
|
1711
|
-
const url = s2s ? `${jitsuConfig.host}/api/s/s2s/${method}` : `${jitsuConfig.host}/api/s/${method}`;
|
|
1712
|
-
const fetch = jitsuConfig.fetch || globalThis.fetch;
|
|
1713
|
-
if (!fetch) {
|
|
1714
|
-
throw new Error("Please specify fetch function in jitsu plugin initialization, fetch isn't available in global scope");
|
|
1715
|
-
}
|
|
1716
|
-
const abortController = jitsuConfig.fetchTimeoutMs ? new AbortController() : undefined;
|
|
1717
|
-
const abortTimeout = jitsuConfig.fetchTimeoutMs
|
|
1718
|
-
? setTimeout(() => {
|
|
1719
|
-
abortController.abort();
|
|
1720
|
-
}, jitsuConfig.fetchTimeoutMs)
|
|
1721
|
-
: undefined;
|
|
1722
|
-
const authHeader = jitsuConfig.writeKey ? { "X-Write-Key": jitsuConfig.writeKey } : {};
|
|
1723
|
-
const ipHeader = typeof ((_a = jitsuConfig.privacy) === null || _a === void 0 ? void 0 : _a.ipPolicy) === "undefined" || ((_b = jitsuConfig.privacy) === null || _b === void 0 ? void 0 : _b.ipPolicy) === "keep"
|
|
1724
|
-
? {}
|
|
1725
|
-
: { "X-IP-Policy": jitsuConfig.privacy.ipPolicy };
|
|
1726
|
-
let fetchResult;
|
|
1727
|
-
try {
|
|
1728
|
-
fetchResult = yield fetch(url, {
|
|
1729
|
-
method: "POST",
|
|
1730
|
-
headers: Object.assign(Object.assign(Object.assign({ "Content-Type": "application/json" }, authHeader), debugHeader), ipHeader),
|
|
1731
|
-
body: JSON.stringify(adjustedPayload),
|
|
1732
|
-
signal: abortController === null || abortController === void 0 ? void 0 : abortController.signal,
|
|
1733
|
-
});
|
|
1734
|
-
if (abortTimeout) {
|
|
1735
|
-
clearTimeout(abortTimeout);
|
|
1736
|
-
}
|
|
1737
|
-
}
|
|
1738
|
-
catch (e) {
|
|
1739
|
-
getErrorHandler(jitsuConfig)(`Call to ${url} failed with error ${e.message}`);
|
|
1740
|
-
return Promise.resolve();
|
|
1741
|
-
}
|
|
1742
|
-
let responseText;
|
|
1743
|
-
try {
|
|
1744
|
-
responseText = yield fetchResult.text();
|
|
1745
|
-
}
|
|
1746
|
-
catch (e) {
|
|
1747
|
-
console.warn(`Can't read response text from ${url} (status - ${fetchResult.status} ${fetchResult.statusText}): ${e === null || e === void 0 ? void 0 : e.message}`);
|
|
1748
|
-
}
|
|
1749
|
-
if (jitsuConfig.debug) {
|
|
1750
|
-
console.log(`[JITSU DEBUG] ${url} replied ${fetchResult.status}: ${responseText}. Original payload:\n${JSON.stringify(adjustedPayload, null, 2)}`);
|
|
1751
|
-
}
|
|
1752
|
-
if (!fetchResult.ok) {
|
|
1753
|
-
getErrorHandler(jitsuConfig)(`Call to ${url} failed with error: ${fetchResult.status} - ${fetchResult.statusText}: ${responseText}`);
|
|
1754
|
-
return Promise.resolve();
|
|
1755
|
-
}
|
|
1756
|
-
let responseJson;
|
|
1757
|
-
try {
|
|
1758
|
-
responseJson = JSON.parse(responseText);
|
|
1759
|
-
}
|
|
1760
|
-
catch (e) {
|
|
1761
|
-
getErrorHandler(jitsuConfig)(`Can't parse JSON: ${responseText}: ${e === null || e === void 0 ? void 0 : e.message}`);
|
|
1762
|
-
return Promise.resolve();
|
|
1763
|
-
}
|
|
1764
|
-
if (responseJson.destinations && responseJson.destinations.length > 0) {
|
|
1765
|
-
if (jitsuConfig.s2s) {
|
|
1766
|
-
console.warn(`[JITSU] ${payload.type} responded with list of ${responseJson.destinations.length} destinations. However, this code is running in server-to-server mode, so destinations will be ignored`, jitsuConfig.debug ? JSON.stringify(responseJson.destinations, null, 2) : undefined);
|
|
1767
|
-
}
|
|
1768
|
-
else {
|
|
1769
|
-
if (isInBrowser()) {
|
|
1770
|
-
if (jitsuConfig.debug) {
|
|
1771
|
-
console.log(`[JITSU] Processing device destinations: `, JSON.stringify(responseJson.destinations, null, 2));
|
|
1772
|
-
}
|
|
1773
|
-
return processDestinations(responseJson.destinations, method, adjustedPayload, !!jitsuConfig.debug, instance);
|
|
1774
|
-
}
|
|
1775
|
-
}
|
|
1776
|
-
}
|
|
1777
|
-
return adjustedPayload;
|
|
1778
|
-
});
|
|
1779
|
-
}
|
|
1780
|
-
const controllingTraits = ["$doNotSend"];
|
|
1781
|
-
function stripControllingTraits(traits) {
|
|
1782
|
-
const res = Object.assign({}, traits);
|
|
1783
|
-
for (const key of controllingTraits) {
|
|
1784
|
-
delete res[key];
|
|
1785
|
-
}
|
|
1786
|
-
return res;
|
|
1787
|
-
}
|
|
1788
|
-
const jitsuAnalyticsPlugin = (jitsuOptions = {}, storage) => {
|
|
1789
|
-
mergeConfig(jitsuOptions, jitsuOptions);
|
|
1790
|
-
return {
|
|
1791
|
-
name: "jitsu",
|
|
1792
|
-
config: jitsuOptions,
|
|
1793
|
-
initialize: (args) => __awaiter$1(void 0, void 0, void 0, function* () {
|
|
1794
|
-
const { config } = args;
|
|
1795
|
-
if (config.debug) {
|
|
1796
|
-
console.debug("[JITSU DEBUG] Initializing Jitsu plugin with config: ", JSON.stringify(config, null, 2));
|
|
1797
|
-
}
|
|
1798
|
-
if (!config.host && !config.echoEvents) {
|
|
1799
|
-
throw new Error("Please specify host variable in jitsu plugin initialization, or set echoEvents to true");
|
|
1800
|
-
}
|
|
1801
|
-
validateWriteKey(config.writeKey);
|
|
1802
|
-
if (config.idEndpoint) {
|
|
1803
|
-
if (!isInBrowser()) {
|
|
1804
|
-
console.error(`[JITSU] 'idEndpoint' option can be used only in browser environment`);
|
|
1805
|
-
return;
|
|
1806
|
-
}
|
|
1807
|
-
try {
|
|
1808
|
-
const fetch = config.fetch || globalThis.fetch;
|
|
1809
|
-
const controller = new AbortController();
|
|
1810
|
-
setTimeout(() => controller.abort(), 1000);
|
|
1811
|
-
const domain = config.cookieDomain || getTopLevelDomain(window.location.hostname);
|
|
1812
|
-
const res = yield fetch(config.idEndpoint + "?domain=" + encodeURIComponent(domain), {
|
|
1813
|
-
credentials: "include",
|
|
1814
|
-
signal: controller.signal,
|
|
1815
|
-
});
|
|
1816
|
-
if (!res.ok) {
|
|
1817
|
-
console.error(`[JITSU] Can't fetch idEndpoint: ${res.status} - ${res.statusText}`);
|
|
1818
|
-
}
|
|
1819
|
-
else if (config.debug) {
|
|
1820
|
-
console.log(`[JITSU DEBUG] Fetch idEndpoint: ${res.status}`);
|
|
1821
|
-
}
|
|
1822
|
-
}
|
|
1823
|
-
catch (e) {
|
|
1824
|
-
console.error(`[JITSU] Can't fetch idEndpoint: ${e.message}`);
|
|
1825
|
-
}
|
|
1826
|
-
}
|
|
1827
|
-
}),
|
|
1828
|
-
page: args => {
|
|
1829
|
-
var _a;
|
|
1830
|
-
const { payload, config, instance } = args;
|
|
1831
|
-
if ((_a = config.privacy) === null || _a === void 0 ? void 0 : _a.dontSend) {
|
|
1832
|
-
return;
|
|
1833
|
-
}
|
|
1834
|
-
return send("page", payload, config, instance, storage);
|
|
1835
|
-
},
|
|
1836
|
-
track: args => {
|
|
1837
|
-
var _a;
|
|
1838
|
-
const { payload, config, instance } = args;
|
|
1839
|
-
if ((_a = config.privacy) === null || _a === void 0 ? void 0 : _a.dontSend) {
|
|
1840
|
-
return;
|
|
1841
|
-
}
|
|
1842
|
-
return send("track", payload, config, instance, storage);
|
|
1843
|
-
},
|
|
1844
|
-
identify: args => {
|
|
1845
|
-
var _a, _b, _c;
|
|
1846
|
-
const { payload, config, instance } = args;
|
|
1847
|
-
if (((_a = config.privacy) === null || _a === void 0 ? void 0 : _a.dontSend) || ((_b = config.privacy) === null || _b === void 0 ? void 0 : _b.disableUserIds)) {
|
|
1848
|
-
return;
|
|
1849
|
-
}
|
|
1850
|
-
storage.setItem("__user_id", payload.userId);
|
|
1851
|
-
const doNotSend = (_c = payload.traits) === null || _c === void 0 ? void 0 : _c.$doNotSend;
|
|
1852
|
-
if (payload.traits && typeof payload.traits === "object") {
|
|
1853
|
-
payload.traits = stripControllingTraits(payload.traits);
|
|
1854
|
-
storage.setItem("__user_traits", payload.traits);
|
|
1855
|
-
}
|
|
1856
|
-
if (doNotSend) {
|
|
1857
|
-
return Promise.resolve();
|
|
1858
|
-
}
|
|
1859
|
-
return send("identify", payload, config, instance, storage);
|
|
1860
|
-
},
|
|
1861
|
-
reset: args => {
|
|
1862
|
-
const { config, instance } = args;
|
|
1863
|
-
storage.reset();
|
|
1864
|
-
if (config.debug) {
|
|
1865
|
-
console.log("[JITSU DEBUG] Resetting Jitsu plugin storage");
|
|
1866
|
-
}
|
|
1867
|
-
},
|
|
1868
|
-
methods: {
|
|
1869
|
-
configure(newOptions) {
|
|
1870
|
-
var _a, _b, _c, _d;
|
|
1871
|
-
const idsWasDisabled = ((_a = jitsuOptions.privacy) === null || _a === void 0 ? void 0 : _a.disableUserIds) || ((_b = jitsuOptions.privacy) === null || _b === void 0 ? void 0 : _b.dontSend);
|
|
1872
|
-
mergeConfig(jitsuOptions, newOptions);
|
|
1873
|
-
const idsDisabledNow = ((_c = jitsuOptions.privacy) === null || _c === void 0 ? void 0 : _c.disableUserIds) || ((_d = jitsuOptions.privacy) === null || _d === void 0 ? void 0 : _d.dontSend);
|
|
1874
|
-
if (!idsDisabledNow && idsWasDisabled) {
|
|
1875
|
-
if (jitsuOptions.debug) {
|
|
1876
|
-
console.log("[JITSU] Enabling Anonymous ID. Generating new Id.");
|
|
1877
|
-
}
|
|
1878
|
-
const instance = this.instance;
|
|
1879
|
-
const newAnonymousId = uuid();
|
|
1880
|
-
const userState = instance.user();
|
|
1881
|
-
if (userState) {
|
|
1882
|
-
userState.anonymousId = newAnonymousId;
|
|
1883
|
-
}
|
|
1884
|
-
storage.setItem("__anon_id", newAnonymousId);
|
|
1885
|
-
instance.setAnonymousId(newAnonymousId);
|
|
1886
|
-
}
|
|
1887
|
-
},
|
|
1888
|
-
group(groupId, traits, options, callback) {
|
|
1889
|
-
var _a, _b;
|
|
1890
|
-
if (((_a = jitsuOptions.privacy) === null || _a === void 0 ? void 0 : _a.dontSend) || ((_b = jitsuOptions.privacy) === null || _b === void 0 ? void 0 : _b.disableUserIds)) {
|
|
1891
|
-
return;
|
|
1892
|
-
}
|
|
1893
|
-
if (typeof groupId === "number") {
|
|
1894
|
-
groupId = groupId + "";
|
|
1895
|
-
}
|
|
1896
|
-
const instance = this.instance;
|
|
1897
|
-
const user = instance.user();
|
|
1898
|
-
const userId = (options === null || options === void 0 ? void 0 : options.userId) || (user === null || user === void 0 ? void 0 : user.userId);
|
|
1899
|
-
const anonymousId = (options === null || options === void 0 ? void 0 : options.anonymousId) || (user === null || user === void 0 ? void 0 : user.anonymousId) || storage.getItem("__anon_id");
|
|
1900
|
-
storage.setItem("__group_id", groupId);
|
|
1901
|
-
const doNotSend = traits === null || traits === void 0 ? void 0 : traits.$doNotSend;
|
|
1902
|
-
if (traits && typeof traits === "object") {
|
|
1903
|
-
traits = stripControllingTraits(traits);
|
|
1904
|
-
storage.setItem("__group_traits", traits);
|
|
1905
|
-
}
|
|
1906
|
-
if (doNotSend) {
|
|
1907
|
-
return Promise.resolve();
|
|
1908
|
-
}
|
|
1909
|
-
return send("group", Object.assign(Object.assign({ type: "group", groupId, traits }, (anonymousId ? { anonymousId } : {})), (userId ? { userId } : {})), jitsuOptions, instance, storage);
|
|
1910
|
-
},
|
|
1911
|
-
},
|
|
1912
|
-
};
|
|
1913
|
-
};
|
|
1914
|
-
let seedCounter = 0;
|
|
1915
|
-
function getSeed() {
|
|
1916
|
-
var _a;
|
|
1917
|
-
seedCounter = (seedCounter + 1) % Number.MAX_SAFE_INTEGER;
|
|
1918
|
-
const defaultSeed = Date.now() % 2147483647;
|
|
1919
|
-
const seed = isInBrowser() ? ((_a = window === null || window === void 0 ? void 0 : window.performance) === null || _a === void 0 ? void 0 : _a.now()) || defaultSeed : defaultSeed;
|
|
1920
|
-
return seed + seedCounter;
|
|
1921
|
-
}
|
|
1922
|
-
function randomId(hashString = "") {
|
|
1923
|
-
const d = Date.now();
|
|
1924
|
-
return (((Math.random() * d * hash(hashString !== null && hashString !== void 0 ? hashString : "", getSeed())) % Number.MAX_SAFE_INTEGER).toString(36) +
|
|
1925
|
-
((Math.random() * d * hash(hashString !== null && hashString !== void 0 ? hashString : "", getSeed())) % Number.MAX_SAFE_INTEGER).toString(36));
|
|
1926
|
-
}
|
|
1927
|
-
function uuid() {
|
|
1928
|
-
var u = "", m = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx", i = 0, rb = (Math.random() * 0xffffffff) | 0;
|
|
1929
|
-
while (i++ < 36) {
|
|
1930
|
-
var c = m[i - 1], r = rb & 0xf, v = c == "x" ? r : (r & 0x3) | 0x8;
|
|
1931
|
-
u += c == "-" || c == "4" ? c : v.toString(16);
|
|
1932
|
-
rb = i % 8 == 0 ? (Math.random() * 0xffffffff) | 0 : rb >> 4;
|
|
1933
|
-
}
|
|
1934
|
-
return u;
|
|
1935
|
-
}
|
|
1936
|
-
function hash(str, seed = 0) {
|
|
1937
|
-
let h1 = 0xdeadbeef ^ seed, h2 = 0x41c6ce57 ^ seed;
|
|
1938
|
-
for (let i = 0, ch; i < str.length; i++) {
|
|
1939
|
-
ch = str.charCodeAt(i);
|
|
1940
|
-
h1 = Math.imul(h1 ^ ch, 2654435761);
|
|
1941
|
-
h2 = Math.imul(h2 ^ ch, 1597334677);
|
|
1942
|
-
}
|
|
1943
|
-
h1 = Math.imul(h1 ^ (h1 >>> 16), 2246822507) ^ Math.imul(h2 ^ (h2 >>> 13), 3266489909);
|
|
1944
|
-
h2 = Math.imul(h2 ^ (h2 >>> 16), 2246822507) ^ Math.imul(h1 ^ (h1 >>> 13), 3266489909);
|
|
1945
|
-
return 4294967296 * (2097151 & h2) + (h1 >>> 0);
|
|
1946
|
-
}
|
|
1947
|
-
|
|
1948
|
-
var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
1949
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
1950
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
1951
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
1952
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
1953
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
1954
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
1955
|
-
});
|
|
1956
|
-
};
|
|
1957
|
-
function parse(input) {
|
|
1958
|
-
let value = input;
|
|
1959
|
-
if ((input === null || input === void 0 ? void 0 : input.indexOf("%7B%22")) === 0) {
|
|
1960
|
-
value = decodeURIComponent(input);
|
|
1961
|
-
}
|
|
1962
|
-
try {
|
|
1963
|
-
value = JSON.parse(value);
|
|
1964
|
-
if (value === "true")
|
|
1965
|
-
return true;
|
|
1966
|
-
if (value === "false")
|
|
1967
|
-
return false;
|
|
1968
|
-
if (typeof value === "object")
|
|
1969
|
-
return value;
|
|
1970
|
-
if (parseFloat(value) === value) {
|
|
1971
|
-
value = parseFloat(value);
|
|
1972
|
-
}
|
|
1973
|
-
}
|
|
1974
|
-
catch (e) { }
|
|
1975
|
-
if (value === null || value === "") {
|
|
1976
|
-
return;
|
|
1977
|
-
}
|
|
1978
|
-
return value;
|
|
1979
|
-
}
|
|
1980
|
-
function createUnderlyingAnalyticsInstance(opts, rt, plugins = []) {
|
|
1981
|
-
var _a, _b, _c;
|
|
1982
|
-
const storageCache = {};
|
|
1983
|
-
const cachingStorageWrapper = (persistentStorage) => ({
|
|
1984
|
-
setItem(key, val) {
|
|
1985
|
-
var _a, _b;
|
|
1986
|
-
if (((_a = opts.privacy) === null || _a === void 0 ? void 0 : _a.dontSend) || ((_b = opts.privacy) === null || _b === void 0 ? void 0 : _b.disableUserIds)) {
|
|
1987
|
-
return;
|
|
1988
|
-
}
|
|
1989
|
-
if (opts.debug) {
|
|
1990
|
-
console.log(`[JITSU DEBUG] Caching storage setItem: ${key}=${val}`);
|
|
1991
|
-
}
|
|
1992
|
-
storageCache[key] = val;
|
|
1993
|
-
persistentStorage.setItem(key, val);
|
|
1994
|
-
},
|
|
1995
|
-
getItem(key) {
|
|
1996
|
-
var _a, _b;
|
|
1997
|
-
if (((_a = opts.privacy) === null || _a === void 0 ? void 0 : _a.dontSend) || ((_b = opts.privacy) === null || _b === void 0 ? void 0 : _b.disableUserIds)) {
|
|
1998
|
-
return;
|
|
1999
|
-
}
|
|
2000
|
-
const value = storageCache[key] || persistentStorage.getItem(key);
|
|
2001
|
-
if (opts.debug) {
|
|
2002
|
-
console.log(`[JITSU DEBUG] Caching storage getItem: ${key}=${value}. Evicted from cache: ${!storageCache[key]}`);
|
|
2003
|
-
}
|
|
2004
|
-
return value;
|
|
2005
|
-
},
|
|
2006
|
-
reset() {
|
|
2007
|
-
for (const key of [...Object.keys(storageCache)]) {
|
|
2008
|
-
delete storageCache[key];
|
|
2009
|
-
}
|
|
2010
|
-
persistentStorage.reset();
|
|
2011
|
-
},
|
|
2012
|
-
removeItem(key) {
|
|
2013
|
-
if (opts.debug) {
|
|
2014
|
-
console.log(`[JITSU DEBUG] Caching storage removeItem: ${key}`);
|
|
2015
|
-
}
|
|
2016
|
-
delete storageCache[key];
|
|
2017
|
-
persistentStorage.removeItem(key);
|
|
2018
|
-
},
|
|
2019
|
-
});
|
|
2020
|
-
const storage = cachingStorageWrapper(((_a = rt.store) === null || _a === void 0 ? void 0 : _a.call(rt)) || createInMemoryStorage(opts.debug));
|
|
2021
|
-
const analytics = analyticsLib({
|
|
2022
|
-
debug: !!opts.debug,
|
|
2023
|
-
storage,
|
|
2024
|
-
plugins: [jitsuAnalyticsPlugin(opts, storage), ...plugins],
|
|
2025
|
-
});
|
|
2026
|
-
const a = Object.assign(Object.assign({}, analytics), { page: (...args) => {
|
|
2027
|
-
if (args.length === 2 && typeof args[0] === "string" && typeof args[1] === "object") {
|
|
2028
|
-
return analytics.page(Object.assign({ name: args[0] }, args[1]));
|
|
2029
|
-
}
|
|
2030
|
-
else {
|
|
2031
|
-
return analytics.page(...args);
|
|
2032
|
-
}
|
|
2033
|
-
}, identify: (...args) => {
|
|
2034
|
-
if (args[0] && typeof args[0] !== "object" && typeof args[0] !== "string") {
|
|
2035
|
-
args[0] = args[0] + "";
|
|
2036
|
-
}
|
|
2037
|
-
const storage = analytics.storage;
|
|
2038
|
-
const storageWrapper = cachingStorageWrapper(storage);
|
|
2039
|
-
if (typeof args[0] === "string") {
|
|
2040
|
-
storageWrapper.setItem("__user_id", args[0]);
|
|
2041
|
-
}
|
|
2042
|
-
else if (typeof args[0] === "object") {
|
|
2043
|
-
storageWrapper.setItem("__user_traits", args[0]);
|
|
2044
|
-
}
|
|
2045
|
-
if (args.length === 2 && typeof args[1] === "object") {
|
|
2046
|
-
storageWrapper.setItem("__user_traits", args[1]);
|
|
2047
|
-
}
|
|
2048
|
-
return analytics.identify(...args);
|
|
2049
|
-
}, setContextProperty(name, value) {
|
|
2050
|
-
if (opts.debug) {
|
|
2051
|
-
console.log(`[JITSU DEBUG] Setting context property '${name}':${JSON.stringify(value)}`);
|
|
2052
|
-
}
|
|
2053
|
-
if (!opts.defaultPayloadContext) {
|
|
2054
|
-
opts.defaultPayloadContext = {
|
|
2055
|
-
[name]: value,
|
|
2056
|
-
};
|
|
2057
|
-
}
|
|
2058
|
-
else {
|
|
2059
|
-
opts.defaultPayloadContext[name] = value;
|
|
2060
|
-
}
|
|
2061
|
-
},
|
|
2062
|
-
getContextProperty(name) {
|
|
2063
|
-
var _a;
|
|
2064
|
-
if (opts.debug) {
|
|
2065
|
-
console.log(`[JITSU DEBUG] Getting context property '${name}'`);
|
|
2066
|
-
}
|
|
2067
|
-
return (_a = opts.defaultPayloadContext) === null || _a === void 0 ? void 0 : _a[name];
|
|
2068
|
-
}, setAnonymousId: (id) => {
|
|
2069
|
-
if (opts.debug) {
|
|
2070
|
-
console.log("[JITSU DEBUG] Setting anonymous id to " + id);
|
|
2071
|
-
}
|
|
2072
|
-
storage.setItem("__anon_id", id);
|
|
2073
|
-
const userState = analytics.user();
|
|
2074
|
-
if (userState) {
|
|
2075
|
-
userState.anonymousId = id;
|
|
2076
|
-
}
|
|
2077
|
-
analytics.setAnonymousId(id);
|
|
2078
|
-
}, reset() {
|
|
2079
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
2080
|
-
if (opts.debug) {
|
|
2081
|
-
console.log("[JITSU DEBUG] Called reset(). Storage state", JSON.stringify(analytics.user()));
|
|
2082
|
-
}
|
|
2083
|
-
storage.reset();
|
|
2084
|
-
yield analytics.reset();
|
|
2085
|
-
this.setAnonymousId(uuid());
|
|
2086
|
-
if (opts.debug) {
|
|
2087
|
-
console.log("[JITSU DEBUG] User state after reset", JSON.stringify(analytics.user()));
|
|
2088
|
-
}
|
|
2089
|
-
});
|
|
2090
|
-
},
|
|
2091
|
-
configure(options) {
|
|
2092
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
2093
|
-
var _a, _b;
|
|
2094
|
-
if (opts.debug) {
|
|
2095
|
-
console.log("[JITSU DEBUG] Update Jitsu config with", JSON.stringify(options));
|
|
2096
|
-
}
|
|
2097
|
-
if (((_a = options.privacy) === null || _a === void 0 ? void 0 : _a.disableUserIds) || ((_b = options.privacy) === null || _b === void 0 ? void 0 : _b.dontSend)) {
|
|
2098
|
-
storage.reset();
|
|
2099
|
-
}
|
|
2100
|
-
for (const plugin of Object.values(analytics.plugins)) {
|
|
2101
|
-
if (typeof plugin["configure"] === "function") {
|
|
2102
|
-
plugin["configure"](options);
|
|
2103
|
-
}
|
|
2104
|
-
}
|
|
2105
|
-
});
|
|
2106
|
-
},
|
|
2107
|
-
group(groupId, traits, options, callback) {
|
|
2108
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
2109
|
-
const results = [];
|
|
2110
|
-
for (const plugin of Object.values(analytics.plugins)) {
|
|
2111
|
-
if (plugin["group"]) {
|
|
2112
|
-
results.push(yield plugin["group"](groupId, traits, options, callback));
|
|
2113
|
-
}
|
|
2114
|
-
}
|
|
2115
|
-
return results[0];
|
|
2116
|
-
});
|
|
2117
|
-
},
|
|
2118
|
-
getConfiguration() {
|
|
2119
|
-
return opts;
|
|
2120
|
-
} });
|
|
2121
|
-
if (((_b = opts.privacy) === null || _b === void 0 ? void 0 : _b.disableUserIds) || ((_c = opts.privacy) === null || _c === void 0 ? void 0 : _c.dontSend)) {
|
|
2122
|
-
storage.reset();
|
|
2123
|
-
}
|
|
2124
|
-
return a;
|
|
2125
|
-
}
|
|
2126
|
-
function fixOptions(opts) {
|
|
2127
|
-
var _a, _b;
|
|
2128
|
-
return Object.assign(Object.assign({}, opts), { host: ((_a = opts.host) !== null && _a !== void 0 ? _a : "").indexOf("https://") !== 0 && ((_b = opts.host) !== null && _b !== void 0 ? _b : "").indexOf("http://") !== 0
|
|
2129
|
-
? `https://${opts.host}`
|
|
2130
|
-
: opts.host });
|
|
2131
|
-
}
|
|
2132
|
-
function jitsuAnalytics(_opts) {
|
|
2133
|
-
const opts = fixOptions(_opts);
|
|
2134
|
-
const inBrowser = isInBrowser();
|
|
2135
|
-
const rt = opts.runtime || (inBrowser ? windowRuntime(opts) : emptyRuntime(opts));
|
|
2136
|
-
return createUnderlyingAnalyticsInstance(opts, rt);
|
|
2137
|
-
}
|
|
2138
|
-
|
|
2139
|
-
function snakeToCamel(s) {
|
|
2140
|
-
return s.replace(/([-_][a-z])/gi, $1 => {
|
|
2141
|
-
return $1.toUpperCase().replace("-", "").replace("_", "");
|
|
2142
|
-
});
|
|
2143
|
-
}
|
|
2144
|
-
const trimPrefix = (s, prefix) => s.replace(new RegExp(`^${prefix}`), "");
|
|
2145
|
-
const defaultParser = (nestedPath = []) => ({
|
|
2146
|
-
path: (name) => [
|
|
2147
|
-
...nestedPath,
|
|
2148
|
-
snakeToCamel(nestedPath.length > 0 ? trimPrefix(name, nestedPath.join("-") + "-") : name),
|
|
2149
|
-
],
|
|
2150
|
-
parse: (arg) => arg,
|
|
2151
|
-
});
|
|
2152
|
-
const booleanParser = (nestedPath = []) => (Object.assign(Object.assign({}, defaultParser(nestedPath)), { parse: (arg) => arg === "true" || arg === "1" || arg === "yes" }));
|
|
2153
|
-
const jsonParser = (nestedPath = []) => (Object.assign(Object.assign({}, defaultParser(nestedPath)), { parse: (arg) => {
|
|
2154
|
-
try {
|
|
2155
|
-
return JSON.parse(arg);
|
|
2156
|
-
}
|
|
2157
|
-
catch (e) {
|
|
2158
|
-
console.error(`Can't parse Jitsu Option as JSON: ${arg}`);
|
|
2159
|
-
return {};
|
|
2160
|
-
}
|
|
2161
|
-
} }));
|
|
2162
|
-
const parsers = {
|
|
2163
|
-
debug: booleanParser(),
|
|
2164
|
-
"privacy-disable-user-ids": booleanParser(["privacy"]),
|
|
2165
|
-
"privacy-dont-send": booleanParser(["privacy"]),
|
|
2166
|
-
"privacy-ip-policy": defaultParser(["privacy"]),
|
|
2167
|
-
"echo-events": booleanParser(),
|
|
2168
|
-
"init-only": booleanParser(),
|
|
2169
|
-
"cookie-names": jsonParser(),
|
|
2170
|
-
"cookie-capture": jsonParser(),
|
|
2171
|
-
"default-payload-context": jsonParser(),
|
|
2172
|
-
};
|
|
2173
|
-
function getParser(name) {
|
|
2174
|
-
return parsers[name] || defaultParser();
|
|
2175
|
-
}
|
|
2176
|
-
function setPath(obj, path, value) {
|
|
2177
|
-
let current = obj;
|
|
2178
|
-
let i = 0;
|
|
2179
|
-
for (; i < path.length - 1; i++) {
|
|
2180
|
-
const key = path[i];
|
|
2181
|
-
current[key] = current[key] || {};
|
|
2182
|
-
current = current[key];
|
|
2183
|
-
}
|
|
2184
|
-
current[path[i]] = value;
|
|
2185
|
-
}
|
|
2186
|
-
function getScriptAttributes(scriptElement) {
|
|
2187
|
-
return scriptElement
|
|
2188
|
-
.getAttributeNames()
|
|
2189
|
-
.filter(name => name.indexOf("data-") === 0)
|
|
2190
|
-
.map(name => name.substring("data-".length))
|
|
2191
|
-
.reduce((res, name) => {
|
|
2192
|
-
const parser = getParser(name);
|
|
2193
|
-
const path = parser.path(name);
|
|
2194
|
-
setPath(res, path, parser.parse(scriptElement.getAttribute(`data-${name}`)));
|
|
2195
|
-
return res;
|
|
2196
|
-
}, {});
|
|
2197
|
-
}
|
|
2198
|
-
function runCallback(callback, jitsu) {
|
|
2199
|
-
if (typeof callback === "function") {
|
|
2200
|
-
callback(jitsu);
|
|
2201
|
-
}
|
|
2202
|
-
else if (Array.isArray(callback) && typeof callback[0] === "string") {
|
|
2203
|
-
const [method, ...args] = callback;
|
|
2204
|
-
if (typeof jitsu[method] === "function") {
|
|
2205
|
-
jitsu[method](...args);
|
|
2206
|
-
}
|
|
2207
|
-
else {
|
|
2208
|
-
console.warn(`Method ${method} is not supported, ignoring callback`);
|
|
2209
|
-
}
|
|
2210
|
-
}
|
|
2211
|
-
else {
|
|
2212
|
-
console.warn(`Invalid jitsu queue callback`, callback);
|
|
2213
|
-
}
|
|
2214
|
-
}
|
|
2215
|
-
(function () {
|
|
2216
|
-
function readJitsuOptions() {
|
|
2217
|
-
const scriptElement = window.document.currentScript;
|
|
2218
|
-
if (!scriptElement) {
|
|
2219
|
-
throw new Error(`Can't find script element`);
|
|
2220
|
-
}
|
|
2221
|
-
const host = new URL(scriptElement.src).origin;
|
|
2222
|
-
return Object.assign(Object.assign(Object.assign({}, ((window === null || window === void 0 ? void 0 : window.jitsuConfig) || {})), getScriptAttributes(scriptElement)), { host });
|
|
2223
|
-
}
|
|
2224
|
-
const options = readJitsuOptions();
|
|
2225
|
-
const JITSU_V2_ID = options.namespace || "jitsu";
|
|
2226
|
-
if (options.debug) {
|
|
2227
|
-
console.log(`Jitsu options: `, JSON.stringify(options));
|
|
2228
|
-
}
|
|
2229
|
-
const jitsu = jitsuAnalytics(options);
|
|
2230
|
-
if (options.onload) {
|
|
2231
|
-
const onloadFunction = window[options.onload];
|
|
2232
|
-
if (!onloadFunction) {
|
|
2233
|
-
console.warn(`onload function ${options.onload} is not found in window`);
|
|
2234
|
-
}
|
|
2235
|
-
if (typeof onloadFunction === "function") {
|
|
2236
|
-
onloadFunction(jitsu);
|
|
2237
|
-
}
|
|
2238
|
-
else {
|
|
2239
|
-
console.warn(`onload function ${options.onload} is not callable: ${typeof onloadFunction}`);
|
|
2240
|
-
}
|
|
2241
|
-
}
|
|
2242
|
-
window[JITSU_V2_ID] = jitsu;
|
|
2243
|
-
const callbackQueue = window[JITSU_V2_ID + "Q"] && window[JITSU_V2_ID + "Q"].length ? [...window[JITSU_V2_ID + "Q"]] : [];
|
|
2244
|
-
window[JITSU_V2_ID + "Q"] = {
|
|
2245
|
-
push: (callback) => {
|
|
2246
|
-
if (typeof callback === "function") {
|
|
2247
|
-
callback(jitsu);
|
|
2248
|
-
}
|
|
2249
|
-
else {
|
|
2250
|
-
console.warn(`${JITSU_V2_ID}Q.push() accepts only function, ${typeof callback} given`);
|
|
2251
|
-
}
|
|
2252
|
-
},
|
|
2253
|
-
};
|
|
2254
|
-
if (options.debug) {
|
|
2255
|
-
console.log(`[JITSU DEBUG] Jitsu callback queue size: ${callbackQueue.length}`, callbackQueue);
|
|
2256
|
-
}
|
|
2257
|
-
callbackQueue.forEach((callback) => {
|
|
2258
|
-
try {
|
|
2259
|
-
runCallback(callback, jitsu);
|
|
2260
|
-
}
|
|
2261
|
-
catch (e) {
|
|
2262
|
-
console.warn(`Error processing callback from Jitsu queue`, e);
|
|
2263
|
-
}
|
|
2264
|
-
});
|
|
2265
|
-
if (!options.initOnly) {
|
|
2266
|
-
jitsu.page();
|
|
2267
|
-
}
|
|
2268
|
-
})();
|
|
2269
|
-
|
|
2270
|
-
})();
|
|
1
|
+
"use strict";(()=>{var Sr=Object.create;var st=Object.defineProperty,Er=Object.defineProperties,Or=Object.getOwnPropertyDescriptor,xr=Object.getOwnPropertyDescriptors,_r=Object.getOwnPropertyNames,an=Object.getOwnPropertySymbols,jr=Object.getPrototypeOf,un=Object.prototype.hasOwnProperty,Pr=Object.prototype.propertyIsEnumerable;var cn=(t,e,n)=>e in t?st(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,y=(t,e)=>{for(var n in e||(e={}))un.call(e,n)&&cn(t,n,e[n]);if(an)for(var n of an(e))Pr.call(e,n)&&cn(t,n,e[n]);return t},W=(t,e)=>Er(t,xr(e));var Ar=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var Nr=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of _r(e))!un.call(t,i)&&i!==n&&st(t,i,{get:()=>e[i],enumerable:!(r=Or(e,i))||r.enumerable});return t};var Tr=(t,e,n)=>(n=t!=null?Sr(jr(t)):{},Nr(e||!t||!t.__esModule?st(n,"default",{value:t,enumerable:!0}):n,t));var G=(t,e,n)=>new Promise((r,i)=>{var o=l=>{try{a(n.next(l))}catch(f){i(f)}},s=l=>{try{a(n.throw(l))}catch(f){i(f)}},a=l=>l.done?r(l.value):Promise.resolve(l.value).then(o,s);a((n=n.apply(t,e)).next())});var ln=Ar((at,ct)=>{(function(t,e){typeof at=="object"&&typeof ct!="undefined"?ct.exports=function(n,r,i,o,s){for(r=r.split?r.split("."):r,o=0;o<r.length;o++)n=n?n[r[o]]:s;return n===s?i:n}:typeof define=="function"&&define.amd?define(function(){return function(n,r,i,o,s){for(r=r.split?r.split("."):r,o=0;o<r.length;o++)n=n?n[r[o]]:s;return n===s?i:n}}):t.dlv=function(n,r,i,o,s){for(r=r.split?r.split("."):r,o=0;o<r.length;o++)n=n?n[r[o]]:s;return n===s?i:n}})(at)});var Be=Tr(ln());var Ne="undefined";var ut="object";var lt="any",dt="*";var re="__";var Le=typeof process!="undefined"?process:{},So=Le.env&&Le.env.NODE_ENV||"";var Y=typeof document!="undefined",Eo=Y&&window.location.hostname==="localhost",Oo=Le.versions!=null&&Le.versions.node!=null,xo=typeof Deno!="undefined"&&Deno.core!==void 0,_o=typeof self=="object"&&self.constructor&&self.constructor.name==="DedicatedWorkerGlobalScope",jo=Y&&window.name==="nodejs"||typeof navigator!="undefined"&&navigator.userAgent!==void 0&&(navigator.userAgent.includes("Node.js")||navigator.userAgent.includes("jsdom"));function dn(t,e){return e.charAt(0)[t]()+e.slice(1)}var zr=dn.bind(null,"toUpperCase"),Cr=dn.bind(null,"toLowerCase");function Rr(t){return gn(t)?zr("null"):typeof t=="object"?Ur(t):Object.prototype.toString.call(t).slice(8,-1)}function Fe(t,e){e===void 0&&(e=!0);var n=Rr(t);return e?Cr(n):n}function Te(t,e){return typeof e===t}var Q=Te.bind(null,"function"),ie=Te.bind(null,"string"),fe=Te.bind(null,"undefined");var fn=Te.bind(null,"boolean"),Po=Te.bind(null,"symbol");function gn(t){return t===null}function Dr(t){return Fe(t)==="number"&&!isNaN(t)}function mn(t){return Fe(t)==="array"}function q(t){if(!$r(t))return!1;for(var e=t;Object.getPrototypeOf(e)!==null;)e=Object.getPrototypeOf(e);return Object.getPrototypeOf(t)===e}function $r(t){return t&&(typeof t=="object"||t!==null)}function Ur(t){return Q(t.constructor)?t.constructor.name:null}function Jr(t){return t instanceof Error||ie(t.message)&&t.constructor&&Dr(t.constructor.stackTraceLimit)}function pn(t,e){if(typeof e!="object"||gn(e))return!1;if(e instanceof t)return!0;var n=Fe(new t(""));if(Jr(e))for(;e;){if(Fe(e)===n)return!0;e=Object.getPrototypeOf(e)}return!1}var Ao=pn.bind(null,TypeError),No=pn.bind(null,SyntaxError);function Ge(t,e){var n=t instanceof Element||t instanceof HTMLDocument;return n&&e?Lr(t,e):n}function Lr(t,e){return e===void 0&&(e=""),t&&t.nodeName===e.toUpperCase()}function Me(t){var e=[].slice.call(arguments,1);return function(){return t.apply(void 0,[].slice.call(arguments).concat(e))}}var To=Me(Ge,"form"),zo=Me(Ge,"button"),Co=Me(Ge,"input"),Ro=Me(Ge,"select");function hn(t){try{return decodeURIComponent(t.replace(/\+/g," "))}catch(e){return null}}function bn(){if(Y){var t=navigator,e=t.languages;return t.userLanguage||(e&&e.length?e[0]:t.language)}}function vn(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone}catch(t){}}function yn(t){return(function(e){for(var n,r=Object.create(null),i=/([^&=]+)=?([^&]*)/g;n=i.exec(e);){var o=hn(n[1]),s=hn(n[2]);o.substring(o.length-2)==="[]"?(r[o=o.substring(0,o.length-2)]||(r[o]=[])).push(s):r[o]=s===""||s}for(var a in r){var l=a.split("[");l.length>1&&(Fr(r,l.map(function(f){return f.replace(/[?[\]\\ ]/g,"")}),r[a]),delete r[a])}return r})((function(e){if(e){var n=e.match(/\?(.*)/);return n&&n[1]?n[1].split("#")[0]:""}return Y&&window.location.search.substring(1)})(t))}function Fr(t,e,n){for(var r=e.length-1,i=0;i<r;++i){var o=e[i];if(o==="__proto__"||o==="constructor")break;o in t||(t[o]={}),t=t[o]}t[e[r]]=n}function ze(){for(var t="",e=0,n=4294967295*Math.random()|0;e++<36;){var r="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx"[e-1],i=15&n;t+=r=="-"||r=="4"?r:(r=="x"?i:3&i|8).toString(16),n=e%8==0?4294967295*Math.random()|0:n>>4}return t}var ve="global",ge=re+"global"+re,me=typeof self===ut&&self.self===self&&self||typeof global===ut&&global.global===global&&global||void 0;function Z(t){return me[ge][t]}function K(t,e){return me[ge][t]=e}function ee(t){delete me[ge][t]}function se(t,e,n){var r;try{if(Ce(t)){var i=window[t];r=i[e].bind(i)}}catch(o){}return r||n}me[ge]||(me[ge]={});var qe={};function Ce(t){if(typeof qe[t]!==Ne)return qe[t];try{var e=window[t];e.setItem(Ne,Ne),e.removeItem(Ne)}catch(n){return qe[t]=!1}return qe[t]=!0}function E(){return E=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},E.apply(this,arguments)}var ce="function",oe="undefined",Gr="@@redux/"+Math.random().toString(36),wn=(function(){return typeof Symbol===ce&&Symbol.observable||"@@observable"})(),Ve=" != "+ce;function Un(t,e,n){var r;if(typeof e===ce&&typeof n===oe&&(n=e,e=void 0),typeof n!==oe){if(typeof n!==ce)throw new Error("enhancer"+Ve);return n(Un)(t,e)}if(typeof t!==ce)throw new Error("reducer"+Ve);var i=t,o=e,s=[],a=s,l=!1;function f(){a===s&&(a=s.slice())}function b(){return o}function m(g){if(typeof g!==ce)throw new Error("Listener"+Ve);var w=!0;return f(),a.push(g),function(){if(w){w=!1,f();var v=a.indexOf(g);a.splice(v,1)}}}function d(g){if(!q(g))throw new Error("Act != obj");if(typeof g.type===oe)throw new Error("ActType "+oe);if(l)throw new Error("Dispatch in reducer");try{l=!0,o=i(o,g)}finally{l=!1}for(var w=s=a,v=0;v<w.length;v++)(0,w[v])();return g}return d({type:"@@redux/INIT"}),(r={dispatch:d,subscribe:m,getState:b,replaceReducer:function(g){if(typeof g!==ce)throw new Error("next reducer"+Ve);i=g,d({type:"@@redux/INIT"})}})[wn]=function(){var g,w=m;return(g={subscribe:function(v){if(typeof v!="object")throw new TypeError("Observer != obj");function h(){v.next&&v.next(b())}return h(),{unsubscribe:w(h)}}})[wn]=function(){return this},g},r}function Mr(t,e){var n=e&&e.type;return"action "+(n&&n.toString()||"?")+"reducer "+t+" returns "+oe}function ke(){var t=[].slice.call(arguments);return t.length===0?function(e){return e}:t.length===1?t[0]:t.reduce(function(e,n){return function(){return e(n.apply(void 0,[].slice.call(arguments)))}})}function Br(){var t=arguments;return function(e){return function(n,r,i){var o,s=e(n,r,i),a=s.dispatch,l={getState:s.getState,dispatch:function(f){return a(f)}};return o=[].slice.call(t).map(function(f){return f(l)}),E({},s,{dispatch:a=ke.apply(void 0,o)(s.dispatch)})}}}var ue=re+"anon_id",pe=re+"user_id",we=re+"user_traits";var ae="userId",ye="anonymousId",Xe=["bootstrap","params","campaign","initializeStart","initialize","initializeEnd","ready","resetStart","reset","resetEnd","pageStart","page","pageEnd","pageAborted","trackStart","track","trackEnd","trackAborted","identifyStart","identify","identifyEnd","identifyAborted","userIdChanged","registerPlugins","enablePlugin","disablePlugin","online","offline","setItemStart","setItem","setItemEnd","setItemAborted","removeItemStart","removeItem","removeItemEnd","removeItemAborted"],ht=["name","EVENTS","config","loaded"],S=Xe.reduce(function(t,e){return t[e]=e,t},{registerPluginType:function(t){return"registerPlugin:"+t},pluginReadyType:function(t){return"ready:"+t}}),In=/^utm_/,kn=/^an_prop_/,Sn=/^an_trait_/;function qr(t){var e=t.storage.setItem;return function(n){return function(r){return function(i){if(i.type===S.bootstrap){var o=i.params,s=i.user,a=i.persistedUser,l=i.initialUser,f=a.userId===s.userId;a.anonymousId!==s.anonymousId&&e(ue,s.anonymousId),f||e(pe,s.userId),l.traits&&e(we,E({},f&&a.traits?a.traits:{},l.traits));var b=Object.keys(i.params);if(b.length){var m=o.an_uid,d=o.an_event,g=b.reduce(function(w,v){if(v.match(In)||v.match(/^(d|g)clid/)){var h=v.replace(In,"");w.campaign[h==="campaign"?"name":h]=o[v]}return v.match(kn)&&(w.props[v.replace(kn,"")]=o[v]),v.match(Sn)&&(w.traits[v.replace(Sn,"")]=o[v]),w},{campaign:{},props:{},traits:{}});n.dispatch(E({type:S.params,raw:o},g,m?{userId:m}:{})),m&&setTimeout(function(){return t.identify(m,g.traits)},0),d&&setTimeout(function(){return t.track(d,g.props)},0),Object.keys(g.campaign).length&&n.dispatch({type:S.campaign,campaign:g.campaign})}}return r(i)}}}}function Vr(t){return function(e,n){if(e===void 0&&(e={}),n===void 0&&(n={}),n.type===S.setItemEnd){if(n.key===ue)return E({},e,{anonymousId:n.value});if(n.key===pe)return E({},e,{userId:n.value})}switch(n.type){case S.identify:return Object.assign({},e,{userId:n.userId,traits:E({},e.traits,n.traits)});case S.reset:return[pe,ue,we].forEach(function(r){t.removeItem(r)}),Object.assign({},e,{userId:null,anonymousId:null,traits:{}});default:return e}}}function En(t){return{userId:t.getItem(pe),anonymousId:t.getItem(ue),traits:t.getItem(we)}}var bt=function(t){return re+"TEMP"+re+t};function Hr(t){var e=t.storage,n=e.setItem,r=e.removeItem,i=e.getItem;return function(o){return function(s){return function(a){var l=a.userId,f=a.traits,b=a.options;if(a.type===S.reset&&([pe,we,ue].forEach(function(g){r(g)}),[ae,ye,"traits"].forEach(function(g){ee(bt(g))})),a.type===S.identify){i(ue)||n(ue,ze());var m=i(pe),d=i(we)||{};m&&m!==l&&o.dispatch({type:S.userIdChanged,old:{userId:m,traits:d},new:{userId:l,traits:f},options:b}),l&&n(pe,l),f&&n(we,E({},d,f))}return s(a)}}}}var Re={};function On(t,e){Re[t]&&Q(Re[t])&&(Re[t](e),delete Re[t])}function Jn(t,e,n){return new Promise(function(r,i){return e()?r(t):n<1?i(E({},t,{queue:!0})):new Promise(function(o){return setTimeout(o,10)}).then(function(o){return Jn(t,e,n-10).then(r,i)})})}function Wr(t){return{abort:t}}function Ln(t,e,n){var r={},i=e(),o=t.getState(),s=o.plugins,a=o.queue,l=o.user;if(!o.context.offline&&a&&a.actions&&a.actions.length){var f=a.actions.reduce(function(m,d,g){return s[d.plugin].loaded?(m.process.push(d),m.processIndex.push(g)):(m.requeue.push(d),m.requeueIndex.push(g)),m},{processIndex:[],process:[],requeue:[],requeueIndex:[]});if(f.processIndex&&f.processIndex.length){f.processIndex.forEach(function(m){var d=a.actions[m],g=d.plugin,w=d.payload.type,v=i[g][w];if(v&&Q(v)){var h,_=(function(I,p){return I===void 0&&(I={}),p===void 0&&(p={}),[ae,ye].reduce(function(C,j){return I.hasOwnProperty(j)&&p[j]&&p[j]!==I[j]&&(C[j]=p[j]),C},I)})(d.payload,l),N=r[_.meta.rid];if(!N&&(h=v({payload:_,config:s[g].config,instance:n,abort:Wr}))&&q(h)&&h.abort)return void(r[_.meta.rid]=!0);if(!N){var x=w+":"+g;t.dispatch(E({},_,{type:x,_:{called:x,from:"queueDrain"}}))}}});var b=a.actions.filter(function(m,d){return!~f.processIndex.indexOf(d)});a.actions=b}}}var ft=function(t){var e=t.data,n=t.action,r=t.instance,i=t.state,o=t.allPlugins,s=t.allMatches,a=t.store,l=t.EVENTS;try{var f=i.plugins,b=i.context,m=n.type,d=m.match(Ie),g=e.exact.map(function(h){return h.pluginName});d&&(g=s.during.map(function(h){return h.pluginName}));var w=(function(h,_){return function(N,x,I){var p=x.config,C=x.name,j=C+"."+N.type;I&&(j=I.event);var T=N.type.match(Ie)?(function($,U,M,J,V){return function(L,O){var H=J?J.name:$,X=O&&De(O)?O:M;if(J&&(!(X=O&&De(O)?O:[$]).includes($)||X.length!==1))throw new Error("Method "+U+" can only abort "+$+" plugin. "+JSON.stringify(X)+" input valid");return E({},V,{abort:{reason:L,plugins:X,caller:U,_:H}})}})(C,j,_,I,N):(function($,U){return function(){throw new Error($.type+" action not cancellable. Remove abort in "+U)}})(N,j);return{payload:Xr(N),instance:h,config:p||{},abort:T}}})(r,g),v=e.exact.reduce(function(h,_){var N=_.pluginName,x=_.methodName,I=!1;return x.match(/^initialize/)||x.match(/^reset/)||(I=!f[N].loaded),b.offline&&x.match(/^(page|track|identify)/)&&(I=!0),h[""+N]=I,h},{});return Promise.resolve(e.exact.reduce(function(h,_,N){try{var x=_.pluginName;return Promise.resolve(h).then(function(I){function p(){return Promise.resolve(I)}var C=(function(){if(e.namespaced&&e.namespaced[x])return Promise.resolve(e.namespaced[x].reduce(function(j,T,$){try{return Promise.resolve(j).then(function(U){return T.method&&Q(T.method)?((function(L,O){var H=Tn(L);if(H&&H.name===O){var X=Tn(H.method);throw new Error([O+" plugin is calling method "+L,"Plugins cant call self","Use "+H.method+" "+(X?"or "+X.method:"")+" in "+O+" plugin insteadof "+L].join(`
|
|
2
|
+
`))}})(T.methodName,T.pluginName),Promise.resolve(T.method({payload:U,instance:r,abort:(M=U,J=x,V=T.pluginName,function(L,O){return E({},M,{abort:{reason:L,plugins:O||[J],caller:m,from:V||J}})}),config:jn(T.pluginName,f,o),plugins:f})).then(function(L){var O=q(L)?L:{};return Promise.resolve(E({},U,O))})):U;var M,J,V})}catch(U){return Promise.reject(U)}},Promise.resolve(n))).then(function(j){I[x]=j});I[x]=n})();return C&&C.then?C.then(p):p()})}catch(I){return Promise.reject(I)}},Promise.resolve({}))).then(function(h){return Promise.resolve(e.exact.reduce(function(_,N,x){try{var I=e.exact.length===x+1,p=N.pluginName,C=o[p];return Promise.resolve(_).then(function(j){var T=h[p]?h[p]:{};if(d&&(T=j),mt(T,p))return gt({data:T,method:m,instance:r,pluginName:p,store:a}),Promise.resolve(j);if(mt(j,p))return I&>({data:j,method:m,instance:r,store:a}),Promise.resolve(j);if(v.hasOwnProperty(p)&&v[p]===!0)return a.dispatch({type:"queue",plugin:p,payload:T,_:{called:"queue",from:"queueMechanism"}}),Promise.resolve(j);var $=w(h[p],o[p]);return Promise.resolve(C[m]({abort:$.abort,payload:T,instance:r,config:jn(p,f,o),plugins:f})).then(function(U){var M=q(U)?U:{},J=E({},j,M),V=h[p];if(mt(V,p))gt({data:V,method:m,instance:r,pluginName:p,store:a});else{var L=m+":"+p;(L.match(/:/g)||[]).length<2&&!m.match(xn)&&!m.match(_n)&&r.dispatch(E({},d?J:T,{type:L,_:{called:L,from:"submethod"}}))}return Promise.resolve(J)})})}catch(j){return Promise.reject(j)}},Promise.resolve(n))).then(function(_){if(!(m.match(Ie)||m.match(/^registerPlugin/)||m.match(_n)||m.match(xn)||m.match(/^params/)||m.match(/^userIdChanged/))){if(l.plugins.includes(m),_._&&_._.originalAction===m)return _;var N=E({},_,{_:{originalAction:_.type,called:_.type,from:"engineEnd"}});Fn(_,e.exact.length)&&!m.match(/End$/)&&(N=E({},N,{type:_.type+"Aborted"})),a.dispatch(N)}return _})})}catch(h){return Promise.reject(h)}},Ie=/Start$/,xn=/^bootstrap/,_n=/^ready/;function gt(t){var e=t.pluginName,n=t.method+"Aborted"+(e?":"+e:"");t.store.dispatch(E({},t.data,{type:n,_:{called:n,from:"abort"}}))}function jn(t,e,n){var r=e[t]||n[t];return r&&r.config?r.config:{}}function Pn(t,e){return e.reduce(function(n,r){return r[t]?n.concat({methodName:t,pluginName:r.name,method:r[t]}):n},[])}function An(t,e){var n=t.replace(Ie,""),r=e?":"+e:"";return[""+t+r,""+n+r,n+"End"+r]}function mt(t,e){var n=t.abort;return!!n&&(n===!0||Nn(n,e)||n&&Nn(n.plugins,e))}function Fn(t,e){var n=t.abort;if(!n)return!1;if(n===!0||ie(n))return!0;var r=n.plugins;return De(n)&&n.length===e||De(r)&&r.length===e}function De(t){return Array.isArray(t)}function Nn(t,e){return!(!t||!De(t))&&t.includes(e)}function Tn(t){var e=t.match(/(.*):(.*)/);return!!e&&{method:e[1],name:e[2]}}function Xr(t){return Object.keys(t).reduce(function(e,n){return n==="type"||(e[n]=q(t[n])?Object.assign({},t[n]):t[n]),e},{})}function Yr(t,e,n){var r={};return function(i){return function(o){return function(s){try{var a,l=function(I){return a?I:o(m)},f=s.type,b=s.plugins,m=s;if(s.abort)return Promise.resolve(o(s));if(f===S.enablePlugin&&i.dispatch({type:S.initializeStart,plugins:b,disabled:[],fromEnable:!0,meta:s.meta}),f===S.disablePlugin&&setTimeout(function(){return On(s.meta.rid,{payload:s})},0),f===S.initializeEnd){var d=e(),g=Object.keys(d),w=g.filter(function(I){return b.includes(I)}).map(function(I){return d[I]}),v=[],h=[],_=s.disabled,N=w.map(function(I){var p=I.loaded,C=I.name,j=I.config;return Jn(I,function(){return p({config:j})},1e4).then(function(T){return r[C]||(i.dispatch({type:S.pluginReadyType(C),name:C,events:Object.keys(I).filter(function($){return!ht.includes($)})}),r[C]=!0),v=v.concat(C),I}).catch(function(T){if(T instanceof Error)throw new Error(T);return h=h.concat(T.name),T})});Promise.all(N).then(function(I){var p={plugins:v,failed:h,disabled:_};setTimeout(function(){g.length===N.length+_.length&&i.dispatch(E({},{type:S.ready},p))},0)})}var x=(function(){if(f!==S.bootstrap)return/^ready:([^:]*)$/.test(f)&&setTimeout(function(){return Ln(i,e,t)},0),Promise.resolve((function(I,p,C,j,T){try{var $=Q(p)?p():p,U=I.type,M=U.replace(Ie,"");if(I._&&I._.called)return Promise.resolve(I);var J=C.getState(),V=(H=$,(X=J.plugins)===void 0&&(X={}),(Pe=I.options)===void 0&&(Pe={}),Object.keys(H).filter(function(c){var u=Pe.plugins||{};return fn(u[c])?u[c]:u.all!==!1&&(!X[c]||X[c].enabled!==!1)}).map(function(c){return H[c]}));U===S.initializeStart&&I.fromEnable&&(V=Object.keys(J.plugins).filter(function(c){var u=J.plugins[c];return I.plugins.includes(c)&&!u.initialized}).map(function(c){return $[c]}));var L=V.map(function(c){return c.name}),O=(function(c,u,k){var P=An(c).map(function(A){return Pn(A,u)});return u.reduce(function(A,z){var B=z.name,D=An(c,B).map(function(Ae){return Pn(Ae,u)}),F=D[0],R=D[1],ne=D[2];return F.length&&(A.beforeNS[B]=F),R.length&&(A.duringNS[B]=R),ne.length&&(A.afterNS[B]=ne),A},{before:P[0],beforeNS:{},during:P[1],duringNS:{},after:P[2],afterNS:{}})})(U,V);return Promise.resolve(ft({action:I,data:{exact:O.before,namespaced:O.beforeNS},state:J,allPlugins:$,allMatches:O,instance:C,store:j,EVENTS:T})).then(function(c){function u(){var A=(function(){if(U.match(Ie))return Promise.resolve(ft({action:E({},k,{type:M+"End"}),data:{exact:O.after,namespaced:O.afterNS},state:J,allPlugins:$,allMatches:O,instance:C,store:j,EVENTS:T})).then(function(z){z.meta&&z.meta.hasCallback&&On(z.meta.rid,{payload:z})})})();return A&&A.then?A.then(function(){return c}):c}if(Fn(c,L.length))return c;var k,P=(function(){if(U!==M)return Promise.resolve(ft({action:E({},c,{type:M}),data:{exact:O.during,namespaced:O.duringNS},state:J,allPlugins:$,allMatches:O,instance:C,store:j,EVENTS:T})).then(function(A){k=A});k=c})();return P&&P.then?P.then(u):u()})}catch(c){return Promise.reject(c)}var H,X,Pe})(s,e,t,i,n)).then(function(I){return a=1,o(I)})})();return Promise.resolve(x&&x.then?x.then(l):l(x))}catch(I){return Promise.reject(I)}}}}}function Zr(t){return function(e){return function(n){return function(r){var i=r.type,o=r.key,s=r.value,a=r.options;if(i===S.setItem||i===S.removeItem){if(r.abort)return n(r);i===S.setItem?t.setItem(o,s,a):t.removeItem(o,a)}return n(r)}}}}var Kr=function(){var t=this;this.before=[],this.after=[],this.addMiddleware=function(e,n){t[n]=t[n].concat(e)},this.removeMiddleware=function(e,n){var r=t[n].findIndex(function(i){return i===e});r!==-1&&(t[n]=[].concat(t[n].slice(0,r),t[n].slice(r+1)))},this.dynamicMiddlewares=function(e){return function(n){return function(r){return function(i){var o={getState:n.getState,dispatch:function(a){return n.dispatch(a)}},s=t[e].map(function(a){return a(o)});return ke.apply(void 0,s)(r)(i)}}}}};function Qr(t){return function(e,n){e===void 0&&(e={});var r={};if(n.type==="initialize:aborted")return e;if(/^registerPlugin:([^:]*)$/.test(n.type)){var i=zn(n.type,"registerPlugin"),o=t()[i];if(!o||!i)return e;var s=n.enabled,a=o.config;return r[i]={enabled:s,initialized:!!s&&!o.initialize,loaded:!!s&&!!o.loaded({config:a}),config:a},E({},e,r)}if(/^initialize:([^:]*)$/.test(n.type)){var l=zn(n.type,S.initialize),f=t()[l];return f&&l?(r[l]=E({},e[l],{initialized:!0,loaded:!!f.loaded({config:f.config})}),E({},e,r)):e}if(/^ready:([^:]*)$/.test(n.type))return r[n.name]=E({},e[n.name],{loaded:!0}),E({},e,r);switch(n.type){case S.disablePlugin:return E({},e,Cn(n.plugins,!1,e));case S.enablePlugin:return E({},e,Cn(n.plugins,!0,e));default:return e}}}function zn(t,e){return t.substring(e.length+1,t.length)}function Cn(t,e,n){return t.reduce(function(r,i){return r[i]=E({},n[i],{enabled:e}),r},n)}function Gn(t){try{return JSON.parse(JSON.stringify(t))}catch(e){}return t}var ei={last:{},history:[]};function ti(t,e){t===void 0&&(t=ei);var n=e.options,r=e.meta;if(e.type===S.track){var i=Gn(E({event:e.event,properties:e.properties},Object.keys(n).length&&{options:n},{meta:r}));return E({},t,{last:i,history:t.history.concat(i)})}return t}var ni={actions:[]};function ri(t,e){t===void 0&&(t=ni);var n=e.payload;switch(e.type){case"queue":var r;return r=n&&n.type&&n.type===S.identify?[e].concat(t.actions):t.actions.concat(e),E({},t,{actions:r});case"dequeue":return[];default:return t}}var Mn=/#.*$/;function ii(t){var e=/(http[s]?:\/\/)?([^\/\s]+\/)(.*)/g.exec(t);return"/"+(e&&e[3]?e[3].split("?")[0].replace(Mn,""):"")}var Bn,qn,Vn,Hn,oi=function(t){if(t===void 0&&(t={}),!Y)return t;var e=document,n=e.title,r=e.referrer,i=window,o=i.location,s=i.innerWidth,a=i.innerHeight,l=o.hash,f=o.search,b=(function(d){var g=(function(){if(Y){for(var w,v=document.getElementsByTagName("link"),h=0;w=v[h];h++)if(w.getAttribute("rel")==="canonical")return w.getAttribute("href")}})();return g?g.match(/\?/)?g:g+d:window.location.href.replace(Mn,"")})(f),m={title:n,url:b,path:ii(b),hash:l,search:f,width:s,height:a};return r&&r!==""&&(m.referrer=r),E({},m,t)},si={last:{},history:[]};function ai(t,e){t===void 0&&(t=si);var n=e.options;if(e.type===S.page){var r=Gn(E({properties:e.properties,meta:e.meta},Object.keys(n).length&&{options:n}));return E({},t,{last:r,history:t.history.concat(r)})}return t}Bn=(function(){if(!Y)return!1;var t=navigator.appVersion;return~t.indexOf("Win")?"Windows":~t.indexOf("Mac")?"MacOS":~t.indexOf("X11")?"UNIX":~t.indexOf("Linux")?"Linux":"Unknown OS"})(),qn=Y?document.referrer:null,Vn=bn(),Hn=vn();var Rn={initialized:!1,sessionId:ze(),app:null,version:null,debug:!1,offline:!!Y&&!navigator.onLine,os:{name:Bn},userAgent:Y?navigator.userAgent:"node",library:{name:"analytics",version:"0.12.14"},timezone:Hn,locale:Vn,campaign:{},referrer:qn};function ci(t,e){t===void 0&&(t=Rn);var n=t.initialized,r=e.campaign;switch(e.type){case S.campaign:return E({},t,{campaign:r});case S.offline:return E({},t,{offline:!0});case S.online:return E({},t,{offline:!1});default:return n?t:E({},Rn,t,{initialized:!0})}}var ui=["plugins","reducers","storage"];function li(t,e,n){if(Y){var r=window[(n?"add":"remove")+"EventListener"];t.split(" ").forEach(function(i){r(i,e)})}}function di(t){var e=li.bind(null,"online offline",function(n){return Promise.resolve(!navigator.onLine).then(t)});return e(!0),function(n){return e(!1)}}function Wn(){return K("analytics",[]),function(t){return function(e,n,r){var i=t(e,n,r),o=i.dispatch;return Object.assign(i,{dispatch:function(s){return me[ge].analytics.push(s.action||s),o(s)}})}}}function Dn(t){return function(){return ke(ke.apply(null,arguments),Wn())}}function pt(t){return t?mn(t)?t:[t]:[]}function $n(t,e,n){t===void 0&&(t={});var r,i,o=ze();return e&&(Re[o]=(r=e,i=(function(s){for(var a,l=s||Array.prototype.slice.call(arguments),f=0;f<l.length;f++)if(Q(l[f])){a=l[f];break}return a})(n),function(s){i&&i(s),r(s)})),E({},t,{rid:o,ts:new Date().getTime()},e?{hasCallback:!0}:{})}function Xn(t){t===void 0&&(t={});var e=t.reducers||{},n=t.initialUser||{},r=(t.plugins||[]).reduce(function(c,u){if(Q(u))return c.middlewares=c.middlewares.concat(u),c;if(u.NAMESPACE&&(u.name=u.NAMESPACE),!u.name)throw new Error("https://lytics.dev/errors/1");u.config||(u.config={});var k=u.EVENTS?Object.keys(u.EVENTS).map(function(z){return u.EVENTS[z]}):[];c.pluginEnabled[u.name]=!(u.enabled===!1||u.config.enabled===!1),delete u.enabled,u.methods&&(c.methods[u.name]=Object.keys(u.methods).reduce(function(z,B){var D;return z[B]=(D=u.methods[B],function(){for(var F=Array.prototype.slice.call(arguments),R=new Array(D.length),ne=0;ne<F.length;ne++)R[ne]=F[ne];return R[R.length]=p,D.apply({instance:p},R)}),z},{}),delete u.methods);var P=Object.keys(u).concat(k),A=new Set(c.events.concat(P));if(c.events=Array.from(A),c.pluginsArray=c.pluginsArray.concat(u),c.plugins[u.name])throw new Error(u.name+"AlreadyLoaded");return c.plugins[u.name]=u,c.plugins[u.name].loaded||(c.plugins[u.name].loaded=function(){return!0}),c},{plugins:{},pluginEnabled:{},methods:{},pluginsArray:[],middlewares:[],events:[]}),i=t.storage?t.storage:{getItem:Z,setItem:K,removeItem:ee},o=(function(c){return function(u,k,P){return k.getState("user")[u]||(P&&q(P)&&P[u]?P[u]:En(c)[u]||Z(bt(u))||null)}})(i),s=r.plugins,a=r.events.filter(function(c){return!ht.includes(c)}).sort(),l=new Set(a.concat(Xe).filter(function(c){return!ht.includes(c)})),f=Array.from(l).sort(),b=function(){return s},m=new Kr,d=m.addMiddleware,g=m.removeMiddleware,w=m.dynamicMiddlewares,v=function(){throw new Error("Abort disabled inListener")},h=yn(),_=En(i),N=E({},_,n,h.an_uid?{userId:h.an_uid}:{},h.an_aid?{anonymousId:h.an_aid}:{});N.anonymousId||(N.anonymousId=ze());var x=E({enable:function(c,u){return new Promise(function(k){O.dispatch({type:S.enablePlugin,plugins:pt(c),_:{originalAction:S.enablePlugin}},k,[u])})},disable:function(c,u){return new Promise(function(k){O.dispatch({type:S.disablePlugin,plugins:pt(c),_:{originalAction:S.disablePlugin}},k,[u])})}},r.methods),I=!1,p={identify:function(c,u,k,P){try{var A=ie(c)?c:null,z=q(c)?c:u,B=k||{},D=p.user();K(bt(ae),A);var F=A||z.userId||o(ae,p,z);return Promise.resolve(new Promise(function(R){O.dispatch(E({type:S.identifyStart,userId:F,traits:z||{},options:B,anonymousId:D.anonymousId},D.id&&D.id!==A&&{previousId:D.id}),R,[u,k,P])}))}catch(R){return Promise.reject(R)}},track:function(c,u,k,P){try{var A=q(c)?c.event:c;if(!A||!ie(A))throw new Error("EventMissing");var z=q(c)?c:u||{},B=q(k)?k:{};return Promise.resolve(new Promise(function(D){O.dispatch({type:S.trackStart,event:A,properties:z,options:B,userId:o(ae,p,u),anonymousId:o(ye,p,u)},D,[u,k,P])}))}catch(D){return Promise.reject(D)}},page:function(c,u,k){try{var P=q(c)?c:{},A=q(u)?u:{};return Promise.resolve(new Promise(function(z){O.dispatch({type:S.pageStart,properties:oi(P),options:A,userId:o(ae,p,P),anonymousId:o(ye,p,P)},z,[c,u,k])}))}catch(z){return Promise.reject(z)}},user:function(c){if(c===ae||c==="id")return o(ae,p);if(c===ye||c==="anonId")return o(ye,p);var u=p.getState("user");return c?(0,Be.default)(u,c):u},reset:function(c){return new Promise(function(u){O.dispatch({type:S.resetStart},u,c)})},ready:function(c){return I&&c({plugins:x,instance:p}),p.on(S.ready,function(u){c(u),I=!0})},on:function(c,u){if(!c||!Q(u))return!1;if(c===S.bootstrap)throw new Error(".on disabled for "+c);var k=/Start$|Start:/;if(c==="*"){var P=function(D){return function(F){return function(R){return R.type.match(k)&&u({payload:R,instance:p,plugins:s}),F(R)}}},A=function(D){return function(F){return function(R){return R.type.match(k)||u({payload:R,instance:p,plugins:s}),F(R)}}};return d(P,He),d(A,We),function(){g(P,He),g(A,We)}}var z=c.match(k)?He:We,B=function(D){return function(F){return function(R){return R.type===c&&u({payload:R,instance:p,plugins:s,abort:v}),F(R)}}};return d(B,z),function(){return g(B,z)}},once:function(c,u){if(!c||!Q(u))return!1;if(c===S.bootstrap)throw new Error(".once disabled for "+c);var k=p.on(c,function(P){u({payload:P.payload,instance:p,plugins:s,abort:v}),k()});return k},getState:function(c){var u=O.getState();return c?(0,Be.default)(u,c):Object.assign({},u)},dispatch:function(c){var u=ie(c)?{type:c}:c;if(Xe.includes(u.type))throw new Error("reserved action "+u.type);var k=E({},u,{_:E({originalAction:u.type},c._||{})});O.dispatch(k)},enablePlugin:x.enable,disablePlugin:x.disable,plugins:x,storage:{getItem:i.getItem,setItem:function(c,u,k){O.dispatch({type:S.setItemStart,key:c,value:u,options:k})},removeItem:function(c,u){O.dispatch({type:S.removeItemStart,key:c,options:u})}},setAnonymousId:function(c,u){p.storage.setItem(ue,c,u)},events:{core:Xe,plugins:a}},C=r.middlewares.concat([function(c){return function(u){return function(k){return k.meta||(k.meta=$n()),u(k)}}},w(He),Yr(p,b,{all:f,plugins:a}),Zr(i),qr(p),Hr(p),w(We)]),j={context:ci,user:Vr(i),page:ai,track:ti,plugins:Qr(b),queue:ri},T=ke,$=ke;if(Y&&t.debug){var U=window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__;U&&(T=U({trace:!0,traceLimit:25})),$=function(){return arguments.length===0?Wn():q(typeof arguments[0])?Dn():Dn().apply(null,arguments)}}var M,J=(function(c){return Object.keys(c).reduce(function(u,k){return ui.includes(k)||(u[k]=c[k]),u},{})})(t),V=r.pluginsArray.reduce(function(c,u){var k=u.name,P=u.config,A=u.loaded,z=r.pluginEnabled[k];return c[k]={enabled:z,initialized:!!z&&!u.initialize,loaded:!!A({config:P}),config:P},c},{}),L={context:J,user:N,plugins:V},O=Un((function(c){for(var u=Object.keys(c),k={},P=0;P<u.length;P++){var A=u[P];typeof c[A]===ce&&(k[A]=c[A])}var z,B=Object.keys(k);try{(function(D){Object.keys(D).forEach(function(F){var R=D[F];if(typeof R(void 0,{type:"@@redux/INIT"})===oe||typeof R(void 0,{type:Gr})===oe)throw new Error("reducer "+F+" "+oe)})})(k)}catch(D){z=D}return function(D,F){if(D===void 0&&(D={}),z)throw z;for(var R=!1,ne={},Ae=0;Ae<B.length;Ae++){var Je=B[Ae],sn=D[Je],ot=(0,k[Je])(sn,F);if(typeof ot===oe){var kr=Mr(Je,F);throw new Error(kr)}ne[Je]=ot,R=R||ot!==sn}return R?ne:D}})(E({},j,e)),L,$(T(Br.apply(void 0,C))));O.dispatch=(M=O.dispatch,function(c,u,k){var P=E({},c,{meta:$n(c.meta,u,pt(k))});return M.apply(null,[P])});var H=Object.keys(s);O.dispatch({type:S.bootstrap,plugins:H,config:J,params:h,user:N,initialUser:n,persistedUser:_});var X=H.filter(function(c){return r.pluginEnabled[c]}),Pe=H.filter(function(c){return!r.pluginEnabled[c]});return O.dispatch({type:S.registerPlugins,plugins:H,enabled:r.pluginEnabled}),r.pluginsArray.map(function(c,u){var k=c.bootstrap,P=c.config,A=c.name;k&&Q(k)&&k({instance:p,config:P,payload:c}),O.dispatch({type:S.registerPluginType(A),name:A,enabled:r.pluginEnabled[A],plugin:c}),r.pluginsArray.length===u+1&&O.dispatch({type:S.initializeStart,plugins:X,disabled:Pe})}),di(function(c){O.dispatch({type:c?S.offline:S.online})}),(function(c,u,k){setInterval(function(){return Ln(c,u,k)},3e3)})(O,b,p),p}var He="before",We="after";var Se="cookie",he=wt(),vt=Ye,Yn=Ye;function yt(t){return he?Ye(t,"",-1):ee(t)}function wt(){if(he!==void 0)return he;var t="cookiecookie";try{Ye(t,t),he=document.cookie.indexOf(t)!==-1,yt(t)}catch(e){he=!1}return he}function Ye(t,e,n,r,i,o){if(typeof window!="undefined"){var s=arguments.length>1;return he===!1&&(s?K(t,e):Z(t)),s?document.cookie=t+"="+encodeURIComponent(e)+(n?"; expires="+new Date(+new Date+1e3*n).toUTCString()+(r?"; path="+r:"")+(i?"; domain="+i:"")+(o?"; secure":""):""):decodeURIComponent((("; "+document.cookie).split("; "+t+"=")[1]||"").split(";")[0])}}var Ee="localStorage",Zn=Ce.bind(null,"localStorage"),Xo=se("localStorage","getItem",Z),Yo=se("localStorage","setItem",K),Zo=se("localStorage","removeItem",ee);var Oe="sessionStorage",Kn=Ce.bind(null,"sessionStorage"),es=se("sessionStorage","getItem",Z),ts=se("sessionStorage","setItem",K),ns=se("sessionStorage","removeItem",ee);function xe(t){var e=t;try{if((e=JSON.parse(t))==="true")return!0;if(e==="false")return!1;if(q(e))return e;parseFloat(e)===e&&(e=parseFloat(e))}catch(n){}if(e!==null&&e!=="")return e}var fi=Zn(),gi=Kn(),mi=wt();function Qn(t,e){if(t){var n=It(e),r=!Ot(n),i=kt(n)?xe(localStorage.getItem(t)):void 0;if(r&&!fe(i))return i;var o=St(n)?xe(vt(t)):void 0;if(r&&o)return o;var s=Et(n)?xe(sessionStorage.getItem(t)):void 0;if(r&&s)return s;var a=Z(t);return r?a:{localStorage:i,sessionStorage:s,cookie:o,global:a}}}function pi(t,e,n){if(t&&!fe(e)){var r={},i=It(n),o=JSON.stringify(e),s=!Ot(i);return kt(i)&&(r[Ee]=Ze(Ee,e,xe(localStorage.getItem(t))),localStorage.setItem(t,o),s)?r[Ee]:St(i)&&(r[Se]=Ze(Se,e,xe(vt(t))),Yn(t,o),s)?r[Se]:Et(i)&&(r[Oe]=Ze(Oe,e,xe(sessionStorage.getItem(t))),sessionStorage.setItem(t,o),s)?r[Oe]:(r[ve]=Ze(ve,e,Z(t)),K(t,e),s?r[ve]:r)}}function hi(t,e){if(t){var n=It(e),r=Qn(t,dt),i={};return!fe(r.localStorage)&&kt(n)&&(localStorage.removeItem(t),i[Ee]=r.localStorage),!fe(r.cookie)&&St(n)&&(yt(t),i[Se]=r.cookie),!fe(r.sessionStorage)&&Et(n)&&(sessionStorage.removeItem(t),i[Oe]=r.sessionStorage),!fe(r.global)&&Ke(n,ve)&&(ee(t),i[ve]=r.global),i}}function It(t){return t?ie(t)?t:t.storage:lt}function kt(t){return fi&&Ke(t,Ee)}function St(t){return mi&&Ke(t,Se)}function Et(t){return gi&&Ke(t,Oe)}function Ot(t){return t===dt||t==="all"}function Ke(t,e){return t===lt||t===e||Ot(t)}function Ze(t,e,n){return{location:t,current:e,previous:n}}var er={setItem:pi,getItem:Qn,removeItem:hi};function bi(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function tr(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(t,i).enumerable})),n.push.apply(n,r)}return n}function nr(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?tr(Object(n),!0).forEach(function(r){bi(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):tr(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function rr(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},e={storage:er};return Xn(nr(nr({},e),t))}function vi(t){return Array.prototype.slice.call(window.document.querySelectorAll("script")).find(n=>n.src===t)}function yi(t,e){let n=t;return n.startsWith("http")||(n=`https://${e!=null&&e.www?"www.":""}${n}`),e!=null&&e.min?n=n+".min.js":e!=null&&e.js&&(n=n+".js"),e!=null&&e.query&&(n+="?"+e.query),n}function le(t,e){let n=vi(t);if(n!==void 0){let r=n==null?void 0:n.getAttribute("status");if(r==="loaded")return Promise.resolve(n);if(r==="loading")return new Promise((i,o)=>{n.addEventListener("load",()=>i(n)),n.addEventListener("error",s=>o(s))})}return new Promise((r,i)=>{var a,l;let o=window.document.createElement("script");o.type="text/javascript",o.src=yi(t,e),o.async=!0,o.setAttribute("status","loading");for(let[f,b]of Object.entries((a=e==null?void 0:e.attributes)!=null?a:{}))o.setAttribute(f,b);o.onload=()=>{o.onerror=o.onload=null,o.setAttribute("status","loaded"),r(o)},o.onerror=()=>{o.onerror=o.onload=null,o.setAttribute("status","error"),i(new Error(`Failed to load ${t}`))};let s=window.document.getElementsByTagName("script")[0];(l=s.parentElement)==null||l.insertBefore(o,s)})}var xt={id:"tag",handle(t,e){return G(this,null,function*(){de(e,t)&&wi(t.code,e)})}};function wi(t,e,n={}){let r;try{r=JSON.parse(t)}catch(o){r={code:t,lang:"javascript"}}let i=n.debug||!1;if(te())if(r.lang==="javascript")Ei(r.code,e);else{let o=document.createElement("span");o.innerHTML=Oi(r.code,e),document.body.insertAdjacentElement("beforeend",o),o.querySelectorAll("script").forEach(a=>{let l=document.createElement("script");l.type=l.type||"text/javascript",a.hasAttribute("src")&&(l.src=a.src),l.text=a.text,i&&console.log(`[JITSU] Executing script${a.hasAttribute("src")?` ${a.src}`:""}`,l.text),document.head.appendChild(l),document.head.removeChild(l)})}else i&&console.log("[JITSU] insertTags(): cannot insert tags in non-browser environment")}var Ii="al",ki="ve".split("").reverse().join(""),Si=globalThis[ki+Ii];function Ei(t,e){let n=`jitsu_event_${_t()}`;window[n]=e;let r=`(function(){
|
|
3
|
+
const event = ${n};
|
|
4
|
+
${t}
|
|
5
|
+
})()`;try{Si(r)}catch(i){console.error(`[JITSU] Error executing JS code: ${i.message}. Code: `,r)}finally{delete window[n]}return r}function Oi(t,e){return t.replace(/{{\s*event\s*}}/g,JSON.stringify(e))}var xi="cdn.lr-ingest.io/",jt={id:"logrocket",handle(t,e){return G(this,null,function*(){if(!de(e,t))return;_i(t.appId);let n=r=>{e.type==="identify"&&e.userId&&r.identify(e.userId,e.traits||{})};or().push(n),ir()==="loaded"&&sr(window.LogRocket)})}};function ir(){return window.__jitsuLrState||"fresh"}function Qe(t){window.__jitsuLrState=t}function or(){return window.__jitsuLrQueue||(window.__jitsuLrQueue=[])}function sr(t){let e=or();for(;e.length>0;){let n=e.shift();if(n)try{let r=n(t);r&&r.catch(i=>console.warn(`Async LogRocket method failed: ${i.message}`,i))}catch(r){console.warn(`LogRocket method failed: ${r.message}`,r)}}}function _i(t){return G(this,null,function*(){ir()==="fresh"&&(Qe("loading"),le(`${xi}LogRocket`,{min:!0,attributes:{crossOrigin:"anonymous"}}).then(()=>{if(window.LogRocket){try{window.LogRocket.init(t)}catch(e){console.warn(`LogRocket (id=${t}) init failed: ${e.message}`,e),Qe("failed")}Qe("loaded"),sr(window.LogRocket)}}).catch(e=>{console.warn(`LogRocket (id=${t}) init failed: ${e.message}`,e),Qe("failed")}))})}function ji(t,...e){return Object.fromEntries(Object.entries(t).filter(([n])=>!e.includes(n)))}var At={id:"gtm",handle(t,e){return G(this,null,function*(){var m,d,g,w,v,h,_,N,x,I,p,C,j,T;let n=!!t.debug;if(!de(e,t))return;yield Ai(t,e);let r=window[t.dataLayerName||"dataLayer"],i=y(y({},(e==null?void 0:e.traits)||{}),((m=e==null?void 0:e.context)==null?void 0:m.traits)||{}),o=ji(i,"id","userId","user_id","anonymousId","userId");n&&console.debug("GTM plugin will be applied to following payload",e);let s={email_address:i.email},a=W(y(y(y({},e.userId?{user_id:e.userId,userId:e.userId}:{}),e.anonymousId?{anonymousId:e.anonymousId}:{}),o),{user_data:Object.keys(s).length>0?s:void 0});n&&console.debug("GTM plugin will set following user-related data layer vars",a);let l=e.properties||{},f={page_location:l.url||((g=(d=e.context)==null?void 0:d.page)==null?void 0:g.url),page_title:l.title||((v=(w=e.context)==null?void 0:w.page)==null?void 0:v.title),page_path:l.path||((_=(h=e.context)==null?void 0:h.page)==null?void 0:_.path),page_hash:l.hash||((x=(N=e.context)==null?void 0:N.page)==null?void 0:x.hash),page_search:l.search||((p=(I=e.context)==null?void 0:I.page)==null?void 0:p.search),page_referrer:(T=(j=(C=e==null?void 0:e.context)==null?void 0:C.page)==null?void 0:j.referrer)!=null?T:""};n&&console.debug("GTM plugin will set following context (page) related data layer vars",a);let b=$=>{r.push($),n&&console.debug("GTM plugin will push following data to dataLayer",$)};switch(e.type){case"page":let{properties:$,context:U}=e,M=y(y({event:"page_view"},f),a);b(M);break;case"track":let{properties:J}=e,V=y(y(y({event:e.event},f),J),a);b(V);break;case"identify":let{traits:L}=e,O=y(y(y({event:"identify"},f),L),a);b(O);break}r.push(function(){this.reset()})})}};function Pi(){return window.__jitsuGtmState||"fresh"}function Pt(t){window.__jitsuGtmState=t}function Ai(t,e){return G(this,null,function*(){if(Pi()!=="fresh")return;Pt("loading");let n=t.dataLayerName||"dataLayer",r=t.containerId;(function(i,o,s){i[o]=i[o]||[],i[o].push({user_id:e.userId}),i[o].push({"gtm.start":new Date().getTime(),event:"gtm.js"});let a=o!="dataLayer"?"&l="+o:"";le("googletagmanager.com/gtm",{www:!0,js:!0,query:"id="+s+a}).then(()=>{Pt("loaded")}).catch(f=>{console.warn(`GTM (containerId=${r}) init failed: ${f.message}`,f),Pt("failed")})})(window,n,r)})}var Ni=[new Uint8Array([109,111,99,46,114,101,103,97,110,97,109,103,97,116,101,108,103,111,111,103]),new Uint8Array([103,97,116,103]),new Uint8Array([115,106])];function Ti(t){return new TextDecoder().decode(t)}function zi(){return Ni.map(t=>t.reverse()).map(Ti).join("/")}var Tt={id:"ga4-tag",handle(t,e){return G(this,null,function*(){var o,s;if(!de(e,t))return;yield Ri(t,e);let n=window[t.dataLayerName||"dataLayer"],r=function(){n.push(arguments)},i=y(y({},e.userId?{user_id:e.userId,userId:e.userId}:{}),e.anonymousId?{anonymousId:e.anonymousId}:{});switch(e.userId&&r("set",{user_id:e.userId}),e.type){case"page":if(t.autoPageView){console.log("autoPageView");break}let{properties:a,context:l}=e;if(a){let g=y({page_location:a.url,page_title:a.title,page_path:a.path,page_hash:a.hash,page_search:a.search,page_referrer:(s=(o=l==null?void 0:l.page)==null?void 0:o.referrer)!=null?s:""},i);r("event","page_view",g)}break;case"track":let{properties:f}=e,b=y(y({},f),i);r("event",e.event,b);break;case"identify":let{traits:m}=e,d=y(y({},m),i);r("event","identify",d);break}})}};function Ci(){return window.__jitsuGa4State||"fresh"}function Nt(t){window.__jitsuGa4State=t}function Ri(t,e){return G(this,null,function*(){if(Ci()!=="fresh")return;Nt("loading");let n=t.dataLayerName||"dataLayer",r=n!=="dataLayer"?"&l="+n:"",i=t.measurementIds;window[n]=window[n]||[];let o=function(){window[n].push(arguments)};o("js",new Date),o("config",i,y(y({},e.userId?{user_id:e.userId}:{}),t.autoPageView?{}:{send_page_view:!1})),le(zi(),{query:`id=${i}${r}`,www:!0}).then(()=>{Nt("loaded")}).catch(s=>{console.warn(`GA4 (containerId=${t.measurementIds}) init failed: ${s.message}`,s),Nt("failed")})})}function ar(t,e){return t==="*"||t.toLowerCase().trim()===(e||"").trim().toLowerCase()}function Di(t,e){return t==="*"?!0:(e=e||"",t.startsWith("*.")?e.endsWith(t.substring(1)):t===e)}function de(t,e){let{hosts:n="*",events:r="*"}=e;try{let i=Array.isArray(r)?r:r.split(`
|
|
6
|
+
`);return!!(Array.isArray(n)?n:n.split(`
|
|
7
|
+
`)).find(s=>{var a,l;return Di(s,(l=(a=t.context)==null?void 0:a.page)==null?void 0:l.host)})&&(!!i.find(s=>ar(s,t.type))||!!i.find(s=>ar(s,t.event)))}catch(i){throw console.warn(`Failed to apply filters: ${i.message}. Typeof events: ${typeof r}, typeof hosts: ${typeof n}. Values`,r,n),new Error(`Failed to apply filters: ${i.message}. Typeof events: ${typeof r}, typeof hosts: ${typeof n}`)}}var cr={[xt.id]:xt,[At.id]:At,[Tt.id]:Tt,[jt.id]:jt};var zt={name:"@jitsu/js",version:"1.11.0-beta.10",description:"",author:"Jitsu Dev Team <dev@jitsu.com>",main:"src/index.ts",types:"src/index.ts",files:["dist","compiled"],publishConfig:{main:"dist/jitsu.cjs.js",module:"dist/jitsu.es.js",types:"dist/index.d.ts",access:"public"},license:"MIT",private:!1,scripts:{clean:"rm -rf ./dist ./compiled","test:node":"vitest run","test:playwright":"playwright test ./__tests__/playwright",test:"pnpm run test:node",typecheck:"tsc --noEmit",build:"tsc && tsx bundle.mts",prepublishOnly:"pnpm run build","//build-deps":"Required by turbo ^build-deps - builds dist/ for workspace packages that import this","build-deps":"pnpm run build"},devDependencies:{"@jitsu/common-config":"workspace:*",tslib:"catalog:","@playwright/test":"^1.57.0",esbuild:"catalog:",tsx:"catalog:","@segment/analytics-next":"^1.75.0","@types/chalk":"^2.2.0","@types/node":"catalog:","@vitest/ui":"catalog:",chalk:"^4.1.2","cookie-parser":"^1.4.7",ejs:"^3.1.8",express:"^4.21.2","node-forge":"^1.3.2","raw-loader":"^4.0.2",typescript:"catalog:",vitest:"catalog:",jsondiffpatch:"workspace:*"},peerDependencies:{"@jitsu/protocols":"workspace:*"},dependencies:{analytics:"0.8.9"}};var ur=zt.version!=="0.0.0"?zt.version:"2.0.0",lr="@jitsu/js";var Ui="webflow.io,vercel.app,myshopify.com,ac,com.ac,edu.ac,gov.ac,net.ac,mil.ac,org.ac,ad,nom.ad,ae,co.ae,net.ae,org.ae,sch.ae,ac.ae,gov.ae,mil.ae,aero,af,gov.af,com.af,org.af,net.af,edu.af,ag,com.ag,org.ag,net.ag,co.ag,nom.ag,ai,off.ai,com.ai,net.ai,org.ai,al,com.al,edu.al,gov.al,mil.al,net.al,org.al,am,co.am,com.am,commune.am,net.am,org.am,ao,ed.ao,gv.ao,og.ao,co.ao,pb.ao,it.ao,aq,ar,bet.ar,com.ar,coop.ar,edu.ar,gob.ar,gov.ar,int.ar,mil.ar,musica.ar,mutual.ar,net.ar,org.ar,senasa.ar,tur.ar,arpa,e164.arpa,in-addr.arpa,ip6.arpa,iris.arpa,uri.arpa,urn.arpa,as,gov.as,asia,at,ac.at,co.at,gv.at,or.at,sth.ac.at,au,com.au,net.au,org.au,edu.au,gov.au,asn.au,id.au,act.au,nsw.au,nt.au,qld.au,sa.au,tas.au,vic.au,wa.au,aw,com.aw,ax,az,com.az,net.az,int.az,gov.az,org.az,edu.az,info.az,pp.az,mil.az,name.az,pro.az,biz.az,ba,com.ba,edu.ba,gov.ba,mil.ba,net.ba,org.ba,bb,biz.bb,co.bb,com.bb,edu.bb,gov.bb,info.bb,net.bb,org.bb,store.bb,tv.bb,bd,be,ac.be,bf,gov.bf,bg,a.bg,b.bg,c.bg,d.bg,e.bg,f.bg,g.bg,h.bg,i.bg,j.bg,k.bg,l.bg,m.bg,n.bg,o.bg,p.bg,q.bg,r.bg,s.bg,t.bg,u.bg,v.bg,w.bg,x.bg,y.bg,z.bg,0.bg,1.bg,2.bg,3.bg,4.bg,5.bg,6.bg,7.bg,8.bg,9.bg,bh,com.bh,edu.bh,net.bh,org.bh,gov.bh,bi,co.bi,com.bi,edu.bi,or.bi,org.bi,biz,bj,africa.bj,agro.bj,architectes.bj,assur.bj,avocats.bj,co.bj,com.bj,eco.bj,econo.bj,edu.bj,info.bj,loisirs.bj,money.bj,net.bj,org.bj,ote.bj,resto.bj,restaurant.bj,tourism.bj,univ.bj,bm,com.bm,edu.bm,gov.bm,net.bm,org.bm,bn,com.bn,edu.bn,gov.bn,net.bn,org.bn,bo,com.bo,edu.bo,gob.bo,int.bo,org.bo,net.bo,mil.bo,tv.bo,web.bo,br,9guacu.br,abc.br,adm.br,adv.br,agr.br,aju.br,am.br,anani.br,aparecida.br,app.br,arq.br,art.br,ato.br,b.br,barueri.br,belem.br,bhz.br,bib.br,bio.br,blog.br,bmd.br,boavista.br,bsb.br,campinagrande.br,campinas.br,caxias.br,cim.br,cng.br,cnt.br,com.br,contagem.br,coop.br,coz.br,cri.br,cuiaba.br,curitiba.br,def.br,des.br,det.br,dev.br,ecn.br,eco.br,edu.br,emp.br,enf.br,eng.br,esp.br,etc.br,eti.br,far.br,feira.br,flog.br,floripa.br,fm.br,fnd.br,fortal.br,fot.br,foz.br,fst.br,g12.br,geo.br,ggf.br,goiania.br,gov.br,gru.br,imb.br,ind.br,inf.br,jab.br,jampa.br,jdf.br,joinville.br,jor.br,jus.br,leg.br,lel.br,log.br,londrina.br,macapa.br,maceio.br,manaus.br,maringa.br,mat.br,med.br,mil.br,morena.br,mp.br,mus.br,natal.br,net.br,niteroi.br,nom.br,not.br,ntr.br,odo.br,ong.br,org.br,osasco.br,palmas.br,poa.br,ppg.br,pro.br,psc.br,psi.br,pvh.br,qsl.br,radio.br,rec.br,recife.br,rep.br,ribeirao.br,rio.br,riobranco.br,riopreto.br,salvador.br,sampa.br,santamaria.br,santoandre.br,saobernardo.br,saogonca.br,seg.br,sjc.br,slg.br,slz.br,sorocaba.br,srv.br,taxi.br,tc.br,tec.br,teo.br,the.br,tmp.br,trd.br,tur.br,tv.br,udi.br,vet.br,vix.br,vlog.br,wiki.br,zlg.br,bs,com.bs,net.bs,org.bs,edu.bs,gov.bs,bt,com.bt,edu.bt,gov.bt,net.bt,org.bt,bv,bw,co.bw,org.bw,by,gov.by,mil.by,com.by,of.by,bz,com.bz,net.bz,org.bz,edu.bz,gov.bz,ca,ab.ca,bc.ca,mb.ca,nb.ca,nf.ca,nl.ca,ns.ca,nt.ca,nu.ca,on.ca,pe.ca,qc.ca,sk.ca,yk.ca,gc.ca,cat,cc,cd,gov.cd,cf,cg,ch,ci,org.ci,or.ci,com.ci,co.ci,edu.ci,ed.ci,ac.ci,net.ci,go.ci,asso.ci,a\xE9roport.ci,int.ci,presse.ci,md.ci,gouv.ci,ck,cl,co.cl,gob.cl,gov.cl,mil.cl,cm,co.cm,com.cm,gov.cm,net.cm,cn,ac.cn,com.cn,edu.cn,gov.cn,net.cn,org.cn,mil.cn,co,arts.co,com.co,edu.co,firm.co,gov.co,info.co,int.co,mil.co,net.co,nom.co,org.co,rec.co,web.co,com,coop,cr,ac.cr,co.cr,ed.cr,fi.cr,go.cr,or.cr,sa.cr,cu,com.cu,edu.cu,org.cu,net.cu,gov.cu,inf.cu,cv,com.cv,edu.cv,int.cv,nome.cv,org.cv,cw,com.cw,edu.cw,net.cw,org.cw,cx,gov.cx,cy,ac.cy,biz.cy,com.cy,ekloges.cy,gov.cy,ltd.cy,mil.cy,net.cy,org.cy,press.cy,pro.cy,tm.cy,cz,de,dj,dk,dm,com.dm,net.dm,org.dm,edu.dm,gov.dm,do,art.do,com.do,edu.do,gob.do,gov.do,mil.do,net.do,org.do,sld.do,web.do,dz,art.dz,asso.dz,com.dz,edu.dz,gov.dz,org.dz,net.dz,pol.dz,soc.dz,tm.dz,ec,com.ec,info.ec,net.ec,fin.ec,k12.ec,med.ec,pro.ec,org.ec,edu.ec,gov.ec,gob.ec,mil.ec,edu,ee,edu.ee,gov.ee,riik.ee,lib.ee,med.ee,com.ee,pri.ee,aip.ee,org.ee,fie.ee,eg,com.eg,edu.eg,eun.eg,gov.eg,mil.eg,name.eg,net.eg,org.eg,sci.eg,er,es,com.es,nom.es,org.es,gob.es,edu.es,et,com.et,gov.et,org.et,edu.et,biz.et,name.et,info.et,net.et,eu,fi,aland.fi,fj,ac.fj,biz.fj,com.fj,gov.fj,info.fj,mil.fj,name.fj,net.fj,org.fj,pro.fj,fk,com.fm,edu.fm,net.fm,org.fm,fm,fo,fr,asso.fr,com.fr,gouv.fr,nom.fr,prd.fr,tm.fr,aeroport.fr,avocat.fr,avoues.fr,cci.fr,chambagri.fr,chirurgiens-dentistes.fr,experts-comptables.fr,geometre-expert.fr,greta.fr,huissier-justice.fr,medecin.fr,notaires.fr,pharmacien.fr,port.fr,veterinaire.fr,ga,gb,edu.gd,gov.gd,gd,ge,com.ge,edu.ge,gov.ge,org.ge,mil.ge,net.ge,pvt.ge,gf,gg,co.gg,net.gg,org.gg,gh,com.gh,edu.gh,gov.gh,org.gh,mil.gh,gi,com.gi,ltd.gi,gov.gi,mod.gi,edu.gi,org.gi,gl,co.gl,com.gl,edu.gl,net.gl,org.gl,gm,gn,ac.gn,com.gn,edu.gn,gov.gn,org.gn,net.gn,gov,gp,com.gp,net.gp,mobi.gp,edu.gp,org.gp,asso.gp,gq,gr,com.gr,edu.gr,net.gr,org.gr,gov.gr,gs,gt,com.gt,edu.gt,gob.gt,ind.gt,mil.gt,net.gt,org.gt,gu,com.gu,edu.gu,gov.gu,guam.gu,info.gu,net.gu,org.gu,web.gu,gw,gy,co.gy,com.gy,edu.gy,gov.gy,net.gy,org.gy,hk,com.hk,edu.hk,gov.hk,idv.hk,net.hk,org.hk,hm,hn,com.hn,edu.hn,org.hn,net.hn,mil.hn,gob.hn,hr,iz.hr,from.hr,name.hr,com.hr,ht,com.ht,shop.ht,firm.ht,info.ht,adult.ht,net.ht,pro.ht,org.ht,med.ht,art.ht,coop.ht,pol.ht,asso.ht,edu.ht,rel.ht,gouv.ht,perso.ht,hu,co.hu,info.hu,org.hu,priv.hu,sport.hu,tm.hu,2000.hu,agrar.hu,bolt.hu,casino.hu,city.hu,erotica.hu,erotika.hu,film.hu,forum.hu,games.hu,hotel.hu,ingatlan.hu,jogasz.hu,konyvelo.hu,lakas.hu,media.hu,news.hu,reklam.hu,sex.hu,shop.hu,suli.hu,szex.hu,tozsde.hu,utazas.hu,video.hu,id,ac.id,biz.id,co.id,desa.id,go.id,mil.id,my.id,net.id,or.id,ponpes.id,sch.id,web.id,ie,gov.ie,il,ac.il,co.il,gov.il,idf.il,k12.il,muni.il,net.il,org.il,im,ac.im,co.im,com.im,ltd.co.im,net.im,org.im,plc.co.im,tt.im,tv.im,in,5g.in,6g.in,ac.in,ai.in,am.in,bihar.in,biz.in,business.in,ca.in,cn.in,co.in,com.in,coop.in,cs.in,delhi.in,dr.in,edu.in,er.in,firm.in,gen.in,gov.in,gujarat.in,ind.in,info.in,int.in,internet.in,io.in,me.in,mil.in,net.in,nic.in,org.in,pg.in,post.in,pro.in,res.in,travel.in,tv.in,uk.in,up.in,us.in,info,int,eu.int,io,com.io,iq,gov.iq,edu.iq,mil.iq,com.iq,org.iq,net.iq,ir,ac.ir,co.ir,gov.ir,id.ir,net.ir,org.ir,sch.ir,is,net.is,com.is,edu.is,gov.is,org.is,int.is,it,gov.it,edu.it,je,co.je,net.je,org.je,jm,jo,com.jo,org.jo,net.jo,edu.jo,sch.jo,gov.jo,mil.jo,name.jo,jobs,jp,ac.jp,ad.jp,co.jp,ed.jp,go.jp,gr.jp,lg.jp,ne.jp,or.jp,ke,ac.ke,co.ke,go.ke,info.ke,me.ke,mobi.ke,ne.ke,or.ke,sc.ke,kg,org.kg,net.kg,com.kg,edu.kg,gov.kg,mil.kg,kh,ki,edu.ki,biz.ki,net.ki,org.ki,gov.ki,info.ki,com.ki,km,org.km,nom.km,gov.km,prd.km,tm.km,edu.km,mil.km,ass.km,com.km,kn,net.kn,org.kn,edu.kn,gov.kn,kp,com.kp,edu.kp,gov.kp,org.kp,rep.kp,tra.kp,kr,ac.kr,co.kr,es.kr,go.kr,hs.kr,kg.kr,mil.kr,ms.kr,ne.kr,or.kr,pe.kr,re.kr,sc.kr,kw,com.kw,edu.kw,emb.kw,gov.kw,ind.kw,net.kw,org.kw,ky,com.ky,edu.ky,net.ky,org.ky,kz,org.kz,edu.kz,net.kz,gov.kz,mil.kz,com.kz,la,int.la,net.la,info.la,edu.la,gov.la,per.la,com.la,org.la,lb,com.lb,edu.lb,gov.lb,net.lb,org.lb,lc,com.lc,net.lc,co.lc,org.lc,edu.lc,gov.lc,li,lk,gov.lk,sch.lk,net.lk,int.lk,com.lk,org.lk,edu.lk,ngo.lk,soc.lk,web.lk,ltd.lk,assn.lk,grp.lk,hotel.lk,ac.lk,lr,com.lr,edu.lr,gov.lr,org.lr,net.lr,ls,ac.ls,biz.ls,co.ls,edu.ls,gov.ls,info.ls,net.ls,org.ls,sc.ls,lt,gov.lt,lu,lv,com.lv,edu.lv,gov.lv,org.lv,mil.lv,id.lv,net.lv,asn.lv,conf.lv,ly,com.ly,net.ly,gov.ly,plc.ly,edu.ly,sch.ly,med.ly,org.ly,id.ly,ma,co.ma,net.ma,gov.ma,org.ma,ac.ma,press.ma,mc,tm.mc,asso.mc,md,me,co.me,net.me,org.me,edu.me,ac.me,gov.me,its.me,priv.me,mg,org.mg,nom.mg,gov.mg,prd.mg,tm.mg,edu.mg,mil.mg,com.mg,co.mg,mh,mil,mk,com.mk,org.mk,net.mk,edu.mk,gov.mk,inf.mk,name.mk,ml,com.ml,edu.ml,gouv.ml,gov.ml,net.ml,org.ml,presse.ml,mm,mn,gov.mn,edu.mn,org.mn,mo,com.mo,net.mo,org.mo,edu.mo,gov.mo,mobi,mp,mq,mr,gov.mr,ms,com.ms,edu.ms,gov.ms,net.ms,org.ms,mt,com.mt,edu.mt,net.mt,org.mt,mu,com.mu,net.mu,org.mu,gov.mu,ac.mu,co.mu,or.mu,museum,mv,aero.mv,biz.mv,com.mv,coop.mv,edu.mv,gov.mv,info.mv,int.mv,mil.mv,museum.mv,name.mv,net.mv,org.mv,pro.mv,mw,ac.mw,biz.mw,co.mw,com.mw,coop.mw,edu.mw,gov.mw,int.mw,museum.mw,net.mw,org.mw,mx,com.mx,org.mx,gob.mx,edu.mx,net.mx,my,biz.my,com.my,edu.my,gov.my,mil.my,name.my,net.my,org.my,mz,ac.mz,adv.mz,co.mz,edu.mz,gov.mz,mil.mz,net.mz,org.mz,na,info.na,pro.na,name.na,school.na,or.na,dr.na,us.na,mx.na,ca.na,in.na,cc.na,tv.na,ws.na,mobi.na,co.na,com.na,org.na,name,nc,asso.nc,nom.nc,ne,net,nf,com.nf,net.nf,per.nf,rec.nf,web.nf,arts.nf,firm.nf,info.nf,other.nf,store.nf,ng,com.ng,edu.ng,gov.ng,i.ng,mil.ng,mobi.ng,name.ng,net.ng,org.ng,sch.ng,ni,ac.ni,biz.ni,co.ni,com.ni,edu.ni,gob.ni,in.ni,info.ni,int.ni,mil.ni,net.ni,nom.ni,org.ni,web.ni,nl,no,fhs.no,vgs.no,fylkesbibl.no,folkebibl.no,museum.no,idrett.no,priv.no,mil.no,stat.no,dep.no,kommune.no,herad.no,np,nr,biz.nr,info.nr,gov.nr,edu.nr,org.nr,net.nr,com.nr,nu,nz,ac.nz,co.nz,cri.nz,geek.nz,gen.nz,govt.nz,health.nz,iwi.nz,kiwi.nz,maori.nz,mil.nz,m\u0101ori.nz,net.nz,org.nz,parliament.nz,school.nz,om,co.om,com.om,edu.om,gov.om,med.om,museum.om,net.om,org.om,pro.om,onion,org,pa,ac.pa,gob.pa,com.pa,org.pa,sld.pa,edu.pa,net.pa,ing.pa,abo.pa,med.pa,nom.pa,pe,edu.pe,gob.pe,nom.pe,mil.pe,org.pe,com.pe,net.pe,pf,com.pf,org.pf,edu.pf,pg,ph,com.ph,net.ph,org.ph,gov.ph,edu.ph,ngo.ph,mil.ph,i.ph,pk,com.pk,net.pk,edu.pk,org.pk,fam.pk,biz.pk,web.pk,gov.pk,gob.pk,gok.pk,gon.pk,gop.pk,gos.pk,info.pk,pl,com.pl,net.pl,org.pl,aid.pl,agro.pl,atm.pl,auto.pl,biz.pl,edu.pl,gmina.pl,gsm.pl,info.pl,mail.pl,miasta.pl,media.pl,mil.pl,nieruchomosci.pl,nom.pl,pc.pl,powiat.pl,priv.pl,realestate.pl,rel.pl,sex.pl,shop.pl,sklep.pl,sos.pl,szkola.pl,targi.pl,tm.pl,tourism.pl,travel.pl,turystyka.pl,pm,pn,gov.pn,co.pn,org.pn,edu.pn,net.pn,post,pr,com.pr,net.pr,org.pr,gov.pr,edu.pr,isla.pr,pro.pr,biz.pr,info.pr,name.pr,est.pr,prof.pr,ac.pr,pro,aaa.pro,aca.pro,acct.pro,avocat.pro,bar.pro,cpa.pro,eng.pro,jur.pro,law.pro,med.pro,recht.pro,ps,edu.ps,gov.ps,sec.ps,plo.ps,com.ps,org.ps,net.ps,pt,net.pt,gov.pt,org.pt,edu.pt,int.pt,publ.pt,com.pt,nome.pt,pw,co.pw,ne.pw,or.pw,ed.pw,go.pw,belau.pw,py,com.py,coop.py,edu.py,gov.py,mil.py,net.py,org.py,qa,com.qa,edu.qa,gov.qa,mil.qa,name.qa,net.qa,org.qa,sch.qa,re,asso.re,com.re,nom.re,ro,arts.ro,com.ro,firm.ro,info.ro,nom.ro,nt.ro,org.ro,rec.ro,store.ro,tm.ro,www.ro,rs,ac.rs,co.rs,edu.rs,gov.rs,in.rs,org.rs,ru,rw,ac.rw,co.rw,coop.rw,gov.rw,mil.rw,net.rw,org.rw,sa,com.sa,net.sa,org.sa,gov.sa,med.sa,pub.sa,edu.sa,sch.sa,sb,com.sb,edu.sb,gov.sb,net.sb,org.sb,sc,com.sc,gov.sc,net.sc,org.sc,edu.sc,sd,com.sd,net.sd,org.sd,edu.sd,med.sd,tv.sd,gov.sd,info.sd,se,a.se,ac.se,b.se,bd.se,brand.se,c.se,d.se,e.se,f.se,fh.se,fhsk.se,fhv.se,g.se,h.se,i.se,k.se,komforb.se,kommunalforbund.se,komvux.se,l.se,lanbib.se,m.se,n.se,naturbruksgymn.se,o.se,org.se,p.se,parti.se,pp.se,press.se,r.se,s.se,t.se,tm.se,u.se,w.se,x.se,y.se,z.se,sg,com.sg,net.sg,org.sg,gov.sg,edu.sg,per.sg,sh,com.sh,net.sh,gov.sh,org.sh,mil.sh,si,sj,sk,sl,com.sl,net.sl,edu.sl,gov.sl,org.sl,sm,sn,art.sn,com.sn,edu.sn,gouv.sn,org.sn,perso.sn,univ.sn,so,com.so,edu.so,gov.so,me.so,net.so,org.so,sr,ss,biz.ss,com.ss,edu.ss,gov.ss,me.ss,net.ss,org.ss,sch.ss,st,co.st,com.st,consulado.st,edu.st,embaixada.st,mil.st,net.st,org.st,principe.st,saotome.st,store.st,su,sv,com.sv,edu.sv,gob.sv,org.sv,red.sv,sx,gov.sx,sy,edu.sy,gov.sy,net.sy,mil.sy,com.sy,org.sy,sz,co.sz,ac.sz,org.sz,tc,td,tel,tf,tg,th,ac.th,co.th,go.th,in.th,mi.th,net.th,or.th,tj,ac.tj,biz.tj,co.tj,com.tj,edu.tj,go.tj,gov.tj,int.tj,mil.tj,name.tj,net.tj,nic.tj,org.tj,test.tj,web.tj,tk,tl,gov.tl,tm,com.tm,co.tm,org.tm,net.tm,nom.tm,gov.tm,mil.tm,edu.tm,tn,com.tn,ens.tn,fin.tn,gov.tn,ind.tn,info.tn,intl.tn,mincom.tn,nat.tn,net.tn,org.tn,perso.tn,tourism.tn,to,com.to,gov.to,net.to,org.to,edu.to,mil.to,tr,av.tr,bbs.tr,bel.tr,biz.tr,com.tr,dr.tr,edu.tr,gen.tr,gov.tr,info.tr,mil.tr,k12.tr,kep.tr,name.tr,net.tr,org.tr,pol.tr,tel.tr,tsk.tr,tv.tr,web.tr,nc.tr,tt,co.tt,com.tt,org.tt,net.tt,biz.tt,info.tt,pro.tt,int.tt,coop.tt,jobs.tt,mobi.tt,travel.tt,museum.tt,aero.tt,name.tt,gov.tt,edu.tt,tv,tw,edu.tw,gov.tw,mil.tw,com.tw,net.tw,org.tw,idv.tw,game.tw,ebiz.tw,club.tw,tz,ac.tz,co.tz,go.tz,hotel.tz,info.tz,me.tz,mil.tz,mobi.tz,ne.tz,or.tz,sc.tz,tv.tz,ua,com.ua,edu.ua,gov.ua,in.ua,net.ua,org.ua,ug,co.ug,or.ug,ac.ug,sc.ug,go.ug,ne.ug,com.ug,org.ug,uk,ac.uk,co.uk,gov.uk,ltd.uk,me.uk,net.uk,nhs.uk,org.uk,plc.uk,police.uk,us,dni.us,fed.us,isa.us,kids.us,nsn.us,ak.us,al.us,ar.us,as.us,az.us,ca.us,co.us,ct.us,dc.us,de.us,fl.us,ga.us,gu.us,hi.us,ia.us,id.us,il.us,in.us,ks.us,ky.us,la.us,ma.us,md.us,me.us,mi.us,mn.us,mo.us,ms.us,mt.us,nc.us,nd.us,ne.us,nh.us,nj.us,nm.us,nv.us,ny.us,oh.us,ok.us,or.us,pa.us,pr.us,ri.us,sc.us,sd.us,tn.us,tx.us,ut.us,vi.us,vt.us,va.us,wa.us,wi.us,wv.us,wy.us,uy,com.uy,edu.uy,gub.uy,mil.uy,net.uy,org.uy,uz,co.uz,com.uz,net.uz,org.uz,va,vc,com.vc,net.vc,org.vc,gov.vc,mil.vc,edu.vc,ve,arts.ve,bib.ve,co.ve,com.ve,e12.ve,edu.ve,firm.ve,gob.ve,gov.ve,info.ve,int.ve,mil.ve,net.ve,nom.ve,org.ve,rar.ve,rec.ve,store.ve,tec.ve,web.ve,vg,vi,co.vi,com.vi,k12.vi,net.vi,org.vi,vn,ac.vn,ai.vn,biz.vn,com.vn,edu.vn,gov.vn,health.vn,id.vn,info.vn,int.vn,io.vn,name.vn,net.vn,org.vn,pro.vn,vu,com.vu,edu.vu,net.vu,org.vu,wf,ws,com.ws,net.ws,org.ws,gov.ws,edu.ws,yt,ye,com.ye,edu.ye,gov.ye,net.ye,mil.ye,org.ye,ac.za,agric.za,alt.za,co.za,edu.za,gov.za,grondar.za,law.za,mil.za,net.za,ngo.za,nic.za,nis.za,nom.za,org.za,school.za,tm.za,web.za,zm,ac.zm,biz.zm,co.zm,com.zm,edu.zm,gov.zm,info.zm,mil.zm,net.zm,org.zm,sch.zm,zw,ac.zw,co.zw,gov.zw,mil.zw,org.zw".split(","),dr={};Ui.forEach(t=>{dr[t]=!0});var Ji=dr;function Ct(t){let[e]=t.split(":"),n=e.split(".");if(n[n.length-1]==="localhost"||n.length<2)return n[n.length-1];{let r=n[n.length-2]+"."+n[n.length-1];return n.length>2&&Ji[r]?n[n.length-3]+"."+r:r}}var Rt=class{constructor(e){this.selfOptions=e||{},this.pipes={}}options(e){return e&&(this.selfOptions=e),this.selfOptions}pipe(e,n){let r=n;if(typeof e=="string"){if(typeof r=="undefined")return this.pipes[e];this.pipes[e]=r}if(e&&e.name){if(r=e,r.processor===this)return r;this.pipes[r.name]=r}return r.processor=this,r}process(e,n){let r=e;r.options=this.options();let i=n||e.pipe||"default",o;for(;i;)typeof r.nextAfterChildren!="undefined"&&(r.next=r.nextAfterChildren,r.nextAfterChildren=null),typeof i=="string"&&(i=this.pipe(i)),i.process(r),o=i,i=null,r&&r.next&&(r=r.next,i=r.pipe||o);return r.hasResult?r.result:void 0}},fr=Rt;var Dt=class{constructor(e){this.name=e,this.filters=[]}process(e){if(!this.processor)throw new Error("add this pipe to a processor before using it");let n=this.debug,r=this.filters.length,i=e;for(let o=0;o<r;o++){let s=this.filters[o];if(n&&this.log(`filter: ${s.filterName}`),s(i),typeof i=="object"&&i.exiting){i.exiting=!1;break}}!i.next&&this.resultCheck&&this.resultCheck(i)}log(e){console.log(`[jsondiffpatch] ${this.name} pipe, ${e}`)}append(...e){return this.filters.push(...e),this}prepend(...e){return this.filters.unshift(...e),this}indexOf(e){if(!e)throw new Error("a filter name is required");for(let n=0;n<this.filters.length;n++)if(this.filters[n].filterName===e)return n;throw new Error(`filter not found: ${e}`)}list(){return this.filters.map(e=>e.filterName)}after(e,...n){let r=this.indexOf(e);return this.filters.splice(r+1,0,...n),this}before(e,...n){let r=this.indexOf(e);return this.filters.splice(r,0,...n),this}replace(e,...n){let r=this.indexOf(e);return this.filters.splice(r,1,...n),this}remove(e){let n=this.indexOf(e);return this.filters.splice(n,1),this}clear(){return this.filters.length=0,this}shouldHaveResult(e){if(e===!1){this.resultCheck=null;return}if(!this.resultCheck)return this.resultCheck=n=>{if(!n.hasResult){console.log(n);let r=new Error(`${this.name} failed`);throw r.noResult=!0,r}},this}},$t=Dt;var be=class{setResult(e){return this.result=e,this.hasResult=!0,this}exit(){return this.exiting=!0,this}push(e,n){return e.parent=this,typeof n!="undefined"&&(e.childName=n),e.root=this.root||this,e.options=e.options||this.options,this.children?(this.children[this.children.length-1].next=e,this.children.push(e)):(this.children=[e],this.nextAfterChildren=this.next||null,this.next=e),e.next=this,this}};var Ut=class extends be{constructor(e,n){super(),this.left=e,this.right=n,this.pipe="diff"}setResult(e){return super.setResult(e)}},$e=Ut;var Jt=class extends be{constructor(e,n){super(),this.left=e,this.delta=n,this.pipe="patch"}},et=Jt;function Li(t,e){if(t.length!==e.length)return!1;for(let n=0;n<t.length;n++)if(t[n]!==e[n])return!1;return!0}var Lt=function(e){if(e.left===e.right){e.setResult(void 0).exit();return}if(typeof e.left=="undefined"){if(typeof e.right=="function")throw new Error("functions are not supported");e.setResult([e.right]).exit();return}if(typeof e.right=="undefined"){e.setResult([e.left,0,0]).exit();return}if(typeof e.left=="function"||typeof e.right=="function")throw new Error("functions are not supported");if(e.leftType=e.left===null?"null":typeof e.left,e.rightType=e.right===null?"null":typeof e.right,e.leftType!==e.rightType){e.setResult([e.left,e.right]).exit();return}if(e.leftType==="boolean"||e.leftType==="number"||e.leftType==="string"){e.setResult([e.left,e.right]).exit();return}if(e.leftType==="object"&&(e.leftIsArray=Array.isArray(e.left)),e.rightType==="object"&&(e.rightIsArray=Array.isArray(e.right)),e.leftIsArray!==e.rightIsArray){e.setResult([e.left,e.right]).exit();return}if(e.leftIsArray&&e.rightIsArray)if(Li(e.left,e.right)){e.setResult(void 0).exit();return}else{e.setResult([e.left,e.right]).exit();return}e.left instanceof RegExp&&(e.right instanceof RegExp?e.setResult([e.left.toString(),e.right.toString()]).exit():e.setResult([e.left,e.right]).exit())};Lt.filterName="trivial";var Ft=function(e){if(typeof e.delta=="undefined"){e.setResult(e.left).exit();return}if(e.nested=!Array.isArray(e.delta),e.nested)return;let n=e.delta;if(n.length===1){e.setResult(n[0]).exit();return}if(n.length===2){if(e.left instanceof RegExp){let r=/^\/(.*)\/([gimyu]+)$/.exec(n[1]);if(r){e.setResult(new RegExp(r[1],r[2])).exit();return}}e.setResult(n[1]).exit();return}n.length===3&&n[2]===0&&e.setResult(void 0).exit()};Ft.filterName="trivial";var Gt=t=>{if(!t||!t.children)return;let e=t.children.length,n,r=t.result;for(let i=0;i<e;i++)n=t.children[i],typeof n.result!="undefined"&&(r=r||{},r[n.childName]=n.result);r&&t.leftIsArray&&(r._t="a"),t.setResult(r).exit()};Gt.filterName="collectChildren";var Mt=t=>{if(t.leftIsArray||t.leftType!=="object")return;let e=t.left,n=t.right,r,i,o=t.options.propertyFilter;for(r in e)Object.prototype.hasOwnProperty.call(e,r)&&(o&&!o(r,t)||(i=new $e(e[r],n[r]),t.push(i,r)));for(r in n)Object.prototype.hasOwnProperty.call(n,r)&&(o&&!o(r,t)||typeof e[r]=="undefined"&&(i=new $e(void 0,n[r]),t.push(i,r)));if(!t.children||t.children.length===0){t.setResult(void 0).exit();return}t.exit()};Mt.filterName="objects";var Bt=function(e){if(!e.nested)return;let n=e.delta;if(n._t)return;let r=n,i,o;for(i in r)o=new et(e.left[i],r[i]),e.push(o,i);e.exit()};Bt.filterName="objects";var qt=function(e){if(!e||!e.children||e.delta._t)return;let r=e.left,i=e.children.length,o;for(let s=0;s<i;s++){o=e.children[s];let a=o.childName;Object.prototype.hasOwnProperty.call(e.left,a)&&o.result===void 0?delete r[a]:r[a]!==o.result&&(r[a]=o.result)}e.setResult(r).exit()};qt.filterName="collectChildren";var Vt=function(e){e.left instanceof Date?(e.right instanceof Date?e.left.getTime()!==e.right.getTime()?e.setResult([e.left,e.right]):e.setResult(void 0):e.setResult([e.left,e.right]),e.exit()):e.right instanceof Date&&e.setResult([e.left,e.right]).exit()};Vt.filterName="dates";var Ht=class{constructor(e){this.processor=new fr(e),this.processor.pipe(new $t("diff").append(Gt,Lt,Vt,Mt).shouldHaveResult()),this.processor.pipe(new $t("patch").append(qt,Ft,Bt).shouldHaveResult())}options(e){return this.processor.options(e)}diff(e,n){return this.processor.process(new $e(e,n))}patch(e,n){return this.processor.process(new et(e,n))}},gr=Ht;function mr(t){return new gr(t)}var qi=mr(),_e={writeKey:void 0,host:void 0,debug:!1,fetch:void 0,echoEvents:!1,cookieDomain:void 0,cookieNames:{},cookieCapture:{},runtime:void 0,fetchTimeoutMs:void 0,s2s:void 0,idEndpoint:void 0,errorPolicy:"log",defaultPayloadContext:{},privacy:{dontSend:!1,disableUserIds:!1,ipPolicy:"keep",consentCategories:{}}},pr=(t,e)=>{for(let n of Object.keys(_e)){let r=e[n];n==="privacy"?typeof r=="object"?t.privacy=y(y(W(y({},_e.privacy),{consentCategories:y({},_e.privacy.consentCategories)}),t.privacy),r):typeof r=="undefined"&&(e.hasOwnProperty("privacy")||!t.hasOwnProperty("privacy"))&&(t.privacy=W(y({},_e.privacy),{consentCategories:y({},_e.privacy.consentCategories)})):typeof r=="undefined"?(e.hasOwnProperty(n)||!t.hasOwnProperty(n))&&(t[n]=_e[n]):t[n]=r}},Vi=t=>{if(!t)return{};let e=t.length>0&&t.charAt(0)==="?"?t.substring(1):t,n={},r=(e[0]==="?"?e.substr(1):e).split("&");for(let i=0;i<r.length;i++){let o=r[i].split("=");n[decodeURIComponent(o[0])]=decodeURIComponent(o[1]||"")}return n};function Hi(t){let e=t.substring(4);return e==="campaign"?"name":e}function Wi(t){return Object.entries(t).filter(([e])=>e.indexOf("utm_")===0).reduce((e,[n,r])=>W(y({},e),{[Hi(n)]:r}),{})}function nt(t,e){try{return t()}catch(n){return e}}function Xi(t){let e=t.getItem("__user_traits");typeof e=="string"&&(e=nt(()=>JSON.parse(e),{})),(typeof e!="object"||e===null||Array.isArray(e))&&(e={});let n=t.getItem("__group_traits");return typeof n=="string"&&(n=nt(()=>JSON.parse(n),{})),(typeof n!="object"||n===null||Array.isArray(n))&&(n={}),y(y({},n||{}),e||{})}function hr(t){var r;let n=`; ${document.cookie}`.split(`; ${t}=`);return n.length===2?(r=n.pop())==null?void 0:r.split(";").shift():void 0}function Yi(t,e){let n=y({fbc:"_fbc",fbp:"_fbp"},e),r=Object.entries(n).reduce((i,[o,s])=>(i[o]=t.getCookie(s),i),{});return y(y({},r),Ki(t))}function Zi(t){if(typeof t=="string"){if(t.startsWith("GA1")||t.startsWith("GS1"))return t.split(".")[2];{let e=t.match(/^GS\d+\.\d+\.(?:[\w_-]+[$])*s(\d+)(?:$|[$])/);return e?e[1]:void 0}}}function Ki(t){var o;let e=t.getCookies(),n=(o=e._ga)==null?void 0:o.split(".").slice(-2).join("."),r=Object.entries(e).filter(([s])=>s.startsWith("_ga_")),i=r.length>0?Object.fromEntries(r.map(([s,a])=>{let l=Zi(a);return l?[s.substring(4),l]:null}).filter(s=>s!==null)):void 0;if(n||i)return{ga4:{clientId:n,sessionIds:i}}}function Wt(t,{domain:e,secure:n}){document.cookie=t+"=;domain="+e+";path=/;expires=Thu, 01 Jan 1970 00:00:01 GMT;SameSite="+(n?"None":"Lax")+(n?";secure":"")}function Qi(t,e,{domain:n,secure:r}){document.cookie=t+"="+e+";domain="+n+";path=/;expires="+new Date(new Date().getTime()+1e3*60*60*24*365*5).toUTCString()+";SameSite="+(r?"None":"Lax")+(r?";secure":"")}var je={__anon_id:"__eventn_id",__user_id:"__eventn_uid",__user_traits:"__eventn_id_usr",__group_id:"__group_id",__group_traits:"__group_traits"},eo=(t,e)=>({setItem(n,r){let i=e(n)||n;if(typeof r=="undefined"){Wt(i,{domain:t,secure:window.location.protocol==="https:"});return}let o=typeof r=="object"&&r!==null?encodeURIComponent(JSON.stringify(r)):r;Qi(i,o,{domain:t,secure:window.location.protocol==="https:"})},getItem(n){let r=e(n)||n,i=hr(r);if(n==="__anon_id")return i;if(typeof i=="undefined"&&n==="__user_id"){let o=rt(hr(e("__user_traits")||"__eventn_id_usr"))||{};return o.internal_id||o.user_id||o.id||o.userId}return rt(i)},removeItem(n){Wt(e(n)||n,{domain:t,secure:window.location.protocol==="https:"})},reset(){for(let n of Object.keys(je))Wt(e(n)||n,{domain:t,secure:window.location.protocol==="https:"})}});function Qt(t){let e=n=>{var r,i,o,s,a;switch(n){case"__anon_id":return((r=t.cookieNames)==null?void 0:r.anonymousId)||je.__anon_id;case"__user_id":return((i=t.cookieNames)==null?void 0:i.userId)||je.__user_id;case"__user_traits":return((o=t.cookieNames)==null?void 0:o.userTraits)||je.__user_traits;case"__group_id":return((s=t.cookieNames)==null?void 0:s.groupId)||je.__group_id;case"__group_traits":return((a=t.cookieNames)==null?void 0:a.groupTraits)||je.__group_traits;default:return n}};return{getCookie(n){var o;let i=`; ${document.cookie}`.split(`; ${n}=`);return i.length===2?(o=i.pop())==null?void 0:o.split(";").shift():void 0},getCookies(){let n=`; ${document.cookie}`,r={},i=n.matchAll(/(\w+)=([^;]+)/g);for(let o of i)r[o[1]]=o[2];return r},documentEncoding(){return window.document.characterSet},timezoneOffset(){return new Date().getTimezoneOffset()},store(){return eo(t.cookieDomain||Ct(window.location.hostname),e)},language(){return window.navigator.language},pageTitle(){return window.document.title},pageUrl(){return window.location.href},referrer(){return window.document.referrer},screen(){return{width:window.screen.width,height:window.screen.height,innerWidth:window.innerWidth,innerHeight:window.innerHeight,density:Math.floor(window.devicePixelRatio)}},userAgent(){return window.navigator.userAgent}}}function en(t){let e={};return{reset(){Object.keys(e).forEach(n=>delete e[n])},setItem(n,r){t&&console.log(`[JITSU EMPTY RUNTIME] Set storage item ${n}=${JSON.stringify(r)}`),typeof r=="undefined"?delete e[n]:e[n]=r},getItem(n){let r=e[n];return t&&console.log(`[JITSU EMPTY RUNTIME] Get storage item ${n}=${JSON.stringify(r)}`),r},removeItem(n){t&&console.log(`[JITSU EMPTY RUNTIME] Get storage item ${n}=${e[n]}`),delete e[n]}}}var tn=t=>({documentEncoding(){},timezoneOffset(){},getCookie(e){},getCookies(){return{}},store(){return en(t.debug)},language(){},pageTitle(){},pageUrl(){},referrer(){},screen(){},userAgent(){}});function Xt(t){return typeof t!="object"||!t?t:JSON.parse(JSON.stringify(t))}function Kt(t,e){return typeof e!="object"||e===null||Array.isArray(e)||e instanceof Date||typeof t!="object"||t===null||Array.isArray(t)||t instanceof Date?e:Object.entries(e).reduce((n,[r,i])=>(n[r]=Kt(t[r],i),n),t)}function te(){return typeof document!="undefined"&&typeof window!="undefined"}function to(t){return t.indexOf("//")===0&&t.lastIndexOf("/")===1?"/":t}var nn=/#.*$/;function no(t){let n=/(http[s]?:\/\/)?([^\/\s]+\/)(.*)/g.exec(t);return"/"+(n&&n[3]?n[3].split("?")[0].replace(nn,""):"")}function ro(){if(!te())return;let t=document.getElementsByTagName("link");for(var e=0,n;n=t[e];e++)if(n.getAttribute("rel")==="canonical")return n.getAttribute("href")}function io(){if(!te())return;let t=ro();return t?t.match(/\?/)?t:t+window.location.search:window.location.href.replace(nn,"")}function oo(t,e,n,r){var g,w,v,h,_,N,x,I,p,C,j,T,$,U,M;let i=e.runtime||(te()?Qt(e):tn(e)),o=i.pageUrl(),s=o?nt(()=>new URL(o),void 0):void 0,a=s?Vi(s.search):{},l=t.properties||{};if(t.type==="page"&&(l.url||o)){let J=o||l.url;l.url&&l.url!==io()&&(J=l.url),l.url=J.replace(nn,""),l.path=to(no(J))}let f=Kt(e.defaultPayloadContext,((g=t.properties)==null?void 0:g.context)||((w=t.options)==null?void 0:w.context)||{});(v=t.properties)==null||delete v.context;let b=i.referrer(),m={library:{name:lr,version:ur,env:te()?"browser":"node"},consent:typeof((h=e.privacy)==null?void 0:h.consentCategories)=="object"&&Object.keys((_=e.privacy)==null?void 0:_.consentCategories).length?{categoryPreferences:e.privacy.consentCategories}:void 0,userAgent:(N=i.userAgent)==null?void 0:N.call(i),locale:(x=i.language)==null?void 0:x.call(i),screen:(I=i.screen)==null?void 0:I.call(i),ip:(p=i==null?void 0:i.ip)==null?void 0:p.call(i),traits:t.type!="identify"&&t.type!="group"?y(y({},Xi(n)||{}),((C=t==null?void 0:t.options)==null?void 0:C.traits)||{}):void 0,page:{path:l.path||s&&s.pathname,referrer:b,referring_domain:nt(()=>b&&new URL(b).hostname),host:s&&s.host,search:l.search||s&&s.search,title:l.title||i.pageTitle(),url:l.url||o,encoding:l.encoding||i.documentEncoding()},clientIds:(j=e.privacy)!=null&&j.disableUserIds?void 0:Yi(i,e.cookieCapture||{}),campaign:Wi(a)},d=W(y({},t),{userId:((T=t==null?void 0:t.options)==null?void 0:T.userId)||(t==null?void 0:t.userId),anonymousId:(($=t==null?void 0:t.options)==null?void 0:$.anonymousId)||(t==null?void 0:t.anonymousId),groupId:((U=t==null?void 0:t.options)==null?void 0:U.groupId)||n.getItem("__group_id"),timestamp:new Date().toISOString(),sentAt:new Date().toISOString(),messageId:_t(l.path||s&&s.pathname),writeKey:lo(e.writeKey),context:Kt(m,f)});return delete d.meta,delete d.options,(M=e.privacy)!=null&&M.disableUserIds&&(delete d.userId,delete d.anonymousId,delete d.context.traits,delete d.groupId),d}function so(t){let e=Object.keys(t);return e.length===1&&e[0]==="__diff"}function ao(t,e,n,r,i){return G(this,null,function*(){let o=[];for(let s of t){let a=[];if(s.newEvents)try{a=s.newEvents.map(f=>f==="same"?Xt(n):so(f)?qi.patch(Xt(n),f.__diff):f)}catch(f){console.error(`[JITSU] Error applying '${s.id}' changes to event: ${f==null?void 0:f.message}`,f)}else a=[Xt(n)];let l=y(y({},s.credentials),s.options);if(s.deviceOptions.type==="internal-plugin"){let f=cr[s.deviceOptions.name];if(f)for(let b of a)try{o.push(f.handle(W(y({},l),{debug:r}),b))}catch(m){console.warn(`[JITSU] Error processing event with internal plugin '${s.deviceOptions.name}': ${m==null?void 0:m.message}`,m)}else console.warn(`[JITSU] Unknown internal plugin '${s.deviceOptions.name}' for destination '${s.id}'`)}else if(s.deviceOptions.type==="analytics-plugin"){yield le(s.deviceOptions.packageCdn);let f=window[s.deviceOptions.moduleVarName];if(!f)console.warn(`[JITSU] Broken plugin '${s.deviceOptions.packageCdn}' for destination '${s.id}' - it doesn't export '${s.deviceOptions.moduleVarName}' variable`);else{let b;try{b=(typeof f=="function"?f:f.init)(l)}catch(m){console.warn(`[JITSU] Error creating plugin '${s.deviceOptions.moduleVarName}@${s.deviceOptions.packageCdn}' for destination '${s.id}': ${m==null?void 0:m.message}`,m)}try{r&&console.log(`[JITSU] Plugin '${s.deviceOptions.moduleVarName}@${s.deviceOptions.packageCdn}' for destination '${s.id}' initialized with config:`,b.config),b.initialize({config:b.config,instance:i})}catch(m){console.warn(`[JITSU] Error initializing plugin '${s.deviceOptions.moduleVarName}@${s.deviceOptions.packageCdn}' for destination '${s.id}': ${m==null?void 0:m.message}. Config: ${JSON.stringify(b.config)}`,m);continue}if(b[e])for(let m of a)try{b[e]({payload:m,config:b.config,instance:i})}catch(d){console.warn(`[JITSU] Error processing ${e}() with plugin '${s.deviceOptions.moduleVarName}@${s.deviceOptions.packageCdn}' for destination '${s.id}': ${d==null?void 0:d.message}`,d)}}}}})}function co(t){return t.length===25&&t.charAt(0)==="c"}function uo(t){if(t){let[,e]=t.split(":",2);if(!e&&!co(t))throw new Error(`Legacy write key detected - ${t}! This format doesn't work anymore, it should be 'key:secret'. Please download a new key from Jitsu UI`)}return t}function lo(t){if(t){let[e,n]=t.split(":",2);return n?`${e}:***`:"***"}return t}function Yt(t){let e=t.errorPolicy||"log";return typeof e=="function"?e:e==="rethrow"?(n,...r)=>{throw new Error(n)}:(n,...r)=>{console.error(n,...r)}}function tt(t,e,n,r,i){return G(this,null,function*(){var _,N;let o=!!n.s2s,s=n.debug?{"X-Enable-Debug":"true"}:{},a=oo(e,n,i,o);if(n.echoEvents){console.log(`[JITSU DEBUG] sending '${t}' event:`,a);return}let l=o?`${n.host}/api/s/s2s/${t}`:`${n.host}/api/s/${t}`,f=n.fetch||globalThis.fetch;if(!f)throw new Error("Please specify fetch function in jitsu plugin initialization, fetch isn't available in global scope");let b=n.fetchTimeoutMs?new AbortController:void 0,m=n.fetchTimeoutMs?setTimeout(()=>{b==null||b.abort()},n.fetchTimeoutMs):void 0,d=n.writeKey?{"X-Write-Key":n.writeKey}:{},g=typeof((_=n.privacy)==null?void 0:_.ipPolicy)=="undefined"||((N=n.privacy)==null?void 0:N.ipPolicy)==="keep"?{}:{"X-IP-Policy":n.privacy.ipPolicy},w;try{w=yield f(l,{method:"POST",headers:y(y(y({"Content-Type":"application/json"},d),s),g),body:JSON.stringify(a),signal:b==null?void 0:b.signal}),m&&clearTimeout(m)}catch(x){return Yt(n)(`Call to ${l} failed with error ${x.message}`),Promise.resolve()}let v;try{v=yield w.text()}catch(x){console.warn(`Can't read response text from ${l} (status - ${w.status} ${w.statusText}): ${x==null?void 0:x.message}`)}if(n.debug&&console.log(`[JITSU DEBUG] ${l} replied ${w.status}: ${v}. Original payload:
|
|
8
|
+
${JSON.stringify(a,null,2)}`),!w.ok)return Yt(n)(`Call to ${l} failed with error: ${w.status} - ${w.statusText}: ${v}`),Promise.resolve();let h;try{h=JSON.parse(v)}catch(x){return Yt(n)(`Can't parse JSON: ${v}: ${x==null?void 0:x.message}`),Promise.resolve()}if(h.destinations&&h.destinations.length>0){if(n.s2s)console.warn(`[JITSU] ${e.type} responded with list of ${h.destinations.length} destinations. However, this code is running in server-to-server mode, so destinations will be ignored`,n.debug?JSON.stringify(h.destinations,null,2):void 0);else if(te())return n.debug&&console.log("[JITSU] Processing device destinations: ",JSON.stringify(h.destinations,null,2)),ao(h.destinations,t,a,!!n.debug,r)}return a})}var fo=["$doNotSend"];function br(t){let e=y({},t);for(let n of fo)delete e[n];return e}var wr=(t={},e)=>(pr(t,t),{name:"jitsu",config:t,initialize:n=>G(null,null,function*(){let{config:r}=n;if(r.debug&&console.debug("[JITSU DEBUG] Initializing Jitsu plugin with config: ",JSON.stringify(r,null,2)),!r.host&&!r.echoEvents)throw new Error("Please specify host variable in jitsu plugin initialization, or set echoEvents to true");if(uo(r.writeKey),r.idEndpoint){if(!te()){console.error("[JITSU] 'idEndpoint' option can be used only in browser environment");return}try{let i=r.fetch||globalThis.fetch,o=new AbortController;setTimeout(()=>o.abort(),1e3);let s=r.cookieDomain||Ct(window.location.hostname),a=yield i(r.idEndpoint+"?domain="+encodeURIComponent(s),{credentials:"include",signal:o.signal});a.ok?r.debug&&console.log(`[JITSU DEBUG] Fetch idEndpoint: ${a.status}`):console.error(`[JITSU] Can't fetch idEndpoint: ${a.status} - ${a.statusText}`)}catch(i){console.error(`[JITSU] Can't fetch idEndpoint: ${i.message}`)}}}),page:n=>{var s;let{payload:r,config:i,instance:o}=n;if(!((s=i.privacy)!=null&&s.dontSend))return tt("page",r,i,o,e)},track:n=>{var s;let{payload:r,config:i,instance:o}=n;if(!((s=i.privacy)!=null&&s.dontSend))return tt("track",r,i,o,e)},identify:n=>{var a,l,f;let{payload:r,config:i,instance:o}=n;if((a=i.privacy)!=null&&a.dontSend||(l=i.privacy)!=null&&l.disableUserIds)return;e.setItem("__user_id",r.userId);let s=(f=r.traits)==null?void 0:f.$doNotSend;return r.traits&&typeof r.traits=="object"&&(r.traits=br(r.traits),e.setItem("__user_traits",r.traits)),s?Promise.resolve():tt("identify",r,i,o,e)},reset:n=>{let{config:r,instance:i}=n;e.reset(),r.debug&&console.log("[JITSU DEBUG] Resetting Jitsu plugin storage")},methods:{configure(n){var o,s,a,l;let r=((o=t.privacy)==null?void 0:o.disableUserIds)||((s=t.privacy)==null?void 0:s.dontSend);if(pr(t,n),!(((a=t.privacy)==null?void 0:a.disableUserIds)||((l=t.privacy)==null?void 0:l.dontSend))&&r){t.debug&&console.log("[JITSU] Enabling Anonymous ID. Generating new Id.");let f=this.instance,b=rn(),m=f.user();m&&(m.anonymousId=b),e.setItem("__anon_id",b),f.setAnonymousId(b)}},group(n,r,i,o){var m,d;if((m=t.privacy)!=null&&m.dontSend||(d=t.privacy)!=null&&d.disableUserIds)return;typeof n=="number"&&(n=n+"");let s=this.instance,a=s.user(),l=(i==null?void 0:i.userId)||(a==null?void 0:a.userId),f=(i==null?void 0:i.anonymousId)||(a==null?void 0:a.anonymousId)||e.getItem("__anon_id");e.setItem("__group_id",n);let b=r==null?void 0:r.$doNotSend;return r&&typeof r=="object"&&(r=br(r),e.setItem("__group_traits",r)),b?Promise.resolve():tt("group",y(y({type:"group",groupId:n,traits:r},f?{anonymousId:f}:{}),l?{userId:l}:{}),t,s,e)}}}),Zt=0;function vr(){var n;Zt=(Zt+1)%Number.MAX_SAFE_INTEGER;let t=Date.now()%2147483647;return(te()&&((n=window==null?void 0:window.performance)==null?void 0:n.now())||t)+Zt}function _t(t=""){let e=Date.now();return(Math.random()*e*yr(t!=null?t:"",vr())%Number.MAX_SAFE_INTEGER).toString(36)+(Math.random()*e*yr(t!=null?t:"",vr())%Number.MAX_SAFE_INTEGER).toString(36)}function rn(){for(var t="",e="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx",n=0,r=Math.random()*4294967295|0;n++<36;){var i=e[n-1],o=r&15,s=i=="x"?o:o&3|8;t+=i=="-"||i=="4"?i:s.toString(16),r=n%8==0?Math.random()*4294967295|0:r>>4}return t}function yr(t,e=0){let n=3735928559^e,r=1103547991^e;for(let i=0,o;i<t.length;i++)o=t.charCodeAt(i),n=Math.imul(n^o,2654435761),r=Math.imul(r^o,1597334677);return n=Math.imul(n^n>>>16,2246822507)^Math.imul(r^r>>>13,3266489909),r=Math.imul(r^r>>>16,2246822507)^Math.imul(n^n>>>13,3266489909),4294967296*(2097151&r)+(n>>>0)}function rt(t){let e=t;(t==null?void 0:t.indexOf("%7B%22"))===0&&(e=decodeURIComponent(t));try{if(e=JSON.parse(e),e==="true")return!0;if(e==="false")return!1;if(typeof e=="object")return e;parseFloat(e)===e&&(e=parseFloat(e))}catch(n){}if(!(e===null||e===""))return e}function go(t,e,n=[]){var l,b,m;let r={},i=d=>({setItem(g,w){var v,h;(v=t.privacy)!=null&&v.dontSend||(h=t.privacy)!=null&&h.disableUserIds||(t.debug&&console.log(`[JITSU DEBUG] Caching storage setItem: ${g}=${w}`),r[g]=w,d.setItem(g,w))},getItem(g){var v,h;if((v=t.privacy)!=null&&v.dontSend||(h=t.privacy)!=null&&h.disableUserIds)return;let w=r[g]||d.getItem(g);return t.debug&&console.log(`[JITSU DEBUG] Caching storage getItem: ${g}=${w}. Evicted from cache: ${!r[g]}`),w},reset(){for(let g of[...Object.keys(r)])delete r[g];d.reset()},removeItem(g){t.debug&&console.log(`[JITSU DEBUG] Caching storage removeItem: ${g}`),delete r[g],d.removeItem(g)}}),o=i(((l=e.store)==null?void 0:l.call(e))||en(t.debug)),s=rr({debug:!!t.debug,storage:o,plugins:[wr(t,o),...n]}),a=W(y({},s),{page:(...d)=>d.length===2&&typeof d[0]=="string"&&typeof d[1]=="object"?s.page(y({name:d[0]},d[1])):s.page(...d),identify:(...d)=>{d[0]&&typeof d[0]!="object"&&typeof d[0]!="string"&&(d[0]=d[0]+"");let g=s.storage,w=i(g);return typeof d[0]=="string"?w.setItem("__user_id",d[0]):typeof d[0]=="object"&&w.setItem("__user_traits",d[0]),d.length===2&&typeof d[1]=="object"&&w.setItem("__user_traits",d[1]),s.identify(...d)},setContextProperty(d,g){t.debug&&console.log(`[JITSU DEBUG] Setting context property '${d}':${JSON.stringify(g)}`),t.defaultPayloadContext?t.defaultPayloadContext[d]=g:t.defaultPayloadContext={[d]:g}},getContextProperty(d){var g;return t.debug&&console.log(`[JITSU DEBUG] Getting context property '${d}'`),(g=t.defaultPayloadContext)==null?void 0:g[d]},setAnonymousId:d=>{t.debug&&console.log("[JITSU DEBUG] Setting anonymous id to "+d),o.setItem("__anon_id",d);let g=s.user();g&&(g.anonymousId=d),s.setAnonymousId(d)},reset(){return G(this,null,function*(){t.debug&&console.log("[JITSU DEBUG] Called reset(). Storage state",JSON.stringify(s.user())),o.reset(),yield s.reset(),this.setAnonymousId(rn()),t.debug&&console.log("[JITSU DEBUG] User state after reset",JSON.stringify(s.user()))})},configure(d){return G(this,null,function*(){var g,w;t.debug&&console.log("[JITSU DEBUG] Update Jitsu config with",JSON.stringify(d)),((g=d.privacy)!=null&&g.disableUserIds||(w=d.privacy)!=null&&w.dontSend)&&o.reset();for(let v of Object.values(s.plugins))typeof v.configure=="function"&&v.configure(d)})},group(d,g,w,v){return G(this,null,function*(){let h=[];for(let _ of Object.values(s.plugins))_.group&&h.push(yield _.group(d,g,w,v));return h[0]})},getConfiguration(){return t}});return((b=t.privacy)!=null&&b.disableUserIds||(m=t.privacy)!=null&&m.dontSend)&&o.reset(),a}function mo(t){var e,n;return W(y({},t),{host:((e=t.host)!=null?e:"").indexOf("https://")!==0&&((n=t.host)!=null?n:"").indexOf("http://")!==0?`https://${t.host}`:t.host})}function Ir(t){let e=mo(t),n=te(),r=e.runtime||(n?Qt(e):tn(e));return go(e,r)}function po(t){return t.replace(/([-_][a-z])/gi,e=>e.toUpperCase().replace("-","").replace("_",""))}var ho=(t,e)=>t.replace(new RegExp(`^${e}`),""),it=(t=[])=>({path:e=>[...t,po(t.length>0?ho(e,t.join("-")+"-"):e)],parse:e=>e}),Ue=(t=[])=>W(y({},it(t)),{parse:e=>e==="true"||e==="1"||e==="yes"}),on=(t=[])=>W(y({},it(t)),{parse:e=>{try{return JSON.parse(e)}catch(n){return console.error(`Can't parse Jitsu Option as JSON: ${e}`),{}}}}),bo={debug:Ue(),"privacy-disable-user-ids":Ue(["privacy"]),"privacy-dont-send":Ue(["privacy"]),"privacy-ip-policy":it(["privacy"]),"echo-events":Ue(),"init-only":Ue(),"cookie-names":on(),"cookie-capture":on(),"default-payload-context":on()};function vo(t){return bo[t]||it()}function yo(t,e,n){let r=t,i=0;for(;i<e.length-1;i++){let o=e[i];r[o]=r[o]||{},r=r[o]}r[e[i]]=n}function wo(t){return t.getAttributeNames().filter(e=>e.indexOf("data-")===0).map(e=>e.substring(5)).reduce((e,n)=>{var s;let r=vo(n),i=((s=r.path)==null?void 0:s.call(r,n))||[n],o=t.getAttribute(`data-${n}`);return o!==null&&yo(e,i,r.parse(o)),e},{})}function Io(t,e){if(typeof t=="function")t(e);else if(Array.isArray(t)&&typeof t[0]=="string"){let[n,...r]=t;typeof e[n]=="function"?e[n](...r):console.warn(`Method ${n} is not supported, ignoring callback`)}else console.warn("Invalid jitsu queue callback",t)}(function(){function t(){let o=window.document.currentScript;if(!o)throw new Error("Can't find script element");let s=new URL(o.src).origin;return W(y(y({},(window==null?void 0:window.jitsuConfig)||{}),wo(o)),{host:s})}let e=t(),n=e.namespace||"jitsu";e.debug&&console.log("Jitsu options: ",JSON.stringify(e));let r=Ir(e);if(e.onload){let o=window[e.onload];o||console.warn(`onload function ${e.onload} is not found in window`),typeof o=="function"?o(r):console.warn(`onload function ${e.onload} is not callable: ${typeof o}`)}window[n]=r;let i=window[n+"Q"]&&window[n+"Q"].length?[...window[n+"Q"]]:[];window[n+"Q"]={push:o=>{typeof o=="function"?o(r):console.warn(`${n}Q.push() accepts only function, ${typeof o} given`)}},e.debug&&console.log(`[JITSU DEBUG] Jitsu callback queue size: ${i.length}`,i),i.forEach(o=>{try{Io(o,r)}catch(s){console.warn("Error processing callback from Jitsu queue",s)}}),e.initOnly||r.page()})();})();
|