import { Transform } from 'node:stream'; export default class LastNewline extends Transform { constructor() { super(); this.lastByte = false; } /** @internal */ _transform(chunk, encoding, done) { if (chunk.length) { this.lastByte = chunk[chunk.length - 1]; } this.push(chunk); done(); } /** @internal */ _flush(done) { if (this.lastByte === 0x0a) { return done(); } if (this.lastByte === 0x0d) { this.push(Buffer.from('\n')); return done(); } this.push(Buffer.from('\r\n')); return done(); } }