nestjs-resilience
Version:
A module for improving the reliability and fault-tolerance of your NestJS applications
20 lines (19 loc) • 822 B
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.ResilienceCommand = void 0;
const base_command_1 = require("./base.command");
const rxjs_1 = require("rxjs");
const enum_1 = require("../enum");
class ResilienceCommand extends base_command_1.BaseCommand {
execute(...args) {
this.eventBus.emit(enum_1.ResilienceEventType.Emit, this);
let observable = (0, rxjs_1.defer)(() => this.run(...args));
for (const strategy of this.strategies) {
observable = strategy.process(observable, this, ...args);
}
return (0, rxjs_1.lastValueFrom)(observable.pipe((0, rxjs_1.catchError)(error => {
throw this.onFailure(error);
}), (0, rxjs_1.tap)(() => this.onSuccess())));
}
}
exports.ResilienceCommand = ResilienceCommand;
;