{"version":3,"sources":["jsdelivr-header.js","/npm/couchdb-auth-proxy@1.1.3/index.js"],"names":[],"mappings":"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","file":"/npm/couchdb-auth-proxy@1.1.3/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/couchdb-auth-proxy@1.1.3/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","'use strict';\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar crypto = require('crypto');\nvar url = require('url');\nvar httpProxy = _interopDefault(require('http-proxy'));\nvar transformerProxy = _interopDefault(require('transformer-proxy'));\n\nvar name = \"couchdb-auth-proxy\";\nvar version = \"1.1.3\";\n\nvar asyncGenerator = function () {\n  function AwaitValue(value) {\n    this.value = value;\n  }\n\n  function AsyncGenerator(gen) {\n    var front, back;\n\n    function send(key, arg) {\n      return new Promise(function (resolve, reject) {\n        var request = {\n          key: key,\n          arg: arg,\n          resolve: resolve,\n          reject: reject,\n          next: null\n        };\n\n        if (back) {\n          back = back.next = request;\n        } else {\n          front = back = request;\n          resume(key, arg);\n        }\n      });\n    }\n\n    function resume(key, arg) {\n      try {\n        var result = gen[key](arg);\n        var value = result.value;\n\n        if (value instanceof AwaitValue) {\n          Promise.resolve(value.value).then(function (arg) {\n            resume(\"next\", arg);\n          }, function (arg) {\n            resume(\"throw\", arg);\n          });\n        } else {\n          settle(result.done ? \"return\" : \"normal\", result.value);\n        }\n      } catch (err) {\n        settle(\"throw\", err);\n      }\n    }\n\n    function settle(type, value) {\n      switch (type) {\n        case \"return\":\n          front.resolve({\n            value: value,\n            done: true\n          });\n          break;\n\n        case \"throw\":\n          front.reject(value);\n          break;\n\n        default:\n          front.resolve({\n            value: value,\n            done: false\n          });\n          break;\n      }\n\n      front = front.next;\n\n      if (front) {\n        resume(front.key, front.arg);\n      } else {\n        back = null;\n      }\n    }\n\n    this._invoke = send;\n\n    if (typeof gen.return !== \"function\") {\n      this.return = undefined;\n    }\n  }\n\n  if (typeof Symbol === \"function\" && Symbol.asyncIterator) {\n    AsyncGenerator.prototype[Symbol.asyncIterator] = function () {\n      return this;\n    };\n  }\n\n  AsyncGenerator.prototype.next = function (arg) {\n    return this._invoke(\"next\", arg);\n  };\n\n  AsyncGenerator.prototype.throw = function (arg) {\n    return this._invoke(\"throw\", arg);\n  };\n\n  AsyncGenerator.prototype.return = function (arg) {\n    return this._invoke(\"return\", arg);\n  };\n\n  return {\n    wrap: function (fn) {\n      return function () {\n        return new AsyncGenerator(fn.apply(this, arguments));\n      };\n    },\n    await: function (value) {\n      return new AwaitValue(value);\n    }\n  };\n}();\n\nvar asyncToGenerator = function (fn) {\n  return function () {\n    var gen = fn.apply(this, arguments);\n    return new Promise(function (resolve, reject) {\n      function step(key, arg) {\n        try {\n          var info = gen[key](arg);\n          var value = info.value;\n        } catch (error) {\n          reject(error);\n          return;\n        }\n\n        if (info.done) {\n          resolve(value);\n        } else {\n          return Promise.resolve(value).then(function (value) {\n            step(\"next\", value);\n          }, function (err) {\n            step(\"throw\", err);\n          });\n        }\n      }\n\n      return step(\"next\");\n    });\n  };\n};\n\nfunction couchdbAuthProxy(fn) {\n\tlet opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\tif (typeof fn === \"object\") {\n\t\t;\n\n\t\tvar _ref = [fn, opts];\n\t\topts = _ref[0];\n\t\tfn = _ref[1];\n\t}var _opts = opts;\n\tlet via = _opts.via,\n\t    secret = _opts.secret;\n\tvar _opts$target = _opts.target;\n\tlet target = _opts$target === undefined ? \"http://localhost:5984\" : _opts$target;\n\tvar _opts$headerFields = _opts.headerFields;\n\tlet headerFields = _opts$headerFields === undefined ? {} : _opts$headerFields;\n\tvar _opts$info = _opts.info;\n\tlet info = _opts$info === undefined ? { name, version } : _opts$info;\n\n\n\theaderFields = Object.assign({\n\t\tusername: \"X-Auth-CouchDB-UserName\",\n\t\troles: \"X-Auth-CouchDB-Roles\",\n\t\ttoken: \"X-Auth-CouchDB-Token\"\n\t}, headerFields);\n\n\tconst injectProxyInfo = info ? transformerProxy(function (data) {\n\t\tif (Buffer.isBuffer(data)) data = data.toString(\"utf-8\");\n\n\t\ttry {\n\t\t\tconst body = JSON.parse(data);\n\t\t\tbody.proxy = info;\n\t\t\treturn JSON.stringify(body);\n\t\t} catch (e) {\n\t\t\treturn data;\n\t\t}\n\t}) : null;\n\n\tconst proxy = httpProxy.createProxyServer({ target });\n\n\tproxy.on(\"proxyRes\", function (proxyRes, req, res) {\n\t\tconst existing = res.getHeader(\"Via\");\n\t\tconst viaheader = `${existing ? existing + \", \" : \"\"}${req.httpVersion} ${via} (${name}/${version})`;\n\t\tres.setHeader(\"Via\", viaheader);\n\t});\n\n\treturn (() => {\n\t\tvar _ref2 = asyncToGenerator(function* (req, res, next) {\n\t\t\ttry {\n\t\t\t\t// hijack the root response and inject proxy information\n\t\t\t\tif (injectProxyInfo && url.parse(req.url).pathname === \"/\") {\n\t\t\t\t\tyield confusedAsync(injectProxyInfo, null, [req, res]);\n\t\t\t\t}\n\n\t\t\t\t// inject couchdb proxy headers into request\n\t\t\t\tconst ctx = yield confusedAsync(fn, null, [req, res]);\n\t\t\t\tif (ctx != null) {\n\t\t\t\t\tvar _headerFields = headerFields;\n\t\t\t\t\tconst username = _headerFields.username,\n\t\t\t\t\t      roles = _headerFields.roles,\n\t\t\t\t\t      token = _headerFields.token;\n\n\t\t\t\t\tcleanHeaders(req, [username, roles, token]);\n\t\t\t\t\tconst n = typeof ctx.name === \"string\" ? ctx.name : \"\";\n\t\t\t\t\treq.headers[username] = n;\n\t\t\t\t\treq.headers[roles] = Array.isArray(ctx.roles) ? ctx.roles.join(\",\") : \"\";\n\t\t\t\t\tif (secret) req.headers[token] = sign(n, secret);\n\t\t\t\t}\n\n\t\t\t\tproxy.web(req, res);\n\t\t\t} catch (e) {\n\t\t\t\tif (next) next(e);else throw e;\n\t\t\t}\n\t\t});\n\n\t\treturn function (_x2, _x3, _x4) {\n\t\t\treturn _ref2.apply(this, arguments);\n\t\t};\n\t})();\n}\n\n// couchdb proxy signed token\nconst sign = couchdbAuthProxy.sign = function (user, secret) {\n\treturn crypto.createHmac(\"sha1\", secret).update(user).digest(\"hex\");\n};\n\n// for methods that we don't know if they are callback or promise async\nfunction confusedAsync(fn, ctx) {\n\tlet args = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n\n\tif (fn.length > args.length) {\n\t\treturn new Promise(function (resolve, reject) {\n\t\t\tfn.apply(ctx, args.concat(function (err, r) {\n\t\t\t\tif (err) reject(err);else resolve(r);\n\t\t\t}));\n\t\t});\n\t} else {\n\t\treturn Promise.resolve(fn.apply(ctx, args));\n\t}\n}\n\n// removes a list of headers from a request\n// accounts for Node.js lowercase headers\n// https://github.com/tyler-johnson/couchdb-auth-proxy/issues/7\nfunction cleanHeaders(req, headers) {\n\theaders.forEach(header => {\n\t\tdelete req.headers[header];\n\t\tdelete req.headers[header.toLowerCase()];\n\t});\n}\n\nmodule.exports = couchdbAuthProxy;"]}