@@ -126,12 +126,7 @@ export class RawEnr extends Map<ENRKey, ENRValue> {
126
126
* ie, without a peer id.
127
127
*/
128
128
set multiaddrs ( multiaddrs : Multiaddr [ ] | undefined ) {
129
- if ( multiaddrs === undefined ) {
130
- this . delete ( "multiaddrs" ) ;
131
- } else {
132
- const multiaddrsBuf = encodeMultiaddrs ( multiaddrs ) ;
133
- this . set ( "multiaddrs" , multiaddrsBuf ) ;
134
- }
129
+ deleteUndefined ( this , "multiaddrs" , multiaddrs , encodeMultiaddrs ) ;
135
130
}
136
131
137
132
/**
@@ -148,12 +143,12 @@ export class RawEnr extends Map<ENRKey, ENRValue> {
148
143
* Set the `waku2` field on the ENR.
149
144
*/
150
145
set waku2 ( waku2 : Waku2 | undefined ) {
151
- if ( waku2 === undefined ) {
152
- this . delete ( "waku2" ) ;
153
- } else {
154
- const byte = encodeWaku2 ( waku2 ) ;
155
- this . set ( "waku2" , new Uint8Array ( [ byte ] ) ) ;
156
- }
146
+ deleteUndefined (
147
+ this ,
148
+ "waku2" ,
149
+ waku2 ,
150
+ ( w ) => new Uint8Array ( [ encodeWaku2 ( w ) ] )
151
+ ) ;
157
152
}
158
153
}
159
154
@@ -183,11 +178,7 @@ function setStringValue(
183
178
proto : string ,
184
179
value : string | undefined
185
180
) : void {
186
- if ( value !== undefined ) {
187
- map . set ( key , convertToBytes ( proto , value ) ) ;
188
- } else {
189
- map . delete ( key ) ;
190
- }
181
+ deleteUndefined ( map , key , value , convertToBytes . bind ( { } , proto ) ) ;
191
182
}
192
183
193
184
function setNumberAsStringValue (
@@ -198,3 +189,16 @@ function setNumberAsStringValue(
198
189
) : void {
199
190
setStringValue ( map , key , proto , value ?. toString ( 10 ) ) ;
200
191
}
192
+
193
+ function deleteUndefined < K , V , W > (
194
+ map : Map < K , W > ,
195
+ key : K ,
196
+ value : V | undefined ,
197
+ transform : ( v : V ) => W
198
+ ) : void {
199
+ if ( value !== undefined ) {
200
+ map . set ( key , transform ( value ) ) ;
201
+ } else {
202
+ map . delete ( key ) ;
203
+ }
204
+ }
0 commit comments