Skip to content

Commit f1270bf

Browse files
committed
Use async-exit-hook
1 parent cd1484f commit f1270bf

File tree

4 files changed

+65
-17
lines changed

4 files changed

+65
-17
lines changed

package.json

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
2-
"name": "log-update",
3-
"version": "2.0.0",
2+
"name": "log-update-async-hook",
3+
"version": "2.0.1",
44
"description": "Log by overwriting the previous output in the terminal. Useful for rendering progress bars, animations, etc.",
55
"license": "MIT",
66
"repository": "sindresorhus/log-update",
@@ -9,14 +9,12 @@
99
"email": "sindresorhus@gmail.com",
1010
"url": "sindresorhus.com"
1111
},
12-
"engines": {
13-
"node": ">=4"
14-
},
1512
"scripts": {
1613
"test": "xo && node test.js"
1714
},
15+
"main": "src/index.js",
1816
"files": [
19-
"index.js"
17+
"src"
2018
],
2119
"keywords": [
2220
"log",
@@ -38,7 +36,8 @@
3836
],
3937
"dependencies": {
4038
"ansi-escapes": "^2.0.0",
41-
"cli-cursor": "^2.0.0",
39+
"async-exit-hook": "^1.1.2",
40+
"onetime": "^2.0.1",
4241
"wrap-ansi": "^2.1.0"
4342
},
4443
"devDependencies": {

src/cli-cursor.js

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
'use strict';
2+
var restoreCursor = require('./restore-cursor');
3+
4+
var hidden = false;
5+
6+
exports.show = function (stream) {
7+
var s = stream || process.stderr;
8+
9+
if (!s.isTTY) {
10+
return;
11+
}
12+
13+
hidden = false;
14+
s.write('\u001b[?25h');
15+
};
16+
17+
exports.hide = function (stream) {
18+
var s = stream || process.stderr;
19+
20+
if (!s.isTTY) {
21+
return;
22+
}
23+
24+
restoreCursor();
25+
hidden = true;
26+
s.write('\u001b[?25l');
27+
};
28+
29+
exports.toggle = function (force, stream) {
30+
if (force !== undefined) {
31+
hidden = force;
32+
}
33+
34+
if (hidden) {
35+
exports.show(stream);
36+
} else {
37+
exports.hide(stream);
38+
}
39+
};

index.js renamed to src/index.js

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,32 @@
11
'use strict';
2-
const ansiEscapes = require('ansi-escapes');
3-
const cliCursor = require('cli-cursor');
4-
const wrapAnsi = require('wrap-ansi');
2+
var ansiEscapes = require('ansi-escapes');
3+
var wrapAnsi = require('wrap-ansi');
4+
var cliCursor = require('./cli-cursor');
55

6-
const main = stream => {
7-
let prevLineCount = 0;
86

9-
const render = function () {
7+
function main (stream) {
8+
var prevLineCount = 0;
9+
10+
var render = function () {
1011
cliCursor.hide();
11-
let out = [].join.call(arguments, ' ') + '\n';
12+
var out = [].join.call(arguments, ' ') + '\n';
1213
out = wrapAnsi(out, process.stdout.columns || 80, {wordWrap: false});
1314
stream.write(ansiEscapes.eraseLines(prevLineCount) + out);
1415
prevLineCount = out.split('\n').length;
1516
};
1617

17-
render.clear = () => {
18+
render.clear = function () {
1819
stream.write(ansiEscapes.eraseLines(prevLineCount));
1920
prevLineCount = 0;
2021
};
2122

22-
render.done = () => {
23+
render.done = function () {
2324
prevLineCount = 0;
2425
cliCursor.show();
2526
};
2627

2728
return render;
28-
};
29+
}
2930

3031
module.exports = main(process.stdout);
3132
module.exports.stderr = main(process.stderr);

src/restore-cursor.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
'use strict';
2+
var onetime = require('onetime');
3+
var exitHook = require('async-exit-hook');
4+
5+
module.exports = onetime(function () {
6+
exitHook(function () {
7+
process.stderr.write('\u001b[?25h');
8+
});
9+
});

0 commit comments

Comments
 (0)