@grafana/faro-core
Version:
Core package of Faro.
2 lines (1 loc) • 20.6 kB
JavaScript
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 s=e=>t(e,"null"),i=e=>t(e,"string"),a=e=>t(e,"number")&&!isNaN(e)||t(e,"bigint"),o=e=>!s(e)&&t(e,"object"),u=e=>t(e,"function"),l=e=>n(e,"Array"),c="undefined"!=typeof Event,g="undefined"!=typeof Error,d=e=>g&&r(e,Error),p="undefined"!=typeof Element,f="undefined"!=typeof Map;function b(e){return null==e||(l(e)||i(e)?0===e.length:!!o(e)&&0===Object.keys(e).length)}function m(e,n){if(e===n)return!0;if(t(e,"number")&&isNaN(e))return t(n,"number")&&isNaN(n);const r=l(e),s=l(n);if(r!==s)return!1;if(r&&s){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 i=o(e),a=o(n);if(i!==a)return!1;if(e&&n&&i&&a){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()}function h(e){return new Date(e).toISOString()}var E;e.LogLevel=void 0,(E=e.LogLevel||(e.LogLevel={})).TRACE="trace",E.DEBUG="debug",E.INFO="info",E.LOG="log",E.WARN="warn",E.ERROR="error";const y=e.LogLevel.LOG,I=[e.LogLevel.TRACE,e.LogLevel.DEBUG,e.LogLevel.INFO,e.LogLevel.LOG,e.LogLevel.WARN,e.LogLevel.ERROR];function T(){}const O="abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ0123456789";const L="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof self?self:void 0;function S(){const e=new WeakSet;return function(t,n){if(o(n)&&null!==n){if(e.has(n))return null;e.add(n)}return n}}function A(e={}){return JSON.stringify(null!=e?e:{},S())}function N(e={}){const t={};for(const[n,r]of Object.entries(e))t[n]=o(r)&&null!==r?A(r):String(r);return t}class j{constructor(){this.subscribers=[]}subscribe(e){return this.subscribers.push(e),{unsubscribe:()=>this.unsubscribe(e)}}notify(e){this.subscribers.forEach((t=>t(e)))}first(e){const t=this.subscribe((n=>{e(n),t.unsubscribe()}));return t}takeWhile(e){const t=new j,n=this.subscribe((r=>{e(r)?t.notify(r):n.unsubscribe()}));return t}unsubscribeAll(){this.subscribers=[]}unsubscribe(e){this.subscribers=this.subscribers.filter((t=>t!==e))}}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=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=[]}}function x(e,t,n,r){var s;t.debug("Initializing transports");const i=[];let a=n.paused,o=[];const u=e=>{let t=e;for(const e of o){const n=t.map(e).filter(Boolean);if(0===n.length)return[];t=n}return t},l=e=>{const n=u(e);if(0!==n.length)for(const e of i)t.debug(`Transporting item using ${e.name}\n`,n),e.isBatched()&&e.send(n)};let c;(null===(s=n.batching)||void 0===s?void 0:s.enabled)&&(c=new R(l,{sendTimeout:n.batching.sendTimeout,itemLimit:n.batching.itemLimit,paused:a}));return{add:(...s)=>{t.debug("Adding transports"),s.forEach((s=>{t.debug(`Adding "${s.name}" transport`);i.some((e=>e===s))?t.warn(`Transport ${s.name} is already added`):(s.unpatchedConsole=e,s.internalLogger=t,s.config=n,s.metas=r,i.push(s))}))},addBeforeSendHooks:(...e)=>{t.debug("Adding beforeSendHooks\n",o),e.forEach((e=>{e&&o.push(e)}))},getBeforeSendHooks:()=>[...o],execute:e=>{var r;a||((null===(r=n.batching)||void 0===r?void 0:r.enabled)&&(null==c||c.addItem(e)),(e=>{var r,s;if((null===(r=n.batching)||void 0===r?void 0:r.enabled)&&i.every((e=>e.isBatched())))return;const[a]=u([e]);if(void 0!==a)for(const e of i)t.debug(`Transporting item using ${e.name}\n`,a),e.isBatched()?(null===(s=n.batching)||void 0===s?void 0:s.enabled)||e.send([a]):e.send(a)})(e))},isPaused:()=>a,pause:()=>{t.debug("Pausing transports"),null==c||c.pause(),a=!0},remove:(...e)=>{t.debug("Removing transports"),e.forEach((e=>{t.debug(`Removing "${e.name}" transport`);const n=i.indexOf(e);-1!==n?i.splice(n,1):t.warn(`Transport "${e.name}" is not added`)}))},removeBeforeSendHooks:(...e)=>{o.filter((t=>!e.includes(t)))},get transports(){return[...i]},unpause:()=>{t.debug("Unpausing transports"),null==c||c.start(),a=!1}}}var _;e.InternalLoggerLevel=void 0,(_=e.InternalLoggerLevel||(e.InternalLoggerLevel={}))[_.OFF=0]="OFF",_[_.ERROR=1]="ERROR",_[_.WARN=2]="WARN",_[_.INFO=3]="INFO",_[_.VERBOSE=4]="VERBOSE";const w={debug:T,error:T,info:T,prefix:"Faro",warn:T},C=e.InternalLoggerLevel.ERROR,k=Object.assign({},console);let B=k;function M(e){var t;return B=null!==(t=e.unpatchedConsole)&&void 0!==t?t:B,B}function P(t=k,n=C){const r=w;return n>e.InternalLoggerLevel.OFF&&(r.error=n>=e.InternalLoggerLevel.ERROR?function(...e){t.error(`${r.prefix}\n`,...e)}:T,r.warn=n>=e.InternalLoggerLevel.WARN?function(...e){t.warn(`${r.prefix}\n`,...e)}:T,r.info=n>=e.InternalLoggerLevel.INFO?function(...e){t.info(`${r.prefix}\n`,...e)}:T,r.debug=n>=e.InternalLoggerLevel.VERBOSE?function(...e){t.debug(`${r.prefix}\n`,...e)}:T),r}let D=w;function F(e,t){return D=P(e,t.internalLoggerLevel),D}class G{constructor(){this.unpatchedConsole=k,this.internalLogger=w,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)}}var V;e.TransportItemType=void 0,(V=e.TransportItemType||(e.TransportItemType={})).EXCEPTION="exception",V.LOG="log",V.MEASUREMENT="measurement",V.TRACE="trace",V.EVENT="event";const $={[e.TransportItemType.EXCEPTION]:"exceptions",[e.TransportItemType.LOG]:"logs",[e.TransportItemType.MEASUREMENT]:"measurements",[e.TransportItemType.TRACE]:"traces",[e.TransportItemType.EVENT]:"events"};function z(e,t){var n,r;if(void 0===t)return e;if(void 0===e)return{resourceSpans:t};const s=null===(n=e.resourceSpans)||void 0===n?void 0:n[0];if(void 0===s)return e;const i=(null==s?void 0:s.scopeSpans)||[],a=(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({},s),{scopeSpans:[...i,...a]})]})}const U="user-action-start",W="user-action-end",K="user-action-cancel";const H="Error";let X;function J({internalLogger:t,config:n,metas:r,transports:a,tracesApi:u,actionBuffer:c,getMessage:g}){var p;t.debug("Initializing exceptions API");let f=null;X=null!==(p=n.parseStacktrace)&&void 0!==p?p:X;const E=e=>{t.debug("Changing stacktrace parser"),X=null!=e?e:X},{ignoreErrors:y=[]}=n;return E(n.parseStacktrace),{changeStacktraceParser:E,getStacktraceParser:()=>X,pushError:(p,{skipDedupe:E,stackFrames:I,type:T,context:O,spanContext:L,timestampOverwriteMs:S}={})=>{if(!function(e,t){const{message:n,name:r,stack:s}=t;return a=e,o=n+" "+r+" "+s,a.some((e=>i(e)?o.includes(e):!!o.match(e)));var a,o}(y,p))try{const i=N(Object.assign(Object.assign({},function(e){let t=e.cause;d(t)?t=e.cause.toString():null!==t&&(o(e.cause)||l(e.cause))?t=A(e.cause):null!=t&&(t=e.cause.toString());return null==t?{}:{cause:t}}(p)),null!=O?O:{})),y={meta:r.value,payload:{type:T||p.name||H,value:p.message,timestamp:S?h(S):v(),trace:L?{trace_id:L.traceId,span_id:L.spanId}:u.getTraceContext(),context:b(i)?void 0:i},type:e.TransportItemType.EXCEPTION};(null==(I=null!=I?I:p.stack?null==X?void 0:X(p).frames:void 0)?void 0:I.length)&&(y.payload.stacktrace={frames:I});const j={type:y.payload.type,value:y.payload.value,stackTrace:y.payload.stacktrace,context:y.payload.context};if(!E&&n.dedupe&&!s(f)&&m(j,f))return void t.debug("Skipping error push because it is the same as the last one\n",y.payload);f=j,t.debug("Pushing exception\n",y);const R=g();R&&R.type===U?c.addItem(y):a.execute(y)}catch(e){t.error("Error pushing event",e)}}}}const Y=e=>e.map((e=>{try{return String(e)}catch(e){return""}})).join(" ");class q{constructor(){this.buffer=[]}addItem(e){this.buffer.push(e)}flushBuffer(e){if(u(e))for(const t of this.buffer)e(t);this.buffer.length=0}size(){return this.buffer.length}}function Q({apiMessageBus:t,transports:n,config:r}){const s=new q,i=r.trackUserActionsExcludeItem;let a;t.subscribe((t=>{if(t.type!==U){if(t.type===W){const{id:r,name:o}=t;return s.flushBuffer((t=>{if(function(t,n){return(null==n?void 0:n(t))||t.type===e.TransportItemType.MEASUREMENT&&"web-vitals"===t.payload.type}(t,i))return void n.execute(t);const s=Object.assign(Object.assign({},t),{payload:Object.assign(Object.assign({},t.payload),{action:{parentId:r,name:o}})});n.execute(s)})),void(a=void 0)}t.type===K&&(a=void 0,s.flushBuffer((e=>{n.execute(e)})))}else a=t}));return{actionBuffer:s,getMessage:()=>a}}const Z=new j;function ee(t,n,r,a,o){n.debug("Initializing API");const{actionBuffer:u,getMessage:l}=Q({apiMessageBus:Z,transports:o,config:r}),c=function(t,n,r,s,i){let a;return n.debug("Initializing traces API"),{getOTEL:()=>a,getTraceContext:()=>{const e=null==a?void 0:a.trace.getSpanContext(a.context.active());return e?{trace_id:e.traceId,span_id:e.spanId}:void 0},initOTEL:(e,t)=>{n.debug("Initializing OpenTelemetry"),a={trace:e,context:t}},isOTELInitialized:()=>!!a,pushTraces:t=>{try{const r={type:e.TransportItemType.TRACE,payload:t,meta:s.value};n.debug("Pushing trace\n",r),i.execute(r)}catch(e){n.error("Error pushing trace\n",e)}}}}(0,n,0,a,o),g={unpatchedConsole:t,internalLogger:n,config:r,metas:a,transports:o,tracesApi:c,actionBuffer:u,getMessage:l};return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},c),J(g)),function({internalLogger:e,metas:t}){let n,r,s,a;e.debug("Initializing meta API");const o=e=>{r&&t.remove(r),r={user:e},t.add(r)},u=(e,r)=>{var s;const i=null==r?void 0:r.overrides,a=i?{overrides:Object.assign(Object.assign({},null===(s=null==n?void 0:n.session)||void 0===s?void 0:s.overrides),i)}:{};n&&t.remove(n),n={session:Object.assign(Object.assign({},b(e)?void 0:e),a)},t.add(n)},l=()=>t.value.session,c=()=>t.value.page;return{setUser:o,resetUser:o,setSession:u,resetSession:u,getSession:l,setView:(e,n)=>{var r;if((null==n?void 0:n.overrides)&&u(l(),{overrides:n.overrides}),(null===(r=null==s?void 0:s.view)||void 0===r?void 0:r.name)===(null==e?void 0:e.name))return;const i=s;s={view:e},t.add(s),i&&t.remove(i)},getView:()=>t.value.view,setPage:e=>{var n;const r=i(e)?Object.assign(Object.assign({},null!==(n=null==a?void 0:a.page)&&void 0!==n?n:c()),{id:e}):e;a&&t.remove(a),a={page:r},t.add(a)},getPage:c}}(g)),function({internalLogger:t,config:n,metas:r,transports:i,tracesApi:a,actionBuffer:o,getMessage:u}){var l;t.debug("Initializing logs API");let c=null;const g=null!==(l=n.logArgsSerializer)&&void 0!==l?l:Y;return{pushLog:(l,{context:d,level:p,skipDedupe:f,spanContext:E,timestampOverwriteMs:I}={})=>{try{const T=N(d),O={type:e.TransportItemType.LOG,payload:{message:g(l),level:null!=p?p:y,context:b(T)?void 0:T,timestamp:I?h(I):v(),trace:E?{trace_id:E.traceId,span_id:E.spanId}:a.getTraceContext()},meta:r.value},L={message:O.payload.message,level:O.payload.level,context:O.payload.context};if(!f&&n.dedupe&&!s(c)&&m(L,c))return void t.debug("Skipping log push because it is the same as the last one\n",O.payload);c=L,t.debug("Pushing log\n",O);const S=u();S&&S.type===U?o.addItem(O):i.execute(O)}catch(e){t.error("Error pushing log\n",e)}}}}(g)),function({internalLogger:t,config:n,metas:r,transports:i,tracesApi:a,actionBuffer:o,getMessage:u}){t.debug("Initializing measurements API");let l=null;return{pushMeasurement:(c,{skipDedupe:g,context:d,spanContext:p,timestampOverwriteMs:f}={})=>{try{const E=N(d),y={type:e.TransportItemType.MEASUREMENT,payload:Object.assign(Object.assign({},c),{trace:p?{trace_id:p.traceId,span_id:p.spanId}:a.getTraceContext(),timestamp:f?h(f):v(),context:b(E)?void 0:E}),meta:r.value},I={type:y.payload.type,values:y.payload.values,context:y.payload.context};if(!g&&n.dedupe&&!s(l)&&m(I,l))return void t.debug("Skipping measurement push because it is the same as the last one\n",y.payload);l=I,t.debug("Pushing measurement\n",y);const T=u();T&&T.type===U?o.addItem(y):i.execute(y)}catch(e){t.error("Error pushing measurement\n",e)}}}}(g)),function({internalLogger:t,config:n,metas:r,transports:i,tracesApi:a,actionBuffer:o,getMessage:u}){let l=null;return{pushEvent:(c,g,d,{skipDedupe:p,spanContext:f,timestampOverwriteMs:E,customPayloadTransformer:y=e=>e}={})=>{try{const I=N(g),T={meta:r.value,payload:y({name:c,domain:null!=d?d:n.eventDomain,attributes:b(I)?void 0:I,timestamp:E?h(E):v(),trace:f?{trace_id:f.traceId,span_id:f.spanId}:a.getTraceContext()}),type:e.TransportItemType.EVENT},O={name:T.payload.name,attributes:T.payload.attributes,domain:T.payload.domain};if(!p&&n.dedupe&&!s(l)&&m(O,l))return void t.debug("Skipping event push because it is the same as the last one\n",T.payload);l=O,t.debug("Pushing event\n",T);const L=u();L&&L.type===U?o.addItem(T):i.execute(T)}catch(e){t.error("Error pushing event",e)}}}}(g))}const te="1.14.3";const ne="_faroInternal";function re(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(L,ne,{configurable:!1,enumerable:!1,writable:!1,value:e}))}function se(){return ne in L}function ie(t,n,r,s,i,a,o){return n.debug("Initializing Faro"),e.faro={api:a,config:r,instrumentations:o,internalLogger:n,metas:s,pause:i.pause,transports:i,unpatchedConsole:t,unpause:i.unpause},re(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 L)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(L,e.config.globalObjectKey,{configurable:!1,writable:!1,value:e})}}(e.faro),e.faro}e.faro={};return e.BaseExtension=G,e.BaseInstrumentation=class extends G{constructor(){super(...arguments),this.api={},this.transports={}}},e.BaseTransport=class extends G{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_OVERRIDES_SERVICE_NAME="service_name_override",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.Observable=j,e.USER_ACTION_CANCEL_MESSAGE_TYPE=K,e.USER_ACTION_END_MESSAGE_TYPE=W,e.USER_ACTION_START_MESSAGE_TYPE=U,e.VERSION=te,e.allLogLevels=I,e.apiMessageBus=Z,e.createInternalLogger=P,e.createPromiseBuffer=function(e){const{size:t,concurrency:n}=e,r=[];let s=0;const i=()=>{if(s<n&&r.length){const{producer:e,resolve:t,reject:n}=r.shift();s++,e().then((e=>{s--,i(),t(e)}),(e=>{s--,i(),n(e)}))}};return{add:e=>{if(r.length+s>=t)throw new Error("Task buffer full");return new Promise(((t,n)=>{r.push({producer:e,resolve:t,reject:n}),i()}))}}},e.dateNow=function(){return Date.now()},e.deepEqual=m,e.defaultBatchingConfig={enabled:!0,sendTimeout:250,itemLimit:50},e.defaultErrorArgsSerializer=e=>e.map((e=>o(e)?A(e):String(e))).join(" "),e.defaultExceptionType=H,e.defaultGlobalObjectKey="faro",e.defaultInternalLoggerLevel=C,e.defaultLogArgsSerializer=Y,e.defaultLogLevel=y,e.defaultUnpatchedConsole=k,e.genShortID=function(e=10){return Array.from(Array(e)).map((()=>O[Math.floor(59*Math.random())])).join("")},e.getCircularDependencyReplacer=S,e.getCurrentTimestamp=v,e.getInternalFaroFromGlobalObject=function(){return L[ne]},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=$[t.type],s=n[r];n=Object.assign(Object.assign({},n),{[r]:void 0===s?[t.payload]:[...s,t.payload]});break;case e.TransportItemType.TRACE:n=Object.assign(Object.assign({},n),{traces:z(n.traces,t.payload.resourceSpans)})}})),n},e.globalObject=L,e.initializeFaro=function(e){const t=M(e),n=F(t,e);if(se()&&!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){let n=[],r=[];const s=()=>n.reduce(((e,t)=>Object.assign(e,u(t)?t():t)),{}),i=()=>{if(r.length){const e=s();r.forEach((t=>t(e)))}};return{add:(...e)=>{t.debug("Adding metas\n",e),n.push(...e),i()},remove:(...e)=>{t.debug("Removing metas\n",e),n=n.filter((t=>!e.includes(t))),i()},addListener:e=>{t.debug("Adding metas listener\n",e),r.push(e)},removeListener:e=>{t.debug("Removing metas listener\n",e),r=r.filter((t=>t!==e))},get value(){return s()}}}(0,n),s=x(t,n,e,r),i=ee(t,n,e,r,s),a=function(e,t,n,r,s,i){t.debug("Initializing instrumentations");const a=[];return{add:(...o)=>{t.debug("Adding instrumentations"),o.forEach((o=>{t.debug(`Adding "${o.name}" instrumentation`),a.some((e=>e.name===o.name))?t.warn(`Instrumentation ${o.name} is already added`):(o.unpatchedConsole=e,o.internalLogger=t,o.config=n,o.metas=r,o.transports=s,o.api=i,a.push(o),o.initialize())}))},get instrumentations(){return[...a]},remove:(...e)=>{t.debug("Removing instrumentations"),e.forEach((e=>{var n,r;t.debug(`Removing "${e.name}" instrumentation`);const s=a.reduce(((t,n,r)=>null===t&&n.name===e.name?r:null),null);s?(null===(r=(n=a[s]).destroy)||void 0===r||r.call(n),a.splice(s,1)):t.warn(`Instrumentation "${e.name}" is not added`)}))}}}(t,n,e,r,s,i),o=ie(t,n,e,r,s,i,a);return function(e){var t,n;const r={sdk:{version:te},app:{bundleId:e.config.app.name&&(s=e.config.app.name,null==L?void 0:L[`__faroBundleId_${s}`])}};var s;const i=null===(t=e.config.sessionTracking)||void 0===t?void 0:t.session;i&&e.api.setSession(i),e.config.app&&(r.app=Object.assign(Object.assign({},e.config.app),r.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:[])}(o),function(e){e.transports.add(...e.config.transports),e.transports.addBeforeSendHooks(e.config.beforeSend)}(o),function(e){e.instrumentations.add(...e.config.instrumentations)}(o),o},e.internalGlobalObjectKey=ne,e.isArray=l,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.isEmpty=b,e.isError=d,e.isErrorDefined=g,e.isErrorEvent=e=>n(e,"ErrorEvent"),e.isEvent=e=>c&&r(e,Event),e.isEventDefined=c,e.isFunction=u,e.isInstanceOf=r,e.isInt=e=>a(e)&&Number.isInteger(e),e.isInternalFaroOnGlobalObject=se,e.isMap=e=>f&&r(e,Map),e.isMapDefined=f,e.isNull=s,e.isNumber=a,e.isObject=o,e.isPrimitive=e=>!o(e)&&!u(e),e.isRegExp=e=>n(e,"RegExp"),e.isString=i,e.isSymbol=e=>t(e,"symbol"),e.isSyntheticEvent=e=>o(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=e=>t(e,"undefined"),e.merge=function(...e){const t=new j;return e.forEach((e=>{e.subscribe((e=>{t.notify(e)}))})),{subscribe:t.subscribe.bind(t),takeWhile:t.takeWhile.bind(t),first:t.first.bind(t),notify:t.notify.bind(t),unsubscribeAll:()=>{e.forEach((e=>{e.unsubscribeAll()}))}}},e.noop=T,e.setInternalFaroOnGlobalObject=re,e.stringifyExternalJson=A,e.stringifyObjectValues=N,e.transportItemTypeToBodyKey=$,e.unknownString="unknown",e}({});