@onekeyfe/react-native-async-storage 1.1.60 → 3.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +32 -0
- package/lib/module/index.js +126 -2
- package/lib/module/index.js.map +1 -1
- package/lib/module/types.js +2 -0
- package/lib/module/types.js.map +1 -0
- package/lib/typescript/src/index.d.ts +4 -3
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/types.d.ts +19 -0
- package/lib/typescript/src/types.d.ts.map +1 -0
- package/package.json +1 -1
- package/src/index.tsx +171 -3
- package/src/types.ts +54 -0
package/README.md
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# @onekeyfe/react-native-async-storage
|
|
2
|
+
|
|
3
|
+
First, a sincere thank-you to Krzysztof Borowy and the
|
|
4
|
+
`@react-native-async-storage/async-storage` maintainers for their excellent
|
|
5
|
+
work 🙏
|
|
6
|
+
|
|
7
|
+
This package is built on, and inspired by,
|
|
8
|
+
[react-native-async-storage/async-storage](https://github.com/react-native-async-storage/async-storage).
|
|
9
|
+
|
|
10
|
+
Our original plan was to keep our customizations as patches on top of upstream
|
|
11
|
+
`@react-native-async-storage/async-storage`.
|
|
12
|
+
|
|
13
|
+
As our product requirements evolved, the scope of those changes outgrew what we
|
|
14
|
+
could reasonably maintain as an upstream patch set. We regret that we were
|
|
15
|
+
unable to keep this work in patch form.
|
|
16
|
+
|
|
17
|
+
As the gap grew, we ultimately forked `async-storage` to keep
|
|
18
|
+
development and delivery stable.
|
|
19
|
+
|
|
20
|
+
## Upstream Project
|
|
21
|
+
|
|
22
|
+
- Repository: [react-native-async-storage/async-storage](https://github.com/react-native-async-storage/async-storage)
|
|
23
|
+
- License: MIT
|
|
24
|
+
|
|
25
|
+
## Notes
|
|
26
|
+
|
|
27
|
+
- This fork includes OneKey-specific adaptations for our product requirements.
|
|
28
|
+
- If you are looking for original behavior and full documentation, please refer
|
|
29
|
+
to the upstream repository.
|
|
30
|
+
|
|
31
|
+
Thank you again to Krzysztof Borowy and everyone who contributes to
|
|
32
|
+
`@react-native-async-storage/async-storage` 💙
|
package/lib/module/index.js
CHANGED
|
@@ -1,5 +1,129 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
4
|
-
|
|
3
|
+
import NativeModule from "./NativeAsyncStorage.js";
|
|
4
|
+
function createAsyncStorage() {
|
|
5
|
+
const getItem = async (key, callback) => {
|
|
6
|
+
try {
|
|
7
|
+
const result = await NativeModule.multiGet([key]);
|
|
8
|
+
const value = result?.[0]?.[1] ?? null;
|
|
9
|
+
callback?.(null, value);
|
|
10
|
+
return value;
|
|
11
|
+
} catch (e) {
|
|
12
|
+
const error = e instanceof Error ? e : new Error(String(e));
|
|
13
|
+
callback?.(error);
|
|
14
|
+
throw error;
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
const setItem = async (key, value, callback) => {
|
|
18
|
+
try {
|
|
19
|
+
await NativeModule.multiSet([[key, value]]);
|
|
20
|
+
callback?.(null);
|
|
21
|
+
} catch (e) {
|
|
22
|
+
const error = e instanceof Error ? e : new Error(String(e));
|
|
23
|
+
callback?.(error);
|
|
24
|
+
throw error;
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
const removeItem = async (key, callback) => {
|
|
28
|
+
try {
|
|
29
|
+
await NativeModule.multiRemove([key]);
|
|
30
|
+
callback?.(null);
|
|
31
|
+
} catch (e) {
|
|
32
|
+
const error = e instanceof Error ? e : new Error(String(e));
|
|
33
|
+
callback?.(error);
|
|
34
|
+
throw error;
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
const mergeItem = async (key, value, callback) => {
|
|
38
|
+
try {
|
|
39
|
+
await NativeModule.multiMerge([[key, value]]);
|
|
40
|
+
callback?.(null);
|
|
41
|
+
} catch (e) {
|
|
42
|
+
const error = e instanceof Error ? e : new Error(String(e));
|
|
43
|
+
callback?.(error);
|
|
44
|
+
throw error;
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
const clear = async callback => {
|
|
48
|
+
try {
|
|
49
|
+
await NativeModule.clear();
|
|
50
|
+
callback?.(null);
|
|
51
|
+
} catch (e) {
|
|
52
|
+
const error = e instanceof Error ? e : new Error(String(e));
|
|
53
|
+
callback?.(error);
|
|
54
|
+
throw error;
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
const getAllKeys = async callback => {
|
|
58
|
+
try {
|
|
59
|
+
const keys = await NativeModule.getAllKeys();
|
|
60
|
+
callback?.(null, keys);
|
|
61
|
+
return keys;
|
|
62
|
+
} catch (e) {
|
|
63
|
+
const error = e instanceof Error ? e : new Error(String(e));
|
|
64
|
+
callback?.(error);
|
|
65
|
+
throw error;
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
const flushGetRequests = () => {
|
|
69
|
+
// No-op: legacy batching API, not needed with TurboModules
|
|
70
|
+
};
|
|
71
|
+
const multiGet = async (keys, callback) => {
|
|
72
|
+
try {
|
|
73
|
+
const result = await NativeModule.multiGet([...keys]);
|
|
74
|
+
callback?.(null, result);
|
|
75
|
+
return result;
|
|
76
|
+
} catch (e) {
|
|
77
|
+
const error = e instanceof Error ? e : new Error(String(e));
|
|
78
|
+
callback?.([error]);
|
|
79
|
+
throw error;
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
const multiSet = async (keyValuePairs, callback) => {
|
|
83
|
+
try {
|
|
84
|
+
const mutablePairs = keyValuePairs.map(([k, v]) => [k, v]);
|
|
85
|
+
await NativeModule.multiSet(mutablePairs);
|
|
86
|
+
callback?.(null);
|
|
87
|
+
} catch (e) {
|
|
88
|
+
const error = e instanceof Error ? e : new Error(String(e));
|
|
89
|
+
callback?.([error]);
|
|
90
|
+
throw error;
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
const multiRemove = async (keys, callback) => {
|
|
94
|
+
try {
|
|
95
|
+
await NativeModule.multiRemove([...keys]);
|
|
96
|
+
callback?.(null);
|
|
97
|
+
} catch (e) {
|
|
98
|
+
const error = e instanceof Error ? e : new Error(String(e));
|
|
99
|
+
callback?.([error]);
|
|
100
|
+
throw error;
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
const multiMerge = async (keyValuePairs, callback) => {
|
|
104
|
+
try {
|
|
105
|
+
await NativeModule.multiMerge(keyValuePairs);
|
|
106
|
+
callback?.(null);
|
|
107
|
+
} catch (e) {
|
|
108
|
+
const error = e instanceof Error ? e : new Error(String(e));
|
|
109
|
+
callback?.([error]);
|
|
110
|
+
throw error;
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
return {
|
|
114
|
+
getItem,
|
|
115
|
+
setItem,
|
|
116
|
+
removeItem,
|
|
117
|
+
mergeItem,
|
|
118
|
+
clear,
|
|
119
|
+
getAllKeys,
|
|
120
|
+
flushGetRequests,
|
|
121
|
+
multiGet,
|
|
122
|
+
multiSet,
|
|
123
|
+
multiRemove,
|
|
124
|
+
multiMerge
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
const AsyncStorage = createAsyncStorage();
|
|
128
|
+
export default AsyncStorage;
|
|
5
129
|
//# sourceMappingURL=index.js.map
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["NativeModule","createAsyncStorage","getItem","key","callback","result","multiGet","value","e","error","Error","String","setItem","multiSet","removeItem","multiRemove","mergeItem","multiMerge","clear","getAllKeys","keys","flushGetRequests","keyValuePairs","mutablePairs","map","k","v","AsyncStorage"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../src","sources":["types.ts"],"mappings":"","ignoreList":[]}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
export
|
|
1
|
+
import type { AsyncStorageStatic } from './types';
|
|
2
|
+
declare const AsyncStorage: AsyncStorageStatic;
|
|
3
|
+
export default AsyncStorage;
|
|
4
|
+
export type { AsyncStorageStatic, Callback, CallbackWithResult, KeyValuePair, MultiCallback, MultiGetCallback, } from './types';
|
|
4
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AA+JlD,QAAA,MAAM,YAAY,oBAAuB,CAAC;AAE1C,eAAe,YAAY,CAAC;AAE5B,YAAY,EACV,kBAAkB,EAClB,QAAQ,EACR,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,gBAAgB,GACjB,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export type Callback = (error?: Error | null) => void;
|
|
2
|
+
export type CallbackWithResult<T> = (error?: Error | null, result?: T | null) => void;
|
|
3
|
+
export type KeyValuePair = [string, string | null];
|
|
4
|
+
export type MultiCallback = (errors?: readonly (Error | null)[] | null) => void;
|
|
5
|
+
export type MultiGetCallback = (errors?: readonly (Error | null)[] | null, result?: readonly KeyValuePair[]) => void;
|
|
6
|
+
export type AsyncStorageStatic = {
|
|
7
|
+
getItem: (key: string, callback?: CallbackWithResult<string>) => Promise<string | null>;
|
|
8
|
+
setItem: (key: string, value: string, callback?: Callback) => Promise<void>;
|
|
9
|
+
removeItem: (key: string, callback?: Callback) => Promise<void>;
|
|
10
|
+
mergeItem: (key: string, value: string, callback?: Callback) => Promise<void>;
|
|
11
|
+
clear: (callback?: Callback) => Promise<void>;
|
|
12
|
+
getAllKeys: (callback?: CallbackWithResult<readonly string[]>) => Promise<readonly string[]>;
|
|
13
|
+
flushGetRequests: () => void;
|
|
14
|
+
multiGet: (keys: readonly string[], callback?: MultiGetCallback) => Promise<readonly KeyValuePair[]>;
|
|
15
|
+
multiSet: (keyValuePairs: ReadonlyArray<readonly [string, string]>, callback?: MultiCallback) => Promise<void>;
|
|
16
|
+
multiRemove: (keys: readonly string[], callback?: MultiCallback) => Promise<void>;
|
|
17
|
+
multiMerge: (keyValuePairs: [string, string][], callback?: MultiCallback) => Promise<void>;
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,QAAQ,GAAG,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,KAAK,IAAI,CAAC;AAEtD,MAAM,MAAM,kBAAkB,CAAC,CAAC,IAAI,CAClC,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,EACpB,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,KACd,IAAI,CAAC;AAEV,MAAM,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;AAEnD,MAAM,MAAM,aAAa,GAAG,CAC1B,MAAM,CAAC,EAAE,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,KACtC,IAAI,CAAC;AAEV,MAAM,MAAM,gBAAgB,GAAG,CAC7B,MAAM,CAAC,EAAE,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,EACzC,MAAM,CAAC,EAAE,SAAS,YAAY,EAAE,KAC7B,IAAI,CAAC;AAEV,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,EAAE,CACP,GAAG,EAAE,MAAM,EACX,QAAQ,CAAC,EAAE,kBAAkB,CAAC,MAAM,CAAC,KAClC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC5B,OAAO,EAAE,CACP,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,QAAQ,KAChB,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChE,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9E,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,UAAU,EAAE,CACV,QAAQ,CAAC,EAAE,kBAAkB,CAAC,SAAS,MAAM,EAAE,CAAC,KAC7C,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAAC;IAChC,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,QAAQ,EAAE,CACR,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,QAAQ,CAAC,EAAE,gBAAgB,KACxB,OAAO,CAAC,SAAS,YAAY,EAAE,CAAC,CAAC;IACtC,QAAQ,EAAE,CACR,aAAa,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EACvD,QAAQ,CAAC,EAAE,aAAa,KACrB,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,WAAW,EAAE,CACX,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,QAAQ,CAAC,EAAE,aAAa,KACrB,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,UAAU,EAAE,CACV,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EACjC,QAAQ,CAAC,EAAE,aAAa,KACrB,OAAO,CAAC,IAAI,CAAC,CAAC;CACpB,CAAC"}
|
package/package.json
CHANGED
package/src/index.tsx
CHANGED
|
@@ -1,4 +1,172 @@
|
|
|
1
|
-
import
|
|
1
|
+
import NativeModule from './NativeAsyncStorage';
|
|
2
|
+
import type { AsyncStorageStatic } from './types';
|
|
2
3
|
|
|
3
|
-
|
|
4
|
-
|
|
4
|
+
function createAsyncStorage(): AsyncStorageStatic {
|
|
5
|
+
const getItem: AsyncStorageStatic['getItem'] = async (key, callback) => {
|
|
6
|
+
try {
|
|
7
|
+
const result = await NativeModule.multiGet([key]);
|
|
8
|
+
const value = result?.[0]?.[1] ?? null;
|
|
9
|
+
callback?.(null, value);
|
|
10
|
+
return value;
|
|
11
|
+
} catch (e) {
|
|
12
|
+
const error = e instanceof Error ? e : new Error(String(e));
|
|
13
|
+
callback?.(error);
|
|
14
|
+
throw error;
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
const setItem: AsyncStorageStatic['setItem'] = async (
|
|
19
|
+
key,
|
|
20
|
+
value,
|
|
21
|
+
callback
|
|
22
|
+
) => {
|
|
23
|
+
try {
|
|
24
|
+
await NativeModule.multiSet([[key, value]]);
|
|
25
|
+
callback?.(null);
|
|
26
|
+
} catch (e) {
|
|
27
|
+
const error = e instanceof Error ? e : new Error(String(e));
|
|
28
|
+
callback?.(error);
|
|
29
|
+
throw error;
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
const removeItem: AsyncStorageStatic['removeItem'] = async (
|
|
34
|
+
key,
|
|
35
|
+
callback
|
|
36
|
+
) => {
|
|
37
|
+
try {
|
|
38
|
+
await NativeModule.multiRemove([key]);
|
|
39
|
+
callback?.(null);
|
|
40
|
+
} catch (e) {
|
|
41
|
+
const error = e instanceof Error ? e : new Error(String(e));
|
|
42
|
+
callback?.(error);
|
|
43
|
+
throw error;
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
const mergeItem: AsyncStorageStatic['mergeItem'] = async (
|
|
48
|
+
key,
|
|
49
|
+
value,
|
|
50
|
+
callback
|
|
51
|
+
) => {
|
|
52
|
+
try {
|
|
53
|
+
await NativeModule.multiMerge([[key, value]]);
|
|
54
|
+
callback?.(null);
|
|
55
|
+
} catch (e) {
|
|
56
|
+
const error = e instanceof Error ? e : new Error(String(e));
|
|
57
|
+
callback?.(error);
|
|
58
|
+
throw error;
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
const clear: AsyncStorageStatic['clear'] = async (callback) => {
|
|
63
|
+
try {
|
|
64
|
+
await NativeModule.clear();
|
|
65
|
+
callback?.(null);
|
|
66
|
+
} catch (e) {
|
|
67
|
+
const error = e instanceof Error ? e : new Error(String(e));
|
|
68
|
+
callback?.(error);
|
|
69
|
+
throw error;
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
const getAllKeys: AsyncStorageStatic['getAllKeys'] = async (callback) => {
|
|
74
|
+
try {
|
|
75
|
+
const keys = await NativeModule.getAllKeys();
|
|
76
|
+
callback?.(null, keys);
|
|
77
|
+
return keys;
|
|
78
|
+
} catch (e) {
|
|
79
|
+
const error = e instanceof Error ? e : new Error(String(e));
|
|
80
|
+
callback?.(error);
|
|
81
|
+
throw error;
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
const flushGetRequests: AsyncStorageStatic['flushGetRequests'] = () => {
|
|
86
|
+
// No-op: legacy batching API, not needed with TurboModules
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
const multiGet: AsyncStorageStatic['multiGet'] = async (keys, callback) => {
|
|
90
|
+
try {
|
|
91
|
+
const result = await NativeModule.multiGet([...keys]);
|
|
92
|
+
callback?.(null, result);
|
|
93
|
+
return result;
|
|
94
|
+
} catch (e) {
|
|
95
|
+
const error = e instanceof Error ? e : new Error(String(e));
|
|
96
|
+
callback?.([error]);
|
|
97
|
+
throw error;
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
const multiSet: AsyncStorageStatic['multiSet'] = async (
|
|
102
|
+
keyValuePairs,
|
|
103
|
+
callback
|
|
104
|
+
) => {
|
|
105
|
+
try {
|
|
106
|
+
const mutablePairs = keyValuePairs.map(
|
|
107
|
+
([k, v]) => [k, v] as [string, string]
|
|
108
|
+
);
|
|
109
|
+
await NativeModule.multiSet(mutablePairs);
|
|
110
|
+
callback?.(null);
|
|
111
|
+
} catch (e) {
|
|
112
|
+
const error = e instanceof Error ? e : new Error(String(e));
|
|
113
|
+
callback?.([error]);
|
|
114
|
+
throw error;
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
|
|
118
|
+
const multiRemove: AsyncStorageStatic['multiRemove'] = async (
|
|
119
|
+
keys,
|
|
120
|
+
callback
|
|
121
|
+
) => {
|
|
122
|
+
try {
|
|
123
|
+
await NativeModule.multiRemove([...keys]);
|
|
124
|
+
callback?.(null);
|
|
125
|
+
} catch (e) {
|
|
126
|
+
const error = e instanceof Error ? e : new Error(String(e));
|
|
127
|
+
callback?.([error]);
|
|
128
|
+
throw error;
|
|
129
|
+
}
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
const multiMerge: AsyncStorageStatic['multiMerge'] = async (
|
|
133
|
+
keyValuePairs,
|
|
134
|
+
callback
|
|
135
|
+
) => {
|
|
136
|
+
try {
|
|
137
|
+
await NativeModule.multiMerge(keyValuePairs);
|
|
138
|
+
callback?.(null);
|
|
139
|
+
} catch (e) {
|
|
140
|
+
const error = e instanceof Error ? e : new Error(String(e));
|
|
141
|
+
callback?.([error]);
|
|
142
|
+
throw error;
|
|
143
|
+
}
|
|
144
|
+
};
|
|
145
|
+
|
|
146
|
+
return {
|
|
147
|
+
getItem,
|
|
148
|
+
setItem,
|
|
149
|
+
removeItem,
|
|
150
|
+
mergeItem,
|
|
151
|
+
clear,
|
|
152
|
+
getAllKeys,
|
|
153
|
+
flushGetRequests,
|
|
154
|
+
multiGet,
|
|
155
|
+
multiSet,
|
|
156
|
+
multiRemove,
|
|
157
|
+
multiMerge,
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
const AsyncStorage = createAsyncStorage();
|
|
162
|
+
|
|
163
|
+
export default AsyncStorage;
|
|
164
|
+
|
|
165
|
+
export type {
|
|
166
|
+
AsyncStorageStatic,
|
|
167
|
+
Callback,
|
|
168
|
+
CallbackWithResult,
|
|
169
|
+
KeyValuePair,
|
|
170
|
+
MultiCallback,
|
|
171
|
+
MultiGetCallback,
|
|
172
|
+
} from './types';
|
package/src/types.ts
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
// Types aligned with the original @react-native-async-storage/async-storage
|
|
2
|
+
|
|
3
|
+
export type Callback = (error?: Error | null) => void;
|
|
4
|
+
|
|
5
|
+
export type CallbackWithResult<T> = (
|
|
6
|
+
error?: Error | null,
|
|
7
|
+
result?: T | null
|
|
8
|
+
) => void;
|
|
9
|
+
|
|
10
|
+
export type KeyValuePair = [string, string | null];
|
|
11
|
+
|
|
12
|
+
export type MultiCallback = (
|
|
13
|
+
errors?: readonly (Error | null)[] | null
|
|
14
|
+
) => void;
|
|
15
|
+
|
|
16
|
+
export type MultiGetCallback = (
|
|
17
|
+
errors?: readonly (Error | null)[] | null,
|
|
18
|
+
result?: readonly KeyValuePair[]
|
|
19
|
+
) => void;
|
|
20
|
+
|
|
21
|
+
export type AsyncStorageStatic = {
|
|
22
|
+
getItem: (
|
|
23
|
+
key: string,
|
|
24
|
+
callback?: CallbackWithResult<string>
|
|
25
|
+
) => Promise<string | null>;
|
|
26
|
+
setItem: (
|
|
27
|
+
key: string,
|
|
28
|
+
value: string,
|
|
29
|
+
callback?: Callback
|
|
30
|
+
) => Promise<void>;
|
|
31
|
+
removeItem: (key: string, callback?: Callback) => Promise<void>;
|
|
32
|
+
mergeItem: (key: string, value: string, callback?: Callback) => Promise<void>;
|
|
33
|
+
clear: (callback?: Callback) => Promise<void>;
|
|
34
|
+
getAllKeys: (
|
|
35
|
+
callback?: CallbackWithResult<readonly string[]>
|
|
36
|
+
) => Promise<readonly string[]>;
|
|
37
|
+
flushGetRequests: () => void;
|
|
38
|
+
multiGet: (
|
|
39
|
+
keys: readonly string[],
|
|
40
|
+
callback?: MultiGetCallback
|
|
41
|
+
) => Promise<readonly KeyValuePair[]>;
|
|
42
|
+
multiSet: (
|
|
43
|
+
keyValuePairs: ReadonlyArray<readonly [string, string]>,
|
|
44
|
+
callback?: MultiCallback
|
|
45
|
+
) => Promise<void>;
|
|
46
|
+
multiRemove: (
|
|
47
|
+
keys: readonly string[],
|
|
48
|
+
callback?: MultiCallback
|
|
49
|
+
) => Promise<void>;
|
|
50
|
+
multiMerge: (
|
|
51
|
+
keyValuePairs: [string, string][],
|
|
52
|
+
callback?: MultiCallback
|
|
53
|
+
) => Promise<void>;
|
|
54
|
+
};
|