23 lines
579 B
TypeScript

import { UTF8Splitter } from 'tabby-core'
import { SessionMiddleware } from '../api/middleware'
/**
* Ensures that the session output is chunked at UTF8 character boundaries.
*/
export class UTF8SplitterMiddleware extends SessionMiddleware {
private decoder = new UTF8Splitter()
feedFromSession (data: Buffer): void {
super.feedFromSession(this.decoder.write(data))
}
close (): void {
const remainder = this.decoder.flush()
if (remainder.length) {
super.feedFromSession(remainder)
}
super.close()
}
}