@codecorn/connect-flash-new
v1.0.4
Published
Modern, type-safe Express flash middleware maintained by CodeCorn.
Maintainers
Readme
connect-flash-new
A modern, type-safe, and fully compatible flash messaging middleware for Express. This project is a clean reimplementation of the original
connect-flash— actively maintained by the community, for the community.
✨ Features
- 🔐 Safe flash message handling via session
- 🧠 TypeScript-ready (
.d.tsincluded) - ♻️ Fully compatible with CommonJS (
require) and ES Modules (import) - 🧪 Easy to test (with
supertest) - 🔥 Drop-in replacement for deprecated
connect-flash
📦 Installation
npm install @codecorn/connect-flash-new🚀 Usage
// ✅ ESM / TypeScript
import express from 'express';
import session from 'express-session';
import flash from '@codecorn/connect-flash-new';
// ✅ CommonJS (require)
const express = require('express');
const session = require('express-session');
const flash = require('@codecorn/connect-flash-new');
const app = express();
app.use(session({ secret: 'secret', resave: false, saveUninitialized: true }));
app.use(flash());
app.get('/', (req, res) => {
req.flash('info', 'Welcome back %s!', 'Federico');
res.send(req.flash('info'));
});🧪 Testing with Supertest
// ✅ ESM
import request from 'supertest';
import express from 'express';
import session from 'express-session';
import flash from '@codecorn/connect-flash-new';
// ✅ CommonJS
const request = require('supertest');
const express = require('express');
const session = require('express-session');
const flash = require('@codecorn/connect-flash-new');
const app = express();
app.use(session({ secret: 'test', resave: false, saveUninitialized: true }));
app.use(flash());
app.get('/test', (req, res) => {
req.flash('info', 'Test Message');
res.json({ messages: req.flash('info') });
});
test('should return flash message', async () => {
const res = await request(app).get('/test');
expect(res.body.messages).toContain('Test Message');
});🔐 Safe Init Helper (Optional)
If you want a one-liner to safely initialize both cookie-parser and connect-flash-new, you can use our helper:
const express = require('express');
const session = require('express-session');
const { safeFlashInit } = require('@codecorn/connect-flash-new/helpers');
const app = express();
app.use(session({ secret: process.env.SESSION_SECRET, resave: false, saveUninitialized: true }));
safeFlashInit(app); // Will use process.env.SESSION_SECRET or throw a warning🧪 Experimental: flashMessages Middleware (Preview)
In alternativa al classico flash(), puoi usare flashMessages per accedere ai messaggi flash direttamente in res.locals.sessionFlash.
Questa funzionalità è opt-in e può essere abilitata nel tuo .env o in modo programmatico:
// lib/flashMessages.js
import { flashMessages } from '@codecorn/connect-flash-new';
app.use(flashMessages);🔧 Attivazione condizionata via .env
Puoi attivarlo dinamicamente leggendo da .env:
if (process.env.ENABLE_FLASH_MESSAGES === 'true') {
app.use(flashMessages);
}Questo middleware:
- 🔄 Passa i messaggi da
req.session.flashares.locals.sessionFlash - 🧼 Svuota la sessione per evitare messaggi duplicati/zombie
- 🛡️ Inizializza
req.session.flashse mancante
⚠️ In fase sperimentale — potrà evolvere con il feedback della community.
🙏 Credits
Originally inspired by connect-flash by @jaredhanson.
This project continues the spirit of the original package, updated for modern Node.js and TypeScript environments.
