UNPKG

fa-session-redis

Version:

Redis session store for farrow-auth-session with support for both redis and ioredis clients

92 lines 3.84 kB
import { SessionStore } from 'farrow-auth-session'; export interface IoRedisLike { get(key: string): Promise<string | null>; set(key: string, value: string): Promise<string>; setex(key: string, seconds: number, value: string): Promise<string>; del(...keys: string[]): Promise<number>; expire(key: string, seconds: number): Promise<number>; ttl(key: string): Promise<number>; mget(...keys: string[]): Promise<(string | null)[]>; scan(cursor: number | string, ...args: any[]): Promise<[string, string[]]>; } export interface NodeRedisLike { get(key: string): Promise<string | null>; set(key: string, value: string): Promise<string>; setEx(key: string, seconds: number, value: string): Promise<string>; del(keyOrKeys: string | string[]): Promise<number>; expire(key: string, seconds: number): Promise<boolean>; ttl(key: string): Promise<number>; mGet(keys: string[]): Promise<(string | null)[]>; scanIterator(options: { MATCH?: string; COUNT?: number; }): AsyncIterable<string>; } export interface RedisLikeClient { get(key: string): Promise<string | null>; set(key: string, value: string): Promise<string | 'OK' | null>; del(key: string | string[]): Promise<number>; expire(key: string, seconds: number): Promise<number | boolean>; mGet?(keys: string[]): Promise<(string | null)[]>; mget?(keys: string[]): Promise<(string | null)[]>; scan?(cursor: number | string, ...args: any[]): Promise<[string, string[]]>; scanIterator?(options: { MATCH?: string; COUNT?: number; }): AsyncIterable<string>; } export interface NormalizedRedisClient { get(key: string): Promise<string | null>; set(key: string, value: string): Promise<boolean>; setex(key: string, seconds: number, value: string): Promise<boolean>; del(keyOrKeys: string | string[]): Promise<number>; expire(key: string, seconds: number): Promise<boolean>; ttl(key: string): Promise<number>; mget(keys: string[]): Promise<(string | null)[]>; scanIterator(match: string, count: number): AsyncIterable<string>; } export declare function createNormalizedRedisClient(client: RedisLikeClient): NormalizedRedisClient; export interface RedisSessionStoreOptions<UserData> { /** * Redis key prefix for sessions * @default 'session' */ prefix?: string; /** * Session expiration time in seconds * Set to false to disable expiration in Redis (but session may still expire in cookies) * @default 86400 (24 hours) */ ttl?: number | false; /** * If true, session expiration will be reset on each access * Only works when ttl is set to a number * @default false */ rolling?: boolean; /** * If true, session expiration will be renewed when close to expiry * @default false */ renew?: boolean; /** * Time in seconds before expiry to trigger renewal * Only used when renew is true * @default 600 (10 minutes) */ renewBefore?: number; /** * Custom session ID generator * @default () => ulid() */ genSessionId?: () => string; /** * Initial session data creator * @default () => ({} as UserData) */ defaultData?: () => UserData; } export declare function createRedisSessionStore<UserData = any>(client: IoRedisLike, options?: RedisSessionStoreOptions<UserData>): SessionStore<UserData, string>; export declare function createRedisSessionStore<UserData = any>(client: NodeRedisLike, options?: RedisSessionStoreOptions<UserData>): SessionStore<UserData, string>; export declare function createRedisSessionStore<UserData = any>(client: RedisLikeClient, options?: RedisSessionStoreOptions<UserData>): SessionStore<UserData, string>; //# sourceMappingURL=index.d.ts.map