@beenotung/tslib
Version:
utils library in Typescript
51 lines (50 loc) • 1.65 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ProgressCli = void 0;
class ProgressCli {
lastMessageLength = 0;
writeStream;
replaceChar;
constructor(options = {}) {
this.writeStream = options.out || process.stderr;
this.replaceChar = options.replaceChar || ' ';
}
write(message, mode) {
this.writeStream.write(message);
if (mode != 'do-not-replace') {
const index = message.lastIndexOf('\n');
if (index == -1) {
this.lastMessageLength += message.length;
}
else {
this.lastMessageLength = message.length - index;
}
}
}
writeln(message) {
this.writeStream.write(message + '\n');
this.lastMessageLength = 0;
}
update(message) {
const { writeStream, lastMessageLength } = this;
const newMessageLength = message.length;
if (writeStream.moveCursor) {
writeStream.moveCursor(-lastMessageLength, 0);
writeStream.write(message);
const excessMessageLength = lastMessageLength - newMessageLength;
if (excessMessageLength > 0) {
writeStream.write(this.replaceChar.repeat(excessMessageLength));
writeStream.moveCursor(-excessMessageLength, 0);
}
}
else {
writeStream.write('\n' + message);
}
this.lastMessageLength = newMessageLength;
}
nextLine() {
this.writeStream.write('\n');
this.lastMessageLength = 0;
}
}
exports.ProgressCli = ProgressCli;