import { bs } from "../../../lib/as-bs"; import { JSON } from "../.."; import { BRACE_LEFT, BRACE_RIGHT, COLON, COMMA } from "../../custom/chars"; export function serializeMap>(src: T): void { const srcSize = src.size; const srcEnd = srcSize - 1; if (srcSize == 0) { bs.proposeSize(4); store(bs.offset, 8192123); bs.offset += 4; return; } let keys = src.keys(); let values = src.values(); const keyIsString = isString>(); bs.proposeSize(4 + (srcSize - 1) * 2 + srcSize * 2); store(bs.offset, BRACE_LEFT); bs.offset += 2; for (let i = 0; i < srcEnd; i++) { if (keyIsString) { JSON.__serialize(unchecked(keys[i])); } else { JSON.__serialize( JSON.internal.stringify>(unchecked(keys[i])), ); } store(bs.offset, COLON); bs.offset += 2; JSON.__serialize(unchecked(values[i])); store(bs.offset, COMMA); bs.offset += 2; } if (keyIsString) { JSON.__serialize(unchecked(keys[srcEnd])); } else { JSON.__serialize( JSON.internal.stringify>(unchecked(keys[srcEnd])), ); } store(bs.offset, COLON); bs.offset += 2; JSON.__serialize(unchecked(values[srcEnd])); store(bs.offset, BRACE_RIGHT); bs.offset += 2; }