Expose relay funcs (#31)

This commit is contained in:
Íñigo Aréjula Aísa
2022-11-26 03:21:33 +01:00
committed by GitHub
parent ae717a1a4a
commit 1b798b2eee
3 changed files with 27 additions and 3 deletions

3
index.d.ts vendored
View File

@@ -92,6 +92,9 @@ declare type PoolPublishCallback = (status: number, relay: string) => void;
declare type RelayPool = {
setPrivateKey(key: string): void,
addRelay(url: string, opts?: RelayPolicy): Relay,
removeRelay(url:string):void,
getRelayList():Relay[],
relayChangePolicy():Relay,
sub(opts: SubscriptionOptions, id?: string): Subscription,
publish(event: Event, cb: PoolPublishCallback): Promise<Event>,
close: () => void,

14
pool.js
View File

@@ -144,6 +144,20 @@ export function relayPool() {
relay.close()
delete relays[relayURL]
},
//getRelayList return an array with all the relays stored
getRelayList() {
return Object.values(relays)
},
relayChangePolicy(url, policy = {read: true, write: true}) {
let relayURL = normalizeRelayURL(url)
let data = relays[relayURL]
if (!data) return
relays[relayURL].policy = policy
return relays[relayURL]
},
onNotice(cb) {
noticeCallbacks.push(cb)
},

View File

@@ -83,7 +83,7 @@ export function relayConnect(url, onNotice = () => {}, onError = () => {}) {
if (data.length >= 1) {
switch (data[0]) {
case 'NOTICE':
if (data.length != 2) {
if (data.length !== 2) {
// ignore empty or malformed notice
return
}
@@ -91,7 +91,7 @@ export function relayConnect(url, onNotice = () => {}, onError = () => {}) {
onNotice(data[1])
return
case 'EOSE':
if (data.length != 2) {
if (data.length !== 2) {
// ignore malformed EOSE
return
}
@@ -101,7 +101,7 @@ export function relayConnect(url, onNotice = () => {}, onError = () => {}) {
}
return
case 'EVENT':
if (data.length != 3) {
if (data.length !== 3) {
// ignore malformed EVENT
return
}
@@ -114,6 +114,13 @@ export function relayConnect(url, onNotice = () => {}, onError = () => {}) {
eventListeners[channel](event)
}
return
case 'OK':
if (data.length !== 4) {
// ignore malformed EVENT
return
}
return
}
}
}