@welshman/net 0.0.49 → 0.1.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.
Files changed (98) hide show
  1. package/build/src/adapter.d.ts +46 -0
  2. package/build/src/adapter.js +91 -0
  3. package/build/src/adapter.js.map +1 -0
  4. package/build/src/auth.d.ts +57 -0
  5. package/build/src/auth.js +137 -0
  6. package/build/src/auth.js.map +1 -0
  7. package/build/src/context.d.ts +10 -0
  8. package/build/src/context.js +10 -0
  9. package/build/src/context.js.map +1 -0
  10. package/build/src/diff.d.ts +55 -0
  11. package/build/src/diff.js +148 -0
  12. package/build/src/diff.js.map +1 -0
  13. package/build/src/index.d.ts +12 -25
  14. package/build/src/index.js +12 -19
  15. package/build/src/index.js.map +1 -1
  16. package/build/src/message.d.ts +59 -0
  17. package/build/src/message.js +35 -0
  18. package/build/src/message.js.map +1 -0
  19. package/build/src/{Negentropy.js → negentropy.js} +1 -1
  20. package/build/src/{Negentropy.js.map → negentropy.js.map} +1 -1
  21. package/build/src/policy.d.ts +32 -0
  22. package/build/src/policy.js +202 -0
  23. package/build/src/policy.js.map +1 -0
  24. package/build/src/pool.d.ts +20 -0
  25. package/build/src/pool.js +67 -0
  26. package/build/src/pool.js.map +1 -0
  27. package/build/src/publish.d.ts +60 -0
  28. package/build/src/publish.js +120 -0
  29. package/build/src/publish.js.map +1 -0
  30. package/build/src/request.d.ts +79 -0
  31. package/build/src/request.js +191 -0
  32. package/build/src/request.js.map +1 -0
  33. package/build/src/socket.d.ts +41 -0
  34. package/build/src/socket.js +108 -0
  35. package/build/src/socket.js.map +1 -0
  36. package/build/src/{Tracker.js → tracker.js} +1 -1
  37. package/build/src/{Tracker.js.map → tracker.js.map} +1 -1
  38. package/build/src/util.d.ts +3 -0
  39. package/build/src/util.js +2 -0
  40. package/build/src/util.js.map +1 -0
  41. package/build/tsconfig.tsbuildinfo +1 -1
  42. package/package.json +6 -9
  43. package/build/src/Connection.d.ts +0 -27
  44. package/build/src/Connection.js +0 -58
  45. package/build/src/Connection.js.map +0 -1
  46. package/build/src/ConnectionAuth.d.ts +0 -28
  47. package/build/src/ConnectionAuth.js +0 -99
  48. package/build/src/ConnectionAuth.js.map +0 -1
  49. package/build/src/ConnectionEvent.d.ts +0 -11
  50. package/build/src/ConnectionEvent.js +0 -13
  51. package/build/src/ConnectionEvent.js.map +0 -1
  52. package/build/src/ConnectionSender.d.ts +0 -9
  53. package/build/src/ConnectionSender.js +0 -51
  54. package/build/src/ConnectionSender.js.map +0 -1
  55. package/build/src/ConnectionState.d.ts +0 -17
  56. package/build/src/ConnectionState.js +0 -80
  57. package/build/src/ConnectionState.js.map +0 -1
  58. package/build/src/ConnectionStats.d.ts +0 -26
  59. package/build/src/ConnectionStats.js +0 -83
  60. package/build/src/ConnectionStats.js.map +0 -1
  61. package/build/src/Context.d.ts +0 -33
  62. package/build/src/Context.js +0 -40
  63. package/build/src/Context.js.map +0 -1
  64. package/build/src/Executor.d.ts +0 -51
  65. package/build/src/Executor.js +0 -106
  66. package/build/src/Executor.js.map +0 -1
  67. package/build/src/Pool.d.ts +0 -10
  68. package/build/src/Pool.js +0 -35
  69. package/build/src/Pool.js.map +0 -1
  70. package/build/src/Publish.d.ts +0 -42
  71. package/build/src/Publish.js +0 -68
  72. package/build/src/Publish.js.map +0 -1
  73. package/build/src/Socket.d.ts +0 -26
  74. package/build/src/Socket.js +0 -113
  75. package/build/src/Socket.js.map +0 -1
  76. package/build/src/Subscribe.d.ts +0 -60
  77. package/build/src/Subscribe.js +0 -293
  78. package/build/src/Subscribe.js.map +0 -1
  79. package/build/src/Sync.d.ts +0 -42
  80. package/build/src/Sync.js +0 -125
  81. package/build/src/Sync.js.map +0 -1
  82. package/build/src/target/Echo.d.ts +0 -7
  83. package/build/src/target/Echo.js +0 -13
  84. package/build/src/target/Echo.js.map +0 -1
  85. package/build/src/target/Local.d.ts +0 -11
  86. package/build/src/target/Local.js +0 -25
  87. package/build/src/target/Local.js.map +0 -1
  88. package/build/src/target/Multi.d.ts +0 -10
  89. package/build/src/target/Multi.js +0 -22
  90. package/build/src/target/Multi.js.map +0 -1
  91. package/build/src/target/Relay.d.ts +0 -11
  92. package/build/src/target/Relay.js +0 -24
  93. package/build/src/target/Relay.js.map +0 -1
  94. package/build/src/target/Relays.d.ts +0 -10
  95. package/build/src/target/Relays.js +0 -25
  96. package/build/src/target/Relays.js.map +0 -1
  97. /package/build/src/{Negentropy.d.ts → negentropy.d.ts} +0 -0
  98. /package/build/src/{Tracker.d.ts → tracker.d.ts} +0 -0
@@ -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
@@ -1 +0,0 @@
1
- {"version":3,"file":"Publish.js","sourceRoot":"","sources":["../../src/Publish.ts"],"names":[],"mappings":"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"}
@@ -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
- }
@@ -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
@@ -1 +0,0 @@
1
- {"version":3,"file":"Socket.js","sourceRoot":"","sources":["../../src/Socket.ts"],"names":[],"mappings":"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"}
@@ -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;
@@ -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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"}
@@ -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>;