router-parse 0.0.1-security → 1.0.1

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 router-parse might be problematic. Click here for more details.

Files changed (195) hide show
  1. package/.eslintignore +2 -0
  2. package/.eslintrc +8 -0
  3. package/.nojekyll +0 -0
  4. package/.prettierignore +1 -0
  5. package/.taprc.yaml +8 -0
  6. package/CNAME +1 -0
  7. package/CONTRIBUTING.md +30 -0
  8. package/LICENSE +21 -0
  9. package/README.md +159 -3
  10. package/SECURITY.md +68 -0
  11. package/benchmarks/basic.bench.js +95 -0
  12. package/benchmarks/child-child.bench.js +52 -0
  13. package/benchmarks/child-creation.bench.js +73 -0
  14. package/benchmarks/child.bench.js +62 -0
  15. package/benchmarks/deep-object.bench.js +88 -0
  16. package/benchmarks/formatters.bench.js +50 -0
  17. package/benchmarks/internal/custom-levels.js +67 -0
  18. package/benchmarks/internal/just-pino-heavy.bench.js +76 -0
  19. package/benchmarks/internal/just-pino.bench.js +182 -0
  20. package/benchmarks/internal/parent-vs-child.bench.js +75 -0
  21. package/benchmarks/internal/redact.bench.js +86 -0
  22. package/benchmarks/long-string.bench.js +81 -0
  23. package/benchmarks/multi-arg.bench.js +193 -0
  24. package/benchmarks/multistream.js +98 -0
  25. package/benchmarks/object.bench.js +82 -0
  26. package/benchmarks/utils/generate-benchmark-doc.js +36 -0
  27. package/benchmarks/utils/runbench.js +138 -0
  28. package/benchmarks/utils/wrap-log-level.js +55 -0
  29. package/bin.js +6 -0
  30. package/browser.js +484 -0
  31. package/build/sync-version.js +10 -0
  32. package/docs/api.md +1487 -0
  33. package/docs/asynchronous.md +40 -0
  34. package/docs/benchmarks.md +55 -0
  35. package/docs/browser.md +227 -0
  36. package/docs/bundling.md +40 -0
  37. package/docs/child-loggers.md +95 -0
  38. package/docs/ecosystem.md +84 -0
  39. package/docs/help.md +345 -0
  40. package/docs/lts.md +64 -0
  41. package/docs/pretty.md +35 -0
  42. package/docs/redaction.md +135 -0
  43. package/docs/transports.md +1238 -0
  44. package/docs/web.md +269 -0
  45. package/docsify/sidebar.md +26 -0
  46. package/examples/basic.js +43 -0
  47. package/examples/transport.js +68 -0
  48. package/favicon-16x16.png +0 -0
  49. package/favicon-32x32.png +0 -0
  50. package/favicon.ico +0 -0
  51. package/file.js +12 -0
  52. package/inc-version.sh +42 -0
  53. package/index.html +55 -0
  54. package/lib/caller.js +30 -0
  55. package/lib/constants.js +28 -0
  56. package/lib/deprecations.js +8 -0
  57. package/lib/levels.js +241 -0
  58. package/lib/meta.js +3 -0
  59. package/lib/multistream.js +188 -0
  60. package/lib/proto.js +234 -0
  61. package/lib/redaction.js +118 -0
  62. package/lib/symbols.js +74 -0
  63. package/lib/time.js +11 -0
  64. package/lib/tools.js +394 -0
  65. package/lib/transport-stream.js +56 -0
  66. package/lib/transport.js +167 -0
  67. package/lib/worker.js +194 -0
  68. package/lib/writer.js +42 -0
  69. package/package.json +117 -3
  70. package/pino-banner.png +0 -0
  71. package/pino-logo-hire.png +0 -0
  72. package/pino-tree.png +0 -0
  73. package/pino.d.ts +889 -0
  74. package/pino.js +236 -0
  75. package/pretty-demo.png +0 -0
  76. package/test/basic.test.js +874 -0
  77. package/test/broken-pipe.test.js +57 -0
  78. package/test/browser-child.test.js +132 -0
  79. package/test/browser-disabled.test.js +87 -0
  80. package/test/browser-early-console-freeze.test.js +12 -0
  81. package/test/browser-levels.test.js +241 -0
  82. package/test/browser-serializers.test.js +352 -0
  83. package/test/browser-timestamp.test.js +88 -0
  84. package/test/browser-transmit.test.js +417 -0
  85. package/test/browser.test.js +659 -0
  86. package/test/complex-objects.test.js +34 -0
  87. package/test/crlf.test.js +32 -0
  88. package/test/custom-levels.test.js +253 -0
  89. package/test/error.test.js +398 -0
  90. package/test/errorKey.test.js +34 -0
  91. package/test/escaping.test.js +91 -0
  92. package/test/esm/esm.mjs +12 -0
  93. package/test/esm/index.test.js +34 -0
  94. package/test/esm/named-exports.mjs +27 -0
  95. package/test/exit.test.js +77 -0
  96. package/test/fixtures/broken-pipe/basic.js +9 -0
  97. package/test/fixtures/broken-pipe/destination.js +10 -0
  98. package/test/fixtures/broken-pipe/syncfalse.js +12 -0
  99. package/test/fixtures/console-transport.js +13 -0
  100. package/test/fixtures/default-exit.js +8 -0
  101. package/test/fixtures/destination-exit.js +8 -0
  102. package/test/fixtures/eval/index.js +13 -0
  103. package/test/fixtures/eval/node_modules/14-files.js +3 -0
  104. package/test/fixtures/eval/node_modules/2-files.js +3 -0
  105. package/test/fixtures/eval/node_modules/file1.js +5 -0
  106. package/test/fixtures/eval/node_modules/file10.js +5 -0
  107. package/test/fixtures/eval/node_modules/file11.js +5 -0
  108. package/test/fixtures/eval/node_modules/file12.js +5 -0
  109. package/test/fixtures/eval/node_modules/file13.js +5 -0
  110. package/test/fixtures/eval/node_modules/file14.js +11 -0
  111. package/test/fixtures/eval/node_modules/file2.js +5 -0
  112. package/test/fixtures/eval/node_modules/file3.js +5 -0
  113. package/test/fixtures/eval/node_modules/file4.js +5 -0
  114. package/test/fixtures/eval/node_modules/file5.js +5 -0
  115. package/test/fixtures/eval/node_modules/file6.js +5 -0
  116. package/test/fixtures/eval/node_modules/file7.js +5 -0
  117. package/test/fixtures/eval/node_modules/file8.js +5 -0
  118. package/test/fixtures/eval/node_modules/file9.js +5 -0
  119. package/test/fixtures/noop-transport.js +10 -0
  120. package/test/fixtures/pretty/null-prototype.js +8 -0
  121. package/test/fixtures/stdout-hack-protection.js +11 -0
  122. package/test/fixtures/syncfalse-child.js +6 -0
  123. package/test/fixtures/syncfalse-exit.js +9 -0
  124. package/test/fixtures/syncfalse-flush-exit.js +10 -0
  125. package/test/fixtures/syncfalse.js +6 -0
  126. package/test/fixtures/syntax-error-esm.mjs +2 -0
  127. package/test/fixtures/to-file-transport-with-transform.js +20 -0
  128. package/test/fixtures/to-file-transport.js +13 -0
  129. package/test/fixtures/to-file-transport.mjs +8 -0
  130. package/test/fixtures/transport/index.js +12 -0
  131. package/test/fixtures/transport/package.json +5 -0
  132. package/test/fixtures/transport-exit-immediately-with-async-dest.js +16 -0
  133. package/test/fixtures/transport-exit-immediately.js +11 -0
  134. package/test/fixtures/transport-exit-on-ready.js +12 -0
  135. package/test/fixtures/transport-main.js +9 -0
  136. package/test/fixtures/transport-many-lines.js +29 -0
  137. package/test/fixtures/transport-string-stdout.js +9 -0
  138. package/test/fixtures/transport-transform.js +21 -0
  139. package/test/fixtures/transport-uses-pino-config.js +33 -0
  140. package/test/fixtures/transport-with-on-exit.js +12 -0
  141. package/test/fixtures/transport-worker-data.js +19 -0
  142. package/test/fixtures/transport-worker.js +15 -0
  143. package/test/fixtures/transport-wrong-export-type.js +3 -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 +355 -0
  154. package/test/helper.d.ts +4 -0
  155. package/test/helper.js +128 -0
  156. package/test/hooks.test.js +118 -0
  157. package/test/http.test.js +242 -0
  158. package/test/internals/version.test.js +15 -0
  159. package/test/is-level-enabled.test.js +185 -0
  160. package/test/jest/basic.spec.js +10 -0
  161. package/test/levels.test.js +772 -0
  162. package/test/metadata.test.js +106 -0
  163. package/test/mixin-merge-strategy.test.js +55 -0
  164. package/test/mixin.test.js +218 -0
  165. package/test/multistream.test.js +673 -0
  166. package/test/pkg/index.js +46 -0
  167. package/test/pkg/pkg.config.json +17 -0
  168. package/test/pkg/pkg.test.js +56 -0
  169. package/test/redact.test.js +847 -0
  170. package/test/serializers.test.js +253 -0
  171. package/test/stdout-protection.test.js +39 -0
  172. package/test/syncfalse.test.js +188 -0
  173. package/test/timestamp.test.js +121 -0
  174. package/test/transport/big.test.js +43 -0
  175. package/test/transport/bundlers-support.test.js +97 -0
  176. package/test/transport/caller.test.js +23 -0
  177. package/test/transport/core.test.js +644 -0
  178. package/test/transport/core.test.ts +236 -0
  179. package/test/transport/core.transpiled.test.ts +112 -0
  180. package/test/transport/module-link.test.js +239 -0
  181. package/test/transport/pipeline.test.js +135 -0
  182. package/test/transport/repl.test.js +14 -0
  183. package/test/transport/syncTrue.test.js +55 -0
  184. package/test/transport/syncfalse.test.js +68 -0
  185. package/test/transport/targets.test.js +44 -0
  186. package/test/transport/uses-pino-config.test.js +167 -0
  187. package/test/transport-stream.test.js +26 -0
  188. package/test/types/pino-import.test-d.ts +29 -0
  189. package/test/types/pino-multistream.test-d.ts +28 -0
  190. package/test/types/pino-top-export.test-d.ts +35 -0
  191. package/test/types/pino-transport.test-d.ts +145 -0
  192. package/test/types/pino-type-only.test-d.ts +64 -0
  193. package/test/types/pino.test-d.ts +468 -0
  194. package/test/types/pino.ts +78 -0
  195. package/tsconfig.json +14 -0
@@ -0,0 +1,50 @@
1
+ 'use strict'
2
+
3
+ const formatters = {
4
+ level (label, number) {
5
+ return {
6
+ log: {
7
+ level: label
8
+ }
9
+ }
10
+ },
11
+ bindings (bindings) {
12
+ return {
13
+ process: {
14
+ pid: bindings.pid
15
+ },
16
+ host: {
17
+ name: bindings.hostname
18
+ }
19
+ }
20
+ },
21
+ log (obj) {
22
+ return { foo: 'bar', ...obj }
23
+ }
24
+ }
25
+
26
+ const bench = require('fastbench')
27
+ const pino = require('../')
28
+ delete require.cache[require.resolve('../')]
29
+ const pinoNoFormatters = require('../')(pino.destination('/dev/null'))
30
+ delete require.cache[require.resolve('../')]
31
+ const pinoFormatters = require('../')({ formatters }, pino.destination('/dev/null'))
32
+
33
+ const max = 10
34
+
35
+ const run = bench([
36
+ function benchPinoNoFormatters (cb) {
37
+ for (var i = 0; i < max; i++) {
38
+ pinoNoFormatters.info({ hello: 'world' })
39
+ }
40
+ setImmediate(cb)
41
+ },
42
+ function benchPinoFormatters (cb) {
43
+ for (var i = 0; i < max; i++) {
44
+ pinoFormatters.info({ hello: 'world' })
45
+ }
46
+ setImmediate(cb)
47
+ }
48
+ ], 10000)
49
+
50
+ run(run)
@@ -0,0 +1,67 @@
1
+ 'use strict'
2
+
3
+ const bench = require('fastbench')
4
+ const pino = require('../../')
5
+
6
+ const base = pino(pino.destination('/dev/null'))
7
+ const baseCl = pino({
8
+ customLevels: { foo: 31 }
9
+ }, pino.destination('/dev/null'))
10
+ const child = base.child({})
11
+ const childCl = base.child({
12
+ customLevels: { foo: 31 }
13
+ })
14
+ const childOfBaseCl = baseCl.child({})
15
+
16
+ const max = 100
17
+
18
+ const run = bench([
19
+ function benchPinoNoCustomLevel (cb) {
20
+ for (var i = 0; i < max; i++) {
21
+ base.info({ hello: 'world' })
22
+ }
23
+ setImmediate(cb)
24
+ },
25
+ function benchPinoCustomLevel (cb) {
26
+ for (var i = 0; i < max; i++) {
27
+ baseCl.foo({ hello: 'world' })
28
+ }
29
+ setImmediate(cb)
30
+ },
31
+ function benchChildNoCustomLevel (cb) {
32
+ for (var i = 0; i < max; i++) {
33
+ child.info({ hello: 'world' })
34
+ }
35
+ setImmediate(cb)
36
+ },
37
+ function benchPinoChildCustomLevel (cb) {
38
+ for (var i = 0; i < max; i++) {
39
+ childCl.foo({ hello: 'world' })
40
+ }
41
+ setImmediate(cb)
42
+ },
43
+ function benchPinoChildInheritedCustomLevel (cb) {
44
+ for (var i = 0; i < max; i++) {
45
+ childOfBaseCl.foo({ hello: 'world' })
46
+ }
47
+ setImmediate(cb)
48
+ },
49
+ function benchPinoChildCreation (cb) {
50
+ const child = base.child({})
51
+ for (var i = 0; i < max; i++) {
52
+ child.info({ hello: 'world' })
53
+ }
54
+ setImmediate(cb)
55
+ },
56
+ function benchPinoChildCreationCustomLevel (cb) {
57
+ const child = base.child({
58
+ customLevels: { foo: 31 }
59
+ })
60
+ for (var i = 0; i < max; i++) {
61
+ child.foo({ hello: 'world' })
62
+ }
63
+ setImmediate(cb)
64
+ }
65
+ ], 10000)
66
+
67
+ run(run)
@@ -0,0 +1,76 @@
1
+ 'use strict'
2
+
3
+ const bench = require('fastbench')
4
+ const pino = require('../../')
5
+ const fs = require('node:fs')
6
+ const dest = fs.createWriteStream('/dev/null')
7
+ const plog = pino(dest)
8
+ delete require.cache[require.resolve('../../')]
9
+ const plogDest = require('../../')(pino.destination('/dev/null'))
10
+ delete require.cache[require.resolve('../../')]
11
+ const plogAsync = require('../../')(pino.destination({ dest: '/dev/null', sync: false }))
12
+ const deep = require('../../package.json')
13
+ deep.deep = JSON.parse(JSON.stringify(deep))
14
+ deep.deep.deep = JSON.parse(JSON.stringify(deep))
15
+ const longStr = JSON.stringify(deep)
16
+
17
+ const max = 10
18
+
19
+ const run = bench([
20
+ function benchPinoLongString (cb) {
21
+ for (var i = 0; i < max; i++) {
22
+ plog.info(longStr)
23
+ }
24
+ setImmediate(cb)
25
+ },
26
+ function benchPinoDestLongString (cb) {
27
+ for (var i = 0; i < max; i++) {
28
+ plogDest.info(longStr)
29
+ }
30
+ setImmediate(cb)
31
+ },
32
+ function benchPinoAsyncLongString (cb) {
33
+ for (var i = 0; i < max; i++) {
34
+ plogAsync.info(longStr)
35
+ }
36
+ setImmediate(cb)
37
+ },
38
+ function benchPinoDeepObj (cb) {
39
+ for (var i = 0; i < max; i++) {
40
+ plog.info(deep)
41
+ }
42
+ setImmediate(cb)
43
+ },
44
+ function benchPinoDestDeepObj (cb) {
45
+ for (var i = 0; i < max; i++) {
46
+ plogDest.info(deep)
47
+ }
48
+ setImmediate(cb)
49
+ },
50
+ function benchPinoAsyncDeepObj (cb) {
51
+ for (var i = 0; i < max; i++) {
52
+ plogAsync.info(deep)
53
+ }
54
+ setImmediate(cb)
55
+ },
56
+ function benchPinoInterpolateDeep (cb) {
57
+ for (var i = 0; i < max; i++) {
58
+ plog.info('hello %j', deep)
59
+ }
60
+ setImmediate(cb)
61
+ },
62
+ function benchPinoDestInterpolateDeep (cb) {
63
+ for (var i = 0; i < max; i++) {
64
+ plogDest.info('hello %j', deep)
65
+ }
66
+ setImmediate(cb)
67
+ },
68
+ function benchPinoAsyncInterpolateDeep (cb) {
69
+ for (var i = 0; i < max; i++) {
70
+ plogAsync.info('hello %j', deep)
71
+ }
72
+ setImmediate(cb)
73
+ }
74
+ ], 1000)
75
+
76
+ run(run)
@@ -0,0 +1,182 @@
1
+ 'use strict'
2
+
3
+ const bench = require('fastbench')
4
+ const pino = require('../../')
5
+ const fs = require('node:fs')
6
+ const dest = fs.createWriteStream('/dev/null')
7
+ const plog = pino(dest)
8
+ delete require.cache[require.resolve('../../')]
9
+ const plogDest = require('../../')(pino.destination('/dev/null'))
10
+ delete require.cache[require.resolve('../../')]
11
+ const plogAsync = require('../../')(pino.destination({ dest: '/dev/null', sync: false }))
12
+ const plogChild = plog.child({ a: 'property' })
13
+ const plogDestChild = plogDest.child({ a: 'property' })
14
+ const plogAsyncChild = plogAsync.child({ a: 'property' })
15
+ const plogChildChild = plog.child({ a: 'property' }).child({ sub: 'child' })
16
+ const plogDestChildChild = plogDest.child({ a: 'property' }).child({ sub: 'child' })
17
+ const plogAsyncChildChild = plogAsync.child({ a: 'property' }).child({ sub: 'child' })
18
+
19
+ const max = 10
20
+
21
+ const run = bench([
22
+ function benchPino (cb) {
23
+ for (var i = 0; i < max; i++) {
24
+ plog.info('hello world')
25
+ }
26
+ setImmediate(cb)
27
+ },
28
+ function benchPinoDest (cb) {
29
+ for (var i = 0; i < max; i++) {
30
+ plogDest.info('hello world')
31
+ }
32
+ setImmediate(cb)
33
+ },
34
+ function benchPinoExtreme (cb) {
35
+ for (var i = 0; i < max; i++) {
36
+ plogAsync.info('hello world')
37
+ }
38
+ setImmediate(cb)
39
+ },
40
+ function benchPinoObj (cb) {
41
+ for (var i = 0; i < max; i++) {
42
+ plog.info({ hello: 'world' })
43
+ }
44
+ setImmediate(cb)
45
+ },
46
+ function benchPinoDestObj (cb) {
47
+ for (var i = 0; i < max; i++) {
48
+ plogDest.info({ hello: 'world' })
49
+ }
50
+ setImmediate(cb)
51
+ },
52
+ function benchPinoAsyncObj (cb) {
53
+ for (var i = 0; i < max; i++) {
54
+ plogAsync.info({ hello: 'world' })
55
+ }
56
+ setImmediate(cb)
57
+ },
58
+ function benchPinoChild (cb) {
59
+ for (var i = 0; i < max; i++) {
60
+ plogChild.info({ hello: 'world' })
61
+ }
62
+ setImmediate(cb)
63
+ },
64
+ function benchPinoDestChild (cb) {
65
+ for (var i = 0; i < max; i++) {
66
+ plogDestChild.info({ hello: 'world' })
67
+ }
68
+ setImmediate(cb)
69
+ },
70
+ function benchPinoAsyncChild (cb) {
71
+ for (var i = 0; i < max; i++) {
72
+ plogAsyncChild.info({ hello: 'world' })
73
+ }
74
+ setImmediate(cb)
75
+ },
76
+ function benchPinoChildChild (cb) {
77
+ for (var i = 0; i < max; i++) {
78
+ plogChildChild.info({ hello: 'world' })
79
+ }
80
+ setImmediate(cb)
81
+ },
82
+ function benchPinoDestChildChild (cb) {
83
+ for (var i = 0; i < max; i++) {
84
+ plogDestChildChild.info({ hello: 'world' })
85
+ }
86
+ setImmediate(cb)
87
+ },
88
+ function benchPinoAsyncChildChild (cb) {
89
+ for (var i = 0; i < max; i++) {
90
+ plogAsyncChildChild.info({ hello: 'world' })
91
+ }
92
+ setImmediate(cb)
93
+ },
94
+ function benchPinoChildCreation (cb) {
95
+ const child = plog.child({ a: 'property' })
96
+ for (var i = 0; i < max; i++) {
97
+ child.info({ hello: 'world' })
98
+ }
99
+ setImmediate(cb)
100
+ },
101
+ function benchPinoDestChildCreation (cb) {
102
+ const child = plogDest.child({ a: 'property' })
103
+ for (var i = 0; i < max; i++) {
104
+ child.info({ hello: 'world' })
105
+ }
106
+ setImmediate(cb)
107
+ },
108
+ function benchPinoMulti (cb) {
109
+ for (var i = 0; i < max; i++) {
110
+ plog.info('hello', 'world')
111
+ }
112
+ setImmediate(cb)
113
+ },
114
+ function benchPinoDestMulti (cb) {
115
+ for (var i = 0; i < max; i++) {
116
+ plogDest.info('hello', 'world')
117
+ }
118
+ setImmediate(cb)
119
+ },
120
+ function benchPinoAsyncMulti (cb) {
121
+ for (var i = 0; i < max; i++) {
122
+ plogAsync.info('hello', 'world')
123
+ }
124
+ setImmediate(cb)
125
+ },
126
+ function benchPinoInterpolate (cb) {
127
+ for (var i = 0; i < max; i++) {
128
+ plog.info('hello %s', 'world')
129
+ }
130
+ setImmediate(cb)
131
+ },
132
+ function benchPinoDestInterpolate (cb) {
133
+ for (var i = 0; i < max; i++) {
134
+ plogDest.info('hello %s', 'world')
135
+ }
136
+ setImmediate(cb)
137
+ },
138
+ function benchPinoDestInterpolate (cb) {
139
+ for (var i = 0; i < max; i++) {
140
+ plogDest.info('hello %s', 'world')
141
+ }
142
+ setImmediate(cb)
143
+ },
144
+ function benchPinoInterpolateAll (cb) {
145
+ for (var i = 0; i < max; i++) {
146
+ plog.info('hello %s %j %d', 'world', { obj: true }, 4)
147
+ }
148
+ setImmediate(cb)
149
+ },
150
+ function benchPinoDestInterpolateAll (cb) {
151
+ for (var i = 0; i < max; i++) {
152
+ plogDest.info('hello %s %j %d', 'world', { obj: true }, 4)
153
+ }
154
+ setImmediate(cb)
155
+ },
156
+ function benchPinoAsyncInterpolateAll (cb) {
157
+ for (var i = 0; i < max; i++) {
158
+ plogAsync.info('hello %s %j %d', 'world', { obj: true }, 4)
159
+ }
160
+ setImmediate(cb)
161
+ },
162
+ function benchPinoInterpolateExtra (cb) {
163
+ for (var i = 0; i < max; i++) {
164
+ plog.info('hello %s %j %d', 'world', { obj: true }, 4, { another: 'obj' })
165
+ }
166
+ setImmediate(cb)
167
+ },
168
+ function benchPinoDestInterpolateExtra (cb) {
169
+ for (var i = 0; i < max; i++) {
170
+ plogDest.info('hello %s %j %d', 'world', { obj: true }, 4, { another: 'obj' })
171
+ }
172
+ setImmediate(cb)
173
+ },
174
+ function benchPinoAsyncInterpolateExtra (cb) {
175
+ for (var i = 0; i < max; i++) {
176
+ plogAsync.info('hello %s %j %d', 'world', { obj: true }, 4, { another: 'obj' })
177
+ }
178
+ setImmediate(cb)
179
+ }
180
+ ], 10000)
181
+
182
+ run(run)
@@ -0,0 +1,75 @@
1
+ 'use strict'
2
+
3
+ const bench = require('fastbench')
4
+ const pino = require('../../')
5
+
6
+ const base = pino(pino.destination('/dev/null'))
7
+ const child = base.child({})
8
+ const childChild = child.child({})
9
+ const childChildChild = childChild.child({})
10
+ const childChildChildChild = childChildChild.child({})
11
+ const child2 = base.child({})
12
+ const baseSerializers = pino(pino.destination('/dev/null'))
13
+ const baseSerializersChild = baseSerializers.child({})
14
+ const baseSerializersChildSerializers = baseSerializers.child({})
15
+
16
+ const max = 100
17
+
18
+ const run = bench([
19
+ function benchPinoBase (cb) {
20
+ for (var i = 0; i < max; i++) {
21
+ base.info({ hello: 'world' })
22
+ }
23
+ setImmediate(cb)
24
+ },
25
+ function benchPinoChild (cb) {
26
+ for (var i = 0; i < max; i++) {
27
+ child.info({ hello: 'world' })
28
+ }
29
+ setImmediate(cb)
30
+ },
31
+ function benchPinoChildChild (cb) {
32
+ for (var i = 0; i < max; i++) {
33
+ childChild.info({ hello: 'world' })
34
+ }
35
+ setImmediate(cb)
36
+ },
37
+ function benchPinoChildChildChild (cb) {
38
+ for (var i = 0; i < max; i++) {
39
+ childChildChild.info({ hello: 'world' })
40
+ }
41
+ setImmediate(cb)
42
+ },
43
+ function benchPinoChildChildChildChild (cb) {
44
+ for (var i = 0; i < max; i++) {
45
+ childChildChildChild.info({ hello: 'world' })
46
+ }
47
+ setImmediate(cb)
48
+ },
49
+ function benchPinoChild2 (cb) {
50
+ for (var i = 0; i < max; i++) {
51
+ child2.info({ hello: 'world' })
52
+ }
53
+ setImmediate(cb)
54
+ },
55
+ function benchPinoBaseSerializers (cb) {
56
+ for (var i = 0; i < max; i++) {
57
+ baseSerializers.info({ hello: 'world' })
58
+ }
59
+ setImmediate(cb)
60
+ },
61
+ function benchPinoBaseSerializersChild (cb) {
62
+ for (var i = 0; i < max; i++) {
63
+ baseSerializersChild.info({ hello: 'world' })
64
+ }
65
+ setImmediate(cb)
66
+ },
67
+ function benchPinoBaseSerializersChildSerializers (cb) {
68
+ for (var i = 0; i < max; i++) {
69
+ baseSerializersChildSerializers.info({ hello: 'world' })
70
+ }
71
+ setImmediate(cb)
72
+ }
73
+ ], 10000)
74
+
75
+ run(run)
@@ -0,0 +1,86 @@
1
+ 'use strict'
2
+
3
+ const bench = require('fastbench')
4
+ const pino = require('../../')
5
+ const fs = require('node:fs')
6
+ const dest = fs.createWriteStream('/dev/null')
7
+ const plog = pino(dest)
8
+ delete require.cache[require.resolve('../../')]
9
+ const plogAsync = require('../../')(pino.destination({ dest: '/dev/null', sync: false }))
10
+ delete require.cache[require.resolve('../../')]
11
+ const plogUnsafe = require('../../')({ safe: false }, dest)
12
+ delete require.cache[require.resolve('../../')]
13
+ const plogUnsafeAsync = require('../../')(
14
+ { safe: false },
15
+ pino.destination({ dest: '/dev/null', sync: false })
16
+ )
17
+ const plogRedact = pino({ redact: ['a.b.c'] }, dest)
18
+ delete require.cache[require.resolve('../../')]
19
+ const plogAsyncRedact = require('../../')(
20
+ { redact: ['a.b.c'] },
21
+ pino.destination({ dest: '/dev/null', sync: false })
22
+ )
23
+ delete require.cache[require.resolve('../../')]
24
+ const plogUnsafeRedact = require('../../')({ redact: ['a.b.c'], safe: false }, dest)
25
+ delete require.cache[require.resolve('../../')]
26
+ const plogUnsafeAsyncRedact = require('../../')(
27
+ { redact: ['a.b.c'], safe: false },
28
+ pino.destination({ dest: '/dev/null', sync: false })
29
+ )
30
+
31
+ const max = 10
32
+
33
+ // note that "redact me." is the same amount of bytes as the censor: "[Redacted]"
34
+
35
+ const run = bench([
36
+ function benchPinoNoRedact (cb) {
37
+ for (var i = 0; i < max; i++) {
38
+ plog.info({ a: { b: { c: 'redact me.', d: 'leave me' } } })
39
+ }
40
+ setImmediate(cb)
41
+ },
42
+ function benchPinoRedact (cb) {
43
+ for (var i = 0; i < max; i++) {
44
+ plogRedact.info({ a: { b: { c: 'redact me.', d: 'leave me' } } })
45
+ }
46
+ setImmediate(cb)
47
+ },
48
+ function benchPinoUnsafeNoRedact (cb) {
49
+ for (var i = 0; i < max; i++) {
50
+ plogUnsafe.info({ a: { b: { c: 'redact me.', d: 'leave me' } } })
51
+ }
52
+ setImmediate(cb)
53
+ },
54
+ function benchPinoUnsafeRedact (cb) {
55
+ for (var i = 0; i < max; i++) {
56
+ plogUnsafeRedact.info({ a: { b: { c: 'redact me.', d: 'leave me' } } })
57
+ }
58
+ setImmediate(cb)
59
+ },
60
+ function benchPinoAsyncNoRedact (cb) {
61
+ for (var i = 0; i < max; i++) {
62
+ plogAsync.info({ a: { b: { c: 'redact me.', d: 'leave me' } } })
63
+ }
64
+ setImmediate(cb)
65
+ },
66
+ function benchPinoAsyncRedact (cb) {
67
+ for (var i = 0; i < max; i++) {
68
+ plogAsyncRedact.info({ a: { b: { c: 'redact me.', d: 'leave me' } } })
69
+ }
70
+ setImmediate(cb)
71
+ },
72
+ function benchPinoUnsafeAsyncNoRedact (cb) {
73
+ for (var i = 0; i < max; i++) {
74
+ plogUnsafeAsync.info({ a: { b: { c: 'redact me.', d: 'leave me' } } })
75
+ }
76
+ setImmediate(cb)
77
+ },
78
+ function benchPinoUnsafeAsyncRedact (cb) {
79
+ for (var i = 0; i < max; i++) {
80
+ plogUnsafeAsyncRedact.info({ a: { b: { c: 'redact me.', d: 'leave me' } } })
81
+ }
82
+ setImmediate(cb)
83
+ }
84
+ ], 10000)
85
+
86
+ run(run)
@@ -0,0 +1,81 @@
1
+ 'use strict'
2
+
3
+ const bench = require('fastbench')
4
+ const pino = require('../')
5
+ const bunyan = require('bunyan')
6
+ const bole = require('bole')('bench')
7
+ const winston = require('winston')
8
+ const fs = require('node:fs')
9
+ const dest = fs.createWriteStream('/dev/null')
10
+ const plogNodeStream = pino(dest)
11
+ delete require.cache[require.resolve('../')]
12
+ const plogDest = require('../')(pino.destination('/dev/null'))
13
+ delete require.cache[require.resolve('../')]
14
+ const plogMinLength = require('../')(pino.destination({ dest: '/dev/null', sync: false, minLength: 4096 }))
15
+
16
+ const crypto = require('crypto')
17
+
18
+ const longStr = crypto.randomBytes(2000).toString()
19
+
20
+ const max = 10
21
+ const blog = bunyan.createLogger({
22
+ name: 'myapp',
23
+ streams: [{
24
+ level: 'trace',
25
+ stream: dest
26
+ }]
27
+ })
28
+
29
+ require('bole').output({
30
+ level: 'info',
31
+ stream: dest
32
+ }).setFastTime(true)
33
+
34
+ const chill = winston.createLogger({
35
+ transports: [
36
+ new winston.transports.Stream({
37
+ stream: fs.createWriteStream('/dev/null')
38
+ })
39
+ ]
40
+ })
41
+
42
+ const run = bench([
43
+ function benchBunyan (cb) {
44
+ for (var i = 0; i < max; i++) {
45
+ blog.info(longStr)
46
+ }
47
+ setImmediate(cb)
48
+ },
49
+ function benchWinston (cb) {
50
+ for (var i = 0; i < max; i++) {
51
+ chill.info(longStr)
52
+ }
53
+ setImmediate(cb)
54
+ },
55
+ function benchBole (cb) {
56
+ for (var i = 0; i < max; i++) {
57
+ bole.info(longStr)
58
+ }
59
+ setImmediate(cb)
60
+ },
61
+ function benchPino (cb) {
62
+ for (var i = 0; i < max; i++) {
63
+ plogDest.info(longStr)
64
+ }
65
+ setImmediate(cb)
66
+ },
67
+ function benchPinoMinLength (cb) {
68
+ for (var i = 0; i < max; i++) {
69
+ plogMinLength.info(longStr)
70
+ }
71
+ setImmediate(cb)
72
+ },
73
+ function benchPinoNodeStream (cb) {
74
+ for (var i = 0; i < max; i++) {
75
+ plogNodeStream.info(longStr)
76
+ }
77
+ setImmediate(cb)
78
+ }
79
+ ], 1000)
80
+
81
+ run(run)