Skip to content

Instantly share code, notes, and snippets.

@unlocomqx
Last active August 5, 2025 14:35
Show Gist options
  • Save unlocomqx/b7cebba61fb88cb128f8b803efd025bd to your computer and use it in GitHub Desktop.
Save unlocomqx/b7cebba61fb88cb128f8b803efd025bd to your computer and use it in GitHub Desktop.
export const page_load = async (
{ fetch, route }: RequestEvent,
extra_data: Record<string, any> = {}
): Promise<any> => {
if (!route.id) {
return error(401, 'Bad request');
}
const backend_url = getBackendURL(route.id, 'page');
for (const [key, value] of Object.entries(extra_data)) {
backend_url.searchParams.set(key, value);
}
const res = await fetch(backend_url, {
credentials: 'include'
});
return res.json();
};
export const layout_load = async (
{ fetch, route }: RequestEvent,
force_route: string | null = null
): Promise<any> => {
const route_param = force_route ? force_route : route.id || '/';
const backend_url = getBackendURL(route_param, 'layout');
const res = await fetch(backend_url, {
credentials: 'include'
});
return res.json();
};
export const form_action = async <T>(
{
route,
action,
data
}: {
route: string | null;
action: string | null | undefined;
data: T;
},
extra_data: Record<string, any> = {}
): Promise<T & CommonResponse> => {
const backend_url = getBackendURL(route || '/', 'page');
backend_url.searchParams.set('action', action || 'default');
for (const [key, value] of Object.entries(extra_data)) {
backend_url.searchParams.set(key, value);
}
const res = await fetch(backend_url, {
method: 'POST',
credentials: 'include',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(data)
});
return res.json();
};
const getParams = () => {
return [['id_product', dpa.id_source_product || dpa.id_product]];
};
const getBackendURL = (route: string, type: string): URL => {
const backend_url = new URL(dpa.controllers.backend);
backend_url.searchParams.set('route', route);
backend_url.searchParams.set('type', type);
for (const [key, value] of getParams()) {
backend_url.searchParams.set(String(key), String(value));
}
return backend_url;
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment