Socket
Socket
Sign inDemoInstall

keyv

Package Overview
Dependencies
1
Maintainers
1
Versions
52
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 0.3.1 to 0.4.0

5

package.json
{
"name": "keyv",
"version": "0.3.1",
"version": "0.4.0",
"description": "Simple key/value store with support for multiple backends",

@@ -39,5 +39,6 @@ "main": "src/index.js",

"eslint-config-xo-lukechilds": "^1.0.0",
"keyv-api-tests": "*",
"get-root-module": "^0.1.3",
"keyv-mongo": "*",
"keyv-redis": "*",
"keyv-test-suite": "*",
"nyc": "^10.3.2",

@@ -44,0 +45,0 @@ "xo": "^0.19.0"

23

src/index.js

@@ -14,7 +14,3 @@ 'use strict';

const adapter = opts.adapter || /^[^:]*/.exec(opts.uri)[0];
try {
return new (require(adapters[adapter]))(opts);
} catch (err) {
throw new Error(`Can't find "${adapter}" storage adapter. Is it officially supported by Keyv?`);
}
return new (require(adapters[adapter]))(opts);
}

@@ -28,3 +24,3 @@ return new Map();

this.opts = Object.assign(
{},
{ namespace: 'keyv' },
(typeof uri === 'string') ? { uri } : uri,

@@ -35,8 +31,19 @@ opts

if (!this.opts.store) {
const adapterOpts = Object.assign({ keyv: this }, this.opts);
const adapterOpts = Object.assign({}, this.opts);
this.opts.store = loadStore(adapterOpts);
}
if (typeof this.opts.store.on === 'function') {
this.opts.store.on('error', err => this.emit('error', err));
}
this.opts.store.namespace = this.opts.namespace;
}
_getKeyPrefix(key) {
return `${this.opts.namespace}:${key}`;
}
get(key) {
key = this._getKeyPrefix(key);
const store = this.opts.store;

@@ -57,2 +64,3 @@ return Promise.resolve(store.get(key)).then(data => {

set(key, value, ttl) {
key = this._getKeyPrefix(key);
ttl = ttl || this.opts.ttl;

@@ -73,2 +81,3 @@ const store = this.opts.store;

delete(key) {
key = this._getKeyPrefix(key);
const store = this.opts.store;

@@ -75,0 +84,0 @@ return Promise.resolve(store.delete(key));

import test from 'ava';
import delay from 'delay';
import keyvApiTests from 'keyv-api-tests';
import Keyv from '../';
import keyvTestSuite from 'keyv-test-suite';
import Keyv from 'get-root-module';

@@ -15,5 +15,6 @@ test('Keyv is a class', t => {

const keyv = new Keyv({ store });
t.is(store.size, 0);
await keyv.set('foo', 'bar');
t.is(await keyv.get('foo'), 'bar');
t.true(store.has('foo'));
t.is(store.size, 1);
});

@@ -66,3 +67,3 @@

const store = new Map();
keyvApiTests(test, Keyv, store);
const store = () => new Map();
keyvTestSuite(test, Keyv, store);
import test from 'ava';
import keyvApiTests from 'keyv-api-tests';
import Keyv from '../../';
import keyvTestSuite, { keyvOfficialTests } from 'keyv-test-suite';
import Keyv from 'get-root-module';
test('connection string automatically requires module', async t => {
const keyv = new Keyv('mongodb://127.0.0.1:27017');
await keyv.set('foo', 'bar');
t.is(await keyv.get('foo'), 'bar');
});
keyvOfficialTests(test, Keyv, 'mongodb://127.0.0.1:27017', 'mongodb://127.0.0.1:1234');
test.cb('connection errors are emitted', t => {
const keyv = new Keyv('mongodb://127.0.0.1:1234');
keyv.on('error', () => {
t.pass();
t.end();
});
});
const store = new (require('keyv-mongo'))('mongodb://127.0.0.1:27017'); // eslint-disable-line import/newline-after-import
keyvApiTests(test, Keyv, store);
const store = () => new (require('keyv-mongo'))('mongodb://127.0.0.1:27017'); // eslint-disable-line import/newline-after-import
keyvTestSuite(test, Keyv, store);
import test from 'ava';
import keyvApiTests from 'keyv-api-tests';
import Keyv from '../../';
import keyvTestSuite, { keyvOfficialTests } from 'keyv-test-suite';
import Keyv from 'get-root-module';
test('connection string automatically requires module', async t => {
const keyv = new Keyv('redis://localhost');
await keyv.set('foo', 'bar');
t.is(await keyv.get('foo'), 'bar');
});
keyvOfficialTests(test, Keyv, 'redis://localhost', 'redis://foo');
test.cb('connection errors are emitted', t => {
const keyv = new Keyv('redis://foo');
keyv.on('error', () => {
t.pass();
t.end();
});
});
const store = new (require('keyv-redis'))('redis://localhost'); // eslint-disable-line import/newline-after-import
keyvApiTests(test, Keyv, store);
const store = () => new (require('keyv-redis'))('redis://localhost'); // eslint-disable-line import/newline-after-import
keyvTestSuite(test, Keyv, store);
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc