import { nanoid } from 'nanoid'; export const errorHandler = (err, req, res, next) => { res.status(err?.code || err?.status || 500).json({ ...err, message: err?.message, }); } export const setJioCopilotSessionCookie = async (req, res, next = () => { }) => { let session = req?.cookies?.['__jc_session']; if (session && (!session.startsWith('jc-') || session.length !== 33)) { session = null; } if (!session) { session = `jc-${nanoid()}-${encodeTimestampToBase36()}`; const validity = 7 * 24 * 3600; // 7 days const cookieOpts = { domain: process.env.SPACE_HOST || `${'local.'}${'copilotz0.de'}`, expires: new Date((Date.now() / 1000 + validity) * 1000), httpOnly: true, secure: false, sameSite: 'Lax' }; res.cookie('__jc_session', session, cookieOpts); } req.jio_copilot_anonymous_session = session; // res.end() next(); }; export const encodeTimestampToBase36 = (timestamp) => { const currentTimestamp = timestamp || Date.now(); const base36Timestamp = currentTimestamp.toString(36); return base36Timestamp; };