@prexjs/session
v1.0.0
Published
Session middleware for Express and Connect servers with extensible stores, cookie signing, and auto-rollback.
Readme
@prexjs/session
Session middleware for Express and Connect servers with extensible stores, cookie signing, and auto-rollback.
@prexjs/session is a robust HTTP session management middleware for Node.js, Express, and Connect applications. It handles session persistence, cryptographic cookie signing, rolling expiration, and custom storage adapters.
Features
- Built-in session store support with extensible abstract
Storebase class. - Cryptographically signed session cookies via
@prexjs/cookie-signature. - Rolling session expiration support.
- Deferred response header flushing and automatic session change detection.
- RFC 6265 compliant path matching.
- Dual ES Module (
.mjs) and CommonJS (.cjs) support with TypeScript definitions.
Installation
Install using your preferred package manager:
# npm
npm install @prexjs/session
# pnpm
pnpm add @prexjs/session
# Yarn
yarn add @prexjs/session
# Bun
bun add @prexjs/sessionQuick start
import http from 'node:http';
import session from '@prexjs/session';
const sessionMiddleware = session({
secret: 'keyboard-cat-secret',
resave: false,
saveUninitialized: false,
cookie: { secure: false, maxAge: 60000 },
});
const server = http.createServer((req: any, res: any) => {
sessionMiddleware(req, res, () => {
req.session.views = (req.session.views || 0) + 1;
res.end(`You have viewed this page ${req.session.views} times`);
});
});Both default and named exports are supported:
import session, {
Store,
Cookie,
Session,
MemoryStore,
type SessionOptions,
type SessionRequest,
type SessionResponse,
} from '@prexjs/session';Examples
Custom Store Adapter
import { Store, type SessionData } from '@prexjs/session';
class CustomStore extends Store {
get(sid: string, callback: (err: any, session?: SessionData | null) => void) {
// Retrieve session by ID
}
set(sid: string, session: SessionData, callback?: (err?: any) => void) {
// Persist session
}
destroy(sid: string, callback?: (err?: any) => void) {
// Remove session
}
}Compatibility
@prexjs/session is designed for Node.js, Deno, and Bun HTTP servers and frameworks (Express, Connect).
License
This project is licensed under the MIT License. See LICENSE for the full license text.
Related projects
- prex.js — prex.js monorepo and ecosystem.
