From b98ad569fdafc3785aea0a1df12e3b7eed6fb3fe Mon Sep 17 00:00:00 2001 From: ugo-studio Date: Thu, 24 Oct 2024 06:00:01 +0100 Subject: [PATCH 1/3] fix: preDelete hook not called when a single key is deleted --- packages/keyv/src/index.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/keyv/src/index.ts b/packages/keyv/src/index.ts index c67ab484..32b24476 100644 --- a/packages/keyv/src/index.ts +++ b/packages/keyv/src/index.ts @@ -354,13 +354,14 @@ export class Keyv extends EventManager { const results = await Promise.allSettled(promises); const returnResult = results.every(x => (x as PromiseFulfilledResult).value === true); - this.hooks.trigger(KeyvHooks.POST_DELETE, returnResult); + this.hooks.trigger(KeyvHooks.POST_DELETE, {key: keyPrefixed, value:returnResult}); return returnResult; } const keyPrefixed = this._getKeyPrefix(key); - const result = store.delete(keyPrefixed); - this.hooks.trigger(KeyvHooks.POST_DELETE, result); + this.hooks.trigger(KeyvHooks.PRE_DELETE, {key: keyPrefixed}); + const result = await store.delete(keyPrefixed); + this.hooks.trigger(KeyvHooks.POST_DELETE, {key: keyPrefixed, value:result}); this.stats.delete(); return result; } From 1ee75d8d87bf274254f8294588a63fab3dd79f2e Mon Sep 17 00:00:00 2001 From: Jared Wray Date: Thu, 24 Oct 2024 17:16:38 -0700 Subject: [PATCH 2/3] fixing linting --- packages/keyv/src/index.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/keyv/src/index.ts b/packages/keyv/src/index.ts index 32b24476..3d065b1c 100644 --- a/packages/keyv/src/index.ts +++ b/packages/keyv/src/index.ts @@ -354,14 +354,14 @@ export class Keyv extends EventManager { const results = await Promise.allSettled(promises); const returnResult = results.every(x => (x as PromiseFulfilledResult).value === true); - this.hooks.trigger(KeyvHooks.POST_DELETE, {key: keyPrefixed, value:returnResult}); + this.hooks.trigger(KeyvHooks.POST_DELETE, {key: keyPrefixed, value: returnResult}); return returnResult; } const keyPrefixed = this._getKeyPrefix(key); this.hooks.trigger(KeyvHooks.PRE_DELETE, {key: keyPrefixed}); const result = await store.delete(keyPrefixed); - this.hooks.trigger(KeyvHooks.POST_DELETE, {key: keyPrefixed, value:result}); + this.hooks.trigger(KeyvHooks.POST_DELETE, {key: keyPrefixed, value: result}); this.stats.delete(); return result; } From f0e190d7b43a994043770231a81528d7b07a38e3 Mon Sep 17 00:00:00 2001 From: Jared Wray Date: Thu, 24 Oct 2024 17:16:43 -0700 Subject: [PATCH 3/3] fixing tests --- packages/keyv/test/keyv-hooks.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/keyv/test/keyv-hooks.test.ts b/packages/keyv/test/keyv-hooks.test.ts index d5b39483..76dbbcd6 100644 --- a/packages/keyv/test/keyv-hooks.test.ts +++ b/packages/keyv/test/keyv-hooks.test.ts @@ -92,7 +92,7 @@ test.it('POST_GET_MANY with getMany function', async () => { test.it('PRE_DELETE hook', async () => { const keyv = new Keyv(); keyv.hooks.addHandler(KeyvHooks.PRE_DELETE, data => { - test.expect(data.key).toBe('foo'); + test.expect(data.key).toBe('keyv:foo'); }); test.expect(keyv.hooks.handlers.size).toBe(1); await keyv.set('foo', 'bar');