diff --git a/package.json b/package.json index 2e2fd1d..7f1c23f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@ztimson/utils", - "version": "0.25.22", + "version": "0.25.23", "description": "Utility library", "author": "Zak Timson", "license": "MIT", diff --git a/src/cache.ts b/src/cache.ts index 0eea5e3..1c816d6 100644 --- a/src/cache.ts +++ b/src/cache.ts @@ -67,10 +67,18 @@ export class Cache { return value[this.key]; } - private save(key: K) { + private save(key?: K) { if(this.options.storage) { if(this.options.storage instanceof Table) { - this.options.storage.put(key, this.store[key]); + if(key == null) { + const rows = this.entries(); + rows.forEach(([k, v]) => this.options.storage?.put(k, v)); + this.options.storage.getAllKeys().then(keys => { + rows.map(([k]) => k).filter(k => !keys.includes(k)) + .forEach(k => this.options.storage?.delete(k)); + }) + } else if(this.store[key] === undefined) this.options.storage.delete(key); + else this.options.storage.put(key, this.store[key]); } else if(this.options.storageKey) { this.options.storage.setItem(this.options.storageKey, JSONSanitize(this.store)); } @@ -117,6 +125,7 @@ export class Cache { clear(): this { this.complete = false; this.store = {}; + this.save(); return this; }