UNPKG

declarations

Version:

[![npm version](https://badge.fury.io/js/declarations.svg)](https://www.npmjs.com/package/declarations)

155 lines (127 loc) 5.99 kB
// Type definitions for db.js v0.14.0 // Project: https://github.com/aaronpowell/db.js/ // Definitions by: Chris Wrench <https://github.com/cgwrench> // Definitions: https://github.com/borisyankov/DefinitelyTyped declare module DbJs { interface ErrorListener { (err: Error): void; } interface OpenOptions { server: string; version: number; schema?: any; } interface DbJsStatic { open(options: OpenOptions): Promise<Server>; delete(dbName: string): Promise<void>; cmp(key1: any, key2: any): number; } // Query API interface ExecutableQuery<T> { execute(): Promise<T[]>; } interface CountableQuery<T> { count(): ExecutableQuery<T>; } interface KeysQuery<T> extends DescableQuery<T>, ExecutableQuery<T>, FilterableQuery<T>, DistinctableQuery<T>, MappableQuery<T> { } interface KeyableQuery<T> { keys(): KeysQuery<T>; } interface FilterQuery<T> extends KeyableQuery<T>, ExecutableQuery<T>, FilterableQuery<T>, DescableQuery<T>, DistinctableQuery<T>, ModifiableQuery<T>, LimitableQuery<T>, MappableQuery<T> { } interface FilterableQuery<T> { filter<TValue>(index: string, value: TValue): FilterQuery<T>; filter(filter: (value: T) => boolean): FilterQuery<T>; } interface DescQuery<T> extends KeyableQuery<T>, CountableQuery<T>, ExecutableQuery<T>, FilterableQuery<T>, DescableQuery<T>, ModifiableQuery<T>, MappableQuery<T> { } interface DescableQuery<T> { desc(): DescQuery<T>; } interface DistinctQuery<T> extends KeyableQuery<T>, ExecutableQuery<T>, FilterableQuery<T>, DescableQuery<T>, ModifiableQuery<T>, MappableQuery<T>, CountableQuery<T> { } interface DistinctableQuery<T> { distinct(filter?: (value: T) => boolean): DistinctQuery<T>; } interface ModifiableQuery<T> { modify(filter: (value: T) => boolean): ExecutableQuery<T>; modify(modifyObj: any): ExecutableQuery<T>; } interface LimitableQuery<T> { limit(n: any, m: any): ExecutableQuery<T>; } interface MappableQuery<T> { map<TMap>(fn: (value: T) => TMap): Query<TMap>; } interface Query<T> extends Promise<T>, KeyableQuery<T>, ExecutableQuery<T>, FilterableQuery<T>, DescableQuery<T>, DistinctableQuery<T>, ModifiableQuery<T>, LimitableQuery<T>, MappableQuery<T>, CountableQuery<T> { } interface IndexQuery<T> extends Query<T> { only(...args: any[]): Query<T>; bound(lowerBound: any, upperBound: any): Query<T>; upperBound(upperBound: any): Query<T>; lowerBound(lowerBound: any): Query<T>; range(opts: any): Query<T>; all(): Query<T>; } interface KeyValuePair<TKey, TValue> { key: TKey; item: TValue; } interface BaseServer { getIndexedDB(): IDBDatabase; close(): void; } interface IndexAccessibleServer { [store: string]: TypedObjectStoreServer<any>; } interface ObjectStoreServer { add<T>(table: string, entity: T): Promise<T>; add<T>(table: string, ...entities: T[]): Promise<T[]>; add<TKey, TValue>(table: string, entity: KeyValuePair<TKey, TValue>): Promise<KeyValuePair<TKey, TValue>>; add<TKey, TValue>(table: string, ...entities: KeyValuePair<TKey, TValue>[]): Promise<KeyValuePair<TKey, TValue>[]>; update<T>(table: string, entity: T): Promise<T>; update<T>(table: string, ...entities: T[]): Promise<T[]>; update<TKey, TValue>(table: string, entity: KeyValuePair<TKey, TValue>): Promise<KeyValuePair<TKey, TValue>>; update<TKey, TValue>(table: string, ...entities: KeyValuePair<TKey, TValue>[]): Promise<KeyValuePair<TKey, TValue>[]>; remove<TKey>(table: string, key: TKey): Promise<TKey>; remove<TKey>(table: string, ...keys: TKey[]): Promise<TKey[]>; clear(table: string): Promise<void>; get<T>(table: string, key: any): Promise<T>; query<T>(table: string): IndexQuery<T>; query<T>(table: string, index: string): IndexQuery<T>; count(): Promise<number>; count(keyOrRange: any): Promise<number>; count(table: string, key: any): Promise<number>; addEventListener(type: 'abort', listener: (ev: Event) => any): void; addEventListener(type: 'versionchange', listener: (ev: Event) => any): void; addEventListener(type: 'error', listener: (err: Error) => any): void; addEventListener(type: string, listener: EventListener | ErrorListener): void; abort(listener: (ev: Event) => any): ObjectStoreServer; versionchange(listener: (ev: Event) => any): ObjectStoreServer; error(listener: (ev: Error) => any): ObjectStoreServer; } interface TypedObjectStoreServer<T> { add(entity: T): Promise<T>; add(...entities: T[]): Promise<T[]>; add<TKey, TValue>(entity: KeyValuePair<TKey, TValue>): Promise<KeyValuePair<TKey, TValue>>; add<TKey, TValue>(...entities: KeyValuePair<TKey, TValue>[]): Promise<KeyValuePair<TKey, TValue>[]>; update(entity: T): Promise<T>; update(...entities: T[]): Promise<T[]>; update<TKey, TValue>(entity: KeyValuePair<TKey, TValue>): Promise<KeyValuePair<TKey, TValue>>; update<TKey, TValue>(...entities: KeyValuePair<TKey, TValue>[]): Promise<KeyValuePair<TKey, TValue>[]>; remove<TKey>(key: TKey): Promise<TKey>; remove<TKey>(...keys: TKey[]): Promise<TKey[]>; clear(): Promise<void>; get(key: any): Promise<T>; query(): IndexQuery<T>; query(index: string): IndexQuery<T>; count(key: any): Promise<number>; } type Server = DbJs.IndexAccessibleServer & DbJs.ObjectStoreServer & DbJs.BaseServer; } declare module "db" { var db: DbJs.DbJsStatic; export = db; } declare var db: DbJs.DbJsStatic;