From ac74754f2ec1f0356cdc46f23d1386f9b1f56ecd Mon Sep 17 00:00:00 2001 From: Jytesh <44925963+Jytesh@users.noreply.github.com> Date: Tue, 25 May 2021 17:48:01 +0530 Subject: [PATCH] Feat: empty namespaces Originally authored by https://github.com/vitormv in https://github.com/lukechilds/keyv/commit/fdc9acbff6d7885537d65b2f617de446622c12d7 Signed-off-by: Jytesh <44925963+Jytesh@users.noreply.github.com> --- packages/keyv/src/index.js | 2 +- packages/keyv/test/keyv.js | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/packages/keyv/src/index.js b/packages/keyv/src/index.js index a8e7b2a..656dfdc 100644 --- a/packages/keyv/src/index.js +++ b/packages/keyv/src/index.js @@ -54,7 +54,7 @@ class Keyv extends EventEmitter { } _getKeyPrefix(key) { - return `${this.options.namespace}:${key}`; + return this.opts.namespace ? `${this.opts.namespace}:${key}` : key; } _getKeyUnprefix(key) { diff --git a/packages/keyv/test/keyv.js b/packages/keyv/test/keyv.js index c403d81..6c0865d 100644 --- a/packages/keyv/test/keyv.js +++ b/packages/keyv/test/keyv.js @@ -124,5 +124,26 @@ test.serial('Keyv supports async serializer/deserializer', async t => { t.is(await keyv.get('foo'), 'bar'); }); +test.serial('Keyv uses a default namespace', async t => { + const store = new Map(); + const keyv = new Keyv({ store }); + await keyv.set('foo', 'bar'); + t.is([...store.keys()][0], 'keyv:foo'); +}); + +test.serial('Default namespace can be overridden', async t => { + const store = new Map(); + const keyv = new Keyv({ store, namespace: 'magic' }); + await keyv.set('foo', 'bar'); + t.is([...store.keys()][0], 'magic:foo'); +}); + +test.serial('An empty namespace stores the key as-is', async t => { + const store = new Map(); + const keyv = new Keyv({ store, namespace: '' }); + await keyv.set(42, 'foo'); + t.is([...store.keys()][0], 42); +}); + const store = () => new Map(); keyvTestSuite(test, Keyv, store);