react-native-mmkv 2.12.0 → 2.12.2
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/android/build.gradle +1 -1
- package/lib/commonjs/hooks.js +9 -7
- package/lib/commonjs/hooks.js.map +1 -1
- package/lib/module/hooks.js +9 -7
- package/lib/module/hooks.js.map +1 -1
- package/lib/typescript/hooks.d.ts +1 -1
- package/lib/typescript/hooks.d.ts.map +1 -1
- package/package.json +14 -13
- package/react-native-mmkv.podspec +5 -1
- package/src/hooks.ts +18 -13
package/android/build.gradle
CHANGED
package/lib/commonjs/hooks.js
CHANGED
|
@@ -40,7 +40,14 @@ function useMMKV(configuration) {
|
|
|
40
40
|
function createMMKVHook(getter) {
|
|
41
41
|
return (key, instance) => {
|
|
42
42
|
const mmkv = instance ?? getDefaultInstance();
|
|
43
|
-
const [
|
|
43
|
+
const [bump, setBump] = (0, _react.useState)(0);
|
|
44
|
+
const value = (0, _react.useMemo)(() => {
|
|
45
|
+
// bump is here as an additional outside dependency, so this useMemo
|
|
46
|
+
// re-computes the value each time bump changes, effectively acting as a hint
|
|
47
|
+
// that the outside value (storage) has changed. setting bump refreshes this value.
|
|
48
|
+
bump;
|
|
49
|
+
return getter(mmkv, key);
|
|
50
|
+
}, [mmkv, key, bump]);
|
|
44
51
|
|
|
45
52
|
// update value by user set
|
|
46
53
|
const set = (0, _react.useCallback)(v => {
|
|
@@ -66,16 +73,11 @@ function createMMKVHook(getter) {
|
|
|
66
73
|
}
|
|
67
74
|
}, [key, mmkv]);
|
|
68
75
|
|
|
69
|
-
// update value if key or instance changes
|
|
70
|
-
(0, _react.useEffect)(() => {
|
|
71
|
-
setValue(getter(mmkv, key));
|
|
72
|
-
}, [key, mmkv]);
|
|
73
|
-
|
|
74
76
|
// update value if it changes somewhere else (second hook, same key)
|
|
75
77
|
(0, _react.useEffect)(() => {
|
|
76
78
|
const listener = mmkv.addOnValueChangedListener(changedKey => {
|
|
77
79
|
if (changedKey === key) {
|
|
78
|
-
|
|
80
|
+
setBump(b => b + 1);
|
|
79
81
|
}
|
|
80
82
|
});
|
|
81
83
|
return () => listener.remove();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["isConfigurationEqual","left","right","encryptionKey","id","path","defaultInstance","getDefaultInstance","MMKV","useMMKV","configuration","instance","useRef","lastConfiguration","current","createMMKVHook","getter","key","mmkv","
|
|
1
|
+
{"version":3,"names":["isConfigurationEqual","left","right","encryptionKey","id","path","defaultInstance","getDefaultInstance","MMKV","useMMKV","configuration","instance","useRef","lastConfiguration","current","createMMKVHook","getter","key","mmkv","bump","setBump","useState","value","useMemo","set","useCallback","v","newValue","delete","Uint8Array","Error","useEffect","listener","addOnValueChangedListener","changedKey","b","remove","useMMKVString","getString","useMMKVNumber","getNumber","useMMKVBoolean","getBoolean","useMMKVBuffer","getBuffer","useMMKVObject","json","setJson","undefined","JSON","parse","setValue","Function","currentJson","currentValue","stringify","useMMKVListener","valueChangedListener","ref"],"sourceRoot":"../../src","sources":["hooks.ts"],"mappings":"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"}
|
package/lib/module/hooks.js
CHANGED
|
@@ -29,7 +29,14 @@ export function useMMKV(configuration) {
|
|
|
29
29
|
function createMMKVHook(getter) {
|
|
30
30
|
return (key, instance) => {
|
|
31
31
|
const mmkv = instance ?? getDefaultInstance();
|
|
32
|
-
const [
|
|
32
|
+
const [bump, setBump] = useState(0);
|
|
33
|
+
const value = useMemo(() => {
|
|
34
|
+
// bump is here as an additional outside dependency, so this useMemo
|
|
35
|
+
// re-computes the value each time bump changes, effectively acting as a hint
|
|
36
|
+
// that the outside value (storage) has changed. setting bump refreshes this value.
|
|
37
|
+
bump;
|
|
38
|
+
return getter(mmkv, key);
|
|
39
|
+
}, [mmkv, key, bump]);
|
|
33
40
|
|
|
34
41
|
// update value by user set
|
|
35
42
|
const set = useCallback(v => {
|
|
@@ -55,16 +62,11 @@ function createMMKVHook(getter) {
|
|
|
55
62
|
}
|
|
56
63
|
}, [key, mmkv]);
|
|
57
64
|
|
|
58
|
-
// update value if key or instance changes
|
|
59
|
-
useEffect(() => {
|
|
60
|
-
setValue(getter(mmkv, key));
|
|
61
|
-
}, [key, mmkv]);
|
|
62
|
-
|
|
63
65
|
// update value if it changes somewhere else (second hook, same key)
|
|
64
66
|
useEffect(() => {
|
|
65
67
|
const listener = mmkv.addOnValueChangedListener(changedKey => {
|
|
66
68
|
if (changedKey === key) {
|
|
67
|
-
|
|
69
|
+
setBump(b => b + 1);
|
|
68
70
|
}
|
|
69
71
|
});
|
|
70
72
|
return () => listener.remove();
|
package/lib/module/hooks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useRef","useState","useMemo","useCallback","useEffect","MMKV","isConfigurationEqual","left","right","encryptionKey","id","path","defaultInstance","getDefaultInstance","useMMKV","configuration","instance","lastConfiguration","current","createMMKVHook","getter","key","mmkv","
|
|
1
|
+
{"version":3,"names":["useRef","useState","useMemo","useCallback","useEffect","MMKV","isConfigurationEqual","left","right","encryptionKey","id","path","defaultInstance","getDefaultInstance","useMMKV","configuration","instance","lastConfiguration","current","createMMKVHook","getter","key","mmkv","bump","setBump","value","set","v","newValue","delete","Uint8Array","Error","listener","addOnValueChangedListener","changedKey","b","remove","useMMKVString","getString","useMMKVNumber","getNumber","useMMKVBoolean","getBoolean","useMMKVBuffer","getBuffer","useMMKVObject","json","setJson","undefined","JSON","parse","setValue","Function","currentJson","currentValue","stringify","useMMKVListener","valueChangedListener","ref"],"sourceRoot":"../../src","sources":["hooks.ts"],"mappings":"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"}
|
|
@@ -64,7 +64,7 @@ export declare const useMMKVBuffer: (key: string, instance?: MMKV) => [value: Ui
|
|
|
64
64
|
* const [user, setUser] = useMMKVObject<User>("user")
|
|
65
65
|
* ```
|
|
66
66
|
*/
|
|
67
|
-
export declare function useMMKVObject<T>(key: string, instance?: MMKV): [value: T | undefined, setValue: (value: T | undefined) => void];
|
|
67
|
+
export declare function useMMKVObject<T>(key: string, instance?: MMKV): [value: T | undefined, setValue: (value: T | undefined | ((prevValue: T | undefined) => T | undefined)) => void];
|
|
68
68
|
/**
|
|
69
69
|
* Listen for changes in the given MMKV storage instance.
|
|
70
70
|
* If no instance is passed, the default instance will be used.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/hooks.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAuBjD;;GAEG;AACH,wBAAgB,OAAO,IAAI,IAAI,CAAC;AAChC;;;GAGG;AACH,wBAAgB,OAAO,CAAC,aAAa,EAAE,iBAAiB,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/hooks.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAuBjD;;GAEG;AACH,wBAAgB,OAAO,IAAI,IAAI,CAAC;AAChC;;;GAGG;AACH,wBAAgB,OAAO,CAAC,aAAa,EAAE,iBAAiB,GAAG,IAAI,CAAC;AAiFhE;;;;;;;;;GASG;AACH,eAAO,MAAM,aAAa,QAnEjB,MAAM,aACA,IAAI,kIAC8B,IAAI,CAmEpD,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,aAAa,QAjFjB,MAAM,aACA,IAAI,kIAC8B,IAAI,CAiFpD,CAAC;AACF;;;;;;;;;GASG;AACH,eAAO,MAAM,cAAc,QA9FlB,MAAM,aACA,IAAI,sIAC8B,IAAI,CA8FpD,CAAC;AACF;;;;;;;;;GASG;AACH,eAAO,MAAM,aAAa,QA3GjB,MAAM,aACA,IAAI,kJAC8B,IAAI,CA2GpD,CAAC;AACF;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAC7B,GAAG,EAAE,MAAM,EACX,QAAQ,CAAC,EAAE,IAAI,GACd,CAAC,KAAK,EAAE,CAAC,GAAG,SAAS,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,SAAS,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,GAAG,SAAS,KAAK,CAAC,GAAG,SAAS,CAAC,KAAK,IAAI,CAAC,CA4BlH;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAC7B,oBAAoB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,EAC3C,QAAQ,CAAC,EAAE,IAAI,GACd,IAAI,CAYN"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-mmkv",
|
|
3
|
-
"version": "2.12.
|
|
3
|
+
"version": "2.12.2",
|
|
4
4
|
"description": "The fastest key/value storage for React Native. ~30x faster than AsyncStorage! Works on Android, iOS and Web.",
|
|
5
5
|
"main": "lib/commonjs/index",
|
|
6
6
|
"module": "lib/module/index",
|
|
@@ -61,25 +61,26 @@
|
|
|
61
61
|
"@jamesacarr/eslint-formatter-github-actions": "^0.2.0",
|
|
62
62
|
"@react-native-community/eslint-config": "^3.2.0",
|
|
63
63
|
"@react-native-community/eslint-plugin": "^1.3.0",
|
|
64
|
-
"@release-it/conventional-changelog": "^
|
|
65
|
-
"@testing-library/react-native": "^12.3
|
|
66
|
-
"@tsconfig/react-native": "^
|
|
67
|
-
"@types/jest": "^29.5.
|
|
68
|
-
"@types/react": "^18.2.
|
|
69
|
-
"@types/react-test-renderer": "^18.0.
|
|
70
|
-
"@typescript-eslint/eslint-plugin": "^
|
|
71
|
-
"@typescript-eslint/parser": "^
|
|
72
|
-
"eslint": "^8.
|
|
73
|
-
"eslint-plugin-
|
|
64
|
+
"@release-it/conventional-changelog": "^8.0.1",
|
|
65
|
+
"@testing-library/react-native": "^12.4.3",
|
|
66
|
+
"@tsconfig/react-native": "^3.0.3",
|
|
67
|
+
"@types/jest": "^29.5.12",
|
|
68
|
+
"@types/react": "^18.2.55",
|
|
69
|
+
"@types/react-test-renderer": "^18.0.7",
|
|
70
|
+
"@typescript-eslint/eslint-plugin": "^7.0.1",
|
|
71
|
+
"@typescript-eslint/parser": "^7.0.1",
|
|
72
|
+
"eslint": "^8.56.0",
|
|
73
|
+
"eslint-plugin-ft-flow": "^3.0.4",
|
|
74
|
+
"eslint-plugin-jest": "^27.8.0",
|
|
74
75
|
"jest": "^29.7.0",
|
|
75
76
|
"metro-react-native-babel-preset": "^0.77.0",
|
|
76
|
-
"prettier": "^2.
|
|
77
|
+
"prettier": "^3.2.5",
|
|
77
78
|
"react": "^18.2.0",
|
|
78
79
|
"react-native": "^0.71.6",
|
|
79
80
|
"react-native-builder-bob": "^0.20.4",
|
|
80
81
|
"react-test-renderer": "^18.2.0",
|
|
81
82
|
"release-it": "^15.10.1",
|
|
82
|
-
"typescript": "^
|
|
83
|
+
"typescript": "^5.3.3"
|
|
83
84
|
},
|
|
84
85
|
"peerDependencies": {
|
|
85
86
|
"react": "*",
|
package/src/hooks.ts
CHANGED
|
@@ -58,7 +58,15 @@ function createMMKVHook<
|
|
|
58
58
|
instance?: MMKV
|
|
59
59
|
): [value: T, setValue: (value: TSetAction) => void] => {
|
|
60
60
|
const mmkv = instance ?? getDefaultInstance();
|
|
61
|
-
|
|
61
|
+
|
|
62
|
+
const [bump, setBump] = useState(0);
|
|
63
|
+
const value = useMemo(() => {
|
|
64
|
+
// bump is here as an additional outside dependency, so this useMemo
|
|
65
|
+
// re-computes the value each time bump changes, effectively acting as a hint
|
|
66
|
+
// that the outside value (storage) has changed. setting bump refreshes this value.
|
|
67
|
+
bump;
|
|
68
|
+
return getter(mmkv, key);
|
|
69
|
+
}, [mmkv, key, bump]);
|
|
62
70
|
|
|
63
71
|
// update value by user set
|
|
64
72
|
const set = useCallback(
|
|
@@ -89,16 +97,11 @@ function createMMKVHook<
|
|
|
89
97
|
[key, mmkv]
|
|
90
98
|
);
|
|
91
99
|
|
|
92
|
-
// update value if key or instance changes
|
|
93
|
-
useEffect(() => {
|
|
94
|
-
setValue(getter(mmkv, key));
|
|
95
|
-
}, [key, mmkv]);
|
|
96
|
-
|
|
97
100
|
// update value if it changes somewhere else (second hook, same key)
|
|
98
101
|
useEffect(() => {
|
|
99
102
|
const listener = mmkv.addOnValueChangedListener((changedKey) => {
|
|
100
103
|
if (changedKey === key) {
|
|
101
|
-
|
|
104
|
+
setBump((b) => b + 1);
|
|
102
105
|
}
|
|
103
106
|
});
|
|
104
107
|
return () => listener.remove();
|
|
@@ -176,7 +179,7 @@ export const useMMKVBuffer = createMMKVHook((instance, key) =>
|
|
|
176
179
|
export function useMMKVObject<T>(
|
|
177
180
|
key: string,
|
|
178
181
|
instance?: MMKV
|
|
179
|
-
): [value: T | undefined, setValue: (value: T | undefined) => void] {
|
|
182
|
+
): [value: T | undefined, setValue: (value: T | undefined | ((prevValue: T | undefined) => T | undefined)) => void] {
|
|
180
183
|
const [json, setJson] = useMMKVString(key, instance);
|
|
181
184
|
|
|
182
185
|
const value = useMemo(() => {
|
|
@@ -185,21 +188,23 @@ export function useMMKVObject<T>(
|
|
|
185
188
|
}, [json]);
|
|
186
189
|
|
|
187
190
|
const setValue = useCallback(
|
|
188
|
-
(v: (T | undefined) | ((prev: T | undefined) =>
|
|
191
|
+
(v: (T | undefined) | ((prev: T | undefined) => T | undefined)) => {
|
|
189
192
|
if (v instanceof Function) {
|
|
190
193
|
setJson((currentJson) => {
|
|
191
|
-
const currentValue =
|
|
194
|
+
const currentValue =
|
|
195
|
+
currentJson != null ? (JSON.parse(currentJson) as T) : undefined;
|
|
192
196
|
const newValue = v(currentValue);
|
|
193
197
|
// Store the Object as a serialized Value or clear the value
|
|
194
198
|
return newValue != null ? JSON.stringify(newValue) : undefined;
|
|
195
199
|
});
|
|
196
200
|
} else {
|
|
197
201
|
// Store the Object as a serialized Value or clear the value
|
|
198
|
-
const newValue = v != null ? JSON.stringify(v) : undefined
|
|
202
|
+
const newValue = v != null ? JSON.stringify(v) : undefined;
|
|
199
203
|
setJson(newValue);
|
|
200
204
|
}
|
|
201
|
-
|
|
202
|
-
|
|
205
|
+
},
|
|
206
|
+
[setJson]
|
|
207
|
+
);
|
|
203
208
|
|
|
204
209
|
return [value, setValue];
|
|
205
210
|
}
|