@interncom/diplomatic 0.0.69 → 0.0.70
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 +4 -1
- package/dist/index.mjs +50 -4
- package/dist/typedEventEmitter.d.ts +8 -0
- package/package.json +1 -1
package/dist/client.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { EntityID, GroupID, IOp, KeyPair } from "./shared/types";
|
|
2
2
|
import type { IClientStateStore, IDiplomaticClientState, IDiplomaticClientXferState } from "./types";
|
|
3
3
|
import type { StateManager } from "./state";
|
|
4
|
+
import TypedEventEmitter from "./typedEventEmitter";
|
|
4
5
|
export interface IDiplomaticClientParams {
|
|
5
6
|
store: IClientStateStore;
|
|
6
7
|
stateManager: StateManager;
|
|
@@ -11,13 +12,15 @@ export interface IDiplomaticClientParams {
|
|
|
11
12
|
export default class DiplomaticClient {
|
|
12
13
|
store: IClientStateStore;
|
|
13
14
|
stateManager: StateManager;
|
|
14
|
-
|
|
15
|
+
stateEmitter: TypedEventEmitter<IDiplomaticClientState>;
|
|
15
16
|
xferListener?: (state: IDiplomaticClientXferState) => void;
|
|
16
17
|
seed?: Uint8Array;
|
|
17
18
|
encKey?: Uint8Array;
|
|
18
19
|
hostURL?: URL;
|
|
19
20
|
hostKeyPair?: KeyPair;
|
|
20
21
|
constructor(params: IDiplomaticClientParams);
|
|
22
|
+
addEventListener(func: (state: IDiplomaticClientState) => void): () => void;
|
|
23
|
+
removeEventListener(func: (state: IDiplomaticClientState) => void): void;
|
|
21
24
|
wipe: () => Promise<void>;
|
|
22
25
|
websocket?: WebSocket;
|
|
23
26
|
connect: (hostURL: URL) => Promise<void>;
|
package/dist/index.mjs
CHANGED
|
@@ -2488,10 +2488,10 @@ function useClientState(client) {
|
|
|
2488
2488
|
const state2 = await client.getState();
|
|
2489
2489
|
setState(state2);
|
|
2490
2490
|
}
|
|
2491
|
-
|
|
2491
|
+
const unsubscribe = client.addEventListener(updateState);
|
|
2492
2492
|
updateState();
|
|
2493
2493
|
return () => {
|
|
2494
|
-
|
|
2494
|
+
unsubscribe();
|
|
2495
2495
|
};
|
|
2496
2496
|
}, [client]);
|
|
2497
2497
|
return state;
|
|
@@ -11363,20 +11363,66 @@ function genDeleteOp(eid, type, version = 0) {
|
|
|
11363
11363
|
// src/client.ts
|
|
11364
11364
|
var import_jszip = __toESM(require_jszip_min(), 1);
|
|
11365
11365
|
var import_file_saver = __toESM(require_FileSaver_min(), 1);
|
|
11366
|
+
|
|
11367
|
+
// src/typedEventEmitter.ts
|
|
11368
|
+
var TypedEventEmitter = class {
|
|
11369
|
+
listeners = /* @__PURE__ */ new Map();
|
|
11370
|
+
// Add an event listener for a specific event type
|
|
11371
|
+
addEventListener(eventType, listener) {
|
|
11372
|
+
let listeners = this.listeners.get(eventType);
|
|
11373
|
+
if (!listeners) {
|
|
11374
|
+
listeners = /* @__PURE__ */ new Set();
|
|
11375
|
+
this.listeners.set(eventType, listeners);
|
|
11376
|
+
}
|
|
11377
|
+
listeners.add(listener);
|
|
11378
|
+
return () => {
|
|
11379
|
+
this.removeEventListener(eventType, listener);
|
|
11380
|
+
};
|
|
11381
|
+
}
|
|
11382
|
+
// Remove an event listener
|
|
11383
|
+
removeEventListener(eventType, listener) {
|
|
11384
|
+
const listenerSet = this.listeners.get(eventType);
|
|
11385
|
+
if (listenerSet) {
|
|
11386
|
+
listenerSet.delete(listener);
|
|
11387
|
+
if (listenerSet.size === 0) {
|
|
11388
|
+
this.listeners.delete(eventType);
|
|
11389
|
+
}
|
|
11390
|
+
}
|
|
11391
|
+
}
|
|
11392
|
+
// Emit an event to all subscribers
|
|
11393
|
+
emit(eventType, data) {
|
|
11394
|
+
const listenerSet = this.listeners.get(eventType);
|
|
11395
|
+
if (listenerSet) {
|
|
11396
|
+
const listeners = Array.from(listenerSet);
|
|
11397
|
+
for (const listener of listeners) {
|
|
11398
|
+
listener(data);
|
|
11399
|
+
}
|
|
11400
|
+
}
|
|
11401
|
+
}
|
|
11402
|
+
};
|
|
11403
|
+
|
|
11404
|
+
// src/client.ts
|
|
11366
11405
|
var DiplomaticClient = class {
|
|
11367
11406
|
store;
|
|
11368
11407
|
stateManager;
|
|
11369
|
-
|
|
11408
|
+
stateEmitter;
|
|
11370
11409
|
xferListener;
|
|
11371
11410
|
seed;
|
|
11372
11411
|
encKey;
|
|
11373
11412
|
hostURL;
|
|
11374
11413
|
hostKeyPair;
|
|
11375
11414
|
constructor(params) {
|
|
11415
|
+
this.stateEmitter = new TypedEventEmitter();
|
|
11376
11416
|
this.store = params.store;
|
|
11377
11417
|
this.stateManager = params.stateManager;
|
|
11378
11418
|
this.init(params);
|
|
11379
11419
|
}
|
|
11420
|
+
addEventListener(func) {
|
|
11421
|
+
return this.stateEmitter.addEventListener("update", func);
|
|
11422
|
+
}
|
|
11423
|
+
removeEventListener(func) {
|
|
11424
|
+
this.stateEmitter.removeEventListener("update", func);
|
|
11425
|
+
}
|
|
11380
11426
|
wipe = async () => {
|
|
11381
11427
|
this.seed = void 0;
|
|
11382
11428
|
this.encKey = void 0;
|
|
@@ -11514,7 +11560,7 @@ var DiplomaticClient = class {
|
|
|
11514
11560
|
}
|
|
11515
11561
|
async emitUpdate() {
|
|
11516
11562
|
const state = await this.getState();
|
|
11517
|
-
this.
|
|
11563
|
+
this.stateEmitter.emit("update", state);
|
|
11518
11564
|
}
|
|
11519
11565
|
async emitXferUpdate() {
|
|
11520
11566
|
const state = await this.getXferState();
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
type Listener<T> = (data: T) => void;
|
|
2
|
+
export default class TypedEventEmitter<T> {
|
|
3
|
+
private listeners;
|
|
4
|
+
addEventListener(eventType: string, listener: Listener<T>): () => void;
|
|
5
|
+
removeEventListener(eventType: string, listener: Listener<T>): void;
|
|
6
|
+
emit(eventType: string, data: T): void;
|
|
7
|
+
}
|
|
8
|
+
export {};
|