{"version":3,"sources":["jsdelivr-header.js","/npm/geocode@0.0.3/lib/index.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACLA,IAAI,SAAW,QAAQ,cACnB,EAAI,QAAQ,cAEZ,eAAiB,SAAS,EAAO,EAAQ,GAC3C,EAAM,KAAK,cAAe,CAAC,KAAM,IAAS,SAAS,EAAK,GACtD,GAAI,EAAK,OAAO,EAAG,GACnB,IAAI,EAAe,EAAI,KAAI,SAAS,EAAK,GACvC,MAAO,CAAC,SAAU,EAAK,SAAU,EACnC,IACI,EAAkB,EAAE,WAAW,EAAQ,EAAE,MAAM,EAAc,aAE7D,EAAc,SAAS,GACzB,IAAI,EAAW,EAAa,OAAO,GAAc,MAAK,SAAS,EAAG,GAChE,OAAO,EAAO,QAAQ,EAAE,UAAY,EAAO,QAAQ,EAAE,SACvD,IACA,EAAG,KAAM,EACX,EAEI,EAAgB,OAClB,SAAS,GAAiB,SAAS,EAAK,GACtC,OAAI,EAAY,EAAG,GAIQ,IAH3B,EAAe,EAAa,QAAO,SAAS,GAC1C,OAAO,EAAO,QAAQ,EAAK,WAAa,CAC1C,KACiB,OAAoB,EAAY,SACjD,EAAM,KAAK,CAAC,UAAW,IAAe,WACpC,EAAY,EACd,GACF,IAEA,EAAY,GAEhB,GACF,EAEI,YAAc,SAAS,GAGzB,OADe,IADF,QAAQ,UACe,YAAE,EAAO,KAAM,EAAO,KAAM,CAAC,OAAO,IACxD,SAAS,EAAO,GAClC,EAEI,cAAgB,SAAS,GAC3B,IAAI,EAAQ,YAAY,GACpB,EAAO,EAAO,KAEd,EAAS,SAAS,EAAQ,GAC5B,IAAI,EAAM,WAAa,eAAe,EAAO,EAAQ,EAAI,EAErD,GACF,GAAO,EACP,QAAQ,eAAR,CAAwB,EAAO,IAE/B,GAEJ,EAIA,OAHA,EAAO,aAAe,SAAS,GAAM,EAAM,QAAQ,EAAI,EACvD,EAAO,WAAa,WAAa,OAAO,WAAW,EAAQ,EAEpD,CACT,EAEI,KAAO,SAAS,GAElB,OADA,EAAO,GAAQ,CAAC,GACN,MAGD,cAAc,EAAK,OAFnB,QAIX,EAEI,WAAa,SAAS,GACxB,OAAO,SAAS,EAAK,EAAK,GACxB,IAAI,EAAS,EAAI,MAAM,UACvB,EAAO,GAAQ,SAAS,EAAK,GAC3B,GAAI,EAAK,OAAO,EAAI,OAAO,KAAK,KAAK,CAAC,MAAO,IAC7C,EAAI,KAAK,CAAC,OAAQ,GACpB,GACF,CACF,EAEA,OAAO,QAAU","file":"/npm/geocode@0.0.3/lib/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/geocode@0.0.3/lib/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","\nvar mapquest = require('./mapquest')\nvar _ = require('underscore')\n\nvar geocodeCaching = function(cache, places, cb) {\n  cache.view('main/places', {keys: places}, function(err, res) {\n    if (err) return cb(err)\n    var placesCached = res.map(function(key, value) {\n      return {provided: key, resolved: value}\n    })\n    var placesRemaining = _.difference(places, _.pluck(placesCached, 'provided'))\n\n    var mergeResult = function(resRemaining) {\n      var combined = placesCached.concat(resRemaining).sort(function(a, b) {\n        return places.indexOf(a.provided) > places.indexOf(b.provided)\n      })\n      cb(null, combined)\n    }\n\n    if (placesRemaining.length) {\n      mapquest(placesRemaining, function(err, resRemaining) {\n        if (err) return cb(err)\n        resRemaining = resRemaining.filter(function(each) {\n          return places.indexOf(each.provided) > -1\n        })\n        if (resRemaining.length == 0) return mergeResult([])\n        cache.save({locations: resRemaining}, function() {\n          mergeResult(resRemaining)\n        })\n      })\n    } else {\n      mergeResult([])\n    }\n  })\n}\n\nvar createCache = function(config) {\n  var cradle = require('cradle')\n  var couchCon = new(cradle.Connection)(config.host, config.port, {cache: false});\n  return couchCon.database(config.db)\n}\n\nvar wrapCachingFn = function(config) {\n  var cache = createCache(config)\n  var init = config.init\n\n  var callFn = function(places, cb) {\n    var job = function() { geocodeCaching(cache, places, cb) }\n    // init couchdb views on first call:\n    if (init) {\n      init = false\n      require('./init-cache')(cache, job)\n    } else {\n      job()\n    }    \n  }\n  callFn.destroyCache = function(cb) { cache.destroy(cb) }\n  callFn.middleware = function() { return middleware(callFn) }\n\n  return callFn\n}\n\nvar call = function(opts) {\n  opts = opts || {}\n  if (!opts.cache) {\n    return mapquest\n  } else {\n    return wrapCachingFn(opts.cache)\n  }\n}\n\nvar middleware = function(callFn) {\n  return function(req, res, next) {\n    var places = req.param('places')\n    callFn(places, function(err, result) {\n      if (err) return res.status(500).send({error: err})\n      res.send({places: result})\n    })\n  }\n}\n\nmodule.exports = call\n"]}