diff --git a/types/levelup/index.d.ts b/types/levelup/index.d.ts index 09f82f2b3c..43d87b232e 100644 --- a/types/levelup/index.d.ts +++ b/types/levelup/index.d.ts @@ -1,7 +1,8 @@ -// Type definitions for levelup 3.1 +// Type definitions for levelup 4.3 // Project: https://github.com/Level/levelup // Definitions by: Meirion Hughes // Daniel Byrne +// Carson Farmer // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.8 @@ -25,6 +26,11 @@ type LevelUpDel = ((key: K, options: O, callback: ErrorCallback) => void) & ((key: K, options?: O) => Promise); +type LevelUpClear = + ((callback: ErrorCallback) => void) & + ((options: O, callback: ErrorCallback) => void) & + ((options?: O) => Promise); + type LevelUpBatch = ((key: K, callback: ErrorCallback) => void) & ((key: K, options: O, callback: ErrorCallback) => void) & @@ -45,6 +51,20 @@ type InferDBDel = LevelUpDel : LevelUpDel; +type InferDBClear = + DB extends { clear: (options: infer O, callback: ErrorCallback) => void } ? + LevelUpClear : + LevelUpClear; + +interface AbstractClearOptions extends AbstractOptions { + gt?: K; + gte?: K; + lt?: K; + lte?: K; + reverse?: boolean; + limit?: number; +} + export interface LevelUp> extends EventEmitter { open(): Promise; open(callback?: ErrorCallback): void; @@ -54,6 +74,7 @@ export interface LevelUp; get: InferDBGet; del: InferDBDel; + clear: InferDBClear; batch(array: AbstractBatch[], options?: any): Promise; batch(array: AbstractBatch[], options: any, callback: (err?: any) => any): void; @@ -82,6 +103,10 @@ export interface LevelUp void): this; /* + emitted when clear is called + */ + on(event: 'clear', cb: (opts: any) => void): this; + /* emitted on given event */ on(event: 'open' | 'ready' | 'closed' | 'opening' | 'closing', cb: () => void): this; diff --git a/types/levelup/levelup-tests.ts b/types/levelup/levelup-tests.ts index bb7fbd0518..444e772738 100644 --- a/types/levelup/levelup-tests.ts +++ b/types/levelup/levelup-tests.ts @@ -68,3 +68,11 @@ db.createReadStream() .on('end', () => { console.log('Stream closed'); }); + +db.clear((error) => { +}); + +db.clear({ gt: 'hello' }, (error) => { +}); + +db.clear().then(() => console.log('cleared'));