@node-idempotency/core
Version:
A Race-Condition free Node.js library that ensures idempotency for requests, preventing unintended duplicate operations.
36 lines • 1.26 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.MakeIdemPotent = void 0;
const idempotency_1 = require("./idempotency");
function MakeIdemPotent({ storage, options, requestBuilder, }) {
const idempotency = new idempotency_1.Idempotency(storage, options);
return function (_, __, descriptor) {
const originalMethod = descriptor.value;
descriptor.value = async function (...args) {
const params = requestBuilder(...args);
const cached = await idempotency.onRequest(params);
if (cached !== undefined) {
return cached;
}
let result;
let error;
try {
result = await originalMethod.apply(this, args);
}
catch (err) {
error = err;
throw err;
}
finally {
const response = error
? { error }
: { body: result };
await idempotency.onResponse(params, response);
}
return result;
};
return descriptor;
};
}
exports.MakeIdemPotent = MakeIdemPotent;
//# sourceMappingURL=indempotency.decorator.js.map