rx-debugger
Version:
Easily debug rxjs pipes
34 lines • 1.13 kB
JavaScript
import { COMPLETE_OPERATOR, ERROR_OPERATOR, START_OPERATOR } from './logger';
import { tap } from 'rxjs/operators';
/**
* Prints data after each pipe operator does its job, without waiting observable complete or error.
* This logger is advised when debugging long observables or subjects.
*/
export class RealTimeLogger {
constructor(serializer, channel) {
this.serializer = serializer;
this.channel = channel;
}
end() {
return tap({
error: () => this.print(ERROR_OPERATOR, undefined),
complete: () => this.print(COMPLETE_OPERATOR, undefined),
});
}
log(name) {
return this.entry(name);
}
start() {
return this.entry(START_OPERATOR);
}
entry(name) {
return tap((value) => this.print(name, value));
}
print(name, value) {
this.channel.log(new Date().toISOString(), name, this.serialization(value));
}
serialization(value) {
return this.serializer.deserialize(this.serializer.serialize(value));
}
}
//# sourceMappingURL=real-time-logger.js.map