{"_id":"pino-abstract-transport","_rev":"4091803","name":"pino-abstract-transport","description":"Write Pino transports easily","dist-tags":{"latest":"3.0.0"},"maintainers":[{"name":"jsumners","email":"james.sumners@gmail.com"},{"name":"matteo.collina","email":""},{"name":"watson","email":""}],"time":{"modified":"2025-12-02T22:23:44.000Z","created":"2021-04-10T21:08:38.942Z","3.0.0":"2025-10-06T12:21:06.579Z","2.0.0":"2024-09-03T07:14:18.315Z","1.2.0":"2024-04-22T12:30:52.629Z","1.1.0":"2023-09-04T09:16:48.836Z","1.0.0":"2022-06-20T15:04:26.960Z","0.5.0":"2021-11-03T07:37:51.448Z","0.4.0":"2021-10-02T21:54:47.369Z","0.3.0":"2021-09-16T07:58:51.588Z","0.2.0":"2021-05-19T10:47:00.809Z","0.1.0":"2021-04-10T21:08:38.942Z"},"users":{},"author":{"name":"Matteo Collina","email":"hello@matteocollina.com"},"repository":{"type":"git","url":"git+https://github.com/pinojs/pino-abstract-transport.git"},"versions":{"3.0.0":{"name":"pino-abstract-transport","version":"3.0.0","description":"Write Pino transports easily","main":"index.js","scripts":{"prepare":"husky install","test":"standard | snazzy && borp --check-coverage 'test/*.test.js'  && tsd","test-ci":"npm test"},"repository":{"type":"git","url":"git+https://github.com/pinojs/pino-abstract-transport.git"},"keywords":["pino","transport"],"author":{"name":"Matteo Collina","email":"hello@matteocollina.com"},"license":"MIT","bugs":{"url":"https://github.com/pinojs/pino-abstract-transport/issues"},"homepage":"https://github.com/pinojs/pino-abstract-transport#readme","dependencies":{"split2":"^4.0.0"},"devDependencies":{"@matteo.collina/tspl":"^0.2.0","@types/node":"^20.1.0","borp":"^0.20.2","husky":"^9.0.6","snazzy":"^9.0.0","standard":"^17.0.0","thread-stream":"^3.1.0","tsd":"^0.31.0"},"tsd":{"directory":"./test/types"},"_id":"pino-abstract-transport@3.0.0","gitHead":"11556d6e141366ca7cbe1138ce8ddef72eaa2558","types":"./index.d.ts","_nodeVersion":"24.7.0","_npmVersion":"11.5.1","dist":{"shasum":"b21e5f33a297e8c4c915c62b3ce5dd4a87a52c23","size":8703,"noattachment":false,"key":"/pino-abstract-transport/-/pino-abstract-transport-3.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/pino-abstract-transport/download/pino-abstract-transport-3.0.0.tgz"},"_npmUser":{"name":"jsumners","email":"james.sumners@gmail.com"},"directories":{},"maintainers":[{"name":"jsumners","email":"james.sumners@gmail.com"},{"name":"matteo.collina","email":""},{"name":"watson","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pino-abstract-transport_3.0.0_1759753266346_0.6955896566209769"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-10-06T12:21:06.579Z","publish_time":1759753266579,"_source_registry_name":"default","_cnpm_publish_time":1759753266579},"2.0.0":{"name":"pino-abstract-transport","version":"2.0.0","description":"Write Pino transports easily","main":"index.js","scripts":{"prepare":"husky install","test":"standard | snazzy && tap test/*.test.js  && tsd","test-ci":"standard | snazzy && tap test/*.test.js --coverage-report=lcovonly && tsd"},"repository":{"type":"git","url":"git+https://github.com/pinojs/pino-abstract-transport.git"},"keywords":["pino","transport"],"author":{"name":"Matteo Collina","email":"hello@matteocollina.com"},"license":"MIT","bugs":{"url":"https://github.com/pinojs/pino-abstract-transport/issues"},"homepage":"https://github.com/pinojs/pino-abstract-transport#readme","dependencies":{"split2":"^4.0.0"},"devDependencies":{"@types/node":"^20.1.0","husky":"^9.0.6","snazzy":"^9.0.0","standard":"^17.0.0","tap":"^16.0.0","thread-stream":"^2.6.0","tsd":"^0.31.0"},"tsd":{"directory":"./test/types"},"_id":"pino-abstract-transport@2.0.0","gitHead":"e7861ecbbfdcc52f7b3be5ca41722c62b410f271","types":"./index.d.ts","_nodeVersion":"20.16.0","_npmVersion":"10.8.1","dist":{"shasum":"de241578406ac7b8a33ce0d77ae6e8a0b3b68a60","size":8459,"noattachment":false,"key":"/pino-abstract-transport/-/pino-abstract-transport-2.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/pino-abstract-transport/download/pino-abstract-transport-2.0.0.tgz"},"_npmUser":{"name":"matteo.collina","email":"hello@matteocollina.com"},"directories":{},"maintainers":[{"name":"jsumners","email":"james.sumners@gmail.com"},{"name":"matteo.collina","email":""},{"name":"watson","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pino-abstract-transport_2.0.0_1725347658035_0.19132059967505644"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-09-03T07:14:18.315Z","publish_time":1725347658315,"_source_registry_name":"default","_cnpm_publish_time":1725347658315},"1.2.0":{"name":"pino-abstract-transport","version":"1.2.0","description":"Write Pino transports easily","main":"index.js","scripts":{"prepare":"husky install","test":"standard | snazzy && tap test/*.test.js  && tsd","test-ci":"standard | snazzy && tap test/*.test.js --coverage-report=lcovonly && tsd"},"repository":{"type":"git","url":"git+https://github.com/pinojs/pino-abstract-transport.git"},"keywords":["pino","transport"],"author":{"name":"Matteo Collina","email":"hello@matteocollina.com"},"license":"MIT","bugs":{"url":"https://github.com/pinojs/pino-abstract-transport/issues"},"homepage":"https://github.com/pinojs/pino-abstract-transport#readme","dependencies":{"readable-stream":"^4.0.0","split2":"^4.0.0"},"devDependencies":{"@types/node":"^20.1.0","husky":"^9.0.6","snazzy":"^9.0.0","standard":"^17.0.0","tap":"^16.0.0","thread-stream":"^2.4.1","tsd":"^0.31.0"},"tsd":{"directory":"./test/types"},"_id":"pino-abstract-transport@1.2.0","gitHead":"bade2846f38894e7248b9b678673d2f4d26e6020","types":"./index.d.ts","_nodeVersion":"20.12.2","_npmVersion":"10.5.0","dist":{"shasum":"97f9f2631931e242da531b5c66d3079c12c9d1b5","size":8501,"noattachment":false,"key":"/pino-abstract-transport/-/pino-abstract-transport-1.2.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/pino-abstract-transport/download/pino-abstract-transport-1.2.0.tgz"},"_npmUser":{"name":"matteo.collina","email":"hello@matteocollina.com"},"directories":{},"maintainers":[{"name":"jsumners","email":"james.sumners@gmail.com"},{"name":"matteo.collina","email":""},{"name":"watson","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pino-abstract-transport_1.2.0_1713789052423_0.25092491727394095"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-04-22T12:30:52.629Z","publish_time":1713789052629,"_source_registry_name":"default","_cnpm_publish_time":1713789052629},"1.1.0":{"name":"pino-abstract-transport","version":"1.1.0","description":"Write Pino transports easily","main":"index.js","scripts":{"prepare":"husky install","test":"standard | snazzy && tap test/*.test.js  && tsd","test-ci":"standard | snazzy && tap test/*.test.js --coverage-report=lcovonly && tsd"},"repository":{"type":"git","url":"git+https://github.com/pinojs/pino-abstract-transport.git"},"keywords":["pino","transport"],"author":{"name":"Matteo Collina","email":"hello@matteocollina.com"},"license":"MIT","bugs":{"url":"https://github.com/pinojs/pino-abstract-transport/issues"},"homepage":"https://github.com/pinojs/pino-abstract-transport#readme","dependencies":{"readable-stream":"^4.0.0","split2":"^4.0.0"},"devDependencies":{"@types/node":"^20.1.0","husky":"^8.0.0","snazzy":"^9.0.0","standard":"^17.0.0","tap":"^16.0.0","tsd":"^0.28.0"},"tsd":{"directory":"./test/types"},"types":"./index.d.ts","gitHead":"61296cc87ffd8607c6a5eff86a848fd97a6a17ac","_id":"pino-abstract-transport@1.1.0","_nodeVersion":"18.17.0","_npmVersion":"9.6.7","dist":{"shasum":"083d98f966262164504afb989bccd05f665937a8","size":6185,"noattachment":false,"key":"/pino-abstract-transport/-/pino-abstract-transport-1.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/pino-abstract-transport/download/pino-abstract-transport-1.1.0.tgz"},"_npmUser":{"name":"matteo.collina","email":"hello@matteocollina.com"},"directories":{},"maintainers":[{"name":"jsumners","email":"james.sumners@gmail.com"},{"name":"matteo.collina","email":""},{"name":"watson","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pino-abstract-transport_1.1.0_1693819008663_0.38121787315103295"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2023-09-04T09:16:48.836Z","publish_time":1693819008836,"_source_registry_name":"default","_cnpm_publish_time":1693819008836},"1.0.0":{"name":"pino-abstract-transport","version":"1.0.0","description":"Write Pino transports easily","main":"index.js","scripts":{"prepare":"husky install","test":"standard | snazzy && tap test/*.test.js  && tsd","test-ci":"standard | snazzy && tap test/*.test.js --coverage-report=lcovonly && tsd"},"repository":{"type":"git","url":"git+https://github.com/pinojs/pino-abstract-transport.git"},"keywords":["pino","transport"],"author":{"name":"Matteo Collina","email":"hello@matteocollina.com"},"license":"MIT","bugs":{"url":"https://github.com/pinojs/pino-abstract-transport/issues"},"homepage":"https://github.com/pinojs/pino-abstract-transport#readme","dependencies":{"readable-stream":"^4.0.0","split2":"^4.0.0"},"devDependencies":{"@types/node":"^18.0.0","husky":"^8.0.0","snazzy":"^9.0.0","standard":"^17.0.0","tap":"^16.0.0","tsd":"^0.21.0"},"tsd":{"directory":"./test/types"},"types":"./index.d.ts","gitHead":"404395ac6756b10718d7ea7a52130ef282a1252d","_id":"pino-abstract-transport@1.0.0","_nodeVersion":"16.15.1","_npmVersion":"8.11.0","dist":{"shasum":"cc0d6955fffcadb91b7b49ef220a6cc111d48bb3","size":6130,"noattachment":false,"key":"/pino-abstract-transport/-/pino-abstract-transport-1.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/pino-abstract-transport/download/pino-abstract-transport-1.0.0.tgz"},"_npmUser":{"name":"matteo.collina","email":"hello@matteocollina.com"},"directories":{},"maintainers":[{"name":"jsumners","email":"james.sumners@gmail.com"},{"name":"matteo.collina","email":""},{"name":"watson","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pino-abstract-transport_1.0.0_1655737466801_0.04760635125881696"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2022-06-20T16:43:42.111Z","publish_time":1655737466960,"_cnpm_publish_time":1655737466960},"0.5.0":{"name":"pino-abstract-transport","version":"0.5.0","description":"Write Pino transports easily","main":"index.js","scripts":{"prepare":"husky install","test":"standard | snazzy && tap test/*.test.js  && tsd","test-ci":"standard | snazzy && tap test/*.test.js --coverage-report=lcovonly && tsd"},"repository":{"type":"git","url":"git+https://github.com/pinojs/pino-abstract-transport.git"},"keywords":["pino","transport"],"author":{"name":"Matteo Collina","email":"hello@matteocollina.com"},"license":"MIT","bugs":{"url":"https://github.com/pinojs/pino-abstract-transport/issues"},"homepage":"https://github.com/pinojs/pino-abstract-transport#readme","dependencies":{"duplexify":"^4.1.2","split2":"^4.0.0"},"devDependencies":{"@types/node":"^16.11.6","husky":"^7.0.0","snazzy":"^9.0.0","standard":"^16.0.3","tap":"^15.0.2","tsd":"^0.18.0"},"tsd":{"directory":"./test/types"},"types":"./index.d.ts","gitHead":"3a1670011db663aced797a11b1b629f3e22d8fe3","_id":"pino-abstract-transport@0.5.0","_nodeVersion":"16.11.0","_npmVersion":"8.0.0","dist":{"shasum":"4b54348d8f73713bfd14e3dc44228739aa13d9c0","size":5832,"noattachment":false,"key":"/pino-abstract-transport/-/pino-abstract-transport-0.5.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/pino-abstract-transport/download/pino-abstract-transport-0.5.0.tgz"},"_npmUser":{"name":"matteo.collina","email":"hello@matteocollina.com"},"directories":{},"maintainers":[{"name":"jsumners","email":"james.sumners@gmail.com"},{"name":"matteo.collina","email":""},{"name":"watson","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pino-abstract-transport_0.5.0_1635925071327_0.08159882696082188"},"_hasShrinkwrap":false,"publish_time":1635925071448,"_cnpm_publish_time":1635925071448},"0.4.0":{"name":"pino-abstract-transport","version":"0.4.0","description":"Write Pino transports easily","main":"index.js","scripts":{"prepare":"husky install","test":"standard | snazzy && tap test/*.test.js","test-ci":"standard | snazzy && tap test/*.test.js --coverage-report=lcovonly"},"repository":{"type":"git","url":"git+https://github.com/pinojs/pino-abstract-transport.git"},"keywords":["pino","transport"],"author":{"name":"Matteo Collina","email":"hello@matteocollina.com"},"license":"MIT","bugs":{"url":"https://github.com/pinojs/pino-abstract-transport/issues"},"homepage":"https://github.com/pinojs/pino-abstract-transport#readme","dependencies":{"duplexify":"^4.1.2","split2":"^3.2.2"},"devDependencies":{"husky":"^7.0.0","snazzy":"^9.0.0","standard":"^16.0.3","tap":"^15.0.2"},"gitHead":"3d12a49149d486cc13168603461c3c19383b240d","_id":"pino-abstract-transport@0.4.0","_nodeVersion":"16.10.0","_npmVersion":"7.24.0","dist":{"shasum":"be5913fa55542f82fccb77f6a9e04735fa583cac","size":4834,"noattachment":false,"key":"/pino-abstract-transport/-/pino-abstract-transport-0.4.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/pino-abstract-transport/download/pino-abstract-transport-0.4.0.tgz"},"_npmUser":{"name":"matteo.collina","email":"hello@matteocollina.com"},"directories":{},"maintainers":[{"name":"jsumners","email":"james.sumners@gmail.com"},{"name":"matteo.collina","email":""},{"name":"watson","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pino-abstract-transport_0.4.0_1633211687232_0.11739862085546782"},"_hasShrinkwrap":false,"publish_time":1633211687369,"_cnpm_publish_time":1633211687369},"0.3.0":{"name":"pino-abstract-transport","version":"0.3.0","description":"Write Pino transports easily","main":"index.js","scripts":{"prepare":"husky install","test":"standard | snazzy && tap test/*.test.js","test-ci":"standard | snazzy && tap test/*.test.js --coverage-report=lcovonly"},"repository":{"type":"git","url":"git+https://github.com/pinojs/pino-abstract-transport.git"},"keywords":["pino","transport"],"author":{"name":"Matteo Collina","email":"hello@matteocollina.com"},"license":"MIT","bugs":{"url":"https://github.com/pinojs/pino-abstract-transport/issues"},"homepage":"https://github.com/pinojs/pino-abstract-transport#readme","dependencies":{"split2":"^3.2.2"},"devDependencies":{"husky":"^7.0.0","snazzy":"^9.0.0","standard":"^16.0.3","tap":"^15.0.2"},"gitHead":"04d5954f315e021e7db8eeecb5a0fd1fc8401db0","_id":"pino-abstract-transport@0.3.0","_nodeVersion":"14.17.0","_npmVersion":"6.14.13","_npmUser":{"name":"matteo.collina","email":"hello@matteocollina.com"},"dist":{"shasum":"9925d826a1b6e9a667ca43d14981d82240edd794","size":4375,"noattachment":false,"key":"/pino-abstract-transport/-/pino-abstract-transport-0.3.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/pino-abstract-transport/download/pino-abstract-transport-0.3.0.tgz"},"directories":{},"maintainers":[{"name":"jsumners","email":"james.sumners@gmail.com"},{"name":"matteo.collina","email":""},{"name":"watson","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pino-abstract-transport_0.3.0_1631779131448_0.2360372007919973"},"_hasShrinkwrap":false,"publish_time":1631779131588,"_cnpm_publish_time":1631779131588},"0.2.0":{"name":"pino-abstract-transport","version":"0.2.0","description":"Write Pino transports easily","main":"index.js","scripts":{"prepare":"husky install","test":"standard | snazzy && tap test/*.test.js","test-ci":"standard | snazzy && tap test/*.test.js --coverage-report=lcovonly"},"repository":{"type":"git","url":"git+https://github.com/pinojs/pino-abstract-transport.git"},"keywords":["pino","transport"],"author":{"name":"Matteo Collina","email":"hello@matteocollina.com"},"license":"MIT","bugs":{"url":"https://github.com/pinojs/pino-abstract-transport/issues"},"homepage":"https://github.com/pinojs/pino-abstract-transport#readme","dependencies":{"split2":"^3.2.2"},"devDependencies":{"husky":"^6.0.0","snazzy":"^9.0.0","standard":"^16.0.3","tap":"^15.0.2"},"gitHead":"9b74d181db8c02cc217bb92c3a315f26ac858205","_id":"pino-abstract-transport@0.2.0","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","_npmUser":{"name":"matteo.collina","email":"hello@matteocollina.com"},"dist":{"shasum":"e27d58d7bb16735c587c54e1d4efecc2cce27436","size":4051,"noattachment":false,"key":"/pino-abstract-transport/-/pino-abstract-transport-0.2.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/pino-abstract-transport/download/pino-abstract-transport-0.2.0.tgz"},"directories":{},"maintainers":[{"name":"jsumners","email":"james.sumners@gmail.com"},{"name":"matteo.collina","email":""},{"name":"watson","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pino-abstract-transport_0.2.0_1621421220628_0.5721101365686796"},"_hasShrinkwrap":false,"publish_time":1621421220809,"_cnpm_publish_time":1621421220809},"0.1.0":{"name":"pino-abstract-transport","version":"0.1.0","description":"Write Pino transports easily","main":"index.js","scripts":{"prepare":"husky install","test":"standard | snazzy && tap test/*.test.js"},"repository":{"type":"git","url":"git+https://github.com/pinojs/pino-abstract-transport.git"},"keywords":["pino","transport"],"author":{"name":"Matteo Collina","email":"hello@matteocollina.com"},"license":"MIT","bugs":{"url":"https://github.com/pinojs/pino-abstract-transport/issues"},"homepage":"https://github.com/pinojs/pino-abstract-transport#readme","dependencies":{"split2":"^3.2.2"},"devDependencies":{"husky":"^6.0.0","snazzy":"^9.0.0","standard":"^16.0.3","tap":"^15.0.2"},"gitHead":"69d086f58cb6ef89438bfb9eb7bdd97291e6476d","_id":"pino-abstract-transport@0.1.0","_nodeVersion":"14.16.1","_npmVersion":"7.9.0","dist":{"shasum":"14e94fac516e311a2baa05fd997bc6717129fa62","size":3437,"noattachment":false,"key":"/pino-abstract-transport/-/pino-abstract-transport-0.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/pino-abstract-transport/download/pino-abstract-transport-0.1.0.tgz"},"_npmUser":{"name":"matteo.collina","email":"hello@matteocollina.com"},"directories":{},"maintainers":[{"name":"jsumners","email":"james.sumners@gmail.com"},{"name":"matteo.collina","email":""},{"name":"watson","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pino-abstract-transport_0.1.0_1618088918800_0.3485723435136858"},"_hasShrinkwrap":false,"publish_time":1618088918942,"_cnpm_publish_time":1618088918942}},"readme":"# pino-abstract-transport\n[![npm version](https://img.shields.io/npm/v/pino-abstract-transport)](https://www.npmjs.com/package/pino-abstract-transport)\n[![Build Status](https://img.shields.io/github/actions/workflow/status/pinojs/pino-abstract-transport/ci.yml?branch=main)](https://github.com/pinojs/pino-abstract-transport/actions)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat)](https://standardjs.com/)\n\nWrite Pino transports easily.\n\n## Install\n\n```sh\nnpm i pino-abstract-transport\n```\n\n## Usage\n\n```js\nimport build from 'pino-abstract-transport'\n\nexport default async function (opts) {\n  return build(async function (source) {\n    for await (let obj of source) {\n      console.log(obj)\n    }\n  })\n}\n```\n\nor in CommonJS and streams:\n\n```js\n'use strict'\n\nconst build = require('pino-abstract-transport')\n\nmodule.exports = function (opts) {\n  return build(function (source) {\n    source.on('data', function (obj) {\n      console.log(obj)\n    })\n  })\n}\n```\n\n## Typescript usage\n\nInstall the type definitions for node. Make sure the major version of the type definitions matches the node version you are using.\n\n#### Node 16\n\n```sh\nnpm i -D @types/node@16\n```\n\n## API\n\n### build(fn, opts) => Stream\n\nCreate a [`split2`](http://npm.im/split2) instance and returns it.\nThis same instance is also passed to the given function, which is called\nsynchronously.\n\nIf `opts.transform` is `true`, `pino-abstract-transform` will \nwrap the split2 instance and the returned stream using [`duplexify`](https://www.npmjs.com/package/duplexify),\nso they can be concatenated into multiple transports.\n\n#### Events emitted\n\nIn addition to all events emitted by a [`Readable`](https://nodejs.org/api/stream.html#stream_class_stream_readable)\nstream, it emits the following events:\n\n* `unknown` where an unparsable line is found, both the line and optional error is emitted.\n\n#### Options\n\n* `parse` an option to change to data format passed to build function. When this option is set to `lines`,\n  the data is passed as a string, otherwise the data is passed as an object. Default: `undefined`.\n\n* `close(err, cb)` a function that is called to shutdown the transport. It's called both on error and non-error shutdowns.\n  It can also return a promise. In this case discard the the `cb` argument.\n\n* `parseLine(line)` a function that is used to parse line received from `pino`.\n\n* `expectPinoConfig` a boolean that indicates if the transport expects Pino to add some of its configuration to the stream. Default: `false`.\n\n## Example\n\n### custom parseLine\n\nYou can allow custom `parseLine` from users while providing a simple and safe default parseLine.\n\n```js\n'use strict'\n\nconst build = require('pino-abstract-transport')\n\nfunction defaultParseLine (line) {\n  const obj = JSON.parse(line)\n  // property foo will be added on each line\n  obj.foo = 'bar'\n  return obj\n}\n\nmodule.exports = function (opts) {\n  const parseLine = typeof opts.parseLine === 'function' ? opts.parseLine : defaultParseLine\n  return build(function (source) {\n    source.on('data', function (obj) {\n      console.log(obj)\n    })\n  }, {\n    parseLine: parseLine\n  })\n}\n```\n\n### Stream concatenation / pipeline\n\nYou can pipeline multiple transports:\n\n```js\nconst build = require('pino-abstract-transport')\nconst { Transform, pipeline } = require('stream')\n\nfunction buildTransform () {\n  return build(function (source) {\n    return new Transform({\n      objectMode: true,\n      autoDestroy: true,\n      transform (line, enc, cb) {\n        line.service = 'bob'\n        cb(null, JSON.stringify(line))\n      }\n    })\n  }, { enablePipelining: true })\n}\n\nfunction buildDestination () {\n  return build(function (source) {\n    source.on('data', function (obj) {\n      console.log(obj)\n    })\n  })\n}\n\npipeline(process.stdin, buildTransform(), buildDestination(), function (err) {\n  console.log('pipeline completed!', err)\n})\n```\n\n### Using pino config\n\nSetting `expectPinoConfig` to `true` will make the transport wait for pino to send its configuration before starting to process logs. It will add `levels`, `messageKey` and `errorKey` to the stream.\n\nWhen used with an incompatible version of pino, the stream will immediately error.\n\n```js\nimport build from 'pino-abstract-transport'\n\nexport default function (opts) {\n  return build(async function (source) {\n    for await (const obj of source) {\n      console.log(`[${source.levels.labels[obj.level]}]: ${obj[source.messageKey]}`)\n    }\n  }, {\n    expectPinoConfig: true\n  })\n}\n```\n\n## License\n\nMIT\n","_attachments":{},"homepage":"https://github.com/pinojs/pino-abstract-transport#readme","bugs":{"url":"https://github.com/pinojs/pino-abstract-transport/issues"},"license":"MIT"}