// @ts-check

import { CookieObject } from "../types";

/**
 * # Serialize Cookies
 * @description Convert cookie object to string array
 */
export default function serializeCookies({
    cookies,
}: {
    cookies: CookieObject[];
}): string[] {
    let cookiesStringsArray: string[] = [];

    for (let i = 0; i < cookies.length; i++) {
        const cookieObject = cookies[i];
        let cookieString = `${cookieObject.name}=${cookieObject.value}`;

        if (cookieObject.maxAge) {
            cookieString += `;Max-Age=${cookieObject.maxAge}`;
        }
        if (cookieObject.path) {
            cookieString += `;Path=${cookieObject.path}`;
        }
        if (cookieObject.domain) {
            cookieString += `;Domain=${cookieObject.domain}`;
        }
        if (cookieObject.secure) {
            cookieString += ";Secure";
        }
        if (cookieObject.httpOnly) {
            cookieString += ";HttpOnly";
        }
        if (cookieObject.sameSite) {
            cookieString += `;SameSite=${cookieObject.sameSite}`;
        }
        if (cookieObject.expires) {
            cookieString += `;expires=${cookieObject.expires}`;
        }
        if (cookieObject.priority) {
            cookieString += `;priority=${cookieObject.priority}`;
        }

        cookiesStringsArray.push(cookieString);
    }

    return cookiesStringsArray;
}