UNPKG

svelte-guardian

Version:

Batteries included authentication for SvelteKit applications.

63 lines (62 loc) 2.14 kB
//Optional import util export const optionalImport = async (packageName) => { try { const optionalPackage = await import(packageName); return optionalPackage; } catch (e) { console.log(`${packageName} not found. Make sure it is installed if you plan on using it`, e); } }; export const convertEventRequestBodyFromJsonToFormData = async (event) => { const requestClone = event.request.clone(); const request = event.request; const contentType = request.headers.get('content-type'); // Early check based on content-type if (contentType?.includes('application/x-www-form-urlencoded') || contentType?.includes('multipart/form-data')) return event; if (contentType?.includes('application/json')) { const jsonData = await requestClone.json(); const formData = getFormData(jsonData); const newRequest = new Request(event.request.url, { method: event.request.method, headers: event.request.headers, body: formData }); // Create a new event object with the updated request newRequest.formData = () => formData; return { ...event, request: newRequest }; } try { const clonedRequest = request.clone(); const formData = await clonedRequest.formData(); return event; const jsonData = await clonedRequest.json(); const newFormData = getFormData(jsonData); const newRequest = new Request(event.request.url, { method: event.request.method, headers: event.request.headers, body: newFormData }); newRequest.formData = () => formData; // Create a new event object with the updated request return { ...event, request: newRequest }; } catch { // Unable to read body return event; } return event; }; function getFormData(object) { const formData = new FormData(); Object.keys(object).forEach((key) => formData.append(key, object[key])); return formData; }