Add is.urlInstance (#60)

This commit is contained in:
Artur Androsovych 2018-07-10 12:04:20 +03:00 committed by Sindre Sorhus
parent c8736c2972
commit 3bdaf21475
3 changed files with 23 additions and 1 deletions

View file

@ -176,6 +176,17 @@ is.directInstanceOf(new UnicornError(), Error);
//=> false
```
##### .urlInstance(value)
Returns `true` if `value` is an instance of the [`URL` class](https://developer.mozilla.org/en-US/docs/Web/API/URL).
```js
const url = new URL('https://example.com');
is.urlInstance(url);
//=> true
```
##### .truthy(value)
Returns `true` for all values that evaluate to true in a boolean context:

View file

@ -48,7 +48,8 @@ export const enum TypeName {
ArrayBuffer = 'ArrayBuffer',
SharedArrayBuffer = 'SharedArrayBuffer',
DataView = 'DataView',
Promise = 'Promise'
Promise = 'Promise',
URL = 'URL'
}
const toString = Object.prototype.toString;
@ -177,6 +178,7 @@ namespace is { // tslint:disable-line:no-namespace
export const dataView = isObjectOfType<DataView>(TypeName.DataView);
export const directInstanceOf = <T>(instance: any, klass: Class<T>): instance is T => Object.getPrototypeOf(instance) === klass.prototype;
export const urlInstance = (value: any): value is URL => isObjectOfType<URL>(TypeName.URL)(value);
export const truthy = (value: any) => Boolean(value);
export const falsy = (value: any) => !value;

View file

@ -3,6 +3,7 @@ import net from 'net';
import Stream from 'stream';
import util from 'util';
import tempy from 'tempy';
import {URL} from 'url';
import test, {TestContext, Context} from 'ava';
import {JSDOM} from 'jsdom';
import {Subject, Observable} from 'rxjs';
@ -534,6 +535,14 @@ test('is.directInstanceOf', t => {
t.false(m.directInstanceOf(errorSubclass, Error));
});
test('is.urlInstance', t => {
const url = new URL('https://www.example.com');
t.true(m.urlInstance(url));
t.false(m.urlInstance({}));
t.false(m.urlInstance(undefined));
t.false(m.urlInstance(null));
});
test('is.truthy', t => {
t.true(m.truthy('unicorn'));
t.true(m.truthy('🦄'));