61 lines
1.9 KiB
JavaScript
61 lines
1.9 KiB
JavaScript
import { isAstroServerEnvironment } from "../environments.js";
|
|
import { fileURLToPath } from "node:url";
|
|
import { ASTRO_VITE_ENVIRONMENT_NAMES } from "../core/constants.js";
|
|
const VIRTUAL_CLIENT_ID = "virtual:astro:adapter-config/client";
|
|
const RESOLVED_VIRTUAL_CLIENT_ID = "\0" + VIRTUAL_CLIENT_ID;
|
|
function vitePluginAdapterConfig(settings) {
|
|
return {
|
|
name: "astro:adapter-config",
|
|
config() {
|
|
const { adapter } = settings;
|
|
if (adapter && adapter.entrypointResolution === "auto" && adapter.serverEntrypoint) {
|
|
return {
|
|
environments: {
|
|
[ASTRO_VITE_ENVIRONMENT_NAMES.ssr]: {
|
|
build: {
|
|
rollupOptions: {
|
|
input: {
|
|
index: typeof adapter.serverEntrypoint === "string" ? adapter.serverEntrypoint : fileURLToPath(adapter.serverEntrypoint)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
};
|
|
}
|
|
},
|
|
resolveId: {
|
|
filter: {
|
|
id: new RegExp(`^${VIRTUAL_CLIENT_ID}$`)
|
|
},
|
|
handler() {
|
|
return RESOLVED_VIRTUAL_CLIENT_ID;
|
|
}
|
|
},
|
|
load: {
|
|
filter: {
|
|
id: new RegExp(`^${RESOLVED_VIRTUAL_CLIENT_ID}$`)
|
|
},
|
|
handler() {
|
|
if (isAstroServerEnvironment(this.environment)) {
|
|
return {
|
|
code: `export const internalFetchHeaders = {};`
|
|
};
|
|
}
|
|
const adapter = settings.adapter;
|
|
const clientConfig = adapter?.client || {};
|
|
let internalFetchHeaders = {};
|
|
if (clientConfig.internalFetchHeaders) {
|
|
internalFetchHeaders = typeof clientConfig.internalFetchHeaders === "function" ? clientConfig.internalFetchHeaders() : clientConfig.internalFetchHeaders;
|
|
}
|
|
return {
|
|
code: `export const internalFetchHeaders = ${JSON.stringify(internalFetchHeaders)};`
|
|
};
|
|
}
|
|
}
|
|
};
|
|
}
|
|
export {
|
|
vitePluginAdapterConfig
|
|
};
|