@jitsu/js 1.6.1 → 1.7.2
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/.turbo/turbo-build.log +105 -105
- package/.turbo/turbo-clean.log +5 -5
- package/.turbo/turbo-test.log +1293 -50
- package/__tests__/node/nodejs.test.ts +38 -0
- package/dist/index.d.ts +1 -10
- package/dist/jitsu.cjs.js +80 -36
- package/dist/jitsu.d.ts +2 -0
- package/dist/jitsu.es.js +81 -35
- package/dist/web/p.js.txt +1219 -1
- package/package.json +4 -4
- package/rollup.config.js +8 -1
- package/src/analytics-plugin.ts +67 -26
- package/src/browser.ts +26 -4
- package/src/index.ts +17 -4
- package/src/jitsu.ts +3 -0
package/dist/web/p.js.txt
CHANGED
|
@@ -1 +1,1219 @@
|
|
|
1
|
-
(function(){"use strict";function n$2(e,t,n,r,o){for(t=t.split?t.split("."):t,r=0;r<t.length;r++)e=e?e[t[r]]:o;return e===o?n:e}var e="undefined",o$1="object",g$2="any",m$1="*",j$1="__",F$2="undefined"!=typeof process?process:{};F$2.env&&F$2.env.NODE_ENV;var $$1="undefined"!=typeof window;function M$1(e,t){return t.charAt(0)[e]()+t.slice(1)}null!=F$2.versions&&F$2.versions.node,"undefined"!=typeof Deno&&Deno.core,$$1&&"nodejs"===window.name||"undefined"!=typeof navigator&&(navigator.userAgent.includes("Node.js")||navigator.userAgent.includes("jsdom"));var U$1=M$1.bind(null,"toUpperCase"),H$1=M$1.bind(null,"toLowerCase");function J$2(e){return Y$1(e)?U$1("null"):"object"==typeof e?yn(e):Object.prototype.toString.call(e).slice(8,-1)}function R$1(e,t){void 0===t&&(t=!0);var n=J$2(e);return t?H$1(n):n}function V$1(e,t){return typeof t===e}var W$1=V$1.bind(null,"function"),q$1=V$1.bind(null,"string"),I$2=V$1.bind(null,"undefined"),Q$1=V$1.bind(null,"boolean");function Y$1(e){return null===e}function nn(e){return"number"===R$1(e)&&!isNaN(e)}function rn(e){return"array"===R$1(e)}function on(e){if(!un(e))return!1;for(var t=e;null!==Object.getPrototypeOf(t);)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}function un(e){return e&&("object"==typeof e||null!==e)}function yn(e){return W$1(e.constructor)?e.constructor.name:null}function hn(e){return e instanceof Error||q$1(e.message)&&e.constructor&&nn(e.constructor.stackTraceLimit)}function On(e,t){if("object"!=typeof t||Y$1(t))return!1;if(t instanceof e)return!0;var n=R$1(new e(""));if(hn(t))for(;t;){if(R$1(t)===n)return!0;t=Object.getPrototypeOf(t)}return!1}function $n(e,t){var n=e instanceof Element||e instanceof HTMLDocument;return n&&t?Tn(e,t):n}function Tn(e,t){return void 0===t&&(t=""),e&&e.nodeName===t.toUpperCase()}function _n(e){var t=[].slice.call(arguments,1);return function(){return e.apply(void 0,[].slice.call(arguments).concat(t))}}function n$1(e){try{return decodeURIComponent(e.replace(/\+/g," "))}catch(e){return null}}function s(e){return function(e){for(var t,n=Object.create(null),r=/([^&=]+)=?([^&]*)/g;t=r.exec(e);){var o=n$1(t[1]),i=n$1(t[2]);"[]"===o.substring(o.length-2)?(n[o=o.substring(0,o.length-2)]||(n[o]=[])).push(i):n[o]=""===i||i}for(var a in n){var s=a.split("[");s.length>1&&(m(n,s.map((function(e){return e.replace(/[?[\]\\ ]/g,"")})),n[a]),delete n[a])}return n}(function(e){if(e){var t=e.match(/\?(.*)/);return t&&t[1]?t[1].split("#")[0]:""}return $$1&&window.location.search.substring(1)}(e))}function m(e,t,n){for(var r=t.length-1,o=0;o<r;++o){var i=t[o];if("__proto__"===i||"constructor"===i)break;i in e||(e[i]={}),e=e[i]}e[t[r]]=n}function y$1(){for(var e="",t=0,n=4294967295*Math.random()|0;t++<36;){var r="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx"[t-1],o=15&n;e+="-"==r||"4"==r?r:("x"==r?o:3&o|8).toString(16),n=t%8==0?4294967295*Math.random()|0:n>>4}return e}V$1.bind(null,"symbol"),On.bind(null,TypeError),On.bind(null,SyntaxError),_n($n,"form"),_n($n,"button"),_n($n,"input"),_n($n,"select");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(e){return n[o][e]}function f(e,t){return n[o][e]=t}function i$2(e){delete n[o][e]}function u$1(e,t,n){var r;try{if(b$2(e)){var o=window[e];r=o[t].bind(o)}}catch(e){}return r||n}n[o]||(n[o]={});var c$1={};function b$2(t){if(typeof c$1[t]!==e)return c$1[t];try{var n=window[t];n.setItem(e,e),n.removeItem(e)}catch(e){return c$1[t]=!1}return c$1[t]=!0}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=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 o=e,i=t,a=[],s=a,c=!1;function u(){s===a&&(s=a.slice())}function l(){return i}function g(e){if(typeof e!==h$1)throw new Error("Listener"+I$1);var t=!0;return u(),s.push(e),function(){if(t){t=!1,u();var n=s.indexOf(e);s.splice(n,1)}}}function d(e){if(!on(e))throw new Error("Act != obj");if(typeof e.type===v)throw new Error("ActType "+v);if(c)throw new Error("Dispatch in reducer");try{c=!0,i=o(i,e)}finally{c=!1}for(var t=a=s,n=0;n<t.length;n++)(0,t[n])();return e}return d({type:"@@redux/INIT"}),(r={dispatch:d,subscribe:g,getState:l,replaceReducer:function(e){if(typeof e!==h$1)throw new Error("next reducer"+I$1);o=e,d({type:"@@redux/INIT"})}})[b$1]=function(){var e,t=g;return(e={subscribe:function(e){if("object"!=typeof e)throw new TypeError("Observer != obj");function n(){e.next&&e.next(l())}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,o){var i,a=t(n,r,o),s=a.dispatch,c={getState:a.getState,dispatch:function(e){return s(e)}};return i=[].slice.call(e).map((function(e){return e(c)})),g$1({},a,{dispatch:s=P.apply(void 0,i)(a.dispatch)})}}}var N$1=j$1+"anon_id",A$1=j$1+"user_id",_=j$1+"user_traits",k$1="userId",j="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(o){if(o.type===z.bootstrap){var i=o.params,a=o.user,s=o.persistedUser,c=o.initialUser,u=s.userId===a.userId;s.anonymousId!==a.anonymousId&&t(N$1,a.anonymousId),u||t(A$1,a.userId),c.traits&&t(_,g$1({},u&&s.traits?s.traits:{},c.traits));var l=Object.keys(o.params);if(l.length){var g=i.an_uid,d=i.an_event,m=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]=i[t]}return t.match(q)&&(e.props[t.replace(q,"")]=i[t]),t.match(V)&&(e.traits[t.replace(V,"")]=i[t]),e}),{campaign:{},props:{},traits:{}});n.dispatch(g$1({type:z.params,raw:i},m,g?{userId:g}:{})),g&&setTimeout((function(){return e.identify(g,m.traits)}),0),d&&setTimeout((function(){return e.track(d,m.props)}),0),Object.keys(m.campaign).length&&n.dispatch({type:z.campaign,campaign:m.campaign})}}return r(o)}}}}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(e){var t=e.storage,n=t.setItem,r=t.removeItem,o=t.getItem;return function(e){return function(t){return function(i){var a=i.userId,s=i.traits,c=i.options;if(i.type===z.reset&&([A$1,_,N$1].forEach((function(e){r(e)})),[k$1,j,"traits"].forEach((function(e){i$2($(e))}))),i.type===z.identify){o(N$1)||n(N$1,y$1());var u=o(A$1),l=o(_)||{};u&&u!==a&&e.dispatch({type:z.userIdChanged,old:{userId:u,traits:l},new:{userId:a,traits:s},options:c}),a&&n(A$1,a),s&&n(_,g$1({},l,s))}return t(i)}}}}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,o){return t()?r(e):n<1?o(g$1({},e,{queue:!0})):new Promise((function(e){return setTimeout(e,10)})).then((function(i){return J$1(e,t,n-10).then(r,o)}))}))}var X=function(e){var t=e.data,n=e.action,r=e.instance,o=e.state,i=e.allPlugins,a=e.allMatches,s=e.store,c=e.EVENTS;try{var u=o.plugins,l=o.context,g=n.type,d=g.match(H),m=t.exact.map((function(e){return e.pluginName}));d&&(m=a.during.map((function(e){return e.pluginName})));var f=function(e,t){return function(n,r,o){var i=r.config,a=r.name,s=a+"."+n.type;o&&(s=o.event);var c=n.type.match(H)?function(e,t,n,r,o){return function(i,a){var s=r?r.name:e,c=a&&te(a)?a:n;if(r&&(!(c=a&&te(a)?a:[e]).includes(e)||1!==c.length))throw new Error("Method "+t+" can only abort "+e+" plugin. "+JSON.stringify(c)+" input valid");return g$1({},o,{abort:{reason:i,plugins:c,caller:t,_:s}})}}(a,s,t,o,n):function(e,t){return function(){throw new Error(e.type+" action not cancellable. Remove abort in "+t)}}(n,s);return{payload:ie(n),instance:e,config:i||{},abort:c}}}(r,m),p=t.exact.reduce((function(e,t){var n=t.pluginName,r=t.methodName,o=!1;return r.match(/^initialize/)||r.match(/^reset/)||(o=!u[n].loaded),l.offline&&r.match(/^(page|track|identify)/)&&(o=!0),e[""+n]=o,e}),{});return Promise.resolve(t.exact.reduce((function(e,o,a){var s=o.pluginName;return Promise.resolve(e).then((function(e){function o(){return Promise.resolve(e)}var a=function(){if(t.namespaced&&t.namespaced[s])return Promise.resolve(t.namespaced[s].reduce((function(e,t,n){return Promise.resolve(e).then((function(e){return t.method&&W$1(t.method)?(function(e,t){var n=re(e);if(n&&n.name===t){var r=re(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,o=s,a=t.pluginName,function(e,t){return g$1({},n,{abort:{reason:e,plugins:t||[o],caller:g,from:a||o}})}),config:K(t.pluginName,u,i),plugins:u})).then((function(t){var n=on(t)?t:{};return Promise.resolve(g$1({},e,n))}))):e;var n,o,a}))}),Promise.resolve(n))).then((function(t){e[s]=t}));e[s]=n}();return a&&a.then?a.then(o):o()}))}),Promise.resolve({}))).then((function(e){return Promise.resolve(t.exact.reduce((function(n,o,a){try{var c=t.exact.length===a+1,l=o.pluginName,m=i[l];return Promise.resolve(n).then((function(t){var n=e[l]?e[l]:{};if(d&&(n=t),Z(n,l))return G$1({data:n,method:g,instance:r,pluginName:l,store:s}),Promise.resolve(t);if(Z(t,l))return c&&G$1({data:t,method:g,instance:r,store:s}),Promise.resolve(t);if(p.hasOwnProperty(l)&&!0===p[l])return s.dispatch({type:"queue",plugin:l,payload:n,_:{called:"queue",from:"queueMechanism"}}),Promise.resolve(t);var o=f(e[l],i[l]);return Promise.resolve(m[g]({abort:o.abort,payload:n,instance:r,config:K(l,u,i),plugins:u})).then((function(o){var i=on(o)?o:{},a=g$1({},t,i),c=e[l];if(Z(c,l))G$1({data:c,method:g,instance:r,pluginName:l,store:s});else{var u=g+":"+l;(u.match(/:/g)||[]).length<2&&!g.match(W)&&!g.match(F$1)&&r.dispatch(g$1({},d?a:n,{type:u,_:{called:u,from:"submethod"}}))}return Promise.resolve(a)}))}))}catch(e){return Promise.reject(e)}}),Promise.resolve(n))).then((function(e){if(!(g.match(H)||g.match(/^registerPlugin/)||g.match(F$1)||g.match(W)||g.match(/^params/)||g.match(/^userIdChanged/))){if(c.plugins.includes(g),e._&&e._.originalAction===g)return e;var n=g$1({},e,{_:{originalAction:e.type,called:e.type,from:"engineEnd"}});ee(e,t.exact.length)&&!g.match(/End$/)&&(n=g$1({},n,{type:e.type+"Aborted"})),s.dispatch(n)}return e}))}))}catch(e){return Promise.reject(e)}},H=/Start$/,W=/^bootstrap/,F$1=/^ready/;function G$1(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 K(e,t,n){var r=t[e]||n[e];return r&&r.config?r.config:{}}function Q(e,t){return t.reduce((function(t,n){return n[e]?t.concat({methodName:e,pluginName:n.name,method:n[e]}):t}),[])}function Y(e,t){var n=e.replace(H,""),r=t?":"+t:"";return[""+e+r,""+n+r,n+"End"+r]}function Z(e,t){var n=e.abort;return!!n&&(!0===n||ne(n,t)||n&&ne(n.plugins,t))}function ee(e,t){var n=e.abort;if(!n)return!1;if(!0===n||q$1(n))return!0;var r=n.plugins;return te(n)&&n.length===t||te(r)&&r.length===t}function te(e){return Array.isArray(e)}function ne(e,t){return!(!e||!te(e))&&e.includes(t)}function re(e){var t=e.match(/(.*):(.*)/);return!!t&&{method:t[1],name:t[2]}}function ie(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 ae(e,t,n){var r={};return function(o){return function(i){return function(a){try{var s,c=function(e){return s?e:i(g)},u=a.type,l=a.plugins,g=a;if(a.abort)return Promise.resolve(i(a));if(u===z.enablePlugin&&o.dispatch({type:z.initializeStart,plugins:l,disabled:[],fromEnable:!0,meta:a.meta}),u===z.disablePlugin&&setTimeout((function(){return L$1(a.meta.rid,{payload:a})}),0),u===z.initializeEnd){var d=t(),m=Object.keys(d),f=m.filter((function(e){return l.includes(e)})).map((function(e){return d[e]})),p=[],v=[],b=a.disabled,h=f.map((function(e){var t=e.name;return J$1(e,e.loaded,1e4).then((function(n){return r[t]||(o.dispatch({type:z.pluginReadyType(t),name:t,events:Object.keys(e).filter((function(e){return!T.includes(e)}))}),r[t]=!0),p=p.concat(t),e})).catch((function(e){if(e instanceof Error)throw new Error(e);return v=v.concat(e.name),e}))}));Promise.all(h).then((function(e){var t={plugins:p,failed:v,disabled:b};setTimeout((function(){m.length===h.length+b.length&&o.dispatch(g$1({},{type:z.ready},t))}),0)}))}var y=function(){if(u!==z.bootstrap)return/^ready:([^:]*)$/.test(u)&&setTimeout((function(){return function(e,t,n){var r=t(),o=e.getState(),i=o.plugins,a=o.queue,s=o.user;if(!o.context.offline&&a&&a.actions&&a.actions.length){var c=a.actions.reduce((function(e,t,n){return i[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(c.processIndex&&c.processIndex.length){c.processIndex.forEach((function(t){var o=a.actions[t],c=o.plugin,u=o.payload.type,l=r[c][u];if(l&&W$1(l)){var g=function(e,t){return void 0===e&&(e={}),void 0===t&&(t={}),[k$1,j].reduce((function(n,r){return e.hasOwnProperty(r)&&t[r]&&t[r]!==e[r]&&(n[r]=t[r]),n}),e)}(o.payload,s);l({payload:g,config:i[c].config,instance:n});var d=u+":"+c;e.dispatch(g$1({},g,{type:d,_:{called:d,from:"queueDrain"}}))}}));var u=a.actions.filter((function(e,t){return!~c.processIndex.indexOf(t)}));a.actions=u}}}(o,t,e)}),0),Promise.resolve(function(e,t,n,r,o){try{var i=W$1(t)?t():t,a=e.type,s=a.replace(H,"");if(e._&&e._.called)return Promise.resolve(e);var c=n.getState(),u=(d=i,void 0===(m=c.plugins)&&(m={}),void 0===(f=e.options)&&(f={}),Object.keys(d).filter((function(e){var t=f.plugins||{};return Q$1(t[e])?t[e]:!1!==t.all&&(!m[e]||!1!==m[e].enabled)})).map((function(e){return d[e]})));a===z.initializeStart&&e.fromEnable&&(u=Object.keys(c.plugins).filter((function(t){var n=c.plugins[t];return e.plugins.includes(t)&&!n.initialized})).map((function(e){return i[e]})));var l=u.map((function(e){return e.name})),g=function(e,t,n){var r=Y(e).map((function(e){return Q(e,t)}));return t.reduce((function(n,r){var o=r.name,i=Y(e,o).map((function(e){return Q(e,t)})),a=i[0],s=i[1],c=i[2];return a.length&&(n.beforeNS[o]=a),s.length&&(n.duringNS[o]=s),c.length&&(n.afterNS[o]=c),n}),{before:r[0],beforeNS:{},during:r[1],duringNS:{},after:r[2],afterNS:{}})}(a,u);return Promise.resolve(X({action:e,data:{exact:g.before,namespaced:g.beforeNS},state:c,allPlugins:i,allMatches:g,instance:n,store:r,EVENTS:o})).then((function(e){function t(){var t=function(){if(a.match(H))return Promise.resolve(X({action:g$1({},u,{type:s+"End"}),data:{exact:g.after,namespaced:g.afterNS},state:c,allPlugins:i,allMatches:g,instance:n,store:r,EVENTS:o})).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(ee(e,l.length))return e;var u,d=function(){if(a!==s)return Promise.resolve(X({action:g$1({},e,{type:s}),data:{exact:g.during,namespaced:g.duringNS},state:c,allPlugins:i,allMatches:g,instance:n,store:r,EVENTS:o})).then((function(e){u=e}));u=e}();return d&&d.then?d.then(t):t()}))}catch(e){return Promise.reject(e)}var d,m,f}(a,t,e,o,n)).then((function(e){var t=i(e);return s=1,t}))}();return Promise.resolve(y&&y.then?y.then(c):c(y))}catch(e){return Promise.reject(e)}}}}}function oe(e){return function(t){return function(t){return function(n){var r=n.type,o=n.key,i=n.value,a=n.options;if(r===z.setItem||r===z.removeItem){if(n.abort)return t(n);r===z.setItem?e.setItem(o,i,a):e.removeItem(o,a)}return t(n)}}}}var ue=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(o){var i={getState:n.getState,dispatch:function(e){return n.dispatch(e)}},a=e[t].map((function(e){return e(i)}));return P.apply(void 0,a)(r)(o)}}}}};function ce(e){return function(t,n){void 0===t&&(t={});var r={};if("initialize:aborted"===n.type)return t;if(/^registerPlugin:([^:]*)$/.test(n.type)){var o=se(n.type,"registerPlugin"),i=e()[o];if(!i||!o)return t;var a=n.enabled;return r[o]={enabled:a,initialized:!!a&&Boolean(!i.initialize),loaded:!!a&&Boolean(i.loaded()),config:i.config||{}},g$1({},t,r)}if(/^initialize:([^:]*)$/.test(n.type)){var s=se(n.type,z.initialize),c=e()[s];return c&&s?(r[s]=g$1({},t[s],{initialized:!0,loaded:Boolean(c.loaded())}),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,le(n.plugins,!1,t));case z.enablePlugin:return g$1({},t,le(n.plugins,!0,t));default:return t}}}function se(e,t){return e.substring(t.length+1,e.length)}function le(e,t,n){return e.reduce((function(e,r){return e[r]=g$1({},n[r],{enabled:t}),e}),n)}function fe(e){try{return JSON.parse(JSON.stringify(e))}catch(e){}return e}var de={last:{},history:[]};function pe(e,t){void 0===e&&(e=de);var n=t.options,r=t.meta;if(t.type===z.track){var o=fe(g$1({event:t.event,properties:t.properties},Object.keys(n).length&&{options:n},{meta:r}));return g$1({},e,{last:o,history:e.history.concat(o)})}return e}var me={actions:[]};function ge(e,t){void 0===e&&(e=me);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 he=/#.*$/;function ve(e){var t=/(http[s]?:\/\/)?([^\/\s]+\/)(.*)/g.exec(e);return"/"+(t&&t[3]?t[3].split("?")[0].replace(he,""):"")}var ye,be=function(e){if(void 0===e&&(e={}),!$$1)return e;var t=document,n=t.title,r=t.referrer,o=window,i=o.location,a=o.innerWidth,s=o.innerHeight,c=i.hash,u=i.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(he,"")}(u),g={title:n,url:l,path:ve(l),hash:c,search:u,width:a,height:s};return r&&""!==r&&(g.referrer=r),g$1({},g,e)},Ie={last:{},history:[]};function we(e,t){void 0===e&&(e=Ie);var n=t.options;if(t.type===z.page){var r=fe(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}ye={};var Ee={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.11.0"},timezone:void 0,locale:void 0,campaign:{},referrer:ye};function Pe(e,t){void 0===e&&(e=Ee);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({},Ee,e,{initialized:!0})}}var Se=["plugins","reducers","storage"];function Ne(){return f("analytics",[]),function(e){return function(t,r,i){var a=e(t,r,i),s=a.dispatch;return Object.assign(a,{dispatch:function(e){return n[o].analytics.push(e.action||e),s(e)}})}}}function Ae(e){return function(){return P(P.apply(null,arguments),Ne())}}function _e(e){return e?rn(e)?e:[e]:[]}function Oe(e,t,n){void 0===e&&(e={});var r,o,i=y$1();return t&&(B[i]=(r=t,o=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}(n),function(e){o&&o(e),r(e)})),g$1({},e,{rid:i,ts:(new Date).getTime()},t?{hasCallback:!0}:{})}function ke(e){void 0===e&&(e={});var t=e.reducers||{},n=e.initialUser||{},r=(e.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");var n=t.EVENTS?Object.keys(t.EVENTS).map((function(e){return t.EVENTS[e]})):[];e.pluginEnabled[t.name]=!(!1===t.enabled||t.config&&!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]=x,r.apply({instance:x},t)}),e}),{}),delete t.methods);var r=Object.keys(t).concat(n),o=new Set(e.events.concat(r));if(e.events=Array.from(o),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:[]}),o=e.storage?e.storage:{getItem:a$2,setItem:f,removeItem:i$2},i=function(e){return function(t,n,r){return n.getState("user")[t]||(r&&on(r)&&r[t]?r[t]:R(e)[t]||a$2($(t))||null)}}(o),a=r.plugins,c=r.events.filter((function(e){return!T.includes(e)})).sort(),u=new Set(c.concat(x$1).filter((function(e){return!T.includes(e)}))),l=Array.from(u).sort(),g=function(){return a},d=new ue,m=d.addMiddleware,p=d.removeMiddleware,b=d.dynamicMiddlewares,h=function(){throw new Error("Abort disabled inListener")},k=s(),I=R(o),_=g$1({},I,n,k.an_uid?{userId:k.an_uid}:{},k.an_aid?{anonymousId:k.an_aid}:{});_.anonymousId||(_.anonymousId=y$1());var O=g$1({enable:function(e,t){return new Promise((function(n){F.dispatch({type:z.enablePlugin,plugins:_e(e),_:{originalAction:z.enablePlugin}},n,[t])}))},disable:function(e,t){return new Promise((function(n){F.dispatch({type:z.disablePlugin,plugins:_e(e),_:{originalAction:z.disablePlugin}},n,[t])}))}},r.methods),x={identify:function(e,t,n,r){try{var o=q$1(e)?e:null,a=on(e)?e:t,s=n||{},c=x.user();f($(k$1),o);var u=o||a.userId||i(k$1,x,a);return Promise.resolve(new Promise((function(e){F.dispatch(g$1({type:z.identifyStart,userId:u,traits:a||{},options:s,anonymousId:c.anonymousId},c.id&&c.id!==o&&{previousId:c.id}),e,[t,n,r])})))}catch(e){return Promise.reject(e)}},track:function(e,t,n,r){try{var o=on(e)?e.event:e;if(!o||!q$1(o))throw new Error("EventMissing");var a=on(e)?e:t||{},s=on(n)?n:{};return Promise.resolve(new Promise((function(e){F.dispatch({type:z.trackStart,event:o,properties:a,options:s,userId:i(k$1,x,t),anonymousId:i(j,x,t)},e,[t,n,r])})))}catch(e){return Promise.reject(e)}},page:function(e,t,n){try{var r=on(e)?e:{},o=on(t)?t:{};return Promise.resolve(new Promise((function(a){F.dispatch({type:z.pageStart,properties:be(r),options:o,userId:i(k$1,x,r),anonymousId:i(j,x,r)},a,[e,t,n])})))}catch(e){return Promise.reject(e)}},user:function(e){if(e===k$1||"id"===e)return i(k$1,x);if(e===j||"anonId"===e)return i(j,x);var t=x.getState("user");return e?n$2(t,e):t},reset:function(e){return new Promise((function(t){F.dispatch({type:z.resetStart},t,e)}))},ready:function(e){return x.on(z.ready,e)},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:x,plugins:a}),e(r)}}},o=function(e){return function(e){return function(r){return r.type.match(n)||t({payload:r,instance:x,plugins:a}),e(r)}}};return m(r,je),m(o,xe),function(){p(r,je),p(o,xe)}}var i=e.match(n)?je:xe,s=function(n){return function(n){return function(r){return r.type===e&&t({payload:r,instance:x,plugins:a,abort:h}),n(r)}}};return m(s,i),function(){return p(s,i)}},once:function(e,t){if(!e||!W$1(t))return!1;if(e===z.bootstrap)throw new Error(".once disabled for "+e);var n=x.on(e,(function(e){t({payload:e.payload,instance:x,plugins:a,abort:h}),n()}));return n},getState:function(e){var t=F.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._||{})});F.dispatch(n)},enablePlugin:O.enable,disablePlugin:O.disable,plugins:O,storage:{getItem:o.getItem,setItem:function(e,t,n){F.dispatch({type:z.setItemStart,key:e,value:t,options:n})},removeItem:function(e,t){F.dispatch({type:z.removeItemStart,key:e,options:t})}},setAnonymousId:function(e,t){x.storage.setItem(N$1,e,t)},events:{core:x$1,plugins:c}},E=r.middlewares.concat([function(e){return function(e){return function(t){return t.meta||(t.meta=Oe()),e(t)}}},b(je),ae(x,g,{all:l,plugins:c}),oe(o),C$1(x),D(x),b(xe)]),N={context:Pe,user:U(o),page:we,track:pe,plugins:ce(g),queue:ge},A=P,L=P;if($$1&&e.debug){var C=window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__;C&&(A=C({trace:!0,traceLimit:25})),L=function(){return 0===arguments.length?Ne():on(typeof arguments[0])?Ae():Ae().apply(null,arguments)}}var M,J=function(e){return Object.keys(e).reduce((function(t,n){return Se.includes(n)||(t[n]=e[n]),t}),{})}(e),q=r.pluginsArray.reduce((function(e,t){var n=t.name,o=t.config,i=t.loaded,a=r.pluginEnabled[n];return e[n]={enabled:a,initialized:!!a&&Boolean(!t.initialize),loaded:Boolean(i()),config:o||{}},e}),{}),G={context:J,user:_,plugins:q},F=w(function(e){for(var t=Object.keys(e),n={},r=0;r<t.length;r++){var o=t[r];typeof e[o]===h$1&&(n[o]=e[o])}var i,a=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){i=e}return function(e,t){if(void 0===e&&(e={}),i)throw i;for(var r=!1,o={},s=0;s<a.length;s++){var c=a[s],u=e[c],l=(0,n[c])(u,t);if(typeof l===v){var g=E$1(c,t);throw new Error(g)}o[c]=l,r=r||l!==u}return r?o:e}}(g$1({},N,t)),G,L(A(S.apply(void 0,E))));F.dispatch=(M=F.dispatch,function(e,t,n){var r=g$1({},e,{meta:Oe(e.meta,t,_e(n))});return M.apply(null,[r])});var V=Object.keys(a);F.dispatch({type:z.bootstrap,plugins:V,config:J,params:k,user:_,initialUser:n,persistedUser:I});var W=V.filter((function(e){return r.pluginEnabled[e]})),B=V.filter((function(e){return!r.pluginEnabled[e]}));return F.dispatch({type:z.registerPlugins,plugins:V,enabled:r.pluginEnabled}),r.pluginsArray.map((function(e,t){var n=e.bootstrap,o=e.config,i=e.name;n&&W$1(n)&&n({instance:x,config:o,payload:e}),F.dispatch({type:z.registerPluginType(i),name:i,enabled:r.pluginEnabled[i],plugin:e}),r.pluginsArray.length===t+1&&F.dispatch({type:z.initializeStart,plugins:W,disabled:B})})),x}var je="before",xe="after",t="cookie",i$1=a$1(),r$1=d$1,c=d$1;function u(e){return i$1?d$1(e,"",-1):i$2(e)}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,n,r,o,i){if("undefined"!=typeof window){var a=arguments.length>1;return!1===i$1&&(a?f(e,t):a$2(e)),a?document.cookie=e+"="+encodeURIComponent(t)+(n?"; expires="+new Date(+new Date+1e3*n).toUTCString()+(r?"; path="+r:"")+(o?"; domain="+o:"")+(i?"; secure":""):""):decodeURIComponent((("; "+document.cookie).split("; "+e+"=")[1]||"").split(";")[0])}}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);var a="sessionStorage",i=b$2.bind(null,"sessionStorage");function I(e){var t=e;try{if("true"===(t=JSON.parse(e)))return!0;if("false"===t)return!1;if(on(t))return t;parseFloat(t)===t&&(t=parseFloat(t))}catch(e){}if(null!==t&&""!==t)return t}u$1("sessionStorage","getItem",a$2),u$1("sessionStorage","setItem",f),u$1("sessionStorage","removeItem",i$2);var k=g(),O=i(),x=a$1();function C(e,t){if(e){var n=A(t),r=!N(n),o=d(n)?I(localStorage.getItem(e)):void 0;if(r&&!I$2(o))return o;var i=h(n)?I(r$1(e)):void 0;if(r&&i)return i;var a=E(n)?I(sessionStorage.getItem(e)):void 0;if(r&&a)return a;var s=a$2(e);return r?s:{localStorage:o,sessionStorage:a,cookie:i,global:s}}}function L(e,n,o){if(e&&!I$2(n)){var i={},s=A(o),u=JSON.stringify(n),g=!N(s);return d(s)&&(i[r]=F(r,n,I(localStorage.getItem(e))),localStorage.setItem(e,u),g)?i[r]:h(s)&&(i[t]=F(t,n,I(r$1(e))),c(e,u),g)?i[t]:E(s)&&(i[a]=F(a,n,I(sessionStorage.getItem(e))),sessionStorage.setItem(e,u),g)?i[a]:(i[l]=F(l,n,a$2(e)),f(e,n),g?i[l]:i)}}function b(e,n){if(e){var o=A(n),i=C(e,m$1),s={};return!I$2(i.localStorage)&&d(o)&&(localStorage.removeItem(e),s[r]=i.localStorage),!I$2(i.cookie)&&h(o)&&(u(e),s[t]=i.cookie),!I$2(i.sessionStorage)&&E(o)&&(sessionStorage.removeItem(e),s[a]=i.sessionStorage),!I$2(i.global)&&G(o,l)&&(i$2(e),s[l]=i.global),s}}function A(e){return e?q$1(e)?e:e.storage:g$2}function d(e){return k&&G(e,r)}function h(e){return x&&G(e,t)}function E(e){return O&&G(e,a)}function N(e){return e===m$1||"all"===e}function G(e,t){return e===g$2||e===t||N(e)}function F(e,t,n){return{location:e,current:t,previous:n}}var J={setItem:L,getItem:C,removeItem:b};function _defineProperty(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ownKeys(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function _objectSpread2(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ownKeys(Object(n),!0).forEach((function(t){_defineProperty(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ownKeys(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function analyticsLib(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return ke(_objectSpread2(_objectSpread2({},{storage:J}),e))}function findScript(e){return Array.prototype.slice.call(window.document.querySelectorAll("script")).find((t=>t.src===e))}function loadScript(e,t){const n=findScript(e);if(void 0!==n){const e=null==n?void 0:n.getAttribute("status");if("loaded"===e)return Promise.resolve(n);if("loading"===e)return new Promise(((e,t)=>{n.addEventListener("load",(()=>e(n))),n.addEventListener("error",(e=>t(e)))}))}return new Promise(((n,r)=>{var o;const i=window.document.createElement("script");i.type="text/javascript",i.src=e,i.async=!0,i.setAttribute("status","loading");for(const[e,n]of Object.entries(null!=t?t:{}))i.setAttribute(e,n);i.onload=()=>{i.onerror=i.onload=null,i.setAttribute("status","loaded"),n(i)},i.onerror=()=>{i.onerror=i.onload=null,i.setAttribute("status","error"),r(new Error(`Failed to load ${e}`))};const a=window.document.getElementsByTagName("script")[0];null===(o=a.parentElement)||void 0===o||o.insertBefore(i,a)}))}var __awaiter$4=function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{c(r.next(e))}catch(e){i(e)}}function s(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}c((r=r.apply(e,t||[])).next())}))};const tagPlugin={id:"tag",handle(e,t){return __awaiter$4(this,void 0,void 0,(function*(){applyFilters(t,e)&&insertTags(e.code,t)}))}};function insertTags(e,t,n={}){let r;try{r=JSON.parse(e)}catch(t){r={code:e,lang:"javascript"}}const o=n.debug||!1;if(isInBrowser())if("javascript"===r.lang)execJs(r.code,t);else{const e=document.createElement("span");e.innerHTML=replaceMacro(r.code,t),document.body.insertAdjacentElement("beforeend",e);e.querySelectorAll("script").forEach((e=>{const t=document.createElement("script");t.type=t.type||"text/javascript",e.hasAttribute("src")&&(t.src=e.src),t.text=e.text,o&&console.log("[JITSU] Executing script"+(e.hasAttribute("src")?` ${e.src}`:""),t.text),document.head.appendChild(t),document.head.removeChild(t)}))}else o&&console.log("[JITSU] insertTags(): cannot insert tags in non-browser environment")}function execJs(code,event){const varName=`jitsu_event_${randomId()}`;window[varName]=event;const iif=`(function(){\n const event = ${varName};\n ${code}\n })()`;try{eval(iif)}catch(e){console.error(`[JITSU] Error executing JS code: ${e.message}. Code: `,iif)}finally{delete window[varName]}return iif}function replaceMacro(e,t){return e.replace(/{{\s*event\s*}}/g,JSON.stringify(t))}var __awaiter$3=function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{c(r.next(e))}catch(e){i(e)}}function s(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}c((r=r.apply(e,t||[])).next())}))};const logrocketPlugin={id:"logrocket",handle(e,t){return __awaiter$3(this,void 0,void 0,(function*(){if(!applyFilters(t,e))return;initLogrocketIfNeeded(e.appId);getLogRocketQueue().push((e=>{"identify"===t.type&&t.userId&&e.identify(t.userId,t.traits||{})})),"loaded"===getLogRocketState()&&flushLogRocketQueue(window.LogRocket)}))}};function getLogRocketState(){return window.__jitsuLrState||"fresh"}function setLogRocketState(e){window.__jitsuLrState=e}function getLogRocketQueue(){return window.__jitsuLrQueue||(window.__jitsuLrQueue=[])}function flushLogRocketQueue(e){const t=getLogRocketQueue();for(;t.length>0;){const n=t.shift();try{const t=n(e);t&&t.catch((e=>console.warn(`Async LogRocket method failed: ${e.message}`,e)))}catch(e){console.warn(`LogRocket method failed: ${e.message}`,e)}}}function initLogrocketIfNeeded(e){return __awaiter$3(this,void 0,void 0,(function*(){"fresh"===getLogRocketState()&&(setLogRocketState("loading"),loadScript("https://cdn.lr-ingest.io/LogRocket.min.js",{crossOrigin:"anonymous"}).then((()=>{if(window.LogRocket){try{window.LogRocket.init(e)}catch(t){console.warn(`LogRocket (id=${e}) init failed: ${t.message}`,t),setLogRocketState("failed")}setLogRocketState("loaded"),flushLogRocketQueue(window.LogRocket)}})).catch((t=>{console.warn(`LogRocket (id=${e}) init failed: ${t.message}`,t),setLogRocketState("failed")})))}))}var __awaiter$2=function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{c(r.next(e))}catch(e){i(e)}}function s(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}c((r=r.apply(e,t||[])).next())}))};const defaultScriptSrc$1="https://www.googletagmanager.com/gtag/js",gtmPlugin={id:"gtm",handle(e,t){var n,r;return __awaiter$2(this,void 0,void 0,(function*(){if(!applyFilters(t,e))return;yield initGtmIfNeeded(e,t);const o=window[e.dataLayerName||"dataLayer"],i=Object.assign(Object.assign({},t.userId?{user_id:t.userId,userId:t.userId}:{}),t.anonymousId?{anonymousId:t.anonymousId}:{});switch(t.type){case"page":const{properties:e,context:a}=t,s=Object.assign({event:"page_view",page_location:e.url,page_title:e.title,page_path:e.path,page_hash:e.hash,page_search:e.search,page_referrer:null!==(r=null===(n=null==a?void 0:a.page)||void 0===n?void 0:n.referrer)&&void 0!==r?r:""},i);o.push(s);break;case"track":const{properties:c}=t,u=Object.assign(Object.assign({event:t.event},c),i);o.push(u);break;case"identify":const{traits:l}=t,g=Object.assign(Object.assign({event:"identify"},l),i);o.push(g)}o.push((function(){this.reset()}))}))}};function getGtmState(){return window.__jitsuGtmState||"fresh"}function setGtmState(e){window.__jitsuGtmState=e}function initGtmIfNeeded(e,t){return __awaiter$2(this,void 0,void 0,(function*(){if("fresh"!==getGtmState())return;setGtmState("loading");const n=e.dataLayerName||"dataLayer",r="dataLayer"!==n?"&l="+n:"",o=e.preview?`>m_preview=${e.preview}>m_auth=${e.auth}>m_cookies_win=x`:"",i=e.containerId,a=`${e.customScriptSrc||defaultScriptSrc$1}?id=${i}${r}${o}`;window[n]=window[n]||[];const s=function(){window[n].push(arguments)};window[n].push({user_id:t.userId}),s("js",new Date),s("config",i),loadScript(a).then((()=>{setGtmState("loaded")})).catch((e=>{console.warn(`GTM (containerId=${i}) init failed: ${e.message}`,e),setGtmState("failed")}))}))}var __awaiter$1=function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{c(r.next(e))}catch(e){i(e)}}function s(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}c((r=r.apply(e,t||[])).next())}))};const defaultScriptSrc="https://www.googletagmanager.com/gtag/js",ga4Plugin={id:"ga4-tag",handle(e,t){var n,r;return __awaiter$1(this,void 0,void 0,(function*(){if(!applyFilters(t,e))return;yield initGa4IfNeeded(e,t);const o=window[e.dataLayerName||"dataLayer"],i=function(){o.push(arguments)},a=Object.assign(Object.assign({},t.userId?{user_id:t.userId,userId:t.userId}:{}),t.anonymousId?{anonymousId:t.anonymousId}:{});switch(t.userId&&i("set",{user_id:t.userId}),t.type){case"page":if(e.autoPageView){console.log("autoPageView");break}const{properties:o,context:s}=t;i("event","page_view",Object.assign({page_location:o.url,page_title:o.title,page_path:o.path,page_hash:o.hash,page_search:o.search,page_referrer:null!==(r=null===(n=null==s?void 0:s.page)||void 0===n?void 0:n.referrer)&&void 0!==r?r:""},a));break;case"track":const{properties:c}=t,u=Object.assign(Object.assign({},c),a);i("event",t.event,u);break;case"identify":const{traits:l}=t;i("event","identify",Object.assign(Object.assign({},l),a))}}))}};function getGa4State(){return window.__jitsuGa4State||"fresh"}function setGa4State(e){window.__jitsuGa4State=e}function initGa4IfNeeded(e,t){return __awaiter$1(this,void 0,void 0,(function*(){if("fresh"!==getGa4State())return;setGa4State("loading");const n=e.dataLayerName||"dataLayer",r="dataLayer"!==n?"&l="+n:"",o=e.measurementIds,i=`${defaultScriptSrc}?id=${o}${r}`;window[n]=window[n]||[];const a=function(){window[n].push(arguments)};a("js",new Date),a("config",o,Object.assign(Object.assign({},t.userId?{user_id:t.userId}:{}),e.autoPageView?{}:{send_page_view:!1})),loadScript(i).then((()=>{setGa4State("loaded")})).catch((t=>{console.warn(`GA4 (containerId=${e.measurementIds}) init failed: ${t.message}`,t),setGa4State("failed")}))}))}function satisfyFilter(e,t){return"*"===e||e.toLowerCase().trim()===(t||"").trim().toLowerCase()}function satisfyDomainFilter(e,t){return"*"===e||(t=t||"",e.startsWith("*.")?t.endsWith(e.substring(1)):e===t)}function applyFilters(e,t){const{hosts:n="*",events:r="*"}=t;try{const t=Array.isArray(r)?r:r.split("\n");return!(!(Array.isArray(n)?n:n.split("\n")).find((t=>{var n,r;return satisfyDomainFilter(t,null===(r=null===(n=e.context)||void 0===n?void 0:n.page)||void 0===r?void 0:r.host)}))||!t.find((t=>satisfyFilter(t,e.type)))&&!t.find((t=>satisfyFilter(t,e.event))))}catch(e){throw console.warn(`Failed to apply filters: ${e.message}. Typeof events: ${typeof r}, typeof hosts: ${typeof n}. Values`,r,n),new Error(`Failed to apply filters: ${e.message}. Typeof events: ${typeof r}, typeof hosts: ${typeof n}`)}}const internalDestinationPlugins={[tagPlugin.id]:tagPlugin,[gtmPlugin.id]:gtmPlugin,[ga4Plugin.id]:ga4Plugin,[logrocketPlugin.id]:logrocketPlugin};var name="@jitsu/js",version="0.0.0";const publicSuffixes="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(","),_publicSuffixesMap={};publicSuffixes.forEach((e=>{_publicSuffixesMap[e]=!0}));const publicSuffixesMap=_publicSuffixesMap;function getTopLevelDomain(e){const[t]=e.split(":"),n=t.split(".");if("localhost"===n[n.length-1]||n.length<2)return n[n.length-1];{const e=n[n.length-2]+"."+n[n.length-1];return n.length>2&&publicSuffixesMap[e]?n[n.length-3]+"."+e:e}}var __awaiter=function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{c(r.next(e))}catch(e){i(e)}}function s(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}c((r=r.apply(e,t||[])).next())}))};const defaultConfig={writeKey:null,host:null,debug:!1,fetch:null,echoEvents:!1,cookieDomain:void 0,runtime:void 0},parseQuery=e=>{if(!e)return{};let t=e.length>0&&"?"===e.charAt(0)?e.substring(1):e,n={},r=("?"===t[0]?t.substr(1):t).split("&");for(let e=0;e<r.length;e++){let t=r[e].split("=");n[decodeURIComponent(t[0])]=decodeURIComponent(t[1]||"")}return n};function utmToKey(e){const t=e.substring("utm_".length);return"campaign"===t?"name":t}function parseUtms(e){return Object.entries(e).filter((([e])=>0===e.indexOf("utm_"))).reduce(((e,[t,n])=>Object.assign(Object.assign({},e),{[utmToKey(t)]:n})),{})}function safeCall(e,t){try{return e()}catch(e){return t}}function restoreTraits(e){const t=e.getItem("__user_traits");return"string"==typeof t?safeCall((()=>JSON.parse(t)),{}):t}function getCookie(e){const t=`; ${document.cookie}`.split(`; ${e}=`);return 2===t.length?t.pop().split(";").shift():void 0}function getGa4Sessions(){const e=`; ${document.cookie}`.matchAll(/_ga_(\w+)=([^;]+)/g),t={};let n=0;for(const r of e){const e=r[2].split(".");e.length<3||(t[r[1]]=e[2],n++)}if(0!==n)return t}function removeCookie(e){document.cookie=e+"=;expires=Thu, 01 Jan 1970 00:00:01 GMT;"}function setCookie(e,t,{domain:n,secure:r}){document.cookie=e+"="+t+";domain="+n+";path=/;expires="+new Date((new Date).getTime()+15768e7).toUTCString()+";SameSite="+(r?"None":"Lax")+(r?";secure":"")}const defaultCookie2Key={__anon_id:"__eventn_id",__user_traits:"__eventn_id_usr",__user_id:"__eventn_uid"},cookieStorage=(e,t)=>({setItem(n,r){const o="object"==typeof r&&null!==r?encodeURIComponent(JSON.stringify(r)):r;setCookie(t[n]||n,o,{domain:e,secure:"https:"===window.location.protocol})},getItem(e){const n=getCookie(t[e]||e);if(void 0===n&&"__user_id"===e){const e=parse(getCookie("__eventn_id_usr"))||{};return e.internal_id||e.user_id||e.id||e.userId}return parse(n)},removeItem(e){removeCookie(t[e]||e)}});function windowRuntime(e){return{documentEncoding:()=>window.document.characterSet,timezoneOffset:()=>(new Date).getTimezoneOffset(),store:()=>cookieStorage(e.cookieDomain||getTopLevelDomain(window.location.hostname),defaultCookie2Key),language:()=>window.navigator.language,pageTitle:()=>window.document.title,pageUrl:()=>window.location.href,referrer:()=>window.document.referrer,screen:()=>({width:window.screen.width,height:window.screen.height,innerWidth:window.innerWidth,innerHeight:window.innerHeight,density:Math.floor(window.devicePixelRatio)}),userAgent:()=>window.navigator.userAgent}}const emptyRuntime=e=>({documentEncoding(){},timezoneOffset(){},store(){const t={};return{setItem(n,r){e.debug&&console.log(`[JITSU EMPTY RUNTIME] Set storage item ${n}=${JSON.stringify(r)}`),t[n]=r},getItem(n){const r=t[n];return e.debug&&console.log(`[JITSU EMPTY RUNTIME] Get storage item ${n}=${JSON.stringify(r)}`),r},removeItem(n){e.debug&&console.log(`[JITSU EMPTY RUNTIME] Get storage item ${n}=${t[n]}`),delete t[n]}}},language(){},pageTitle(){},pageUrl(){},referrer(){},screen(){},userAgent(){}});function deepMerge(e,t){return"object"!=typeof t||null===t||"object"!=typeof e||null===e?t:Object.entries(t).reduce(((t,[n,r])=>(t[n]=deepMerge(e[n],r),t)),e)}function isInBrowser(){return"undefined"!=typeof document&&"undefined"!=typeof window}function adjustPayload(e,t,n){var r,o,i;const a=t.runtime||(isInBrowser()?windowRuntime(t):emptyRuntime(t)),s=a.pageUrl(),c=safeCall((()=>new URL(s)),void 0),u=c?parseQuery(c.search):{},l=e.properties||{},g=(null===(r=e.properties)||void 0===r?void 0:r.context)||{};null===(o=e.properties)||void 0===o||delete o.context;const d=a.referrer(),m={library:{name:name,version:version},userAgent:a.userAgent(),locale:a.language(),screen:a.screen(),traits:"identify"!=e.type&&"group"!=e.type?Object.assign({},restoreTraits(n)||{}):void 0,page:{path:l.path||c&&c.pathname,referrer:d,referring_domain:safeCall((()=>d&&new URL(d).hostname)),host:c&&c.host,search:l.search||c&&c.search,title:l.title||a.pageTitle(),url:l.url||s,encoding:l.encoding||a.documentEncoding()},clientIds:{fbc:getCookie("_fbc"),fbp:getCookie("_fbp"),ga4:{clientId:null===(i=getCookie("_ga"))||void 0===i?void 0:i.split(".").slice(-2).join("."),sessions:getGa4Sessions()}},campaign:parseUtms(u)},f=Object.assign(Object.assign({},e),{timestamp:(new Date).toISOString(),sentAt:(new Date).toISOString(),messageId:randomId(l.path||c&&c.pathname),writeKey:maskWriteKey(t.writeKey),context:deepMerge(m,g)});return delete f.meta,delete f.options,f}function processDestinations(e,t,n,r,o){return __awaiter(this,void 0,void 0,(function*(){const i=[];for(const a of e){let e=[n];a.newEvents&&(e=a.newEvents.map((e=>"same"===e?n:e)));const s=Object.assign(Object.assign({},a.credentials),a.options);if("internal-plugin"===a.deviceOptions.type){const t=internalDestinationPlugins[a.deviceOptions.name];if(t)for(const n of e)try{i.push(t.handle(s,n))}catch(e){console.warn(`[JITSU] Error processing event with internal plugin '${a.deviceOptions.name}': ${null==e?void 0:e.message}`,e)}else console.warn(`[JITSU] Unknown internal plugin '${a.deviceOptions.name}' for destination '${a.id}'`)}else if("analytics-plugin"===a.deviceOptions.type){yield loadScript(a.deviceOptions.packageCdn);const n=window[a.deviceOptions.moduleVarName];if(n){let i;try{i=("function"==typeof n?n:n.init)(s)}catch(e){console.warn(`[JITSU] Error creating plugin '${a.deviceOptions.moduleVarName}@${a.deviceOptions.packageCdn}' for destination '${a.id}': ${null==e?void 0:e.message}`,e)}try{r&&console.log(`[JITSU] Plugin '${a.deviceOptions.moduleVarName}@${a.deviceOptions.packageCdn}' for destination '${a.id}' initialized with config:`,i.config),i.initialize({config:i.config,instance:o})}catch(e){console.warn(`[JITSU] Error initializing plugin '${a.deviceOptions.moduleVarName}@${a.deviceOptions.packageCdn}' for destination '${a.id}': ${null==e?void 0:e.message}. Config: ${JSON.stringify(i.config)}`,e);continue}if(i[t])for(const n of e)try{i[t]({payload:n,config:i.config,instance:o})}catch(e){console.warn(`[JITSU] Error processing ${t}() with plugin '${a.deviceOptions.moduleVarName}@${a.deviceOptions.packageCdn}' for destination '${a.id}': ${null==e?void 0:e.message}`,e)}}else console.warn(`[JITSU] Broken plugin '${a.deviceOptions.packageCdn}' for destination '${a.id}' - it doesn't export '${a.deviceOptions.moduleVarName}' variable`)}}}))}function looksLikeCuid(e){return 25===e.length&&"c"===e.charAt(0)}function validateWriteKey(e){if(e){const[,t]=e.split(":",2);if(!t&&!looksLikeCuid(e))throw new Error(`Legacy write key detected - ${e}! This format doesn't work anymore, it should be 'key:secret'. Please download a new key from Jitsu UI`)}return e}function maskWriteKey(e){if(e){const[t,n]=e.split(":",2);return n?`${t}:***`:"***"}return e}function send(e,t,n,r,o){if(n.echoEvents)return void console.log(`[JITSU] sending '${e}' event:`,t);const i=`${n.host}/api/s/${e}`,a=n.fetch||globalThis.fetch;if(!a)throw new Error("Please specify fetch function in jitsu plugin initialization, fetch isn't available in global scope");const s=n.debug?{"X-Enable-Debug":"true"}:{},c=adjustPayload(t,n,o),u=n.writeKey?{"X-Write-Key":n.writeKey}:{};return a(i,{method:"POST",headers:Object.assign(Object.assign({"Content-Type":"application/json"},u),s),body:JSON.stringify(c)}).then((e=>(n.debug&&console.log(`[JITSU] ${i} replied ${e.status}. Original payload: `,JSON.stringify(c,null,2)),e.ok?e.text():Promise.reject(e.text())))).then((t=>{let o;try{o=JSON.parse(t)}catch(e){return Promise.reject(`Can't parse JSON: ${t}: ${null==e?void 0:e.message}`)}if(o.destinations)return n.debug&&console.log("[JITSU] Processing device destinations: ",JSON.stringify(o.destinations,null,2)),processDestinations(o.destinations,e,c,!!n.debug,r)})).catch((e=>{n.debug&&console.error(`Jitsu ${i} failed: `,e)}))}const jitsuAnalyticsPlugin=(e={})=>{const t={},n=e=>({setItem(n,r){t[n]=r,e.setItem(n,r)},getItem:n=>t[n]||e.getItem(n),removeItem(n){delete t[n],e.removeItem(n)}}),r=Object.assign(Object.assign({},defaultConfig),e);return{name:"jitsu",config:r,initialize:e=>{const{config:t}=e;if(t.debug&&console.debug("[JITSU] Initializing Jitsu plugin with config: ",JSON.stringify(t)),!t.host&&!t.echoEvents)throw new Error("Please specify host variable in jitsu plugin initialization, or set echoEvents to true");validateWriteKey(t.writeKey)},page:e=>{const{payload:t,config:r,instance:o}=e;return send("page",t,r,o,n(o.storage))},track:e=>{const{payload:t,config:r,instance:o}=e;return send("track",t,r,o,n(o.storage))},identify:e=>{const{payload:r,config:o,instance:i}=e;return t.__user_traits=r.traits,send("identify",r,o,i,n(i.storage))},reset:e=>{Object.keys(t).forEach((e=>delete t[e]))},methods:{group(e,t,o,i){const a=this.instance,s=a.user(),c=(null==o?void 0:o.userId)||(null==s?void 0:s.userId),u=(null==o?void 0:o.anonymousId)||(null==s?void 0:s.anonymousId);return send("group",Object.assign(Object.assign({type:"group",groupId:e,traits:t},u?{anonymousId:u}:{}),c?{userId:c}:{}),r,a,n(a.storage))}}}};function getSeed(){var e;const t=Date.now()%2147483647;return isInBrowser()&&(null===(e=null===window||void 0===window?void 0:window.performance)||void 0===e?void 0:e.now())||t}function randomId(e=""){const t=Date.now();return(Math.random()*t*hash(null!=e?e:"",getSeed())%Number.MAX_SAFE_INTEGER).toString(36)+(Math.random()*t*hash(null!=e?e:"",getSeed())%Number.MAX_SAFE_INTEGER).toString(36)}function hash(e,t=0){let n=3735928559^t,r=1103547991^t;for(let t,o=0;o<e.length;o++)t=e.charCodeAt(o),n=Math.imul(n^t,2654435761),r=Math.imul(r^t,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 parse(e){let t=e;0===(null==e?void 0:e.indexOf("%7B%22"))&&(t=decodeURIComponent(e));try{if(t=JSON.parse(t),"true"===t)return!0;if("false"===t)return!1;if("object"==typeof t)return t;parseFloat(t)===t&&(t=parseFloat(t))}catch(e){}if(null!==t&&""!==t)return t}function createUnderlyingAnalyticsInstance(e,t,n=[]){const r=analyticsLib({app:"test",debug:!!e.debug,storage:t.store(),plugins:[jitsuAnalyticsPlugin(e),...n]}),o=r.page;return r.page=(...e)=>2===e.length&&"string"==typeof e[0]&&"object"==typeof e[1]?o(Object.assign({name:e[0]},e[1])):o(...e),Object.assign(Object.assign({},r),{group(e,t,n,o){for(const i of Object.values(r.plugins))i.group&&i.group(e,t,n,o);return Promise.resolve({})}})}function jitsuAnalytics(e){const t=isInBrowser();return createUnderlyingAnalyticsInstance(e,e.runtime||(t?windowRuntime(e):emptyRuntime(e)))}function snakeToCamel(e){return e.replace(/([-_][a-z])/gi,(e=>e.toUpperCase().replace("-","").replace("_","")))}const booleanParser=e=>"true"===e||"1"===e||"yes"===e,parsers={debug:booleanParser,initOnly:booleanParser};function getParser(e){return parsers[e]||(e=>e)}function getScriptAttributes(e){return e.getAttributeNames().filter((e=>0===e.indexOf("data-"))).map((e=>e.substring("data-".length))).reduce(((t,n)=>Object.assign(Object.assign({},t),{[snakeToCamel(n)]:getParser(snakeToCamel(n))(e.getAttribute(`data-${n}`))})),{})}!function(){const e=function(){const e=window.document.currentScript;if(!e)throw new Error("Can't find script element");const t=new URL(e.src).origin;return Object.assign(Object.assign(Object.assign({},(null===window||void 0===window?void 0:window.jitsuConfig)||{}),getScriptAttributes(e)),{host:t})}(),t=e.namespace||"jitsu";window[t]&&console.log("Jitsu is already initialized"),e.debug&&console.log("Jitsu options: ",JSON.stringify(e));const n=jitsuAnalytics(e);if(e.onload){const t=window[e.onload];t||console.warn(`onload function ${e.onload} is not found in window`),"function"==typeof t?t(n):console.warn(`onload function ${e.onload} is not callable: ${typeof t}`)}window[t]=n,e.initOnly||n.page()}()})();
|
|
1
|
+
(function () {
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
function n$2(t,e,l,n,r){for(e=e.split?e.split("."):e,n=0;n<e.length;n++)t=t?t[e[n]]:r;return t===r?l:t}
|
|
5
|
+
|
|
6
|
+
var e="undefined",o$1="object",b$3="any",m$1="*",j$1="__",F$2="undefined"!=typeof process?process:{};F$2.env&&F$2.env.NODE_ENV||"";var $$1="undefined"!=typeof document;null!=F$2.versions&&null!=F$2.versions.node;"undefined"!=typeof Deno&&void 0!==Deno.core;$$1&&"nodejs"===window.name||"undefined"!=typeof navigator&&void 0!==navigator.userAgent&&(navigator.userAgent.includes("Node.js")||navigator.userAgent.includes("jsdom"));function M$1(n,t){return t.charAt(0)[n]()+t.slice(1)}var U$1=M$1.bind(null,"toUpperCase"),H$1=M$1.bind(null,"toLowerCase");function J$2(n){return Y$1(n)?U$1("null"):"object"==typeof n?yn(n):Object.prototype.toString.call(n).slice(8,-1)}function R$1(n,t){void 0===t&&(t=!0);var e=J$2(n);return t?H$1(e):e}function V$1(n,t){return typeof t===n}var W$1=V$1.bind(null,"function"),q$1=V$1.bind(null,"string"),I$2=V$1.bind(null,"undefined");var Q$1=V$1.bind(null,"boolean");V$1.bind(null,"symbol");function Y$1(n){return null===n}function nn(n){return "number"===R$1(n)&&!isNaN(n)}function rn(n){return "array"===R$1(n)}function on(n){if(!un(n))return !1;for(var t=n;null!==Object.getPrototypeOf(t);)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(n)===t}function un(n){return n&&("object"==typeof n||null!==n)}function yn(n){return W$1(n.constructor)?n.constructor.name:null}function hn(n){return n instanceof Error||q$1(n.message)&&n.constructor&&nn(n.constructor.stackTraceLimit)}function On(n,t){if("object"!=typeof t||Y$1(t))return !1;if(t instanceof n)return !0;var e=R$1(new n(""));if(hn(t))for(;t;){if(R$1(t)===e)return !0;t=Object.getPrototypeOf(t);}return !1}On.bind(null,TypeError);On.bind(null,SyntaxError);function $n(n,t){var e=n instanceof Element||n instanceof HTMLDocument;return e&&t?Tn(n,t):e}function Tn(n,t){return void 0===t&&(t=""),n&&n.nodeName===t.toUpperCase()}function _n(n){var t=[].slice.call(arguments,1);return function(){return n.apply(void 0,[].slice.call(arguments).concat(t))}}_n($n,"form");_n($n,"button");_n($n,"input");_n($n,"select");
|
|
7
|
+
|
|
8
|
+
function n$1(e){try{return decodeURIComponent(e.replace(/\+/g," "))}catch(e){return null}}function s(r){return function(e){for(var r,t=Object.create(null),o=/([^&=]+)=?([^&]*)/g;r=o.exec(e);){var a=n$1(r[1]),i=n$1(r[2]);"[]"===a.substring(a.length-2)?(t[a=a.substring(0,a.length-2)]||(t[a]=[])).push(i):t[a]=""===i||i;}for(var u in t){var c=u.split("[");c.length>1&&(m(t,c.map(function(e){return e.replace(/[?[\]\\ ]/g,"")}),t[u]),delete t[u]);}return t}(function(r){if(r){var t=r.match(/\?(.*)/);return t&&t[1]?t[1].split("#")[0]:""}return $$1&&window.location.search.substring(1)}(r))}function m(e,r,t){for(var n=r.length-1,o=0;o<n;++o){var a=r[o];if("__proto__"===a||"constructor"===a)break;a in e||(e[a]={}),e=e[a];}e[r[n]]=t;}function y$1(){for(var e="",r=0,t=4294967295*Math.random()|0;r++<36;){var n="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx"[r-1],o=15&t;e+="-"==n||"4"==n?n:("x"==n?o:3&o|8).toString(16),t=r%8==0?4294967295*Math.random()|0:t>>4;}return e}
|
|
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)})})}var X=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(H),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(H)?function(e,t,n,r,i){return function(a,o){var u=r?r.name:e,c=o&&te(o)?o:n;if(r&&(!(c=o&&te(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:ie(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=re(e);if(n&&n.name===t){var r=re(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:K(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),Z(n,l))return G$1({data:n,method:p,instance:r,pluginName:l,store:u}),Promise.resolve(t);if(Z(t,l))return s&&G$1({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:K(l,f,a),plugins:f})).then(function(i){var a=on(i)?i:{},o=g$1({},t,a),s=e[l];if(Z(s,l))G$1({data:s,method:p,instance:r,pluginName:l,store:u});else {var f=p+":"+l;(f.match(/:/g)||[]).length<2&&!p.match(W)&&!p.match(F$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(H)||p.match(/^registerPlugin/)||p.match(F$1)||p.match(W)||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"}});ee(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)}},H=/Start$/,W=/^bootstrap/,F$1=/^ready/;function G$1(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 K(e,t,n){var r=t[e]||n[e];return r&&r.config?r.config:{}}function Q(e,t){return t.reduce(function(t,n){return n[e]?t.concat({methodName:e,pluginName:n.name,method:n[e]}):t},[])}function Y(e,t){var n=e.replace(H,""),r=t?":"+t:"";return [""+e+r,""+n+r,n+"End"+r]}function Z(e,t){var n=e.abort;return !!n&&(!0===n||ne(n,t)||n&&ne(n.plugins,t))}function ee(e,t){var n=e.abort;if(!n)return !1;if(!0===n||q$1(n))return !0;var r=n.plugins;return te(n)&&n.length===t||te(r)&&r.length===t}function te(e){return Array.isArray(e)}function ne(e,t){return !(!e||!te(e))&&e.includes(t)}function re(e){var t=e.match(/(.*):(.*)/);return !!t&&{method:t[1],name:t[2]}}function ie(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 ae(e,t,n){var r={};return function(i){return function(a){return function(o){try{var u,c=function(e){return u?e:a(p)},s=o.type,d=o.plugins,p=o;if(o.abort)return Promise.resolve(a(o));if(s===z.enablePlugin&&i.dispatch({type:z.initializeStart,plugins:d,disabled:[],fromEnable:!0,meta:o.meta}),s===z.disablePlugin&&setTimeout(function(){return L$1(o.meta.rid,{payload:o})},0),s===z.initializeEnd){var m=t(),h=Object.keys(m),v=h.filter(function(e){return d.includes(e)}).map(function(e){return m[e]}),y=[],b=[],I=o.disabled,w=v.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),y=y.concat(n),e}).catch(function(e){if(e instanceof Error)throw new Error(e);return b=b.concat(e.name),e})});Promise.all(w).then(function(e){var t={plugins:y,failed:b,disabled:I};setTimeout(function(){h.length===w.length+I.length&&i.dispatch(g$1({},{type:z.ready},t));},0);});}var E=function(){if(s!==z.bootstrap)return /^ready:([^:]*)$/.test(s)&&setTimeout(function(){return function(e,t,n){var r=t(),i=e.getState(),a=i.plugins,o=i.queue,u=i.user;if(!i.context.offline&&o&&o.actions&&o.actions.length){var c=o.actions.reduce(function(e,t,n){return a[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(c.processIndex&&c.processIndex.length){c.processIndex.forEach(function(t){var i=o.actions[t],c=i.plugin,s=i.payload.type,f=r[c][s];if(f&&W$1(f)){var d=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)}(i.payload,u);f({payload:d,config:a[c].config,instance:n});var p=s+":"+c;e.dispatch(g$1({},d,{type:p,_:{called:p,from:"queueDrain"}}));}});var s=o.actions.filter(function(e,t){return !~c.processIndex.indexOf(t)});o.actions=s;}}}(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(H,"");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=Y(e).map(function(e){return Q(e,t)});return t.reduce(function(n,r){var i=r.name,a=Y(e,i).map(function(e){return Q(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(X({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(H))return Promise.resolve(X({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(ee(e,d.length))return e;var s,l=function(){if(o!==u)return Promise.resolve(X({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(E&&E.then?E.then(c):c(E))}catch(e){return Promise.reject(e)}}}}}function oe(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 ue=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 ce(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=se(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=se(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,le(n.plugins,!1,t));case z.enablePlugin:return g$1({},t,le(n.plugins,!0,t));default:return t}}}function se(e,t){return e.substring(t.length+1,e.length)}function le(e,t,n){return e.reduce(function(e,r){return e[r]=g$1({},n[r],{enabled:t}),e},n)}function fe(e){try{return JSON.parse(JSON.stringify(e))}catch(e){}return e}var de={last:{},history:[]};function pe(e,t){void 0===e&&(e=de);var n=t.options,r=t.meta;if(t.type===z.track){var i=fe(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 me={actions:[]};function ge(e,t){void 0===e&&(e=me);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 he=/#.*$/;function ve(e){var t=/(http[s]?:\/\/)?([^\/\s]+\/)(.*)/g.exec(e);return "/"+(t&&t[3]?t[3].split("?")[0].replace(he,""):"")}var ye,be=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(he,"")}(s),f={title:n,url:l,path:ve(l),hash:c,search:s,width:o,height:u};return r&&""!==r&&(f.referrer=r),g$1({},f,e)},Ie={last:{},history:[]};function we(e,t){void 0===e&&(e=Ie);var n=t.options;if(t.type===z.page){var r=fe(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}ye={};var Ee={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.5"},timezone:void 0,locale:void 0,campaign:{},referrer:ye};function Pe(e,t){void 0===e&&(e=Ee);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({},Ee,e,{initialized:!0})}}var Se=["plugins","reducers","storage"];function Ne(){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 Ae(e){return function(){return P(P.apply(null,arguments),Ne())}}function _e(e){return e?rn(e)?e:[e]:[]}function Oe(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 je(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 ue,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:_e(e),_:{originalAction:z.enablePlugin}},n,[t]);})},disable:function(e,t){return new Promise(function(n){le.dispatch({type:z.disablePlugin,plugins:_e(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:be(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,ke),V(i,xe),function(){B(r,ke),B(i,xe);}}var a=e.match(n)?ke:xe,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=Oe()),e(t)}}},L(ke),ae(K,M,{all:O,plugins:A}),oe(m),C$1(K),D(K),L(xe)]),Y={context:Pe,user:U(m),page:we,track:pe,plugins:ce(M),queue:ge},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?Ne():on(typeof arguments[0])?Ae():Ae().apply(null,arguments)};}var ne,re=function(e){return Object.keys(e).reduce(function(t,n){return Se.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},{}),se={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)),se,ee(Z(S.apply(void 0,Q))));le.dispatch=(ne=le.dispatch,function(e,t,n){var r=g$1({},e,{meta:Oe(e.meta,t,_e(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]}),me=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:me});}),K}var ke="before",xe="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 je(_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 loadScript(src, attributes) {
|
|
76
|
+
const found = findScript(src);
|
|
77
|
+
if (found !== undefined) {
|
|
78
|
+
const status = found === null || found === void 0 ? void 0 : found.getAttribute("status");
|
|
79
|
+
if (status === "loaded") {
|
|
80
|
+
return Promise.resolve(found);
|
|
81
|
+
}
|
|
82
|
+
if (status === "loading") {
|
|
83
|
+
return new Promise((resolve, reject) => {
|
|
84
|
+
found.addEventListener("load", () => resolve(found));
|
|
85
|
+
found.addEventListener("error", err => reject(err));
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return new Promise((resolve, reject) => {
|
|
90
|
+
var _a;
|
|
91
|
+
const script = window.document.createElement("script");
|
|
92
|
+
script.type = "text/javascript";
|
|
93
|
+
script.src = src;
|
|
94
|
+
script.async = true;
|
|
95
|
+
script.setAttribute("status", "loading");
|
|
96
|
+
for (const [k, v] of Object.entries(attributes !== null && attributes !== void 0 ? attributes : {})) {
|
|
97
|
+
script.setAttribute(k, v);
|
|
98
|
+
}
|
|
99
|
+
script.onload = () => {
|
|
100
|
+
script.onerror = script.onload = null;
|
|
101
|
+
script.setAttribute("status", "loaded");
|
|
102
|
+
resolve(script);
|
|
103
|
+
};
|
|
104
|
+
script.onerror = () => {
|
|
105
|
+
script.onerror = script.onload = null;
|
|
106
|
+
script.setAttribute("status", "error");
|
|
107
|
+
reject(new Error(`Failed to load ${src}`));
|
|
108
|
+
};
|
|
109
|
+
const tag = window.document.getElementsByTagName("script")[0];
|
|
110
|
+
(_a = tag.parentElement) === null || _a === void 0 ? void 0 : _a.insertBefore(script, tag);
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
var __awaiter$4 = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
115
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
116
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
117
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
118
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
119
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
120
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
121
|
+
});
|
|
122
|
+
};
|
|
123
|
+
const tagPlugin = {
|
|
124
|
+
id: "tag",
|
|
125
|
+
handle(config, payload) {
|
|
126
|
+
return __awaiter$4(this, void 0, void 0, function* () {
|
|
127
|
+
if (!applyFilters(payload, config)) {
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
insertTags(config.code, payload);
|
|
131
|
+
});
|
|
132
|
+
},
|
|
133
|
+
};
|
|
134
|
+
function insertTags(code, event, opts = {}) {
|
|
135
|
+
let tag;
|
|
136
|
+
try {
|
|
137
|
+
tag = JSON.parse(code);
|
|
138
|
+
}
|
|
139
|
+
catch (e) {
|
|
140
|
+
tag = { code, lang: "javascript" };
|
|
141
|
+
}
|
|
142
|
+
const debug = opts.debug || false;
|
|
143
|
+
if (isInBrowser()) {
|
|
144
|
+
if (tag.lang === "javascript") {
|
|
145
|
+
execJs(tag.code, event);
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
const codeHolder = document.createElement("span");
|
|
149
|
+
codeHolder.innerHTML = replaceMacro(tag.code, event);
|
|
150
|
+
document.body.insertAdjacentElement("beforeend", codeHolder);
|
|
151
|
+
const scripts = codeHolder.querySelectorAll("script");
|
|
152
|
+
scripts.forEach(script => {
|
|
153
|
+
const scriptClone = document.createElement("script");
|
|
154
|
+
scriptClone.type = scriptClone.type || "text/javascript";
|
|
155
|
+
if (script.hasAttribute("src")) {
|
|
156
|
+
scriptClone.src = script.src;
|
|
157
|
+
}
|
|
158
|
+
scriptClone.text = script.text;
|
|
159
|
+
if (debug) {
|
|
160
|
+
console.log(`[JITSU] Executing script${script.hasAttribute("src") ? ` ${script.src}` : ""}`, scriptClone.text);
|
|
161
|
+
}
|
|
162
|
+
document.head.appendChild(scriptClone);
|
|
163
|
+
document.head.removeChild(scriptClone);
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
if (debug) {
|
|
169
|
+
console.log(`[JITSU] insertTags(): cannot insert tags in non-browser environment`);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
function execJs(code, event) {
|
|
174
|
+
const varName = `jitsu_event_${randomId()}`;
|
|
175
|
+
window[varName] = event;
|
|
176
|
+
const iif = `(function(){
|
|
177
|
+
const event = ${varName};
|
|
178
|
+
${code}
|
|
179
|
+
})()`;
|
|
180
|
+
try {
|
|
181
|
+
eval(iif);
|
|
182
|
+
}
|
|
183
|
+
catch (e) {
|
|
184
|
+
console.error(`[JITSU] Error executing JS code: ${e.message}. Code: `, iif);
|
|
185
|
+
}
|
|
186
|
+
finally {
|
|
187
|
+
delete window[varName];
|
|
188
|
+
}
|
|
189
|
+
return iif;
|
|
190
|
+
}
|
|
191
|
+
function replaceMacro(code, event) {
|
|
192
|
+
return code.replace(/{{\s*event\s*}}/g, JSON.stringify(event));
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
var __awaiter$3 = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
196
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
197
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
198
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
199
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
200
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
201
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
202
|
+
});
|
|
203
|
+
};
|
|
204
|
+
const logrocketPlugin = {
|
|
205
|
+
id: "logrocket",
|
|
206
|
+
handle(config, payload) {
|
|
207
|
+
return __awaiter$3(this, void 0, void 0, function* () {
|
|
208
|
+
if (!applyFilters(payload, config)) {
|
|
209
|
+
return;
|
|
210
|
+
}
|
|
211
|
+
initLogrocketIfNeeded(config.appId);
|
|
212
|
+
const action = logRocket => {
|
|
213
|
+
if (payload.type === "identify" && payload.userId) {
|
|
214
|
+
logRocket.identify(payload.userId, payload.traits || {});
|
|
215
|
+
}
|
|
216
|
+
};
|
|
217
|
+
getLogRocketQueue().push(action);
|
|
218
|
+
if (getLogRocketState() === "loaded") {
|
|
219
|
+
flushLogRocketQueue(window["LogRocket"]);
|
|
220
|
+
}
|
|
221
|
+
});
|
|
222
|
+
},
|
|
223
|
+
};
|
|
224
|
+
function getLogRocketState() {
|
|
225
|
+
return window["__jitsuLrState"] || "fresh";
|
|
226
|
+
}
|
|
227
|
+
function setLogRocketState(s) {
|
|
228
|
+
window["__jitsuLrState"] = s;
|
|
229
|
+
}
|
|
230
|
+
function getLogRocketQueue() {
|
|
231
|
+
return window["__jitsuLrQueue"] || (window["__jitsuLrQueue"] = []);
|
|
232
|
+
}
|
|
233
|
+
function flushLogRocketQueue(lr) {
|
|
234
|
+
const queue = getLogRocketQueue();
|
|
235
|
+
while (queue.length > 0) {
|
|
236
|
+
const method = queue.shift();
|
|
237
|
+
try {
|
|
238
|
+
const res = method(lr);
|
|
239
|
+
if (res) {
|
|
240
|
+
res.catch(e => console.warn(`Async LogRocket method failed: ${e.message}`, e));
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
catch (e) {
|
|
244
|
+
console.warn(`LogRocket method failed: ${e.message}`, e);
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
function initLogrocketIfNeeded(appId) {
|
|
249
|
+
return __awaiter$3(this, void 0, void 0, function* () {
|
|
250
|
+
if (getLogRocketState() !== "fresh") {
|
|
251
|
+
return;
|
|
252
|
+
}
|
|
253
|
+
setLogRocketState("loading");
|
|
254
|
+
loadScript(`https://cdn.lr-ingest.io/LogRocket.min.js`, { crossOrigin: "anonymous" })
|
|
255
|
+
.then(() => {
|
|
256
|
+
if (window["LogRocket"]) {
|
|
257
|
+
try {
|
|
258
|
+
window["LogRocket"].init(appId);
|
|
259
|
+
}
|
|
260
|
+
catch (e) {
|
|
261
|
+
console.warn(`LogRocket (id=${appId}) init failed: ${e.message}`, e);
|
|
262
|
+
setLogRocketState("failed");
|
|
263
|
+
}
|
|
264
|
+
setLogRocketState("loaded");
|
|
265
|
+
flushLogRocketQueue(window["LogRocket"]);
|
|
266
|
+
}
|
|
267
|
+
})
|
|
268
|
+
.catch(e => {
|
|
269
|
+
console.warn(`LogRocket (id=${appId}) init failed: ${e.message}`, e);
|
|
270
|
+
setLogRocketState("failed");
|
|
271
|
+
});
|
|
272
|
+
});
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
var __awaiter$2 = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
276
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
277
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
278
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
279
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
280
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
281
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
282
|
+
});
|
|
283
|
+
};
|
|
284
|
+
const defaultScriptSrc$1 = "https://www.googletagmanager.com/gtag/js";
|
|
285
|
+
const gtmPlugin = {
|
|
286
|
+
id: "gtm",
|
|
287
|
+
handle(config, payload) {
|
|
288
|
+
var _a, _b;
|
|
289
|
+
return __awaiter$2(this, void 0, void 0, function* () {
|
|
290
|
+
if (!applyFilters(payload, config)) {
|
|
291
|
+
return;
|
|
292
|
+
}
|
|
293
|
+
yield initGtmIfNeeded(config, payload);
|
|
294
|
+
const dataLayer = window[config.dataLayerName || "dataLayer"];
|
|
295
|
+
const ids = Object.assign(Object.assign({}, (payload.userId ? { user_id: payload.userId, userId: payload.userId } : {})), (payload.anonymousId ? { anonymousId: payload.anonymousId } : {}));
|
|
296
|
+
switch (payload.type) {
|
|
297
|
+
case "page":
|
|
298
|
+
const { properties: pageProperties, context } = payload;
|
|
299
|
+
const pageEvent = Object.assign({ event: "page_view", 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);
|
|
300
|
+
dataLayer.push(pageEvent);
|
|
301
|
+
break;
|
|
302
|
+
case "track":
|
|
303
|
+
const { properties: trackProperties } = payload;
|
|
304
|
+
const trackEvent = Object.assign(Object.assign({ event: payload.event }, trackProperties), ids);
|
|
305
|
+
dataLayer.push(trackEvent);
|
|
306
|
+
break;
|
|
307
|
+
case "identify":
|
|
308
|
+
const { traits } = payload;
|
|
309
|
+
const identifyEvent = Object.assign(Object.assign({ event: "identify" }, traits), ids);
|
|
310
|
+
dataLayer.push(identifyEvent);
|
|
311
|
+
break;
|
|
312
|
+
}
|
|
313
|
+
dataLayer.push(function () {
|
|
314
|
+
this.reset();
|
|
315
|
+
});
|
|
316
|
+
});
|
|
317
|
+
},
|
|
318
|
+
};
|
|
319
|
+
function getGtmState() {
|
|
320
|
+
return window["__jitsuGtmState"] || "fresh";
|
|
321
|
+
}
|
|
322
|
+
function setGtmState(s) {
|
|
323
|
+
window["__jitsuGtmState"] = s;
|
|
324
|
+
}
|
|
325
|
+
function initGtmIfNeeded(config, payload) {
|
|
326
|
+
return __awaiter$2(this, void 0, void 0, function* () {
|
|
327
|
+
if (getGtmState() !== "fresh") {
|
|
328
|
+
return;
|
|
329
|
+
}
|
|
330
|
+
setGtmState("loading");
|
|
331
|
+
const dlName = config.dataLayerName || "dataLayer";
|
|
332
|
+
const dlParam = dlName !== "dataLayer" ? "&l=" + dlName : "";
|
|
333
|
+
const previewParams = config.preview
|
|
334
|
+
? `>m_preview=${config.preview}>m_auth=${config.auth}>m_cookies_win=x`
|
|
335
|
+
: "";
|
|
336
|
+
const tagId = config.containerId;
|
|
337
|
+
const scriptSrc = `${config.customScriptSrc || defaultScriptSrc$1}?id=${tagId}${dlParam}${previewParams}`;
|
|
338
|
+
window[dlName] = window[dlName] || [];
|
|
339
|
+
const gtag = function () {
|
|
340
|
+
window[dlName].push(arguments);
|
|
341
|
+
};
|
|
342
|
+
window[dlName].push({
|
|
343
|
+
user_id: payload.userId,
|
|
344
|
+
});
|
|
345
|
+
// @ts-ignore
|
|
346
|
+
gtag("js", new Date());
|
|
347
|
+
// @ts-ignore
|
|
348
|
+
gtag("config", tagId);
|
|
349
|
+
loadScript(scriptSrc)
|
|
350
|
+
.then(() => {
|
|
351
|
+
setGtmState("loaded");
|
|
352
|
+
})
|
|
353
|
+
.catch(e => {
|
|
354
|
+
console.warn(`GTM (containerId=${tagId}) init failed: ${e.message}`, e);
|
|
355
|
+
setGtmState("failed");
|
|
356
|
+
});
|
|
357
|
+
});
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
var __awaiter$1 = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
361
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
362
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
363
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
364
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
365
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
366
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
367
|
+
});
|
|
368
|
+
};
|
|
369
|
+
const defaultScriptSrc = "https://www.googletagmanager.com/gtag/js";
|
|
370
|
+
const ga4Plugin = {
|
|
371
|
+
id: "ga4-tag",
|
|
372
|
+
handle(config, payload) {
|
|
373
|
+
var _a, _b;
|
|
374
|
+
return __awaiter$1(this, void 0, void 0, function* () {
|
|
375
|
+
if (!applyFilters(payload, config)) {
|
|
376
|
+
return;
|
|
377
|
+
}
|
|
378
|
+
yield initGa4IfNeeded(config, payload);
|
|
379
|
+
const dataLayer = window[config.dataLayerName || "dataLayer"];
|
|
380
|
+
const gtag = function () {
|
|
381
|
+
dataLayer.push(arguments);
|
|
382
|
+
};
|
|
383
|
+
const ids = Object.assign(Object.assign({}, (payload.userId ? { user_id: payload.userId, userId: payload.userId } : {})), (payload.anonymousId ? { anonymousId: payload.anonymousId } : {}));
|
|
384
|
+
if (payload.userId) {
|
|
385
|
+
// @ts-ignore
|
|
386
|
+
gtag("set", { user_id: payload.userId });
|
|
387
|
+
}
|
|
388
|
+
switch (payload.type) {
|
|
389
|
+
case "page":
|
|
390
|
+
if (config.autoPageView) {
|
|
391
|
+
console.log("autoPageView");
|
|
392
|
+
break;
|
|
393
|
+
}
|
|
394
|
+
const { properties: pageProperties, context } = payload;
|
|
395
|
+
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);
|
|
396
|
+
// @ts-ignore
|
|
397
|
+
gtag("event", "page_view", pageEvent);
|
|
398
|
+
break;
|
|
399
|
+
case "track":
|
|
400
|
+
const { properties: trackProperties } = payload;
|
|
401
|
+
const trackEvent = Object.assign(Object.assign({}, trackProperties), ids);
|
|
402
|
+
// @ts-ignore
|
|
403
|
+
gtag("event", payload.event, trackEvent);
|
|
404
|
+
break;
|
|
405
|
+
case "identify":
|
|
406
|
+
const { traits } = payload;
|
|
407
|
+
const identifyEvent = Object.assign(Object.assign({}, traits), ids);
|
|
408
|
+
// @ts-ignore
|
|
409
|
+
gtag("event", "identify", identifyEvent);
|
|
410
|
+
break;
|
|
411
|
+
}
|
|
412
|
+
});
|
|
413
|
+
},
|
|
414
|
+
};
|
|
415
|
+
function getGa4State() {
|
|
416
|
+
return window["__jitsuGa4State"] || "fresh";
|
|
417
|
+
}
|
|
418
|
+
function setGa4State(s) {
|
|
419
|
+
window["__jitsuGa4State"] = s;
|
|
420
|
+
}
|
|
421
|
+
function initGa4IfNeeded(config, payload) {
|
|
422
|
+
return __awaiter$1(this, void 0, void 0, function* () {
|
|
423
|
+
if (getGa4State() !== "fresh") {
|
|
424
|
+
return;
|
|
425
|
+
}
|
|
426
|
+
setGa4State("loading");
|
|
427
|
+
const dlName = config.dataLayerName || "dataLayer";
|
|
428
|
+
const dlParam = dlName !== "dataLayer" ? "&l=" + dlName : "";
|
|
429
|
+
// to work with both GA4 and GTM
|
|
430
|
+
const tagId = config.measurementIds;
|
|
431
|
+
const scriptSrc = `${defaultScriptSrc}?id=${tagId}${dlParam}`;
|
|
432
|
+
window[dlName] = window[dlName] || [];
|
|
433
|
+
const gtag = function () {
|
|
434
|
+
window[dlName].push(arguments);
|
|
435
|
+
};
|
|
436
|
+
// @ts-ignore
|
|
437
|
+
gtag("js", new Date());
|
|
438
|
+
gtag(
|
|
439
|
+
// @ts-ignore
|
|
440
|
+
"config", tagId, Object.assign(Object.assign({}, (payload.userId ? { user_id: payload.userId } : {})), (!config.autoPageView ? { send_page_view: false } : {})));
|
|
441
|
+
loadScript(scriptSrc)
|
|
442
|
+
.then(() => {
|
|
443
|
+
setGa4State("loaded");
|
|
444
|
+
})
|
|
445
|
+
.catch(e => {
|
|
446
|
+
console.warn(`GA4 (containerId=${config.measurementIds}) init failed: ${e.message}`, e);
|
|
447
|
+
setGa4State("failed");
|
|
448
|
+
});
|
|
449
|
+
});
|
|
450
|
+
}
|
|
451
|
+
|
|
452
|
+
function satisfyFilter(filter, subject) {
|
|
453
|
+
return filter === "*" || filter.toLowerCase().trim() === (subject || "").trim().toLowerCase();
|
|
454
|
+
}
|
|
455
|
+
function satisfyDomainFilter(filter, subject) {
|
|
456
|
+
if (filter === "*") {
|
|
457
|
+
return true;
|
|
458
|
+
}
|
|
459
|
+
subject = subject || "";
|
|
460
|
+
if (filter.startsWith("*.")) {
|
|
461
|
+
return subject.endsWith(filter.substring(1));
|
|
462
|
+
}
|
|
463
|
+
else {
|
|
464
|
+
return filter === subject;
|
|
465
|
+
}
|
|
466
|
+
}
|
|
467
|
+
function applyFilters(event, creds) {
|
|
468
|
+
const { hosts = "*", events = "*" } = creds;
|
|
469
|
+
try {
|
|
470
|
+
const eventsArray = Array.isArray(events) ? events : events.split("\n");
|
|
471
|
+
const hostsArray = Array.isArray(hosts) ? hosts : hosts.split("\n");
|
|
472
|
+
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); }) &&
|
|
473
|
+
(!!eventsArray.find(eventFilter => satisfyFilter(eventFilter, event.type)) ||
|
|
474
|
+
!!eventsArray.find(eventFilter => satisfyFilter(eventFilter, event.event))));
|
|
475
|
+
}
|
|
476
|
+
catch (e) {
|
|
477
|
+
console.warn(`Failed to apply filters: ${e.message}. Typeof events: ${typeof events}, typeof hosts: ${typeof hosts}. Values`, events, hosts);
|
|
478
|
+
throw new Error(`Failed to apply filters: ${e.message}. Typeof events: ${typeof events}, typeof hosts: ${typeof hosts}`);
|
|
479
|
+
}
|
|
480
|
+
}
|
|
481
|
+
const internalDestinationPlugins = {
|
|
482
|
+
[tagPlugin.id]: tagPlugin,
|
|
483
|
+
[gtmPlugin.id]: gtmPlugin,
|
|
484
|
+
[ga4Plugin.id]: ga4Plugin,
|
|
485
|
+
[logrocketPlugin.id]: logrocketPlugin,
|
|
486
|
+
};
|
|
487
|
+
|
|
488
|
+
var name = "@jitsu/js";
|
|
489
|
+
var version = "0.0.0";
|
|
490
|
+
|
|
491
|
+
const publicSuffixes = "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(",");
|
|
492
|
+
//convert to Map
|
|
493
|
+
const _publicSuffixesMap = {};
|
|
494
|
+
publicSuffixes.forEach(tld => {
|
|
495
|
+
_publicSuffixesMap[tld] = true;
|
|
496
|
+
});
|
|
497
|
+
const publicSuffixesMap = _publicSuffixesMap;
|
|
498
|
+
function getTopLevelDomain(hostname) {
|
|
499
|
+
const [domain] = hostname.split(":");
|
|
500
|
+
const parts = domain.split(".");
|
|
501
|
+
if (parts[parts.length - 1] === "localhost" || parts.length < 2) {
|
|
502
|
+
return parts[parts.length - 1];
|
|
503
|
+
}
|
|
504
|
+
else {
|
|
505
|
+
const d = parts[parts.length - 2] + "." + parts[parts.length - 1];
|
|
506
|
+
if (parts.length > 2 && publicSuffixesMap[d]) {
|
|
507
|
+
return parts[parts.length - 3] + "." + d;
|
|
508
|
+
}
|
|
509
|
+
else {
|
|
510
|
+
return d;
|
|
511
|
+
}
|
|
512
|
+
}
|
|
513
|
+
}
|
|
514
|
+
|
|
515
|
+
/* global analytics */
|
|
516
|
+
var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
517
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
518
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
519
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
520
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
521
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
522
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
523
|
+
});
|
|
524
|
+
};
|
|
525
|
+
const defaultConfig = {
|
|
526
|
+
/* Your segment writeKey */
|
|
527
|
+
writeKey: null,
|
|
528
|
+
/* Disable anonymous MTU */
|
|
529
|
+
host: null,
|
|
530
|
+
debug: false,
|
|
531
|
+
fetch: null,
|
|
532
|
+
echoEvents: false,
|
|
533
|
+
cookieDomain: undefined,
|
|
534
|
+
runtime: undefined,
|
|
535
|
+
};
|
|
536
|
+
const parseQuery = (qs) => {
|
|
537
|
+
if (!qs) {
|
|
538
|
+
return {};
|
|
539
|
+
}
|
|
540
|
+
let queryString = qs.length > 0 && qs.charAt(0) === "?" ? qs.substring(1) : qs;
|
|
541
|
+
let query = {};
|
|
542
|
+
let pairs = (queryString[0] === "?" ? queryString.substr(1) : queryString).split("&");
|
|
543
|
+
for (let i = 0; i < pairs.length; i++) {
|
|
544
|
+
let pair = pairs[i].split("=");
|
|
545
|
+
query[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1] || "");
|
|
546
|
+
}
|
|
547
|
+
return query;
|
|
548
|
+
};
|
|
549
|
+
function utmToKey(key) {
|
|
550
|
+
const name = key.substring("utm_".length);
|
|
551
|
+
return name === "campaign" ? "name" : name;
|
|
552
|
+
}
|
|
553
|
+
function parseUtms(query) {
|
|
554
|
+
return Object.entries(query)
|
|
555
|
+
.filter(([key]) => key.indexOf("utm_") === 0)
|
|
556
|
+
.reduce((acc, [key, value]) => (Object.assign(Object.assign({}, acc), { [utmToKey(key)]: value })), {});
|
|
557
|
+
}
|
|
558
|
+
function safeCall(f, defaultVal) {
|
|
559
|
+
try {
|
|
560
|
+
return f();
|
|
561
|
+
}
|
|
562
|
+
catch (e) {
|
|
563
|
+
return defaultVal;
|
|
564
|
+
}
|
|
565
|
+
}
|
|
566
|
+
function restoreTraits(storage) {
|
|
567
|
+
const val = storage.getItem("__user_traits");
|
|
568
|
+
if (typeof val === "string") {
|
|
569
|
+
return safeCall(() => JSON.parse(val), {});
|
|
570
|
+
}
|
|
571
|
+
return val;
|
|
572
|
+
}
|
|
573
|
+
function getCookie(name) {
|
|
574
|
+
const value = `; ${document.cookie}`;
|
|
575
|
+
const parts = value.split(`; ${name}=`);
|
|
576
|
+
return parts.length === 2 ? parts.pop().split(";").shift() : undefined;
|
|
577
|
+
}
|
|
578
|
+
function getGa4Ids(runtime) {
|
|
579
|
+
var _a;
|
|
580
|
+
const allCookies = runtime.getCookies();
|
|
581
|
+
const clientId = (_a = allCookies["_ga"]) === null || _a === void 0 ? void 0 : _a.split(".").slice(-2).join(".");
|
|
582
|
+
const gaSessionCookies = Object.entries(allCookies).filter(([key]) => key.startsWith("_ga_"));
|
|
583
|
+
const sessionIds = gaSessionCookies.length > 0
|
|
584
|
+
? Object.fromEntries(gaSessionCookies
|
|
585
|
+
.map(([key, value]) => {
|
|
586
|
+
if (typeof value !== "string") {
|
|
587
|
+
return null;
|
|
588
|
+
}
|
|
589
|
+
const parts = value.split(".");
|
|
590
|
+
if (parts.length < 3) {
|
|
591
|
+
return null;
|
|
592
|
+
}
|
|
593
|
+
return [key.substring("_ga_".length), parts[2]];
|
|
594
|
+
})
|
|
595
|
+
.filter(v => v !== null))
|
|
596
|
+
: undefined;
|
|
597
|
+
if (clientId || sessionIds) {
|
|
598
|
+
return { ga4: { clientId, sessionIds } };
|
|
599
|
+
}
|
|
600
|
+
else {
|
|
601
|
+
return undefined;
|
|
602
|
+
}
|
|
603
|
+
}
|
|
604
|
+
function removeCookie(name) {
|
|
605
|
+
document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:01 GMT;";
|
|
606
|
+
}
|
|
607
|
+
function setCookie(name, val, { domain, secure }) {
|
|
608
|
+
document.cookie =
|
|
609
|
+
name +
|
|
610
|
+
"=" +
|
|
611
|
+
val +
|
|
612
|
+
";domain=" +
|
|
613
|
+
domain +
|
|
614
|
+
";path=/" +
|
|
615
|
+
";expires=" +
|
|
616
|
+
new Date(new Date().getTime() + 1000 * 60 * 60 * 24 * 365 * 5).toUTCString() +
|
|
617
|
+
";SameSite=" +
|
|
618
|
+
(secure ? "None" : "Lax") +
|
|
619
|
+
(secure ? ";secure" : "");
|
|
620
|
+
}
|
|
621
|
+
const defaultCookie2Key = {
|
|
622
|
+
__anon_id: "__eventn_id",
|
|
623
|
+
__user_traits: "__eventn_id_usr",
|
|
624
|
+
__user_id: "__eventn_uid",
|
|
625
|
+
};
|
|
626
|
+
const cookieStorage = (cookieDomain, key2cookie) => {
|
|
627
|
+
return {
|
|
628
|
+
setItem(key, val) {
|
|
629
|
+
const strVal = typeof val === "object" && val !== null ? encodeURIComponent(JSON.stringify(val)) : val;
|
|
630
|
+
const cookieName = key2cookie[key] || key;
|
|
631
|
+
setCookie(cookieName, strVal, {
|
|
632
|
+
domain: cookieDomain,
|
|
633
|
+
secure: window.location.protocol === "https:",
|
|
634
|
+
});
|
|
635
|
+
},
|
|
636
|
+
getItem(key) {
|
|
637
|
+
const cookieName = key2cookie[key] || key;
|
|
638
|
+
const result = getCookie(cookieName);
|
|
639
|
+
if (typeof result === "undefined" && key === "__user_id") {
|
|
640
|
+
//backward compatibility with old jitsu cookie. get user id if from traits
|
|
641
|
+
const traits = parse(getCookie("__eventn_id_usr")) || {};
|
|
642
|
+
return traits.internal_id || traits.user_id || traits.id || traits.userId;
|
|
643
|
+
}
|
|
644
|
+
return parse(result);
|
|
645
|
+
},
|
|
646
|
+
removeItem(key) {
|
|
647
|
+
removeCookie(key2cookie[key] || key);
|
|
648
|
+
},
|
|
649
|
+
};
|
|
650
|
+
};
|
|
651
|
+
function windowRuntime(opts) {
|
|
652
|
+
return {
|
|
653
|
+
getCookie(name) {
|
|
654
|
+
const value = `; ${document.cookie}`;
|
|
655
|
+
const parts = value.split(`; ${name}=`);
|
|
656
|
+
return parts.length === 2 ? parts.pop().split(";").shift() : undefined;
|
|
657
|
+
},
|
|
658
|
+
getCookies() {
|
|
659
|
+
const value = `; ${document.cookie}`;
|
|
660
|
+
const cookies = {};
|
|
661
|
+
const matches = value.matchAll(/(\w+)=([^;]+)/g);
|
|
662
|
+
for (const match of matches) {
|
|
663
|
+
cookies[match[1]] = match[2];
|
|
664
|
+
}
|
|
665
|
+
return cookies;
|
|
666
|
+
},
|
|
667
|
+
documentEncoding() {
|
|
668
|
+
return window.document.characterSet;
|
|
669
|
+
},
|
|
670
|
+
timezoneOffset() {
|
|
671
|
+
return new Date().getTimezoneOffset();
|
|
672
|
+
},
|
|
673
|
+
store() {
|
|
674
|
+
return cookieStorage(opts.cookieDomain || getTopLevelDomain(window.location.hostname), defaultCookie2Key);
|
|
675
|
+
},
|
|
676
|
+
language() {
|
|
677
|
+
return window.navigator.language;
|
|
678
|
+
},
|
|
679
|
+
pageTitle() {
|
|
680
|
+
return window.document.title;
|
|
681
|
+
},
|
|
682
|
+
pageUrl() {
|
|
683
|
+
return window.location.href;
|
|
684
|
+
},
|
|
685
|
+
referrer() {
|
|
686
|
+
return window.document.referrer;
|
|
687
|
+
},
|
|
688
|
+
screen() {
|
|
689
|
+
return {
|
|
690
|
+
width: window.screen.width,
|
|
691
|
+
height: window.screen.height,
|
|
692
|
+
innerWidth: window.innerWidth,
|
|
693
|
+
innerHeight: window.innerHeight,
|
|
694
|
+
density: Math.floor(window.devicePixelRatio),
|
|
695
|
+
};
|
|
696
|
+
},
|
|
697
|
+
userAgent() {
|
|
698
|
+
return window.navigator.userAgent;
|
|
699
|
+
},
|
|
700
|
+
};
|
|
701
|
+
}
|
|
702
|
+
const emptyRuntime = (config) => ({
|
|
703
|
+
documentEncoding() {
|
|
704
|
+
return undefined;
|
|
705
|
+
},
|
|
706
|
+
timezoneOffset() {
|
|
707
|
+
return undefined;
|
|
708
|
+
},
|
|
709
|
+
getCookie(name) {
|
|
710
|
+
return undefined;
|
|
711
|
+
},
|
|
712
|
+
getCookies() {
|
|
713
|
+
return {};
|
|
714
|
+
},
|
|
715
|
+
store() {
|
|
716
|
+
const storage = {};
|
|
717
|
+
return {
|
|
718
|
+
setItem(key, val) {
|
|
719
|
+
if (config.debug) {
|
|
720
|
+
console.log(`[JITSU EMPTY RUNTIME] Set storage item ${key}=${JSON.stringify(val)}`);
|
|
721
|
+
}
|
|
722
|
+
storage[key] = val;
|
|
723
|
+
},
|
|
724
|
+
getItem(key) {
|
|
725
|
+
const val = storage[key];
|
|
726
|
+
if (config.debug) {
|
|
727
|
+
console.log(`[JITSU EMPTY RUNTIME] Get storage item ${key}=${JSON.stringify(val)}`);
|
|
728
|
+
}
|
|
729
|
+
return val;
|
|
730
|
+
},
|
|
731
|
+
removeItem(key) {
|
|
732
|
+
if (config.debug) {
|
|
733
|
+
console.log(`[JITSU EMPTY RUNTIME] Get storage item ${key}=${storage[key]}`);
|
|
734
|
+
}
|
|
735
|
+
delete storage[key];
|
|
736
|
+
},
|
|
737
|
+
};
|
|
738
|
+
},
|
|
739
|
+
language() {
|
|
740
|
+
return undefined;
|
|
741
|
+
},
|
|
742
|
+
pageTitle() {
|
|
743
|
+
return undefined;
|
|
744
|
+
},
|
|
745
|
+
pageUrl() {
|
|
746
|
+
return undefined;
|
|
747
|
+
},
|
|
748
|
+
referrer() {
|
|
749
|
+
return undefined;
|
|
750
|
+
},
|
|
751
|
+
screen() {
|
|
752
|
+
return undefined;
|
|
753
|
+
},
|
|
754
|
+
userAgent() {
|
|
755
|
+
return undefined;
|
|
756
|
+
},
|
|
757
|
+
});
|
|
758
|
+
function deepMerge(target, source) {
|
|
759
|
+
if (typeof source !== "object" || source === null) {
|
|
760
|
+
return source;
|
|
761
|
+
}
|
|
762
|
+
if (typeof target !== "object" || target === null) {
|
|
763
|
+
return source;
|
|
764
|
+
}
|
|
765
|
+
return Object.entries(source).reduce((acc, [key, value]) => {
|
|
766
|
+
acc[key] = deepMerge(target[key], value);
|
|
767
|
+
return acc;
|
|
768
|
+
}, target);
|
|
769
|
+
}
|
|
770
|
+
function isInBrowser() {
|
|
771
|
+
return typeof document !== "undefined" && typeof window !== "undefined";
|
|
772
|
+
}
|
|
773
|
+
function adjustPayload(payload, config, storage) {
|
|
774
|
+
var _a, _b;
|
|
775
|
+
const runtime = config.runtime || (isInBrowser() ? windowRuntime(config) : emptyRuntime(config));
|
|
776
|
+
const url = runtime.pageUrl();
|
|
777
|
+
const parsedUrl = safeCall(() => new URL(url), undefined);
|
|
778
|
+
const query = parsedUrl ? parseQuery(parsedUrl.search) : {};
|
|
779
|
+
const properties = payload.properties || {};
|
|
780
|
+
const customContext = ((_a = payload.properties) === null || _a === void 0 ? void 0 : _a.context) || {};
|
|
781
|
+
(_b = payload.properties) === null || _b === void 0 ? true : delete _b.context;
|
|
782
|
+
const referrer = runtime.referrer();
|
|
783
|
+
const context = {
|
|
784
|
+
library: {
|
|
785
|
+
name: name,
|
|
786
|
+
version: version,
|
|
787
|
+
},
|
|
788
|
+
userAgent: runtime.userAgent(),
|
|
789
|
+
locale: runtime.language(),
|
|
790
|
+
screen: runtime.screen(),
|
|
791
|
+
traits: payload.type != "identify" && payload.type != "group" ? Object.assign({}, (restoreTraits(storage) || {})) : undefined,
|
|
792
|
+
page: {
|
|
793
|
+
path: properties.path || (parsedUrl && parsedUrl.pathname),
|
|
794
|
+
referrer: referrer,
|
|
795
|
+
referring_domain: safeCall(() => referrer && new URL(referrer).hostname),
|
|
796
|
+
host: parsedUrl && parsedUrl.host,
|
|
797
|
+
search: properties.search || (parsedUrl && parsedUrl.search),
|
|
798
|
+
title: properties.title || runtime.pageTitle(),
|
|
799
|
+
url: properties.url || url,
|
|
800
|
+
encoding: properties.encoding || runtime.documentEncoding(),
|
|
801
|
+
},
|
|
802
|
+
clientIds: Object.assign({ fbc: runtime.getCookie("_fbc"), fbp: runtime.getCookie("_fbp") }, getGa4Ids(runtime)),
|
|
803
|
+
campaign: parseUtms(query),
|
|
804
|
+
};
|
|
805
|
+
const withContext = Object.assign(Object.assign({}, payload), { timestamp: new Date().toISOString(), sentAt: new Date().toISOString(), messageId: randomId(properties.path || (parsedUrl && parsedUrl.pathname)), writeKey: maskWriteKey(config.writeKey), context: deepMerge(context, customContext) });
|
|
806
|
+
delete withContext.meta;
|
|
807
|
+
delete withContext.options;
|
|
808
|
+
return withContext;
|
|
809
|
+
}
|
|
810
|
+
function processDestinations(destinations, method, originalEvent, debug, analyticsInstance) {
|
|
811
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
812
|
+
const promises = [];
|
|
813
|
+
for (const destination of destinations) {
|
|
814
|
+
let newEvents = [originalEvent];
|
|
815
|
+
if (destination.newEvents) {
|
|
816
|
+
newEvents = destination.newEvents.map(e => (e === "same" ? originalEvent : e));
|
|
817
|
+
}
|
|
818
|
+
const credentials = Object.assign(Object.assign({}, destination.credentials), destination.options);
|
|
819
|
+
if (destination.deviceOptions.type === "internal-plugin") {
|
|
820
|
+
const plugin = internalDestinationPlugins[destination.deviceOptions.name];
|
|
821
|
+
if (plugin) {
|
|
822
|
+
for (const event of newEvents) {
|
|
823
|
+
try {
|
|
824
|
+
promises.push(plugin.handle(credentials, event));
|
|
825
|
+
}
|
|
826
|
+
catch (e) {
|
|
827
|
+
console.warn(`[JITSU] Error processing event with internal plugin '${destination.deviceOptions.name}': ${e === null || e === void 0 ? void 0 : e.message}`, e);
|
|
828
|
+
}
|
|
829
|
+
}
|
|
830
|
+
}
|
|
831
|
+
else {
|
|
832
|
+
console.warn(`[JITSU] Unknown internal plugin '${destination.deviceOptions.name}' for destination '${destination.id}'`);
|
|
833
|
+
}
|
|
834
|
+
}
|
|
835
|
+
else if (destination.deviceOptions.type === "analytics-plugin") {
|
|
836
|
+
yield loadScript(destination.deviceOptions.packageCdn);
|
|
837
|
+
const plugin = window[destination.deviceOptions.moduleVarName];
|
|
838
|
+
if (!plugin) {
|
|
839
|
+
console.warn(`[JITSU] Broken plugin '${destination.deviceOptions.packageCdn}' for destination '${destination.id}' - it doesn't export '${destination.deviceOptions.moduleVarName}' variable`);
|
|
840
|
+
}
|
|
841
|
+
else {
|
|
842
|
+
let pluginInstance;
|
|
843
|
+
try {
|
|
844
|
+
pluginInstance = (typeof plugin === "function" ? plugin : plugin.init)(credentials);
|
|
845
|
+
}
|
|
846
|
+
catch (e) {
|
|
847
|
+
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);
|
|
848
|
+
}
|
|
849
|
+
try {
|
|
850
|
+
if (debug) {
|
|
851
|
+
console.log(`[JITSU] Plugin '${destination.deviceOptions.moduleVarName}@${destination.deviceOptions.packageCdn}' for destination '${destination.id}' initialized with config:`, pluginInstance.config);
|
|
852
|
+
}
|
|
853
|
+
pluginInstance.initialize({ config: pluginInstance.config, instance: analyticsInstance });
|
|
854
|
+
}
|
|
855
|
+
catch (e) {
|
|
856
|
+
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);
|
|
857
|
+
continue;
|
|
858
|
+
}
|
|
859
|
+
if (pluginInstance[method]) {
|
|
860
|
+
for (const event of newEvents) {
|
|
861
|
+
try {
|
|
862
|
+
pluginInstance[method]({
|
|
863
|
+
payload: event,
|
|
864
|
+
config: pluginInstance.config,
|
|
865
|
+
instance: analyticsInstance,
|
|
866
|
+
});
|
|
867
|
+
}
|
|
868
|
+
catch (e) {
|
|
869
|
+
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);
|
|
870
|
+
}
|
|
871
|
+
}
|
|
872
|
+
}
|
|
873
|
+
}
|
|
874
|
+
}
|
|
875
|
+
}
|
|
876
|
+
});
|
|
877
|
+
}
|
|
878
|
+
function looksLikeCuid(id) {
|
|
879
|
+
return id.length === 25 && id.charAt(0) === "c";
|
|
880
|
+
}
|
|
881
|
+
function validateWriteKey(writeKey) {
|
|
882
|
+
if (writeKey) {
|
|
883
|
+
const [, secret] = writeKey.split(":", 2);
|
|
884
|
+
if (!secret && !looksLikeCuid(writeKey)) {
|
|
885
|
+
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`);
|
|
886
|
+
}
|
|
887
|
+
}
|
|
888
|
+
return writeKey;
|
|
889
|
+
}
|
|
890
|
+
function maskWriteKey(writeKey) {
|
|
891
|
+
if (writeKey) {
|
|
892
|
+
const [id, secret] = writeKey.split(":", 2);
|
|
893
|
+
if (secret) {
|
|
894
|
+
return `${id}:***`;
|
|
895
|
+
}
|
|
896
|
+
else {
|
|
897
|
+
return "***";
|
|
898
|
+
}
|
|
899
|
+
}
|
|
900
|
+
return writeKey;
|
|
901
|
+
}
|
|
902
|
+
function send(method, payload, jitsuConfig, instance, store) {
|
|
903
|
+
if (jitsuConfig.echoEvents) {
|
|
904
|
+
console.log(`[JITSU DEBUG] sending '${method}' event:`, payload);
|
|
905
|
+
return;
|
|
906
|
+
}
|
|
907
|
+
const url = `${jitsuConfig.host}/api/s/${method}`;
|
|
908
|
+
const fetch = jitsuConfig.fetch || globalThis.fetch;
|
|
909
|
+
if (!fetch) {
|
|
910
|
+
throw new Error("Please specify fetch function in jitsu plugin initialization, fetch isn't available in global scope");
|
|
911
|
+
}
|
|
912
|
+
const debugHeader = jitsuConfig.debug ? { "X-Enable-Debug": "true" } : {};
|
|
913
|
+
// if (jitsuConfig.debug) {
|
|
914
|
+
// console.log(`[JITSU] Sending event to ${url}: `, JSON.stringify(payload, null, 2));
|
|
915
|
+
// }
|
|
916
|
+
const adjustedPayload = adjustPayload(payload, jitsuConfig, store);
|
|
917
|
+
const authHeader = jitsuConfig.writeKey ? { "X-Write-Key": jitsuConfig.writeKey } : {};
|
|
918
|
+
return fetch(url, {
|
|
919
|
+
method: "POST",
|
|
920
|
+
headers: Object.assign(Object.assign({ "Content-Type": "application/json" }, authHeader), debugHeader),
|
|
921
|
+
body: JSON.stringify(adjustedPayload),
|
|
922
|
+
})
|
|
923
|
+
.then(res => {
|
|
924
|
+
if (jitsuConfig.debug) {
|
|
925
|
+
console.log(`[JITSU] ${url} replied ${res.status}. Original payload: `, JSON.stringify(adjustedPayload, null, 2));
|
|
926
|
+
}
|
|
927
|
+
if (res.ok) {
|
|
928
|
+
return res.text();
|
|
929
|
+
}
|
|
930
|
+
else {
|
|
931
|
+
return Promise.reject(res.text());
|
|
932
|
+
}
|
|
933
|
+
})
|
|
934
|
+
.then(responseText => {
|
|
935
|
+
let response;
|
|
936
|
+
try {
|
|
937
|
+
response = JSON.parse(responseText);
|
|
938
|
+
}
|
|
939
|
+
catch (e) {
|
|
940
|
+
return Promise.reject(`Can't parse JSON: ${responseText}: ${e === null || e === void 0 ? void 0 : e.message}`);
|
|
941
|
+
}
|
|
942
|
+
if (response.destinations) {
|
|
943
|
+
if (jitsuConfig.debug) {
|
|
944
|
+
console.log(`[JITSU] Processing device destinations: `, JSON.stringify(response.destinations, null, 2));
|
|
945
|
+
}
|
|
946
|
+
return processDestinations(response.destinations, method, adjustedPayload, !!jitsuConfig.debug, instance);
|
|
947
|
+
}
|
|
948
|
+
})
|
|
949
|
+
.catch(err => {
|
|
950
|
+
if (jitsuConfig.debug) {
|
|
951
|
+
console.error(`Jitsu ${url} failed: `, err);
|
|
952
|
+
}
|
|
953
|
+
});
|
|
954
|
+
}
|
|
955
|
+
const jitsuAnalyticsPlugin = (pluginConfig = {}) => {
|
|
956
|
+
const storageCache = {};
|
|
957
|
+
// AnalyticsInstance's storage is async somewhere inside. So if we make 'page' call right after 'identify' call
|
|
958
|
+
// 'page' call will load traits from storage before 'identify' call had a change to save them.
|
|
959
|
+
// to avoid that we use in-memory cache for storage
|
|
960
|
+
const cachingStorageWrapper = (persistentStorage) => ({
|
|
961
|
+
setItem(key, val) {
|
|
962
|
+
if (pluginConfig.debug) {
|
|
963
|
+
console.log(`[JITSU DEBUG] Caching storage setItem: ${key}=${val}`);
|
|
964
|
+
}
|
|
965
|
+
storageCache[key] = val;
|
|
966
|
+
persistentStorage.setItem(key, val);
|
|
967
|
+
},
|
|
968
|
+
getItem(key) {
|
|
969
|
+
const value = storageCache[key] || persistentStorage.getItem(key);
|
|
970
|
+
if (pluginConfig.debug) {
|
|
971
|
+
console.log(`[JITSU DEBUG] Caching storage getItem: ${key}=${value}. Evicted from cache: ${!storageCache[key]}`);
|
|
972
|
+
}
|
|
973
|
+
return value;
|
|
974
|
+
},
|
|
975
|
+
removeItem(key) {
|
|
976
|
+
if (pluginConfig.debug) {
|
|
977
|
+
console.log(`[JITSU DEBUG] Caching storage removeItem: ${key}`);
|
|
978
|
+
}
|
|
979
|
+
delete storageCache[key];
|
|
980
|
+
persistentStorage.removeItem(key);
|
|
981
|
+
},
|
|
982
|
+
});
|
|
983
|
+
const instanceConfig = Object.assign(Object.assign({}, defaultConfig), pluginConfig);
|
|
984
|
+
return {
|
|
985
|
+
name: "jitsu",
|
|
986
|
+
config: instanceConfig,
|
|
987
|
+
initialize: args => {
|
|
988
|
+
const { config } = args;
|
|
989
|
+
if (config.debug) {
|
|
990
|
+
console.debug("[JITSU DEBUG] Initializing Jitsu plugin with config: ", JSON.stringify(config, null, 2));
|
|
991
|
+
}
|
|
992
|
+
if (!config.host && !config.echoEvents) {
|
|
993
|
+
throw new Error("Please specify host variable in jitsu plugin initialization, or set echoEvents to true");
|
|
994
|
+
}
|
|
995
|
+
validateWriteKey(config.writeKey);
|
|
996
|
+
},
|
|
997
|
+
page: args => {
|
|
998
|
+
const { payload, config, instance } = args;
|
|
999
|
+
return send("page", payload, config, instance, cachingStorageWrapper(instance.storage));
|
|
1000
|
+
},
|
|
1001
|
+
track: args => {
|
|
1002
|
+
const { payload, config, instance } = args;
|
|
1003
|
+
return send("track", payload, config, instance, cachingStorageWrapper(instance.storage));
|
|
1004
|
+
},
|
|
1005
|
+
identify: args => {
|
|
1006
|
+
const { payload, config, instance } = args;
|
|
1007
|
+
// Store traits in cache to be able to use them in page and track events that run asynchronously with current identify.
|
|
1008
|
+
storageCache["__user_traits"] = payload.traits;
|
|
1009
|
+
return send("identify", payload, config, instance, cachingStorageWrapper(instance.storage));
|
|
1010
|
+
},
|
|
1011
|
+
reset: args => {
|
|
1012
|
+
//clear storage cache
|
|
1013
|
+
Object.keys(storageCache).forEach(key => delete storageCache[key]);
|
|
1014
|
+
},
|
|
1015
|
+
methods: {
|
|
1016
|
+
//analytics doesn't support group as a base method, so we need to add it manually
|
|
1017
|
+
group(groupId, traits, options, callback) {
|
|
1018
|
+
const analyticsInstance = this.instance;
|
|
1019
|
+
const cacheWrap = cachingStorageWrapper(analyticsInstance.storage);
|
|
1020
|
+
const user = analyticsInstance.user();
|
|
1021
|
+
const userId = (options === null || options === void 0 ? void 0 : options.userId) || (user === null || user === void 0 ? void 0 : user.userId);
|
|
1022
|
+
const anonymousId = (options === null || options === void 0 ? void 0 : options.anonymousId) || (user === null || user === void 0 ? void 0 : user.anonymousId) || cacheWrap.getItem("__anon_id");
|
|
1023
|
+
return send("group", Object.assign(Object.assign({ type: "group", groupId, traits }, (anonymousId ? { anonymousId } : {})), (userId ? { userId } : {})), instanceConfig, analyticsInstance, cacheWrap);
|
|
1024
|
+
},
|
|
1025
|
+
},
|
|
1026
|
+
};
|
|
1027
|
+
};
|
|
1028
|
+
function getSeed() {
|
|
1029
|
+
var _a;
|
|
1030
|
+
const defaultSeed = Date.now() % 2147483647;
|
|
1031
|
+
return isInBrowser() ? ((_a = window === null || window === void 0 ? void 0 : window.performance) === null || _a === void 0 ? void 0 : _a.now()) || defaultSeed : defaultSeed;
|
|
1032
|
+
}
|
|
1033
|
+
function randomId(hashString = "") {
|
|
1034
|
+
const d = Date.now();
|
|
1035
|
+
return (((Math.random() * d * hash(hashString !== null && hashString !== void 0 ? hashString : "", getSeed())) % Number.MAX_SAFE_INTEGER).toString(36) +
|
|
1036
|
+
((Math.random() * d * hash(hashString !== null && hashString !== void 0 ? hashString : "", getSeed())) % Number.MAX_SAFE_INTEGER).toString(36));
|
|
1037
|
+
}
|
|
1038
|
+
function hash(str, seed = 0) {
|
|
1039
|
+
let h1 = 0xdeadbeef ^ seed, h2 = 0x41c6ce57 ^ seed;
|
|
1040
|
+
for (let i = 0, ch; i < str.length; i++) {
|
|
1041
|
+
ch = str.charCodeAt(i);
|
|
1042
|
+
h1 = Math.imul(h1 ^ ch, 2654435761);
|
|
1043
|
+
h2 = Math.imul(h2 ^ ch, 1597334677);
|
|
1044
|
+
}
|
|
1045
|
+
h1 = Math.imul(h1 ^ (h1 >>> 16), 2246822507) ^ Math.imul(h2 ^ (h2 >>> 13), 3266489909);
|
|
1046
|
+
h2 = Math.imul(h2 ^ (h2 >>> 16), 2246822507) ^ Math.imul(h1 ^ (h1 >>> 13), 3266489909);
|
|
1047
|
+
return 4294967296 * (2097151 & h2) + (h1 >>> 0);
|
|
1048
|
+
}
|
|
1049
|
+
|
|
1050
|
+
function parse(input) {
|
|
1051
|
+
let value = input;
|
|
1052
|
+
if ((input === null || input === void 0 ? void 0 : input.indexOf("%7B%22")) === 0) {
|
|
1053
|
+
value = decodeURIComponent(input);
|
|
1054
|
+
}
|
|
1055
|
+
try {
|
|
1056
|
+
value = JSON.parse(value);
|
|
1057
|
+
if (value === "true")
|
|
1058
|
+
return true;
|
|
1059
|
+
if (value === "false")
|
|
1060
|
+
return false;
|
|
1061
|
+
if (typeof value === "object")
|
|
1062
|
+
return value;
|
|
1063
|
+
if (parseFloat(value) === value) {
|
|
1064
|
+
value = parseFloat(value);
|
|
1065
|
+
}
|
|
1066
|
+
}
|
|
1067
|
+
catch (e) { }
|
|
1068
|
+
if (value === null || value === "") {
|
|
1069
|
+
return;
|
|
1070
|
+
}
|
|
1071
|
+
return value;
|
|
1072
|
+
}
|
|
1073
|
+
function createUnderlyingAnalyticsInstance(opts, rt, plugins = []) {
|
|
1074
|
+
const storage = rt.store();
|
|
1075
|
+
const analytics = analyticsLib({
|
|
1076
|
+
app: "test",
|
|
1077
|
+
debug: !!opts.debug,
|
|
1078
|
+
storage,
|
|
1079
|
+
plugins: [jitsuAnalyticsPlugin(opts), ...plugins],
|
|
1080
|
+
});
|
|
1081
|
+
const originalPage = analytics.page;
|
|
1082
|
+
analytics.page = (...args) => {
|
|
1083
|
+
if (args.length === 2 && typeof args[0] === "string" && typeof args[1] === "object") {
|
|
1084
|
+
return originalPage(Object.assign({ name: args[0] }, args[1]));
|
|
1085
|
+
}
|
|
1086
|
+
else {
|
|
1087
|
+
return originalPage(...args);
|
|
1088
|
+
}
|
|
1089
|
+
};
|
|
1090
|
+
return Object.assign(Object.assign({}, analytics), { setAnonymousId: (id) => {
|
|
1091
|
+
if (opts.debug) {
|
|
1092
|
+
console.log("[JITSU DEBUG] Setting anonymous id to " + id);
|
|
1093
|
+
//Workaround for analytics.js bug. Underlying setAnonymousId doesn't work set the id immediately,
|
|
1094
|
+
//so we got to it manually here. See https://github.com/jitsucom/jitsu/issues/1060
|
|
1095
|
+
storage.setItem("__anon_id", id);
|
|
1096
|
+
const userState = analytics.user();
|
|
1097
|
+
if (userState) {
|
|
1098
|
+
userState.anonymousId = id;
|
|
1099
|
+
}
|
|
1100
|
+
analytics.setAnonymousId(id);
|
|
1101
|
+
}
|
|
1102
|
+
}, group(groupId, traits, options, callback) {
|
|
1103
|
+
for (const plugin of Object.values(analytics.plugins)) {
|
|
1104
|
+
if (plugin["group"]) {
|
|
1105
|
+
plugin["group"](groupId, traits, options, callback);
|
|
1106
|
+
}
|
|
1107
|
+
}
|
|
1108
|
+
return Promise.resolve({});
|
|
1109
|
+
} });
|
|
1110
|
+
}
|
|
1111
|
+
function jitsuAnalytics(opts) {
|
|
1112
|
+
const inBrowser = isInBrowser();
|
|
1113
|
+
const rt = opts.runtime || (inBrowser ? windowRuntime(opts) : emptyRuntime(opts));
|
|
1114
|
+
return createUnderlyingAnalyticsInstance(opts, rt);
|
|
1115
|
+
// if (inBrowser) {
|
|
1116
|
+
// const fetch = opts.fetch || globalThis.fetch;
|
|
1117
|
+
// if (!fetch) {
|
|
1118
|
+
// throw new Error(
|
|
1119
|
+
// "Please specify fetch function in jitsu plugin initialization, fetch isn't available in global scope"
|
|
1120
|
+
// );
|
|
1121
|
+
// }
|
|
1122
|
+
// const url = `${opts.host}/api/s/cfg`;
|
|
1123
|
+
// const authHeader = {};
|
|
1124
|
+
// const debugHeader = opts.debug ? { "X-Enable-Debug": "true" } : {};
|
|
1125
|
+
// fetch(url)
|
|
1126
|
+
// .then(res => res.json())
|
|
1127
|
+
// .then(res => {
|
|
1128
|
+
// result.loaded(createUnderlyingAnalyticsInstance(opts, rt, []));
|
|
1129
|
+
// })
|
|
1130
|
+
// .catch(e => {
|
|
1131
|
+
// console.warn(`[JITSU] error getting device-destinations from ${url}`, e);
|
|
1132
|
+
// result.loaded(createUnderlyingAnalyticsInstance(opts, rt));
|
|
1133
|
+
// });
|
|
1134
|
+
// } else {
|
|
1135
|
+
// result.loaded(createUnderlyingAnalyticsInstance(opts, rt));
|
|
1136
|
+
// }
|
|
1137
|
+
}
|
|
1138
|
+
|
|
1139
|
+
function snakeToCamel(s) {
|
|
1140
|
+
return s.replace(/([-_][a-z])/gi, $1 => {
|
|
1141
|
+
return $1.toUpperCase().replace("-", "").replace("_", "");
|
|
1142
|
+
});
|
|
1143
|
+
}
|
|
1144
|
+
const booleanParser = (arg) => arg === "true" || arg === "1" || arg === "yes";
|
|
1145
|
+
const parsers = {
|
|
1146
|
+
debug: booleanParser,
|
|
1147
|
+
initOnly: booleanParser,
|
|
1148
|
+
};
|
|
1149
|
+
function getParser(name) {
|
|
1150
|
+
return parsers[name] || (x => x);
|
|
1151
|
+
}
|
|
1152
|
+
function getScriptAttributes(scriptElement) {
|
|
1153
|
+
return scriptElement
|
|
1154
|
+
.getAttributeNames()
|
|
1155
|
+
.filter(name => name.indexOf("data-") === 0)
|
|
1156
|
+
.map(name => name.substring("data-".length))
|
|
1157
|
+
.reduce((res, name) => (Object.assign(Object.assign({}, res), { [snakeToCamel(name)]: getParser(snakeToCamel(name))(scriptElement.getAttribute(`data-${name}`)) })), {});
|
|
1158
|
+
}
|
|
1159
|
+
(function () {
|
|
1160
|
+
function readJitsuOptions() {
|
|
1161
|
+
const scriptElement = window.document.currentScript;
|
|
1162
|
+
if (!scriptElement) {
|
|
1163
|
+
throw new Error(`Can't find script element`);
|
|
1164
|
+
}
|
|
1165
|
+
const host = new URL(scriptElement.src).origin;
|
|
1166
|
+
return Object.assign(Object.assign(Object.assign({}, ((window === null || window === void 0 ? void 0 : window.jitsuConfig) || {})), getScriptAttributes(scriptElement)), { host });
|
|
1167
|
+
}
|
|
1168
|
+
const options = readJitsuOptions();
|
|
1169
|
+
const JITSU_V2_ID = options.namespace || "jitsu";
|
|
1170
|
+
if (options.debug) {
|
|
1171
|
+
console.log(`Jitsu options: `, JSON.stringify(options));
|
|
1172
|
+
}
|
|
1173
|
+
const jitsu = jitsuAnalytics(options);
|
|
1174
|
+
if (options.onload) {
|
|
1175
|
+
const onloadFunction = window[options.onload];
|
|
1176
|
+
if (!onloadFunction) {
|
|
1177
|
+
console.warn(`onload function ${options.onload} is not found in window`);
|
|
1178
|
+
}
|
|
1179
|
+
if (typeof onloadFunction === "function") {
|
|
1180
|
+
onloadFunction(jitsu);
|
|
1181
|
+
}
|
|
1182
|
+
else {
|
|
1183
|
+
console.warn(`onload function ${options.onload} is not callable: ${typeof onloadFunction}`);
|
|
1184
|
+
}
|
|
1185
|
+
}
|
|
1186
|
+
window[JITSU_V2_ID] = jitsu;
|
|
1187
|
+
/**
|
|
1188
|
+
* New callback based queue, see below
|
|
1189
|
+
*/
|
|
1190
|
+
//make a copy of the queue
|
|
1191
|
+
const callbackQueue = [...(window[JITSU_V2_ID + "Q"] || [])];
|
|
1192
|
+
//replace push with a function that calls callback immediately
|
|
1193
|
+
window[JITSU_V2_ID + "Q"] = {
|
|
1194
|
+
push: (callback) => {
|
|
1195
|
+
if (typeof callback === "function") {
|
|
1196
|
+
callback(jitsu);
|
|
1197
|
+
}
|
|
1198
|
+
else {
|
|
1199
|
+
console.warn(`${JITSU_V2_ID}Q.push() accepts only function, ${typeof callback} given`);
|
|
1200
|
+
}
|
|
1201
|
+
},
|
|
1202
|
+
};
|
|
1203
|
+
if (options.debug) {
|
|
1204
|
+
console.log(`Jitsu callback queue size: ${callbackQueue.length}`, callbackQueue);
|
|
1205
|
+
}
|
|
1206
|
+
callbackQueue.forEach((callback) => {
|
|
1207
|
+
try {
|
|
1208
|
+
callback(jitsu);
|
|
1209
|
+
}
|
|
1210
|
+
catch (e) {
|
|
1211
|
+
console.warn(`Error processing callback from Jitsu queue`, e);
|
|
1212
|
+
}
|
|
1213
|
+
});
|
|
1214
|
+
if (!options.initOnly) {
|
|
1215
|
+
jitsu.page();
|
|
1216
|
+
}
|
|
1217
|
+
})();
|
|
1218
|
+
|
|
1219
|
+
})();
|