react-native-mmkv 2.12.2 → 3.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -200
- package/MMKV/Core/Core.xcodeproj/project.pbxproj +4 -2
- package/MMKV/Core/MMKVPredef.h +1 -1
- package/MMKV/Core/MMKV_IO.cpp +5 -1
- package/MMKV/Core/MemoryFile.cpp +1 -0
- package/MMKV/Core/MemoryFile_OSX.cpp +2 -1
- package/MMKV/README.md +8 -8
- package/README.md +7 -1
- package/android/CMakeLists.txt +20 -28
- package/android/build.gradle +59 -89
- package/android/gradle.properties +4 -5
- package/android/src/main/AndroidManifest.xml +2 -2
- package/android/src/{hasNamespace/AndroidManifest.xml → main/AndroidManifestNew.xml} +0 -1
- package/android/src/main/cpp/AndroidLogger.cpp +16 -0
- package/android/src/main/cpp/cpp-adapter.cpp +4 -80
- package/android/src/main/java/com/mrousavy/mmkv/MmkvPackage.java +44 -0
- package/android/src/main/java/com/mrousavy/mmkv/MmkvPlatformContextModule.java +17 -0
- package/cpp/Logger.h +35 -0
- package/cpp/MMKVManagedBuffer.h +37 -0
- package/{android/src/main/cpp → cpp}/MmkvHostObject.cpp +126 -63
- package/{android/src/main/cpp → cpp}/MmkvHostObject.h +14 -3
- package/cpp/NativeMmkvModule.cpp +40 -0
- package/cpp/NativeMmkvModule.h +37 -0
- package/ios/AppleLogger.mm +16 -0
- package/ios/MmkvOnLoad.mm +25 -0
- package/ios/MmkvPlatformContext.h +19 -0
- package/ios/MmkvPlatformContextModule.mm +37 -0
- package/lib/commonjs/MMKV.js +34 -4
- package/lib/commonjs/MMKV.js.map +1 -1
- package/lib/commonjs/NativeMmkv.js +66 -0
- package/lib/commonjs/NativeMmkv.js.map +1 -0
- package/lib/commonjs/NativeMmkvPlatformContext.js +9 -0
- package/lib/commonjs/NativeMmkvPlatformContext.js.map +1 -0
- package/lib/commonjs/PlatformChecker.js.map +1 -1
- package/lib/commonjs/createMMKV.js +7 -43
- package/lib/commonjs/createMMKV.js.map +1 -1
- package/lib/commonjs/createMMKV.mock.js +5 -1
- package/lib/commonjs/createMMKV.mock.js.map +1 -1
- package/lib/commonjs/createMMKV.web.js +8 -4
- package/lib/commonjs/createMMKV.web.js.map +1 -1
- package/lib/commonjs/createTextEncoder.js.map +1 -1
- package/lib/commonjs/hooks.js +11 -10
- package/lib/commonjs/hooks.js.map +1 -1
- package/lib/commonjs/index.js.map +1 -1
- package/lib/module/MMKV.js +23 -4
- package/lib/module/MMKV.js.map +1 -1
- package/lib/module/NativeMmkv.js +63 -0
- package/lib/module/NativeMmkv.js.map +1 -0
- package/lib/module/NativeMmkvPlatformContext.js +3 -0
- package/lib/module/NativeMmkvPlatformContext.js.map +1 -0
- package/lib/module/PlatformChecker.js.map +1 -1
- package/lib/module/createMMKV.js +7 -43
- package/lib/module/createMMKV.js.map +1 -1
- package/lib/module/createMMKV.mock.js +5 -1
- package/lib/module/createMMKV.mock.js.map +1 -1
- package/lib/module/createMMKV.web.js +6 -4
- package/lib/module/createMMKV.web.js.map +1 -1
- package/lib/module/createTextEncoder.js.map +1 -1
- package/lib/module/hooks.js +7 -2
- package/lib/module/hooks.js.map +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/{MMKV.d.ts → src/MMKV.d.ts} +26 -49
- package/lib/typescript/src/MMKV.d.ts.map +1 -0
- package/lib/typescript/src/NativeMmkv.d.ts +79 -0
- package/lib/typescript/src/NativeMmkv.d.ts.map +1 -0
- package/lib/typescript/src/NativeMmkvPlatformContext.d.ts +9 -0
- package/lib/typescript/src/NativeMmkvPlatformContext.d.ts.map +1 -0
- package/lib/typescript/src/PlatformChecker.d.ts.map +1 -0
- package/lib/typescript/src/__tests__/hooks.test.d.ts +2 -0
- package/lib/typescript/src/__tests__/hooks.test.d.ts.map +1 -0
- package/lib/typescript/src/createMMKV.d.ts +3 -0
- package/lib/typescript/src/createMMKV.d.ts.map +1 -0
- package/lib/typescript/src/createMMKV.mock.d.ts +3 -0
- package/lib/typescript/src/createMMKV.mock.d.ts.map +1 -0
- package/lib/typescript/src/createMMKV.web.d.ts +3 -0
- package/lib/typescript/src/createMMKV.web.d.ts.map +1 -0
- package/lib/typescript/src/createTextEncoder.d.ts.map +1 -0
- package/lib/typescript/{hooks.d.ts → src/hooks.d.ts} +7 -4
- package/lib/typescript/src/hooks.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/package.json +49 -40
- package/react-native-mmkv.podspec +17 -18
- package/src/MMKV.ts +40 -62
- package/src/NativeMmkv.ts +132 -0
- package/src/NativeMmkvPlatformContext.ts +12 -0
- package/src/__tests__/hooks.test.tsx +88 -0
- package/src/createMMKV.mock.ts +7 -3
- package/src/createMMKV.ts +9 -63
- package/src/createMMKV.web.ts +6 -2
- package/src/hooks.ts +17 -11
- package/android/src/main/java/com/reactnativemmkv/MmkvModule.java +0 -49
- package/android/src/main/java/com/reactnativemmkv/MmkvPackage.java +0 -26
- package/cpp/TypedArray.cpp +0 -322
- package/cpp/TypedArray.h +0 -153
- package/ios/JSIUtils.h +0 -38
- package/ios/JSIUtils.mm +0 -167
- package/ios/Mmkv.xcodeproj/project.pbxproj +0 -291
- package/ios/MmkvHostObject.h +0 -27
- package/ios/MmkvHostObject.mm +0 -295
- package/ios/MmkvModule.h +0 -5
- package/ios/MmkvModule.mm +0 -101
- package/lib/typescript/MMKV.d.ts.map +0 -1
- package/lib/typescript/PlatformChecker.d.ts.map +0 -1
- package/lib/typescript/createMMKV.d.ts +0 -7
- package/lib/typescript/createMMKV.d.ts.map +0 -1
- package/lib/typescript/createMMKV.mock.d.ts +0 -3
- package/lib/typescript/createMMKV.mock.d.ts.map +0 -1
- package/lib/typescript/createMMKV.web.d.ts +0 -3
- package/lib/typescript/createMMKV.web.d.ts.map +0 -1
- package/lib/typescript/createTextEncoder.d.ts.map +0 -1
- package/lib/typescript/hooks.d.ts.map +0 -1
- package/lib/typescript/index.d.ts.map +0 -1
- /package/lib/typescript/{PlatformChecker.d.ts → src/PlatformChecker.d.ts} +0 -0
- /package/lib/typescript/{createTextEncoder.d.ts → src/createTextEncoder.d.ts} +0 -0
- /package/lib/typescript/{index.d.ts → src/index.d.ts} +0 -0
- /package/src/{index.ts → index.tsx} +0 -0
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
//
|
|
2
|
+
// NativeMmkvModule.cpp
|
|
3
|
+
// react-native-mmkv
|
|
4
|
+
//
|
|
5
|
+
// Created by Marc Rousavy on 25.03.2024.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
#include "NativeMmkvModule.h"
|
|
9
|
+
#include "Logger.h"
|
|
10
|
+
#include "MMKV.h"
|
|
11
|
+
#include "MmkvHostObject.h"
|
|
12
|
+
|
|
13
|
+
namespace facebook::react {
|
|
14
|
+
|
|
15
|
+
NativeMmkvModule::NativeMmkvModule(std::shared_ptr<CallInvoker> jsInvoker)
|
|
16
|
+
: NativeMmkvCxxSpec(jsInvoker) {}
|
|
17
|
+
|
|
18
|
+
bool NativeMmkvModule::initialize(jsi::Runtime& runtime, std::string basePath) {
|
|
19
|
+
if (basePath.size() < 1) {
|
|
20
|
+
throw jsi::JSError(runtime, "Path cannot be empty!");
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
Logger::log("RNMMKV", "Initializing MMKV at %s...", basePath.c_str());
|
|
24
|
+
|
|
25
|
+
MMKV::initializeMMKV(basePath);
|
|
26
|
+
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
NativeMmkvModule::~NativeMmkvModule() {
|
|
31
|
+
Logger::log("RNMMKV", "Closing all MMKV instances...");
|
|
32
|
+
MMKV::onExit();
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
jsi::Object NativeMmkvModule::createMMKV(jsi::Runtime& runtime, MMKVConfig config) {
|
|
36
|
+
auto instance = std::make_shared<MmkvHostObject>(config);
|
|
37
|
+
return jsi::Object::createFromHostObject(runtime, instance);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
} // namespace facebook::react
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
//
|
|
2
|
+
// NativeMmkvModule.h
|
|
3
|
+
// react-native-mmkv
|
|
4
|
+
//
|
|
5
|
+
// Created by Marc Rousavy on 25.03.2024.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#if __has_include(<React-Codegen/RNMmkvSpecJSI.h>)
|
|
11
|
+
// CocoaPods include (iOS)
|
|
12
|
+
#include <React-Codegen/RNMmkvSpecJSI.h>
|
|
13
|
+
#elif __has_include(<RNMmkvSpecJSI.h>)
|
|
14
|
+
// CMake include on Android
|
|
15
|
+
#include <RNMmkvSpecJSI.h>
|
|
16
|
+
#else
|
|
17
|
+
#error Cannot find react-native-mmkv spec! Try cleaning your cache and re-running CodeGen!
|
|
18
|
+
#endif
|
|
19
|
+
|
|
20
|
+
namespace facebook::react {
|
|
21
|
+
|
|
22
|
+
// The MMKVConfiguration type from JS
|
|
23
|
+
using MMKVConfig = MmkvCxxConfiguration<std::string, std::optional<std::string>,
|
|
24
|
+
std::optional<std::string>, std::optional<MmkvCxxMode>>;
|
|
25
|
+
template <> struct Bridging<MMKVConfig> : MmkvCxxConfigurationBridging<MMKVConfig> {};
|
|
26
|
+
|
|
27
|
+
// The TurboModule itself
|
|
28
|
+
class NativeMmkvModule : public NativeMmkvCxxSpec<NativeMmkvModule> {
|
|
29
|
+
public:
|
|
30
|
+
NativeMmkvModule(std::shared_ptr<CallInvoker> jsInvoker);
|
|
31
|
+
~NativeMmkvModule();
|
|
32
|
+
|
|
33
|
+
bool initialize(jsi::Runtime& runtime, std::string basePath);
|
|
34
|
+
jsi::Object createMMKV(jsi::Runtime& runtime, MMKVConfig config);
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
} // namespace facebook::react
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
//
|
|
2
|
+
// AppleLogger.m
|
|
3
|
+
// react-native-mmkv
|
|
4
|
+
//
|
|
5
|
+
// Created by Marc Rousavy on 25.03.24.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
#import "Logger.h"
|
|
9
|
+
#import <Foundation/Foundation.h>
|
|
10
|
+
|
|
11
|
+
void Logger::log(const std::string& tag, const std::string& message) {
|
|
12
|
+
#pragma clang diagnostic push
|
|
13
|
+
#pragma clang diagnostic ignored "-Wformat-security"
|
|
14
|
+
NSLog(@"[%s]: %s", tag.c_str(), message.c_str());
|
|
15
|
+
#pragma clang diagnostic pop
|
|
16
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
//
|
|
2
|
+
// MmkvOnLoad.mm
|
|
3
|
+
// react-native-mmkv
|
|
4
|
+
//
|
|
5
|
+
// Created by Marc Rousavy on 27.03.24.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
#import "NativeMmkvModule.h"
|
|
9
|
+
#import <Foundation/Foundation.h>
|
|
10
|
+
#import <ReactCommon/CxxTurboModuleUtils.h>
|
|
11
|
+
|
|
12
|
+
@interface MMKVOnLoad : NSObject
|
|
13
|
+
@end
|
|
14
|
+
|
|
15
|
+
@implementation MMKVOnLoad
|
|
16
|
+
|
|
17
|
+
+ (void)load {
|
|
18
|
+
facebook::react::registerCxxModuleToGlobalModuleMap(
|
|
19
|
+
std::string(facebook::react::NativeMmkvModule::kModuleName),
|
|
20
|
+
[&](std::shared_ptr<facebook::react::CallInvoker> jsInvoker) {
|
|
21
|
+
return std::make_shared<facebook::react::NativeMmkvModule>(jsInvoker);
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
@end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
//
|
|
2
|
+
// RTNMmkvPlatformContext.h
|
|
3
|
+
// Pods
|
|
4
|
+
//
|
|
5
|
+
// Created by Marc Rousavy on 27.03.24.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#import <Foundation/Foundation.h>
|
|
11
|
+
#import <RNMmkvSpec/RNMmkvSpec.h>
|
|
12
|
+
|
|
13
|
+
NS_ASSUME_NONNULL_BEGIN
|
|
14
|
+
|
|
15
|
+
@interface MmkvPlatformContext : NSObject <NativeMmkvPlatformContextSpec>
|
|
16
|
+
|
|
17
|
+
@end
|
|
18
|
+
|
|
19
|
+
NS_ASSUME_NONNULL_END
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
//
|
|
2
|
+
// AppleMmkvPlatformContext.m
|
|
3
|
+
// react-native-mmkv
|
|
4
|
+
//
|
|
5
|
+
// Created by Marc Rousavy on 25.03.24.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
#import "MmkvPlatformContext.h"
|
|
9
|
+
#import <Foundation/Foundation.h>
|
|
10
|
+
|
|
11
|
+
@implementation MmkvPlatformContext
|
|
12
|
+
|
|
13
|
+
RCT_EXPORT_MODULE()
|
|
14
|
+
|
|
15
|
+
- (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:
|
|
16
|
+
(const facebook::react::ObjCTurboModule::InitParams&)params {
|
|
17
|
+
return std::make_shared<facebook::react::NativeMmkvPlatformContextSpecJSI>(params);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
- (NSString*)getBaseDirectory {
|
|
21
|
+
#if TARGET_OS_TV
|
|
22
|
+
NSArray* paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
|
|
23
|
+
#else
|
|
24
|
+
NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
|
|
25
|
+
#endif
|
|
26
|
+
NSString* documentPath = (NSString*)[paths firstObject];
|
|
27
|
+
if ([documentPath length] > 0) {
|
|
28
|
+
NSString* basePath = [documentPath stringByAppendingPathComponent:@"mmkv"];
|
|
29
|
+
return basePath;
|
|
30
|
+
} else {
|
|
31
|
+
@throw [NSException exceptionWithName:@"BasePathNotFound"
|
|
32
|
+
reason:@"Cannot find base-path to store MMKV files!"
|
|
33
|
+
userInfo:nil];
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
@end
|
package/lib/commonjs/MMKV.js
CHANGED
|
@@ -3,10 +3,28 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
Object.defineProperty(exports, "Configuration", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _NativeMmkv.Configuration;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
6
12
|
exports.MMKV = void 0;
|
|
13
|
+
Object.defineProperty(exports, "Mode", {
|
|
14
|
+
enumerable: true,
|
|
15
|
+
get: function () {
|
|
16
|
+
return _NativeMmkv.Mode;
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
var _reactNative = require("react-native");
|
|
7
20
|
var _createMMKV = require("./createMMKV");
|
|
8
21
|
var _createMMKV2 = require("./createMMKV.mock");
|
|
9
22
|
var _PlatformChecker = require("./PlatformChecker");
|
|
23
|
+
var _NativeMmkv = require("./NativeMmkv");
|
|
24
|
+
/**
|
|
25
|
+
* Represents a single MMKV instance.
|
|
26
|
+
*/
|
|
27
|
+
|
|
10
28
|
const onValueChangedListeners = new Map();
|
|
11
29
|
|
|
12
30
|
/**
|
|
@@ -17,13 +35,18 @@ class MMKV {
|
|
|
17
35
|
* Creates a new MMKV instance with the given Configuration.
|
|
18
36
|
* If no custom `id` is supplied, `'mmkv.default'` will be used.
|
|
19
37
|
*/
|
|
20
|
-
constructor(
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
};
|
|
38
|
+
constructor(configuration = {
|
|
39
|
+
id: 'mmkv.default'
|
|
40
|
+
}) {
|
|
24
41
|
this.id = configuration.id;
|
|
25
42
|
this.nativeInstance = (0, _PlatformChecker.isJest)() ? (0, _createMMKV2.createMockMMKV)() : (0, _createMMKV.createMMKV)(configuration);
|
|
26
43
|
this.functionCache = {};
|
|
44
|
+
if ('WeakRef' in global) {
|
|
45
|
+
const weakSelf = new WeakRef(this);
|
|
46
|
+
_reactNative.AppState.addEventListener('memoryWarning', () => {
|
|
47
|
+
weakSelf.deref()?.trim();
|
|
48
|
+
});
|
|
49
|
+
}
|
|
27
50
|
}
|
|
28
51
|
get onValueChangedListeners() {
|
|
29
52
|
if (!onValueChangedListeners.has(this.id)) {
|
|
@@ -45,6 +68,9 @@ class MMKV {
|
|
|
45
68
|
}
|
|
46
69
|
}
|
|
47
70
|
}
|
|
71
|
+
get size() {
|
|
72
|
+
return this.nativeInstance.size;
|
|
73
|
+
}
|
|
48
74
|
set(key, value) {
|
|
49
75
|
const func = this.getFunctionFromCache('set');
|
|
50
76
|
func(key, value);
|
|
@@ -89,6 +115,10 @@ class MMKV {
|
|
|
89
115
|
const func = this.getFunctionFromCache('recrypt');
|
|
90
116
|
return func(key);
|
|
91
117
|
}
|
|
118
|
+
trim() {
|
|
119
|
+
const func = this.getFunctionFromCache('trim');
|
|
120
|
+
func();
|
|
121
|
+
}
|
|
92
122
|
toString() {
|
|
93
123
|
return `MMKV (${this.id}): [${this.getAllKeys().join(', ')}]`;
|
|
94
124
|
}
|
package/lib/commonjs/MMKV.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["onValueChangedListeners","Map","MMKV","constructor","configuration","id","nativeInstance","isJest","createMockMMKV","createMMKV","functionCache","has","set","get","getFunctionFromCache","functionName","onValuesChanged","keys","length","key","listener","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":"
|
|
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":";;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AACA,IAAAE,YAAA,GAAAF,OAAA;AACA,IAAAG,gBAAA,GAAAH,OAAA;AAEA,IAAAI,WAAA,GAAAJ,OAAA;AAMA;AACA;AACA;;AAoFA,MAAMK,uBAAuB,GAAG,IAAIC,GAAG,CAAoC,CAAC;;AAE5E;AACA;AACA;AACO,MAAMC,IAAI,CAA0B;EAKzC;AACF;AACA;AACA;EACEC,WAAWA,CAACC,aAA4B,GAAG;IAAEC,EAAE,EAAE;EAAe,CAAC,EAAE;IACjE,IAAI,CAACA,EAAE,GAAGD,aAAa,CAACC,EAAE;IAC1B,IAAI,CAACC,cAAc,GAAG,IAAAC,uBAAM,EAAC,CAAC,GAC1B,IAAAC,2BAAc,EAAC,CAAC,GAChB,IAAAC,sBAAU,EAACL,aAAa,CAAC;IAC7B,IAAI,CAACM,aAAa,GAAG,CAAC,CAAC;IAEvB,IAAI,SAAS,IAAIC,MAAM,EAAE;MACvB,MAAMC,QAAQ,GAAG,IAAIC,OAAO,CAAC,IAAI,CAAC;MAClCC,qBAAQ,CAACC,gBAAgB,CAAC,eAAe,EAAE,MAAM;QAC/CH,QAAQ,CAACI,KAAK,CAAC,CAAC,EAAEC,IAAI,CAAC,CAAC;MAC1B,CAAC,CAAC;IACJ;EACF;EAEA,IAAYjB,uBAAuBA,CAAA,EAAG;IACpC,IAAI,CAACA,uBAAuB,CAACkB,GAAG,CAAC,IAAI,CAACb,EAAE,CAAC,EAAE;MACzCL,uBAAuB,CAACmB,GAAG,CAAC,IAAI,CAACd,EAAE,EAAE,EAAE,CAAC;IAC1C;IACA,OAAOL,uBAAuB,CAACoB,GAAG,CAAC,IAAI,CAACf,EAAE,CAAC;EAC7C;EAEQgB,oBAAoBA,CAC1BC,YAAe,EACA;IACf,IAAI,IAAI,CAACZ,aAAa,CAACY,YAAY,CAAC,IAAI,IAAI,EAAE;MAC5C,IAAI,CAACZ,aAAa,CAACY,YAAY,CAAC,GAAG,IAAI,CAAChB,cAAc,CAACgB,YAAY,CAAC;IACtE;IACA,OAAO,IAAI,CAACZ,aAAa,CAACY,YAAY,CAAC;EACzC;EAEQC,eAAeA,CAACC,IAAc,EAAE;IACtC,IAAI,IAAI,CAACxB,uBAAuB,CAACyB,MAAM,KAAK,CAAC,EAAE;IAE/C,KAAK,MAAMC,GAAG,IAAIF,IAAI,EAAE;MACtB,KAAK,MAAMG,QAAQ,IAAI,IAAI,CAAC3B,uBAAuB,EAAE;QACnD2B,QAAQ,CAACD,GAAG,CAAC;MACf;IACF;EACF;EAEA,IAAIE,IAAIA,CAAA,EAAW;IACjB,OAAO,IAAI,CAACtB,cAAc,CAACsB,IAAI;EACjC;EACAT,GAAGA,CAACO,GAAW,EAAEG,KAA8C,EAAQ;IACrE,MAAMC,IAAI,GAAG,IAAI,CAACT,oBAAoB,CAAC,KAAK,CAAC;IAC7CS,IAAI,CAACJ,GAAG,EAAEG,KAAK,CAAC;IAEhB,IAAI,CAACN,eAAe,CAAC,CAACG,GAAG,CAAC,CAAC;EAC7B;EACAK,UAAUA,CAACL,GAAW,EAAuB;IAC3C,MAAMI,IAAI,GAAG,IAAI,CAACT,oBAAoB,CAAC,YAAY,CAAC;IACpD,OAAOS,IAAI,CAACJ,GAAG,CAAC;EAClB;EACAM,SAASA,CAACN,GAAW,EAAsB;IACzC,MAAMI,IAAI,GAAG,IAAI,CAACT,oBAAoB,CAAC,WAAW,CAAC;IACnD,OAAOS,IAAI,CAACJ,GAAG,CAAC;EAClB;EACAO,SAASA,CAACP,GAAW,EAAsB;IACzC,MAAMI,IAAI,GAAG,IAAI,CAACT,oBAAoB,CAAC,WAAW,CAAC;IACnD,OAAOS,IAAI,CAACJ,GAAG,CAAC;EAClB;EACAQ,SAASA,CAACR,GAAW,EAA2B;IAC9C,MAAMI,IAAI,GAAG,IAAI,CAACT,oBAAoB,CAAC,WAAW,CAAC;IACnD,OAAOS,IAAI,CAACJ,GAAG,CAAC;EAClB;EACAS,QAAQA,CAACT,GAAW,EAAW;IAC7B,MAAMI,IAAI,GAAG,IAAI,CAACT,oBAAoB,CAAC,UAAU,CAAC;IAClD,OAAOS,IAAI,CAACJ,GAAG,CAAC;EAClB;EACAU,MAAMA,CAACV,GAAW,EAAQ;IACxB,MAAMI,IAAI,GAAG,IAAI,CAACT,oBAAoB,CAAC,QAAQ,CAAC;IAChDS,IAAI,CAACJ,GAAG,CAAC;IAET,IAAI,CAACH,eAAe,CAAC,CAACG,GAAG,CAAC,CAAC;EAC7B;EACAW,UAAUA,CAAA,EAAa;IACrB,MAAMP,IAAI,GAAG,IAAI,CAACT,oBAAoB,CAAC,YAAY,CAAC;IACpD,OAAOS,IAAI,CAAC,CAAC;EACf;EACAQ,QAAQA,CAAA,EAAS;IACf,MAAMd,IAAI,GAAG,IAAI,CAACa,UAAU,CAAC,CAAC;IAE9B,MAAMP,IAAI,GAAG,IAAI,CAACT,oBAAoB,CAAC,UAAU,CAAC;IAClDS,IAAI,CAAC,CAAC;IAEN,IAAI,CAACP,eAAe,CAACC,IAAI,CAAC;EAC5B;EACAe,OAAOA,CAACb,GAAuB,EAAQ;IACrC,MAAMI,IAAI,GAAG,IAAI,CAACT,oBAAoB,CAAC,SAAS,CAAC;IACjD,OAAOS,IAAI,CAACJ,GAAG,CAAC;EAClB;EACAT,IAAIA,CAAA,EAAS;IACX,MAAMa,IAAI,GAAG,IAAI,CAACT,oBAAoB,CAAC,MAAM,CAAC;IAC9CS,IAAI,CAAC,CAAC;EACR;EAEAU,QAAQA,CAAA,EAAW;IACjB,OAAQ,SAAQ,IAAI,CAACnC,EAAG,OAAM,IAAI,CAACgC,UAAU,CAAC,CAAC,CAACI,IAAI,CAAC,IAAI,CAAE,GAAE;EAC/D;EACAC,MAAMA,CAAA,EAAW;IACf,OAAO;MACL,CAAC,IAAI,CAACrC,EAAE,GAAG,IAAI,CAACgC,UAAU,CAAC;IAC7B,CAAC;EACH;EAEAM,yBAAyBA,CAACC,cAAqC,EAAY;IACzE,IAAI,CAAC5C,uBAAuB,CAAC6C,IAAI,CAACD,cAAc,CAAC;IAEjD,OAAO;MACLE,MAAM,EAAEA,CAAA,KAAM;QACZ,MAAMC,KAAK,GAAG,IAAI,CAAC/C,uBAAuB,CAACgD,OAAO,CAACJ,cAAc,CAAC;QAClE,IAAIG,KAAK,KAAK,CAAC,CAAC,EAAE;UAChB,IAAI,CAAC/C,uBAAuB,CAACiD,MAAM,CAACF,KAAK,EAAE,CAAC,CAAC;QAC/C;MACF;IACF,CAAC;EACH;AACF;AAACG,OAAA,CAAAhD,IAAA,GAAAA,IAAA","ignoreList":[]}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.Mode = void 0;
|
|
7
|
+
exports.getMMKVTurboModule = getMMKVTurboModule;
|
|
8
|
+
var _reactNative = require("react-native");
|
|
9
|
+
var _NativeMmkvPlatformContext = require("./NativeMmkvPlatformContext");
|
|
10
|
+
/**
|
|
11
|
+
* Configures the mode of the MMKV instance.
|
|
12
|
+
*/
|
|
13
|
+
let Mode = exports.Mode = /*#__PURE__*/function (Mode) {
|
|
14
|
+
Mode[Mode["SINGLE_PROCESS"] = 0] = "SINGLE_PROCESS";
|
|
15
|
+
Mode[Mode["MULTI_PROCESS"] = 1] = "MULTI_PROCESS";
|
|
16
|
+
return Mode;
|
|
17
|
+
}({});
|
|
18
|
+
/**
|
|
19
|
+
* Used for configuration of a single MMKV instance.
|
|
20
|
+
*/
|
|
21
|
+
let _module = null;
|
|
22
|
+
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);
|
|
63
|
+
}
|
|
64
|
+
return _module;
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=NativeMmkv.js.map
|
|
@@ -0,0 +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":[]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.PlatformContext = void 0;
|
|
7
|
+
var _reactNative = require("react-native");
|
|
8
|
+
const PlatformContext = exports.PlatformContext = _reactNative.TurboModuleRegistry.getEnforcing('MmkvPlatformContext');
|
|
9
|
+
//# sourceMappingURL=NativeMmkvPlatformContext.js.map
|
|
@@ -0,0 +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 +1 @@
|
|
|
1
|
-
{"version":3,"names":["isJest","global","process","env","JEST_WORKER_ID"],"sourceRoot":"../../src","sources":["PlatformChecker.ts"],"mappings":";;;;;;AAAO,SAASA,
|
|
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":[]}
|
|
@@ -4,52 +4,16 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.createMMKV = void 0;
|
|
7
|
-
var
|
|
8
|
-
|
|
9
|
-
const ROOT_DIRECTORY = null;
|
|
7
|
+
var _NativeMmkv = require("./NativeMmkv");
|
|
8
|
+
const _module = (0, _NativeMmkv.getMMKVTurboModule)();
|
|
10
9
|
const createMMKV = config => {
|
|
11
|
-
|
|
12
|
-
if (
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
if (MMKVModule == null) {
|
|
16
|
-
var _NativeModules$Native, _NativeModules$Native2;
|
|
17
|
-
let message = 'Failed to create a new MMKV instance: The native MMKV Module could not be found.';
|
|
18
|
-
message += '\n* Make sure react-native-mmkv is correctly autolinked (run `npx react-native config` to verify)';
|
|
19
|
-
if (_reactNative.Platform.OS === 'ios' || _reactNative.Platform.OS === 'macos') {
|
|
20
|
-
message += '\n* Make sure you ran `pod install` in the ios/ directory.';
|
|
21
|
-
}
|
|
22
|
-
if (_reactNative.Platform.OS === 'android') {
|
|
23
|
-
message += '\n* Make sure gradle is synced.';
|
|
24
|
-
}
|
|
25
|
-
// check if Expo
|
|
26
|
-
const ExpoConstants = (_NativeModules$Native = _reactNative.NativeModules.NativeUnimoduleProxy) === null || _NativeModules$Native === void 0 ? void 0 : (_NativeModules$Native2 = _NativeModules$Native.modulesConstants) === null || _NativeModules$Native2 === void 0 ? void 0 : _NativeModules$Native2.ExponentConstants;
|
|
27
|
-
if (ExpoConstants != null) {
|
|
28
|
-
if (ExpoConstants.appOwnership === 'expo') {
|
|
29
|
-
// We're running Expo Go
|
|
30
|
-
throw new Error('react-native-mmkv is not supported in Expo Go! Use EAS (`expo prebuild`) or eject to a bare workflow instead.');
|
|
31
|
-
} else {
|
|
32
|
-
// We're running Expo bare / standalone
|
|
33
|
-
message += '\n* Make sure you ran `expo prebuild`.';
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
message += '\n* Make sure you rebuilt the app.';
|
|
37
|
-
throw new Error(message);
|
|
10
|
+
const instance = _module.createMMKV(config);
|
|
11
|
+
if (__DEV__) {
|
|
12
|
+
if (typeof instance !== 'object' || instance == null) {
|
|
13
|
+
throw new Error('Failed to create MMKV instance - an unknown object was returned by createMMKV(..)!');
|
|
38
14
|
}
|
|
39
|
-
|
|
40
|
-
// Check if we are running on-device (JSI)
|
|
41
|
-
if (global.nativeCallSyncHook == null || MMKVModule.install == null) {
|
|
42
|
-
throw new Error('Failed to create a new MMKV instance: React Native is not running on-device. MMKV can only be used when synchronous method invocations (JSI) are possible. If you are using a remote debugger (e.g. Chrome), switch to an on-device debugger (e.g. Flipper) instead.');
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
// Call the synchronous blocking install() function
|
|
46
|
-
const result = MMKVModule.install(ROOT_DIRECTORY);
|
|
47
|
-
if (result !== true) throw new Error(`Failed to create a new MMKV instance: The native MMKV Module could not be installed! Looks like something went wrong when installing JSI bindings: ${result}`);
|
|
48
|
-
|
|
49
|
-
// Check again if the constructor now exists. If not, throw an error.
|
|
50
|
-
if (global.mmkvCreateNewInstance == null) throw new Error('Failed to create a new MMKV instance, the native initializer function does not exist. Are you trying to use MMKV from different JS Runtimes?');
|
|
51
15
|
}
|
|
52
|
-
return
|
|
16
|
+
return instance;
|
|
53
17
|
};
|
|
54
18
|
exports.createMMKV = createMMKV;
|
|
55
19
|
//# sourceMappingURL=createMMKV.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
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":[]}
|
|
@@ -25,12 +25,16 @@ const createMockMMKV = () => {
|
|
|
25
25
|
},
|
|
26
26
|
getBuffer: key => {
|
|
27
27
|
const result = storage.get(key);
|
|
28
|
-
return result instanceof
|
|
28
|
+
return result instanceof ArrayBuffer ? result : undefined;
|
|
29
29
|
},
|
|
30
30
|
getAllKeys: () => Array.from(storage.keys()),
|
|
31
31
|
contains: key => storage.has(key),
|
|
32
32
|
recrypt: () => {
|
|
33
33
|
console.warn('Encryption is not supported in mocked MMKV instances!');
|
|
34
|
+
},
|
|
35
|
+
size: 0,
|
|
36
|
+
trim: () => {
|
|
37
|
+
// no-op
|
|
34
38
|
}
|
|
35
39
|
};
|
|
36
40
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createMockMMKV","storage","Map","clearAll","clear","delete","key","set","value","getString","result","get","undefined","getNumber","getBoolean","getBuffer","
|
|
1
|
+
{"version":3,"names":["createMockMMKV","storage","Map","clearAll","clear","delete","key","set","value","getString","result","get","undefined","getNumber","getBoolean","getBuffer","ArrayBuffer","getAllKeys","Array","from","keys","contains","has","recrypt","console","warn","size","trim","exports"],"sourceRoot":"../../src","sources":["createMMKV.mock.ts"],"mappings":";;;;;;AAEA;AACO,MAAMA,cAAc,GAAGA,CAAA,KAAkB;EAC9C,MAAMC,OAAO,GAAG,IAAIC,GAAG,CAAkD,CAAC;EAE1E,OAAO;IACLC,QAAQ,EAAEA,CAAA,KAAMF,OAAO,CAACG,KAAK,CAAC,CAAC;IAC/BC,MAAM,EAAGC,GAAG,IAAKL,OAAO,CAACI,MAAM,CAACC,GAAG,CAAC;IACpCC,GAAG,EAAEA,CAACD,GAAG,EAAEE,KAAK,KAAKP,OAAO,CAACM,GAAG,CAACD,GAAG,EAAEE,KAAK,CAAC;IAC5CC,SAAS,EAAGH,GAAG,IAAK;MAClB,MAAMI,MAAM,GAAGT,OAAO,CAACU,GAAG,CAACL,GAAG,CAAC;MAC/B,OAAO,OAAOI,MAAM,KAAK,QAAQ,GAAGA,MAAM,GAAGE,SAAS;IACxD,CAAC;IACDC,SAAS,EAAGP,GAAG,IAAK;MAClB,MAAMI,MAAM,GAAGT,OAAO,CAACU,GAAG,CAACL,GAAG,CAAC;MAC/B,OAAO,OAAOI,MAAM,KAAK,QAAQ,GAAGA,MAAM,GAAGE,SAAS;IACxD,CAAC;IACDE,UAAU,EAAGR,GAAG,IAAK;MACnB,MAAMI,MAAM,GAAGT,OAAO,CAACU,GAAG,CAACL,GAAG,CAAC;MAC/B,OAAO,OAAOI,MAAM,KAAK,SAAS,GAAGA,MAAM,GAAGE,SAAS;IACzD,CAAC;IACDG,SAAS,EAAGT,GAAG,IAAK;MAClB,MAAMI,MAAM,GAAGT,OAAO,CAACU,GAAG,CAACL,GAAG,CAAC;MAC/B,OAAOI,MAAM,YAAYM,WAAW,GAAGN,MAAM,GAAGE,SAAS;IAC3D,CAAC;IACDK,UAAU,EAAEA,CAAA,KAAMC,KAAK,CAACC,IAAI,CAAClB,OAAO,CAACmB,IAAI,CAAC,CAAC,CAAC;IAC5CC,QAAQ,EAAGf,GAAG,IAAKL,OAAO,CAACqB,GAAG,CAAChB,GAAG,CAAC;IACnCiB,OAAO,EAAEA,CAAA,KAAM;MACbC,OAAO,CAACC,IAAI,CAAC,uDAAuD,CAAC;IACvE,CAAC;IACDC,IAAI,EAAE,CAAC;IACPC,IAAI,EAAEA,CAAA,KAAM;MACV;IAAA;EAEJ,CAAC;AACH,CAAC;AAACC,OAAA,CAAA5B,cAAA,GAAAA,cAAA","ignoreList":[]}
|
|
@@ -5,8 +5,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.createMMKV = void 0;
|
|
7
7
|
var _createTextEncoder = require("./createTextEncoder");
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
/* global localStorage */
|
|
9
|
+
|
|
10
|
+
const canUseDOM = typeof window !== 'undefined' && window.document?.createElement != null;
|
|
10
11
|
const hasAccessToLocalStorage = () => {
|
|
11
12
|
try {
|
|
12
13
|
// throws ACCESS_DENIED error
|
|
@@ -31,7 +32,6 @@ const createMMKV = config => {
|
|
|
31
32
|
console.warn('MMKV: LocalStorage has been disabled. Your experience will be limited to in-memory storage!');
|
|
32
33
|
}
|
|
33
34
|
const storage = () => {
|
|
34
|
-
var _global, _window;
|
|
35
35
|
if (!canUseDOM) {
|
|
36
36
|
throw new Error('Tried to access storage on the server. Did you forget to call this in useEffect?');
|
|
37
37
|
}
|
|
@@ -45,7 +45,7 @@ const createMMKV = config => {
|
|
|
45
45
|
key: index => Object.keys(inMemoryStorage).at(index) ?? null
|
|
46
46
|
};
|
|
47
47
|
}
|
|
48
|
-
const domStorage =
|
|
48
|
+
const domStorage = global?.localStorage ?? window?.localStorage ?? localStorage;
|
|
49
49
|
if (domStorage == null) {
|
|
50
50
|
throw new Error(`Could not find 'localStorage' instance!`);
|
|
51
51
|
}
|
|
@@ -98,6 +98,10 @@ const createMMKV = config => {
|
|
|
98
98
|
contains: key => storage().getItem(prefixedKey(key)) != null,
|
|
99
99
|
recrypt: () => {
|
|
100
100
|
throw new Error('`recrypt(..)` is not supported on Web!');
|
|
101
|
+
},
|
|
102
|
+
size: 0,
|
|
103
|
+
trim: () => {
|
|
104
|
+
// no-op
|
|
101
105
|
}
|
|
102
106
|
};
|
|
103
107
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["canUseDOM","window","document","createElement","hasAccessToLocalStorage","localStorage","KEY_WILDCARD","inMemoryStorage","Map","createMMKV","config","encryptionKey","Error","path","console","warn","storage","getItem","key","get","setItem","value","set","removeItem","delete","clear","length","size","index","Object","keys","at","domStorage","global","textEncoder","createTextEncoder","id","includes","keyPrefix","prefixedKey","clearAll","startsWith","toString","getString","undefined","getNumber","Number","getBoolean","getBuffer","encode","getAllKeys","filter","map","slice","contains","recrypt"],"sourceRoot":"../../src","sources":["createMMKV.web.ts"],"mappings":";;;;;;AAEA;
|
|
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":["createTextEncoder","global","TextEncoder","encode","Error","encodeInto","encoding"],"sourceRoot":"../../src","sources":["createTextEncoder.ts"],"mappings":";;;;;;AAAA;AACO,SAASA,
|
|
1
|
+
{"version":3,"names":["createTextEncoder","global","TextEncoder","encode","Error","encodeInto","encoding"],"sourceRoot":"../../src","sources":["createTextEncoder.ts"],"mappings":";;;;;;AAAA;AACO,SAASA,iBAAiBA,CAAA,EAAgB;EAC/C,IAAIC,MAAM,CAACC,WAAW,IAAI,IAAI,EAAE;IAC9B,OAAO,IAAID,MAAM,CAACC,WAAW,CAAC,CAAC;EACjC,CAAC,MAAM;IACL,OAAO;MACLC,MAAM,EAAEA,CAAA,KAAM;QACZ,MAAM,IAAIC,KAAK,CAAC,mDAAmD,CAAC;MACtE,CAAC;MACDC,UAAU,EAAEA,CAAA,KAAM;QAChB,MAAM,IAAID,KAAK,CAAC,mDAAmD,CAAC;MACtE,CAAC;MACDE,QAAQ,EAAE;IACZ,CAAC;EACH;AACF","ignoreList":[]}
|
package/lib/commonjs/hooks.js
CHANGED
|
@@ -13,7 +13,7 @@ var _react = require("react");
|
|
|
13
13
|
var _MMKV = require("./MMKV");
|
|
14
14
|
function isConfigurationEqual(left, right) {
|
|
15
15
|
if (left == null || right == null) return left == null && right == null;
|
|
16
|
-
return left.encryptionKey === right.encryptionKey && left.id === right.id && left.path === right.path;
|
|
16
|
+
return left.encryptionKey === right.encryptionKey && left.id === right.id && left.path === right.path && left.mode === right.mode;
|
|
17
17
|
}
|
|
18
18
|
let defaultInstance = null;
|
|
19
19
|
function getDefaultInstance() {
|
|
@@ -27,6 +27,11 @@ function getDefaultInstance() {
|
|
|
27
27
|
* Use the default, shared MMKV instance.
|
|
28
28
|
*/
|
|
29
29
|
|
|
30
|
+
/**
|
|
31
|
+
* Use a custom MMKV instance with the given configuration.
|
|
32
|
+
* @param configuration The configuration to initialize the MMKV instance with. Does not have to be memoized.
|
|
33
|
+
*/
|
|
34
|
+
|
|
30
35
|
function useMMKV(configuration) {
|
|
31
36
|
const instance = (0, _react.useRef)();
|
|
32
37
|
const lastConfiguration = (0, _react.useRef)();
|
|
@@ -62,7 +67,7 @@ function createMMKVHook(getter) {
|
|
|
62
67
|
mmkv.delete(key);
|
|
63
68
|
break;
|
|
64
69
|
case 'object':
|
|
65
|
-
if (newValue instanceof
|
|
70
|
+
if (newValue instanceof ArrayBuffer) {
|
|
66
71
|
mmkv.set(key, newValue);
|
|
67
72
|
break;
|
|
68
73
|
} else {
|
|
@@ -96,7 +101,7 @@ function createMMKVHook(getter) {
|
|
|
96
101
|
* const [username, setUsername] = useMMKVString("user.name")
|
|
97
102
|
* ```
|
|
98
103
|
*/
|
|
99
|
-
const useMMKVString = createMMKVHook((instance, key) => instance.getString(key));
|
|
104
|
+
const useMMKVString = exports.useMMKVString = createMMKVHook((instance, key) => instance.getString(key));
|
|
100
105
|
|
|
101
106
|
/**
|
|
102
107
|
* Use the number value of the given `key` from the given MMKV storage instance.
|
|
@@ -108,8 +113,7 @@ const useMMKVString = createMMKVHook((instance, key) => instance.getString(key))
|
|
|
108
113
|
* const [age, setAge] = useMMKVNumber("user.age")
|
|
109
114
|
* ```
|
|
110
115
|
*/
|
|
111
|
-
exports.
|
|
112
|
-
const useMMKVNumber = createMMKVHook((instance, key) => instance.getNumber(key));
|
|
116
|
+
const useMMKVNumber = exports.useMMKVNumber = createMMKVHook((instance, key) => instance.getNumber(key));
|
|
113
117
|
/**
|
|
114
118
|
* Use the boolean value of the given `key` from the given MMKV storage instance.
|
|
115
119
|
*
|
|
@@ -120,8 +124,7 @@ const useMMKVNumber = createMMKVHook((instance, key) => instance.getNumber(key))
|
|
|
120
124
|
* const [isPremiumAccount, setIsPremiumAccount] = useMMKVBoolean("user.isPremium")
|
|
121
125
|
* ```
|
|
122
126
|
*/
|
|
123
|
-
exports.
|
|
124
|
-
const useMMKVBoolean = createMMKVHook((instance, key) => instance.getBoolean(key));
|
|
127
|
+
const useMMKVBoolean = exports.useMMKVBoolean = createMMKVHook((instance, key) => instance.getBoolean(key));
|
|
125
128
|
/**
|
|
126
129
|
* Use the buffer value (unsigned 8-bit (0-255)) of the given `key` from the given MMKV storage instance.
|
|
127
130
|
*
|
|
@@ -132,8 +135,7 @@ const useMMKVBoolean = createMMKVHook((instance, key) => instance.getBoolean(key
|
|
|
132
135
|
* const [privateKey, setPrivateKey] = useMMKVBuffer("user.privateKey")
|
|
133
136
|
* ```
|
|
134
137
|
*/
|
|
135
|
-
exports.
|
|
136
|
-
const useMMKVBuffer = createMMKVHook((instance, key) => instance.getBuffer(key));
|
|
138
|
+
const useMMKVBuffer = exports.useMMKVBuffer = createMMKVHook((instance, key) => instance.getBuffer(key));
|
|
137
139
|
/**
|
|
138
140
|
* Use an object value of the given `key` from the given MMKV storage instance.
|
|
139
141
|
*
|
|
@@ -146,7 +148,6 @@ const useMMKVBuffer = createMMKVHook((instance, key) => instance.getBuffer(key))
|
|
|
146
148
|
* const [user, setUser] = useMMKVObject<User>("user")
|
|
147
149
|
* ```
|
|
148
150
|
*/
|
|
149
|
-
exports.useMMKVBuffer = useMMKVBuffer;
|
|
150
151
|
function useMMKVObject(key, instance) {
|
|
151
152
|
const [json, setJson] = useMMKVString(key, instance);
|
|
152
153
|
const value = (0, _react.useMemo)(() => {
|