chalk-config 0.0.1-security → 2.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 chalk-config might be problematic. Click here for more details.
- package/.eslintignore +2 -0
- package/.eslintrc +8 -0
- package/.github/dependabot.yml +13 -0
- package/.github/workflows/bench.yml +61 -0
- package/.github/workflows/ci.yml +88 -0
- package/.github/workflows/lock-threads.yml +30 -0
- package/.github/workflows/target-main.yml +23 -0
- package/.nojekyll +0 -0
- package/.prettierignore +1 -0
- package/.taprc.yaml +8 -0
- package/CNAME +1 -0
- package/CONTRIBUTING.md +30 -0
- package/LICENSE +21 -0
- package/README.md +159 -3
- package/SECURITY.md +68 -0
- package/benchmarks/basic.bench.js +95 -0
- package/benchmarks/child-child.bench.js +52 -0
- package/benchmarks/child-creation.bench.js +73 -0
- package/benchmarks/child.bench.js +62 -0
- package/benchmarks/deep-object.bench.js +88 -0
- package/benchmarks/formatters.bench.js +50 -0
- package/benchmarks/internal/custom-levels.js +67 -0
- package/benchmarks/internal/just-pino-heavy.bench.js +76 -0
- package/benchmarks/internal/just-pino.bench.js +182 -0
- package/benchmarks/internal/parent-vs-child.bench.js +75 -0
- package/benchmarks/internal/redact.bench.js +86 -0
- package/benchmarks/long-string.bench.js +81 -0
- package/benchmarks/multi-arg.bench.js +193 -0
- package/benchmarks/multistream.js +98 -0
- package/benchmarks/object.bench.js +82 -0
- package/benchmarks/utils/generate-benchmark-doc.js +36 -0
- package/benchmarks/utils/runbench.js +138 -0
- package/benchmarks/utils/wrap-log-level.js +55 -0
- package/bin.js +6 -0
- package/browser.js +484 -0
- package/build/sync-version.js +10 -0
- package/docs/api.md +1487 -0
- package/docs/asynchronous.md +40 -0
- package/docs/benchmarks.md +55 -0
- package/docs/browser.md +227 -0
- package/docs/bundling.md +40 -0
- package/docs/child-loggers.md +95 -0
- package/docs/ecosystem.md +84 -0
- package/docs/help.md +345 -0
- package/docs/lts.md +64 -0
- package/docs/pretty.md +35 -0
- package/docs/redaction.md +135 -0
- package/docs/transports.md +1238 -0
- package/docs/web.md +269 -0
- package/docsify/sidebar.md +26 -0
- package/examples/basic.js +43 -0
- package/examples/transport.js +68 -0
- package/favicon-16x16.png +0 -0
- package/favicon-32x32.png +0 -0
- package/favicon.ico +0 -0
- package/file.js +12 -0
- package/inc-version.sh +42 -0
- package/index.html +55 -0
- package/lib/caller.js +30 -0
- package/lib/constants.js +28 -0
- package/lib/deprecations.js +8 -0
- package/lib/levels.js +241 -0
- package/lib/meta.js +3 -0
- package/lib/multistream.js +188 -0
- package/lib/proto.js +234 -0
- package/lib/redaction.js +118 -0
- package/lib/symbols.js +74 -0
- package/lib/time.js +11 -0
- package/lib/tools.js +394 -0
- package/lib/transport-stream.js +56 -0
- package/lib/transport.js +167 -0
- package/lib/worker.js +194 -0
- package/lib/writer.js +42 -0
- package/package.json +118 -3
- package/pino-banner.png +0 -0
- package/pino-logo-hire.png +0 -0
- package/pino-tree.png +0 -0
- package/pino.d.ts +889 -0
- package/pino.js +236 -0
- package/pretty-demo.png +0 -0
- package/test/basic.test.js +874 -0
- package/test/broken-pipe.test.js +57 -0
- package/test/browser-child.test.js +132 -0
- package/test/browser-disabled.test.js +87 -0
- package/test/browser-early-console-freeze.test.js +12 -0
- package/test/browser-levels.test.js +241 -0
- package/test/browser-serializers.test.js +352 -0
- package/test/browser-timestamp.test.js +88 -0
- package/test/browser-transmit.test.js +417 -0
- package/test/browser.test.js +659 -0
- package/test/complex-objects.test.js +34 -0
- package/test/crlf.test.js +32 -0
- package/test/custom-levels.test.js +253 -0
- package/test/error.test.js +398 -0
- package/test/errorKey.test.js +34 -0
- package/test/escaping.test.js +91 -0
- package/test/esm/esm.mjs +12 -0
- package/test/esm/index.test.js +34 -0
- package/test/esm/named-exports.mjs +27 -0
- package/test/exit.test.js +77 -0
- package/test/fixtures/broken-pipe/basic.js +9 -0
- package/test/fixtures/broken-pipe/destination.js +10 -0
- package/test/fixtures/broken-pipe/syncfalse.js +12 -0
- package/test/fixtures/console-transport.js +13 -0
- package/test/fixtures/default-exit.js +8 -0
- package/test/fixtures/destination-exit.js +8 -0
- package/test/fixtures/eval/index.js +13 -0
- package/test/fixtures/eval/node_modules/14-files.js +3 -0
- package/test/fixtures/eval/node_modules/2-files.js +3 -0
- package/test/fixtures/eval/node_modules/file1.js +5 -0
- package/test/fixtures/eval/node_modules/file10.js +5 -0
- package/test/fixtures/eval/node_modules/file11.js +5 -0
- package/test/fixtures/eval/node_modules/file12.js +5 -0
- package/test/fixtures/eval/node_modules/file13.js +5 -0
- package/test/fixtures/eval/node_modules/file14.js +11 -0
- package/test/fixtures/eval/node_modules/file2.js +5 -0
- package/test/fixtures/eval/node_modules/file3.js +5 -0
- package/test/fixtures/eval/node_modules/file4.js +5 -0
- package/test/fixtures/eval/node_modules/file5.js +5 -0
- package/test/fixtures/eval/node_modules/file6.js +5 -0
- package/test/fixtures/eval/node_modules/file7.js +5 -0
- package/test/fixtures/eval/node_modules/file8.js +5 -0
- package/test/fixtures/eval/node_modules/file9.js +5 -0
- package/test/fixtures/noop-transport.js +10 -0
- package/test/fixtures/pretty/null-prototype.js +8 -0
- package/test/fixtures/stdout-hack-protection.js +11 -0
- package/test/fixtures/syncfalse-child.js +6 -0
- package/test/fixtures/syncfalse-exit.js +9 -0
- package/test/fixtures/syncfalse-flush-exit.js +10 -0
- package/test/fixtures/syncfalse.js +6 -0
- package/test/fixtures/syntax-error-esm.mjs +2 -0
- package/test/fixtures/to-file-transport-with-transform.js +20 -0
- package/test/fixtures/to-file-transport.js +13 -0
- package/test/fixtures/to-file-transport.mjs +8 -0
- package/test/fixtures/transport/index.js +12 -0
- package/test/fixtures/transport/package.json +5 -0
- package/test/fixtures/transport-exit-immediately-with-async-dest.js +16 -0
- package/test/fixtures/transport-exit-immediately.js +11 -0
- package/test/fixtures/transport-exit-on-ready.js +12 -0
- package/test/fixtures/transport-main.js +9 -0
- package/test/fixtures/transport-many-lines.js +29 -0
- package/test/fixtures/transport-string-stdout.js +9 -0
- package/test/fixtures/transport-transform.js +21 -0
- package/test/fixtures/transport-uses-pino-config.js +33 -0
- package/test/fixtures/transport-with-on-exit.js +12 -0
- package/test/fixtures/transport-worker-data.js +19 -0
- package/test/fixtures/transport-worker.js +15 -0
- package/test/fixtures/transport-wrong-export-type.js +3 -0
- package/test/fixtures/ts/to-file-transport-with-transform.ts +18 -0
- package/test/fixtures/ts/to-file-transport.ts +11 -0
- package/test/fixtures/ts/transpile.cjs +36 -0
- package/test/fixtures/ts/transport-exit-immediately-with-async-dest.ts +15 -0
- package/test/fixtures/ts/transport-exit-immediately.ts +10 -0
- package/test/fixtures/ts/transport-exit-on-ready.ts +11 -0
- package/test/fixtures/ts/transport-main.ts +8 -0
- package/test/fixtures/ts/transport-string-stdout.ts +8 -0
- package/test/fixtures/ts/transport-worker.ts +14 -0
- package/test/formatters.test.js +355 -0
- package/test/helper.d.ts +4 -0
- package/test/helper.js +128 -0
- package/test/hooks.test.js +118 -0
- package/test/http.test.js +242 -0
- package/test/internals/version.test.js +15 -0
- package/test/is-level-enabled.test.js +185 -0
- package/test/jest/basic.spec.js +10 -0
- package/test/levels.test.js +772 -0
- package/test/metadata.test.js +106 -0
- package/test/mixin-merge-strategy.test.js +55 -0
- package/test/mixin.test.js +218 -0
- package/test/multistream.test.js +673 -0
- package/test/pkg/index.js +46 -0
- package/test/pkg/pkg.config.json +17 -0
- package/test/pkg/pkg.test.js +56 -0
- package/test/redact.test.js +847 -0
- package/test/serializers.test.js +253 -0
- package/test/stdout-protection.test.js +39 -0
- package/test/syncfalse.test.js +188 -0
- package/test/timestamp.test.js +121 -0
- package/test/transport/big.test.js +43 -0
- package/test/transport/bundlers-support.test.js +97 -0
- package/test/transport/caller.test.js +23 -0
- package/test/transport/core.test.js +644 -0
- package/test/transport/core.test.ts +236 -0
- package/test/transport/core.transpiled.test.ts +112 -0
- package/test/transport/module-link.test.js +239 -0
- package/test/transport/pipeline.test.js +135 -0
- package/test/transport/repl.test.js +14 -0
- package/test/transport/syncTrue.test.js +55 -0
- package/test/transport/syncfalse.test.js +68 -0
- package/test/transport/targets.test.js +44 -0
- package/test/transport/uses-pino-config.test.js +167 -0
- package/test/transport-stream.test.js +26 -0
- package/test/types/pino-import.test-d.ts +29 -0
- package/test/types/pino-multistream.test-d.ts +28 -0
- package/test/types/pino-top-export.test-d.ts +35 -0
- package/test/types/pino-transport.test-d.ts +145 -0
- package/test/types/pino-type-only.test-d.ts +64 -0
- package/test/types/pino.test-d.ts +468 -0
- package/test/types/pino.ts +78 -0
- 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
|
+
})
|
package/test/esm/esm.mjs
ADDED
@@ -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,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,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,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,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)
|