JSFiddle - React, Tailwind, and code Playground

JavaScript

var i, 
    result = [],
    current,
    propCounter,
    content = [ { "name":"5-HP-N/A-N/A-F8", "node":{ "name":"5", "id":14 }, "timeline":{ "epc":null, "m1":null, "m2":null, "m3":1554087600000, "m4":1593572400000, "m5":1625108400000, "m6":1641006000000, "m7":1656644400000 }, "fab":{ "name":"F8", "id":1 } }, { "name":"5-HP-N/A-N/A-F8", "node":{ "name":"5", "id":14 }, "timeline":{ "epc":null, "m1":null, "m2":null, "m3":1554087600000, "m4":1593572400000, "m5":1625108400000, "m6":1641006000000, "m7":1656644400000 }, "fab":{ "name":"F8", "id":1 } }],
    
    getMileStone = function(obj) {
        if(!obj) { return };
      propCounter = 1;
        for(propCounter = 1; propCounter <= 7; propCounter++) {
            if(obj.timeline["m" + propCounter]) {
                return {key: "m" + propCounter, value: obj.timeline["m" + propCounter]};
            }
        }
    };

for(i=0;i< content.length;i++) {
   current = content[i];
   firstMileStone = getMileStone(current); 
   secondMileStone = getMileStone(current[i + 1]) || firstMileStone;
    result.push({
      'start': new Date(current.epc || firstMileStone.value),
      'end': new Date(current.m1 || secondMileStone.value),
      'content': firstMileStone.key,
      'group' : current.name,
      'classname' : firstMileStone.value
   });
}

//here are your result arrays as an array ob objects
for(i=0; i < result.length; i++) {
    alert(JSON.stringify(result[i], null, 2));
}