Buckets:
| const test = require('node:test') | |
| const os = require('node:os') | |
| const diagChan = require('node:diagnostics_channel') | |
| const { AsyncLocalStorage } = require('node:async_hooks') | |
| const { Writable } = require('node:stream') | |
| const tspl = require('@matteo.collina/tspl') | |
| const pino = require('../pino') | |
| const hostname = os.hostname() | |
| const { pid } = process | |
| const AS_JSON_START = 'tracing:pino_asJson:start' | |
| const AS_JSON_END = 'tracing:pino_asJson:end' | |
| // Skip tests if diagnostics_channel.tracingChannel is not available (Node < 18.19) | |
| const skip = typeof diagChan.tracingChannel !== 'function' | |
| test.beforeEach(ctx => { | |
| ctx.pino = { | |
| ts: 1757512800000, // 2025-09-10T10:00:00.000-05:00 | |
| now: Date.now | |
| } | |
| Date.now = () => ctx.pino.ts | |
| ctx.pino.dest = new Writable({ | |
| objectMode: true, | |
| write (data, enc, cb) { | |
| cb() | |
| } | |
| }) | |
| }) | |
| test.afterEach(ctx => { | |
| Date.now = ctx.pino.now | |
| }) | |
| test('asJson emits events', { skip }, async (t) => { | |
| const plan = tspl(t, { plan: 8 }) | |
| const { dest } = t.pino | |
| const logger = pino({}, dest) | |
| const expectedArguments = [ | |
| {}, | |
| 'testing', | |
| 30, | |
| `,"time":${t.pino.ts}` | |
| ] | |
| let startEvent | |
| diagChan.subscribe(AS_JSON_START, startHandler) | |
| diagChan.subscribe(AS_JSON_END, endHandler) | |
| logger.info('testing') | |
| await plan | |
| diagChan.unsubscribe(AS_JSON_START, startHandler) | |
| diagChan.unsubscribe(AS_JSON_END, endHandler) | |
| function startHandler (event) { | |
| startEvent = event | |
| plan.equal(Object.prototype.toString.call(event.instance), '[object Pino]') | |
| plan.equal(event.instance === logger, true) | |
| plan.deepStrictEqual(Array.from(event.arguments ?? []), expectedArguments) | |
| } | |
| function endHandler (event) { | |
| plan.equal(Object.prototype.toString.call(event.instance), '[object Pino]') | |
| plan.equal(event.instance === logger, true) | |
| plan.deepStrictEqual(Array.from(event.arguments ?? []), expectedArguments) | |
| plan.equal( | |
| event.result, | |
| `{"level":30,"time":${t.pino.ts},"pid":${pid},"hostname":"${hostname}","msg":"testing"}\n` | |
| ) | |
| plan.equal(event.arguments === startEvent.arguments, true, 'same event object is supplied to both events') | |
| } | |
| }) | |
| test('asJson context is not lost', { skip }, async (t) => { | |
| const plan = tspl(t, { plan: 2 }) | |
| const { dest } = t.pino | |
| const logger = pino({}, dest) | |
| const asyncLocalStorage = new AsyncLocalStorage() | |
| const localStore = { foo: 'bar' } | |
| diagChan.subscribe(AS_JSON_START, startHandler) | |
| diagChan.subscribe(AS_JSON_END, endHandler) | |
| asyncLocalStorage.run(localStore, () => { | |
| logger.info('testing') | |
| }) | |
| await plan | |
| diagChan.unsubscribe(AS_JSON_START, startHandler) | |
| diagChan.unsubscribe(AS_JSON_END, endHandler) | |
| function startHandler () { | |
| const store = asyncLocalStorage.getStore() | |
| plan.equal(store === localStore, true) | |
| } | |
| function endHandler () { | |
| const store = asyncLocalStorage.getStore() | |
| plan.equal(store === localStore, true) | |
| } | |
| }) | |
Xet Storage Details
- Size:
- 2.96 kB
- Xet hash:
- 86ad2b4e8b40d7321b9bb3027aaea8e5dbd5716784f0cc638e5e4a73583157d7
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.