{"version":3,"sources":["jsdelivr-header.js","/npm/@r/rest-cache@1.1.4/index.js"],"names":[],"mappings":"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","file":"/npm/@r/rest-cache@1.1.4/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@r/rest-cache@1.1.4/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","const sha = require('sha1');\nconst LRU = require('lru-cache');\nconst stableJSONStringify = require('json-stable-stringify');\n\n\nconst defaultCacheConfig = {\n  max: 500,\n  dispose: function(cache) {\n    cache.reset();\n  },\n}\n\nfunction Cache(config) {\n  var config = config || {};\n\n  this.defaultDataCacheConfig = config.defaultDataCacheConfig || defaultCacheConfig;\n  this.defaultRequestCacheConfig = config.defaultRequestCacheConfig || defaultCacheConfig;\n  this.dataTypes = config.dataTypes || {};\n\n  this.dataCache = {};\n  this.requestCache = new LRU(this.defaultRequestCacheConfig);\n  this.headCache = new LRU(this.defaultRequestCacheConfig);\n\n  this.setUpDataCache();\n}\n\nCache.prototype.setUpDataCache = function() {\n  for (var type in this.dataTypes) {\n    this.resetData(type);\n  }\n}\n\nCache.prototype.get = function(fn, params, options) {\n  var options = options || this.defaultRequestCacheConfig || {};\n\n  if (!options) {\n    return fn.apply(undefined, params);\n  }\n\n  if (options.rules) {\n    var failedRule = options.rules.some(function(rule) {\n      return !rule(params);\n    });\n\n    if (failedRule) {\n      return fn.apply(undefined, params);\n    }\n  }\n\n  var cache = this;\n  var key = options.name || fn.name;\n\n  if (!key) {\n    return fn.apply(undefined, params);\n  }\n\n  if (!options.cache && this.defaultRequestCacheConfig.cache) {\n    options.cache = this.defaultRequestCacheConfig.cache;\n  }\n\n  var paramsHash = Cache.generateHash(params);\n\n  var cachedData = this.loadFromCache(key, paramsHash);\n\n  if (cachedData) {\n    if (options.unformat) {\n      cachedData.body = options.unformat(cachedData.body);\n    }\n\n    return Promise.resolve(cachedData);\n  }\n\n  return new Promise(function(resolve, reject) {\n    fn.apply(undefined, params).then(function(data){\n      var cacheData = Object.assign({}, data);\n      resolve(data);\n\n      if (options.format) {\n        cacheData.body = options.format(cacheData.body);\n      }\n\n      cache.setCaches(key, paramsHash, cacheData, options);\n    }, function(error) {\n      reject(error);\n    });\n  });\n};\n\nCache.prototype.getById = function(type, id, fn, params, options) {\n  if (this.dataCache[type]) {\n    var res = this.dataCache[type].get(id);\n\n    if (res) {\n      var o = {};\n      o[type] = res;\n\n      if (options.unformat) {\n        o = options.unformat(o);\n      }\n\n      return Promise.resolve(o);\n    }\n  }\n\n  var cache = this;\n\n  return new Promise(function(resolve, reject) {\n    cache.get(fn, params, options).then(function(d){\n      resolve(d.body)\n    }, reject);\n  });\n};\n\n\nCache.prototype.loadFromCache = function(key, hash) {\n  if (!this.requestCache.get(key)) { return; }\n\n  var requestCache = this.requestCache.get(key).get(hash);\n  if(!requestCache) { return; }\n\n  var headers = this.headCache.get(key).get(hash);\n\n  if(typeof headers === 'undefined') { return; }\n\n  var obj = {\n    body: {},\n    headers,\n  };\n\n  var dataCache;\n  var found = true;\n  var id;\n\n  for (var type in requestCache) {\n    dataCache = this.dataCache[type];\n    if (!dataCache) { return; }\n\n    id = this.getidProperty(type);\n\n    if (requestCache[type].map) {\n      obj.body[type] = requestCache[type].map(function(id) {\n        var data = dataCache.get(id);\n        if (typeof data === 'undefined') {\n          found = false;\n        }\n\n        return data;\n      });\n    } else {\n      obj.body[type] = dataCache.get(requestCache[type]);\n      found = !!obj.body[type];\n    }\n\n    if (!found) { return; }\n  }\n\n  return obj;\n};\n\nCache.prototype.setCaches = function(key, hash, data, options) {\n  this.setRequestCache(key, hash, data, options);\n  this.setDataCache(data.body);\n};\n\nCache.prototype.setRequestCache = function(key, hash, data, options) {\n  var dataType;\n  var id;\n\n  if (!this.requestCache.get(key)) {\n    if (!options.cache) {\n      throw('No LRU configuration passed in for '+key+', aborting.');\n    }\n\n    this.requestCache.set(key, new LRU(options.cache));\n    this.headCache.set(key, new LRU(options.cache));\n  }\n\n  var idCache = {};\n\n  // explicitly null, instead of undefined; this allows us to check if the key\n  // exists\n  data.headers = data.headers || null;\n  this.headCache.get(key).set(hash, data.headers);\n\n  for (var type in data.body) {\n    id = this.getidProperty(type);\n\n    if (data.body[type].map) {\n      idCache[type] = data.body[type].map(function(d) {\n        return d[id];\n      });\n    } else {\n      idCache[type] = data.body[type][id];\n    }\n  }\n\n  this.requestCache.get(key).set(hash, idCache);\n};\n\nCache.prototype.setDataCache = function(data) {\n  var dataType;\n  var id;\n\n  for (var k in data) {\n    if (!this.dataCache[k]) {\n      this.resetData(k);\n    }\n\n    dataType = this.dataTypes[k];\n\n    id = this.getidProperty(k);\n\n    if (Array.isArray(data[k])) {\n      for (var o in data[k]) {\n        if (data[k][o].hasOwnProperty(id) && this.dataCache[k]) {\n          this.dataCache[k].set(data[k][o][id], data[k][o]);\n        }\n      }\n    } else {\n      this.dataCache[k].set(data[k][id], data[k]);\n    }\n  }\n};\n\nCache.prototype.resetData = function(type, data) {\n  if (!type) {\n    this.dataCache = {};\n    return;\n  }\n\n  var cache = this.dataCache[type];\n\n  if (!cache) {\n    var cacheConfig = this.getDataCacheConfig(type);\n\n    if (cacheConfig) {\n      this.dataCache[type] = new LRU(cacheConfig);\n    }\n\n    return;\n  }\n\n\n  if (!data) {\n    cache.reset();\n    return;\n  }\n\n  var id = this.getidProperty(type);\n\n  // If it's an array\n  if (Array.isArray(data)) {\n    data.forEach(function(d) {\n      cache.set(d[id], d);\n    });\n  } else {\n    cache.set(data[id], data);\n  }\n};\n\nCache.prototype.resetRequests = function(key, parameters, ids) {\n  if (typeof key === 'function') {\n    key = key.name;\n  }\n\n  if (!key) {\n    this.requestCache = new LRU(this.requestCacheConfig);\n    this.headCache = new LRU(this.requestCacheConfig);\n    return;\n  }\n\n  var cache = this.requestCache.get(key);\n  var headCache = this.headCache.get(key);\n\n  if (!cache || !headCache) {\n    return;\n  }\n\n  if (!parameters) {\n    cache.reset();\n    headCache.reset();\n    return;\n  }\n\n  var hash = Cache.generateHash(parameters);\n\n  if (ids) {\n    cache.set(hash, ids);\n    return;\n  }\n\n  cache.del(hash);\n};\n\nCache.prototype.deleteData = function(type, data) {\n  if (!type || !this.dataCache[type]) {\n    return;\n  }\n\n  var dataCache = this.dataCache[type];\n  var id = this.getidProperty(type);\n\n  if (Array.isArray(data)) {\n    data.forEach(function(d) {\n      dataCache.del(d[id]);\n    });\n    return;\n  } else if (typeof data === 'object') {\n    dataCache.del(data[id]);\n    return;\n  }\n\n  dataCache.del(data);\n}\n\nCache.prototype.getidProperty = function(type) {\n  var dataType = this.dataTypes[type];\n  return dataType ? dataType.idProperty || 'id' : 'id';\n}\n\nCache.prototype.getDataCacheConfig = function(type) {\n  if (this.dataTypes && this.dataTypes[type]) {\n    if (this.dataTypes[type].hasOwnProperty('cache')) {\n      return this.dataTypes[type].cache;\n    }\n  }\n\n  return this.defaultDataCacheConfig.cache;\n}\n\nCache.prototype.head = function(key, params) {\n  var keyCache = this.headCache.get(key);\n  if(!keyCache) { return; }\n\n  var paramsHash = Cache.generateHash(params);\n\n  return keyCache.get(paramsHash);\n}\n\nCache.prototype.body = function(key, params) {\n  var paramsHash = Cache.generateHash(params);\n  return this.loadFromCache(key, paramsHash).body;\n}\n\nCache.generateHash = function(params) {\n  return sha(stableJSONStringify(params) || '');\n};\n\nmodule.exports = Cache;\n"]}