Skip to content

Commit 43a433a

Browse files
committed
Merge pull request DefinitelyTyped#5066 from Garciat/localforage-patch
Improve localForage typings
2 parents 75ca71a + 90d7feb commit 43a433a

File tree

3 files changed

+81
-86
lines changed

3 files changed

+81
-86
lines changed

angular-localForage/angular-localForage.d.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ declare module angular.localForage {
2222
}
2323

2424
interface ILocalForageService {
25-
setDriver(driver:string):angular.IPromise<void>;
26-
driver<T>():lf.ILocalForage<T>;
25+
driver(): LocalForageDriver;
26+
setDriver(name: string | string[]): angular.IPromise<void>;
2727

2828
setItem(key:string, value:any):angular.IPromise<void>;
2929
setItem(keys:Array<string>, values:Array<any>):angular.IPromise<void>;

localForage/localForage-tests.ts

Lines changed: 6 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,6 @@
11
/// <reference path="localForage.d.ts" />
22

3-
declare var localForage: lf.ILocalForage<string>;
4-
declare var callback: lf.ICallback<string>;
5-
declare var iterateCallback: lf.IIterateCallback<string>;
6-
declare var errorCallback: lf.IErrorCallback;
7-
declare var keyCallback: lf.IKeyCallback;
8-
declare var keysCallback: lf.IKeysCallback;
9-
declare var numberCallback: lf.INumberCallback;
10-
declare var promise: lf.IPromise<string>;
3+
declare var localForage: LocalForage;
114

125
() => {
136
localForage.clear((err: any) => {
@@ -25,7 +18,7 @@ declare var promise: lf.IPromise<string>;
2518
var newNumber: number = num;
2619
});
2720

28-
localForage.key(0,(err: any, value: string) => {
21+
localForage.key(0, (err: any, value: string) => {
2922
var newError: any = err;
3023
var newValue: string = value;
3124
});
@@ -40,29 +33,23 @@ declare var promise: lf.IPromise<string>;
4033
var newStr: string = str
4134
});
4235

43-
localForage.getItem("key").then((err: any, str: string) => {
44-
var newError: any = err;
45-
var newStr: string = str
36+
localForage.getItem<string>("key").then((str: string) => {
37+
var newStr: string = str;
4638
});
4739

4840
localForage.setItem("key", "value",(err: any, str: string) => {
4941
var newError: any = err;
5042
var newStr: string = str
5143
});
5244

53-
localForage.setItem("key", "value").then((err: any, str: string) => {
54-
var newError: any = err;
45+
localForage.setItem("key", "value").then((str: string) => {
5546
var newStr: string = str;
5647
});
5748

5849
localForage.removeItem("key",(err: any) => {
5950
var newError: any = err;
6051
});
6152

62-
localForage.removeItem("key").then((err: any, str: string) => {
63-
var newError: any = err;
64-
var newStr: string = str
53+
localForage.removeItem("key").then(() => {
6554
});
66-
67-
promise.then(callback);
6855
}

localForage/localForage.d.ts

Lines changed: 73 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -3,71 +3,79 @@
33
// Definitions by: yuichi david pichsenmeister <https://github.com/3x14159265>
44
// Definitions: https://github.com/borisyankov/DefinitelyTyped
55

6-
declare module lf {
7-
interface ILocalForage<T> {
8-
/**
9-
* Removes every key from the database, returning it to a blank slate.
10-
*/
11-
clear(callback: IErrorCallback): void
12-
/**
13-
* Iterate over all value/key pairs in datastore.
14-
*/
15-
iterate(iterateCallback: IIterateCallback<T>): void
16-
/**
17-
* Get the name of a key based on its ID.
18-
*/
19-
key(keyIndex: number, callback: IKeyCallback): void
20-
/**
21-
* Get the list of all keys in the datastore.
22-
*/
23-
keys(callback: IKeysCallback): void;
24-
/**
25-
* Gets the number of keys in the offline store (i.e. its “length”).
26-
*/
27-
length(callback: INumberCallback): void
28-
/**
29-
* Gets an item from the storage library and supplies the result to a callback.
30-
* If the key does not exist, getItem() will return null.
31-
*/
32-
getItem(key: string, callback: ICallback<T>): void
33-
getItem(key: string): IPromise<T>
34-
/**
35-
* Saves data to an offline store.
36-
*/
37-
setItem(key: string, value: T, callback: ICallback<T>): void
38-
setItem(key: string, value: T): IPromise<T>
39-
/**
40-
* Removes the value of a key from the offline store.
41-
*/
42-
removeItem(key: string, callback: IErrorCallback): void
43-
removeItem(key: string): IPromise<T>
44-
}
6+
/// <reference path="../es6-promise/es6-promise.d.ts" />
457

46-
interface ICallback<T> {
47-
(err: any, value: T): void
48-
}
8+
interface LocalForageOptions {
9+
driver?: LocalForageDriver | LocalForageDriver[];
10+
11+
name?: string;
12+
13+
size?: number;
14+
15+
storeName?: string;
16+
17+
version?: string;
18+
19+
description?: string;
20+
}
4921

50-
interface IIterateCallback<T> {
51-
(value: T, key: string, iterationNumber: number): void
52-
}
22+
interface LocalForageDriver {
23+
_driver: string;
24+
25+
_initStorage(options: LocalForageOptions): void;
26+
27+
_support: boolean | Promise<boolean>;
28+
29+
clear(callback: (err: any) => void): void;
30+
31+
getItem(key: string, callback: (err: any, value: any) => void): void;
32+
33+
key(keyIndex: number, callback: (err: any, key: string) => void): void;
34+
35+
keys(callback: (err: any, keys: string[]) => void): void;
36+
37+
length(callback: (err: any, numberOfKeys: number) => void): void;
38+
39+
removeItem(key: string, callback: (err: any) => void): void;
40+
41+
setItem(key: string, value: any, callback: (err: any, value: any) => void): void;
42+
}
5343

54-
interface IErrorCallback {
55-
(err: any): void
56-
}
57-
58-
interface IKeyCallback {
59-
(err: any, keyName: string): void
60-
}
61-
62-
interface IKeysCallback {
63-
(err: any, keys: Array<string>): void
64-
}
65-
66-
interface INumberCallback {
67-
(err: any, numberOfKeys: number): void
68-
}
69-
70-
interface IPromise<T> {
71-
then(callback: ICallback<T>): void
72-
}
73-
}
44+
interface LocalForage {
45+
LOCALSTORAGE: string;
46+
WEBSQL: string;
47+
INDEXEDDB: string;
48+
49+
config(options: LocalForageOptions): void;
50+
51+
driver(): LocalForageDriver;
52+
setDriver(driver: string | string[]): Promise<void>;
53+
setDriver(driver: string | string[], callback: () => void, errorCallback: (error: any) => void): void;
54+
defineDriver(driver: LocalForageDriver): Promise<void>;
55+
defineDriver(driver: LocalForageDriver, callback: () => void, errorCallback: (error: any) => void): void;
56+
57+
getItem<T>(key: string): Promise<T>;
58+
getItem<T>(key: string, callback: (err: any, value: T) => void): void;
59+
60+
setItem<T>(key: string, value: T): Promise<T>;
61+
setItem<T>(key: string, value: T, callback: (err: any, value: T) => void): void;
62+
63+
removeItem(key: string): Promise<void>;
64+
removeItem(key: string, callback: (err: any) => void): void;
65+
66+
clear(): Promise<void>;
67+
clear(callback: (err: any) => void): void;
68+
69+
length(): Promise<number>;
70+
length(callback: (err: any, numberOfKeys: number) => void): void;
71+
72+
key(keyIndex: number): Promise<string>;
73+
key(keyIndex: number, callback: (err: any, key: string) => void): void;
74+
75+
keys(): Promise<string[]>;
76+
keys(callback: (err: any, keys: string[]) => void): void;
77+
78+
iterate(iteratee: (value: any, key: string, iterationNumber: number) => any): Promise<any>;
79+
iterate(iteratee: (value: any, key: string, iterationNumber: number) => any,
80+
callback: (err: any, result: any) => void): void;
81+
}

0 commit comments

Comments
 (0)