summaryrefslogtreecommitdiff
path: root/node_modules/single-line-log/index.js
diff options
context:
space:
mode:
authorLinuxWizard42 <computerwizard@linuxmail.org>2022-10-12 22:54:37 +0300
committerLinuxWizard42 <computerwizard@linuxmail.org>2022-10-12 22:54:37 +0300
commit703e03aba33f234712206769f57717ba7d92d23d (patch)
tree0041f04ccb75bd5379c764e9fe42249fffe75fc3 /node_modules/single-line-log/index.js
parentab6e257e6e9d9a483d7e86f220d8b209a2cd7753 (diff)
downloadFlashRunner-703e03aba33f234712206769f57717ba7d92d23d.tar.gz
FlashRunner-703e03aba33f234712206769f57717ba7d92d23d.tar.zst
Added export_allowed file to make repository visible in cgit
Diffstat (limited to 'node_modules/single-line-log/index.js')
-rw-r--r--node_modules/single-line-log/index.js51
1 files changed, 51 insertions, 0 deletions
diff --git a/node_modules/single-line-log/index.js b/node_modules/single-line-log/index.js
new file mode 100644
index 0000000..c1201be
--- /dev/null
+++ b/node_modules/single-line-log/index.js
@@ -0,0 +1,51 @@
+var MOVE_LEFT = new Buffer('1b5b3130303044', 'hex').toString();
+var MOVE_UP = new Buffer('1b5b3141', 'hex').toString();
+var CLEAR_LINE = new Buffer('1b5b304b', 'hex').toString();
+var stringWidth = require('string-width');
+
+module.exports = function(stream) {
+ var write = stream.write;
+ var str;
+
+ stream.write = function(data) {
+ if (str && data !== str) str = null;
+ return write.apply(this, arguments);
+ };
+
+ if (stream === process.stderr || stream === process.stdout) {
+ process.on('exit', function() {
+ if (str !== null) stream.write('');
+ });
+ }
+
+ var prevLineCount = 0;
+ var log = function() {
+ str = '';
+ var nextStr = Array.prototype.join.call(arguments, ' ');
+
+ // Clear screen
+ for (var i=0; i<prevLineCount; i++) {
+ str += MOVE_LEFT + CLEAR_LINE + (i < prevLineCount-1 ? MOVE_UP : '');
+ }
+
+ // Actual log output
+ str += nextStr;
+ stream.write(str);
+
+ // How many lines to remove on next clear screen
+ var prevLines = nextStr.split('\n');
+ prevLineCount = 0;
+ for (var i=0; i < prevLines.length; i++) {
+ prevLineCount += Math.ceil(stringWidth(prevLines[i]) / stream.columns) || 1;
+ }
+ };
+
+ log.clear = function() {
+ stream.write('');
+ };
+
+ return log;
+};
+
+module.exports.stdout = module.exports(process.stdout);
+module.exports.stderr = module.exports(process.stderr);