{"version":3,"sources":["jsdelivr-header.js","/npm/request-digest-md5@0.0.1/request-digest.es5.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNA,aACA,OAAO,eAAe,QAAS,aAAc,CAC3C,OAAO,IAGT,IAAI,aAAe,WAAe,SAAS,EAAiB,EAAQ,GAAS,IAAK,IAAI,EAAI,EAAG,EAAI,EAAM,OAAQ,IAAK,CAAE,IAAI,EAAa,EAAM,GAAI,EAAW,WAAa,EAAW,aAAc,EAAO,EAAW,cAAe,EAAU,UAAW,IAAY,EAAW,UAAW,GAAM,OAAO,eAAe,EAAQ,EAAW,IAAK,EAAa,CAAE,CAAE,OAAO,SAAU,EAAa,EAAY,GAAiJ,OAA9H,GAAY,EAAiB,EAAY,UAAW,GAAiB,GAAa,EAAiB,EAAa,GAAqB,CAAa,CAAI,CAA/hB,GAEnB,SAAS,uBAAuB,GAAO,OAAO,GAAO,EAAI,WAAa,EAAM,CAAE,QAAW,EAAO,CAEhG,SAAS,gBAAgB,EAAU,GAAe,KAAM,aAAoB,GAAgB,MAAM,IAAI,UAAU,oCAAwC,CAExJ,IAAI,SAAW,QAAQ,WAEnB,UAAY,uBAAuB,UAEnC,QAAU,QAAQ,UAElB,QAAU,QAAQ,UAElB,SAAW,uBAAuB,SAElC,WAAa,WACf,SAAS,EAAW,EAAU,GAC5B,gBAAgB,KAAM,GAEtB,KAAK,GAAK,EACV,KAAK,SAAW,EAChB,KAAK,SAAW,CAClB,CA2KA,OAzKA,aAAa,EAAY,CAAC,CACxB,IAAK,UACL,MAAO,SAAiB,EAAS,GAC/B,IAAI,EAAQ,KAGZ,OADA,EAAQ,IAAM,EAAQ,KAAO,EAAQ,MAC9B,EAAI,UAAmB,SAAG,GAAS,SAAU,EAAO,GACzD,EAAM,gBAAgB,EAAS,EAAK,EACtC,GACF,GACC,CACD,IAAK,kBACL,MAAO,SAAyB,EAAS,EAAK,GAC5C,IAAI,EAAY,KAAK,qBAAqB,EAAI,SAAS,KAAK,qBACxD,GAAM,EAAI,QAAQ,YAAY,OAClC,EAAI,OAAO,CAAC,KAAK,SAAU,EAAU,MAAO,KAAK,UAAU,KAAK,MAChE,IAAI,GAAM,EAAI,QAAQ,YAAY,OAClC,EAAI,OAAO,CAAC,EAAQ,OAAQ,EAAQ,MAAM,KAAK,MAE/C,IAAI,EAAmB,KAAK,gBAAgB,EAAU,KAElD,EAAK,EAAiB,GACtB,EAAS,EAAiB,OAG1B,GAAW,EAAI,QAAQ,YAAY,OACnC,EAAiB,CAAC,EAAI,OAAO,OAAQ,EAAU,OAE/C,IACF,EAAe,KAAK,GACpB,EAAe,KAAK,IAGtB,EAAe,KAAK,EAAU,KAC9B,EAAe,KAAK,EAAI,OAAO,QAC/B,EAAS,OAAO,EAAe,KAAK,MAGpC,IAAI,EAAa,CACf,SAAU,KAAK,SACf,MAAO,EAAU,MACjB,MAAO,EAAU,MACjB,IAAK,EAAQ,KACb,IAAK,EAAU,IACf,OAAQ,EAAU,OAClB,SAAU,EAAS,OAAO,OAC1B,UAAW,OAGb,EAAa,KAAK,UAAU,GAExB,IACF,EAAW,GAAK,EAChB,EAAW,OAAS,GAGtB,IAAI,EAAU,EAAQ,SAAW,CAAC,EAIlC,OAHA,EAAQ,cAAgB,KAAK,eAAe,GAC5C,EAAQ,QAAU,GAEX,EAAI,UAAmB,SAAG,GAAS,SAAU,EAAO,EAAU,GACnE,EAAS,EAAO,EAAU,EAC5B,GACF,GACC,CACD,IAAK,YACL,MAAO,SAAmB,GAKxB,IAAI,EAAY,CAAC,EAOjB,OANA,SAAkB,QAAE,QAAQ,GAAM,SAAU,EAAK,GACpC,MAAP,IACF,EAAU,GAAO,EAErB,IAEO,CACT,GACC,CACD,IAAK,uBACL,MAAO,SAA8B,GAOnC,IANA,IAAI,EAAS,UAET,EADY,EAAa,OAAO,EAAa,QAAQ,GAAU,GAC7C,MAAM,KACxB,EAAS,EAAM,OACf,EAAS,CAAC,EAEL,EAAI,EAAG,EAAI,EAAQ,IAAK,CAC/B,IAAI,EAAgB,KAAK,aAAa,EAAM,IAExC,EAAc,OAAS,IACzB,EAAO,EAAc,IAAM,EAAc,GAAG,QAAQ,MAAO,IAE/D,CAEA,OAAO,CACT,GACC,CACD,IAAK,eACL,MAAO,SAAsB,GAC3B,OAAO,EAAY,MAAM,uDAC3B,GACC,CACD,IAAK,kBAKL,MAAO,SAAyB,GAC9B,IAAI,GAAS,EACT,GAAK,EAET,GAAmB,iBAAR,EAAkB,CAC3B,IAAI,GAAa,EAAI,QAAQ,YAAY,OAEzC,EAAW,OAAO,KAAK,SAAS,SAAS,KACzC,EAAS,EAAW,OAAO,OAAO,OAAO,EAAG,GAC5C,EAAK,KAAK,WACZ,CAEA,MAAO,CAAE,OAAQ,EAAQ,GAAI,EAC/B,GACC,CACD,IAAK,iBAML,MAAO,SAAwB,GAC7B,IAAI,EAAQ,GACZ,IAAK,IAAI,KAAK,EAAQ,CACpB,IAAI,EAAQ,EAAI,KAAO,KAAK,iBAAiB,GAAK,IAAM,IAAM,EAAO,IAAM,KAAK,iBAAiB,GAAK,IAAM,IAC5G,EAAM,KAAK,EACb,CAEA,MAAO,UAAY,EAAM,KAAK,IAChC,GACC,CACD,IAAK,mBAML,MAAO,SAA0B,GAG/B,QAAO,SAAkB,QAAE,SAFT,CAAC,MAAO,MAEuB,EACnD,GACC,CACD,IAAK,YAML,MAAO,WACL,IACI,EAAU,IAAI,MAAM,GAAG,KAAK,KAAO,GACvC,KAAK,GAAK,KAAK,GAFL,SAEgB,EAAI,KAAK,GAAK,EACxC,IAAI,EAAK,KAAK,GAAK,GAEnB,OAAO,EAAQ,OAAO,EAAG,EAAI,EAAG,QAAU,CAC5C,KAGK,CACR,CAnLgB,GAqLjB,QAAiB,QAAI,SAAU,EAAU,GACvC,OAAO,IAAI,WAAW,EAAU,EAClC,EAEA,OAAO,QAAU,QAAiB","file":"/npm/request-digest-md5@0.0.1/request-digest.es5.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/request-digest-md5@0.0.1/request-digest.es5.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';\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\n\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nvar _request = require('request');\n\nvar _request2 = _interopRequireDefault(_request);\n\nvar _crypto = require('crypto');\n\nvar _lodash = require('lodash');\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar HTTPDigest = (function () {\n  function HTTPDigest(username, password) {\n    _classCallCheck(this, HTTPDigest);\n\n    this.nc = 0;\n    this.username = username;\n    this.password = password;\n  }\n\n  _createClass(HTTPDigest, [{\n    key: 'request',\n    value: function request(options, callback) {\n      var _this = this;\n\n      options.url = options.host + options.path;\n      return (0, _request2['default'])(options, function (error, res) {\n        _this._handleResponse(options, res, callback);\n      });\n    }\n  }, {\n    key: '_handleResponse',\n    value: function _handleResponse(options, res, callback) {\n      var challenge = this._parseDigestResponse(res.caseless.dict['www-authenticate']);\n      var ha1 = (0, _crypto.createHash)('md5');\n      ha1.update([this.username, challenge.realm, this.password].join(':'));\n      var ha2 = (0, _crypto.createHash)('md5');\n      ha2.update([options.method, options.path].join(':'));\n\n      var _generateCNONCE2 = this._generateCNONCE(challenge.qop);\n\n      var nc = _generateCNONCE2.nc;\n      var cnonce = _generateCNONCE2.cnonce;\n\n      // Generate response hash\n      var response = (0, _crypto.createHash)('md5');\n      var responseParams = [ha1.digest('hex'), challenge.nonce];\n\n      if (cnonce) {\n        responseParams.push(nc);\n        responseParams.push(cnonce);\n      }\n\n      responseParams.push(challenge.qop);\n      responseParams.push(ha2.digest('hex'));\n      response.update(responseParams.join(':'));\n\n      // Setup response parameters\n      var authParams = {\n        username: this.username,\n        realm: challenge.realm,\n        nonce: challenge.nonce,\n        uri: options.path,\n        qop: challenge.qop,\n        opaque: challenge.opaque,\n        response: response.digest('hex'),\n        algorithm: 'MD5'\n      };\n\n      authParams = this._omitNull(authParams);\n\n      if (cnonce) {\n        authParams.nc = nc;\n        authParams.cnonce = cnonce;\n      }\n\n      var headers = options.headers || {};\n      headers.Authorization = this._compileParams(authParams);\n      options.headers = headers;\n\n      return (0, _request2['default'])(options, function (error, response, body) {\n        callback(error, response, body);\n      });\n    }\n  }, {\n    key: '_omitNull',\n    value: function _omitNull(data) {\n      // _.omit(data, (elt) => {\n      //   console.log('elt ' + elt + ' et condition : ' + elt === null);\n      //   return elt == null;\n      // });\n      var newObject = {};\n      _lodash2['default'].forEach(data, function (elt, key) {\n        if (elt != null) {\n          newObject[key] = elt;\n        }\n      });\n\n      return newObject;\n    }\n  }, {\n    key: '_parseDigestResponse',\n    value: function _parseDigestResponse(digestHeader) {\n      var prefix = 'Digest ';\n      var challenge = digestHeader.substr(digestHeader.indexOf(prefix) + prefix.length);\n      var parts = challenge.split(',');\n      var length = parts.length;\n      var params = {};\n\n      for (var i = 0; i < length; i++) {\n        var paramSplitted = this._splitParams(parts[i]);\n\n        if (paramSplitted.length > 2) {\n          params[paramSplitted[1]] = paramSplitted[2].replace(/\\\"/g, '');\n        }\n      }\n\n      return params;\n    }\n  }, {\n    key: '_splitParams',\n    value: function _splitParams(paramString) {\n      return paramString.match(/^\\s*?([a-zA-Z0-0]+)=(\"(.*)\"|MD5|MD5-sess|token)\\s*?$/);\n    }\n  }, {\n    key: '_generateCNONCE',\n\n    //\n    // ## Parse challenge digest\n    //\n    value: function _generateCNONCE(qop) {\n      var cnonce = false;\n      var nc = false;\n\n      if (typeof qop === 'string') {\n        var cnonceHash = (0, _crypto.createHash)('md5');\n\n        cnonceHash.update(Math.random().toString(36));\n        cnonce = cnonceHash.digest('hex').substr(0, 8);\n        nc = this._updateNC();\n      }\n\n      return { cnonce: cnonce, nc: nc };\n    }\n  }, {\n    key: '_compileParams',\n\n    //\n    // ## Compose authorization header\n    //\n\n    value: function _compileParams(params) {\n      var parts = [];\n      for (var i in params) {\n        var param = i + '=' + (this._putDoubleQuotes(i) ? '\"' : '') + params[i] + (this._putDoubleQuotes(i) ? '\"' : '');\n        parts.push(param);\n      }\n\n      return 'Digest ' + parts.join(',');\n    }\n  }, {\n    key: '_putDoubleQuotes',\n\n    //\n    // ## Define if we have to put double quotes or not\n    //\n\n    value: function _putDoubleQuotes(i) {\n      var excludeList = ['qop', 'nc'];\n\n      return _lodash2['default'].includes(excludeList, i) ? true : false;\n    }\n  }, {\n    key: '_updateNC',\n\n    //\n    // ## Update and zero pad nc\n    //\n\n    value: function _updateNC() {\n      var max = 99999999;\n      var padding = new Array(8).join('0') + '';\n      this.nc = this.nc > max ? 1 : this.nc + 1;\n      var nc = this.nc + '';\n\n      return padding.substr(0, 8 - nc.length) + nc;\n    }\n  }]);\n\n  return HTTPDigest;\n})();\n\nexports['default'] = function (username, password) {\n  return new HTTPDigest(username, password);\n};\n\nmodule.exports = exports['default'];\n"]}