@welshman/store 0.14.0-pre4 → 0.14.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/dist/store/src/{repository.d.ts → derive.d.ts} +33 -41
- package/dist/store/src/derive.d.ts.map +1 -0
- package/dist/store/src/derive.js +706 -0
- package/dist/store/src/derive.js.map +1 -0
- package/dist/store/src/index.d.ts +9 -1
- package/dist/store/src/index.d.ts.map +1 -1
- package/dist/store/src/index.js +9 -1
- package/dist/store/src/index.js.map +1 -1
- package/dist/store/src/misc.d.ts +2 -7
- package/dist/store/src/misc.d.ts.map +1 -1
- package/dist/store/src/misc.js +1 -1
- package/dist/store/src/misc.js.map +1 -1
- package/dist/{net/src/repository.d.ts → store/src/repository/adapters/memory.d.ts} +22 -30
- package/dist/store/src/repository/adapters/memory.d.ts.map +1 -0
- package/dist/{net/src/repository.js → store/src/repository/adapters/memory.js} +96 -106
- package/dist/store/src/repository/adapters/memory.js.map +1 -0
- package/dist/store/src/repository/adapters/sqlite/engine.d.ts +65 -0
- package/dist/store/src/repository/adapters/sqlite/engine.d.ts.map +1 -0
- package/dist/store/src/repository/adapters/sqlite/engine.js +420 -0
- package/dist/store/src/repository/adapters/sqlite/engine.js.map +1 -0
- package/dist/store/src/repository/adapters/sqlite/leader.d.ts +8 -0
- package/dist/store/src/repository/adapters/sqlite/leader.d.ts.map +1 -0
- package/dist/store/src/repository/adapters/sqlite/leader.js +222 -0
- package/dist/store/src/repository/adapters/sqlite/leader.js.map +1 -0
- package/dist/store/src/repository/adapters/sqlite/protocol.d.ts +52 -0
- package/dist/store/src/repository/adapters/sqlite/protocol.d.ts.map +1 -0
- package/dist/store/src/repository/adapters/sqlite/protocol.js +52 -0
- package/dist/store/src/repository/adapters/sqlite/protocol.js.map +1 -0
- package/dist/store/src/repository/adapters/sqlite/repository.d.ts +54 -0
- package/dist/store/src/repository/adapters/sqlite/repository.d.ts.map +1 -0
- package/dist/store/src/repository/adapters/sqlite/repository.js +238 -0
- package/dist/store/src/repository/adapters/sqlite/repository.js.map +1 -0
- package/dist/store/src/repository/adapters/sqlite/serve.d.ts +4 -0
- package/dist/store/src/repository/adapters/sqlite/serve.d.ts.map +1 -0
- package/dist/store/src/repository/adapters/sqlite/serve.js +40 -0
- package/dist/store/src/repository/adapters/sqlite/serve.js.map +1 -0
- package/dist/store/src/repository/adapters/sqlite/wasm.d.ts +7 -0
- package/dist/store/src/repository/adapters/sqlite/wasm.d.ts.map +1 -0
- package/dist/store/src/repository/adapters/sqlite/wasm.js +61 -0
- package/dist/store/src/repository/adapters/sqlite/wasm.js.map +1 -0
- package/dist/store/src/repository/adapters/sqlite/worker.d.ts +2 -0
- package/dist/store/src/repository/adapters/sqlite/worker.d.ts.map +1 -0
- package/dist/store/src/repository/adapters/sqlite/worker.js +4 -0
- package/dist/store/src/repository/adapters/sqlite/worker.js.map +1 -0
- package/dist/store/src/repository/core.d.ts +68 -0
- package/dist/store/src/repository/core.d.ts.map +1 -0
- package/dist/store/src/repository/core.js +123 -0
- package/dist/store/src/repository/core.js.map +1 -0
- package/dist/store/src/svelte.d.ts +22 -0
- package/dist/store/src/svelte.d.ts.map +1 -0
- package/dist/store/src/svelte.js +100 -0
- package/dist/store/src/svelte.js.map +1 -0
- package/dist/store/src/synced.d.ts +1 -1
- package/dist/store/src/synced.d.ts.map +1 -1
- package/dist/store/src/synced.js +1 -1
- package/dist/store/src/synced.js.map +1 -1
- package/dist/store/src/throttle.d.ts +1 -1
- package/dist/store/src/throttle.d.ts.map +1 -1
- package/dist/{net → store}/src/tracker.d.ts +2 -0
- package/dist/store/src/tracker.d.ts.map +1 -0
- package/dist/{net → store}/src/tracker.js +8 -4
- package/dist/store/src/tracker.js.map +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/util/src/Command.d.ts +1 -1
- package/dist/util/src/Command.d.ts.map +1 -1
- package/dist/util/src/Command.js +12 -5
- package/dist/util/src/Command.js.map +1 -1
- package/dist/util/src/Events.d.ts +3 -2
- package/dist/util/src/Events.d.ts.map +1 -1
- package/dist/util/src/Events.js.map +1 -1
- package/dist/util/src/Filters.d.ts.map +1 -1
- package/dist/util/src/Filters.js +6 -2
- package/dist/util/src/Filters.js.map +1 -1
- package/dist/util/src/Kinds.d.ts +1 -0
- package/dist/util/src/Kinds.d.ts.map +1 -1
- package/dist/util/src/Kinds.js +1 -0
- package/dist/util/src/Kinds.js.map +1 -1
- package/dist/util/src/RelaySelection.d.ts +5 -0
- package/dist/util/src/RelaySelection.d.ts.map +1 -1
- package/dist/util/src/RelaySelection.js.map +1 -1
- package/dist/util/src/Tags.d.ts +5 -0
- package/dist/util/src/Tags.d.ts.map +1 -1
- package/dist/util/src/Tags.js +3 -0
- package/dist/util/src/Tags.js.map +1 -1
- package/dist/util/src/index.d.ts +1 -0
- package/dist/util/src/index.d.ts.map +1 -1
- package/dist/util/src/index.js +1 -0
- package/dist/util/src/index.js.map +1 -1
- package/package.json +31 -12
- package/dist/net/src/adapter.d.ts +0 -47
- package/dist/net/src/adapter.d.ts.map +0 -1
- package/dist/net/src/adapter.js +0 -139
- package/dist/net/src/adapter.js.map +0 -1
- package/dist/net/src/auth.d.ts +0 -40
- package/dist/net/src/auth.d.ts.map +0 -1
- package/dist/net/src/auth.js +0 -131
- package/dist/net/src/auth.js.map +0 -1
- package/dist/net/src/context.d.ts +0 -10
- package/dist/net/src/context.d.ts.map +0 -1
- package/dist/net/src/context.js +0 -2
- package/dist/net/src/context.js.map +0 -1
- package/dist/net/src/count.d.ts +0 -30
- package/dist/net/src/count.d.ts.map +0 -1
- package/dist/net/src/count.js +0 -97
- package/dist/net/src/count.js.map +0 -1
- package/dist/net/src/diff.d.ts +0 -57
- package/dist/net/src/diff.d.ts.map +0 -1
- package/dist/net/src/diff.js +0 -169
- package/dist/net/src/diff.js.map +0 -1
- package/dist/net/src/index.d.ts +0 -17
- package/dist/net/src/index.d.ts.map +0 -1
- package/dist/net/src/index.js +0 -17
- package/dist/net/src/index.js.map +0 -1
- package/dist/net/src/message.d.ts +0 -106
- package/dist/net/src/message.d.ts.map +0 -1
- package/dist/net/src/message.js +0 -98
- package/dist/net/src/message.js.map +0 -1
- package/dist/net/src/multiplex.d.ts +0 -14
- package/dist/net/src/multiplex.d.ts.map +0 -1
- package/dist/net/src/multiplex.js +0 -219
- package/dist/net/src/multiplex.js.map +0 -1
- package/dist/net/src/negentropy.d.ts +0 -48
- package/dist/net/src/negentropy.d.ts.map +0 -1
- package/dist/net/src/negentropy.js +0 -528
- package/dist/net/src/negentropy.js.map +0 -1
- package/dist/net/src/policy.d.ts +0 -63
- package/dist/net/src/policy.d.ts.map +0 -1
- package/dist/net/src/policy.js +0 -388
- package/dist/net/src/policy.js.map +0 -1
- package/dist/net/src/pool.d.ts +0 -15
- package/dist/net/src/pool.d.ts.map +0 -1
- package/dist/net/src/pool.js +0 -51
- package/dist/net/src/pool.js.map +0 -1
- package/dist/net/src/publish.d.ts +0 -47
- package/dist/net/src/publish.d.ts.map +0 -1
- package/dist/net/src/publish.js +0 -112
- package/dist/net/src/publish.js.map +0 -1
- package/dist/net/src/repository.d.ts.map +0 -1
- package/dist/net/src/repository.js.map +0 -1
- package/dist/net/src/request.d.ts +0 -38
- package/dist/net/src/request.d.ts.map +0 -1
- package/dist/net/src/request.js +0 -220
- package/dist/net/src/request.js.map +0 -1
- package/dist/net/src/socket.d.ts +0 -52
- package/dist/net/src/socket.d.ts.map +0 -1
- package/dist/net/src/socket.js +0 -134
- package/dist/net/src/socket.js.map +0 -1
- package/dist/net/src/tracker.d.ts.map +0 -1
- package/dist/net/src/tracker.js.map +0 -1
- package/dist/net/src/util.d.ts +0 -18
- package/dist/net/src/util.d.ts.map +0 -1
- package/dist/net/src/util.js +0 -25
- package/dist/net/src/util.js.map +0 -1
- package/dist/net/src/wrapManager.d.ts +0 -34
- package/dist/net/src/wrapManager.d.ts.map +0 -1
- package/dist/net/src/wrapManager.js +0 -79
- package/dist/net/src/wrapManager.js.map +0 -1
- package/dist/store/src/repository.d.ts.map +0 -1
- package/dist/store/src/repository.js +0 -580
- package/dist/store/src/repository.js.map +0 -1
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import EventEmitter from "events";
|
|
2
|
-
import { Filter } from "@welshman/util";
|
|
3
|
-
import { Repository } from "./repository.js";
|
|
4
|
-
import { RelayMessage, ClientMessage } from "./message.js";
|
|
5
|
-
import { Socket } from "./socket.js";
|
|
6
|
-
import { Unsubscriber } from "./util.js";
|
|
7
|
-
import type { NetContext } from "./context.js";
|
|
8
|
-
export declare enum AdapterEvent {
|
|
9
|
-
Receive = "receive"
|
|
10
|
-
}
|
|
11
|
-
export type AdapterEvents = {
|
|
12
|
-
[AdapterEvent.Receive]: (message: RelayMessage, url: string) => void;
|
|
13
|
-
};
|
|
14
|
-
export declare abstract class AbstractAdapter extends EventEmitter {
|
|
15
|
-
_unsubscribers: Unsubscriber[];
|
|
16
|
-
abstract urls: string[];
|
|
17
|
-
abstract sockets: Socket[];
|
|
18
|
-
abstract send(message: ClientMessage): void;
|
|
19
|
-
cleanup(): void;
|
|
20
|
-
}
|
|
21
|
-
export declare class SocketAdapter extends AbstractAdapter {
|
|
22
|
-
readonly socket: Socket;
|
|
23
|
-
constructor(socket: Socket);
|
|
24
|
-
get sockets(): Socket[];
|
|
25
|
-
get urls(): string[];
|
|
26
|
-
send(message: ClientMessage): void;
|
|
27
|
-
}
|
|
28
|
-
export declare class LocalAdapter extends AbstractAdapter {
|
|
29
|
-
#private;
|
|
30
|
-
readonly repository: Repository;
|
|
31
|
-
subs: Map<string, Filter[]>;
|
|
32
|
-
constructor(repository: Repository);
|
|
33
|
-
get sockets(): never[];
|
|
34
|
-
get urls(): string[];
|
|
35
|
-
send(message: ClientMessage): void;
|
|
36
|
-
}
|
|
37
|
-
export declare class MockAdapter extends AbstractAdapter {
|
|
38
|
-
readonly url: string;
|
|
39
|
-
readonly send: (message: ClientMessage) => void;
|
|
40
|
-
constructor(url: string, send: (message: ClientMessage) => void);
|
|
41
|
-
get sockets(): never[];
|
|
42
|
-
get urls(): string[];
|
|
43
|
-
receive: (message: RelayMessage) => void;
|
|
44
|
-
}
|
|
45
|
-
export type AdapterContext = Partial<NetContext>;
|
|
46
|
-
export declare const getAdapter: (url: string, context?: AdapterContext) => AbstractAdapter | SocketAdapter | LocalAdapter;
|
|
47
|
-
//# sourceMappingURL=adapter.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../../net/src/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,QAAQ,CAAA;AAEjC,OAAO,EAA2B,MAAM,EAAC,MAAM,gBAAgB,CAAA;AAC/D,OAAO,EAAkB,UAAU,EAAC,MAAM,iBAAiB,CAAA;AAC3D,OAAO,EACL,YAAY,EAEZ,aAAa,EAMd,MAAM,cAAc,CAAA;AACrB,OAAO,EAAC,MAAM,EAAc,MAAM,aAAa,CAAA;AAC/C,OAAO,EAAC,YAAY,EAAC,MAAM,WAAW,CAAA;AACtC,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,cAAc,CAAA;AAE5C,oBAAY,YAAY;IACtB,OAAO,YAAY;CACpB;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;CACrE,CAAA;AAED,8BAAsB,eAAgB,SAAQ,YAAY;IACxD,cAAc,EAAE,YAAY,EAAE,CAAK;IAEnC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,CAAA;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,CAAA;IAC1B,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAE3C,OAAO;CAIR;AAED,qBAAa,aAAc,SAAQ,eAAe;IACpC,QAAQ,CAAC,MAAM,EAAE,MAAM;gBAAd,MAAM,EAAE,MAAM;IAUnC,IAAI,OAAO,aAEV;IAED,IAAI,IAAI,aAEP;IAED,IAAI,CAAC,OAAO,EAAE,aAAa;CAG5B;AAED,qBAAa,YAAa,SAAQ,eAAe;;IAGnC,QAAQ,CAAC,UAAU,EAAE,UAAU;IAF3C,IAAI,wBAA8B;gBAEb,UAAU,EAAE,UAAU;IAgB3C,IAAI,OAAO,YAEV;IAED,IAAI,IAAI,aAEP;IAED,IAAI,CAAC,OAAO,EAAE,aAAa;CAiD5B;AAED,qBAAa,WAAY,SAAQ,eAAe;IAE5C,QAAQ,CAAC,GAAG,EAAE,MAAM;IACpB,QAAQ,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI;gBADtC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI;IAKjD,IAAI,OAAO,YAEV;IAED,IAAI,IAAI,aAEP;IAED,OAAO,GAAI,SAAS,YAAY,UAE/B;CACF;AAED,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;AAEhD,eAAO,MAAM,UAAU,GAAI,KAAK,MAAM,EAAE,UAAS,cAAmB,mDA0BnE,CAAA"}
|
package/dist/net/src/adapter.js
DELETED
|
@@ -1,139 +0,0 @@
|
|
|
1
|
-
import EventEmitter from "events";
|
|
2
|
-
import { call, sleep, on } from "@welshman/lib";
|
|
3
|
-
import { isRelayUrl, matchFilters } from "@welshman/util";
|
|
4
|
-
import { LOCAL_RELAY_URL } from "./repository.js";
|
|
5
|
-
import { RelayMessageType, ClientMessageType, } from "./message.js";
|
|
6
|
-
import { SocketEvent } from "./socket.js";
|
|
7
|
-
export var AdapterEvent;
|
|
8
|
-
(function (AdapterEvent) {
|
|
9
|
-
AdapterEvent["Receive"] = "receive";
|
|
10
|
-
})(AdapterEvent || (AdapterEvent = {}));
|
|
11
|
-
export class AbstractAdapter extends EventEmitter {
|
|
12
|
-
_unsubscribers = [];
|
|
13
|
-
cleanup() {
|
|
14
|
-
this.removeAllListeners();
|
|
15
|
-
this._unsubscribers.splice(0).forEach(call);
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
export class SocketAdapter extends AbstractAdapter {
|
|
19
|
-
socket;
|
|
20
|
-
constructor(socket) {
|
|
21
|
-
super();
|
|
22
|
-
this.socket = socket;
|
|
23
|
-
this._unsubscribers.push(on(socket, SocketEvent.Receive, (message, url) => {
|
|
24
|
-
this.emit(AdapterEvent.Receive, message, url);
|
|
25
|
-
}));
|
|
26
|
-
}
|
|
27
|
-
get sockets() {
|
|
28
|
-
return [this.socket];
|
|
29
|
-
}
|
|
30
|
-
get urls() {
|
|
31
|
-
return [this.socket.url];
|
|
32
|
-
}
|
|
33
|
-
send(message) {
|
|
34
|
-
this.socket.send(message);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
export class LocalAdapter extends AbstractAdapter {
|
|
38
|
-
repository;
|
|
39
|
-
subs = new Map();
|
|
40
|
-
constructor(repository) {
|
|
41
|
-
super();
|
|
42
|
-
this.repository = repository;
|
|
43
|
-
this._unsubscribers.push(on(repository, "update", ({ added }) => {
|
|
44
|
-
for (const [subId, filters] of this.subs.entries()) {
|
|
45
|
-
for (const event of added) {
|
|
46
|
-
if (matchFilters(filters, event)) {
|
|
47
|
-
this.#receive([RelayMessageType.Event, subId, event]);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
}));
|
|
52
|
-
}
|
|
53
|
-
get sockets() {
|
|
54
|
-
return [];
|
|
55
|
-
}
|
|
56
|
-
get urls() {
|
|
57
|
-
return [LOCAL_RELAY_URL];
|
|
58
|
-
}
|
|
59
|
-
send(message) {
|
|
60
|
-
switch (message[0]) {
|
|
61
|
-
case ClientMessageType.Event:
|
|
62
|
-
return this.#handleEVENT(message);
|
|
63
|
-
case ClientMessageType.Close:
|
|
64
|
-
return this.#handleCLOSE(message);
|
|
65
|
-
case ClientMessageType.Count:
|
|
66
|
-
return this.#handleCOUNT(message);
|
|
67
|
-
case ClientMessageType.Req:
|
|
68
|
-
return this.#handleREQ(message);
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
#receive(message) {
|
|
72
|
-
this.emit(AdapterEvent.Receive, message, LOCAL_RELAY_URL);
|
|
73
|
-
}
|
|
74
|
-
#handleEVENT([_, event]) {
|
|
75
|
-
this.repository.publish(event);
|
|
76
|
-
// Callers generally expect async relays
|
|
77
|
-
sleep(1).then(() => this.#receive([RelayMessageType.Ok, event.id, true, ""]));
|
|
78
|
-
}
|
|
79
|
-
#handleCLOSE([_, subId]) {
|
|
80
|
-
this.subs.delete(subId);
|
|
81
|
-
}
|
|
82
|
-
#handleCOUNT([_, subId, ...filters]) {
|
|
83
|
-
// Callers generally expect async relays
|
|
84
|
-
sleep(1).then(() => {
|
|
85
|
-
const count = this.repository.query(filters).length;
|
|
86
|
-
this.#receive([RelayMessageType.Count, subId, { count }]);
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
|
-
#handleREQ([_, subId, ...filters]) {
|
|
90
|
-
this.subs.set(subId, filters);
|
|
91
|
-
// Callers generally expect async relays
|
|
92
|
-
sleep(1).then(() => {
|
|
93
|
-
for (const event of this.repository.query(filters)) {
|
|
94
|
-
this.#receive([RelayMessageType.Event, subId, event]);
|
|
95
|
-
}
|
|
96
|
-
this.#receive([RelayMessageType.Eose, subId]);
|
|
97
|
-
});
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
export class MockAdapter extends AbstractAdapter {
|
|
101
|
-
url;
|
|
102
|
-
send;
|
|
103
|
-
constructor(url, send) {
|
|
104
|
-
super();
|
|
105
|
-
this.url = url;
|
|
106
|
-
this.send = send;
|
|
107
|
-
}
|
|
108
|
-
get sockets() {
|
|
109
|
-
return [];
|
|
110
|
-
}
|
|
111
|
-
get urls() {
|
|
112
|
-
return [this.url];
|
|
113
|
-
}
|
|
114
|
-
receive = (message) => {
|
|
115
|
-
this.emit(AdapterEvent.Receive, message, this.url);
|
|
116
|
-
};
|
|
117
|
-
}
|
|
118
|
-
export const getAdapter = (url, context = {}) => {
|
|
119
|
-
if (context.getAdapter) {
|
|
120
|
-
const adapter = context.getAdapter(url, context);
|
|
121
|
-
if (adapter) {
|
|
122
|
-
return adapter;
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
if (url === LOCAL_RELAY_URL) {
|
|
126
|
-
if (!context.repository) {
|
|
127
|
-
throw new Error("LOCAL_RELAY_URL cannot be used without context.repository");
|
|
128
|
-
}
|
|
129
|
-
return new LocalAdapter(context.repository);
|
|
130
|
-
}
|
|
131
|
-
if (isRelayUrl(url)) {
|
|
132
|
-
if (!context.pool) {
|
|
133
|
-
throw new Error("Unable to connect to relays without context.pool");
|
|
134
|
-
}
|
|
135
|
-
return new SocketAdapter(context.pool.get(url));
|
|
136
|
-
}
|
|
137
|
-
throw new Error(`Invalid relay url ${url}`);
|
|
138
|
-
};
|
|
139
|
-
//# sourceMappingURL=adapter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../../net/src/adapter.ts"],"names":[],"mappings":"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"}
|
package/dist/net/src/auth.d.ts
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import EventEmitter from "events";
|
|
2
|
-
import { SignedEvent, StampedEvent } from "@welshman/util";
|
|
3
|
-
import { Socket } from "./socket.js";
|
|
4
|
-
import { Unsubscriber } from "./util.js";
|
|
5
|
-
export declare enum AuthStatus {
|
|
6
|
-
None = "none",
|
|
7
|
-
Requested = "requested",
|
|
8
|
-
PendingSignature = "pending_signature",
|
|
9
|
-
DeniedSignature = "denied_signature",
|
|
10
|
-
PendingResponse = "pending_response",
|
|
11
|
-
Forbidden = "forbidden",
|
|
12
|
-
Ok = "ok"
|
|
13
|
-
}
|
|
14
|
-
export type AuthResult = {
|
|
15
|
-
ok: boolean;
|
|
16
|
-
status: AuthStatus;
|
|
17
|
-
reason?: string;
|
|
18
|
-
};
|
|
19
|
-
export declare enum AuthStateEvent {
|
|
20
|
-
Status = "status"
|
|
21
|
-
}
|
|
22
|
-
export type AuthStateEvents = {
|
|
23
|
-
[AuthStateEvent.Status]: (status: AuthStatus) => void;
|
|
24
|
-
};
|
|
25
|
-
type Sign = (event: StampedEvent) => Promise<SignedEvent>;
|
|
26
|
-
export declare class AuthState extends EventEmitter {
|
|
27
|
-
readonly socket: Socket;
|
|
28
|
-
challenge: string | undefined;
|
|
29
|
-
request: string | undefined;
|
|
30
|
-
details: string | undefined;
|
|
31
|
-
status: AuthStatus;
|
|
32
|
-
_unsubscribers: Unsubscriber[];
|
|
33
|
-
constructor(socket: Socket);
|
|
34
|
-
setStatus(status: AuthStatus): void;
|
|
35
|
-
doAuth(sign: Sign): Promise<void>;
|
|
36
|
-
authenticate(sign: Sign, signal: AbortSignal): Promise<AuthResult>;
|
|
37
|
-
cleanup(): void;
|
|
38
|
-
}
|
|
39
|
-
export {};
|
|
40
|
-
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../../net/src/auth.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,QAAQ,CAAA;AAEjC,OAAO,EAAC,WAAW,EAAE,YAAY,EAAC,MAAM,gBAAgB,CAAA;AAGxD,OAAO,EAAC,MAAM,EAA4B,MAAM,aAAa,CAAA;AAC7D,OAAO,EAAC,YAAY,EAAC,MAAM,WAAW,CAAA;AAEtC,oBAAY,UAAU;IACpB,IAAI,SAAS;IACb,SAAS,cAAc;IACvB,gBAAgB,sBAAsB;IACtC,eAAe,qBAAqB;IACpC,eAAe,qBAAqB;IACpC,SAAS,cAAc;IACvB,EAAE,OAAO;CACV;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,EAAE,EAAE,OAAO,CAAA;IACX,MAAM,EAAE,UAAU,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,oBAAY,cAAc;IACxB,MAAM,WAAW;CAClB;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAA;CACtD,CAAA;AAED,KAAK,IAAI,GAAG,CAAC,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC,WAAW,CAAC,CAAA;AAEzD,qBAAa,SAAU,SAAQ,YAAY;IAO7B,QAAQ,CAAC,MAAM,EAAE,MAAM;IANnC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;IAC3B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;IAC3B,MAAM,aAAkB;IACxB,cAAc,EAAE,YAAY,EAAE,CAAK;gBAEd,MAAM,EAAE,MAAM;IAgDnC,SAAS,CAAC,MAAM,EAAE,UAAU;IAKtB,MAAM,CAAC,IAAI,EAAE,IAAI;IAmCjB,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAyCxE,OAAO;CAIR"}
|
package/dist/net/src/auth.js
DELETED
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
import EventEmitter from "events";
|
|
2
|
-
import { on, poll, call, tryCatch } from "@welshman/lib";
|
|
3
|
-
import { makeRelayAuth } from "@welshman/util";
|
|
4
|
-
import { isRelayAuth, isClientAuth, isRelayOk } from "./message.js";
|
|
5
|
-
import { SocketStatus, SocketEvent } from "./socket.js";
|
|
6
|
-
export var AuthStatus;
|
|
7
|
-
(function (AuthStatus) {
|
|
8
|
-
AuthStatus["None"] = "none";
|
|
9
|
-
AuthStatus["Requested"] = "requested";
|
|
10
|
-
AuthStatus["PendingSignature"] = "pending_signature";
|
|
11
|
-
AuthStatus["DeniedSignature"] = "denied_signature";
|
|
12
|
-
AuthStatus["PendingResponse"] = "pending_response";
|
|
13
|
-
AuthStatus["Forbidden"] = "forbidden";
|
|
14
|
-
AuthStatus["Ok"] = "ok";
|
|
15
|
-
})(AuthStatus || (AuthStatus = {}));
|
|
16
|
-
export var AuthStateEvent;
|
|
17
|
-
(function (AuthStateEvent) {
|
|
18
|
-
AuthStateEvent["Status"] = "status";
|
|
19
|
-
})(AuthStateEvent || (AuthStateEvent = {}));
|
|
20
|
-
export class AuthState extends EventEmitter {
|
|
21
|
-
socket;
|
|
22
|
-
challenge;
|
|
23
|
-
request;
|
|
24
|
-
details;
|
|
25
|
-
status = AuthStatus.None;
|
|
26
|
-
_unsubscribers = [];
|
|
27
|
-
constructor(socket) {
|
|
28
|
-
super();
|
|
29
|
-
this.socket = socket;
|
|
30
|
-
this._unsubscribers.push(on(socket, SocketEvent.Receiving, (message) => {
|
|
31
|
-
if (isRelayOk(message)) {
|
|
32
|
-
const [_, id, ok, details] = message;
|
|
33
|
-
if (id === this.request) {
|
|
34
|
-
this.details = details;
|
|
35
|
-
if (ok) {
|
|
36
|
-
this.setStatus(AuthStatus.Ok);
|
|
37
|
-
}
|
|
38
|
-
else {
|
|
39
|
-
this.setStatus(AuthStatus.Forbidden);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
if (isRelayAuth(message)) {
|
|
44
|
-
const [_, challenge] = message;
|
|
45
|
-
// Sometimes relays send the same challenge multiple times, no need to
|
|
46
|
-
// respond to it twice
|
|
47
|
-
if (challenge !== this.challenge) {
|
|
48
|
-
this.challenge = challenge;
|
|
49
|
-
this.request = undefined;
|
|
50
|
-
this.details = undefined;
|
|
51
|
-
this.setStatus(AuthStatus.Requested);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
}), on(socket, SocketEvent.Sending, (message) => {
|
|
55
|
-
if (isClientAuth(message)) {
|
|
56
|
-
this.setStatus(AuthStatus.PendingResponse);
|
|
57
|
-
}
|
|
58
|
-
}), on(socket, SocketEvent.Status, (status) => {
|
|
59
|
-
if (status === SocketStatus.Closed || status === SocketStatus.Error) {
|
|
60
|
-
this.challenge = undefined;
|
|
61
|
-
this.request = undefined;
|
|
62
|
-
this.details = undefined;
|
|
63
|
-
this.setStatus(AuthStatus.None);
|
|
64
|
-
}
|
|
65
|
-
}));
|
|
66
|
-
}
|
|
67
|
-
setStatus(status) {
|
|
68
|
-
this.status = status;
|
|
69
|
-
this.emit(AuthStateEvent.Status, status);
|
|
70
|
-
}
|
|
71
|
-
async doAuth(sign) {
|
|
72
|
-
if (!this.challenge) {
|
|
73
|
-
throw new Error("Attempted to authenticate with no challenge");
|
|
74
|
-
}
|
|
75
|
-
if (this.status !== AuthStatus.Requested) {
|
|
76
|
-
throw new Error(`Attempted to authenticate when auth is already ${this.status}`);
|
|
77
|
-
}
|
|
78
|
-
const challenge = this.challenge;
|
|
79
|
-
this.setStatus(AuthStatus.PendingSignature);
|
|
80
|
-
const template = makeRelayAuth(this.socket.url, challenge);
|
|
81
|
-
const event = await tryCatch(() => sign(template), e => console.error("Failed to sign auth event", e));
|
|
82
|
-
if (event) {
|
|
83
|
-
// If a new challenge arrived while signing, our signature is stale, so
|
|
84
|
-
// abort rather than responding to an obsolete challenge
|
|
85
|
-
if (this.challenge !== challenge) {
|
|
86
|
-
return;
|
|
87
|
-
}
|
|
88
|
-
this.request = event.id;
|
|
89
|
-
this.socket.send(["AUTH", event]);
|
|
90
|
-
}
|
|
91
|
-
else {
|
|
92
|
-
this.setStatus(AuthStatus.DeniedSignature);
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
// Opens the socket and answers the relay's challenge, answering again if an earlier answer
|
|
96
|
-
// failed. Resolves once the relay accepts or refuses, or it never challenges, or `signal` aborts.
|
|
97
|
-
async authenticate(sign, signal) {
|
|
98
|
-
this.socket.attemptToOpen();
|
|
99
|
-
await poll({ signal, condition: () => this.socket.status !== SocketStatus.Opening });
|
|
100
|
-
// Some relays challenge as soon as the socket opens, and others only once a request needs it.
|
|
101
|
-
if (this.socket.status === SocketStatus.Open && !this.challenge) {
|
|
102
|
-
await poll({
|
|
103
|
-
signal: AbortSignal.any([signal, AbortSignal.timeout(3000)]),
|
|
104
|
-
condition: () => Boolean(this.challenge),
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
if (this.challenge &&
|
|
108
|
-
[AuthStatus.Forbidden, AuthStatus.DeniedSignature].includes(this.status)) {
|
|
109
|
-
this.request = undefined;
|
|
110
|
-
this.details = undefined;
|
|
111
|
-
this.setStatus(AuthStatus.Requested);
|
|
112
|
-
}
|
|
113
|
-
if (this.status === AuthStatus.Requested) {
|
|
114
|
-
this.doAuth(sign);
|
|
115
|
-
}
|
|
116
|
-
// A socket that closes mid-way drops its challenge, which ends the wait too.
|
|
117
|
-
await poll({
|
|
118
|
-
signal,
|
|
119
|
-
condition: () => !this.challenge ||
|
|
120
|
-
[AuthStatus.Ok, AuthStatus.Forbidden, AuthStatus.DeniedSignature].includes(this.status),
|
|
121
|
-
});
|
|
122
|
-
const ok = this.socket.status === SocketStatus.Open &&
|
|
123
|
-
[AuthStatus.None, AuthStatus.Ok].includes(this.status);
|
|
124
|
-
return { ok, status: this.status, reason: this.details };
|
|
125
|
-
}
|
|
126
|
-
cleanup() {
|
|
127
|
-
this.removeAllListeners();
|
|
128
|
-
this._unsubscribers.forEach(call);
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
//# sourceMappingURL=auth.js.map
|
package/dist/net/src/auth.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../../net/src/auth.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,QAAQ,CAAA;AACjC,OAAO,EAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAC,MAAM,eAAe,CAAA;AAEtD,OAAO,EAAC,aAAa,EAAC,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAC,WAAW,EAAE,YAAY,EAAE,SAAS,EAAe,MAAM,cAAc,CAAA;AAC/E,OAAO,EAAS,YAAY,EAAE,WAAW,EAAC,MAAM,aAAa,CAAA;AAG7D,MAAM,CAAN,IAAY,UAQX;AARD,WAAY,UAAU;IACpB,2BAAa,CAAA;IACb,qCAAuB,CAAA;IACvB,oDAAsC,CAAA;IACtC,kDAAoC,CAAA;IACpC,kDAAoC,CAAA;IACpC,qCAAuB,CAAA;IACvB,uBAAS,CAAA;AACX,CAAC,EARW,UAAU,KAAV,UAAU,QAQrB;AAQD,MAAM,CAAN,IAAY,cAEX;AAFD,WAAY,cAAc;IACxB,mCAAiB,CAAA;AACnB,CAAC,EAFW,cAAc,KAAd,cAAc,QAEzB;AAQD,MAAM,OAAO,SAAU,SAAQ,YAAY;IAOpB;IANrB,SAAS,CAAoB;IAC7B,OAAO,CAAoB;IAC3B,OAAO,CAAoB;IAC3B,MAAM,GAAG,UAAU,CAAC,IAAI,CAAA;IACxB,cAAc,GAAmB,EAAE,CAAA;IAEnC,YAAqB,MAAc;QACjC,KAAK,EAAE,CAAA;QADY,WAAM,GAAN,MAAM,CAAQ;QAGjC,IAAI,CAAC,cAAc,CAAC,IAAI,CACtB,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,SAAS,EAAE,CAAC,OAAqB,EAAE,EAAE;YAC1D,IAAI,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;gBACvB,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,GAAG,OAAO,CAAA;gBAEpC,IAAI,EAAE,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;oBACxB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;oBAEtB,IAAI,EAAE,EAAE,CAAC;wBACP,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;oBAC/B,CAAC;yBAAM,CAAC;wBACN,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;oBACtC,CAAC;gBACH,CAAC;YACH,CAAC;YAED,IAAI,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;gBACzB,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,OAAO,CAAA;gBAE9B,sEAAsE;gBACtE,sBAAsB;gBACtB,IAAI,SAAS,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;oBACjC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;oBAC1B,IAAI,CAAC,OAAO,GAAG,SAAS,CAAA;oBACxB,IAAI,CAAC,OAAO,GAAG,SAAS,CAAA;oBACxB,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;gBACtC,CAAC;YACH,CAAC;QACH,CAAC,CAAC,EACF,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,OAAO,EAAE,CAAC,OAAqB,EAAE,EAAE;YACxD,IAAI,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC1B,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,eAAe,CAAC,CAAA;YAC5C,CAAC;QACH,CAAC,CAAC,EACF,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,MAAoB,EAAE,EAAE;YACtD,IAAI,MAAM,KAAK,YAAY,CAAC,MAAM,IAAI,MAAM,KAAK,YAAY,CAAC,KAAK,EAAE,CAAC;gBACpE,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;gBAC1B,IAAI,CAAC,OAAO,GAAG,SAAS,CAAA;gBACxB,IAAI,CAAC,OAAO,GAAG,SAAS,CAAA;gBACxB,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;YACjC,CAAC;QACH,CAAC,CAAC,CACH,CAAA;IACH,CAAC;IAED,SAAS,CAAC,MAAkB;QAC1B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC1C,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAU;QACrB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAA;QAChE,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,CAAC,SAAS,EAAE,CAAC;YACzC,MAAM,IAAI,KAAK,CAAC,kDAAkD,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;QAClF,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAA;QAEhC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAA;QAE3C,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;QAC1D,MAAM,KAAK,GAAG,MAAM,QAAQ,CAC1B,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EACpB,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,CAAC,CAAC,CACnD,CAAA;QAED,IAAI,KAAK,EAAE,CAAC;YACV,uEAAuE;YACvE,wDAAwD;YACxD,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;gBACjC,OAAM;YACR,CAAC;YAED,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,EAAE,CAAA;YACvB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAA;QACnC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,eAAe,CAAC,CAAA;QAC5C,CAAC;IACH,CAAC;IAED,2FAA2F;IAC3F,kGAAkG;IAClG,KAAK,CAAC,YAAY,CAAC,IAAU,EAAE,MAAmB;QAChD,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAA;QAE3B,MAAM,IAAI,CAAC,EAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,YAAY,CAAC,OAAO,EAAC,CAAC,CAAA;QAElF,8FAA8F;QAC9F,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,YAAY,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YAChE,MAAM,IAAI,CAAC;gBACT,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC5D,SAAS,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;aACzC,CAAC,CAAA;QACJ,CAAC;QAED,IACE,IAAI,CAAC,SAAS;YACd,CAAC,UAAU,CAAC,SAAS,EAAE,UAAU,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EACxE,CAAC;YACD,IAAI,CAAC,OAAO,GAAG,SAAS,CAAA;YACxB,IAAI,CAAC,OAAO,GAAG,SAAS,CAAA;YACxB,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;QACtC,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,CAAC,SAAS,EAAE,CAAC;YACzC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACnB,CAAC;QAED,6EAA6E;QAC7E,MAAM,IAAI,CAAC;YACT,MAAM;YACN,SAAS,EAAE,GAAG,EAAE,CACd,CAAC,IAAI,CAAC,SAAS;gBACf,CAAC,UAAU,CAAC,EAAE,EAAE,UAAU,CAAC,SAAS,EAAE,UAAU,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;SAC1F,CAAC,CAAA;QAEF,MAAM,EAAE,GACN,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,YAAY,CAAC,IAAI;YACxC,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAExD,OAAO,EAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAC,CAAA;IACxD,CAAC;IAED,OAAO;QACL,IAAI,CAAC,kBAAkB,EAAE,CAAA;QACzB,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IACnC,CAAC;CACF"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { AbstractAdapter } from "./adapter.js";
|
|
2
|
-
import { Repository } from "./repository.js";
|
|
3
|
-
import { Pool } from "./pool.js";
|
|
4
|
-
export type AdapterFactory = (url: string, context: NetContext) => AbstractAdapter | undefined;
|
|
5
|
-
export type NetContext = {
|
|
6
|
-
pool?: Pool;
|
|
7
|
-
repository?: Repository;
|
|
8
|
-
getAdapter?: AdapterFactory;
|
|
9
|
-
};
|
|
10
|
-
//# sourceMappingURL=context.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../net/src/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,cAAc,CAAA;AAC5C,OAAO,EAAC,UAAU,EAAC,MAAM,iBAAiB,CAAA;AAC1C,OAAO,EAAC,IAAI,EAAC,MAAM,WAAW,CAAA;AAE9B,MAAM,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,KAAK,eAAe,GAAG,SAAS,CAAA;AAE9F,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,UAAU,CAAC,EAAE,cAAc,CAAA;CAC5B,CAAA"}
|
package/dist/net/src/context.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../../net/src/context.ts"],"names":[],"mappings":""}
|
package/dist/net/src/count.d.ts
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { Filter } from "@welshman/util";
|
|
2
|
-
import { AdapterContext } from "./adapter.js";
|
|
3
|
-
export declare const COUNT_TIMEOUT = 3000;
|
|
4
|
-
export declare const supportsCount: (relay: string) => boolean | undefined;
|
|
5
|
-
export type CountOneOptions = {
|
|
6
|
-
relay: string;
|
|
7
|
-
filters: Filter[];
|
|
8
|
-
context?: AdapterContext;
|
|
9
|
-
signal?: AbortSignal;
|
|
10
|
-
};
|
|
11
|
-
/**
|
|
12
|
-
* Asks one relay how many events match the given filters (NIP-45).
|
|
13
|
-
* @param options - CountOneOptions
|
|
14
|
-
* @returns the relay's count, or undefined if it does not support COUNT
|
|
15
|
-
*/
|
|
16
|
-
export declare const countOne: (options: CountOneOptions) => import("@welshman/lib").Deferred<number | undefined, number | undefined>;
|
|
17
|
-
export type CountOptions = {
|
|
18
|
-
relays: string[];
|
|
19
|
-
filters: Filter[];
|
|
20
|
-
context?: AdapterContext;
|
|
21
|
-
signal?: AbortSignal;
|
|
22
|
-
};
|
|
23
|
-
/**
|
|
24
|
-
* Asks several relays how many events match the given filters (NIP-45). Relays hold
|
|
25
|
-
* overlapping subsets of the network, so the highest answer is a lower bound.
|
|
26
|
-
* @param options - CountOptions
|
|
27
|
-
* @returns the highest count given, or undefined if no relay supports COUNT
|
|
28
|
-
*/
|
|
29
|
-
export declare const count: (options: CountOptions) => Promise<number | undefined>;
|
|
30
|
-
//# sourceMappingURL=count.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"count.d.ts","sourceRoot":"","sources":["../../../../net/src/count.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,MAAM,EAAC,MAAM,gBAAgB,CAAA;AASrC,OAAO,EAAa,cAAc,EAAe,MAAM,cAAc,CAAA;AAIrE,eAAO,MAAM,aAAa,OAAO,CAAA;AAgBjC,eAAO,MAAM,aAAa,GAAI,OAAO,MAAM,wBAA8B,CAAA;AAEzE,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,OAAO,CAAC,EAAE,cAAc,CAAA;IACxB,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,QAAQ,GAAI,SAAS,eAAe,6EA+EhD,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,OAAO,CAAC,EAAE,cAAc,CAAA;IACxB,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,KAAK,GAAU,SAAS,YAAY,gCAMhD,CAAA"}
|
package/dist/net/src/count.js
DELETED
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
import { call, defer, max, on, randomId, removeUndefined, uniq } from "@welshman/lib";
|
|
2
|
-
import { ClientMessageType, RelayReasonPrefix, isRelayClosed, isRelayCount, matchReason, } from "./message.js";
|
|
3
|
-
import { getAdapter, AdapterEvent } from "./adapter.js";
|
|
4
|
-
import { SocketEvent, SocketStatus } from "./socket.js";
|
|
5
|
-
import { AuthStatus } from "./auth.js";
|
|
6
|
-
export const COUNT_TIMEOUT = 3000;
|
|
7
|
-
// Which relays answer a COUNT, read off the wire rather than from NIP-11. A relay that
|
|
8
|
-
// refused once is not asked again.
|
|
9
|
-
const supportByRelay = new Map();
|
|
10
|
-
// A socket that is still connecting or authenticating can be slow for reasons of its own
|
|
11
|
-
const isReady = (socket) => socket.status === SocketStatus.Open &&
|
|
12
|
-
[AuthStatus.None, AuthStatus.Ok].includes(socket.auth.status);
|
|
13
|
-
// Refusals that say nothing about whether the relay can count
|
|
14
|
-
const isTransientReason = (reason) => matchReason(RelayReasonPrefix.AuthRequired, reason) ||
|
|
15
|
-
matchReason(RelayReasonPrefix.RateLimited, reason);
|
|
16
|
-
export const supportsCount = (relay) => supportByRelay.get(relay);
|
|
17
|
-
/**
|
|
18
|
-
* Asks one relay how many events match the given filters (NIP-45).
|
|
19
|
-
* @param options - CountOneOptions
|
|
20
|
-
* @returns the relay's count, or undefined if it does not support COUNT
|
|
21
|
-
*/
|
|
22
|
-
export const countOne = (options) => {
|
|
23
|
-
const deferred = defer();
|
|
24
|
-
if (options.signal?.aborted || supportByRelay.get(options.relay) === false) {
|
|
25
|
-
deferred.resolve(undefined);
|
|
26
|
-
return deferred;
|
|
27
|
-
}
|
|
28
|
-
const id = `COUNT-${randomId().slice(0, 8)}`;
|
|
29
|
-
const adapter = getAdapter(options.relay, options.context);
|
|
30
|
-
let closed = false;
|
|
31
|
-
const finish = (result) => {
|
|
32
|
-
if (closed)
|
|
33
|
-
return;
|
|
34
|
-
closed = true;
|
|
35
|
-
clearTimeout(timeoutId);
|
|
36
|
-
adapter.cleanup();
|
|
37
|
-
unsubscribers.map(call);
|
|
38
|
-
deferred.resolve(result);
|
|
39
|
-
};
|
|
40
|
-
// Only the relay's own answer says whether it supports COUNT
|
|
41
|
-
const remember = (supported, result) => {
|
|
42
|
-
supportByRelay.set(options.relay, supported);
|
|
43
|
-
finish(result);
|
|
44
|
-
};
|
|
45
|
-
const unsubscribers = [
|
|
46
|
-
on(adapter, AdapterEvent.Receive, (message) => {
|
|
47
|
-
if (isRelayCount(message) && message[1] === id) {
|
|
48
|
-
remember(true, message[2].count);
|
|
49
|
-
}
|
|
50
|
-
if (isRelayClosed(message) && message[1] === id) {
|
|
51
|
-
if (isTransientReason(message[2])) {
|
|
52
|
-
finish(undefined);
|
|
53
|
-
}
|
|
54
|
-
else {
|
|
55
|
-
remember(false);
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
}),
|
|
59
|
-
];
|
|
60
|
-
for (const socket of adapter.sockets) {
|
|
61
|
-
unsubscribers.push(on(socket, SocketEvent.Status, (status) => {
|
|
62
|
-
if (![SocketStatus.Open, SocketStatus.Opening].includes(status)) {
|
|
63
|
-
finish(undefined);
|
|
64
|
-
}
|
|
65
|
-
}));
|
|
66
|
-
}
|
|
67
|
-
if (options.signal) {
|
|
68
|
-
const signal = options.signal;
|
|
69
|
-
const abort = () => finish(undefined);
|
|
70
|
-
signal.addEventListener("abort", abort);
|
|
71
|
-
unsubscribers.push(() => signal.removeEventListener("abort", abort));
|
|
72
|
-
}
|
|
73
|
-
// A relay that does not know the verb usually says nothing, so silence is a refusal too, as
|
|
74
|
-
// long as the relay was ready to answer the whole time
|
|
75
|
-
const wasReady = adapter.sockets.every(isReady);
|
|
76
|
-
const timeoutId = setTimeout(() => {
|
|
77
|
-
if (wasReady && adapter.sockets.every(isReady)) {
|
|
78
|
-
remember(false);
|
|
79
|
-
}
|
|
80
|
-
else {
|
|
81
|
-
finish(undefined);
|
|
82
|
-
}
|
|
83
|
-
}, COUNT_TIMEOUT);
|
|
84
|
-
adapter.send([ClientMessageType.Count, id, ...options.filters]);
|
|
85
|
-
return deferred;
|
|
86
|
-
};
|
|
87
|
-
/**
|
|
88
|
-
* Asks several relays how many events match the given filters (NIP-45). Relays hold
|
|
89
|
-
* overlapping subsets of the network, so the highest answer is a lower bound.
|
|
90
|
-
* @param options - CountOptions
|
|
91
|
-
* @returns the highest count given, or undefined if no relay supports COUNT
|
|
92
|
-
*/
|
|
93
|
-
export const count = async (options) => {
|
|
94
|
-
const counts = removeUndefined(await Promise.all(uniq(options.relays).map(relay => countOne({ ...options, relay }))));
|
|
95
|
-
return counts.length > 0 ? max(counts) : undefined;
|
|
96
|
-
};
|
|
97
|
-
//# sourceMappingURL=count.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"count.js","sourceRoot":"","sources":["../../../../net/src/count.ts"],"names":[],"mappings":"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"}
|
package/dist/net/src/diff.d.ts
DELETED
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import { EventEmitter } from "events";
|
|
2
|
-
import { SignedEvent, TrustedEvent, Filter } from "@welshman/util";
|
|
3
|
-
import { AdapterContext, AbstractAdapter } from "./adapter.js";
|
|
4
|
-
export declare enum DifferenceEvent {
|
|
5
|
-
Message = "message",
|
|
6
|
-
Error = "error",
|
|
7
|
-
Close = "close"
|
|
8
|
-
}
|
|
9
|
-
export type DifferenceEvents = {
|
|
10
|
-
[DifferenceEvent.Message]: (payload: {
|
|
11
|
-
have: string[];
|
|
12
|
-
need: string[];
|
|
13
|
-
}, url: string) => void;
|
|
14
|
-
[DifferenceEvent.Error]: (error: string, url: string) => void;
|
|
15
|
-
[DifferenceEvent.Close]: () => void;
|
|
16
|
-
};
|
|
17
|
-
export type DifferenceOptions = {
|
|
18
|
-
relay: string;
|
|
19
|
-
filter: Filter;
|
|
20
|
-
events: SignedEvent[];
|
|
21
|
-
signal?: AbortSignal;
|
|
22
|
-
context?: AdapterContext;
|
|
23
|
-
};
|
|
24
|
-
export declare class Difference extends EventEmitter {
|
|
25
|
-
readonly options: DifferenceOptions;
|
|
26
|
-
have: Set<string>;
|
|
27
|
-
need: Set<string>;
|
|
28
|
-
_id: string;
|
|
29
|
-
_unsubscriber: () => void;
|
|
30
|
-
_adapter: AbstractAdapter;
|
|
31
|
-
_closed: boolean;
|
|
32
|
-
_reconcileQueue: Promise<void>;
|
|
33
|
-
constructor(options: DifferenceOptions);
|
|
34
|
-
close(): void;
|
|
35
|
-
}
|
|
36
|
-
export type DiffOptions = {
|
|
37
|
-
relays: string[];
|
|
38
|
-
filters: Filter[];
|
|
39
|
-
events: SignedEvent[];
|
|
40
|
-
signal?: AbortSignal;
|
|
41
|
-
context?: AdapterContext;
|
|
42
|
-
};
|
|
43
|
-
export type DiffItem = {
|
|
44
|
-
relay: string;
|
|
45
|
-
have: Set<string>;
|
|
46
|
-
need: Set<string>;
|
|
47
|
-
};
|
|
48
|
-
export declare const diff: ({ relays, filters, ...options }: DiffOptions) => Promise<{
|
|
49
|
-
relay: string;
|
|
50
|
-
have: string[];
|
|
51
|
-
need: string[];
|
|
52
|
-
}[]>;
|
|
53
|
-
export type PullOptions = DiffOptions;
|
|
54
|
-
export declare const pull: ({ context, ...options }: PullOptions) => Promise<TrustedEvent[]>;
|
|
55
|
-
export type PushOptions = DiffOptions;
|
|
56
|
-
export declare const push: ({ context, events, ...options }: PushOptions) => Promise<void>;
|
|
57
|
-
//# sourceMappingURL=diff.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../../../net/src/diff.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,QAAQ,CAAA;AAEnC,OAAO,EAAC,WAAW,EAAE,YAAY,EAAE,MAAM,EAAC,MAAM,gBAAgB,CAAA;AAQhE,OAAO,EAAa,cAAc,EAAE,eAAe,EAAe,MAAM,cAAc,CAAA;AAKtF,oBAAY,eAAe;IACzB,OAAO,YAAY;IACnB,KAAK,UAAU;IACf,KAAK,UAAU;CAChB;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE;QAAC,IAAI,EAAE,MAAM,EAAE,CAAC;QAAC,IAAI,EAAE,MAAM,EAAE,CAAA;KAAC,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;IAC3F,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;IAC7D,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,MAAM,IAAI,CAAA;CACpC,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,WAAW,EAAE,CAAA;IACrB,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,OAAO,CAAC,EAAE,cAAc,CAAA;CACzB,CAAA;AAED,qBAAa,UAAW,SAAQ,YAAY;IAU9B,QAAQ,CAAC,OAAO,EAAE,iBAAiB;IAT/C,IAAI,cAAoB;IACxB,IAAI,cAAoB;IAExB,GAAG,SAAkC;IACrC,aAAa,EAAE,MAAM,IAAI,CAAA;IACzB,QAAQ,EAAE,eAAe,CAAA;IACzB,OAAO,UAAQ;IACf,eAAe,EAAE,OAAO,CAAC,IAAI,CAAC,CAAoB;gBAE7B,OAAO,EAAE,iBAAiB;IAoE/C,KAAK;CAUN;AAID,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,MAAM,EAAE,WAAW,EAAE,CAAA;IACrB,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,OAAO,CAAC,EAAE,cAAc,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACjB,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CAClB,CAAA;AAED,eAAO,MAAM,IAAI,GAAU,iCAA+B,WAAW;;;;IA0CpE,CAAA;AAID,MAAM,MAAM,WAAW,GAAG,WAAW,CAAA;AAMrC,eAAO,MAAM,IAAI,GAAU,yBAAuB,WAAW,4BAmD5D,CAAA;AAID,MAAM,MAAM,WAAW,GAAG,WAAW,CAAA;AAErC,eAAO,MAAM,IAAI,GAAU,iCAA+B,WAAW,kBAkBpE,CAAA"}
|