@welshman/store 0.14.0-pre3 → 0.14.0-pre5
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 +39 -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/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 -96
- package/dist/net/src/message.d.ts.map +0 -1
- package/dist/net/src/message.js +0 -76
- package/dist/net/src/message.js.map +0 -1
- package/dist/net/src/multiplex.d.ts +0 -13
- package/dist/net/src/multiplex.d.ts.map +0 -1
- package/dist/net/src/multiplex.js +0 -210
- 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 -37
- package/dist/net/src/request.d.ts.map +0 -1
- package/dist/net/src/request.js +0 -206
- 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
package/dist/net/src/diff.js
DELETED
|
@@ -1,169 +0,0 @@
|
|
|
1
|
-
import { EventEmitter } from "events";
|
|
2
|
-
import { on, randomId, groupBy, pushToMapKey, inc, flatten, chunk, initArray } from "@welshman/lib";
|
|
3
|
-
import { isRelayNegErr, isRelayNegMsg, RelayMessageType, ClientMessageType, } from "./message.js";
|
|
4
|
-
import { getAdapter, AdapterEvent } from "./adapter.js";
|
|
5
|
-
import { Negentropy, NegentropyStorageVector } from "./negentropy.js";
|
|
6
|
-
import { requestOne } from "./request.js";
|
|
7
|
-
import { publish } from "./publish.js";
|
|
8
|
-
export var DifferenceEvent;
|
|
9
|
-
(function (DifferenceEvent) {
|
|
10
|
-
DifferenceEvent["Message"] = "message";
|
|
11
|
-
DifferenceEvent["Error"] = "error";
|
|
12
|
-
DifferenceEvent["Close"] = "close";
|
|
13
|
-
})(DifferenceEvent || (DifferenceEvent = {}));
|
|
14
|
-
export class Difference extends EventEmitter {
|
|
15
|
-
options;
|
|
16
|
-
have = new Set();
|
|
17
|
-
need = new Set();
|
|
18
|
-
_id = `NEG-${randomId().slice(0, 8)}`;
|
|
19
|
-
_unsubscriber;
|
|
20
|
-
_adapter;
|
|
21
|
-
_closed = false;
|
|
22
|
-
_reconcileQueue = Promise.resolve();
|
|
23
|
-
constructor(options) {
|
|
24
|
-
super();
|
|
25
|
-
this.options = options;
|
|
26
|
-
// Listen for abort
|
|
27
|
-
options.signal?.addEventListener("abort", () => this.close());
|
|
28
|
-
// Set up our adapter
|
|
29
|
-
this._adapter = getAdapter(this.options.relay, this.options.context);
|
|
30
|
-
// Set up negentropy
|
|
31
|
-
const storage = new NegentropyStorageVector();
|
|
32
|
-
const neg = new Negentropy(storage, 50_000);
|
|
33
|
-
for (const event of this.options.events) {
|
|
34
|
-
storage.insert(event.created_at, event.id);
|
|
35
|
-
}
|
|
36
|
-
storage.seal();
|
|
37
|
-
// Add listeners
|
|
38
|
-
this._unsubscriber = on(this._adapter, AdapterEvent.Receive, async (message, url) => {
|
|
39
|
-
if (isRelayNegMsg(message)) {
|
|
40
|
-
const [_, negid, msg] = message;
|
|
41
|
-
if (negid === this._id) {
|
|
42
|
-
// Serialize reconcile calls through a promise queue so that concurrent
|
|
43
|
-
// messages don't corrupt negentropy's internal timestamp state.
|
|
44
|
-
await (this._reconcileQueue = this._reconcileQueue.then(async () => {
|
|
45
|
-
const [newMsg, have, need] = await neg.reconcile(msg);
|
|
46
|
-
for (const id of have) {
|
|
47
|
-
this.have.add(id);
|
|
48
|
-
}
|
|
49
|
-
for (const id of need) {
|
|
50
|
-
this.need.add(id);
|
|
51
|
-
}
|
|
52
|
-
this.emit(DifferenceEvent.Message, { have, need }, url);
|
|
53
|
-
if (newMsg) {
|
|
54
|
-
this._adapter.send([RelayMessageType.NegMsg, this._id, newMsg]);
|
|
55
|
-
}
|
|
56
|
-
else {
|
|
57
|
-
this.close();
|
|
58
|
-
}
|
|
59
|
-
}));
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
if (isRelayNegErr(message)) {
|
|
63
|
-
const [_, negid, msg] = message;
|
|
64
|
-
if (negid === this._id) {
|
|
65
|
-
this.emit(DifferenceEvent.Error, msg, url);
|
|
66
|
-
this.close();
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
});
|
|
70
|
-
neg.initiate().then((msg) => {
|
|
71
|
-
this._adapter.send([ClientMessageType.NegOpen, this._id, this.options.filter, msg]);
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
close() {
|
|
75
|
-
if (this._closed)
|
|
76
|
-
return;
|
|
77
|
-
this._adapter.send([ClientMessageType.NegClose, this._id]);
|
|
78
|
-
this.emit(DifferenceEvent.Close);
|
|
79
|
-
this.removeAllListeners();
|
|
80
|
-
this._adapter.cleanup();
|
|
81
|
-
this._unsubscriber();
|
|
82
|
-
this._closed = true;
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
export const diff = async ({ relays, filters, ...options }) => {
|
|
86
|
-
const diffs = flatten(await Promise.all(relays.flatMap(async (relay) => {
|
|
87
|
-
return await Promise.all(filters.map(async (filter) => new Promise((resolve, reject) => {
|
|
88
|
-
const diff = new Difference({ relay, filter, ...options });
|
|
89
|
-
const timeoutId = setTimeout(() => diff.close(), 30_000);
|
|
90
|
-
diff.on(DifferenceEvent.Close, () => {
|
|
91
|
-
clearTimeout(timeoutId);
|
|
92
|
-
resolve({ relay, have: diff.have, need: diff.need });
|
|
93
|
-
});
|
|
94
|
-
diff.on(DifferenceEvent.Error, (message, url) => {
|
|
95
|
-
// Pass, to suppress event emitter's default error propagation
|
|
96
|
-
});
|
|
97
|
-
})));
|
|
98
|
-
})));
|
|
99
|
-
return Array.from(groupBy(diff => diff.relay, diffs).entries()).map(([relay, diffs]) => {
|
|
100
|
-
const have = new Set();
|
|
101
|
-
const need = new Set();
|
|
102
|
-
for (const diff of diffs) {
|
|
103
|
-
for (const id of diff.have) {
|
|
104
|
-
have.add(id);
|
|
105
|
-
}
|
|
106
|
-
for (const id of diff.need) {
|
|
107
|
-
need.add(id);
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
return { relay, have: Array.from(have), need: Array.from(need) };
|
|
111
|
-
});
|
|
112
|
-
};
|
|
113
|
-
const PULL_CHUNK_SIZE = 100;
|
|
114
|
-
const PULL_CONCURRENCY = 2;
|
|
115
|
-
export const pull = async ({ context, ...options }) => {
|
|
116
|
-
const countById = new Map();
|
|
117
|
-
const idsByRelay = new Map();
|
|
118
|
-
for (const { relay, need } of await diff({ context, ...options })) {
|
|
119
|
-
for (const id of need) {
|
|
120
|
-
const count = countById.get(id) || 0;
|
|
121
|
-
// Reduce, but don't completely eliminate duplicates, just in case a relay
|
|
122
|
-
// won't give us what we ask for.
|
|
123
|
-
if (count < 2) {
|
|
124
|
-
pushToMapKey(idsByRelay, relay, id);
|
|
125
|
-
countById.set(id, inc(count));
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
const seen = new Set();
|
|
130
|
-
const result = [];
|
|
131
|
-
const fetchChunk = (relay, ids) => requestOne({
|
|
132
|
-
relay,
|
|
133
|
-
context,
|
|
134
|
-
filters: [{ ids }],
|
|
135
|
-
signal: options.signal,
|
|
136
|
-
autoClose: true,
|
|
137
|
-
onEvent: event => {
|
|
138
|
-
if (!seen.has(event.id)) {
|
|
139
|
-
seen.add(event.id);
|
|
140
|
-
result.push(event);
|
|
141
|
-
}
|
|
142
|
-
},
|
|
143
|
-
});
|
|
144
|
-
await Promise.all(Array.from(idsByRelay.entries()).map(async ([relay, allIds]) => {
|
|
145
|
-
const pending = chunk(PULL_CHUNK_SIZE, allIds).reverse();
|
|
146
|
-
const workerCount = Math.min(PULL_CONCURRENCY, pending.length);
|
|
147
|
-
await Promise.all(initArray(workerCount, async () => {
|
|
148
|
-
for (let ids = pending.shift(); ids; ids = pending.shift()) {
|
|
149
|
-
await fetchChunk(relay, ids);
|
|
150
|
-
}
|
|
151
|
-
}));
|
|
152
|
-
}));
|
|
153
|
-
return result;
|
|
154
|
-
};
|
|
155
|
-
export const push = async ({ context, events, ...options }) => {
|
|
156
|
-
const relaysById = new Map();
|
|
157
|
-
for (const { relay, have } of await diff({ context, events, ...options })) {
|
|
158
|
-
for (const id of have) {
|
|
159
|
-
pushToMapKey(relaysById, id, relay);
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
await Promise.all(events.map(async (event) => {
|
|
163
|
-
const relays = relaysById.get(event.id);
|
|
164
|
-
if (relays) {
|
|
165
|
-
await publish({ event, relays, context, signal: options.signal });
|
|
166
|
-
}
|
|
167
|
-
}));
|
|
168
|
-
};
|
|
169
|
-
//# sourceMappingURL=diff.js.map
|
package/dist/net/src/diff.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"diff.js","sourceRoot":"","sources":["../../../../net/src/diff.ts"],"names":[],"mappings":"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"}
|
package/dist/net/src/index.d.ts
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
export * from "./adapter.js";
|
|
2
|
-
export * from "./auth.js";
|
|
3
|
-
export * from "./context.js";
|
|
4
|
-
export * from "./count.js";
|
|
5
|
-
export * from "./diff.js";
|
|
6
|
-
export * from "./message.js";
|
|
7
|
-
export * from "./multiplex.js";
|
|
8
|
-
export * from "./negentropy.js";
|
|
9
|
-
export * from "./policy.js";
|
|
10
|
-
export * from "./pool.js";
|
|
11
|
-
export * from "./publish.js";
|
|
12
|
-
export * from "./socket.js";
|
|
13
|
-
export * from "./repository.js";
|
|
14
|
-
export * from "./request.js";
|
|
15
|
-
export * from "./tracker.js";
|
|
16
|
-
export * from "./wrapManager.js";
|
|
17
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../net/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA"}
|
package/dist/net/src/index.js
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
export * from "./adapter.js";
|
|
2
|
-
export * from "./auth.js";
|
|
3
|
-
export * from "./context.js";
|
|
4
|
-
export * from "./count.js";
|
|
5
|
-
export * from "./diff.js";
|
|
6
|
-
export * from "./message.js";
|
|
7
|
-
export * from "./multiplex.js";
|
|
8
|
-
export * from "./negentropy.js";
|
|
9
|
-
export * from "./policy.js";
|
|
10
|
-
export * from "./pool.js";
|
|
11
|
-
export * from "./publish.js";
|
|
12
|
-
export * from "./socket.js";
|
|
13
|
-
export * from "./repository.js";
|
|
14
|
-
export * from "./request.js";
|
|
15
|
-
export * from "./tracker.js";
|
|
16
|
-
export * from "./wrapManager.js";
|
|
17
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../net/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA"}
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
import type { SignedEvent, Filter } from "@welshman/util";
|
|
2
|
-
export declare enum RelayMessageType {
|
|
3
|
-
Notice = "NOTICE",
|
|
4
|
-
Notify = "NOTIFY",
|
|
5
|
-
Auth = "AUTH",
|
|
6
|
-
Closed = "CLOSED",
|
|
7
|
-
Count = "COUNT",
|
|
8
|
-
Eose = "EOSE",
|
|
9
|
-
Event = "EVENT",
|
|
10
|
-
NegMsg = "NEG-MSG",
|
|
11
|
-
NegErr = "NEG-ERR",
|
|
12
|
-
Ok = "OK"
|
|
13
|
-
}
|
|
14
|
-
export type RelayMessage = any[];
|
|
15
|
-
export type RelayNoticePayload = [string];
|
|
16
|
-
export type RelayNotifyPayload = [string];
|
|
17
|
-
export type RelayAuthPayload = [string];
|
|
18
|
-
export type RelayClosedPayload = [string, string];
|
|
19
|
-
export type RelayCountPayload = [string, {
|
|
20
|
-
count: number;
|
|
21
|
-
approximate?: boolean;
|
|
22
|
-
}];
|
|
23
|
-
export type RelayEosePayload = [string];
|
|
24
|
-
export type RelayEventPayload = [string, SignedEvent];
|
|
25
|
-
export type RelayNegErrPayload = [string, string];
|
|
26
|
-
export type RelayNegMsgPayload = [string, string];
|
|
27
|
-
export type RelayOkPayload = [string, boolean, string];
|
|
28
|
-
export type RelayNotice = [RelayMessageType.Notice, ...RelayNoticePayload];
|
|
29
|
-
export type RelayNotify = [RelayMessageType.Notify, ...RelayNotifyPayload];
|
|
30
|
-
export type RelayAuth = [RelayMessageType.Auth, ...RelayAuthPayload];
|
|
31
|
-
export type RelayClosed = [RelayMessageType.Closed, ...RelayClosedPayload];
|
|
32
|
-
export type RelayCount = [RelayMessageType.Count, ...RelayCountPayload];
|
|
33
|
-
export type RelayEose = [RelayMessageType.Eose, ...RelayEosePayload];
|
|
34
|
-
export type RelayEvent = [RelayMessageType.Event, ...RelayEventPayload];
|
|
35
|
-
export type RelayNegErr = [RelayMessageType.NegErr, ...RelayNegErrPayload];
|
|
36
|
-
export type RelayNegMsg = [RelayMessageType.NegMsg, ...RelayNegMsgPayload];
|
|
37
|
-
export type RelayOk = [RelayMessageType.Ok, ...RelayOkPayload];
|
|
38
|
-
export declare const isRelayNotice: (m: RelayMessage) => m is RelayNotice;
|
|
39
|
-
export declare const isRelayNotify: (m: RelayMessage) => m is RelayNotify;
|
|
40
|
-
export declare const isRelayAuth: (m: RelayMessage) => m is RelayAuth;
|
|
41
|
-
export declare const isRelayClosed: (m: RelayMessage) => m is RelayClosed;
|
|
42
|
-
export declare const isRelayCount: (m: RelayMessage) => m is RelayCount;
|
|
43
|
-
export declare const isRelayEose: (m: RelayMessage) => m is RelayEose;
|
|
44
|
-
export declare const isRelayEvent: (m: RelayMessage) => m is RelayEvent;
|
|
45
|
-
export declare const isRelayNegErr: (m: RelayMessage) => m is RelayNegErr;
|
|
46
|
-
export declare const isRelayNegMsg: (m: RelayMessage) => m is RelayNegMsg;
|
|
47
|
-
export declare const isRelayOk: (m: RelayMessage) => m is RelayOk;
|
|
48
|
-
export declare enum RelayReasonPrefix {
|
|
49
|
-
AuthRequired = "auth-required",
|
|
50
|
-
Blocked = "blocked",
|
|
51
|
-
Invalid = "invalid",
|
|
52
|
-
Mute = "mute",
|
|
53
|
-
Pow = "pow",
|
|
54
|
-
RateLimited = "rate-limited",
|
|
55
|
-
Restricted = "restricted",
|
|
56
|
-
Unsupported = "unsupported"
|
|
57
|
-
}
|
|
58
|
-
export declare const matchReason: (prefix: RelayReasonPrefix, reason: string) => boolean;
|
|
59
|
-
export declare const isTerminalReason: (reason?: string) => boolean;
|
|
60
|
-
export declare enum ClientMessageType {
|
|
61
|
-
Auth = "AUTH",
|
|
62
|
-
Close = "CLOSE",
|
|
63
|
-
Count = "COUNT",
|
|
64
|
-
Event = "EVENT",
|
|
65
|
-
NegClose = "NEG-CLOSE",
|
|
66
|
-
NegOpen = "NEG-OPEN",
|
|
67
|
-
Req = "REQ"
|
|
68
|
-
}
|
|
69
|
-
export type ClientMessage = any[];
|
|
70
|
-
export type ClientAuthPayload = [string];
|
|
71
|
-
export type ClientClosePayload = [string];
|
|
72
|
-
export type ClientCountPayload = [string, ...Filter[]];
|
|
73
|
-
export type ClientEventPayload = [SignedEvent];
|
|
74
|
-
export type ClientNegClosePayload = [string];
|
|
75
|
-
export type ClientNegOpenPayload = [string, Filter, string];
|
|
76
|
-
export type ClientReqPayload = [string, ...Filter[]];
|
|
77
|
-
export type ClientAuth = [ClientMessageType.Auth, ...ClientAuthPayload];
|
|
78
|
-
export type ClientClose = [ClientMessageType.Close, ...ClientClosePayload];
|
|
79
|
-
export type ClientCount = [ClientMessageType.Count, ...ClientCountPayload];
|
|
80
|
-
export type ClientEvent = [ClientMessageType.Event, ...ClientEventPayload];
|
|
81
|
-
export type ClientNegClose = [ClientMessageType.NegClose, ...ClientNegClosePayload];
|
|
82
|
-
export type ClientNegOpen = [ClientMessageType.NegOpen, ...ClientNegOpenPayload];
|
|
83
|
-
export type ClientReq = [ClientMessageType.Req, ...ClientReqPayload];
|
|
84
|
-
export declare const isClientAuth: (m: ClientMessage) => m is ClientAuth;
|
|
85
|
-
export declare const isClientClose: (m: ClientMessage) => m is ClientClose;
|
|
86
|
-
export declare const isClientCount: (m: ClientMessage) => m is ClientCount;
|
|
87
|
-
export declare const isClientEvent: (m: ClientMessage) => m is ClientEvent;
|
|
88
|
-
export declare const isClientNegClose: (m: ClientMessage) => m is ClientNegClose;
|
|
89
|
-
export declare const isClientNegOpen: (m: ClientMessage) => m is ClientNegOpen;
|
|
90
|
-
export declare const isClientReq: (m: ClientMessage) => m is ClientReq;
|
|
91
|
-
export declare const MessagePriority: unique symbol;
|
|
92
|
-
export declare const DEFAULT_PRIORITY = 0;
|
|
93
|
-
export declare const setPriority: <T extends ClientMessage>(message: T, priority?: number) => T;
|
|
94
|
-
export declare const getPriority: (message: ClientMessage) => number;
|
|
95
|
-
export declare const copyPriority: <T extends ClientMessage>(message: T, source: ClientMessage) => T;
|
|
96
|
-
//# sourceMappingURL=message.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../../../net/src/message.ts"],"names":[],"mappings":"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"}
|
package/dist/net/src/message.js
DELETED
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
// relay -> client
|
|
2
|
-
export var RelayMessageType;
|
|
3
|
-
(function (RelayMessageType) {
|
|
4
|
-
RelayMessageType["Notice"] = "NOTICE";
|
|
5
|
-
RelayMessageType["Notify"] = "NOTIFY";
|
|
6
|
-
RelayMessageType["Auth"] = "AUTH";
|
|
7
|
-
RelayMessageType["Closed"] = "CLOSED";
|
|
8
|
-
RelayMessageType["Count"] = "COUNT";
|
|
9
|
-
RelayMessageType["Eose"] = "EOSE";
|
|
10
|
-
RelayMessageType["Event"] = "EVENT";
|
|
11
|
-
RelayMessageType["NegMsg"] = "NEG-MSG";
|
|
12
|
-
RelayMessageType["NegErr"] = "NEG-ERR";
|
|
13
|
-
RelayMessageType["Ok"] = "OK";
|
|
14
|
-
})(RelayMessageType || (RelayMessageType = {}));
|
|
15
|
-
export const isRelayNotice = (m) => m[0] === RelayMessageType.Notice;
|
|
16
|
-
export const isRelayNotify = (m) => m[0] === RelayMessageType.Notify;
|
|
17
|
-
export const isRelayAuth = (m) => m[0] === RelayMessageType.Auth;
|
|
18
|
-
export const isRelayClosed = (m) => m[0] === RelayMessageType.Closed;
|
|
19
|
-
export const isRelayCount = (m) => m[0] === RelayMessageType.Count;
|
|
20
|
-
export const isRelayEose = (m) => m[0] === RelayMessageType.Eose;
|
|
21
|
-
export const isRelayEvent = (m) => m[0] === RelayMessageType.Event;
|
|
22
|
-
export const isRelayNegErr = (m) => m[0] === RelayMessageType.NegErr;
|
|
23
|
-
export const isRelayNegMsg = (m) => m[0] === RelayMessageType.NegMsg;
|
|
24
|
-
export const isRelayOk = (m) => m[0] === RelayMessageType.Ok;
|
|
25
|
-
export var RelayReasonPrefix;
|
|
26
|
-
(function (RelayReasonPrefix) {
|
|
27
|
-
RelayReasonPrefix["AuthRequired"] = "auth-required";
|
|
28
|
-
RelayReasonPrefix["Blocked"] = "blocked";
|
|
29
|
-
RelayReasonPrefix["Invalid"] = "invalid";
|
|
30
|
-
RelayReasonPrefix["Mute"] = "mute";
|
|
31
|
-
RelayReasonPrefix["Pow"] = "pow";
|
|
32
|
-
RelayReasonPrefix["RateLimited"] = "rate-limited";
|
|
33
|
-
RelayReasonPrefix["Restricted"] = "restricted";
|
|
34
|
-
RelayReasonPrefix["Unsupported"] = "unsupported";
|
|
35
|
-
})(RelayReasonPrefix || (RelayReasonPrefix = {}));
|
|
36
|
-
export const matchReason = (prefix, reason) => new RegExp(`(^|\\s)${prefix}:`, "i").test(reason);
|
|
37
|
-
export const isTerminalReason = (reason = "") => [
|
|
38
|
-
RelayReasonPrefix.AuthRequired,
|
|
39
|
-
RelayReasonPrefix.Blocked,
|
|
40
|
-
RelayReasonPrefix.Invalid,
|
|
41
|
-
RelayReasonPrefix.Mute,
|
|
42
|
-
RelayReasonPrefix.Pow,
|
|
43
|
-
RelayReasonPrefix.Restricted,
|
|
44
|
-
RelayReasonPrefix.Unsupported,
|
|
45
|
-
].some(prefix => matchReason(prefix, reason));
|
|
46
|
-
// client -> relay
|
|
47
|
-
export var ClientMessageType;
|
|
48
|
-
(function (ClientMessageType) {
|
|
49
|
-
ClientMessageType["Auth"] = "AUTH";
|
|
50
|
-
ClientMessageType["Close"] = "CLOSE";
|
|
51
|
-
ClientMessageType["Count"] = "COUNT";
|
|
52
|
-
ClientMessageType["Event"] = "EVENT";
|
|
53
|
-
ClientMessageType["NegClose"] = "NEG-CLOSE";
|
|
54
|
-
ClientMessageType["NegOpen"] = "NEG-OPEN";
|
|
55
|
-
ClientMessageType["Req"] = "REQ";
|
|
56
|
-
})(ClientMessageType || (ClientMessageType = {}));
|
|
57
|
-
export const isClientAuth = (m) => m[0] === ClientMessageType.Auth;
|
|
58
|
-
export const isClientClose = (m) => m[0] === ClientMessageType.Close;
|
|
59
|
-
export const isClientCount = (m) => m[0] === ClientMessageType.Count;
|
|
60
|
-
export const isClientEvent = (m) => m[0] === ClientMessageType.Event;
|
|
61
|
-
export const isClientNegClose = (m) => m[0] === ClientMessageType.NegClose;
|
|
62
|
-
export const isClientNegOpen = (m) => m[0] === ClientMessageType.NegOpen;
|
|
63
|
-
export const isClientReq = (m) => m[0] === ClientMessageType.Req;
|
|
64
|
-
// priority
|
|
65
|
-
export const MessagePriority = Symbol("MessagePriority");
|
|
66
|
-
export const DEFAULT_PRIORITY = 0;
|
|
67
|
-
export const setPriority = (message, priority = DEFAULT_PRIORITY) => {
|
|
68
|
-
if (priority !== DEFAULT_PRIORITY) {
|
|
69
|
-
;
|
|
70
|
-
message[MessagePriority] = priority;
|
|
71
|
-
}
|
|
72
|
-
return message;
|
|
73
|
-
};
|
|
74
|
-
export const getPriority = (message) => message[MessagePriority] ?? DEFAULT_PRIORITY;
|
|
75
|
-
export const copyPriority = (message, source) => setPriority(message, getPriority(source));
|
|
76
|
-
//# sourceMappingURL=message.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"message.js","sourceRoot":"","sources":["../../../../net/src/message.ts"],"names":[],"mappings":"AAEA,kBAAkB;AAElB,MAAM,CAAN,IAAY,gBAWX;AAXD,WAAY,gBAAgB;IAC1B,qCAAiB,CAAA;IACjB,qCAAiB,CAAA;IACjB,iCAAa,CAAA;IACb,qCAAiB,CAAA;IACjB,mCAAe,CAAA;IACf,iCAAa,CAAA;IACb,mCAAe,CAAA;IACf,sCAAkB,CAAA;IAClB,sCAAkB,CAAA;IAClB,6BAAS,CAAA;AACX,CAAC,EAXW,gBAAgB,KAAhB,gBAAgB,QAW3B;AA4CD,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAe,EAAoB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,gBAAgB,CAAC,MAAM,CAAA;AAEpG,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAe,EAAoB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,gBAAgB,CAAC,MAAM,CAAA;AAEpG,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAe,EAAkB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,gBAAgB,CAAC,IAAI,CAAA;AAE9F,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAe,EAAoB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,gBAAgB,CAAC,MAAM,CAAA;AAEpG,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAe,EAAmB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,gBAAgB,CAAC,KAAK,CAAA;AAEjG,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAe,EAAkB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,gBAAgB,CAAC,IAAI,CAAA;AAE9F,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAe,EAAmB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,gBAAgB,CAAC,KAAK,CAAA;AAEjG,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAe,EAAoB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,gBAAgB,CAAC,MAAM,CAAA;AAEpG,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAe,EAAoB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,gBAAgB,CAAC,MAAM,CAAA;AAEpG,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAe,EAAgB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,gBAAgB,CAAC,EAAE,CAAA;AAExF,MAAM,CAAN,IAAY,iBASX;AATD,WAAY,iBAAiB;IAC3B,mDAA8B,CAAA;IAC9B,wCAAmB,CAAA;IACnB,wCAAmB,CAAA;IACnB,kCAAa,CAAA;IACb,gCAAW,CAAA;IACX,iDAA4B,CAAA;IAC5B,8CAAyB,CAAA;IACzB,gDAA2B,CAAA;AAC7B,CAAC,EATW,iBAAiB,KAAjB,iBAAiB,QAS5B;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,MAAyB,EAAE,MAAc,EAAE,EAAE,CACvE,IAAI,MAAM,CAAC,UAAU,MAAM,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;AAEnD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,MAAM,GAAG,EAAE,EAAE,EAAE,CAC9C;IACE,iBAAiB,CAAC,YAAY;IAC9B,iBAAiB,CAAC,OAAO;IACzB,iBAAiB,CAAC,OAAO;IACzB,iBAAiB,CAAC,IAAI;IACtB,iBAAiB,CAAC,GAAG;IACrB,iBAAiB,CAAC,UAAU;IAC5B,iBAAiB,CAAC,WAAW;CAC9B,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;AAE/C,kBAAkB;AAElB,MAAM,CAAN,IAAY,iBAQX;AARD,WAAY,iBAAiB;IAC3B,kCAAa,CAAA;IACb,oCAAe,CAAA;IACf,oCAAe,CAAA;IACf,oCAAe,CAAA;IACf,2CAAsB,CAAA;IACtB,yCAAoB,CAAA;IACpB,gCAAW,CAAA;AACb,CAAC,EARW,iBAAiB,KAAjB,iBAAiB,QAQ5B;AAgCD,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAgB,EAAmB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,iBAAiB,CAAC,IAAI,CAAA;AAElG,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAgB,EAAoB,EAAE,CAClE,CAAC,CAAC,CAAC,CAAC,KAAK,iBAAiB,CAAC,KAAK,CAAA;AAElC,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAgB,EAAoB,EAAE,CAClE,CAAC,CAAC,CAAC,CAAC,KAAK,iBAAiB,CAAC,KAAK,CAAA;AAElC,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAgB,EAAoB,EAAE,CAClE,CAAC,CAAC,CAAC,CAAC,KAAK,iBAAiB,CAAC,KAAK,CAAA;AAElC,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAgB,EAAuB,EAAE,CACxE,CAAC,CAAC,CAAC,CAAC,KAAK,iBAAiB,CAAC,QAAQ,CAAA;AAErC,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAgB,EAAsB,EAAE,CACtE,CAAC,CAAC,CAAC,CAAC,KAAK,iBAAiB,CAAC,OAAO,CAAA;AAEpC,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAgB,EAAkB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,iBAAiB,CAAC,GAAG,CAAA;AAE/F,WAAW;AAEX,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAA;AAExD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAA;AAEjC,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,OAAU,EACV,QAAQ,GAAG,gBAAgB,EACxB,EAAE;IACL,IAAI,QAAQ,KAAK,gBAAgB,EAAE,CAAC;QAClC,CAAC;QAAC,OAAe,CAAC,eAAe,CAAC,GAAG,QAAQ,CAAA;IAC/C,CAAC;IAED,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,OAAsB,EAAU,EAAE,CAC3D,OAAe,CAAC,eAAe,CAAC,IAAI,gBAAgB,CAAA;AAEvD,MAAM,CAAC,MAAM,YAAY,GAAG,CAA0B,OAAU,EAAE,MAAqB,EAAK,EAAE,CAC5F,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAA"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { Socket } from "./socket.js";
|
|
2
|
-
export declare const MULTIPLEX_MAX_FILTERS = 10;
|
|
3
|
-
/**
|
|
4
|
-
* Sends subscriptions that wait in a socket's queue together as one merged REQ, so requests made
|
|
5
|
-
* at the same time use one of the relay's subscriptions rather than one each, and hands the
|
|
6
|
-
* relay's answers back out under each subscription's own id. Merged REQs are pushed onto the
|
|
7
|
-
* queue rather than sent, so the auth buffer keeps the original REQs to replay. Leave it out of a
|
|
8
|
-
* pool's socket policies to send every subscription as it was asked for.
|
|
9
|
-
* @param socket - a Socket object
|
|
10
|
-
* @return a cleanup function
|
|
11
|
-
*/
|
|
12
|
-
export declare const socketPolicyMultiplex: (socket: Socket) => () => void;
|
|
13
|
-
//# sourceMappingURL=multiplex.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"multiplex.d.ts","sourceRoot":"","sources":["../../../../net/src/multiplex.ts"],"names":[],"mappings":"AAeA,OAAO,EAAC,MAAM,EAAc,MAAM,aAAa,CAAA;AAI/C,eAAO,MAAM,qBAAqB,KAAK,CAAA;AAuBvC;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB,GAAI,QAAQ,MAAM,eA6NnD,CAAA"}
|
|
@@ -1,210 +0,0 @@
|
|
|
1
|
-
import { call, now, on, randomId } from "@welshman/lib";
|
|
2
|
-
import { matchFilters, unionFilters } from "@welshman/util";
|
|
3
|
-
import { ClientMessageType, RelayMessageType, getPriority, isClientClose, isClientReq, isRelayClosed, isRelayEose, isRelayEvent, setPriority, } from "./message.js";
|
|
4
|
-
import { SocketEvent } from "./socket.js";
|
|
5
|
-
import { catchUpFilter } from "./util.js";
|
|
6
|
-
// NIP-11 `max_filters` is commonly ten
|
|
7
|
-
export const MULTIPLEX_MAX_FILTERS = 10;
|
|
8
|
-
const MERGED_PREFIX = "MUX-";
|
|
9
|
-
const getFilters = ([, , ...filters]) => filters;
|
|
10
|
-
const setFilters = (req, filters) => {
|
|
11
|
-
req.splice(2, Infinity, ...filters);
|
|
12
|
-
};
|
|
13
|
-
const getMemberFilters = (merged) => Array.from(merged.members.values()).flat();
|
|
14
|
-
const fits = (filters) => unionFilters(filters).length <= MULTIPLEX_MAX_FILTERS;
|
|
15
|
-
/**
|
|
16
|
-
* Sends subscriptions that wait in a socket's queue together as one merged REQ, so requests made
|
|
17
|
-
* at the same time use one of the relay's subscriptions rather than one each, and hands the
|
|
18
|
-
* relay's answers back out under each subscription's own id. Merged REQs are pushed onto the
|
|
19
|
-
* queue rather than sent, so the auth buffer keeps the original REQs to replay. Leave it out of a
|
|
20
|
-
* pool's socket policies to send every subscription as it was asked for.
|
|
21
|
-
* @param socket - a Socket object
|
|
22
|
-
* @return a cleanup function
|
|
23
|
-
*/
|
|
24
|
-
export const socketPolicyMultiplex = (socket) => {
|
|
25
|
-
const queue = socket._sendQueue;
|
|
26
|
-
const mergedById = new Map();
|
|
27
|
-
const mergedByMember = new Map();
|
|
28
|
-
// A REQ going out as it was asked for, which the next one can still join while it waits
|
|
29
|
-
let candidate;
|
|
30
|
-
// The queued merged REQ that later REQs join
|
|
31
|
-
let open;
|
|
32
|
-
const isSending = (message) => queue.items.includes(message);
|
|
33
|
-
// Receiving fires as a message is pushed, so it is almost always the last one in the queue
|
|
34
|
-
const isReceiving = (message) => socket._recvQueue.items.lastIndexOf(message) !== -1;
|
|
35
|
-
const takeBack = (message) => {
|
|
36
|
-
const items = socket._recvQueue.items;
|
|
37
|
-
if (items[items.length - 1] === message) {
|
|
38
|
-
items.pop();
|
|
39
|
-
}
|
|
40
|
-
else {
|
|
41
|
-
socket._recvQueue.remove(message);
|
|
42
|
-
}
|
|
43
|
-
};
|
|
44
|
-
const join = (merged, req) => {
|
|
45
|
-
queue.remove(req);
|
|
46
|
-
merged.members.set(req[1], getFilters(req));
|
|
47
|
-
mergedByMember.set(req[1], merged);
|
|
48
|
-
setFilters(merged.message, unionFilters(getMemberFilters(merged)));
|
|
49
|
-
// The queue orders on push, so a more urgent member moves the merged REQ up
|
|
50
|
-
if (getPriority(req) > getPriority(merged.message)) {
|
|
51
|
-
queue.remove(merged.message);
|
|
52
|
-
queue.push(setPriority(merged.message, getPriority(req)));
|
|
53
|
-
}
|
|
54
|
-
};
|
|
55
|
-
const merge = (reqs) => {
|
|
56
|
-
const id = `${MERGED_PREFIX}${randomId().slice(0, 8)}`;
|
|
57
|
-
const message = setPriority([ClientMessageType.Req, id], getPriority(reqs[0]));
|
|
58
|
-
const merged = { id, message, members: new Map(), status: "queued", stale: false };
|
|
59
|
-
mergedById.set(id, merged);
|
|
60
|
-
queue.push(message);
|
|
61
|
-
for (const req of reqs) {
|
|
62
|
-
join(merged, req);
|
|
63
|
-
}
|
|
64
|
-
return merged;
|
|
65
|
-
};
|
|
66
|
-
const forget = (merged) => {
|
|
67
|
-
mergedById.delete(merged.id);
|
|
68
|
-
for (const id of merged.members.keys()) {
|
|
69
|
-
mergedByMember.delete(id);
|
|
70
|
-
}
|
|
71
|
-
if (merged.narrowing) {
|
|
72
|
-
queue.remove(merged.narrowing);
|
|
73
|
-
}
|
|
74
|
-
if (open === merged) {
|
|
75
|
-
open = undefined;
|
|
76
|
-
}
|
|
77
|
-
};
|
|
78
|
-
// A REQ under the same id replaces the relay's subscription, and catching up skips its history
|
|
79
|
-
const narrow = (merged) => {
|
|
80
|
-
const filters = unionFilters(getMemberFilters(merged)).map(f => catchUpFilter(f, now()));
|
|
81
|
-
merged.stale = false;
|
|
82
|
-
if (merged.narrowing && isSending(merged.narrowing)) {
|
|
83
|
-
setFilters(merged.narrowing, filters);
|
|
84
|
-
}
|
|
85
|
-
else {
|
|
86
|
-
merged.narrowing = [ClientMessageType.Req, merged.id, ...filters];
|
|
87
|
-
queue.push(merged.narrowing);
|
|
88
|
-
}
|
|
89
|
-
};
|
|
90
|
-
const leave = (id) => {
|
|
91
|
-
const merged = mergedByMember.get(id);
|
|
92
|
-
if (merged) {
|
|
93
|
-
merged.members.delete(id);
|
|
94
|
-
mergedByMember.delete(id);
|
|
95
|
-
if (merged.members.size === 0) {
|
|
96
|
-
forget(merged);
|
|
97
|
-
if (merged.status === "queued") {
|
|
98
|
-
queue.remove(merged.message);
|
|
99
|
-
}
|
|
100
|
-
else {
|
|
101
|
-
queue.push([ClientMessageType.Close, merged.id]);
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
else if (merged.status === "queued") {
|
|
105
|
-
setFilters(merged.message, unionFilters(getMemberFilters(merged)));
|
|
106
|
-
}
|
|
107
|
-
else if (merged.status === "eosed") {
|
|
108
|
-
narrow(merged);
|
|
109
|
-
}
|
|
110
|
-
else {
|
|
111
|
-
// Narrowing before eose would cut short the history the rest are still receiving
|
|
112
|
-
merged.stale = true;
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
};
|
|
116
|
-
const onReq = (req) => {
|
|
117
|
-
if (req[1].startsWith(MERGED_PREFIX)) {
|
|
118
|
-
// A replay of a merged REQ, which is dropped once nobody is left on it
|
|
119
|
-
if (!mergedById.has(req[1])) {
|
|
120
|
-
queue.remove(req);
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
else {
|
|
124
|
-
const filters = getFilters(req);
|
|
125
|
-
// A REQ under an id that's already open replaces it
|
|
126
|
-
leave(req[1]);
|
|
127
|
-
if (open && fits([...getMemberFilters(open), ...filters])) {
|
|
128
|
-
join(open, req);
|
|
129
|
-
}
|
|
130
|
-
else if (candidate &&
|
|
131
|
-
isSending(candidate) &&
|
|
132
|
-
fits([...getFilters(candidate), ...filters])) {
|
|
133
|
-
open = merge([candidate, req]);
|
|
134
|
-
candidate = undefined;
|
|
135
|
-
}
|
|
136
|
-
else {
|
|
137
|
-
candidate = req;
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
};
|
|
141
|
-
const onClose = (close) => {
|
|
142
|
-
if (mergedByMember.has(close[1])) {
|
|
143
|
-
queue.remove(close);
|
|
144
|
-
leave(close[1]);
|
|
145
|
-
}
|
|
146
|
-
};
|
|
147
|
-
const onSend = (message) => {
|
|
148
|
-
const merged = isClientReq(message) ? mergedById.get(message[1]) : undefined;
|
|
149
|
-
if (message === candidate) {
|
|
150
|
-
candidate = undefined;
|
|
151
|
-
}
|
|
152
|
-
if (merged && message === merged.message) {
|
|
153
|
-
merged.status = "sent";
|
|
154
|
-
if (open === merged) {
|
|
155
|
-
open = undefined;
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
if (merged && message === merged.narrowing) {
|
|
159
|
-
merged.narrowing = undefined;
|
|
160
|
-
}
|
|
161
|
-
};
|
|
162
|
-
const onReceiving = (message) => {
|
|
163
|
-
const merged = mergedById.get(message[1]);
|
|
164
|
-
// The auth buffer takes back a refusal it means to have answered again, so leave that alone
|
|
165
|
-
if (merged && isReceiving(message)) {
|
|
166
|
-
if (isRelayEvent(message)) {
|
|
167
|
-
takeBack(message);
|
|
168
|
-
for (const [id, filters] of merged.members) {
|
|
169
|
-
if (matchFilters(filters, message[2])) {
|
|
170
|
-
socket.receive([RelayMessageType.Event, id, message[2]]);
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
if (isRelayEose(message)) {
|
|
175
|
-
takeBack(message);
|
|
176
|
-
merged.status = "eosed";
|
|
177
|
-
if (merged.stale) {
|
|
178
|
-
narrow(merged);
|
|
179
|
-
}
|
|
180
|
-
for (const id of merged.members.keys()) {
|
|
181
|
-
socket.receive([RelayMessageType.Eose, id]);
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
// Left in the queue, so the policies that counted the merged REQ out see it come back
|
|
185
|
-
if (isRelayClosed(message)) {
|
|
186
|
-
forget(merged);
|
|
187
|
-
for (const id of merged.members.keys()) {
|
|
188
|
-
socket.receive([RelayMessageType.Closed, id, message[2]]);
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
};
|
|
193
|
-
const unsubscribers = [
|
|
194
|
-
on(socket, SocketEvent.Sending, (message) => {
|
|
195
|
-
// Another policy may already have taken it back out, as cancel-unsent does
|
|
196
|
-
if (isSending(message)) {
|
|
197
|
-
if (isClientReq(message)) {
|
|
198
|
-
onReq(message);
|
|
199
|
-
}
|
|
200
|
-
if (isClientClose(message)) {
|
|
201
|
-
onClose(message);
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
}),
|
|
205
|
-
on(socket, SocketEvent.Send, onSend),
|
|
206
|
-
on(socket, SocketEvent.Receiving, onReceiving),
|
|
207
|
-
];
|
|
208
|
-
return () => unsubscribers.forEach(call);
|
|
209
|
-
};
|
|
210
|
-
//# sourceMappingURL=multiplex.js.map
|