function segmentData(data: T[], segmentSize: number): T[][] { return data.reduce((acc: T[][], curr, index) => { const segment = Math.floor(index / segmentSize) if (!acc[segment]) { acc[segment] = [] } acc[segment].push(curr) return acc }, []) } export function fetchSegmented( data: T[], createUrl: (ids: T[]) => string, options = {}, segmentSize = 800, ): Promise { return Promise.all( segmentData(data, segmentSize).map((ids) => useBaseFetch(createUrl(ids), options)), ).then((results) => results.flat()) } export function asEncodedJsonArray(data: T[]): string { return encodeURIComponent(JSON.stringify(data)) }