UNPKG

@worker-tools/middleware

Version:

A suite of standalone HTTP server middlewares for Worker Runtimes.

47 lines (46 loc) 2.25 kB
import type { StorageArea } from 'kv-storage-interface'; import type { Context } from './context.js'; import type { Awaitable } from './utils/common-types.js'; import type { UnsignedCookiesContext, SignedCookiesContext, EncryptedCookiesContext } from './cookies.js'; import type { FlushedContext } from './flushed.js'; declare type Rec = Record<PropertyKey, any>; declare type CookieContext = Context & (EncryptedCookiesContext | SignedCookiesContext | UnsignedCookiesContext); interface SessionContext<S extends Rec = Rec> { session: S; } export interface CookieSessionContext<S extends Rec = Rec> extends SessionContext<S> { cookieSession: S; } export interface StorageSessionContext<S extends Rec = Rec> extends SessionContext<S> { storageSession: S; } export interface CookieSessionOptions<S extends Rec = Rec> { /** The name of the session cookie. Defaults to `sid`. */ cookieName?: string; /** Session expiration time in seconds. Defaults to five minutes. */ expirationTtl?: number; /** Provide a record that serves as the default session object. Also used for type inference. */ defaultSession?: S; } export interface StorageSessionOptions<S extends Rec = Rec> extends CookieSessionOptions<S> { /** The storage area where to persist the session objects. */ storage: StorageArea; } /** * Cookie session middleware for worker runtimes. * * Requires a cookie store, preferably encrypted or signed. * * Important: This will serialize the entire session data and store it in a cookie. It is sent with every request! * Only applicable for small session objects. Use `storageSession` for a traditional, KV store-backed session. */ export declare function cookieSession<S extends Rec = Rec>(options?: CookieSessionOptions<S>): <X extends CookieContext>(ax: Awaitable<X>) => Promise<X & CookieSessionContext<S>>; /** * Session middleware for worker runtimes. * * Need to provide a `StorageArea` to persist the session between requests. * See `@worker-tools/kv-storage`. * */ export declare function storageSession<S extends Rec = Rec>(options: StorageSessionOptions<S>): <X extends CookieContext & Partial<FlushedContext>>(ax: Awaitable<X>) => Promise<X & StorageSessionContext<S>>; export {};