@interncom/diplomatic 0.0.15 → 0.0.17
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/client.d.ts +1 -0
- package/dist/index.mjs +38 -44
- package/dist/types.d.ts +1 -0
- package/package.json +1 -1
package/dist/client.d.ts
CHANGED
|
@@ -18,6 +18,7 @@ export default class DiplomaticClient {
|
|
|
18
18
|
hostKeyPair?: KeyPair;
|
|
19
19
|
lastFetchedAt?: string;
|
|
20
20
|
constructor(params: IDiplomaticClientParams);
|
|
21
|
+
wipe(): Promise<void>;
|
|
21
22
|
websocket?: WebSocket;
|
|
22
23
|
connect: (hostURL: URL) => Promise<void>;
|
|
23
24
|
init(params: IDiplomaticClientParams): Promise<void>;
|
package/dist/index.mjs
CHANGED
|
@@ -16,12 +16,17 @@ function useClientState(client) {
|
|
|
16
16
|
const [state, setState] = useState();
|
|
17
17
|
useEffect(() => {
|
|
18
18
|
async function updateState() {
|
|
19
|
+
console.log("updating");
|
|
19
20
|
const state2 = await client.getState();
|
|
21
|
+
console.log("updated", state2);
|
|
20
22
|
setState(state2);
|
|
23
|
+
console.log("updated and set state");
|
|
21
24
|
}
|
|
25
|
+
console.log("hooking");
|
|
22
26
|
client.listener = updateState;
|
|
23
27
|
updateState();
|
|
24
28
|
return () => {
|
|
29
|
+
console.log("unhooking");
|
|
25
30
|
client.listener = void 0;
|
|
26
31
|
};
|
|
27
32
|
}, [client]);
|
|
@@ -316,27 +321,16 @@ function openDB(name, version, { blocked, upgrade, blocking, terminated } = {})
|
|
|
316
321
|
event
|
|
317
322
|
));
|
|
318
323
|
}
|
|
319
|
-
openPromise.then((
|
|
324
|
+
openPromise.then((db2) => {
|
|
320
325
|
if (terminated)
|
|
321
|
-
|
|
326
|
+
db2.addEventListener("close", () => terminated());
|
|
322
327
|
if (blocking) {
|
|
323
|
-
|
|
328
|
+
db2.addEventListener("versionchange", (event) => blocking(event.oldVersion, event.newVersion, event));
|
|
324
329
|
}
|
|
325
330
|
}).catch(() => {
|
|
326
331
|
});
|
|
327
332
|
return openPromise;
|
|
328
333
|
}
|
|
329
|
-
function deleteDB(name, { blocked } = {}) {
|
|
330
|
-
const request = indexedDB.deleteDatabase(name);
|
|
331
|
-
if (blocked) {
|
|
332
|
-
request.addEventListener("blocked", (event) => blocked(
|
|
333
|
-
// Casting due to https://github.com/microsoft/TypeScript-DOM-lib-generator/pull/1405
|
|
334
|
-
event.oldVersion,
|
|
335
|
-
event
|
|
336
|
-
));
|
|
337
|
-
}
|
|
338
|
-
return wrap(request).then(() => void 0);
|
|
339
|
-
}
|
|
340
334
|
var readMethods = ["get", "getKey", "getAll", "getAllKeys", "count"];
|
|
341
335
|
var writeMethods = ["put", "add", "delete", "clear"];
|
|
342
336
|
var cachedMethods = /* @__PURE__ */ new Map();
|
|
@@ -423,13 +417,13 @@ replaceTraps((oldTraps) => ({
|
|
|
423
417
|
}));
|
|
424
418
|
|
|
425
419
|
// src/idbStore.ts
|
|
426
|
-
var
|
|
427
|
-
upgrade(
|
|
428
|
-
|
|
429
|
-
|
|
420
|
+
var db = await openDB("client-store-db", 2, {
|
|
421
|
+
upgrade(db2) {
|
|
422
|
+
db2.createObjectStore("metaKV");
|
|
423
|
+
db2.createObjectStore("uploadQueue", {
|
|
430
424
|
keyPath: "sha256"
|
|
431
425
|
});
|
|
432
|
-
|
|
426
|
+
db2.createObjectStore("downloadQueue", {
|
|
433
427
|
keyPath: "path"
|
|
434
428
|
});
|
|
435
429
|
}
|
|
@@ -439,10 +433,11 @@ var IDBStore = class {
|
|
|
439
433
|
hostURL;
|
|
440
434
|
hostID;
|
|
441
435
|
async wipe() {
|
|
442
|
-
await
|
|
436
|
+
await db.clear("metaKV");
|
|
437
|
+
await db.clear("uploadQueue");
|
|
438
|
+
await db.clear("downloadQueue");
|
|
443
439
|
}
|
|
444
440
|
async getSeed() {
|
|
445
|
-
const db = await dbPromise;
|
|
446
441
|
const hex = await db.get("metaKV", "seed");
|
|
447
442
|
if (!hex) {
|
|
448
443
|
return;
|
|
@@ -452,68 +447,56 @@ var IDBStore = class {
|
|
|
452
447
|
}
|
|
453
448
|
async setSeed(seed) {
|
|
454
449
|
const hex = btoh(seed);
|
|
455
|
-
const db = await dbPromise;
|
|
456
450
|
await db.put("metaKV", hex, "seed");
|
|
457
451
|
this.seed = seed;
|
|
458
452
|
}
|
|
459
453
|
async getHostURL() {
|
|
460
|
-
const db = await dbPromise;
|
|
461
454
|
const url = await db.get("metaKV", "hostURL");
|
|
462
455
|
return url;
|
|
463
456
|
}
|
|
464
457
|
async setHostURL(url) {
|
|
465
|
-
const db = await dbPromise;
|
|
466
458
|
db.put("metaKV", url, "hostURL");
|
|
467
459
|
}
|
|
468
460
|
async getHostID() {
|
|
469
|
-
const db = await dbPromise;
|
|
470
461
|
const id = await db.get("metaKV", "hostID");
|
|
471
462
|
return id;
|
|
472
463
|
}
|
|
473
464
|
async setHostID(id) {
|
|
474
|
-
const db = await dbPromise;
|
|
475
465
|
await db.put("metaKV", id, "hostID");
|
|
476
466
|
}
|
|
477
467
|
uploadQueue = /* @__PURE__ */ new Map();
|
|
478
468
|
enqueueUpload = async (sha256, cipherOp) => {
|
|
479
|
-
const db = await dbPromise;
|
|
480
469
|
await db.put("uploadQueue", { sha256, cipherOp });
|
|
481
470
|
};
|
|
482
471
|
dequeueUpload = async (sha256) => {
|
|
483
|
-
const db = await dbPromise;
|
|
484
472
|
await db.delete("uploadQueue", sha256);
|
|
485
473
|
};
|
|
486
474
|
peekUpload = async (sha256) => {
|
|
487
|
-
const db = await dbPromise;
|
|
488
475
|
const row = await db.get("uploadQueue", sha256);
|
|
489
476
|
return row?.cipherOp;
|
|
490
477
|
};
|
|
491
478
|
listUploads = async () => {
|
|
492
|
-
const db = await dbPromise;
|
|
493
479
|
const sha256s = await db.getAllKeys("uploadQueue");
|
|
494
480
|
return sha256s;
|
|
495
481
|
};
|
|
496
482
|
numUploads = async () => {
|
|
497
|
-
const
|
|
498
|
-
return
|
|
483
|
+
const num = await db.count("uploadQueue");
|
|
484
|
+
return num;
|
|
499
485
|
};
|
|
500
486
|
downloadQueue = /* @__PURE__ */ new Set();
|
|
501
487
|
enqueueDownload = async (path) => {
|
|
502
|
-
const db = await dbPromise;
|
|
503
488
|
await db.put("downloadQueue", { path });
|
|
504
489
|
};
|
|
505
490
|
dequeueDownload = async (path) => {
|
|
506
|
-
const db = await dbPromise;
|
|
507
491
|
await db.delete("downloadQueue", path);
|
|
508
492
|
};
|
|
509
493
|
listDownloads = async () => {
|
|
510
|
-
const db = await dbPromise;
|
|
511
494
|
const paths = await db.getAllKeys("downloadQueue");
|
|
512
495
|
return paths;
|
|
513
496
|
};
|
|
514
497
|
numDownloads = async () => {
|
|
515
|
-
const
|
|
516
|
-
return
|
|
498
|
+
const num = await db.count("downloadQueue");
|
|
499
|
+
return num;
|
|
517
500
|
};
|
|
518
501
|
};
|
|
519
502
|
var idbStore = new IDBStore();
|
|
@@ -8810,6 +8793,17 @@ var DiplomaticClient = class {
|
|
|
8810
8793
|
this.applier = params.stateManager.apply;
|
|
8811
8794
|
this.init(params);
|
|
8812
8795
|
}
|
|
8796
|
+
async wipe() {
|
|
8797
|
+
this.seed = void 0;
|
|
8798
|
+
this.encKey = void 0;
|
|
8799
|
+
this.hostURL = void 0;
|
|
8800
|
+
this.hostKeyPair = void 0;
|
|
8801
|
+
this.lastFetchedAt = void 0;
|
|
8802
|
+
this.websocket?.close();
|
|
8803
|
+
this.websocket = void 0;
|
|
8804
|
+
await this.store.wipe();
|
|
8805
|
+
this.emitUpdate();
|
|
8806
|
+
}
|
|
8813
8807
|
websocket;
|
|
8814
8808
|
connect = async (hostURL) => {
|
|
8815
8809
|
if (!this.hostKeyPair) {
|
|
@@ -8842,6 +8836,7 @@ var DiplomaticClient = class {
|
|
|
8842
8836
|
};
|
|
8843
8837
|
};
|
|
8844
8838
|
async init(params) {
|
|
8839
|
+
await this.store.init?.();
|
|
8845
8840
|
if (params.seed) {
|
|
8846
8841
|
const bytes = typeof params.seed === "string" ? htob(params.seed) : params.seed;
|
|
8847
8842
|
await this.store.setSeed(bytes);
|
|
@@ -8904,13 +8899,12 @@ var DiplomaticClient = class {
|
|
|
8904
8899
|
this.listener?.(state);
|
|
8905
8900
|
}
|
|
8906
8901
|
async getState() {
|
|
8907
|
-
|
|
8908
|
-
|
|
8909
|
-
|
|
8910
|
-
|
|
8911
|
-
|
|
8912
|
-
|
|
8913
|
-
};
|
|
8902
|
+
const hasSeed = this.seed !== void 0 && this.encKey !== void 0;
|
|
8903
|
+
const hasHost = this.hostURL !== void 0 && this.hostKeyPair !== void 0;
|
|
8904
|
+
const connected = this.websocket === void 0 ? false : this.websocket.readyState === this.websocket.OPEN;
|
|
8905
|
+
const numUploads = await this.store.numUploads();
|
|
8906
|
+
const numDownloads = await this.store.numDownloads();
|
|
8907
|
+
return { hasSeed, hasHost, connected, numDownloads, numUploads };
|
|
8914
8908
|
}
|
|
8915
8909
|
async processOps() {
|
|
8916
8910
|
await this.pullOpPaths();
|
package/dist/types.d.ts
CHANGED