{"ast":null,"code":"var httpProxy = module.exports,\n  extend = require('util')._extend,\n  parse_url = require('url').parse,\n  EE3 = require('eventemitter3'),\n  http = require('http'),\n  https = require('https'),\n  web = require('./passes/web-incoming'),\n  ws = require('./passes/ws-incoming');\nhttpProxy.Server = ProxyServer;\n\n/**\n * Returns a function that creates the loader for\n * either `ws` or `web`'s  passes.\n *\n * Examples:\n *\n *    httpProxy.createRightProxy('ws')\n *    // => [Function]\n *\n * @param {String} Type Either 'ws' or 'web'\n * \n * @return {Function} Loader Function that when called returns an iterator for the right passes\n *\n * @api private\n */\n\nfunction createRightProxy(type) {\n  return function (options) {\n    return function (req, res /*, [head], [opts] */) {\n      var passes = type === 'ws' ? this.wsPasses : this.webPasses,\n        args = [].slice.call(arguments),\n        cntr = args.length - 1,\n        head,\n        cbl;\n\n      /* optional args parse begin */\n      if (typeof args[cntr] === 'function') {\n        cbl = args[cntr];\n        cntr--;\n      }\n      var requestOptions = options;\n      if (!(args[cntr] instanceof Buffer) && args[cntr] !== res) {\n        //Copy global options\n        requestOptions = extend({}, options);\n        //Overwrite with request options\n        extend(requestOptions, args[cntr]);\n        cntr--;\n      }\n      if (args[cntr] instanceof Buffer) {\n        head = args[cntr];\n      }\n\n      /* optional args parse end */\n\n      ['target', 'forward'].forEach(function (e) {\n        if (typeof requestOptions[e] === 'string') requestOptions[e] = parse_url(requestOptions[e]);\n      });\n      if (!requestOptions.target && !requestOptions.forward) {\n        return this.emit('error', new Error('Must provide a proper URL as target'));\n      }\n      for (var i = 0; i < passes.length; i++) {\n        /**\n         * Call of passes functions\n         * pass(req, res, options, head)\n         *\n         * In WebSockets case the `res` variable\n         * refer to the connection socket\n         * pass(req, socket, options, head)\n         */\n        if (passes[i](req, res, requestOptions, head, this, cbl)) {\n          // passes can return a truthy value to halt the loop\n          break;\n        }\n      }\n    };\n  };\n}\nhttpProxy.createRightProxy = createRightProxy;\nfunction ProxyServer(options) {\n  EE3.call(this);\n  options = options || {};\n  options.prependPath = options.prependPath === false ? false : true;\n  this.web = this.proxyRequest = createRightProxy('web')(options);\n  this.ws = this.proxyWebsocketRequest = createRightProxy('ws')(options);\n  this.options = options;\n  this.webPasses = Object.keys(web).map(function (pass) {\n    return web[pass];\n  });\n  this.wsPasses = Object.keys(ws).map(function (pass) {\n    return ws[pass];\n  });\n  this.on('error', this.onError, this);\n}\nrequire('util').inherits(ProxyServer, EE3);\nProxyServer.prototype.onError = function (err) {\n  //\n  // Remark: Replicate node core behavior using EE3\n  // so we force people to handle their own errors\n  //\n  if (this.listeners('error').length === 1) {\n    throw err;\n  }\n};\nProxyServer.prototype.listen = function (port, hostname) {\n  var self = this,\n    closure = function closure(req, res) {\n      self.web(req, res);\n    };\n  this._server = this.options.ssl ? https.createServer(this.options.ssl, closure) : http.createServer(closure);\n  if (this.options.ws) {\n    this._server.on('upgrade', function (req, socket, head) {\n      self.ws(req, socket, head);\n    });\n  }\n  this._server.listen(port, hostname);\n  return this;\n};\nProxyServer.prototype.close = function (callback) {\n  var self = this;\n  if (this._server) {\n    this._server.close(done);\n  }\n\n  // Wrap callback to nullify server after all open connections are closed.\n  function done() {\n    self._server = null;\n    if (callback) {\n      callback.apply(null, arguments);\n    }\n  }\n  ;\n};\nProxyServer.prototype.before = function (type, passName, callback) {\n  if (type !== 'ws' && type !== 'web') {\n    throw new Error('type must be `web` or `ws`');\n  }\n  var passes = type === 'ws' ? this.wsPasses : this.webPasses,\n    i = false;\n  passes.forEach(function (v, idx) {\n    if (v.name === passName) i = idx;\n  });\n  if (i === false) throw new Error('No such pass');\n  passes.splice(i, 0, callback);\n};\nProxyServer.prototype.after = function (type, passName, callback) {\n  if (type !== 'ws' && type !== 'web') {\n    throw new Error('type must be `web` or `ws`');\n  }\n  var passes = type === 'ws' ? this.wsPasses : this.webPasses,\n    i = false;\n  passes.forEach(function (v, idx) {\n    if (v.name === passName) i = idx;\n  });\n  if (i === false) throw new Error('No such pass');\n  passes.splice(i++, 0, callback);\n};","map":{"version":3,"names":["httpProxy","module","exports","extend","require","_extend","parse_url","parse","EE3","http","https","web","ws","Server","ProxyServer","createRightProxy","type","options","req","res","passes","wsPasses","webPasses","args","slice","call","arguments","cntr","length","head","cbl","requestOptions","Buffer","forEach","e","target","forward","emit","Error","i","prependPath","proxyRequest","proxyWebsocketRequest","Object","keys","map","pass","on","onError","inherits","prototype","err","listeners","listen","port","hostname","self","closure","_server","ssl","createServer","socket","close","callback","done","apply","before","passName","v","idx","name","splice","after"],"sources":["D:/DSP_Management/node_modules/http-proxy/lib/http-proxy/index.js"],"sourcesContent":["var httpProxy = module.exports,\n    extend    = require('util')._extend,\n    parse_url = require('url').parse,\n    EE3       = require('eventemitter3'),\n    http      = require('http'),\n    https     = require('https'),\n    web       = require('./passes/web-incoming'),\n    ws        = require('./passes/ws-incoming');\n\nhttpProxy.Server = ProxyServer;\n\n/**\n * Returns a function that creates the loader for\n * either `ws` or `web`'s  passes.\n *\n * Examples:\n *\n *    httpProxy.createRightProxy('ws')\n *    // => [Function]\n *\n * @param {String} Type Either 'ws' or 'web'\n * \n * @return {Function} Loader Function that when called returns an iterator for the right passes\n *\n * @api private\n */\n\nfunction createRightProxy(type) {\n\n  return function(options) {\n    return function(req, res /*, [head], [opts] */) {\n      var passes = (type === 'ws') ? this.wsPasses : this.webPasses,\n          args = [].slice.call(arguments),\n          cntr = args.length - 1,\n          head, cbl;\n\n      /* optional args parse begin */\n      if(typeof args[cntr] === 'function') {\n        cbl = args[cntr];\n\n        cntr--;\n      }\n\n      var requestOptions = options;\n      if(\n        !(args[cntr] instanceof Buffer) &&\n        args[cntr] !== res\n      ) {\n        //Copy global options\n        requestOptions = extend({}, options);\n        //Overwrite with request options\n        extend(requestOptions, args[cntr]);\n\n        cntr--;\n      }\n\n      if(args[cntr] instanceof Buffer) {\n        head = args[cntr];\n      }\n\n      /* optional args parse end */\n\n      ['target', 'forward'].forEach(function(e) {\n        if (typeof requestOptions[e] === 'string')\n          requestOptions[e] = parse_url(requestOptions[e]);\n      });\n\n      if (!requestOptions.target && !requestOptions.forward) {\n        return this.emit('error', new Error('Must provide a proper URL as target'));\n      }\n\n      for(var i=0; i < passes.length; i++) {\n        /**\n         * Call of passes functions\n         * pass(req, res, options, head)\n         *\n         * In WebSockets case the `res` variable\n         * refer to the connection socket\n         * pass(req, socket, options, head)\n         */\n        if(passes[i](req, res, requestOptions, head, this, cbl)) { // passes can return a truthy value to halt the loop\n          break;\n        }\n      }\n    };\n  };\n}\nhttpProxy.createRightProxy = createRightProxy;\n\nfunction ProxyServer(options) {\n  EE3.call(this);\n\n  options = options || {};\n  options.prependPath = options.prependPath === false ? false : true;\n\n  this.web = this.proxyRequest           = createRightProxy('web')(options);\n  this.ws  = this.proxyWebsocketRequest  = createRightProxy('ws')(options);\n  this.options = options;\n\n  this.webPasses = Object.keys(web).map(function(pass) {\n    return web[pass];\n  });\n\n  this.wsPasses = Object.keys(ws).map(function(pass) {\n    return ws[pass];\n  });\n\n  this.on('error', this.onError, this);\n\n}\n\nrequire('util').inherits(ProxyServer, EE3);\n\nProxyServer.prototype.onError = function (err) {\n  //\n  // Remark: Replicate node core behavior using EE3\n  // so we force people to handle their own errors\n  //\n  if(this.listeners('error').length === 1) {\n    throw err;\n  }\n};\n\nProxyServer.prototype.listen = function(port, hostname) {\n  var self    = this,\n      closure = function(req, res) { self.web(req, res); };\n\n  this._server  = this.options.ssl ?\n    https.createServer(this.options.ssl, closure) :\n    http.createServer(closure);\n\n  if(this.options.ws) {\n    this._server.on('upgrade', function(req, socket, head) { self.ws(req, socket, head); });\n  }\n\n  this._server.listen(port, hostname);\n\n  return this;\n};\n\nProxyServer.prototype.close = function(callback) {\n  var self = this;\n  if (this._server) {\n    this._server.close(done);\n  }\n\n  // Wrap callback to nullify server after all open connections are closed.\n  function done() {\n    self._server = null;\n    if (callback) {\n      callback.apply(null, arguments);\n    }\n  };\n};\n\nProxyServer.prototype.before = function(type, passName, callback) {\n  if (type !== 'ws' && type !== 'web') {\n    throw new Error('type must be `web` or `ws`');\n  }\n  var passes = (type === 'ws') ? this.wsPasses : this.webPasses,\n      i = false;\n\n  passes.forEach(function(v, idx) {\n    if(v.name === passName) i = idx;\n  })\n\n  if(i === false) throw new Error('No such pass');\n\n  passes.splice(i, 0, callback);\n};\nProxyServer.prototype.after = function(type, passName, callback) {\n  if (type !== 'ws' && type !== 'web') {\n    throw new Error('type must be `web` or `ws`');\n  }\n  var passes = (type === 'ws') ? this.wsPasses : this.webPasses,\n      i = false;\n\n  passes.forEach(function(v, idx) {\n    if(v.name === passName) i = idx;\n  })\n\n  if(i === false) throw new Error('No such pass');\n\n  passes.splice(i++, 0, callback);\n};\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"script","externalDependencies":[]}