Files
Patryk Rzucidlo (PTKDev) 770dea9257 [Release] v0.2.0
2023-02-11 01:11:16 +01:00

76 lines
1.6 KiB
JavaScript

import fs from "fs";
/**
* @typedef {{
* name: string;
* test: () => boolean;
* defaults: import('./index').AdapterOptions;
* done: (builder: import('@sveltejs/kit').Builder) => void;
* }}
* Platform */
// This function is duplicated in adapter-vercel
/** @param {import('@sveltejs/kit').Builder} builder */
function static_vercel_config(builder) {
/** @type {any[]} */
const prerendered_redirects = [];
/** @type {Record<string, { path: string }>} */
const overrides = {};
for (const [src, redirect] of builder.prerendered.redirects) {
prerendered_redirects.push({
src,
headers: {
Location: redirect.location,
},
status: redirect.status,
});
}
for (const [path, page] of builder.prerendered.pages) {
if (path.endsWith("/") && path !== "/") {
prerendered_redirects.push(
{ src: path, dest: path.slice(0, -1) },
{ src: path.slice(0, -1), status: 308, headers: { Location: path } },
);
overrides[page.file] = { path: path.slice(1, -1) };
} else {
overrides[page.file] = { path: path.slice(1) };
}
}
return {
version: 3,
routes: [
...prerendered_redirects,
{
src: `/${builder.getAppPath()}/immutable/.+`,
headers: {
"cache-control": "public, immutable, max-age=31536000",
},
},
{
handle: "filesystem",
},
],
overrides,
};
}
/** @type {Platform[]} */
export const platforms = [
{
name: "Vercel",
test: () => !!process.env.VERCEL,
defaults: {
pages: ".vercel/output/static",
},
done: (builder) => {
const config = static_vercel_config(builder);
fs.writeFileSync(".vercel/output/config.json", JSON.stringify(config, null, " "));
},
},
];