@interncom/diplomatic 0.0.12 → 0.0.13

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.
@@ -3,6 +3,7 @@ declare class IDBStore implements IClientStateStore {
3
3
  seed?: Uint8Array;
4
4
  hostURL?: string;
5
5
  hostID?: string;
6
+ wipe(): Promise<void>;
6
7
  getSeed(): Promise<Uint8Array | undefined>;
7
8
  setSeed(seed: Uint8Array): Promise<void>;
8
9
  getHostURL(): Promise<string | undefined>;
package/dist/index.mjs CHANGED
@@ -101,6 +101,9 @@ var seedKey = "seedHex";
101
101
  var hostURLKey = "hostURL";
102
102
  var hostIDKey = "hostID";
103
103
  var LocalStorageStore = class {
104
+ async wipe() {
105
+ localStorage.clear();
106
+ }
104
107
  async getSeed() {
105
108
  const storedSeed = localStorage.getItem(seedKey);
106
109
  if (storedSeed) {
@@ -300,6 +303,17 @@ function openDB(name, version, { blocked, upgrade, blocking, terminated } = {})
300
303
  });
301
304
  return openPromise;
302
305
  }
306
+ function deleteDB(name, { blocked } = {}) {
307
+ const request = indexedDB.deleteDatabase(name);
308
+ if (blocked) {
309
+ request.addEventListener("blocked", (event) => blocked(
310
+ // Casting due to https://github.com/microsoft/TypeScript-DOM-lib-generator/pull/1405
311
+ event.oldVersion,
312
+ event
313
+ ));
314
+ }
315
+ return wrap(request).then(() => void 0);
316
+ }
303
317
  var readMethods = ["get", "getKey", "getAll", "getAllKeys", "count"];
304
318
  var writeMethods = ["put", "add", "delete", "clear"];
305
319
  var cachedMethods = /* @__PURE__ */ new Map();
@@ -389,14 +403,24 @@ replaceTraps((oldTraps) => ({
389
403
  var dbPromise = openDB("client-store-db", 1, {
390
404
  upgrade(db) {
391
405
  db.createObjectStore("metaKV");
406
+ db.createObjectStore("uploadQueue", {
407
+ keyPath: "sha256"
408
+ });
409
+ db.createObjectStore("downloadQueue", {
410
+ keyPath: "path"
411
+ });
392
412
  }
393
413
  });
394
414
  var IDBStore = class {
395
415
  seed;
396
416
  hostURL;
397
417
  hostID;
418
+ async wipe() {
419
+ await deleteDB("client-store-db");
420
+ }
398
421
  async getSeed() {
399
- const hex = await (await dbPromise).get("metaKV", "seed");
422
+ const db = await dbPromise;
423
+ const hex = await db.get("metaKV", "seed");
400
424
  if (!hex) {
401
425
  return;
402
426
  }
@@ -405,45 +429,60 @@ var IDBStore = class {
405
429
  }
406
430
  async setSeed(seed) {
407
431
  const hex = btoh(seed);
408
- (await dbPromise).put("metaKV", hex, "seed");
432
+ const db = await dbPromise;
433
+ await db.put("metaKV", hex, "seed");
409
434
  this.seed = seed;
410
435
  }
411
436
  async getHostURL() {
412
- const url = await (await dbPromise).get("metaKV", "hostURL");
437
+ const db = await dbPromise;
438
+ const url = await db.get("metaKV", "hostURL");
413
439
  return url;
414
440
  }
415
441
  async setHostURL(url) {
416
- (await dbPromise).put("metaKV", url, "hostURL");
442
+ const db = await dbPromise;
443
+ db.put("metaKV", url, "hostURL");
417
444
  }
418
445
  async getHostID() {
419
- const id = await (await dbPromise).get("metaKV", "hostID");
446
+ const db = await dbPromise;
447
+ const id = await db.get("metaKV", "hostID");
420
448
  return id;
421
449
  }
422
450
  async setHostID(id) {
423
- (await dbPromise).put("metaKV", id, "hostID");
451
+ const db = await dbPromise;
452
+ await db.put("metaKV", id, "hostID");
424
453
  }
425
454
  uploadQueue = /* @__PURE__ */ new Map();
426
455
  enqueueUpload = async (sha256, cipherOp) => {
427
- this.uploadQueue.set(sha256, cipherOp);
456
+ const db = await dbPromise;
457
+ await db.put("uploadQueue", { sha256, cipherOp });
428
458
  };
429
459
  dequeueUpload = async (sha256) => {
430
- this.uploadQueue.delete(sha256);
460
+ const db = await dbPromise;
461
+ await db.delete("uploadQueue", sha256);
431
462
  };
432
463
  peekUpload = async (sha256) => {
433
- return this.uploadQueue.get(sha256);
464
+ const db = await dbPromise;
465
+ const row = await db.get("uploadQueue", sha256);
466
+ return row?.cipherOp;
434
467
  };
435
468
  listUploads = async () => {
436
- return Array.from(this.uploadQueue.keys());
469
+ const db = await dbPromise;
470
+ const sha256s = await db.getAllKeys("uploadQueue");
471
+ return sha256s;
437
472
  };
438
473
  downloadQueue = /* @__PURE__ */ new Set();
439
474
  enqueueDownload = async (path) => {
440
- this.downloadQueue.add(path);
475
+ const db = await dbPromise;
476
+ await db.put("downloadQueue", { path });
441
477
  };
442
478
  dequeueDownload = async (path) => {
443
- this.downloadQueue.delete(path);
479
+ const db = await dbPromise;
480
+ await db.delete("downloadQueue", path);
444
481
  };
445
482
  listDownloads = async () => {
446
- return Array.from(this.downloadQueue.keys());
483
+ const db = await dbPromise;
484
+ const paths = await db.getAllKeys("downloadQueue");
485
+ return paths;
447
486
  };
448
487
  };
449
488
  var idbStore = new IDBStore();
@@ -8770,7 +8809,6 @@ var DiplomaticClient = class {
8770
8809
  };
8771
8810
  };
8772
8811
  async init(params) {
8773
- await this.store.init?.();
8774
8812
  if (params.seed) {
8775
8813
  const bytes = typeof params.seed === "string" ? htob(params.seed) : params.seed;
8776
8814
  await this.store.setSeed(bytes);
@@ -1,5 +1,6 @@
1
1
  import type { IClientStateStore } from "./types";
2
2
  declare class LocalStorageStore implements IClientStateStore {
3
+ wipe(): Promise<void>;
3
4
  getSeed(): Promise<Uint8Array | undefined>;
4
5
  setSeed(seed: Uint8Array): Promise<void>;
5
6
  getHostURL(): Promise<string | undefined>;
@@ -3,6 +3,7 @@ declare class MemoryStore implements IClientStateStore {
3
3
  seed?: Uint8Array;
4
4
  hostURL?: string;
5
5
  hostID?: string;
6
+ wipe(): Promise<void>;
6
7
  getSeed(): Promise<Uint8Array | undefined>;
7
8
  setSeed(seed: Uint8Array): Promise<void>;
8
9
  getHostURL(): Promise<string | undefined>;
package/dist/types.d.ts CHANGED
@@ -1,12 +1,12 @@
1
1
  import type { IOp } from "./shared/types";
2
2
  export interface IClientStateStore {
3
- init?: () => Promise<void>;
4
3
  getSeed: () => Promise<Uint8Array | undefined>;
5
4
  setSeed: (seed: Uint8Array) => Promise<void>;
6
5
  getHostURL: () => Promise<string | undefined>;
7
6
  setHostURL: (url: string) => Promise<void>;
8
7
  getHostID: () => Promise<string | undefined>;
9
8
  setHostID: (id: string) => Promise<void>;
9
+ wipe: () => Promise<void>;
10
10
  enqueueUpload: (sha256: string, cipherOp: Uint8Array) => Promise<void>;
11
11
  dequeueUpload: (sha256: string) => Promise<void>;
12
12
  peekUpload: (sha256: string) => Promise<Uint8Array | undefined>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@interncom/diplomatic",
3
- "version": "0.0.12",
3
+ "version": "0.0.13",
4
4
  "type": "module",
5
5
  "description": "Secure sync layer",
6
6
  "main": "dist/index.mjs",