Merge pull request #24370 from Arylo/keyv

Add type definition for keyv
This commit is contained in:
Mine Starks
2018-03-23 14:08:22 -07:00
committed by GitHub
4 changed files with 105 additions and 0 deletions
+56
View File
@@ -0,0 +1,56 @@
// Type definitions for keyv 3.0
// Project: https://github.com/lukechilds/keyv
// Definitions by: AryloYeung <https://github.com/Arylo>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 2.1
/// <reference types="node" />
interface KeyvOptions {
/** Namespace for the current instance. */
namespace?: string;
/** A custom serialization function. */
serialize?: (data: any) => string;
/** A custom deserialization function. */
deserialize?: (data: string) => any;
/** The connection string URI. */
uri?: string;
/** The storage adapter instance to be used by Keyv. */
store?: any;
/** Default TTL. Can be overridden by specififying a TTL on `.set()`. */
ttl?: number;
/** Specify an adapter to use. e.g `'redis'` or `'mongodb'`. */
adapter?: string;
}
declare class Keyv extends NodeJS.EventEmitter {
/**
* @param opts The options object is also passed through to the storage adapter. Check your storage adapter docs for any extra options.
*/
constructor(opts?: KeyvOptions);
/**
* @param uri The connection string URI.
*
* Merged into the options object as options.uri.
* @param opts The options object is also passed through to the storage adapter. Check your storage adapter docs for any extra options.
*/
constructor(uri?: string, opts?: KeyvOptions);
/** Returns the value. */
get(key: string): Promise<any>;
/**
* Set a value.
*
* By default keys are persistent. You can set an expiry TTL in milliseconds.
*/
set(key: string, value: any, ttl?: number): Promise<boolean>;
/**
* Deletes an entry.
*
* Returns `true` if the key existed, `false` if not.
*/
delete(key: string): Promise<boolean>;
/** Delete all entries in the current namespace. */
clear(): Promise<void>;
}
export = Keyv;
+25
View File
@@ -0,0 +1,25 @@
import Keyv = require("keyv");
new Keyv({
uri: 'redis://user:pass@localhost:6379',
namespace: "redis"
});
new Keyv('mongodb://user:pass@localhost:27017/dbname');
new Keyv('redis://user:pass@localhost:6379');
new Keyv('sqlite://path/to/database.sqlite');
new Keyv('postgresql://user:pass@localhost:5432/dbname');
new Keyv('mysql://user:pass@localhost:3306/dbname');
new Keyv();
(async () => {
const keyv = new Keyv();
keyv.on('error', err => console.log('Connection Error', err));
await keyv.set('foo', 'expires in 1 second', 1000); // true
await keyv.set('foo', 'never expires'); // true
await keyv.get('foo'); // 'never expires'
await keyv.delete('foo'); // true
await keyv.clear(); // undefined
})();
+23
View File
@@ -0,0 +1,23 @@
{
"compilerOptions": {
"module": "commonjs",
"lib": [
"es6"
],
"noImplicitAny": true,
"noImplicitThis": true,
"strictFunctionTypes": true,
"strictNullChecks": true,
"baseUrl": "../",
"typeRoots": [
"../"
],
"types": [],
"noEmit": true,
"forceConsistentCasingInFileNames": true
},
"files": [
"index.d.ts",
"keyv-tests.ts"
]
}
+1
View File
@@ -0,0 +1 @@
{ "extends": "dtslint/dt.json" }