{"version":3,"sources":["stackframe.js","stack-generator.js"],"names":["root","factory","define","amd","exports","module","StackFrame","this","_isNumber","n","isNaN","parseFloat","isFinite","_capitalize","str","toUpperCase","substring","_getter","p","obj","Object","props","booleanProps","concat","numericProps","stringProps","arrayProps","i","length","hasOwnProperty","undefined","prototype","getArgs","args","setArgs","v","toString","call","TypeError","getEvalOrigin","evalOrigin","setEvalOrigin","functionName","getFunctionName","join","fileName","getFileName","lineNumber","getLineNumber","columnNumber","getColumnNumber","Boolean","j","Number","k","String","require","StackGenerator","backtrace","opts","stack","maxStackSize","curr","arguments","callee","Array","test","push","RegExp","$1","caller","e"],"mappings":"CAAA,SAAAA,EAAAC,GACA,YAIA,mBAAAC,SAAAA,OAAAC,IACAD,OAAA,gBAAAD,GACA,gBAAAG,SACAC,OAAAD,QAAAH,IAEAD,EAAAM,WAAAL,KAEAM,KAAA,WACA,YACA,SAAAC,GAAAC,GACA,OAAAC,MAAAC,WAAAF,KAAAG,SAAAH,GAGA,QAAAI,GAAAC,GACA,MAAAA,GAAA,GAAAC,cAAAD,EAAAE,UAAA,GAGA,QAAAC,GAAAC,GACA,MAAA,YACA,MAAAX,MAAAW,IASA,QAAAZ,GAAAa,GACA,GAAAA,YAAAC,QAEA,IAAA,GADAC,GAAAC,EAAAC,OAAAC,EAAAD,OAAAE,EAAAF,OAAAG,KACAC,EAAA,EAAAA,EAAAN,EAAAO,OAAAD,IACAR,EAAAU,eAAAR,EAAAM,KAAAG,SAAAX,EAAAE,EAAAM,KACApB,KAAA,MAAAM,EAAAQ,EAAAM,KAAAR,EAAAE,EAAAM,KAVA,GAAAL,IAAA,gBAAA,SAAA,WAAA,cACAE,GAAA,eAAA,cACAC,GAAA,WAAA,eAAA,UACAC,GAAA,OAaApB,GAAAyB,WACAC,QAAA,WACA,MAAAzB,MAAA0B,MAEAC,QAAA,SAAAC,GACA,GAAA,mBAAAf,OAAAW,UAAAK,SAAAC,KAAAF,GACA,KAAA,IAAAG,WAAA,wBAEA/B,MAAA0B,KAAAE,GAGAI,cAAA,WACA,MAAAhC,MAAAiC,YAEAC,cAAA,SAAAN,GACA,GAAAA,YAAA7B,GACAC,KAAAiC,WAAAL,MACA,CAAA,KAAAA,YAAAf,SAGA,KAAA,IAAAkB,WAAA,8CAFA/B,MAAAiC,WAAA,GAAAlC,GAAA6B,KAMAC,SAAA,WACA,GAAAM,GAAAnC,KAAAoC,mBAAA,cACAV,EAAA,KAAA1B,KAAAyB,eAAAY,KAAA,KAAA,IACAC,EAAAtC,KAAAuC,cAAA,IAAAvC,KAAAuC,cAAA,GACAC,EAAAvC,EAAAD,KAAAyC,iBAAA,IAAAzC,KAAAyC,gBAAA,GACAC,EAAAzC,EAAAD,KAAA2C,mBAAA,IAAA3C,KAAA2C,kBAAA,EACA,OAAAR,GAAAT,EAAAY,EAAAE,EAAAE,GAIA,KAAA,GAAAtB,GAAA,EAAAA,EAAAL,EAAAM,OAAAD,IACArB,EAAAyB,UAAA,MAAAlB,EAAAS,EAAAK,KAAAV,EAAAK,EAAAK,IACArB,EAAAyB,UAAA,MAAAlB,EAAAS,EAAAK,KAAA,SAAAT,GACA,MAAA,UAAAiB,GACA5B,KAAAW,GAAAiC,QAAAhB,KAEAb,EAAAK,GAGA,KAAA,GAAAyB,GAAA,EAAAA,EAAA5B,EAAAI,OAAAwB,IACA9C,EAAAyB,UAAA,MAAAlB,EAAAW,EAAA4B,KAAAnC,EAAAO,EAAA4B,IACA9C,EAAAyB,UAAA,MAAAlB,EAAAW,EAAA4B,KAAA,SAAAlC,GACA,MAAA,UAAAiB,GACA,IAAA3B,EAAA2B,GACA,KAAA,IAAAG,WAAApB,EAAA,oBAEAX,MAAAW,GAAAmC,OAAAlB,KAEAX,EAAA4B,GAGA,KAAA,GAAAE,GAAA,EAAAA,EAAA7B,EAAAG,OAAA0B,IACAhD,EAAAyB,UAAA,MAAAlB,EAAAY,EAAA6B,KAAArC,EAAAQ,EAAA6B,IACAhD,EAAAyB,UAAA,MAAAlB,EAAAY,EAAA6B,KAAA,SAAApC,GACA,MAAA,UAAAiB,GACA5B,KAAAW,GAAAqC,OAAApB,KAEAV,EAAA6B,GAGA,OAAAhD,KC5GA,SAAAN,EAAAC,GACA,YAIA,mBAAAC,SAAAA,OAAAC,IACAD,OAAA,mBAAA,cAAAD,GACA,gBAAAG,SACAC,OAAAD,QAAAH,EAAAuD,QAAA,eAEAxD,EAAAyD,eAAAxD,EAAAD,EAAAM,aAEAC,KAAA,SAAAD,GACA,OACAoD,UAAA,SAAAC,GACA,GAAAC,MACAC,EAAA,EAEA,iBAAAF,IAAA,gBAAAA,GAAAE,eACAA,EAAAF,EAAAE,aAIA,KADA,GAAAC,GAAAC,UAAAC,OACAF,GAAAF,EAAAhC,OAAAiC,GAAA,CAGA,IAAA,GADA5B,GAAA,GAAAgC,OAAAH,EAAA,UAAAlC,QACAD,EAAA,EAAAA,EAAAM,EAAAL,SAAAD,EACAM,EAAAN,GAAAmC,EAAA,UAAAnC,EAEA,iCAAAuC,KAAAJ,EAAA1B,YACAwB,EAAAO,KAAA,GAAA7D,IAAAoC,aAAA0B,OAAAC,IAAAvC,OAAAG,KAAAA,KAEA2B,EAAAO,KAAA,GAAA7D,IAAA2B,KAAAA,IAGA,KACA6B,EAAAA,EAAAQ,OACA,MAAAC,GACA,OAGA,MAAAX","file":"stack-generator.min.js","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[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\n function StackFrame(obj) {\n if (obj instanceof Object) {\n var props = booleanProps.concat(numericProps.concat(stringProps.concat(arrayProps)));\n for (var i = 0; i < props.length; i++) {\n if (obj.hasOwnProperty(props[i]) && obj[props[i]] !== undefined) {\n this['set' + _capitalize(props[i])](obj[props[i]]);\n }\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 functionName = this.getFunctionName() || '{anonymous}';\n var args = '(' + (this.getArgs() || []).join(',') + ')';\n var fileName = this.getFileName() ? ('@' + this.getFileName()) : '';\n var lineNumber = _isNumber(this.getLineNumber()) ? (':' + this.getLineNumber()) : '';\n var columnNumber = _isNumber(this.getColumnNumber()) ? (':' + this.getColumnNumber()) : '';\n return functionName + args + fileName + lineNumber + columnNumber;\n }\n };\n\n 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('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) {\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"],"sourceRoot":"/source/"}