react-native-mmkv 2.11.0 → 2.12.1
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/MMKV/Core/CodedInputData.cpp +28 -4
- package/MMKV/Core/CodedInputData.h +5 -1
- package/MMKV/Core/CodedOutputData.cpp +12 -0
- package/MMKV/Core/CodedOutputData.h +6 -0
- package/MMKV/Core/MMBuffer.cpp +7 -0
- package/MMKV/Core/MMBuffer.h +3 -0
- package/MMKV/Core/MMKV.cpp +114 -19
- package/MMKV/Core/MMKV.h +69 -33
- package/MMKV/Core/MMKVPredef.h +1 -1
- package/MMKV/Core/MMKV_Android.cpp +10 -8
- package/MMKV/Core/MMKV_IO.cpp +386 -60
- package/MMKV/Core/MMKV_OSX.cpp +51 -30
- package/MMKV/Core/MMKV_OSX.h +10 -4
- package/MMKV/Core/MemoryFile.cpp +31 -11
- package/MMKV/Core/MemoryFile.h +8 -3
- package/MMKV/Core/MemoryFile_Android.cpp +2 -2
- package/MMKV/Core/MemoryFile_OSX.cpp +2 -3
- package/MMKV/Core/MemoryFile_Win32.cpp +8 -5
- package/MMKV/Core/MiniPBCoder.cpp +11 -0
- package/MMKV/Core/MiniPBCoder.h +3 -0
- package/MMKV/Core/MiniPBCoder_OSX.cpp +8 -0
- package/MMKV/Core/ThreadLock.cpp +5 -0
- package/MMKV/Core/ThreadLock.h +4 -0
- package/MMKV/Core/aes/openssl/openssl_aes-armv4.S +8 -0
- package/MMKV/Core/core.vcxproj +3 -3
- package/MMKV/README.md +3 -3
- package/android/build.gradle +16 -3
- package/android/src/hasNamespace/AndroidManifest.xml +3 -0
- package/android/src/main/cpp/cpp-adapter.cpp +7 -1
- package/ios/MmkvModule.mm +8 -2
- package/lib/commonjs/createMMKV.web.js +1 -1
- package/lib/commonjs/createMMKV.web.js.map +1 -1
- package/lib/commonjs/hooks.js +24 -17
- package/lib/commonjs/hooks.js.map +1 -1
- package/lib/module/createMMKV.web.js +1 -1
- package/lib/module/createMMKV.web.js.map +1 -1
- package/lib/module/hooks.js +24 -17
- package/lib/module/hooks.js.map +1 -1
- package/lib/typescript/createMMKV.web.d.ts.map +1 -1
- package/lib/typescript/hooks.d.ts.map +1 -1
- package/package.json +14 -13
- package/react-native-mmkv.podspec +1 -1
- package/src/createMMKV.web.ts +4 -2
- package/src/hooks.ts +28 -18
- package/MMKV/LICENSE.TXT +0 -193
package/ios/MmkvModule.mm
CHANGED
|
@@ -43,17 +43,23 @@ RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(install : (nullable NSString*)storageDire
|
|
|
43
43
|
return @false;
|
|
44
44
|
}
|
|
45
45
|
auto& runtime = *jsiRuntime;
|
|
46
|
+
|
|
47
|
+
#if DEBUG
|
|
48
|
+
MMKVLogLevel logLevel = MMKVLogDebug;
|
|
49
|
+
#else
|
|
50
|
+
MMKVLogLevel logLevel = MMKVLogError;
|
|
51
|
+
#endif
|
|
46
52
|
|
|
47
53
|
RCTUnsafeExecuteOnMainQueueSync(^{
|
|
48
54
|
// Get appGroup value from info.plist using key "AppGroup"
|
|
49
55
|
NSString* appGroup = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"AppGroup"];
|
|
50
56
|
if (appGroup == nil) {
|
|
51
|
-
[MMKV initializeMMKV:storageDirectory];
|
|
57
|
+
[MMKV initializeMMKV:storageDirectory logLevel:logLevel];
|
|
52
58
|
} else {
|
|
53
59
|
NSString* groupDir = [[NSFileManager defaultManager]
|
|
54
60
|
containerURLForSecurityApplicationGroupIdentifier:appGroup]
|
|
55
61
|
.path;
|
|
56
|
-
[MMKV initializeMMKV:nil groupDir:groupDir logLevel:
|
|
62
|
+
[MMKV initializeMMKV:nil groupDir:groupDir logLevel:logLevel];
|
|
57
63
|
}
|
|
58
64
|
});
|
|
59
65
|
|
|
@@ -93,7 +93,7 @@ const createMMKV = config => {
|
|
|
93
93
|
},
|
|
94
94
|
getAllKeys: () => {
|
|
95
95
|
const keys = Object.keys(storage());
|
|
96
|
-
return keys.filter(key => key.startsWith(keyPrefix));
|
|
96
|
+
return keys.filter(key => key.startsWith(keyPrefix)).map(key => key.slice(keyPrefix.length));
|
|
97
97
|
},
|
|
98
98
|
contains: key => storage().getItem(prefixedKey(key)) != null,
|
|
99
99
|
recrypt: () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["canUseDOM","window","document","createElement","hasAccessToLocalStorage","localStorage","KEY_WILDCARD","inMemoryStorage","Map","createMMKV","config","encryptionKey","Error","path","console","warn","storage","getItem","key","get","setItem","value","set","removeItem","delete","clear","length","size","index","Object","keys","at","domStorage","global","textEncoder","createTextEncoder","id","includes","keyPrefix","prefixedKey","clearAll","startsWith","toString","getString","undefined","getNumber","Number","getBoolean","getBuffer","encode","getAllKeys","filter","contains","recrypt"],"sourceRoot":"../../src","sources":["createMMKV.web.ts"],"mappings":"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
|
|
1
|
+
{"version":3,"names":["canUseDOM","window","document","createElement","hasAccessToLocalStorage","localStorage","KEY_WILDCARD","inMemoryStorage","Map","createMMKV","config","encryptionKey","Error","path","console","warn","storage","getItem","key","get","setItem","value","set","removeItem","delete","clear","length","size","index","Object","keys","at","domStorage","global","textEncoder","createTextEncoder","id","includes","keyPrefix","prefixedKey","clearAll","startsWith","toString","getString","undefined","getNumber","Number","getBoolean","getBuffer","encode","getAllKeys","filter","map","slice","contains","recrypt"],"sourceRoot":"../../src","sources":["createMMKV.web.ts"],"mappings":"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"}
|
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();
|
|
@@ -146,20 +148,25 @@ const useMMKVBuffer = createMMKVHook((instance, key) => instance.getBuffer(key))
|
|
|
146
148
|
*/
|
|
147
149
|
exports.useMMKVBuffer = useMMKVBuffer;
|
|
148
150
|
function useMMKVObject(key, instance) {
|
|
149
|
-
const [
|
|
151
|
+
const [json, setJson] = useMMKVString(key, instance);
|
|
150
152
|
const value = (0, _react.useMemo)(() => {
|
|
151
|
-
if (
|
|
152
|
-
return JSON.parse(
|
|
153
|
-
}, [
|
|
153
|
+
if (json == null) return undefined;
|
|
154
|
+
return JSON.parse(json);
|
|
155
|
+
}, [json]);
|
|
154
156
|
const setValue = (0, _react.useCallback)(v => {
|
|
155
|
-
if (v
|
|
156
|
-
|
|
157
|
-
|
|
157
|
+
if (v instanceof Function) {
|
|
158
|
+
setJson(currentJson => {
|
|
159
|
+
const currentValue = currentJson != null ? JSON.parse(currentJson) : undefined;
|
|
160
|
+
const newValue = v(currentValue);
|
|
161
|
+
// Store the Object as a serialized Value or clear the value
|
|
162
|
+
return newValue != null ? JSON.stringify(newValue) : undefined;
|
|
163
|
+
});
|
|
158
164
|
} else {
|
|
159
|
-
// Store the Object as a serialized Value
|
|
160
|
-
|
|
165
|
+
// Store the Object as a serialized Value or clear the value
|
|
166
|
+
const newValue = v != null ? JSON.stringify(v) : undefined;
|
|
167
|
+
setJson(newValue);
|
|
161
168
|
}
|
|
162
|
-
}, [
|
|
169
|
+
}, [setJson]);
|
|
163
170
|
return [value, setValue];
|
|
164
171
|
}
|
|
165
172
|
|
|
@@ -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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"}
|
|
@@ -89,7 +89,7 @@ export const createMMKV = config => {
|
|
|
89
89
|
},
|
|
90
90
|
getAllKeys: () => {
|
|
91
91
|
const keys = Object.keys(storage());
|
|
92
|
-
return keys.filter(key => key.startsWith(keyPrefix));
|
|
92
|
+
return keys.filter(key => key.startsWith(keyPrefix)).map(key => key.slice(keyPrefix.length));
|
|
93
93
|
},
|
|
94
94
|
contains: key => storage().getItem(prefixedKey(key)) != null,
|
|
95
95
|
recrypt: () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createTextEncoder","canUseDOM","window","document","createElement","hasAccessToLocalStorage","localStorage","KEY_WILDCARD","inMemoryStorage","Map","createMMKV","config","encryptionKey","Error","path","console","warn","storage","getItem","key","get","setItem","value","set","removeItem","delete","clear","length","size","index","Object","keys","at","domStorage","global","textEncoder","id","includes","keyPrefix","prefixedKey","clearAll","startsWith","toString","getString","undefined","getNumber","Number","getBoolean","getBuffer","encode","getAllKeys","filter","contains","recrypt"],"sourceRoot":"../../src","sources":["createMMKV.web.ts"],"mappings":"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
|
|
1
|
+
{"version":3,"names":["createTextEncoder","canUseDOM","window","document","createElement","hasAccessToLocalStorage","localStorage","KEY_WILDCARD","inMemoryStorage","Map","createMMKV","config","encryptionKey","Error","path","console","warn","storage","getItem","key","get","setItem","value","set","removeItem","delete","clear","length","size","index","Object","keys","at","domStorage","global","textEncoder","id","includes","keyPrefix","prefixedKey","clearAll","startsWith","toString","getString","undefined","getNumber","Number","getBoolean","getBuffer","encode","getAllKeys","filter","map","slice","contains","recrypt"],"sourceRoot":"../../src","sources":["createMMKV.web.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();
|
|
@@ -131,20 +133,25 @@ export const useMMKVBuffer = createMMKVHook((instance, key) => instance.getBuffe
|
|
|
131
133
|
* ```
|
|
132
134
|
*/
|
|
133
135
|
export function useMMKVObject(key, instance) {
|
|
134
|
-
const [
|
|
136
|
+
const [json, setJson] = useMMKVString(key, instance);
|
|
135
137
|
const value = useMemo(() => {
|
|
136
|
-
if (
|
|
137
|
-
return JSON.parse(
|
|
138
|
-
}, [
|
|
138
|
+
if (json == null) return undefined;
|
|
139
|
+
return JSON.parse(json);
|
|
140
|
+
}, [json]);
|
|
139
141
|
const setValue = useCallback(v => {
|
|
140
|
-
if (v
|
|
141
|
-
|
|
142
|
-
|
|
142
|
+
if (v instanceof Function) {
|
|
143
|
+
setJson(currentJson => {
|
|
144
|
+
const currentValue = currentJson != null ? JSON.parse(currentJson) : undefined;
|
|
145
|
+
const newValue = v(currentValue);
|
|
146
|
+
// Store the Object as a serialized Value or clear the value
|
|
147
|
+
return newValue != null ? JSON.stringify(newValue) : undefined;
|
|
148
|
+
});
|
|
143
149
|
} else {
|
|
144
|
-
// Store the Object as a serialized Value
|
|
145
|
-
|
|
150
|
+
// Store the Object as a serialized Value or clear the value
|
|
151
|
+
const newValue = v != null ? JSON.stringify(v) : undefined;
|
|
152
|
+
setJson(newValue);
|
|
146
153
|
}
|
|
147
|
-
}, [
|
|
154
|
+
}, [setJson]);
|
|
148
155
|
return [value, setValue];
|
|
149
156
|
}
|
|
150
157
|
|
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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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createMMKV.web.d.ts","sourceRoot":"","sources":["../../src/createMMKV.web.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAoBvE,eAAO,MAAM,UAAU,WAAY,iBAAiB,KAAG,
|
|
1
|
+
{"version":3,"file":"createMMKV.web.d.ts","sourceRoot":"","sources":["../../src/createMMKV.web.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAoBvE,eAAO,MAAM,UAAU,WAAY,iBAAiB,KAAG,UAoGtD,CAAC"}
|
|
@@ -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,KAAK,IAAI,CAAC,CA4BlE;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.
|
|
3
|
+
"version": "2.12.1",
|
|
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/createMMKV.web.ts
CHANGED
|
@@ -26,7 +26,7 @@ export const createMMKV = (config: MMKVConfiguration): NativeMMKV => {
|
|
|
26
26
|
if (config.path != null) {
|
|
27
27
|
throw new Error("MMKV: 'path' is not supported on Web!");
|
|
28
28
|
}
|
|
29
|
-
|
|
29
|
+
|
|
30
30
|
// canUseDOM check prevents spam in Node server environments, such as Next.js server side props.
|
|
31
31
|
if (!hasAccessToLocalStorage() && canUseDOM) {
|
|
32
32
|
console.warn(
|
|
@@ -110,7 +110,9 @@ export const createMMKV = (config: MMKVConfiguration): NativeMMKV => {
|
|
|
110
110
|
},
|
|
111
111
|
getAllKeys: () => {
|
|
112
112
|
const keys = Object.keys(storage());
|
|
113
|
-
return keys
|
|
113
|
+
return keys
|
|
114
|
+
.filter((key) => key.startsWith(keyPrefix))
|
|
115
|
+
.map((key) => key.slice(keyPrefix.length));
|
|
114
116
|
},
|
|
115
117
|
contains: (key) => storage().getItem(prefixedKey(key)) != null,
|
|
116
118
|
recrypt: () => {
|
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();
|
|
@@ -177,23 +180,30 @@ export function useMMKVObject<T>(
|
|
|
177
180
|
key: string,
|
|
178
181
|
instance?: MMKV
|
|
179
182
|
): [value: T | undefined, setValue: (value: T | undefined) => void] {
|
|
180
|
-
const [
|
|
183
|
+
const [json, setJson] = useMMKVString(key, instance);
|
|
181
184
|
|
|
182
185
|
const value = useMemo(() => {
|
|
183
|
-
if (
|
|
184
|
-
return JSON.parse(
|
|
185
|
-
}, [
|
|
186
|
+
if (json == null) return undefined;
|
|
187
|
+
return JSON.parse(json) as T;
|
|
188
|
+
}, [json]);
|
|
189
|
+
|
|
186
190
|
const setValue = useCallback(
|
|
187
|
-
(v: T | undefined) => {
|
|
188
|
-
if (v
|
|
189
|
-
|
|
190
|
-
|
|
191
|
+
(v: (T | undefined) | ((prev: T | undefined) => T | undefined)) => {
|
|
192
|
+
if (v instanceof Function) {
|
|
193
|
+
setJson((currentJson) => {
|
|
194
|
+
const currentValue =
|
|
195
|
+
currentJson != null ? (JSON.parse(currentJson) as T) : undefined;
|
|
196
|
+
const newValue = v(currentValue);
|
|
197
|
+
// Store the Object as a serialized Value or clear the value
|
|
198
|
+
return newValue != null ? JSON.stringify(newValue) : undefined;
|
|
199
|
+
});
|
|
191
200
|
} else {
|
|
192
|
-
// Store the Object as a serialized Value
|
|
193
|
-
|
|
201
|
+
// Store the Object as a serialized Value or clear the value
|
|
202
|
+
const newValue = v != null ? JSON.stringify(v) : undefined;
|
|
203
|
+
setJson(newValue);
|
|
194
204
|
}
|
|
195
205
|
},
|
|
196
|
-
[
|
|
206
|
+
[setJson]
|
|
197
207
|
);
|
|
198
208
|
|
|
199
209
|
return [value, setValue];
|