parent
9df6f4ebe9
commit
e872262ac8
3 changed files with 28 additions and 13 deletions
|
|
@ -43,9 +43,6 @@
|
||||||
"verify",
|
"verify",
|
||||||
"compare"
|
"compare"
|
||||||
],
|
],
|
||||||
"dependencies": {
|
|
||||||
"symbol-observable": "^1.2.0"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@sindresorhus/tsconfig": "^0.1.0",
|
"@sindresorhus/tsconfig": "^0.1.0",
|
||||||
"@types/jsdom": "^11.12.0",
|
"@types/jsdom": "^11.12.0",
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,6 @@
|
||||||
/// <reference lib="es2017.sharedmemory"/>
|
/// <reference lib="es2017.sharedmemory"/>
|
||||||
/// <reference lib="esnext.asynciterable"/>
|
/// <reference lib="esnext.asynciterable"/>
|
||||||
/// <reference lib="dom"/>
|
/// <reference lib="dom"/>
|
||||||
import symbolObservable from 'symbol-observable';
|
|
||||||
|
|
||||||
type TypedArray = Int8Array | Uint8Array | Uint8ClampedArray | Int16Array | Uint16Array | Int32Array | Uint32Array | Float32Array | Float64Array;
|
type TypedArray = Int8Array | Uint8Array | Uint8ClampedArray | Int16Array | Uint16Array | Int32Array | Uint32Array | Float32Array | Float64Array;
|
||||||
type Primitive = null | undefined | string | number | boolean | Symbol;
|
type Primitive = null | undefined | string | number | boolean | Symbol;
|
||||||
|
|
@ -264,7 +263,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) &&
|
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));
|
!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 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;
|
export const infinite = (value: unknown) => value === Infinity || value === -Infinity;
|
||||||
|
|
|
||||||
|
|
@ -345,6 +345,14 @@ const types = new Map<string, Test>([
|
||||||
document.createDocumentFragment()
|
document.createDocumentFragment()
|
||||||
]
|
]
|
||||||
}],
|
}],
|
||||||
|
['observable', {
|
||||||
|
is: is.observable,
|
||||||
|
fixtures: [
|
||||||
|
new Observable(),
|
||||||
|
new Subject(),
|
||||||
|
new ZenObservable(() => {}) // tslint:disable-line:no-empty
|
||||||
|
]
|
||||||
|
}],
|
||||||
['nodeStream', {
|
['nodeStream', {
|
||||||
is: is.nodeStream,
|
is: is.nodeStream,
|
||||||
fixtures: [
|
fixtures: [
|
||||||
|
|
@ -359,14 +367,6 @@ const types = new Map<string, Test>([
|
||||||
new Stream.Writable()
|
new Stream.Writable()
|
||||||
]
|
]
|
||||||
}],
|
}],
|
||||||
['observable', {
|
|
||||||
is: is.observable,
|
|
||||||
fixtures: [
|
|
||||||
new Observable(),
|
|
||||||
new Subject(),
|
|
||||||
new ZenObservable(() => {}) // tslint:disable-line:no-empty
|
|
||||||
]
|
|
||||||
}],
|
|
||||||
['infinite', {
|
['infinite', {
|
||||||
is: is.infinite,
|
is: is.infinite,
|
||||||
fixtures: [
|
fixtures: [
|
||||||
|
|
@ -751,6 +751,10 @@ test('is.domElement', t => {
|
||||||
t.false(is.domElement({nodeType: 1, nodeName: 'div'}));
|
t.false(is.domElement({nodeType: 1, nodeName: 'div'}));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('is.observable', t => {
|
||||||
|
testType(t, 'observable');
|
||||||
|
});
|
||||||
|
|
||||||
test('is.nodeStream', t => {
|
test('is.nodeStream', t => {
|
||||||
testType(t, 'nodeStream');
|
testType(t, 'nodeStream');
|
||||||
});
|
});
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue