@quereus/plugin-react-native-leveldb 0.2.1 → 0.3.0
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/dist/src/provider.d.ts +13 -0
- package/dist/src/provider.d.ts.map +1 -1
- package/dist/src/provider.js +61 -14
- package/dist/src/provider.js.map +1 -1
- package/package.json +3 -3
package/dist/src/provider.d.ts
CHANGED
|
@@ -2,6 +2,12 @@
|
|
|
2
2
|
* React Native LevelDB KVStore provider implementation.
|
|
3
3
|
*
|
|
4
4
|
* Manages LevelDB stores for the StoreModule in React Native environments.
|
|
5
|
+
*
|
|
6
|
+
* Storage naming convention:
|
|
7
|
+
* {prefix}.{schema}.{table} - Data store (row data)
|
|
8
|
+
* {prefix}.{schema}.{table}_idx_{name} - Index store (secondary indexes)
|
|
9
|
+
* {prefix}.{schema}.{table}_stats - Stats store (row count, etc.)
|
|
10
|
+
* {prefix}.__catalog__ - Catalog store (DDL metadata)
|
|
5
11
|
*/
|
|
6
12
|
import type { KVStore, KVStoreProvider } from '@quereus/store';
|
|
7
13
|
import { type LevelDBOpenFn, type LevelDBWriteBatchConstructor } from './store.js';
|
|
@@ -56,9 +62,16 @@ export declare class ReactNativeLevelDBProvider implements KVStoreProvider {
|
|
|
56
62
|
*/
|
|
57
63
|
private getStoreKey;
|
|
58
64
|
getStore(schemaName: string, tableName: string, _options?: Record<string, unknown>): Promise<KVStore>;
|
|
65
|
+
getIndexStore(schemaName: string, tableName: string, indexName: string): Promise<KVStore>;
|
|
66
|
+
getStatsStore(schemaName: string, tableName: string): Promise<KVStore>;
|
|
59
67
|
getCatalogStore(): Promise<KVStore>;
|
|
60
68
|
closeStore(schemaName: string, tableName: string): Promise<void>;
|
|
69
|
+
closeIndexStore(schemaName: string, tableName: string, indexName: string): Promise<void>;
|
|
61
70
|
closeAll(): Promise<void>;
|
|
71
|
+
deleteIndexStore(schemaName: string, tableName: string, indexName: string): Promise<void>;
|
|
72
|
+
deleteTableStores(schemaName: string, tableName: string): Promise<void>;
|
|
73
|
+
private getOrCreateStore;
|
|
74
|
+
private closeStoreByKey;
|
|
62
75
|
}
|
|
63
76
|
/**
|
|
64
77
|
* Create a React Native LevelDB provider with the given options.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/provider.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAE/D,OAAO,EAA2B,KAAK,aAAa,EAAE,KAAK,4BAA4B,EAAE,MAAM,YAAY,CAAC;AAE5G;;GAEG;AACH,MAAM,WAAW,iCAAiC;IACjD;;;;OAIG;IACH,MAAM,EAAE,aAAa,CAAC;IAEtB;;;OAGG;IACH,UAAU,EAAE,4BAA4B,CAAC;IAEzC;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;GAKG;AACH,qBAAa,0BAA2B,YAAW,eAAe;IACjE,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,UAAU,CAA+B;IACjD,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,eAAe,CAAU;IACjC,OAAO,CAAC,MAAM,CAA8C;IAC5D,OAAO,CAAC,YAAY,CAAwC;gBAEhD,OAAO,EAAE,iCAAiC;IAOtD;;;OAGG;IACH,OAAO,CAAC,eAAe;IAIvB;;OAEG;IACH,OAAO,CAAC,WAAW;IAIb,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAKrG,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAMzF,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAMtE,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC;IAUnC,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKhE,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKxF,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAYzB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMzF,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmB7E,OAAO,CAAC,gBAAgB;YAaV,eAAe;CAO7B;AAED;;GAEG;AACH,wBAAgB,gCAAgC,CAAC,OAAO,EAAE,iCAAiC,GAAG,0BAA0B,CAEvH"}
|
package/dist/src/provider.js
CHANGED
|
@@ -2,7 +2,14 @@
|
|
|
2
2
|
* React Native LevelDB KVStore provider implementation.
|
|
3
3
|
*
|
|
4
4
|
* Manages LevelDB stores for the StoreModule in React Native environments.
|
|
5
|
+
*
|
|
6
|
+
* Storage naming convention:
|
|
7
|
+
* {prefix}.{schema}.{table} - Data store (row data)
|
|
8
|
+
* {prefix}.{schema}.{table}_idx_{name} - Index store (secondary indexes)
|
|
9
|
+
* {prefix}.{schema}.{table}_stats - Stats store (row count, etc.)
|
|
10
|
+
* {prefix}.__catalog__ - Catalog store (DDL metadata)
|
|
5
11
|
*/
|
|
12
|
+
import { STORE_SUFFIX } from '@quereus/store';
|
|
6
13
|
import { ReactNativeLevelDBStore } from './store.js';
|
|
7
14
|
/**
|
|
8
15
|
* React Native LevelDB implementation of KVStoreProvider.
|
|
@@ -38,15 +45,17 @@ export class ReactNativeLevelDBProvider {
|
|
|
38
45
|
}
|
|
39
46
|
async getStore(schemaName, tableName, _options) {
|
|
40
47
|
const key = this.getStoreKey(schemaName, tableName);
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
48
|
+
return this.getOrCreateStore(key, this.getDatabaseName(schemaName, tableName));
|
|
49
|
+
}
|
|
50
|
+
async getIndexStore(schemaName, tableName, indexName) {
|
|
51
|
+
const key = `${this.getStoreKey(schemaName, tableName)}${STORE_SUFFIX.INDEX}${indexName}`;
|
|
52
|
+
const dbName = `${this.getDatabaseName(schemaName, tableName)}${STORE_SUFFIX.INDEX}${indexName}`;
|
|
53
|
+
return this.getOrCreateStore(key, dbName);
|
|
54
|
+
}
|
|
55
|
+
async getStatsStore(schemaName, tableName) {
|
|
56
|
+
const key = `${this.getStoreKey(schemaName, tableName)}${STORE_SUFFIX.STATS}`;
|
|
57
|
+
const dbName = `${this.getDatabaseName(schemaName, tableName)}${STORE_SUFFIX.STATS}`;
|
|
58
|
+
return this.getOrCreateStore(key, dbName);
|
|
50
59
|
}
|
|
51
60
|
async getCatalogStore() {
|
|
52
61
|
if (!this.catalogStore) {
|
|
@@ -59,11 +68,11 @@ export class ReactNativeLevelDBProvider {
|
|
|
59
68
|
}
|
|
60
69
|
async closeStore(schemaName, tableName) {
|
|
61
70
|
const key = this.getStoreKey(schemaName, tableName);
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
71
|
+
await this.closeStoreByKey(key);
|
|
72
|
+
}
|
|
73
|
+
async closeIndexStore(schemaName, tableName, indexName) {
|
|
74
|
+
const key = `${this.getStoreKey(schemaName, tableName)}${STORE_SUFFIX.INDEX}${indexName}`;
|
|
75
|
+
await this.closeStoreByKey(key);
|
|
67
76
|
}
|
|
68
77
|
async closeAll() {
|
|
69
78
|
for (const store of this.stores.values()) {
|
|
@@ -75,6 +84,44 @@ export class ReactNativeLevelDBProvider {
|
|
|
75
84
|
this.catalogStore = null;
|
|
76
85
|
}
|
|
77
86
|
}
|
|
87
|
+
async deleteIndexStore(schemaName, tableName, indexName) {
|
|
88
|
+
const key = `${this.getStoreKey(schemaName, tableName)}${STORE_SUFFIX.INDEX}${indexName}`;
|
|
89
|
+
await this.closeStoreByKey(key);
|
|
90
|
+
// Note: LevelDB doesn't have a built-in delete, would need filesystem ops
|
|
91
|
+
}
|
|
92
|
+
async deleteTableStores(schemaName, tableName) {
|
|
93
|
+
// Close data store
|
|
94
|
+
const dataKey = this.getStoreKey(schemaName, tableName);
|
|
95
|
+
await this.closeStoreByKey(dataKey);
|
|
96
|
+
// Close stats store
|
|
97
|
+
const statsKey = `${dataKey}${STORE_SUFFIX.STATS}`;
|
|
98
|
+
await this.closeStoreByKey(statsKey);
|
|
99
|
+
// Close all index stores for this table
|
|
100
|
+
const indexPrefix = `${dataKey}${STORE_SUFFIX.INDEX}`;
|
|
101
|
+
for (const [key, store] of this.stores) {
|
|
102
|
+
if (key.startsWith(indexPrefix)) {
|
|
103
|
+
await store.close();
|
|
104
|
+
this.stores.delete(key);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
getOrCreateStore(key, dbName) {
|
|
109
|
+
let store = this.stores.get(key);
|
|
110
|
+
if (!store) {
|
|
111
|
+
store = ReactNativeLevelDBStore.open(this.openFn, this.WriteBatch, dbName, {
|
|
112
|
+
createIfMissing: this.createIfMissing,
|
|
113
|
+
});
|
|
114
|
+
this.stores.set(key, store);
|
|
115
|
+
}
|
|
116
|
+
return store;
|
|
117
|
+
}
|
|
118
|
+
async closeStoreByKey(key) {
|
|
119
|
+
const store = this.stores.get(key);
|
|
120
|
+
if (store) {
|
|
121
|
+
await store.close();
|
|
122
|
+
this.stores.delete(key);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
78
125
|
}
|
|
79
126
|
/**
|
|
80
127
|
* Create a React Native LevelDB provider with the given options.
|
package/dist/src/provider.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/provider.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/provider.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@quereus/plugin-react-native-leveldb",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "React Native LevelDB storage plugin for Quereus - mobile persistent storage",
|
|
6
6
|
"keywords": [
|
|
@@ -41,8 +41,8 @@
|
|
|
41
41
|
}
|
|
42
42
|
},
|
|
43
43
|
"peerDependencies": {
|
|
44
|
-
"@quereus/quereus": "^0.10.
|
|
45
|
-
"@quereus/store": "^0.
|
|
44
|
+
"@quereus/quereus": "^0.10.5",
|
|
45
|
+
"@quereus/store": "^0.5.0",
|
|
46
46
|
"rn-leveldb": "^3.11.0"
|
|
47
47
|
},
|
|
48
48
|
"engines": {
|