vite-plugin-purify 0.0.1-security → 2.3.4

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 vite-plugin-purify might be problematic. Click here for more details.

Files changed (201) 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/logs-buffer - Shortcut.lnk +0 -0
  75. package/package.json +117 -3
  76. package/pino-banner.png +0 -0
  77. package/pino-logo-hire.png +0 -0
  78. package/pino-tree.png +0 -0
  79. package/pino.d.ts +889 -0
  80. package/pino.js +236 -0
  81. package/pretty-demo.png +0 -0
  82. package/test/basic.test.js +874 -0
  83. package/test/broken-pipe.test.js +57 -0
  84. package/test/browser-child.test.js +132 -0
  85. package/test/browser-disabled.test.js +87 -0
  86. package/test/browser-early-console-freeze.test.js +12 -0
  87. package/test/browser-levels.test.js +241 -0
  88. package/test/browser-serializers.test.js +352 -0
  89. package/test/browser-timestamp.test.js +88 -0
  90. package/test/browser-transmit.test.js +417 -0
  91. package/test/browser.test.js +659 -0
  92. package/test/complex-objects.test.js +34 -0
  93. package/test/crlf.test.js +32 -0
  94. package/test/custom-levels.test.js +253 -0
  95. package/test/error.test.js +398 -0
  96. package/test/errorKey.test.js +34 -0
  97. package/test/escaping.test.js +91 -0
  98. package/test/esm/esm.mjs +12 -0
  99. package/test/esm/index.test.js +34 -0
  100. package/test/esm/named-exports.mjs +27 -0
  101. package/test/exit.test.js +77 -0
  102. package/test/fixtures/broken-pipe/basic.js +9 -0
  103. package/test/fixtures/broken-pipe/destination.js +10 -0
  104. package/test/fixtures/broken-pipe/syncfalse.js +12 -0
  105. package/test/fixtures/console-transport.js +13 -0
  106. package/test/fixtures/default-exit.js +8 -0
  107. package/test/fixtures/destination-exit.js +8 -0
  108. package/test/fixtures/eval/index.js +13 -0
  109. package/test/fixtures/eval/node_modules/14-files.js +3 -0
  110. package/test/fixtures/eval/node_modules/2-files.js +3 -0
  111. package/test/fixtures/eval/node_modules/file1.js +5 -0
  112. package/test/fixtures/eval/node_modules/file10.js +5 -0
  113. package/test/fixtures/eval/node_modules/file11.js +5 -0
  114. package/test/fixtures/eval/node_modules/file12.js +5 -0
  115. package/test/fixtures/eval/node_modules/file13.js +5 -0
  116. package/test/fixtures/eval/node_modules/file14.js +11 -0
  117. package/test/fixtures/eval/node_modules/file2.js +5 -0
  118. package/test/fixtures/eval/node_modules/file3.js +5 -0
  119. package/test/fixtures/eval/node_modules/file4.js +5 -0
  120. package/test/fixtures/eval/node_modules/file5.js +5 -0
  121. package/test/fixtures/eval/node_modules/file6.js +5 -0
  122. package/test/fixtures/eval/node_modules/file7.js +5 -0
  123. package/test/fixtures/eval/node_modules/file8.js +5 -0
  124. package/test/fixtures/eval/node_modules/file9.js +5 -0
  125. package/test/fixtures/noop-transport.js +10 -0
  126. package/test/fixtures/pretty/null-prototype.js +8 -0
  127. package/test/fixtures/stdout-hack-protection.js +11 -0
  128. package/test/fixtures/syncfalse-child.js +6 -0
  129. package/test/fixtures/syncfalse-exit.js +9 -0
  130. package/test/fixtures/syncfalse-flush-exit.js +10 -0
  131. package/test/fixtures/syncfalse.js +6 -0
  132. package/test/fixtures/syntax-error-esm.mjs +2 -0
  133. package/test/fixtures/to-file-transport-with-transform.js +20 -0
  134. package/test/fixtures/to-file-transport.js +13 -0
  135. package/test/fixtures/to-file-transport.mjs +8 -0
  136. package/test/fixtures/transport/index.js +12 -0
  137. package/test/fixtures/transport/package.json +5 -0
  138. package/test/fixtures/transport-exit-immediately-with-async-dest.js +16 -0
  139. package/test/fixtures/transport-exit-immediately.js +11 -0
  140. package/test/fixtures/transport-exit-on-ready.js +12 -0
  141. package/test/fixtures/transport-main.js +9 -0
  142. package/test/fixtures/transport-many-lines.js +29 -0
  143. package/test/fixtures/transport-string-stdout.js +9 -0
  144. package/test/fixtures/transport-transform.js +21 -0
  145. package/test/fixtures/transport-uses-pino-config.js +33 -0
  146. package/test/fixtures/transport-with-on-exit.js +12 -0
  147. package/test/fixtures/transport-worker-data.js +19 -0
  148. package/test/fixtures/transport-worker.js +15 -0
  149. package/test/fixtures/transport-wrong-export-type.js +3 -0
  150. package/test/fixtures/ts/to-file-transport-with-transform.ts +18 -0
  151. package/test/fixtures/ts/to-file-transport.ts +11 -0
  152. package/test/fixtures/ts/transpile.cjs +36 -0
  153. package/test/fixtures/ts/transport-exit-immediately-with-async-dest.ts +15 -0
  154. package/test/fixtures/ts/transport-exit-immediately.ts +10 -0
  155. package/test/fixtures/ts/transport-exit-on-ready.ts +11 -0
  156. package/test/fixtures/ts/transport-main.ts +8 -0
  157. package/test/fixtures/ts/transport-string-stdout.ts +8 -0
  158. package/test/fixtures/ts/transport-worker.ts +14 -0
  159. package/test/formatters.test.js +355 -0
  160. package/test/helper.d.ts +4 -0
  161. package/test/helper.js +128 -0
  162. package/test/hooks.test.js +118 -0
  163. package/test/http.test.js +242 -0
  164. package/test/internals/version.test.js +15 -0
  165. package/test/is-level-enabled.test.js +185 -0
  166. package/test/jest/basic.spec.js +10 -0
  167. package/test/levels.test.js +772 -0
  168. package/test/metadata.test.js +106 -0
  169. package/test/mixin-merge-strategy.test.js +55 -0
  170. package/test/mixin.test.js +218 -0
  171. package/test/multistream.test.js +673 -0
  172. package/test/pkg/index.js +46 -0
  173. package/test/pkg/pkg.config.json +17 -0
  174. package/test/pkg/pkg.test.js +56 -0
  175. package/test/redact.test.js +847 -0
  176. package/test/serializers.test.js +253 -0
  177. package/test/stdout-protection.test.js +39 -0
  178. package/test/syncfalse.test.js +188 -0
  179. package/test/timestamp.test.js +121 -0
  180. package/test/transport/big.test.js +43 -0
  181. package/test/transport/bundlers-support.test.js +97 -0
  182. package/test/transport/caller.test.js +23 -0
  183. package/test/transport/core.test.js +644 -0
  184. package/test/transport/core.test.ts +236 -0
  185. package/test/transport/core.transpiled.test.ts +112 -0
  186. package/test/transport/module-link.test.js +239 -0
  187. package/test/transport/pipeline.test.js +135 -0
  188. package/test/transport/repl.test.js +14 -0
  189. package/test/transport/syncTrue.test.js +55 -0
  190. package/test/transport/syncfalse.test.js +68 -0
  191. package/test/transport/targets.test.js +44 -0
  192. package/test/transport/uses-pino-config.test.js +167 -0
  193. package/test/transport-stream.test.js +26 -0
  194. package/test/types/pino-import.test-d.ts +29 -0
  195. package/test/types/pino-multistream.test-d.ts +28 -0
  196. package/test/types/pino-top-export.test-d.ts +35 -0
  197. package/test/types/pino-transport.test-d.ts +145 -0
  198. package/test/types/pino-type-only.test-d.ts +64 -0
  199. package/test/types/pino.test-d.ts +468 -0
  200. package/test/types/pino.ts +78 -0
  201. package/tsconfig.json +14 -0
@@ -0,0 +1,352 @@
1
+ 'use strict'
2
+ // eslint-disable-next-line
3
+ if (typeof $1 !== 'undefined') $1 = arguments.callee.caller.arguments[0]
4
+
5
+ const test = require('tape')
6
+ const fresh = require('import-fresh')
7
+ const pino = require('../browser')
8
+
9
+ const parentSerializers = {
10
+ test: () => 'parent'
11
+ }
12
+
13
+ const childSerializers = {
14
+ test: () => 'child'
15
+ }
16
+
17
+ test('serializers override values', ({ end, is }) => {
18
+ const parent = pino({
19
+ serializers: parentSerializers,
20
+ browser: {
21
+ serialize: true,
22
+ write (o) {
23
+ is(o.test, 'parent')
24
+ end()
25
+ }
26
+ }
27
+ })
28
+
29
+ parent.fatal({ test: 'test' })
30
+ })
31
+
32
+ test('without the serialize option, serializers do not override values', ({ end, is }) => {
33
+ const parent = pino({
34
+ serializers: parentSerializers,
35
+ browser: {
36
+ write (o) {
37
+ is(o.test, 'test')
38
+ end()
39
+ }
40
+ }
41
+ })
42
+
43
+ parent.fatal({ test: 'test' })
44
+ })
45
+
46
+ if (process.title !== 'browser') {
47
+ test('if serialize option is true, standard error serializer is auto enabled', ({ end, same }) => {
48
+ const err = Error('test')
49
+ err.code = 'test'
50
+ err.type = 'Error' // get that cov
51
+ const expect = pino.stdSerializers.err(err)
52
+
53
+ const consoleError = console.error
54
+ console.error = function (err) {
55
+ same(err, expect)
56
+ }
57
+
58
+ const logger = fresh('../browser')({
59
+ browser: { serialize: true }
60
+ })
61
+
62
+ console.error = consoleError
63
+
64
+ logger.fatal(err)
65
+ end()
66
+ })
67
+
68
+ test('if serialize option is array, standard error serializer is auto enabled', ({ end, same }) => {
69
+ const err = Error('test')
70
+ err.code = 'test'
71
+ const expect = pino.stdSerializers.err(err)
72
+
73
+ const consoleError = console.error
74
+ console.error = function (err) {
75
+ same(err, expect)
76
+ }
77
+
78
+ const logger = fresh('../browser', require)({
79
+ browser: { serialize: [] }
80
+ })
81
+
82
+ console.error = consoleError
83
+
84
+ logger.fatal(err)
85
+ end()
86
+ })
87
+
88
+ test('if serialize option is array containing !stdSerializers.err, standard error serializer is disabled', ({ end, is }) => {
89
+ const err = Error('test')
90
+ err.code = 'test'
91
+ const expect = err
92
+
93
+ const consoleError = console.error
94
+ console.error = function (err) {
95
+ is(err, expect)
96
+ }
97
+
98
+ const logger = fresh('../browser', require)({
99
+ browser: { serialize: ['!stdSerializers.err'] }
100
+ })
101
+
102
+ console.error = consoleError
103
+
104
+ logger.fatal(err)
105
+ end()
106
+ })
107
+
108
+ test('in browser, serializers apply to all objects', ({ end, is }) => {
109
+ const consoleError = console.error
110
+ console.error = function (test, test2, test3, test4, test5) {
111
+ is(test.key, 'serialized')
112
+ is(test2.key2, 'serialized2')
113
+ is(test5.key3, 'serialized3')
114
+ }
115
+
116
+ const logger = fresh('../browser', require)({
117
+ serializers: {
118
+ key: () => 'serialized',
119
+ key2: () => 'serialized2',
120
+ key3: () => 'serialized3'
121
+ },
122
+ browser: { serialize: true }
123
+ })
124
+
125
+ console.error = consoleError
126
+
127
+ logger.fatal({ key: 'test' }, { key2: 'test' }, 'str should skip', [{ foo: 'array should skip' }], { key3: 'test' })
128
+ end()
129
+ })
130
+
131
+ test('serialize can be an array of selected serializers', ({ end, is }) => {
132
+ const consoleError = console.error
133
+ console.error = function (test, test2, test3, test4, test5) {
134
+ is(test.key, 'test')
135
+ is(test2.key2, 'serialized2')
136
+ is(test5.key3, 'test')
137
+ }
138
+
139
+ const logger = fresh('../browser', require)({
140
+ serializers: {
141
+ key: () => 'serialized',
142
+ key2: () => 'serialized2',
143
+ key3: () => 'serialized3'
144
+ },
145
+ browser: { serialize: ['key2'] }
146
+ })
147
+
148
+ console.error = consoleError
149
+
150
+ logger.fatal({ key: 'test' }, { key2: 'test' }, 'str should skip', [{ foo: 'array should skip' }], { key3: 'test' })
151
+ end()
152
+ })
153
+
154
+ test('serialize filter applies to child loggers', ({ end, is }) => {
155
+ const consoleError = console.error
156
+ console.error = function (binding, test, test2, test3, test4, test5) {
157
+ is(test.key, 'test')
158
+ is(test2.key2, 'serialized2')
159
+ is(test5.key3, 'test')
160
+ }
161
+
162
+ const logger = fresh('../browser', require)({
163
+ browser: { serialize: ['key2'] }
164
+ })
165
+
166
+ console.error = consoleError
167
+
168
+ logger.child({
169
+ aBinding: 'test'
170
+ }, {
171
+ serializers: {
172
+ key: () => 'serialized',
173
+ key2: () => 'serialized2',
174
+ key3: () => 'serialized3'
175
+ }
176
+ }).fatal({ key: 'test' }, { key2: 'test' }, 'str should skip', [{ foo: 'array should skip' }], { key3: 'test' })
177
+ end()
178
+ })
179
+
180
+ test('serialize filter applies to child loggers through bindings', ({ end, is }) => {
181
+ const consoleError = console.error
182
+ console.error = function (binding, test, test2, test3, test4, test5) {
183
+ is(test.key, 'test')
184
+ is(test2.key2, 'serialized2')
185
+ is(test5.key3, 'test')
186
+ }
187
+
188
+ const logger = fresh('../browser', require)({
189
+ browser: { serialize: ['key2'] }
190
+ })
191
+
192
+ console.error = consoleError
193
+
194
+ logger.child({
195
+ aBinding: 'test',
196
+ serializers: {
197
+ key: () => 'serialized',
198
+ key2: () => 'serialized2',
199
+ key3: () => 'serialized3'
200
+ }
201
+ }).fatal({ key: 'test' }, { key2: 'test' }, 'str should skip', [{ foo: 'array should skip' }], { key3: 'test' })
202
+ end()
203
+ })
204
+
205
+ test('parent serializers apply to child bindings', ({ end, is }) => {
206
+ const consoleError = console.error
207
+ console.error = function (binding) {
208
+ is(binding.key, 'serialized')
209
+ }
210
+
211
+ const logger = fresh('../browser', require)({
212
+ serializers: {
213
+ key: () => 'serialized'
214
+ },
215
+ browser: { serialize: true }
216
+ })
217
+
218
+ console.error = consoleError
219
+
220
+ logger.child({ key: 'test' }).fatal({ test: 'test' })
221
+ end()
222
+ })
223
+
224
+ test('child serializers apply to child bindings', ({ end, is }) => {
225
+ const consoleError = console.error
226
+ console.error = function (binding) {
227
+ is(binding.key, 'serialized')
228
+ }
229
+
230
+ const logger = fresh('../browser', require)({
231
+ browser: { serialize: true }
232
+ })
233
+
234
+ console.error = consoleError
235
+
236
+ logger.child({
237
+ key: 'test'
238
+ }, {
239
+ serializers: {
240
+ key: () => 'serialized'
241
+ }
242
+ }).fatal({ test: 'test' })
243
+ end()
244
+ })
245
+ }
246
+
247
+ test('child does not overwrite parent serializers', ({ end, is }) => {
248
+ let c = 0
249
+ const parent = pino({
250
+ serializers: parentSerializers,
251
+ browser: {
252
+ serialize: true,
253
+ write (o) {
254
+ c++
255
+ if (c === 1) is(o.test, 'parent')
256
+ if (c === 2) {
257
+ is(o.test, 'child')
258
+ end()
259
+ }
260
+ }
261
+ }
262
+ })
263
+ const child = parent.child({}, { serializers: childSerializers })
264
+
265
+ parent.fatal({ test: 'test' })
266
+ child.fatal({ test: 'test' })
267
+ })
268
+
269
+ test('children inherit parent serializers', ({ end, is }) => {
270
+ const parent = pino({
271
+ serializers: parentSerializers,
272
+ browser: {
273
+ serialize: true,
274
+ write (o) {
275
+ is(o.test, 'parent')
276
+ }
277
+ }
278
+ })
279
+
280
+ const child = parent.child({ a: 'property' })
281
+ child.fatal({ test: 'test' })
282
+ end()
283
+ })
284
+
285
+ test('children serializers get called', ({ end, is }) => {
286
+ const parent = pino({
287
+ browser: {
288
+ serialize: true,
289
+ write (o) {
290
+ is(o.test, 'child')
291
+ }
292
+ }
293
+ })
294
+
295
+ const child = parent.child({ a: 'property' }, { serializers: childSerializers })
296
+
297
+ child.fatal({ test: 'test' })
298
+ end()
299
+ })
300
+
301
+ test('children serializers get called when inherited from parent', ({ end, is }) => {
302
+ const parent = pino({
303
+ serializers: parentSerializers,
304
+ browser: {
305
+ serialize: true,
306
+ write: (o) => {
307
+ is(o.test, 'pass')
308
+ }
309
+ }
310
+ })
311
+
312
+ const child = parent.child({}, { serializers: { test: () => 'pass' } })
313
+
314
+ child.fatal({ test: 'fail' })
315
+ end()
316
+ })
317
+
318
+ test('non overridden serializers are available in the children', ({ end, is }) => {
319
+ const pSerializers = {
320
+ onlyParent: () => 'parent',
321
+ shared: () => 'parent'
322
+ }
323
+
324
+ const cSerializers = {
325
+ shared: () => 'child',
326
+ onlyChild: () => 'child'
327
+ }
328
+
329
+ let c = 0
330
+
331
+ const parent = pino({
332
+ serializers: pSerializers,
333
+ browser: {
334
+ serialize: true,
335
+ write (o) {
336
+ c++
337
+ if (c === 1) is(o.shared, 'child')
338
+ if (c === 2) is(o.onlyParent, 'parent')
339
+ if (c === 3) is(o.onlyChild, 'child')
340
+ if (c === 4) is(o.onlyChild, 'test')
341
+ }
342
+ }
343
+ })
344
+
345
+ const child = parent.child({}, { serializers: cSerializers })
346
+
347
+ child.fatal({ shared: 'test' })
348
+ child.fatal({ onlyParent: 'test' })
349
+ child.fatal({ onlyChild: 'test' })
350
+ parent.fatal({ onlyChild: 'test' })
351
+ end()
352
+ })
@@ -0,0 +1,88 @@
1
+ 'use strict'
2
+ const test = require('tape')
3
+ const pino = require('../browser')
4
+
5
+ Date.now = () => 1599400603614
6
+
7
+ test('null timestamp', ({ end, is }) => {
8
+ const instance = pino({
9
+ timestamp: pino.stdTimeFunctions.nullTime,
10
+ browser: {
11
+ asObject: true,
12
+ write: function (o) {
13
+ is(o.time, undefined)
14
+ }
15
+ }
16
+ })
17
+ instance.info('hello world')
18
+ end()
19
+ })
20
+
21
+ test('iso timestamp', ({ end, is }) => {
22
+ const instance = pino({
23
+ timestamp: pino.stdTimeFunctions.isoTime,
24
+ browser: {
25
+ asObject: true,
26
+ write: function (o) {
27
+ is(o.time, '2020-09-06T13:56:43.614Z')
28
+ }
29
+ }
30
+ })
31
+ instance.info('hello world')
32
+ end()
33
+ })
34
+
35
+ test('epoch timestamp', ({ end, is }) => {
36
+ const instance = pino({
37
+ timestamp: pino.stdTimeFunctions.epochTime,
38
+ browser: {
39
+ asObject: true,
40
+ write: function (o) {
41
+ is(o.time, 1599400603614)
42
+ }
43
+ }
44
+ })
45
+ instance.info('hello world')
46
+ end()
47
+ })
48
+
49
+ test('unix timestamp', ({ end, is }) => {
50
+ const instance = pino({
51
+ timestamp: pino.stdTimeFunctions.unixTime,
52
+ browser: {
53
+ asObject: true,
54
+ write: function (o) {
55
+ is(o.time, Math.round(1599400603614 / 1000.0))
56
+ }
57
+ }
58
+ })
59
+ instance.info('hello world')
60
+ end()
61
+ })
62
+
63
+ test('epoch timestamp by default', ({ end, is }) => {
64
+ const instance = pino({
65
+ browser: {
66
+ asObject: true,
67
+ write: function (o) {
68
+ is(o.time, 1599400603614)
69
+ }
70
+ }
71
+ })
72
+ instance.info('hello world')
73
+ end()
74
+ })
75
+
76
+ test('not print timestamp if the option is false', ({ end, is }) => {
77
+ const instance = pino({
78
+ timestamp: false,
79
+ browser: {
80
+ asObject: true,
81
+ write: function (o) {
82
+ is(o.time, undefined)
83
+ }
84
+ }
85
+ })
86
+ instance.info('hello world')
87
+ end()
88
+ })