const objectTrimmer = ( objectList: T[], length: number, { participatingFields = [], trimFromStart = true }: { participatingFields: (keyof T)[], trimFromStart?: boolean }) => { let participatingLength = 0 let i = objectList.length - 1 while (i >= 0) { participatingLength = 0 for (const field of participatingFields) { participatingLength += JSON.stringify(objectList[i][field]).length if (participatingLength > length) { break } } i-- } return trimFromStart ? objectList.slice(i + 1) : objectList.slice(0, i + 1) } export {objectTrimmer}