diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..b58b603
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,5 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
diff --git a/.idea/is.iml b/.idea/is.iml
new file mode 100644
index 0000000..0c8867d
--- /dev/null
+++ b/.idea/is.iml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..5cdc77d
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..94a25f7
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/readme.md b/readme.md
index 12a56fd..f5338be 100644
--- a/readme.md
+++ b/readme.md
@@ -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.
##### .buffer(value)
+#### .blob(value)
##### .object(value)
Keep in mind that [functions are objects too](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions).
diff --git a/source/index.ts b/source/index.ts
index 504e5e1..5ce333d 100644
--- a/source/index.ts
+++ b/source/index.ts
@@ -34,6 +34,7 @@ const objectTypeNames = [
'Observable',
'Array',
'Buffer',
+ 'Blob',
'Object',
'RegExp',
'Date',
@@ -178,6 +179,7 @@ is.array = (value: unknown, assertion?: (value: T) => value is T):
};
is.buffer = (value: unknown): value is Buffer => (value as any)?.constructor?.isBuffer?.(value) ?? false;
+is.blob = (value: unknown): value is Blob => isObjectOfType('Blob')(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));
@@ -470,6 +472,7 @@ interface Assert {
numericString: (value: unknown) => asserts value is string;
array: (value: unknown, assertion?: (element: unknown) => asserts element is T) => asserts value is T[];
buffer: (value: unknown) => asserts value is Buffer;
+ blob: (value: unknown) => asserts value is Blob;
nullOrUndefined: (value: unknown) => asserts value is null | undefined;
object: (value: unknown) => asserts value is Record;
iterable: (value: unknown) => asserts value is Iterable;
@@ -572,6 +575,7 @@ export const assert: Assert = {
}
},
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),
object: (value: unknown): asserts value is object => assertType(is.object(value), 'Object', value),
iterable: (value: unknown): asserts value is Iterable => assertType(is.iterable(value), AssertionTypeDescription.iterable, value),
diff --git a/test/test.ts b/test/test.ts
index 0556431..71a4a9d 100644
--- a/test/test.ts
+++ b/test/test.ts
@@ -170,6 +170,14 @@ const types = new Map([
],
typename: 'Buffer'
}],
+ ['blob', {
+ is: is.blob,
+ assert: assert.blob,
+ fixtures: [
+ new window.Blob()
+ ],
+ typename: 'Blob'
+ }],
['object', {
is: is.object,
assert: assert.object,
@@ -683,6 +691,10 @@ test('is.buffer', t => {
testType(t, 'buffer');
});
+test('is.blob', t => {
+ testType(t, 'blob');
+});
+
test('is.object', t => {
const testData = types.get('object');