nostr-tools
Advanced tools
Comparing version 0.22.2 to 0.23.0
import * as secp256k1 from '@noble/secp256k1' | ||
import {Buffer} from 'buffer' | ||
@@ -3,0 +4,0 @@ export function generatePrivateKey() { |
{ | ||
"name": "nostr-tools", | ||
"version": "0.22.2", | ||
"version": "0.23.0", | ||
"description": "Tools for making a Nostr client.", | ||
@@ -5,0 +5,0 @@ "repository": { |
16
pool.js
@@ -29,3 +29,6 @@ import {getEventHash, verifySignature, signEvent} from './event' | ||
const sub = ({cb, filter}, id = Math.random().toString().slice(2)) => { | ||
const sub = ( | ||
{cb, filter, beforeSend}, | ||
id = Math.random().toString().slice(2) | ||
) => { | ||
const subControllers = Object.fromEntries( | ||
@@ -36,3 +39,3 @@ Object.values(relays) | ||
relay.url, | ||
relay.sub({filter, cb: event => cb(event, relay.url)}, id) | ||
relay.sub({filter, cb: event => cb(event, relay.url), beforeSend}, id) | ||
]) | ||
@@ -43,2 +46,3 @@ ) | ||
const activeFilters = filter | ||
const activeBeforeSend = beforeSend | ||
@@ -49,6 +53,10 @@ const unsub = () => { | ||
} | ||
const sub = ({cb = activeCallback, filter = activeFilters}) => { | ||
const sub = ({ | ||
cb = activeCallback, | ||
filter = activeFilters, | ||
beforeSend = activeBeforeSend | ||
}) => { | ||
Object.entries(subControllers).map(([relayURL, sub]) => [ | ||
relayURL, | ||
sub.sub({cb, filter}, id) | ||
sub.sub({cb, filter, beforeSend}, id) | ||
]) | ||
@@ -55,0 +63,0 @@ return activeSubscriptions[id] |
18
relay.js
@@ -122,3 +122,6 @@ /* global WebSocket */ | ||
const sub = ({cb, filter}, channel = Math.random().toString().slice(2)) => { | ||
const sub = ( | ||
{cb, filter, beforeSend}, | ||
channel = Math.random().toString().slice(2) | ||
) => { | ||
var filters = [] | ||
@@ -131,2 +134,7 @@ if (Array.isArray(filter)) { | ||
if (beforeSend) { | ||
const beforeSendResult = beforeSend({filter, relay: url, channel}) | ||
filters = beforeSendResult.filter | ||
} | ||
trySend(['REQ', channel, ...filters]) | ||
@@ -138,6 +146,10 @@ channels[channel] = cb | ||
const activeFilters = filters | ||
const activeBeforeSend = beforeSend | ||
return { | ||
sub: ({cb = activeCallback, filter = activeFilters}) => | ||
sub({cb, filter}, channel), | ||
sub: ({ | ||
cb = activeCallback, | ||
filter = activeFilters, | ||
beforeSend = activeBeforeSend | ||
}) => sub({cb, filter, beforeSend}, channel), | ||
unsub: () => { | ||
@@ -144,0 +156,0 @@ delete openSubs[channel] |
22685
674