@peerbit/program 2.4.1 → 3.0.1
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/lib/esm/client.d.ts +9 -6
- package/lib/esm/handler.d.ts +2 -2
- package/lib/esm/handler.js +11 -22
- package/lib/esm/handler.js.map +1 -1
- package/lib/esm/program.d.ts +9 -6
- package/lib/esm/program.js +64 -28
- package/lib/esm/program.js.map +1 -1
- package/lib/esm/utils.js.map +1 -1
- package/package.json +7 -6
- package/src/client.ts +10 -7
- package/src/handler.ts +12 -34
- package/src/program.ts +98 -47
package/lib/esm/client.d.ts
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import type { PeerId as Libp2pPeerId } from "@libp2p/interface/peer-id";
|
|
2
2
|
import { Blocks } from "@peerbit/blocks-interface";
|
|
3
3
|
import { PubSub } from "@peerbit/pubsub-interface";
|
|
4
|
-
import { Ed25519PublicKey, Identity
|
|
5
|
-
import
|
|
4
|
+
import { Ed25519PublicKey, Identity } from "@peerbit/crypto";
|
|
5
|
+
import { Keychain } from "@peerbit/keychain";
|
|
6
|
+
import type { AnyStore } from "@peerbit/any-store";
|
|
6
7
|
import { Multiaddr } from "@multiformats/multiaddr";
|
|
7
8
|
import { Address } from "./address.js";
|
|
8
9
|
import { CanOpen, Manageable, OpenOptions } from "./handler.js";
|
|
9
|
-
|
|
10
|
+
type ExtractArgs<T> = T extends CanOpen<infer Args> ? Args : never;
|
|
11
|
+
export interface Client<T extends Manageable<ExtractArgs<T>>> {
|
|
10
12
|
peerId: Libp2pPeerId;
|
|
11
13
|
identity: Identity<Ed25519PublicKey>;
|
|
12
14
|
getMultiaddrs: () => Multiaddr[];
|
|
@@ -14,10 +16,11 @@ export interface Client<T extends Manageable<any>> {
|
|
|
14
16
|
services: {
|
|
15
17
|
pubsub: PubSub;
|
|
16
18
|
blocks: Blocks;
|
|
19
|
+
keychain: Keychain;
|
|
17
20
|
};
|
|
18
|
-
memory:
|
|
19
|
-
keychain: Keychain;
|
|
21
|
+
memory: AnyStore;
|
|
20
22
|
start(): Promise<void>;
|
|
21
23
|
stop(): Promise<void>;
|
|
22
|
-
open<S extends T & CanOpen<
|
|
24
|
+
open<S extends T & CanOpen<ExtractArgs<S>>>(program: S | Address, options?: OpenOptions<ExtractArgs<S>, S>): Promise<S>;
|
|
23
25
|
}
|
|
26
|
+
export {};
|
package/lib/esm/handler.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Blocks } from "@peerbit/blocks-interface";
|
|
2
2
|
import { Address } from "./address.js";
|
|
3
|
-
export declare const logger: import("pino").Logger<
|
|
3
|
+
export declare const logger: import("pino").Logger<never>;
|
|
4
4
|
type ProgramMergeStrategy = "replace" | "reject" | "reuse";
|
|
5
5
|
export type EventOptions = {
|
|
6
6
|
onBeforeOpen?: (program: Manageable<any>) => Promise<void> | void;
|
|
@@ -45,6 +45,7 @@ export type Manageable<Args> = Closeable & Addressable & CanOpen<Args> & Saveabl
|
|
|
45
45
|
parents: (Manageable<any> | undefined)[];
|
|
46
46
|
};
|
|
47
47
|
export type ProgramInitializationOptions<Args, T extends Manageable<Args>> = {} & WithArgs<Args> & WithParent<T> & EventOptions;
|
|
48
|
+
export declare const addParent: (child: Manageable<any>, parent?: Manageable<any>) => void;
|
|
48
49
|
export declare class Handler<T extends Manageable<any>> {
|
|
49
50
|
readonly properties: {
|
|
50
51
|
client: {
|
|
@@ -74,7 +75,6 @@ export declare class Handler<T extends Manageable<any>> {
|
|
|
74
75
|
});
|
|
75
76
|
stop(): Promise<void>;
|
|
76
77
|
private _onProgamClose;
|
|
77
|
-
private _onProgramOpen;
|
|
78
78
|
private checkProcessExisting;
|
|
79
79
|
open<S extends T, Args = any>(storeOrAddress: S | Address | string, options?: OpenOptions<Args, S>): Promise<S>;
|
|
80
80
|
}
|
package/lib/esm/handler.js
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import PQueue from "p-queue";
|
|
2
2
|
import { logger as loggerFn } from "@peerbit/logger";
|
|
3
3
|
export const logger = loggerFn({ module: "program-handler" });
|
|
4
|
+
export const addParent = (child, parent) => {
|
|
5
|
+
(child.parents || (child.parents = [])).push(parent);
|
|
6
|
+
if (parent) {
|
|
7
|
+
(parent.children || (parent.children = [])).push(child);
|
|
8
|
+
}
|
|
9
|
+
};
|
|
4
10
|
export class Handler {
|
|
5
11
|
properties;
|
|
6
12
|
items;
|
|
@@ -25,23 +31,6 @@ export class Handler {
|
|
|
25
31
|
this.items.delete(program.address.toString());
|
|
26
32
|
// TODO remove item from this._openQueue?
|
|
27
33
|
}
|
|
28
|
-
async _onProgramOpen(program, mergeSrategy) {
|
|
29
|
-
const programAddress = program.address?.toString();
|
|
30
|
-
if (!programAddress) {
|
|
31
|
-
throw new Error("Missing program address");
|
|
32
|
-
}
|
|
33
|
-
if (this.items.has(programAddress)) {
|
|
34
|
-
// second condition only makes this throw error if we are to add a new instance with the same address
|
|
35
|
-
const existing = await this.checkProcessExisting(programAddress, program, mergeSrategy);
|
|
36
|
-
if (!existing) {
|
|
37
|
-
throw new Error("Unexpected");
|
|
38
|
-
}
|
|
39
|
-
this.items.set(programAddress, program);
|
|
40
|
-
}
|
|
41
|
-
else {
|
|
42
|
-
this.items.set(programAddress, program);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
34
|
async checkProcessExisting(address, toOpen, mergeSrategy = "reject") {
|
|
46
35
|
const prev = this.items.get(address);
|
|
47
36
|
if (mergeSrategy === "reject") {
|
|
@@ -92,6 +81,7 @@ export class Handler {
|
|
|
92
81
|
if (!program.closed) {
|
|
93
82
|
const existing = this.items.get(program.address);
|
|
94
83
|
if (existing === program) {
|
|
84
|
+
addParent(existing, options.parent);
|
|
95
85
|
return program;
|
|
96
86
|
}
|
|
97
87
|
else if (existing) {
|
|
@@ -105,6 +95,7 @@ export class Handler {
|
|
|
105
95
|
// assume new instance was not added to monitored items, just add it
|
|
106
96
|
// and return it as we would opened it normally
|
|
107
97
|
this.items.set(program.address, program);
|
|
98
|
+
addParent(program, options.parent);
|
|
108
99
|
return program;
|
|
109
100
|
}
|
|
110
101
|
}
|
|
@@ -117,11 +108,9 @@ export class Handler {
|
|
|
117
108
|
return existing;
|
|
118
109
|
}
|
|
119
110
|
await program.beforeOpen(this.properties.client, {
|
|
120
|
-
onBeforeOpen:
|
|
121
|
-
if (this.properties.shouldMonitor(
|
|
122
|
-
|
|
123
|
-
!p.parents[0]) {
|
|
124
|
-
return this._onProgramOpen(p, options?.existing); // TODO types
|
|
111
|
+
onBeforeOpen: (p) => {
|
|
112
|
+
if (this.properties.shouldMonitor(program) && !options.parent) {
|
|
113
|
+
this.items.set(address, program);
|
|
125
114
|
}
|
|
126
115
|
},
|
|
127
116
|
onClose: (p) => {
|
package/lib/esm/handler.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../src/handler.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,SAAS,CAAC;AAE7B,OAAO,EAAE,MAAM,IAAI,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAErD,MAAM,CAAC,MAAM,MAAM,GAAG,QAAQ,CAAC,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../src/handler.ts"],"names":[],"mappings":"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"}
|
package/lib/esm/program.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { PublicSignKey } from "@peerbit/crypto";
|
|
2
2
|
import { Constructor } from "@dao-xyz/borsh";
|
|
3
|
-
import {
|
|
3
|
+
import { TypedEventTarget } from "@libp2p/interface";
|
|
4
4
|
import { Client } from "./client.js";
|
|
5
5
|
import { Blocks } from "@peerbit/blocks-interface";
|
|
6
6
|
import { PeerId as Libp2pPeerId } from "@libp2p/interface/peer-id";
|
|
@@ -25,6 +25,7 @@ declare class ProgramHandler extends Handler<Program> {
|
|
|
25
25
|
});
|
|
26
26
|
}
|
|
27
27
|
export { ProgramHandler };
|
|
28
|
+
type ExtractArgs<T> = T extends Program<infer Args> ? Args : never;
|
|
28
29
|
export declare abstract class Program<Args = any, Events extends ProgramEvents = ProgramEvents> implements Manageable<Args> {
|
|
29
30
|
private _node;
|
|
30
31
|
private _allPrograms;
|
|
@@ -35,8 +36,7 @@ export declare abstract class Program<Args = any, Events extends ProgramEvents =
|
|
|
35
36
|
private _address?;
|
|
36
37
|
get address(): Address;
|
|
37
38
|
set address(address: Address);
|
|
38
|
-
|
|
39
|
-
get events(): EventEmitter<Events>;
|
|
39
|
+
get events(): TypedEventTarget<Events>;
|
|
40
40
|
get closed(): boolean;
|
|
41
41
|
set closed(closed: boolean);
|
|
42
42
|
get node(): ProgramClient;
|
|
@@ -59,8 +59,11 @@ export declare abstract class Program<Args = any, Events extends ProgramEvents =
|
|
|
59
59
|
* Wait for another peer to be 'ready' to talk with you for this particular program
|
|
60
60
|
* @param other
|
|
61
61
|
*/
|
|
62
|
-
waitFor(
|
|
63
|
-
|
|
62
|
+
waitFor(other: PublicSignKey | Libp2pPeerId | (PublicSignKey | Libp2pPeerId)[], options?: {
|
|
63
|
+
signal?: AbortSignal;
|
|
64
|
+
timeout?: number;
|
|
65
|
+
}): Promise<void>;
|
|
66
|
+
getReady(): Promise<Map<string, PublicSignKey>>;
|
|
64
67
|
get allPrograms(): Program[];
|
|
65
68
|
get programs(): Program[];
|
|
66
69
|
clone(): this;
|
|
@@ -70,7 +73,7 @@ export declare abstract class Program<Args = any, Events extends ProgramEvents =
|
|
|
70
73
|
static load<P extends Program<any>>(address: Address, store: Blocks, options?: {
|
|
71
74
|
timeout?: number;
|
|
72
75
|
}): Promise<P | undefined>;
|
|
73
|
-
static open<T extends Program<
|
|
76
|
+
static open<T extends Program<ExtractArgs<T>>>(this: Constructor<T>, address: string, node: ProgramClient, options?: ProgramInitializationOptions<ExtractArgs<T>, T>): Promise<T>;
|
|
74
77
|
}
|
|
75
78
|
export declare const getProgramFromVariants: <T extends Program<any, ProgramEvents>>() => Constructor<T>[];
|
|
76
79
|
export declare const getProgramFromVariant: <T extends Program<any, ProgramEvents>>(variant: string) => Constructor<T> | undefined;
|
package/lib/esm/program.js
CHANGED
|
@@ -9,14 +9,22 @@ import { PublicSignKey, getPublicKeyFromPeerId } from "@peerbit/crypto";
|
|
|
9
9
|
import { getSchema, variant } from "@dao-xyz/borsh";
|
|
10
10
|
import { getValuesWithType } from "./utils.js";
|
|
11
11
|
import { serialize, deserialize } from "@dao-xyz/borsh";
|
|
12
|
-
import { CustomEvent,
|
|
13
|
-
import {
|
|
14
|
-
import { Handler } from "./handler.js";
|
|
12
|
+
import { CustomEvent, TypedEventEmitter } from "@libp2p/interface";
|
|
13
|
+
import { Handler, addParent } from "./handler.js";
|
|
15
14
|
const intersection = (a, b) => {
|
|
16
|
-
const newSet = new
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
15
|
+
const newSet = new Map();
|
|
16
|
+
if (Array.isArray(b)) {
|
|
17
|
+
for (const el of b) {
|
|
18
|
+
if (!a || a.has(el.hashcode())) {
|
|
19
|
+
newSet.set(el.hashcode(), el);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
for (const [key, el] of b) {
|
|
25
|
+
if (!a || a.has(key)) {
|
|
26
|
+
newSet.set(key, el);
|
|
27
|
+
}
|
|
20
28
|
}
|
|
21
29
|
}
|
|
22
30
|
return newSet;
|
|
@@ -64,14 +72,8 @@ let Program = Program_1 = class Program {
|
|
|
64
72
|
set address(address) {
|
|
65
73
|
this._address = address;
|
|
66
74
|
}
|
|
67
|
-
addParent(program) {
|
|
68
|
-
(this.parents || (this.parents = [])).push(program);
|
|
69
|
-
if (program) {
|
|
70
|
-
(program.children || (program.children = [])).push(this);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
75
|
get events() {
|
|
74
|
-
return this._events || (this._events = new
|
|
76
|
+
return this._events || (this._events = new TypedEventEmitter());
|
|
75
77
|
}
|
|
76
78
|
get closed() {
|
|
77
79
|
if (this._closed == null) {
|
|
@@ -100,11 +102,11 @@ let Program = Program_1 = class Program {
|
|
|
100
102
|
throw new Error("Subprogram has same address as some parent program. This is not currently supported");
|
|
101
103
|
}
|
|
102
104
|
if (!this.closed) {
|
|
103
|
-
|
|
105
|
+
addParent(this, options?.parent);
|
|
104
106
|
return;
|
|
105
107
|
}
|
|
106
108
|
else {
|
|
107
|
-
|
|
109
|
+
addParent(this, options?.parent);
|
|
108
110
|
}
|
|
109
111
|
this._eventOptions = options;
|
|
110
112
|
this.node = node;
|
|
@@ -137,7 +139,7 @@ let Program = Program_1 = class Program {
|
|
|
137
139
|
.flat();
|
|
138
140
|
// if subscribing to all topics, emit "join" event
|
|
139
141
|
for (const topic of allTopics) {
|
|
140
|
-
if (!(await this.node.services.pubsub.getSubscribers(topic))?.
|
|
142
|
+
if (!(await this.node.services.pubsub.getSubscribers(topic))?.find((x) => s.from.equals(x))) {
|
|
141
143
|
return;
|
|
142
144
|
}
|
|
143
145
|
}
|
|
@@ -150,7 +152,7 @@ let Program = Program_1 = class Program {
|
|
|
150
152
|
.flat();
|
|
151
153
|
// if subscribing not subscribing to any topics, emit "leave" event
|
|
152
154
|
for (const topic of allTopics) {
|
|
153
|
-
if ((await this.node.services.pubsub.getSubscribers(topic))?.
|
|
155
|
+
if ((await this.node.services.pubsub.getSubscribers(topic))?.find((x) => s.from.equals(x))) {
|
|
154
156
|
return;
|
|
155
157
|
}
|
|
156
158
|
}
|
|
@@ -243,14 +245,48 @@ let Program = Program_1 = class Program {
|
|
|
243
245
|
* Wait for another peer to be 'ready' to talk with you for this particular program
|
|
244
246
|
* @param other
|
|
245
247
|
*/
|
|
246
|
-
async waitFor(
|
|
247
|
-
const
|
|
248
|
+
async waitFor(other, options) {
|
|
249
|
+
const ids = Array.isArray(other) ? other : [other];
|
|
250
|
+
const expectedHashes = new Set(ids.map((x) => x instanceof PublicSignKey
|
|
248
251
|
? x.hashcode()
|
|
249
252
|
: getPublicKeyFromPeerId(x).hashcode()));
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
253
|
+
// make sure nodes are reachable
|
|
254
|
+
await Promise.all(ids.map((x) => this.node.services.pubsub.waitFor(x, { signal: options?.signal })));
|
|
255
|
+
// wait for subscribing to topics
|
|
256
|
+
return new Promise((resolve, reject) => {
|
|
257
|
+
const timeout = setTimeout(() => {
|
|
258
|
+
this.node.services.pubsub.removeEventListener("subscribe", listener);
|
|
259
|
+
options?.signal?.removeEventListener("abort", abortListener);
|
|
260
|
+
reject(new Error("Timeout"));
|
|
261
|
+
}, options?.timeout || 10 * 1000);
|
|
262
|
+
const abortListener = (e) => {
|
|
263
|
+
this.node.services.pubsub.removeEventListener("subscribe", listener);
|
|
264
|
+
clearTimeout(timeout);
|
|
265
|
+
reject(e);
|
|
266
|
+
};
|
|
267
|
+
options?.signal?.addEventListener("abort", abortListener);
|
|
268
|
+
const checkReady = async () => {
|
|
269
|
+
let ready = true;
|
|
270
|
+
const allReadyHashes = await this.getReady();
|
|
271
|
+
for (const hash of expectedHashes) {
|
|
272
|
+
if (!allReadyHashes.has(hash)) {
|
|
273
|
+
ready = false;
|
|
274
|
+
break;
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
if (ready) {
|
|
278
|
+
this.node.services.pubsub.removeEventListener("subscribe", listener);
|
|
279
|
+
clearTimeout(timeout);
|
|
280
|
+
options?.signal?.removeEventListener("abort", abortListener);
|
|
281
|
+
resolve();
|
|
282
|
+
}
|
|
283
|
+
};
|
|
284
|
+
const listener = () => {
|
|
285
|
+
return checkReady();
|
|
286
|
+
};
|
|
287
|
+
this.node.services.pubsub.addEventListener("subscribe", listener);
|
|
288
|
+
checkReady();
|
|
289
|
+
});
|
|
254
290
|
}
|
|
255
291
|
async getReady() {
|
|
256
292
|
// all peers that subscribe to all topics
|
|
@@ -261,14 +297,14 @@ let Program = Program_1 = class Program {
|
|
|
261
297
|
for (const topic of topics) {
|
|
262
298
|
const subscribers = await this.node.services.pubsub.getSubscribers(topic);
|
|
263
299
|
if (!subscribers) {
|
|
264
|
-
|
|
300
|
+
continue;
|
|
265
301
|
}
|
|
266
|
-
ready = intersection(ready, subscribers
|
|
302
|
+
ready = intersection(ready, subscribers);
|
|
267
303
|
}
|
|
268
304
|
}
|
|
269
305
|
}
|
|
270
306
|
if (ready == null) {
|
|
271
|
-
|
|
307
|
+
return new Map();
|
|
272
308
|
}
|
|
273
309
|
return ready;
|
|
274
310
|
}
|
|
@@ -322,7 +358,7 @@ let Program = Program_1 = class Program {
|
|
|
322
358
|
if (!p) {
|
|
323
359
|
throw new Error("Failed to load program");
|
|
324
360
|
}
|
|
325
|
-
await node.open(p, options);
|
|
361
|
+
await node.open(p, options); // TODO fix types
|
|
326
362
|
return p;
|
|
327
363
|
}
|
|
328
364
|
};
|
package/lib/esm/program.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"program.js","sourceRoot":"","sources":["../../src/program.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"program.js","sourceRoot":"","sources":["../../src/program.ts"],"names":[],"mappings":"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"}
|
package/lib/esm/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAGN,SAAS,EAET,MAAM,gBAAgB,CAAC;AAExB,MAAM,oBAAoB,GAAG,GAAG,CAAC;AACjC,MAAM,wCAAwC,GAAG,GAAG,CAAC;AACrD,MAAM,mCAAmC,GACxC,wCAAwC,GAAG,oBAAoB,CAAC;AACjE,MAAM,eAAe,GAAG,CACvB,IAAsC,EACtC,MAAc,EACiC,EAAE,CACjD,IAAI,CAAC,SAAS,CAAC,mCAAmC,GAAG,MAAM,CAAC,CAAC;AAE9D,MAAM,kBAAkB,GAAG,CAC1B,IAAsC,EACvB,EAAE;IACjB,IAAI,IAAI,GAA2B,SAAS,CAAC;IAC7C,MAAM,GAAG,GAAiB,EAAE,CAAC;IAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAGN,SAAS,EAET,MAAM,gBAAgB,CAAC;AAExB,MAAM,oBAAoB,GAAG,GAAG,CAAC;AACjC,MAAM,wCAAwC,GAAG,GAAG,CAAC;AACrD,MAAM,mCAAmC,GACxC,wCAAwC,GAAG,oBAAoB,CAAC;AACjE,MAAM,eAAe,GAAG,CACvB,IAAsC,EACtC,MAAc,EACiC,EAAE,CACjD,IAAI,CAAC,SAAS,CAAC,mCAAmC,GAAG,MAAM,CAAC,CAAC;AAE9D,MAAM,kBAAkB,GAAG,CAC1B,IAAsC,EACvB,EAAE;IACjB,IAAI,IAAI,GAA2B,SAAS,CAAC;IAC7C,MAAM,GAAG,GAAiB,EAAE,CAAC;IAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,EAAE,CAAC;YACX,IAAI,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;gBAC/C,OAAO,GAAG,CAAC;YACZ,CAAC;QACF,CAAC;aAAM,CAAC;YACP,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACf,IAAI,GAAG,IAAI,CAAC;QACb,CAAC;IACF,CAAC;IACD,OAAO,GAAG,CAAC;AACZ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAChC,IAAS,EACT,IAAsC,EACtC,UAAiD,EAC3C,EAAE;IACR,MAAM,OAAO,GAAG,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACrD,MAAM,MAAM,GAAQ,EAAE,CAAC;IACvB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC9B,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YACnC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC9B,IAAI,CAAC,KAAK,EAAE,CAAC;gBACZ,SAAS;YACV,CAAC;YACD,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE;gBACrB,IAAI,OAAO,IAAI,OAAO,YAAY,IAAI,EAAE,CAAC;oBACxC,MAAM,CAAC,IAAI,CAAC,OAAY,CAAC,CAAC;gBAC3B,CAAC;qBAAM,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;oBACxC,IAAI,UAAU,IAAI,OAAO,YAAY,UAAU,EAAE,CAAC;wBACjD,OAAO;oBACR,CAAC;oBACD,MAAM,YAAY,GAAG,iBAAiB,CAAC,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;oBAClE,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;wBAC1B,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBAChB,CAAC,CAAC,CAAC;gBACJ,CAAC;YACF,CAAC,CAAC;YACF,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1B,KAAK,MAAM,OAAO,IAAI,KAAK,EAAE,CAAC;oBAC7B,CAAC,CAAC,OAAO,CAAC,CAAC;gBACZ,CAAC;YACF,CAAC;iBAAM,CAAC;gBACP,CAAC,CAAC,KAAK,CAAC,CAAC;YACV,CAAC;QACF,CAAC;IACF,CAAC;IACD,OAAO,MAAM,CAAC;AACf,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@peerbit/program",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.1",
|
|
4
4
|
"description": "Program interface",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -30,10 +30,11 @@
|
|
|
30
30
|
"license": "MIT",
|
|
31
31
|
"dependencies": {
|
|
32
32
|
"@dao-xyz/borsh": "^5.1.8",
|
|
33
|
-
"@peerbit/
|
|
34
|
-
"@peerbit/
|
|
35
|
-
"@peerbit/
|
|
36
|
-
"@peerbit/
|
|
33
|
+
"@peerbit/any-store": "^1.0.1",
|
|
34
|
+
"@peerbit/blocks-interface": "^1.2.0",
|
|
35
|
+
"@peerbit/crypto": "2.0.0",
|
|
36
|
+
"@peerbit/keychain": "^1.0.0",
|
|
37
|
+
"@peerbit/pubsub-interface": "^2.0.0"
|
|
37
38
|
},
|
|
38
|
-
"gitHead": "
|
|
39
|
+
"gitHead": "c48cb37d237a25b0bcc849482b43f6941d53e3d5"
|
|
39
40
|
}
|
package/src/client.ts
CHANGED
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
import type { PeerId as Libp2pPeerId } from "@libp2p/interface/peer-id";
|
|
2
2
|
import { Blocks } from "@peerbit/blocks-interface";
|
|
3
3
|
import { PubSub } from "@peerbit/pubsub-interface";
|
|
4
|
-
import { Ed25519PublicKey, Identity
|
|
5
|
-
import
|
|
4
|
+
import { Ed25519PublicKey, Identity } from "@peerbit/crypto";
|
|
5
|
+
import { Keychain } from "@peerbit/keychain";
|
|
6
|
+
import type { AnyStore } from "@peerbit/any-store";
|
|
6
7
|
import { Multiaddr } from "@multiformats/multiaddr";
|
|
7
8
|
import { Address } from "./address.js";
|
|
8
9
|
import { CanOpen, Manageable, OpenOptions } from "./handler.js";
|
|
9
10
|
|
|
10
|
-
|
|
11
|
+
type ExtractArgs<T> = T extends CanOpen<infer Args> ? Args : never;
|
|
12
|
+
|
|
13
|
+
export interface Client<T extends Manageable<ExtractArgs<T>>> {
|
|
11
14
|
peerId: Libp2pPeerId;
|
|
12
15
|
identity: Identity<Ed25519PublicKey>;
|
|
13
16
|
getMultiaddrs: () => Multiaddr[];
|
|
@@ -15,13 +18,13 @@ export interface Client<T extends Manageable<any>> {
|
|
|
15
18
|
services: {
|
|
16
19
|
pubsub: PubSub;
|
|
17
20
|
blocks: Blocks;
|
|
21
|
+
keychain: Keychain;
|
|
18
22
|
};
|
|
19
|
-
memory:
|
|
20
|
-
keychain: Keychain;
|
|
23
|
+
memory: AnyStore;
|
|
21
24
|
start(): Promise<void>;
|
|
22
25
|
stop(): Promise<void>;
|
|
23
|
-
open<S extends T & CanOpen<
|
|
26
|
+
open<S extends T & CanOpen<ExtractArgs<S>>>(
|
|
24
27
|
program: S | Address,
|
|
25
|
-
options?: OpenOptions<
|
|
28
|
+
options?: OpenOptions<ExtractArgs<S>, S>
|
|
26
29
|
): Promise<S>;
|
|
27
30
|
}
|
package/src/handler.ts
CHANGED
|
@@ -17,8 +17,6 @@ export type EventOptions = {
|
|
|
17
17
|
export type OpenOptions<Args, T extends Manageable<Args>> = {
|
|
18
18
|
timeout?: number;
|
|
19
19
|
existing?: ProgramMergeStrategy;
|
|
20
|
-
/*
|
|
21
|
-
reset?: boolean; */
|
|
22
20
|
} & ProgramInitializationOptions<Args, T>;
|
|
23
21
|
|
|
24
22
|
export type WithArgs<Args> = { args?: Args };
|
|
@@ -60,6 +58,13 @@ export type ProgramInitializationOptions<Args, T extends Manageable<Args>> = {
|
|
|
60
58
|
WithParent<T> &
|
|
61
59
|
EventOptions;
|
|
62
60
|
|
|
61
|
+
export const addParent = (child: Manageable<any>, parent?: Manageable<any>) => {
|
|
62
|
+
(child.parents || (child.parents = [])).push(parent);
|
|
63
|
+
if (parent) {
|
|
64
|
+
(parent.children || (parent.children = [])).push(child);
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
|
|
63
68
|
export class Handler<T extends Manageable<any>> {
|
|
64
69
|
items: Map<string, T>;
|
|
65
70
|
private _openQueue: Map<string, PQueue>;
|
|
@@ -103,30 +108,6 @@ export class Handler<T extends Manageable<any>> {
|
|
|
103
108
|
// TODO remove item from this._openQueue?
|
|
104
109
|
}
|
|
105
110
|
|
|
106
|
-
private async _onProgramOpen(
|
|
107
|
-
program: T,
|
|
108
|
-
mergeSrategy?: ProgramMergeStrategy
|
|
109
|
-
) {
|
|
110
|
-
const programAddress = program.address?.toString();
|
|
111
|
-
if (!programAddress) {
|
|
112
|
-
throw new Error("Missing program address");
|
|
113
|
-
}
|
|
114
|
-
if (this.items.has(programAddress)) {
|
|
115
|
-
// second condition only makes this throw error if we are to add a new instance with the same address
|
|
116
|
-
const existing = await this.checkProcessExisting(
|
|
117
|
-
programAddress,
|
|
118
|
-
program,
|
|
119
|
-
mergeSrategy
|
|
120
|
-
);
|
|
121
|
-
if (!existing) {
|
|
122
|
-
throw new Error("Unexpected");
|
|
123
|
-
}
|
|
124
|
-
this.items.set(programAddress, program);
|
|
125
|
-
} else {
|
|
126
|
-
this.items.set(programAddress, program);
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
|
|
130
111
|
private async checkProcessExisting<S extends T>(
|
|
131
112
|
address: Address,
|
|
132
113
|
toOpen: Manageable<any>,
|
|
@@ -196,6 +177,7 @@ export class Handler<T extends Manageable<any>> {
|
|
|
196
177
|
if (!program.closed) {
|
|
197
178
|
const existing = this.items.get(program.address);
|
|
198
179
|
if (existing === program) {
|
|
180
|
+
addParent(existing, options.parent);
|
|
199
181
|
return program;
|
|
200
182
|
} else if (existing) {
|
|
201
183
|
// we got existing, but it is not the same instance
|
|
@@ -212,6 +194,7 @@ export class Handler<T extends Manageable<any>> {
|
|
|
212
194
|
// assume new instance was not added to monitored items, just add it
|
|
213
195
|
// and return it as we would opened it normally
|
|
214
196
|
this.items.set(program.address, program);
|
|
197
|
+
addParent(program, options.parent);
|
|
215
198
|
return program;
|
|
216
199
|
}
|
|
217
200
|
}
|
|
@@ -234,13 +217,9 @@ export class Handler<T extends Manageable<any>> {
|
|
|
234
217
|
}
|
|
235
218
|
|
|
236
219
|
await program.beforeOpen(this.properties.client, {
|
|
237
|
-
onBeforeOpen:
|
|
238
|
-
if (
|
|
239
|
-
this.
|
|
240
|
-
p.parents.length === 1 &&
|
|
241
|
-
!p.parents[0]
|
|
242
|
-
) {
|
|
243
|
-
return this._onProgramOpen(p as T, options?.existing); // TODO types
|
|
220
|
+
onBeforeOpen: (p) => {
|
|
221
|
+
if (this.properties.shouldMonitor(program) && !options.parent) {
|
|
222
|
+
this.items.set(address, program);
|
|
244
223
|
}
|
|
245
224
|
},
|
|
246
225
|
onClose: (p) => {
|
|
@@ -257,7 +236,6 @@ export class Handler<T extends Manageable<any>> {
|
|
|
257
236
|
// If the program opens more programs
|
|
258
237
|
// reset: options.reset,
|
|
259
238
|
});
|
|
260
|
-
|
|
261
239
|
await program.open(options.args);
|
|
262
240
|
await program.afterOpen();
|
|
263
241
|
return program as S;
|
package/src/program.ts
CHANGED
|
@@ -2,9 +2,12 @@ import { PublicSignKey, getPublicKeyFromPeerId } from "@peerbit/crypto";
|
|
|
2
2
|
import { Constructor, getSchema, variant } from "@dao-xyz/borsh";
|
|
3
3
|
import { getValuesWithType } from "./utils.js";
|
|
4
4
|
import { serialize, deserialize } from "@dao-xyz/borsh";
|
|
5
|
-
import {
|
|
5
|
+
import {
|
|
6
|
+
TypedEventTarget,
|
|
7
|
+
CustomEvent,
|
|
8
|
+
TypedEventEmitter
|
|
9
|
+
} from "@libp2p/interface";
|
|
6
10
|
import { Client } from "./client.js";
|
|
7
|
-
import { waitForAsync } from "@peerbit/time";
|
|
8
11
|
import { Blocks } from "@peerbit/blocks-interface";
|
|
9
12
|
import { PeerId as Libp2pPeerId } from "@libp2p/interface/peer-id";
|
|
10
13
|
import {
|
|
@@ -16,17 +19,27 @@ import {
|
|
|
16
19
|
EventOptions,
|
|
17
20
|
Handler,
|
|
18
21
|
Manageable,
|
|
19
|
-
ProgramInitializationOptions
|
|
22
|
+
ProgramInitializationOptions,
|
|
23
|
+
addParent
|
|
20
24
|
} from "./handler.js";
|
|
21
25
|
|
|
22
26
|
const intersection = (
|
|
23
|
-
a:
|
|
24
|
-
b:
|
|
27
|
+
a: Map<string, PublicSignKey> | undefined,
|
|
28
|
+
b: Map<string, PublicSignKey> | PublicSignKey[]
|
|
25
29
|
) => {
|
|
26
|
-
const newSet = new
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
+
const newSet = new Map<string, PublicSignKey>();
|
|
31
|
+
|
|
32
|
+
if (Array.isArray(b)) {
|
|
33
|
+
for (const el of b) {
|
|
34
|
+
if (!a || a.has(el.hashcode())) {
|
|
35
|
+
newSet.set(el.hashcode(), el);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
} else {
|
|
39
|
+
for (const [key, el] of b) {
|
|
40
|
+
if (!a || a.has(key)) {
|
|
41
|
+
newSet.set(key, el);
|
|
42
|
+
}
|
|
30
43
|
}
|
|
31
44
|
}
|
|
32
45
|
return newSet;
|
|
@@ -77,6 +90,8 @@ class ProgramHandler extends Handler<Program> {
|
|
|
77
90
|
}
|
|
78
91
|
export { ProgramHandler };
|
|
79
92
|
|
|
93
|
+
type ExtractArgs<T> = T extends Program<infer Args> ? Args : never;
|
|
94
|
+
|
|
80
95
|
@variant(0)
|
|
81
96
|
export abstract class Program<
|
|
82
97
|
Args = any,
|
|
@@ -86,7 +101,7 @@ export abstract class Program<
|
|
|
86
101
|
private _node: ProgramClient;
|
|
87
102
|
private _allPrograms: Program[] | undefined;
|
|
88
103
|
|
|
89
|
-
private _events:
|
|
104
|
+
private _events: TypedEventTarget<ProgramEvents>;
|
|
90
105
|
private _closed: boolean;
|
|
91
106
|
|
|
92
107
|
parents: (Program<any> | undefined)[];
|
|
@@ -107,15 +122,8 @@ export abstract class Program<
|
|
|
107
122
|
this._address = address;
|
|
108
123
|
}
|
|
109
124
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
if (program) {
|
|
113
|
-
(program.children || (program.children = [])).push(this);
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
get events(): EventEmitter<Events> {
|
|
118
|
-
return this._events || (this._events = new EventEmitter());
|
|
125
|
+
get events(): TypedEventTarget<Events> {
|
|
126
|
+
return this._events || (this._events = new TypedEventEmitter());
|
|
119
127
|
}
|
|
120
128
|
|
|
121
129
|
get closed(): boolean {
|
|
@@ -158,11 +166,12 @@ export abstract class Program<
|
|
|
158
166
|
}
|
|
159
167
|
|
|
160
168
|
if (!this.closed) {
|
|
161
|
-
|
|
169
|
+
addParent(this, options?.parent);
|
|
162
170
|
return;
|
|
163
171
|
} else {
|
|
164
|
-
|
|
172
|
+
addParent(this, options?.parent);
|
|
165
173
|
}
|
|
174
|
+
|
|
166
175
|
this._eventOptions = options;
|
|
167
176
|
this.node = node;
|
|
168
177
|
const nexts = this.programs;
|
|
@@ -211,8 +220,8 @@ export abstract class Program<
|
|
|
211
220
|
// if subscribing to all topics, emit "join" event
|
|
212
221
|
for (const topic of allTopics) {
|
|
213
222
|
if (
|
|
214
|
-
!(await this.node.services.pubsub.getSubscribers(topic))?.
|
|
215
|
-
s.from.
|
|
223
|
+
!(await this.node.services.pubsub.getSubscribers(topic))?.find((x) =>
|
|
224
|
+
s.from.equals(x)
|
|
216
225
|
)
|
|
217
226
|
) {
|
|
218
227
|
return;
|
|
@@ -230,8 +239,8 @@ export abstract class Program<
|
|
|
230
239
|
// if subscribing not subscribing to any topics, emit "leave" event
|
|
231
240
|
for (const topic of allTopics) {
|
|
232
241
|
if (
|
|
233
|
-
(await this.node.services.pubsub.getSubscribers(topic))?.
|
|
234
|
-
s.from.
|
|
242
|
+
(await this.node.services.pubsub.getSubscribers(topic))?.find((x) =>
|
|
243
|
+
s.from.equals(x)
|
|
235
244
|
)
|
|
236
245
|
) {
|
|
237
246
|
return;
|
|
@@ -345,28 +354,72 @@ export abstract class Program<
|
|
|
345
354
|
* Wait for another peer to be 'ready' to talk with you for this particular program
|
|
346
355
|
* @param other
|
|
347
356
|
*/
|
|
348
|
-
async waitFor(
|
|
357
|
+
async waitFor(
|
|
358
|
+
other: PublicSignKey | Libp2pPeerId | (PublicSignKey | Libp2pPeerId)[],
|
|
359
|
+
options?: { signal?: AbortSignal; timeout?: number }
|
|
360
|
+
): Promise<void> {
|
|
361
|
+
const ids = Array.isArray(other) ? other : [other];
|
|
349
362
|
const expectedHashes = new Set(
|
|
350
|
-
|
|
363
|
+
ids.map((x) =>
|
|
351
364
|
x instanceof PublicSignKey
|
|
352
365
|
? x.hashcode()
|
|
353
366
|
: getPublicKeyFromPeerId(x).hashcode()
|
|
354
367
|
)
|
|
355
368
|
);
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
369
|
+
|
|
370
|
+
// make sure nodes are reachable
|
|
371
|
+
await Promise.all(
|
|
372
|
+
ids.map((x) =>
|
|
373
|
+
this.node.services.pubsub.waitFor(x, { signal: options?.signal })
|
|
374
|
+
)
|
|
375
|
+
);
|
|
376
|
+
|
|
377
|
+
// wait for subscribing to topics
|
|
378
|
+
return new Promise<void>((resolve, reject) => {
|
|
379
|
+
const timeout = setTimeout(
|
|
380
|
+
() => {
|
|
381
|
+
this.node.services.pubsub.removeEventListener("subscribe", listener);
|
|
382
|
+
options?.signal?.removeEventListener("abort", abortListener);
|
|
383
|
+
reject(new Error("Timeout"));
|
|
384
|
+
},
|
|
385
|
+
options?.timeout || 10 * 1000
|
|
386
|
+
);
|
|
387
|
+
|
|
388
|
+
const abortListener = (e) => {
|
|
389
|
+
this.node.services.pubsub.removeEventListener("subscribe", listener);
|
|
390
|
+
clearTimeout(timeout);
|
|
391
|
+
reject(e);
|
|
392
|
+
};
|
|
393
|
+
|
|
394
|
+
options?.signal?.addEventListener("abort", abortListener);
|
|
395
|
+
|
|
396
|
+
const checkReady = async () => {
|
|
397
|
+
let ready = true;
|
|
398
|
+
const allReadyHashes = await this.getReady();
|
|
399
|
+
for (const hash of expectedHashes) {
|
|
400
|
+
if (!allReadyHashes.has(hash)) {
|
|
401
|
+
ready = false;
|
|
402
|
+
break;
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
if (ready) {
|
|
406
|
+
this.node.services.pubsub.removeEventListener("subscribe", listener);
|
|
407
|
+
clearTimeout(timeout);
|
|
408
|
+
options?.signal?.removeEventListener("abort", abortListener);
|
|
409
|
+
resolve();
|
|
410
|
+
}
|
|
411
|
+
};
|
|
412
|
+
const listener = () => {
|
|
413
|
+
return checkReady();
|
|
414
|
+
};
|
|
415
|
+
this.node.services.pubsub.addEventListener("subscribe", listener);
|
|
416
|
+
checkReady();
|
|
417
|
+
});
|
|
365
418
|
}
|
|
366
419
|
|
|
367
|
-
async getReady(): Promise<
|
|
420
|
+
async getReady(): Promise<Map<string, PublicSignKey>> {
|
|
368
421
|
// all peers that subscribe to all topics
|
|
369
|
-
let ready:
|
|
422
|
+
let ready: Map<string, PublicSignKey> | undefined = undefined; // the interesection of all ready
|
|
370
423
|
for (const program of this.allPrograms) {
|
|
371
424
|
if (program.getTopics) {
|
|
372
425
|
const topics = program.getTopics();
|
|
@@ -374,16 +427,14 @@ export abstract class Program<
|
|
|
374
427
|
const subscribers =
|
|
375
428
|
await this.node.services.pubsub.getSubscribers(topic);
|
|
376
429
|
if (!subscribers) {
|
|
377
|
-
|
|
378
|
-
"client is not subscriber to topic data, do not have any info about peer readiness"
|
|
379
|
-
);
|
|
430
|
+
continue;
|
|
380
431
|
}
|
|
381
|
-
ready = intersection(ready, subscribers
|
|
432
|
+
ready = intersection(ready, subscribers);
|
|
382
433
|
}
|
|
383
434
|
}
|
|
384
435
|
}
|
|
385
436
|
if (ready == null) {
|
|
386
|
-
|
|
437
|
+
return new Map();
|
|
387
438
|
}
|
|
388
439
|
return ready;
|
|
389
440
|
}
|
|
@@ -452,18 +503,18 @@ export abstract class Program<
|
|
|
452
503
|
return der as P;
|
|
453
504
|
}
|
|
454
505
|
|
|
455
|
-
static async open<T extends Program<
|
|
506
|
+
static async open<T extends Program<ExtractArgs<T>>>(
|
|
456
507
|
this: Constructor<T>,
|
|
457
|
-
address:
|
|
508
|
+
address: string,
|
|
458
509
|
node: ProgramClient,
|
|
459
|
-
options?: ProgramInitializationOptions<
|
|
510
|
+
options?: ProgramInitializationOptions<ExtractArgs<T>, T>
|
|
460
511
|
): Promise<T> {
|
|
461
512
|
const p = await Program.load<T>(address, node.services.blocks);
|
|
462
513
|
|
|
463
514
|
if (!p) {
|
|
464
515
|
throw new Error("Failed to load program");
|
|
465
516
|
}
|
|
466
|
-
await node.open(p, options);
|
|
517
|
+
await node.open<T>(p, options as any); // TODO fix types
|
|
467
518
|
return p as T;
|
|
468
519
|
}
|
|
469
520
|
}
|