/// import { FastifyPlugin } from "fastify"; declare module "fastify" { interface FastifyRequest { /** Allows to access or modify the session data. */ session: Session; /** A session store. */ sessionStore: FastifySessionPlugin.SessionStore; /** Allows to destroy the session in the store. */ destroySession(callback: (err?: Error) => void): void; } interface Session extends Record { sessionId: string; encryptedSessionId: string; /** Updates the `expires` property of the session. */ touch(): void; /** Regenerates the session by generating a new `sessionId`. */ regenerate(): void; } } declare namespace FastifySessionPlugin { interface SessionStore { set(sessionId: string, session: any, callback: (err?: Error) => void): void; get( sessionId: string, callback: (err?: Error, session?: any) => void ): void; destroy(sessionId: string, callback: (err?: Error) => void): void; } interface Options { /** * The secret used to sign the cookie. * * Must be an array of strings, or a string with length 32 or greater. If an array, the first secret is used to * sign new cookies, and is the first one to be checked for incoming cookies. * Further secrets in the array are used to check incoming cookies, in the order specified. * * Note that the array may be manipulated by the rest of the application during its life cycle. * This can be done by storing the array in a separate variable that is later manipulated with mutating methods * like unshift(), pop(), splice(), etc. * This can be used to rotate the signing secret at regular intervals. * A secret should remain somewhere in the array as long as there are active sessions with cookies signed by it. * Secrets management is left up to the rest of the application. */ secret: string | string[]; /** The name of the session cookie. Defaults to `sessionId`. */ cookieName?: string; /** The options object used to generate the `Set-Cookie` header of the session cookie. */ cookie?: CookieOptions; /** * A session store. * Compatible to stores from express-session. * Defaults to a simple in memory store. * Note: The default store should not be used in a production environment because it will leak memory. */ store?: FastifySessionPlugin.SessionStore; /** * Save sessions to the store, even when they are new and not modified. * Defaults to true. Setting this to false can be useful to save storage space and to comply with the EU cookie law. */ saveUninitialized?: boolean; } interface CookieOptions { /** The `Path` attribute. Defaults to `/` (the root path). */ path?: string; /** A `number` in milliseconds that specifies the `Expires` attribute by adding the specified milliseconds to the current date. If both `expires` and `maxAge` are set, then `expires` is used. */ maxAge?: number; /** The `boolean` value of the `HttpOnly` attribute. Defaults to true. */ httpOnly?: boolean; /** The `boolean` value of the `Secure` attribute. Set this option to false when communicating over an unencrypted (HTTP) connection. Value can be set to `auto`; in this case the `Secure` attribute will be set to false for HTTP request, in case of HTTPS it will be set to true. Defaults to true. */ secure?: boolean | string; /** The expiration `date` used for the `Expires` attribute. If both `expires` and `maxAge` are set, then `expires` is used. */ expires?: Date | number; /** The `boolean` or `string` of the `SameSite` attribute. */ sameSite?: string | boolean; /** The `Domain` attribute. */ domain?: string; } } declare const FastifySessionPlugin: FastifyPlugin; export default FastifySessionPlugin;