Skip to content

Commit 30f2fe6

Browse files
committed
refactor: use const, let
BREAKING CHANGES: `const`, `let` not supported in node < 6
1 parent 3dc04d5 commit 30f2fe6

8 files changed

Lines changed: 66 additions & 73 deletions

File tree

README.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ A simple way to keep track of the speed of your readable streams.
1111
```js
1212
const StreamSpeed = require('streamspeed');
1313

14-
var rs = fs.createReadStream('somefile.avi');
15-
var ss = new StreamSpeed();
14+
let rs = fs.createReadStream('somefile.avi');
15+
let ss = new StreamSpeed();
1616
ss.add(rs);
1717

1818
// Listen for events emitted by streamspeed on the given stream.
@@ -24,7 +24,7 @@ ss.on('speed', (speed, avgSpeed) => {
2424
Keep track of even a group of streams easily.
2525

2626
```js
27-
var group = new Streamspeed();
27+
let group = new Streamspeed();
2828
group.add(stream1);
2929
group.add(stream2);
3030
group.add(stream3);
@@ -65,8 +65,8 @@ StreamSpeed.toHuman(1024 * 1024 * 20.5, 's') => 20.5MB/s
6565
```
6666

6767
### Event: 'speed'
68-
* `Number` - Speed at which streams in the group are being read.
69-
* `Number` - Average speed.
68+
* `number` - Speed at which streams in the group are being read.
69+
* `number` - Average speed.
7070

7171
Will be emitted after the second time a stream is read and only if there is a change in speed.
7272

lib/index.js

Lines changed: 18 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ module.exports = class StreamSpeed extends EventEmitter {
99
*
1010
* @constructor
1111
* @extends {EventEmitter}
12-
* @param {Number} per The time unit speed will be measured in.
12+
* @param {number} per The time unit speed will be measured in.
1313
*/
1414
constructor(per) {
1515
super();
@@ -24,8 +24,8 @@ module.exports = class StreamSpeed extends EventEmitter {
2424
* Updates the group with the latest change in speed.
2525
*
2626
* @param {Object} meta
27-
* @param {Number} speed
28-
* @param {Number} avg
27+
* @param {number} speed
28+
* @param {number} avg
2929
*/
3030
_update(meta, speed, avg) {
3131
meta.speed = speed;
@@ -62,38 +62,38 @@ module.exports = class StreamSpeed extends EventEmitter {
6262
/**
6363
* Add stream to group.
6464
*
65-
* @param {Stream} stream
65+
* @param {Readable} stream
6666
*/
6767
add(origstream) {
6868
// Check if stream is already in group.
6969
if (this._streams.some(m => m.stream === origstream)) {
7070
throw Error('Stream already in group');
7171
}
72-
73-
var onReadable = () => {
74-
var data = stream.read();
72+
73+
const onReadable = () => {
74+
const data = stream.read();
7575
if (data) {
7676
reader.update(data, onUpdate);
7777
}
7878
};
7979

80-
var cleanup = () => {
80+
const cleanup = () => {
8181
stream.removeListener('readable', onReadable);
8282
stream.removeListener('end', cleanup);
8383
origstream.removeListener('error', cleanup);
8484
this._streams.splice(this._streams.indexOf(meta), 1);
8585
};
8686

87-
var meta = {
87+
const meta = {
8888
stream : origstream,
8989
speed : 0,
9090
avg : 0,
9191
cleanup,
9292
};
9393
this._streams.push(meta);
94-
var reader = new Speedometer(this.per);
95-
var stream = origstream.pipe(new PassThrough());
96-
var onUpdate = this._update.bind(this, meta);
94+
const reader = new Speedometer(this.per);
95+
const stream = origstream.pipe(new PassThrough());
96+
const onUpdate = this._update.bind(this, meta);
9797

9898
stream.on('readable', onReadable);
9999
stream.on('end', cleanup);
@@ -108,14 +108,10 @@ module.exports = class StreamSpeed extends EventEmitter {
108108
*/
109109
remove(stream) {
110110
// Check if stream is in group.
111-
var meta;
112-
if (!this._streams.some(function(m) {
113-
meta = m;
114-
return m.stream === stream;
115-
})) {
111+
const meta = this._streams.find(m => m.stream === stream);
112+
if (!meta) {
116113
throw Error('Stream not found in group');
117114
}
118-
119115
meta.cleanup();
120116
}
121117

@@ -124,14 +120,14 @@ module.exports = class StreamSpeed extends EventEmitter {
124120
* Converts bytes to human readable unit.
125121
* Thank you Amir from StackOverflow.
126122
*
127-
* @param {Number} bytes
128-
* @return {String}
123+
* @param {number} bytes
124+
* @return {string}
129125
*/
130126
static toHuman(bytes, timeUnit) {
131-
var units = ' KMGTPEZYXWVU';
127+
const units = ' KMGTPEZYXWVU';
132128
if (bytes <= 0) { return '0'; }
133129
timeUnit = timeUnit ? '/' + timeUnit : '';
134-
var t2 = Math.min(Math.floor(Math.log(bytes) / Math.log(1024)), 12);
130+
const t2 = Math.min(Math.floor(Math.log(bytes) / Math.log(1024)), 12);
135131
return (Math.round(bytes * 100 / Math.pow(1024, t2)) / 100) +
136132
units.charAt(t2).replace(' ', '') + 'B' + timeUnit;
137133
}

lib/speedometer.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ module.exports = class Speedometer {
22
/**
33
* Helps count the number of bytes per data event in streams.
44
*
5-
* @param {Number} per
65
* @constructor
6+
* @param {number} per
77
*/
88
constructor(per) {
99
this.per = per;
@@ -18,11 +18,11 @@ module.exports = class Speedometer {
1818
/**
1919
* Called when new data arrives.
2020
*
21-
* @param {Buffer|String} data
21+
* @param {Buffer|string} data
2222
* @param {Function} callback
2323
*/
2424
update(data, callback) {
25-
var now = Date.now();
25+
const now = Date.now();
2626

2727
// Check if this is the first data event.
2828
if (this.lasttime === null) {
@@ -31,15 +31,15 @@ module.exports = class Speedometer {
3131
}
3232

3333
// Compare now to last time.
34-
var speed = Math.round((data.length / (now - this.lasttime)) *
34+
const speed = Math.round((data.length / (now - this.lasttime)) *
3535
this.per);
3636
this.lasttime = now;
3737

3838
// Get average speed.
3939
this.total += speed;
40-
var avg = Math.round(this.total / ++this.iteration);
40+
const avg = Math.round(this.total / ++this.iteration);
4141

42-
var change = this.speed !== speed || this.avg !== avg;
42+
const change = this.speed !== speed || this.avg !== avg;
4343
this.speed = speed;
4444
this.avg = avg;
4545

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
"sinon": "^6.0.0"
2828
},
2929
"engines": {
30-
"node": ">=4"
30+
"node": ">=6"
3131
},
3232
"license": "MIT"
3333
}

test/group-test.js

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,16 @@ const sinon = require('sinon');
55

66

77
describe('Create a group and write to it', () => {
8-
var group = new StreamSpeed();
9-
var s1 = new MockStream();
10-
var s2 = new MockStream();
11-
var s3 = new MockStream();
8+
const group = new StreamSpeed();
9+
const s1 = new MockStream();
10+
const s2 = new MockStream();
11+
const s3 = new MockStream();
1212

1313
group.add(s1);
1414
group.add(s2);
1515
group.add(s3);
1616

17-
var spy = sinon.spy();
17+
const spy = sinon.spy();
1818
group.on('speed', spy);
1919

2020
it('All streams added show up', () => {
@@ -30,11 +30,9 @@ describe('Create a group and write to it', () => {
3030
});
3131

3232
it('Should emit `speed` event once for each stream', (done) => {
33-
// read at 500 B/s on 2 streams, so 1000 B/s.
33+
// Read at 500 B/s on 2 streams, 1000 B/s in total.
3434
s1.interval(100, 6, 200, true, true);
3535
s2.interval(100, 6, 200, true);
36-
setTimeout(() => {
37-
}, 1200);
3836
s2.on('finish', () => {
3937
assert.ok(spy.firstCall.calledWith(500, 500));
4038
assert.ok(spy.secondCall.calledWith(1000, 1000));

test/mockstream.js

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
const PassThrough = require('stream').PassThrough;
22
const sinon = require('sinon');
33

4-
var clock;
4+
let clock;
55
before(() => { clock = sinon.useFakeTimers(); });
66
after(() => { clock.restore(); });
77

@@ -21,17 +21,17 @@ module.exports = class Mock extends PassThrough {
2121
/**
2222
* Runs the function run n times every interval.
2323
*
24-
* @param {Number} length
25-
* @param {Number} n
26-
* @param {Number} interval
27-
* @param {Boolean} end
28-
* @param {Boolean} skipTick
24+
* @param {number} length
25+
* @param {number} n
26+
* @param {number} interval
27+
* @param {boolean} end
28+
* @param {boolean} skipTick
2929
*/
3030
interval(length, n, interval, end, skipTick) {
31-
var callback = this.end.bind(this);
32-
var i = 0;
31+
const callback = this.end.bind(this);
32+
let i = 0;
3333

34-
var iid = setInterval(() => {
34+
const iid = setInterval(() => {
3535
this.write(Buffer.alloc(length));
3636
if (++i === n) {
3737
clearInterval(iid);

test/remove-test.js

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@ const sinon = require('sinon');
66

77

88
describe('Immediately remove a stream', () => {
9-
var ss = new StreamSpeed();
10-
var s = new PassThrough();
9+
const ss = new StreamSpeed();
10+
const s = new PassThrough();
1111
ss.add(s);
1212
ss.remove(s);
1313

1414
// Listen for things.
15-
var spy = sinon.spy();
15+
const spy = sinon.spy();
1616
s.on('speed', spy);
1717

1818
it('Does not emit any events', (done) => {
@@ -31,17 +31,16 @@ describe('Immediately remove a stream', () => {
3131

3232

3333
describe('Unwatch after several writes', () => {
34-
var ss = new StreamSpeed(1);
35-
var s = new MockStream();
34+
const ss = new StreamSpeed(1);
35+
const s = new MockStream();
3636
ss.add(s);
3737

38-
var spy = sinon.spy();
38+
const spy = sinon.spy();
3939
ss.on('speed', spy);
4040

4141
it('Emits no events after calling remove', (done) => {
4242
// Write at 1 bps for 0.5 seconds.
4343
s.interval(100, 5, 100, true);
44-
4544
s.on('finish', done);
4645
});
4746

test/single-test.js

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@ const sinon = require('sinon');
77

88
describe('Read from a stream', () => {
99
describe('with a unit', () => {
10-
var ss = new StreamSpeed(1);
11-
var rs = new MockStream();
10+
const ss = new StreamSpeed(1);
11+
const rs = new MockStream();
1212
ss.add(rs);
1313

14-
var spy = sinon.spy();
14+
const spy = sinon.spy();
1515
ss.on('speed', spy);
1616

1717
it('Emitted one speed event', (done) => {
@@ -32,11 +32,11 @@ describe('Read from a stream', () => {
3232
});
3333

3434
describe('with no unit', () => {
35-
var ss = new StreamSpeed();
36-
var rs = new MockStream();
35+
const ss = new StreamSpeed();
36+
const rs = new MockStream();
3737
ss.add(rs);
3838

39-
var spy = sinon.spy();
39+
const spy = sinon.spy();
4040
ss.on('speed', spy);
4141

4242
it('Emited one speed event', (done) => {
@@ -55,11 +55,11 @@ describe('Read from a stream', () => {
5555
});
5656

5757
describe('Written to at the rate of the unit', () => {
58-
var ss = new StreamSpeed(100);
59-
var rs = new MockStream();
58+
const ss = new StreamSpeed(100);
59+
const rs = new MockStream();
6060
ss.add(rs);
6161

62-
var spy = sinon.spy();
62+
const spy = sinon.spy();
6363
ss.on('speed', spy);
6464

6565
it('Speed and avg speed are constant', (done) => {
@@ -74,11 +74,11 @@ describe('Read from a stream', () => {
7474
});
7575

7676
describe('Read when stream speed is sporadic', () => {
77-
var ss = new StreamSpeed();
78-
var rs = new MockStream();
77+
const ss = new StreamSpeed();
78+
const rs = new MockStream();
7979
ss.add(rs);
8080

81-
var spy = sinon.spy();
81+
const spy = sinon.spy();
8282
ss.on('speed', spy);
8383

8484
it('Speed and avg speed changes', () => {
@@ -95,11 +95,11 @@ describe('Read when stream speed is sporadic', () => {
9595

9696
describe('Stream being monitored has an error', () => {
9797
it('Stream gets removed', () => {
98-
var ss = new StreamSpeed();
99-
var rs = new PassThrough();
98+
const ss = new StreamSpeed();
99+
const rs = new PassThrough();
100100
rs.on('error', () => {});
101101
ss.add(rs);
102-
rs.emit('error', new Error('my error'));
102+
rs.emit('error', Error('my error'));
103103
assert.equal(ss.getStreams().length, 0);
104104
});
105105
});

0 commit comments

Comments
 (0)