pino-testkit 10.4.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (196) hide show
  1. package/.nojekyll +0 -0
  2. package/.prettierignore +1 -0
  3. package/CNAME +1 -0
  4. package/CONTRIBUTING.md +30 -0
  5. package/LICENSE +21 -0
  6. package/README.md +175 -0
  7. package/SECURITY.md +87 -0
  8. package/benchmarks/basic.bench.js +95 -0
  9. package/benchmarks/child-child.bench.js +52 -0
  10. package/benchmarks/child-creation.bench.js +73 -0
  11. package/benchmarks/child.bench.js +62 -0
  12. package/benchmarks/deep-object.bench.js +88 -0
  13. package/benchmarks/formatters.bench.js +50 -0
  14. package/benchmarks/internal/custom-levels.js +67 -0
  15. package/benchmarks/internal/just-pino-heavy.bench.js +76 -0
  16. package/benchmarks/internal/just-pino.bench.js +182 -0
  17. package/benchmarks/internal/parent-vs-child.bench.js +75 -0
  18. package/benchmarks/internal/redact.bench.js +86 -0
  19. package/benchmarks/long-string.bench.js +81 -0
  20. package/benchmarks/multi-arg.bench.js +193 -0
  21. package/benchmarks/multistream.js +98 -0
  22. package/benchmarks/object.bench.js +82 -0
  23. package/benchmarks/utils/generate-benchmark-doc.js +36 -0
  24. package/benchmarks/utils/runbench.js +138 -0
  25. package/benchmarks/utils/wrap-log-level.js +55 -0
  26. package/bin.js +6 -0
  27. package/browser.js +547 -0
  28. package/build/sync-version.js +25 -0
  29. package/docs/api.md +1593 -0
  30. package/docs/asynchronous.md +40 -0
  31. package/docs/benchmarks.md +55 -0
  32. package/docs/browser.md +278 -0
  33. package/docs/bundling.md +40 -0
  34. package/docs/child-loggers.md +95 -0
  35. package/docs/diagnostics.md +16 -0
  36. package/docs/ecosystem.md +86 -0
  37. package/docs/help.md +345 -0
  38. package/docs/lts.md +64 -0
  39. package/docs/pretty.md +35 -0
  40. package/docs/redaction.md +135 -0
  41. package/docs/transports.md +1376 -0
  42. package/docs/web.md +309 -0
  43. package/eslint.config.js +28 -0
  44. package/examples/basic.js +43 -0
  45. package/examples/transport.js +68 -0
  46. package/favicon.ico +0 -0
  47. package/file.js +12 -0
  48. package/inc-version.sh +42 -0
  49. package/index.html +55 -0
  50. package/lib/caller.js +30 -0
  51. package/lib/constants.js +28 -0
  52. package/lib/contract.js +8 -0
  53. package/lib/deprecations.js +8 -0
  54. package/lib/levels.js +241 -0
  55. package/lib/meta.js +3 -0
  56. package/lib/multistream.js +203 -0
  57. package/lib/proto.js +256 -0
  58. package/lib/redaction.js +114 -0
  59. package/lib/symbols.js +74 -0
  60. package/lib/time.js +39 -0
  61. package/lib/tools.js +427 -0
  62. package/lib/transport-stream.js +56 -0
  63. package/lib/transport.js +289 -0
  64. package/lib/worker.js +194 -0
  65. package/package.json +119 -0
  66. package/pino.d.ts +908 -0
  67. package/pino.js +240 -0
  68. package/test/basic.test.js +886 -0
  69. package/test/broken-pipe.test.js +59 -0
  70. package/test/browser-child.test.js +132 -0
  71. package/test/browser-disabled.test.js +87 -0
  72. package/test/browser-early-console-freeze.test.js +12 -0
  73. package/test/browser-is-level-enabled.test.js +101 -0
  74. package/test/browser-levels.test.js +241 -0
  75. package/test/browser-serializers.test.js +352 -0
  76. package/test/browser-timestamp.test.js +88 -0
  77. package/test/browser-transmit.test.js +417 -0
  78. package/test/browser.test.js +698 -0
  79. package/test/complex-objects.test.js +36 -0
  80. package/test/crlf.test.js +34 -0
  81. package/test/custom-levels.test.js +267 -0
  82. package/test/diagnostics.test.js +107 -0
  83. package/test/error-key.test.js +37 -0
  84. package/test/error.test.js +403 -0
  85. package/test/escaping.test.js +93 -0
  86. package/test/esm/esm.mjs +14 -0
  87. package/test/esm/index.test.js +21 -0
  88. package/test/esm/named-exports.mjs +29 -0
  89. package/test/exit.test.js +79 -0
  90. package/test/fixtures/broken-pipe/basic.js +9 -0
  91. package/test/fixtures/broken-pipe/destination.js +10 -0
  92. package/test/fixtures/broken-pipe/syncfalse.js +12 -0
  93. package/test/fixtures/console-transport.js +13 -0
  94. package/test/fixtures/crashing-transport.js +13 -0
  95. package/test/fixtures/default-exit.js +8 -0
  96. package/test/fixtures/destination-exit.js +8 -0
  97. package/test/fixtures/eval/index.js +13 -0
  98. package/test/fixtures/eval/node_modules/14-files.js +3 -0
  99. package/test/fixtures/eval/node_modules/2-files.js +3 -0
  100. package/test/fixtures/eval/node_modules/file1.js +5 -0
  101. package/test/fixtures/eval/node_modules/file10.js +5 -0
  102. package/test/fixtures/eval/node_modules/file11.js +5 -0
  103. package/test/fixtures/eval/node_modules/file12.js +5 -0
  104. package/test/fixtures/eval/node_modules/file13.js +5 -0
  105. package/test/fixtures/eval/node_modules/file14.js +11 -0
  106. package/test/fixtures/eval/node_modules/file2.js +5 -0
  107. package/test/fixtures/eval/node_modules/file3.js +5 -0
  108. package/test/fixtures/eval/node_modules/file4.js +5 -0
  109. package/test/fixtures/eval/node_modules/file5.js +5 -0
  110. package/test/fixtures/eval/node_modules/file6.js +5 -0
  111. package/test/fixtures/eval/node_modules/file7.js +5 -0
  112. package/test/fixtures/eval/node_modules/file8.js +5 -0
  113. package/test/fixtures/eval/node_modules/file9.js +5 -0
  114. package/test/fixtures/noop-transport.js +10 -0
  115. package/test/fixtures/pretty/null-prototype.js +8 -0
  116. package/test/fixtures/stdout-hack-protection.js +11 -0
  117. package/test/fixtures/syncfalse-child.js +6 -0
  118. package/test/fixtures/syncfalse-exit.js +9 -0
  119. package/test/fixtures/syncfalse-flush-exit.js +10 -0
  120. package/test/fixtures/syncfalse.js +6 -0
  121. package/test/fixtures/syntax-error-esm.mjs +2 -0
  122. package/test/fixtures/to-file-transport-with-transform.js +20 -0
  123. package/test/fixtures/to-file-transport.js +13 -0
  124. package/test/fixtures/to-file-transport.mjs +8 -0
  125. package/test/fixtures/transport/index.js +12 -0
  126. package/test/fixtures/transport/package.json +5 -0
  127. package/test/fixtures/transport-exit-immediately-with-async-dest.js +16 -0
  128. package/test/fixtures/transport-exit-immediately.js +11 -0
  129. package/test/fixtures/transport-exit-on-ready.js +12 -0
  130. package/test/fixtures/transport-invalid-node-options.js +26 -0
  131. package/test/fixtures/transport-main.js +9 -0
  132. package/test/fixtures/transport-many-lines.js +29 -0
  133. package/test/fixtures/transport-preload-main.mjs +13 -0
  134. package/test/fixtures/transport-preload.mjs +13 -0
  135. package/test/fixtures/transport-string-stdout.js +9 -0
  136. package/test/fixtures/transport-transform.js +21 -0
  137. package/test/fixtures/transport-uses-pino-config.js +33 -0
  138. package/test/fixtures/transport-with-on-exit.js +12 -0
  139. package/test/fixtures/transport-worker-data.js +19 -0
  140. package/test/fixtures/transport-worker-name.js +24 -0
  141. package/test/fixtures/transport-worker.js +15 -0
  142. package/test/fixtures/transport-wrong-export-type.js +3 -0
  143. package/test/fixtures/ts/to-file-transport-native.mts +15 -0
  144. package/test/fixtures/ts/to-file-transport-with-transform.ts +18 -0
  145. package/test/fixtures/ts/to-file-transport.ts +11 -0
  146. package/test/fixtures/ts/transpile.cjs +36 -0
  147. package/test/fixtures/ts/transport-exit-immediately-with-async-dest.ts +15 -0
  148. package/test/fixtures/ts/transport-exit-immediately.ts +10 -0
  149. package/test/fixtures/ts/transport-exit-on-ready.ts +11 -0
  150. package/test/fixtures/ts/transport-main.ts +8 -0
  151. package/test/fixtures/ts/transport-string-stdout.ts +8 -0
  152. package/test/fixtures/ts/transport-worker.ts +14 -0
  153. package/test/formatters.test.js +364 -0
  154. package/test/helper.d.ts +4 -0
  155. package/test/helper.js +155 -0
  156. package/test/hooks.test.js +114 -0
  157. package/test/http.test.js +214 -0
  158. package/test/internals/version.test.js +17 -0
  159. package/test/is-level-enabled.test.js +179 -0
  160. package/test/jest/basic.spec.js +10 -0
  161. package/test/levels.test.js +810 -0
  162. package/test/metadata.test.js +120 -0
  163. package/test/mixin-merge-strategy.test.js +57 -0
  164. package/test/mixin.test.js +241 -0
  165. package/test/multistream.test.js +729 -0
  166. package/test/redact.test.js +893 -0
  167. package/test/serializers.test.js +257 -0
  168. package/test/stdout-protection.test.js +41 -0
  169. package/test/syncfalse.test.js +186 -0
  170. package/test/timestamp-nano.test.js +37 -0
  171. package/test/timestamp.test.js +124 -0
  172. package/test/transport/big.test.js +42 -0
  173. package/test/transport/bundlers-support.test.js +99 -0
  174. package/test/transport/caller.test.js +24 -0
  175. package/test/transport/core.test.js +733 -0
  176. package/test/transport/core.transpiled.test.ts +114 -0
  177. package/test/transport/crash.test.js +36 -0
  178. package/test/transport/module-link.test.js +241 -0
  179. package/test/transport/native-type-stripping.test.mjs +151 -0
  180. package/test/transport/node-options.test.js +116 -0
  181. package/test/transport/pipeline.test.js +137 -0
  182. package/test/transport/preload.test.js +54 -0
  183. package/test/transport/repl.test.js +15 -0
  184. package/test/transport/sync-false.test.js +67 -0
  185. package/test/transport/sync-true.test.js +57 -0
  186. package/test/transport/targets.test.js +48 -0
  187. package/test/transport/uses-pino-config.test.js +166 -0
  188. package/test/transport-stream.test.js +40 -0
  189. package/test/types/pino-import.test-d.cts +30 -0
  190. package/test/types/pino-multistream.test-d.ts +28 -0
  191. package/test/types/pino-top-export.test-d.ts +34 -0
  192. package/test/types/pino-transport.test-d.ts +156 -0
  193. package/test/types/pino-type-only.test-d.ts +75 -0
  194. package/test/types/pino.test-d.ts +683 -0
  195. package/test/types/pino.ts +91 -0
  196. package/tsconfig.json +14 -0
@@ -0,0 +1,8 @@
1
+ global.process = { __proto__: process, pid: 123456 }
2
+ Date.now = function () { return 1459875739796 }
3
+ require('node:os').hostname = function () { return 'abcdefghijklmnopqr' }
4
+ const pino = require(require.resolve('./../../'))
5
+ const logger = pino()
6
+ logger.info('hello')
7
+ logger.info('world')
8
+ process.exit(0)
@@ -0,0 +1,8 @@
1
+ global.process = { __proto__: process, pid: 123456 }
2
+ Date.now = function () { return 1459875739796 }
3
+ require('node:os').hostname = function () { return 'abcdefghijklmnopqr' }
4
+ const pino = require(require.resolve('./../../'))
5
+ const logger = pino({}, pino.destination(1))
6
+ logger.info('hello')
7
+ logger.info('world')
8
+ process.exit(0)
@@ -0,0 +1,13 @@
1
+ /* eslint-disable no-eval */
2
+
3
+ eval(`
4
+ const pino = require('../../../')
5
+
6
+ const logger = pino(
7
+ pino.transport({
8
+ target: 'pino/file'
9
+ })
10
+ )
11
+
12
+ logger.info('done!')
13
+ `)
@@ -0,0 +1,3 @@
1
+ const file1 = require("./file1.js")
2
+
3
+ file1()
@@ -0,0 +1,3 @@
1
+ const file12 = require("./file12.js")
2
+
3
+ file12()
@@ -0,0 +1,5 @@
1
+ const file2 = require("./file2.js")
2
+
3
+ module.exports = function () {
4
+ file2()
5
+ }
@@ -0,0 +1,5 @@
1
+ const file11 = require("./file11.js")
2
+
3
+ module.exports = function () {
4
+ file11()
5
+ }
@@ -0,0 +1,5 @@
1
+ const file12 = require("./file12.js")
2
+
3
+ module.exports = function () {
4
+ file12()
5
+ }
@@ -0,0 +1,5 @@
1
+ const file13 = require("./file13.js")
2
+
3
+ module.exports = function () {
4
+ file13()
5
+ }
@@ -0,0 +1,5 @@
1
+ const file14 = require("./file14.js")
2
+
3
+ module.exports = function () {
4
+ file14()
5
+ }
@@ -0,0 +1,11 @@
1
+ const pino = require("../../../../");
2
+
3
+ module.exports = function() {
4
+ const logger = pino(
5
+ pino.transport({
6
+ target: 'pino/file'
7
+ })
8
+ )
9
+
10
+ logger.info('done!')
11
+ }
@@ -0,0 +1,5 @@
1
+ const file3 = require("./file3.js")
2
+
3
+ module.exports = function () {
4
+ file3()
5
+ }
@@ -0,0 +1,5 @@
1
+ const file4 = require("./file4.js")
2
+
3
+ module.exports = function () {
4
+ file4()
5
+ }
@@ -0,0 +1,5 @@
1
+ const file5 = require("./file5.js")
2
+
3
+ module.exports = function () {
4
+ file5()
5
+ }
@@ -0,0 +1,5 @@
1
+ const file6 = require("./file6.js")
2
+
3
+ module.exports = function () {
4
+ file6()
5
+ }
@@ -0,0 +1,5 @@
1
+ const file7 = require("./file7.js")
2
+
3
+ module.exports = function () {
4
+ file7()
5
+ }
@@ -0,0 +1,5 @@
1
+ const file8 = require("./file8.js")
2
+
3
+ module.exports = function () {
4
+ file8()
5
+ }
@@ -0,0 +1,5 @@
1
+ const file9 = require("./file9.js")
2
+
3
+ module.exports = function () {
4
+ file9()
5
+ }
@@ -0,0 +1,5 @@
1
+ const file10 = require("./file10.js")
2
+
3
+ module.exports = function () {
4
+ file10()
5
+ }
@@ -0,0 +1,10 @@
1
+ const { Writable } = require('node:stream')
2
+
3
+ module.exports = () => {
4
+ return new Writable({
5
+ autoDestroy: true,
6
+ write (chunk, enc, cb) {
7
+ cb()
8
+ }
9
+ })
10
+ }
@@ -0,0 +1,8 @@
1
+ global.process = { __proto__: process, pid: 123456 }
2
+ Date.now = function () { return 1459875739796 }
3
+ require('node:os').hostname = function () { return 'abcdefghijklmnopqr' }
4
+ const pino = require(require.resolve('./../../../'))
5
+ const log = pino({ prettyPrint: true })
6
+ const obj = Object.create(null)
7
+ Object.assign(obj, { foo: 'bar' })
8
+ log.info(obj, 'hello')
@@ -0,0 +1,11 @@
1
+ global.process = { __proto__: process, pid: 123456 }
2
+
3
+ const write = process.stdout.write.bind(process.stdout)
4
+ process.stdout.write = function (chunk) {
5
+ write('hack ' + chunk)
6
+ }
7
+
8
+ Date.now = function () { return 1459875739796 }
9
+ require('node:os').hostname = function () { return 'abcdefghijklmnopqr' }
10
+ const pino = require(require.resolve('../../'))()
11
+ pino.info('me')
@@ -0,0 +1,6 @@
1
+ global.process = { __proto__: process, pid: 123456 }
2
+ Date.now = function () { return 1459875739796 }
3
+ require('node:os').hostname = function () { return 'abcdefghijklmnopqr' }
4
+ const pino = require(require.resolve('./../../'))
5
+ const asyncLogger = pino(pino.destination({ sync: false })).child({ hello: 'world' })
6
+ asyncLogger.info('h')
@@ -0,0 +1,9 @@
1
+ global.process = { __proto__: process, pid: 123456 }
2
+ Date.now = function () { return 1459875739796 }
3
+ require('node:os').hostname = function () { return 'abcdefghijklmnopqr' }
4
+ const pino = require(require.resolve('./../../'))
5
+ const dest = pino.destination({ dest: 1, minLength: 4096, sync: false })
6
+ const logger = pino({}, dest)
7
+ logger.info('hello')
8
+ logger.info('world')
9
+ process.exit(0)
@@ -0,0 +1,10 @@
1
+ global.process = { __proto__: process, pid: 123456 }
2
+ Date.now = function () { return 1459875739796 }
3
+ require('node:os').hostname = function () { return 'abcdefghijklmnopqr' }
4
+ const pino = require(require.resolve('./../../'))
5
+ const dest = pino.destination({ dest: 1, minLength: 4096, sync: false })
6
+ const logger = pino({}, dest)
7
+ logger.info('hello')
8
+ logger.info('world')
9
+ dest.flushSync()
10
+ process.exit(0)
@@ -0,0 +1,6 @@
1
+ global.process = { __proto__: process, pid: 123456 }
2
+ Date.now = function () { return 1459875739796 }
3
+ require('node:os').hostname = function () { return 'abcdefghijklmnopqr' }
4
+ const pino = require(require.resolve('./../../'))
5
+ const asyncLogger = pino(pino.destination({ minLength: 4096, sync: false }))
6
+ asyncLogger.info('h')
@@ -0,0 +1,2 @@
1
+ // This is a syntax error
2
+ import
@@ -0,0 +1,20 @@
1
+ 'use strict'
2
+
3
+ const fs = require('node:fs')
4
+ const { once } = require('node:events')
5
+ const { Transform } = require('node:stream')
6
+
7
+ async function run (opts) {
8
+ if (!opts.destination) throw new Error('kaboom')
9
+ const stream = fs.createWriteStream(opts.destination)
10
+ await once(stream, 'open')
11
+ const t = new Transform({
12
+ transform (chunk, enc, cb) {
13
+ setImmediate(cb, null, chunk.toString().toUpperCase())
14
+ }
15
+ })
16
+ t.pipe(stream)
17
+ return t
18
+ }
19
+
20
+ module.exports = run
@@ -0,0 +1,13 @@
1
+ 'use strict'
2
+
3
+ const fs = require('node:fs')
4
+ const { once } = require('node:events')
5
+
6
+ async function run (opts) {
7
+ if (!opts.destination) throw new Error('kaboom')
8
+ const stream = fs.createWriteStream(opts.destination)
9
+ await once(stream, 'open')
10
+ return stream
11
+ }
12
+
13
+ module.exports = run
@@ -0,0 +1,8 @@
1
+ import { createWriteStream } from 'node:fs'
2
+ import { once } from 'node:events'
3
+
4
+ export default async function run (opts) {
5
+ const stream = createWriteStream(opts.destination)
6
+ await once(stream, 'open')
7
+ return stream
8
+ }
@@ -0,0 +1,12 @@
1
+ 'use strict'
2
+
3
+ const fs = require('node:fs')
4
+ const { once } = require('node:events')
5
+
6
+ async function run (opts) {
7
+ const stream = fs.createWriteStream(opts.destination)
8
+ await once(stream, 'open')
9
+ return stream
10
+ }
11
+
12
+ module.exports = run
@@ -0,0 +1,5 @@
1
+ {
2
+ "name": "transport",
3
+ "version": "0.0.1",
4
+ "main": "./index.js"
5
+ }
@@ -0,0 +1,16 @@
1
+ 'use strict'
2
+
3
+ const pino = require('../..')
4
+ const transport = pino.transport({
5
+ target: './to-file-transport-with-transform.js',
6
+ options: {
7
+ destination: process.argv[2]
8
+ }
9
+ })
10
+ const logger = pino(transport)
11
+
12
+ logger.info('Hello')
13
+
14
+ logger.info('World')
15
+
16
+ process.exit(0)
@@ -0,0 +1,11 @@
1
+ 'use strict'
2
+
3
+ const pino = require('../..')
4
+ const transport = pino.transport({
5
+ target: 'pino/file'
6
+ })
7
+ const logger = pino(transport)
8
+
9
+ logger.info('Hello')
10
+
11
+ process.exit(0)
@@ -0,0 +1,12 @@
1
+ 'use strict'
2
+
3
+ const pino = require('../..')
4
+ const transport = pino.transport({
5
+ target: 'pino/file'
6
+ })
7
+ const logger = pino(transport)
8
+
9
+ transport.on('ready', function () {
10
+ logger.info('Hello')
11
+ process.exit(0)
12
+ })
@@ -0,0 +1,26 @@
1
+ 'use strict'
2
+
3
+ const pino = require('../../')
4
+ const { join } = require('node:path')
5
+
6
+ const destination = process.argv[2]
7
+
8
+ process.env.NODE_OPTIONS = `--require ${join(__dirname, 'this-file-does-not-exist.js')}`
9
+
10
+ const transport = pino.transport({
11
+ target: join(__dirname, 'to-file-transport.js'),
12
+ options: { destination }
13
+ })
14
+
15
+ const logger = pino(transport)
16
+ transport.on('ready', () => {
17
+ logger.info('hello with invalid node options preload')
18
+ setTimeout(() => {
19
+ transport.end()
20
+ }, 50)
21
+ })
22
+
23
+ transport.on('error', (err) => {
24
+ process.stderr.write(`${err.stack}\n`)
25
+ process.exitCode = 1
26
+ })
@@ -0,0 +1,9 @@
1
+ 'use strict'
2
+
3
+ const { join } = require('node:path')
4
+ const pino = require('../..')
5
+ const transport = pino.transport({
6
+ target: join(__dirname, 'transport-worker.js')
7
+ })
8
+ const logger = pino(transport)
9
+ logger.info('Hello')
@@ -0,0 +1,29 @@
1
+ 'use strict'
2
+
3
+ const pino = require('../..')
4
+ const transport = pino.transport({
5
+ targets: [{
6
+ level: 'info',
7
+ target: 'pino/file',
8
+ options: {
9
+ destination: process.argv[2]
10
+ }
11
+ }]
12
+ })
13
+ const logger = pino(transport)
14
+
15
+ const toWrite = 1000000
16
+ transport.on('ready', run)
17
+
18
+ let total = 0
19
+
20
+ function run () {
21
+ if (total++ === 8) {
22
+ return
23
+ }
24
+
25
+ for (let i = 0; i < toWrite; i++) {
26
+ logger.info(`hello ${i}`)
27
+ }
28
+ transport.once('drain', run)
29
+ }
@@ -0,0 +1,13 @@
1
+ 'use strict'
2
+
3
+ // This is the main script that runs after the preload
4
+ // It imports the logger from the preload and logs a message
5
+
6
+ import { log } from './transport-preload.mjs'
7
+
8
+ log.info('hello from main')
9
+
10
+ // Wait a bit for the transport to flush
11
+ setTimeout(() => {
12
+ process.exit(0)
13
+ }, 500)
@@ -0,0 +1,13 @@
1
+ 'use strict'
2
+
3
+ import pino from '../../pino.js'
4
+ import { join } from 'node:path'
5
+
6
+ const log = pino({
7
+ transport: {
8
+ target: join(import.meta.dirname, 'to-file-transport.js'),
9
+ options: { destination: process.argv[2] }
10
+ }
11
+ })
12
+
13
+ export { log }
@@ -0,0 +1,9 @@
1
+ 'use strict'
2
+
3
+ const pino = require('../..')
4
+ const transport = pino.transport({
5
+ target: 'pino/file',
6
+ options: { destination: '1' }
7
+ })
8
+ const logger = pino(transport)
9
+ logger.info('Hello')
@@ -0,0 +1,21 @@
1
+ 'use strict'
2
+
3
+ const build = require('pino-abstract-transport')
4
+ const { pipeline, Transform } = require('node:stream')
5
+ module.exports = (options) => {
6
+ return build(function (source) {
7
+ const myTransportStream = new Transform({
8
+ autoDestroy: true,
9
+ objectMode: true,
10
+ transform (chunk, enc, cb) {
11
+ chunk.service = 'pino'
12
+ this.push(JSON.stringify(chunk))
13
+ cb()
14
+ }
15
+ })
16
+ pipeline(source, myTransportStream, () => {})
17
+ return myTransportStream
18
+ }, {
19
+ enablePipelining: true
20
+ })
21
+ }
@@ -0,0 +1,33 @@
1
+ 'use strict'
2
+
3
+ const build = require('pino-abstract-transport')
4
+ const { pipeline, Transform } = require('node:stream')
5
+ module.exports = () => {
6
+ return build(function (source) {
7
+ const myTransportStream = new Transform({
8
+ autoDestroy: true,
9
+ objectMode: true,
10
+ transform (chunk, enc, cb) {
11
+ const {
12
+ time,
13
+ level,
14
+ [source.messageKey]: body,
15
+ [source.errorKey]: error,
16
+ ...attributes
17
+ } = chunk
18
+ this.push(JSON.stringify({
19
+ severityText: source.levels.labels[level],
20
+ body,
21
+ attributes,
22
+ ...(error && { error })
23
+ }))
24
+ cb()
25
+ }
26
+ })
27
+ pipeline(source, myTransportStream, () => {})
28
+ return myTransportStream
29
+ }, {
30
+ enablePipelining: true,
31
+ expectPinoConfig: true
32
+ })
33
+ }
@@ -0,0 +1,12 @@
1
+ 'use strict'
2
+ const pino = require('../..')
3
+ const log = pino({
4
+ transport: {
5
+ target: 'pino/file',
6
+ options: { destination: 1 }
7
+ }
8
+ })
9
+ log.info('hello world!')
10
+ process.on('exit', (code) => {
11
+ log.info('Exiting peacefully')
12
+ })
@@ -0,0 +1,19 @@
1
+ 'use strict'
2
+
3
+ const { parentPort, workerData } = require('worker_threads')
4
+ const { Writable } = require('node:stream')
5
+
6
+ module.exports = (options) => {
7
+ const myTransportStream = new Writable({
8
+ autoDestroy: true,
9
+ write (chunk, enc, cb) {
10
+ parentPort.postMessage({
11
+ code: 'EVENT',
12
+ name: 'workerData',
13
+ args: [workerData]
14
+ })
15
+ cb()
16
+ }
17
+ })
18
+ return myTransportStream
19
+ }
@@ -0,0 +1,24 @@
1
+ 'use strict'
2
+
3
+ const { parentPort, threadName } = require('worker_threads')
4
+ const { Writable } = require('node:stream')
5
+
6
+ let sent = false
7
+
8
+ module.exports = (options) => {
9
+ const myTransportStream = new Writable({
10
+ autoDestroy: true,
11
+ write (chunk, enc, cb) {
12
+ if (!sent) {
13
+ sent = true
14
+ parentPort.postMessage({
15
+ code: 'EVENT',
16
+ name: 'workerThreadName',
17
+ args: [threadName]
18
+ })
19
+ }
20
+ cb()
21
+ }
22
+ })
23
+ return myTransportStream
24
+ }
@@ -0,0 +1,15 @@
1
+ 'use strict'
2
+
3
+ const { Writable } = require('node:stream')
4
+ const fs = require('node:fs')
5
+ module.exports = (options) => {
6
+ const myTransportStream = new Writable({
7
+ autoDestroy: true,
8
+ write (chunk, enc, cb) {
9
+ // Bypass console.log() to avoid flakiness
10
+ fs.writeSync(1, chunk.toString())
11
+ cb()
12
+ }
13
+ })
14
+ return myTransportStream
15
+ }
@@ -0,0 +1,3 @@
1
+ module.exports = {
2
+ completelyUnrelatedProperty: 'Just a very incorrect transport worker implementation'
3
+ }
@@ -0,0 +1,15 @@
1
+ import * as fs from 'node:fs'
2
+ import { once } from 'node:events'
3
+
4
+ interface TransportOptions {
5
+ destination?: fs.PathLike
6
+ }
7
+
8
+ async function run (opts: TransportOptions): Promise<fs.WriteStream> {
9
+ if (!opts.destination) throw new Error('destination is required')
10
+ const stream = fs.createWriteStream(opts.destination, { encoding: 'utf8' })
11
+ await once(stream, 'open')
12
+ return stream
13
+ }
14
+
15
+ export default run
@@ -0,0 +1,18 @@
1
+ import * as fs from 'node:fs'
2
+ import { once } from 'node:events'
3
+ import { Transform } from 'node:stream'
4
+
5
+ async function run (opts: { destination?: fs.PathLike }): Promise<Transform> {
6
+ if (!opts.destination) throw new Error('kaboom')
7
+ const stream = fs.createWriteStream(opts.destination)
8
+ await once(stream, 'open')
9
+ const t = new Transform({
10
+ transform (chunk, enc, cb) {
11
+ setImmediate(cb, null, chunk.toString().toUpperCase())
12
+ }
13
+ })
14
+ t.pipe(stream)
15
+ return t
16
+ }
17
+
18
+ export default run
@@ -0,0 +1,11 @@
1
+ import * as fs from 'node:fs'
2
+ import { once } from 'node:events'
3
+
4
+ async function run (opts: { destination?: fs.PathLike }): Promise<fs.WriteStream> {
5
+ if (!opts.destination) throw new Error('kaboom')
6
+ const stream = fs.createWriteStream(opts.destination, { encoding: 'utf8' })
7
+ await once(stream, 'open')
8
+ return stream
9
+ }
10
+
11
+ export default run