Merge branch 'master' into observable-improvement
This commit is contained in:
commit
aa9b4994d3
4 changed files with 43 additions and 3 deletions
|
|
@ -49,7 +49,7 @@
|
||||||
"@types/node": "^10.12.10",
|
"@types/node": "^10.12.10",
|
||||||
"@types/tempy": "^0.2.0",
|
"@types/tempy": "^0.2.0",
|
||||||
"@types/zen-observable": "^0.8.0",
|
"@types/zen-observable": "^0.8.0",
|
||||||
"ava": "*",
|
"ava": "^0.25.0",
|
||||||
"del-cli": "^1.1.0",
|
"del-cli": "^1.1.0",
|
||||||
"jsdom": "^11.6.2",
|
"jsdom": "^11.6.2",
|
||||||
"rxjs": "^6.3.3",
|
"rxjs": "^6.3.3",
|
||||||
|
|
|
||||||
16
readme.md
16
readme.md
|
|
@ -255,6 +255,22 @@ is.urlInstance(url);
|
||||||
//=> true
|
//=> true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### .url(value)
|
||||||
|
|
||||||
|
Returns `true` if `value` is a URL string.
|
||||||
|
|
||||||
|
Note: this only does basic checking using the [`URL` class](https://developer.mozilla.org/en-US/docs/Web/API/URL) constructor.
|
||||||
|
|
||||||
|
```js
|
||||||
|
const url = 'https://example.com';
|
||||||
|
|
||||||
|
is.url(url);
|
||||||
|
//=> true
|
||||||
|
|
||||||
|
is.url(new URL(url));
|
||||||
|
//=> false
|
||||||
|
```
|
||||||
|
|
||||||
##### .truthy(value)
|
##### .truthy(value)
|
||||||
|
|
||||||
Returns `true` for all values that evaluate to true in a boolean context:
|
Returns `true` for all values that evaluate to true in a boolean context:
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@
|
||||||
/// <reference lib="es2017.sharedmemory"/>
|
/// <reference lib="es2017.sharedmemory"/>
|
||||||
/// <reference lib="esnext.asynciterable"/>
|
/// <reference lib="esnext.asynciterable"/>
|
||||||
/// <reference lib="dom"/>
|
/// <reference lib="dom"/>
|
||||||
|
import {URL} from 'url';
|
||||||
|
|
||||||
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;
|
||||||
|
|
@ -188,6 +189,19 @@ namespace is { // tslint:disable-line:no-namespace
|
||||||
export const directInstanceOf = <T>(instance: unknown, klass: Class<T>): instance is T => Object.getPrototypeOf(instance) === klass.prototype;
|
export const directInstanceOf = <T>(instance: unknown, klass: Class<T>): instance is T => Object.getPrototypeOf(instance) === klass.prototype;
|
||||||
export const urlInstance = (value: unknown): value is URL => isObjectOfType<URL>(TypeName.URL)(value);
|
export const urlInstance = (value: unknown): value is URL => isObjectOfType<URL>(TypeName.URL)(value);
|
||||||
|
|
||||||
|
export const urlString = (value: unknown) => {
|
||||||
|
if (!string(value)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
new URL(value); // tslint:disable-line no-unused-expression
|
||||||
|
return true;
|
||||||
|
} catch {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
export const truthy = (value: unknown) => Boolean(value);
|
export const truthy = (value: unknown) => Boolean(value);
|
||||||
export const falsy = (value: unknown) => !value;
|
export const falsy = (value: unknown) => !value;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -576,13 +576,22 @@ test('is.directInstanceOf', t => {
|
||||||
});
|
});
|
||||||
|
|
||||||
test('is.urlInstance', t => {
|
test('is.urlInstance', t => {
|
||||||
const url = new URL('https://www.example.com');
|
const url = new URL('https://example.com');
|
||||||
t.true(is.urlInstance(url));
|
t.true(is.urlInstance(url));
|
||||||
t.false(is.urlInstance({}));
|
t.false(is.urlInstance({}));
|
||||||
t.false(is.urlInstance(undefined));
|
t.false(is.urlInstance(undefined));
|
||||||
t.false(is.urlInstance(null));
|
t.false(is.urlInstance(null));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('is.urlString', t => {
|
||||||
|
const url = 'https://example.com';
|
||||||
|
t.true(is.urlString(url));
|
||||||
|
t.false(is.urlString(new URL(url)));
|
||||||
|
t.false(is.urlString({}));
|
||||||
|
t.false(is.urlString(undefined));
|
||||||
|
t.false(is.urlString(null));
|
||||||
|
});
|
||||||
|
|
||||||
test('is.truthy', t => {
|
test('is.truthy', t => {
|
||||||
t.true(is.truthy('unicorn'));
|
t.true(is.truthy('unicorn'));
|
||||||
t.true(is.truthy('🦄'));
|
t.true(is.truthy('🦄'));
|
||||||
|
|
@ -681,8 +690,9 @@ test('is.class', t => {
|
||||||
});
|
});
|
||||||
|
|
||||||
test('is.typedArray', t => {
|
test('is.typedArray', t => {
|
||||||
// Typescript currently does not support empty constructors for these
|
// TypeScript currently does not support empty constructors for these
|
||||||
// See https://github.com/Microsoft/TypeScript/issues/19680
|
// See https://github.com/Microsoft/TypeScript/issues/19680
|
||||||
|
// TODO: Remove the `0` when targeting `es2017` (Node.js 8), in other places of this file too.
|
||||||
const typedArrays = [
|
const typedArrays = [
|
||||||
new Int8Array(0),
|
new Int8Array(0),
|
||||||
new Uint8Array(0),
|
new Uint8Array(0),
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue