Skip to content

Commit b3228a2

Browse files
committed
chore: refactor delete undefined logic
1 parent 5a8de54 commit b3228a2

File tree

1 file changed

+21
-17
lines changed

1 file changed

+21
-17
lines changed

packages/enr/src/raw_enr.ts

+21-17
Original file line numberDiff line numberDiff line change
@@ -126,12 +126,7 @@ export class RawEnr extends Map<ENRKey, ENRValue> {
126126
* ie, without a peer id.
127127
*/
128128
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);
135130
}
136131

137132
/**
@@ -148,12 +143,12 @@ export class RawEnr extends Map<ENRKey, ENRValue> {
148143
* Set the `waku2` field on the ENR.
149144
*/
150145
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+
);
157152
}
158153
}
159154

@@ -183,11 +178,7 @@ function setStringValue(
183178
proto: string,
184179
value: string | undefined
185180
): 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));
191182
}
192183

193184
function setNumberAsStringValue(
@@ -198,3 +189,16 @@ function setNumberAsStringValue(
198189
): void {
199190
setStringValue(map, key, proto, value?.toString(10));
200191
}
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

Comments
 (0)