@optimystic/db-p2p-storage-rn 1.15.0 → 1.16.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/README.md +110 -0
- package/dist/src/identity.d.ts +3 -1
- package/dist/src/identity.d.ts.map +1 -1
- package/dist/src/identity.js +4 -2
- package/dist/src/identity.js.map +1 -1
- package/dist/src/index.d.ts +2 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/keys.d.ts +22 -0
- package/dist/src/keys.d.ts.map +1 -1
- package/dist/src/keys.js +47 -0
- package/dist/src/keys.js.map +1 -1
- package/dist/src/leveldb-kv-store.d.ts +24 -2
- package/dist/src/leveldb-kv-store.d.ts.map +1 -1
- package/dist/src/leveldb-kv-store.js +61 -3
- package/dist/src/leveldb-kv-store.js.map +1 -1
- package/dist/src/leveldb-like.d.ts +23 -4
- package/dist/src/leveldb-like.d.ts.map +1 -1
- package/dist/src/leveldb-like.js +6 -0
- package/dist/src/leveldb-like.js.map +1 -1
- package/dist/src/leveldb-storage.d.ts +70 -40
- package/dist/src/leveldb-storage.d.ts.map +1 -1
- package/dist/src/leveldb-storage.js +164 -103
- package/dist/src/leveldb-storage.js.map +1 -1
- package/dist/src/rn-opener.d.ts.map +1 -1
- package/dist/src/rn-opener.js +9 -7
- package/dist/src/rn-opener.js.map +1 -1
- package/package.json +3 -3
- package/src/identity.ts +4 -2
- package/src/index.ts +2 -2
- package/src/keys.ts +57 -0
- package/src/leveldb-kv-store.ts +67 -6
- package/src/leveldb-like.ts +24 -4
- package/src/leveldb-storage.ts +192 -127
- package/src/rn-opener.ts +11 -9
package/src/rn-opener.ts
CHANGED
|
@@ -3,6 +3,7 @@ import type {
|
|
|
3
3
|
LevelDBIteratorOptions,
|
|
4
4
|
LevelDBLike,
|
|
5
5
|
LevelDBWriteBatchLike,
|
|
6
|
+
LevelDBWriteOptions,
|
|
6
7
|
} from './leveldb-like.js';
|
|
7
8
|
|
|
8
9
|
/**
|
|
@@ -95,6 +96,11 @@ export function wrapRNLevelDB(native: RNLevelDBNative, WriteBatch: RNLevelDBWrit
|
|
|
95
96
|
}
|
|
96
97
|
|
|
97
98
|
class RNLevelDBAdapter implements LevelDBLike {
|
|
99
|
+
// `rn-leveldb` 3.11 writes every batch with LevelDB's default `WriteOptions` (`sync = false`)
|
|
100
|
+
// and offers no way to ask for a sync; `react-native-storage-syncs-once-rn-leveldb-can` is
|
|
101
|
+
// the upstream change that flips this to true.
|
|
102
|
+
readonly canSync = false;
|
|
103
|
+
|
|
98
104
|
constructor(
|
|
99
105
|
private readonly native: RNLevelDBNative,
|
|
100
106
|
private readonly WriteBatch: RNLevelDBWriteBatchCtor,
|
|
@@ -105,14 +111,6 @@ class RNLevelDBAdapter implements LevelDBLike {
|
|
|
105
111
|
return result === null ? undefined : new Uint8Array(result);
|
|
106
112
|
}
|
|
107
113
|
|
|
108
|
-
async put(key: Uint8Array, value: Uint8Array): Promise<void> {
|
|
109
|
-
this.native.put(toArrayBuffer(key), toArrayBuffer(value));
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
async delete(key: Uint8Array): Promise<void> {
|
|
113
|
-
this.native.delete(toArrayBuffer(key));
|
|
114
|
-
}
|
|
115
|
-
|
|
116
114
|
batch(): LevelDBWriteBatchLike {
|
|
117
115
|
return new RNLevelDBWriteBatchAdapter(this.native, new this.WriteBatch());
|
|
118
116
|
}
|
|
@@ -142,8 +140,12 @@ class RNLevelDBWriteBatchAdapter implements LevelDBWriteBatchLike {
|
|
|
142
140
|
return this;
|
|
143
141
|
}
|
|
144
142
|
|
|
145
|
-
|
|
143
|
+
/** Unsynced, as every `rn-leveldb` write is. A sync asked of a handle whose `canSync` is false is a caller bug, refused before anything is written. */
|
|
144
|
+
async write(options?: LevelDBWriteOptions): Promise<void> {
|
|
146
145
|
try {
|
|
146
|
+
if (options?.sync) {
|
|
147
|
+
throw new Error('rn-leveldb cannot sync a write: callers check canSync before asking (react-native-storage-syncs-once-rn-leveldb-can)');
|
|
148
|
+
}
|
|
147
149
|
this.native.write(this.batch);
|
|
148
150
|
} finally {
|
|
149
151
|
this.batch.close();
|