diff --git a/lib/utils.js b/lib/utils.js index 8837f72..f41667d 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -1,8 +1,10 @@ 'use strict'; const isStream = require('is-stream'); -// TODO https://github.com/sindresorhus/is-observable/issues/1 -const isObservable = obj => Boolean(obj && typeof obj.subscribe === 'function' && obj.constructor.name === 'Observable'); +// RxJS@6 symbol (https://github.com/sindresorhus/is-observable/issues/1#issuecomment-387843191) +const symbolObservable = typeof Symbol === 'function' && Symbol.observable || '@@observable'; // eslint-disable-line no-mixed-operators + +const isObservable = obj => Boolean(obj && obj[symbolObservable] && obj === obj[symbolObservable]()) || require('is-observable')(obj); exports.isListr = obj => Boolean(obj && obj.setRenderer && obj.add && obj.run); exports.isObservable = obj => isObservable(obj); diff --git a/package.json b/package.json index 9c43031..bb53faf 100644 --- a/package.json +++ b/package.json @@ -42,6 +42,7 @@ "cli-truncate": "^0.2.1", "figures": "^1.7.0", "indent-string": "^2.1.0", + "is-observable": "^1.1.0", "is-promise": "^2.1.0", "is-stream": "^1.1.0", "listr-silent-renderer": "^1.1.1",