function domToMap(node) {
const map = new Map();
if (node.children.length === 0 && node.innerHTML) {
map.set("content", node.innerHTML);
}
const counts = childCounts(node);
for (const child of node.children) {
const { localName } = child;
if (counts[localName] > 1) {
const array = map.get(localName) || [];
array.push(domToMap(child));
map.set(localName, array);
} else {
map.set(localName, domToMap(child));
}
}
let attrs = node.attributes;
if (attrs) {
for (let i = attrs.length - 1; i >= 0; i--) {
map.set(attrs[i].name, attrs[i].value);
}
}
return map;
}