type AdMap = { [key: string]: any; }; function pad(num: number): string { const s = num.toString(); return s.padStart(2, "0"); } function toHHMMSS(timeInSeconds: number): string { const hours = Math.floor(timeInSeconds / 3600); const minutes = Math.floor((timeInSeconds % 3600) / 60); const seconds = timeInSeconds % 60; return `${pad(hours)}:${pad(minutes)}:${pad(seconds)}.000`; } function convertOffset(offset: any): string { if (typeof offset === "number") { return toHHMMSS(offset); } else if (typeof offset === "string") { if (offset === "postroll") { return "end"; } const floatOffset = parseFloat(offset); return isNaN(floatOffset) ? offset : toHHMMSS(floatOffset); } else { return toHHMMSS(0); } } function createAdBreak(ad: AdMap): string { const offset = ad["offset"]; const id = offset.toString(); const timestamp = convertOffset(offset); const url = ad["ad_url"].toString().trim(); return ` `.trim(); } export function createVMAP(ads: AdMap[]): string { const header = ''; const footer = ""; return [header, ...ads.map(createAdBreak), footer].join("\n"); }