From 10ac6101f4574040c4aec0f3c843b9ba86aa4f69 Mon Sep 17 00:00:00 2001 From: ztimson Date: Mon, 30 Jun 2025 11:44:32 -0400 Subject: [PATCH] Fixed cache handling of undefined --- package.json | 2 +- src/cache.ts | 13 +++++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) 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; }