
Security News
PolinRider: North Korea-Linked Supply Chain Campaign Expands Across Open Source Ecosystems
PolinRider expands across npm, Packagist, Go modules, and Chrome extensions, using hidden loaders to target developer environments.
@idempotix/express
Advanced tools
Express middleware for HTTP idempotency.
npm install @idempotix/core @idempotix/express
import express from 'express';
import { express as idempotent } from '@idempotix/express';
const app = express();
app.use(express.json());
// Zero-config: memory storage, 24h TTL
app.post('/orders', idempotent(), async (req, res) => {
const order = await createOrder(req.body);
res.status(201).json(order);
});
app.post(
'/payments',
idempotent({
storage: redis(), // Storage adapter
ttl: '1h', // Cache duration
required: true, // Require Idempotency-Key header
methods: ['POST', 'PUT'], // HTTP methods to protect
failOpen: true, // Continue if storage fails
getKey: (req) => req.headers['x-request-id'], // Custom key extraction
getHash: (req) => hashObject(req.body), // Custom hash function
onHit: (key, response) => {}, // Cache hit callback
onMiss: (key) => {}, // Cache miss callback
onError: (key, error) => {}, // Error callback
}),
handler
);
Share configuration across routes:
import { configure } from '@idempotix/express';
import { redis } from '@idempotix/redis';
const idempotent = configure({
storage: redis(),
ttl: '1h',
});
app.post('/orders', idempotent(), orderHandler);
app.post('/payments', idempotent({ required: true }), paymentHandler);
| Header | Direction | Description |
|---|---|---|
Idempotency-Key | Request | Client-provided unique key |
Idempotency-Key | Response | Echo of the key used |
Idempotency-Replay | Response | true when returning cached response |
All errors follow RFC 7807 Problem Details:
| Status | Type | Cause |
|---|---|---|
| 400 | key-required | Missing key when required: true |
| 409 | conflict | Request with same key in progress |
| 422 | mismatch | Same key reused with different body |
{
"type": "https://Idempotix.dev/errors/conflict",
"title": "Conflict",
"status": 409,
"detail": "A request with this idempotency key is already being processed"
}
import { redis } from '@idempotix/redis';
app.post('/orders', idempotent({ storage: redis() }), handler);
MIT
FAQs
Express middleware for Idempotix idempotency
We found that @idempotix/express demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
PolinRider expands across npm, Packagist, Go modules, and Chrome extensions, using hidden loaders to target developer environments.

Security News
Open source attacks are accelerating as AI coding agents pull in dependencies faster, with less human review.

Research
/Security News
Malicious Chrome and Firefox extensions posed as free VPNs while stealing clipboard data through later extension updates.