@nostr-relay/wot-guard
Version:
46 lines • 1.4 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Pool = void 0;
const relay_1 = require("./relay");
class Pool {
constructor(urls, { agent } = {}) {
this.urls = urls;
this.relays = [];
this.agent = agent;
}
async init() {
if (this.relays.length) {
this.relays.forEach(relay => relay.destroy());
this.relays = [];
}
await Promise.allSettled(this.urls.map(async (url) => {
const relay = new relay_1.Relay(url, { agent: this.agent });
await relay.init();
this.relays.push(relay);
}));
return this.relays.map(relay => relay.url);
}
destroy() {
this.relays.forEach(relay => relay.destroy());
this.relays = [];
}
async fetchEvents(filter) {
const events = [];
await Promise.allSettled(this.relays.map(async (relay) => {
const res = await relay.fetchEvents(filter);
events.push(...res);
}));
const eventIdSet = new Set();
const uniqueEvents = [];
events.forEach(event => {
if (eventIdSet.has(event.id)) {
return;
}
eventIdSet.add(event.id);
uniqueEvents.push(event);
});
return uniqueEvents;
}
}
exports.Pool = Pool;
//# sourceMappingURL=pool.js.map