Files
headroom/frontend/node_modules/sveltekit-superforms/dist/actionResult.js
Santhosh Janardhanan de2d83092e feat: Reinitialize frontend with SvelteKit and TypeScript
- Delete old Vite+Svelte frontend
- Initialize new SvelteKit project with TypeScript
- Configure Tailwind CSS v4 + DaisyUI
- Implement JWT authentication with auto-refresh
- Create login page with form validation (Zod)
- Add protected route guards
- Update Docker configuration for single-stage build
- Add E2E tests with Playwright (6/11 passing)
- Fix Svelte 5 reactivity with $state() runes

Known issues:
- 5 E2E tests failing (timing/async issues)
- Token refresh implementation needs debugging
- Validation error display timing
2026-02-17 16:19:59 -05:00

50 lines
1.6 KiB
JavaScript

import { json } from '@sveltejs/kit';
import { stringify } from 'devalue';
export function actionResult(type, data, options) {
function cookieData() {
if (typeof options === 'number' || !options?.message)
return '';
const extra = [
`Path=${options?.cookieOptions?.path || '/'}`,
`Max-Age=${options?.cookieOptions?.maxAge || 120}`,
`SameSite=${options?.cookieOptions?.sameSite ?? 'Strict'}`
];
if (options?.cookieOptions?.secure) {
extra.push(`Secure`);
}
return `flash=${encodeURIComponent(JSON.stringify(options.message))}; ` + extra.join('; ');
}
const status = options && typeof options !== 'number' ? options.status : options;
const result = (struct) => {
return json({ type, ...struct }, {
status: struct.status,
headers: typeof options === 'object' && options.message
? {
'Set-Cookie': cookieData()
}
: undefined
});
};
if (type == 'error') {
return result({
status: status || 500,
error: typeof data === 'string' ? { message: data } : data
});
}
else if (type == 'redirect') {
return result({
status: status || 303,
location: data
});
}
else if (type == 'failure') {
return result({
status: status || 400,
data: stringify(data)
});
}
else {
return result({ status: status || 200, data: stringify(data) });
}
}