astro
Version:
Astro is a modern site builder with web best practices, performance, and DX front-of-mind.
30 lines (29 loc) • 1.24 kB
JavaScript
import * as z from "zod/v4";
export const SessionDriverConfigSchema = z.object({
config: z.record(z.string(), z.any()).optional(),
entrypoint: z.union([z.string(), z.instanceof(URL)])
});
const SessionObjectSchema = z.object({
driver: z.union([z.string().superRefine(() => {
console.warn(`Using deprecated \`session.driver\` string signature. Learn how to migrate: https://docs.astro.build/en/guides/upgrade-to/v6/#deprecated-session-driver-string-signature`);
}), SessionDriverConfigSchema]).optional(),
options: z.record(z.string(), z.any()).optional(),
cookie: z.union([z.object({
name: z.string().optional(),
domain: z.string().optional(),
path: z.string().optional(),
maxAge: z.number().optional(),
sameSite: z.union([z.enum([
"strict",
"lax",
"none"
]), z.boolean()]).optional(),
secure: z.boolean().optional()
}), z.string().transform((name) => ({ name }))]).optional(),
ttl: z.number().optional()
});
// `session: false` opts out of session support entirely so the session
// runtime and any adapter-provided driver can be tree-shaken from the
// SSR bundle.
// See packages/astro/src/core/session/provider-disabled.ts.
export const SessionSchema = z.union([z.literal(false), SessionObjectSchema]);