// @ts-check /** * ============================================================================== * Imports * ============================================================================== */ const http = require("http"); /** * Parse request cookies * ============================================================================== * * @description This function takes in a request object and returns the cookies as a JS object * * @async * * @param {object} params - main params object * @param {http.IncomingMessage} params.request - HTTPS request object * * @returns {any | null} */ module.exports = function ({ request }) { /** * Check inputs * * @description Check inputs */ /** @type {string | undefined} */ const cookieString = request.headers.cookie; if (!cookieString || typeof cookieString !== "string") { return null; } /** @type {string[]} */ const cookieSplitArray = cookieString.split(";"); /** @type {*} */ let cookieObject = {}; cookieSplitArray.forEach((keyValueString) => { const [key, value] = keyValueString.split("="); if (key && typeof key == "string") { cookieObject[key.replace(/^ +| +$/, "")] = value && typeof value == "string" ? value.replace(/^ +| +$/, "") : null; } }); /** * Make https request * * @description make a request to datasquirel.com */ return cookieObject; };