@peerbit/any-store-opfs 2.0.2-a9206a8 → 2.0.2-cccc078
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/peerbit/anystore-opfs-worker.min.js +1 -1
- package/dist/src/create.d.ts.map +1 -1
- package/dist/src/create.js +4 -1
- package/dist/src/create.js.map +1 -1
- package/dist/src/index.d.ts +1 -1
- 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/opfs-store.d.ts +1 -0
- package/dist/src/opfs-store.d.ts.map +1 -1
- package/dist/src/opfs-store.js +12 -7
- package/dist/src/opfs-store.js.map +1 -1
- package/dist/src/worker.d.ts.map +1 -1
- package/dist/src/worker.js +18 -18
- package/dist/src/worker.js.map +1 -1
- package/package.json +8 -7
- package/src/create.ts +11 -2
- package/src/index.ts +1 -1
- package/src/opfs-store.ts +26 -19
- package/src/worker.ts +41 -35
package/src/worker.ts
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
// TODO make bundle by removing unecessary dependencies
|
|
2
|
-
import {
|
|
3
|
-
|
|
2
|
+
import {
|
|
3
|
+
BinaryReader,
|
|
4
|
+
BinaryWriter,
|
|
5
|
+
deserialize,
|
|
6
|
+
serialize,
|
|
7
|
+
} from "@dao-xyz/borsh";
|
|
8
|
+
import { type AnyStore } from "@peerbit/any-store-interface";
|
|
4
9
|
import * as memory from "@peerbit/any-store-interface/messages";
|
|
5
|
-
import { fromBase64URL,
|
|
6
|
-
import { BinaryReader, BinaryWriter } from "@dao-xyz/borsh";
|
|
10
|
+
import { fromBase64URL, ready, toBase64URL } from "@peerbit/crypto";
|
|
7
11
|
import { waitForResolved } from "@peerbit/time";
|
|
8
12
|
|
|
9
13
|
const directory = location.hash.split("#")?.[1];
|
|
@@ -22,14 +26,14 @@ const decodeName = (name: string): string => {
|
|
|
22
26
|
};
|
|
23
27
|
|
|
24
28
|
const waitForSyncAcccess = async (
|
|
25
|
-
fileHandle: FileSystemFileHandle
|
|
29
|
+
fileHandle: FileSystemFileHandle,
|
|
26
30
|
): Promise<FileSystemSyncAccessHandle> => {
|
|
27
31
|
try {
|
|
28
32
|
const handle = await fileHandle.createSyncAccessHandle();
|
|
29
33
|
return handle;
|
|
30
34
|
} catch (error) {
|
|
31
35
|
const handle = await waitForResolved(() =>
|
|
32
|
-
fileHandle.createSyncAccessHandle()
|
|
36
|
+
fileHandle.createSyncAccessHandle(),
|
|
33
37
|
);
|
|
34
38
|
if (!handle) {
|
|
35
39
|
throw error;
|
|
@@ -64,7 +68,7 @@ export class OPFSStoreWorker {
|
|
|
64
68
|
|
|
65
69
|
const createMemory = (
|
|
66
70
|
root?: FileSystemDirectoryHandle,
|
|
67
|
-
levels: string[] = []
|
|
71
|
+
levels: string[] = [],
|
|
68
72
|
): AnyStore => {
|
|
69
73
|
let isOpen = false;
|
|
70
74
|
|
|
@@ -98,11 +102,11 @@ export class OPFSStoreWorker {
|
|
|
98
102
|
m = await navigator.storage.getDirectory();
|
|
99
103
|
if (directory) {
|
|
100
104
|
m = await m.getDirectoryHandle(encodeName(directory), {
|
|
101
|
-
create: true
|
|
105
|
+
create: true,
|
|
102
106
|
});
|
|
103
107
|
}
|
|
104
108
|
await calculateSize();
|
|
105
|
-
}
|
|
109
|
+
}
|
|
106
110
|
isOpen = true;
|
|
107
111
|
};
|
|
108
112
|
return {
|
|
@@ -155,7 +159,7 @@ export class OPFSStoreWorker {
|
|
|
155
159
|
const encodedKey = encodeName(key);
|
|
156
160
|
|
|
157
161
|
const fileHandle = await m.getFileHandle(encodedKey, {
|
|
158
|
-
create: true
|
|
162
|
+
create: true,
|
|
159
163
|
});
|
|
160
164
|
const writeFileHandle = await createWriteHandle(fileHandle);
|
|
161
165
|
writeFileHandle.write(value);
|
|
@@ -178,7 +182,7 @@ export class OPFSStoreWorker {
|
|
|
178
182
|
sublevel: async (name) => {
|
|
179
183
|
const encodedName = encodeName(name);
|
|
180
184
|
const fileHandle = await m.getDirectoryHandle(encodedName, {
|
|
181
|
-
create: true
|
|
185
|
+
create: true,
|
|
182
186
|
});
|
|
183
187
|
const sublevel = [...levels, name];
|
|
184
188
|
const subMemory = createMemory(fileHandle, sublevel);
|
|
@@ -189,10 +193,10 @@ export class OPFSStoreWorker {
|
|
|
189
193
|
|
|
190
194
|
async *iterator(): AsyncGenerator<[string, Uint8Array], void, void> {
|
|
191
195
|
for await (const v of m.values()) {
|
|
192
|
-
if (v.kind
|
|
196
|
+
if (v.kind === "file") {
|
|
193
197
|
yield [
|
|
194
198
|
decodeName(v.name),
|
|
195
|
-
new Uint8Array(await (await v.getFile()).arrayBuffer())
|
|
199
|
+
new Uint8Array(await (await v.getFile()).arrayBuffer()),
|
|
196
200
|
];
|
|
197
201
|
}
|
|
198
202
|
}
|
|
@@ -202,7 +206,8 @@ export class OPFSStoreWorker {
|
|
|
202
206
|
isOpen = false;
|
|
203
207
|
this._memoryIterator.clear();
|
|
204
208
|
},
|
|
205
|
-
open
|
|
209
|
+
open,
|
|
210
|
+
persisted: () => true,
|
|
206
211
|
};
|
|
207
212
|
};
|
|
208
213
|
|
|
@@ -213,13 +218,13 @@ export class OPFSStoreWorker {
|
|
|
213
218
|
try {
|
|
214
219
|
if (message instanceof memory.MemoryMessage) {
|
|
215
220
|
if (message instanceof memory.REQ_Open) {
|
|
216
|
-
if (await this._rootStore.status() === "closed") {
|
|
221
|
+
if ((await this._rootStore.status()) === "closed") {
|
|
217
222
|
await this._rootStore.open();
|
|
218
223
|
}
|
|
219
224
|
await this.respond(
|
|
220
225
|
message,
|
|
221
226
|
new memory.RESP_Open({ level: message.level }),
|
|
222
|
-
postMessageFn
|
|
227
|
+
postMessageFn,
|
|
223
228
|
);
|
|
224
229
|
return;
|
|
225
230
|
}
|
|
@@ -235,22 +240,21 @@ export class OPFSStoreWorker {
|
|
|
235
240
|
await this.respond(
|
|
236
241
|
message,
|
|
237
242
|
new memory.RESP_Clear({ level: message.level }),
|
|
238
|
-
postMessageFn
|
|
243
|
+
postMessageFn,
|
|
239
244
|
);
|
|
240
245
|
} else if (message instanceof memory.REQ_Close) {
|
|
241
|
-
console.log("CLOSE > ", message.level)
|
|
242
246
|
await m.close();
|
|
243
247
|
await this.respond(
|
|
244
248
|
message,
|
|
245
249
|
new memory.RESP_Close({ level: message.level }),
|
|
246
|
-
postMessageFn
|
|
250
|
+
postMessageFn,
|
|
247
251
|
);
|
|
248
252
|
} else if (message instanceof memory.REQ_Del) {
|
|
249
253
|
await m.del(message.key);
|
|
250
254
|
await this.respond(
|
|
251
255
|
message,
|
|
252
256
|
new memory.RESP_Del({ level: message.level }),
|
|
253
|
-
postMessageFn
|
|
257
|
+
postMessageFn,
|
|
254
258
|
);
|
|
255
259
|
} else if (message instanceof memory.REQ_Iterator_Next) {
|
|
256
260
|
let iterator = this._memoryIterator.get(message.id);
|
|
@@ -263,10 +267,12 @@ export class OPFSStoreWorker {
|
|
|
263
267
|
message,
|
|
264
268
|
new memory.RESP_Iterator_Next({
|
|
265
269
|
keys: next.done ? [] : [(next.value as any)[0]],
|
|
266
|
-
values: next.done
|
|
267
|
-
|
|
270
|
+
values: next.done
|
|
271
|
+
? []
|
|
272
|
+
: [new Uint8Array((next.value as any)[1])],
|
|
273
|
+
level: message.level,
|
|
268
274
|
}),
|
|
269
|
-
postMessageFn
|
|
275
|
+
postMessageFn,
|
|
270
276
|
);
|
|
271
277
|
if (next.done) {
|
|
272
278
|
this._memoryIterator.delete(message.id);
|
|
@@ -276,7 +282,7 @@ export class OPFSStoreWorker {
|
|
|
276
282
|
await this.respond(
|
|
277
283
|
message,
|
|
278
284
|
new memory.RESP_Iterator_Stop({ level: message.level }),
|
|
279
|
-
postMessageFn
|
|
285
|
+
postMessageFn,
|
|
280
286
|
);
|
|
281
287
|
} else if (message instanceof memory.REQ_Get) {
|
|
282
288
|
const value = await m.get(message.key);
|
|
@@ -284,34 +290,34 @@ export class OPFSStoreWorker {
|
|
|
284
290
|
message,
|
|
285
291
|
new memory.RESP_Get({
|
|
286
292
|
bytes: value ? new Uint8Array(value) : undefined,
|
|
287
|
-
level: message.level
|
|
293
|
+
level: message.level,
|
|
288
294
|
}),
|
|
289
|
-
postMessageFn
|
|
295
|
+
postMessageFn,
|
|
290
296
|
);
|
|
291
297
|
} else if (message instanceof memory.REQ_Put) {
|
|
292
298
|
await m.put(message.key, message.bytes);
|
|
293
299
|
await this.respond(
|
|
294
300
|
message,
|
|
295
301
|
new memory.RESP_Put({ level: message.level }),
|
|
296
|
-
postMessageFn
|
|
302
|
+
postMessageFn,
|
|
297
303
|
);
|
|
298
304
|
} else if (message instanceof memory.REQ_Size) {
|
|
299
305
|
await this.respond(
|
|
300
306
|
message,
|
|
301
307
|
new memory.RESP_Size({
|
|
302
308
|
size: await m.size(),
|
|
303
|
-
level: message.level
|
|
309
|
+
level: message.level,
|
|
304
310
|
}),
|
|
305
|
-
postMessageFn
|
|
311
|
+
postMessageFn,
|
|
306
312
|
);
|
|
307
313
|
} else if (message instanceof memory.REQ_Status) {
|
|
308
314
|
await this.respond(
|
|
309
315
|
message,
|
|
310
316
|
new memory.RESP_Status({
|
|
311
317
|
status: await m.status(),
|
|
312
|
-
level: message.level
|
|
318
|
+
level: message.level,
|
|
313
319
|
}),
|
|
314
|
-
postMessageFn
|
|
320
|
+
postMessageFn,
|
|
315
321
|
);
|
|
316
322
|
} else if (message instanceof memory.REQ_Sublevel) {
|
|
317
323
|
await m.sublevel(message.name);
|
|
@@ -319,7 +325,7 @@ export class OPFSStoreWorker {
|
|
|
319
325
|
await this.respond(
|
|
320
326
|
message,
|
|
321
327
|
new memory.RESP_Sublevel({ level: message.level }),
|
|
322
|
-
postMessageFn
|
|
328
|
+
postMessageFn,
|
|
323
329
|
);
|
|
324
330
|
}
|
|
325
331
|
}
|
|
@@ -328,9 +334,9 @@ export class OPFSStoreWorker {
|
|
|
328
334
|
message,
|
|
329
335
|
new memory.RESP_Error({
|
|
330
336
|
error: (error as any)?.["message"] || error?.constructor.name,
|
|
331
|
-
level: (message as any)["level"] || []
|
|
337
|
+
level: (message as any)["level"] || [],
|
|
332
338
|
}),
|
|
333
|
-
postMessageFn
|
|
339
|
+
postMessageFn,
|
|
334
340
|
);
|
|
335
341
|
}
|
|
336
342
|
});
|
|
@@ -339,7 +345,7 @@ export class OPFSStoreWorker {
|
|
|
339
345
|
async respond(
|
|
340
346
|
request: memory.MemoryRequest,
|
|
341
347
|
response: memory.MemoryRequest,
|
|
342
|
-
postMessageFn = postMessage
|
|
348
|
+
postMessageFn = postMessage,
|
|
343
349
|
) {
|
|
344
350
|
response.messageId = request.messageId;
|
|
345
351
|
const bytes = serialize(response);
|