react-native-mmkv 3.0.0-beta.1 → 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.
Files changed (97) hide show
  1. package/MMKV/Core/CMakeLists.txt +12 -4
  2. package/MMKV/Core/Core.xcodeproj/project.pbxproj +13 -4
  3. package/MMKV/Core/Core.xcodeproj/xcshareddata/xcschemes/Core.xcscheme +1 -1
  4. package/MMKV/Core/Core.xcodeproj/xcshareddata/xcschemes/MMKVWatchCore.xcscheme +1 -1
  5. package/MMKV/Core/MMKV.cpp +3 -4
  6. package/MMKV/Core/MMKVLog_Android.cpp +56 -1
  7. package/MMKV/Core/MMKVPredef.h +8 -1
  8. package/MMKV/Core/MMKV_Android.cpp +3 -3
  9. package/MMKV/Core/MMKV_IO.cpp +1 -1
  10. package/MMKV/Core/MemoryFile.cpp +33 -2
  11. package/MMKV/Core/MemoryFile.h +1 -0
  12. package/MMKV/Core/MemoryFile_Android.cpp +13 -3
  13. package/MMKV/Core/MemoryFile_Linux.cpp +8 -3
  14. package/MMKV/Core/MemoryFile_Win32.cpp +3 -3
  15. package/MMKV/Core/ThreadLock.cpp +9 -5
  16. package/MMKV/Core/ThreadLock.h +2 -3
  17. package/MMKV/Core/aes/AESCrypt.h +1 -0
  18. package/MMKV/Core/aes/openssl/openssl_aes.h +12 -0
  19. package/MMKV/Core/aes/openssl/openssl_aes_core.cpp +4 -4
  20. package/MMKV/Core/core.vcxproj +102 -0
  21. package/MMKV/Core/crc32/Checksum.h +5 -0
  22. package/MMKV/Core/crc32/crc32_armv8.cpp +3 -1
  23. package/MMKV/Core/crc32/zlib/CMakeLists.txt +60 -0
  24. package/MMKV/LICENSE.TXT +193 -0
  25. package/MMKV/README.md +74 -10
  26. package/README.md +40 -8
  27. package/cpp/MMKVManagedBuffer.h +1 -6
  28. package/cpp/MmkvHostObject.cpp +1 -0
  29. package/cpp/MmkvHostObject.h +1 -6
  30. package/cpp/NativeMmkvModule.cpp +9 -6
  31. package/lib/commonjs/LazyTurboModule.js +66 -0
  32. package/lib/commonjs/LazyTurboModule.js.map +1 -0
  33. package/lib/commonjs/MMKV.js +5 -11
  34. package/lib/commonjs/MMKV.js.map +1 -1
  35. package/lib/commonjs/NativeMmkv.js +13 -44
  36. package/lib/commonjs/NativeMmkv.js.map +1 -1
  37. package/lib/commonjs/NativeMmkvPlatformContext.js +5 -1
  38. package/lib/commonjs/NativeMmkvPlatformContext.js.map +1 -1
  39. package/lib/commonjs/PlatformChecker.js +3 -3
  40. package/lib/commonjs/PlatformChecker.js.map +1 -1
  41. package/lib/commonjs/Types.js +2 -0
  42. package/lib/commonjs/Types.js.map +1 -0
  43. package/lib/commonjs/createMMKV.js +1 -2
  44. package/lib/commonjs/createMMKV.js.map +1 -1
  45. package/lib/commonjs/createMMKV.web.js.map +1 -1
  46. package/lib/commonjs/index.js +19 -0
  47. package/lib/commonjs/index.js.map +1 -1
  48. package/lib/module/LazyTurboModule.js +60 -0
  49. package/lib/module/LazyTurboModule.js.map +1 -0
  50. package/lib/module/MMKV.js +6 -13
  51. package/lib/module/MMKV.js.map +1 -1
  52. package/lib/module/NativeMmkv.js +10 -41
  53. package/lib/module/NativeMmkv.js.map +1 -1
  54. package/lib/module/NativeMmkvPlatformContext.js +5 -1
  55. package/lib/module/NativeMmkvPlatformContext.js.map +1 -1
  56. package/lib/module/PlatformChecker.js +2 -2
  57. package/lib/module/PlatformChecker.js.map +1 -1
  58. package/lib/module/Types.js +2 -0
  59. package/lib/module/Types.js.map +1 -0
  60. package/lib/module/createMMKV.js +2 -3
  61. package/lib/module/createMMKV.js.map +1 -1
  62. package/lib/module/createMMKV.web.js.map +1 -1
  63. package/lib/module/index.js +1 -0
  64. package/lib/module/index.js.map +1 -1
  65. package/lib/typescript/src/LazyTurboModule.d.ts +9 -0
  66. package/lib/typescript/src/LazyTurboModule.d.ts.map +1 -0
  67. package/lib/typescript/src/MMKV.d.ts +1 -85
  68. package/lib/typescript/src/MMKV.d.ts.map +1 -1
  69. package/lib/typescript/src/NativeMmkv.d.ts +9 -5
  70. package/lib/typescript/src/NativeMmkv.d.ts.map +1 -1
  71. package/lib/typescript/src/NativeMmkvPlatformContext.d.ts.map +1 -1
  72. package/lib/typescript/src/PlatformChecker.d.ts +1 -1
  73. package/lib/typescript/src/PlatformChecker.d.ts.map +1 -1
  74. package/lib/typescript/src/Types.d.ts +86 -0
  75. package/lib/typescript/src/Types.d.ts.map +1 -0
  76. package/lib/typescript/src/createMMKV.d.ts +2 -1
  77. package/lib/typescript/src/createMMKV.d.ts.map +1 -1
  78. package/lib/typescript/src/createMMKV.mock.d.ts +1 -1
  79. package/lib/typescript/src/createMMKV.mock.d.ts.map +1 -1
  80. package/lib/typescript/src/createMMKV.web.d.ts +2 -1
  81. package/lib/typescript/src/createMMKV.web.d.ts.map +1 -1
  82. package/lib/typescript/src/index.d.ts +1 -0
  83. package/lib/typescript/src/index.d.ts.map +1 -1
  84. package/package.json +17 -14
  85. package/react-native.config.js +20 -0
  86. package/src/LazyTurboModule.ts +98 -0
  87. package/src/MMKV.ts +7 -98
  88. package/src/NativeMmkv.ts +19 -46
  89. package/src/NativeMmkvPlatformContext.ts +5 -3
  90. package/src/PlatformChecker.ts +4 -2
  91. package/src/Types.ts +89 -0
  92. package/src/__tests__/hooks.test.tsx +1 -0
  93. package/src/createMMKV.mock.ts +1 -1
  94. package/src/createMMKV.ts +4 -5
  95. package/src/createMMKV.web.ts +2 -1
  96. package/src/index.ts +4 -0
  97. package/src/index.tsx +0 -2
package/README.md CHANGED
@@ -32,17 +32,24 @@
32
32
 
33
33
  ## Features
34
34
 
35
- * **Get** and **set** strings, booleans and numbers
35
+ * **Get** and **set** strings, booleans, numbers and ArrayBuffers
36
36
  * **Fully synchronous** calls, no async/await, no Promises, no Bridge.
37
37
  * **Encryption** support (secure storage)
38
38
  * **Multiple instances** support (separate user-data with global data)
39
39
  * **Customize storage location**
40
40
  * **High performance** because everything is **written in C++**
41
41
  * **~30x faster than AsyncStorage**
42
- * Uses [**JSI**](https://github.com/react-native-community/discussions-and-proposals/issues/91) instead of the "old" Bridge
42
+ * Uses [**JSI**](https://reactnative.dev/docs/the-new-architecture/landing-page#fast-javascriptnative-interfacing) and [**C++ TurboModules**](https://github.com/reactwg/react-native-new-architecture/blob/main/docs/turbo-modules-xplat.md) instead of the "old" Bridge
43
43
  * **iOS**, **Android** and **Web** support
44
44
  * Easy to use **React Hooks** API
45
45
 
46
+ ## react-native-mmkv V3
47
+
48
+ > [!IMPORTANT]
49
+ > react-native-mmkv V3 is now a pure C++ TurboModule, and **requires the new architecture to be enabled**.
50
+ > - If you want to use react-native-mmkv 3.x.x, you need to enable the new architecture in your app (see ["Enable the New Architecture for Apps"](https://github.com/reactwg/react-native-new-architecture/blob/main/docs/enable-apps.md))
51
+ > - If you cannot use the new architecture yet, downgrade to react-native-mmkv 2.x.x for now.
52
+
46
53
  ## Sponsors
47
54
 
48
55
  <div align="right">
@@ -100,7 +107,7 @@ export const storage = new MMKV()
100
107
 
101
108
  This creates a new storage instance using the default MMKV storage ID (`mmkv.default`).
102
109
 
103
- #### App Groups
110
+ #### App Groups or Extensions
104
111
 
105
112
  If you want to share MMKV data between your app and other apps or app extensions in the same group, open `Info.plist` and create an `AppGroup` key with your app group's value. MMKV will then automatically store data inside the app group which can be read and written to from other apps or app extensions in the same group by making use of MMKV's multi processing mode.
106
113
  See [Configuring App Groups](https://developer.apple.com/documentation/xcode/configuring-app-groups).
@@ -108,12 +115,13 @@ See [Configuring App Groups](https://developer.apple.com/documentation/xcode/con
108
115
  #### Customize
109
116
 
110
117
  ```js
111
- import { MMKV } from 'react-native-mmkv'
118
+ import { MMKV, Mode } from 'react-native-mmkv'
112
119
 
113
120
  export const storage = new MMKV({
114
121
  id: `user-${userId}-storage`,
115
122
  path: `${USER_DIRECTORY}/storage`,
116
- encryptionKey: 'hunter2'
123
+ encryptionKey: 'hunter2',
124
+ mode: Mode.MULTI_PROCESS
117
125
  })
118
126
  ```
119
127
 
@@ -124,6 +132,7 @@ The following values can be configured:
124
132
  * `id`: The MMKV instance's ID. If you want to use multiple instances, use different IDs. For example, you can separate the global app's storage and a logged-in user's storage. (required if `path` or `encryptionKey` fields are specified, otherwise defaults to: `'mmkv.default'`)
125
133
  * `path`: The MMKV instance's root path. By default, MMKV stores file inside `$(Documents)/mmkv/`. You can customize MMKV's root directory on MMKV initialization (documentation: [iOS](https://github.com/Tencent/MMKV/wiki/iOS_advance#customize-location) / [Android](https://github.com/Tencent/MMKV/wiki/android_advance#customize-location))
126
134
  * `encryptionKey`: The MMKV instance's encryption/decryption key. By default, MMKV stores all key-values in plain text on file, relying on iOS's/Android's sandbox to make sure the file is encrypted. Should you worry about information leaking, you can choose to encrypt MMKV. (documentation: [iOS](https://github.com/Tencent/MMKV/wiki/iOS_advance#encryption) / [Android](https://github.com/Tencent/MMKV/wiki/android_advance#encryption))
135
+ * `mode`: The MMKV's process behaviour - when set to `MULTI_PROCESS`, the MMKV instance will assume data can be changed from the outside (e.g. App Clips, Extensions or App Groups).
127
136
 
128
137
  ### Set
129
138
 
@@ -141,6 +150,14 @@ const age = storage.getNumber('user.age') // 21
141
150
  const isMmkvFastAsf = storage.getBoolean('is-mmkv-fast-asf') // true
142
151
  ```
143
152
 
153
+ ### Hooks
154
+
155
+ ```js
156
+ const [username, setUsername] = useMMKVString('user.name')
157
+ const [age, setAge] = useMMKVNumber('user.age')
158
+ const [isMmkvFastAsf, setIsMmkvFastAf] = useMMKVBoolean('is-mmkv-fast-asf')
159
+ ```
160
+
144
161
  ### Keys
145
162
 
146
163
  ```js
@@ -197,9 +214,20 @@ const buffer = storage.getBuffer('someToken')
197
214
  console.log(buffer) // [1, 100, 255]
198
215
  ```
199
216
 
200
- ## Testing with Jest
217
+ ### Size
201
218
 
202
- A mocked MMKV instance is automatically used when testing with Jest, so you will be able to use `new MMKV()` as per normal in your tests. Refer to [example/test/MMKV.test.ts](example/test/MMKV.test.ts) for an example.
219
+ ```js
220
+ // get size of MMKV storage in bytes
221
+ const size = storage.size
222
+ if (size >= 4096) {
223
+ // clean unused keys and clear memory cache
224
+ storage.trim()
225
+ }
226
+ ```
227
+
228
+ ## Testing with Jest or Vitest
229
+
230
+ A mocked MMKV instance is automatically used when testing with Jest or Vitest, so you will be able to use `new MMKV()` as per normal in your tests. Refer to [example/test/MMKV.test.ts](example/test/MMKV.test.ts) for an example using Jest.
203
231
 
204
232
  ## Documentation
205
233
 
@@ -221,7 +249,11 @@ If a user chooses to disable LocalStorage in their browser, the library will aut
221
249
 
222
250
  ## Limitations
223
251
 
224
- As the library uses JSI for synchronous native methods access, remote debugging (e.g. with Chrome) is no longer possible. Instead, you should use [Flipper](https://fbflipper.com).
252
+ - react-native-mmkv V3 requires react-native 0.74 or higher.
253
+ - react-native-mmkv V3 requires [the new architecture](https://reactnative.dev/docs/the-new-architecture/landing-page)/TurboModules to be enabled.
254
+ - Since react-native-mmkv uses JSI for synchronous native method invocations, remote debugging (e.g. with Chrome) is no longer possible. Instead, you should use [Flipper](https://fbflipper.com) or [React DevTools](https://react.dev/learn/react-developer-tools).
255
+
256
+ ## Integrations
225
257
 
226
258
  ### Flipper
227
259
 
@@ -7,13 +7,8 @@
7
7
 
8
8
  #pragma once
9
9
 
10
- #include <jsi/jsi.h>
11
-
12
- #if __has_include("MMKVManagedBuffer.h")
13
10
  #include "MMKVManagedBuffer.h"
14
- #else
15
- #include <MMKVCore/MMKVManagedBuffer.h>
16
- #endif
11
+ #include <jsi/jsi.h>
17
12
 
18
13
  using namespace facebook;
19
14
 
@@ -52,6 +52,7 @@ MmkvHostObject::~MmkvHostObject() {
52
52
  if (instance != nullptr) {
53
53
  std::string instanceId = instance->mmapID();
54
54
  Logger::log("RNMMKV", "Destroying MMKV instance \"%s\"...", instanceId.c_str());
55
+ instance->sync();
55
56
  instance->clearMemoryCache();
56
57
  }
57
58
  instance = nullptr;
@@ -8,15 +8,10 @@
8
8
 
9
9
  #pragma once
10
10
 
11
+ #include "MMKV.h"
11
12
  #include "NativeMmkvModule.h"
12
13
  #include <jsi/jsi.h>
13
14
 
14
- #if __has_include("MMKV.h")
15
- #include "MMKV.h"
16
- #else
17
- #include <MMKVCore/MMKV.h>
18
- #endif
19
-
20
15
  using namespace facebook;
21
16
  using namespace mmkv;
22
17
 
@@ -16,21 +16,24 @@ 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.size() < 1) {
19
+ if (basePath.empty()) {
20
20
  throw jsi::JSError(runtime, "Path cannot be empty!");
21
21
  }
22
22
 
23
23
  Logger::log("RNMMKV", "Initializing MMKV at %s...", basePath.c_str());
24
24
 
25
- MMKV::initializeMMKV(basePath);
25
+ #ifdef DEBUG
26
+ MMKVLogLevel logLevel = MMKVLogDebug;
27
+ #else
28
+ MMKVLogLevel logLevel = MMKVLogWarning;
29
+ #endif
30
+
31
+ MMKV::initializeMMKV(basePath, logLevel);
26
32
 
27
33
  return true;
28
34
  }
29
35
 
30
- NativeMmkvModule::~NativeMmkvModule() {
31
- Logger::log("RNMMKV", "Closing all MMKV instances...");
32
- MMKV::onExit();
33
- }
36
+ NativeMmkvModule::~NativeMmkvModule() {}
34
37
 
35
38
  jsi::Object NativeMmkvModule::createMMKV(jsi::Runtime& runtime, MMKVConfig config) {
36
39
  auto instance = std::make_shared<MmkvHostObject>(config);
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getLazyTurboModule = getLazyTurboModule;
7
+ var _reactNative = require("react-native");
8
+ const BULLET_POINT = '\n* ';
9
+
10
+ /**
11
+ * Lazily get a TurboModule by wrapping it in a Proxy.
12
+ */
13
+ function getLazyTurboModule(initializeTurboModule) {
14
+ const proxy = new Proxy({
15
+ module: null
16
+ }, {
17
+ get: (target, property) => {
18
+ if (target.module == null) {
19
+ // Target is null, let's initialize it!
20
+ target.module = initializeTurboModule();
21
+ if (target.module == null) {
22
+ // TurboModule not found, something went wrong!
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)');
28
+ }
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}!`);
45
+ }
46
+ // check if Expo
47
+ const ExpoConstants = _reactNative.NativeModules.NativeUnimoduleProxy?.modulesConstants?.ExponentConstants;
48
+ if (ExpoConstants != null) {
49
+ if (ExpoConstants.appOwnership === 'expo') {
50
+ // We're running Expo Go
51
+ throw new Error('react-native-mmkv is not supported in Expo Go! Use EAS (`expo prebuild`) or eject to a bare workflow instead.');
52
+ } else {
53
+ // We're running Expo bare / standalone
54
+ suggestions.push('Make sure you ran `expo prebuild`.');
55
+ }
56
+ }
57
+ const error = message + BULLET_POINT + suggestions.join(BULLET_POINT);
58
+ throw new Error(error);
59
+ }
60
+ }
61
+ return target.module[property];
62
+ }
63
+ });
64
+ return proxy;
65
+ }
66
+ //# sourceMappingURL=LazyTurboModule.js.map
@@ -0,0 +1 @@
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":[]}
@@ -21,10 +21,6 @@ var _createMMKV = require("./createMMKV");
21
21
  var _createMMKV2 = require("./createMMKV.mock");
22
22
  var _PlatformChecker = require("./PlatformChecker");
23
23
  var _NativeMmkv = require("./NativeMmkv");
24
- /**
25
- * Represents a single MMKV instance.
26
- */
27
-
28
24
  const onValueChangedListeners = new Map();
29
25
 
30
26
  /**
@@ -39,14 +35,12 @@ class MMKV {
39
35
  id: 'mmkv.default'
40
36
  }) {
41
37
  this.id = configuration.id;
42
- this.nativeInstance = (0, _PlatformChecker.isJest)() ? (0, _createMMKV2.createMockMMKV)() : (0, _createMMKV.createMMKV)(configuration);
38
+ this.nativeInstance = (0, _PlatformChecker.isTest)() ? (0, _createMMKV2.createMockMMKV)() : (0, _createMMKV.createMMKV)(configuration);
43
39
  this.functionCache = {};
44
- if ('WeakRef' in global) {
45
- const weakSelf = new WeakRef(this);
46
- _reactNative.AppState.addEventListener('memoryWarning', () => {
47
- weakSelf.deref()?.trim();
48
- });
49
- }
40
+ _reactNative.AppState.addEventListener('memoryWarning', () => {
41
+ // when we have a memory warning, delete unused keys by trimming MMKV
42
+ this.trim();
43
+ });
50
44
  }
51
45
  get onValueChangedListeners() {
52
46
  if (!onValueChangedListeners.has(this.id)) {
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_createMMKV","_createMMKV2","_PlatformChecker","_NativeMmkv","onValueChangedListeners","Map","MMKV","constructor","configuration","id","nativeInstance","isJest","createMockMMKV","createMMKV","functionCache","global","weakSelf","WeakRef","AppState","addEventListener","deref","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":[]}
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,9 +3,9 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.Mode = void 0;
7
- exports.getMMKVTurboModule = getMMKVTurboModule;
6
+ exports.Mode = exports.MMKVTurboModule = void 0;
8
7
  var _reactNative = require("react-native");
8
+ var _LazyTurboModule = require("./LazyTurboModule");
9
9
  var _NativeMmkvPlatformContext = require("./NativeMmkvPlatformContext");
10
10
  /**
11
11
  * Configures the mode of the MMKV instance.
@@ -18,49 +18,18 @@ let Mode = exports.Mode = /*#__PURE__*/function (Mode) {
18
18
  /**
19
19
  * Used for configuration of a single MMKV instance.
20
20
  */
21
- let _module = null;
22
21
  let basePath = null;
23
-
24
- /**
25
- * Get the MMKV TurboModule, and initialize it if this is the first time calling.
26
- * This will throw an error if the module cannot be found.
27
- */
28
- function getMMKVTurboModule() {
29
- if (_module == null) {
30
- // try to find the turbomodule
31
- _module = _reactNative.TurboModuleRegistry.get('MmkvCxx');
32
- if (_module == null) {
33
- // if it still is null, something went wrong!
34
- let message = 'Failed to create a new MMKV instance: The native MMKV Module could not be found.';
35
- message += '\n* Make sure react-native-mmkv is correctly autolinked (run `npx react-native config` to verify)';
36
- if (_reactNative.Platform.OS === 'ios' || _reactNative.Platform.OS === 'macos') {
37
- message += '\n* Make sure you ran `pod install` in the ios/ directory.';
38
- }
39
- if (_reactNative.Platform.OS === 'android') {
40
- message += '\n* Make sure gradle is synced.';
41
- }
42
- // check if Expo
43
- const ExpoConstants = _reactNative.NativeModules.NativeUnimoduleProxy?.modulesConstants?.ExponentConstants;
44
- if (ExpoConstants != null) {
45
- if (ExpoConstants.appOwnership === 'expo') {
46
- // We're running Expo Go
47
- throw new Error('react-native-mmkv is not supported in Expo Go! Use EAS (`expo prebuild`) or eject to a bare workflow instead.');
48
- } else {
49
- // We're running Expo bare / standalone
50
- message += '\n* Make sure you ran `expo prebuild`.';
51
- }
52
- }
53
- message += '\n* Make sure you rebuilt the app.';
54
- throw new Error(message);
55
- }
56
- if (basePath == null) {
57
- // Get base path from platform specific context
58
- basePath = _NativeMmkvPlatformContext.PlatformContext.getBaseDirectory();
59
- }
60
-
61
- // Initialize MMKV
62
- _module.initialize(basePath);
22
+ function getNativeModule() {
23
+ if (basePath == null) {
24
+ // use default base path from the Platform (iOS/Android)
25
+ basePath = _NativeMmkvPlatformContext.PlatformContext.getBaseDirectory();
26
+ }
27
+ const module = _reactNative.TurboModuleRegistry.get('MmkvCxx');
28
+ if (module != null) {
29
+ // initialize MMKV
30
+ module.initialize(basePath);
63
31
  }
64
- return _module;
32
+ return module;
65
33
  }
34
+ const MMKVTurboModule = exports.MMKVTurboModule = (0, _LazyTurboModule.getLazyTurboModule)(getNativeModule);
66
35
  //# sourceMappingURL=NativeMmkv.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_NativeMmkvPlatformContext","Mode","exports","module","basePath","getMMKVTurboModule","TurboModuleRegistry","get","message","Platform","OS","ExpoConstants","NativeModules","NativeUnimoduleProxy","modulesConstants","ExponentConstants","appOwnership","Error","PlatformContext","getBaseDirectory","initialize"],"sourceRoot":"../../src","sources":["NativeMmkv.ts"],"mappings":";;;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAGA,IAAAC,0BAAA,GAAAD,OAAA;AAEA;AACA;AACA;AAFA,IAGYE,IAAI,GAAAC,OAAA,CAAAD,IAAA,0BAAJA,IAAI;EAAJA,IAAI,CAAJA,IAAI;EAAJA,IAAI,CAAJA,IAAI;EAAA,OAAJA,IAAI;AAAA;AAWhB;AACA;AACA;AAyDA,IAAIE,OAAmB,GAAG,IAAI;AAC9B,IAAIC,QAAuB,GAAG,IAAI;;AAElC;AACA;AACA;AACA;AACO,SAASC,kBAAkBA,CAAA,EAAS;EACzC,IAAIF,OAAM,IAAI,IAAI,EAAE;IAClB;IACAA,OAAM,GAAGG,gCAAmB,CAACC,GAAG,CAAO,SAAS,CAAC;IAEjD,IAAIJ,OAAM,IAAI,IAAI,EAAE;MAClB;MACA,IAAIK,OAAO,GACT,kFAAkF;MACpFA,OAAO,IACL,mGAAmG;MACrG,IAAIC,qBAAQ,CAACC,EAAE,KAAK,KAAK,IAAID,qBAAQ,CAACC,EAAE,KAAK,OAAO,EAAE;QACpDF,OAAO,IAAI,4DAA4D;MACzE;MACA,IAAIC,qBAAQ,CAACC,EAAE,KAAK,SAAS,EAAE;QAC7BF,OAAO,IAAI,iCAAiC;MAC9C;MACA;MACA,MAAMG,aAAa,GACjBC,0BAAa,CAACC,oBAAoB,EAAEC,gBAAgB,EAAEC,iBAAiB;MACzE,IAAIJ,aAAa,IAAI,IAAI,EAAE;QACzB,IAAIA,aAAa,CAACK,YAAY,KAAK,MAAM,EAAE;UACzC;UACA,MAAM,IAAIC,KAAK,CACb,+GACF,CAAC;QACH,CAAC,MAAM;UACL;UACAT,OAAO,IAAI,wCAAwC;QACrD;MACF;MAEAA,OAAO,IAAI,oCAAoC;MAC/C,MAAM,IAAIS,KAAK,CAACT,OAAO,CAAC;IAC1B;IAEA,IAAIJ,QAAQ,IAAI,IAAI,EAAE;MACpB;MACAA,QAAQ,GAAGc,0CAAe,CAACC,gBAAgB,CAAC,CAAC;IAC/C;;IAEA;IACAhB,OAAM,CAACiB,UAAU,CAAChB,QAAQ,CAAC;EAC7B;EAEA,OAAOD,OAAM;AACf","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","_LazyTurboModule","_NativeMmkvPlatformContext","Mode","exports","basePath","getNativeModule","PlatformContext","getBaseDirectory","module","TurboModuleRegistry","get","initialize","MMKVTurboModule","getLazyTurboModule"],"sourceRoot":"../../src","sources":["NativeMmkv.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAEA,IAAAC,gBAAA,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,QAAuB,GAAG,IAAI;AAElC,SAASC,eAAeA,CAAA,EAAgB;EACtC,IAAID,QAAQ,IAAI,IAAI,EAAE;IACpB;IACAA,QAAQ,GAAGE,0CAAe,CAACC,gBAAgB,CAAC,CAAC;EAC/C;EAEA,MAAMC,MAAM,GAAGC,gCAAmB,CAACC,GAAG,CAAO,SAAS,CAAC;EAEvD,IAAIF,MAAM,IAAI,IAAI,EAAE;IAClB;IACAA,MAAM,CAACG,UAAU,CAACP,QAAQ,CAAC;EAC7B;EAEA,OAAOI,MAAM;AACf;AACO,MAAMI,eAAe,GAAAT,OAAA,CAAAS,eAAA,GAAG,IAAAC,mCAAkB,EAACR,eAAe,CAAC","ignoreList":[]}
@@ -5,5 +5,9 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.PlatformContext = void 0;
7
7
  var _reactNative = require("react-native");
8
- const PlatformContext = exports.PlatformContext = _reactNative.TurboModuleRegistry.getEnforcing('MmkvPlatformContext');
8
+ var _LazyTurboModule = require("./LazyTurboModule");
9
+ function getModule() {
10
+ return _reactNative.TurboModuleRegistry.get('MmkvPlatformContext');
11
+ }
12
+ const PlatformContext = exports.PlatformContext = (0, _LazyTurboModule.getLazyTurboModule)(getModule);
9
13
  //# sourceMappingURL=NativeMmkvPlatformContext.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","PlatformContext","exports","TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["NativeMmkvPlatformContext.ts"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AASO,MAAMC,eAAe,GAAAC,OAAA,CAAAD,eAAA,GAAGE,gCAAmB,CAACC,YAAY,CAC7D,qBACF,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","_LazyTurboModule","getModule","TurboModuleRegistry","get","PlatformContext","exports","getLazyTurboModule"],"sourceRoot":"../../src","sources":["NativeMmkvPlatformContext.ts"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,gBAAA,GAAAD,OAAA;AASA,SAASE,SAASA,CAAA,EAAgB;EAChC,OAAOC,gCAAmB,CAACC,GAAG,CAAO,qBAAqB,CAAC;AAC7D;AACO,MAAMC,eAAe,GAAAC,OAAA,CAAAD,eAAA,GAAG,IAAAE,mCAAkB,EAACL,SAAS,CAAC","ignoreList":[]}
@@ -3,12 +3,12 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.isJest = isJest;
7
- function isJest() {
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":["isJest","global","process","env","JEST_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,OAAOA,OAAO,CAACC,GAAG,CAACC,cAAc,IAAI,IAAI;AAC3C","ignoreList":[]}
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":[]}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=Types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../src","sources":["Types.ts"],"mappings":"","ignoreList":[]}
@@ -5,9 +5,8 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.createMMKV = void 0;
7
7
  var _NativeMmkv = require("./NativeMmkv");
8
- const _module = (0, _NativeMmkv.getMMKVTurboModule)();
9
8
  const createMMKV = config => {
10
- const instance = _module.createMMKV(config);
9
+ const instance = _NativeMmkv.MMKVTurboModule.createMMKV(config);
11
10
  if (__DEV__) {
12
11
  if (typeof instance !== 'object' || instance == null) {
13
12
  throw new Error('Failed to create MMKV instance - an unknown object was returned by createMMKV(..)!');
@@ -1 +1 @@
1
- {"version":3,"names":["_NativeMmkv","require","module","getMMKVTurboModule","createMMKV","config","instance","__DEV__","Error","exports"],"sourceRoot":"../../src","sources":["createMMKV.ts"],"mappings":";;;;;;AACA,IAAAA,WAAA,GAAAC,OAAA;AAEA,MAAMC,OAAM,GAAG,IAAAC,8BAAkB,EAAC,CAAC;AAE5B,MAAMC,UAAU,GAAIC,MAAqB,IAAiB;EAC/D,MAAMC,QAAQ,GAAGJ,OAAM,CAACE,UAAU,CAACC,MAAM,CAAC;EAC1C,IAAIE,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,CAAAL,UAAA,GAAAA,UAAA","ignoreList":[]}
1
+ {"version":3,"names":["_NativeMmkv","require","createMMKV","config","instance","MMKVTurboModule","__DEV__","Error","exports"],"sourceRoot":"../../src","sources":["createMMKV.ts"],"mappings":";;;;;;AACA,IAAAA,WAAA,GAAAC,OAAA;AAGO,MAAMC,UAAU,GAAIC,MAAqB,IAAiB;EAC/D,MAAMC,QAAQ,GAAGC,2BAAe,CAACH,UAAU,CAACC,MAAM,CAAC;EACnD,IAAIG,OAAO,EAAE;IACX,IAAI,OAAOF,QAAQ,KAAK,QAAQ,IAAIA,QAAQ,IAAI,IAAI,EAAE;MACpD,MAAM,IAAIG,KAAK,CACb,oFACF,CAAC;IACH;EACF;EACA,OAAOH,QAAQ;AACjB,CAAC;AAACI,OAAA,CAAAN,UAAA,GAAAA,UAAA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_createTextEncoder","require","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","trim","exports"],"sourceRoot":"../../src","sources":["createMMKV.web.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_createTextEncoder","require","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","trim","exports"],"sourceRoot":"../../src","sources":["createMMKV.web.ts"],"mappings":"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","ignoreList":[]}
@@ -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.tsx"],"mappings":";;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,KAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,KAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,KAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAK,MAAA,GAAAT,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAO,MAAA,EAAAN,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAK,MAAA,CAAAL,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,MAAA,CAAAL,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
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":[]}
@@ -0,0 +1,60 @@
1
+ import { NativeModules, Platform } from 'react-native';
2
+ const BULLET_POINT = '\n* ';
3
+
4
+ /**
5
+ * Lazily get a TurboModule by wrapping it in a Proxy.
6
+ */
7
+ export function getLazyTurboModule(initializeTurboModule) {
8
+ const proxy = new Proxy({
9
+ module: null
10
+ }, {
11
+ get: (target, property) => {
12
+ if (target.module == null) {
13
+ // Target is null, let's initialize it!
14
+ target.module = initializeTurboModule();
15
+ if (target.module == null) {
16
+ // TurboModule not found, something went wrong!
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)');
22
+ }
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}!`);
39
+ }
40
+ // check if Expo
41
+ const ExpoConstants = NativeModules.NativeUnimoduleProxy?.modulesConstants?.ExponentConstants;
42
+ if (ExpoConstants != null) {
43
+ if (ExpoConstants.appOwnership === 'expo') {
44
+ // We're running Expo Go
45
+ throw new Error('react-native-mmkv is not supported in Expo Go! Use EAS (`expo prebuild`) or eject to a bare workflow instead.');
46
+ } else {
47
+ // We're running Expo bare / standalone
48
+ suggestions.push('Make sure you ran `expo prebuild`.');
49
+ }
50
+ }
51
+ const error = message + BULLET_POINT + suggestions.join(BULLET_POINT);
52
+ throw new Error(error);
53
+ }
54
+ }
55
+ return target.module[property];
56
+ }
57
+ });
58
+ return proxy;
59
+ }
60
+ //# sourceMappingURL=LazyTurboModule.js.map
@@ -0,0 +1 @@
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":[]}