{ "version": 3, "sources": ["../node_modules/stackframe/stackframe.js", "../node_modules/error-stack-parser/error-stack-parser.js", "../node_modules/stack-generator/stack-generator.js", "../node_modules/source-map/lib/util.js", "../node_modules/source-map/lib/binary-search.js", "../node_modules/source-map/lib/array-set.js", "../node_modules/source-map/lib/base64.js", "../node_modules/source-map/lib/base64-vlq.js", "../node_modules/source-map/lib/quick-sort.js", "../node_modules/source-map/lib/source-map-consumer.js", "../node_modules/stacktrace-gps/stacktrace-gps.js", "../node_modules/stacktrace-js/stacktrace.js", "../helper.ts"], "sourcesContent": ["(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 _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.substring(1);\n }\n\n function _getter(p) {\n return function() {\n return this[p];\n };\n }\n\n var booleanProps = ['isConstructor', 'isEval', 'isNative', 'isToplevel'];\n var numericProps = ['columnNumber', 'lineNumber'];\n var stringProps = ['fileName', 'functionName', 'source'];\n var arrayProps = ['args'];\n var objectProps = ['evalOrigin'];\n\n var props = booleanProps.concat(numericProps, stringProps, arrayProps, objectProps);\n\n function StackFrame(obj) {\n if (!obj) return;\n for (var i = 0; i < props.length; i++) {\n if (obj[props[i]] !== undefined) {\n this['set' + _capitalize(props[i])](obj[props[i]]);\n }\n }\n }\n\n StackFrame.prototype = {\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 getEvalOrigin: function() {\n return this.evalOrigin;\n },\n setEvalOrigin: function(v) {\n if (v instanceof StackFrame) {\n this.evalOrigin = v;\n } else if (v instanceof Object) {\n this.evalOrigin = new StackFrame(v);\n } else {\n throw new TypeError('Eval Origin must be an Object or StackFrame');\n }\n },\n\n toString: function() {\n var fileName = this.getFileName() || '';\n var lineNumber = this.getLineNumber() || '';\n var columnNumber = this.getColumnNumber() || '';\n var functionName = this.getFunctionName() || '';\n if (this.getIsEval()) {\n if (fileName) {\n return '[eval] (' + fileName + ':' + lineNumber + ':' + columnNumber + ')';\n }\n return '[eval]:' + lineNumber + ':' + columnNumber;\n }\n if (functionName) {\n return functionName + ' (' + fileName + ':' + lineNumber + ':' + columnNumber + ')';\n }\n return fileName + ':' + lineNumber + ':' + columnNumber;\n }\n };\n\n StackFrame.fromString = function StackFrame$$fromString(str) {\n var argsStartIndex = str.indexOf('(');\n var argsEndIndex = str.lastIndexOf(')');\n\n var functionName = str.substring(0, argsStartIndex);\n var args = str.substring(argsStartIndex + 1, argsEndIndex).split(',');\n var locationString = str.substring(argsEndIndex + 1);\n\n if (locationString.indexOf('@') === 0) {\n var parts = /@(.+?)(?::(\\d+))?(?::(\\d+))?$/.exec(locationString, '');\n var fileName = parts[1];\n var lineNumber = parts[2];\n var columnNumber = parts[3];\n }\n\n return new StackFrame({\n functionName: functionName,\n args: args || undefined,\n fileName: fileName,\n lineNumber: lineNumber || undefined,\n columnNumber: columnNumber || undefined\n });\n };\n\n for (var i = 0; i < booleanProps.length; i++) {\n StackFrame.prototype['get' + _capitalize(booleanProps[i])] = _getter(booleanProps[i]);\n StackFrame.prototype['set' + _capitalize(booleanProps[i])] = (function(p) {\n return function(v) {\n this[p] = Boolean(v);\n };\n })(booleanProps[i]);\n }\n\n for (var j = 0; j < numericProps.length; j++) {\n StackFrame.prototype['get' + _capitalize(numericProps[j])] = _getter(numericProps[j]);\n StackFrame.prototype['set' + _capitalize(numericProps[j])] = (function(p) {\n return function(v) {\n if (!_isNumber(v)) {\n throw new TypeError(p + ' must be a Number');\n }\n this[p] = Number(v);\n };\n })(numericProps[j]);\n }\n\n for (var k = 0; k < stringProps.length; k++) {\n StackFrame.prototype['get' + _capitalize(stringProps[k])] = _getter(stringProps[k]);\n StackFrame.prototype['set' + _capitalize(stringProps[k])] = (function(p) {\n return function(v) {\n this[p] = String(v);\n };\n })(stringProps[k]);\n }\n\n return StackFrame;\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('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 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 = error.stack.split('\\n').filter(function(line) {\n return !!line.match(CHROME_IE_STACK_REGEXP);\n }, this);\n\n return filtered.map(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 sanitizedLine = line.replace(/^\\s+/, '').replace(/\\(eval code/g, '(');\n\n // capture and preseve the parenthesized location \"(/foo/my bar.js:12:87)\" in\n // case it has spaces in it, as the string is split on \\s+ later on\n var location = sanitizedLine.match(/ (\\((.+):(\\d+):(\\d+)\\)$)/);\n\n // remove the parenthesized location from the line, if it was matched\n sanitizedLine = location ? sanitizedLine.replace(location[0], '') : sanitizedLine;\n\n var tokens = sanitizedLine.split(/\\s+/).slice(1);\n // if a location was matched, pass it to extractLocation() otherwise pop the last token\n var locationParts = this.extractLocation(location ? location[1] : tokens.pop());\n var functionName = tokens.join(' ') || undefined;\n var fileName = ['eval', ''].indexOf(locationParts[0]) > -1 ? undefined : locationParts[0];\n\n return new StackFrame({\n functionName: functionName,\n fileName: fileName,\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }, this);\n },\n\n parseFFOrSafari: function ErrorStackParser$$parseFFOrSafari(error) {\n var filtered = error.stack.split('\\n').filter(function(line) {\n return !line.match(SAFARI_NATIVE_CODE_REGEXP);\n }, this);\n\n return filtered.map(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({\n functionName: line\n });\n } else {\n var functionNameRegex = /((.*\".+\"[^@]*)?[^@]*)(?:@)/;\n var matches = line.match(functionNameRegex);\n var functionName = matches && matches[1] ? matches[1] : undefined;\n var locationParts = this.extractLocation(line.replace(functionNameRegex, ''));\n\n return new StackFrame({\n functionName: functionName,\n fileName: locationParts[0],\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\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({\n fileName: match[2],\n lineNumber: match[1],\n source: lines[i]\n }));\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 functionName: match[3] || undefined,\n fileName: match[2],\n lineNumber: match[1],\n source: 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 = error.stack.split('\\n').filter(function(line) {\n return !!line.match(FIREFOX_SAFARI_STACK_REGEXP) && !line.match(/^Error created at/);\n }, this);\n\n return filtered.map(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\n return new StackFrame({\n functionName: functionName,\n args: args,\n fileName: locationParts[0],\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }, this);\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('stack-generator', ['stackframe'], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory(require('stackframe'));\n } else {\n root.StackGenerator = factory(root.StackFrame);\n }\n}(this, function(StackFrame) {\n return {\n backtrace: function StackGenerator$$backtrace(opts) {\n var stack = [];\n var maxStackSize = 10;\n\n if (typeof opts === 'object' && typeof opts.maxStackSize === 'number') {\n maxStackSize = opts.maxStackSize;\n }\n\n var curr = arguments.callee;\n while (curr && stack.length < maxStackSize && curr['arguments']) {\n // Allow V8 optimizations\n var args = new Array(curr['arguments'].length);\n for (var i = 0; i < args.length; ++i) {\n args[i] = curr['arguments'][i];\n }\n if (/function(?:\\s+([\\w$]+))+\\s*\\(/.test(curr.toString())) {\n stack.push(new StackFrame({functionName: RegExp.$1 || undefined, args: args}));\n } else {\n stack.push(new StackFrame({args: args}));\n }\n\n try {\n curr = curr.caller;\n } catch (e) {\n break;\n }\n }\n return stack;\n }\n };\n}));\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n/**\n * This is a helper function for getting values from parameter/options\n * objects.\n *\n * @param args The object we are extracting values from\n * @param name The name of the property we are getting.\n * @param defaultValue An optional value to return if the property is missing\n * from the object. If this is not specified and the property is missing, an\n * error will be thrown.\n */\nfunction getArg(aArgs, aName, aDefaultValue) {\n if (aName in aArgs) {\n return aArgs[aName];\n } else if (arguments.length === 3) {\n return aDefaultValue;\n } else {\n throw new Error('\"' + aName + '\" is a required argument.');\n }\n}\nexports.getArg = getArg;\n\nvar urlRegexp = /^(?:([\\w+\\-.]+):)?\\/\\/(?:(\\w+:\\w+)@)?([\\w.]*)(?::(\\d+))?(\\S*)$/;\nvar dataUrlRegexp = /^data:.+\\,.+$/;\n\nfunction urlParse(aUrl) {\n var match = aUrl.match(urlRegexp);\n if (!match) {\n return null;\n }\n return {\n scheme: match[1],\n auth: match[2],\n host: match[3],\n port: match[4],\n path: match[5]\n };\n}\nexports.urlParse = urlParse;\n\nfunction urlGenerate(aParsedUrl) {\n var url = '';\n if (aParsedUrl.scheme) {\n url += aParsedUrl.scheme + ':';\n }\n url += '//';\n if (aParsedUrl.auth) {\n url += aParsedUrl.auth + '@';\n }\n if (aParsedUrl.host) {\n url += aParsedUrl.host;\n }\n if (aParsedUrl.port) {\n url += \":\" + aParsedUrl.port\n }\n if (aParsedUrl.path) {\n url += aParsedUrl.path;\n }\n return url;\n}\nexports.urlGenerate = urlGenerate;\n\n/**\n * Normalizes a path, or the path portion of a URL:\n *\n * - Replaces consecutive slashes with one slash.\n * - Removes unnecessary '.' parts.\n * - Removes unnecessary '/..' parts.\n *\n * Based on code in the Node.js 'path' core module.\n *\n * @param aPath The path or url to normalize.\n */\nfunction normalize(aPath) {\n var path = aPath;\n var url = urlParse(aPath);\n if (url) {\n if (!url.path) {\n return aPath;\n }\n path = url.path;\n }\n var isAbsolute = exports.isAbsolute(path);\n\n var parts = path.split(/\\/+/);\n for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {\n part = parts[i];\n if (part === '.') {\n parts.splice(i, 1);\n } else if (part === '..') {\n up++;\n } else if (up > 0) {\n if (part === '') {\n // The first part is blank if the path is absolute. Trying to go\n // above the root is a no-op. Therefore we can remove all '..' parts\n // directly after the root.\n parts.splice(i + 1, up);\n up = 0;\n } else {\n parts.splice(i, 2);\n up--;\n }\n }\n }\n path = parts.join('/');\n\n if (path === '') {\n path = isAbsolute ? '/' : '.';\n }\n\n if (url) {\n url.path = path;\n return urlGenerate(url);\n }\n return path;\n}\nexports.normalize = normalize;\n\n/**\n * Joins two paths/URLs.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be joined with the root.\n *\n * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a\n * scheme-relative URL: Then the scheme of aRoot, if any, is prepended\n * first.\n * - Otherwise aPath is a path. If aRoot is a URL, then its path portion\n * is updated with the result and aRoot is returned. Otherwise the result\n * is returned.\n * - If aPath is absolute, the result is aPath.\n * - Otherwise the two paths are joined with a slash.\n * - Joining for example 'http://' and 'www.example.com' is also supported.\n */\nfunction join(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n if (aPath === \"\") {\n aPath = \".\";\n }\n var aPathUrl = urlParse(aPath);\n var aRootUrl = urlParse(aRoot);\n if (aRootUrl) {\n aRoot = aRootUrl.path || '/';\n }\n\n // `join(foo, '//www.example.org')`\n if (aPathUrl && !aPathUrl.scheme) {\n if (aRootUrl) {\n aPathUrl.scheme = aRootUrl.scheme;\n }\n return urlGenerate(aPathUrl);\n }\n\n if (aPathUrl || aPath.match(dataUrlRegexp)) {\n return aPath;\n }\n\n // `join('http://', 'www.example.com')`\n if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {\n aRootUrl.host = aPath;\n return urlGenerate(aRootUrl);\n }\n\n var joined = aPath.charAt(0) === '/'\n ? aPath\n : normalize(aRoot.replace(/\\/+$/, '') + '/' + aPath);\n\n if (aRootUrl) {\n aRootUrl.path = joined;\n return urlGenerate(aRootUrl);\n }\n return joined;\n}\nexports.join = join;\n\nexports.isAbsolute = function (aPath) {\n return aPath.charAt(0) === '/' || !!aPath.match(urlRegexp);\n};\n\n/**\n * Make a path relative to a URL or another path.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be made relative to aRoot.\n */\nfunction relative(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n\n aRoot = aRoot.replace(/\\/$/, '');\n\n // It is possible for the path to be above the root. In this case, simply\n // checking whether the root is a prefix of the path won't work. Instead, we\n // need to remove components from the root one by one, until either we find\n // a prefix that fits, or we run out of components to remove.\n var level = 0;\n while (aPath.indexOf(aRoot + '/') !== 0) {\n var index = aRoot.lastIndexOf(\"/\");\n if (index < 0) {\n return aPath;\n }\n\n // If the only part of the root that is left is the scheme (i.e. http://,\n // file:///, etc.), one or more slashes (/), or simply nothing at all, we\n // have exhausted all components, so the path is not relative to the root.\n aRoot = aRoot.slice(0, index);\n if (aRoot.match(/^([^\\/]+:\\/)?\\/*$/)) {\n return aPath;\n }\n\n ++level;\n }\n\n // Make sure we add a \"../\" for each component we removed from the root.\n return Array(level + 1).join(\"../\") + aPath.substr(aRoot.length + 1);\n}\nexports.relative = relative;\n\nvar supportsNullProto = (function () {\n var obj = Object.create(null);\n return !('__proto__' in obj);\n}());\n\nfunction identity (s) {\n return s;\n}\n\n/**\n * Because behavior goes wacky when you set `__proto__` on objects, we\n * have to prefix all the strings in our set with an arbitrary character.\n *\n * See https://github.com/mozilla/source-map/pull/31 and\n * https://github.com/mozilla/source-map/issues/30\n *\n * @param String aStr\n */\nfunction toSetString(aStr) {\n if (isProtoString(aStr)) {\n return '$' + aStr;\n }\n\n return aStr;\n}\nexports.toSetString = supportsNullProto ? identity : toSetString;\n\nfunction fromSetString(aStr) {\n if (isProtoString(aStr)) {\n return aStr.slice(1);\n }\n\n return aStr;\n}\nexports.fromSetString = supportsNullProto ? identity : fromSetString;\n\nfunction isProtoString(s) {\n if (!s) {\n return false;\n }\n\n var length = s.length;\n\n if (length < 9 /* \"__proto__\".length */) {\n return false;\n }\n\n if (s.charCodeAt(length - 1) !== 95 /* '_' */ ||\n s.charCodeAt(length - 2) !== 95 /* '_' */ ||\n s.charCodeAt(length - 3) !== 111 /* 'o' */ ||\n s.charCodeAt(length - 4) !== 116 /* 't' */ ||\n s.charCodeAt(length - 5) !== 111 /* 'o' */ ||\n s.charCodeAt(length - 6) !== 114 /* 'r' */ ||\n s.charCodeAt(length - 7) !== 112 /* 'p' */ ||\n s.charCodeAt(length - 8) !== 95 /* '_' */ ||\n s.charCodeAt(length - 9) !== 95 /* '_' */) {\n return false;\n }\n\n for (var i = length - 10; i >= 0; i--) {\n if (s.charCodeAt(i) !== 36 /* '$' */) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Comparator between two mappings where the original positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same original source/line/column, but different generated\n * line and column the same. Useful when searching for a mapping with a\n * stubbed out mapping.\n */\nfunction compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {\n var cmp = mappingA.source - mappingB.source;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0 || onlyCompareOriginal) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n return mappingA.name - mappingB.name;\n}\nexports.compareByOriginalPositions = compareByOriginalPositions;\n\n/**\n * Comparator between two mappings with deflated source and name indices where\n * the generated positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same generated line and column, but different\n * source/name/original line and column the same. Useful when searching for a\n * mapping with a stubbed out mapping.\n */\nfunction compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0 || onlyCompareGenerated) {\n return cmp;\n }\n\n cmp = mappingA.source - mappingB.source;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n return mappingA.name - mappingB.name;\n}\nexports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;\n\nfunction strcmp(aStr1, aStr2) {\n if (aStr1 === aStr2) {\n return 0;\n }\n\n if (aStr1 > aStr2) {\n return 1;\n }\n\n return -1;\n}\n\n/**\n * Comparator between two mappings with inflated source and name strings where\n * the generated positions are compared.\n */\nfunction compareByGeneratedPositionsInflated(mappingA, mappingB) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nexports.GREATEST_LOWER_BOUND = 1;\nexports.LEAST_UPPER_BOUND = 2;\n\n/**\n * Recursive implementation of binary search.\n *\n * @param aLow Indices here and lower do not contain the needle.\n * @param aHigh Indices here and higher do not contain the needle.\n * @param aNeedle The element being searched for.\n * @param aHaystack The non-empty array being searched.\n * @param aCompare Function which takes two elements and returns -1, 0, or 1.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n */\nfunction recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {\n // This function terminates when one of the following is true:\n //\n // 1. We find the exact element we are looking for.\n //\n // 2. We did not find the exact element, but we can return the index of\n // the next-closest element.\n //\n // 3. We did not find the exact element, and there is no next-closest\n // element than the one we are searching for, so we return -1.\n var mid = Math.floor((aHigh - aLow) / 2) + aLow;\n var cmp = aCompare(aNeedle, aHaystack[mid], true);\n if (cmp === 0) {\n // Found the element we are looking for.\n return mid;\n }\n else if (cmp > 0) {\n // Our needle is greater than aHaystack[mid].\n if (aHigh - mid > 1) {\n // The element is in the upper half.\n return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // The exact needle element was not found in this haystack. Determine if\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return aHigh < aHaystack.length ? aHigh : -1;\n } else {\n return mid;\n }\n }\n else {\n // Our needle is less than aHaystack[mid].\n if (mid - aLow > 1) {\n // The element is in the lower half.\n return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return mid;\n } else {\n return aLow < 0 ? -1 : aLow;\n }\n }\n}\n\n/**\n * This is an implementation of binary search which will always try and return\n * the index of the closest element if there is no exact hit. This is because\n * mappings between original and generated line/col pairs are single points,\n * and there is an implicit region between each of them, so a miss just means\n * that you aren't on the very start of a region.\n *\n * @param aNeedle The element you are looking for.\n * @param aHaystack The array that is being searched.\n * @param aCompare A function which takes the needle and an element in the\n * array and returns -1, 0, or 1 depending on whether the needle is less\n * than, equal to, or greater than the element, respectively.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.\n */\nexports.search = function search(aNeedle, aHaystack, aCompare, aBias) {\n if (aHaystack.length === 0) {\n return -1;\n }\n\n var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,\n aCompare, aBias || exports.GREATEST_LOWER_BOUND);\n if (index < 0) {\n return -1;\n }\n\n // We have found either the exact element, or the next-closest element than\n // the one we are searching for. However, there may be more than one such\n // element. Make sure we always return the smallest of these.\n while (index - 1 >= 0) {\n if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {\n break;\n }\n --index;\n }\n\n return index;\n};\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar has = Object.prototype.hasOwnProperty;\n\n/**\n * A data structure which is a combination of an array and a set. Adding a new\n * member is O(1), testing for membership is O(1), and finding the index of an\n * element is O(1). Removing elements from the set is not supported. Only\n * strings are supported for membership.\n */\nfunction ArraySet() {\n this._array = [];\n this._set = Object.create(null);\n}\n\n/**\n * Static method for creating ArraySet instances from an existing array.\n */\nArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {\n var set = new ArraySet();\n for (var i = 0, len = aArray.length; i < len; i++) {\n set.add(aArray[i], aAllowDuplicates);\n }\n return set;\n};\n\n/**\n * Return how many unique items are in this ArraySet. If duplicates have been\n * added, than those do not count towards the size.\n *\n * @returns Number\n */\nArraySet.prototype.size = function ArraySet_size() {\n return Object.getOwnPropertyNames(this._set).length;\n};\n\n/**\n * Add the given string to this set.\n *\n * @param String aStr\n */\nArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {\n var sStr = util.toSetString(aStr);\n var isDuplicate = has.call(this._set, sStr);\n var idx = this._array.length;\n if (!isDuplicate || aAllowDuplicates) {\n this._array.push(aStr);\n }\n if (!isDuplicate) {\n this._set[sStr] = idx;\n }\n};\n\n/**\n * Is the given string a member of this set?\n *\n * @param String aStr\n */\nArraySet.prototype.has = function ArraySet_has(aStr) {\n var sStr = util.toSetString(aStr);\n return has.call(this._set, sStr);\n};\n\n/**\n * What is the index of the given string in the array?\n *\n * @param String aStr\n */\nArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {\n var sStr = util.toSetString(aStr);\n if (has.call(this._set, sStr)) {\n return this._set[sStr];\n }\n throw new Error('\"' + aStr + '\" is not in the set.');\n};\n\n/**\n * What is the element at the given index?\n *\n * @param Number aIdx\n */\nArraySet.prototype.at = function ArraySet_at(aIdx) {\n if (aIdx >= 0 && aIdx < this._array.length) {\n return this._array[aIdx];\n }\n throw new Error('No element indexed by ' + aIdx);\n};\n\n/**\n * Returns the array representation of this set (which has the proper indices\n * indicated by indexOf). Note that this is a copy of the internal array used\n * for storing the members so that no one can mess with internal state.\n */\nArraySet.prototype.toArray = function ArraySet_toArray() {\n return this._array.slice();\n};\n\nexports.ArraySet = ArraySet;\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');\n\n/**\n * Encode an integer in the range of 0 to 63 to a single base 64 digit.\n */\nexports.encode = function (number) {\n if (0 <= number && number < intToCharMap.length) {\n return intToCharMap[number];\n }\n throw new TypeError(\"Must be between 0 and 63: \" + number);\n};\n\n/**\n * Decode a single base 64 character code digit to an integer. Returns -1 on\n * failure.\n */\nexports.decode = function (charCode) {\n var bigA = 65; // 'A'\n var bigZ = 90; // 'Z'\n\n var littleA = 97; // 'a'\n var littleZ = 122; // 'z'\n\n var zero = 48; // '0'\n var nine = 57; // '9'\n\n var plus = 43; // '+'\n var slash = 47; // '/'\n\n var littleOffset = 26;\n var numberOffset = 52;\n\n // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ\n if (bigA <= charCode && charCode <= bigZ) {\n return (charCode - bigA);\n }\n\n // 26 - 51: abcdefghijklmnopqrstuvwxyz\n if (littleA <= charCode && charCode <= littleZ) {\n return (charCode - littleA + littleOffset);\n }\n\n // 52 - 61: 0123456789\n if (zero <= charCode && charCode <= nine) {\n return (charCode - zero + numberOffset);\n }\n\n // 62: +\n if (charCode == plus) {\n return 62;\n }\n\n // 63: /\n if (charCode == slash) {\n return 63;\n }\n\n // Invalid base64 digit.\n return -1;\n};\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * Based on the Base 64 VLQ implementation in Closure Compiler:\n * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java\n *\n * Copyright 2011 The Closure Compiler Authors. All rights reserved.\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * met:\n *\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above\n * copyright notice, this list of conditions and the following\n * disclaimer in the documentation and/or other materials provided\n * with the distribution.\n * * Neither the name of Google Inc. nor the names of its\n * contributors may be used to endorse or promote products derived\n * from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nvar base64 = require('./base64');\n\n// A single base 64 digit can contain 6 bits of data. For the base 64 variable\n// length quantities we use in the source map spec, the first bit is the sign,\n// the next four bits are the actual value, and the 6th bit is the\n// continuation bit. The continuation bit tells us whether there are more\n// digits in this value following this digit.\n//\n// Continuation\n// | Sign\n// | |\n// V V\n// 101011\n\nvar VLQ_BASE_SHIFT = 5;\n\n// binary: 100000\nvar VLQ_BASE = 1 << VLQ_BASE_SHIFT;\n\n// binary: 011111\nvar VLQ_BASE_MASK = VLQ_BASE - 1;\n\n// binary: 100000\nvar VLQ_CONTINUATION_BIT = VLQ_BASE;\n\n/**\n * Converts from a two-complement value to a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)\n * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)\n */\nfunction toVLQSigned(aValue) {\n return aValue < 0\n ? ((-aValue) << 1) + 1\n : (aValue << 1) + 0;\n}\n\n/**\n * Converts to a two-complement value from a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1\n * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2\n */\nfunction fromVLQSigned(aValue) {\n var isNegative = (aValue & 1) === 1;\n var shifted = aValue >> 1;\n return isNegative\n ? -shifted\n : shifted;\n}\n\n/**\n * Returns the base 64 VLQ encoded value.\n */\nexports.encode = function base64VLQ_encode(aValue) {\n var encoded = \"\";\n var digit;\n\n var vlq = toVLQSigned(aValue);\n\n do {\n digit = vlq & VLQ_BASE_MASK;\n vlq >>>= VLQ_BASE_SHIFT;\n if (vlq > 0) {\n // There are still more digits in this value, so we must make sure the\n // continuation bit is marked.\n digit |= VLQ_CONTINUATION_BIT;\n }\n encoded += base64.encode(digit);\n } while (vlq > 0);\n\n return encoded;\n};\n\n/**\n * Decodes the next base 64 VLQ value from the given string and returns the\n * value and the rest of the string via the out parameter.\n */\nexports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {\n var strLen = aStr.length;\n var result = 0;\n var shift = 0;\n var continuation, digit;\n\n do {\n if (aIndex >= strLen) {\n throw new Error(\"Expected more digits in base 64 VLQ value.\");\n }\n\n digit = base64.decode(aStr.charCodeAt(aIndex++));\n if (digit === -1) {\n throw new Error(\"Invalid base64 digit: \" + aStr.charAt(aIndex - 1));\n }\n\n continuation = !!(digit & VLQ_CONTINUATION_BIT);\n digit &= VLQ_BASE_MASK;\n result = result + (digit << shift);\n shift += VLQ_BASE_SHIFT;\n } while (continuation);\n\n aOutParam.value = fromVLQSigned(result);\n aOutParam.rest = aIndex;\n};\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n// It turns out that some (most?) JavaScript engines don't self-host\n// `Array.prototype.sort`. This makes sense because C++ will likely remain\n// faster than JS when doing raw CPU-intensive sorting. However, when using a\n// custom comparator function, calling back and forth between the VM's C++ and\n// JIT'd JS is rather slow *and* loses JIT type information, resulting in\n// worse generated code for the comparator function than would be optimal. In\n// fact, when sorting with a comparator, these costs outweigh the benefits of\n// sorting in C++. By using our own JS-implemented Quick Sort (below), we get\n// a ~3500ms mean speed-up in `bench/bench.html`.\n\n/**\n * Swap the elements indexed by `x` and `y` in the array `ary`.\n *\n * @param {Array} ary\n * The array.\n * @param {Number} x\n * The index of the first item.\n * @param {Number} y\n * The index of the second item.\n */\nfunction swap(ary, x, y) {\n var temp = ary[x];\n ary[x] = ary[y];\n ary[y] = temp;\n}\n\n/**\n * Returns a random integer within the range `low .. high` inclusive.\n *\n * @param {Number} low\n * The lower bound on the range.\n * @param {Number} high\n * The upper bound on the range.\n */\nfunction randomIntInRange(low, high) {\n return Math.round(low + (Math.random() * (high - low)));\n}\n\n/**\n * The Quick Sort algorithm.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n * @param {Number} p\n * Start index of the array\n * @param {Number} r\n * End index of the array\n */\nfunction doQuickSort(ary, comparator, p, r) {\n // If our lower bound is less than our upper bound, we (1) partition the\n // array into two pieces and (2) recurse on each half. If it is not, this is\n // the empty array and our base case.\n\n if (p < r) {\n // (1) Partitioning.\n //\n // The partitioning chooses a pivot between `p` and `r` and moves all\n // elements that are less than or equal to the pivot to the before it, and\n // all the elements that are greater than it after it. The effect is that\n // once partition is done, the pivot is in the exact place it will be when\n // the array is put in sorted order, and it will not need to be moved\n // again. This runs in O(n) time.\n\n // Always choose a random pivot so that an input array which is reverse\n // sorted does not cause O(n^2) running time.\n var pivotIndex = randomIntInRange(p, r);\n var i = p - 1;\n\n swap(ary, pivotIndex, r);\n var pivot = ary[r];\n\n // Immediately after `j` is incremented in this loop, the following hold\n // true:\n //\n // * Every element in `ary[p .. i]` is less than or equal to the pivot.\n //\n // * Every element in `ary[i+1 .. j-1]` is greater than the pivot.\n for (var j = p; j < r; j++) {\n if (comparator(ary[j], pivot) <= 0) {\n i += 1;\n swap(ary, i, j);\n }\n }\n\n swap(ary, i + 1, j);\n var q = i + 1;\n\n // (2) Recurse on each half.\n\n doQuickSort(ary, comparator, p, q - 1);\n doQuickSort(ary, comparator, q + 1, r);\n }\n}\n\n/**\n * Sort the given array in-place with the given comparator function.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n */\nexports.quickSort = function (ary, comparator) {\n doQuickSort(ary, comparator, 0, ary.length - 1);\n};\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar binarySearch = require('./binary-search');\nvar ArraySet = require('./array-set').ArraySet;\nvar base64VLQ = require('./base64-vlq');\nvar quickSort = require('./quick-sort').quickSort;\n\nfunction SourceMapConsumer(aSourceMap) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n }\n\n return sourceMap.sections != null\n ? new IndexedSourceMapConsumer(sourceMap)\n : new BasicSourceMapConsumer(sourceMap);\n}\n\nSourceMapConsumer.fromSourceMap = function(aSourceMap) {\n return BasicSourceMapConsumer.fromSourceMap(aSourceMap);\n}\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nSourceMapConsumer.prototype._version = 3;\n\n// `__generatedMappings` and `__originalMappings` are arrays that hold the\n// parsed mapping coordinates from the source map's \"mappings\" attribute. They\n// are lazily instantiated, accessed via the `_generatedMappings` and\n// `_originalMappings` getters respectively, and we only parse the mappings\n// and create these arrays once queried for a source location. We jump through\n// these hoops because there can be many thousands of mappings, and parsing\n// them is expensive, so we only want to do it if we must.\n//\n// Each object in the arrays is of the form:\n//\n// {\n// generatedLine: The line number in the generated code,\n// generatedColumn: The column number in the generated code,\n// source: The path to the original source file that generated this\n// chunk of code,\n// originalLine: The line number in the original source that\n// corresponds to this chunk of generated code,\n// originalColumn: The column number in the original source that\n// corresponds to this chunk of generated code,\n// name: The name of the original symbol which generated this chunk of\n// code.\n// }\n//\n// All properties except for `generatedLine` and `generatedColumn` can be\n// `null`.\n//\n// `_generatedMappings` is ordered by the generated positions.\n//\n// `_originalMappings` is ordered by the original positions.\n\nSourceMapConsumer.prototype.__generatedMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {\n get: function () {\n if (!this.__generatedMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__generatedMappings;\n }\n});\n\nSourceMapConsumer.prototype.__originalMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {\n get: function () {\n if (!this.__originalMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__originalMappings;\n }\n});\n\nSourceMapConsumer.prototype._charIsMappingSeparator =\n function SourceMapConsumer_charIsMappingSeparator(aStr, index) {\n var c = aStr.charAt(index);\n return c === \";\" || c === \",\";\n };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nSourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n throw new Error(\"Subclasses must implement _parseMappings\");\n };\n\nSourceMapConsumer.GENERATED_ORDER = 1;\nSourceMapConsumer.ORIGINAL_ORDER = 2;\n\nSourceMapConsumer.GREATEST_LOWER_BOUND = 1;\nSourceMapConsumer.LEAST_UPPER_BOUND = 2;\n\n/**\n * Iterate over each mapping between an original source/line/column and a\n * generated line/column in this source map.\n *\n * @param Function aCallback\n * The function that is called with each mapping.\n * @param Object aContext\n * Optional. If specified, this object will be the value of `this` every\n * time that `aCallback` is called.\n * @param aOrder\n * Either `SourceMapConsumer.GENERATED_ORDER` or\n * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to\n * iterate over the mappings sorted by the generated file's line/column\n * order or the original's source/line/column order, respectively. Defaults to\n * `SourceMapConsumer.GENERATED_ORDER`.\n */\nSourceMapConsumer.prototype.eachMapping =\n function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {\n var context = aContext || null;\n var order = aOrder || SourceMapConsumer.GENERATED_ORDER;\n\n var mappings;\n switch (order) {\n case SourceMapConsumer.GENERATED_ORDER:\n mappings = this._generatedMappings;\n break;\n case SourceMapConsumer.ORIGINAL_ORDER:\n mappings = this._originalMappings;\n break;\n default:\n throw new Error(\"Unknown order of iteration.\");\n }\n\n var sourceRoot = this.sourceRoot;\n mappings.map(function (mapping) {\n var source = mapping.source === null ? null : this._sources.at(mapping.source);\n if (source != null && sourceRoot != null) {\n source = util.join(sourceRoot, source);\n }\n return {\n source: source,\n generatedLine: mapping.generatedLine,\n generatedColumn: mapping.generatedColumn,\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: mapping.name === null ? null : this._names.at(mapping.name)\n };\n }, this).forEach(aCallback, context);\n };\n\n/**\n * Returns all generated line and column information for the original source,\n * line, and column provided. If no column is provided, returns all mappings\n * corresponding to a either the line we are searching for or the next\n * closest line that has any mappings. Otherwise, returns all mappings\n * corresponding to the given line and either the column we are searching for\n * or the next closest column that has any offsets.\n *\n * The only argument is an object with the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source.\n * - column: Optional. the column number in the original source.\n *\n * and an array of objects is returned, each with the following properties:\n *\n * - line: The line number in the generated source, or null.\n * - column: The column number in the generated source, or null.\n */\nSourceMapConsumer.prototype.allGeneratedPositionsFor =\n function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {\n var line = util.getArg(aArgs, 'line');\n\n // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping\n // returns the index of the closest mapping less than the needle. By\n // setting needle.originalColumn to 0, we thus find the last mapping for\n // the given line, provided such a mapping exists.\n var needle = {\n source: util.getArg(aArgs, 'source'),\n originalLine: line,\n originalColumn: util.getArg(aArgs, 'column', 0)\n };\n\n if (this.sourceRoot != null) {\n needle.source = util.relative(this.sourceRoot, needle.source);\n }\n if (!this._sources.has(needle.source)) {\n return [];\n }\n needle.source = this._sources.indexOf(needle.source);\n\n var mappings = [];\n\n var index = this._findMapping(needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n binarySearch.LEAST_UPPER_BOUND);\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (aArgs.column === undefined) {\n var originalLine = mapping.originalLine;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we found. Since\n // mappings are sorted, this is guaranteed to find all mappings for\n // the line we found.\n while (mapping && mapping.originalLine === originalLine) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n } else {\n var originalColumn = mapping.originalColumn;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we were searching for.\n // Since mappings are sorted, this is guaranteed to find all mappings for\n // the line we are searching for.\n while (mapping &&\n mapping.originalLine === line &&\n mapping.originalColumn == originalColumn) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n }\n }\n\n return mappings;\n };\n\nexports.SourceMapConsumer = SourceMapConsumer;\n\n/**\n * A BasicSourceMapConsumer instance represents a parsed source map which we can\n * query for information about the original file positions by giving it a file\n * position in the generated source.\n *\n * The only parameter is the raw source map (either as a JSON string, or\n * already parsed to an object). According to the spec, source maps have the\n * following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - sources: An array of URLs to the original source files.\n * - names: An array of identifiers which can be referrenced by individual mappings.\n * - sourceRoot: Optional. The URL root from which all sources are relative.\n * - sourcesContent: Optional. An array of contents of the original source files.\n * - mappings: A string of base64 VLQs which contain the actual mappings.\n * - file: Optional. The generated file this source map is associated with.\n *\n * Here is an example source map, taken from the source map spec[0]:\n *\n * {\n * version : 3,\n * file: \"out.js\",\n * sourceRoot : \"\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AA,AB;;ABCDE;\"\n * }\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#\n */\nfunction BasicSourceMapConsumer(aSourceMap) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sources = util.getArg(sourceMap, 'sources');\n // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which\n // requires the array) to play nice here.\n var names = util.getArg(sourceMap, 'names', []);\n var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);\n var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);\n var mappings = util.getArg(sourceMap, 'mappings');\n var file = util.getArg(sourceMap, 'file', null);\n\n // Once again, Sass deviates from the spec and supplies the version as a\n // string rather than a number, so we use loose equality checking here.\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n sources = sources\n .map(String)\n // Some source maps produce relative source paths like \"./foo.js\" instead of\n // \"foo.js\". Normalize these first so that future comparisons will succeed.\n // See bugzil.la/1090768.\n .map(util.normalize)\n // Always ensure that absolute sources are internally stored relative to\n // the source root, if the source root is absolute. Not doing this would\n // be particularly problematic when the source root is a prefix of the\n // source (valid, but why??). See github issue #199 and bugzil.la/1188982.\n .map(function (source) {\n return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)\n ? util.relative(sourceRoot, source)\n : source;\n });\n\n // Pass `true` below to allow duplicate names and sources. While source maps\n // are intended to be compressed and deduplicated, the TypeScript compiler\n // sometimes generates source maps with duplicates in them. See Github issue\n // #72 and bugzil.la/889492.\n this._names = ArraySet.fromArray(names.map(String), true);\n this._sources = ArraySet.fromArray(sources, true);\n\n this.sourceRoot = sourceRoot;\n this.sourcesContent = sourcesContent;\n this._mappings = mappings;\n this.file = file;\n}\n\nBasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nBasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;\n\n/**\n * Create a BasicSourceMapConsumer from a SourceMapGenerator.\n *\n * @param SourceMapGenerator aSourceMap\n * The source map that will be consumed.\n * @returns BasicSourceMapConsumer\n */\nBasicSourceMapConsumer.fromSourceMap =\n function SourceMapConsumer_fromSourceMap(aSourceMap) {\n var smc = Object.create(BasicSourceMapConsumer.prototype);\n\n var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);\n var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);\n smc.sourceRoot = aSourceMap._sourceRoot;\n smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),\n smc.sourceRoot);\n smc.file = aSourceMap._file;\n\n // Because we are modifying the entries (by converting string sources and\n // names to indices into the sources and names ArraySets), we have to make\n // a copy of the entry or else bad things happen. Shared mutable state\n // strikes again! See github issue #191.\n\n var generatedMappings = aSourceMap._mappings.toArray().slice();\n var destGeneratedMappings = smc.__generatedMappings = [];\n var destOriginalMappings = smc.__originalMappings = [];\n\n for (var i = 0, length = generatedMappings.length; i < length; i++) {\n var srcMapping = generatedMappings[i];\n var destMapping = new Mapping;\n destMapping.generatedLine = srcMapping.generatedLine;\n destMapping.generatedColumn = srcMapping.generatedColumn;\n\n if (srcMapping.source) {\n destMapping.source = sources.indexOf(srcMapping.source);\n destMapping.originalLine = srcMapping.originalLine;\n destMapping.originalColumn = srcMapping.originalColumn;\n\n if (srcMapping.name) {\n destMapping.name = names.indexOf(srcMapping.name);\n }\n\n destOriginalMappings.push(destMapping);\n }\n\n destGeneratedMappings.push(destMapping);\n }\n\n quickSort(smc.__originalMappings, util.compareByOriginalPositions);\n\n return smc;\n };\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nBasicSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {\n get: function () {\n return this._sources.toArray().map(function (s) {\n return this.sourceRoot != null ? util.join(this.sourceRoot, s) : s;\n }, this);\n }\n});\n\n/**\n * Provide the JIT with a nice shape / hidden class.\n */\nfunction Mapping() {\n this.generatedLine = 0;\n this.generatedColumn = 0;\n this.source = null;\n this.originalLine = null;\n this.originalColumn = null;\n this.name = null;\n}\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nBasicSourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n var generatedLine = 1;\n var previousGeneratedColumn = 0;\n var previousOriginalLine = 0;\n var previousOriginalColumn = 0;\n var previousSource = 0;\n var previousName = 0;\n var length = aStr.length;\n var index = 0;\n var cachedSegments = {};\n var temp = {};\n var originalMappings = [];\n var generatedMappings = [];\n var mapping, str, segment, end, value;\n\n while (index < length) {\n if (aStr.charAt(index) === ';') {\n generatedLine++;\n index++;\n previousGeneratedColumn = 0;\n }\n else if (aStr.charAt(index) === ',') {\n index++;\n }\n else {\n mapping = new Mapping();\n mapping.generatedLine = generatedLine;\n\n // Because each offset is encoded relative to the previous one,\n // many segments often have the same encoding. We can exploit this\n // fact by caching the parsed variable length fields of each segment,\n // allowing us to avoid a second parse if we encounter the same\n // segment again.\n for (end = index; end < length; end++) {\n if (this._charIsMappingSeparator(aStr, end)) {\n break;\n }\n }\n str = aStr.slice(index, end);\n\n segment = cachedSegments[str];\n if (segment) {\n index += str.length;\n } else {\n segment = [];\n while (index < end) {\n base64VLQ.decode(aStr, index, temp);\n value = temp.value;\n index = temp.rest;\n segment.push(value);\n }\n\n if (segment.length === 2) {\n throw new Error('Found a source, but no line and column');\n }\n\n if (segment.length === 3) {\n throw new Error('Found a source and line, but no column');\n }\n\n cachedSegments[str] = segment;\n }\n\n // Generated column.\n mapping.generatedColumn = previousGeneratedColumn + segment[0];\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (segment.length > 1) {\n // Original source.\n mapping.source = previousSource + segment[1];\n previousSource += segment[1];\n\n // Original line.\n mapping.originalLine = previousOriginalLine + segment[2];\n previousOriginalLine = mapping.originalLine;\n // Lines are stored 0-based\n mapping.originalLine += 1;\n\n // Original column.\n mapping.originalColumn = previousOriginalColumn + segment[3];\n previousOriginalColumn = mapping.originalColumn;\n\n if (segment.length > 4) {\n // Original name.\n mapping.name = previousName + segment[4];\n previousName += segment[4];\n }\n }\n\n generatedMappings.push(mapping);\n if (typeof mapping.originalLine === 'number') {\n originalMappings.push(mapping);\n }\n }\n }\n\n quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);\n this.__generatedMappings = generatedMappings;\n\n quickSort(originalMappings, util.compareByOriginalPositions);\n this.__originalMappings = originalMappings;\n };\n\n/**\n * Find the mapping that best matches the hypothetical \"needle\" mapping that\n * we are searching for in the given \"haystack\" of mappings.\n */\nBasicSourceMapConsumer.prototype._findMapping =\n function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,\n aColumnName, aComparator, aBias) {\n // To return the position we are searching for, we must first find the\n // mapping for the given position and then return the opposite position it\n // points to. Because the mappings are sorted, we can use binary search to\n // find the best mapping.\n\n if (aNeedle[aLineName] <= 0) {\n throw new TypeError('Line must be greater than or equal to 1, got '\n + aNeedle[aLineName]);\n }\n if (aNeedle[aColumnName] < 0) {\n throw new TypeError('Column must be greater than or equal to 0, got '\n + aNeedle[aColumnName]);\n }\n\n return binarySearch.search(aNeedle, aMappings, aComparator, aBias);\n };\n\n/**\n * Compute the last column for each generated mapping. The last column is\n * inclusive.\n */\nBasicSourceMapConsumer.prototype.computeColumnSpans =\n function SourceMapConsumer_computeColumnSpans() {\n for (var index = 0; index < this._generatedMappings.length; ++index) {\n var mapping = this._generatedMappings[index];\n\n // Mappings do not contain a field for the last generated columnt. We\n // can come up with an optimistic estimate, however, by assuming that\n // mappings are contiguous (i.e. given two consecutive mappings, the\n // first mapping ends where the second one starts).\n if (index + 1 < this._generatedMappings.length) {\n var nextMapping = this._generatedMappings[index + 1];\n\n if (mapping.generatedLine === nextMapping.generatedLine) {\n mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;\n continue;\n }\n }\n\n // The last mapping for each line spans the entire line.\n mapping.lastGeneratedColumn = Infinity;\n }\n };\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source.\n * - column: The column number in the generated source.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null.\n * - column: The column number in the original source, or null.\n * - name: The original identifier, or null.\n */\nBasicSourceMapConsumer.prototype.originalPositionFor =\n function SourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._generatedMappings,\n \"generatedLine\",\n \"generatedColumn\",\n util.compareByGeneratedPositionsDeflated,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._generatedMappings[index];\n\n if (mapping.generatedLine === needle.generatedLine) {\n var source = util.getArg(mapping, 'source', null);\n if (source !== null) {\n source = this._sources.at(source);\n if (this.sourceRoot != null) {\n source = util.join(this.sourceRoot, source);\n }\n }\n var name = util.getArg(mapping, 'name', null);\n if (name !== null) {\n name = this._names.at(name);\n }\n return {\n source: source,\n line: util.getArg(mapping, 'originalLine', null),\n column: util.getArg(mapping, 'originalColumn', null),\n name: name\n };\n }\n }\n\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nBasicSourceMapConsumer.prototype.hasContentsOfAllSources =\n function BasicSourceMapConsumer_hasContentsOfAllSources() {\n if (!this.sourcesContent) {\n return false;\n }\n return this.sourcesContent.length >= this._sources.size() &&\n !this.sourcesContent.some(function (sc) { return sc == null; });\n };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nBasicSourceMapConsumer.prototype.sourceContentFor =\n function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n if (!this.sourcesContent) {\n return null;\n }\n\n if (this.sourceRoot != null) {\n aSource = util.relative(this.sourceRoot, aSource);\n }\n\n if (this._sources.has(aSource)) {\n return this.sourcesContent[this._sources.indexOf(aSource)];\n }\n\n var url;\n if (this.sourceRoot != null\n && (url = util.urlParse(this.sourceRoot))) {\n // XXX: file:// URIs and absolute paths lead to unexpected behavior for\n // many users. We can help them out when they expect file:// URIs to\n // behave like it would if they were running a local HTTP server. See\n // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.\n var fileUriAbsPath = aSource.replace(/^file:\\/\\//, \"\");\n if (url.scheme == \"file\"\n && this._sources.has(fileUriAbsPath)) {\n return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]\n }\n\n if ((!url.path || url.path == \"/\")\n && this._sources.has(\"/\" + aSource)) {\n return this.sourcesContent[this._sources.indexOf(\"/\" + aSource)];\n }\n }\n\n // This function is used recursively from\n // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we\n // don't want to throw if we can't find the source - we just want to\n // return null, so we provide a flag to exit gracefully.\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n }\n };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source.\n * - column: The column number in the original source.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null.\n * - column: The column number in the generated source, or null.\n */\nBasicSourceMapConsumer.prototype.generatedPositionFor =\n function SourceMapConsumer_generatedPositionFor(aArgs) {\n var source = util.getArg(aArgs, 'source');\n if (this.sourceRoot != null) {\n source = util.relative(this.sourceRoot, source);\n }\n if (!this._sources.has(source)) {\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n }\n source = this._sources.indexOf(source);\n\n var needle = {\n source: source,\n originalLine: util.getArg(aArgs, 'line'),\n originalColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (mapping.source === needle.source) {\n return {\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n };\n }\n }\n\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n };\n\nexports.BasicSourceMapConsumer = BasicSourceMapConsumer;\n\n/**\n * An IndexedSourceMapConsumer instance represents a parsed source map which\n * we can query for information. It differs from BasicSourceMapConsumer in\n * that it takes \"indexed\" source maps (i.e. ones with a \"sections\" field) as\n * input.\n *\n * The only parameter is a raw source map (either as a JSON string, or already\n * parsed to an object). According to the spec for indexed source maps, they\n * have the following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - file: Optional. The generated file this source map is associated with.\n * - sections: A list of section definitions.\n *\n * Each value under the \"sections\" field has two fields:\n * - offset: The offset into the original specified at which this section\n * begins to apply, defined as an object with a \"line\" and \"column\"\n * field.\n * - map: A source map definition. This source map could also be indexed,\n * but doesn't have to be.\n *\n * Instead of the \"map\" field, it's also possible to have a \"url\" field\n * specifying a URL to retrieve a source map from, but that's currently\n * unsupported.\n *\n * Here's an example source map, taken from the source map spec[0], but\n * modified to omit a section which uses the \"url\" field.\n *\n * {\n * version : 3,\n * file: \"app.js\",\n * sections: [{\n * offset: {line:100, column:10},\n * map: {\n * version : 3,\n * file: \"section.js\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AAAA,E;;ABCDE;\"\n * }\n * }],\n * }\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt\n */\nfunction IndexedSourceMapConsumer(aSourceMap) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sections = util.getArg(sourceMap, 'sections');\n\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n this._sources = new ArraySet();\n this._names = new ArraySet();\n\n var lastOffset = {\n line: -1,\n column: 0\n };\n this._sections = sections.map(function (s) {\n if (s.url) {\n // The url field will require support for asynchronicity.\n // See https://github.com/mozilla/source-map/issues/16\n throw new Error('Support for url field in sections not implemented.');\n }\n var offset = util.getArg(s, 'offset');\n var offsetLine = util.getArg(offset, 'line');\n var offsetColumn = util.getArg(offset, 'column');\n\n if (offsetLine < lastOffset.line ||\n (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {\n throw new Error('Section offsets must be ordered and non-overlapping.');\n }\n lastOffset = offset;\n\n return {\n generatedOffset: {\n // The offset fields are 0-based, but we use 1-based indices when\n // encoding/decoding from VLQ.\n generatedLine: offsetLine + 1,\n generatedColumn: offsetColumn + 1\n },\n consumer: new SourceMapConsumer(util.getArg(s, 'map'))\n }\n });\n}\n\nIndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nIndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nIndexedSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {\n get: function () {\n var sources = [];\n for (var i = 0; i < this._sections.length; i++) {\n for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {\n sources.push(this._sections[i].consumer.sources[j]);\n }\n }\n return sources;\n }\n});\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source.\n * - column: The column number in the generated source.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null.\n * - column: The column number in the original source, or null.\n * - name: The original identifier, or null.\n */\nIndexedSourceMapConsumer.prototype.originalPositionFor =\n function IndexedSourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n // Find the section containing the generated position we're trying to map\n // to an original position.\n var sectionIndex = binarySearch.search(needle, this._sections,\n function(needle, section) {\n var cmp = needle.generatedLine - section.generatedOffset.generatedLine;\n if (cmp) {\n return cmp;\n }\n\n return (needle.generatedColumn -\n section.generatedOffset.generatedColumn);\n });\n var section = this._sections[sectionIndex];\n\n if (!section) {\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n }\n\n return section.consumer.originalPositionFor({\n line: needle.generatedLine -\n (section.generatedOffset.generatedLine - 1),\n column: needle.generatedColumn -\n (section.generatedOffset.generatedLine === needle.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n bias: aArgs.bias\n });\n };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nIndexedSourceMapConsumer.prototype.hasContentsOfAllSources =\n function IndexedSourceMapConsumer_hasContentsOfAllSources() {\n return this._sections.every(function (s) {\n return s.consumer.hasContentsOfAllSources();\n });\n };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nIndexedSourceMapConsumer.prototype.sourceContentFor =\n function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n var content = section.consumer.sourceContentFor(aSource, true);\n if (content) {\n return content;\n }\n }\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n }\n };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source.\n * - column: The column number in the original source.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null.\n * - column: The column number in the generated source, or null.\n */\nIndexedSourceMapConsumer.prototype.generatedPositionFor =\n function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n // Only consider this section if the requested source is in the list of\n // sources of the consumer.\n if (section.consumer.sources.indexOf(util.getArg(aArgs, 'source')) === -1) {\n continue;\n }\n var generatedPosition = section.consumer.generatedPositionFor(aArgs);\n if (generatedPosition) {\n var ret = {\n line: generatedPosition.line +\n (section.generatedOffset.generatedLine - 1),\n column: generatedPosition.column +\n (section.generatedOffset.generatedLine === generatedPosition.line\n ? section.generatedOffset.generatedColumn - 1\n : 0)\n };\n return ret;\n }\n }\n\n return {\n line: null,\n column: null\n };\n };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nIndexedSourceMapConsumer.prototype._parseMappings =\n function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n this.__generatedMappings = [];\n this.__originalMappings = [];\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n var sectionMappings = section.consumer._generatedMappings;\n for (var j = 0; j < sectionMappings.length; j++) {\n var mapping = sectionMappings[j];\n\n var source = section.consumer._sources.at(mapping.source);\n if (section.consumer.sourceRoot !== null) {\n source = util.join(section.consumer.sourceRoot, source);\n }\n this._sources.add(source);\n source = this._sources.indexOf(source);\n\n var name = section.consumer._names.at(mapping.name);\n this._names.add(name);\n name = this._names.indexOf(name);\n\n // The mappings coming from the consumer for the section have\n // generated positions relative to the start of the section, so we\n // need to offset them to be relative to the start of the concatenated\n // generated file.\n var adjustedMapping = {\n source: source,\n generatedLine: mapping.generatedLine +\n (section.generatedOffset.generatedLine - 1),\n generatedColumn: mapping.generatedColumn +\n (section.generatedOffset.generatedLine === mapping.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: name\n };\n\n this.__generatedMappings.push(adjustedMapping);\n if (typeof adjustedMapping.originalLine === 'number') {\n this.__originalMappings.push(adjustedMapping);\n }\n }\n }\n\n quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);\n quickSort(this.__originalMappings, util.compareByOriginalPositions);\n };\n\nexports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;\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('stacktrace-gps', ['source-map', 'stackframe'], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory(require('source-map/lib/source-map-consumer'), require('stackframe'));\n } else {\n root.StackTraceGPS = factory(root.SourceMap || root.sourceMap, root.StackFrame);\n }\n}(this, function(SourceMap, StackFrame) {\n 'use strict';\n\n /**\n * Make a X-Domain request to url and callback.\n *\n * @param {String} url\n * @returns {Promise} with response text if fulfilled\n */\n function _xdr(url) {\n return new Promise(function(resolve, reject) {\n var req = new XMLHttpRequest();\n req.open('get', url);\n req.onerror = reject;\n req.onreadystatechange = function onreadystatechange() {\n if (req.readyState === 4) {\n if ((req.status >= 200 && req.status < 300) ||\n (url.substr(0, 7) === 'file://' && req.responseText)) {\n resolve(req.responseText);\n } else {\n reject(new Error('HTTP status: ' + req.status + ' retrieving ' + url));\n }\n }\n };\n req.send();\n });\n\n }\n\n /**\n * Convert a Base64-encoded string into its original representation.\n * Used for inline sourcemaps.\n *\n * @param {String} b64str Base-64 encoded string\n * @returns {String} original representation of the base64-encoded string.\n */\n function _atob(b64str) {\n if (typeof window !== 'undefined' && window.atob) {\n return window.atob(b64str);\n } else {\n throw new Error('You must supply a polyfill for window.atob in this environment');\n }\n }\n\n function _parseJson(string) {\n if (typeof JSON !== 'undefined' && JSON.parse) {\n return JSON.parse(string);\n } else {\n throw new Error('You must supply a polyfill for JSON.parse in this environment');\n }\n }\n\n function _findFunctionName(source, lineNumber/*, columnNumber*/) {\n var syntaxes = [\n // {name} = function ({args}) TODO args capture\n /['\"]?([$_A-Za-z][$_A-Za-z0-9]*)['\"]?\\s*[:=]\\s*function\\b/,\n // function {name}({args}) m[1]=name m[2]=args\n /function\\s+([^('\"`]*?)\\s*\\(([^)]*)\\)/,\n // {name} = eval()\n /['\"]?([$_A-Za-z][$_A-Za-z0-9]*)['\"]?\\s*[:=]\\s*(?:eval|new Function)\\b/,\n // fn_name() {\n /\\b(?!(?:if|for|switch|while|with|catch)\\b)(?:(?:static)\\s+)?(\\S+)\\s*\\(.*?\\)\\s*\\{/,\n // {name} = () => {\n /['\"]?([$_A-Za-z][$_A-Za-z0-9]*)['\"]?\\s*[:=]\\s*\\(.*?\\)\\s*=>/\n ];\n var lines = source.split('\\n');\n\n // Walk backwards in the source lines until we find the line which matches one of the patterns above\n var code = '';\n var maxLines = Math.min(lineNumber, 20);\n for (var i = 0; i < maxLines; ++i) {\n // lineNo is 1-based, source[] is 0-based\n var line = lines[lineNumber - i - 1];\n var commentPos = line.indexOf('//');\n if (commentPos >= 0) {\n line = line.substr(0, commentPos);\n }\n\n if (line) {\n code = line + code;\n var len = syntaxes.length;\n for (var index = 0; index < len; index++) {\n var m = syntaxes[index].exec(code);\n if (m && m[1]) {\n return m[1];\n }\n }\n }\n }\n return undefined;\n }\n\n function _ensureSupportedEnvironment() {\n if (typeof Object.defineProperty !== 'function' || typeof Object.create !== 'function') {\n throw new Error('Unable to consume source maps in older browsers');\n }\n }\n\n function _ensureStackFrameIsLegit(stackframe) {\n if (typeof stackframe !== 'object') {\n throw new TypeError('Given StackFrame is not an object');\n } else if (typeof stackframe.fileName !== 'string') {\n throw new TypeError('Given file name is not a String');\n } else if (typeof stackframe.lineNumber !== 'number' ||\n stackframe.lineNumber % 1 !== 0 ||\n stackframe.lineNumber < 1) {\n throw new TypeError('Given line number must be a positive integer');\n } else if (typeof stackframe.columnNumber !== 'number' ||\n stackframe.columnNumber % 1 !== 0 ||\n stackframe.columnNumber < 0) {\n throw new TypeError('Given column number must be a non-negative integer');\n }\n return true;\n }\n\n function _findSourceMappingURL(source) {\n var sourceMappingUrlRegExp = /\\/\\/[#@] ?sourceMappingURL=([^\\s'\"]+)\\s*$/mg;\n var lastSourceMappingUrl;\n var matchSourceMappingUrl;\n // eslint-disable-next-line no-cond-assign\n while (matchSourceMappingUrl = sourceMappingUrlRegExp.exec(source)) {\n lastSourceMappingUrl = matchSourceMappingUrl[1];\n }\n if (lastSourceMappingUrl) {\n return lastSourceMappingUrl;\n } else {\n throw new Error('sourceMappingURL not found');\n }\n }\n\n function _extractLocationInfoFromSourceMapSource(stackframe, sourceMapConsumer, sourceCache) {\n return new Promise(function(resolve, reject) {\n var loc = sourceMapConsumer.originalPositionFor({\n line: stackframe.lineNumber,\n column: stackframe.columnNumber\n });\n\n if (loc.source) {\n // cache mapped sources\n var mappedSource = sourceMapConsumer.sourceContentFor(loc.source);\n if (mappedSource) {\n sourceCache[loc.source] = mappedSource;\n }\n\n resolve(\n // given stackframe and source location, update stackframe\n new StackFrame({\n functionName: loc.name || stackframe.functionName,\n args: stackframe.args,\n fileName: loc.source,\n lineNumber: loc.line,\n columnNumber: loc.column\n }));\n } else {\n reject(new Error('Could not get original source for given stackframe and source map'));\n }\n });\n }\n\n /**\n * @constructor\n * @param {Object} opts\n * opts.sourceCache = {url: \"Source String\"} => preload source cache\n * opts.sourceMapConsumerCache = {/path/file.js.map: SourceMapConsumer}\n * opts.offline = True to prevent network requests.\n * Best effort without sources or source maps.\n * opts.ajax = Promise returning function to make X-Domain requests\n */\n return function StackTraceGPS(opts) {\n if (!(this instanceof StackTraceGPS)) {\n return new StackTraceGPS(opts);\n }\n opts = opts || {};\n\n this.sourceCache = opts.sourceCache || {};\n this.sourceMapConsumerCache = opts.sourceMapConsumerCache || {};\n\n this.ajax = opts.ajax || _xdr;\n\n this._atob = opts.atob || _atob;\n\n this._get = function _get(location) {\n return new Promise(function(resolve, reject) {\n var isDataUrl = location.substr(0, 5) === 'data:';\n if (this.sourceCache[location]) {\n resolve(this.sourceCache[location]);\n } else if (opts.offline && !isDataUrl) {\n reject(new Error('Cannot make network requests in offline mode'));\n } else {\n if (isDataUrl) {\n // data URLs can have parameters.\n // see http://tools.ietf.org/html/rfc2397\n var supportedEncodingRegexp =\n /^data:application\\/json;([\\w=:\"-]+;)*base64,/;\n var match = location.match(supportedEncodingRegexp);\n if (match) {\n var sourceMapStart = match[0].length;\n var encodedSource = location.substr(sourceMapStart);\n var source = this._atob(encodedSource);\n this.sourceCache[location] = source;\n resolve(source);\n } else {\n reject(new Error('The encoding of the inline sourcemap is not supported'));\n }\n } else {\n var xhrPromise = this.ajax(location, {method: 'get'});\n // Cache the Promise to prevent duplicate in-flight requests\n this.sourceCache[location] = xhrPromise;\n xhrPromise.then(resolve, reject);\n }\n }\n }.bind(this));\n };\n\n /**\n * Creating SourceMapConsumers is expensive, so this wraps the creation of a\n * SourceMapConsumer in a per-instance cache.\n *\n * @param {String} sourceMappingURL = URL to fetch source map from\n * @param {String} defaultSourceRoot = Default source root for source map if undefined\n * @returns {Promise} that resolves a SourceMapConsumer\n */\n this._getSourceMapConsumer = function _getSourceMapConsumer(sourceMappingURL, defaultSourceRoot) {\n return new Promise(function(resolve) {\n if (this.sourceMapConsumerCache[sourceMappingURL]) {\n resolve(this.sourceMapConsumerCache[sourceMappingURL]);\n } else {\n var sourceMapConsumerPromise = new Promise(function(resolve, reject) {\n return this._get(sourceMappingURL).then(function(sourceMapSource) {\n if (typeof sourceMapSource === 'string') {\n sourceMapSource = _parseJson(sourceMapSource.replace(/^\\)\\]\\}'/, ''));\n }\n if (typeof sourceMapSource.sourceRoot === 'undefined') {\n sourceMapSource.sourceRoot = defaultSourceRoot;\n }\n\n resolve(new SourceMap.SourceMapConsumer(sourceMapSource));\n }, reject);\n }.bind(this));\n this.sourceMapConsumerCache[sourceMappingURL] = sourceMapConsumerPromise;\n resolve(sourceMapConsumerPromise);\n }\n }.bind(this));\n };\n\n /**\n * Given a StackFrame, enhance function name and use source maps for a\n * better StackFrame.\n *\n * @param {StackFrame} stackframe object\n * @returns {Promise} that resolves with with source-mapped StackFrame\n */\n this.pinpoint = function StackTraceGPS$$pinpoint(stackframe) {\n return new Promise(function(resolve, reject) {\n this.getMappedLocation(stackframe).then(function(mappedStackFrame) {\n function resolveMappedStackFrame() {\n resolve(mappedStackFrame);\n }\n\n this.findFunctionName(mappedStackFrame)\n .then(resolve, resolveMappedStackFrame)\n // eslint-disable-next-line no-unexpected-multiline\n ['catch'](resolveMappedStackFrame);\n }.bind(this), reject);\n }.bind(this));\n };\n\n /**\n * Given a StackFrame, guess function name from location information.\n *\n * @param {StackFrame} stackframe\n * @returns {Promise} that resolves with enhanced StackFrame.\n */\n this.findFunctionName = function StackTraceGPS$$findFunctionName(stackframe) {\n return new Promise(function(resolve, reject) {\n _ensureStackFrameIsLegit(stackframe);\n this._get(stackframe.fileName).then(function getSourceCallback(source) {\n var lineNumber = stackframe.lineNumber;\n var columnNumber = stackframe.columnNumber;\n var guessedFunctionName = _findFunctionName(source, lineNumber, columnNumber);\n // Only replace functionName if we found something\n if (guessedFunctionName) {\n resolve(new StackFrame({\n functionName: guessedFunctionName,\n args: stackframe.args,\n fileName: stackframe.fileName,\n lineNumber: lineNumber,\n columnNumber: columnNumber\n }));\n } else {\n resolve(stackframe);\n }\n }, reject)['catch'](reject);\n }.bind(this));\n };\n\n /**\n * Given a StackFrame, seek source-mapped location and return new enhanced StackFrame.\n *\n * @param {StackFrame} stackframe\n * @returns {Promise} that resolves with enhanced StackFrame.\n */\n this.getMappedLocation = function StackTraceGPS$$getMappedLocation(stackframe) {\n return new Promise(function(resolve, reject) {\n _ensureSupportedEnvironment();\n _ensureStackFrameIsLegit(stackframe);\n\n var sourceCache = this.sourceCache;\n var fileName = stackframe.fileName;\n this._get(fileName).then(function(source) {\n var sourceMappingURL = _findSourceMappingURL(source);\n var isDataUrl = sourceMappingURL.substr(0, 5) === 'data:';\n var defaultSourceRoot = fileName.substring(0, fileName.lastIndexOf('/') + 1);\n\n if (sourceMappingURL[0] !== '/' && !isDataUrl && !(/^https?:\\/\\/|^\\/\\//i).test(sourceMappingURL)) {\n sourceMappingURL = defaultSourceRoot + sourceMappingURL;\n }\n\n return this._getSourceMapConsumer(sourceMappingURL, defaultSourceRoot)\n .then(function(sourceMapConsumer) {\n return _extractLocationInfoFromSourceMapSource(stackframe, sourceMapConsumer, sourceCache)\n .then(resolve)['catch'](function() {\n resolve(stackframe);\n });\n });\n }.bind(this), reject)['catch'](reject);\n }.bind(this));\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('stacktrace', ['error-stack-parser', 'stack-generator', 'stacktrace-gps'], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory(require('error-stack-parser'), require('stack-generator'), require('stacktrace-gps'));\n } else {\n root.StackTrace = factory(root.ErrorStackParser, root.StackGenerator, root.StackTraceGPS);\n }\n}(this, function StackTrace(ErrorStackParser, StackGenerator, StackTraceGPS) {\n var _options = {\n filter: function(stackframe) {\n // Filter out stackframes for this library by default\n return (stackframe.functionName || '').indexOf('StackTrace$$') === -1 &&\n (stackframe.functionName || '').indexOf('ErrorStackParser$$') === -1 &&\n (stackframe.functionName || '').indexOf('StackTraceGPS$$') === -1 &&\n (stackframe.functionName || '').indexOf('StackGenerator$$') === -1;\n },\n sourceCache: {}\n };\n\n var _generateError = function StackTrace$$GenerateError() {\n try {\n // Error must be thrown to get stack in IE\n throw new Error();\n } catch (err) {\n return err;\n }\n };\n\n /**\n * Merge 2 given Objects. If a conflict occurs the second object wins.\n * Does not do deep merges.\n *\n * @param {Object} first base object\n * @param {Object} second overrides\n * @returns {Object} merged first and second\n * @private\n */\n function _merge(first, second) {\n var target = {};\n\n [first, second].forEach(function(obj) {\n for (var prop in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, prop)) {\n target[prop] = obj[prop];\n }\n }\n return target;\n });\n\n return target;\n }\n\n function _isShapedLikeParsableError(err) {\n return err.stack || err['opera#sourceloc'];\n }\n\n function _filtered(stackframes, filter) {\n if (typeof filter === 'function') {\n return stackframes.filter(filter);\n }\n return stackframes;\n }\n\n return {\n /**\n * Get a backtrace from invocation point.\n *\n * @param {Object} opts\n * @returns {Array} of StackFrame\n */\n get: function StackTrace$$get(opts) {\n var err = _generateError();\n return _isShapedLikeParsableError(err) ? this.fromError(err, opts) : this.generateArtificially(opts);\n },\n\n /**\n * Get a backtrace from invocation point.\n * IMPORTANT: Does not handle source maps or guess function names!\n *\n * @param {Object} opts\n * @returns {Array} of StackFrame\n */\n getSync: function StackTrace$$getSync(opts) {\n opts = _merge(_options, opts);\n var err = _generateError();\n var stack = _isShapedLikeParsableError(err) ? ErrorStackParser.parse(err) : StackGenerator.backtrace(opts);\n return _filtered(stack, opts.filter);\n },\n\n /**\n * Given an error object, parse it.\n *\n * @param {Error} error object\n * @param {Object} opts\n * @returns {Promise} for Array[StackFrame}\n */\n fromError: function StackTrace$$fromError(error, opts) {\n opts = _merge(_options, opts);\n var gps = new StackTraceGPS(opts);\n return new Promise(function(resolve) {\n var stackframes = _filtered(ErrorStackParser.parse(error), opts.filter);\n resolve(Promise.all(stackframes.map(function(sf) {\n return new Promise(function(resolve) {\n function resolveOriginal() {\n resolve(sf);\n }\n\n gps.pinpoint(sf).then(resolve, resolveOriginal)['catch'](resolveOriginal);\n });\n })));\n }.bind(this));\n },\n\n /**\n * Use StackGenerator to generate a backtrace.\n *\n * @param {Object} opts\n * @returns {Promise} of Array[StackFrame]\n */\n generateArtificially: function StackTrace$$generateArtificially(opts) {\n opts = _merge(_options, opts);\n var stackFrames = StackGenerator.backtrace(opts);\n if (typeof opts.filter === 'function') {\n stackFrames = stackFrames.filter(opts.filter);\n }\n return Promise.resolve(stackFrames);\n },\n\n /**\n * Given a function, wrap it such that invocations trigger a callback that\n * is called with a stack trace.\n *\n * @param {Function} fn to be instrumented\n * @param {Function} callback function to call with a stack trace on invocation\n * @param {Function} errback optional function to call with error if unable to get stack trace.\n * @param {Object} thisArg optional context object (e.g. window)\n */\n instrument: function StackTrace$$instrument(fn, callback, errback, thisArg) {\n if (typeof fn !== 'function') {\n throw new Error('Cannot instrument non-function object');\n } else if (typeof fn.__stacktraceOriginalFn === 'function') {\n // Already instrumented, return given Function\n return fn;\n }\n\n var instrumented = function StackTrace$$instrumented() {\n try {\n this.get().then(callback, errback)['catch'](errback);\n return fn.apply(thisArg || this, arguments);\n } catch (e) {\n if (_isShapedLikeParsableError(e)) {\n this.fromError(e).then(callback, errback)['catch'](errback);\n }\n throw e;\n }\n }.bind(this);\n instrumented.__stacktraceOriginalFn = fn;\n\n return instrumented;\n },\n\n /**\n * Given a function that has been instrumented,\n * revert the function to it's original (non-instrumented) state.\n *\n * @param {Function} fn to de-instrument\n */\n deinstrument: function StackTrace$$deinstrument(fn) {\n if (typeof fn !== 'function') {\n throw new Error('Cannot de-instrument non-function object');\n } else if (typeof fn.__stacktraceOriginalFn === 'function') {\n return fn.__stacktraceOriginalFn;\n } else {\n // Function not instrumented, return original\n return fn;\n }\n },\n\n /**\n * Given an error message and Array of StackFrames, serialize and POST to given URL.\n *\n * @param {Array} stackframes\n * @param {String} url\n * @param {String} errorMsg\n * @param {Object} requestOptions\n */\n report: function StackTrace$$report(stackframes, url, errorMsg, requestOptions) {\n return new Promise(function(resolve, reject) {\n var req = new XMLHttpRequest();\n req.onerror = reject;\n req.onreadystatechange = function onreadystatechange() {\n if (req.readyState === 4) {\n if (req.status >= 200 && req.status < 400) {\n resolve(req.responseText);\n } else {\n reject(new Error('POST to ' + url + ' failed with status: ' + req.status));\n }\n }\n };\n req.open('post', url);\n\n // Set request headers\n req.setRequestHeader('Content-Type', 'application/json');\n if (requestOptions && typeof requestOptions.headers === 'object') {\n var headers = requestOptions.headers;\n for (var header in headers) {\n if (Object.prototype.hasOwnProperty.call(headers, header)) {\n req.setRequestHeader(header, headers[header]);\n }\n }\n }\n\n var reportPayload = {stack: stackframes};\n if (errorMsg !== undefined && errorMsg !== null) {\n reportPayload.message = errorMsg;\n }\n\n req.send(JSON.stringify(reportPayload));\n });\n }\n };\n}));\n", "import StackTrace from \"stacktrace-js\";\n\n// report error to server\nwindow.addEventListener(\"error\", (e) => {\n StackTrace\n\t\t.fromError(e.error)\n\t\t.then((stack) => {\n\t\t\tfetch(\"/error\", {\n\t\t\t\tmethod: \"POST\",\n\t\t\t\theaders: {\n\t\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t\t},\n\t\t\t\tbody: JSON.stringify({\n\t\t\t\t\tmsg: e.error.message,\n\t\t\t\t\tstack: stack.slice(0, 4).map((step) => {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...step,\n\t\t\t\t\t\t\tfile: step.fileName.replace(location.origin + \"/\", \"\"),\n\t\t\t\t\t\t\tline: step.lineNumber,\n\t\t\t\t\t\t\tcol: step.columnNumber,\n\t\t\t\t\t\t};\n\t\t\t\t\t}),\n\t\t\t\t}),\n\t\t\t});\n\t\t})\n\t\t.catch(() => console.error(\"failed to parse err\"));\n});\n\ninterface User {\n\tid: string,\n\tname: string,\n}\n\ninterface Replit {\n\tgetUser(): Promise,\n\tauth(): Promise,\n\tgetUserOrAuth(): Promise,\n\tgetData(key: string, def?: D): Promise,\n\tsetData(key: string, val: D): Promise,\n\tdelData(key: string): Promise,\n\tlistData(): Promise,\n\tclearData(): Promise,\n}\n\ndeclare global {\n\tconst replit: Replit;\n}\n\n// replit auth & db integration\nconst replit: Replit = {\n\n\tgetUser(): Promise {\n\t\treturn fetch(\"/user\")\n\t\t\t.then((res) => res.json())\n\t\t\t.then((user) => {\n\t\t\t\tif (user) {\n\t\t\t\t\treturn Promise.resolve(user);\n\t\t\t\t} else {\n\t\t\t\t\treturn Promise.resolve(null);\n\t\t\t\t}\n\t\t\t});\n\t},\n\n\tauth(): Promise {\n\n\t\treturn new Promise((resolve, reject) => {\n\n\t\t\tconst authComplete = (e) => {\n\t\t\t\tif (e.data !== \"auth_complete\") {\n\t\t\t\t\tresolve(null);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\twindow.removeEventListener(\"message\", authComplete);\n\t\t\t\tauthWindow.close();\n\t\t\t\tthis.getUser().then(resolve);\n\t\t\t};\n\n\t\t\twindow.addEventListener(\"message\", authComplete);\n\n\t\t\tconst w = 320;\n\t\t\tconst h = 480;\n\t\t\tconst left = (screen.width / 2) - (w / 2);\n\t\t\tconst top = (screen.height / 2) - (h / 2);\n\n\t\t\tconst authWindow = window.open(\n\t\t\t\t`https://repl.it/auth_with_repl_site?domain=${location.host}`,\n\t\t\t\t\"_blank\",\n\t\t\t\t`modal=yes, toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, copyhistory=no, width=${w}, height=${h}, top=${top}, left=${left}`\n\t\t\t);\n\n\t\t});\n\n\t},\n\n\tgetUserOrAuth(): Promise {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.getUser().then((user) => {\n\t\t\t\tif (user) {\n\t\t\t\t\tresolve(user);\n\t\t\t\t} else {\n\t\t\t\t\tthis.auth().then((user) => {\n\t\t\t\t\t\tresolve(user);\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t})\n\t\t});\n\t},\n\n\tgetData(key: string, def?: D): Promise {\n\t\treturn fetch(`/db/${key}`)\n\t\t\t.then((res) => res.json())\n\t\t\t.then((val) => {\n\t\t\t\t// set default value if empty\n\t\t\t\tif (val == null && def !== undefined) {\n\t\t\t\t\treturn this.setData(key, def);\n\t\t\t\t}\n\t\t\t\treturn Promise.resolve(val);\n\t\t\t});\n\t},\n\n\tsetData(key: string, val: D): Promise {\n\t\treturn fetch(`/db/${key}`, {\n\t\t\tmethod: \"POST\",\n\t\t\theaders: {\n\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t},\n\t\t\tbody: JSON.stringify(val),\n\t\t}).then(() => Promise.resolve(val));\n\t},\n\n\tdelData(key: string): Promise {\n\t\treturn fetch(`/db/${key}`, {\n\t\t\tmethod: \"DELETE\",\n\t\t}).then(() => {});\n\t},\n\n\tlistData(): Promise {\n\t\treturn fetch(`/db`)\n\t\t\t.then((res) => res.json());\n\t},\n\n\tclearData(): Promise {\n\t\treturn fetch(`/db`, {\n\t\t\tmethod: \"DELETE\",\n\t\t}).then((res) => {});\n\t},\n\n};\n\nwindow.replit = replit;\n"], "mappings": "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", "names": [] }