Initial commit

This commit is contained in:
2026-05-25 08:22:12 +07:00
commit a152c99cce
154 changed files with 39033 additions and 0 deletions

37
dist/shared/middleware/idempotency.js vendored Normal file
View File

@ -0,0 +1,37 @@
import { ApiError } from "../errors";
import { readIdempotency, writeIdempotency } from "../idempotency/idempotencyStore";
import { env } from "../../config/env";
export function idempotency(options) {
return function idempotencyMiddleware(req, _res, next) {
const idempotencyKey = req.header("idempotency-key");
if (!idempotencyKey) {
if (options.required === false) {
return next();
}
return next(new ApiError("DUPLICATE_REQUEST", "Missing Idempotency-Key", 400));
}
const cached = readIdempotency(options.scope, idempotencyKey);
if (cached) {
const cachedPayload = cached.response ?? cached;
const cachedStatus = cached.statusCode || 200;
return _res.status(cachedStatus).json(cachedPayload);
}
req.body = { ...(req.body || {}), __idempotencyKey: idempotencyKey };
const originalJson = _res.json.bind(_res);
const originalStatus = _res.status.bind(_res);
let statusCode = 200;
_res.status = function statusWithStore(code) {
statusCode = code;
return originalStatus(code);
};
_res.json = function jsonWithStore(payload) {
writeIdempotency(options.scope, idempotencyKey, {
response: payload,
statusCode,
at: Date.now()
}, options.ttlMs || env.IDEMPOTENCY_TTL_MS);
return originalJson(payload);
};
next();
};
}