@welshman/net 0.1.1 → 0.1.2
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/LICENSE +21 -0
- package/dist/lib/src/Deferred.d.ts +21 -0
- package/dist/lib/src/Deferred.d.ts.map +1 -0
- package/dist/lib/src/Deferred.js +21 -0
- package/dist/lib/src/Deferred.js.map +1 -0
- package/dist/lib/src/Emitter.d.ts +14 -0
- package/dist/lib/src/Emitter.d.ts.map +1 -0
- package/dist/lib/src/Emitter.js +18 -0
- package/dist/lib/src/Emitter.js.map +1 -0
- package/dist/lib/src/LRUCache.d.ts +42 -0
- package/dist/lib/src/LRUCache.d.ts.map +1 -0
- package/dist/lib/src/LRUCache.js +62 -0
- package/dist/lib/src/LRUCache.js.map +1 -0
- package/dist/lib/src/TaskQueue.d.ts +18 -0
- package/dist/lib/src/TaskQueue.d.ts.map +1 -0
- package/dist/lib/src/TaskQueue.js +47 -0
- package/dist/lib/src/TaskQueue.js.map +1 -0
- package/dist/lib/src/Tools.d.ts +630 -0
- package/dist/lib/src/Tools.d.ts.map +1 -0
- package/dist/lib/src/Tools.js +1061 -0
- package/dist/lib/src/Tools.js.map +1 -0
- package/dist/lib/src/index.d.ts +7 -0
- package/dist/lib/src/index.d.ts.map +1 -0
- package/dist/lib/src/index.js +7 -0
- package/dist/lib/src/index.js.map +1 -0
- package/dist/lib/src/normalize-url/index.d.ts +286 -0
- package/dist/lib/src/normalize-url/index.d.ts.map +1 -0
- package/dist/lib/src/normalize-url/index.js +252 -0
- package/dist/lib/src/normalize-url/index.js.map +1 -0
- package/{build → dist/net}/src/adapter.d.ts +5 -7
- package/dist/net/src/adapter.d.ts.map +1 -0
- package/dist/net/src/adapter.js.map +1 -0
- package/{build → dist/net}/src/auth.d.ts +6 -21
- package/dist/net/src/auth.d.ts.map +1 -0
- package/{build → dist/net}/src/auth.js +21 -58
- package/dist/net/src/auth.js.map +1 -0
- package/{build → dist/net}/src/context.d.ts +3 -0
- package/dist/net/src/context.d.ts.map +1 -0
- package/dist/net/src/context.js.map +1 -0
- package/{build → dist/net}/src/diff.d.ts +3 -4
- package/dist/net/src/diff.d.ts.map +1 -0
- package/{build → dist/net}/src/diff.js +0 -1
- package/dist/net/src/diff.js.map +1 -0
- package/{build → dist/net}/src/index.d.ts +1 -0
- package/dist/net/src/index.d.ts.map +1 -0
- package/dist/net/src/index.js.map +1 -0
- package/{build → dist/net}/src/message.d.ts +1 -0
- package/dist/net/src/message.d.ts.map +1 -0
- package/dist/net/src/message.js.map +1 -0
- package/{build → dist/net}/src/negentropy.d.ts +2 -1
- package/dist/net/src/negentropy.d.ts.map +1 -0
- package/{build → dist/net}/src/negentropy.js +42 -18
- package/dist/net/src/negentropy.js.map +1 -0
- package/{build → dist/net}/src/policy.d.ts +16 -8
- package/dist/net/src/policy.d.ts.map +1 -0
- package/{build → dist/net}/src/policy.js +61 -83
- package/dist/net/src/policy.js.map +1 -0
- package/{build → dist/net}/src/pool.d.ts +1 -0
- package/dist/net/src/pool.d.ts.map +1 -0
- package/{build → dist/net}/src/pool.js +7 -7
- package/dist/net/src/pool.js.map +1 -0
- package/{build → dist/net}/src/publish.d.ts +6 -21
- package/dist/net/src/publish.d.ts.map +1 -0
- package/{build → dist/net}/src/publish.js +8 -3
- package/dist/net/src/publish.js.map +1 -0
- package/{build → dist/net}/src/request.d.ts +23 -13
- package/dist/net/src/request.d.ts.map +1 -0
- package/{build → dist/net}/src/request.js +19 -10
- package/dist/net/src/request.js.map +1 -0
- package/{build → dist/net}/src/socket.d.ts +11 -9
- package/dist/net/src/socket.d.ts.map +1 -0
- package/{build → dist/net}/src/socket.js +15 -8
- package/dist/net/src/socket.js.map +1 -0
- package/{build → dist/net}/src/tracker.d.ts +1 -0
- package/dist/net/src/tracker.d.ts.map +1 -0
- package/dist/net/src/tracker.js.map +1 -0
- package/dist/net/src/util.d.ts +2 -0
- package/dist/net/src/util.d.ts.map +1 -0
- package/{build → dist/net}/src/util.js.map +1 -1
- package/dist/relay/src/index.d.ts +3 -0
- package/dist/relay/src/index.d.ts.map +1 -0
- package/dist/relay/src/index.js +3 -0
- package/dist/relay/src/index.js.map +1 -0
- package/dist/relay/src/relay.d.ts +13 -0
- package/dist/relay/src/relay.d.ts.map +1 -0
- package/dist/relay/src/relay.js +48 -0
- package/dist/relay/src/relay.js.map +1 -0
- package/dist/relay/src/repository.d.ts +63 -0
- package/dist/relay/src/repository.d.ts.map +1 -0
- package/dist/relay/src/repository.js +270 -0
- package/dist/relay/src/repository.js.map +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -0
- package/dist/util/src/Address.d.ts +21 -0
- package/dist/util/src/Address.d.ts.map +1 -0
- package/dist/util/src/Address.js +43 -0
- package/dist/util/src/Address.js.map +1 -0
- package/dist/util/src/Encryptable.d.ts +34 -0
- package/dist/util/src/Encryptable.d.ts.map +1 -0
- package/dist/util/src/Encryptable.js +52 -0
- package/dist/util/src/Encryptable.js.map +1 -0
- package/dist/util/src/Events.d.ts +77 -0
- package/dist/util/src/Events.d.ts.map +1 -0
- package/dist/util/src/Events.js +62 -0
- package/dist/util/src/Events.js.map +1 -0
- package/dist/util/src/Filters.d.ts +48 -0
- package/dist/util/src/Filters.d.ts.map +1 -0
- package/dist/util/src/Filters.js +185 -0
- package/dist/util/src/Filters.js.map +1 -0
- package/dist/util/src/Handler.d.ts +17 -0
- package/dist/util/src/Handler.d.ts.map +1 -0
- package/dist/util/src/Handler.js +33 -0
- package/dist/util/src/Handler.js.map +1 -0
- package/dist/util/src/Kinds.d.ts +159 -0
- package/dist/util/src/Kinds.d.ts.map +1 -0
- package/dist/util/src/Kinds.js +160 -0
- package/dist/util/src/Kinds.js.map +1 -0
- package/dist/util/src/Links.d.ts +3 -0
- package/dist/util/src/Links.d.ts.map +1 -0
- package/dist/util/src/Links.js +3 -0
- package/dist/util/src/Links.js.map +1 -0
- package/dist/util/src/List.d.ts +32 -0
- package/dist/util/src/List.d.ts.map +1 -0
- package/dist/util/src/List.js +67 -0
- package/dist/util/src/List.js.map +1 -0
- package/dist/util/src/Profile.d.ts +33 -0
- package/dist/util/src/Profile.d.ts.map +1 -0
- package/dist/util/src/Profile.js +49 -0
- package/dist/util/src/Profile.js.map +1 -0
- package/dist/util/src/Relay.d.ts +26 -0
- package/dist/util/src/Relay.d.ts.map +1 -0
- package/dist/util/src/Relay.js +42 -0
- package/dist/util/src/Relay.js.map +1 -0
- package/dist/util/src/Tags.d.ts +32 -0
- package/dist/util/src/Tags.d.ts.map +1 -0
- package/dist/util/src/Tags.js +74 -0
- package/dist/util/src/Tags.js.map +1 -0
- package/dist/util/src/Zaps.d.ts +20 -0
- package/dist/util/src/Zaps.d.ts.map +1 -0
- package/dist/util/src/Zaps.js +93 -0
- package/dist/util/src/Zaps.js.map +1 -0
- package/dist/util/src/index.d.ts +13 -0
- package/dist/util/src/index.d.ts.map +1 -0
- package/dist/util/src/index.js +13 -0
- package/dist/util/src/index.js.map +1 -0
- package/package.json +17 -21
- package/README.md +0 -61
- package/build/src/adapter.js.map +0 -1
- package/build/src/auth.js.map +0 -1
- package/build/src/context.js.map +0 -1
- package/build/src/diff.js.map +0 -1
- package/build/src/index.js.map +0 -1
- package/build/src/message.js.map +0 -1
- package/build/src/negentropy.js.map +0 -1
- package/build/src/policy.js.map +0 -1
- package/build/src/pool.js.map +0 -1
- package/build/src/publish.js.map +0 -1
- package/build/src/request.js.map +0 -1
- package/build/src/socket.js.map +0 -1
- package/build/src/tracker.js.map +0 -1
- package/build/src/util.d.ts +0 -3
- package/build/tsconfig.tsbuildinfo +0 -1
- /package/{build → dist/net}/src/adapter.js +0 -0
- /package/{build → dist/net}/src/context.js +0 -0
- /package/{build → dist/net}/src/index.js +0 -0
- /package/{build → dist/net}/src/message.js +0 -0
- /package/{build → dist/net}/src/tracker.js +0 -0
- /package/{build → dist/net}/src/util.js +0 -0
|
@@ -1,99 +1,63 @@
|
|
|
1
|
-
import { on, call, sleep,
|
|
1
|
+
import { on, nthEq, always, call, sleep, ago, now } from "@welshman/lib";
|
|
2
2
|
import { AUTH_JOIN } from "@welshman/util";
|
|
3
|
-
import { isClientAuth, isClientClose, isClientEvent, isClientReq,
|
|
3
|
+
import { isClientAuth, isClientClose, isClientEvent, isClientReq, isClientNegClose, isRelayOk, isRelayEose, isRelayClosed, } from "./message.js";
|
|
4
4
|
import { SocketStatus, SocketEvent } from "./socket.js";
|
|
5
|
-
import {
|
|
5
|
+
import { AuthStatus, AuthStateEvent } from "./auth.js";
|
|
6
6
|
/**
|
|
7
|
-
*
|
|
7
|
+
* Handles auth-related message management:
|
|
8
|
+
* - Defers sending messages when a challenge is pending
|
|
9
|
+
* - Re-enqueues event/req messages once if rejected due to auth-required
|
|
8
10
|
* @param socket - a Socket object
|
|
9
11
|
* @return a cleanup function
|
|
10
12
|
*/
|
|
11
|
-
export const
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
|
|
13
|
+
export const socketPolicyAuthBuffer = (socket) => {
|
|
14
|
+
const { None, Ok, DeniedSignature, Forbidden } = AuthStatus;
|
|
15
|
+
const terminalStatuses = [Ok, DeniedSignature, Forbidden];
|
|
16
|
+
let buffer = [];
|
|
15
17
|
const unsubscribers = [
|
|
16
|
-
|
|
17
|
-
on(socket, SocketEvent.Enqueue, (message) => {
|
|
18
|
-
// If we're closing a request, but it never got sent, remove both from the queue
|
|
19
|
-
// Otherwise, always send CLOSE
|
|
20
|
-
if (isClientClose(message)) {
|
|
21
|
-
const req = buffer.find(spec([ClientMessageType.Req, message[1]]));
|
|
22
|
-
if (req) {
|
|
23
|
-
socket._sendQueue.remove(req);
|
|
24
|
-
socket._sendQueue.remove(message);
|
|
25
|
-
}
|
|
26
|
-
return;
|
|
27
|
-
}
|
|
18
|
+
on(socket, SocketEvent.Sending, (message) => {
|
|
28
19
|
// Always allow sending auth
|
|
29
20
|
if (isClientAuth(message))
|
|
30
21
|
return;
|
|
31
22
|
// Always allow sending join requests
|
|
32
23
|
if (isClientEvent(message) && message[1].kind === AUTH_JOIN)
|
|
33
24
|
return;
|
|
34
|
-
// If
|
|
35
|
-
if (
|
|
36
|
-
|
|
37
|
-
|
|
25
|
+
// If the auth flow is complete, no need to buffer anymore
|
|
26
|
+
if (terminalStatuses.includes(socket.auth.status))
|
|
27
|
+
return;
|
|
28
|
+
// If the client is closing a req, remove both from our buffer
|
|
29
|
+
// Otherwise, if auth isn't done, hang on to recent messages in case we need to replay them
|
|
30
|
+
if (isClientClose(message) || isClientNegClose(message)) {
|
|
31
|
+
buffer = buffer.filter(nthEq(1, message[1]));
|
|
38
32
|
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
on(authState, AuthStateEvent.Status, (status) => {
|
|
42
|
-
if (okStatuses.includes(status) && buffer.length > 0) {
|
|
43
|
-
for (const message of buffer.splice(0)) {
|
|
44
|
-
socket.send(message);
|
|
45
|
-
}
|
|
33
|
+
else {
|
|
34
|
+
buffer = buffer.slice(-50).concat([message]);
|
|
46
35
|
}
|
|
47
36
|
}),
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
};
|
|
53
|
-
};
|
|
54
|
-
/**
|
|
55
|
-
* Re-enqueues event/req messages once if rejected due to auth-required
|
|
56
|
-
* @param socket - a Socket object
|
|
57
|
-
* @return a cleanup function
|
|
58
|
-
*/
|
|
59
|
-
export const socketPolicyRetryAuthRequired = (socket) => {
|
|
60
|
-
const retried = new Set();
|
|
61
|
-
const pending = new Map();
|
|
62
|
-
const unsubscribers = [
|
|
63
|
-
// Watch outgoing events and requests and keep a copy
|
|
64
|
-
on(socket, SocketEvent.Send, (message) => {
|
|
65
|
-
if (isClientEvent(message)) {
|
|
66
|
-
const [_, event] = message;
|
|
67
|
-
if (!retried.has(event.id) && event.kind !== AUTH_JOIN) {
|
|
68
|
-
pending.set(event.id, message);
|
|
69
|
-
}
|
|
37
|
+
on(socket, SocketEvent.Receiving, (message) => {
|
|
38
|
+
// If the client is closing a request during auth, don't tell the caller, we'll retry it
|
|
39
|
+
if (isRelayClosed(message) && message[2]?.startsWith("auth-required:")) {
|
|
40
|
+
socket._recvQueue.remove(message);
|
|
70
41
|
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
42
|
+
// If we get an eose but we're in the middle of authenticating, wait
|
|
43
|
+
if (isRelayEose(message) && ![None, Ok].includes(socket.auth.status)) {
|
|
44
|
+
socket._recvQueue.remove(message);
|
|
45
|
+
}
|
|
46
|
+
// If the client is rejecting an event during auth, don't tell the caller, we'll retry it
|
|
47
|
+
if (isRelayOk(message) && !message[2] && message[3]?.startsWith("auth-required:")) {
|
|
48
|
+
socket._recvQueue.remove(message);
|
|
76
49
|
}
|
|
77
50
|
}),
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
if
|
|
81
|
-
|
|
82
|
-
const
|
|
83
|
-
|
|
84
|
-
socket.send(pendingMessage);
|
|
85
|
-
retried.add(id);
|
|
86
|
-
}
|
|
87
|
-
pending.delete(id);
|
|
88
|
-
}
|
|
89
|
-
if (isRelayClosed(message)) {
|
|
90
|
-
const [_, id, detail] = message;
|
|
91
|
-
const pendingMessage = pending.get(id);
|
|
92
|
-
if (pendingMessage && detail?.startsWith("auth-required:")) {
|
|
93
|
-
socket.send(pendingMessage);
|
|
94
|
-
retried.add(id);
|
|
51
|
+
on(socket.auth, AuthStateEvent.Status, (status) => {
|
|
52
|
+
// Send buffered messages when we get successful auth. In any case, clear them out
|
|
53
|
+
// if the auth flow is complete
|
|
54
|
+
if (status === Ok) {
|
|
55
|
+
for (const message of buffer.splice(0)) {
|
|
56
|
+
socket.send(message);
|
|
95
57
|
}
|
|
96
|
-
|
|
58
|
+
}
|
|
59
|
+
else if (terminalStatuses.includes(socket.auth.status)) {
|
|
60
|
+
buffer = [];
|
|
97
61
|
}
|
|
98
62
|
}),
|
|
99
63
|
];
|
|
@@ -106,19 +70,16 @@ export const socketPolicyRetryAuthRequired = (socket) => {
|
|
|
106
70
|
*/
|
|
107
71
|
export const socketPolicyConnectOnSend = (socket) => {
|
|
108
72
|
let lastError = 0;
|
|
109
|
-
let currentStatus = SocketStatus.Closed;
|
|
110
73
|
const unsubscribers = [
|
|
111
74
|
on(socket, SocketEvent.Status, (newStatus) => {
|
|
112
75
|
// Keep track of the most recent error
|
|
113
76
|
if (newStatus === SocketStatus.Error) {
|
|
114
77
|
lastError = now();
|
|
115
78
|
}
|
|
116
|
-
// Keep track of the current status
|
|
117
|
-
currentStatus = newStatus;
|
|
118
79
|
}),
|
|
119
|
-
on(socket, SocketEvent.
|
|
80
|
+
on(socket, SocketEvent.Sending, (message) => {
|
|
120
81
|
// When a new message is sent, make sure the socket is open (unless there was a recent error)
|
|
121
|
-
if (
|
|
82
|
+
if (socket.status === SocketStatus.Closed && lastError < ago(30)) {
|
|
122
83
|
socket.open();
|
|
123
84
|
}
|
|
124
85
|
}),
|
|
@@ -192,9 +153,26 @@ export const socketPolicyReopenActive = (socket) => {
|
|
|
192
153
|
];
|
|
193
154
|
return () => unsubscribers.forEach(call);
|
|
194
155
|
};
|
|
156
|
+
/**
|
|
157
|
+
* Factory function for a policy which may authenticate the socket
|
|
158
|
+
* @param options - SocketPolicyAuthOptions object
|
|
159
|
+
* @return a socket policy
|
|
160
|
+
*/
|
|
161
|
+
export const makeSocketPolicyAuth = (options) => (socket) => {
|
|
162
|
+
const shouldAuth = options.shouldAuth || always(true);
|
|
163
|
+
const unsubscribers = [
|
|
164
|
+
on(socket.auth, AuthStateEvent.Status, (status) => {
|
|
165
|
+
if (status === AuthStatus.Requested && shouldAuth(socket)) {
|
|
166
|
+
socket.auth.authenticate(options.sign);
|
|
167
|
+
}
|
|
168
|
+
}),
|
|
169
|
+
];
|
|
170
|
+
return () => {
|
|
171
|
+
unsubscribers.forEach(call);
|
|
172
|
+
};
|
|
173
|
+
};
|
|
195
174
|
export const defaultSocketPolicies = [
|
|
196
|
-
|
|
197
|
-
socketPolicyRetryAuthRequired,
|
|
175
|
+
socketPolicyAuthBuffer,
|
|
198
176
|
socketPolicyConnectOnSend,
|
|
199
177
|
socketPolicyCloseOnTimeout,
|
|
200
178
|
socketPolicyReopenActive,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"policy.js","sourceRoot":"","sources":["../../../src/policy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pool.d.ts","sourceRoot":"","sources":["../../../src/pool.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,MAAM,EAAC,MAAM,aAAa,CAAA;AAGlC,eAAO,MAAM,UAAU,GAAI,KAAK,MAAM,EAAE,6CAAgC,WAQvE,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;AAEvD,MAAM,MAAM,WAAW,GAAG;IACxB,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAA;CACrC,CAAA;AAED,eAAO,IAAI,aAAa,EAAE,IAAI,CAAA;AAE9B,qBAAa,IAAI;IAYH,QAAQ,CAAC,OAAO,EAAE,WAAW;IAXzC,KAAK,sBAA4B;IACjC,KAAK,EAAE,gBAAgB,EAAE,CAAK;IAE9B,MAAM,CAAC,YAAY;gBAQE,OAAO,GAAE,WAAgB;IAE9C,GAAG,CAAC,GAAG,EAAE,MAAM;IAIf,UAAU,CAAC,GAAG,EAAE,MAAM;IAQtB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAmBzB,SAAS,CAAC,EAAE,EAAE,gBAAgB;IAQ9B,MAAM,CAAC,GAAG,EAAE,MAAM;IAUlB,KAAK;CAKN"}
|
|
@@ -34,16 +34,16 @@ export class Pool {
|
|
|
34
34
|
}
|
|
35
35
|
get(_url) {
|
|
36
36
|
const url = normalizeRelayUrl(_url);
|
|
37
|
-
const
|
|
38
|
-
if (
|
|
39
|
-
return
|
|
37
|
+
const socket = this._data.get(url);
|
|
38
|
+
if (socket) {
|
|
39
|
+
return socket;
|
|
40
40
|
}
|
|
41
|
-
const
|
|
42
|
-
this._data.set(url,
|
|
41
|
+
const newSocket = this.makeSocket(url);
|
|
42
|
+
this._data.set(url, newSocket);
|
|
43
43
|
for (const cb of this._subs) {
|
|
44
|
-
cb(
|
|
44
|
+
cb(newSocket);
|
|
45
45
|
}
|
|
46
|
-
return
|
|
46
|
+
return newSocket;
|
|
47
47
|
}
|
|
48
48
|
subscribe(cb) {
|
|
49
49
|
this._subs.push(cb);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pool.js","sourceRoot":"","sources":["../../../src/pool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,eAAe,CAAA;AACpC,OAAO,EAAC,iBAAiB,EAAC,MAAM,gBAAgB,CAAA;AAChD,OAAO,EAAC,MAAM,EAAC,MAAM,aAAa,CAAA;AAClC,OAAO,EAAC,qBAAqB,EAAC,MAAM,aAAa,CAAA;AAEjD,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,GAAW,EAAE,QAAQ,GAAG,qBAAqB,EAAE,EAAE;IAC1E,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,CAAA;IAE9B,KAAK,MAAM,WAAW,IAAI,QAAQ,EAAE,CAAC;QACnC,WAAW,CAAC,MAAM,CAAC,CAAA;IACrB,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAQD,MAAM,CAAC,IAAI,aAAmB,CAAA;AAE9B,MAAM,OAAO,IAAI;IAYM;IAXrB,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAA;IACjC,KAAK,GAAuB,EAAE,CAAA;IAE9B,MAAM,CAAC,YAAY;QACjB,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,aAAa,GAAG,IAAI,IAAI,EAAE,CAAA;QAC5B,CAAC;QAED,OAAO,aAAa,CAAA;IACtB,CAAC;IAED,YAAqB,UAAuB,EAAE;QAAzB,YAAO,GAAP,OAAO,CAAkB;IAAG,CAAC;IAElD,GAAG,CAAC,GAAW;QACb,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAA;IAC/C,CAAC;IAED,UAAU,CAAC,GAAW;QACpB,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;QACrC,CAAC;QAED,OAAO,UAAU,CAAC,GAAG,CAAC,CAAA;IACxB,CAAC;IAED,GAAG,CAAC,IAAY;QACd,MAAM,GAAG,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAA;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAElC,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,MAAM,CAAA;QACf,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;QAEtC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;QAE9B,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC5B,EAAE,CAAC,SAAS,CAAC,CAAA;QACf,CAAC;QAED,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,SAAS,CAAC,EAAoB;QAC5B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAEnB,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;QACrC,CAAC,CAAA;IACH,CAAC;IAED,MAAM,CAAC,GAAW;QAChB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAElC,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,CAAC,OAAO,EAAE,CAAA;YAEhB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QACxB,CAAC;IACH,CAAC;IAED,KAAK;QACH,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;YACpC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QAClB,CAAC;IACH,CAAC;CACF"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import { EventEmitter } from "events";
|
|
1
2
|
import { SignedEvent } from "@welshman/util";
|
|
2
3
|
import { AbstractAdapter, AdapterContext } from "./adapter.js";
|
|
3
|
-
import { TypedEmitter } from "./util.js";
|
|
4
4
|
export declare enum PublishStatus {
|
|
5
5
|
Pending = "publish:status:pending",
|
|
6
6
|
Success = "publish:status:success",
|
|
@@ -15,21 +15,13 @@ export declare enum PublishEvent {
|
|
|
15
15
|
Aborted = "publish:event:aborted",
|
|
16
16
|
Complete = "publish:event:complete"
|
|
17
17
|
}
|
|
18
|
-
export type SinglePublishEvents = {
|
|
19
|
-
[PublishEvent.Success]: (id: string, detail: string) => void;
|
|
20
|
-
[PublishEvent.Failure]: (id: string, detail: string) => void;
|
|
21
|
-
[PublishEvent.Timeout]: () => void;
|
|
22
|
-
[PublishEvent.Aborted]: () => void;
|
|
23
|
-
[PublishEvent.Complete]: () => void;
|
|
24
|
-
};
|
|
25
18
|
export type SinglePublishOptions = {
|
|
26
19
|
event: SignedEvent;
|
|
27
20
|
relay: string;
|
|
28
21
|
context?: AdapterContext;
|
|
29
22
|
timeout?: number;
|
|
30
23
|
};
|
|
31
|
-
declare
|
|
32
|
-
export declare class SinglePublish extends SinglePublish_base {
|
|
24
|
+
export declare class SinglePublish extends EventEmitter {
|
|
33
25
|
readonly options: SinglePublishOptions;
|
|
34
26
|
status: PublishStatus;
|
|
35
27
|
_unsubscriber: () => void;
|
|
@@ -38,23 +30,16 @@ export declare class SinglePublish extends SinglePublish_base {
|
|
|
38
30
|
abort: () => void;
|
|
39
31
|
cleanup: () => void;
|
|
40
32
|
}
|
|
41
|
-
export type MultiPublishEvents = {
|
|
42
|
-
[PublishEvent.Success]: (id: string, detail: string, url: string) => void;
|
|
43
|
-
[PublishEvent.Failure]: (id: string, detail: string, url: string) => void;
|
|
44
|
-
[PublishEvent.Timeout]: (url: string) => void;
|
|
45
|
-
[PublishEvent.Aborted]: (url: string) => void;
|
|
46
|
-
[PublishEvent.Complete]: () => void;
|
|
47
|
-
};
|
|
48
33
|
export type MultiPublishOptions = Omit<SinglePublishOptions, "relay"> & {
|
|
49
34
|
relays: string[];
|
|
50
35
|
};
|
|
51
|
-
declare
|
|
52
|
-
export declare class MultiPublish extends MultiPublish_base {
|
|
36
|
+
export declare class MultiPublish extends EventEmitter {
|
|
53
37
|
status: Record<string, PublishStatus>;
|
|
54
38
|
_children: SinglePublish[];
|
|
55
39
|
_completed: Set<string>;
|
|
56
|
-
constructor(
|
|
40
|
+
constructor(options: MultiPublishOptions);
|
|
57
41
|
abort(): void;
|
|
58
42
|
cleanup(): void;
|
|
59
43
|
}
|
|
60
|
-
export
|
|
44
|
+
export declare const publish: (options: MultiPublishOptions) => MultiPublish;
|
|
45
|
+
//# sourceMappingURL=publish.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../../../src/publish.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,QAAQ,CAAA;AAEnC,OAAO,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAA;AAE1C,OAAO,EAAC,eAAe,EAAgB,cAAc,EAAa,MAAM,cAAc,CAAA;AAEtF,oBAAY,aAAa;IACvB,OAAO,2BAA2B;IAClC,OAAO,2BAA2B;IAClC,OAAO,2BAA2B;IAClC,OAAO,2BAA2B;IAClC,OAAO,2BAA2B;CACnC;AAED,oBAAY,YAAY;IACtB,OAAO,0BAA0B;IACjC,OAAO,0BAA0B;IACjC,OAAO,0BAA0B;IACjC,OAAO,0BAA0B;IACjC,QAAQ,2BAA2B;CACpC;AAID,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,EAAE,WAAW,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,cAAc,CAAA;IACxB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,qBAAa,aAAc,SAAQ,YAAY;IAMjC,QAAQ,CAAC,OAAO,EAAE,oBAAoB;IALlD,MAAM,gBAAwB;IAE9B,aAAa,EAAE,MAAM,IAAI,CAAA;IACzB,QAAQ,EAAE,eAAe,CAAA;gBAEJ,OAAO,EAAE,oBAAoB;IA6ClD,KAAK,aAMJ;IAED,OAAO,aAKN;CACF;AAID,MAAM,MAAM,mBAAmB,GAAG,IAAI,CAAC,oBAAoB,EAAE,OAAO,CAAC,GAAG;IACtE,MAAM,EAAE,MAAM,EAAE,CAAA;CACjB,CAAA;AAED,qBAAa,YAAa,SAAQ,YAAY;IAC5C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IAErC,SAAS,EAAE,aAAa,EAAE,CAAK;IAC/B,UAAU,cAAoB;gBAElB,OAAO,EAAE,mBAAmB;IAgDxC,KAAK;IAML,OAAO;CAGR;AAED,eAAO,MAAM,OAAO,GAAI,SAAS,mBAAmB,iBAA8B,CAAA"}
|
|
@@ -76,9 +76,13 @@ export class MultiPublish extends EventEmitter {
|
|
|
76
76
|
status;
|
|
77
77
|
_children = [];
|
|
78
78
|
_completed = new Set();
|
|
79
|
-
constructor(
|
|
79
|
+
constructor(options) {
|
|
80
80
|
super();
|
|
81
|
-
|
|
81
|
+
const relays = new Set(options.relays);
|
|
82
|
+
if (relays.size !== options.relays.length) {
|
|
83
|
+
console.warn("Non-unique relays passed to MultiPublish");
|
|
84
|
+
}
|
|
85
|
+
this.status = fromPairs(Array.from(relays).map(relay => [relay, PublishStatus.Pending]));
|
|
82
86
|
for (const relay of relays) {
|
|
83
87
|
const unicast = new SinglePublish({ relay, ...options });
|
|
84
88
|
unicast.on(PublishEvent.Success, (id, detail) => {
|
|
@@ -100,7 +104,7 @@ export class MultiPublish extends EventEmitter {
|
|
|
100
104
|
unicast.on(PublishEvent.Complete, () => {
|
|
101
105
|
this._completed.add(relay);
|
|
102
106
|
this.status[relay] = unicast.status;
|
|
103
|
-
if (this._completed.size === relays.
|
|
107
|
+
if (this._completed.size === relays.size) {
|
|
104
108
|
this.emit(PublishEvent.Complete);
|
|
105
109
|
this.cleanup();
|
|
106
110
|
}
|
|
@@ -117,4 +121,5 @@ export class MultiPublish extends EventEmitter {
|
|
|
117
121
|
this.removeAllListeners();
|
|
118
122
|
}
|
|
119
123
|
}
|
|
124
|
+
export const publish = (options) => new MultiPublish(options);
|
|
120
125
|
//# sourceMappingURL=publish.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publish.js","sourceRoot":"","sources":["../../../src/publish.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import { EventEmitter } from "events";
|
|
1
2
|
import { Filter, TrustedEvent } from "@welshman/util";
|
|
2
3
|
import { AdapterContext, AbstractAdapter } from "./adapter.js";
|
|
3
|
-
import {
|
|
4
|
+
import { Unsubscriber } from "./util.js";
|
|
4
5
|
import { Tracker } from "./tracker.js";
|
|
5
6
|
export declare enum RequestEvent {
|
|
6
7
|
Close = "request:event:close",
|
|
@@ -25,6 +26,7 @@ export type SingleRequestEvents = {
|
|
|
25
26
|
export type SingleRequestOptions = {
|
|
26
27
|
relay: string;
|
|
27
28
|
filters: Filter[];
|
|
29
|
+
signal?: AbortSignal;
|
|
28
30
|
context?: AdapterContext;
|
|
29
31
|
timeout?: number;
|
|
30
32
|
tracker?: Tracker;
|
|
@@ -32,10 +34,7 @@ export type SingleRequestOptions = {
|
|
|
32
34
|
isEventValid?: (event: TrustedEvent, url: string) => boolean;
|
|
33
35
|
isEventDeleted?: (event: TrustedEvent, url: string) => boolean;
|
|
34
36
|
};
|
|
35
|
-
export
|
|
36
|
-
}
|
|
37
|
-
declare const SingleRequest_base: new () => TypedEmitter<SingleRequestEvents>;
|
|
38
|
-
export declare class SingleRequest extends SingleRequest_base {
|
|
37
|
+
export declare class SingleRequest extends EventEmitter {
|
|
39
38
|
readonly options: SingleRequestOptions;
|
|
40
39
|
_ids: Set<string>;
|
|
41
40
|
_eose: Set<string>;
|
|
@@ -57,23 +56,34 @@ export type MultiRequestEvents = {
|
|
|
57
56
|
};
|
|
58
57
|
export type MultiRequestOptions = Omit<SingleRequestOptions, "relay"> & {
|
|
59
58
|
relays: string[];
|
|
59
|
+
threshold?: number;
|
|
60
60
|
};
|
|
61
|
-
export
|
|
62
|
-
}
|
|
63
|
-
declare const MultiRequest_base: new () => TypedEmitter<MultiRequestEvents>;
|
|
64
|
-
export declare class MultiRequest extends MultiRequest_base {
|
|
61
|
+
export declare class MultiRequest extends EventEmitter {
|
|
65
62
|
_children: SingleRequest[];
|
|
66
63
|
_closed: Set<string>;
|
|
67
|
-
constructor(
|
|
64
|
+
constructor(options: MultiRequestOptions);
|
|
68
65
|
close(): void;
|
|
69
66
|
}
|
|
70
67
|
export declare const request: (options: MultiRequestOptions) => MultiRequest;
|
|
68
|
+
export type LoaderOptions = {
|
|
69
|
+
delay: number;
|
|
70
|
+
timeout?: number;
|
|
71
|
+
threshold?: number;
|
|
72
|
+
context?: AdapterContext;
|
|
73
|
+
isEventValid?: (event: TrustedEvent, url: string) => boolean;
|
|
74
|
+
isEventDeleted?: (event: TrustedEvent, url: string) => boolean;
|
|
75
|
+
};
|
|
76
|
+
export type LoadOptions = {
|
|
77
|
+
relays: string[];
|
|
78
|
+
filters: Filter[];
|
|
79
|
+
};
|
|
71
80
|
/**
|
|
72
|
-
*
|
|
81
|
+
* Creates a convenience function which returns a promise of events from a request.
|
|
73
82
|
* It may return early if filter cardinality is known, and it delays requests by
|
|
74
83
|
* 200 in order to implement batching
|
|
75
84
|
* @param options - MultiRequestOptions
|
|
76
85
|
* @returns - a promise containing an array of TrustedEvents
|
|
77
86
|
*/
|
|
78
|
-
export declare const
|
|
79
|
-
export
|
|
87
|
+
export declare const makeLoader: (options: LoaderOptions) => (request: LoadOptions) => Promise<TrustedEvent[]>;
|
|
88
|
+
export declare const load: (request: LoadOptions) => Promise<TrustedEvent[]>;
|
|
89
|
+
//# sourceMappingURL=request.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../../src/request.ts"],"names":[],"mappings":"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"}
|
|
@@ -79,9 +79,11 @@ export class SingleRequest extends EventEmitter {
|
|
|
79
79
|
}));
|
|
80
80
|
}
|
|
81
81
|
// Timeout our subscription
|
|
82
|
-
if (this.options.timeout) {
|
|
83
|
-
setTimeout(() => this.close(), this.options.timeout);
|
|
82
|
+
if (this.options.timeout || this.options.autoClose) {
|
|
83
|
+
setTimeout(() => this.close(), this.options.timeout || 10000);
|
|
84
84
|
}
|
|
85
|
+
// Handle abort signal
|
|
86
|
+
this.options.signal?.addEventListener("abort", () => this.close());
|
|
85
87
|
// Start asynchronously so the caller can set up listeners
|
|
86
88
|
yieldThread().then(() => {
|
|
87
89
|
for (const filter of this.options.filters) {
|
|
@@ -97,19 +99,24 @@ export class SingleRequest extends EventEmitter {
|
|
|
97
99
|
for (const id of this._ids) {
|
|
98
100
|
this._adapter.send(["CLOSE", id]);
|
|
99
101
|
}
|
|
102
|
+
this._closed = true;
|
|
100
103
|
this.emit(RequestEvent.Close);
|
|
101
|
-
this.removeAllListeners();
|
|
102
|
-
this._unsubscribers.map(call);
|
|
103
104
|
this._adapter.cleanup();
|
|
104
|
-
this.
|
|
105
|
+
this._unsubscribers.map(call);
|
|
106
|
+
this.removeAllListeners();
|
|
105
107
|
}
|
|
106
108
|
}
|
|
107
109
|
export class MultiRequest extends EventEmitter {
|
|
108
110
|
_children = [];
|
|
109
111
|
_closed = new Set();
|
|
110
|
-
constructor(
|
|
112
|
+
constructor(options) {
|
|
111
113
|
super();
|
|
112
114
|
const tracker = new Tracker();
|
|
115
|
+
const relays = new Set(options.relays);
|
|
116
|
+
const threshold = options.threshold || 1;
|
|
117
|
+
if (relays.size !== options.relays.length) {
|
|
118
|
+
console.warn("Non-unique relays passed to MultiRequest");
|
|
119
|
+
}
|
|
113
120
|
for (const relay of relays) {
|
|
114
121
|
const req = new SingleRequest({ relay, tracker, ...options });
|
|
115
122
|
req.on(RequestEvent.Event, (event) => {
|
|
@@ -135,8 +142,9 @@ export class MultiRequest extends EventEmitter {
|
|
|
135
142
|
});
|
|
136
143
|
req.on(RequestEvent.Close, () => {
|
|
137
144
|
this._closed.add(relay);
|
|
138
|
-
if (this._closed.size
|
|
145
|
+
if (this._closed.size >= relays.size * threshold) {
|
|
139
146
|
this.emit(RequestEvent.Close);
|
|
147
|
+
this.close();
|
|
140
148
|
}
|
|
141
149
|
});
|
|
142
150
|
this._children.push(req);
|
|
@@ -150,13 +158,13 @@ export class MultiRequest extends EventEmitter {
|
|
|
150
158
|
}
|
|
151
159
|
export const request = (options) => new MultiRequest(options);
|
|
152
160
|
/**
|
|
153
|
-
*
|
|
161
|
+
* Creates a convenience function which returns a promise of events from a request.
|
|
154
162
|
* It may return early if filter cardinality is known, and it delays requests by
|
|
155
163
|
* 200 in order to implement batching
|
|
156
164
|
* @param options - MultiRequestOptions
|
|
157
165
|
* @returns - a promise containing an array of TrustedEvents
|
|
158
166
|
*/
|
|
159
|
-
export const
|
|
167
|
+
export const makeLoader = (options) => batcher(options.delay, async (requests) => {
|
|
160
168
|
const filtersByRelay = new Map();
|
|
161
169
|
for (const { filters, relays } of requests) {
|
|
162
170
|
for (const relay of relays) {
|
|
@@ -174,8 +182,8 @@ export const load = batcher(200, async (requests) => {
|
|
|
174
182
|
filters,
|
|
175
183
|
tracker,
|
|
176
184
|
relays: [relay],
|
|
177
|
-
timeout: 5000,
|
|
178
185
|
autoClose: true,
|
|
186
|
+
...options,
|
|
179
187
|
});
|
|
180
188
|
let count = 0;
|
|
181
189
|
req.on(RequestEvent.Event, (event) => {
|
|
@@ -188,4 +196,5 @@ export const load = batcher(200, async (requests) => {
|
|
|
188
196
|
})));
|
|
189
197
|
return requests.map(r => events.filter(event => matchFilters(r.filters, event)));
|
|
190
198
|
});
|
|
199
|
+
export const load = makeLoader({ delay: 200, timeout: 3000, threshold: 0.5 });
|
|
191
200
|
//# sourceMappingURL=request.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../../src/request.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,32 +1,34 @@
|
|
|
1
1
|
import WebSocket from "isomorphic-ws";
|
|
2
|
+
import EventEmitter from "events";
|
|
2
3
|
import { TaskQueue } from "@welshman/lib";
|
|
3
4
|
import { RelayMessage, ClientMessage } from "./message.js";
|
|
4
|
-
import {
|
|
5
|
+
import { AuthState } from "./auth.js";
|
|
5
6
|
export declare enum SocketStatus {
|
|
6
7
|
Open = "socket:status:open",
|
|
7
8
|
Opening = "socket:status:opening",
|
|
8
9
|
Closing = "socket:status:closing",
|
|
9
10
|
Closed = "socket:status:closed",
|
|
10
|
-
Error = "socket:status:error"
|
|
11
|
-
Invalid = "socket:status:invalid"
|
|
11
|
+
Error = "socket:status:error"
|
|
12
12
|
}
|
|
13
13
|
export declare enum SocketEvent {
|
|
14
14
|
Error = "socket:event:error",
|
|
15
15
|
Status = "socket:event:status",
|
|
16
16
|
Send = "socket:event:send",
|
|
17
|
-
|
|
18
|
-
Receive = "socket:event:receive"
|
|
17
|
+
Sending = "socket:event:sending",
|
|
18
|
+
Receive = "socket:event:receive",
|
|
19
|
+
Receiving = "socket:event:receiving"
|
|
19
20
|
}
|
|
20
21
|
export type SocketEvents = {
|
|
21
22
|
[SocketEvent.Error]: (error: string, url: string) => void;
|
|
22
23
|
[SocketEvent.Status]: (status: SocketStatus, url: string) => void;
|
|
23
24
|
[SocketEvent.Send]: (message: ClientMessage, url: string) => void;
|
|
24
|
-
[SocketEvent.
|
|
25
|
+
[SocketEvent.Sending]: (message: ClientMessage, url: string) => void;
|
|
25
26
|
[SocketEvent.Receive]: (message: RelayMessage, url: string) => void;
|
|
27
|
+
[SocketEvent.Receiving]: (message: RelayMessage, url: string) => void;
|
|
26
28
|
};
|
|
27
|
-
declare
|
|
28
|
-
export declare class Socket extends Socket_base {
|
|
29
|
+
export declare class Socket extends EventEmitter {
|
|
29
30
|
readonly url: string;
|
|
31
|
+
auth: AuthState;
|
|
30
32
|
status: SocketStatus;
|
|
31
33
|
_ws?: WebSocket;
|
|
32
34
|
_sendQueue: TaskQueue<ClientMessage>;
|
|
@@ -38,4 +40,4 @@ export declare class Socket extends Socket_base {
|
|
|
38
40
|
cleanup: () => void;
|
|
39
41
|
send: (message: ClientMessage) => void;
|
|
40
42
|
}
|
|
41
|
-
|
|
43
|
+
//# sourceMappingURL=socket.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"socket.d.ts","sourceRoot":"","sources":["../../../src/socket.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,eAAe,CAAA;AACrC,OAAO,YAAY,MAAM,QAAQ,CAAA;AACjC,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAA;AACvC,OAAO,EAAC,YAAY,EAAE,aAAa,EAAC,MAAM,cAAc,CAAA;AACxD,OAAO,EAAC,SAAS,EAAC,MAAM,WAAW,CAAA;AAEnC,oBAAY,YAAY;IACtB,IAAI,uBAAuB;IAC3B,OAAO,0BAA0B;IACjC,OAAO,0BAA0B;IACjC,MAAM,yBAAyB;IAC/B,KAAK,wBAAwB;CAC9B;AAED,oBAAY,WAAW;IACrB,KAAK,uBAAuB;IAC5B,MAAM,wBAAwB;IAC9B,IAAI,sBAAsB;IAC1B,OAAO,yBAAyB;IAChC,OAAO,yBAAyB;IAChC,SAAS,2BAA2B;CACrC;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;IACzD,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;IACjE,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;IACjE,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;IACpE,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;IACnE,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;CACtE,CAAA;AAED,qBAAa,MAAO,SAAQ,YAAY;IAQ1B,QAAQ,CAAC,GAAG,EAAE,MAAM;IAPhC,IAAI,EAAE,SAAS,CAAA;IACf,MAAM,eAAsB;IAE5B,GAAG,CAAC,EAAE,SAAS,CAAA;IACf,UAAU,EAAE,SAAS,CAAC,aAAa,CAAC,CAAA;IACpC,UAAU,EAAE,SAAS,CAAC,YAAY,CAAC,CAAA;gBAEd,GAAG,EAAE,MAAM;IA4BhC,IAAI,aA6CH;IAED,aAAa,aAIZ;IAED,KAAK,aAGJ;IAED,OAAO,aAMN;IAED,IAAI,GAAI,SAAS,aAAa,UAG7B;CACF"}
|