@mongrov/db 0.2.1 → 0.2.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.
|
@@ -1,15 +1,20 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* MMKV backend for KVStore.
|
|
3
3
|
* Wraps synchronous MMKV calls in async interface for API consistency.
|
|
4
|
+
* Falls back to in-memory storage if MMKV native module isn't available.
|
|
4
5
|
*/
|
|
5
6
|
import type { KVStore } from '../types';
|
|
6
7
|
/**
|
|
7
8
|
* MMKV-backed KVStore implementation.
|
|
8
9
|
* Fast synchronous storage wrapped in async API.
|
|
10
|
+
* Falls back to in-memory storage if native module isn't available.
|
|
9
11
|
*/
|
|
10
12
|
export declare class MMKVBackend implements KVStore {
|
|
11
|
-
private
|
|
13
|
+
private instanceId;
|
|
14
|
+
private _storage;
|
|
15
|
+
private _mmkvAvailable;
|
|
12
16
|
constructor(instanceId?: string);
|
|
17
|
+
private getStorage;
|
|
13
18
|
get(key: string): Promise<string | null>;
|
|
14
19
|
set(key: string, value: string): Promise<void>;
|
|
15
20
|
delete(key: string): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mmkv-backend.d.ts","sourceRoot":"","sources":["../../src/kv-backends/mmkv-backend.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"mmkv-backend.d.ts","sourceRoot":"","sources":["../../src/kv-backends/mmkv-backend.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAyBvC;;;;GAIG;AACH,qBAAa,WAAY,YAAW,OAAO;IACzC,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,QAAQ,CAA2B;IAC3C,OAAO,CAAC,cAAc,CAAuB;gBAEjC,UAAU,GAAE,MAAqB;IAK7C,OAAO,CAAC,UAAU;IA0BZ,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAIxC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlC,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAU5C,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;CAGtC"}
|
|
@@ -1,42 +1,63 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* MMKV backend for KVStore.
|
|
3
3
|
* Wraps synchronous MMKV calls in async interface for API consistency.
|
|
4
|
+
* Falls back to in-memory storage if MMKV native module isn't available.
|
|
4
5
|
*/
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
throw new Error('@mongrov/db: react-native-mmkv is required for KVStore. ' +
|
|
15
|
-
'Install it with: pnpm add react-native-mmkv');
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
return MMKV;
|
|
6
|
+
function createMemoryStorage() {
|
|
7
|
+
const store = new Map();
|
|
8
|
+
return {
|
|
9
|
+
getString: (key) => store.get(key),
|
|
10
|
+
set: (key, value) => { store.set(key, value); },
|
|
11
|
+
delete: (key) => { store.delete(key); },
|
|
12
|
+
getAllKeys: () => Array.from(store.keys()),
|
|
13
|
+
clearAll: () => { store.clear(); },
|
|
14
|
+
};
|
|
19
15
|
}
|
|
20
16
|
/**
|
|
21
17
|
* MMKV-backed KVStore implementation.
|
|
22
18
|
* Fast synchronous storage wrapped in async API.
|
|
19
|
+
* Falls back to in-memory storage if native module isn't available.
|
|
23
20
|
*/
|
|
24
21
|
export class MMKVBackend {
|
|
25
22
|
constructor(instanceId = 'mongrov-kv') {
|
|
26
|
-
|
|
27
|
-
this.
|
|
23
|
+
this._storage = null;
|
|
24
|
+
this._mmkvAvailable = null;
|
|
25
|
+
this.instanceId = instanceId;
|
|
26
|
+
// Don't initialize here - defer to first access
|
|
27
|
+
}
|
|
28
|
+
getStorage() {
|
|
29
|
+
if (this._storage)
|
|
30
|
+
return this._storage;
|
|
31
|
+
if (this._mmkvAvailable === null) {
|
|
32
|
+
try {
|
|
33
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
34
|
+
const { MMKV } = require('react-native-mmkv');
|
|
35
|
+
this._storage = new MMKV({ id: this.instanceId });
|
|
36
|
+
this._mmkvAvailable = true;
|
|
37
|
+
}
|
|
38
|
+
catch (e) {
|
|
39
|
+
// Native module not available - use in-memory fallback
|
|
40
|
+
// This can happen during JS bundle evaluation before native modules are ready
|
|
41
|
+
if (typeof __DEV__ !== 'undefined' && __DEV__) {
|
|
42
|
+
console.warn(`[@mongrov/db] MMKV not available for instance "${this.instanceId}", using in-memory fallback:`, e);
|
|
43
|
+
}
|
|
44
|
+
this._storage = createMemoryStorage();
|
|
45
|
+
this._mmkvAvailable = false;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return this._storage;
|
|
28
49
|
}
|
|
29
50
|
async get(key) {
|
|
30
|
-
return this.
|
|
51
|
+
return this.getStorage().getString(key) ?? null;
|
|
31
52
|
}
|
|
32
53
|
async set(key, value) {
|
|
33
|
-
this.
|
|
54
|
+
this.getStorage().set(key, value);
|
|
34
55
|
}
|
|
35
56
|
async delete(key) {
|
|
36
|
-
this.
|
|
57
|
+
this.getStorage().delete(key);
|
|
37
58
|
}
|
|
38
59
|
async getObject(key) {
|
|
39
|
-
const value = this.
|
|
60
|
+
const value = this.getStorage().getString(key);
|
|
40
61
|
if (value === undefined)
|
|
41
62
|
return null;
|
|
42
63
|
try {
|
|
@@ -47,13 +68,13 @@ export class MMKVBackend {
|
|
|
47
68
|
}
|
|
48
69
|
}
|
|
49
70
|
async setObject(key, value) {
|
|
50
|
-
this.
|
|
71
|
+
this.getStorage().set(key, JSON.stringify(value));
|
|
51
72
|
}
|
|
52
73
|
async clear() {
|
|
53
|
-
this.
|
|
74
|
+
this.getStorage().clearAll();
|
|
54
75
|
}
|
|
55
76
|
async getAllKeys() {
|
|
56
|
-
return this.
|
|
77
|
+
return this.getStorage().getAllKeys();
|
|
57
78
|
}
|
|
58
79
|
}
|
|
59
80
|
//# sourceMappingURL=mmkv-backend.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mmkv-backend.js","sourceRoot":"","sources":["../../src/kv-backends/mmkv-backend.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"mmkv-backend.js","sourceRoot":"","sources":["../../src/kv-backends/mmkv-backend.ts"],"names":[],"mappings":"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"}
|