@onekeyfe/react-native-async-storage 3.0.74 → 3.0.76

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.
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  import NativeModule from './NativeAsyncStorage';
4
+ import { forwardAsyncStorageWriteIfNeeded } from "./runtimeConfig.js";
4
5
  function createAsyncStorage() {
5
6
  const getItem = async (key, callback) => {
6
7
  try {
@@ -16,7 +17,9 @@ function createAsyncStorage() {
16
17
  };
17
18
  const setItem = async (key, value, callback) => {
18
19
  try {
19
- await NativeModule.multiSet([[key, value]]);
20
+ if (!(await forwardAsyncStorageWriteIfNeeded('multiSet', [[[key, value]]]))) {
21
+ await NativeModule.multiSet([[key, value]]);
22
+ }
20
23
  callback?.(null);
21
24
  } catch (e) {
22
25
  const error = e instanceof Error ? e : new Error(String(e));
@@ -26,7 +29,9 @@ function createAsyncStorage() {
26
29
  };
27
30
  const removeItem = async (key, callback) => {
28
31
  try {
29
- await NativeModule.multiRemove([key]);
32
+ if (!(await forwardAsyncStorageWriteIfNeeded('multiRemove', [[key]]))) {
33
+ await NativeModule.multiRemove([key]);
34
+ }
30
35
  callback?.(null);
31
36
  } catch (e) {
32
37
  const error = e instanceof Error ? e : new Error(String(e));
@@ -36,7 +41,9 @@ function createAsyncStorage() {
36
41
  };
37
42
  const mergeItem = async (key, value, callback) => {
38
43
  try {
39
- await NativeModule.multiMerge([[key, value]]);
44
+ if (!(await forwardAsyncStorageWriteIfNeeded('multiMerge', [[[key, value]]]))) {
45
+ await NativeModule.multiMerge([[key, value]]);
46
+ }
40
47
  callback?.(null);
41
48
  } catch (e) {
42
49
  const error = e instanceof Error ? e : new Error(String(e));
@@ -46,7 +53,9 @@ function createAsyncStorage() {
46
53
  };
47
54
  const clear = async callback => {
48
55
  try {
49
- await NativeModule.clear();
56
+ if (!(await forwardAsyncStorageWriteIfNeeded('clear', []))) {
57
+ await NativeModule.clear();
58
+ }
50
59
  callback?.(null);
51
60
  } catch (e) {
52
61
  const error = e instanceof Error ? e : new Error(String(e));
@@ -82,7 +91,9 @@ function createAsyncStorage() {
82
91
  const multiSet = async (keyValuePairs, callback) => {
83
92
  try {
84
93
  const mutablePairs = keyValuePairs.map(([k, v]) => [k, v]);
85
- await NativeModule.multiSet(mutablePairs);
94
+ if (!(await forwardAsyncStorageWriteIfNeeded('multiSet', [mutablePairs]))) {
95
+ await NativeModule.multiSet(mutablePairs);
96
+ }
86
97
  callback?.(null);
87
98
  } catch (e) {
88
99
  const error = e instanceof Error ? e : new Error(String(e));
@@ -92,7 +103,10 @@ function createAsyncStorage() {
92
103
  };
93
104
  const multiRemove = async (keys, callback) => {
94
105
  try {
95
- await NativeModule.multiRemove([...keys]);
106
+ const mutableKeys = [...keys];
107
+ if (!(await forwardAsyncStorageWriteIfNeeded('multiRemove', [mutableKeys]))) {
108
+ await NativeModule.multiRemove(mutableKeys);
109
+ }
96
110
  callback?.(null);
97
111
  } catch (e) {
98
112
  const error = e instanceof Error ? e : new Error(String(e));
@@ -102,7 +116,9 @@ function createAsyncStorage() {
102
116
  };
103
117
  const multiMerge = async (keyValuePairs, callback) => {
104
118
  try {
105
- await NativeModule.multiMerge(keyValuePairs);
119
+ if (!(await forwardAsyncStorageWriteIfNeeded('multiMerge', [keyValuePairs]))) {
120
+ await NativeModule.multiMerge(keyValuePairs);
121
+ }
106
122
  callback?.(null);
107
123
  } catch (e) {
108
124
  const error = e instanceof Error ? e : new Error(String(e));
@@ -126,4 +142,5 @@ function createAsyncStorage() {
126
142
  }
127
143
  const AsyncStorage = createAsyncStorage();
128
144
  export default AsyncStorage;
145
+ export { setAsyncStorageShouldForwardWriteGetter, setAsyncStorageWriteForwarder } from "./runtimeConfig.js";
129
146
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+
3
+ const runtimeGlobal = globalThis;
4
+ let shouldForwardWriteGetter = runtimeGlobal.__onekeyAsyncStorageShouldForwardWriteGetter;
5
+ let writeForwarder = runtimeGlobal.__onekeyAsyncStorageWriteForwarder;
6
+ export function setAsyncStorageShouldForwardWriteGetter(getter) {
7
+ shouldForwardWriteGetter = getter;
8
+ runtimeGlobal.__onekeyAsyncStorageShouldForwardWriteGetter = getter;
9
+ }
10
+ export function setAsyncStorageWriteForwarder(forwarder) {
11
+ writeForwarder = forwarder;
12
+ runtimeGlobal.__onekeyAsyncStorageWriteForwarder = forwarder;
13
+ }
14
+ function getShouldForwardWriteGetter() {
15
+ return shouldForwardWriteGetter ?? runtimeGlobal.__onekeyAsyncStorageShouldForwardWriteGetter;
16
+ }
17
+ function getWriteForwarder() {
18
+ return writeForwarder ?? runtimeGlobal.__onekeyAsyncStorageWriteForwarder;
19
+ }
20
+ function shouldForwardWriteToBackground() {
21
+ return getShouldForwardWriteGetter()?.() ?? false;
22
+ }
23
+ export async function forwardAsyncStorageWriteIfNeeded(method, args) {
24
+ if (!shouldForwardWriteToBackground()) {
25
+ return false;
26
+ }
27
+ const forwarder = getWriteForwarder();
28
+ if (!forwarder) {
29
+ throw new Error('AsyncStorage write forwarder is not configured.');
30
+ }
31
+ await forwarder(method, args);
32
+ return true;
33
+ }
34
+ //# sourceMappingURL=runtimeConfig.js.map
@@ -1,5 +1,7 @@
1
1
  import type { AsyncStorageStatic } from './types';
2
2
  declare const AsyncStorage: AsyncStorageStatic;
3
3
  export default AsyncStorage;
4
+ export type { AsyncStorageShouldForwardWriteGetter, AsyncStorageWriteArgs, AsyncStorageWriteArgsByMethod, AsyncStorageWriteForwarder, AsyncStorageWriteMethod, } from './runtimeConfig';
4
5
  export type { AsyncStorageStatic, Callback, CallbackWithResult, KeyValuePair, MultiCallback, MultiGetCallback, } from './types';
6
+ export { setAsyncStorageShouldForwardWriteGetter, setAsyncStorageWriteForwarder, } from './runtimeConfig';
5
7
  //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,14 @@
1
+ export type AsyncStorageWriteArgsByMethod = {
2
+ clear: [];
3
+ multiSet: [[string, string][]];
4
+ multiRemove: [string[]];
5
+ multiMerge: [[string, string][]];
6
+ };
7
+ export type AsyncStorageWriteMethod = keyof AsyncStorageWriteArgsByMethod;
8
+ export type AsyncStorageWriteArgs<T extends AsyncStorageWriteMethod = AsyncStorageWriteMethod> = AsyncStorageWriteArgsByMethod[T];
9
+ export type AsyncStorageShouldForwardWriteGetter = () => boolean;
10
+ export type AsyncStorageWriteForwarder = <T extends AsyncStorageWriteMethod>(method: T, args: AsyncStorageWriteArgs<T>) => Promise<void>;
11
+ export declare function setAsyncStorageShouldForwardWriteGetter(getter: AsyncStorageShouldForwardWriteGetter): void;
12
+ export declare function setAsyncStorageWriteForwarder(forwarder: AsyncStorageWriteForwarder): void;
13
+ export declare function forwardAsyncStorageWriteIfNeeded<T extends AsyncStorageWriteMethod>(method: T, args: AsyncStorageWriteArgs<T>): Promise<boolean>;
14
+ //# sourceMappingURL=runtimeConfig.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@onekeyfe/react-native-async-storage",
3
- "version": "3.0.74",
3
+ "version": "3.0.76",
4
4
  "description": "react-native-async-storage",
5
5
  "main": "./lib/module/index.js",
6
6
  "types": "./lib/typescript/src/index.d.ts",
package/src/index.tsx CHANGED
@@ -1,4 +1,5 @@
1
1
  import NativeModule from './NativeAsyncStorage';
2
+ import { forwardAsyncStorageWriteIfNeeded } from './runtimeConfig';
2
3
  import type { AsyncStorageStatic } from './types';
3
4
 
4
5
  function createAsyncStorage(): AsyncStorageStatic {
@@ -21,7 +22,11 @@ function createAsyncStorage(): AsyncStorageStatic {
21
22
  callback
22
23
  ) => {
23
24
  try {
24
- await NativeModule.multiSet([[key, value]]);
25
+ if (
26
+ !(await forwardAsyncStorageWriteIfNeeded('multiSet', [[[key, value]]]))
27
+ ) {
28
+ await NativeModule.multiSet([[key, value]]);
29
+ }
25
30
  callback?.(null);
26
31
  } catch (e) {
27
32
  const error = e instanceof Error ? e : new Error(String(e));
@@ -35,7 +40,9 @@ function createAsyncStorage(): AsyncStorageStatic {
35
40
  callback
36
41
  ) => {
37
42
  try {
38
- await NativeModule.multiRemove([key]);
43
+ if (!(await forwardAsyncStorageWriteIfNeeded('multiRemove', [[key]]))) {
44
+ await NativeModule.multiRemove([key]);
45
+ }
39
46
  callback?.(null);
40
47
  } catch (e) {
41
48
  const error = e instanceof Error ? e : new Error(String(e));
@@ -50,7 +57,13 @@ function createAsyncStorage(): AsyncStorageStatic {
50
57
  callback
51
58
  ) => {
52
59
  try {
53
- await NativeModule.multiMerge([[key, value]]);
60
+ if (
61
+ !(await forwardAsyncStorageWriteIfNeeded('multiMerge', [
62
+ [[key, value]],
63
+ ]))
64
+ ) {
65
+ await NativeModule.multiMerge([[key, value]]);
66
+ }
54
67
  callback?.(null);
55
68
  } catch (e) {
56
69
  const error = e instanceof Error ? e : new Error(String(e));
@@ -61,7 +74,9 @@ function createAsyncStorage(): AsyncStorageStatic {
61
74
 
62
75
  const clear: AsyncStorageStatic['clear'] = async (callback) => {
63
76
  try {
64
- await NativeModule.clear();
77
+ if (!(await forwardAsyncStorageWriteIfNeeded('clear', []))) {
78
+ await NativeModule.clear();
79
+ }
65
80
  callback?.(null);
66
81
  } catch (e) {
67
82
  const error = e instanceof Error ? e : new Error(String(e));
@@ -106,7 +121,11 @@ function createAsyncStorage(): AsyncStorageStatic {
106
121
  const mutablePairs = keyValuePairs.map(
107
122
  ([k, v]) => [k, v] as [string, string]
108
123
  );
109
- await NativeModule.multiSet(mutablePairs);
124
+ if (
125
+ !(await forwardAsyncStorageWriteIfNeeded('multiSet', [mutablePairs]))
126
+ ) {
127
+ await NativeModule.multiSet(mutablePairs);
128
+ }
110
129
  callback?.(null);
111
130
  } catch (e) {
112
131
  const error = e instanceof Error ? e : new Error(String(e));
@@ -120,7 +139,12 @@ function createAsyncStorage(): AsyncStorageStatic {
120
139
  callback
121
140
  ) => {
122
141
  try {
123
- await NativeModule.multiRemove([...keys]);
142
+ const mutableKeys = [...keys];
143
+ if (
144
+ !(await forwardAsyncStorageWriteIfNeeded('multiRemove', [mutableKeys]))
145
+ ) {
146
+ await NativeModule.multiRemove(mutableKeys);
147
+ }
124
148
  callback?.(null);
125
149
  } catch (e) {
126
150
  const error = e instanceof Error ? e : new Error(String(e));
@@ -134,7 +158,11 @@ function createAsyncStorage(): AsyncStorageStatic {
134
158
  callback
135
159
  ) => {
136
160
  try {
137
- await NativeModule.multiMerge(keyValuePairs);
161
+ if (
162
+ !(await forwardAsyncStorageWriteIfNeeded('multiMerge', [keyValuePairs]))
163
+ ) {
164
+ await NativeModule.multiMerge(keyValuePairs);
165
+ }
138
166
  callback?.(null);
139
167
  } catch (e) {
140
168
  const error = e instanceof Error ? e : new Error(String(e));
@@ -162,6 +190,13 @@ const AsyncStorage = createAsyncStorage();
162
190
 
163
191
  export default AsyncStorage;
164
192
 
193
+ export type {
194
+ AsyncStorageShouldForwardWriteGetter,
195
+ AsyncStorageWriteArgs,
196
+ AsyncStorageWriteArgsByMethod,
197
+ AsyncStorageWriteForwarder,
198
+ AsyncStorageWriteMethod,
199
+ } from './runtimeConfig';
165
200
  export type {
166
201
  AsyncStorageStatic,
167
202
  Callback,
@@ -170,3 +205,7 @@ export type {
170
205
  MultiCallback,
171
206
  MultiGetCallback,
172
207
  } from './types';
208
+ export {
209
+ setAsyncStorageShouldForwardWriteGetter,
210
+ setAsyncStorageWriteForwarder,
211
+ } from './runtimeConfig';
@@ -0,0 +1,76 @@
1
+ export type AsyncStorageWriteArgsByMethod = {
2
+ clear: [];
3
+ multiSet: [[string, string][]];
4
+ multiRemove: [string[]];
5
+ multiMerge: [[string, string][]];
6
+ };
7
+
8
+ export type AsyncStorageWriteMethod = keyof AsyncStorageWriteArgsByMethod;
9
+
10
+ export type AsyncStorageWriteArgs<
11
+ T extends AsyncStorageWriteMethod = AsyncStorageWriteMethod
12
+ > = AsyncStorageWriteArgsByMethod[T];
13
+
14
+ export type AsyncStorageShouldForwardWriteGetter = () => boolean;
15
+
16
+ export type AsyncStorageWriteForwarder = <T extends AsyncStorageWriteMethod>(
17
+ method: T,
18
+ args: AsyncStorageWriteArgs<T>
19
+ ) => Promise<void>;
20
+
21
+ type AsyncStorageRuntimeGlobal = typeof globalThis & {
22
+ __onekeyAsyncStorageShouldForwardWriteGetter?: AsyncStorageShouldForwardWriteGetter;
23
+ __onekeyAsyncStorageWriteForwarder?: AsyncStorageWriteForwarder;
24
+ };
25
+
26
+ const runtimeGlobal = globalThis as AsyncStorageRuntimeGlobal;
27
+
28
+ let shouldForwardWriteGetter: AsyncStorageShouldForwardWriteGetter | undefined =
29
+ runtimeGlobal.__onekeyAsyncStorageShouldForwardWriteGetter;
30
+ let writeForwarder: AsyncStorageWriteForwarder | undefined =
31
+ runtimeGlobal.__onekeyAsyncStorageWriteForwarder;
32
+
33
+ export function setAsyncStorageShouldForwardWriteGetter(
34
+ getter: AsyncStorageShouldForwardWriteGetter
35
+ ) {
36
+ shouldForwardWriteGetter = getter;
37
+ runtimeGlobal.__onekeyAsyncStorageShouldForwardWriteGetter = getter;
38
+ }
39
+
40
+ export function setAsyncStorageWriteForwarder(
41
+ forwarder: AsyncStorageWriteForwarder
42
+ ) {
43
+ writeForwarder = forwarder;
44
+ runtimeGlobal.__onekeyAsyncStorageWriteForwarder = forwarder;
45
+ }
46
+
47
+ function getShouldForwardWriteGetter() {
48
+ return (
49
+ shouldForwardWriteGetter ??
50
+ runtimeGlobal.__onekeyAsyncStorageShouldForwardWriteGetter
51
+ );
52
+ }
53
+
54
+ function getWriteForwarder() {
55
+ return writeForwarder ?? runtimeGlobal.__onekeyAsyncStorageWriteForwarder;
56
+ }
57
+
58
+ function shouldForwardWriteToBackground() {
59
+ return getShouldForwardWriteGetter()?.() ?? false;
60
+ }
61
+
62
+ export async function forwardAsyncStorageWriteIfNeeded<
63
+ T extends AsyncStorageWriteMethod
64
+ >(method: T, args: AsyncStorageWriteArgs<T>): Promise<boolean> {
65
+ if (!shouldForwardWriteToBackground()) {
66
+ return false;
67
+ }
68
+
69
+ const forwarder = getWriteForwarder();
70
+ if (!forwarder) {
71
+ throw new Error('AsyncStorage write forwarder is not configured.');
72
+ }
73
+
74
+ await forwarder(method, args);
75
+ return true;
76
+ }