@snowplow/tracker-core
Version:
Core functionality for Snowplow JavaScript trackers
9 lines (7 loc) • 28.2 kB
JavaScript
/*!
* Core functionality for Snowplow JavaScript trackers v4.9.0 (http://bit.ly/sp-js)
* Copyright 2022 Snowplow Analytics Ltd, 2010 Anthon Pang
* Licensed under BSD-3-Clause
*/
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((e="undefined"!=typeof globalThis?globalThis:e||self).snowplowTrackerCore={})}(this,(function(e){"use strict";var n=function(){return n=Object.assign||function(e){for(var n,t=1,r=arguments.length;t<r;t++)for(var o in n=arguments[t])Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o]);return e},n.apply(this,arguments)};function t(e,n,t,r){return new(t||(t=Promise))((function(o,a){function i(e){try{u(r.next(e))}catch(e){a(e)}}function c(e){try{u(r.throw(e))}catch(e){a(e)}}function u(e){var n;e.done?o(e.value):(n=e.value,n instanceof t?n:new t((function(e){e(n)}))).then(i,c)}u((r=r.apply(e,n||[])).next())}))}function r(e,n){var t,r,o,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},i=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return i.next=c(0),i.throw=c(1),i.return=c(2),"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function c(c){return function(u){return function(c){if(t)throw new TypeError("Generator is already executing.");for(;i&&(i=0,c[0]&&(a=0)),a;)try{if(t=1,r&&(o=2&c[0]?r.return:c[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,c[1])).done)return o;switch(r=0,o&&(c=[2&c[0],o.value]),c[0]){case 0:case 1:o=c;break;case 4:return a.label++,{value:c[1],done:!1};case 5:a.label++,r=c[1],c=[0];continue;case 7:c=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==c[0]&&2!==c[0])){a=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){a.label=c[1];break}if(6===c[0]&&a.label<o[1]){a.label=o[1],o=c;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(c);break}o[2]&&a.ops.pop(),a.trys.pop();continue}c=n.call(e,a)}catch(e){c=[6,e],r=0}finally{t=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}([c,u])}}}function o(e,n,t){if(t||2===arguments.length)for(var r,o=0,a=n.length;o<a;o++)!r&&o in n||(r||(r=Array.prototype.slice.call(n,0,o)),r[o]=n[o]);return e.concat(r||Array.prototype.slice.call(n))}function a(e){if(!e)return e;switch(4-e.length%4){case 2:e+="==";break;case 3:e+="="}return function(e){var n,t,r,o,a,i,u=function(e){return decodeURIComponent(e.split("").map((function(e){return"%"+("00"+e.charCodeAt(0).toString(16)).slice(-2)})).join(""))},s=0,l=0,d="",f=[];if(!e)return e;e+="";do{n=(i=c.indexOf(e.charAt(s++))<<18|c.indexOf(e.charAt(s++))<<12|(o=c.indexOf(e.charAt(s++)))<<6|(a=c.indexOf(e.charAt(s++))))>>16&255,t=i>>8&255,r=255&i,f[l++]=64===o?String.fromCharCode(n):64===a?String.fromCharCode(n,t):String.fromCharCode(n,t,r)}while(s<e.length);return d=f.join(""),u(d.replace(/\0+$/,""))}(e.replace(/-/g,"+").replace(/_/g,"/"))}function i(e){if(!e)return e;var n=function(e){var n,t,r,o,a,i=0,u=0,s=[];if(!e)return e;e=unescape(encodeURIComponent(e));do{n=(a=e.charCodeAt(i++)<<16|e.charCodeAt(i++)<<8|e.charCodeAt(i++))>>18&63,t=a>>12&63,r=a>>6&63,o=63&a,s[u++]=c.charAt(n)+c.charAt(t)+c.charAt(r)+c.charAt(o)}while(i<e.length);var l=s.join(""),d=e.length%3;return(d?l.slice(0,d-3):l)+"===".slice(d||3)}(e);return n.replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}"function"==typeof SuppressedError&&SuppressedError;var c="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";function u(){var e,n={},t=[],r=[],o=[],a=function(e,t){null!=t&&""!==t&&(n[e]=t)};return{add:a,addDict:function(e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&a(n,e[n])},addJson:function(e,n,o){if(o&&l(o)){var a={keyIfEncoded:e,keyIfNotEncoded:n,json:o};r.push(a),t.push(a)}},addContextEntity:function(e){o.push(e)},getPayload:function(){return n},getJson:function(){return t},withJsonProcessor:function(n){e=n},build:function(){return null==e||e(this,r,o),n}}}function s(e){return function(n,t,r){for(var c=function(t,r,o){var a=JSON.stringify(t);e?n.add(r,i(a)):n.add(o,a)},u=function(t,r){var o=t||function(){var t=n.getPayload();if(e?t.cx:t.co)return JSON.parse(e?a(t.cx):t.co)}();return o?o.data=o.data.concat(r.data):o=r,o},s=void 0,l=0,d=t;l<d.length;l++){var f=d[l];"cx"===f.keyIfEncoded?s=u(s,f.json):c(f.json,f.keyIfEncoded,f.keyIfNotEncoded)}(t.length=0,r.length)&&(s=u(s,{schema:"iglu:com.snowplowanalytics.snowplow/contexts/jsonschema/1-0-0",data:o([],r,!0)}),r.length=0);s&&c(s,"cx","co")}}function l(e){if(!d(e))return!1;for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n))return!0;return!1}function d(e){return null!=e&&(e.constructor==={}.constructor||e.constructor===[].constructor)}var f,p="Snowplow: ";e.LOG_LEVEL=void 0,(f=e.LOG_LEVEL||(e.LOG_LEVEL={}))[f.none=0]="none",f[f.error=1]="error",f[f.warn=2]="warn",f[f.debug=3]="debug",f[f.info=4]="info";var v=function(n){void 0===n&&(n=e.LOG_LEVEL.warn);return{setLogLevel:function(t){n=e.LOG_LEVEL[t]?t:e.LOG_LEVEL.warn},warn:function(t,r){for(var a=[],i=2;i<arguments.length;i++)a[i-2]=arguments[i];if(n>=e.LOG_LEVEL.warn&&"undefined"!=typeof console){var c=p+t;r?console.warn.apply(console,o([c+"\n",r],a,!1)):console.warn.apply(console,o([c],a,!1))}},error:function(t,r){for(var a=[],i=2;i<arguments.length;i++)a[i-2]=arguments[i];if(n>=e.LOG_LEVEL.error&&"undefined"!=typeof console){var c=p+t+"\n";r?console.error.apply(console,o([c+"\n",r],a,!1)):console.error.apply(console,o([c],a,!1))}},debug:function(t){for(var r=[],a=1;a<arguments.length;a++)r[a-1]=arguments[a];n>=e.LOG_LEVEL.debug&&"undefined"!=typeof console&&console.debug.apply(console,o([p+t],r,!1))},info:function(t){for(var r=[],a=1;a<arguments.length;a++)r[a-1]=arguments[a];n>=e.LOG_LEVEL.info&&"undefined"!=typeof console&&console.info.apply(console,o([p+t],r,!1))}}}();function y(){var e=[],n=[],t={},r={},o=function(o){var a=function(e){for(var n=e.getJson(),t=0,r=n;t<r.length;t++){var o=r[t];if("ue_px"===o.keyIfEncoded&&"object"==typeof o.json.data){var a=o.json.data.schema;if("string"==typeof a)return a}}return""}(o),i=function(e){var n=e.getPayload().e;return"string"==typeof n?n:""}(o),c=[],u=G(e.concat(Object.values(t)),o,i,a);c.push.apply(c,u);var s=function(e,n,t,r){var o,a=L(e),i=function(e){var o=function(e,n,t,r){if(I(e)){var o=e[0],a=!1;try{a=o({event:n.getPayload(),eventType:t,eventSchema:r})}catch(e){a=!1}if(!0===a)return G(e[1],n,t,r)}else if(j(e)&&T(e[0],r))return G(e[1],n,t,r);return[]}(e,n,t,r);if(o&&0!==o.length)return o},c=a.map(i);return(o=[]).concat.apply(o,c.filter((function(e){return null!=e&&e.filter(Boolean)})))}(n.concat(Object.values(r)),o,i,a);return c.push.apply(c,s),c};return{getGlobalPrimitives:function(){return e.concat(Object.values(t))},getConditionalProviders:function(){return n.concat(Object.values(r))},addGlobalContexts:function(o){if(Array.isArray(o)){for(var a=[],i=[],c=0,u=o;c<u.length;c++){O(d=u[c])?a.push(d):_(d)&&i.push(d)}e=e.concat(i),n=n.concat(a)}else for(var s=0,l=Object.entries(o);s<l.length;s++){var d,f=l[s],p=f[0];O(d=f[1])?r[p]=d:_(d)&&(t[p]=d)}},clearGlobalContexts:function(){n=[],e=[],r={},t={}},removeGlobalContexts:function(o){for(var a=function(o){"string"==typeof o?(delete r[o],delete t[o]):O(o)?n=n.filter((function(e){return!q(o,e)})):_(o)&&(e=e.filter((function(e){return!q(o,e)})))},i=0,c=o;i<c.length;i++){a(c[i])}},getApplicableContexts:function(e){return o(e)}}}function m(e){return{addPluginContexts:function(n){var t=n?o([],n,!0):[];return e.forEach((function(e){try{e.contexts&&t.push.apply(t,e.contexts())}catch(e){v.error("Error adding plugin contexts",e)}})),t}}}function g(e){var n=new RegExp("^iglu:([a-zA-Z0-9-_.]+)/([a-zA-Z0-9-_]+)/jsonschema/([1-9][0-9]*)-(0|[1-9][0-9]*)-(0|[1-9][0-9]*)$").exec(e);if(null!==n)return n.slice(1,6)}function h(e){if("*"===e[0]||"*"===e[1])return!1;if(e.slice(2).length>0){for(var n=!1,t=0,r=e.slice(2);t<r.length;t++){if("*"===r[t])n=!0;else if(n)return!1}return!0}return 2==e.length}function w(e){var n=e.split(".");return!!(n&&n.length>1)&&h(n)}function b(e){var n=new RegExp("^iglu:((?:(?:[a-zA-Z0-9-_]+|\\*).)+(?:[a-zA-Z0-9-_]+|\\*))/([a-zA-Z0-9-_.]+|\\*)/jsonschema/([1-9][0-9]*|\\*)-(0|[1-9][0-9]*|\\*)-(0|[1-9][0-9]*|\\*)$").exec(e);if(null!==n&&w(n[1]))return n.slice(1,6)}function A(e){var n=b(e);if(n){var t=n[0];return 5===n.length&&w(t)}return!1}function E(e){return Array.isArray(e)&&e.every((function(e){return"string"==typeof e}))}function P(e){return E(e)?e.every((function(e){return A(e)})):"string"==typeof e&&A(e)}function C(e){var n=e;return!!(l(n)&&"schema"in n&&"data"in n)&&("string"==typeof n.schema&&"object"==typeof n.data)}function x(e){var n=e,t=0;if(null!=e&&"object"==typeof e&&!Array.isArray(e)){if(Object.prototype.hasOwnProperty.call(n,"accept")){if(!P(n.accept))return!1;t+=1}if(Object.prototype.hasOwnProperty.call(n,"reject")){if(!P(n.reject))return!1;t+=1}return t>0&&t<=2}return!1}function S(e){return"function"==typeof e&&e.length<=1}function _(e){return S(e)||C(e)}function I(e){return!(!Array.isArray(e)||2!==e.length)&&(Array.isArray(e[1])?S(e[0])&&e[1].every(_):S(e[0])&&_(e[1]))}function j(e){return!(!Array.isArray(e)||2!==e.length)&&(!!x(e[0])&&(Array.isArray(e[1])?e[1].every(_):_(e[1])))}function O(e){return I(e)||j(e)}function T(e,n){var t=0,r=0,o=e.accept;Array.isArray(o)?e.accept.some((function(e){return k(e,n)}))&&r++:"string"==typeof o&&k(o,n)&&r++;var a=e.reject;return Array.isArray(a)?e.reject.some((function(e){return k(e,n)}))&&t++:"string"==typeof a&&k(a,n)&&t++,r>0&&0===t}function k(e,n){if(!A(e))return!1;var t=b(e),r=g(n);if(t&&r){if(!function(e,n){var t=n.split("."),r=e.split(".");if(t&&r){if(t.length!==r.length)return!1;for(var o=0;o<r.length;o++)if(!R(t[o],r[o]))return!1;return!0}return!1}(t[0],r[0]))return!1;for(var o=1;o<5;o++)if(!R(t[o],r[o]))return!1;return!0}return!1}function R(e,n){return e&&n&&"*"===e||e===n}function L(e){return Array.isArray(e)?e:Array.of(e)}function G(e,n,t,r){var o,a=L(e).map((function(e){var o=function(e,n,t,r){if(C(e))return[e];if(S(e)){var o=function(e,n,t,r){var o=void 0;try{return o=e({event:n.getPayload(),eventType:t,eventSchema:r}),Array.isArray(o)&&o.every(C)||C(o)?o:void 0}catch(e){o=void 0}return o}(e,n,t,r);if(C(o))return[o];if(Array.isArray(o))return o}return}(e,n,t,r);if(o&&0!==o.length)return o}));return(o=[]).concat.apply(o,a.filter((function(e){return null!=e&&e.filter(Boolean)})))}function U(e,n){return"function"==typeof e?e===n:JSON.stringify(e)===JSON.stringify(n)}function q(e,n){if(O(e)){if(!O(n))return!1;var t=e[0],r=e[1],o=n[0],a=n[1];return!!U(t,o)&&(Array.isArray(r)?!!Array.isArray(a)&&(r.length===a.length&&r.reduce((function(e,n,t){return e&&U(n,a[t])}),!0)):!Array.isArray(a)&&U(r,a))}return!!_(e)&&(!!_(n)&&U(e,n))}function N(e){var n=e.payload,t=e.svrAnon;return{payload:n,svrAnon:void 0!==t&&t}}const V=[];for(let e=0;e<256;++e)V.push((e+256).toString(16).slice(1));let B;const z=new Uint8Array(16);var D={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function J(e,n,t){if(D.randomUUID&&!n&&!e)return D.randomUUID();const r=(e=e||{}).random??e.rng?.()??function(){if(!B){if("undefined"==typeof crypto||!crypto.getRandomValues)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");B=crypto.getRandomValues.bind(crypto)}return B(z)}();if(r.length<16)throw new Error("Random bytes length must be >= 16");if(r[6]=15&r[6]|64,r[8]=63&r[8]|128,n){if((t=t||0)<0||t+16>n.length)throw new RangeError(`UUID byte range ${t}:${t+15} is out of buffer bounds`);for(let e=0;e<16;++e)n[t+e]=r[e];return n}return function(e,n=0){return(V[e[n+0]]+V[e[n+1]]+V[e[n+2]]+V[e[n+3]]+"-"+V[e[n+4]]+V[e[n+5]]+"-"+V[e[n+6]]+V[e[n+7]]+"-"+V[e[n+8]]+V[e[n+9]]+"-"+V[e[n+10]]+V[e[n+11]]+V[e[n+12]]+V[e[n+13]]+V[e[n+14]]+V[e[n+15]]).toLowerCase()}(r)}function F(e){var n=e.event,t=n.schema,r=n.data,o=u(),a={schema:"iglu:com.snowplowanalytics.snowplow/unstruct_event/jsonschema/1-0-0",data:{schema:t,data:r}};return o.add("e","ue"),o.addJson("ue_px","ue_pr",a),o}function M(e,n){void 0===n&&(n={});var t={};for(var r in e)(n[r]||null!==e[r]&&void 0!==e[r])&&(t[r]=e[r]);return t}function H(e){var n=e.maxSize,t=void 0===n?1e3:n,r=e.events,a=o([],void 0===r?[]:r,!0),i=function(){return Promise.resolve(a.length)};return{count:i,add:function(e){for(a.push(e);a.length>t;)a.shift();return i()},removeHead:function(e){for(var n=0;n<e;n++)a.shift();return Promise.resolve()},iterator:function(){var e=0,n=o([],a,!0);return{next:function(){return e<n.length?Promise.resolve({value:n[e++],done:!1}):Promise.resolve({value:void 0,done:!0})}}},getAll:function(){return Promise.resolve(o([],a,!0))},getAllPayloads:function(){return Promise.resolve(a.map((function(e){return e.payload})))}}}function Z(e){return JSON.stringify({schema:"iglu:com.snowplowanalytics.snowplow/payload_data/jsonschema/1-0-4",data:e})}function $(e){var t,r,o=e.endpoint,a=e.protocol,i=void 0===a?"https":a,c=e.port,u=e.eventMethod,s=void 0===u?"post":u,l=e.customHeaders,d=e.connectionTimeout,f=e.keepalive,p=void 0!==f&&f,v=e.postPath,y=void 0===v?"/com.snowplowanalytics.snowplow/tp2":v,m=e.useStm,g=void 0===m||m,h=e.maxPostBytes,w=void 0===h?4e4:h,b=e.credentials,A=void 0===b?"include":b,E=[],P="post"===s.toLowerCase();function C(){var e=E.reduce((function(e,n){return e+(P?n.getPOSTRequestBytesCount():n.getGETRequestBytesCount())}),0);return P&&(e+=88),e}function x(){return E.length>0?E[0].getServerAnonymization():void 0}function S(){var e=o;return o.includes("://")||(e="".concat(i,"://").concat(o)),c&&(e="".concat(e,":").concat(c)),e+(P?y:"/i")}function _(e,o){j(!1),r=new AbortController,t=setTimeout((function(){var e="Request timed out";console.error(e),t=void 0,j(!1,e)}),null!=d?d:5e3);var a,i=n({headers:(a=new Headers,P&&a.append("Content-Type","application/json; charset=UTF-8"),l&&Object.keys(l).forEach((function(e){a.append(e,l[e])})),x()&&a.append("SP-Anonymous","*"),a),signal:r.signal,keepalive:p,credentials:A},o);return new Request(e,i)}function I(){var e=function(e){for(var n=(new Date).getTime().toString(),t=0;t<e.length;t++)e[t].stm=n;return e}(E.map((function(e){return e.getPOSTRequestBody()})));return _(S(),{method:"POST",body:Z(e)})}function j(e,n){if(void 0!==t&&(clearTimeout(t),t=void 0),void 0!==r){var o=r;r=void 0,e||o.abort(n)}}return{addEvent:function(e){return!(E.length>0&&x()!==e.getServerAnonymization())&&(E.push(e),!0)},getEvents:function(){return E},toRequest:function(){if(0!==E.length)return P?I():function(){if(1!==E.length)throw new Error("Only one event can be sent in a GET request");return _(E[0].getGETRequestURL(S(),g),{method:"GET"})}()},countBytes:C,countEvents:function(){return E.length},isFull:function(){return P?C()>=w:E.length>=1},closeRequest:j}}function X(e){for(var n=0,t=0;t<e.length;t++){var r=e.charCodeAt(t);r<=127?n+=1:r<=2047?n+=2:r>=55296&&r<=57343?(n+=4,t++):n+=r<65535?3:4}return n}function Y(e){var n=null,t=null,r=null,o=null;function a(){return e.payload}function i(e){return null===n&&(n=function(e){var n={co:!0,cx:!0},t=[];for(var r in e)e.hasOwnProperty(r)&&!n[r]&&t.push(r+"="+encodeURIComponent(e[r]));for(var o in n)e.hasOwnProperty(o)&&n[o]&&t.push(o+"="+encodeURIComponent(e[o]));return"?"+t.join("&")}(e)),n}function c(){var e;return null===t&&(e=a(),t=Object.keys(e).map((function(n){return[n,e[n]]})).reduce((function(e,n){var t=n[0],r=n[1];return e[t]=r.toString(),e}),{})),t}return{getPayload:a,getServerAnonymization:function(){var n;return null!==(n=e.svrAnon)&&void 0!==n&&n},getGETRequestURL:function(e,n){var t=i(a());return n?e+t.replace("?","?stm="+(new Date).getTime()+"&"):e+t},getGETRequestBytesCount:function(){if(null===r){var e=i(a());r=X(e)}return r},getPOSTRequestBody:c,getPOSTRequestBytesCount:function(){return null===o&&(o=X(JSON.stringify(c()))),o}}}e.LOG=v,e.buildAdClick=function(e){return F({event:{schema:"iglu:com.snowplowanalytics.snowplow/ad_click/jsonschema/1-0-0",data:M({targetUrl:e.targetUrl,clickId:e.clickId,costModel:e.costModel,cost:e.cost,bannerId:e.bannerId,zoneId:e.zoneId,impressionId:e.impressionId,advertiserId:e.advertiserId,campaignId:e.campaignId})}})},e.buildAdConversion=function(e){return F({event:{schema:"iglu:com.snowplowanalytics.snowplow/ad_conversion/jsonschema/1-0-0",data:M({conversionId:e.conversionId,costModel:e.costModel,cost:e.cost,category:e.category,action:e.action,property:e.property,initialValue:e.initialValue,advertiserId:e.advertiserId,campaignId:e.campaignId})}})},e.buildAdImpression=function(e){return F({event:{schema:"iglu:com.snowplowanalytics.snowplow/ad_impression/jsonschema/1-0-0",data:M({impressionId:e.impressionId,costModel:e.costModel,cost:e.cost,targetUrl:e.targetUrl,bannerId:e.bannerId,zoneId:e.zoneId,advertiserId:e.advertiserId,campaignId:e.campaignId})}})},e.buildAddToCart=function(e){return F({event:{schema:"iglu:com.snowplowanalytics.snowplow/add_to_cart/jsonschema/1-0-0",data:M({sku:e.sku,quantity:e.quantity,name:e.name,category:e.category,unitPrice:e.unitPrice,currency:e.currency})}})},e.buildConsentGranted=function(e){var n=e.expiry,t={schema:"iglu:com.snowplowanalytics.snowplow/consent_document/jsonschema/1-0-0",data:M({id:e.id,version:e.version,name:e.name,description:e.description})};return{event:F({event:{schema:"iglu:com.snowplowanalytics.snowplow/consent_granted/jsonschema/1-0-0",data:M({expiry:n})}}),context:[t]}},e.buildConsentWithdrawn=function(e){var n=e.all,t={schema:"iglu:com.snowplowanalytics.snowplow/consent_document/jsonschema/1-0-0",data:M({id:e.id,version:e.version,name:e.name,description:e.description})};return{event:F({event:{schema:"iglu:com.snowplowanalytics.snowplow/consent_withdrawn/jsonschema/1-0-0",data:M({all:n})}}),context:[t]}},e.buildEcommerceTransaction=function(e){var n=e.orderId,t=e.total,r=e.affiliation,o=e.tax,a=e.shipping,i=e.city,c=e.state,s=e.country,l=e.currency,d=u();return d.add("e","tr"),d.add("tr_id",n),d.add("tr_af",r),d.add("tr_tt",t),d.add("tr_tx",o),d.add("tr_sh",a),d.add("tr_ci",i),d.add("tr_st",c),d.add("tr_co",s),d.add("tr_cu",l),d},e.buildEcommerceTransactionItem=function(e){var n=e.orderId,t=e.sku,r=e.price,o=e.name,a=e.category,i=e.quantity,c=e.currency,s=u();return s.add("e","ti"),s.add("ti_id",n),s.add("ti_sk",t),s.add("ti_nm",o),s.add("ti_ca",a),s.add("ti_pr",r),s.add("ti_qu",i),s.add("ti_cu",c),s},e.buildFormFocusOrChange=function(e){var n="",t=e.schema,r=e.formId,o=e.elementId,a=e.nodeName,i=e.elementClasses,c=e.value,u=e.type,s={formId:r,elementId:o,nodeName:a,elementClasses:i,value:c};return"change_form"===t?(n="iglu:com.snowplowanalytics.snowplow/change_form/jsonschema/1-0-0",s.type=u):"focus_form"===t&&(n="iglu:com.snowplowanalytics.snowplow/focus_form/jsonschema/1-0-0",s.elementType=u),F({event:{schema:n,data:M(s,{value:!0})}})},e.buildFormSubmission=function(e){return F({event:{schema:"iglu:com.snowplowanalytics.snowplow/submit_form/jsonschema/1-0-0",data:M({formId:e.formId,formClasses:e.formClasses,elements:e.elements})}})},e.buildLinkClick=function(e){return F({event:{schema:"iglu:com.snowplowanalytics.snowplow/link_click/jsonschema/1-0-1",data:M({targetUrl:e.targetUrl,elementId:e.elementId,elementClasses:e.elementClasses,elementTarget:e.elementTarget,elementContent:e.elementContent})}})},e.buildPagePing=function(e){var n=e.pageUrl,t=e.pageTitle,r=e.referrer,o=e.minXOffset,a=e.maxXOffset,i=e.minYOffset,c=e.maxYOffset,s=u();return s.add("e","pp"),s.add("url",n),s.add("page",t),s.add("refr",r),o&&!isNaN(Number(o))&&s.add("pp_mix",o.toString()),a&&!isNaN(Number(a))&&s.add("pp_max",a.toString()),i&&!isNaN(Number(i))&&s.add("pp_miy",i.toString()),c&&!isNaN(Number(c))&&s.add("pp_may",c.toString()),s},e.buildPageView=function(e){var n=e.pageUrl,t=e.pageTitle,r=e.referrer,o=u();return o.add("e","pv"),o.add("url",n),o.add("page",t),o.add("refr",r),o},e.buildRemoveFromCart=function(e){return F({event:{schema:"iglu:com.snowplowanalytics.snowplow/remove_from_cart/jsonschema/1-0-0",data:M({sku:e.sku,quantity:e.quantity,name:e.name,category:e.category,unitPrice:e.unitPrice,currency:e.currency})}})},e.buildScreenView=function(e){return F({event:{schema:"iglu:com.snowplowanalytics.snowplow/screen_view/jsonschema/1-0-0",data:M({name:e.name,id:e.id})}})},e.buildSelfDescribingEvent=F,e.buildSiteSearch=function(e){return F({event:{schema:"iglu:com.snowplowanalytics.snowplow/site_search/jsonschema/1-0-0",data:M({terms:e.terms,filters:e.filters,totalResults:e.totalResults,pageResults:e.pageResults})}})},e.buildSocialInteraction=function(e){return F({event:{schema:"iglu:com.snowplowanalytics.snowplow/social_interaction/jsonschema/1-0-0",data:M({action:e.action,network:e.network,target:e.target})}})},e.buildStructEvent=function(e){var n=e.category,t=e.action,r=e.label,o=e.property,a=e.value,i=u();return i.add("e","se"),i.add("se_ca",n),i.add("se_ac",t),i.add("se_la",r),i.add("se_pr",o),i.add("se_va",null==a?void 0:a.toString()),i},e.getRuleParts=b,e.getSchemaParts=g,e.globalContexts=y,e.isConditionalContextProvider=O,e.isContextCallbackFunction=S,e.isContextPrimitive=_,e.isFilterProvider=I,e.isJson=d,e.isNonEmptyJson=l,e.isRuleSet=x,e.isRuleSetProvider=j,e.isSelfDescribingJson=C,e.isStringArray=E,e.isValidRule=A,e.isValidRuleSetArg=P,e.matchSchemaAgainstRule=k,e.matchSchemaAgainstRuleSet=T,e.newEmitter=function(e){var n=e.endpoint,o=e.eventMethod,a=void 0===o?"post":o,i=e.postPath,c=e.protocol,u=e.port,s=e.maxPostBytes,l=void 0===s?4e4:s,d=e.maxGetBytes,f=e.bufferSize,p=void 0===f?1:f,y=e.customHeaders,m=e.serverAnonymization,g=e.connectionTimeout,h=e.keepalive,w=e.cookieExtensionService,b=e.idService,A=e.dontRetryStatusCodes,E=void 0===A?[]:A,P=e.retryStatusCodes,C=void 0===P?[]:P,x=e.retryFailedRequests,S=void 0===x||x,_=e.onRequestFailure,I=e.onRequestSuccess,j=e.customFetch,O=void 0===j?fetch:j,T=e.useStm,k=e.eventStore,R=void 0===k?H({}):k,L=e.credentials;w=w||b;var G=!1,U=!1,q="post"===a.toLowerCase();function V(e,n){void 0!==_&&setTimeout((function(){try{null==_||_(e,n)}catch(e){v.error("Error in onRequestFailure",e)}}),0)}function B(e){return t(this,void 0,void 0,(function(){var n,t,o,a,i,c;return r(this,(function(r){switch(r.label){case 0:if(void 0===(n=e.toRequest()))throw new Error("Empty batch");t=e.getEvents().map((function(e){return e.getPayload()})),r.label=1;case 1:return r.trys.push([1,4,,5]),[4,O(n)];case 2:return[4,(o=r.sent()).text()];case 3:return r.sent(),e.closeRequest(!0),o.ok?(function(e,n){void 0!==I&&setTimeout((function(){try{null==I||I(e,n)}catch(e){v.error("Error in onRequestSuccess",e)}}),0)}(t,o),[2,{success:!0,retry:!1,status:o.status}]):(u=o.status,a=!(u>=200&&u<300||!S||!C.includes(u)&&E.includes(u)),V({events:t,status:o.status,message:o.statusText,willRetry:a},o),[2,{success:!1,retry:a,status:o.status}]);case 4:return i=r.sent(),e.closeRequest(!1),c="string"==typeof i?i:i?i.message:"Unknown error",V({events:t,message:c,willRetry:!0}),[2,{success:!1,retry:!0}];case 5:return[2]}var u}))}))}function z(){return $({endpoint:n,protocol:c,port:u,eventMethod:a,customHeaders:y,connectionTimeout:g,keepalive:h,maxPostBytes:l,useStm:T,credentials:L,postPath:i})}function D(){return t(this,void 0,void 0,(function(){var e;return r(this,(function(n){switch(n.label){case 0:return!w||G?[3,2]:(G=!0,e=new Request(w,{method:"GET"}),[4,O(e)]);case 1:n.sent(),n.label=2;case 2:return[2]}}))}))}function J(){return t(this,void 0,void 0,(function(){var e;return r(this,(function(n){switch(n.label){case 0:if(U)return[3,5];U=!0,n.label=1;case 1:return n.trys.push([1,3,4,5]),[4,F()];case 2:return n.sent(),[3,5];case 3:return e=n.sent(),v.error("Error sending events",e),[3,5];case 4:return U=!1,[7];case 5:return[2]}}))}))}function F(){return t(this,void 0,void 0,(function(){var e,n,t,o,a,i,c,u,s;return r(this,(function(r){switch(r.label){case 0:return[4,D()];case 1:r.sent(),e=z(),n=R.iterator(),r.label=2;case 2:return e.isFull()?[3,4]:[4,n.next()];case 3:return t=r.sent(),o=t.value,t.done||void 0===o?[3,4]:(a=Y(o),e.addEvent(a)?[3,2]:[3,4]);case 4:return 0===e.countEvents()?[2]:[4,B(e)];case 5:return i=r.sent(),c=i.success,u=i.retry,s=i.status,!c&&u?[3,7]:(c||v.error("Status ".concat(s,", will not retry.")),[4,R.removeHead(e.countEvents())]);case 6:r.sent(),r.label=7;case 7:return c?[4,F()]:[3,9];case 8:r.sent(),r.label=9;case 9:return[2]}}))}))}return E=E.concat([400,401,403,410,422]),{flush:J,input:function(e){return t(this,void 0,void 0,(function(){var n,t,o;return r(this,(function(r){switch(r.label){case 0:return n=N({payload:e,svrAnon:m}),t=Y(n),a=t,u=function(e,n){return v.warn("Event ("+e+"B) too big, max is "+n)},(q?((c=(i=a.getPOSTRequestBytesCount()+88)>l)&&u(i,l),c):void 0!==d&&((c=(i=a.getGETRequestBytesCount())>d)&&u(i,d),c))?((o=z()).addEvent(t),[4,B(o)]):[3,2];case 1:return r.sent(),[3,5];case 2:return[4,R.add(n)];case 3:return r.sent()>=p?[4,J()]:[3,5];case 4:r.sent(),r.label=5;case 5:return[2]}var a,i,c,u}))}))},setCollectorUrl:function(e){n=e},setAnonymousTracking:function(e){m=e},setBufferSize:function(e){p=e}}},e.newEventStorePayload=N,e.newInMemoryEventStore=H,e.payloadBuilder=u,e.payloadJsonProcessor=s,e.pluginContexts=m,e.removeEmptyProperties=M,e.resolveDynamicContext=function(e){for(var n,t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return null!==(n=null==e?void 0:e.map((function(e){if("function"!=typeof e)return e;try{return e.apply(void 0,t)}catch(e){return}})).filter(Boolean))&&void 0!==n?n:[]},e.trackerCore=function(e){void 0===e&&(e={});var t=!0,r=e.base64,o=e.corePlugins,a=e.callback,i=null!=o?o:[],c=function(e,n,r){var o=m(n),a=y(),i=e,c={};function u(e,n){c[e]=n}var l={track:function(e,u,l){if(t){e.withJsonProcessor(s(i)),e.add("eid",J()),e.addDict(c);var d=function(e){return null==e?{type:"dtm",value:(new Date).getTime()}:"number"==typeof e?{type:"dtm",value:e}:"ttm"===e.type?{type:"ttm",value:e.value}:{type:"dtm",value:e.value||(new Date).getTime()}}(l);e.add(d.type,d.value.toString());var f=function(e,n){var t=a.getApplicableContexts(e),r=[];return n&&n.length&&r.push.apply(r,n),t&&t.length&&r.push.apply(r,t),r}(e,o.addPluginContexts(u)),p=function(e){if(e&&e.length)return{schema:"iglu:com.snowplowanalytics.snowplow/contexts/jsonschema/1-0-0",data:e}}(f);if(void 0!==p&&e.addJson("cx","co",p),n.forEach((function(n){try{n.beforeTrack&&n.beforeTrack(e)}catch(e){v.error("Plugin beforeTrack",e)}})),!n.find((function(n){try{return n.filter&&!1===n.filter(e.build())}catch(e){return v.error("Plugin filter",e),!1}}))){"function"==typeof r&&r(e);var y=e.build();return n.forEach((function(e){try{e.afterTrack&&e.afterTrack(y)}catch(e){v.error("Plugin afterTrack",e)}})),y}}else v.error("Track called on deactivated tracker")},addPayloadPair:u,getBase64Encoding:function(){return i},setBase64Encoding:function(e){i=e},addPayloadDict:function(e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(c[n]=e[n])},resetPayloadPairs:function(e){c=d(e)?e:{}},setTrackerVersion:function(e){u("tv",e)},setTrackerNamespace:function(e){u("tna",e)},setAppId:function(e){u("aid",e)},setPlatform:function(e){u("p",e)},setUserId:function(e){u("uid",e)},setScreenResolution:function(e,n){u("res",e+"x"+n)},setViewport:function(e,n){u("vp",e+"x"+n)},setColorDepth:function(e){u("cd",e)},setTimezone:function(e){u("tz",e)},setLang:function(e){u("lang",e)},setIpAddress:function(e){u("ip",e)},setUseragent:function(e){u("ua",e)},addGlobalContexts:function(e){a.addGlobalContexts(e)},clearGlobalContexts:function(){a.clearGlobalContexts()},removeGlobalContexts:function(e){a.removeGlobalContexts(e)}};return l}(null==r||r,i,a),u=n(n({},c),{addPlugin:function(e){var n,t,r=e.plugin;i.push(r),null===(n=r.logger)||void 0===n||n.call(r,v),null===(t=r.activateCorePlugin)||void 0===t||t.call(r,u)},deactivate:function(){i.forEach((function(e){var n;null===(n=e.deactivatePlugin)||void 0===n||n.call(e,u)})),i.length=0,t=!1}});return null==i||i.forEach((function(e){var n,t;null===(n=e.logger)||void 0===n||n.call(e,v),null===(t=e.activateCorePlugin)||void 0===t||t.call(e,u)})),u},e.validateVendor=w,e.validateVendorParts=h,e.version="4.9.0",Object.defineProperty(e,"__esModule",{value:!0})}));
//# sourceMappingURL=index.min.js.map