@grafana/faro-core 1.2.9 → 1.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundle/faro-core.iife.js +1 -1
- package/dist/bundle/types/config/types.d.ts +0 -1
- package/dist/bundle/types/semantic.d.ts +1 -0
- package/dist/bundle/types/testUtils/mockConfig.d.ts +1 -1
- package/dist/bundle/types/testUtils/mockTransport.d.ts +1 -1
- package/dist/bundle/types/version.d.ts +1 -1
- package/dist/cjs/api/meta/initialize.js +7 -2
- package/dist/cjs/api/meta/initialize.js.map +1 -1
- package/dist/cjs/config/types.js.map +1 -1
- package/dist/cjs/metas/registerInitial.js +1 -4
- package/dist/cjs/metas/registerInitial.js.map +1 -1
- package/dist/cjs/semantic.js +2 -1
- package/dist/cjs/semantic.js.map +1 -1
- package/dist/cjs/testUtils/mockConfig.js +2 -1
- package/dist/cjs/testUtils/mockConfig.js.map +1 -1
- package/dist/cjs/transports/initialize.js +8 -6
- package/dist/cjs/transports/initialize.js.map +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/version.js.map +1 -1
- package/dist/esm/api/meta/initialize.js +7 -2
- package/dist/esm/api/meta/initialize.js.map +1 -1
- package/dist/esm/config/types.js.map +1 -1
- package/dist/esm/metas/registerInitial.js +1 -4
- package/dist/esm/metas/registerInitial.js.map +1 -1
- package/dist/esm/semantic.js +1 -0
- package/dist/esm/semantic.js.map +1 -1
- package/dist/esm/testUtils/mockConfig.js +2 -1
- package/dist/esm/testUtils/mockConfig.js.map +1 -1
- package/dist/esm/transports/initialize.js +8 -6
- package/dist/esm/transports/initialize.js.map +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/esm/version.js.map +1 -1
- package/dist/spec/core/src/api/meta/initialize.js +7 -2
- package/dist/spec/core/src/api/meta/initialize.js.map +1 -1
- package/dist/spec/core/src/config/types.js.map +1 -1
- package/dist/spec/core/src/metas/registerInitial.js +1 -4
- package/dist/spec/core/src/metas/registerInitial.js.map +1 -1
- package/dist/spec/core/src/semantic.js +2 -1
- package/dist/spec/core/src/semantic.js.map +1 -1
- package/dist/spec/core/src/testUtils/mockConfig.js +2 -1
- package/dist/spec/core/src/testUtils/mockConfig.js.map +1 -1
- package/dist/spec/core/src/transports/initialize.js +8 -6
- package/dist/spec/core/src/transports/initialize.js.map +1 -1
- package/dist/spec/core/src/transports/transports.test.js +33 -0
- package/dist/spec/core/src/transports/transports.test.js.map +1 -1
- package/dist/spec/core/src/version.js +1 -1
- package/dist/spec/core/src/version.js.map +1 -1
- package/dist/types/config/types.d.ts +0 -1
- package/dist/types/core/src/config/types.d.ts +0 -1
- package/dist/types/core/src/semantic.d.ts +1 -0
- package/dist/types/core/src/testUtils/mockConfig.d.ts +1 -1
- package/dist/types/core/src/testUtils/mockTransport.d.ts +1 -1
- package/dist/types/core/src/version.d.ts +1 -1
- package/dist/types/semantic.d.ts +1 -0
- package/dist/types/testUtils/mockConfig.d.ts +1 -1
- package/dist/types/testUtils/mockTransport.d.ts +1 -1
- package/dist/types/version.d.ts +1 -1
- package/package.json +2 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
var GrafanaFaroCore=function(e){"use strict";function t(e,t){return typeof e===t}function n(e,t){return Object.prototype.toString.call(e)===`[object ${t}]`}function r(e,t){try{return e instanceof t}catch(e){return!1}}const o=e=>t(e,"undefined"),a=e=>t(e,"null"),i=e=>t(e,"string"),s=e=>t(e,"number")&&!isNaN(e)||t(e,"bigint"),l=e=>!a(e)&&t(e,"object"),u=e=>t(e,"function"),c=e=>n(e,"Array"),g=!o(Event),d="undefined"!=typeof Error,p="undefined"!=typeof Element,f="undefined"!=typeof Map;function m(e,n){if(e===n)return!0;if(t(e,"number")&&isNaN(e))return t(n,"number")&&isNaN(n);const r=c(e),o=c(n);if(r!==o)return!1;if(r&&o){const t=e.length;if(t!==n.length)return!1;for(let r=t;0!=r--;)if(!m(e[r],n[r]))return!1;return!0}const a=l(e),i=l(n);if(a!==i)return!1;if(e&&n&&a&&i){const t=Object.keys(e),r=Object.keys(n);if(t.length!==r.length)return!1;for(let e of t)if(!r.includes(e))return!1;for(let r of t)if(!m(e[r],n[r]))return!1;return!0}return!1}function h(){return(new Date).toISOString()}var v;e.LogLevel=void 0,(v=e.LogLevel||(e.LogLevel={})).TRACE="trace",v.DEBUG="debug",v.INFO="info",v.LOG="log",v.WARN="warn",v.ERROR="error";const b=e.LogLevel.LOG,E=[e.LogLevel.TRACE,e.LogLevel.DEBUG,e.LogLevel.INFO,e.LogLevel.LOG,e.LogLevel.WARN,e.LogLevel.ERROR];function y(){}const T="abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ0123456789";var I={exports:{}},L={exports:{}};L.exports=function(e,t){var n,r,o,a,i,s,l,u;for(n=3&e.length,r=e.length-n,o=t,i=3432918353,s=461845907,u=0;u<r;)l=255&e.charCodeAt(u)|(255&e.charCodeAt(++u))<<8|(255&e.charCodeAt(++u))<<16|(255&e.charCodeAt(++u))<<24,++u,o=27492+(65535&(a=5*(65535&(o=(o^=l=(65535&(l=(l=(65535&l)*i+(((l>>>16)*i&65535)<<16)&4294967295)<<15|l>>>17))*s+(((l>>>16)*s&65535)<<16)&4294967295)<<13|o>>>19))+((5*(o>>>16)&65535)<<16)&4294967295))+((58964+(a>>>16)&65535)<<16);switch(l=0,n){case 3:l^=(255&e.charCodeAt(u+2))<<16;case 2:l^=(255&e.charCodeAt(u+1))<<8;case 1:o^=l=(65535&(l=(l=(65535&(l^=255&e.charCodeAt(u)))*i+(((l>>>16)*i&65535)<<16)&4294967295)<<15|l>>>17))*s+(((l>>>16)*s&65535)<<16)&4294967295}return o^=e.length,o=2246822507*(65535&(o^=o>>>16))+((2246822507*(o>>>16)&65535)<<16)&4294967295,o=3266489909*(65535&(o^=o>>>13))+((3266489909*(o>>>16)&65535)<<16)&4294967295,(o^=o>>>16)>>>0};var O=L.exports,S={exports:{}};!function(e){e.exports=function(e,t){for(var n,r=e.length,o=t^r,a=0;r>=4;)n=1540483477*(65535&(n=255&e.charCodeAt(a)|(255&e.charCodeAt(++a))<<8|(255&e.charCodeAt(++a))<<16|(255&e.charCodeAt(++a))<<24))+((1540483477*(n>>>16)&65535)<<16),o=1540483477*(65535&o)+((1540483477*(o>>>16)&65535)<<16)^(n=1540483477*(65535&(n^=n>>>24))+((1540483477*(n>>>16)&65535)<<16)),r-=4,++a;switch(r){case 3:o^=(255&e.charCodeAt(a+2))<<16;case 2:o^=(255&e.charCodeAt(a+1))<<8;case 1:o=1540483477*(65535&(o^=255&e.charCodeAt(a)))+((1540483477*(o>>>16)&65535)<<16)}return o=1540483477*(65535&(o^=o>>>13))+((1540483477*(o>>>16)&65535)<<16),(o^=o>>>15)>>>0}}(S);var x=O,A=S.exports;I.exports=x;var N=I.exports.murmur3=x;I.exports.murmur2=A;class R{constructor(e,t){var n,r;this.signalBuffer=[],this.itemLimit=null!==(n=null==t?void 0:t.itemLimit)&&void 0!==n?n:50,this.sendTimeout=null!==(r=null==t?void 0:t.sendTimeout)&&void 0!==r?r:250,this.paused=(null==t?void 0:t.paused)||!1,this.sendFn=e,this.flushInterval=-1,this.paused||this.start(),document.addEventListener("visibilitychange",(()=>{"hidden"===document.visibilityState&&this.flush()}))}addItem(e){this.paused||(this.signalBuffer.push(e),this.signalBuffer.length>=this.itemLimit&&this.flush())}start(){this.paused=!1,this.sendTimeout>0&&(this.flushInterval=window.setInterval((()=>this.flush()),this.sendTimeout))}pause(){this.paused=!0,clearInterval(this.flushInterval)}groupItems(e){const t=new Map;return e.forEach((e=>{const n=N(JSON.stringify(e.meta));let r=t.get(n);r=void 0===r?[e]:[...r,e],t.set(n,r)})),Array.from(t.values())}flush(){if(this.paused||0===this.signalBuffer.length)return;this.groupItems(this.signalBuffer).forEach(this.sendFn),this.signalBuffer=[]}}var C;e.TransportItemType=void 0,(C=e.TransportItemType||(e.TransportItemType={})).EXCEPTION="exception",C.LOG="log",C.MEASUREMENT="measurement",C.TRACE="trace",C.EVENT="event";const j={[e.TransportItemType.EXCEPTION]:"exceptions",[e.TransportItemType.LOG]:"logs",[e.TransportItemType.MEASUREMENT]:"measurements",[e.TransportItemType.TRACE]:"traces",[e.TransportItemType.EVENT]:"events"};function k(t){return n=>{if(n.type===e.TransportItemType.EXCEPTION&&n.payload){const e=n.payload,r=`${e.type}: ${e.value}`;if(function(e,t){return e.some((e=>i(e)?t.includes(e):!!t.match(e)))}(t,r))return null}return n}}var w;e.InternalLoggerLevel=void 0,(w=e.InternalLoggerLevel||(e.InternalLoggerLevel={}))[w.OFF=0]="OFF",w[w.ERROR=1]="ERROR",w[w.WARN=2]="WARN",w[w.INFO=3]="INFO",w[w.VERBOSE=4]="VERBOSE";const P={debug:y,error:y,info:y,prefix:"Faro",warn:y},B=e.InternalLoggerLevel.ERROR,F=Object.assign({},console);let D=F;function $(e){var t;return D=null!==(t=e.unpatchedConsole)&&void 0!==t?t:D,D}function G(t=F,n=B){const r=P;return n>e.InternalLoggerLevel.OFF&&(r.error=n>=e.InternalLoggerLevel.ERROR?function(...e){t.error(`${r.prefix}\n`,...e)}:y,r.warn=n>=e.InternalLoggerLevel.WARN?function(...e){t.warn(`${r.prefix}\n`,...e)}:y,r.info=n>=e.InternalLoggerLevel.INFO?function(...e){t.info(`${r.prefix}\n`,...e)}:y,r.debug=n>=e.InternalLoggerLevel.VERBOSE?function(...e){t.debug(`${r.prefix}\n`,...e)}:y),r}let V=P;function _(e,t){return V=G(e,t.internalLoggerLevel),V}class M{constructor(){this.unpatchedConsole=F,this.internalLogger=P,this.config={},this.metas={}}logDebug(...e){this.internalLogger.debug(`${this.name}\n`,...e)}logInfo(...e){this.internalLogger.info(`${this.name}\n`,...e)}logWarn(...e){this.internalLogger.warn(`${this.name}\n`,...e)}logError(...e){this.internalLogger.error(`${this.name}\n`,...e)}}function z(e,t){var n,r;if(void 0===t)return e;if(void 0===e)return{resourceSpans:t};const o=null===(n=e.resourceSpans)||void 0===n?void 0:n[0];if(void 0===o)return e;const a=(null==o?void 0:o.scopeSpans)||[],i=(null===(r=null==t?void 0:t[0])||void 0===r?void 0:r.scopeSpans)||[];return Object.assign(Object.assign({},e),{resourceSpans:[Object.assign(Object.assign({},o),{scopeSpans:[...a,...i]})]})}const U="Error";let K;function W(t,n,r,o,i){n.debug("Initializing API");const s=function(t,n,r,o,a){let i;return n.debug("Initializing traces API"),{getOTEL:()=>i,getTraceContext:()=>{const e=null==i?void 0:i.trace.getSpanContext(i.context.active());return e?{trace_id:e.traceId,span_id:e.spanId}:void 0},initOTEL:(e,t)=>{n.debug("Initializing OpenTelemetry"),i={trace:e,context:t}},isOTELInitialized:()=>!!i,pushTraces:t=>{try{const r={type:e.TransportItemType.TRACE,payload:t,meta:o.value};n.debug("Pushing trace\n",r),a.execute(r)}catch(e){n.error("Error pushing trace\n",e)}}}}(0,n,0,o,i);return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},s),function(t,n,r,o,i,s){var l;n.debug("Initializing exceptions API");let u=null;K=null!==(l=r.parseStacktrace)&&void 0!==l?l:K;const c=e=>{n.debug("Changing stacktrace parser"),K=null!=e?e:K};return c(r.parseStacktrace),{changeStacktraceParser:c,getStacktraceParser:()=>K,pushError:(t,{skipDedupe:l,stackFrames:c,type:g,context:d}={})=>{g=g||t.name||U;const p={meta:o.value,payload:{type:g,value:t.message,timestamp:h(),trace:s.getTraceContext(),context:null!=d?d:{}},type:e.TransportItemType.EXCEPTION};(null==(c=null!=c?c:t.stack?null==K?void 0:K(t).frames:void 0)?void 0:c.length)&&(p.payload.stacktrace={frames:c});const f={type:p.payload.type,value:p.payload.value,stackTrace:p.payload.stacktrace,context:p.payload.context};l||!r.dedupe||a(u)||!m(f,u)?(u=f,n.debug("Pushing exception\n",p),i.execute(p)):n.debug("Skipping error push because it is the same as the last one\n",p.payload)}}}(0,n,r,o,i,s)),function(e,t,n,r,o){let a,i,s;t.debug("Initializing meta API");const l=e=>{i&&r.remove(i),i={user:e},r.add(i)},u=e=>{a&&r.remove(a),a={session:e},r.add(a)};return{setUser:l,resetUser:l,setSession:u,resetSession:u,getSession:()=>r.value.session,setView:e=>{s&&r.remove(s),s={view:e},r.add(s)},getView:()=>r.value.view}}(0,n,0,o)),function(t,n,r,o,i,s){n.debug("Initializing logs API");let l=null;return{pushLog:(t,{context:u,level:c,skipDedupe:g}={})=>{try{const d={type:e.TransportItemType.LOG,payload:{message:t.map((e=>{try{return String(e)}catch(e){return""}})).join(" "),level:null!=c?c:b,context:null!=u?u:{},timestamp:h(),trace:s.getTraceContext()},meta:o.value},p={message:d.payload.message,level:d.payload.level,context:d.payload.context};if(!g&&r.dedupe&&!a(l)&&m(p,l))return void n.debug("Skipping log push because it is the same as the last one\n",d.payload);l=p,n.debug("Pushing log\n",d),i.execute(d)}catch(e){n.error("Error pushing log\n",e)}}}}(0,n,r,o,i,s)),function(t,n,r,o,i,s){n.debug("Initializing measurements API");let l=null;return{pushMeasurement:(t,{skipDedupe:u,context:c}={})=>{var g;try{const d={type:e.TransportItemType.MEASUREMENT,payload:Object.assign(Object.assign({},t),{trace:s.getTraceContext(),timestamp:null!==(g=t.timestamp)&&void 0!==g?g:h(),context:null!=c?c:{}}),meta:o.value},p={type:d.payload.type,values:d.payload.values,context:d.payload.context};if(!u&&r.dedupe&&!a(l)&&m(p,l))return void n.debug("Skipping measurement push because it is the same as the last one\n",d.payload);l=p,n.debug("Pushing measurement\n",d),i.execute(d)}catch(e){n.error("Error pushing measurement\n",e)}}}}(0,n,r,o,i,s)),function(t,n,r,o,i,s){let l=null;return{pushEvent:(t,u,c,{skipDedupe:g}={})=>{try{const d={meta:o.value,payload:{name:t,domain:null!=c?c:r.eventDomain,attributes:u,timestamp:h(),trace:s.getTraceContext()},type:e.TransportItemType.EVENT},p={name:d.payload.name,attributes:d.payload.attributes,domain:d.payload.domain};if(!g&&r.dedupe&&!a(l)&&m(p,l))return void n.debug("Skipping event push because it is the same as the last one\n",d.payload);l=p,n.debug("Pushing event\n",d),i.execute(d)}catch(e){n.error("Error pushing event",e)}}}}(0,n,r,o,i,s))}const H="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof self?self:void 0;const X="1.2.9";const q="_faroInternal";function J(e){e.config.isolate?e.internalLogger.debug("Skipping registering internal Faro instance on global object"):(e.internalLogger.debug("Registering internal Faro instance on global object"),Object.defineProperty(H,q,{configurable:!1,enumerable:!1,writable:!1,value:e}))}function Q(){return q in H}function Y(t,n,r,o,a,i,s){return n.debug("Initializing Faro"),e.faro={api:i,config:r,instrumentations:s,internalLogger:n,metas:o,pause:a.pause,transports:a,unpatchedConsole:t,unpause:a.unpause},J(e.faro),function(e){if(e.config.preventGlobalExposure)e.internalLogger.debug("Skipping registering public Faro instance in the global scope");else{if(e.internalLogger.debug(`Registering public faro reference in the global scope using "${e.config.globalObjectKey}" key`),e.config.globalObjectKey in H)return void e.internalLogger.warn(`Skipping global registration due to key "${e.config.globalObjectKey}" being used already. Please set "globalObjectKey" to something else or set "preventGlobalExposure" to "true"`);Object.defineProperty(H,e.config.globalObjectKey,{configurable:!1,writable:!1,value:e})}}(e.faro),e.faro}e.faro={};return e.BaseExtension=M,e.BaseInstrumentation=class extends M{constructor(){super(...arguments),this.api={},this.transports={}}},e.BaseTransport=class extends M{isBatched(){return!1}getIgnoreUrls(){return[]}},e.Conventions={EventNames:{CLICK:"click",NAVIGATION:"navigation",SESSION_START:"session_start",VIEW_CHANGED:"view_changed"}},e.EVENT_CLICK="click",e.EVENT_NAVIGATION="navigation",e.EVENT_SESSION_EXTEND="session_extend",e.EVENT_SESSION_RESUME="session_resume",e.EVENT_SESSION_START="session_start",e.EVENT_VIEW_CHANGED="view_changed",e.VERSION=X,e.allLogLevels=E,e.createInternalLogger=G,e.createPromiseBuffer=function(e){const{size:t,concurrency:n}=e,r=[];let o=0;const a=()=>{if(o<n&&r.length){const{producer:e,resolve:t,reject:n}=r.shift();o++,e().then((e=>{o--,a(),t(e)}),(e=>{o--,a(),n(e)}))}};return{add:e=>{if(r.length+o>=t)throw new Error("Task buffer full");return new Promise(((t,n)=>{r.push({producer:e,resolve:t,reject:n}),a()}))}}},e.dateNow=function(){return Date.now()},e.deepEqual=m,e.defaultBatchingConfig={enabled:!0,sendTimeout:250,itemLimit:50},e.defaultExceptionType=U,e.defaultGlobalObjectKey="faro",e.defaultInternalLoggerLevel=B,e.defaultLogLevel=b,e.defaultUnpatchedConsole=F,e.genShortID=function(e=10){return Array.from(Array(e)).map((()=>T[Math.floor(Math.random()*T.length)])).join("")},e.getCurrentTimestamp=h,e.getInternalFaroFromGlobalObject=function(){return H[q]},e.getTransportBody=function(t){let n={meta:{}};return void 0!==t[0]&&(n.meta=t[0].meta),t.forEach((t=>{switch(t.type){case e.TransportItemType.LOG:case e.TransportItemType.EVENT:case e.TransportItemType.EXCEPTION:case e.TransportItemType.MEASUREMENT:const r=j[t.type],o=n[r];n=Object.assign(Object.assign({},n),{[r]:void 0===o?[t.payload]:[...o,t.payload]});break;case e.TransportItemType.TRACE:n=Object.assign(Object.assign({},n),{traces:z(n.traces,t.payload.resourceSpans)})}})),n},e.globalObject=H,e.initializeFaro=function(e){const t=$(e),n=_(t,e);if(Q()&&!e.isolate)return void n.error('Faro is already registered. Either add instrumentations, transports etc. to the global faro instance or use the "isolate" property');n.debug("Initializing");const r=function(e,t,n){let r=[],o=[];const a=()=>r.reduce(((e,t)=>Object.assign(e,u(t)?t():t)),{}),i=()=>{if(o.length){const e=a();o.forEach((t=>t(e)))}};return{add:(...e)=>{t.debug("Adding metas\n",e),r.push(...e),i()},remove:(...e)=>{t.debug("Removing metas\n",e),r=r.filter((t=>!e.includes(t))),i()},addListener:e=>{t.debug("Adding metas listener\n",e),o.push(e)},removeListener:e=>{t.debug("Removing metas listener\n",e),o=o.filter((t=>t!==e))},get value(){return a()}}}(0,n),o=function(e,t,n,r){var o;t.debug("Initializing transports");const a=[];let i=n.paused,s=[];const l=e=>{let t=e;for(const e of s){const n=t.map(e).filter(Boolean);if(0===n.length)return[];t=n}return t},u=e=>{const n=l(e);if(0!==n.length)for(const e of a)t.debug(`Transporting item using ${e.name}\n`,n),e.isBatched()&&e.send(n)},c=e=>{var r;const[o]=l([e]);if(void 0!==o)for(const e of a)t.debug(`Transporting item using ${e.name}\n`,o),e.isBatched()?(null===(r=n.batching)||void 0===r?void 0:r.enabled)||e.send([o]):e.send(o)};let g;return(null===(o=n.batching)||void 0===o?void 0:o.enabled)&&(g=new R(u,{sendTimeout:n.batching.sendTimeout,itemLimit:n.batching.itemLimit,paused:i})),{add:(...o)=>{t.debug("Adding transports"),o.forEach((o=>{t.debug(`Adding "${o.name}" transport`),a.some((e=>e===o))?t.warn(`Transport ${o.name} is already added`):(o.unpatchedConsole=e,o.internalLogger=t,o.config=n,o.metas=r,a.push(o))}))},addBeforeSendHooks:(...e)=>{t.debug("Adding beforeSendHooks\n",s),e.forEach((e=>{e&&s.push(e)}))},addIgnoreErrorsPatterns:(...e)=>{t.debug("Adding ignoreErrorsPatterns\n",e),e.forEach((e=>{e&&s.push(k(e))}))},getBeforeSendHooks:()=>[...s],execute:e=>{var t;i||((null===(t=n.batching)||void 0===t?void 0:t.enabled)?(null==g||g.addItem(e),c(e)):c(e))},isPaused:()=>i,pause:()=>{t.debug("Pausing transports"),null==g||g.pause(),i=!0},remove:(...e)=>{t.debug("Removing transports"),e.forEach((e=>{t.debug(`Removing "${e.name}" transport`);const n=a.indexOf(e);-1!==n?a.splice(n,1):t.warn(`Transport "${e.name}" is not added`)}))},removeBeforeSendHooks:(...e)=>{s.filter((t=>!e.includes(t)))},get transports(){return[...a]},unpause:()=>{t.debug("Unpausing transports"),null==g||g.start(),i=!1}}}(t,n,e,r),a=W(0,n,e,r,o),i=function(e,t,n,r,o,a){t.debug("Initializing instrumentations");const i=[];return{add:(...s)=>{t.debug("Adding instrumentations"),s.forEach((s=>{t.debug(`Adding "${s.name}" instrumentation`),i.some((e=>e.name===s.name))?t.warn(`Instrumentation ${s.name} is already added`):(s.unpatchedConsole=e,s.internalLogger=t,s.config=n,s.metas=r,s.transports=o,s.api=a,i.push(s),s.initialize())}))},get instrumentations(){return[...i]},remove:(...e)=>{t.debug("Removing instrumentations"),e.forEach((e=>{var n,r;t.debug(`Removing "${e.name}" instrumentation`);const o=i.reduce(((t,n,r)=>null===t&&n.name===e.name?r:null),null);o?(null===(r=(n=i[o]).destroy)||void 0===r||r.call(n),i.splice(o,1)):t.warn(`Instrumentation "${e.name}" is not added`)}))}}}(t,n,e,r,o,a),s=Y(t,n,e,r,o,a,i);return function(e){var t,n;const r={sdk:{version:X}};let o=e.config.session;(null===(t=e.config.sessionTracking)||void 0===t?void 0:t.enabled)&&(o=e.config.sessionTracking.session),o&&e.api.setSession(o),e.config.app&&(r.app=e.config.app),e.config.user&&(r.user=e.config.user),e.config.view&&(r.view=e.config.view),e.metas.add(r,...null!==(n=e.config.metas)&&void 0!==n?n:[])}(s),function(e){e.transports.add(...e.config.transports),e.transports.addBeforeSendHooks(e.config.beforeSend),e.transports.addIgnoreErrorsPatterns(e.config.ignoreErrors)}(s),function(e){e.instrumentations.add(...e.config.instrumentations)}(s),s},e.internalGlobalObjectKey=q,e.isArray=c,e.isBoolean=e=>t(e,"boolean"),e.isDomError=e=>n(e,"DOMError"),e.isDomException=e=>n(e,"DOMException"),e.isElement=e=>p&&r(e,Element),e.isElementDefined=p,e.isError=e=>d&&r(e,Error),e.isErrorDefined=d,e.isErrorEvent=e=>n(e,"ErrorEvent"),e.isEvent=e=>g&&r(e,Event),e.isEventDefined=g,e.isFunction=u,e.isInstanceOf=r,e.isInt=e=>s(e)&&Number.isInteger(e),e.isInternalFaroOnGlobalObject=Q,e.isMap=e=>f&&r(e,Map),e.isMapDefined=f,e.isNull=a,e.isNumber=s,e.isObject=l,e.isPrimitive=e=>!l(e)&&!u(e),e.isRegExp=e=>n(e,"RegExp"),e.isString=i,e.isSymbol=e=>t(e,"symbol"),e.isSyntheticEvent=e=>l(e)&&"nativeEvent"in e&&"preventDefault"in e&&"stopPropagation"in e,e.isThenable=e=>u(null==e?void 0:e.then),e.isToString=n,e.isTypeof=t,e.isUndefined=o,e.noop=y,e.setInternalFaroOnGlobalObject=J,e.transportItemTypeToBodyKey=j,e}({});
|
|
1
|
+
var GrafanaFaroCore=function(e){"use strict";function t(e,t){return typeof e===t}function n(e,t){return Object.prototype.toString.call(e)===`[object ${t}]`}function r(e,t){try{return e instanceof t}catch(e){return!1}}const o=e=>t(e,"undefined"),a=e=>t(e,"null"),i=e=>t(e,"string"),s=e=>t(e,"number")&&!isNaN(e)||t(e,"bigint"),l=e=>!a(e)&&t(e,"object"),u=e=>t(e,"function"),c=e=>n(e,"Array"),d=!o(Event),g="undefined"!=typeof Error,p="undefined"!=typeof Element,f="undefined"!=typeof Map;function m(e,n){if(e===n)return!0;if(t(e,"number")&&isNaN(e))return t(n,"number")&&isNaN(n);const r=c(e),o=c(n);if(r!==o)return!1;if(r&&o){const t=e.length;if(t!==n.length)return!1;for(let r=t;0!=r--;)if(!m(e[r],n[r]))return!1;return!0}const a=l(e),i=l(n);if(a!==i)return!1;if(e&&n&&a&&i){const t=Object.keys(e),r=Object.keys(n);if(t.length!==r.length)return!1;for(let e of t)if(!r.includes(e))return!1;for(let r of t)if(!m(e[r],n[r]))return!1;return!0}return!1}function v(){return(new Date).toISOString()}var h;e.LogLevel=void 0,(h=e.LogLevel||(e.LogLevel={})).TRACE="trace",h.DEBUG="debug",h.INFO="info",h.LOG="log",h.WARN="warn",h.ERROR="error";const b=e.LogLevel.LOG,E=[e.LogLevel.TRACE,e.LogLevel.DEBUG,e.LogLevel.INFO,e.LogLevel.LOG,e.LogLevel.WARN,e.LogLevel.ERROR];function y(){}const T="abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ0123456789";var I={exports:{}},O={exports:{}};O.exports=function(e,t){var n,r,o,a,i,s,l,u;for(n=3&e.length,r=e.length-n,o=t,i=3432918353,s=461845907,u=0;u<r;)l=255&e.charCodeAt(u)|(255&e.charCodeAt(++u))<<8|(255&e.charCodeAt(++u))<<16|(255&e.charCodeAt(++u))<<24,++u,o=27492+(65535&(a=5*(65535&(o=(o^=l=(65535&(l=(l=(65535&l)*i+(((l>>>16)*i&65535)<<16)&4294967295)<<15|l>>>17))*s+(((l>>>16)*s&65535)<<16)&4294967295)<<13|o>>>19))+((5*(o>>>16)&65535)<<16)&4294967295))+((58964+(a>>>16)&65535)<<16);switch(l=0,n){case 3:l^=(255&e.charCodeAt(u+2))<<16;case 2:l^=(255&e.charCodeAt(u+1))<<8;case 1:o^=l=(65535&(l=(l=(65535&(l^=255&e.charCodeAt(u)))*i+(((l>>>16)*i&65535)<<16)&4294967295)<<15|l>>>17))*s+(((l>>>16)*s&65535)<<16)&4294967295}return o^=e.length,o=2246822507*(65535&(o^=o>>>16))+((2246822507*(o>>>16)&65535)<<16)&4294967295,o=3266489909*(65535&(o^=o>>>13))+((3266489909*(o>>>16)&65535)<<16)&4294967295,(o^=o>>>16)>>>0};var L=O.exports,S={exports:{}};!function(e){e.exports=function(e,t){for(var n,r=e.length,o=t^r,a=0;r>=4;)n=1540483477*(65535&(n=255&e.charCodeAt(a)|(255&e.charCodeAt(++a))<<8|(255&e.charCodeAt(++a))<<16|(255&e.charCodeAt(++a))<<24))+((1540483477*(n>>>16)&65535)<<16),o=1540483477*(65535&o)+((1540483477*(o>>>16)&65535)<<16)^(n=1540483477*(65535&(n^=n>>>24))+((1540483477*(n>>>16)&65535)<<16)),r-=4,++a;switch(r){case 3:o^=(255&e.charCodeAt(a+2))<<16;case 2:o^=(255&e.charCodeAt(a+1))<<8;case 1:o=1540483477*(65535&(o^=255&e.charCodeAt(a)))+((1540483477*(o>>>16)&65535)<<16)}return o=1540483477*(65535&(o^=o>>>13))+((1540483477*(o>>>16)&65535)<<16),(o^=o>>>15)>>>0}}(S);var x=L,A=S.exports;I.exports=x;var N=I.exports.murmur3=x;I.exports.murmur2=A;class R{constructor(e,t){var n,r;this.signalBuffer=[],this.itemLimit=null!==(n=null==t?void 0:t.itemLimit)&&void 0!==n?n:50,this.sendTimeout=null!==(r=null==t?void 0:t.sendTimeout)&&void 0!==r?r:250,this.paused=(null==t?void 0:t.paused)||!1,this.sendFn=e,this.flushInterval=-1,this.paused||this.start(),document.addEventListener("visibilitychange",(()=>{"hidden"===document.visibilityState&&this.flush()}))}addItem(e){this.paused||(this.signalBuffer.push(e),this.signalBuffer.length>=this.itemLimit&&this.flush())}start(){this.paused=!1,this.sendTimeout>0&&(this.flushInterval=window.setInterval((()=>this.flush()),this.sendTimeout))}pause(){this.paused=!0,clearInterval(this.flushInterval)}groupItems(e){const t=new Map;return e.forEach((e=>{const n=N(JSON.stringify(e.meta));let r=t.get(n);r=void 0===r?[e]:[...r,e],t.set(n,r)})),Array.from(t.values())}flush(){if(this.paused||0===this.signalBuffer.length)return;this.groupItems(this.signalBuffer).forEach(this.sendFn),this.signalBuffer=[]}}var C;e.TransportItemType=void 0,(C=e.TransportItemType||(e.TransportItemType={})).EXCEPTION="exception",C.LOG="log",C.MEASUREMENT="measurement",C.TRACE="trace",C.EVENT="event";const j={[e.TransportItemType.EXCEPTION]:"exceptions",[e.TransportItemType.LOG]:"logs",[e.TransportItemType.MEASUREMENT]:"measurements",[e.TransportItemType.TRACE]:"traces",[e.TransportItemType.EVENT]:"events"};function k(t){return n=>{if(n.type===e.TransportItemType.EXCEPTION&&n.payload){const e=n.payload,r=`${e.type}: ${e.value}`;if(function(e,t){return e.some((e=>i(e)?t.includes(e):!!t.match(e)))}(t,r))return null}return n}}function w(e,t,n,r){var o;t.debug("Initializing transports");const a=[];let i=n.paused,s=[];const l=e=>{let t=e;for(const e of s){const n=t.map(e).filter(Boolean);if(0===n.length)return[];t=n}return t},u=e=>{const n=l(e);if(0!==n.length)for(const e of a)t.debug(`Transporting item using ${e.name}\n`,n),e.isBatched()&&e.send(n)};let c;(null===(o=n.batching)||void 0===o?void 0:o.enabled)&&(c=new R(u,{sendTimeout:n.batching.sendTimeout,itemLimit:n.batching.itemLimit,paused:i}));return{add:(...o)=>{t.debug("Adding transports"),o.forEach((o=>{t.debug(`Adding "${o.name}" transport`);a.some((e=>e===o))?t.warn(`Transport ${o.name} is already added`):(o.unpatchedConsole=e,o.internalLogger=t,o.config=n,o.metas=r,a.push(o))}))},addBeforeSendHooks:(...e)=>{t.debug("Adding beforeSendHooks\n",s),e.forEach((e=>{e&&s.push(e)}))},addIgnoreErrorsPatterns:(...e)=>{t.debug("Adding ignoreErrorsPatterns\n",e),e.forEach((e=>{e&&s.push(k(e))}))},getBeforeSendHooks:()=>[...s],execute:e=>{var r;i||((null===(r=n.batching)||void 0===r?void 0:r.enabled)&&(null==c||c.addItem(e)),(e=>{var r,o;if((null===(r=n.batching)||void 0===r?void 0:r.enabled)&&a.every((e=>e.isBatched())))return;const[i]=l([e]);if(void 0!==i)for(const e of a)t.debug(`Transporting item using ${e.name}\n`,i),e.isBatched()?(null===(o=n.batching)||void 0===o?void 0:o.enabled)||e.send([i]):e.send(i)})(e))},isPaused:()=>i,pause:()=>{t.debug("Pausing transports"),null==c||c.pause(),i=!0},remove:(...e)=>{t.debug("Removing transports"),e.forEach((e=>{t.debug(`Removing "${e.name}" transport`);const n=a.indexOf(e);-1!==n?a.splice(n,1):t.warn(`Transport "${e.name}" is not added`)}))},removeBeforeSendHooks:(...e)=>{s.filter((t=>!e.includes(t)))},get transports(){return[...a]},unpause:()=>{t.debug("Unpausing transports"),null==c||c.start(),i=!1}}}var P;e.InternalLoggerLevel=void 0,(P=e.InternalLoggerLevel||(e.InternalLoggerLevel={}))[P.OFF=0]="OFF",P[P.ERROR=1]="ERROR",P[P.WARN=2]="WARN",P[P.INFO=3]="INFO",P[P.VERBOSE=4]="VERBOSE";const B={debug:y,error:y,info:y,prefix:"Faro",warn:y},F=e.InternalLoggerLevel.ERROR,D=Object.assign({},console);let _=D;function G(e){var t;return _=null!==(t=e.unpatchedConsole)&&void 0!==t?t:_,_}function $(t=D,n=F){const r=B;return n>e.InternalLoggerLevel.OFF&&(r.error=n>=e.InternalLoggerLevel.ERROR?function(...e){t.error(`${r.prefix}\n`,...e)}:y,r.warn=n>=e.InternalLoggerLevel.WARN?function(...e){t.warn(`${r.prefix}\n`,...e)}:y,r.info=n>=e.InternalLoggerLevel.INFO?function(...e){t.info(`${r.prefix}\n`,...e)}:y,r.debug=n>=e.InternalLoggerLevel.VERBOSE?function(...e){t.debug(`${r.prefix}\n`,...e)}:y),r}let V=B;function M(e,t){return V=$(e,t.internalLoggerLevel),V}class z{constructor(){this.unpatchedConsole=D,this.internalLogger=B,this.config={},this.metas={}}logDebug(...e){this.internalLogger.debug(`${this.name}\n`,...e)}logInfo(...e){this.internalLogger.info(`${this.name}\n`,...e)}logWarn(...e){this.internalLogger.warn(`${this.name}\n`,...e)}logError(...e){this.internalLogger.error(`${this.name}\n`,...e)}}function U(e,t){var n,r;if(void 0===t)return e;if(void 0===e)return{resourceSpans:t};const o=null===(n=e.resourceSpans)||void 0===n?void 0:n[0];if(void 0===o)return e;const a=(null==o?void 0:o.scopeSpans)||[],i=(null===(r=null==t?void 0:t[0])||void 0===r?void 0:r.scopeSpans)||[];return Object.assign(Object.assign({},e),{resourceSpans:[Object.assign(Object.assign({},o),{scopeSpans:[...a,...i]})]})}const K="Error";let H;function W(t,n,r,o,i){n.debug("Initializing API");const s=function(t,n,r,o,a){let i;return n.debug("Initializing traces API"),{getOTEL:()=>i,getTraceContext:()=>{const e=null==i?void 0:i.trace.getSpanContext(i.context.active());return e?{trace_id:e.traceId,span_id:e.spanId}:void 0},initOTEL:(e,t)=>{n.debug("Initializing OpenTelemetry"),i={trace:e,context:t}},isOTELInitialized:()=>!!i,pushTraces:t=>{try{const r={type:e.TransportItemType.TRACE,payload:t,meta:o.value};n.debug("Pushing trace\n",r),a.execute(r)}catch(e){n.error("Error pushing trace\n",e)}}}}(0,n,0,o,i);return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},s),function(t,n,r,o,i,s){var l;n.debug("Initializing exceptions API");let u=null;H=null!==(l=r.parseStacktrace)&&void 0!==l?l:H;const c=e=>{n.debug("Changing stacktrace parser"),H=null!=e?e:H};return c(r.parseStacktrace),{changeStacktraceParser:c,getStacktraceParser:()=>H,pushError:(t,{skipDedupe:l,stackFrames:c,type:d,context:g}={})=>{d=d||t.name||K;const p={meta:o.value,payload:{type:d,value:t.message,timestamp:v(),trace:s.getTraceContext(),context:null!=g?g:{}},type:e.TransportItemType.EXCEPTION};(null==(c=null!=c?c:t.stack?null==H?void 0:H(t).frames:void 0)?void 0:c.length)&&(p.payload.stacktrace={frames:c});const f={type:p.payload.type,value:p.payload.value,stackTrace:p.payload.stacktrace,context:p.payload.context};l||!r.dedupe||a(u)||!m(f,u)?(u=f,n.debug("Pushing exception\n",p),i.execute(p)):n.debug("Skipping error push because it is the same as the last one\n",p.payload)}}}(0,n,r,o,i,s)),function(e,t,n,r,o){let a,i,s;t.debug("Initializing meta API");const l=e=>{i&&r.remove(i),i={user:e},r.add(i)},u=e=>{a&&r.remove(a),a={session:e},r.add(a)};return{setUser:l,resetUser:l,setSession:u,resetSession:u,getSession:()=>r.value.session,setView:e=>{var t;if((null===(t=null==s?void 0:s.view)||void 0===t?void 0:t.name)===(null==e?void 0:e.name))return;const n=s;s={view:e},r.add(s),n&&r.remove(n)},getView:()=>r.value.view}}(0,n,0,o)),function(t,n,r,o,i,s){n.debug("Initializing logs API");let l=null;return{pushLog:(t,{context:u,level:c,skipDedupe:d}={})=>{try{const g={type:e.TransportItemType.LOG,payload:{message:t.map((e=>{try{return String(e)}catch(e){return""}})).join(" "),level:null!=c?c:b,context:null!=u?u:{},timestamp:v(),trace:s.getTraceContext()},meta:o.value},p={message:g.payload.message,level:g.payload.level,context:g.payload.context};if(!d&&r.dedupe&&!a(l)&&m(p,l))return void n.debug("Skipping log push because it is the same as the last one\n",g.payload);l=p,n.debug("Pushing log\n",g),i.execute(g)}catch(e){n.error("Error pushing log\n",e)}}}}(0,n,r,o,i,s)),function(t,n,r,o,i,s){n.debug("Initializing measurements API");let l=null;return{pushMeasurement:(t,{skipDedupe:u,context:c}={})=>{var d;try{const g={type:e.TransportItemType.MEASUREMENT,payload:Object.assign(Object.assign({},t),{trace:s.getTraceContext(),timestamp:null!==(d=t.timestamp)&&void 0!==d?d:v(),context:null!=c?c:{}}),meta:o.value},p={type:g.payload.type,values:g.payload.values,context:g.payload.context};if(!u&&r.dedupe&&!a(l)&&m(p,l))return void n.debug("Skipping measurement push because it is the same as the last one\n",g.payload);l=p,n.debug("Pushing measurement\n",g),i.execute(g)}catch(e){n.error("Error pushing measurement\n",e)}}}}(0,n,r,o,i,s)),function(t,n,r,o,i,s){let l=null;return{pushEvent:(t,u,c,{skipDedupe:d}={})=>{try{const g={meta:o.value,payload:{name:t,domain:null!=c?c:r.eventDomain,attributes:u,timestamp:v(),trace:s.getTraceContext()},type:e.TransportItemType.EVENT},p={name:g.payload.name,attributes:g.payload.attributes,domain:g.payload.domain};if(!d&&r.dedupe&&!a(l)&&m(p,l))return void n.debug("Skipping event push because it is the same as the last one\n",g.payload);l=p,n.debug("Pushing event\n",g),i.execute(g)}catch(e){n.error("Error pushing event",e)}}}}(0,n,r,o,i,s))}const X="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof self?self:void 0;const q="1.3.1";const J="_faroInternal";function Q(e){e.config.isolate?e.internalLogger.debug("Skipping registering internal Faro instance on global object"):(e.internalLogger.debug("Registering internal Faro instance on global object"),Object.defineProperty(X,J,{configurable:!1,enumerable:!1,writable:!1,value:e}))}function Y(){return J in X}function Z(t,n,r,o,a,i,s){return n.debug("Initializing Faro"),e.faro={api:i,config:r,instrumentations:s,internalLogger:n,metas:o,pause:a.pause,transports:a,unpatchedConsole:t,unpause:a.unpause},Q(e.faro),function(e){if(e.config.preventGlobalExposure)e.internalLogger.debug("Skipping registering public Faro instance in the global scope");else{if(e.internalLogger.debug(`Registering public faro reference in the global scope using "${e.config.globalObjectKey}" key`),e.config.globalObjectKey in X)return void e.internalLogger.warn(`Skipping global registration due to key "${e.config.globalObjectKey}" being used already. Please set "globalObjectKey" to something else or set "preventGlobalExposure" to "true"`);Object.defineProperty(X,e.config.globalObjectKey,{configurable:!1,writable:!1,value:e})}}(e.faro),e.faro}e.faro={};return e.BaseExtension=z,e.BaseInstrumentation=class extends z{constructor(){super(...arguments),this.api={},this.transports={}}},e.BaseTransport=class extends z{isBatched(){return!1}getIgnoreUrls(){return[]}},e.Conventions={EventNames:{CLICK:"click",NAVIGATION:"navigation",SESSION_START:"session_start",VIEW_CHANGED:"view_changed"}},e.EVENT_CLICK="click",e.EVENT_NAVIGATION="navigation",e.EVENT_ROUTE_CHANGE="route_change",e.EVENT_SESSION_EXTEND="session_extend",e.EVENT_SESSION_RESUME="session_resume",e.EVENT_SESSION_START="session_start",e.EVENT_VIEW_CHANGED="view_changed",e.VERSION=q,e.allLogLevels=E,e.createInternalLogger=$,e.createPromiseBuffer=function(e){const{size:t,concurrency:n}=e,r=[];let o=0;const a=()=>{if(o<n&&r.length){const{producer:e,resolve:t,reject:n}=r.shift();o++,e().then((e=>{o--,a(),t(e)}),(e=>{o--,a(),n(e)}))}};return{add:e=>{if(r.length+o>=t)throw new Error("Task buffer full");return new Promise(((t,n)=>{r.push({producer:e,resolve:t,reject:n}),a()}))}}},e.dateNow=function(){return Date.now()},e.deepEqual=m,e.defaultBatchingConfig={enabled:!0,sendTimeout:250,itemLimit:50},e.defaultExceptionType=K,e.defaultGlobalObjectKey="faro",e.defaultInternalLoggerLevel=F,e.defaultLogLevel=b,e.defaultUnpatchedConsole=D,e.genShortID=function(e=10){return Array.from(Array(e)).map((()=>T[Math.floor(Math.random()*T.length)])).join("")},e.getCurrentTimestamp=v,e.getInternalFaroFromGlobalObject=function(){return X[J]},e.getTransportBody=function(t){let n={meta:{}};return void 0!==t[0]&&(n.meta=t[0].meta),t.forEach((t=>{switch(t.type){case e.TransportItemType.LOG:case e.TransportItemType.EVENT:case e.TransportItemType.EXCEPTION:case e.TransportItemType.MEASUREMENT:const r=j[t.type],o=n[r];n=Object.assign(Object.assign({},n),{[r]:void 0===o?[t.payload]:[...o,t.payload]});break;case e.TransportItemType.TRACE:n=Object.assign(Object.assign({},n),{traces:U(n.traces,t.payload.resourceSpans)})}})),n},e.globalObject=X,e.initializeFaro=function(e){const t=G(e),n=M(t,e);if(Y()&&!e.isolate)return void n.error('Faro is already registered. Either add instrumentations, transports etc. to the global faro instance or use the "isolate" property');n.debug("Initializing");const r=function(e,t,n){let r=[],o=[];const a=()=>r.reduce(((e,t)=>Object.assign(e,u(t)?t():t)),{}),i=()=>{if(o.length){const e=a();o.forEach((t=>t(e)))}};return{add:(...e)=>{t.debug("Adding metas\n",e),r.push(...e),i()},remove:(...e)=>{t.debug("Removing metas\n",e),r=r.filter((t=>!e.includes(t))),i()},addListener:e=>{t.debug("Adding metas listener\n",e),o.push(e)},removeListener:e=>{t.debug("Removing metas listener\n",e),o=o.filter((t=>t!==e))},get value(){return a()}}}(0,n),o=w(t,n,e,r),a=W(0,n,e,r,o),i=function(e,t,n,r,o,a){t.debug("Initializing instrumentations");const i=[];return{add:(...s)=>{t.debug("Adding instrumentations"),s.forEach((s=>{t.debug(`Adding "${s.name}" instrumentation`),i.some((e=>e.name===s.name))?t.warn(`Instrumentation ${s.name} is already added`):(s.unpatchedConsole=e,s.internalLogger=t,s.config=n,s.metas=r,s.transports=o,s.api=a,i.push(s),s.initialize())}))},get instrumentations(){return[...i]},remove:(...e)=>{t.debug("Removing instrumentations"),e.forEach((e=>{var n,r;t.debug(`Removing "${e.name}" instrumentation`);const o=i.reduce(((t,n,r)=>null===t&&n.name===e.name?r:null),null);o?(null===(r=(n=i[o]).destroy)||void 0===r||r.call(n),i.splice(o,1)):t.warn(`Instrumentation "${e.name}" is not added`)}))}}}(t,n,e,r,o,a),s=Z(t,n,e,r,o,a,i);return function(e){var t,n;const r={sdk:{version:q}},o=null===(t=e.config.sessionTracking)||void 0===t?void 0:t.session;o&&e.api.setSession(o),e.config.app&&(r.app=e.config.app),e.config.user&&(r.user=e.config.user),e.config.view&&(r.view=e.config.view),e.metas.add(r,...null!==(n=e.config.metas)&&void 0!==n?n:[])}(s),function(e){e.transports.add(...e.config.transports),e.transports.addBeforeSendHooks(e.config.beforeSend),e.transports.addIgnoreErrorsPatterns(e.config.ignoreErrors)}(s),function(e){e.instrumentations.add(...e.config.instrumentations)}(s),s},e.internalGlobalObjectKey=J,e.isArray=c,e.isBoolean=e=>t(e,"boolean"),e.isDomError=e=>n(e,"DOMError"),e.isDomException=e=>n(e,"DOMException"),e.isElement=e=>p&&r(e,Element),e.isElementDefined=p,e.isError=e=>g&&r(e,Error),e.isErrorDefined=g,e.isErrorEvent=e=>n(e,"ErrorEvent"),e.isEvent=e=>d&&r(e,Event),e.isEventDefined=d,e.isFunction=u,e.isInstanceOf=r,e.isInt=e=>s(e)&&Number.isInteger(e),e.isInternalFaroOnGlobalObject=Y,e.isMap=e=>f&&r(e,Map),e.isMapDefined=f,e.isNull=a,e.isNumber=s,e.isObject=l,e.isPrimitive=e=>!l(e)&&!u(e),e.isRegExp=e=>n(e,"RegExp"),e.isString=i,e.isSymbol=e=>t(e,"symbol"),e.isSyntheticEvent=e=>l(e)&&"nativeEvent"in e&&"preventDefault"in e&&"stopPropagation"in e,e.isThenable=e=>u(null==e?void 0:e.then),e.isToString=n,e.isTypeof=t,e.isUndefined=o,e.noop=y,e.setInternalFaroOnGlobalObject=Q,e.transportItemTypeToBodyKey=j,e}({});
|
|
@@ -18,3 +18,4 @@ export declare const EVENT_VIEW_CHANGED = "view_changed";
|
|
|
18
18
|
export declare const EVENT_SESSION_START = "session_start";
|
|
19
19
|
export declare const EVENT_SESSION_RESUME = "session_resume";
|
|
20
20
|
export declare const EVENT_SESSION_EXTEND = "session_extend";
|
|
21
|
+
export declare const EVENT_ROUTE_CHANGE = "route_change";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type Config } from '../config';
|
|
2
2
|
export declare function mockConfig(overrides?: Partial<Config>): Config;
|
|
@@ -4,7 +4,7 @@ import type { Transport, TransportItem } from '../transports';
|
|
|
4
4
|
export declare class MockTransport extends BaseTransport implements Transport {
|
|
5
5
|
private ignoreURLs;
|
|
6
6
|
readonly name = "@grafana/transport-mock";
|
|
7
|
-
readonly version = "1.
|
|
7
|
+
readonly version = "1.3.1";
|
|
8
8
|
items: TransportItem[];
|
|
9
9
|
constructor(ignoreURLs?: Patterns);
|
|
10
10
|
send(items: TransportItem[]): void | Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const VERSION = "1.
|
|
1
|
+
export declare const VERSION = "1.3.1";
|
|
@@ -26,13 +26,18 @@ function initializeMetaAPI(_unpatchedConsole, internalLogger, _config, metas, _t
|
|
|
26
26
|
};
|
|
27
27
|
var getSession = function () { return metas.value.session; };
|
|
28
28
|
var setView = function (view) {
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
var _a;
|
|
30
|
+
if (((_a = metaView === null || metaView === void 0 ? void 0 : metaView.view) === null || _a === void 0 ? void 0 : _a.name) === (view === null || view === void 0 ? void 0 : view.name)) {
|
|
31
|
+
return;
|
|
31
32
|
}
|
|
33
|
+
var previousView = metaView;
|
|
32
34
|
metaView = {
|
|
33
35
|
view: view,
|
|
34
36
|
};
|
|
35
37
|
metas.add(metaView);
|
|
38
|
+
if (previousView) {
|
|
39
|
+
metas.remove(previousView);
|
|
40
|
+
}
|
|
36
41
|
};
|
|
37
42
|
var getView = function () { return metas.value.view; };
|
|
38
43
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initialize.js","sourceRoot":"","sources":["../../../../src/api/meta/initialize.ts"],"names":[],"mappings":";;;AAQA,SAAgB,iBAAiB,CAC/B,iBAAmC,EACnC,cAA8B,EAC9B,OAAe,EACf,KAAY,EACZ,WAAuB;IAEvB,cAAc,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAE9C,IAAI,WAAW,GAA8B,SAAS,CAAC;IACvD,IAAI,QAAQ,GAA8B,SAAS,CAAC;IACpD,IAAI,QAAQ,GAA8B,SAAS,CAAC;IAEpD,IAAM,OAAO,GAAuB,UAAC,IAAI;QACvC,IAAI,QAAQ,EAAE;YACZ,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;SACxB;QAED,QAAQ,GAAG;YACT,IAAI,MAAA;SACL,CAAC;QAEF,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACtB,CAAC,CAAC;IAEF,IAAM,UAAU,GAA0B,UAAC,OAAO;QAChD,IAAI,WAAW,EAAE;YACf,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;SAC3B;QAED,WAAW,GAAG;YACZ,OAAO,SAAA;SACR,CAAC;QAEF,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACzB,CAAC,CAAC;IAEF,IAAM,UAAU,GAA0B,cAAM,OAAA,KAAK,CAAC,KAAK,CAAC,OAAO,EAAnB,CAAmB,CAAC;IAEpE,IAAM,OAAO,GAAuB,UAAC,IAAI
|
|
1
|
+
{"version":3,"file":"initialize.js","sourceRoot":"","sources":["../../../../src/api/meta/initialize.ts"],"names":[],"mappings":";;;AAQA,SAAgB,iBAAiB,CAC/B,iBAAmC,EACnC,cAA8B,EAC9B,OAAe,EACf,KAAY,EACZ,WAAuB;IAEvB,cAAc,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAE9C,IAAI,WAAW,GAA8B,SAAS,CAAC;IACvD,IAAI,QAAQ,GAA8B,SAAS,CAAC;IACpD,IAAI,QAAQ,GAA8B,SAAS,CAAC;IAEpD,IAAM,OAAO,GAAuB,UAAC,IAAI;QACvC,IAAI,QAAQ,EAAE;YACZ,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;SACxB;QAED,QAAQ,GAAG;YACT,IAAI,MAAA;SACL,CAAC;QAEF,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACtB,CAAC,CAAC;IAEF,IAAM,UAAU,GAA0B,UAAC,OAAO;QAChD,IAAI,WAAW,EAAE;YACf,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;SAC3B;QAED,WAAW,GAAG;YACZ,OAAO,SAAA;SACR,CAAC;QAEF,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACzB,CAAC,CAAC;IAEF,IAAM,UAAU,GAA0B,cAAM,OAAA,KAAK,CAAC,KAAK,CAAC,OAAO,EAAnB,CAAmB,CAAC;IAEpE,IAAM,OAAO,GAAuB,UAAC,IAAI;;QACvC,IAAI,CAAA,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,0CAAE,IAAI,OAAK,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,CAAA,EAAE;YACvC,OAAO;SACR;QAED,IAAM,YAAY,GAAG,QAAQ,CAAC;QAE9B,QAAQ,GAAG;YACT,IAAI,MAAA;SACL,CAAC;QAEF,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAEpB,IAAI,YAAY,EAAE;YAChB,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;SAC5B;IACH,CAAC,CAAC;IAEF,IAAM,OAAO,GAAuB,cAAM,OAAA,KAAK,CAAC,KAAK,CAAC,IAAI,EAAhB,CAAgB,CAAC;IAE3D,OAAO;QACL,OAAO,SAAA;QACP,SAAS,EAAE,OAA+B;QAC1C,UAAU,YAAA;QACV,YAAY,EAAE,UAAqC;QACnD,UAAU,YAAA;QACV,OAAO,SAAA;QACP,OAAO,SAAA;KACR,CAAC;AACJ,CAAC;AApED,8CAoEC","sourcesContent":["import type { Config } from '../../config';\nimport type { InternalLogger } from '../../internalLogger';\nimport type { Meta, Metas } from '../../metas';\nimport type { Transports } from '../../transports';\nimport type { UnpatchedConsole } from '../../unpatchedConsole';\n\nimport type { MetaAPI } from './types';\n\nexport function initializeMetaAPI(\n _unpatchedConsole: UnpatchedConsole,\n internalLogger: InternalLogger,\n _config: Config,\n metas: Metas,\n _transports: Transports\n): MetaAPI {\n internalLogger.debug('Initializing meta API');\n\n let metaSession: Partial<Meta> | undefined = undefined;\n let metaUser: Partial<Meta> | undefined = undefined;\n let metaView: Partial<Meta> | undefined = undefined;\n\n const setUser: MetaAPI['setUser'] = (user) => {\n if (metaUser) {\n metas.remove(metaUser);\n }\n\n metaUser = {\n user,\n };\n\n metas.add(metaUser);\n };\n\n const setSession: MetaAPI['setSession'] = (session) => {\n if (metaSession) {\n metas.remove(metaSession);\n }\n\n metaSession = {\n session,\n };\n\n metas.add(metaSession);\n };\n\n const getSession: MetaAPI['getSession'] = () => metas.value.session;\n\n const setView: MetaAPI['setView'] = (view) => {\n if (metaView?.view?.name === view?.name) {\n return;\n }\n\n const previousView = metaView;\n\n metaView = {\n view,\n };\n\n metas.add(metaView);\n\n if (previousView) {\n metas.remove(previousView);\n }\n };\n\n const getView: MetaAPI['getView'] = () => metas.value.view;\n\n return {\n setUser,\n resetUser: setUser as MetaAPI['resetUser'],\n setSession,\n resetSession: setSession as MetaAPI['resetSession'],\n getSession,\n setView,\n getView,\n };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/config/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { APIEvent, StacktraceParser } from '../api';\nimport type { Instrumentation } from '../instrumentations';\nimport type { InternalLoggerLevel } from '../internalLogger';\nimport type { Meta, MetaApp, MetaItem, MetaSession, MetaUser, MetaView } from '../metas';\nimport type { BatchExecutorOptions, BeforeSendHook, Transport } from '../transports';\nimport type { UnpatchedConsole } from '../unpatchedConsole';\n\ntype SamplingContext = {\n metas: Meta;\n};\n\nexport interface Config<P = APIEvent> {\n app: MetaApp;\n batching?: BatchExecutorOptions;\n dedupe: boolean;\n globalObjectKey: string;\n instrumentations: Instrumentation[];\n internalLoggerLevel: InternalLoggerLevel;\n isolate: boolean;\n metas: MetaItem[];\n parseStacktrace: StacktraceParser;\n paused: boolean;\n preventGlobalExposure: boolean;\n transports: Transport[];\n unpatchedConsole: UnpatchedConsole;\n\n beforeSend?: BeforeSendHook<P>;\n ignoreErrors?: Patterns;\n
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/config/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { APIEvent, StacktraceParser } from '../api';\nimport type { Instrumentation } from '../instrumentations';\nimport type { InternalLoggerLevel } from '../internalLogger';\nimport type { Meta, MetaApp, MetaItem, MetaSession, MetaUser, MetaView } from '../metas';\nimport type { BatchExecutorOptions, BeforeSendHook, Transport } from '../transports';\nimport type { UnpatchedConsole } from '../unpatchedConsole';\n\ntype SamplingContext = {\n metas: Meta;\n};\n\nexport interface Config<P = APIEvent> {\n app: MetaApp;\n batching?: BatchExecutorOptions;\n dedupe: boolean;\n globalObjectKey: string;\n instrumentations: Instrumentation[];\n internalLoggerLevel: InternalLoggerLevel;\n isolate: boolean;\n metas: MetaItem[];\n parseStacktrace: StacktraceParser;\n paused: boolean;\n preventGlobalExposure: boolean;\n transports: Transport[];\n unpatchedConsole: UnpatchedConsole;\n\n beforeSend?: BeforeSendHook<P>;\n ignoreErrors?: Patterns;\n sessionTracking?: {\n enabled?: boolean;\n persistent?: boolean;\n session?: MetaSession;\n maxSessionPersistenceTime?: number;\n onSessionChange?: (oldSession: MetaSession | null, newSession: MetaSession) => void;\n samplingRate?: number;\n sampler?: (context: SamplingContext) => number;\n };\n\n user?: MetaUser;\n view?: MetaView;\n eventDomain?: string;\n}\n\nexport type Patterns = Array<string | RegExp>;\n"]}
|
|
@@ -19,10 +19,7 @@ function registerInitialMetas(faro) {
|
|
|
19
19
|
version: version_1.VERSION,
|
|
20
20
|
},
|
|
21
21
|
};
|
|
22
|
-
var session = faro.config.session;
|
|
23
|
-
if ((_b = faro.config.sessionTracking) === null || _b === void 0 ? void 0 : _b.enabled) {
|
|
24
|
-
session = faro.config.sessionTracking.session;
|
|
25
|
-
}
|
|
22
|
+
var session = (_b = faro.config.sessionTracking) === null || _b === void 0 ? void 0 : _b.session;
|
|
26
23
|
if (session) {
|
|
27
24
|
faro.api.setSession(session);
|
|
28
25
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registerInitial.js","sourceRoot":"","sources":["../../../src/metas/registerInitial.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,sCAAqC;AAIrC,SAAgB,oBAAoB,CAAC,IAAU;;;IAC7C,IAAM,OAAO,GAAS;QACpB,GAAG,EAAE;YACH,OAAO,EAAE,iBAAO;SACjB;KACF,CAAC;IAEF,
|
|
1
|
+
{"version":3,"file":"registerInitial.js","sourceRoot":"","sources":["../../../src/metas/registerInitial.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,sCAAqC;AAIrC,SAAgB,oBAAoB,CAAC,IAAU;;;IAC7C,IAAM,OAAO,GAAS;QACpB,GAAG,EAAE;YACH,OAAO,EAAE,iBAAO;SACjB;KACF,CAAC;IAEF,IAAM,OAAO,GAAG,MAAA,IAAI,CAAC,MAAM,CAAC,eAAe,0CAAE,OAAO,CAAC;IACrD,IAAI,OAAO,EAAE;QACX,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;KAC9B;IAED,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;QACnB,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;KAC/B;IAED,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;QACpB,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;KACjC;IAED,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;QACpB,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;KACjC;IAED,CAAA,KAAA,IAAI,CAAC,KAAK,CAAA,CAAC,GAAG,0BAAC,OAAO,GAAK,CAAC,MAAA,IAAI,CAAC,MAAM,CAAC,KAAK,mCAAI,EAAE,CAAC,UAAE;AACxD,CAAC;AAzBD,oDAyBC","sourcesContent":["import type { Faro } from '../sdk';\nimport { VERSION } from '../version';\n\nimport type { Meta } from './types';\n\nexport function registerInitialMetas(faro: Faro): void {\n const initial: Meta = {\n sdk: {\n version: VERSION,\n },\n };\n\n const session = faro.config.sessionTracking?.session;\n if (session) {\n faro.api.setSession(session);\n }\n\n if (faro.config.app) {\n initial.app = faro.config.app;\n }\n\n if (faro.config.user) {\n initial.user = faro.config.user;\n }\n\n if (faro.config.view) {\n initial.view = faro.config.view;\n }\n\n faro.metas.add(initial, ...(faro.config.metas ?? []));\n}\n"]}
|
package/dist/cjs/semantic.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.EVENT_SESSION_EXTEND = exports.EVENT_SESSION_RESUME = exports.EVENT_SESSION_START = exports.EVENT_VIEW_CHANGED = exports.EVENT_NAVIGATION = exports.EVENT_CLICK = exports.Conventions = void 0;
|
|
3
|
+
exports.EVENT_ROUTE_CHANGE = exports.EVENT_SESSION_EXTEND = exports.EVENT_SESSION_RESUME = exports.EVENT_SESSION_START = exports.EVENT_VIEW_CHANGED = exports.EVENT_NAVIGATION = exports.EVENT_CLICK = exports.Conventions = void 0;
|
|
4
4
|
/**
|
|
5
5
|
* @deprecated The conventions object will be removed in a future version
|
|
6
6
|
*/
|
|
@@ -21,4 +21,5 @@ exports.EVENT_VIEW_CHANGED = 'view_changed';
|
|
|
21
21
|
exports.EVENT_SESSION_START = 'session_start';
|
|
22
22
|
exports.EVENT_SESSION_RESUME = 'session_resume';
|
|
23
23
|
exports.EVENT_SESSION_EXTEND = 'session_extend';
|
|
24
|
+
exports.EVENT_ROUTE_CHANGE = 'route_change';
|
|
24
25
|
//# sourceMappingURL=semantic.js.map
|
package/dist/cjs/semantic.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"semantic.js","sourceRoot":"","sources":["../../src/semantic.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACU,QAAA,WAAW,GAAG;IACzB;;OAEG;IACH,UAAU,EAAE;QACV,KAAK,EAAE,OAAO;QACd,UAAU,EAAE,YAAY;QACxB,aAAa,EAAE,eAAe;QAC9B,YAAY,EAAE,cAAc;KAC7B;CACO,CAAC;AAEE,QAAA,WAAW,GAAG,OAAO,CAAC;AACtB,QAAA,gBAAgB,GAAG,YAAY,CAAC;AAChC,QAAA,kBAAkB,GAAG,cAAc,CAAC;AACpC,QAAA,mBAAmB,GAAG,eAAe,CAAC;AACtC,QAAA,oBAAoB,GAAG,gBAAgB,CAAC;AACxC,QAAA,oBAAoB,GAAG,gBAAgB,CAAC","sourcesContent":["/**\n * @deprecated The conventions object will be removed in a future version\n */\nexport const Conventions = {\n /**\n * @deprecated The event names object will be removed in a future version\n */\n EventNames: {\n CLICK: 'click',\n NAVIGATION: 'navigation',\n SESSION_START: 'session_start',\n VIEW_CHANGED: 'view_changed',\n },\n} as const;\n\nexport const EVENT_CLICK = 'click';\nexport const EVENT_NAVIGATION = 'navigation';\nexport const EVENT_VIEW_CHANGED = 'view_changed';\nexport const EVENT_SESSION_START = 'session_start';\nexport const EVENT_SESSION_RESUME = 'session_resume';\nexport const EVENT_SESSION_EXTEND = 'session_extend';\n"]}
|
|
1
|
+
{"version":3,"file":"semantic.js","sourceRoot":"","sources":["../../src/semantic.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACU,QAAA,WAAW,GAAG;IACzB;;OAEG;IACH,UAAU,EAAE;QACV,KAAK,EAAE,OAAO;QACd,UAAU,EAAE,YAAY;QACxB,aAAa,EAAE,eAAe;QAC9B,YAAY,EAAE,cAAc;KAC7B;CACO,CAAC;AAEE,QAAA,WAAW,GAAG,OAAO,CAAC;AACtB,QAAA,gBAAgB,GAAG,YAAY,CAAC;AAChC,QAAA,kBAAkB,GAAG,cAAc,CAAC;AACpC,QAAA,mBAAmB,GAAG,eAAe,CAAC;AACtC,QAAA,oBAAoB,GAAG,gBAAgB,CAAC;AACxC,QAAA,oBAAoB,GAAG,gBAAgB,CAAC;AACxC,QAAA,kBAAkB,GAAG,cAAc,CAAC","sourcesContent":["/**\n * @deprecated The conventions object will be removed in a future version\n */\nexport const Conventions = {\n /**\n * @deprecated The event names object will be removed in a future version\n */\n EventNames: {\n CLICK: 'click',\n NAVIGATION: 'navigation',\n SESSION_START: 'session_start',\n VIEW_CHANGED: 'view_changed',\n },\n} as const;\n\nexport const EVENT_CLICK = 'click';\nexport const EVENT_NAVIGATION = 'navigation';\nexport const EVENT_VIEW_CHANGED = 'view_changed';\nexport const EVENT_SESSION_START = 'session_start';\nexport const EVENT_SESSION_RESUME = 'session_resume';\nexport const EVENT_SESSION_EXTEND = 'session_extend';\nexport const EVENT_ROUTE_CHANGE = 'route_change';\n"]}
|
|
@@ -12,6 +12,7 @@ var __assign = (this && this.__assign) || function () {
|
|
|
12
12
|
};
|
|
13
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
14
|
exports.mockConfig = void 0;
|
|
15
|
+
var config_1 = require("../config");
|
|
15
16
|
var internalLogger_1 = require("../internalLogger");
|
|
16
17
|
var mockStacktraceParser_1 = require("./mockStacktraceParser");
|
|
17
18
|
function mockConfig(overrides) {
|
|
@@ -21,7 +22,7 @@ function mockConfig(overrides) {
|
|
|
21
22
|
version: '1.0.0',
|
|
22
23
|
}, batching: {
|
|
23
24
|
enabled: false,
|
|
24
|
-
}, dedupe: true, globalObjectKey: 'faro', internalLoggerLevel: internalLogger_1.defaultInternalLoggerLevel, instrumentations: [], isolate: true, metas: [], parseStacktrace: mockStacktraceParser_1.mockStacktraceParser, paused: false, preventGlobalExposure: true, transports: [], unpatchedConsole: console }, overrides);
|
|
25
|
+
}, dedupe: true, globalObjectKey: 'faro', internalLoggerLevel: internalLogger_1.defaultInternalLoggerLevel, instrumentations: [], isolate: true, metas: [], parseStacktrace: mockStacktraceParser_1.mockStacktraceParser, paused: false, preventGlobalExposure: true, transports: [], unpatchedConsole: console, sessionTracking: __assign({}, config_1.defaultBatchingConfig) }, overrides);
|
|
25
26
|
}
|
|
26
27
|
exports.mockConfig = mockConfig;
|
|
27
28
|
//# sourceMappingURL=mockConfig.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mockConfig.js","sourceRoot":"","sources":["../../../src/testUtils/mockConfig.ts"],"names":[],"mappings":";;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"mockConfig.js","sourceRoot":"","sources":["../../../src/testUtils/mockConfig.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,oCAA+D;AAC/D,oDAA+D;AAE/D,+DAA8D;AAE9D,SAAgB,UAAU,CAAC,SAA+B;IAA/B,0BAAA,EAAA,cAA+B;IACxD,kBACE,GAAG,EAAE;YACH,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,OAAO;SACjB,EACD,QAAQ,EAAE;YACR,OAAO,EAAE,KAAK;SACf,EACD,MAAM,EAAE,IAAI,EACZ,eAAe,EAAE,MAAM,EACvB,mBAAmB,EAAE,2CAA0B,EAC/C,gBAAgB,EAAE,EAAE,EACpB,OAAO,EAAE,IAAI,EACb,KAAK,EAAE,EAAE,EACT,eAAe,EAAE,2CAAoB,EACrC,MAAM,EAAE,KAAK,EACb,qBAAqB,EAAE,IAAI,EAC3B,UAAU,EAAE,EAAE,EACd,gBAAgB,EAAE,OAAO,EACzB,eAAe,eACV,8BAAqB,KAEvB,SAAS,EACZ;AACJ,CAAC;AAzBD,gCAyBC","sourcesContent":["import { type Config, defaultBatchingConfig } from '../config';\nimport { defaultInternalLoggerLevel } from '../internalLogger';\n\nimport { mockStacktraceParser } from './mockStacktraceParser';\n\nexport function mockConfig(overrides: Partial<Config> = {}): Config {\n return {\n app: {\n name: 'test',\n version: '1.0.0',\n },\n batching: {\n enabled: false,\n },\n dedupe: true,\n globalObjectKey: 'faro',\n internalLoggerLevel: defaultInternalLoggerLevel,\n instrumentations: [],\n isolate: true,\n metas: [],\n parseStacktrace: mockStacktraceParser,\n paused: false,\n preventGlobalExposure: true,\n transports: [],\n unpatchedConsole: console,\n sessionTracking: {\n ...defaultBatchingConfig,\n },\n ...overrides,\n };\n}\n"]}
|
|
@@ -108,7 +108,11 @@ function initializeTransports(unpatchedConsole, internalLogger, config, metas) {
|
|
|
108
108
|
}
|
|
109
109
|
};
|
|
110
110
|
var instantSend = function (item) {
|
|
111
|
-
var _a;
|
|
111
|
+
var _a, _b;
|
|
112
|
+
// prevent all beforeSend hooks being executed twice if batching is enabled.
|
|
113
|
+
if (((_a = config.batching) === null || _a === void 0 ? void 0 : _a.enabled) && transports.every(function (transport) { return transport.isBatched(); })) {
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
112
116
|
var filteredItem = applyBeforeSendHooks([item])[0];
|
|
113
117
|
if (filteredItem === undefined) {
|
|
114
118
|
return;
|
|
@@ -119,7 +123,7 @@ function initializeTransports(unpatchedConsole, internalLogger, config, metas) {
|
|
|
119
123
|
if (!transport.isBatched()) {
|
|
120
124
|
transport.send(filteredItem);
|
|
121
125
|
}
|
|
122
|
-
else if (!((
|
|
126
|
+
else if (!((_b = config.batching) === null || _b === void 0 ? void 0 : _b.enabled)) {
|
|
123
127
|
transport.send([filteredItem]);
|
|
124
128
|
}
|
|
125
129
|
}
|
|
@@ -144,11 +148,9 @@ function initializeTransports(unpatchedConsole, internalLogger, config, metas) {
|
|
|
144
148
|
if (paused) {
|
|
145
149
|
return;
|
|
146
150
|
}
|
|
147
|
-
if (
|
|
148
|
-
|
|
149
|
-
return;
|
|
151
|
+
if ((_a = config.batching) === null || _a === void 0 ? void 0 : _a.enabled) {
|
|
152
|
+
batchExecutor === null || batchExecutor === void 0 ? void 0 : batchExecutor.addItem(item);
|
|
150
153
|
}
|
|
151
|
-
batchExecutor === null || batchExecutor === void 0 ? void 0 : batchExecutor.addItem(item);
|
|
152
154
|
instantSend(item);
|
|
153
155
|
};
|
|
154
156
|
var getBeforeSendHooks = function () { return __spreadArray([], beforeSendHooks, true); };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initialize.js","sourceRoot":"","sources":["../../../src/transports/initialize.ts"],"names":[],"mappings":"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","sourcesContent":["import type { TransportItem } from '..';\nimport type { ExceptionEvent } from '../api';\nimport type { Config, Patterns } from '../config';\nimport type { InternalLogger } from '../internalLogger';\nimport type { Metas } from '../metas';\nimport type { UnpatchedConsole } from '../unpatchedConsole';\nimport { isString } from '../utils';\n\nimport { BatchExecutor } from './batchExecutor';\nimport { TransportItemType } from './const';\nimport type { BeforeSendHook, Transport, Transports } from './types';\n\nexport function shouldIgnoreEvent(patterns: Patterns, msg: string): boolean {\n return patterns.some((pattern) => {\n return isString(pattern) ? msg.includes(pattern) : !!msg.match(pattern);\n });\n}\n\nexport function createBeforeSendHookFromIgnorePatterns(patterns: Patterns): BeforeSendHook {\n return (item: TransportItem) => {\n if (item.type === TransportItemType.EXCEPTION && item.payload) {\n const evt = item.payload as ExceptionEvent;\n const msg = `${evt.type}: ${evt.value}`;\n\n if (shouldIgnoreEvent(patterns, msg)) {\n return null;\n }\n }\n\n return item;\n };\n}\n\nexport function initializeTransports(\n unpatchedConsole: UnpatchedConsole,\n internalLogger: InternalLogger,\n config: Config,\n metas: Metas\n): Transports {\n internalLogger.debug('Initializing transports');\n\n const transports: Transport[] = [];\n\n let paused = config.paused;\n\n let beforeSendHooks: BeforeSendHook[] = [];\n\n const add: Transports['add'] = (...newTransports) => {\n internalLogger.debug('Adding transports');\n\n newTransports.forEach((newTransport) => {\n internalLogger.debug(`Adding \"${newTransport.name}\" transport`);\n\n const exists = transports.some((existingTransport) => existingTransport === newTransport);\n\n if (exists) {\n internalLogger.warn(`Transport ${newTransport.name} is already added`);\n\n return;\n }\n\n newTransport.unpatchedConsole = unpatchedConsole;\n newTransport.internalLogger = internalLogger;\n newTransport.config = config;\n newTransport.metas = metas;\n\n transports.push(newTransport);\n });\n };\n\n const addBeforeSendHooks: Transports['addBeforeSendHooks'] = (...newBeforeSendHooks) => {\n internalLogger.debug('Adding beforeSendHooks\\n', beforeSendHooks);\n\n newBeforeSendHooks.forEach((beforeSendHook) => {\n if (beforeSendHook) {\n beforeSendHooks.push(beforeSendHook);\n }\n });\n };\n\n const addIgnoreErrorsPatterns: Transports['addIgnoreErrorsPatterns'] = (...ignoreErrorsPatterns) => {\n internalLogger.debug('Adding ignoreErrorsPatterns\\n', ignoreErrorsPatterns);\n\n ignoreErrorsPatterns.forEach((ignoreErrorsPattern) => {\n if (ignoreErrorsPattern) {\n beforeSendHooks.push(createBeforeSendHookFromIgnorePatterns(ignoreErrorsPattern));\n }\n });\n };\n\n const applyBeforeSendHooks = (items: TransportItem[]): TransportItem[] => {\n let filteredItems = items;\n for (const hook of beforeSendHooks) {\n const modified = filteredItems.map(hook).filter(Boolean) as TransportItem[];\n\n if (modified.length === 0) {\n return [];\n }\n\n filteredItems = modified;\n }\n return filteredItems;\n };\n\n const batchedSend = (items: TransportItem[]) => {\n const filteredItems = applyBeforeSendHooks(items);\n\n if (filteredItems.length === 0) {\n return;\n }\n\n for (const transport of transports) {\n internalLogger.debug(`Transporting item using ${transport.name}\\n`, filteredItems);\n if (transport.isBatched()) {\n transport.send(filteredItems);\n }\n }\n };\n\n const instantSend = (item: TransportItem) => {\n const [filteredItem] = applyBeforeSendHooks([item]);\n\n if (filteredItem === undefined) {\n return;\n }\n\n for (const transport of transports) {\n internalLogger.debug(`Transporting item using ${transport.name}\\n`, filteredItem);\n if (!transport.isBatched()) {\n transport.send(filteredItem);\n } else if (!config.batching?.enabled) {\n transport.send([filteredItem]);\n }\n }\n };\n\n let batchExecutor: BatchExecutor | undefined;\n\n if (config.batching?.enabled) {\n batchExecutor = new BatchExecutor(batchedSend, {\n sendTimeout: config.batching.sendTimeout,\n itemLimit: config.batching.itemLimit,\n paused,\n });\n }\n\n // Send a signal to the appropriate transports\n //\n // 1. If SDK is paused, early return\n // 2. If batching is not enabled send the signal to all transports\n // instantly.\n // 3i. If batching is enabled, enqueue the signal\n // 3ii. Send the signal instantly to all un-batched transports\n const execute: Transports['execute'] = (item) => {\n if (paused) {\n return;\n }\n\n if (!config.batching?.enabled) {\n instantSend(item);\n return;\n }\n\n batchExecutor?.addItem(item);\n instantSend(item);\n };\n\n const getBeforeSendHooks: Transports['getBeforeSendHooks'] = () => [...beforeSendHooks];\n\n const isPaused: Transports['isPaused'] = () => paused;\n\n const pause: Transports['pause'] = () => {\n internalLogger.debug('Pausing transports');\n batchExecutor?.pause();\n\n paused = true;\n };\n\n const remove: Transports['remove'] = (...transportsToRemove) => {\n internalLogger.debug('Removing transports');\n\n transportsToRemove.forEach((transportToRemove) => {\n internalLogger.debug(`Removing \"${transportToRemove.name}\" transport`);\n\n const existingTransportIndex = transports.indexOf(transportToRemove);\n\n if (existingTransportIndex === -1) {\n internalLogger.warn(`Transport \"${transportToRemove.name}\" is not added`);\n\n return;\n }\n\n transports.splice(existingTransportIndex, 1);\n });\n };\n\n const removeBeforeSendHooks: Transports['removeBeforeSendHooks'] = (...beforeSendHooksToRemove) => {\n beforeSendHooks.filter((beforeSendHook) => !beforeSendHooksToRemove.includes(beforeSendHook));\n };\n\n const unpause: Transports['unpause'] = () => {\n internalLogger.debug('Unpausing transports');\n batchExecutor?.start();\n\n paused = false;\n };\n\n return {\n add,\n addBeforeSendHooks,\n addIgnoreErrorsPatterns,\n getBeforeSendHooks,\n execute,\n isPaused,\n pause,\n remove,\n removeBeforeSendHooks,\n get transports() {\n return [...transports];\n },\n unpause,\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"initialize.js","sourceRoot":"","sources":["../../../src/transports/initialize.ts"],"names":[],"mappings":"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","sourcesContent":["import type { TransportItem } from '..';\nimport type { ExceptionEvent } from '../api';\nimport type { Config, Patterns } from '../config';\nimport type { InternalLogger } from '../internalLogger';\nimport type { Metas } from '../metas';\nimport type { UnpatchedConsole } from '../unpatchedConsole';\nimport { isString } from '../utils';\n\nimport { BatchExecutor } from './batchExecutor';\nimport { TransportItemType } from './const';\nimport type { BeforeSendHook, Transport, Transports } from './types';\n\nexport function shouldIgnoreEvent(patterns: Patterns, msg: string): boolean {\n return patterns.some((pattern) => {\n return isString(pattern) ? msg.includes(pattern) : !!msg.match(pattern);\n });\n}\n\nexport function createBeforeSendHookFromIgnorePatterns(patterns: Patterns): BeforeSendHook {\n return (item: TransportItem) => {\n if (item.type === TransportItemType.EXCEPTION && item.payload) {\n const evt = item.payload as ExceptionEvent;\n const msg = `${evt.type}: ${evt.value}`;\n\n if (shouldIgnoreEvent(patterns, msg)) {\n return null;\n }\n }\n\n return item;\n };\n}\n\nexport function initializeTransports(\n unpatchedConsole: UnpatchedConsole,\n internalLogger: InternalLogger,\n config: Config,\n metas: Metas\n): Transports {\n internalLogger.debug('Initializing transports');\n\n const transports: Transport[] = [];\n\n let paused = config.paused;\n\n let beforeSendHooks: BeforeSendHook[] = [];\n\n const add: Transports['add'] = (...newTransports) => {\n internalLogger.debug('Adding transports');\n\n newTransports.forEach((newTransport) => {\n internalLogger.debug(`Adding \"${newTransport.name}\" transport`);\n\n const exists = transports.some((existingTransport) => existingTransport === newTransport);\n\n if (exists) {\n internalLogger.warn(`Transport ${newTransport.name} is already added`);\n\n return;\n }\n\n newTransport.unpatchedConsole = unpatchedConsole;\n newTransport.internalLogger = internalLogger;\n newTransport.config = config;\n newTransport.metas = metas;\n\n transports.push(newTransport);\n });\n };\n\n const addBeforeSendHooks: Transports['addBeforeSendHooks'] = (...newBeforeSendHooks) => {\n internalLogger.debug('Adding beforeSendHooks\\n', beforeSendHooks);\n\n newBeforeSendHooks.forEach((beforeSendHook) => {\n if (beforeSendHook) {\n beforeSendHooks.push(beforeSendHook);\n }\n });\n };\n\n const addIgnoreErrorsPatterns: Transports['addIgnoreErrorsPatterns'] = (...ignoreErrorsPatterns) => {\n internalLogger.debug('Adding ignoreErrorsPatterns\\n', ignoreErrorsPatterns);\n\n ignoreErrorsPatterns.forEach((ignoreErrorsPattern) => {\n if (ignoreErrorsPattern) {\n beforeSendHooks.push(createBeforeSendHookFromIgnorePatterns(ignoreErrorsPattern));\n }\n });\n };\n\n const applyBeforeSendHooks = (items: TransportItem[]): TransportItem[] => {\n let filteredItems = items;\n for (const hook of beforeSendHooks) {\n const modified = filteredItems.map(hook).filter(Boolean) as TransportItem[];\n\n if (modified.length === 0) {\n return [];\n }\n\n filteredItems = modified;\n }\n return filteredItems;\n };\n\n const batchedSend = (items: TransportItem[]) => {\n const filteredItems = applyBeforeSendHooks(items);\n\n if (filteredItems.length === 0) {\n return;\n }\n\n for (const transport of transports) {\n internalLogger.debug(`Transporting item using ${transport.name}\\n`, filteredItems);\n if (transport.isBatched()) {\n transport.send(filteredItems);\n }\n }\n };\n\n const instantSend = (item: TransportItem) => {\n // prevent all beforeSend hooks being executed twice if batching is enabled.\n if (config.batching?.enabled && transports.every((transport) => transport.isBatched())) {\n return;\n }\n\n const [filteredItem] = applyBeforeSendHooks([item]);\n\n if (filteredItem === undefined) {\n return;\n }\n\n for (const transport of transports) {\n internalLogger.debug(`Transporting item using ${transport.name}\\n`, filteredItem);\n if (!transport.isBatched()) {\n transport.send(filteredItem);\n } else if (!config.batching?.enabled) {\n transport.send([filteredItem]);\n }\n }\n };\n\n let batchExecutor: BatchExecutor | undefined;\n\n if (config.batching?.enabled) {\n batchExecutor = new BatchExecutor(batchedSend, {\n sendTimeout: config.batching.sendTimeout,\n itemLimit: config.batching.itemLimit,\n paused,\n });\n }\n\n // Send a signal to the appropriate transports\n //\n // 1. If SDK is paused, early return\n // 2. If batching is not enabled send the signal to all transports\n // instantly.\n // 3i. If batching is enabled, enqueue the signal\n // 3ii. Send the signal instantly to all un-batched transports\n const execute: Transports['execute'] = (item) => {\n if (paused) {\n return;\n }\n\n if (config.batching?.enabled) {\n batchExecutor?.addItem(item);\n }\n\n instantSend(item);\n };\n\n const getBeforeSendHooks: Transports['getBeforeSendHooks'] = () => [...beforeSendHooks];\n\n const isPaused: Transports['isPaused'] = () => paused;\n\n const pause: Transports['pause'] = () => {\n internalLogger.debug('Pausing transports');\n batchExecutor?.pause();\n\n paused = true;\n };\n\n const remove: Transports['remove'] = (...transportsToRemove) => {\n internalLogger.debug('Removing transports');\n\n transportsToRemove.forEach((transportToRemove) => {\n internalLogger.debug(`Removing \"${transportToRemove.name}\" transport`);\n\n const existingTransportIndex = transports.indexOf(transportToRemove);\n\n if (existingTransportIndex === -1) {\n internalLogger.warn(`Transport \"${transportToRemove.name}\" is not added`);\n\n return;\n }\n\n transports.splice(existingTransportIndex, 1);\n });\n };\n\n const removeBeforeSendHooks: Transports['removeBeforeSendHooks'] = (...beforeSendHooksToRemove) => {\n beforeSendHooks.filter((beforeSendHook) => !beforeSendHooksToRemove.includes(beforeSendHook));\n };\n\n const unpause: Transports['unpause'] = () => {\n internalLogger.debug('Unpausing transports');\n batchExecutor?.start();\n\n paused = false;\n };\n\n return {\n add,\n addBeforeSendHooks,\n addIgnoreErrorsPatterns,\n getBeforeSendHooks,\n execute,\n isPaused,\n pause,\n remove,\n removeBeforeSendHooks,\n get transports() {\n return [...transports];\n },\n unpause,\n };\n}\n"]}
|
package/dist/cjs/version.js
CHANGED
package/dist/cjs/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";;;AAAA,sCAAsC;AACzB,QAAA,OAAO,GAAG,OAAO,CAAC","sourcesContent":["// auto-generated by bin/genVersion.ts\nexport const VERSION = '1.
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";;;AAAA,sCAAsC;AACzB,QAAA,OAAO,GAAG,OAAO,CAAC","sourcesContent":["// auto-generated by bin/genVersion.ts\nexport const VERSION = '1.3.1';\n"]}
|
|
@@ -23,13 +23,18 @@ export function initializeMetaAPI(_unpatchedConsole, internalLogger, _config, me
|
|
|
23
23
|
};
|
|
24
24
|
const getSession = () => metas.value.session;
|
|
25
25
|
const setView = (view) => {
|
|
26
|
-
|
|
27
|
-
|
|
26
|
+
var _a;
|
|
27
|
+
if (((_a = metaView === null || metaView === void 0 ? void 0 : metaView.view) === null || _a === void 0 ? void 0 : _a.name) === (view === null || view === void 0 ? void 0 : view.name)) {
|
|
28
|
+
return;
|
|
28
29
|
}
|
|
30
|
+
const previousView = metaView;
|
|
29
31
|
metaView = {
|
|
30
32
|
view,
|
|
31
33
|
};
|
|
32
34
|
metas.add(metaView);
|
|
35
|
+
if (previousView) {
|
|
36
|
+
metas.remove(previousView);
|
|
37
|
+
}
|
|
33
38
|
};
|
|
34
39
|
const getView = () => metas.value.view;
|
|
35
40
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initialize.js","sourceRoot":"","sources":["../../../../src/api/meta/initialize.ts"],"names":[],"mappings":"AAQA,MAAM,UAAU,iBAAiB,CAC/B,iBAAmC,EACnC,cAA8B,EAC9B,OAAe,EACf,KAAY,EACZ,WAAuB;IAEvB,cAAc,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAE9C,IAAI,WAAW,GAA8B,SAAS,CAAC;IACvD,IAAI,QAAQ,GAA8B,SAAS,CAAC;IACpD,IAAI,QAAQ,GAA8B,SAAS,CAAC;IAEpD,MAAM,OAAO,GAAuB,CAAC,IAAI,EAAE,EAAE;QAC3C,IAAI,QAAQ,EAAE;YACZ,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;SACxB;QAED,QAAQ,GAAG;YACT,IAAI;SACL,CAAC;QAEF,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACtB,CAAC,CAAC;IAEF,MAAM,UAAU,GAA0B,CAAC,OAAO,EAAE,EAAE;QACpD,IAAI,WAAW,EAAE;YACf,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;SAC3B;QAED,WAAW,GAAG;YACZ,OAAO;SACR,CAAC;QAEF,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACzB,CAAC,CAAC;IAEF,MAAM,UAAU,GAA0B,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;IAEpE,MAAM,OAAO,GAAuB,CAAC,IAAI,EAAE,EAAE
|
|
1
|
+
{"version":3,"file":"initialize.js","sourceRoot":"","sources":["../../../../src/api/meta/initialize.ts"],"names":[],"mappings":"AAQA,MAAM,UAAU,iBAAiB,CAC/B,iBAAmC,EACnC,cAA8B,EAC9B,OAAe,EACf,KAAY,EACZ,WAAuB;IAEvB,cAAc,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAE9C,IAAI,WAAW,GAA8B,SAAS,CAAC;IACvD,IAAI,QAAQ,GAA8B,SAAS,CAAC;IACpD,IAAI,QAAQ,GAA8B,SAAS,CAAC;IAEpD,MAAM,OAAO,GAAuB,CAAC,IAAI,EAAE,EAAE;QAC3C,IAAI,QAAQ,EAAE;YACZ,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;SACxB;QAED,QAAQ,GAAG;YACT,IAAI;SACL,CAAC;QAEF,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACtB,CAAC,CAAC;IAEF,MAAM,UAAU,GAA0B,CAAC,OAAO,EAAE,EAAE;QACpD,IAAI,WAAW,EAAE;YACf,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;SAC3B;QAED,WAAW,GAAG;YACZ,OAAO;SACR,CAAC;QAEF,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACzB,CAAC,CAAC;IAEF,MAAM,UAAU,GAA0B,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;IAEpE,MAAM,OAAO,GAAuB,CAAC,IAAI,EAAE,EAAE;;QAC3C,IAAI,CAAA,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,0CAAE,IAAI,OAAK,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,CAAA,EAAE;YACvC,OAAO;SACR;QAED,MAAM,YAAY,GAAG,QAAQ,CAAC;QAE9B,QAAQ,GAAG;YACT,IAAI;SACL,CAAC;QAEF,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAEpB,IAAI,YAAY,EAAE;YAChB,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;SAC5B;IACH,CAAC,CAAC;IAEF,MAAM,OAAO,GAAuB,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;IAE3D,OAAO;QACL,OAAO;QACP,SAAS,EAAE,OAA+B;QAC1C,UAAU;QACV,YAAY,EAAE,UAAqC;QACnD,UAAU;QACV,OAAO;QACP,OAAO;KACR,CAAC;AACJ,CAAC","sourcesContent":["import type { Config } from '../../config';\nimport type { InternalLogger } from '../../internalLogger';\nimport type { Meta, Metas } from '../../metas';\nimport type { Transports } from '../../transports';\nimport type { UnpatchedConsole } from '../../unpatchedConsole';\n\nimport type { MetaAPI } from './types';\n\nexport function initializeMetaAPI(\n _unpatchedConsole: UnpatchedConsole,\n internalLogger: InternalLogger,\n _config: Config,\n metas: Metas,\n _transports: Transports\n): MetaAPI {\n internalLogger.debug('Initializing meta API');\n\n let metaSession: Partial<Meta> | undefined = undefined;\n let metaUser: Partial<Meta> | undefined = undefined;\n let metaView: Partial<Meta> | undefined = undefined;\n\n const setUser: MetaAPI['setUser'] = (user) => {\n if (metaUser) {\n metas.remove(metaUser);\n }\n\n metaUser = {\n user,\n };\n\n metas.add(metaUser);\n };\n\n const setSession: MetaAPI['setSession'] = (session) => {\n if (metaSession) {\n metas.remove(metaSession);\n }\n\n metaSession = {\n session,\n };\n\n metas.add(metaSession);\n };\n\n const getSession: MetaAPI['getSession'] = () => metas.value.session;\n\n const setView: MetaAPI['setView'] = (view) => {\n if (metaView?.view?.name === view?.name) {\n return;\n }\n\n const previousView = metaView;\n\n metaView = {\n view,\n };\n\n metas.add(metaView);\n\n if (previousView) {\n metas.remove(previousView);\n }\n };\n\n const getView: MetaAPI['getView'] = () => metas.value.view;\n\n return {\n setUser,\n resetUser: setUser as MetaAPI['resetUser'],\n setSession,\n resetSession: setSession as MetaAPI['resetSession'],\n getSession,\n setView,\n getView,\n };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/config/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { APIEvent, StacktraceParser } from '../api';\nimport type { Instrumentation } from '../instrumentations';\nimport type { InternalLoggerLevel } from '../internalLogger';\nimport type { Meta, MetaApp, MetaItem, MetaSession, MetaUser, MetaView } from '../metas';\nimport type { BatchExecutorOptions, BeforeSendHook, Transport } from '../transports';\nimport type { UnpatchedConsole } from '../unpatchedConsole';\n\ntype SamplingContext = {\n metas: Meta;\n};\n\nexport interface Config<P = APIEvent> {\n app: MetaApp;\n batching?: BatchExecutorOptions;\n dedupe: boolean;\n globalObjectKey: string;\n instrumentations: Instrumentation[];\n internalLoggerLevel: InternalLoggerLevel;\n isolate: boolean;\n metas: MetaItem[];\n parseStacktrace: StacktraceParser;\n paused: boolean;\n preventGlobalExposure: boolean;\n transports: Transport[];\n unpatchedConsole: UnpatchedConsole;\n\n beforeSend?: BeforeSendHook<P>;\n ignoreErrors?: Patterns;\n
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/config/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { APIEvent, StacktraceParser } from '../api';\nimport type { Instrumentation } from '../instrumentations';\nimport type { InternalLoggerLevel } from '../internalLogger';\nimport type { Meta, MetaApp, MetaItem, MetaSession, MetaUser, MetaView } from '../metas';\nimport type { BatchExecutorOptions, BeforeSendHook, Transport } from '../transports';\nimport type { UnpatchedConsole } from '../unpatchedConsole';\n\ntype SamplingContext = {\n metas: Meta;\n};\n\nexport interface Config<P = APIEvent> {\n app: MetaApp;\n batching?: BatchExecutorOptions;\n dedupe: boolean;\n globalObjectKey: string;\n instrumentations: Instrumentation[];\n internalLoggerLevel: InternalLoggerLevel;\n isolate: boolean;\n metas: MetaItem[];\n parseStacktrace: StacktraceParser;\n paused: boolean;\n preventGlobalExposure: boolean;\n transports: Transport[];\n unpatchedConsole: UnpatchedConsole;\n\n beforeSend?: BeforeSendHook<P>;\n ignoreErrors?: Patterns;\n sessionTracking?: {\n enabled?: boolean;\n persistent?: boolean;\n session?: MetaSession;\n maxSessionPersistenceTime?: number;\n onSessionChange?: (oldSession: MetaSession | null, newSession: MetaSession) => void;\n samplingRate?: number;\n sampler?: (context: SamplingContext) => number;\n };\n\n user?: MetaUser;\n view?: MetaView;\n eventDomain?: string;\n}\n\nexport type Patterns = Array<string | RegExp>;\n"]}
|
|
@@ -6,10 +6,7 @@ export function registerInitialMetas(faro) {
|
|
|
6
6
|
version: VERSION,
|
|
7
7
|
},
|
|
8
8
|
};
|
|
9
|
-
|
|
10
|
-
if ((_a = faro.config.sessionTracking) === null || _a === void 0 ? void 0 : _a.enabled) {
|
|
11
|
-
session = faro.config.sessionTracking.session;
|
|
12
|
-
}
|
|
9
|
+
const session = (_a = faro.config.sessionTracking) === null || _a === void 0 ? void 0 : _a.session;
|
|
13
10
|
if (session) {
|
|
14
11
|
faro.api.setSession(session);
|
|
15
12
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registerInitial.js","sourceRoot":"","sources":["../../../src/metas/registerInitial.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAIrC,MAAM,UAAU,oBAAoB,CAAC,IAAU;;IAC7C,MAAM,OAAO,GAAS;QACpB,GAAG,EAAE;YACH,OAAO,EAAE,OAAO;SACjB;KACF,CAAC;IAEF,
|
|
1
|
+
{"version":3,"file":"registerInitial.js","sourceRoot":"","sources":["../../../src/metas/registerInitial.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAIrC,MAAM,UAAU,oBAAoB,CAAC,IAAU;;IAC7C,MAAM,OAAO,GAAS;QACpB,GAAG,EAAE;YACH,OAAO,EAAE,OAAO;SACjB;KACF,CAAC;IAEF,MAAM,OAAO,GAAG,MAAA,IAAI,CAAC,MAAM,CAAC,eAAe,0CAAE,OAAO,CAAC;IACrD,IAAI,OAAO,EAAE;QACX,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;KAC9B;IAED,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;QACnB,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;KAC/B;IAED,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;QACpB,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;KACjC;IAED,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;QACpB,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;KACjC;IAED,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,MAAA,IAAI,CAAC,MAAM,CAAC,KAAK,mCAAI,EAAE,CAAC,CAAC,CAAC;AACxD,CAAC","sourcesContent":["import type { Faro } from '../sdk';\nimport { VERSION } from '../version';\n\nimport type { Meta } from './types';\n\nexport function registerInitialMetas(faro: Faro): void {\n const initial: Meta = {\n sdk: {\n version: VERSION,\n },\n };\n\n const session = faro.config.sessionTracking?.session;\n if (session) {\n faro.api.setSession(session);\n }\n\n if (faro.config.app) {\n initial.app = faro.config.app;\n }\n\n if (faro.config.user) {\n initial.user = faro.config.user;\n }\n\n if (faro.config.view) {\n initial.view = faro.config.view;\n }\n\n faro.metas.add(initial, ...(faro.config.metas ?? []));\n}\n"]}
|
package/dist/esm/semantic.js
CHANGED
|
@@ -18,4 +18,5 @@ export const EVENT_VIEW_CHANGED = 'view_changed';
|
|
|
18
18
|
export const EVENT_SESSION_START = 'session_start';
|
|
19
19
|
export const EVENT_SESSION_RESUME = 'session_resume';
|
|
20
20
|
export const EVENT_SESSION_EXTEND = 'session_extend';
|
|
21
|
+
export const EVENT_ROUTE_CHANGE = 'route_change';
|
|
21
22
|
//# sourceMappingURL=semantic.js.map
|
package/dist/esm/semantic.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"semantic.js","sourceRoot":"","sources":["../../src/semantic.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB;;OAEG;IACH,UAAU,EAAE;QACV,KAAK,EAAE,OAAO;QACd,UAAU,EAAE,YAAY;QACxB,aAAa,EAAE,eAAe;QAC9B,YAAY,EAAE,cAAc;KAC7B;CACO,CAAC;AAEX,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC;AACnC,MAAM,CAAC,MAAM,gBAAgB,GAAG,YAAY,CAAC;AAC7C,MAAM,CAAC,MAAM,kBAAkB,GAAG,cAAc,CAAC;AACjD,MAAM,CAAC,MAAM,mBAAmB,GAAG,eAAe,CAAC;AACnD,MAAM,CAAC,MAAM,oBAAoB,GAAG,gBAAgB,CAAC;AACrD,MAAM,CAAC,MAAM,oBAAoB,GAAG,gBAAgB,CAAC","sourcesContent":["/**\n * @deprecated The conventions object will be removed in a future version\n */\nexport const Conventions = {\n /**\n * @deprecated The event names object will be removed in a future version\n */\n EventNames: {\n CLICK: 'click',\n NAVIGATION: 'navigation',\n SESSION_START: 'session_start',\n VIEW_CHANGED: 'view_changed',\n },\n} as const;\n\nexport const EVENT_CLICK = 'click';\nexport const EVENT_NAVIGATION = 'navigation';\nexport const EVENT_VIEW_CHANGED = 'view_changed';\nexport const EVENT_SESSION_START = 'session_start';\nexport const EVENT_SESSION_RESUME = 'session_resume';\nexport const EVENT_SESSION_EXTEND = 'session_extend';\n"]}
|
|
1
|
+
{"version":3,"file":"semantic.js","sourceRoot":"","sources":["../../src/semantic.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB;;OAEG;IACH,UAAU,EAAE;QACV,KAAK,EAAE,OAAO;QACd,UAAU,EAAE,YAAY;QACxB,aAAa,EAAE,eAAe;QAC9B,YAAY,EAAE,cAAc;KAC7B;CACO,CAAC;AAEX,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC;AACnC,MAAM,CAAC,MAAM,gBAAgB,GAAG,YAAY,CAAC;AAC7C,MAAM,CAAC,MAAM,kBAAkB,GAAG,cAAc,CAAC;AACjD,MAAM,CAAC,MAAM,mBAAmB,GAAG,eAAe,CAAC;AACnD,MAAM,CAAC,MAAM,oBAAoB,GAAG,gBAAgB,CAAC;AACrD,MAAM,CAAC,MAAM,oBAAoB,GAAG,gBAAgB,CAAC;AACrD,MAAM,CAAC,MAAM,kBAAkB,GAAG,cAAc,CAAC","sourcesContent":["/**\n * @deprecated The conventions object will be removed in a future version\n */\nexport const Conventions = {\n /**\n * @deprecated The event names object will be removed in a future version\n */\n EventNames: {\n CLICK: 'click',\n NAVIGATION: 'navigation',\n SESSION_START: 'session_start',\n VIEW_CHANGED: 'view_changed',\n },\n} as const;\n\nexport const EVENT_CLICK = 'click';\nexport const EVENT_NAVIGATION = 'navigation';\nexport const EVENT_VIEW_CHANGED = 'view_changed';\nexport const EVENT_SESSION_START = 'session_start';\nexport const EVENT_SESSION_RESUME = 'session_resume';\nexport const EVENT_SESSION_EXTEND = 'session_extend';\nexport const EVENT_ROUTE_CHANGE = 'route_change';\n"]}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { defaultBatchingConfig } from '../config';
|
|
1
2
|
import { defaultInternalLoggerLevel } from '../internalLogger';
|
|
2
3
|
import { mockStacktraceParser } from './mockStacktraceParser';
|
|
3
4
|
export function mockConfig(overrides = {}) {
|
|
@@ -6,6 +7,6 @@ export function mockConfig(overrides = {}) {
|
|
|
6
7
|
version: '1.0.0',
|
|
7
8
|
}, batching: {
|
|
8
9
|
enabled: false,
|
|
9
|
-
}, dedupe: true, globalObjectKey: 'faro', internalLoggerLevel: defaultInternalLoggerLevel, instrumentations: [], isolate: true, metas: [], parseStacktrace: mockStacktraceParser, paused: false, preventGlobalExposure: true, transports: [], unpatchedConsole: console }, overrides);
|
|
10
|
+
}, dedupe: true, globalObjectKey: 'faro', internalLoggerLevel: defaultInternalLoggerLevel, instrumentations: [], isolate: true, metas: [], parseStacktrace: mockStacktraceParser, paused: false, preventGlobalExposure: true, transports: [], unpatchedConsole: console, sessionTracking: Object.assign({}, defaultBatchingConfig) }, overrides);
|
|
10
11
|
}
|
|
11
12
|
//# sourceMappingURL=mockConfig.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mockConfig.js","sourceRoot":"","sources":["../../../src/testUtils/mockConfig.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mockConfig.js","sourceRoot":"","sources":["../../../src/testUtils/mockConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAE/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,MAAM,UAAU,UAAU,CAAC,YAA6B,EAAE;IACxD,uBACE,GAAG,EAAE;YACH,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,OAAO;SACjB,EACD,QAAQ,EAAE;YACR,OAAO,EAAE,KAAK;SACf,EACD,MAAM,EAAE,IAAI,EACZ,eAAe,EAAE,MAAM,EACvB,mBAAmB,EAAE,0BAA0B,EAC/C,gBAAgB,EAAE,EAAE,EACpB,OAAO,EAAE,IAAI,EACb,KAAK,EAAE,EAAE,EACT,eAAe,EAAE,oBAAoB,EACrC,MAAM,EAAE,KAAK,EACb,qBAAqB,EAAE,IAAI,EAC3B,UAAU,EAAE,EAAE,EACd,gBAAgB,EAAE,OAAO,EACzB,eAAe,oBACV,qBAAqB,KAEvB,SAAS,EACZ;AACJ,CAAC","sourcesContent":["import { type Config, defaultBatchingConfig } from '../config';\nimport { defaultInternalLoggerLevel } from '../internalLogger';\n\nimport { mockStacktraceParser } from './mockStacktraceParser';\n\nexport function mockConfig(overrides: Partial<Config> = {}): Config {\n return {\n app: {\n name: 'test',\n version: '1.0.0',\n },\n batching: {\n enabled: false,\n },\n dedupe: true,\n globalObjectKey: 'faro',\n internalLoggerLevel: defaultInternalLoggerLevel,\n instrumentations: [],\n isolate: true,\n metas: [],\n parseStacktrace: mockStacktraceParser,\n paused: false,\n preventGlobalExposure: true,\n transports: [],\n unpatchedConsole: console,\n sessionTracking: {\n ...defaultBatchingConfig,\n },\n ...overrides,\n };\n}\n"]}
|
|
@@ -80,7 +80,11 @@ export function initializeTransports(unpatchedConsole, internalLogger, config, m
|
|
|
80
80
|
}
|
|
81
81
|
};
|
|
82
82
|
const instantSend = (item) => {
|
|
83
|
-
var _a;
|
|
83
|
+
var _a, _b;
|
|
84
|
+
// prevent all beforeSend hooks being executed twice if batching is enabled.
|
|
85
|
+
if (((_a = config.batching) === null || _a === void 0 ? void 0 : _a.enabled) && transports.every((transport) => transport.isBatched())) {
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
84
88
|
const [filteredItem] = applyBeforeSendHooks([item]);
|
|
85
89
|
if (filteredItem === undefined) {
|
|
86
90
|
return;
|
|
@@ -90,7 +94,7 @@ export function initializeTransports(unpatchedConsole, internalLogger, config, m
|
|
|
90
94
|
if (!transport.isBatched()) {
|
|
91
95
|
transport.send(filteredItem);
|
|
92
96
|
}
|
|
93
|
-
else if (!((
|
|
97
|
+
else if (!((_b = config.batching) === null || _b === void 0 ? void 0 : _b.enabled)) {
|
|
94
98
|
transport.send([filteredItem]);
|
|
95
99
|
}
|
|
96
100
|
}
|
|
@@ -115,11 +119,9 @@ export function initializeTransports(unpatchedConsole, internalLogger, config, m
|
|
|
115
119
|
if (paused) {
|
|
116
120
|
return;
|
|
117
121
|
}
|
|
118
|
-
if (
|
|
119
|
-
|
|
120
|
-
return;
|
|
122
|
+
if ((_a = config.batching) === null || _a === void 0 ? void 0 : _a.enabled) {
|
|
123
|
+
batchExecutor === null || batchExecutor === void 0 ? void 0 : batchExecutor.addItem(item);
|
|
121
124
|
}
|
|
122
|
-
batchExecutor === null || batchExecutor === void 0 ? void 0 : batchExecutor.addItem(item);
|
|
123
125
|
instantSend(item);
|
|
124
126
|
};
|
|
125
127
|
const getBeforeSendHooks = () => [...beforeSendHooks];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initialize.js","sourceRoot":"","sources":["../../../src/transports/initialize.ts"],"names":[],"mappings":"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","sourcesContent":["import type { TransportItem } from '..';\nimport type { ExceptionEvent } from '../api';\nimport type { Config, Patterns } from '../config';\nimport type { InternalLogger } from '../internalLogger';\nimport type { Metas } from '../metas';\nimport type { UnpatchedConsole } from '../unpatchedConsole';\nimport { isString } from '../utils';\n\nimport { BatchExecutor } from './batchExecutor';\nimport { TransportItemType } from './const';\nimport type { BeforeSendHook, Transport, Transports } from './types';\n\nexport function shouldIgnoreEvent(patterns: Patterns, msg: string): boolean {\n return patterns.some((pattern) => {\n return isString(pattern) ? msg.includes(pattern) : !!msg.match(pattern);\n });\n}\n\nexport function createBeforeSendHookFromIgnorePatterns(patterns: Patterns): BeforeSendHook {\n return (item: TransportItem) => {\n if (item.type === TransportItemType.EXCEPTION && item.payload) {\n const evt = item.payload as ExceptionEvent;\n const msg = `${evt.type}: ${evt.value}`;\n\n if (shouldIgnoreEvent(patterns, msg)) {\n return null;\n }\n }\n\n return item;\n };\n}\n\nexport function initializeTransports(\n unpatchedConsole: UnpatchedConsole,\n internalLogger: InternalLogger,\n config: Config,\n metas: Metas\n): Transports {\n internalLogger.debug('Initializing transports');\n\n const transports: Transport[] = [];\n\n let paused = config.paused;\n\n let beforeSendHooks: BeforeSendHook[] = [];\n\n const add: Transports['add'] = (...newTransports) => {\n internalLogger.debug('Adding transports');\n\n newTransports.forEach((newTransport) => {\n internalLogger.debug(`Adding \"${newTransport.name}\" transport`);\n\n const exists = transports.some((existingTransport) => existingTransport === newTransport);\n\n if (exists) {\n internalLogger.warn(`Transport ${newTransport.name} is already added`);\n\n return;\n }\n\n newTransport.unpatchedConsole = unpatchedConsole;\n newTransport.internalLogger = internalLogger;\n newTransport.config = config;\n newTransport.metas = metas;\n\n transports.push(newTransport);\n });\n };\n\n const addBeforeSendHooks: Transports['addBeforeSendHooks'] = (...newBeforeSendHooks) => {\n internalLogger.debug('Adding beforeSendHooks\\n', beforeSendHooks);\n\n newBeforeSendHooks.forEach((beforeSendHook) => {\n if (beforeSendHook) {\n beforeSendHooks.push(beforeSendHook);\n }\n });\n };\n\n const addIgnoreErrorsPatterns: Transports['addIgnoreErrorsPatterns'] = (...ignoreErrorsPatterns) => {\n internalLogger.debug('Adding ignoreErrorsPatterns\\n', ignoreErrorsPatterns);\n\n ignoreErrorsPatterns.forEach((ignoreErrorsPattern) => {\n if (ignoreErrorsPattern) {\n beforeSendHooks.push(createBeforeSendHookFromIgnorePatterns(ignoreErrorsPattern));\n }\n });\n };\n\n const applyBeforeSendHooks = (items: TransportItem[]): TransportItem[] => {\n let filteredItems = items;\n for (const hook of beforeSendHooks) {\n const modified = filteredItems.map(hook).filter(Boolean) as TransportItem[];\n\n if (modified.length === 0) {\n return [];\n }\n\n filteredItems = modified;\n }\n return filteredItems;\n };\n\n const batchedSend = (items: TransportItem[]) => {\n const filteredItems = applyBeforeSendHooks(items);\n\n if (filteredItems.length === 0) {\n return;\n }\n\n for (const transport of transports) {\n internalLogger.debug(`Transporting item using ${transport.name}\\n`, filteredItems);\n if (transport.isBatched()) {\n transport.send(filteredItems);\n }\n }\n };\n\n const instantSend = (item: TransportItem) => {\n const [filteredItem] = applyBeforeSendHooks([item]);\n\n if (filteredItem === undefined) {\n return;\n }\n\n for (const transport of transports) {\n internalLogger.debug(`Transporting item using ${transport.name}\\n`, filteredItem);\n if (!transport.isBatched()) {\n transport.send(filteredItem);\n } else if (!config.batching?.enabled) {\n transport.send([filteredItem]);\n }\n }\n };\n\n let batchExecutor: BatchExecutor | undefined;\n\n if (config.batching?.enabled) {\n batchExecutor = new BatchExecutor(batchedSend, {\n sendTimeout: config.batching.sendTimeout,\n itemLimit: config.batching.itemLimit,\n paused,\n });\n }\n\n // Send a signal to the appropriate transports\n //\n // 1. If SDK is paused, early return\n // 2. If batching is not enabled send the signal to all transports\n // instantly.\n // 3i. If batching is enabled, enqueue the signal\n // 3ii. Send the signal instantly to all un-batched transports\n const execute: Transports['execute'] = (item) => {\n if (paused) {\n return;\n }\n\n if (!config.batching?.enabled) {\n instantSend(item);\n return;\n }\n\n batchExecutor?.addItem(item);\n instantSend(item);\n };\n\n const getBeforeSendHooks: Transports['getBeforeSendHooks'] = () => [...beforeSendHooks];\n\n const isPaused: Transports['isPaused'] = () => paused;\n\n const pause: Transports['pause'] = () => {\n internalLogger.debug('Pausing transports');\n batchExecutor?.pause();\n\n paused = true;\n };\n\n const remove: Transports['remove'] = (...transportsToRemove) => {\n internalLogger.debug('Removing transports');\n\n transportsToRemove.forEach((transportToRemove) => {\n internalLogger.debug(`Removing \"${transportToRemove.name}\" transport`);\n\n const existingTransportIndex = transports.indexOf(transportToRemove);\n\n if (existingTransportIndex === -1) {\n internalLogger.warn(`Transport \"${transportToRemove.name}\" is not added`);\n\n return;\n }\n\n transports.splice(existingTransportIndex, 1);\n });\n };\n\n const removeBeforeSendHooks: Transports['removeBeforeSendHooks'] = (...beforeSendHooksToRemove) => {\n beforeSendHooks.filter((beforeSendHook) => !beforeSendHooksToRemove.includes(beforeSendHook));\n };\n\n const unpause: Transports['unpause'] = () => {\n internalLogger.debug('Unpausing transports');\n batchExecutor?.start();\n\n paused = false;\n };\n\n return {\n add,\n addBeforeSendHooks,\n addIgnoreErrorsPatterns,\n getBeforeSendHooks,\n execute,\n isPaused,\n pause,\n remove,\n removeBeforeSendHooks,\n get transports() {\n return [...transports];\n },\n unpause,\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"initialize.js","sourceRoot":"","sources":["../../../src/transports/initialize.ts"],"names":[],"mappings":"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","sourcesContent":["import type { TransportItem } from '..';\nimport type { ExceptionEvent } from '../api';\nimport type { Config, Patterns } from '../config';\nimport type { InternalLogger } from '../internalLogger';\nimport type { Metas } from '../metas';\nimport type { UnpatchedConsole } from '../unpatchedConsole';\nimport { isString } from '../utils';\n\nimport { BatchExecutor } from './batchExecutor';\nimport { TransportItemType } from './const';\nimport type { BeforeSendHook, Transport, Transports } from './types';\n\nexport function shouldIgnoreEvent(patterns: Patterns, msg: string): boolean {\n return patterns.some((pattern) => {\n return isString(pattern) ? msg.includes(pattern) : !!msg.match(pattern);\n });\n}\n\nexport function createBeforeSendHookFromIgnorePatterns(patterns: Patterns): BeforeSendHook {\n return (item: TransportItem) => {\n if (item.type === TransportItemType.EXCEPTION && item.payload) {\n const evt = item.payload as ExceptionEvent;\n const msg = `${evt.type}: ${evt.value}`;\n\n if (shouldIgnoreEvent(patterns, msg)) {\n return null;\n }\n }\n\n return item;\n };\n}\n\nexport function initializeTransports(\n unpatchedConsole: UnpatchedConsole,\n internalLogger: InternalLogger,\n config: Config,\n metas: Metas\n): Transports {\n internalLogger.debug('Initializing transports');\n\n const transports: Transport[] = [];\n\n let paused = config.paused;\n\n let beforeSendHooks: BeforeSendHook[] = [];\n\n const add: Transports['add'] = (...newTransports) => {\n internalLogger.debug('Adding transports');\n\n newTransports.forEach((newTransport) => {\n internalLogger.debug(`Adding \"${newTransport.name}\" transport`);\n\n const exists = transports.some((existingTransport) => existingTransport === newTransport);\n\n if (exists) {\n internalLogger.warn(`Transport ${newTransport.name} is already added`);\n\n return;\n }\n\n newTransport.unpatchedConsole = unpatchedConsole;\n newTransport.internalLogger = internalLogger;\n newTransport.config = config;\n newTransport.metas = metas;\n\n transports.push(newTransport);\n });\n };\n\n const addBeforeSendHooks: Transports['addBeforeSendHooks'] = (...newBeforeSendHooks) => {\n internalLogger.debug('Adding beforeSendHooks\\n', beforeSendHooks);\n\n newBeforeSendHooks.forEach((beforeSendHook) => {\n if (beforeSendHook) {\n beforeSendHooks.push(beforeSendHook);\n }\n });\n };\n\n const addIgnoreErrorsPatterns: Transports['addIgnoreErrorsPatterns'] = (...ignoreErrorsPatterns) => {\n internalLogger.debug('Adding ignoreErrorsPatterns\\n', ignoreErrorsPatterns);\n\n ignoreErrorsPatterns.forEach((ignoreErrorsPattern) => {\n if (ignoreErrorsPattern) {\n beforeSendHooks.push(createBeforeSendHookFromIgnorePatterns(ignoreErrorsPattern));\n }\n });\n };\n\n const applyBeforeSendHooks = (items: TransportItem[]): TransportItem[] => {\n let filteredItems = items;\n for (const hook of beforeSendHooks) {\n const modified = filteredItems.map(hook).filter(Boolean) as TransportItem[];\n\n if (modified.length === 0) {\n return [];\n }\n\n filteredItems = modified;\n }\n return filteredItems;\n };\n\n const batchedSend = (items: TransportItem[]) => {\n const filteredItems = applyBeforeSendHooks(items);\n\n if (filteredItems.length === 0) {\n return;\n }\n\n for (const transport of transports) {\n internalLogger.debug(`Transporting item using ${transport.name}\\n`, filteredItems);\n if (transport.isBatched()) {\n transport.send(filteredItems);\n }\n }\n };\n\n const instantSend = (item: TransportItem) => {\n // prevent all beforeSend hooks being executed twice if batching is enabled.\n if (config.batching?.enabled && transports.every((transport) => transport.isBatched())) {\n return;\n }\n\n const [filteredItem] = applyBeforeSendHooks([item]);\n\n if (filteredItem === undefined) {\n return;\n }\n\n for (const transport of transports) {\n internalLogger.debug(`Transporting item using ${transport.name}\\n`, filteredItem);\n if (!transport.isBatched()) {\n transport.send(filteredItem);\n } else if (!config.batching?.enabled) {\n transport.send([filteredItem]);\n }\n }\n };\n\n let batchExecutor: BatchExecutor | undefined;\n\n if (config.batching?.enabled) {\n batchExecutor = new BatchExecutor(batchedSend, {\n sendTimeout: config.batching.sendTimeout,\n itemLimit: config.batching.itemLimit,\n paused,\n });\n }\n\n // Send a signal to the appropriate transports\n //\n // 1. If SDK is paused, early return\n // 2. If batching is not enabled send the signal to all transports\n // instantly.\n // 3i. If batching is enabled, enqueue the signal\n // 3ii. Send the signal instantly to all un-batched transports\n const execute: Transports['execute'] = (item) => {\n if (paused) {\n return;\n }\n\n if (config.batching?.enabled) {\n batchExecutor?.addItem(item);\n }\n\n instantSend(item);\n };\n\n const getBeforeSendHooks: Transports['getBeforeSendHooks'] = () => [...beforeSendHooks];\n\n const isPaused: Transports['isPaused'] = () => paused;\n\n const pause: Transports['pause'] = () => {\n internalLogger.debug('Pausing transports');\n batchExecutor?.pause();\n\n paused = true;\n };\n\n const remove: Transports['remove'] = (...transportsToRemove) => {\n internalLogger.debug('Removing transports');\n\n transportsToRemove.forEach((transportToRemove) => {\n internalLogger.debug(`Removing \"${transportToRemove.name}\" transport`);\n\n const existingTransportIndex = transports.indexOf(transportToRemove);\n\n if (existingTransportIndex === -1) {\n internalLogger.warn(`Transport \"${transportToRemove.name}\" is not added`);\n\n return;\n }\n\n transports.splice(existingTransportIndex, 1);\n });\n };\n\n const removeBeforeSendHooks: Transports['removeBeforeSendHooks'] = (...beforeSendHooksToRemove) => {\n beforeSendHooks.filter((beforeSendHook) => !beforeSendHooksToRemove.includes(beforeSendHook));\n };\n\n const unpause: Transports['unpause'] = () => {\n internalLogger.debug('Unpausing transports');\n batchExecutor?.start();\n\n paused = false;\n };\n\n return {\n add,\n addBeforeSendHooks,\n addIgnoreErrorsPatterns,\n getBeforeSendHooks,\n execute,\n isPaused,\n pause,\n remove,\n removeBeforeSendHooks,\n get transports() {\n return [...transports];\n },\n unpause,\n };\n}\n"]}
|
package/dist/esm/version.js
CHANGED
package/dist/esm/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC","sourcesContent":["// auto-generated by bin/genVersion.ts\nexport const VERSION = '1.
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC","sourcesContent":["// auto-generated by bin/genVersion.ts\nexport const VERSION = '1.3.1';\n"]}
|
|
@@ -26,13 +26,18 @@ function initializeMetaAPI(_unpatchedConsole, internalLogger, _config, metas, _t
|
|
|
26
26
|
};
|
|
27
27
|
var getSession = function () { return metas.value.session; };
|
|
28
28
|
var setView = function (view) {
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
var _a;
|
|
30
|
+
if (((_a = metaView === null || metaView === void 0 ? void 0 : metaView.view) === null || _a === void 0 ? void 0 : _a.name) === (view === null || view === void 0 ? void 0 : view.name)) {
|
|
31
|
+
return;
|
|
31
32
|
}
|
|
33
|
+
var previousView = metaView;
|
|
32
34
|
metaView = {
|
|
33
35
|
view: view,
|
|
34
36
|
};
|
|
35
37
|
metas.add(metaView);
|
|
38
|
+
if (previousView) {
|
|
39
|
+
metas.remove(previousView);
|
|
40
|
+
}
|
|
36
41
|
};
|
|
37
42
|
var getView = function () { return metas.value.view; };
|
|
38
43
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initialize.js","sourceRoot":"","sources":["../../../../../../src/api/meta/initialize.ts"],"names":[],"mappings":";;;AAQA,SAAgB,iBAAiB,CAC/B,iBAAmC,EACnC,cAA8B,EAC9B,OAAe,EACf,KAAY,EACZ,WAAuB;IAEvB,cAAc,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAE9C,IAAI,WAAW,GAA8B,SAAS,CAAC;IACvD,IAAI,QAAQ,GAA8B,SAAS,CAAC;IACpD,IAAI,QAAQ,GAA8B,SAAS,CAAC;IAEpD,IAAM,OAAO,GAAuB,UAAC,IAAI;QACvC,IAAI,QAAQ,EAAE;YACZ,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;SACxB;QAED,QAAQ,GAAG;YACT,IAAI,MAAA;SACL,CAAC;QAEF,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACtB,CAAC,CAAC;IAEF,IAAM,UAAU,GAA0B,UAAC,OAAO;QAChD,IAAI,WAAW,EAAE;YACf,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;SAC3B;QAED,WAAW,GAAG;YACZ,OAAO,SAAA;SACR,CAAC;QAEF,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACzB,CAAC,CAAC;IAEF,IAAM,UAAU,GAA0B,cAAM,OAAA,KAAK,CAAC,KAAK,CAAC,OAAO,EAAnB,CAAmB,CAAC;IAEpE,IAAM,OAAO,GAAuB,UAAC,IAAI
|
|
1
|
+
{"version":3,"file":"initialize.js","sourceRoot":"","sources":["../../../../../../src/api/meta/initialize.ts"],"names":[],"mappings":";;;AAQA,SAAgB,iBAAiB,CAC/B,iBAAmC,EACnC,cAA8B,EAC9B,OAAe,EACf,KAAY,EACZ,WAAuB;IAEvB,cAAc,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAE9C,IAAI,WAAW,GAA8B,SAAS,CAAC;IACvD,IAAI,QAAQ,GAA8B,SAAS,CAAC;IACpD,IAAI,QAAQ,GAA8B,SAAS,CAAC;IAEpD,IAAM,OAAO,GAAuB,UAAC,IAAI;QACvC,IAAI,QAAQ,EAAE;YACZ,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;SACxB;QAED,QAAQ,GAAG;YACT,IAAI,MAAA;SACL,CAAC;QAEF,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACtB,CAAC,CAAC;IAEF,IAAM,UAAU,GAA0B,UAAC,OAAO;QAChD,IAAI,WAAW,EAAE;YACf,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;SAC3B;QAED,WAAW,GAAG;YACZ,OAAO,SAAA;SACR,CAAC;QAEF,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACzB,CAAC,CAAC;IAEF,IAAM,UAAU,GAA0B,cAAM,OAAA,KAAK,CAAC,KAAK,CAAC,OAAO,EAAnB,CAAmB,CAAC;IAEpE,IAAM,OAAO,GAAuB,UAAC,IAAI;;QACvC,IAAI,CAAA,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,0CAAE,IAAI,OAAK,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,CAAA,EAAE;YACvC,OAAO;SACR;QAED,IAAM,YAAY,GAAG,QAAQ,CAAC;QAE9B,QAAQ,GAAG;YACT,IAAI,MAAA;SACL,CAAC;QAEF,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAEpB,IAAI,YAAY,EAAE;YAChB,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;SAC5B;IACH,CAAC,CAAC;IAEF,IAAM,OAAO,GAAuB,cAAM,OAAA,KAAK,CAAC,KAAK,CAAC,IAAI,EAAhB,CAAgB,CAAC;IAE3D,OAAO;QACL,OAAO,SAAA;QACP,SAAS,EAAE,OAA+B;QAC1C,UAAU,YAAA;QACV,YAAY,EAAE,UAAqC;QACnD,UAAU,YAAA;QACV,OAAO,SAAA;QACP,OAAO,SAAA;KACR,CAAC;AACJ,CAAC;AApED,8CAoEC","sourcesContent":["import type { Config } from '../../config';\nimport type { InternalLogger } from '../../internalLogger';\nimport type { Meta, Metas } from '../../metas';\nimport type { Transports } from '../../transports';\nimport type { UnpatchedConsole } from '../../unpatchedConsole';\n\nimport type { MetaAPI } from './types';\n\nexport function initializeMetaAPI(\n _unpatchedConsole: UnpatchedConsole,\n internalLogger: InternalLogger,\n _config: Config,\n metas: Metas,\n _transports: Transports\n): MetaAPI {\n internalLogger.debug('Initializing meta API');\n\n let metaSession: Partial<Meta> | undefined = undefined;\n let metaUser: Partial<Meta> | undefined = undefined;\n let metaView: Partial<Meta> | undefined = undefined;\n\n const setUser: MetaAPI['setUser'] = (user) => {\n if (metaUser) {\n metas.remove(metaUser);\n }\n\n metaUser = {\n user,\n };\n\n metas.add(metaUser);\n };\n\n const setSession: MetaAPI['setSession'] = (session) => {\n if (metaSession) {\n metas.remove(metaSession);\n }\n\n metaSession = {\n session,\n };\n\n metas.add(metaSession);\n };\n\n const getSession: MetaAPI['getSession'] = () => metas.value.session;\n\n const setView: MetaAPI['setView'] = (view) => {\n if (metaView?.view?.name === view?.name) {\n return;\n }\n\n const previousView = metaView;\n\n metaView = {\n view,\n };\n\n metas.add(metaView);\n\n if (previousView) {\n metas.remove(previousView);\n }\n };\n\n const getView: MetaAPI['getView'] = () => metas.value.view;\n\n return {\n setUser,\n resetUser: setUser as MetaAPI['resetUser'],\n setSession,\n resetSession: setSession as MetaAPI['resetSession'],\n getSession,\n setView,\n getView,\n };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/config/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { APIEvent, StacktraceParser } from '../api';\nimport type { Instrumentation } from '../instrumentations';\nimport type { InternalLoggerLevel } from '../internalLogger';\nimport type { Meta, MetaApp, MetaItem, MetaSession, MetaUser, MetaView } from '../metas';\nimport type { BatchExecutorOptions, BeforeSendHook, Transport } from '../transports';\nimport type { UnpatchedConsole } from '../unpatchedConsole';\n\ntype SamplingContext = {\n metas: Meta;\n};\n\nexport interface Config<P = APIEvent> {\n app: MetaApp;\n batching?: BatchExecutorOptions;\n dedupe: boolean;\n globalObjectKey: string;\n instrumentations: Instrumentation[];\n internalLoggerLevel: InternalLoggerLevel;\n isolate: boolean;\n metas: MetaItem[];\n parseStacktrace: StacktraceParser;\n paused: boolean;\n preventGlobalExposure: boolean;\n transports: Transport[];\n unpatchedConsole: UnpatchedConsole;\n\n beforeSend?: BeforeSendHook<P>;\n ignoreErrors?: Patterns;\n
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/config/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { APIEvent, StacktraceParser } from '../api';\nimport type { Instrumentation } from '../instrumentations';\nimport type { InternalLoggerLevel } from '../internalLogger';\nimport type { Meta, MetaApp, MetaItem, MetaSession, MetaUser, MetaView } from '../metas';\nimport type { BatchExecutorOptions, BeforeSendHook, Transport } from '../transports';\nimport type { UnpatchedConsole } from '../unpatchedConsole';\n\ntype SamplingContext = {\n metas: Meta;\n};\n\nexport interface Config<P = APIEvent> {\n app: MetaApp;\n batching?: BatchExecutorOptions;\n dedupe: boolean;\n globalObjectKey: string;\n instrumentations: Instrumentation[];\n internalLoggerLevel: InternalLoggerLevel;\n isolate: boolean;\n metas: MetaItem[];\n parseStacktrace: StacktraceParser;\n paused: boolean;\n preventGlobalExposure: boolean;\n transports: Transport[];\n unpatchedConsole: UnpatchedConsole;\n\n beforeSend?: BeforeSendHook<P>;\n ignoreErrors?: Patterns;\n sessionTracking?: {\n enabled?: boolean;\n persistent?: boolean;\n session?: MetaSession;\n maxSessionPersistenceTime?: number;\n onSessionChange?: (oldSession: MetaSession | null, newSession: MetaSession) => void;\n samplingRate?: number;\n sampler?: (context: SamplingContext) => number;\n };\n\n user?: MetaUser;\n view?: MetaView;\n eventDomain?: string;\n}\n\nexport type Patterns = Array<string | RegExp>;\n"]}
|
|
@@ -19,10 +19,7 @@ function registerInitialMetas(faro) {
|
|
|
19
19
|
version: version_1.VERSION,
|
|
20
20
|
},
|
|
21
21
|
};
|
|
22
|
-
var session = faro.config.session;
|
|
23
|
-
if ((_b = faro.config.sessionTracking) === null || _b === void 0 ? void 0 : _b.enabled) {
|
|
24
|
-
session = faro.config.sessionTracking.session;
|
|
25
|
-
}
|
|
22
|
+
var session = (_b = faro.config.sessionTracking) === null || _b === void 0 ? void 0 : _b.session;
|
|
26
23
|
if (session) {
|
|
27
24
|
faro.api.setSession(session);
|
|
28
25
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registerInitial.js","sourceRoot":"","sources":["../../../../../src/metas/registerInitial.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,sCAAqC;AAIrC,SAAgB,oBAAoB,CAAC,IAAU;;;IAC7C,IAAM,OAAO,GAAS;QACpB,GAAG,EAAE;YACH,OAAO,EAAE,iBAAO;SACjB;KACF,CAAC;IAEF,
|
|
1
|
+
{"version":3,"file":"registerInitial.js","sourceRoot":"","sources":["../../../../../src/metas/registerInitial.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,sCAAqC;AAIrC,SAAgB,oBAAoB,CAAC,IAAU;;;IAC7C,IAAM,OAAO,GAAS;QACpB,GAAG,EAAE;YACH,OAAO,EAAE,iBAAO;SACjB;KACF,CAAC;IAEF,IAAM,OAAO,GAAG,MAAA,IAAI,CAAC,MAAM,CAAC,eAAe,0CAAE,OAAO,CAAC;IACrD,IAAI,OAAO,EAAE;QACX,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;KAC9B;IAED,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;QACnB,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;KAC/B;IAED,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;QACpB,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;KACjC;IAED,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;QACpB,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;KACjC;IAED,CAAA,KAAA,IAAI,CAAC,KAAK,CAAA,CAAC,GAAG,0BAAC,OAAO,GAAK,CAAC,MAAA,IAAI,CAAC,MAAM,CAAC,KAAK,mCAAI,EAAE,CAAC,UAAE;AACxD,CAAC;AAzBD,oDAyBC","sourcesContent":["import type { Faro } from '../sdk';\nimport { VERSION } from '../version';\n\nimport type { Meta } from './types';\n\nexport function registerInitialMetas(faro: Faro): void {\n const initial: Meta = {\n sdk: {\n version: VERSION,\n },\n };\n\n const session = faro.config.sessionTracking?.session;\n if (session) {\n faro.api.setSession(session);\n }\n\n if (faro.config.app) {\n initial.app = faro.config.app;\n }\n\n if (faro.config.user) {\n initial.user = faro.config.user;\n }\n\n if (faro.config.view) {\n initial.view = faro.config.view;\n }\n\n faro.metas.add(initial, ...(faro.config.metas ?? []));\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.EVENT_SESSION_EXTEND = exports.EVENT_SESSION_RESUME = exports.EVENT_SESSION_START = exports.EVENT_VIEW_CHANGED = exports.EVENT_NAVIGATION = exports.EVENT_CLICK = exports.Conventions = void 0;
|
|
3
|
+
exports.EVENT_ROUTE_CHANGE = exports.EVENT_SESSION_EXTEND = exports.EVENT_SESSION_RESUME = exports.EVENT_SESSION_START = exports.EVENT_VIEW_CHANGED = exports.EVENT_NAVIGATION = exports.EVENT_CLICK = exports.Conventions = void 0;
|
|
4
4
|
/**
|
|
5
5
|
* @deprecated The conventions object will be removed in a future version
|
|
6
6
|
*/
|
|
@@ -21,4 +21,5 @@ exports.EVENT_VIEW_CHANGED = 'view_changed';
|
|
|
21
21
|
exports.EVENT_SESSION_START = 'session_start';
|
|
22
22
|
exports.EVENT_SESSION_RESUME = 'session_resume';
|
|
23
23
|
exports.EVENT_SESSION_EXTEND = 'session_extend';
|
|
24
|
+
exports.EVENT_ROUTE_CHANGE = 'route_change';
|
|
24
25
|
//# sourceMappingURL=semantic.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"semantic.js","sourceRoot":"","sources":["../../../../src/semantic.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACU,QAAA,WAAW,GAAG;IACzB;;OAEG;IACH,UAAU,EAAE;QACV,KAAK,EAAE,OAAO;QACd,UAAU,EAAE,YAAY;QACxB,aAAa,EAAE,eAAe;QAC9B,YAAY,EAAE,cAAc;KAC7B;CACO,CAAC;AAEE,QAAA,WAAW,GAAG,OAAO,CAAC;AACtB,QAAA,gBAAgB,GAAG,YAAY,CAAC;AAChC,QAAA,kBAAkB,GAAG,cAAc,CAAC;AACpC,QAAA,mBAAmB,GAAG,eAAe,CAAC;AACtC,QAAA,oBAAoB,GAAG,gBAAgB,CAAC;AACxC,QAAA,oBAAoB,GAAG,gBAAgB,CAAC","sourcesContent":["/**\n * @deprecated The conventions object will be removed in a future version\n */\nexport const Conventions = {\n /**\n * @deprecated The event names object will be removed in a future version\n */\n EventNames: {\n CLICK: 'click',\n NAVIGATION: 'navigation',\n SESSION_START: 'session_start',\n VIEW_CHANGED: 'view_changed',\n },\n} as const;\n\nexport const EVENT_CLICK = 'click';\nexport const EVENT_NAVIGATION = 'navigation';\nexport const EVENT_VIEW_CHANGED = 'view_changed';\nexport const EVENT_SESSION_START = 'session_start';\nexport const EVENT_SESSION_RESUME = 'session_resume';\nexport const EVENT_SESSION_EXTEND = 'session_extend';\n"]}
|
|
1
|
+
{"version":3,"file":"semantic.js","sourceRoot":"","sources":["../../../../src/semantic.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACU,QAAA,WAAW,GAAG;IACzB;;OAEG;IACH,UAAU,EAAE;QACV,KAAK,EAAE,OAAO;QACd,UAAU,EAAE,YAAY;QACxB,aAAa,EAAE,eAAe;QAC9B,YAAY,EAAE,cAAc;KAC7B;CACO,CAAC;AAEE,QAAA,WAAW,GAAG,OAAO,CAAC;AACtB,QAAA,gBAAgB,GAAG,YAAY,CAAC;AAChC,QAAA,kBAAkB,GAAG,cAAc,CAAC;AACpC,QAAA,mBAAmB,GAAG,eAAe,CAAC;AACtC,QAAA,oBAAoB,GAAG,gBAAgB,CAAC;AACxC,QAAA,oBAAoB,GAAG,gBAAgB,CAAC;AACxC,QAAA,kBAAkB,GAAG,cAAc,CAAC","sourcesContent":["/**\n * @deprecated The conventions object will be removed in a future version\n */\nexport const Conventions = {\n /**\n * @deprecated The event names object will be removed in a future version\n */\n EventNames: {\n CLICK: 'click',\n NAVIGATION: 'navigation',\n SESSION_START: 'session_start',\n VIEW_CHANGED: 'view_changed',\n },\n} as const;\n\nexport const EVENT_CLICK = 'click';\nexport const EVENT_NAVIGATION = 'navigation';\nexport const EVENT_VIEW_CHANGED = 'view_changed';\nexport const EVENT_SESSION_START = 'session_start';\nexport const EVENT_SESSION_RESUME = 'session_resume';\nexport const EVENT_SESSION_EXTEND = 'session_extend';\nexport const EVENT_ROUTE_CHANGE = 'route_change';\n"]}
|
|
@@ -12,6 +12,7 @@ var __assign = (this && this.__assign) || function () {
|
|
|
12
12
|
};
|
|
13
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
14
|
exports.mockConfig = void 0;
|
|
15
|
+
var config_1 = require("../config");
|
|
15
16
|
var internalLogger_1 = require("../internalLogger");
|
|
16
17
|
var mockStacktraceParser_1 = require("./mockStacktraceParser");
|
|
17
18
|
function mockConfig(overrides) {
|
|
@@ -21,7 +22,7 @@ function mockConfig(overrides) {
|
|
|
21
22
|
version: '1.0.0',
|
|
22
23
|
}, batching: {
|
|
23
24
|
enabled: false,
|
|
24
|
-
}, dedupe: true, globalObjectKey: 'faro', internalLoggerLevel: internalLogger_1.defaultInternalLoggerLevel, instrumentations: [], isolate: true, metas: [], parseStacktrace: mockStacktraceParser_1.mockStacktraceParser, paused: false, preventGlobalExposure: true, transports: [], unpatchedConsole: console }, overrides);
|
|
25
|
+
}, dedupe: true, globalObjectKey: 'faro', internalLoggerLevel: internalLogger_1.defaultInternalLoggerLevel, instrumentations: [], isolate: true, metas: [], parseStacktrace: mockStacktraceParser_1.mockStacktraceParser, paused: false, preventGlobalExposure: true, transports: [], unpatchedConsole: console, sessionTracking: __assign({}, config_1.defaultBatchingConfig) }, overrides);
|
|
25
26
|
}
|
|
26
27
|
exports.mockConfig = mockConfig;
|
|
27
28
|
//# sourceMappingURL=mockConfig.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mockConfig.js","sourceRoot":"","sources":["../../../../../src/testUtils/mockConfig.ts"],"names":[],"mappings":";;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"mockConfig.js","sourceRoot":"","sources":["../../../../../src/testUtils/mockConfig.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,oCAA+D;AAC/D,oDAA+D;AAE/D,+DAA8D;AAE9D,SAAgB,UAAU,CAAC,SAA+B;IAA/B,0BAAA,EAAA,cAA+B;IACxD,kBACE,GAAG,EAAE;YACH,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,OAAO;SACjB,EACD,QAAQ,EAAE;YACR,OAAO,EAAE,KAAK;SACf,EACD,MAAM,EAAE,IAAI,EACZ,eAAe,EAAE,MAAM,EACvB,mBAAmB,EAAE,2CAA0B,EAC/C,gBAAgB,EAAE,EAAE,EACpB,OAAO,EAAE,IAAI,EACb,KAAK,EAAE,EAAE,EACT,eAAe,EAAE,2CAAoB,EACrC,MAAM,EAAE,KAAK,EACb,qBAAqB,EAAE,IAAI,EAC3B,UAAU,EAAE,EAAE,EACd,gBAAgB,EAAE,OAAO,EACzB,eAAe,eACV,8BAAqB,KAEvB,SAAS,EACZ;AACJ,CAAC;AAzBD,gCAyBC","sourcesContent":["import { type Config, defaultBatchingConfig } from '../config';\nimport { defaultInternalLoggerLevel } from '../internalLogger';\n\nimport { mockStacktraceParser } from './mockStacktraceParser';\n\nexport function mockConfig(overrides: Partial<Config> = {}): Config {\n return {\n app: {\n name: 'test',\n version: '1.0.0',\n },\n batching: {\n enabled: false,\n },\n dedupe: true,\n globalObjectKey: 'faro',\n internalLoggerLevel: defaultInternalLoggerLevel,\n instrumentations: [],\n isolate: true,\n metas: [],\n parseStacktrace: mockStacktraceParser,\n paused: false,\n preventGlobalExposure: true,\n transports: [],\n unpatchedConsole: console,\n sessionTracking: {\n ...defaultBatchingConfig,\n },\n ...overrides,\n };\n}\n"]}
|
|
@@ -108,7 +108,11 @@ function initializeTransports(unpatchedConsole, internalLogger, config, metas) {
|
|
|
108
108
|
}
|
|
109
109
|
};
|
|
110
110
|
var instantSend = function (item) {
|
|
111
|
-
var _a;
|
|
111
|
+
var _a, _b;
|
|
112
|
+
// prevent all beforeSend hooks being executed twice if batching is enabled.
|
|
113
|
+
if (((_a = config.batching) === null || _a === void 0 ? void 0 : _a.enabled) && transports.every(function (transport) { return transport.isBatched(); })) {
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
112
116
|
var filteredItem = applyBeforeSendHooks([item])[0];
|
|
113
117
|
if (filteredItem === undefined) {
|
|
114
118
|
return;
|
|
@@ -119,7 +123,7 @@ function initializeTransports(unpatchedConsole, internalLogger, config, metas) {
|
|
|
119
123
|
if (!transport.isBatched()) {
|
|
120
124
|
transport.send(filteredItem);
|
|
121
125
|
}
|
|
122
|
-
else if (!((
|
|
126
|
+
else if (!((_b = config.batching) === null || _b === void 0 ? void 0 : _b.enabled)) {
|
|
123
127
|
transport.send([filteredItem]);
|
|
124
128
|
}
|
|
125
129
|
}
|
|
@@ -144,11 +148,9 @@ function initializeTransports(unpatchedConsole, internalLogger, config, metas) {
|
|
|
144
148
|
if (paused) {
|
|
145
149
|
return;
|
|
146
150
|
}
|
|
147
|
-
if (
|
|
148
|
-
|
|
149
|
-
return;
|
|
151
|
+
if ((_a = config.batching) === null || _a === void 0 ? void 0 : _a.enabled) {
|
|
152
|
+
batchExecutor === null || batchExecutor === void 0 ? void 0 : batchExecutor.addItem(item);
|
|
150
153
|
}
|
|
151
|
-
batchExecutor === null || batchExecutor === void 0 ? void 0 : batchExecutor.addItem(item);
|
|
152
154
|
instantSend(item);
|
|
153
155
|
};
|
|
154
156
|
var getBeforeSendHooks = function () { return __spreadArray([], beforeSendHooks, true); };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initialize.js","sourceRoot":"","sources":["../../../../../src/transports/initialize.ts"],"names":[],"mappings":"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","sourcesContent":["import type { TransportItem } from '..';\nimport type { ExceptionEvent } from '../api';\nimport type { Config, Patterns } from '../config';\nimport type { InternalLogger } from '../internalLogger';\nimport type { Metas } from '../metas';\nimport type { UnpatchedConsole } from '../unpatchedConsole';\nimport { isString } from '../utils';\n\nimport { BatchExecutor } from './batchExecutor';\nimport { TransportItemType } from './const';\nimport type { BeforeSendHook, Transport, Transports } from './types';\n\nexport function shouldIgnoreEvent(patterns: Patterns, msg: string): boolean {\n return patterns.some((pattern) => {\n return isString(pattern) ? msg.includes(pattern) : !!msg.match(pattern);\n });\n}\n\nexport function createBeforeSendHookFromIgnorePatterns(patterns: Patterns): BeforeSendHook {\n return (item: TransportItem) => {\n if (item.type === TransportItemType.EXCEPTION && item.payload) {\n const evt = item.payload as ExceptionEvent;\n const msg = `${evt.type}: ${evt.value}`;\n\n if (shouldIgnoreEvent(patterns, msg)) {\n return null;\n }\n }\n\n return item;\n };\n}\n\nexport function initializeTransports(\n unpatchedConsole: UnpatchedConsole,\n internalLogger: InternalLogger,\n config: Config,\n metas: Metas\n): Transports {\n internalLogger.debug('Initializing transports');\n\n const transports: Transport[] = [];\n\n let paused = config.paused;\n\n let beforeSendHooks: BeforeSendHook[] = [];\n\n const add: Transports['add'] = (...newTransports) => {\n internalLogger.debug('Adding transports');\n\n newTransports.forEach((newTransport) => {\n internalLogger.debug(`Adding \"${newTransport.name}\" transport`);\n\n const exists = transports.some((existingTransport) => existingTransport === newTransport);\n\n if (exists) {\n internalLogger.warn(`Transport ${newTransport.name} is already added`);\n\n return;\n }\n\n newTransport.unpatchedConsole = unpatchedConsole;\n newTransport.internalLogger = internalLogger;\n newTransport.config = config;\n newTransport.metas = metas;\n\n transports.push(newTransport);\n });\n };\n\n const addBeforeSendHooks: Transports['addBeforeSendHooks'] = (...newBeforeSendHooks) => {\n internalLogger.debug('Adding beforeSendHooks\\n', beforeSendHooks);\n\n newBeforeSendHooks.forEach((beforeSendHook) => {\n if (beforeSendHook) {\n beforeSendHooks.push(beforeSendHook);\n }\n });\n };\n\n const addIgnoreErrorsPatterns: Transports['addIgnoreErrorsPatterns'] = (...ignoreErrorsPatterns) => {\n internalLogger.debug('Adding ignoreErrorsPatterns\\n', ignoreErrorsPatterns);\n\n ignoreErrorsPatterns.forEach((ignoreErrorsPattern) => {\n if (ignoreErrorsPattern) {\n beforeSendHooks.push(createBeforeSendHookFromIgnorePatterns(ignoreErrorsPattern));\n }\n });\n };\n\n const applyBeforeSendHooks = (items: TransportItem[]): TransportItem[] => {\n let filteredItems = items;\n for (const hook of beforeSendHooks) {\n const modified = filteredItems.map(hook).filter(Boolean) as TransportItem[];\n\n if (modified.length === 0) {\n return [];\n }\n\n filteredItems = modified;\n }\n return filteredItems;\n };\n\n const batchedSend = (items: TransportItem[]) => {\n const filteredItems = applyBeforeSendHooks(items);\n\n if (filteredItems.length === 0) {\n return;\n }\n\n for (const transport of transports) {\n internalLogger.debug(`Transporting item using ${transport.name}\\n`, filteredItems);\n if (transport.isBatched()) {\n transport.send(filteredItems);\n }\n }\n };\n\n const instantSend = (item: TransportItem) => {\n const [filteredItem] = applyBeforeSendHooks([item]);\n\n if (filteredItem === undefined) {\n return;\n }\n\n for (const transport of transports) {\n internalLogger.debug(`Transporting item using ${transport.name}\\n`, filteredItem);\n if (!transport.isBatched()) {\n transport.send(filteredItem);\n } else if (!config.batching?.enabled) {\n transport.send([filteredItem]);\n }\n }\n };\n\n let batchExecutor: BatchExecutor | undefined;\n\n if (config.batching?.enabled) {\n batchExecutor = new BatchExecutor(batchedSend, {\n sendTimeout: config.batching.sendTimeout,\n itemLimit: config.batching.itemLimit,\n paused,\n });\n }\n\n // Send a signal to the appropriate transports\n //\n // 1. If SDK is paused, early return\n // 2. If batching is not enabled send the signal to all transports\n // instantly.\n // 3i. If batching is enabled, enqueue the signal\n // 3ii. Send the signal instantly to all un-batched transports\n const execute: Transports['execute'] = (item) => {\n if (paused) {\n return;\n }\n\n if (!config.batching?.enabled) {\n instantSend(item);\n return;\n }\n\n batchExecutor?.addItem(item);\n instantSend(item);\n };\n\n const getBeforeSendHooks: Transports['getBeforeSendHooks'] = () => [...beforeSendHooks];\n\n const isPaused: Transports['isPaused'] = () => paused;\n\n const pause: Transports['pause'] = () => {\n internalLogger.debug('Pausing transports');\n batchExecutor?.pause();\n\n paused = true;\n };\n\n const remove: Transports['remove'] = (...transportsToRemove) => {\n internalLogger.debug('Removing transports');\n\n transportsToRemove.forEach((transportToRemove) => {\n internalLogger.debug(`Removing \"${transportToRemove.name}\" transport`);\n\n const existingTransportIndex = transports.indexOf(transportToRemove);\n\n if (existingTransportIndex === -1) {\n internalLogger.warn(`Transport \"${transportToRemove.name}\" is not added`);\n\n return;\n }\n\n transports.splice(existingTransportIndex, 1);\n });\n };\n\n const removeBeforeSendHooks: Transports['removeBeforeSendHooks'] = (...beforeSendHooksToRemove) => {\n beforeSendHooks.filter((beforeSendHook) => !beforeSendHooksToRemove.includes(beforeSendHook));\n };\n\n const unpause: Transports['unpause'] = () => {\n internalLogger.debug('Unpausing transports');\n batchExecutor?.start();\n\n paused = false;\n };\n\n return {\n add,\n addBeforeSendHooks,\n addIgnoreErrorsPatterns,\n getBeforeSendHooks,\n execute,\n isPaused,\n pause,\n remove,\n removeBeforeSendHooks,\n get transports() {\n return [...transports];\n },\n unpause,\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"initialize.js","sourceRoot":"","sources":["../../../../../src/transports/initialize.ts"],"names":[],"mappings":"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","sourcesContent":["import type { TransportItem } from '..';\nimport type { ExceptionEvent } from '../api';\nimport type { Config, Patterns } from '../config';\nimport type { InternalLogger } from '../internalLogger';\nimport type { Metas } from '../metas';\nimport type { UnpatchedConsole } from '../unpatchedConsole';\nimport { isString } from '../utils';\n\nimport { BatchExecutor } from './batchExecutor';\nimport { TransportItemType } from './const';\nimport type { BeforeSendHook, Transport, Transports } from './types';\n\nexport function shouldIgnoreEvent(patterns: Patterns, msg: string): boolean {\n return patterns.some((pattern) => {\n return isString(pattern) ? msg.includes(pattern) : !!msg.match(pattern);\n });\n}\n\nexport function createBeforeSendHookFromIgnorePatterns(patterns: Patterns): BeforeSendHook {\n return (item: TransportItem) => {\n if (item.type === TransportItemType.EXCEPTION && item.payload) {\n const evt = item.payload as ExceptionEvent;\n const msg = `${evt.type}: ${evt.value}`;\n\n if (shouldIgnoreEvent(patterns, msg)) {\n return null;\n }\n }\n\n return item;\n };\n}\n\nexport function initializeTransports(\n unpatchedConsole: UnpatchedConsole,\n internalLogger: InternalLogger,\n config: Config,\n metas: Metas\n): Transports {\n internalLogger.debug('Initializing transports');\n\n const transports: Transport[] = [];\n\n let paused = config.paused;\n\n let beforeSendHooks: BeforeSendHook[] = [];\n\n const add: Transports['add'] = (...newTransports) => {\n internalLogger.debug('Adding transports');\n\n newTransports.forEach((newTransport) => {\n internalLogger.debug(`Adding \"${newTransport.name}\" transport`);\n\n const exists = transports.some((existingTransport) => existingTransport === newTransport);\n\n if (exists) {\n internalLogger.warn(`Transport ${newTransport.name} is already added`);\n\n return;\n }\n\n newTransport.unpatchedConsole = unpatchedConsole;\n newTransport.internalLogger = internalLogger;\n newTransport.config = config;\n newTransport.metas = metas;\n\n transports.push(newTransport);\n });\n };\n\n const addBeforeSendHooks: Transports['addBeforeSendHooks'] = (...newBeforeSendHooks) => {\n internalLogger.debug('Adding beforeSendHooks\\n', beforeSendHooks);\n\n newBeforeSendHooks.forEach((beforeSendHook) => {\n if (beforeSendHook) {\n beforeSendHooks.push(beforeSendHook);\n }\n });\n };\n\n const addIgnoreErrorsPatterns: Transports['addIgnoreErrorsPatterns'] = (...ignoreErrorsPatterns) => {\n internalLogger.debug('Adding ignoreErrorsPatterns\\n', ignoreErrorsPatterns);\n\n ignoreErrorsPatterns.forEach((ignoreErrorsPattern) => {\n if (ignoreErrorsPattern) {\n beforeSendHooks.push(createBeforeSendHookFromIgnorePatterns(ignoreErrorsPattern));\n }\n });\n };\n\n const applyBeforeSendHooks = (items: TransportItem[]): TransportItem[] => {\n let filteredItems = items;\n for (const hook of beforeSendHooks) {\n const modified = filteredItems.map(hook).filter(Boolean) as TransportItem[];\n\n if (modified.length === 0) {\n return [];\n }\n\n filteredItems = modified;\n }\n return filteredItems;\n };\n\n const batchedSend = (items: TransportItem[]) => {\n const filteredItems = applyBeforeSendHooks(items);\n\n if (filteredItems.length === 0) {\n return;\n }\n\n for (const transport of transports) {\n internalLogger.debug(`Transporting item using ${transport.name}\\n`, filteredItems);\n if (transport.isBatched()) {\n transport.send(filteredItems);\n }\n }\n };\n\n const instantSend = (item: TransportItem) => {\n // prevent all beforeSend hooks being executed twice if batching is enabled.\n if (config.batching?.enabled && transports.every((transport) => transport.isBatched())) {\n return;\n }\n\n const [filteredItem] = applyBeforeSendHooks([item]);\n\n if (filteredItem === undefined) {\n return;\n }\n\n for (const transport of transports) {\n internalLogger.debug(`Transporting item using ${transport.name}\\n`, filteredItem);\n if (!transport.isBatched()) {\n transport.send(filteredItem);\n } else if (!config.batching?.enabled) {\n transport.send([filteredItem]);\n }\n }\n };\n\n let batchExecutor: BatchExecutor | undefined;\n\n if (config.batching?.enabled) {\n batchExecutor = new BatchExecutor(batchedSend, {\n sendTimeout: config.batching.sendTimeout,\n itemLimit: config.batching.itemLimit,\n paused,\n });\n }\n\n // Send a signal to the appropriate transports\n //\n // 1. If SDK is paused, early return\n // 2. If batching is not enabled send the signal to all transports\n // instantly.\n // 3i. If batching is enabled, enqueue the signal\n // 3ii. Send the signal instantly to all un-batched transports\n const execute: Transports['execute'] = (item) => {\n if (paused) {\n return;\n }\n\n if (config.batching?.enabled) {\n batchExecutor?.addItem(item);\n }\n\n instantSend(item);\n };\n\n const getBeforeSendHooks: Transports['getBeforeSendHooks'] = () => [...beforeSendHooks];\n\n const isPaused: Transports['isPaused'] = () => paused;\n\n const pause: Transports['pause'] = () => {\n internalLogger.debug('Pausing transports');\n batchExecutor?.pause();\n\n paused = true;\n };\n\n const remove: Transports['remove'] = (...transportsToRemove) => {\n internalLogger.debug('Removing transports');\n\n transportsToRemove.forEach((transportToRemove) => {\n internalLogger.debug(`Removing \"${transportToRemove.name}\" transport`);\n\n const existingTransportIndex = transports.indexOf(transportToRemove);\n\n if (existingTransportIndex === -1) {\n internalLogger.warn(`Transport \"${transportToRemove.name}\" is not added`);\n\n return;\n }\n\n transports.splice(existingTransportIndex, 1);\n });\n };\n\n const removeBeforeSendHooks: Transports['removeBeforeSendHooks'] = (...beforeSendHooksToRemove) => {\n beforeSendHooks.filter((beforeSendHook) => !beforeSendHooksToRemove.includes(beforeSendHook));\n };\n\n const unpause: Transports['unpause'] = () => {\n internalLogger.debug('Unpausing transports');\n batchExecutor?.start();\n\n paused = false;\n };\n\n return {\n add,\n addBeforeSendHooks,\n addIgnoreErrorsPatterns,\n getBeforeSendHooks,\n execute,\n isPaused,\n pause,\n remove,\n removeBeforeSendHooks,\n get transports() {\n return [...transports];\n },\n unpause,\n };\n}\n"]}
|
|
@@ -120,6 +120,39 @@ describe('transports', function () {
|
|
|
120
120
|
expect(transport.sentItems).toHaveLength(1);
|
|
121
121
|
expect(((_a = transport.sentItems[0]) === null || _a === void 0 ? void 0 : _a.payload).type).toEqual('NewType');
|
|
122
122
|
});
|
|
123
|
+
it('Only call beforeSentHooks once in batched mode.', function () {
|
|
124
|
+
var transport = new MockTransport();
|
|
125
|
+
var mockBeforeSend = jest.fn(function (item) { return item; });
|
|
126
|
+
var transports = (0, initialize_1.initializeFaro)((0, testUtils_1.mockConfig)({
|
|
127
|
+
transports: [transport],
|
|
128
|
+
beforeSend: mockBeforeSend,
|
|
129
|
+
batching: {
|
|
130
|
+
enabled: true,
|
|
131
|
+
sendTimeout: 1,
|
|
132
|
+
itemLimit: 1,
|
|
133
|
+
},
|
|
134
|
+
})).transports;
|
|
135
|
+
transports.execute(makeExceptionTransportItem('Error', 'ResizeObserver loop limit exceeded'));
|
|
136
|
+
expect(mockBeforeSend).toHaveBeenCalledTimes(1);
|
|
137
|
+
});
|
|
138
|
+
it('Call beforeSentHooks two times if in batched mode but with an existing transport which is not batched', function () {
|
|
139
|
+
var transport = new MockTransport();
|
|
140
|
+
var nonBachedTransport = new MockTransport();
|
|
141
|
+
nonBachedTransport.isBatched = function () { return false; };
|
|
142
|
+
nonBachedTransport.name = 'non-batched-transport';
|
|
143
|
+
var mockBeforeSend = jest.fn(function (item) { return item; });
|
|
144
|
+
var transports = (0, initialize_1.initializeFaro)((0, testUtils_1.mockConfig)({
|
|
145
|
+
transports: [transport, nonBachedTransport],
|
|
146
|
+
beforeSend: mockBeforeSend,
|
|
147
|
+
batching: {
|
|
148
|
+
enabled: true,
|
|
149
|
+
sendTimeout: 1,
|
|
150
|
+
itemLimit: 1,
|
|
151
|
+
},
|
|
152
|
+
})).transports;
|
|
153
|
+
transports.execute(makeExceptionTransportItem('Error', 'ResizeObserver loop limit exceeded'));
|
|
154
|
+
expect(mockBeforeSend).toHaveBeenCalledTimes(2);
|
|
155
|
+
});
|
|
123
156
|
});
|
|
124
157
|
describe('multiple transports of the same type', function () {
|
|
125
158
|
var transport1 = new MockTransport();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transports.test.js","sourceRoot":"","sources":["../../../../../src/transports/transports.test.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @jest-environment jsdom\n */\nimport type { ExceptionEvent } from '../api';\nimport { initializeFaro } from '../initialize';\nimport { mockConfig } from '../testUtils';\nimport { getCurrentTimestamp } from '../utils';\nimport { VERSION } from '../version';\n\nimport { BaseTransport } from './base';\nimport { TransportItemType } from './const';\nimport type { Transport, TransportItem } from './types';\n\nclass MockSingleTransport extends BaseTransport implements Transport {\n readonly name = '@grafana/transport-mock';\n readonly version = VERSION;\n\n sentItems: TransportItem[] = [];\n\n send(item: TransportItem): void | Promise<void> {\n this.sentItems.push(item);\n }\n}\n\nconst sendSingleMock = jest.spyOn(MockSingleTransport.prototype, 'send');\n\nclass MockTransport extends BaseTransport implements Transport {\n readonly name = '@grafana/transport-single-mock';\n readonly version = VERSION;\n\n sentItems: TransportItem[] = [];\n\n send(items: TransportItem[]): void | Promise<void> {\n this.sentItems.push(...items);\n }\n\n override isBatched(): boolean {\n return true;\n }\n}\n\nconst sendMock = jest.spyOn(MockTransport.prototype, 'send');\n\ndescribe('transports', () => {\n describe('config.ignoreErrors', () => {\n it('will filter out errors by string or regex', () => {\n const transport = new MockTransport();\n\n const { transports } = initializeFaro(\n mockConfig({\n transports: [transport],\n ignoreErrors: ['Error: ResizeObserver', /FetchError[:\\s\\w\\/]*pwc/],\n })\n );\n\n transports.execute(makeExceptionTransportItem('Error', 'ResizeObserver loop limit exceeded'));\n transports.execute(makeExceptionTransportItem('TypeError', '_.viz is undefined'));\n transports.execute(\n makeExceptionTransportItem(\n 'FetchError',\n '404 \\n Instantiating https://pwc.grafana.net/public/react-router-dom'\n )\n );\n transports.execute(\n makeExceptionTransportItem('FetchError', '404 \\n Instantiating https://pwc.grafana.net/public/@emotion/css')\n );\n expect(transport.sentItems).toHaveLength(1);\n expect((transport.sentItems[0]?.payload as ErrorEvent).type).toEqual('TypeError');\n });\n });\n\n describe('config.beforeSend', () => {\n it('will not send events that are rejected by beforeSend hook', () => {\n const transport = new MockTransport();\n const hookedItems: TransportItem[] = [];\n\n const { transports } = initializeFaro(\n mockConfig({\n transports: [transport],\n beforeSend: (item: TransportItem) => {\n hookedItems.push(item);\n\n if (item.type === TransportItemType.EXCEPTION && (item.payload as ErrorEvent).type === 'TypeError') {\n return null;\n }\n\n return item;\n },\n })\n );\n\n transports.execute(makeExceptionTransportItem('Error', 'ResizeObserver loop limit exceeded'));\n transports.execute(makeExceptionTransportItem('TypeError', '_.viz is undefined'));\n\n expect(transport.sentItems).toHaveLength(1);\n expect(hookedItems).toHaveLength(2);\n expect((transport.sentItems[0]?.payload as ErrorEvent).type).toEqual('Error');\n });\n\n it('events can be modified by beforeSend hook', () => {\n const transport = new MockTransport();\n\n const { transports } = initializeFaro(\n mockConfig({\n transports: [transport],\n beforeSend: (item: TransportItem) => {\n if (item.type === TransportItemType.EXCEPTION) {\n return {\n ...item,\n payload: {\n ...item.payload,\n type: 'NewType',\n },\n };\n }\n return item;\n },\n })\n );\n\n transports.execute(makeExceptionTransportItem('Error', 'ResizeObserver loop limit exceeded'));\n expect(transport.sentItems).toHaveLength(1);\n expect((transport.sentItems[0]?.payload as ErrorEvent).type).toEqual('NewType');\n });\n });\n\n describe('multiple transports of the same type', () => {\n const transport1 = new MockTransport();\n const transport2 = new MockTransport();\n\n const { transports } = initializeFaro(\n mockConfig({\n isolate: true,\n instrumentations: [],\n transports: [transport1, transport2],\n })\n );\n\n it('will all be added and receive events', () => {\n transports.execute(makeExceptionTransportItem('Error', 'ResizeObserver loop limit exceeded'));\n expect(transport1.sentItems).toHaveLength(1);\n expect(transport2.sentItems).toHaveLength(1);\n });\n\n it('one of them can be removed by instance', () => {\n transports.remove(transport1);\n transports.execute(makeExceptionTransportItem('Error', 'Kaboom'));\n expect(transport1.sentItems).toHaveLength(1);\n expect(transport2.sentItems).toHaveLength(2);\n });\n });\n\n describe('test batched transports and single item ones', () => {\n beforeAll(() => {\n jest.useFakeTimers();\n });\n\n beforeEach(() => {\n jest.clearAllMocks();\n });\n\n it('single item transports with batching enabled', () => {\n const transport = new MockSingleTransport();\n const { transports } = initializeFaro(\n mockConfig({\n isolate: true,\n instrumentations: [],\n transports: [transport],\n batching: {\n enabled: true,\n sendTimeout: 1,\n },\n })\n );\n\n const item1 = makeExceptionTransportItem('Error', 'Kaboom');\n const item2 = makeExceptionTransportItem('Error', 'Kaboom');\n\n transports.execute(item1);\n transports.execute(item2);\n jest.advanceTimersByTime(1);\n\n expect(sendSingleMock).toHaveBeenCalledTimes(2);\n expect(sendSingleMock.mock.calls).toEqual([[item1], [item2]]);\n });\n\n it('multiple item transports', () => {\n const transport = new MockTransport();\n const { transports } = initializeFaro(\n mockConfig({\n isolate: true,\n instrumentations: [],\n transports: [transport],\n batching: {\n enabled: true,\n sendTimeout: 1,\n },\n })\n );\n\n const item1 = makeExceptionTransportItem('Error', 'Kaboom');\n const item2 = makeExceptionTransportItem('Error', 'Kaboom');\n\n transports.execute(item1);\n transports.execute(item2);\n jest.advanceTimersByTime(1);\n\n expect(sendMock).toHaveBeenCalledWith([item1, item2]);\n });\n });\n});\n\nfunction makeExceptionTransportItem(type: string, value: string): TransportItem<ExceptionEvent> {\n return {\n type: TransportItemType.EXCEPTION,\n payload: {\n type,\n value,\n timestamp: getCurrentTimestamp(),\n stacktrace: {\n frames: [],\n },\n },\n meta: {},\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"transports.test.js","sourceRoot":"","sources":["../../../../../src/transports/transports.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,4CAA+C;AAC/C,0CAA0C;AAC1C,kCAA+C;AAC/C,sCAAqC;AAErC,+BAAuC;AACvC,iCAA4C;AAG5C;IAAkC,uCAAa;IAA/C;QAAA,qEASC;QARU,UAAI,GAAG,yBAAyB,CAAC;QACjC,aAAO,GAAG,iBAAO,CAAC;QAE3B,eAAS,GAAoB,EAAE,CAAC;;IAKlC,CAAC;IAHC,kCAAI,GAAJ,UAAK,IAAmB;QACtB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IACH,0BAAC;AAAD,CAAC,AATD,CAAkC,oBAAa,GAS9C;AAED,IAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AAEzE;IAA4B,iCAAa;IAAzC;QAAA,qEAaC;QAZU,UAAI,GAAG,gCAAgC,CAAC;QACxC,aAAO,GAAG,iBAAO,CAAC;QAE3B,eAAS,GAAoB,EAAE,CAAC;;IASlC,CAAC;IAPC,4BAAI,GAAJ,UAAK,KAAsB;;QACzB,CAAA,KAAA,IAAI,CAAC,SAAS,CAAA,CAAC,IAAI,WAAI,KAAK,EAAE;IAChC,CAAC;IAEQ,iCAAS,GAAlB;QACE,OAAO,IAAI,CAAC;IACd,CAAC;IACH,oBAAC;AAAD,CAAC,AAbD,CAA4B,oBAAa,GAaxC;AAED,IAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AAE7D,QAAQ,CAAC,YAAY,EAAE;IACrB,QAAQ,CAAC,qBAAqB,EAAE;QAC9B,EAAE,CAAC,2CAA2C,EAAE;;YAC9C,IAAM,SAAS,GAAG,IAAI,aAAa,EAAE,CAAC;YAE9B,IAAA,UAAU,GAAK,IAAA,2BAAc,EACnC,IAAA,sBAAU,EAAC;gBACT,UAAU,EAAE,CAAC,SAAS,CAAC;gBACvB,YAAY,EAAE,CAAC,uBAAuB,EAAE,yBAAyB,CAAC;aACnE,CAAC,CACH,WALiB,CAKhB;YAEF,UAAU,CAAC,OAAO,CAAC,0BAA0B,CAAC,OAAO,EAAE,oCAAoC,CAAC,CAAC,CAAC;YAC9F,UAAU,CAAC,OAAO,CAAC,0BAA0B,CAAC,WAAW,EAAE,oBAAoB,CAAC,CAAC,CAAC;YAClF,UAAU,CAAC,OAAO,CAChB,0BAA0B,CACxB,YAAY,EACZ,uEAAuE,CACxE,CACF,CAAC;YACF,UAAU,CAAC,OAAO,CAChB,0BAA0B,CAAC,YAAY,EAAE,mEAAmE,CAAC,CAC9G,CAAC;YACF,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC5C,MAAM,CAAC,CAAC,MAAA,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,0CAAE,OAAsB,CAAA,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QACpF,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,mBAAmB,EAAE;QAC5B,EAAE,CAAC,2DAA2D,EAAE;;YAC9D,IAAM,SAAS,GAAG,IAAI,aAAa,EAAE,CAAC;YACtC,IAAM,WAAW,GAAoB,EAAE,CAAC;YAEhC,IAAA,UAAU,GAAK,IAAA,2BAAc,EACnC,IAAA,sBAAU,EAAC;gBACT,UAAU,EAAE,CAAC,SAAS,CAAC;gBACvB,UAAU,EAAE,UAAC,IAAmB;oBAC9B,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAEvB,IAAI,IAAI,CAAC,IAAI,KAAK,yBAAiB,CAAC,SAAS,IAAK,IAAI,CAAC,OAAsB,CAAC,IAAI,KAAK,WAAW,EAAE;wBAClG,OAAO,IAAI,CAAC;qBACb;oBAED,OAAO,IAAI,CAAC;gBACd,CAAC;aACF,CAAC,CACH,WAbiB,CAahB;YAEF,UAAU,CAAC,OAAO,CAAC,0BAA0B,CAAC,OAAO,EAAE,oCAAoC,CAAC,CAAC,CAAC;YAC9F,UAAU,CAAC,OAAO,CAAC,0BAA0B,CAAC,WAAW,EAAE,oBAAoB,CAAC,CAAC,CAAC;YAElF,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC5C,MAAM,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACpC,MAAM,CAAC,CAAC,MAAA,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,0CAAE,OAAsB,CAAA,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAChF,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2CAA2C,EAAE;;YAC9C,IAAM,SAAS,GAAG,IAAI,aAAa,EAAE,CAAC;YAE9B,IAAA,UAAU,GAAK,IAAA,2BAAc,EACnC,IAAA,sBAAU,EAAC;gBACT,UAAU,EAAE,CAAC,SAAS,CAAC;gBACvB,UAAU,EAAE,UAAC,IAAmB;oBAC9B,IAAI,IAAI,CAAC,IAAI,KAAK,yBAAiB,CAAC,SAAS,EAAE;wBAC7C,6BACK,IAAI,KACP,OAAO,wBACF,IAAI,CAAC,OAAO,KACf,IAAI,EAAE,SAAS,OAEjB;qBACH;oBACD,OAAO,IAAI,CAAC;gBACd,CAAC;aACF,CAAC,CACH,WAhBiB,CAgBhB;YAEF,UAAU,CAAC,OAAO,CAAC,0BAA0B,CAAC,OAAO,EAAE,oCAAoC,CAAC,CAAC,CAAC;YAC9F,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC5C,MAAM,CAAC,CAAC,MAAA,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,0CAAE,OAAsB,CAAA,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAClF,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iDAAiD,EAAE;YACpD,IAAM,SAAS,GAAG,IAAI,aAAa,EAAE,CAAC;YAEtC,IAAM,cAAc,GAAG,IAAI,CAAC,EAAE,CAAC,UAAC,IAAI,IAAK,OAAA,IAAI,EAAJ,CAAI,CAAC,CAAC;YAEvC,IAAA,UAAU,GAAK,IAAA,2BAAc,EACnC,IAAA,sBAAU,EAAC;gBACT,UAAU,EAAE,CAAC,SAAS,CAAC;gBACvB,UAAU,EAAE,cAAc;gBAC1B,QAAQ,EAAE;oBACR,OAAO,EAAE,IAAI;oBACb,WAAW,EAAE,CAAC;oBACd,SAAS,EAAE,CAAC;iBACb;aACF,CAAC,CACH,WAViB,CAUhB;YAEF,UAAU,CAAC,OAAO,CAAC,0BAA0B,CAAC,OAAO,EAAE,oCAAoC,CAAC,CAAC,CAAC;YAC9F,MAAM,CAAC,cAAc,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uGAAuG,EAAE;YAC1G,IAAM,SAAS,GAAG,IAAI,aAAa,EAAE,CAAC;YAEtC,IAAM,kBAAkB,GAAG,IAAI,aAAa,EAAE,CAAC;YAC/C,kBAAkB,CAAC,SAAS,GAAG,cAAM,OAAA,KAAK,EAAL,CAAK,CAAC;YAC1C,kBAAkB,CAAC,IAAY,GAAG,uBAAuB,CAAC;YAE3D,IAAM,cAAc,GAAG,IAAI,CAAC,EAAE,CAAC,UAAC,IAAI,IAAK,OAAA,IAAI,EAAJ,CAAI,CAAC,CAAC;YAEvC,IAAA,UAAU,GAAK,IAAA,2BAAc,EACnC,IAAA,sBAAU,EAAC;gBACT,UAAU,EAAE,CAAC,SAAS,EAAE,kBAAkB,CAAC;gBAC3C,UAAU,EAAE,cAAc;gBAC1B,QAAQ,EAAE;oBACR,OAAO,EAAE,IAAI;oBACb,WAAW,EAAE,CAAC;oBACd,SAAS,EAAE,CAAC;iBACb;aACF,CAAC,CACH,WAViB,CAUhB;YAEF,UAAU,CAAC,OAAO,CAAC,0BAA0B,CAAC,OAAO,EAAE,oCAAoC,CAAC,CAAC,CAAC;YAC9F,MAAM,CAAC,cAAc,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,sCAAsC,EAAE;QAC/C,IAAM,UAAU,GAAG,IAAI,aAAa,EAAE,CAAC;QACvC,IAAM,UAAU,GAAG,IAAI,aAAa,EAAE,CAAC;QAE/B,IAAA,UAAU,GAAK,IAAA,2BAAc,EACnC,IAAA,sBAAU,EAAC;YACT,OAAO,EAAE,IAAI;YACb,gBAAgB,EAAE,EAAE;YACpB,UAAU,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC;SACrC,CAAC,CACH,WANiB,CAMhB;QAEF,EAAE,CAAC,sCAAsC,EAAE;YACzC,UAAU,CAAC,OAAO,CAAC,0BAA0B,CAAC,OAAO,EAAE,oCAAoC,CAAC,CAAC,CAAC;YAC9F,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC7C,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wCAAwC,EAAE;YAC3C,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAC9B,UAAU,CAAC,OAAO,CAAC,0BAA0B,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;YAClE,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC7C,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,8CAA8C,EAAE;QACvD,SAAS,CAAC;YACR,IAAI,CAAC,aAAa,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,UAAU,CAAC;YACT,IAAI,CAAC,aAAa,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8CAA8C,EAAE;YACjD,IAAM,SAAS,GAAG,IAAI,mBAAmB,EAAE,CAAC;YACpC,IAAA,UAAU,GAAK,IAAA,2BAAc,EACnC,IAAA,sBAAU,EAAC;gBACT,OAAO,EAAE,IAAI;gBACb,gBAAgB,EAAE,EAAE;gBACpB,UAAU,EAAE,CAAC,SAAS,CAAC;gBACvB,QAAQ,EAAE;oBACR,OAAO,EAAE,IAAI;oBACb,WAAW,EAAE,CAAC;iBACf;aACF,CAAC,CACH,WAViB,CAUhB;YAEF,IAAM,KAAK,GAAG,0BAA0B,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAC5D,IAAM,KAAK,GAAG,0BAA0B,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAE5D,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC1B,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC1B,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;YAE5B,MAAM,CAAC,cAAc,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YAChD,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0BAA0B,EAAE;YAC7B,IAAM,SAAS,GAAG,IAAI,aAAa,EAAE,CAAC;YAC9B,IAAA,UAAU,GAAK,IAAA,2BAAc,EACnC,IAAA,sBAAU,EAAC;gBACT,OAAO,EAAE,IAAI;gBACb,gBAAgB,EAAE,EAAE;gBACpB,UAAU,EAAE,CAAC,SAAS,CAAC;gBACvB,QAAQ,EAAE;oBACR,OAAO,EAAE,IAAI;oBACb,WAAW,EAAE,CAAC;iBACf;aACF,CAAC,CACH,WAViB,CAUhB;YAEF,IAAM,KAAK,GAAG,0BAA0B,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAC5D,IAAM,KAAK,GAAG,0BAA0B,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAE5D,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC1B,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC1B,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;YAE5B,MAAM,CAAC,QAAQ,CAAC,CAAC,oBAAoB,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,SAAS,0BAA0B,CAAC,IAAY,EAAE,KAAa;IAC7D,OAAO;QACL,IAAI,EAAE,yBAAiB,CAAC,SAAS;QACjC,OAAO,EAAE;YACP,IAAI,MAAA;YACJ,KAAK,OAAA;YACL,SAAS,EAAE,IAAA,2BAAmB,GAAE;YAChC,UAAU,EAAE;gBACV,MAAM,EAAE,EAAE;aACX;SACF;QACD,IAAI,EAAE,EAAE;KACT,CAAC;AACJ,CAAC","sourcesContent":["/**\n * @jest-environment jsdom\n */\nimport type { ExceptionEvent } from '../api';\nimport { initializeFaro } from '../initialize';\nimport { mockConfig } from '../testUtils';\nimport { getCurrentTimestamp } from '../utils';\nimport { VERSION } from '../version';\n\nimport { BaseTransport } from './base';\nimport { TransportItemType } from './const';\nimport type { Transport, TransportItem } from './types';\n\nclass MockSingleTransport extends BaseTransport implements Transport {\n readonly name = '@grafana/transport-mock';\n readonly version = VERSION;\n\n sentItems: TransportItem[] = [];\n\n send(item: TransportItem): void | Promise<void> {\n this.sentItems.push(item);\n }\n}\n\nconst sendSingleMock = jest.spyOn(MockSingleTransport.prototype, 'send');\n\nclass MockTransport extends BaseTransport implements Transport {\n readonly name = '@grafana/transport-single-mock';\n readonly version = VERSION;\n\n sentItems: TransportItem[] = [];\n\n send(items: TransportItem[]): void | Promise<void> {\n this.sentItems.push(...items);\n }\n\n override isBatched(): boolean {\n return true;\n }\n}\n\nconst sendMock = jest.spyOn(MockTransport.prototype, 'send');\n\ndescribe('transports', () => {\n describe('config.ignoreErrors', () => {\n it('will filter out errors by string or regex', () => {\n const transport = new MockTransport();\n\n const { transports } = initializeFaro(\n mockConfig({\n transports: [transport],\n ignoreErrors: ['Error: ResizeObserver', /FetchError[:\\s\\w\\/]*pwc/],\n })\n );\n\n transports.execute(makeExceptionTransportItem('Error', 'ResizeObserver loop limit exceeded'));\n transports.execute(makeExceptionTransportItem('TypeError', '_.viz is undefined'));\n transports.execute(\n makeExceptionTransportItem(\n 'FetchError',\n '404 \\n Instantiating https://pwc.grafana.net/public/react-router-dom'\n )\n );\n transports.execute(\n makeExceptionTransportItem('FetchError', '404 \\n Instantiating https://pwc.grafana.net/public/@emotion/css')\n );\n expect(transport.sentItems).toHaveLength(1);\n expect((transport.sentItems[0]?.payload as ErrorEvent).type).toEqual('TypeError');\n });\n });\n\n describe('config.beforeSend', () => {\n it('will not send events that are rejected by beforeSend hook', () => {\n const transport = new MockTransport();\n const hookedItems: TransportItem[] = [];\n\n const { transports } = initializeFaro(\n mockConfig({\n transports: [transport],\n beforeSend: (item: TransportItem) => {\n hookedItems.push(item);\n\n if (item.type === TransportItemType.EXCEPTION && (item.payload as ErrorEvent).type === 'TypeError') {\n return null;\n }\n\n return item;\n },\n })\n );\n\n transports.execute(makeExceptionTransportItem('Error', 'ResizeObserver loop limit exceeded'));\n transports.execute(makeExceptionTransportItem('TypeError', '_.viz is undefined'));\n\n expect(transport.sentItems).toHaveLength(1);\n expect(hookedItems).toHaveLength(2);\n expect((transport.sentItems[0]?.payload as ErrorEvent).type).toEqual('Error');\n });\n\n it('events can be modified by beforeSend hook', () => {\n const transport = new MockTransport();\n\n const { transports } = initializeFaro(\n mockConfig({\n transports: [transport],\n beforeSend: (item: TransportItem) => {\n if (item.type === TransportItemType.EXCEPTION) {\n return {\n ...item,\n payload: {\n ...item.payload,\n type: 'NewType',\n },\n };\n }\n return item;\n },\n })\n );\n\n transports.execute(makeExceptionTransportItem('Error', 'ResizeObserver loop limit exceeded'));\n expect(transport.sentItems).toHaveLength(1);\n expect((transport.sentItems[0]?.payload as ErrorEvent).type).toEqual('NewType');\n });\n\n it('Only call beforeSentHooks once in batched mode.', () => {\n const transport = new MockTransport();\n\n const mockBeforeSend = jest.fn((item) => item);\n\n const { transports } = initializeFaro(\n mockConfig({\n transports: [transport],\n beforeSend: mockBeforeSend,\n batching: {\n enabled: true,\n sendTimeout: 1,\n itemLimit: 1,\n },\n })\n );\n\n transports.execute(makeExceptionTransportItem('Error', 'ResizeObserver loop limit exceeded'));\n expect(mockBeforeSend).toHaveBeenCalledTimes(1);\n });\n\n it('Call beforeSentHooks two times if in batched mode but with an existing transport which is not batched', () => {\n const transport = new MockTransport();\n\n const nonBachedTransport = new MockTransport();\n nonBachedTransport.isBatched = () => false;\n (nonBachedTransport.name as any) = 'non-batched-transport';\n\n const mockBeforeSend = jest.fn((item) => item);\n\n const { transports } = initializeFaro(\n mockConfig({\n transports: [transport, nonBachedTransport],\n beforeSend: mockBeforeSend,\n batching: {\n enabled: true,\n sendTimeout: 1,\n itemLimit: 1,\n },\n })\n );\n\n transports.execute(makeExceptionTransportItem('Error', 'ResizeObserver loop limit exceeded'));\n expect(mockBeforeSend).toHaveBeenCalledTimes(2);\n });\n });\n\n describe('multiple transports of the same type', () => {\n const transport1 = new MockTransport();\n const transport2 = new MockTransport();\n\n const { transports } = initializeFaro(\n mockConfig({\n isolate: true,\n instrumentations: [],\n transports: [transport1, transport2],\n })\n );\n\n it('will all be added and receive events', () => {\n transports.execute(makeExceptionTransportItem('Error', 'ResizeObserver loop limit exceeded'));\n expect(transport1.sentItems).toHaveLength(1);\n expect(transport2.sentItems).toHaveLength(1);\n });\n\n it('one of them can be removed by instance', () => {\n transports.remove(transport1);\n transports.execute(makeExceptionTransportItem('Error', 'Kaboom'));\n expect(transport1.sentItems).toHaveLength(1);\n expect(transport2.sentItems).toHaveLength(2);\n });\n });\n\n describe('test batched transports and single item ones', () => {\n beforeAll(() => {\n jest.useFakeTimers();\n });\n\n beforeEach(() => {\n jest.clearAllMocks();\n });\n\n it('single item transports with batching enabled', () => {\n const transport = new MockSingleTransport();\n const { transports } = initializeFaro(\n mockConfig({\n isolate: true,\n instrumentations: [],\n transports: [transport],\n batching: {\n enabled: true,\n sendTimeout: 1,\n },\n })\n );\n\n const item1 = makeExceptionTransportItem('Error', 'Kaboom');\n const item2 = makeExceptionTransportItem('Error', 'Kaboom');\n\n transports.execute(item1);\n transports.execute(item2);\n jest.advanceTimersByTime(1);\n\n expect(sendSingleMock).toHaveBeenCalledTimes(2);\n expect(sendSingleMock.mock.calls).toEqual([[item1], [item2]]);\n });\n\n it('multiple item transports', () => {\n const transport = new MockTransport();\n const { transports } = initializeFaro(\n mockConfig({\n isolate: true,\n instrumentations: [],\n transports: [transport],\n batching: {\n enabled: true,\n sendTimeout: 1,\n },\n })\n );\n\n const item1 = makeExceptionTransportItem('Error', 'Kaboom');\n const item2 = makeExceptionTransportItem('Error', 'Kaboom');\n\n transports.execute(item1);\n transports.execute(item2);\n jest.advanceTimersByTime(1);\n\n expect(sendMock).toHaveBeenCalledWith([item1, item2]);\n });\n });\n});\n\nfunction makeExceptionTransportItem(type: string, value: string): TransportItem<ExceptionEvent> {\n return {\n type: TransportItemType.EXCEPTION,\n payload: {\n type,\n value,\n timestamp: getCurrentTimestamp(),\n stacktrace: {\n frames: [],\n },\n },\n meta: {},\n };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../../../src/version.ts"],"names":[],"mappings":";;;AAAA,sCAAsC;AACzB,QAAA,OAAO,GAAG,OAAO,CAAC","sourcesContent":["// auto-generated by bin/genVersion.ts\nexport const VERSION = '1.
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../../../src/version.ts"],"names":[],"mappings":";;;AAAA,sCAAsC;AACzB,QAAA,OAAO,GAAG,OAAO,CAAC","sourcesContent":["// auto-generated by bin/genVersion.ts\nexport const VERSION = '1.3.1';\n"]}
|
|
@@ -18,3 +18,4 @@ export declare const EVENT_VIEW_CHANGED = "view_changed";
|
|
|
18
18
|
export declare const EVENT_SESSION_START = "session_start";
|
|
19
19
|
export declare const EVENT_SESSION_RESUME = "session_resume";
|
|
20
20
|
export declare const EVENT_SESSION_EXTEND = "session_extend";
|
|
21
|
+
export declare const EVENT_ROUTE_CHANGE = "route_change";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type Config } from '../config';
|
|
2
2
|
export declare function mockConfig(overrides?: Partial<Config>): Config;
|
|
@@ -4,7 +4,7 @@ import type { Transport, TransportItem } from '../transports';
|
|
|
4
4
|
export declare class MockTransport extends BaseTransport implements Transport {
|
|
5
5
|
private ignoreURLs;
|
|
6
6
|
readonly name = "@grafana/transport-mock";
|
|
7
|
-
readonly version = "1.
|
|
7
|
+
readonly version = "1.3.1";
|
|
8
8
|
items: TransportItem[];
|
|
9
9
|
constructor(ignoreURLs?: Patterns);
|
|
10
10
|
send(items: TransportItem[]): void | Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const VERSION = "1.
|
|
1
|
+
export declare const VERSION = "1.3.1";
|
package/dist/types/semantic.d.ts
CHANGED
|
@@ -18,3 +18,4 @@ export declare const EVENT_VIEW_CHANGED = "view_changed";
|
|
|
18
18
|
export declare const EVENT_SESSION_START = "session_start";
|
|
19
19
|
export declare const EVENT_SESSION_RESUME = "session_resume";
|
|
20
20
|
export declare const EVENT_SESSION_EXTEND = "session_extend";
|
|
21
|
+
export declare const EVENT_ROUTE_CHANGE = "route_change";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type Config } from '../config';
|
|
2
2
|
export declare function mockConfig(overrides?: Partial<Config>): Config;
|
|
@@ -4,7 +4,7 @@ import type { Transport, TransportItem } from '../transports';
|
|
|
4
4
|
export declare class MockTransport extends BaseTransport implements Transport {
|
|
5
5
|
private ignoreURLs;
|
|
6
6
|
readonly name = "@grafana/transport-mock";
|
|
7
|
-
readonly version = "1.
|
|
7
|
+
readonly version = "1.3.1";
|
|
8
8
|
items: TransportItem[];
|
|
9
9
|
constructor(ignoreURLs?: Patterns);
|
|
10
10
|
send(items: TransportItem[]): void | Promise<void>;
|
package/dist/types/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const VERSION = "1.
|
|
1
|
+
export declare const VERSION = "1.3.1";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@grafana/faro-core",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.1",
|
|
4
4
|
"description": "Core package of Faro.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"observability",
|
|
@@ -52,7 +52,6 @@
|
|
|
52
52
|
},
|
|
53
53
|
"dependencies": {
|
|
54
54
|
"@opentelemetry/api": "^1.7.0",
|
|
55
|
-
"@opentelemetry/api-metrics": "^0.33.0",
|
|
56
55
|
"@opentelemetry/otlp-transformer": "^0.45.1",
|
|
57
56
|
"murmurhash-js": "^1.0.0"
|
|
58
57
|
},
|
|
@@ -62,5 +61,5 @@
|
|
|
62
61
|
"publishConfig": {
|
|
63
62
|
"access": "public"
|
|
64
63
|
},
|
|
65
|
-
"gitHead": "
|
|
64
|
+
"gitHead": "cc20a62fe70eabcfc02a1ac11e0a2b43d4d4528a"
|
|
66
65
|
}
|