transgate
Version:
Agent-based task flow framework
36 lines (35 loc) • 1.06 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const readline_1 = __importDefault(require("readline"));
const buffer_1 = require("./buffer");
/**
* Readline stream Gate for Input
*/
class ReadLineStreamGate {
/**
* @param {stream.Readable} readStream - readable stream
*/
constructor(readStream) {
this._buffer = new buffer_1.ItemBuffer();
readline_1.default.createInterface({
input: readStream,
crlfDelay: Infinity,
})
.on('line', line => {
this._buffer.write(this._parse(line));
})
.on('close', () => {
this._buffer.write(null);
});
}
/**
* @return {Promise<object>} - A promise that resolves the item when a line can be read
*/
receive() {
return this._buffer.read();
}
}
exports.ReadLineStreamGate = ReadLineStreamGate;