diff --git a/package.json b/package.json
index 40dd260..c7b2983 100644
--- a/package.json
+++ b/package.json
@@ -43,9 +43,6 @@
"verify",
"compare"
],
- "dependencies": {
- "symbol-observable": "^1.2.0"
- },
"devDependencies": {
"@sindresorhus/tsconfig": "^0.1.0",
"@types/jsdom": "^11.12.0",
diff --git a/source/index.ts b/source/index.ts
index 31fdc6d..babe375 100644
--- a/source/index.ts
+++ b/source/index.ts
@@ -2,7 +2,6 @@
///
///
///
-import symbolObservable from 'symbol-observable';
import {URL} from 'url';
type TypedArray = Int8Array | Uint8Array | Uint8ClampedArray | Int16Array | Uint16Array | Int32Array | Uint32Array | Float32Array | Float64Array;
@@ -278,7 +277,22 @@ namespace is { // tslint:disable-line:no-namespace
export const domElement = (value: unknown): value is DomElement => object(value) && (value as DomElement).nodeType === NODE_TYPE_ELEMENT && string((value as DomElement).nodeName) &&
!plainObject(value) && DOM_PROPERTIES_TO_CHECK.every(property => property in (value as DomElement));
- export const observable = (value: unknown) => Boolean(value && (value as any)[symbolObservable] && value === (value as any)[symbolObservable]());
+ export const observable = (value: unknown) => {
+ if (!value) {
+ return false;
+ }
+
+ if ((value as any)[Symbol.observable] && value === (value as any)[Symbol.observable]()) {
+ return true;
+ }
+
+ if ((value as any)['@@observable'] && value === (value as any)['@@observable']()) {
+ return true;
+ }
+
+ return false;
+ };
+
export const nodeStream = (value: unknown): value is NodeStream => !nullOrUndefined(value) && isObject(value) as unknown && function_((value as NodeStream).pipe) && !observable(value);
export const infinite = (value: unknown) => value === Infinity || value === -Infinity;
diff --git a/source/tests/test.ts b/source/tests/test.ts
index 15bc9bf..cc4353e 100644
--- a/source/tests/test.ts
+++ b/source/tests/test.ts
@@ -345,6 +345,14 @@ const types = new Map([
document.createDocumentFragment()
]
}],
+ ['observable', {
+ is: is.observable,
+ fixtures: [
+ new Observable(),
+ new Subject(),
+ new ZenObservable(() => {}) // tslint:disable-line:no-empty
+ ]
+ }],
['nodeStream', {
is: is.nodeStream,
fixtures: [
@@ -359,14 +367,6 @@ const types = new Map([
new Stream.Writable()
]
}],
- ['observable', {
- is: is.observable,
- fixtures: [
- new Observable(),
- new Subject(),
- new ZenObservable(() => {}) // tslint:disable-line:no-empty
- ]
- }],
['infinite', {
is: is.infinite,
fixtures: [
@@ -761,6 +761,10 @@ test('is.domElement', t => {
t.false(is.domElement({nodeType: 1, nodeName: 'div'}));
});
+test('is.observable', t => {
+ testType(t, 'observable');
+});
+
test('is.nodeStream', t => {
testType(t, 'nodeStream');
});