/home/techb158/cosmic-risk.abdallabala.com/src/lib
NameSizeModeActions
api-client.js10120644editdlrm
crypto.js16770644editdlrm
email.js21750644editdlrm
http.js5630644editdlrm
idempotency.js5700644editdlrm
metrics.js10610644editdlrm
oidc.js17300644editdlrm
prisma.js2800644editdlrm
rate-limit.js26620644editdlrm
redis.js35170644editdlrm
request-context.js37250644editdlrm
tenant-guard.js14270644editdlrm
Edit: /home/techb158/cosmic-risk.abdallabala.com/src/lib/idempotency.js (570B)
const { redisGet, redisSet } = require('./redis'); const TTL_MS = 86_400_000; async function withIdempotency(key, handler) { if (!key) return handler(); const existing = await redisGet(`idemp:${key}`); if (existing) return JSON.parse(existing); const result = await handler(); await redisSet(`idemp:${key}`, JSON.stringify(result), TTL_MS); return result; } function getIdempotencyKey(request) { return request.headers.get("Idempotency-Key") || request.headers.get("idempotency-key") || null; } module.exports = { withIdempotency, getIdempotencyKey };