react-native-mmkv 3.0.0-beta.2 → 3.0.0-beta.3
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/CMakeLists.txt +12 -4
- package/MMKV/Core/Core.xcodeproj/project.pbxproj +13 -4
- package/MMKV/Core/Core.xcodeproj/xcshareddata/xcschemes/Core.xcscheme +1 -1
- package/MMKV/Core/Core.xcodeproj/xcshareddata/xcschemes/MMKVWatchCore.xcscheme +1 -1
- package/MMKV/Core/MMKV.cpp +3 -4
- package/MMKV/Core/MMKVLog_Android.cpp +56 -1
- package/MMKV/Core/MMKVPredef.h +8 -1
- package/MMKV/Core/MMKV_Android.cpp +3 -3
- package/MMKV/Core/MMKV_IO.cpp +1 -1
- package/MMKV/Core/MemoryFile.cpp +33 -2
- package/MMKV/Core/MemoryFile.h +1 -0
- package/MMKV/Core/MemoryFile_Android.cpp +13 -3
- package/MMKV/Core/MemoryFile_Linux.cpp +8 -3
- package/MMKV/Core/MemoryFile_Win32.cpp +3 -3
- package/MMKV/Core/ThreadLock.cpp +9 -5
- package/MMKV/Core/ThreadLock.h +2 -3
- package/MMKV/Core/aes/AESCrypt.h +1 -0
- package/MMKV/Core/aes/openssl/openssl_aes.h +12 -0
- package/MMKV/Core/aes/openssl/openssl_aes_core.cpp +4 -4
- package/MMKV/Core/core.vcxproj +102 -0
- package/MMKV/Core/crc32/Checksum.h +5 -0
- package/MMKV/Core/crc32/crc32_armv8.cpp +3 -1
- package/MMKV/Core/crc32/zlib/CMakeLists.txt +60 -0
- package/MMKV/LICENSE.TXT +193 -0
- package/MMKV/README.md +74 -10
- package/README.md +12 -5
- package/cpp/MmkvHostObject.cpp +1 -0
- package/cpp/NativeMmkvModule.cpp +2 -5
- package/lib/commonjs/LazyTurboModule.js +26 -9
- package/lib/commonjs/LazyTurboModule.js.map +1 -1
- package/lib/commonjs/MMKV.js +1 -1
- package/lib/commonjs/MMKV.js.map +1 -1
- package/lib/commonjs/PlatformChecker.js +3 -3
- package/lib/commonjs/PlatformChecker.js.map +1 -1
- package/lib/commonjs/index.js +19 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/module/LazyTurboModule.js +26 -9
- package/lib/module/LazyTurboModule.js.map +1 -1
- package/lib/module/MMKV.js +2 -2
- package/lib/module/MMKV.js.map +1 -1
- package/lib/module/PlatformChecker.js +2 -2
- package/lib/module/PlatformChecker.js.map +1 -1
- package/lib/module/index.js +1 -0
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/src/LazyTurboModule.d.ts +3 -0
- package/lib/typescript/src/LazyTurboModule.d.ts.map +1 -1
- package/lib/typescript/src/PlatformChecker.d.ts +1 -1
- package/lib/typescript/src/PlatformChecker.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +1 -0
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/package.json +5 -5
- package/src/LazyTurboModule.ts +48 -12
- package/src/MMKV.ts +2 -2
- package/src/PlatformChecker.ts +4 -2
- package/src/index.ts +2 -0
package/cpp/NativeMmkvModule.cpp
CHANGED
|
@@ -16,7 +16,7 @@ NativeMmkvModule::NativeMmkvModule(std::shared_ptr<CallInvoker> jsInvoker)
|
|
|
16
16
|
: NativeMmkvCxxSpec(jsInvoker) {}
|
|
17
17
|
|
|
18
18
|
bool NativeMmkvModule::initialize(jsi::Runtime& runtime, std::string basePath) {
|
|
19
|
-
if (basePath.
|
|
19
|
+
if (basePath.empty()) {
|
|
20
20
|
throw jsi::JSError(runtime, "Path cannot be empty!");
|
|
21
21
|
}
|
|
22
22
|
|
|
@@ -33,10 +33,7 @@ bool NativeMmkvModule::initialize(jsi::Runtime& runtime, std::string basePath) {
|
|
|
33
33
|
return true;
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
NativeMmkvModule::~NativeMmkvModule() {
|
|
37
|
-
Logger::log("RNMMKV", "Closing all MMKV instances...");
|
|
38
|
-
MMKV::onExit();
|
|
39
|
-
}
|
|
36
|
+
NativeMmkvModule::~NativeMmkvModule() {}
|
|
40
37
|
|
|
41
38
|
jsi::Object NativeMmkvModule::createMMKV(jsi::Runtime& runtime, MMKVConfig config) {
|
|
42
39
|
auto instance = std::make_shared<MmkvHostObject>(config);
|
|
@@ -5,6 +5,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.getLazyTurboModule = getLazyTurboModule;
|
|
7
7
|
var _reactNative = require("react-native");
|
|
8
|
+
const BULLET_POINT = '\n* ';
|
|
9
|
+
|
|
8
10
|
/**
|
|
9
11
|
* Lazily get a TurboModule by wrapping it in a Proxy.
|
|
10
12
|
*/
|
|
@@ -18,13 +20,28 @@ function getLazyTurboModule(initializeTurboModule) {
|
|
|
18
20
|
target.module = initializeTurboModule();
|
|
19
21
|
if (target.module == null) {
|
|
20
22
|
// TurboModule not found, something went wrong!
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
if (global.__turboModuleProxy == null) {
|
|
24
|
+
// TurboModules are not available/new arch is not enabled.
|
|
25
|
+
// react-native-mmkv 3.x.x requires new arch (react-native >0.74)
|
|
26
|
+
// react-native-mmkv 2.x.x works on old arch (react-native <0.74)
|
|
27
|
+
throw new Error('Failed to create a new MMKV instance: react-native-mmkv 3.x.x requires TurboModules, but the new architecture is not enabled!' + BULLET_POINT + 'Downgrade to react-native-mmkv 2.x.x if you want to stay on the old architecture.' + BULLET_POINT + '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)');
|
|
25
28
|
}
|
|
26
|
-
|
|
27
|
-
|
|
29
|
+
const message = 'Failed to create a new MMKV instance: The native MMKV Module could not be found.';
|
|
30
|
+
const suggestions = [];
|
|
31
|
+
suggestions.push('Make sure react-native-mmkv is correctly autolinked (run `npx react-native config` to verify)');
|
|
32
|
+
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');
|
|
33
|
+
suggestions.push('Make sure you are using react-native 0.74.0 or higher, because react-native-mmkv is a C++ TurboModule.');
|
|
34
|
+
suggestions.push('Make sure you rebuilt the app.');
|
|
35
|
+
switch (_reactNative.Platform.OS) {
|
|
36
|
+
case 'ios':
|
|
37
|
+
case 'macos':
|
|
38
|
+
suggestions.push('Make sure you ran `pod install` in the ios/ directory.');
|
|
39
|
+
break;
|
|
40
|
+
case 'android':
|
|
41
|
+
suggestions.push('Make sure gradle is synced.');
|
|
42
|
+
break;
|
|
43
|
+
default:
|
|
44
|
+
throw new Error(`MMKV is not supported on ${_reactNative.Platform.OS}!`);
|
|
28
45
|
}
|
|
29
46
|
// check if Expo
|
|
30
47
|
const ExpoConstants = _reactNative.NativeModules.NativeUnimoduleProxy?.modulesConstants?.ExponentConstants;
|
|
@@ -34,11 +51,11 @@ function getLazyTurboModule(initializeTurboModule) {
|
|
|
34
51
|
throw new Error('react-native-mmkv is not supported in Expo Go! Use EAS (`expo prebuild`) or eject to a bare workflow instead.');
|
|
35
52
|
} else {
|
|
36
53
|
// We're running Expo bare / standalone
|
|
37
|
-
|
|
54
|
+
suggestions.push('Make sure you ran `expo prebuild`.');
|
|
38
55
|
}
|
|
39
56
|
}
|
|
40
|
-
|
|
41
|
-
throw new Error(
|
|
57
|
+
const error = message + BULLET_POINT + suggestions.join(BULLET_POINT);
|
|
58
|
+
throw new Error(error);
|
|
42
59
|
}
|
|
43
60
|
}
|
|
44
61
|
return target.module[property];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","getLazyTurboModule","initializeTurboModule","proxy","Proxy","module","get","target","property","message","Platform","OS","ExpoConstants","NativeModules","NativeUnimoduleProxy","modulesConstants","ExponentConstants","appOwnership","
|
|
1
|
+
{"version":3,"names":["_reactNative","require","BULLET_POINT","getLazyTurboModule","initializeTurboModule","proxy","Proxy","module","get","target","property","global","__turboModuleProxy","Error","message","suggestions","push","Platform","OS","ExpoConstants","NativeModules","NativeUnimoduleProxy","modulesConstants","ExponentConstants","appOwnership","error","join"],"sourceRoot":"../../src","sources":["LazyTurboModule.ts"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAWA,MAAMC,YAAY,GAAG,MAAM;;AAE3B;AACA;AACA;AACO,SAASC,kBAAkBA,CAChCC,qBAAqC,EAClC;EACH,MAAMC,KAAK,GAAG,IAAIC,KAAK,CACrB;IACEC,MAAM,EAAE;EACV,CAAC,EACD;IACEC,GAAG,EAAEA,CAACC,MAAM,EAAEC,QAAQ,KAAK;MACzB,IAAID,MAAM,CAACF,MAAM,IAAI,IAAI,EAAE;QACzB;QACAE,MAAM,CAACF,MAAM,GAAGH,qBAAqB,CAAC,CAAC;QAEvC,IAAIK,MAAM,CAACF,MAAM,IAAI,IAAI,EAAE;UACzB;UACA,IAAII,MAAM,CAACC,kBAAkB,IAAI,IAAI,EAAE;YACrC;YACA;YACA;YACA,MAAM,IAAIC,KAAK,CACb,+HAA+H,GAC7HX,YAAY,GACZ,mFAAmF,GACnFA,YAAY,GACZ,sKACJ,CAAC;UACH;UAEA,MAAMY,OAAO,GACX,kFAAkF;UACpF,MAAMC,WAAqB,GAAG,EAAE;UAChCA,WAAW,CAACC,IAAI,CACd,+FACF,CAAC;UACDD,WAAW,CAACC,IAAI,CACd,kNACF,CAAC;UACDD,WAAW,CAACC,IAAI,CACd,wGACF,CAAC;UACDD,WAAW,CAACC,IAAI,CAAC,gCAAgC,CAAC;UAClD,QAAQC,qBAAQ,CAACC,EAAE;YACjB,KAAK,KAAK;YACV,KAAK,OAAO;cACVH,WAAW,CAACC,IAAI,CACd,wDACF,CAAC;cACD;YACF,KAAK,SAAS;cACZD,WAAW,CAACC,IAAI,CAAC,6BAA6B,CAAC;cAC/C;YACF;cACE,MAAM,IAAIH,KAAK,CAAE,4BAA2BI,qBAAQ,CAACC,EAAG,GAAE,CAAC;UAC/D;UACA;UACA,MAAMC,aAAa,GACjBC,0BAAa,CAACC,oBAAoB,EAAEC,gBAAgB,EAChDC,iBAAiB;UACvB,IAAIJ,aAAa,IAAI,IAAI,EAAE;YACzB,IAAIA,aAAa,CAACK,YAAY,KAAK,MAAM,EAAE;cACzC;cACA,MAAM,IAAIX,KAAK,CACb,+GACF,CAAC;YACH,CAAC,MAAM;cACL;cACAE,WAAW,CAACC,IAAI,CAAC,oCAAoC,CAAC;YACxD;UACF;UAEA,MAAMS,KAAK,GACTX,OAAO,GAAGZ,YAAY,GAAGa,WAAW,CAACW,IAAI,CAACxB,YAAY,CAAC;UACzD,MAAM,IAAIW,KAAK,CAACY,KAAK,CAAC;QACxB;MACF;MAEA,OAAOhB,MAAM,CAACF,MAAM,CAACG,QAAQ,CAAY;IAC3C;EACF,CACF,CAAC;EACD,OAAOL,KAAK;AACd","ignoreList":[]}
|
package/lib/commonjs/MMKV.js
CHANGED
|
@@ -35,7 +35,7 @@ class MMKV {
|
|
|
35
35
|
id: 'mmkv.default'
|
|
36
36
|
}) {
|
|
37
37
|
this.id = configuration.id;
|
|
38
|
-
this.nativeInstance = (0, _PlatformChecker.
|
|
38
|
+
this.nativeInstance = (0, _PlatformChecker.isTest)() ? (0, _createMMKV2.createMockMMKV)() : (0, _createMMKV.createMMKV)(configuration);
|
|
39
39
|
this.functionCache = {};
|
|
40
40
|
_reactNative.AppState.addEventListener('memoryWarning', () => {
|
|
41
41
|
// when we have a memory warning, delete unused keys by trimming MMKV
|
package/lib/commonjs/MMKV.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_createMMKV","_createMMKV2","_PlatformChecker","_NativeMmkv","onValueChangedListeners","Map","MMKV","constructor","configuration","id","nativeInstance","
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_createMMKV","_createMMKV2","_PlatformChecker","_NativeMmkv","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":[]}
|
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
7
|
-
function
|
|
6
|
+
exports.isTest = isTest;
|
|
7
|
+
function isTest() {
|
|
8
8
|
if (global.process == null) {
|
|
9
9
|
// In a WebBrowser/Electron the `process` variable does not exist
|
|
10
10
|
return false;
|
|
11
11
|
}
|
|
12
|
-
return process.env.JEST_WORKER_ID != null;
|
|
12
|
+
return process.env.JEST_WORKER_ID != null || process.env.VITEST_WORKER_ID != null;
|
|
13
13
|
}
|
|
14
14
|
//# sourceMappingURL=PlatformChecker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["isTest","global","process","env","JEST_WORKER_ID","VITEST_WORKER_ID"],"sourceRoot":"../../src","sources":["PlatformChecker.ts"],"mappings":";;;;;;AAAO,SAASA,MAAMA,CAAA,EAAY;EAChC,IAAIC,MAAM,CAACC,OAAO,IAAI,IAAI,EAAE;IAC1B;IACA,OAAO,KAAK;EACd;EACA,OACEA,OAAO,CAACC,GAAG,CAACC,cAAc,IAAI,IAAI,IAAIF,OAAO,CAACC,GAAG,CAACE,gBAAgB,IAAI,IAAI;AAE9E","ignoreList":[]}
|
package/lib/commonjs/index.js
CHANGED
|
@@ -3,9 +3,26 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
var _exportNames = {
|
|
7
|
+
Mode: true,
|
|
8
|
+
Configuration: true
|
|
9
|
+
};
|
|
10
|
+
Object.defineProperty(exports, "Configuration", {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
get: function () {
|
|
13
|
+
return _NativeMmkv.Configuration;
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
Object.defineProperty(exports, "Mode", {
|
|
17
|
+
enumerable: true,
|
|
18
|
+
get: function () {
|
|
19
|
+
return _NativeMmkv.Mode;
|
|
20
|
+
}
|
|
21
|
+
});
|
|
6
22
|
var _MMKV = require("./MMKV");
|
|
7
23
|
Object.keys(_MMKV).forEach(function (key) {
|
|
8
24
|
if (key === "default" || key === "__esModule") return;
|
|
25
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
9
26
|
if (key in exports && exports[key] === _MMKV[key]) return;
|
|
10
27
|
Object.defineProperty(exports, key, {
|
|
11
28
|
enumerable: true,
|
|
@@ -17,6 +34,7 @@ Object.keys(_MMKV).forEach(function (key) {
|
|
|
17
34
|
var _hooks = require("./hooks");
|
|
18
35
|
Object.keys(_hooks).forEach(function (key) {
|
|
19
36
|
if (key === "default" || key === "__esModule") return;
|
|
37
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
20
38
|
if (key in exports && exports[key] === _hooks[key]) return;
|
|
21
39
|
Object.defineProperty(exports, key, {
|
|
22
40
|
enumerable: true,
|
|
@@ -25,4 +43,5 @@ Object.keys(_hooks).forEach(function (key) {
|
|
|
25
43
|
}
|
|
26
44
|
});
|
|
27
45
|
});
|
|
46
|
+
var _NativeMmkv = require("./NativeMmkv");
|
|
28
47
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_MMKV","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_hooks"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"
|
|
1
|
+
{"version":3,"names":["_MMKV","require","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_hooks","_NativeMmkv"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,KAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAL,KAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAb,KAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAS,MAAA,GAAAb,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAW,MAAA,EAAAV,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAS,MAAA,CAAAT,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,MAAA,CAAAT,GAAA;IAAA;EAAA;AAAA;AAEA,IAAAU,WAAA,GAAAd,OAAA","ignoreList":[]}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { NativeModules, Platform } from 'react-native';
|
|
2
|
+
const BULLET_POINT = '\n* ';
|
|
3
|
+
|
|
2
4
|
/**
|
|
3
5
|
* Lazily get a TurboModule by wrapping it in a Proxy.
|
|
4
6
|
*/
|
|
@@ -12,13 +14,28 @@ export function getLazyTurboModule(initializeTurboModule) {
|
|
|
12
14
|
target.module = initializeTurboModule();
|
|
13
15
|
if (target.module == null) {
|
|
14
16
|
// TurboModule not found, something went wrong!
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
if (global.__turboModuleProxy == null) {
|
|
18
|
+
// TurboModules are not available/new arch is not enabled.
|
|
19
|
+
// react-native-mmkv 3.x.x requires new arch (react-native >0.74)
|
|
20
|
+
// react-native-mmkv 2.x.x works on old arch (react-native <0.74)
|
|
21
|
+
throw new Error('Failed to create a new MMKV instance: react-native-mmkv 3.x.x requires TurboModules, but the new architecture is not enabled!' + BULLET_POINT + 'Downgrade to react-native-mmkv 2.x.x if you want to stay on the old architecture.' + BULLET_POINT + '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)');
|
|
19
22
|
}
|
|
20
|
-
|
|
21
|
-
|
|
23
|
+
const message = 'Failed to create a new MMKV instance: The native MMKV Module could not be found.';
|
|
24
|
+
const suggestions = [];
|
|
25
|
+
suggestions.push('Make sure react-native-mmkv is correctly autolinked (run `npx react-native config` to verify)');
|
|
26
|
+
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');
|
|
27
|
+
suggestions.push('Make sure you are using react-native 0.74.0 or higher, because react-native-mmkv is a C++ TurboModule.');
|
|
28
|
+
suggestions.push('Make sure you rebuilt the app.');
|
|
29
|
+
switch (Platform.OS) {
|
|
30
|
+
case 'ios':
|
|
31
|
+
case 'macos':
|
|
32
|
+
suggestions.push('Make sure you ran `pod install` in the ios/ directory.');
|
|
33
|
+
break;
|
|
34
|
+
case 'android':
|
|
35
|
+
suggestions.push('Make sure gradle is synced.');
|
|
36
|
+
break;
|
|
37
|
+
default:
|
|
38
|
+
throw new Error(`MMKV is not supported on ${Platform.OS}!`);
|
|
22
39
|
}
|
|
23
40
|
// check if Expo
|
|
24
41
|
const ExpoConstants = NativeModules.NativeUnimoduleProxy?.modulesConstants?.ExponentConstants;
|
|
@@ -28,11 +45,11 @@ export function getLazyTurboModule(initializeTurboModule) {
|
|
|
28
45
|
throw new Error('react-native-mmkv is not supported in Expo Go! Use EAS (`expo prebuild`) or eject to a bare workflow instead.');
|
|
29
46
|
} else {
|
|
30
47
|
// We're running Expo bare / standalone
|
|
31
|
-
|
|
48
|
+
suggestions.push('Make sure you ran `expo prebuild`.');
|
|
32
49
|
}
|
|
33
50
|
}
|
|
34
|
-
|
|
35
|
-
throw new Error(
|
|
51
|
+
const error = message + BULLET_POINT + suggestions.join(BULLET_POINT);
|
|
52
|
+
throw new Error(error);
|
|
36
53
|
}
|
|
37
54
|
}
|
|
38
55
|
return target.module[property];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["NativeModules","Platform","getLazyTurboModule","initializeTurboModule","proxy","Proxy","module","get","target","property","message","OS","ExpoConstants","NativeUnimoduleProxy","modulesConstants","ExponentConstants","appOwnership","
|
|
1
|
+
{"version":3,"names":["NativeModules","Platform","BULLET_POINT","getLazyTurboModule","initializeTurboModule","proxy","Proxy","module","get","target","property","global","__turboModuleProxy","Error","message","suggestions","push","OS","ExpoConstants","NativeUnimoduleProxy","modulesConstants","ExponentConstants","appOwnership","error","join"],"sourceRoot":"../../src","sources":["LazyTurboModule.ts"],"mappings":"AAAA,SAASA,aAAa,EAAEC,QAAQ,QAAqB,cAAc;AAWnE,MAAMC,YAAY,GAAG,MAAM;;AAE3B;AACA;AACA;AACA,OAAO,SAASC,kBAAkBA,CAChCC,qBAAqC,EAClC;EACH,MAAMC,KAAK,GAAG,IAAIC,KAAK,CACrB;IACEC,MAAM,EAAE;EACV,CAAC,EACD;IACEC,GAAG,EAAEA,CAACC,MAAM,EAAEC,QAAQ,KAAK;MACzB,IAAID,MAAM,CAACF,MAAM,IAAI,IAAI,EAAE;QACzB;QACAE,MAAM,CAACF,MAAM,GAAGH,qBAAqB,CAAC,CAAC;QAEvC,IAAIK,MAAM,CAACF,MAAM,IAAI,IAAI,EAAE;UACzB;UACA,IAAII,MAAM,CAACC,kBAAkB,IAAI,IAAI,EAAE;YACrC;YACA;YACA;YACA,MAAM,IAAIC,KAAK,CACb,+HAA+H,GAC7HX,YAAY,GACZ,mFAAmF,GACnFA,YAAY,GACZ,sKACJ,CAAC;UACH;UAEA,MAAMY,OAAO,GACX,kFAAkF;UACpF,MAAMC,WAAqB,GAAG,EAAE;UAChCA,WAAW,CAACC,IAAI,CACd,+FACF,CAAC;UACDD,WAAW,CAACC,IAAI,CACd,kNACF,CAAC;UACDD,WAAW,CAACC,IAAI,CACd,wGACF,CAAC;UACDD,WAAW,CAACC,IAAI,CAAC,gCAAgC,CAAC;UAClD,QAAQf,QAAQ,CAACgB,EAAE;YACjB,KAAK,KAAK;YACV,KAAK,OAAO;cACVF,WAAW,CAACC,IAAI,CACd,wDACF,CAAC;cACD;YACF,KAAK,SAAS;cACZD,WAAW,CAACC,IAAI,CAAC,6BAA6B,CAAC;cAC/C;YACF;cACE,MAAM,IAAIH,KAAK,CAAE,4BAA2BZ,QAAQ,CAACgB,EAAG,GAAE,CAAC;UAC/D;UACA;UACA,MAAMC,aAAa,GACjBlB,aAAa,CAACmB,oBAAoB,EAAEC,gBAAgB,EAChDC,iBAAiB;UACvB,IAAIH,aAAa,IAAI,IAAI,EAAE;YACzB,IAAIA,aAAa,CAACI,YAAY,KAAK,MAAM,EAAE;cACzC;cACA,MAAM,IAAIT,KAAK,CACb,+GACF,CAAC;YACH,CAAC,MAAM;cACL;cACAE,WAAW,CAACC,IAAI,CAAC,oCAAoC,CAAC;YACxD;UACF;UAEA,MAAMO,KAAK,GACTT,OAAO,GAAGZ,YAAY,GAAGa,WAAW,CAACS,IAAI,CAACtB,YAAY,CAAC;UACzD,MAAM,IAAIW,KAAK,CAACU,KAAK,CAAC;QACxB;MACF;MAEA,OAAOd,MAAM,CAACF,MAAM,CAACG,QAAQ,CAAY;IAC3C;EACF,CACF,CAAC;EACD,OAAOL,KAAK;AACd","ignoreList":[]}
|
package/lib/module/MMKV.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { AppState } from 'react-native';
|
|
2
2
|
import { createMMKV } from './createMMKV';
|
|
3
3
|
import { createMockMMKV } from './createMMKV.mock';
|
|
4
|
-
import {
|
|
4
|
+
import { isTest } from './PlatformChecker';
|
|
5
5
|
export { Configuration, Mode } from './NativeMmkv';
|
|
6
6
|
const onValueChangedListeners = new Map();
|
|
7
7
|
|
|
@@ -17,7 +17,7 @@ export class MMKV {
|
|
|
17
17
|
id: 'mmkv.default'
|
|
18
18
|
}) {
|
|
19
19
|
this.id = configuration.id;
|
|
20
|
-
this.nativeInstance =
|
|
20
|
+
this.nativeInstance = isTest() ? createMockMMKV() : createMMKV(configuration);
|
|
21
21
|
this.functionCache = {};
|
|
22
22
|
AppState.addEventListener('memoryWarning', () => {
|
|
23
23
|
// when we have a memory warning, delete unused keys by trimming MMKV
|
package/lib/module/MMKV.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["AppState","createMMKV","createMockMMKV","
|
|
1
|
+
{"version":3,"names":["AppState","createMMKV","createMockMMKV","isTest","Configuration","Mode","onValueChangedListeners","Map","MMKV","constructor","configuration","id","nativeInstance","functionCache","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"],"sourceRoot":"../../src","sources":["MMKV.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export function
|
|
1
|
+
export function isTest() {
|
|
2
2
|
if (global.process == null) {
|
|
3
3
|
// In a WebBrowser/Electron the `process` variable does not exist
|
|
4
4
|
return false;
|
|
5
5
|
}
|
|
6
|
-
return process.env.JEST_WORKER_ID != null;
|
|
6
|
+
return process.env.JEST_WORKER_ID != null || process.env.VITEST_WORKER_ID != null;
|
|
7
7
|
}
|
|
8
8
|
//# sourceMappingURL=PlatformChecker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["isTest","global","process","env","JEST_WORKER_ID","VITEST_WORKER_ID"],"sourceRoot":"../../src","sources":["PlatformChecker.ts"],"mappings":"AAAA,OAAO,SAASA,MAAMA,CAAA,EAAY;EAChC,IAAIC,MAAM,CAACC,OAAO,IAAI,IAAI,EAAE;IAC1B;IACA,OAAO,KAAK;EACd;EACA,OACEA,OAAO,CAACC,GAAG,CAACC,cAAc,IAAI,IAAI,IAAIF,OAAO,CAACC,GAAG,CAACE,gBAAgB,IAAI,IAAI;AAE9E","ignoreList":[]}
|
package/lib/module/index.js
CHANGED
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"AAAA,cAAc,QAAQ;AACtB,cAAc,SAAS","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["Mode","Configuration"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"AAAA,cAAc,QAAQ;AACtB,cAAc,SAAS;AAEvB,SAASA,IAAI,EAAEC,aAAa,QAAQ,cAAc","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LazyTurboModule.d.ts","sourceRoot":"","sources":["../../../src/LazyTurboModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,WAAW,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"LazyTurboModule.d.ts","sourceRoot":"","sources":["../../../src/LazyTurboModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,WAAW,EAAE,MAAM,cAAc,CAAC;AAEpE,OAAO,CAAC,MAAM,CAAC;IAEb,IAAI,kBAAkB,EAAE,OAAO,GAAG,SAAS,CAAC;CAC7C;AAQD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,WAAW,EACtD,qBAAqB,EAAE,MAAM,CAAC,GAAG,IAAI,GACpC,CAAC,CA+EH"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare function
|
|
1
|
+
export declare function isTest(): boolean;
|
|
2
2
|
//# sourceMappingURL=PlatformChecker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlatformChecker.d.ts","sourceRoot":"","sources":["../../../src/PlatformChecker.ts"],"names":[],"mappings":"AAAA,wBAAgB,MAAM,IAAI,OAAO,
|
|
1
|
+
{"version":3,"file":"PlatformChecker.d.ts","sourceRoot":"","sources":["../../../src/PlatformChecker.ts"],"names":[],"mappings":"AAAA,wBAAgB,MAAM,IAAI,OAAO,CAQhC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AAExB,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-mmkv",
|
|
3
|
-
"version": "3.0.0-beta.
|
|
3
|
+
"version": "3.0.0-beta.3",
|
|
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",
|
|
@@ -73,7 +73,7 @@
|
|
|
73
73
|
"devDependencies": {
|
|
74
74
|
"@firmnav/eslint-github-actions-formatter": "^1.0.1",
|
|
75
75
|
"@jamesacarr/eslint-formatter-github-actions": "^0.2.0",
|
|
76
|
-
"@react-native-community/cli-types": "^
|
|
76
|
+
"@react-native-community/cli-types": "^14.0.0-alpha.4",
|
|
77
77
|
"@react-native/eslint-config": "^0.74.81",
|
|
78
78
|
"@release-it/conventional-changelog": "^8.0.1",
|
|
79
79
|
"@testing-library/react-native": "^12.4.3",
|
|
@@ -85,8 +85,8 @@
|
|
|
85
85
|
"eslint-plugin-prettier": "^5.0.1",
|
|
86
86
|
"jest": "^29.7.0",
|
|
87
87
|
"prettier": "^3.0.3",
|
|
88
|
-
"react": "18.3.1",
|
|
89
|
-
"react-native": "0.74.0",
|
|
88
|
+
"react": "^18.3.1",
|
|
89
|
+
"react-native": "^0.74.0",
|
|
90
90
|
"react-native-builder-bob": "^0.23.2",
|
|
91
91
|
"react-test-renderer": "18.3.1",
|
|
92
92
|
"release-it": "^17.2.1",
|
|
@@ -94,7 +94,7 @@
|
|
|
94
94
|
},
|
|
95
95
|
"resolutions": {
|
|
96
96
|
"@types/react": "^18.2.44",
|
|
97
|
-
"@react-native-community/cli": "^14.0.0-alpha.
|
|
97
|
+
"@react-native-community/cli": "^14.0.0-alpha.4"
|
|
98
98
|
},
|
|
99
99
|
"peerDependencies": {
|
|
100
100
|
"react": "*",
|
package/src/LazyTurboModule.ts
CHANGED
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
import { NativeModules, Platform, TurboModule } from 'react-native';
|
|
2
2
|
|
|
3
|
+
declare global {
|
|
4
|
+
// A react-native internal from TurboModuleRegistry.js
|
|
5
|
+
var __turboModuleProxy: unknown | undefined;
|
|
6
|
+
}
|
|
7
|
+
|
|
3
8
|
interface ModuleHolder<T> {
|
|
4
9
|
module: T | null;
|
|
5
10
|
}
|
|
6
11
|
|
|
12
|
+
const BULLET_POINT = '\n* ';
|
|
13
|
+
|
|
7
14
|
/**
|
|
8
15
|
* Lazily get a TurboModule by wrapping it in a Proxy.
|
|
9
16
|
*/
|
|
@@ -22,16 +29,44 @@ export function getLazyTurboModule<T extends TurboModule>(
|
|
|
22
29
|
|
|
23
30
|
if (target.module == null) {
|
|
24
31
|
// TurboModule not found, something went wrong!
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
+
if (global.__turboModuleProxy == null) {
|
|
33
|
+
// TurboModules are not available/new arch is not enabled.
|
|
34
|
+
// react-native-mmkv 3.x.x requires new arch (react-native >0.74)
|
|
35
|
+
// react-native-mmkv 2.x.x works on old arch (react-native <0.74)
|
|
36
|
+
throw new Error(
|
|
37
|
+
'Failed to create a new MMKV instance: react-native-mmkv 3.x.x requires TurboModules, but the new architecture is not enabled!' +
|
|
38
|
+
BULLET_POINT +
|
|
39
|
+
'Downgrade to react-native-mmkv 2.x.x if you want to stay on the old architecture.' +
|
|
40
|
+
BULLET_POINT +
|
|
41
|
+
'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)'
|
|
42
|
+
);
|
|
32
43
|
}
|
|
33
|
-
|
|
34
|
-
|
|
44
|
+
|
|
45
|
+
const message =
|
|
46
|
+
'Failed to create a new MMKV instance: The native MMKV Module could not be found.';
|
|
47
|
+
const suggestions: string[] = [];
|
|
48
|
+
suggestions.push(
|
|
49
|
+
'Make sure react-native-mmkv is correctly autolinked (run `npx react-native config` to verify)'
|
|
50
|
+
);
|
|
51
|
+
suggestions.push(
|
|
52
|
+
'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'
|
|
53
|
+
);
|
|
54
|
+
suggestions.push(
|
|
55
|
+
'Make sure you are using react-native 0.74.0 or higher, because react-native-mmkv is a C++ TurboModule.'
|
|
56
|
+
);
|
|
57
|
+
suggestions.push('Make sure you rebuilt the app.');
|
|
58
|
+
switch (Platform.OS) {
|
|
59
|
+
case 'ios':
|
|
60
|
+
case 'macos':
|
|
61
|
+
suggestions.push(
|
|
62
|
+
'Make sure you ran `pod install` in the ios/ directory.'
|
|
63
|
+
);
|
|
64
|
+
break;
|
|
65
|
+
case 'android':
|
|
66
|
+
suggestions.push('Make sure gradle is synced.');
|
|
67
|
+
break;
|
|
68
|
+
default:
|
|
69
|
+
throw new Error(`MMKV is not supported on ${Platform.OS}!`);
|
|
35
70
|
}
|
|
36
71
|
// check if Expo
|
|
37
72
|
const ExpoConstants =
|
|
@@ -45,12 +80,13 @@ export function getLazyTurboModule<T extends TurboModule>(
|
|
|
45
80
|
);
|
|
46
81
|
} else {
|
|
47
82
|
// We're running Expo bare / standalone
|
|
48
|
-
|
|
83
|
+
suggestions.push('Make sure you ran `expo prebuild`.');
|
|
49
84
|
}
|
|
50
85
|
}
|
|
51
86
|
|
|
52
|
-
|
|
53
|
-
|
|
87
|
+
const error =
|
|
88
|
+
message + BULLET_POINT + suggestions.join(BULLET_POINT);
|
|
89
|
+
throw new Error(error);
|
|
54
90
|
}
|
|
55
91
|
}
|
|
56
92
|
|
package/src/MMKV.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { AppState } from 'react-native';
|
|
2
2
|
import { createMMKV } from './createMMKV';
|
|
3
3
|
import { createMockMMKV } from './createMMKV.mock';
|
|
4
|
-
import {
|
|
4
|
+
import { isTest } from './PlatformChecker';
|
|
5
5
|
import { Configuration } from './NativeMmkv';
|
|
6
6
|
import { Listener, MMKVInterface, NativeMMKV } from './Types';
|
|
7
7
|
export { Configuration, Mode } from './NativeMmkv';
|
|
@@ -22,7 +22,7 @@ export class MMKV implements MMKVInterface {
|
|
|
22
22
|
*/
|
|
23
23
|
constructor(configuration: Configuration = { id: 'mmkv.default' }) {
|
|
24
24
|
this.id = configuration.id;
|
|
25
|
-
this.nativeInstance =
|
|
25
|
+
this.nativeInstance = isTest()
|
|
26
26
|
? createMockMMKV()
|
|
27
27
|
: createMMKV(configuration);
|
|
28
28
|
this.functionCache = {};
|
package/src/PlatformChecker.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
export function
|
|
1
|
+
export function isTest(): boolean {
|
|
2
2
|
if (global.process == null) {
|
|
3
3
|
// In a WebBrowser/Electron the `process` variable does not exist
|
|
4
4
|
return false;
|
|
5
5
|
}
|
|
6
|
-
return
|
|
6
|
+
return (
|
|
7
|
+
process.env.JEST_WORKER_ID != null || process.env.VITEST_WORKER_ID != null
|
|
8
|
+
);
|
|
7
9
|
}
|
package/src/index.ts
CHANGED