feat: support is.blob

This commit is contained in:
eric_wang 2022-02-26 04:51:19 +08:00
parent 6cbefb9af7
commit 07261a9760
7 changed files with 48 additions and 0 deletions

5
.idea/.gitignore generated vendored Normal file
View file

@ -0,0 +1,5 @@
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/

12
.idea/is.iml generated Normal file
View file

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="WEB_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/temp" />
<excludeFolder url="file://$MODULE_DIR$/.tmp" />
<excludeFolder url="file://$MODULE_DIR$/tmp" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

8
.idea/modules.xml generated Normal file
View file

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/is.iml" filepath="$PROJECT_DIR$/.idea/is.iml" />
</modules>
</component>
</project>

6
.idea/vcs.xml generated Normal file
View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

View file

@ -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).

View file

@ -34,6 +34,7 @@ const objectTypeNames = [
'Observable',
'Array',
'Buffer',
'Blob',
'Object',
'RegExp',
'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.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.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: <T = unknown>(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: <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>;
@ -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: <T = unknown>(value: unknown): asserts value is Iterable<T> => assertType(is.iterable(value), AssertionTypeDescription.iterable, value),

View file

@ -170,6 +170,14 @@ const types = new Map<string, Test>([
],
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');