fastify-session-redis-store
Version:
Redis session store for @fastify/session
59 lines (58 loc) • 2.21 kB
TypeScript
import { MemoryStore } from "@fastify/session";
export interface SessionData {
id?: string;
cookie: {
originalMaxAge: number | null;
maxAge?: number;
signed?: boolean;
expires?: Date | null;
httpOnly?: boolean;
path?: string;
domain?: string;
secure?: boolean | "auto";
sameSite?: boolean | "lax" | "strict" | "none";
};
}
interface NormalizedRedisClient {
get(key: string): Promise<string | null>;
set(key: string, value: string, ttl?: number): Promise<string | null>;
expire(key: string, ttl: number): Promise<number | boolean>;
scanIterator(match: string, count: number): AsyncIterable<string>;
del(key: string[]): Promise<number>;
mget(key: string[]): Promise<(string | null)[]>;
}
export interface Serializer {
parse(s: string): SessionData | Promise<SessionData>;
stringify(s: SessionData): string;
}
export interface RedisStoreOptions {
client: any;
prefix?: string;
scanCount?: number;
serializer?: Serializer;
ttl?: number | ((sess: SessionData) => number);
disableTTL?: boolean;
disableTouch?: boolean;
}
export declare class RedisStore extends MemoryStore {
client: NormalizedRedisClient;
prefix: string;
scanCount: number;
serializer: Serializer;
ttl: number | ((sess: SessionData) => number);
disableTTL: boolean;
disableTouch: boolean;
constructor(opts: RedisStoreOptions);
private normalizeClient;
get(sid: string, cb?: (_err?: unknown, _data?: any) => void): Promise<void>;
set(sid: string, sess: SessionData, cb?: (_err?: unknown, _data?: any) => void): Promise<void>;
touch(sid: string, sess: SessionData, cb?: (_err?: unknown, _data?: any) => void): Promise<void>;
destroy(sid: string, cb?: (_err?: unknown, _data?: any) => void): Promise<void>;
clear(cb?: (_err?: unknown, _data?: any) => void): Promise<void>;
length(cb?: (_err?: unknown, _data?: any) => void): Promise<void>;
ids(cb?: (_err?: unknown, _data?: any) => void): Promise<void>;
all(cb?: (_err?: unknown, _data?: any) => void): Promise<void>;
private _getTTL;
private _getAllKeys;
}
export default RedisStore;