{"version":3,"sources":["jsdelivr-header.js","/npm/@celzero/lfu-cache@1.0.0/lfu.js"],"names":[],"mappings":"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","file":"/npm/@celzero/lfu-cache@1.0.0/lfu.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@celzero/lfu-cache@1.0.0/lfu.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","/*\r\n * Copyright (c) 2020 RethinkDNS and its authors.\r\n *\r\n * This Source Code Form is subject to the terms of the Mozilla Public\r\n * License, v. 2.0. If a copy of the MPL was not distributed with this\r\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\r\n */\r\n \r\nvar cmin = require('@celzero/count-min-sketch')\r\nvar CreateError = require('@celzero/error')\r\n\r\nclass LfuCache {\r\n  constructor(lfuname, size, lfuUpdateCount, cmslen, cmswidht, cmsheight) {\r\n    this.lfuname = lfuname\r\n    this.lfuCachemap = new Map()\r\n    this.lfuCachearray = []\r\n    this.lfuCacheSize = size\r\n    this.lfuCacheIndex = -1\r\n    this.lfustart = -1\r\n    this.lfuend = 0\r\n    this.lfuUpdateCount = lfuUpdateCount <= 0 ? 0 : lfuUpdateCount\r\n    this.cmslen = cmslen\r\n    this.cmswidht = cmswidht\r\n    this.cmsheight = cmsheight\r\n    this.cms = cmin.createCountMinSketch(cmswidht, cmsheight)\r\n    this.cmslencount = 0\r\n  }\r\n  Get(key) {\r\n    let cachedata = false\r\n    try {\r\n      if (this.lfuCachemap.has(key)) {\r\n        cachedata = this.lfuCachearray[this.lfuCachemap.get(key)]\r\n      }\r\n    }\r\n    catch (e) {\r\n      CreateError(\"lfu.js - GetFromCache\", e)\r\n    }\r\n    return cachedata\r\n  }\r\n  Put(cachedata) {\r\n    try {\r\n      datatolfu.call(this, cachedata)\r\n    }\r\n    catch (e) {\r\n      CreateError(\"lfu.js - PushToCache\", e)\r\n    }\r\n  }\r\n}\r\n\r\nfunction removeaddlfuCache(key,data){\r\n  try{\r\n    let arraydata={}\r\n    arraydata = data\r\n    arraydata.n = this.lfustart\r\n    arraydata.p = -1\r\n    this.lfuCachemap.delete(this.lfuCachearray[this.lfuend].k)\r\n    this.lfuCachearray[this.lfustart].p = this.lfuend\r\n    this.lfustart = this.lfuend\r\n    this.lfuend = this.lfuCachearray[this.lfuend].p\r\n    this.lfuCachearray[this.lfuend].n = -1\r\n    this.lfuCachemap.set(key,this.lfustart)\r\n    this.lfuCachearray[this.lfustart] = arraydata\r\n  }\r\n  catch(e){\r\n    CreateError(\"removeaddlfuCache -> \"+this.objname,e)\r\n  }\r\n}\r\n\r\nfunction updatelfucache(key,data){\r\n  try{\r\n    let accindex = this.lfuCachemap.get(key)\r\n    if(accindex != this.lfustart){\r\n      if(data.n==-1){\r\n        this.lfuend = data.p;\r\n        this.lfuCachearray[this.lfuend].n = -1\r\n      }\r\n      else{\r\n        this.lfuCachearray[data.n].p = data.p\r\n        this.lfuCachearray[data.p].n = data.n\r\n      }\r\n      data.p = -1\r\n      data.n = this.lfustart\r\n      this.lfuCachearray[this.lfustart].p = accindex\r\n      this.lfustart = accindex\r\n    }\r\n  }\r\n  catch(e){\r\n    CreateError(\"updatelfucache -> \"+this.objname,e)\r\n  }\r\n}\r\n\r\nfunction simpleaddlurCache(key,data){\r\n  try{\r\n    let arraydata = {}\r\n    arraydata = data\r\n    if(this.lfuCacheIndex==-1){\r\n      arraydata.n=-1;\r\n      arraydata.p=-1;\r\n      this.lfustart=0\r\n      this.lfuend=0\r\n      this.lfuCacheIndex++\r\n    }\r\n    else{\r\n      this.lfuCacheIndex++\r\n      arraydata.n=this.lfustart;\r\n      arraydata.p=-1;\r\n      this.lfuCachearray[this.lfustart].p=this.lfuCacheIndex\r\n      this.lfustart = this.lfuCacheIndex\r\n    }\r\n    this.lfuCachemap.set(key,this.lfuCacheIndex)\r\n    this.lfuCachearray[this.lfuCacheIndex]={}\r\n    this.lfuCachearray[this.lfuCacheIndex] = arraydata\r\n  }\r\n  catch(e){\r\n    CreateError(\"simpleaddlurCache -> \"+this.objname,e)\r\n  }\r\n}\r\n\r\nfunction datatolfu(data){\r\n  try{\r\n    if(this.lfuCachemap.has(data.k)){\r\n      data = this.lfuCachearray[this.lfuCachemap.get(data.k)]       \r\n      updatelfucache.call(this,data.k,data)   \r\n    }\r\n    else { \r\n      if(this.lfuCacheIndex > (this.lfuCacheSize-2)){\r\n        let cmscount = this.cms.query(data.k)\r\n        if(cmscount < this.lfuUpdateCount){\r\n          if (cmscount == 0 ) { this.cmslencount++ }\r\n          if(this.cmslencount>=this.cmslen){\r\n            this.cmslencount=0\r\n            this.cms = cmin.createCountMinSketch(this.cmswidht,this.cmsheight)\r\n          }\r\n          this.cms.update(data.k,1)\r\n        }\r\n        else{\r\n          removeaddlfuCache.call(this,data.k,data)\r\n        }\r\n      }\r\n      else{\r\n        simpleaddlurCache.call(this,data.k,data)\r\n      }              \r\n    }\r\n  }\r\n  catch(e){\r\n    CreateError(\"datatolfu -> \"+this.objname,e)\r\n  }\r\n}\r\n\r\n\r\n\r\nmodule.exports.LfuCache = LfuCache"]}