Skip to content

Commit

Permalink
Use pino-abstract-transport (#222)
Browse files Browse the repository at this point in the history
  • Loading branch information
mcollina committed Sep 3, 2021
1 parent b124cea commit 72808da
Show file tree
Hide file tree
Showing 7 changed files with 79 additions and 24 deletions.
23 changes: 7 additions & 16 deletions bin.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,18 @@ const fs = require('fs')
const args = require('args')
const path = require('path')
const pump = require('pump')
const split = require('split2')
const { Transform } = require('readable-stream')
const prettyFactory = require('./')
const bourne = require('@hapi/bourne')
const JoyCon = require('joycon')
const stripJsonComments = require('strip-json-comments')

const build = require('./')
const CONSTANTS = require('./lib/constants')
const { isObject } = require('./lib/utils')

const bourne = require('@hapi/bourne')
const stripJsonComments = require('strip-json-comments')
const parseJSON = input => {
return bourne.parse(stripJsonComments(input), { protoAction: 'remove' })
}

const JoyCon = require('joycon')
const joycon = new JoyCon({
parseJSON,
files: [
Expand Down Expand Up @@ -88,17 +87,9 @@ opts = Object.assign({}, config, opts)
// set defaults
opts.errorLikeObjectKeys = opts.errorLikeObjectKeys || 'err,error'
opts.errorProps = opts.errorProps || ''
const pretty = prettyFactory(opts)
const prettyTransport = new Transform({
objectMode: true,
transform (chunk, enc, cb) {
const line = pretty(chunk.toString())
if (line === undefined) return cb()
cb(null, line)
}
})

pump(process.stdin, split(), prettyTransport, process.stdout)
const res = build(opts)
pump(process.stdin, res)

// https://github.com/pinojs/pino/pull/358
/* istanbul ignore next */
Expand Down
48 changes: 44 additions & 4 deletions index.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,13 @@
'use strict'

const { options: coloretteOptions } = require('colorette')
const pump = require('pump')
const { Transform } = require('readable-stream')
const abstractTransport = require('pino-abstract-transport')
const jmespath = require('jmespath')
const sonic = require('sonic-boom')
const bourne = require('@hapi/bourne')

const colors = require('./lib/colors')
const { ERROR_LIKE_KEYS, MESSAGE_KEY, TIMESTAMP_KEY } = require('./lib/constants')
const {
Expand All @@ -15,7 +21,6 @@ const {
filterLog
} = require('./lib/utils')

const bourne = require('@hapi/bourne')
const jsonParser = input => {
try {
return { value: bourne.parse(input, { protoAction: 'remove' }) }
Expand Down Expand Up @@ -165,6 +170,41 @@ function prettyFactory (options) {
}
}

prettyFactory.prettyFactory = prettyFactory
prettyFactory.default = prettyFactory
module.exports = prettyFactory
function build (opts = {}) {
const pretty = prettyFactory(opts)
return abstractTransport(function (source) {
const stream = new Transform({
objectMode: true,
autoDestroy: true,
transform (chunk, enc, cb) {
const line = pretty(chunk)
if (line === undefined) {
cb()
return
}

cb(null, line)
}
})

const destination = sonic({ dest: opts.destination || 1, sync: false })
/* istanbul ignore else */
if (destination.fd === 1) {
// We cannot close the output
destination.end = function () {
this.emit('close')
}
}

source.on('unknown', function (line) {
destination.write(line + '\n')
})

pump(source, stream, destination)
return stream
}, { parse: 'lines' })
}

module.exports = build
module.exports.prettyFactory = prettyFactory
module.exports.default = build
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -39,10 +39,11 @@
"fast-safe-stringify": "^2.0.7",
"jmespath": "^0.15.0",
"joycon": "^3.0.0",
"pino-abstract-transport": "^0.2.0",
"pump": "^3.0.0",
"readable-stream": "^3.6.0",
"rfdc": "^1.3.0",
"split2": "^3.1.1",
"sonic-boom": "^2.2.0",
"strip-json-comments": "^3.1.1"
},
"devDependencies": {
Expand Down
8 changes: 7 additions & 1 deletion test/basic.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@ const os = require('os')
const test = require('tap').test
const pino = require('pino')
const dateformat = require('dateformat')
const _prettyFactory = require('../')
const pinoPretty = require('..')
const _prettyFactory = pinoPretty.prettyFactory

function prettyFactory (opts) {
if (!opts) {
Expand Down Expand Up @@ -728,5 +729,10 @@ test('basic prettifier tests', (t) => {
log.info({ msg: 'message' })
})

t.test('default options', (t) => {
t.plan(1)
t.doesNotThrow(pinoPretty)
})

t.end()
})
17 changes: 17 additions & 0 deletions test/cli.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,23 @@ test('cli', (t) => {
t.teardown(() => child.kill())
})

t.test('end stdin does not end the destination', (t) => {
t.plan(2)
const child = spawn(process.argv[0], [bin], { env })
child.on('error', t.threw)

child.stdout.on('data', (data) => {
t.equal(data.toString(), 'aaa\n')
})

child.stdin.end('aaa\n')
child.on('exit', function (code) {
t.equal(code, 0)
})

t.teardown(() => child.kill())
})

;['--timestampKey', '-a'].forEach((optionName) => {
t.test(`uses specified timestamp key via ${optionName}`, (t) => {
t.plan(1)
Expand Down
2 changes: 1 addition & 1 deletion test/crlf.test.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
'use strict'

const test = require('tap').test
const _prettyFactory = require('../')
const _prettyFactory = require('../').prettyFactory

function prettyFactory (opts) {
if (!opts) {
Expand Down
2 changes: 1 addition & 1 deletion test/error-objects.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ const os = require('os')
const test = require('tap').test
const pino = require('pino')
const serializers = pino.stdSerializers
const _prettyFactory = require('../')
const _prettyFactory = require('../').prettyFactory

function prettyFactory (opts) {
if (!opts) {
Expand Down

0 comments on commit 72808da

Please sign in to comment.