{"version":3,"sources":["jsdelivr-header.js","/npm/nokit-filter-proxy@0.1.0/index.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNA,IAAI,UAAY,QAAQ,cAExB,SAAS,YAAY,GACnB,IAAI,EAAO,KACP,EAAQ,EAAK,MAAQ,EAAO,QAAQ,iBAExC,EAAK,QAAU,EAAO,QAAQ,OAAS,CAAC,EACxC,EAAK,QAAQ,QAAU,EAAK,QAAQ,SAAW,CAAC,EAC5C,EAAM,OAAO,EAAK,QAAQ,QAAQ,QACpC,EAAK,QAAQ,QAAQ,MAAO,GAE1B,EAAM,OAAO,EAAK,QAAQ,QAAQ,gBACpC,EAAK,QAAQ,QAAQ,cAAe,GAEtC,EAAK,QAAQ,MAAQ,EAAK,QAAQ,OAAS,CAAC,EAE5C,EAAK,MAAQ,UAAU,kBAAkB,EAAK,QAAQ,SAEtD,EAAK,kBAAoB,EAAK,kBAAkB,KAAK,GACrD,EAAK,MAAM,GAAG,WAAY,EAAK,kBACjC,CAEA,YAAY,UAAU,kBAAoB,SAAU,EAAU,EAAK,EAAK,GACtE,IAAI,EAAO,KACX,GAAK,EAAK,QAAQ,QAAlB,CACA,IAAI,EAAU,OAAO,sBAAsB,EAAS,YAChD,EAAW,EAAS,WAAW,EAAQ,EAAQ,OAAS,IAC5D,EAAK,MAAM,KAAK,EAAK,QAAQ,SAAS,SAAU,EAAM,GACpD,EAAS,UAAU,EAAM,GACrB,EAAS,UAAS,EAAS,QAAQ,GAAQ,GAClC,SAAT,IACF,EAAS,KAAO,EAChB,EAAS,SAAW,EACpB,EAAS,WAAa,EAE1B,GAXiC,CAYnC,EAEA,YAAY,UAAU,UAAY,SAAU,GAC1C,IACI,EAAO,KAWX,OAZW,KAEN,MAAM,KAFA,KAEU,QAAQ,OAAO,SAAU,EAAU,GACtD,IAAI,EAAO,IAAI,OAAO,GACtB,GAAI,EAAK,KAAK,GAAM,CAClB,IAAI,EAAW,EAAK,KAAK,GACzB,EAAO,CACL,IAAK,EAAS,OAAS,EAAI,EAAS,GAAK,EACzC,OAAQ,EAEZ,CACF,IACO,CACT,EAEA,YAAY,UAAU,UAAY,SAAU,EAAS,GACnD,IACI,EAAM,EAAQ,IAChB,EAAM,EAAQ,IAEZ,EAJO,KAIK,UAAU,EAAI,KAC9B,IAAK,EAAM,OAAO,IAClB,EAAI,IAAM,EAAK,KAAO,IANX,KAQN,MAAM,IAAI,EAAK,EAAK,CACvB,OAAU,EAAK,QAEnB,EAEA,OAAO,QAAU","file":"/npm/nokit-filter-proxy@0.1.0/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/nokit-filter-proxy@0.1.0/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","var httpProxy = require(\"http-proxy\");\n\nfunction ProxyFilter(server) {\n  var self = this;\n  var utils = self.utils = server.require(\"$./core/utils\");\n  //读取配置\n  self.configs = server.configs.proxy || {};\n  self.configs.options = self.configs.options || {};\n  if (utils.isNull(self.configs.options.xfwd)) {\n    self.configs.options.xfwd = true;\n  }\n  if (utils.isNull(self.configs.options.changeOrigin)) {\n    self.configs.options.changeOrigin = true;\n  }\n  self.configs.rules = self.configs.rules || {};\n  //新建一个代理 Proxy Server 对象  \n  self.proxy = httpProxy.createProxyServer(self.configs.options);\n  //proxy req \n  self.onProxyReqHandler = self.onProxyReqHandler.bind(self);\n  self.proxy.on(\"proxyReq\", self.onProxyReqHandler);\n};\n\nProxyFilter.prototype.onProxyReqHandler = function (proxyReq, req, res, options) {\n  var self = this;\n  if (!self.configs.headers) return;\n  var symbols = Object.getOwnPropertySymbols(proxyReq.connection);\n  var innerReq = proxyReq.connection[symbols[symbols.length - 1]];\n  self.utils.each(self.configs.headers, function (name, value) {\n    proxyReq.setHeader(name, value);\n    if (innerReq.headers) innerReq.headers[name] = value;\n    if (name === 'host') {\n      innerReq.host = value;\n      innerReq.hostname = value;\n      innerReq.servername = value;\n    }\n  });\n};\n\nProxyFilter.prototype.matchRule = function (url) {\n  var self = this;\n  var rule = null;\n  self.utils.each(self.configs.rules, function (exprText, target) {\n    var expr = new RegExp(exprText);\n    if (expr.test(url)) {\n      var urlParts = expr.exec(url);\n      rule = {\n        url: urlParts.length > 1 ? urlParts[1] : url,\n        target: target\n      };\n    }\n  });\n  return rule;\n};\n\nProxyFilter.prototype.onRequest = function (context, next) {\n  var self = this;\n  var res = context.res,\n    req = context.req;\n  //匹配规则表达式\n  var rule = self.matchRule(req.url);\n  if (!rule) return next();\n  req.url = rule.url || \"/\";\n  //代理请求\n  self.proxy.web(req, res, {\n    \"target\": rule.target\n  });\n};\n\nmodule.exports = ProxyFilter;"]}