farrow-auth-session
Version:
Session-based authentication middleware for Farrow framework with flexible storage and parsing layers
34 lines • 1.92 kB
TypeScript
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