Add is.asyncIterable
This commit is contained in:
parent
c84c2cbeca
commit
77a86c0fe3
3 changed files with 20 additions and 1 deletions
|
|
@ -136,6 +136,7 @@ namespace is { // tslint:disable-line:no-namespace
|
||||||
export const nullOrUndefined = (value: any): value is null | undefined => null_(value) || undefined(value);
|
export const nullOrUndefined = (value: any): value is null | undefined => null_(value) || undefined(value);
|
||||||
export const object = (value: any): value is object => !nullOrUndefined(value) && (function_(value) || isObject(value));
|
export const object = (value: any): value is object => !nullOrUndefined(value) && (function_(value) || isObject(value));
|
||||||
export const iterable = (value: any): value is IterableIterator<any> => !nullOrUndefined(value) && function_(value[Symbol.iterator]);
|
export const iterable = (value: any): value is IterableIterator<any> => !nullOrUndefined(value) && function_(value[Symbol.iterator]);
|
||||||
|
export const asyncIterable = (value: any): value is AsyncIterableIterator<any> => !nullOrUndefined(Symbol.asyncIterator) && typeof value[Symbol.asyncIterator] === 'function';
|
||||||
export const generator = (value: any): value is Generator => iterable(value) && function_(value.next) && function_(value.throw);
|
export const generator = (value: any): value is Generator => iterable(value) && function_(value.next) && function_(value.throw);
|
||||||
|
|
||||||
export const nativePromise = (value: any): value is Promise<any> =>
|
export const nativePromise = (value: any): value is Promise<any> =>
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@ import ZenObservable from 'zen-observable';
|
||||||
import m from '..';
|
import m from '..';
|
||||||
|
|
||||||
const isNode8orHigher = Number(process.versions.node.split('.')[0]) >= 8;
|
const isNode8orHigher = Number(process.versions.node.split('.')[0]) >= 8;
|
||||||
|
const isNode10orHigher = Number(process.versions.node.split('.')[0]) >= 10;
|
||||||
|
|
||||||
class PromiseSubclassFixture<T> extends Promise<T> {}
|
class PromiseSubclassFixture<T> extends Promise<T> {}
|
||||||
class ErrorSubclassFixture extends Error {}
|
class ErrorSubclassFixture extends Error {}
|
||||||
|
|
@ -337,6 +338,14 @@ const types = new Map<string, Test>([
|
||||||
Infinity,
|
Infinity,
|
||||||
-Infinity
|
-Infinity
|
||||||
]
|
]
|
||||||
|
}],
|
||||||
|
['asyncIterable', {
|
||||||
|
is: m.asyncIterable,
|
||||||
|
fixtures: [
|
||||||
|
Object.create({
|
||||||
|
[Symbol.asyncIterator]: () => {} // tslint:disable-line:no-empty
|
||||||
|
})
|
||||||
|
]
|
||||||
}]
|
}]
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
|
@ -454,6 +463,14 @@ if (isNode8orHigher) {
|
||||||
});*/
|
});*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (isNode10orHigher) {
|
||||||
|
test('is.asyncIterable', t => {
|
||||||
|
t.true(m.asyncIterable(Object.create({
|
||||||
|
[Symbol.asyncIterator]: () => {} // tslint:disable-line:no-empty
|
||||||
|
})));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
test('is.generator', t => {
|
test('is.generator', t => {
|
||||||
testType(t, 'generator');
|
testType(t, 'generator');
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,8 @@
|
||||||
"dom",
|
"dom",
|
||||||
"es2015",
|
"es2015",
|
||||||
"es2016",
|
"es2016",
|
||||||
"es2017.sharedmemory"
|
"es2017.sharedmemory",
|
||||||
|
"esnext.asynciterable"
|
||||||
],
|
],
|
||||||
"module": "commonjs",
|
"module": "commonjs",
|
||||||
"moduleResolution": "node",
|
"moduleResolution": "node",
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue