Server : nginx/1.20.1 System : Linux ccpf-production-2021 5.4.0-148-generic #165-Ubuntu SMP Tue Apr 18 08:53:12 UTC 2023 x86_64 User : forge ( 1000) PHP Version : 7.4.21 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, Directory : /usr/lib/node_modules/pm2/node_modules/needle/lib/ |
var iconv,
inherits = require('util').inherits,
stream = require('stream');
var regex = /(?:charset|encoding)\s*=\s*['"]? *([\w\-]+)/i;
inherits(StreamDecoder, stream.Transform);
function StreamDecoder(charset) {
if (!(this instanceof StreamDecoder))
return new StreamDecoder(charset);
stream.Transform.call(this, charset);
this.charset = charset;
this.parsed_chunk = false;
}
StreamDecoder.prototype._transform = function(chunk, encoding, done) {
var res, found;
// try get charset from chunk, just once
if (this.charset == 'iso-8859-1' && !this.parsed_chunk) {
this.parsed_chunk = true;
var matches = regex.exec(chunk.toString());
if (matches) {
found = matches[1].toLowerCase();
this.charset = found == 'utf-8' ? 'utf8' : found;
}
}
try {
res = iconv.decode(chunk, this.charset);
} catch(e) { // something went wrong, just return original chunk
res = chunk;
}
this.push(res);
done();
}
module.exports = function(charset) {
try {
if (!iconv) iconv = require('iconv-lite');
} catch(e) {
/* iconv not found */
}
if (iconv)
return new StreamDecoder(charset);
else
return new stream.PassThrough;
}