Files
FrenoCorp/node_modules/stream-json/utils/Utf8Stream.js
Michael Freno 7c684a42cc FRE-600: Fix code review blockers
- Consolidated duplicate UndoManagers to single instance
- Fixed connection promise to only resolve on 'connected' status
- Fixed WebSocketProvider import (WebsocketProvider)
- Added proper doc.destroy() cleanup
- Renamed isPresenceInitialized property to avoid conflict

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-25 00:08:01 -04:00

54 lines
1.2 KiB
JavaScript

'use strict';
const {Transform} = require('stream');
const {StringDecoder} = require('string_decoder');
class Utf8Stream extends Transform {
constructor(options) {
super(Object.assign({}, options, {writableObjectMode: false}));
this._buffer = '';
}
_transform(chunk, encoding, callback) {
if (typeof chunk == 'string') {
this._transform = this._transformString;
} else {
this._stringDecoder = new StringDecoder();
this._transform = this._transformBuffer;
}
this._transform(chunk, encoding, callback);
}
_transformBuffer(chunk, _, callback) {
this._buffer += this._stringDecoder.write(chunk);
this._processBuffer(callback);
}
_transformString(chunk, _, callback) {
this._buffer += chunk.toString();
this._processBuffer(callback);
}
_processBuffer(callback) {
if (this._buffer) {
this.push(this._buffer, 'utf8');
this._buffer = '';
}
callback(null);
}
_flushInput() {
// meant to be called from _flush()
if (this._stringDecoder) {
this._buffer += this._stringDecoder.end();
}
}
_flush(callback) {
this._flushInput();
this._processBuffer(callback);
}
}
module.exports = Utf8Stream;