@welshman/net 0.0.41 → 0.0.43
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/README.md +57 -18
- package/build/src/Connection.cjs +17 -11
- package/build/src/Connection.cjs.map +1 -1
- package/build/src/Connection.d.ts +5 -4
- package/build/src/Connection.mjs +17 -11
- package/build/src/Connection.mjs.map +1 -1
- package/build/src/ConnectionSender.cjs +10 -10
- package/build/src/ConnectionSender.cjs.map +1 -1
- package/build/src/ConnectionSender.d.ts +0 -1
- package/build/src/ConnectionSender.mjs +10 -10
- package/build/src/ConnectionSender.mjs.map +1 -1
- package/build/src/ConnectionState.cjs +19 -3
- package/build/src/ConnectionState.cjs.map +1 -1
- package/build/src/ConnectionState.mjs +19 -3
- package/build/src/ConnectionState.mjs.map +1 -1
- package/build/src/Executor.cjs +2 -2
- package/build/src/Executor.cjs.map +1 -1
- package/build/src/Executor.d.ts +1 -1
- package/build/src/Executor.mjs +3 -3
- package/build/src/Executor.mjs.map +1 -1
- package/build/src/Pool.cjs +1 -1
- package/build/src/Pool.cjs.map +1 -1
- package/build/src/Pool.mjs +1 -1
- package/build/src/Pool.mjs.map +1 -1
- package/build/src/Socket.cjs +1 -1
- package/build/src/Socket.cjs.map +1 -1
- package/build/src/Socket.mjs +1 -1
- package/build/src/Socket.mjs.map +1 -1
- package/build/src/Subscribe.cjs +54 -54
- package/build/src/Subscribe.cjs.map +1 -1
- package/build/src/Subscribe.mjs +54 -54
- package/build/src/Subscribe.mjs.map +1 -1
- package/build/src/target/Echo.cjs +1 -1
- package/build/src/target/Echo.cjs.map +1 -1
- package/build/src/target/Echo.d.ts +1 -1
- package/build/src/target/Echo.mjs +1 -1
- package/build/src/target/Echo.mjs.map +1 -1
- package/build/src/target/Local.cjs +2 -2
- package/build/src/target/Local.cjs.map +1 -1
- package/build/src/target/Local.d.ts +1 -1
- package/build/src/target/Local.mjs +2 -2
- package/build/src/target/Local.mjs.map +1 -1
- package/build/src/target/Multi.cjs +2 -2
- package/build/src/target/Multi.cjs.map +1 -1
- package/build/src/target/Multi.d.ts +1 -1
- package/build/src/target/Multi.mjs +2 -2
- package/build/src/target/Multi.mjs.map +1 -1
- package/build/src/target/Relay.cjs +2 -2
- package/build/src/target/Relay.cjs.map +1 -1
- package/build/src/target/Relay.d.ts +1 -1
- package/build/src/target/Relay.mjs +2 -2
- package/build/src/target/Relay.mjs.map +1 -1
- package/build/src/target/Relays.cjs +3 -5
- package/build/src/target/Relays.cjs.map +1 -1
- package/build/src/target/Relays.d.ts +1 -1
- package/build/src/target/Relays.mjs +3 -5
- package/build/src/target/Relays.mjs.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -2,21 +2,60 @@
|
|
|
2
2
|
|
|
3
3
|
Utilities having to do with connection management and nostr messages.
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
5
|
+
```typescript
|
|
6
|
+
import {ctx, setContext} from '@welshman/lib'
|
|
7
|
+
import {type TrustedEvent, createEvent, NOTE} from '@welshman/util'
|
|
8
|
+
import {subscribe, publish, getDefaultNetContext} from '@welshman/net'
|
|
9
|
+
|
|
10
|
+
// Sets up customizable event valdation, handlers, etc
|
|
11
|
+
setContext(getDefaultNetContext())
|
|
12
|
+
|
|
13
|
+
// Send a subscription
|
|
14
|
+
const sub = subscribe({
|
|
15
|
+
relays: ['wss://relay.example.com/'],
|
|
16
|
+
filters: [{kinds: [1], limit: 1}],
|
|
17
|
+
closeOnEose: true,
|
|
18
|
+
timeout: 10000,
|
|
19
|
+
})
|
|
20
|
+
|
|
21
|
+
sub.emitter.on(SubscriptionEvent.Event, (url: string, event: TrustedEvent) => {
|
|
22
|
+
console.log(url, event)
|
|
23
|
+
sub.close()
|
|
24
|
+
})
|
|
25
|
+
|
|
26
|
+
// Publish an event
|
|
27
|
+
const pub = publish({
|
|
28
|
+
relays: ['wss://relay.example.com/'],
|
|
29
|
+
event: createEvent(NOTE, {content: 'hi'}),
|
|
30
|
+
})
|
|
31
|
+
|
|
32
|
+
pub.emitter.on('*', (status: PublishStatus, url: string) => {
|
|
33
|
+
console.log(status, url)
|
|
34
|
+
})
|
|
35
|
+
|
|
36
|
+
// The Tracker class can tell you which relays an event was read from or published to
|
|
37
|
+
console.log(ctx.net.tracker.getRelays(event.id))
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
The main reason this module exists is to support different backends via Executor and different `target` classes. For example, to add a local relay that automatically gets used:
|
|
41
|
+
|
|
42
|
+
```typescript
|
|
43
|
+
import {setContext} from '@welshman/lib'
|
|
44
|
+
import {LOCAL_RELAY_URL, Relay, Repository} from '@welshman/util'
|
|
45
|
+
import {getDefaultNetContext, Multi, Local, Relays, Executor} from '@welshman/net'
|
|
46
|
+
|
|
47
|
+
const repository = new Repository()
|
|
48
|
+
|
|
49
|
+
const relay = new Relay(repository)
|
|
50
|
+
|
|
51
|
+
setContext(getDefaultNetContext({
|
|
52
|
+
getExecutor: (relays: string[]) => {
|
|
53
|
+
return new Executor(
|
|
54
|
+
new Multi([
|
|
55
|
+
new Local(relay),
|
|
56
|
+
new Relays(remoteUrls.map(url => ctx.net.pool.get(url))),
|
|
57
|
+
])
|
|
58
|
+
)
|
|
59
|
+
},
|
|
60
|
+
}))
|
|
61
|
+
```
|
package/build/src/Connection.cjs
CHANGED
|
@@ -10,27 +10,33 @@ const ConnectionAuth_1 = require("./ConnectionAuth.cjs");
|
|
|
10
10
|
const ConnectionSender_1 = require("./ConnectionSender.cjs");
|
|
11
11
|
var ConnectionStatus;
|
|
12
12
|
(function (ConnectionStatus) {
|
|
13
|
-
ConnectionStatus["
|
|
13
|
+
ConnectionStatus["Open"] = "open";
|
|
14
14
|
ConnectionStatus["Closed"] = "Closed";
|
|
15
|
-
ConnectionStatus["Closing"] = "Closing";
|
|
16
15
|
})(ConnectionStatus || (exports.ConnectionStatus = ConnectionStatus = {}));
|
|
17
|
-
const {
|
|
16
|
+
const { Open, Closed } = ConnectionStatus;
|
|
18
17
|
class Connection extends lib_1.Emitter {
|
|
19
18
|
constructor(url) {
|
|
20
19
|
super();
|
|
21
|
-
this.status =
|
|
20
|
+
this.status = Open;
|
|
22
21
|
this.emit = (type, ...args) => super.emit(type, this, ...args);
|
|
23
22
|
this.send = async (message) => {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
this.sender.push(message);
|
|
23
|
+
if (this.status !== Open) {
|
|
24
|
+
throw new Error(`Attempted to send message on ${this.status} connection`);
|
|
27
25
|
}
|
|
26
|
+
this.sender.push(message);
|
|
28
27
|
};
|
|
29
|
-
this.
|
|
30
|
-
this.status =
|
|
31
|
-
|
|
32
|
-
|
|
28
|
+
this.open = () => {
|
|
29
|
+
this.status = Open;
|
|
30
|
+
this.socket.open();
|
|
31
|
+
this.sender.worker.resume();
|
|
32
|
+
};
|
|
33
|
+
this.close = () => {
|
|
33
34
|
this.status = Closed;
|
|
35
|
+
this.socket.close();
|
|
36
|
+
this.sender.worker.pause();
|
|
37
|
+
};
|
|
38
|
+
this.cleanup = () => {
|
|
39
|
+
this.close();
|
|
34
40
|
this.removeAllListeners();
|
|
35
41
|
};
|
|
36
42
|
if (url !== (0, util_1.normalizeRelayUrl)(url)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Connection.cjs","sourceRoot":"","sources":["../../src/Connection.ts"],"names":[],"mappings":";;;AAAA,uCAAqC;AACrC,yCAAgD;AAChD,yCAA+B;AAG/B,2DAAiD;AACjD,2DAAiD;AACjD,yDAA+C;AAC/C,6DAAmD;AAEnD,IAAY,
|
|
1
|
+
{"version":3,"file":"Connection.cjs","sourceRoot":"","sources":["../../src/Connection.ts"],"names":[],"mappings":";;;AAAA,uCAAqC;AACrC,yCAAgD;AAChD,yCAA+B;AAG/B,2DAAiD;AACjD,2DAAiD;AACjD,yDAA+C;AAC/C,6DAAmD;AAEnD,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IAC1B,iCAAa,CAAA;IACb,qCAAiB,CAAA;AACnB,CAAC,EAHW,gBAAgB,gCAAhB,gBAAgB,QAG3B;AAED,MAAM,EAAC,IAAI,EAAE,MAAM,EAAC,GAAG,gBAAgB,CAAA;AAEvC,MAAa,UAAW,SAAQ,aAAO;IASrC,YAAY,GAAW;QACrB,KAAK,EAAE,CAAA;QAHT,WAAM,GAAG,IAAI,CAAA;QAkBb,SAAI,GAAG,CAAC,IAAqB,EAAE,GAAG,IAAW,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAA;QAEjF,SAAI,GAAG,KAAK,EAAE,OAAgB,EAAE,EAAE;YAChC,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE;gBACxB,MAAM,IAAI,KAAK,CAAC,gCAAgC,IAAI,CAAC,MAAM,aAAa,CAAC,CAAA;aAC1E;YAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC3B,CAAC,CAAA;QAED,SAAI,GAAG,GAAG,EAAE;YACV,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;YAClB,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;YAClB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAA;QAC7B,CAAC,CAAA;QAED,UAAK,GAAG,GAAG,EAAE;YACX,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;YACpB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;YACnB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;QAC5B,CAAC,CAAA;QAED,YAAO,GAAG,GAAG,EAAE;YACb,IAAI,CAAC,KAAK,EAAE,CAAA;YACZ,IAAI,CAAC,kBAAkB,EAAE,CAAA;QAC3B,CAAC,CAAA;QAtCC,IAAI,GAAG,KAAK,IAAA,wBAAiB,EAAC,GAAG,CAAC,EAAE;YAClC,OAAO,CAAC,IAAI,CAAC,sDAAsD,GAAG,EAAE,CAAC,CAAA;SAC1E;QAED,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;QACd,IAAI,CAAC,MAAM,GAAG,IAAI,eAAM,CAAC,IAAI,CAAC,CAAA;QAC9B,IAAI,CAAC,MAAM,GAAG,IAAI,mCAAgB,CAAC,IAAI,CAAC,CAAA;QACxC,IAAI,CAAC,KAAK,GAAG,IAAI,iCAAe,CAAC,IAAI,CAAC,CAAA;QACtC,IAAI,CAAC,KAAK,GAAG,IAAI,iCAAe,CAAC,IAAI,CAAC,CAAA;QACtC,IAAI,CAAC,IAAI,GAAG,IAAI,+BAAc,CAAC,IAAI,CAAC,CAAA;QACpC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAA;IAC3B,CAAC;CA4BF;AAnDD,gCAmDC"}
|
|
@@ -7,9 +7,8 @@ import { ConnectionStats } from './ConnectionStats';
|
|
|
7
7
|
import { ConnectionAuth } from './ConnectionAuth';
|
|
8
8
|
import { ConnectionSender } from './ConnectionSender';
|
|
9
9
|
export declare enum ConnectionStatus {
|
|
10
|
-
|
|
11
|
-
Closed = "Closed"
|
|
12
|
-
Closing = "Closing"
|
|
10
|
+
Open = "open",
|
|
11
|
+
Closed = "Closed"
|
|
13
12
|
}
|
|
14
13
|
export declare class Connection extends Emitter {
|
|
15
14
|
url: string;
|
|
@@ -22,5 +21,7 @@ export declare class Connection extends Emitter {
|
|
|
22
21
|
constructor(url: string);
|
|
23
22
|
emit: (type: ConnectionEvent, ...args: any[]) => boolean;
|
|
24
23
|
send: (message: Message) => Promise<void>;
|
|
25
|
-
|
|
24
|
+
open: () => void;
|
|
25
|
+
close: () => void;
|
|
26
|
+
cleanup: () => void;
|
|
26
27
|
}
|
package/build/src/Connection.mjs
CHANGED
|
@@ -7,27 +7,33 @@ import { ConnectionAuth } from "./ConnectionAuth.mjs";
|
|
|
7
7
|
import { ConnectionSender } from "./ConnectionSender.mjs";
|
|
8
8
|
export var ConnectionStatus;
|
|
9
9
|
(function (ConnectionStatus) {
|
|
10
|
-
ConnectionStatus["
|
|
10
|
+
ConnectionStatus["Open"] = "open";
|
|
11
11
|
ConnectionStatus["Closed"] = "Closed";
|
|
12
|
-
ConnectionStatus["Closing"] = "Closing";
|
|
13
12
|
})(ConnectionStatus || (ConnectionStatus = {}));
|
|
14
|
-
const {
|
|
13
|
+
const { Open, Closed } = ConnectionStatus;
|
|
15
14
|
export class Connection extends Emitter {
|
|
16
15
|
constructor(url) {
|
|
17
16
|
super();
|
|
18
|
-
this.status =
|
|
17
|
+
this.status = Open;
|
|
19
18
|
this.emit = (type, ...args) => super.emit(type, this, ...args);
|
|
20
19
|
this.send = async (message) => {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
this.sender.push(message);
|
|
20
|
+
if (this.status !== Open) {
|
|
21
|
+
throw new Error(`Attempted to send message on ${this.status} connection`);
|
|
24
22
|
}
|
|
23
|
+
this.sender.push(message);
|
|
25
24
|
};
|
|
26
|
-
this.
|
|
27
|
-
this.status =
|
|
28
|
-
|
|
29
|
-
|
|
25
|
+
this.open = () => {
|
|
26
|
+
this.status = Open;
|
|
27
|
+
this.socket.open();
|
|
28
|
+
this.sender.worker.resume();
|
|
29
|
+
};
|
|
30
|
+
this.close = () => {
|
|
30
31
|
this.status = Closed;
|
|
32
|
+
this.socket.close();
|
|
33
|
+
this.sender.worker.pause();
|
|
34
|
+
};
|
|
35
|
+
this.cleanup = () => {
|
|
36
|
+
this.close();
|
|
31
37
|
this.removeAllListeners();
|
|
32
38
|
};
|
|
33
39
|
if (url !== normalizeRelayUrl(url)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Connection.mjs","sourceRoot":"","sources":["../../src/Connection.ts"],"names":[],"mappings":"OAAO,EAAC,OAAO,EAAC,MAAM,eAAe;OAC9B,EAAC,iBAAiB,EAAC,MAAM,gBAAgB;OACzC,EAAC,MAAM,EAAC;OAGR,EAAC,eAAe,EAAC;OACjB,EAAC,eAAe,EAAC;OACjB,EAAC,cAAc,EAAC;OAChB,EAAC,gBAAgB,EAAC;AAEzB,MAAM,CAAN,IAAY,
|
|
1
|
+
{"version":3,"file":"Connection.mjs","sourceRoot":"","sources":["../../src/Connection.ts"],"names":[],"mappings":"OAAO,EAAC,OAAO,EAAC,MAAM,eAAe;OAC9B,EAAC,iBAAiB,EAAC,MAAM,gBAAgB;OACzC,EAAC,MAAM,EAAC;OAGR,EAAC,eAAe,EAAC;OACjB,EAAC,eAAe,EAAC;OACjB,EAAC,cAAc,EAAC;OAChB,EAAC,gBAAgB,EAAC;AAEzB,MAAM,CAAN,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IAC1B,iCAAa,CAAA;IACb,qCAAiB,CAAA;AACnB,CAAC,EAHW,gBAAgB,KAAhB,gBAAgB,QAG3B;AAED,MAAM,EAAC,IAAI,EAAE,MAAM,EAAC,GAAG,gBAAgB,CAAA;AAEvC,MAAM,OAAO,UAAW,SAAQ,OAAO;IASrC,YAAY,GAAW;QACrB,KAAK,EAAE,CAAA;QAHT,WAAM,GAAG,IAAI,CAAA;QAkBb,SAAI,GAAG,CAAC,IAAqB,EAAE,GAAG,IAAW,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAA;QAEjF,SAAI,GAAG,KAAK,EAAE,OAAgB,EAAE,EAAE;YAChC,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE;gBACxB,MAAM,IAAI,KAAK,CAAC,gCAAgC,IAAI,CAAC,MAAM,aAAa,CAAC,CAAA;aAC1E;YAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC3B,CAAC,CAAA;QAED,SAAI,GAAG,GAAG,EAAE;YACV,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;YAClB,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;YAClB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAA;QAC7B,CAAC,CAAA;QAED,UAAK,GAAG,GAAG,EAAE;YACX,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;YACpB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;YACnB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;QAC5B,CAAC,CAAA;QAED,YAAO,GAAG,GAAG,EAAE;YACb,IAAI,CAAC,KAAK,EAAE,CAAA;YACZ,IAAI,CAAC,kBAAkB,EAAE,CAAA;QAC3B,CAAC,CAAA;QAtCC,IAAI,GAAG,KAAK,iBAAiB,CAAC,GAAG,CAAC,EAAE;YAClC,OAAO,CAAC,IAAI,CAAC,sDAAsD,GAAG,EAAE,CAAC,CAAA;SAC1E;QAED,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;QACd,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,CAAA;QAC9B,IAAI,CAAC,MAAM,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAA;QACxC,IAAI,CAAC,KAAK,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,CAAA;QACtC,IAAI,CAAC,KAAK,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,CAAA;QACtC,IAAI,CAAC,IAAI,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,CAAA;QACpC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAA;IAC3B,CAAC;CA4BF"}
|
|
@@ -11,29 +11,26 @@ class ConnectionSender {
|
|
|
11
11
|
this.push = (message) => {
|
|
12
12
|
this.worker.push(message);
|
|
13
13
|
};
|
|
14
|
-
this.close = async () => {
|
|
15
|
-
this.worker.pause();
|
|
16
|
-
};
|
|
17
14
|
this.worker = new lib_1.Worker({
|
|
18
15
|
shouldDefer: ([verb, ...extra]) => {
|
|
16
|
+
// Always send CLOSE to clean up pending requests, even if the connection is closed
|
|
17
|
+
if (verb === 'CLOSE')
|
|
18
|
+
return false;
|
|
19
19
|
// If we're not connected, nothing we can do
|
|
20
|
-
if (
|
|
20
|
+
if (cxn.socket.status !== Socket_1.SocketStatus.Open)
|
|
21
21
|
return true;
|
|
22
22
|
// Always allow sending AUTH
|
|
23
23
|
if (verb === 'AUTH')
|
|
24
24
|
return false;
|
|
25
|
-
// Only close reqs that have been sent
|
|
26
|
-
if (verb === 'CLOSE')
|
|
27
|
-
return !this.cxn.state.pendingRequests.has(extra[0]);
|
|
28
25
|
// Always allow sending join requests
|
|
29
26
|
if (verb === 'EVENT' && extra[0].kind === util_1.AUTH_JOIN)
|
|
30
27
|
return false;
|
|
31
28
|
// Wait for auth
|
|
32
|
-
if (![ConnectionAuth_1.AuthStatus.None, ConnectionAuth_1.AuthStatus.Ok].includes(
|
|
29
|
+
if (![ConnectionAuth_1.AuthStatus.None, ConnectionAuth_1.AuthStatus.Ok].includes(cxn.auth.status))
|
|
33
30
|
return true;
|
|
34
31
|
// Limit concurrent requests
|
|
35
32
|
if (verb === 'REQ')
|
|
36
|
-
return
|
|
33
|
+
return cxn.state.pendingRequests.size >= 8;
|
|
37
34
|
return false;
|
|
38
35
|
},
|
|
39
36
|
});
|
|
@@ -42,7 +39,10 @@ class ConnectionSender {
|
|
|
42
39
|
if (verb === 'CLOSE') {
|
|
43
40
|
this.worker.buffer = this.worker.buffer.filter(m => !(m[0] === 'REQ' && m[1] === extra[0]));
|
|
44
41
|
}
|
|
45
|
-
|
|
42
|
+
// Re-check socket status since we let CLOSE through
|
|
43
|
+
if (cxn.socket.status === Socket_1.SocketStatus.Open) {
|
|
44
|
+
cxn.socket.send([verb, ...extra]);
|
|
45
|
+
}
|
|
46
46
|
});
|
|
47
47
|
}
|
|
48
48
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConnectionSender.cjs","sourceRoot":"","sources":["../../src/ConnectionSender.ts"],"names":[],"mappings":";;;AAAA,uCAAoC;AACpC,yCAAwC;AACxC,yCAAqC;AAGrC,yDAA2C;AAE3C,MAAa,gBAAgB;IAG3B,YAAqB,GAAe;QAAf,QAAG,GAAH,GAAG,CAAY;
|
|
1
|
+
{"version":3,"file":"ConnectionSender.cjs","sourceRoot":"","sources":["../../src/ConnectionSender.ts"],"names":[],"mappings":";;;AAAA,uCAAoC;AACpC,yCAAwC;AACxC,yCAAqC;AAGrC,yDAA2C;AAE3C,MAAa,gBAAgB;IAG3B,YAAqB,GAAe;QAAf,QAAG,GAAH,GAAG,CAAY;QAsCpC,SAAI,GAAG,CAAC,OAAgB,EAAE,EAAE;YAC1B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC3B,CAAC,CAAA;QAvCC,IAAI,CAAC,MAAM,GAAG,IAAI,YAAM,CAAC;YACvB,WAAW,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK,CAAU,EAAE,EAAE;gBACzC,mFAAmF;gBACnF,IAAI,IAAI,KAAK,OAAO;oBAAE,OAAO,KAAK,CAAA;gBAElC,4CAA4C;gBAC5C,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,qBAAY,CAAC,IAAI;oBAAE,OAAO,IAAI,CAAA;gBAExD,4BAA4B;gBAC5B,IAAI,IAAI,KAAK,MAAM;oBAAE,OAAO,KAAK,CAAA;gBAEjC,qCAAqC;gBACrC,IAAI,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,gBAAS;oBAAE,OAAO,KAAK,CAAA;gBAEjE,gBAAgB;gBAChB,IAAI,CAAC,CAAC,2BAAU,CAAC,IAAI,EAAE,2BAAU,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;oBAAE,OAAO,IAAI,CAAA;gBAE5E,4BAA4B;gBAC5B,IAAI,IAAI,KAAK,KAAK;oBAAE,OAAO,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,CAAA;gBAE9D,OAAO,KAAK,CAAA;YACd,CAAC;SACF,CAAC,CAAA;QAEF,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK,CAAU,EAAE,EAAE;YACzD,gFAAgF;YAChF,IAAI,IAAI,KAAK,OAAO,EAAE;gBACpB,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;aAC5F;YAED,oDAAoD;YACpD,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,qBAAY,CAAC,IAAI,EAAE;gBAC3C,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,CAAA;aAClC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;CAKF;AA5CD,4CA4CC"}
|
|
@@ -8,29 +8,26 @@ export class ConnectionSender {
|
|
|
8
8
|
this.push = (message) => {
|
|
9
9
|
this.worker.push(message);
|
|
10
10
|
};
|
|
11
|
-
this.close = async () => {
|
|
12
|
-
this.worker.pause();
|
|
13
|
-
};
|
|
14
11
|
this.worker = new Worker({
|
|
15
12
|
shouldDefer: ([verb, ...extra]) => {
|
|
13
|
+
// Always send CLOSE to clean up pending requests, even if the connection is closed
|
|
14
|
+
if (verb === 'CLOSE')
|
|
15
|
+
return false;
|
|
16
16
|
// If we're not connected, nothing we can do
|
|
17
|
-
if (
|
|
17
|
+
if (cxn.socket.status !== SocketStatus.Open)
|
|
18
18
|
return true;
|
|
19
19
|
// Always allow sending AUTH
|
|
20
20
|
if (verb === 'AUTH')
|
|
21
21
|
return false;
|
|
22
|
-
// Only close reqs that have been sent
|
|
23
|
-
if (verb === 'CLOSE')
|
|
24
|
-
return !this.cxn.state.pendingRequests.has(extra[0]);
|
|
25
22
|
// Always allow sending join requests
|
|
26
23
|
if (verb === 'EVENT' && extra[0].kind === AUTH_JOIN)
|
|
27
24
|
return false;
|
|
28
25
|
// Wait for auth
|
|
29
|
-
if (![AuthStatus.None, AuthStatus.Ok].includes(
|
|
26
|
+
if (![AuthStatus.None, AuthStatus.Ok].includes(cxn.auth.status))
|
|
30
27
|
return true;
|
|
31
28
|
// Limit concurrent requests
|
|
32
29
|
if (verb === 'REQ')
|
|
33
|
-
return
|
|
30
|
+
return cxn.state.pendingRequests.size >= 8;
|
|
34
31
|
return false;
|
|
35
32
|
},
|
|
36
33
|
});
|
|
@@ -39,7 +36,10 @@ export class ConnectionSender {
|
|
|
39
36
|
if (verb === 'CLOSE') {
|
|
40
37
|
this.worker.buffer = this.worker.buffer.filter(m => !(m[0] === 'REQ' && m[1] === extra[0]));
|
|
41
38
|
}
|
|
42
|
-
|
|
39
|
+
// Re-check socket status since we let CLOSE through
|
|
40
|
+
if (cxn.socket.status === SocketStatus.Open) {
|
|
41
|
+
cxn.socket.send([verb, ...extra]);
|
|
42
|
+
}
|
|
43
43
|
});
|
|
44
44
|
}
|
|
45
45
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConnectionSender.mjs","sourceRoot":"","sources":["../../src/ConnectionSender.ts"],"names":[],"mappings":"OAAO,EAAC,MAAM,EAAC,MAAM,eAAe;OAC7B,EAAC,SAAS,EAAC,MAAM,gBAAgB;OACjC,EAAC,YAAY,EAAC;OAGd,EAAC,UAAU,EAAC;AAEnB,MAAM,OAAO,gBAAgB;IAG3B,YAAqB,GAAe;QAAf,QAAG,GAAH,GAAG,CAAY;
|
|
1
|
+
{"version":3,"file":"ConnectionSender.mjs","sourceRoot":"","sources":["../../src/ConnectionSender.ts"],"names":[],"mappings":"OAAO,EAAC,MAAM,EAAC,MAAM,eAAe;OAC7B,EAAC,SAAS,EAAC,MAAM,gBAAgB;OACjC,EAAC,YAAY,EAAC;OAGd,EAAC,UAAU,EAAC;AAEnB,MAAM,OAAO,gBAAgB;IAG3B,YAAqB,GAAe;QAAf,QAAG,GAAH,GAAG,CAAY;QAsCpC,SAAI,GAAG,CAAC,OAAgB,EAAE,EAAE;YAC1B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC3B,CAAC,CAAA;QAvCC,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC;YACvB,WAAW,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK,CAAU,EAAE,EAAE;gBACzC,mFAAmF;gBACnF,IAAI,IAAI,KAAK,OAAO;oBAAE,OAAO,KAAK,CAAA;gBAElC,4CAA4C;gBAC5C,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,YAAY,CAAC,IAAI;oBAAE,OAAO,IAAI,CAAA;gBAExD,4BAA4B;gBAC5B,IAAI,IAAI,KAAK,MAAM;oBAAE,OAAO,KAAK,CAAA;gBAEjC,qCAAqC;gBACrC,IAAI,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS;oBAAE,OAAO,KAAK,CAAA;gBAEjE,gBAAgB;gBAChB,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;oBAAE,OAAO,IAAI,CAAA;gBAE5E,4BAA4B;gBAC5B,IAAI,IAAI,KAAK,KAAK;oBAAE,OAAO,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,CAAA;gBAE9D,OAAO,KAAK,CAAA;YACd,CAAC;SACF,CAAC,CAAA;QAEF,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK,CAAU,EAAE,EAAE;YACzD,gFAAgF;YAChF,IAAI,IAAI,KAAK,OAAO,EAAE;gBACpB,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;aAC5F;YAED,oDAAoD;YACpD,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,YAAY,CAAC,IAAI,EAAE;gBAC3C,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,CAAA;aAClC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;CAKF"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ConnectionState = void 0;
|
|
4
|
+
const lib_1 = require("@welshman/lib");
|
|
4
5
|
const util_1 = require("@welshman/util");
|
|
5
6
|
const ConnectionEvent_1 = require("./ConnectionEvent.cjs");
|
|
6
7
|
class ConnectionState {
|
|
@@ -8,7 +9,7 @@ class ConnectionState {
|
|
|
8
9
|
this.cxn = cxn;
|
|
9
10
|
this.pendingPublishes = new Map();
|
|
10
11
|
this.pendingRequests = new Map();
|
|
11
|
-
cxn.
|
|
12
|
+
cxn.sender.worker.addGlobalHandler(([verb, ...extra]) => {
|
|
12
13
|
if (verb === 'REQ') {
|
|
13
14
|
const [reqId, ...filters] = extra;
|
|
14
15
|
this.pendingRequests.set(reqId, { filters, sent: Date.now() });
|
|
@@ -19,10 +20,10 @@ class ConnectionState {
|
|
|
19
20
|
}
|
|
20
21
|
if (verb === 'EVENT') {
|
|
21
22
|
const [event] = extra;
|
|
22
|
-
this.pendingPublishes.set(event.id, { sent: Date.now(), event
|
|
23
|
+
this.pendingPublishes.set(event.id, { sent: Date.now(), event });
|
|
23
24
|
}
|
|
24
25
|
});
|
|
25
|
-
cxn.
|
|
26
|
+
cxn.socket.worker.addGlobalHandler(([verb, ...extra]) => {
|
|
26
27
|
var _a;
|
|
27
28
|
if (verb === 'OK') {
|
|
28
29
|
const [eventId, _ok, notice] = extra;
|
|
@@ -56,12 +57,27 @@ class ConnectionState {
|
|
|
56
57
|
this.cxn.emit(ConnectionEvent_1.ConnectionEvent.Notice, extra[1]);
|
|
57
58
|
}
|
|
58
59
|
}
|
|
60
|
+
this.pendingRequests.delete(reqId);
|
|
59
61
|
}
|
|
60
62
|
if (verb === 'NOTICE') {
|
|
61
63
|
const [notice] = extra;
|
|
62
64
|
this.cxn.emit(ConnectionEvent_1.ConnectionEvent.Notice, notice);
|
|
63
65
|
}
|
|
64
66
|
});
|
|
67
|
+
// Whenever we reconnect, re-enqueue pending stuff. Delay this so that if a connection
|
|
68
|
+
// is flapping we're not sending too much noise.
|
|
69
|
+
cxn.on(ConnectionEvent_1.ConnectionEvent.Close, async (cxn) => {
|
|
70
|
+
await (0, lib_1.sleep)(10000);
|
|
71
|
+
if (this.pendingRequests.size > 0 || this.pendingPublishes.size > 0) {
|
|
72
|
+
this.cxn.open();
|
|
73
|
+
}
|
|
74
|
+
for (const [reqId, req] of this.pendingRequests.entries()) {
|
|
75
|
+
this.cxn.send(['REQ', reqId, ...req.filters]);
|
|
76
|
+
}
|
|
77
|
+
for (const [_, pub] of this.pendingPublishes.entries()) {
|
|
78
|
+
this.cxn.send(['EVENT', pub.event]);
|
|
79
|
+
}
|
|
80
|
+
});
|
|
65
81
|
}
|
|
66
82
|
}
|
|
67
83
|
exports.ConnectionState = ConnectionState;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConnectionState.cjs","sourceRoot":"","sources":["../../src/ConnectionState.ts"],"names":[],"mappings":";;;AAAA,yCAAwC;AAIxC,2DAAiD;AAajD,MAAa,eAAe;IAI1B,YAAqB,GAAe;QAAf,QAAG,GAAH,GAAG,CAAY;QAHpC,qBAAgB,GAAG,IAAI,GAAG,EAAwB,CAAA;QAClD,oBAAe,GAAG,IAAI,GAAG,EAAwB,CAAA;QAG/C,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"ConnectionState.cjs","sourceRoot":"","sources":["../../src/ConnectionState.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { sleep } from '@welshman/lib';
|
|
1
2
|
import { AUTH_JOIN } from '@welshman/util';
|
|
2
3
|
import { ConnectionEvent } from "./ConnectionEvent.mjs";
|
|
3
4
|
export class ConnectionState {
|
|
@@ -5,7 +6,7 @@ export class ConnectionState {
|
|
|
5
6
|
this.cxn = cxn;
|
|
6
7
|
this.pendingPublishes = new Map();
|
|
7
8
|
this.pendingRequests = new Map();
|
|
8
|
-
cxn.
|
|
9
|
+
cxn.sender.worker.addGlobalHandler(([verb, ...extra]) => {
|
|
9
10
|
if (verb === 'REQ') {
|
|
10
11
|
const [reqId, ...filters] = extra;
|
|
11
12
|
this.pendingRequests.set(reqId, { filters, sent: Date.now() });
|
|
@@ -16,10 +17,10 @@ export class ConnectionState {
|
|
|
16
17
|
}
|
|
17
18
|
if (verb === 'EVENT') {
|
|
18
19
|
const [event] = extra;
|
|
19
|
-
this.pendingPublishes.set(event.id, { sent: Date.now(), event
|
|
20
|
+
this.pendingPublishes.set(event.id, { sent: Date.now(), event });
|
|
20
21
|
}
|
|
21
22
|
});
|
|
22
|
-
cxn.
|
|
23
|
+
cxn.socket.worker.addGlobalHandler(([verb, ...extra]) => {
|
|
23
24
|
var _a;
|
|
24
25
|
if (verb === 'OK') {
|
|
25
26
|
const [eventId, _ok, notice] = extra;
|
|
@@ -53,12 +54,27 @@ export class ConnectionState {
|
|
|
53
54
|
this.cxn.emit(ConnectionEvent.Notice, extra[1]);
|
|
54
55
|
}
|
|
55
56
|
}
|
|
57
|
+
this.pendingRequests.delete(reqId);
|
|
56
58
|
}
|
|
57
59
|
if (verb === 'NOTICE') {
|
|
58
60
|
const [notice] = extra;
|
|
59
61
|
this.cxn.emit(ConnectionEvent.Notice, notice);
|
|
60
62
|
}
|
|
61
63
|
});
|
|
64
|
+
// Whenever we reconnect, re-enqueue pending stuff. Delay this so that if a connection
|
|
65
|
+
// is flapping we're not sending too much noise.
|
|
66
|
+
cxn.on(ConnectionEvent.Close, async (cxn) => {
|
|
67
|
+
await sleep(10000);
|
|
68
|
+
if (this.pendingRequests.size > 0 || this.pendingPublishes.size > 0) {
|
|
69
|
+
this.cxn.open();
|
|
70
|
+
}
|
|
71
|
+
for (const [reqId, req] of this.pendingRequests.entries()) {
|
|
72
|
+
this.cxn.send(['REQ', reqId, ...req.filters]);
|
|
73
|
+
}
|
|
74
|
+
for (const [_, pub] of this.pendingPublishes.entries()) {
|
|
75
|
+
this.cxn.send(['EVENT', pub.event]);
|
|
76
|
+
}
|
|
77
|
+
});
|
|
62
78
|
}
|
|
63
79
|
}
|
|
64
80
|
//# sourceMappingURL=ConnectionState.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConnectionState.mjs","sourceRoot":"","sources":["../../src/ConnectionState.ts"],"names":[],"mappings":"OAAO,EAAC,SAAS,EAAC,MAAM,gBAAgB;OAIjC,EAAC,eAAe,EAAC;AAaxB,MAAM,OAAO,eAAe;IAI1B,YAAqB,GAAe;QAAf,QAAG,GAAH,GAAG,CAAY;QAHpC,qBAAgB,GAAG,IAAI,GAAG,EAAwB,CAAA;QAClD,oBAAe,GAAG,IAAI,GAAG,EAAwB,CAAA;QAG/C,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"ConnectionState.mjs","sourceRoot":"","sources":["../../src/ConnectionState.ts"],"names":[],"mappings":"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"}
|
package/build/src/Executor.cjs
CHANGED
|
@@ -29,7 +29,7 @@ class Executor {
|
|
|
29
29
|
unsubscribe: () => {
|
|
30
30
|
if (closed)
|
|
31
31
|
return;
|
|
32
|
-
this.target.send("CLOSE", id);
|
|
32
|
+
this.target.send("CLOSE", id).catch(lib_1.noop);
|
|
33
33
|
this.target.off('EVENT', eventListener);
|
|
34
34
|
this.target.off('EOSE', eoseListener);
|
|
35
35
|
closed = true;
|
|
@@ -89,7 +89,7 @@ class Executor {
|
|
|
89
89
|
const close = () => {
|
|
90
90
|
if (closed)
|
|
91
91
|
return;
|
|
92
|
-
this.target.send('NEG-CLOSE', id);
|
|
92
|
+
this.target.send('NEG-CLOSE', id).catch(lib_1.noop);
|
|
93
93
|
this.target.off('NEG-MSG', msgListener);
|
|
94
94
|
this.target.off('NEG-ERR', errListener);
|
|
95
95
|
closed = true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Executor.cjs","sourceRoot":"","sources":["../../src/Executor.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"Executor.cjs","sourceRoot":"","sources":["../../src/Executor.ts"],"names":[],"mappings":"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"}
|
package/build/src/Executor.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ import type { Message } from './Socket';
|
|
|
4
4
|
import type { Connection } from './Connection';
|
|
5
5
|
export type Target = Emitter & {
|
|
6
6
|
connections: Connection[];
|
|
7
|
-
send: (...args: Message) => void
|
|
7
|
+
send: (...args: Message) => Promise<void>;
|
|
8
8
|
cleanup: () => void;
|
|
9
9
|
};
|
|
10
10
|
export type NegentropyMessage = {
|
package/build/src/Executor.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ctx } from '@welshman/lib';
|
|
1
|
+
import { ctx, noop } from '@welshman/lib';
|
|
2
2
|
import { Negentropy, NegentropyStorageVector } from "./Negentropy.mjs";
|
|
3
3
|
const createSubId = (prefix) => [prefix, Math.random().toString().slice(2, 10)].join('-');
|
|
4
4
|
export class Executor {
|
|
@@ -26,7 +26,7 @@ export class Executor {
|
|
|
26
26
|
unsubscribe: () => {
|
|
27
27
|
if (closed)
|
|
28
28
|
return;
|
|
29
|
-
this.target.send("CLOSE", id);
|
|
29
|
+
this.target.send("CLOSE", id).catch(noop);
|
|
30
30
|
this.target.off('EVENT', eventListener);
|
|
31
31
|
this.target.off('EOSE', eoseListener);
|
|
32
32
|
closed = true;
|
|
@@ -86,7 +86,7 @@ export class Executor {
|
|
|
86
86
|
const close = () => {
|
|
87
87
|
if (closed)
|
|
88
88
|
return;
|
|
89
|
-
this.target.send('NEG-CLOSE', id);
|
|
89
|
+
this.target.send('NEG-CLOSE', id).catch(noop);
|
|
90
90
|
this.target.off('NEG-MSG', msgListener);
|
|
91
91
|
this.target.off('NEG-ERR', errListener);
|
|
92
92
|
closed = true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Executor.mjs","sourceRoot":"","sources":["../../src/Executor.ts"],"names":[],"mappings":"OAAO,EAAC,GAAG,EAAC,MAAM,eAAe;
|
|
1
|
+
{"version":3,"file":"Executor.mjs","sourceRoot":"","sources":["../../src/Executor.ts"],"names":[],"mappings":"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"}
|
package/build/src/Pool.cjs
CHANGED
package/build/src/Pool.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pool.cjs","sourceRoot":"","sources":["../../src/Pool.ts"],"names":[],"mappings":";;;AAAA,uCAAqC;AACrC,iDAAuC;AAEvC,MAAa,IAAK,SAAQ,aAAO;
|
|
1
|
+
{"version":3,"file":"Pool.cjs","sourceRoot":"","sources":["../../src/Pool.ts"],"names":[],"mappings":";;;AAAA,uCAAqC;AACrC,iDAAuC;AAEvC,MAAa,IAAK,SAAQ,aAAO;IAG/B;QACE,KAAK,EAAE,CAAA;QAEP,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,EAAE,CAAA;IACvB,CAAC;IAED,GAAG,CAAC,GAAW;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC3B,CAAC;IAED,GAAG,CAAC,GAAW;QACb,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAExC,IAAI,aAAa,EAAE;YACjB,OAAO,aAAa,CAAA;SACrB;QAED,MAAM,aAAa,GAAG,IAAI,uBAAU,CAAC,GAAG,CAAC,CAAA;QAEzC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,aAAa,CAAC,CAAA;QACjC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;QAEhC,OAAO,aAAa,CAAA;IACtB,CAAC;IAED,MAAM,CAAC,GAAW;QAChB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAErC,IAAI,UAAU,EAAE;YACd,UAAU,CAAC,OAAO,EAAE,CAAA;YAEpB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;SACtB;IACH,CAAC;IAED,KAAK;QACH,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE;YAClC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;SACjB;IACH,CAAC;CACF;AA3CD,oBA2CC"}
|
package/build/src/Pool.mjs
CHANGED
package/build/src/Pool.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pool.mjs","sourceRoot":"","sources":["../../src/Pool.ts"],"names":[],"mappings":"OAAO,EAAC,OAAO,EAAC,MAAM,eAAe;OAC9B,EAAC,UAAU,EAAC;AAEnB,MAAM,OAAO,IAAK,SAAQ,OAAO;
|
|
1
|
+
{"version":3,"file":"Pool.mjs","sourceRoot":"","sources":["../../src/Pool.ts"],"names":[],"mappings":"OAAO,EAAC,OAAO,EAAC,MAAM,eAAe;OAC9B,EAAC,UAAU,EAAC;AAEnB,MAAM,OAAO,IAAK,SAAQ,OAAO;IAG/B;QACE,KAAK,EAAE,CAAA;QAEP,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,EAAE,CAAA;IACvB,CAAC;IAED,GAAG,CAAC,GAAW;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC3B,CAAC;IAED,GAAG,CAAC,GAAW;QACb,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAExC,IAAI,aAAa,EAAE;YACjB,OAAO,aAAa,CAAA;SACrB;QAED,MAAM,aAAa,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAA;QAEzC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,aAAa,CAAC,CAAA;QACjC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;QAEhC,OAAO,aAAa,CAAA;IACtB,CAAC;IAED,MAAM,CAAC,GAAW;QAChB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAErC,IAAI,UAAU,EAAE;YACd,UAAU,CAAC,OAAO,EAAE,CAAA;YAEpB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;SACtB;IACH,CAAC;IAED,KAAK;QACH,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE;YAClC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;SACjB;IACH,CAAC;CACF"}
|