pino-princess
Version:
Prettiest Pino Prettifier in all the land
41 lines (40 loc) • 1.39 kB
JavaScript
import { Transform } from 'node:stream';
import pump from 'pump';
import abstractTransport from 'pino-abstract-transport';
import prettify from './lib/prettify.js';
import buildSafeSonicBoom from './lib/build-safe-sonic-boom.js';
function build(options) {
const pretty = prettify(options);
function transform(source) {
const stream = new Transform({
objectMode: true,
autoDestroy: true,
transform(chunk, enc, cb) {
const line = pretty(chunk);
cb(null, line);
},
});
let destination;
if ((typeof options?.destination === 'object' &&
typeof options?.destination.write === 'function') ||
options.destination instanceof Transform) {
destination = options.destination;
}
else {
destination = buildSafeSonicBoom({
dest: options.destination ?? 1,
append: options.append,
mkdir: options.mkdir,
sync: options.sync,
});
}
source.on('unknown', function (line) {
destination.write(line + '\n');
});
pump(source, stream, destination);
}
return abstractTransport(transform, { parse: 'lines' });
}
export { build };
export default build;
export { default as prettify } from './lib/prettify.js';