mirror of
https://github.com/LukeHagar/sveltekit-adapters.git
synced 2025-12-09 12:47:48 +00:00
Saving progress on appwrite and electron adapters
This commit is contained in:
82
packages/adapter-appwrite/index.js
Normal file
82
packages/adapter-appwrite/index.js
Normal file
@@ -0,0 +1,82 @@
|
||||
// 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,
|
||||
},
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user