@peerbit/any-store-opfs 2.0.2-aa577a5 → 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/src/worker.ts CHANGED
@@ -1,9 +1,13 @@
1
1
  // TODO make bundle by removing unecessary dependencies
2
- import { deserialize, serialize } from "@dao-xyz/borsh";
3
- import { type AnyStore } from "@peerbit/any-store-interface"
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, toBase64URL, ready } from "@peerbit/crypto";
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 == "file") {
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 ? [] : [new Uint8Array((next.value as any)[1])],
267
- level: message.level
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);