jsonspecific 0.0.1-security → 3.14.7

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.

Potentially problematic release.


This version of jsonspecific might be problematic. Click here for more details.

Files changed (200) hide show
  1. package/.eslintignore +2 -0
  2. package/.eslintrc +8 -0
  3. package/.github/dependabot.yml +13 -0
  4. package/.github/workflows/bench.yml +61 -0
  5. package/.github/workflows/ci.yml +88 -0
  6. package/.github/workflows/lock-threads.yml +30 -0
  7. package/.github/workflows/target-main.yml +23 -0
  8. package/.nojekyll +0 -0
  9. package/.prettierignore +1 -0
  10. package/.taprc.yaml +8 -0
  11. package/CNAME +1 -0
  12. package/CONTRIBUTING.md +30 -0
  13. package/LICENSE +21 -0
  14. package/README.md +159 -3
  15. package/SECURITY.md +68 -0
  16. package/benchmarks/basic.bench.js +95 -0
  17. package/benchmarks/child-child.bench.js +52 -0
  18. package/benchmarks/child-creation.bench.js +73 -0
  19. package/benchmarks/child.bench.js +62 -0
  20. package/benchmarks/deep-object.bench.js +88 -0
  21. package/benchmarks/formatters.bench.js +50 -0
  22. package/benchmarks/internal/custom-levels.js +67 -0
  23. package/benchmarks/internal/just-pino-heavy.bench.js +76 -0
  24. package/benchmarks/internal/just-pino.bench.js +182 -0
  25. package/benchmarks/internal/parent-vs-child.bench.js +75 -0
  26. package/benchmarks/internal/redact.bench.js +86 -0
  27. package/benchmarks/long-string.bench.js +81 -0
  28. package/benchmarks/multi-arg.bench.js +193 -0
  29. package/benchmarks/multistream.js +98 -0
  30. package/benchmarks/object.bench.js +82 -0
  31. package/benchmarks/utils/generate-benchmark-doc.js +36 -0
  32. package/benchmarks/utils/runbench.js +138 -0
  33. package/benchmarks/utils/wrap-log-level.js +55 -0
  34. package/bin.js +6 -0
  35. package/browser.js +484 -0
  36. package/build/sync-version.js +10 -0
  37. package/docs/api.md +1487 -0
  38. package/docs/asynchronous.md +40 -0
  39. package/docs/benchmarks.md +55 -0
  40. package/docs/browser.md +227 -0
  41. package/docs/bundling.md +40 -0
  42. package/docs/child-loggers.md +95 -0
  43. package/docs/ecosystem.md +84 -0
  44. package/docs/help.md +345 -0
  45. package/docs/lts.md +64 -0
  46. package/docs/pretty.md +35 -0
  47. package/docs/redaction.md +135 -0
  48. package/docs/transports.md +1238 -0
  49. package/docs/web.md +269 -0
  50. package/docsify/sidebar.md +26 -0
  51. package/examples/basic.js +43 -0
  52. package/examples/transport.js +68 -0
  53. package/favicon-16x16.png +0 -0
  54. package/favicon-32x32.png +0 -0
  55. package/favicon.ico +0 -0
  56. package/file.js +12 -0
  57. package/inc-version.sh +42 -0
  58. package/index.html +55 -0
  59. package/lib/caller.js +30 -0
  60. package/lib/constants.js +28 -0
  61. package/lib/deprecations.js +8 -0
  62. package/lib/levels.js +241 -0
  63. package/lib/meta.js +3 -0
  64. package/lib/multistream.js +188 -0
  65. package/lib/proto.js +234 -0
  66. package/lib/redaction.js +118 -0
  67. package/lib/symbols.js +74 -0
  68. package/lib/time.js +11 -0
  69. package/lib/tools.js +394 -0
  70. package/lib/transport-stream.js +56 -0
  71. package/lib/transport.js +167 -0
  72. package/lib/worker.js +194 -0
  73. package/lib/writer.js +42 -0
  74. package/package.json +118 -3
  75. package/pino-banner.png +0 -0
  76. package/pino-logo-hire.png +0 -0
  77. package/pino-tree.png +0 -0
  78. package/pino.d.ts +889 -0
  79. package/pino.js +236 -0
  80. package/pretty-demo.png +0 -0
  81. package/test/basic.test.js +874 -0
  82. package/test/broken-pipe.test.js +57 -0
  83. package/test/browser-child.test.js +132 -0
  84. package/test/browser-disabled.test.js +87 -0
  85. package/test/browser-early-console-freeze.test.js +12 -0
  86. package/test/browser-levels.test.js +241 -0
  87. package/test/browser-serializers.test.js +352 -0
  88. package/test/browser-timestamp.test.js +88 -0
  89. package/test/browser-transmit.test.js +417 -0
  90. package/test/browser.test.js +659 -0
  91. package/test/complex-objects.test.js +34 -0
  92. package/test/crlf.test.js +32 -0
  93. package/test/custom-levels.test.js +253 -0
  94. package/test/error.test.js +398 -0
  95. package/test/errorKey.test.js +34 -0
  96. package/test/escaping.test.js +91 -0
  97. package/test/esm/esm.mjs +12 -0
  98. package/test/esm/index.test.js +34 -0
  99. package/test/esm/named-exports.mjs +27 -0
  100. package/test/exit.test.js +77 -0
  101. package/test/fixtures/broken-pipe/basic.js +9 -0
  102. package/test/fixtures/broken-pipe/destination.js +10 -0
  103. package/test/fixtures/broken-pipe/syncfalse.js +12 -0
  104. package/test/fixtures/console-transport.js +13 -0
  105. package/test/fixtures/default-exit.js +8 -0
  106. package/test/fixtures/destination-exit.js +8 -0
  107. package/test/fixtures/eval/index.js +13 -0
  108. package/test/fixtures/eval/node_modules/14-files.js +3 -0
  109. package/test/fixtures/eval/node_modules/2-files.js +3 -0
  110. package/test/fixtures/eval/node_modules/file1.js +5 -0
  111. package/test/fixtures/eval/node_modules/file10.js +5 -0
  112. package/test/fixtures/eval/node_modules/file11.js +5 -0
  113. package/test/fixtures/eval/node_modules/file12.js +5 -0
  114. package/test/fixtures/eval/node_modules/file13.js +5 -0
  115. package/test/fixtures/eval/node_modules/file14.js +11 -0
  116. package/test/fixtures/eval/node_modules/file2.js +5 -0
  117. package/test/fixtures/eval/node_modules/file3.js +5 -0
  118. package/test/fixtures/eval/node_modules/file4.js +5 -0
  119. package/test/fixtures/eval/node_modules/file5.js +5 -0
  120. package/test/fixtures/eval/node_modules/file6.js +5 -0
  121. package/test/fixtures/eval/node_modules/file7.js +5 -0
  122. package/test/fixtures/eval/node_modules/file8.js +5 -0
  123. package/test/fixtures/eval/node_modules/file9.js +5 -0
  124. package/test/fixtures/noop-transport.js +10 -0
  125. package/test/fixtures/pretty/null-prototype.js +8 -0
  126. package/test/fixtures/stdout-hack-protection.js +11 -0
  127. package/test/fixtures/syncfalse-child.js +6 -0
  128. package/test/fixtures/syncfalse-exit.js +9 -0
  129. package/test/fixtures/syncfalse-flush-exit.js +10 -0
  130. package/test/fixtures/syncfalse.js +6 -0
  131. package/test/fixtures/syntax-error-esm.mjs +2 -0
  132. package/test/fixtures/to-file-transport-with-transform.js +20 -0
  133. package/test/fixtures/to-file-transport.js +13 -0
  134. package/test/fixtures/to-file-transport.mjs +8 -0
  135. package/test/fixtures/transport/index.js +12 -0
  136. package/test/fixtures/transport/package.json +5 -0
  137. package/test/fixtures/transport-exit-immediately-with-async-dest.js +16 -0
  138. package/test/fixtures/transport-exit-immediately.js +11 -0
  139. package/test/fixtures/transport-exit-on-ready.js +12 -0
  140. package/test/fixtures/transport-main.js +9 -0
  141. package/test/fixtures/transport-many-lines.js +29 -0
  142. package/test/fixtures/transport-string-stdout.js +9 -0
  143. package/test/fixtures/transport-transform.js +21 -0
  144. package/test/fixtures/transport-uses-pino-config.js +33 -0
  145. package/test/fixtures/transport-with-on-exit.js +12 -0
  146. package/test/fixtures/transport-worker-data.js +19 -0
  147. package/test/fixtures/transport-worker.js +15 -0
  148. package/test/fixtures/transport-wrong-export-type.js +3 -0
  149. package/test/fixtures/ts/to-file-transport-with-transform.ts +18 -0
  150. package/test/fixtures/ts/to-file-transport.ts +11 -0
  151. package/test/fixtures/ts/transpile.cjs +36 -0
  152. package/test/fixtures/ts/transport-exit-immediately-with-async-dest.ts +15 -0
  153. package/test/fixtures/ts/transport-exit-immediately.ts +10 -0
  154. package/test/fixtures/ts/transport-exit-on-ready.ts +11 -0
  155. package/test/fixtures/ts/transport-main.ts +8 -0
  156. package/test/fixtures/ts/transport-string-stdout.ts +8 -0
  157. package/test/fixtures/ts/transport-worker.ts +14 -0
  158. package/test/formatters.test.js +355 -0
  159. package/test/helper.d.ts +4 -0
  160. package/test/helper.js +128 -0
  161. package/test/hooks.test.js +118 -0
  162. package/test/http.test.js +242 -0
  163. package/test/internals/version.test.js +15 -0
  164. package/test/is-level-enabled.test.js +185 -0
  165. package/test/jest/basic.spec.js +10 -0
  166. package/test/levels.test.js +772 -0
  167. package/test/metadata.test.js +106 -0
  168. package/test/mixin-merge-strategy.test.js +55 -0
  169. package/test/mixin.test.js +218 -0
  170. package/test/multistream.test.js +673 -0
  171. package/test/pkg/index.js +46 -0
  172. package/test/pkg/pkg.config.json +17 -0
  173. package/test/pkg/pkg.test.js +56 -0
  174. package/test/redact.test.js +847 -0
  175. package/test/serializers.test.js +253 -0
  176. package/test/stdout-protection.test.js +39 -0
  177. package/test/syncfalse.test.js +188 -0
  178. package/test/timestamp.test.js +121 -0
  179. package/test/transport/big.test.js +43 -0
  180. package/test/transport/bundlers-support.test.js +97 -0
  181. package/test/transport/caller.test.js +23 -0
  182. package/test/transport/core.test.js +644 -0
  183. package/test/transport/core.test.ts +236 -0
  184. package/test/transport/core.transpiled.test.ts +112 -0
  185. package/test/transport/module-link.test.js +239 -0
  186. package/test/transport/pipeline.test.js +135 -0
  187. package/test/transport/repl.test.js +14 -0
  188. package/test/transport/syncTrue.test.js +55 -0
  189. package/test/transport/syncfalse.test.js +68 -0
  190. package/test/transport/targets.test.js +44 -0
  191. package/test/transport/uses-pino-config.test.js +167 -0
  192. package/test/transport-stream.test.js +26 -0
  193. package/test/types/pino-import.test-d.ts +29 -0
  194. package/test/types/pino-multistream.test-d.ts +28 -0
  195. package/test/types/pino-top-export.test-d.ts +35 -0
  196. package/test/types/pino-transport.test-d.ts +145 -0
  197. package/test/types/pino-type-only.test-d.ts +64 -0
  198. package/test/types/pino.test-d.ts +468 -0
  199. package/test/types/pino.ts +78 -0
  200. package/tsconfig.json +14 -0
@@ -0,0 +1,91 @@
1
+ 'use strict'
2
+
3
+ const os = require('node:os')
4
+ const { test } = require('tap')
5
+ const { sink, once } = require('./helper')
6
+ const pino = require('../')
7
+
8
+ const { pid } = process
9
+ const hostname = os.hostname()
10
+
11
+ function testEscape (ch, key) {
12
+ test('correctly escape ' + ch, async ({ same }) => {
13
+ const stream = sink()
14
+ const instance = pino({
15
+ name: 'hello'
16
+ }, stream)
17
+ instance.fatal('this contains ' + key)
18
+ const result = await once(stream, 'data')
19
+ delete result.time
20
+ same(result, {
21
+ pid,
22
+ hostname,
23
+ level: 60,
24
+ name: 'hello',
25
+ msg: 'this contains ' + key
26
+ })
27
+ })
28
+ }
29
+
30
+ testEscape('\\n', '\n')
31
+ testEscape('\\/', '/')
32
+ testEscape('\\\\', '\\')
33
+ testEscape('\\r', '\r')
34
+ testEscape('\\t', '\t')
35
+ testEscape('\\b', '\b')
36
+
37
+ const toEscape = [
38
+ '\u0000', // NUL Null character
39
+ '\u0001', // SOH Start of Heading
40
+ '\u0002', // STX Start of Text
41
+ '\u0003', // ETX End-of-text character
42
+ '\u0004', // EOT End-of-transmission character
43
+ '\u0005', // ENQ Enquiry character
44
+ '\u0006', // ACK Acknowledge character
45
+ '\u0007', // BEL Bell character
46
+ '\u0008', // BS Backspace
47
+ '\u0009', // HT Horizontal tab
48
+ '\u000A', // LF Line feed
49
+ '\u000B', // VT Vertical tab
50
+ '\u000C', // FF Form feed
51
+ '\u000D', // CR Carriage return
52
+ '\u000E', // SO Shift Out
53
+ '\u000F', // SI Shift In
54
+ '\u0010', // DLE Data Link Escape
55
+ '\u0011', // DC1 Device Control 1
56
+ '\u0012', // DC2 Device Control 2
57
+ '\u0013', // DC3 Device Control 3
58
+ '\u0014', // DC4 Device Control 4
59
+ '\u0015', // NAK Negative-acknowledge character
60
+ '\u0016', // SYN Synchronous Idle
61
+ '\u0017', // ETB End of Transmission Block
62
+ '\u0018', // CAN Cancel character
63
+ '\u0019', // EM End of Medium
64
+ '\u001A', // SUB Substitute character
65
+ '\u001B', // ESC Escape character
66
+ '\u001C', // FS File Separator
67
+ '\u001D', // GS Group Separator
68
+ '\u001E', // RS Record Separator
69
+ '\u001F' // US Unit Separator
70
+ ]
71
+
72
+ toEscape.forEach((key) => {
73
+ testEscape(JSON.stringify(key), key)
74
+ })
75
+
76
+ test('correctly escape `hello \\u001F world \\n \\u0022`', async ({ same }) => {
77
+ const stream = sink()
78
+ const instance = pino({
79
+ name: 'hello'
80
+ }, stream)
81
+ instance.fatal('hello \u001F world \n \u0022')
82
+ const result = await once(stream, 'data')
83
+ delete result.time
84
+ same(result, {
85
+ pid,
86
+ hostname,
87
+ level: 60,
88
+ name: 'hello',
89
+ msg: 'hello \u001F world \n \u0022'
90
+ })
91
+ })
@@ -0,0 +1,12 @@
1
+ import t from 'tap'
2
+ import pino from '../../pino.js'
3
+ import helper from '../helper.js'
4
+
5
+ const { sink, check, once } = helper
6
+
7
+ t.test('esm support', async ({ equal }) => {
8
+ const stream = sink()
9
+ const instance = pino(stream)
10
+ instance.info('hello world')
11
+ check(equal, await once(stream, 'data'), 30, 'hello world')
12
+ })
@@ -0,0 +1,34 @@
1
+ 'use strict'
2
+
3
+ const t = require('tap')
4
+ const semver = require('semver')
5
+
6
+ const { isYarnPnp } = require('../helper')
7
+
8
+ if (!semver.satisfies(process.versions.node, '^13.3.0 || ^12.10.0 || >= 14.0.0') || isYarnPnp) {
9
+ t.skip('Skip esm because not supported by Node')
10
+ } else {
11
+ // Node v8 throw a `SyntaxError: Unexpected token import`
12
+ // even if this branch is never touch in the code,
13
+ // by using `eval` we can avoid this issue.
14
+ // eslint-disable-next-line
15
+ new Function('module', 'return import(module)')('./esm.mjs').catch((err) => {
16
+ process.nextTick(() => {
17
+ throw err
18
+ })
19
+ })
20
+ }
21
+
22
+ if (!semver.satisfies(process.versions.node, '>= 14.13.0 || ^12.20.0') || isYarnPnp) {
23
+ t.skip('Skip named exports because not supported by Node')
24
+ } else {
25
+ // Node v8 throw a `SyntaxError: Unexpected token import`
26
+ // even if this branch is never touch in the code,
27
+ // by using `eval` we can avoid this issue.
28
+ // eslint-disable-next-line
29
+ new Function('module', 'return import(module)')('./named-exports.mjs').catch((err) => {
30
+ process.nextTick(() => {
31
+ throw err
32
+ })
33
+ })
34
+ }
@@ -0,0 +1,27 @@
1
+ import { hostname } from 'node:os'
2
+ import t from 'tap'
3
+ import { sink, check, once, watchFileCreated, file } from '../helper.js'
4
+ import { pino, destination } from '../../pino.js'
5
+ import { readFileSync } from 'node:fs'
6
+
7
+ t.test('named exports support', async ({ equal }) => {
8
+ const stream = sink()
9
+ const instance = pino(stream)
10
+ instance.info('hello world')
11
+ check(equal, await once(stream, 'data'), 30, 'hello world')
12
+ })
13
+
14
+ t.test('destination', async ({ same }) => {
15
+ const tmp = file()
16
+ const instance = pino(destination(tmp))
17
+ instance.info('hello')
18
+ await watchFileCreated(tmp)
19
+ const result = JSON.parse(readFileSync(tmp).toString())
20
+ delete result.time
21
+ same(result, {
22
+ pid: process.pid,
23
+ hostname,
24
+ level: 30,
25
+ msg: 'hello'
26
+ })
27
+ })
@@ -0,0 +1,77 @@
1
+ 'use strict'
2
+
3
+ const { test } = require('tap')
4
+ const { join } = require('node:path')
5
+ const execa = require('execa')
6
+ const writer = require('flush-write-stream')
7
+ const { once } = require('./helper')
8
+
9
+ // https://github.com/pinojs/pino/issues/542
10
+ test('pino.destination log everything when calling process.exit(0)', async ({ not }) => {
11
+ let actual = ''
12
+ const child = execa(process.argv[0], [join(__dirname, 'fixtures', 'destination-exit.js')])
13
+
14
+ child.stdout.pipe(writer((s, enc, cb) => {
15
+ actual += s
16
+ cb()
17
+ }))
18
+
19
+ await once(child, 'close')
20
+
21
+ not(actual.match(/hello/), null)
22
+ not(actual.match(/world/), null)
23
+ })
24
+
25
+ test('pino with no args log everything when calling process.exit(0)', async ({ not }) => {
26
+ let actual = ''
27
+ const child = execa(process.argv[0], [join(__dirname, 'fixtures', 'default-exit.js')])
28
+
29
+ child.stdout.pipe(writer((s, enc, cb) => {
30
+ actual += s
31
+ cb()
32
+ }))
33
+
34
+ await once(child, 'close')
35
+
36
+ not(actual.match(/hello/), null)
37
+ not(actual.match(/world/), null)
38
+ })
39
+
40
+ test('sync false logs everything when calling process.exit(0)', async ({ not }) => {
41
+ let actual = ''
42
+ const child = execa(process.argv[0], [join(__dirname, 'fixtures', 'syncfalse-exit.js')])
43
+
44
+ child.stdout.pipe(writer((s, enc, cb) => {
45
+ actual += s
46
+ cb()
47
+ }))
48
+
49
+ await once(child, 'close')
50
+
51
+ not(actual.match(/hello/), null)
52
+ not(actual.match(/world/), null)
53
+ })
54
+
55
+ test('sync false logs everything when calling flushSync', async ({ not }) => {
56
+ let actual = ''
57
+ const child = execa(process.argv[0], [join(__dirname, 'fixtures', 'syncfalse-flush-exit.js')])
58
+
59
+ child.stdout.pipe(writer((s, enc, cb) => {
60
+ actual += s
61
+ cb()
62
+ }))
63
+
64
+ await once(child, 'close')
65
+
66
+ not(actual.match(/hello/), null)
67
+ not(actual.match(/world/), null)
68
+ })
69
+
70
+ test('transports exits gracefully when logging in exit', async ({ equal }) => {
71
+ const child = execa(process.argv[0], [join(__dirname, 'fixtures', 'transport-with-on-exit.js')])
72
+ child.stdout.resume()
73
+
74
+ const code = await once(child, 'close')
75
+
76
+ equal(code, 0)
77
+ })
@@ -0,0 +1,9 @@
1
+ 'use strict'
2
+
3
+ global.process = { __proto__: process, pid: 123456 }
4
+ Date.now = function () { return 1459875739796 }
5
+ require('node:os').hostname = function () { return 'abcdefghijklmnopqr' }
6
+
7
+ const pino = require('../../..')()
8
+
9
+ pino.info('hello world')
@@ -0,0 +1,10 @@
1
+ 'use strict'
2
+
3
+ global.process = { __proto__: process, pid: 123456 }
4
+ Date.now = function () { return 1459875739796 }
5
+ require('node:os').hostname = function () { return 'abcdefghijklmnopqr' }
6
+
7
+ const pino = require('../../..')
8
+ const logger = pino(pino.destination())
9
+
10
+ logger.info('hello world')
@@ -0,0 +1,12 @@
1
+ 'use strict'
2
+
3
+ global.process = { __proto__: process, pid: 123456 }
4
+ Date.now = function () { return 1459875739796 }
5
+ require('node:os').hostname = function () { return 'abcdefghijklmnopqr' }
6
+
7
+ const pino = require('../../..')
8
+ const logger = pino(pino.destination({ sync: false }))
9
+
10
+ for (var i = 0; i < 1000; i++) {
11
+ logger.info('hello world')
12
+ }
@@ -0,0 +1,13 @@
1
+ const { Writable } = require('node:stream')
2
+
3
+ module.exports = (options) => {
4
+ const myTransportStream = new Writable({
5
+ autoDestroy: true,
6
+ write (chunk, enc, cb) {
7
+ // apply a transform and send to stdout
8
+ console.log(chunk.toString().toUpperCase())
9
+ cb()
10
+ }
11
+ })
12
+ return myTransportStream
13
+ }
@@ -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,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')