UNPKG

farrow-auth-session

Version:

Session-based authentication middleware for Farrow framework with flexible storage and parsing layers

34 lines 1.92 kB
import { MaybeAsyncResponse, RequestInfo, Response } from 'farrow-http'; import { Context, Middleware } from 'farrow-pipeline'; export type SessionStore<UserData, Credit> = { get(userCredentials: Credit): Promise<UserData | null | undefined>; set(userData: UserData): Promise<boolean | undefined>; create(userData?: UserData): Promise<UserData | undefined>; destroy(): Promise<boolean | undefined>; touch?(): Promise<boolean | undefined>; }; export type SessionParser<Credit> = { get(request: RequestInfo): Promise<Credit | null>; set(): Promise<Response>; remove(): Promise<Response>; }; export type SessionConfig<UserData, Credit> = { autoCreateOnMissing: boolean; sessionUserDataCtx: SessionUserDataCtx<UserData>; autoSave: boolean; sessionParser: SessionParser<Credit>; sessionStore: SessionStore<UserData, Credit>; }; export type SessionUserDataCtx<D> = Context<D | undefined> & { saveToStore: () => Promise<boolean | undefined>; regenerate: () => Promise<boolean | undefined>; destroy: () => Promise<boolean | undefined>; readonly isModified: boolean; }; export declare const createSessionCtx: <D>(defaultData: D) => SessionUserDataCtx<D>; export declare const sessionHeaderCtx: Context<Response[]>; export type InferUserData<T> = T extends SessionConfig<infer U, any> ? U : never; export type InferCredit<T> = T extends SessionConfig<any, infer C> ? C : never; export declare const createFarrowSession: <TUserData = any, TCredit = any, TConfig extends SessionConfig<TUserData, TCredit> = SessionConfig<TUserData, TCredit>>(config: TConfig) => Middleware<RequestInfo, MaybeAsyncResponse>; export declare const createSession: <TUserData = any, TCredit = any, TConfig extends SessionConfig<TUserData, TCredit> = SessionConfig<TUserData, TCredit>>(config: TConfig) => Middleware<RequestInfo, MaybeAsyncResponse>; //# sourceMappingURL=auth.d.ts.map