55 lines
1.5 KiB
JavaScript
55 lines
1.5 KiB
JavaScript
/**
|
|
* exception-stream.js: TODO: add file header handler.
|
|
*
|
|
* (C) 2010 Charlie Robbins
|
|
* MIT LICENCE
|
|
*/
|
|
|
|
'use strict';
|
|
|
|
const { Writable } = require('readable-stream');
|
|
|
|
/**
|
|
* TODO: add class description.
|
|
* @type {ExceptionStream}
|
|
* @extends {Writable}
|
|
*/
|
|
module.exports = class ExceptionStream extends Writable {
|
|
/**
|
|
* Constructor function for the ExceptionStream responsible for wrapping a
|
|
* TransportStream; only allowing writes of `info` objects with
|
|
* `info.exception` set to true.
|
|
* @param {!TransportStream} transport - Stream to filter to exceptions
|
|
*/
|
|
constructor(transport) {
|
|
super({ objectMode: true });
|
|
|
|
if (!transport) {
|
|
throw new Error('ExceptionStream requires a TransportStream instance.');
|
|
}
|
|
|
|
// Remark (indexzero): we set `handleExceptions` here because it's the
|
|
// predicate checked in ExceptionHandler.prototype.__getExceptionHandlers
|
|
this.handleExceptions = true;
|
|
this.transport = transport;
|
|
}
|
|
|
|
/**
|
|
* Writes the info object to our transport instance if (and only if) the
|
|
* `exception` property is set on the info.
|
|
* @param {mixed} info - TODO: add param description.
|
|
* @param {mixed} enc - TODO: add param description.
|
|
* @param {mixed} callback - TODO: add param description.
|
|
* @returns {mixed} - TODO: add return description.
|
|
* @private
|
|
*/
|
|
_write(info, enc, callback) {
|
|
if (info.exception) {
|
|
return this.transport.log(info, callback);
|
|
}
|
|
|
|
callback();
|
|
return true;
|
|
}
|
|
};
|