File tree Expand file tree Collapse file tree 1 file changed +11
-3
lines changed
packages/cardano-services/src/WsServer Expand file tree Collapse file tree 1 file changed +11
-3
lines changed Original file line number Diff line number Diff line change @@ -220,9 +220,17 @@ export class CardanoWsServer extends WsProvider {
220220 } ;
221221
222222 const loadTransactions = async ( ) => {
223- const addressesSet = new Set < Cardano . PaymentAddress > ( ) ;
224- for ( const ws of this . wss . clients ) for ( const address of ws . addresses ) addressesSet . add ( address ) ;
225- const addresses = [ ...addressesSet ] ;
223+ const addressesObj : Record < Cardano . PaymentAddress , true > = { } ;
224+
225+ // Benchmarks
226+ // https://jsbenchmark.com/#eyJjYXNlcyI6W3siaWQiOiI5aTVXR2E3bXp0MEE2LU1FZFJDaVQiLCJjb2RlIjoiY29uc3QgeyB3c3MgfSA9IERBVEE7XG5cbmNvbnN0IGFkZHJlc3Nlc01hcCA9IG5ldyBNYXAoKTtcbmZvciAoY29uc3Qgd3Mgb2Ygd3NzLmNsaWVudHMpXG4gIGZvciAoY29uc3QgYWRkcmVzcyBvZiB3cy5hZGRyZXNzZXMpXG4gICAgYWRkcmVzc2VzTWFwLnNldChhZGRyZXNzLCB0cnVlKTtcbmNvbnN0IGFkZHJlc3NlcyA9IFsuLi5hZGRyZXNzZXNNYXAua2V5cygpXTsiLCJkZXBlbmRlbmNpZXMiOltdLCJuYW1lIjoiT3JpZ2luYWwifSx7ImlkIjoibVFoLUFZM3JwX1dPWC1keDN6RTJVIiwiY29kZSI6ImNvbnN0IHsgd3NzIH0gPSBEQVRBO1xuICAgICAgICAgIFxuY29uc3QgYWRkcmVzc2VzTWFwID0gWy4uLndzcy5jbGllbnRzXVxuICAuZmxhdE1hcChpdCA9PiBpdC5hZGRyZXNzZXMpXG4gIC5yZWR1Y2UoKHJlc3VsdCwgaXQpID0-ICh7Li4ucmVzdWx0LCBbaXRdOiB0cnVlfSksIHt9KTtcbmNvbnN0IGFkZHJlc3NlcyA9IFtPYmplY3Qua2V5cyhhZGRyZXNzZXNNYXApXTsiLCJuYW1lIjoiRmlyc3QgcHJvcG9zYWwiLCJkZXBlbmRlbmNpZXMiOltdfSx7ImlkIjoibE5fM29CdS1rQlVUMlJ5U24wcU1tIiwiY29kZSI6ImNvbnN0IHsgd3NzIH0gPSBEQVRBO1xuXG5jb25zdCBhZGRyZXNzZXNNYXAgPSBbLi4ud3NzLmNsaWVudHNdXG4gIC5mbGF0TWFwKGl0ID0-IGl0LmFkZHJlc3NlcylcbiAgLnJlZHVjZSgocmVzdWx0LCBpdCkgPT4ge1xuICBcdHJlc3VsdFtpdF0gPSB0cnVlXG5cdHJldHVybiByZXN1bHRcbiAgfSwge30pO1xuY29uc3QgYWRkcmVzc2VzID0gW09iamVjdC5rZXlzKGFkZHJlc3Nlc01hcCldOyIsIm5hbWUiOiJTZWNvbmQgcHJvcG9zYWwiLCJkZXBlbmRlbmNpZXMiOltdfSx7ImlkIjoiSW5zLXdFX2p2amVLYzlUOUlTaWFfIiwiY29kZSI6ImNvbnN0IHsgd3NzIH0gPSBEQVRBO1xuXG5jb25zdCBhZGRyZXNzZXNTZXQgPSBuZXcgU2V0KCk7XG5mb3IgKGNvbnN0IHdzIG9mIHdzcy5jbGllbnRzKVxuICBmb3IgKGNvbnN0IGFkZHJlc3Mgb2Ygd3MuYWRkcmVzc2VzKVxuICAgIGFkZHJlc3Nlc1NldC5hZGQoYWRkcmVzcyk7XG5jb25zdCBhZGRyZXNzZXMgPSBbLi4uYWRkcmVzc2VzU2V0XTsiLCJkZXBlbmRlbmNpZXMiOltdLCJuYW1lIjoiVGhpcmQgcHJvcG9zYWwifSx7ImlkIjoiNE9hWEF0REJFb184eXRrVDFyWGhKIiwiY29kZSI6ImNvbnN0IHsgd3NzIH0gPSBEQVRBO1xuXG5jb25zdCBhZGRyZXNzZXNTZXQgPSBuZXcgU2V0KFsuLi53c3MuY2xpZW50c10uZmxhdE1hcCh3cyA9PiB3cy5hZGRyZXNzZXMpKTtcbmNvbnN0IGFkZHJlc3NlcyA9IFsuLi5hZGRyZXNzZXNTZXRdOyIsImRlcGVuZGVuY2llcyI6W10sIm5hbWUiOiJmbGF0TWFwIn0seyJpZCI6Im15SlJyRmpHUzROZC1YYXdZYmo5QyIsImNvZGUiOiJjb25zdCB7IHdzcyB9ID0gREFUQTtcblxuY29uc3QgYWRkcmVzc2VzU2V0ID0gbmV3IFNldCgpO1xuZm9yIChjb25zdCB3cyBvZiB3c3MuY2xpZW50cykge1xuICBjb25zdCBhZGRyZXNzZXMgPSB3cy5hZGRyZXNzZXM7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgYWRkcmVzc2VzLmxlbmd0aDsgKytpKVxuICAgIGFkZHJlc3Nlc1NldC5hZGQoYWRkcmVzc2VzW2ldKTtcbn1cbmNvbnN0IGFkZHJlc3NlcyA9IFsuLi5hZGRyZXNzZXNTZXRdOyIsImRlcGVuZGVuY2llcyI6W10sIm5hbWUiOiJBbm90aGVyIGF0dGVtcHQifSx7ImlkIjoibUFLa0hMSF9IWUxhd2dzaE9ldElaIiwiY29kZSI6ImNvbnN0IHsgd3NzIH0gPSBEQVRBO1xuXG5jb25zdCBhZGRyZXNzZXNTZXQgPSBuZXcgU2V0KCk7XG5mb3IgKGNvbnN0IHdzIG9mIHdzcy5jbGllbnRzKSB7XG4gIGNvbnN0IHsgYWRkcmVzc2VzIH0gPSB3cy5hZGRyZXNzZXM7XG4gIGNvbnN0IHsgbGVuZ3RoIH0gPSBhZGRyZXNzZXNcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSBhZGRyZXNzZXNTZXQuYWRkKGFkZHJlc3Nlc1tpXSk7XG59XG5jb25zdCBhZGRyZXNzZXMgPSBbLi4uYWRkcmVzc2VzU2V0XTsiLCJkZXBlbmRlbmNpZXMiOltdLCJuYW1lIjoiRXZlbiBiZXR0ZXIifSx7ImlkIjoiTFcyTGJEaVBBT3AtMlNFZVVoSFJFIiwiY29kZSI6ImNvbnN0IHsgd3NzIH0gPSBEQVRBO1xuXG5jb25zdCBhZGRyZXNzZXNNYXAgPSB7fTtcbmZvciAoY29uc3Qgd3Mgb2Ygd3NzLmNsaWVudHMpXG4gIGZvciAoY29uc3QgYWRkcmVzcyBvZiB3cy5hZGRyZXNzZXMpXG4gICAgYWRkcmVzc2VzTWFwW2FkZHJlc3NdID0gdHJ1ZTtcbmNvbnN0IGFkZHJlc3NlcyA9IE9iamVjdC5rZXlzKGFkZHJlc3Nlc01hcCk7IiwiZGVwZW5kZW5jaWVzIjpbXSwibmFtZSI6Ik9iamVjdCAxIn0seyJpZCI6Im9LMm5IQ3JJTzg2bFl2TmwyMGprbyIsImNvZGUiOiJjb25zdCB7IHdzcyB9ID0gREFUQTtcblxuY29uc3QgYWRkcmVzc2VzTWFwID0ge307XG5cbmZvciAoY29uc3Qgd3Mgb2Ygd3NzLmNsaWVudHMpIHtcbiAgY29uc3QgYWRkcmVzc2VzID0gd3MuYWRkcmVzc2VzO1xuICBmb3IgKGxldCBhTGVuID0gYWRkcmVzc2VzLmxlbmd0aDsgYUxlbi0tOylcbiAgICBhZGRyZXNzZXNNYXBbYWRkcmVzc2VzW2FMZW5dXSA9IHRydWU7XG59XG4gIFxuY29uc3QgYWRkcmVzc2VzID0gT2JqZWN0LmtleXMoYWRkcmVzc2VzTWFwKTsiLCJkZXBlbmRlbmNpZXMiOltdLCJuYW1lIjoiT2JqZWN0IDIifSx7ImlkIjoiT0p0TklnRVBvb3BoaDNoVHdhQktHIiwiY29kZSI6ImNvbnN0IHsgd3NzIH0gPSBEQVRBO1xuXG5jb25zdCBhZGRyZXNzZXNNYXAgPSB7fTtcblxuZm9yIChjb25zdCB3cyBvZiB3c3MuY2xpZW50cylcbiAgZm9yIChjb25zdCBhZGRyZXNzIG9mIHdzLmFkZHJlc3NlcylcbiAgICBhZGRyZXNzZXNNYXBbYWRkcmVzc10gPSB0cnVlO1xuICBcbmNvbnN0IGFkZHJlc3NlcyA9IE9iamVjdC5rZXlzKGFkZHJlc3Nlc01hcCk7IiwiZGVwZW5kZW5jaWVzIjpbXSwibmFtZSI6Ik9iamVjdCAzIn1dLCJjb25maWciOnsibmFtZSI6IkJhc2ljIGV4YW1wbGUiLCJwYXJhbGxlbCI6dHJ1ZSwiZ2xvYmFsVGVzdENvbmZpZyI6eyJkZXBlbmRlbmNpZXMiOlt7InVybCI6Imh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGZha2VyLWpzL2Zha2VyQDguMC4yLytlc20iLCJuYW1lIjoiRkFLRVIiLCJlc20iOnRydWV9XX0sImRhdGFDb2RlIjoiY29uc3QgeyB1dWlkIH0gPSBGQUtFUi5mYWtlci5zdHJpbmc7XG5jb25zdCBhZGRyZXNzZXMgPSBbXTtcbmNvbnN0IGNsaWVudHMgPSBbXTtcblxubGV0IGFJZHggPSAwO1xuXG4vLyBTaW11bGF0ZSAxMDAwIGNvbm5lY3RlZCBjbGllbnRzIHdpdGggMTAwIHN1YnNjcmliZWQgYWRkcmVzc2VzXG5mb3IobGV0IGNJZHg7IGNJZHggPCAxMDAwMDsgY0lkeCsrKSB7XG4gIGNvbnN0IHdzID0geyBhZGRyZXNzZXM6IFtdIH07XG5cbiAgLy8gU2ltdWxhdGUgMSUgb2YgdXNlcnMgaGF2ZSB0aGUgc2FtZSB3YWxsZXQgY29ubmVjdGVkIGZyb21cbiAgLy8gdHdvIGRpc3RpbmN0IExhY2UgaW5zdGFuY2VzXG4gIGlmKGNJZHggJiYgTWF0aC5yYW5kb20oKSA8IDAuMDEpXG4gICAgY2xpZW50cy5wdXNoKGNsaWVudHNbW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIGNsaWVudHMubGVndGgpXV0pO1xuICBlbHNlXG4gICAgZm9yKGxldCBpID0gMDsgaSA8IDEwMDsgKytpKSB7XG4gICAgICAvLyBTaW11bGF0ZSAwLjElIG9mIGFkZHJlc3NlcyBpcyBzdWJzY3JpYmVkIGJ5IGRpc3RpbmN0IHVzZXJzXG4gICAgICAvLyBpLmUuIHNoYXJlZCB3YWxsZXRzXG4gICAgICBpZihjSWR4ICYmIE1hdGgucmFuZG9tKCkgPCAwLjAwMSlcbiAgICAgICAgd3MuYWRkcmVzc2VzLnB1c2goYWRkcmVzc2VzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIGFkZHJlc3Nlcy5sZWd0aCldKTtcbiAgICAgIGVsc2Uge1xuICAgICAgICAvLyBBcGFydCBmcm9tIHRoZSBmaXhlZCBwcmVmaXhcbiAgICAgICAgLy8gYWRkcmVzc2VzIGFuZCB1dWlkcyBhcmUgbG9uZyBzZXF1ZW5jZXMgb2YgcmFuZG9tIGNoYXJhY3RlcnNcbiAgICAgICAgY29uc3QgYWRkcmVzcyA9IFwiYWRkcl9cIiArIHV1aWQoKTtcblxuICAgICAgICBhZGRyZXNzZXNbYUlkeCsrXSA9IGFkZHJlc3M7XG4gICAgICAgIHdzLmFkZHJlc3Nlcy5wdXNoKGFkZHJlc3MpO1xuICAgICAgfVxuXG4gICAgICBjbGllbnRzLnB1c2god3MpO1xuICAgIH1cbn1cblxucmV0dXJuIHsgd3NzOiB7IGNsaWVudHM6IG5ldyBTZXQoY2xpZW50cykgfSB9OyJ9fQ
227+ for ( const ws of this . wss . clients ) {
228+ const addresses = ws . addresses ;
229+ // eslint-disable-next-line space-in-parens
230+ for ( let aLen = addresses . length ; aLen -- ; ) addressesObj [ addresses [ aLen ] ] = true ;
231+ }
232+
233+ const addresses = Object . keys ( addressesObj ) as Cardano . PaymentAddress [ ] ;
226234
227235 if ( debugLog ) this . logger . debug ( `Transactions for notification ${ notification } ${ JSON . stringify ( addresses ) } ` ) ;
228236
You can’t perform that action at this time.
0 commit comments