full-stack-svelte-kit
Version:
This framework is built on top of `@sveltejs/kit`.
93 lines (82 loc) • 2.37 kB
JavaScript
export default function ({
ssr_content,
hasLoad,
hasAction,
usesTS,
hasMetaFn,
}) {
if (!hasLoad && !hasAction) {
return ssr_content;
}
if (usesTS) {
ssr_content += "\n";
ssr_content += `
type __Loader_Result = {
headers?: Record<string, string | string[]>;
props?: Record<any, any>;
error?: string | Error;
status?: number;
redirect?: string;
maxage?: string;
}
type __Action_Result = {
headers?: Record<string, string | string[]>;
data?: Record<any, any>;
errors?: Record<string, string>;
redirect?: string;
status?: number;
}
`;
}
if (hasLoad) {
ssr_content += "\n";
ssr_content += `
export const get = async function(params){
const loaded = await loader(params) ${
usesTS ? "as unknown as __Loader_Result" : ""
};
let _metadata = {};
${
hasMetaFn
? `
_metadata = await metadata(loaded?.props ${
usesTS ? "as unknown as any" : ""
});
`
: ""
}
const loadedProps = loaded?.props || {};
const metaProps = { ${hasMetaFn ? '_metadata: _metadata' : ''} };
return {
headers: loaded?.headers || {},
body: {
props: {...loadedProps, ...metaProps},
error: loaded?.error,
status: loaded?.status,
redirect: loaded?.redirect,
maxage: loaded?.maxage
}
}
}
`;
}
if (hasAction) {
ssr_content += "\n";
ssr_content += `
export const post = async function(params){
const loaded = await action(params) ${
usesTS ? "as unknown as __Action_Result" : ""
};
return {
headers: loaded?.headers || {},
body: {
data: loaded?.data,
errors: loaded?.errors,
status: loaded?.status,
}
}
}
`;
}
return ssr_content;
}