Skip to content

Commit 3c18247

Browse files
authored
fix: preserve third-party output when log-update is active (#2)
* fix: preserve third-party output when log-update is active * test: add a test of some sort
1 parent 06843ec commit 3c18247

File tree

3 files changed

+37
-8
lines changed

3 files changed

+37
-8
lines changed

package.json

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,20 @@
11
{
22
"name": "log-update-async-hook",
3-
"version": "2.0.2",
3+
"version": "2.0.3",
44
"description": "log-update fork that uses async-exit-hook internally",
55
"license": "MIT",
66
"repository": "AndreyBelym/log-update-async-hook",
77
"author": {
88
"name": "Andrey Belym",
99
"email": "belym.a.2105@gmail.com"
1010
},
11-
"contributors": [{
12-
"name": "Sindre Sorhus",
13-
"email": "sindresorhus@gmail.com",
14-
"url": "sindresorhus.com"
15-
}],
11+
"contributors": [
12+
{
13+
"name": "Sindre Sorhus",
14+
"email": "sindresorhus@gmail.com",
15+
"url": "sindresorhus.com"
16+
}
17+
],
1618
"scripts": {
1719
"test": "node test.js"
1820
},

src/index.js

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,21 +7,42 @@ var cliCursor = require('./cli-cursor');
77
function main (stream) {
88
var prevLineCount = 0;
99

10+
var streamWrite = stream.write;
11+
12+
var overridenWrite = function (...args) {
13+
if (prevLineCount)
14+
render.clear();
15+
16+
return streamWrite.apply(this, args);
17+
};
18+
1019
var render = function () {
1120
cliCursor.hide();
21+
22+
if (stream.write !== overridenWrite) {
23+
streamWrite = stream.write;
24+
stream.write = overridenWrite
25+
}
26+
1227
var out = [].join.call(arguments, ' ') + '\n';
28+
1329
out = wrapAnsi(out, process.stdout.columns || 80, {wordWrap: false});
14-
stream.write(ansiEscapes.eraseLines(prevLineCount) + out);
30+
31+
streamWrite.call(stream, ansiEscapes.eraseLines(prevLineCount) + out);
32+
1533
prevLineCount = out.split('\n').length;
1634
};
1735

1836
render.clear = function () {
19-
stream.write(ansiEscapes.eraseLines(prevLineCount));
37+
streamWrite.call(stream, ansiEscapes.eraseLines(prevLineCount));
38+
2039
prevLineCount = 0;
2140
};
2241

2342
render.done = function () {
2443
prevLineCount = 0;
44+
stream.write = streamWrite;
45+
2546
cliCursor.show();
2647
};
2748

test.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,12 @@ const int = setInterval(() => {
1717
}, 100);
1818

1919
setTimeout(logUpdate.done, 1000);
20+
21+
setTimeout(() => {
22+
console.log('some log');
23+
console.error('some error');
24+
}, 2000);
25+
2026
setTimeout(logUpdate.done, 3000);
2127

2228
setTimeout(() => {

0 commit comments

Comments
 (0)