UNPKG

apitally

Version:

Simple API monitoring & analytics for REST APIs built with Express, Fastify, NestJS, AdonisJS, Hono, H3, Elysia, and Koa.

1 lines 264 kB
{"version":3,"sources":["../../node_modules/pino-std-serializers/lib/err-helpers.js","../../node_modules/pino-std-serializers/lib/err-proto.js","../../node_modules/pino-std-serializers/lib/err.js","../../node_modules/pino-std-serializers/lib/err-with-cause.js","../../node_modules/pino-std-serializers/lib/req.js","../../node_modules/pino-std-serializers/lib/res.js","../../node_modules/pino-std-serializers/index.js","../../node_modules/pino/lib/caller.js","../../node_modules/fast-redact/lib/validator.js","../../node_modules/fast-redact/lib/rx.js","../../node_modules/fast-redact/lib/parse.js","../../node_modules/fast-redact/lib/redactor.js","../../node_modules/fast-redact/lib/modifiers.js","../../node_modules/fast-redact/lib/restorer.js","../../node_modules/fast-redact/lib/state.js","../../node_modules/fast-redact/index.js","../../node_modules/pino/lib/symbols.js","../../node_modules/pino/lib/redaction.js","../../node_modules/pino/lib/time.js","../../node_modules/quick-format-unescaped/index.js","../../node_modules/atomic-sleep/index.js","../../node_modules/sonic-boom/index.js","../../node_modules/on-exit-leak-free/index.js","../../node_modules/thread-stream/package.json","../../node_modules/thread-stream/lib/wait.js","../../node_modules/thread-stream/lib/indexes.js","../../node_modules/thread-stream/index.js","../../node_modules/pino/lib/transport.js","../../node_modules/pino/lib/tools.js","../../node_modules/pino/lib/constants.js","../../node_modules/pino/lib/levels.js","../../node_modules/pino/lib/meta.js","../../node_modules/pino/lib/proto.js","../../node_modules/safe-stable-stringify/index.js","../../node_modules/pino/lib/multistream.js","../../node_modules/pino/pino.js","../../src/loggers/pino.ts","../../src/loggers/utils.ts"],"sourcesContent":["'use strict'\n\n// **************************************************************\n// * Code initially copied/adapted from \"pony-cause\" npm module *\n// * Please upstream improvements there                         *\n// **************************************************************\n\nconst isErrorLike = (err) => {\n  return err && typeof err.message === 'string'\n}\n\n/**\n * @param {Error|{ cause?: unknown|(()=>err)}} err\n * @returns {Error|Object|undefined}\n */\nconst getErrorCause = (err) => {\n  if (!err) return\n\n  /** @type {unknown} */\n  // @ts-ignore\n  const cause = err.cause\n\n  // VError / NError style causes\n  if (typeof cause === 'function') {\n    // @ts-ignore\n    const causeResult = err.cause()\n\n    return isErrorLike(causeResult)\n      ? causeResult\n      : undefined\n  } else {\n    return isErrorLike(cause)\n      ? cause\n      : undefined\n  }\n}\n\n/**\n * Internal method that keeps a track of which error we have already added, to avoid circular recursion\n *\n * @private\n * @param {Error} err\n * @param {Set<Error>} seen\n * @returns {string}\n */\nconst _stackWithCauses = (err, seen) => {\n  if (!isErrorLike(err)) return ''\n\n  const stack = err.stack || ''\n\n  // Ensure we don't go circular or crazily deep\n  if (seen.has(err)) {\n    return stack + '\\ncauses have become circular...'\n  }\n\n  const cause = getErrorCause(err)\n\n  if (cause) {\n    seen.add(err)\n    return (stack + '\\ncaused by: ' + _stackWithCauses(cause, seen))\n  } else {\n    return stack\n  }\n}\n\n/**\n * @param {Error} err\n * @returns {string}\n */\nconst stackWithCauses = (err) => _stackWithCauses(err, new Set())\n\n/**\n * Internal method that keeps a track of which error we have already added, to avoid circular recursion\n *\n * @private\n * @param {Error} err\n * @param {Set<Error>} seen\n * @param {boolean} [skip]\n * @returns {string}\n */\nconst _messageWithCauses = (err, seen, skip) => {\n  if (!isErrorLike(err)) return ''\n\n  const message = skip ? '' : (err.message || '')\n\n  // Ensure we don't go circular or crazily deep\n  if (seen.has(err)) {\n    return message + ': ...'\n  }\n\n  const cause = getErrorCause(err)\n\n  if (cause) {\n    seen.add(err)\n\n    // @ts-ignore\n    const skipIfVErrorStyleCause = typeof err.cause === 'function'\n\n    return (message +\n      (skipIfVErrorStyleCause ? '' : ': ') +\n      _messageWithCauses(cause, seen, skipIfVErrorStyleCause))\n  } else {\n    return message\n  }\n}\n\n/**\n * @param {Error} err\n * @returns {string}\n */\nconst messageWithCauses = (err) => _messageWithCauses(err, new Set())\n\nmodule.exports = {\n  isErrorLike,\n  getErrorCause,\n  stackWithCauses,\n  messageWithCauses\n}\n","'use strict'\n\nconst seen = Symbol('circular-ref-tag')\nconst rawSymbol = Symbol('pino-raw-err-ref')\n\nconst pinoErrProto = Object.create({}, {\n  type: {\n    enumerable: true,\n    writable: true,\n    value: undefined\n  },\n  message: {\n    enumerable: true,\n    writable: true,\n    value: undefined\n  },\n  stack: {\n    enumerable: true,\n    writable: true,\n    value: undefined\n  },\n  aggregateErrors: {\n    enumerable: true,\n    writable: true,\n    value: undefined\n  },\n  raw: {\n    enumerable: false,\n    get: function () {\n      return this[rawSymbol]\n    },\n    set: function (val) {\n      this[rawSymbol] = val\n    }\n  }\n})\nObject.defineProperty(pinoErrProto, rawSymbol, {\n  writable: true,\n  value: {}\n})\n\nmodule.exports = {\n  pinoErrProto,\n  pinoErrorSymbols: {\n    seen,\n    rawSymbol\n  }\n}\n","'use strict'\n\nmodule.exports = errSerializer\n\nconst { messageWithCauses, stackWithCauses, isErrorLike } = require('./err-helpers')\nconst { pinoErrProto, pinoErrorSymbols } = require('./err-proto')\nconst { seen } = pinoErrorSymbols\n\nconst { toString } = Object.prototype\n\nfunction errSerializer (err) {\n  if (!isErrorLike(err)) {\n    return err\n  }\n\n  err[seen] = undefined // tag to prevent re-looking at this\n  const _err = Object.create(pinoErrProto)\n  _err.type = toString.call(err.constructor) === '[object Function]'\n    ? err.constructor.name\n    : err.name\n  _err.message = messageWithCauses(err)\n  _err.stack = stackWithCauses(err)\n\n  if (Array.isArray(err.errors)) {\n    _err.aggregateErrors = err.errors.map(err => errSerializer(err))\n  }\n\n  for (const key in err) {\n    if (_err[key] === undefined) {\n      const val = err[key]\n      if (isErrorLike(val)) {\n        // We append cause messages and stacks to _err, therefore skipping causes here\n        if (key !== 'cause' && !Object.prototype.hasOwnProperty.call(val, seen)) {\n          _err[key] = errSerializer(val)\n        }\n      } else {\n        _err[key] = val\n      }\n    }\n  }\n\n  delete err[seen] // clean up tag in case err is serialized again later\n  _err.raw = err\n  return _err\n}\n","'use strict'\n\nmodule.exports = errWithCauseSerializer\n\nconst { isErrorLike } = require('./err-helpers')\nconst { pinoErrProto, pinoErrorSymbols } = require('./err-proto')\nconst { seen } = pinoErrorSymbols\n\nconst { toString } = Object.prototype\n\nfunction errWithCauseSerializer (err) {\n  if (!isErrorLike(err)) {\n    return err\n  }\n\n  err[seen] = undefined // tag to prevent re-looking at this\n  const _err = Object.create(pinoErrProto)\n  _err.type = toString.call(err.constructor) === '[object Function]'\n    ? err.constructor.name\n    : err.name\n  _err.message = err.message\n  _err.stack = err.stack\n\n  if (Array.isArray(err.errors)) {\n    _err.aggregateErrors = err.errors.map(err => errWithCauseSerializer(err))\n  }\n\n  if (isErrorLike(err.cause) && !Object.prototype.hasOwnProperty.call(err.cause, seen)) {\n    _err.cause = errWithCauseSerializer(err.cause)\n  }\n\n  for (const key in err) {\n    if (_err[key] === undefined) {\n      const val = err[key]\n      if (isErrorLike(val)) {\n        if (!Object.prototype.hasOwnProperty.call(val, seen)) {\n          _err[key] = errWithCauseSerializer(val)\n        }\n      } else {\n        _err[key] = val\n      }\n    }\n  }\n\n  delete err[seen] // clean up tag in case err is serialized again later\n  _err.raw = err\n  return _err\n}\n","'use strict'\n\nmodule.exports = {\n  mapHttpRequest,\n  reqSerializer\n}\n\nconst rawSymbol = Symbol('pino-raw-req-ref')\nconst pinoReqProto = Object.create({}, {\n  id: {\n    enumerable: true,\n    writable: true,\n    value: ''\n  },\n  method: {\n    enumerable: true,\n    writable: true,\n    value: ''\n  },\n  url: {\n    enumerable: true,\n    writable: true,\n    value: ''\n  },\n  query: {\n    enumerable: true,\n    writable: true,\n    value: ''\n  },\n  params: {\n    enumerable: true,\n    writable: true,\n    value: ''\n  },\n  headers: {\n    enumerable: true,\n    writable: true,\n    value: {}\n  },\n  remoteAddress: {\n    enumerable: true,\n    writable: true,\n    value: ''\n  },\n  remotePort: {\n    enumerable: true,\n    writable: true,\n    value: ''\n  },\n  raw: {\n    enumerable: false,\n    get: function () {\n      return this[rawSymbol]\n    },\n    set: function (val) {\n      this[rawSymbol] = val\n    }\n  }\n})\nObject.defineProperty(pinoReqProto, rawSymbol, {\n  writable: true,\n  value: {}\n})\n\nfunction reqSerializer (req) {\n  // req.info is for hapi compat.\n  const connection = req.info || req.socket\n  const _req = Object.create(pinoReqProto)\n  _req.id = (typeof req.id === 'function' ? req.id() : (req.id || (req.info ? req.info.id : undefined)))\n  _req.method = req.method\n  // req.originalUrl is for expressjs compat.\n  if (req.originalUrl) {\n    _req.url = req.originalUrl\n  } else {\n    const path = req.path\n    // path for safe hapi compat.\n    _req.url = typeof path === 'string' ? path : (req.url ? req.url.path || req.url : undefined)\n  }\n\n  if (req.query) {\n    _req.query = req.query\n  }\n\n  if (req.params) {\n    _req.params = req.params\n  }\n\n  _req.headers = req.headers\n  _req.remoteAddress = connection && connection.remoteAddress\n  _req.remotePort = connection && connection.remotePort\n  // req.raw is  for hapi compat/equivalence\n  _req.raw = req.raw || req\n  return _req\n}\n\nfunction mapHttpRequest (req) {\n  return {\n    req: reqSerializer(req)\n  }\n}\n","'use strict'\n\nmodule.exports = {\n  mapHttpResponse,\n  resSerializer\n}\n\nconst rawSymbol = Symbol('pino-raw-res-ref')\nconst pinoResProto = Object.create({}, {\n  statusCode: {\n    enumerable: true,\n    writable: true,\n    value: 0\n  },\n  headers: {\n    enumerable: true,\n    writable: true,\n    value: ''\n  },\n  raw: {\n    enumerable: false,\n    get: function () {\n      return this[rawSymbol]\n    },\n    set: function (val) {\n      this[rawSymbol] = val\n    }\n  }\n})\nObject.defineProperty(pinoResProto, rawSymbol, {\n  writable: true,\n  value: {}\n})\n\nfunction resSerializer (res) {\n  const _res = Object.create(pinoResProto)\n  _res.statusCode = res.headersSent ? res.statusCode : null\n  _res.headers = res.getHeaders ? res.getHeaders() : res._headers\n  _res.raw = res\n  return _res\n}\n\nfunction mapHttpResponse (res) {\n  return {\n    res: resSerializer(res)\n  }\n}\n","'use strict'\n\nconst errSerializer = require('./lib/err')\nconst errWithCauseSerializer = require('./lib/err-with-cause')\nconst reqSerializers = require('./lib/req')\nconst resSerializers = require('./lib/res')\n\nmodule.exports = {\n  err: errSerializer,\n  errWithCause: errWithCauseSerializer,\n  mapHttpRequest: reqSerializers.mapHttpRequest,\n  mapHttpResponse: resSerializers.mapHttpResponse,\n  req: reqSerializers.reqSerializer,\n  res: resSerializers.resSerializer,\n\n  wrapErrorSerializer: function wrapErrorSerializer (customSerializer) {\n    if (customSerializer === errSerializer) return customSerializer\n    return function wrapErrSerializer (err) {\n      return customSerializer(errSerializer(err))\n    }\n  },\n\n  wrapRequestSerializer: function wrapRequestSerializer (customSerializer) {\n    if (customSerializer === reqSerializers.reqSerializer) return customSerializer\n    return function wrappedReqSerializer (req) {\n      return customSerializer(reqSerializers.reqSerializer(req))\n    }\n  },\n\n  wrapResponseSerializer: function wrapResponseSerializer (customSerializer) {\n    if (customSerializer === resSerializers.resSerializer) return customSerializer\n    return function wrappedResSerializer (res) {\n      return customSerializer(resSerializers.resSerializer(res))\n    }\n  }\n}\n","'use strict'\n\nfunction noOpPrepareStackTrace (_, stack) {\n  return stack\n}\n\nmodule.exports = function getCallers () {\n  const originalPrepare = Error.prepareStackTrace\n  Error.prepareStackTrace = noOpPrepareStackTrace\n  const stack = new Error().stack\n  Error.prepareStackTrace = originalPrepare\n\n  if (!Array.isArray(stack)) {\n    return undefined\n  }\n\n  const entries = stack.slice(2)\n\n  const fileNames = []\n\n  for (const entry of entries) {\n    if (!entry) {\n      continue\n    }\n\n    fileNames.push(entry.getFileName())\n  }\n\n  return fileNames\n}\n","'use strict'\n\nmodule.exports = validator\n\nfunction validator (opts = {}) {\n  const {\n    ERR_PATHS_MUST_BE_STRINGS = () => 'fast-redact - Paths must be (non-empty) strings',\n    ERR_INVALID_PATH = (s) => `fast-redact – Invalid path (${s})`\n  } = opts\n\n  return function validate ({ paths }) {\n    paths.forEach((s) => {\n      if (typeof s !== 'string') {\n        throw Error(ERR_PATHS_MUST_BE_STRINGS())\n      }\n      try {\n        if (/〇/.test(s)) throw Error()\n        const expr = (s[0] === '[' ? '' : '.') + s.replace(/^\\*/, '〇').replace(/\\.\\*/g, '.〇').replace(/\\[\\*\\]/g, '[〇]')\n        if (/\\n|\\r|;/.test(expr)) throw Error()\n        if (/\\/\\*/.test(expr)) throw Error()\n        /* eslint-disable-next-line */\n        Function(`\n            'use strict'\n            const o = new Proxy({}, { get: () => o, set: () => { throw Error() } });\n            const 〇 = null;\n            o${expr}\n            if ([o${expr}].length !== 1) throw Error()`)()\n      } catch (e) {\n        throw Error(ERR_INVALID_PATH(s))\n      }\n    })\n  }\n}\n","'use strict'\n\nmodule.exports = /[^.[\\]]+|\\[((?:.)*?)\\]/g\n\n/*\nRegular expression explanation:\n\nAlt 1: /[^.[\\]]+/ - Match one or more characters that are *not* a dot (.)\n                    opening square bracket ([) or closing square bracket (])\n\nAlt 2: /\\[((?:.)*?)\\]/ - If the char IS dot or square bracket, then create a capture\n                         group (which will be capture group $1) that matches anything\n                         within square brackets. Expansion is lazy so it will\n                         stop matching as soon as the first closing bracket is met `]`\n                         (rather than continuing to match until the final closing bracket).\n*/\n","'use strict'\n\nconst rx = require('./rx')\n\nmodule.exports = parse\n\nfunction parse ({ paths }) {\n  const wildcards = []\n  var wcLen = 0\n  const secret = paths.reduce(function (o, strPath, ix) {\n    var path = strPath.match(rx).map((p) => p.replace(/'|\"|`/g, ''))\n    const leadingBracket = strPath[0] === '['\n    path = path.map((p) => {\n      if (p[0] === '[') return p.substr(1, p.length - 2)\n      else return p\n    })\n    const star = path.indexOf('*')\n    if (star > -1) {\n      const before = path.slice(0, star)\n      const beforeStr = before.join('.')\n      const after = path.slice(star + 1, path.length)\n      const nested = after.length > 0\n      wcLen++\n      wildcards.push({\n        before,\n        beforeStr,\n        after,\n        nested\n      })\n    } else {\n      o[strPath] = {\n        path: path,\n        val: undefined,\n        precensored: false,\n        circle: '',\n        escPath: JSON.stringify(strPath),\n        leadingBracket: leadingBracket\n      }\n    }\n    return o\n  }, {})\n\n  return { wildcards, wcLen, secret }\n}\n","'use strict'\n\nconst rx = require('./rx')\n\nmodule.exports = redactor\n\nfunction redactor ({ secret, serialize, wcLen, strict, isCensorFct, censorFctTakesPath }, state) {\n  /* eslint-disable-next-line */\n  const redact = Function('o', `\n    if (typeof o !== 'object' || o == null) {\n      ${strictImpl(strict, serialize)}\n    }\n    const { censor, secret } = this\n    const originalSecret = {}\n    const secretKeys = Object.keys(secret)\n    for (var i = 0; i < secretKeys.length; i++) {\n      originalSecret[secretKeys[i]] = secret[secretKeys[i]]\n    }\n\n    ${redactTmpl(secret, isCensorFct, censorFctTakesPath)}\n    this.compileRestore()\n    ${dynamicRedactTmpl(wcLen > 0, isCensorFct, censorFctTakesPath)}\n    this.secret = originalSecret\n    ${resultTmpl(serialize)}\n  `).bind(state)\n\n  redact.state = state\n\n  if (serialize === false) {\n    redact.restore = (o) => state.restore(o)\n  }\n\n  return redact\n}\n\nfunction redactTmpl (secret, isCensorFct, censorFctTakesPath) {\n  return Object.keys(secret).map((path) => {\n    const { escPath, leadingBracket, path: arrPath } = secret[path]\n    const skip = leadingBracket ? 1 : 0\n    const delim = leadingBracket ? '' : '.'\n    const hops = []\n    var match\n    while ((match = rx.exec(path)) !== null) {\n      const [ , ix ] = match\n      const { index, input } = match\n      if (index > skip) hops.push(input.substring(0, index - (ix ? 0 : 1)))\n    }\n    var existence = hops.map((p) => `o${delim}${p}`).join(' && ')\n    if (existence.length === 0) existence += `o${delim}${path} != null`\n    else existence += ` && o${delim}${path} != null`\n\n    const circularDetection = `\n      switch (true) {\n        ${hops.reverse().map((p) => `\n          case o${delim}${p} === censor:\n            secret[${escPath}].circle = ${JSON.stringify(p)}\n            break\n        `).join('\\n')}\n      }\n    `\n\n    const censorArgs = censorFctTakesPath\n      ? `val, ${JSON.stringify(arrPath)}`\n      : `val`\n\n    return `\n      if (${existence}) {\n        const val = o${delim}${path}\n        if (val === censor) {\n          secret[${escPath}].precensored = true\n        } else {\n          secret[${escPath}].val = val\n          o${delim}${path} = ${isCensorFct ? `censor(${censorArgs})` : 'censor'}\n          ${circularDetection}\n        }\n      }\n    `\n  }).join('\\n')\n}\n\nfunction dynamicRedactTmpl (hasWildcards, isCensorFct, censorFctTakesPath) {\n  return hasWildcards === true ? `\n    {\n      const { wildcards, wcLen, groupRedact, nestedRedact } = this\n      for (var i = 0; i < wcLen; i++) {\n        const { before, beforeStr, after, nested } = wildcards[i]\n        if (nested === true) {\n          secret[beforeStr] = secret[beforeStr] || []\n          nestedRedact(secret[beforeStr], o, before, after, censor, ${isCensorFct}, ${censorFctTakesPath})\n        } else secret[beforeStr] = groupRedact(o, before, censor, ${isCensorFct}, ${censorFctTakesPath})\n      }\n    }\n  ` : ''\n}\n\nfunction resultTmpl (serialize) {\n  return serialize === false ? `return o` : `\n    var s = this.serialize(o)\n    this.restore(o)\n    return s\n  `\n}\n\nfunction strictImpl (strict, serialize) {\n  return strict === true\n    ? `throw Error('fast-redact: primitives cannot be redacted')`\n    : serialize === false ? `return o` : `return this.serialize(o)`\n}\n","'use strict'\n\nmodule.exports = {\n  groupRedact,\n  groupRestore,\n  nestedRedact,\n  nestedRestore\n}\n\nfunction groupRestore ({ keys, values, target }) {\n  if (target == null || typeof target === 'string') return\n  const length = keys.length\n  for (var i = 0; i < length; i++) {\n    const k = keys[i]\n    target[k] = values[i]\n  }\n}\n\nfunction groupRedact (o, path, censor, isCensorFct, censorFctTakesPath) {\n  const target = get(o, path)\n  if (target == null || typeof target === 'string') return { keys: null, values: null, target, flat: true }\n  const keys = Object.keys(target)\n  const keysLength = keys.length\n  const pathLength = path.length\n  const pathWithKey = censorFctTakesPath ? [...path] : undefined\n  const values = new Array(keysLength)\n\n  for (var i = 0; i < keysLength; i++) {\n    const key = keys[i]\n    values[i] = target[key]\n\n    if (censorFctTakesPath) {\n      pathWithKey[pathLength] = key\n      target[key] = censor(target[key], pathWithKey)\n    } else if (isCensorFct) {\n      target[key] = censor(target[key])\n    } else {\n      target[key] = censor\n    }\n  }\n  return { keys, values, target, flat: true }\n}\n\n/**\n * @param {RestoreInstruction[]} instructions a set of instructions for restoring values to objects\n */\nfunction nestedRestore (instructions) {\n  for (let i = 0; i < instructions.length; i++) {\n    const { target, path, value } = instructions[i]\n    let current = target\n    for (let i = path.length - 1; i > 0; i--) {\n      current = current[path[i]]\n    }\n    current[path[0]] = value\n  }\n}\n\nfunction nestedRedact (store, o, path, ns, censor, isCensorFct, censorFctTakesPath) {\n  const target = get(o, path)\n  if (target == null) return\n  const keys = Object.keys(target)\n  const keysLength = keys.length\n  for (var i = 0; i < keysLength; i++) {\n    const key = keys[i]\n    specialSet(store, target, key, path, ns, censor, isCensorFct, censorFctTakesPath)\n  }\n  return store\n}\n\nfunction has (obj, prop) {\n  return obj !== undefined && obj !== null\n    ? ('hasOwn' in Object ? Object.hasOwn(obj, prop) : Object.prototype.hasOwnProperty.call(obj, prop))\n    : false\n}\n\nfunction specialSet (store, o, k, path, afterPath, censor, isCensorFct, censorFctTakesPath) {\n  const afterPathLen = afterPath.length\n  const lastPathIndex = afterPathLen - 1\n  const originalKey = k\n  var i = -1\n  var n\n  var nv\n  var ov\n  var oov = null\n  var wc = null\n  var kIsWc\n  var wcov\n  var consecutive = false\n  var level = 0\n  // need to track depth of the `redactPath` tree\n  var depth = 0\n  var redactPathCurrent = tree()\n  ov = n = o[k]\n  if (typeof n !== 'object') return\n  while (n != null && ++i < afterPathLen) {\n    depth += 1\n    k = afterPath[i]\n    oov = ov\n    if (k !== '*' && !wc && !(typeof n === 'object' && k in n)) {\n      break\n    }\n    if (k === '*') {\n      if (wc === '*') {\n        consecutive = true\n      }\n      wc = k\n      if (i !== lastPathIndex) {\n        continue\n      }\n    }\n    if (wc) {\n      const wcKeys = Object.keys(n)\n      for (var j = 0; j < wcKeys.length; j++) {\n        const wck = wcKeys[j]\n        wcov = n[wck]\n        kIsWc = k === '*'\n        if (consecutive) {\n          redactPathCurrent = node(redactPathCurrent, wck, depth)\n          level = i\n          ov = iterateNthLevel(wcov, level - 1, k, path, afterPath, censor, isCensorFct, censorFctTakesPath, originalKey, n, nv, ov, kIsWc, wck, i, lastPathIndex, redactPathCurrent, store, o[originalKey], depth + 1)\n        } else {\n          if (kIsWc || (typeof wcov === 'object' && wcov !== null && k in wcov)) {\n            if (kIsWc) {\n              ov = wcov\n            } else {\n              ov = wcov[k]\n            }\n            nv = (i !== lastPathIndex)\n              ? ov\n              : (isCensorFct\n                ? (censorFctTakesPath ? censor(ov, [...path, originalKey, ...afterPath]) : censor(ov))\n                : censor)\n            if (kIsWc) {\n              const rv = restoreInstr(node(redactPathCurrent, wck, depth), ov, o[originalKey])\n              store.push(rv)\n              n[wck] = nv\n            } else {\n              if (wcov[k] === nv) {\n                // pass\n              } else if ((nv === undefined && censor !== undefined) || (has(wcov, k) && nv === ov)) {\n                redactPathCurrent = node(redactPathCurrent, wck, depth)\n              } else {\n                redactPathCurrent = node(redactPathCurrent, wck, depth)\n                const rv = restoreInstr(node(redactPathCurrent, k, depth + 1), ov, o[originalKey])\n                store.push(rv)\n                wcov[k] = nv\n              }\n            }\n          }\n        }\n      }\n      wc = null\n    } else {\n      ov = n[k]\n      redactPathCurrent = node(redactPathCurrent, k, depth)\n      nv = (i !== lastPathIndex)\n        ? ov\n        : (isCensorFct\n          ? (censorFctTakesPath ? censor(ov, [...path, originalKey, ...afterPath]) : censor(ov))\n          : censor)\n      if ((has(n, k) && nv === ov) || (nv === undefined && censor !== undefined)) {\n        // pass\n      } else {\n        const rv = restoreInstr(redactPathCurrent, ov, o[originalKey])\n        store.push(rv)\n        n[k] = nv\n      }\n      n = n[k]\n    }\n    if (typeof n !== 'object') break\n    // prevent circular structure, see https://github.com/pinojs/pino/issues/1513\n    if (ov === oov || typeof ov === 'undefined') {\n      // pass\n    }\n  }\n}\n\nfunction get (o, p) {\n  var i = -1\n  var l = p.length\n  var n = o\n  while (n != null && ++i < l) {\n    n = n[p[i]]\n  }\n  return n\n}\n\nfunction iterateNthLevel (wcov, level, k, path, afterPath, censor, isCensorFct, censorFctTakesPath, originalKey, n, nv, ov, kIsWc, wck, i, lastPathIndex, redactPathCurrent, store, parent, depth) {\n  if (level === 0) {\n    if (kIsWc || (typeof wcov === 'object' && wcov !== null && k in wcov)) {\n      if (kIsWc) {\n        ov = wcov\n      } else {\n        ov = wcov[k]\n      }\n      nv = (i !== lastPathIndex)\n        ? ov\n        : (isCensorFct\n          ? (censorFctTakesPath ? censor(ov, [...path, originalKey, ...afterPath]) : censor(ov))\n          : censor)\n      if (kIsWc) {\n        const rv = restoreInstr(redactPathCurrent, ov, parent)\n        store.push(rv)\n        n[wck] = nv\n      } else {\n        if (wcov[k] === nv) {\n          // pass\n        } else if ((nv === undefined && censor !== undefined) || (has(wcov, k) && nv === ov)) {\n          // pass\n        } else {\n          const rv = restoreInstr(node(redactPathCurrent, k, depth + 1), ov, parent)\n          store.push(rv)\n          wcov[k] = nv\n        }\n      }\n    }\n  }\n  for (const key in wcov) {\n    if (typeof wcov[key] === 'object') {\n      redactPathCurrent = node(redactPathCurrent, key, depth)\n      iterateNthLevel(wcov[key], level - 1, k, path, afterPath, censor, isCensorFct, censorFctTakesPath, originalKey, n, nv, ov, kIsWc, wck, i, lastPathIndex, redactPathCurrent, store, parent, depth + 1)\n    }\n  }\n}\n\n/**\n * @typedef {object} TreeNode\n * @prop {TreeNode} [parent] reference to the parent of this node in the tree, or `null` if there is no parent\n * @prop {string} key the key that this node represents (key here being part of the path being redacted\n * @prop {TreeNode[]} children the child nodes of this node\n * @prop {number} depth the depth of this node in the tree\n */\n\n/**\n * instantiate a new, empty tree\n * @returns {TreeNode}\n */\nfunction tree () {\n  return { parent: null, key: null, children: [], depth: 0 }\n}\n\n/**\n * creates a new node in the tree, attaching it as a child of the provided parent node\n * if the specified depth matches the parent depth, adds the new node as a _sibling_ of the parent instead\n  * @param {TreeNode} parent the parent node to add a new node to (if the parent depth matches the provided `depth` value, will instead add as a sibling of this\n  * @param {string} key the key that the new node represents (key here being part of the path being redacted)\n  * @param {number} depth the depth of the new node in the tree - used to determing whether to add the new node as a child or sibling of the provided `parent` node\n  * @returns {TreeNode} a reference to the newly created node in the tree\n */\nfunction node (parent, key, depth) {\n  if (parent.depth === depth) {\n    return node(parent.parent, key, depth)\n  }\n\n  var child = {\n    parent,\n    key,\n    depth,\n    children: []\n  }\n\n  parent.children.push(child)\n\n  return child\n}\n\n/**\n * @typedef {object} RestoreInstruction\n * @prop {string[]} path a reverse-order path that can be used to find the correct insertion point to restore a `value` for the given `parent` object\n * @prop {*} value the value to restore\n * @prop {object} target the object to restore the `value` in\n */\n\n/**\n * create a restore instruction for the given redactPath node\n * generates a path in reverse order by walking up the redactPath tree\n * @param {TreeNode} node a tree node that should be at the bottom of the redact path (i.e. have no children) - this will be used to walk up the redact path tree to construct the path needed to restore\n * @param {*} value the value to restore\n * @param {object} target a reference to the parent object to apply the restore instruction to\n * @returns {RestoreInstruction} an instruction used to restore a nested value for a specific object\n */\nfunction restoreInstr (node, value, target) {\n  let current = node\n  const path = []\n  do {\n    path.push(current.key)\n    current = current.parent\n  } while (current.parent != null)\n\n  return { path, value, target }\n}\n","'use strict'\n\nconst { groupRestore, nestedRestore } = require('./modifiers')\n\nmodule.exports = restorer\n\nfunction restorer () {\n  return function compileRestore () {\n    if (this.restore) {\n      this.restore.state.secret = this.secret\n      return\n    }\n    const { secret, wcLen } = this\n    const paths = Object.keys(secret)\n    const resetters = resetTmpl(secret, paths)\n    const hasWildcards = wcLen > 0\n    const state = hasWildcards ? { secret, groupRestore, nestedRestore } : { secret }\n    /* eslint-disable-next-line */\n    this.restore = Function(\n      'o',\n      restoreTmpl(resetters, paths, hasWildcards)\n    ).bind(state)\n    this.restore.state = state\n  }\n}\n\n/**\n * Mutates the original object to be censored by restoring its original values\n * prior to censoring.\n *\n * @param {object} secret Compiled object describing which target fields should\n * be censored and the field states.\n * @param {string[]} paths The list of paths to censor as provided at\n * initialization time.\n *\n * @returns {string} String of JavaScript to be used by `Function()`. The\n * string compiles to the function that does the work in the description.\n */\nfunction resetTmpl (secret, paths) {\n  return paths.map((path) => {\n    const { circle, escPath, leadingBracket } = secret[path]\n    const delim = leadingBracket ? '' : '.'\n    const reset = circle\n      ? `o.${circle} = secret[${escPath}].val`\n      : `o${delim}${path} = secret[${escPath}].val`\n    const clear = `secret[${escPath}].val = undefined`\n    return `\n      if (secret[${escPath}].val !== undefined) {\n        try { ${reset} } catch (e) {}\n        ${clear}\n      }\n    `\n  }).join('')\n}\n\n/**\n * Creates the body of the restore function\n *\n * Restoration of the redacted object happens\n * backwards, in reverse order of redactions,\n * so that repeated redactions on the same object\n * property can be eventually rolled back to the\n * original value.\n *\n * This way dynamic redactions are restored first,\n * starting from the last one working backwards and\n * followed by the static ones.\n *\n * @returns {string} the body of the restore function\n */\nfunction restoreTmpl (resetters, paths, hasWildcards) {\n  const dynamicReset = hasWildcards === true ? `\n    const keys = Object.keys(secret)\n    const len = keys.length\n    for (var i = len - 1; i >= ${paths.length}; i--) {\n      const k = keys[i]\n      const o = secret[k]\n      if (o) {\n        if (o.flat === true) this.groupRestore(o)\n        else this.nestedRestore(o)\n        secret[k] = null\n      }\n    }\n  ` : ''\n\n  return `\n    const secret = this.secret\n    ${dynamicReset}\n    ${resetters}\n    return o\n  `\n}\n","'use strict'\n\nmodule.exports = state\n\nfunction state (o) {\n  const {\n    secret,\n    censor,\n    compileRestore,\n    serialize,\n    groupRedact,\n    nestedRedact,\n    wildcards,\n    wcLen\n  } = o\n  const builder = [{ secret, censor, compileRestore }]\n  if (serialize !== false) builder.push({ serialize })\n  if (wcLen > 0) builder.push({ groupRedact, nestedRedact, wildcards, wcLen })\n  return Object.assign(...builder)\n}\n","'use strict'\n\nconst validator = require('./lib/validator')\nconst parse = require('./lib/parse')\nconst redactor = require('./lib/redactor')\nconst restorer = require('./lib/restorer')\nconst { groupRedact, nestedRedact } = require('./lib/modifiers')\nconst state = require('./lib/state')\nconst rx = require('./lib/rx')\nconst validate = validator()\nconst noop = (o) => o\nnoop.restore = noop\n\nconst DEFAULT_CENSOR = '[REDACTED]'\nfastRedact.rx = rx\nfastRedact.validator = validator\n\nmodule.exports = fastRedact\n\nfunction fastRedact (opts = {}) {\n  const paths = Array.from(new Set(opts.paths || []))\n  const serialize = 'serialize' in opts ? (\n    opts.serialize === false ? opts.serialize\n      : (typeof opts.serialize === 'function' ? opts.serialize : JSON.stringify)\n  ) : JSON.stringify\n  const remove = opts.remove\n  if (remove === true && serialize !== JSON.stringify) {\n    throw Error('fast-redact – remove option may only be set when serializer is JSON.stringify')\n  }\n  const censor = remove === true\n    ? undefined\n    : 'censor' in opts ? opts.censor : DEFAULT_CENSOR\n\n  const isCensorFct = typeof censor === 'function'\n  const censorFctTakesPath = isCensorFct && censor.length > 1\n\n  if (paths.length === 0) return serialize || noop\n\n  validate({ paths, serialize, censor })\n\n  const { wildcards, wcLen, secret } = parse({ paths, censor })\n\n  const compileRestore = restorer()\n  const strict = 'strict' in opts ? opts.strict : true\n\n  return redactor({ secret, wcLen, serialize, strict, isCensorFct, censorFctTakesPath }, state({\n    secret,\n    censor,\n    compileRestore,\n    serialize,\n    groupRedact,\n    nestedRedact,\n    wildcards,\n    wcLen\n  }))\n}\n","'use strict'\n\nconst setLevelSym = Symbol('pino.setLevel')\nconst getLevelSym = Symbol('pino.getLevel')\nconst levelValSym = Symbol('pino.levelVal')\nconst levelCompSym = Symbol('pino.levelComp')\nconst useLevelLabelsSym = Symbol('pino.useLevelLabels')\nconst useOnlyCustomLevelsSym = Symbol('pino.useOnlyCustomLevels')\nconst mixinSym = Symbol('pino.mixin')\n\nconst lsCacheSym = Symbol('pino.lsCache')\nconst chindingsSym = Symbol('pino.chindings')\n\nconst asJsonSym = Symbol('pino.asJson')\nconst writeSym = Symbol('pino.write')\nconst redactFmtSym = Symbol('pino.redactFmt')\n\nconst timeSym = Symbol('pino.time')\nconst timeSliceIndexSym = Symbol('pino.timeSliceIndex')\nconst streamSym = Symbol('pino.stream')\nconst stringifySym = Symbol('pino.stringify')\nconst stringifySafeSym = Symbol('pino.stringifySafe')\nconst stringifiersSym = Symbol('pino.stringifiers')\nconst endSym = Symbol('pino.end')\nconst formatOptsSym = Symbol('pino.formatOpts')\nconst messageKeySym = Symbol('pino.messageKey')\nconst errorKeySym = Symbol('pino.errorKey')\nconst nestedKeySym = Symbol('pino.nestedKey')\nconst nestedKeyStrSym = Symbol('pino.nestedKeyStr')\nconst mixinMergeStrategySym = Symbol('pino.mixinMergeStrategy')\nconst msgPrefixSym = Symbol('pino.msgPrefix')\n\nconst wildcardFirstSym = Symbol('pino.wildcardFirst')\n\n// public symbols, no need to use the same pino\n// version for these\nconst serializersSym = Symbol.for('pino.serializers')\nconst formattersSym = Symbol.for('pino.formatters')\nconst hooksSym = Symbol.for('pino.hooks')\nconst needsMetadataGsym = Symbol.for('pino.metadata')\n\nmodule.exports = {\n  setLevelSym,\n  getLevelSym,\n  levelValSym,\n  levelCompSym,\n  useLevelLabelsSym,\n  mixinSym,\n  lsCacheSym,\n  chindingsSym,\n  asJsonSym,\n  writeSym,\n  serializersSym,\n  redactFmtSym,\n  timeSym,\n  timeSliceIndexSym,\n  streamSym,\n  stringifySym,\n  stringifySafeSym,\n  stringifiersSym,\n  endSym,\n  formatOptsSym,\n  messageKeySym,\n  errorKeySym,\n  nestedKeySym,\n  wildcardFirstSym,\n  needsMetadataGsym,\n  useOnlyCustomLevelsSym,\n  formattersSym,\n  hooksSym,\n  nestedKeyStrSym,\n  mixinMergeStrategySym,\n  msgPrefixSym\n}\n","'use strict'\n\nconst fastRedact = require('fast-redact')\nconst { redactFmtSym, wildcardFirstSym } = require('./symbols')\nconst { rx, validator } = fastRedact\n\nconst validate = validator({\n  ERR_PATHS_MUST_BE_STRINGS: () => 'pino – redacted paths must be strings',\n  ERR_INVALID_PATH: (s) => `pino – redact paths array contains an invalid path (${s})`\n})\n\nconst CENSOR = '[Redacted]'\nconst strict = false // TODO should this be configurable?\n\nfunction redaction (opts, serialize) {\n  const { paths, censor } = handle(opts)\n\n  const shape = paths.reduce((o, str) => {\n    rx.lastIndex = 0\n    const first = rx.exec(str)\n    const next = rx.exec(str)\n\n    // ns is the top-level path segment, brackets + quoting removed.\n    let ns = first[1] !== undefined\n      ? first[1].replace(/^(?:\"|'|`)(.*)(?:\"|'|`)$/, '$1')\n      : first[0]\n\n    if (ns === '*') {\n      ns = wildcardFirstSym\n    }\n\n    // top level key:\n    if (next === null) {\n      o[ns] = null\n      return o\n    }\n\n    // path with at least two segments:\n    // if ns is already redacted at the top level, ignore lower level redactions\n    if (o[ns] === null) {\n      return o\n    }\n\n    const { index } = next\n    const nextPath = `${str.substr(index, str.length - 1)}`\n\n    o[ns] = o[ns] || []\n\n    // shape is a mix of paths beginning with literal values and wildcard\n    // paths [ \"a.b.c\", \"*.b.z\" ] should reduce to a shape of\n    // { \"a\": [ \"b.c\", \"b.z\" ], *: [ \"b.z\" ] }\n    // note: \"b.z\" is in both \"a\" and * arrays because \"a\" matches the wildcard.\n    // (* entry has wildcardFirstSym as key)\n    if (ns !== wildcardFirstSym && o[ns].length === 0) {\n      // first time ns's get all '*' redactions so far\n      o[ns].push(...(o[wildcardFirstSym] || []))\n    }\n\n    if (ns === wildcardFirstSym) {\n      // new * path gets added to all previously registered literal ns's.\n      Object.keys(o).forEach(function (k) {\n        if (o[k]) {\n          o[k].push(nextPath)\n        }\n      })\n    }\n\n    o[ns].push(nextPath)\n    return o\n  }, {})\n\n  // the redactor assigned to the format symbol key\n  // provides top level redaction for instances where\n  // an object is interpolated into the msg string\n  const result = {\n    [redactFmtSym]: fastRedact({ paths, censor, serialize, strict })\n  }\n\n  const topCensor = (...args) => {\n    return typeof censor === 'function' ? serialize(censor(...args)) : serialize(censor)\n  }\n\n  return [...Object.keys(shape), ...Object.getOwnPropertySymbols(shape)].reduce((o, k) => {\n    // top level key:\n    if (shape[k] === null) {\n      o[k] = (value) => topCensor(value, [k])\n    } else {\n      const wrappedCensor = typeof censor === 'function'\n        ? (value, path) => {\n            return censor(value, [k, ...path])\n          }\n        : censor\n      o[k] = fastRedact({\n        paths: shape[k],\n        censor: wrappedCensor,\n        serialize,\n        strict\n      })\n    }\n    return o\n  }, result)\n}\n\nfunction handle (opts) {\n  if (Array.isArray(opts)) {\n    opts = { paths: opts, censor: CENSOR }\n    validate(opts)\n    return opts\n  }\n  let { paths, censor = CENSOR, remove } = opts\n  if (Array.isArray(paths) === false) { throw Error('pino – redact must contain an array of strings') }\n  if (remove === true) censor = undefined\n  validate({ paths, censor })\n\n  return { paths, censor }\n}\n\nmodule.exports = redaction\n","'use strict'\n\nconst nullTime = () => ''\n\nconst epochTime = () => `,\"time\":${Date.now()}`\n\nconst unixTime = () => `,\"time\":${Math.round(Date.now() / 1000.0)}`\n\nconst isoTime = () => `,\"time\":\"${new Date(Date.now()).toISOString()}\"` // using Date.now() for testability\n\nmodule.exports = { nullTime, epochTime, unixTime, isoTime }\n","'use strict'\nfunction tryStringify (o) {\n  try { return JSON.stringify(o) } catch(e) { return '\"[Circular]\"' }\n}\n\nmodule.exports = format\n\nfunction format(f, args, opts) {\n  var ss = (opts && opts.stringify) || tryStringify\n  var offset = 1\n  if (typeof f === 'object' && f !== null) {\n    var len = args.length + offset\n    if (len === 1) return f\n    var objects = new Array(len)\n    objects[0] = ss(f)\n    for (var index = 1; index < len; index++) {\n      objects[index] = ss(args[index])\n    }\n    return objects.join(' ')\n  }\n  if (typeof f !== 'string') {\n    return f\n  }\n  var argLen = args.length\n  if (argLen === 0) return f\n  var str = ''\n  var a = 1 - offset\n  var lastPos = -1\n  var flen = (f && f.length) || 0\n  for (var i = 0; i < flen;) {\n    if (f.charCodeAt(i) === 37 && i + 1 < flen) {\n      lastPos = lastPos > -1 ? lastPos : 0\n      switch (f.charCodeAt(i + 1)) {\n        case 100: // 'd'\n        case 102: // 'f'\n          if (a >= argLen)\n            break\n          if (args[a] == null)  break\n          if (lastPos < i)\n            str += f.slice(lastPos, i)\n          str += Number(args[a])\n          lastPos = i + 2\n          i++\n          break\n        case 105: // 'i'\n          if (a >= argLen)\n            break\n          if (args[a] == null)  break\n          if (lastPos < i)\n            str += f.slice(lastPos, i)\n          str += Math.floor(Number(args[a]))\n          lastPos = i + 2\n          i++\n          break\n        case 79: // 'O'\n        case 111: // 'o'\n        case 106: // 'j'\n          if (a >= argLen)\n            break\n          if (args[a] === undefined) break\n          if (lastPos < i)\n            str += f.slice(lastPos, i)\n          var type = typeof args[a]\n          if (type === 'string') {\n            str += '\\'' + args[a] + '\\''\n            lastPos = i + 2\n            i++\n            break\n          }\n          if (type === 'function') {\n            str += args[a].name || '<anonymous>'\n            lastPos = i + 2\n            i++\n            break\n          }\n          str += ss(args[a])\n          lastPos = i + 2\n          i++\n          break\n        case 115: // 's'\n          if (a >= argLen)\n            break\n          if (lastPos < i)\n            str += f.slice(lastPos, i)\n          str += String(args[a])\n          lastPos = i + 2\n          i++\n          break\n        case 37: // '%'\n          if (lastPos < i)\n            str += f.slice(lastPos, i)\n          str += '%'\n          lastPos = i + 2\n          i++\n          a--\n          break\n      }\n      ++a\n    }\n    ++i\n  }\n  if (lastPos === -1)\n    return f\n  else if (lastPos < flen) {\n    str += f.slice(lastPos)\n  }\n\n  return str\n}\n","'use strict'\n\n/* global SharedArrayBuffer, Atomics */\n\nif (typeof SharedArrayBuffer !== 'undefined' && typeof Atomics !== 'undefined') {\n  const nil = new Int32Array(new SharedArrayBuffer(4))\n\n  function sleep (ms) {\n    // also filters out NaN, non-number types, including empty strings, but allows bigints\n    const valid = ms > 0 && ms < Infinity \n    if (valid === false) {\n      if (typeof ms !== 'number' && typeof ms !== 'bigint') {\n        throw TypeError('sleep: ms must be a number')\n      }\n      throw RangeError('sleep: ms must be a number that is greater than 0 but less than Infinity')\n    }\n\n    Atomics.wait(nil, 0, 0, Number(ms))\n  }\n  module.exports = sleep\n} else {\n\n  function sleep (ms) {\n    // also filters out NaN, non-number types, including empty strings, but allows bigints\n    const valid = ms > 0 && ms < Infinity \n    if (valid === false) {\n      if (typeof ms !== 'number' && typeof ms !== 'bigint') {\n        throw TypeError('sleep: ms must be a number')\n      }\n      throw RangeError('sleep: ms must be a number that is greater than 0 but less than Infinity')\n    }\n    const target = Date.now() + Number(ms)\n    while (target > Date.now()){}\n  }\n\n  module.exports = sleep\n\n}\n","'use strict'\n\nconst fs = require('fs')\nconst EventEmitter = require('events')\nconst inherits = require('util').inherits\nconst path = require('path')\nconst sleep = require('atomic-sleep')\nconst assert = require('assert')\n\nconst BUSY_WRITE_TIMEOUT = 100\nconst kEmptyBuffer = Buffer.allocUnsafe(0)\n\n// 16 KB. Don't write more than docker buffer size.\n// https://github.com/moby/moby/blob/513ec73831269947d38a644c278ce3cac36783b2/daemon/logger/copier.go#L13\nconst MAX_WRITE = 16 * 1024\n\nconst kContentModeBuffer = 'buffer'\nconst kContentModeUtf8 = 'utf8'\n\nconst [major, minor] = (process.versions.node || '0.0').split('.').map(Number)\nconst kCopyBuffer = major >= 22 && minor >= 7\n\nfunction openFile (file, sonic) {\n  sonic._opening = true\n  sonic._writing = true\n  sonic._asyncDrainScheduled = false\n\n  // NOTE: 'error' and 'ready' events emitted below only relevant when sonic.sync===false\n  // for sync mode, there is no way to add a listener that will receive these\n\n  function fileOpened (err, fd) {\n    if (err) {\n      sonic._reopening = false\n      sonic._writing = false\n      sonic._opening = false\n\n      if (sonic.sync) {\n        process.nextTick(() => {\n          if (sonic.listenerCount('error') > 0) {\n            sonic.emit('error', err)\n          }\n        })\n      } else {\n        sonic.emit('error', err)\n      }\n      return\n    }\n\n    const reopening = sonic._reopening\n\n    sonic.fd = fd\n    sonic.file = file\n    sonic._reopening = false\n    sonic._opening = false\n    sonic._writing = false\n\n    if (sonic.sync) {\n      process.nextTick(() => sonic.emit('ready'))\n    } else {\n      sonic.emit('ready')\n    }\n\n    if (sonic.destroyed) {\n      return\n    }\n\n    // start\n    if ((!sonic._writing && sonic._len > sonic.minLength) || sonic._flushPending) {\n      sonic._actualWrite()\n    } else if (reopening) {\n      process.nextTick(() => sonic.emit('drain'))\n    }\n  }\n\n  const flags = sonic.append ? 'a' : 'w'\n  const mode = sonic.mode\n\n  if (sonic.sync) {\n    try {\n      if (sonic.mkdir) fs.mkdirSync(path.dirname(file), { recursive: true })\n      const fd = fs.openSync(file, flags, mode)\n      fileOpened(null, fd)\n    } catch (err) {\n      fileOpened(err)\n      throw err\n    }\n  } else if (sonic.mkdir) {\n    fs.mkdir(path.dirname(file), { recursive: true }, (err) => {\n      if (err) return fileOpened(err)\n      fs.open(file, flags, mode, fileOpened)\n    })\n  } else {\n    fs.open(file, flags, mode, fileOpened)\n  }\n}\n\nfunction SonicBoom (opts) {\n  if (!(this instanceof SonicBoom)) {\n    return new SonicBoom(opts)\n  }\n\n  let { fd, dest, minLength, maxLength, maxWrite, periodicFlush, sync, append = true, mkdir, retryEAGAIN, fsync, contentMode, mode } = opts || {}\n\n  fd = fd || dest\n\n  this._len = 0\n  this.fd = -1\n  this._bufs = []\n  this._lens = []\n  this._writing = false\n  this._ending = false\n  this._reopening = false\n  this._asyncDrainScheduled = false\n  this._flushPending = false\n  this._hwm = Math.max(minLength || 0, 16387)\n  this.file = null\n  this.destroyed = false\n  this.minLength = minLength || 0\n  this.maxLength = maxLength || 0\n  this.maxWrite = maxWrite || MAX_WRITE\n  this._periodicFlush = periodicFlush || 0\n  this._periodicFlushTimer = undefined\n  this.sync = sync || false\n  this.writable = true\n  this._fsync = fsync || false\n  this.append = append || false\n  this.mode = mode\n  this.retryEAGAIN = retryEAGAIN || (() => true)\n  this.mkdir = mkdir || false\n\n  let fsWriteSync\n  let fsWrite\n  if (contentMode === kContentModeBuffer) {\n    this._writingBuf = kEmptyBuffer\n    this.write = writeBuffer\n    this.flush = flushBuffer\n    this.flushSync = flushBufferSync\n    this._actualWrite = actualWriteBuffer\n    fsWriteSync = () => fs.writeSync(this.fd, this._writingBuf)\n    fsWrite = () => fs.write(this.fd, this._writingBuf, this.release)\n  } else if (contentMode === undefined || contentMode === kContentModeUtf8) {\n    this._writingBuf = ''\n    this.write = write\n    this.flush = flush\n    this.flushSync = flushSync\n    this._actualWrite = actualWrite\n    fsWriteSync = () => fs.writeSync(this.fd, this._writingBuf, 'utf8')\n    fsWrite = () => fs.write(this.fd, this._writingBuf, 'utf8', this.release)\n  } else {\n    throw new Error(`SonicBoom supports \"${kContentModeUtf8}\" and \"${kContentModeBuffer}\", but passed ${contentMode}`)\n  }\n\n  if (typeof fd === 'number') {\n    this.fd = fd\n    process.nextTick(() => this.emit('ready'))\n  } else if (typeof fd === 'string') {\n    openFile(fd, this)\n  } else {\n    throw new Error('SonicBoom supports only file descriptors and files')\n  }\n  if (this.minLength >= this.maxWrite) {\n    throw new Error(`minLength should be smaller than maxWrite (${this.maxWrite})`)\n  }\n\n  this.release = (err, n) => {\n    if (err) {\n      if ((err.code === 'EAGAIN' || err.code === 'EBUSY') && this.retryEAGAIN(err, this._writingBuf.length, this._len - this._writingBuf.length)) {\n        if (this.sync) {\n          // This error code should not happen in sync mode, because it is\n          // not using the underlining operating system asynchronous functions.\n          // However it happens, and so we handle it.\n          // Ref: https://github.com/pinojs/pino/issues/783\n          try {\n            sleep(BUSY_WRITE_TIMEOUT)\n            this.release(undefined, 0)\n          } catch (err) {\n            this.release(err)\n          }\n        } else {\n          // Let's give the destination some time to process the chunk.\n          setTimeout(fsWrite, BUSY_WRITE_TIMEOUT)\n        }\n      } else {\n        this._writing = false\n\n        this.emit('error', err)\n      }\n      return\n    }\n\n    this.emit('write', n)\n    const releasedBufObj = releaseWritingBuf(this._writingBuf, this._len, n)\n    this._len = releasedBufObj.len\n    this._writingBuf = releasedBufObj.writingBuf\n\n    if (this._writingBuf.length) {\n      if (!this.sync) {\n        fsWrite()\n        return\n      }\n\n      try {\n        do {\n          const n = fsWriteSync()\n          const releasedBufObj = releaseWritingBuf(this._writingBuf, this._len, n)\n          this._len = releasedBufObj.len\n          this._writingBuf = releasedBufObj.writingBuf\n        } while (this._writingBuf.length)\n      } catch (err) {\n        this.release(err)\n        return\n      }\n    }\n\n    if (this._fsync) {\n      fs.fsyncSync(this.fd)\n    }\n\n    const len = this._len\n    if (this._reopening) {\n      this._writing = false\n      this._reopening = false\n      this.reopen()\n    } else if (len > this.minLength) {\n      this._actualWrite()\n    } else if (this._ending) {\n      if (len > 0) {\n        this._actualWrite()\n      } else {\n        this._writing = false\n        actualClose(this)\n      }\n    } else {\n      this._writing = false\n      if (this.sync) {\n        if (!this._asyncDrainScheduled) {\n          this._asyncDrainScheduled = true\n          process.nextTick(emitDrain, this)\n        }\n      } else {\n        this.emit('drain')\n      }\n    }\n  }\n\n  this.on('newListener', function (name) {\n    if (name === 'drain') {\n      this._asyncDrainScheduled = false\n    }\n  })\n\n  if (this._periodicFlush !== 0) {\n    this._periodicFlushTimer = setInterval(() => this.flush(null), this._periodicFlush)\n    this._periodicFlushTimer.unref()\n  }\n}\n\n/**\n * Release the writingBuf after fs.write n bytes data\n * @param {string | Buffer} writingBuf - currently writing buffer, usually be instance._writingBuf.\n * @param {number} len - currently buffer length, usually be instance._len.\n * @param {number} n - number of bytes fs already written\n * @returns {{writingBuf: string | Buffer, len: number}} released writingBuf and length\n */\nfunction releaseWritingBuf (writingBuf, len, n) {\n  // if Buffer.byteLength is equal to n, that means writingBuf contains no multi-byte character\n  if (typeof writingBuf === 'string' && Buffer.byteLength(writingBuf) !== n) {\n    // Since the fs.write callback parameter `n` means how many bytes the passed of string\n    // We calculate the original string length for avoiding the multi-byte character issue\n    n = Buffer.from(writingBuf).subarray(0, n).toString().length\n  }\n  len = Math.max(len - n, 0)\n  writingBuf = writingBuf.slice(n)\n  return { writingBuf, len }\n}\n\nfunction emitDrain (sonic) {\n  const hasListeners = sonic.listenerCount('drain') > 0\n  if (!hasListeners) return\n  sonic._asyncDrainScheduled = false\n  sonic.emit('drain')\n}\n\ninherits(SonicBoom, EventEmitter)\n\nfunction mergeBuf (bufs, len) {\n  if (bufs.length === 0) {\n    return kEmptyBuffer\n  }\n\n  if (bufs.length === 1) {\n    return bufs[0]\n  }\n\n  return Buffer.concat(bufs, len)\n}\n\nfunction write (data) {\n  if (this.destroyed) {\n    throw new Error('SonicBoom destroyed')\n  }\n\n  const len = this._len + data.length\n  const bufs = this._bufs\n\n  if (this.maxLength && len > this.maxLength) {\n    this.emit('drop', data)\n    return this._len < this._hwm\n  }\n\n  if (\n    bufs.length === 0 ||\n    bufs[bufs.length - 1].length + data.length > this.maxWrite\n  ) {\n    bufs.push('' + data)\n  } else {\n    bufs[bufs.length - 1] += data\n  }\n\n  this._len = len\n\n  if (!this._writing && this._len >= this.minLength) {\n    this._actualWrite()\n  }\n\n  return this._len < this._hwm\n}\n\nfunction writeBuffer (data) {\n  if (this.destroyed) {\n    throw new Error('SonicBoom destroyed')\n  }\n\n  const len = this._len + data.length\n  const bufs = this._bufs\n  const lens = this._lens\n\n  if (this.maxLength && len > this.maxLength) {\n    this.emit('drop', data)\n    return this._len < this._hwm\n  }\n\n  if (\n    bufs.length === 0 ||\n    lens[lens.length - 1] + data.length > this.maxWrite\n  ) {\n    bufs.push([data])\n    lens.push(data.length)\n  } else {\n    bufs[bufs.length - 1].push(data)\n    lens[lens.length - 1] += data.length\n  }\n\n  this._len = len\n\n  if (!this._writing && this._len >= this.minLength) {\n    this._actualWrite()\n  }\n\n  return this._len < this._hwm\n}\n\nfunction callFlushCallbackOnDrain (cb) {\n  this._flushPending = true\n  const onDrain = () => {\n    // only if _fsync is false to avoid double fsync\n    if (!this._fsync) {\n      try {\n        fs.fsync(this.fd, (err) => {\n          this._flushPending = false\n          cb(err)\n        })\n      } catch (err) {\n        cb(err)\n      }\n    } else {\n      this._flushPending = false\n      cb()\n    }\n    this.off('error', onError)\n  }\n  const onError = (err) => {\n    this._flushPending = false\n    cb(err)\n    this.off('drain', onDrain)\n  }\n\n  this.once('drain', onDrain)\n  this.once('error', onError)\n}\n\nfunction flush (cb) {\n  if (cb != null && typeof cb !== 'function') {\n    throw new Error('flush cb must be a function')\n  }\n\n  if (this.destroyed) {\n    const error = new Error('SonicBoom destroyed')\n    if (cb) {\n      cb(error)\n      return\n    }\n\n    throw error\n  }\n\n  if (this.minLength <= 0) {\n    cb?.()\n    return\n  }\n\n  if (cb) {\n    callFlushCallbackOnDrain.call(this, cb)\n  }\n\n  if (this._writing) {\n    return\n  }\n\n  if (this._bufs.length === 0) {\n    this._bufs.push('')\n  }\n\n  this._actualWrite()\n}\n\nfunction flushBuffer (cb) {\n  if (cb != null && typeof cb !== 'function') {\n    throw new Error('flush cb must be a function')\n  }\n\n  if (this.destroyed) {\n    const error = new Error('SonicBoom destroyed')\n    if (cb) {\n      cb(error)\n      return\n    }\n\n    throw error\n  }\n\n  if (this.minLength <= 0) {\n    cb?.()\n    return\n  }\n\n  if (cb) {\n    callFlushCallbackOnDrain.call(this, cb)\n  }\n\n  if (this._writing) {\n    return\n  }\n\n  if (this._bufs.length === 0) {\n    this._bufs.push([])\n    this._lens.push(0)\n  }\n\n  this._actualWrite()\n}\n\nSonicBoom.prototype.reopen = function (file) {\n  if (this.destroyed) {\n    throw new Error('SonicBoom destroyed')\n  }\n\n  if (this._opening) {\n    this.once('ready', () => {\n      this.reopen(file)\n    })\n    return\n  }\n\n  if (this._ending) {\n    return\n  }\n\n  if (!this.file) {\n    throw new Error('Unable to reopen a file descriptor, you must pass a file to SonicBoom')\n  }\n\n  if (file) {\n    this.file = file\n  }\n  this._reopening = true\n\n  if (this._writing) {\n    return\n  }\n\n  const fd = this.fd\n  this.once('ready', () => {\n    if (fd !== this.fd) {\n      fs.close(fd, (err) => {\n        if (err) {\n          return this.emit('error', err)\n        }\n      })\n    }\n  })\n\n  openFile(this.file, this)\n}\n\nSonicBoom.prototype.end = function () {\n  if (this.destroyed) {\n    throw new Error('SonicBoom destroyed')\n  }\n\n  if (this._opening) {\n    this.once('ready', () => {\n      this.end()\n    })\n    return\n  }\n\n  if (this._ending) {\n    return\n  }\n\n  this._ending = true\n\n  if (this._writing) {\n    return\n  }\n\n  if (this._len > 0 && this.fd >= 0) {\n    this._actualWrite()\n  } else {\n    actualClose(this)\n  }\n}\n\nfunction flushSync () {\n  if (this.destroyed) {\n    throw new Error('SonicBoom destroyed')\n  }\n\n  if (this.fd < 0) {\n    throw new Error('sonic boom is not ready yet')\n  }\n\n  if (!this._writing && this._writingBuf.length > 0) {\n    this._bufs.unshift(this._writingBuf)\n    this._writingBuf = ''\n  }\n\n  let buf = ''\n  while (this._bufs.length || buf) {\n    if (buf.length <= 0) {\n      buf = this._bufs[0]\n    }\n    try {\n      const n = fs.writeSync(this.fd, buf, 'utf8')\n      const releasedBufObj = releaseWritingBuf(buf, this._len, n)\n      buf = releasedBufObj.writingBuf\n      this._len = releasedBufObj.len\n      if (buf.length <= 0) {\n        this._bufs.shift()\n      }\n    } catch (err) {\n      const shouldRetry = err.code === 'EAGAIN' || err.code === 'EBUSY'\n      if (shouldRetry && !this.retryEAGAIN(err, buf.length, this._len - buf.length)) {\n        throw err\n      }\n\n      sleep(BUSY_WRITE_TIMEOUT)\n    }\n  }\n\n  try {\n    fs.fsyncSync(this.fd)\n  } catch {\n    // Skip the error. The fd might not support fsync.\n  }\n}\n\nfunction flushBufferSync () {\n  if (this.destroyed) {\n    throw new Error('SonicBoom destroyed')\n  }\n\n  if (this.fd < 0) {\n    throw new Error('sonic boom is not ready yet')\n  }\n\n  if (!this._writing && this._writingBuf.length > 0) {\n    this._bufs.unshift([this._writingBuf])\n    this._writingBuf = kEmptyBuffer\n  }\n\n  let buf = kEmptyBuffer\n  while (this._bufs.length || buf.length) {\n    if (buf.length <= 0) {\n      buf = mergeBuf(this._bufs[0], this._lens[0])\n    }\n    try {\n      const n = fs.writeSync(this.fd, buf)\n      buf = buf.subarray(n)\n      this._len = Math.max(this._len - n, 0)\n      if (buf.length <= 0) {\n        this._bufs.shift()\n        this._lens.shift()\n      }\n    } catch (err) {\n      const shouldRetry = err.code === 'EAGAIN' || err.code === 'EBUSY'\n      if (shouldRetry && !this.retryEAGAIN(err, buf.length, this._len - buf.length)) {\n        throw err\n      }\n\n      sleep(BUSY_WRITE_TIMEOUT)\n    }\n  }\n}\n\nSonicBoom.prototype.destroy = function () {\n  if (this.destroyed) {\n    return\n  }\n  actualClose(this)\n}\n\nfunction actualWrite () {\n  const release = this.release\n  this._writing = true\n  this._writingBuf = this._writingBuf || this._bufs.shift() || ''\n\n  if (this.sync) {\n    try {\n      const written = fs.writeSync(this.fd, this._writingBuf, 'utf8')\n      release(null, written)\n    } catch (err) {\n      release(err)\n    }\n  } else {\n    fs.write(this.fd, this._writingBuf, 'utf8', release)\n  }\n}\n\nfunction actualWriteBuffer () {\n  const release = this.release\n  this._writing = true\n  this._writingBuf = this._writingBuf.length ? this._writingBuf : mergeBuf(this._bufs.shift(), this._lens.shift())\n\n  if (this.sync) {\n    try {\n      const written = fs.writeSync(this.fd, this._writingBuf)\n      release(null, written)\n    } catch (err) {\n      release(err)\n    }\n  } else {\n    // fs.write will need to copy string to buffer anyway so\n    // we do it here to avoid the overhead of calculating the buffer size\n    // in releaseWritingBuf.\n    if (kCopyBuffer) {\n      this._writingBuf = Buffer.from(this._writingBuf)\n    }\n    fs.write(this.fd, this._writingBuf, release)\n  }\n}\n\nfunction actualClose (sonic) {\n  if (sonic.fd === -1) {\n    sonic.once('ready', actualClose.bind(null, sonic))\n    return\n  }\n\n  if (sonic._periodicFlushTimer !== undefined) {\n    clearInterval(sonic._periodicFlushTimer)\n  }\n\n  sonic.destroyed = true\n  sonic._bufs = []\n  sonic._lens = []\n\n  assert(typeof sonic.fd === 'number', `sonic.fd must be a number, got ${typeof sonic.fd}`)\n  try {\n    fs.fsync(sonic.fd, closeWrapped)\n  } catch {\n  }\n\n  function closeWrapped () {\n    // We skip errors in fsync\n\n    if (sonic.fd !== 1 && sonic.fd !== 2) {\n      fs.close(sonic.fd, done)\n    } else {\n      done()\n    }\n  }\n\n  function done (err) {\n    if (err) {\n      sonic.emit('error', err)\n      return\n    }\n\n    if (sonic._ending && !sonic._writing) {\n      sonic.emit('finish')\n    }\n    sonic.emit('close')\n  }\n}\n\n/**\n * These export configurations enable JS and TS developers\n * to consumer SonicBoom in whatever way best suits their needs.\n * Some examples of supported import syntax includes:\n * - `const SonicBoom = require('SonicBoom')`\n * - `const { SonicBoom } = require('SonicBoom')`\n * - `import * as SonicBoom from 'SonicBoom'`\n * - `import { SonicBoom } from 'SonicBoom'`\n * - `import SonicBoom from 'SonicBoom'`\n */\nSonicBoom.SonicBoom = SonicBoom\nSonicBoom.default = SonicBoom\nmodule.exports = SonicBoom\n","'use strict'\n\nconst refs = {\n  exit: [],\n  beforeExit: []\n}\nconst functions = {\n  exit: onExit,\n  beforeExit: onBeforeExit\n}\n\nlet registry\n\nfunction ensureRegistry () {\n  if (registry === undefined) {\n    registry = new FinalizationRegistry(clear)\n  }\n}\n\nfunction install (event) {\n  if (refs[event].length > 0) {\n    return\n  }\n\n  process.on(event, functions[event])\n}\n\nfunction uninstall (event) {\n  if (refs[event].length > 0) {\n    return\n  }\n  process.removeListener(event, functions[event])\n  if (refs.exit.length === 0 && refs.beforeExit.length === 0) {\n    registry = undefined\n  }\n}\n\nfunction onExit () {\n  callRefs('exit')\n}\n\nfunction onBeforeExit () {\n  callRefs('beforeExit')\n}\n\nfunction callRefs (event) {\n  for (const ref of refs[event]) {\n    const obj = ref.deref()\n    const fn = ref.fn\n\n    // This should always happen, however GC is\n    // undeterministic so it might not happen.\n    /* istanbul ignore else */\n    if (obj !== undefined) {\n      fn(obj, event)\n    }\n  }\n  refs[event] = []\n}\n\nfunction clear (ref) {\n  for (const event of ['exit', 'beforeExit']) {\n    const index = refs[event].indexOf(ref)\n    refs[event].splice(index, index + 1)\n    uninstall(event)\n  }\n}\n\nfunction _register (event, obj, fn) {\n  if (obj === undefined) {\n    throw new Error('the object can\\'t be undefined')\n  }\n  install(event)\n  const ref = new WeakRef(obj)\n  ref.fn = fn\n\n  ensureRegistry()\n  registry.register(obj, ref)\n  refs[event].push(ref)\n}\n\nfunction register (obj, fn) {\n  _register('exit', obj, fn)\n}\n\nfunction registerBeforeExit (obj, fn) {\n  _register('beforeExit', obj, fn)\n}\n\nfunction unregister (obj) {\n  if (registry === undefined) {\n    return\n  }\n  registry.unregister(obj)\n  for (const event of ['exit', 'beforeExit']) {\n    refs[event] = refs[event].filter((ref) => {\n      const _obj = ref.deref()\n      return _obj && _obj !== obj\n    })\n    uninstall(event)\n  }\n}\n\nmodule.exports = {\n  register,\n  registerBeforeExit,\n  unregister\n}\n","{\n  \"name\": \"thread-stream\",\n  \"version\": \"3.1.0\",\n  \"description\": \"A streaming way to send data to a Node.js Worker Thread\",\n  \"main\": \"index.js\",\n  \"types\": \"index.d.ts\",\n  \"dependencies\": {\n    \"real-require\": \"^0.2.0\"\n  },\n  \"devDependencies\": {\n    \"@types/node\": \"^20.1.0\",\n    \"@types/tap\": \"^15.0.0\",\n    \"@yao-pkg/pkg\": \"^5.11.5\",\n    \"desm\": \"^1.3.0\",\n    \"fastbench\": \"^1.0.1\",\n    \"husky\": \"^9.0.6\",\n    \"pino-elasticsearch\": \"^8.0.0\",\n    \"sonic-boom\": \"^4.0.1\",\n    \"standard\": \"^17.0.0\",\n    \"tap\": \"^16.2.0\",\n    \"ts-node\": \"^10.8.0\",\n    \"typescript\": \"^5.3.2\",\n    \"why-is-node-running\": \"^2.2.2\"\n  },\n  \"scripts\": {\n    \"build\": \"tsc --noEmit\",\n    \"test\": \"standard && npm run build && npm run transpile && tap \\\"test/**/*.test.*js\\\" && tap --ts test/*.test.*ts\",\n    \"test:ci\": \"standard && npm run transpile && npm run test:ci:js && npm run test:ci:ts\",\n    \"test:ci:js\": \"tap --no-check-coverage --timeout=120 --coverage-report=lcovonly \\\"test/**/*.test.*js\\\"\",\n    \"test:ci:ts\": \"tap --ts --no-check-coverage --coverage-report=lcovonly \\\"test/**/*.test.*ts\\\"\",\n    \"test:yarn\": \"npm run transpile && tap \\\"test/**/*.test.js\\\" --no-check-coverage\",\n    \"transpile\": \"sh ./test/ts/transpile.sh\",\n    \"prepare\": \"husky install\"\n  },\n  \"standard\": {\n    \"ignore\": [\n      \"test/ts/**/*\",\n      \"test/syntax-error.mjs\"\n    ]\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/mcollina/thread-stream.git\"\n  },\n  \"keywords\": [\n    \"worker\",\n    \"thread\",\n    \"threads\",\n    \"stream\"\n  ],\n  \"author\": \"Matteo Collina <hello@matteocollina.com>\",\n  \"license\": \"MIT\",\n  \"bugs\": {\n    \"url\": \"https://github.com/mcollina/thread-stream/issues\"\n  },\n  \"homepage\": \"https://github.com/mcollina/thread-stream#readme\"\n}\n","'use strict'\n\nconst MAX_TIMEOUT = 1000\n\nfunction wait (state, index, expected, timeout, done) {\n  const max = Date.now() + timeout\n  let current = Atomics.load(state, index)\n  if (current === expected) {\n    done(null, 'ok')\n    return\n  }\n  let prior = current\n  const check = (backoff) => {\n    if (Date.now() > max) {\n      done(null, 'timed-out')\n    } else {\n      setTimeout(() => {\n        prior = current\n        current = Atomics.load(state, index)\n        if (current === prior) {\n          check(backoff >= MAX_TIMEOUT ? MAX_TIMEOUT : backoff * 2)\n        } else {\n          if (current === expected) done(null, 'ok')\n          else done(null, 'not-equal')\n        }\n      }, backoff)\n    }\n  }\n  check(1)\n}\n\n// let waitDiffCount = 0\nfunction waitDiff (state, index, expected, timeout, done) {\n  // const id = waitDiffCount++\n  // process._rawDebug(`>>> waitDiff ${id}`)\n  const max = Date.now() + timeout\n  let current = Atomics.load(state, index)\n  if (current !== expected) {\n    done(null, 'ok')\n    return\n  }\n  const check = (backoff) => {\n    // process._rawDebug(`${id} ${index} current ${current} expected ${expected}`)\n    // process._rawDebug('' + backoff)\n    if (Date.now() > max) {\n      done(null, 'timed-out')\n    } else {\n      setTimeout(() => {\n        current = Atomics.load(state, index)\n        if (current !== expected) {\n          done(null, 'ok')\n        } else {\n          check(backoff >= MAX_TIMEOUT ? MAX_TIMEOUT : backoff * 2)\n        }\n      }, backoff)\n    }\n  }\n  check(1)\n}\n\nmodule.exports = { wait, waitDiff }\n","'use strict'\n\nconst WRITE_INDEX = 4\nconst READ_INDEX = 8\n\nmodule.exports = {\n  WRITE_INDEX,\n  READ_INDEX\n}\n","'use strict'\n\nconst { version } = require('./package.json')\nconst { EventEmitter } = require('events')\nconst { Worker } = require('worker_threads')\nconst { join } = require('path')\nconst { pathToFileURL } = require('url')\nconst { wait } = require('./lib/wait')\nconst {\n  WRITE_INDEX,\n  READ_INDEX\n} = require('./lib/indexes')\nconst buffer = require('buffer')\nconst assert = require('assert')\n\nconst kImpl = Symbol('kImpl')\n\n// V8 limit for string size\nconst MAX_STRING = buffer.constants.MAX_STRING_LENGTH\n\nclass FakeWeakRef {\n  constructor (value) {\n    this._value = value\n  }\n\n  deref () {\n    return this._value\n  }\n}\n\nclass FakeFinalizationRegistry {\n  register () {}\n\n  unregister () {}\n}\n\n// Currently using FinalizationRegistry with code coverage breaks the world\n// Ref: https://github.com/nodejs/node/issues/49344\nconst FinalizationRegistry = process.env.NODE_V8_COVERAGE ? FakeFinalizationRegistry : global.FinalizationRegistry || FakeFinalizationRegistry\nconst WeakRef = process.env.NODE_V8_COVERAGE ? FakeWeakRef : global.WeakRef || FakeWeakRef\n\nconst registry = new FinalizationRegistry((worker) => {\n  if (worker.exited) {\n    return\n  }\n  worker.terminate()\n})\n\nfunction createWorker (stream, opts) {\n  const { filename, workerData } = opts\n\n  const bundlerOverrides = '__bundlerPathsOverrides' in globalThis ? globalThis.__bundlerPathsOverrides : {}\n  const toExecute = bundlerOverrides['thread-stream-worker'] || join(__dirname, 'lib', 'worker.js')\n\n  const worker = new Worker(toExecute, {\n    ...opts.workerOpts,\n    trackUnmanagedFds: false,\n    workerData: {\n      filename: filename.indexOf('file://') === 0\n        ? filename\n        : pathToFileURL(filename).href,\n      dataBuf: stream[kImpl].dataBuf,\n      stateBuf: stream[kImpl].stateBuf,\n      workerData: {\n        $context: {\n          threadStreamVersion: version\n        },\n        ...workerData\n      }\n    }\n  })\n\n  // We keep a strong reference for now,\n  // we need to start writing first\n  worker.stream = new FakeWeakRef(stream)\n\n  worker.on('message', onWorkerMessage)\n  worker.on('exit', onWorkerExit)\n  registry.register(stream, worker)\n\n  return worker\n}\n\nfunction drain (stream) {\n  assert(!stream[kImpl].sync)\n  if (stream[kImpl].needDrain) {\n    stream[kImpl].needDrain = false\n    stream.emit('drain')\n  }\n}\n\nfunction nextFlush (stream) {\n  const writeIndex = Atomics.load(stream[kImpl].state, WRITE_INDEX)\n  let leftover = stream[kImpl].data.length - writeIndex\n\n  if (leftover > 0) {\n    if (stream[kImpl].buf.length === 0) {\n      stream[kImpl].flushing = false\n\n      if (stream[kImpl].ending) {\n        end(stream)\n      } else if (stream[kImpl].needDrain) {\n        process.nextTick(drain, stream)\n      }\n\n      return\n    }\n\n    let toWrite = stream[kImpl].buf.slice(0, leftover)\n    let toWriteBytes = Buffer.byteLength(toWrite)\n    if (toWriteBytes <= leftover) {\n      stream[kImpl].buf = stream[kImpl].buf.slice(leftover)\n      // process._rawDebug('writing ' + toWrite.length)\n      write(stream, toWrite, nextFlush.bind(null, stream))\n    } else {\n      // multi-byte utf-8\n      stream.flush(() => {\n        // err is already handled in flush()\n        if (stream.destroyed) {\n          return\n        }\n\n        Atomics.store(stream[kImpl].state, READ_INDEX, 0)\n        Atomics.store(stream[kImpl].state, WRITE_INDEX, 0)\n\n        // Find a toWrite length that fits the buffer\n        // it must exists as the buffer is at least 4 bytes length\n        // and the max utf-8 length for a char is 4 bytes.\n        while (toWriteBytes > stream[kImpl].data.length) {\n          leftover = leftover / 2\n          toWrite = stream[kImpl].buf.slice(0, leftover)\n          toWriteBytes = Buffer.byteLength(toWrite)\n        }\n        stream[kImpl].buf = stream[kImpl].buf.slice(leftover)\n        write(stream, toWrite, nextFlush.bind(null, stream))\n      })\n    }\n  } else if (leftover === 0) {\n    if (writeIndex === 0 && stream[kImpl].buf.length === 0) {\n      // we had a flushSync in the meanwhile\n      return\n    }\n    stream.flush(() => {\n      Atomics.store(stream[kImpl].state, READ_INDEX, 0)\n      Atomics.store(stream[kImpl].state, WRITE_INDEX, 0)\n      nextFlush(stream)\n    })\n  } else {\n    // This should never happen\n    destroy(stream, new Error('overwritten'))\n  }\n}\n\nfunction onWorkerMessage (msg) {\n  const stream = this.stream.deref()\n  if (stream === undefined) {\n    this.exited = true\n    // Terminate the worker.\n    this.terminate()\n    return\n  }\n\n  switch (msg.code) {\n    case 'READY':\n      // Replace the FakeWeakRef with a\n      // proper one.\n      this.stream = new WeakRef(stream)\n\n      stream.flush(() => {\n        stream[kImpl].ready = true\n        stream.emit('ready')\n      })\n      break\n    case 'ERROR':\n      destroy(stream, msg.err)\n      break\n    case 'EVENT':\n      if (Array.isArray(msg.args)) {\n        stream.emit(msg.name, ...msg.args)\n      } else {\n        stream.emit(msg.name, msg.args)\n      }\n      break\n    case 'WARNING':\n      process.emitWarning(msg.err)\n      break\n    default:\n      destroy(stream, new Error('this should not happen: ' + msg.code))\n  }\n}\n\nfunction onWorkerExit (code) {\n  const stream = this.stream.deref()\n  if (stream === undefined) {\n    // Nothing to do, the worker already exit\n    return\n  }\n  registry.unregister(stream)\n  stream.worker.exited = true\n  stream.worker.off('exit', onWorkerExit)\n  destroy(stream, code !== 0 ? new Error('the worker thread exited') : null)\n}\n\nclass ThreadStream extends EventEmitter {\n  constructor (opts = {}) {\n    super()\n\n    if (opts.bufferSize < 4) {\n      throw new Error('bufferSize must at least fit a 4-byte utf-8 char')\n    }\n\n    this[kImpl] = {}\n    this[kImpl].stateBuf = new SharedArrayBuffer(128)\n    this[kImpl].state = new Int32Array(this[kImpl].stateBuf)\n    this[kImpl].dataBuf = new SharedArrayBuffer(opts.bufferSize || 4 * 1024 * 1024)\n    this[kImpl].data = Buffer.from(this[kImpl].dataBuf)\n    this[kImpl].sync = opts.sync || false\n    this[kImpl].ending = false\n    this[kImpl].ended = false\n    this[kImpl].needDrain = false\n    this[kImpl].destroyed = false\n    this[kImpl].flushing = false\n    this[kImpl].ready = false\n    this[kImpl].finished = false\n    this[kImpl].errored = null\n    this[kImpl].closed = false\n    this[kImpl].buf = ''\n\n    // TODO (fix): Make private?\n    this.worker = createWorker(this, opts) // TODO (fix): make private\n    this.on('message', (message, transferList) => {\n      this.worker.postMessage(message, transferList)\n    })\n  }\n\n  write (data) {\n    if (this[kImpl].destroyed) {\n      error(this, new Error('the worker has exited'))\n      return false\n    }\n\n    if (this[kImpl].ending) {\n      error(this, new Error('the worker is ending'))\n      return false\n    }\n\n    if (this[kImpl].flushing && this[kImpl].buf.length + data.length >= MAX_STRING) {\n      try {\n        writeSync(this)\n        this[kImpl].flushing = true\n      } catch (err) {\n        destroy(this, err)\n        return false\n      }\n    }\n\n    this[kImpl].buf += data\n\n    if (this[kImpl].sync) {\n      try {\n        writeSync(this)\n        return true\n      } catch (err) {\n        destroy(this, err)\n        return false\n      }\n    }\n\n    if (!this[kImpl].flushing) {\n      this[kImpl].flushing = true\n      setImmediate(nextFlush, this)\n    }\n\n    this[kImpl].needDrain = this[kImpl].data.length - this[kImpl].buf.length - Atomics.load(this[kImpl].state, WRITE_INDEX) <= 0\n    return !this[kImpl].needDrain\n  }\n\n  end () {\n    if (this[kImpl].destroyed) {\n      return\n    }\n\n    this[kImpl].ending = true\n    end(this)\n  }\n\n  flush (cb) {\n    if (this[kImpl].destroyed) {\n      if (typeof cb === 'function') {\n        process.nextTick(cb, new Error('the worker has exited'))\n      }\n      return\n    }\n\n    // TODO write all .buf\n    const writeIndex = Atomics.load(this[kImpl].state, WRITE_INDEX)\n    // process._rawDebug(`(flush) readIndex (${Atomics.load(this.state, READ_INDEX)}) writeIndex (${Atomics.load(this.state, WRITE_INDEX)})`)\n    wait(this[kImpl].state, READ_INDEX, writeIndex, Infinity, (err, res) => {\n      if (err) {\n        destroy(this, err)\n        process.nextTick(cb, err)\n        return\n      }\n      if (res === 'not-equal') {\n        // TODO handle deadlock\n        this.flush(cb)\n        return\n      }\n      process.nextTick(cb)\n    })\n  }\n\n  flushSync () {\n    if (this[kImpl].destroyed) {\n      return\n    }\n\n    writeSync(this)\n    flushSync(this)\n  }\n\n  unref () {\n    this.worker.unref()\n  }\n\n  ref () {\n    this.worker.ref()\n  }\n\n  get ready () {\n    return this[kImpl].ready\n  }\n\n  get destroyed () {\n    return this[kImpl].destroyed\n  }\n\n  get closed () {\n    return this[kImpl].closed\n  }\n\n  get writable () {\n    return !this[kImpl].destroyed && !this[kImpl].ending\n  }\n\n  get writableEnded () {\n    return this[kImpl].ending\n  }\n\n  get writableFinished () {\n    return this[kImpl].finished\n  }\n\n  get writableNeedDrain () {\n    return this[kImpl].needDrain\n  }\n\n  get writableObjectMode () {\n    return false\n  }\n\n  get writableErrored () {\n    return this[kImpl].errored\n  }\n}\n\nfunction error (stream, err) {\n  setImmediate(() => {\n    stream.emit('error', err)\n  })\n}\n\nfunction destroy (stream, err) {\n  if (stream[kImpl].destroyed) {\n    return\n  }\n  stream[kImpl].destroyed = true\n\n  if (err) {\n    stream[kImpl].errored = err\n    error(stream, err)\n  }\n\n  if (!stream.worker.exited) {\n    stream.worker.terminate()\n      .catch(() => {})\n      .then(() => {\n        stream[kImpl].closed = true\n        stream.emit('close')\n      })\n  } else {\n    setImmediate(() => {\n      stream[kImpl].closed = true\n      stream.emit('close')\n    })\n  }\n}\n\nfunction write (stream, data, cb) {\n  // data is smaller than the shared buffer length\n  const current = Atomics.load(stream[kImpl].state, WRITE_INDEX)\n  const length = Buffer.byteLength(data)\n  stream[kImpl].data.write(data, current)\n  Atomics.store(stream[kImpl].state, WRITE_INDEX, current + length)\n  Atomics.notify(stream[kImpl].state, WRITE_INDEX)\n  cb()\n  return true\n}\n\nfunction end (stream) {\n  if (stream[kImpl].ended || !stream[kImpl].ending || stream[kImpl].flushing) {\n    return\n  }\n  stream[kImpl].ended = true\n\n  try {\n    stream.flushSync()\n\n    let readIndex = Atomics.load(stream[kImpl].state, READ_INDEX)\n\n    // process._rawDebug('writing index')\n    Atomics.store(stream[kImpl].state, WRITE_INDEX, -1)\n    // process._rawDebug(`(end) readIndex (${Atomics.load(stream.state, READ_INDEX)}) writeIndex (${Atomics.load(stream.state, WRITE_INDEX)})`)\n    Atomics.notify(stream[kImpl].state, WRITE_INDEX)\n\n    // Wait for the process to complete\n    let spins = 0\n    while (readIndex !== -1) {\n      // process._rawDebug(`read = ${read}`)\n      Atomics.wait(stream[kImpl].state, READ_INDEX, readIndex, 1000)\n      readIndex = Atomics.load(stream[kImpl].state, READ_INDEX)\n\n      if (readIndex === -2) {\n        destroy(stream, new Error('end() failed'))\n        return\n      }\n\n      if (++spins === 10) {\n        destroy(stream, new Error('end() took too long (10s)'))\n        return\n      }\n    }\n\n    process.nextTick(() => {\n      stream[kImpl].finished = true\n      stream.emit('finish')\n    })\n  } catch (err) {\n    destroy(stream, err)\n  }\n  // process._rawDebug('end finished...')\n}\n\nfunction writeSync (stream) {\n  const cb = () => {\n    if (stream[kImpl].ending) {\n      end(stream)\n    } else if (stream[kImpl].needDrain) {\n      process.nextTick(drain, stream)\n    }\n  }\n  stream[kImpl].flushing = false\n\n  while (stream[kImpl].buf.length !== 0) {\n    const writeIndex = Atomics.load(stream[kImpl].state, WRITE_INDEX)\n    let leftover = stream[kImpl].data.length - writeIndex\n    if (leftover === 0) {\n      flushSync(stream)\n      Atomics.store(stream[kImpl].state, READ_INDEX, 0)\n      Atomics.store(stream[kImpl].state, WRITE_INDEX, 0)\n      continue\n    } else if (leftover < 0) {\n      // stream should never happen\n      throw new Error('overwritten')\n    }\n\n    let toWrite = stream[kImpl].buf.slice(0, leftover)\n    let toWriteBytes = Buffer.byteLength(toWrite)\n    if (toWriteBytes <= leftover) {\n      stream[kImpl].buf = stream[kImpl].buf.slice(leftover)\n      // process._rawDebug('writing ' + toWrite.length)\n      write(stream, toWrite, cb)\n    } else {\n      // multi-byte utf-8\n      flushSync(stream)\n      Atomics.store(stream[kImpl].state, READ_INDEX, 0)\n      Atomics.store(stream[kImpl].state, WRITE_INDEX, 0)\n\n      // Find a toWrite length that fits the buffer\n      // it must exists as the buffer is at least 4 bytes length\n      // and the max utf-8 length for a char is 4 bytes.\n      while (toWriteBytes > stream[kImpl].buf.length) {\n        leftover = leftover / 2\n        toWrite = stream[kImpl].buf.slice(0, leftover)\n        toWriteBytes = Buffer.byteLength(toWrite)\n      }\n      stream[kImpl].buf = stream[kImpl].buf.slice(leftover)\n      write(stream, toWrite, cb)\n    }\n  }\n}\n\nfunction flushSync (stream) {\n  if (stream[kImpl].flushing) {\n    throw new Error('unable to flush while flushing')\n  }\n\n  // process._rawDebug('flushSync started')\n\n  const writeIndex = Atomics.load(stream[kImpl].state, WRITE_INDEX)\n\n  let spins = 0\n\n  // TODO handle deadlock\n  while (true) {\n    const readIndex = Atomics.load(stream[kImpl].state, READ_INDEX)\n\n    if (readIndex === -2) {\n      throw Error('_flushSync failed')\n    }\n\n    // process._rawDebug(`(flushSync) readIndex (${readIndex}) writeIndex (${writeIndex})`)\n    if (readIndex !== writeIndex) {\n      // TODO stream timeouts for some reason.\n      Atomics.wait(stream[kImpl].state, READ_INDEX, readIndex, 1000)\n    } else {\n      break\n    }\n\n    if (++spins === 10) {\n      throw new Error('_flushSync took too long (10s)')\n    }\n  }\n  // process._rawDebug('flushSync finished')\n}\n\nmodule.exports = ThreadStream\n","'use strict'\n\nconst { createRequire } = require('module')\nconst getCallers = require('./caller')\nconst { join, isAbsolute, sep } = require('node:path')\nconst sleep = require('atomic-sleep')\nconst onExit = require('on-exit-leak-free')\nconst ThreadStream = require('thread-stream')\n\nfunction setupOnExit (stream) {\n  // This is leak free, it does not leave event handlers\n  onExit.register(stream, autoEnd)\n  onExit.registerBeforeExit(stream, flush)\n\n  stream.on('close', function () {\n    onExit.unregister(stream)\n  })\n}\n\nfunction buildStream (filename, workerData, workerOpts, sync) {\n  const stream = new ThreadStream({\n    filename,\n    workerData,\n    workerOpts,\n    sync\n  })\n\n  stream.on('ready', onReady)\n  stream.on('close', function () {\n    process.removeListener('exit', onExit)\n  })\n\n  process.on('exit', onExit)\n\n  function onReady () {\n    process.removeListener('exit', onExit)\n    stream.unref()\n\n    if (workerOpts.autoEnd !== false) {\n      setupOnExit(stream)\n    }\n  }\n\n  function onExit () {\n    /* istanbul ignore next */\n    if (stream.closed) {\n      return\n    }\n    stream.flushSync()\n    // Apparently there is a very sporadic race condition\n    // that in certain OS would prevent the messages to be flushed\n    // because the thread might not have been created still.\n    // Unfortunately we need to sleep(100) in this case.\n    sleep(100)\n    stream.end()\n  }\n\n  return stream\n}\n\nfunction autoEnd (stream) {\n  stream.ref()\n  stream.flushSync()\n  stream.end()\n  stream.once('close', function () {\n    stream.unref()\n  })\n}\n\nfunction flush (stream) {\n  stream.flushSync()\n}\n\nfunction transport (fullOptions) {\n  const { pipeline, targets, levels, dedupe, worker = {}, caller = getCallers(), sync = false } = fullOptions\n\n  const options = {\n    ...fullOptions.options\n  }\n\n  // Backwards compatibility\n  const callers = typeof caller === 'string' ? [caller] : caller\n\n  // This will be eventually modified by bundlers\n  const bundlerOverrides = '__bundlerPathsOverrides' in globalThis ? globalThis.__bundlerPathsOverrides : {}\n\n  let target = fullOptions.target\n\n  if (target && targets) {\n    throw new Error('only one of target or targets can be specified')\n  }\n\n  if (targets) {\n    target = bundlerOverrides['pino-worker'] || join(__dirname, 'worker.js')\n    options.targets = targets.filter(dest => dest.target).map((dest) => {\n      return {\n        ...dest,\n        target: fixTarget(dest.target)\n      }\n    })\n    options.pipelines = targets.filter(dest => dest.pipeline).map((dest) => {\n      return dest.pipeline.map((t) => {\n        return {\n          ...t,\n          level: dest.level, // duplicate the pipeline `level` property defined in the upper level\n          target: fixTarget(t.target)\n        }\n      })\n    })\n  } else if (pipeline) {\n    target = bundlerOverrides['pino-worker'] || join(__dirname, 'worker.js')\n    options.pipelines = [pipeline.map((dest) => {\n      return {\n        ...dest,\n        target: fixTarget(dest.target)\n      }\n    })]\n  }\n\n  if (levels) {\n    options.levels = levels\n  }\n\n  if (dedupe) {\n    options.dedupe = dedupe\n  }\n\n  options.pinoWillSendConfig = true\n\n  return buildStream(fixTarget(target), options, worker, sync)\n\n  function fixTarget (origin) {\n    origin = bundlerOverrides[origin] || origin\n\n    if (isAbsolute(origin) || origin.indexOf('file://') === 0) {\n      return origin\n    }\n\n    if (origin === 'pino/file') {\n      return join(__dirname, '..', 'file.js')\n    }\n\n    let fixTarget\n\n    for (const filePath of callers) {\n      try {\n        const context = filePath === 'node:repl'\n          ? process.cwd() + sep\n          : filePath\n\n        fixTarget = createRequire(context).resolve(origin)\n        break\n      } catch (err) {\n        // Silent catch\n        continue\n      }\n    }\n\n    if (!fixTarget) {\n      throw new Error(`unable to determine transport target for \"${origin}\"`)\n    }\n\n    return fixTarget\n  }\n}\n\nmodule.exports = transport\n","'use strict'\n\n/* eslint no-prototype-builtins: 0 */\n\nconst format = require('quick-format-unescaped')\nconst { mapHttpRequest, mapHttpResponse } = require('pino-std-serializers')\nconst SonicBoom = require('sonic-boom')\nconst onExit = require('on-exit-leak-free')\nconst {\n  lsCacheSym,\n  chindingsSym,\n  writeSym,\n  serializersSym,\n  formatOptsSym,\n  endSym,\n  stringifiersSym,\n  stringifySym,\n  stringifySafeSym,\n  wildcardFirstSym,\n  nestedKeySym,\n  formattersSym,\n  messageKeySym,\n  errorKeySym,\n  nestedKeyStrSym,\n  msgPrefixSym\n} = require('./symbols')\nconst { isMainThread } = require('worker_threads')\nconst transport = require('./transport')\n\nfunction noop () {\n}\n\nfunction genLog (level, hook) {\n  if (!hook) return LOG\n\n  return function hookWrappedLog (...args) {\n    hook.call(this, args, LOG, level)\n  }\n\n  function LOG (o, ...n) {\n    if (typeof o === 'object') {\n      let msg = o\n      if (o !== null) {\n        if (o.method && o.headers && o.socket) {\n          o = mapHttpRequest(o)\n        } else if (typeof o.setHeader === 'function') {\n          o = mapHttpResponse(o)\n        }\n      }\n      let formatParams\n      if (msg === null && n.length === 0) {\n        formatParams = [null]\n      } else {\n        msg = n.shift()\n        formatParams = n\n      }\n      // We do not use a coercive check for `msg` as it is\n      // measurably slower than the explicit checks.\n      if (typeof this[msgPrefixSym] === 'string' && msg !== undefined && msg !== null) {\n        msg = this[msgPrefixSym] + msg\n      }\n      this[writeSym](o, format(msg, formatParams, this[formatOptsSym]), level)\n    } else {\n      let msg = o === undefined ? n.shift() : o\n\n      // We do not use a coercive check for `msg` as it is\n      // measurably slower than the explicit checks.\n      if (typeof this[msgPrefixSym] === 'string' && msg !== undefined && msg !== null) {\n        msg = this[msgPrefixSym] + msg\n      }\n      this[writeSym](null, format(msg, n, this[formatOptsSym]), level)\n    }\n  }\n}\n\n// magically escape strings for json\n// relying on their charCodeAt\n// everything below 32 needs JSON.stringify()\n// 34 and 92 happens all the time, so we\n// have a fast case for them\nfunction asString (str) {\n  let result = ''\n  let last = 0\n  let found = false\n  let point = 255\n  const l = str.length\n  if (l > 100) {\n    return JSON.stringify(str)\n  }\n  for (var i = 0; i < l && point >= 32; i++) {\n    point = str.charCodeAt(i)\n    if (point === 34 || point === 92) {\n      result += str.slice(last, i) + '\\\\'\n      last = i\n      found = true\n    }\n  }\n  if (!found) {\n    result = str\n  } else {\n    result += str.slice(last)\n  }\n  return point < 32 ? JSON.stringify(str) : '\"' + result + '\"'\n}\n\nfunction asJson (obj, msg, num, time) {\n  const stringify = this[stringifySym]\n  const stringifySafe = this[stringifySafeSym]\n  const stringifiers = this[stringifiersSym]\n  const end = this[endSym]\n  const chindings = this[chindingsSym]\n  const serializers = this[serializersSym]\n  const formatters = this[formattersSym]\n  const messageKey = this[messageKeySym]\n  const errorKey = this[errorKeySym]\n  let data = this[lsCacheSym][num] + time\n\n  // we need the child bindings added to the output first so instance logged\n  // objects can take precedence when JSON.parse-ing the resulting log line\n  data = data + chindings\n\n  let value\n  if (formatters.log) {\n    obj = formatters.log(obj)\n  }\n  const wildcardStringifier = stringifiers[wildcardFirstSym]\n  let propStr = ''\n  for (const key in obj) {\n    value = obj[key]\n    if (Object.prototype.hasOwnProperty.call(obj, key) && value !== undefined) {\n      if (serializers[key]) {\n        value = serializers[key](value)\n      } else if (key === errorKey && serializers.err) {\n        value = serializers.err(value)\n      }\n\n      const stringifier = stringifiers[key] || wildcardStringifier\n\n      switch (typeof value) {\n        case 'undefined':\n        case 'function':\n          continue\n        case 'number':\n          /* eslint no-fallthrough: \"off\" */\n          if (Number.isFinite(value) === false) {\n            value = null\n          }\n        // this case explicitly falls through to the next one\n        case 'boolean':\n          if (stringifier) value = stringifier(value)\n          break\n        case 'string':\n          value = (stringifier || asString)(value)\n          break\n        default:\n          value = (stringifier || stringify)(value, stringifySafe)\n      }\n      if (value === undefined) continue\n      const strKey = asString(key)\n      propStr += ',' + strKey + ':' + value\n    }\n  }\n\n  let msgStr = ''\n  if (msg !== undefined) {\n    value = serializers[messageKey] ? serializers[messageKey](msg) : msg\n    const stringifier = stringifiers[messageKey] || wildcardStringifier\n\n    switch (typeof value) {\n      case 'function':\n        break\n      case 'number':\n        /* eslint no-fallthrough: \"off\" */\n        if (Number.isFinite(value) === false) {\n          value = null\n        }\n      // this case explicitly falls through to the next one\n      case 'boolean':\n        if (stringifier) value = stringifier(value)\n        msgStr = ',\"' + messageKey + '\":' + value\n        break\n      case 'string':\n        value = (stringifier || asString)(value)\n        msgStr = ',\"' + messageKey + '\":' + value\n        break\n      default:\n        value = (stringifier || stringify)(value, stringifySafe)\n        msgStr = ',\"' + messageKey + '\":' + value\n    }\n  }\n\n  if (this[nestedKeySym] && propStr) {\n    // place all the obj properties under the specified key\n    // the nested key is already formatted from the constructor\n    return data + this[nestedKeyStrSym] + propStr.slice(1) + '}' + msgStr + end\n  } else {\n    return data + propStr + msgStr + end\n  }\n}\n\nfunction asChindings (instance, bindings) {\n  let value\n  let data = instance[chindingsSym]\n  const stringify = instance[stringifySym]\n  const stringifySafe = instance[stringifySafeSym]\n  const stringifiers = instance[stringifiersSym]\n  const wildcardStringifier = stringifiers[wildcardFirstSym]\n  const serializers = instance[serializersSym]\n  const formatter = instance[formattersSym].bindings\n  bindings = formatter(bindings)\n\n  for (const key in bindings) {\n    value = bindings[key]\n    const valid = key !== 'level' &&\n      key !== 'serializers' &&\n      key !== 'formatters' &&\n      key !== 'customLevels' &&\n      bindings.hasOwnProperty(key) &&\n      value !== undefined\n    if (valid === true) {\n      value = serializers[key] ? serializers[key](value) : value\n      value = (stringifiers[key] || wildcardStringifier || stringify)(value, stringifySafe)\n      if (value === undefined) continue\n      data += ',\"' + key + '\":' + value\n    }\n  }\n  return data\n}\n\nfunction hasBeenTampered (stream) {\n  return stream.write !== stream.constructor.prototype.write\n}\n\nfunction buildSafeSonicBoom (opts) {\n  const stream = new SonicBoom(opts)\n  stream.on('error', filterBrokenPipe)\n  // If we are sync: false, we must flush on exit\n  if (!opts.sync && isMainThread) {\n    onExit.register(stream, autoEnd)\n\n    stream.on('close', function () {\n      onExit.unregister(stream)\n    })\n  }\n  return stream\n\n  function filterBrokenPipe (err) {\n    // Impossible to replicate across all operating systems\n    /* istanbul ignore next */\n    if (err.code === 'EPIPE') {\n      // If we get EPIPE, we should stop logging here\n      // however we have no control to the consumer of\n      // SonicBoom, so we just overwrite the write method\n      stream.write = noop\n      stream.end = noop\n      stream.flushSync = noop\n      stream.destroy = noop\n      return\n    }\n    stream.removeListener('error', filterBrokenPipe)\n    stream.emit('error', err)\n  }\n}\n\nfunction autoEnd (stream, eventName) {\n  // This check is needed only on some platforms\n  /* istanbul ignore next */\n  if (stream.destroyed) {\n    return\n  }\n\n  if (eventName === 'beforeExit') {\n    // We still have an event loop, let's use it\n    stream.flush()\n    stream.on('drain', function () {\n      stream.end()\n    })\n  } else {\n    // For some reason istanbul is not detecting this, but it's there\n    /* istanbul ignore next */\n    // We do not have an event loop, so flush synchronously\n    stream.flushSync()\n  }\n}\n\nfunction createArgsNormalizer (defaultOptions) {\n  return function normalizeArgs (instance, caller, opts = {}, stream) {\n    // support stream as a string\n    if (typeof opts === 'string') {\n      stream = buildSafeSonicBoom({ dest: opts })\n      opts = {}\n    } else if (typeof stream === 'string') {\n      if (opts && opts.transport) {\n        throw Error('only one of option.transport or stream can be specified')\n      }\n      stream = buildSafeSonicBoom({ dest: stream })\n    } else if (opts instanceof SonicBoom || opts.writable || opts._writableState) {\n      stream = opts\n      opts = {}\n    } else if (opts.transport) {\n      if (opts.transport instanceof SonicBoom || opts.transport.writable || opts.transport._writableState) {\n        throw Error('option.transport do not allow stream, please pass to option directly. e.g. pino(transport)')\n      }\n      if (opts.transport.targets && opts.transport.targets.length && opts.formatters && typeof opts.formatters.level === 'function') {\n        throw Error('option.transport.targets do not allow custom level formatters')\n      }\n\n      let customLevels\n      if (opts.customLevels) {\n        customLevels = opts.useOnlyCustomLevels ? opts.customLevels : Object.assign({}, opts.levels, opts.customLevels)\n      }\n      stream = transport({ caller, ...opts.transport, levels: customLevels })\n    }\n    opts = Object.assign({}, defaultOptions, opts)\n    opts.serializers = Object.assign({}, defaultOptions.serializers, opts.serializers)\n    opts.formatters = Object.assign({}, defaultOptions.formatters, opts.formatters)\n\n    if (opts.prettyPrint) {\n      throw new Error('prettyPrint option is no longer supported, see the pino-pretty package (https://github.com/pinojs/pino-pretty)')\n    }\n\n    const { enabled, onChild } = opts\n    if (enabled === false) opts.level = 'silent'\n    if (!onChild) opts.onChild = noop\n    if (!stream) {\n      if (!hasBeenTampered(process.stdout)) {\n        // If process.stdout.fd is undefined, it means that we are running\n        // in a worker thread. Let's assume we are logging to file descriptor 1.\n        stream = buildSafeSonicBoom({ fd: process.stdout.fd || 1 })\n      } else {\n        stream = process.stdout\n      }\n    }\n    return { opts, stream }\n  }\n}\n\nfunction stringify (obj, stringifySafeFn) {\n  try {\n    return JSON.stringify(obj)\n  } catch (_) {\n    try {\n      const stringify = stringifySafeFn || this[stringifySafeSym]\n      return stringify(obj)\n    } catch (_) {\n      return '\"[unable to serialize, circular reference is too complex to analyze]\"'\n    }\n  }\n}\n\nfunction buildFormatters (level, bindings, log) {\n  return {\n    level,\n    bindings,\n    log\n  }\n}\n\n/**\n * Convert a string integer file descriptor to a proper native integer\n * file descriptor.\n *\n * @param {string} destination The file descriptor string to attempt to convert.\n *\n * @returns {Number}\n */\nfunction normalizeDestFileDescriptor (destination) {\n  const fd = Number(destination)\n  if (typeof destination === 'string' && Number.isFinite(fd)) {\n    return fd\n  }\n  // destination could be undefined if we are in a worker\n  if (destination === undefined) {\n    // This is stdout in UNIX systems\n    return 1\n  }\n  return destination\n}\n\nmodule.exports = {\n  noop,\n  buildSafeSonicBoom,\n  asChindings,\n  asJson,\n  genLog,\n  createArgsNormalizer,\n  stringify,\n  buildFormatters,\n  normalizeDestFileDescriptor\n}\n","/**\n * Represents default log level values\n *\n * @enum {number}\n */\nconst DEFAULT_LEVELS = {\n  trace: 10,\n  debug: 20,\n  info: 30,\n  warn: 40,\n  error: 50,\n  fatal: 60\n}\n\n/**\n * Represents sort order direction: `ascending` or `descending`\n *\n * @enum {string}\n */\nconst SORTING_ORDER = {\n  ASC: 'ASC',\n  DESC: 'DESC'\n}\n\nmodule.exports = {\n  DEFAULT_LEVELS,\n  SORTING_ORDER\n}\n","'use strict'\n/* eslint no-prototype-builtins: 0 */\nconst {\n  lsCacheSym,\n  levelValSym,\n  useOnlyCustomLevelsSym,\n  streamSym,\n  formattersSym,\n  hooksSym,\n  levelCompSym\n} = require('./symbols')\nconst { noop, genLog } = require('./tools')\nconst { DEFAULT_LEVELS, SORTING_ORDER } = require('./constants')\n\nconst levelMethods = {\n  fatal: (hook) => {\n    const logFatal = genLog(DEFAULT_LEVELS.fatal, hook)\n    return function (...args) {\n      const stream = this[streamSym]\n      logFatal.call(this, ...args)\n      if (typeof stream.flushSync === 'function') {\n        try {\n          stream.flushSync()\n        } catch (e) {\n          // https://github.com/pinojs/pino/pull/740#discussion_r346788313\n        }\n      }\n    }\n  },\n  error: (hook) => genLog(DEFAULT_LEVELS.error, hook),\n  warn: (hook) => genLog(DEFAULT_LEVELS.warn, hook),\n  info: (hook) => genLog(DEFAULT_LEVELS.info, hook),\n  debug: (hook) => genLog(DEFAULT_LEVELS.debug, hook),\n  trace: (hook) => genLog(DEFAULT_LEVELS.trace, hook)\n}\n\nconst nums = Object.keys(DEFAULT_LEVELS).reduce((o, k) => {\n  o[DEFAULT_LEVELS[k]] = k\n  return o\n}, {})\n\nconst initialLsCache = Object.keys(nums).reduce((o, k) => {\n  o[k] = '{\"level\":' + Number(k)\n  return o\n}, {})\n\nfunction genLsCache (instance) {\n  const formatter = instance[formattersSym].level\n  const { labels } = instance.levels\n  const cache = {}\n  for (const label in labels) {\n    const level = formatter(labels[label], Number(label))\n    cache[label] = JSON.stringify(level).slice(0, -1)\n  }\n  instance[lsCacheSym] = cache\n  return instance\n}\n\nfunction isStandardLevel (level, useOnlyCustomLevels) {\n  if (useOnlyCustomLevels) {\n    return false\n  }\n\n  switch (level) {\n    case 'fatal':\n    case 'error':\n    case 'warn':\n    case 'info':\n    case 'debug':\n    case 'trace':\n      return true\n    default:\n      return false\n  }\n}\n\nfunction setLevel (level) {\n  const { labels, values } = this.levels\n  if (typeof level === 'number') {\n    if (labels[level] === undefined) throw Error('unknown level value' + level)\n    level = labels[level]\n  }\n  if (values[level] === undefined) throw Error('unknown level ' + level)\n  const preLevelVal = this[levelValSym]\n  const levelVal = this[levelValSym] = values[level]\n  const useOnlyCustomLevelsVal = this[useOnlyCustomLevelsSym]\n  const levelComparison = this[levelCompSym]\n  const hook = this[hooksSym].logMethod\n\n  for (const key in values) {\n    if (levelComparison(values[key], levelVal) === false) {\n      this[key] = noop\n      continue\n    }\n    this[key] = isStandardLevel(key, useOnlyCustomLevelsVal) ? levelMethods[key](hook) : genLog(values[key], hook)\n  }\n\n  this.emit(\n    'level-change',\n    level,\n    levelVal,\n    labels[preLevelVal],\n    preLevelVal,\n    this\n  )\n}\n\nfunction getLevel (level) {\n  const { levels, levelVal } = this\n  // protection against potential loss of Pino scope from serializers (edge case with circular refs - https://github.com/pinojs/pino/issues/833)\n  return (levels && levels.labels) ? levels.labels[levelVal] : ''\n}\n\nfunction isLevelEnabled (logLevel) {\n  const { values } = this.levels\n  const logLevelVal = values[logLevel]\n  return logLevelVal !== undefined && this[levelCompSym](logLevelVal, this[levelValSym])\n}\n\n/**\n * Determine if the given `current` level is enabled by comparing it\n * against the current threshold (`expected`).\n *\n * @param {SORTING_ORDER} direction comparison direction \"ASC\" or \"DESC\"\n * @param {number} current current log level number representation\n * @param {number} expected threshold value to compare with\n * @returns {boolean}\n */\nfunction compareLevel (direction, current, expected) {\n  if (direction === SORTING_ORDER.DESC) {\n    return current <= expected\n  }\n\n  return current >= expected\n}\n\n/**\n * Create a level comparison function based on `levelComparison`\n * it could a default function which compares levels either in \"ascending\" or \"descending\" order or custom comparison function\n *\n * @param {SORTING_ORDER | Function} levelComparison sort levels order direction or custom comparison function\n * @returns Function\n */\nfunction genLevelComparison (levelComparison) {\n  if (typeof levelComparison === 'string') {\n    return compareLevel.bind(null, levelComparison)\n  }\n\n  return levelComparison\n}\n\nfunction mappings (customLevels = null, useOnlyCustomLevels = false) {\n  const customNums = customLevels\n    /* eslint-disable */\n    ? Object.keys(customLevels).reduce((o, k) => {\n        o[customLevels[k]] = k\n        return o\n      }, {})\n    : null\n    /* eslint-enable */\n\n  const labels = Object.assign(\n    Object.create(Object.prototype, { Infinity: { value: 'silent' } }),\n    useOnlyCustomLevels ? null : nums,\n    customNums\n  )\n  const values = Object.assign(\n    Object.create(Object.prototype, { silent: { value: Infinity } }),\n    useOnlyCustomLevels ? null : DEFAULT_LEVELS,\n    customLevels\n  )\n  return { labels, values }\n}\n\nfunction assertDefaultLevelFound (defaultLevel, customLevels, useOnlyCustomLevels) {\n  if (typeof defaultLevel === 'number') {\n    const values = [].concat(\n      Object.keys(customLevels || {}).map(key => customLevels[key]),\n      useOnlyCustomLevels ? [] : Object.keys(nums).map(level => +level),\n      Infinity\n    )\n    if (!values.includes(defaultLevel)) {\n      throw Error(`default level:${defaultLevel} must be included in custom levels`)\n    }\n    return\n  }\n\n  const labels = Object.assign(\n    Object.create(Object.prototype, { silent: { value: Infinity } }),\n    useOnlyCustomLevels ? null : DEFAULT_LEVELS,\n    customLevels\n  )\n  if (!(defaultLevel in labels)) {\n    throw Error(`default level:${defaultLevel} must be included in custom levels`)\n  }\n}\n\nfunction assertNoLevelCollisions (levels, customLevels) {\n  const { labels, values } = levels\n  for (const k in customLevels) {\n    if (k in values) {\n      throw Error('levels cannot be overridden')\n    }\n    if (customLevels[k] in labels) {\n      throw Error('pre-existing level values cannot be used for new levels')\n    }\n  }\n}\n\n/**\n * Validates whether `levelComparison` is correct\n *\n * @throws Error\n * @param {SORTING_ORDER | Function} levelComparison - value to validate\n * @returns\n */\nfunction assertLevelComparison (levelComparison) {\n  if (typeof levelComparison === 'function') {\n    return\n  }\n\n  if (typeof levelComparison === 'string' && Object.values(SORTING_ORDER).includes(levelComparison)) {\n    return\n  }\n\n  throw new Error('Levels comparison should be one of \"ASC\", \"DESC\" or \"function\" type')\n}\n\nmodule.exports = {\n  initialLsCache,\n  genLsCache,\n  levelMethods,\n  getLevel,\n  setLevel,\n  isLevelEnabled,\n  mappings,\n  assertNoLevelCollisions,\n  assertDefaultLevelFound,\n  genLevelComparison,\n  assertLevelComparison\n}\n","'use strict'\n\nmodule.exports = { version: '9.9.0' }\n","'use strict'\n\n/* eslint no-prototype-builtins: 0 */\n\nconst { EventEmitter } = require('node:events')\nconst {\n  lsCacheSym,\n  levelValSym,\n  setLevelSym,\n  getLevelSym,\n  chindingsSym,\n  parsedChindingsSym,\n  mixinSym,\n  asJsonSym,\n  writeSym,\n  mixinMergeStrategySym,\n  timeSym,\n  timeSliceIndexSym,\n  streamSym,\n  serializersSym,\n  formattersSym,\n  errorKeySym,\n  messageKeySym,\n  useOnlyCustomLevelsSym,\n  needsMetadataGsym,\n  redactFmtSym,\n  stringifySym,\n  formatOptsSym,\n  stringifiersSym,\n  msgPrefixSym,\n  hooksSym\n} = require('./symbols')\nconst {\n  getLevel,\n  setLevel,\n  isLevelEnabled,\n  mappings,\n  initialLsCache,\n  genLsCache,\n  assertNoLevelCollisions\n} = require('./levels')\nconst {\n  asChindings,\n  asJson,\n  buildFormatters,\n  stringify\n} = require('./tools')\nconst {\n  version\n} = require('./meta')\nconst redaction = require('./redaction')\n\n// note: use of class is satirical\n// https://github.com/pinojs/pino/pull/433#pullrequestreview-127703127\nconst constructor = class Pino {}\nconst prototype = {\n  constructor,\n  child,\n  bindings,\n  setBindings,\n  flush,\n  isLevelEnabled,\n  version,\n  get level () { return this[getLevelSym]() },\n  set level (lvl) { this[setLevelSym](lvl) },\n  get levelVal () { return this[levelValSym] },\n  set levelVal (n) { throw Error('levelVal is read-only') },\n  get msgPrefix () { return this[msgPrefixSym] },\n  [lsCacheSym]: initialLsCache,\n  [writeSym]: write,\n  [asJsonSym]: asJson,\n  [getLevelSym]: getLevel,\n  [setLevelSym]: setLevel\n}\n\nObject.setPrototypeOf(prototype, EventEmitter.prototype)\n\n// exporting and consuming the prototype object using factory pattern fixes scoping issues with getters when serializing\nmodule.exports = function () {\n  return Object.create(prototype)\n}\n\nconst resetChildingsFormatter = bindings => bindings\nfunction child (bindings, options) {\n  if (!bindings) {\n    throw Error('missing bindings for child Pino')\n  }\n  options = options || {} // default options to empty object\n  const serializers = this[serializersSym]\n  const formatters = this[formattersSym]\n  const instance = Object.create(this)\n\n  if (options.hasOwnProperty('serializers') === true) {\n    instance[serializersSym] = Object.create(null)\n\n    for (const k in serializers) {\n      instance[serializersSym][k] = serializers[k]\n    }\n    const parentSymbols = Object.getOwnPropertySymbols(serializers)\n    /* eslint no-var: off */\n    for (var i = 0; i < parentSymbols.length; i++) {\n      const ks = parentSymbols[i]\n      instance[serializersSym][ks] = serializers[ks]\n    }\n\n    for (const bk in options.serializers) {\n      instance[serializersSym][bk] = options.serializers[bk]\n    }\n    const bindingsSymbols = Object.getOwnPropertySymbols(options.serializers)\n    for (var bi = 0; bi < bindingsSymbols.length; bi++) {\n      const bks = bindingsSymbols[bi]\n      instance[serializersSym][bks] = options.serializers[bks]\n    }\n  } else instance[serializersSym] = serializers\n  if (options.hasOwnProperty('formatters')) {\n    const { level, bindings: chindings, log } = options.formatters\n    instance[formattersSym] = buildFormatters(\n      level || formatters.level,\n      chindings || resetChildingsFormatter,\n      log || formatters.log\n    )\n  } else {\n    instance[formattersSym] = buildFormatters(\n      formatters.level,\n      resetChildingsFormatter,\n      formatters.log\n    )\n  }\n  if (options.hasOwnProperty('customLevels') === true) {\n    assertNoLevelCollisions(this.levels, options.customLevels)\n    instance.levels = mappings(options.customLevels, instance[useOnlyCustomLevelsSym])\n    genLsCache(instance)\n  }\n\n  // redact must place before asChindings and only replace if exist\n  if ((typeof options.redact === 'object' && options.redact !== null) || Array.isArray(options.redact)) {\n    instance.redact = options.redact // replace redact directly\n    const stringifiers = redaction(instance.redact, stringify)\n    const formatOpts = { stringify: stringifiers[redactFmtSym] }\n    instance[stringifySym] = stringify\n    instance[stringifiersSym] = stringifiers\n    instance[formatOptsSym] = formatOpts\n  }\n\n  if (typeof options.msgPrefix === 'string') {\n    instance[msgPrefixSym] = (this[msgPrefixSym] || '') + options.msgPrefix\n  }\n\n  instance[chindingsSym] = asChindings(instance, bindings)\n  const childLevel = options.level || this.level\n  instance[setLevelSym](childLevel)\n  this.onChild(instance)\n  return instance\n}\n\nfunction bindings () {\n  const chindings = this[chindingsSym]\n  const chindingsJson = `{${chindings.substr(1)}}` // at least contains ,\"pid\":7068,\"hostname\":\"myMac\"\n  const bindingsFromJson = JSON.parse(chindingsJson)\n  delete bindingsFromJson.pid\n  delete bindingsFromJson.hostname\n  return bindingsFromJson\n}\n\nfunction setBindings (newBindings) {\n  const chindings = asChindings(this, newBindings)\n  this[chindingsSym] = chindings\n  delete this[parsedChindingsSym]\n}\n\n/**\n * Default strategy for creating `mergeObject` from arguments and the result from `mixin()`.\n * Fields from `mergeObject` have higher priority in this strategy.\n *\n * @param {Object} mergeObject The object a user has supplied to the logging function.\n * @param {Object} mixinObject The result of the `mixin` method.\n * @return {Object}\n */\nfunction defaultMixinMergeStrategy (mergeObject, mixinObject) {\n  return Object.assign(mixinObject, mergeObject)\n}\n\nfunction write (_obj, msg, num) {\n  const t = this[timeSym]()\n  const mixin = this[mixinSym]\n  const errorKey = this[errorKeySym]\n  const messageKey = this[messageKeySym]\n  const mixinMergeStrategy = this[mixinMergeStrategySym] || defaultMixinMergeStrategy\n  let obj\n  const streamWriteHook = this[hooksSym].streamWrite\n\n  if (_obj === undefined || _obj === null) {\n    obj = {}\n  } else if (_obj instanceof Error) {\n    obj = { [errorKey]: _obj }\n    if (msg === undefined) {\n      msg = _obj.message\n    }\n  } else {\n    obj = _obj\n    if (msg === undefined && _obj[messageKey] === undefined && _obj[errorKey]) {\n      msg = _obj[errorKey].message\n    }\n  }\n\n  if (mixin) {\n    obj = mixinMergeStrategy(obj, mixin(obj, num, this))\n  }\n\n  const s = this[asJsonSym](obj, msg, num, t)\n\n  const stream = this[streamSym]\n  if (stream[needsMetadataGsym] === true) {\n    stream.lastLevel = num\n    stream.lastObj = obj\n    stream.lastMsg = msg\n    stream.lastTime = t.slice(this[timeSliceIndexSym])\n    stream.lastLogger = this // for child loggers\n  }\n  stream.write(streamWriteHook ? streamWriteHook(s) : s)\n}\n\nfunction noop () {}\n\nfunction flush (cb) {\n  if (cb != null && typeof cb !== 'function') {\n    throw Error('callback must be a function')\n  }\n\n  const stream = this[streamSym]\n\n  if (typeof stream.flush === 'function') {\n    stream.flush(cb || noop)\n  } else if (cb) cb()\n}\n","'use strict'\n\nconst { hasOwnProperty } = Object.prototype\n\nconst stringify = configure()\n\n// @ts-expect-error\nstringify.configure = configure\n// @ts-expect-error\nstringify.stringify = stringify\n\n// @ts-expect-error\nstringify.default = stringify\n\n// @ts-expect-error used for named export\nexports.stringify = stringify\n// @ts-expect-error used for named export\nexports.configure = configure\n\nmodule.exports = stringify\n\n// eslint-disable-next-line no-control-regex\nconst strEscapeSequencesRegExp = /[\\u0000-\\u001f\\u0022\\u005c\\ud800-\\udfff]/\n\n// Escape C0 control characters, double quotes, the backslash and every code\n// unit with a numeric value in the inclusive range 0xD800 to 0xDFFF.\nfunction strEscape (str) {\n  // Some magic numbers that worked out fine while benchmarking with v8 8.0\n  if (str.length < 5000 && !strEscapeSequencesRegExp.test(str)) {\n    return `\"${str}\"`\n  }\n  return JSON.stringify(str)\n}\n\nfunction sort (array, comparator) {\n  // Insertion sort is very efficient for small input sizes, but it has a bad\n  // worst case complexity. Thus, use native array sort for bigger values.\n  if (array.length > 2e2 || comparator) {\n    return array.sort(comparator)\n  }\n  for (let i = 1; i < array.length; i++) {\n    const currentValue = array[i]\n    let position = i\n    while (position !== 0 && array[position - 1] > currentValue) {\n      array[position] = array[position - 1]\n      position--\n    }\n    array[position] = currentValue\n  }\n  return array\n}\n\nconst typedArrayPrototypeGetSymbolToStringTag =\n  Object.getOwnPropertyDescriptor(\n    Object.getPrototypeOf(\n      Object.getPrototypeOf(\n        new Int8Array()\n      )\n    ),\n    Symbol.toStringTag\n  ).get\n\nfunction isTypedArrayWithEntries (value) {\n  return typedArrayPrototypeGetSymbolToStringTag.call(value) !== undefined && value.length !== 0\n}\n\nfunction stringifyTypedArray (array, separator, maximumBreadth) {\n  if (array.length < maximumBreadth) {\n    maximumBreadth = array.length\n  }\n  const whitespace = separator === ',' ? '' : ' '\n  let res = `\"0\":${whitespace}${array[0]}`\n  for (let i = 1; i < maximumBreadth; i++) {\n    res += `${separator}\"${i}\":${whitespace}${array[i]}`\n  }\n  return res\n}\n\nfunction getCircularValueOption (options) {\n  if (hasOwnProperty.call(options, 'circularValue')) {\n    const circularValue = options.circularValue\n    if (typeof circularValue === 'string') {\n      return `\"${circularValue}\"`\n    }\n    if (circularValue == null) {\n      return circularValue\n    }\n    if (circularValue === Error || circularValue === TypeError) {\n      return {\n        toString () {\n          throw new TypeError('Converting circular structure to JSON')\n        }\n      }\n    }\n    throw new TypeError('The \"circularValue\" argument must be of type string or the value null or undefined')\n  }\n  return '\"[Circular]\"'\n}\n\nfunction getDeterministicOption (options) {\n  let value\n  if (hasOwnProperty.call(options, 'deterministic')) {\n    value = options.deterministic\n    if (typeof value !== 'boolean' && typeof value !== 'function') {\n      throw new TypeError('The \"deterministic\" argument must be of type boolean or comparator function')\n    }\n  }\n  return value === undefined ? true : value\n}\n\nfunction getBooleanOption (options, key) {\n  let value\n  if (hasOwnProperty.call(options, key)) {\n    value = options[key]\n    if (typeof value !== 'boolean') {\n      throw new TypeError(`The \"${key}\" argument must be of type boolean`)\n    }\n  }\n  return value === undefined ? true : value\n}\n\nfunction getPositiveIntegerOption (options, key) {\n  let value\n  if (hasOwnProperty.call(options, key)) {\n    value = options[key]\n    if (typeof value !== 'number') {\n      throw new TypeError(`The \"${key}\" argument must be of type number`)\n    }\n    if (!Number.isInteger(value)) {\n      throw new TypeError(`The \"${key}\" argument must be an integer`)\n    }\n    if (value < 1) {\n      throw new RangeError(`The \"${key}\" argument must be >= 1`)\n    }\n  }\n  return value === undefined ? Infinity : value\n}\n\nfunction getItemCount (number) {\n  if (number === 1) {\n    return '1 item'\n  }\n  return `${number} items`\n}\n\nfunction getUniqueReplacerSet (replacerArray) {\n  const replacerSet = new Set()\n  for (const value of replacerArray) {\n    if (typeof value === 'string' || typeof value === 'number') {\n      replacerSet.add(String(value))\n    }\n  }\n  return replacerSet\n}\n\nfunction getStrictOption (options) {\n  if (hasOwnProperty.call(options, 'strict')) {\n    const value = options.strict\n    if (typeof value !== 'boolean') {\n      throw new TypeError('The \"strict\" argument must be of type boolean')\n    }\n    if (value) {\n      return (value) => {\n        let message = `Object can not safely be stringified. Received type ${typeof value}`\n        if (typeof value !== 'function') message += ` (${value.toString()})`\n        throw new Error(message)\n      }\n    }\n  }\n}\n\nfunction configure (options) {\n  options = { ...options }\n  const fail = getStrictOption(options)\n  if (fail) {\n    if (options.bigint === undefined) {\n      options.bigint = false\n    }\n    if (!('circularValue' in options)) {\n      options.circularValue = Error\n    }\n  }\n  const circularValue = getCircularValueOption(options)\n  const bigint = getBooleanOption(options, 'bigint')\n  const deterministic = getDeterministicOption(options)\n  const comparator = typeof deterministic === 'function' ? deterministic : undefined\n  const maximumDepth = getPositiveIntegerOption(options, 'maximumDepth')\n  const maximumBreadth = getPositiveIntegerOption(options, 'maximumBreadth')\n\n  function stringifyFnReplacer (key, parent, stack, replacer, spacer, indentation) {\n    let value = parent[key]\n\n    if (typeof value === 'object' && value !== null && typeof value.toJSON === 'function') {\n      value = value.toJSON(key)\n    }\n    value = replacer.call(parent, key, value)\n\n    switch (typeof value) {\n      case 'string':\n        return strEscape(value)\n      case 'object': {\n        if (value === null) {\n          return 'null'\n        }\n        if (stack.indexOf(value) !== -1) {\n          return circularValue\n        }\n\n        let res = ''\n        let join = ','\n        const originalIndentation = indentation\n\n        if (Array.isArray(value)) {\n          if (value.length === 0) {\n            return '[]'\n          }\n          if (maximumDepth < stack.length + 1) {\n            return '\"[Array]\"'\n          }\n          stack.push(value)\n          if (spacer !== '') {\n            indentation += spacer\n            res += `\\n${indentation}`\n            join = `,\\n${indentation}`\n          }\n          const maximumValuesToStringify = Math.min(value.length, maximumBreadth)\n          let i = 0\n          for (; i < maximumValuesToStringify - 1; i++) {\n            const tmp = stringifyFnReplacer(String(i), value, stack, replacer, spacer, indentation)\n            res += tmp !== undefined ? tmp : 'null'\n            res += join\n          }\n          const tmp = stringifyFnReplacer(String(i), value, stack, replacer, spacer, indentation)\n          res += tmp !== undefined ? tmp : 'null'\n          if (value.length - 1 > maximumBreadth) {\n            const removedKeys = value.length - maximumBreadth - 1\n            res += `${join}\"... ${getItemCount(removedKeys)} not stringified\"`\n          }\n          if (spacer !== '') {\n            res += `\\n${originalIndentation}`\n          }\n          stack.pop()\n          return `[${res}]`\n        }\n\n        let keys = Object.keys(value)\n        const keyLength = keys.length\n        if (keyLength === 0) {\n          return '{}'\n        }\n        if (maximumDepth < stack.length + 1) {\n          return '\"[Object]\"'\n        }\n        let whitespace = ''\n        let separator = ''\n        if (spacer !== '') {\n          indentation += spacer\n          join = `,\\n${indentation}`\n          whitespace = ' '\n        }\n        const maximumPropertiesToStringify = Math.min(keyLength, maximumBreadth)\n        if (deterministic && !isTypedArrayWithEntries(value)) {\n          keys = sort(keys, comparator)\n        }\n        stack.push(value)\n        for (let i = 0; i < maximumPropertiesToStringify; i++) {\n          const key = keys[i]\n          const tmp = stringifyFnReplacer(key, value, stack, replacer, spacer, indentation)\n          if (tmp !== undefined) {\n            res += `${separator}${strEscape(key)}:${whitespace}${tmp}`\n            separator = join\n          }\n        }\n        if (keyLength > maximumBreadth) {\n          const removedKeys = keyLength - maximumBreadth\n          res += `${separator}\"...\":${whitespace}\"${getItemCount(removedKeys)} not stringified\"`\n          separator = join\n        }\n        if (spacer !== '' && separator.length > 1) {\n          res = `\\n${indentation}${res}\\n${originalIndentation}`\n        }\n        stack.pop()\n        return `{${res}}`\n      }\n      case 'number':\n        return isFinite(value) ? String(value) : fail ? fail(value) : 'null'\n      case 'boolean':\n        return value === true ? 'true' : 'false'\n      case 'undefined':\n        return undefined\n      case 'bigint':\n        if (bigint) {\n          return String(value)\n        }\n        // fallthrough\n      default:\n        return fail ? fail(value) : undefined\n    }\n  }\n\n  function stringifyArrayReplacer (key, value, stack, replacer, spacer, indentation) {\n    if (typeof value === 'object' && value !== null && typeof value.toJSON === 'function') {\n      value = value.toJSON(key)\n    }\n\n    switch (typeof value) {\n      case 'string':\n        return strEscape(value)\n      case 'object': {\n        if (value === null) {\n          return 'null'\n        }\n        if (stack.indexOf(value) !== -1) {\n          return circularValue\n        }\n\n        const originalIndentation = indentation\n        let res = ''\n        let join = ','\n\n        if (Array.isArray(value)) {\n          if (value.length === 0) {\n            return '[]'\n          }\n          if (maximumDepth < stack.length + 1) {\n            return '\"[Array]\"'\n          }\n          stack.push(value)\n          if (spacer !== '') {\n            indentation += spacer\n            res += `\\n${indentation}`\n            join = `,\\n${indentation}`\n          }\n          const maximumValuesToStringify = Math.min(value.length, maximumBreadth)\n          let i = 0\n          for (; i < maximumValuesToStringify - 1; i++) {\n            const tmp = stringifyArrayReplacer(String(i), value[i], stack, replacer, spacer, indentation)\n            res += tmp !== undefined ? tmp : 'null'\n            res += join\n          }\n          const tmp = stringifyArrayReplacer(String(i), value[i], stack, replacer, spacer, indentation)\n          res += tmp !== undefined ? tmp : 'null'\n          if (value.length - 1 > maximumBreadth) {\n            const removedKeys = value.length - maximumBreadth - 1\n            res += `${join}\"... ${getItemCount(removedKeys)} not stringified\"`\n          }\n          if (spacer !== '') {\n            res += `\\n${originalIndentation}`\n          }\n          stack.pop()\n          return `[${res}]`\n        }\n        stack.push(value)\n        let whitespace = ''\n        if (spacer !== '') {\n          indentation += spacer\n          join = `,\\n${indentation}`\n          whitespace = ' '\n        }\n        let separator = ''\n        for (const key of replacer) {\n          const tmp = stringifyArrayReplacer(key, value[key], stack, replacer, spacer, indentation)\n          if (tmp !== undefined) {\n            res += `${separator}${strEscape(key)}:${whitespace}${tmp}`\n            separator = join\n          }\n        }\n        if (spacer !== '' && separator.length > 1) {\n          res = `\\n${indentation}${res}\\n${originalIndentation}`\n        }\n        stack.pop()\n        return `{${res}}`\n      }\n      case 'number':\n        return isFinite(value) ? String(value) : fail ? fail(value) : 'null'\n      case 'boolean':\n        return value === true ? 'true' : 'false'\n      case 'undefined':\n        return undefined\n      case 'bigint':\n        if (bigint) {\n          return String(value)\n        }\n        // fallthrough\n      default:\n        return fail ? fail(value) : undefined\n    }\n  }\n\n  function stringifyIndent (key, value, stack, spacer, indentation) {\n    switch (typeof value) {\n      case 'string':\n        return strEscape(value)\n      case 'object': {\n        if (value === null) {\n          return 'null'\n        }\n        if (typeof value.toJSON === 'function') {\n          value = value.toJSON(key)\n          // Prevent calling `toJSON` again.\n          if (typeof value !== 'object') {\n            return stringifyIndent(key, value, stack, spacer, indentation)\n          }\n          if (value === null) {\n            return 'null'\n          }\n        }\n        if (stack.indexOf(value) !== -1) {\n          return circularValue\n        }\n        const originalIndentation = indentation\n\n        if (Array.isArray(value)) {\n          if (value.length === 0) {\n            return '[]'\n          }\n          if (maximumDepth < stack.length + 1) {\n            return '\"[Array]\"'\n          }\n          stack.push(value)\n          indentation += spacer\n          let res = `\\n${indentation}`\n          const join = `,\\n${indentation}`\n          const maximumValuesToStringify = Math.min(value.length, maximumBreadth)\n          let i = 0\n          for (; i < maximumValuesToStringify - 1; i++) {\n            const tmp = stringifyIndent(String(i), value[i], stack, spacer, indentation)\n            res += tmp !== undefined ? tmp : 'null'\n            res += join\n          }\n          const tmp = stringifyIndent(String(i), value[i], stack, spacer, indentation)\n          res += tmp !== undefined ? tmp : 'null'\n          if (value.length - 1 > maximumBreadth) {\n            const removedKeys = value.length - maximumBreadth - 1\n            res += `${join}\"... ${getItemCount(removedKeys)} not stringified\"`\n          }\n          res += `\\n${originalIndentation}`\n          stack.pop()\n          return `[${res}]`\n        }\n\n        let keys = Object.keys(value)\n        const keyLength = keys.length\n        if (keyLength === 0) {\n          return '{}'\n        }\n        if (maximumDepth < stack.length + 1) {\n          return '\"[Object]\"'\n        }\n        indentation += spacer\n        const join = `,\\n${indentation}`\n        let res = ''\n        let separator = ''\n        let maximumPropertiesToStringify = Math.min(keyLength, maximumBreadth)\n        if (isTypedArrayWithEntries(value)) {\n          res += stringifyTypedArray(value, join, maximumBreadth)\n          keys = keys.slice(value.length)\n          maximumPropertiesToStringify -= value.length\n          separator = join\n        }\n        if (deterministic) {\n          keys = sort(keys, comparator)\n        }\n        stack.push(value)\n        for (let i = 0; i < maximumPropertiesToStringify; i++) {\n          const key = keys[i]\n          const tmp = stringifyIndent(key, value[key], stack, spacer, indentation)\n          if (tmp !== undefined) {\n            res += `${separator}${strEscape(key)}: ${tmp}`\n            separator = join\n          }\n        }\n        if (keyLength > maximumBreadth) {\n          const removedKeys = keyLength - maximumBreadth\n          res += `${separator}\"...\": \"${getItemCount(removedKeys)} not stringified\"`\n          separator = join\n        }\n        if (separator !== '') {\n          res = `\\n${indentation}${res}\\n${originalIndentation}`\n        }\n        stack.pop()\n        return `{${res}}`\n      }\n      case 'number':\n        return isFinite(value) ? String(value) : fail ? fail(value) : 'null'\n      case 'boolean':\n        return value === true ? 'true' : 'false'\n      case 'undefined':\n        return undefined\n      case 'bigint':\n        if (bigint) {\n          return String(value)\n        }\n        // fallthrough\n      default:\n        return fail ? fail(value) : undefined\n    }\n  }\n\n  function stringifySimple (key, value, stack) {\n    switch (typeof value) {\n      case 'string':\n        return strEscape(value)\n      case 'object': {\n        if (value === null) {\n          return 'null'\n        }\n        if (typeof value.toJSON === 'function') {\n          value = value.toJSON(key)\n          // Prevent calling `toJSON` again\n          if (typeof value !== 'object') {\n            return stringifySimple(key, value, stack)\n          }\n          if (value === null) {\n            return 'null'\n          }\n        }\n        if (stack.indexOf(value) !== -1) {\n          return circularValue\n        }\n\n        let res = ''\n\n        const hasLength = value.length !== undefined\n        if (hasLength && Array.isArray(value)) {\n          if (value.length === 0) {\n            return '[]'\n          }\n          if (maximumDepth < stack.length + 1) {\n            return '\"[Array]\"'\n          }\n          stack.push(value)\n          const maximumValuesToStringify = Math.min(value.length, maximumBreadth)\n          let i = 0\n          for (; i < maximumValuesToStringify - 1; i++) {\n            const tmp = stringifySimple(String(i), value[i], stack)\n            res += tmp !== undefined ? tmp : 'null'\n            res += ','\n          }\n          const tmp = stringifySimple(String(i), value[i], stack)\n          res += tmp !== undefined ? tmp : 'null'\n          if (value.length - 1 > maximumBreadth) {\n            const removedKeys = value.length - maximumBreadth - 1\n            res += `,\"... ${getItemCount(removedKeys)} not stringified\"`\n          }\n          stack.pop()\n          return `[${res}]`\n        }\n\n        let keys = Object.keys(value)\n        const keyLength = keys.length\n        if (keyLength === 0) {\n          return '{}'\n        }\n        if (maximumDepth < stack.length + 1) {\n          return '\"[Object]\"'\n        }\n        let separator = ''\n        let maximumPropertiesToStringify = Math.min(keyLength, maximumBreadth)\n        if (hasLength && isTypedArrayWithEntries(value)) {\n          res += stringifyTypedArray(value, ',', maximumBreadth)\n          keys = keys.slice(value.length)\n          maximumPropertiesToStringify -= value.length\n          separator = ','\n        }\n        if (deterministic) {\n          keys = sort(keys, comparator)\n        }\n        stack.push(value)\n        for (let i = 0; i < maximumPropertiesToStringify; i++) {\n          const key = keys[i]\n          const tmp = stringifySimple(key, value[key], stack)\n          if (tmp !== undefined) {\n            res += `${separator}${strEscape(key)}:${tmp}`\n            separator = ','\n          }\n        }\n        if (keyLength > maximumBreadth) {\n          const removedKeys = keyLength - maximumBreadth\n          res += `${separator}\"...\":\"${getItemCount(removedKeys)} not stringified\"`\n        }\n        stack.pop()\n        return `{${res}}`\n      }\n      case 'number':\n        return isFinite(value) ? String(value) : fail ? fail(value) : 'null'\n      case 'boolean':\n        return value === true ? 'true' : 'false'\n      case 'undefined':\n        return undefined\n      case 'bigint':\n        if (bigint) {\n          return String(value)\n        }\n        // fallthrough\n      default:\n        return fail ? fail(value) : undefined\n    }\n  }\n\n  function stringify (value, replacer, space) {\n    if (arguments.length > 1) {\n      let spacer = ''\n      if (typeof space === 'number') {\n        spacer = ' '.repeat(Math.min(space, 10))\n      } else if (typeof space === 'string') {\n        spacer = space.slice(0, 10)\n      }\n      if (replacer != null) {\n        if (typeof replacer === 'function') {\n          return stringifyFnReplacer('', { '': value }, [], replacer, spacer, '')\n        }\n        if (Array.isArray(replacer)) {\n          return stringifyArrayReplacer('', value, [], getUniqueReplacerSet(replacer), spacer, '')\n        }\n      }\n      if (spacer.length !== 0) {\n        return stringifyIndent('', value, [], spacer, '')\n      }\n    }\n    return stringifySimple('', value, [])\n  }\n\n  return stringify\n}\n","'use strict'\n\nconst metadata = Symbol.for('pino.metadata')\nconst { DEFAULT_LEVELS } = require('./constants')\n\nconst DEFAULT_INFO_LEVEL = DEFAULT_LEVELS.info\n\nfunction multistream (streamsArray, opts) {\n  streamsArray = streamsArray || []\n  opts = opts || { dedupe: false }\n\n  const streamLevels = Object.create(DEFAULT_LEVELS)\n  streamLevels.silent = Infinity\n  if (opts.levels && typeof opts.levels === 'object') {\n    Object.keys(opts.levels).forEach(i => {\n      streamLevels[i] = opts.levels[i]\n    })\n  }\n\n  const res = {\n    write,\n    add,\n    remove,\n    emit,\n    flushSync,\n    end,\n    minLevel: 0,\n    lastId: 0,\n    streams: [],\n    clone,\n    [metadata]: true,\n    streamLevels\n  }\n\n  if (Array.isArray(streamsArray)) {\n    streamsArray.forEach(add, res)\n  } else {\n    add.call(res, streamsArray)\n  }\n\n  // clean this object up\n  // or it will stay allocated forever\n  // as it is closed on the following closures\n  streamsArray = null\n\n  return res\n\n  // we can exit early because the streams are ordered by level\n  function write (data) {\n    let dest\n    const level = this.lastLevel\n    const { streams } = this\n    // for handling situation when several streams has the same level\n    let recordedLevel = 0\n    let stream\n\n    // if dedupe set to true we send logs to the stream with the highest level\n    // therefore, we have to change sorting order\n    for (let i = initLoopVar(streams.length, opts.dedupe); checkLoopVar(i, streams.length, opts.dedupe); i = adjustLoopVar(i, opts.dedupe)) {\n      dest = streams[i]\n      if (dest.level <= level) {\n        if (recordedLevel !== 0 && recordedLevel !== dest.level) {\n          break\n        }\n        stream = dest.stream\n        if (stream[metadata]) {\n          const { lastTime, lastMsg, lastObj, lastLogger } = this\n          stream.lastLevel = level\n          stream.lastTime = lastTime\n          stream.lastMsg = lastMsg\n          stream.lastObj = lastObj\n          stream.lastLogger = lastLogger\n        }\n        stream.write(data)\n        if (opts.dedupe) {\n          recordedLevel = dest.level\n        }\n      } else if (!opts.dedupe) {\n        break\n      }\n    }\n  }\n\n  function emit (...args) {\n    for (const { stream } of this.streams) {\n      if (typeof stream.emit === 'function') {\n        stream.emit(...args)\n      }\n    }\n  }\n\n  function flushSync () {\n    for (const { stream } of this.streams) {\n      if (typeof stream.flushSync === 'function') {\n        stream.flushSync()\n      }\n    }\n  }\n\n  function add (dest) {\n    if (!dest) {\n      return res\n    }\n\n    // Check that dest implements either StreamEntry or DestinationStream\n    const isStream = typeof dest.write === 'function' || dest.stream\n    const stream_ = dest.write ? dest : dest.stream\n    // This is necessary to provide a meaningful error message, otherwise it throws somewhere inside write()\n    if (!isStream) {\n      throw Error('stream object needs to implement either StreamEntry or DestinationStream interface')\n    }\n\n    const { streams, streamLevels } = this\n\n    let level\n    if (typeof dest.levelVal === 'number') {\n      level = dest.levelVal\n    } else if (typeof dest.level === 'string') {\n      level = streamLevels[dest.level]\n    } else if (typeof dest.level === 'number') {\n      level = dest.level\n    } else {\n      level = DEFAULT_INFO_LEVEL\n    }\n\n    const dest_ = {\n      stream: stream_,\n      level,\n      levelVal: undefined,\n      id: ++res.lastId\n    }\n\n    streams.unshift(dest_)\n    streams.sort(compareByLevel)\n\n    this.minLevel = streams[0].level\n\n    return res\n  }\n\n  function remove (id) {\n    const { streams } = this\n    const index = streams.findIndex(s => s.id === id)\n\n    if (index >= 0) {\n      streams.splice(index, 1)\n      streams.sort(compareByLevel)\n      this.minLevel = streams.length > 0 ? streams[0].level : -1\n    }\n\n    return res\n  }\n\n  function end () {\n    for (const { stream } of this.streams) {\n      if (typeof stream.flushSync === 'function') {\n        stream.flushSync()\n      }\n      stream.end()\n    }\n  }\n\n  function clone (level) {\n    const streams = new Array(this.streams.length)\n\n    for (let i = 0; i < streams.length; i++) {\n      streams[i] = {\n        level,\n        stream: this.streams[i].stream\n      }\n    }\n\n    return {\n      write,\n      add,\n      remove,\n      minLevel: level,\n      streams,\n      clone,\n      emit,\n      flushSync,\n      [metadata]: true\n    }\n  }\n}\n\nfunction compareByLevel (a, b) {\n  return a.level - b.level\n}\n\nfunction initLoopVar (length, dedupe) {\n  return dedupe ? length - 1 : 0\n}\n\nfunction adjustLoopVar (i, dedupe) {\n  return dedupe ? i - 1 : i + 1\n}\n\nfunction checkLoopVar (i, length, dedupe) {\n  return dedupe ? i >= 0 : i < length\n}\n\nmodule.exports = multistream\n","'use strict'\n\nconst os = require('node:os')\nconst stdSerializers = require('pino-std-serializers')\nconst caller = require('./lib/caller')\nconst redaction = require('./lib/redaction')\nconst time = require('./lib/time')\nconst proto = require('./lib/proto')\nconst symbols = require('./lib/symbols')\nconst { configure } = require('safe-stable-stringify')\nconst { assertDefaultLevelFound, mappings, genLsCache, genLevelComparison, assertLevelComparison } = require('./lib/levels')\nconst { DEFAULT_LEVELS, SORTING_ORDER } = require('./lib/constants')\nconst {\n  createArgsNormalizer,\n  asChindings,\n  buildSafeSonicBoom,\n  buildFormatters,\n  stringify,\n  normalizeDestFileDescriptor,\n  noop\n} = require('./lib/tools')\nconst { version } = require('./lib/meta')\nconst {\n  chindingsSym,\n  redactFmtSym,\n  serializersSym,\n  timeSym,\n  timeSliceIndexSym,\n  streamSym,\n  stringifySym,\n  stringifySafeSym,\n  stringifiersSym,\n  setLevelSym,\n  endSym,\n  formatOptsSym,\n  messageKeySym,\n  errorKeySym,\n  nestedKeySym,\n  mixinSym,\n  levelCompSym,\n  useOnlyCustomLevelsSym,\n  formattersSym,\n  hooksSym,\n  nestedKeyStrSym,\n  mixinMergeStrategySym,\n  msgPrefixSym\n} = symbols\nconst { epochTime, nullTime } = time\nconst { pid } = process\nconst hostname = os.hostname()\nconst defaultErrorSerializer = stdSerializers.err\nconst defaultOptions = {\n  level: 'info',\n  levelComparison: SORTING_ORDER.ASC,\n  levels: DEFAULT_LEVELS,\n  messageKey: 'msg',\n  errorKey: 'err',\n  nestedKey: null,\n  enabled: true,\n  base: { pid, hostname },\n  serializers: Object.assign(Object.create(null), {\n    err: defaultErrorSerializer\n  }),\n  formatters: Object.assign(Object.create(null), {\n    bindings (bindings) {\n      return bindings\n    },\n    level (label, number) {\n      return { level: number }\n    }\n  }),\n  hooks: {\n    logMethod: undefined,\n    streamWrite: undefined\n  },\n  timestamp: epochTime,\n  name: undefined,\n  redact: null,\n  customLevels: null,\n  useOnlyCustomLevels: false,\n  depthLimit: 5,\n  edgeLimit: 100\n}\n\nconst normalize = createArgsNormalizer(defaultOptions)\n\nconst serializers = Object.assign(Object.create(null), stdSerializers)\n\nfunction pino (...args) {\n  const instance = {}\n  const { opts, stream } = normalize(instance, caller(), ...args)\n\n  if (opts.level && typeof opts.level === 'string' && DEFAULT_LEVELS[opts.level.toLowerCase()] !== undefined) opts.level = opts.level.toLowerCase()\n\n  const {\n    redact,\n    crlf,\n    serializers,\n    timestamp,\n    messageKey,\n    errorKey,\n    nestedKey,\n    base,\n    name,\n    level,\n    customLevels,\n    levelComparison,\n    mixin,\n    mixinMergeStrategy,\n    useOnlyCustomLevels,\n    formatters,\n    hooks,\n    depthLimit,\n    edgeLimit,\n    onChild,\n    msgPrefix\n  } = opts\n\n  const stringifySafe = configure({\n    maximumDepth: depthLimit,\n    maximumBreadth: edgeLimit\n  })\n\n  const allFormatters = buildFormatters(\n    formatters.level,\n    formatters.bindings,\n    formatters.log\n  )\n\n  const stringifyFn = stringify.bind({\n    [stringifySafeSym]: stringifySafe\n  })\n  const stringifiers = redact ? redaction(redact, stringifyFn) : {}\n  const formatOpts = redact\n    ? { stringify: stringifiers[redactFmtSym] }\n    : { stringify: stringifyFn }\n  const end = '}' + (crlf ? '\\r\\n' : '\\n')\n  const coreChindings = asChindings.bind(null, {\n    [chindingsSym]: '',\n    [serializersSym]: serializers,\n    [stringifiersSym]: stringifiers,\n    [stringifySym]: stringify,\n    [stringifySafeSym]: stringifySafe,\n    [formattersSym]: allFormatters\n  })\n\n  let chindings = ''\n  if (base !== null) {\n    if (name === undefined) {\n      chindings = coreChindings(base)\n    } else {\n      chindings = coreChindings(Object.assign({}, base, { name }))\n    }\n  }\n\n  const time = (timestamp instanceof Function)\n    ? timestamp\n    : (timestamp ? epochTime : nullTime)\n  const timeSliceIndex = time().indexOf(':') + 1\n\n  if (useOnlyCustomLevels && !customLevels) throw Error('customLevels is required if useOnlyCustomLevels is set true')\n  if (mixin && typeof mixin !== 'function') throw Error(`Unknown mixin type \"${typeof mixin}\" - expected \"function\"`)\n  if (msgPrefix && typeof msgPrefix !== 'string') throw Error(`Unknown msgPrefix type \"${typeof msgPrefix}\" - expected \"string\"`)\n\n  assertDefaultLevelFound(level, customLevels, useOnlyCustomLevels)\n  const levels = mappings(customLevels, useOnlyCustomLevels)\n\n  if (typeof stream.emit === 'function') {\n    stream.emit('message', { code: 'PINO_CONFIG', config: { levels, messageKey, errorKey } })\n  }\n\n  assertLevelComparison(levelComparison)\n  const levelCompFunc = genLevelComparison(levelComparison)\n\n  Object.assign(instance, {\n    levels,\n    [levelCompSym]: levelCompFunc,\n    [useOnlyCustomLevelsSym]: useOnlyCustomLevels,\n    [streamSym]: stream,\n    [timeSym]: time,\n    [timeSliceIndexSym]: timeSliceIndex,\n    [stringifySym]: stringify,\n    [stringifySafeSym]: stringifySafe,\n    [stringifiersSym]: stringifiers,\n    [endSym]: end,\n    [formatOptsSym]: formatOpts,\n    [messageKeySym]: messageKey,\n    [errorKeySym]: errorKey,\n    [nestedKeySym]: nestedKey,\n    // protect against injection\n    [nestedKeyStrSym]: nestedKey ? `,${JSON.stringify(nestedKey)}:{` : '',\n    [serializersSym]: serializers,\n    [mixinSym]: mixin,\n    [mixinMergeStrategySym]: mixinMergeStrategy,\n    [chindingsSym]: chindings,\n    [formattersSym]: allFormatters,\n    [hooksSym]: hooks,\n    silent: noop,\n    onChild,\n    [msgPrefixSym]: msgPrefix\n  })\n\n  Object.setPrototypeOf(instance, proto())\n\n  genLsCache(instance)\n\n  instance[setLevelSym](level)\n\n  return instance\n}\n\nmodule.exports = pino\n\nmodule.exports.destination = (dest = process.stdout.fd) => {\n  if (typeof dest === 'object') {\n    dest.dest = normalizeDestFileDescriptor(dest.dest || process.stdout.fd)\n    return buildSafeSonicBoom(dest)\n  } else {\n    return buildSafeSonicBoom({ dest: normalizeDestFileDescriptor(dest), minLength: 0 })\n  }\n}\n\nmodule.exports.transport = require('./lib/transport')\nmodule.exports.multistream = require('./lib/multistream')\n\nmodule.exports.levels = mappings()\nmodule.exports.stdSerializers = serializers\nmodule.exports.stdTimeFunctions = Object.assign({}, time)\nmodule.exports.symbols = symbols\nmodule.exports.version = version\n\n// Enables default and name export with TypeScript and Babel\nmodule.exports.default = pino\nmodule.exports.pino = pino\n","import { AsyncLocalStorage } from \"node:async_hooks\";\n\nimport type { LogRecord } from \"../common/requestLogger.js\";\nimport { formatMessage, removeKeys } from \"./utils.js\";\n\nconst MAX_BUFFER_SIZE = 1000;\n\nconst originalStreamSym = Symbol.for(\"apitally.originalStream\");\nconst logLevelMap: Record<number, string> = {\n  10: \"trace\",\n  20: \"debug\",\n  30: \"info\",\n  40: \"warn\",\n  50: \"error\",\n  60: \"fatal\",\n};\n\nexport async function patchPinoLogger(\n  logger: any,\n  logsContext: AsyncLocalStorage<LogRecord[]>,\n) {\n  try {\n    const pino = await import(\"pino\");\n    if (!(pino.default.symbols.streamSym in logger)) {\n      return;\n    }\n    if (!(originalStreamSym in logger)) {\n      logger[originalStreamSym] = logger[pino.default.symbols.streamSym];\n    }\n\n    const originalStream = logger[originalStreamSym];\n    if (originalStream) {\n      const messageKey = logger[pino.default.symbols.messageKeySym];\n      const captureStream = new ApitallyLogCaptureStream(\n        logsContext,\n        messageKey,\n      );\n      logger[pino.default.symbols.streamSym] = pino.default.multistream(\n        [\n          { level: 0, stream: originalStream },\n          { level: 0, stream: captureStream },\n        ],\n        {\n          levels: logger.levels,\n        },\n      );\n    }\n  } catch {\n    // pino is not installed, silently ignore\n  }\n}\n\nfunction filterLogs(obj: any, messageKey: string) {\n  return obj[messageKey] !== \"request completed\";\n}\n\nclass ApitallyLogCaptureStream {\n  private logsContext: AsyncLocalStorage<LogRecord[]>;\n  private messageKey: string;\n\n  constructor(logsContext: AsyncLocalStorage<LogRecord[]>, messageKey: string) {\n    this.logsContext = logsContext;\n    this.messageKey = messageKey;\n  }\n\n  write(msg: string): void {\n    const logs = this.logsContext.getStore();\n    if (!logs || !msg || logs.length >= MAX_BUFFER_SIZE) {\n      return;\n    }\n\n    let obj: any;\n    try {\n      obj = JSON.parse(msg);\n    } catch (e) {\n      return;\n    }\n    if (\n      obj === null ||\n      typeof obj !== \"object\" ||\n      !filterLogs(obj, this.messageKey)\n    ) {\n      return;\n    }\n\n    try {\n      const message = obj[this.messageKey];\n      const rest = removeKeys(obj, [\n        \"hostname\",\n        \"level\",\n        this.messageKey,\n        \"pid\",\n        \"time\",\n        \"reqId\",\n        \"req\",\n        \"res\",\n      ]);\n      const formattedMessage = formatMessage(message, rest);\n      if (formattedMessage) {\n        logs.push({\n          timestamp: this.convertTime(obj.time),\n          level: logLevelMap[obj.level] || \"info\",\n          message: formattedMessage,\n        });\n      }\n    } catch (e) {\n      // ignore\n    }\n  }\n\n  private convertTime(time: any): number {\n    if (typeof time === \"number\" && !isNaN(time)) {\n      return time / 1000; // Convert milliseconds to seconds\n    }\n    return Date.now() / 1000; // Fallback to current time\n  }\n}\n","import { format } from \"node:util\";\n\nexport function formatMessage(message: any, ...args: any[]) {\n  return [message, ...args]\n    .map(formatArg)\n    .filter((arg) => arg !== \"\")\n    .join(\"\\n\");\n}\n\nexport function removeKeys(obj: any, keys: string[]) {\n  return Object.fromEntries(\n    Object.entries(obj).filter(([key]) => !keys.includes(key)),\n  );\n}\n\nfunction formatArg(arg: any) {\n  if (typeof arg === \"string\") {\n    return arg.trim();\n  }\n  if (arg instanceof Error) {\n    return format(arg).trim();\n  }\n  if (arg === undefined || arg === null || isEmptyObject(arg)) {\n    return \"\";\n  }\n  try {\n    return JSON.stringify(arg);\n  } catch {\n    return format(arg).trim();\n  }\n}\n\nfunction isEmptyObject(obj: any) {\n  return (\n    obj !== null &&\n    typeof obj === \"object\" &&\n    Object.getPrototypeOf(obj) === Object.prototype &&\n    Object.keys(obj).length === 0\n  );\n}\n"],"mappings":"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","names":["exports","module","isErrorLike","err","message","getErrorCause","cause","causeResult","undefined","_stackWithCauses","seen","stack","has","add","stackWithCauses","Set","_messageWithCauses","skip","skipIfVErrorStyleCause","messageWithCauses","exports","module","seen","Symbol","rawSymbol","pinoErrProto","Object","create","type","enumerable","writable","value","undefined","message","stack","aggregateErrors","raw","get","set","val","defineProperty","pinoErrorSymbols","exports","module","errSerializer","messageWithCauses","stackWithCauses","isErrorLike","require","pinoErrProto","pinoErrorSymbols","seen","toString","Object","prototype","err","undefined","_err","create","type","call","name","message","stack","Array","isArray","errors","aggregateErrors","map","key","val","hasOwnProperty","raw","exports","module","errWithCauseSerializer","isErrorLike","require","pinoErrProto","pinoErrorSymbols","seen","toString","Object","prototype","err","undefined","_err","create","type","call","name","message","stack","Array","isArray","errors","aggregateErrors","map","cause","hasOwnProperty","key","val","raw","exports","module","mapHttpRequest","reqSerializer","rawSymbol","Symbol","pinoReqProto","Object","create","id","enumerable","writable","value","method","url","query","params","headers","remoteAddress","remotePort","raw","get","set","val","defineProperty","req","connection","info","socket","_req","undefined","originalUrl","path","exports","module","mapHttpResponse","resSerializer","rawSymbol","Symbol","pinoResProto","Object","create","statusCode","enumerable","writable","value","headers","raw","get","set","val","defineProperty","res","_res","headersSent","getHeaders","_headers","exports","module","errSerializer","require","errWithCauseSerializer","reqSerializers","resSerializers","err","errWithCause","mapHttpRequest","mapHttpResponse","req","reqSerializer","res","resSerializer","wrapErrorSerializer","customSerializer","wrapErrSerializer","wrapRequestSerializer","wrappedReqSerializer","wrapResponseSerializer","wrappedResSerializer","exports","module","noOpPrepareStackTrace","_","stack","getCallers","originalPrepare","Error","prepareStackTrace","Array","isArray","undefined","entries","slice","fileNames","entry","push","getFileName","exports","module","validator","opts","ERR_PATHS_MUST_BE_STRINGS","ERR_INVALID_PATH","s","validate","paths","forEach","Error","test","expr","replace","Function","e","exports","module","exports","module","rx","require","parse","paths","wildcards","wcLen","secret","reduce","o","strPath","ix","path","match","map","p","replace","leadingBracket","substr","length","star","indexOf","before","slice","beforeStr","join","after","nested","push","val","undefined","precensored","circle","escPath","JSON","stringify","exports","module","rx","require","redactor","secret","serialize","wcLen","strict","isCensorFct","censorFctTakesPath","state","redact","Function","strictImpl","redactTmpl","dynamicRedactTmpl","resultTmpl","bind","restore","o","Object","keys","map","path","escPath","leadingBracket","arrPath","skip","delim","hops","match","exec","ix","index","input","push","substring","existence","p","join","length","circularDetection","reverse","JSON","stringify","censorArgs","hasWildcards","exports","module","groupRedact","groupRestore","nestedRedact","nestedRestore","keys","values","target","length","i","k","o","path","censor","isCensorFct","censorFctTakesPath","get","flat","Object","keysLength","pathLength","pathWithKey","undefined","Array","key","instructions","value","current","store","ns","specialSet","has","obj","prop","hasOwn","prototype","hasOwnProperty","call","afterPath","afterPathLen","lastPathIndex","originalKey","n","nv","ov","oov","wc","kIsWc","wcov","consecutive","level","depth","redactPathCurrent","tree","wcKeys","j","wck","node","iterateNthLevel","rv","restoreInstr","push","p","l","parent","children","child","exports","module","groupRestore","nestedRestore","require","restorer","compileRestore","restore","state","secret","wcLen","paths","Object","keys","resetters","resetTmpl","hasWildcards","Function","restoreTmpl","bind","map","path","circle","escPath","leadingBracket","delim","reset","clear","join","dynamicReset","length","exports","module","state","o","secret","censor","compileRestore","serialize","groupRedact","nestedRedact","wildcards","wcLen","builder","push","Object","assign","exports","module","validator","require","parse","redactor","restorer","groupRedact","nestedRedact","state","rx","validate","noop","o","restore","DEFAULT_CENSOR","fastRedact","opts","paths","Array","from","Set","serialize","JSON","stringify","remove","Error","censor","undefined","isCensorFct","censorFctTakesPath","length","wildcards","wcLen","secret","compileRestore","strict","exports","module","setLevelSym","Symbol","getLevelSym","levelValSym","levelCompSym","useLevelLabelsSym","useOnlyCustomLevelsSym","mixinSym","lsCacheSym","chindingsSym","asJsonSym","writeSym","redactFmtSym","timeSym","timeSliceIndexSym","streamSym","stringifySym","stringifySafeSym","stringifiersSym","endSym","formatOptsSym","messageKeySym","errorKeySym","nestedKeySym","nestedKeyStrSym","mixinMergeStrategySym","msgPrefixSym","wildcardFirstSym","serializersSym","for","formattersSym","hooksSym","needsMetadataGsym","exports","module","fastRedact","require","redactFmtSym","wildcardFirstSym","rx","validator","validate","ERR_PATHS_MUST_BE_STRINGS","ERR_INVALID_PATH","s","CENSOR","strict","redaction","opts","serialize","paths","censor","handle","shape","reduce","o","str","lastIndex","first","exec","next","ns","undefined","replace","index","nextPath","substr","length","push","Object","keys","forEach","k","result","topCensor","args","getOwnPropertySymbols","value","wrappedCensor","path","Array","isArray","remove","Error","exports","module","nullTime","epochTime","Date","now","unixTime","Math","round","isoTime","toISOString","exports","module","tryStringify","o","JSON","stringify","e","format","f","args","opts","ss","offset","len","length","objects","Array","index","join","argLen","str","a","lastPos","flen","i","charCodeAt","slice","Number","Math","floor","undefined","type","name","String","exports","module","SharedArrayBuffer","Atomics","sleep","ms","valid","Infinity","TypeError","RangeError","wait","nil","Number","Int32Array","target","Date","now","exports","module","fs","require","EventEmitter","inherits","path","sleep","assert","BUSY_WRITE_TIMEOUT","kEmptyBuffer","Buffer","allocUnsafe","MAX_WRITE","kContentModeBuffer","kContentModeUtf8","major","minor","process","versions","node","split","map","Number","kCopyBuffer","openFile","file","sonic","_opening","_writing","_asyncDrainScheduled","fileOpened","err","fd","_reopening","sync","nextTick","listenerCount","emit","reopening","destroyed","_len","minLength","_flushPending","_actualWrite","flags","append","mode","mkdir","mkdirSync","dirname","recursive","openSync","open","SonicBoom","opts","dest","maxLength","maxWrite","periodicFlush","retryEAGAIN","fsync","contentMode","_bufs","_lens","_ending","_hwm","Math","max","_periodicFlush","_periodicFlushTimer","undefined","writable","_fsync","fsWriteSync","fsWrite","_writingBuf","write","writeBuffer","flush","flushBuffer","flushSync","flushBufferSync","actualWriteBuffer","writeSync","release","actualWrite","Error","n","code","length","setTimeout","releasedBufObj","releaseWritingBuf","len","writingBuf","fsyncSync","reopen","actualClose","emitDrain","on","name","setInterval","unref","byteLength","from","subarray","toString","slice","hasListeners","mergeBuf","bufs","concat","data","push","lens","callFlushCallbackOnDrain","cb","onDrain","off","onError","once","error","call","prototype","close","end","unshift","buf","shift","shouldRetry","destroy","written","bind","clearInterval","closeWrapped","done","default","exports","module","refs","exit","beforeExit","functions","onExit","onBeforeExit","registry","ensureRegistry","undefined","FinalizationRegistry","clear","install","event","length","process","on","uninstall","removeListener","callRefs","ref","obj","deref","fn","index","indexOf","splice","_register","Error","WeakRef","register","push","registerBeforeExit","unregister","filter","_obj","exports","module","exports","module","MAX_TIMEOUT","wait","state","index","expected","timeout","done","max","Date","now","current","Atomics","load","prior","check","backoff","setTimeout","waitDiff","exports","module","WRITE_INDEX","READ_INDEX","exports","module","version","require","EventEmitter","Worker","join","pathToFileURL","wait","WRITE_INDEX","READ_INDEX","buffer","assert","kImpl","Symbol","MAX_STRING","constants","MAX_STRING_LENGTH","_a","FakeWeakRef","value","_value","deref","FakeFinalizationRegistry","register","unregister","FinalizationRegistry","process","env","NODE_V8_COVERAGE","global","WeakRef","registry","worker","exited","terminate","createWorker","stream","opts","filename","workerData","bundlerOverrides","globalThis","__bundlerPathsOverrides","toExecute","__dirname","workerOpts","trackUnmanagedFds","indexOf","href","dataBuf","stateBuf","$context","threadStreamVersion","on","onWorkerMessage","onWorkerExit","drain","sync","needDrain","emit","nextFlush","writeIndex","Atomics","load","state","leftover","data","length","buf","flushing","ending","end","nextTick","toWrite","slice","toWriteBytes","Buffer","byteLength","write","bind","flush","destroyed","store","destroy","Error","msg","undefined","code","ready","err","Array","isArray","args","name","emitWarning","off","ThreadStream","bufferSize","SharedArrayBuffer","Int32Array","from","ended","finished","errored","closed","message","transferList","postMessage","error","writeSync","setImmediate","cb","Infinity","res","flushSync","unref","ref","writable","writableEnded","writableFinished","writableNeedDrain","writableObjectMode","writableErrored","catch","then","current","notify","readIndex","spins","exports","module","createRequire","require","getCallers","join","isAbsolute","sep","sleep","onExit","ThreadStream","setupOnExit","stream","register","autoEnd","registerBeforeExit","flush","on","unregister","buildStream","filename","workerData","workerOpts","sync","onReady","process","removeListener","unref","closed","flushSync","end","ref","once","transport","fullOptions","pipeline","targets","levels","dedupe","worker","caller","options","callers","bundlerOverrides","globalThis","__bundlerPathsOverrides","target","Error","__dirname","filter","dest","map","fixTarget","pipelines","t","level","pinoWillSendConfig","origin","indexOf","filePath","context","cwd","resolve","err","exports","module","format","require","mapHttpRequest","mapHttpResponse","SonicBoom","onExit","lsCacheSym","chindingsSym","writeSym","serializersSym","formatOptsSym","endSym","stringifiersSym","stringifySym","stringifySafeSym","wildcardFirstSym","nestedKeySym","formattersSym","messageKeySym","errorKeySym","nestedKeyStrSym","msgPrefixSym","isMainThread","transport","noop","genLog","level","hook","LOG","hookWrappedLog","args","call","o","n","msg","method","headers","socket","setHeader","formatParams","length","shift","undefined","asString","str","result","last","found","point","l","JSON","stringify","i","charCodeAt","slice","asJson","obj","num","time","stringifySafe","stringifiers","end","chindings","serializers","formatters","messageKey","errorKey","data","value","log","wildcardStringifier","propStr","key","Object","prototype","hasOwnProperty","err","stringifier","Number","isFinite","strKey","msgStr","asChindings","instance","bindings","formatter","valid","hasBeenTampered","stream","write","buildSafeSonicBoom","opts","on","filterBrokenPipe","sync","register","autoEnd","unregister","code","flushSync","destroy","removeListener","emit","eventName","destroyed","flush","createArgsNormalizer","defaultOptions","normalizeArgs","caller","dest","Error","writable","_writableState","targets","customLevels","useOnlyCustomLevels","assign","levels","prettyPrint","enabled","onChild","process","stdout","fd","stringifySafeFn","_","buildFormatters","normalizeDestFileDescriptor","destination","exports","module","DEFAULT_LEVELS","trace","debug","info","warn","error","fatal","SORTING_ORDER","ASC","DESC","exports","module","lsCacheSym","levelValSym","useOnlyCustomLevelsSym","streamSym","formattersSym","hooksSym","levelCompSym","require","noop","genLog","DEFAULT_LEVELS","SORTING_ORDER","levelMethods","fatal","hook","logFatal","args","stream","call","flushSync","e","error","warn","info","debug","trace","nums","Object","keys","reduce","o","k","initialLsCache","Number","genLsCache","instance","formatter","level","labels","levels","cache","label","JSON","stringify","slice","isStandardLevel","useOnlyCustomLevels","setLevel","values","undefined","Error","preLevelVal","levelVal","useOnlyCustomLevelsVal","levelComparison","logMethod","key","emit","getLevel","isLevelEnabled","logLevel","logLevelVal","compareLevel","direction","current","expected","DESC","genLevelComparison","bind","mappings","customLevels","customNums","assign","create","prototype","Infinity","value","silent","assertDefaultLevelFound","defaultLevel","concat","map","includes","assertNoLevelCollisions","assertLevelComparison","exports","module","version","exports","module","EventEmitter","require","lsCacheSym","levelValSym","setLevelSym","getLevelSym","chindingsSym","parsedChindingsSym","mixinSym","asJsonSym","writeSym","mixinMergeStrategySym","timeSym","timeSliceIndexSym","streamSym","serializersSym","formattersSym","errorKeySym","messageKeySym","useOnlyCustomLevelsSym","needsMetadataGsym","redactFmtSym","stringifySym","formatOptsSym","stringifiersSym","msgPrefixSym","hooksSym","getLevel","setLevel","isLevelEnabled","mappings","initialLsCache","genLsCache","assertNoLevelCollisions","asChindings","asJson","buildFormatters","stringify","version","redaction","_a","constructor","Pino","prototype","child","bindings","setBindings","flush","level","lvl","levelVal","n","Error","msgPrefix","write","Object","setPrototypeOf","create","resetChildingsFormatter","options","serializers","formatters","instance","hasOwnProperty","k","parentSymbols","getOwnPropertySymbols","i","length","ks","bk","bindingsSymbols","bi","bks","chindings","log","levels","customLevels","redact","Array","isArray","stringifiers","formatOpts","childLevel","onChild","chindingsJson","substr","bindingsFromJson","JSON","parse","pid","hostname","newBindings","defaultMixinMergeStrategy","mergeObject","mixinObject","assign","_obj","msg","num","t","mixin","errorKey","messageKey","mixinMergeStrategy","obj","streamWriteHook","streamWrite","undefined","message","s","stream","lastLevel","lastObj","lastMsg","lastTime","slice","lastLogger","noop","cb","exports","module","hasOwnProperty","Object","prototype","stringify","configure","default","strEscapeSequencesRegExp","strEscape","str","length","test","JSON","sort","array","comparator","i","currentValue","position","typedArrayPrototypeGetSymbolToStringTag","getOwnPropertyDescriptor","getPrototypeOf","Int8Array","Symbol","toStringTag","get","isTypedArrayWithEntries","value","call","undefined","stringifyTypedArray","separator","maximumBreadth","whitespace","res","getCircularValueOption","options","circularValue","Error","TypeError","toString","getDeterministicOption","deterministic","getBooleanOption","key","getPositiveIntegerOption","Number","isInteger","RangeError","Infinity","getItemCount","number","getUniqueReplacerSet","replacerArray","replacerSet","Set","add","String","getStrictOption","strict","message","fail","bigint","maximumDepth","stringifyFnReplacer","parent","stack","replacer","spacer","indentation","toJSON","indexOf","join","originalIndentation","Array","isArray","push","maximumValuesToStringify","Math","min","tmp","removedKeys","pop","keys","keyLength","maximumPropertiesToStringify","isFinite","stringifyArrayReplacer","stringifyIndent","slice","stringifySimple","hasLength","space","arguments","repeat","exports","module","metadata","Symbol","for","DEFAULT_LEVELS","require","DEFAULT_INFO_LEVEL","info","multistream","streamsArray","opts","dedupe","streamLevels","Object","create","silent","Infinity","levels","keys","forEach","i","res","write","add","remove","emit","flushSync","end","minLevel","lastId","streams","clone","Array","isArray","call","data","dest","level","lastLevel","recordedLevel","stream","initLoopVar","length","checkLoopVar","adjustLoopVar","lastTime","lastMsg","lastObj","lastLogger","args","isStream","stream_","Error","levelVal","dest_","undefined","id","unshift","sort","compareByLevel","index","findIndex","s","splice","a","b","exports","module","os","require","stdSerializers","caller","redaction","time","proto","symbols","configure","assertDefaultLevelFound","mappings","genLsCache","genLevelComparison","assertLevelComparison","DEFAULT_LEVELS","SORTING_ORDER","createArgsNormalizer","asChindings","buildSafeSonicBoom","buildFormatters","stringify","normalizeDestFileDescriptor","noop","version","chindingsSym","redactFmtSym","serializersSym","timeSym","timeSliceIndexSym","streamSym","stringifySym","stringifySafeSym","stringifiersSym","setLevelSym","endSym","formatOptsSym","messageKeySym","errorKeySym","nestedKeySym","mixinSym","levelCompSym","useOnlyCustomLevelsSym","formattersSym","hooksSym","nestedKeyStrSym","mixinMergeStrategySym","msgPrefixSym","epochTime","nullTime","pid","process","hostname","defaultErrorSerializer","err","defaultOptions","level","levelComparison","ASC","levels","messageKey","errorKey","nestedKey","enabled","base","serializers","Object","assign","create","formatters","bindings","label","number","hooks","logMethod","undefined","streamWrite","timestamp","name","redact","customLevels","useOnlyCustomLevels","depthLimit","edgeLimit","normalize","pino","args","instance","opts","stream","toLowerCase","crlf","mixin","mixinMergeStrategy","onChild","msgPrefix","stringifySafe","maximumDepth","maximumBreadth","allFormatters","log","stringifyFn","bind","stringifiers","formatOpts","end","coreChindings","chindings","Function","timeSliceIndex","indexOf","Error","emit","code","config","levelCompFunc","JSON","silent","setPrototypeOf","destination","dest","stdout","fd","minLength","transport","multistream","stdTimeFunctions","default","formatMessage","message","args","map","formatArg","filter","arg","join","removeKeys","obj","keys","Object","fromEntries","entries","key","includes","trim","Error","format","undefined","isEmptyObject","JSON","stringify","getPrototypeOf","prototype","length","MAX_BUFFER_SIZE","originalStreamSym","Symbol","for","logLevelMap","patchPinoLogger","logger","logsContext","pino","default","symbols","streamSym","originalStream","messageKey","messageKeySym","captureStream","ApitallyLogCaptureStream","multistream","level","stream","levels","filterLogs","obj","write","msg","logs","getStore","length","JSON","parse","e","message","rest","removeKeys","formattedMessage","formatMessage","push","timestamp","convertTime","time","isNaN","Date","now"]}