@welshman/net 0.0.22 → 0.0.23

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.
@@ -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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"}
@@ -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);
@@ -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"}
@@ -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";
@@ -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,7 @@
1
+ import { Emitter } from '@welshman/lib';
2
+ import type { Message } from '../Socket';
3
+ export declare class Echo extends Emitter {
4
+ get connections(): never[];
5
+ send(...payload: Message): void;
6
+ cleanup: () => void;
7
+ }
@@ -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.22",
3
+ "version": "0.0.23",
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.17",
35
- "@welshman/util": "0.0.31",
36
+ "@welshman/lib": "^0.0.18",
37
+ "@welshman/util": "^0.0.34",
36
38
  "isomorphic-ws": "^5.0.0",
37
39
  "ws": "^8.16.0"
38
40
  }