Add .isBlob() (#162)
Co-authored-by: Sindre Sorhus <sindresorhus@gmail.com>
This commit is contained in:
parent
6cbefb9af7
commit
5b7ea154e6
3 changed files with 17 additions and 0 deletions
|
|
@ -110,6 +110,7 @@ is.array(value, is.number); // Validate `value` is an array and all of its items
|
||||||
**Note:** TypeScript users must use `.function_()` because of a TypeScript naming limitation.
|
**Note:** TypeScript users must use `.function_()` because of a TypeScript naming limitation.
|
||||||
|
|
||||||
##### .buffer(value)
|
##### .buffer(value)
|
||||||
|
##### .blob(value)
|
||||||
##### .object(value)
|
##### .object(value)
|
||||||
|
|
||||||
Keep in mind that [functions are objects too](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions).
|
Keep in mind that [functions are objects too](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions).
|
||||||
|
|
|
||||||
|
|
@ -34,6 +34,7 @@ const objectTypeNames = [
|
||||||
'Observable',
|
'Observable',
|
||||||
'Array',
|
'Array',
|
||||||
'Buffer',
|
'Buffer',
|
||||||
|
'Blob',
|
||||||
'Object',
|
'Object',
|
||||||
'RegExp',
|
'RegExp',
|
||||||
'Date',
|
'Date',
|
||||||
|
|
@ -178,6 +179,7 @@ is.array = <T = unknown>(value: unknown, assertion?: (value: T) => value is T):
|
||||||
};
|
};
|
||||||
|
|
||||||
is.buffer = (value: unknown): value is Buffer => (value as any)?.constructor?.isBuffer?.(value) ?? false;
|
is.buffer = (value: unknown): value is Buffer => (value as any)?.constructor?.isBuffer?.(value) ?? false;
|
||||||
|
is.blob = (value: unknown): value is Blob => isObjectOfType<Blob>('Blob')(value);
|
||||||
|
|
||||||
is.nullOrUndefined = (value: unknown): value is null | undefined => is.null_(value) || is.undefined(value);
|
is.nullOrUndefined = (value: unknown): value is null | undefined => is.null_(value) || is.undefined(value);
|
||||||
is.object = (value: unknown): value is object => !is.null_(value) && (typeof value === 'object' || is.function_(value));
|
is.object = (value: unknown): value is object => !is.null_(value) && (typeof value === 'object' || is.function_(value));
|
||||||
|
|
@ -470,6 +472,7 @@ interface Assert {
|
||||||
numericString: (value: unknown) => asserts value is string;
|
numericString: (value: unknown) => asserts value is string;
|
||||||
array: <T = unknown>(value: unknown, assertion?: (element: unknown) => asserts element is T) => asserts value is T[];
|
array: <T = unknown>(value: unknown, assertion?: (element: unknown) => asserts element is T) => asserts value is T[];
|
||||||
buffer: (value: unknown) => asserts value is Buffer;
|
buffer: (value: unknown) => asserts value is Buffer;
|
||||||
|
blob: (value: unknown) => asserts value is Blob;
|
||||||
nullOrUndefined: (value: unknown) => asserts value is null | undefined;
|
nullOrUndefined: (value: unknown) => asserts value is null | undefined;
|
||||||
object: <Key extends keyof any = string, Value = unknown>(value: unknown) => asserts value is Record<Key, Value>;
|
object: <Key extends keyof any = string, Value = unknown>(value: unknown) => asserts value is Record<Key, Value>;
|
||||||
iterable: <T = unknown>(value: unknown) => asserts value is Iterable<T>;
|
iterable: <T = unknown>(value: unknown) => asserts value is Iterable<T>;
|
||||||
|
|
@ -572,6 +575,7 @@ export const assert: Assert = {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
buffer: (value: unknown): asserts value is Buffer => assertType(is.buffer(value), 'Buffer', value),
|
buffer: (value: unknown): asserts value is Buffer => assertType(is.buffer(value), 'Buffer', value),
|
||||||
|
blob: (value: unknown): asserts value is Blob => assertType(is.blob(value), 'Blob', value),
|
||||||
nullOrUndefined: (value: unknown): asserts value is null | undefined => assertType(is.nullOrUndefined(value), AssertionTypeDescription.nullOrUndefined, value),
|
nullOrUndefined: (value: unknown): asserts value is null | undefined => assertType(is.nullOrUndefined(value), AssertionTypeDescription.nullOrUndefined, value),
|
||||||
object: (value: unknown): asserts value is object => assertType(is.object(value), 'Object', value),
|
object: (value: unknown): asserts value is object => assertType(is.object(value), 'Object', value),
|
||||||
iterable: <T = unknown>(value: unknown): asserts value is Iterable<T> => assertType(is.iterable(value), AssertionTypeDescription.iterable, value),
|
iterable: <T = unknown>(value: unknown): asserts value is Iterable<T> => assertType(is.iterable(value), AssertionTypeDescription.iterable, value),
|
||||||
|
|
|
||||||
12
test/test.ts
12
test/test.ts
|
|
@ -170,6 +170,14 @@ const types = new Map<string, Test>([
|
||||||
],
|
],
|
||||||
typename: 'Buffer'
|
typename: 'Buffer'
|
||||||
}],
|
}],
|
||||||
|
['blob', {
|
||||||
|
is: is.blob,
|
||||||
|
assert: assert.blob,
|
||||||
|
fixtures: [
|
||||||
|
new window.Blob()
|
||||||
|
],
|
||||||
|
typename: 'Blob'
|
||||||
|
}],
|
||||||
['object', {
|
['object', {
|
||||||
is: is.object,
|
is: is.object,
|
||||||
assert: assert.object,
|
assert: assert.object,
|
||||||
|
|
@ -683,6 +691,10 @@ test('is.buffer', t => {
|
||||||
testType(t, 'buffer');
|
testType(t, 'buffer');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('is.blob', t => {
|
||||||
|
testType(t, 'blob');
|
||||||
|
});
|
||||||
|
|
||||||
test('is.object', t => {
|
test('is.object', t => {
|
||||||
const testData = types.get('object');
|
const testData = types.get('object');
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue