Jofthomas's picture
Jofthomas HF staff
bulk
ce8b18b
raw
history blame
601 Bytes
export function parseMap<Id, Serialized, Parsed>(
records: Serialized[],
constructor: new (r: Serialized) => Parsed,
getId: (r: Parsed) => Id,
): Map<Id, Parsed> {
const out = new Map();
for (const record of records) {
const parsed = new constructor(record);
const id = getId(parsed);
if (out.has(id)) {
throw new Error(`Duplicate ID ${id}`);
}
out.set(id, parsed);
}
return out;
}
export function serializeMap<Serialized, T extends { serialize(): Serialized }>(
map: Map<string, T>,
): Serialized[] {
return [...map.values()].map((v) => v.serialize());
}