{"version":3,"sources":["jsdelivr-header.js","/npm/ouch@2.0.1/Ouch.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACEA,IAAI,UAAY,QAAQ,yBACpB,EAAI,QAAQ,UACZ,kBAAoB,QAAQ,+BAC5B,oBAAsB,QAAQ,iCAC9B,QAAU,QAAQ,qBAClB,gBAAkB,QAAQ,6BAM9B,SAAS,KAAK,GAMV,KAAK,eAAiB,GAAgB,EAC1C,CAOA,KAAK,SAAW,CACZ,YAAa,QACb,gBAAiB,gBACjB,kBAAmB,kBACnB,oBAAqB,qBAQzB,KAAK,UAAU,YAAc,WACzB,OAAO,KAAK,cAChB,EASA,KAAK,UAAU,YAAc,SAAU,GACnC,GAAI,EAAE,WAAW,GACb,EAAU,IAAI,gBAAgB,QAC1B,KAAK,aAAmB,SAC5B,MAAM,IAAI,UAAU,8EAKxB,OAFA,KAAK,eAAe,KAAK,GAElB,IACX,EAOA,KAAK,UAAU,WAAa,WACxB,OAAO,KAAK,eAAe,KAC/B,EAOA,KAAK,UAAU,cAAgB,WAE3B,OADA,KAAK,eAAiB,GACf,IACX,EAOA,KAAK,UAAU,eAAiB,SAAU,GACtC,OAAO,IAAI,UAAU,EACzB,EAYA,KAAK,UAAU,gBAAkB,SAAU,EAAW,EAAS,EAAU,GAarE,IAAW,EAAW,EAAc,EAC5B,EAbH,IACD,EAAU,MAGT,IACD,EAAW,MAGV,IACD,EAAK,MAGE,EAsBR,KAAK,eAAe,GAtBD,EAsBa,KAAK,eAAe,MAAM,GAtBzB,EAsB6B,KArBzD,EAAS,GAEb,SAAS,EAAK,GAGV,GAFA,EAAO,KAAK,GAEP,UAAU,OAAS,GAAK,UAAU,KAAO,QAAQ,OAAU,EAAa,OACrE,GACA,EAAG,EAAO,MAAM,QAEjB,CACH,IAAI,EAAU,EAAa,QAE3B,EAAQ,OAAO,GACf,EAAQ,aAAa,GACrB,EAAQ,WAAW,GACnB,EAAQ,YAAY,GACpB,EAAQ,OAAO,EACnB,CACJ,CAEA,EAER,EAEA,OAAO,QAAU","file":"/npm/ouch@2.0.1/Ouch.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/ouch@2.0.1/Ouch.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","/**\n * Ouch.js\n *\n * @author: Harish Anchu <harishanchu@gmail.com>\n * @copyright 2015, Harish Anchu. All rights reserved.\n * @license Licensed under MIT (https://github.com/quorrajs/Ouch/blob/master/LICENSE)\n */\n\nvar Inspector = require('./exception/Inspector');\nvar _ = require('lodash');\nvar PrettyPageHandler = require('./handler/PrettyPageHandler');\nvar JsonResponseHandler = require('./handler/JsonResponseHandler');\nvar Handler = require('./handler/Handler');\nvar CallbackHandler = require('./handler/CallbackHandler');\n\n/**\n * @param {Array} handlerStack\n * @constructor\n */\nfunction Ouch(handlerStack) {\n    /**\n     * Stores error handlers\n     * @var {Array} handlerStack\n     * @protected\n     */\n    this.__handlerStack = handlerStack || [];\n}\n\n/**\n * Error handler classes\n *\n * @type {{PrettyPageHandler: (PrettyPageHandler)}}\n */\nOuch.handlers = {\n    BaseHandler: Handler,\n    CallbackHandler: CallbackHandler,\n    PrettyPageHandler: PrettyPageHandler,\n    JsonResponseHandler: JsonResponseHandler\n};\n\n/**\n * Returns an array with all handlers, in the order they were added to the stack.\n *\n * @returns {Array}\n */\nOuch.prototype.getHandlers = function () {\n    return this.__handlerStack;\n};\n\n/**\n * Pushes a handler to the end of the stack.\n *\n * @throws TypeError  If argument is not callable or instance of HandlerInterface\n * @param handler\n * @returns {Ouch}\n */\nOuch.prototype.pushHandler = function (handler) {\n    if (_.isFunction(handler)){\n        handler = new CallbackHandler(handler)\n    }  else if(!(handler instanceof Handler)) {\n        throw new TypeError(\"Argument must be a callable, or should be an instance of 'CallbackHandler'\")\n    }\n\n    this.__handlerStack.push(handler);\n\n    return this;\n};\n\n/**\n * Removes the last handler in the stack and returns it.\n * Returns undefined if there\"s nothing else to pop.\n * @returns {function|Object|undefined}\n */\nOuch.prototype.popHandler = function () {\n    return this.__handlerStack.pop();\n};\n\n/**\n * Clears all handlers in the handlerStack.\n *\n * @returns {Ouch}\n */\nOuch.prototype.clearHandlers = function () {\n    this.__handlerStack = [];\n    return this;\n};\n\n/**\n * @param  {Error|String|Object} exception\n * @returns Inspector\n * @protected\n */\nOuch.prototype.__getInspector = function (exception) {\n    return new Inspector(exception);\n};\n\n/**\n * Handles an exception, ultimately generating a Ouch error\n * page. Responses from each handler will be pushed into an array\n * and will be sent along to the callback if present as first argument.\n *\n * @param  {Error} exception\n * @param  {function} CB\n * @param  {Object} request\n * @param  {Object} response\n */\nOuch.prototype.handleException = function (exception, request, response, CB) {\n    if (!request) {\n        request = null;\n    }\n\n    if (!response) {\n        response = null;\n    }\n\n    if (!CB) {\n        CB = null;\n    }\n\n    (function (inspector, handlerStack, self) {\n        var output = [];\n\n        function next(handleResponse) {\n            output.push(handleResponse);\n\n            if ((arguments.length > 1 && arguments[1] === Handler.QUIT) || !handlerStack.length) {\n                if (CB) {\n                    CB(output.slice(1));\n                }\n            } else {\n                var handler = handlerStack.shift();\n\n                handler.setRun(self);\n                handler.setInspector(inspector);\n                handler.setRequest(request);\n                handler.setResponse(response);\n                handler.handle(next);\n            }\n        }\n\n        next();\n    })(this.__getInspector(exception), this.__handlerStack.slice(0), this)\n};\n\nmodule.exports = Ouch;"]}