From 295aed0845249ab81852e4106de66fdca3c5885e Mon Sep 17 00:00:00 2001 From: Derrick Hammer Date: Fri, 15 Sep 2023 22:06:40 -0400 Subject: [PATCH] feat: have Store extend EventEmitter so that it can emit set on adding an update and pass the serialized data --- src/store.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/store.ts b/src/store.ts index d49b34e..fda3f63 100644 --- a/src/store.ts +++ b/src/store.ts @@ -5,6 +5,7 @@ import { concatBytes } from "@noble/hashes/utils"; import { LightClientUpdate } from "#types.js"; import * as capella from "@lodestar/types/capella"; import NodeCache from "node-cache"; +import { EventEmitter } from "events"; export interface StoreItem { update: Uint8Array; @@ -12,22 +13,25 @@ export interface StoreItem { nextCommitteeHash: Uint8Array; } -export default class Store implements IStore { +export default class Store extends EventEmitter implements IStore { private store = new NodeCache({ useClones: false }); constructor(expire: number = 0) { + super(); this.store.options.stdTTL = 0; } addUpdate(period: number, update: LightClientUpdate) { try { + const serialized = capella.ssz.LightClientUpdate.serialize(update); this.store.set(period, { - update: capella.ssz.LightClientUpdate.serialize(update), + update: serialized, nextCommittee: CommitteeSSZ.serialize(update.nextSyncCommittee.pubkeys), nextCommitteeHash: digest( concatBytes(...update.nextSyncCommittee.pubkeys), ), }); + this.emit("set", period, serialized); } catch (e) { console.log(e); }