astro
Version:
Astro is a modern site builder with web best practices, performance, and DX front-of-mind.
50 lines (49 loc) • 1.19 kB
JavaScript
import { builtinDrivers } from "unstorage";
import { fileURLToPath } from "node:url";
function isUnstorageDriver(driver) {
return driver in builtinDrivers;
}
function normalizeSessionDriverConfig(driver, options) {
if (typeof driver !== "string") {
return {
entrypoint: driver.entrypoint instanceof URL ? fileURLToPath(driver.entrypoint) : driver.entrypoint,
config: driver.config
};
}
if (["fs", "fs-lite", "fsLite"].includes(driver)) {
return {
entrypoint: builtinDrivers.fsLite,
config: {
base: ".astro/session",
...options
}
};
}
if (isUnstorageDriver(driver)) {
return {
entrypoint: builtinDrivers[driver],
config: options
};
}
return {
entrypoint: driver,
config: options
};
}
function sessionConfigToManifest(config) {
const sessionDriver = config?.driver;
if (!config || !sessionDriver) {
return void 0;
}
const driver = normalizeSessionDriverConfig(sessionDriver);
return {
driver: driver.entrypoint,
options: driver.config,
cookie: config.cookie,
ttl: config.ttl
};
}
export {
normalizeSessionDriverConfig,
sessionConfigToManifest
};