{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:////var/lib/jenkins/workspace/ent-rum_apm-agent-rum-mbp_master/src/github.com/elastic/apm-agent-rum-js/node_modules/error-stack-parser/error-stack-parser.js","webpack:////var/lib/jenkins/workspace/ent-rum_apm-agent-rum-mbp_master/src/github.com/elastic/apm-agent-rum-js/node_modules/stackframe/stackframe.js","webpack:////var/lib/jenkins/workspace/ent-rum_apm-agent-rum-mbp_master/src/github.com/elastic/apm-agent-rum-js/node_modules/promise-polyfill/src/finally.js","webpack:////var/lib/jenkins/workspace/ent-rum_apm-agent-rum-mbp_master/src/github.com/elastic/apm-agent-rum-js/node_modules/promise-polyfill/src/index.js","webpack:///.-core/dist/es/common/polyfills.js","webpack:///.-core/dist/es/common/utils.js","webpack:///.-core/dist/es/common/patching/patch-utils.js","webpack:///.-core/dist/es/common/constants.js","webpack:///.-core/dist/es/common/patching/xhr-patch.js","webpack:///.-core/dist/es/common/patching/event-target-patch.js","webpack:///.-core/dist/es/common/event-handler.js","webpack:///.-core/dist/es/common/patching/index.js","webpack:///.-core/dist/es/common/patching/fetch-patch.js","webpack:///.-core/dist/es/common/patching/history-patch.js","webpack:///.-core/dist/es/state.js","webpack:///.-core/dist/es/bootstrap.js","webpack:///.-core/dist/es/error-logging/stack-trace.js","webpack:///.-core/dist/es/common/url.js","webpack:///.-core/dist/es/common/context.js","webpack:///.-core/dist/es/common/truncate.js","webpack:///.-core/dist/es/error-logging/error-logging.js","webpack:///.-core/dist/es/common/queue.js","webpack:///.-core/dist/es/common/ndjson.js","webpack:///.-core/dist/es/performance-monitoring/span-base.js","webpack:///.-core/dist/es/performance-monitoring/span.js","webpack:///.-core/dist/es/performance-monitoring/capture-navigation.js","webpack:///.-core/dist/es/common/compress.js","webpack:///.-core/dist/es/common/apm-server.js","webpack:///.-core/dist/es/common/throttle.js","webpack:///.-core/dist/es/common/config-service.js","webpack:///.-core/dist/es/common/service-factory.js","webpack:///.-core/dist/es/common/logging-service.js","webpack:///.-core/dist/es/performance-monitoring/performance-monitoring.js","webpack:///.-core/dist/es/performance-monitoring/breakdown.js","webpack:///.-core/dist/es/performance-monitoring/transaction.js","webpack:///.-core/dist/es/performance-monitoring/metrics.js","webpack:///.-core/dist/es/performance-monitoring/transaction-service.js","webpack:///.-core/dist/es/index.js","webpack:///.-core/dist/es/performance-monitoring/index.js","webpack:///.-core/dist/es/error-logging/index.js","webpack:///./src/apm-base.js","webpack:///.-core/dist/es/common/instrument.js","webpack:///./src/index.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","StackFrame","FIREFOX_SAFARI_STACK_REGEXP","CHROME_IE_STACK_REGEXP","SAFARI_NATIVE_CODE_REGEXP","_map","array","fn","thisArg","Array","map","output","length","_filter","filter","push","parse","error","stacktrace","this","parseOpera","stack","match","parseV8OrIE","parseFFOrSafari","Error","extractLocation","urlLike","indexOf","parts","exec","replace","undefined","split","line","tokens","slice","locationParts","pop","functionName","join","fileName","target","_indexOf","e","message","parseOpera9","parseOpera11","parseOpera10","lineRE","lines","result","len","argsRaw","functionCall","shift","args","_isNumber","isNaN","parseFloat","isFinite","lineNumber","columnNumber","source","setFunctionName","setArgs","setFileName","setLineNumber","setColumnNumber","setSource","getFunctionName","v","String","getArgs","toString","TypeError","getFileName","getLineNumber","Number","getColumnNumber","getSource","callback","constructor","then","resolve","reason","reject","setTimeoutFunc","setTimeout","isArray","x","Boolean","noop","Promise","_state","_handled","_value","_deferreds","doResolve","handle","self","deferred","_immediateFn","cb","onFulfilled","onRejected","ret","promise","newValue","finale","apply","arguments","_unhandledRejectionFn","Handler","done","ex","prom","all","arr","remaining","res","val","race","setImmediate","err","console","warn","local","isBrowser","window","PromisePollyfill","PERF","performance","byteToHex","substr","destination","Uint8Array","generateRandomId","buffer","hexOctets","_i","bytesToHex","crypto","getRandomValues","msCrypto","setRequestHeader","headers","append","checkSameOrigin","isSame","test","forEach","isPlatformSupported","Set","JSON","stringify","now","XMLHttpRequest","setLabel","obj","skey","removeInvalidChars","valueType","stripQueryStringFromUrl","url","isObject","baseExtend","dst","objs","deep","ii","keys","j","jj","src","getCurrentScript","document","currentScript","scripts","getElementsByTagName","sc","getElasticScript","extend","merge","isUndefined","getTime","time","getDuration","start","end","parseInt","scheduleMicroTask","isPerfTimelineSupported","getEntriesByType","isPerfTypeSupported","type","PerformanceObserver","supportedEntryTypes","globalState","fetchInProgress","apmSymbol","patchMethod","patchFn","proto","getPrototypeOf","delegate","patched","original","propertyDesc","delegateName","desc","getOwnPropertyDescriptor","writable","set","patchDelegate","XHR_IGNORE","XHR_SYNC","XHR_URL","XHR_METHOD","INVOKE","RESOURCE_INITIATOR_TYPES","PAGE_LOAD","TRANSACTION_TYPE_ORDER","patchXMLHttpRequest","XMLHttpRequestPrototype","openNative","sendNative","task","state","data","method","sync","status","addListener","_ref","readyState","invokeTask","scheduleTask","eventTypes","eventTypeSymbols","et","shouldInstrumentEvent","eventType","listenerFn","Element","EventHandler","observers","_proto","observe","_this","index","splice","sendOnly","obs","log","send","patchEventHandler","alreadyPatched","patchAll","event","fetch","Request","nativeFetch","input","init","request","fetchSelf","aborted","response","patchFetch","history","nativePushState","pushState","title","patchHistory","EventTarget","nativeAddEventListener","nativeRemoveEventListener","optionsOrCapture","wrappingListenerFn","createListenerWrapper","wrappingFn","getWrappingFn","findTaskIndex","existingTasks","capture","isCapture","options","eventSymbol","taskIndex","patchEventTarget","bootstrapTime","lastHiddenStart","MIN_SAFE_INTEGER","enabled","bootstrap","visibilityState","addEventListener","bootstrapPerf","createStackTraces","errorEvent","filename","lineno","colno","stackTraces","stackParser","frame","fnName","_stack$functionName","fileUrl","origin","filePath","cleanFilePath","cleanedFileName","location","protocol","hostname","port","href","isFileInline","abs_path","function","RULES","NaN","PROTOCOL_REGEX","Url","_this$extractProtocol","extractProtocol","address","slashes","relative","getLocation","instructions","instruction","instLength","newIndex","lastIndexOf","Math","max","toLowerCase","path","charAt","host","isDefaultPort","auth","userpass","query","hash","globalVar","getResponseContext","perfTimingEntry","respContext","transfer_size","transferSize","encoded_body_size","encodedBodySize","decoded_body_size","decodedBodySize","serverTimingStr","serverTimingEntries","serverTimingInfo","_i2","_serverTimingEntries$","duration","description","timingValue","valueSeparator","getServerTimingInfo","serverTiming","getDestination","parsedUrl","portNumber","getPortNumber","ipv6Hostname","charCodeAt","service","resource","getPageContext","page","referer","referrer","addSpanContext","span","context","statusCode","http","status_code","getExternalContext","entry","getResourceContext","getNavigationContext","addContext","addTransactionContext","transaction","_temp","configContext","tags","excluded","sourceKeys","_objectWithoutPropertiesLoose","pageContext","responseContext","entries","METADATA_MODEL","version","agent","environment","labels","RESPONSE_MODEL","CONTEXT_MODEL","user","id","email","username","SPAN_MODEL","trace_id","parent_id","transaction_id","subtype","action","TRANSACTION_MODEL","span_count","started","ERROR_MODEL","culprit","exception","isEmpty","replaceValue","currModel","limit","required","placeholder","substring","truncate","truncateModel","model","childTarget","emptyArr","_loop","currKey","IGNORE_KEYS","ErrorLogging","apmServer","configService","transactionService","_apmServer","_configService","_transactionService","createErrorDataModel","filteredFrames","frames","filterInvalidFrames","lastFrame","errorMessage","errorType","errorContext","customProperties","propertyFound","properties","toISOString","getErrorProperties","custom","currentTransaction","getCurrentTransaction","transactionContext","_this$_configService$","errorObject","traceId","sampled","logErrorEvent","addError","registerListeners","promiseRejectionEvent","logPromiseEvent","prefix","logError","messageOrError","Queue","onFlush","opts","items","queueLimit","flushInterval","timeoutId","_setTimer","flush","_clear","clearTimeout","add","item","NDJSON","SpanBase","sampleRate","timestamp","_start","startTime","_end","ended","outcome","onEnd","ensureContext","addLabels","ctx","k","_len","_key","concat","endTime","callOnEnd","Span","_SpanBase","subClass","superClass","parentId","fields","__proto__","eventPairs","shouldCreateSpan","trStart","trEnd","baseTime","createResourceTimingSpan","resourceTimingEntry","initiatorType","responseEnd","kind","spanName","isCapturedByPatching","resourceStartTime","requestPatchTime","NAVIGATION_TIMING_MARKS","COMPRESSED_NAV_TIMING_MARKS","getPageLoadMarks","timing","marks","fetchStart","navigationStart","responseStart","timingKey","getNavigationTimingMarks","navigationTiming","timeToFirstByte","domInteractive","domComplete","captureNavigation","captureTimings","customMarks","timings","spans","pageResponse","createNavigationTimingSpans","pageLoadSpanId","addMarks","_trStart","_entries$i","createResourceTimingSpans","userTimingSpans","_entries$i2","createUserTimingSpans","compressResponse","ts","ebs","dbs","compressContext","compressed","rf","h","mt","compressHTTP","dt","se","rc","ad","po","u","un","em","cu","compressMarks","nt","mark","mapping","a","fb","rs","di","dc","fp","firstContentfulPaint","lp","largestContentfulPaint","ApmServer","loggingService","_loggingService","queue","throttleEvents","events","sendEvents","catch","_constructError","onThrottle","interval","counter","throttle","_postJson","endPoint","payload","_this2","isCompressionStreamSupported","CompressionStream","compressedStream","Blob","stream","pipeThrough","Response","blob","compressPayload","_makeHttpRequest","responseText","_ref2","_ref2$timeout","timeout","xhr","open","header","onreadystatechange","onerror","fetchConfig","serviceName","_this3","configEndpoint","localConfig","getLocalConfig","etag","remoteConfig","getResponseHeader","setLocalConfig","createMetaData","cfg","metadata","language","_this$throttleEvents","addTransaction","_this$throttleEvents2","ndjsonErrors","errors","compress","_NDJSON$stringify","cl","mg","st","ap","f","li","co","tid","pid","xid","sm","compressError","ndjsonMetricsets","metricsets","metricset","ndjsonTransactions","transactions","_this4","tr","_NDJSON$stringify2","breakdowns","breakdown","spanData","sr","sample_rate","sy","su","ac","me","samples","isSpan","y","sa","ysc","yss","xdc","xds","xbc","yc","sd","experience","_transaction$experien","cls","fid","tbt","longtask","exp","lt","session","_transaction$session","sequence","ses","seq","compressTransaction","_payload","_NDJSON$stringify3","filteredPayload","applyFilters","apiVersion","ndjson","metadataKey","ve","la","en","compressMetadata","ndjsonPayload","_extends","assign","_serviceCreators","Config","config","serviceVersion","serverUrl","active","instrument","disableInstrumentations","logLevel","breakdownMetrics","ignoreTransactions","eventsLimit","distributedTracing","distributedTracingOrigins","distributedTracingHeaderName","pageLoadTraceId","pageLoadSampled","pageLoadTransactionName","propagateTracestate","transactionSampleRate","centralConfig","monitorLongtasks","filters","scriptData","node","dataAttrs","dataRegex","attrs","attributes","attr","nodeName","camelCasedkey","toUpperCase","nodeValue","getDataAttributesFromNode","setConfig","setVersion","addFilter","reduce","objKey","setUserContext","userContext","_userContext","setCustomContext","customContext","_properties","round","validate","requiredKeys","missing","invalid","allowed","storage","sessionStorage","localStorage","getItem","setItem","LoggingService","spec","levels","level","resetLogMethods","shouldLog","setLevel","normalizedLevel","realMethod","serviceCreators","ConfigService","factory","_factory$getService","getService","ServiceFactory","instances","initialized","_this$getService","PerformanceMonitoring","_logginService","flags","TRANSACTION_END","createTransactionPayload","getHistorySub","getXHRSub","getFetchSub","getEventTargetSub","getAttribute","additionalInfo","tagName","startTransaction","managed","canReuse","reuseThreshold","classes","processAPICalls","requestUrl","startSpan","blocking","isDtEnabled","dtOrigins","currentUrl","isSameOrigin","injectDtHeader","injectTSHeader","process","_data","_span","_target","endSpan","headerName","headerValue","dtVersion","getDtHeaderValue","getTSHeaderValue","extractDtHeader","parsed","parseDtHeaderValue","filterTransaction","isManaged","createTransactionDataModel","transactionStart","transactionData","breakdownTimings","adjustedTransaction","filterdSpans","similarSpans","originalSpans","transDuration","threshold","sort","spanA","spanB","lastCount","lastSpan","isContinuouslySimilar","isLastSpan","groupSmallContinuouslySimilarSpans","resetFields","adjustTransaction","pageLoadBreakdowns","getValue","getSpanBreakdown","transactionDetails","details","_ref$count","count","Transaction","_activeSpans","_activeTasks","blocked","random","markTime","redefine","trc","_onSpanEnd","addTask","isFinished","size","detectFinish","sid","captureBreakdown","trDuration","current","spanMap","transactionSelfTime","span1","span2","spanEnd","spanStart","lastContinuousEnd","selfTime","calculateSelfTime","groupSpans","_key$split","_spanMap$key","_captureBreakdown","block","flag","taskId","removeTask","delete","metrics","fcp","Infinity","captureObserverEntries","list","isHardNavigation","longtaskEntries","longtasks","agg","_longtasks$i","attribution","_attribution$","_name","containerType","containerName","containerId","createLongTaskSpans","lcpEntries","lastLcpEntry","lcp","unloadDiff","fcpEntry","getEntriesByName","fidSpan","fidEntries","firstInput","processingStart","createFirstInputDelaySpan","min","blockingTime","calculateTotalBlockingTime","clsEntries","hadRecentInput","calculateCumulativeLayoutShift","PerfEntryRecorder","disconnect","buffered","_","stop","TransactionService","logger","_config","_logger","respIntervalId","recorder","_tr$spans","_captureObserverEntri","createCurrentTransaction","createOptions","perfOptions","startManagedTransaction","isRedefined","redefineType","currentTypeOrder","redefineTypeOrder","fireOnstartHook","handleTransactionEnd","shouldIgnoreTransaction","tbtObject","tbtSpan","sum","setSession","urlStr","depth","pathParts","specialCharsRegex","digitsRegex","lowerCaseRegex","upperCaseRegex","redactedParts","redactedBefore","_index","part","numberOfDigits","numberofUpperCase","lowerCaseRate","upperCaseRate","slugifyUrl","adjustTransactionTime","Date","sessionConfig","earliestSpan","_i4","getEarliestSpan","latestSpan","_i3","getLatestNonXHRSpan","transactionEnd","transactionName","ignoreList","element","createServiceFactory","serviceFactory","_serviceFactory$getSe","_serviceFactory$getSe2","ApmBase","disable","_disable","_initialized","isEnabled","isActive","disabledInstrumentations","_flags","getInstrumentationFlags","sendPageLoad","_sendPageLoadMetrics","fetchCentralConfig","sendPageLoadMetrics","setInitialPageLoadName","captureError","apmBase","elasticApm","getApmBase"],"mappings":"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","file":"elastic-apm-rum.umd.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 4);\n","(function(root, factory) {\n 'use strict';\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('error-stack-parser', ['stackframe'], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory(require('stackframe'));\n } else {\n root.ErrorStackParser = factory(root.StackFrame);\n }\n}(this, function ErrorStackParser(StackFrame) {\n 'use strict';\n\n var FIREFOX_SAFARI_STACK_REGEXP = /(^|@)\\S+\\:\\d+/;\n var CHROME_IE_STACK_REGEXP = /^\\s*at .*(\\S+\\:\\d+|\\(native\\))/m;\n var SAFARI_NATIVE_CODE_REGEXP = /^(eval@)?(\\[native code\\])?$/;\n\n function _map(array, fn, thisArg) {\n if (typeof Array.prototype.map === 'function') {\n return array.map(fn, thisArg);\n } else {\n var output = new Array(array.length);\n for (var i = 0; i < array.length; i++) {\n output[i] = fn.call(thisArg, array[i]);\n }\n return output;\n }\n }\n\n function _filter(array, fn, thisArg) {\n if (typeof Array.prototype.filter === 'function') {\n return array.filter(fn, thisArg);\n } else {\n var output = [];\n for (var i = 0; i < array.length; i++) {\n if (fn.call(thisArg, array[i])) {\n output.push(array[i]);\n }\n }\n return output;\n }\n }\n\n function _indexOf(array, target) {\n if (typeof Array.prototype.indexOf === 'function') {\n return array.indexOf(target);\n } else {\n for (var i = 0; i < array.length; i++) {\n if (array[i] === target) {\n return i;\n }\n }\n return -1;\n }\n }\n\n return {\n /**\n * Given an Error object, extract the most information from it.\n *\n * @param {Error} error object\n * @return {Array} of StackFrames\n */\n parse: function ErrorStackParser$$parse(error) {\n if (typeof error.stacktrace !== 'undefined' || typeof error['opera#sourceloc'] !== 'undefined') {\n return this.parseOpera(error);\n } else if (error.stack && error.stack.match(CHROME_IE_STACK_REGEXP)) {\n return this.parseV8OrIE(error);\n } else if (error.stack) {\n return this.parseFFOrSafari(error);\n } else {\n throw new Error('Cannot parse given Error object');\n }\n },\n\n // Separate line and column numbers from a string of the form: (URI:Line:Column)\n extractLocation: function ErrorStackParser$$extractLocation(urlLike) {\n // Fail-fast but return locations like \"(native)\"\n if (urlLike.indexOf(':') === -1) {\n return [urlLike];\n }\n\n var regExp = /(.+?)(?:\\:(\\d+))?(?:\\:(\\d+))?$/;\n var parts = regExp.exec(urlLike.replace(/[\\(\\)]/g, ''));\n return [parts[1], parts[2] || undefined, parts[3] || undefined];\n },\n\n parseV8OrIE: function ErrorStackParser$$parseV8OrIE(error) {\n var filtered = _filter(error.stack.split('\\n'), function(line) {\n return !!line.match(CHROME_IE_STACK_REGEXP);\n }, this);\n\n return _map(filtered, function(line) {\n if (line.indexOf('(eval ') > -1) {\n // Throw away eval information until we implement stacktrace.js/stackframe#8\n line = line.replace(/eval code/g, 'eval').replace(/(\\(eval at [^\\()]*)|(\\)\\,.*$)/g, '');\n }\n var tokens = line.replace(/^\\s+/, '').replace(/\\(eval code/g, '(').split(/\\s+/).slice(1);\n var locationParts = this.extractLocation(tokens.pop());\n var functionName = tokens.join(' ') || undefined;\n var fileName = _indexOf(['eval', ''], locationParts[0]) > -1 ? undefined : locationParts[0];\n\n return new StackFrame(functionName, undefined, fileName, locationParts[1], locationParts[2], line);\n }, this);\n },\n\n parseFFOrSafari: function ErrorStackParser$$parseFFOrSafari(error) {\n var filtered = _filter(error.stack.split('\\n'), function(line) {\n return !line.match(SAFARI_NATIVE_CODE_REGEXP);\n }, this);\n\n return _map(filtered, function(line) {\n // Throw away eval information until we implement stacktrace.js/stackframe#8\n if (line.indexOf(' > eval') > -1) {\n line = line.replace(/ line (\\d+)(?: > eval line \\d+)* > eval\\:\\d+\\:\\d+/g, ':$1');\n }\n\n if (line.indexOf('@') === -1 && line.indexOf(':') === -1) {\n // Safari eval frames only have function names and nothing else\n return new StackFrame(line);\n } else {\n var tokens = line.split('@');\n var locationParts = this.extractLocation(tokens.pop());\n var functionName = tokens.join('@') || undefined;\n return new StackFrame(functionName,\n undefined,\n locationParts[0],\n locationParts[1],\n locationParts[2],\n line);\n }\n }, this);\n },\n\n parseOpera: function ErrorStackParser$$parseOpera(e) {\n if (!e.stacktrace || (e.message.indexOf('\\n') > -1 &&\n e.message.split('\\n').length > e.stacktrace.split('\\n').length)) {\n return this.parseOpera9(e);\n } else if (!e.stack) {\n return this.parseOpera10(e);\n } else {\n return this.parseOpera11(e);\n }\n },\n\n parseOpera9: function ErrorStackParser$$parseOpera9(e) {\n var lineRE = /Line (\\d+).*script (?:in )?(\\S+)/i;\n var lines = e.message.split('\\n');\n var result = [];\n\n for (var i = 2, len = lines.length; i < len; i += 2) {\n var match = lineRE.exec(lines[i]);\n if (match) {\n result.push(new StackFrame(undefined, undefined, match[2], match[1], undefined, lines[i]));\n }\n }\n\n return result;\n },\n\n parseOpera10: function ErrorStackParser$$parseOpera10(e) {\n var lineRE = /Line (\\d+).*script (?:in )?(\\S+)(?:: In function (\\S+))?$/i;\n var lines = e.stacktrace.split('\\n');\n var result = [];\n\n for (var i = 0, len = lines.length; i < len; i += 2) {\n var match = lineRE.exec(lines[i]);\n if (match) {\n result.push(\n new StackFrame(\n match[3] || undefined,\n undefined,\n match[2],\n match[1],\n undefined,\n lines[i]\n )\n );\n }\n }\n\n return result;\n },\n\n // Opera 10.65+ Error.stack very similar to FF/Safari\n parseOpera11: function ErrorStackParser$$parseOpera11(error) {\n var filtered = _filter(error.stack.split('\\n'), function(line) {\n return !!line.match(FIREFOX_SAFARI_STACK_REGEXP) && !line.match(/^Error created at/);\n }, this);\n\n return _map(filtered, function(line) {\n var tokens = line.split('@');\n var locationParts = this.extractLocation(tokens.pop());\n var functionCall = (tokens.shift() || '');\n var functionName = functionCall\n .replace(//, '$2')\n .replace(/\\([^\\)]*\\)/g, '') || undefined;\n var argsRaw;\n if (functionCall.match(/\\(([^\\)]*)\\)/)) {\n argsRaw = functionCall.replace(/^[^\\(]+\\(([^\\)]*)\\)$/, '$1');\n }\n var args = (argsRaw === undefined || argsRaw === '[arguments not available]') ?\n undefined : argsRaw.split(',');\n return new StackFrame(\n functionName,\n args,\n locationParts[0],\n locationParts[1],\n locationParts[2],\n line);\n }, this);\n }\n };\n}));\n\n","(function (root, factory) {\n 'use strict';\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('stackframe', [], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n } else {\n root.StackFrame = factory();\n }\n}(this, function () {\n 'use strict';\n function _isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n }\n\n function StackFrame(functionName, args, fileName, lineNumber, columnNumber, source) {\n if (functionName !== undefined) {\n this.setFunctionName(functionName);\n }\n if (args !== undefined) {\n this.setArgs(args);\n }\n if (fileName !== undefined) {\n this.setFileName(fileName);\n }\n if (lineNumber !== undefined) {\n this.setLineNumber(lineNumber);\n }\n if (columnNumber !== undefined) {\n this.setColumnNumber(columnNumber);\n }\n if (source !== undefined) {\n this.setSource(source);\n }\n }\n\n StackFrame.prototype = {\n getFunctionName: function () {\n return this.functionName;\n },\n setFunctionName: function (v) {\n this.functionName = String(v);\n },\n\n getArgs: function () {\n return this.args;\n },\n setArgs: function (v) {\n if (Object.prototype.toString.call(v) !== '[object Array]') {\n throw new TypeError('Args must be an Array');\n }\n this.args = v;\n },\n\n // NOTE: Property name may be misleading as it includes the path,\n // but it somewhat mirrors V8's JavaScriptStackTraceApi\n // https://code.google.com/p/v8/wiki/JavaScriptStackTraceApi and Gecko's\n // http://mxr.mozilla.org/mozilla-central/source/xpcom/base/nsIException.idl#14\n getFileName: function () {\n return this.fileName;\n },\n setFileName: function (v) {\n this.fileName = String(v);\n },\n\n getLineNumber: function () {\n return this.lineNumber;\n },\n setLineNumber: function (v) {\n if (!_isNumber(v)) {\n throw new TypeError('Line Number must be a Number');\n }\n this.lineNumber = Number(v);\n },\n\n getColumnNumber: function () {\n return this.columnNumber;\n },\n setColumnNumber: function (v) {\n if (!_isNumber(v)) {\n throw new TypeError('Column Number must be a Number');\n }\n this.columnNumber = Number(v);\n },\n\n getSource: function () {\n return this.source;\n },\n setSource: function (v) {\n this.source = String(v);\n },\n\n toString: function() {\n var functionName = this.getFunctionName() || '{anonymous}';\n var args = '(' + (this.getArgs() || []).join(',') + ')';\n var fileName = this.getFileName() ? ('@' + this.getFileName()) : '';\n var lineNumber = _isNumber(this.getLineNumber()) ? (':' + this.getLineNumber()) : '';\n var columnNumber = _isNumber(this.getColumnNumber()) ? (':' + this.getColumnNumber()) : '';\n return functionName + args + fileName + lineNumber + columnNumber;\n }\n };\n\n return StackFrame;\n}));\n","/**\n * @this {Promise}\n */\nfunction finallyConstructor(callback) {\n var constructor = this.constructor;\n return this.then(\n function(value) {\n // @ts-ignore\n return constructor.resolve(callback()).then(function() {\n return value;\n });\n },\n function(reason) {\n // @ts-ignore\n return constructor.resolve(callback()).then(function() {\n // @ts-ignore\n return constructor.reject(reason);\n });\n }\n );\n}\n\nexport default finallyConstructor;\n","import promiseFinally from './finally';\n\n// Store setTimeout reference so promise-polyfill will be unaffected by\n// other code modifying setTimeout (like sinon.useFakeTimers())\nvar setTimeoutFunc = setTimeout;\n\nfunction isArray(x) {\n return Boolean(x && typeof x.length !== 'undefined');\n}\n\nfunction noop() {}\n\n// Polyfill for Function.prototype.bind\nfunction bind(fn, thisArg) {\n return function() {\n fn.apply(thisArg, arguments);\n };\n}\n\n/**\n * @constructor\n * @param {Function} fn\n */\nfunction Promise(fn) {\n if (!(this instanceof Promise))\n throw new TypeError('Promises must be constructed via new');\n if (typeof fn !== 'function') throw new TypeError('not a function');\n /** @type {!number} */\n this._state = 0;\n /** @type {!boolean} */\n this._handled = false;\n /** @type {Promise|undefined} */\n this._value = undefined;\n /** @type {!Array} */\n this._deferreds = [];\n\n doResolve(fn, this);\n}\n\nfunction handle(self, deferred) {\n while (self._state === 3) {\n self = self._value;\n }\n if (self._state === 0) {\n self._deferreds.push(deferred);\n return;\n }\n self._handled = true;\n Promise._immediateFn(function() {\n var cb = self._state === 1 ? deferred.onFulfilled : deferred.onRejected;\n if (cb === null) {\n (self._state === 1 ? resolve : reject)(deferred.promise, self._value);\n return;\n }\n var ret;\n try {\n ret = cb(self._value);\n } catch (e) {\n reject(deferred.promise, e);\n return;\n }\n resolve(deferred.promise, ret);\n });\n}\n\nfunction resolve(self, newValue) {\n try {\n // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure\n if (newValue === self)\n throw new TypeError('A promise cannot be resolved with itself.');\n if (\n newValue &&\n (typeof newValue === 'object' || typeof newValue === 'function')\n ) {\n var then = newValue.then;\n if (newValue instanceof Promise) {\n self._state = 3;\n self._value = newValue;\n finale(self);\n return;\n } else if (typeof then === 'function') {\n doResolve(bind(then, newValue), self);\n return;\n }\n }\n self._state = 1;\n self._value = newValue;\n finale(self);\n } catch (e) {\n reject(self, e);\n }\n}\n\nfunction reject(self, newValue) {\n self._state = 2;\n self._value = newValue;\n finale(self);\n}\n\nfunction finale(self) {\n if (self._state === 2 && self._deferreds.length === 0) {\n Promise._immediateFn(function() {\n if (!self._handled) {\n Promise._unhandledRejectionFn(self._value);\n }\n });\n }\n\n for (var i = 0, len = self._deferreds.length; i < len; i++) {\n handle(self, self._deferreds[i]);\n }\n self._deferreds = null;\n}\n\n/**\n * @constructor\n */\nfunction Handler(onFulfilled, onRejected, promise) {\n this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n this.promise = promise;\n}\n\n/**\n * Take a potentially misbehaving resolver function and make sure\n * onFulfilled and onRejected are only called once.\n *\n * Makes no guarantees about asynchrony.\n */\nfunction doResolve(fn, self) {\n var done = false;\n try {\n fn(\n function(value) {\n if (done) return;\n done = true;\n resolve(self, value);\n },\n function(reason) {\n if (done) return;\n done = true;\n reject(self, reason);\n }\n );\n } catch (ex) {\n if (done) return;\n done = true;\n reject(self, ex);\n }\n}\n\nPromise.prototype['catch'] = function(onRejected) {\n return this.then(null, onRejected);\n};\n\nPromise.prototype.then = function(onFulfilled, onRejected) {\n // @ts-ignore\n var prom = new this.constructor(noop);\n\n handle(this, new Handler(onFulfilled, onRejected, prom));\n return prom;\n};\n\nPromise.prototype['finally'] = promiseFinally;\n\nPromise.all = function(arr) {\n return new Promise(function(resolve, reject) {\n if (!isArray(arr)) {\n return reject(new TypeError('Promise.all accepts an array'));\n }\n\n var args = Array.prototype.slice.call(arr);\n if (args.length === 0) return resolve([]);\n var remaining = args.length;\n\n function res(i, val) {\n try {\n if (val && (typeof val === 'object' || typeof val === 'function')) {\n var then = val.then;\n if (typeof then === 'function') {\n then.call(\n val,\n function(val) {\n res(i, val);\n },\n reject\n );\n return;\n }\n }\n args[i] = val;\n if (--remaining === 0) {\n resolve(args);\n }\n } catch (ex) {\n reject(ex);\n }\n }\n\n for (var i = 0; i < args.length; i++) {\n res(i, args[i]);\n }\n });\n};\n\nPromise.resolve = function(value) {\n if (value && typeof value === 'object' && value.constructor === Promise) {\n return value;\n }\n\n return new Promise(function(resolve) {\n resolve(value);\n });\n};\n\nPromise.reject = function(value) {\n return new Promise(function(resolve, reject) {\n reject(value);\n });\n};\n\nPromise.race = function(arr) {\n return new Promise(function(resolve, reject) {\n if (!isArray(arr)) {\n return reject(new TypeError('Promise.race accepts an array'));\n }\n\n for (var i = 0, len = arr.length; i < len; i++) {\n Promise.resolve(arr[i]).then(resolve, reject);\n }\n });\n};\n\n// Use polyfill for setImmediate for performance gains\nPromise._immediateFn =\n // @ts-ignore\n (typeof setImmediate === 'function' &&\n function(fn) {\n // @ts-ignore\n setImmediate(fn);\n }) ||\n function(fn) {\n setTimeoutFunc(fn, 0);\n };\n\nPromise._unhandledRejectionFn = function _unhandledRejectionFn(err) {\n if (typeof console !== 'undefined' && console) {\n console.warn('Possible Unhandled Promise Rejection:', err); // eslint-disable-line no-console\n }\n};\n\nexport default Promise;\n","import PromisePollyfill from 'promise-polyfill';\nimport { isBrowser } from './utils';\nvar local = {};\n\nif (isBrowser) {\n local = window;\n} else if (typeof self !== 'undefined') {\n local = self;\n}\n\nvar Promise = 'Promise' in local ? local.Promise : PromisePollyfill;\nexport { Promise };","import { Promise } from './polyfills';\nvar slice = [].slice;\nvar isBrowser = typeof window !== 'undefined';\nvar PERF = isBrowser && typeof performance !== 'undefined' ? performance : {};\n\nfunction isCORSSupported() {\n var xhr = new window.XMLHttpRequest();\n return 'withCredentials' in xhr;\n}\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex[i] = (i + 0x100).toString(16).substr(1);\n}\n\nfunction bytesToHex(buffer) {\n var hexOctets = [];\n\n for (var _i = 0; _i < buffer.length; _i++) {\n hexOctets.push(byteToHex[buffer[_i]]);\n }\n\n return hexOctets.join('');\n}\n\nvar destination = new Uint8Array(16);\n\nfunction rng() {\n if (typeof crypto != 'undefined' && typeof crypto.getRandomValues == 'function') {\n return crypto.getRandomValues(destination);\n } else if (typeof msCrypto != 'undefined' && typeof msCrypto.getRandomValues == 'function') {\n return msCrypto.getRandomValues(destination);\n }\n\n return destination;\n}\n\nfunction generateRandomId(length) {\n var id = bytesToHex(rng());\n return id.substr(0, length);\n}\n\nfunction getDtHeaderValue(span) {\n var dtVersion = '00';\n var dtUnSampledFlags = '00';\n var dtSampledFlags = '01';\n\n if (span && span.traceId && span.id && span.parentId) {\n var flags = span.sampled ? dtSampledFlags : dtUnSampledFlags;\n var id = span.sampled ? span.id : span.parentId;\n return dtVersion + '-' + span.traceId + '-' + id + '-' + flags;\n }\n}\n\nfunction parseDtHeaderValue(value) {\n var parsed = /^([\\da-f]{2})-([\\da-f]{32})-([\\da-f]{16})-([\\da-f]{2})$/.exec(value);\n\n if (parsed) {\n var flags = parsed[4];\n var sampled = flags !== '00';\n return {\n traceId: parsed[2],\n id: parsed[3],\n sampled: sampled\n };\n }\n}\n\nfunction isDtHeaderValid(header) {\n return /^[\\da-f]{2}-[\\da-f]{32}-[\\da-f]{16}-[\\da-f]{2}$/.test(header) && header.slice(3, 35) !== '00000000000000000000000000000000' && header.slice(36, 52) !== '0000000000000000';\n}\n\nfunction getTSHeaderValue(_ref) {\n var sampleRate = _ref.sampleRate;\n\n if (typeof sampleRate !== 'number' || String(sampleRate).length > 256) {\n return;\n }\n\n var NAMESPACE = 'es';\n var SEPARATOR = '=';\n return \"\" + NAMESPACE + SEPARATOR + \"s:\" + sampleRate;\n}\n\nfunction setRequestHeader(target, name, value) {\n if (typeof target.setRequestHeader === 'function') {\n target.setRequestHeader(name, value);\n } else if (target.headers && typeof target.headers.append === 'function') {\n target.headers.append(name, value);\n } else {\n target[name] = value;\n }\n}\n\nfunction checkSameOrigin(source, target) {\n var isSame = false;\n\n if (typeof target === 'string') {\n isSame = source === target;\n } else if (target && typeof target.test === 'function') {\n isSame = target.test(source);\n } else if (Array.isArray(target)) {\n target.forEach(function (t) {\n if (!isSame) {\n isSame = checkSameOrigin(source, t);\n }\n });\n }\n\n return isSame;\n}\n\nfunction isPlatformSupported() {\n return isBrowser && typeof Set === 'function' && typeof JSON.stringify === 'function' && PERF && typeof PERF.now === 'function' && isCORSSupported();\n}\n\nfunction setLabel(key, value, obj) {\n if (!obj || !key) return;\n var skey = removeInvalidChars(key);\n var valueType = typeof value;\n\n if (value != undefined && valueType !== 'boolean' && valueType !== 'number') {\n value = String(value);\n }\n\n obj[skey] = value;\n return obj;\n}\n\nfunction getServerTimingInfo(serverTimingEntries) {\n if (serverTimingEntries === void 0) {\n serverTimingEntries = [];\n }\n\n var serverTimingInfo = [];\n var entrySeparator = ', ';\n var valueSeparator = ';';\n\n for (var _i2 = 0; _i2 < serverTimingEntries.length; _i2++) {\n var _serverTimingEntries$ = serverTimingEntries[_i2],\n name = _serverTimingEntries$.name,\n duration = _serverTimingEntries$.duration,\n description = _serverTimingEntries$.description;\n var timingValue = name;\n\n if (description) {\n timingValue += valueSeparator + 'desc=' + description;\n }\n\n if (duration) {\n timingValue += valueSeparator + 'dur=' + duration;\n }\n\n serverTimingInfo.push(timingValue);\n }\n\n return serverTimingInfo.join(entrySeparator);\n}\n\nfunction getTimeOrigin() {\n return PERF.timing.fetchStart;\n}\n\nfunction stripQueryStringFromUrl(url) {\n return url && url.split('?')[0];\n}\n\nfunction isObject(value) {\n return value !== null && typeof value === 'object';\n}\n\nfunction isFunction(value) {\n return typeof value === 'function';\n}\n\nfunction baseExtend(dst, objs, deep) {\n for (var i = 0, ii = objs.length; i < ii; ++i) {\n var obj = objs[i];\n if (!isObject(obj) && !isFunction(obj)) continue;\n var keys = Object.keys(obj);\n\n for (var j = 0, jj = keys.length; j < jj; j++) {\n var key = keys[j];\n var src = obj[key];\n\n if (deep && isObject(src)) {\n if (!isObject(dst[key])) dst[key] = Array.isArray(src) ? [] : {};\n baseExtend(dst[key], [src], false);\n } else {\n dst[key] = src;\n }\n }\n }\n\n return dst;\n}\n\nfunction getElasticScript() {\n if (typeof document !== 'undefined') {\n var scripts = document.getElementsByTagName('script');\n\n for (var i = 0, l = scripts.length; i < l; i++) {\n var sc = scripts[i];\n\n if (sc.src.indexOf('elastic') > 0) {\n return sc;\n }\n }\n }\n}\n\nfunction getCurrentScript() {\n if (typeof document !== 'undefined') {\n var currentScript = document.currentScript;\n\n if (!currentScript) {\n return getElasticScript();\n }\n\n return currentScript;\n }\n}\n\nfunction extend(dst) {\n return baseExtend(dst, slice.call(arguments, 1), false);\n}\n\nfunction merge(dst) {\n return baseExtend(dst, slice.call(arguments, 1), true);\n}\n\nfunction isUndefined(obj) {\n return typeof obj === 'undefined';\n}\n\nfunction noop() {}\n\nfunction find(array, predicate, thisArg) {\n if (array == null) {\n throw new TypeError('array is null or not defined');\n }\n\n var o = Object(array);\n var len = o.length >>> 0;\n\n if (typeof predicate !== 'function') {\n throw new TypeError('predicate must be a function');\n }\n\n var k = 0;\n\n while (k < len) {\n var kValue = o[k];\n\n if (predicate.call(thisArg, kValue, k, o)) {\n return kValue;\n }\n\n k++;\n }\n\n return undefined;\n}\n\nfunction removeInvalidChars(key) {\n return key.replace(/[.*\"]/g, '_');\n}\n\nfunction getLatestNonXHRSpan(spans) {\n var latestSpan = null;\n\n for (var _i3 = 0; _i3 < spans.length; _i3++) {\n var span = spans[_i3];\n\n if (String(span.type).indexOf('external') === -1 && (!latestSpan || latestSpan._end < span._end)) {\n latestSpan = span;\n }\n }\n\n return latestSpan;\n}\n\nfunction getEarliestSpan(spans) {\n var earliestSpan = spans[0];\n\n for (var _i4 = 1; _i4 < spans.length; _i4++) {\n var span = spans[_i4];\n\n if (earliestSpan._start > span._start) {\n earliestSpan = span;\n }\n }\n\n return earliestSpan;\n}\n\nfunction now() {\n return PERF.now();\n}\n\nfunction getTime(time) {\n return typeof time === 'number' && time >= 0 ? time : now();\n}\n\nfunction getDuration(start, end) {\n if (isUndefined(end) || isUndefined(start)) {\n return null;\n }\n\n return parseInt(end - start);\n}\n\nfunction scheduleMacroTask(callback) {\n setTimeout(callback, 0);\n}\n\nfunction scheduleMicroTask(callback) {\n Promise.resolve().then(callback);\n}\n\nfunction isPerfTimelineSupported() {\n return typeof PERF.getEntriesByType === 'function';\n}\n\nfunction isPerfTypeSupported(type) {\n return typeof PerformanceObserver !== 'undefined' && PerformanceObserver.supportedEntryTypes && PerformanceObserver.supportedEntryTypes.indexOf(type) >= 0;\n}\n\nexport { extend, merge, isUndefined, noop, baseExtend, bytesToHex, isCORSSupported, isObject, isFunction, isPlatformSupported, isDtHeaderValid, parseDtHeaderValue, getServerTimingInfo, getDtHeaderValue, getTSHeaderValue, getCurrentScript, getElasticScript, getTimeOrigin, generateRandomId, getEarliestSpan, getLatestNonXHRSpan, getDuration, getTime, now, rng, checkSameOrigin, scheduleMacroTask, scheduleMicroTask, setLabel, setRequestHeader, stripQueryStringFromUrl, find, removeInvalidChars, PERF, isPerfTimelineSupported, isBrowser, isPerfTypeSupported };","export var globalState = {\n fetchInProgress: false\n};\nexport function apmSymbol(name) {\n return '__apm_symbol__' + name;\n}\n\nfunction isPropertyWritable(propertyDesc) {\n if (!propertyDesc) {\n return true;\n }\n\n if (propertyDesc.writable === false) {\n return false;\n }\n\n return !(typeof propertyDesc.get === 'function' && typeof propertyDesc.set === 'undefined');\n}\n\nfunction attachOriginToPatched(patched, original) {\n patched[apmSymbol('OriginalDelegate')] = original;\n}\n\nexport function patchMethod(target, name, patchFn) {\n var proto = target;\n\n while (proto && !proto.hasOwnProperty(name)) {\n proto = Object.getPrototypeOf(proto);\n }\n\n if (!proto && target[name]) {\n proto = target;\n }\n\n var delegateName = apmSymbol(name);\n var delegate;\n\n if (proto && !(delegate = proto[delegateName])) {\n delegate = proto[delegateName] = proto[name];\n var desc = proto && Object.getOwnPropertyDescriptor(proto, name);\n\n if (isPropertyWritable(desc)) {\n var patchDelegate = patchFn(delegate, delegateName, name);\n\n proto[name] = function () {\n return patchDelegate(this, arguments);\n };\n\n attachOriginToPatched(proto[name], delegate);\n }\n }\n\n return delegate;\n}\nexport var XHR_IGNORE = apmSymbol('xhrIgnore');\nexport var XHR_SYNC = apmSymbol('xhrSync');\nexport var XHR_URL = apmSymbol('xhrURL');\nexport var XHR_METHOD = apmSymbol('xhrMethod');","var SCHEDULE = 'schedule';\nvar INVOKE = 'invoke';\nvar ADD_EVENT_LISTENER_STR = 'addEventListener';\nvar REMOVE_EVENT_LISTENER_STR = 'removeEventListener';\nvar RESOURCE_INITIATOR_TYPES = ['link', 'css', 'script', 'img', 'xmlhttprequest', 'fetch', 'beacon', 'iframe'];\nvar REUSABILITY_THRESHOLD = 5000;\nvar MAX_SPAN_DURATION = 5 * 60 * 1000;\nvar PAGE_LOAD = 'page-load';\nvar ROUTE_CHANGE = 'route-change';\nvar TYPE_CUSTOM = 'custom';\nvar USER_INTERACTION = 'user-interaction';\nvar HTTP_REQUEST_TYPE = 'http-request';\nvar TEMPORARY_TYPE = 'temporary';\nvar NAME_UNKNOWN = 'Unknown';\nvar TRANSACTION_TYPE_ORDER = [PAGE_LOAD, ROUTE_CHANGE, USER_INTERACTION, HTTP_REQUEST_TYPE, TYPE_CUSTOM, TEMPORARY_TYPE];\nvar OUTCOME_SUCCESS = 'success';\nvar OUTCOME_FAILURE = 'failure';\nvar USER_TIMING_THRESHOLD = 60;\nvar TRANSACTION_START = 'transaction:start';\nvar TRANSACTION_END = 'transaction:end';\nvar CONFIG_CHANGE = 'config:change';\nvar XMLHTTPREQUEST = 'xmlhttprequest';\nvar FETCH = 'fetch';\nvar HISTORY = 'history';\nvar EVENT_TARGET = 'eventtarget';\nvar ERROR = 'error';\nvar BEFORE_EVENT = ':before';\nvar AFTER_EVENT = ':after';\nvar LOCAL_CONFIG_KEY = 'elastic_apm_config';\nvar LONG_TASK = 'longtask';\nvar PAINT = 'paint';\nvar MEASURE = 'measure';\nvar NAVIGATION = 'navigation';\nvar RESOURCE = 'resource';\nvar FIRST_CONTENTFUL_PAINT = 'first-contentful-paint';\nvar LARGEST_CONTENTFUL_PAINT = 'largest-contentful-paint';\nvar FIRST_INPUT = 'first-input';\nvar LAYOUT_SHIFT = 'layout-shift';\nvar ERRORS = 'errors';\nvar TRANSACTIONS = 'transactions';\nvar CONFIG_SERVICE = 'ConfigService';\nvar LOGGING_SERVICE = 'LoggingService';\nvar APM_SERVER = 'ApmServer';\nvar TRUNCATED_TYPE = '.truncated';\nvar KEYWORD_LIMIT = 1024;\nvar SESSION_TIMEOUT = 30 * 60000;\nexport { SCHEDULE, INVOKE, ADD_EVENT_LISTENER_STR, REMOVE_EVENT_LISTENER_STR, RESOURCE_INITIATOR_TYPES, REUSABILITY_THRESHOLD, MAX_SPAN_DURATION, PAGE_LOAD, ROUTE_CHANGE, NAME_UNKNOWN, TYPE_CUSTOM, USER_TIMING_THRESHOLD, TRANSACTION_START, TRANSACTION_END, CONFIG_CHANGE, XMLHTTPREQUEST, FETCH, HISTORY, EVENT_TARGET, ERROR, BEFORE_EVENT, AFTER_EVENT, LOCAL_CONFIG_KEY, HTTP_REQUEST_TYPE, LONG_TASK, PAINT, MEASURE, NAVIGATION, RESOURCE, FIRST_CONTENTFUL_PAINT, LARGEST_CONTENTFUL_PAINT, KEYWORD_LIMIT, TEMPORARY_TYPE, USER_INTERACTION, TRANSACTION_TYPE_ORDER, ERRORS, TRANSACTIONS, CONFIG_SERVICE, LOGGING_SERVICE, APM_SERVER, TRUNCATED_TYPE, FIRST_INPUT, LAYOUT_SHIFT, OUTCOME_SUCCESS, OUTCOME_FAILURE, SESSION_TIMEOUT };","import { patchMethod, XHR_SYNC, XHR_URL, XHR_METHOD, XHR_IGNORE } from './patch-utils';\nimport { SCHEDULE, INVOKE, XMLHTTPREQUEST, ADD_EVENT_LISTENER_STR } from '../constants';\nexport function patchXMLHttpRequest(callback) {\n var XMLHttpRequestPrototype = XMLHttpRequest.prototype;\n\n if (!XMLHttpRequestPrototype || !XMLHttpRequestPrototype[ADD_EVENT_LISTENER_STR]) {\n return;\n }\n\n var READY_STATE_CHANGE = 'readystatechange';\n var LOAD = 'load';\n var ERROR = 'error';\n var TIMEOUT = 'timeout';\n var ABORT = 'abort';\n\n function invokeTask(task, status) {\n if (task.state !== INVOKE) {\n task.state = INVOKE;\n task.data.status = status;\n callback(INVOKE, task);\n }\n }\n\n function scheduleTask(task) {\n if (task.state === SCHEDULE) {\n return;\n }\n\n task.state = SCHEDULE;\n callback(SCHEDULE, task);\n var target = task.data.target;\n\n function addListener(name) {\n target[ADD_EVENT_LISTENER_STR](name, function (_ref) {\n var type = _ref.type;\n\n if (type === READY_STATE_CHANGE) {\n if (target.readyState === 4 && target.status !== 0) {\n invokeTask(task, 'success');\n }\n } else {\n var status = type === LOAD ? 'success' : type;\n invokeTask(task, status);\n }\n });\n }\n\n addListener(READY_STATE_CHANGE);\n addListener(LOAD);\n addListener(TIMEOUT);\n addListener(ERROR);\n addListener(ABORT);\n }\n\n var openNative = patchMethod(XMLHttpRequestPrototype, 'open', function () {\n return function (self, args) {\n if (!self[XHR_IGNORE]) {\n self[XHR_METHOD] = args[0];\n self[XHR_URL] = args[1];\n self[XHR_SYNC] = args[2] === false;\n }\n\n return openNative.apply(self, args);\n };\n });\n var sendNative = patchMethod(XMLHttpRequestPrototype, 'send', function () {\n return function (self, args) {\n if (self[XHR_IGNORE]) {\n return sendNative.apply(self, args);\n }\n\n var task = {\n source: XMLHTTPREQUEST,\n state: '',\n type: 'macroTask',\n data: {\n target: self,\n method: self[XHR_METHOD],\n sync: self[XHR_SYNC],\n url: self[XHR_URL],\n status: ''\n }\n };\n\n try {\n scheduleTask(task);\n return sendNative.apply(self, args);\n } catch (e) {\n invokeTask(task, ERROR);\n throw e;\n }\n };\n });\n}","import { SCHEDULE, INVOKE, ADD_EVENT_LISTENER_STR, REMOVE_EVENT_LISTENER_STR, EVENT_TARGET } from '../constants';\nimport { apmSymbol } from './patch-utils';\nvar eventTypes = ['click'];\nvar eventTypeSymbols = {};\n\nfor (var i = 0; i < eventTypes.length; i++) {\n var et = eventTypes[i];\n eventTypeSymbols[et] = apmSymbol(et);\n}\n\nfunction shouldInstrumentEvent(target, eventType, listenerFn) {\n return target instanceof Element && eventTypes.indexOf(eventType) >= 0 && typeof listenerFn === 'function';\n}\n\nexport function patchEventTarget(callback) {\n if (!window.EventTarget) {\n return;\n }\n\n var proto = window.EventTarget.prototype;\n var nativeAddEventListener = proto[ADD_EVENT_LISTENER_STR];\n var nativeRemoveEventListener = proto[REMOVE_EVENT_LISTENER_STR];\n\n function findTaskIndex(existingTasks, eventType, listenerFn, capture) {\n for (var _i = 0; _i < existingTasks.length; _i++) {\n var task = existingTasks[_i];\n\n if (task.eventType === eventType && task.listenerFn === listenerFn && task.capture === capture) {\n return _i;\n }\n }\n\n return -1;\n }\n\n function isCapture(options) {\n var capture;\n\n if (typeof options === 'boolean') {\n capture = options;\n } else {\n capture = options ? !!options.capture : false;\n }\n\n return capture;\n }\n\n function createListenerWrapper(target, eventType, listenerFn, options) {\n var eventSymbol = eventTypeSymbols[eventType];\n if (!eventSymbol) return listenerFn;\n var existingTasks = target[eventSymbol];\n var capture = isCapture(options);\n\n if (existingTasks) {\n var taskIndex = findTaskIndex(existingTasks, eventType, listenerFn, capture);\n\n if (taskIndex !== -1) {\n var _task = existingTasks[taskIndex];\n return _task.wrappingFn;\n }\n } else {\n existingTasks = target[eventSymbol] = [];\n }\n\n var task = {\n source: EVENT_TARGET,\n target: target,\n eventType: eventType,\n listenerFn: listenerFn,\n capture: capture,\n wrappingFn: wrappingFn\n };\n existingTasks.push(task);\n\n function wrappingFn() {\n callback(SCHEDULE, task);\n var result;\n\n try {\n result = listenerFn.apply(this, arguments);\n } finally {\n callback(INVOKE, task);\n }\n\n return result;\n }\n\n return wrappingFn;\n }\n\n function getWrappingFn(target, eventType, listenerFn, options) {\n var eventSymbol = eventTypeSymbols[eventType];\n var existingTasks = target[eventSymbol];\n\n if (existingTasks) {\n var capture = isCapture(options);\n var taskIndex = findTaskIndex(existingTasks, eventType, listenerFn, capture);\n\n if (taskIndex !== -1) {\n var task = existingTasks[taskIndex];\n existingTasks.splice(taskIndex, 1);\n\n if (existingTasks.length === 0) {\n target[eventSymbol] = undefined;\n }\n\n return task.wrappingFn;\n }\n }\n\n return listenerFn;\n }\n\n proto[ADD_EVENT_LISTENER_STR] = function (eventType, listenerFn, optionsOrCapture) {\n var target = this;\n\n if (!shouldInstrumentEvent(target, eventType, listenerFn)) {\n return nativeAddEventListener.apply(target, arguments);\n }\n\n var wrappingListenerFn = createListenerWrapper(target, eventType, listenerFn, optionsOrCapture);\n var args = Array.prototype.slice.call(arguments);\n args[1] = wrappingListenerFn;\n return nativeAddEventListener.apply(target, args);\n };\n\n proto[REMOVE_EVENT_LISTENER_STR] = function (eventType, listenerFn, optionsOrCapture) {\n var target = this;\n\n if (!shouldInstrumentEvent(target, eventType, listenerFn)) {\n return nativeRemoveEventListener.apply(target, arguments);\n }\n\n var wrappingFn = getWrappingFn(target, eventType, listenerFn, optionsOrCapture);\n var args = Array.prototype.slice.call(arguments);\n args[1] = wrappingFn;\n return nativeRemoveEventListener.apply(target, args);\n };\n}","import { BEFORE_EVENT, AFTER_EVENT } from './constants';\n\nvar EventHandler = function () {\n function EventHandler() {\n this.observers = {};\n }\n\n var _proto = EventHandler.prototype;\n\n _proto.observe = function observe(name, fn) {\n var _this = this;\n\n if (typeof fn === 'function') {\n if (!this.observers[name]) {\n this.observers[name] = [];\n }\n\n this.observers[name].push(fn);\n return function () {\n var index = _this.observers[name].indexOf(fn);\n\n if (index > -1) {\n _this.observers[name].splice(index, 1);\n }\n };\n }\n };\n\n _proto.sendOnly = function sendOnly(name, args) {\n var obs = this.observers[name];\n\n if (obs) {\n obs.forEach(function (fn) {\n try {\n fn.apply(undefined, args);\n } catch (error) {\n console.log(error, error.stack);\n }\n });\n }\n };\n\n _proto.send = function send(name, args) {\n this.sendOnly(name + BEFORE_EVENT, args);\n this.sendOnly(name, args);\n this.sendOnly(name + AFTER_EVENT, args);\n };\n\n return EventHandler;\n}();\n\nexport default EventHandler;","import { patchXMLHttpRequest } from './xhr-patch';\nimport { patchFetch } from './fetch-patch';\nimport { patchHistory } from './history-patch';\nimport { patchEventTarget } from './event-target-patch';\nimport EventHandler from '../event-handler';\nimport { HISTORY, FETCH, XMLHTTPREQUEST, EVENT_TARGET } from '../constants';\nvar patchEventHandler = new EventHandler();\nvar alreadyPatched = false;\n\nfunction patchAll() {\n if (!alreadyPatched) {\n alreadyPatched = true;\n patchXMLHttpRequest(function (event, task) {\n patchEventHandler.send(XMLHTTPREQUEST, [event, task]);\n });\n patchFetch(function (event, task) {\n patchEventHandler.send(FETCH, [event, task]);\n });\n patchHistory(function (event, task) {\n patchEventHandler.send(HISTORY, [event, task]);\n });\n patchEventTarget(function (event, task) {\n patchEventHandler.send(EVENT_TARGET, [event, task]);\n });\n }\n\n return patchEventHandler;\n}\n\nexport { patchAll, patchEventHandler };","import { Promise } from '../polyfills';\nimport { globalState } from './patch-utils';\nimport { SCHEDULE, INVOKE, FETCH } from '../constants';\nimport { scheduleMicroTask } from '../utils';\nexport function patchFetch(callback) {\n if (!window.fetch || !window.Request) {\n return;\n }\n\n function scheduleTask(task) {\n task.state = SCHEDULE;\n callback(SCHEDULE, task);\n }\n\n function invokeTask(task) {\n task.state = INVOKE;\n callback(INVOKE, task);\n }\n\n var nativeFetch = window.fetch;\n\n window.fetch = function (input, init) {\n var fetchSelf = this;\n var args = arguments;\n var request, url;\n\n if (typeof input === 'string') {\n request = new Request(input, init);\n url = input;\n } else if (input) {\n request = input;\n url = request.url;\n } else {\n return nativeFetch.apply(fetchSelf, args);\n }\n\n var task = {\n source: FETCH,\n state: '',\n type: 'macroTask',\n data: {\n target: request,\n method: request.method,\n url: url,\n aborted: false\n }\n };\n return new Promise(function (resolve, reject) {\n globalState.fetchInProgress = true;\n scheduleTask(task);\n var promise;\n\n try {\n promise = nativeFetch.apply(fetchSelf, [request]);\n } catch (error) {\n reject(error);\n task.data.error = error;\n invokeTask(task);\n globalState.fetchInProgress = false;\n return;\n }\n\n promise.then(function (response) {\n resolve(response);\n scheduleMicroTask(function () {\n task.data.response = response;\n invokeTask(task);\n });\n }, function (error) {\n reject(error);\n scheduleMicroTask(function () {\n task.data.error = error;\n invokeTask(task);\n });\n });\n globalState.fetchInProgress = false;\n });\n };\n}","import { INVOKE, HISTORY } from '../constants';\nexport function patchHistory(callback) {\n if (!window.history) {\n return;\n }\n\n var nativePushState = history.pushState;\n\n if (typeof nativePushState === 'function') {\n history.pushState = function (state, title, url) {\n var task = {\n source: HISTORY,\n data: {\n state: state,\n title: title,\n url: url\n }\n };\n callback(INVOKE, task);\n nativePushState.apply(this, arguments);\n };\n }\n}","var __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar state = {\n bootstrapTime: null,\n lastHiddenStart: Number.MIN_SAFE_INTEGER\n};\nexport { __DEV__, state };","import { isPlatformSupported, isBrowser, now } from './common/utils';\nimport { patchAll } from './common/patching';\nimport { state } from './state';\nvar enabled = false;\nexport function bootstrap() {\n if (isPlatformSupported()) {\n patchAll();\n bootstrapPerf();\n state.bootstrapTime = now();\n enabled = true;\n } else if (isBrowser) {\n console.log('[Elastic APM] platform is not supported!');\n }\n\n return enabled;\n}\nexport function bootstrapPerf() {\n if (document.visibilityState === 'hidden') {\n state.lastHiddenStart = 0;\n }\n\n window.addEventListener('visibilitychange', function () {\n if (document.visibilityState === 'hidden') {\n state.lastHiddenStart = performance.now();\n }\n }, {\n capture: true\n });\n}","import stackParser from 'error-stack-parser';\n\nfunction filePathToFileName(fileUrl) {\n var origin = window.location.origin || window.location.protocol + '//' + window.location.hostname + (window.location.port ? ':' + window.location.port : '');\n\n if (fileUrl.indexOf(origin) > -1) {\n fileUrl = fileUrl.replace(origin + '/', '');\n }\n\n return fileUrl;\n}\n\nfunction cleanFilePath(filePath) {\n if (filePath === void 0) {\n filePath = '';\n }\n\n if (filePath === '') {\n filePath = '';\n }\n\n return filePath;\n}\n\nfunction isFileInline(fileUrl) {\n if (fileUrl) {\n return window.location.href.indexOf(fileUrl) === 0;\n }\n\n return false;\n}\n\nfunction normalizeStackFrames(stackFrames) {\n return stackFrames.map(function (frame) {\n if (frame.functionName) {\n frame.functionName = normalizeFunctionName(frame.functionName);\n }\n\n return frame;\n });\n}\n\nfunction normalizeFunctionName(fnName) {\n var parts = fnName.split('/');\n\n if (parts.length > 1) {\n fnName = ['Object', parts[parts.length - 1]].join('.');\n } else {\n fnName = parts[0];\n }\n\n fnName = fnName.replace(/.<$/gi, '.');\n fnName = fnName.replace(/^Anonymous function$/, '');\n parts = fnName.split('.');\n\n if (parts.length > 1) {\n fnName = parts[parts.length - 1];\n } else {\n fnName = parts[0];\n }\n\n return fnName;\n}\n\nexport function createStackTraces(errorEvent) {\n var error = errorEvent.error,\n filename = errorEvent.filename,\n lineno = errorEvent.lineno,\n colno = errorEvent.colno;\n var stackTraces = [];\n\n if (error) {\n try {\n stackTraces = stackParser.parse(error);\n } catch (e) {}\n }\n\n if (stackTraces.length === 0) {\n stackTraces = [{\n fileName: filename,\n lineNumber: lineno,\n columnNumber: colno\n }];\n }\n\n var normalizedStackTraces = normalizeStackFrames(stackTraces);\n return normalizedStackTraces.map(function (stack) {\n var fileName = stack.fileName,\n lineNumber = stack.lineNumber,\n columnNumber = stack.columnNumber,\n _stack$functionName = stack.functionName,\n functionName = _stack$functionName === void 0 ? '' : _stack$functionName;\n\n if (!fileName && !lineNumber) {\n return {};\n }\n\n if (!columnNumber && !lineNumber) {\n return {};\n }\n\n var filePath = cleanFilePath(fileName);\n var cleanedFileName = filePathToFileName(filePath);\n\n if (isFileInline(filePath)) {\n cleanedFileName = '(inline script)';\n }\n\n return {\n abs_path: fileName,\n filename: cleanedFileName,\n function: functionName,\n lineno: lineNumber,\n colno: columnNumber\n };\n });\n}\nexport function filterInvalidFrames(frames) {\n return frames.filter(function (_ref) {\n var filename = _ref.filename,\n lineno = _ref.lineno;\n return typeof filename !== 'undefined' && typeof lineno !== 'undefined';\n });\n}","import { isBrowser } from './utils';\n\nfunction isDefaultPort(port, protocol) {\n switch (protocol) {\n case 'http:':\n return port === '80';\n\n case 'https:':\n return port === '443';\n }\n\n return true;\n}\n\nvar RULES = [['#', 'hash'], ['?', 'query'], ['/', 'path'], ['@', 'auth', 1], [NaN, 'host', undefined, 1]];\nvar PROTOCOL_REGEX = /^([a-z][a-z0-9.+-]*:)?(\\/\\/)?([\\S\\s]*)/i;\nexport var Url = function () {\n function Url(url) {\n var _this$extractProtocol = this.extractProtocol(url || ''),\n protocol = _this$extractProtocol.protocol,\n address = _this$extractProtocol.address,\n slashes = _this$extractProtocol.slashes;\n\n var relative = !protocol && !slashes;\n var location = this.getLocation();\n var instructions = RULES.slice();\n address = address.replace('\\\\', '/');\n\n if (!slashes) {\n instructions[2] = [NaN, 'path'];\n }\n\n var index;\n\n for (var i = 0; i < instructions.length; i++) {\n var instruction = instructions[i];\n var parse = instruction[0];\n var key = instruction[1];\n\n if (typeof parse === 'string') {\n index = address.indexOf(parse);\n\n if (~index) {\n var instLength = instruction[2];\n\n if (instLength) {\n var newIndex = address.lastIndexOf(parse);\n index = Math.max(index, newIndex);\n this[key] = address.slice(0, index);\n address = address.slice(index + instLength);\n } else {\n this[key] = address.slice(index);\n address = address.slice(0, index);\n }\n }\n } else {\n this[key] = address;\n address = '';\n }\n\n this[key] = this[key] || (relative && instruction[3] ? location[key] || '' : '');\n if (instruction[3]) this[key] = this[key].toLowerCase();\n }\n\n if (relative && this.path.charAt(0) !== '/') {\n this.path = '/' + this.path;\n }\n\n this.relative = relative;\n this.protocol = protocol || location.protocol;\n this.hostname = this.host;\n this.port = '';\n\n if (/:\\d+$/.test(this.host)) {\n var value = this.host.split(':');\n var port = value.pop();\n var hostname = value.join(':');\n\n if (isDefaultPort(port, this.protocol)) {\n this.host = hostname;\n } else {\n this.port = port;\n }\n\n this.hostname = hostname;\n }\n\n this.origin = this.protocol && this.host && this.protocol !== 'file:' ? this.protocol + '//' + this.host : 'null';\n this.href = this.toString();\n }\n\n var _proto = Url.prototype;\n\n _proto.toString = function toString() {\n var result = this.protocol;\n result += '//';\n\n if (this.auth) {\n var REDACTED = '[REDACTED]';\n var userpass = this.auth.split(':');\n var username = userpass[0] ? REDACTED : '';\n var password = userpass[1] ? ':' + REDACTED : '';\n result += username + password + '@';\n }\n\n result += this.host;\n result += this.path;\n result += this.query;\n result += this.hash;\n return result;\n };\n\n _proto.getLocation = function getLocation() {\n var globalVar = {};\n\n if (isBrowser) {\n globalVar = window;\n }\n\n return globalVar.location;\n };\n\n _proto.extractProtocol = function extractProtocol(url) {\n var match = PROTOCOL_REGEX.exec(url);\n return {\n protocol: match[1] ? match[1].toLowerCase() : '',\n slashes: !!match[2],\n address: match[3]\n };\n };\n\n return Url;\n}();\nexport function slugifyUrl(urlStr, depth) {\n if (depth === void 0) {\n depth = 2;\n }\n\n var parsedUrl = new Url(urlStr);\n var query = parsedUrl.query,\n path = parsedUrl.path;\n var pathParts = path.substring(1).split('/');\n var redactString = ':id';\n var wildcard = '*';\n var specialCharsRegex = /\\W|_/g;\n var digitsRegex = /[0-9]/g;\n var lowerCaseRegex = /[a-z]/g;\n var upperCaseRegex = /[A-Z]/g;\n var redactedParts = [];\n var redactedBefore = false;\n\n for (var _index = 0; _index < pathParts.length; _index++) {\n var part = pathParts[_index];\n\n if (redactedBefore || _index > depth - 1) {\n if (part) {\n redactedParts.push(wildcard);\n }\n\n break;\n }\n\n var numberOfSpecialChars = (part.match(specialCharsRegex) || []).length;\n\n if (numberOfSpecialChars >= 2) {\n redactedParts.push(redactString);\n redactedBefore = true;\n continue;\n }\n\n var numberOfDigits = (part.match(digitsRegex) || []).length;\n\n if (numberOfDigits > 3 || part.length > 3 && numberOfDigits / part.length >= 0.3) {\n redactedParts.push(redactString);\n redactedBefore = true;\n continue;\n }\n\n var numberofUpperCase = (part.match(upperCaseRegex) || []).length;\n var numberofLowerCase = (part.match(lowerCaseRegex) || []).length;\n var lowerCaseRate = numberofLowerCase / part.length;\n var upperCaseRate = numberofUpperCase / part.length;\n\n if (part.length > 5 && (upperCaseRate > 0.3 && upperCaseRate < 0.6 || lowerCaseRate > 0.3 && lowerCaseRate < 0.6)) {\n redactedParts.push(redactString);\n redactedBefore = true;\n continue;\n }\n\n part && redactedParts.push(part);\n }\n\n var redacted = '/' + (redactedParts.length >= 2 ? redactedParts.join('/') : redactedParts.join('')) + (query ? '?{query}' : '');\n return redacted;\n}","function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport { Url } from './url';\nimport { PAGE_LOAD, NAVIGATION } from './constants';\nimport { getServerTimingInfo, PERF, isPerfTimelineSupported } from './utils';\nvar LEFT_SQUARE_BRACKET = 91;\nvar RIGHT_SQUARE_BRACKET = 93;\nvar EXTERNAL = 'external';\nvar RESOURCE = 'resource';\nvar HARD_NAVIGATION = 'hard-navigation';\n\nfunction getPortNumber(port, protocol) {\n if (port === '') {\n port = protocol === 'http:' ? '80' : protocol === 'https:' ? '443' : '';\n }\n\n return port;\n}\n\nfunction getResponseContext(perfTimingEntry) {\n var transferSize = perfTimingEntry.transferSize,\n encodedBodySize = perfTimingEntry.encodedBodySize,\n decodedBodySize = perfTimingEntry.decodedBodySize,\n serverTiming = perfTimingEntry.serverTiming;\n var respContext = {\n transfer_size: transferSize,\n encoded_body_size: encodedBodySize,\n decoded_body_size: decodedBodySize\n };\n var serverTimingStr = getServerTimingInfo(serverTiming);\n\n if (serverTimingStr) {\n respContext.headers = {\n 'server-timing': serverTimingStr\n };\n }\n\n return respContext;\n}\n\nfunction getDestination(parsedUrl, type) {\n var port = parsedUrl.port,\n protocol = parsedUrl.protocol,\n hostname = parsedUrl.hostname,\n host = parsedUrl.host;\n var portNumber = getPortNumber(port, protocol);\n var ipv6Hostname = hostname.charCodeAt(0) === LEFT_SQUARE_BRACKET && hostname.charCodeAt(hostname.length - 1) === RIGHT_SQUARE_BRACKET;\n var address = hostname;\n\n if (ipv6Hostname) {\n address = hostname.slice(1, -1);\n }\n\n return {\n service: {\n name: protocol + '//' + host,\n resource: hostname + ':' + portNumber,\n type: type\n },\n address: address,\n port: Number(portNumber)\n };\n}\n\nfunction getResourceContext(data) {\n var entry = data.entry,\n url = data.url;\n var parsedUrl = new Url(url);\n var destination = getDestination(parsedUrl, RESOURCE);\n return {\n http: {\n url: url,\n response: getResponseContext(entry)\n },\n destination: destination\n };\n}\n\nfunction getExternalContext(data) {\n var url = data.url,\n method = data.method,\n target = data.target,\n response = data.response;\n var parsedUrl = new Url(url);\n var destination = getDestination(parsedUrl, EXTERNAL);\n var context = {\n http: {\n method: method,\n url: parsedUrl.href\n },\n destination: destination\n };\n var statusCode;\n\n if (target && typeof target.status !== 'undefined') {\n statusCode = target.status;\n } else if (response) {\n statusCode = response.status;\n }\n\n context.http.status_code = statusCode;\n return context;\n}\n\nfunction getNavigationContext(data) {\n var url = data.url;\n var parsedUrl = new Url(url);\n var destination = getDestination(parsedUrl, HARD_NAVIGATION);\n return {\n destination: destination\n };\n}\n\nexport function getPageContext() {\n return {\n page: {\n referer: document.referrer,\n url: location.href\n }\n };\n}\nexport function addSpanContext(span, data) {\n if (!data) {\n return;\n }\n\n var type = span.type;\n var context;\n\n switch (type) {\n case EXTERNAL:\n context = getExternalContext(data);\n break;\n\n case RESOURCE:\n context = getResourceContext(data);\n break;\n\n case HARD_NAVIGATION:\n context = getNavigationContext(data);\n break;\n }\n\n span.addContext(context);\n}\nexport function addTransactionContext(transaction, _temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n tags = _ref.tags,\n configContext = _objectWithoutPropertiesLoose(_ref, [\"tags\"]);\n\n var pageContext = getPageContext();\n var responseContext = {};\n\n if (transaction.type === PAGE_LOAD && isPerfTimelineSupported()) {\n var entries = PERF.getEntriesByType(NAVIGATION);\n\n if (entries && entries.length > 0) {\n responseContext = {\n response: getResponseContext(entries[0])\n };\n }\n }\n\n transaction.addContext(pageContext, responseContext, configContext);\n}","import { KEYWORD_LIMIT } from './constants';\nvar METADATA_MODEL = {\n service: {\n name: [KEYWORD_LIMIT, true],\n version: true,\n agent: {\n version: [KEYWORD_LIMIT, true]\n },\n environment: true\n },\n labels: {\n '*': true\n }\n};\nvar RESPONSE_MODEL = {\n '*': true,\n headers: {\n '*': true\n }\n};\nvar DESTINATION_MODEL = {\n address: [KEYWORD_LIMIT],\n service: {\n '*': [KEYWORD_LIMIT, true]\n }\n};\nvar CONTEXT_MODEL = {\n user: {\n id: true,\n email: true,\n username: true\n },\n tags: {\n '*': true\n },\n http: {\n response: RESPONSE_MODEL\n },\n destination: DESTINATION_MODEL,\n response: RESPONSE_MODEL\n};\nvar SPAN_MODEL = {\n name: [KEYWORD_LIMIT, true],\n type: [KEYWORD_LIMIT, true],\n id: [KEYWORD_LIMIT, true],\n trace_id: [KEYWORD_LIMIT, true],\n parent_id: [KEYWORD_LIMIT, true],\n transaction_id: [KEYWORD_LIMIT, true],\n subtype: true,\n action: true,\n context: CONTEXT_MODEL\n};\nvar TRANSACTION_MODEL = {\n name: true,\n parent_id: true,\n type: [KEYWORD_LIMIT, true],\n id: [KEYWORD_LIMIT, true],\n trace_id: [KEYWORD_LIMIT, true],\n span_count: {\n started: [KEYWORD_LIMIT, true]\n },\n context: CONTEXT_MODEL\n};\nvar ERROR_MODEL = {\n id: [KEYWORD_LIMIT, true],\n trace_id: true,\n transaction_id: true,\n parent_id: true,\n culprit: true,\n exception: {\n type: true\n },\n transaction: {\n type: true\n },\n context: CONTEXT_MODEL\n};\n\nfunction truncate(value, limit, required, placeholder) {\n if (limit === void 0) {\n limit = KEYWORD_LIMIT;\n }\n\n if (required === void 0) {\n required = false;\n }\n\n if (placeholder === void 0) {\n placeholder = 'N/A';\n }\n\n if (required && isEmpty(value)) {\n value = placeholder;\n }\n\n if (typeof value === 'string') {\n return value.substring(0, limit);\n }\n\n return value;\n}\n\nfunction isEmpty(value) {\n return value == null || value === '' || typeof value === 'undefined';\n}\n\nfunction replaceValue(target, key, currModel) {\n var value = truncate(target[key], currModel[0], currModel[1]);\n\n if (isEmpty(value)) {\n delete target[key];\n return;\n }\n\n target[key] = value;\n}\n\nfunction truncateModel(model, target, childTarget) {\n if (model === void 0) {\n model = {};\n }\n\n if (childTarget === void 0) {\n childTarget = target;\n }\n\n var keys = Object.keys(model);\n var emptyArr = [];\n\n var _loop = function _loop(i) {\n var currKey = keys[i];\n var currModel = model[currKey] === true ? emptyArr : model[currKey];\n\n if (!Array.isArray(currModel)) {\n truncateModel(currModel, target, childTarget[currKey]);\n } else {\n if (currKey === '*') {\n Object.keys(childTarget).forEach(function (key) {\n return replaceValue(childTarget, key, currModel);\n });\n } else {\n replaceValue(childTarget, currKey, currModel);\n }\n }\n };\n\n for (var i = 0; i < keys.length; i++) {\n _loop(i);\n }\n\n return target;\n}\n\nexport { truncate, truncateModel, SPAN_MODEL, TRANSACTION_MODEL, ERROR_MODEL, METADATA_MODEL, RESPONSE_MODEL };","function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport { createStackTraces, filterInvalidFrames } from './stack-trace';\nimport { generateRandomId, merge, extend } from '../common/utils';\nimport { getPageContext } from '../common/context';\nimport { truncateModel, ERROR_MODEL } from '../common/truncate';\nvar IGNORE_KEYS = ['stack', 'message'];\n\nfunction getErrorProperties(error) {\n var propertyFound = false;\n var properties = {};\n Object.keys(error).forEach(function (key) {\n if (IGNORE_KEYS.indexOf(key) >= 0) {\n return;\n }\n\n var val = error[key];\n\n if (val == null || typeof val === 'function') {\n return;\n }\n\n if (typeof val === 'object') {\n if (typeof val.toISOString !== 'function') return;\n val = val.toISOString();\n }\n\n properties[key] = val;\n propertyFound = true;\n });\n\n if (propertyFound) {\n return properties;\n }\n}\n\nvar ErrorLogging = function () {\n function ErrorLogging(apmServer, configService, transactionService) {\n this._apmServer = apmServer;\n this._configService = configService;\n this._transactionService = transactionService;\n }\n\n var _proto = ErrorLogging.prototype;\n\n _proto.createErrorDataModel = function createErrorDataModel(errorEvent) {\n var frames = createStackTraces(errorEvent);\n var filteredFrames = filterInvalidFrames(frames);\n var culprit = '(inline script)';\n var lastFrame = filteredFrames[filteredFrames.length - 1];\n\n if (lastFrame && lastFrame.filename) {\n culprit = lastFrame.filename;\n }\n\n var message = errorEvent.message,\n error = errorEvent.error;\n var errorMessage = message;\n var errorType = '';\n var errorContext = {};\n\n if (error && typeof error === 'object') {\n errorMessage = errorMessage || error.message;\n errorType = error.name;\n var customProperties = getErrorProperties(error);\n\n if (customProperties) {\n errorContext.custom = customProperties;\n }\n }\n\n if (!errorType) {\n if (errorMessage && errorMessage.indexOf(':') > -1) {\n errorType = errorMessage.split(':')[0];\n }\n }\n\n var currentTransaction = this._transactionService.getCurrentTransaction();\n\n var transactionContext = currentTransaction ? currentTransaction.context : {};\n\n var _this$_configService$ = this._configService.get('context'),\n tags = _this$_configService$.tags,\n configContext = _objectWithoutPropertiesLoose(_this$_configService$, [\"tags\"]);\n\n var pageContext = getPageContext();\n var context = merge({}, pageContext, transactionContext, configContext, errorContext);\n var errorObject = {\n id: generateRandomId(),\n culprit: culprit,\n exception: {\n message: errorMessage,\n stacktrace: filteredFrames,\n type: errorType\n },\n context: context\n };\n\n if (currentTransaction) {\n errorObject = extend(errorObject, {\n trace_id: currentTransaction.traceId,\n parent_id: currentTransaction.id,\n transaction_id: currentTransaction.id,\n transaction: {\n type: currentTransaction.type,\n sampled: currentTransaction.sampled\n }\n });\n }\n\n return truncateModel(ERROR_MODEL, errorObject);\n };\n\n _proto.logErrorEvent = function logErrorEvent(errorEvent) {\n if (typeof errorEvent === 'undefined') {\n return;\n }\n\n var errorObject = this.createErrorDataModel(errorEvent);\n\n if (typeof errorObject.exception.message === 'undefined') {\n return;\n }\n\n this._apmServer.addError(errorObject);\n };\n\n _proto.registerListeners = function registerListeners() {\n var _this = this;\n\n window.addEventListener('error', function (errorEvent) {\n return _this.logErrorEvent(errorEvent);\n });\n window.addEventListener('unhandledrejection', function (promiseRejectionEvent) {\n return _this.logPromiseEvent(promiseRejectionEvent);\n });\n };\n\n _proto.logPromiseEvent = function logPromiseEvent(promiseRejectionEvent) {\n var prefix = 'Unhandled promise rejection: ';\n var reason = promiseRejectionEvent.reason;\n\n if (reason == null) {\n reason = '';\n }\n\n var errorEvent;\n\n if (typeof reason.message === 'string') {\n var name = reason.name ? reason.name + ': ' : '';\n errorEvent = {\n error: reason,\n message: prefix + name + reason.message\n };\n } else {\n reason = typeof reason === 'object' ? '' : typeof reason === 'function' ? '' : reason;\n errorEvent = {\n message: prefix + reason\n };\n }\n\n this.logErrorEvent(errorEvent);\n };\n\n _proto.logError = function logError(messageOrError) {\n var errorEvent = {};\n\n if (typeof messageOrError === 'string') {\n errorEvent.message = messageOrError;\n } else {\n errorEvent.error = messageOrError;\n }\n\n return this.logErrorEvent(errorEvent);\n };\n\n return ErrorLogging;\n}();\n\nexport default ErrorLogging;","var Queue = function () {\n function Queue(onFlush, opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n this.onFlush = onFlush;\n this.items = [];\n this.queueLimit = opts.queueLimit || -1;\n this.flushInterval = opts.flushInterval || 0;\n this.timeoutId = undefined;\n }\n\n var _proto = Queue.prototype;\n\n _proto._setTimer = function _setTimer() {\n var _this = this;\n\n this.timeoutId = setTimeout(function () {\n return _this.flush();\n }, this.flushInterval);\n };\n\n _proto._clear = function _clear() {\n if (typeof this.timeoutId !== 'undefined') {\n clearTimeout(this.timeoutId);\n this.timeoutId = undefined;\n }\n\n this.items = [];\n };\n\n _proto.flush = function flush() {\n this.onFlush(this.items);\n\n this._clear();\n };\n\n _proto.add = function add(item) {\n this.items.push(item);\n\n if (this.queueLimit !== -1 && this.items.length >= this.queueLimit) {\n this.flush();\n } else {\n if (typeof this.timeoutId === 'undefined') {\n this._setTimer();\n }\n }\n };\n\n return Queue;\n}();\n\nexport default Queue;","var NDJSON = function () {\n function NDJSON() {}\n\n NDJSON.stringify = function stringify(object) {\n return JSON.stringify(object) + '\\n';\n };\n\n return NDJSON;\n}();\n\nexport default NDJSON;","import { generateRandomId, setLabel, merge, getDuration, getTime } from '../common/utils';\nimport { NAME_UNKNOWN, TYPE_CUSTOM } from '../common/constants';\n\nvar SpanBase = function () {\n function SpanBase(name, type, options) {\n if (options === void 0) {\n options = {};\n }\n\n if (!name) {\n name = NAME_UNKNOWN;\n }\n\n if (!type) {\n type = TYPE_CUSTOM;\n }\n\n this.name = name;\n this.type = type;\n this.options = options;\n this.id = options.id || generateRandomId(16);\n this.traceId = options.traceId;\n this.sampled = options.sampled;\n this.sampleRate = options.sampleRate;\n this.timestamp = options.timestamp;\n this._start = getTime(options.startTime);\n this._end = undefined;\n this.ended = false;\n this.outcome = undefined;\n this.onEnd = options.onEnd;\n }\n\n var _proto = SpanBase.prototype;\n\n _proto.ensureContext = function ensureContext() {\n if (!this.context) {\n this.context = {};\n }\n };\n\n _proto.addLabels = function addLabels(tags) {\n this.ensureContext();\n var ctx = this.context;\n\n if (!ctx.tags) {\n ctx.tags = {};\n }\n\n var keys = Object.keys(tags);\n keys.forEach(function (k) {\n return setLabel(k, tags[k], ctx.tags);\n });\n };\n\n _proto.addContext = function addContext() {\n for (var _len = arguments.length, context = new Array(_len), _key = 0; _key < _len; _key++) {\n context[_key] = arguments[_key];\n }\n\n if (context.length === 0) return;\n this.ensureContext();\n merge.apply(void 0, [this.context].concat(context));\n };\n\n _proto.end = function end(endTime) {\n if (this.ended) {\n return;\n }\n\n this.ended = true;\n this._end = getTime(endTime);\n this.callOnEnd();\n };\n\n _proto.callOnEnd = function callOnEnd() {\n if (typeof this.onEnd === 'function') {\n this.onEnd(this);\n }\n };\n\n _proto.duration = function duration() {\n return getDuration(this._start, this._end);\n };\n\n return SpanBase;\n}();\n\nexport default SpanBase;","function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nimport SpanBase from './span-base';\nimport { addSpanContext } from '../common/context';\n\nvar Span = function (_SpanBase) {\n _inheritsLoose(Span, _SpanBase);\n\n function Span(name, type, options) {\n var _this;\n\n _this = _SpanBase.call(this, name, type, options) || this;\n _this.parentId = _this.options.parentId;\n _this.subtype = undefined;\n _this.action = undefined;\n\n if (_this.type.indexOf('.') !== -1) {\n var fields = _this.type.split('.', 3);\n\n _this.type = fields[0];\n _this.subtype = fields[1];\n _this.action = fields[2];\n }\n\n _this.sync = _this.options.sync;\n return _this;\n }\n\n var _proto = Span.prototype;\n\n _proto.end = function end(endTime, data) {\n _SpanBase.prototype.end.call(this, endTime);\n\n addSpanContext(this, data);\n };\n\n return Span;\n}(SpanBase);\n\nexport default Span;","import Span from './span';\nimport { RESOURCE_INITIATOR_TYPES, MAX_SPAN_DURATION, USER_TIMING_THRESHOLD, PAGE_LOAD, RESOURCE, MEASURE } from '../common/constants';\nimport { stripQueryStringFromUrl, PERF, isPerfTimelineSupported } from '../common/utils';\nimport { state } from '../state';\nvar eventPairs = [['domainLookupStart', 'domainLookupEnd', 'Domain lookup'], ['connectStart', 'connectEnd', 'Making a connection to the server'], ['requestStart', 'responseEnd', 'Requesting and receiving the document'], ['domLoading', 'domInteractive', 'Parsing the document, executing sync. scripts'], ['domContentLoadedEventStart', 'domContentLoadedEventEnd', 'Fire \"DOMContentLoaded\" event'], ['loadEventStart', 'loadEventEnd', 'Fire \"load\" event']];\n\nfunction shouldCreateSpan(start, end, trStart, trEnd, baseTime) {\n if (baseTime === void 0) {\n baseTime = 0;\n }\n\n return typeof start === 'number' && typeof end === 'number' && start >= baseTime && end > start && start - baseTime >= trStart && end - baseTime <= trEnd && end - start < MAX_SPAN_DURATION && start - baseTime < MAX_SPAN_DURATION && end - baseTime < MAX_SPAN_DURATION;\n}\n\nfunction createNavigationTimingSpans(timings, baseTime, trStart, trEnd) {\n var spans = [];\n\n for (var i = 0; i < eventPairs.length; i++) {\n var start = timings[eventPairs[i][0]];\n var end = timings[eventPairs[i][1]];\n\n if (!shouldCreateSpan(start, end, trStart, trEnd, baseTime)) {\n continue;\n }\n\n var span = new Span(eventPairs[i][2], 'hard-navigation.browser-timing');\n var data = null;\n\n if (eventPairs[i][0] === 'requestStart') {\n span.pageResponse = true;\n data = {\n url: location.origin\n };\n }\n\n span._start = start - baseTime;\n span.end(end - baseTime, data);\n spans.push(span);\n }\n\n return spans;\n}\n\nfunction createResourceTimingSpan(resourceTimingEntry) {\n var name = resourceTimingEntry.name,\n initiatorType = resourceTimingEntry.initiatorType,\n startTime = resourceTimingEntry.startTime,\n responseEnd = resourceTimingEntry.responseEnd;\n var kind = 'resource';\n\n if (initiatorType) {\n kind += '.' + initiatorType;\n }\n\n var spanName = stripQueryStringFromUrl(name);\n var span = new Span(spanName, kind);\n span._start = startTime;\n span.end(responseEnd, {\n url: name,\n entry: resourceTimingEntry\n });\n return span;\n}\n\nfunction isCapturedByPatching(resourceStartTime, requestPatchTime) {\n return requestPatchTime != null && resourceStartTime > requestPatchTime;\n}\n\nfunction isIntakeAPIEndpoint(url) {\n return /intake\\/v\\d+\\/rum\\/events/.test(url);\n}\n\nfunction createResourceTimingSpans(entries, requestPatchTime, trStart, trEnd) {\n var spans = [];\n\n for (var i = 0; i < entries.length; i++) {\n var _entries$i = entries[i],\n initiatorType = _entries$i.initiatorType,\n name = _entries$i.name,\n startTime = _entries$i.startTime,\n responseEnd = _entries$i.responseEnd;\n\n if (RESOURCE_INITIATOR_TYPES.indexOf(initiatorType) === -1 || name == null) {\n continue;\n }\n\n if ((initiatorType === 'xmlhttprequest' || initiatorType === 'fetch') && (isIntakeAPIEndpoint(name) || isCapturedByPatching(startTime, requestPatchTime))) {\n continue;\n }\n\n if (shouldCreateSpan(startTime, responseEnd, trStart, trEnd)) {\n spans.push(createResourceTimingSpan(entries[i]));\n }\n }\n\n return spans;\n}\n\nfunction createUserTimingSpans(entries, trStart, trEnd) {\n var userTimingSpans = [];\n\n for (var i = 0; i < entries.length; i++) {\n var _entries$i2 = entries[i],\n name = _entries$i2.name,\n startTime = _entries$i2.startTime,\n duration = _entries$i2.duration;\n var end = startTime + duration;\n\n if (duration <= USER_TIMING_THRESHOLD || !shouldCreateSpan(startTime, end, trStart, trEnd)) {\n continue;\n }\n\n var kind = 'app';\n var span = new Span(name, kind);\n span._start = startTime;\n span.end(end);\n userTimingSpans.push(span);\n }\n\n return userTimingSpans;\n}\n\nvar NAVIGATION_TIMING_MARKS = ['fetchStart', 'domainLookupStart', 'domainLookupEnd', 'connectStart', 'connectEnd', 'requestStart', 'responseStart', 'responseEnd', 'domLoading', 'domInteractive', 'domContentLoadedEventStart', 'domContentLoadedEventEnd', 'domComplete', 'loadEventStart', 'loadEventEnd'];\nvar COMPRESSED_NAV_TIMING_MARKS = ['fs', 'ls', 'le', 'cs', 'ce', 'qs', 'rs', 're', 'dl', 'di', 'ds', 'de', 'dc', 'es', 'ee'];\n\nfunction getNavigationTimingMarks(timing) {\n var fetchStart = timing.fetchStart,\n navigationStart = timing.navigationStart,\n responseStart = timing.responseStart,\n responseEnd = timing.responseEnd;\n\n if (fetchStart >= navigationStart && responseStart >= fetchStart && responseEnd >= responseStart) {\n var marks = {};\n NAVIGATION_TIMING_MARKS.forEach(function (timingKey) {\n var m = timing[timingKey];\n\n if (m && m >= fetchStart) {\n marks[timingKey] = parseInt(m - fetchStart);\n }\n });\n return marks;\n }\n\n return null;\n}\n\nfunction getPageLoadMarks(timing) {\n var marks = getNavigationTimingMarks(timing);\n\n if (marks == null) {\n return null;\n }\n\n return {\n navigationTiming: marks,\n agent: {\n timeToFirstByte: marks.responseStart,\n domInteractive: marks.domInteractive,\n domComplete: marks.domComplete\n }\n };\n}\n\nfunction captureNavigation(transaction) {\n if (!transaction.captureTimings) {\n return;\n }\n\n var trEnd = transaction._end;\n\n if (transaction.type === PAGE_LOAD) {\n if (transaction.marks && transaction.marks.custom) {\n var customMarks = transaction.marks.custom;\n Object.keys(customMarks).forEach(function (key) {\n customMarks[key] += transaction._start;\n });\n }\n\n var trStart = 0;\n transaction._start = trStart;\n var timings = PERF.timing;\n createNavigationTimingSpans(timings, timings.fetchStart, trStart, trEnd).forEach(function (span) {\n span.traceId = transaction.traceId;\n span.sampled = transaction.sampled;\n\n if (span.pageResponse && transaction.options.pageLoadSpanId) {\n span.id = transaction.options.pageLoadSpanId;\n }\n\n transaction.spans.push(span);\n });\n transaction.addMarks(getPageLoadMarks(timings));\n }\n\n if (isPerfTimelineSupported()) {\n var _trStart = transaction._start;\n var resourceEntries = PERF.getEntriesByType(RESOURCE);\n createResourceTimingSpans(resourceEntries, state.bootstrapTime, _trStart, trEnd).forEach(function (span) {\n return transaction.spans.push(span);\n });\n var userEntries = PERF.getEntriesByType(MEASURE);\n createUserTimingSpans(userEntries, _trStart, trEnd).forEach(function (span) {\n return transaction.spans.push(span);\n });\n }\n}\n\nexport { getPageLoadMarks, captureNavigation, createNavigationTimingSpans, createResourceTimingSpans, createUserTimingSpans, NAVIGATION_TIMING_MARKS, COMPRESSED_NAV_TIMING_MARKS };","import { Promise } from './polyfills';\nimport { NAVIGATION_TIMING_MARKS, COMPRESSED_NAV_TIMING_MARKS } from '../performance-monitoring/capture-navigation';\n\nfunction compressStackFrames(frames) {\n return frames.map(function (frame) {\n return {\n ap: frame.abs_path,\n f: frame.filename,\n fn: frame.function,\n li: frame.lineno,\n co: frame.colno\n };\n });\n}\n\nfunction compressResponse(response) {\n return {\n ts: response.transfer_size,\n ebs: response.encoded_body_size,\n dbs: response.decoded_body_size\n };\n}\n\nfunction compressHTTP(http) {\n var compressed = {};\n var method = http.method,\n status_code = http.status_code,\n url = http.url,\n response = http.response;\n compressed.url = url;\n\n if (method) {\n compressed.mt = method;\n }\n\n if (status_code) {\n compressed.sc = status_code;\n }\n\n if (response) {\n compressed.r = compressResponse(response);\n }\n\n return compressed;\n}\n\nfunction compressContext(context) {\n if (!context) {\n return null;\n }\n\n var compressed = {};\n var page = context.page,\n http = context.http,\n response = context.response,\n destination = context.destination,\n user = context.user,\n custom = context.custom;\n\n if (page) {\n compressed.p = {\n rf: page.referer,\n url: page.url\n };\n }\n\n if (http) {\n compressed.h = compressHTTP(http);\n }\n\n if (response) {\n compressed.r = compressResponse(response);\n }\n\n if (destination) {\n var service = destination.service;\n compressed.dt = {\n se: {\n n: service.name,\n t: service.type,\n rc: service.resource\n },\n ad: destination.address,\n po: destination.port\n };\n }\n\n if (user) {\n compressed.u = {\n id: user.id,\n un: user.username,\n em: user.email\n };\n }\n\n if (custom) {\n compressed.cu = custom;\n }\n\n return compressed;\n}\n\nfunction compressMarks(marks) {\n if (!marks) {\n return null;\n }\n\n var navigationTiming = marks.navigationTiming,\n agent = marks.agent;\n var compressed = {\n nt: {}\n };\n COMPRESSED_NAV_TIMING_MARKS.forEach(function (mark, index) {\n var mapping = NAVIGATION_TIMING_MARKS[index];\n compressed.nt[mark] = navigationTiming[mapping];\n });\n compressed.a = {\n fb: compressed.nt.rs,\n di: compressed.nt.di,\n dc: compressed.nt.dc\n };\n var fp = agent.firstContentfulPaint;\n var lp = agent.largestContentfulPaint;\n\n if (fp) {\n compressed.a.fp = fp;\n }\n\n if (lp) {\n compressed.a.lp = lp;\n }\n\n return compressed;\n}\n\nexport function compressMetadata(metadata) {\n var service = metadata.service,\n labels = metadata.labels;\n var agent = service.agent,\n language = service.language;\n return {\n se: {\n n: service.name,\n ve: service.version,\n a: {\n n: agent.name,\n ve: agent.version\n },\n la: {\n n: language.name\n },\n en: service.environment\n },\n l: labels\n };\n}\nexport function compressTransaction(transaction) {\n var spans = transaction.spans.map(function (span) {\n var spanData = {\n id: span.id,\n n: span.name,\n t: span.type,\n s: span.start,\n d: span.duration,\n c: compressContext(span.context),\n o: span.outcome,\n sr: span.sample_rate\n };\n\n if (span.parent_id !== transaction.id) {\n spanData.pid = span.parent_id;\n }\n\n if (span.sync === true) {\n spanData.sy = true;\n }\n\n if (span.subtype) {\n spanData.su = span.subtype;\n }\n\n if (span.action) {\n spanData.ac = span.action;\n }\n\n return spanData;\n });\n var tr = {\n id: transaction.id,\n tid: transaction.trace_id,\n n: transaction.name,\n t: transaction.type,\n d: transaction.duration,\n c: compressContext(transaction.context),\n k: compressMarks(transaction.marks),\n me: compressMetricsets(transaction.breakdown),\n y: spans,\n yc: {\n sd: spans.length\n },\n sm: transaction.sampled,\n sr: transaction.sample_rate,\n o: transaction.outcome\n };\n\n if (transaction.experience) {\n var _transaction$experien = transaction.experience,\n cls = _transaction$experien.cls,\n fid = _transaction$experien.fid,\n tbt = _transaction$experien.tbt,\n longtask = _transaction$experien.longtask;\n tr.exp = {\n cls: cls,\n fid: fid,\n tbt: tbt,\n lt: longtask\n };\n }\n\n if (transaction.session) {\n var _transaction$session = transaction.session,\n id = _transaction$session.id,\n sequence = _transaction$session.sequence;\n tr.ses = {\n id: id,\n seq: sequence\n };\n }\n\n return tr;\n}\nexport function compressError(error) {\n var exception = error.exception;\n var compressed = {\n id: error.id,\n cl: error.culprit,\n ex: {\n mg: exception.message,\n st: compressStackFrames(exception.stacktrace),\n t: error.type\n },\n c: compressContext(error.context)\n };\n var transaction = error.transaction;\n\n if (transaction) {\n compressed.tid = error.trace_id;\n compressed.pid = error.parent_id;\n compressed.xid = error.transaction_id;\n compressed.x = {\n t: transaction.type,\n sm: transaction.sampled\n };\n }\n\n return compressed;\n}\nexport function compressMetricsets(breakdowns) {\n return breakdowns.map(function (_ref) {\n var span = _ref.span,\n samples = _ref.samples;\n var isSpan = span != null;\n\n if (isSpan) {\n return {\n y: {\n t: span.type\n },\n sa: {\n ysc: {\n v: samples['span.self_time.count'].value\n },\n yss: {\n v: samples['span.self_time.sum.us'].value\n }\n }\n };\n }\n\n return {\n sa: {\n xdc: {\n v: samples['transaction.duration.count'].value\n },\n xds: {\n v: samples['transaction.duration.sum.us'].value\n },\n xbc: {\n v: samples['transaction.breakdown.count'].value\n }\n }\n };\n });\n}\nexport function compressPayload(payload, headers, type) {\n if (type === void 0) {\n type = 'gzip';\n }\n\n var isCompressionStreamSupported = typeof CompressionStream === 'function';\n return new Promise(function (resolve) {\n if (!isCompressionStreamSupported) {\n return resolve({\n payload: payload,\n headers: headers\n });\n }\n\n var payloadStream = new Blob([payload]).stream();\n var compressedStream = payloadStream.pipeThrough(new CompressionStream(type));\n return new Response(compressedStream).blob().then(function (payload) {\n headers['Content-Encoding'] = type;\n return resolve({\n payload: payload,\n headers: headers\n });\n });\n });\n}","import Queue from './queue';\nimport throttle from './throttle';\nimport NDJSON from './ndjson';\nimport { XHR_IGNORE } from './patching/patch-utils';\nimport { truncateModel, METADATA_MODEL } from './truncate';\nimport { ERRORS, TRANSACTIONS } from './constants';\nimport { noop } from './utils';\nimport { Promise } from './polyfills';\nimport { compressMetadata, compressTransaction, compressError, compressPayload } from './compress';\nimport { __DEV__ } from '../state';\nvar THROTTLE_INTERVAL = 60000;\n\nvar ApmServer = function () {\n function ApmServer(configService, loggingService) {\n this._configService = configService;\n this._loggingService = loggingService;\n this.queue = undefined;\n this.throttleEvents = noop;\n }\n\n var _proto = ApmServer.prototype;\n\n _proto.init = function init() {\n var _this = this;\n\n var queueLimit = this._configService.get('queueLimit');\n\n var flushInterval = this._configService.get('flushInterval');\n\n var limit = this._configService.get('eventsLimit');\n\n var onFlush = function onFlush(events) {\n var promise = _this.sendEvents(events);\n\n if (promise) {\n promise.catch(function (reason) {\n _this._loggingService.warn('Failed sending events!', _this._constructError(reason));\n });\n }\n };\n\n this.queue = new Queue(onFlush, {\n queueLimit: queueLimit,\n flushInterval: flushInterval\n });\n this.throttleEvents = throttle(this.queue.add.bind(this.queue), function () {\n return _this._loggingService.warn('Dropped events due to throttling!');\n }, {\n limit: limit,\n interval: THROTTLE_INTERVAL\n });\n };\n\n _proto._postJson = function _postJson(endPoint, payload) {\n var _this2 = this;\n\n var headers = {\n 'Content-Type': 'application/x-ndjson'\n };\n return compressPayload(payload, headers).catch(function (error) {\n if (__DEV__) {\n _this2._loggingService.debug('Compressing the payload using CompressionStream API failed', error.message);\n }\n\n return {\n payload: payload,\n headers: headers\n };\n }).then(function (result) {\n return _this2._makeHttpRequest('POST', endPoint, result);\n }).then(function (_ref) {\n var responseText = _ref.responseText;\n return responseText;\n });\n };\n\n _proto._constructError = function _constructError(reason) {\n var url = reason.url,\n status = reason.status,\n responseText = reason.responseText;\n\n if (typeof status == 'undefined') {\n return reason;\n }\n\n var message = url + ' HTTP status: ' + status;\n\n if (__DEV__ && responseText) {\n try {\n var serverErrors = [];\n var response = JSON.parse(responseText);\n\n if (response.errors && response.errors.length > 0) {\n response.errors.forEach(function (err) {\n return serverErrors.push(err.message);\n });\n message += ' ' + serverErrors.join(',');\n }\n } catch (e) {\n this._loggingService.debug('Error parsing response from APM server', e);\n }\n }\n\n return new Error(message);\n };\n\n _proto._makeHttpRequest = function _makeHttpRequest(method, url, _temp) {\n var _ref2 = _temp === void 0 ? {} : _temp,\n _ref2$timeout = _ref2.timeout,\n timeout = _ref2$timeout === void 0 ? 10000 : _ref2$timeout,\n payload = _ref2.payload,\n headers = _ref2.headers;\n\n return new Promise(function (resolve, reject) {\n var xhr = new window.XMLHttpRequest();\n xhr[XHR_IGNORE] = true;\n xhr.open(method, url, true);\n xhr.timeout = timeout;\n\n if (headers) {\n for (var header in headers) {\n if (headers.hasOwnProperty(header)) {\n xhr.setRequestHeader(header, headers[header]);\n }\n }\n }\n\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 4) {\n var status = xhr.status,\n responseText = xhr.responseText;\n\n if (status === 0 || status > 399 && status < 600) {\n reject({\n url: url,\n status: status,\n responseText: responseText\n });\n } else {\n resolve(xhr);\n }\n }\n };\n\n xhr.onerror = function () {\n var status = xhr.status,\n responseText = xhr.responseText;\n reject({\n url: url,\n status: status,\n responseText: responseText\n });\n };\n\n xhr.send(payload);\n });\n };\n\n _proto.fetchConfig = function fetchConfig(serviceName, environment) {\n var _this3 = this;\n\n var serverUrl = this._configService.get('serverUrl');\n\n var configEndpoint = serverUrl + \"/config/v1/rum/agents\";\n\n if (!serviceName) {\n return Promise.reject('serviceName is required for fetching central config.');\n }\n\n configEndpoint += \"?service.name=\" + serviceName;\n\n if (environment) {\n configEndpoint += \"&service.environment=\" + environment;\n }\n\n var localConfig = this._configService.getLocalConfig();\n\n if (localConfig) {\n configEndpoint += \"&ifnonematch=\" + localConfig.etag;\n }\n\n return this._makeHttpRequest('GET', configEndpoint, {\n timeout: 5000\n }).then(function (xhr) {\n var status = xhr.status,\n responseText = xhr.responseText;\n\n if (status === 304) {\n return localConfig;\n } else {\n var remoteConfig = JSON.parse(responseText);\n var etag = xhr.getResponseHeader('etag');\n\n if (etag) {\n remoteConfig.etag = etag.replace(/[\"]/g, '');\n\n _this3._configService.setLocalConfig(remoteConfig, true);\n }\n\n return remoteConfig;\n }\n }).catch(function (reason) {\n var error = _this3._constructError(reason);\n\n return Promise.reject(error);\n });\n };\n\n _proto.createMetaData = function createMetaData() {\n var cfg = this._configService;\n var metadata = {\n service: {\n name: cfg.get('serviceName'),\n version: cfg.get('serviceVersion'),\n agent: {\n name: 'rum-js',\n version: cfg.version\n },\n language: {\n name: 'javascript'\n },\n environment: cfg.get('environment')\n },\n labels: cfg.get('context.tags')\n };\n return truncateModel(METADATA_MODEL, metadata);\n };\n\n _proto.addError = function addError(error) {\n var _this$throttleEvents;\n\n this.throttleEvents((_this$throttleEvents = {}, _this$throttleEvents[ERRORS] = error, _this$throttleEvents));\n };\n\n _proto.addTransaction = function addTransaction(transaction) {\n var _this$throttleEvents2;\n\n this.throttleEvents((_this$throttleEvents2 = {}, _this$throttleEvents2[TRANSACTIONS] = transaction, _this$throttleEvents2));\n };\n\n _proto.ndjsonErrors = function ndjsonErrors(errors, compress) {\n var key = compress ? 'e' : 'error';\n return errors.map(function (error) {\n var _NDJSON$stringify;\n\n return NDJSON.stringify((_NDJSON$stringify = {}, _NDJSON$stringify[key] = compress ? compressError(error) : error, _NDJSON$stringify));\n });\n };\n\n _proto.ndjsonMetricsets = function ndjsonMetricsets(metricsets) {\n return metricsets.map(function (metricset) {\n return NDJSON.stringify({\n metricset: metricset\n });\n }).join('');\n };\n\n _proto.ndjsonTransactions = function ndjsonTransactions(transactions, compress) {\n var _this4 = this;\n\n var key = compress ? 'x' : 'transaction';\n return transactions.map(function (tr) {\n var _NDJSON$stringify2;\n\n var spans = '',\n breakdowns = '';\n\n if (!compress) {\n if (tr.spans) {\n spans = tr.spans.map(function (span) {\n return NDJSON.stringify({\n span: span\n });\n }).join('');\n delete tr.spans;\n }\n\n if (tr.breakdown) {\n breakdowns = _this4.ndjsonMetricsets(tr.breakdown);\n delete tr.breakdown;\n }\n }\n\n return NDJSON.stringify((_NDJSON$stringify2 = {}, _NDJSON$stringify2[key] = compress ? compressTransaction(tr) : tr, _NDJSON$stringify2)) + spans + breakdowns;\n });\n };\n\n _proto.sendEvents = function sendEvents(events) {\n var _payload, _NDJSON$stringify3;\n\n if (events.length === 0) {\n return;\n }\n\n var transactions = [];\n var errors = [];\n\n for (var i = 0; i < events.length; i++) {\n var event = events[i];\n\n if (event[TRANSACTIONS]) {\n transactions.push(event[TRANSACTIONS]);\n }\n\n if (event[ERRORS]) {\n errors.push(event[ERRORS]);\n }\n }\n\n if (transactions.length === 0 && errors.length === 0) {\n return;\n }\n\n var cfg = this._configService;\n var payload = (_payload = {}, _payload[TRANSACTIONS] = transactions, _payload[ERRORS] = errors, _payload);\n var filteredPayload = cfg.applyFilters(payload);\n\n if (!filteredPayload) {\n this._loggingService.warn('Dropped payload due to filtering!');\n\n return;\n }\n\n var apiVersion = cfg.get('apiVersion');\n var compress = apiVersion > 2;\n var ndjson = [];\n var metadata = this.createMetaData();\n var metadataKey = compress ? 'm' : 'metadata';\n ndjson.push(NDJSON.stringify((_NDJSON$stringify3 = {}, _NDJSON$stringify3[metadataKey] = compress ? compressMetadata(metadata) : metadata, _NDJSON$stringify3)));\n ndjson = ndjson.concat(this.ndjsonErrors(filteredPayload[ERRORS], compress), this.ndjsonTransactions(filteredPayload[TRANSACTIONS], compress));\n var ndjsonPayload = ndjson.join('');\n var endPoint = cfg.get('serverUrl') + (\"/intake/v\" + apiVersion + \"/rum/events\");\n return this._postJson(endPoint, ndjsonPayload);\n };\n\n return ApmServer;\n}();\n\nexport default ApmServer;","export default function throttle(fn, onThrottle, opts) {\n var context = this;\n var limit = opts.limit;\n var interval = opts.interval;\n var counter = 0;\n var timeoutId;\n return function () {\n counter++;\n\n if (typeof timeoutId === 'undefined') {\n timeoutId = setTimeout(function () {\n counter = 0;\n timeoutId = undefined;\n }, interval);\n }\n\n if (counter > limit && typeof onThrottle === 'function') {\n return onThrottle.apply(context, arguments);\n } else {\n return fn.apply(context, arguments);\n }\n };\n}","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport { getCurrentScript, setLabel, merge, extend, isUndefined } from './utils';\nimport EventHandler from './event-handler';\nimport { CONFIG_CHANGE, LOCAL_CONFIG_KEY } from './constants';\n\nfunction getConfigFromScript() {\n var script = getCurrentScript();\n var config = getDataAttributesFromNode(script);\n return config;\n}\n\nfunction getDataAttributesFromNode(node) {\n if (!node) {\n return {};\n }\n\n var dataAttrs = {};\n var dataRegex = /^data-([\\w-]+)$/;\n var attrs = node.attributes;\n\n for (var i = 0; i < attrs.length; i++) {\n var attr = attrs[i];\n\n if (dataRegex.test(attr.nodeName)) {\n var key = attr.nodeName.match(dataRegex)[1];\n var camelCasedkey = key.split('-').map(function (value, index) {\n return index > 0 ? value.charAt(0).toUpperCase() + value.substring(1) : value;\n }).join('');\n dataAttrs[camelCasedkey] = attr.value || attr.nodeValue;\n }\n }\n\n return dataAttrs;\n}\n\nvar Config = function () {\n function Config() {\n this.config = {\n serviceName: '',\n serviceVersion: '',\n environment: '',\n serverUrl: 'http://localhost:8200',\n active: true,\n instrument: true,\n disableInstrumentations: [],\n logLevel: 'warn',\n breakdownMetrics: false,\n ignoreTransactions: [],\n eventsLimit: 80,\n queueLimit: -1,\n flushInterval: 500,\n distributedTracing: true,\n distributedTracingOrigins: [],\n distributedTracingHeaderName: 'traceparent',\n pageLoadTraceId: '',\n pageLoadSpanId: '',\n pageLoadSampled: false,\n pageLoadTransactionName: '',\n propagateTracestate: false,\n transactionSampleRate: 1.0,\n centralConfig: false,\n monitorLongtasks: true,\n apiVersion: 2,\n context: {},\n session: false\n };\n this.events = new EventHandler();\n this.filters = [];\n this.version = '';\n }\n\n var _proto = Config.prototype;\n\n _proto.init = function init() {\n var scriptData = getConfigFromScript();\n this.setConfig(scriptData);\n };\n\n _proto.setVersion = function setVersion(version) {\n this.version = version;\n };\n\n _proto.addFilter = function addFilter(cb) {\n if (typeof cb !== 'function') {\n throw new Error('Argument to must be function');\n }\n\n this.filters.push(cb);\n };\n\n _proto.applyFilters = function applyFilters(data) {\n for (var i = 0; i < this.filters.length; i++) {\n data = this.filters[i](data);\n\n if (!data) {\n return;\n }\n }\n\n return data;\n };\n\n _proto.get = function get(key) {\n return key.split('.').reduce(function (obj, objKey) {\n return obj && obj[objKey];\n }, this.config);\n };\n\n _proto.setUserContext = function setUserContext(userContext) {\n if (userContext === void 0) {\n userContext = {};\n }\n\n var context = {};\n var _userContext = userContext,\n id = _userContext.id,\n username = _userContext.username,\n email = _userContext.email;\n\n if (typeof id === 'number' || typeof id === 'string') {\n context.id = id;\n }\n\n if (typeof username === 'string') {\n context.username = username;\n }\n\n if (typeof email === 'string') {\n context.email = email;\n }\n\n this.config.context.user = extend(this.config.context.user || {}, context);\n };\n\n _proto.setCustomContext = function setCustomContext(customContext) {\n if (customContext === void 0) {\n customContext = {};\n }\n\n this.config.context.custom = extend(this.config.context.custom || {}, customContext);\n };\n\n _proto.addLabels = function addLabels(tags) {\n var _this = this;\n\n if (!this.config.context.tags) {\n this.config.context.tags = {};\n }\n\n var keys = Object.keys(tags);\n keys.forEach(function (k) {\n return setLabel(k, tags[k], _this.config.context.tags);\n });\n };\n\n _proto.setConfig = function setConfig(properties) {\n if (properties === void 0) {\n properties = {};\n }\n\n var _properties = properties,\n transactionSampleRate = _properties.transactionSampleRate,\n serverUrl = _properties.serverUrl;\n\n if (serverUrl) {\n properties.serverUrl = serverUrl.replace(/\\/+$/, '');\n }\n\n if (!isUndefined(transactionSampleRate)) {\n if (transactionSampleRate < 0.0001 && transactionSampleRate > 0) {\n transactionSampleRate = 0.0001;\n }\n\n properties.transactionSampleRate = Math.round(transactionSampleRate * 10000) / 10000;\n }\n\n merge(this.config, properties);\n this.events.send(CONFIG_CHANGE, [this.config]);\n };\n\n _proto.validate = function validate(properties) {\n if (properties === void 0) {\n properties = {};\n }\n\n var requiredKeys = ['serviceName', 'serverUrl'];\n var errors = {\n missing: [],\n invalid: []\n };\n Object.keys(properties).forEach(function (key) {\n if (requiredKeys.indexOf(key) !== -1 && !properties[key]) {\n errors.missing.push(key);\n }\n });\n\n if (properties.serviceName && !/^[a-zA-Z0-9 _-]+$/.test(properties.serviceName)) {\n errors.invalid.push({\n key: 'serviceName',\n value: properties.serviceName,\n allowed: 'a-z, A-Z, 0-9, _, -, '\n });\n }\n\n var sampleRate = properties.transactionSampleRate;\n\n if (typeof sampleRate !== 'undefined' && (typeof sampleRate !== 'number' || isNaN(sampleRate) || sampleRate < 0 || sampleRate > 1)) {\n errors.invalid.push({\n key: 'transactionSampleRate',\n value: sampleRate,\n allowed: 'Number between 0 and 1'\n });\n }\n\n return errors;\n };\n\n _proto.getLocalConfig = function getLocalConfig() {\n var storage = sessionStorage;\n\n if (this.config.session) {\n storage = localStorage;\n }\n\n var config = storage.getItem(LOCAL_CONFIG_KEY);\n\n if (config) {\n return JSON.parse(config);\n }\n };\n\n _proto.setLocalConfig = function setLocalConfig(config, merge) {\n if (config) {\n if (merge) {\n var prevConfig = this.getLocalConfig();\n config = _extends({}, prevConfig, {}, config);\n }\n\n var storage = sessionStorage;\n\n if (this.config.session) {\n storage = localStorage;\n }\n\n storage.setItem(LOCAL_CONFIG_KEY, JSON.stringify(config));\n }\n };\n\n return Config;\n}();\n\nexport default Config;","var _serviceCreators;\n\nimport ApmServer from './apm-server';\nimport ConfigService from './config-service';\nimport LoggingService from './logging-service';\nimport { CONFIG_CHANGE, CONFIG_SERVICE, LOGGING_SERVICE, APM_SERVER } from './constants';\nimport { __DEV__ } from '../state';\nvar serviceCreators = (_serviceCreators = {}, _serviceCreators[CONFIG_SERVICE] = function () {\n return new ConfigService();\n}, _serviceCreators[LOGGING_SERVICE] = function () {\n return new LoggingService({\n prefix: '[Elastic APM] '\n });\n}, _serviceCreators[APM_SERVER] = function (factory) {\n var _factory$getService = factory.getService([CONFIG_SERVICE, LOGGING_SERVICE]),\n configService = _factory$getService[0],\n loggingService = _factory$getService[1];\n\n return new ApmServer(configService, loggingService);\n}, _serviceCreators);\n\nvar ServiceFactory = function () {\n function ServiceFactory() {\n this.instances = {};\n this.initialized = false;\n }\n\n var _proto = ServiceFactory.prototype;\n\n _proto.init = function init() {\n if (this.initialized) {\n return;\n }\n\n this.initialized = true;\n var configService = this.getService(CONFIG_SERVICE);\n configService.init();\n\n var _this$getService = this.getService([LOGGING_SERVICE, APM_SERVER]),\n loggingService = _this$getService[0],\n apmServer = _this$getService[1];\n\n configService.events.observe(CONFIG_CHANGE, function () {\n var logLevel = configService.get('logLevel');\n loggingService.setLevel(logLevel);\n });\n apmServer.init();\n };\n\n _proto.getService = function getService(name) {\n var _this = this;\n\n if (typeof name === 'string') {\n if (!this.instances[name]) {\n if (typeof serviceCreators[name] === 'function') {\n this.instances[name] = serviceCreators[name](this);\n } else if (__DEV__) {\n console.log('Cannot get service, No creator for: ' + name);\n }\n }\n\n return this.instances[name];\n } else if (Array.isArray(name)) {\n return name.map(function (n) {\n return _this.getService(n);\n });\n }\n };\n\n return ServiceFactory;\n}();\n\nexport { serviceCreators, ServiceFactory };","import { noop } from './utils';\n\nvar LoggingService = function () {\n function LoggingService(spec) {\n if (spec === void 0) {\n spec = {};\n }\n\n this.levels = ['trace', 'debug', 'info', 'warn', 'error'];\n this.level = spec.level || 'warn';\n this.prefix = spec.prefix || '';\n this.resetLogMethods();\n }\n\n var _proto = LoggingService.prototype;\n\n _proto.shouldLog = function shouldLog(level) {\n return this.levels.indexOf(level) >= this.levels.indexOf(this.level);\n };\n\n _proto.setLevel = function setLevel(level) {\n if (level === this.level) {\n return;\n }\n\n this.level = level;\n this.resetLogMethods();\n };\n\n _proto.resetLogMethods = function resetLogMethods() {\n var _this = this;\n\n this.levels.forEach(function (level) {\n _this[level] = _this.shouldLog(level) ? log : noop;\n\n function log() {\n var normalizedLevel = level;\n\n if (level === 'trace' || level === 'debug') {\n normalizedLevel = 'info';\n }\n\n var args = arguments;\n args[0] = this.prefix + args[0];\n\n if (console) {\n var realMethod = console[normalizedLevel] || console.log;\n\n if (typeof realMethod === 'function') {\n realMethod.apply(console, args);\n }\n }\n }\n });\n };\n\n return LoggingService;\n}();\n\nexport default LoggingService;","import { checkSameOrigin, isDtHeaderValid, parseDtHeaderValue, getDtHeaderValue, getTSHeaderValue, stripQueryStringFromUrl, setRequestHeader } from '../common/utils';\nimport { Url } from '../common/url';\nimport { patchEventHandler } from '../common/patching';\nimport { globalState } from '../common/patching/patch-utils';\nimport { SCHEDULE, INVOKE, TRANSACTION_END, AFTER_EVENT, FETCH, HISTORY, XMLHTTPREQUEST, EVENT_TARGET, HTTP_REQUEST_TYPE, USER_INTERACTION, OUTCOME_FAILURE, OUTCOME_SUCCESS } from '../common/constants';\nimport { truncateModel, SPAN_MODEL, TRANSACTION_MODEL } from '../common/truncate';\nimport { __DEV__ } from '../state';\nvar SIMILAR_SPAN_TO_TRANSACTION_RATIO = 0.05;\nvar TRANSACTION_DURATION_THRESHOLD = 60000;\nexport function groupSmallContinuouslySimilarSpans(originalSpans, transDuration, threshold) {\n originalSpans.sort(function (spanA, spanB) {\n return spanA._start - spanB._start;\n });\n var spans = [];\n var lastCount = 1;\n originalSpans.forEach(function (span, index) {\n if (spans.length === 0) {\n spans.push(span);\n } else {\n var lastSpan = spans[spans.length - 1];\n var isContinuouslySimilar = lastSpan.type === span.type && lastSpan.subtype === span.subtype && lastSpan.action === span.action && lastSpan.name === span.name && span.duration() / transDuration < threshold && (span._start - lastSpan._end) / transDuration < threshold;\n var isLastSpan = originalSpans.length === index + 1;\n\n if (isContinuouslySimilar) {\n lastCount++;\n lastSpan._end = span._end;\n }\n\n if (lastCount > 1 && (!isContinuouslySimilar || isLastSpan)) {\n lastSpan.name = lastCount + 'x ' + lastSpan.name;\n lastCount = 1;\n }\n\n if (!isContinuouslySimilar) {\n spans.push(span);\n }\n }\n });\n return spans;\n}\nexport function adjustTransaction(transaction) {\n if (transaction.sampled) {\n var filterdSpans = transaction.spans.filter(function (span) {\n return span.duration() > 0 && span._start >= transaction._start && span._end <= transaction._end;\n });\n\n if (transaction.isManaged()) {\n var duration = transaction.duration();\n var similarSpans = groupSmallContinuouslySimilarSpans(filterdSpans, duration, SIMILAR_SPAN_TO_TRANSACTION_RATIO);\n transaction.spans = similarSpans;\n } else {\n transaction.spans = filterdSpans;\n }\n } else {\n transaction.resetFields();\n }\n\n return transaction;\n}\n\nvar PerformanceMonitoring = function () {\n function PerformanceMonitoring(apmServer, configService, loggingService, transactionService) {\n this._apmServer = apmServer;\n this._configService = configService;\n this._logginService = loggingService;\n this._transactionService = transactionService;\n }\n\n var _proto = PerformanceMonitoring.prototype;\n\n _proto.init = function init(flags) {\n var _this = this;\n\n if (flags === void 0) {\n flags = {};\n }\n\n this._configService.events.observe(TRANSACTION_END + AFTER_EVENT, function (tr) {\n var payload = _this.createTransactionPayload(tr);\n\n if (payload) {\n _this._apmServer.addTransaction(payload);\n }\n });\n\n if (flags[HISTORY]) {\n patchEventHandler.observe(HISTORY, this.getHistorySub());\n }\n\n if (flags[XMLHTTPREQUEST]) {\n patchEventHandler.observe(XMLHTTPREQUEST, this.getXHRSub());\n }\n\n if (flags[FETCH]) {\n patchEventHandler.observe(FETCH, this.getFetchSub());\n }\n\n if (flags[EVENT_TARGET]) {\n patchEventHandler.observe(EVENT_TARGET, this.getEventTargetSub());\n }\n };\n\n _proto.getEventTargetSub = function getEventTargetSub() {\n var transactionService = this._transactionService;\n return function (event, task) {\n if (event === SCHEDULE && task.source === EVENT_TARGET && task.eventType === 'click') {\n var target = task.target;\n var name = target.getAttribute('name');\n var additionalInfo = '';\n\n if (name) {\n additionalInfo = \"[\\\"\" + name + \"\\\"]\";\n }\n\n var tagName = target.tagName.toLowerCase();\n var tr = transactionService.startTransaction(\"Click - \" + tagName + additionalInfo, USER_INTERACTION, {\n managed: true,\n canReuse: true,\n reuseThreshold: 100\n });\n\n if (tr) {\n var classes = target.getAttribute('class');\n\n if (classes) {\n tr.addContext({\n custom: {\n classes: classes\n }\n });\n }\n }\n }\n };\n };\n\n _proto.getHistorySub = function getHistorySub() {\n var transactionService = this._transactionService;\n return function (event, task) {\n if (task.source === HISTORY && event === INVOKE) {\n transactionService.startTransaction(task.data.title, 'route-change', {\n managed: true,\n canReuse: true\n });\n }\n };\n };\n\n _proto.getXHRSub = function getXHRSub() {\n var _this2 = this;\n\n return function (event, task) {\n if (task.source === XMLHTTPREQUEST && !globalState.fetchInProgress) {\n _this2.processAPICalls(event, task);\n }\n };\n };\n\n _proto.getFetchSub = function getFetchSub() {\n var _this3 = this;\n\n return function (event, task) {\n if (task.source === FETCH) {\n _this3.processAPICalls(event, task);\n }\n };\n };\n\n _proto.processAPICalls = function processAPICalls(event, task) {\n var configService = this._configService;\n var transactionService = this._transactionService;\n\n if (event === SCHEDULE && task.data) {\n var data = task.data;\n var requestUrl = new Url(data.url);\n var spanName = data.method + ' ' + (requestUrl.relative ? requestUrl.path : stripQueryStringFromUrl(requestUrl.href));\n\n if (!transactionService.getCurrentTransaction()) {\n transactionService.startTransaction(spanName, HTTP_REQUEST_TYPE, {\n managed: true\n });\n }\n\n var span = transactionService.startSpan(spanName, 'external.http', {\n blocking: true\n });\n\n if (!span) {\n return;\n }\n\n var isDtEnabled = configService.get('distributedTracing');\n var dtOrigins = configService.get('distributedTracingOrigins');\n var currentUrl = new Url(window.location.href);\n var isSameOrigin = checkSameOrigin(requestUrl.origin, currentUrl.origin) || checkSameOrigin(requestUrl.origin, dtOrigins);\n var target = data.target;\n\n if (isDtEnabled && isSameOrigin && target) {\n this.injectDtHeader(span, target);\n var propagateTracestate = configService.get('propagateTracestate');\n\n if (propagateTracestate) {\n this.injectTSHeader(span, target);\n }\n } else if (__DEV__) {\n this._logginService.debug(\"Could not inject distributed tracing header to the request origin ('\" + requestUrl.origin + \"') from the current origin ('\" + currentUrl.origin + \"')\");\n }\n\n if (data.sync) {\n span.sync = data.sync;\n }\n\n data.span = span;\n } else if (event === INVOKE) {\n var _data = task.data;\n\n if (_data && _data.span) {\n var _span = _data.span,\n response = _data.response,\n _target = _data.target;\n var status;\n\n if (response) {\n status = response.status;\n } else {\n status = _target.status;\n }\n\n var outcome;\n\n if (_data.status != 'abort') {\n if (status >= 400 || status == 0) {\n outcome = OUTCOME_FAILURE;\n } else {\n outcome = OUTCOME_SUCCESS;\n }\n }\n\n _span.outcome = outcome;\n var tr = transactionService.getCurrentTransaction();\n\n if (tr && tr.type === HTTP_REQUEST_TYPE) {\n tr.outcome = outcome;\n }\n\n transactionService.endSpan(_span, _data);\n }\n }\n };\n\n _proto.injectDtHeader = function injectDtHeader(span, target) {\n var headerName = this._configService.get('distributedTracingHeaderName');\n\n var headerValue = getDtHeaderValue(span);\n var isHeaderValid = isDtHeaderValid(headerValue);\n\n if (isHeaderValid && headerValue && headerName) {\n setRequestHeader(target, headerName, headerValue);\n }\n };\n\n _proto.injectTSHeader = function injectTSHeader(span, target) {\n var headerValue = getTSHeaderValue(span);\n\n if (headerValue) {\n setRequestHeader(target, 'tracestate', headerValue);\n }\n };\n\n _proto.extractDtHeader = function extractDtHeader(target) {\n var configService = this._configService;\n var headerName = configService.get('distributedTracingHeaderName');\n\n if (target) {\n return parseDtHeaderValue(target[headerName]);\n }\n };\n\n _proto.filterTransaction = function filterTransaction(tr) {\n var duration = tr.duration();\n\n if (!duration) {\n if (__DEV__) {\n var message = \"transaction(\" + tr.id + \", \" + tr.name + \") was discarded! \";\n\n if (duration === 0) {\n message += \"Transaction duration is 0\";\n } else {\n message += \"Transaction wasn't ended\";\n }\n\n this._logginService.debug(message);\n }\n\n return false;\n }\n\n if (tr.isManaged()) {\n if (duration > TRANSACTION_DURATION_THRESHOLD) {\n if (__DEV__) {\n this._logginService.debug(\"transaction(\" + tr.id + \", \" + tr.name + \") was discarded! Transaction duration (\" + duration + \") is greater than managed transaction threshold (\" + TRANSACTION_DURATION_THRESHOLD + \")\");\n }\n\n return false;\n }\n\n if (tr.sampled && tr.spans.length === 0) {\n if (__DEV__) {\n this._logginService.debug(\"transaction(\" + tr.id + \", \" + tr.name + \") was discarded! Transaction does not have any spans\");\n }\n\n return false;\n }\n }\n\n return true;\n };\n\n _proto.createTransactionDataModel = function createTransactionDataModel(transaction) {\n var transactionStart = transaction._start;\n var spans = transaction.spans.map(function (span) {\n var spanData = {\n id: span.id,\n transaction_id: transaction.id,\n parent_id: span.parentId || transaction.id,\n trace_id: transaction.traceId,\n name: span.name,\n type: span.type,\n subtype: span.subtype,\n action: span.action,\n sync: span.sync,\n start: parseInt(span._start - transactionStart),\n duration: span.duration(),\n context: span.context,\n outcome: span.outcome,\n sample_rate: span.sampleRate\n };\n return truncateModel(SPAN_MODEL, spanData);\n });\n var transactionData = {\n id: transaction.id,\n trace_id: transaction.traceId,\n session: transaction.session,\n name: transaction.name,\n type: transaction.type,\n duration: transaction.duration(),\n spans: spans,\n context: transaction.context,\n marks: transaction.marks,\n breakdown: transaction.breakdownTimings,\n span_count: {\n started: spans.length\n },\n sampled: transaction.sampled,\n sample_rate: transaction.sampleRate,\n experience: transaction.experience,\n outcome: transaction.outcome\n };\n return truncateModel(TRANSACTION_MODEL, transactionData);\n };\n\n _proto.createTransactionPayload = function createTransactionPayload(transaction) {\n var adjustedTransaction = adjustTransaction(transaction);\n var filtered = this.filterTransaction(adjustedTransaction);\n\n if (filtered) {\n return this.createTransactionDataModel(transaction);\n }\n };\n\n return PerformanceMonitoring;\n}();\n\nexport { PerformanceMonitoring as default };","import { getDuration, PERF } from '../common/utils';\nimport { PAGE_LOAD, TRUNCATED_TYPE } from '../common/constants';\nvar pageLoadBreakdowns = [['domainLookupStart', 'domainLookupEnd', 'DNS'], ['connectStart', 'connectEnd', 'TCP'], ['requestStart', 'responseStart', 'Request'], ['responseStart', 'responseEnd', 'Response'], ['domLoading', 'domComplete', 'Processing'], ['loadEventStart', 'loadEventEnd', 'Load']];\n\nfunction getValue(value) {\n return {\n value: value\n };\n}\n\nfunction calculateSelfTime(transaction) {\n var spans = transaction.spans,\n _start = transaction._start,\n _end = transaction._end;\n\n if (spans.length === 0) {\n return transaction.duration();\n }\n\n spans.sort(function (span1, span2) {\n return span1._start - span2._start;\n });\n var span = spans[0];\n var spanEnd = span._end;\n var spanStart = span._start;\n var lastContinuousEnd = spanEnd;\n var selfTime = spanStart - _start;\n\n for (var i = 1; i < spans.length; i++) {\n span = spans[i];\n spanStart = span._start;\n spanEnd = span._end;\n\n if (spanStart > lastContinuousEnd) {\n selfTime += spanStart - lastContinuousEnd;\n lastContinuousEnd = spanEnd;\n } else if (spanEnd > lastContinuousEnd) {\n lastContinuousEnd = spanEnd;\n }\n }\n\n if (lastContinuousEnd < _end) {\n selfTime += _end - lastContinuousEnd;\n }\n\n return selfTime;\n}\n\nfunction groupSpans(transaction) {\n var spanMap = {};\n var transactionSelfTime = calculateSelfTime(transaction);\n spanMap['app'] = {\n count: 1,\n duration: transactionSelfTime\n };\n var spans = transaction.spans;\n\n for (var i = 0; i < spans.length; i++) {\n var span = spans[i];\n var duration = span.duration();\n\n if (duration === 0 || duration == null) {\n continue;\n }\n\n var type = span.type,\n subtype = span.subtype;\n var key = type.replace(TRUNCATED_TYPE, '');\n\n if (subtype) {\n key += '.' + subtype;\n }\n\n if (!spanMap[key]) {\n spanMap[key] = {\n duration: 0,\n count: 0\n };\n }\n\n spanMap[key].count++;\n spanMap[key].duration += duration;\n }\n\n return spanMap;\n}\n\nfunction getSpanBreakdown(transactionDetails, _ref) {\n var details = _ref.details,\n _ref$count = _ref.count,\n count = _ref$count === void 0 ? 1 : _ref$count,\n duration = _ref.duration;\n return {\n transaction: transactionDetails,\n span: details,\n samples: {\n 'span.self_time.count': getValue(count),\n 'span.self_time.sum.us': getValue(duration)\n }\n };\n}\n\nexport function captureBreakdown(transaction, timings) {\n if (timings === void 0) {\n timings = PERF.timing;\n }\n\n var breakdowns = [];\n var trDuration = transaction.duration();\n var name = transaction.name,\n type = transaction.type,\n sampled = transaction.sampled;\n var transactionDetails = {\n name: name,\n type: type\n };\n breakdowns.push({\n transaction: transactionDetails,\n samples: {\n 'transaction.duration.count': getValue(1),\n 'transaction.duration.sum.us': getValue(trDuration),\n 'transaction.breakdown.count': getValue(sampled ? 1 : 0)\n }\n });\n\n if (!sampled) {\n return breakdowns;\n }\n\n if (type === PAGE_LOAD && timings) {\n for (var i = 0; i < pageLoadBreakdowns.length; i++) {\n var current = pageLoadBreakdowns[i];\n var start = timings[current[0]];\n var end = timings[current[1]];\n var duration = getDuration(start, end);\n\n if (duration === 0 || duration == null) {\n continue;\n }\n\n breakdowns.push(getSpanBreakdown(transactionDetails, {\n details: {\n type: current[2]\n },\n duration: duration\n }));\n }\n } else {\n var spanMap = groupSpans(transaction);\n Object.keys(spanMap).forEach(function (key) {\n var _key$split = key.split('.'),\n type = _key$split[0],\n subtype = _key$split[1];\n\n var _spanMap$key = spanMap[key],\n duration = _spanMap$key.duration,\n count = _spanMap$key.count;\n breakdowns.push(getSpanBreakdown(transactionDetails, {\n details: {\n type: type,\n subtype: subtype\n },\n duration: duration,\n count: count\n }));\n });\n }\n\n return breakdowns;\n}","function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nimport Span from './span';\nimport SpanBase from './span-base';\nimport { generateRandomId, merge, now, getTime, extend, removeInvalidChars } from '../common/utils';\nimport { REUSABILITY_THRESHOLD, TRUNCATED_TYPE } from '../common/constants';\nimport { captureBreakdown as _captureBreakdown } from './breakdown';\n\nvar Transaction = function (_SpanBase) {\n _inheritsLoose(Transaction, _SpanBase);\n\n function Transaction(name, type, options) {\n var _this;\n\n _this = _SpanBase.call(this, name, type, options) || this;\n _this.traceId = generateRandomId();\n _this.marks = undefined;\n _this.spans = [];\n _this._activeSpans = {};\n _this._activeTasks = new Set();\n _this.blocked = false;\n _this.captureTimings = false;\n _this.breakdownTimings = [];\n _this.sampleRate = _this.options.transactionSampleRate;\n _this.sampled = Math.random() <= _this.sampleRate;\n return _this;\n }\n\n var _proto = Transaction.prototype;\n\n _proto.addMarks = function addMarks(obj) {\n this.marks = merge(this.marks || {}, obj);\n };\n\n _proto.mark = function mark(key) {\n var skey = removeInvalidChars(key);\n\n var markTime = now() - this._start;\n\n var custom = {};\n custom[skey] = markTime;\n this.addMarks({\n custom: custom\n });\n };\n\n _proto.canReuse = function canReuse() {\n var threshold = this.options.reuseThreshold || REUSABILITY_THRESHOLD;\n return !!this.options.canReuse && !this.ended && now() - this._start < threshold;\n };\n\n _proto.redefine = function redefine(name, type, options) {\n if (name) {\n this.name = name;\n }\n\n if (type) {\n this.type = type;\n }\n\n if (options) {\n extend(this.options, options);\n }\n };\n\n _proto.startSpan = function startSpan(name, type, options) {\n var _this2 = this;\n\n if (this.ended) {\n return;\n }\n\n var opts = extend({}, options);\n\n opts.onEnd = function (trc) {\n _this2._onSpanEnd(trc);\n };\n\n opts.traceId = this.traceId;\n opts.sampled = this.sampled;\n opts.sampleRate = this.sampleRate;\n\n if (!opts.parentId) {\n opts.parentId = this.id;\n }\n\n var span = new Span(name, type, opts);\n this._activeSpans[span.id] = span;\n\n if (opts.blocking) {\n this.addTask(span.id);\n }\n\n return span;\n };\n\n _proto.isFinished = function isFinished() {\n return !this.blocked && this._activeTasks.size === 0;\n };\n\n _proto.detectFinish = function detectFinish() {\n if (this.isFinished()) this.end();\n };\n\n _proto.end = function end(endTime) {\n if (this.ended) {\n return;\n }\n\n this.ended = true;\n this._end = getTime(endTime);\n\n for (var sid in this._activeSpans) {\n var span = this._activeSpans[sid];\n span.type = span.type + TRUNCATED_TYPE;\n span.end(endTime);\n }\n\n this.callOnEnd();\n };\n\n _proto.captureBreakdown = function captureBreakdown() {\n this.breakdownTimings = _captureBreakdown(this);\n };\n\n _proto.block = function block(flag) {\n this.blocked = flag;\n\n if (!this.blocked) {\n this.detectFinish();\n }\n };\n\n _proto.addTask = function addTask(taskId) {\n if (!taskId) {\n taskId = 'task-' + generateRandomId(16);\n }\n\n this._activeTasks.add(taskId);\n\n return taskId;\n };\n\n _proto.removeTask = function removeTask(taskId) {\n var deleted = this._activeTasks.delete(taskId);\n\n deleted && this.detectFinish();\n };\n\n _proto.resetFields = function resetFields() {\n this.spans = [];\n this.sampleRate = 0;\n };\n\n _proto._onSpanEnd = function _onSpanEnd(span) {\n this.spans.push(span);\n delete this._activeSpans[span.id];\n this.removeTask(span.id);\n };\n\n _proto.isManaged = function isManaged() {\n return !!this.options.managed;\n };\n\n return Transaction;\n}(SpanBase);\n\nexport default Transaction;","import { LONG_TASK, LARGEST_CONTENTFUL_PAINT, FIRST_CONTENTFUL_PAINT, FIRST_INPUT, LAYOUT_SHIFT } from '../common/constants';\nimport { noop, PERF } from '../common/utils';\nimport Span from './span';\nexport var metrics = {\n fid: 0,\n fcp: 0,\n tbt: {\n start: Infinity,\n duration: 0\n },\n cls: 0,\n longtask: {\n count: 0,\n duration: 0,\n max: 0\n }\n};\nvar LONG_TASK_THRESHOLD = 50;\nexport function createLongTaskSpans(longtasks, agg) {\n var spans = [];\n\n for (var i = 0; i < longtasks.length; i++) {\n var _longtasks$i = longtasks[i],\n name = _longtasks$i.name,\n startTime = _longtasks$i.startTime,\n duration = _longtasks$i.duration,\n attribution = _longtasks$i.attribution;\n var end = startTime + duration;\n var span = new Span(\"Longtask(\" + name + \")\", LONG_TASK, {\n startTime: startTime\n });\n agg.count++;\n agg.duration += duration;\n agg.max = Math.max(duration, agg.max);\n\n if (attribution.length > 0) {\n var _attribution$ = attribution[0],\n _name = _attribution$.name,\n containerType = _attribution$.containerType,\n containerName = _attribution$.containerName,\n containerId = _attribution$.containerId;\n var customContext = {\n attribution: _name,\n type: containerType\n };\n\n if (containerName) {\n customContext.name = containerName;\n }\n\n if (containerId) {\n customContext.id = containerId;\n }\n\n span.addContext({\n custom: customContext\n });\n }\n\n span.end(end);\n spans.push(span);\n }\n\n return spans;\n}\nexport function createFirstInputDelaySpan(fidEntries) {\n var firstInput = fidEntries[0];\n\n if (firstInput) {\n var startTime = firstInput.startTime,\n processingStart = firstInput.processingStart;\n var span = new Span('First Input Delay', FIRST_INPUT, {\n startTime: startTime\n });\n span.end(processingStart);\n return span;\n }\n}\nexport function createTotalBlockingTimeSpan(tbtObject) {\n var start = tbtObject.start,\n duration = tbtObject.duration;\n var tbtSpan = new Span('Total Blocking Time', LONG_TASK, {\n startTime: start\n });\n tbtSpan.end(start + duration);\n return tbtSpan;\n}\nexport function calculateTotalBlockingTime(longtaskEntries) {\n longtaskEntries.forEach(function (entry) {\n var name = entry.name,\n startTime = entry.startTime,\n duration = entry.duration;\n\n if (startTime < metrics.fcp) {\n return;\n }\n\n if (name !== 'self' && name.indexOf('same-origin') === -1) {\n return;\n }\n\n metrics.tbt.start = Math.min(metrics.tbt.start, startTime);\n var blockingTime = duration - LONG_TASK_THRESHOLD;\n\n if (blockingTime > 0) {\n metrics.tbt.duration += blockingTime;\n }\n });\n}\nexport function calculateCumulativeLayoutShift(clsEntries) {\n clsEntries.forEach(function (entry) {\n if (!entry.hadRecentInput && entry.value) {\n metrics.cls += entry.value;\n }\n });\n}\nexport function captureObserverEntries(list, _ref) {\n var isHardNavigation = _ref.isHardNavigation,\n trStart = _ref.trStart;\n var longtaskEntries = list.getEntriesByType(LONG_TASK).filter(function (entry) {\n return entry.startTime >= trStart;\n });\n var longTaskSpans = createLongTaskSpans(longtaskEntries, metrics.longtask);\n var result = {\n spans: longTaskSpans,\n marks: {}\n };\n\n if (!isHardNavigation) {\n return result;\n }\n\n var lcpEntries = list.getEntriesByType(LARGEST_CONTENTFUL_PAINT);\n var lastLcpEntry = lcpEntries[lcpEntries.length - 1];\n\n if (lastLcpEntry) {\n var lcp = parseInt(lastLcpEntry.startTime);\n metrics.lcp = lcp;\n result.marks.largestContentfulPaint = lcp;\n }\n\n var timing = PERF.timing;\n var unloadDiff = timing.fetchStart - timing.navigationStart;\n var fcpEntry = list.getEntriesByName(FIRST_CONTENTFUL_PAINT)[0];\n\n if (fcpEntry) {\n var fcp = parseInt(unloadDiff >= 0 ? fcpEntry.startTime - unloadDiff : fcpEntry.startTime);\n metrics.fcp = fcp;\n result.marks.firstContentfulPaint = fcp;\n }\n\n var fidEntries = list.getEntriesByType(FIRST_INPUT);\n var fidSpan = createFirstInputDelaySpan(fidEntries);\n\n if (fidSpan) {\n metrics.fid = fidSpan.duration();\n result.spans.push(fidSpan);\n }\n\n calculateTotalBlockingTime(longtaskEntries);\n var clsEntries = list.getEntriesByType(LAYOUT_SHIFT);\n calculateCumulativeLayoutShift(clsEntries);\n return result;\n}\nexport var PerfEntryRecorder = function () {\n function PerfEntryRecorder(callback) {\n this.po = {\n observe: noop,\n disconnect: noop\n };\n\n if (window.PerformanceObserver) {\n this.po = new PerformanceObserver(callback);\n }\n }\n\n var _proto = PerfEntryRecorder.prototype;\n\n _proto.start = function start(type) {\n try {\n this.po.observe({\n type: type,\n buffered: true\n });\n } catch (_) {}\n };\n\n _proto.stop = function stop() {\n this.po.disconnect();\n };\n\n return PerfEntryRecorder;\n}();","import { Promise } from '../common/polyfills';\nimport Transaction from './transaction';\nimport { PerfEntryRecorder, captureObserverEntries, metrics, createTotalBlockingTimeSpan } from './metrics';\nimport { extend, getEarliestSpan, getLatestNonXHRSpan, isPerfTypeSupported, generateRandomId } from '../common/utils';\nimport { captureNavigation } from './capture-navigation';\nimport { PAGE_LOAD, NAME_UNKNOWN, TRANSACTION_START, TRANSACTION_END, TEMPORARY_TYPE, TRANSACTION_TYPE_ORDER, LARGEST_CONTENTFUL_PAINT, LONG_TASK, PAINT, TRUNCATED_TYPE, FIRST_INPUT, LAYOUT_SHIFT, SESSION_TIMEOUT } from '../common/constants';\nimport { addTransactionContext } from '../common/context';\nimport { __DEV__, state } from '../state';\nimport { slugifyUrl } from '../common/url';\n\nvar TransactionService = function () {\n function TransactionService(logger, config) {\n var _this = this;\n\n this._config = config;\n this._logger = logger;\n this.currentTransaction = undefined;\n this.respIntervalId = undefined;\n this.recorder = new PerfEntryRecorder(function (list) {\n var tr = _this.getCurrentTransaction();\n\n if (tr && tr.captureTimings) {\n var _tr$spans;\n\n var isHardNavigation = tr.type === PAGE_LOAD;\n\n var _captureObserverEntri = captureObserverEntries(list, {\n isHardNavigation: isHardNavigation,\n trStart: isHardNavigation ? 0 : tr._start\n }),\n spans = _captureObserverEntri.spans,\n marks = _captureObserverEntri.marks;\n\n (_tr$spans = tr.spans).push.apply(_tr$spans, spans);\n\n tr.addMarks({\n agent: marks\n });\n }\n });\n }\n\n var _proto = TransactionService.prototype;\n\n _proto.createCurrentTransaction = function createCurrentTransaction(name, type, options) {\n var tr = new Transaction(name, type, options);\n this.currentTransaction = tr;\n return tr;\n };\n\n _proto.getCurrentTransaction = function getCurrentTransaction() {\n if (this.currentTransaction && !this.currentTransaction.ended) {\n return this.currentTransaction;\n }\n };\n\n _proto.createOptions = function createOptions(options) {\n var config = this._config.config;\n var presetOptions = {\n transactionSampleRate: config.transactionSampleRate\n };\n var perfOptions = extend(presetOptions, options);\n\n if (perfOptions.managed) {\n perfOptions = extend({\n pageLoadTraceId: config.pageLoadTraceId,\n pageLoadSampled: config.pageLoadSampled,\n pageLoadSpanId: config.pageLoadSpanId,\n pageLoadTransactionName: config.pageLoadTransactionName\n }, perfOptions);\n }\n\n return perfOptions;\n };\n\n _proto.startManagedTransaction = function startManagedTransaction(name, type, perfOptions) {\n var tr = this.getCurrentTransaction();\n var isRedefined = false;\n\n if (!tr) {\n tr = this.createCurrentTransaction(name, type, perfOptions);\n } else if (tr.canReuse() && perfOptions.canReuse) {\n var redefineType = tr.type;\n var currentTypeOrder = TRANSACTION_TYPE_ORDER.indexOf(tr.type);\n var redefineTypeOrder = TRANSACTION_TYPE_ORDER.indexOf(type);\n\n if (currentTypeOrder >= 0 && redefineTypeOrder < currentTypeOrder) {\n redefineType = type;\n }\n\n if (__DEV__) {\n this._logger.debug(\"redefining transaction(\" + tr.id + \", \" + tr.name + \", \" + tr.type + \")\", 'to', \"(\" + (name || tr.name) + \", \" + redefineType + \")\", tr);\n }\n\n tr.redefine(name, redefineType, perfOptions);\n isRedefined = true;\n } else {\n if (__DEV__) {\n this._logger.debug(\"ending previous transaction(\" + tr.id + \", \" + tr.name + \")\", tr);\n }\n\n tr.end();\n tr = this.createCurrentTransaction(name, type, perfOptions);\n }\n\n if (tr.type === PAGE_LOAD) {\n if (!isRedefined) {\n this.recorder.start(LARGEST_CONTENTFUL_PAINT);\n this.recorder.start(PAINT);\n this.recorder.start(FIRST_INPUT);\n this.recorder.start(LAYOUT_SHIFT);\n }\n\n if (perfOptions.pageLoadTraceId) {\n tr.traceId = perfOptions.pageLoadTraceId;\n }\n\n if (perfOptions.pageLoadSampled) {\n tr.sampled = perfOptions.pageLoadSampled;\n }\n\n if (tr.name === NAME_UNKNOWN && perfOptions.pageLoadTransactionName) {\n tr.name = perfOptions.pageLoadTransactionName;\n }\n }\n\n if (!isRedefined && this._config.get('monitorLongtasks')) {\n this.recorder.start(LONG_TASK);\n }\n\n if (tr.sampled) {\n tr.captureTimings = true;\n }\n\n return tr;\n };\n\n _proto.startTransaction = function startTransaction(name, type, options) {\n var _this2 = this;\n\n var perfOptions = this.createOptions(options);\n var tr;\n var fireOnstartHook = true;\n\n if (perfOptions.managed) {\n var current = this.currentTransaction;\n tr = this.startManagedTransaction(name, type, perfOptions);\n\n if (current === tr) {\n fireOnstartHook = false;\n }\n } else {\n tr = new Transaction(name, type, perfOptions);\n }\n\n tr.onEnd = function () {\n return _this2.handleTransactionEnd(tr);\n };\n\n if (fireOnstartHook) {\n if (__DEV__) {\n this._logger.debug(\"startTransaction(\" + tr.id + \", \" + tr.name + \", \" + tr.type + \")\");\n }\n\n this._config.events.send(TRANSACTION_START, [tr]);\n }\n\n return tr;\n };\n\n _proto.handleTransactionEnd = function handleTransactionEnd(tr) {\n var _this3 = this;\n\n this.recorder.stop();\n var currentUrl = window.location.href;\n return Promise.resolve().then(function () {\n var name = tr.name,\n type = tr.type;\n var lastHiddenStart = state.lastHiddenStart;\n\n if (lastHiddenStart >= tr._start) {\n if (__DEV__) {\n _this3._logger.debug(\"transaction(\" + tr.id + \", \" + name + \", \" + type + \") was discarded! The page was hidden during the transaction!\");\n }\n\n return;\n }\n\n if (_this3.shouldIgnoreTransaction(name) || type === TEMPORARY_TYPE) {\n if (__DEV__) {\n _this3._logger.debug(\"transaction(\" + tr.id + \", \" + name + \", \" + type + \") is ignored\");\n }\n\n return;\n }\n\n if (type === PAGE_LOAD) {\n var pageLoadTransactionName = _this3._config.get('pageLoadTransactionName');\n\n if (name === NAME_UNKNOWN && pageLoadTransactionName) {\n tr.name = pageLoadTransactionName;\n }\n\n if (tr.captureTimings) {\n var cls = metrics.cls,\n fid = metrics.fid,\n tbt = metrics.tbt,\n longtask = metrics.longtask;\n\n if (tbt.duration > 0) {\n tr.spans.push(createTotalBlockingTimeSpan(tbt));\n }\n\n tr.experience = {};\n\n if (isPerfTypeSupported(LONG_TASK)) {\n tr.experience.tbt = tbt.duration;\n }\n\n if (isPerfTypeSupported(LAYOUT_SHIFT)) {\n tr.experience.cls = cls;\n }\n\n if (fid > 0) {\n tr.experience.fid = fid;\n }\n\n if (longtask.count > 0) {\n tr.experience.longtask = {\n count: longtask.count,\n sum: longtask.duration,\n max: longtask.max\n };\n }\n }\n\n _this3.setSession(tr);\n }\n\n if (tr.name === NAME_UNKNOWN) {\n tr.name = slugifyUrl(currentUrl);\n }\n\n captureNavigation(tr);\n\n _this3.adjustTransactionTime(tr);\n\n var breakdownMetrics = _this3._config.get('breakdownMetrics');\n\n if (breakdownMetrics) {\n tr.captureBreakdown();\n }\n\n var configContext = _this3._config.get('context');\n\n addTransactionContext(tr, configContext);\n\n _this3._config.events.send(TRANSACTION_END, [tr]);\n\n if (__DEV__) {\n _this3._logger.debug(\"end transaction(\" + tr.id + \", \" + tr.name + \", \" + tr.type + \")\", tr);\n }\n }, function (err) {\n if (__DEV__) {\n _this3._logger.debug(\"error ending transaction(\" + tr.id + \", \" + tr.name + \")\", err);\n }\n });\n };\n\n _proto.setSession = function setSession(tr) {\n var session = this._config.get('session');\n\n if (session) {\n if (typeof session == 'boolean') {\n tr.session = {\n id: generateRandomId(16),\n sequence: 1\n };\n } else {\n if (session.timestamp && Date.now() - session.timestamp > SESSION_TIMEOUT) {\n tr.session = {\n id: generateRandomId(16),\n sequence: 1\n };\n } else {\n tr.session = {\n id: session.id,\n sequence: session.sequence ? session.sequence + 1 : 1\n };\n }\n }\n\n var sessionConfig = {\n session: {\n id: tr.session.id,\n sequence: tr.session.sequence,\n timestamp: Date.now()\n }\n };\n\n this._config.setConfig(sessionConfig);\n\n this._config.setLocalConfig(sessionConfig, true);\n }\n };\n\n _proto.adjustTransactionTime = function adjustTransactionTime(transaction) {\n var spans = transaction.spans;\n var earliestSpan = getEarliestSpan(spans);\n\n if (earliestSpan && earliestSpan._start < transaction._start) {\n transaction._start = earliestSpan._start;\n }\n\n var latestSpan = getLatestNonXHRSpan(spans);\n\n if (latestSpan && latestSpan._end > transaction._end) {\n transaction._end = latestSpan._end;\n }\n\n var transactionEnd = transaction._end;\n\n for (var i = 0; i < spans.length; i++) {\n var span = spans[i];\n\n if (span._end > transactionEnd) {\n span._end = transactionEnd;\n span.type += TRUNCATED_TYPE;\n }\n\n if (span._start > transactionEnd) {\n span._start = transactionEnd;\n }\n }\n };\n\n _proto.shouldIgnoreTransaction = function shouldIgnoreTransaction(transactionName) {\n var ignoreList = this._config.get('ignoreTransactions');\n\n if (ignoreList && ignoreList.length) {\n for (var i = 0; i < ignoreList.length; i++) {\n var element = ignoreList[i];\n\n if (typeof element.test === 'function') {\n if (element.test(transactionName)) {\n return true;\n }\n } else if (element === transactionName) {\n return true;\n }\n }\n }\n\n return false;\n };\n\n _proto.startSpan = function startSpan(name, type, options) {\n var tr = this.getCurrentTransaction();\n\n if (!tr) {\n tr = this.createCurrentTransaction(undefined, TEMPORARY_TYPE, this.createOptions({\n canReuse: true,\n managed: true\n }));\n }\n\n var span = tr.startSpan(name, type, options);\n\n if (__DEV__) {\n this._logger.debug(\"startSpan(\" + name + \", \" + span.type + \")\", \"on transaction(\" + tr.id + \", \" + tr.name + \")\");\n }\n\n return span;\n };\n\n _proto.endSpan = function endSpan(span, context) {\n if (!span) {\n return;\n }\n\n if (__DEV__) {\n var tr = this.getCurrentTransaction();\n tr && this._logger.debug(\"endSpan(\" + span.name + \", \" + span.type + \")\", \"on transaction(\" + tr.id + \", \" + tr.name + \")\");\n }\n\n span.end(null, context);\n };\n\n return TransactionService;\n}();\n\nexport default TransactionService;","import { registerServices as registerErrorServices } from './error-logging';\nimport { registerServices as registerPerfServices } from './performance-monitoring';\nimport { ServiceFactory } from './common/service-factory';\nimport { isPlatformSupported, scheduleMicroTask, scheduleMacroTask, isBrowser } from './common/utils';\nimport { patchAll, patchEventHandler } from './common/patching';\nimport { PAGE_LOAD, ERROR, CONFIG_SERVICE, LOGGING_SERVICE, APM_SERVER } from './common/constants';\nimport { getInstrumentationFlags } from './common/instrument';\nimport afterFrame from './common/after-frame';\nimport { bootstrap } from './bootstrap';\nimport { createTracer } from './opentracing';\n\nfunction createServiceFactory() {\n registerPerfServices();\n registerErrorServices();\n var serviceFactory = new ServiceFactory();\n return serviceFactory;\n}\n\nexport { createServiceFactory, ServiceFactory, patchAll, patchEventHandler, isPlatformSupported, isBrowser, getInstrumentationFlags, createTracer, scheduleMicroTask, scheduleMacroTask, afterFrame, ERROR, PAGE_LOAD, CONFIG_SERVICE, LOGGING_SERVICE, APM_SERVER, bootstrap };","import PerformanceMonitoring from './performance-monitoring';\nimport TransactionService from './transaction-service';\nimport { APM_SERVER, CONFIG_SERVICE, LOGGING_SERVICE } from '../common/constants';\nimport { serviceCreators } from '../common/service-factory';\n\nfunction registerServices() {\n serviceCreators['TransactionService'] = function (serviceFactory) {\n var _serviceFactory$getSe = serviceFactory.getService([LOGGING_SERVICE, CONFIG_SERVICE]),\n loggingService = _serviceFactory$getSe[0],\n configService = _serviceFactory$getSe[1];\n\n return new TransactionService(loggingService, configService);\n };\n\n serviceCreators['PerformanceMonitoring'] = function (serviceFactory) {\n var _serviceFactory$getSe2 = serviceFactory.getService([APM_SERVER, CONFIG_SERVICE, LOGGING_SERVICE, 'TransactionService']),\n apmServer = _serviceFactory$getSe2[0],\n configService = _serviceFactory$getSe2[1],\n loggingService = _serviceFactory$getSe2[2],\n transactionService = _serviceFactory$getSe2[3];\n\n return new PerformanceMonitoring(apmServer, configService, loggingService, transactionService);\n };\n}\n\nexport { registerServices };","import ErrorLogging from './error-logging';\nimport { CONFIG_SERVICE, APM_SERVER } from '../common/constants';\nimport { serviceCreators } from '../common/service-factory';\n\nfunction registerServices() {\n serviceCreators['ErrorLogging'] = function (serviceFactory) {\n var _serviceFactory$getSe = serviceFactory.getService([APM_SERVER, CONFIG_SERVICE, 'TransactionService']),\n apmServer = _serviceFactory$getSe[0],\n configService = _serviceFactory$getSe[1],\n transactionService = _serviceFactory$getSe[2];\n\n return new ErrorLogging(apmServer, configService, transactionService);\n };\n}\n\nexport { registerServices };","/**\n * MIT License\n *\n * Copyright (c) 2017-present, Elasticsearch BV\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n *\n */\n\nimport {\n getInstrumentationFlags,\n PAGE_LOAD,\n ERROR,\n CONFIG_SERVICE,\n LOGGING_SERVICE,\n APM_SERVER\n} from '@elastic/apm-rum-core'\n\nexport default class ApmBase {\n constructor(serviceFactory, disable) {\n this._disable = disable\n this.serviceFactory = serviceFactory\n this._initialized = false\n }\n\n isEnabled() {\n return !this._disable\n }\n\n isActive() {\n const configService = this.serviceFactory.getService(CONFIG_SERVICE)\n return this.isEnabled() && this._initialized && configService.get('active')\n }\n\n init(config) {\n if (this.isEnabled() && !this._initialized) {\n this._initialized = true\n const [configService, loggingService] = this.serviceFactory.getService([\n CONFIG_SERVICE,\n LOGGING_SERVICE\n ])\n /**\n * Set Agent version to be sent as part of metadata to the APM Server\n */\n configService.setVersion('5.8.0')\n this.config(config)\n /**\n * Set level here to account for both active and inactive cases\n */\n const logLevel = configService.get('logLevel')\n loggingService.setLevel(logLevel)\n /**\n * Deactive agent when the active config flag is set to false\n */\n const isConfigActive = configService.get('active')\n if (isConfigActive) {\n this.serviceFactory.init()\n\n const flags = getInstrumentationFlags(\n configService.get('instrument'),\n configService.get('disableInstrumentations')\n )\n\n const performanceMonitoring = this.serviceFactory.getService(\n 'PerformanceMonitoring'\n )\n performanceMonitoring.init(flags)\n\n if (flags[ERROR]) {\n const errorLogging = this.serviceFactory.getService('ErrorLogging')\n errorLogging.registerListeners()\n }\n\n if (configService.get('session')) {\n let localConfig = configService.getLocalConfig()\n if (localConfig && localConfig.session) {\n configService.setConfig({\n session: localConfig.session\n })\n }\n }\n\n const sendPageLoad = () =>\n flags[PAGE_LOAD] && this._sendPageLoadMetrics()\n\n if (configService.get('centralConfig')) {\n /**\n * Waiting for the remote config before sending the page load transaction\n */\n this.fetchCentralConfig().then(sendPageLoad)\n } else {\n sendPageLoad()\n }\n } else {\n this._disable = true\n loggingService.warn('RUM agent is inactive')\n }\n }\n return this\n }\n\n /**\n * `fetchCentralConfig` returns a promise that will always resolve\n * if the internal config fetch fails the the promise resolves to `undefined` otherwise\n * it resolves to the fetched config.\n */\n fetchCentralConfig() {\n const [\n apmServer,\n loggingService,\n configService\n ] = this.serviceFactory.getService([\n APM_SERVER,\n LOGGING_SERVICE,\n CONFIG_SERVICE\n ])\n\n return apmServer\n .fetchConfig(\n configService.get('serviceName'),\n configService.get('environment')\n )\n .then(config => {\n var transactionSampleRate = config['transaction_sample_rate']\n if (transactionSampleRate) {\n transactionSampleRate = Number(transactionSampleRate)\n const config = { transactionSampleRate }\n const { invalid } = configService.validate(config)\n if (invalid.length === 0) {\n configService.setConfig(config)\n } else {\n const { key, value, allowed } = invalid[0]\n loggingService.warn(\n `invalid value \"${value}\" for ${key}. Allowed: ${allowed}.`\n )\n }\n }\n return config\n })\n .catch(error => {\n loggingService.warn('failed fetching config:', error)\n })\n }\n\n _sendPageLoadMetrics() {\n /**\n * Name of the transaction is set in transaction service to\n * avoid duplicating the logic at multiple places\n */\n const tr = this.startTransaction(undefined, PAGE_LOAD, {\n managed: true,\n canReuse: true\n })\n\n if (!tr) {\n return\n }\n\n tr.addTask(PAGE_LOAD)\n const sendPageLoadMetrics = () => {\n // to make sure PerformanceTiming.loadEventEnd has a value\n setTimeout(() => tr.removeTask(PAGE_LOAD))\n }\n\n if (document.readyState === 'complete') {\n sendPageLoadMetrics()\n } else {\n window.addEventListener('load', sendPageLoadMetrics)\n }\n }\n\n observe(name, fn) {\n const configService = this.serviceFactory.getService(CONFIG_SERVICE)\n configService.events.observe(name, fn)\n }\n\n /**\n * When the required config keys are invalid, the agent is deactivated with\n * logging error to the console\n *\n * validation error format\n * {\n * missing: [ 'key1', 'key2']\n * invalid: [{\n * key: 'a',\n * value: 'abcd',\n * allowed: 'string'\n * }]\n * }\n */\n config(config) {\n const configService = this.serviceFactory.getService(CONFIG_SERVICE)\n const { missing, invalid } = configService.validate(config)\n if (missing.length === 0 && invalid.length === 0) {\n configService.setConfig(config)\n } else {\n const loggingService = this.serviceFactory.getService(LOGGING_SERVICE)\n const separator = ', '\n let message = \"RUM agent isn't correctly configured. \"\n\n if (missing.length > 0) {\n message += missing.join(separator) + ' is missing'\n if (invalid.length > 0) {\n message += separator\n }\n }\n\n invalid.forEach(({ key, value, allowed }, index) => {\n message +=\n `${key} \"${value}\" contains invalid characters! (allowed: ${allowed})` +\n (index !== invalid.length - 1 ? separator : '')\n })\n loggingService.error(message)\n configService.setConfig({ active: false })\n }\n }\n\n setUserContext(userContext) {\n var configService = this.serviceFactory.getService(CONFIG_SERVICE)\n configService.setUserContext(userContext)\n }\n\n setCustomContext(customContext) {\n var configService = this.serviceFactory.getService(CONFIG_SERVICE)\n configService.setCustomContext(customContext)\n }\n\n addLabels(labels) {\n var configService = this.serviceFactory.getService(CONFIG_SERVICE)\n configService.addLabels(labels)\n }\n\n // Should call this method before 'load' event on window is fired\n setInitialPageLoadName(name) {\n const configService = this.serviceFactory.getService(CONFIG_SERVICE)\n configService.setConfig({\n pageLoadTransactionName: name\n })\n }\n\n startTransaction(name, type, options) {\n if (this.isEnabled()) {\n var transactionService = this.serviceFactory.getService(\n 'TransactionService'\n )\n return transactionService.startTransaction(name, type, options)\n }\n }\n\n startSpan(name, type, options) {\n if (this.isEnabled()) {\n var transactionService = this.serviceFactory.getService(\n 'TransactionService'\n )\n return transactionService.startSpan(name, type, options)\n }\n }\n\n getCurrentTransaction() {\n if (this.isEnabled()) {\n var transactionService = this.serviceFactory.getService(\n 'TransactionService'\n )\n return transactionService.getCurrentTransaction()\n }\n }\n\n captureError(error) {\n if (this.isEnabled()) {\n var errorLogging = this.serviceFactory.getService('ErrorLogging')\n return errorLogging.logError(error)\n }\n }\n\n addFilter(fn) {\n var configService = this.serviceFactory.getService(CONFIG_SERVICE)\n configService.addFilter(fn)\n }\n}\n","import { XMLHTTPREQUEST, FETCH, HISTORY, PAGE_LOAD, ERROR, EVENT_TARGET } from './constants';\nexport function getInstrumentationFlags(instrument, disabledInstrumentations) {\n var _flags;\n\n var flags = (_flags = {}, _flags[XMLHTTPREQUEST] = false, _flags[FETCH] = false, _flags[HISTORY] = false, _flags[PAGE_LOAD] = false, _flags[ERROR] = false, _flags[EVENT_TARGET] = false, _flags);\n\n if (!instrument) {\n return flags;\n }\n\n Object.keys(flags).forEach(function (key) {\n if (disabledInstrumentations.indexOf(key) === -1) {\n flags[key] = true;\n }\n });\n return flags;\n}","/**\n * MIT License\n *\n * Copyright (c) 2017-present, Elasticsearch BV\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n *\n */\n\nimport {\n createServiceFactory,\n bootstrap,\n isBrowser\n} from '@elastic/apm-rum-core'\nimport ApmBase from './apm-base'\n\n/**\n * Use a single instance of ApmBase across all instance of the agent\n * including the instanes used in framework specific integrations\n */\nfunction getApmBase() {\n if (isBrowser && window.elasticApm) {\n return window.elasticApm\n }\n const enabled = bootstrap()\n const serviceFactory = createServiceFactory()\n const apmBase = new ApmBase(serviceFactory, !enabled)\n\n if (isBrowser) {\n window.elasticApm = apmBase\n }\n\n return apmBase\n}\n\nconst apmBase = getApmBase()\n\nconst init = apmBase.init.bind(apmBase)\n\nexport default init\nexport { init, apmBase, ApmBase, apmBase as apm }\n"],"sourceRoot":""}