{"version":3,"sources":["stackframe.js"],"names":["root","factory","define","amd","exports","module","StackFrame","this","_isNumber","n","isNaN","parseFloat","isFinite","functionName","args","fileName","lineNumber","columnNumber","source","undefined","setFunctionName","setArgs","setFileName","setLineNumber","setColumnNumber","setSource","prototype","getFunctionName","v","String","getArgs","Object","toString","call","TypeError","getFileName","getLineNumber","Number","getColumnNumber","getSource","join"],"mappings":"CAAC,SAAUA,EAAMC,GACb,YAIsB,mBAAXC,SAAyBA,OAAOC,IACvCD,OAAO,gBAAkBD,GACC,gBAAZG,SACdC,OAAOD,QAAUH,IAEjBD,EAAKM,WAAaL,KAExBM,KAAM,WACJ,YACA,SAASC,GAAUC,GACf,OAAQC,MAAMC,WAAWF,KAAOG,SAASH,GAG7C,QAASH,GAAWO,EAAcC,EAAMC,EAAUC,EAAYC,EAAcC,GACnDC,SAAjBN,GACAN,KAAKa,gBAAgBP,GAEZM,SAATL,GACAP,KAAKc,QAAQP,GAEAK,SAAbJ,GACAR,KAAKe,YAAYP,GAEFI,SAAfH,GACAT,KAAKgB,cAAcP,GAEFG,SAAjBF,GACAV,KAAKiB,gBAAgBP,GAEVE,SAAXD,GACAX,KAAKkB,UAAUP,GAsEvB,MAlEAZ,GAAWoB,WACPC,gBAAiB,WACb,MAAOpB,MAAKM,cAEhBO,gBAAiB,SAAUQ,GACvBrB,KAAKM,aAAegB,OAAOD,IAG/BE,QAAS,WACL,MAAOvB,MAAKO,MAEhBO,QAAS,SAAUO,GACf,GAA0C,mBAAtCG,OAAOL,UAAUM,SAASC,KAAKL,GAC/B,KAAM,IAAIM,WAAU,wBAExB3B,MAAKO,KAAOc,GAOhBO,YAAa,WACT,MAAO5B,MAAKQ,UAEhBO,YAAa,SAAUM,GACnBrB,KAAKQ,SAAWc,OAAOD,IAG3BQ,cAAe,WACX,MAAO7B,MAAKS,YAEhBO,cAAe,SAAUK,GACrB,IAAKpB,EAAUoB,GACX,KAAM,IAAIM,WAAU,+BAExB3B,MAAKS,WAAaqB,OAAOT,IAG7BU,gBAAiB,WACb,MAAO/B,MAAKU,cAEhBO,gBAAiB,SAAUI,GACvB,IAAKpB,EAAUoB,GACX,KAAM,IAAIM,WAAU,iCAExB3B,MAAKU,aAAeoB,OAAOT,IAG/BW,UAAW,WACP,MAAOhC,MAAKW,QAEhBO,UAAW,SAAUG,GACjBrB,KAAKW,OAASW,OAAOD,IAGzBI,SAAU,WACN,GAAInB,GAAeN,KAAKoB,mBAAqB,cACzCb,EAAO,KAAOP,KAAKuB,eAAiBU,KAAK,KAAO,IAChDzB,EAAWR,KAAK4B,cAAiB,IAAM5B,KAAK4B,cAAiB,GAC7DnB,EAAaR,EAAUD,KAAK6B,iBAAoB,IAAM7B,KAAK6B,gBAAmB,GAC9EnB,EAAeT,EAAUD,KAAK+B,mBAAsB,IAAM/B,KAAK+B,kBAAqB,EACxF,OAAOzB,GAAeC,EAAOC,EAAWC,EAAaC,IAItDX","file":"stackframe.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 StackFrame(functionName, args, fileName, lineNumber, columnNumber, source) {\n        if (functionName !== undefined) {\n            this.setFunctionName(functionName);\n        }\n        if (args !== undefined) {\n            this.setArgs(args);\n        }\n        if (fileName !== undefined) {\n            this.setFileName(fileName);\n        }\n        if (lineNumber !== undefined) {\n            this.setLineNumber(lineNumber);\n        }\n        if (columnNumber !== undefined) {\n            this.setColumnNumber(columnNumber);\n        }\n        if (source !== undefined) {\n            this.setSource(source);\n        }\n    }\n\n    StackFrame.prototype = {\n        getFunctionName: function () {\n            return this.functionName;\n        },\n        setFunctionName: function (v) {\n            this.functionName = String(v);\n        },\n\n        getArgs: function () {\n            return this.args;\n        },\n        setArgs: function (v) {\n            if (Object.prototype.toString.call(v) !== '[object Array]') {\n                throw new TypeError('Args must be an Array');\n            }\n            this.args = v;\n        },\n\n        // NOTE: Property name may be misleading as it includes the path,\n        // but it somewhat mirrors V8's JavaScriptStackTraceApi\n        // https://code.google.com/p/v8/wiki/JavaScriptStackTraceApi and Gecko's\n        // http://mxr.mozilla.org/mozilla-central/source/xpcom/base/nsIException.idl#14\n        getFileName: function () {\n            return this.fileName;\n        },\n        setFileName: function (v) {\n            this.fileName = String(v);\n        },\n\n        getLineNumber: function () {\n            return this.lineNumber;\n        },\n        setLineNumber: function (v) {\n            if (!_isNumber(v)) {\n                throw new TypeError('Line Number must be a Number');\n            }\n            this.lineNumber = Number(v);\n        },\n\n        getColumnNumber: function () {\n            return this.columnNumber;\n        },\n        setColumnNumber: function (v) {\n            if (!_isNumber(v)) {\n                throw new TypeError('Column Number must be a Number');\n            }\n            this.columnNumber = Number(v);\n        },\n\n        getSource: function () {\n            return this.source;\n        },\n        setSource: function (v) {\n            this.source = String(v);\n        },\n\n        toString: function() {\n            var functionName = this.getFunctionName() || '{anonymous}';\n            var args = '(' + (this.getArgs() || []).join(',') + ')';\n            var fileName = this.getFileName() ? ('@' + this.getFileName()) : '';\n            var lineNumber = _isNumber(this.getLineNumber()) ? (':' + this.getLineNumber()) : '';\n            var columnNumber = _isNumber(this.getColumnNumber()) ? (':' + this.getColumnNumber()) : '';\n            return functionName + args + fileName + lineNumber + columnNumber;\n        }\n    };\n\n    return StackFrame;\n}));\n"],"sourceRoot":"/source/"}