mirror of
https://github.com/LukeHagar/sveltekit-adapters.git
synced 2025-12-06 20:57:49 +00:00
83 lines
2.2 KiB
JavaScript
83 lines
2.2 KiB
JavaScript
// adapter-appwrites.js
|
|
import { writeFileSync } from "node:fs";
|
|
import { fileURLToPath } from "url";
|
|
|
|
const files = fileURLToPath(new URL("./files", import.meta.url).href);
|
|
|
|
/** @type {import('./index.js').default} */
|
|
export default function (opts = {}) {
|
|
const { out = "build", precompress } = opts;
|
|
|
|
return {
|
|
name: "adapter-appwrite",
|
|
|
|
async adapt(builder) {
|
|
const tmp = builder.getBuildDirectory("adapter-appwrite");
|
|
|
|
// Clean up previous builds using builder's rimraf function
|
|
builder.rimraf(tmp);
|
|
builder.rimraf(out);
|
|
builder.mkdirp(tmp);
|
|
builder.mkdirp(out);
|
|
|
|
builder.log.minor("Copying assets");
|
|
builder.writeClient(`${out}/client`);
|
|
builder.writePrerendered(`${out}/prerendered`);
|
|
|
|
if (precompress) {
|
|
builder.log.minor("Compressing assets");
|
|
await Promise.all([
|
|
builder.compress(`${out}/client`),
|
|
builder.compress(`${out}/prerendered`),
|
|
]);
|
|
}
|
|
|
|
builder.log.minor("Building server");
|
|
builder.writeServer(tmp);
|
|
|
|
builder.log.info("Preparing application for Appwrite...");
|
|
|
|
let prerendered_entries = Array.from(builder.prerendered.pages.entries());
|
|
|
|
if (builder.config.kit.paths.base) {
|
|
prerendered_entries = prerendered_entries.map(([path, { file }]) => [
|
|
path,
|
|
{ file: `${builder.config.kit.paths.base}/${file}` },
|
|
]);
|
|
}
|
|
|
|
writeFileSync(
|
|
`${tmp}/manifest.js`,
|
|
[
|
|
`export const manifest = ${builder.generateManifest({
|
|
relativePath: "./",
|
|
})};`,
|
|
`export const prerendered = new Set(${JSON.stringify(
|
|
builder.prerendered.paths
|
|
)});`,
|
|
].join("\n\n")
|
|
);
|
|
|
|
// Use builder.copy to process and move the entry file
|
|
builder.copy(files, out, {
|
|
replace: {
|
|
SERVER: `./server/index.js`,
|
|
MANIFEST: "./server/manifest.js",
|
|
},
|
|
});
|
|
|
|
builder.copy(tmp, `${out}/server`, {
|
|
replace: {
|
|
SERVER: `./index.js`,
|
|
MANIFEST: ".//manifest.js",
|
|
},
|
|
});
|
|
|
|
builder.log.info("Application prepared for Appwrite");
|
|
},
|
|
supports: {
|
|
read: () => true,
|
|
},
|
|
};
|
|
}
|