@@ -50,6 +50,9 @@ export abstract class PersistentEventBase<
5050
5151 protected rawEvent : PduWithHashesAndSignaturesOptional ;
5252
53+ private authEventsIds : Set < EventID > = new Set ( ) ;
54+ private prevEventsIds : Set < EventID > = new Set ( ) ;
55+
5356 constructor (
5457 event : PduWithHashesAndSignaturesOptional ,
5558 public readonly version : Version ,
@@ -58,6 +61,16 @@ export abstract class PersistentEventBase<
5861 if ( this . rawEvent . signatures ) {
5962 this . signatures = this . rawEvent . signatures ;
6063 }
64+ if ( this . rawEvent . auth_events ) {
65+ for ( const id of this . rawEvent . auth_events ) {
66+ this . authEventsIds . add ( id ) ;
67+ }
68+ }
69+ if ( this . rawEvent . prev_events ) {
70+ for ( const id of this . rawEvent . prev_events ) {
71+ this . prevEventsIds . add ( id ) ;
72+ }
73+ }
6174 }
6275
6376 // don't recalculate the hash if it is already set
@@ -118,8 +131,8 @@ export abstract class PersistentEventBase<
118131 const { hashes, signatures, ...event } = this . rawEvent ;
119132 return {
120133 ...event ,
121- auth_events : Array . from ( new Set ( [ ... this . rawEvent . auth_events ] ) ) ,
122- prev_events : Array . from ( new Set ( [ ... this . rawEvent . prev_events ] ) ) ,
134+ auth_events : Array . from ( this . authEventsIds ) ,
135+ prev_events : Array . from ( this . prevEventsIds ) ,
123136 } ;
124137 }
125138
@@ -143,11 +156,11 @@ export abstract class PersistentEventBase<
143156 }
144157
145158 getAuthEventIds ( ) {
146- return this . rawEvent . auth_events ;
159+ return Array . from ( this . authEventsIds ) ;
147160 }
148161
149162 getPreviousEventIds ( ) {
150- return this . rawEvent . prev_events ;
163+ return Array . from ( this . prevEventsIds ) ;
151164 }
152165
153166 isState ( ) {
@@ -419,15 +432,17 @@ export abstract class PersistentEventBase<
419432 }
420433
421434 addPrevEvents ( events : PersistentEventBase < Version > [ ] ) {
422- this . rawEvent . prev_events . push ( ...events . map ( ( e ) => e . eventId ) ) ;
435+ for ( const event of events ) {
436+ this . prevEventsIds . add ( event . eventId ) ;
437+ }
423438 if ( this . rawEvent . depth <= events [ events . length - 1 ] . depth ) {
424439 this . rawEvent . depth = events [ events . length - 1 ] . depth + 1 ;
425440 }
426441 return this ;
427442 }
428443
429444 authedBy ( event : PersistentEventBase < Version > ) {
430- this . rawEvent . auth_events . push ( event . eventId ) ;
445+ this . authEventsIds . add ( event . eventId ) ;
431446 return this ;
432447 }
433448
0 commit comments