react-native-mmkv 3.0.0-beta.4 → 3.0.0-beta.6
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 +3 -0
- package/android/src/main/cpp/AndroidLogger.cpp +3 -3
- package/cpp/MmkvHostObject.cpp +38 -50
- package/cpp/{Logger.h → MmkvLogger.h} +3 -3
- package/cpp/NativeMmkvModule.cpp +2 -2
- package/ios/AppleLogger.mm +3 -3
- package/lib/commonjs/MMKV.js +0 -13
- package/lib/commonjs/MMKV.js.map +1 -1
- package/lib/commonjs/ModuleNotFoundError.js +75 -0
- package/lib/commonjs/ModuleNotFoundError.js.map +1 -0
- package/lib/commonjs/NativeMmkv.js +21 -14
- package/lib/commonjs/NativeMmkv.js.map +1 -1
- package/lib/commonjs/NativeMmkvPlatformContext.js +14 -5
- package/lib/commonjs/NativeMmkvPlatformContext.js.map +1 -1
- package/lib/commonjs/createMMKV.js +2 -1
- package/lib/commonjs/createMMKV.js.map +1 -1
- package/lib/commonjs/hooks.js.map +1 -1
- package/lib/module/MMKV.js +0 -1
- package/lib/module/MMKV.js.map +1 -1
- package/lib/module/ModuleNotFoundError.js +68 -0
- package/lib/module/ModuleNotFoundError.js.map +1 -0
- package/lib/module/NativeMmkv.js +20 -14
- package/lib/module/NativeMmkv.js.map +1 -1
- package/lib/module/NativeMmkvPlatformContext.js +13 -4
- package/lib/module/NativeMmkvPlatformContext.js.map +1 -1
- package/lib/module/createMMKV.js +3 -2
- package/lib/module/createMMKV.js.map +1 -1
- package/lib/module/hooks.js.map +1 -1
- package/lib/typescript/src/MMKV.d.ts +3 -3
- package/lib/typescript/src/MMKV.d.ts.map +1 -1
- package/lib/typescript/src/ModuleNotFoundError.d.ts +7 -0
- package/lib/typescript/src/ModuleNotFoundError.d.ts.map +1 -0
- package/lib/typescript/src/NativeMmkv.d.ts +3 -3
- package/lib/typescript/src/NativeMmkv.d.ts.map +1 -1
- package/lib/typescript/src/NativeMmkvPlatformContext.d.ts +2 -2
- package/lib/typescript/src/NativeMmkvPlatformContext.d.ts.map +1 -1
- package/lib/typescript/src/createMMKV.d.ts.map +1 -1
- package/lib/typescript/src/hooks.d.ts +2 -1
- package/lib/typescript/src/hooks.d.ts.map +1 -1
- package/package.json +5 -22
- package/react-native-mmkv.podspec +3 -0
- package/src/MMKV.ts +3 -3
- package/src/ModuleNotFoundError.ts +95 -0
- package/src/NativeMmkv.ts +21 -17
- package/src/NativeMmkvPlatformContext.ts +16 -5
- package/src/createMMKV.ts +4 -2
- package/src/hooks.ts +2 -1
- package/LICENSE +0 -20
- package/MMKV/LICENSE.TXT +0 -193
- package/MMKV/README.md +0 -354
- package/README.md +0 -282
- package/lib/commonjs/LazyTurboModule.js +0 -66
- package/lib/commonjs/LazyTurboModule.js.map +0 -1
- package/lib/module/LazyTurboModule.js +0 -60
- package/lib/module/LazyTurboModule.js.map +0 -1
- package/lib/typescript/src/LazyTurboModule.d.ts +0 -9
- package/lib/typescript/src/LazyTurboModule.d.ts.map +0 -1
- package/src/LazyTurboModule.ts +0 -98
package/android/build.gradle
CHANGED
|
@@ -36,6 +36,9 @@ def supportsNamespace() {
|
|
|
36
36
|
return (major == 7 && minor >= 3) || major >= 8
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
+
logger.warn("[react-native-mmkv] Thank you for using react-native-mmkv ❤️")
|
|
40
|
+
logger.warn("[react-native-mmkv] If you enjoy using react-native-mmkv, please consider sponsoring this project: https://github.com/sponsors/mrousavy")
|
|
41
|
+
|
|
39
42
|
android {
|
|
40
43
|
if (supportsNamespace()) {
|
|
41
44
|
namespace "com.mrousavy.mmkv"
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
//
|
|
2
|
-
//
|
|
2
|
+
// AndroidMmkvLogger.cpp
|
|
3
3
|
// react-native-mmkv
|
|
4
4
|
//
|
|
5
5
|
// Created by Marc Rousavy on 05.03.24.
|
|
6
6
|
//
|
|
7
7
|
|
|
8
|
-
#include "
|
|
8
|
+
#include "MmkvLogger.h"
|
|
9
9
|
#include <android/log.h>
|
|
10
10
|
|
|
11
|
-
void
|
|
11
|
+
void MmkvLogger::log(const std::string& tag, const std::string& message) {
|
|
12
12
|
#pragma clang diagnostic push
|
|
13
13
|
#pragma clang diagnostic ignored "-Wformat-security"
|
|
14
14
|
__android_log_print(ANDROID_LOG_INFO, tag.c_str(), message.c_str());
|
package/cpp/MmkvHostObject.cpp
CHANGED
|
@@ -7,20 +7,21 @@
|
|
|
7
7
|
//
|
|
8
8
|
|
|
9
9
|
#include "MmkvHostObject.h"
|
|
10
|
-
#include "Logger.h"
|
|
11
10
|
#include "MMKVManagedBuffer.h"
|
|
11
|
+
#include "MmkvLogger.h"
|
|
12
12
|
#include <MMKV.h>
|
|
13
13
|
#include <string>
|
|
14
14
|
#include <vector>
|
|
15
15
|
|
|
16
16
|
using namespace mmkv;
|
|
17
|
+
using namespace facebook;
|
|
17
18
|
|
|
18
19
|
MmkvHostObject::MmkvHostObject(const facebook::react::MMKVConfig& config) {
|
|
19
20
|
std::string path = config.path.has_value() ? config.path.value() : "";
|
|
20
21
|
std::string encryptionKey = config.encryptionKey.has_value() ? config.encryptionKey.value() : "";
|
|
21
22
|
bool hasEncryptionKey = encryptionKey.size() > 0;
|
|
22
|
-
|
|
23
|
-
|
|
23
|
+
MmkvLogger::log("RNMMKV", "Creating MMKV instance \"%s\"... (Path: %s, Encrypted: %s)",
|
|
24
|
+
config.id.c_str(), path.c_str(), hasEncryptionKey ? "true" : "false");
|
|
24
25
|
|
|
25
26
|
std::string* pathPtr = path.size() > 0 ? &path : nullptr;
|
|
26
27
|
std::string* encryptionKeyPtr = encryptionKey.size() > 0 ? &encryptionKey : nullptr;
|
|
@@ -51,7 +52,7 @@ MmkvHostObject::MmkvHostObject(const facebook::react::MMKVConfig& config) {
|
|
|
51
52
|
MmkvHostObject::~MmkvHostObject() {
|
|
52
53
|
if (instance != nullptr) {
|
|
53
54
|
std::string instanceId = instance->mmapID();
|
|
54
|
-
|
|
55
|
+
MmkvLogger::log("RNMMKV", "Destroying MMKV instance \"%s\"...", instanceId.c_str());
|
|
55
56
|
instance->sync();
|
|
56
57
|
instance->clearMemoryCache();
|
|
57
58
|
}
|
|
@@ -59,32 +60,20 @@ MmkvHostObject::~MmkvHostObject() {
|
|
|
59
60
|
}
|
|
60
61
|
|
|
61
62
|
std::vector<jsi::PropNameID> MmkvHostObject::getPropertyNames(jsi::Runtime& rt) {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
result.push_back(jsi::PropNameID::forUtf8(rt, std::string("getBoolean")));
|
|
66
|
-
result.push_back(jsi::PropNameID::forUtf8(rt, std::string("getBuffer")));
|
|
67
|
-
result.push_back(jsi::PropNameID::forUtf8(rt, std::string("getString")));
|
|
68
|
-
result.push_back(jsi::PropNameID::forUtf8(rt, std::string("getNumber")));
|
|
69
|
-
result.push_back(jsi::PropNameID::forUtf8(rt, std::string("contains")));
|
|
70
|
-
result.push_back(jsi::PropNameID::forUtf8(rt, std::string("delete")));
|
|
71
|
-
result.push_back(jsi::PropNameID::forUtf8(rt, std::string("getAllKeys")));
|
|
72
|
-
result.push_back(jsi::PropNameID::forUtf8(rt, std::string("deleteAll")));
|
|
73
|
-
result.push_back(jsi::PropNameID::forUtf8(rt, std::string("recrypt")));
|
|
74
|
-
result.push_back(jsi::PropNameID::forUtf8(rt, std::string("trim")));
|
|
75
|
-
result.push_back(jsi::PropNameID::forUtf8(rt, std::string("size")));
|
|
76
|
-
return result;
|
|
63
|
+
return jsi::PropNameID::names(rt, "set", "getBoolean", "getBuffer", "getString", "getNumber",
|
|
64
|
+
"contains", "delete", "getAllKeys", "deleteAll", "recrypt", "trim",
|
|
65
|
+
"size");
|
|
77
66
|
}
|
|
78
67
|
|
|
79
68
|
MMKVMode MmkvHostObject::getMMKVMode(const facebook::react::MMKVConfig& config) {
|
|
80
69
|
if (!config.mode.has_value()) {
|
|
81
70
|
return MMKVMode::MMKV_SINGLE_PROCESS;
|
|
82
71
|
}
|
|
83
|
-
|
|
72
|
+
react::MmkvCxxMode mode = config.mode.value();
|
|
84
73
|
switch (mode) {
|
|
85
|
-
case
|
|
74
|
+
case react::MmkvCxxMode::SINGLE_PROCESS:
|
|
86
75
|
return MMKVMode::MMKV_SINGLE_PROCESS;
|
|
87
|
-
case
|
|
76
|
+
case react::MmkvCxxMode::MULTI_PROCESS:
|
|
88
77
|
return MMKVMode::MMKV_MULTI_PROCESS;
|
|
89
78
|
default:
|
|
90
79
|
throw std::runtime_error("Invalid MMKV Mode value!");
|
|
@@ -92,13 +81,12 @@ MMKVMode MmkvHostObject::getMMKVMode(const facebook::react::MMKVConfig& config)
|
|
|
92
81
|
}
|
|
93
82
|
|
|
94
83
|
jsi::Value MmkvHostObject::get(jsi::Runtime& runtime, const jsi::PropNameID& propNameId) {
|
|
95
|
-
|
|
96
|
-
auto funcName = "MMKV." + propName;
|
|
84
|
+
std::string propName = propNameId.utf8(runtime);
|
|
97
85
|
|
|
98
86
|
if (propName == "set") {
|
|
99
87
|
// MMKV.set(key: string, value: string | number | bool | ArrayBuffer)
|
|
100
88
|
return jsi::Function::createFromHostFunction(
|
|
101
|
-
runtime, jsi::PropNameID::forAscii(runtime,
|
|
89
|
+
runtime, jsi::PropNameID::forAscii(runtime, propName),
|
|
102
90
|
2, // key, value
|
|
103
91
|
[this](jsi::Runtime& runtime, const jsi::Value& thisValue, const jsi::Value* arguments,
|
|
104
92
|
size_t count) -> jsi::Value {
|
|
@@ -108,7 +96,7 @@ jsi::Value MmkvHostObject::get(jsi::Runtime& runtime, const jsi::PropNameID& pro
|
|
|
108
96
|
"MMKV::set: First argument ('key') has to be of type string!");
|
|
109
97
|
}
|
|
110
98
|
|
|
111
|
-
|
|
99
|
+
std::string keyName = arguments[0].asString(runtime).utf8(runtime);
|
|
112
100
|
|
|
113
101
|
if (arguments[1].isBool()) {
|
|
114
102
|
// bool
|
|
@@ -118,14 +106,14 @@ jsi::Value MmkvHostObject::get(jsi::Runtime& runtime, const jsi::PropNameID& pro
|
|
|
118
106
|
instance->set(arguments[1].getNumber(), keyName);
|
|
119
107
|
} else if (arguments[1].isString()) {
|
|
120
108
|
// string
|
|
121
|
-
|
|
109
|
+
std::string stringValue = arguments[1].asString(runtime).utf8(runtime);
|
|
122
110
|
instance->set(stringValue, keyName);
|
|
123
111
|
} else if (arguments[1].isObject()) {
|
|
124
112
|
// object
|
|
125
|
-
|
|
113
|
+
jsi::Object object = arguments[1].asObject(runtime);
|
|
126
114
|
if (object.isArrayBuffer(runtime)) {
|
|
127
115
|
// ArrayBuffer
|
|
128
|
-
|
|
116
|
+
jsi::ArrayBuffer arrayBuffer = object.getArrayBuffer(runtime);
|
|
129
117
|
MMBuffer data(arrayBuffer.data(runtime), arrayBuffer.size(runtime), MMBufferNoCopy);
|
|
130
118
|
instance->set(data, keyName);
|
|
131
119
|
} else {
|
|
@@ -148,7 +136,7 @@ jsi::Value MmkvHostObject::get(jsi::Runtime& runtime, const jsi::PropNameID& pro
|
|
|
148
136
|
if (propName == "getBoolean") {
|
|
149
137
|
// MMKV.getBoolean(key: string)
|
|
150
138
|
return jsi::Function::createFromHostFunction(
|
|
151
|
-
runtime, jsi::PropNameID::forAscii(runtime,
|
|
139
|
+
runtime, jsi::PropNameID::forAscii(runtime, propName),
|
|
152
140
|
1, // key
|
|
153
141
|
[this](jsi::Runtime& runtime, const jsi::Value& thisValue, const jsi::Value* arguments,
|
|
154
142
|
size_t count) -> jsi::Value {
|
|
@@ -157,9 +145,9 @@ jsi::Value MmkvHostObject::get(jsi::Runtime& runtime, const jsi::PropNameID& pro
|
|
|
157
145
|
throw jsi::JSError(runtime, "First argument ('key') has to be of type string!");
|
|
158
146
|
}
|
|
159
147
|
|
|
160
|
-
|
|
148
|
+
std::string keyName = arguments[0].asString(runtime).utf8(runtime);
|
|
161
149
|
bool hasValue;
|
|
162
|
-
|
|
150
|
+
bool value = instance->getBool(keyName, false, &hasValue);
|
|
163
151
|
if (!hasValue) {
|
|
164
152
|
[[unlikely]];
|
|
165
153
|
return jsi::Value::undefined();
|
|
@@ -171,7 +159,7 @@ jsi::Value MmkvHostObject::get(jsi::Runtime& runtime, const jsi::PropNameID& pro
|
|
|
171
159
|
if (propName == "getNumber") {
|
|
172
160
|
// MMKV.getNumber(key: string)
|
|
173
161
|
return jsi::Function::createFromHostFunction(
|
|
174
|
-
runtime, jsi::PropNameID::forAscii(runtime,
|
|
162
|
+
runtime, jsi::PropNameID::forAscii(runtime, propName),
|
|
175
163
|
1, // key
|
|
176
164
|
[this](jsi::Runtime& runtime, const jsi::Value& thisValue, const jsi::Value* arguments,
|
|
177
165
|
size_t count) -> jsi::Value {
|
|
@@ -180,9 +168,9 @@ jsi::Value MmkvHostObject::get(jsi::Runtime& runtime, const jsi::PropNameID& pro
|
|
|
180
168
|
throw jsi::JSError(runtime, "First argument ('key') has to be of type string!");
|
|
181
169
|
}
|
|
182
170
|
|
|
183
|
-
|
|
171
|
+
std::string keyName = arguments[0].asString(runtime).utf8(runtime);
|
|
184
172
|
bool hasValue;
|
|
185
|
-
|
|
173
|
+
double value = instance->getDouble(keyName, 0.0, &hasValue);
|
|
186
174
|
if (!hasValue) {
|
|
187
175
|
[[unlikely]];
|
|
188
176
|
return jsi::Value::undefined();
|
|
@@ -194,7 +182,7 @@ jsi::Value MmkvHostObject::get(jsi::Runtime& runtime, const jsi::PropNameID& pro
|
|
|
194
182
|
if (propName == "getString") {
|
|
195
183
|
// MMKV.getString(key: string)
|
|
196
184
|
return jsi::Function::createFromHostFunction(
|
|
197
|
-
runtime, jsi::PropNameID::forAscii(runtime,
|
|
185
|
+
runtime, jsi::PropNameID::forAscii(runtime, propName),
|
|
198
186
|
1, // key
|
|
199
187
|
[this](jsi::Runtime& runtime, const jsi::Value& thisValue, const jsi::Value* arguments,
|
|
200
188
|
size_t count) -> jsi::Value {
|
|
@@ -203,7 +191,7 @@ jsi::Value MmkvHostObject::get(jsi::Runtime& runtime, const jsi::PropNameID& pro
|
|
|
203
191
|
throw jsi::JSError(runtime, "First argument ('key') has to be of type string!");
|
|
204
192
|
}
|
|
205
193
|
|
|
206
|
-
|
|
194
|
+
std::string keyName = arguments[0].asString(runtime).utf8(runtime);
|
|
207
195
|
std::string result;
|
|
208
196
|
bool hasValue = instance->getString(keyName, result);
|
|
209
197
|
if (!hasValue) {
|
|
@@ -217,7 +205,7 @@ jsi::Value MmkvHostObject::get(jsi::Runtime& runtime, const jsi::PropNameID& pro
|
|
|
217
205
|
if (propName == "getBuffer") {
|
|
218
206
|
// MMKV.getBuffer(key: string)
|
|
219
207
|
return jsi::Function::createFromHostFunction(
|
|
220
|
-
runtime, jsi::PropNameID::forAscii(runtime,
|
|
208
|
+
runtime, jsi::PropNameID::forAscii(runtime, propName),
|
|
221
209
|
1, // key
|
|
222
210
|
[this](jsi::Runtime& runtime, const jsi::Value& thisValue, const jsi::Value* arguments,
|
|
223
211
|
size_t count) -> jsi::Value {
|
|
@@ -226,7 +214,7 @@ jsi::Value MmkvHostObject::get(jsi::Runtime& runtime, const jsi::PropNameID& pro
|
|
|
226
214
|
throw jsi::JSError(runtime, "First argument ('key') has to be of type string!");
|
|
227
215
|
}
|
|
228
216
|
|
|
229
|
-
|
|
217
|
+
std::string keyName = arguments[0].asString(runtime).utf8(runtime);
|
|
230
218
|
mmkv::MMBuffer buffer;
|
|
231
219
|
bool hasValue = instance->getBytes(keyName, buffer);
|
|
232
220
|
if (!hasValue) {
|
|
@@ -241,7 +229,7 @@ jsi::Value MmkvHostObject::get(jsi::Runtime& runtime, const jsi::PropNameID& pro
|
|
|
241
229
|
if (propName == "contains") {
|
|
242
230
|
// MMKV.contains(key: string)
|
|
243
231
|
return jsi::Function::createFromHostFunction(
|
|
244
|
-
runtime, jsi::PropNameID::forAscii(runtime,
|
|
232
|
+
runtime, jsi::PropNameID::forAscii(runtime, propName),
|
|
245
233
|
1, // key
|
|
246
234
|
[this](jsi::Runtime& runtime, const jsi::Value& thisValue, const jsi::Value* arguments,
|
|
247
235
|
size_t count) -> jsi::Value {
|
|
@@ -250,7 +238,7 @@ jsi::Value MmkvHostObject::get(jsi::Runtime& runtime, const jsi::PropNameID& pro
|
|
|
250
238
|
throw jsi::JSError(runtime, "First argument ('key') has to be of type string!");
|
|
251
239
|
}
|
|
252
240
|
|
|
253
|
-
|
|
241
|
+
std::string keyName = arguments[0].asString(runtime).utf8(runtime);
|
|
254
242
|
bool containsKey = instance->containsKey(keyName);
|
|
255
243
|
return jsi::Value(containsKey);
|
|
256
244
|
});
|
|
@@ -259,7 +247,7 @@ jsi::Value MmkvHostObject::get(jsi::Runtime& runtime, const jsi::PropNameID& pro
|
|
|
259
247
|
if (propName == "delete") {
|
|
260
248
|
// MMKV.delete(key: string)
|
|
261
249
|
return jsi::Function::createFromHostFunction(
|
|
262
|
-
runtime, jsi::PropNameID::forAscii(runtime,
|
|
250
|
+
runtime, jsi::PropNameID::forAscii(runtime, propName),
|
|
263
251
|
1, // key
|
|
264
252
|
[this](jsi::Runtime& runtime, const jsi::Value& thisValue, const jsi::Value* arguments,
|
|
265
253
|
size_t count) -> jsi::Value {
|
|
@@ -268,7 +256,7 @@ jsi::Value MmkvHostObject::get(jsi::Runtime& runtime, const jsi::PropNameID& pro
|
|
|
268
256
|
throw jsi::JSError(runtime, "First argument ('key') has to be of type string!");
|
|
269
257
|
}
|
|
270
258
|
|
|
271
|
-
|
|
259
|
+
std::string keyName = arguments[0].asString(runtime).utf8(runtime);
|
|
272
260
|
instance->removeValueForKey(keyName);
|
|
273
261
|
return jsi::Value::undefined();
|
|
274
262
|
});
|
|
@@ -277,11 +265,11 @@ jsi::Value MmkvHostObject::get(jsi::Runtime& runtime, const jsi::PropNameID& pro
|
|
|
277
265
|
if (propName == "getAllKeys") {
|
|
278
266
|
// MMKV.getAllKeys()
|
|
279
267
|
return jsi::Function::createFromHostFunction(
|
|
280
|
-
runtime, jsi::PropNameID::forAscii(runtime,
|
|
268
|
+
runtime, jsi::PropNameID::forAscii(runtime, propName), 0,
|
|
281
269
|
[this](jsi::Runtime& runtime, const jsi::Value& thisValue, const jsi::Value* arguments,
|
|
282
270
|
size_t count) -> jsi::Value {
|
|
283
|
-
|
|
284
|
-
|
|
271
|
+
std::vector<std::string> keys = instance->allKeys();
|
|
272
|
+
jsi::Array array(runtime, keys.size());
|
|
285
273
|
for (int i = 0; i < keys.size(); i++) {
|
|
286
274
|
array.setValueAtIndex(runtime, i, keys[i]);
|
|
287
275
|
}
|
|
@@ -292,7 +280,7 @@ jsi::Value MmkvHostObject::get(jsi::Runtime& runtime, const jsi::PropNameID& pro
|
|
|
292
280
|
if (propName == "clearAll") {
|
|
293
281
|
// MMKV.clearAll()
|
|
294
282
|
return jsi::Function::createFromHostFunction(
|
|
295
|
-
runtime, jsi::PropNameID::forAscii(runtime,
|
|
283
|
+
runtime, jsi::PropNameID::forAscii(runtime, propName), 0,
|
|
296
284
|
[this](jsi::Runtime& runtime, const jsi::Value& thisValue, const jsi::Value* arguments,
|
|
297
285
|
size_t count) -> jsi::Value {
|
|
298
286
|
instance->clearAll();
|
|
@@ -303,7 +291,7 @@ jsi::Value MmkvHostObject::get(jsi::Runtime& runtime, const jsi::PropNameID& pro
|
|
|
303
291
|
if (propName == "recrypt") {
|
|
304
292
|
// MMKV.recrypt(encryptionKey)
|
|
305
293
|
return jsi::Function::createFromHostFunction(
|
|
306
|
-
runtime, jsi::PropNameID::forAscii(runtime,
|
|
294
|
+
runtime, jsi::PropNameID::forAscii(runtime, propName),
|
|
307
295
|
1, // encryptionKey
|
|
308
296
|
[this](jsi::Runtime& runtime, const jsi::Value& thisValue, const jsi::Value* arguments,
|
|
309
297
|
size_t count) -> jsi::Value {
|
|
@@ -318,7 +306,7 @@ jsi::Value MmkvHostObject::get(jsi::Runtime& runtime, const jsi::PropNameID& pro
|
|
|
318
306
|
instance->reKey(std::string());
|
|
319
307
|
} else if (arguments[0].isString()) {
|
|
320
308
|
// reKey(..) with new encryption-key
|
|
321
|
-
|
|
309
|
+
std::string encryptionKey = arguments[0].getString(runtime).utf8(runtime);
|
|
322
310
|
instance->reKey(encryptionKey);
|
|
323
311
|
} else {
|
|
324
312
|
// Invalid argument (maybe object?)
|
|
@@ -334,7 +322,7 @@ jsi::Value MmkvHostObject::get(jsi::Runtime& runtime, const jsi::PropNameID& pro
|
|
|
334
322
|
if (propName == "trim") {
|
|
335
323
|
// MMKV.trim()
|
|
336
324
|
return jsi::Function::createFromHostFunction(
|
|
337
|
-
runtime, jsi::PropNameID::forAscii(runtime,
|
|
325
|
+
runtime, jsi::PropNameID::forAscii(runtime, propName), 0,
|
|
338
326
|
[this](jsi::Runtime& runtime, const jsi::Value& thisValue, const jsi::Value* arguments,
|
|
339
327
|
size_t count) -> jsi::Value {
|
|
340
328
|
instance->clearMemoryCache();
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
//
|
|
2
|
-
//
|
|
2
|
+
// MmkvLogger.h
|
|
3
3
|
// react-native-mmkv
|
|
4
4
|
//
|
|
5
5
|
// Created by Marc Rousavy on 25.03.24.
|
|
@@ -7,9 +7,9 @@
|
|
|
7
7
|
|
|
8
8
|
#include <string>
|
|
9
9
|
|
|
10
|
-
class
|
|
10
|
+
class MmkvLogger {
|
|
11
11
|
private:
|
|
12
|
-
|
|
12
|
+
MmkvLogger() = delete;
|
|
13
13
|
|
|
14
14
|
private:
|
|
15
15
|
template <typename... Args>
|
package/cpp/NativeMmkvModule.cpp
CHANGED
|
@@ -6,9 +6,9 @@
|
|
|
6
6
|
//
|
|
7
7
|
|
|
8
8
|
#include "NativeMmkvModule.h"
|
|
9
|
-
#include "Logger.h"
|
|
10
9
|
#include "MMKV.h"
|
|
11
10
|
#include "MmkvHostObject.h"
|
|
11
|
+
#include "MmkvLogger.h"
|
|
12
12
|
|
|
13
13
|
namespace facebook::react {
|
|
14
14
|
|
|
@@ -20,7 +20,7 @@ bool NativeMmkvModule::initialize(jsi::Runtime& runtime, std::string basePath) {
|
|
|
20
20
|
throw jsi::JSError(runtime, "Path cannot be empty!");
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
MmkvLogger::log("RNMMKV", "Initializing MMKV at %s...", basePath.c_str());
|
|
24
24
|
|
|
25
25
|
#ifdef DEBUG
|
|
26
26
|
MMKVLogLevel logLevel = MMKVLogDebug;
|
package/ios/AppleLogger.mm
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
//
|
|
2
|
-
//
|
|
2
|
+
// AppleMmkvLogger.m
|
|
3
3
|
// react-native-mmkv
|
|
4
4
|
//
|
|
5
5
|
// Created by Marc Rousavy on 25.03.24.
|
|
6
6
|
//
|
|
7
7
|
|
|
8
|
-
#import "
|
|
8
|
+
#import "MmkvLogger.h"
|
|
9
9
|
#import <Foundation/Foundation.h>
|
|
10
10
|
|
|
11
|
-
void
|
|
11
|
+
void MmkvLogger::log(const std::string& tag, const std::string& message) {
|
|
12
12
|
#pragma clang diagnostic push
|
|
13
13
|
#pragma clang diagnostic ignored "-Wformat-security"
|
|
14
14
|
NSLog(@"[%s]: %s", tag.c_str(), message.c_str());
|
package/lib/commonjs/MMKV.js
CHANGED
|
@@ -3,24 +3,11 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
Object.defineProperty(exports, "Configuration", {
|
|
7
|
-
enumerable: true,
|
|
8
|
-
get: function () {
|
|
9
|
-
return _NativeMmkv.Configuration;
|
|
10
|
-
}
|
|
11
|
-
});
|
|
12
6
|
exports.MMKV = void 0;
|
|
13
|
-
Object.defineProperty(exports, "Mode", {
|
|
14
|
-
enumerable: true,
|
|
15
|
-
get: function () {
|
|
16
|
-
return _NativeMmkv.Mode;
|
|
17
|
-
}
|
|
18
|
-
});
|
|
19
7
|
var _reactNative = require("react-native");
|
|
20
8
|
var _createMMKV = require("./createMMKV");
|
|
21
9
|
var _createMMKV2 = require("./createMMKV.mock");
|
|
22
10
|
var _PlatformChecker = require("./PlatformChecker");
|
|
23
|
-
var _NativeMmkv = require("./NativeMmkv");
|
|
24
11
|
const onValueChangedListeners = new Map();
|
|
25
12
|
|
|
26
13
|
/**
|
package/lib/commonjs/MMKV.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_createMMKV","_createMMKV2","_PlatformChecker","
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_createMMKV","_createMMKV2","_PlatformChecker","onValueChangedListeners","Map","MMKV","constructor","configuration","id","nativeInstance","isTest","createMockMMKV","createMMKV","functionCache","AppState","addEventListener","trim","has","set","get","getFunctionFromCache","functionName","onValuesChanged","keys","length","key","listener","size","value","func","getBoolean","getString","getNumber","getBuffer","contains","delete","getAllKeys","clearAll","recrypt","toString","join","toJSON","addOnValueChangedListener","onValueChanged","push","remove","index","indexOf","splice","exports"],"sourceRoot":"../../src","sources":["MMKV.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.ModuleNotFoundError = void 0;
|
|
7
|
+
var _reactNative = require("react-native");
|
|
8
|
+
const BULLET_POINT = '\n* ';
|
|
9
|
+
function messageWithSuggestions(message, suggestions) {
|
|
10
|
+
return message + BULLET_POINT + suggestions.join(BULLET_POINT);
|
|
11
|
+
}
|
|
12
|
+
function getFrameworkType() {
|
|
13
|
+
// check if Expo
|
|
14
|
+
const ExpoConstants = _reactNative.NativeModules.NativeUnimoduleProxy?.modulesConstants?.ExponentConstants;
|
|
15
|
+
if (ExpoConstants != null) {
|
|
16
|
+
if (ExpoConstants.appOwnership === 'expo') {
|
|
17
|
+
// We're running Expo Go
|
|
18
|
+
return 'expo-go';
|
|
19
|
+
} else {
|
|
20
|
+
// We're running Expo bare / standalone
|
|
21
|
+
return 'expo';
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return 'react-native';
|
|
25
|
+
}
|
|
26
|
+
class ModuleNotFoundError extends Error {
|
|
27
|
+
constructor(cause) {
|
|
28
|
+
// TurboModule not found, something went wrong!
|
|
29
|
+
if (global.__turboModuleProxy == null) {
|
|
30
|
+
// TurboModules are not available/new arch is not enabled.
|
|
31
|
+
// react-native-mmkv 3.x.x requires new arch (react-native >0.74)
|
|
32
|
+
// react-native-mmkv 2.x.x works on old arch (react-native <0.74)
|
|
33
|
+
const message = 'Failed to create a new MMKV instance: react-native-mmkv 3.x.x requires TurboModules, but the new architecture is not enabled!';
|
|
34
|
+
const suggestions = [];
|
|
35
|
+
suggestions.push('Downgrade to react-native-mmkv 2.x.x if you want to stay on the old architecture.');
|
|
36
|
+
suggestions.push('Enable the new architecture in your app to use react-native-mmkv 3.x.x. (See https://github.com/reactwg/react-native-new-architecture/blob/main/docs/enable-apps.md)');
|
|
37
|
+
const error = messageWithSuggestions(message, suggestions);
|
|
38
|
+
super(error, {
|
|
39
|
+
cause: cause
|
|
40
|
+
});
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
const framework = getFrameworkType();
|
|
44
|
+
if (framework === 'expo-go') {
|
|
45
|
+
super('react-native-mmkv is not supported in Expo Go! Use EAS (`expo prebuild`) or eject to a bare workflow instead.');
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
const message = 'Failed to create a new MMKV instance: The native MMKV Module could not be found.';
|
|
49
|
+
const suggestions = [];
|
|
50
|
+
suggestions.push('Make sure react-native-mmkv is correctly autolinked (run `npx react-native config` to verify)');
|
|
51
|
+
suggestions.push('Make sure you enabled the new architecture (TurboModules) and CodeGen properly generated the react-native-mmkv specs. See https://github.com/reactwg/react-native-new-architecture/blob/main/docs/enable-apps.md');
|
|
52
|
+
suggestions.push('Make sure you are using react-native 0.74.0 or higher, because react-native-mmkv is a C++ TurboModule.');
|
|
53
|
+
suggestions.push('Make sure you rebuilt the app.');
|
|
54
|
+
if (framework === 'expo') {
|
|
55
|
+
suggestions.push('Make sure you ran `expo prebuild`.');
|
|
56
|
+
}
|
|
57
|
+
switch (_reactNative.Platform.OS) {
|
|
58
|
+
case 'ios':
|
|
59
|
+
case 'macos':
|
|
60
|
+
suggestions.push('Make sure you ran `pod install` in the ios/ directory.');
|
|
61
|
+
break;
|
|
62
|
+
case 'android':
|
|
63
|
+
suggestions.push('Make sure gradle is synced.');
|
|
64
|
+
break;
|
|
65
|
+
default:
|
|
66
|
+
throw new Error(`MMKV is not supported on ${_reactNative.Platform.OS}!`);
|
|
67
|
+
}
|
|
68
|
+
const error = messageWithSuggestions(message, suggestions);
|
|
69
|
+
super(error, {
|
|
70
|
+
cause: cause
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
exports.ModuleNotFoundError = ModuleNotFoundError;
|
|
75
|
+
//# sourceMappingURL=ModuleNotFoundError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_reactNative","require","BULLET_POINT","messageWithSuggestions","message","suggestions","join","getFrameworkType","ExpoConstants","NativeModules","NativeUnimoduleProxy","modulesConstants","ExponentConstants","appOwnership","ModuleNotFoundError","Error","constructor","cause","global","__turboModuleProxy","push","error","framework","Platform","OS","exports"],"sourceRoot":"../../src","sources":["ModuleNotFoundError.ts"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAOA,MAAMC,YAAY,GAAG,MAAM;AAE3B,SAASC,sBAAsBA,CAC7BC,OAAe,EACfC,WAAqB,EACb;EACR,OAAOD,OAAO,GAAGF,YAAY,GAAGG,WAAW,CAACC,IAAI,CAACJ,YAAY,CAAC;AAChE;AAEA,SAASK,gBAAgBA,CAAA,EAAwC;EAC/D;EACA,MAAMC,aAAa,GACjBC,0BAAa,CAACC,oBAAoB,EAAEC,gBAAgB,EAAEC,iBAAiB;EACzE,IAAIJ,aAAa,IAAI,IAAI,EAAE;IACzB,IAAIA,aAAa,CAACK,YAAY,KAAK,MAAM,EAAE;MACzC;MACA,OAAO,SAAS;IAClB,CAAC,MAAM;MACL;MACA,OAAO,MAAM;IACf;EACF;EACA,OAAO,cAAc;AACvB;AAEO,MAAMC,mBAAmB,SAASC,KAAK,CAAC;EAC7CC,WAAWA,CAACC,KAAe,EAAE;IAC3B;IACA,IAAIC,MAAM,CAACC,kBAAkB,IAAI,IAAI,EAAE;MACrC;MACA;MACA;MACA,MAAMf,OAAO,GACX,+HAA+H;MACjI,MAAMC,WAAqB,GAAG,EAAE;MAChCA,WAAW,CAACe,IAAI,CACd,mFACF,CAAC;MACDf,WAAW,CAACe,IAAI,CACd,sKACF,CAAC;MACD,MAAMC,KAAK,GAAGlB,sBAAsB,CAACC,OAAO,EAAEC,WAAW,CAAC;MAC1D,KAAK,CAACgB,KAAK,EAAE;QAAEJ,KAAK,EAAEA;MAAM,CAAC,CAAC;MAC9B;IACF;IAEA,MAAMK,SAAS,GAAGf,gBAAgB,CAAC,CAAC;IACpC,IAAIe,SAAS,KAAK,SAAS,EAAE;MAC3B,KAAK,CACH,+GACF,CAAC;MACD;IACF;IAEA,MAAMlB,OAAO,GACX,kFAAkF;IACpF,MAAMC,WAAqB,GAAG,EAAE;IAChCA,WAAW,CAACe,IAAI,CACd,+FACF,CAAC;IACDf,WAAW,CAACe,IAAI,CACd,kNACF,CAAC;IACDf,WAAW,CAACe,IAAI,CACd,wGACF,CAAC;IACDf,WAAW,CAACe,IAAI,CAAC,gCAAgC,CAAC;IAClD,IAAIE,SAAS,KAAK,MAAM,EAAE;MACxBjB,WAAW,CAACe,IAAI,CAAC,oCAAoC,CAAC;IACxD;IACA,QAAQG,qBAAQ,CAACC,EAAE;MACjB,KAAK,KAAK;MACV,KAAK,OAAO;QACVnB,WAAW,CAACe,IAAI,CACd,wDACF,CAAC;QACD;MACF,KAAK,SAAS;QACZf,WAAW,CAACe,IAAI,CAAC,6BAA6B,CAAC;QAC/C;MACF;QACE,MAAM,IAAIL,KAAK,CAAE,4BAA2BQ,qBAAQ,CAACC,EAAG,GAAE,CAAC;IAC/D;IAEA,MAAMH,KAAK,GAAGlB,sBAAsB,CAACC,OAAO,EAAEC,WAAW,CAAC;IAC1D,KAAK,CAACgB,KAAK,EAAE;MAAEJ,KAAK,EAAEA;IAAM,CAAC,CAAC;EAChC;AACF;AAACQ,OAAA,CAAAX,mBAAA,GAAAA,mBAAA","ignoreList":[]}
|
|
@@ -3,9 +3,10 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.Mode =
|
|
6
|
+
exports.Mode = void 0;
|
|
7
|
+
exports.getMMKVTurboModule = getMMKVTurboModule;
|
|
7
8
|
var _reactNative = require("react-native");
|
|
8
|
-
var
|
|
9
|
+
var _ModuleNotFoundError = require("./ModuleNotFoundError");
|
|
9
10
|
var _NativeMmkvPlatformContext = require("./NativeMmkvPlatformContext");
|
|
10
11
|
/**
|
|
11
12
|
* Configures the mode of the MMKV instance.
|
|
@@ -18,18 +19,24 @@ let Mode = exports.Mode = /*#__PURE__*/function (Mode) {
|
|
|
18
19
|
/**
|
|
19
20
|
* Used for configuration of a single MMKV instance.
|
|
20
21
|
*/
|
|
21
|
-
let
|
|
22
|
-
function
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
22
|
+
let _module;
|
|
23
|
+
function getMMKVTurboModule() {
|
|
24
|
+
try {
|
|
25
|
+
if (_module == null) {
|
|
26
|
+
// 1. Load MMKV TurboModule
|
|
27
|
+
_module = _reactNative.TurboModuleRegistry.getEnforcing('MmkvCxx');
|
|
28
|
+
|
|
29
|
+
// 2. Get the PlatformContext TurboModule as well
|
|
30
|
+
const platformContext = (0, _NativeMmkvPlatformContext.getMMKVPlatformContextTurboModule)();
|
|
31
|
+
|
|
32
|
+
// 3. Initialize it with the documents directory from platform-specific context
|
|
33
|
+
const basePath = platformContext.getBaseDirectory();
|
|
34
|
+
_module.initialize(basePath);
|
|
35
|
+
}
|
|
36
|
+
return _module;
|
|
37
|
+
} catch (cause) {
|
|
38
|
+
// TurboModule could not be found!
|
|
39
|
+
throw new _ModuleNotFoundError.ModuleNotFoundError(cause);
|
|
31
40
|
}
|
|
32
|
-
return module;
|
|
33
41
|
}
|
|
34
|
-
const MMKVTurboModule = exports.MMKVTurboModule = (0, _LazyTurboModule.getLazyTurboModule)(getNativeModule);
|
|
35
42
|
//# sourceMappingURL=NativeMmkv.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_ModuleNotFoundError","_NativeMmkvPlatformContext","Mode","exports","module","getMMKVTurboModule","TurboModuleRegistry","getEnforcing","platformContext","getMMKVPlatformContextTurboModule","basePath","getBaseDirectory","initialize","cause","ModuleNotFoundError"],"sourceRoot":"../../src","sources":["NativeMmkv.ts"],"mappings":";;;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAEA,IAAAC,oBAAA,GAAAD,OAAA;AACA,IAAAE,0BAAA,GAAAF,OAAA;AAEA;AACA;AACA;AAFA,IAGYG,IAAI,GAAAC,OAAA,CAAAD,IAAA,0BAAJA,IAAI;EAAJA,IAAI,CAAJA,IAAI;EAAJA,IAAI,CAAJA,IAAI;EAAA,OAAJA,IAAI;AAAA;AAWhB;AACA;AACA;AAiEA,IAAIE,OAAmB;AAEhB,SAASC,kBAAkBA,CAAA,EAAS;EACzC,IAAI;IACF,IAAID,OAAM,IAAI,IAAI,EAAE;MAClB;MACAA,OAAM,GAAGE,gCAAmB,CAACC,YAAY,CAAO,SAAS,CAAC;;MAE1D;MACA,MAAMC,eAAe,GAAG,IAAAC,4DAAiC,EAAC,CAAC;;MAE3D;MACA,MAAMC,QAAQ,GAAGF,eAAe,CAACG,gBAAgB,CAAC,CAAC;MACnDP,OAAM,CAACQ,UAAU,CAACF,QAAQ,CAAC;IAC7B;IAEA,OAAON,OAAM;EACf,CAAC,CAAC,OAAOS,KAAK,EAAE;IACd;IACA,MAAM,IAAIC,wCAAmB,CAACD,KAAK,CAAC;EACtC;AACF","ignoreList":[]}
|
|
@@ -3,11 +3,20 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
6
|
+
exports.getMMKVPlatformContextTurboModule = getMMKVPlatformContextTurboModule;
|
|
7
7
|
var _reactNative = require("react-native");
|
|
8
|
-
var
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
var _ModuleNotFoundError = require("./ModuleNotFoundError");
|
|
9
|
+
let _module;
|
|
10
|
+
function getMMKVPlatformContextTurboModule() {
|
|
11
|
+
try {
|
|
12
|
+
if (_module == null) {
|
|
13
|
+
// 1. Get the TurboModule
|
|
14
|
+
_module = _reactNative.TurboModuleRegistry.getEnforcing('MmkvPlatformContext');
|
|
15
|
+
}
|
|
16
|
+
return _module;
|
|
17
|
+
} catch (e) {
|
|
18
|
+
// TurboModule could not be found!
|
|
19
|
+
throw new _ModuleNotFoundError.ModuleNotFoundError(e);
|
|
20
|
+
}
|
|
11
21
|
}
|
|
12
|
-
const PlatformContext = exports.PlatformContext = (0, _LazyTurboModule.getLazyTurboModule)(getModule);
|
|
13
22
|
//# sourceMappingURL=NativeMmkvPlatformContext.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_ModuleNotFoundError","module","getMMKVPlatformContextTurboModule","TurboModuleRegistry","getEnforcing","e","ModuleNotFoundError"],"sourceRoot":"../../src","sources":["NativeMmkvPlatformContext.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,oBAAA,GAAAD,OAAA;AASA,IAAIE,OAAmB;AAEhB,SAASC,iCAAiCA,CAAA,EAAS;EACxD,IAAI;IACF,IAAID,OAAM,IAAI,IAAI,EAAE;MAClB;MACAA,OAAM,GAAGE,gCAAmB,CAACC,YAAY,CAAO,qBAAqB,CAAC;IACxE;IACA,OAAOH,OAAM;EACf,CAAC,CAAC,OAAOI,CAAC,EAAE;IACV;IACA,MAAM,IAAIC,wCAAmB,CAACD,CAAC,CAAC;EAClC;AACF","ignoreList":[]}
|
|
@@ -6,7 +6,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.createMMKV = void 0;
|
|
7
7
|
var _NativeMmkv = require("./NativeMmkv");
|
|
8
8
|
const createMMKV = config => {
|
|
9
|
-
const
|
|
9
|
+
const module = (0, _NativeMmkv.getMMKVTurboModule)();
|
|
10
|
+
const instance = module.createMMKV(config);
|
|
10
11
|
if (__DEV__) {
|
|
11
12
|
if (typeof instance !== 'object' || instance == null) {
|
|
12
13
|
throw new Error('Failed to create MMKV instance - an unknown object was returned by createMMKV(..)!');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_NativeMmkv","require","createMMKV","config","
|
|
1
|
+
{"version":3,"names":["_NativeMmkv","require","createMMKV","config","module","getMMKVTurboModule","instance","__DEV__","Error","exports"],"sourceRoot":"../../src","sources":["createMMKV.ts"],"mappings":";;;;;;AACA,IAAAA,WAAA,GAAAC,OAAA;AAGO,MAAMC,UAAU,GAAIC,MAAqB,IAAiB;EAC/D,MAAMC,MAAM,GAAG,IAAAC,8BAAkB,EAAC,CAAC;EAEnC,MAAMC,QAAQ,GAAGF,MAAM,CAACF,UAAU,CAACC,MAAM,CAAC;EAC1C,IAAII,OAAO,EAAE;IACX,IAAI,OAAOD,QAAQ,KAAK,QAAQ,IAAIA,QAAQ,IAAI,IAAI,EAAE;MACpD,MAAM,IAAIE,KAAK,CACb,oFACF,CAAC;IACH;EACF;EACA,OAAOF,QAAQ;AACjB,CAAC;AAACG,OAAA,CAAAP,UAAA,GAAAA,UAAA","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_MMKV","isConfigurationEqual","left","right","encryptionKey","id","path","mode","defaultInstance","getDefaultInstance","MMKV","useMMKV","configuration","instance","useRef","lastConfiguration","current","createMMKVHook","getter","key","mmkv","bump","setBump","useState","value","useMemo","set","useCallback","v","newValue","delete","ArrayBuffer","Error","useEffect","listener","addOnValueChangedListener","changedKey","b","remove","useMMKVString","exports","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":";;;;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;
|
|
1
|
+
{"version":3,"names":["_react","require","_MMKV","isConfigurationEqual","left","right","encryptionKey","id","path","mode","defaultInstance","getDefaultInstance","MMKV","useMMKV","configuration","instance","useRef","lastConfiguration","current","createMMKVHook","getter","key","mmkv","bump","setBump","useState","value","useMemo","set","useCallback","v","newValue","delete","ArrayBuffer","Error","useEffect","listener","addOnValueChangedListener","changedKey","b","remove","useMMKVString","exports","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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","ignoreList":[]}
|