@welshman/net 0.0.49 → 0.1.0
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/build/src/adapter.d.ts +46 -0
- package/build/src/adapter.js +91 -0
- package/build/src/adapter.js.map +1 -0
- package/build/src/auth.d.ts +57 -0
- package/build/src/auth.js +137 -0
- package/build/src/auth.js.map +1 -0
- package/build/src/context.d.ts +10 -0
- package/build/src/context.js +10 -0
- package/build/src/context.js.map +1 -0
- package/build/src/diff.d.ts +55 -0
- package/build/src/diff.js +148 -0
- package/build/src/diff.js.map +1 -0
- package/build/src/index.d.ts +12 -25
- package/build/src/index.js +12 -19
- package/build/src/index.js.map +1 -1
- package/build/src/message.d.ts +59 -0
- package/build/src/message.js +35 -0
- package/build/src/message.js.map +1 -0
- package/build/src/{Negentropy.js → negentropy.js} +1 -1
- package/build/src/{Negentropy.js.map → negentropy.js.map} +1 -1
- package/build/src/policy.d.ts +32 -0
- package/build/src/policy.js +202 -0
- package/build/src/policy.js.map +1 -0
- package/build/src/pool.d.ts +20 -0
- package/build/src/pool.js +67 -0
- package/build/src/pool.js.map +1 -0
- package/build/src/publish.d.ts +60 -0
- package/build/src/publish.js +120 -0
- package/build/src/publish.js.map +1 -0
- package/build/src/request.d.ts +79 -0
- package/build/src/request.js +191 -0
- package/build/src/request.js.map +1 -0
- package/build/src/socket.d.ts +41 -0
- package/build/src/socket.js +108 -0
- package/build/src/socket.js.map +1 -0
- package/build/src/{Tracker.js → tracker.js} +1 -1
- package/build/src/{Tracker.js.map → tracker.js.map} +1 -1
- package/build/src/util.d.ts +3 -0
- package/build/src/util.js +2 -0
- package/build/src/util.js.map +1 -0
- package/build/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -7
- package/build/src/Connection.d.ts +0 -27
- package/build/src/Connection.js +0 -58
- package/build/src/Connection.js.map +0 -1
- package/build/src/ConnectionAuth.d.ts +0 -28
- package/build/src/ConnectionAuth.js +0 -99
- package/build/src/ConnectionAuth.js.map +0 -1
- package/build/src/ConnectionEvent.d.ts +0 -11
- package/build/src/ConnectionEvent.js +0 -13
- package/build/src/ConnectionEvent.js.map +0 -1
- package/build/src/ConnectionSender.d.ts +0 -9
- package/build/src/ConnectionSender.js +0 -51
- package/build/src/ConnectionSender.js.map +0 -1
- package/build/src/ConnectionState.d.ts +0 -17
- package/build/src/ConnectionState.js +0 -80
- package/build/src/ConnectionState.js.map +0 -1
- package/build/src/ConnectionStats.d.ts +0 -26
- package/build/src/ConnectionStats.js +0 -83
- package/build/src/ConnectionStats.js.map +0 -1
- package/build/src/Context.d.ts +0 -33
- package/build/src/Context.js +0 -40
- package/build/src/Context.js.map +0 -1
- package/build/src/Executor.d.ts +0 -51
- package/build/src/Executor.js +0 -106
- package/build/src/Executor.js.map +0 -1
- package/build/src/Pool.d.ts +0 -10
- package/build/src/Pool.js +0 -35
- package/build/src/Pool.js.map +0 -1
- package/build/src/Publish.d.ts +0 -42
- package/build/src/Publish.js +0 -68
- package/build/src/Publish.js.map +0 -1
- package/build/src/Socket.d.ts +0 -26
- package/build/src/Socket.js +0 -113
- package/build/src/Socket.js.map +0 -1
- package/build/src/Subscribe.d.ts +0 -60
- package/build/src/Subscribe.js +0 -293
- package/build/src/Subscribe.js.map +0 -1
- package/build/src/Sync.d.ts +0 -42
- package/build/src/Sync.js +0 -125
- package/build/src/Sync.js.map +0 -1
- package/build/src/target/Echo.d.ts +0 -7
- package/build/src/target/Echo.js +0 -13
- package/build/src/target/Echo.js.map +0 -1
- package/build/src/target/Local.d.ts +0 -11
- package/build/src/target/Local.js +0 -25
- package/build/src/target/Local.js.map +0 -1
- package/build/src/target/Multi.d.ts +0 -10
- package/build/src/target/Multi.js +0 -22
- package/build/src/target/Multi.js.map +0 -1
- package/build/src/target/Relay.d.ts +0 -11
- package/build/src/target/Relay.js +0 -24
- package/build/src/target/Relay.js.map +0 -1
- package/build/src/target/Relays.d.ts +0 -10
- package/build/src/target/Relays.js +0 -25
- package/build/src/target/Relays.js.map +0 -1
- /package/build/src/{Negentropy.d.ts → negentropy.d.ts} +0 -0
- /package/build/src/{Tracker.d.ts → tracker.d.ts} +0 -0
package/build/src/Publish.js
DELETED
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import { ctx, Emitter, now, randomId, defer } from "@welshman/lib";
|
|
2
|
-
import { asSignedEvent } from "@welshman/util";
|
|
3
|
-
export var PublishStatus;
|
|
4
|
-
(function (PublishStatus) {
|
|
5
|
-
PublishStatus["Pending"] = "pending";
|
|
6
|
-
PublishStatus["Success"] = "success";
|
|
7
|
-
PublishStatus["Failure"] = "failure";
|
|
8
|
-
PublishStatus["Timeout"] = "timeout";
|
|
9
|
-
PublishStatus["Aborted"] = "aborted";
|
|
10
|
-
})(PublishStatus || (PublishStatus = {}));
|
|
11
|
-
export const makePublish = (request) => {
|
|
12
|
-
const id = randomId();
|
|
13
|
-
const created_at = now();
|
|
14
|
-
const emitter = new Emitter();
|
|
15
|
-
const result = defer();
|
|
16
|
-
const status = new Map();
|
|
17
|
-
return { id, created_at, request, emitter, result, status };
|
|
18
|
-
};
|
|
19
|
-
export const publish = (request) => {
|
|
20
|
-
const pub = makePublish(request);
|
|
21
|
-
const event = asSignedEvent(request.event);
|
|
22
|
-
const executor = ctx.net.getExecutor(request.relays);
|
|
23
|
-
const abort = (reason) => {
|
|
24
|
-
for (const [url, status] of pub.status.entries()) {
|
|
25
|
-
if (status === PublishStatus.Pending) {
|
|
26
|
-
pub.emitter.emit(reason, url);
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
};
|
|
30
|
-
// Listen to updates and keep status up to date. Every time there's an update, check to
|
|
31
|
-
// see if we're done. If we are, clean everything up
|
|
32
|
-
pub.emitter.on("*", (status, url) => {
|
|
33
|
-
pub.status.set(url, status);
|
|
34
|
-
if (Array.from(pub.status.values()).every((s) => s !== PublishStatus.Pending)) {
|
|
35
|
-
clearTimeout(timeout);
|
|
36
|
-
executorSub.unsubscribe();
|
|
37
|
-
executor.target.cleanup();
|
|
38
|
-
pub.result.resolve(pub.status);
|
|
39
|
-
}
|
|
40
|
-
});
|
|
41
|
-
// Start everything off as pending. Do it asynchronously to avoid breaking caller assumptions
|
|
42
|
-
setTimeout(() => {
|
|
43
|
-
for (const relay of request.relays) {
|
|
44
|
-
pub.emitter.emit(PublishStatus.Pending, relay);
|
|
45
|
-
}
|
|
46
|
-
});
|
|
47
|
-
// Give up after a specified time
|
|
48
|
-
const timeout = setTimeout(() => abort(PublishStatus.Timeout), request.timeout || 10_000);
|
|
49
|
-
// If we have a signal, use it
|
|
50
|
-
request.signal?.addEventListener("abort", () => abort(PublishStatus.Aborted));
|
|
51
|
-
// Delegate to our executor
|
|
52
|
-
const executorSub = executor.publish(event, {
|
|
53
|
-
verb: request.verb || "EVENT",
|
|
54
|
-
onOk: (url, eventId, ok, message) => {
|
|
55
|
-
if (ok) {
|
|
56
|
-
pub.emitter.emit(PublishStatus.Success, url, message);
|
|
57
|
-
}
|
|
58
|
-
else {
|
|
59
|
-
pub.emitter.emit(PublishStatus.Failure, url, message);
|
|
60
|
-
}
|
|
61
|
-
},
|
|
62
|
-
onError: (url) => {
|
|
63
|
-
pub.emitter.emit(PublishStatus.Failure, url);
|
|
64
|
-
},
|
|
65
|
-
});
|
|
66
|
-
return pub;
|
|
67
|
-
};
|
|
68
|
-
//# sourceMappingURL=Publish.js.map
|
package/build/src/Publish.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Publish.js","sourceRoot":"","sources":["../../src/Publish.ts"],"names":[],"mappings":"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"}
|
package/build/src/Socket.d.ts
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import WebSocket from "isomorphic-ws";
|
|
2
|
-
import { Worker } from "@welshman/lib";
|
|
3
|
-
import type { Connection } from "./Connection.js";
|
|
4
|
-
export type Message = [string, ...any[]];
|
|
5
|
-
export declare enum SocketStatus {
|
|
6
|
-
New = "new",
|
|
7
|
-
Open = "open",
|
|
8
|
-
Opening = "opening",
|
|
9
|
-
Closing = "closing",
|
|
10
|
-
Closed = "closed",
|
|
11
|
-
Error = "error",
|
|
12
|
-
Invalid = "invalid"
|
|
13
|
-
}
|
|
14
|
-
export declare class Socket {
|
|
15
|
-
#private;
|
|
16
|
-
readonly cxn: Connection;
|
|
17
|
-
lastError: number;
|
|
18
|
-
status: SocketStatus;
|
|
19
|
-
worker: Worker<Message>;
|
|
20
|
-
ws?: WebSocket;
|
|
21
|
-
constructor(cxn: Connection);
|
|
22
|
-
wait: (timeout?: number) => Promise<void>;
|
|
23
|
-
open: () => Promise<void>;
|
|
24
|
-
close: () => Promise<void>;
|
|
25
|
-
send: (message: Message) => Promise<void>;
|
|
26
|
-
}
|
package/build/src/Socket.js
DELETED
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
import WebSocket from "isomorphic-ws";
|
|
2
|
-
import { Worker, sleep } from "@welshman/lib";
|
|
3
|
-
import { ConnectionEvent } from "./ConnectionEvent.js";
|
|
4
|
-
export var SocketStatus;
|
|
5
|
-
(function (SocketStatus) {
|
|
6
|
-
SocketStatus["New"] = "new";
|
|
7
|
-
SocketStatus["Open"] = "open";
|
|
8
|
-
SocketStatus["Opening"] = "opening";
|
|
9
|
-
SocketStatus["Closing"] = "closing";
|
|
10
|
-
SocketStatus["Closed"] = "closed";
|
|
11
|
-
SocketStatus["Error"] = "error";
|
|
12
|
-
SocketStatus["Invalid"] = "invalid";
|
|
13
|
-
})(SocketStatus || (SocketStatus = {}));
|
|
14
|
-
export class Socket {
|
|
15
|
-
cxn;
|
|
16
|
-
lastError = 0;
|
|
17
|
-
status = SocketStatus.New;
|
|
18
|
-
worker = new Worker();
|
|
19
|
-
ws;
|
|
20
|
-
constructor(cxn) {
|
|
21
|
-
this.cxn = cxn;
|
|
22
|
-
// Use a worker to throttle incoming data
|
|
23
|
-
this.worker.addGlobalHandler((message) => {
|
|
24
|
-
this.cxn.emit(ConnectionEvent.Receive, message);
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
|
-
wait = async (timeout = 300) => {
|
|
28
|
-
const start = Date.now();
|
|
29
|
-
while (Date.now() - timeout <= start &&
|
|
30
|
-
[SocketStatus.Opening, SocketStatus.Closing].includes(this.status)) {
|
|
31
|
-
await sleep(100);
|
|
32
|
-
}
|
|
33
|
-
};
|
|
34
|
-
open = async () => {
|
|
35
|
-
// If we're in a provisional state, wait
|
|
36
|
-
await this.wait();
|
|
37
|
-
// If the socket is closed, reset
|
|
38
|
-
if (this.status === SocketStatus.Closed) {
|
|
39
|
-
this.status = SocketStatus.New;
|
|
40
|
-
this.cxn.emit(ConnectionEvent.Reset);
|
|
41
|
-
}
|
|
42
|
-
// If we're closed due to an error retry after a delay
|
|
43
|
-
if (this.status === SocketStatus.Error && Date.now() - this.lastError > 15_000) {
|
|
44
|
-
this.status = SocketStatus.New;
|
|
45
|
-
this.cxn.emit(ConnectionEvent.Reset);
|
|
46
|
-
}
|
|
47
|
-
// If the socket is new, connect
|
|
48
|
-
if (this.status === SocketStatus.New) {
|
|
49
|
-
this.#init();
|
|
50
|
-
}
|
|
51
|
-
// Wait until we're connected (or fail to connect)
|
|
52
|
-
await this.wait();
|
|
53
|
-
};
|
|
54
|
-
close = async () => {
|
|
55
|
-
this.worker.pause();
|
|
56
|
-
this.ws?.close();
|
|
57
|
-
this.ws = undefined;
|
|
58
|
-
// Allow the socket to start closing before waiting
|
|
59
|
-
await sleep(100);
|
|
60
|
-
// Wait for the socket to fully close
|
|
61
|
-
await this.wait();
|
|
62
|
-
};
|
|
63
|
-
send = async (message) => {
|
|
64
|
-
await this.open();
|
|
65
|
-
if (!this.ws) {
|
|
66
|
-
throw new Error(`No websocket available when sending to ${this.cxn.url}`);
|
|
67
|
-
}
|
|
68
|
-
this.cxn.emit(ConnectionEvent.Send, message);
|
|
69
|
-
this.ws.send(JSON.stringify(message));
|
|
70
|
-
};
|
|
71
|
-
#init = () => {
|
|
72
|
-
try {
|
|
73
|
-
this.ws = new WebSocket(this.cxn.url);
|
|
74
|
-
this.status = SocketStatus.Opening;
|
|
75
|
-
this.ws.onopen = () => {
|
|
76
|
-
this.status = SocketStatus.Open;
|
|
77
|
-
this.cxn.emit(ConnectionEvent.Open);
|
|
78
|
-
};
|
|
79
|
-
this.ws.onerror = () => {
|
|
80
|
-
this.status = SocketStatus.Error;
|
|
81
|
-
this.lastError = Date.now();
|
|
82
|
-
this.cxn.emit(ConnectionEvent.Error);
|
|
83
|
-
};
|
|
84
|
-
this.ws.onclose = () => {
|
|
85
|
-
if (this.status !== SocketStatus.Error) {
|
|
86
|
-
this.status = SocketStatus.Closed;
|
|
87
|
-
}
|
|
88
|
-
this.cxn.emit(ConnectionEvent.Close);
|
|
89
|
-
};
|
|
90
|
-
this.ws.onmessage = (event) => {
|
|
91
|
-
const data = event.data;
|
|
92
|
-
try {
|
|
93
|
-
const message = JSON.parse(data);
|
|
94
|
-
if (Array.isArray(message)) {
|
|
95
|
-
this.worker.push(message);
|
|
96
|
-
}
|
|
97
|
-
else {
|
|
98
|
-
this.cxn.emit(ConnectionEvent.InvalidMessage, data);
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
catch (e) {
|
|
102
|
-
this.cxn.emit(ConnectionEvent.InvalidMessage, data);
|
|
103
|
-
}
|
|
104
|
-
};
|
|
105
|
-
}
|
|
106
|
-
catch (e) {
|
|
107
|
-
this.lastError = Date.now();
|
|
108
|
-
this.status = SocketStatus.Invalid;
|
|
109
|
-
this.cxn.emit(ConnectionEvent.InvalidUrl);
|
|
110
|
-
}
|
|
111
|
-
};
|
|
112
|
-
}
|
|
113
|
-
//# sourceMappingURL=Socket.js.map
|
package/build/src/Socket.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Socket.js","sourceRoot":"","sources":["../../src/Socket.ts"],"names":[],"mappings":"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"}
|
package/build/src/Subscribe.d.ts
DELETED
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import { Emitter } from "@welshman/lib";
|
|
2
|
-
import { TrustedEvent } from "@welshman/util";
|
|
3
|
-
import type { Filter } from "@welshman/util";
|
|
4
|
-
import { Tracker } from "./Tracker.js";
|
|
5
|
-
import { Executor } from "./Executor.js";
|
|
6
|
-
import { Connection } from "./Connection.js";
|
|
7
|
-
export declare enum SubscriptionEvent {
|
|
8
|
-
Eose = "eose",
|
|
9
|
-
Send = "send",
|
|
10
|
-
Close = "close",
|
|
11
|
-
Event = "event",
|
|
12
|
-
Complete = "complete",
|
|
13
|
-
Duplicate = "duplicate",
|
|
14
|
-
DeletedEvent = "deleted-event",
|
|
15
|
-
FailedFilter = "failed-filter",
|
|
16
|
-
Invalid = "invalid"
|
|
17
|
-
}
|
|
18
|
-
export type RelaysAndFilters = {
|
|
19
|
-
relays: string[];
|
|
20
|
-
filters: Filter[];
|
|
21
|
-
};
|
|
22
|
-
export type SubscribeRequest = RelaysAndFilters & {
|
|
23
|
-
delay?: number;
|
|
24
|
-
signal?: AbortSignal;
|
|
25
|
-
timeout?: number;
|
|
26
|
-
tracker?: Tracker;
|
|
27
|
-
closeOnEose?: boolean;
|
|
28
|
-
authTimeout?: number;
|
|
29
|
-
};
|
|
30
|
-
export declare class Subscription extends Emitter {
|
|
31
|
-
readonly request: SubscribeRequest;
|
|
32
|
-
id: string;
|
|
33
|
-
controller: AbortController;
|
|
34
|
-
tracker: Tracker;
|
|
35
|
-
completed: Set<unknown>;
|
|
36
|
-
executorSubs: {
|
|
37
|
-
unsubscribe: () => void;
|
|
38
|
-
}[];
|
|
39
|
-
executor: Executor;
|
|
40
|
-
constructor(request: SubscribeRequest);
|
|
41
|
-
onEvent: (url: string, event: TrustedEvent) => void;
|
|
42
|
-
onEose: (url: string) => void;
|
|
43
|
-
onClose: (connection: Connection) => void;
|
|
44
|
-
onComplete: (...args: any) => void;
|
|
45
|
-
execute: () => Promise<void>;
|
|
46
|
-
close: () => void;
|
|
47
|
-
}
|
|
48
|
-
export declare const calculateSubscriptionGroup: (sub: Subscription) => string;
|
|
49
|
-
export declare const mergeSubscriptions: (subs: Subscription[]) => Subscription;
|
|
50
|
-
export declare const optimizeSubscriptions: (subs: Subscription[]) => Subscription[];
|
|
51
|
-
export declare const executeSubscription: (sub: Subscription) => void;
|
|
52
|
-
export declare const executeSubscriptions: (subs: Subscription[]) => void;
|
|
53
|
-
export declare const executeSubscriptionBatched: (sub: Subscription) => void;
|
|
54
|
-
export type SubscribeRequestWithHandlers = SubscribeRequest & {
|
|
55
|
-
onEvent?: (event: TrustedEvent) => void;
|
|
56
|
-
onEose?: (url: string) => void;
|
|
57
|
-
onClose?: (url: string) => void;
|
|
58
|
-
onComplete?: () => void;
|
|
59
|
-
};
|
|
60
|
-
export declare const subscribe: ({ onEvent, onEose, onClose, onComplete, ...request }: SubscribeRequestWithHandlers) => Subscription;
|
package/build/src/Subscribe.js
DELETED
|
@@ -1,293 +0,0 @@
|
|
|
1
|
-
import { ctx, Emitter, max, chunk, randomId, once, groupBy, uniq } from "@welshman/lib";
|
|
2
|
-
import { LOCAL_RELAY_URL, matchFilters, normalizeRelayUrl, unionFilters, } from "@welshman/util";
|
|
3
|
-
import { Tracker } from "./Tracker.js";
|
|
4
|
-
import { ConnectionEvent } from "./ConnectionEvent.js";
|
|
5
|
-
// `subscribe` is a super function that handles batching subscriptions by merging
|
|
6
|
-
// them based on parameters (filters and subscribe opts), then splits them by relay.
|
|
7
|
-
// This results in fewer REQs being opened per connection, fewer duplicate events
|
|
8
|
-
// being downloaded, and therefore less signature validation.
|
|
9
|
-
//
|
|
10
|
-
// Behavior can be further configured using ctx.net. This can be useful for
|
|
11
|
-
// adding support for querying a local cache like a relay, tracking deleted events,
|
|
12
|
-
// and bypassing validation for trusted relays.
|
|
13
|
-
//
|
|
14
|
-
// Urls that any given event was seen on are tracked using subscription request's `tracker`
|
|
15
|
-
// property. These are merged across all subscription requests, so it is possible that an
|
|
16
|
-
// event may be seen on more relays that were actually requested, in the case of overlapping
|
|
17
|
-
// subscriptions.
|
|
18
|
-
export var SubscriptionEvent;
|
|
19
|
-
(function (SubscriptionEvent) {
|
|
20
|
-
SubscriptionEvent["Eose"] = "eose";
|
|
21
|
-
SubscriptionEvent["Send"] = "send";
|
|
22
|
-
SubscriptionEvent["Close"] = "close";
|
|
23
|
-
SubscriptionEvent["Event"] = "event";
|
|
24
|
-
SubscriptionEvent["Complete"] = "complete";
|
|
25
|
-
SubscriptionEvent["Duplicate"] = "duplicate";
|
|
26
|
-
SubscriptionEvent["DeletedEvent"] = "deleted-event";
|
|
27
|
-
SubscriptionEvent["FailedFilter"] = "failed-filter";
|
|
28
|
-
SubscriptionEvent["Invalid"] = "invalid";
|
|
29
|
-
})(SubscriptionEvent || (SubscriptionEvent = {}));
|
|
30
|
-
export class Subscription extends Emitter {
|
|
31
|
-
request;
|
|
32
|
-
id = randomId();
|
|
33
|
-
controller = new AbortController();
|
|
34
|
-
tracker = new Tracker();
|
|
35
|
-
completed = new Set();
|
|
36
|
-
executorSubs = [];
|
|
37
|
-
executor;
|
|
38
|
-
constructor(request) {
|
|
39
|
-
super();
|
|
40
|
-
this.request = request;
|
|
41
|
-
if (request.tracker) {
|
|
42
|
-
this.tracker = request.tracker;
|
|
43
|
-
}
|
|
44
|
-
this.setMaxListeners(100);
|
|
45
|
-
this.executor = ctx.net.getExecutor(request.relays);
|
|
46
|
-
}
|
|
47
|
-
onEvent = (url, event) => {
|
|
48
|
-
const { filters } = this.request;
|
|
49
|
-
if (this.tracker.track(event.id, url)) {
|
|
50
|
-
this.emit(SubscriptionEvent.Duplicate, url, event);
|
|
51
|
-
}
|
|
52
|
-
else if (ctx.net.isDeleted(url, event)) {
|
|
53
|
-
this.emit(SubscriptionEvent.DeletedEvent, url, event);
|
|
54
|
-
}
|
|
55
|
-
else if (!ctx.net.matchFilters(url, filters, event)) {
|
|
56
|
-
this.emit(SubscriptionEvent.FailedFilter, url, event);
|
|
57
|
-
}
|
|
58
|
-
else if (!ctx.net.isValid(url, event)) {
|
|
59
|
-
this.emit(SubscriptionEvent.Invalid, url, event);
|
|
60
|
-
}
|
|
61
|
-
else {
|
|
62
|
-
this.emit(SubscriptionEvent.Event, url, event);
|
|
63
|
-
}
|
|
64
|
-
};
|
|
65
|
-
onEose = (url) => {
|
|
66
|
-
const { closeOnEose, relays } = this.request;
|
|
67
|
-
this.emit(SubscriptionEvent.Eose, url);
|
|
68
|
-
this.completed.add(url);
|
|
69
|
-
if (closeOnEose && this.completed.size === uniq(relays).length) {
|
|
70
|
-
this.onComplete();
|
|
71
|
-
}
|
|
72
|
-
};
|
|
73
|
-
onClose = (connection) => {
|
|
74
|
-
const { relays } = this.request;
|
|
75
|
-
this.emit(SubscriptionEvent.Close, connection.url);
|
|
76
|
-
this.completed.add(connection.url);
|
|
77
|
-
if (this.completed.size === uniq(relays).length) {
|
|
78
|
-
this.onComplete();
|
|
79
|
-
}
|
|
80
|
-
};
|
|
81
|
-
onComplete = once(() => {
|
|
82
|
-
this.emit(SubscriptionEvent.Complete);
|
|
83
|
-
this.executorSubs.forEach(sub => sub.unsubscribe());
|
|
84
|
-
this.removeAllListeners();
|
|
85
|
-
this.executor.target.cleanup();
|
|
86
|
-
this.executor.target.connections.forEach((c) => {
|
|
87
|
-
c.off(ConnectionEvent.Close, this.onClose);
|
|
88
|
-
});
|
|
89
|
-
});
|
|
90
|
-
execute = async () => {
|
|
91
|
-
const { filters, signal, timeout, authTimeout = 0 } = this.request;
|
|
92
|
-
// If we didn't get any filters, don't even send the request, just close it.
|
|
93
|
-
// This can be valid when a caller fulfills a request themselves but still needs a subscription object.
|
|
94
|
-
if (filters.length === 0) {
|
|
95
|
-
this.emit(SubscriptionEvent.Send);
|
|
96
|
-
this.onComplete();
|
|
97
|
-
return;
|
|
98
|
-
}
|
|
99
|
-
// Hook up our events
|
|
100
|
-
// Listen for abort via caller signal
|
|
101
|
-
signal?.addEventListener("abort", this.onComplete);
|
|
102
|
-
// Listen for abort via our own internal signal
|
|
103
|
-
this.controller.signal.addEventListener("abort", this.onComplete);
|
|
104
|
-
// If we have a timeout, complete the subscription automatically
|
|
105
|
-
if (timeout)
|
|
106
|
-
setTimeout(this.onComplete, timeout + authTimeout);
|
|
107
|
-
// If one of our connections gets closed make sure to kill our sub
|
|
108
|
-
this.executor.target.connections.forEach((c) => c.on(ConnectionEvent.Close, this.onClose));
|
|
109
|
-
// Wait for auth if needed
|
|
110
|
-
await Promise.all(this.executor.target.connections.map(async (connection) => {
|
|
111
|
-
if (authTimeout) {
|
|
112
|
-
await connection.auth.attempt(authTimeout);
|
|
113
|
-
}
|
|
114
|
-
}));
|
|
115
|
-
// If we send too many filters in a request relays will refuse to respond. REQs are rate
|
|
116
|
-
// limited client-side by Connection, so this will throttle concurrent requests.
|
|
117
|
-
for (const filtersChunk of chunk(8, filters)) {
|
|
118
|
-
this.executorSubs.push(this.executor.subscribe(filtersChunk, {
|
|
119
|
-
onEvent: this.onEvent,
|
|
120
|
-
onEose: this.onEose,
|
|
121
|
-
}));
|
|
122
|
-
}
|
|
123
|
-
// Notify that we've sent the subscription
|
|
124
|
-
this.emit(SubscriptionEvent.Send);
|
|
125
|
-
};
|
|
126
|
-
close = () => this.controller.abort();
|
|
127
|
-
}
|
|
128
|
-
export const calculateSubscriptionGroup = (sub) => {
|
|
129
|
-
const parts = [];
|
|
130
|
-
if (sub.request.timeout)
|
|
131
|
-
parts.push(`timeout:${sub.request.timeout}`);
|
|
132
|
-
if (sub.request.authTimeout)
|
|
133
|
-
parts.push(`authTimeout:${sub.request.authTimeout}`);
|
|
134
|
-
if (sub.request.closeOnEose)
|
|
135
|
-
parts.push("closeOnEose");
|
|
136
|
-
return parts.join("|");
|
|
137
|
-
};
|
|
138
|
-
export const mergeSubscriptions = (subs) => {
|
|
139
|
-
const mergedSub = new Subscription({
|
|
140
|
-
relays: uniq(subs.flatMap(sub => sub.request.relays)),
|
|
141
|
-
filters: unionFilters(subs.flatMap(sub => sub.request.filters)),
|
|
142
|
-
timeout: max(subs.map(sub => sub.request.timeout || 0)),
|
|
143
|
-
authTimeout: max(subs.map(sub => sub.request.authTimeout || 0)),
|
|
144
|
-
closeOnEose: subs.every(sub => sub.request.closeOnEose),
|
|
145
|
-
});
|
|
146
|
-
mergedSub.controller.signal.addEventListener("abort", () => {
|
|
147
|
-
for (const sub of subs) {
|
|
148
|
-
sub.close();
|
|
149
|
-
}
|
|
150
|
-
});
|
|
151
|
-
const completedSubs = new Set();
|
|
152
|
-
for (const sub of subs) {
|
|
153
|
-
// Propagate events, but avoid duplicates
|
|
154
|
-
sub.on(SubscriptionEvent.Event, (url, event) => {
|
|
155
|
-
if (!mergedSub.tracker.track(event.id, url)) {
|
|
156
|
-
mergedSub.emit(SubscriptionEvent.Event, url, event);
|
|
157
|
-
}
|
|
158
|
-
});
|
|
159
|
-
// Propagate subscription completion. Since we split subs by relay, we need to wait
|
|
160
|
-
// until all relays are completed before we notify
|
|
161
|
-
sub.on(SubscriptionEvent.Complete, () => {
|
|
162
|
-
completedSubs.add(sub.id);
|
|
163
|
-
if (completedSubs.size === subs.length) {
|
|
164
|
-
mergedSub.emit(SubscriptionEvent.Complete);
|
|
165
|
-
}
|
|
166
|
-
sub.removeAllListeners();
|
|
167
|
-
});
|
|
168
|
-
// Propagate everything else too
|
|
169
|
-
const propagateEvent = (type) => sub.on(type, (...args) => mergedSub.emit(type, ...args));
|
|
170
|
-
propagateEvent(SubscriptionEvent.Duplicate);
|
|
171
|
-
propagateEvent(SubscriptionEvent.DeletedEvent);
|
|
172
|
-
propagateEvent(SubscriptionEvent.FailedFilter);
|
|
173
|
-
propagateEvent(SubscriptionEvent.Invalid);
|
|
174
|
-
propagateEvent(SubscriptionEvent.Eose);
|
|
175
|
-
propagateEvent(SubscriptionEvent.Send);
|
|
176
|
-
propagateEvent(SubscriptionEvent.Close);
|
|
177
|
-
}
|
|
178
|
-
return mergedSub;
|
|
179
|
-
};
|
|
180
|
-
export const optimizeSubscriptions = (subs) => {
|
|
181
|
-
return Array.from(groupBy(calculateSubscriptionGroup, subs).values()).flatMap(group => {
|
|
182
|
-
const timeout = max(group.map(sub => sub.request.timeout || 0));
|
|
183
|
-
const authTimeout = max(group.map(sub => sub.request.authTimeout || 0));
|
|
184
|
-
const closeOnEose = group.every(sub => sub.request.closeOnEose);
|
|
185
|
-
const completedSubs = new Set();
|
|
186
|
-
const abortedSubs = new Set();
|
|
187
|
-
const closedSubs = new Set();
|
|
188
|
-
const eosedSubs = new Set();
|
|
189
|
-
const sentSubs = new Set();
|
|
190
|
-
const mergedSubs = [];
|
|
191
|
-
for (const { relays, filters } of ctx.net.optimizeSubscriptions(group)) {
|
|
192
|
-
for (const filter of filters) {
|
|
193
|
-
const mergedSub = new Subscription({
|
|
194
|
-
filters: [filter],
|
|
195
|
-
relays,
|
|
196
|
-
timeout,
|
|
197
|
-
authTimeout,
|
|
198
|
-
closeOnEose,
|
|
199
|
-
});
|
|
200
|
-
for (const { id, controller, request } of group) {
|
|
201
|
-
const onAbort = () => {
|
|
202
|
-
abortedSubs.add(id);
|
|
203
|
-
if (abortedSubs.size === group.length) {
|
|
204
|
-
mergedSub.close();
|
|
205
|
-
}
|
|
206
|
-
};
|
|
207
|
-
request.signal?.addEventListener("abort", onAbort);
|
|
208
|
-
controller.signal.addEventListener("abort", onAbort);
|
|
209
|
-
}
|
|
210
|
-
mergedSub.on(SubscriptionEvent.Event, (url, event) => {
|
|
211
|
-
for (const sub of group) {
|
|
212
|
-
if (matchFilters(sub.request.filters, event) && !sub.tracker.track(event.id, url)) {
|
|
213
|
-
sub.emit(SubscriptionEvent.Event, url, event);
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
});
|
|
217
|
-
// Pass events back to caller
|
|
218
|
-
const propagateEvent = (type) => mergedSub.on(type, (url, event) => {
|
|
219
|
-
for (const sub of group) {
|
|
220
|
-
if (matchFilters(sub.request.filters, event)) {
|
|
221
|
-
sub.emit(type, url, event);
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
});
|
|
225
|
-
propagateEvent(SubscriptionEvent.Duplicate);
|
|
226
|
-
propagateEvent(SubscriptionEvent.DeletedEvent);
|
|
227
|
-
propagateEvent(SubscriptionEvent.Invalid);
|
|
228
|
-
const propagateFinality = (type, subIds) => mergedSub.on(type, (...args) => {
|
|
229
|
-
subIds.add(mergedSub.id);
|
|
230
|
-
// Wait for all subscriptions to complete before reporting finality to the caller.
|
|
231
|
-
// This is sub-optimal, but because we're outsourcing filter/relay optimization
|
|
232
|
-
// we can't make any assumptions about which caller subscriptions have completed
|
|
233
|
-
// at any given time.
|
|
234
|
-
if (subIds.size === mergedSubs.length) {
|
|
235
|
-
for (const sub of group) {
|
|
236
|
-
sub.emit(type, ...args);
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
if (type === SubscriptionEvent.Complete) {
|
|
240
|
-
mergedSub.removeAllListeners();
|
|
241
|
-
}
|
|
242
|
-
});
|
|
243
|
-
propagateFinality(SubscriptionEvent.Send, sentSubs);
|
|
244
|
-
propagateFinality(SubscriptionEvent.Eose, eosedSubs);
|
|
245
|
-
propagateFinality(SubscriptionEvent.Close, closedSubs);
|
|
246
|
-
propagateFinality(SubscriptionEvent.Complete, completedSubs);
|
|
247
|
-
mergedSubs.push(mergedSub);
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
return mergedSubs;
|
|
251
|
-
});
|
|
252
|
-
};
|
|
253
|
-
export const executeSubscription = (sub) => optimizeSubscriptions([sub]).forEach(sub => sub.execute());
|
|
254
|
-
export const executeSubscriptions = (subs) => optimizeSubscriptions(subs).forEach(sub => sub.execute());
|
|
255
|
-
export const executeSubscriptionBatched = (() => {
|
|
256
|
-
const subs = [];
|
|
257
|
-
const timeouts = [];
|
|
258
|
-
const executeAll = () => {
|
|
259
|
-
executeSubscriptions(subs.splice(0));
|
|
260
|
-
for (const timeout of timeouts.splice(0)) {
|
|
261
|
-
clearTimeout(timeout);
|
|
262
|
-
}
|
|
263
|
-
};
|
|
264
|
-
return (sub) => {
|
|
265
|
-
subs.push(sub);
|
|
266
|
-
timeouts.push(setTimeout(executeAll, Math.max(16, sub.request.delay)));
|
|
267
|
-
};
|
|
268
|
-
})();
|
|
269
|
-
export const subscribe = ({ onEvent, onEose, onClose, onComplete, ...request }) => {
|
|
270
|
-
const sub = new Subscription({ delay: 50, ...request });
|
|
271
|
-
for (const relay of request.relays) {
|
|
272
|
-
if (relay !== LOCAL_RELAY_URL && relay !== normalizeRelayUrl(relay)) {
|
|
273
|
-
console.warn(`Attempted to open subscription to non-normalized url ${relay}`);
|
|
274
|
-
}
|
|
275
|
-
}
|
|
276
|
-
if (request.delay === 0) {
|
|
277
|
-
executeSubscription(sub);
|
|
278
|
-
}
|
|
279
|
-
else {
|
|
280
|
-
executeSubscriptionBatched(sub);
|
|
281
|
-
}
|
|
282
|
-
// Signature for onEvent is different from emitter signature for historical reasons and convenience
|
|
283
|
-
if (onEvent)
|
|
284
|
-
sub.on(SubscriptionEvent.Event, (url, event) => onEvent(event));
|
|
285
|
-
if (onEose)
|
|
286
|
-
sub.on(SubscriptionEvent.Eose, onEose);
|
|
287
|
-
if (onClose)
|
|
288
|
-
sub.on(SubscriptionEvent.Close, onClose);
|
|
289
|
-
if (onComplete)
|
|
290
|
-
sub.on(SubscriptionEvent.Complete, onComplete);
|
|
291
|
-
return sub;
|
|
292
|
-
};
|
|
293
|
-
//# sourceMappingURL=Subscribe.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Subscribe.js","sourceRoot":"","sources":["../../src/Subscribe.ts"],"names":[],"mappings":"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"}
|
package/build/src/Sync.d.ts
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import type { SignedEvent, TrustedEvent, Filter } from "@welshman/util";
|
|
2
|
-
export type DiffOpts = {
|
|
3
|
-
relays: string[];
|
|
4
|
-
filters: Filter[];
|
|
5
|
-
events: TrustedEvent[];
|
|
6
|
-
};
|
|
7
|
-
export declare const diff: ({ relays, filters, events }: DiffOpts) => Promise<{
|
|
8
|
-
relay: string;
|
|
9
|
-
have: string[];
|
|
10
|
-
need: string[];
|
|
11
|
-
}[]>;
|
|
12
|
-
export type PullOpts = {
|
|
13
|
-
relays: string[];
|
|
14
|
-
filters: Filter[];
|
|
15
|
-
events: TrustedEvent[];
|
|
16
|
-
onEvent?: (event: TrustedEvent) => void;
|
|
17
|
-
};
|
|
18
|
-
export declare const pull: ({ relays, filters, events, onEvent }: PullOpts) => Promise<TrustedEvent[]>;
|
|
19
|
-
export type PushOpts = {
|
|
20
|
-
relays: string[];
|
|
21
|
-
filters: Filter[];
|
|
22
|
-
events: SignedEvent[];
|
|
23
|
-
};
|
|
24
|
-
export declare const push: ({ relays, filters, events }: PushOpts) => Promise<void>;
|
|
25
|
-
export type SyncOpts = {
|
|
26
|
-
relays: string[];
|
|
27
|
-
filters: Filter[];
|
|
28
|
-
events: SignedEvent[];
|
|
29
|
-
};
|
|
30
|
-
export declare const sync: (opts: SyncOpts) => Promise<void>;
|
|
31
|
-
export type PullWithoutNegentropyOpts = {
|
|
32
|
-
relays: string[];
|
|
33
|
-
filters: Filter[];
|
|
34
|
-
onEvent?: (event: TrustedEvent) => void;
|
|
35
|
-
};
|
|
36
|
-
export declare const pullWithoutNegentropy: ({ relays, filters, onEvent, }: PullWithoutNegentropyOpts) => Promise<TrustedEvent[]>;
|
|
37
|
-
export type PushWithoutNegentropyOpts = {
|
|
38
|
-
relays: string[];
|
|
39
|
-
events: SignedEvent[];
|
|
40
|
-
};
|
|
41
|
-
export declare const pushWithoutNegentropy: ({ relays, events }: PushWithoutNegentropyOpts) => Promise<void[]>;
|
|
42
|
-
export declare const syncWithoutNegentropy: (opts: SyncOpts) => Promise<void>;
|