ÿØÿà JFIF H H ÿÛ C GIF89;
| System: Linux srv913213 5.15.0-190-generic #200-Ubuntu SMP Fri Aug 7 15:06:04 UTC 2026 x86_64 Current Path : /var/www/talentgenesis_admin_backend/node_modules/exceljs/lib/csv/ |
| Current File : /var/www/talentgenesis_admin_backend/node_modules/exceljs/lib/csv/line-buffer.js |
const {EventEmitter} = require('events');
class LineBuffer extends EventEmitter {
constructor(options) {
super();
this.encoding = options.encoding;
this.buffer = null;
// part of cork/uncork
this.corked = false;
this.queue = [];
}
// Events:
// line: here is a line
// done: all lines emitted
write(chunk) {
// find line or lines in chunk and emit them if not corked
// or queue them if corked
const data = this.buffer ? this.buffer + chunk : chunk;
const lines = data.split(/\r?\n/g);
// save the last line
this.buffer = lines.pop();
lines.forEach(function(line) {
if (this.corked) {
this.queue.push(line);
} else {
this.emit('line', line);
}
});
return !this.corked;
}
cork() {
this.corked = true;
}
uncork() {
this.corked = false;
this._flush();
// tell the source I'm ready again
this.emit('drain');
}
setDefaultEncoding() {
// ?
}
end() {
if (this.buffer) {
this.emit('line', this.buffer);
this.buffer = null;
}
this.emit('done');
}
_flush() {
if (!this.corked) {
this.queue.forEach(line => {
this.emit('line', line);
});
this.queue = [];
}
}
}
module.exports = LineBuffer;