import { GroupedItem } from './types.js'; import { parseAddress } from './codec.js'; export function groupByDb(items: T[]): Map[]> { const groups = new Map[]>(); for (const item of items) { const addr = parseAddress(item.address); let group = groups.get(addr.dbNumber); if (!group) { group = []; groups.set(addr.dbNumber, group); } group.push({ addr, item }); } return groups; } export function byteRange(items: GroupedItem[], getSize: (item: T) => number): { start: number; size: number } { let min = Infinity, max = 0; for (const { addr, item } of items) { const end = addr.byteOffset + getSize(item); if (addr.byteOffset < min) min = addr.byteOffset; if (end > max) max = end; } return { start: min, size: max - min }; }