diff --git a/snippets/isStream.md b/snippets/isStream.md new file mode 100644 index 000000000..bce9ea22a --- /dev/null +++ b/snippets/isStream.md @@ -0,0 +1,14 @@ +### isStream + +Checks if the given argument is a stream. + +Check if the value is different from `null`, use `typeof` to check if a value is of type `object` and the `pipe` property is of type `function`. + +```js +const isStream = val => val !== null && typeof val === 'object' && typeof val.pipe === 'function'; +``` + +```js +const fs = require('fs'); +isStream(fs.createReadStream('test.txt')); // true +``` diff --git a/tag_database b/tag_database index 41f8e4564..94f6f2a88 100644 --- a/tag_database +++ b/tag_database @@ -154,6 +154,7 @@ isPrimitive:type,function,array,string,intermediate isPromiseLike:type,function,promise,intermediate isSameDate:date,utility,beginner isSorted:array,intermediate +isStream:type,stream,intermediate isString:type,string,beginner isSymbol:type,beginner isTravisCI:node,intermediate diff --git a/test/isStream/isStream.js b/test/isStream/isStream.js new file mode 100644 index 000000000..cbdd9bd61 --- /dev/null +++ b/test/isStream/isStream.js @@ -0,0 +1,2 @@ +const isStream = val => val !== null && typeof val === 'object' && typeof val.pipe === 'function'; +module.exports = isStream; diff --git a/test/isStream/isStream.test.js b/test/isStream/isStream.test.js new file mode 100644 index 000000000..07dd965b1 --- /dev/null +++ b/test/isStream/isStream.test.js @@ -0,0 +1,13 @@ +const expect = require('expect'); +const isStream = require('./isStream.js'); +const fs = require('fs'); + +test('isStream is a Function', () => { + expect(isStream).toBeInstanceOf(Function); +}); +test('isStream returns true for streams', () => { + expect(isStream(fs.createReadStream('isStream.js'))).toBeTruthy(); +}); +test('isStream returns false for non-streams', () => { + expect(isStream({})).toBeFalsy(); +});