react-native-mmkv 3.0.0-beta.1 → 3.0.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +28 -3
- package/cpp/MMKVManagedBuffer.h +1 -6
- package/cpp/MmkvHostObject.h +1 -6
- package/cpp/NativeMmkvModule.cpp +7 -1
- package/lib/commonjs/LazyTurboModule.js +49 -0
- package/lib/commonjs/LazyTurboModule.js.map +1 -0
- package/lib/commonjs/MMKV.js +4 -10
- package/lib/commonjs/MMKV.js.map +1 -1
- package/lib/commonjs/NativeMmkv.js +13 -44
- package/lib/commonjs/NativeMmkv.js.map +1 -1
- package/lib/commonjs/NativeMmkvPlatformContext.js +5 -1
- package/lib/commonjs/NativeMmkvPlatformContext.js.map +1 -1
- package/lib/commonjs/Types.js +2 -0
- package/lib/commonjs/Types.js.map +1 -0
- package/lib/commonjs/createMMKV.js +1 -2
- package/lib/commonjs/createMMKV.js.map +1 -1
- package/lib/commonjs/createMMKV.web.js.map +1 -1
- package/lib/commonjs/index.js.map +1 -1
- package/lib/module/LazyTurboModule.js +43 -0
- package/lib/module/LazyTurboModule.js.map +1 -0
- package/lib/module/MMKV.js +4 -11
- package/lib/module/MMKV.js.map +1 -1
- package/lib/module/NativeMmkv.js +10 -41
- package/lib/module/NativeMmkv.js.map +1 -1
- package/lib/module/NativeMmkvPlatformContext.js +5 -1
- package/lib/module/NativeMmkvPlatformContext.js.map +1 -1
- package/lib/module/Types.js +2 -0
- package/lib/module/Types.js.map +1 -0
- package/lib/module/createMMKV.js +2 -3
- package/lib/module/createMMKV.js.map +1 -1
- package/lib/module/createMMKV.web.js.map +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/src/LazyTurboModule.d.ts +6 -0
- package/lib/typescript/src/LazyTurboModule.d.ts.map +1 -0
- package/lib/typescript/src/MMKV.d.ts +1 -85
- package/lib/typescript/src/MMKV.d.ts.map +1 -1
- package/lib/typescript/src/NativeMmkv.d.ts +9 -5
- package/lib/typescript/src/NativeMmkv.d.ts.map +1 -1
- package/lib/typescript/src/NativeMmkvPlatformContext.d.ts.map +1 -1
- package/lib/typescript/src/Types.d.ts +86 -0
- package/lib/typescript/src/Types.d.ts.map +1 -0
- package/lib/typescript/src/createMMKV.d.ts +2 -1
- package/lib/typescript/src/createMMKV.d.ts.map +1 -1
- package/lib/typescript/src/createMMKV.mock.d.ts +1 -1
- package/lib/typescript/src/createMMKV.mock.d.ts.map +1 -1
- package/lib/typescript/src/createMMKV.web.d.ts +2 -1
- package/lib/typescript/src/createMMKV.web.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/package.json +17 -14
- package/react-native.config.js +20 -0
- package/src/LazyTurboModule.ts +62 -0
- package/src/MMKV.ts +5 -96
- package/src/NativeMmkv.ts +19 -46
- package/src/NativeMmkvPlatformContext.ts +5 -3
- package/src/Types.ts +89 -0
- package/src/__tests__/hooks.test.tsx +1 -0
- package/src/createMMKV.mock.ts +1 -1
- package/src/createMMKV.ts +4 -5
- package/src/createMMKV.web.ts +2 -1
- /package/src/{index.tsx → index.ts} +0 -0
package/README.md
CHANGED
|
@@ -100,7 +100,7 @@ export const storage = new MMKV()
|
|
|
100
100
|
|
|
101
101
|
This creates a new storage instance using the default MMKV storage ID (`mmkv.default`).
|
|
102
102
|
|
|
103
|
-
#### App Groups
|
|
103
|
+
#### App Groups or Extensions
|
|
104
104
|
|
|
105
105
|
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
106
|
See [Configuring App Groups](https://developer.apple.com/documentation/xcode/configuring-app-groups).
|
|
@@ -113,7 +113,8 @@ import { MMKV } from 'react-native-mmkv'
|
|
|
113
113
|
export const storage = new MMKV({
|
|
114
114
|
id: `user-${userId}-storage`,
|
|
115
115
|
path: `${USER_DIRECTORY}/storage`,
|
|
116
|
-
encryptionKey: 'hunter2'
|
|
116
|
+
encryptionKey: 'hunter2',
|
|
117
|
+
mode: Mode.MULTI_PROCESS
|
|
117
118
|
})
|
|
118
119
|
```
|
|
119
120
|
|
|
@@ -124,6 +125,7 @@ The following values can be configured:
|
|
|
124
125
|
* `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
126
|
* `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
127
|
* `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))
|
|
128
|
+
* `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
129
|
|
|
128
130
|
### Set
|
|
129
131
|
|
|
@@ -141,6 +143,14 @@ const age = storage.getNumber('user.age') // 21
|
|
|
141
143
|
const isMmkvFastAsf = storage.getBoolean('is-mmkv-fast-asf') // true
|
|
142
144
|
```
|
|
143
145
|
|
|
146
|
+
### Hooks
|
|
147
|
+
|
|
148
|
+
```js
|
|
149
|
+
const [username, setUsername] = useMMKVString('user.name')
|
|
150
|
+
const [age, setAge] = useMMKVNumber('user.age')
|
|
151
|
+
const [isMmkvFastAsf, setIsMmkvFastAf] = useMMKVBoolean('is-mmkv-fast-asf')
|
|
152
|
+
```
|
|
153
|
+
|
|
144
154
|
### Keys
|
|
145
155
|
|
|
146
156
|
```js
|
|
@@ -197,6 +207,17 @@ const buffer = storage.getBuffer('someToken')
|
|
|
197
207
|
console.log(buffer) // [1, 100, 255]
|
|
198
208
|
```
|
|
199
209
|
|
|
210
|
+
### Size
|
|
211
|
+
|
|
212
|
+
```js
|
|
213
|
+
// get size of MMKV storage in bytes
|
|
214
|
+
const size = storage.size
|
|
215
|
+
if (size >= 4096) {
|
|
216
|
+
// clean unused keys and clear memory cache
|
|
217
|
+
storage.trim()
|
|
218
|
+
}
|
|
219
|
+
```
|
|
220
|
+
|
|
200
221
|
## Testing with Jest
|
|
201
222
|
|
|
202
223
|
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.
|
|
@@ -221,7 +242,11 @@ If a user chooses to disable LocalStorage in their browser, the library will aut
|
|
|
221
242
|
|
|
222
243
|
## Limitations
|
|
223
244
|
|
|
224
|
-
|
|
245
|
+
- react-native-mmkv V3 requires react-native 0.74 or higher.
|
|
246
|
+
- react-native-mmkv V3 requires [the new architecture](https://reactnative.dev/docs/the-new-architecture/landing-page)/TurboModules to be enabled.
|
|
247
|
+
- 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).
|
|
248
|
+
|
|
249
|
+
## Integrations
|
|
225
250
|
|
|
226
251
|
### Flipper
|
|
227
252
|
|
package/cpp/MMKVManagedBuffer.h
CHANGED
package/cpp/MmkvHostObject.h
CHANGED
|
@@ -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
|
|
package/cpp/NativeMmkvModule.cpp
CHANGED
|
@@ -22,7 +22,13 @@ bool NativeMmkvModule::initialize(jsi::Runtime& runtime, std::string basePath) {
|
|
|
22
22
|
|
|
23
23
|
Logger::log("RNMMKV", "Initializing MMKV at %s...", basePath.c_str());
|
|
24
24
|
|
|
25
|
-
|
|
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
|
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getLazyTurboModule = getLazyTurboModule;
|
|
7
|
+
var _reactNative = require("react-native");
|
|
8
|
+
/**
|
|
9
|
+
* Lazily get a TurboModule by wrapping it in a Proxy.
|
|
10
|
+
*/
|
|
11
|
+
function getLazyTurboModule(initializeTurboModule) {
|
|
12
|
+
const proxy = new Proxy({
|
|
13
|
+
module: null
|
|
14
|
+
}, {
|
|
15
|
+
get: (target, property) => {
|
|
16
|
+
if (target.module == null) {
|
|
17
|
+
// Target is null, let's initialize it!
|
|
18
|
+
target.module = initializeTurboModule();
|
|
19
|
+
if (target.module == null) {
|
|
20
|
+
// TurboModule not found, something went wrong!
|
|
21
|
+
let message = 'Failed to create a new MMKV instance: The native MMKV Module could not be found.';
|
|
22
|
+
message += '\n* Make sure react-native-mmkv is correctly autolinked (run `npx react-native config` to verify)';
|
|
23
|
+
if (_reactNative.Platform.OS === 'ios' || _reactNative.Platform.OS === 'macos') {
|
|
24
|
+
message += '\n* Make sure you ran `pod install` in the ios/ directory.';
|
|
25
|
+
}
|
|
26
|
+
if (_reactNative.Platform.OS === 'android') {
|
|
27
|
+
message += '\n* Make sure gradle is synced.';
|
|
28
|
+
}
|
|
29
|
+
// check if Expo
|
|
30
|
+
const ExpoConstants = _reactNative.NativeModules.NativeUnimoduleProxy?.modulesConstants?.ExponentConstants;
|
|
31
|
+
if (ExpoConstants != null) {
|
|
32
|
+
if (ExpoConstants.appOwnership === 'expo') {
|
|
33
|
+
// We're running Expo Go
|
|
34
|
+
throw new Error('react-native-mmkv is not supported in Expo Go! Use EAS (`expo prebuild`) or eject to a bare workflow instead.');
|
|
35
|
+
} else {
|
|
36
|
+
// We're running Expo bare / standalone
|
|
37
|
+
message += '\n* Make sure you ran `expo prebuild`.';
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
message += '\n* Make sure you rebuilt the app.';
|
|
41
|
+
throw new Error(message);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return target.module[property];
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
return proxy;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=LazyTurboModule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_reactNative","require","getLazyTurboModule","initializeTurboModule","proxy","Proxy","module","get","target","property","message","Platform","OS","ExpoConstants","NativeModules","NativeUnimoduleProxy","modulesConstants","ExponentConstants","appOwnership","Error"],"sourceRoot":"../../src","sources":["LazyTurboModule.ts"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAMA;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,OAAO,GACT,kFAAkF;UACpFA,OAAO,IACL,mGAAmG;UACrG,IAAIC,qBAAQ,CAACC,EAAE,KAAK,KAAK,IAAID,qBAAQ,CAACC,EAAE,KAAK,OAAO,EAAE;YACpDF,OAAO,IACL,4DAA4D;UAChE;UACA,IAAIC,qBAAQ,CAACC,EAAE,KAAK,SAAS,EAAE;YAC7BF,OAAO,IAAI,iCAAiC;UAC9C;UACA;UACA,MAAMG,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,IAAIC,KAAK,CACb,+GACF,CAAC;YACH,CAAC,MAAM;cACL;cACAT,OAAO,IAAI,wCAAwC;YACrD;UACF;UAEAA,OAAO,IAAI,oCAAoC;UAC/C,MAAM,IAAIS,KAAK,CAACT,OAAO,CAAC;QAC1B;MACF;MAEA,OAAOF,MAAM,CAACF,MAAM,CAACG,QAAQ,CAAY;IAC3C;EACF,CACF,CAAC;EACD,OAAOL,KAAK;AACd","ignoreList":[]}
|
package/lib/commonjs/MMKV.js
CHANGED
|
@@ -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
|
/**
|
|
@@ -41,12 +37,10 @@ class MMKV {
|
|
|
41
37
|
this.id = configuration.id;
|
|
42
38
|
this.nativeInstance = (0, _PlatformChecker.isJest)() ? (0, _createMMKV2.createMockMMKV)() : (0, _createMMKV.createMMKV)(configuration);
|
|
43
39
|
this.functionCache = {};
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
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)) {
|
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","isJest","createMockMMKV","createMMKV","functionCache","
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_createMMKV","_createMMKV2","_PlatformChecker","_NativeMmkv","onValueChangedListeners","Map","MMKV","constructor","configuration","id","nativeInstance","isJest","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
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
if (
|
|
30
|
-
//
|
|
31
|
-
|
|
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
|
|
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","
|
|
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
|
-
|
|
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","
|
|
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":[]}
|
|
@@ -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 =
|
|
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","
|
|
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":";;;;;;
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_MMKV","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_hooks"],"sourceRoot":"../../src","sources":["index.
|
|
1
|
+
{"version":3,"names":["_MMKV","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_hooks"],"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,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":[]}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { NativeModules, Platform } from 'react-native';
|
|
2
|
+
/**
|
|
3
|
+
* Lazily get a TurboModule by wrapping it in a Proxy.
|
|
4
|
+
*/
|
|
5
|
+
export function getLazyTurboModule(initializeTurboModule) {
|
|
6
|
+
const proxy = new Proxy({
|
|
7
|
+
module: null
|
|
8
|
+
}, {
|
|
9
|
+
get: (target, property) => {
|
|
10
|
+
if (target.module == null) {
|
|
11
|
+
// Target is null, let's initialize it!
|
|
12
|
+
target.module = initializeTurboModule();
|
|
13
|
+
if (target.module == null) {
|
|
14
|
+
// TurboModule not found, something went wrong!
|
|
15
|
+
let message = 'Failed to create a new MMKV instance: The native MMKV Module could not be found.';
|
|
16
|
+
message += '\n* Make sure react-native-mmkv is correctly autolinked (run `npx react-native config` to verify)';
|
|
17
|
+
if (Platform.OS === 'ios' || Platform.OS === 'macos') {
|
|
18
|
+
message += '\n* Make sure you ran `pod install` in the ios/ directory.';
|
|
19
|
+
}
|
|
20
|
+
if (Platform.OS === 'android') {
|
|
21
|
+
message += '\n* Make sure gradle is synced.';
|
|
22
|
+
}
|
|
23
|
+
// check if Expo
|
|
24
|
+
const ExpoConstants = NativeModules.NativeUnimoduleProxy?.modulesConstants?.ExponentConstants;
|
|
25
|
+
if (ExpoConstants != null) {
|
|
26
|
+
if (ExpoConstants.appOwnership === 'expo') {
|
|
27
|
+
// We're running Expo Go
|
|
28
|
+
throw new Error('react-native-mmkv is not supported in Expo Go! Use EAS (`expo prebuild`) or eject to a bare workflow instead.');
|
|
29
|
+
} else {
|
|
30
|
+
// We're running Expo bare / standalone
|
|
31
|
+
message += '\n* Make sure you ran `expo prebuild`.';
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
message += '\n* Make sure you rebuilt the app.';
|
|
35
|
+
throw new Error(message);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return target.module[property];
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
return proxy;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=LazyTurboModule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["NativeModules","Platform","getLazyTurboModule","initializeTurboModule","proxy","Proxy","module","get","target","property","message","OS","ExpoConstants","NativeUnimoduleProxy","modulesConstants","ExponentConstants","appOwnership","Error"],"sourceRoot":"../../src","sources":["LazyTurboModule.ts"],"mappings":"AAAA,SAASA,aAAa,EAAEC,QAAQ,QAAqB,cAAc;AAMnE;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,OAAO,GACT,kFAAkF;UACpFA,OAAO,IACL,mGAAmG;UACrG,IAAIT,QAAQ,CAACU,EAAE,KAAK,KAAK,IAAIV,QAAQ,CAACU,EAAE,KAAK,OAAO,EAAE;YACpDD,OAAO,IACL,4DAA4D;UAChE;UACA,IAAIT,QAAQ,CAACU,EAAE,KAAK,SAAS,EAAE;YAC7BD,OAAO,IAAI,iCAAiC;UAC9C;UACA;UACA,MAAME,aAAa,GACjBZ,aAAa,CAACa,oBAAoB,EAAEC,gBAAgB,EAChDC,iBAAiB;UACvB,IAAIH,aAAa,IAAI,IAAI,EAAE;YACzB,IAAIA,aAAa,CAACI,YAAY,KAAK,MAAM,EAAE;cACzC;cACA,MAAM,IAAIC,KAAK,CACb,+GACF,CAAC;YACH,CAAC,MAAM;cACL;cACAP,OAAO,IAAI,wCAAwC;YACrD;UACF;UAEAA,OAAO,IAAI,oCAAoC;UAC/C,MAAM,IAAIO,KAAK,CAACP,OAAO,CAAC;QAC1B;MACF;MAEA,OAAOF,MAAM,CAACF,MAAM,CAACG,QAAQ,CAAY;IAC3C;EACF,CACF,CAAC;EACD,OAAOL,KAAK;AACd","ignoreList":[]}
|
package/lib/module/MMKV.js
CHANGED
|
@@ -3,11 +3,6 @@ import { createMMKV } from './createMMKV';
|
|
|
3
3
|
import { createMockMMKV } from './createMMKV.mock';
|
|
4
4
|
import { isJest } from './PlatformChecker';
|
|
5
5
|
export { Configuration, Mode } from './NativeMmkv';
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Represents a single MMKV instance.
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
6
|
const onValueChangedListeners = new Map();
|
|
12
7
|
|
|
13
8
|
/**
|
|
@@ -24,12 +19,10 @@ export class MMKV {
|
|
|
24
19
|
this.id = configuration.id;
|
|
25
20
|
this.nativeInstance = isJest() ? createMockMMKV() : createMMKV(configuration);
|
|
26
21
|
this.functionCache = {};
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
});
|
|
32
|
-
}
|
|
22
|
+
AppState.addEventListener('memoryWarning', () => {
|
|
23
|
+
// when we have a memory warning, delete unused keys by trimming MMKV
|
|
24
|
+
this.trim();
|
|
25
|
+
});
|
|
33
26
|
}
|
|
34
27
|
get onValueChangedListeners() {
|
|
35
28
|
if (!onValueChangedListeners.has(this.id)) {
|
package/lib/module/MMKV.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["AppState","createMMKV","createMockMMKV","isJest","Configuration","Mode","onValueChangedListeners","Map","MMKV","constructor","configuration","id","nativeInstance","functionCache","
|
|
1
|
+
{"version":3,"names":["AppState","createMMKV","createMockMMKV","isJest","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":[]}
|
package/lib/module/NativeMmkv.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { NativeModules, Platform } from 'react-native';
|
|
2
1
|
import { TurboModuleRegistry } from 'react-native';
|
|
2
|
+
import { getLazyTurboModule } from './LazyTurboModule';
|
|
3
3
|
import { PlatformContext } from './NativeMmkvPlatformContext';
|
|
4
4
|
|
|
5
5
|
/**
|
|
@@ -15,49 +15,18 @@ export let Mode = /*#__PURE__*/function (Mode) {
|
|
|
15
15
|
* Used for configuration of a single MMKV instance.
|
|
16
16
|
*/
|
|
17
17
|
|
|
18
|
-
let module = null;
|
|
19
18
|
let basePath = null;
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
if (module
|
|
27
|
-
//
|
|
28
|
-
module = TurboModuleRegistry.get('MmkvCxx');
|
|
29
|
-
if (module == null) {
|
|
30
|
-
// if it still is null, something went wrong!
|
|
31
|
-
let message = 'Failed to create a new MMKV instance: The native MMKV Module could not be found.';
|
|
32
|
-
message += '\n* Make sure react-native-mmkv is correctly autolinked (run `npx react-native config` to verify)';
|
|
33
|
-
if (Platform.OS === 'ios' || Platform.OS === 'macos') {
|
|
34
|
-
message += '\n* Make sure you ran `pod install` in the ios/ directory.';
|
|
35
|
-
}
|
|
36
|
-
if (Platform.OS === 'android') {
|
|
37
|
-
message += '\n* Make sure gradle is synced.';
|
|
38
|
-
}
|
|
39
|
-
// check if Expo
|
|
40
|
-
const ExpoConstants = NativeModules.NativeUnimoduleProxy?.modulesConstants?.ExponentConstants;
|
|
41
|
-
if (ExpoConstants != null) {
|
|
42
|
-
if (ExpoConstants.appOwnership === 'expo') {
|
|
43
|
-
// We're running Expo Go
|
|
44
|
-
throw new Error('react-native-mmkv is not supported in Expo Go! Use EAS (`expo prebuild`) or eject to a bare workflow instead.');
|
|
45
|
-
} else {
|
|
46
|
-
// We're running Expo bare / standalone
|
|
47
|
-
message += '\n* Make sure you ran `expo prebuild`.';
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
message += '\n* Make sure you rebuilt the app.';
|
|
51
|
-
throw new Error(message);
|
|
52
|
-
}
|
|
53
|
-
if (basePath == null) {
|
|
54
|
-
// Get base path from platform specific context
|
|
55
|
-
basePath = PlatformContext.getBaseDirectory();
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
// Initialize MMKV
|
|
19
|
+
function getNativeModule() {
|
|
20
|
+
if (basePath == null) {
|
|
21
|
+
// use default base path from the Platform (iOS/Android)
|
|
22
|
+
basePath = PlatformContext.getBaseDirectory();
|
|
23
|
+
}
|
|
24
|
+
const module = TurboModuleRegistry.get('MmkvCxx');
|
|
25
|
+
if (module != null) {
|
|
26
|
+
// initialize MMKV
|
|
59
27
|
module.initialize(basePath);
|
|
60
28
|
}
|
|
61
29
|
return module;
|
|
62
30
|
}
|
|
31
|
+
export const MMKVTurboModule = getLazyTurboModule(getNativeModule);
|
|
63
32
|
//# sourceMappingURL=NativeMmkv.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["TurboModuleRegistry","getLazyTurboModule","PlatformContext","Mode","basePath","getNativeModule","getBaseDirectory","module","get","initialize","MMKVTurboModule"],"sourceRoot":"../../src","sources":["NativeMmkv.ts"],"mappings":"AACA,SAASA,mBAAmB,QAAQ,cAAc;AAElD,SAASC,kBAAkB,QAAQ,mBAAmB;AACtD,SAASC,eAAe,QAAQ,6BAA6B;;AAE7D;AACA;AACA;AACA,WAAYC,IAAI,0BAAJA,IAAI;EAAJA,IAAI,CAAJA,IAAI;EAAJA,IAAI,CAAJA,IAAI;EAAA,OAAJA,IAAI;AAAA;;AAWhB;AACA;AACA;;AAiEA,IAAIC,QAAuB,GAAG,IAAI;AAElC,SAASC,eAAeA,CAAA,EAAgB;EACtC,IAAID,QAAQ,IAAI,IAAI,EAAE;IACpB;IACAA,QAAQ,GAAGF,eAAe,CAACI,gBAAgB,CAAC,CAAC;EAC/C;EAEA,MAAMC,MAAM,GAAGP,mBAAmB,CAACQ,GAAG,CAAO,SAAS,CAAC;EAEvD,IAAID,MAAM,IAAI,IAAI,EAAE;IAClB;IACAA,MAAM,CAACE,UAAU,CAACL,QAAQ,CAAC;EAC7B;EAEA,OAAOG,MAAM;AACf;AACA,OAAO,MAAMG,eAAe,GAAGT,kBAAkB,CAACI,eAAe,CAAC","ignoreList":[]}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
1
|
import { TurboModuleRegistry } from 'react-native';
|
|
2
|
-
|
|
2
|
+
import { getLazyTurboModule } from './LazyTurboModule';
|
|
3
|
+
function getModule() {
|
|
4
|
+
return TurboModuleRegistry.get('MmkvPlatformContext');
|
|
5
|
+
}
|
|
6
|
+
export const PlatformContext = getLazyTurboModule(getModule);
|
|
3
7
|
//# sourceMappingURL=NativeMmkvPlatformContext.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["TurboModuleRegistry","
|
|
1
|
+
{"version":3,"names":["TurboModuleRegistry","getLazyTurboModule","getModule","get","PlatformContext"],"sourceRoot":"../../src","sources":["NativeMmkvPlatformContext.ts"],"mappings":"AAAA,SAAsBA,mBAAmB,QAAQ,cAAc;AAC/D,SAASC,kBAAkB,QAAQ,mBAAmB;AAStD,SAASC,SAASA,CAAA,EAAgB;EAChC,OAAOF,mBAAmB,CAACG,GAAG,CAAO,qBAAqB,CAAC;AAC7D;AACA,OAAO,MAAMC,eAAe,GAAGH,kBAAkB,CAACC,SAAS,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../src","sources":["Types.ts"],"mappings":"","ignoreList":[]}
|
package/lib/module/createMMKV.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
const module = getMMKVTurboModule();
|
|
1
|
+
import { MMKVTurboModule } from './NativeMmkv';
|
|
3
2
|
export const createMMKV = config => {
|
|
4
|
-
const instance =
|
|
3
|
+
const instance = MMKVTurboModule.createMMKV(config);
|
|
5
4
|
if (__DEV__) {
|
|
6
5
|
if (typeof instance !== 'object' || instance == null) {
|
|
7
6
|
throw new Error('Failed to create MMKV instance - an unknown object was returned by createMMKV(..)!');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["MMKVTurboModule","createMMKV","config","instance","__DEV__","Error"],"sourceRoot":"../../src","sources":["createMMKV.ts"],"mappings":"AACA,SAASA,eAAe,QAAQ,cAAc;AAG9C,OAAO,MAAMC,UAAU,GAAIC,MAAqB,IAAiB;EAC/D,MAAMC,QAAQ,GAAGH,eAAe,CAACC,UAAU,CAACC,MAAM,CAAC;EACnD,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","ignoreList":[]}
|