@welshman/net 0.0.22 → 0.0.24
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/build/src/Executor.cjs +50 -5
- package/build/src/Executor.cjs.map +1 -1
- package/build/src/Executor.d.ts +19 -2
- package/build/src/Executor.mjs +50 -5
- package/build/src/Executor.mjs.map +1 -1
- package/build/src/Negentropy.cjs +516 -0
- package/build/src/Negentropy.cjs.map +1 -0
- package/build/src/Negentropy.d.ts +47 -0
- package/build/src/Negentropy.mjs +512 -0
- package/build/src/Negentropy.mjs.map +1 -0
- package/build/src/Subscribe.cjs.map +1 -1
- package/build/src/Subscribe.mjs.map +1 -1
- package/build/src/Sync.cjs +138 -0
- package/build/src/Sync.cjs.map +1 -0
- package/build/src/Sync.d.ts +42 -0
- package/build/src/Sync.mjs +128 -0
- package/build/src/Sync.mjs.map +1 -0
- package/build/src/index.cjs +2 -0
- package/build/src/index.cjs.map +1 -1
- package/build/src/index.d.ts +2 -0
- package/build/src/index.mjs +2 -0
- package/build/src/target/Echo.cjs +20 -0
- package/build/src/target/Echo.cjs.map +1 -0
- package/build/src/target/Echo.d.ts +7 -0
- package/build/src/target/Echo.mjs +16 -0
- package/build/src/target/Echo.mjs.map +1 -0
- package/package.json +6 -4
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.syncWithoutNegentropy = exports.pushWithoutNegentropy = exports.pullWithoutNegentropy = exports.sync = exports.push = exports.pull = exports.diff = void 0;
|
|
4
|
+
const lib_1 = require("@welshman/lib");
|
|
5
|
+
const Subscribe_1 = require("./Subscribe.cjs");
|
|
6
|
+
const Publish_1 = require("./Publish.cjs");
|
|
7
|
+
const diff = async ({ relays, filters, events }) => {
|
|
8
|
+
const diffs = (0, lib_1.flatten)(await Promise.all(relays.flatMap(async (relay) => {
|
|
9
|
+
return await Promise.all(filters.map(async (filter) => {
|
|
10
|
+
const executor = lib_1.ctx.net.getExecutor([relay]);
|
|
11
|
+
const have = new Set();
|
|
12
|
+
const need = new Set();
|
|
13
|
+
await new Promise((resolve, reject) => {
|
|
14
|
+
executor.diff(filter, events, {
|
|
15
|
+
onClose: resolve,
|
|
16
|
+
onError: (_, message) => reject(message),
|
|
17
|
+
onMessage: (_, message) => {
|
|
18
|
+
for (const id of message.have) {
|
|
19
|
+
have.add(id);
|
|
20
|
+
}
|
|
21
|
+
for (const id of message.need) {
|
|
22
|
+
need.add(id);
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
return { relay, have, need };
|
|
28
|
+
}));
|
|
29
|
+
})));
|
|
30
|
+
return Array.from((0, lib_1.groupBy)(diff => diff.relay, diffs).entries())
|
|
31
|
+
.map(([relay, diffs]) => {
|
|
32
|
+
const have = new Set();
|
|
33
|
+
const need = new Set();
|
|
34
|
+
for (const diff of diffs) {
|
|
35
|
+
for (const id of diff.have) {
|
|
36
|
+
have.add(id);
|
|
37
|
+
}
|
|
38
|
+
for (const id of diff.need) {
|
|
39
|
+
need.add(id);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return { relay, have: Array.from(have), need: Array.from(need) };
|
|
43
|
+
});
|
|
44
|
+
};
|
|
45
|
+
exports.diff = diff;
|
|
46
|
+
const pull = async ({ relays, filters, events, onEvent }) => {
|
|
47
|
+
const countById = new Map();
|
|
48
|
+
const idsByRelay = new Map();
|
|
49
|
+
for (const { relay, need } of await (0, exports.diff)({ relays, filters, events })) {
|
|
50
|
+
for (const id of need) {
|
|
51
|
+
const count = countById.get(id) || 0;
|
|
52
|
+
// Reduce, but don't completely eliminate duplicates, just in case a relay
|
|
53
|
+
// won't give us what we ask for.
|
|
54
|
+
if (count < 2) {
|
|
55
|
+
(0, lib_1.pushToMapKey)(idsByRelay, relay, id);
|
|
56
|
+
countById.set(id, (0, lib_1.inc)(count));
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
const result = [];
|
|
61
|
+
await Promise.all(Array.from(idsByRelay.entries()).map(([relay, allIds]) => {
|
|
62
|
+
return Promise.all((0, lib_1.chunk)(1024, allIds).map(ids => {
|
|
63
|
+
return new Promise(resolve => {
|
|
64
|
+
(0, Subscribe_1.subscribe)({
|
|
65
|
+
relays: [relay],
|
|
66
|
+
filters: [{ ids }],
|
|
67
|
+
closeOnEose: true,
|
|
68
|
+
onClose: resolve,
|
|
69
|
+
onEvent: event => {
|
|
70
|
+
result.push(event);
|
|
71
|
+
onEvent === null || onEvent === void 0 ? void 0 : onEvent(event);
|
|
72
|
+
},
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
}));
|
|
76
|
+
}));
|
|
77
|
+
return result;
|
|
78
|
+
};
|
|
79
|
+
exports.pull = pull;
|
|
80
|
+
const push = async ({ relays, filters, events }) => {
|
|
81
|
+
const relaysById = new Map();
|
|
82
|
+
for (const { relay, have } of await (0, exports.diff)({ relays, filters, events })) {
|
|
83
|
+
for (const id of have) {
|
|
84
|
+
(0, lib_1.pushToMapKey)(relaysById, id, relay);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
await Promise.all(events.map(async (event) => {
|
|
88
|
+
const relays = relaysById.get(event.id);
|
|
89
|
+
if (relays) {
|
|
90
|
+
await (0, Publish_1.publish)({ event, relays }).result;
|
|
91
|
+
}
|
|
92
|
+
}));
|
|
93
|
+
};
|
|
94
|
+
exports.push = push;
|
|
95
|
+
const sync = async (opts) => {
|
|
96
|
+
await (0, exports.pull)(opts);
|
|
97
|
+
await (0, exports.push)(opts);
|
|
98
|
+
};
|
|
99
|
+
exports.sync = sync;
|
|
100
|
+
const pullWithoutNegentropy = async ({ relays, filters, onEvent }) => {
|
|
101
|
+
let done = false;
|
|
102
|
+
let until = (0, lib_1.now)() + 30;
|
|
103
|
+
const result = [];
|
|
104
|
+
while (!done) {
|
|
105
|
+
let anyResults = false;
|
|
106
|
+
await new Promise(resolve => {
|
|
107
|
+
(0, Subscribe_1.subscribe)({
|
|
108
|
+
relays,
|
|
109
|
+
filters: filters
|
|
110
|
+
.filter(filter => !filter.since || filter.since > until)
|
|
111
|
+
.map(filter => ({ ...filter, until })),
|
|
112
|
+
closeOnEose: true,
|
|
113
|
+
onClose: () => {
|
|
114
|
+
done = !anyResults;
|
|
115
|
+
resolve();
|
|
116
|
+
},
|
|
117
|
+
onEvent: event => {
|
|
118
|
+
anyResults = true;
|
|
119
|
+
until = Math.min(until, event.created_at - 1);
|
|
120
|
+
result.push(event);
|
|
121
|
+
onEvent === null || onEvent === void 0 ? void 0 : onEvent(event);
|
|
122
|
+
},
|
|
123
|
+
});
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
return result;
|
|
127
|
+
};
|
|
128
|
+
exports.pullWithoutNegentropy = pullWithoutNegentropy;
|
|
129
|
+
const pushWithoutNegentropy = ({ relays, events }) => Promise.all(events.map(async (event) => {
|
|
130
|
+
await (0, Publish_1.publish)({ event, relays }).result;
|
|
131
|
+
}));
|
|
132
|
+
exports.pushWithoutNegentropy = pushWithoutNegentropy;
|
|
133
|
+
const syncWithoutNegentropy = async (opts) => {
|
|
134
|
+
await (0, exports.pullWithoutNegentropy)(opts);
|
|
135
|
+
await (0, exports.pushWithoutNegentropy)(opts);
|
|
136
|
+
};
|
|
137
|
+
exports.syncWithoutNegentropy = syncWithoutNegentropy;
|
|
138
|
+
//# sourceMappingURL=Sync.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Sync.cjs","sourceRoot":"","sources":["../../src/Sync.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { SignedEvent, TrustedEvent, Filter } from '@welshman/util';
|
|
2
|
+
export type DiffOpts = {
|
|
3
|
+
relays: string[];
|
|
4
|
+
filters: Filter[];
|
|
5
|
+
events: TrustedEvent[];
|
|
6
|
+
};
|
|
7
|
+
export declare const diff: ({ relays, filters, events }: DiffOpts) => Promise<{
|
|
8
|
+
relay: string;
|
|
9
|
+
have: string[];
|
|
10
|
+
need: string[];
|
|
11
|
+
}[]>;
|
|
12
|
+
export type PullOpts = {
|
|
13
|
+
relays: string[];
|
|
14
|
+
filters: Filter[];
|
|
15
|
+
events: TrustedEvent[];
|
|
16
|
+
onEvent?: (event: TrustedEvent) => void;
|
|
17
|
+
};
|
|
18
|
+
export declare const pull: ({ relays, filters, events, onEvent }: PullOpts) => Promise<TrustedEvent[]>;
|
|
19
|
+
export type PushOpts = {
|
|
20
|
+
relays: string[];
|
|
21
|
+
filters: Filter[];
|
|
22
|
+
events: SignedEvent[];
|
|
23
|
+
};
|
|
24
|
+
export declare const push: ({ relays, filters, events }: PushOpts) => Promise<void>;
|
|
25
|
+
export type SyncOpts = {
|
|
26
|
+
relays: string[];
|
|
27
|
+
filters: Filter[];
|
|
28
|
+
events: SignedEvent[];
|
|
29
|
+
};
|
|
30
|
+
export declare const sync: (opts: SyncOpts) => Promise<void>;
|
|
31
|
+
export type PullWithoutNegentropyOpts = {
|
|
32
|
+
relays: string[];
|
|
33
|
+
filters: Filter[];
|
|
34
|
+
onEvent?: (event: TrustedEvent) => void;
|
|
35
|
+
};
|
|
36
|
+
export declare const pullWithoutNegentropy: ({ relays, filters, onEvent }: PullWithoutNegentropyOpts) => Promise<TrustedEvent[]>;
|
|
37
|
+
export type PushWithoutNegentropyOpts = {
|
|
38
|
+
relays: string[];
|
|
39
|
+
events: SignedEvent[];
|
|
40
|
+
};
|
|
41
|
+
export declare const pushWithoutNegentropy: ({ relays, events }: PushWithoutNegentropyOpts) => Promise<void[]>;
|
|
42
|
+
export declare const syncWithoutNegentropy: (opts: SyncOpts) => Promise<void>;
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { ctx, groupBy, now, pushToMapKey, inc, flatten, chunk } from '@welshman/lib';
|
|
2
|
+
import { subscribe } from "./Subscribe.mjs";
|
|
3
|
+
import { publish } from "./Publish.mjs";
|
|
4
|
+
export const diff = async ({ relays, filters, events }) => {
|
|
5
|
+
const diffs = flatten(await Promise.all(relays.flatMap(async (relay) => {
|
|
6
|
+
return await Promise.all(filters.map(async (filter) => {
|
|
7
|
+
const executor = ctx.net.getExecutor([relay]);
|
|
8
|
+
const have = new Set();
|
|
9
|
+
const need = new Set();
|
|
10
|
+
await new Promise((resolve, reject) => {
|
|
11
|
+
executor.diff(filter, events, {
|
|
12
|
+
onClose: resolve,
|
|
13
|
+
onError: (_, message) => reject(message),
|
|
14
|
+
onMessage: (_, message) => {
|
|
15
|
+
for (const id of message.have) {
|
|
16
|
+
have.add(id);
|
|
17
|
+
}
|
|
18
|
+
for (const id of message.need) {
|
|
19
|
+
need.add(id);
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
return { relay, have, need };
|
|
25
|
+
}));
|
|
26
|
+
})));
|
|
27
|
+
return Array.from(groupBy(diff => diff.relay, diffs).entries())
|
|
28
|
+
.map(([relay, diffs]) => {
|
|
29
|
+
const have = new Set();
|
|
30
|
+
const need = new Set();
|
|
31
|
+
for (const diff of diffs) {
|
|
32
|
+
for (const id of diff.have) {
|
|
33
|
+
have.add(id);
|
|
34
|
+
}
|
|
35
|
+
for (const id of diff.need) {
|
|
36
|
+
need.add(id);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return { relay, have: Array.from(have), need: Array.from(need) };
|
|
40
|
+
});
|
|
41
|
+
};
|
|
42
|
+
export const pull = async ({ relays, filters, events, onEvent }) => {
|
|
43
|
+
const countById = new Map();
|
|
44
|
+
const idsByRelay = new Map();
|
|
45
|
+
for (const { relay, need } of await diff({ relays, filters, events })) {
|
|
46
|
+
for (const id of need) {
|
|
47
|
+
const count = countById.get(id) || 0;
|
|
48
|
+
// Reduce, but don't completely eliminate duplicates, just in case a relay
|
|
49
|
+
// won't give us what we ask for.
|
|
50
|
+
if (count < 2) {
|
|
51
|
+
pushToMapKey(idsByRelay, relay, id);
|
|
52
|
+
countById.set(id, inc(count));
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
const result = [];
|
|
57
|
+
await Promise.all(Array.from(idsByRelay.entries()).map(([relay, allIds]) => {
|
|
58
|
+
return Promise.all(chunk(1024, allIds).map(ids => {
|
|
59
|
+
return new Promise(resolve => {
|
|
60
|
+
subscribe({
|
|
61
|
+
relays: [relay],
|
|
62
|
+
filters: [{ ids }],
|
|
63
|
+
closeOnEose: true,
|
|
64
|
+
onClose: resolve,
|
|
65
|
+
onEvent: event => {
|
|
66
|
+
result.push(event);
|
|
67
|
+
onEvent === null || onEvent === void 0 ? void 0 : onEvent(event);
|
|
68
|
+
},
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
}));
|
|
72
|
+
}));
|
|
73
|
+
return result;
|
|
74
|
+
};
|
|
75
|
+
export const push = async ({ relays, filters, events }) => {
|
|
76
|
+
const relaysById = new Map();
|
|
77
|
+
for (const { relay, have } of await diff({ relays, filters, events })) {
|
|
78
|
+
for (const id of have) {
|
|
79
|
+
pushToMapKey(relaysById, id, relay);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
await Promise.all(events.map(async (event) => {
|
|
83
|
+
const relays = relaysById.get(event.id);
|
|
84
|
+
if (relays) {
|
|
85
|
+
await publish({ event, relays }).result;
|
|
86
|
+
}
|
|
87
|
+
}));
|
|
88
|
+
};
|
|
89
|
+
export const sync = async (opts) => {
|
|
90
|
+
await pull(opts);
|
|
91
|
+
await push(opts);
|
|
92
|
+
};
|
|
93
|
+
export const pullWithoutNegentropy = async ({ relays, filters, onEvent }) => {
|
|
94
|
+
let done = false;
|
|
95
|
+
let until = now() + 30;
|
|
96
|
+
const result = [];
|
|
97
|
+
while (!done) {
|
|
98
|
+
let anyResults = false;
|
|
99
|
+
await new Promise(resolve => {
|
|
100
|
+
subscribe({
|
|
101
|
+
relays,
|
|
102
|
+
filters: filters
|
|
103
|
+
.filter(filter => !filter.since || filter.since > until)
|
|
104
|
+
.map(filter => ({ ...filter, until })),
|
|
105
|
+
closeOnEose: true,
|
|
106
|
+
onClose: () => {
|
|
107
|
+
done = !anyResults;
|
|
108
|
+
resolve();
|
|
109
|
+
},
|
|
110
|
+
onEvent: event => {
|
|
111
|
+
anyResults = true;
|
|
112
|
+
until = Math.min(until, event.created_at - 1);
|
|
113
|
+
result.push(event);
|
|
114
|
+
onEvent === null || onEvent === void 0 ? void 0 : onEvent(event);
|
|
115
|
+
},
|
|
116
|
+
});
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
return result;
|
|
120
|
+
};
|
|
121
|
+
export const pushWithoutNegentropy = ({ relays, events }) => Promise.all(events.map(async (event) => {
|
|
122
|
+
await publish({ event, relays }).result;
|
|
123
|
+
}));
|
|
124
|
+
export const syncWithoutNegentropy = async (opts) => {
|
|
125
|
+
await pullWithoutNegentropy(opts);
|
|
126
|
+
await pushWithoutNegentropy(opts);
|
|
127
|
+
};
|
|
128
|
+
//# sourceMappingURL=Sync.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Sync.mjs","sourceRoot":"","sources":["../../src/Sync.ts"],"names":[],"mappings":"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"}
|
package/build/src/index.cjs
CHANGED
|
@@ -22,7 +22,9 @@ __exportStar(require("./Pool.cjs"), exports);
|
|
|
22
22
|
__exportStar(require("./Publish.cjs"), exports);
|
|
23
23
|
__exportStar(require("./Socket.cjs"), exports);
|
|
24
24
|
__exportStar(require("./Subscribe.cjs"), exports);
|
|
25
|
+
__exportStar(require("./Sync.cjs"), exports);
|
|
25
26
|
__exportStar(require("./Tracker.cjs"), exports);
|
|
27
|
+
__exportStar(require("./target/Echo.cjs"), exports);
|
|
26
28
|
__exportStar(require("./target/Multi.cjs"), exports);
|
|
27
29
|
__exportStar(require("./target/Plex.cjs"), exports);
|
|
28
30
|
__exportStar(require("./target/Relay.cjs"), exports);
|
package/build/src/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAA4B;AAC5B,uDAAgC;AAChC,gDAAyB;AACzB,iDAA0B;AAC1B,6CAAsB;AACtB,gDAAyB;AACzB,+CAAwB;AACxB,kDAA2B;AAC3B,gDAAyB;AACzB,qDAA8B;AAC9B,oDAA6B;AAC7B,qDAA8B;AAC9B,sDAA+B;AAC/B,qDAA8B"}
|
|
1
|
+
{"version":3,"file":"index.cjs","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAA4B;AAC5B,uDAAgC;AAChC,gDAAyB;AACzB,iDAA0B;AAC1B,6CAAsB;AACtB,gDAAyB;AACzB,+CAAwB;AACxB,kDAA2B;AAC3B,6CAAsB;AACtB,gDAAyB;AACzB,oDAA6B;AAC7B,qDAA8B;AAC9B,oDAA6B;AAC7B,qDAA8B;AAC9B,sDAA+B;AAC/B,qDAA8B"}
|
package/build/src/index.d.ts
CHANGED
|
@@ -6,7 +6,9 @@ export * from "./Pool";
|
|
|
6
6
|
export * from "./Publish";
|
|
7
7
|
export * from "./Socket";
|
|
8
8
|
export * from "./Subscribe";
|
|
9
|
+
export * from "./Sync";
|
|
9
10
|
export * from "./Tracker";
|
|
11
|
+
export * from "./target/Echo";
|
|
10
12
|
export * from "./target/Multi";
|
|
11
13
|
export * from "./target/Plex";
|
|
12
14
|
export * from "./target/Relay";
|
package/build/src/index.mjs
CHANGED
|
@@ -6,7 +6,9 @@ export * from "./Pool.mjs";
|
|
|
6
6
|
export * from "./Publish.mjs";
|
|
7
7
|
export * from "./Socket.mjs";
|
|
8
8
|
export * from "./Subscribe.mjs";
|
|
9
|
+
export * from "./Sync.mjs";
|
|
9
10
|
export * from "./Tracker.mjs";
|
|
11
|
+
export * from "./target/Echo.mjs";
|
|
10
12
|
export * from "./target/Multi.mjs";
|
|
11
13
|
export * from "./target/Plex.mjs";
|
|
12
14
|
export * from "./target/Relay.mjs";
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Echo = void 0;
|
|
4
|
+
const lib_1 = require("@welshman/lib");
|
|
5
|
+
class Echo extends lib_1.Emitter {
|
|
6
|
+
constructor() {
|
|
7
|
+
super(...arguments);
|
|
8
|
+
this.cleanup = () => {
|
|
9
|
+
this.removeAllListeners();
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
get connections() {
|
|
13
|
+
return [];
|
|
14
|
+
}
|
|
15
|
+
send(...payload) {
|
|
16
|
+
this.emit(...payload);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
exports.Echo = Echo;
|
|
20
|
+
//# sourceMappingURL=Echo.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Echo.cjs","sourceRoot":"","sources":["../../../src/target/Echo.ts"],"names":[],"mappings":";;;AAAA,uCAAqC;AAGrC,MAAa,IAAK,SAAQ,aAAO;IAAjC;;QASE,YAAO,GAAG,GAAG,EAAE;YACb,IAAI,CAAC,kBAAkB,EAAE,CAAA;QAC3B,CAAC,CAAA;IACH,CAAC;IAXC,IAAI,WAAW;QACb,OAAO,EAAE,CAAA;IACX,CAAC;IAED,IAAI,CAAC,GAAG,OAAgB;QACtB,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAA;IACvB,CAAC;CAKF;AAZD,oBAYC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Emitter } from '@welshman/lib';
|
|
2
|
+
export class Echo extends Emitter {
|
|
3
|
+
constructor() {
|
|
4
|
+
super(...arguments);
|
|
5
|
+
this.cleanup = () => {
|
|
6
|
+
this.removeAllListeners();
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
get connections() {
|
|
10
|
+
return [];
|
|
11
|
+
}
|
|
12
|
+
send(...payload) {
|
|
13
|
+
this.emit(...payload);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=Echo.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Echo.mjs","sourceRoot":"","sources":["../../../src/target/Echo.ts"],"names":[],"mappings":"OAAO,EAAC,OAAO,EAAC,MAAM,eAAe;AAGrC,MAAM,OAAO,IAAK,SAAQ,OAAO;IAAjC;;QASE,YAAO,GAAG,GAAG,EAAE;YACb,IAAI,CAAC,kBAAkB,EAAE,CAAA;QAC3B,CAAC,CAAA;IACH,CAAC;IAXC,IAAI,WAAW;QACb,OAAO,EAAE,CAAA;IACX,CAAC;IAED,IAAI,CAAC,GAAG,OAAgB;QACtB,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAA;IACvB,CAAC;CAKF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@welshman/net",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.24",
|
|
4
4
|
"author": "hodlbod",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"description": "Utilities for connecting with nostr relays.",
|
|
@@ -23,16 +23,18 @@
|
|
|
23
23
|
"pub": "npm run lint && npm run build && npm publish",
|
|
24
24
|
"build": "gts clean && tsc-multi",
|
|
25
25
|
"lint": "gts lint",
|
|
26
|
-
"fix": "gts fix"
|
|
26
|
+
"fix": "gts fix",
|
|
27
|
+
"test": "mocha"
|
|
27
28
|
},
|
|
28
29
|
"devDependencies": {
|
|
29
30
|
"gts": "^5.0.1",
|
|
31
|
+
"mocha": "^10.7.3",
|
|
30
32
|
"tsc-multi": "^1.1.0",
|
|
31
33
|
"typescript": "~5.1.6"
|
|
32
34
|
},
|
|
33
35
|
"dependencies": {
|
|
34
|
-
"@welshman/lib": "0.0.
|
|
35
|
-
"@welshman/util": "0.0.
|
|
36
|
+
"@welshman/lib": "~0.0.19",
|
|
37
|
+
"@welshman/util": "~0.0.36",
|
|
36
38
|
"isomorphic-ws": "^5.0.0",
|
|
37
39
|
"ws": "^8.16.0"
|
|
38
40
|
}
|