##Update
As requested in comment. Using a while loop and more along the lines as I would write it to be consistent with internal standards. Please note this is not as maintainable if used in a general JS work environment.
const grouping = Object.freeze({
maxSize: 50,
delimiter: " + ",
prefix: "PUT ",
requests(reqs, {maxSize: max, delimiter: del, prefix: pre} = grouping) {
var prev = {put: pre + reqs.shift().put};
const grouped = [prev];
while (reqs.length) {
const next = reqs.shift().put;
const putGroup = prev.put + del + next;
if (putGroup.length <= max) { prev.put = putGroup }
else { grouped.push(prev = {put: pre + next}) }
}
return grouped;
},
});
const requests = [
{ put: "/firstName=Danny" },
{ put: "/lastName=Williams" },
{ put: "/[email protected]" },
{ put: "/address=1984 Some St, Very long named place. Woop Woop 6162" }
];
console.log( grouping.requests([...requests]));