{"version":3,"sources":["../../src/cache/slidingCache.ts"],"names":["SlidingCacheEntry","Serializable","constructor","value","register","destructor","Task","unwrap","createSnapshot","loadSnapshot","snapshot","Object","assign","SlidingCache","BaseCache","provider","input","SlidingTaskMap","size","ttl","get","key","has","clear","delete","set","enabled"],"mappings":";;;;;;;;AAyBA,IAAMA,iBAAAA,GAAN,MAAMA,kBAAAA,SAA6BC,6BAAAA,CAAAA;EAzBnC;;;;AA0BEC,EAAAA,WAAAA,CAA+BC,KAAU,EAAA;AACvC,IAAK,KAAA,EAAA,EAAA,KADwBA,KAAAA,GAAAA,KAAAA;AAE/B;EAEA;AACE,IAAA,IAAA,CAAKC,QAAQ,EAAA;AACf;EAEAC,UAAa,GAAA;AACX,IAAI,IAAA,IAAA,CAAKF,iBAAiBG,qBAAM,EAAA;AAC9B,MAAA,IAAA,CAAKH,MAAME,UAAU,EAAA;AACvB;AACF;EAEAE,MAAY,GAAA;AACV,IAAA,OAAO,IAAKJ,CAAAA,KAAAA;AACd;EAEAK,cAAiB,GAAA;AACf,IAAO,OAAA;AAAEL,MAAAA,KAAAA,EAAO,IAAKA,CAAAA;AAAM,KAAA;AAC7B;AAEAM,EAAAA,YAAAA,CAAaC,QAAkD,EAAA;AAC7DC,IAAOC,MAAAA,CAAAA,MAAAA,CAAO,MAAMF,QAAAA,CAAAA;AACtB;AACF,CAAA;AAEO,MAAMG,qBAAwBC,kBAAAA,CAAAA;EArDrC;;;AAsDqBC,EAAAA,QAAAA;AAEnBb,EAAAA,WAAAA,CAAYc,KAA0B,EAAA;AACpC,IAAK,KAAA,EAAA;AACL,IAAA,IAAA,CAAKD,WAAW,IAAIE,+BAAAA,CAA6CD,KAAME,CAAAA,IAAAA,EAAMF,MAAMG,GAAG,CAAA;AACxF;EAEA;AACE,IAAA,IAAA,CAAKf,QAAQ,EAAA;AACf;AAEA,EAAA,MAAMgB,IAAIC,GAAa,EAAA;AACrB,IAAA,MAAMlB,KAAQ,GAAA,IAAA,CAAKY,QAASK,CAAAA,GAAAA,CAAIC,GAAAA,CAAAA;AAChC,IAAA,OAAOlB,OAAOI,MAAAA,IAAAA;AAChB;AAEA,EAAA,MAAMe,IAAID,GAAa,EAAA;AACrB,IAAO,OAAA,IAAA,CAAKN,QAASO,CAAAA,GAAAA,CAAID,GAAAA,CAAAA;AAC3B;AAEA,EAAA,MAAME,KAAQ,GAAA;AACZ,IAAA,IAAA,CAAKR,SAASQ,KAAK,EAAA;AACrB;AAEA,EAAA,MAAMC,OAAOH,GAAa,EAAA;AACxB,IAAO,OAAA,IAAA,CAAKN,QAASS,CAAAA,MAAAA,CAAOH,GAAAA,CAAAA;AAC9B;EAEA,MAAMI,GAAAA,CAAIJ,KAAalB,KAAU,EAAA;AAC/B,IAAA,IAAA,CAAKY,SAASU,GAAIJ,CAAAA,GAAAA,EAAK,IAAIrB,iBAAAA,CAAkBG,KAAAA,CAAAA,CAAAA;AAC/C;AAEA,EAAA,MAAMe,IAAO,GAAA;AACX,IAAA,OAAO,KAAKH,QAASG,CAAAA,IAAAA;AACvB;EAEAV,cAAiB,GAAA;AACf,IAAO,OAAA;AACLkB,MAAAA,OAAAA,EAAS,IAAKA,CAAAA,OAAAA;AACdX,MAAAA,QAAAA,EAAU,IAAKA,CAAAA;AACjB,KAAA;AACF;AAEAN,EAAAA,YAAAA,CAAaC,QAAkD,EAAA;AAC7DC,IAAOC,MAAAA,CAAAA,MAAAA,CAAO,MAAMF,QAAAA,CAAAA;AACtB;AACF","file":"slidingCache.cjs","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { SlidingTaskMap, Task } from \"promise-based-task\";\nimport { BaseCache } from \"@/cache/base.js\";\nimport { Serializable } from \"@/internals/serializable.js\";\n\nexport interface SlidingCacheInput {\n  size: number;\n  ttl?: number;\n}\n\nclass SlidingCacheEntry<T> extends Serializable {\n  constructor(protected readonly value: T) {\n    super();\n  }\n\n  static {\n    this.register();\n  }\n\n  destructor() {\n    if (this.value instanceof Task) {\n      this.value.destructor();\n    }\n  }\n\n  unwrap(): T {\n    return this.value;\n  }\n\n  createSnapshot() {\n    return { value: this.value };\n  }\n\n  loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n    Object.assign(this, snapshot);\n  }\n}\n\nexport class SlidingCache<T> extends BaseCache<T> {\n  protected readonly provider;\n\n  constructor(input: SlidingCacheInput) {\n    super();\n    this.provider = new SlidingTaskMap<string, SlidingCacheEntry<T>>(input.size, input.ttl);\n  }\n\n  static {\n    this.register();\n  }\n\n  async get(key: string) {\n    const value = this.provider.get(key);\n    return value?.unwrap?.();\n  }\n\n  async has(key: string) {\n    return this.provider.has(key);\n  }\n\n  async clear() {\n    this.provider.clear();\n  }\n\n  async delete(key: string) {\n    return this.provider.delete(key);\n  }\n\n  async set(key: string, value: T) {\n    this.provider.set(key, new SlidingCacheEntry(value));\n  }\n\n  async size() {\n    return this.provider.size;\n  }\n\n  createSnapshot() {\n    return {\n      enabled: this.enabled,\n      provider: this.provider,\n    };\n  }\n\n  loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n    Object.assign(this, snapshot);\n  }\n}\n"]}